tango-app-ui-store-builder 1.2.17 → 1.2.19
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.
- package/esm2022/lib/components/access-denied/access-denied.component.mjs +31 -0
- package/esm2022/lib/components/collection-update-ai/collection-update-ai.component.mjs +3 -3
- package/esm2022/lib/components/collection-update-ai/find-replace-layout/prepare-template/prepare-template.component.mjs +3 -3
- package/esm2022/lib/components/collection-update-ai/find-replace-layout/review-replace/review-replace.component.mjs +3 -3
- package/esm2022/lib/components/fixture-template/template-assign-stores/preview-modal/preview-modal.component.mjs +3 -3
- package/esm2022/lib/components/fixture-template/template-assign-stores/template-assign-stores.component.mjs +3 -3
- package/esm2022/lib/components/fixture-template-table/find-and-replace/find-and-replace.component.mjs +3 -3
- package/esm2022/lib/components/fixture-template-table/fixture-template-table.component.mjs +25 -3
- package/esm2022/lib/components/fixture-template-tree/fixture-template-tree.component.mjs +3 -3
- package/esm2022/lib/components/manage-plano/verification-table/verification-table.component.mjs +26 -11
- package/esm2022/lib/components/manage-store-plano/manage-store-plano.component.mjs +3 -3
- package/esm2022/lib/components/manage-store-plano/plano-rollout/plano-rollout.component.mjs +3 -3
- package/esm2022/lib/components/manage-store-plano/verification-feedback/verification-feedback.component.mjs +9 -3
- package/esm2022/lib/components/manage-store-plano/zone-verification-feedback/zone-verification-feedback.component.mjs +9 -3
- package/esm2022/lib/components/onboard-store-plano/onboard-store-plano.component.mjs +133 -21
- package/esm2022/lib/components/plano-configurations/plano-configurations.component.mjs +8 -3
- package/esm2022/lib/components/plano-library/fixture-library/fixture-library.component.mjs +28 -5
- package/esm2022/lib/components/plano-tools/cad-render/cad-render.component.mjs +3 -3
- package/esm2022/lib/components/plano-tools/plano-migrate/plano-migrate.component.mjs +3 -3
- package/esm2022/lib/components/planogram/merch-compliance/merch-compliance.component.mjs +3 -3
- package/esm2022/lib/components/planogram/merch-compliance/product-locator/product-locator.component.mjs +3 -3
- package/esm2022/lib/components/planogram/plano-overview/plano-comparison/plano-comparison.component.mjs +3 -3
- package/esm2022/lib/components/planogram/plano-overview/plano-overview.component.mjs +3 -3
- package/esm2022/lib/components/store-plano/store-plano-tree-view/store-plano-tree-view.component.mjs +3 -3
- package/esm2022/lib/components/store-plano/store-plano.component.mjs +3 -3
- package/esm2022/lib/functions/feature-access.guard.mjs +20 -0
- package/esm2022/lib/functions/plano.function.mjs +22 -1
- package/esm2022/lib/services/store-builder.service.mjs +15 -3
- package/esm2022/lib/tango-store-builder-routing.module.mjs +11 -1
- package/esm2022/lib/tango-store-builder.module.mjs +5 -2
- package/fesm2022/tango-app-ui-store-builder.mjs +333 -61
- package/fesm2022/tango-app-ui-store-builder.mjs.map +1 -1
- package/lib/components/access-denied/access-denied.component.d.ts +18 -0
- package/lib/components/fixture-template-table/fixture-template-table.component.d.ts +6 -0
- package/lib/components/manage-plano/rollout-table/rollout-table.component.d.ts +4 -4
- package/lib/components/manage-plano/verification-table/verification-table.component.d.ts +6 -5
- package/lib/components/manage-store-plano/verification-feedback/verification-feedback.component.d.ts +1 -0
- package/lib/components/manage-store-plano/zone-verification-feedback/zone-verification-feedback.component.d.ts +1 -0
- package/lib/components/onboard-store-plano/onboard-store-plano.component.d.ts +8 -0
- package/lib/components/plano-library/fixture-library/fixture-library.component.d.ts +5 -1
- package/lib/functions/feature-access.guard.d.ts +9 -0
- package/lib/functions/plano.function.d.ts +9 -0
- package/lib/services/store-builder.service.d.ts +6 -0
- package/lib/tango-store-builder.module.d.ts +38 -37
- package/package.json +1 -1
|
@@ -344,8 +344,13 @@ export class PlanoConfigurationsComponent {
|
|
|
344
344
|
const rows = this.brandMetaData.value;
|
|
345
345
|
const seen = new Set();
|
|
346
346
|
const dupes = [];
|
|
347
|
+
const norm = (v) => (v || "").trim().toLowerCase();
|
|
347
348
|
rows.forEach((r, i) => {
|
|
348
|
-
|
|
349
|
+
// A row counts as a duplicate only when every field matches another row.
|
|
350
|
+
// The same Pid Cat + Temp Group with a different Category/Brand/Band is allowed.
|
|
351
|
+
const key = [r.pidCat, r.tempGroup, r.category, r.brand, r.band]
|
|
352
|
+
.map(norm)
|
|
353
|
+
.join("|");
|
|
349
354
|
if (seen.has(key)) {
|
|
350
355
|
dupes.push({ row: i, combo: `${r.pidCat} / ${r.tempGroup}` });
|
|
351
356
|
}
|
|
@@ -355,7 +360,7 @@ export class PlanoConfigurationsComponent {
|
|
|
355
360
|
});
|
|
356
361
|
if (dupes.length) {
|
|
357
362
|
const first = dupes[0];
|
|
358
|
-
this.toast.getErrorToast(`Row ${first.row + 1}: duplicate
|
|
363
|
+
this.toast.getErrorToast(`Row ${first.row + 1}: duplicate entry — all fields identical to another row ("${first.combo}")`);
|
|
359
364
|
this.scrollAndFlashBrandMetaField(first.row, "pidCat");
|
|
360
365
|
return;
|
|
361
366
|
}
|
|
@@ -443,4 +448,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
443
448
|
type: ViewChild,
|
|
444
449
|
args: ['brandMetaRef']
|
|
445
450
|
}] } });
|
|
446
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhbm8tY29uZmlndXJhdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtYnVpbGRlci9zcmMvbGliL2NvbXBvbmVudHMvcGxhbm8tY29uZmlndXJhdGlvbnMvcGxhbm8tY29uZmlndXJhdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtYnVpbGRlci9zcmMvbGliL2NvbXBvbmVudHMvcGxhbm8tY29uZmlndXJhdGlvbnMvcGxhbm8tY29uZmlndXJhdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQXNCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RixPQUFPLEVBSUwsV0FBVyxFQUVYLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBT3hCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7OztBQVE1RCxNQUFNLE9BQU8sNEJBQTRCO0lBZTdCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQXRCYSxPQUFPLENBQWE7SUFDZixZQUFZLENBQWE7SUFDckQsV0FBVyxHQUFXLE9BQU8sQ0FBQztJQUM5QixJQUFJLENBQWE7SUFDakIsUUFBUSxDQUFTO0lBQ2pCLFVBQVUsR0FBbUIsRUFBRSxDQUFDO0lBQ2hDLE9BQU8sR0FBWSxJQUFJLENBQUM7SUFDeEIsTUFBTSxHQUFZLEtBQUssQ0FBQztJQUN4QixRQUFRLENBQVk7SUFDcEIsYUFBYSxDQUFhO0lBQzFCLGFBQWEsR0FBVSxFQUFFLENBQUM7SUFDMUIsZUFBZSxHQUFZLElBQUksQ0FBQztJQUNoQyxlQUFlLEdBQVcsRUFBRSxDQUFDO0lBQzdCLFlBQ1UsRUFBZSxFQUNmLFdBQTZCLEVBQzdCLEVBQXNCLEVB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QU0sQ0FBQyxDQUFDO1FBQ3BFLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ3pCLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDO1lBQ2xDLE9BQU8sQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksc0JBQXNCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDOUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxDQUMvQixDQUFDLE1BQU0sQ0FBQztJQUNYLENBQUM7d0dBeGZVLDRCQUE0Qjs0RkFBNUIsNEJBQTRCLG1RQ3ZCekMsMGltQ0E4V0E7OzRGRHZWYSw0QkFBNEI7a0JBTHhDLFNBQVM7K0JBQ0UsMEJBQTBCO3VUQUtiLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkFDTyxZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7XHJcbiAgQWJzdHJhY3RDb250cm9sLFxyXG4gIEZvcm1BcnJheSxcclxuICBGb3JtQnVpbGRlcixcclxuICBGb3JtQ29udHJvbCxcclxuICBGb3JtR3JvdXAsXHJcbiAgVmFsaWRhdG9ycyxcclxufSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UsIFBhZ2VJbmZvU2VydmljZSB9IGZyb20gXCJ0YW5nby1hcHAtdWktZ2xvYmFsXCI7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gXCJ0YW5nby1hcHAtdWktc2hhcmVkXCI7XHJcbmltcG9ydCB7IFBsYW5vRGF0YVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvcGxhbm8tZGF0YS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFN0b3JlQnVpbGRlclNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvc3RvcmUtYnVpbGRlci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFBvcHVwc0NvbXBvbmVudCB9IGZyb20gXCIuL3BvcHVwcy9wb3B1cHMuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEJyYW5kRGV0YWlscyB9IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzL3ZtLWxpYnJhcnkuaW50ZXJmYWNlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJsaWItcGxhbm8tY29uZmlndXJhdGlvbnNcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3BsYW5vLWNvbmZpZ3VyYXRpb25zLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmw6IFwiLi9wbGFuby1jb25maWd1cmF0aW9ucy5jb21wb25lbnQuc2Nzc1wiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGxhbm9Db25maWd1cmF0aW9uc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgIEBWaWV3Q2hpbGQoJ2Zvcm1SZWYnKSBmb3JtUmVmOiBFbGVtZW50UmVmO1xyXG4gICBAVmlld0NoaWxkKCdicmFuZE1ldGFSZWYnKSBicmFuZE1ldGFSZWY6IEVsZW1lbnRSZWY7XHJcbiAgc2VsZWN0ZWRUYWI6IHN0cmluZyA9IFwiYnJhbmRcIjtcclxuICBmb3JtITogRm9ybUdyb3VwO1xyXG4gIGNsaWVudElkOiBzdHJpbmc7XHJcbiAgYnJhbmRzTGlzdDogQnJhbmREZXRhaWxzW10gPSBbXTtcclxuICBsb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICBpc0VkaXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB0YXNrRm9ybTogRm9ybUdyb3VwO1xyXG4gIGJyYW5kTWV0YUZvcm0hOiBGb3JtR3JvdXA7XHJcbiAgYnJhbmRNZXRhTGlzdDogYW55W10gPSBbXTtcclxuICBpc0JyYW5kTWV0YUVkaXQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGJyYW5kTWV0YVNlYXJjaDogc3RyaW5nID0gXCJcIjtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSBkYXRhU2VydmljZTogUGxhbm9EYXRhU2VydmljZSxcclxuICAgIHByaXZhdGUgZ3M6IEdsb2JhbFN0YXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgYnVpbGRlclNlcnZpY2U6IFN0b3JlQnVpbGRlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRvYXN0OiBUb2FzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1vZGVsU2VydmljZTogTmdiTW9kYWwsXHJcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgcGFnZUluZm86IFBhZ2VJbmZvU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcclxuICApIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhpZGRlbiBlbnRyeSBwb2ludCB0byB0aGUgaW50ZXJuYWwgcGxhbm8tdG9vbHMgcGFnZS5cclxuICAgKiBUcmlnZ2VyZWQgZnJvbSBhbiBpbnZpc2libGUgMcOXMSBoaXQtYXJlYSBiZWxvdyB0aGUgY29uZmlnIHNpZGUgY2FyZCDigJRcclxuICAgKiBmb3Igb3BzL2RldnMgd2hvIGtub3cgaXQncyB0aGVyZS4gTm90IGRpc2NvdmVyYWJsZSBpbiB0aGUgVUkuXHJcbiAgICovXHJcbiAgZ29Ub1BsYW5vVG9vbHMoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKFwiL21hbmFnZS9wbGFub2dyYW0vcGxhbm8tdG9vbHNcIik7XHJcbiAgfVxyXG5cclxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuc2V0UGFnZURhdGEoKTtcclxuICAgIHRoaXMuaW5pdEZvcm0oKTtcclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWUuc3Vic2NyaWJlKGFzeW5jIChkYXRhKSA9PiB7XHJcbiAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgdGhpcy5jbGllbnRJZCA9IGRhdGE/LmNsaWVudDtcclxuICAgICAgICB0aGlzLmxvYWRCcmFuZERhdGEoKTtcclxuICAgICAgICB0aGlzLmxvYWRUYXNrRGF0YSgpO1xyXG4gICAgICAgIHRoaXMubG9hZEJyYW5kTWV0YURhdGEoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBsZXQgZGF0YSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJoZWFkZXItZmlsdGVyc1wiKSBhcyBzdHJpbmcpO1xyXG4gICAgICAgIHRoaXMuY2xpZW50SWQgPSBkYXRhPy5jbGllbnQ7XHJcbiAgICAgICAgdGhpcy5sb2FkQnJhbmREYXRhKCk7XHJcbiAgICAgICAgdGhpcy5sb2FkVGFza0RhdGEoKTtcclxuICAgICAgICB0aGlzLmxvYWRCcmFuZE1ldGFEYXRhKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0UGFnZURhdGEoKSB7XHJcbiAgICB0aGlzLnBhZ2VJbmZvLnNldFRpdGxlKFwiQ29uZmlndXJhdGlvblwiKTtcclxuICAgIHRoaXMucGFnZUluZm8uc2V0QnJlYWRjcnVtYnMoW1xyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6IFwiUGxhbm9ncmFtXCIsXHJcbiAgICAgICAgcGF0aDogXCIvbWFuYWdlL3BsYW5vZ3JhbS9tYW5hZ2UtcGxhbm9ncmFtc1wiLFxyXG4gICAgICAgIGlzQWN0aXZlOiBmYWxzZSxcclxuICAgICAgICBpc1NlcGFyYXRvcjogZmFsc2UsXHJcbiAgICAgIH0sXHJcbiAgICAgIHsgdGl0bGU6IFwiXCIsIHBhdGg6IFwiXCIsIGlzQWN0aXZlOiBmYWxzZSwgaXNTZXBhcmF0b3I6IHRydWUgfSxcclxuICAgIF0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgbG9hZEJyYW5kRGF0YSgpIHtcclxuICAgIGF3YWl0IHRoaXMuZGF0YVNlcnZpY2UuZmV0Y2hCcmFuZHNMaXN0KHRoaXMuY2xpZW50SWQpO1xyXG4gICAgdGhpcy5kYXRhU2VydmljZS5icmFuZHNMaXN0LnN1YnNjcmliZSgoZSkgPT4ge1xyXG4gICAgICB0aGlzLmJyYW5kc0xpc3QgPSBlO1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgaWYgKHRoaXMuYnJhbmRzTGlzdC5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLmxvYWREYXRhKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5hZGRCcmFuZCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGxvYWRUYXNrRGF0YSgpIHtcclxuICAgIHRoaXMuYnVpbGRlclNlcnZpY2UuZ2V0VGFza0NvbmZpZyh0aGlzLmNsaWVudElkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgdGhpcy5pc0VkaXQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudGFza0Zvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICAgIGR1ZURheTogW3Jlcy5kYXRhLmR1ZURheSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICBkdWVUaW1lOiBbcmVzLmRhdGEuZHVlVGltZSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICBhbGxvd2VkU3RvcmVMb2NhdGlvbjogW1xyXG4gICAgICAgICAgICByZXMuZGF0YS5hbGxvd2VkU3RvcmVMb2NhdGlvbixcclxuICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy50YXNrRm9ybS5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBsb2FkRGF0YSgpIHtcclxuICAgIHRoaXMuaXNFZGl0ID0gdHJ1ZTtcclxuICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBicmFuZENvbmZpZzogdGhpcy5mYi5hcnJheShbXSksXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmJyYW5kc0xpc3QuZm9yRWFjaCgoZTogYW55LCBpOiBudW1iZXIpID0+IHtcclxuICAgICAgY29uc3QgYnJhbmRHcm91cCA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgIGJyYW5kOiBbXHJcbiAgICAgICAgICB7IHZhbHVlOiBlLmJyYW5kTmFtZSwgZGlzYWJsZWQ6IGUuaXNVc2VkIH0sXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgIF0sXHJcbiAgICAgICAgY2F0ZWdvcnk6IHRoaXMuZmIuYXJyYXkoZT8uY2F0ZWdvcnkpLFxyXG4gICAgICAgIHN1YkNhdGVnb3J5OiB0aGlzLmZiLmFycmF5KGU/LnN1YkNhdGVnb3J5KSxcclxuICAgICAgICBpc1VzZWQ6IFtlPy5pc1VzZWRdLFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuYnJhbmRDb25maWcucHVzaChicmFuZEdyb3VwKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5mb3JtLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gIH1cclxuXHJcbiAgaW5pdEZvcm0oKSB7XHJcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgYnJhbmRDb25maWc6IHRoaXMuZmIuYXJyYXkoW10pLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy50YXNrRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBkdWVEYXk6IFsxLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgZHVlVGltZTogW1wiMjM6NTlcIiwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgIGFsbG93ZWRTdG9yZUxvY2F0aW9uOiBbZmFsc2UsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5icmFuZE1ldGFGb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIGJyYW5kTWV0YURhdGE6IHRoaXMuZmIuYXJyYXkoW10pLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXQgYnJhbmRDb25maWcoKTogRm9ybUFycmF5IHtcclxuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KFwiYnJhbmRDb25maWdcIikgYXMgRm9ybUFycmF5O1xyXG4gIH1cclxuXHJcbiAgYWRkQnJhbmQoKSB7XHJcbiAgICB0aGlzLmJyYW5kQ29uZmlnLnB1c2goXHJcbiAgICAgIHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgIGJyYW5kOiBbXCJcIiwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgY2F0ZWdvcnk6IHRoaXMuZmIuYXJyYXkoW10pLFxyXG4gICAgICAgIHN1YkNhdGVnb3J5OiB0aGlzLmZiLmFycmF5KFtdKSxcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgYnJhbmRFbGVtZW50ID0gdGhpcy5mb3JtUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgICAgICBgI3RleHQke3RoaXMuYnJhbmRDb25maWcubGVuZ3RoIC0gMX1gXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBpZiAoYnJhbmRFbGVtZW50KSB7XHJcbiAgICAgICAgYnJhbmRFbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmxvY2s6IFwiY2VudGVyXCIsIGJlaGF2aW9yOiBcInNtb290aFwiIH0pO1xyXG4gICAgICB9XHJcbiAgICB9LCAxMDApO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlQnJhbmQoaW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5icmFuZENvbmZpZy5yZW1vdmVBdChpbmRleCk7XHJcbiAgfVxyXG5cclxuICBnZXRDYXRlZ29yeShjYXRJbmRleDogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gKHRoaXMuYnJhbmRDb25maWcuYXQoY2F0SW5kZXgpIGFzIEZvcm1Hcm91cCkuZ2V0KFxyXG4gICAgICBcImNhdGVnb3J5XCJcclxuICAgICkgYXMgRm9ybUFycmF5O1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlQ2F0ZWdvcnkoaW5kZXg6IG51bWJlciwgY2F0SW5kZXg6IG51bWJlcikge1xyXG4gICAgY29uc3QgY2F0ZWdvcnlBcnJheSA9ICh0aGlzLmJyYW5kQ29uZmlnLmF0KGluZGV4KSBhcyBGb3JtR3JvdXApLmdldChcclxuICAgICAgXCJjYXRlZ29yeVwiXHJcbiAgICApIGFzIEZvcm1BcnJheTtcclxuICAgIGNhdGVnb3J5QXJyYXkucmVtb3ZlQXQoY2F0SW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgYWRkQ2F0ZWdvcnkoZXZlbnQ6IGFueSwgaW5kZXg6IG51bWJlcikge1xyXG4gICAgY29uc3QgdmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU/LnRyaW0oKTtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICBjb25zdCBjYXRlZ29yeUFycmF5ID0gKHRoaXMuYnJhbmRDb25maWcuYXQoaW5kZXgpIGFzIEZvcm1Hcm91cCkuZ2V0KFxyXG4gICAgICAgIFwiY2F0ZWdvcnlcIlxyXG4gICAgICApIGFzIEZvcm1BcnJheTtcclxuICAgICAgY2F0ZWdvcnlBcnJheS5wdXNoKG5ldyBGb3JtQ29udHJvbCh2YWx1ZSkpO1xyXG5cclxuICAgICAgY29uc3QgaW5wdXRWYWx1ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxyXG4gICAgICAgIGBjYXRlZ29yeUlucHV0JHtpbmRleH1gXHJcbiAgICAgICkgYXMgSFRNTElucHV0RWxlbWVudCB8IG51bGw7XHJcbiAgICAgIGlmIChpbnB1dFZhbHVlKSB7XHJcbiAgICAgICAgaW5wdXRWYWx1ZS52YWx1ZSA9IFwiXCI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFN1YkNhdGVnb3J5KGNhdEluZGV4OiBudW1iZXIpIHtcclxuICAgIHJldHVybiAodGhpcy5icmFuZENvbmZpZy5hdChjYXRJbmRleCkgYXMgRm9ybUdyb3VwKS5nZXQoXHJcbiAgICAgIFwic3ViQ2F0ZWdvcnlcIlxyXG4gICAgKSBhcyBGb3JtQXJyYXk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVTdWJDYXRlZ29yeShpbmRleDogbnVtYmVyLCBjYXRJbmRleDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBjYXRlZ29yeUFycmF5ID0gKHRoaXMuYnJhbmRDb25maWcuYXQoaW5kZXgpIGFzIEZvcm1Hcm91cCkuZ2V0KFxyXG4gICAgICBcInN1YkNhdGVnb3J5XCJcclxuICAgICkgYXMgRm9ybUFycmF5O1xyXG4gICAgY2F0ZWdvcnlBcnJheS5yZW1vdmVBdChjYXRJbmRleCk7XHJcbiAgfVxyXG5cclxuICBhZGRTdWJDYXRlZ29yeShldmVudDogYW55LCBpbmRleDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZT8udHJpbSgpO1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIGNvbnN0IGNhdGVnb3J5QXJyYXkgPSAodGhpcy5icmFuZENvbmZpZy5hdChpbmRleCkgYXMgRm9ybUdyb3VwKS5nZXQoXHJcbiAgICAgICAgXCJzdWJDYXRlZ29yeVwiXHJcbiAgICAgICkgYXMgRm9ybUFycmF5O1xyXG4gICAgICBjYXRlZ29yeUFycmF5LnB1c2gobmV3IEZvcm1Db250cm9sKHZhbHVlKSk7XHJcblxyXG4gICAgICBjb25zdCBpbnB1dFZhbHVlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXHJcbiAgICAgICAgYHN1YkNhdGVnb3J5SW5wdXQke2luZGV4fWBcclxuICAgICAgKSBhcyBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbDtcclxuICAgICAgaWYgKGlucHV0VmFsdWUpIHtcclxuICAgICAgICBpbnB1dFZhbHVlLnZhbHVlID0gXCJcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tVc2VkKGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmJyYW5kQ29uZmlnLmF0KGluZGV4KS5nZXQoXCJpc1VzZWRcIik/LnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgdXBkYXRlQnJhbmQoKSB7XHJcbiAgICBsZXQgYnJhbmREYXRhID0gdGhpcy5icmFuZENvbmZpZy52YWx1ZTtcclxuICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkge1xyXG4gICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoXCJSZXF1aXJlZCBmaWVsZCBpcyBtaXNzaW5nXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgZHVwbGljYXRlczogYW55ID0gW107XHJcbiAgICBsZXQgZXJyb3I6IGFueSA9IFtdO1xyXG4gICAgbGV0IGJyYW5kOiBhbnkgPSBicmFuZERhdGEuZmxhdE1hcCgoZWxlOiBhbnkpID0+IGVsZS5icmFuZCk7XHJcbiAgICBkdXBsaWNhdGVzID0gW1xyXG4gICAgICAuLi5uZXcgU2V0KFxyXG4gICAgICAgIGJyYW5kLmZpbHRlcigoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiBicmFuZC5pbmRleE9mKGl0ZW0pICE9PSBpbmRleClcclxuICAgICAgKSxcclxuICAgIF07XHJcbiAgICBpZiAoZHVwbGljYXRlcy5sZW5ndGgpIHtcclxuICAgICAgZXJyb3IucHVzaChgJHtkdXBsaWNhdGVzLnRvU3RyaW5nKCl9IC0gYnJhbmQgaXMgZHVwbGljYXRlZGApO1xyXG4gICAgfVxyXG4gICAgbGV0IGNhdGVnb3J5OiBhbnkgPSBicmFuZERhdGEuZmxhdE1hcCgoZWxlOiBhbnkpID0+IGVsZS5jYXRlZ29yeSk7XHJcbiAgICBsZXQgZHVwbGljYXRlQ2F0ID0gW1xyXG4gICAgICAuLi5uZXcgU2V0KFxyXG4gICAgICAgIGNhdGVnb3J5LmZpbHRlcihcclxuICAgICAgICAgIChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IGNhdGVnb3J5LmluZGV4T2YoaXRlbSkgIT09IGluZGV4XHJcbiAgICAgICAgKVxyXG4gICAgICApLFxyXG4gICAgXTtcclxuICAgIGlmIChkdXBsaWNhdGVDYXQubGVuZ3RoKSB7XHJcbiAgICAgIGVycm9yLnB1c2goXHJcbiAgICAgICAgYCR7QXJyYXkuZnJvbShkdXBsaWNhdGVDYXQpLnRvU3RyaW5nKCl9IC0gYnJhbmQgY2F0ZWdvcnkgaXMgZHVwbGljYXRlZGBcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmIChlcnJvci5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChgJHtlcnJvci50b1N0cmluZygpfSBgKTtcclxuICAgIH1cclxuICAgIGxldCBkYXRhID0ge1xyXG4gICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcclxuICAgICAgYnJhbmREYXRhOiBicmFuZERhdGEsXHJcbiAgICAgIGJyYW5kVXNlZExpc3Q6IHRoaXMuYnJhbmRzTGlzdFxyXG4gICAgICAgIC5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGUuaXNVc2VkKVxyXG4gICAgICAgIC5tYXAoKGVsZTogYW55KSA9PiBlbGUuX2lkKSxcclxuICAgIH07XHJcbiAgICB0aGlzLmJ1aWxkZXJTZXJ2aWNlLmFkZFVwZGF0ZUJyYW5kKGRhdGEpLnN1YnNjcmliZShcclxuICAgICAgYXN5bmMgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMudG9hc3QuZ2V0U3VjY2Vzc1RvYXN0KFwiQnJhbmQgZGV0YWlscyB1cGRhdGVkIHN1Y2Nlc3NmdWxseVwiKTtcclxuICAgICAgICAgIHRoaXMuaXNFZGl0ID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuZm9ybS5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgIGF3YWl0IHRoaXMuZGF0YVNlcnZpY2UuZmV0Y2hCcmFuZHNMaXN0KHRoaXMuY2xpZW50SWQsIHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoXCJTb21ldGhpbmcgd2VudCB3cm9uZy4uXCIpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlVGFzaygpIHtcclxuICAgIGxldCBkYXRhID0ge1xyXG4gICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcclxuICAgICAgLi4udGhpcy50YXNrRm9ybS52YWx1ZSxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5idWlsZGVyU2VydmljZS51cGRhdGVUYXNrKGRhdGEpLnN1YnNjcmliZShcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMuaXNFZGl0ID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMudGFza0Zvcm0uZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0LmdldFN1Y2Nlc3NUb2FzdChcIlRhc2sgZGV0YWlscyB1cGRhdGVkIHN1Y2Nlc3NmdWxseVwiKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KFwiU29tZXRoaW5nIHdlbnQgd3JvbmcuLlwiKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGJ1bGtVcGxvYWQoKSB7XHJcbiAgICBjb25zdCBtb2RlbFJlZiA9IHRoaXMubW9kZWxTZXJ2aWNlLm9wZW4oUG9wdXBzQ29tcG9uZW50LCB7XHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICBtb2RlbFJlZi5jb21wb25lbnRJbnN0YW5jZS5jbGllbnRJZCA9IHRoaXMuY2xpZW50SWQ7XHJcbiAgICBtb2RlbFJlZi5jb21wb25lbnRJbnN0YW5jZS50b3RhbEl0ZW1Db3VudCA9IHRoaXMuYnJhbmRzTGlzdC5sZW5ndGg7XHJcbiAgICBtb2RlbFJlZi5jb21wb25lbnRJbnN0YW5jZS50b3RhbEl0ZW1Db3VudCA9IHRoaXMuYnJhbmRzTGlzdC5sZW5ndGg7XHJcbiAgICBtb2RlbFJlZi5jb21wb25lbnRJbnN0YW5jZS5icmFuZExpc3QgPSB0aGlzLmJyYW5kc0xpc3Q7XHJcblxyXG4gICAgbW9kZWxSZWYucmVzdWx0LnRoZW4oYXN5bmMgKHJlcykgPT4ge1xyXG4gICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5kYXRhU2VydmljZS5mZXRjaEJyYW5kc0xpc3QodGhpcy5jbGllbnRJZCwgdHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZm9ybUVuYWJsZSgpIHtcclxuICAgIGxldCBicmFuZEluZm8gPSB0aGlzLmZvcm0uZ2V0KFwiYnJhbmRDb25maWdcIikgYXMgRm9ybUFycmF5O1xyXG5cclxuICAgIGJyYW5kSW5mby5jb250cm9scy5mb3JFYWNoKChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcclxuICAgICAgaWYgKCFjb250cm9sLmdldChcImlzVXNlZFwiKT8udmFsdWUpIHtcclxuICAgICAgICBjb250cm9sLmdldChcImJyYW5kXCIpPy5lbmFibGUoKTtcclxuICAgICAgICBjb250cm9sLmdldChcImNhdGVnb3J5XCIpPy5lbmFibGUoKTtcclxuICAgICAgICBjb250cm9sLmdldChcInN1YkNhdGVnb3J5XCIpPy5lbmFibGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXQgYnJhbmRNZXRhRGF0YSgpOiBGb3JtQXJyYXkge1xyXG4gICAgcmV0dXJuIHRoaXMuYnJhbmRNZXRhRm9ybS5nZXQoXCJicmFuZE1ldGFEYXRhXCIpIGFzIEZvcm1BcnJheTtcclxuICB9XHJcblxyXG4gIGxvYWRCcmFuZE1ldGFEYXRhKCkge1xyXG4gICAgdGhpcy5idWlsZGVyU2VydmljZS5nZXRCcmFuZE1ldGFEYXRhKHRoaXMuY2xpZW50SWQpLnN1YnNjcmliZShcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3Qgcm93cyA9IEFycmF5LmlzQXJyYXkocmVzPy5kYXRhKSA/IHJlcy5kYXRhIDogW107XHJcbiAgICAgICAgdGhpcy5icmFuZE1ldGFMaXN0ID0gcm93cztcclxuICAgICAgICB0aGlzLmJ1aWxkQnJhbmRNZXRhRm9ybShyb3dzKTtcclxuICAgICAgfSxcclxuICAgICAgKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYnJhbmRNZXRhTGlzdCA9IFtdO1xyXG4gICAgICAgIHRoaXMuYnVpbGRCcmFuZE1ldGFGb3JtKFtdKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGJ1aWxkQnJhbmRNZXRhRm9ybShyb3dzOiBhbnlbXSkge1xyXG4gICAgdGhpcy5icmFuZE1ldGFGb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIGJyYW5kTWV0YURhdGE6IHRoaXMuZmIuYXJyYXkoXHJcbiAgICAgICAgcm93cy5tYXAoKHJvdykgPT5cclxuICAgICAgICAgIHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgICAgICBwaWRDYXQ6IFtyb3c/LnBpZENhdCA/PyBcIlwiLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgdGVtcEdyb3VwOiBbcm93Py50ZW1wR3JvdXAgPz8gXCJcIiwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgIGNhdGVnb3J5OiBbcm93Py5jYXRlZ29yeSA/PyBcIlwiLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgYnJhbmQ6IFtyb3c/LmJyYW5kID8/IFwiXCIsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgICBiYW5kOiBbcm93Py5iYW5kID8/IFwiXCJdLFxyXG4gICAgICAgICAgfSlcclxuICAgICAgICApXHJcbiAgICAgICksXHJcbiAgICB9KTtcclxuICAgIHRoaXMuaXNCcmFuZE1ldGFFZGl0ID0gdHJ1ZTtcclxuICAgIHRoaXMuYnJhbmRNZXRhRm9ybS5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICB9XHJcblxyXG4gIGFkZEJyYW5kTWV0YVJvdygpIHtcclxuICAgIHRoaXMuYnJhbmRNZXRhRGF0YS5wdXNoKFxyXG4gICAgICB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICBwaWRDYXQ6IFtcIlwiLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICB0ZW1wR3JvdXA6IFtcIlwiLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICBjYXRlZ29yeTogW1wiXCIsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgIGJyYW5kOiBbXCJcIiwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgYmFuZDogW1wiXCJdLFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBsYXN0Um93ID0gdGhpcy5icmFuZE1ldGFSZWY/Lm5hdGl2ZUVsZW1lbnQ/LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgICAgYCNtZXRhUm93JHt0aGlzLmJyYW5kTWV0YURhdGEubGVuZ3RoIC0gMX1gXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChsYXN0Um93KSB7XHJcbiAgICAgICAgbGFzdFJvdy5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiBcImNlbnRlclwiLCBiZWhhdmlvcjogXCJzbW9vdGhcIiB9KTtcclxuICAgICAgfVxyXG4gICAgfSwgMTAwKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUJyYW5kTWV0YVJvdyhpbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmJyYW5kTWV0YURhdGEucmVtb3ZlQXQoaW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgZW5hYmxlQnJhbmRNZXRhRm9ybSgpIHtcclxuICAgIHRoaXMuaXNCcmFuZE1ldGFFZGl0ID0gZmFsc2U7XHJcbiAgICB0aGlzLmJyYW5kTWV0YUZvcm0uZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICB9XHJcblxyXG4gIGNhbmNlbEJyYW5kTWV0YUVkaXQoKSB7XHJcbiAgICB0aGlzLmJ1aWxkQnJhbmRNZXRhRm9ybSh0aGlzLmJyYW5kTWV0YUxpc3QpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlQnJhbmRNZXRhRGF0YSgpIHtcclxuICAgIGlmICh0aGlzLmJyYW5kTWV0YUZvcm0uaW52YWxpZCkge1xyXG4gICAgICB0aGlzLmJyYW5kTWV0YUZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgICB0aGlzLmZvY3VzRmlyc3RJbnZhbGlkQnJhbmRNZXRhRmllbGQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgcm93cyA9IHRoaXMuYnJhbmRNZXRhRGF0YS52YWx1ZTtcclxuICAgIGNvbnN0IHNlZW4gPSBuZXcgU2V0PHN0cmluZz4oKTtcclxuICAgIGNvbnN0IGR1cGVzOiB7IHJvdzogbnVtYmVyOyBjb21ibzogc3RyaW5nIH1bXSA9IFtdO1xyXG4gICAgcm93cy5mb3JFYWNoKChyOiBhbnksIGk6IG51bWJlcikgPT4ge1xyXG4gICAgICBjb25zdCBrZXkgPSBgJHsoci5waWRDYXQgfHwgXCJcIikudHJpbSgpLnRvTG93ZXJDYXNlKCl9fCR7KHIudGVtcEdyb3VwIHx8IFwiXCIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpfWA7XHJcbiAgICAgIGlmIChzZWVuLmhhcyhrZXkpKSB7XHJcbiAgICAgICAgZHVwZXMucHVzaCh7IHJvdzogaSwgY29tYm86IGAke3IucGlkQ2F0fSAvICR7ci50ZW1wR3JvdXB9YCB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzZWVuLmFkZChrZXkpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmIChkdXBlcy5sZW5ndGgpIHtcclxuICAgICAgY29uc3QgZmlyc3QgPSBkdXBlc1swXTtcclxuICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KFxyXG4gICAgICAgIGBSb3cgJHtmaXJzdC5yb3cgKyAxfTogZHVwbGljYXRlIFBpZCBDYXQgKyBUZW1wIEdyb3VwIFwiJHtmaXJzdC5jb21ib31cImBcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5zY3JvbGxBbmRGbGFzaEJyYW5kTWV0YUZpZWxkKGZpcnN0LnJvdywgXCJwaWRDYXRcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICAgIGNsaWVudElkOiB0aGlzLmNsaWVudElkLFxyXG4gICAgICBicmFuZE1ldGFEYXRhOiByb3dzLFxyXG4gICAgfTtcclxuICAgIHRoaXMuYnVpbGRlclNlcnZpY2UudXBkYXRlQnJhbmRNZXRhRGF0YShwYXlsb2FkKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0LmdldFN1Y2Nlc3NUb2FzdChcIkJyYW5kIE1ldGEgRGF0YSB1cGRhdGVkIHN1Y2Nlc3NmdWxseVwiKTtcclxuICAgICAgICAgIHRoaXMuYnJhbmRNZXRhTGlzdCA9IHJvd3M7XHJcbiAgICAgICAgICB0aGlzLmlzQnJhbmRNZXRhRWRpdCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmJyYW5kTWV0YUZvcm0uZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KFwiU29tZXRoaW5nIHdlbnQgd3JvbmcuLlwiKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgQlJBTkRfTUVUQV9GSUVMRF9MQUJFTFM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XHJcbiAgICBwaWRDYXQ6IFwiUGlkIENhdFwiLFxyXG4gICAgdGVtcEdyb3VwOiBcIlRlbXAgR3JvdXBcIixcclxuICAgIGNhdGVnb3J5OiBcIkNhdGVnb3J5XCIsXHJcbiAgICBicmFuZDogXCJCcmFuZFwiLFxyXG4gICAgYmFuZDogXCJCYW5kXCIsXHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBmb2N1c0ZpcnN0SW52YWxpZEJyYW5kTWV0YUZpZWxkKCkge1xyXG4gICAgY29uc3QgY29udHJvbHMgPSB0aGlzLmJyYW5kTWV0YURhdGEuY29udHJvbHM7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbnRyb2xzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGdyb3VwID0gY29udHJvbHNbaV0gYXMgRm9ybUdyb3VwO1xyXG4gICAgICBmb3IgKGNvbnN0IGZpZWxkS2V5IG9mIE9iamVjdC5rZXlzKHRoaXMuQlJBTkRfTUVUQV9GSUVMRF9MQUJFTFMpKSB7XHJcbiAgICAgICAgY29uc3QgY3RybCA9IGdyb3VwLmdldChmaWVsZEtleSk7XHJcbiAgICAgICAgaWYgKGN0cmwgJiYgY3RybC5pbnZhbGlkKSB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoXHJcbiAgICAgICAgICAgIGBSb3cgJHtpICsgMX06ICR7dGhpcy5CUkFORF9NRVRBX0ZJRUxEX0xBQkVMU1tmaWVsZEtleV19IGlzIHJlcXVpcmVkYFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMuc2Nyb2xsQW5kRmxhc2hCcmFuZE1ldGFGaWVsZChpLCBmaWVsZEtleSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoXCJSZXF1aXJlZCBmaWVsZCBpcyBtaXNzaW5nXCIpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzY3JvbGxBbmRGbGFzaEJyYW5kTWV0YUZpZWxkKHJvd0luZGV4OiBudW1iZXIsIGZpZWxkS2V5OiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLmJyYW5kTWV0YVNlYXJjaD8udHJpbSgpKSB7XHJcbiAgICAgIHRoaXMuYnJhbmRNZXRhU2VhcmNoID0gXCJcIjtcclxuICAgIH1cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxyXG4gICAgICAgIGBtZXRhUm93JHtyb3dJbmRleH0tJHtmaWVsZEtleX1gXHJcbiAgICAgICkgYXMgSFRNTElucHV0RWxlbWVudCB8IG51bGw7XHJcbiAgICAgIGlmICghZWwpIHJldHVybjtcclxuICAgICAgZWwuc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogXCJjZW50ZXJcIiwgYmVoYXZpb3I6IFwic21vb3RoXCIgfSk7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgZWwuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xyXG4gICAgICB9IGNhdGNoIHtcclxuICAgICAgICBlbC5mb2N1cygpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsLmNsYXNzTGlzdC5yZW1vdmUoXCJkYW5nZXItZmxhc2hcIik7XHJcbiAgICAgIHZvaWQgZWwub2Zmc2V0V2lkdGg7XHJcbiAgICAgIGVsLmNsYXNzTGlzdC5hZGQoXCJkYW5nZXItZmxhc2hcIik7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gZWwuY2xhc3NMaXN0LnJlbW92ZShcImRhbmdlci1mbGFzaFwiKSwgMTUwMCk7XHJcbiAgICB9LCA1MCk7XHJcbiAgfVxyXG5cclxuICBtYXRjaGVzQnJhbmRNZXRhU2VhcmNoKGdyb3VwOiBBYnN0cmFjdENvbnRyb2wpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHEgPSB0aGlzLmJyYW5kTWV0YVNlYXJjaD8udHJpbSgpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICBpZiAoIXEpIHJldHVybiB0cnVlO1xyXG4gICAgY29uc3QgZmllbGRzID0gW1wicGlkQ2F0XCIsIFwidGVtcEdyb3VwXCIsIFwiY2F0ZWdvcnlcIiwgXCJicmFuZFwiLCBcImJhbmRcIl07XHJcbiAgICByZXR1cm4gZmllbGRzLnNvbWUoKGtleSkgPT4ge1xyXG4gICAgICBjb25zdCB2YWwgPSBncm91cC5nZXQoa2V5KT8udmFsdWU7XHJcbiAgICAgIHJldHVybiAodmFsID8/IFwiXCIpLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGZpbHRlcmVkQnJhbmRNZXRhQ291bnQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmJyYW5kTWV0YURhdGEuY29udHJvbHMuZmlsdGVyKChjKSA9PlxyXG4gICAgICB0aGlzLm1hdGNoZXNCcmFuZE1ldGFTZWFyY2goYylcclxuICAgICkubGVuZ3RoO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgcGxhbm9Db25maWdcIj5cclxuICAgICAgICA8IS0tIEhpZGRlbiBwbGFuby10b29scyBlbnRyeS4gU2l6ZWQgMTIww5c0MCBweCwgdHJhbnNwYXJlbnQg4oCUIGludmlzaWJsZVxyXG4gICAgICAgICAgICAgdG8gcmVndWxhciB1c2VycyBidXQgcmVhY2hhYmxlIGJ5IG9wcy9kZXZzIHdobyBrbm93IHRoZSBzcG90LlxyXG4gICAgICAgICAgICAgUGxhY2VkIGF0IHRoZSBib3R0b20tbGVmdCwgYmVsb3cgdGhlIGNvbmZpZyBzaWRlIGNhcmQuIC0tPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJPcGVuIHBsYW5vIHRvb2xzXCJcclxuICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwicGxhbm8tdG9vbHMtaGlkZGVuLWVudHJ5XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9QbGFub1Rvb2xzKClcIj48L2J1dHRvbj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicy1jYXJkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggY3Vyc29yLXBvaW50ZXIgcC0zIG1iLTNcIiBbbmdDbGFzc109XCJzZWxlY3RlZFRhYiA9PT0gJ2JyYW5kJyA/ICdhY3RpdmUnIDogJydcIiAoY2xpY2spPVwic2VsZWN0ZWRUYWIgPSdicmFuZCc7aXNFZGl0PXRydWU7aXNCcmFuZE1ldGFFZGl0PXRydWU7Zm9ybS5kaXNhYmxlKCk7dGFza0Zvcm0uZGlzYWJsZSgpO2JyYW5kTWV0YUZvcm0uZGlzYWJsZSgpXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE0LjE3NTUgNC4yMjIyNUMxNC4xNzY2IDIuOTk0NDUgMTEuNjczMSAyIDguNTg4MzIgMkM1LjUwMzU3IDIgMy4wMDIyNCAyLjk5NTU3IDMgNC4yMjIyNU0zIDQuMjIyMjVDMyA1LjQ1MDA0IDUuNTAxMzMgNi40NDQ0OSA4LjU4ODMyIDYuNDQ0NDlDMTEuNjc1MyA2LjQ0NDQ5IDE0LjE3NjYgNS40NTAwNCAxNC4xNzY2IDQuMjIyMjVMMTQuMTc2NiAxMi44NDQ1TTMgNC4yMjIyNVYxNy41NTU2QzMuMDAxMTIgMTguNzgzNCA1LjUwMjQ1IDE5Ljc3NzkgOC41ODgzMiAxOS43Nzc5QzEwLjA4NDkgMTkuNzc3OSAxMS40MzYxIDE5LjU0MTIgMTIuNDM4NyAxOS4xNjAxTTMuMDAxMTIgOC42NjY3MkMzLjAwMTEyIDkuODk0NTEgNS41MDI0NSAxMC44ODkgOC41ODk0NCAxMC44ODlDMTEuNjc2NCAxMC44ODkgMTQuMTc3OCA5Ljg5NDUxIDE0LjE3NzggOC42NjY3Mk0xMi41MDU3IDE0LjY5NDZDMTEuNDk3NiAxNS4wODkxIDEwLjExNSAxNS4zMzM1IDguNTg4MzIgMTUuMzMzNUM1LjUwMjQ1IDE1LjMzMzUgMy4wMDExMiAxNC4zMzkxIDMuMDAxMTIgMTMuMTExM00yMC41MjcyIDEzLjQ2NDZDMjIuNDkwOSAxNS40MTY5IDIyLjQ5MDkgMTguNTgzNiAyMC41MjcyIDIwLjUzNThDMTguNTYzNSAyMi40ODgxIDE1LjM3ODEgMjIuNDg4MSAxMy40MTQ0IDIwLjUzNThDMTEuNDUwNyAxOC41ODM2IDExLjQ1MDcgMTUuNDE2OSAxMy40MTQ0IDEzLjQ2NDZDMTUuMzc4MSAxMS41MTI0IDE4LjU2MzUgMTEuNTEyNCAyMC41MjcyIDEzLjQ2NDZaXCIgW2F0dHIuc3Ryb2tlXT1cInNlbGVjdGVkVGFiID09PSAnYnJhbmQnID8gJyMwMEEzRkYnIDogJyMzNDQwNTQnXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25maWdUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgQnJhbmQgYW5kIFByb2R1Y3QgTWFwcGluZ1xyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGN1cnNvci1wb2ludGVyIHAtMyBtYi0zXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRUYWIgPT09ICd0YXNrJyA/ICdhY3RpdmUnIDogJydcIiAoY2xpY2spPVwic2VsZWN0ZWRUYWIgPSd0YXNrJztpc0VkaXQ9dHJ1ZTtpc0JyYW5kTWV0YUVkaXQ9dHJ1ZTtmb3JtLmRpc2FibGUoKTt0YXNrRm9ybS5kaXNhYmxlKCk7YnJhbmRNZXRhRm9ybS5kaXNhYmxlKClcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMTc3NV8zNzkzMSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMiAxNUMxMy42NTY5IDE1IDE1IDEzLjY1NjkgMTUgMTJDMTUgMTAuMzQzMSAxMy42NTY5IDkgMTIgOUMxMC4zNDMxIDkgOSAxMC4zNDMxIDkgMTJDOSAxMy42NTY5IDEwLjM0MzEgMTUgMTIgMTVaXCIgW2F0dHIuc3Ryb2tlXT1cInNlbGVjdGVkVGFiID09PSAndGFzaycgPyAnIzAwQTNGRicgOiAnIzM0NDA1NCdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE5LjQgMTVDMTkuMjY2OSAxNS4zMDE2IDE5LjIyNzIgMTUuNjM2MiAxOS4yODYgMTUuOTYwNkMxOS4zNDQ4IDE2LjI4NSAxOS40OTk1IDE2LjU4NDMgMTkuNzMgMTYuODJMMTkuNzkgMTYuODhDMTkuOTc2IDE3LjA2NTcgMjAuMTIzNSAxNy4yODYzIDIwLjIyNDEgMTcuNTI5MUMyMC4zMjQ4IDE3Ljc3MTkgMjAuMzc2NiAxOC4wMzIyIDIwLjM3NjYgMTguMjk1QzIwLjM3NjYgMTguNTU3OCAyMC4zMjQ4IDE4LjgxODEgMjAuMjI0MSAxOS4wNjA5QzIwLjEyMzUgMTkuMzAzNyAxOS45NzYgMTkuNTI0MyAxOS43OSAxOS43MUMxOS42MDQzIDE5Ljg5NiAxOS4zODM3IDIwLjA0MzUgMTkuMTQwOSAyMC4xNDQxQzE4Ljg5ODEgMjAuMjQ0OCAxOC42Mzc4IDIwLjI5NjYgMTguMzc1IDIwLjI5NjZDMTguMTEyMiAyMC4yOTY2IDE3Ljg1MTkgMjAuMjQ0OCAxNy42MDkxIDIwLjE0NDFDMTcuMzY2MyAyMC4wNDM1IDE3LjE0NTcgMTkuODk2IDE2Ljk2IDE5LjcxTDE2LjkgMTkuNjVDMTYuNjY0MyAxOS40MTk1IDE2LjM2NSAxOS4yNjQ4IDE2LjA0MDYgMTkuMjA2QzE1LjcxNjIgMTkuMTQ3MiAxNS4zODE2IDE5LjE4NjkgMTUuMDggMTkuMzJDMTQuNzg0MiAxOS40NDY4IDE0LjUzMiAxOS42NTcyIDE0LjM1NDMgMTkuOTI1NUMxNC4xNzY2IDIwLjE5MzggMTQuMDgxMyAyMC41MDgyIDE0LjA4IDIwLjgzVjIxQzE0LjA4IDIxLjUzMDQgMTMuODY5MyAyMi4wMzkxIDEzLjQ5NDIgMjIuNDE0MkMxMy4xMTkxIDIyLjc4OTMgMTIuNjEwNCAyMyAxMi4wOCAyM0MxMS41NDk2IDIzIDExLjA0MDkgMjIuNzg5MyAxMC42NjU4IDIyLjQxNDJDMTAuMjkwNyAyMi4wMzkxIDEwLjA4IDIxLjUzMDQgMTAuMDggMjFWMjAuOTFDMTAuMDcyMyAyMC41NzkgOS45NjUxMiAyMC4yNTggOS43NzI1MSAxOS45ODg3QzkuNTc5OSAxOS43MTk0IDkuMzEwNzQgMTkuNTE0MyA5IDE5LjRDOC42OTgzOCAxOS4yNjY5IDguMzYzODEgMTkuMjI3MiA4LjAzOTQxIDE5LjI4NkM3LjcxNTAyIDE5LjM0NDggNy40MTU2OCAxOS40OTk1IDcuMTggMTkuNzNMNy4xMiAxOS43OUM2LjkzNDI1IDE5Ljk3NiA2LjcxMzY4IDIwLjEyMzUgNi40NzA4OCAyMC4yMjQxQzYuMjI4MDggMjAuMzI0OCA1Ljk2NzgzIDIwLjM3NjYgNS43MDUgMjAuMzc2NkM1LjQ0MjE3IDIwLjM3NjYgNS4xODE5MiAyMC4zMjQ4IDQuOTM5MTIgMjAuMjI0MUM0LjY5NjMyIDIwLjEyMzUgNC40NzU3NSAxOS45NzYgNC4yOSAxOS43OUM0LjEwNDA1IDE5LjYwNDMgMy45NTY1MyAxOS4zODM3IDMuODU1ODggMTkuMTQwOUMzLjc1NTIzIDE4Ljg5ODEgMy43MDM0MyAxOC42Mzc4IDMuNzAzNDMgMTguMzc1QzMuNzAzNDMgMTguMTEyMiAzLjc1NTIzIDE3Ljg1MTkgMy44NTU4OCAxNy42MDkxQzMuOTU2NTMgMTcuMzY2MyA0LjEwNDA1IDE3LjE0NTcgNC4yOSAxNi45Nkw0LjM1IDE2LjlDNC41ODA1NCAxNi42NjQzIDQuNzM1MTkgMTYuMzY1IDQuNzk0IDE2LjA0MDZDNC44NTI4MiAxNS43MTYyIDQuODEzMTIgMTUuMzgxNiA0LjY4IDE1LjA4QzQuNTUzMjQgMTQuNzg0MiA0LjM0Mjc2IDE0LjUzMiA0LjA3NDQ3IDE0LjM1NDNDMy44MDYxOCAxNC4xNzY2IDMuNDkxNzkgMTQuMDgxMyAzLjE3IDE0LjA4SDNDMi40Njk1NyAxNC4wOCAxLjk2MDg2IDEzLjg2OTMgMS41ODU3OSAxMy40OTQyQzEuMjEwNzEgMTMuMTE5MSAxIDEyLjYxMDQgMSAxMi4wOEMxIDExLjU0OTYgMS4yMTA3MSAxMS4wNDA5IDEuNTg1NzkgMTAuNjY1OEMxLjk2MDg2IDEwLjI5MDcgMi40Njk1NyAxMC4wOCAzIDEwLjA4SDMuMDlDMy40MjA5OSAxMC4wNzIzIDMuNzQyIDkuOTY1MTIgNC4wMTEzIDkuNzcyNTFDNC4yODA1OSA5LjU3OTkgNC40ODU3MiA5LjMxMDc0IDQuNiA5QzQuNzMzMTIgOC42OTgzOCA0Ljc3MjgyIDguMzYzODEgNC43MTQgOC4wMzk0MUM0LjY1NTE5IDcuNzE1MDIgNC41MDA1NCA3LjQxNTY4IDQuMjcgNy4xOEw0LjIxIDcuMTJDNC4wMjQwNSA2LjkzNDI1IDMuODc2NTMgNi43MTM2OCAzLjc3NTg4IDYuNDcwODhDMy42NzUyMyA2LjIyODA4IDMuNjIzNDMgNS45Njc4MyAzLjYyMzQzIDUuNzA1QzMuNjIzNDMgNS40NDIxNyAzLjY3NTIzIDUuMTgxOTIgMy43NzU4OCA0LjkzOTEyQzMuODc2NTMgNC42OTYzMiA0LjAyNDA1IDQuNDc1NzUgNC4yMSA0LjI5QzQuMzk1NzUgNC4xMDQwNSA0LjYxNjMyIDMuOTU2NTMgNC44NTkxMiAzLjg1NTg4QzUuMTAxOTIgMy43NTUyMyA1LjM2MjE3IDMuNzAzNDMgNS42MjUgMy43MDM0M0M1Ljg4NzgzIDMuNzAzNDMgNi4xNDgwOCAzLjc1NTIzIDYuMzkwODggMy44NTU4OEM2LjYzMzY4IDMuOTU2NTMgNi44NTQyNSA0LjEwNDA1IDcuMDQgNC4yOUw3LjEgNC4zNUM3LjMzNTY4IDQuNTgwNTQgNy42MzUwMiA0LjczNTE5IDcuOTU5NDEgNC43OTRDOC4yODM4MSA0Ljg1MjgyIDguNjE4MzggNC44MTMxMiA4LjkyIDQuNjhIOUM5LjI5NTc3IDQuNTUzMjQgOS41NDgwMiA0LjM0Mjc2IDkuNzI1NjkgNC4wNzQ0N0M5LjkwMzM3IDMuODA2MTggOS45OTg3MiAzLjQ5MTc5IDEwIDMuMTdWM0MxMCAyLjQ2OTU3IDEwLjIxMDcgMS45NjA4NiAxMC41ODU4IDEuNTg1NzlDMTAuOTYwOSAxLjIxMDcxIDExLjQ2OTYgMSAxMiAxQzEyLjUzMDQgMSAxMy4wMzkxIDEuMjEwNzEgMTMuNDE0MiAxLjU4NTc5QzEzLjc4OTMgMS45NjA4NiAxNCAyLjQ2OTU3IDE0IDNWMy4wOUMxNC4wMDEzIDMuNDExNzkgMTQuMDk2NiAzLjcyNjE4IDE0LjI3NDMgMy45OTQ0N0MxNC40NTIgNC4yNjI3NiAxNC43MDQyIDQuNDczMjQgMTUgNC42QzE1LjMwMTYgNC43MzMxMiAxNS42MzYyIDQuNzcyODIgMTUuOTYwNiA0LjcxNEMxNi4yODUgNC42NTUxOSAxNi41ODQzIDQuNTAwNTQgMTYuODIgNC4yN0wxNi44OCA0LjIxQzE3LjA2NTcgNC4wMjQwNSAxNy4yODYzIDMuODc2NTMgMTcuNTI5MSAzLjc3NTg4QzE3Ljc3MTkgMy42NzUyMyAxOC4wMzIyIDMuNjIzNDMgMTguMjk1IDMuNjIzNDNDMTguNTU3OCAzLjYyMzQzIDE4LjgxODEgMy42NzUyMyAxOS4wNjA5IDMuNzc1ODhDMTkuMzAzNyAzLjg3NjUzIDE5LjUyNDMgNC4wMjQwNSAxOS43MSA0LjIxQzE5Ljg5NiA0LjM5NTc1IDIwLjA0MzUgNC42MTYzMiAyMC4xNDQxIDQuODU5MTJDMjAuMjQ0OCA1LjEwMTkyIDIwLjI5NjYgNS4zNjIxNyAyMC4yOTY2IDUuNjI1QzIwLjI5NjYgNS44ODc4MyAyMC4yNDQ4IDYuMTQ4MDggMjAuMTQ0MSA2LjM5MDg4QzIwLjA0MzUgNi42MzM2OCAxOS44OTYgNi44NTQyNSAxOS43MSA3LjA0TDE5LjY1IDcuMUMxOS40MTk1IDcuMzM1NjggMTkuMjY0OCA3LjYzNTAyIDE5LjIwNiA3Ljk1OTQxQzE5LjE0NzIgOC4yODM4MSAxOS4xODY5IDguNjE4MzggMTkuMzIgOC45MlY5QzE5LjQ0NjggOS4yOTU3NyAxOS42NTcyIDkuNTQ4MDIgMTkuOTI1NSA5LjcyNTY5QzIwLjE5MzggOS45MDMzNyAyMC41MDgyIDkuOTk4NzIgMjAuODMgMTBIMjFDMjEuNTMwNCAxMCAyMi4wMzkxIDEwLjIxMDcgMjIuNDE0MiAxMC41ODU4QzIyLjc4OTMgMTAuOTYwOSAyMyAxMS40Njk2IDIzIDEyQzIzIDEyLjUzMDQgMjIuNzg5MyAxMy4wMzkxIDIyLjQxNDIgMTMuNDE0MkMyMi4wMzkxIDEzLjc4OTMgMjEuNTMwNCAxNCAyMSAxNEgyMC45MUMyMC41ODgyIDE0LjAwMTMgMjAuMjczOCAxNC4wOTY2IDIwLjAwNTUgMTQuMjc0M0MxOS43MzcyIDE0LjQ1MiAxOS41MjY4IDE0LjcwNDIgMTkuNCAxNVpcIiBbYXR0ci5zdHJva2VdPVwic2VsZWN0ZWRUYWIgPT09ICd0YXNrJyA/ICcjMDBBM0ZGJyA6ICcjMzQ0MDU0J1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzE3NzVfMzc5MzFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIndoaXRlXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlnVGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIFRhc2sgQ29uZmlndXJhdGlvblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGN1cnNvci1wb2ludGVyIHAtMyBtYi0zXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRUYWIgPT09ICdicmFuZE1ldGEnID8gJ2FjdGl2ZScgOiAnJ1wiIChjbGljayk9XCJzZWxlY3RlZFRhYj0nYnJhbmRNZXRhJztpc0VkaXQ9dHJ1ZTtpc0JyYW5kTWV0YUVkaXQ9dHJ1ZTtmb3JtLmRpc2FibGUoKTt0YXNrRm9ybS5kaXNhYmxlKCk7YnJhbmRNZXRhRm9ybS5kaXNhYmxlKClcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMyA3LjVMMTIgM0wyMSA3LjVNMyA3LjVMMTIgMTJNMyA3LjVWMTYuNUwxMiAyMU0yMSA3LjVMMTIgMTJNMjEgNy41VjE2LjVMMTIgMjFNMTIgMTJWMjFcIiBbYXR0ci5zdHJva2VdPVwic2VsZWN0ZWRUYWIgPT09ICdicmFuZE1ldGEnID8gJyMwMEEzRkYnIDogJyMzNDQwNTQnXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbmZpZ1RleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICBCcmFuZCBNZXRhIERhdGFcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC05XCIgaWQ9XCJjb25maWdcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIiAqbmdJZj1cImxvYWRpbmdcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLWNhcmRcIiAqbmdJZj1cIiFsb2FkaW5nXCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZFRhYiA9PT0gJ2JyYW5kJ1wiID5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDM+QnJhbmQgYW5kIHByb2R1Y3QgaW5mb3JtYXRpb248L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cD5EZWZpbmUgdGhlIGJyYW5kIGFuZCBtYXAgcHJvZHVjdHMgdG8gdGhlaXIgcmVzcGVjdGl2ZSBjYXRlZ29yaWVzLjwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lXCIgKGNsaWNrKT1cImJ1bGtVcGxvYWQoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNy41IDEyLjVWMTUuODMzM0MxNy41IDE2LjI3NTQgMTcuMzI0NCAxNi42OTkzIDE3LjAxMTggMTcuMDExOEMxNi42OTkzIDE3LjMyNDQgMTYuMjc1NCAxNy41IDE1LjgzMzMgMTcuNUg0LjE2NjY3QzMuNzI0NjQgMTcuNSAzLjMwMDcyIDE3LjMyNDQgMi45ODgxNiAxNy4wMTE4QzIuNjc1NTkgMTYuNjk5MyAyLjUgMTYuMjc1NCAyLjUgMTUuODMzM1YxMi41TTE0LjE2NjcgNi42NjY2N0wxMCAyLjVNMTAgMi41TDUuODMzMzMgNi42NjY2N00xMCAyLjVWMTIuNVwiIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPiBVcGxvYWQgQnJhbmRzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgY2xhc3M9XCJtdC0xMFwiICNmb3JtUmVmPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZvcm1BcnJheU5hbWU9XCJicmFuZENvbmZpZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBteC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IHAtMCBwcy0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWxhYmVsXCI+QnJhbmQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgcC0wIHBzLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tbGFiZWxcIj5Qcm9kdWN0IENhdGVnb3J5PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IHAtMCBwcy0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWxhYmVsXCI+UHJvZHVjdCBTdWItQ2F0ZWdvcnk8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImhlaWdodDpjYWxjKDc1dmggLSAyNTBweCk7b3ZlcmZsb3cteTpTY3JvbGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBicmFuZEdyb3VwIG9mIGJyYW5kQ29uZmlnPy5jb250cm9sczsgbGV0IGkgPSBpbmRleFwiIFtmb3JtR3JvdXBOYW1lXT1cImlcIiBjbGFzcz1cInJvdyBtdC0zIG14LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IHAtMCBwcy0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwXCIgW2lkXT1cIid0ZXh0JytpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwiYnJhbmRcIiBbbmdDbGFzc109XCJicmFuZHNMaXN0Lmxlbmd0aCAmJiAhaXNFZGl0ICYmICFjaGVja1VzZWQoaSkgJiYgYnJhbmRHcm91cC5nZXQoJ2JyYW5kJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpID8gJ2RhbmdlcicgOiAnJ1wiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtMyBtdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTVcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTUgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNC43MDcxIDguNzA3MTFDMTUuMDk3NiA4LjMxNjU4IDE1LjA5NzYgNy42ODM0MiAxNC43MDcxIDcuMjkyODlMOC4zNDMxNSAwLjkyODkzMkM3Ljk1MjYyIDAuNTM4NDA4IDcuMzE5NDYgMC41Mzg0MDggNi45Mjg5MyAwLjkyODkzMkM2LjUzODQxIDEuMzE5NDYgNi41Mzg0MSAxLjk1MjYyIDYuOTI4OTMgMi4zNDMxNUwxMi41ODU4IDhMNi45Mjg5MyAxMy42NTY5QzYuNTM4NDEgMTQuMDQ3NCA2LjUzODQxIDE0LjY4MDUgNi45Mjg5MyAxNS4wNzExQzcuMzE5NDYgMTUuNDYxNiA3Ljk1MjYyIDE1LjQ2MTYgOC4zNDMxNSAxNS4wNzExTDE0LjcwNzEgOC43MDcxMVpNMCA4VjlIMTRWOFY3SDBWOFpcIiBmaWxsPVwiI0QwRDVERFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgcC0wIHBzLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgY2hpcC1ib3hcIiBmb3JtQXJyYXlOYW1lPVwiY2F0ZWdvcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWNvbnRhaW5lciBmb3JtLWNvbnRyb2xcIiBbbmdDbGFzc109XCJicmFuZHNMaXN0Lmxlbmd0aCAmJiAhaXNFZGl0ICYmICFjaGVja1VzZWQoaSkgJiYgYnJhbmRHcm91cC5nZXQoJ2NhdGVnb3J5Jyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpID8gJ2RhbmdlcicgOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBnZXRDYXRlZ29yeShpKT8uY29udHJvbHM7bGV0IGo9aW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0zXCIgW25nQ2xhc3NdPVwiaXNFZGl0IHx8IGNoZWNrVXNlZChpKSA/ICdkaXNhYmxlZFRleHQnIDogJydcIj57e2l0ZW0udmFsdWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cImlzRWRpdCB8fCBjaGVja1VzZWQoaSkgPyAnJyA6cmVtb3ZlQ2F0ZWdvcnkoaSxqKVwiIFtjbGFzc109XCJpc0VkaXQgfHwgY2hlY2tVc2VkKGkpID8gJ2Rpc2FibGVkVGV4dCc6J2N1cnNvci1wb2ludGVyJ1wiPjxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05IDNMMyA5TTMgM0w5IDlcIiBbYXR0ci5zdHJva2VdPVwiaXNFZGl0IHx8IGNoZWNrVXNlZChpKSA/ICcjYWViNGM1JyA6ICcjNjY3MDg1J1wiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHN0eWxlPVwibWluLWhlaWdodDogNDRweDtcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGRyb3Bkb3duLWlucHV0IHBzLTMgbWUtM1wiIChjaGFuZ2UpPVwiYWRkQ2F0ZWdvcnkoJGV2ZW50LGkpXCIgW2lkXT1cIidjYXRlZ29yeUlucHV0JytpXCIgW2Rpc2FibGVkXT1cImlzRWRpdCB8fCBjaGVja1VzZWQoaSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJjYXRlZ29yeVwiIC8+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zIG10LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNVwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNSAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE0LjcwNzEgOC43MDcxMUMxNS4wOTc2IDguMzE2NTggMTUuMDk3NiA3LjY4MzQyIDE0LjcwNzEgNy4yOTI4OUw4LjM0MzE1IDAuOTI4OTMyQzcuOTUyNjIgMC41Mzg0MDggNy4zMTk0NiAwLjUzODQwOCA2LjkyODkzIDAuOTI4OTMyQzYuNTM4NDEgMS4zMTk0NiA2LjUzODQxIDEuOTUyNjIgNi45Mjg5MyAyLjM0MzE1TDEyLjU4NTggOEw2LjkyODkzIDEzLjY1NjlDNi41Mzg0MSAxNC4wNDc0IDYuNTM4NDEgMTQuNjgwNSA2LjkyODkzIDE1LjA3MTFDNy4zMTk0NiAxNS40NjE2IDcuOTUyNjIgMTUuNDYxNiA4LjM0MzE1IDE1LjA3MTFMMTQuNzA3MSA4LjcwNzExWk0wIDhWOUgxNFY4VjdIMFY4WlwiIGZpbGw9XCIjRDBENUREXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IHAtMCBwcy0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIGNoaXAtYm94XCIgZm9ybUFycmF5TmFtZT1cInN1YkNhdGVnb3J5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1jb250YWluZXIgZm9ybS1jb250cm9sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGdldFN1YkNhdGVnb3J5KGkpPy5jb250cm9scztsZXQgaj1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTNcIiBbbmdDbGFzc109XCJpc0VkaXQgfHwgY2hlY2tVc2VkKGkpID8gJ2Rpc2FibGVkVGV4dCcgOiAnJ1wiPnt7aXRlbS52YWx1ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwiaXNFZGl0IHx8IGNoZWNrVXNlZChpKSA/ICcnIDogcmVtb3ZlU3ViQ2F0ZWdvcnkoaSxqKVwiIFtjbGFzc109XCJpc0VkaXQgfHwgY2hlY2tVc2VkKGkpID8gJyc6J2N1cnNvci1wb2ludGVyJ1wiPjxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05IDNMMyA5TTMgM0w5IDlcIiBbYXR0ci5zdHJva2VdPVwiaXNFZGl0IHx8IGNoZWNrVXNlZChpKSA/ICcjYWViNGM1JyA6ICcjNjY3MDg1J1wiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHN0eWxlPVwibWluLWhlaWdodDogNDRweDtcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGRyb3Bkb3duLWlucHV0IHBzLTMgbWUtM1wiIChjaGFuZ2UpPVwiYWRkU3ViQ2F0ZWdvcnkoJGV2ZW50LGkpXCIgW2lkXT1cIidzdWJDYXRlZ29yeUlucHV0JytpXCIgW2Rpc2FibGVkXT1cImlzRWRpdCB8fCBjaGVja1VzZWQoaSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJjYXRlZ29yeVwiIC8+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zIG10LTRcIiAoY2xpY2spPVwiY2hlY2tVc2VkKGkpIHx8IGlzRWRpdCA/ICcnIDogcmVtb3ZlQnJhbmQoaSlcIiAqbmdJZj1cImJyYW5kQ29uZmlnLnZhbHVlLmxlbmd0aCA+IDFcIiBbbmdDbGFzc109XCJjaGVja1VzZWQoaSkgfHwgaXNFZGl0ID8gJ2N1cnNvci1kZWZhdWx0JyA6ICdjdXJzb3ItcG9pbnRlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEzLjUgNC41TDQuNSAxMy41TTQuNSA0LjVMMTMuNSAxMy41XCIgc3Ryb2tlPVwiI0QwRDVERFwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG10LTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZVwiIChjbGljayk9XCJhZGRCcmFuZCgpXCIgW2Rpc2FibGVkXT1cImlzRWRpdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEwLjAwMDEgNC4xNjY3NVYxNS44MzM0TTQuMTY2NzUgMTAuMDAwMUgxNS44MzM0XCIgc3Ryb2tlPVwiI0QwRDVERFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+IEFkZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIiAqbmdJZj1cImlzRWRpdFwiIChjbGljayk9XCJpc0VkaXQgPSBmYWxzZTtmb3JtRW5hYmxlKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xNzc1XzM3OTg1KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNC4xNjY3IDIuNDk5OTNDMTQuMzg1NiAyLjI4MTA2IDE0LjY0NTUgMi4xMDc0NCAxNC45MzE0IDEuOTg4OTlDMTUuMjE3NCAxLjg3MDU0IDE1LjUyMzkgMS44MDk1NyAxNS44MzM0IDEuODA5NTdDMTYuMTQyOSAxLjgwOTU3IDE2LjQ0OTQgMS44NzA1NCAxNi43MzU0IDEuOTg4OTlDMTcuMDIxNCAyLjEwNzQ0IDE3LjI4MTIgMi4yODEwNiAxNy41MDAxIDIuNDk5OTNDMTcuNzE5IDIuNzE4OCAxNy44OTI2IDIuOTc4NjMgMTguMDExIDMuMjY0NkMxOC4xMjk1IDMuNTUwNTcgMTguMTkwNCAzLjg1NzA2IDE4LjE5MDQgNC4xNjY1OUMxOC4xOTA0IDQuNDc2MTIgMTguMTI5NSA0Ljc4MjYyIDE4LjAxMSA1LjA2ODU5QzE3Ljg5MjYgNS4zNTQ1NSAxNy43MTkgNS42MTQzOSAxNy41MDAxIDUuODMzMjZMNi4yNTAwOCAxNy4wODMzTDEuNjY2NzUgMTguMzMzM0wyLjkxNjc1IDEzLjc0OTlMMTQuMTY2NyAyLjQ5OTkzWlwiIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTc3NV8zNzk4NVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4gRWRpdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiICpuZ0lmPVwiIWlzRWRpdFwiIChjbGljayk9XCJ1cGRhdGVCcmFuZCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2F2ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRUYWIgPT09ICdicmFuZE1ldGEnXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDM+QnJhbmQgTWV0YSBEYXRhPC9oMz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtYi0wXCI+TWFpbnRhaW4gdGhlIFBpZCBDYXQgJiM4NTk0OyBCcmFuZCAvIENhdGVnb3J5IC8gQmFuZCBtYXBwaW5nIHVzZWQgZHVyaW5nIHBsYW5vZ3JhbSBleHBvcnQuPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDozNjBweDtmbGV4LXNocmluazowXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZVwiIHN0eWxlPVwibGVmdDoxMnB4O3RvcDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yMSAyMUwxNi42NSAxNi42NU0xOSAxMUMxOSAxNS40MTgzIDE1LjQxODMgMTkgMTEgMTlDNi41ODE3MiAxOSAzIDE1LjQxODMgMyAxMUMzIDYuNTgxNzIgNi41ODE3MiAzIDExIDNDMTUuNDE4MyAzIDE5IDYuNTgxNzIgMTkgMTFaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIHN0eWxlPVwicGFkZGluZy1sZWZ0OjM4cHhcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaCBQaWQgQ2F0LCBUZW1wIEdyb3VwLCBDYXRlZ29yeSwgQnJhbmQgb3IgQmFuZFwiIFsobmdNb2RlbCldPVwiYnJhbmRNZXRhU2VhcmNoXCIgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWVuZCBtdC0xXCIgKm5nSWY9XCJicmFuZE1ldGFEYXRhPy5jb250cm9scz8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LW11dGVkXCI+e3sgZmlsdGVyZWRCcmFuZE1ldGFDb3VudCB9fSBvZiB7eyBicmFuZE1ldGFEYXRhLmNvbnRyb2xzLmxlbmd0aCB9fSByb3cocyk8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImJyYW5kTWV0YUZvcm1cIiBjbGFzcz1cIm10LTNcIiAjYnJhbmRNZXRhUmVmPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZvcm1BcnJheU5hbWU9XCJicmFuZE1ldGFEYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG14LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTIgcC0wIHBzLTJcIj48ZGl2IGNsYXNzPVwiZm9ybS1sYWJlbFwiPlBpZCBDYXQ8L2Rpdj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTIgcC0wIHBzLTJcIj48ZGl2IGNsYXNzPVwiZm9ybS1sYWJlbFwiPlRlbXAgR3JvdXA8L2Rpdj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgcC0wIHBzLTJcIj48ZGl2IGNsYXNzPVwiZm9ybS1sYWJlbFwiPkNhdGVnb3J5PC9kaXY+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zIHAtMCBwcy0yXCI+PGRpdiBjbGFzcz1cImZvcm0tbGFiZWxcIj5CcmFuZDwvZGl2PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMiBwLTAgcHMtMlwiPjxkaXYgY2xhc3M9XCJmb3JtLWxhYmVsXCI+QmFuZDwvZGl2PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiaGVpZ2h0OmNhbGMoNzV2aCAtIDI4MHB4KTtvdmVyZmxvdy15OnNjcm9sbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhYnJhbmRNZXRhRGF0YT8uY29udHJvbHM/Lmxlbmd0aFwiIGNsYXNzPVwidGV4dC1jZW50ZXIgcC01IHRleHQtbXV0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm8gYnJhbmQgbWV0YSBkYXRhIGZvdW5kLiBDbGljayBcIkVkaXRcIiB0aGVuIFwiQWRkXCIgdG8gY3JlYXRlIGEgcm93LlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJicmFuZE1ldGFEYXRhPy5jb250cm9scz8ubGVuZ3RoICYmICFmaWx0ZXJlZEJyYW5kTWV0YUNvdW50XCIgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwLTUgdGV4dC1tdXRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBObyByb3dzIG1hdGNoIFwie3sgYnJhbmRNZXRhU2VhcmNoIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBtZXRhR3JvdXAgb2YgYnJhbmRNZXRhRGF0YT8uY29udHJvbHM7IGxldCBpID0gaW5kZXhcIiBbZm9ybUdyb3VwTmFtZV09XCJpXCIgY2xhc3M9XCJyb3cgbXQtMyBteC0wXCIgW2lkXT1cIidtZXRhUm93JyArIGlcIiBbaGlkZGVuXT1cIiFtYXRjaGVzQnJhbmRNZXRhU2VhcmNoKG1ldGFHcm91cClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yIHAtMCBwcy0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cInBpZENhdFwiIFtpZF09XCInbWV0YVJvdycgKyBpICsgJy1waWRDYXQnXCIgW25nQ2xhc3NdPVwiIWlzQnJhbmRNZXRhRWRpdCAmJiBtZXRhR3JvdXAuZ2V0KCdwaWRDYXQnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJykgJiYgbWV0YUdyb3VwLmdldCgncGlkQ2F0Jyk/LnRvdWNoZWQgPyAnZGFuZ2VyJyA6ICcnXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yIHAtMCBwcy0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cInRlbXBHcm91cFwiIFtpZF09XCInbWV0YVJvdycgKyBpICsgJy10ZW1wR3JvdXAnXCIgW25nQ2xhc3NdPVwiIWlzQnJhbmRNZXRhRWRpdCAmJiBtZXRhR3JvdXAuZ2V0KCd0ZW1wR3JvdXAnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJykgJiYgbWV0YUdyb3VwLmdldCgndGVtcEdyb3VwJyk/LnRvdWNoZWQgPyAnZGFuZ2VyJyA6ICcnXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zIHAtMCBwcy0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cImNhdGVnb3J5XCIgW2lkXT1cIidtZXRhUm93JyArIGkgKyAnLWNhdGVnb3J5J1wiIFtuZ0NsYXNzXT1cIiFpc0JyYW5kTWV0YUVkaXQgJiYgbWV0YUdyb3VwLmdldCgnY2F0ZWdvcnknKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJykgJiYgbWV0YUdyb3VwLmdldCgnY2F0ZWdvcnknKT8udG91Y2hlZCA/ICdkYW5nZXInIDogJydcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgcC0wIHBzLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwiYnJhbmRcIiBbaWRdPVwiJ21ldGFSb3cnICsgaSArICctYnJhbmQnXCIgW25nQ2xhc3NdPVwiIWlzQnJhbmRNZXRhRWRpdCAmJiBtZXRhR3JvdXAuZ2V0KCdicmFuZCcpPy5oYXNFcnJvcigncmVxdWlyZWQnKSAmJiBtZXRhR3JvdXAuZ2V0KCdicmFuZCcpPy50b3VjaGVkID8gJ2RhbmdlcicgOiAnJ1wiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMiBwLTAgcHMtMiBkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwiYmFuZFwiIFtpZF09XCInbWV0YVJvdycgKyBpICsgJy1iYW5kJ1wiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zIG10LTNcIiAoY2xpY2spPVwiaXNCcmFuZE1ldGFFZGl0ID8gJycgOiByZW1vdmVCcmFuZE1ldGFSb3coaSlcIiBbbmdDbGFzc109XCJpc0JyYW5kTWV0YUVkaXQgPyAnY3Vyc29yLWRlZmF1bHQnIDogJ2N1cnNvci1wb2ludGVyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEzLjUgNC41TDQuNSAxMy41TTQuNSA0LjVMMTMuNSAxMy41XCIgc3Ryb2tlPVwiI0QwRDVERFwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lXCIgKGNsaWNrKT1cImFkZEJyYW5kTWV0YVJvdygpXCIgW2Rpc2FibGVkXT1cImlzQnJhbmRNZXRhRWRpdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEwLjAwMDEgNC4xNjY3NVYxNS44MzM0TTQuMTY2NzUgMTAuMDAwMUgxNS44MzM0XCIgc3Ryb2tlPVwiI0QwRDVERFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+IEFkZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIiAqbmdJZj1cIiFpc0JyYW5kTWV0YUVkaXRcIiAoY2xpY2spPVwiY2FuY2VsQnJhbmRNZXRhRWRpdCgpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBtcy0yXCIgKm5nSWY9XCJpc0JyYW5kTWV0YUVkaXRcIiAoY2xpY2spPVwiZW5hYmxlQnJhbmRNZXRhRm9ybSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMTc3NV8zNzk5MClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTQuMTY2NyAyLjQ5OTkzQzE0LjM4NTYgMi4yODEwNiAxNC42NDU1IDIuMTA3NDQgMTQuOTMxNCAxLjk4ODk5QzE1LjIxNzQgMS44NzA1NCAxNS41MjM5IDEuODA5NTcgMTUuODMzNCAxLjgwOTU3QzE2LjE0MjkgMS44MDk1NyAxNi40NDk0IDEuODcwNTQgMTYuNzM1NCAxLjk4ODk5QzE3LjAyMTQgMi4xMDc0NCAxNy4yODEyIDIuMjgxMDYgMTcuNTAwMSAyLjQ5OTkzQzE3LjcxOSAyLjcxODggMTcuODkyNiAyLjk3ODYzIDE4LjAxMSAzLjI2NDZDMTguMTI5NSAzLjU1MDU3IDE4LjE5MDQgMy44NTcwNiAxOC4xOTA0IDQuMTY2NTlDMTguMTkwNCA0LjQ3NjEyIDE4LjEyOTUgNC43ODI2MiAxOC4wMTEgNS4wNjg1OUMxNy44OTI2IDUuMzU0NTUgMTcuNzE5IDUuNjE0MzkgMTcuNTAwMSA1LjgzMzI2TDYuMjUwMDggMTcuMDgzM0wxLjY2Njc1IDE4LjMzMzNMMi45MTY3NSAxMy43NDk5TDE0LjE2NjcgMi40OTk5M1pcIiBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzE3NzVfMzc5OTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+IEVkaXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbXMtMlwiICpuZ0lmPVwiIWlzQnJhbmRNZXRhRWRpdFwiIChjbGljayk9XCJ1cGRhdGVCcmFuZE1ldGFEYXRhKClcIj5TYXZlPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRUYWIgPT09ICd0YXNrJ1wiID5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDM+R2xvYmFsIGNvbmZpZ3VyYXRpb24gZm9yIHRhc2tzPC9oMz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHA+VGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGFwcGxpZXMgdG8gYWxsIHB1Ymxpc2hlZCB0YXNrcy48L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNy41IDEyLjVWMTUuODMzM0MxNy41IDE2LjI3NTQgMTcuMzI0NCAxNi42OTkzIDE3LjAxMTggMTcuMDExOEMxNi42OTkzIDE3LjMyNDQgMTYuMjc1NCAxNy41IDE1LjgzMzMgMTcuNUg0LjE2NjY3QzMuNzI0NjQgMTcuNSAzLjMwMDcyIDE3LjMyNDQgMi45ODgxNiAxNy4wMTE4QzIuNjc1NTkgMTYuNjk5MyAyLjUgMTYuMjc1NCAyLjUgMTUuODMzM1YxMi41TTE0LjE2NjcgNi42NjY2N0wxMCAyLjVNMTAgMi41TDUuODMzMzMgNi42NjY2N00xMCAyLjVWMTIuNVwiIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPiBVcGxvYWQgQnJhbmRzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJ0YXNrRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER1ZSBkYXlzICh0byBjb21wbGV0ZSB0YXNrKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJkdWVEYXlcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHVlIHRpbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGltZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwiZHVlVGltZVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tsaXN0dHVybm9mZiBtcy0zIG10LTQgZnYtcGx1Z2lucy1pY29uLWNvbnRhaW5lIGNvbC1tZC04IGRpdldpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtdC0zXCIgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZ2VvRmVuY2luZ1wiIFtjaGVja2VkXT1cInRhc2tGb3JtLmdldCgnYWxsb3dlZFN0b3JlTG9jYXRpb24nKT8udmFsdWVcIiBmb3JtQ29udHJvbE5hbWU9XCJhbGxvd2VkU3RvcmVMb2NhdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIHN1YlwiIFtuZ0NsYXNzXT1cInRhc2tGb3JtLmdldCgnYWxsb3dlZFN0b3JlTG9jYXRpb24nKT8udmFsdWUgPyAnYWN0aXZlJyA6ICcnXCIgZm9yPVwiZ2VvRmVuY2luZ1wiPkdlb1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVuY2luZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPjxicj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBzdWJ0ZXh0XCIgW25nQ2xhc3NdPVwidGFza0Zvcm0uZ2V0KCdhbGxvd2VkU3RvcmVMb2NhdGlvbicpPy52YWx1ZSA/ICdhY3RpdmUnIDogJydcIiBmb3I9XCJnZW9GZW5jaW5nXCI+QnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsaW5nLCB0aGUgY2hlY2tsaXN0IGNhbiBiZSBmaWxsZWQgYnkgdGhlIHVzZXIgb25seSB3aGVuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNpZGUgdGhlIHN0b3JlLjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIiAqbmdJZj1cImlzRWRpdFwiIChjbGljayk9XCJpc0VkaXQgPSBmYWxzZTt0YXNrRm9ybS5lbmFibGUoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xNzc1XzM3OTg1KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE0LjE2NjcgMi40OTk5M0MxNC4zODU2IDIuMjgxMDYgMTQuNjQ1NSAyLjEwNzQ0IDE0LjkzMTQgMS45ODg5OUMxNS4yMTc0IDEuODcwNTQgMTUuNTIzOSAxLjgwOTU3IDE1LjgzMzQgMS44MDk1N0MxNi4xNDI5IDEuODA5NTcgMTYuNDQ5NCAxLjg3MDU0IDE2LjczNTQgMS45ODg5OUMxNy4wMjE0IDIuMTA3NDQgMTcuMjgxMiAyLjI4MTA2IDE3LjUwMDEgMi40OTk5M0MxNy43MTkgMi43MTg4IDE3Ljg5MjYgMi45Nzg2MyAxOC4wMTEgMy4yNjQ2QzE4LjEyOTUgMy41NTA1NyAxOC4xOTA0IDMuODU3MDYgMTguMTkwNCA0LjE2NjU5QzE4LjE5MDQgNC40NzYxMiAxOC4xMjk1IDQuNzgyNjIgMTguMDExIDUuMDY4NTlDMTcuODkyNiA1LjM1NDU1IDE3LjcxOSA1LjYxNDM5IDE3LjUwMDEgNS44MzMyNkw2LjI1MDA4IDE3LjA4MzNMMS42NjY3NSAxOC4zMzMzTDIuOTE2NzUgMTMuNzQ5OUwxNC4xNjY3IDIuNDk5OTNaXCIgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8xNzc1XzM3OTg1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+IEVkaXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKm5nSWY9XCIhaXNFZGl0XCIgKGNsaWNrKT1cInVwZGF0ZVRhc2soKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2F2ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbiJdfQ==
|
|
451
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhbm8tY29uZmlndXJhdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtYnVpbGRlci9zcmMvbGliL2NvbXBvbmVudHMvcGxhbm8tY29uZmlndXJhdGlvbnMvcGxhbm8tY29uZmlndXJhdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtYnVpbGRlci9zcmMvbGliL2NvbXBvbmVudHMvcGxhbm8tY29uZmlndXJhdGlvbnMvcGxhbm8tY29uZmlndXJhdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQXNCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RixPQUFPLEVBSUwsV0FBVyxFQUVYLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBT3hCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7OztBQVE1RCxNQUFNLE9BQU8sNEJBQTRCO0lBZTdCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQXRCYSxPQUFPLENBQWE7SUFDZixZQUFZLENBQWE7SUFDckQsV0FBVyxHQUFXLE9BQU8sQ0FBQztJQUM5QixJQUFJLENBQWE7SUFDakIsUUFBUSxDQUFTO0lBQ2pCLFVBQVUsR0FBbUIsRUFBRSxDQUFDO0lBQ2hDLE9BQU8sR0FBWSxJQUFJLENBQUM7SUFDeEIsTUFBTSxHQUFZLEtBQUssQ0FBQztJQUN4QixRQUFRLENBQVk7SUFDcEIsYUFBYSxDQUFhO0lBQzFCLGFBQWEsR0FBVSxFQUFFLENBQUM7SUFDMUIsZUFBZSxHQUFZLElBQUksQ0FBQztJQUNoQyxlQUFlLEdBQVcsRUFBRSxDQUFDO0lBQzdCLFlBQ1UsRUFBZSxFQUNmLFdBQTZCLEVBQzdCLEVBQXNCLEVBQ3RCLGNBQW1DLEVBQ25DLEtBQW1CLEVBQ25CLFlBQXNCLEVBQ3RCLEVBQXFCLEVBQ3JCLFFBQXlCLEVBQ3pCLE1BQWM7UUFSZCxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2YsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FBQzdCLE9BQUUsR0FBRixFQUFFLENBQW9CO1FBQ3RCLG1CQUFjLEdBQWQsY0FBYyxDQUFxQjtRQUNuQyxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ25CLGlCQUFZLEdBQVosWUFBWSxDQUFVO1FBQ3RCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ3JCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLFdBQU0sR0FBTixNQUFNLENBQVE7SUFDckIsQ0FBQztJQUVKOzs7O09BSUc7SUFDSCxjQUFjO1FBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsK0JBQStCLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVE7UUFDWixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUU7WUFDOUMsSUFBSSxJQUFJLEVBQUU7Z0JBQ1IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLEVBQUUsTUFBTSxDQUFDO2dCQUM3QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7YUFDMUI7aUJBQU07Z0JBQ0wsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFXLENBQUMsQ0FBQztnQkFDeEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLEVBQUUsTUFBTSxDQUFDO2dCQUM3QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7YUFDMUI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUM7WUFDM0I7Z0JBQ0UsS0FBSyxFQUFFLFdBQVc7Z0JBQ2xCLElBQUksRUFBRSxxQ0FBcUM7Z0JBQzNDLFFBQVEsRUFBRSxLQUFLO2dCQUNmLFdBQVcsRUFBRSxLQUFLO2FBQ25CO1lBQ0QsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO1NBQzVELENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsYUFBYTtRQUNqQixNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUMxQyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztZQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNyQixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFO2dCQUMxQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDakI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2FBQ2pCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUN0RSxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsRUFBRTtnQkFDMUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7b0JBQzVCLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7b0JBQzlDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7b0JBQ2hELG9CQUFvQixFQUFFO3dCQUNwQixHQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQjt3QkFDN0IsVUFBVSxDQUFDLFFBQVE7cUJBQ3BCO2lCQUNGLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO2FBQzdDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDeEIsV0FBVyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztTQUMvQixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQU0sRUFBRSxDQUFTLEVBQUUsRUFBRTtZQUM1QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztnQkFDL0IsS0FBSyxFQUFFO29CQUNMLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7b0JBQzFDLFVBQVUsQ0FBQyxRQUFRO2lCQUNwQjtnQkFDRCxRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQztnQkFDcEMsV0FBVyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUM7Z0JBQzFDLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUM7YUFDcEIsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUN4QixXQUFXLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1NBQy9CLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDNUIsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDaEMsT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDdkMsb0JBQW9CLEVBQUUsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztTQUNuRCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ2pDLGFBQWEsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7U0FDakMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFjLENBQUM7SUFDbkQsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FDbkIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDWixLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUNoQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzNCLFdBQVcsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7U0FDL0IsQ0FBQyxDQUNILENBQUM7UUFDRixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUMzRCxRQUFRLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUN0QyxDQUFDO1lBRUYsSUFBSSxZQUFZLEVBQUU7Z0JBQ2hCLFlBQVksQ0FBQyxjQUFjLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO2FBQ3RFO1FBQ0gsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFhO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxXQUFXLENBQUMsUUFBZ0I7UUFDMUIsT0FBUSxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQWUsQ0FBQyxHQUFHLENBQ3JELFVBQVUsQ0FDRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBYSxFQUFFLFFBQWdCO1FBQzVDLE1BQU0sYUFBYSxHQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBZSxDQUFDLEdBQUcsQ0FDakUsVUFBVSxDQUNFLENBQUM7UUFDZixhQUFhLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBVSxFQUFFLEtBQWE7UUFDbkMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDekMsSUFBSSxLQUFLLEVBQUU7WUFDVCxNQUFNLGFBQWEsR0FBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQWUsQ0FBQyxHQUFHLENBQ2pFLFVBQVUsQ0FDRSxDQUFDO1lBQ2YsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBRTNDLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQ3hDLGdCQUFnQixLQUFLLEVBQUUsQ0FDRyxDQUFDO1lBQzdCLElBQUksVUFBVSxFQUFFO2dCQUNkLFVBQVUsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO2FBQ3ZCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsY0FBYyxDQUFDLFFBQWdCO1FBQzdCLE9BQVEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFlLENBQUMsR0FBRyxDQUNyRCxhQUFhLENBQ0QsQ0FBQztJQUNqQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsS0FBYSxFQUFFLFFBQWdCO1FBQy9DLE1BQU0sYUFBYSxHQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBZSxDQUFDLEdBQUcsQ0FDakUsYUFBYSxDQUNELENBQUM7UUFDZixhQUFhLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBVSxFQUFFLEtBQWE7UUFDdEMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDekMsSUFBSSxLQUFLLEVBQUU7WUFDVCxNQUFNLGFBQWEsR0FBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQWUsQ0FBQyxHQUFHLENBQ2pFLGFBQWEsQ0FDRCxDQUFDO1lBQ2YsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBRTNDLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQ3hDLG1CQUFtQixLQUFLLEVBQUUsQ0FDQSxDQUFDO1lBQzdCLElBQUksVUFBVSxFQUFFO2dCQUNkLFVBQVUsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO2FBQ3ZCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQWE7UUFDckIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxDQUFDO0lBQ3pELENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVztRQUNmLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1FBQ3ZDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsMkJBQTJCLENBQUMsQ0FBQztZQUN0RCxPQUFPO1NBQ1I7UUFDRCxJQUFJLFVBQVUsR0FBUSxFQUFFLENBQUM7UUFDekIsSUFBSSxLQUFLLEdBQVEsRUFBRSxDQUFDO1FBQ3BCLElBQUksS0FBSyxHQUFRLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1RCxVQUFVLEdBQUc7WUFDWCxHQUFHLElBQUksR0FBRyxDQUNSLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFTLEVBQUUsS0FBVSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUN2RTtTQUNGLENBQUM7UUFDRixJQUFJLFVBQVUsQ0FBQyxNQUFNLEVBQUU7WUFDckIsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxRQUFRLEVBQUUsd0JBQXdCLENBQUMsQ0FBQztTQUM5RDtRQUNELElBQUksUUFBUSxHQUFRLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsRSxJQUFJLFlBQVksR0FBRztZQUNqQixHQUFHLElBQUksR0FBRyxDQUNSLFFBQVEsQ0FBQyxNQUFNLENBQ2IsQ0FBQyxJQUFTLEVBQUUsS0FBVSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FDNUQsQ0FDRjtTQUNGLENBQUM7UUFDRixJQUFJLFlBQVksQ0FBQyxNQUFNLEVBQUU7WUFDdkIsS0FBSyxDQUFDLElBQUksQ0FDUixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxFQUFFLGlDQUFpQyxDQUN4RSxDQUFDO1NBQ0g7UUFDRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUU7WUFDaEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDekQ7UUFDRCxJQUFJLElBQUksR0FBRztZQUNULFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixTQUFTLEVBQUUsU0FBUztZQUNwQixhQUFhLEVBQUUsSUFBSSxDQUFDLFVBQVU7aUJBQzNCLE1BQU0sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQztpQkFDaEMsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO1NBQzlCLENBQUM7UUFDRixJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQ2hELEtBQUssRUFBRSxHQUFRLEVBQUUsRUFBRTtZQUNqQixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsRUFBRTtnQkFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsb0NBQW9DLENBQUMsQ0FBQztnQkFDakUsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBQ3hDLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQzthQUM3RDtRQUNILENBQUMsRUFDRCxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBQ2IsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUNyRCxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxJQUFJLEdBQUc7WUFDVCxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUs7U0FDdkIsQ0FBQztRQUVGLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FDNUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNYLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxFQUFFO2dCQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztnQkFDNUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsbUNBQW1DLENBQUMsQ0FBQzthQUNqRTtRQUNILENBQUMsRUFDRCxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBQ2IsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUNyRCxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxVQUFVO1FBQ1IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3ZELFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQyxDQUFDO1FBQ0gsUUFBUSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3BELFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFDbkUsUUFBUSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztRQUNuRSxRQUFRLENBQUMsaUJBQWlCLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFFdkQsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQ2pDLElBQUksR0FBRyxFQUFFO2dCQUNQLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQzthQUM3RDtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQWMsQ0FBQztRQUUxRCxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQXdCLEVBQUUsRUFBRTtZQUN0RCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxLQUFLLEVBQUU7Z0JBQ2pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQy9CLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQ2xDLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUM7YUFDdEM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBYyxDQUFDO0lBQzlELENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQzNELENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDWCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3RELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1lBQzFCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxDQUFDLEVBQ0QsR0FBRyxFQUFFO1lBQ0gsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzlCLENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELGtCQUFrQixDQUFDLElBQVc7UUFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUNqQyxhQUFhLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQzFCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUNmLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO2dCQUNaLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxNQUFNLElBQUksRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7Z0JBQ2hELFNBQVMsRUFBRSxDQUFDLEdBQUcsRUFBRSxTQUFTLElBQUksRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7Z0JBQ3RELFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxRQUFRLElBQUksRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7Z0JBQ3BELEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7Z0JBQzlDLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDO2FBQ3hCLENBQUMsQ0FDSCxDQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUNaLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ2pDLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ3BDLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ25DLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ2hDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztTQUNYLENBQUMsQ0FDSCxDQUFDO1FBQ0YsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLGFBQWEsQ0FDN0QsV0FBVyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FDM0MsQ0FBQztZQUNGLElBQUksT0FBTyxFQUFFO2dCQUNYLE9BQU8sQ0FBQyxjQUFjLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO2FBQ2pFO1FBQ0gsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUVELGtCQUFrQixDQUFDLEtBQWE7UUFDOUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUM3QixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxtQkFBbUI7UUFDakIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUU7WUFDOUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQywrQkFBK0IsRUFBRSxDQUFDO1lBQ3ZDLE9BQU87U0FDUjtRQUNELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO1FBQ3RDLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7UUFDL0IsTUFBTSxLQUFLLEdBQXFDLEVBQUUsQ0FBQztRQUNuRCxNQUFNLElBQUksR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDeEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQU0sRUFBRSxDQUFTLEVBQUUsRUFBRTtZQUNqQyx5RUFBeUU7WUFDekUsaUZBQWlGO1lBQ2pGLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDO2lCQUM3RCxHQUFHLENBQUMsSUFBSSxDQUFDO2lCQUNULElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNiLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDakIsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQU0sTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQy9EO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDZjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ2hCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FDdEIsT0FBTyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsNkRBQTZELEtBQUssQ0FBQyxLQUFLLElBQUksQ0FDakcsQ0FBQztZQUNGLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3ZELE9BQU87U0FDUjtRQUNELE1BQU0sT0FBTyxHQUFHO1lBQ2QsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLGFBQWEsRUFBRSxJQUFJO1NBQ3BCLENBQUM7UUFDRixJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FDeEQsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNYLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxFQUFFO2dCQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO2dCQUNuRSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztnQkFDMUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7YUFDbEQ7UUFDSCxDQUFDLEVBQ0QsR0FBRyxFQUFFO1lBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUNyRCxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFZ0IsdUJBQXVCLEdBQTJCO1FBQ2pFLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFNBQVMsRUFBRSxZQUFZO1FBQ3ZCLFFBQVEsRUFBRSxVQUFVO1FBQ3BCLEtBQUssRUFBRSxPQUFPO1FBQ2QsSUFBSSxFQUFFLE1BQU07S0FDYixDQUFDO0lBRU0sK0JBQStCO1FBQ3JDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDO1FBQzdDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3hDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQWMsQ0FBQztZQUN2QyxLQUFLLE1BQU0sUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEVBQUU7Z0JBQ2hFLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ2pDLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7b0JBQ3hCLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUN0QixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQ3RFLENBQUM7b0JBQ0YsSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztvQkFDL0MsT0FBTztpQkFDUjthQUNGO1NBQ0Y7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFTyw0QkFBNEIsQ0FBQyxRQUFnQixFQUFFLFFBQWdCO1FBQ3JFLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUNoQyxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztTQUMzQjtRQUNELFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUNoQyxVQUFVLFFBQVEsSUFBSSxRQUFRLEVBQUUsQ0FDTixDQUFDO1lBQzdCLElBQUksQ0FBQyxFQUFFO2dCQUFFLE9BQU87WUFDaEIsRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDM0QsSUFBSTtnQkFDRixFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7YUFDbkM7WUFBQyxNQUFNO2dCQUNOLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUNaO1lBQ0QsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDcEMsS0FBSyxFQUFFLENBQUMsV0FBVyxDQUFDO1lBQ3BCLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ2pDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM5RCxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDVCxDQUFDO0lBRUQsc0JBQXNCLENBQUMsS0FBc0I7UUFDM0MsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyRCxJQUFJLENBQUMsQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3BCLE1BQU0sTUFBTSxHQUFHLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3BFLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ3pCLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDO1lBQ2xDLE9BQU8sQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksc0JBQXNCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDOUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxDQUMvQixDQUFDLE1BQU0sQ0FBQztJQUNYLENBQUM7d0dBN2ZVLDRCQUE0Qjs0RkFBNUIsNEJBQTRCLG1RQ3ZCekMsMGltQ0E4V0E7OzRGRHZWYSw0QkFBNEI7a0JBTHhDLFNBQVM7K0JBQ0UsMEJBQTBCO3VUQUtiLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkFDTyxZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7XHJcbiAgQWJzdHJhY3RDb250cm9sLFxyXG4gIEZvcm1BcnJheSxcclxuICBGb3JtQnVpbGRlcixcclxuICBGb3JtQ29udHJvbCxcclxuICBGb3JtR3JvdXAsXHJcbiAgVmFsaWRhdG9ycyxcclxufSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UsIFBhZ2VJbmZvU2VydmljZSB9IGZyb20gXCJ0YW5nby1hcHAtdWktZ2xvYmFsXCI7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gXCJ0YW5nby1hcHAtdWktc2hhcmVkXCI7XHJcbmltcG9ydCB7IFBsYW5vRGF0YVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvcGxhbm8tZGF0YS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFN0b3JlQnVpbGRlclNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvc3RvcmUtYnVpbGRlci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFBvcHVwc0NvbXBvbmVudCB9IGZyb20gXCIuL3BvcHVwcy9wb3B1cHMuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEJyYW5kRGV0YWlscyB9IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzL3ZtLWxpYnJhcnkuaW50ZXJmYWNlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJsaWItcGxhbm8tY29uZmlndXJhdGlvbnNcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3BsYW5vLWNvbmZpZ3VyYXRpb25zLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmw6IFwiLi9wbGFuby1jb25maWd1cmF0aW9ucy5jb21wb25lbnQuc2Nzc1wiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGxhbm9Db25maWd1cmF0aW9uc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgIEBWaWV3Q2hpbGQoJ2Zvcm1SZWYnKSBmb3JtUmVmOiBFbGVtZW50UmVmO1xyXG4gICBAVmlld0NoaWxkKCdicmFuZE1ldGFSZWYnKSBicmFuZE1ldGFSZWY6IEVsZW1lbnRSZWY7XHJcbiAgc2VsZWN0ZWRUYWI6IHN0cmluZyA9IFwiYnJhbmRcIjtcclxuICBmb3JtITogRm9ybUdyb3VwO1xyXG4gIGNsaWVudElkOiBzdHJpbmc7XHJcbiAgYnJhbmRzTGlzdDogQnJhbmREZXRhaWxzW10gPSBbXTtcclxuICBsb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICBpc0VkaXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB0YXNrRm9ybTogRm9ybUdyb3VwO1xyXG4gIGJyYW5kTWV0YUZvcm0hOiBGb3JtR3JvdXA7XHJcbiAgYnJhbmRNZXRhTGlzdDogYW55W10gPSBbXTtcclxuICBpc0JyYW5kTWV0YUVkaXQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGJyYW5kTWV0YVNlYXJjaDogc3RyaW5nID0gXCJcIjtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSBkYXRhU2VydmljZTogUGxhbm9EYXRhU2VydmljZSxcclxuICAgIHByaXZhdGUgZ3M6IEdsb2JhbFN0YXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgYnVpbGRlclNlcnZpY2U6IFN0b3JlQnVpbGRlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRvYXN0OiBUb2FzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1vZGVsU2VydmljZTogTmdiTW9kYWwsXHJcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgcGFnZUluZm86IFBhZ2VJbmZvU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcclxuICApIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhpZGRlbiBlbnRyeSBwb2ludCB0byB0aGUgaW50ZXJuYWwgcGxhbm8tdG9vbHMgcGFnZS5cclxuICAgKiBUcmlnZ2VyZWQgZnJvbSBhbiBpbnZpc2libGUgMcOXMSBoaXQtYXJlYSBiZWxvdyB0aGUgY29uZmlnIHNpZGUgY2FyZCDigJRcclxuICAgKiBmb3Igb3BzL2RldnMgd2hvIGtub3cgaXQncyB0aGVyZS4gTm90IGRpc2NvdmVyYWJsZSBpbiB0aGUgVUkuXHJcbiAgICovXHJcbiAgZ29Ub1BsYW5vVG9vbHMoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKFwiL21hbmFnZS9wbGFub2dyYW0vcGxhbm8tdG9vbHNcIik7XHJcbiAgfVxyXG5cclxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuc2V0UGFnZURhdGEoKTtcclxuICAgIHRoaXMuaW5pdEZvcm0oKTtcclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWUuc3Vic2NyaWJlKGFzeW5jIChkYXRhKSA9PiB7XHJcbiAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgdGhpcy5jbGllbnRJZCA9IGRhdGE/LmNsaWVudDtcclxuICAgICAgICB0aGlzLmxvYWRCcmFuZERhdGEoKTtcclxuICAgICAgICB0aGlzLmxvYWRUYXNrRGF0YSgpO1xyXG4gICAgICAgIHRoaXMubG9hZEJyYW5kTWV0YURhdGEoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBsZXQgZGF0YSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJoZWFkZXItZmlsdGVyc1wiKSBhcyBzdHJpbmcpO1xyXG4gICAgICAgIHRoaXMuY2xpZW50SWQgPSBkYXRhPy5jbGllbnQ7XHJcbiAgICAgICAgdGhpcy5sb2FkQnJhbmREYXRhKCk7XHJcbiAgICAgICAgdGhpcy5sb2FkVGFza0RhdGEoKTtcclxuICAgICAgICB0aGlzLmxvYWRCcmFuZE1ldGFEYXRhKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0UGFnZURhdGEoKSB7XHJcbiAgICB0aGlzLnBhZ2VJbmZvLnNldFRpdGxlKFwiQ29uZmlndXJhdGlvblwiKTtcclxuICAgIHRoaXMucGFnZUluZm8uc2V0QnJlYWRjcnVtYnMoW1xyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6IFwiUGxhbm9ncmFtXCIsXHJcbiAgICAgICAgcGF0aDogXCIvbWFuYWdlL3BsYW5vZ3JhbS9tYW5hZ2UtcGxhbm9ncmFtc1wiLFxyXG4gICAgICAgIGlzQWN0aXZlOiBmYWxzZSxcclxuICAgICAgICBpc1NlcGFyYXRvcjogZmFsc2UsXHJcbiAgICAgIH0sXHJcbiAgICAgIHsgdGl0bGU6IFwiXCIsIHBhdGg6IFwiXCIsIGlzQWN0aXZlOiBmYWxzZSwgaXNTZXBhcmF0b3I6IHRydWUgfSxcclxuICAgIF0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgbG9hZEJyYW5kRGF0YSgpIHtcclxuICAgIGF3YWl0IHRoaXMuZGF0YVNlcnZpY2UuZmV0Y2hCcmFuZHNMaXN0KHRoaXMuY2xpZW50SWQpO1xyXG4gICAgdGhpcy5kYXRhU2VydmljZS5icmFuZHNMaXN0LnN1YnNjcmliZSgoZSkgPT4ge1xyXG4gICAgICB0aGlzLmJyYW5kc0xpc3QgPSBlO1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgaWYgKHRoaXMuYnJhbmRzTGlzdC5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLmxvYWREYXRhKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5hZGRCcmFuZCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGxvYWRUYXNrRGF0YSgpIHtcclxuICAgIHRoaXMuYnVpbGRlclNlcnZpY2UuZ2V0VGFza0NvbmZpZyh0aGlzLmNsaWVudElkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgdGhpcy5pc0VkaXQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudGFza0Zvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICAgIGR1ZURheTogW3Jlcy5kYXRhLmR1ZURheSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICBkdWVUaW1lOiBbcmVzLmRhdGEuZHVlVGltZSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICBhbGxvd2VkU3RvcmVMb2NhdGlvbjogW1xyXG4gICAgICAgICAgICByZXMuZGF0YS5hbGxvd2VkU3RvcmVMb2NhdGlvbixcclxuICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy50YXNrRm9ybS5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBsb2FkRGF0YSgpIHtcclxuICAgIHRoaXMuaXNFZGl0ID0gdHJ1ZTtcclxuICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBicmFuZENvbmZpZzogdGhpcy5mYi5hcnJheShbXSksXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmJyYW5kc0xpc3QuZm9yRWFjaCgoZTogYW55LCBpOiBudW1iZXIpID0+IHtcclxuICAgICAgY29uc3QgYnJhbmRHcm91cCA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgIGJyYW5kOiBbXHJcbiAgICAgICAgICB7IHZhbHVlOiBlLmJyYW5kTmFtZSwgZGlzYWJsZWQ6IGUuaXNVc2VkIH0sXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgIF0sXHJcbiAgICAgICAgY2F0ZWdvcnk6IHRoaXMuZmIuYXJyYXkoZT8uY2F0ZWdvcnkpLFxyXG4gICAgICAgIHN1YkNhdGVnb3J5OiB0aGlzLmZiLmFycmF5KGU/LnN1YkNhdGVnb3J5KSxcclxuICAgICAgICBpc1VzZWQ6IFtlPy5pc1VzZWRdLFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuYnJhbmRDb25maWcucHVzaChicmFuZEdyb3VwKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5mb3JtLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gIH1cclxuXHJcbiAgaW5pdEZvcm0oKSB7XHJcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgYnJhbmRDb25maWc6IHRoaXMuZmIuYXJyYXkoW10pLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy50YXNrRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBkdWVEYXk6IFsxLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgZHVlVGltZTogW1wiMjM6NTlcIiwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgIGFsbG93ZWRTdG9yZUxvY2F0aW9uOiBbZmFsc2UsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5icmFuZE1ldGFGb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIGJyYW5kTWV0YURhdGE6IHRoaXMuZmIuYXJyYXkoW10pLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXQgYnJhbmRDb25maWcoKTogRm9ybUFycmF5IHtcclxuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KFwiYnJhbmRDb25maWdcIikgYXMgRm9ybUFycmF5O1xyXG4gIH1cclxuXHJcbiAgYWRkQnJhbmQoKSB7XHJcbiAgICB0aGlzLmJyYW5kQ29uZmlnLnB1c2goXHJcbiAgICAgIHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgIGJyYW5kOiBbXCJcIiwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgY2F0ZWdvcnk6IHRoaXMuZmIuYXJyYXkoW10pLFxyXG4gICAgICAgIHN1YkNhdGVnb3J5OiB0aGlzLmZiLmFycmF5KFtdKSxcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgYnJhbmRFbGVtZW50ID0gdGhpcy5mb3JtUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgICAgICBgI3RleHQke3RoaXMuYnJhbmRDb25maWcubGVuZ3RoIC0gMX1gXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBpZiAoYnJhbmRFbGVtZW50KSB7XHJcbiAgICAgICAgYnJhbmRFbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmxvY2s6IFwiY2VudGVyXCIsIGJlaGF2aW9yOiBcInNtb290aFwiIH0pO1xyXG4gICAgICB9XHJcbiAgICB9LCAxMDApO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlQnJhbmQoaW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5icmFuZENvbmZpZy5yZW1vdmVBdChpbmRleCk7XHJcbiAgfVxyXG5cclxuICBnZXRDYXRlZ29yeShjYXRJbmRleDogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gKHRoaXMuYnJhbmRDb25maWcuYXQoY2F0SW5kZXgpIGFzIEZvcm1Hcm91cCkuZ2V0KFxyXG4gICAgICBcImNhdGVnb3J5XCJcclxuICAgICkgYXMgRm9ybUFycmF5O1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlQ2F0ZWdvcnkoaW5kZXg6IG51bWJlciwgY2F0SW5kZXg6IG51bWJlcikge1xyXG4gICAgY29uc3QgY2F0ZWdvcnlBcnJheSA9ICh0aGlzLmJyYW5kQ29uZmlnLmF0KGluZGV4KSBhcyBGb3JtR3JvdXApLmdldChcclxuICAgICAgXCJjYXRlZ29yeVwiXHJcbiAgICApIGFzIEZvcm1BcnJheTtcclxuICAgIGNhdGVnb3J5QXJyYXkucmVtb3ZlQXQoY2F0SW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgYWRkQ2F0ZWdvcnkoZXZlbnQ6IGFueSwgaW5kZXg6IG51bWJlcikge1xyXG4gICAgY29uc3QgdmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU/LnRyaW0oKTtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICBjb25zdCBjYXRlZ29yeUFycmF5ID0gKHRoaXMuYnJhbmRDb25maWcuYXQoaW5kZXgpIGFzIEZvcm1Hcm91cCkuZ2V0KFxyXG4gICAgICAgIFwiY2F0ZWdvcnlcIlxyXG4gICAgICApIGFzIEZvcm1BcnJheTtcclxuICAgICAgY2F0ZWdvcnlBcnJheS5wdXNoKG5ldyBGb3JtQ29udHJvbCh2YWx1ZSkpO1xyXG5cclxuICAgICAgY29uc3QgaW5wdXRWYWx1ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxyXG4gICAgICAgIGBjYXRlZ29yeUlucHV0JHtpbmRleH1gXHJcbiAgICAgICkgYXMgSFRNTElucHV0RWxlbWVudCB8IG51bGw7XHJcbiAgICAgIGlmIChpbnB1dFZhbHVlKSB7XHJcbiAgICAgICAgaW5wdXRWYWx1ZS52YWx1ZSA9IFwiXCI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFN1YkNhdGVnb3J5KGNhdEluZGV4OiBudW1iZXIpIHtcclxuICAgIHJldHVybiAodGhpcy5icmFuZENvbmZpZy5hdChjYXRJbmRleCkgYXMgRm9ybUdyb3VwKS5nZXQoXHJcbiAgICAgIFwic3ViQ2F0ZWdvcnlcIlxyXG4gICAgKSBhcyBGb3JtQXJyYXk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVTdWJDYXRlZ29yeShpbmRleDogbnVtYmVyLCBjYXRJbmRleDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBjYXRlZ29yeUFycmF5ID0gKHRoaXMuYnJhbmRDb25maWcuYXQoaW5kZXgpIGFzIEZvcm1Hcm91cCkuZ2V0KFxyXG4gICAgICBcInN1YkNhdGVnb3J5XCJcclxuICAgICkgYXMgRm9ybUFycmF5O1xyXG4gICAgY2F0ZWdvcnlBcnJheS5yZW1vdmVBdChjYXRJbmRleCk7XHJcbiAgfVxyXG5cclxuICBhZGRTdWJDYXRlZ29yeShldmVudDogYW55LCBpbmRleDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZT8udHJpbSgpO1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIGNvbnN0IGNhdGVnb3J5QXJyYXkgPSAodGhpcy5icmFuZENvbmZpZy5hdChpbmRleCkgYXMgRm9ybUdyb3VwKS5nZXQoXHJcbiAgICAgICAgXCJzdWJDYXRlZ29yeVwiXHJcbiAgICAgICkgYXMgRm9ybUFycmF5O1xyXG4gICAgICBjYXRlZ29yeUFycmF5LnB1c2gobmV3IEZvcm1Db250cm9sKHZhbHVlKSk7XHJcblxyXG4gICAgICBjb25zdCBpbnB1dFZhbHVlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXHJcbiAgICAgICAgYHN1YkNhdGVnb3J5SW5wdXQke2luZGV4fWBcclxuICAgICAgKSBhcyBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbDtcclxuICAgICAgaWYgKGlucHV0VmFsdWUpIHtcclxuICAgICAgICBpbnB1dFZhbHVlLnZhbHVlID0gXCJcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tVc2VkKGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmJyYW5kQ29uZmlnLmF0KGluZGV4KS5nZXQoXCJpc1VzZWRcIik/LnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgdXBkYXRlQnJhbmQoKSB7XHJcbiAgICBsZXQgYnJhbmREYXRhID0gdGhpcy5icmFuZENvbmZpZy52YWx1ZTtcclxuICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkge1xyXG4gICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoXCJSZXF1aXJlZCBmaWVsZCBpcyBtaXNzaW5nXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgZHVwbGljYXRlczogYW55ID0gW107XHJcbiAgICBsZXQgZXJyb3I6IGFueSA9IFtdO1xyXG4gICAgbGV0IGJyYW5kOiBhbnkgPSBicmFuZERhdGEuZmxhdE1hcCgoZWxlOiBhbnkpID0+IGVsZS5icmFuZCk7XHJcbiAgICBkdXBsaWNhdGVzID0gW1xyXG4gICAgICAuLi5uZXcgU2V0KFxyXG4gICAgICAgIGJyYW5kLmZpbHRlcigoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiBicmFuZC5pbmRleE9mKGl0ZW0pICE9PSBpbmRleClcclxuICAgICAgKSxcclxuICAgIF07XHJcbiAgICBpZiAoZHVwbGljYXRlcy5sZW5ndGgpIHtcclxuICAgICAgZXJyb3IucHVzaChgJHtkdXBsaWNhdGVzLnRvU3RyaW5nKCl9IC0gYnJhbmQgaXMgZHVwbGljYXRlZGApO1xyXG4gICAgfVxyXG4gICAgbGV0IGNhdGVnb3J5OiBhbnkgPSBicmFuZERhdGEuZmxhdE1hcCgoZWxlOiBhbnkpID0+IGVsZS5jYXRlZ29yeSk7XHJcbiAgICBsZXQgZHVwbGljYXRlQ2F0ID0gW1xyXG4gICAgICAuLi5uZXcgU2V0KFxyXG4gICAgICAgIGNhdGVnb3J5LmZpbHRlcihcclxuICAgICAgICAgIChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IGNhdGVnb3J5LmluZGV4T2YoaXRlbSkgIT09IGluZGV4XHJcbiAgICAgICAgKVxyXG4gICAgICApLFxyXG4gICAgXTtcclxuICAgIGlmIChkdXBsaWNhdGVDYXQubGVuZ3RoKSB7XHJcbiAgICAgIGVycm9yLnB1c2goXHJcbiAgICAgICAgYCR7QXJyYXkuZnJvbShkdXBsaWNhdGVDYXQpLnRvU3RyaW5nKCl9IC0gYnJhbmQgY2F0ZWdvcnkgaXMgZHVwbGljYXRlZGBcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmIChlcnJvci5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChgJHtlcnJvci50b1N0cmluZygpfSBgKTtcclxuICAgIH1cclxuICAgIGxldCBkYXRhID0ge1xyXG4gICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcclxuICAgICAgYnJhbmREYXRhOiBicmFuZERhdGEsXHJcbiAgICAgIGJyYW5kVXNlZExpc3Q6IHRoaXMuYnJhbmRzTGlzdFxyXG4gICAgICAgIC5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGUuaXNVc2VkKVxyXG4gICAgICAgIC5tYXAoKGVsZTogYW55KSA9PiBlbGUuX2lkKSxcclxuICAgIH07XHJcbiAgICB0aGlzLmJ1aWxkZXJTZXJ2aWNlLmFkZFVwZGF0ZUJyYW5kKGRhdGEpLnN1YnNjcmliZShcclxuICAgICAgYXN5bmMgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMudG9hc3QuZ2V0U3VjY2Vzc1RvYXN0KFwiQnJhbmQgZGV0YWlscyB1cGRhdGVkIHN1Y2Nlc3NmdWxseVwiKTtcclxuICAgICAgICAgIHRoaXMuaXNFZGl0ID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuZm9ybS5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgIGF3YWl0IHRoaXMuZGF0YVNlcnZpY2UuZmV0Y2hCcmFuZHNMaXN0KHRoaXMuY2xpZW50SWQsIHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoXCJTb21ldGhpbmcgd2VudCB3cm9uZy4uXCIpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlVGFzaygpIHtcclxuICAgIGxldCBkYXRhID0ge1xyXG4gICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcclxuICAgICAgLi4udGhpcy50YXNrRm9ybS52YWx1ZSxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5idWlsZGVyU2VydmljZS51cGRhdGVUYXNrKGRhdGEpLnN1YnNjcmliZShcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMuaXNFZGl0ID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMudGFza0Zvcm0uZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0LmdldFN1Y2Nlc3NUb2FzdChcIlRhc2sgZGV0YWlscyB1cGRhdGVkIHN1Y2Nlc3NmdWxseVwiKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KFwiU29tZXRoaW5nIHdlbnQgd3JvbmcuLlwiKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGJ1bGtVcGxvYWQoKSB7XHJcbiAgICBjb25zdCBtb2RlbFJlZiA9IHRoaXMubW9kZWxTZXJ2aWNlLm9wZW4oUG9wdXBzQ29tcG9uZW50LCB7XHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICBtb2RlbFJlZi5jb21wb25lbnRJbnN0YW5jZS5jbGllbnRJZCA9IHRoaXMuY2xpZW50SWQ7XHJcbiAgICBtb2RlbFJlZi5jb21wb25lbnRJbnN0YW5jZS50b3RhbEl0ZW1Db3VudCA9IHRoaXMuYnJhbmRzTGlzdC5sZW5ndGg7XHJcbiAgICBtb2RlbFJlZi5jb21wb25lbnRJbnN0YW5jZS50b3RhbEl0ZW1Db3VudCA9IHRoaXMuYnJhbmRzTGlzdC5sZW5ndGg7XHJcbiAgICBtb2RlbFJlZi5jb21wb25lbnRJbnN0YW5jZS5icmFuZExpc3QgPSB0aGlzLmJyYW5kc0xpc3Q7XHJcblxyXG4gICAgbW9kZWxSZWYucmVzdWx0LnRoZW4oYXN5bmMgKHJlcykgPT4ge1xyXG4gICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5kYXRhU2VydmljZS5mZXRjaEJyYW5kc0xpc3QodGhpcy5jbGllbnRJZCwgdHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZm9ybUVuYWJsZSgpIHtcclxuICAgIGxldCBicmFuZEluZm8gPSB0aGlzLmZvcm0uZ2V0KFwiYnJhbmRDb25maWdcIikgYXMgRm9ybUFycmF5O1xyXG5cclxuICAgIGJyYW5kSW5mby5jb250cm9scy5mb3JFYWNoKChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcclxuICAgICAgaWYgKCFjb250cm9sLmdldChcImlzVXNlZFwiKT8udmFsdWUpIHtcclxuICAgICAgICBjb250cm9sLmdldChcImJyYW5kXCIpPy5lbmFibGUoKTtcclxuICAgICAgICBjb250cm9sLmdldChcImNhdGVnb3J5XCIpPy5lbmFibGUoKTtcclxuICAgICAgICBjb250cm9sLmdldChcInN1YkNhdGVnb3J5XCIpPy5lbmFibGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXQgYnJhbmRNZXRhRGF0YSgpOiBGb3JtQXJyYXkge1xyXG4gICAgcmV0dXJuIHRoaXMuYnJhbmRNZXRhRm9ybS5nZXQoXCJicmFuZE1ldGFEYXRhXCIpIGFzIEZvcm1BcnJheTtcclxuICB9XHJcblxyXG4gIGxvYWRCcmFuZE1ldGFEYXRhKCkge1xyXG4gICAgdGhpcy5idWlsZGVyU2VydmljZS5nZXRCcmFuZE1ldGFEYXRhKHRoaXMuY2xpZW50SWQpLnN1YnNjcmliZShcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3Qgcm93cyA9IEFycmF5LmlzQXJyYXkocmVzPy5kYXRhKSA/IHJlcy5kYXRhIDogW107XHJcbiAgICAgICAgdGhpcy5icmFuZE1ldGFMaXN0ID0gcm93cztcclxuICAgICAgICB0aGlzLmJ1aWxkQnJhbmRNZXRhRm9ybShyb3dzKTtcclxuICAgICAgfSxcclxuICAgICAgKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYnJhbmRNZXRhTGlzdCA9IFtdO1xyXG4gICAgICAgIHRoaXMuYnVpbGRCcmFuZE1ldGFGb3JtKFtdKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGJ1aWxkQnJhbmRNZXRhRm9ybShyb3dzOiBhbnlbXSkge1xyXG4gICAgdGhpcy5icmFuZE1ldGFGb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIGJyYW5kTWV0YURhdGE6IHRoaXMuZmIuYXJyYXkoXHJcbiAgICAgICAgcm93cy5tYXAoKHJvdykgPT5cclxuICAgICAgICAgIHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgICAgICBwaWRDYXQ6IFtyb3c/LnBpZENhdCA/PyBcIlwiLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgdGVtcEdyb3VwOiBbcm93Py50ZW1wR3JvdXAgPz8gXCJcIiwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgIGNhdGVnb3J5OiBbcm93Py5jYXRlZ29yeSA/PyBcIlwiLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgYnJhbmQ6IFtyb3c/LmJyYW5kID8/IFwiXCIsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgICBiYW5kOiBbcm93Py5iYW5kID8/IFwiXCJdLFxyXG4gICAgICAgICAgfSlcclxuICAgICAgICApXHJcbiAgICAgICksXHJcbiAgICB9KTtcclxuICAgIHRoaXMuaXNCcmFuZE1ldGFFZGl0ID0gdHJ1ZTtcclxuICAgIHRoaXMuYnJhbmRNZXRhRm9ybS5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICB9XHJcblxyXG4gIGFkZEJyYW5kTWV0YVJvdygpIHtcclxuICAgIHRoaXMuYnJhbmRNZXRhRGF0YS5wdXNoKFxyXG4gICAgICB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICBwaWRDYXQ6IFtcIlwiLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICB0ZW1wR3JvdXA6IFtcIlwiLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICBjYXRlZ29yeTogW1wiXCIsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgIGJyYW5kOiBbXCJcIiwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgYmFuZDogW1wiXCJdLFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBsYXN0Um93ID0gdGhpcy5icmFuZE1ldGFSZWY/Lm5hdGl2ZUVsZW1lbnQ/LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgICAgYCNtZXRhUm93JHt0aGlzLmJyYW5kTWV0YURhdGEubGVuZ3RoIC0gMX1gXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChsYXN0Um93KSB7XHJcbiAgICAgICAgbGFzdFJvdy5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiBcImNlbnRlclwiLCBiZWhhdmlvcjogXCJzbW9vdGhcIiB9KTtcclxuICAgICAgfVxyXG4gICAgfSwgMTAwKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUJyYW5kTWV0YVJvdyhpbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmJyYW5kTWV0YURhdGEucmVtb3ZlQXQoaW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgZW5hYmxlQnJhbmRNZXRhRm9ybSgpIHtcclxuICAgIHRoaXMuaXNCcmFuZE1ldGFFZGl0ID0gZmFsc2U7XHJcbiAgICB0aGlzLmJyYW5kTWV0YUZvcm0uZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICB9XHJcblxyXG4gIGNhbmNlbEJyYW5kTWV0YUVkaXQoKSB7XHJcbiAgICB0aGlzLmJ1aWxkQnJhbmRNZXRhRm9ybSh0aGlzLmJyYW5kTWV0YUxpc3QpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlQnJhbmRNZXRhRGF0YSgpIHtcclxuICAgIGlmICh0aGlzLmJyYW5kTWV0YUZvcm0uaW52YWxpZCkge1xyXG4gICAgICB0aGlzLmJyYW5kTWV0YUZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgICB0aGlzLmZvY3VzRmlyc3RJbnZhbGlkQnJhbmRNZXRhRmllbGQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgcm93cyA9IHRoaXMuYnJhbmRNZXRhRGF0YS52YWx1ZTtcclxuICAgIGNvbnN0IHNlZW4gPSBuZXcgU2V0PHN0cmluZz4oKTtcclxuICAgIGNvbnN0IGR1cGVzOiB7IHJvdzogbnVtYmVyOyBjb21ibzogc3RyaW5nIH1bXSA9IFtdO1xyXG4gICAgY29uc3Qgbm9ybSA9ICh2OiBhbnkpID0+ICh2IHx8IFwiXCIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgcm93cy5mb3JFYWNoKChyOiBhbnksIGk6IG51bWJlcikgPT4ge1xyXG4gICAgICAvLyBBIHJvdyBjb3VudHMgYXMgYSBkdXBsaWNhdGUgb25seSB3aGVuIGV2ZXJ5IGZpZWxkIG1hdGNoZXMgYW5vdGhlciByb3cuXHJcbiAgICAgIC8vIFRoZSBzYW1lIFBpZCBDYXQgKyBUZW1wIEdyb3VwIHdpdGggYSBkaWZmZXJlbnQgQ2F0ZWdvcnkvQnJhbmQvQmFuZCBpcyBhbGxvd2VkLlxyXG4gICAgICBjb25zdCBrZXkgPSBbci5waWRDYXQsIHIudGVtcEdyb3VwLCByLmNhdGVnb3J5LCByLmJyYW5kLCByLmJhbmRdXHJcbiAgICAgICAgLm1hcChub3JtKVxyXG4gICAgICAgIC5qb2luKFwifFwiKTtcclxuICAgICAgaWYgKHNlZW4uaGFzKGtleSkpIHtcclxuICAgICAgICBkdXBlcy5wdXNoKHsgcm93OiBpLCBjb21ibzogYCR7ci5waWRDYXR9IC8gJHtyLnRlbXBHcm91cH1gIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHNlZW4uYWRkKGtleSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgaWYgKGR1cGVzLmxlbmd0aCkge1xyXG4gICAgICBjb25zdCBmaXJzdCA9IGR1cGVzWzBdO1xyXG4gICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoXHJcbiAgICAgICAgYFJvdyAke2ZpcnN0LnJvdyArIDF9OiBkdXBsaWNhdGUgZW50cnkg4oCUIGFsbCBmaWVsZHMgaWRlbnRpY2FsIHRvIGFub3RoZXIgcm93IChcIiR7Zmlyc3QuY29tYm99XCIpYFxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnNjcm9sbEFuZEZsYXNoQnJhbmRNZXRhRmllbGQoZmlyc3Qucm93LCBcInBpZENhdFwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWQsXHJcbiAgICAgIGJyYW5kTWV0YURhdGE6IHJvd3MsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5idWlsZGVyU2VydmljZS51cGRhdGVCcmFuZE1ldGFEYXRhKHBheWxvYWQpLnN1YnNjcmliZShcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMudG9hc3QuZ2V0U3VjY2Vzc1RvYXN0KFwiQnJhbmQgTWV0YSBEYXRhIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5XCIpO1xyXG4gICAgICAgICAgdGhpcy5icmFuZE1ldGFMaXN0ID0gcm93cztcclxuICAgICAgICAgIHRoaXMuaXNCcmFuZE1ldGFFZGl0ID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuYnJhbmRNZXRhRm9ybS5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgICgpID0+IHtcclxuICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoXCJTb21ldGhpbmcgd2VudCB3cm9uZy4uXCIpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBCUkFORF9NRVRBX0ZJRUxEX0xBQkVMUzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcclxuICAgIHBpZENhdDogXCJQaWQgQ2F0XCIsXHJcbiAgICB0ZW1wR3JvdXA6IFwiVGVtcCBHcm91cFwiLFxyXG4gICAgY2F0ZWdvcnk6IFwiQ2F0ZWdvcnlcIixcclxuICAgIGJyYW5kOiBcIkJyYW5kXCIsXHJcbiAgICBiYW5kOiBcIkJhbmRcIixcclxuICB9O1xyXG5cclxuICBwcml2YXRlIGZvY3VzRmlyc3RJbnZhbGlkQnJhbmRNZXRhRmllbGQoKSB7XHJcbiAgICBjb25zdCBjb250cm9scyA9IHRoaXMuYnJhbmRNZXRhRGF0YS5jb250cm9scztcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29udHJvbHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgZ3JvdXAgPSBjb250cm9sc1tpXSBhcyBGb3JtR3JvdXA7XHJcbiAgICAgIGZvciAoY29uc3QgZmllbGRLZXkgb2YgT2JqZWN0LmtleXModGhpcy5CUkFORF9NRVRBX0ZJRUxEX0xBQkVMUykpIHtcclxuICAgICAgICBjb25zdCBjdHJsID0gZ3JvdXAuZ2V0KGZpZWxkS2V5KTtcclxuICAgICAgICBpZiAoY3RybCAmJiBjdHJsLmludmFsaWQpIHtcclxuICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChcclxuICAgICAgICAgICAgYFJvdyAke2kgKyAxfTogJHt0aGlzLkJSQU5EX01FVEFfRklFTERfTEFCRUxTW2ZpZWxkS2V5XX0gaXMgcmVxdWlyZWRgXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5zY3JvbGxBbmRGbGFzaEJyYW5kTWV0YUZpZWxkKGksIGZpZWxkS2V5KTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChcIlJlcXVpcmVkIGZpZWxkIGlzIG1pc3NpbmdcIik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNjcm9sbEFuZEZsYXNoQnJhbmRNZXRhRmllbGQocm93SW5kZXg6IG51bWJlciwgZmllbGRLZXk6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuYnJhbmRNZXRhU2VhcmNoPy50cmltKCkpIHtcclxuICAgICAgdGhpcy5icmFuZE1ldGFTZWFyY2ggPSBcIlwiO1xyXG4gICAgfVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXHJcbiAgICAgICAgYG1ldGFSb3cke3Jvd0luZGV4fS0ke2ZpZWxkS2V5fWBcclxuICAgICAgKSBhcyBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbDtcclxuICAgICAgaWYgKCFlbCkgcmV0dXJuO1xyXG4gICAgICBlbC5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiBcImNlbnRlclwiLCBiZWhhdmlvcjogXCJzbW9vdGhcIiB9KTtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBlbC5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XHJcbiAgICAgIH0gY2F0Y2gge1xyXG4gICAgICAgIGVsLmZvY3VzKCk7XHJcbiAgICAgIH1cclxuICAgICAgZWwuY2xhc3NMaXN0LnJlbW92ZShcImRhbmdlci1mbGFzaFwiKTtcclxuICAgICAgdm9pZCBlbC5vZmZzZXRXaWR0aDtcclxuICAgICAgZWwuY2xhc3NMaXN0LmFkZChcImRhbmdlci1mbGFzaFwiKTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiBlbC5jbGFzc0xpc3QucmVtb3ZlKFwiZGFuZ2VyLWZsYXNoXCIpLCAxNTAwKTtcclxuICAgIH0sIDUwKTtcclxuICB9XHJcblxyXG4gIG1hdGNoZXNCcmFuZE1ldGFTZWFyY2goZ3JvdXA6IEFic3RyYWN0Q29udHJvbCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgcSA9IHRoaXMuYnJhbmRNZXRhU2VhcmNoPy50cmltKCkudG9Mb3dlckNhc2UoKTtcclxuICAgIGlmICghcSkgcmV0dXJuIHRydWU7XHJcbiAgICBjb25zdCBmaWVsZHMgPSBbXCJwaWRDYXRcIiwgXCJ0ZW1wR3JvdXBcIiwgXCJjYXRlZ29yeVwiLCBcImJyYW5kXCIsIFwiYmFuZFwiXTtcclxuICAgIHJldHVybiBmaWVsZHMuc29tZSgoa2V5KSA9PiB7XHJcbiAgICAgIGNvbnN0IHZhbCA9IGdyb3VwLmdldChrZXkpPy52YWx1ZTtcclxuICAgICAgcmV0dXJuICh2YWwgPz8gXCJcIikudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHEpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXQgZmlsdGVyZWRCcmFuZE1ldGFDb3VudCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuYnJhbmRNZXRhRGF0YS5jb250cm9scy5maWx0ZXIoKGMpID0+XHJcbiAgICAgIHRoaXMubWF0Y2hlc0JyYW5kTWV0YVNlYXJjaChjKVxyXG4gICAgKS5sZW5ndGg7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBwbGFub0NvbmZpZ1wiPlxyXG4gICAgICAgIDwhLS0gSGlkZGVuIHBsYW5vLXRvb2xzIGVudHJ5LiBTaXplZCAxMjDDlzQwIHB4LCB0cmFuc3BhcmVudCDigJQgaW52aXNpYmxlXHJcbiAgICAgICAgICAgICB0byByZWd1bGFyIHVzZXJzIGJ1dCByZWFjaGFibGUgYnkgb3BzL2RldnMgd2hvIGtub3cgdGhlIHNwb3QuXHJcbiAgICAgICAgICAgICBQbGFjZWQgYXQgdGhlIGJvdHRvbS1sZWZ0LCBiZWxvdyB0aGUgY29uZmlnIHNpZGUgY2FyZC4gLS0+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIk9wZW4gcGxhbm8gdG9vbHNcIlxyXG4gICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJwbGFuby10b29scy1oaWRkZW4tZW50cnlcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiZ29Ub1BsYW5vVG9vbHMoKVwiPjwvYnV0dG9uPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzLWNhcmRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBjdXJzb3ItcG9pbnRlciBwLTMgbWItM1wiIFtuZ0NsYXNzXT1cInNlbGVjdGVkVGFiID09PSAnYnJhbmQnID8gJ2FjdGl2ZScgOiAnJ1wiIChjbGljayk9XCJzZWxlY3RlZFRhYiA9J2JyYW5kJztpc0VkaXQ9dHJ1ZTtpc0JyYW5kTWV0YUVkaXQ9dHJ1ZTtmb3JtLmRpc2FibGUoKTt0YXNrRm9ybS5kaXNhYmxlKCk7YnJhbmRNZXRhRm9ybS5kaXNhYmxlKClcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTQuMTc1NSA0LjIyMjI1QzE0LjE3NjYgMi45OTQ0NSAxMS42NzMxIDIgOC41ODgzMiAyQzUuNTAzNTcgMiAzLjAwMjI0IDIuOTk1NTcgMyA0LjIyMjI1TTMgNC4yMjIyNUMzIDUuNDUwMDQgNS41MDEzMyA2LjQ0NDQ5IDguNTg4MzIgNi40NDQ0OUMxMS42NzUzIDYuNDQ0NDkgMTQuMTc2NiA1LjQ1MDA0IDE0LjE3NjYgNC4yMjIyNUwxNC4xNzY2IDEyLjg0NDVNMyA0LjIyMjI1VjE3LjU1NTZDMy4wMDExMiAxOC43ODM0IDUuNTAyNDUgMTkuNzc3OSA4LjU4ODMyIDE5Ljc3NzlDMTAuMDg0OSAxOS43Nzc5IDExLjQzNjEgMTkuNTQxMiAxMi40Mzg3IDE5LjE2MDFNMy4wMDExMiA4LjY2NjcyQzMuMDAxMTIgOS44OTQ1MSA1LjUwMjQ1IDEwLjg4OSA4LjU4OTQ0IDEwLjg4OUMxMS42NzY0IDEwLjg4OSAxNC4xNzc4IDkuODk0NTEgMTQuMTc3OCA4LjY2NjcyTTEyLjUwNTcgMTQuNjk0NkMxMS40OTc2IDE1LjA4OTEgMTAuMTE1IDE1LjMzMzUgOC41ODgzMiAxNS4zMzM1QzUuNTAyNDUgMTUuMzMzNSAzLjAwMTEyIDE0LjMzOTEgMy4wMDExMiAxMy4xMTEzTTIwLjUyNzIgMTMuNDY0NkMyMi40OTA5IDE1LjQxNjkgMjIuNDkwOSAxOC41ODM2IDIwLjUyNzIgMjAuNTM1OEMxOC41NjM1IDIyLjQ4ODEgMTUuMzc4MSAyMi40ODgxIDEzLjQxNDQgMjAuNTM1OEMxMS40NTA3IDE4LjU4MzYgMTEuNDUwNyAxNS40MTY5IDEzLjQxNDQgMTMuNDY0NkMxNS4zNzgxIDExLjUxMjQgMTguNTYzNSAxMS41MTI0IDIwLjUyNzIgMTMuNDY0NlpcIiBbYXR0ci5zdHJva2VdPVwic2VsZWN0ZWRUYWIgPT09ICdicmFuZCcgPyAnIzAwQTNGRicgOiAnIzM0NDA1NCdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbmZpZ1RleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICBCcmFuZCBhbmQgUHJvZHVjdCBNYXBwaW5nXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggY3Vyc29yLXBvaW50ZXIgcC0zIG1iLTNcIiBbbmdDbGFzc109XCJzZWxlY3RlZFRhYiA9PT0gJ3Rhc2snID8gJ2FjdGl2ZScgOiAnJ1wiIChjbGljayk9XCJzZWxlY3RlZFRhYiA9J3Rhc2snO2lzRWRpdD10cnVlO2lzQnJhbmRNZXRhRWRpdD10cnVlO2Zvcm0uZGlzYWJsZSgpO3Rhc2tGb3JtLmRpc2FibGUoKTticmFuZE1ldGFGb3JtLmRpc2FibGUoKVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xNzc1XzM3OTMxKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyIDE1QzEzLjY1NjkgMTUgMTUgMTMuNjU2OSAxNSAxMkMxNSAxMC4zNDMxIDEzLjY1NjkgOSAxMiA5QzEwLjM0MzEgOSA5IDEwLjM0MzEgOSAxMkM5IDEzLjY1NjkgMTAuMzQzMSAxNSAxMiAxNVpcIiBbYXR0ci5zdHJva2VdPVwic2VsZWN0ZWRUYWIgPT09ICd0YXNrJyA/ICcjMDBBM0ZGJyA6ICcjMzQ0MDU0J1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTkuNCAxNUMxOS4yNjY5IDE1LjMwMTYgMTkuMjI3MiAxNS42MzYyIDE5LjI4NiAxNS45NjA2QzE5LjM0NDggMTYuMjg1IDE5LjQ5OTUgMTYuNTg0MyAxOS43MyAxNi44MkwxOS43OSAxNi44OEMxOS45NzYgMTcuMDY1NyAyMC4xMjM1IDE3LjI4NjMgMjAuMjI0MSAxNy41MjkxQzIwLjMyNDggMTcuNzcxOSAyMC4zNzY2IDE4LjAzMjIgMjAuMzc2NiAxOC4yOTVDMjAuMzc2NiAxOC41NTc4IDIwLjMyNDggMTguODE4MSAyMC4yMjQxIDE5LjA2MDlDMjAuMTIzNSAxOS4zMDM3IDE5Ljk3NiAxOS41MjQzIDE5Ljc5IDE5LjcxQzE5LjYwNDMgMTkuODk2IDE5LjM4MzcgMjAuMDQzNSAxOS4xNDA5IDIwLjE0NDFDMTguODk4MSAyMC4yNDQ4IDE4LjYzNzggMjAuMjk2NiAxOC4zNzUgMjAuMjk2NkMxOC4xMTIyIDIwLjI5NjYgMTcuODUxOSAyMC4yNDQ4IDE3LjYwOTEgMjAuMTQ0MUMxNy4zNjYzIDIwLjA0MzUgMTcuMTQ1NyAxOS44OTYgMTYuOTYgMTkuNzFMMTYuOSAxOS42NUMxNi42NjQzIDE5LjQxOTUgMTYuMzY1IDE5LjI2NDggMTYuMDQwNiAxOS4yMDZDMTUuNzE2MiAxOS4xNDcyIDE1LjM4MTYgMTkuMTg2OSAxNS4wOCAxOS4zMkMxNC43ODQyIDE5LjQ0NjggMTQuNTMyIDE5LjY1NzIgMTQuMzU0MyAxOS45MjU1QzE0LjE3NjYgMjAuMTkzOCAxNC4wODEzIDIwLjUwODIgMTQuMDggMjAuODNWMjFDMTQuMDggMjEuNTMwNCAxMy44NjkzIDIyLjAzOTEgMTMuNDk0MiAyMi40MTQyQzEzLjExOTEgMjIuNzg5MyAxMi42MTA0IDIzIDEyLjA4IDIzQzExLjU0OTYgMjMgMTEuMDQwOSAyMi43ODkzIDEwLjY2NTggMjIuNDE0MkMxMC4yOTA3IDIyLjAzOTEgMTAuMDggMjEuNTMwNCAxMC4wOCAyMVYyMC45MUMxMC4wNzIzIDIwLjU3OSA5Ljk2NTEyIDIwLjI1OCA5Ljc3MjUxIDE5Ljk4ODdDOS41Nzk5IDE5LjcxOTQgOS4zMTA3NCAxOS41MTQzIDkgMTkuNEM4LjY5ODM4IDE5LjI2NjkgOC4zNjM4MSAxOS4yMjcyIDguMDM5NDEgMTkuMjg2QzcuNzE1MDIgMTkuMzQ0OCA3LjQxNTY4IDE5LjQ5OTUgNy4xOCAxOS43M0w3LjEyIDE5Ljc5QzYuOTM0MjUgMTkuOTc2IDYuNzEzNjggMjAuMTIzNSA2LjQ3MDg4IDIwLjIyNDFDNi4yMjgwOCAyMC4zMjQ4IDUuOTY3ODMgMjAuMzc2NiA1LjcwNSAyMC4zNzY2QzUuNDQyMTcgMjAuMzc2NiA1LjE4MTkyIDIwLjMyNDggNC45MzkxMiAyMC4yMjQxQzQuNjk2MzIgMjAuMTIzNSA0LjQ3NTc1IDE5Ljk3NiA0LjI5IDE5Ljc5QzQuMTA0MDUgMTkuNjA0MyAzLjk1NjUzIDE5LjM4MzcgMy44NTU4OCAxOS4xNDA5QzMuNzU1MjMgMTguODk4MSAzLjcwMzQzIDE4LjYzNzggMy43MDM0MyAxOC4zNzVDMy43MDM0MyAxOC4xMTIyIDMuNzU1MjMgMTcuODUxOSAzLjg1NTg4IDE3LjYwOTFDMy45NTY1MyAxNy4zNjYzIDQuMTA0MDUgMTcuMTQ1NyA0LjI5IDE2Ljk2TDQuMzUgMTYuOUM0LjU4MDU0IDE2LjY2NDMgNC43MzUxOSAxNi4zNjUgNC43OTQgMTYuMDQwNkM0Ljg1MjgyIDE1LjcxNjIgNC44MTMxMiAxNS4zODE2IDQuNjggMTUuMDhDNC41NTMyNCAxNC43ODQyIDQuMzQyNzYgMTQuNTMyIDQuMDc0NDcgMTQuMzU0M0MzLjgwNjE4IDE0LjE3NjYgMy40OTE3OSAxNC4wODEzIDMuMTcgMTQuMDhIM0MyLjQ2OTU3IDE0LjA4IDEuOTYwODYgMTMuODY5MyAxLjU4NTc5IDEzLjQ5NDJDMS4yMTA3MSAxMy4xMTkxIDEgMTIuNjEwNCAxIDEyLjA4QzEgMTEuNTQ5NiAxLjIxMDcxIDExLjA0MDkgMS41ODU3OSAxMC42NjU4QzEuOTYwODYgMTAuMjkwNyAyLjQ2OTU3IDEwLjA4IDMgMTAuMDhIMy4wOUMzLjQyMDk5IDEwLjA3MjMgMy43NDIgOS45NjUxMiA0LjAxMTMgOS43NzI1MUM0LjI4MDU5IDkuNTc5OSA0LjQ4NTcyIDkuMzEwNzQgNC42IDlDNC43MzMxMiA4LjY5ODM4IDQuNzcyODIgOC4zNjM4MSA0LjcxNCA4LjAzOTQxQzQuNjU1MTkgNy43MTUwMiA0LjUwMDU0IDcuNDE1NjggNC4yNyA3LjE4TDQuMjEgNy4xMkM0LjAyNDA1IDYuOTM0MjUgMy44NzY1MyA2LjcxMzY4IDMuNzc1ODggNi40NzA4OEMzLjY3NTIzIDYuMjI4MDggMy42MjM0MyA1Ljk2NzgzIDMuNjIzNDMgNS43MDVDMy42MjM0MyA1LjQ0MjE3IDMuNjc1MjMgNS4xODE5MiAzLjc3NTg4IDQuOTM5MTJDMy44NzY1MyA0LjY5NjMyIDQuMDI0MDUgNC40NzU3NSA0LjIxIDQuMjlDNC4zOTU3NSA0LjEwNDA1IDQuNjE2MzIgMy45NTY1MyA0Ljg1OTEyIDMuODU1ODhDNS4xMDE5MiAzLjc1NTIzIDUuMzYyMTcgMy43MDM0MyA1LjYyNSAzLjcwMzQzQzUuODg3ODMgMy43MDM0MyA2LjE0ODA4IDMuNzU1MjMgNi4zOTA4OCAzLjg1NTg4QzYuNjMzNjggMy45NTY1MyA2Ljg1NDI1IDQuMTA0MDUgNy4wNCA0LjI5TDcuMSA0LjM1QzcuMzM1NjggNC41ODA1NCA3LjYzNTAyIDQuNzM1MTkgNy45NTk0MSA0Ljc5NEM4LjI4MzgxIDQuODUyODIgOC42MTgzOCA0LjgxMzEyIDguOTIgNC42OEg5QzkuMjk1NzcgNC41NTMyNCA5LjU0ODAyIDQuMzQyNzYgOS43MjU2OSA0LjA3NDQ3QzkuOTAzMzcgMy44MDYxOCA5Ljk5ODcyIDMuNDkxNzkgMTAgMy4xN1YzQzEwIDIuNDY5NTcgMTAuMjEwNyAxLjk2MDg2IDEwLjU4NTggMS41ODU3OUMxMC45NjA5IDEuMjEwNzEgMTEuNDY5NiAxIDEyIDFDMTIuNTMwNCAxIDEzLjAzOTEgMS4yMTA3MSAxMy40MTQyIDEuNTg1NzlDMTMuNzg5MyAxLjk2MDg2IDE0IDIuNDY5NTcgMTQgM1YzLjA5QzE0LjAwMTMgMy40MTE3OSAxNC4wOTY2IDMuNzI2MTggMTQuMjc0MyAzLjk5NDQ3QzE0LjQ1MiA0LjI2Mjc2IDE0LjcwNDIgNC40NzMyNCAxNSA0LjZDMTUuMzAxNiA0LjczMzEyIDE1LjYzNjIgNC43NzI4MiAxNS45NjA2IDQuNzE0QzE2LjI4NSA0LjY1NTE5IDE2LjU4NDMgNC41MDA1NCAxNi44MiA0LjI3TDE2Ljg4IDQuMjFDMTcuMDY1NyA0LjAyNDA1IDE3LjI4NjMgMy44NzY1MyAxNy41MjkxIDMuNzc1ODhDMTcuNzcxOSAzLjY3NTIzIDE4LjAzMjIgMy42MjM0MyAxOC4yOTUgMy42MjM0M0MxOC41NTc4IDMuNjIzNDMgMTguODE4MSAzLjY3NTIzIDE5LjA2MDkgMy43NzU4OEMxOS4zMDM3IDMuODc2NTMgMTkuNTI0MyA0LjAyNDA1IDE5LjcxIDQuMjFDMTkuODk2IDQuMzk1NzUgMjAuMDQzNSA0LjYxNjMyIDIwLjE0NDEgNC44NTkxMkMyMC4yNDQ4IDUuMTAxOTIgMjAuMjk2NiA1LjM2MjE3IDIwLjI5NjYgNS42MjVDMjAuMjk2NiA1Ljg4NzgzIDIwLjI0NDggNi4xNDgwOCAyMC4xNDQxIDYuMzkwODhDMjAuMDQzNSA2LjYzMzY4IDE5Ljg5NiA2Ljg1NDI1IDE5LjcxIDcuMDRMMTkuNjUgNy4xQzE5LjQxOTUgNy4zMzU2OCAxOS4yNjQ4IDcuNjM1MDIgMTkuMjA2IDcuOTU5NDFDMTkuMTQ3MiA4LjI4MzgxIDE5LjE4NjkgOC42MTgzOCAxOS4zMiA4LjkyVjlDMTkuNDQ2OCA5LjI5NTc3IDE5LjY1NzIgOS41NDgwMiAxOS45MjU1IDkuNzI1NjlDMjAuMTkzOCA5LjkwMzM3IDIwLjUwODIgOS45OTg3MiAyMC44MyAxMEgyMUMyMS41MzA0IDEwIDIyLjAzOTEgMTAuMjEwNyAyMi40MTQyIDEwLjU4NThDMjIuNzg5MyAxMC45NjA5IDIzIDExLjQ2OTYgMjMgMTJDMjMgMTIuNTMwNCAyMi43ODkzIDEzLjAzOTEgMjIuNDE0MiAxMy40MTQyQzIyLjAzOTEgMTMuNzg5MyAyMS41MzA0IDE0IDIxIDE0SDIwLjkxQzIwLjU4ODIgMTQuMDAxMyAyMC4yNzM4IDE0LjA5NjYgMjAuMDA1NSAxNC4yNzQzQzE5LjczNzIgMTQuNDUyIDE5LjUyNjggMTQuNzA0MiAxOS40IDE1WlwiIFthdHRyLnN0cm9rZV09XCJzZWxlY3RlZFRhYiA9PT0gJ3Rhc2snID8gJyMwMEEzRkYnIDogJyMzNDQwNTQnXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTc3NV8zNzkzMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwid2hpdGVcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25maWdUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgVGFzayBDb25maWd1cmF0aW9uXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggY3Vyc29yLXBvaW50ZXIgcC0zIG1iLTNcIiBbbmdDbGFzc109XCJzZWxlY3RlZFRhYiA9PT0gJ2JyYW5kTWV0YScgPyAnYWN0aXZlJyA6ICcnXCIgKGNsaWNrKT1cInNlbGVjdGVkVGFiPSdicmFuZE1ldGEnO2lzRWRpdD10cnVlO2lzQnJhbmRNZXRhRWRpdD10cnVlO2Zvcm0uZGlzYWJsZSgpO3Rhc2tGb3JtLmRpc2FibGUoKTticmFuZE1ldGFGb3JtLmRpc2FibGUoKVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0zIDcuNUwxMiAzTDIxIDcuNU0zIDcuNUwxMiAxMk0zIDcuNVYxNi41TDEyIDIxTTIxIDcuNUwxMiAxMk0yMSA3LjVWMTYuNUwxMiAyMU0xMiAxMlYyMVwiIFthdHRyLnN0cm9rZV09XCJzZWxlY3RlZFRhYiA9PT0gJ2JyYW5kTWV0YScgPyAnIzAwQTNGRicgOiAnIzM0NDA1NCdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlnVGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEJyYW5kIE1ldGEgRGF0YVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTlcIiBpZD1cImNvbmZpZ1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbG9hZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiICpuZ0lmPVwibG9hZGluZ1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tY2FyZFwiICpuZ0lmPVwiIWxvYWRpbmdcIj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdGVkVGFiID09PSAnYnJhbmQnXCIgPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMz5CcmFuZCBhbmQgcHJvZHVjdCBpbmZvcm1hdGlvbjwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwPkRlZmluZSB0aGUgYnJhbmQgYW5kIG1hcCBwcm9kdWN0cyB0byB0aGVpciByZXNwZWN0aXZlIGNhdGVnb3JpZXMuPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIiAoY2xpY2spPVwiYnVsa1VwbG9hZCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE3LjUgMTIuNVYxNS44MzMzQzE3LjUgMTYuMjc1NCAxNy4zMjQ0IDE2LjY5OTMgMTcuMDExOCAxNy4wMTE4QzE2LjY5OTMgMTcuMzI0NCAxNi4yNzU0IDE3LjUgMTUuODMzMyAxNy41SDQuMTY2NjdDMy43MjQ2NCAxNy41IDMuMzAwNzIgMTcuMzI0NCAyLjk4ODE2IDE3LjAxMThDMi42NzU1OSAxNi42OTkzIDIuNSAxNi4yNzU0IDIuNSAxNS44MzMzVjEyLjVNMTQuMTY2NyA2LjY2NjY3TDEwIDIuNU0xMCAyLjVMNS44MzMzMyA2LjY2NjY3TTEwIDIuNVYxMi41XCIgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+IFVwbG9hZCBCcmFuZHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyID5cclxuICAgICAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiBjbGFzcz1cIm10LTEwXCIgI2Zvcm1SZWY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZm9ybUFycmF5TmFtZT1cImJyYW5kQ29uZmlnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG14LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgcC0wIHBzLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tbGFiZWxcIj5CcmFuZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBwLTAgcHMtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1sYWJlbFwiPlByb2R1Y3QgQ2F0ZWdvcnk8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgcC0wIHBzLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tbGFiZWxcIj5Qcm9kdWN0IFN1Yi1DYXRlZ29yeTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiaGVpZ2h0OmNhbGMoNzV2aCAtIDI1MHB4KTtvdmVyZmxvdy15OlNjcm9sbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGJyYW5kR3JvdXAgb2YgYnJhbmRDb25maWc/LmNvbnRyb2xzOyBsZXQgaSA9IGluZGV4XCIgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiIGNsYXNzPVwicm93IG10LTMgbXgtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgcC0wIHBzLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDBcIiBbaWRdPVwiJ3RleHQnK2lcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJicmFuZFwiIFtuZ0NsYXNzXT1cImJyYW5kc0xpc3QubGVuZ3RoICYmICFpc0VkaXQgJiYgIWNoZWNrVXNlZChpKSAmJiBicmFuZEdyb3VwLmdldCgnYnJhbmQnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJykgPyAnZGFuZ2VyJyA6ICcnXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zIG10LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNVwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNSAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE0LjcwNzEgOC43MDcxMUMxNS4wOTc2IDguMzE2NTggMTUuMDk3NiA3LjY4MzQyIDE0LjcwNzEgNy4yOTI4OUw4LjM0MzE1IDAuOTI4OTMyQzcuOTUyNjIgMC41Mzg0MDggNy4zMTk0NiAwLjUzODQwOCA2LjkyODkzIDAuOTI4OTMyQzYuNTM4NDEgMS4zMTk0NiA2LjUzODQxIDEuOTUyNjIgNi45Mjg5MyAyLjM0MzE1TDEyLjU4NTggOEw2LjkyODkzIDEzLjY1NjlDNi41Mzg0MSAxNC4wNDc0IDYuNTM4NDEgMTQuNjgwNSA2LjkyODkzIDE1LjA3MTFDNy4zMTk0NiAxNS40NjE2IDcuOTUyNjIgMTUuNDYxNiA4LjM0MzE1IDE1LjA3MTFMMTQuNzA3MSA4LjcwNzExWk0wIDhWOUgxNFY4VjdIMFY4WlwiIGZpbGw9XCIjRDBENUREXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBwLTAgcHMtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBjaGlwLWJveFwiIGZvcm1BcnJheU5hbWU9XCJjYXRlZ29yeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyIGZvcm0tY29udHJvbFwiIFtuZ0NsYXNzXT1cImJyYW5kc0xpc3QubGVuZ3RoICYmICFpc0VkaXQgJiYgIWNoZWNrVXNlZChpKSAmJiBicmFuZEdyb3VwLmdldCgnY2F0ZWdvcnknKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJykgPyAnZGFuZ2VyJyA6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGdldENhdGVnb3J5KGkpPy5jb250cm9scztsZXQgaj1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTNcIiBbbmdDbGFzc109XCJpc0VkaXQgfHwgY2hlY2tVc2VkKGkpID8gJ2Rpc2FibGVkVGV4dCcgOiAnJ1wiPnt7aXRlbS52YWx1ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwiaXNFZGl0IHx8IGNoZWNrVXNlZChpKSA/ICcnIDpyZW1vdmVDYXRlZ29yeShpLGopXCIgW2NsYXNzXT1cImlzRWRpdCB8fCBjaGVja1VzZWQoaSkgPyAnZGlzYWJsZWRUZXh0JzonY3Vyc29yLXBvaW50ZXInXCI+PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkgM0wzIDlNMyAzTDkgOVwiIFthdHRyLnN0cm9rZV09XCJpc0VkaXQgfHwgY2hlY2tVc2VkKGkpID8gJyNhZWI0YzUnIDogJyM2NjcwODUnXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgc3R5bGU9XCJtaW4taGVpZ2h0OiA0NHB4O1wiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZHJvcGRvd24taW5wdXQgcHMtMyBtZS0zXCIgKGNoYW5nZSk9XCJhZGRDYXRlZ29yeSgkZXZlbnQsaSlcIiBbaWRdPVwiJ2NhdGVnb3J5SW5wdXQnK2lcIiBbZGlzYWJsZWRdPVwiaXNFZGl0IHx8IGNoZWNrVXNlZChpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cImNhdGVnb3J5XCIgLz4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTMgbXQtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE1XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE1IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTQuNzA3MSA4LjcwNzExQzE1LjA5NzYgOC4zMTY1OCAxNS4wOTc2IDcuNjgzNDIgMTQuNzA3MSA3LjI5Mjg5TDguMzQzMTUgMC45Mjg5MzJDNy45NTI2MiAwLjUzODQwOCA3LjMxOTQ2IDAuNTM4NDA4IDYuOTI4OTMgMC45Mjg5MzJDNi41Mzg0MSAxLjMxOTQ2IDYuNTM4NDEgMS45NTI2MiA2LjkyODkzIDIuMzQzMTVMMTIuNTg1OCA4TDYuOTI4OTMgMTMuNjU2OUM2LjUzODQxIDE0LjA0NzQgNi41Mzg0MSAxNC42ODA1IDYuOTI4OTMgMTUuMDcxMUM3LjMxOTQ2IDE1LjQ2MTYgNy45NTI2MiAxNS40NjE2IDguMzQzMTUgMTUuMDcxMUwxNC43MDcxIDguNzA3MTFaTTAgOFY5SDE0VjhWN0gwVjhaXCIgZmlsbD1cIiNEMEQ1RERcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgcC0wIHBzLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgY2hpcC1ib3hcIiBmb3JtQXJyYXlOYW1lPVwic3ViQ2F0ZWdvcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWNvbnRhaW5lciBmb3JtLWNvbnRyb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ2V0U3ViQ2F0ZWdvcnkoaSk/LmNvbnRyb2xzO2xldCBqPWluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWUtM1wiIFtuZ0NsYXNzXT1cImlzRWRpdCB8fCBjaGVja1VzZWQoaSkgPyAnZGlzYWJsZWRUZXh0JyA6ICcnXCI+e3tpdGVtLnZhbHVlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJpc0VkaXQgfHwgY2hlY2tVc2VkKGkpID8gJycgOiByZW1vdmVTdWJDYXRlZ29yeShpLGopXCIgW2NsYXNzXT1cImlzRWRpdCB8fCBjaGVja1VzZWQoaSkgPyAnJzonY3Vyc29yLXBvaW50ZXInXCI+PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkgM0wzIDlNMyAzTDkgOVwiIFthdHRyLnN0cm9rZV09XCJpc0VkaXQgfHwgY2hlY2tVc2VkKGkpID8gJyNhZWI0YzUnIDogJyM2NjcwODUnXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgc3R5bGU9XCJtaW4taGVpZ2h0OiA0NHB4O1wiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZHJvcGRvd24taW5wdXQgcHMtMyBtZS0zXCIgKGNoYW5nZSk9XCJhZGRTdWJDYXRlZ29yeSgkZXZlbnQsaSlcIiBbaWRdPVwiJ3N1YkNhdGVnb3J5SW5wdXQnK2lcIiBbZGlzYWJsZWRdPVwiaXNFZGl0IHx8IGNoZWNrVXNlZChpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cImNhdGVnb3J5XCIgLz4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTMgbXQtNFwiIChjbGljayk9XCJjaGVja1VzZWQoaSkgfHwgaXNFZGl0ID8gJycgOiByZW1vdmVCcmFuZChpKVwiICpuZ0lmPVwiYnJhbmRDb25maWcudmFsdWUubGVuZ3RoID4gMVwiIFtuZ0NsYXNzXT1cImNoZWNrVXNlZChpKSB8fCBpc0VkaXQgPyAnY3Vyc29yLWRlZmF1bHQnIDogJ2N1cnNvci1wb2ludGVyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTMuNSA0LjVMNC41IDEzLjVNNC41IDQuNUwxMy41IDEzLjVcIiBzdHJva2U9XCIjRDBENUREXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lXCIgKGNsaWNrKT1cImFkZEJyYW5kKClcIiBbZGlzYWJsZWRdPVwiaXNFZGl0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAuMDAwMSA0LjE2Njc1VjE1LjgzMzRNNC4xNjY3NSAxMC4wMDAxSDE1LjgzMzRcIiBzdHJva2U9XCIjRDBENUREXCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4gQWRkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZVwiICpuZ0lmPVwiaXNFZGl0XCIgKGNsaWNrKT1cImlzRWRpdCA9IGZhbHNlO2Zvcm1FbmFibGUoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE3NzVfMzc5ODUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE0LjE2NjcgMi40OTk5M0MxNC4zODU2IDIuMjgxMDYgMTQuNjQ1NSAyLjEwNzQ0IDE0LjkzMTQgMS45ODg5OUMxNS4yMTc0IDEuODcwNTQgMTUuNTIzOSAxLjgwOTU3IDE1LjgzMzQgMS44MDk1N0MxNi4xNDI5IDEuODA5NTcgMTYuNDQ5NCAxLjg3MDU0IDE2LjczNTQgMS45ODg5OUMxNy4wMjE0IDIuMTA3NDQgMTcuMjgxMiAyLjI4MTA2IDE3LjUwMDEgMi40OTk5M0MxNy43MTkgMi43MTg4IDE3Ljg5MjYgMi45Nzg2MyAxOC4wMTEgMy4yNjQ2QzE4LjEyOTUgMy41NTA1NyAxOC4xOTA0IDMuODU3MDYgMTguMTkwNCA0LjE2NjU5QzE4LjE5MDQgNC40NzYxMiAxOC4xMjk1IDQuNzgyNjIgMTguMDExIDUuMDY4NTlDMTcuODkyNiA1LjM1NDU1IDE3LjcxOSA1LjYxNDM5IDE3LjUwMDEgNS44MzMyNkw2LjI1MDA4IDE3LjA4MzNMMS42NjY3NSAxOC4zMzMzTDIuOTE2NzUgMTMuNzQ5OUwxNC4xNjY3IDIuNDk5OTNaXCIgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8xNzc1XzM3OTg1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPiBFZGl0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKm5nSWY9XCIhaXNFZGl0XCIgKGNsaWNrKT1cInVwZGF0ZUJyYW5kKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYXZlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZFRhYiA9PT0gJ2JyYW5kTWV0YSdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGdhcC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMz5CcmFuZCBNZXRhIERhdGE8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm1iLTBcIj5NYWludGFpbiB0aGUgUGlkIENhdCAmIzg1OTQ7IEJyYW5kIC8gQ2F0ZWdvcnkgLyBCYW5kIG1hcHBpbmcgdXNlZCBkdXJpbmcgcGxhbm9ncmFtIGV4cG9ydC48L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOjM2MHB4O2ZsZXgtc2hyaW5rOjBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlXCIgc3R5bGU9XCJsZWZ0OjEycHg7dG9wOjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTIxIDIxTDE2LjY1IDE2LjY1TTE5IDExQzE5IDE1LjQxODMgMTUuNDE4MyAxOSAxMSAxOUM2LjU4MTcyIDE5IDMgMTUuNDE4MyAzIDExQzMgNi41ODE3MiA2LjU4MTcyIDMgMTEgM0MxNS40MTgzIDMgMTkgNi41ODE3MiAxOSAxMVpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6MzhweFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoIFBpZCBDYXQsIFRlbXAgR3JvdXAsIENhdGVnb3J5LCBCcmFuZCBvciBCYW5kXCIgWyhuZ01vZGVsKV09XCJicmFuZE1ldGFTZWFyY2hcIiBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZW5kIG10LTFcIiAqbmdJZj1cImJyYW5kTWV0YURhdGE/LmNvbnRyb2xzPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtbXV0ZWRcIj57eyBmaWx0ZXJlZEJyYW5kTWV0YUNvdW50IH19IG9mIHt7IGJyYW5kTWV0YURhdGEuY29udHJvbHMubGVuZ3RoIH19IHJvdyhzKTwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiYnJhbmRNZXRhRm9ybVwiIGNsYXNzPVwibXQtM1wiICNicmFuZE1ldGFSZWY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZm9ybUFycmF5TmFtZT1cImJyYW5kTWV0YURhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXgtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMiBwLTAgcHMtMlwiPjxkaXYgY2xhc3M9XCJmb3JtLWxhYmVsXCI+UGlkIENhdDwvZGl2PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMiBwLTAgcHMtMlwiPjxkaXYgY2xhc3M9XCJmb3JtLWxhYmVsXCI+VGVtcCBHcm91cDwvZGl2PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBwLTAgcHMtMlwiPjxkaXYgY2xhc3M9XCJmb3JtLWxhYmVsXCI+Q2F0ZWdvcnk8L2Rpdj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgcC0wIHBzLTJcIj48ZGl2IGNsYXNzPVwiZm9ybS1sYWJlbFwiPkJyYW5kPC9kaXY+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yIHAtMCBwcy0yXCI+PGRpdiBjbGFzcz1cImZvcm0tbGFiZWxcIj5CYW5kPC9kaXY+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJoZWlnaHQ6Y2FsYyg3NXZoIC0gMjgwcHgpO292ZXJmbG93LXk6c2Nyb2xsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFicmFuZE1ldGFEYXRhPy5jb250cm9scz8ubGVuZ3RoXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwLTUgdGV4dC1tdXRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBObyBicmFuZCBtZXRhIGRhdGEgZm91bmQuIENsaWNrIFwiRWRpdFwiIHRoZW4gXCJBZGRcIiB0byBjcmVhdGUgYSByb3cuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImJyYW5kTWV0YURhdGE/LmNvbnRyb2xzPy5sZW5ndGggJiYgIWZpbHRlcmVkQnJhbmRNZXRhQ291bnRcIiBjbGFzcz1cInRleHQtY2VudGVyIHAtNSB0ZXh0LW11dGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vIHJvd3MgbWF0Y2ggXCJ7eyBicmFuZE1ldGFTZWFyY2ggfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG1ldGFHcm91cCBvZiBicmFuZE1ldGFEYXRhPy5jb250cm9sczsgbGV0IGkgPSBpbmRleFwiIFtmb3JtR3JvdXBOYW1lXT1cImlcIiBjbGFzcz1cInJvdyBtdC0zIG14LTBcIiBbaWRdPVwiJ21ldGFSb3cnICsgaVwiIFtoaWRkZW5dPVwiIW1hdGNoZXNCcmFuZE1ldGFTZWFyY2gobWV0YUdyb3VwKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTIgcC0wIHBzLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwicGlkQ2F0XCIgW2lkXT1cIidtZXRhUm93JyArIGkgKyAnLXBpZENhdCdcIiBbbmdDbGFzc109XCIhaXNCcmFuZE1ldGFFZGl0ICYmIG1ldGFHcm91cC5nZXQoJ3BpZENhdCcpPy5oYXNFcnJvcigncmVxdWlyZWQnKSAmJiBtZXRhR3JvdXAuZ2V0KCdwaWRDYXQnKT8udG91Y2hlZCA/ICdkYW5nZXInIDogJydcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTIgcC0wIHBzLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwidGVtcEdyb3VwXCIgW2lkXT1cIidtZXRhUm93JyArIGkgKyAnLXRlbXBHcm91cCdcIiBbbmdDbGFzc109XCIhaXNCcmFuZE1ldGFFZGl0ICYmIG1ldGFHcm91cC5nZXQoJ3RlbXBHcm91cCcpPy5oYXNFcnJvcigncmVxdWlyZWQnKSAmJiBtZXRhR3JvdXAuZ2V0KCd0ZW1wR3JvdXAnKT8udG91Y2hlZCA/ICdkYW5nZXInIDogJydcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgcC0wIHBzLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwiY2F0ZWdvcnlcIiBbaWRdPVwiJ21ldGFSb3cnICsgaSArICctY2F0ZWdvcnknXCIgW25nQ2xhc3NdPVwiIWlzQnJhbmRNZXRhRWRpdCAmJiBtZXRhR3JvdXAuZ2V0KCdjYXRlZ29yeScpPy5oYXNFcnJvcigncmVxdWlyZWQnKSAmJiBtZXRhR3JvdXAuZ2V0KCdjYXRlZ29yeScpPy50b3VjaGVkID8gJ2RhbmdlcicgOiAnJ1wiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBwLTAgcHMtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJicmFuZFwiIFtpZF09XCInbWV0YVJvdycgKyBpICsgJy1icmFuZCdcIiBbbmdDbGFzc109XCIhaXNCcmFuZE1ldGFFZGl0ICYmIG1ldGFHcm91cC5nZXQoJ2JyYW5kJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpICYmIG1ldGFHcm91cC5nZXQoJ2JyYW5kJyk/LnRvdWNoZWQgPyAnZGFuZ2VyJyA6ICcnXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yIHAtMCBwcy0yIGQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJiYW5kXCIgW2lkXT1cIidtZXRhUm93JyArIGkgKyAnLWJhbmQnXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTMgbXQtM1wiIChjbGljayk9XCJpc0JyYW5kTWV0YUVkaXQgPyAnJyA6IHJlbW92ZUJyYW5kTWV0YVJvdyhpKVwiIFtuZ0NsYXNzXT1cImlzQnJhbmRNZXRhRWRpdCA/ICdjdXJzb3ItZGVmYXVsdCcgOiAnY3Vyc29yLXBvaW50ZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTMuNSA0LjVMNC41IDEzLjVNNC41IDQuNUwxMy41IDEzLjVcIiBzdHJva2U9XCIjRDBENUREXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtdC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIiAoY2xpY2spPVwiYWRkQnJhbmRNZXRhUm93KClcIiBbZGlzYWJsZWRdPVwiaXNCcmFuZE1ldGFFZGl0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAuMDAwMSA0LjE2Njc1VjE1LjgzMzRNNC4xNjY3NSAxMC4wMDAxSDE1LjgzMzRcIiBzdHJva2U9XCIjRDBENUREXCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4gQWRkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZVwiICpuZ0lmPVwiIWlzQnJhbmRNZXRhRWRpdFwiIChjbGljayk9XCJjYW5jZWxCcmFuZE1ldGFFZGl0KClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIG1zLTJcIiAqbmdJZj1cImlzQnJhbmRNZXRhRWRpdFwiIChjbGljayk9XCJlbmFibGVCcmFuZE1ldGFGb3JtKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xNzc1XzM3OTkwKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNC4xNjY3IDIuNDk5OTNDMTQuMzg1NiAyLjI4MTA2IDE0LjY0NTUgMi4xMDc0NCAxNC45MzE0IDEuOTg4OTlDMTUuMjE3NCAxLjg3MDU0IDE1LjUyMzkgMS44MDk1NyAxNS44MzM0IDEuODA5NTdDMTYuMTQyOSAxLjgwOTU3IDE2LjQ0OTQgMS44NzA1NCAxNi43MzU0IDEuOTg4OTlDMTcuMDIxNCAyLjEwNzQ0IDE3LjI4MTIgMi4yODEwNiAxNy41MDAxIDIuNDk5OTNDMTcuNzE5IDIuNzE4OCAxNy44OTI2IDIuOTc4NjMgMTguMDExIDMuMjY0NkMxOC4xMjk1IDMuNTUwNTcgMTguMTkwNCAzLjg1NzA2IDE4LjE5MDQgNC4xNjY1OUMxOC4xOTA0IDQuNDc2MTIgMTguMTI5NSA0Ljc4MjYyIDE4LjAxMSA1LjA2ODU5QzE3Ljg5MjYgNS4zNTQ1NSAxNy43MTkgNS42MTQzOSAxNy41MDAxIDUuODMzMjZMNi4yNTAwOCAxNy4wODMzTDEuNjY2NzUgMTguMzMzM0wyLjkxNjc1IDEzLjc0OTlMMTQuMTY2NyAyLjQ5OTkzWlwiIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTc3NV8zNzk5MFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4gRWRpdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBtcy0yXCIgKm5nSWY9XCIhaXNCcmFuZE1ldGFFZGl0XCIgKGNsaWNrKT1cInVwZGF0ZUJyYW5kTWV0YURhdGEoKVwiPlNhdmU8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZFRhYiA9PT0gJ3Rhc2snXCIgPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMz5HbG9iYWwgY29uZmlndXJhdGlvbiBmb3IgdGFza3M8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cD5UaGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gYXBwbGllcyB0byBhbGwgcHVibGlzaGVkIHRhc2tzLjwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE3LjUgMTIuNVYxNS44MzMzQzE3LjUgMTYuMjc1NCAxNy4zMjQ0IDE2LjY5OTMgMTcuMDExOCAxNy4wMTE4QzE2LjY5OTMgMTcuMzI0NCAxNi4yNzU0IDE3LjUgMTUuODMzMyAxNy41SDQuMTY2NjdDMy43MjQ2NCAxNy41IDMuMzAwNzIgMTcuMzI0NCAyLjk4ODE2IDE3LjAxMThDMi42NzU1OSAxNi42OTkzIDIuNSAxNi4yNzU0IDIuNSAxNS44MzMzVjEyLjVNMTQuMTY2NyA2LjY2NjY3TDEwIDIuNU0xMCAyLjVMNS44MzMzMyA2LjY2NjY3TTEwIDIuNVYxMi41XCIgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+IFVwbG9hZCBCcmFuZHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyID5cclxuICAgICAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cInRhc2tGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHVlIGRheXMgKHRvIGNvbXBsZXRlIHRhc2spXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cImR1ZURheVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEdWUgdGltZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0aW1lXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJkdWVUaW1lXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVja2xpc3R0dXJub2ZmIG1zLTMgbXQtNCBmdi1wbHVnaW5zLWljb24tY29udGFpbmUgY29sLW1kLTggZGl2V2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG10LTNcIiB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJnZW9GZW5jaW5nXCIgW2NoZWNrZWRdPVwidGFza0Zvcm0uZ2V0KCdhbGxvd2VkU3RvcmVMb2NhdGlvbicpPy52YWx1ZVwiIGZvcm1Db250cm9sTmFtZT1cImFsbG93ZWRTdG9yZUxvY2F0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgc3ViXCIgW25nQ2xhc3NdPVwidGFza0Zvcm0uZ2V0KCdhbGxvd2VkU3RvcmVMb2NhdGlvbicpPy52YWx1ZSA/ICdhY3RpdmUnIDogJydcIiBmb3I9XCJnZW9GZW5jaW5nXCI+R2VvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZW5jaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+PGJyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIHN1YnRleHRcIiBbbmdDbGFzc109XCJ0YXNrRm9ybS5nZXQoJ2FsbG93ZWRTdG9yZUxvY2F0aW9uJyk/LnZhbHVlID8gJ2FjdGl2ZScgOiAnJ1wiIGZvcj1cImdlb0ZlbmNpbmdcIj5CeVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxpbmcsIHRoZSBjaGVja2xpc3QgY2FuIGJlIGZpbGxlZCBieSB0aGUgdXNlciBvbmx5IHdoZW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2lkZSB0aGUgc3RvcmUuPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtdC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZVwiICpuZ0lmPVwiaXNFZGl0XCIgKGNsaWNrKT1cImlzRWRpdCA9IGZhbHNlO3Rhc2tGb3JtLmVuYWJsZSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE3NzVfMzc5ODUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTQuMTY2NyAyLjQ5OTkzQzE0LjM4NTYgMi4yODEwNiAxNC42NDU1IDIuMTA3NDQgMTQuOTMxNCAxLjk4ODk5QzE1LjIxNzQgMS44NzA1NCAxNS41MjM5IDEuODA5NTcgMTUuODMzNCAxLjgwOTU3QzE2LjE0MjkgMS44MDk1NyAxNi40NDk0IDEuODcwNTQgMTYuNzM1NCAxLjk4ODk5QzE3LjAyMTQgMi4xMDc0NCAxNy4yODEyIDIuMjgxMDYgMTcuNTAwMSAyLjQ5OTkzQzE3LjcxOSAyLjcxODggMTcuODkyNiAyLjk3ODYzIDE4LjAxMSAzLjI2NDZDMTguMTI5NSAzLjU1MDU3IDE4LjE5MDQgMy44NTcwNiAxOC4xOTA0IDQuMTY2NTlDMTguMTkwNCA0LjQ3NjEyIDE4LjEyOTUgNC43ODI2MiAxOC4wMTEgNS4wNjg1OUMxNy44OTI2IDUuMzU0NTUgMTcuNzE5IDUuNjE0MzkgMTcuNTAwMSA1LjgzMzI2TDYuMjUwMDggMTcuMDgzM0wxLjY2Njc1IDE4LjMzMzNMMi45MTY3NSAxMy43NDk5TDE0LjE2NjcgMi40OTk5M1pcIiBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzE3NzVfMzc5ODVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4gRWRpdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAqbmdJZj1cIiFpc0VkaXRcIiAoY2xpY2spPVwidXBkYXRlVGFzaygpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYXZlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuIl19
|