gamma-app-controller 1.1.1 → 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (16) hide show
  1. package/esm2020/lib/application-controller/common.mjs +7 -12
  2. package/esm2020/lib/application-controller/shared/advanced-component/gamma-advance-operator-table/gamma-advance-operator-table.component.mjs +14 -3
  3. package/esm2020/lib/application-controller/shared/advanced-component/gamma-table-clumn-bar-chart/gamma-table-clumn-bar-chart.component.mjs +14 -3
  4. package/esm2020/lib/application-controller/shared/advanced-component/gamma-table-with-percentage/gamma-table-with-percentage.component.mjs +20 -5
  5. package/esm2020/lib/application-controller/support-components/dash-table/dash-table.component.mjs +4 -3
  6. package/esm2020/lib/application-controller/support-components/table-with-bar/table-with-bar.component.mjs +4 -3
  7. package/fesm2015/gamma-app-controller.mjs +57 -23
  8. package/fesm2015/gamma-app-controller.mjs.map +1 -1
  9. package/fesm2020/gamma-app-controller.mjs +57 -23
  10. package/fesm2020/gamma-app-controller.mjs.map +1 -1
  11. package/lib/application-controller/shared/advanced-component/gamma-advance-operator-table/gamma-advance-operator-table.component.d.ts +2 -0
  12. package/lib/application-controller/shared/advanced-component/gamma-table-clumn-bar-chart/gamma-table-clumn-bar-chart.component.d.ts +2 -0
  13. package/lib/application-controller/shared/advanced-component/gamma-table-with-percentage/gamma-table-with-percentage.component.d.ts +2 -0
  14. package/lib/application-controller/support-components/dash-table/dash-table.component.d.ts +1 -0
  15. package/lib/application-controller/support-components/table-with-bar/table-with-bar.component.d.ts +1 -0
  16. package/package.json +1 -1
@@ -212,17 +212,12 @@ export class CommonService {
212
212
  document.body.removeChild(link);
213
213
  }
214
214
  createHtml(width, data, color) {
215
- return ('<div style="display: inline"> ' +
216
- '<div class="no-padding" style="float:left; width: ' +
217
- width +
218
- "%; background-color: " +
219
- color +
220
- "; " +
221
- 'height: 15px; position: relative;"></div>' +
222
- '<div class="no-padding bar" style="float: left">' +
223
- data +
224
- "</div>" +
225
- "</div>");
215
+ return (`<div style="display: inline">
216
+ <div class="no-padding" style="float:left; width: ${width}%; background-color: ${color};">
217
+ <div class="text-white bar">${data}
218
+ </div>
219
+ </div>
220
+ </div>`);
226
221
  }
227
222
  scaleNumber(inputY, yMin, yMax, xMin, xMax) {
228
223
  if (yMin == yMax) {
@@ -1204,4 +1199,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
1204
1199
  type: Injectable,
1205
1200
  args: [{ providedIn: "root" }]
1206
1201
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.ToastrService }, { type: i3.DomSanitizer }]; } });
1207
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sTUFBTSxDQUFDO0FBRWQsT0FBTyxNQUFNLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBS3JDLE1BQU0sT0FBTyxhQUFhO0lBcUZ0QixZQUFvQixJQUFnQixFQUFVLE1BQXFCLEVBQVUsU0FBdUI7UUFBaEYsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQWU7UUFBVSxjQUFTLEdBQVQsU0FBUyxDQUFjO1FBbkZwRyx5QkFBb0IsR0FBRyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM1RSx1QkFBa0IsR0FBRyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbkQsdUJBQWtCLEdBQUcsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDL0QsNkJBQXdCLEdBQUcsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFJeEQsMEJBQXFCLEdBQUcsRUFBRSxDQUFDO1FBRTNCLG1DQUE4QixHQUFHLE1BQU0sQ0FBQztRQUMvQyx3QkFBbUIsR0FBRyxFQUFFLENBQUM7UUFNekIsa0JBQWEsR0FBRyx1REFBdUQsQ0FBQztRQUtqRSxtQkFBYyxHQUNqQixpTkFBaU4sQ0FBQztRQUMvTSxxQkFBZ0IsR0FDbkIsaU5BQWlOLENBQUM7UUFDL00seUJBQW9CLEdBQ3ZCLHFVQUFxVSxDQUFDO1FBQ25VLGlCQUFZLEdBQ2Ys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QUFRO1lBQ1IsUUFBUSxDQUNYLENBQUM7SUFDTixDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQUssRUFBRSxHQUFHO1FBQ3RCLElBQUksT0FBTyxHQUFHLEtBQUssV0FBVyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsRUFBRTtZQUMxQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDNUI7UUFDRCxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFDZixHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUM7UUFFWCxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDN0QsT0FBTyxHQUFHLENBQUM7U0FDZDtRQUdELEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUczRSxLQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsdUJBQXVCLENBQUMsR0FBRztR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RCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUdELGdCQUFnQixDQUFDLFFBQVEsRUFBRSxPQUFPO1FBQzlCLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFDdkIsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzFCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDMUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUN4QixPQUFPLENBQUMsU0FBUyxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQU9ELGFBQWEsQ0FBQyxLQUFLO1FBQ2YsSUFBSSxNQUFNLEdBQUcsS0FBSzthQUNiLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO2FBQ2xCLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUM7YUFDbkMsT0FBTyxDQUFDLFlBQVksRUFBRSxVQUFVLEtBQUs7WUFDbEMsT0FBTyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7UUFFUCxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsVUFBVSxLQUFLO1lBQ25ELE9BQU8sS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxNQUFNLENBQUM7UUFFZCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDOzswR0EvL0NRLGFBQWE7OEdBQWIsYUFBYSxjQURBLE1BQU07MkZBQ25CLGFBQWE7a0JBRHpCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5pbXBvcnQgXCJyeGpzXCI7XG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSBcIm5neC10b2FzdHJcIjtcbmltcG9ydCBtb21lbnQgZnJvbSAnLi9tb21lbnQtaGVscGVyJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gXCJAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyXCI7XG4vLyBkZWNsYXJlIGxldCAkO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46IFwicm9vdFwiIH0pXG5leHBvcnQgY2xhc3MgQ29tbW9uU2VydmljZSB7XG4gICAga3BpTGlzdERhdGFPYmplY3Q6IGFueTtcbiAgICBHX0RFRkFVTFRfU1RBUlRfREFURSA9IG1vbWVudCgpLnN1YnRyYWN0KFwiMzBcIiwgXCJkYXlzXCIpLmZvcm1hdChcIllZWVktTU0tRERcIik7XG4gICAgR19ERUZBVUxUX0VORF9EQVRFID0gbW9tZW50KCkuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKTtcbiAgICBkZWZhdWx0Q3VycmVudERhdGUgPSBtb21lbnQoKS5mb3JtYXQoXCJZWVlZLU1NLUREX2hoOm1tOnNzOlNTXCIpO1xuICAgIGRlZmF1bHRDdXJyZW50RGF0ZU1pbGxpcyA9IG1vbWVudCgpLmZvcm1hdChcIllZWVlNTUREaGhtbXNzU1NcIik7XG4gICAgZ2xvYmFsX2xvYWRpbmc6IGFueTtcbiAgICBwdWJsaWMgc2VsZWN0ZWRPcGVyYXRvcjogYW55O1xuICAgIHB1YmxpYyBLcGlJZDogYW55O1xuICAgIHB1YmxpYyBrcGlVcmxPYmplY3RDb250YWluZXIgPSBbXTtcbiAgICBwdWJsaWMgYWxsS3BpYnJvd3NlckRldGFpbENvbnRhaW5lcjogYW55O1xuICAgIHB1YmxpYyBHbE9CQUxfQVVUT19SRUxPQURJTkdfVElNRV9TRVQgPSAzMDAwMDA7XG4gICAgYnJlYWRDdW1ic0xpc3RBcnJheSA9IFtdO1xuICAgIGJyZWFkQ3VtYnNMaXN0SWQ6IGFueTtcbiAgICBwdWJsaWMgY3VycmVudFVybDogYW55O1xuICAgIGdsb2JhbF9rcGlfbmFtZTogYW55O1xuICAgIC8vIHNlbGVjdFBpY2tlclJlZnJlc2ggPSAkKCcuc2VsZWN0cGlja2VyJykuc2VsZWN0cGlja2VyKCdyZWZyZXNoJyk7XG4gICAgLy8gc2VsZWN0UGlja2VyRGVzdG9yeSA9IFwiJCgnLnNlbGVjdHBpY2tlcicpLnNlbGVjdHBpY2tlcignZGVzdHJveScpXCI7XG4gICAgZ2xvYmFsRG9jTGluayA9IFwiaHR0cDovLzIwMy4yMTUuMzMuMjIyOjMzMDAxL3Byb2R1Y3QvUHJvbnRvL2twaS9SUzIwMDJcIjtcbiAgICBtYXBDaGFydERldGFpbEhvbGRlciE6IG9iamVjdDtcbiAgICBmdXNpb25UaGVtZU5hbWU6IGFueTtcblxuICAgIC8vYnV0dG9ucyBzdGFydFxuICAgIHB1YmxpYyBidG5QcmltYXJ5Qmx1ZSA9XG4gICAgICAgIFwidGV4dC13aGl0ZSBiZy1ibHVlLTcwMCBob3ZlcjpiZy1ibHVlLTgwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ibHVlLTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtNSBweS0yLjUgbXItMiBtYi0yIGRhcms6YmctYmx1ZS02MDAgZGFyazpob3ZlcjpiZy1ibHVlLTcwMCBmb2N1czpvdXRsaW5lLW5vbmUgZGFyazpmb2N1czpyaW5nLWJsdWUtODAwXCI7XG4gICAgcHVibGljIGJ0blByaW1hcnlCbHVlU20gPVxuICAgICAgICBcInRleHQtd2hpdGUgYmctYmx1ZS03MDAgaG92ZXI6YmctYmx1ZS04MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctYmx1ZS0zMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIHB4LTMgcHktMS41IG1yLTIgbWItMiBkYXJrOmJnLWJsdWUtNjAwIGRhcms6aG92ZXI6YmctYmx1ZS03MDAgZm9jdXM6b3V0bGluZS1ub25lIGRhcms6Zm9jdXM6cmluZy1ibHVlLTgwMFwiO1xuICAgIHB1YmxpYyBidG5TZWNvbmRhcnlBbHRlcm5ldCA9XG4gICAgICAgIFwicHktMi41IHB4LTUgbXItMiBtYi0yIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMCBmb2N1czpvdXRsaW5lLW5vbmUgYmctd2hpdGUgcm91bmRlZCBib3JkZXIgYm9yZGVyLWdyYXktMjAwIGhvdmVyOmJnLWdyYXktMTAwIGhvdmVyOnRleHQtYmx1ZS03MDAgZm9jdXM6ei0xMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ncmF5LTIwMCBkYXJrOmZvY3VzOnJpbmctZ3JheS03MDAgZGFyazpiZy1ncmF5LTgwMCBkYXJrOnRleHQtZ3JheS00MDAgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpob3Zlcjp0ZXh0LXdoaXRlIGRhcms6aG92ZXI6YmctZ3JheS03MDBcIjtcbiAgICBwdWJsaWMgQnRuRGFya0JsYWNrID1cbiAgICAgICAgXCJ0ZXh0LXdoaXRlIGJnLWdyYXktODAwIGhvdmVyOmJnLWdyYXktOTAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ncmF5LTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtNSBweS0yLjUgbXItMiBtYi0yIGRhcms6YmctZ3JheS04MDAgZGFyazpob3ZlcjpiZy1ncmF5LTcwMCBkYXJrOmZvY3VzOnJpbmctZ3JheS03MDAgZGFyazpib3JkZXItZ3JheS03MDBcIjtcbiAgICBwdWJsaWMgQnRuTGlnaHRXaGl0ZSA9XG4gICAgICAgIFwidGV4dC1ncmF5LTkwMCBiZy13aGl0ZSBib3JkZXIgYm9yZGVyLWdyYXktMzAwIGZvY3VzOm91dGxpbmUtbm9uZSBob3ZlcjpiZy1ncmF5LTEwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ncmF5LTIwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtNSBweS0yLjUgbXItMiBtYi0yIGRhcms6YmctZ3JheS04MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6aG92ZXI6YmctZ3JheS03MDAgZGFyazpob3Zlcjpib3JkZXItZ3JheS02MDAgZGFyazpmb2N1czpyaW5nLWdyYXktNzAwXCI7XG4gICAgcHVibGljIGJ0blN1Y2Nlc3NHcmVlbiA9XG4gICAgICAgIFwiZm9jdXM6b3V0bGluZS1ub25lIHRleHQtd2hpdGUgYmctZ3JlZW4tNzAwIGhvdmVyOmJnLWdyZWVuLTgwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ncmVlbi0zMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIHB4LTUgcHktMi41IG1yLTIgbWItMiBkYXJrOmJnLWdyZWVuLTYwMCBkYXJrOmhvdmVyOmJnLWdyZWVuLTcwMCBkYXJrOmZvY3VzOnJpbmctZ3JlZW4tODAwXCI7XG4gICAgcHVibGljIGJ0bkRhbmdlclJlZCA9XG4gICAgICAgIFwiZm9jdXM6b3V0bGluZS1ub25lIHRleHQtd2hpdGUgYmctcmVkLTcwMCBob3ZlcjpiZy1yZWQtODAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLXJlZC0zMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIHB4LTUgcHktMi41IG1yLTIgbWItMiBkYXJrOmJnLXJlZC02MDAgZGFyazpob3ZlcjpiZy1yZWQtNzAwIGRhcms6Zm9jdXM6cmluZy1yZWQtOTAwXCI7XG4gICAgcHVibGljIGJ0bkRhbmdlclJlZFNtID1cbiAgICAgICAgXCJmb2N1czpvdXRsaW5lLW5vbmUgdGV4dC13aGl0ZSBiZy1yZWQtNzAwIGhvdmVyOmJnLXJlZC04MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctcmVkLTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtMyBweS0xLjUgbXItMiBtYi0yIGRhcms6YmctcmVkLTYwMCBkYXJrOmhvdmVyOmJnLXJlZC03MDAgZGFyazpmb2N1czpyaW5nLXJlZC05MDBcIjtcbiAgICBwdWJsaWMgYnRuV2FybmluZ1llbGxvdyA9XG4gICAgICAgIFwiZm9jdXM6b3V0bGluZS1ub25lIHRleHQtYmxhY2sgYmcteWVsbG93LTQwMCBob3ZlcjpiZy15ZWxsb3ctNTAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLXllbGxvdy0zMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIHB4LTUgcHktMi41IG1yLTIgbWItMiBkYXJrOmZvY3VzOnJpbmcteWVsbG93LTkwMFwiO1xuICAgIHB1YmxpYyBidG5PdGhlcnNQdXJwbGUgPVxuICAgICAgICBcImZvY3VzOm91dGxpbmUtbm9uZSB0ZXh0LXdoaXRlIGJnLXB1cnBsZS03MDAgaG92ZXI6YmctcHVycGxlLTgwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1wdXJwbGUtMzAwIGZvbnQtbWVkaXVtIHJvdW5kZWQgdGV4dC1zbSBweC01IHB5LTIuNSBtYi0yIGRhcms6YmctcHVycGxlLTYwMCBkYXJrOmhvdmVyOmJnLXB1cnBsZS03MDAgZGFyazpmb2N1czpyaW5nLXB1cnBsZS05MDBcIjtcbiAgICBwdWJsaWMgaW5wdXRPbmUgPSBcImJnLWdyYXktNTAgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCB0ZXh0LWdyYXktOTAwIHRleHQtc20gcm91bmRlZC1sZyBmb2N1czpyaW5nLWJsdWUtNTAwIGZvY3VzOmJvcmRlci1ibHVlLTUwMCBwLTIuNSBkYXJrOmJnLWdyYXktNzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6cGxhY2Vob2xkZXItZ3JheS00MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6cmluZy1ibHVlLTUwMCBkYXJrOmZvY3VzOmJvcmRlci1ibHVlLTUwMFwiO1xuICAgIC8vYnV0dG9ucyBlbmRcblxuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLVN1Y2Nlc3MgL2dyZWVuIEJ1dHRvbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBwdWJsaWMgYnRuX3N1Y2Nlc3NfbGcgPSBcImN1cnNvci1wb2ludGVyIGZvY3VzOm91dGxpbmUtbm9uZSB0ZXh0LXdoaXRlIGJnLWdyZWVuLTcwMCBob3ZlcjpiZy1ncmVlbi04MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctZ3JlZW4tMzAwIGZvbnQtbWVkaXVtIHJvdW5kZWQgdGV4dC1zbSBweC01IHB5LTUgbXItMiAgZGFyazpiZy1ncmVlbi02MDAgZGFyazpob3ZlcjpiZy1ncmVlbi03MDAgZGFyazpmb2N1czpyaW5nLWdyZWVuLTgwMFwiO1xuICAgIHB1YmxpYyBidG5fc3VjY2Vzc19tZCA9IFwiY3Vyc29yLXBvaW50ZXIgZm9jdXM6b3V0bGluZS1ub25lIHRleHQtd2hpdGUgYmctZ3JlZW4tNzAwIGhvdmVyOmJnLWdyZWVuLTgwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ncmVlbi0zMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIHB4LTMgcHktMyBtci0yICBkYXJrOmJnLWdyZWVuLTYwMCBkYXJrOmhvdmVyOmJnLWdyZWVuLTcwMCBkYXJrOmZvY3VzOnJpbmctZ3JlZW4tODAwXCI7XG4gICAgcHVibGljIGJ0bl9zdWNjZXNzX3NtID0gXCJjdXJzb3ItcG9pbnRlciBmb2N1czpvdXRsaW5lLW5vbmUgdGV4dC13aGl0ZSBiZy1ncmVlbi03MDAgaG92ZXI6YmctZ3JlZW4tODAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWdyZWVuLTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtMSBweS0xIG1yLTIgIGRhcms6YmctZ3JlZW4tNjAwIGRhcms6aG92ZXI6YmctZ3JlZW4tNzAwIGRhcms6Zm9jdXM6cmluZy1ncmVlbi04MDBcIjtcblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tUHJpbWFyeS8gQmx1ZSBCdXR0b25zLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgcHVibGljIGJ0bl9wcmltYXJ5X2xnID0gXCJjdXJzb3ItcG9pbnRlciB0ZXh0LXdoaXRlIGJnLWJsdWUtNzAwIGhvdmVyOmJnLWJsdWUtODAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWJsdWUtMzAwIGZvbnQtbWVkaXVtIHJvdW5kZWQgdGV4dC1zbSBweC01IHB5LTUgbXItMiBkYXJrOmJnLWJsdWUtNjAwIGRhcms6aG92ZXI6YmctYmx1ZS03MDAgZm9jdXM6b3V0bGluZS1ub25lIGRhcms6Zm9jdXM6cmluZy1ibHVlLTgwMFwiO1xuICAgIHB1YmxpYyBidG5fcHJpbWFyeV9tZCA9IFwiY3Vyc29yLXBvaW50ZXIgdGV4dC13aGl0ZSBiZy1ibHVlLTcwMCBob3ZlcjpiZy1ibHVlLTgwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ibHVlLTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtMyBweS0zIG1yLTIgZGFyazpiZy1ibHVlLTYwMCBkYXJrOmhvdmVyOmJnLWJsdWUtNzAwIGZvY3VzOm91dGxpbmUtbm9uZSBkYXJrOmZvY3VzOnJpbmctYmx1ZS04MDBcIjtcbiAgICBwdWJsaWMgYnRuX3ByaW1hcnlfc20gPSBcImN1cnNvci1wb2ludGVyIHRleHQtd2hpdGUgYmctYmx1ZS03MDAgaG92ZXI6YmctYmx1ZS04MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctYmx1ZS0zMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIHB4LTEgcHktMSBtci0yIGRhcms6YmctYmx1ZS02MDAgZGFyazpob3ZlcjpiZy1ibHVlLTcwMCBmb2N1czpvdXRsaW5lLW5vbmUgZGFyazpmb2N1czpyaW5nLWJsdWUtODAwXCI7XG4gICAgcHVibGljIGJhZGdlX3ByaW1hcnlfc20gPSBcImN1cnNvci1wb2ludGVyIHRleHQtd2hpdGUgYmctYmx1ZS03MDAgaG92ZXI6YmctYmx1ZS04MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctYmx1ZS0zMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIGlubGluZSBweC0wLjUgcHktMC41IG1yLTEgZGFyazpiZy1ibHVlLTYwMCBkYXJrOmhvdmVyOmJnLWJsdWUtNzAwIGZvY3VzOm91dGxpbmUtbm9uZSBkYXJrOmZvY3VzOnJpbmctYmx1ZS04MDBcIjtcblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tRGFuZ2VyLyBSZWQgQnV0dG9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIHB1YmxpYyBidG5fZGFuZ2VyX2xnID0gXCJjdXJzb3ItcG9pbnRlciBmb2N1czpvdXRsaW5lLW5vbmUgdGV4dC13aGl0ZSBiZy1yZWQtNzAwIGhvdmVyOmJnLXJlZC04MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctcmVkLTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtNSBweS01IG1yLTIgZGFyazpiZy1yZWQtNjAwIGRhcms6aG92ZXI6YmctcmVkLTcwMCBkYXJrOmZvY3VzOnJpbmctcmVkLTkwMFwiO1xuICAgIHB1YmxpYyBidG5fZGFuZ2VyX21kID0gXCJjdXJzb3ItcG9pbnRlciBmb2N1czpvdXRsaW5lLW5vbmUgdGV4dC13aGl0ZSBiZy1yZWQtNzAwIGhvdmVyOmJnLXJlZC04MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctcmVkLTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtMyBweS0zIG1yLTIgZGFyazpiZy1yZWQtNjAwIGRhcms6aG92ZXI6YmctcmVkLTcwMCBkYXJrOmZvY3VzOnJpbmctcmVkLTkwMFwiO1xuICAgIHB1YmxpYyBidG5fZGFuZ2VyX3NtID0gXCJjdXJzb3ItcG9pbnRlciBmb2N1czpvdXRsaW5lLW5vbmUgdGV4dC13aGl0ZSBiZy1yZWQtNzAwIGhvdmVyOmJnLXJlZC04MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctcmVkLTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtMSBweS0xIG1yLTIgZGFyazpiZy1yZWQtNjAwIGRhcms6aG92ZXI6YmctcmVkLTcwMCBkYXJrOmZvY3VzOnJpbmctcmVkLTkwMFwiO1xuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVdhcm5pbmcvIFllbGxvdyBCdXR0b25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgcHVibGljIGJ0bl93YXJuaW5nX2xnID0gXCJjdXJzb3ItcG9pbnRlciBmb2N1czpvdXRsaW5lLW5vbmUgdGV4dC1ibGFjayBiZy15ZWxsb3ctNDAwIGhvdmVyOmJnLXllbGxvdy01MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmcteWVsbG93LTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtNSBweS01IG1yLTIgZGFyazpmb2N1czpyaW5nLXllbGxvdy05MDBcIjtcbiAgICBwdWJsaWMgYnRuX3dhcm5pbmdfbWQgPSBcImN1cnNvci1wb2ludGVyIGZvY3VzOm91dGxpbmUtbm9uZSB0ZXh0LWJsYWNrIGJnLXllbGxvdy00MDAgaG92ZXI6YmcteWVsbG93LTUwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy15ZWxsb3ctMzAwIGZvbnQtbWVkaXVtIHJvdW5kZWQgdGV4dC1zbSBweC0zIHB5LTMgbXItMiBkYXJrOmZvY3VzOnJpbmcteWVsbG93LTkwMFwiO1xuICAgIHB1YmxpYyBidG5fd2FybmluZ19zbSA9IFwiY3Vyc29yLXBvaW50ZXIgZm9jdXM6b3V0bGluZS1ub25lIHRleHQtYmxhY2sgYmcteWVsbG93LTQwMCBob3ZlcjpiZy15ZWxsb3ctNTAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLXllbGxvdy0zMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIHB4LTEgcHktMSBtci0yIGRhcms6Zm9jdXM6cmluZy15ZWxsb3ctOTAwXCI7XG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXJlc2V0LyBHcmF5IEJ1dHRvbnMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgcHVibGljIGJ0bl9kYXJrX2xnID0gXCJjdXJzb3ItcG9pbnRlciB0ZXh0LXdoaXRlIGJnLWdyYXktODAwIGhvdmVyOmJnLWdyYXktOTAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ncmF5LTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtNSBweS01IG1yLTIgZGFyazpiZy1ncmF5LTgwMCBkYXJrOmhvdmVyOmJnLWdyYXktNzAwIGRhcms6Zm9jdXM6cmluZy1ncmF5LTcwMCBkYXJrOmJvcmRlci1ncmF5LTcwMFwiO1xuICAgIHB1YmxpYyBidG5fZGFya19tZCA9IFwiY3Vyc29yLXBvaW50ZXIgdGV4dC13aGl0ZSBiZy1ncmF5LTgwMCBob3ZlcjpiZy1ncmF5LTkwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctZ3JheS0zMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIHB4LTMgcHktMyBtci0yIGRhcms6YmctZ3JheS04MDAgZGFyazpob3ZlcjpiZy1ncmF5LTcwMCBkYXJrOmZvY3VzOnJpbmctZ3JheS03MDAgZGFyazpib3JkZXItZ3JheS03MDBcIjtcbiAgICBwdWJsaWMgYnRuX2Rhcmtfc20gPSBcImN1cnNvci1wb2ludGVyIHRleHQtd2hpdGUgYmctZ3JheS04MDAgaG92ZXI6YmctZ3JheS05MDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWdyYXktMzAwIGZvbnQtbWVkaXVtIHJvdW5kZWQgdGV4dC1zbSBweC0xIHB5LTEgbXItMiBkYXJrOmJnLWdyYXktODAwIGRhcms6aG92ZXI6YmctZ3JheS03MDAgZGFyazpmb2N1czpyaW5nLWdyYXktNzAwIGRhcms6Ym9yZGVyLWdyYXktNzAwXCI7XG5cblxuICAgIHB1YmxpYyBidG5fbGlnaHRfbGcgPSBcIm1zLTMgdGV4dC1ncmF5LTUwMCBiZy13aGl0ZSBob3ZlcjpiZy1ncmF5LTEwMCBmb2N1czpyaW5nLTQgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctYmx1ZS0zMDAgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLWdyYXktMjAwIHRleHQtc20gZm9udC1tZWRpdW0gcHgtNSBweS01IGhvdmVyOnRleHQtZ3JheS05MDAgZm9jdXM6ei0xMCBkYXJrOmJnLWdyYXktNzAwIGRhcms6dGV4dC1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTUwMCBkYXJrOmhvdmVyOnRleHQtd2hpdGUgZGFyazpob3ZlcjpiZy1ncmF5LTYwMCBkYXJrOmZvY3VzOnJpbmctZ3JheS02MDBcIjtcbiAgICBwdWJsaWMgYnRuX2xpZ2h0X21kID0gXCJtcy0zIHRleHQtZ3JheS01MDAgYmctd2hpdGUgaG92ZXI6YmctZ3JheS0xMDAgZm9jdXM6cmluZy00IGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLWJsdWUtMzAwIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1ncmF5LTIwMCB0ZXh0LXNtIGZvbnQtbWVkaXVtIHB4LTMgcHktMyBob3Zlcjp0ZXh0LWdyYXktOTAwIGZvY3VzOnotMTAgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnRleHQtZ3JheS0zMDAgZGFyazpib3JkZXItZ3JheS01MDAgZGFyazpob3Zlcjp0ZXh0LXdoaXRlIGRhcms6aG92ZXI6YmctZ3JheS02MDAgZGFyazpmb2N1czpyaW5nLWdyYXktNjAwXCI7XG4gICAgcHVibGljIGJ0bl9saWdodF9zbSA9IFwibXMtMyB0ZXh0LWdyYXktNTAwIGJnLXdoaXRlIGhvdmVyOmJnLWdyYXktMTAwIGZvY3VzOnJpbmctNCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy1ibHVlLTMwMCByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZ3JheS0yMDAgdGV4dC1zbSBmb250LW1lZGl1bSBweC0xIHB5LTEgaG92ZXI6dGV4dC1ncmF5LTkwMCBmb2N1czp6LTEwIGRhcms6YmctZ3JheS03MDAgZGFyazp0ZXh0LWdyYXktMzAwIGRhcms6Ym9yZGVyLWdyYXktNTAwIGRhcms6aG92ZXI6dGV4dC13aGl0ZSBkYXJrOmhvdmVyOmJnLWdyYXktNjAwIGRhcms6Zm9jdXM6cmluZy1ncmF5LTYwMFwiO1xuXG5cbiAgICBwdWJsaWMgYnRuRGFya0JsYWNrID0gXCJjdXJzb3ItcG9pbnRlciB0ZXh0LXdoaXRlIGJnLWdyYXktODAwIGhvdmVyOmJnLWdyYXktOTAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ncmF5LTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtNSBweS0yLjUgbXItMiBkYXJrOmJnLWdyYXktODAwIGRhcms6aG92ZXI6YmctZ3JheS03MDAgZGFyazpmb2N1czpyaW5nLWdyYXktNzAwIGRhcms6Ym9yZGVyLWdyYXktNzAwXCI7XG4gICAgcHVibGljIGJ0bkxpZ2h0V2hpdGUgPSBcImN1cnNvci1wb2ludGVyIHRleHQtZ3JheS05MDAgYmctd2hpdGUgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCBmb2N1czpvdXRsaW5lLW5vbmUgaG92ZXI6YmctZ3JheS0xMDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctZ3JheS0yMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIHB4LTUgcHktMi41IG1yLTIgIGRhcms6YmctZ3JheS04MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6aG92ZXI6YmctZ3JheS03MDAgZGFyazpob3Zlcjpib3JkZXItZ3JheS02MDAgZGFyazpmb2N1czpyaW5nLWdyYXktNzAwXCI7XG4gICAgLy8gc21hbGwgYnV0dG9uXG4gICAgcHVibGljIGJ0blByaW1hcnlCbHVlX3NtID0gXCJjdXJzb3ItcG9pbnRlciB0ZXh0LXdoaXRlIGJnLWJsdWUtNzAwIGhvdmVyOmJnLWJsdWUtODAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWJsdWUtMzAwIGZvbnQtc21hbGwgcm91bmRlZCB0ZXh0LXNtIHB4LTIgcHktMS41IG1yLTIgZGFyazpiZy1ibHVlLTYwMCBkYXJrOmhvdmVyOmJnLWJsdWUtNzAwIGZvY3VzOm91dGxpbmUtbm9uZSBkYXJrOmZvY3VzOnJpbmctYmx1ZS04MDBcIjtcblxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBwcml2YXRlIHRvYXN0cjogVG9hc3RyU2VydmljZSwgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcikgeyB9XG5cbiAgICBuZ09uSW5pdCgpIHsgfVxuXG4gICAgY2hhcnRSZW5kZXJOZXcoY2FwdGlvbjogYW55KSB7XG4gICAgICAgIGxldCBjaGFydHM6IGFueSA9IHt9O1xuICAgICAgICBjaGFydHNbXCJiYXNlRm9udFwiXSA9IFwiVmVyZGFuYVwiO1xuICAgICAgICBjaGFydHNbXCJjYXB0aW9uXCJdID0gXCJcIjtcbiAgICAgICAgY2hhcnRzW1wic3ViQ2FwdGlvblwiXSA9IGNhcHRpb247XG4gICAgICAgIGNoYXJ0c1tcInN1YmNhcHRpb25Gb250Q29sb3JcIl0gPSBcIiNkNGQwZDBcIjtcbiAgICAgICAgY2hhcnRzW1wieEF4aXNOYW1lXCJdID0gXCJcIjtcbiAgICAgICAgY2hhcnRzW1wieUF4aXNOYW1lXCJdID0gXCJcIjtcbiAgICAgICAgY2hhcnRzW1wicFlBeGlzTmFtZVwiXSA9IFwiXCI7XG4gICAgICAgIGNoYXJ0c1tcInNZQXhpc05hbWVcIl0gPSBcIlwiO1xuICAgICAgICBjaGFydHNbXCJzaG93VmFsdWVzXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcIm51bWJlclByZWZpeFwiXSA9IFwiXCI7XG4gICAgICAgIGNoYXJ0c1tcInBhbGV0dGVDb2xvcnNcIl0gPVxuICAgICAgICAgICAgXCIjMWU4OGU1LCNmNDQzMzYsIzFhYWY1ZCwjMWZiNjIyLCM3ZTAwYjAsI0U3NEMzQywjQUFCN0I4LCNEMzU0MDAsIzI3Mzc0NiwjMTdBNTg5LCMyNzM3NDYsXCI7XG4gICAgICAgIGNoYXJ0c1tcInBsb3RHcmFkaWVudENvbG9yXCJdID0gXCJcIjtcbiAgICAgICAgY2hhcnRzWydiZ0NvbG9yJ10gPSAnIzQyNDI0Mic7XG4gICAgICAgIGNoYXJ0c1tcIkJnQWxwaGFcIl0gPSBcIjEwMFwiO1xuICAgICAgICBjaGFydHNbXCJiYXNlRm9udENvbG9yXCJdID0gXCIjZmZmXCI7XG4gICAgICAgIGNoYXJ0c1tcImNhbnZhc0JnQWxwaGFcIl0gPSBcIjBcIjtcbiAgICAgICAgY2hhcnRzW1wic2hvd0JvcmRlclwiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbXCJzaG93Q2FudmFzQm9yZGVyXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcInVzZVBsb3RHcmFkaWVudENvbG9yXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcInBsb3RCb3JkZXJBbHBoYVwiXSA9IFwiMTBcIjtcbiAgICAgICAgY2hhcnRzW1wibGVnZW5kQm9yZGVyQWxwaGFcIl0gPSBcIjBcIjtcbiAgICAgICAgY2hhcnRzW1wibGVnZW5kQmdBbHBoYVwiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbXCJsZWdlbmRTaGFkb3dcIl0gPSBcIjBcIjtcbiAgICAgICAgY2hhcnRzW1wic2hvd0hvdmVyRWZmZWN0XCJdID0gXCIxXCI7XG4gICAgICAgIGNoYXJ0c1tcInZhbHVlRm9udENvbG9yXCJdID0gXCIjMDAwMDAwXCI7XG4gICAgICAgIGNoYXJ0c1tcInJvdGF0ZVZhbHVlc1wiXSA9IFwiMVwiO1xuICAgICAgICBjaGFydHNbXCJwbGFjZVZhbHVlc0luc2lkZVwiXSA9IFwiMVwiO1xuICAgICAgICBjaGFydHNbXCJkaXZsaW5lQ29sb3JcIl0gPSBcIiM2Njk5Y2NcIjtcbiAgICAgICAgY2hhcnRzW1wiZGl2TGluZUlzRGFzaGVkXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcImRpdkxpbmVEYXNoTGVuXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcImRpdkxpbmVHYXBMZW5cIl0gPSBcIjBcIjtcbiAgICAgICAgY2hhcnRzW1wiZGl2TGluZUFscGhhXCJdID0gXCI2MFwiO1xuICAgICAgICBjaGFydHNbXCJzaG93QWx0ZXJuYXRlVkdyaWRDb2xvclwiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbJ2NhbnZhc0JnQ29sb3InXSA9ICcjNDI0MjQyJztcbiAgICAgICAgY2hhcnRzW1wiY2FwdGlvbkZvbnRTaXplXCJdID0gXCIxMlwiO1xuICAgICAgICBjaGFydHNbXCJzdWJjYXB0aW9uRm9udFNpemVcIl0gPSBcIjEwXCI7XG4gICAgICAgIGNoYXJ0c1tcImV4cG9ydEVuYWJsZWRcIl0gPSBcIjFcIjtcbiAgICAgICAgY2hhcnRzW1wiZXhwb3J0Rm9ybWF0c1wiXSA9IFwiUE5HfEpQR1wiO1xuICAgICAgICBjaGFydHNbXCJleHBvcnRGaWxlTmFtZVwiXSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICBjaGFydHNbXCJzbGFudExhYmVsc1wiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbXCJzaG93Q2FudmFzQm9yZGVyXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcInNob3dBbHRlcm5hdGVIR3JpZENvbG9yXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcInRvb2xUaXBDb2xvclwiXSA9IFwiI2ZmZmZmZlwiO1xuICAgICAgICBjaGFydHNbXCJ0b29sVGlwQm9yZGVyVGhpY2tuZXNzXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcInRvb2xUaXBCZ0NvbG9yXCJdID0gXCIjMDAwMDAwXCI7XG4gICAgICAgIGNoYXJ0c1tcInRvb2xUaXBCZ0FscGhhXCJdID0gXCI4MFwiO1xuICAgICAgICBjaGFydHNbXCJ0b29sVGlwQm9yZGVyUmFkaXVzXCJdID0gXCIyXCI7XG4gICAgICAgIGNoYXJ0c1tcInRvb2xUaXBQYWRkaW5nXCJdID0gXCI1XCI7XG4gICAgICAgIGNoYXJ0c1tcIm91dENudkJhc2VGb250U2l6ZVwiXSA9IFwiOVwiO1xuICAgICAgICBjaGFydHNbXCJsYWJlbERpc3BsYXlcIl0gPSBcInJvdGF0ZVwiO1xuICAgICAgICBjaGFydHNbXCJkcmF3Q3Jvc3NMaW5lXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcInRoZW1lXCJdID0gdGhpcy5mdXNpb25UaGVtZU5hbWU7XG4gICAgICAgIHJldHVybiBjaGFydHM7XG4gICAgfVxuXG4gICAgZ2V0TmV3bXNjb21iaWR5MmQocFlBeGlzTmFtZTogYW55LCBzWUF4aXNOYW1lOiBhbnkpIHtcbiAgICAgICAgbGV0IGNoYXJ0czogYW55ID0ge307XG4gICAgICAgIGNoYXJ0c1tcImJhc2VGb250XCJdID0gXCJWZXJkYW5hXCI7XG4gICAgICAgIGNoYXJ0c1tcImNhcHRpb25cIl0gPSBcIlwiO1xuICAgICAgICBjaGFydHNbXCJzdWJDYXB0aW9uXCJdID0gXCJcIjtcbiAgICAgICAgY2hhcnRzW1wic3ViY2FwdGlvbkZvbnRDb2xvclwiXSA9IFwiI2Q0ZDBkMFwiO1xuICAgICAgICBjaGFydHNbXCJ4QXhpc05hbWVcIl0gPSBcIlwiO1xuICAgICAgICBjaGFydHNbXCJ5QXhpc05hbWVcIl0gPSBcIlwiO1xuICAgICAgICBjaGFydHNbXCJwWUF4aXNOYW1lXCJdID0gcFlBeGlzTmFtZTtcbiAgICAgICAgY2hhcnRzW1wic1lBeGlzTmFtZVwiXSA9IHNZQXhpc05hbWU7XG4gICAgICAgIGNoYXJ0c1tcInNob3dWYWx1ZXNcIl0gPSBcIjBcIjtcbiAgICAgICAgY2hhcnRzW1wibnVtYmVyUHJlZml4XCJdID0gXCJcIjtcbiAgICAgICAgY2hhcnRzW1wicGFsZXR0ZUNvbG9yc1wiXSA9XG4gICAgICAgICAgICBcIiMxZTg4ZTUsI2Y0NDMzNiwjMWFhZjVkLCNjZmUzMjAsIzdlMDBiMCwjRTc0QzNDLCNBQUI3QjgsI0QzNTQwMCwjMjczNzQ2LCMxN0E1ODksIzI3Mzc0NiwgXCI7XG4gICAgICAgIGNoYXJ0c1tcInBsb3RHcmFkaWVudENvbG9yXCJdID0gXCJcIjtcbiAgICAgICAgY2hhcnRzWydiZ0NvbG9yJ10gPSAnIzFlMjkzYic7XG4gICAgICAgIGNoYXJ0c1tcIkJnQWxwaGFcIl0gPSBcIjEwMFwiO1xuICAgICAgICBjaGFydHNbXCJiYXNlRm9udENvbG9yXCJdID0gXCIjZmZmXCI7XG4gICAgICAgIGNoYXJ0c1tcInNob3dCb3JkZXJcIl0gPSBcIjBcIjtcbiAgICAgICAgY2hhcnRzW1wic2hvd0NhbnZhc0JvcmRlclwiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbXCJ1c2VQbG90R3JhZGllbnRDb2xvclwiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbXCJwbG90Qm9yZGVyQWxwaGFcIl0gPSBcIjEwXCI7XG4gICAgICAgIGNoYXJ0c1tcImxlZ2VuZEJvcmRlckFscGhhXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcImxlZ2VuZEJnQWxwaGFcIl0gPSBcIjBcIjtcbiAgICAgICAgY2hhcnRzW1wibGVnZW5kU2hhZG93XCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcInNob3dIb3ZlckVmZmVjdFwiXSA9IFwiMVwiO1xuICAgICAgICBjaGFydHNbXCJ2YWx1ZUZvbnRDb2xvclwiXSA9IFwiIzAwMDAwMFwiO1xuICAgICAgICBjaGFydHNbXCJyb3RhdGVWYWx1ZXNcIl0gPSBcIjFcIjtcbiAgICAgICAgY2hhcnRzW1wicGxhY2VWYWx1ZXNJbnNpZGVcIl0gPSBcIjFcIjtcbiAgICAgICAgY2hhcnRzW1wiZGl2bGluZUNvbG9yXCJdID0gXCIjNjY5OWNjXCI7XG4gICAgICAgIGNoYXJ0c1tcImRpdkxpbmVJc0Rhc2hlZFwiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbXCJkaXZMaW5lRGFzaExlblwiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbXCJkaXZMaW5lR2FwTGVuXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcImRpdkxpbmVBbHBoYVwiXSA9IFwiNjBcIjtcbiAgICAgICAgY2hhcnRzW1wic2hvd0FsdGVybmF0ZVZHcmlkQ29sb3JcIl0gPSBcIjBcIjtcbiAgICAgICAgY2hhcnRzWydjYW52YXNCZ0NvbG9yJ10gPSAnIzFlMjkzYic7XG4gICAgICAgIGNoYXJ0c1tcImNhcHRpb25Gb250U2l6ZVwiXSA9IFwiMTBcIjtcbiAgICAgICAgY2hhcnRzW1wic3ViY2FwdGlvbkZvbnRTaXplXCJdID0gXCIxMFwiO1xuICAgICAgICBjaGFydHNbXCJleHBvcnRFbmFibGVkXCJdID0gXCIxXCI7XG4gICAgICAgIGNoYXJ0c1tcImV4cG9ydEZvcm1hdHNcIl0gPSBcIlBOR3xKUEdcIjtcbiAgICAgICAgY2hhcnRzW1wiZXhwb3J0RmlsZU5hbWVcIl0gPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgY2hhcnRzW1wibGFiZWxEaXNwbGF5XCJdID0gXCJcIjtcbiAgICAgICAgY2hhcnRzW1wic2xhbnRMYWJlbHNcIl0gPSBcIjBcIjtcbiAgICAgICAgY2hhcnRzW1wic2hvd0NhbnZhc0JvcmRlclwiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbXCJzaG93QWx0ZXJuYXRlSEdyaWRDb2xvclwiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbXCJ0b29sVGlwQ29sb3JcIl0gPSBcIiNmZmZmZmZcIjtcbiAgICAgICAgY2hhcnRzW1widG9vbFRpcEJvcmRlclRoaWNrbmVzc1wiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbXCJ0b29sVGlwQmdDb2xvclwiXSA9IFwiIzAwMDAwMFwiO1xuICAgICAgICBjaGFydHNbXCJ0b29sVGlwQmdBbHBoYVwiXSA9IFwiODBcIjtcbiAgICAgICAgY2hhcnRzW1widG9vbFRpcEZvbnRTaXplXCJdID0gXCIxMlwiO1xuICAgICAgICBjaGFydHNbXCJ0b29sVGlwQm9yZGVyUmFkaXVzXCJdID0gXCIyXCI7XG4gICAgICAgIGNoYXJ0c1tcInRvb2xUaXBQYWRkaW5nXCJdID0gXCI1XCI7XG4gICAgICAgIGNoYXJ0c1tcImxhYmVsRGlzcGxheVwiXSA9IFwicm90YXRlXCI7XG4gICAgICAgIGNoYXJ0c1tcIm91dENudkJhc2VGb250U2l6ZVwiXSA9IFwiOVwiO1xuICAgICAgICBjaGFydHNbXCJkcmF3Q3Jvc3NMaW5lXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcInRoZW1lXCJdID0gdGhpcy5mdXNpb25UaGVtZU5hbWU7XG5cbiAgICAgICAgcmV0dXJuIGNoYXJ0cztcbiAgICB9XG5cbiAgICAvLyBqc29uIHRvIGNzdiBjb252ZXJ0b3JcbiAgICBKU09OVG9DU1ZDb252ZXJ0b3IoSlNPTkRhdGEsIFJlcG9ydFRpdGxlLCBTaG93TGFiZWwpIHtcbiAgICAgICAgLy9JZiBKU09ORGF0YSBpcyBub3QgYW4gb2JqZWN0IHRoZW4gSlNPTi5wYXJzZSB3aWxsIHBhcnNlIHRoZSBKU09OIHN0cmluZyBpbiBhbiBPYmplY3RcbiAgICAgICAgbGV0IGFyckRhdGEgPSB0eXBlb2YgSlNPTkRhdGEgIT0gXCJvYmplY3RcIiA/IEpTT04ucGFyc2UoSlNPTkRhdGEpIDogSlNPTkRhdGE7XG5cbiAgICAgICAgbGV0IENTViA9IFwiXCI7XG4gICAgICAgIC8vU2V0IFJlcG9ydCB0aXRsZSBpbiBmaXJzdCByb3cgb3IgbGluZVxuXG4gICAgICAgIENTViArPSBSZXBvcnRUaXRsZSArIFwiXFxyXFxuXFxuXCI7XG5cbiAgICAgICAgLy9UaGlzIGNvbmRpdGlvbiB3aWxsIGdlbmVyYXRlIHRoZSBMYWJlbC9IZWFkZXJcbiAgICAgICAgaWYgKFNob3dMYWJlbCkge1xuICAgICAgICAgICAgbGV0IHJvdyA9IFwiXCI7XG5cbiAgICAgICAgICAgIC8vVGhpcyBsb29wIHdpbGwgZXh0cmFjdCB0aGUgbGFiZWwgZnJvbSAxc3QgaW5kZXggb2Ygb24gYXJyYXlcbiAgICAgICAgICAgIGZvciAobGV0IGluZGV4IGluIGFyckRhdGFbMF0pIHtcbiAgICAgICAgICAgICAgICAvL05vdyBjb252ZXJ0IGVhY2ggdmFsdWUgdG8gc3RyaW5nIGFuZCBjb21tYS1zZXByYXRlZFxuICAgICAgICAgICAgICAgIHJvdyArPSBpbmRleCArIFwiLFwiO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByb3cgPSByb3cuc2xpY2UoMCwgLTEpO1xuXG4gICAgICAgICAgICAvL2FwcGVuZCBMYWJlbCByb3cgd2l0aCBsaW5lIGJyZWFrXG4gICAgICAgICAgICBDU1YgKz0gcm93ICsgXCJcXHJcXG5cIjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vMXN0IGxvb3AgaXMgdG8gZXh0cmFjdCBlYWNoIHJvd1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyckRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCByb3cgPSBcIlwiO1xuXG4gICAgICAgICAgICAvLzJuZCBsb29wIHdpbGwgZXh0cmFjdCBlYWNoIGNvbHVtbiBhbmQgY29udmVydCBpdCBpbiBzdHJpbmcgY29tbWEtc2VwcmF0ZWRcbiAgICAgICAgICAgIGZvciAobGV0IGluZGV4IGluIGFyckRhdGFbaV0pIHtcbiAgICAgICAgICAgICAgICByb3cgKz0gJ1wiJyArIGFyckRhdGFbaV1baW5kZXhdICsgJ1wiLCc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJvdy5zbGljZSgwLCByb3cubGVuZ3RoIC0gMSk7XG5cbiAgICAgICAgICAgIC8vYWRkIGEgbGluZSBicmVhayBhZnRlciBlYWNoIHJvd1xuICAgICAgICAgICAgQ1NWICs9IHJvdyArIFwiXFxyXFxuXCI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoQ1NWID09IFwiXCIpIHtcbiAgICAgICAgICAgIGFsZXJ0KFwiSW52YWxpZCBkYXRhXCIpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9HZW5lcmF0ZSBhIGZpbGUgbmFtZVxuICAgICAgICBsZXQgZmlsZU5hbWUgPSBcInJlcG9ydF9cIjtcbiAgICAgICAgLy90aGlzIHdpbGwgcmVtb3ZlIHRoZSBibGFuay1zcGFjZXMgZnJvbSB0aGUgdGl0bGUgYW5kIHJlcGxhY2UgaXQgd2l0aCBhbiB1bmRlcnNjb3JlXG4gICAgICAgIGZpbGVOYW1lICs9IFJlcG9ydFRpdGxlLnJlcGxhY2UoLyAvZywgXCIgXCIpO1xuXG4gICAgICAgIC8vSW5pdGlhbGl6ZSBmaWxlIGZvcm1hdCB5b3Ugd2FudCBjc3Ygb3IgeGxzXG4gICAgICAgIGxldCB1cmkgPSBcImRhdGE6dGV4dC9jc3Y7Y2hhcnNldD11dGYtOCwlRUYlQkIlQkZcIiArIGVuY29kZVVSSShDU1YpO1xuXG4gICAgICAgIC8vIE5vdyB0aGUgbGl0dGxlIHRyaWNreSBwYXJ0LlxuICAgICAgICAvLyB5b3UgY2FuIHVzZSBlaXRoZXI+PiB3aW5kb3cub3Blbih1cmkpO1xuICAgICAgICAvLyBidXQgdGhpcyB3aWxsIG5vdCB3b3JrIGluIHNvbWUgYnJvd3NlcnNcbiAgICAgICAgLy8gb3IgeW91IHdpbGwgbm90IGdldCB0aGUgY29ycmVjdCBmaWxlIGV4dGVuc2lvblxuXG4gICAgICAgIC8vdGhpcyB0cmljayB3aWxsIGdlbmVyYXRlIGEgdGVtcCA8YSAvPiB0YWdcbiAgICAgICAgbGV0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcbiAgICAgICAgbGluay5ocmVmID0gdXJpO1xuXG4gICAgICAgIGlmIChSZXBvcnRUaXRsZSA9PT0gXCJEYXRhc291cmNlIE1pc3NpbmcgRmlsZXNcIikge1xuICAgICAgICAgICAgbGluay5kb3dubG9hZCA9IGZpbGVOYW1lICsgXCJfXCIgKyB0aGlzLmRlZmF1bHRDdXJyZW50RGF0ZU1pbGxpcyArIFwiLnR4dFwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGluay5kb3dubG9hZCA9IGZpbGVOYW1lICsgXCJfXCIgKyB0aGlzLmRlZmF1bHRDdXJyZW50RGF0ZU1pbGxpcyArIFwiLmNzdlwiO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9zZXQgdGhlIHZpc2liaWxpdHkgaGlkZGVuIHNvIGl0IHdpbGwgbm90IGVmZmVjdCBvbiB5b3VyIHdlYi1sYXlvdXRcblxuICAgICAgICAvL3RoaXMgcGFydCB3aWxsIGFwcGVuZCB0aGUgYW5jaG9yIHRhZyBhbmQgcmVtb3ZlIGl0IGFmdGVyIGF1dG9tYXRpYyBjbGlja1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xuICAgICAgICBsaW5rLmNsaWNrKCk7XG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XG4gICAgfVxuXG4gICAgLy8gaHRtbCBmb3IgY29sb3IgYmFyXG4gICAgY3JlYXRlSHRtbCh3aWR0aCwgZGF0YSwgY29sb3IpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICc8ZGl2IHN0eWxlPVwiZGlzcGxheTogaW5saW5lXCI+ICcgK1xuICAgICAgICAgICAgJzxkaXYgY2xhc3M9XCJuby1wYWRkaW5nXCIgc3R5bGU9XCJmbG9hdDpsZWZ0OyB3aWR0aDogJyArXG4gICAgICAgICAgICB3aWR0aCArXG4gICAgICAgICAgICBcIiU7IGJhY2tncm91bmQtY29sb3I6IFwiICtcbiAgICAgICAgICAgIGNvbG9yICtcbiAgICAgICAgICAgIFwiOyBcIiArXG4gICAgICAgICAgICAnaGVpZ2h0OiAxNXB4OyBwb3NpdGlvbjogcmVsYXRpdmU7XCI+PC9kaXY+JyArXG4gICAgICAgICAgICAnPGRpdiBjbGFzcz1cIm5vLXBhZGRpbmcgYmFyXCIgc3R5bGU9XCJmbG9hdDogbGVmdFwiPicgK1xuICAgICAgICAgICAgZGF0YSArXG4gICAgICAgICAgICBcIjwvZGl2PlwiICtcbiAgICAgICAgICAgIFwiPC9kaXY+XCJcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBzY2FsZSBmb3IgY29sb3JiYXJcbiAgICBzY2FsZU51bWJlcihpbnB1dFksIHlNaW4sIHlNYXgsIHhNaW4sIHhNYXgpIHtcbiAgICAgICAgaWYgKHlNaW4gPT0geU1heCkge1xuICAgICAgICAgICAgaWYgKGlucHV0WSA9PSB5TWluKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHhNYXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4geE1pbjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBwZXJjZW50ID0gKGlucHV0WSAtIHlNaW4pIC8gKHlNYXggLSB5TWluKTtcbiAgICAgICAgICAgIHJldHVybiBwZXJjZW50ICogKHhNYXggLSB4TWluKSArIHhNaW47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyB0aG91c2VuZCBzZXBhcmV0b3JcbiAgICBUaG91c2FuZFNlcGFyYXRvcih2YWx1ZSkge1xuICAgICAgICBpZiAoTnVtYmVyKHZhbHVlKSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlID4gMCAmJiB2YWx1ZSA8IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gTnVtYmVyKHZhbHVlKS50b0xvY2FsZVN0cmluZygpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgcmVmb3JtYXROdW1iZXJXaXRoVGhvdXNhbmRTZXBhcmF0b3IodmFsdWUpIHtcbiAgICAgICAgaWYgKE51bWJlcih2YWx1ZSkpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSA+IDAgJiYgdmFsdWUgPCAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIE51bWJlcih2YWx1ZSkudG9Mb2NhbGVTdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcmVmb3JtYXROdW1iZXJXaXRoVGhvdXNhbmRTZXBhcmF0b3JWMih2YWx1ZSwgZXhwKSB7XG4gICAgICAgIGlmIChleHAgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBleHAgPSAwO1xuICAgICAgICB9XG4gICAgICAgIGlmIChOdW1iZXIodmFsdWUpKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUgPiAwICYmIHZhbHVlIDwgMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJvdW5kT2ZmVGlsbFR3byh2YWx1ZSwgZXhwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBOdW1iZXIodmFsdWUpLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwge1xuICAgICAgICAgICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogZXhwLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICByZWZvcm1hdE51bWJlcldpdGhUaG91c2FuZFNlcGFyYXRvclYzKHZhbHVlLCBleHApIHtcblxuICAgICAgICBsZXQgdmFsO1xuICAgICAgICBpZiAoZXhwID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZXhwID0gMDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoTnVtYmVyKHZhbHVlKSkge1xuICAgICAgICAgICAgdmFsID0gdmFsdWUudG9GaXhlZChleHApO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID09IDApIHtcbiAgICAgICAgICAgIHZhbCA9IHZhbHVlLnRvRml4ZWQoZXhwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhbCA9IFwiTkFOXCI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE51bWJlcih2YWwpLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwge1xuICAgICAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiBleHAsXG4gICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IGV4cCxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJlZm9ybWF0TnVtYmVyV2l0aFRob3VzYW5kU2VwYXJhdG9yVjQodmFsdWUsIGV4cCA9IDApIHtcbiAgICAgICAgbGV0IHZhbDtcblxuICAgICAgICAvLyBDb252ZXJ0IHZhbHVlIHRvIGEgbnVtYmVyIGlmIGl0J3Mgbm90IGFscmVhZHkgb25lXG4gICAgICAgIGNvbnN0IG51bWVyaWNWYWx1ZSA9IE51bWJlcih2YWx1ZSk7XG5cbiAgICAgICAgaWYgKCFpc05hTihudW1lcmljVmFsdWUpKSB7IC8vIENoZWNrIGlmIHRoZSBjb252ZXJzaW9uIHJlc3VsdCBpcyBhIG51bWJlclxuICAgICAgICAgICAgdmFsID0gbnVtZXJpY1ZhbHVlLnRvRml4ZWQoZXhwKTtcbiAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgaWYgKHZhbHVlID09IFwiLVwiKSB7XG4gICAgICAgICAgICAgICAgdmFsID0gXCItXCI7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgICAgICB2YWwgPSBcIk5BTlwiO1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWw7IC8vIEVhcmx5IHJldHVybiBhcyBmdXJ0aGVyIHByb2Nlc3NpbmcgaXMgbm90IG1lYW5pbmdmdWxcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG4gICAgICAgIC8vIEZvcm1hdCB0aGUgbnVtYmVyIHdpdGggdGhvdXNhbmQgc2VwYXJhdG9yIGFuZCBzcGVjaWZpZWQgZGVjaW1hbCBwbGFjZXNcbiAgICAgICAgcmV0dXJuIE51bWJlcih2YWwpLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwge1xuICAgICAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiBleHAsXG4gICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IGV4cCxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8vIGZvciBudW1iZXIgcmV0dXJuXG4gICAgcmVmb3JtYXROdW1iZXJXaXRoVGhvdXNhbmRTZXBhcmF0b3JWNSh2YWx1ZSwgZXhwID0gMCkge1xuICAgICAgICBsZXQgdmFsO1xuXG4gICAgICAgIC8vIENvbnZlcnQgdmFsdWUgdG8gYSBudW1iZXIgaWYgaXQncyBub3QgYWxyZWFkeSBvbmVcbiAgICAgICAgY29uc3QgbnVtZXJpY1ZhbHVlID0gTnVtYmVyKHZhbHVlKTtcblxuICAgICAgICBpZiAoIWlzTmFOKG51bWVyaWNWYWx1ZSkpIHsgLy8gQ2hlY2sgaWYgdGhlIGNvbnZlcnNpb24gcmVzdWx0IGlzIGEgbnVtYmVyXG4gICAgICAgICAgICB2YWwgPSBudW1lcmljVmFsdWUudG9GaXhlZChleHApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHZhbHVlID09IFwiLVwiKSB7XG4gICAgICAgICAgICAgICAgdmFsID0gXCItXCI7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE5hTjsgLy8gUmV0dXJuIE5hTiB0byBpbmRpY2F0ZSBhbiBpbnZhbGlkIG51bWJlclxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gTmFOOyAvLyBSZXR1cm4gTmFOIHRvIGluZGljYXRlIGFuIGludmFsaWQgbnVtYmVyXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDb252ZXJ0IHRoZSBzdHJpbmcgYmFjayB0byBhIG51bWJlclxuICAgICAgICByZXR1cm4gTnVtYmVyKHZhbCk7XG4gICAgfVxuXG4gICAgcmVmb3JtYXROdW1iZXJXaXRoVGhvdXNhbmRTZXBhcmF0b3JJZnJzVHlwZSh2YWx1ZSwgZXhwID0gMCkge1xuICAgICAgICBsZXQgdmFsO1xuXG4gICAgICAgIC8vIENvbnZlcnQgdmFsdWUgdG8gYSBudW1iZXIgaWYgaXQncyBub3QgYWxyZWFkeSBvbmVcbiAgICAgICAgY29uc3QgbnVtZXJpY1ZhbHVlID0gTnVtYmVyKHZhbHVlKTtcblxuICAgICAgICBpZiAoIWlzTmFOKG51bWVyaWNWYWx1ZSkpIHsgLy8gQ2hlY2sgaWYgdGhlIGNvbnZlcnNpb24gcmVzdWx0IGlzIGEgbnVtYmVyXG4gICAgICAgICAgICB2YWwgPSBudW1lcmljVmFsdWUudG9GaXhlZChleHApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFsID0gXCItXCI7XG4gICAgICAgICAgICByZXR1cm4gdmFsO1xuICAgICAgICB9XG4gICAgICAgIC8vIEZvcm1hdCB0aGUgbnVtYmVyIHdpdGggdGhvdXNhbmQgc2VwYXJhdG9yIGFuZCBzcGVjaWZpZWQgZGVjaW1hbCBwbGFjZXNcbiAgICAgICAgcmV0dXJuIE51bWJlcih2YWwpLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwge1xuICAgICAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiBleHAsXG4gICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IGV4cCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZm9yYW10ZVZhbHVlRm9yQW1vdW50KHZhbHVlLCBleHApIHtcbiAgICAgICAgbGV0IHZhbDtcbiAgICAgICAgaWYgKGV4cCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBleHAgPSAwO1xuICAgICAgICB9XG4gICAgICAgIC8vIERpdmlkZSB0aGUgdmFsdWUgYnkgMTAwMDAgYXQgdGhlIG91dHNldFxuICAgICAgICB2YWx1ZSA9IE51bWJlcih2YWx1ZSkgLyAxMDAwMDtcblxuICAgICAgICAvLyBDaGVjayBpZiB0aGUgcmVzdWx0IGlzIGEgZmluaXRlIG51bWJlclxuICAgICAgICBpZiAoaXNGaW5pdGUodmFsdWUpKSB7XG4gICAgICAgICAgICB2YWwgPSB2YWx1ZS50b0ZpeGVkKGV4cCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBJZiB0aGUgaW5wdXQgb3IgdGhlIGRpdmlzaW9uIHJlc3VsdCBpcyBub3QgYSBudW1iZXIsIGhhbmRsZSBncmFjZWZ1bGx5XG4gICAgICAgICAgICB2YWwgPSBcIjBcIjsgLy8gRGVmYXVsdGluZyB0byBcIjBcIiB0byBlbnN1cmUgdGhlIHRvTG9jYWxlU3RyaW5nIGNhbGwgZG9lcyBub3QgZmFpbFxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBOdW1iZXIodmFsKS50b0xvY2FsZVN0cmluZyh1bmRlZmluZWQsIHtcbiAgICAgICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogZXhwLFxuICAgICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiBleHAsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBmb3JhbXRlVmFsdWVGb3JDaGFyZ2UodmFsdWUsIGV4cCkge1xuICAgICAgICBsZXQgdmFsO1xuICAgICAgICBpZiAoZXhwID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGV4cCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRGl2aWRlIHRoZSB2YWx1ZSBieSAxMDAwMCBhdCB0aGUgb3V0c2V0XG4gICAgICAgIHZhbHVlID0gTnVtYmVyKHZhbHVlKSAvIDEwMDAwO1xuXG4gICAgICAgIC8vIENoZWNrIGlmIHRoZSByZXN1bHQgaXMgYSBmaW5pdGUgbnVtYmVyXG4gICAgICAgIGlmIChpc0Zpbml0ZSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbCA9IHZhbHVlLnRvRml4ZWQoZXhwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIElmIHRoZSBpbnB1dCBvciB0aGUgZGl2aXNpb24gcmVzdWx0IGlzIG5vdCBhIG51bWJlciwgaGFuZGxlIGdyYWNlZnVsbHlcbiAgICAgICAgICAgIHZhbCA9IFwiMFwiOyAvLyBEZWZhdWx0aW5nIHRvIFwiMFwiIHRvIGVuc3VyZSB0aGUgdG9Mb2NhbGVTdHJpbmcgY2FsbCBkb2VzIG5vdCBmYWlsXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE51bWJlcih2YWwpLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwge1xuICAgICAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiBleHAsXG4gICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IGV4cCxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGZvcmFtdGVWYWx1ZUZvck1vVSh2YWx1ZSwgZXhwKSB7XG4gICAgICAgIGxldCB2YWw7XG4gICAgICAgIGlmIChleHAgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZXhwID0gMDtcbiAgICAgICAgfVxuICAgICAgICAvLyBEaXZpZGUgdGhlIHZhbHVlIGJ5IDEwMDAwIGF0IHRoZSBvdXRzZXRcbiAgICAgICAgdmFsdWUgPSBOdW1iZXIodmFsdWUpIC8gNjA7XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHJlc3VsdCBpcyBhIGZpbml0ZSBudW1iZXJcbiAgICAgICAgaWYgKGlzRmluaXRlKHZhbHVlKSkge1xuICAgICAgICAgICAgdmFsID0gdmFsdWUudG9GaXhlZChleHApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gSWYgdGhlIGlucHV0IG9yIHRoZSBkaXZpc2lvbiByZXN1bHQgaXMgbm90IGEgbnVtYmVyLCBoYW5kbGUgZ3JhY2VmdWxseVxuICAgICAgICAgICAgdmFsID0gXCIwXCI7IC8vIERlZmF1bHRpbmcgdG8gXCIwXCIgdG8gZW5zdXJlIHRoZSB0b0xvY2FsZVN0cmluZyBjYWxsIGRvZXMgbm90IGZhaWxcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gTnVtYmVyKHZhbCkudG9Mb2NhbGVTdHJpbmcodW5kZWZpbmVkLCB7XG4gICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IGV4cCxcbiAgICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogZXhwLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhYmJyZXZpYXRlTnVtYmVyKG51bWJlcikge1xuICAgICAgICBsZXQgU0lfUE9TVEZJWEVTID0gW1wiXCIsIFwiS1wiLCBcIk1cIiwgXCJCXCIsIFwiVFwiXTtcbiAgICAgICAgbGV0IHRpZXIgPSAoTWF0aC5sb2cxMChNYXRoLmFicyhudW1iZXIpKSAvIDMpIHwgMDtcbiAgICAgICAgaWYgKHRpZXIgPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucm91bmRPZmZUaWxsVHdvKG51bWJlciwgMik7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHBvc3RmaXggPSBTSV9QT1NURklYRVNbdGllcl07XG4gICAgICAgIGxldCBzY2FsZSA9IE1hdGgucG93KDEwLCB0aWVyICogMyk7XG4gICAgICAgIGxldCBzY2FsZWQgPSBudW1iZXIgLyBzY2FsZTtcbiAgICAgICAgbGV0IGZvcm1hdHRlZCA9IHNjYWxlZC50b0ZpeGVkKDEpICsgXCJcIjtcbiAgICAgICAgaWYgKC9cXC4wJC8udGVzdChmb3JtYXR0ZWQpKSB7XG4gICAgICAgICAgICBmb3JtYXR0ZWQgPSBmb3JtYXR0ZWQuc3Vic3RyKDAsIGZvcm1hdHRlZC5sZW5ndGggLSAyKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm9ybWF0dGVkICsgcG9zdGZpeDtcbiAgICB9XG5cbiAgICBjcmVhdGVWYXJpYW5jZUh0bWxGb3JDb3VudCh3aWR0aCwgZGF0YTEsIGRhdGEyKSB7XG4gICAgICAgIGxldCBjb2x1bW5Db2xvciA9IFwiXCI7XG4gICAgICAgIGxldCBjb2x1bW5EYXRhID0gZGF0YTEgLSBkYXRhMjtcbiAgICAgICAgaWYgKGNvbHVtbkRhdGEgPiAwKSB7XG4gICAgICAgICAgICBjb2x1bW5Db2xvciA9IFwiI2ZkMDAwMFwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29sdW1uQ29sb3IgPSBcIiNkYjE1MDBcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAnPGRpdiBzdHlsZT1cImRpc3BsYXk6IGlubGluZVwiPiAnICtcbiAgICAgICAgICAgICc8ZGl2IGNsYXNzPVwibm8tcGFkZGluZ1wiIHN0eWxlPVwiZmxvYXQ6bGVmdDsgd2lkdGg6ICcgK1xuICAgICAgICAgICAgd2lkdGggK1xuICAgICAgICAgICAgXCIlOyBiYWNrZ3JvdW5kLWNvbG9yOiBcIiArXG4gICAgICAgICAgICBjb2x1bW5Db2xvciArXG4gICAgICAgICAgICBcIjsgXCIgK1xuICAgICAgICAgICAgJ2hlaWdodDogMTVweDsgcG9zaXRpb246IHJlbGF0aXZlO1wiPjwvZGl2PicgK1xuICAgICAgICAgICAgJzxkaXYgY2xhc3M9XCJuby1wYWRkaW5nXCIgc3R5bGU9XCJmbG9hdDogbGVmdFwiPicgK1xuICAgICAgICAgICAgdGhpcy5yZWZvcm1hdE51bWJlcldpdGhUaG91c2FuZFNlcGFyYXRvcihjb2x1bW5EYXRhKSArXG4gICAgICAgICAgICBcIjwvZGl2PlwiICtcbiAgICAgICAgICAgIFwiPC9kaXY+XCJcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICByb3VuZE9mZlRpbGxUd28odmFsdWUsIGV4cCkge1xuICAgICAgICBpZiAodHlwZW9mIGV4cCA9PT0gXCJ1bmRlZmluZWRcIiB8fCArZXhwID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5yb3VuZCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFsdWUgPSArdmFsdWU7XG4gICAgICAgIGV4cCA9ICtleHA7XG5cbiAgICAgICAgaWYgKGlzTmFOKHZhbHVlKSB8fCAhKHR5cGVvZiBleHAgPT09IFwibnVtYmVyXCIgJiYgZXhwICUgMSA9PT0gMCkpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTaGlmdFxuICAgICAgICB2YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKCkuc3BsaXQoXCJlXCIpO1xuICAgICAgICB2YWx1ZSA9IE1hdGgucm91bmQoKyh2YWx1ZVswXSArIFwiZVwiICsgKHZhbHVlWzFdID8gK3ZhbHVlWzFdICsgZXhwIDogZXhwKSkpO1xuXG4gICAgICAgIC8vIFNoaWZ0IGJhY2tcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS50b1N0cmluZygpLnNwbGl0KFwiZVwiKTtcbiAgICAgICAgcmV0dXJuICsodmFsdWVbMF0gKyBcImVcIiArICh2YWx1ZVsxXSA/ICt2YWx1ZVsxXSAtIGV4cCA6IC1leHApKTtcbiAgICB9XG5cbiAgICBnZXRtYXBDaGFydERldGFpbEhvbGRlcih2YWwpIHtcbiAgICAgICAgdGhpcy5tYXBDaGFydERldGFpbEhvbGRlciA9IHZhbDtcbiAgICB9XG5cblxuXG4gICAgZ2V0X3BlcmNlbnRhZ2VfY2hhbmdlKHByZXYsIG5vdykge1xuICAgICAgICBsZXQgcGVyYyA9IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHByZXYgIT09IDApIHtcbiAgICAgICAgICAgIHBlcmMgPSAoKG5vdyAtIHByZXYpIC8gcHJldikgKiAxMDA7XG4gICAgICAgICAgICBwZXJjID0gdGhpcy5yb3VuZE9mZlRpbGxUd28ocGVyYywgMik7XG4gICAgICAgIH0gZWxzZSBpZiAobm93ICE9PSAwKSB7XG4gICAgICAgICAgICBwZXJjID0gMTAwO1xuICAgICAgICB9XG4gICAgICAgIGxldCBiYWRnZV9sYWJlbCA9IFwiXCI7XG4gICAgICAgIGlmIChwZXJjID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHBlcmMgPSBcIjxiIGNsYXNzPSd3aWctbmEnPiBOQTwvYj5cIjtcbiAgICAgICAgICAgIGJhZGdlX2xhYmVsID0gXCI8Yj5cIiArIHBlcmMgKyBcIjwvYj5cIjtcbiAgICAgICAgfSBlbHNlIGlmIChwZXJjID4gMCkge1xuICAgICAgICAgICAgYmFkZ2VfbGFiZWwgPVxuICAgICAgICAgICAgICAgICc8c3Bhbj48YiBjbGFzcz1cImdyZWVuLWJhZGdlXCI+ICsnICtcbiAgICAgICAgICAgICAgICBwZXJjICtcbiAgICAgICAgICAgICAgICAnPGkgY2xhc3M9XCJmYSBmYS1jaGV2cm9uLXVwXCIgPjwvaT48L2I+PC9zcGFuPic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYWRnZV9sYWJlbCA9XG4gICAgICAgICAgICAgICAgJzxzcGFuPjxiIGNsYXNzPVwici1iZ1wiPiAnICtcbiAgICAgICAgICAgICAgICBwZXJjICtcbiAgICAgICAgICAgICAgICAnPGkgY2xhc3M9XCJmYSBmYS1jaGV2cm9uLWRvd25cIiA+PC9pPjwvYj48c3Bhbj4nO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBiYWRnZV9sYWJlbDtcbiAgICB9XG5cbiAgICBnZXRMYWJlbChhdHRyX25hbWUpIHtcbiAgICAgICAgbGV0IGxhYmVsX25hbWUgPSBcIlwiO1xuICAgICAgICBpZiAoYXR0cl9uYW1lICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKGF0dHJfbmFtZS5pbmRleE9mKFwiLVwiKSA+IDApIHtcbiAgICAgICAgICAgICAgICBhdHRyX25hbWUgPSBhdHRyX25hbWUucmVwbGFjZSgvLS9nLCBcIiBcIik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGF0dHJfbmFtZS5pbmRleE9mKFwiX1wiKSA+IDApIHtcbiAgICAgICAgICAgICAgICBhdHRyX25hbWUgPSBhdHRyX25hbWUucmVwbGFjZSgvXy9nLCBcIiBcIik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGF0dHJfbmFtZSA9IGF0dHJfbmFtZS5yZXBsYWNlKC8oW0EtWl0pL2csIFwiICQxXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGFiZWxfbmFtZSA9IHRoaXMuY2FwaXRhbGlzZVdvcmQoYXR0cl9uYW1lKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGFiZWxfbmFtZTtcbiAgICB9XG5cbiAgICBjYXBpdGFsaXNlV29yZChjb250ZW50KSB7XG4gICAgICAgIGxldCByZXQgPSBcIlwiO1xuICAgICAgICBsZXQgdGV4dCA9IGNvbnRlbnQsXG4gICAgICAgICAgICB0b2tlbnMgPSB0ZXh0LnNwbGl0KFwiIFwiKS5maWx0ZXIoZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdCAhPSBcIlwiO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICByZXMgPSBbXSxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICBsZW4sXG4gICAgICAgICAgICBjb21wb25lbnQ7XG4gICAgICAgIGZvciAoaSA9IDAsIGxlbiA9IHRva2Vucy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgICAgY29tcG9uZW50ID0gdG9rZW5zW2ldO1xuICAgICAgICAgICAgcmVzLnB1c2goY29tcG9uZW50LnN1YnN0cmluZygwLCAxKS50b1VwcGVyQ2FzZSgpKTtcbiAgICAgICAgICAgIHJlcy5wdXNoKGNvbXBvbmVudC5zdWJzdHJpbmcoMSkpO1xuICAgICAgICAgICAgcmVzLnB1c2goXCIgXCIpOyAvLyBwdXQgc3BhY2UgYmFjayBpblxuICAgICAgICB9XG4gICAgICAgIHJldCArPSByZXMuam9pbihcIlwiKTtcbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG5cbiAgICBjb252ZXJ0VG9TcGFjZVNlcGFyYXRlZENhcGl0YWxpemVkKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBpbnB1dFxuICAgICAgICAgICAgLnJlcGxhY2UoL18vZywgJyAnKVxuICAgICAgICAgICAgLnJlcGxhY2UoLyhbYS16XSkoW0EtWl0pL2csICckMSAkMicpXG4gICAgICAgICAgICAucmVwbGFjZSgvKFtBLVpdKShbQS1aXVthLXpdKS9nLCAnJDEgJDInKVxuICAgICAgICAgICAgLnJlcGxhY2UoL1xcYlxcdy9nLCBmaXJzdENoYXIgPT4gZmlyc3RDaGFyLnRvVXBwZXJDYXNlKCkpO1xuICAgIH1cblxuICAgIGNhcGl0YWxpemVGaXJzdExldHRlcih0ZXh0KTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRleHQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB0ZXh0LnNsaWNlKDEpLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuXG4gICAgZm9ybWF0TWlsbGlzZWModmFsdWUpOiBhbnkge1xuICAgICAgICBsZXQgbWlsbGlzZWNJbkRheSA9IDg2NDAwMDAwO1xuICAgICAgICBsZXQgbWlsbGlzZWNJbkhvdXIgPSAzNjAwMDAwO1xuICAgICAgICBsZXQgbWlsbGlzZWNJbk1pbiA9IDYwMDAwO1xuICAgICAgICBsZXQgbWlsbGlzZWNJblNlYyA9IDEwMDA7XG5cbiAgICAgICAgaWYgKHZhbHVlID49IG1pbGxpc2VjSW5EYXkpIHtcbiAgICAgICAgICAgIGxldCBkYXlWYWx1ZSA9IHZhbHVlIC8gODY0MDAwMDA7XG4gICAgICAgICAgICBsZXQgZGF5ID0gZGF5VmFsdWUudG9GaXhlZCgxKTtcbiAgICAgICAgICAgIGlmIChkYXkgPT09IFwiMVwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRheSArIFwiIGRheVwiO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF5ICsgXCIgZGF5c1wiO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID49IG1pbGxpc2VjSW5Ib3VyKSB7XG4gICAgICAgICAgICBsZXQgaG91ciA9IHZhbHVlIC8gMzYwMDAwMDtcbiAgICAgICAgICAgIHJldHVybiBob3VyICsgXCIgaHJcIjtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA+PSBtaWxsaXNlY0luTWluKSB7XG4gICAgICAgICAgICBsZXQgbWluID0gdmFsdWUgLyA2MDAwMDtcbiAgICAgICAgICAgIHJldHVybiBtaW4gKyBcIiBtaW5cIjtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA+PSBtaWxsaXNlY0luU2VjKSB7XG4gICAgICAgICAgICBsZXQgc2VjID0gdmFsdWUgLyAxMDAwO1xuICAgICAgICAgICAgcmV0dXJuIHNlYyArIFwiIHNlY1wiO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlIDwgMTAwMCkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlICsgXCIgbWlsXCI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmb3JtYXRCeXRlcyhieXRlcywgZGVjaW1hbHMpIHtcbiAgICAgICAgaWYgKGJ5dGVzID09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBcIjAgQnl0ZVwiO1xuICAgICAgICB9XG4gICAgICAgIGxldCBrID0gMTAyNDtcbiAgICAgICAgbGV0IGRtID0gZGVjaW1hbHM7XG4gICAgICAgIGlmIChkZWNpbWFscyA9PSB1bmRlZmluZWQgfHwgZGVjaW1hbHMgPT0gXCJcIikge1xuICAgICAgICAgICAgZG0gPSAyO1xuICAgICAgICB9XG4gICAgICAgIGxldCBzaXplcyA9IFtcIkJ5dGVzXCIsIFwiS0JcIiwgXCJNQlwiLCBcIkdCXCIsIFwiVEJcIiwgXCJQQlwiLCBcIkVCXCIsIFwiWkJcIiwgXCJZQlwiXTtcbiAgICAgICAgbGV0IGkgPSBNYXRoLmZsb29yKE1hdGgubG9nKGJ5dGVzKSAvIE1hdGgubG9nKGspKTtcbiAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQoKGJ5dGVzIC8gTWF0aC5wb3coaywgaSkpLnRvRml4ZWQoZG0pKSArIFwiIFwiICsgc2l6ZXNbaV07XG4gICAgfVxuXG4gICAgZm9ybWF0Qnl0ZXN2MihieXRlcywgZGVjaW1hbHMpIHtcblxuICAgICAgICBpZiAoYnl0ZXMgPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIFwiMFwiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChieXRlcyA9PSBcIk5vIERhdGFcIikge1xuICAgICAgICAgICAgcmV0dXJuIFwiTm8gRGF0YVwiO1xuICAgICAgICB9XG4gICAgICAgIGxldCBrID0gMTAyNDtcbiAgICAgICAgbGV0IGRtID0gZGVjaW1hbHM7XG4gICAgICAgIGlmIChkZWNpbWFscyA9PSB1bmRlZmluZWQgfHwgZGVjaW1hbHMgPT0gXCJcIikge1xuICAgICAgICAgICAgZG0gPSAyO1xuICAgICAgICB9XG4gICAgICAgIGxldCBzaXplcyA9IFtcIkJ5dGVzXCIsIFwiS0JcIiwgXCJNQlwiLCBcIkdCXCIsIFwiVEJcIiwgXCJQQlwiLCBcIkVCXCIsIFwiWkJcIiwgXCJZQlwiXTtcbiAgICAgICAgbGV0IGkgPSBNYXRoLmZsb29yKE1hdGgubG9nKGJ5dGVzKSAvIE1hdGgubG9nKGspKTtcbiAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQoKGJ5dGVzIC8gTWF0aC5wb3coaywgaSkpLnRvRml4ZWQoZG0pKSArIFwiIFwiICsgc2l6ZXNbaV07XG4gICAgfVxuXG4gICAgZm9ybWF0Qnl0c1RvS2IoYnl0ZXMsIGRlY2ltYWxzKSB7XG4gICAgICAgIGlmIChieXRlcyA9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gXCIwXCI7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGsgPSAxMDI0O1xuICAgICAgICBsZXQgZG0gPSBkZWNpbWFscztcbiAgICAgICAgaWYgKGRlY2ltYWxzID09IHVuZGVmaW5lZCB8fCBkZWNpbWFscyA9PSBcIlwiKSB7XG4gICAgICAgICAgICBkbSA9IDI7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGkgPSBieXRlcyAvIGs7XG4gICAgICAgIC8vIHJldHVybiBwYXJzZUZsb2F0KGkpLnRvTG9jYWxlU3RyaW5nKCkudG9GaXhlZChkbSkgKyAnICcgKyAnS0InO1xuICAgICAgICBsZXQgdiA9IE51bWJlcihpKS50b0xvY2FsZVN0cmluZyh1bmRlZmluZWQsIHsgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiBkbSB9KTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHYpXG4gICAgfVxuICAgIGZvcm1hdEJ5dHNUb0diKGJ5dGVzLCBkZWNpbWFscykge1xuICAgICAgICBpZiAoYnl0ZXMgPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIFwiMFwiO1xuICAgICAgICB9XG4gICAgICAgIGxldCBnID0gMTAyNCAqIDEwMjQgKiAxMDI0O1xuICAgICAgICBsZXQgZG0gPSBkZWNpbWFscztcbiAgICAgICAgaWYgKGRlY2ltYWxzID09IHVuZGVmaW5lZCB8fCBkZWNpbWFscyA9PSBcIlwiKSB7XG4gICAgICAgICAgICBkbSA9IDI7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGkgPSBieXRlcyAvIGc7XG4gICAgICAgIC8vIHJldHVybiBwYXJzZUZsb2F0KGkpLnRvTG9jYWxlU3RyaW5nKCkudG9GaXhlZChkbSkgKyAnICcgKyAnS0InO1xuICAgICAgICBsZXQgdiA9IE51bWJlcihpKS50b0xvY2FsZVN0cmluZyh1bmRlZmluZWQsIHsgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiBkbSB9KTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHYpXG4gICAgfVxuXG4gICAgcmVmb3JtYXROdW1iZXIodmFsdWUpIHtcbiAgICAgICAgbGV0IG5ld1ZhbHVlID0gXCJcIjtcbiAgICAgICAgbmV3VmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHZhbHVlID49IDEwMDApIHtcbiAgICAgICAgICAgIGxldCBzdWZmaXhlcyA9IFtcIlwiLCBcIktcIiwgXCJNXCIsIFwiQlwiLCBcIlRcIl07XG4gICAgICAgICAgICBsZXQgc3VmZml4TnVtID0gTWF0aC5mbG9vcigoXCJcIiArIHZhbHVlKS5sZW5ndGggLyAzKTtcbiAgICAgICAgICAgIGxldCBzaG9ydFZhbHVlO1xuICAgICAgICAgICAgZm9yIChsZXQgcHJlY2lzaW9uID0gMjsgcHJlY2lzaW9uID49IDE7IHByZWNpc2lvbi0tKSB7XG4gICAgICAgICAgICAgICAgc2hvcnRWYWx1ZSA9IHBhcnNlRmxvYXQoXG4gICAgICAgICAgICAgICAgICAgIChzdWZmaXhOdW0gIT0gMFxuICAgICAgICAgICAgICAgICAgICAgICAgPyB2YWx1ZSAvIE1hdGgucG93KDEwMDAsIHN1ZmZpeE51bSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKS50b1ByZWNpc2lvbihwcmVjaXNpb24pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBsZXQgZG90TGVzc1Nob3J0VmFsdWUgPSAoc2hvcnRWYWx1ZSArIFwiXCIpLnJlcGxhY2UoXCJhLXogQS1aIDAtOVwiLCBcIlwiKTtcbiAgICAgICAgICAgICAgICBpZiAoZG90TGVzc1Nob3J0VmFsdWUubGVuZ3RoIDw9IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbmV3VmFsdWUgPSBzaG9ydFZhbHVlICsgc3VmZml4ZXNbc3VmZml4TnVtXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3VmFsdWU7XG4gICAgfVxuXG4gICAgaWZOdWxsVW5kZWZpbmVkKGRhdGEpIHtcbiAgICAgICAgaWYgKGRhdGEgPT0gbnVsbCB8fCBkYXRhID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIFwiIFwiO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cblxuICAgIGdldFZhcmlhbmNlT2ZNb3UodmFsdWUxLCB2YWx1ZTIpIHtcbiAgICAgICAgbGV0IHZhcmlhbmNlO1xuICAgICAgICB2YXJpYW5jZSA9IE1hdGguYWJzKHZhbHVlMSAtIHZhbHVlMik7XG4gICAgICAgIHJldHVybiB2YXJpYW5jZTtcbiAgICB9XG5cbiAgICBnZXRWYXJpYW5jZU9mQ291bnQodmFsdWUxLCB2YWx1ZTIpIHtcbiAgICAgICAgbGV0IHZhcmlhbmNlO1xuICAgICAgICB2YXJpYW5jZSA9IE1hdGguYWJzKHZhbHVlMSAtIHZhbHVlMik7XG4gICAgICAgIHJldHVybiB2YXJpYW5jZTtcbiAgICB9XG5cbiAgICBnZXRQZXJjZW50YWdlTW91KHZhbHVlMSwgdmFsdWUyKSB7XG4gICAgICAgIGxldCBwZXJjZW50YWdlVmFsdWU7XG4gICAgICAgIC8vIHZhbHVlMSA9IDQzNDQ1NjkuOTk4NTtcbiAgICAgICAgLy8gdmFsdWUyID0gNjU1ODk3OC45NDQ1O1xuICAgICAgICBpZiAodmFsdWUxIDw9IDApIHtcbiAgICAgICAgICAgIHBlcmNlbnRhZ2VWYWx1ZSA9IFwiTkFcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBwZXJjZW50YWdlID0gKCh2YWx1ZTEgLSB2YWx1ZTIpICogMTAwKSAvIHZhbHVlMTtcbiAgICAgICAgICAgIHBlcmNlbnRhZ2VWYWx1ZSA9IE1hdGguYWJzKHRoaXMucm91bmRPZmZUaWxsVHdvKHBlcmNlbnRhZ2UsIDIpKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBzdG10ICs9IHBlcmNlbnRhZ2UgKyBcIjxpIGNsYXNzID0nZmEgZmEtY2xvY2snPjwvaT5cIjtcblxuICAgICAgICByZXR1cm4gcGVyY2VudGFnZVZhbHVlO1xuICAgIH1cblxuICAgIGdldFBlcmNlbnRhZ2VDb3VudCh2YWx1ZTEsIHZhbHVlMikge1xuICAgICAgICBsZXQgcGVyY2VudGFnZTtcbiAgICAgICAgLy8gdmFsdWUxID0gNDM0NDU2OS45OTg1O1xuICAgICAgICAvLyB2YWx1ZTIgPSA2NTU4OTc4Ljk0NDU7XG4gICAgICAgIGlmICh2YWx1ZTEgPD0gMCkge1xuICAgICAgICAgICAgcGVyY2VudGFnZSArPSBcIk5BXCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZXJjZW50YWdlID0gKCh2YWx1ZTEgLSB2YWx1ZTIpICogMTAwKSAvIHZhbHVlMTtcbiAgICAgICAgfVxuICAgICAgICAvLyBzdG10ICs9IHBlcmNlbnRhZ2UgKyBcIjxpIGNsYXNzID0nZmEgZmEtY2xvY2snPjwvaT5cIjtcbiAgICAgICAgbGV0IHBlcmNlbnRhZ2VWYWx1ZSA9IE1hdGguYWJzKHRoaXMucm91bmRPZmZUaWxsVHdvKHBlcmNlbnRhZ2UsIDIpKTtcbiAgICAgICAgcmV0dXJuIHBlcmNlbnRhZ2VWYWx1ZTtcbiAgICB9XG4gICAgLy8gZm9yIGNoYW5naW5nIHNwYW4gY29sb3IgY29kZVxuICAgIGdldENvbG9yQ29kZVNwYW4oZGF0YSkge1xuICAgICAgICBpZiAoZGF0YSA+PSAtMSAmJiBkYXRhIDw9IDEpIHtcbiAgICAgICAgICAgIGlmIChkYXRhID09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICBNYXRoLmFicyhkYXRhKSArXG4gICAgICAgICAgICAgICAgICAgIFwiIDxpIGNsYXNzPSdmYSBmYS1sZyBmYS1jaGVjay1jaXJjbGUgdGV4dC1ncmVlbi00MDAnPjwvaT5cIlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVmb3JtYXROdW1iZXJXaXRoVGhvdXNhbmRTZXBhcmF0b3IoTWF0aC5hYnMoZGF0YSkpICtcbiAgICAgICAgICAgICAgICAgICAgXCIgPGkgY2xhc3M9J2ZhIGZhLWxnIGZhLWFycm93LWNpcmNsZS11cCB0ZXh0LWdyZWVuLTQwMCc+PC9pPlwiXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChkYXRhIDwgLTEgfHwgZGF0YSA+IDEpIHtcbiAgICAgICAgICAgIGlmIChkYXRhID4gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVmb3JtYXROdW1iZXJXaXRoVGhvdXNhbmRTZXBhcmF0b3IoTWF0aC5hYnMoZGF0YSkpICtcbiAgICAgICAgICAgICAgICAgICAgXCIgPGkgY2xhc3M9J2ZhIGZhLWxnIGZhLWFycm93LWNpcmNsZS11cCB0ZXh0LXJlZC01MDAnPjwvaT5cIlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVmb3JtYXROdW1iZXJXaXRoVGhvdXNhbmRTZXBhcmF0b3IoTWF0aC5hYnMoZGF0YSkpICtcbiAgICAgICAgICAgICAgICAgICAgXCIgPGkgY2xhc3M9J2ZhIGZhLWxnIGZhLWFycm93LWNpcmNsZS1kb3duIHRleHQtcmVkLTUwMCAnPjwvaT5cIlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZGF0YSA9PSBcIk5BXCIgfHwgZGF0YSA9PSBpc05hTihkYXRhKSkge1xuICAgICAgICAgICAgcmV0dXJuIFwiTkFcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgdGhpcy5yZWZvcm1hdE51bWJlcldpdGhUaG91c2FuZFNlcGFyYXRvcihNYXRoLmFicyhkYXRhKSkgK1xuICAgICAgICAgICAgICAgIFwiIDxpIGNsYXNzPSdmYSBmYS1sZyBmYS1hcnJvdy1jaXJjbGUtZG93biB0ZXh0LXJlZC01MDAgJz48L2k+XCJcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBvcGVyYXRvciBjb2xvciBtYXBcbiAgICBnZXRfb3BlcmF0b3JfY29sb3JfY29kZV9tYXAoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBBRkdBVDogXCIjZDFkMmQ0XCIsXG4gICAgICAgICAgICBBRkdBVzogXCIjZjQ3YTIwXCIsXG4gICAgICAgICAgICBBRkdFQTogXCIjYjdjYzg3XCIsXG4gICAgICAgICAgICBBRkdBUjogXCIjZmZjYjA1XCIsXG4gICAgICAgICAgICBBRkdURDogXCIjZmJiNmMyXCIsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZ2V0T3BlcmF0b3JCeUtleSgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIEFGR0FUOiBcIkFGVEVMXCIsXG4gICAgICAgICAgICBBRkdBVzogXCJBV0NDXCIsXG4gICAgICAgICAgICBBRkdFQTogXCJFVElTQUxBVFwiLFxuICAgICAgICAgICAgQUZHQVI6IFwiTVROQUZcIixcbiAgICAgICAgICAgIEFGR1REOiBcIlJPU0hBTlwiLFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0T3BlcmF0b3JCeWxvZ28oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBBRkdBVDogXCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUdRQUFBQkZDQVlBQUFDOEVrUEhBQUFBQVhOU1IwSUIyY2tzZndBQUFBbHdTRmx6QUFBdUl3QUFMaU1CZUtVL2RnQUFEeHRKUkVGVWVKenRYQW1VVk1VVlpSUFpGWkJGa2FVUmQ3YnBMdEVJWWx3dzVMaUZ4QzBSUlFRUm1HblVpTGdRRTR3eEtpNElCbEJFbU9seGlSRlI0eG9qcnJnU0dFWGpGa1ZRRWR3T0hoQkZaY205WGZjek5iLy8vejB6akV6cmRKMXpvYnZxVmRXcnVsV3ZxbDVWVDcxNk9SeTZUUzNyRXB0YTlwMHd1cmIxcWZNQmhIUUZFVnVFc2JXdHowOHlvR04zQXBMQXBZQ0prczBUc2gwQ09yWUY4TEk2ZVZxVWJKNlE3UkJpVXhhUmxObnE1R2VBSm1HeWVVSzJVMERuRGdVMkF5dUJ2Y0xrNmp3aHNhbExHcUxoZXdJbkFCY0NreXFKaWNBd29BL1FPSHM5WmIyQXo0Rk53UEZoY3JsT0NIVHFydmFmeTdVeFNBWnQ2Q2taOW1lbkVKa1dYbCs2aGZjQTVnQWZhZlJ1cVFhK0FFcEphblJEbHJSMDFwSHJ3dVIrQklRY0tkMldBVjFEWkU1eCt1YkFJQm0wczZQWFRpOFQ5L3R2S1hLRGJQdlZ3RVUrL04zcG9QWEFFeUp4QnJBQVdLdTBSVlEyckNHN1h2czg2NXd1MllWQXN4QkY2eDRobmFjdXJvOFBkeXZpSzAyL0ZnRUZOd05la2R3YW1wcHVqbm5DOXliQVNjQm5rbGtPdEk1b3pJa3lXYXVBZlVJVXJYdUU0Sjkyd0RlS3VEZUlEQlU4eU9tY1dZRXlOeXpaUVNiTGt6czVvakVGd0pmQTkyR3pxYTRTTWtwZjFnRnRJeXEvemVtYzBKMFIwbzZJV1ZjSDVlNkxrTnNaS0pQY1pTR0sxa2xDdkJGOWI1YkszNVBjSjFua3VFdjdTTElyczhqT2tkeUNycGhkQVlyV1NVSzgzYzRmczFUdW1iV3lMSEtkZ0hja3U2bk5KVS9YajVBZEtya1ZRQ3hBMFRwSnlISjlHWkdsOGcyU1c1UkZyalB3cmtkSTY0dWZpeUxFTzQ5c0JJNEpTSzhUaE1SOGhIeWlMNmRrcWZ3RHliMmZSVzVmcDh4c0pvdm5rVVdTdlNNZ2ZjOGNKK1EzbFNCa2FEWkNkTTJ3bFpCUFkxbDJSQ3A0dnVSNGFHd2ZJWGRjekc1bktUdS9FbzJhSWRtdnNVdHI3a3NiNkJBU09ZTnJJMENuSzZRYlRYVGdLUnp4NTBubVl5QVJJdE92T29TTWREb25HU0xUS0ZaeE56YXNFbzA2elpFZjZFczcxeGtFUjJjcmEzc0d6ZTZYcEY5WnQ2bExBbDBuU0pzbEdaN2hNczViM2FhVThSdzRxanFFdEhITUZuZFIvYkV6YXVDa053WE9qTm16aFRkcVdsV2lZWEVuendRbm5tdlJVc1ZUeC8yeWxiVzlRc3llM1NiSHl0ZlZlVEduTHh5NTdySHlIV2R4ekhkUVJwNkdzZ0llc1NzcVRZZ3FHQnl6cDNUUEp0NFBUQU51aUZrM3lucWxQUWNNQ01qZlg3SXVaanVFdktHNFZLeDhZMER3OU04dDhrMDVnQkxnTlVjM3oxWGtsNk9sV09iSUxQU2xjK1k4QUt4MlpDWldpUkIxS2c5K0w4YktEMzh1MXFnenU0ZmtIUnVRSncrN3k3d0hhRmxsUXRTeFBHVnp5MGVISTZmdU5VQWhZSUFkSS9JZEJkeVZ4MVp3Rm5Gak1BUm83blZTbFFuSmh4OHc1QW5Kc1pBbkpNZENucEFjQzNsQ2NpemtHaUZtWE9uZXdKMFdxY0RUNzA4NjVDQWgvWUV0RnFtT3RhM1BkZzk1UW5JczVBbkpzWkFuSk1kQ0dDSHg1Qngyemk3cW9GT0JRbUFzOEdzZ0RvUSs4ZWw5MW16a1RlMEltWDJCd2NCd1lDUndITkFYQ0h6WndsQlpRcERlSE9nQkhBNE1BODRDVGdBS29zcjNsZEVPNktkOEk0QXpnVit5M0VReTFUQWlYd3hJQUozMHZSR3dIM0F5VUNSZERnTXFQQnBKakVzMWxNN0hxeTlIU3YrWU9Wc1BlWUlJZ1VCajRIUmdNZkJOZVFkdHhWcmdGZUFNb0tsUDJUYkFST0JKNEJOZ3N5L3ZHdURmd0VHSnd0SXFFeUlpUmdQUEFCOENHMzNsZndrOEN4eHJ4cFZrdU1SVlJpZmdPdUIxWUwwdi95YVZPemxzMENGK05yQU9tQUcwQjZZQnEzMXQvUTRvQXdZcFQzZmdTdUFEMWVIS3JRREdvNzJOTWdpSkowdnJhYlI4Qld3QW5nZG1BbGNBMXdNUEF1K29JMzRMTlBBcHU3K0lZUHFid0R6Z2F1QWFZSUZEOEd0QXQyb1EwbDU1cWRzeTZYTXRjQlh3VDNVVTg2OEMrb1YwNkVDSHZCZUFXY3JQam4wSitGNzZUemJKMG95M3lvaS9UZm1YcUgzck5FQ21pK2g3Z0M4azh6bHdxTWpmb0lFOFIzM0p2SjlLam5XZWxrRUlJbmNHRm9sdEt0blNWU2FlVE5YWENLUDV5ZmdwQWVKMkFNWUFRNENPQllXM3VHazBZNmNaTzB0WWZzYk5ZelpDRXNrUzFrOFRlZ3pRTlQ2dXVFRjVXdG9rL0U2Tll4a3oraGJPeVNBRWNqUXhseHByZGlvOFkrV3NVSWR0MGNnOUlvS1FUZXJ3WVc0NWNhdmp6NTNCOFlVKy85VndHWkI1a2drN1VpUlJibWtRSVhzWU82MitCVEl1bWJZMWlMQ0hwVURHdzRac2hHUUxpV1FwTytOUmxjSFIzelI3cmd3ZER0RHM0U3k1TkNEOXRuSWRTNmNBZ2VzTjRsT08zR1QvNEU3ckN3dUQrS0Vld1VHRWRBRGUwQWkrTW1nV2JHdFFJNmpBWXdGcDI3ekxRdDRMdlJHSE1rSmZZMGJrM3gzNG44cVlHcER1RVVMek96Q29ETW1OY3dqcEZTRzNqeWVYU1lpZDluZWE4Z1g0UEZQSlhVdGxnNGhtK1FzQzBtcUNrRUtWOFJwRzRDN1Z5Ti9SMlBXUFpmd3RJTjBqaE90VTRFTnh5WTJRM0diTTNOQ0JEUjA3aHhLaWdpanduTU11Ri9qYmFVL2pSYVdCTzVjS0ZSVGU2cTFGWEVjbUFiY2F1NEE5QkR3dTI3eE5oR2dtL3dLNEJMZ1orSWV4Qy96anp1aU9KTVRZcmVyWnhpNnd4Y0I4bWRPRnBuejNGVVVJTnplQnozOGtkNmJrMWtiMWw4bEdpSVNhYThxOTV4Q3pSWTBkeFlVeHBQQSt4dHJ3RGI1OG0wWHNaL3EvV29RZ3ZndFFHbEErOGJYS1h4dEZpTEVMN3VLQS9CdVY5ek5UdnAyT0lvU212VU5FUjN1RXJBbVRrVngyUXJ5UXNBYzhidHU0NTE3bktQOEN6TnN1dm9JUE1uYkx1MFd5WE1nT1JSbnQ0MlBuTm5Ea3BsZUhFTVIxTStXbWhQWHdQTUNEWEtlQ3dwSkdqdHlrTUVLTVBaUjVuYzF6d2loanQrcHRDa2JQYmlDWnJzWnVxWE9QRUYvRzF1cGtyMEYzQWVsWGpPajB4cVo4OS9RcUVJOG9aMlkxQ1ptbXRKVkEzNGp5L3hKRUNPdzR0N3NmZW5WRDU0d1g5OHBQNHBmblBDRk9BZU5WQUxmR2h6dU5lRi94RjRibGpSZW11TTE3c0txRTRJRFdESEV2SzYwa05ydzRTci83Z3dqQjl3SE9ERDh1SWovTjdwb2ZFeUY5L0EzRC8zc0NIeWt1OU8rU0dIc0J0YktxaENUc0pxRk1hYUYvY01CWVg1RjNNUFFUY295ajk2RVJaVnpneU5VdUljYjZzZG9raWxKUkJaeXFBbmg0NnErNFhZRzNGSDhqUm5TR09UQzJVK2M2SnE4cWhGQ3ZwNVhHVFVPUWw2Q0pzVHN1cnpOOWhLUzRWbmorcHNEM3lZamZ5eUUrSndoaDRpUEcrb2U0cmR4WGNRUWJOTUtaQ1Z5YzI2UTd6SjVmU2hSUFZ3RVBmejJOUFdSeDlod0xQR1hzWWNyYjRWUjFEWm1vRHVWdWl1dEVYSHJSY1VldjZUeWxQU0xTS3hBU1Q2Yk41WDlVL3NmR2VubTdxd3kyODNTUndaM2xxbHdpNUIwSmNPcXZsb0xFcCtvUU5wYnJRRnRmd2Z2N1JoZTNqKytLUU9iaHpvaUhOdTZNdnEwR0lUeXcvY3RZSHhMMStGTGxyMUI1M0xMKzN0anp4U28vSVNwamdOcmt0VytGMnJaYU92N1hXT2RqYWE0UVFsOFQ5K25jMGRDRHVkUllVL1NtUmpZUFlLZVlnTk43bDVPbWVMNHdPaVdmbHNMTXg4V1lPNnMrcW9QT1NXNVoveFNnM0Q0YTZVQnE1NEIwSGdndmttNnZTN2NsNmlUcVRWOVdTMk85cnRjbkF2eEhpTzl0cklkM3NmS3pIQjZFNmZ6ckVSODlsekpEcEVmRzcxS01QWjh4N1FZZzlDR0dLWisxSlZrSWFldTFtWVFjSDdPL0wrOGNJTmhZd3J1bVIyZXl0RlhQVWNWUlphZEQzN0czZW5uYmExUTN6NXFwaWdHNmNMMW9KOTFhOVJtVDZkV05DajFQbWtRZFd5ay95Mm5LQVpVUCtaQVArWkFQK1pBUE5SemlJUThVZnZKQmUvWXEzNnBWb3g0ZXdIYjN4eGVNbkZuZkZLYnErMlIzQWw0MGpyOUp1NzNMdWEydVFaMjRBd3o5dXkzYk14aDdlSjVlVHdlckUydTRjQjUwTGpiT0dRQ2ZIek0rcHlQT0dhMTFyaG5oT2d2MUNJRmVnTjVPL2s0Nk00VDZvS3FoSjcwUnQvdDA0ak1tdXU5LzBFZDZQSHppakhTMDEyNWp2UTRiK1lIUFhrYlZjR1Y4V2NKVCtsRk9ISytGci9MSk5WSGpCMlVyTTJGZC8zeWRNYVFHOWVTZ2VkZ1h4NGQ4OURZY1VrTjEwREpNMS9WRStrR2VQdFBuTmoraDF5b0plL0cyaFJtZUFNNnRpY3E5RUUvT3JZOUtLL3hHWFNmenlEOEw2OGoreWxnM0RVL1BuYVJ3VTVteDRUV2xKOG82QjNqU0h4OVBwckwrM2NncTFLRm5QcW5POGdUY3drTm9JbG02WTZLb2RPc1BaQlAya0pvbWhLOEl6M2NLb0pPUU40UkRUWURib2ZLS3BLZSt1d2JjbkxhUjlqT2RmTDJNdlZlaFM0V3VGcjd6YXE1SEZuU0YzQzBUeGZ2dTFvbGtDYzBZWHlTT0NXazQweU1mWXhoN0xiMmY4NTErdFdlM2ZrK20yOTVQUlBISjdHNEZ5VlRvSDgrcFhEK2s5ZHBmbjl1Yjh1ZW5ySXQrdFc3OEhpOUt0Mjh6RStpc0crOFVRTWNmSFc3MGhnYTZxQ3VwQ0czaWVzOFdxK05uNlBNaHhyNzlZZ2ZmQk54bnJLUHdUOGJlbDlESlIwTHBiZWI5KytDQ1VjWGU0RGtucEQ0U212azJ0YUlNQjlseXowZG03UHZhaGZ5Y0dKZCszTWIwOTZVWC9WdExwZmVCUUt1Q3d1SnFrMlBzTytrQjNpRG5iU1UrUDVDZU5YbzRoODhiS2hBQ0lkcDAzalZjcnRIemFMd29WYTN0SjBZMFJ3QTlwNmVxTXBjUWprSmVwUmJxOWQ3ZXRxTktweHI3a0prUEdPam1QOHBZcis0RTVhTmIvYnlRQnQ5aEFqeXpQaG1hdlZlOVdlWVNZcXcvaTMzQng5SzA4ZHlCRGRkZzRYcElSK1JoMWVrTGxjL0J4U2V3ZlowNGxzL0hmQjMwZlIzL2Vkd2p4RmhQS3p1UkN4c2ZORDhWOXJxa2trcnd6djB5Zlo2MWxaQmsybVNkb2RGSTR2a205MjFnajBSUmVxU09Vd2Q0OXk3bnFBeDJXT0I2WjZ5Smcxa01IMEI5eDZUZkxmTk4yRHpsS2RwS1NGSDZpZXh1UmhkZitMK1padksxR2lEMFhCK3dEWDNCMmNGcmpjT2R1SjlwSmg2czcrdjVEOTliM2FOUnkwNWFKakk0a2lZWTYwNVBWQkY4aWpsWUhUcFVsZjNaMklmYkI2c3VYcWZTTFUvelJIUEZhMU9hQnFPT0dLL0J3VjFnYjloWWtraVhmbUZnZzVPbGc0eTlBK0U5eGpCalhmSDlWT2FSNm56dTlQaU02UUxwZEtKMEhLaDZEOUJJL29PeGwybThKK0dtNXlFTmtLTWxWOVgrWVBtODUvOVdBNVAxOElVT3QvWjhBOWE1NzVoaXRtOFRsZXFqanVJQ3lqTUpuOGZ6RG9QMi9EcFRmaGZ5aGc5QmNWNjhsMFl6MVZTTjV5NkRhOERiU2w4cUpjL1hvSGpWeWM4NmViUEgrNFl1aWZRRDcvUnpKTnJjd0x2L2dqRWwzdVhXWEJIdDZzSzZPTHQ0eTNnSWRqU05wRk1MWTAyZDIwYWFGWnJ0Q2VvYm1qbmFmejZEZWoxTHU4UGkzaGJCazZXYlZ4L3ZkQTZ6QXlyRkRjZkg5UnpGT0JONnFXTjRWY29MR3UrYWs2ZklIbFVBeStvRTgrUC9xUUliMTgzWWRZS05iQ2hsT0RyYUtLMkh5S3V3WTlLalpPN1ZJLy9rMDE3amJ1UnNZZU5vZnJxcnJuWW0vR0VmRjlldXFwZXk3WVBNZEVGUk1VMWFoeXIyZzRldTBLbHBYMnVPMnpwMU9RZm45RnFhNlRVdzlxRXlHZVUwblJvdm5MdE4yNzdhREVaMzdyV3R4ellGUGJmaEQydTRtRjVjMi9wVU4yQkU4bVRQOVdjbWY2OVIyL3BzVTlCMDUrN3JqcWpmMnVWNkFDbHNSOGE5ZkM2SC93TkF3cm4yL0ZtekxnQUFBQUJKUlU1RXJrSmdnZz09XCIsXG4gICAgICAgICAgICBBRkdBVzogXCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUdRQUFBQ0xDQVlBQUFDWDhEd0RBQUFBQVhOU1IwSUIyY2tzZndBQUFBbHdTRmx6QUFBdUl3QUFMaU1CZUtVL2RnQUFKRjVKUkVGVWVKenRuUWRZRlZmYXgwVk4zTVN4VWtTUUl2YmV1MGFOZlpOdHlaWms5OXR2OTR2R0V0T01xOUhZRzJyc0dzVUdFVVFwaWdWcElpSVdOUGF1Mkh0WExDRnRFejNmLzUxejV0NXo1ODVjTG9pQ2hQTTgvMGZ2ek53cDV6Zi85ejN2dVplNXhZb1Z0YUpXMUlwYVVYdldyZUhLOHhVYnJqajMrL3JoWjhmVlgzNTJjYjJ3TTJGMVE4OHNxTFBzOUtkUWkxcGZueXFSMytkWTZGdVR5QXZGR2tkZThHa2NjV0ZtbzVYbnZ3VVUxaUQ4SEhTV0FRaXJDOVVKUGMwQWhOWCsrdFNCV2lFWlhXcUdaSlRNNy9NdWxLM1pxa3RlemFJdmhqYU51dmc5d0RCQVlZREM0QklWQ0Z6Q29ZU2UwWUF3dUlRQlNGcU40SXdHTllKUHV1VDNOUlNLMWpMbVNva1dNWmZiTmw5MTZadG0wWmNZZ0RCN0lPZFlmUldLblVzSUNBT1FLd0RTdjlyU2srWHkrM3BlNk5acTdkVjZMZGRjaVdnUmN5V3IrZXJMREZBWVhHSU9SZThTcUpZVnltTUFPVkp0eVlsL0JpdytVZVNXbkxSMnNkZEt0VmwvN2VQVzY2NmVBUlFHS0F3dVlRUkZkVW0wQUJJcGdGQXVjUkM2YW9aQXdSbXNldkJKQmlpUEFHUUZWRFcvcjdQQXR3N3hONHExajd2UnB0Mkc2enZhcnIvR0FJVnBRQkM2T0JBRGx6VFV1YVMrQmtTRUxza2xyUHBTUUZseWdnRkladFhGSi80VHNPaDRxZnkrN2dMWE9pWGRkdW1ZZUt2VmF3azMxd0RLejREQzJzWmVWNEhBSmN6T0pRSktFMEJwbkxNRUR5aXFTd2dJQXhBR0lPZXFManorbnYvQ1kwcCs5ME9CYUs4bjM2blFlZU9kd1oyU2JsM3ZtSENMZFlpL3lRZ0lYQUlvVnBlb1VHSUVGQldJZVlKdllKRGdUVnpDd1N3OC9uUFZoY2NpcXdZZHErY2ZkS3g0ZnZkSnZyU3VtKytWNnBKeWQyQ1hUWGVQQUFxRFN4aGN3dUFTUUxuQm9SaTZoSWN1ZllKdmxLTUVMMXl5eE9JU2dnSWR1d2Nvd1ZXRGpsYko3LzU1cnEzYmx2dk51cVptaGdQSzk0RENDQWhjWW9WQ0xvbTNkVW5ydFFhaEs5c0VmOFkrZENIQjE3QW1lTmtsQklRQnlHTUEyZSsvNEdqdnF2T1BGbTYzOU5qMm9GejNyUThXZFV1Ny8wdTNMWmtNUUZqWGxIc01MbUdhU3hDNmJGMUNVRlNYWExOeFNRc25oOEZ5Z3EvdEtIUlpYUUlvUjFuVkJkRDhvNGY5NXg5cGxkLzlsdWV0NTg1dnkvZElmelNveDQ2SDV3R0ZkZDk2bndFS2cwc0VsTHNxRkJ1WGFGQlVsemhJOEhxWE9KUGdiWWZCbGdSZmRaSEZKUllvQVBJZEZPWS83M0F0Nk1WMlRJOGREMXg2N256VXErZXViL2ZnM3llQXducHNmd2dnRDFRZ3Frc0lpdVFTRFFvSFlwdmdOU0NrRms0bWVMbUNyNXRkZ3JkeHlUSE5KUVNGK1g5MTVBNkFqUGFiZC9qVi9PN1hYTFh1V3pOcmQ5OTJmM25QOUlmZndTRk1GUUhaOFpCeGwzQW9YZldoQzBBNkd5UjRZNWRZYTVPbTBqQTQyd1J2TkF3V1VLb2FoeTRDd2dEa0NZRHM4NTk3NkMzZnVZZGVqTm5renZGWFgrMjY2ZFlIM2JiY3k2RFFCSmVvSU9BU0s1VHRHaFRiMEtWM0NVRXhHZ1pUZ20vcGFCanNJTUhYc2FuZ002d0pYZ05pbStBNUZLdExDQW9EbFB0K2N3OHQ5SnR6eUQrLys5dGhhNy9oY3MvT1NUZk9BQWpybG5xWGRVKzdoNDYvcjdwQ2hiRkxjb2tVdXV4Y29nMkRrK3hkWXBUZ3pTcDRVNWZZSmZpVE5xSEw0cElnblV2bVc0QXd1SVFCU0pidm5FT1QvV1lmTERoVC9NMGpNNHEzV25PK2VadjFsNkxieDExOTBqSHhPc0xPVGRZdDVUWnl4RDEwZWlZNjM5WWxQV3hDbHhNSlBwNURhWmZUQkc4eXoxWEhJTUhYQ05ZVmkvb0ViKzhTNXNlaE1BQTU0VHY3NEx2UUsva0tvMFZFaGx2TDZMUFRXcTI1OExEMXVrdm9zQ3Zvdkd2SUFUZlFxWERKNWpzNmx6eVNYR0lOWFhZSlhxdE5oRXM2NmhKOG0xamJlUzZuRS94eWgxUDBSaFc4Y1lMWEFZRkw3Z0RHTXNnclgwQTBERGxVc21uNGliN05JMDZkYUJWOTlrbXJtUE9JNnhmUVNaZlJhVmVaNXBLdTVCSTFkR2t1ZVdpYlMvUUpQdFUrd2V0ZGt1MDhsOEV3dUtIQk1MaU9Qc0VIMjg1em1ZVXVmMnVDSjEwQmxDR0E0Z2NvK1RPbDN5RGtjTk5Hb2NkU21vU2ZaTTFYWnJDV1VXZFlxMVhuR0Z5Q0RyckkybTY0akk2N2hvNkVTNUs1U3loMGNaY1loQzdLSlZybzBseGlrK0J2WjVmZ2YwQ0N2d2lYWEFDVTd4d21lTHNQc2h3bmVEdVhXRVBYRTcrdmpzUUJpR2UrUUtCV0syaXZXNTNGQjJiWER6bjhVOE5sUjFuajVTZFkweFdBRW5HS3RZd0dGSXRMS0hSZFJUSytqczZFU3phUlMrNXdsNWdsZU1rbFJoVzh5VEI0WSt2MTF6ckJKUzlyNTloeTllVVNBTklLUUZZZ3dUODJucUkvYTUvZ0RZYkIxZlR6WEFLSVB3OWRJd0hGNGJBM2E3ai9TMURlRDQycnp0MVZ1dnI4M2Y5Yk0yanZwZHFMOTdPNlN3K3hCbDhmWVhBSmF4SitnaldEUzFwRW5vWkx6Z29vRnhIakVicmlyN0pPaWNJbERoSjh6MndTL092Sk5nbitDVUxYT1FENWU3dTRHeStablRPQUZBZVFMZ0NTQ2lBL09Ec01ybVhtRW11Qy94bFFCZ0dLVFhoQ3h4ZUhXa0tUb1YzUVE0aEJ2MEFYb1Zqby95QlBLUGN3ZkdlbCsvdlAyYmttWU40M3JNYUNQYXpXd24yc3pwSURyRjd3SWFhNkpPeTQxU1VVdWxacm9Vc2srQVJLOE9RUzJ3VGZVM09KS3Z0aHNJbExma0tDbncrWCtEaDcvZ0R5Q29DOEJWMDFIUVk3bUtJUHNLL2dsd0tJSGtaNUtBejZUa0J3cExQUWUxRE9oOGxWcG0ydDR6TnorM0cvMmVsUDRCSUdsekM0aE5WZVJDNDV5QkM2dUV1V1cxMkNFWmV0UzZRRTMwMUw4RnVsQk8rb2dyZTY1QW1ncENEQmR3S1VYSVVBQUtrTUlHTUI1SUZwNk5JbGVMdlo0RVhIMHdIRlZ3ZWpNWFRFQ1JDeWZvUUNvVEpPWDREM2xOUnFWYWFtSGZhWnZvMzV6dHpCNEJLbXVtUytjTWxpNFJLRUx0VWxTUERON0Z4Q0NaNFBnenRKdzJBMWRHa0pYaG9HOTVUbXVTaDBkZVVKL21hWGxIdDlBQ1ZQWWpHQWVFRWI1Tzl6MVErenpuUFZOaDhHUDBZK2VWTUh3d002bFVNWXN1WTRkZEllNDVKS1ZnNU1TUU1VVnVYTHJjeG5CcURNU21ma2ttcGY3V1kxNEpKYWl5aDBjWmRvQ2I0WmhhN0lVOXdscTg5ak9Bb29TUERrRWtydzZqRFlVc0h6Qk8vQUpiZmdrakdBVWpFdlFPaWdGSU5EMmtLcEFQS2prL05jQndERk1xbUl6aXdMYlgwS0dLUW4wTyt5UFdIM2NVazlQQ2R1WWw2Qm01bjMxQzBNb1FzdTJjNzhaNU5MS0hUdDRhRkx1TVNhNEUrcW9hdGxsRWp3YTg1emw4UmVzUjBHeXdsZURJTjdXUlA4VDNCSkhLQjB5V3NRK2dhSFZJUUdBY2c1SlBnbjlSd1ZpMHRQenBUZmk0NThTeVRzcHdIQ2hNUE1QOHQzSGJLcWxOdll4RE1lRTVLWjU2UVU1ajJaWEpMRzFOQTFpNGV1YWwvWkp2ajZ3WWNkSi9qMVdvSy9ybGJ3M0NYNkNsNGRCbThGa0s2b1RWNDJQY0U4Ym5BSXlRTlFoZ0xJWFpNUHNoNGduL1NTMzRkT1RNa0RHSnIrWlhxQ3JpTmkyN2lPU1dUdTR6YXlTZ1l1UVlKblZlZHBDWDRmNDhQZ2cxYVhMRGNZQnErekRvUFZCSjlzbCtBZkFNUVhBSkp2UlJhQWxBQ1E1c2dsaVJnRy82TDdQdGRaaEM0L2JWc1JycHdaVVRtclVOTVRjeDBWUDVpQXVJMU5ZdTdqdVV1OHlDVlRoVXZrQkc4MkRBNDNId1ozU0xDWjUzb01sNnhIUHFuMVhIcmRpUWFIRkFlUVhuREpGV2tZdkFjdXNYeFNpQTU4SXc5aGtBNUJ4aldWNitqNCtRUkVoVUl1bWJDSlZTYVhVSUtmUmdsZXVJU0d3U0xCeThOZ09jR3JMaEhENEZieU1EamgrbU1rK0dTRXJ0OENTb0g4U0JRd3lrQjk0WklMZ0pJc3IwUG5EY2xqSU9jaDQ4R0w2K2lFcFJvUVY4MGxGTG9tYnhZdTJjcGRNcHU3UkUzdzBqQllEVjF3aVRYQjI3b0VDZjRtRXZ4a1ZQRGxuMHZQUG1VRGpMcUEwbDllaHM0YmxjZEFMa0h1aGljQUVMTXRRSVJMTEFsK2lrandjQWtsZUQ0TUZxSExiaGg4M0hhZWEvVzVMRUNaRENqVm4wdFBQc09HenV1ZHgwQXlzc3hHV29Bd1V3WmlsdUI5MUFTdnVVUlU4R2J6WEZHbnR5UEIvd21oNjdtTm5wNWx5K0xWZVY0Q29YckdPSFFEd0hROUVFcndta3U4REliQkRoTDhYU1Q0ZndCS29mdnF2NGo3ZVFWa25PbUJqSURZSi9ndGhnbGVtK2VxdlJDVi9Kd2RhWURpOUNUZ2k5YXkrRnhVWHNENEw5VEE5RUJtUUNqQmUwZ0ozdHRnR0V5aHE5cjBORmI1azFEbS9uN1FUTk9ERklLR1Rxd0ozYzBESVBPeUhFM0htd0tSRW56bFFOc0U3emNybmZsOXVZVjVEWWxrSG4wWE12YytDNWpiKzBFem5sdnY1RU5ESjdwazhXbjBINTRDeG1tb2dzTURZZGhyQ29RUGd6Y3k2enhYbWdyRmE5UjZWbWxnaUFwQzFmdEJ6TDF2MFBUbjFEZjUxdENacGFENXVZUnhGWG96MjRPNGprbVlaZ3BFU3ZDVmtlQXJqNGxqSGg4RVcwSDBDUkl3NEpKK2k2WTloejdKOXlhY01nQjZuQU1ZTk14MWJ2Z1BJRjg2QXFJT2cwZHVZQjZEVmtnZzdHQXc5LzZMcHo3anZpaFFEUjNjRElxQWJtYnhhWFdqNUgwc2kxZjVidko3ZmFidEt3a1pqMFRSNGVaQVJzVXp0OEZSdk5NbEdHN3ZjeGdlVmhqTVk4Q1NLYytsSndwUXkrS2ZxMWZKNGxQek02QklLRlJBYUF1VjFyOEhJSXBEN3hFVXc1Mmk0NmNhaHFyUFk1ajdnS1U2VjFoaGFNN3c0REFReXBaT2Z1WTlrTTlOM05tbVg3Unc0djIvZ1lLZ2ZZNkFUTEdCTVNLV3VYMFVhZ2ZDRElZN2g4RThCZ2IvR29BRVFGdWdONkFjZmNTTTdldEFTUkNERHB1Q0JZUkFDNGhCSzNtSEc4QncxMkQwVzhnOGJKMUJNRmlsRDM4MVFESkZwOTRRZC91Zm9KcFFCUTJTQ0VzS1ZCMzZHN1FTK2xHOEx4c2dvK0lEemNLVGJsaHJGS1l3L0NVWUlhelNSeUdGSG9qdmwzc0NmS2Z0ellTWTFMbWtxMUF5RkFKOUJTMkJZcUdMdXUwMEhZR001L25jK3k4Sk5BV2hoMEVnREdGOHpTcDl2S3p3QTVrS0lGUDNaQUlNSXlnR1lKeVZBeUI5Rmt3MGcrRW13ZENIS1lMaFlZWEJLbjBTK2lzQXNodEFkbWNDQ2xNbHdQamtITXhSeVBocEVtWkFMREEwRUhvWUgwa3dQZzFsbm9QQ0NqK1FLZDhFUUFDeW0zRlp3ZmprekRFT2dVd3dEVk95SzdRRS9tRXc1UXVBQUl4UExEQlk1YytXRjM0Z2szY0YrRTRHa0NuZk1DNTdNRTZHc21NMEJEWThpQzJRSUdNWUJFTExHY1l3bU5mZzhNSVBKQkJBQW5kbEFnd0RHR1lCWStDWWJFS1pReURqYllhMXR0VzNkVmlyZytHcHdSZ2N6cnorczRKNUQxbFo2SUg0VE5vWjRCTzRNOU0zY0NjREdDNFpqSkZqTEhCc2dCeUhqUDhVRGpER3lRV2ZVWTJoRDFPZWtqTzhBYVBLa0pYTVoyakVyd0JJZW9EdnBQUk0vTXQ4VkNnQ2pKT09rY0NZQXdHTWNTWlRJV0pZR3l5TnBLUXdCV2NRRE8raGdQRjVCUE1kRmxub2dWU1ptQjRBcVVCOENZb0JHRCtBOGNzZXpBbmZhZnVNSDBhQWZESFd6Qm1WYkllMTNCazhYM0JuV0dCRU1iL2gwWVVlaVBlRTdRRlFacFdKT3hqQXNDb2FsT3pBMklleUU1QUprSDZMeGhvNXc4TU9ScGdLbzdJUmpDK2ltZitJVllVZWlOZjRiUUZlNDdkbkFnb2pPUXZHSUpTZGdFeUE5Rjg4eHQyOCtyYUJZZXVNU09ZN1BJcjVBMGJWa2F0WXdLalZoUi9JdUswQlVLYlh1RzBNY0pqVFlFVHlseHh6RW1Ec3B1YlZCbWVNdG5kR2lBTVlFUllZZmxZWXJOcVlOWVVlU09XeFd3TXFBd2pFdkZRUm1PMTJZSHdjT0VhQU9Ra3dKa0ErV0RxNmtrR1k4clN0TVRDc0ZUQ0dSU0pmeU02SUlSaXMrdGkxaFI2STU5aTBnTXBqMHpJQmhubEN0bUFNSERQUkZveVAxVEVaZ0dQOHpVVWs3MUVPQ3o1ZVkraGdyQUtNMVFMR1dsWjkzRHBXWS95NlFnK2swcGd0QVZBbXdEQXVRTWtkbUF5NHhnVEloOEVqVldjNGdPRWp3cFFLWTRRdGpCcUFVWFBDZWxaellteWhCK0l4T2pVQXlnUVVwa3FBeVlWalRxSElOUDREVURoanBGSEI1MlV0K0t6T01JRlJhMklzcXoxcFE2RUg0allxTmNBZFFBQ0ZrVFF3bmhJWUp4MERJT2ttUUQ3K2VvUWRERFZuY0JpK0ZoalJMSUJnakRhRXdlb0V4djhLZ0d3T2dESWg1aTZnbUlJWnB3ZWpKWCtDc3VNMG9KUTFQSWpuSjZFakt1bW1RbFFZbjhzdytFZ3FZTFNhdkNVWUd3QWpqdFdkSE0vcVRra285RUJjUjZaVWhlNjVqVXhoN29CaUJxYVNDa1dFTWpzd2NNejQ3YWNCeHdUSW9MQXY1S2tRYThFWHFSVjhwakRxQkhJWTlhWW1zdnBmSmsxNnp2M3ozRnZGRVp0cXU0NUl5UUlVUmlJd2JnN0EyQ1IvV3pCbklPTmZiVUNOTWR4cEdPTk5ZRXpieUJwTVR5NzBYeVd0K0VWeUwrZ0p3RENBWWM2Q3FTU0JFWTRCa0szR1FKQXZocHRNaGZDQ1R3OWprZ1lqUVlLeGlUV2NtWkxhY0ZicWkvR1F5RnkwQ3NNM3VsVDRZbU5vaFMrU0dha2lLZmRnemtMR2YrSUhHTVBrcVJDMStqYUJVZHNHUmhKZ0pHc3dHR0RjYlRSblM2SDlPWWh5dzVKOHlnL2JlS3Y4OEkwQXN0RUtKWGRnQUNUTkdBaGNNY3hTWStpcmI3WGdzeGxKVWZLbWZNRmh6Q0FZbTFtajJhbXMwZHcwMW5qZXRrTDVoV3ZsODhSaVpUOVBuRmwyV0JJck4yeWpLaFhNY0E0bUY0NDVCeG4vV1FMeXhlZSt4bE1oS295YUUyS3R6dEJnVExlRjBaaGdmTFdOTlptLzQySFRoVHU3UGVmK2V1Wk5HWnJRdmN6bmlZOEFoWkhLNmNIazNESG5JR01nY01aUURtTzF6aG5yakoyaHdaaEZNTGFvTUpvQVJ0UDVPMWl6b0hUV2JOR3VyQlpMZHIvUk1uaHZ3WG1NYWk2Yk1pU3VlT2toOFYwQjVGdUlrY29JS0xrRkk0Ykw1MUZrR3YrZE9wTDNVR2RnMUhNRVl3SEIyTW1hTDlyRkFJTzFDdDc3cVBYWCsxZTFEVDNZcXUzeXd5OGttTkwvaWZPR2xwUWVFcGVwRElsbkFNTTBLTTZDY1JES3prUEdRRkI5RDVVbkNXdEtPYU91eFJrYkJZd1VCekMrMFdBd3dHQnRRZyt5ZHNzUHMvWXJqcTN0RUhIOGhmbGowTktmeFJZdlBUaDJZT25CRzI0RENOTUV0N0RjZ0NsdkRPYThxeGtRaktRK01xdStlY0duMWhoV0dITUFZOTVXd05qT1lTd0VqTVhmc0paTDkxaGd0QTBEakhEQVdIbU1kWWc0d2RwSG5meXAvZXBUVXpyRW5LblpZZTNaQXZrbjA4cW42OG9vZzliOVdSbTAvaXlnTUZXRE4zQkpZT0FZRlVxT3dOZ24vMU1BWXp5WFZXM3Myci9Zemt0WnBrSzBnaTliR0MwSVJvaUFBV2UwRHo5Q3p0QmdzQTZyVGpIQVlCM1duanZaTWZiQzI1M2pMam4vcUx0bjNNcDhzcllFVkVmNWRHMDRvSHdQS0F4UVZIRW9lUWpHR3NyMkFJcHh6UVlZQVJabjJGZmZyQUd2TVhRdzBtMmRFYklQTUE1WVlIU0FNOW9EUm9lb0RCa0dBd3dHR0Q5M1RieTZwL3ZHNnoxN2JMcVpyMjRwKy9FYUQyZ0pnTnlGR0tCQTY3ajBZQnc0SnJ0UVpqQmNYbXA2VWhqYUZvY3pEdGxVM3lKTU5kVERtQThZTkpKYXVNc0dScHRsZ0JGMnlBb2prbUJZbmZHYUZRYnJtbkNWZFV1NnhnQWpzMGZxN1RrOTArNVZmbzRNMUZiMm85VWx5MzBVODA3WmoyTU9RazhBaFJFUVRRN0JPSEJNRG5MTXZ4MmVJR0M4WVowS1NiYkFVQXUrT1VqZU9oZ3RER0VjVlhPR0NpTWF6bGdOR0dzQVk5MDUxZ2t3WG8rN3pPQU1CbWNRRE5ZajlRN3J1ZlVlNjduOXdYZTkwaCtONnJYcjIyY2V4c3A5dUFwYTNSbzZCQ2lNSzRZQml0QWFWdFpaTUxsM3pEMkFNZjQ4M1FKa2NrS0plbE9UOXFoaGFvYVlDckZXMzFUdzhScGpJUi9XMnNGWVFUQ09TekJPQ3hqbkFlT2lnSEdOdzBpeHd1aTEvUUhydGZNUnBENTdNYVBIdHZ0djk5aWE2ZmhrYzlFcWZCRGxVdUdENk5ybEIwYXZMRDl3MVE4QXd3QkYxYk1FWTVCam5nRE1QNXc2YVRqanpRYlROOTNSbk5GNGpnWmp1eFhHWXNBSTNzTmFDeGp0cEREVkFURGFXNXh4VmdmRDNobTJNQjZTVXhoZy9OSjl5NzBsM1ZKdTErbWFmQ3RQSG5SV1lVQlVHYWczb0p3SEZBWW9YQ29VUFpnWU96QlBFOHBldFFlekUzTHVqMGJoak9JTloyNStFelhHUTdYR21NZXI3NmE4K3ViTzBHb01GY1poRTJjQXhuckEyQUFZOFFKRzhnMDQ0NWFBa2FsMlBvR3d3cmhQTUZqM0xYZlZaek1DUm1ibnhPdnpYb3U3bXV1ZmdxallQOEtsWXYvSWR5c09pRHdJSUw5QURGQ0VKREFEYmNHVWV3ckhLQ2FPRVdCU0FDVm56dzZETTBvQ1JsODQ0eWFmQ3JGVzN5MlhTakNvNEVQT1FNRUhHQ2Z0dzVTQTBVMXpCc0hZd21IMDJnRVk2WGJPQUl4N0dnejFHWTJ2eFY5NzNDNzJ5dUUyNnk2KzAyYk5oUno5YUlwcnY1WCtidjBpd2x6N1J6d0VGRWFxTUlBVXhheGdvaDJDeVVQSFBBR1VYWUJTQThvUkQwdHJzbUJIbGFaQk96ZllWZC9MTE5VM2hyWEhlWTJod1ZoN2xuV0VNenB2dU1TNnhGOVJSMUlXWitETzc3bE53SkNjMFFQT29BY3NkMC9WbkhHVHdSbnFrN0hieFY1bWJkWmRZbTNvV2NDcnoxMXVGWFdtZDh2STB3N3Q3dEYzeGF2dWZWZk1kZSs3OGx1M3ZpdVpXejlTQklCb3lpMllYT2VZQndEekwwQjUrZ2U1d1JrdWdQRU9ZT3dBakYra3FSQXJqRldBRWFQQnVDREJ1TTVoYkpaaFBCUXdIbkVZOVB4ZUNVWVh3T2lrd3JncVlGd0VqQXVzTlQxNk51b01heEZ4aWg2MHVhZEoyUEYzR2k0N1l2T2RKbzgreTh0VTZoUGV1OUw3NGVjOTNsL0JBRWFWTzBHUndMZytQekEzQUdZV29PVDljeVlCb3pRS3Z1R0FjWTFYMzhlbDZ2czBML2cwR0FtU013Q2paNW9CakIwY2h1eU1MaHM1akE1eFZoaXRDUVk5VERQcXRBYUROVjErbkRVT1BmcWtRY2poN2ZXV0hQeHRRR0JxS1kvZVljMEE1QUNBUElZWW9LaktKekEvUW9rQVV4MVFubDNSMjNiNVlSY2s4QUE0WXlGZy9HQUhJODRLUXgxSmJiNE5HS2d4MFBGR01IcGdYWGQ2U1A4bUFTT0J3MmhMTU5ZQ1JndzU0NXo2Q1BNV0t6TlVHRTBBbzlHeW93d3dHR0N3T292Mi8xQjlWdnArcjgvVzNIZnZIY1k4U0gyV014Vktub0RKY2ZJL0RDaS9CWkRuOXlPVVNPQ2xFS2JlQm93RFJqQzRNOHhnUExEQ0lHZHNNbkNHRFF3S1U0QVJEaGhodGpEb3NZSzFndmF5R3ZOM3M0Qlo2Y3g3VkNLck5DQ0NRK205M0E2TUNrVVBwaCtYYXo4cmxPekJyRElDa3dVb1U4dDhISk4vTTlvZDFwMHIwVEgyd2o4QTR4R2ZDcmx1NDR4ZVNOYTkwdTFoZEJmT29HZkJkOWw0Z3p0akE1eXhYb054WHMwWlNON3FiMTNKTU9vSEgySjFseHdBakgyczVvSzk2dU1GQStidVl2NnowOVZIb3Z0TTI4cThSc1R6RGpkMWpEbVk3Sk8vb1dOV0FrcisvU2FWdm5WSnVPb0dHRE1CNDNhUFZCbkdJM3NZVzZ3d1hnZU1qZ25YV0hzVkJrWlM5RE1YaGpDT3FiOVhZb0d4VU1ENDZoc1ZCajJRMDNjR2gxRmw2aGJtSGJpWmVZNVBaaDVEMWpIM2ZyWmdMSERNUXBua21HeEMyYzhBczczY3dPZ2VnRklnUDBvb0JoaDFBU01SMWZkL0xURG9CMXZVR3NQV0dhOG5hVEN1Mk1Cb1pRUGpoQXFqMFRJQlk3RUdZNC82Tk5TcW1qTTBHRk1FakltYm1NZjRqZXBUOEZ4SEpUQzN6MktZT3pvL04yQk1ISE5OVlAzR2YvUmZrQnFxN1ZLQThFZkEyRzlYOEJHTVpBRUROUVk5RDk0Q2czNElKdG9Lb3lsZ05KYWRZUU1EenBpemsvbk4ybUhqREM4YkdMcG5mNDJJWTI2RFZqTjNnTWdSR052ay96MmdUQUVVUDZoZ3VzS3NBWVlMWUV3RWpQdDhLdVNPcGZwV1lRaG44R0d0Z0lGaGJmTVZnTEVjTUVJRmpLVUgxZWZMMTVKZ1ZMWEEyR1p4aGdYR09NQnc5S2pDMFhETWgxRXFsQnc2Wmpma2wvMlZGL0RXTGZXdUoycU1CYWkrYjRtcEVOWSs5b3FvdnJVYTQ0eFVZM0FZNmtoS2hVRWpxWDNxU0tyYVBGc1k5R1RVS2xOU21kZWtGQldHZTNZd1pJMkVZejVaWlJ2S2V0dUIrUy9BN0FhVTdsQ3VueUJYNEJxcTcrSUlVMTNoakMzdFlxLzgwbGFHRVcwUG8ySElFU3NNT0lNZVoyNERZenFjQVJqZUdvd0pISVpUSVBRYUhzc2QwMGR6ekhMTk1UY0FacXpIKytIUC9ZT3o1OVl3bW5vWjFmY0F3TGhvRDBPdHZxMHdwQnJEQW1QbUR2V3AyajZ5TTU0R2hxeGhBUE5CQkVINUVZb0ZtQmZtR3pKUDFaQXpYQUNqQ21ETUFJeDdXdlhOWVZDWU9tUUhnMzZ6aEdCWW5ER1p3NmcwSVJrd2twNGVCdGRqNUpkOWJoOUhkM2QvTHpSL2Y0bzd2eHBHVWdFbytIYnFwa0owTUhqQko0ZXB5bmtQSTh0MWRPSUExNUh4TCtTWCtmSzhZVmo3QmdxKzlOcUw5djljVTVzS0VUV0dIMVhmZ0tFV2ZKTTNjeGdvK3R6SDVnbU1POUEwMUNwdTJaL2xyNnpWWHJpM0FxcnZpZFhuNzc1SXY1bG9DeU5OTGZncVQ4d3pHRDlBcVhCRjE0b2o0d3ZrYjJFVmlPWTdMcmtZbk9FTkdGK2k0SHRrTXhXaUZuekp2UHArT2hqN2tTdTZRNy9PUEpHYkJsZVVCSXllZ0xFTk1KNVVGdFgzVXpyakVSd3hFU0J5L2ZuOHI3NVZuckNwT0p6eE8xVGZONTB1K0l3ME9tR1o2Nmg0NDE5REsybzViMjZqRTh1NjhoK2N1WklERUQ5QzZVallyMWNjdERxL0w2SHdOZHpseGRIQlRhRWdLRU1rWnFOYTRnYmNrT0k2TXE1dnhXSHJpMFpQejdxaDAwbmxvSHJRbTlBL29YOEJ4TnVBMEFJUXZNc1BYRmswY2lwcVJhMm9GYldpVnRTMHBuUVorU2RvdmFSUTZBK1EzZWZJV1BZWkZBa0ZRNVhFc3BGaTJXTElGWElYcjBrZmlXMCtGSytYUVY2NlkydmJ0cEdXdDRYV0NQM040RHcra041WFV5enJERVdKZFNYRnNqQ3h6UXk2SHJHTjlqNjdYOS9Fc2hMUXY2RkZrTjF2d0dPWkh6UVhHZ1JsMTYrMHIvR2lQeWRwNTJTMFlTK3hnYWJORURPUTNROUhpZzZpZFpsUWdGaVdJcGJkaG53aGYya2ZLOFUyNGVKMUZsUmIydDhvYWR1L1Nzdi9JaTBmWTNBZW9kTDZObUxaQ2ZINmtRVHBCN0dNMXIwSzlaYmVaL2ZBQXl6ckJOMlZ6MTIzZnBiMC90YWkwNXRBazBYZkpFSHpvWmVFRG9odGowREczL2ZGaXVrbUFFaS9TUDkvUWdmVHZYZHRBUWF5WHJ5K0FMbm5Fa2c5NkpKWVA4ZGcvUmRpM1graDZsQ0M2Q2U1RHc5UzUrY0dDTzNvTytta1NRT2hOOFJkUnEramRPOWRsOGRBUnVjaEVPcnczMEUrMG5iWkFzRy81UlIrbDJ0NkQ1b052U1l0MHh4WEdub1hha2ZBcEgxOUMvMzB0RUMraHdaQVU2UWQ5NGRlZ1k2TDEzUkJKYVQzYW5kaFhnRVprMWRBVEs3VkdTQjB2blRIUDNhZ2xicjlVcDdVb3NsaHFLRmlEZjI1QmtLZDgwZm9Qem9nbFB5T1Nzc1U2YjBiQ2lFUTBqNXB1WkY2NmZaYlgxbzNXeXlMZXhaQXdnU1VxOUt5Z2VKQ1NJZkVNZ3AxdzhReU9aa09nVDZYM3J0YmJQT05lUDJqd2tkbDJ2NWlwVzBYU3N1RGNnQmtrZGlua1g1MkFHU0dkRHp0N3I2dThJSE9VTVdhTHlrVTlaRzI3YTI3a1RhS1pZZWZCWkNDcU95QU9DTWpJRWFpME5WSkhDTThoOGZROU5SQS9sZmhJU2lyQU9vQjlIZURhNkI2NkpiQ2g2alo2UTRVTFRyb1gwNGNrMm9NRjRXSDdkeWNNem1yaERqZVRyRnN0eU1nVkl6TlU3aGxHd3FhMWFEYUpxb0Q5WUIrTDE1VC9Id2I2dWpnUFdhaVVWQXZzYzltME44VVBwN1gxdGNUKys0aVh0UFEwbTVHbDVaQlBnclBWOW5KRDNwRnZLKzhFK2ZvS1lEazlObzBWUkRIY2hISHAyVlY2YlVoa0p3MjdLZzVkRlBoT1lLcTJDOFZuaXdwREZUSndYNG9VVDlVK0IzYkhscXE4QmhQQTRWU1lwdFB4YjVQUWQ1NWNnR0ZyU20ySXg2YUh0a3UvaytkMlRnSCs1R3IzTDZLZFdSelRycXJWa3Y3YnZUc3J1b0ZidWlZTXRBNGhZYzVOeEd5Nk82bTBaZlRYMHdXNFlJS3JrQ0ZGMk1VOGxaQWY1SzI4UlA3L2l3bit5NXFSUzN2bTBpTWxEVGx3cStjU0xheWFrbnJLZm5UakttSHRJeVNvTC8wK2pmaWZTOUp5MmdXT0VCMy9GcDBQT20xSXQ3bm90dU9xdUxxMG10UFhlS3NLNWJSdWZsSXk3VHpKMGUvTExZdlpYQjlEUlErS3FLK3FLZzdka214WHQ2ZXBsSitJOVpUeE9nQU5WWEV3RUVzcHhGV0M0VlB2eGcvamRRQUNGWFY2ZEEvcFdWZEZWNGN5Vm9qTHZKajZEeDBEOXBMQnhQdm9kQTFXd2VOM3VjcExhTkp1VDJLTkFXdDhPSGhJZzJBdUlEcmltNmFXdUVqcmtURm12aHBadlV6OFgrNmdXaG8rV2NvUklSV0dqV21RcWVoWTFDR09KYW51T1pyMEdXRlR5SmVFdStubTRHSzRqL3FqbDFCNFVXdHZQMUpjWTNWUkQvY0VmdWs0cktzdVBrV1FEZkVPaW9ZMzNBR0NFMmlQUklYVzE0c280bkZLK0xraXd1NWlEc2pVM1FPM1dVakZGN04wM1pVbVMrVDlsdFQ0WW5aVzd5dXFQRENpRVpZcjB2YmFZT0R2NG5YN2NUcmwzVG5XVkZjWEN1RlQrNVJzWFZXcktzcjFqVVFuVDVic1U3OS9GbHNRd1ZobWpqbkFPZ01nZEVkZ3pxU3BqN2VOVGcyM1lUMURQcVBaaG0rRWpDOXRVNVgrRXpIQlFHZmprM2xRdlpmMmxQNFJPRk1RYnl6QklUdUJnL2R0dlFCVTVMMCtoVnhSNytxQVpFQTF0WUIrVDlvbDhMZFFCL3V5RUEyaXp2STFReUkySmJPa1Q1NDZxYndJdXVSQUU5VEdzbmlUallEUW82aHdqQlFBdUl2bmE4elFCcklONmhZUnpmeWwrTFk4Z1FzOWRVcEFjVDQ5MjhOTHBDb2txVmJpZ3NKbElEUXhkSmMwZ3doaXZWVXZhNFgyMUIxVDNOV2d3bWNBRUlYR1NJVW93RlJ1THVvTTZZcVBOYlNYTmlyRXBDM0ZCN0s2SE9SMXh3QW9VLzRhSzZMNXFjb3RHeFRlTlZObnhCT0ZzZlJBNGtWNXg4aWJySk9Bc2hEc2IrbFFnRk9BSW1SdG45YnJLTWlsOXk1U2VIbHdEc0NHTG4yb0xoeElrVmZPZjdlR0RiNGg3aXpxaWg4TGl0RDdJeUEzQk1BdElrMGJ4MlFmNHNUbytuN3hnSkltamloZDhTMkdwQXFvalBlRXEvcE9KMGtJRytJanFLWjR1RU9nTkJkdDErQTZDT09TUTQvcTFoRGhSNElPWEtzdUo1M0JiUUEwWW4wc2NOZmhGeWRBREpJMnI2QldFZWlCUDgvNGppVVgzcUs1WFNqVWw0YktPRFE4TjY0VWhkdm9BNmtlU0t5RnVVQ0tzUmVVOHhERmhWeVc2WFhCT0srd3FjNlRIT0l3cWRwYU44WHhMRUk0akxST1JxUWx3Vmc3Wk02SXlCVTJXY0tjQzNFWFVoM09zMGdhQjhlMllVc2hlY2NjdFFhY1p5OHpDRXUwdi9wWnFidkdVd1IvU3V2bzV1QlBsOHlmaWFLNkV5NjhGcmlSRWdVRG1JZEFQRVZGeDhpN3BKOTRtNzlqUU1nTlJRZVVvWkt4M2xUNFpPQ3Zob1E4UjRhTFduVCtFWkFhUEJBSVlCR1R4WEZzak9pNDdVaHFGa09JWUQwaVY1bkFZUkdjdVN5UHdoMWs0QlFUdml0RU0yNStRc2dIMG5iMHpWUTN0Z3MrdTJ2Q2c5THROKzN4ZlhTdWRLZ2llYnFhRUN6UVhIZ0VBbzU2M1RMWG9kMmlIOFRGZDE0WEd4REU0eGJCRzI2Njd5ay9ZMlR0cU5xbTBaQzlNMFJpcTkxcFhVMGJxZlBEem9KdUIya2RYOFY3N1A3ZG9iQzZ3VEtINE1VYTFLbHZEUksyb1lHS0JSK3lRbXJvSzVpK2N2aTdxVWhzYmM0aGl6NlhKeWNORmUzbkhKYmN3RktYcjVUZ1AyejZLdWpZdHRKNGp5YkNWQUh4VG9LVithUCtsUEVhRUczVEZ2dUl2NTE5TjVYNVBYYWU1elpsOEU2RjROMVpzZDIwVzJ2ZjYzdHQ1akJ2aTNub2xoSFM3TE1scnVZYlMvdHQ1VEpUVVRGWWNGL0pFZFJLMm9GcnYwLzFBbjFsL2xEYWxBQUFBQUFTVVZPUks1Q1lJST1cIixcbiAgICAgICAgICAgIEFGR0VBOiBcImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBR1FBQUFDUUNBWUFBQUQrNGM1YkFBQUFBWE5TUjBJQjJja3Nmd0FBQUFsd1NGbHpBQUF1SXdBQUxpTUJlS1UvZGdBQUdVQkpSRUZVZUp6dFhRbDRWY1VWUm5HdEN5b3VVQVNrcmExYUpTVHN1NENDcmNwaUZhdTFkUVByQXExV2NHZ3BMdXlCQk1JV0Z0R1FsUVJDZ0xDR0pDekpCUkhRVnF1MkZxdlcxcTFmY1dGVEZPN3IrZC9NVFNZM2QxL2VlNkdaNy9zLzVkMDdjOC9NUDNQbXpKa3preVpOWEtiOHJYTlBKMXhIR0VISUpKUVQzaVljSUJ3alJBZ25DRjhSL2tQNE82R0tVRVJJSlR4TTZFdG9RempUN2ZjYlU1TW9DY0JsaEpHRU1zTFhvdUg5NEF0QjFEekNQWVNyQ1dmRnU2NEpuNmlSTGhROSswQUFKRmpoVzhJL0Nhc0lvd2hYRVU2SmQvMFRLbEdEWEVONE5XUWl6UEFaWVJ2aEthRWk0OTBjOFUzVUFQMk5Sc1d5TFZQVmhXc2ZWK2V1ZWxDZFZYUzNPblA1N2VxTWdxR0VJWkhvZjVmZmRpS3RjTGc2ZThVOTlNNElOWFB0YVBXRlRVK3J1UlhwcWsrQ01FL05KSHcvM20wVDgwU1ZUdExJeUt1Y0hYbCs0M2cxby9nK2RWcnVUOVNKV2IwajN0QW5NaTMzSmpXdDhBNTFYc2xENnBMMVQ2bEViclI4RDZwdFJ6NDNLbHFmOUNNbm4xdFJmOHJmT2lleWFOMlQ2bFJxUk84a1dHUFNzcjRSbEQ5cnhkM3E0blZqMVp6eW1XN0pPU1Rtbkg2RXB2RnV1MUFTVmV4WjlOeVp5Myttb2xlSFJZWVJKbWYzSjdVM1RKMi8raEgxeGMwVDNhaTQ0NFNkaE5HRVp2RnV3OEFTVmViY0Z6WTljMmhLOW9DWUVtR0dLVGszMGp3MFVsMVdOdFVOT1FjSjh3a1h4N3M5ZmFjRnF4OGRpVjRhYnlLTWtKby9PRHB5c3NxbU9DVUdpOVI4UWpmQ2FmRnVXOWVwZW05Uzh4bDV2VjZOZDhQYkFmTU8xT2xTTWpSeUsyYzVWV2ViQ01tRVUrUGR6bzZTc3E5OWswM1Z5UXVuNWZZS2JRSVBBekFJWUxIUnFIR2kwcjRoYkJibWZHSVRRNFMwTGFuc2VERGVEZXdIR1N2dkpVUGdPYWR6elRyQ3RmRnVkOE9FMFVHWW1MdXhjNE1hSFdhQWxRWnozY0g2QnVRVkU3b20xSWdoTXM0bnZMWjBUZGVUZ2hDWkdLeHRIQkJ6SkovNzZyNGJieTZpaWNqb1QxQXppN3VmVklSb2dIZGh3WnBSVG9qNW5EQWVwbis4Q1JsSGlNeGQwZU5FdkJzdlRFek5IVVFqWm93S0Q0UU5NZThUQnNhVGtPVWdaRTVSekFsUkp5L0Q2aHltYk8rWWpjNXBlVDlWRjVZKzRXVEVWQkRhNThmYVYwWms3QXliRUdyd3lNejhudXJpMWQzVVBESWVWbFYwVkV1M3A2Z2JxbElpR3ducmQ2U29hN1oyVkZkczZhVG1idWlpTHFIM01ncDdxTk56ZTBVbWhTUVRYOHRNc0JzeDJQR0UrLzg3c1NUa1BSQXliMlh3Y3dnYWRObTZMdXBtSlZtdDJ0cytndSs0d2ZZOVNSSGtYVm5lS1VwU2FsN1BRR1hFSWhQZVp3Zm04ajdDVDJKRnlBRlVQbk5WdDhBcWkxNjlrTXJic3JPRGF4S3NzSFYza3JxYVJ0TFN0VjNWSUJleGs3TUhST2FXak1TZWpSVXBod25qQ09lRVRjZ1JWQmFWRElvTVdtU3FRUkpoaEdvYWNWQjFpMHU2cVZDSlFjZytOV2RnWkZIcDcreEdDemJLT29SSnlGRlVNSWQwdCsrZVJnMVRYTkVwZERMMHFIaXBnNXE5dm90SzgxUWd4S1FYM2FsbWxVMjJJdVpMTVZyT0NJT1F6MUVwVEtoK0s1Sy9xWFBNeVpDeGcrWWNkSWowNWY3bm1rbkxybzhzV1BPWW5UVldTV2dWTkNIL1FtVmc5ZmdaK3JPVzkxRFJJUEVrcEE0eFpBaEFKbi9FOUluR0NXUnRubVExV3Q0bERBak1QS1lLdktZTmU2OFRKZWFOZFVSb3ZJblFBL01NUnN4MG53WUFyTEY1SmIrMklnV0JnZU9ESXFSTXE4RHNRbTg5aXRZd2FyVUhzemFXSXdaejVMU2NYcjdVV05yeTJ6RmFyRlJZYnI3Zm5Vb1MrRVZOY05qNlhnUXRpUFBjNFJUbHV6cW9XRy81V1d4aVIzWEorbkZXQzhvOWhKWitDSm1nQ2J4OHN6Y1hQQlp2OFc1c3A4QklobG1PUmFzZkZUWjc1VDAwNFp2dVdNSWYxc3NySVhkcXdtNm9TblpOeUpUc1hnMkdEQmxRWTM0WHcvQ0xJVUxIaEpTam1PeTlFTktlY0J4Q1Z1MXBIMTFMdUowLzR0MjRma1lMM0RKKzVoWkU2Q3haejh4VUdJTDY3czEzRTZOTWdqVW52S01KbVZIa2JtS0h3OUJEWXlEUHA0UmRoQUpDQm1FS0lZMndsTENlOEtiQzNUcWhFNzZwT2htTFNsOVJtUXZXUEdwbWhlR2t3QWpIcEpCQXB4QldhTUpoeGV0R0dEZ1BYVlQrWTlINFhSVytVMmtsMTZtaXMzUW1qQllrSFE2TGxHMHZKMFhtKzNLdzlva2czTlprSVlrQWk0ZmRqSkp4bW1BYnFsSmNDUVYzdW9NS2YwUElJVnpnV0Noak9jOGpQRUhZR3dZcFZUU3ZMUFpvYVdwSUw3elRqQlNFSTkzdHRLSzlaY0hjdUxrZG1Mei9KYmlmM094bFRpSE1GV290dUhsbG4zKy9YbXJCRUpyc3A1bk5LVU9kVk80U3doZWFVRzU2aVEwaDhKTU5DNW9NbmV3d1NoWXB3bXNkQ0NsNzNhdHVQWEE4d3lSNC9DT0N1YTRXbGNJOHNsTVRDSDZnQUZUV0NjSmRpc1U4RVRBeFB5WXNJWHdiRkRHWUgvMlFnZ0FMR2lsR2svMEhoTFoyRlVyVEJDbmYyVUYxYXY2aUo1bFVhQWNoZVBlMGRSMU9JOXhCZUNNSVFyQldlWDZOdnpsbFJzSFFTRTVGbXRGSVdXVnBlWkVBTjJtOUMzclVxYWNVRzFzR2xmbWFjR01NdWREWDVVekNOREZLZlUvMGJwY0Nla3pQdThWc056TFZxaEl3UTJ2V0kwNTFLTFpxRFNwU1JZajdBUnFTNFdiQ2gzNUpLVk9TMVJsNS9qYS8wb3Z1SXVzcnc4Z2NUckdxUUpZbXhCWlNXMDcyUnpLTVYrb3NodTF1bVVpV1ZnVEZMeW1yS3p2NjN2VEtXUGtyby9rRVI4T05qNFBUaCsvUkJJQ2w0VVJ0cGVZWityTDZ4YmpkTFJQSmN4R2gwZzhoVU9QelZ2aU56T2tUNGNGNjlmWlNualFUL0ZKRmNsVXNjNmEyakVKOFdzUzR6VzBUVkNpaHhBOHBjTDY2OWZYcGdRZ1hBOHNMcHJEeFVUejY4RDVOQUVSMU9QbEkyYzQ2N25jNEtoTW5tbHhLQ2wvcGwvc1pKVUZFNStBMG1NRmhvMGZNaEo0b0MrQmtXeGV4VXBMZ0IyUGN6cTRTeWRlTThLcFhValpXSi92YTROS3dZSFU5WnlRdWFEamZTT0FyRmNsY2RMS0xxSXMyU1doQ2tFakdqb1JqWGdpQmVrNHI4Qi9WQXRXVnZXVzZUQXIrZjVDWndIczBBUkM4WUZmNGtyb3UrRU14Ymw5UGllUWM2M1dVQkJWVU9JdE1ZZDBvTVE1ZFVhUnRYU0ROWnE4QTFwajAvckVZdDYybnBQQlZ2YWNWZlJBeGJCeDlvbGVWU0lTOGJpWnNKMWx0MmZsMHB1YjBpbXpiWFNjbXEwRWNReVk1SC9SQ1NEU0dMUkJDZWtmbWxZeVVDZm5XVE5DekNQczFBWnpzdGV2aXNpNktjZHQ2U2dwZm4zenFlbUt2U282ZWF3bUNFT3pMeTI0VksySG4xRXhrZTVJaU0yelVsbTduc01IYzJFT3lacm9sQk11Qm9BSzhvYlo0V0pFOUlWY1J2bktxdGhCa0p3bmRQWVp0Nml1UnJJUGNFbEpjNGQrTkltTk84WDJPQ01ISzloVk5DRGpZckZhcDBYbms1WnA1eEg1WExFRVNSclBpY2cvRjcrYVZIb2dmdGlWRUNEdGVFd0tMeERrMmJtaHBIdmxOak5yVGQxSzR1K2dMcDJUQXgrYzE1TmEwTStjT2lnaFA4TWQyd2liSndtQUJhRld3dEhzNE0wYnQ2VHVSckJjcjRraUdFMnkyMFJSZU1DWDdCdTNHdmRWT0JINUxFNlppVndkTFF1QU5GZSt1alVGYkJwSkkxallLMzFDekh4MkVKVDUzRUcwSXVjdUp3Sk5sb1RJc2h1c1VNZ1YzN0VrQ0tRaHlheWhya2I1T1J3ZDhkc0ZaVi9MOE93aWhRL3RNUGI0NmdWdksxbGFKelVZTlZyRkNKLzg0QnUzcE81R2NzNXlRc1pVV3ZxaytBclN0UUpNNndvTis2a2JvTFpwZzJQaEhnTFZaNFl0S29uNHQ0T2NodG1NZ2lXUzhrUENSSFJtb00rb1ZCaG1ja0NIcmlaRFQzUWgrdnl5Z1Zkd1dtYjlxTlg5dmRvaHRHVWhTZUJTa0pSbnc3aTRvN2g0S0VVQjZRYzhqeGVXZDNCMWRVUGkrOU1FYVhXcWp0alpXUlRlc0VFaWRzRGRUazJ5WEVUNnhVMU4rUTB1dGdETXFHNnFTRWJQc2JrTlA0WUYwbXpSQnQ5TUNjSnFGUHMzbDVpL21rVXREYWs5ZlNlRmhRcnV0eUtoOHFZTkt2VGUwa1lGdzNUSiswS21uMTBvTVU2VDk5aGRMemZjRTV0YWF2N0c1anNKRklwbE9KN3hnUlFidVl2Rnp3c29PYVVTMElHT0ZaeTFDR2M4bS9GTVRHbWNxekQ1SWszNzBPYjAzTCtEMjlKVklublBra2E0SHRoRENuTHlCaFZSK0ZUOCtqcjBZZjM4TmdncVlMMDkyNlJaYm1ZZ2dGd1FtUkFRS3lkRk5NZGxMaHhWVlJPYTZsUm9PWXI0b0xLdnhaQ0I0NzVvZ0t0VmZyb2lWQnhqK0htRnQvVEtBOXZRak0xVFV3NHJCYWx5N0w4WC9CUVBtd0VJU0I0SEtkOVZjeEFNek96bW95bUhiODJPdFFsWWJWeEJFaEFkVkJ2SnhiL0oyVUhqUWQ3MFlYK3o2K1QwaWJRZDB5clhiVXVRei9POFJyZ3U2a3VseXhhdzJyc1RaRVNDbUcxWml2a05jUUwzSUVvd0lmMGZYN0lFMktkcFM3eEtlYXBqYVlWVDJDcm5IRlZpY2JZY3EyTTczU0piR1lrMGlKdTNIQ1ArUUd3TXl3S1VUdE50Y3J4RXc0dUJhMHQxcThSbmg5MHFZUnpNVWNUOEtBUFBOU2xBTVdiRW02UkdpUEZDbHR4SXFaTk9jMWhMUkRwTWU0aHdCaXhMbjNlRjRySzV2TUNBS3RIZFk5WlliWUx6OFlhc2p4Wm0xeHhVUTZ4WG8zWVVLRDhhNFQrSFI3YXBtTWFGeGNPMHRHaXNzSXVEMUxpenJwT0xTSGdQTERjYzY3ZzkxVk9nYUFwRi94elVCWHJBSUhNTm1EbnFxYURBRXAvbU8rMVg0V1paUkNuZlBST1dBQVlFTk1veUdNRnprQUc0VmVuNU5WeFU3b3laWFVVRTlUVlc0aHp5SXBuYmNJREFsYS9iYlMyMmlHN0dxRis5aTdrSHNzS3ZEUEFxL0RyMEZZVGlobVBBVjFrSFl2Y3ZkMkNXMHVRRVdHQ1pveUY5YTExcVNnYnBoRTI4TUlYNlhNQ3VTcHpUcTI4b3hkOGtqQUdKRFZiSk1DaXkxMWxhOVNPSCtwbllLdjR0bEllRUQ1SWVLd0FROW4xVFM1SkJVRXM2ODRDNUhUTkJTNElZZXg0VWF4a2l0SHlRZDY2VHdhSTJhalN1N2VGYzQ2blRSamZBZWIxVjQvTmNmQ0V5TW5zVUtQekx3UHVFWWVpWGNNTGpQRjBFV1laR0Fhd0VSVFFLejJPWm1QS3l5WnlqOE5vcTRIOXVyU2NLeStZc21LS3dwdTBwbnJ1cXVpdm5FZWcrQ0dnUnFNSnRJd09RWjF1UU1WYWVSc04xOEpBQzRpV0s3bUtndmorbjg0Q2FSWUttYTBOdTQyckp0QktpdkxLR1Q0ZUlHTmxTbG5NQkNDc1lCQ0FoclVzWk9KeUwxNGMybDBlcmtTaENjM1lmYjVaSjR0N1dqUklMMmtTdmcvd3hlNEFSRVIwSFd1aTdSRHVEZ2trN2NCckZicU5EckVuWWttQ1dodG1xT0hjUGlpVGNKT1BHRm85clkxYXcwWGlQbzhiVVlDUThwUENRb1lYYzVIU1V4d1VVcjUrUndUOURBT2dkSHM5RVo4SDJidVVBRExxekI1dEFEaE84bDFPVHNOMUZsK21rVlJVeFdXUHBmUHhkZ0l3bWp3TVZkd2JpZmVJSEM5MFVhUk15WXA2Unc5MFhOVFR3TFF2aExQZG9vd0tZWExDSUhWOUpDVldIZm9aVHdHOEsxRFc0KzhKTVV2cDZ3OWY2NkpRSGU0anhTUmJqZTFjRUlnS3NkaDR5d2pobW94SFBWSE85RWxYOVdheGluWjl2TlNNQUt2S2lzRS83VWhaT1JnTk5QK2NJMHhlbmhtTjQrbExCSjlNamFlY1FsRVh3a2RJYWJ3bTRrNFBsZkZYN3FxZTlKTlJrSG1SUWVkRllUU0RmTGdiTVBaNzB4SjVSWlg4S01aLzhtckZTNG03M04vOVZjNERVcC9MUlZUVVNIbVRzZUtnbitLTnlWYTJPZUlxS3dVSkNRRUZFckRTNVJ3ejJqTmFqZXI0VW92YXgxWGFPandXSmVlRnZoWG1Db3YvaDdUeHQ2b2thOFVXdGM3RlZBSFdHdEFCK1ZCUWxZb0dVVGVqU3Fvb0NUd2plUURqa3dUelVTY051Yjh4RDh4dVF1aVhua2RSTVNzQ24xamxCclY4ZGIxditiUkkwOVUwY0UvdUFZTGcwYm9BUWM0TkNZSENTRjM1MkwxZktmeFFTZDBxaVdUdExFeGsrd2V0YUowREEya1JwNm9vWStsL0FMd2g4Tm5sMURLQ0I4UmJneUh2STVUU1RmYVlSdWhCeEN1SDh0MUU4aTRVdzNoTkRyQ1g4blJBaFpCcytmRjg4aURZQ1FQTUp4d2tlSlRzakRCTU1KbjM3L2dkVGdSb1FzYTBDRXZDWGtURnhDU0xBTENmK0I2akY1bnRDRTBEZEhpbEU2Z1hBZUlVMzh1N1BCdXcyQ2tEdUVrSVpuMmhPWkVQcmUrUVJWZlBzVndnT1NMSGNhdk44Z0NIbEtDTG5VNUhraUUzS1I5TzJ0aEVla2Z3OHhlTDlCRVBLZ0VCSldVbXVENTRsTXlObUVaMkg5Q1d1dmsvajNiMkVaR3J6ZklBaTVXbGdlRUhTV3dmT0VKY1J0Q3BVUUt2QlVNYUZsaWg1eUtTRlYvUHRtRitXY1FYaERDUG9ab1pYdWVjd0lvZnhOeE1UY1d2VDRGRUo3d21YTVlsRnFVazY5cUphd0NXbEJPQ1ErOERyaFYxTERQT3V5clBGUzNsUzU4bUVUUW5uT0lpUVJ4aEMyRVQ0UjZqTWk0UXZDUStpRURzcUQxZmdId2kwR3owSWxwQlhocVBqQVM0UVJVZ1dNLy9TQ2VWbVhTWTF3bVBCRDZWa29oTkM3YlFtVENXOFRUdWdJTU1MWGhPdHR5dXhIK0ZTOGY3dkI4MUFKYVVhWVRwaEI2TUs0U3lDZGNYdmMxS3RMejVvUzZ0M3RRYjh0bHlxZkp2MGVLQ0dNdTJHZUpoeXhhSHdROUNYaFc5M3ZsbnFMbm8rVzNyM040SG5pVE9xQ2lKOFQzaVRzTjNqK0k5RUxJZkJCUW5QeHUweklRb044cG9UUXYrOGpkQlgvRDl4SytJZXVrVUVNVk5YdkNUZUlrZDlVNUlINitaUDBicnBOSGNNakJMMWNWaDErRStOenpvZENvSHFFaUhkV1N4VjZUdngycGZUYkRJTThWb1RBNk5qRHVIbDZDNnM3TjN3anZ0ZWJXZnZTSmlRS0lUY1R4cnJLWkYwZWV0NEJHMEw2c1ZwOURvT2hPZVBxVUt2azR3WjU3RVlJVnRKd1ozd212ZmMrNFNZcklxUXlmcGNvaEV3aWxMcktaRjJlRTBKZzhid2hWUW85L0JmU3YrdGR6dXlBa0FpcmRXOW9aRnpyUW02dmhBdzNlTzZMa0dMR25YNisvcGl3Vko0dEllSzl1NlJLVlJMV1NmK3U5NWN4SFJLaUFaTzBxMHRmZkJBU3JDK0xNbXdSUFN1UVB3N3BnaERvKzcreVdsTlRtK2ovelF3V1p5NEpjZjJuL0JLSmtMVWk4MlludXRaQmVZNElFZStPMFRVa3NOamtYYWVFd0l4MUhXU1JTSVNrU3ZwM21wZks2TXB6UXdqY01FZWx5a0hWR0Y1cDVJS1FsUjdsVGhoQ2VyTzZrK0hIakM4Q1lUNWU3d0YzaUY3cWhCRDR0K1QxUW9IRnU5blNlM0JaakpDUUt6MWJxM3ZtRkVWU0dTdHM2amhYZWpmd1NSMGI4cVhTQjRMRUt4YmZ4UnlTTDcyTFVXVzZIcUpuQzBLUzBTOEdCRXFJS0FEdWtiS0FCY1dvKzYzSjk3RHUyQ3E5QzdWMXE0Mk0zVm50eEo4b2dIK3NYckM0YjBKRUlWaXhZeE1KUTNlYlQyd2czRTg0MCtBN0Z6UGUyeFdCYXNKUVp1UDJwdWVuTUs1R01aZHMxR0cvYUFBUXRzWGd1Ui9BSEMvVkFXb1JhdDN3OWp6NnZaQ3dXN1REMlo0SWFjaUpjV01FaEpUWUVkdVlZcERFcUliYTZ4QnZXUnBUa3lnaDBPVkxXQURycU1ia016SHVYUzVuQWJsK0dwUFBKQWhwakxyWEVqVkdTOEtqak1kZC9jRGlQZXcwd2xYaWF0czNyTVQ0UnRxOWpPOStqZzY0N0w2RXNZVFkzL1JOSDUwbzJlV0RUZDVCNU1wZnhEc0o4UWVOUlVjNkxHUlNBaXozVE1JN290eVhneXJYalFCekhSQnlPdUU5OGM2WHNaYlJLSkVjYlZqdFFqTklRczVoZkVHWTBJUkFQU3dpckNROEVHc1pqVktESVlSeDN4YUVSUkNaWlh3U1BmOHVxK3Ywdzg3Zjl3anRDR2ZvM2oxVks5ZWtMT0FTa2Q4SWJZemtFZVcyTThtRDM4Mk9QNWdTd3JoWDRBb0xXUXpkSVl6dmhGN0xha09FL2l6bGFXV1V4NnhoRVhVeGl2RzRLemxBQUpFYWNCOE1OMmpnaGN6YXp3TXZibHVwZ3B1TjVoRHg3RkZKNzFvQlpad3I1WVczdU53bUQxejZPeG5mVzdjbFJCQzgxcWJNNDZMTUlVeXNmVVFiZm1TVGI0b1RNdUJPZnMrbUlEZ0s0ZE81UU1xMzBTWVBWczd0eGJ1blNkL1FFekthMVhYLzJ6bnpMcEx5UWoyODVUQXY1TGxOeW10R0NHUjl4V0daeUQ5WTVMdWMxWS92MGlQUGpvd2tIYXR3OUdHakJwRW9jT1NOSS94TmVsNGk5UWlFN1R3dWVvcjJISTYvcHdRR3N0cTRKM2xTUHlaOUgzUExKK0ozUktIa1NQbjFnTW1NcUhOOUhmRGJXSk04Q0YwdGxBaC9sWWsxaXhraFVydU1zU2d6bDlWR3piekd1S3BDdnNHTXh6OGZGTTgra1BJOWdXOWFrWUhHMEx5a0tOendyejZMankyVkduMlk3cmxiSzBzbTVDb3BMenkvdnUrS04vbCtzZmdHWXJUYWlkOThUZXFNSDBEVjJ1NGE2WGR2azdwZ1UydU1US3ZHb0djWFNCOVpwWHZtaDVET1V0NFN4OEs3VEt6dTVsWlA4WnRmUXVaSlpRNlVmdmRNaU5icklaVGxYOFZoUEhSZm0zVHgzNmJTTXorRVhDN2xSZVE1UWxBdjhUdFNoUHBBYkMrc3JGR1NDZ0Z1RU8rNElrU1VpY2FHOWZWclZqY2diNWowbm1kQ1hoS1ovaVVLYVNsNkxDd0hXRDJJR004aVZJaDN0SS92WTVKWDFTY2h3R1lwdjBZTUp1bzFoS21FWHhLU21YVmdkenZSU0JqcG14Z1B3a09qSE5PVjdaZ1FVZWFEb2t4c05NSFQ4Q0V6M3JXVWpRWFBoR2hud3FFRGp4dDh4TXlxR0tRcnh6TWg0dG5ab3NKT3JLUTVoR1pTWGxoRTA1bjlNUVBaK3JFa2hQRzU5V21YWlE2Vzhuc201RTNkQjBESzU0d0hxcUdIWVdUZ0FQeE14aTBPUkpQVXUvSE5MeUhpT2RZaW1PQkhpTyt0Wjl5NmcxclFtOFNWNG4za1M1T2VvNEYyRVdZeHJxWnVJM1JsL0V4S3VndENucEhJT0M3S1JFZUFlZjR6eHAya0xYVmxCa0pJaGNqMFg4S05oTzh6cnIvUlk5MlU0NXNRa3p4WW9DRVk0anJHVmRjQjZUc2c3enlwNHFvZ3dYRHVjVW9JNDQ3QmQxbXRSUVp6MWZEeXpUQUltYUUxRU1Iekg2Z1BpeEJkZm9CSjN4a2lPcENtYWhFeFkzWFVZSTVEUW1Ca2FKNktUV1lFRzVRWkNDRjlwUUt4SisxcGt5Y1doSWd5UmtyZkdjcnFybUVNdzArbHZCWE1HU0d3b0xTNVlabE5tV3VONnUySEVHQ0hWQ2dXVHo4MEc2SVc1V1JJWll3MGVjZnZDRUhQbFgxV1VHTlFaNW9hUS9TK29mT084WGxFTmxxc0NEbGZha3pJMjg2a3pDUlcxOXJTRTZJZFdNSTg2UHpDWjhiUGpzc21MVXhPK0tnUU1KQnBndUdzcnRuN1J5ay9Lb0dUU05Ebk9LM2JRcnhqWnZaaSszV3lHR1ZHd09JTDN1UjNwVy9nLzV1S0RsVWcvWTdKZDVqb1ZHMFpQK2I4R09QblJHU2p3RzVTWHl5OUN4TWZ4c0dQeFB2dzVPS1U3bjVkbVRJaHNQemVGci9ET0VCWTZwT01MeVg2TTROajFIcFM4TEVxNXR6QmgxN1pYTXFQM3ZxcHlidWxOb1E4NS9DYkdtQUI5cGZ5WHl3cUxMK0RSamltcTQvc0xMUWpwQm1ydTZWZ1ZxWjg0S2lPcXJhb0Y5UmhIZGVUR1Ntd1dOQ2pTMFVQUkxEMFFSTWdHTHVGbEJjbWFCOHBMOTQ1S3JCRDZqWDdoVUNIcGJ4VHhXOVd3SkUzbkkvSEJoY08rZXRsaDRyQWlJVDYxYlprSStMN2lCNkVzL1J5NmZzRFJMN1dyUFlFN2c1ZG1iQTAwYU1yV2UwWmZRQVQvbDdHbmE0Z0ZFc0hXR08zR01nMFRyd0xkWHBFYXBQN3RmZitCN09kVWQ2S1ZNSzBBQUFBQUVsRlRrU3VRbUNDXCIsXG4gICAgICAgICAgICBBRkdBUjogXCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUdRQUFBQkxDQU1BQUFDeHh0S0ZBQUFBQVhOU1IwSUIyY2tzZndBQUFBbHdTRmx6QUFBdUl3QUFMaU1CZUtVL2RnQUFBcnRRVEZSRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRndOQXJnQUFBT2wwVWs1VEFCYzJVV2gzZ1lpT2tJbUNlR3BVT0JzQkRERmZsTDdjOS8vNDM4R1paRFVQSGx5bjIvejlyV01qQ0QrYjVQYnE0TmpUMGVuMXBFY0xBanVNL3FLRVowUW1Da0dmNGU1REJCQzFoazRUU2JEZGJoWVVmUFA1Z0RRdGVidHYrM0l2QndZcGE3cmplaEpHeXV1Uk9Ra3k1VlB5aFNIdHZab2RpeWd1MTlBNnd6emlEcFBzTXdNZ0JheHNaakFpUWxza1d0cldUWmRWZlhiRW5lYXk1L285U3pkSXVDcHdzOGwxdDhaL2xXSVI4ZEljTE85MG1GWVljUTNadkt2UHNaeU54VkNoSlY1QVYvQk02SzRaV1dHbUh4ckhvQlZLSjZWUDNzaVBmc0RWcjdiVXk4NVlsbDJxbzJtM2RLK2ZBQUFGUFVsRVFWUjRuTzNZZjFCVVJSd0E4TytpcFUwY0NYRXlnQ1Y0amlrSWpPaVVJQ3FjT0lOQjhYTlNCbFIralNERXIxSUpGSkFBQllrT0tXNUNTd2drRGtmb0dnSXFFQmdFcVhGTWc4VHB4OEVWVXNaaFJGNlRZbnJ0ZTNmQXZjZmVjY2MxL3RIYy9zSGJ0N3UzbjkzM1k5OStRZkFJRWpJaVJzU0lHQkVqWWtTbVcwNGxVSmlvY3VQL0hXSXgxYmtHVm1vb1lrLzFJdGZhaFBPWEtVSzN0RTVLQytLQSt4OWpsSEJWbDBzeGFvMXVNbXBzOFJYOFVtL0VEYUY3STZvOGIyS2NuaEZxVngrQ3d1YUhXMXY2WFA2V3FBcWNycnFpei9SQmRseTMvRlUxeEtXNDgwYU5Zd1N3Yzc3Z1BhaWE4QXNJTmVpS0JDUFVUUjAzWDlxRVB0ZnBDUXBGcUY5R2QzZjdpVDkwUVN4ZWJEWEJCKzhPUGtLVnVnaDBpc1FUYmxiZ2pCOUM1WE1pY2FnZlgrVkEvSnQzZEJhVUtjS3NQTzRjUGxwdktkR09iUHphQlQ4MnV4QXExbE5RcGlYL3hOWGdQZ01IVzdRZzlpRzlFdkMyUm9Yekl1aiswcXJ3UlF0WWNsd2prb0hPQUVTamQzVmRMb2hwNy9MVEFHdmRjelFnWGx2TGdUZnBtMjBJZ1ZNaXQxb084ZWdJRVFsYWN3YTRheDBQRzJnQW1EdTdpc0F5TklPQUhFY25BU1VYcUYrcUNJYytHTHhFWjR1K0FaQUVYNXVwVy9mNmdsQnd6YVdhQzY2QTgwQ2xPbFBTMHcwTFZrMHZFRE9JcGJtY00zeUVNWThkOWgvREd5VkRPTWNQd0hjeXlmVFlUTjNoVjJPYXdEUWxBV2RUNm1EcGhKUXhHV0Z2R3k5cy95ekVJcnNBc2d1WVRTa0VqbzVoK0xWYUlDR1E4MTB4RVhGSXpZTGNsbm8yWXVZc3lVTlJqSlpLaEpzYUNaVVoxTXVjWk5NUDBDZTlBeDdMQVhwN0tBUUs5eEFScUM2OUNVWGhiS1RtQUJRUHNXNDZqVUMwckcvYkI5UnBVanIrWS9mVUtPeWtYMmthZ2JkRGlRaUlVcUZrSnd1SkdQa1dUcjdDYXFoRW9QUjhGMmhFbGozWlNVVE9KMExndG1BbUVoU2VBTTkxRWhDdURIaURDbEFnRWlJOEpBY2J1MmRJU05UM0V1ODFHVXhFSElmZ1BYOENrcmtzRnVjNDBTVWt4REY1SDhCcEZFTkEwcW9WY0dJM0UybHVGVUUrNjc3VHlPaW5WT240d2ZlSmlOZEFPM0FPWmhFUWdWQnVHbnVBaWZCbFkzRHFKUkxTSk0yQnl1enRaS1R0clZYVVJBbElVd3c0Y2VxWkNIeXhGeDdjWjYyTU5QS2dDQS8wcDB3TkNKVGxJaUxTdWdlcU0zdFp5QWtCY0hOWk4wV0owRm1OQ0NRMGtCQ3hTU3pjbmdRV0VydjRISnl0cnRRZkNiSVN6MGJ5M2NLZ1BIbUlqVUJ0bWNSYmRGOS9CTElYQ21jaHEvOVV3RWRlVTJjekNEOHJGTXFlM3FyZWxOOWZEMTNLNzhKRnZLNWNwQllFdnFjbkNFWDBxR3doL0djcTAvMFFPanZWOTJUUUV6OEs2ZGVuTnhScTN4TkJ6UWc0SFhVSHcxUGNoa3dvNnl5ZFBsZi9Ncm9YQjhGbXo0bDBBNG44aFRVeVVJZzN6cFF3dnZFZnJnNEErS1J1Zmp1VnFYUTUvYTRFeW0yMnE3ME96TjFLbmhuK051MlNoZnZNbTBpTWFCWUNXSlZ0VWk5azdidlFGUUYrWUV3V1BaVE9pN0NZRU9CUmNsWjZaRENLMlR0SXQ4ZTlxSWZDSnRVeHZsZFB3YndqdVpTNkJMYlpEUlhNbXRsNzRhdnVkZFJ5Rk8rL3JqRk05dzJZZVJlUy9rSnRwanoyV3pteUswbTcrdERNZlhUUTRaY285L3RkSjhLaHZpSksrZXE5K1ZqRTdHcHlmQklsOHUxV1ZuZDRLRGhEeERaVDZUSXlPOXVpakx0UTNGZ3BxWW1tU012TzVGaFRtekxMdStNZnNxRTl6SWNkRWRpOXZNSjMrTm4yS2xXb3hXbm11MmlJbHJURWpHbGp1eVZxZTAxUWNNVmZwWlRXdXEzbklXSE1vdnhyNmxHamQxN2ZvUnNhZTlJZS9WbzBUdkw4WkZxYjRJRHN4K0VWdjBtMXRaZzdqby9rZXhha2hqaTFFYXBNUGRmN29UTHh3RnhkNlBvZkNaOTduQW51U28vQ3Vyc1hZTnRpOUh6VmpTRHBLVVhGM0QvVUJ6RW9HUkVqWWtTTWlCSDUzeVAvQW5QNjJsdm9XR0JzQUFBQUFFbEZUa1N1UW1DQ1wiLFxuICAgICAgICAgICAgQUZHVEQ6IFwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFFRUFBQUFvQ0FZQUFBQ2hESmZYQUFBQUFYTlNSMElCMmNrc2Z3QUFBQWx3U0ZsekFBQUxFd0FBQ3hNQkFKcWNHQUFBQmZkSlJFRlVlSnp0bWd0TVYxVWN4L0V2UXFSamtKcXZiT3ZCWTdaaXkrd2hCZmJhVWtkbEdKbHJwVm5wY0QwWXEwa1BzQWRwV1paSk9XMXJ0YVhyWldJU2lITkthMlBydFRWRGhiU0FtdE02TTUwcmhHSFo5OGY5bnY0Lzd2OWUvZ1grdWNJNjIyZjhmNy96Ty9lYzMrK2VjKzY1djB0YzNBQXJKaTV6RC9ndTZIRUVXaVFBb0NIV25kd0Y3b2hwSjcwb0dOTXc4Q2lZRE5MQlVwQVVpNDZHZ2c1dzVKUmZ2SThGWThvQko4RW40SFgranMzTndvV3ZCTE5pY3ZFK0ZJd3BFWlNBeTBBYW1BZUc5RWZIaGFBS2pJcDVaOTc5SjROYVVLeDByNEIzbEx3QTFJQnpsZTVNc0FUVWVWQWdOcUhyMW9YQUkyQkd0RUZVYzlwTmo0R1BVUXY2eldiLzlVclhSbDBLNVEvMTBzRGZNV0FmZFY1OEtuWndQaDJjQkkzUzZIN0JaeEJiMlRDdlA1ejI2UDhhOXYrRjBuVlFkeGJsanluUG9mdzg1WjlBbWVoQkxpaW5mcXZZd2ZrTUJxRXB6a2JJWnhDMUFRY2gxeU1JOW82bVV0NUUrVTdLT3lqUGMxMnJ3QldFeklFY2hFN1hUUGlJOG0yVXQxRit5bld0MjZtdkZsa0ZvVEZhRU94eTJNQ3AxZCs4eGY1L1ZqbzdFNVpSUGt3NW5XTmVUUGxQVUtIYWZlQVRoRDNSZ2xEVHd3WnpPbEdoeG55R21oMWVWREVJR1JGQk1CNm5MK2krWk4xNjQ1elFUa2V1OExtQmw0TEhsWjNkT3pZekNGa013aTR4Ym1UbEV0ZEY3bFlCbXVEVjBVQXBHUCtGWUR0OUtSY2RuQzlnRUtyRjRBSFhkUG5GSmE4TzJvbi9XakRtNFdDTGNRNUhYNEcvNk1zQk1GcHM0SHdWZzFCa0crVVo1MlNvblc4QkpZRjYwOHVDY1dkNDNOaFZZS3pVdy9FOEJ1QjNrT3B1UE5JNEx5b1RBeG45S1N6d1lTcTRHb3pYZWpnOUJSeG5FT1lHTmI1QUNoeU9CeVdnRFhTQytVR1BxZDhLbkIwR0ZvRm1lMElFT1VHUEsrWUZUaWFCbVdBbE9BQk9nRm93RzhUKzlUdFdCWU1mQ3FhUlhKQUlSbEsrSGp3QktzRm5YUE1HYkFRTElqYS9nVm80clc4QXBlQUZVRWMyZ1RYVUx3UzNnRWxCai9mL01pQUxwazRyZDAyTlBFSStCNHZkOW5qdWpnTnZtUERiV3p2NEdqempQbDVEamdjdkFrUGJYOEZPNCtRS1I5TkdqclNTTFhyUG82OXp3RkZRNHpWMjZLZUQzK1IwNkZPL3d1L1VDOTE1NEhoWFcrNmM0bmc5Mktub3BMNVVOWnpOaHZZazFrU25qbENXdnpuSy9qbDFZcE5YM3diVmRnVnRiTTRnNGx1Q3ZCeXhydFdqTHNsMXhML1p3MmFqcWk5MDFWMWxmZEJCY0orczdxRituN29yN1d3b3laWng2b0tTcXQvQU9wa2h5ZFFmb2k1TjJhYUMrK3hKcmc5QldNZzZtMC9jWlZ6Wlp4Tk92UWtud0xXcXp1WXZ2KzhwQ0RkUjM4eEdyOXBHSU5GalVDRytiNGpOdmRRMXE2Qmx1ZHZRSnFlSElFeGhYWXRMTDh1c2xYVlp4bmxSa3QrelhIWTJyMkRyajlvYllweFBDNkpyMUVISTUvTlhtS3YyaW5JMnNxK2l5N3ljb2MxcTJxeWhQTWUxZkdSdmVCZk1WRzF5VmIwZnJhNSs1bE5mU1hrYTVkMTZOcWpsc01nNFdTWjdFMVBVY3VnV0JDOHE3QW5MaE44eXkvNUZFTllwM1VSUWFweTlvME01OWlUcmJVYTV6VVIrSTdDNWpoWjF2UkFkRVgweGc1aXJsc1d0eXRZbVVtVHB5SksxU2RnZHF0KzlPZ2pMd1ZMd0xGOHlSRGREWGZCcE5wSW5RWUpIQUdTSy9rQ2JmSjhnRFdkQXhPWVlCMllIRS9HbDJXczVxRm5nUjRPeXJiUXpnWEtLQ3F6Tm1uWGJHUDg1V3VKM3NkMFByQjdHWnh2bmNTUU42OEZGcXJOTFREZ3ArdzExQ1dDdGNUYk1xY3IyWWhOZW56b0kzM29Fd1c2TUxlcWFzdTlJa2tTK0w3aFRiVTIwejZQOVpoMEU2c1liSjdsaWc5WnRZMHhSUVVnQXU2bVg4MElpTHlEdjV3ZlZCZmFDUDVRc2EzSXNiU2VCSDEyMmRXcEoyTDNHN2dsZVFiamNxRDNCaERQSjYzMW1XcjZkclY0elFkbGxtdkE1cDJ0UDJBSU9nWkEyaEh3Qk9NeEF2Ry9yMFdnRWVOQkVydCtIWkVtNE9oc0NiZ1FyamJNK3JXMlI0UWFHditlRC9XQ1ZoMVB5TFZMVzcxckt5NDN6VHhvWlhrR2d6ZHZHT1kvSW8xZys1Y3RUSk5zbndQSy9EcjU3bkEzRTVKQ1RndXBLU0lJUlBUWVlyQVdPWjRPRERJUXNrYlRvclFaaGdlUEo0Q1crcHg4RFJTQStlc3RCV09ENEdQQWE2SkRqTkhoWUFoVDB1QUlwY0h3VWVBenM1K3g0a3htZUNhR0JuTDdxVFJHSFFRNG9BOXU1aWJhRFJtWjl0b0dYUVdIMHF3VlgvZ2JhYlA1Y0NSYUYyQUFBQUFCSlJVNUVya0pnZ2c9PVwiLFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0T3BlcmF0b3JQcm9maWxlKG9wTmFtZSkge1xuICAgICAgICBsZXQgb3BlcmF0b3JfcHJvZmlsZSA9IHtcbiAgICAgICAgICAgIEFGR0FXOiB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ0FmZ2hhbiBUZWxlY29tJyxcbiAgICAgICAgICAgICAgICBtb2JpbGU6IFwiXCIsXG4gICAgICAgICAgICAgICAgYWRkcmVzczogXCI0dGggRmxvb3IgUG9zdCBQYXJjZWwgQnVpbGRpbmcgTW9oYW1tYWQgSmFuIEtoYW4gV2F0dCBLYWJ1bCBBZmdoYW5pc3RhbiBcIixcbiAgICAgICAgICAgICAgICBlbWFpbDogXCJcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIEFGR0FUOiB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ0FmZ2hhbiBXaXJlbGVzcyBDb21tdW5pY2F0aW9uIENvbXBhbnknLFxuICAgICAgICAgICAgICAgIG1vYmlsZTogXCJcIixcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiBcIlNoYXItZS1OYXcsIENoYXJheWVlIEhhaGkgWWFxb2JcIixcbiAgICAgICAgICAgICAgICBlbWFpbDogXCJcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIEFGR0VBOiB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ0V0aXNhbGF0ICBBZmdoYW5pc3RhbicsXG4gICAgICAgICAgICAgICAgbW9iaWxlOiBcIjA3MDAgODMwIDgzMFwiLFxuICAgICAgICAgICAgICAgIGFkZHJlc3M6IFwiRGFydWxhbWFuIFJvYWQsIEhhamFyaSBOYWphcmksIEthYnVsLCBBZmdoYW5pc3RhblwiLFxuICAgICAgICAgICAgICAgIGVtYWlsOiBcIlwiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgQUZHQVI6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnTVROIEFmZ2hhbmlzdGFuJyxcbiAgICAgICAgICAgICAgICBtb2JpbGU6IFwiXCIsXG4gICAgICAgICAgICAgICAgYWRkcmVzczogXCJQYXJrIFBsYXphLCBPcHBvc2l0ZSBQYXJrLWUtU2hhaHItZS1OYXcsIEthYnVsLCBBZmdoYW5pc3RhblwiLFxuICAgICAgICAgICAgICAgIGVtYWlsOiBcIlwiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgQUZHVEQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnUm9zaGFuL1RlbGVjb20gRGV2ZWxvcG1lbnQgQ29tcGFueSBBZmdoYW5pc3RhbiBDb3JwLicsXG4gICAgICAgICAgICAgICAgbW9iaWxlOiBcIlwiLFxuICAgICAgICAgICAgICAgIGFkZHJlc3M6IFwiSG91c2UjMTMgTWFpbiBTdHJlZXQsIFdhemlyIEFrYmFyIEtoYW4sIEthYnVsIEFmZ2hhbmlzdGFuXCIsXG4gICAgICAgICAgICAgICAgZW1haWw6IFwiXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvcGVyYXRvcl9wcm9maWxlW29wTmFtZV07XG4gICAgfVxuXG5cblxuICAgIC8vIGNvbnZlcnRfbXNfcGF5bG9hZF9kYXRlX3RvX2xhdGVzdChkYXRhLCBzZXJpZXNLZXlzLCBkYXlLZXksIGRheUtleUZvcm1hdCwgZGF5S2V5T3JkZXJBc2MpIFxuICAgIC8vICAgICBpZiAoZGF0YSA9PSBudWxsIHx8IGRhdGEgPT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAvLyAgICAgfVxuICAgIC8vICAgICBpZiAoZGF5S2V5ID09IHVuZGVmaW5lZCB8fCBkYXlLZXkgPT0gbnVsbCkge1xuICAgIC8vICAgICAgICAgZGF5S2V5ID0gJ3JlY29yZERhdGUnO1xuICAgIC8vICAgICB9XG4gICAgLy8gICAgIGlmIChzZXJpZXNLZXlzID09IHVuZGVmaW5lZCB8fCBzZXJpZXNLZXlzID09IG51bGwpIHtcbiAgICAvLyAgICAgICAgIHNlcmllc0tleXMgPSAnc2VyaWVzJztDb21tb25TZXJ2aWNlXG4gICAgLy8gICAgIH1cbiAgICAvLyAgICAgaWYgKGRheUtleUZvcm1hdCA9PSB1bmRlZmluZWQgfHwgZGF5S2V5Rm9ybWF0ID09IG51bGwpIHtcbiAgICAvLyAgICAgICAgIGRheUtleUZvcm1hdCA9ICdZWVlZLU1NLUREJztcbiAgICAvLyAgICAgfVxuICAgIC8vICAgICBpZiAoZGF5S2V5T3JkZXJBc2MgPT0gdW5kZWZpbmVkIHx8IGRheUtleU9yZGVyQXNjID09IG51bGwpIHtcbiAgICAvLyAgICAgICAgIGRheUtleU9yZGVyQXNjID0gdHJ1ZTtcbiAgICAvLyAgICAgfVxuXG4gICAgLy8gICAgIGlmIChkYXRhWydyZXR1cm5Db2RlJ10gPT0gMjAwKSB7XG4gICAgLy8gICAgICAgICBsZXQgc2VyaWVzX2NvbnRhaW5lciA9IHt9O1xuICAgIC8vICAgICAgICAgbGV0IHBheWxvYWRBcnJheSA9IFtdO1xuICAgIC8vICAgICAgICAgaWYgKGRheUtleU9yZGVyQXNjKSB7XG4gICAgLy8gICAgICAgICAgICAgZGF0YVsnUGF5bG9hZCddLnJldmVyc2UoKTtcbiAgICAvLyAgICAgICAgIH1cblxuICAgIC8vICAgICAgICAgJC5lYWNoKGRhdGFbJ1BheWxvYWQnXSwgZnVuY3Rpb24gKGluZGV4LCByZWNvcmQpIHtcbiAgICAvLyAgICAgICAgICAgICBsZXQgcyA9ICcnO1xuICAgIC8vICAgICAgICAgICAgIGxldCBzYSA9IHNlcmllc0tleXMuc3BsaXQoJ3wnKTtcbiAgICAvLyAgICAgICAgICAgICAkLmVhY2goc2EsIGZ1bmN0aW9uIChrLCB2KSB7XG4gICAgLy8gICAgICAgICAgICAgICAgIHMgKz0gcmVjb3JkW3ZdO1xuICAgIC8vICAgICAgICAgICAgICAgICBzICs9ICcjJztcbiAgICAvLyAgICAgICAgICAgICB9KTtcbiAgICAvLyAgICAgICAgICAgICBsZXQga2V5O1xuICAgIC8vICAgICAgICAgICAgIGlmIChzIGluIHNlcmllc19jb250YWluZXIpIHtcbiAgICAvLyAgICAgICAgICAgICAgICAga2V5ID0gc2VyaWVzX2NvbnRhaW5lcltzXTtcbiAgICAvLyAgICAgICAgICAgICAgICAga2V5ID0gbW9tZW50KGtleSwgZGF5S2V5Rm9ybWF0KS5zdWJ0cmFjdCgxLCAnZGF5cycpLmZvcm1hdChkYXlLZXlGb3JtYXQpO1xuICAgIC8vICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgLy8gICAgICAgICAgICAgICAgIGtleSA9IG1vbWVudCgpLmZvcm1hdChkYXlLZXlGb3JtYXQpO1xuICAgIC8vICAgICAgICAgICAgIH1cbiAgICAvLyAgICAgICAgICAgICBzZXJpZXNfY29udGFpbmVyW3NdID0ga2V5O1xuICAgIC8vICAgICAgICAgICAgIHJlY29yZFtkYXlLZXldID0ga2V5O1xuICAgIC8vICAgICAgICAgICAgIHBheWxvYWRBcnJheS5wdXNoKHJlY29yZCk7XG4gICAgLy8gICAgICAgICB9KTtcbiAgICAvLyAgICAgICAgIGlmIChkYXlLZXlPcmRlckFzYykge1xuICAgIC8vICAgICAgICAgICAgIHBheWxvYWRBcnJheS5yZXZlcnNlKCk7XG4gICAgLy8gICAgICAgICB9XG4gICAgLy8gICAgICAgICBkYXRhWydQYXlsb2FkJ10gPSBwYXlsb2FkQXJyYXk7XG4gICAgLy8gICAgIH1cbiAgICAvLyAgICAgcmV0dXJuIGRhdGE7XG4gICAgLy8gfVxuXG4gICAgaXNFbXB0eU9yTnVsbE9yVW5kZWZpbmVkRm9yTmFuKGRhdGEpIHtcbiAgICAgICAgaWYgKGRhdGEgPT0gbnVsbCB8fCBkYXRhID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldGFic29sdXRlVmFsKGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIE1hdGguYWJzKGRhdGEpO1xuICAgIH1cblxuICAgIHJldHVybk51bGxWYWx1ZUlmRW1wdHlPclVuZGVmaW5lZCh2YWx1ZSkge1xuICAgICAgICBpZiAodmFsdWUgPT0gdW5kZWZpbmVkIHx8IHZhbHVlID09IFwiXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gY3VzdG9tVmFsdWVTb3J0ZXIodmFsdWUxLCB2YWx1ZTIpOiBhbnkge1xuXG4gICAgLy8gICAgIC8vIEhhbmRsaW5nIG51bGwgdmFsdWVzXG4gICAgLy8gICAgIGlmICghdmFsdWUxICYmIHZhbHVlMikgeyByZXR1cm4gLTE7IH1cbiAgICAvLyAgICAgaWYgKCF2YWx1ZTEgJiYgIXZhbHVlMikgeyByZXR1cm4gMDsgfVxuICAgIC8vICAgICBpZiAodmFsdWUxICYmICF2YWx1ZTIpIHsgcmV0dXJuIDE7IH1cblxuICAgIC8vICAgICAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgdHdvIHN0cmluZ3MgYXJlIGVxdWl2YWxlbnQgaW4gdGhlIGN1cnJlbnQgbG9jYWxlXG4gICAgLy8gICAgIGxldCBvMSwgbzI7XG4gICAgLy8gICAgIGlmICh0eXBlb2YgdmFsdWUxID09PSAnc3RyaW5nJykge1xuICAgIC8vICAgICAgICAgbzEgPSB2YWx1ZTEucmVwbGFjZSgnIE1CJywgJycpO1xuICAgIC8vICAgICAgICAgbzEgPSB2YWx1ZTEucmVwbGFjZSgnIEdCJywgJycpO1xuICAgIC8vICAgICAgICAgbzEgPSB2YWx1ZTEucmVwbGFjZSgnIFRCJywgJycpO1xuICAgIC8vICAgICAgICAgbzEgPSB2YWx1ZTEucmVwbGFjZSgnIEtCJywgJycpO1xuICAgIC8vICAgICAgICAgbzEgPSB2YWx1ZTEucmVwbGFjZSgnIEJ5dGUnLCAnJyk7XG4gICAgLy8gICAgICAgICBvMSA9IHZhbHVlMS5yZXBsYWNlKCcgQnl0ZXMnLCAnJyk7XG4gICAgLy8gICAgICAgICBvMiA9IHZhbHVlMi5yZXBsYWNlKCcgTUInLCAnJyk7XG4gICAgLy8gICAgICAgICBvMiA9IHZhbHVlMi5yZXBsYWNlKCcgR0InLCAnJyk7XG4gICAgLy8gICAgICAgICBvMiA9IHZhbHVlMi5yZXBsYWNlKCcgVEInLCAnJyk7XG4gICAgLy8gICAgICAgICBvMiA9IHZhbHVlMi5yZXBsYWNlKCcgS0InLCAnJyk7XG4gICAgLy8gICAgICAgICBvMiA9IHZhbHVlMi5yZXBsYWNlKCcgQnl0ZScsICcnKTtcbiAgICAvLyAgICAgICAgIG8yID0gdmFsdWUyLnJlcGxhY2UoJyBCeXRlcycsICcnKTtcbiAgICAvLyAgICAgICAgIG8xID0gbzEucmVwbGFjZUFsbCgnLCcsICcnKTtcbiAgICAvLyAgICAgICAgIG8yID0gbzIucmVwbGFjZUFsbCgnLCcsICcnKTtcbiAgICAvLyAgICAgfSBlbHNlIHtcbiAgICAvLyAgICAgICAgIG8xID0gdmFsdWUxO1xuICAgIC8vICAgICAgICAgbzIgPSB2YWx1ZTI7XG4gICAgLy8gICAgIH1cbiAgICAvLyAgICAgY29uc3QgdjEgPSBwYXJzZUZsb2F0KG8xKTtcbiAgICAvLyAgICAgY29uc3QgdjIgPSBwYXJzZUZsb2F0KG8yKTtcbiAgICAvLyAgICAgLy8gcmV0dXJuIHZhbHVlMS5sb2NhbGVDb21wYXJlKHZhbHVlMik7XG4gICAgLy8gICAgIGlmICh2MSA+IHYyKSB7XG4gICAgLy8gICAgICAgICByZXR1cm4gMTtcbiAgICAvLyAgICAgfVxuICAgIC8vICAgICBlbHNlIGlmICh2MSA8IHYyKSB7XG4gICAgLy8gICAgICAgICByZXR1cm4gLTE7XG4gICAgLy8gICAgIH1cbiAgICAvLyAgICAgcmV0dXJuIDA7XG4gICAgLy8gfVxuXG4gICAgY3VzdG9tVmFsdWVTb3J0ZXIodmFsdWUxLCB2YWx1ZTIpOiBhbnkge1xuXG4gICAgICAgIC8vIEhhbmRsaW5nIG51bGwgdmFsdWVzXG4gICAgICAgIGlmICghdmFsdWUxICYmIHZhbHVlMikge1xuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdmFsdWUxICYmICF2YWx1ZTIpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZTEgJiYgIXZhbHVlMikge1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHR3byBzdHJpbmdzIGFyZSBlcXVpdmFsZW50IGluIHRoZSBjdXJyZW50IGxvY2FsZVxuXG4gICAgICAgIGNvbnN0IHYxID0gY29udmVydFN0cmluZyh2YWx1ZTEpO1xuICAgICAgICBjb25zdCB2MiA9IGNvbnZlcnRTdHJpbmcodmFsdWUyKTtcbiAgICAgICAgLy8gcmV0dXJuIHZhbHVlMS5sb2NhbGVDb21wYXJlKHZhbHVlMik7XG4gICAgICAgIGlmICh2MSA+IHYyKSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfSBlbHNlIGlmICh2MSA8IHYyKSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gY29udmVydFN0cmluZyh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIGxldCBvdXQ6IGFueTtcbiAgICAgICAgICAgICAgICBvdXQgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBvdXQgPSBvdXQucmVwbGFjZShcIk1CXCIsIFwiXCIpO1xuICAgICAgICAgICAgICAgIG91dCA9IG91dC5yZXBsYWNlKFwiR0JcIiwgXCJcIik7XG4gICAgICAgICAgICAgICAgb3V0ID0gb3V0LnJlcGxhY2UoXCJUQlwiLCBcIlwiKTtcbiAgICAgICAgICAgICAgICBvdXQgPSBvdXQucmVwbGFjZUFsbChcIixcIiwgXCJcIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQob3V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBjdXN0b21WYWx1ZVNvcnRlckZvckJhcih2YWx1ZU9uZSwgdmFsdWVUd28pIHtcblxuICAgICAgICBjb25zdCBwYXJzZXIxID0gbmV3IERPTVBhcnNlcigpO1xuICAgICAgICBjb25zdCBwYXJzZXIyID0gbmV3IERPTVBhcnNlcigpO1xuICAgICAgICBjb25zdCBkb2NPbmUgPSBwYXJzZXIxLnBhcnNlRnJvbVN0cmluZyh2YWx1ZU9uZSwgJ3RleHQvaHRtbCcpO1xuICAgICAgICBjb25zdCBkb2NUd28gPSBwYXJzZXIyLnBhcnNlRnJvbVN0cmluZyh2YWx1ZVR3bywgJ3RleHQvaHRtbCcpO1xuXG4gICAgICAgIGNvbnN0IHZhbHVlRWxlbWVudCA9IGRvY09uZS5xdWVyeVNlbGVjdG9yKCcuYmFyJyk7XG4gICAgICAgIGNvbnN0IG51bWJlclRleHRPbmUgPSBOdW1iZXIodmFsdWVFbGVtZW50LnRleHRDb250ZW50LnRyaW0oKS5yZXBsYWNlKC8sL2csICcnKSk7XG4gICAgICAgIGNvbnN0IHZhbHVlRWxlbWVudFR3byA9IGRvY1R3by5xdWVyeVNlbGVjdG9yKCcuYmFyJyk7XG4gICAgICAgIGNvbnN0IG51bWJlclRleHRUd28gPSBOdW1iZXIodmFsdWVFbGVtZW50VHdvLnRleHRDb250ZW50LnRyaW0oKS5yZXBsYWNlKC8sL2csICcnKSk7XG5cbiAgICAgICAgaWYgKCFudW1iZXJUZXh0T25lICYmIG51bWJlclRleHRUd28pIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW51bWJlclRleHRPbmUgJiYgIW51bWJlclRleHRUd28pIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIGlmIChudW1iZXJUZXh0T25lICYmICFudW1iZXJUZXh0VHdvKSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgdHdvIHN0cmluZ3MgYXJlIGVxdWl2YWxlbnQgaW4gdGhlIGN1cnJlbnQgbG9jYWxlXG5cbiAgICAgICAgY29uc3QgdjEgPSBjb252ZXJ0U3RyaW5nKG51bWJlclRleHRPbmUpO1xuICAgICAgICBjb25zdCB2MiA9IGNvbnZlcnRTdHJpbmcobnVtYmVyVGV4dFR3byk7XG4gICAgICAgIC8vIHJldHVybiB2YWx1ZTEubG9jYWxlQ29tcGFyZSh2YWx1ZTIpO1xuICAgICAgICBpZiAodjEgPiB2Mikge1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH0gZWxzZSBpZiAodjEgPCB2Mikge1xuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGNvbnZlcnRTdHJpbmcodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICBsZXQgb3V0OiBhbnk7XG4gICAgICAgICAgICAgICAgb3V0ID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgb3V0ID0gb3V0LnJlcGxhY2UoXCJNQlwiLCBcIlwiKTtcbiAgICAgICAgICAgICAgICBvdXQgPSBvdXQucmVwbGFjZShcIkdCXCIsIFwiXCIpO1xuICAgICAgICAgICAgICAgIG91dCA9IG91dC5yZXBsYWNlKFwiVEJcIiwgXCJcIik7XG4gICAgICAgICAgICAgICAgb3V0ID0gb3V0LnJlcGxhY2VBbGwoXCIsXCIsIFwiXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KG91dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDA7XG5cbiAgICB9XG5cbiAgICAvLyBmb3JtYXRUb0J5dGUodmFsdWUsIHNpemUpIHtcbiAgICAvLyAgICAgbGV0IHNpemVzID0gWydCeXRlcycsICdLQicsICdNQicsICdHQicsICdUQicsICdQQicsICdFQicsICdaQicsICdZQiddO1xuICAgIC8vICAgICBsZXQgaW5kZXggPSBzaXplcy5maW5kSW5kZXgoeCA9PiB4ID09PSBzaXplKTtcblxuICAgIC8vICAgICBjb25zb2xlLmxvZyhpbmRleCk7XG4gICAgLy8gfVxuXG4gICAgb25FeGNlbEV4cG9ydGluZyhlLCBleGNlbF9kYXRhLCByZXBvcnRfbmFtZSkge1xuICAgICAgICB0aGlzLkpTT05Ub0NTVkNvbnZlcnRvcihleGNlbF9kYXRhLCByZXBvcnRfbmFtZSwgdHJ1ZSk7XG4gICAgICAgIGUuY2FuY2VsID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZW1vdmVIdG1sQ29udGVudEZyb21EYXRhKGNvbHVtbnMsIHJvd3MpIHtcbiAgICAgICAgLy8gLnJlcGxhY2UoLzxcXC8/W14+XSsoPnwkKS9nLCBcIlwiKTtcblxuICAgICAgICByb3dzLmZvckVhY2goZnVuY3Rpb24gKHJvdykge1xuICAgICAgICAgICAgbGV0IHJvd1ZhbHVlcyA9IHJvdy52YWx1ZXM7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd1ZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChyb3dWYWx1ZXNbaV0gIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyb3dWYWx1ZXNbaV0udG9TdHJpbmcoKS5pbmNsdWRlcyhcIjwvaT5cIikpXG4gICAgICAgICAgICAgICAgICAgICAgICByb3dWYWx1ZXNbaV0gPSByb3dWYWx1ZXNbaV0ucmVwbGFjZSgvW14wLTlcXC5cXCxdL2csIFwiXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY3VzdG9taXplRXhjZWxDZWxsKG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKG9wdGlvbnMudmFsdWUgJiYgdHlwZW9mIG9wdGlvbnMudmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIGNvbnN0IG51bWVyaWNTdHJpbmcgPSBvcHRpb25zLnZhbHVlLnJlcGxhY2UoLywvZywgJycpO1xuICAgICAgICAgICAgaWYgKCFpc05hTihOdW1iZXIobnVtZXJpY1N0cmluZykpKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy52YWx1ZSA9IE51bWJlcihudW1lcmljU3RyaW5nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlbW92ZUh0bWxGb3JKb2JzdW1tYXJ5Q29udGVudEZyb21EYXRhKGNvbHVtbnMsIHJvd3MpIHtcbiAgICAgICAgLy8gLnJlcGxhY2UoLzxcXC8/W14+XSsoPnwkKS9nLCBcIlwiKTtcbiAgICAgICAgcm93cy5mb3JFYWNoKGZ1bmN0aW9uIChyb3cpIHtcbiAgICAgICAgICAgIGxldCByb3dWYWx1ZXMgPSByb3cudmFsdWVzO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dWYWx1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAocm93VmFsdWVzW2ldICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocm93VmFsdWVzW2ldLnRvU3RyaW5nKCkuaW5jbHVkZXMoXCI8L3NwYW4+XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgcm93VmFsdWVzW2ldID0gcm93VmFsdWVzW2ldLnJlcGxhY2UoLzxcXC8/W14+XSs+L2csICcnKS50cmltKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgZ2V0RGF5c0JldHdlZW5EYXRlcyhzdGFydCwgZW5kLCBkYXlOYW1lKSB7XG4gICAgICAgIGxldCByZXN1bHQgPSBbXTtcbiAgICAgICAgbGV0IGRheXMgPSB7IHN1bjogMCwgbW9uOiAxLCB0dWU6IDIsIHdlZDogMywgdGh1OiA0LCBmcmk6IDUsIHNhdDogNiB9O1xuICAgICAgICBsZXQgZGF5ID0gZGF5c1tkYXlOYW1lLnRvTG93ZXJDYXNlKCkuc3Vic3RyKDAsIDMpXTtcbiAgICAgICAgLy8gQ29weSBzdGFydCBkYXRlXG4gICAgICAgIGxldCBjdXJyZW50ID0gbmV3IERhdGUoc3RhcnQpO1xuICAgICAgICAvLyBTaGlmdCB0byBuZXh0IG9mIHJlcXVpcmVkIGRheXNcbiAgICAgICAgY3VycmVudC5zZXREYXRlKGN1cnJlbnQuZ2V0RGF0ZSgpICsgKChkYXkgLSBjdXJyZW50LmdldERheSgpICsgNykgJSA3KSk7XG4gICAgICAgIC8vIFdoaWxlIGxlc3MgdGhhbiBlbmQgZGF0ZSwgYWRkIGRhdGVzIHRvIHJlc3VsdCBhcnJheVxuICAgICAgICB3aGlsZSAoY3VycmVudCA8IG5ldyBEYXRlKGVuZCkpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ldyBEYXRlKCtjdXJyZW50KSk7XG4gICAgICAgICAgICBjdXJyZW50LnNldERhdGUoY3VycmVudC5nZXREYXRlKCkgKyA3KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGdldEFsbFNldmljZUFwaUpzb24oYXBpSnNvbk9iamVjdCkge1xuICAgICAgICBsZXQgc2VydmljZV9hcGk6IGFueTtcbiAgICAgICAgc2VydmljZV9hcGkgPSB7XG4gICAgICAgICAgICByZXF1ZXN0SWQ6IGFwaUpzb25PYmplY3QucmVxdWVzdElkLFxuICAgICAgICAgICAgZmlsdGVyOiB7XG4gICAgICAgICAgICAgICAgY29uZGl0aW9uR3JvdXA6IHtcbiAgICAgICAgICAgICAgICAgICAgY29ubmVjdG9yOiBcImFuZFwiLFxuICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlTmFtZTogXCJzdGFydERhdGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXROYW1lOiBcInJlY29yZF9kYXRlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IFwiZ3JlYXRlclRoYW5PckVxdWFsc1RvXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYXBpSnNvbk9iamVjdC5zdGFydERhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5yaWNoQ2x6OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNvbS5nYW1tYS5jb21wb25lbnRzLmFwaWF1dG9tYXRpb24uZW5yaWNobWVudC5BcGlHZW5lcmljRW5yaWNobWVudFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVucmljaE1ldGhvZDogXCJjb252ZXJ0TmFycm93U3RyaW5nVG9TaG9ydFN0cmluZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VOYW1lOiBcImVuZERhdGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXROYW1lOiBcInJlY29yZF9kYXRlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IFwibGVzc1RoYW5PckVxdWFsc1RvXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYXBpSnNvbk9iamVjdC5lbmREYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVucmljaENsejpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjb20uZ2FtbWEuY29tcG9uZW50cy5hcGlhdXRvbWF0aW9uLmVucmljaG1lbnQuQXBpR2VuZXJpY0VucmljaG1lbnRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnJpY2hNZXRob2Q6IFwiY29udmVydE5hcnJvd1N0cmluZ1RvU2hvcnRTdHJpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKGFwaUpzb25PYmplY3Quc3J2VHlwZSAhPSB1bmRlZmluZWQgfHwgYXBpSnNvbk9iamVjdC5zcnZUeXBlICE9IG51bGwpIHtcbiAgICAgICAgICAgIHNlcnZpY2VfYXBpLmZpbHRlci5jb25kaXRpb25Hcm91cC5jb25kaXRpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgIHNvdXJjZU5hbWU6IFwic3J2VHlwZVwiLFxuICAgICAgICAgICAgICAgIHRhcmdldE5hbWU6IFwic3J2X3R5cGVcIixcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogYXBpSnNvbk9iamVjdC5zcnZUeXBlT3BlcmF0b3IsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogYXBpSnNvbk9iamVjdC5zcnZUeXBlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFwaUpzb25PYmplY3QucmVjb3JkVHlwZSAhPSB1bmRlZmluZWQgfHwgYXBpSnNvbk9iamVjdC5yZWNvcmRUeXBlICE9IG51bGwpIHtcbiAgICAgICAgICAgIHNlcnZpY2VfYXBpLmZpbHRlci5jb25kaXRpb25Hcm91cC5jb25kaXRpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgIFwic291cmNlTmFtZVwiOiBcInJlY29yZFR5cGVcIixcbiAgICAgICAgICAgICAgICBcInRhcmdldE5hbWVcIjogXCJyZWNvcmRfdHlwZVwiLFxuICAgICAgICAgICAgICAgIFwib3BlcmF0b3JcIjogXCJlcXVhbHNcIixcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICBcInZhbHVlXCI6IGFwaUpzb25PYmplY3QucmVjb3JkVHlwZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgYXBpSnNvbk9iamVjdC5zb3VyY2VWYWx1ZSAhPSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgIGFwaUpzb25PYmplY3Quc291cmNlVmFsdWUgIT0gbnVsbFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHNlcnZpY2VfYXBpLmZpbHRlci5jb25kaXRpb25Hcm91cC5jb25kaXRpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgIHNvdXJjZU5hbWU6IFwic291cmNlXCIsXG4gICAgICAgICAgICAgICAgdGFyZ2V0TmFtZTogXCJzb3VyY2VcIixcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogXCJlcXVhbHNcIixcbiAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBhcGlKc29uT2JqZWN0LnNvdXJjZVZhbHVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgYXBpSnNvbk9iamVjdC5pblRydW5rVmFsdWUgIT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICBhcGlKc29uT2JqZWN0LmluVHJ1bmtWYWx1ZSAhPSBudWxsXG4gICAgICAgICkge1xuICAgICAgICAgICAgc2VydmljZV9hcGkuZmlsdGVyLmNvbmRpdGlvbkdyb3VwLmNvbmRpdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgc291cmNlTmFtZTogXCJpblRydW5rXCIsXG4gICAgICAgICAgICAgICAgdGFyZ2V0TmFtZTogXCJpbl90cnVua1wiLFxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBcImVxdWFsc1wiLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGFwaUpzb25PYmplY3QuaW5UcnVua1ZhbHVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgYXBpSnNvbk9iamVjdC5vdXRUcnVua1ZhbHVlICE9IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgYXBpSnNvbk9iamVjdC5vdXRUcnVua1ZhbHVlICE9IG51bGxcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBzZXJ2aWNlX2FwaS5maWx0ZXIuY29uZGl0aW9uR3JvdXAuY29uZGl0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICBzb3VyY2VOYW1lOiBcIm91dFRydW5rXCIsXG4gICAgICAgICAgICAgICAgdGFyZ2V0TmFtZTogXCJvdXRfdHJ1bmtcIixcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogXCJlcXVhbHNcIixcbiAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBhcGlKc29uT2JqZWN0Lm91dFRydW5rVmFsdWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBhcGlKc29uT2JqZWN0LmV2ZW50VHlwZSAhPSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgIGFwaUpzb25PYmplY3QuZXZlbnRUeXBlICE9IG51bGxcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBzZXJ2aWNlX2FwaS5maWx0ZXIuY29uZGl0aW9uR3JvdXAuY29uZGl0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICBzb3VyY2VOYW1lOiBcImV2ZW50VHlwZUtleVwiLFxuICAgICAgICAgICAgICAgIHRhcmdldE5hbWU6IFwiZXZlbnRfdHlwZVwiLFxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBhcGlKc29uT2JqZWN0LmV2ZW50VHlwZS5sZW5ndGggPiAxID8gXCJpblwiIDogXCJlcXVhbHNcIixcbiAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBhcGlKc29uT2JqZWN0LmV2ZW50VHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGFwaUpzb25PYmplY3QuZXZlbnQgIT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICBhcGlKc29uT2JqZWN0LmV2ZW50ICE9IG51bGxcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBzZXJ2aWNlX2FwaS5maWx0ZXIuY29uZGl0aW9uR3JvdXAuY29uZGl0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICBcInNvdXJjZU5hbWVcIjogXCJldmVudF90eXBlXCIsXG4gICAgICAgICAgICAgICAgXCJ0YXJnZXROYW1lXCI6IFwiZXZlbnRfdHlwZVwiLFxuICAgICAgICAgICAgICAgIFwib3BlcmF0b3JcIjogXCJlcXVhbHNcIixcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICBcInZhbHVlXCI6IGFwaUpzb25PYmplY3QuZXZlbnRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgYXBpSnNvbk9iamVjdC5kaXJlY3Rpb24gIT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICBhcGlKc29uT2JqZWN0LmRpcmVjdGlvbiAhPSBudWxsXG4gICAgICAgICkge1xuICAgICAgICAgICAgc2VydmljZV9hcGkuZmlsdGVyLmNvbmRpdGlvbkdyb3VwLmNvbmRpdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgc291cmNlTmFtZTogXCJkaXJlY3Rpb25cIixcbiAgICAgICAgICAgICAgICB0YXJnZXROYW1lOiBcImRpcmVjdGlvblwiLFxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBcImVxdWFsc1wiLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGFwaUpzb25PYmplY3QuZGlyZWN0aW9uLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFwaUpzb25PYmplY3QuY291bnRyeSAhPSB1bmRlZmluZWQgfHwgYXBpSnNvbk9iamVjdC5jb3VudHJ5ICE9IG51bGwpIHtcbiAgICAgICAgICAgIHNlcnZpY2VfYXBpLmZpbHRlci5jb25kaXRpb25Hcm91cC5jb25kaXRpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgIHNvdXJjZU5hbWU6IFwiY291bnRyeVwiLFxuICAgICAgICAgICAgICAgIHRhcmdldE5hbWU6IFwiY291bnRyeVwiLFxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBcImVxdWFsc1wiLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGFwaUpzb25PYmplY3QuY291bnRyeSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhcGlKc29uT2JqZWN0LmFwbiAhPSB1bmRlZmluZWQgfHwgYXBpSnNvbk9iamVjdC5hcG4gIT0gbnVsbCkge1xuICAgICAgICAgICAgc2VydmljZV9hcGkuZmlsdGVyLmNvbmRpdGlvbkdyb3VwLmNvbmRpdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgc291cmNlTmFtZTogXCJhcG5cIixcbiAgICAgICAgICAgICAgICB0YXJnZXROYW1lOiBcImFwblwiLFxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBcImVxdWFsc1wiLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGFwaUpzb25PYmplY3QuYXBuLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgYXBpSnNvbk9iamVjdC5ud0NhbGxUeXBlICE9IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgYXBpSnNvbk9iamVjdC5ud0NhbGxUeXBlICE9IG51bGxcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBzZXJ2aWNlX2FwaS5maWx0ZXIuY29uZGl0aW9uR3JvdXAuY29uZGl0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICBzb3VyY2VOYW1lOiBcIm53Q2FsbFR5cGVcIixcbiAgICAgICAgICAgICAgICB0YXJnZXROYW1lOiBcIm53X2NhbGxfdHlwZVwiLFxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBcImVxdWFsc1wiLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGFwaUpzb25PYmplY3QubndDYWxsVHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGFwaUpzb25PYmplY3QucmF0aW5nR3JvdXAgIT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICBhcGlKc29uT2JqZWN0LnJhdGluZ0dyb3VwICE9IG51bGxcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBzZXJ2aWNlX2FwaS5maWx0ZXIuY29uZGl0aW9uR3JvdXAuY29uZGl0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICBzb3VyY2VOYW1lOiBcInJhdGluZ0dyb3VwXCIsXG4gICAgICAgICAgICAgICAgdGFyZ2V0TmFtZTogXCJyYXRpbmdfZ3JvdXBcIixcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogXCJlcXVhbHNcIixcbiAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBhcGlKc29uT2JqZWN0LnJhdGluZ0dyb3VwLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgYXBpSnNvbk9iamVjdC50ZXJtaW5hdGlvblZhbHVlICE9IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgYXBpSnNvbk9iamVjdC50ZXJtaW5hdGlvblZhbHVlICE9IG51bGxcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBzZXJ2aWNlX2FwaS5maWx0ZXIuY29uZGl0aW9uR3JvdXAuY29uZGl0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICBzb3VyY2VOYW1lOiBcInRlcm1pbmF0aW9uQ29kZVwiLFxuICAgICAgICAgICAgICAgIHRhcmdldE5hbWU6IFwidGVybV9jb2RlXCIsXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IFwibm90ZXF1YWxzXCIsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogYXBpSnNvbk9iamVjdC50ZXJtaW5hdGlvblZhbHVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgYXBpSnNvbk9iamVjdC5jZWxsSWRWYWx1ZSAhPSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgIGFwaUpzb25PYmplY3QuY2VsbElkVmFsdWUgIT0gbnVsbFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHNlcnZpY2VfYXBpLmZpbHRlci5jb25kaXRpb25Hcm91cC5jb25kaXRpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgIHNvdXJjZU5hbWU6IFwiY2VsbElkXCIsXG4gICAgICAgICAgICAgICAgdGFyZ2V0TmFtZTogXCJjZWxsX2lkXCIsXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IFwibm90ZXF1YWxzXCIsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogYXBpSnNvbk9iamVjdC5jZWxsSWRWYWx1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNlcnZpY2VfYXBpO1xuICAgIH1cblxuICAgIC8vIG1ha2Ugc2FvbWUgcmVuZG9tZSBudW1iZXJcbiAgICBwcmltZXJ5UmVuZG9tZUlkKGxlbmd0aCkge1xuICAgICAgICBsZXQgbWFzayA9IFwiXCI7XG4gICAgICAgIG1hc2sgKz0gXCIwMTIzNDU2Nzg5XCI7XG4gICAgICAgIGxldCByZXN1bHQgPSBcIlwiO1xuICAgICAgICBmb3IgKHZhciBpID0gbGVuZ3RoOyBpID4gMDsgLS1pKVxuICAgICAgICAgICAgcmVzdWx0ICs9IG1hc2tbTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogKG1hc2subGVuZ3RoIC0gMSkpXTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cblxuICAgIC8vIGZvciBjaGFydCB0b29sdGlwXG4gICAgY2hhcnRUb29sdGlwKGE6IGFueSwgYjogYW55LCBjOiBhbnksIGQ6IGFueSk6IGFueSB7XG4gICAgICAgIHJldHVybiAnPHRhYmxlIHdpZHRoPTEwMCUgaGVpZ2h0PTMwIGJvcmRlcj0wICBzdHlsZT1cXCdmb250LXNpemU6IDEzcHhcXCc+JyArXG4gICAgICAgICAgICAnPHRyPjx0ZCBzdHlsZT1cXCd0ZXh0LWFsaWduOiBsZWZ0OyBjb2xvcjogd2hpdGVcXCc+ICcgKyBhICsgJzonICsgYiArICc8L3RkPjwvdHI+JyArXG4gICAgICAgICAgICAnPHRyPjx0ZCBzdHlsZT1cXCd0ZXh0LWFsaWduOiBsZWZ0OyBjb2xvcjogd2hpdGU7IHBhZGRpbmctdG9wOiA1cHhcXCc+ICcgKyBjICsgJzonICsgZCArICc8L3RkPjwvdHI+JyArXG4gICAgICAgICAgICAnPC90YWJsZT4nO1xuICAgIH1cblxuXG4gICAgY29udmVydFRvVGl0bGVDYXNlKHZhbHVlKSB7XG4gICAgICAgIGNvbnN0IHdvcmRzID0gdmFsdWUuc3BsaXQoLyg/PVtBLVpdKXxfLyk7XG4gICAgICAgIGNvbnN0IGNhcGl0YWxpemVkV29yZHMgPSB3b3Jkcy5tYXAod29yZCA9PiB3b3JkLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGNhcGl0YWxpemVkV29yZHMuam9pbignICcpO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgZm9ybWF0S2V5VmFsdWVQYWlycyhrZXlzLCB2YWx1ZXMpIHtcbiAgICAgICAgaWYgKGtleXMubGVuZ3RoICE9PSB2YWx1ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0tleXMgYW5kIHZhbHVlcyBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZm9ybWF0dGVkUGFpcnMgPSBbXTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IHRoaXMuY29udmVydFRvVGl0bGVDYXNlKGtleXNbaV0pO1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB2YWx1ZXNbaV07XG4gICAgICAgICAgICBmb3JtYXR0ZWRQYWlycy5wdXNoKGAke2tleX0gPSAke3ZhbHVlfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZm9ybWF0dGVkUGFpcnMuam9pbignIHwgJyk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgZ2V0VmFsdWVzQnlLZXkob2JqLCBrZXlzKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IFtdO1xuXG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgICAgICAgIGlmIChrZXkgaW4gb2JqKSB7XG4gICAgICAgICAgICAgICAgdmFsdWVzLnB1c2gob2JqW2tleV0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YWx1ZXMucHVzaCgnJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWVzO1xuICAgIH1cblxuICAgIHRyYW5zZm9ybUhlYWRlckFzS2V5TmFtZShtYWlub2JqOiBhbnkpOiBhbnlbXSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhtYWlub2JqKS5tYXAoa2V5ID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBkYXRhRmllbGQ6IGtleSxcbiAgICAgICAgICAgICAgICBjYXB0aW9uOiBrZXlcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGZvcm1hdERlY2ltYWxWYWx1ZXNGb3JDZHJEYXRhVGFibGUoZGF0YVNvdXJjZSkge1xuICAgICAgICByZXR1cm4gZGF0YVNvdXJjZS5tYXAoaXRlbSA9PiB7XG4gICAgICAgICAgICBsZXQgbmV3SXRlbSA9IHt9O1xuXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhpdGVtKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gaXRlbVtrZXldO1xuICAgICAgICAgICAgICAgIGxldCBudW1WYWx1ZSA9IE51bWJlcih2YWx1ZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWlzTmFOKG51bVZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAobnVtVmFsdWUgJSAxICE9PSAwKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld0l0ZW1ba2V5XSA9IHRoaXMucmVmb3JtYXROdW1iZXJXaXRoVGhvdXNhbmRTZXBhcmF0b3JWMyhudW1WYWx1ZSwgMik7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdJdGVtW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0l0ZW1ba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gbmV3SXRlbTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2VuZXJhdGVTYW1wbGVEYXRhKHN0YXJ0RGF0ZTogc3RyaW5nLCBlbmREYXRlOiBzdHJpbmcsIGZpZWxkczogc3RyaW5nW10pOiBhbnlbXSB7XG4gICAgICAgIGxldCBkYXRhc2V0ID0gW107XG4gICAgICAgIGxldCBjdXJyZW50RGF0ZSA9IG1vbWVudChzdGFydERhdGUpO1xuICAgICAgICBjb25zdCBlbmREYXRlTW9tZW50ID0gbW9tZW50KGVuZERhdGUpO1xuXG4gICAgICAgIHdoaWxlIChjdXJyZW50RGF0ZSA8PSBlbmREYXRlTW9tZW50KSB7XG4gICAgICAgICAgICBsZXQgcmVjb3JkID0ge307XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgZmllbGQgb2YgZmllbGRzKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZpZWxkID09PSAncmVjb3JkRGF0ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkW2ZpZWxkXSA9IGN1cnJlbnREYXRlLmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlY29yZFtmaWVsZF0gPSB0aGlzLmdldFJlbmRvbU51bWJlcldpdGhkZWNpbWFscygzLCAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRhdGFzZXQucHVzaChyZWNvcmQpO1xuICAgICAgICAgICAgY3VycmVudERhdGUgPSBjdXJyZW50RGF0ZS5hZGQoMSwgJ2RheXMnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkYXRhc2V0O1xuICAgIH1cbiAgICBnZXRSZW5kb21OdW1iZXJXaXRoZGVjaW1hbHMobGVuZ3RoLCBleHApIHtcbiAgICAgICAgbGV0IG1hc2sgPSBcIlwiO1xuICAgICAgICBtYXNrICs9IFwiMDEyMzQ1Njc4OVwiO1xuICAgICAgICBsZXQgcmVzdWx0ID0gXCJcIjtcbiAgICAgICAgZm9yICh2YXIgaSA9IGxlbmd0aDsgaSA+IDA7IC0taSlcbiAgICAgICAgICAgIHJlc3VsdCArPSBtYXNrW01hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIChtYXNrLmxlbmd0aCAtIDEpKV07XG4gICAgICAgIHJldHVybiB0aGlzLnJlZm9ybWF0TnVtYmVyV2l0aFRob3VzYW5kU2VwYXJhdG9yVjQocmVzdWx0LCBleHApO1xuICAgIH1cblxuICAgIGZvcm1hdFRpbWVzdGFtcCh0aW1lc3RhbXA6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IG51bWVyaWNUaW1lc3RhbXAgPSBwYXJzZUludCh0aW1lc3RhbXAsIDEwKTtcbiAgICAgICAgcmV0dXJuIG1vbWVudChudW1lcmljVGltZXN0YW1wKS5mb3JtYXQoJ2RkZGQsIEREIE1NTU0gWVlZWSBISDptbTpzcy5TU1MgW0dNVF1aWicpO1xuICAgIH1cblxuICAgIGZvcm1hdER1cmF0aW9uRnJvbU1pbGlzZWNvbmQobWlsbGlzZWNvbmRzKSB7XG4gICAgICAgIGxldCB0b3RhbFNlY29uZHMgPSBNYXRoLmZsb29yKG1pbGxpc2Vjb25kcyAvIDEwMDApO1xuICAgICAgICBsZXQgc2Vjb25kcyA9IHRvdGFsU2Vjb25kcyAlIDYwO1xuICAgICAgICBsZXQgdG90YWxNaW51dGVzID0gTWF0aC5mbG9vcih0b3RhbFNlY29uZHMgLyA2MCk7XG4gICAgICAgIGxldCBtaW51dGVzID0gdG90YWxNaW51dGVzICUgNjA7XG4gICAgICAgIGxldCBob3VycyA9IE1hdGguZmxvb3IodG90YWxNaW51dGVzIC8gNjApO1xuXG4gICAgICAgIGxldCByZXN1bHQgPSBbXTtcblxuICAgICAgICBpZiAoaG91cnMgPiAwKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaChgJHtob3Vyc30gaG91ciR7aG91cnMgPiAxID8gJ3MnIDogJyd9YCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1pbnV0ZXMgPiAwKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaChgJHttaW51dGVzfSBtaW51dGUke21pbnV0ZXMgPiAxID8gJ3MnIDogJyd9YCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNlY29uZHMgPiAwIHx8IHJlc3VsdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGAke3NlY29uZHN9IHNlY29uZCR7c2Vjb25kcyA+IDEgPyAncycgOiAnJ31gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQuam9pbignICcpO1xuICAgIH1cblxuXG4gICAgcmVtb3ZlRHVwbGljYXRlcyhqb2JBcnJheSwgY29udGV4dCkge1xuICAgICAgICBjb25zdCBzZWVuID0gbmV3IFNldCgpO1xuICAgICAgICByZXR1cm4gam9iQXJyYXkuZmlsdGVyKGl0ZW0gPT4ge1xuICAgICAgICAgICAgY29uc3QgZHVwbGljYXRlID0gc2Vlbi5oYXMoaXRlbVtjb250ZXh0XSk7XG4gICAgICAgICAgICBzZWVuLmFkZChpdGVtW2NvbnRleHRdKTtcbiAgICAgICAgICAgIHJldHVybiAhZHVwbGljYXRlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRLZXkgPSAob2JqKSA9PiB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuICAgICAgICByZXR1cm4ga2V5cy5maW5kKGtleSA9PiBrZXkgIT09IFwiZXZlbnRfZGF0ZVwiKTtcbiAgICB9O1xuXG4gICAgY29udmVydFN0cmluZyhpbnB1dCkge1xuICAgICAgICBsZXQgcmVzdWx0ID0gaW5wdXRcbiAgICAgICAgICAgIC5yZXBsYWNlKC9fL2csICcgJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC8oW2Etel0pKFtBLVpdKS9nLCAnJDEgJDInKVxuICAgICAgICAgICAgLnJlcGxhY2UoL1xcYihbYS16XSkvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZSgvKFtBLVpdezIsfSkvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICByZXR1cm4gbWF0Y2gudG9VcHBlckNhc2UoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxufVxuIl19
1202
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sTUFBTSxDQUFDO0FBRWQsT0FBTyxNQUFNLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBS3JDLE1BQU0sT0FBTyxhQUFhO0lBcUZ0QixZQUFvQixJQUFnQixFQUFVLE1BQXFCLEVBQVUsU0FBdUI7UUFBaEYsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQWU7UUFBVSxjQUFTLEdBQVQsU0FBUyxDQUFjO1FBbkZwRyx5QkFBb0IsR0FBRyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM1RSx1QkFBa0IsR0FBRyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbkQsdUJBQWtCLEdBQUcsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDL0QsNkJBQXdCLEdBQUcsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFJeEQsMEJBQXFCLEdBQUcsRUFBRSxDQUFDO1FBRTNCLG1DQUE4QixHQUFHLE1BQU0sQ0FBQztRQUMvQyx3QkFBbUIsR0FBRyxFQUFFLENBQUM7UUFNekIsa0JBQWEsR0FBRyx1REFBdUQsQ0FBQztRQUtqRSxtQkFBYyxHQUNqQixpTkFBaU4sQ0FBQztRQUMvTSxxQkFBZ0IsR0FDbkIsaU5BQWlOLENBQUM7UUFDL00seUJBQW9CLEdBQ3ZCLHFVQUFxVSxDQUFDO1FBQ25VLGlCQUFZLEdBQ2Ys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RUFBRSxPQUFPO1FBQzlCLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFDdkIsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzFCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDMUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUN4QixPQUFPLENBQUMsU0FBUyxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQU9ELGFBQWEsQ0FBQyxLQUFLO1FBQ2YsSUFBSSxNQUFNLEdBQUcsS0FBSzthQUNiLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO2FBQ2xCLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUM7YUFDbkMsT0FBTyxDQUFDLFlBQVksRUFBRSxVQUFVLEtBQUs7WUFDbEMsT0FBTyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7UUFFUCxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsVUFBVSxLQUFLO1lBQ25ELE9BQU8sS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxNQUFNLENBQUM7UUFFZCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDOzswR0F6L0NRLGFBQWE7OEdBQWIsYUFBYSxjQURBLE1BQU07MkZBQ25CLGFBQWE7a0JBRHpCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5pbXBvcnQgXCJyeGpzXCI7XG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSBcIm5neC10b2FzdHJcIjtcbmltcG9ydCBtb21lbnQgZnJvbSAnLi9tb21lbnQtaGVscGVyJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gXCJAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyXCI7XG4vLyBkZWNsYXJlIGxldCAkO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46IFwicm9vdFwiIH0pXG5leHBvcnQgY2xhc3MgQ29tbW9uU2VydmljZSB7XG4gICAga3BpTGlzdERhdGFPYmplY3Q6IGFueTtcbiAgICBHX0RFRkFVTFRfU1RBUlRfREFURSA9IG1vbWVudCgpLnN1YnRyYWN0KFwiMzBcIiwgXCJkYXlzXCIpLmZvcm1hdChcIllZWVktTU0tRERcIik7XG4gICAgR19ERUZBVUxUX0VORF9EQVRFID0gbW9tZW50KCkuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKTtcbiAgICBkZWZhdWx0Q3VycmVudERhdGUgPSBtb21lbnQoKS5mb3JtYXQoXCJZWVlZLU1NLUREX2hoOm1tOnNzOlNTXCIpO1xuICAgIGRlZmF1bHRDdXJyZW50RGF0ZU1pbGxpcyA9IG1vbWVudCgpLmZvcm1hdChcIllZWVlNTUREaGhtbXNzU1NcIik7XG4gICAgZ2xvYmFsX2xvYWRpbmc6IGFueTtcbiAgICBwdWJsaWMgc2VsZWN0ZWRPcGVyYXRvcjogYW55O1xuICAgIHB1YmxpYyBLcGlJZDogYW55O1xuICAgIHB1YmxpYyBrcGlVcmxPYmplY3RDb250YWluZXIgPSBbXTtcbiAgICBwdWJsaWMgYWxsS3BpYnJvd3NlckRldGFpbENvbnRhaW5lcjogYW55O1xuICAgIHB1YmxpYyBHbE9CQUxfQVVUT19SRUxPQURJTkdfVElNRV9TRVQgPSAzMDAwMDA7XG4gICAgYnJlYWRDdW1ic0xpc3RBcnJheSA9IFtdO1xuICAgIGJyZWFkQ3VtYnNMaXN0SWQ6IGFueTtcbiAgICBwdWJsaWMgY3VycmVudFVybDogYW55O1xuICAgIGdsb2JhbF9rcGlfbmFtZTogYW55O1xuICAgIC8vIHNlbGVjdFBpY2tlclJlZnJlc2ggPSAkKCcuc2VsZWN0cGlja2VyJykuc2VsZWN0cGlja2VyKCdyZWZyZXNoJyk7XG4gICAgLy8gc2VsZWN0UGlja2VyRGVzdG9yeSA9IFwiJCgnLnNlbGVjdHBpY2tlcicpLnNlbGVjdHBpY2tlcignZGVzdHJveScpXCI7XG4gICAgZ2xvYmFsRG9jTGluayA9IFwiaHR0cDovLzIwMy4yMTUuMzMuMjIyOjMzMDAxL3Byb2R1Y3QvUHJvbnRvL2twaS9SUzIwMDJcIjtcbiAgICBtYXBDaGFydERldGFpbEhvbGRlciE6IG9iamVjdDtcbiAgICBmdXNpb25UaGVtZU5hbWU6IGFueTtcblxuICAgIC8vYnV0dG9ucyBzdGFydFxuICAgIHB1YmxpYyBidG5QcmltYXJ5Qmx1ZSA9XG4gICAgICAgIFwidGV4dC13aGl0ZSBiZy1ibHVlLTcwMCBob3ZlcjpiZy1ibHVlLTgwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ibHVlLTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtNSBweS0yLjUgbXItMiBtYi0yIGRhcms6YmctYmx1ZS02MDAgZGFyazpob3ZlcjpiZy1ibHVlLTcwMCBmb2N1czpvdXRsaW5lLW5vbmUgZGFyazpmb2N1czpyaW5nLWJsdWUtODAwXCI7XG4gICAgcHVibGljIGJ0blByaW1hcnlCbHVlU20gPVxuICAgICAgICBcInRleHQtd2hpdGUgYmctYmx1ZS03MDAgaG92ZXI6YmctYmx1ZS04MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctYmx1ZS0zMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIHB4LTMgcHktMS41IG1yLTIgbWItMiBkYXJrOmJnLWJsdWUtNjAwIGRhcms6aG92ZXI6YmctYmx1ZS03MDAgZm9jdXM6b3V0bGluZS1ub25lIGRhcms6Zm9jdXM6cmluZy1ibHVlLTgwMFwiO1xuICAgIHB1YmxpYyBidG5TZWNvbmRhcnlBbHRlcm5ldCA9XG4gICAgICAgIFwicHktMi41IHB4LTUgbXItMiBtYi0yIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMCBmb2N1czpvdXRsaW5lLW5vbmUgYmctd2hpdGUgcm91bmRlZCBib3JkZXIgYm9yZGVyLWdyYXktMjAwIGhvdmVyOmJnLWdyYXktMTAwIGhvdmVyOnRleHQtYmx1ZS03MDAgZm9jdXM6ei0xMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ncmF5LTIwMCBkYXJrOmZvY3VzOnJpbmctZ3JheS03MDAgZGFyazpiZy1ncmF5LTgwMCBkYXJrOnRleHQtZ3JheS00MDAgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpob3Zlcjp0ZXh0LXdoaXRlIGRhcms6aG92ZXI6YmctZ3JheS03MDBcIjtcbiAgICBwdWJsaWMgQnRuRGFya0JsYWNrID1cbiAgICAgICAgXCJ0ZXh0LXdoaXRlIGJnLWdyYXktODAwIGhvdmVyOmJnLWdyYXktOTAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ncmF5LTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtNSBweS0yLjUgbXItMiBtYi0yIGRhcms6YmctZ3JheS04MDAgZGFyazpob3ZlcjpiZy1ncmF5LTcwMCBkYXJrOmZvY3VzOnJpbmctZ3JheS03MDAgZGFyazpib3JkZXItZ3JheS03MDBcIjtcbiAgICBwdWJsaWMgQnRuTGlnaHRXaGl0ZSA9XG4gICAgICAgIFwidGV4dC1ncmF5LTkwMCBiZy13aGl0ZSBib3JkZXIgYm9yZGVyLWdyYXktMzAwIGZvY3VzOm91dGxpbmUtbm9uZSBob3ZlcjpiZy1ncmF5LTEwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ncmF5LTIwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtNSBweS0yLjUgbXItMiBtYi0yIGRhcms6YmctZ3JheS04MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6aG92ZXI6YmctZ3JheS03MDAgZGFyazpob3Zlcjpib3JkZXItZ3JheS02MDAgZGFyazpmb2N1czpyaW5nLWdyYXktNzAwXCI7XG4gICAgcHVibGljIGJ0blN1Y2Nlc3NHcmVlbiA9XG4gICAgICAgIFwiZm9jdXM6b3V0bGluZS1ub25lIHRleHQtd2hpdGUgYmctZ3JlZW4tNzAwIGhvdmVyOmJnLWdyZWVuLTgwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ncmVlbi0zMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIHB4LTUgcHktMi41IG1yLTIgbWItMiBkYXJrOmJnLWdyZWVuLTYwMCBkYXJrOmhvdmVyOmJnLWdyZWVuLTcwMCBkYXJrOmZvY3VzOnJpbmctZ3JlZW4tODAwXCI7XG4gICAgcHVibGljIGJ0bkRhbmdlclJlZCA9XG4gICAgICAgIFwiZm9jdXM6b3V0bGluZS1ub25lIHRleHQtd2hpdGUgYmctcmVkLTcwMCBob3ZlcjpiZy1yZWQtODAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLXJlZC0zMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIHB4LTUgcHktMi41IG1yLTIgbWItMiBkYXJrOmJnLXJlZC02MDAgZGFyazpob3ZlcjpiZy1yZWQtNzAwIGRhcms6Zm9jdXM6cmluZy1yZWQtOTAwXCI7XG4gICAgcHVibGljIGJ0bkRhbmdlclJlZFNtID1cbiAgICAgICAgXCJmb2N1czpvdXRsaW5lLW5vbmUgdGV4dC13aGl0ZSBiZy1yZWQtNzAwIGhvdmVyOmJnLXJlZC04MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctcmVkLTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtMyBweS0xLjUgbXItMiBtYi0yIGRhcms6YmctcmVkLTYwMCBkYXJrOmhvdmVyOmJnLXJlZC03MDAgZGFyazpmb2N1czpyaW5nLXJlZC05MDBcIjtcbiAgICBwdWJsaWMgYnRuV2FybmluZ1llbGxvdyA9XG4gICAgICAgIFwiZm9jdXM6b3V0bGluZS1ub25lIHRleHQtYmxhY2sgYmcteWVsbG93LTQwMCBob3ZlcjpiZy15ZWxsb3ctNTAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLXllbGxvdy0zMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIHB4LTUgcHktMi41IG1yLTIgbWItMiBkYXJrOmZvY3VzOnJpbmcteWVsbG93LTkwMFwiO1xuICAgIHB1YmxpYyBidG5PdGhlcnNQdXJwbGUgPVxuICAgICAgICBcImZvY3VzOm91dGxpbmUtbm9uZSB0ZXh0LXdoaXRlIGJnLXB1cnBsZS03MDAgaG92ZXI6YmctcHVycGxlLTgwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1wdXJwbGUtMzAwIGZvbnQtbWVkaXVtIHJvdW5kZWQgdGV4dC1zbSBweC01IHB5LTIuNSBtYi0yIGRhcms6YmctcHVycGxlLTYwMCBkYXJrOmhvdmVyOmJnLXB1cnBsZS03MDAgZGFyazpmb2N1czpyaW5nLXB1cnBsZS05MDBcIjtcbiAgICBwdWJsaWMgaW5wdXRPbmUgPSBcImJnLWdyYXktNTAgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCB0ZXh0LWdyYXktOTAwIHRleHQtc20gcm91bmRlZC1sZyBmb2N1czpyaW5nLWJsdWUtNTAwIGZvY3VzOmJvcmRlci1ibHVlLTUwMCBwLTIuNSBkYXJrOmJnLWdyYXktNzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6cGxhY2Vob2xkZXItZ3JheS00MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Zm9jdXM6cmluZy1ibHVlLTUwMCBkYXJrOmZvY3VzOmJvcmRlci1ibHVlLTUwMFwiO1xuICAgIC8vYnV0dG9ucyBlbmRcblxuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLVN1Y2Nlc3MgL2dyZWVuIEJ1dHRvbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBwdWJsaWMgYnRuX3N1Y2Nlc3NfbGcgPSBcImN1cnNvci1wb2ludGVyIGZvY3VzOm91dGxpbmUtbm9uZSB0ZXh0LXdoaXRlIGJnLWdyZWVuLTcwMCBob3ZlcjpiZy1ncmVlbi04MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctZ3JlZW4tMzAwIGZvbnQtbWVkaXVtIHJvdW5kZWQgdGV4dC1zbSBweC01IHB5LTUgbXItMiAgZGFyazpiZy1ncmVlbi02MDAgZGFyazpob3ZlcjpiZy1ncmVlbi03MDAgZGFyazpmb2N1czpyaW5nLWdyZWVuLTgwMFwiO1xuICAgIHB1YmxpYyBidG5fc3VjY2Vzc19tZCA9IFwiY3Vyc29yLXBvaW50ZXIgZm9jdXM6b3V0bGluZS1ub25lIHRleHQtd2hpdGUgYmctZ3JlZW4tNzAwIGhvdmVyOmJnLWdyZWVuLTgwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ncmVlbi0zMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIHB4LTMgcHktMyBtci0yICBkYXJrOmJnLWdyZWVuLTYwMCBkYXJrOmhvdmVyOmJnLWdyZWVuLTcwMCBkYXJrOmZvY3VzOnJpbmctZ3JlZW4tODAwXCI7XG4gICAgcHVibGljIGJ0bl9zdWNjZXNzX3NtID0gXCJjdXJzb3ItcG9pbnRlciBmb2N1czpvdXRsaW5lLW5vbmUgdGV4dC13aGl0ZSBiZy1ncmVlbi03MDAgaG92ZXI6YmctZ3JlZW4tODAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWdyZWVuLTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtMSBweS0xIG1yLTIgIGRhcms6YmctZ3JlZW4tNjAwIGRhcms6aG92ZXI6YmctZ3JlZW4tNzAwIGRhcms6Zm9jdXM6cmluZy1ncmVlbi04MDBcIjtcblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tUHJpbWFyeS8gQmx1ZSBCdXR0b25zLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgcHVibGljIGJ0bl9wcmltYXJ5X2xnID0gXCJjdXJzb3ItcG9pbnRlciB0ZXh0LXdoaXRlIGJnLWJsdWUtNzAwIGhvdmVyOmJnLWJsdWUtODAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWJsdWUtMzAwIGZvbnQtbWVkaXVtIHJvdW5kZWQgdGV4dC1zbSBweC01IHB5LTUgbXItMiBkYXJrOmJnLWJsdWUtNjAwIGRhcms6aG92ZXI6YmctYmx1ZS03MDAgZm9jdXM6b3V0bGluZS1ub25lIGRhcms6Zm9jdXM6cmluZy1ibHVlLTgwMFwiO1xuICAgIHB1YmxpYyBidG5fcHJpbWFyeV9tZCA9IFwiY3Vyc29yLXBvaW50ZXIgdGV4dC13aGl0ZSBiZy1ibHVlLTcwMCBob3ZlcjpiZy1ibHVlLTgwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ibHVlLTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtMyBweS0zIG1yLTIgZGFyazpiZy1ibHVlLTYwMCBkYXJrOmhvdmVyOmJnLWJsdWUtNzAwIGZvY3VzOm91dGxpbmUtbm9uZSBkYXJrOmZvY3VzOnJpbmctYmx1ZS04MDBcIjtcbiAgICBwdWJsaWMgYnRuX3ByaW1hcnlfc20gPSBcImN1cnNvci1wb2ludGVyIHRleHQtd2hpdGUgYmctYmx1ZS03MDAgaG92ZXI6YmctYmx1ZS04MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctYmx1ZS0zMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIHB4LTEgcHktMSBtci0yIGRhcms6YmctYmx1ZS02MDAgZGFyazpob3ZlcjpiZy1ibHVlLTcwMCBmb2N1czpvdXRsaW5lLW5vbmUgZGFyazpmb2N1czpyaW5nLWJsdWUtODAwXCI7XG4gICAgcHVibGljIGJhZGdlX3ByaW1hcnlfc20gPSBcImN1cnNvci1wb2ludGVyIHRleHQtd2hpdGUgYmctYmx1ZS03MDAgaG92ZXI6YmctYmx1ZS04MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctYmx1ZS0zMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIGlubGluZSBweC0wLjUgcHktMC41IG1yLTEgZGFyazpiZy1ibHVlLTYwMCBkYXJrOmhvdmVyOmJnLWJsdWUtNzAwIGZvY3VzOm91dGxpbmUtbm9uZSBkYXJrOmZvY3VzOnJpbmctYmx1ZS04MDBcIjtcblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tRGFuZ2VyLyBSZWQgQnV0dG9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIHB1YmxpYyBidG5fZGFuZ2VyX2xnID0gXCJjdXJzb3ItcG9pbnRlciBmb2N1czpvdXRsaW5lLW5vbmUgdGV4dC13aGl0ZSBiZy1yZWQtNzAwIGhvdmVyOmJnLXJlZC04MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctcmVkLTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtNSBweS01IG1yLTIgZGFyazpiZy1yZWQtNjAwIGRhcms6aG92ZXI6YmctcmVkLTcwMCBkYXJrOmZvY3VzOnJpbmctcmVkLTkwMFwiO1xuICAgIHB1YmxpYyBidG5fZGFuZ2VyX21kID0gXCJjdXJzb3ItcG9pbnRlciBmb2N1czpvdXRsaW5lLW5vbmUgdGV4dC13aGl0ZSBiZy1yZWQtNzAwIGhvdmVyOmJnLXJlZC04MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctcmVkLTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtMyBweS0zIG1yLTIgZGFyazpiZy1yZWQtNjAwIGRhcms6aG92ZXI6YmctcmVkLTcwMCBkYXJrOmZvY3VzOnJpbmctcmVkLTkwMFwiO1xuICAgIHB1YmxpYyBidG5fZGFuZ2VyX3NtID0gXCJjdXJzb3ItcG9pbnRlciBmb2N1czpvdXRsaW5lLW5vbmUgdGV4dC13aGl0ZSBiZy1yZWQtNzAwIGhvdmVyOmJnLXJlZC04MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctcmVkLTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtMSBweS0xIG1yLTIgZGFyazpiZy1yZWQtNjAwIGRhcms6aG92ZXI6YmctcmVkLTcwMCBkYXJrOmZvY3VzOnJpbmctcmVkLTkwMFwiO1xuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVdhcm5pbmcvIFllbGxvdyBCdXR0b25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgcHVibGljIGJ0bl93YXJuaW5nX2xnID0gXCJjdXJzb3ItcG9pbnRlciBmb2N1czpvdXRsaW5lLW5vbmUgdGV4dC1ibGFjayBiZy15ZWxsb3ctNDAwIGhvdmVyOmJnLXllbGxvdy01MDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmcteWVsbG93LTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtNSBweS01IG1yLTIgZGFyazpmb2N1czpyaW5nLXllbGxvdy05MDBcIjtcbiAgICBwdWJsaWMgYnRuX3dhcm5pbmdfbWQgPSBcImN1cnNvci1wb2ludGVyIGZvY3VzOm91dGxpbmUtbm9uZSB0ZXh0LWJsYWNrIGJnLXllbGxvdy00MDAgaG92ZXI6YmcteWVsbG93LTUwMCBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy15ZWxsb3ctMzAwIGZvbnQtbWVkaXVtIHJvdW5kZWQgdGV4dC1zbSBweC0zIHB5LTMgbXItMiBkYXJrOmZvY3VzOnJpbmcteWVsbG93LTkwMFwiO1xuICAgIHB1YmxpYyBidG5fd2FybmluZ19zbSA9IFwiY3Vyc29yLXBvaW50ZXIgZm9jdXM6b3V0bGluZS1ub25lIHRleHQtYmxhY2sgYmcteWVsbG93LTQwMCBob3ZlcjpiZy15ZWxsb3ctNTAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLXllbGxvdy0zMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIHB4LTEgcHktMSBtci0yIGRhcms6Zm9jdXM6cmluZy15ZWxsb3ctOTAwXCI7XG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXJlc2V0LyBHcmF5IEJ1dHRvbnMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgcHVibGljIGJ0bl9kYXJrX2xnID0gXCJjdXJzb3ItcG9pbnRlciB0ZXh0LXdoaXRlIGJnLWdyYXktODAwIGhvdmVyOmJnLWdyYXktOTAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ncmF5LTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtNSBweS01IG1yLTIgZGFyazpiZy1ncmF5LTgwMCBkYXJrOmhvdmVyOmJnLWdyYXktNzAwIGRhcms6Zm9jdXM6cmluZy1ncmF5LTcwMCBkYXJrOmJvcmRlci1ncmF5LTcwMFwiO1xuICAgIHB1YmxpYyBidG5fZGFya19tZCA9IFwiY3Vyc29yLXBvaW50ZXIgdGV4dC13aGl0ZSBiZy1ncmF5LTgwMCBob3ZlcjpiZy1ncmF5LTkwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctZ3JheS0zMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIHB4LTMgcHktMyBtci0yIGRhcms6YmctZ3JheS04MDAgZGFyazpob3ZlcjpiZy1ncmF5LTcwMCBkYXJrOmZvY3VzOnJpbmctZ3JheS03MDAgZGFyazpib3JkZXItZ3JheS03MDBcIjtcbiAgICBwdWJsaWMgYnRuX2Rhcmtfc20gPSBcImN1cnNvci1wb2ludGVyIHRleHQtd2hpdGUgYmctZ3JheS04MDAgaG92ZXI6YmctZ3JheS05MDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWdyYXktMzAwIGZvbnQtbWVkaXVtIHJvdW5kZWQgdGV4dC1zbSBweC0xIHB5LTEgbXItMiBkYXJrOmJnLWdyYXktODAwIGRhcms6aG92ZXI6YmctZ3JheS03MDAgZGFyazpmb2N1czpyaW5nLWdyYXktNzAwIGRhcms6Ym9yZGVyLWdyYXktNzAwXCI7XG5cblxuICAgIHB1YmxpYyBidG5fbGlnaHRfbGcgPSBcIm1zLTMgdGV4dC1ncmF5LTUwMCBiZy13aGl0ZSBob3ZlcjpiZy1ncmF5LTEwMCBmb2N1czpyaW5nLTQgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctYmx1ZS0zMDAgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLWdyYXktMjAwIHRleHQtc20gZm9udC1tZWRpdW0gcHgtNSBweS01IGhvdmVyOnRleHQtZ3JheS05MDAgZm9jdXM6ei0xMCBkYXJrOmJnLWdyYXktNzAwIGRhcms6dGV4dC1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTUwMCBkYXJrOmhvdmVyOnRleHQtd2hpdGUgZGFyazpob3ZlcjpiZy1ncmF5LTYwMCBkYXJrOmZvY3VzOnJpbmctZ3JheS02MDBcIjtcbiAgICBwdWJsaWMgYnRuX2xpZ2h0X21kID0gXCJtcy0zIHRleHQtZ3JheS01MDAgYmctd2hpdGUgaG92ZXI6YmctZ3JheS0xMDAgZm9jdXM6cmluZy00IGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLWJsdWUtMzAwIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1ncmF5LTIwMCB0ZXh0LXNtIGZvbnQtbWVkaXVtIHB4LTMgcHktMyBob3Zlcjp0ZXh0LWdyYXktOTAwIGZvY3VzOnotMTAgZGFyazpiZy1ncmF5LTcwMCBkYXJrOnRleHQtZ3JheS0zMDAgZGFyazpib3JkZXItZ3JheS01MDAgZGFyazpob3Zlcjp0ZXh0LXdoaXRlIGRhcms6aG92ZXI6YmctZ3JheS02MDAgZGFyazpmb2N1czpyaW5nLWdyYXktNjAwXCI7XG4gICAgcHVibGljIGJ0bl9saWdodF9zbSA9IFwibXMtMyB0ZXh0LWdyYXktNTAwIGJnLXdoaXRlIGhvdmVyOmJnLWdyYXktMTAwIGZvY3VzOnJpbmctNCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy1ibHVlLTMwMCByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZ3JheS0yMDAgdGV4dC1zbSBmb250LW1lZGl1bSBweC0xIHB5LTEgaG92ZXI6dGV4dC1ncmF5LTkwMCBmb2N1czp6LTEwIGRhcms6YmctZ3JheS03MDAgZGFyazp0ZXh0LWdyYXktMzAwIGRhcms6Ym9yZGVyLWdyYXktNTAwIGRhcms6aG92ZXI6dGV4dC13aGl0ZSBkYXJrOmhvdmVyOmJnLWdyYXktNjAwIGRhcms6Zm9jdXM6cmluZy1ncmF5LTYwMFwiO1xuXG5cbiAgICBwdWJsaWMgYnRuRGFya0JsYWNrID0gXCJjdXJzb3ItcG9pbnRlciB0ZXh0LXdoaXRlIGJnLWdyYXktODAwIGhvdmVyOmJnLWdyYXktOTAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTQgZm9jdXM6cmluZy1ncmF5LTMwMCBmb250LW1lZGl1bSByb3VuZGVkIHRleHQtc20gcHgtNSBweS0yLjUgbXItMiBkYXJrOmJnLWdyYXktODAwIGRhcms6aG92ZXI6YmctZ3JheS03MDAgZGFyazpmb2N1czpyaW5nLWdyYXktNzAwIGRhcms6Ym9yZGVyLWdyYXktNzAwXCI7XG4gICAgcHVibGljIGJ0bkxpZ2h0V2hpdGUgPSBcImN1cnNvci1wb2ludGVyIHRleHQtZ3JheS05MDAgYmctd2hpdGUgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCBmb2N1czpvdXRsaW5lLW5vbmUgaG92ZXI6YmctZ3JheS0xMDAgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctZ3JheS0yMDAgZm9udC1tZWRpdW0gcm91bmRlZCB0ZXh0LXNtIHB4LTUgcHktMi41IG1yLTIgIGRhcms6YmctZ3JheS04MDAgZGFyazp0ZXh0LXdoaXRlIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6aG92ZXI6YmctZ3JheS03MDAgZGFyazpob3Zlcjpib3JkZXItZ3JheS02MDAgZGFyazpmb2N1czpyaW5nLWdyYXktNzAwXCI7XG4gICAgLy8gc21hbGwgYnV0dG9uXG4gICAgcHVibGljIGJ0blByaW1hcnlCbHVlX3NtID0gXCJjdXJzb3ItcG9pbnRlciB0ZXh0LXdoaXRlIGJnLWJsdWUtNzAwIGhvdmVyOmJnLWJsdWUtODAwIGZvY3VzOnJpbmctNCBmb2N1czpyaW5nLWJsdWUtMzAwIGZvbnQtc21hbGwgcm91bmRlZCB0ZXh0LXNtIHB4LTIgcHktMS41IG1yLTIgZGFyazpiZy1ibHVlLTYwMCBkYXJrOmhvdmVyOmJnLWJsdWUtNzAwIGZvY3VzOm91dGxpbmUtbm9uZSBkYXJrOmZvY3VzOnJpbmctYmx1ZS04MDBcIjtcblxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBwcml2YXRlIHRvYXN0cjogVG9hc3RyU2VydmljZSwgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcikgeyB9XG5cbiAgICBuZ09uSW5pdCgpIHsgfVxuXG4gICAgY2hhcnRSZW5kZXJOZXcoY2FwdGlvbjogYW55KSB7XG4gICAgICAgIGxldCBjaGFydHM6IGFueSA9IHt9O1xuICAgICAgICBjaGFydHNbXCJiYXNlRm9udFwiXSA9IFwiVmVyZGFuYVwiO1xuICAgICAgICBjaGFydHNbXCJjYXB0aW9uXCJdID0gXCJcIjtcbiAgICAgICAgY2hhcnRzW1wic3ViQ2FwdGlvblwiXSA9IGNhcHRpb247XG4gICAgICAgIGNoYXJ0c1tcInN1YmNhcHRpb25Gb250Q29sb3JcIl0gPSBcIiNkNGQwZDBcIjtcbiAgICAgICAgY2hhcnRzW1wieEF4aXNOYW1lXCJdID0gXCJcIjtcbiAgICAgICAgY2hhcnRzW1wieUF4aXNOYW1lXCJdID0gXCJcIjtcbiAgICAgICAgY2hhcnRzW1wicFlBeGlzTmFtZVwiXSA9IFwiXCI7XG4gICAgICAgIGNoYXJ0c1tcInNZQXhpc05hbWVcIl0gPSBcIlwiO1xuICAgICAgICBjaGFydHNbXCJzaG93VmFsdWVzXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcIm51bWJlclByZWZpeFwiXSA9IFwiXCI7XG4gICAgICAgIGNoYXJ0c1tcInBhbGV0dGVDb2xvcnNcIl0gPVxuICAgICAgICAgICAgXCIjMWU4OGU1LCNmNDQzMzYsIzFhYWY1ZCwjMWZiNjIyLCM3ZTAwYjAsI0U3NEMzQywjQUFCN0I4LCNEMzU0MDAsIzI3Mzc0NiwjMTdBNTg5LCMyNzM3NDYsXCI7XG4gICAgICAgIGNoYXJ0c1tcInBsb3RHcmFkaWVudENvbG9yXCJdID0gXCJcIjtcbiAgICAgICAgY2hhcnRzWydiZ0NvbG9yJ10gPSAnIzQyNDI0Mic7XG4gICAgICAgIGNoYXJ0c1tcIkJnQWxwaGFcIl0gPSBcIjEwMFwiO1xuICAgICAgICBjaGFydHNbXCJiYXNlRm9udENvbG9yXCJdID0gXCIjZmZmXCI7XG4gICAgICAgIGNoYXJ0c1tcImNhbnZhc0JnQWxwaGFcIl0gPSBcIjBcIjtcbiAgICAgICAgY2hhcnRzW1wic2hvd0JvcmRlclwiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbXCJzaG93Q2FudmFzQm9yZGVyXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcInVzZVBsb3RHcmFkaWVudENvbG9yXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcInBsb3RCb3JkZXJBbHBoYVwiXSA9IFwiMTBcIjtcbiAgICAgICAgY2hhcnRzW1wibGVnZW5kQm9yZGVyQWxwaGFcIl0gPSBcIjBcIjtcbiAgICAgICAgY2hhcnRzW1wibGVnZW5kQmdBbHBoYVwiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbXCJsZWdlbmRTaGFkb3dcIl0gPSBcIjBcIjtcbiAgICAgICAgY2hhcnRzW1wic2hvd0hvdmVyRWZmZWN0XCJdID0gXCIxXCI7XG4gICAgICAgIGNoYXJ0c1tcInZhbHVlRm9udENvbG9yXCJdID0gXCIjMDAwMDAwXCI7XG4gICAgICAgIGNoYXJ0c1tcInJvdGF0ZVZhbHVlc1wiXSA9IFwiMVwiO1xuICAgICAgICBjaGFydHNbXCJwbGFjZVZhbHVlc0luc2lkZVwiXSA9IFwiMVwiO1xuICAgICAgICBjaGFydHNbXCJkaXZsaW5lQ29sb3JcIl0gPSBcIiM2Njk5Y2NcIjtcbiAgICAgICAgY2hhcnRzW1wiZGl2TGluZUlzRGFzaGVkXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcImRpdkxpbmVEYXNoTGVuXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcImRpdkxpbmVHYXBMZW5cIl0gPSBcIjBcIjtcbiAgICAgICAgY2hhcnRzW1wiZGl2TGluZUFscGhhXCJdID0gXCI2MFwiO1xuICAgICAgICBjaGFydHNbXCJzaG93QWx0ZXJuYXRlVkdyaWRDb2xvclwiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbJ2NhbnZhc0JnQ29sb3InXSA9ICcjNDI0MjQyJztcbiAgICAgICAgY2hhcnRzW1wiY2FwdGlvbkZvbnRTaXplXCJdID0gXCIxMlwiO1xuICAgICAgICBjaGFydHNbXCJzdWJjYXB0aW9uRm9udFNpemVcIl0gPSBcIjEwXCI7XG4gICAgICAgIGNoYXJ0c1tcImV4cG9ydEVuYWJsZWRcIl0gPSBcIjFcIjtcbiAgICAgICAgY2hhcnRzW1wiZXhwb3J0Rm9ybWF0c1wiXSA9IFwiUE5HfEpQR1wiO1xuICAgICAgICBjaGFydHNbXCJleHBvcnRGaWxlTmFtZVwiXSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICBjaGFydHNbXCJzbGFudExhYmVsc1wiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbXCJzaG93Q2FudmFzQm9yZGVyXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcInNob3dBbHRlcm5hdGVIR3JpZENvbG9yXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcInRvb2xUaXBDb2xvclwiXSA9IFwiI2ZmZmZmZlwiO1xuICAgICAgICBjaGFydHNbXCJ0b29sVGlwQm9yZGVyVGhpY2tuZXNzXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcInRvb2xUaXBCZ0NvbG9yXCJdID0gXCIjMDAwMDAwXCI7XG4gICAgICAgIGNoYXJ0c1tcInRvb2xUaXBCZ0FscGhhXCJdID0gXCI4MFwiO1xuICAgICAgICBjaGFydHNbXCJ0b29sVGlwQm9yZGVyUmFkaXVzXCJdID0gXCIyXCI7XG4gICAgICAgIGNoYXJ0c1tcInRvb2xUaXBQYWRkaW5nXCJdID0gXCI1XCI7XG4gICAgICAgIGNoYXJ0c1tcIm91dENudkJhc2VGb250U2l6ZVwiXSA9IFwiOVwiO1xuICAgICAgICBjaGFydHNbXCJsYWJlbERpc3BsYXlcIl0gPSBcInJvdGF0ZVwiO1xuICAgICAgICBjaGFydHNbXCJkcmF3Q3Jvc3NMaW5lXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcInRoZW1lXCJdID0gdGhpcy5mdXNpb25UaGVtZU5hbWU7XG4gICAgICAgIHJldHVybiBjaGFydHM7XG4gICAgfVxuXG4gICAgZ2V0TmV3bXNjb21iaWR5MmQocFlBeGlzTmFtZTogYW55LCBzWUF4aXNOYW1lOiBhbnkpIHtcbiAgICAgICAgbGV0IGNoYXJ0czogYW55ID0ge307XG4gICAgICAgIGNoYXJ0c1tcImJhc2VGb250XCJdID0gXCJWZXJkYW5hXCI7XG4gICAgICAgIGNoYXJ0c1tcImNhcHRpb25cIl0gPSBcIlwiO1xuICAgICAgICBjaGFydHNbXCJzdWJDYXB0aW9uXCJdID0gXCJcIjtcbiAgICAgICAgY2hhcnRzW1wic3ViY2FwdGlvbkZvbnRDb2xvclwiXSA9IFwiI2Q0ZDBkMFwiO1xuICAgICAgICBjaGFydHNbXCJ4QXhpc05hbWVcIl0gPSBcIlwiO1xuICAgICAgICBjaGFydHNbXCJ5QXhpc05hbWVcIl0gPSBcIlwiO1xuICAgICAgICBjaGFydHNbXCJwWUF4aXNOYW1lXCJdID0gcFlBeGlzTmFtZTtcbiAgICAgICAgY2hhcnRzW1wic1lBeGlzTmFtZVwiXSA9IHNZQXhpc05hbWU7XG4gICAgICAgIGNoYXJ0c1tcInNob3dWYWx1ZXNcIl0gPSBcIjBcIjtcbiAgICAgICAgY2hhcnRzW1wibnVtYmVyUHJlZml4XCJdID0gXCJcIjtcbiAgICAgICAgY2hhcnRzW1wicGFsZXR0ZUNvbG9yc1wiXSA9XG4gICAgICAgICAgICBcIiMxZTg4ZTUsI2Y0NDMzNiwjMWFhZjVkLCNjZmUzMjAsIzdlMDBiMCwjRTc0QzNDLCNBQUI3QjgsI0QzNTQwMCwjMjczNzQ2LCMxN0E1ODksIzI3Mzc0NiwgXCI7XG4gICAgICAgIGNoYXJ0c1tcInBsb3RHcmFkaWVudENvbG9yXCJdID0gXCJcIjtcbiAgICAgICAgY2hhcnRzWydiZ0NvbG9yJ10gPSAnIzFlMjkzYic7XG4gICAgICAgIGNoYXJ0c1tcIkJnQWxwaGFcIl0gPSBcIjEwMFwiO1xuICAgICAgICBjaGFydHNbXCJiYXNlRm9udENvbG9yXCJdID0gXCIjZmZmXCI7XG4gICAgICAgIGNoYXJ0c1tcInNob3dCb3JkZXJcIl0gPSBcIjBcIjtcbiAgICAgICAgY2hhcnRzW1wic2hvd0NhbnZhc0JvcmRlclwiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbXCJ1c2VQbG90R3JhZGllbnRDb2xvclwiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbXCJwbG90Qm9yZGVyQWxwaGFcIl0gPSBcIjEwXCI7XG4gICAgICAgIGNoYXJ0c1tcImxlZ2VuZEJvcmRlckFscGhhXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcImxlZ2VuZEJnQWxwaGFcIl0gPSBcIjBcIjtcbiAgICAgICAgY2hhcnRzW1wibGVnZW5kU2hhZG93XCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcInNob3dIb3ZlckVmZmVjdFwiXSA9IFwiMVwiO1xuICAgICAgICBjaGFydHNbXCJ2YWx1ZUZvbnRDb2xvclwiXSA9IFwiIzAwMDAwMFwiO1xuICAgICAgICBjaGFydHNbXCJyb3RhdGVWYWx1ZXNcIl0gPSBcIjFcIjtcbiAgICAgICAgY2hhcnRzW1wicGxhY2VWYWx1ZXNJbnNpZGVcIl0gPSBcIjFcIjtcbiAgICAgICAgY2hhcnRzW1wiZGl2bGluZUNvbG9yXCJdID0gXCIjNjY5OWNjXCI7XG4gICAgICAgIGNoYXJ0c1tcImRpdkxpbmVJc0Rhc2hlZFwiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbXCJkaXZMaW5lRGFzaExlblwiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbXCJkaXZMaW5lR2FwTGVuXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcImRpdkxpbmVBbHBoYVwiXSA9IFwiNjBcIjtcbiAgICAgICAgY2hhcnRzW1wic2hvd0FsdGVybmF0ZVZHcmlkQ29sb3JcIl0gPSBcIjBcIjtcbiAgICAgICAgY2hhcnRzWydjYW52YXNCZ0NvbG9yJ10gPSAnIzFlMjkzYic7XG4gICAgICAgIGNoYXJ0c1tcImNhcHRpb25Gb250U2l6ZVwiXSA9IFwiMTBcIjtcbiAgICAgICAgY2hhcnRzW1wic3ViY2FwdGlvbkZvbnRTaXplXCJdID0gXCIxMFwiO1xuICAgICAgICBjaGFydHNbXCJleHBvcnRFbmFibGVkXCJdID0gXCIxXCI7XG4gICAgICAgIGNoYXJ0c1tcImV4cG9ydEZvcm1hdHNcIl0gPSBcIlBOR3xKUEdcIjtcbiAgICAgICAgY2hhcnRzW1wiZXhwb3J0RmlsZU5hbWVcIl0gPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgY2hhcnRzW1wibGFiZWxEaXNwbGF5XCJdID0gXCJcIjtcbiAgICAgICAgY2hhcnRzW1wic2xhbnRMYWJlbHNcIl0gPSBcIjBcIjtcbiAgICAgICAgY2hhcnRzW1wic2hvd0NhbnZhc0JvcmRlclwiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbXCJzaG93QWx0ZXJuYXRlSEdyaWRDb2xvclwiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbXCJ0b29sVGlwQ29sb3JcIl0gPSBcIiNmZmZmZmZcIjtcbiAgICAgICAgY2hhcnRzW1widG9vbFRpcEJvcmRlclRoaWNrbmVzc1wiXSA9IFwiMFwiO1xuICAgICAgICBjaGFydHNbXCJ0b29sVGlwQmdDb2xvclwiXSA9IFwiIzAwMDAwMFwiO1xuICAgICAgICBjaGFydHNbXCJ0b29sVGlwQmdBbHBoYVwiXSA9IFwiODBcIjtcbiAgICAgICAgY2hhcnRzW1widG9vbFRpcEZvbnRTaXplXCJdID0gXCIxMlwiO1xuICAgICAgICBjaGFydHNbXCJ0b29sVGlwQm9yZGVyUmFkaXVzXCJdID0gXCIyXCI7XG4gICAgICAgIGNoYXJ0c1tcInRvb2xUaXBQYWRkaW5nXCJdID0gXCI1XCI7XG4gICAgICAgIGNoYXJ0c1tcImxhYmVsRGlzcGxheVwiXSA9IFwicm90YXRlXCI7XG4gICAgICAgIGNoYXJ0c1tcIm91dENudkJhc2VGb250U2l6ZVwiXSA9IFwiOVwiO1xuICAgICAgICBjaGFydHNbXCJkcmF3Q3Jvc3NMaW5lXCJdID0gXCIwXCI7XG4gICAgICAgIGNoYXJ0c1tcInRoZW1lXCJdID0gdGhpcy5mdXNpb25UaGVtZU5hbWU7XG5cbiAgICAgICAgcmV0dXJuIGNoYXJ0cztcbiAgICB9XG5cbiAgICAvLyBqc29uIHRvIGNzdiBjb252ZXJ0b3JcbiAgICBKU09OVG9DU1ZDb252ZXJ0b3IoSlNPTkRhdGEsIFJlcG9ydFRpdGxlLCBTaG93TGFiZWwpIHtcbiAgICAgICAgLy9JZiBKU09ORGF0YSBpcyBub3QgYW4gb2JqZWN0IHRoZW4gSlNPTi5wYXJzZSB3aWxsIHBhcnNlIHRoZSBKU09OIHN0cmluZyBpbiBhbiBPYmplY3RcbiAgICAgICAgbGV0IGFyckRhdGEgPSB0eXBlb2YgSlNPTkRhdGEgIT0gXCJvYmplY3RcIiA/IEpTT04ucGFyc2UoSlNPTkRhdGEpIDogSlNPTkRhdGE7XG5cbiAgICAgICAgbGV0IENTViA9IFwiXCI7XG4gICAgICAgIC8vU2V0IFJlcG9ydCB0aXRsZSBpbiBmaXJzdCByb3cgb3IgbGluZVxuXG4gICAgICAgIENTViArPSBSZXBvcnRUaXRsZSArIFwiXFxyXFxuXFxuXCI7XG5cbiAgICAgICAgLy9UaGlzIGNvbmRpdGlvbiB3aWxsIGdlbmVyYXRlIHRoZSBMYWJlbC9IZWFkZXJcbiAgICAgICAgaWYgKFNob3dMYWJlbCkge1xuICAgICAgICAgICAgbGV0IHJvdyA9IFwiXCI7XG5cbiAgICAgICAgICAgIC8vVGhpcyBsb29wIHdpbGwgZXh0cmFjdCB0aGUgbGFiZWwgZnJvbSAxc3QgaW5kZXggb2Ygb24gYXJyYXlcbiAgICAgICAgICAgIGZvciAobGV0IGluZGV4IGluIGFyckRhdGFbMF0pIHtcbiAgICAgICAgICAgICAgICAvL05vdyBjb252ZXJ0IGVhY2ggdmFsdWUgdG8gc3RyaW5nIGFuZCBjb21tYS1zZXByYXRlZFxuICAgICAgICAgICAgICAgIHJvdyArPSBpbmRleCArIFwiLFwiO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByb3cgPSByb3cuc2xpY2UoMCwgLTEpO1xuXG4gICAgICAgICAgICAvL2FwcGVuZCBMYWJlbCByb3cgd2l0aCBsaW5lIGJyZWFrXG4gICAgICAgICAgICBDU1YgKz0gcm93ICsgXCJcXHJcXG5cIjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vMXN0IGxvb3AgaXMgdG8gZXh0cmFjdCBlYWNoIHJvd1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyckRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCByb3cgPSBcIlwiO1xuXG4gICAgICAgICAgICAvLzJuZCBsb29wIHdpbGwgZXh0cmFjdCBlYWNoIGNvbHVtbiBhbmQgY29udmVydCBpdCBpbiBzdHJpbmcgY29tbWEtc2VwcmF0ZWRcbiAgICAgICAgICAgIGZvciAobGV0IGluZGV4IGluIGFyckRhdGFbaV0pIHtcbiAgICAgICAgICAgICAgICByb3cgKz0gJ1wiJyArIGFyckRhdGFbaV1baW5kZXhdICsgJ1wiLCc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJvdy5zbGljZSgwLCByb3cubGVuZ3RoIC0gMSk7XG5cbiAgICAgICAgICAgIC8vYWRkIGEgbGluZSBicmVhayBhZnRlciBlYWNoIHJvd1xuICAgICAgICAgICAgQ1NWICs9IHJvdyArIFwiXFxyXFxuXCI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoQ1NWID09IFwiXCIpIHtcbiAgICAgICAgICAgIGFsZXJ0KFwiSW52YWxpZCBkYXRhXCIpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9HZW5lcmF0ZSBhIGZpbGUgbmFtZVxuICAgICAgICBsZXQgZmlsZU5hbWUgPSBcInJlcG9ydF9cIjtcbiAgICAgICAgLy90aGlzIHdpbGwgcmVtb3ZlIHRoZSBibGFuay1zcGFjZXMgZnJvbSB0aGUgdGl0bGUgYW5kIHJlcGxhY2UgaXQgd2l0aCBhbiB1bmRlcnNjb3JlXG4gICAgICAgIGZpbGVOYW1lICs9IFJlcG9ydFRpdGxlLnJlcGxhY2UoLyAvZywgXCIgXCIpO1xuXG4gICAgICAgIC8vSW5pdGlhbGl6ZSBmaWxlIGZvcm1hdCB5b3Ugd2FudCBjc3Ygb3IgeGxzXG4gICAgICAgIGxldCB1cmkgPSBcImRhdGE6dGV4dC9jc3Y7Y2hhcnNldD11dGYtOCwlRUYlQkIlQkZcIiArIGVuY29kZVVSSShDU1YpO1xuXG4gICAgICAgIC8vIE5vdyB0aGUgbGl0dGxlIHRyaWNreSBwYXJ0LlxuICAgICAgICAvLyB5b3UgY2FuIHVzZSBlaXRoZXI+PiB3aW5kb3cub3Blbih1cmkpO1xuICAgICAgICAvLyBidXQgdGhpcyB3aWxsIG5vdCB3b3JrIGluIHNvbWUgYnJvd3NlcnNcbiAgICAgICAgLy8gb3IgeW91IHdpbGwgbm90IGdldCB0aGUgY29ycmVjdCBmaWxlIGV4dGVuc2lvblxuXG4gICAgICAgIC8vdGhpcyB0cmljayB3aWxsIGdlbmVyYXRlIGEgdGVtcCA8YSAvPiB0YWdcbiAgICAgICAgbGV0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcbiAgICAgICAgbGluay5ocmVmID0gdXJpO1xuXG4gICAgICAgIGlmIChSZXBvcnRUaXRsZSA9PT0gXCJEYXRhc291cmNlIE1pc3NpbmcgRmlsZXNcIikge1xuICAgICAgICAgICAgbGluay5kb3dubG9hZCA9IGZpbGVOYW1lICsgXCJfXCIgKyB0aGlzLmRlZmF1bHRDdXJyZW50RGF0ZU1pbGxpcyArIFwiLnR4dFwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGluay5kb3dubG9hZCA9IGZpbGVOYW1lICsgXCJfXCIgKyB0aGlzLmRlZmF1bHRDdXJyZW50RGF0ZU1pbGxpcyArIFwiLmNzdlwiO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9zZXQgdGhlIHZpc2liaWxpdHkgaGlkZGVuIHNvIGl0IHdpbGwgbm90IGVmZmVjdCBvbiB5b3VyIHdlYi1sYXlvdXRcblxuICAgICAgICAvL3RoaXMgcGFydCB3aWxsIGFwcGVuZCB0aGUgYW5jaG9yIHRhZyBhbmQgcmVtb3ZlIGl0IGFmdGVyIGF1dG9tYXRpYyBjbGlja1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xuICAgICAgICBsaW5rLmNsaWNrKCk7XG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XG4gICAgfVxuXG4gICAgLy8gaHRtbCBmb3IgY29sb3IgYmFyXG4gICAgY3JlYXRlSHRtbCh3aWR0aCwgZGF0YSwgY29sb3IpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGA8ZGl2IHN0eWxlPVwiZGlzcGxheTogaW5saW5lXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vLXBhZGRpbmdcIiBzdHlsZT1cImZsb2F0OmxlZnQ7IHdpZHRoOiAke3dpZHRofSU7IGJhY2tncm91bmQtY29sb3I6ICR7Y29sb3J9O1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC13aGl0ZSBiYXJcIj4ke2RhdGF9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgPC9kaXY+IFxuICAgICAgICAgICAgPC9kaXY+YFxuICAgICAgICApO1xuICAgIH1cbiAgICAvLyBzY2FsZSBmb3IgY29sb3JiYXJcbiAgICBzY2FsZU51bWJlcihpbnB1dFksIHlNaW4sIHlNYXgsIHhNaW4sIHhNYXgpIHtcbiAgICAgICAgaWYgKHlNaW4gPT0geU1heCkge1xuICAgICAgICAgICAgaWYgKGlucHV0WSA9PSB5TWluKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHhNYXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4geE1pbjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBwZXJjZW50ID0gKGlucHV0WSAtIHlNaW4pIC8gKHlNYXggLSB5TWluKTtcbiAgICAgICAgICAgIHJldHVybiBwZXJjZW50ICogKHhNYXggLSB4TWluKSArIHhNaW47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyB0aG91c2VuZCBzZXBhcmV0b3JcbiAgICBUaG91c2FuZFNlcGFyYXRvcih2YWx1ZSkge1xuICAgICAgICBpZiAoTnVtYmVyKHZhbHVlKSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlID4gMCAmJiB2YWx1ZSA8IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gTnVtYmVyKHZhbHVlKS50b0xvY2FsZVN0cmluZygpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgcmVmb3JtYXROdW1iZXJXaXRoVGhvdXNhbmRTZXBhcmF0b3IodmFsdWUpIHtcbiAgICAgICAgaWYgKE51bWJlcih2YWx1ZSkpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSA+IDAgJiYgdmFsdWUgPCAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIE51bWJlcih2YWx1ZSkudG9Mb2NhbGVTdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcmVmb3JtYXROdW1iZXJXaXRoVGhvdXNhbmRTZXBhcmF0b3JWMih2YWx1ZSwgZXhwKSB7XG4gICAgICAgIGlmIChleHAgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBleHAgPSAwO1xuICAgICAgICB9XG4gICAgICAgIGlmIChOdW1iZXIodmFsdWUpKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUgPiAwICYmIHZhbHVlIDwgMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJvdW5kT2ZmVGlsbFR3byh2YWx1ZSwgZXhwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBOdW1iZXIodmFsdWUpLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwge1xuICAgICAgICAgICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogZXhwLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICByZWZvcm1hdE51bWJlcldpdGhUaG91c2FuZFNlcGFyYXRvclYzKHZhbHVlLCBleHApIHtcblxuICAgICAgICBsZXQgdmFsO1xuICAgICAgICBpZiAoZXhwID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZXhwID0gMDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoTnVtYmVyKHZhbHVlKSkge1xuICAgICAgICAgICAgdmFsID0gdmFsdWUudG9GaXhlZChleHApO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID09IDApIHtcbiAgICAgICAgICAgIHZhbCA9IHZhbHVlLnRvRml4ZWQoZXhwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhbCA9IFwiTkFOXCI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE51bWJlcih2YWwpLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwge1xuICAgICAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiBleHAsXG4gICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IGV4cCxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJlZm9ybWF0TnVtYmVyV2l0aFRob3VzYW5kU2VwYXJhdG9yVjQodmFsdWUsIGV4cCA9IDApIHtcbiAgICAgICAgbGV0IHZhbDtcblxuICAgICAgICAvLyBDb252ZXJ0IHZhbHVlIHRvIGEgbnVtYmVyIGlmIGl0J3Mgbm90IGFscmVhZHkgb25lXG4gICAgICAgIGNvbnN0IG51bWVyaWNWYWx1ZSA9IE51bWJlcih2YWx1ZSk7XG5cbiAgICAgICAgaWYgKCFpc05hTihudW1lcmljVmFsdWUpKSB7IC8vIENoZWNrIGlmIHRoZSBjb252ZXJzaW9uIHJlc3VsdCBpcyBhIG51bWJlclxuICAgICAgICAgICAgdmFsID0gbnVtZXJpY1ZhbHVlLnRvRml4ZWQoZXhwKTtcbiAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgaWYgKHZhbHVlID09IFwiLVwiKSB7XG4gICAgICAgICAgICAgICAgdmFsID0gXCItXCI7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgICAgICB2YWwgPSBcIk5BTlwiO1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWw7IC8vIEVhcmx5IHJldHVybiBhcyBmdXJ0aGVyIHByb2Nlc3NpbmcgaXMgbm90IG1lYW5pbmdmdWxcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG4gICAgICAgIC8vIEZvcm1hdCB0aGUgbnVtYmVyIHdpdGggdGhvdXNhbmQgc2VwYXJhdG9yIGFuZCBzcGVjaWZpZWQgZGVjaW1hbCBwbGFjZXNcbiAgICAgICAgcmV0dXJuIE51bWJlcih2YWwpLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwge1xuICAgICAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiBleHAsXG4gICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IGV4cCxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8vIGZvciBudW1iZXIgcmV0dXJuXG4gICAgcmVmb3JtYXROdW1iZXJXaXRoVGhvdXNhbmRTZXBhcmF0b3JWNSh2YWx1ZSwgZXhwID0gMCkge1xuICAgICAgICBsZXQgdmFsO1xuXG4gICAgICAgIC8vIENvbnZlcnQgdmFsdWUgdG8gYSBudW1iZXIgaWYgaXQncyBub3QgYWxyZWFkeSBvbmVcbiAgICAgICAgY29uc3QgbnVtZXJpY1ZhbHVlID0gTnVtYmVyKHZhbHVlKTtcblxuICAgICAgICBpZiAoIWlzTmFOKG51bWVyaWNWYWx1ZSkpIHsgLy8gQ2hlY2sgaWYgdGhlIGNvbnZlcnNpb24gcmVzdWx0IGlzIGEgbnVtYmVyXG4gICAgICAgICAgICB2YWwgPSBudW1lcmljVmFsdWUudG9GaXhlZChleHApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHZhbHVlID09IFwiLVwiKSB7XG4gICAgICAgICAgICAgICAgdmFsID0gXCItXCI7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE5hTjsgLy8gUmV0dXJuIE5hTiB0byBpbmRpY2F0ZSBhbiBpbnZhbGlkIG51bWJlclxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gTmFOOyAvLyBSZXR1cm4gTmFOIHRvIGluZGljYXRlIGFuIGludmFsaWQgbnVtYmVyXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDb252ZXJ0IHRoZSBzdHJpbmcgYmFjayB0byBhIG51bWJlclxuICAgICAgICByZXR1cm4gTnVtYmVyKHZhbCk7XG4gICAgfVxuXG4gICAgcmVmb3JtYXROdW1iZXJXaXRoVGhvdXNhbmRTZXBhcmF0b3JJZnJzVHlwZSh2YWx1ZSwgZXhwID0gMCkge1xuICAgICAgICBsZXQgdmFsO1xuXG4gICAgICAgIC8vIENvbnZlcnQgdmFsdWUgdG8gYSBudW1iZXIgaWYgaXQncyBub3QgYWxyZWFkeSBvbmVcbiAgICAgICAgY29uc3QgbnVtZXJpY1ZhbHVlID0gTnVtYmVyKHZhbHVlKTtcblxuICAgICAgICBpZiAoIWlzTmFOKG51bWVyaWNWYWx1ZSkpIHsgLy8gQ2hlY2sgaWYgdGhlIGNvbnZlcnNpb24gcmVzdWx0IGlzIGEgbnVtYmVyXG4gICAgICAgICAgICB2YWwgPSBudW1lcmljVmFsdWUudG9GaXhlZChleHApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFsID0gXCItXCI7XG4gICAgICAgICAgICByZXR1cm4gdmFsO1xuICAgICAgICB9XG4gICAgICAgIC8vIEZvcm1hdCB0aGUgbnVtYmVyIHdpdGggdGhvdXNhbmQgc2VwYXJhdG9yIGFuZCBzcGVjaWZpZWQgZGVjaW1hbCBwbGFjZXNcbiAgICAgICAgcmV0dXJuIE51bWJlcih2YWwpLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwge1xuICAgICAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiBleHAsXG4gICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IGV4cCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZm9yYW10ZVZhbHVlRm9yQW1vdW50KHZhbHVlLCBleHApIHtcbiAgICAgICAgbGV0IHZhbDtcbiAgICAgICAgaWYgKGV4cCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBleHAgPSAwO1xuICAgICAgICB9XG4gICAgICAgIC8vIERpdmlkZSB0aGUgdmFsdWUgYnkgMTAwMDAgYXQgdGhlIG91dHNldFxuICAgICAgICB2YWx1ZSA9IE51bWJlcih2YWx1ZSkgLyAxMDAwMDtcblxuICAgICAgICAvLyBDaGVjayBpZiB0aGUgcmVzdWx0IGlzIGEgZmluaXRlIG51bWJlclxuICAgICAgICBpZiAoaXNGaW5pdGUodmFsdWUpKSB7XG4gICAgICAgICAgICB2YWwgPSB2YWx1ZS50b0ZpeGVkKGV4cCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBJZiB0aGUgaW5wdXQgb3IgdGhlIGRpdmlzaW9uIHJlc3VsdCBpcyBub3QgYSBudW1iZXIsIGhhbmRsZSBncmFjZWZ1bGx5XG4gICAgICAgICAgICB2YWwgPSBcIjBcIjsgLy8gRGVmYXVsdGluZyB0byBcIjBcIiB0byBlbnN1cmUgdGhlIHRvTG9jYWxlU3RyaW5nIGNhbGwgZG9lcyBub3QgZmFpbFxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBOdW1iZXIodmFsKS50b0xvY2FsZVN0cmluZyh1bmRlZmluZWQsIHtcbiAgICAgICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogZXhwLFxuICAgICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiBleHAsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBmb3JhbXRlVmFsdWVGb3JDaGFyZ2UodmFsdWUsIGV4cCkge1xuICAgICAgICBsZXQgdmFsO1xuICAgICAgICBpZiAoZXhwID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGV4cCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRGl2aWRlIHRoZSB2YWx1ZSBieSAxMDAwMCBhdCB0aGUgb3V0c2V0XG4gICAgICAgIHZhbHVlID0gTnVtYmVyKHZhbHVlKSAvIDEwMDAwO1xuXG4gICAgICAgIC8vIENoZWNrIGlmIHRoZSByZXN1bHQgaXMgYSBmaW5pdGUgbnVtYmVyXG4gICAgICAgIGlmIChpc0Zpbml0ZSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbCA9IHZhbHVlLnRvRml4ZWQoZXhwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIElmIHRoZSBpbnB1dCBvciB0aGUgZGl2aXNpb24gcmVzdWx0IGlzIG5vdCBhIG51bWJlciwgaGFuZGxlIGdyYWNlZnVsbHlcbiAgICAgICAgICAgIHZhbCA9IFwiMFwiOyAvLyBEZWZhdWx0aW5nIHRvIFwiMFwiIHRvIGVuc3VyZSB0aGUgdG9Mb2NhbGVTdHJpbmcgY2FsbCBkb2VzIG5vdCBmYWlsXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE51bWJlcih2YWwpLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwge1xuICAgICAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiBleHAsXG4gICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IGV4cCxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGZvcmFtdGVWYWx1ZUZvck1vVSh2YWx1ZSwgZXhwKSB7XG4gICAgICAgIGxldCB2YWw7XG4gICAgICAgIGlmIChleHAgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZXhwID0gMDtcbiAgICAgICAgfVxuICAgICAgICAvLyBEaXZpZGUgdGhlIHZhbHVlIGJ5IDEwMDAwIGF0IHRoZSBvdXRzZXRcbiAgICAgICAgdmFsdWUgPSBOdW1iZXIodmFsdWUpIC8gNjA7XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHJlc3VsdCBpcyBhIGZpbml0ZSBudW1iZXJcbiAgICAgICAgaWYgKGlzRmluaXRlKHZhbHVlKSkge1xuICAgICAgICAgICAgdmFsID0gdmFsdWUudG9GaXhlZChleHApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gSWYgdGhlIGlucHV0IG9yIHRoZSBkaXZpc2lvbiByZXN1bHQgaXMgbm90IGEgbnVtYmVyLCBoYW5kbGUgZ3JhY2VmdWxseVxuICAgICAgICAgICAgdmFsID0gXCIwXCI7IC8vIERlZmF1bHRpbmcgdG8gXCIwXCIgdG8gZW5zdXJlIHRoZSB0b0xvY2FsZVN0cmluZyBjYWxsIGRvZXMgbm90IGZhaWxcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gTnVtYmVyKHZhbCkudG9Mb2NhbGVTdHJpbmcodW5kZWZpbmVkLCB7XG4gICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IGV4cCxcbiAgICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogZXhwLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhYmJyZXZpYXRlTnVtYmVyKG51bWJlcikge1xuICAgICAgICBsZXQgU0lfUE9TVEZJWEVTID0gW1wiXCIsIFwiS1wiLCBcIk1cIiwgXCJCXCIsIFwiVFwiXTtcbiAgICAgICAgbGV0IHRpZXIgPSAoTWF0aC5sb2cxMChNYXRoLmFicyhudW1iZXIpKSAvIDMpIHwgMDtcbiAgICAgICAgaWYgKHRpZXIgPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucm91bmRPZmZUaWxsVHdvKG51bWJlciwgMik7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHBvc3RmaXggPSBTSV9QT1NURklYRVNbdGllcl07XG4gICAgICAgIGxldCBzY2FsZSA9IE1hdGgucG93KDEwLCB0aWVyICogMyk7XG4gICAgICAgIGxldCBzY2FsZWQgPSBudW1iZXIgLyBzY2FsZTtcbiAgICAgICAgbGV0IGZvcm1hdHRlZCA9IHNjYWxlZC50b0ZpeGVkKDEpICsgXCJcIjtcbiAgICAgICAgaWYgKC9cXC4wJC8udGVzdChmb3JtYXR0ZWQpKSB7XG4gICAgICAgICAgICBmb3JtYXR0ZWQgPSBmb3JtYXR0ZWQuc3Vic3RyKDAsIGZvcm1hdHRlZC5sZW5ndGggLSAyKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm9ybWF0dGVkICsgcG9zdGZpeDtcbiAgICB9XG5cbiAgICBjcmVhdGVWYXJpYW5jZUh0bWxGb3JDb3VudCh3aWR0aCwgZGF0YTEsIGRhdGEyKSB7XG4gICAgICAgIGxldCBjb2x1bW5Db2xvciA9IFwiXCI7XG4gICAgICAgIGxldCBjb2x1bW5EYXRhID0gZGF0YTEgLSBkYXRhMjtcbiAgICAgICAgaWYgKGNvbHVtbkRhdGEgPiAwKSB7XG4gICAgICAgICAgICBjb2x1bW5Db2xvciA9IFwiI2ZkMDAwMFwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29sdW1uQ29sb3IgPSBcIiNkYjE1MDBcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAnPGRpdiBzdHlsZT1cImRpc3BsYXk6IGlubGluZVwiPiAnICtcbiAgICAgICAgICAgICc8ZGl2IGNsYXNzPVwibm8tcGFkZGluZ1wiIHN0eWxlPVwiZmxvYXQ6bGVmdDsgd2lkdGg6ICcgK1xuICAgICAgICAgICAgd2lkdGggK1xuICAgICAgICAgICAgXCIlOyBiYWNrZ3JvdW5kLWNvbG9yOiBcIiArXG4gICAgICAgICAgICBjb2x1bW5Db2xvciArXG4gICAgICAgICAgICBcIjsgXCIgK1xuICAgICAgICAgICAgJ2hlaWdodDogMTVweDsgcG9zaXRpb246IHJlbGF0aXZlO1wiPjwvZGl2PicgK1xuICAgICAgICAgICAgJzxkaXYgY2xhc3M9XCJuby1wYWRkaW5nXCIgc3R5bGU9XCJmbG9hdDogbGVmdFwiPicgK1xuICAgICAgICAgICAgdGhpcy5yZWZvcm1hdE51bWJlcldpdGhUaG91c2FuZFNlcGFyYXRvcihjb2x1bW5EYXRhKSArXG4gICAgICAgICAgICBcIjwvZGl2PlwiICtcbiAgICAgICAgICAgIFwiPC9kaXY+XCJcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICByb3VuZE9mZlRpbGxUd28odmFsdWUsIGV4cCkge1xuICAgICAgICBpZiAodHlwZW9mIGV4cCA9PT0gXCJ1bmRlZmluZWRcIiB8fCArZXhwID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5yb3VuZCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFsdWUgPSArdmFsdWU7XG4gICAgICAgIGV4cCA9ICtleHA7XG5cbiAgICAgICAgaWYgKGlzTmFOKHZhbHVlKSB8fCAhKHR5cGVvZiBleHAgPT09IFwibnVtYmVyXCIgJiYgZXhwICUgMSA9PT0gMCkpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTaGlmdFxuICAgICAgICB2YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKCkuc3BsaXQoXCJlXCIpO1xuICAgICAgICB2YWx1ZSA9IE1hdGgucm91bmQoKyh2YWx1ZVswXSArIFwiZVwiICsgKHZhbHVlWzFdID8gK3ZhbHVlWzFdICsgZXhwIDogZXhwKSkpO1xuXG4gICAgICAgIC8vIFNoaWZ0IGJhY2tcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS50b1N0cmluZygpLnNwbGl0KFwiZVwiKTtcbiAgICAgICAgcmV0dXJuICsodmFsdWVbMF0gKyBcImVcIiArICh2YWx1ZVsxXSA/ICt2YWx1ZVsxXSAtIGV4cCA6IC1leHApKTtcbiAgICB9XG5cbiAgICBnZXRtYXBDaGFydERldGFpbEhvbGRlcih2YWwpIHtcbiAgICAgICAgdGhpcy5tYXBDaGFydERldGFpbEhvbGRlciA9IHZhbDtcbiAgICB9XG5cblxuXG4gICAgZ2V0X3BlcmNlbnRhZ2VfY2hhbmdlKHByZXYsIG5vdykge1xuICAgICAgICBsZXQgcGVyYyA9IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHByZXYgIT09IDApIHtcbiAgICAgICAgICAgIHBlcmMgPSAoKG5vdyAtIHByZXYpIC8gcHJldikgKiAxMDA7XG4gICAgICAgICAgICBwZXJjID0gdGhpcy5yb3VuZE9mZlRpbGxUd28ocGVyYywgMik7XG4gICAgICAgIH0gZWxzZSBpZiAobm93ICE9PSAwKSB7XG4gICAgICAgICAgICBwZXJjID0gMTAwO1xuICAgICAgICB9XG4gICAgICAgIGxldCBiYWRnZV9sYWJlbCA9IFwiXCI7XG4gICAgICAgIGlmIChwZXJjID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHBlcmMgPSBcIjxiIGNsYXNzPSd3aWctbmEnPiBOQTwvYj5cIjtcbiAgICAgICAgICAgIGJhZGdlX2xhYmVsID0gXCI8Yj5cIiArIHBlcmMgKyBcIjwvYj5cIjtcbiAgICAgICAgfSBlbHNlIGlmIChwZXJjID4gMCkge1xuICAgICAgICAgICAgYmFkZ2VfbGFiZWwgPVxuICAgICAgICAgICAgICAgICc8c3Bhbj48YiBjbGFzcz1cImdyZWVuLWJhZGdlXCI+ICsnICtcbiAgICAgICAgICAgICAgICBwZXJjICtcbiAgICAgICAgICAgICAgICAnPGkgY2xhc3M9XCJmYSBmYS1jaGV2cm9uLXVwXCIgPjwvaT48L2I+PC9zcGFuPic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYWRnZV9sYWJlbCA9XG4gICAgICAgICAgICAgICAgJzxzcGFuPjxiIGNsYXNzPVwici1iZ1wiPiAnICtcbiAgICAgICAgICAgICAgICBwZXJjICtcbiAgICAgICAgICAgICAgICAnPGkgY2xhc3M9XCJmYSBmYS1jaGV2cm9uLWRvd25cIiA+PC9pPjwvYj48c3Bhbj4nO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBiYWRnZV9sYWJlbDtcbiAgICB9XG5cbiAgICBnZXRMYWJlbChhdHRyX25hbWUpIHtcbiAgICAgICAgbGV0IGxhYmVsX25hbWUgPSBcIlwiO1xuICAgICAgICBpZiAoYXR0cl9uYW1lICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKGF0dHJfbmFtZS5pbmRleE9mKFwiLVwiKSA+IDApIHtcbiAgICAgICAgICAgICAgICBhdHRyX25hbWUgPSBhdHRyX25hbWUucmVwbGFjZSgvLS9nLCBcIiBcIik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGF0dHJfbmFtZS5pbmRleE9mKFwiX1wiKSA+IDApIHtcbiAgICAgICAgICAgICAgICBhdHRyX25hbWUgPSBhdHRyX25hbWUucmVwbGFjZSgvXy9nLCBcIiBcIik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGF0dHJfbmFtZSA9IGF0dHJfbmFtZS5yZXBsYWNlKC8oW0EtWl0pL2csIFwiICQxXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGFiZWxfbmFtZSA9IHRoaXMuY2FwaXRhbGlzZVdvcmQoYXR0cl9uYW1lKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGFiZWxfbmFtZTtcbiAgICB9XG5cbiAgICBjYXBpdGFsaXNlV29yZChjb250ZW50KSB7XG4gICAgICAgIGxldCByZXQgPSBcIlwiO1xuICAgICAgICBsZXQgdGV4dCA9IGNvbnRlbnQsXG4gICAgICAgICAgICB0b2tlbnMgPSB0ZXh0LnNwbGl0KFwiIFwiKS5maWx0ZXIoZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdCAhPSBcIlwiO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICByZXMgPSBbXSxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICBsZW4sXG4gICAgICAgICAgICBjb21wb25lbnQ7XG4gICAgICAgIGZvciAoaSA9IDAsIGxlbiA9IHRva2Vucy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgICAgY29tcG9uZW50ID0gdG9rZW5zW2ldO1xuICAgICAgICAgICAgcmVzLnB1c2goY29tcG9uZW50LnN1YnN0cmluZygwLCAxKS50b1VwcGVyQ2FzZSgpKTtcbiAgICAgICAgICAgIHJlcy5wdXNoKGNvbXBvbmVudC5zdWJzdHJpbmcoMSkpO1xuICAgICAgICAgICAgcmVzLnB1c2goXCIgXCIpOyAvLyBwdXQgc3BhY2UgYmFjayBpblxuICAgICAgICB9XG4gICAgICAgIHJldCArPSByZXMuam9pbihcIlwiKTtcbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG5cbiAgICBjb252ZXJ0VG9TcGFjZVNlcGFyYXRlZENhcGl0YWxpemVkKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBpbnB1dFxuICAgICAgICAgICAgLnJlcGxhY2UoL18vZywgJyAnKVxuICAgICAgICAgICAgLnJlcGxhY2UoLyhbYS16XSkoW0EtWl0pL2csICckMSAkMicpXG4gICAgICAgICAgICAucmVwbGFjZSgvKFtBLVpdKShbQS1aXVthLXpdKS9nLCAnJDEgJDInKVxuICAgICAgICAgICAgLnJlcGxhY2UoL1xcYlxcdy9nLCBmaXJzdENoYXIgPT4gZmlyc3RDaGFyLnRvVXBwZXJDYXNlKCkpO1xuICAgIH1cblxuICAgIGNhcGl0YWxpemVGaXJzdExldHRlcih0ZXh0KTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRleHQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB0ZXh0LnNsaWNlKDEpLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuXG4gICAgZm9ybWF0TWlsbGlzZWModmFsdWUpOiBhbnkge1xuICAgICAgICBsZXQgbWlsbGlzZWNJbkRheSA9IDg2NDAwMDAwO1xuICAgICAgICBsZXQgbWlsbGlzZWNJbkhvdXIgPSAzNjAwMDAwO1xuICAgICAgICBsZXQgbWlsbGlzZWNJbk1pbiA9IDYwMDAwO1xuICAgICAgICBsZXQgbWlsbGlzZWNJblNlYyA9IDEwMDA7XG5cbiAgICAgICAgaWYgKHZhbHVlID49IG1pbGxpc2VjSW5EYXkpIHtcbiAgICAgICAgICAgIGxldCBkYXlWYWx1ZSA9IHZhbHVlIC8gODY0MDAwMDA7XG4gICAgICAgICAgICBsZXQgZGF5ID0gZGF5VmFsdWUudG9GaXhlZCgxKTtcbiAgICAgICAgICAgIGlmIChkYXkgPT09IFwiMVwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRheSArIFwiIGRheVwiO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF5ICsgXCIgZGF5c1wiO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID49IG1pbGxpc2VjSW5Ib3VyKSB7XG4gICAgICAgICAgICBsZXQgaG91ciA9IHZhbHVlIC8gMzYwMDAwMDtcbiAgICAgICAgICAgIHJldHVybiBob3VyICsgXCIgaHJcIjtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA+PSBtaWxsaXNlY0luTWluKSB7XG4gICAgICAgICAgICBsZXQgbWluID0gdmFsdWUgLyA2MDAwMDtcbiAgICAgICAgICAgIHJldHVybiBtaW4gKyBcIiBtaW5cIjtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA+PSBtaWxsaXNlY0luU2VjKSB7XG4gICAgICAgICAgICBsZXQgc2VjID0gdmFsdWUgLyAxMDAwO1xuICAgICAgICAgICAgcmV0dXJuIHNlYyArIFwiIHNlY1wiO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlIDwgMTAwMCkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlICsgXCIgbWlsXCI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmb3JtYXRCeXRlcyhieXRlcywgZGVjaW1hbHMpIHtcbiAgICAgICAgaWYgKGJ5dGVzID09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBcIjAgQnl0ZVwiO1xuICAgICAgICB9XG4gICAgICAgIGxldCBrID0gMTAyNDtcbiAgICAgICAgbGV0IGRtID0gZGVjaW1hbHM7XG4gICAgICAgIGlmIChkZWNpbWFscyA9PSB1bmRlZmluZWQgfHwgZGVjaW1hbHMgPT0gXCJcIikge1xuICAgICAgICAgICAgZG0gPSAyO1xuICAgICAgICB9XG4gICAgICAgIGxldCBzaXplcyA9IFtcIkJ5dGVzXCIsIFwiS0JcIiwgXCJNQlwiLCBcIkdCXCIsIFwiVEJcIiwgXCJQQlwiLCBcIkVCXCIsIFwiWkJcIiwgXCJZQlwiXTtcbiAgICAgICAgbGV0IGkgPSBNYXRoLmZsb29yKE1hdGgubG9nKGJ5dGVzKSAvIE1hdGgubG9nKGspKTtcbiAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQoKGJ5dGVzIC8gTWF0aC5wb3coaywgaSkpLnRvRml4ZWQoZG0pKSArIFwiIFwiICsgc2l6ZXNbaV07XG4gICAgfVxuXG4gICAgZm9ybWF0Qnl0ZXN2MihieXRlcywgZGVjaW1hbHMpIHtcblxuICAgICAgICBpZiAoYnl0ZXMgPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIFwiMFwiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChieXRlcyA9PSBcIk5vIERhdGFcIikge1xuICAgICAgICAgICAgcmV0dXJuIFwiTm8gRGF0YVwiO1xuICAgICAgICB9XG4gICAgICAgIGxldCBrID0gMTAyNDtcbiAgICAgICAgbGV0IGRtID0gZGVjaW1hbHM7XG4gICAgICAgIGlmIChkZWNpbWFscyA9PSB1bmRlZmluZWQgfHwgZGVjaW1hbHMgPT0gXCJcIikge1xuICAgICAgICAgICAgZG0gPSAyO1xuICAgICAgICB9XG4gICAgICAgIGxldCBzaXplcyA9IFtcIkJ5dGVzXCIsIFwiS0JcIiwgXCJNQlwiLCBcIkdCXCIsIFwiVEJcIiwgXCJQQlwiLCBcIkVCXCIsIFwiWkJcIiwgXCJZQlwiXTtcbiAgICAgICAgbGV0IGkgPSBNYXRoLmZsb29yKE1hdGgubG9nKGJ5dGVzKSAvIE1hdGgubG9nKGspKTtcbiAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQoKGJ5dGVzIC8gTWF0aC5wb3coaywgaSkpLnRvRml4ZWQoZG0pKSArIFwiIFwiICsgc2l6ZXNbaV07XG4gICAgfVxuXG4gICAgZm9ybWF0Qnl0c1RvS2IoYnl0ZXMsIGRlY2ltYWxzKSB7XG4gICAgICAgIGlmIChieXRlcyA9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gXCIwXCI7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGsgPSAxMDI0O1xuICAgICAgICBsZXQgZG0gPSBkZWNpbWFscztcbiAgICAgICAgaWYgKGRlY2ltYWxzID09IHVuZGVmaW5lZCB8fCBkZWNpbWFscyA9PSBcIlwiKSB7XG4gICAgICAgICAgICBkbSA9IDI7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGkgPSBieXRlcyAvIGs7XG4gICAgICAgIC8vIHJldHVybiBwYXJzZUZsb2F0KGkpLnRvTG9jYWxlU3RyaW5nKCkudG9GaXhlZChkbSkgKyAnICcgKyAnS0InO1xuICAgICAgICBsZXQgdiA9IE51bWJlcihpKS50b0xvY2FsZVN0cmluZyh1bmRlZmluZWQsIHsgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiBkbSB9KTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHYpXG4gICAgfVxuICAgIGZvcm1hdEJ5dHNUb0diKGJ5dGVzLCBkZWNpbWFscykge1xuICAgICAgICBpZiAoYnl0ZXMgPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIFwiMFwiO1xuICAgICAgICB9XG4gICAgICAgIGxldCBnID0gMTAyNCAqIDEwMjQgKiAxMDI0O1xuICAgICAgICBsZXQgZG0gPSBkZWNpbWFscztcbiAgICAgICAgaWYgKGRlY2ltYWxzID09IHVuZGVmaW5lZCB8fCBkZWNpbWFscyA9PSBcIlwiKSB7XG4gICAgICAgICAgICBkbSA9IDI7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGkgPSBieXRlcyAvIGc7XG4gICAgICAgIC8vIHJldHVybiBwYXJzZUZsb2F0KGkpLnRvTG9jYWxlU3RyaW5nKCkudG9GaXhlZChkbSkgKyAnICcgKyAnS0InO1xuICAgICAgICBsZXQgdiA9IE51bWJlcihpKS50b0xvY2FsZVN0cmluZyh1bmRlZmluZWQsIHsgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiBkbSB9KTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHYpXG4gICAgfVxuXG4gICAgcmVmb3JtYXROdW1iZXIodmFsdWUpIHtcbiAgICAgICAgbGV0IG5ld1ZhbHVlID0gXCJcIjtcbiAgICAgICAgbmV3VmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHZhbHVlID49IDEwMDApIHtcbiAgICAgICAgICAgIGxldCBzdWZmaXhlcyA9IFtcIlwiLCBcIktcIiwgXCJNXCIsIFwiQlwiLCBcIlRcIl07XG4gICAgICAgICAgICBsZXQgc3VmZml4TnVtID0gTWF0aC5mbG9vcigoXCJcIiArIHZhbHVlKS5sZW5ndGggLyAzKTtcbiAgICAgICAgICAgIGxldCBzaG9ydFZhbHVlO1xuICAgICAgICAgICAgZm9yIChsZXQgcHJlY2lzaW9uID0gMjsgcHJlY2lzaW9uID49IDE7IHByZWNpc2lvbi0tKSB7XG4gICAgICAgICAgICAgICAgc2hvcnRWYWx1ZSA9IHBhcnNlRmxvYXQoXG4gICAgICAgICAgICAgICAgICAgIChzdWZmaXhOdW0gIT0gMFxuICAgICAgICAgICAgICAgICAgICAgICAgPyB2YWx1ZSAvIE1hdGgucG93KDEwMDAsIHN1ZmZpeE51bSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKS50b1ByZWNpc2lvbihwcmVjaXNpb24pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBsZXQgZG90TGVzc1Nob3J0VmFsdWUgPSAoc2hvcnRWYWx1ZSArIFwiXCIpLnJlcGxhY2UoXCJhLXogQS1aIDAtOVwiLCBcIlwiKTtcbiAgICAgICAgICAgICAgICBpZiAoZG90TGVzc1Nob3J0VmFsdWUubGVuZ3RoIDw9IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbmV3VmFsdWUgPSBzaG9ydFZhbHVlICsgc3VmZml4ZXNbc3VmZml4TnVtXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3VmFsdWU7XG4gICAgfVxuXG4gICAgaWZOdWxsVW5kZWZpbmVkKGRhdGEpIHtcbiAgICAgICAgaWYgKGRhdGEgPT0gbnVsbCB8fCBkYXRhID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIFwiIFwiO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cblxuICAgIGdldFZhcmlhbmNlT2ZNb3UodmFsdWUxLCB2YWx1ZTIpIHtcbiAgICAgICAgbGV0IHZhcmlhbmNlO1xuICAgICAgICB2YXJpYW5jZSA9IE1hdGguYWJzKHZhbHVlMSAtIHZhbHVlMik7XG4gICAgICAgIHJldHVybiB2YXJpYW5jZTtcbiAgICB9XG5cbiAgICBnZXRWYXJpYW5jZU9mQ291bnQodmFsdWUxLCB2YWx1ZTIpIHtcbiAgICAgICAgbGV0IHZhcmlhbmNlO1xuICAgICAgICB2YXJpYW5jZSA9IE1hdGguYWJzKHZhbHVlMSAtIHZhbHVlMik7XG4gICAgICAgIHJldHVybiB2YXJpYW5jZTtcbiAgICB9XG5cbiAgICBnZXRQZXJjZW50YWdlTW91KHZhbHVlMSwgdmFsdWUyKSB7XG4gICAgICAgIGxldCBwZXJjZW50YWdlVmFsdWU7XG4gICAgICAgIC8vIHZhbHVlMSA9IDQzNDQ1NjkuOTk4NTtcbiAgICAgICAgLy8gdmFsdWUyID0gNjU1ODk3OC45NDQ1O1xuICAgICAgICBpZiAodmFsdWUxIDw9IDApIHtcbiAgICAgICAgICAgIHBlcmNlbnRhZ2VWYWx1ZSA9IFwiTkFcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBwZXJjZW50YWdlID0gKCh2YWx1ZTEgLSB2YWx1ZTIpICogMTAwKSAvIHZhbHVlMTtcbiAgICAgICAgICAgIHBlcmNlbnRhZ2VWYWx1ZSA9IE1hdGguYWJzKHRoaXMucm91bmRPZmZUaWxsVHdvKHBlcmNlbnRhZ2UsIDIpKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBzdG10ICs9IHBlcmNlbnRhZ2UgKyBcIjxpIGNsYXNzID0nZmEgZmEtY2xvY2snPjwvaT5cIjtcblxuICAgICAgICByZXR1cm4gcGVyY2VudGFnZVZhbHVlO1xuICAgIH1cblxuICAgIGdldFBlcmNlbnRhZ2VDb3VudCh2YWx1ZTEsIHZhbHVlMikge1xuICAgICAgICBsZXQgcGVyY2VudGFnZTtcbiAgICAgICAgLy8gdmFsdWUxID0gNDM0NDU2OS45OTg1O1xuICAgICAgICAvLyB2YWx1ZTIgPSA2NTU4OTc4Ljk0NDU7XG4gICAgICAgIGlmICh2YWx1ZTEgPD0gMCkge1xuICAgICAgICAgICAgcGVyY2VudGFnZSArPSBcIk5BXCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZXJjZW50YWdlID0gKCh2YWx1ZTEgLSB2YWx1ZTIpICogMTAwKSAvIHZhbHVlMTtcbiAgICAgICAgfVxuICAgICAgICAvLyBzdG10ICs9IHBlcmNlbnRhZ2UgKyBcIjxpIGNsYXNzID0nZmEgZmEtY2xvY2snPjwvaT5cIjtcbiAgICAgICAgbGV0IHBlcmNlbnRhZ2VWYWx1ZSA9IE1hdGguYWJzKHRoaXMucm91bmRPZmZUaWxsVHdvKHBlcmNlbnRhZ2UsIDIpKTtcbiAgICAgICAgcmV0dXJuIHBlcmNlbnRhZ2VWYWx1ZTtcbiAgICB9XG4gICAgLy8gZm9yIGNoYW5naW5nIHNwYW4gY29sb3IgY29kZVxuICAgIGdldENvbG9yQ29kZVNwYW4oZGF0YSkge1xuICAgICAgICBpZiAoZGF0YSA+PSAtMSAmJiBkYXRhIDw9IDEpIHtcbiAgICAgICAgICAgIGlmIChkYXRhID09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICBNYXRoLmFicyhkYXRhKSArXG4gICAgICAgICAgICAgICAgICAgIFwiIDxpIGNsYXNzPSdmYSBmYS1sZyBmYS1jaGVjay1jaXJjbGUgdGV4dC1ncmVlbi00MDAnPjwvaT5cIlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVmb3JtYXROdW1iZXJXaXRoVGhvdXNhbmRTZXBhcmF0b3IoTWF0aC5hYnMoZGF0YSkpICtcbiAgICAgICAgICAgICAgICAgICAgXCIgPGkgY2xhc3M9J2ZhIGZhLWxnIGZhLWFycm93LWNpcmNsZS11cCB0ZXh0LWdyZWVuLTQwMCc+PC9pPlwiXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChkYXRhIDwgLTEgfHwgZGF0YSA+IDEpIHtcbiAgICAgICAgICAgIGlmIChkYXRhID4gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVmb3JtYXROdW1iZXJXaXRoVGhvdXNhbmRTZXBhcmF0b3IoTWF0aC5hYnMoZGF0YSkpICtcbiAgICAgICAgICAgICAgICAgICAgXCIgPGkgY2xhc3M9J2ZhIGZhLWxnIGZhLWFycm93LWNpcmNsZS11cCB0ZXh0LXJlZC01MDAnPjwvaT5cIlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVmb3JtYXROdW1iZXJXaXRoVGhvdXNhbmRTZXBhcmF0b3IoTWF0aC5hYnMoZGF0YSkpICtcbiAgICAgICAgICAgICAgICAgICAgXCIgPGkgY2xhc3M9J2ZhIGZhLWxnIGZhLWFycm93LWNpcmNsZS1kb3duIHRleHQtcmVkLTUwMCAnPjwvaT5cIlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZGF0YSA9PSBcIk5BXCIgfHwgZGF0YSA9PSBpc05hTihkYXRhKSkge1xuICAgICAgICAgICAgcmV0dXJuIFwiTkFcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgdGhpcy5yZWZvcm1hdE51bWJlcldpdGhUaG91c2FuZFNlcGFyYXRvcihNYXRoLmFicyhkYXRhKSkgK1xuICAgICAgICAgICAgICAgIFwiIDxpIGNsYXNzPSdmYSBmYS1sZyBmYS1hcnJvdy1jaXJjbGUtZG93biB0ZXh0LXJlZC01MDAgJz48L2k+XCJcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBvcGVyYXRvciBjb2xvciBtYXBcbiAgICBnZXRfb3BlcmF0b3JfY29sb3JfY29kZV9tYXAoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBBRkdBVDogXCIjZDFkMmQ0XCIsXG4gICAgICAgICAgICBBRkdBVzogXCIjZjQ3YTIwXCIsXG4gICAgICAgICAgICBBRkdFQTogXCIjYjdjYzg3XCIsXG4gICAgICAgICAgICBBRkdBUjogXCIjZmZjYjA1XCIsXG4gICAgICAgICAgICBBRkdURDogXCIjZmJiNmMyXCIsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZ2V0T3BlcmF0b3JCeUtleSgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIEFGR0FUOiBcIkFGVEVMXCIsXG4gICAgICAgICAgICBBRkdBVzogXCJBV0NDXCIsXG4gICAgICAgICAgICBBRkdFQTogXCJFVElTQUxBVFwiLFxuICAgICAgICAgICAgQUZHQVI6IFwiTVROQUZcIixcbiAgICAgICAgICAgIEFGR1REOiBcIlJPU0hBTlwiLFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0T3BlcmF0b3JCeWxvZ28oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBBRkdBVDogXCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUdRQUFBQkZDQVlBQUFDOEVrUEhBQUFBQVhOU1IwSUIyY2tzZndBQUFBbHdTRmx6QUFBdUl3QUFMaU1CZUtVL2RnQUFEeHRKUkVGVWVKenRYQW1VVk1VVlpSUFpGWkJGa2FVUmQ3YnBMdEVJWWx3dzVMaUZ4QzBSUlFRUm1HblVpTGdRRTR3eEtpNElCbEJFbU9seGlSRlI0eG9qcnJnU0dFWGpGa1ZRRWR3T0hoQkZaY205WGZjek5iLy8vejB6akV6cmRKMXpvYnZxVmRXcnVsV3ZxbDVWVDcxNk9SeTZUUzNyRXB0YTlwMHd1cmIxcWZNQmhIUUZFVnVFc2JXdHowOHlvR04zQXBMQXBZQ0prczBUc2gwQ09yWUY4TEk2ZVZxVWJKNlE3UkJpVXhhUmxObnE1R2VBSm1HeWVVSzJVMERuRGdVMkF5dUJ2Y0xrNmp3aHNhbExHcUxoZXdJbkFCY0NreXFKaWNBd29BL1FPSHM5WmIyQXo0Rk53UEZoY3JsT0NIVHFydmFmeTdVeFNBWnQ2Q2taOW1lbkVKa1dYbCs2aGZjQTVnQWZhZlJ1cVFhK0FFcEphblJEbHJSMDFwSHJ3dVIrQklRY0tkMldBVjFEWkU1eCt1YkFJQm0wczZQWFRpOFQ5L3R2S1hLRGJQdlZ3RVUrL04zcG9QWEFFeUp4QnJBQVdLdTBSVlEyckNHN1h2czg2NXd1MllWQXN4QkY2eDRobmFjdXJvOFBkeXZpSzAyL0ZnRUZOd05la2R3YW1wcHVqbm5DOXliQVNjQm5rbGtPdEk1b3pJa3lXYXVBZlVJVXJYdUU0Sjkyd0RlS3VEZUlEQlU4eU9tY1dZRXlOeXpaUVNiTGt6czVvakVGd0pmQTkyR3pxYTRTTWtwZjFnRnRJeXEvemVtYzBKMFIwbzZJV1ZjSDVlNkxrTnNaS0pQY1pTR0sxa2xDdkJGOWI1YkszNVBjSjFua3VFdjdTTElyczhqT2tkeUNycGhkQVlyV1NVSzgzYzRmczFUdW1iV3lMSEtkZ0hja3U2bk5KVS9YajVBZEtya1ZRQ3hBMFRwSnlISjlHWkdsOGcyU1c1UkZyalB3cmtkSTY0dWZpeUxFTzQ5c0JJNEpTSzhUaE1SOGhIeWlMNmRrcWZ3RHliMmZSVzVmcDh4c0pvdm5rVVdTdlNNZ2ZjOGNKK1EzbFNCa2FEWkNkTTJ3bFpCUFkxbDJSQ3A0dnVSNGFHd2ZJWGRjekc1bktUdS9FbzJhSWRtdnNVdHI3a3NiNkJBU09ZTnJJMENuSzZRYlRYVGdLUnp4NTBubVl5QVJJdE92T29TTWREb25HU0xUS0ZaeE56YXNFbzA2elpFZjZFczcxeGtFUjJjcmEzc0d6ZTZYcEY5WnQ2bExBbDBuU0pzbEdaN2hNczViM2FhVThSdzRxanFFdEhITUZuZFIvYkV6YXVDa053WE9qTm16aFRkcVdsV2lZWEVuendRbm5tdlJVc1ZUeC8yeWxiVzlRc3llM1NiSHl0ZlZlVEduTHh5NTdySHlIV2R4ekhkUVJwNkdzZ0llc1NzcVRZZ3FHQnl6cDNUUEp0NFBUQU51aUZrM3lucWxQUWNNQ01qZlg3SXVaanVFdktHNFZLeDhZMER3OU04dDhrMDVnQkxnTlVjM3oxWGtsNk9sV09iSUxQU2xjK1k4QUt4MlpDWldpUkIxS2c5K0w4YktEMzh1MXFnenU0ZmtIUnVRSncrN3k3d0hhRmxsUXRTeFBHVnp5MGVISTZmdU5VQWhZSUFkSS9JZEJkeVZ4MVp3Rm5Gak1BUm83blZTbFFuSmh4OHc1QW5Kc1pBbkpNZENucEFjQzNsQ2NpemtHaUZtWE9uZXdKMFdxY0RUNzA4NjVDQWgvWUV0RnFtT3RhM1BkZzk1UW5JczVBbkpzWkFuSk1kQ0dDSHg1Qngyemk3cW9GT0JRbUFzOEdzZ0RvUSs4ZWw5MW16a1RlMEltWDJCd2NCd1lDUndITkFYQ0h6WndsQlpRcERlSE9nQkhBNE1BODRDVGdBS29zcjNsZEVPNktkOEk0QXpnVit5M0VReTFUQWlYd3hJQUozMHZSR3dIM0F5VUNSZERnTXFQQnBKakVzMWxNN0hxeTlIU3YrWU9Wc1BlWUlJZ1VCajRIUmdNZkJOZVFkdHhWcmdGZUFNb0tsUDJUYkFST0JKNEJOZ3N5L3ZHdURmd0VHSnd0SXFFeUlpUmdQUEFCOENHMzNsZndrOEN4eHJ4cFZrdU1SVlJpZmdPdUIxWUwwdi95YVZPemxzMENGK05yQU9tQUcwQjZZQnEzMXQvUTRvQXdZcFQzZmdTdUFEMWVIS3JRREdvNzJOTWdpSkowdnJhYlI4Qld3QW5nZG1BbGNBMXdNUEF1K29JMzRMTlBBcHU3K0lZUHFid0R6Z2F1QWFZSUZEOEd0QXQyb1EwbDU1cWRzeTZYTXRjQlh3VDNVVTg2OEMrb1YwNkVDSHZCZUFXY3JQam4wSitGNzZUemJKMG95M3lvaS9UZm1YcUgzck5FQ21pK2g3Z0M4azh6bHdxTWpmb0lFOFIzM0p2SjlLam5XZWxrRUlJbmNHRm9sdEt0blNWU2FlVE5YWENLUDV5ZmdwQWVKMkFNWUFRNENPQllXM3VHazBZNmNaTzB0WWZzYk5ZelpDRXNrUzFrOFRlZ3pRTlQ2dXVFRjVXdG9rL0U2Tll4a3oraGJPeVNBRWNqUXhseHByZGlvOFkrV3NVSWR0MGNnOUlvS1FUZXJ3WVc0NWNhdmp6NTNCOFlVKy85VndHWkI1a2drN1VpUlJibWtRSVhzWU82MitCVEl1bWJZMWlMQ0hwVURHdzRac2hHUUxpV1FwTytOUmxjSFIzelI3cmd3ZER0RHM0U3k1TkNEOXRuSWRTNmNBZ2VzTjRsT08zR1QvNEU3ckN3dUQrS0Vld1VHRWRBRGUwQWkrTW1nV2JHdFFJNmpBWXdGcDI3ekxRdDRMdlJHSE1rSmZZMGJrM3gzNG44cVlHcER1RVVMek96Q29ETW1OY3dqcEZTRzNqeWVYU1lpZDluZWE4Z1g0UEZQSlhVdGxnNGhtK1FzQzBtcUNrRUtWOFJwRzRDN1Z5Ti9SMlBXUFpmd3RJTjBqaE90VTRFTnh5WTJRM0diTTNOQ0JEUjA3aHhLaWdpanduTU11Ri9qYmFVL2pSYVdCTzVjS0ZSVGU2cTFGWEVjbUFiY2F1NEE5QkR3dTI3eE5oR2dtL3dLNEJMZ1orSWV4Qy96anp1aU9KTVRZcmVyWnhpNnd4Y0I4bWRPRnBuejNGVVVJTnplQnozOGtkNmJrMWtiMWw4bEdpSVNhYThxOTV4Q3pSWTBkeFlVeHBQQSt4dHJ3RGI1OG0wWHNaL3EvV29RZ3ZndFFHbEErOGJYS1h4dEZpTEVMN3VLQS9CdVY5ek5UdnAyT0lvU212VU5FUjN1RXJBbVRrVngyUXJ5UXNBYzhidHU0NTE3bktQOEN6TnN1dm9JUE1uYkx1MFd5WE1nT1JSbnQ0MlBuTm5Ea3BsZUhFTVIxTStXbWhQWHdQTUNEWEtlQ3dwSkdqdHlrTUVLTVBaUjVuYzF6d2loanQrcHRDa2JQYmlDWnJzWnVxWE9QRUYvRzF1cGtyMEYzQWVsWGpPajB4cVo4OS9RcUVJOG9aMlkxQ1ptbXRKVkEzNGp5L3hKRUNPdzR0N3NmZW5WRDU0d1g5OHBQNHBmblBDRk9BZU5WQUxmR2h6dU5lRi94RjRibGpSZW11TTE3c0txRTRJRFdESEV2SzYwa05ydzRTci83Z3dqQjl3SE9ERDh1SWovTjdwb2ZFeUY5L0EzRC8zc0NIeWt1OU8rU0dIc0J0YktxaENUc0pxRk1hYUYvY01CWVg1RjNNUFFUY295ajk2RVJaVnpneU5VdUljYjZzZG9raWxKUkJaeXFBbmg0NnErNFhZRzNGSDhqUm5TR09UQzJVK2M2SnE4cWhGQ3ZwNVhHVFVPUWw2Q0pzVHN1cnpOOWhLUzRWbmorcHNEM3lZamZ5eUUrSndoaDRpUEcrb2U0cmR4WGNRUWJOTUtaQ1Z5YzI2UTd6SjVmU2hSUFZ3RVBmejJOUFdSeDlod0xQR1hzWWNyYjRWUjFEWm1vRHVWdWl1dEVYSHJSY1VldjZUeWxQU0xTS3hBU1Q2Yk41WDlVL3NmR2VubTdxd3kyODNTUndaM2xxbHdpNUIwSmNPcXZsb0xFcCtvUU5wYnJRRnRmd2Z2N1JoZTNqKytLUU9iaHpvaUhOdTZNdnEwR0lUeXcvY3RZSHhMMStGTGxyMUI1M0xMKzN0anp4U28vSVNwamdOcmt0VytGMnJaYU92N1hXT2RqYWE0UVFsOFQ5K25jMGRDRHVkUllVL1NtUmpZUFlLZVlnTk43bDVPbWVMNHdPaVdmbHNMTXg4V1lPNnMrcW9QT1NXNVoveFNnM0Q0YTZVQnE1NEIwSGdndmttNnZTN2NsNmlUcVRWOVdTMk85cnRjbkF2eEhpTzl0cklkM3NmS3pIQjZFNmZ6ckVSODlsekpEcEVmRzcxS01QWjh4N1FZZzlDR0dLWisxSlZrSWFldTFtWVFjSDdPL0wrOGNJTmhZd3J1bVIyZXl0RlhQVWNWUlphZEQzN0czZW5uYmExUTN6NXFwaWdHNmNMMW9KOTFhOVJtVDZkV05DajFQbWtRZFd5ay95Mm5LQVpVUCtaQVArWkFQK1pBUE5SemlJUThVZnZKQmUvWXEzNnBWb3g0ZXdIYjN4eGVNbkZuZkZLYnErMlIzQWw0MGpyOUp1NzNMdWEydVFaMjRBd3o5dXkzYk14aDdlSjVlVHdlckUydTRjQjUwTGpiT0dRQ2ZIek0rcHlQT0dhMTFyaG5oT2d2MUNJRmVnTjVPL2s0Nk00VDZvS3FoSjcwUnQvdDA0ak1tdXU5LzBFZDZQSHppakhTMDEyNWp2UTRiK1lIUFhrYlZjR1Y4V2NKVCtsRk9ISytGci9MSk5WSGpCMlVyTTJGZC8zeWRNYVFHOWVTZ2VkZ1h4NGQ4OURZY1VrTjEwREpNMS9WRStrR2VQdFBuTmoraDF5b0plL0cyaFJtZUFNNnRpY3E5RUUvT3JZOUtLL3hHWFNmenlEOEw2OGoreWxnM0RVL1BuYVJ3VTVteDRUV2xKOG82QjNqU0h4OVBwckwrM2NncTFLRm5QcW5POGdUY3drTm9JbG02WTZLb2RPc1BaQlAya0pvbWhLOEl6M2NLb0pPUU40UkRUWURib2ZLS3BLZSt1d2JjbkxhUjlqT2RmTDJNdlZlaFM0V3VGcjd6YXE1SEZuU0YzQzBUeGZ2dTFvbGtDYzBZWHlTT0NXazQweU1mWXhoN0xiMmY4NTErdFdlM2ZrK20yOTVQUlBISjdHNEZ5VlRvSDgrcFhEK2s5ZHBmbjl1Yjh1ZW5ySXQrdFc3OEhpOUt0Mjh6RStpc0crOFVRTWNmSFc3MGhnYTZxQ3VwQ0czaWVzOFdxK05uNlBNaHhyNzlZZ2ZmQk54bnJLUHdUOGJlbDlESlIwTHBiZWI5KytDQ1VjWGU0RGtucEQ0U212azJ0YUlNQjlseXowZG03UHZhaGZ5Y0dKZCszTWIwOTZVWC9WdExwZmVCUUt1Q3d1SnFrMlBzTytrQjNpRG5iU1UrUDVDZU5YbzRoODhiS2hBQ0lkcDAzalZjcnRIemFMd29WYTN0SjBZMFJ3QTlwNmVxTXBjUWprSmVwUmJxOWQ3ZXRxTktweHI3a0prUEdPam1QOHBZcis0RTVhTmIvYnlRQnQ5aEFqeXpQaG1hdlZlOVdlWVNZcXcvaTMzQng5SzA4ZHlCRGRkZzRYcElSK1JoMWVrTGxjL0J4U2V3ZlowNGxzL0hmQjMwZlIzL2Vkd2p4RmhQS3p1UkN4c2ZORDhWOXJxa2trcnd6djB5Zlo2MWxaQmsybVNkb2RGSTR2a205MjFnajBSUmVxU09Vd2Q0OXk3bnFBeDJXT0I2WjZ5Smcxa01IMEI5eDZUZkxmTk4yRHpsS2RwS1NGSDZpZXh1UmhkZitMK1padksxR2lEMFhCK3dEWDNCMmNGcmpjT2R1SjlwSmg2czcrdjVEOTliM2FOUnkwNWFKakk0a2lZWTYwNVBWQkY4aWpsWUhUcFVsZjNaMklmYkI2c3VYcWZTTFUvelJIUEZhMU9hQnFPT0dLL0J3VjFnYjloWWtraVhmbUZnZzVPbGc0eTlBK0U5eGpCalhmSDlWT2FSNm56dTlQaU02UUxwZEtKMEhLaDZEOUJJL29PeGwybThKK0dtNXlFTmtLTWxWOVgrWVBtODUvOVdBNVAxOElVT3QvWjhBOWE1NzVoaXRtOFRsZXFqanVJQ3lqTUpuOGZ6RG9QMi9EcFRmaGZ5aGc5QmNWNjhsMFl6MVZTTjV5NkRhOERiU2w4cUpjL1hvSGpWeWM4NmViUEgrNFl1aWZRRDcvUnpKTnJjd0x2L2dqRWwzdVhXWEJIdDZzSzZPTHQ0eTNnSWRqU05wRk1MWTAyZDIwYWFGWnJ0Q2VvYm1qbmFmejZEZWoxTHU4UGkzaGJCazZXYlZ4L3ZkQTZ6QXlyRkRjZkg5UnpGT0JONnFXTjRWY29MR3UrYWs2ZklIbFVBeStvRTgrUC9xUUliMTgzWWRZS05iQ2hsT0RyYUtLMkh5S3V3WTlLalpPN1ZJLy9rMDE3amJ1UnNZZU5vZnJxcnJuWW0vR0VmRjlldXFwZXk3WVBNZEVGUk1VMWFoeXIyZzRldTBLbHBYMnVPMnpwMU9RZm45RnFhNlRVdzlxRXlHZVUwblJvdm5MdE4yNzdhREVaMzdyV3R4ellGUGJmaEQydTRtRjVjMi9wVU4yQkU4bVRQOVdjbWY2OVIyL3BzVTlCMDUrN3JqcWpmMnVWNkFDbHNSOGE5ZkM2SC93TkF3cm4yL0ZtekxnQUFBQUJKUlU1RXJrSmdnZz09XCIsXG4gICAgICAgICAgICBBRkdBVzogXCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUdRQUFBQ0xDQVlBQUFDWDhEd0RBQUFBQVhOU1IwSUIyY2tzZndBQUFBbHdTRmx6QUFBdUl3QUFMaU1CZUtVL2RnQUFKRjVKUkVGVWVKenRuUWRZRlZmYXgwVk4zTVN4VWtTUUl2YmV1MGFOZlpOdHlaWms5OXR2OTR2R0V0T01xOUhZRzJyc0dzVUdFVVFwaWdWcElpSVdOUGF1Mkh0WExDRnRFejNmLzUxejV0NXo1ODVjTG9pQ2hQTTgvMGZ2ek53cDV6Zi85ejN2dVplNXhZb1Z0YUpXMUlwYVVYdldyZUhLOHhVYnJqajMrL3JoWjhmVlgzNTJjYjJ3TTJGMVE4OHNxTFBzOUtkUWkxcGZueXFSMytkWTZGdVR5QXZGR2tkZThHa2NjV0ZtbzVYbnZ3VVUxaUQ4SEhTV0FRaXJDOVVKUGMwQWhOWCsrdFNCV2lFWlhXcUdaSlRNNy9NdWxLM1pxa3RlemFJdmhqYU51dmc5d0RCQVlZREM0QklWQ0Z6Q29ZU2UwWUF3dUlRQlNGcU40SXdHTllKUHV1VDNOUlNLMWpMbVNva1dNWmZiTmw5MTZadG0wWmNZZ0RCN0lPZFlmUldLblVzSUNBT1FLd0RTdjlyU2srWHkrM3BlNk5acTdkVjZMZGRjaVdnUmN5V3IrZXJMREZBWVhHSU9SZThTcUpZVnltTUFPVkp0eVlsL0JpdytVZVNXbkxSMnNkZEt0VmwvN2VQVzY2NmVBUlFHS0F3dVlRUkZkVW0wQUJJcGdGQXVjUkM2YW9aQXdSbXNldkJKQmlpUEFHUUZWRFcvcjdQQXR3N3hONHExajd2UnB0Mkc2enZhcnIvR0FJVnBRQkM2T0JBRGx6VFV1YVMrQmtTRUxza2xyUHBTUUZseWdnRkladFhGSi80VHNPaDRxZnkrN2dMWE9pWGRkdW1ZZUt2VmF3azMxd0RLejREQzJzWmVWNEhBSmN6T0pRSktFMEJwbkxNRUR5aXFTd2dJQXhBR0lPZXFManorbnYvQ1kwcCs5ME9CYUs4bjM2blFlZU9kd1oyU2JsM3ZtSENMZFlpL3lRZ0lYQUlvVnBlb1VHSUVGQldJZVlKdllKRGdUVnpDd1N3OC9uUFZoY2NpcXdZZHErY2ZkS3g0ZnZkSnZyU3VtKytWNnBKeWQyQ1hUWGVQQUFxRFN4aGN3dUFTUUxuQm9SaTZoSWN1ZllKdmxLTUVMMXl5eE9JU2dnSWR1d2Nvd1ZXRGpsYko3LzU1cnEzYmx2dk51cVptaGdQSzk0RENDQWhjWW9WQ0xvbTNkVW5ydFFhaEs5c0VmOFkrZENIQjE3QW1lTmtsQklRQnlHTUEyZSsvNEdqdnF2T1BGbTYzOU5qMm9GejNyUThXZFV1Ny8wdTNMWmtNUUZqWGxIc01MbUdhU3hDNmJGMUNVRlNYWExOeFNRc25oOEZ5Z3EvdEtIUlpYUUlvUjFuVkJkRDhvNGY5NXg5cGxkLzlsdWV0NTg1dnkvZElmelNveDQ2SDV3R0ZkZDk2bndFS2cwc0VsTHNxRkJ1WGFGQlVsemhJOEhxWE9KUGdiWWZCbGdSZmRaSEZKUllvQVBJZEZPWS83M0F0Nk1WMlRJOGREMXg2N256VXErZXViL2ZnM3llQXducHNmd2dnRDFRZ3Frc0lpdVFTRFFvSFlwdmdOU0NrRms0bWVMbUNyNXRkZ3JkeHlUSE5KUVNGK1g5MTVBNkFqUGFiZC9qVi9PN1hYTFh1V3pOcmQ5OTJmM25QOUlmZndTRk1GUUhaOFpCeGwzQW9YZldoQzBBNkd5UjRZNWRZYTVPbTBqQTQyd1J2TkF3V1VLb2FoeTRDd2dEa0NZRHM4NTk3NkMzZnVZZGVqTm5renZGWFgrMjY2ZFlIM2JiY3k2RFFCSmVvSU9BU0s1VHRHaFRiMEtWM0NVRXhHZ1pUZ20vcGFCanNJTUhYc2FuZ002d0pYZ05pbStBNUZLdExDQW9EbFB0K2N3OHQ5SnR6eUQrLys5dGhhNy9oY3MvT1NUZk9BQWpybG5xWGRVKzdoNDYvcjdwQ2hiRkxjb2tVdXV4Y29nMkRrK3hkWXBUZ3pTcDRVNWZZSmZpVE5xSEw0cElnblV2bVc0QXd1SVFCU0pidm5FT1QvV1lmTERoVC9NMGpNNHEzV25PK2VadjFsNkxieDExOTBqSHhPc0xPVGRZdDVUWnl4RDEwZWlZNjM5WWxQV3hDbHhNSlBwNURhWmZUQkc4eXoxWEhJTUhYQ05ZVmkvb0ViKzhTNXNlaE1BQTU0VHY3NEx2UUsva0tvMFZFaGx2TDZMUFRXcTI1OExEMXVrdm9zQ3Zvdkd2SUFUZlFxWERKNWpzNmx6eVNYR0lOWFhZSlhxdE5oRXM2NmhKOG0xamJlUzZuRS94eWgxUDBSaFc4Y1lMWEFZRkw3Z0RHTXNnclgwQTBERGxVc21uNGliN05JMDZkYUJWOTlrbXJtUE9JNnhmUVNaZlJhVmVaNXBLdTVCSTFkR2t1ZVdpYlMvUUpQdFUrd2V0ZGt1MDhsOEV3dUtIQk1MaU9Qc0VIMjg1em1ZVXVmMnVDSjEwQmxDR0E0Z2NvK1RPbDN5RGtjTk5Hb2NkU21vU2ZaTTFYWnJDV1VXZFlxMVhuR0Z5Q0RyckkybTY0akk2N2hvNkVTNUs1U3loMGNaY1loQzdLSlZybzBseGlrK0J2WjVmZ2YwQ0N2d2lYWEFDVTd4d21lTHNQc2h3bmVEdVhXRVBYRTcrdmpzUUJpR2UrUUtCV0syaXZXNTNGQjJiWER6bjhVOE5sUjFuajVTZFkweFdBRW5HS3RZd0dGSXRMS0hSZFJUSytqczZFU3phUlMrNXdsNWdsZU1rbFJoVzh5VEI0WSt2MTF6ckJKUzlyNTloeTllVVNBTklLUUZZZ3dUODJucUkvYTUvZ0RZYkIxZlR6WEFLSVB3OWRJd0hGNGJBM2E3ai9TMURlRDQycnp0MVZ1dnI4M2Y5Yk0yanZwZHFMOTdPNlN3K3hCbDhmWVhBSmF4SitnaldEUzFwRW5vWkx6Z29vRnhIakVicmlyN0pPaWNJbERoSjh6MndTL092Sk5nbitDVUxYT1FENWU3dTRHeStablRPQUZBZVFMZ0NTQ2lBL09Ec01ybVhtRW11Qy94bFFCZ0dLVFhoQ3h4ZUhXa0tUb1YzUVE0aEJ2MEFYb1Zqby95QlBLUGN3ZkdlbCsvdlAyYmttWU40M3JNYUNQYXpXd24yc3pwSURyRjd3SWFhNkpPeTQxU1VVdWxacm9Vc2srQVJLOE9RUzJ3VGZVM09KS3Z0aHNJbExma0tDbncrWCtEaDcvZ0R5Q29DOEJWMDFIUVk3bUtJUHNLL2dsd0tJSGtaNUtBejZUa0J3cExQUWUxRE9oOGxWcG0ydDR6TnorM0cvMmVsUDRCSUdsekM0aE5WZVJDNDV5QkM2dUV1V1cxMkNFWmV0UzZRRTMwMUw4RnVsQk8rb2dyZTY1QW1ncENEQmR3S1VYSVVBQUtrTUlHTUI1SUZwNk5JbGVMdlo0RVhIMHdIRlZ3ZWpNWFRFQ1JDeWZvUUNvVEpPWDREM2xOUnFWYWFtSGZhWnZvMzV6dHpCNEJLbXVtUytjTWxpNFJLRUx0VWxTUERON0Z4Q0NaNFBnenRKdzJBMWRHa0pYaG9HOTVUbXVTaDBkZVVKL21hWGxIdDlBQ1ZQWWpHQWVFRWI1Tzl6MVErenpuUFZOaDhHUDBZK2VWTUh3d002bFVNWXN1WTRkZEllNDVKS1ZnNU1TUU1VVnVYTHJjeG5CcURNU21ma2ttcGY3V1kxNEpKYWl5aDBjWmRvQ2I0WmhhN0lVOXdscTg5ak9Bb29TUERrRWtydzZqRFlVc0h6Qk8vQUpiZmdrakdBVWpFdlFPaWdGSU5EMmtLcEFQS2prL05jQndERk1xbUl6aXdMYlgwS0dLUW4wTyt5UFdIM2NVazlQQ2R1WWw2Qm01bjMxQzBNb1FzdTJjNzhaNU5MS0hUdDRhRkx1TVNhNEUrcW9hdGxsRWp3YTg1emw4UmVzUjBHeXdsZURJTjdXUlA4VDNCSkhLQjB5V3NRK2dhSFZJUUdBY2c1SlBnbjlSd1ZpMHRQenBUZmk0NThTeVRzcHdIQ2hNUE1QOHQzSGJLcWxOdll4RE1lRTVLWjU2UVU1ajJaWEpMRzFOQTFpNGV1YWwvWkp2ajZ3WWNkSi9qMVdvSy9ybGJ3M0NYNkNsNGRCbThGa0s2b1RWNDJQY0U4Ym5BSXlRTlFoZ0xJWFpNUHNoNGduL1NTMzRkT1RNa0RHSnIrWlhxQ3JpTmkyN2lPU1dUdTR6YXlTZ1l1UVlKblZlZHBDWDRmNDhQZ2cxYVhMRGNZQnErekRvUFZCSjlzbCtBZkFNUVhBSkp2UlJhQWxBQ1E1c2dsaVJnRy82TDdQdGRaaEM0L2JWc1JycHdaVVRtclVOTVRjeDBWUDVpQXVJMU5ZdTdqdVV1OHlDVlRoVXZrQkc4MkRBNDNId1ozU0xDWjUzb01sNnhIUHFuMVhIcmRpUWFIRkFlUVhuREpGV2tZdkFjdXNYeFNpQTU4SXc5aGtBNUJ4aldWNitqNCtRUkVoVUl1bWJDSlZTYVhVSUtmUmdsZXVJU0d3U0xCeThOZ09jR3JMaEhENEZieU1EamgrbU1rK0dTRXJ0OENTb0g4U0JRd3lrQjk0WklMZ0pJc3IwUG5EY2xqSU9jaDQ4R0w2K2lFcFJvUVY4MGxGTG9tYnhZdTJjcGRNcHU3UkUzdzBqQllEVjF3aVRYQjI3b0VDZjRtRXZ4a1ZQRGxuMHZQUG1VRGpMcUEwbDllaHM0YmxjZEFMa0h1aGljQUVMTXRRSVJMTEFsK2lrandjQWtsZUQ0TUZxSExiaGg4M0hhZWEvVzVMRUNaRENqVm4wdFBQc09HenV1ZHgwQXlzc3hHV29Bd1V3WmlsdUI5MUFTdnVVUlU4R2J6WEZHbnR5UEIvd21oNjdtTm5wNWx5K0xWZVY0Q29YckdPSFFEd0hROUVFcndta3U4REliQkRoTDhYU1Q0ZndCS29mdnF2NGo3ZVFWa25PbUJqSURZSi9ndGhnbGVtK2VxdlJDVi9Kd2RhWURpOUNUZ2k5YXkrRnhVWHNENEw5VEE5RUJtUUNqQmUwZ0ozdHRnR0V5aHE5cjBORmI1azFEbS9uN1FUTk9ERklLR1Rxd0ozYzBESVBPeUhFM0htd0tSRW56bFFOc0U3emNybmZsOXVZVjVEWWxrSG4wWE12YytDNWpiKzBFem5sdnY1RU5ESjdwazhXbjBINTRDeG1tb2dzTURZZGhyQ29RUGd6Y3k2enhYbWdyRmE5UjZWbWxnaUFwQzFmdEJ6TDF2MFBUbjFEZjUxdENacGFENXVZUnhGWG96MjRPNGprbVlaZ3BFU3ZDVmtlQXJqNGxqSGg4RVcwSDBDUkl3NEpKK2k2WTloejdKOXlhY01nQjZuQU1ZTk14MWJ2Z1BJRjg2QXFJT2cwZHVZQjZEVmtnZzdHQXc5LzZMcHo3anZpaFFEUjNjRElxQWJtYnhhWFdqNUgwc2kxZjVidko3ZmFidEt3a1pqMFRSNGVaQVJzVXp0OEZSdk5NbEdHN3ZjeGdlVmhqTVk4Q1NLYytsSndwUXkrS2ZxMWZKNGxQek02QklLRlJBYUF1VjFyOEhJSXBEN3hFVXc1Mmk0NmNhaHFyUFk1ajdnS1U2VjFoaGFNN3c0REFReXBaT2Z1WTlrTTlOM05tbVg3Unc0djIvZ1lLZ2ZZNkFUTEdCTVNLV3VYMFVhZ2ZDRElZN2g4RThCZ2IvR29BRVFGdWdONkFjZmNTTTdldEFTUkNERHB1Q0JZUkFDNGhCSzNtSEc4QncxMkQwVzhnOGJKMUJNRmlsRDM4MVFESkZwOTRRZC91Zm9KcFFCUTJTQ0VzS1ZCMzZHN1FTK2xHOEx4c2dvK0lEemNLVGJsaHJGS1l3L0NVWUlhelNSeUdGSG9qdmwzc0NmS2Z0ellTWTFMbWtxMUF5RkFKOUJTMkJZcUdMdXUwMEhZR001L25jK3k4Sk5BV2hoMEVnREdGOHpTcDl2S3p3QTVrS0lGUDNaQUlNSXlnR1lKeVZBeUI5Rmt3MGcrRW13ZENIS1lMaFlZWEJLbjBTK2lzQXNodEFkbWNDQ2xNbHdQamtITXhSeVBocEVtWkFMREEwRUhvWUgwa3dQZzFsbm9QQ0NqK1FLZDhFUUFDeW0zRlp3ZmprekRFT2dVd3dEVk95SzdRRS9tRXc1UXVBQUl4UExEQlk1YytXRjM0Z2szY0YrRTRHa0NuZk1DNTdNRTZHc21NMEJEWThpQzJRSUdNWUJFTExHY1l3bU5mZzhNSVBKQkJBQW5kbEFnd0RHR1lCWStDWWJFS1pReURqYllhMXR0VzNkVmlyZytHcHdSZ2N6cnorczRKNUQxbFo2SUg0VE5vWjRCTzRNOU0zY0NjREdDNFpqSkZqTEhCc2dCeUhqUDhVRGpER3lRV2ZVWTJoRDFPZWtqTzhBYVBLa0pYTVoyakVyd0JJZW9EdnBQUk0vTXQ4VkNnQ2pKT09rY0NZQXdHTWNTWlRJV0pZR3l5TnBLUXdCV2NRRE8raGdQRjVCUE1kRmxub2dWU1ptQjRBcVVCOENZb0JHRCtBOGNzZXpBbmZhZnVNSDBhQWZESFd6Qm1WYkllMTNCazhYM0JuV0dCRU1iL2gwWVVlaVBlRTdRRlFacFdKT3hqQXNDb2FsT3pBMklleUU1QUprSDZMeGhvNXc4TU9ScGdLbzdJUmpDK2ltZitJVllVZWlOZjRiUUZlNDdkbkFnb2pPUXZHSUpTZGdFeUE5Rjg4eHQyOCtyYUJZZXVNU09ZN1BJcjVBMGJWa2F0WXdLalZoUi9JdUswQlVLYlh1RzBNY0pqVFlFVHlseHh6RW1Ec3B1YlZCbWVNdG5kR2lBTVlFUllZZmxZWXJOcVlOWVVlU09XeFd3TXFBd2pFdkZRUm1PMTJZSHdjT0VhQU9Ra3dKa0ErV0RxNmtrR1k4clN0TVRDc0ZUQ0dSU0pmeU02SUlSaXMrdGkxaFI2STU5aTBnTXBqMHpJQmhubEN0bUFNSERQUkZveVAxVEVaZ0dQOHpVVWs3MUVPQ3o1ZVkraGdyQUtNMVFMR1dsWjkzRHBXWS95NlFnK2swcGd0QVZBbXdEQXVRTWtkbUF5NHhnVEloOEVqVldjNGdPRWp3cFFLWTRRdGpCcUFVWFBDZWxaellteWhCK0l4T2pVQXlnUVVwa3FBeVlWalRxSElOUDREVURoanBGSEI1MlV0K0t6T01JRlJhMklzcXoxcFE2RUg0allxTmNBZFFBQ0ZrVFF3bmhJWUp4MERJT2ttUUQ3K2VvUWRERFZuY0JpK0ZoalJMSUJnakRhRXdlb0V4djhLZ0d3T2dESWg1aTZnbUlJWnB3ZWpKWCtDc3VNMG9KUTFQSWpuSjZFakt1bW1RbFFZbjhzdytFZ3FZTFNhdkNVWUd3QWpqdFdkSE0vcVRra285RUJjUjZaVWhlNjVqVXhoN29CaUJxYVNDa1dFTWpzd2NNejQ3YWNCeHdUSW9MQXY1S2tRYThFWHFSVjhwakRxQkhJWTlhWW1zdnBmSmsxNnp2M3ozRnZGRVp0cXU0NUl5UUlVUmlJd2JnN0EyQ1IvV3pCbklPTmZiVUNOTWR4cEdPTk5ZRXpieUJwTVR5NzBYeVd0K0VWeUwrZ0p3RENBWWM2Q3FTU0JFWTRCa0szR1FKQXZocHRNaGZDQ1R3OWprZ1lqUVlLeGlUV2NtWkxhY0ZicWkvR1F5RnkwQ3NNM3VsVDRZbU5vaFMrU0dha2lLZmRnemtMR2YrSUhHTVBrcVJDMStqYUJVZHNHUmhKZ0pHc3dHR0RjYlRSblM2SDlPWWh5dzVKOHlnL2JlS3Y4OEkwQXN0RUtKWGRnQUNUTkdBaGNNY3hTWStpcmI3WGdzeGxKVWZLbWZNRmh6Q0FZbTFtajJhbXMwZHcwMW5qZXRrTDVoV3ZsODhSaVpUOVBuRmwyV0JJck4yeWpLaFhNY0E0bUY0NDVCeG4vV1FMeXhlZSt4bE1oS295YUUyS3R6dEJnVExlRjBaaGdmTFdOTlptLzQySFRoVHU3UGVmK2V1Wk5HWnJRdmN6bmlZOEFoWkhLNmNIazNESG5JR01nY01aUURtTzF6aG5yakoyaHdaaEZNTGFvTUpvQVJ0UDVPMWl6b0hUV2JOR3VyQlpMZHIvUk1uaHZ3WG1NYWk2Yk1pU3VlT2toOFYwQjVGdUlrY29JS0xrRkk0Ykw1MUZrR3YrZE9wTDNVR2RnMUhNRVl3SEIyTW1hTDlyRkFJTzFDdDc3cVBYWCsxZTFEVDNZcXUzeXd5OGttTkwvaWZPR2xwUWVFcGVwRElsbkFNTTBLTTZDY1JES3prUEdRRkI5RDVVbkNXdEtPYU91eFJrYkJZd1VCekMrMFdBd3dHQnRRZyt5ZHNzUHMvWXJqcTN0RUhIOGhmbGowTktmeFJZdlBUaDJZT25CRzI0RENOTUV0N0RjZ0NsdkRPYThxeGtRaktRK01xdStlY0duMWhoV0dITUFZOTVXd05qT1lTd0VqTVhmc0paTDkxaGd0QTBEakhEQVdIbU1kWWc0d2RwSG5meXAvZXBUVXpyRW5LblpZZTNaQXZrbjA4cW42OG9vZzliOVdSbTAvaXlnTUZXRE4zQkpZT0FZRlVxT3dOZ24vMU1BWXp5WFZXM3Myci9Zemt0WnBrSzBnaTliR0MwSVJvaUFBV2UwRHo5Q3p0QmdzQTZyVGpIQVlCM1duanZaTWZiQzI1M2pMam4vcUx0bjNNcDhzcllFVkVmNWRHMDRvSHdQS0F4UVZIRW9lUWpHR3NyMkFJcHh6UVlZQVJabjJGZmZyQUd2TVhRdzBtMmRFYklQTUE1WVlIU0FNOW9EUm9lb0RCa0dBd3dHR0Q5M1RieTZwL3ZHNnoxN2JMcVpyMjRwKy9FYUQyZ0pnTnlGR0tCQTY3ajBZQnc0SnJ0UVpqQmNYbXA2VWhqYUZvY3pEdGxVM3lKTU5kVERtQThZTkpKYXVNc0dScHRsZ0JGMnlBb2prbUJZbmZHYUZRYnJtbkNWZFV1NnhnQWpzMGZxN1RrOTArNVZmbzRNMUZiMm85VWx5MzBVODA3WmoyTU9RazhBaFJFUVRRN0JPSEJNRG5MTXZ4MmVJR0M4WVowS1NiYkFVQXUrT1VqZU9oZ3RER0VjVlhPR0NpTWF6bGdOR0dzQVk5MDUxZ2t3WG8rN3pPQU1CbWNRRE5ZajlRN3J1ZlVlNjduOXdYZTkwaCtONnJYcjIyY2V4c3A5dUFwYTNSbzZCQ2lNSzRZQml0QWFWdFpaTUxsM3pEMkFNZjQ4M1FKa2NrS0plbE9UOXFoaGFvYVlDckZXMzFUdzhScGpJUi9XMnNGWVFUQ09TekJPQ3hqbkFlT2lnSEdOdzBpeHd1aTEvUUhydGZNUnBENTdNYVBIdHZ0djk5aWE2ZmhrYzlFcWZCRGxVdUdENk5ybEIwYXZMRDl3MVE4QXd3QkYxYk1FWTVCam5nRE1QNXc2YVRqanpRYlROOTNSbk5GNGpnWmp1eFhHWXNBSTNzTmFDeGp0cEREVkFURGFXNXh4VmdmRDNobTJNQjZTVXhoZy9OSjl5NzBsM1ZKdTErbWFmQ3RQSG5SV1lVQlVHYWczb0p3SEZBWW9YQ29VUFpnWU96QlBFOHBldFFlekUzTHVqMGJoak9JTloyNStFelhHUTdYR21NZXI3NmE4K3ViTzBHb01GY1poRTJjQXhuckEyQUFZOFFKRzhnMDQ0NWFBa2FsMlBvR3d3cmhQTUZqM0xYZlZaek1DUm1ibnhPdnpYb3U3bXV1ZmdxallQOEtsWXYvSWR5c09pRHdJSUw5QURGQ0VKREFEYmNHVWV3ckhLQ2FPRVdCU0FDVm56dzZETTBvQ1JsODQ0eWFmQ3JGVzN5MlhTakNvNEVQT1FNRUhHQ2Z0dzVTQTBVMXpCc0hZd21IMDJnRVk2WGJPQUl4N0dnejFHWTJ2eFY5NzNDNzJ5dUUyNnk2KzAyYk5oUno5YUlwcnY1WCtidjBpd2x6N1J6d0VGRWFxTUlBVXhheGdvaDJDeVVQSFBBR1VYWUJTQThvUkQwdHJzbUJIbGFaQk96ZllWZC9MTE5VM2hyWEhlWTJod1ZoN2xuV0VNenB2dU1TNnhGOVJSMUlXWitETzc3bE53SkNjMFFQT29BY3NkMC9WbkhHVHdSbnFrN0hieFY1bWJkWmRZbTNvV2NDcnoxMXVGWFdtZDh2STB3N3Q3dEYzeGF2dWZWZk1kZSs3OGx1M3ZpdVpXejlTQklCb3lpMllYT2VZQndEekwwQjUrZ2U1d1JrdWdQRU9ZT3dBakYra3FSQXJqRldBRWFQQnVDREJ1TTVoYkpaaFBCUXdIbkVZOVB4ZUNVWVh3T2lrd3JncVlGd0VqQXVzTlQxNk51b01heEZ4aWg2MHVhZEoyUEYzR2k0N1l2T2RKbzgreTh0VTZoUGV1OUw3NGVjOTNsL0JBRWFWTzBHUndMZytQekEzQUdZV29PVDljeVlCb3pRS3Z1R0FjWTFYMzhlbDZ2czBML2cwR0FtU013Q2paNW9CakIwY2h1eU1MaHM1akE1eFZoaXRDUVk5VERQcXRBYUROVjErbkRVT1BmcWtRY2poN2ZXV0hQeHRRR0JxS1kvZVljMEE1QUNBUElZWW9LaktKekEvUW9rQVV4MVFubDNSMjNiNVlSY2s4QUE0WXlGZy9HQUhJODRLUXgxSmJiNE5HS2d4MFBGR01IcGdYWGQ2U1A4bUFTT0J3MmhMTU5ZQ1JndzU0NXo2Q1BNV0t6TlVHRTBBbzlHeW93d3dHR0N3T292Mi8xQjlWdnArcjgvVzNIZnZIY1k4U0gyV014Vktub0RKY2ZJL0RDaS9CWkRuOXlPVVNPQ2xFS2JlQm93RFJqQzRNOHhnUExEQ0lHZHNNbkNHRFF3S1U0QVJEaGhodGpEb3NZSzFndmF5R3ZOM3M0Qlo2Y3g3VkNLck5DQ0NRK205M0E2TUNrVVBwaCtYYXo4cmxPekJyRElDa3dVb1U4dDhISk4vTTlvZDFwMHIwVEgyd2o4QTR4R2ZDcmx1NDR4ZVNOYTkwdTFoZEJmT29HZkJkOWw0Z3p0akE1eXhYb054WHMwWlNON3FiMTNKTU9vSEgySjFseHdBakgyczVvSzk2dU1GQStidVl2NnowOVZIb3Z0TTI4cThSc1R6RGpkMWpEbVk3Sk8vb1dOV0FrcisvU2FWdm5WSnVPb0dHRE1CNDNhUFZCbkdJM3NZVzZ3d1hnZU1qZ25YV0hzVkJrWlM5RE1YaGpDT3FiOVhZb0d4VU1ENDZoc1ZCajJRMDNjR2gxRmw2aGJtSGJpWmVZNVBaaDVEMWpIM2ZyWmdMSERNUXBua21HeEMyYzhBczczY3dPZ2VnRklnUDBvb0JoaDFBU01SMWZkL0xURG9CMXZVR3NQV0dhOG5hVEN1Mk1Cb1pRUGpoQXFqMFRJQlk3RUdZNC82Tk5TcW1qTTBHRk1FakltYm1NZjRqZXBUOEZ4SEpUQzN6MktZT3pvL04yQk1ISE5OVlAzR2YvUmZrQnFxN1ZLQThFZkEyRzlYOEJHTVpBRUROUVk5RDk0Q2czNElKdG9Lb3lsZ05KYWRZUU1EenBpemsvbk4ybUhqREM4YkdMcG5mNDJJWTI2RFZqTjNnTWdSR052ay96MmdUQUVVUDZoZ3VzS3NBWVlMWUV3RWpQdDhLdVNPcGZwV1lRaG44R0d0Z0lGaGJmTVZnTEVjTUVJRmpLVUgxZWZMMTVKZ1ZMWEEyR1p4aGdYR09NQnc5S2pDMFhETWgxRXFsQnc2Wmpma2wvMlZGL0RXTGZXdUoycU1CYWkrYjRtcEVOWSs5b3FvdnJVYTQ0eFVZM0FZNmtoS2hVRWpxWDNxU0tyYVBGc1k5R1RVS2xOU21kZWtGQldHZTNZd1pJMkVZejVaWlJ2S2V0dUIrUy9BN0FhVTdsQ3VueUJYNEJxcTcrSUlVMTNoakMzdFlxLzgwbGFHRVcwUG8ySElFU3NNT0lNZVoyNERZenFjQVJqZUdvd0pISVpUSVBRYUhzc2QwMGR6ekhMTk1UY0FacXpIKytIUC9ZT3o1OVl3bW5vWjFmY0F3TGhvRDBPdHZxMHdwQnJEQW1QbUR2V3AyajZ5TTU0R2hxeGhBUE5CQkVINUVZb0ZtQmZtR3pKUDFaQXpYQUNqQ21ETUFJeDdXdlhOWVZDWU9tUUhnMzZ6aEdCWW5ER1p3NmcwSVJrd2twNGVCdGRqNUpkOWJoOUhkM2QvTHpSL2Y0bzd2eHBHVWdFbytIYnFwa0owTUhqQko0ZXB5bmtQSTh0MWRPSUExNUh4TCtTWCtmSzhZVmo3QmdxKzlOcUw5djljVTVzS0VUV0dIMVhmZ0tFV2ZKTTNjeGdvK3R6SDVnbU1POUEwMUNwdTJaL2xyNnpWWHJpM0FxcnZpZFhuNzc1SXY1bG9DeU5OTGZncVQ4d3pHRDlBcVhCRjE0b2o0d3ZrYjJFVmlPWTdMcmtZbk9FTkdGK2k0SHRrTXhXaUZuekp2UHArT2hqN2tTdTZRNy9PUEpHYkJsZVVCSXllZ0xFTk1KNVVGdFgzVXpyakVSd3hFU0J5L2ZuOHI3NVZuckNwT0p6eE8xVGZONTB1K0l3ME9tR1o2Nmg0NDE5REsybzViMjZqRTh1NjhoK2N1WklERUQ5QzZVallyMWNjdERxL0w2SHdOZHpseGRIQlRhRWdLRU1rWnFOYTRnYmNrT0k2TXE1dnhXSHJpMFpQejdxaDAwbmxvSHJRbTlBL29YOEJ4TnVBMEFJUXZNc1BYRmswY2lwcVJhMm9GYldpVnRTMHBuUVorU2RvdmFSUTZBK1EzZWZJV1BZWkZBa0ZRNVhFc3BGaTJXTElGWElYcjBrZmlXMCtGSytYUVY2NlkydmJ0cEdXdDRYV0NQM040RHcra041WFV5enJERVdKZFNYRnNqQ3h6UXk2SHJHTjlqNjdYOS9Fc2hMUXY2RkZrTjF2d0dPWkh6UVhHZ1JsMTYrMHIvR2lQeWRwNTJTMFlTK3hnYWJORURPUTNROUhpZzZpZFpsUWdGaVdJcGJkaG53aGYya2ZLOFUyNGVKMUZsUmIydDhvYWR1L1Nzdi9JaTBmWTNBZW9kTDZObUxaQ2ZINmtRVHBCN0dNMXIwSzlaYmVaL2ZBQXl6ckJOMlZ6MTIzZnBiMC90YWkwNXRBazBYZkpFSHpvWmVFRG9odGowREczL2ZGaXVrbUFFaS9TUDkvUWdmVHZYZHRBUWF5WHJ5K0FMbm5Fa2c5NkpKWVA4ZGcvUmRpM1graDZsQ0M2Q2U1RHc5UzUrY0dDTzNvTytta1NRT2hOOFJkUnEramRPOWRsOGRBUnVjaEVPcnczMEUrMG5iWkFzRy81UlIrbDJ0NkQ1b052U1l0MHh4WEdub1hha2ZBcEgxOUMvMzB0RUMraHdaQVU2UWQ5NGRlZ1k2TDEzUkJKYVQzYW5kaFhnRVprMWRBVEs3VkdTQjB2blRIUDNhZ2xicjlVcDdVb3NsaHFLRmlEZjI1QmtLZDgwZm9Qem9nbFB5T1Nzc1U2YjBiQ2lFUTBqNXB1WkY2NmZaYlgxbzNXeXlMZXhaQXdnU1VxOUt5Z2VKQ1NJZkVNZ3AxdzhReU9aa09nVDZYM3J0YmJQT05lUDJqd2tkbDJ2NWlwVzBYU3N1RGNnQmtrZGlua1g1MkFHU0dkRHp0N3I2dThJSE9VTVdhTHlrVTlaRzI3YTI3a1RhS1pZZWZCWkNDcU95QU9DTWpJRWFpME5WSkhDTThoOGZROU5SQS9sZmhJU2lyQU9vQjlIZURhNkI2NkpiQ2g2alo2UTRVTFRyb1gwNGNrMm9NRjRXSDdkeWNNem1yaERqZVRyRnN0eU1nVkl6TlU3aGxHd3FhMWFEYUpxb0Q5WUIrTDE1VC9Id2I2dWpnUFdhaVVWQXZzYzltME44VVBwN1gxdGNUKys0aVh0UFEwbTVHbDVaQlBnclBWOW5KRDNwRnZLKzhFK2ZvS1lEazlObzBWUkRIY2hISHAyVlY2YlVoa0p3MjdLZzVkRlBoT1lLcTJDOFZuaXdwREZUSndYNG9VVDlVK0IzYkhscXE4QmhQQTRWU1lwdFB4YjVQUWQ1NWNnR0ZyU20ySXg2YUh0a3UvaytkMlRnSCs1R3IzTDZLZFdSelRycXJWa3Y3YnZUc3J1b0ZidWlZTXRBNGhZYzVOeEd5Nk82bTBaZlRYMHdXNFlJS3JrQ0ZGMk1VOGxaQWY1SzI4UlA3L2l3bit5NXFSUzN2bTBpTWxEVGx3cStjU0xheWFrbnJLZm5UakttSHRJeVNvTC8wK2pmaWZTOUp5MmdXT0VCMy9GcDBQT20xSXQ3bm90dU9xdUxxMG10UFhlS3NLNWJSdWZsSXk3VHpKMGUvTExZdlpYQjlEUlErS3FLK3FLZzdka214WHQ2ZXBsSitJOVpUeE9nQU5WWEV3RUVzcHhGV0M0VlB2eGcvamRRQUNGWFY2ZEEvcFdWZEZWNGN5Vm9qTHZKajZEeDBEOXBMQnhQdm9kQTFXd2VOM3VjcExhTkp1VDJLTkFXdDhPSGhJZzJBdUlEcmltNmFXdUVqcmtURm12aHBadlV6OFgrNmdXaG8rV2NvUklSV0dqV21RcWVoWTFDR09KYW51T1pyMEdXRlR5SmVFdStubTRHSzRqL3FqbDFCNFVXdHZQMUpjWTNWUkQvY0VmdWs0cktzdVBrV1FEZkVPaW9ZMzNBR0NFMmlQUklYVzE0c280bkZLK0xraXd1NWlEc2pVM1FPM1dVakZGN04wM1pVbVMrVDlsdFQ0WW5aVzd5dXFQRENpRVpZcjB2YmFZT0R2NG5YN2NUcmwzVG5XVkZjWEN1RlQrNVJzWFZXcktzcjFqVVFuVDVic1U3OS9GbHNRd1ZobWpqbkFPZ01nZEVkZ3pxU3BqN2VOVGcyM1lUMURQcVBaaG0rRWpDOXRVNVgrRXpIQlFHZmprM2xRdlpmMmxQNFJPRk1RYnl6QklUdUJnL2R0dlFCVTVMMCtoVnhSNytxQVpFQTF0WUIrVDlvbDhMZFFCL3V5RUEyaXp2STFReUkySmJPa1Q1NDZxYndJdXVSQUU5VEdzbmlUallEUW82aHdqQlFBdUl2bmE4elFCcklONmhZUnpmeWwrTFk4Z1FzOWRVcEFjVDQ5MjhOTHBDb2txVmJpZ3NKbElEUXhkSmMwZ3doaXZWVXZhNFgyMUIxVDNOV2d3bWNBRUlYR1NJVW93RlJ1THVvTTZZcVBOYlNYTmlyRXBDM0ZCN0s2SE9SMXh3QW9VLzRhSzZMNXFjb3RHeFRlTlZObnhCT0ZzZlJBNGtWNXg4aWJySk9Bc2hEc2IrbFFnRk9BSW1SdG45YnJLTWlsOXk1U2VIbHdEc0NHTG4yb0xoeElrVmZPZjdlR0RiNGg3aXpxaWg4TGl0RDdJeUEzQk1BdElrMGJ4MlFmNHNUbytuN3hnSkltamloZDhTMkdwQXFvalBlRXEvcE9KMGtJRytJanFLWjR1RU9nTkJkdDErQTZDT09TUTQvcTFoRGhSNElPWEtzdUo1M0JiUUEwWW4wc2NOZmhGeWRBREpJMnI2QldFZWlCUDgvNGppVVgzcUs1WFNqVWw0YktPRFE4TjY0VWhkdm9BNmtlU0t5RnVVQ0tzUmVVOHhERmhWeVc2WFhCT0srd3FjNlRIT0l3cWRwYU44WHhMRUk0akxST1JxUWx3Vmc3Wk02SXlCVTJXY0tjQzNFWFVoM09zMGdhQjhlMllVc2hlY2NjdFFhY1p5OHpDRXUwdi9wWnFidkdVd1IvU3V2bzV1QlBsOHlmaWFLNkV5NjhGcmlSRWdVRG1JZEFQRVZGeDhpN3BKOTRtNzlqUU1nTlJRZVVvWkt4M2xUNFpPQ3Zob1E4UjRhTFduVCtFWkFhUEJBSVlCR1R4WEZzak9pNDdVaHFGa09JWUQwaVY1bkFZUkdjdVN5UHdoMWs0QlFUdml0RU0yNStRc2dIMG5iMHpWUTN0Z3MrdTJ2Q2c5THROKzN4ZlhTdWRLZ2llYnFhRUN6UVhIZ0VBbzU2M1RMWG9kMmlIOFRGZDE0WEd4REU0eGJCRzI2Njd5ay9ZMlR0cU5xbTBaQzlNMFJpcTkxcFhVMGJxZlBEem9KdUIya2RYOFY3N1A3ZG9iQzZ3VEtINE1VYTFLbHZEUksyb1lHS0JSK3lRbXJvSzVpK2N2aTdxVWhzYmM0aGl6NlhKeWNORmUzbkhKYmN3RktYcjVUZ1AyejZLdWpZdHRKNGp5YkNWQUh4VG9LVithUCtsUEVhRUczVEZ2dUl2NTE5TjVYNVBYYWU1elpsOEU2RjROMVpzZDIwVzJ2ZjYzdHQ1akJ2aTNub2xoSFM3TE1scnVZYlMvdHQ1VEpUVVRGWWNGL0pFZFJLMm9GcnYwLzFBbjFsL2xEYWxBQUFBQUFTVVZPUks1Q1lJST1cIixcbiAgICAgICAgICAgIEFGR0VBOiBcImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBR1FBQUFDUUNBWUFBQUQrNGM1YkFBQUFBWE5TUjBJQjJja3Nmd0FBQUFsd1NGbHpBQUF1SXdBQUxpTUJlS1UvZGdBQUdVQkpSRUZVZUp6dFhRbDRWY1VWUm5HdEN5b3VVQVNrcmExYUpTVHN1NENDcmNwaUZhdTFkUVByQXExV2NHZ3BMdXlCQk1JV0Z0R1FsUVJDZ0xDR0pDekpCUkhRVnF1MkZxdlcxcTFmY1dGVEZPN3IrZC9NVFNZM2QxL2VlNkdaNy9zLzVkMDdjOC9NUDNQbXpKa3preVpOWEtiOHJYTlBKMXhIR0VISUpKUVQzaVljSUJ3alJBZ25DRjhSL2tQNE82R0tVRVJJSlR4TTZFdG9RempUN2ZjYlU1TW9DY0JsaEpHRU1zTFhvdUg5NEF0QjFEekNQWVNyQ1dmRnU2NEpuNmlSTGhROSswQUFKRmpoVzhJL0Nhc0lvd2hYRVU2SmQvMFRLbEdEWEVONE5XUWl6UEFaWVJ2aEthRWk0OTBjOFUzVUFQMk5Sc1d5TFZQVmhXc2ZWK2V1ZWxDZFZYUzNPblA1N2VxTWdxR0VJWkhvZjVmZmRpS3RjTGc2ZThVOTlNNElOWFB0YVBXRlRVK3J1UlhwcWsrQ01FL05KSHcvM20wVDgwU1ZUdExJeUt1Y0hYbCs0M2cxby9nK2RWcnVUOVNKV2IwajN0QW5NaTMzSmpXdDhBNTFYc2xENnBMMVQ2bEViclI4RDZwdFJ6NDNLbHFmOUNNbm4xdFJmOHJmT2lleWFOMlQ2bFJxUk84a1dHUFNzcjRSbEQ5cnhkM3E0blZqMVp6eW1XN0pPU1Rtbkg2RXB2RnV1MUFTVmV4WjlOeVp5Myttb2xlSFJZWVJKbWYzSjdVM1RKMi8raEgxeGMwVDNhaTQ0NFNkaE5HRVp2RnV3OEFTVmViY0Z6WTljMmhLOW9DWUVtR0dLVGszMGp3MFVsMVdOdFVOT1FjSjh3a1h4N3M5ZmFjRnF4OGRpVjRhYnlLTWtKby9PRHB5c3NxbU9DVUdpOVI4UWpmQ2FmRnVXOWVwZW05Uzh4bDV2VjZOZDhQYkFmTU8xT2xTTWpSeUsyYzVWV2ViQ01tRVUrUGR6bzZTc3E5OWswM1Z5UXVuNWZZS2JRSVBBekFJWUxIUnFIR2kwcjRoYkJibWZHSVRRNFMwTGFuc2VERGVEZXdIR1N2dkpVUGdPYWR6elRyQ3RmRnVkOE9FMFVHWW1MdXhjNE1hSFdhQWxRWnozY0g2QnVRVkU3b20xSWdoTXM0bnZMWjBUZGVUZ2hDWkdLeHRIQkJ6SkovNzZyNGJieTZpaWNqb1QxQXppN3VmVklSb2dIZGh3WnBSVG9qNW5EQWVwbis4Q1JsSGlNeGQwZU5FdkJzdlRFek5IVVFqWm93S0Q0UU5NZThUQnNhVGtPVWdaRTVSekFsUkp5L0Q2aHltYk8rWWpjNXBlVDlWRjVZKzRXVEVWQkRhNThmYVYwWms3QXliRUdyd3lNejhudXJpMWQzVVBESWVWbFYwVkV1M3A2Z2JxbElpR3ducmQ2U29hN1oyVkZkczZhVG1idWlpTHFIM01ncDdxTk56ZTBVbWhTUVRYOHRNc0JzeDJQR0UrLzg3c1NUa1BSQXliMlh3Y3dnYWRObTZMdXBtSlZtdDJ0cytndSs0d2ZZOVNSSGtYVm5lS1VwU2FsN1BRR1hFSWhQZVp3Zm04ajdDVDJKRnlBRlVQbk5WdDhBcWkxNjlrTXJic3JPRGF4S3NzSFYza3JxYVJ0TFN0VjNWSUJleGs3TUhST2FXak1TZWpSVXBod25qQ09lRVRjZ1JWQmFWRElvTVdtU3FRUkpoaEdvYWNWQjFpMHU2cVZDSlFjZytOV2RnWkZIcDcreEdDemJLT29SSnlGRlVNSWQwdCsrZVJnMVRYTkVwZERMMHFIaXBnNXE5dm90SzgxUWd4S1FYM2FsbWxVMjJJdVpMTVZyT0NJT1F6MUVwVEtoK0s1Sy9xWFBNeVpDeGcrWWNkSWowNWY3bm1rbkxybzhzV1BPWW5UVldTV2dWTkNIL1FtVmc5ZmdaK3JPVzkxRFJJUEVrcEE0eFpBaEFKbi9FOUluR0NXUnRubVExV3Q0bERBak1QS1lLdktZTmU2OFRKZWFOZFVSb3ZJblFBL01NUnN4MG53WUFyTEY1SmIrMklnV0JnZU9ESXFSTXE4RHNRbTg5aXRZd2FyVUhzemFXSXdaejVMU2NYcjdVV05yeTJ6RmFyRlJZYnI3Zm5Vb1MrRVZOY05qNlhnUXRpUFBjNFJUbHV6cW9XRy81V1d4aVIzWEorbkZXQzhvOWhKWitDSm1nQ2J4OHN6Y1hQQlp2OFc1c3A4QklobG1PUmFzZkZUWjc1VDAwNFp2dVdNSWYxc3NySVhkcXdtNm9TblpOeUpUc1hnMkdEQmxRWTM0WHcvQ0xJVUxIaEpTam1PeTlFTktlY0J4Q1Z1MXBIMTFMdUowLzR0MjRma1lMM0RKKzVoWkU2Q3haejh4VUdJTDY3czEzRTZOTWdqVW52S01KbVZIa2JtS0h3OUJEWXlEUHA0UmRoQUpDQm1FS0lZMndsTENlOEtiQzNUcWhFNzZwT2htTFNsOVJtUXZXUEdwbWhlR2t3QWpIcEpCQXB4QldhTUpoeGV0R0dEZ1BYVlQrWTlINFhSVytVMmtsMTZtaXMzUW1qQllrSFE2TGxHMHZKMFhtKzNLdzlva2czTlprSVlrQWk0ZmRqSkp4bW1BYnFsSmNDUVYzdW9NS2YwUElJVnpnV0Noak9jOGpQRUhZR3dZcFZUU3ZMUFpvYVdwSUw3elRqQlNFSTkzdHRLSzlaY0hjdUxrZG1Mei9KYmlmM094bFRpSE1GV290dUhsbG4zKy9YbXJCRUpyc3A1bk5LVU9kVk80U3doZWFVRzU2aVEwaDhKTU5DNW9NbmV3d1NoWXB3bXNkQ0NsNzNhdHVQWEE4d3lSNC9DT0N1YTRXbGNJOHNsTVRDSDZnQUZUV0NjSmRpc1U4RVRBeFB5WXNJWHdiRkRHWUgvMlFnZ0FMR2lsR2svMEhoTFoyRlVyVEJDbmYyVUYxYXY2aUo1bFVhQWNoZVBlMGRSMU9JOXhCZUNNSVFyQldlWDZOdnpsbFJzSFFTRTVGbXRGSVdXVnBlWkVBTjJtOUMzclVxYWNVRzFzR2xmbWFjR01NdWREWDVVekNOREZLZlUvMGJwY0Nla3pQdThWc056TFZxaEl3UTJ2V0kwNTFLTFpxRFNwU1JZajdBUnFTNFdiQ2gzNUpLVk9TMVJsNS9qYS8wb3Z1SXVzcnc4Z2NUckdxUUpZbXhCWlNXMDcyUnpLTVYrb3NodTF1bVVpV1ZnVEZMeW1yS3p2NjN2VEtXUGtyby9rRVI4T05qNFBUaCsvUkJJQ2w0VVJ0cGVZWityTDZ4YmpkTFJQSmN4R2gwZzhoVU9QelZ2aU56T2tUNGNGNjlmWlNualFUL0ZKRmNsVXNjNmEyakVKOFdzUzR6VzBUVkNpaHhBOHBjTDY2OWZYcGdRZ1hBOHNMcHJEeFVUejY4RDVOQUVSMU9QbEkyYzQ2N25jNEtoTW5tbHhLQ2wvcGwvc1pKVUZFNStBMG1NRmhvMGZNaEo0b0MrQmtXeGV4VXBMZ0IyUGN6cTRTeWRlTThLcFhValpXSi92YTROS3dZSFU5WnlRdWFEamZTT0FyRmNsY2RMS0xxSXMyU1doQ2tFakdqb1JqWGdpQmVrNHI4Qi9WQXRXVnZXVzZUQXIrZjVDWndIczBBUkM4WUZmNGtyb3UrRU14Ymw5UGllUWM2M1dVQkJWVU9JdE1ZZDBvTVE1ZFVhUnRYU0ROWnE4QTFwajAvckVZdDYybnBQQlZ2YWNWZlJBeGJCeDlvbGVWU0lTOGJpWnNKMWx0MmZsMHB1YjBpbXpiWFNjbXEwRWNReVk1SC9SQ1NEU0dMUkJDZWtmbWxZeVVDZm5XVE5DekNQczFBWnpzdGV2aXNpNktjZHQ2U2dwZm4zenFlbUt2U282ZWF3bUNFT3pMeTI0VksySG4xRXhrZTVJaU0yelVsbTduc01IYzJFT3lacm9sQk11Qm9BSzhvYlo0V0pFOUlWY1J2bktxdGhCa0p3bmRQWVp0Nml1UnJJUGNFbEpjNGQrTkltTk84WDJPQ01ISzloVk5DRGpZckZhcDBYbms1WnA1eEg1WExFRVNSclBpY2cvRjcrYVZIb2dmdGlWRUNEdGVFd0tMeERrMmJtaHBIdmxOak5yVGQxSzR1K2dMcDJUQXgrYzE1TmEwTStjT2lnaFA4TWQyd2liSndtQUJhRld3dEhzNE0wYnQ2VHVSckJjcjRraUdFMnkyMFJSZU1DWDdCdTNHdmRWT0JINUxFNlppVndkTFF1QU5GZSt1alVGYkJwSkkxallLMzFDekh4MkVKVDUzRUcwSXVjdUp3Sk5sb1RJc2h1c1VNZ1YzN0VrQ0tRaHlheWhya2I1T1J3ZDhkc0ZaVi9MOE93aWhRL3RNUGI0NmdWdksxbGFKelVZTlZyRkNKLzg0QnUzcE81R2NzNXlRc1pVV3ZxaytBclN0UUpNNndvTis2a2JvTFpwZzJQaEhnTFZaNFl0S29uNHQ0T2NodG1NZ2lXUzhrUENSSFJtb00rb1ZCaG1ja0NIcmlaRFQzUWgrdnl5Z1Zkd1dtYjlxTlg5dmRvaHRHVWhTZUJTa0pSbnc3aTRvN2g0S0VVQjZRYzhqeGVXZDNCMWRVUGkrOU1FYVhXcWp0alpXUlRlc0VFaWRzRGRUazJ5WEVUNnhVMU4rUTB1dGdETXFHNnFTRWJQc2JrTlA0WUYwbXpSQnQ5TUNjSnFGUHMzbDVpL21rVXREYWs5ZlNlRmhRcnV0eUtoOHFZTkt2VGUwa1lGdzNUSiswS21uMTBvTVU2VDk5aGRMemZjRTV0YWF2N0c1anNKRklwbE9KN3hnUlFidVl2Rnp3c29PYVVTMElHT0ZaeTFDR2M4bS9GTVRHbWNxekQ1SWszNzBPYjAzTCtEMjlKVklublBra2E0SHRoRENuTHlCaFZSK0ZUOCtqcjBZZjM4TmdncVlMMDkyNlJaYm1ZZ2dGd1FtUkFRS3lkRk5NZGxMaHhWVlJPYTZsUm9PWXI0b0xLdnhaQ0I0NzVvZ0t0VmZyb2lWQnhqK0htRnQvVEtBOXZRak0xVFV3NHJCYWx5N0w4WC9CUVBtd0VJU0I0SEtkOVZjeEFNek96bW95bUhiODJPdFFsWWJWeEJFaEFkVkJ2SnhiL0oyVUhqUWQ3MFlYK3o2K1QwaWJRZDB5clhiVXVRei9POFJyZ3U2a3VseXhhdzJyc1RaRVNDbUcxWml2a05jUUwzSUVvd0lmMGZYN0lFMktkcFM3eEtlYXBqYVlWVDJDcm5IRlZpY2JZY3EyTTczU0piR1lrMGlKdTNIQ1ArUUd3TXl3S1VUdE50Y3J4RXc0dUJhMHQxcThSbmg5MHFZUnpNVWNUOEtBUFBOU2xBTVdiRW02UkdpUEZDbHR4SXFaTk9jMWhMUkRwTWU0aHdCaXhMbjNlRjRySzV2TUNBS3RIZFk5WlliWUx6OFlhc2p4Wm0xeHhVUTZ4WG8zWVVLRDhhNFQrSFI3YXBtTWFGeGNPMHRHaXNzSXVEMUxpenJwT0xTSGdQTERjYzY3ZzkxVk9nYUFwRi94elVCWHJBSUhNTm1EbnFxYURBRXAvbU8rMVg0V1paUkNuZlBST1dBQVlFTk1veUdNRnprQUc0VmVuNU5WeFU3b3laWFVVRTlUVlc0aHp5SXBuYmNJREFsYS9iYlMyMmlHN0dxRis5aTdrSHNzS3ZEUEFxL0RyMEZZVGlobVBBVjFrSFl2Y3ZkMkNXMHVRRVdHQ1pveUY5YTExcVNnYnBoRTI4TUlYNlhNQ3VTcHpUcTI4b3hkOGtqQUdKRFZiSk1DaXkxMWxhOVNPSCtwbllLdjR0bEllRUQ1SWVLd0FROW4xVFM1SkJVRXM2ODRDNUhUTkJTNElZZXg0VWF4a2l0SHlRZDY2VHdhSTJhalN1N2VGYzQ2blRSamZBZWIxVjQvTmNmQ0V5TW5zVUtQekx3UHVFWWVpWGNNTGpQRjBFV1laR0Fhd0VSVFFLejJPWm1QS3l5WnlqOE5vcTRIOXVyU2NLeStZc21LS3dwdTBwbnJ1cXVpdm5FZWcrQ0dnUnFNSnRJd09RWjF1UU1WYWVSc04xOEpBQzRpV0s3bUtndmorbjg0Q2FSWUttYTBOdTQyckp0QktpdkxLR1Q0ZUlHTmxTbG5NQkNDc1lCQ0FoclVzWk9KeUwxNGMybDBlcmtTaENjM1lmYjVaSjR0N1dqUklMMmtTdmcvd3hlNEFSRVIwSFd1aTdSRHVEZ2trN2NCckZicU5EckVuWWttQ1dodG1xT0hjUGlpVGNKT1BHRm85clkxYXcwWGlQbzhiVVlDUThwUENRb1lYYzVIU1V4d1VVcjUrUndUOURBT2dkSHM5RVo4SDJidVVBRExxekI1dEFEaE84bDFPVHNOMUZsK21rVlJVeFdXUHBmUHhkZ0l3bWp3TVZkd2JpZmVJSEM5MFVhUk15WXA2Unc5MFhOVFR3TFF2aExQZG9vd0tZWExDSUhWOUpDVldIZm9aVHdHOEsxRFc0KzhKTVV2cDZ3OWY2NkpRSGU0anhTUmJqZTFjRUlnS3NkaDR5d2pobW94SFBWSE85RWxYOVdheGluWjl2TlNNQUt2S2lzRS83VWhaT1JnTk5QK2NJMHhlbmhtTjQrbExCSjlNamFlY1FsRVh3a2RJYWJ3bTRrNFBsZkZYN3FxZTlKTlJrSG1SUWVkRllUU0RmTGdiTVBaNzB4SjVSWlg4S01aLzhtckZTNG03M04vOVZjNERVcC9MUlZUVVNIbVRzZUtnbitLTnlWYTJPZUlxS3dVSkNRRUZFckRTNVJ3ejJqTmFqZXI0VW92YXgxWGFPandXSmVlRnZoWG1Db3YvaDdUeHQ2b2thOFVXdGM3RlZBSFdHdEFCK1ZCUWxZb0dVVGVqU3Fvb0NUd2plUURqa3dUelVTY051Yjh4RDh4dVF1aVhua2RSTVNzQ24xamxCclY4ZGIxditiUkkwOVUwY0UvdUFZTGcwYm9BUWM0TkNZSENTRjM1MkwxZktmeFFTZDBxaVdUdExFeGsrd2V0YUowREEya1JwNm9vWStsL0FMd2g4Tm5sMURLQ0I4UmJneUh2STVUU1RmYVlSdWhCeEN1SDh0MUU4aTRVdzNoTkRyQ1g4blJBaFpCcytmRjg4aURZQ1FQTUp4d2tlSlRzakRCTU1KbjM3L2dkVGdSb1FzYTBDRXZDWGtURnhDU0xBTENmK0I2akY1bnRDRTBEZEhpbEU2Z1hBZUlVMzh1N1BCdXcyQ2tEdUVrSVpuMmhPWkVQcmUrUVJWZlBzVndnT1NMSGNhdk44Z0NIbEtDTG5VNUhraUUzS1I5TzJ0aEVla2Z3OHhlTDlCRVBLZ0VCSldVbXVENTRsTXlObUVaMkg5Q1d1dmsvajNiMkVaR3J6ZklBaTVXbGdlRUhTV3dmT0VKY1J0Q3BVUUt2QlVNYUZsaWg1eUtTRlYvUHRtRitXY1FYaERDUG9ab1pYdWVjd0lvZnhOeE1UY1d2VDRGRUo3d21YTVlsRnFVazY5cUphd0NXbEJPQ1ErOERyaFYxTERQT3V5clBGUzNsUzU4bUVUUW5uT0lpUVJ4aEMyRVQ0UjZqTWk0UXZDUStpRURzcUQxZmdId2kwR3owSWxwQlhocVBqQVM0UVJVZ1dNLy9TQ2VWbVhTWTF3bVBCRDZWa29oTkM3YlFtVENXOFRUdWdJTU1MWGhPdHR5dXhIK0ZTOGY3dkI4MUFKYVVhWVRwaEI2TUs0U3lDZGNYdmMxS3RMejVvUzZ0M3RRYjh0bHlxZkp2MGVLQ0dNdTJHZUpoeXhhSHdROUNYaFc5M3ZsbnFMbm8rVzNyM040SG5pVE9xQ2lKOFQzaVRzTjNqK0k5RUxJZkJCUW5QeHUweklRb044cG9UUXYrOGpkQlgvRDl4SytJZXVrVUVNVk5YdkNUZUlrZDlVNUlINitaUDBicnBOSGNNakJMMWNWaDErRStOenpvZENvSHFFaUhkV1N4VjZUdngycGZUYkRJTThWb1RBNk5qRHVIbDZDNnM3TjN3anZ0ZWJXZnZTSmlRS0lUY1R4cnJLWkYwZWV0NEJHMEw2c1ZwOURvT2hPZVBxVUt2azR3WjU3RVlJVnRKd1ozd212ZmMrNFNZcklxUXlmcGNvaEV3aWxMcktaRjJlRTBKZzhid2hWUW85L0JmU3YrdGR6dXlBa0FpcmRXOW9aRnpyUW02dmhBdzNlTzZMa0dMR25YNisvcGl3Vko0dEllSzl1NlJLVlJMV1NmK3U5NWN4SFJLaUFaTzBxMHRmZkJBU3JDK0xNbXdSUFN1UVB3N3BnaERvKzcreVdsTlRtK2ovelF3V1p5NEpjZjJuL0JLSmtMVWk4MlludXRaQmVZNElFZStPMFRVa3NOamtYYWVFd0l4MUhXU1JTSVNrU3ZwM21wZks2TXB6UXdqY01FZWx5a0hWR0Y1cDVJS1FsUjdsVGhoQ2VyTzZrK0hIakM4Q1lUNWU3d0YzaUY3cWhCRDR0K1QxUW9IRnU5blNlM0JaakpDUUt6MWJxM3ZtRkVWU0dTdHM2amhYZWpmd1NSMGI4cVhTQjRMRUt4YmZ4UnlTTDcyTFVXVzZIcUpuQzBLUzBTOEdCRXFJS0FEdWtiS0FCY1dvKzYzSjk3RHUyQ3E5QzdWMXE0Mk0zVm50eEo4b2dIK3NYckM0YjBKRUlWaXhZeE1KUTNlYlQyd2czRTg0MCtBN0Z6UGUyeFdCYXNKUVp1UDJwdWVuTUs1R01aZHMxR0cvYUFBUXRzWGd1Ui9BSEMvVkFXb1JhdDN3OWp6NnZaQ3dXN1REMlo0SWFjaUpjV01FaEpUWUVkdVlZcERFcUliYTZ4QnZXUnBUa3lnaDBPVkxXQURycU1ia016SHVYUzVuQWJsK0dwUFBKQWhwakxyWEVqVkdTOEtqak1kZC9jRGlQZXcwd2xYaWF0czNyTVQ0UnRxOWpPOStqZzY0N0w2RXNZVFkzL1JOSDUwbzJlV0RUZDVCNU1wZnhEc0o4UWVOUlVjNkxHUlNBaXozVE1JN290eVhneXJYalFCekhSQnlPdUU5OGM2WHNaYlJLSkVjYlZqdFFqTklRczVoZkVHWTBJUkFQU3dpckNROEVHc1pqVktESVlSeDN4YUVSUkNaWlh3U1BmOHVxK3Ywdzg3Zjl3anRDR2ZvM2oxVks5ZWtMT0FTa2Q4SWJZemtFZVcyTThtRDM4Mk9QNWdTd3JoWDRBb0xXUXpkSVl6dmhGN0xha09FL2l6bGFXV1V4NnhoRVhVeGl2RzRLemxBQUpFYWNCOE1OMmpnaGN6YXp3TXZibHVwZ3B1TjVoRHg3RkZKNzFvQlpad3I1WVczdU53bUQxejZPeG5mVzdjbFJCQzgxcWJNNDZMTUlVeXNmVVFiZm1TVGI0b1RNdUJPZnMrbUlEZ0s0ZE81UU1xMzBTWVBWczd0eGJ1blNkL1FFekthMVhYLzJ6bnpMcEx5UWoyODVUQXY1TGxOeW10R0NHUjl4V0daeUQ5WTVMdWMxWS92MGlQUGpvd2tIYXR3OUdHakJwRW9jT1NOSS94TmVsNGk5UWlFN1R3dWVvcjJISTYvcHdRR3N0cTRKM2xTUHlaOUgzUExKK0ozUktIa1NQbjFnTW1NcUhOOUhmRGJXSk04Q0YwdGxBaC9sWWsxaXhraFVydU1zU2d6bDlWR3piekd1S3BDdnNHTXh6OGZGTTgra1BJOWdXOWFrWUhHMEx5a0tOendyejZMankyVkduMlk3cmxiSzBzbTVDb3BMenkvdnUrS04vbCtzZmdHWXJUYWlkOThUZXFNSDBEVjJ1NGE2WGR2azdwZ1UydU1US3ZHb0djWFNCOVpwWHZtaDVET1V0NFN4OEs3VEt6dTVsWlA4WnRmUXVaSlpRNlVmdmRNaU5icklaVGxYOFZoUEhSZm0zVHgzNmJTTXorRVhDN2xSZVE1UWxBdjhUdFNoUHBBYkMrc3JGR1NDZ0Z1RU8rNElrU1VpY2FHOWZWclZqY2diNWowbm1kQ1hoS1ovaVVLYVNsNkxDd0hXRDJJR004aVZJaDN0SS92WTVKWDFTY2h3R1lwdjBZTUp1bzFoS21FWHhLU21YVmdkenZSU0JqcG14Z1B3a09qSE5PVjdaZ1FVZWFEb2t4c05NSFQ4Q0V6M3JXVWpRWFBoR2hud3FFRGp4dDh4TXlxR0tRcnh6TWg0dG5ab3NKT3JLUTVoR1pTWGxoRTA1bjlNUVBaK3JFa2hQRzU5V21YWlE2Vzhuc201RTNkQjBESzU0d0hxcUdIWVdUZ0FQeE14aTBPUkpQVXUvSE5MeUhpT2RZaW1PQkhpTyt0Wjl5NmcxclFtOFNWNG4za1M1T2VvNEYyRVdZeHJxWnVJM1JsL0V4S3VndENucEhJT0M3S1JFZUFlZjR6eHAya0xYVmxCa0pJaGNqMFg4S05oTzh6cnIvUlk5MlU0NXNRa3p4WW9DRVk0anJHVmRjQjZUc2c3enlwNHFvZ3dYRHVjVW9JNDQ3QmQxbXRSUVp6MWZEeXpUQUltYUUxRU1Iekg2Z1BpeEJkZm9CSjN4a2lPcENtYWhFeFkzWFVZSTVEUW1Ca2FKNktUV1lFRzVRWkNDRjlwUUt4SisxcGt5Y1doSWd5UmtyZkdjcnFybUVNdzArbHZCWE1HU0d3b0xTNVlabE5tV3VONnUySEVHQ0hWQ2dXVHo4MEc2SVc1V1JJWll3MGVjZnZDRUhQbFgxV1VHTlFaNW9hUS9TK29mT084WGxFTmxxc0NEbGZha3pJMjg2a3pDUlcxOXJTRTZJZFdNSTg2UHpDWjhiUGpzc21MVXhPK0tnUU1KQnBndUdzcnRuN1J5ay9Lb0dUU05Ebk9LM2JRcnhqWnZaaSszV3lHR1ZHd09JTDN1UjNwVy9nLzV1S0RsVWcvWTdKZDVqb1ZHMFpQK2I4R09QblJHU2p3RzVTWHl5OUN4TWZ4c0dQeFB2dzVPS1U3bjVkbVRJaHNQemVGci9ET0VCWTZwT01MeVg2TTROajFIcFM4TEVxNXR6QmgxN1pYTXFQM3ZxcHlidWxOb1E4NS9DYkdtQUI5cGZ5WHl3cUxMK0RSamltcTQvc0xMUWpwQm1ydTZWZ1ZxWjg0S2lPcXJhb0Y5UmhIZGVUR1Ntd1dOQ2pTMFVQUkxEMFFSTWdHTHVGbEJjbWFCOHBMOTQ1S3JCRDZqWDdoVUNIcGJ4VHhXOVd3SkUzbkkvSEJoY08rZXRsaDRyQWlJVDYxYlprSStMN2lCNkVzL1J5NmZzRFJMN1dyUFlFN2c1ZG1iQTAwYU1yV2UwWmZRQVQvbDdHbmE0Z0ZFc0hXR08zR01nMFRyd0xkWHBFYXBQN3RmZitCN09kVWQ2S1ZNSzBBQUFBQUVsRlRrU3VRbUNDXCIsXG4gICAgICAgICAgICBBRkdBUjogXCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUdRQUFBQkxDQU1BQUFDeHh0S0ZBQUFBQVhOU1IwSUIyY2tzZndBQUFBbHdTRmx6QUFBdUl3QUFMaU1CZUtVL2RnQUFBcnRRVEZSRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRndOQXJnQUFBT2wwVWs1VEFCYzJVV2gzZ1lpT2tJbUNlR3BVT0JzQkRERmZsTDdjOS8vNDM4R1paRFVQSGx5bjIvejlyV01qQ0QrYjVQYnE0TmpUMGVuMXBFY0xBanVNL3FLRVowUW1Da0dmNGU1REJCQzFoazRUU2JEZGJoWVVmUFA1Z0RRdGVidHYrM0l2QndZcGE3cmplaEpHeXV1Uk9Ra3k1VlB5aFNIdHZab2RpeWd1MTlBNnd6emlEcFBzTXdNZ0JheHNaakFpUWxza1d0cldUWmRWZlhiRW5lYXk1L285U3pkSXVDcHdzOGwxdDhaL2xXSVI4ZEljTE85MG1GWVljUTNadkt2UHNaeU54VkNoSlY1QVYvQk02SzRaV1dHbUh4ckhvQlZLSjZWUDNzaVBmc0RWcjdiVXk4NVlsbDJxbzJtM2RLK2ZBQUFGUFVsRVFWUjRuTzNZZjFCVVJSd0E4TytpcFUwY0NYRXlnQ1Y0amlrSWpPaVVJQ3FjT0lOQjhYTlNCbFIralNERXIxSUpGSkFBQllrT0tXNUNTd2drRGtmb0dnSXFFQmdFcVhGTWc4VHB4OEVWVXNaaFJGNlRZbnJ0ZTNmQXZjZmVjY2MxL3RIYy9zSGJ0N3UzbjkzM1k5OStRZkFJRWpJaVJzU0lHQkVqWWtTbVcwNGxVSmlvY3VQL0hXSXgxYmtHVm1vb1lrLzFJdGZhaFBPWEtVSzN0RTVLQytLQSt4OWpsSEJWbDBzeGFvMXVNbXBzOFJYOFVtL0VEYUY3STZvOGIyS2NuaEZxVngrQ3d1YUhXMXY2WFA2V3FBcWNycnFpei9SQmRseTMvRlUxeEtXNDgwYU5Zd1N3Yzc3Z1BhaWE4QXNJTmVpS0JDUFVUUjAzWDlxRVB0ZnBDUXBGcUY5R2QzZjdpVDkwUVN4ZWJEWEJCKzhPUGtLVnVnaDBpc1FUYmxiZ2pCOUM1WE1pY2FnZlgrVkEvSnQzZEJhVUtjS3NQTzRjUGxwdktkR09iUHphQlQ4MnV4QXExbE5RcGlYL3hOWGdQZ01IVzdRZzlpRzlFdkMyUm9Yekl1aiswcXJ3UlF0WWNsd2prb0hPQUVTamQzVmRMb2hwNy9MVEFHdmRjelFnWGx2TGdUZnBtMjBJZ1ZNaXQxb084ZWdJRVFsYWN3YTRheDBQRzJnQW1EdTdpc0F5TklPQUhFY25BU1VYcUYrcUNJYytHTHhFWjR1K0FaQUVYNXVwVy9mNmdsQnd6YVdhQzY2QTgwQ2xPbFBTMHcwTFZrMHZFRE9JcGJtY00zeUVNWThkOWgvREd5VkRPTWNQd0hjeXlmVFlUTjNoVjJPYXdEUWxBV2RUNm1EcGhKUXhHV0Z2R3k5cy95ekVJcnNBc2d1WVRTa0VqbzVoK0xWYUlDR1E4MTB4RVhGSXpZTGNsbm8yWXVZc3lVTlJqSlpLaEpzYUNaVVoxTXVjWk5NUDBDZTlBeDdMQVhwN0tBUUs5eEFScUM2OUNVWGhiS1RtQUJRUHNXNDZqVUMwckcvYkI5UnBVanIrWS9mVUtPeWtYMmthZ2JkRGlRaUlVcUZrSnd1SkdQa1dUcjdDYXFoRW9QUjhGMmhFbGozWlNVVE9KMExndG1BbUVoU2VBTTkxRWhDdURIaURDbEFnRWlJOEpBY2J1MmRJU05UM0V1ODFHVXhFSElmZ1BYOENrcmtzRnVjNDBTVWt4REY1SDhCcEZFTkEwcW9WY0dJM0UybHVGVUUrNjc3VHlPaW5WT240d2ZlSmlOZEFPM0FPWmhFUWdWQnVHbnVBaWZCbFkzRHFKUkxTSk0yQnl1enRaS1R0clZYVVJBbElVd3c0Y2VxWkNIeXhGeDdjWjYyTU5QS2dDQS8wcDB3TkNKVGxJaUxTdWdlcU0zdFp5QWtCY0hOWk4wV0owRm1OQ0NRMGtCQ3hTU3pjbmdRV0VydjRISnl0cnRRZkNiSVN6MGJ5M2NLZ1BIbUlqVUJ0bWNSYmRGOS9CTElYQ21jaHEvOVV3RWRlVTJjekNEOHJGTXFlM3FyZWxOOWZEMTNLNzhKRnZLNWNwQllFdnFjbkNFWDBxR3doL0djcTAvMFFPanZWOTJUUUV6OEs2ZGVuTnhScTN4TkJ6UWc0SFhVSHcxUGNoa3dvNnl5ZFBsZi9Ncm9YQjhGbXo0bDBBNG44aFRVeVVJZzN6cFF3dnZFZnJnNEErS1J1Zmp1VnFYUTUvYTRFeW0yMnE3ME96TjFLbmhuK051MlNoZnZNbTBpTWFCWUNXSlZ0VWk5azdidlFGUUYrWUV3V1BaVE9pN0NZRU9CUmNsWjZaRENLMlR0SXQ4ZTlxSWZDSnRVeHZsZFB3YndqdVpTNkJMYlpEUlhNbXRsNzRhdnVkZFJ5Rk8rL3JqRk05dzJZZVJlUy9rSnRwanoyV3pteUswbTcrdERNZlhUUTRaY285L3RkSjhLaHZpSksrZXE5K1ZqRTdHcHlmQklsOHUxV1ZuZDRLRGhEeERaVDZUSXlPOXVpakx0UTNGZ3BxWW1tU012TzVGaFRtekxMdStNZnNxRTl6SWNkRWRpOXZNSjMrTm4yS2xXb3hXbm11MmlJbHJURWpHbGp1eVZxZTAxUWNNVmZwWlRXdXEzbklXSE1vdnhyNmxHamQxN2ZvUnNhZTlJZS9WbzBUdkw4WkZxYjRJRHN4K0VWdjBtMXRaZzdqby9rZXhha2hqaTFFYXBNUGRmN29UTHh3RnhkNlBvZkNaOTduQW51U28vQ3Vyc1hZTnRpOUh6VmpTRHBLVVhGM0QvVUJ6RW9HUkVqWWtTTWlCSDUzeVAvQW5QNjJsdm9XR0JzQUFBQUFFbEZUa1N1UW1DQ1wiLFxuICAgICAgICAgICAgQUZHVEQ6IFwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFFRUFBQUFvQ0FZQUFBQ2hESmZYQUFBQUFYTlNSMElCMmNrc2Z3QUFBQWx3U0ZsekFBQUxFd0FBQ3hNQkFKcWNHQUFBQmZkSlJFRlVlSnp0bWd0TVYxVWN4L0V2UXFSamtKcXZiT3ZCWTdaaXkrd2hCZmJhVWtkbEdKbHJwVm5wY0QwWXEwa1BzQWRwV1paSk9XMXJ0YVhyWldJU2lITkthMlBydFRWRGhiU0FtdE02TTUwcmhHSFo5OGY5bnY0Lzd2OWUvZ1grdWNJNjIyZjhmNy96Ty9lYzMrK2VjKzY1djB0YzNBQXJKaTV6RC9ndTZIRUVXaVFBb0NIV25kd0Y3b2hwSjcwb0dOTXc4Q2lZRE5MQlVwQVVpNDZHZ2c1dzVKUmZ2SThGWThvQko4RW40SFgranMzTndvV3ZCTE5pY3ZFK0ZJd3BFWlNBeTBBYW1BZUc5RWZIaGFBS2pJcDVaOTc5SjROYVVLeDByNEIzbEx3QTFJQnpsZTVNc0FUVWVWQWdOcUhyMW9YQUkyQkd0RUZVYzlwTmo0R1BVUXY2eldiLzlVclhSbDBLNVEvMTBzRGZNV0FmZFY1OEtuWndQaDJjQkkzUzZIN0JaeEJiMlRDdlA1ejI2UDhhOXYrRjBuVlFkeGJsanluUG9mdzg1WjlBbWVoQkxpaW5mcXZZd2ZrTUJxRXB6a2JJWnhDMUFRY2gxeU1JOW82bVV0NUUrVTdLT3lqUGMxMnJ3QldFeklFY2hFN1hUUGlJOG0yVXQxRit5bld0MjZtdkZsa0ZvVEZhRU94eTJNQ3AxZCs4eGY1L1ZqbzdFNVpSUGt3NW5XTmVUUGxQVUtIYWZlQVRoRDNSZ2xEVHd3WnpPbEdoeG55R21oMWVWREVJR1JGQk1CNm5MK2krWk4xNjQ1elFUa2V1OExtQmw0TEhsWjNkT3pZekNGa013aTR4Ym1UbEV0ZEY3bFlCbXVEVjBVQXBHUCtGWUR0OUtSY2RuQzlnRUtyRjRBSFhkUG5GSmE4TzJvbi9XakRtNFdDTGNRNUhYNEcvNk1zQk1GcHM0SHdWZzFCa0crVVo1MlNvblc4QkpZRjYwOHVDY1dkNDNOaFZZS3pVdy9FOEJ1QjNrT3B1UE5JNEx5b1RBeG45S1N6d1lTcTRHb3pYZWpnOUJSeG5FT1lHTmI1QUNoeU9CeVdnRFhTQytVR1BxZDhLbkIwR0ZvRm1lMElFT1VHUEsrWUZUaWFCbVdBbE9BQk9nRm93RzhUKzlUdFdCWU1mQ3FhUlhKQUlSbEsrSGp3QktzRm5YUE1HYkFRTElqYS9nVm80clc4QXBlQUZVRWMyZ1RYVUx3UzNnRWxCai9mL01pQUxwazRyZDAyTlBFSStCNHZkOW5qdWpnTnZtUERiV3p2NEdqempQbDVEamdjdkFrUGJYOEZPNCtRS1I5TkdqclNTTFhyUG82OXp3RkZRNHpWMjZLZUQzK1IwNkZPL3d1L1VDOTE1NEhoWFcrNmM0bmc5Mktub3BMNVVOWnpOaHZZazFrU25qbENXdnpuSy9qbDFZcE5YM3diVmRnVnRiTTRnNGx1Q3ZCeXhydFdqTHNsMXhML1p3MmFqcWk5MDFWMWxmZEJCY0orczdxRituN29yN1d3b3laWng2b0tTcXQvQU9wa2h5ZFFmb2k1TjJhYUMrK3hKcmc5QldNZzZtMC9jWlZ6Wlp4Tk92UWtud0xXcXp1WXZ2KzhwQ0RkUjM4eEdyOXBHSU5GalVDRytiNGpOdmRRMXE2Qmx1ZHZRSnFlSElFeGhYWXRMTDh1c2xYVlp4bmxSa3QrelhIWTJyMkRyajlvYllweFBDNkpyMUVISTUvTlhtS3YyaW5JMnNxK2l5N3ljb2MxcTJxeWhQTWUxZkdSdmVCZk1WRzF5VmIwZnJhNSs1bE5mU1hrYTVkMTZOcWpsc01nNFdTWjdFMVBVY3VnV0JDOHE3QW5MaE44eXkvNUZFTllwM1VSUWFweTlvME01OWlUcmJVYTV6VVIrSTdDNWpoWjF2UkFkRVgweGc1aXJsc1d0eXRZbVVtVHB5SksxU2RnZHF0KzlPZ2pMd1ZMd0xGOHlSRGREWGZCcE5wSW5RWUpIQUdTSy9rQ2JmSjhnRFdkQXhPWVlCMllIRS9HbDJXczVxRm5nUjRPeXJiUXpnWEtLQ3F6Tm1uWGJHUDg1V3VKM3NkMFByQjdHWnh2bmNTUU42OEZGcXJOTFREZ3ArdzExQ1dDdGNUYk1xY3IyWWhOZW56b0kzM29Fd1c2TUxlcWFzdTlJa2tTK0w3aFRiVTIwejZQOVpoMEU2c1liSjdsaWc5WnRZMHhSUVVnQXU2bVg4MElpTHlEdjV3ZlZCZmFDUDVRc2EzSXNiU2VCSDEyMmRXcEoyTDNHN2dsZVFiamNxRDNCaERQSjYzMW1XcjZkclY0elFkbGxtdkE1cDJ0UDJBSU9nWkEyaEh3Qk9NeEF2Ry9yMFdnRWVOQkVydCtIWkVtNE9oc0NiZ1FyamJNK3JXMlI0UWFHditlRC9XQ1ZoMVB5TFZMVzcxckt5NDN6VHhvWlhrR2d6ZHZHT1kvSW8xZys1Y3RUSk5zbndQSy9EcjU3bkEzRTVKQ1RndXBLU0lJUlBUWVlyQVdPWjRPRERJUXNrYlRvclFaaGdlUEo0Q1crcHg4RFJTQStlc3RCV09ENEdQQWE2SkRqTkhoWUFoVDB1QUlwY0h3VWVBenM1K3g0a3htZUNhR0JuTDdxVFJHSFFRNG9BOXU1aWJhRFJtWjl0b0dYUVdIMHF3VlgvZ2JhYlA1Y0NSYUYyQUFBQUFCSlJVNUVya0pnZ2c9PVwiLFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0T3BlcmF0b3JQcm9maWxlKG9wTmFtZSkge1xuICAgICAgICBsZXQgb3BlcmF0b3JfcHJvZmlsZSA9IHtcbiAgICAgICAgICAgIEFGR0FXOiB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ0FmZ2hhbiBUZWxlY29tJyxcbiAgICAgICAgICAgICAgICBtb2JpbGU6IFwiXCIsXG4gICAgICAgICAgICAgICAgYWRkcmVzczogXCI0dGggRmxvb3IgUG9zdCBQYXJjZWwgQnVpbGRpbmcgTW9oYW1tYWQgSmFuIEtoYW4gV2F0dCBLYWJ1bCBBZmdoYW5pc3RhbiBcIixcbiAgICAgICAgICAgICAgICBlbWFpbDogXCJcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIEFGR0FUOiB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ0FmZ2hhbiBXaXJlbGVzcyBDb21tdW5pY2F0aW9uIENvbXBhbnknLFxuICAgICAgICAgICAgICAgIG1vYmlsZTogXCJcIixcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiBcIlNoYXItZS1OYXcsIENoYXJheWVlIEhhaGkgWWFxb2JcIixcbiAgICAgICAgICAgICAgICBlbWFpbDogXCJcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIEFGR0VBOiB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ0V0aXNhbGF0ICBBZmdoYW5pc3RhbicsXG4gICAgICAgICAgICAgICAgbW9iaWxlOiBcIjA3MDAgODMwIDgzMFwiLFxuICAgICAgICAgICAgICAgIGFkZHJlc3M6IFwiRGFydWxhbWFuIFJvYWQsIEhhamFyaSBOYWphcmksIEthYnVsLCBBZmdoYW5pc3RhblwiLFxuICAgICAgICAgICAgICAgIGVtYWlsOiBcIlwiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgQUZHQVI6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnTVROIEFmZ2hhbmlzdGFuJyxcbiAgICAgICAgICAgICAgICBtb2JpbGU6IFwiXCIsXG4gICAgICAgICAgICAgICAgYWRkcmVzczogXCJQYXJrIFBsYXphLCBPcHBvc2l0ZSBQYXJrLWUtU2hhaHItZS1OYXcsIEthYnVsLCBBZmdoYW5pc3RhblwiLFxuICAgICAgICAgICAgICAgIGVtYWlsOiBcIlwiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgQUZHVEQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnUm9zaGFuL1RlbGVjb20gRGV2ZWxvcG1lbnQgQ29tcGFueSBBZmdoYW5pc3RhbiBDb3JwLicsXG4gICAgICAgICAgICAgICAgbW9iaWxlOiBcIlwiLFxuICAgICAgICAgICAgICAgIGFkZHJlc3M6IFwiSG91c2UjMTMgTWFpbiBTdHJlZXQsIFdhemlyIEFrYmFyIEtoYW4sIEthYnVsIEFmZ2hhbmlzdGFuXCIsXG4gICAgICAgICAgICAgICAgZW1haWw6IFwiXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvcGVyYXRvcl9wcm9maWxlW29wTmFtZV07XG4gICAgfVxuXG5cblxuICAgIC8vIGNvbnZlcnRfbXNfcGF5bG9hZF9kYXRlX3RvX2xhdGVzdChkYXRhLCBzZXJpZXNLZXlzLCBkYXlLZXksIGRheUtleUZvcm1hdCwgZGF5S2V5T3JkZXJBc2MpIFxuICAgIC8vICAgICBpZiAoZGF0YSA9PSBudWxsIHx8IGRhdGEgPT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAvLyAgICAgfVxuICAgIC8vICAgICBpZiAoZGF5S2V5ID09IHVuZGVmaW5lZCB8fCBkYXlLZXkgPT0gbnVsbCkge1xuICAgIC8vICAgICAgICAgZGF5S2V5ID0gJ3JlY29yZERhdGUnO1xuICAgIC8vICAgICB9XG4gICAgLy8gICAgIGlmIChzZXJpZXNLZXlzID09IHVuZGVmaW5lZCB8fCBzZXJpZXNLZXlzID09IG51bGwpIHtcbiAgICAvLyAgICAgICAgIHNlcmllc0tleXMgPSAnc2VyaWVzJztDb21tb25TZXJ2aWNlXG4gICAgLy8gICAgIH1cbiAgICAvLyAgICAgaWYgKGRheUtleUZvcm1hdCA9PSB1bmRlZmluZWQgfHwgZGF5S2V5Rm9ybWF0ID09IG51bGwpIHtcbiAgICAvLyAgICAgICAgIGRheUtleUZvcm1hdCA9ICdZWVlZLU1NLUREJztcbiAgICAvLyAgICAgfVxuICAgIC8vICAgICBpZiAoZGF5S2V5T3JkZXJBc2MgPT0gdW5kZWZpbmVkIHx8IGRheUtleU9yZGVyQXNjID09IG51bGwpIHtcbiAgICAvLyAgICAgICAgIGRheUtleU9yZGVyQXNjID0gdHJ1ZTtcbiAgICAvLyAgICAgfVxuXG4gICAgLy8gICAgIGlmIChkYXRhWydyZXR1cm5Db2RlJ10gPT0gMjAwKSB7XG4gICAgLy8gICAgICAgICBsZXQgc2VyaWVzX2NvbnRhaW5lciA9IHt9O1xuICAgIC8vICAgICAgICAgbGV0IHBheWxvYWRBcnJheSA9IFtdO1xuICAgIC8vICAgICAgICAgaWYgKGRheUtleU9yZGVyQXNjKSB7XG4gICAgLy8gICAgICAgICAgICAgZGF0YVsnUGF5bG9hZCddLnJldmVyc2UoKTtcbiAgICAvLyAgICAgICAgIH1cblxuICAgIC8vICAgICAgICAgJC5lYWNoKGRhdGFbJ1BheWxvYWQnXSwgZnVuY3Rpb24gKGluZGV4LCByZWNvcmQpIHtcbiAgICAvLyAgICAgICAgICAgICBsZXQgcyA9ICcnO1xuICAgIC8vICAgICAgICAgICAgIGxldCBzYSA9IHNlcmllc0tleXMuc3BsaXQoJ3wnKTtcbiAgICAvLyAgICAgICAgICAgICAkLmVhY2goc2EsIGZ1bmN0aW9uIChrLCB2KSB7XG4gICAgLy8gICAgICAgICAgICAgICAgIHMgKz0gcmVjb3JkW3ZdO1xuICAgIC8vICAgICAgICAgICAgICAgICBzICs9ICcjJztcbiAgICAvLyAgICAgICAgICAgICB9KTtcbiAgICAvLyAgICAgICAgICAgICBsZXQga2V5O1xuICAgIC8vICAgICAgICAgICAgIGlmIChzIGluIHNlcmllc19jb250YWluZXIpIHtcbiAgICAvLyAgICAgICAgICAgICAgICAga2V5ID0gc2VyaWVzX2NvbnRhaW5lcltzXTtcbiAgICAvLyAgICAgICAgICAgICAgICAga2V5ID0gbW9tZW50KGtleSwgZGF5S2V5Rm9ybWF0KS5zdWJ0cmFjdCgxLCAnZGF5cycpLmZvcm1hdChkYXlLZXlGb3JtYXQpO1xuICAgIC8vICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgLy8gICAgICAgICAgICAgICAgIGtleSA9IG1vbWVudCgpLmZvcm1hdChkYXlLZXlGb3JtYXQpO1xuICAgIC8vICAgICAgICAgICAgIH1cbiAgICAvLyAgICAgICAgICAgICBzZXJpZXNfY29udGFpbmVyW3NdID0ga2V5O1xuICAgIC8vICAgICAgICAgICAgIHJlY29yZFtkYXlLZXldID0ga2V5O1xuICAgIC8vICAgICAgICAgICAgIHBheWxvYWRBcnJheS5wdXNoKHJlY29yZCk7XG4gICAgLy8gICAgICAgICB9KTtcbiAgICAvLyAgICAgICAgIGlmIChkYXlLZXlPcmRlckFzYykge1xuICAgIC8vICAgICAgICAgICAgIHBheWxvYWRBcnJheS5yZXZlcnNlKCk7XG4gICAgLy8gICAgICAgICB9XG4gICAgLy8gICAgICAgICBkYXRhWydQYXlsb2FkJ10gPSBwYXlsb2FkQXJyYXk7XG4gICAgLy8gICAgIH1cbiAgICAvLyAgICAgcmV0dXJuIGRhdGE7XG4gICAgLy8gfVxuXG4gICAgaXNFbXB0eU9yTnVsbE9yVW5kZWZpbmVkRm9yTmFuKGRhdGEpIHtcbiAgICAgICAgaWYgKGRhdGEgPT0gbnVsbCB8fCBkYXRhID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldGFic29sdXRlVmFsKGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIE1hdGguYWJzKGRhdGEpO1xuICAgIH1cblxuICAgIHJldHVybk51bGxWYWx1ZUlmRW1wdHlPclVuZGVmaW5lZCh2YWx1ZSkge1xuICAgICAgICBpZiAodmFsdWUgPT0gdW5kZWZpbmVkIHx8IHZhbHVlID09IFwiXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gY3VzdG9tVmFsdWVTb3J0ZXIodmFsdWUxLCB2YWx1ZTIpOiBhbnkge1xuXG4gICAgLy8gICAgIC8vIEhhbmRsaW5nIG51bGwgdmFsdWVzXG4gICAgLy8gICAgIGlmICghdmFsdWUxICYmIHZhbHVlMikgeyByZXR1cm4gLTE7IH1cbiAgICAvLyAgICAgaWYgKCF2YWx1ZTEgJiYgIXZhbHVlMikgeyByZXR1cm4gMDsgfVxuICAgIC8vICAgICBpZiAodmFsdWUxICYmICF2YWx1ZTIpIHsgcmV0dXJuIDE7IH1cblxuICAgIC8vICAgICAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgdHdvIHN0cmluZ3MgYXJlIGVxdWl2YWxlbnQgaW4gdGhlIGN1cnJlbnQgbG9jYWxlXG4gICAgLy8gICAgIGxldCBvMSwgbzI7XG4gICAgLy8gICAgIGlmICh0eXBlb2YgdmFsdWUxID09PSAnc3RyaW5nJykge1xuICAgIC8vICAgICAgICAgbzEgPSB2YWx1ZTEucmVwbGFjZSgnIE1CJywgJycpO1xuICAgIC8vICAgICAgICAgbzEgPSB2YWx1ZTEucmVwbGFjZSgnIEdCJywgJycpO1xuICAgIC8vICAgICAgICAgbzEgPSB2YWx1ZTEucmVwbGFjZSgnIFRCJywgJycpO1xuICAgIC8vICAgICAgICAgbzEgPSB2YWx1ZTEucmVwbGFjZSgnIEtCJywgJycpO1xuICAgIC8vICAgICAgICAgbzEgPSB2YWx1ZTEucmVwbGFjZSgnIEJ5dGUnLCAnJyk7XG4gICAgLy8gICAgICAgICBvMSA9IHZhbHVlMS5yZXBsYWNlKCcgQnl0ZXMnLCAnJyk7XG4gICAgLy8gICAgICAgICBvMiA9IHZhbHVlMi5yZXBsYWNlKCcgTUInLCAnJyk7XG4gICAgLy8gICAgICAgICBvMiA9IHZhbHVlMi5yZXBsYWNlKCcgR0InLCAnJyk7XG4gICAgLy8gICAgICAgICBvMiA9IHZhbHVlMi5yZXBsYWNlKCcgVEInLCAnJyk7XG4gICAgLy8gICAgICAgICBvMiA9IHZhbHVlMi5yZXBsYWNlKCcgS0InLCAnJyk7XG4gICAgLy8gICAgICAgICBvMiA9IHZhbHVlMi5yZXBsYWNlKCcgQnl0ZScsICcnKTtcbiAgICAvLyAgICAgICAgIG8yID0gdmFsdWUyLnJlcGxhY2UoJyBCeXRlcycsICcnKTtcbiAgICAvLyAgICAgICAgIG8xID0gbzEucmVwbGFjZUFsbCgnLCcsICcnKTtcbiAgICAvLyAgICAgICAgIG8yID0gbzIucmVwbGFjZUFsbCgnLCcsICcnKTtcbiAgICAvLyAgICAgfSBlbHNlIHtcbiAgICAvLyAgICAgICAgIG8xID0gdmFsdWUxO1xuICAgIC8vICAgICAgICAgbzIgPSB2YWx1ZTI7XG4gICAgLy8gICAgIH1cbiAgICAvLyAgICAgY29uc3QgdjEgPSBwYXJzZUZsb2F0KG8xKTtcbiAgICAvLyAgICAgY29uc3QgdjIgPSBwYXJzZUZsb2F0KG8yKTtcbiAgICAvLyAgICAgLy8gcmV0dXJuIHZhbHVlMS5sb2NhbGVDb21wYXJlKHZhbHVlMik7XG4gICAgLy8gICAgIGlmICh2MSA+IHYyKSB7XG4gICAgLy8gICAgICAgICByZXR1cm4gMTtcbiAgICAvLyAgICAgfVxuICAgIC8vICAgICBlbHNlIGlmICh2MSA8IHYyKSB7XG4gICAgLy8gICAgICAgICByZXR1cm4gLTE7XG4gICAgLy8gICAgIH1cbiAgICAvLyAgICAgcmV0dXJuIDA7XG4gICAgLy8gfVxuXG4gICAgY3VzdG9tVmFsdWVTb3J0ZXIodmFsdWUxLCB2YWx1ZTIpOiBhbnkge1xuXG4gICAgICAgIC8vIEhhbmRsaW5nIG51bGwgdmFsdWVzXG4gICAgICAgIGlmICghdmFsdWUxICYmIHZhbHVlMikge1xuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdmFsdWUxICYmICF2YWx1ZTIpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZTEgJiYgIXZhbHVlMikge1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHR3byBzdHJpbmdzIGFyZSBlcXVpdmFsZW50IGluIHRoZSBjdXJyZW50IGxvY2FsZVxuXG4gICAgICAgIGNvbnN0IHYxID0gY29udmVydFN0cmluZyh2YWx1ZTEpO1xuICAgICAgICBjb25zdCB2MiA9IGNvbnZlcnRTdHJpbmcodmFsdWUyKTtcbiAgICAgICAgLy8gcmV0dXJuIHZhbHVlMS5sb2NhbGVDb21wYXJlKHZhbHVlMik7XG4gICAgICAgIGlmICh2MSA+IHYyKSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfSBlbHNlIGlmICh2MSA8IHYyKSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gY29udmVydFN0cmluZyh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIGxldCBvdXQ6IGFueTtcbiAgICAgICAgICAgICAgICBvdXQgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBvdXQgPSBvdXQucmVwbGFjZShcIk1CXCIsIFwiXCIpO1xuICAgICAgICAgICAgICAgIG91dCA9IG91dC5yZXBsYWNlKFwiR0JcIiwgXCJcIik7XG4gICAgICAgICAgICAgICAgb3V0ID0gb3V0LnJlcGxhY2UoXCJUQlwiLCBcIlwiKTtcbiAgICAgICAgICAgICAgICBvdXQgPSBvdXQucmVwbGFjZUFsbChcIixcIiwgXCJcIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQob3V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBjdXN0b21WYWx1ZVNvcnRlckZvckJhcih2YWx1ZU9uZSwgdmFsdWVUd28pIHtcblxuICAgICAgICBjb25zdCBwYXJzZXIxID0gbmV3IERPTVBhcnNlcigpO1xuICAgICAgICBjb25zdCBwYXJzZXIyID0gbmV3IERPTVBhcnNlcigpO1xuICAgICAgICBjb25zdCBkb2NPbmUgPSBwYXJzZXIxLnBhcnNlRnJvbVN0cmluZyh2YWx1ZU9uZSwgJ3RleHQvaHRtbCcpO1xuICAgICAgICBjb25zdCBkb2NUd28gPSBwYXJzZXIyLnBhcnNlRnJvbVN0cmluZyh2YWx1ZVR3bywgJ3RleHQvaHRtbCcpO1xuXG4gICAgICAgIGNvbnN0IHZhbHVlRWxlbWVudCA9IGRvY09uZS5xdWVyeVNlbGVjdG9yKCcuYmFyJyk7XG4gICAgICAgIGNvbnN0IG51bWJlclRleHRPbmUgPSBOdW1iZXIodmFsdWVFbGVtZW50LnRleHRDb250ZW50LnRyaW0oKS5yZXBsYWNlKC8sL2csICcnKSk7XG4gICAgICAgIGNvbnN0IHZhbHVlRWxlbWVudFR3byA9IGRvY1R3by5xdWVyeVNlbGVjdG9yKCcuYmFyJyk7XG4gICAgICAgIGNvbnN0IG51bWJlclRleHRUd28gPSBOdW1iZXIodmFsdWVFbGVtZW50VHdvLnRleHRDb250ZW50LnRyaW0oKS5yZXBsYWNlKC8sL2csICcnKSk7XG5cbiAgICAgICAgaWYgKCFudW1iZXJUZXh0T25lICYmIG51bWJlclRleHRUd28pIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW51bWJlclRleHRPbmUgJiYgIW51bWJlclRleHRUd28pIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIGlmIChudW1iZXJUZXh0T25lICYmICFudW1iZXJUZXh0VHdvKSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgdHdvIHN0cmluZ3MgYXJlIGVxdWl2YWxlbnQgaW4gdGhlIGN1cnJlbnQgbG9jYWxlXG5cbiAgICAgICAgY29uc3QgdjEgPSBjb252ZXJ0U3RyaW5nKG51bWJlclRleHRPbmUpO1xuICAgICAgICBjb25zdCB2MiA9IGNvbnZlcnRTdHJpbmcobnVtYmVyVGV4dFR3byk7XG4gICAgICAgIC8vIHJldHVybiB2YWx1ZTEubG9jYWxlQ29tcGFyZSh2YWx1ZTIpO1xuICAgICAgICBpZiAodjEgPiB2Mikge1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH0gZWxzZSBpZiAodjEgPCB2Mikge1xuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGNvbnZlcnRTdHJpbmcodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICBsZXQgb3V0OiBhbnk7XG4gICAgICAgICAgICAgICAgb3V0ID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgb3V0ID0gb3V0LnJlcGxhY2UoXCJNQlwiLCBcIlwiKTtcbiAgICAgICAgICAgICAgICBvdXQgPSBvdXQucmVwbGFjZShcIkdCXCIsIFwiXCIpO1xuICAgICAgICAgICAgICAgIG91dCA9IG91dC5yZXBsYWNlKFwiVEJcIiwgXCJcIik7XG4gICAgICAgICAgICAgICAgb3V0ID0gb3V0LnJlcGxhY2VBbGwoXCIsXCIsIFwiXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KG91dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDA7XG5cbiAgICB9XG5cbiAgICAvLyBmb3JtYXRUb0J5dGUodmFsdWUsIHNpemUpIHtcbiAgICAvLyAgICAgbGV0IHNpemVzID0gWydCeXRlcycsICdLQicsICdNQicsICdHQicsICdUQicsICdQQicsICdFQicsICdaQicsICdZQiddO1xuICAgIC8vICAgICBsZXQgaW5kZXggPSBzaXplcy5maW5kSW5kZXgoeCA9PiB4ID09PSBzaXplKTtcblxuICAgIC8vICAgICBjb25zb2xlLmxvZyhpbmRleCk7XG4gICAgLy8gfVxuXG4gICAgb25FeGNlbEV4cG9ydGluZyhlLCBleGNlbF9kYXRhLCByZXBvcnRfbmFtZSkge1xuICAgICAgICB0aGlzLkpTT05Ub0NTVkNvbnZlcnRvcihleGNlbF9kYXRhLCByZXBvcnRfbmFtZSwgdHJ1ZSk7XG4gICAgICAgIGUuY2FuY2VsID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZW1vdmVIdG1sQ29udGVudEZyb21EYXRhKGNvbHVtbnMsIHJvd3MpIHtcbiAgICAgICAgLy8gLnJlcGxhY2UoLzxcXC8/W14+XSsoPnwkKS9nLCBcIlwiKTtcblxuICAgICAgICByb3dzLmZvckVhY2goZnVuY3Rpb24gKHJvdykge1xuICAgICAgICAgICAgbGV0IHJvd1ZhbHVlcyA9IHJvdy52YWx1ZXM7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd1ZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChyb3dWYWx1ZXNbaV0gIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyb3dWYWx1ZXNbaV0udG9TdHJpbmcoKS5pbmNsdWRlcyhcIjwvaT5cIikpXG4gICAgICAgICAgICAgICAgICAgICAgICByb3dWYWx1ZXNbaV0gPSByb3dWYWx1ZXNbaV0ucmVwbGFjZSgvW14wLTlcXC5cXCxdL2csIFwiXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY3VzdG9taXplRXhjZWxDZWxsKG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKG9wdGlvbnMudmFsdWUgJiYgdHlwZW9mIG9wdGlvbnMudmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIGNvbnN0IG51bWVyaWNTdHJpbmcgPSBvcHRpb25zLnZhbHVlLnJlcGxhY2UoLywvZywgJycpO1xuICAgICAgICAgICAgaWYgKCFpc05hTihOdW1iZXIobnVtZXJpY1N0cmluZykpKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy52YWx1ZSA9IE51bWJlcihudW1lcmljU3RyaW5nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlbW92ZUh0bWxGb3JKb2JzdW1tYXJ5Q29udGVudEZyb21EYXRhKGNvbHVtbnMsIHJvd3MpIHtcbiAgICAgICAgLy8gLnJlcGxhY2UoLzxcXC8/W14+XSsoPnwkKS9nLCBcIlwiKTtcbiAgICAgICAgcm93cy5mb3JFYWNoKGZ1bmN0aW9uIChyb3cpIHtcbiAgICAgICAgICAgIGxldCByb3dWYWx1ZXMgPSByb3cudmFsdWVzO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dWYWx1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAocm93VmFsdWVzW2ldICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocm93VmFsdWVzW2ldLnRvU3RyaW5nKCkuaW5jbHVkZXMoXCI8L3NwYW4+XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgcm93VmFsdWVzW2ldID0gcm93VmFsdWVzW2ldLnJlcGxhY2UoLzxcXC8/W14+XSs+L2csICcnKS50cmltKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgZ2V0RGF5c0JldHdlZW5EYXRlcyhzdGFydCwgZW5kLCBkYXlOYW1lKSB7XG4gICAgICAgIGxldCByZXN1bHQgPSBbXTtcbiAgICAgICAgbGV0IGRheXMgPSB7IHN1bjogMCwgbW9uOiAxLCB0dWU6IDIsIHdlZDogMywgdGh1OiA0LCBmcmk6IDUsIHNhdDogNiB9O1xuICAgICAgICBsZXQgZGF5ID0gZGF5c1tkYXlOYW1lLnRvTG93ZXJDYXNlKCkuc3Vic3RyKDAsIDMpXTtcbiAgICAgICAgLy8gQ29weSBzdGFydCBkYXRlXG4gICAgICAgIGxldCBjdXJyZW50ID0gbmV3IERhdGUoc3RhcnQpO1xuICAgICAgICAvLyBTaGlmdCB0byBuZXh0IG9mIHJlcXVpcmVkIGRheXNcbiAgICAgICAgY3VycmVudC5zZXREYXRlKGN1cnJlbnQuZ2V0RGF0ZSgpICsgKChkYXkgLSBjdXJyZW50LmdldERheSgpICsgNykgJSA3KSk7XG4gICAgICAgIC8vIFdoaWxlIGxlc3MgdGhhbiBlbmQgZGF0ZSwgYWRkIGRhdGVzIHRvIHJlc3VsdCBhcnJheVxuICAgICAgICB3aGlsZSAoY3VycmVudCA8IG5ldyBEYXRlKGVuZCkpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ldyBEYXRlKCtjdXJyZW50KSk7XG4gICAgICAgICAgICBjdXJyZW50LnNldERhdGUoY3VycmVudC5nZXREYXRlKCkgKyA3KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGdldEFsbFNldmljZUFwaUpzb24oYXBpSnNvbk9iamVjdCkge1xuICAgICAgICBsZXQgc2VydmljZV9hcGk6IGFueTtcbiAgICAgICAgc2VydmljZV9hcGkgPSB7XG4gICAgICAgICAgICByZXF1ZXN0SWQ6IGFwaUpzb25PYmplY3QucmVxdWVzdElkLFxuICAgICAgICAgICAgZmlsdGVyOiB7XG4gICAgICAgICAgICAgICAgY29uZGl0aW9uR3JvdXA6IHtcbiAgICAgICAgICAgICAgICAgICAgY29ubmVjdG9yOiBcImFuZFwiLFxuICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlTmFtZTogXCJzdGFydERhdGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXROYW1lOiBcInJlY29yZF9kYXRlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IFwiZ3JlYXRlclRoYW5PckVxdWFsc1RvXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYXBpSnNvbk9iamVjdC5zdGFydERhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5yaWNoQ2x6OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNvbS5nYW1tYS5jb21wb25lbnRzLmFwaWF1dG9tYXRpb24uZW5yaWNobWVudC5BcGlHZW5lcmljRW5yaWNobWVudFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVucmljaE1ldGhvZDogXCJjb252ZXJ0TmFycm93U3RyaW5nVG9TaG9ydFN0cmluZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VOYW1lOiBcImVuZERhdGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXROYW1lOiBcInJlY29yZF9kYXRlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IFwibGVzc1RoYW5PckVxdWFsc1RvXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYXBpSnNvbk9iamVjdC5lbmREYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVucmljaENsejpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjb20uZ2FtbWEuY29tcG9uZW50cy5hcGlhdXRvbWF0aW9uLmVucmljaG1lbnQuQXBpR2VuZXJpY0VucmljaG1lbnRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnJpY2hNZXRob2Q6IFwiY29udmVydE5hcnJvd1N0cmluZ1RvU2hvcnRTdHJpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKGFwaUpzb25PYmplY3Quc3J2VHlwZSAhPSB1bmRlZmluZWQgfHwgYXBpSnNvbk9iamVjdC5zcnZUeXBlICE9IG51bGwpIHtcbiAgICAgICAgICAgIHNlcnZpY2VfYXBpLmZpbHRlci5jb25kaXRpb25Hcm91cC5jb25kaXRpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgIHNvdXJjZU5hbWU6IFwic3J2VHlwZVwiLFxuICAgICAgICAgICAgICAgIHRhcmdldE5hbWU6IFwic3J2X3R5cGVcIixcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogYXBpSnNvbk9iamVjdC5zcnZUeXBlT3BlcmF0b3IsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogYXBpSnNvbk9iamVjdC5zcnZUeXBlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFwaUpzb25PYmplY3QucmVjb3JkVHlwZSAhPSB1bmRlZmluZWQgfHwgYXBpSnNvbk9iamVjdC5yZWNvcmRUeXBlICE9IG51bGwpIHtcbiAgICAgICAgICAgIHNlcnZpY2VfYXBpLmZpbHRlci5jb25kaXRpb25Hcm91cC5jb25kaXRpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgIFwic291cmNlTmFtZVwiOiBcInJlY29yZFR5cGVcIixcbiAgICAgICAgICAgICAgICBcInRhcmdldE5hbWVcIjogXCJyZWNvcmRfdHlwZVwiLFxuICAgICAgICAgICAgICAgIFwib3BlcmF0b3JcIjogXCJlcXVhbHNcIixcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICBcInZhbHVlXCI6IGFwaUpzb25PYmplY3QucmVjb3JkVHlwZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgYXBpSnNvbk9iamVjdC5zb3VyY2VWYWx1ZSAhPSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgIGFwaUpzb25PYmplY3Quc291cmNlVmFsdWUgIT0gbnVsbFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHNlcnZpY2VfYXBpLmZpbHRlci5jb25kaXRpb25Hcm91cC5jb25kaXRpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgIHNvdXJjZU5hbWU6IFwic291cmNlXCIsXG4gICAgICAgICAgICAgICAgdGFyZ2V0TmFtZTogXCJzb3VyY2VcIixcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogXCJlcXVhbHNcIixcbiAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBhcGlKc29uT2JqZWN0LnNvdXJjZVZhbHVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgYXBpSnNvbk9iamVjdC5pblRydW5rVmFsdWUgIT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICBhcGlKc29uT2JqZWN0LmluVHJ1bmtWYWx1ZSAhPSBudWxsXG4gICAgICAgICkge1xuICAgICAgICAgICAgc2VydmljZV9hcGkuZmlsdGVyLmNvbmRpdGlvbkdyb3VwLmNvbmRpdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgc291cmNlTmFtZTogXCJpblRydW5rXCIsXG4gICAgICAgICAgICAgICAgdGFyZ2V0TmFtZTogXCJpbl90cnVua1wiLFxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBcImVxdWFsc1wiLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGFwaUpzb25PYmplY3QuaW5UcnVua1ZhbHVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgYXBpSnNvbk9iamVjdC5vdXRUcnVua1ZhbHVlICE9IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgYXBpSnNvbk9iamVjdC5vdXRUcnVua1ZhbHVlICE9IG51bGxcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBzZXJ2aWNlX2FwaS5maWx0ZXIuY29uZGl0aW9uR3JvdXAuY29uZGl0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICBzb3VyY2VOYW1lOiBcIm91dFRydW5rXCIsXG4gICAgICAgICAgICAgICAgdGFyZ2V0TmFtZTogXCJvdXRfdHJ1bmtcIixcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogXCJlcXVhbHNcIixcbiAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBhcGlKc29uT2JqZWN0Lm91dFRydW5rVmFsdWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBhcGlKc29uT2JqZWN0LmV2ZW50VHlwZSAhPSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgIGFwaUpzb25PYmplY3QuZXZlbnRUeXBlICE9IG51bGxcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBzZXJ2aWNlX2FwaS5maWx0ZXIuY29uZGl0aW9uR3JvdXAuY29uZGl0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICBzb3VyY2VOYW1lOiBcImV2ZW50VHlwZUtleVwiLFxuICAgICAgICAgICAgICAgIHRhcmdldE5hbWU6IFwiZXZlbnRfdHlwZVwiLFxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBhcGlKc29uT2JqZWN0LmV2ZW50VHlwZS5sZW5ndGggPiAxID8gXCJpblwiIDogXCJlcXVhbHNcIixcbiAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBhcGlKc29uT2JqZWN0LmV2ZW50VHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGFwaUpzb25PYmplY3QuZXZlbnQgIT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICBhcGlKc29uT2JqZWN0LmV2ZW50ICE9IG51bGxcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBzZXJ2aWNlX2FwaS5maWx0ZXIuY29uZGl0aW9uR3JvdXAuY29uZGl0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICBcInNvdXJjZU5hbWVcIjogXCJldmVudF90eXBlXCIsXG4gICAgICAgICAgICAgICAgXCJ0YXJnZXROYW1lXCI6IFwiZXZlbnRfdHlwZVwiLFxuICAgICAgICAgICAgICAgIFwib3BlcmF0b3JcIjogXCJlcXVhbHNcIixcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICBcInZhbHVlXCI6IGFwaUpzb25PYmplY3QuZXZlbnRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgYXBpSnNvbk9iamVjdC5kaXJlY3Rpb24gIT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICBhcGlKc29uT2JqZWN0LmRpcmVjdGlvbiAhPSBudWxsXG4gICAgICAgICkge1xuICAgICAgICAgICAgc2VydmljZV9hcGkuZmlsdGVyLmNvbmRpdGlvbkdyb3VwLmNvbmRpdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgc291cmNlTmFtZTogXCJkaXJlY3Rpb25cIixcbiAgICAgICAgICAgICAgICB0YXJnZXROYW1lOiBcImRpcmVjdGlvblwiLFxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBcImVxdWFsc1wiLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGFwaUpzb25PYmplY3QuZGlyZWN0aW9uLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFwaUpzb25PYmplY3QuY291bnRyeSAhPSB1bmRlZmluZWQgfHwgYXBpSnNvbk9iamVjdC5jb3VudHJ5ICE9IG51bGwpIHtcbiAgICAgICAgICAgIHNlcnZpY2VfYXBpLmZpbHRlci5jb25kaXRpb25Hcm91cC5jb25kaXRpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgIHNvdXJjZU5hbWU6IFwiY291bnRyeVwiLFxuICAgICAgICAgICAgICAgIHRhcmdldE5hbWU6IFwiY291bnRyeVwiLFxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBcImVxdWFsc1wiLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGFwaUpzb25PYmplY3QuY291bnRyeSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhcGlKc29uT2JqZWN0LmFwbiAhPSB1bmRlZmluZWQgfHwgYXBpSnNvbk9iamVjdC5hcG4gIT0gbnVsbCkge1xuICAgICAgICAgICAgc2VydmljZV9hcGkuZmlsdGVyLmNvbmRpdGlvbkdyb3VwLmNvbmRpdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgc291cmNlTmFtZTogXCJhcG5cIixcbiAgICAgICAgICAgICAgICB0YXJnZXROYW1lOiBcImFwblwiLFxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBcImVxdWFsc1wiLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGFwaUpzb25PYmplY3QuYXBuLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgYXBpSnNvbk9iamVjdC5ud0NhbGxUeXBlICE9IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgYXBpSnNvbk9iamVjdC5ud0NhbGxUeXBlICE9IG51bGxcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBzZXJ2aWNlX2FwaS5maWx0ZXIuY29uZGl0aW9uR3JvdXAuY29uZGl0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICBzb3VyY2VOYW1lOiBcIm53Q2FsbFR5cGVcIixcbiAgICAgICAgICAgICAgICB0YXJnZXROYW1lOiBcIm53X2NhbGxfdHlwZVwiLFxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBcImVxdWFsc1wiLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGFwaUpzb25PYmplY3QubndDYWxsVHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGFwaUpzb25PYmplY3QucmF0aW5nR3JvdXAgIT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICBhcGlKc29uT2JqZWN0LnJhdGluZ0dyb3VwICE9IG51bGxcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBzZXJ2aWNlX2FwaS5maWx0ZXIuY29uZGl0aW9uR3JvdXAuY29uZGl0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICBzb3VyY2VOYW1lOiBcInJhdGluZ0dyb3VwXCIsXG4gICAgICAgICAgICAgICAgdGFyZ2V0TmFtZTogXCJyYXRpbmdfZ3JvdXBcIixcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogXCJlcXVhbHNcIixcbiAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBhcGlKc29uT2JqZWN0LnJhdGluZ0dyb3VwLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgYXBpSnNvbk9iamVjdC50ZXJtaW5hdGlvblZhbHVlICE9IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgYXBpSnNvbk9iamVjdC50ZXJtaW5hdGlvblZhbHVlICE9IG51bGxcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBzZXJ2aWNlX2FwaS5maWx0ZXIuY29uZGl0aW9uR3JvdXAuY29uZGl0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICBzb3VyY2VOYW1lOiBcInRlcm1pbmF0aW9uQ29kZVwiLFxuICAgICAgICAgICAgICAgIHRhcmdldE5hbWU6IFwidGVybV9jb2RlXCIsXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IFwibm90ZXF1YWxzXCIsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogYXBpSnNvbk9iamVjdC50ZXJtaW5hdGlvblZhbHVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgYXBpSnNvbk9iamVjdC5jZWxsSWRWYWx1ZSAhPSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgIGFwaUpzb25PYmplY3QuY2VsbElkVmFsdWUgIT0gbnVsbFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHNlcnZpY2VfYXBpLmZpbHRlci5jb25kaXRpb25Hcm91cC5jb25kaXRpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgIHNvdXJjZU5hbWU6IFwiY2VsbElkXCIsXG4gICAgICAgICAgICAgICAgdGFyZ2V0TmFtZTogXCJjZWxsX2lkXCIsXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IFwibm90ZXF1YWxzXCIsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogYXBpSnNvbk9iamVjdC5jZWxsSWRWYWx1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNlcnZpY2VfYXBpO1xuICAgIH1cblxuICAgIC8vIG1ha2Ugc2FvbWUgcmVuZG9tZSBudW1iZXJcbiAgICBwcmltZXJ5UmVuZG9tZUlkKGxlbmd0aCkge1xuICAgICAgICBsZXQgbWFzayA9IFwiXCI7XG4gICAgICAgIG1hc2sgKz0gXCIwMTIzNDU2Nzg5XCI7XG4gICAgICAgIGxldCByZXN1bHQgPSBcIlwiO1xuICAgICAgICBmb3IgKHZhciBpID0gbGVuZ3RoOyBpID4gMDsgLS1pKVxuICAgICAgICAgICAgcmVzdWx0ICs9IG1hc2tbTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogKG1hc2subGVuZ3RoIC0gMSkpXTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cblxuICAgIC8vIGZvciBjaGFydCB0b29sdGlwXG4gICAgY2hhcnRUb29sdGlwKGE6IGFueSwgYjogYW55LCBjOiBhbnksIGQ6IGFueSk6IGFueSB7XG4gICAgICAgIHJldHVybiAnPHRhYmxlIHdpZHRoPTEwMCUgaGVpZ2h0PTMwIGJvcmRlcj0wICBzdHlsZT1cXCdmb250LXNpemU6IDEzcHhcXCc+JyArXG4gICAgICAgICAgICAnPHRyPjx0ZCBzdHlsZT1cXCd0ZXh0LWFsaWduOiBsZWZ0OyBjb2xvcjogd2hpdGVcXCc+ICcgKyBhICsgJzonICsgYiArICc8L3RkPjwvdHI+JyArXG4gICAgICAgICAgICAnPHRyPjx0ZCBzdHlsZT1cXCd0ZXh0LWFsaWduOiBsZWZ0OyBjb2xvcjogd2hpdGU7IHBhZGRpbmctdG9wOiA1cHhcXCc+ICcgKyBjICsgJzonICsgZCArICc8L3RkPjwvdHI+JyArXG4gICAgICAgICAgICAnPC90YWJsZT4nO1xuICAgIH1cblxuXG4gICAgY29udmVydFRvVGl0bGVDYXNlKHZhbHVlKSB7XG4gICAgICAgIGNvbnN0IHdvcmRzID0gdmFsdWUuc3BsaXQoLyg/PVtBLVpdKXxfLyk7XG4gICAgICAgIGNvbnN0IGNhcGl0YWxpemVkV29yZHMgPSB3b3Jkcy5tYXAod29yZCA9PiB3b3JkLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGNhcGl0YWxpemVkV29yZHMuam9pbignICcpO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgZm9ybWF0S2V5VmFsdWVQYWlycyhrZXlzLCB2YWx1ZXMpIHtcbiAgICAgICAgaWYgKGtleXMubGVuZ3RoICE9PSB2YWx1ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0tleXMgYW5kIHZhbHVlcyBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZm9ybWF0dGVkUGFpcnMgPSBbXTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IHRoaXMuY29udmVydFRvVGl0bGVDYXNlKGtleXNbaV0pO1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB2YWx1ZXNbaV07XG4gICAgICAgICAgICBmb3JtYXR0ZWRQYWlycy5wdXNoKGAke2tleX0gPSAke3ZhbHVlfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZm9ybWF0dGVkUGFpcnMuam9pbignIHwgJyk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgZ2V0VmFsdWVzQnlLZXkob2JqLCBrZXlzKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IFtdO1xuXG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgICAgICAgIGlmIChrZXkgaW4gb2JqKSB7XG4gICAgICAgICAgICAgICAgdmFsdWVzLnB1c2gob2JqW2tleV0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YWx1ZXMucHVzaCgnJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWVzO1xuICAgIH1cblxuICAgIHRyYW5zZm9ybUhlYWRlckFzS2V5TmFtZShtYWlub2JqOiBhbnkpOiBhbnlbXSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhtYWlub2JqKS5tYXAoa2V5ID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBkYXRhRmllbGQ6IGtleSxcbiAgICAgICAgICAgICAgICBjYXB0aW9uOiBrZXlcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGZvcm1hdERlY2ltYWxWYWx1ZXNGb3JDZHJEYXRhVGFibGUoZGF0YVNvdXJjZSkge1xuICAgICAgICByZXR1cm4gZGF0YVNvdXJjZS5tYXAoaXRlbSA9PiB7XG4gICAgICAgICAgICBsZXQgbmV3SXRlbSA9IHt9O1xuXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhpdGVtKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gaXRlbVtrZXldO1xuICAgICAgICAgICAgICAgIGxldCBudW1WYWx1ZSA9IE51bWJlcih2YWx1ZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWlzTmFOKG51bVZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAobnVtVmFsdWUgJSAxICE9PSAwKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld0l0ZW1ba2V5XSA9IHRoaXMucmVmb3JtYXROdW1iZXJXaXRoVGhvdXNhbmRTZXBhcmF0b3JWMyhudW1WYWx1ZSwgMik7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdJdGVtW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0l0ZW1ba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gbmV3SXRlbTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2VuZXJhdGVTYW1wbGVEYXRhKHN0YXJ0RGF0ZTogc3RyaW5nLCBlbmREYXRlOiBzdHJpbmcsIGZpZWxkczogc3RyaW5nW10pOiBhbnlbXSB7XG4gICAgICAgIGxldCBkYXRhc2V0ID0gW107XG4gICAgICAgIGxldCBjdXJyZW50RGF0ZSA9IG1vbWVudChzdGFydERhdGUpO1xuICAgICAgICBjb25zdCBlbmREYXRlTW9tZW50ID0gbW9tZW50KGVuZERhdGUpO1xuXG4gICAgICAgIHdoaWxlIChjdXJyZW50RGF0ZSA8PSBlbmREYXRlTW9tZW50KSB7XG4gICAgICAgICAgICBsZXQgcmVjb3JkID0ge307XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgZmllbGQgb2YgZmllbGRzKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZpZWxkID09PSAncmVjb3JkRGF0ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkW2ZpZWxkXSA9IGN1cnJlbnREYXRlLmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlY29yZFtmaWVsZF0gPSB0aGlzLmdldFJlbmRvbU51bWJlcldpdGhkZWNpbWFscygzLCAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRhdGFzZXQucHVzaChyZWNvcmQpO1xuICAgICAgICAgICAgY3VycmVudERhdGUgPSBjdXJyZW50RGF0ZS5hZGQoMSwgJ2RheXMnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkYXRhc2V0O1xuICAgIH1cbiAgICBnZXRSZW5kb21OdW1iZXJXaXRoZGVjaW1hbHMobGVuZ3RoLCBleHApIHtcbiAgICAgICAgbGV0IG1hc2sgPSBcIlwiO1xuICAgICAgICBtYXNrICs9IFwiMDEyMzQ1Njc4OVwiO1xuICAgICAgICBsZXQgcmVzdWx0ID0gXCJcIjtcbiAgICAgICAgZm9yICh2YXIgaSA9IGxlbmd0aDsgaSA+IDA7IC0taSlcbiAgICAgICAgICAgIHJlc3VsdCArPSBtYXNrW01hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIChtYXNrLmxlbmd0aCAtIDEpKV07XG4gICAgICAgIHJldHVybiB0aGlzLnJlZm9ybWF0TnVtYmVyV2l0aFRob3VzYW5kU2VwYXJhdG9yVjQocmVzdWx0LCBleHApO1xuICAgIH1cblxuICAgIGZvcm1hdFRpbWVzdGFtcCh0aW1lc3RhbXA6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IG51bWVyaWNUaW1lc3RhbXAgPSBwYXJzZUludCh0aW1lc3RhbXAsIDEwKTtcbiAgICAgICAgcmV0dXJuIG1vbWVudChudW1lcmljVGltZXN0YW1wKS5mb3JtYXQoJ2RkZGQsIEREIE1NTU0gWVlZWSBISDptbTpzcy5TU1MgW0dNVF1aWicpO1xuICAgIH1cblxuICAgIGZvcm1hdER1cmF0aW9uRnJvbU1pbGlzZWNvbmQobWlsbGlzZWNvbmRzKSB7XG4gICAgICAgIGxldCB0b3RhbFNlY29uZHMgPSBNYXRoLmZsb29yKG1pbGxpc2Vjb25kcyAvIDEwMDApO1xuICAgICAgICBsZXQgc2Vjb25kcyA9IHRvdGFsU2Vjb25kcyAlIDYwO1xuICAgICAgICBsZXQgdG90YWxNaW51dGVzID0gTWF0aC5mbG9vcih0b3RhbFNlY29uZHMgLyA2MCk7XG4gICAgICAgIGxldCBtaW51dGVzID0gdG90YWxNaW51dGVzICUgNjA7XG4gICAgICAgIGxldCBob3VycyA9IE1hdGguZmxvb3IodG90YWxNaW51dGVzIC8gNjApO1xuXG4gICAgICAgIGxldCByZXN1bHQgPSBbXTtcblxuICAgICAgICBpZiAoaG91cnMgPiAwKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaChgJHtob3Vyc30gaG91ciR7aG91cnMgPiAxID8gJ3MnIDogJyd9YCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1pbnV0ZXMgPiAwKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaChgJHttaW51dGVzfSBtaW51dGUke21pbnV0ZXMgPiAxID8gJ3MnIDogJyd9YCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNlY29uZHMgPiAwIHx8IHJlc3VsdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGAke3NlY29uZHN9IHNlY29uZCR7c2Vjb25kcyA+IDEgPyAncycgOiAnJ31gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQuam9pbignICcpO1xuICAgIH1cblxuXG4gICAgcmVtb3ZlRHVwbGljYXRlcyhqb2JBcnJheSwgY29udGV4dCkge1xuICAgICAgICBjb25zdCBzZWVuID0gbmV3IFNldCgpO1xuICAgICAgICByZXR1cm4gam9iQXJyYXkuZmlsdGVyKGl0ZW0gPT4ge1xuICAgICAgICAgICAgY29uc3QgZHVwbGljYXRlID0gc2Vlbi5oYXMoaXRlbVtjb250ZXh0XSk7XG4gICAgICAgICAgICBzZWVuLmFkZChpdGVtW2NvbnRleHRdKTtcbiAgICAgICAgICAgIHJldHVybiAhZHVwbGljYXRlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRLZXkgPSAob2JqKSA9PiB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuICAgICAgICByZXR1cm4ga2V5cy5maW5kKGtleSA9PiBrZXkgIT09IFwiZXZlbnRfZGF0ZVwiKTtcbiAgICB9O1xuXG4gICAgY29udmVydFN0cmluZyhpbnB1dCkge1xuICAgICAgICBsZXQgcmVzdWx0ID0gaW5wdXRcbiAgICAgICAgICAgIC5yZXBsYWNlKC9fL2csICcgJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC8oW2Etel0pKFtBLVpdKS9nLCAnJDEgJDInKVxuICAgICAgICAgICAgLnJlcGxhY2UoL1xcYihbYS16XSkvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZSgvKFtBLVpdezIsfSkvZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgICByZXR1cm4gbWF0Y2gudG9VcHBlckNhc2UoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxufVxuIl19