tango-app-ui-store-builder 1.2.15 → 1.2.16
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/manage-store-plano/verification-feedback/zone-editable-fixture/zone-editable-fixture.component.mjs +33 -7
- package/esm2022/lib/components/plano-tools/delete-floor/delete-floor.component.mjs +3 -3
- package/esm2022/lib/components/plano-tools/delete-task/delete-task.component.mjs +10 -4
- package/esm2022/lib/components/plano-tools/swap-template/swap-template.component.mjs +3 -1
- package/esm2022/lib/components/popups/publish-plano-modal/publish-plano-modal.component.mjs +1 -1
- package/esm2022/lib/components/store-plano/store-plano.component.mjs +31 -6
- package/esm2022/lib/services/store-builder.service.mjs +1 -1
- package/esm2022/lib/tango-store-plano.module.mjs +5 -2
- package/fesm2022/tango-app-ui-store-builder.mjs +78 -16
- package/fesm2022/tango-app-ui-store-builder.mjs.map +1 -1
- package/lib/components/manage-store-plano/verification-feedback/zone-editable-fixture/zone-editable-fixture.component.d.ts +6 -0
- package/lib/components/plano-tools/delete-task/delete-task.component.d.ts +2 -0
- package/lib/components/store-plano/store-plano.component.d.ts +1 -0
- package/lib/services/store-builder.service.d.ts +4 -1
- package/lib/tango-store-plano.module.d.ts +1 -1
- package/package.json +1 -1
|
@@ -243,10 +243,10 @@ export class DeleteFloorComponent {
|
|
|
243
243
|
this.destroy$.complete();
|
|
244
244
|
}
|
|
245
245
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DeleteFloorComponent, deps: [{ token: i1.StoreBuilderService }, { token: i2.GlobalStateService }, { token: i3.NgbModal }], target: i0.ɵɵFactoryTarget.Component });
|
|
246
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DeleteFloorComponent, selector: "lib-delete-floor", ngImport: i0, template: "<section class=\"delete-floor p-3\">\
|
|
246
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DeleteFloorComponent, selector: "lib-delete-floor", ngImport: i0, template: "<section class=\"delete-floor p-3\">\n <div class=\"card p-4\" style=\"max-width: 720px;\">\n <h5 class=\"mb-1\">Delete Floor</h5>\n <p class=\"text-muted small mb-3\">\n Removes a floor and every row that references it \u2014 fixtures, shelves, task\n compliance, processed tasks, comments, and revisions. If this is the only\n floor, the entire planogram is removed. The store entry is never touched.\n </p>\n\n <!-- Store -->\n <div class=\"mb-3\">\n <lib-reactive-select\n label=\"Store\"\n [idField]=\"'storeId'\"\n [nameField]=\"'storeName'\"\n [data]=\"storeOptions\"\n [search]=\"true\"\n [ngModel]=\"selectedStoreId\"\n (ngModelChange)=\"onStoreSelected($event)\">\n </lib-reactive-select>\n <div class=\"text-muted small mt-1\" *ngIf=\"isLoadingStores\">Loading stores...</div>\n </div>\n\n <!-- Floor -->\n <div class=\"mb-3\" *ngIf=\"selectedStoreId\">\n <ng-container *ngIf=\"isLoadingFloors; else floorPicker\">\n <div class=\"text-muted small\">Loading floors...</div>\n </ng-container>\n <ng-template #floorPicker>\n <ng-container *ngIf=\"floors.length > 0; else noFloors\">\n <lib-reactive-select\n label=\"Floor\"\n [idField]=\"'_id'\"\n [nameField]=\"'displayName'\"\n [data]=\"floors\"\n [search]=\"true\"\n [ngModel]=\"selectedFloorId\"\n (ngModelChange)=\"onFloorSelected($event)\">\n </lib-reactive-select>\n </ng-container>\n <ng-template #noFloors>\n <div class=\"text-muted small\">No floors found for this store.</div>\n </ng-template>\n </ng-template>\n </div>\n\n <!-- Status + cascade preview -->\n <ng-container *ngIf=\"selectedFloorId\">\n <ng-container *ngIf=\"isLoadingImpact; else impactBlock\">\n <div class=\"text-muted small\">Loading floor details...</div>\n </ng-container>\n <ng-template #impactBlock>\n <ng-container *ngIf=\"impact\">\n <div class=\"mb-3 p-3 rounded info-block\">\n <div class=\"row gx-3 gy-2 small\">\n <div class=\"col-6\">\n <span class=\"text-muted d-block\">Floor status</span>\n <span class=\"fw-semibold\">{{ formatStatus(impact.floor.status) }}</span>\n </div>\n <div class=\"col-6\">\n <span class=\"text-muted d-block\">Planogram status</span>\n <span class=\"fw-semibold\">{{ formatStatus(impact.planogram.status) }}</span>\n </div>\n <div class=\"col-6\">\n <span class=\"text-muted d-block\">Plano approved</span>\n <span class=\"fw-semibold\">{{ formatBool(impact.floor.isPlanoApproved) }}</span>\n </div>\n <div class=\"col-6\">\n <span class=\"text-muted d-block\">Verification done</span>\n <span class=\"fw-semibold\">{{ formatBool(impact.floor.verificationStatus) }}</span>\n </div>\n <div class=\"col-6\">\n <span class=\"text-muted d-block\">Merch rollout done</span>\n <span class=\"fw-semibold\">{{ formatBool(impact.floor.merchRolloutStatus) }}</span>\n </div>\n <div class=\"col-6\">\n <span class=\"text-muted d-block\">VM rollout done</span>\n <span class=\"fw-semibold\">{{ formatBool(impact.floor.vmRolloutStatus) }}</span>\n </div>\n <div class=\"col-12\">\n <span class=\"text-muted d-block\">Total floors in this planogram</span>\n <span class=\"fw-semibold\">{{ impact.totalFloors }}</span>\n </div>\n </div>\n </div>\n\n <div class=\"mb-3 p-3 rounded cascade-block\">\n <div class=\"fw-semibold mb-2\">Will delete</div>\n <ul class=\"small mb-0 ps-3\">\n <li>1 floor (storelayouts)</li>\n <li>{{ impact.cascade.storefixtures }} fixture(s) (storefixtures)</li>\n <li>{{ impact.cascade.fixtureshelves }} shelf row(s) (fixtureshelves)</li>\n <li>{{ impact.cascade.planotaskcompliances }} task compliance row(s) (planotaskcompliances)</li>\n <li>{{ impact.cascade.processedtasks }} processed task(s) (processedtasks)</li>\n <li>{{ impact.cascade.planoglobalcomments }} global comment(s) (planoglobalcomments)</li>\n <li>{{ impact.cascade.planorevisions }} revision(s) (planorevisions)</li>\n </ul>\n <div class=\"text-muted small mt-2\">Total downstream rows: {{ totalCascadeRows }}</div>\n </div>\n\n <div class=\"alert alert-warning small\" *ngIf=\"impact.isLastFloor\">\n <strong>This is the only floor in this planogram.</strong>\n Deleting it will also remove the planogram entry \u2014 the plano will\n disappear completely. The store record itself will NOT be deleted.\n </div>\n </ng-container>\n </ng-template>\n </ng-container>\n\n <!-- Submit -->\n <button class=\"btn btn-danger\" (click)=\"onSubmit()\" [disabled]=\"!canSubmit\">\n {{ isSubmitting ? 'Deleting...' : 'Delete Floor' }}\n </button>\n\n <div class=\"mt-3 alert\" *ngIf=\"message\"\n [class.alert-success]=\"messageType === 'success'\"\n [class.alert-danger]=\"messageType === 'error'\"\n style=\"white-space: pre-line;\">\n {{ message }}\n </div>\n </div>\n</section>\n", styles: [".delete-floor .info-block{background-color:#f9fafb;border:1px solid #e4e7ec}.delete-floor .cascade-block{background-color:#fff7ed;border:1px solid #fed7aa}\n"], dependencies: [{ kind: "component", type: i4.ReactiveSelectComponent, selector: "lib-reactive-select", inputs: ["idField", "nameField", "subTextField", "searchField", "label", "data", "action", "search", "prefix", "actionLabel", "disabled"], outputs: ["actionClick"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
247
247
|
}
|
|
248
248
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DeleteFloorComponent, decorators: [{
|
|
249
249
|
type: Component,
|
|
250
|
-
args: [{ selector: "lib-delete-floor", template: "<section class=\"delete-floor p-3\">\
|
|
250
|
+
args: [{ selector: "lib-delete-floor", template: "<section class=\"delete-floor p-3\">\n <div class=\"card p-4\" style=\"max-width: 720px;\">\n <h5 class=\"mb-1\">Delete Floor</h5>\n <p class=\"text-muted small mb-3\">\n Removes a floor and every row that references it \u2014 fixtures, shelves, task\n compliance, processed tasks, comments, and revisions. If this is the only\n floor, the entire planogram is removed. The store entry is never touched.\n </p>\n\n <!-- Store -->\n <div class=\"mb-3\">\n <lib-reactive-select\n label=\"Store\"\n [idField]=\"'storeId'\"\n [nameField]=\"'storeName'\"\n [data]=\"storeOptions\"\n [search]=\"true\"\n [ngModel]=\"selectedStoreId\"\n (ngModelChange)=\"onStoreSelected($event)\">\n </lib-reactive-select>\n <div class=\"text-muted small mt-1\" *ngIf=\"isLoadingStores\">Loading stores...</div>\n </div>\n\n <!-- Floor -->\n <div class=\"mb-3\" *ngIf=\"selectedStoreId\">\n <ng-container *ngIf=\"isLoadingFloors; else floorPicker\">\n <div class=\"text-muted small\">Loading floors...</div>\n </ng-container>\n <ng-template #floorPicker>\n <ng-container *ngIf=\"floors.length > 0; else noFloors\">\n <lib-reactive-select\n label=\"Floor\"\n [idField]=\"'_id'\"\n [nameField]=\"'displayName'\"\n [data]=\"floors\"\n [search]=\"true\"\n [ngModel]=\"selectedFloorId\"\n (ngModelChange)=\"onFloorSelected($event)\">\n </lib-reactive-select>\n </ng-container>\n <ng-template #noFloors>\n <div class=\"text-muted small\">No floors found for this store.</div>\n </ng-template>\n </ng-template>\n </div>\n\n <!-- Status + cascade preview -->\n <ng-container *ngIf=\"selectedFloorId\">\n <ng-container *ngIf=\"isLoadingImpact; else impactBlock\">\n <div class=\"text-muted small\">Loading floor details...</div>\n </ng-container>\n <ng-template #impactBlock>\n <ng-container *ngIf=\"impact\">\n <div class=\"mb-3 p-3 rounded info-block\">\n <div class=\"row gx-3 gy-2 small\">\n <div class=\"col-6\">\n <span class=\"text-muted d-block\">Floor status</span>\n <span class=\"fw-semibold\">{{ formatStatus(impact.floor.status) }}</span>\n </div>\n <div class=\"col-6\">\n <span class=\"text-muted d-block\">Planogram status</span>\n <span class=\"fw-semibold\">{{ formatStatus(impact.planogram.status) }}</span>\n </div>\n <div class=\"col-6\">\n <span class=\"text-muted d-block\">Plano approved</span>\n <span class=\"fw-semibold\">{{ formatBool(impact.floor.isPlanoApproved) }}</span>\n </div>\n <div class=\"col-6\">\n <span class=\"text-muted d-block\">Verification done</span>\n <span class=\"fw-semibold\">{{ formatBool(impact.floor.verificationStatus) }}</span>\n </div>\n <div class=\"col-6\">\n <span class=\"text-muted d-block\">Merch rollout done</span>\n <span class=\"fw-semibold\">{{ formatBool(impact.floor.merchRolloutStatus) }}</span>\n </div>\n <div class=\"col-6\">\n <span class=\"text-muted d-block\">VM rollout done</span>\n <span class=\"fw-semibold\">{{ formatBool(impact.floor.vmRolloutStatus) }}</span>\n </div>\n <div class=\"col-12\">\n <span class=\"text-muted d-block\">Total floors in this planogram</span>\n <span class=\"fw-semibold\">{{ impact.totalFloors }}</span>\n </div>\n </div>\n </div>\n\n <div class=\"mb-3 p-3 rounded cascade-block\">\n <div class=\"fw-semibold mb-2\">Will delete</div>\n <ul class=\"small mb-0 ps-3\">\n <li>1 floor (storelayouts)</li>\n <li>{{ impact.cascade.storefixtures }} fixture(s) (storefixtures)</li>\n <li>{{ impact.cascade.fixtureshelves }} shelf row(s) (fixtureshelves)</li>\n <li>{{ impact.cascade.planotaskcompliances }} task compliance row(s) (planotaskcompliances)</li>\n <li>{{ impact.cascade.processedtasks }} processed task(s) (processedtasks)</li>\n <li>{{ impact.cascade.planoglobalcomments }} global comment(s) (planoglobalcomments)</li>\n <li>{{ impact.cascade.planorevisions }} revision(s) (planorevisions)</li>\n </ul>\n <div class=\"text-muted small mt-2\">Total downstream rows: {{ totalCascadeRows }}</div>\n </div>\n\n <div class=\"alert alert-warning small\" *ngIf=\"impact.isLastFloor\">\n <strong>This is the only floor in this planogram.</strong>\n Deleting it will also remove the planogram entry \u2014 the plano will\n disappear completely. The store record itself will NOT be deleted.\n </div>\n </ng-container>\n </ng-template>\n </ng-container>\n\n <!-- Submit -->\n <button class=\"btn btn-danger\" (click)=\"onSubmit()\" [disabled]=\"!canSubmit\">\n {{ isSubmitting ? 'Deleting...' : 'Delete Floor' }}\n </button>\n\n <div class=\"mt-3 alert\" *ngIf=\"message\"\n [class.alert-success]=\"messageType === 'success'\"\n [class.alert-danger]=\"messageType === 'error'\"\n style=\"white-space: pre-line;\">\n {{ message }}\n </div>\n </div>\n</section>\n", styles: [".delete-floor .info-block{background-color:#f9fafb;border:1px solid #e4e7ec}.delete-floor .cascade-block{background-color:#fff7ed;border:1px solid #fed7aa}\n"] }]
|
|
251
251
|
}], ctorParameters: () => [{ type: i1.StoreBuilderService }, { type: i2.GlobalStateService }, { type: i3.NgbModal }] });
|
|
252
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLWZsb29yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLWJ1aWxkZXIvc3JjL2xpYi9jb21wb25lbnRzL3BsYW5vLXRvb2xzL2RlbGV0ZS1mbG9vci9kZWxldGUtZmxvb3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtYnVpbGRlci9zcmMvbGliL2NvbXBvbmVudHMvcGxhbm8tdG9vbHMvZGVsZXRlLWZsb29yL2RlbGV0ZS1mbG9vci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBQ0wsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sT0FBTyxFQUNQLFNBQVMsR0FDVixNQUFNLE1BQU0sQ0FBQztBQUdkLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDOzs7Ozs7OztBQW1EN0csTUFBTSxPQUFPLG9CQUFvQjtJQXNCckI7SUFDQTtJQUNBO0lBdkJWLFFBQVEsQ0FBUztJQUVqQixZQUFZLEdBQWtCLEVBQUUsQ0FBQztJQUNqQyxlQUFlLEdBQWtCLElBQUksQ0FBQztJQUN0QyxpQkFBaUIsR0FBa0IsSUFBSSxDQUFDO0lBQ3hDLGVBQWUsR0FBWSxLQUFLLENBQUM7SUFFakMsTUFBTSxHQUFrQixFQUFFLENBQUM7SUFDM0IsZUFBZSxHQUFrQixJQUFJLENBQUM7SUFDdEMsZUFBZSxHQUFZLEtBQUssQ0FBQztJQUVqQyxNQUFNLEdBQXVCLElBQUksQ0FBQztJQUNsQyxlQUFlLEdBQVksS0FBSyxDQUFDO0lBRWpDLFlBQVksR0FBWSxLQUFLLENBQUM7SUFDOUIsT0FBTyxHQUFXLEVBQUUsQ0FBQztJQUNyQixXQUFXLEdBQXdCLFNBQVMsQ0FBQztJ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TyxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7d0dBM1JVLG9CQUFvQjs0RkFBcEIsb0JBQW9CLHdEQzlEakMsaXZMQTBIQTs7NEZENURhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuaW1wb3J0IHtcclxuICBkZWJvdW5jZVRpbWUsXHJcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXHJcbiAgZmlsdGVyLFxyXG4gIFN1YmplY3QsXHJcbiAgdGFrZVVudGlsLFxyXG59IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gXCJ0YW5nby1hcHAtdWktZ2xvYmFsXCI7XHJcbmltcG9ydCB7IFN0b3JlQnVpbGRlclNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvc3RvcmUtYnVpbGRlci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IERlbGV0ZUNvbmZpcm1hdGlvbkNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9wb3B1cHMvZGVsZXRlLWNvbmZpcm1hdGlvbi9kZWxldGUtY29uZmlybWF0aW9uLmNvbXBvbmVudFwiO1xyXG5cclxuaW50ZXJmYWNlIFN0b3JlT3B0aW9uIHtcclxuICBzdG9yZUlkOiBzdHJpbmc7XHJcbiAgc3RvcmVOYW1lOiBzdHJpbmc7XHJcbn1cclxuXHJcbmludGVyZmFjZSBGbG9vck9wdGlvbiB7XHJcbiAgX2lkOiBzdHJpbmc7XHJcbiAgZmxvb3JOdW1iZXI6IG51bWJlcjtcclxuICBmbG9vck5hbWU6IHN0cmluZztcclxuICBkaXNwbGF5TmFtZTogc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgRmxvb3JJbXBhY3Qge1xyXG4gIGZsb29yOiB7XHJcbiAgICBfaWQ6IHN0cmluZztcclxuICAgIGZsb29yTnVtYmVyOiBudW1iZXI7XHJcbiAgICBmbG9vck5hbWU6IHN0cmluZztcclxuICAgIHN0YXR1czogc3RyaW5nO1xyXG4gICAgaXNQbGFub0FwcHJvdmVkPzogYm9vbGVhbjtcclxuICAgIHZlcmlmaWNhdGlvblN0YXR1cz86IGJvb2xlYW47XHJcbiAgICBtZXJjaFJvbGxvdXRTdGF0dXM/OiBib29sZWFuO1xyXG4gICAgdm1Sb2xsb3V0U3RhdHVzPzogYm9vbGVhbjtcclxuICAgIHBsYW5vUHJvZ3Jlc3M/OiBudW1iZXI7XHJcbiAgfTtcclxuICBwbGFub2dyYW06IHtcclxuICAgIF9pZDogc3RyaW5nO1xyXG4gICAgc3RvcmVOYW1lOiBzdHJpbmc7XHJcbiAgICBzdG9yZUlkOiBzdHJpbmc7XHJcbiAgICBzdGF0dXM/OiBzdHJpbmc7XHJcbiAgICBsYXlvdXROYW1lPzogc3RyaW5nO1xyXG4gIH07XHJcbiAgdG90YWxGbG9vcnM6IG51bWJlcjtcclxuICBpc0xhc3RGbG9vcjogYm9vbGVhbjtcclxuICB3aWxsRGVsZXRlUGxhbm9ncmFtOiBib29sZWFuO1xyXG4gIGNhc2NhZGU6IHtcclxuICAgIHN0b3JlZml4dHVyZXM6IG51bWJlcjtcclxuICAgIGZpeHR1cmVzaGVsdmVzOiBudW1iZXI7XHJcbiAgICBwbGFub3Rhc2tjb21wbGlhbmNlczogbnVtYmVyO1xyXG4gICAgcHJvY2Vzc2VkdGFza3M6IG51bWJlcjtcclxuICAgIHBsYW5vZ2xvYmFsY29tbWVudHM6IG51bWJlcjtcclxuICAgIHBsYW5vcmV2aXNpb25zOiBudW1iZXI7XHJcbiAgfTtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwibGliLWRlbGV0ZS1mbG9vclwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vZGVsZXRlLWZsb29yLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmw6IFwiLi9kZWxldGUtZmxvb3IuY29tcG9uZW50LnNjc3NcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIERlbGV0ZUZsb29yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIGNsaWVudElkOiBzdHJpbmc7XHJcblxyXG4gIHN0b3JlT3B0aW9uczogU3RvcmVPcHRpb25bXSA9IFtdO1xyXG4gIHNlbGVjdGVkU3RvcmVJZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgc2VsZWN0ZWRTdG9yZU5hbWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIGlzTG9hZGluZ1N0b3JlczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBmbG9vcnM6IEZsb29yT3B0aW9uW10gPSBbXTtcclxuICBzZWxlY3RlZEZsb29ySWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIGlzTG9hZGluZ0Zsb29yczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBpbXBhY3Q6IEZsb29ySW1wYWN0IHwgbnVsbCA9IG51bGw7XHJcbiAgaXNMb2FkaW5nSW1wYWN0OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGlzU3VibWl0dGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG1lc3NhZ2U6IHN0cmluZyA9IFwiXCI7XHJcbiAgbWVzc2FnZVR5cGU6IFwic3VjY2Vzc1wiIHwgXCJlcnJvclwiID0gXCJzdWNjZXNzXCI7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgc2JzOiBTdG9yZUJ1aWxkZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBnczogR2xvYmFsU3RhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLFxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcclxuICAgICAgICBkZWJvdW5jZVRpbWUoMjAwKSxcclxuICAgICAgICBmaWx0ZXIoKGRhdGEpID0+ICEhZGF0YSksXHJcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YT8uY2xpZW50KSB7XHJcbiAgICAgICAgICB0aGlzLmNsaWVudElkID0gZGF0YS5jbGllbnQ7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IGhlYWRlckRhdGEgPSBKU09OLnBhcnNlKFxyXG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImhlYWRlci1maWx0ZXJzXCIpIGFzIHN0cmluZyxcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLmNsaWVudElkID0gaGVhZGVyRGF0YT8uY2xpZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJlc2V0QWxsKCk7XHJcbiAgICAgICAgdGhpcy5sb2FkU3RvcmVzKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbG9hZFN0b3JlcygpIHtcclxuICAgIGlmICghdGhpcy5jbGllbnRJZCkgcmV0dXJuO1xyXG4gICAgdGhpcy5pc0xvYWRpbmdTdG9yZXMgPSB0cnVlO1xyXG4gICAgdGhpcy5zYnMuZ2V0QWxsU3RvcmVzKHRoaXMuY2xpZW50SWQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3RvcmVPcHRpb25zID0gKHJlcz8uZGF0YSB8fCBbXSkubWFwKChzOiBhbnkpID0+ICh7XHJcbiAgICAgICAgICBzdG9yZUlkOiBzLnN0b3JlSWQsXHJcbiAgICAgICAgICBzdG9yZU5hbWU6IHMuc3RvcmVOYW1lLFxyXG4gICAgICAgIH0pKTtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZ1N0b3JlcyA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zaG93TWVzc2FnZShcclxuICAgICAgICAgIGVycj8uZXJyb3I/Lm1lc3NhZ2UgfHwgXCJGYWlsZWQgdG8gbG9hZCBzdG9yZXMuXCIsXHJcbiAgICAgICAgICBcImVycm9yXCIsXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZ1N0b3JlcyA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblN0b3JlU2VsZWN0ZWQoc3RvcmVJZDogc3RyaW5nIHwgbnVsbCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFN0b3JlSWQgPSBzdG9yZUlkO1xyXG4gICAgY29uc3Qgc3RvcmUgPSB0aGlzLnN0b3JlT3B0aW9ucy5maW5kKChzKSA9PiBzLnN0b3JlSWQgPT09IHN0b3JlSWQpO1xyXG4gICAgdGhpcy5zZWxlY3RlZFN0b3JlTmFtZSA9IHN0b3JlPy5zdG9yZU5hbWUgPz8gbnVsbDtcclxuICAgIHRoaXMucmVzZXRGbG9vclN0YXRlKCk7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZFN0b3JlSWQpIHtcclxuICAgICAgdGhpcy5sb2FkRmxvb3JzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc2V0Rmxvb3JTdGF0ZSgpIHtcclxuICAgIHRoaXMuZmxvb3JzID0gW107XHJcbiAgICB0aGlzLnNlbGVjdGVkRmxvb3JJZCA9IG51bGw7XHJcbiAgICB0aGlzLmltcGFjdCA9IG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc2V0QWxsKCkge1xyXG4gICAgdGhpcy5zdG9yZU9wdGlvbnMgPSBbXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRTdG9yZUlkID0gbnVsbDtcclxuICAgIHRoaXMuc2VsZWN0ZWRTdG9yZU5hbWUgPSBudWxsO1xyXG4gICAgdGhpcy5yZXNldEZsb29yU3RhdGUoKTtcclxuICB9XHJcblxyXG4gIGxvYWRGbG9vcnMoKSB7XHJcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRTdG9yZUlkKSByZXR1cm47XHJcbiAgICB0aGlzLmlzTG9hZGluZ0Zsb29ycyA9IHRydWU7XHJcbiAgICB0aGlzLnNicy5nZXRTdG9yZUZsb29yc0xpc3QodGhpcy5zZWxlY3RlZFN0b3JlSWQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJhdzogYW55W10gPSByZXM/LmRhdGEgfHwgW107XHJcbiAgICAgICAgdGhpcy5mbG9vcnMgPSByYXdcclxuICAgICAgICAgIC5tYXAoKGYpID0+ICh7XHJcbiAgICAgICAgICAgIF9pZDogZi5faWQsXHJcbiAgICAgICAgICAgIGZsb29yTnVtYmVyOiBmLmZsb29yTnVtYmVyLFxyXG4gICAgICAgICAgICBmbG9vck5hbWU6IGYuZmxvb3JOYW1lLFxyXG4gICAgICAgICAgICBkaXNwbGF5TmFtZTogYEZsb29yICR7Zi5mbG9vck51bWJlcn0g4oCUICR7Zi5mbG9vck5hbWV9YCxcclxuICAgICAgICAgIH0pKVxyXG4gICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEuZmxvb3JOdW1iZXIgLSBiLmZsb29yTnVtYmVyKTtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZ0Zsb29ycyA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zaG93TWVzc2FnZShcclxuICAgICAgICAgIGVycj8uZXJyb3I/Lm1lc3NhZ2UgfHwgXCJGYWlsZWQgdG8gbG9hZCBmbG9vcnMuXCIsXHJcbiAgICAgICAgICBcImVycm9yXCIsXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZ0Zsb29ycyA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkZsb29yU2VsZWN0ZWQoZmxvb3JJZDogc3RyaW5nIHwgbnVsbCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZEZsb29ySWQgPSBmbG9vcklkO1xyXG4gICAgdGhpcy5pbXBhY3QgPSBudWxsO1xyXG4gICAgaWYgKGZsb29ySWQpIHtcclxuICAgICAgdGhpcy5sb2FkSW1wYWN0KGZsb29ySWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkSW1wYWN0KGZsb29ySWQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5pc0xvYWRpbmdJbXBhY3QgPSB0cnVlO1xyXG4gICAgdGhpcy5zYnMuZ2V0Rmxvb3JEZWxldGVJbXBhY3QoeyBmbG9vcklkIH0pLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuaW1wYWN0ID0gcmVzPy5kYXRhIHx8IG51bGw7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmdJbXBhY3QgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2hvd01lc3NhZ2UoXHJcbiAgICAgICAgICBlcnI/LmVycm9yPy5tZXNzYWdlIHx8IFwiRmFpbGVkIHRvIGxvYWQgZmxvb3IgZGV0YWlscy5cIixcclxuICAgICAgICAgIFwiZXJyb3JcIixcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nSW1wYWN0ID0gZmFsc2U7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGZvcm1hdFN0YXR1cyhzdGF0dXM6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFzdGF0dXMpIHJldHVybiBcIi0tXCI7XHJcbiAgICBjb25zdCBtYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XHJcbiAgICAgIGRyYWZ0OiBcIkRyYWZ0XCIsXHJcbiAgICAgIGFsbG9jYXRpb25QZW5kaW5nOiBcIkFsbG9jYXRpb24gUGVuZGluZ1wiLFxyXG4gICAgICBjb21wbGV0ZWQ6IFwiQ29tcGxldGVkXCIsXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIG1hcFtzdGF0dXNdIHx8IHN0YXR1cztcclxuICB9XHJcblxyXG4gIGZvcm1hdEJvb2wodjogYm9vbGVhbiB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdiA/IFwiWWVzXCIgOiBcIk5vXCI7XHJcbiAgfVxyXG5cclxuICBnZXQgdG90YWxDYXNjYWRlUm93cygpOiBudW1iZXIge1xyXG4gICAgaWYgKCF0aGlzLmltcGFjdCkgcmV0dXJuIDA7XHJcbiAgICBjb25zdCBjID0gdGhpcy5pbXBhY3QuY2FzY2FkZTtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIGMuc3RvcmVmaXh0dXJlcyArXHJcbiAgICAgIGMuZml4dHVyZXNoZWx2ZXMgK1xyXG4gICAgICBjLnBsYW5vdGFza2NvbXBsaWFuY2VzICtcclxuICAgICAgYy5wcm9jZXNzZWR0YXNrcyArXHJcbiAgICAgIGMucGxhbm9nbG9iYWxjb21tZW50cyArXHJcbiAgICAgIGMucGxhbm9yZXZpc2lvbnNcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXQgY2FuU3VibWl0KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgISF0aGlzLnNlbGVjdGVkRmxvb3JJZCAmJlxyXG4gICAgICAhIXRoaXMuaW1wYWN0ICYmXHJcbiAgICAgICF0aGlzLmlzU3VibWl0dGluZyAmJlxyXG4gICAgICAhdGhpcy5pc0xvYWRpbmdJbXBhY3RcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBvblN1Ym1pdCgpIHtcclxuICAgIGlmICghdGhpcy5jYW5TdWJtaXQgfHwgIXRoaXMuaW1wYWN0KSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgaXNMYXN0ID0gdGhpcy5pbXBhY3QuaXNMYXN0Rmxvb3I7XHJcbiAgICBjb25zdCBmbG9vciA9IHRoaXMuaW1wYWN0LmZsb29yO1xyXG4gICAgY29uc3QgcGxhbm8gPSB0aGlzLmltcGFjdC5wbGFub2dyYW07XHJcbiAgICBjb25zdCBjID0gdGhpcy5pbXBhY3QuY2FzY2FkZTtcclxuXHJcbiAgICBjb25zdCBzdW1tYXJ5OiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgc3VtbWFyeS5wdXNoKGBTdG9yZTogJHtwbGFuby5zdG9yZU5hbWUgPz8gXCItLVwifWApO1xyXG4gICAgc3VtbWFyeS5wdXNoKFxyXG4gICAgICBgRmxvb3IgJHtmbG9vci5mbG9vck51bWJlcn0g4oCUICR7Zmxvb3IuZmxvb3JOYW1lfSBbJHt0aGlzLmZvcm1hdFN0YXR1cyhmbG9vci5zdGF0dXMpfV1gLFxyXG4gICAgKTtcclxuICAgIHN1bW1hcnkucHVzaChcclxuICAgICAgYENhc2NhZGU6ICR7Yy5zdG9yZWZpeHR1cmVzfSBmaXh0dXJlcywgJHtjLmZpeHR1cmVzaGVsdmVzfSBzaGVsdmVzLCAke2MucGxhbm90YXNrY29tcGxpYW5jZXN9IGNvbXBsaWFuY2UsICR7Yy5wcm9jZXNzZWR0YXNrc30gdGFzayhzKSwgJHtjLnBsYW5vZ2xvYmFsY29tbWVudHN9IGNvbW1lbnQocyksICR7Yy5wbGFub3JldmlzaW9uc30gcmV2aXNpb24ocylgLFxyXG4gICAgKTtcclxuICAgIGlmIChpc0xhc3QpIHtcclxuICAgICAgc3VtbWFyeS5wdXNoKFxyXG4gICAgICAgIFwiVGhpcyBpcyB0aGUgT05MWSBmbG9vciBpbiB0aGlzIHBsYW5vZ3JhbS4gRGVsZXRpbmcgaXQgd2lsbCBSRU1PVkUgVEhFIEVOVElSRSBQTEFOT0dSQU0uIFRoZSBzdG9yZSBlbnRyeSBpdHNlbGYgd2lsbCBub3QgYmUgdG91Y2hlZC5cIixcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHN1bW1hcnkucHVzaChcIlRoaXMgYWN0aW9uIGNhbm5vdCBiZSB1bmRvbmUuXCIpO1xyXG5cclxuICAgIGNvbnN0IGZpcnN0VGl0bGUgPSBpc0xhc3RcclxuICAgICAgPyBcIkRlbGV0ZSBwbGFub2dyYW0gZW50aXJlbHk/XCJcclxuICAgICAgOiBcIkRlbGV0ZSB0aGlzIGZsb29yP1wiO1xyXG4gICAgY29uc3QgY29uZmlybWVkID0gYXdhaXQgdGhpcy5jb25maXJtKGZpcnN0VGl0bGUsIHN1bW1hcnkuam9pbihcIlxcblwiKSk7XHJcbiAgICBpZiAoIWNvbmZpcm1lZCkgcmV0dXJuO1xyXG5cclxuICAgIGlmIChpc0xhc3QpIHtcclxuICAgICAgY29uc3QgZG91YmxlQ29uZmlybWVkID0gYXdhaXQgdGhpcy5jb25maXJtKFxyXG4gICAgICAgIFwiRmluYWwgY29uZmlybWF0aW9uXCIsXHJcbiAgICAgICAgYFlvdSBhcmUgYWJvdXQgdG8gcGVybWFuZW50bHkgZGVsZXRlIHRoZSBwbGFub2dyYW0gZm9yIFwiJHtwbGFuby5zdG9yZU5hbWV9XCIuIFRoaXMgd2lwZXMgdGhlIGZsb29yIGFuZCB0aGUgcGxhbm9ncmFtIG1ldGFkYXRhLiBUaGUgc3RvcmUgaXMgcHJlc2VydmVkLiBQcm9jZWVkP2AsXHJcbiAgICAgICk7XHJcbiAgICAgIGlmICghZG91YmxlQ29uZmlybWVkKSByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pc1N1Ym1pdHRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5zYnNcclxuICAgICAgLmRlbGV0ZUZsb29yQ2FzY2FkZSh7XHJcbiAgICAgICAgZmxvb3JJZDogdGhpcy5zZWxlY3RlZEZsb29ySWQhLFxyXG4gICAgICAgIGNvbmZpcm1MYXN0Rmxvb3I6IGlzTGFzdCxcclxuICAgICAgfSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBkYXRhID0gcmVzPy5kYXRhIHx8IHt9O1xyXG4gICAgICAgICAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgICAgICBpZiAoZGF0YS5wbGFub2dyYW1EZWxldGVkKSB7XHJcbiAgICAgICAgICAgIHBhcnRzLnB1c2goXCJQbGFub2dyYW0gcmVtb3ZlZCBlbnRpcmVseVwiKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHBhcnRzLnB1c2goXCJGbG9vciBkZWxldGVkXCIpO1xyXG4gICAgICAgICAgICBpZiAoZGF0YS5yZW51bWJlcmVkRmxvb3JzPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICBwYXJ0cy5wdXNoKFxyXG4gICAgICAgICAgICAgICAgYCR7ZGF0YS5yZW51bWJlcmVkRmxvb3JzLmxlbmd0aH0gc2libGluZyBmbG9vcihzKSByZW51bWJlcmVkYCxcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBkYyA9IGRhdGEuZGVsZXRlZENvdW50cyB8fCB7fTtcclxuICAgICAgICAgIHBhcnRzLnB1c2goXHJcbiAgICAgICAgICAgIGBDbGVhbmVkOiAke2RjLnN0b3JlZml4dHVyZXMgfHwgMH0gZml4dHVyZXMsICR7ZGMuZml4dHVyZXNoZWx2ZXMgfHwgMH0gc2hlbHZlcywgJHtkYy5wbGFub3Rhc2tjb21wbGlhbmNlcyB8fCAwfSBjb21wbGlhbmNlLCAke2RjLnByb2Nlc3NlZHRhc2tzIHx8IDB9IHRhc2socyksICR7ZGMucGxhbm9nbG9iYWxjb21tZW50cyB8fCAwfSBjb21tZW50KHMpLCAke2RjLnBsYW5vcmV2aXNpb25zIHx8IDB9IHJldmlzaW9uKHMpYCxcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLnNob3dNZXNzYWdlKHBhcnRzLmpvaW4oXCIuIFwiKSwgXCJzdWNjZXNzXCIpO1xyXG4gICAgICAgICAgdGhpcy5pc1N1Ym1pdHRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucmVzZXRGbG9vclN0YXRlKCk7XHJcbiAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFN0b3JlSWQpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkRmxvb3JzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNob3dNZXNzYWdlKFxyXG4gICAgICAgICAgICBlcnI/LmVycm9yPy5tZXNzYWdlIHx8IFwiRmFpbGVkIHRvIGRlbGV0ZSBmbG9vci5cIixcclxuICAgICAgICAgICAgXCJlcnJvclwiLFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMuaXNTdWJtaXR0aW5nID0gZmFsc2U7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGNvbmZpcm0odGl0bGU6IHN0cmluZywgZGVzY3JpcHRpb246IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgcmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihEZWxldGVDb25maXJtYXRpb25Db21wb25lbnQsIHtcclxuICAgICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICAgfSk7XHJcbiAgICAgIHJlZi5jb21wb25lbnRJbnN0YW5jZS50aXRsZSA9IHRpdGxlO1xyXG4gICAgICByZWYuY29tcG9uZW50SW5zdGFuY2UuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjtcclxuICAgICAgcmVmLmNvbXBvbmVudEluc3RhbmNlLmNvbmZpcm1MYWJlbCA9IFwiRGVsZXRlXCI7XHJcbiAgICAgIHJlZi5jb21wb25lbnRJbnN0YW5jZS5jb25maXJtQ2xhc3MgPSBcImJ0bi1kYW5nZXJcIjtcclxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVmLnJlc3VsdDtcclxuICAgICAgcmV0dXJuIHJlc3VsdCA9PT0gXCJva1wiO1xyXG4gICAgfSBjYXRjaCB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNob3dNZXNzYWdlKG1zZzogc3RyaW5nLCB0eXBlOiBcInN1Y2Nlc3NcIiB8IFwiZXJyb3JcIikge1xyXG4gICAgdGhpcy5tZXNzYWdlID0gbXNnO1xyXG4gICAgdGhpcy5tZXNzYWdlVHlwZSA9IHR5cGU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+ICh0aGlzLm1lc3NhZ2UgPSBcIlwiKSwgNjAwMCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8c2VjdGlvbiBjbGFzcz1cImRlbGV0ZS1mbG9vciBwLTNcIj5cclxuICA8ZGl2IGNsYXNzPVwiY2FyZCBwLTRcIiBzdHlsZT1cIm1heC13aWR0aDogNzIwcHg7XCI+XHJcbiAgICA8aDUgY2xhc3M9XCJtYi0xXCI+RGVsZXRlIEZsb29yPC9oNT5cclxuICAgIDxwIGNsYXNzPVwidGV4dC1tdXRlZCBzbWFsbCBtYi0zXCI+XHJcbiAgICAgIFJlbW92ZXMgYSBmbG9vciBhbmQgZXZlcnkgcm93IHRoYXQgcmVmZXJlbmNlcyBpdCDigJQgZml4dHVyZXMsIHNoZWx2ZXMsIHRhc2tcclxuICAgICAgY29tcGxpYW5jZSwgcHJvY2Vzc2VkIHRhc2tzLCBjb21tZW50cywgYW5kIHJldmlzaW9ucy4gSWYgdGhpcyBpcyB0aGUgb25seVxyXG4gICAgICBmbG9vciwgdGhlIGVudGlyZSBwbGFub2dyYW0gaXMgcmVtb3ZlZC4gVGhlIHN0b3JlIGVudHJ5IGlzIG5ldmVyIHRvdWNoZWQuXHJcbiAgICA8L3A+XHJcblxyXG4gICAgPCEtLSBTdG9yZSAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgIDxsaWItcmVhY3RpdmUtc2VsZWN0XHJcbiAgICAgICAgbGFiZWw9XCJTdG9yZVwiXHJcbiAgICAgICAgW2lkRmllbGRdPVwiJ3N0b3JlSWQnXCJcclxuICAgICAgICBbbmFtZUZpZWxkXT1cIidzdG9yZU5hbWUnXCJcclxuICAgICAgICBbZGF0YV09XCJzdG9yZU9wdGlvbnNcIlxyXG4gICAgICAgIFtzZWFyY2hdPVwidHJ1ZVwiXHJcbiAgICAgICAgW25nTW9kZWxdPVwic2VsZWN0ZWRTdG9yZUlkXCJcclxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblN0b3JlU2VsZWN0ZWQoJGV2ZW50KVwiPlxyXG4gICAgICA8L2xpYi1yZWFjdGl2ZS1zZWxlY3Q+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkIHNtYWxsIG10LTFcIiAqbmdJZj1cImlzTG9hZGluZ1N0b3Jlc1wiPkxvYWRpbmcgc3RvcmVzLi4uPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIEZsb29yIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTNcIiAqbmdJZj1cInNlbGVjdGVkU3RvcmVJZFwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNMb2FkaW5nRmxvb3JzOyBlbHNlIGZsb29yUGlja2VyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWQgc21hbGxcIj5Mb2FkaW5nIGZsb29ycy4uLjwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLXRlbXBsYXRlICNmbG9vclBpY2tlcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmxvb3JzLmxlbmd0aCA+IDA7IGVsc2Ugbm9GbG9vcnNcIj5cclxuICAgICAgICAgIDxsaWItcmVhY3RpdmUtc2VsZWN0XHJcbiAgICAgICAgICAgIGxhYmVsPVwiRmxvb3JcIlxyXG4gICAgICAgICAgICBbaWRGaWVsZF09XCInX2lkJ1wiXHJcbiAgICAgICAgICAgIFtuYW1lRmllbGRdPVwiJ2Rpc3BsYXlOYW1lJ1wiXHJcbiAgICAgICAgICAgIFtkYXRhXT1cImZsb29yc1wiXHJcbiAgICAgICAgICAgIFtzZWFyY2hdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cInNlbGVjdGVkRmxvb3JJZFwiXHJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uRmxvb3JTZWxlY3RlZCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICA8L2xpYi1yZWFjdGl2ZS1zZWxlY3Q+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNub0Zsb29ycz5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkIHNtYWxsXCI+Tm8gZmxvb3JzIGZvdW5kIGZvciB0aGlzIHN0b3JlLjwvZGl2PlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIFN0YXR1cyArIGNhc2NhZGUgcHJldmlldyAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZEZsb29ySWRcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTG9hZGluZ0ltcGFjdDsgZWxzZSBpbXBhY3RCbG9ja1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkIHNtYWxsXCI+TG9hZGluZyBmbG9vciBkZXRhaWxzLi4uPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI2ltcGFjdEJsb2NrPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbXBhY3RcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zIHAtMyByb3VuZGVkIGluZm8tYmxvY2tcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBneC0zIGd5LTIgc21hbGxcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1tdXRlZCBkLWJsb2NrXCI+Rmxvb3Igc3RhdHVzPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmdy1zZW1pYm9sZFwiPnt7IGZvcm1hdFN0YXR1cyhpbXBhY3QuZmxvb3Iuc3RhdHVzKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1tdXRlZCBkLWJsb2NrXCI+UGxhbm9ncmFtIHN0YXR1czwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnctc2VtaWJvbGRcIj57eyBmb3JtYXRTdGF0dXMoaW1wYWN0LnBsYW5vZ3JhbS5zdGF0dXMpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW11dGVkIGQtYmxvY2tcIj5QbGFubyBhcHByb3ZlZDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnctc2VtaWJvbGRcIj57eyBmb3JtYXRCb29sKGltcGFjdC5mbG9vci5pc1BsYW5vQXBwcm92ZWQpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW11dGVkIGQtYmxvY2tcIj5WZXJpZmljYXRpb24gZG9uZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnctc2VtaWJvbGRcIj57eyBmb3JtYXRCb29sKGltcGFjdC5mbG9vci52ZXJpZmljYXRpb25TdGF0dXMpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW11dGVkIGQtYmxvY2tcIj5NZXJjaCByb2xsb3V0IGRvbmU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZ3LXNlbWlib2xkXCI+e3sgZm9ybWF0Qm9vbChpbXBhY3QuZmxvb3IubWVyY2hSb2xsb3V0U3RhdHVzKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1tdXRlZCBkLWJsb2NrXCI+Vk0gcm9sbG91dCBkb25lPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmdy1zZW1pYm9sZFwiPnt7IGZvcm1hdEJvb2woaW1wYWN0LmZsb29yLnZtUm9sbG91dFN0YXR1cykgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW11dGVkIGQtYmxvY2tcIj5Ub3RhbCBmbG9vcnMgaW4gdGhpcyBwbGFub2dyYW08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZ3LXNlbWlib2xkXCI+e3sgaW1wYWN0LnRvdGFsRmxvb3JzIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zIHAtMyByb3VuZGVkIGNhc2NhZGUtYmxvY2tcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIG1iLTJcIj5XaWxsIGRlbGV0ZTwvZGl2PlxyXG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJzbWFsbCBtYi0wIHBzLTNcIj5cclxuICAgICAgICAgICAgICA8bGk+MSBmbG9vciAoc3RvcmVsYXlvdXRzKTwvbGk+XHJcbiAgICAgICAgICAgICAgPGxpPnt7IGltcGFjdC5jYXNjYWRlLnN0b3JlZml4dHVyZXMgfX0gZml4dHVyZShzKSAoc3RvcmVmaXh0dXJlcyk8L2xpPlxyXG4gICAgICAgICAgICAgIDxsaT57eyBpbXBhY3QuY2FzY2FkZS5maXh0dXJlc2hlbHZlcyB9fSBzaGVsZiByb3cocykgKGZpeHR1cmVzaGVsdmVzKTwvbGk+XHJcbiAgICAgICAgICAgICAgPGxpPnt7IGltcGFjdC5jYXNjYWRlLnBsYW5vdGFza2NvbXBsaWFuY2VzIH19IHRhc2sgY29tcGxpYW5jZSByb3cocykgKHBsYW5vdGFza2NvbXBsaWFuY2VzKTwvbGk+XHJcbiAgICAgICAgICAgICAgPGxpPnt7IGltcGFjdC5jYXNjYWRlLnByb2Nlc3NlZHRhc2tzIH19IHByb2Nlc3NlZCB0YXNrKHMpIChwcm9jZXNzZWR0YXNrcyk8L2xpPlxyXG4gICAgICAgICAgICAgIDxsaT57eyBpbXBhY3QuY2FzY2FkZS5wbGFub2dsb2JhbGNvbW1lbnRzIH19IGdsb2JhbCBjb21tZW50KHMpIChwbGFub2dsb2JhbGNvbW1lbnRzKTwvbGk+XHJcbiAgICAgICAgICAgICAgPGxpPnt7IGltcGFjdC5jYXNjYWRlLnBsYW5vcmV2aXNpb25zIH19IHJldmlzaW9uKHMpIChwbGFub3JldmlzaW9ucyk8L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBzbWFsbCBtdC0yXCI+VG90YWwgZG93bnN0cmVhbSByb3dzOiB7eyB0b3RhbENhc2NhZGVSb3dzIH19PC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtd2FybmluZyBzbWFsbFwiICpuZ0lmPVwiaW1wYWN0LmlzTGFzdEZsb29yXCI+XHJcbiAgICAgICAgICAgIDxzdHJvbmc+VGhpcyBpcyB0aGUgb25seSBmbG9vciBpbiB0aGlzIHBsYW5vZ3JhbS48L3N0cm9uZz5cclxuICAgICAgICAgICAgRGVsZXRpbmcgaXQgd2lsbCBhbHNvIHJlbW92ZSB0aGUgcGxhbm9ncmFtIGVudHJ5IOKAlCB0aGUgcGxhbm8gd2lsbFxyXG4gICAgICAgICAgICBkaXNhcHBlYXIgY29tcGxldGVseS4gVGhlIHN0b3JlIHJlY29yZCBpdHNlbGYgd2lsbCBOT1QgYmUgZGVsZXRlZC5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBTdWJtaXQgLS0+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXJcIiAoY2xpY2spPVwib25TdWJtaXQoKVwiIFtkaXNhYmxlZF09XCIhY2FuU3VibWl0XCI+XHJcbiAgICAgIHt7IGlzU3VibWl0dGluZyA/ICdEZWxldGluZy4uLicgOiAnRGVsZXRlIEZsb29yJyB9fVxyXG4gICAgPC9idXR0b24+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm10LTMgYWxlcnRcIiAqbmdJZj1cIm1lc3NhZ2VcIlxyXG4gICAgICBbY2xhc3MuYWxlcnQtc3VjY2Vzc109XCJtZXNzYWdlVHlwZSA9PT0gJ3N1Y2Nlc3MnXCJcclxuICAgICAgW2NsYXNzLmFsZXJ0LWRhbmdlcl09XCJtZXNzYWdlVHlwZSA9PT0gJ2Vycm9yJ1wiXHJcbiAgICAgIHN0eWxlPVwid2hpdGUtc3BhY2U6IHByZS1saW5lO1wiPlxyXG4gICAgICB7eyBtZXNzYWdlIH19XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9zZWN0aW9uPlxyXG4iXX0=
|
|
252
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLWZsb29yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLWJ1aWxkZXIvc3JjL2xpYi9jb21wb25lbnRzL3BsYW5vLXRvb2xzL2RlbGV0ZS1mbG9vci9kZWxldGUtZmxvb3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtYnVpbGRlci9zcmMvbGliL2NvbXBvbmVudHMvcGxhbm8tdG9vbHMvZGVsZXRlLWZsb29yL2RlbGV0ZS1mbG9vci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBQ0wsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sT0FBTyxFQUNQLFNBQVMsR0FDVixNQUFNLE1BQU0sQ0FBQztBQUdkLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDOzs7Ozs7OztBQW1EN0csTUFBTSxPQUFPLG9CQUFvQjtJQXNCckI7SUFDQTtJQUNBO0lBdkJWLFFBQVEsQ0FBUztJQUVqQixZQUFZLEdBQWtCLEVBQUUsQ0FBQztJQUNqQyxlQUFlLEdBQWtCLElBQUksQ0FBQztJQUN0QyxpQkFBaUIsR0FBa0IsSUFBSSxDQUFDO0lBQ3hDLGVBQWUsR0FBWSxLQUFLLENBQUM7SUFFakMsTUFBTSxHQUFrQixFQUFFLENBQUM7SUFDM0IsZUFBZSxHQUFrQixJQUFJLENBQUM7SUFDdEMsZUFBZSxHQUFZLEtBQUssQ0FBQztJQUVqQyxNQUFNLEdBQXVCLElBQUksQ0FBQztJQUNsQyxlQUFlLEdBQVksS0FBSyxDQUFDO0lBRWpDLFlBQVksR0FBWSxLQUFLLENBQUM7SUFDOUIsT0FBTyxHQUFXLEVBQUUsQ0FBQztJQUNyQixXQUFXLEdBQXdCLFNBQVMsQ0FBQztJ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TyxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7d0dBM1JVLG9CQUFvQjs0RkFBcEIsb0JBQW9CLHdEQzlEakMsNi9LQTBIQTs7NEZENURhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSBcIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwXCI7XG5pbXBvcnQge1xuICBkZWJvdW5jZVRpbWUsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBmaWx0ZXIsXG4gIFN1YmplY3QsXG4gIHRha2VVbnRpbCxcbn0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gXCJ0YW5nby1hcHAtdWktZ2xvYmFsXCI7XG5pbXBvcnQgeyBTdG9yZUJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3N0b3JlLWJ1aWxkZXIuc2VydmljZVwiO1xuaW1wb3J0IHsgRGVsZXRlQ29uZmlybWF0aW9uQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL3BvcHVwcy9kZWxldGUtY29uZmlybWF0aW9uL2RlbGV0ZS1jb25maXJtYXRpb24uY29tcG9uZW50XCI7XG5cbmludGVyZmFjZSBTdG9yZU9wdGlvbiB7XG4gIHN0b3JlSWQ6IHN0cmluZztcbiAgc3RvcmVOYW1lOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBGbG9vck9wdGlvbiB7XG4gIF9pZDogc3RyaW5nO1xuICBmbG9vck51bWJlcjogbnVtYmVyO1xuICBmbG9vck5hbWU6IHN0cmluZztcbiAgZGlzcGxheU5hbWU6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEZsb29ySW1wYWN0IHtcbiAgZmxvb3I6IHtcbiAgICBfaWQ6IHN0cmluZztcbiAgICBmbG9vck51bWJlcjogbnVtYmVyO1xuICAgIGZsb29yTmFtZTogc3RyaW5nO1xuICAgIHN0YXR1czogc3RyaW5nO1xuICAgIGlzUGxhbm9BcHByb3ZlZD86IGJvb2xlYW47XG4gICAgdmVyaWZpY2F0aW9uU3RhdHVzPzogYm9vbGVhbjtcbiAgICBtZXJjaFJvbGxvdXRTdGF0dXM/OiBib29sZWFuO1xuICAgIHZtUm9sbG91dFN0YXR1cz86IGJvb2xlYW47XG4gICAgcGxhbm9Qcm9ncmVzcz86IG51bWJlcjtcbiAgfTtcbiAgcGxhbm9ncmFtOiB7XG4gICAgX2lkOiBzdHJpbmc7XG4gICAgc3RvcmVOYW1lOiBzdHJpbmc7XG4gICAgc3RvcmVJZDogc3RyaW5nO1xuICAgIHN0YXR1cz86IHN0cmluZztcbiAgICBsYXlvdXROYW1lPzogc3RyaW5nO1xuICB9O1xuICB0b3RhbEZsb29yczogbnVtYmVyO1xuICBpc0xhc3RGbG9vcjogYm9vbGVhbjtcbiAgd2lsbERlbGV0ZVBsYW5vZ3JhbTogYm9vbGVhbjtcbiAgY2FzY2FkZToge1xuICAgIHN0b3JlZml4dHVyZXM6IG51bWJlcjtcbiAgICBmaXh0dXJlc2hlbHZlczogbnVtYmVyO1xuICAgIHBsYW5vdGFza2NvbXBsaWFuY2VzOiBudW1iZXI7XG4gICAgcHJvY2Vzc2VkdGFza3M6IG51bWJlcjtcbiAgICBwbGFub2dsb2JhbGNvbW1lbnRzOiBudW1iZXI7XG4gICAgcGxhbm9yZXZpc2lvbnM6IG51bWJlcjtcbiAgfTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImxpYi1kZWxldGUtZmxvb3JcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9kZWxldGUtZmxvb3IuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmw6IFwiLi9kZWxldGUtZmxvb3IuY29tcG9uZW50LnNjc3NcIixcbn0pXG5leHBvcnQgY2xhc3MgRGVsZXRlRmxvb3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIGNsaWVudElkOiBzdHJpbmc7XG5cbiAgc3RvcmVPcHRpb25zOiBTdG9yZU9wdGlvbltdID0gW107XG4gIHNlbGVjdGVkU3RvcmVJZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIHNlbGVjdGVkU3RvcmVOYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgaXNMb2FkaW5nU3RvcmVzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgZmxvb3JzOiBGbG9vck9wdGlvbltdID0gW107XG4gIHNlbGVjdGVkRmxvb3JJZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIGlzTG9hZGluZ0Zsb29yczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGltcGFjdDogRmxvb3JJbXBhY3QgfCBudWxsID0gbnVsbDtcbiAgaXNMb2FkaW5nSW1wYWN0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgaXNTdWJtaXR0aW5nOiBib29sZWFuID0gZmFsc2U7XG4gIG1lc3NhZ2U6IHN0cmluZyA9IFwiXCI7XG4gIG1lc3NhZ2VUeXBlOiBcInN1Y2Nlc3NcIiB8IFwiZXJyb3JcIiA9IFwic3VjY2Vzc1wiO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2JzOiBTdG9yZUJ1aWxkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgZ3M6IEdsb2JhbFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwsXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICBkZWJvdW5jZVRpbWUoMjAwKSxcbiAgICAgICAgZmlsdGVyKChkYXRhKSA9PiAhIWRhdGEpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIGlmIChkYXRhPy5jbGllbnQpIHtcbiAgICAgICAgICB0aGlzLmNsaWVudElkID0gZGF0YS5jbGllbnQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgaGVhZGVyRGF0YSA9IEpTT04ucGFyc2UoXG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImhlYWRlci1maWx0ZXJzXCIpIGFzIHN0cmluZyxcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuY2xpZW50SWQgPSBoZWFkZXJEYXRhPy5jbGllbnQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZXNldEFsbCgpO1xuICAgICAgICB0aGlzLmxvYWRTdG9yZXMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbG9hZFN0b3JlcygpIHtcbiAgICBpZiAoIXRoaXMuY2xpZW50SWQpIHJldHVybjtcbiAgICB0aGlzLmlzTG9hZGluZ1N0b3JlcyA9IHRydWU7XG4gICAgdGhpcy5zYnMuZ2V0QWxsU3RvcmVzKHRoaXMuY2xpZW50SWQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5zdG9yZU9wdGlvbnMgPSAocmVzPy5kYXRhIHx8IFtdKS5tYXAoKHM6IGFueSkgPT4gKHtcbiAgICAgICAgICBzdG9yZUlkOiBzLnN0b3JlSWQsXG4gICAgICAgICAgc3RvcmVOYW1lOiBzLnN0b3JlTmFtZSxcbiAgICAgICAgfSkpO1xuICAgICAgICB0aGlzLmlzTG9hZGluZ1N0b3JlcyA9IGZhbHNlO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5zaG93TWVzc2FnZShcbiAgICAgICAgICBlcnI/LmVycm9yPy5tZXNzYWdlIHx8IFwiRmFpbGVkIHRvIGxvYWQgc3RvcmVzLlwiLFxuICAgICAgICAgIFwiZXJyb3JcIixcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmdTdG9yZXMgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBvblN0b3JlU2VsZWN0ZWQoc3RvcmVJZDogc3RyaW5nIHwgbnVsbCkge1xuICAgIHRoaXMuc2VsZWN0ZWRTdG9yZUlkID0gc3RvcmVJZDtcbiAgICBjb25zdCBzdG9yZSA9IHRoaXMuc3RvcmVPcHRpb25zLmZpbmQoKHMpID0+IHMuc3RvcmVJZCA9PT0gc3RvcmVJZCk7XG4gICAgdGhpcy5zZWxlY3RlZFN0b3JlTmFtZSA9IHN0b3JlPy5zdG9yZU5hbWUgPz8gbnVsbDtcbiAgICB0aGlzLnJlc2V0Rmxvb3JTdGF0ZSgpO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkU3RvcmVJZCkge1xuICAgICAgdGhpcy5sb2FkRmxvb3JzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXNldEZsb29yU3RhdGUoKSB7XG4gICAgdGhpcy5mbG9vcnMgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkRmxvb3JJZCA9IG51bGw7XG4gICAgdGhpcy5pbXBhY3QgPSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldEFsbCgpIHtcbiAgICB0aGlzLnN0b3JlT3B0aW9ucyA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRTdG9yZUlkID0gbnVsbDtcbiAgICB0aGlzLnNlbGVjdGVkU3RvcmVOYW1lID0gbnVsbDtcbiAgICB0aGlzLnJlc2V0Rmxvb3JTdGF0ZSgpO1xuICB9XG5cbiAgbG9hZEZsb29ycygpIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRTdG9yZUlkKSByZXR1cm47XG4gICAgdGhpcy5pc0xvYWRpbmdGbG9vcnMgPSB0cnVlO1xuICAgIHRoaXMuc2JzLmdldFN0b3JlRmxvb3JzTGlzdCh0aGlzLnNlbGVjdGVkU3RvcmVJZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCByYXc6IGFueVtdID0gcmVzPy5kYXRhIHx8IFtdO1xuICAgICAgICB0aGlzLmZsb29ycyA9IHJhd1xuICAgICAgICAgIC5tYXAoKGYpID0+ICh7XG4gICAgICAgICAgICBfaWQ6IGYuX2lkLFxuICAgICAgICAgICAgZmxvb3JOdW1iZXI6IGYuZmxvb3JOdW1iZXIsXG4gICAgICAgICAgICBmbG9vck5hbWU6IGYuZmxvb3JOYW1lLFxuICAgICAgICAgICAgZGlzcGxheU5hbWU6IGBGbG9vciAke2YuZmxvb3JOdW1iZXJ9IOKAlCAke2YuZmxvb3JOYW1lfWAsXG4gICAgICAgICAgfSkpXG4gICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEuZmxvb3JOdW1iZXIgLSBiLmZsb29yTnVtYmVyKTtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmdGbG9vcnMgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuc2hvd01lc3NhZ2UoXG4gICAgICAgICAgZXJyPy5lcnJvcj8ubWVzc2FnZSB8fCBcIkZhaWxlZCB0byBsb2FkIGZsb29ycy5cIixcbiAgICAgICAgICBcImVycm9yXCIsXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nRmxvb3JzID0gZmFsc2U7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgb25GbG9vclNlbGVjdGVkKGZsb29ySWQ6IHN0cmluZyB8IG51bGwpIHtcbiAgICB0aGlzLnNlbGVjdGVkRmxvb3JJZCA9IGZsb29ySWQ7XG4gICAgdGhpcy5pbXBhY3QgPSBudWxsO1xuICAgIGlmIChmbG9vcklkKSB7XG4gICAgICB0aGlzLmxvYWRJbXBhY3QoZmxvb3JJZCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsb2FkSW1wYWN0KGZsb29ySWQ6IHN0cmluZykge1xuICAgIHRoaXMuaXNMb2FkaW5nSW1wYWN0ID0gdHJ1ZTtcbiAgICB0aGlzLnNicy5nZXRGbG9vckRlbGV0ZUltcGFjdCh7IGZsb29ySWQgfSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmltcGFjdCA9IHJlcz8uZGF0YSB8fCBudWxsO1xuICAgICAgICB0aGlzLmlzTG9hZGluZ0ltcGFjdCA9IGZhbHNlO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5zaG93TWVzc2FnZShcbiAgICAgICAgICBlcnI/LmVycm9yPy5tZXNzYWdlIHx8IFwiRmFpbGVkIHRvIGxvYWQgZmxvb3IgZGV0YWlscy5cIixcbiAgICAgICAgICBcImVycm9yXCIsXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nSW1wYWN0ID0gZmFsc2U7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgZm9ybWF0U3RhdHVzKHN0YXR1czogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCk6IHN0cmluZyB7XG4gICAgaWYgKCFzdGF0dXMpIHJldHVybiBcIi0tXCI7XG4gICAgY29uc3QgbWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgZHJhZnQ6IFwiRHJhZnRcIixcbiAgICAgIGFsbG9jYXRpb25QZW5kaW5nOiBcIkFsbG9jYXRpb24gUGVuZGluZ1wiLFxuICAgICAgY29tcGxldGVkOiBcIkNvbXBsZXRlZFwiLFxuICAgIH07XG4gICAgcmV0dXJuIG1hcFtzdGF0dXNdIHx8IHN0YXR1cztcbiAgfVxuXG4gIGZvcm1hdEJvb2wodjogYm9vbGVhbiB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHYgPyBcIlllc1wiIDogXCJOb1wiO1xuICB9XG5cbiAgZ2V0IHRvdGFsQ2FzY2FkZVJvd3MoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMuaW1wYWN0KSByZXR1cm4gMDtcbiAgICBjb25zdCBjID0gdGhpcy5pbXBhY3QuY2FzY2FkZTtcbiAgICByZXR1cm4gKFxuICAgICAgYy5zdG9yZWZpeHR1cmVzICtcbiAgICAgIGMuZml4dHVyZXNoZWx2ZXMgK1xuICAgICAgYy5wbGFub3Rhc2tjb21wbGlhbmNlcyArXG4gICAgICBjLnByb2Nlc3NlZHRhc2tzICtcbiAgICAgIGMucGxhbm9nbG9iYWxjb21tZW50cyArXG4gICAgICBjLnBsYW5vcmV2aXNpb25zXG4gICAgKTtcbiAgfVxuXG4gIGdldCBjYW5TdWJtaXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgICEhdGhpcy5zZWxlY3RlZEZsb29ySWQgJiZcbiAgICAgICEhdGhpcy5pbXBhY3QgJiZcbiAgICAgICF0aGlzLmlzU3VibWl0dGluZyAmJlxuICAgICAgIXRoaXMuaXNMb2FkaW5nSW1wYWN0XG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIG9uU3VibWl0KCkge1xuICAgIGlmICghdGhpcy5jYW5TdWJtaXQgfHwgIXRoaXMuaW1wYWN0KSByZXR1cm47XG5cbiAgICBjb25zdCBpc0xhc3QgPSB0aGlzLmltcGFjdC5pc0xhc3RGbG9vcjtcbiAgICBjb25zdCBmbG9vciA9IHRoaXMuaW1wYWN0LmZsb29yO1xuICAgIGNvbnN0IHBsYW5vID0gdGhpcy5pbXBhY3QucGxhbm9ncmFtO1xuICAgIGNvbnN0IGMgPSB0aGlzLmltcGFjdC5jYXNjYWRlO1xuXG4gICAgY29uc3Qgc3VtbWFyeTogc3RyaW5nW10gPSBbXTtcbiAgICBzdW1tYXJ5LnB1c2goYFN0b3JlOiAke3BsYW5vLnN0b3JlTmFtZSA/PyBcIi0tXCJ9YCk7XG4gICAgc3VtbWFyeS5wdXNoKFxuICAgICAgYEZsb29yICR7Zmxvb3IuZmxvb3JOdW1iZXJ9IOKAlCAke2Zsb29yLmZsb29yTmFtZX0gWyR7dGhpcy5mb3JtYXRTdGF0dXMoZmxvb3Iuc3RhdHVzKX1dYCxcbiAgICApO1xuICAgIHN1bW1hcnkucHVzaChcbiAgICAgIGBDYXNjYWRlOiAke2Muc3RvcmVmaXh0dXJlc30gZml4dHVyZXMsICR7Yy5maXh0dXJlc2hlbHZlc30gc2hlbHZlcywgJHtjLnBsYW5vdGFza2NvbXBsaWFuY2VzfSBjb21wbGlhbmNlLCAke2MucHJvY2Vzc2VkdGFza3N9IHRhc2socyksICR7Yy5wbGFub2dsb2JhbGNvbW1lbnRzfSBjb21tZW50KHMpLCAke2MucGxhbm9yZXZpc2lvbnN9IHJldmlzaW9uKHMpYCxcbiAgICApO1xuICAgIGlmIChpc0xhc3QpIHtcbiAgICAgIHN1bW1hcnkucHVzaChcbiAgICAgICAgXCJUaGlzIGlzIHRoZSBPTkxZIGZsb29yIGluIHRoaXMgcGxhbm9ncmFtLiBEZWxldGluZyBpdCB3aWxsIFJFTU9WRSBUSEUgRU5USVJFIFBMQU5PR1JBTS4gVGhlIHN0b3JlIGVudHJ5IGl0c2VsZiB3aWxsIG5vdCBiZSB0b3VjaGVkLlwiLFxuICAgICAgKTtcbiAgICB9XG4gICAgc3VtbWFyeS5wdXNoKFwiVGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZS5cIik7XG5cbiAgICBjb25zdCBmaXJzdFRpdGxlID0gaXNMYXN0XG4gICAgICA/IFwiRGVsZXRlIHBsYW5vZ3JhbSBlbnRpcmVseT9cIlxuICAgICAgOiBcIkRlbGV0ZSB0aGlzIGZsb29yP1wiO1xuICAgIGNvbnN0IGNvbmZpcm1lZCA9IGF3YWl0IHRoaXMuY29uZmlybShmaXJzdFRpdGxlLCBzdW1tYXJ5LmpvaW4oXCJcXG5cIikpO1xuICAgIGlmICghY29uZmlybWVkKSByZXR1cm47XG5cbiAgICBpZiAoaXNMYXN0KSB7XG4gICAgICBjb25zdCBkb3VibGVDb25maXJtZWQgPSBhd2FpdCB0aGlzLmNvbmZpcm0oXG4gICAgICAgIFwiRmluYWwgY29uZmlybWF0aW9uXCIsXG4gICAgICAgIGBZb3UgYXJlIGFib3V0IHRvIHBlcm1hbmVudGx5IGRlbGV0ZSB0aGUgcGxhbm9ncmFtIGZvciBcIiR7cGxhbm8uc3RvcmVOYW1lfVwiLiBUaGlzIHdpcGVzIHRoZSBmbG9vciBhbmQgdGhlIHBsYW5vZ3JhbSBtZXRhZGF0YS4gVGhlIHN0b3JlIGlzIHByZXNlcnZlZC4gUHJvY2VlZD9gLFxuICAgICAgKTtcbiAgICAgIGlmICghZG91YmxlQ29uZmlybWVkKSByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc1N1Ym1pdHRpbmcgPSB0cnVlO1xuICAgIHRoaXMuc2JzXG4gICAgICAuZGVsZXRlRmxvb3JDYXNjYWRlKHtcbiAgICAgICAgZmxvb3JJZDogdGhpcy5zZWxlY3RlZEZsb29ySWQhLFxuICAgICAgICBjb25maXJtTGFzdEZsb29yOiBpc0xhc3QsXG4gICAgICB9KVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGRhdGEgPSByZXM/LmRhdGEgfHwge307XG4gICAgICAgICAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gW107XG4gICAgICAgICAgaWYgKGRhdGEucGxhbm9ncmFtRGVsZXRlZCkge1xuICAgICAgICAgICAgcGFydHMucHVzaChcIlBsYW5vZ3JhbSByZW1vdmVkIGVudGlyZWx5XCIpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXJ0cy5wdXNoKFwiRmxvb3IgZGVsZXRlZFwiKTtcbiAgICAgICAgICAgIGlmIChkYXRhLnJlbnVtYmVyZWRGbG9vcnM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICBwYXJ0cy5wdXNoKFxuICAgICAgICAgICAgICAgIGAke2RhdGEucmVudW1iZXJlZEZsb29ycy5sZW5ndGh9IHNpYmxpbmcgZmxvb3IocykgcmVudW1iZXJlZGAsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGRjID0gZGF0YS5kZWxldGVkQ291bnRzIHx8IHt9O1xuICAgICAgICAgIHBhcnRzLnB1c2goXG4gICAgICAgICAgICBgQ2xlYW5lZDogJHtkYy5zdG9yZWZpeHR1cmVzIHx8IDB9IGZpeHR1cmVzLCAke2RjLmZpeHR1cmVzaGVsdmVzIHx8IDB9IHNoZWx2ZXMsICR7ZGMucGxhbm90YXNrY29tcGxpYW5jZXMgfHwgMH0gY29tcGxpYW5jZSwgJHtkYy5wcm9jZXNzZWR0YXNrcyB8fCAwfSB0YXNrKHMpLCAke2RjLnBsYW5vZ2xvYmFsY29tbWVudHMgfHwgMH0gY29tbWVudChzKSwgJHtkYy5wbGFub3JldmlzaW9ucyB8fCAwfSByZXZpc2lvbihzKWAsXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnNob3dNZXNzYWdlKHBhcnRzLmpvaW4oXCIuIFwiKSwgXCJzdWNjZXNzXCIpO1xuICAgICAgICAgIHRoaXMuaXNTdWJtaXR0aW5nID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5yZXNldEZsb29yU3RhdGUoKTtcbiAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFN0b3JlSWQpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZEZsb29ycygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuc2hvd01lc3NhZ2UoXG4gICAgICAgICAgICBlcnI/LmVycm9yPy5tZXNzYWdlIHx8IFwiRmFpbGVkIHRvIGRlbGV0ZSBmbG9vci5cIixcbiAgICAgICAgICAgIFwiZXJyb3JcIixcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuaXNTdWJtaXR0aW5nID0gZmFsc2U7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29uZmlybSh0aXRsZTogc3RyaW5nLCBkZXNjcmlwdGlvbjogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oRGVsZXRlQ29uZmlybWF0aW9uQ29tcG9uZW50LCB7XG4gICAgICAgIGNlbnRlcmVkOiB0cnVlLFxuICAgICAgfSk7XG4gICAgICByZWYuY29tcG9uZW50SW5zdGFuY2UudGl0bGUgPSB0aXRsZTtcbiAgICAgIHJlZi5jb21wb25lbnRJbnN0YW5jZS5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uO1xuICAgICAgcmVmLmNvbXBvbmVudEluc3RhbmNlLmNvbmZpcm1MYWJlbCA9IFwiRGVsZXRlXCI7XG4gICAgICByZWYuY29tcG9uZW50SW5zdGFuY2UuY29uZmlybUNsYXNzID0gXCJidG4tZGFuZ2VyXCI7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZWYucmVzdWx0O1xuICAgICAgcmV0dXJuIHJlc3VsdCA9PT0gXCJva1wiO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHNob3dNZXNzYWdlKG1zZzogc3RyaW5nLCB0eXBlOiBcInN1Y2Nlc3NcIiB8IFwiZXJyb3JcIikge1xuICAgIHRoaXMubWVzc2FnZSA9IG1zZztcbiAgICB0aGlzLm1lc3NhZ2VUeXBlID0gdHlwZTtcbiAgICBzZXRUaW1lb3V0KCgpID0+ICh0aGlzLm1lc3NhZ2UgPSBcIlwiKSwgNjAwMCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiIsIjxzZWN0aW9uIGNsYXNzPVwiZGVsZXRlLWZsb29yIHAtM1wiPlxuICA8ZGl2IGNsYXNzPVwiY2FyZCBwLTRcIiBzdHlsZT1cIm1heC13aWR0aDogNzIwcHg7XCI+XG4gICAgPGg1IGNsYXNzPVwibWItMVwiPkRlbGV0ZSBGbG9vcjwvaDU+XG4gICAgPHAgY2xhc3M9XCJ0ZXh0LW11dGVkIHNtYWxsIG1iLTNcIj5cbiAgICAgIFJlbW92ZXMgYSBmbG9vciBhbmQgZXZlcnkgcm93IHRoYXQgcmVmZXJlbmNlcyBpdCDigJQgZml4dHVyZXMsIHNoZWx2ZXMsIHRhc2tcbiAgICAgIGNvbXBsaWFuY2UsIHByb2Nlc3NlZCB0YXNrcywgY29tbWVudHMsIGFuZCByZXZpc2lvbnMuIElmIHRoaXMgaXMgdGhlIG9ubHlcbiAgICAgIGZsb29yLCB0aGUgZW50aXJlIHBsYW5vZ3JhbSBpcyByZW1vdmVkLiBUaGUgc3RvcmUgZW50cnkgaXMgbmV2ZXIgdG91Y2hlZC5cbiAgICA8L3A+XG5cbiAgICA8IS0tIFN0b3JlIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XG4gICAgICA8bGliLXJlYWN0aXZlLXNlbGVjdFxuICAgICAgICBsYWJlbD1cIlN0b3JlXCJcbiAgICAgICAgW2lkRmllbGRdPVwiJ3N0b3JlSWQnXCJcbiAgICAgICAgW25hbWVGaWVsZF09XCInc3RvcmVOYW1lJ1wiXG4gICAgICAgIFtkYXRhXT1cInN0b3JlT3B0aW9uc1wiXG4gICAgICAgIFtzZWFyY2hdPVwidHJ1ZVwiXG4gICAgICAgIFtuZ01vZGVsXT1cInNlbGVjdGVkU3RvcmVJZFwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uU3RvcmVTZWxlY3RlZCgkZXZlbnQpXCI+XG4gICAgICA8L2xpYi1yZWFjdGl2ZS1zZWxlY3Q+XG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBzbWFsbCBtdC0xXCIgKm5nSWY9XCJpc0xvYWRpbmdTdG9yZXNcIj5Mb2FkaW5nIHN0b3Jlcy4uLjwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBGbG9vciAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibWItM1wiICpuZ0lmPVwic2VsZWN0ZWRTdG9yZUlkXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNMb2FkaW5nRmxvb3JzOyBlbHNlIGZsb29yUGlja2VyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkIHNtYWxsXCI+TG9hZGluZyBmbG9vcnMuLi48L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNmbG9vclBpY2tlcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZsb29ycy5sZW5ndGggPiAwOyBlbHNlIG5vRmxvb3JzXCI+XG4gICAgICAgICAgPGxpYi1yZWFjdGl2ZS1zZWxlY3RcbiAgICAgICAgICAgIGxhYmVsPVwiRmxvb3JcIlxuICAgICAgICAgICAgW2lkRmllbGRdPVwiJ19pZCdcIlxuICAgICAgICAgICAgW25hbWVGaWVsZF09XCInZGlzcGxheU5hbWUnXCJcbiAgICAgICAgICAgIFtkYXRhXT1cImZsb29yc1wiXG4gICAgICAgICAgICBbc2VhcmNoXT1cInRydWVcIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwic2VsZWN0ZWRGbG9vcklkXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uRmxvb3JTZWxlY3RlZCgkZXZlbnQpXCI+XG4gICAgICAgICAgPC9saWItcmVhY3RpdmUtc2VsZWN0PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNub0Zsb29ycz5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBzbWFsbFwiPk5vIGZsb29ycyBmb3VuZCBmb3IgdGhpcyBzdG9yZS48L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFN0YXR1cyArIGNhc2NhZGUgcHJldmlldyAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRGbG9vcklkXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNMb2FkaW5nSW1wYWN0OyBlbHNlIGltcGFjdEJsb2NrXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkIHNtYWxsXCI+TG9hZGluZyBmbG9vciBkZXRhaWxzLi4uPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjaW1wYWN0QmxvY2s+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbXBhY3RcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMyBwLTMgcm91bmRlZCBpbmZvLWJsb2NrXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGd4LTMgZ3ktMiBzbWFsbFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbXV0ZWQgZC1ibG9ja1wiPkZsb29yIHN0YXR1czwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZ3LXNlbWlib2xkXCI+e3sgZm9ybWF0U3RhdHVzKGltcGFjdC5mbG9vci5zdGF0dXMpIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW11dGVkIGQtYmxvY2tcIj5QbGFub2dyYW0gc3RhdHVzPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnctc2VtaWJvbGRcIj57eyBmb3JtYXRTdGF0dXMoaW1wYWN0LnBsYW5vZ3JhbS5zdGF0dXMpIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW11dGVkIGQtYmxvY2tcIj5QbGFubyBhcHByb3ZlZDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZ3LXNlbWlib2xkXCI+e3sgZm9ybWF0Qm9vbChpbXBhY3QuZmxvb3IuaXNQbGFub0FwcHJvdmVkKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1tdXRlZCBkLWJsb2NrXCI+VmVyaWZpY2F0aW9uIGRvbmU8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmdy1zZW1pYm9sZFwiPnt7IGZvcm1hdEJvb2woaW1wYWN0LmZsb29yLnZlcmlmaWNhdGlvblN0YXR1cykgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbXV0ZWQgZC1ibG9ja1wiPk1lcmNoIHJvbGxvdXQgZG9uZTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZ3LXNlbWlib2xkXCI+e3sgZm9ybWF0Qm9vbChpbXBhY3QuZmxvb3IubWVyY2hSb2xsb3V0U3RhdHVzKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1tdXRlZCBkLWJsb2NrXCI+Vk0gcm9sbG91dCBkb25lPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnctc2VtaWJvbGRcIj57eyBmb3JtYXRCb29sKGltcGFjdC5mbG9vci52bVJvbGxvdXRTdGF0dXMpIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1tdXRlZCBkLWJsb2NrXCI+VG90YWwgZmxvb3JzIGluIHRoaXMgcGxhbm9ncmFtPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnctc2VtaWJvbGRcIj57eyBpbXBhY3QudG90YWxGbG9vcnMgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMyBwLTMgcm91bmRlZCBjYXNjYWRlLWJsb2NrXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgbWItMlwiPldpbGwgZGVsZXRlPC9kaXY+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJzbWFsbCBtYi0wIHBzLTNcIj5cbiAgICAgICAgICAgICAgPGxpPjEgZmxvb3IgKHN0b3JlbGF5b3V0cyk8L2xpPlxuICAgICAgICAgICAgICA8bGk+e3sgaW1wYWN0LmNhc2NhZGUuc3RvcmVmaXh0dXJlcyB9fSBmaXh0dXJlKHMpIChzdG9yZWZpeHR1cmVzKTwvbGk+XG4gICAgICAgICAgICAgIDxsaT57eyBpbXBhY3QuY2FzY2FkZS5maXh0dXJlc2hlbHZlcyB9fSBzaGVsZiByb3cocykgKGZpeHR1cmVzaGVsdmVzKTwvbGk+XG4gICAgICAgICAgICAgIDxsaT57eyBpbXBhY3QuY2FzY2FkZS5wbGFub3Rhc2tjb21wbGlhbmNlcyB9fSB0YXNrIGNvbXBsaWFuY2Ugcm93KHMpIChwbGFub3Rhc2tjb21wbGlhbmNlcyk8L2xpPlxuICAgICAgICAgICAgICA8bGk+e3sgaW1wYWN0LmNhc2NhZGUucHJvY2Vzc2VkdGFza3MgfX0gcHJvY2Vzc2VkIHRhc2socykgKHByb2Nlc3NlZHRhc2tzKTwvbGk+XG4gICAgICAgICAgICAgIDxsaT57eyBpbXBhY3QuY2FzY2FkZS5wbGFub2dsb2JhbGNvbW1lbnRzIH19IGdsb2JhbCBjb21tZW50KHMpIChwbGFub2dsb2JhbGNvbW1lbnRzKTwvbGk+XG4gICAgICAgICAgICAgIDxsaT57eyBpbXBhY3QuY2FzY2FkZS5wbGFub3JldmlzaW9ucyB9fSByZXZpc2lvbihzKSAocGxhbm9yZXZpc2lvbnMpPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBzbWFsbCBtdC0yXCI+VG90YWwgZG93bnN0cmVhbSByb3dzOiB7eyB0b3RhbENhc2NhZGVSb3dzIH19PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtd2FybmluZyBzbWFsbFwiICpuZ0lmPVwiaW1wYWN0LmlzTGFzdEZsb29yXCI+XG4gICAgICAgICAgICA8c3Ryb25nPlRoaXMgaXMgdGhlIG9ubHkgZmxvb3IgaW4gdGhpcyBwbGFub2dyYW0uPC9zdHJvbmc+XG4gICAgICAgICAgICBEZWxldGluZyBpdCB3aWxsIGFsc28gcmVtb3ZlIHRoZSBwbGFub2dyYW0gZW50cnkg4oCUIHRoZSBwbGFubyB3aWxsXG4gICAgICAgICAgICBkaXNhcHBlYXIgY29tcGxldGVseS4gVGhlIHN0b3JlIHJlY29yZCBpdHNlbGYgd2lsbCBOT1QgYmUgZGVsZXRlZC5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLSBTdWJtaXQgLS0+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tZGFuZ2VyXCIgKGNsaWNrKT1cIm9uU3VibWl0KClcIiBbZGlzYWJsZWRdPVwiIWNhblN1Ym1pdFwiPlxuICAgICAge3sgaXNTdWJtaXR0aW5nID8gJ0RlbGV0aW5nLi4uJyA6ICdEZWxldGUgRmxvb3InIH19XG4gICAgPC9idXR0b24+XG5cbiAgICA8ZGl2IGNsYXNzPVwibXQtMyBhbGVydFwiICpuZ0lmPVwibWVzc2FnZVwiXG4gICAgICBbY2xhc3MuYWxlcnQtc3VjY2Vzc109XCJtZXNzYWdlVHlwZSA9PT0gJ3N1Y2Nlc3MnXCJcbiAgICAgIFtjbGFzcy5hbGVydC1kYW5nZXJdPVwibWVzc2FnZVR5cGUgPT09ICdlcnJvcidcIlxuICAgICAgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogcHJlLWxpbmU7XCI+XG4gICAgICB7eyBtZXNzYWdlIH19XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9zZWN0aW9uPlxuIl19
|
|
@@ -3,11 +3,13 @@ import { Subject, takeUntil, debounceTime, filter, distinctUntilChanged } from '
|
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "../../../services/store-builder.service";
|
|
5
5
|
import * as i2 from "tango-app-ui-global";
|
|
6
|
-
import * as i3 from "
|
|
6
|
+
import * as i3 from "@angular/forms";
|
|
7
|
+
import * as i4 from "../../collection-update-ai/components/store-select/store-select.component";
|
|
7
8
|
export class DeleteTaskComponent {
|
|
8
9
|
sbs;
|
|
9
10
|
gs;
|
|
10
11
|
clientId;
|
|
12
|
+
taskType = 'fixture';
|
|
11
13
|
storeOptions = [];
|
|
12
14
|
initialStores = [];
|
|
13
15
|
selectedStores = [];
|
|
@@ -43,6 +45,9 @@ export class DeleteTaskComponent {
|
|
|
43
45
|
onStoresSelected(stores) {
|
|
44
46
|
this.selectedStores = stores;
|
|
45
47
|
}
|
|
48
|
+
onTaskTypeChange() {
|
|
49
|
+
this.message = '';
|
|
50
|
+
}
|
|
46
51
|
onSubmit() {
|
|
47
52
|
if (this.selectedStores.length === 0) {
|
|
48
53
|
this.showMessage('Please select at least one store.', 'error');
|
|
@@ -50,6 +55,7 @@ export class DeleteTaskComponent {
|
|
|
50
55
|
}
|
|
51
56
|
let payload = {
|
|
52
57
|
storeNames: this.selectedStores.map((s) => s.label),
|
|
58
|
+
taskType: this.taskType,
|
|
53
59
|
};
|
|
54
60
|
this.isSubmitting = true;
|
|
55
61
|
this.sbs.deleteTaskForStores(payload).subscribe({
|
|
@@ -74,10 +80,10 @@ export class DeleteTaskComponent {
|
|
|
74
80
|
this.destroy$.complete();
|
|
75
81
|
}
|
|
76
82
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DeleteTaskComponent, deps: [{ token: i1.StoreBuilderService }, { token: i2.GlobalStateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
77
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: DeleteTaskComponent, selector: "lib-delete-task", ngImport: i0, template: "<section class=\"delete-task p-3\">\r\n <div class=\"card p-4\" style=\"max-width: 600px;\">\r\n <h5 class=\"mb-3\">Delete Task</h5>\r\n\r\n <!-- Store Select -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">Store</label>\r\n <lib-store-select\r\n [options]=\"storeOptions\"\r\n [initialSelected]=\"initialStores\"\r\n (selectedChange)=\"onStoresSelected($event)\">\r\n </lib-store-select>\r\n </div>\r\n\r\n <!-- Submit -->\r\n <button class=\"btn btn-danger\" (click)=\"onSubmit()\"\r\n [disabled]=\"isSubmitting || selectedStores.length === 0\">\r\n {{ isSubmitting ? 'Deleting...' : 'Delete Task' }}\r\n </button>\r\n\r\n <!-- Message -->\r\n @if (message) {\r\n <div class=\"mt-3 alert\" [class.alert-success]=\"messageType === 'success'\"\r\n [class.alert-danger]=\"messageType === 'error'\">\r\n {{ message }}\r\n </div>\r\n }\r\n </div>\r\n</section>\r\n", styles: [""], dependencies: [{ kind: "
|
|
83
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: DeleteTaskComponent, selector: "lib-delete-task", ngImport: i0, template: "<section class=\"delete-task p-3\">\r\n <div class=\"card p-4\" style=\"max-width: 600px;\">\r\n <h5 class=\"mb-3\">Delete Task</h5>\r\n\r\n <!-- Task Type -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label d-block\">Task Type</label>\r\n <div class=\"d-flex gap-3\">\r\n <div class=\"form-check\">\r\n <input type=\"radio\" class=\"form-check-input\" id=\"deleteTaskTypeFixture\"\r\n name=\"deleteTaskType\" value=\"fixture\"\r\n [(ngModel)]=\"taskType\" (change)=\"onTaskTypeChange()\">\r\n <label class=\"form-check-label\" for=\"deleteTaskTypeFixture\">Fixture Verification</label>\r\n </div>\r\n <div class=\"form-check\">\r\n <input type=\"radio\" class=\"form-check-input\" id=\"deleteTaskTypeZone\"\r\n name=\"deleteTaskType\" value=\"zoneVerification\"\r\n [(ngModel)]=\"taskType\" (change)=\"onTaskTypeChange()\">\r\n <label class=\"form-check-label\" for=\"deleteTaskTypeZone\">Zone Verification</label>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Store Select -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">Store</label>\r\n <lib-store-select\r\n [options]=\"storeOptions\"\r\n [initialSelected]=\"initialStores\"\r\n (selectedChange)=\"onStoresSelected($event)\">\r\n </lib-store-select>\r\n </div>\r\n\r\n <!-- Submit -->\r\n <button class=\"btn btn-danger\" (click)=\"onSubmit()\"\r\n [disabled]=\"isSubmitting || selectedStores.length === 0\">\r\n {{ isSubmitting ? 'Deleting...' : 'Delete Task' }}\r\n </button>\r\n\r\n <!-- Message -->\r\n @if (message) {\r\n <div class=\"mt-3 alert\" [class.alert-success]=\"messageType === 'success'\"\r\n [class.alert-danger]=\"messageType === 'error'\">\r\n {{ message }}\r\n </div>\r\n }\r\n </div>\r\n</section>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.StoreSelectComponent, selector: "lib-store-select", inputs: ["options", "initialSelected", "singleSelect"], outputs: ["selectedChange"] }] });
|
|
78
84
|
}
|
|
79
85
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DeleteTaskComponent, decorators: [{
|
|
80
86
|
type: Component,
|
|
81
|
-
args: [{ selector: 'lib-delete-task', template: "<section class=\"delete-task p-3\">\r\n <div class=\"card p-4\" style=\"max-width: 600px;\">\r\n <h5 class=\"mb-3\">Delete Task</h5>\r\n\r\n <!-- Store Select -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">Store</label>\r\n <lib-store-select\r\n [options]=\"storeOptions\"\r\n [initialSelected]=\"initialStores\"\r\n (selectedChange)=\"onStoresSelected($event)\">\r\n </lib-store-select>\r\n </div>\r\n\r\n <!-- Submit -->\r\n <button class=\"btn btn-danger\" (click)=\"onSubmit()\"\r\n [disabled]=\"isSubmitting || selectedStores.length === 0\">\r\n {{ isSubmitting ? 'Deleting...' : 'Delete Task' }}\r\n </button>\r\n\r\n <!-- Message -->\r\n @if (message) {\r\n <div class=\"mt-3 alert\" [class.alert-success]=\"messageType === 'success'\"\r\n [class.alert-danger]=\"messageType === 'error'\">\r\n {{ message }}\r\n </div>\r\n }\r\n </div>\r\n</section>\r\n" }]
|
|
87
|
+
args: [{ selector: 'lib-delete-task', template: "<section class=\"delete-task p-3\">\r\n <div class=\"card p-4\" style=\"max-width: 600px;\">\r\n <h5 class=\"mb-3\">Delete Task</h5>\r\n\r\n <!-- Task Type -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label d-block\">Task Type</label>\r\n <div class=\"d-flex gap-3\">\r\n <div class=\"form-check\">\r\n <input type=\"radio\" class=\"form-check-input\" id=\"deleteTaskTypeFixture\"\r\n name=\"deleteTaskType\" value=\"fixture\"\r\n [(ngModel)]=\"taskType\" (change)=\"onTaskTypeChange()\">\r\n <label class=\"form-check-label\" for=\"deleteTaskTypeFixture\">Fixture Verification</label>\r\n </div>\r\n <div class=\"form-check\">\r\n <input type=\"radio\" class=\"form-check-input\" id=\"deleteTaskTypeZone\"\r\n name=\"deleteTaskType\" value=\"zoneVerification\"\r\n [(ngModel)]=\"taskType\" (change)=\"onTaskTypeChange()\">\r\n <label class=\"form-check-label\" for=\"deleteTaskTypeZone\">Zone Verification</label>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Store Select -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">Store</label>\r\n <lib-store-select\r\n [options]=\"storeOptions\"\r\n [initialSelected]=\"initialStores\"\r\n (selectedChange)=\"onStoresSelected($event)\">\r\n </lib-store-select>\r\n </div>\r\n\r\n <!-- Submit -->\r\n <button class=\"btn btn-danger\" (click)=\"onSubmit()\"\r\n [disabled]=\"isSubmitting || selectedStores.length === 0\">\r\n {{ isSubmitting ? 'Deleting...' : 'Delete Task' }}\r\n </button>\r\n\r\n <!-- Message -->\r\n @if (message) {\r\n <div class=\"mt-3 alert\" [class.alert-success]=\"messageType === 'success'\"\r\n [class.alert-danger]=\"messageType === 'error'\">\r\n {{ message }}\r\n </div>\r\n }\r\n </div>\r\n</section>\r\n" }]
|
|
82
88
|
}], ctorParameters: () => [{ type: i1.StoreBuilderService }, { type: i2.GlobalStateService }] });
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLXRhc2suY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtYnVpbGRlci9zcmMvbGliL2NvbXBvbmVudHMvcGxhbm8tdG9vbHMvZGVsZXRlLXRhc2svZGVsZXRlLXRhc2suY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtYnVpbGRlci9zcmMvbGliL2NvbXBvbmVudHMvcGxhbm8tdG9vbHMvZGVsZXRlLXRhc2svZGVsZXRlLXRhc2suY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFHN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFRdEYsTUFBTSxPQUFPLG1CQUFtQjtJQVlwQjtJQUNBO0lBWlYsUUFBUSxDQUFTO0lBQ2pCLFlBQVksR0FBa0IsRUFBRSxDQUFDO0lBQ2pDLGFBQWEsR0FBa0IsRUFBRSxDQUFDO0lBQ2xDLGNBQWMsR0FBa0IsRUFBRSxDQUFDO0lBQ25DLFlBQVksR0FBWSxLQUFLLENBQUM7SUFDOUIsT0FBTyxHQUFXLEVBQUUsQ0FBQztJQUNyQixXQUFXLEdBQXdCLFNBQVMsQ0FBQztJQUU1QixRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUVoRCxZQUNVLEdBQXdCLEVBQ3hCLEVBQXNCO1FBRHRCLFFBQUcsR0FBSCxHQUFHLENBQXFCO1FBQ3hCLE9BQUUsR0FBRixFQUFFLENBQW9CO0lBQzdCLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLEVBQUUsQ0FBQyxjQUFjO2FBQ25CLElBQUksQ0FDSCxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUN4QixZ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Qix1RENYaEMsazlCQTZCQTs7NEZEbEJhLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN0b3JlQnVpbGRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9zdG9yZS1idWlsZGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktZ2xvYmFsJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsLCBkZWJvdW5jZVRpbWUsIGZpbHRlciwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU3RvcmVPcHRpb24gfSBmcm9tICcuLi8uLi9jb2xsZWN0aW9uLXVwZGF0ZS1haS9jb21wb25lbnRzL3N0b3JlLXNlbGVjdC9zdG9yZS1zZWxlY3QuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWRlbGV0ZS10YXNrJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGVsZXRlLXRhc2suY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9kZWxldGUtdGFzay5jb21wb25lbnQuc2NzcycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEZWxldGVUYXNrQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIGNsaWVudElkOiBzdHJpbmc7XHJcbiAgc3RvcmVPcHRpb25zOiBTdG9yZU9wdGlvbltdID0gW107XHJcbiAgaW5pdGlhbFN0b3JlczogU3RvcmVPcHRpb25bXSA9IFtdO1xyXG4gIHNlbGVjdGVkU3RvcmVzOiBTdG9yZU9wdGlvbltdID0gW107XHJcbiAgaXNTdWJtaXR0aW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgbWVzc2FnZTogc3RyaW5nID0gJyc7XHJcbiAgbWVzc2FnZVR5cGU6ICdzdWNjZXNzJyB8ICdlcnJvcicgPSAnc3VjY2Vzcyc7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgc2JzOiBTdG9yZUJ1aWxkZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBnczogR2xvYmFsU3RhdGVTZXJ2aWNlLFxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcclxuICAgICAgICBkZWJvdW5jZVRpbWUoMjAwKSxcclxuICAgICAgICBmaWx0ZXIoKGRhdGEpID0+ICEhZGF0YSksXHJcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhPy5jbGllbnQpIHtcclxuICAgICAgICAgIHRoaXMuY2xpZW50SWQgPSBkYXRhLmNsaWVudDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbGV0IGhlYWRlckRhdGEgPSBKU09OLnBhcnNlKFxyXG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnaGVhZGVyLWZpbHRlcnMnKSBhcyBzdHJpbmdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLmNsaWVudElkID0gaGVhZGVyRGF0YT8uY2xpZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmxvYWRTdG9yZXMoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBsb2FkU3RvcmVzKCkge1xyXG4gICAgdGhpcy5zYnMuZ2V0U3RvcmVPckNsdXN0ZXJMaXN0KHsgc2VhcmNoTW9kZTogJ3N0b3JlJyB9KS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXM/LmRhdGEpIHtcclxuICAgICAgICB0aGlzLnN0b3JlT3B0aW9ucyA9IHJlcy5kYXRhO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uU3RvcmVzU2VsZWN0ZWQoc3RvcmVzOiBTdG9yZU9wdGlvbltdKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkU3RvcmVzID0gc3RvcmVzO1xyXG4gIH1cclxuXHJcbiAgb25TdWJtaXQoKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZFN0b3Jlcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy5zaG93TWVzc2FnZSgnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgc3RvcmUuJywgJ2Vycm9yJyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgcGF5bG9hZCA9IHtcclxuICAgICAgc3RvcmVOYW1lczogdGhpcy5zZWxlY3RlZFN0b3Jlcy5tYXAoKHMpID0+IHMubGFiZWwpLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmlzU3VibWl0dGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnNicy5kZWxldGVUYXNrRm9yU3RvcmVzKHBheWxvYWQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGxldCBjb3VudCA9IHJlcz8uZGF0YT8uZGVsZXRlZENvdW50IHx8IDA7XHJcbiAgICAgICAgdGhpcy5zaG93TWVzc2FnZShgRGVsZXRlZCAke2NvdW50fSB0YXNrKHMpIHN1Y2Nlc3NmdWxseS5gLCAnc3VjY2VzcycpO1xyXG4gICAgICAgIHRoaXMuaXNTdWJtaXR0aW5nID0gZmFsc2U7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnNob3dNZXNzYWdlKGVycj8uZXJyb3I/Lm1lc3NhZ2UgfHwgJ1NvbWV0aGluZyB3ZW50IHdyb25nLicsICdlcnJvcicpO1xyXG4gICAgICAgIHRoaXMuaXNTdWJtaXR0aW5nID0gZmFsc2U7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNob3dNZXNzYWdlKG1zZzogc3RyaW5nLCB0eXBlOiAnc3VjY2VzcycgfCAnZXJyb3InKSB7XHJcbiAgICB0aGlzLm1lc3NhZ2UgPSBtc2c7XHJcbiAgICB0aGlzLm1lc3NhZ2VUeXBlID0gdHlwZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4gKHRoaXMubWVzc2FnZSA9ICcnKSwgNTAwMCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8c2VjdGlvbiBjbGFzcz1cImRlbGV0ZS10YXNrIHAtM1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJjYXJkIHAtNFwiIHN0eWxlPVwibWF4LXdpZHRoOiA2MDBweDtcIj5cclxuICAgIDxoNSBjbGFzcz1cIm1iLTNcIj5EZWxldGUgVGFzazwvaDU+XHJcblxyXG4gICAgPCEtLSBTdG9yZSBTZWxlY3QgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+U3RvcmU8L2xhYmVsPlxyXG4gICAgICA8bGliLXN0b3JlLXNlbGVjdFxyXG4gICAgICAgIFtvcHRpb25zXT1cInN0b3JlT3B0aW9uc1wiXHJcbiAgICAgICAgW2luaXRpYWxTZWxlY3RlZF09XCJpbml0aWFsU3RvcmVzXCJcclxuICAgICAgICAoc2VsZWN0ZWRDaGFuZ2UpPVwib25TdG9yZXNTZWxlY3RlZCgkZXZlbnQpXCI+XHJcbiAgICAgIDwvbGliLXN0b3JlLXNlbGVjdD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gU3VibWl0IC0tPlxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tZGFuZ2VyXCIgKGNsaWNrKT1cIm9uU3VibWl0KClcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiaXNTdWJtaXR0aW5nIHx8IHNlbGVjdGVkU3RvcmVzLmxlbmd0aCA9PT0gMFwiPlxyXG4gICAgICB7eyBpc1N1Ym1pdHRpbmcgPyAnRGVsZXRpbmcuLi4nIDogJ0RlbGV0ZSBUYXNrJyB9fVxyXG4gICAgPC9idXR0b24+XHJcblxyXG4gICAgPCEtLSBNZXNzYWdlIC0tPlxyXG4gICAgQGlmIChtZXNzYWdlKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtdC0zIGFsZXJ0XCIgW2NsYXNzLmFsZXJ0LXN1Y2Nlc3NdPVwibWVzc2FnZVR5cGUgPT09ICdzdWNjZXNzJ1wiXHJcbiAgICAgICAgW2NsYXNzLmFsZXJ0LWRhbmdlcl09XCJtZXNzYWdlVHlwZSA9PT0gJ2Vycm9yJ1wiPlxyXG4gICAgICAgIHt7IG1lc3NhZ2UgfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbjwvc2VjdGlvbj5cclxuIl19
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLXRhc2suY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtYnVpbGRlci9zcmMvbGliL2NvbXBvbmVudHMvcGxhbm8tdG9vbHMvZGVsZXRlLXRhc2svZGVsZXRlLXRhc2suY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtYnVpbGRlci9zcmMvbGliL2NvbXBvbmVudHMvcGxhbm8tdG9vbHMvZGVsZXRlLXRhc2svZGVsZXRlLXRhc2suY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFHN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBUXRGLE1BQU0sT0FBTyxtQkFBbUI7SUFhcEI7SUFDQTtJQWJWLFFBQVEsQ0FBUztJQUNqQixRQUFRLEdBQW1DLFNBQVMsQ0FBQztJQUNyRCxZQUFZLEdBQWtCLEVBQUUsQ0FBQztJQUNqQyxhQUFhLEdBQWtCLEVBQUUsQ0FBQztJQUNsQyxjQUFjLEdBQWtCLEVBQUUsQ0FBQztJQUNuQyxZQUFZLEdBQVksS0FBSyxDQUFDO0lBQzlCLE9BQU8sR0FBVyxFQUFFLENBQUM7SUFDckIsV0FBVyxHQUF3QixTQUFTLENBQUM7SUFFNUIsUUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFaEQsWUFDVSxHQUF3QixFQUN4QixFQUFzQjtRQUR0QixRQUFHLEdBQUgsR0FBRyxDQUFxQjtRQUN4QixPQUFFLEdBQUYsRUFBRSxDQUFvQjtJQUM3QixDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYzthQUNuQixJQUFJLENBQ0gsU0FBUyxDQUFD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QUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO3dHQXhGVSxtQkFBbUI7NEZBQW5CLG1CQUFtQix1RENYaEMsNjREQWdEQTs7NEZEckNhLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN0b3JlQnVpbGRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9zdG9yZS1idWlsZGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktZ2xvYmFsJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsLCBkZWJvdW5jZVRpbWUsIGZpbHRlciwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU3RvcmVPcHRpb24gfSBmcm9tICcuLi8uLi9jb2xsZWN0aW9uLXVwZGF0ZS1haS9jb21wb25lbnRzL3N0b3JlLXNlbGVjdC9zdG9yZS1zZWxlY3QuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWRlbGV0ZS10YXNrJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGVsZXRlLXRhc2suY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9kZWxldGUtdGFzay5jb21wb25lbnQuc2NzcycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEZWxldGVUYXNrQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIGNsaWVudElkOiBzdHJpbmc7XHJcbiAgdGFza1R5cGU6ICdmaXh0dXJlJyB8ICd6b25lVmVyaWZpY2F0aW9uJyA9ICdmaXh0dXJlJztcclxuICBzdG9yZU9wdGlvbnM6IFN0b3JlT3B0aW9uW10gPSBbXTtcclxuICBpbml0aWFsU3RvcmVzOiBTdG9yZU9wdGlvbltdID0gW107XHJcbiAgc2VsZWN0ZWRTdG9yZXM6IFN0b3JlT3B0aW9uW10gPSBbXTtcclxuICBpc1N1Ym1pdHRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBtZXNzYWdlOiBzdHJpbmcgPSAnJztcclxuICBtZXNzYWdlVHlwZTogJ3N1Y2Nlc3MnIHwgJ2Vycm9yJyA9ICdzdWNjZXNzJztcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBzYnM6IFN0b3JlQnVpbGRlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGdzOiBHbG9iYWxTdGF0ZVNlcnZpY2UsXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWVcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxyXG4gICAgICAgIGRlYm91bmNlVGltZSgyMDApLFxyXG4gICAgICAgIGZpbHRlcigoZGF0YSkgPT4gISFkYXRhKSxcclxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGE/LmNsaWVudCkge1xyXG4gICAgICAgICAgdGhpcy5jbGllbnRJZCA9IGRhdGEuY2xpZW50O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBsZXQgaGVhZGVyRGF0YSA9IEpTT04ucGFyc2UoXHJcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdoZWFkZXItZmlsdGVycycpIGFzIHN0cmluZ1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMuY2xpZW50SWQgPSBoZWFkZXJEYXRhPy5jbGllbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubG9hZFN0b3JlcygpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGxvYWRTdG9yZXMoKSB7XHJcbiAgICB0aGlzLnNicy5nZXRTdG9yZU9yQ2x1c3Rlckxpc3QoeyBzZWFyY2hNb2RlOiAnc3RvcmUnIH0pLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlcz8uZGF0YSkge1xyXG4gICAgICAgIHRoaXMuc3RvcmVPcHRpb25zID0gcmVzLmRhdGE7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25TdG9yZXNTZWxlY3RlZChzdG9yZXM6IFN0b3JlT3B0aW9uW10pIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRTdG9yZXMgPSBzdG9yZXM7XHJcbiAgfVxyXG5cclxuICBvblRhc2tUeXBlQ2hhbmdlKCkge1xyXG4gICAgdGhpcy5tZXNzYWdlID0gJyc7XHJcbiAgfVxyXG5cclxuICBvblN1Ym1pdCgpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkU3RvcmVzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLnNob3dNZXNzYWdlKCdQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBzdG9yZS4nLCAnZXJyb3InKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBwYXlsb2FkID0ge1xyXG4gICAgICBzdG9yZU5hbWVzOiB0aGlzLnNlbGVjdGVkU3RvcmVzLm1hcCgocykgPT4gcy5sYWJlbCksXHJcbiAgICAgIHRhc2tUeXBlOiB0aGlzLnRhc2tUeXBlLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmlzU3VibWl0dGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnNicy5kZWxldGVUYXNrRm9yU3RvcmVzKHBheWxvYWQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGxldCBjb3VudCA9IHJlcz8uZGF0YT8uZGVsZXRlZENvdW50IHx8IDA7XHJcbiAgICAgICAgdGhpcy5zaG93TWVzc2FnZShgRGVsZXRlZCAke2NvdW50fSB0YXNrKHMpIHN1Y2Nlc3NmdWxseS5gLCAnc3VjY2VzcycpO1xyXG4gICAgICAgIHRoaXMuaXNTdWJtaXR0aW5nID0gZmFsc2U7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnNob3dNZXNzYWdlKGVycj8uZXJyb3I/Lm1lc3NhZ2UgfHwgJ1NvbWV0aGluZyB3ZW50IHdyb25nLicsICdlcnJvcicpO1xyXG4gICAgICAgIHRoaXMuaXNTdWJtaXR0aW5nID0gZmFsc2U7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNob3dNZXNzYWdlKG1zZzogc3RyaW5nLCB0eXBlOiAnc3VjY2VzcycgfCAnZXJyb3InKSB7XHJcbiAgICB0aGlzLm1lc3NhZ2UgPSBtc2c7XHJcbiAgICB0aGlzLm1lc3NhZ2VUeXBlID0gdHlwZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4gKHRoaXMubWVzc2FnZSA9ICcnKSwgNTAwMCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8c2VjdGlvbiBjbGFzcz1cImRlbGV0ZS10YXNrIHAtM1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJjYXJkIHAtNFwiIHN0eWxlPVwibWF4LXdpZHRoOiA2MDBweDtcIj5cclxuICAgIDxoNSBjbGFzcz1cIm1iLTNcIj5EZWxldGUgVGFzazwvaDU+XHJcblxyXG4gICAgPCEtLSBUYXNrIFR5cGUgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsIGQtYmxvY2tcIj5UYXNrIFR5cGU8L2xhYmVsPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0zXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2tcIj5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFkaW9cIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiBpZD1cImRlbGV0ZVRhc2tUeXBlRml4dHVyZVwiXHJcbiAgICAgICAgICAgIG5hbWU9XCJkZWxldGVUYXNrVHlwZVwiIHZhbHVlPVwiZml4dHVyZVwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwidGFza1R5cGVcIiAoY2hhbmdlKT1cIm9uVGFza1R5cGVDaGFuZ2UoKVwiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImRlbGV0ZVRhc2tUeXBlRml4dHVyZVwiPkZpeHR1cmUgVmVyaWZpY2F0aW9uPC9sYWJlbD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVja1wiPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJyYWRpb1wiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIGlkPVwiZGVsZXRlVGFza1R5cGVab25lXCJcclxuICAgICAgICAgICAgbmFtZT1cImRlbGV0ZVRhc2tUeXBlXCIgdmFsdWU9XCJ6b25lVmVyaWZpY2F0aW9uXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ0YXNrVHlwZVwiIChjaGFuZ2UpPVwib25UYXNrVHlwZUNoYW5nZSgpXCI+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwiZGVsZXRlVGFza1R5cGVab25lXCI+Wm9uZSBWZXJpZmljYXRpb248L2xhYmVsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gU3RvcmUgU2VsZWN0IC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlN0b3JlPC9sYWJlbD5cclxuICAgICAgPGxpYi1zdG9yZS1zZWxlY3RcclxuICAgICAgICBbb3B0aW9uc109XCJzdG9yZU9wdGlvbnNcIlxyXG4gICAgICAgIFtpbml0aWFsU2VsZWN0ZWRdPVwiaW5pdGlhbFN0b3Jlc1wiXHJcbiAgICAgICAgKHNlbGVjdGVkQ2hhbmdlKT1cIm9uU3RvcmVzU2VsZWN0ZWQoJGV2ZW50KVwiPlxyXG4gICAgICA8L2xpYi1zdG9yZS1zZWxlY3Q+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIFN1Ym1pdCAtLT5cclxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWRhbmdlclwiIChjbGljayk9XCJvblN1Ym1pdCgpXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImlzU3VibWl0dGluZyB8fCBzZWxlY3RlZFN0b3Jlcy5sZW5ndGggPT09IDBcIj5cclxuICAgICAge3sgaXNTdWJtaXR0aW5nID8gJ0RlbGV0aW5nLi4uJyA6ICdEZWxldGUgVGFzaycgfX1cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDwhLS0gTWVzc2FnZSAtLT5cclxuICAgIEBpZiAobWVzc2FnZSkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwibXQtMyBhbGVydFwiIFtjbGFzcy5hbGVydC1zdWNjZXNzXT1cIm1lc3NhZ2VUeXBlID09PSAnc3VjY2VzcydcIlxyXG4gICAgICAgIFtjbGFzcy5hbGVydC1kYW5nZXJdPVwibWVzc2FnZVR5cGUgPT09ICdlcnJvcidcIj5cclxuICAgICAgICB7eyBtZXNzYWdlIH19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG48L3NlY3Rpb24+XHJcbiJdfQ==
|
|
@@ -249,7 +249,9 @@ export class SwapTemplateComponent {
|
|
|
249
249
|
const payload = {
|
|
250
250
|
data: this.rows.map((r) => ({
|
|
251
251
|
storeName,
|
|
252
|
+
fixtureId: r.fixture._id,
|
|
252
253
|
fixtureNumber: r.fixture.fixtureNumber,
|
|
254
|
+
templateId: r.template._id,
|
|
253
255
|
templateName: r.template.fixtureName,
|
|
254
256
|
})),
|
|
255
257
|
};
|
|
@@ -322,4 +324,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
322
324
|
type: Component,
|
|
323
325
|
args: [{ selector: 'lib-swap-template', changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"swap-template p-3\">\r\n <div class=\"card p-4\" style=\"max-width: 900px;\">\r\n <h5 class=\"mb-3\">Swap Fixture Template</h5>\r\n\r\n <!-- Store Select -->\r\n <div class=\"mb-3\">\r\n <lib-reactive-select\r\n label=\"Store\"\r\n [idField]=\"'id'\"\r\n [nameField]=\"'label'\"\r\n [data]=\"storeOptions\"\r\n [search]=\"true\"\r\n [ngModel]=\"selectedStoreId\"\r\n (ngModelChange)=\"onStoreSelected($event)\">\r\n </lib-reactive-select>\r\n </div>\r\n\r\n <ng-container *ngIf=\"selectedStore\">\r\n <ng-container *ngIf=\"isLoadingFixtures; else loaded\">\r\n <div class=\"text-muted mb-3\">Loading fixtures\u2026</div>\r\n </ng-container>\r\n\r\n <ng-template #loaded>\r\n <ng-container *ngIf=\"fixtures.length; else noFixtures\">\r\n <!-- Swap Rows -->\r\n <div class=\"swap-rows\">\r\n <div *ngFor=\"let row of rows; let i = index; trackBy: trackByRow\"\r\n class=\"swap-row mb-3\">\r\n <div class=\"row g-2 align-items-start\">\r\n <!-- Plano Fixture -->\r\n <div class=\"col-5\">\r\n <lib-reactive-select\r\n label=\"Plano Fixture\"\r\n [idField]=\"'_id'\"\r\n [nameField]=\"'displayName'\"\r\n [data]=\"row.fixtureOptions\"\r\n [search]=\"true\"\r\n [ngModel]=\"row.fixtureId\"\r\n (ngModelChange)=\"onRowFixtureChange(row, $event)\">\r\n </lib-reactive-select>\r\n\r\n <div *ngIf=\"row.fixture\" class=\"fixture-info mt-2\">\r\n <div>\r\n <span class=\"label\">Name:</span>\r\n {{ row.fixture.fixtureName || '\u2014' }}\r\n </div>\r\n <div>\r\n <span class=\"label\">Position:</span>\r\n {{ row.wallPosition }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Arrow -->\r\n <div class=\"col-1 d-flex justify-content-center\"\r\n style=\"padding-top: 30px;\">\r\n <span class=\"arrow\">\u2192</span>\r\n </div>\r\n\r\n <!-- Swapping Template -->\r\n <div class=\"col-5\">\r\n <lib-reactive-select\r\n label=\"Swapping Template\"\r\n [idField]=\"'_id'\"\r\n [nameField]=\"'displayName'\"\r\n [subTextField]=\"'subtext'\"\r\n [data]=\"templates\"\r\n [search]=\"true\"\r\n [ngModel]=\"row.templateId\"\r\n (ngModelChange)=\"onRowTemplateChange(row, $event)\">\r\n </lib-reactive-select>\r\n </div>\r\n\r\n <!-- Remove Row -->\r\n <div class=\"col-1 d-flex justify-content-end\"\r\n style=\"padding-top: 30px;\">\r\n <button type=\"button\" class=\"btn btn-link p-0 remove-btn\"\r\n (click)=\"removeRow(i)\" title=\"Remove row\"\r\n [disabled]=\"rows.length === 1 && !row.fixture && !row.template\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 10 10\" fill=\"none\">\r\n <path d=\"M9 1L1 9M1 1L9 9\" stroke=\"#344054\"\r\n stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Add Row -->\r\n <div class=\"mb-3\">\r\n <button type=\"button\" class=\"btn btn-link p-0 add-btn\"\r\n (click)=\"addRow()\" [disabled]=\"!canAddRow\">\r\n + Add another swap\r\n </button>\r\n </div>\r\n\r\n <!-- Actions -->\r\n <div class=\"d-flex gap-2 mt-4\">\r\n <button type=\"button\" class=\"btn btn-outline\" (click)=\"onCancel()\"\r\n [disabled]=\"isSubmitting\">\r\n Cancel\r\n </button>\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"onSubmit()\"\r\n [disabled]=\"!canSubmit || isSubmitting\">\r\n {{ isSubmitting ? 'Submitting\u2026' : 'Submit' }}\r\n </button>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-template #noFixtures>\r\n <div class=\"text-muted\">No fixtures found for this store.</div>\r\n </ng-template>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n</section>\r\n", styles: [".swap-template .swap-row{border:1px solid #eaecf0;border-radius:6px;padding:12px;background:#fcfcfd}.swap-template .fixture-info{font-size:12px;color:#475467;background:#fff;border:1px dashed #eaecf0;border-radius:4px;padding:6px 8px;line-height:1.5}.swap-template .fixture-info .label{font-weight:600;color:#344054;margin-right:4px}.swap-template .arrow{font-size:20px;color:#98a2b3;-webkit-user-select:none;user-select:none}.swap-template .add-btn{color:#1570ef;text-decoration:none;font-weight:500}.swap-template .add-btn:disabled{color:#98a2b3;cursor:not-allowed}.swap-template .remove-btn{line-height:1}.swap-template .remove-btn:disabled{opacity:.4;cursor:not-allowed}\n"] }]
|
|
324
326
|
}], ctorParameters: () => [{ type: i1.StoreBuilderService }, { type: i2.GlobalStateService }, { type: i3.NgbModal }, { type: i4.ToastService }, { type: i0.ChangeDetectorRef }] });
|
|
325
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dhcC10ZW1wbGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS1idWlsZGVyL3NyYy9saWIvY29tcG9uZW50cy9wbGFuby10b29scy9zd2FwLXRlbXBsYXRlL3N3YXAtdGVtcGxhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtYnVpbGRlci9zcmMvbGliL2NvbXBvbmVudHMvcGxhbm8tdG9vbHMvc3dhcC10ZW1wbGF0ZS9zd2FwLXRlbXBsYXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCxVQUFVLEVBQ1YsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sUUFBUSxFQUNSLEdBQUcsRUFFSCxFQUFFLEVBQ0YsV0FBVyxFQUNYLE9BQU8sRUFDUCxTQUFTLEVBQ1QsU0FBUyxFQUNULEdBQUcsR0FDSixNQUFNLE1BQU0sQ0FBQztBQUlkLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDOzs7Ozs7Ozs7QUF5QzdHLE1BQU0sT0FBTyxxQkFBcUI7SUF3QnRCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUEzQlYsUUFBUSxDQUFTO0lBRWpCLFlBQVksR0FBZ0IsRUFBRSxDQUFDO0lBQy9CLGVBQWUsR0FBa0IsSUFBSSxDQUFDO0lBQ3RDLGFBQWEsR0FBcUIsSUFBSSxDQUFDO0lBRXZDLFFBQVEsR0FBa0IsRUFBRSxDQUFDO0lBQzdCLFNBQVMsR0FBbUIsRUFBRSxDQUFDO0lBQy9CLElBQUksR0FBYyxFQUFFLENBQUM7SUFFckIsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQzFCLFlBQVksR0FBRyxLQUFLLENBQUM7SUFFckIsU0FB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LENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNuRCxDQUFDO0lBRU8sS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFhO1FBQ3JDLElBQUk7WUFDRixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQywyQkFBMkIsRUFBRTtnQkFDbkUsUUFBUSxFQUFFLElBQUk7YUFDZixDQUFDLENBQUM7WUFDSCxRQUFRLENBQUMsaUJBQWlCLENBQUMsS0FBSyxHQUFHLHVCQUF1QixDQUFDO1lBQzNELFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEdBQUcsdUJBQXVCLEtBQUssa0hBQWtILENBQUM7WUFDeEwsTUFBTSxNQUFNLEdBQUcsTUFBTSxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQ3JDLE9BQU8sTUFBTSxLQUFLLElBQUksQ0FBQztTQUN4QjtRQUFDLE1BQU07WUFDTixPQUFPLEtBQUssQ0FBQztTQUNkO0lBQ0gsQ0FBQztJQUVELFVBQVUsR0FBRyxDQUFDLENBQVMsRUFBRSxHQUFZLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7SUFFcEQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pDLENBQUM7d0dBdldVLHFCQUFxQjs0RkFBckIscUJBQXFCLHlEQ25FbEMsczJKQXVIQTs7NEZEcERhLHFCQUFxQjtrQkFOakMsU0FBUzsrQkFDRSxtQkFBbUIsbUJBR1osdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQge1xyXG4gIGNhdGNoRXJyb3IsXHJcbiAgZGVib3VuY2VUaW1lLFxyXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxyXG4gIGZpbHRlcixcclxuICBmaW5hbGl6ZSxcclxuICBtYXAsXHJcbiAgT2JzZXJ2YWJsZSxcclxuICBvZixcclxuICBzaGFyZVJlcGxheSxcclxuICBTdWJqZWN0LFxyXG4gIHN3aXRjaE1hcCxcclxuICB0YWtlVW50aWwsXHJcbiAgdGFwLFxyXG59IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktZ2xvYmFsJztcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLXNoYXJlZCc7XHJcbmltcG9ydCB7IFN0b3JlQnVpbGRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9zdG9yZS1idWlsZGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEZWxldGVDb25maXJtYXRpb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9wb3B1cHMvZGVsZXRlLWNvbmZpcm1hdGlvbi9kZWxldGUtY29uZmlybWF0aW9uLmNvbXBvbmVudCc7XHJcblxyXG5pbnRlcmZhY2UgU3RvcmVJdGVtIHtcclxuICBpZDogc3RyaW5nO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbn1cclxuXHJcbmludGVyZmFjZSBGaXh0dXJlSXRlbSB7XHJcbiAgX2lkOiBzdHJpbmc7XHJcbiAgZml4dHVyZU51bWJlcjogbnVtYmVyO1xyXG4gIGZpeHR1cmVOYW1lOiBzdHJpbmc7XHJcbiAgZml4dHVyZUNhdGVnb3J5OiBzdHJpbmc7XHJcbiAgZml4dHVyZVdpZHRoVmFsdWU6IG51bWJlcjtcclxuICBhc3NvY2lhdGVkRWxlbWVudFR5cGU6IHN0cmluZztcclxuICBhc3NvY2lhdGVkRWxlbWVudEZpeHR1cmVOdW1iZXI6IG51bWJlciB8IG51bGw7XHJcbiAgZGlzcGxheU5hbWU6IHN0cmluZztcclxufVxyXG5cclxuaW50ZXJmYWNlIFRlbXBsYXRlSXRlbSB7XHJcbiAgX2lkOiBzdHJpbmc7XHJcbiAgZml4dHVyZU5hbWU6IHN0cmluZztcclxuICBkaXNwbGF5TmFtZTogc3RyaW5nO1xyXG4gIHN1YnRleHQ6IHN0cmluZztcclxufVxyXG5cclxuaW50ZXJmYWNlIFN3YXBSb3cge1xyXG4gIHJvd0lkOiBudW1iZXI7XHJcbiAgZml4dHVyZUlkOiBzdHJpbmcgfCBudWxsO1xyXG4gIHRlbXBsYXRlSWQ6IHN0cmluZyB8IG51bGw7XHJcbiAgZml4dHVyZTogRml4dHVyZUl0ZW0gfCBudWxsO1xyXG4gIHRlbXBsYXRlOiBUZW1wbGF0ZUl0ZW0gfCBudWxsO1xyXG4gIGZpeHR1cmVPcHRpb25zOiBGaXh0dXJlSXRlbVtdO1xyXG4gIHdhbGxQb3NpdGlvbjogc3RyaW5nO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1zd2FwLXRlbXBsYXRlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc3dhcC10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3N3YXAtdGVtcGxhdGUuY29tcG9uZW50LnNjc3MnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3dhcFRlbXBsYXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIGNsaWVudElkOiBzdHJpbmc7XHJcblxyXG4gIHN0b3JlT3B0aW9uczogU3RvcmVJdGVtW10gPSBbXTtcclxuICBzZWxlY3RlZFN0b3JlSWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIHNlbGVjdGVkU3RvcmU6IFN0b3JlSXRlbSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBmaXh0dXJlczogRml4dHVyZUl0ZW1bXSA9IFtdO1xyXG4gIHRlbXBsYXRlczogVGVtcGxhdGVJdGVtW10gPSBbXTtcclxuICByb3dzOiBTd2FwUm93W10gPSBbXTtcclxuXHJcbiAgaXNMb2FkaW5nRml4dHVyZXMgPSBmYWxzZTtcclxuICBpc1N1Ym1pdHRpbmcgPSBmYWxzZTtcclxuXHJcbiAgY2FuQWRkUm93ID0gZmFsc2U7XHJcbiAgY2FuU3VibWl0ID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgc3RvcmVTZWxlY3RlZCQgPSBuZXcgU3ViamVjdDxTdG9yZUl0ZW0+KCk7XHJcbiAgcHJpdmF0ZSB0ZW1wbGF0ZXNDYWNoZSQ6IE9ic2VydmFibGU8VGVtcGxhdGVJdGVtW10+IHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBjYWNoZWRUZW1wbGF0ZXNDbGllbnRJZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSByb3dJZFNlcSA9IDA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBzYnM6IFN0b3JlQnVpbGRlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGdzOiBHbG9iYWxTdGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwsXHJcbiAgICBwcml2YXRlIHRvYXN0OiBUb2FzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWVcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxyXG4gICAgICAgIGRlYm91bmNlVGltZSgyMDApLFxyXG4gICAgICAgIGZpbHRlcigoZGF0YSkgPT4gISFkYXRhKSxcclxuICAgICAgICBtYXAoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGRhdGE/LmNsaWVudCkgcmV0dXJuIGRhdGEuY2xpZW50IGFzIHN0cmluZztcclxuICAgICAgICAgIGNvbnN0IGhlYWRlckRhdGEgPSBKU09OLnBhcnNlKFxyXG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnaGVhZGVyLWZpbHRlcnMnKSBhcyBzdHJpbmcsXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgcmV0dXJuIGhlYWRlckRhdGE/LmNsaWVudCBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgZmlsdGVyKChpZCk6IGlkIGlzIHN0cmluZyA9PiAhIWlkKSxcclxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKGNsaWVudElkKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jbGllbnRJZCA9IGNsaWVudElkO1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVzQ2FjaGUkID0gbnVsbDtcclxuICAgICAgICB0aGlzLmNhY2hlZFRlbXBsYXRlc0NsaWVudElkID0gbnVsbDtcclxuICAgICAgICB0aGlzLnJlc2V0U2VsZWN0aW9uKCk7XHJcbiAgICAgICAgdGhpcy5sb2FkU3RvcmVzKCk7XHJcbiAgICAgICAgdGhpcy5wcmVmZXRjaFRlbXBsYXRlcygpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLnN0b3JlU2VsZWN0ZWQkXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcclxuICAgICAgICB0YXAoKHN0b3JlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkU3RvcmUgPSBzdG9yZTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRTdG9yZUlkID0gc3RvcmUuaWQ7XHJcbiAgICAgICAgICB0aGlzLmZpeHR1cmVzID0gW107XHJcbiAgICAgICAgICB0aGlzLnJvd3MgPSBbXTtcclxuICAgICAgICAgIHRoaXMucmVjb21wdXRlRmxhZ3MoKTtcclxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nRml4dHVyZXMgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgc3dpdGNoTWFwKChzdG9yZSkgPT5cclxuICAgICAgICAgIHRoaXMuc2JzXHJcbiAgICAgICAgICAgIC5nZXRGaXh0dXJlRGV0YWlsc0J5U3RvcmUoc3RvcmUubGFiZWwsIHRoaXMuY2xpZW50SWQpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoeyBkYXRhOiBbXSB9KSksXHJcbiAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmdGaXh0dXJlcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgKSxcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGZpeHR1cmVEYXRhOiBhbnlbXSA9IHJlcz8uZGF0YSB8fCBbXTtcclxuICAgICAgICB0aGlzLmZpeHR1cmVzID0gZml4dHVyZURhdGEubWFwKChmKSA9PiAoe1xyXG4gICAgICAgICAgX2lkOiBmLl9pZCxcclxuICAgICAgICAgIGZpeHR1cmVOdW1iZXI6IGYuZml4dHVyZU51bWJlcixcclxuICAgICAgICAgIGZpeHR1cmVOYW1lOiBmLmZpeHR1cmVOYW1lIHx8ICcnLFxyXG4gICAgICAgICAgZml4dHVyZUNhdGVnb3J5OiBmLmZpeHR1cmVDYXRlZ29yeSB8fCAnJyxcclxuICAgICAgICAgIGZpeHR1cmVXaWR0aFZhbHVlOiBmLmZpeHR1cmVXaWR0aFZhbHVlID8/IDAsXHJcbiAgICAgICAgICBhc3NvY2lhdGVkRWxlbWVudFR5cGU6IGYuYXNzb2NpYXRlZEVsZW1lbnRUeXBlIHx8ICcnLFxyXG4gICAgICAgICAgYXNzb2NpYXRlZEVsZW1lbnRGaXh0dXJlTnVtYmVyOlxyXG4gICAgICAgICAgICBmLmFzc29jaWF0ZWRFbGVtZW50Rml4dHVyZU51bWJlciA/PyBudWxsLFxyXG4gICAgICAgICAgZGlzcGxheU5hbWU6IGBGaXh0dXJlICR7Zi5maXh0dXJlTnVtYmVyfWAsXHJcbiAgICAgICAgfSkpO1xyXG4gICAgICAgIHRoaXMucm93cyA9IHRoaXMuZml4dHVyZXMubGVuZ3RoID8gW3RoaXMubWFrZUVtcHR5Um93KCldIDogW107XHJcbiAgICAgICAgdGhpcy5yZWNvbXB1dGVGbGFncygpO1xyXG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGxvYWRTdG9yZXMoKSB7XHJcbiAgICB0aGlzLnNic1xyXG4gICAgICAuZ2V0U3RvcmVPckNsdXN0ZXJMaXN0KHsgc2VhcmNoTW9kZTogJ3N0b3JlJyB9KVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zdG9yZU9wdGlvbnMgPSByZXM/LmRhdGEgfHwgW107XHJcbiAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnN0b3JlT3B0aW9ucyA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHByZWZldGNoVGVtcGxhdGVzKCkge1xyXG4gICAgdGhpcy5nZXRDYWNoZWRUZW1wbGF0ZXMoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6ICh0ZW1wbGF0ZXMpID0+IHtcclxuICAgICAgICAgIHRoaXMudGVtcGxhdGVzID0gdGVtcGxhdGVzO1xyXG4gICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy50ZW1wbGF0ZXMgPSBbXTtcclxuICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRDYWNoZWRUZW1wbGF0ZXMoKTogT2JzZXJ2YWJsZTxUZW1wbGF0ZUl0ZW1bXT4ge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnRlbXBsYXRlc0NhY2hlJCAmJlxyXG4gICAgICB0aGlzLmNhY2hlZFRlbXBsYXRlc0NsaWVudElkID09PSB0aGlzLmNsaWVudElkXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIHRoaXMudGVtcGxhdGVzQ2FjaGUkO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jYWNoZWRUZW1wbGF0ZXNDbGllbnRJZCA9IHRoaXMuY2xpZW50SWQ7XHJcbiAgICB0aGlzLnRlbXBsYXRlc0NhY2hlJCA9IHRoaXMuc2JzXHJcbiAgICAgIC5nZXRBbGxUZW1wbGF0ZXMoeyBjbGllbnRJZDogdGhpcy5jbGllbnRJZCB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCB0cGxEYXRhOiBhbnlbXSA9IHJlcz8uZGF0YSB8fCBbXTtcclxuICAgICAgICAgIHJldHVybiB0cGxEYXRhLm1hcCgodCkgPT4gKHtcclxuICAgICAgICAgICAgX2lkOiB0Ll9pZCxcclxuICAgICAgICAgICAgZml4dHVyZU5hbWU6IHQuZml4dHVyZU5hbWUsXHJcbiAgICAgICAgICAgIGRpc3BsYXlOYW1lOiB0LmZpeHR1cmVOYW1lPy5pbmNsdWRlcygnLWZ0JylcclxuICAgICAgICAgICAgICA/IHQuZml4dHVyZU5hbWVcclxuICAgICAgICAgICAgICA6IGAke3QuZml4dHVyZU5hbWV9IC0gJHt0LmZpeHR1cmVXaWR0aD8udmFsdWUgPz8gJyd9ICR7XHJcbiAgICAgICAgICAgICAgICAgIHQuZml4dHVyZVdpZHRoPy51bml0ID8/ICcnXHJcbiAgICAgICAgICAgICAgICB9YCxcclxuICAgICAgICAgICAgc3VidGV4dDogKHQucHJvZHVjdEJyYW5kTmFtZSB8fCBbXSkuam9pbignLCAnKSxcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiBmYWxzZSB9KSxcclxuICAgICAgKTtcclxuICAgIHJldHVybiB0aGlzLnRlbXBsYXRlc0NhY2hlJDtcclxuICB9XHJcblxyXG4gIG9uU3RvcmVTZWxlY3RlZChzdG9yZUlkOiBzdHJpbmcgfCBudWxsKSB7XHJcbiAgICBpZiAoIXN0b3JlSWQgfHwgc3RvcmVJZCA9PT0gdGhpcy5zZWxlY3RlZFN0b3JlPy5pZCkgcmV0dXJuO1xyXG4gICAgY29uc3Qgc3RvcmUgPSB0aGlzLnN0b3JlT3B0aW9ucy5maW5kKChzKSA9PiBzLmlkID09PSBzdG9yZUlkKTtcclxuICAgIGlmICghc3RvcmUpIHJldHVybjtcclxuICAgIHRoaXMuc3RvcmVTZWxlY3RlZCQubmV4dChzdG9yZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG1ha2VFbXB0eVJvdygpOiBTd2FwUm93IHtcclxuICAgIGNvbnN0IHJvdzogU3dhcFJvdyA9IHtcclxuICAgICAgcm93SWQ6ICsrdGhpcy5yb3dJZFNlcSxcclxuICAgICAgZml4dHVyZUlkOiBudWxsLFxyXG4gICAgICB0ZW1wbGF0ZUlkOiBudWxsLFxyXG4gICAgICBmaXh0dXJlOiBudWxsLFxyXG4gICAgICB0ZW1wbGF0ZTogbnVsbCxcclxuICAgICAgZml4dHVyZU9wdGlvbnM6IFtdLFxyXG4gICAgICB3YWxsUG9zaXRpb246ICcnLFxyXG4gICAgfTtcclxuICAgIHJvdy5maXh0dXJlT3B0aW9ucyA9IHRoaXMuY29tcHV0ZUZpeHR1cmVPcHRpb25zKHJvdyk7XHJcbiAgICByZXR1cm4gcm93O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb21wdXRlRml4dHVyZU9wdGlvbnMoZXhjbHVkZVJvdzogU3dhcFJvdyB8IG51bGwpOiBGaXh0dXJlSXRlbVtdIHtcclxuICAgIGNvbnN0IHVzZWRJZHMgPSBuZXcgU2V0KFxyXG4gICAgICB0aGlzLnJvd3NcclxuICAgICAgICAuZmlsdGVyKChyKSA9PiByICE9PSBleGNsdWRlUm93ICYmIHI/LmZpeHR1cmUpXHJcbiAgICAgICAgLm1hcCgocikgPT4gci5maXh0dXJlIS5faWQpLFxyXG4gICAgKTtcclxuICAgIHJldHVybiB0aGlzLmZpeHR1cmVzLmZpbHRlcigoZikgPT4gIXVzZWRJZHMuaGFzKGYuX2lkKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlZnJlc2hBbGxGaXh0dXJlT3B0aW9ucygpIHtcclxuICAgIHRoaXMucm93cy5mb3JFYWNoKChyKSA9PiB7XHJcbiAgICAgIHIuZml4dHVyZU9wdGlvbnMgPSB0aGlzLmNvbXB1dGVGaXh0dXJlT3B0aW9ucyhyKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb21wdXRlV2FsbFBvc2l0aW9uKGZpeHR1cmU6IEZpeHR1cmVJdGVtIHwgbnVsbCk6IHN0cmluZyB7XHJcbiAgICBpZiAoIWZpeHR1cmUpIHJldHVybiAnJztcclxuICAgIGlmIChcclxuICAgICAgZml4dHVyZS5hc3NvY2lhdGVkRWxlbWVudFR5cGUgPT09ICd3YWxsJyAmJlxyXG4gICAgICBmaXh0dXJlLmFzc29jaWF0ZWRFbGVtZW50Rml4dHVyZU51bWJlciAhPSBudWxsXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIGBXYWxsICR7Zml4dHVyZS5hc3NvY2lhdGVkRWxlbWVudEZpeHR1cmVOdW1iZXJ9YDtcclxuICAgIH1cclxuICAgIGlmIChmaXh0dXJlLmFzc29jaWF0ZWRFbGVtZW50VHlwZSA9PT0gJ2Zsb29yJykgcmV0dXJuICdGbG9vcic7XHJcbiAgICByZXR1cm4gZml4dHVyZS5hc3NvY2lhdGVkRWxlbWVudFR5cGVcclxuICAgICAgPyBmaXh0dXJlLmFzc29jaWF0ZWRFbGVtZW50VHlwZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArXHJcbiAgICAgICAgICBmaXh0dXJlLmFzc29jaWF0ZWRFbGVtZW50VHlwZS5zbGljZSgxKVxyXG4gICAgICA6ICfigJQnO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWNvbXB1dGVGbGFncygpIHtcclxuICAgIGNvbnN0IGxhc3QgPSB0aGlzLnJvd3NbdGhpcy5yb3dzLmxlbmd0aCAtIDFdO1xyXG4gICAgdGhpcy5jYW5BZGRSb3cgPVxyXG4gICAgICB0aGlzLnJvd3MubGVuZ3RoID4gMCAmJlxyXG4gICAgICB0aGlzLnJvd3MubGVuZ3RoIDwgdGhpcy5maXh0dXJlcy5sZW5ndGggJiZcclxuICAgICAgISFsYXN0Py5maXh0dXJlICYmXHJcbiAgICAgICEhbGFzdD8udGVtcGxhdGU7XHJcblxyXG4gICAgdGhpcy5jYW5TdWJtaXQgPVxyXG4gICAgICAhIXRoaXMuc2VsZWN0ZWRTdG9yZSAmJlxyXG4gICAgICB0aGlzLnJvd3MubGVuZ3RoID4gMCAmJlxyXG4gICAgICB0aGlzLnJvd3MuZXZlcnkoKHIpID0+ICEhci5maXh0dXJlICYmICEhci50ZW1wbGF0ZSk7XHJcbiAgfVxyXG5cclxuICBvblJvd0ZpeHR1cmVDaGFuZ2Uocm93OiBTd2FwUm93LCBmaXh0dXJlSWQ6IHN0cmluZyB8IG51bGwpIHtcclxuICAgIHJvdy5maXh0dXJlSWQgPSBmaXh0dXJlSWQ7XHJcbiAgICByb3cuZml4dHVyZSA9IGZpeHR1cmVJZFxyXG4gICAgICA/IHRoaXMuZml4dHVyZXMuZmluZCgoZikgPT4gZi5faWQgPT09IGZpeHR1cmVJZCkgfHwgbnVsbFxyXG4gICAgICA6IG51bGw7XHJcbiAgICByb3cud2FsbFBvc2l0aW9uID0gdGhpcy5jb21wdXRlV2FsbFBvc2l0aW9uKHJvdy5maXh0dXJlKTtcclxuICAgIHRoaXMucmVmcmVzaEFsbEZpeHR1cmVPcHRpb25zKCk7XHJcbiAgICB0aGlzLnJlY29tcHV0ZUZsYWdzKCk7XHJcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIG9uUm93VGVtcGxhdGVDaGFuZ2Uocm93OiBTd2FwUm93LCB0ZW1wbGF0ZUlkOiBzdHJpbmcgfCBudWxsKSB7XHJcbiAgICByb3cudGVtcGxhdGVJZCA9IHRlbXBsYXRlSWQ7XHJcbiAgICByb3cudGVtcGxhdGUgPSB0ZW1wbGF0ZUlkXHJcbiAgICAgID8gdGhpcy50ZW1wbGF0ZXMuZmluZCgodCkgPT4gdC5faWQgPT09IHRlbXBsYXRlSWQpIHx8IG51bGxcclxuICAgICAgOiBudWxsO1xyXG4gICAgdGhpcy5yZWNvbXB1dGVGbGFncygpO1xyXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBhZGRSb3coKSB7XHJcbiAgICBpZiAoIXRoaXMuY2FuQWRkUm93KSByZXR1cm47XHJcbiAgICB0aGlzLnJvd3MucHVzaCh0aGlzLm1ha2VFbXB0eVJvdygpKTtcclxuICAgIHRoaXMucmVjb21wdXRlRmxhZ3MoKTtcclxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlUm93KGluZGV4OiBudW1iZXIpIHtcclxuICAgIGlmICh0aGlzLnJvd3MubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgIHRoaXMucm93c1swXSA9IHRoaXMubWFrZUVtcHR5Um93KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJvd3Muc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIH1cclxuICAgIHRoaXMucmVmcmVzaEFsbEZpeHR1cmVPcHRpb25zKCk7XHJcbiAgICB0aGlzLnJlY29tcHV0ZUZsYWdzKCk7XHJcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIG9uQ2FuY2VsKCkge1xyXG4gICAgdGhpcy5yZXNldFNlbGVjdGlvbigpO1xyXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc2V0U2VsZWN0aW9uKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFN0b3JlID0gbnVsbDtcclxuICAgIHRoaXMuc2VsZWN0ZWRTdG9yZUlkID0gbnVsbDtcclxuICAgIHRoaXMuZml4dHVyZXMgPSBbXTtcclxuICAgIHRoaXMucm93cyA9IFtdO1xyXG4gICAgdGhpcy5pc0xvYWRpbmdGaXh0dXJlcyA9IGZhbHNlO1xyXG4gICAgdGhpcy5yZWNvbXB1dGVGbGFncygpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgb25TdWJtaXQoKSB7XHJcbiAgICBpZiAoIXRoaXMuY2FuU3VibWl0IHx8ICF0aGlzLnNlbGVjdGVkU3RvcmUgfHwgdGhpcy5pc1N1Ym1pdHRpbmcpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBzdG9yZU5hbWUgPSB0aGlzLnNlbGVjdGVkU3RvcmUubGFiZWw7XHJcbiAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICBkYXRhOiB0aGlzLnJvd3MubWFwKChyKSA9PiAoe1xyXG4gICAgICAgIHN0b3JlTmFtZSxcclxuICAgICAgICBmaXh0dXJlTnVtYmVyOiByLmZpeHR1cmUhLmZpeHR1cmVOdW1iZXIsXHJcbiAgICAgICAgdGVtcGxhdGVOYW1lOiByLnRlbXBsYXRlIS5maXh0dXJlTmFtZSxcclxuICAgICAgfSkpLFxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBjb25maXJtZWQgPSBhd2FpdCB0aGlzLmNvbmZpcm1Td2FwKHBheWxvYWQuZGF0YS5sZW5ndGgpO1xyXG4gICAgaWYgKCFjb25maXJtZWQpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmlzU3VibWl0dGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIHRoaXMuc2JzXHJcbiAgICAgIC5zd2FwRml4dHVyZVRlbXBsYXRlKHBheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBzdWNjZXNzQ291bnQgPSByZXM/LmRhdGE/LnN1Y2Nlc3NDb3VudCA/PyAwO1xyXG4gICAgICAgICAgY29uc3QgZXJyb3JDb3VudCA9IHJlcz8uZGF0YT8uZXJyb3JDb3VudCA/PyAwO1xyXG4gICAgICAgICAgY29uc3QgZXJyb3JzID0gcmVzPy5kYXRhPy5lcnJvcnMgfHwgW107XHJcbiAgICAgICAgICBpZiAoZXJyb3JDb3VudCA9PT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0LmdldFN1Y2Nlc3NUb2FzdChcclxuICAgICAgICAgICAgICBgU3dhcHBlZCAke3N1Y2Nlc3NDb3VudH0gZml4dHVyZSB0ZW1wbGF0ZShzKSBzdWNjZXNzZnVsbHkuYCxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5vbkNhbmNlbCgpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChzdWNjZXNzQ291bnQgPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0V2FybmluZ1RvYXN0KFxyXG4gICAgICAgICAgICAgIGBQYXJ0aWFsOiAke3N1Y2Nlc3NDb3VudH0gc3VjY2VlZGVkLCAke2Vycm9yQ291bnR9IGZhaWxlZC4gJHt0aGlzLnN1bW1hcml6ZUVycm9ycyhlcnJvcnMpfWAsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoXHJcbiAgICAgICAgICAgICAgYEFsbCAke2Vycm9yQ291bnR9IHN3YXAocykgZmFpbGVkLiAke3RoaXMuc3VtbWFyaXplRXJyb3JzKGVycm9ycyl9YCxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuaXNTdWJtaXR0aW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChcclxuICAgICAgICAgICAgZXJyPy5lcnJvcj8ubWVzc2FnZSB8fCAnRmFpbGVkIHRvIHN3YXAgZml4dHVyZSB0ZW1wbGF0ZS4nLFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMuaXNTdWJtaXR0aW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3VtbWFyaXplRXJyb3JzKFxyXG4gICAgZXJyb3JzOiB7IGZpeHR1cmVOdW1iZXI6IG51bWJlcjsgZXJyb3I6IHN0cmluZyB9W10sXHJcbiAgKTogc3RyaW5nIHtcclxuICAgIGlmICghZXJyb3JzPy5sZW5ndGgpIHJldHVybiAnJztcclxuICAgIGNvbnN0IGZpcnN0ID0gZXJyb3JzXHJcbiAgICAgIC5zbGljZSgwLCAyKVxyXG4gICAgICAubWFwKChlKSA9PiBgIyR7ZS5maXh0dXJlTnVtYmVyfTogJHtlLmVycm9yfWApXHJcbiAgICAgIC5qb2luKCc7ICcpO1xyXG4gICAgcmV0dXJuIGVycm9ycy5sZW5ndGggPiAyID8gYCR7Zmlyc3R9OyDigKZgIDogZmlyc3Q7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGNvbmZpcm1Td2FwKGNvdW50OiBudW1iZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IG1vZGVsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihEZWxldGVDb25maXJtYXRpb25Db21wb25lbnQsIHtcclxuICAgICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICAgfSk7XHJcbiAgICAgIG1vZGVsUmVmLmNvbXBvbmVudEluc3RhbmNlLnRpdGxlID0gJ0NvbmZpcm0gdGVtcGxhdGUgc3dhcCc7XHJcbiAgICAgIG1vZGVsUmVmLmNvbXBvbmVudEluc3RhbmNlLmRlc2NyaXB0aW9uID0gYFRoaXMgd2lsbCBvdmVyd3JpdGUgJHtjb3VudH0gZml4dHVyZShzKSB3aXRoIHRoZSBjaG9zZW4gdGVtcGxhdGVzIGFuZCBkZWxldGUgdGhlaXIgZXhpc3Rpbmcgc2hlbHZlcy4gVGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZS4gQ29udGludWU/YDtcclxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbW9kZWxSZWYucmVzdWx0O1xyXG4gICAgICByZXR1cm4gcmVzdWx0ID09PSAnb2snO1xyXG4gICAgfSBjYXRjaCB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRyYWNrQnlSb3cgPSAoXzogbnVtYmVyLCByb3c6IFN3YXBSb3cpID0+IHJvdy5yb3dJZDtcclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICAgIHRoaXMuc3RvcmVTZWxlY3RlZCQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIiwiPHNlY3Rpb24gY2xhc3M9XCJzd2FwLXRlbXBsYXRlIHAtM1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJjYXJkIHAtNFwiIHN0eWxlPVwibWF4LXdpZHRoOiA5MDBweDtcIj5cclxuICAgIDxoNSBjbGFzcz1cIm1iLTNcIj5Td2FwIEZpeHR1cmUgVGVtcGxhdGU8L2g1PlxyXG5cclxuICAgIDwhLS0gU3RvcmUgU2VsZWN0IC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgPGxpYi1yZWFjdGl2ZS1zZWxlY3RcclxuICAgICAgICBsYWJlbD1cIlN0b3JlXCJcclxuICAgICAgICBbaWRGaWVsZF09XCInaWQnXCJcclxuICAgICAgICBbbmFtZUZpZWxkXT1cIidsYWJlbCdcIlxyXG4gICAgICAgIFtkYXRhXT1cInN0b3JlT3B0aW9uc1wiXHJcbiAgICAgICAgW3NlYXJjaF09XCJ0cnVlXCJcclxuICAgICAgICBbbmdNb2RlbF09XCJzZWxlY3RlZFN0b3JlSWRcIlxyXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uU3RvcmVTZWxlY3RlZCgkZXZlbnQpXCI+XHJcbiAgICAgIDwvbGliLXJlYWN0aXZlLXNlbGVjdD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZFN0b3JlXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0xvYWRpbmdGaXh0dXJlczsgZWxzZSBsb2FkZWRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBtYi0zXCI+TG9hZGluZyBmaXh0dXJlc+KApjwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjbG9hZGVkPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaXh0dXJlcy5sZW5ndGg7IGVsc2Ugbm9GaXh0dXJlc1wiPlxyXG4gICAgICAgICAgPCEtLSBTd2FwIFJvd3MgLS0+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3dhcC1yb3dzXCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHJvdyBvZiByb3dzOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5Um93XCJcclxuICAgICAgICAgICAgICBjbGFzcz1cInN3YXAtcm93IG1iLTNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGctMiBhbGlnbi1pdGVtcy1zdGFydFwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBQbGFubyBGaXh0dXJlIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC01XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxsaWItcmVhY3RpdmUtc2VsZWN0XHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJQbGFubyBGaXh0dXJlXCJcclxuICAgICAgICAgICAgICAgICAgICBbaWRGaWVsZF09XCInX2lkJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW25hbWVGaWVsZF09XCInZGlzcGxheU5hbWUnXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGF0YV09XCJyb3cuZml4dHVyZU9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzZWFyY2hdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwicm93LmZpeHR1cmVJZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25Sb3dGaXh0dXJlQ2hhbmdlKHJvdywgJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L2xpYi1yZWFjdGl2ZS1zZWxlY3Q+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicm93LmZpeHR1cmVcIiBjbGFzcz1cImZpeHR1cmUtaW5mbyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5OYW1lOjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IHJvdy5maXh0dXJlLmZpeHR1cmVOYW1lIHx8ICfigJQnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5Qb3NpdGlvbjo8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyByb3cud2FsbFBvc2l0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBBcnJvdyAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwicGFkZGluZy10b3A6IDMwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj7ihpI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFN3YXBwaW5nIFRlbXBsYXRlIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC01XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxsaWItcmVhY3RpdmUtc2VsZWN0XHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJTd2FwcGluZyBUZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2lkRmllbGRdPVwiJ19pZCdcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuYW1lRmllbGRdPVwiJ2Rpc3BsYXlOYW1lJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N1YlRleHRGaWVsZF09XCInc3VidGV4dCdcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkYXRhXT1cInRlbXBsYXRlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NlYXJjaF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJyb3cudGVtcGxhdGVJZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25Sb3dUZW1wbGF0ZUNoYW5nZShyb3csICRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgPC9saWItcmVhY3RpdmUtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBSZW1vdmUgUm93IC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCJcclxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwYWRkaW5nLXRvcDogMzBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWxpbmsgcC0wIHJlbW92ZS1idG5cIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVSb3coaSlcIiB0aXRsZT1cIlJlbW92ZSByb3dcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyb3dzLmxlbmd0aCA9PT0gMSAmJiAhcm93LmZpeHR1cmUgJiYgIXJvdy50ZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDEwIDEwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOSAxTDEgOU0xIDFMOSA5XCIgc3Ryb2tlPVwiIzM0NDA1NFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gQWRkIFJvdyAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHAtMCBhZGQtYnRuXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkUm93KClcIiBbZGlzYWJsZWRdPVwiIWNhbkFkZFJvd1wiPlxyXG4gICAgICAgICAgICAgICsgQWRkIGFub3RoZXIgc3dhcFxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gQWN0aW9ucyAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTIgbXQtNFwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZVwiIChjbGljayk9XCJvbkNhbmNlbCgpXCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNTdWJtaXR0aW5nXCI+XHJcbiAgICAgICAgICAgICAgQ2FuY2VsXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJvblN1Ym1pdCgpXCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNhblN1Ym1pdCB8fCBpc1N1Ym1pdHRpbmdcIj5cclxuICAgICAgICAgICAgICB7eyBpc1N1Ym1pdHRpbmcgPyAnU3VibWl0dGluZ+KApicgOiAnU3VibWl0JyB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI25vRml4dHVyZXM+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZFwiPk5vIGZpeHR1cmVzIGZvdW5kIGZvciB0aGlzIHN0b3JlLjwvZGl2PlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9zZWN0aW9uPlxyXG4iXX0=
|
|
327
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dhcC10ZW1wbGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS1idWlsZGVyL3NyYy9saWIvY29tcG9uZW50cy9wbGFuby10b29scy9zd2FwLXRlbXBsYXRlL3N3YXAtdGVtcGxhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtYnVpbGRlci9zcmMvbGliL2NvbXBvbmVudHMvcGxhbm8tdG9vbHMvc3dhcC10ZW1wbGF0ZS9zd2FwLXRlbXBsYXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCxVQUFVLEVBQ1YsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sUUFBUSxFQUNSLEdBQUcsRUFFSCxFQUFFLEVBQ0YsV0FBVyxFQUNYLE9BQU8sRUFDUCxTQUFTLEVBQ1QsU0FBUyxFQUNULEdBQUcsR0FDSixNQUFNLE1BQU0sQ0FBQztBQUlkLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDOzs7Ozs7Ozs7QUF5QzdHLE1BQU0sT0FBTyxxQkFBcUI7SUF3QnRCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUEzQlYsUUFBUSxDQUFTO0lBRWpCLFlBQVksR0FBZ0IsRUFBRSxDQUFDO0lBQy9CLGVBQWUsR0FBa0IsSUFBSSxDQUFDO0lBQ3RDLGFBQWEsR0FBcUIsSUFBSSxDQUFDO0lBRXZDLFFBQVEsR0FBa0IsRUFBRSxDQUFDO0lBQzdCLFNBQVMsR0FBbUIsRUFBRSxDQUFDO0lBQy9CLElBQUksR0FBYyxFQUFFLENBQUM7SUFFckIsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQzFCLFlBQVksR0FBRyxLQUFLLENBQUM7SUFFckIsU0FB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U3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQge1xyXG4gIGNhdGNoRXJyb3IsXHJcbiAgZGVib3VuY2VUaW1lLFxyXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxyXG4gIGZpbHRlcixcclxuICBmaW5hbGl6ZSxcclxuICBtYXAsXHJcbiAgT2JzZXJ2YWJsZSxcclxuICBvZixcclxuICBzaGFyZVJlcGxheSxcclxuICBTdWJqZWN0LFxyXG4gIHN3aXRjaE1hcCxcclxuICB0YWtlVW50aWwsXHJcbiAgdGFwLFxyXG59IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktZ2xvYmFsJztcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLXNoYXJlZCc7XHJcbmltcG9ydCB7IFN0b3JlQnVpbGRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9zdG9yZS1idWlsZGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEZWxldGVDb25maXJtYXRpb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9wb3B1cHMvZGVsZXRlLWNvbmZpcm1hdGlvbi9kZWxldGUtY29uZmlybWF0aW9uLmNvbXBvbmVudCc7XHJcblxyXG5pbnRlcmZhY2UgU3RvcmVJdGVtIHtcclxuICBpZDogc3RyaW5nO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbn1cclxuXHJcbmludGVyZmFjZSBGaXh0dXJlSXRlbSB7XHJcbiAgX2lkOiBzdHJpbmc7XHJcbiAgZml4dHVyZU51bWJlcjogbnVtYmVyO1xyXG4gIGZpeHR1cmVOYW1lOiBzdHJpbmc7XHJcbiAgZml4dHVyZUNhdGVnb3J5OiBzdHJpbmc7XHJcbiAgZml4dHVyZVdpZHRoVmFsdWU6IG51bWJlcjtcclxuICBhc3NvY2lhdGVkRWxlbWVudFR5cGU6IHN0cmluZztcclxuICBhc3NvY2lhdGVkRWxlbWVudEZpeHR1cmVOdW1iZXI6IG51bWJlciB8IG51bGw7XHJcbiAgZGlzcGxheU5hbWU6IHN0cmluZztcclxufVxyXG5cclxuaW50ZXJmYWNlIFRlbXBsYXRlSXRlbSB7XHJcbiAgX2lkOiBzdHJpbmc7XHJcbiAgZml4dHVyZU5hbWU6IHN0cmluZztcclxuICBkaXNwbGF5TmFtZTogc3RyaW5nO1xyXG4gIHN1YnRleHQ6IHN0cmluZztcclxufVxyXG5cclxuaW50ZXJmYWNlIFN3YXBSb3cge1xyXG4gIHJvd0lkOiBudW1iZXI7XHJcbiAgZml4dHVyZUlkOiBzdHJpbmcgfCBudWxsO1xyXG4gIHRlbXBsYXRlSWQ6IHN0cmluZyB8IG51bGw7XHJcbiAgZml4dHVyZTogRml4dHVyZUl0ZW0gfCBudWxsO1xyXG4gIHRlbXBsYXRlOiBUZW1wbGF0ZUl0ZW0gfCBudWxsO1xyXG4gIGZpeHR1cmVPcHRpb25zOiBGaXh0dXJlSXRlbVtdO1xyXG4gIHdhbGxQb3NpdGlvbjogc3RyaW5nO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1zd2FwLXRlbXBsYXRlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc3dhcC10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3N3YXAtdGVtcGxhdGUuY29tcG9uZW50LnNjc3MnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3dhcFRlbXBsYXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIGNsaWVudElkOiBzdHJpbmc7XHJcblxyXG4gIHN0b3JlT3B0aW9uczogU3RvcmVJdGVtW10gPSBbXTtcclxuICBzZWxlY3RlZFN0b3JlSWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIHNlbGVjdGVkU3RvcmU6IFN0b3JlSXRlbSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBmaXh0dXJlczogRml4dHVyZUl0ZW1bXSA9IFtdO1xyXG4gIHRlbXBsYXRlczogVGVtcGxhdGVJdGVtW10gPSBbXTtcclxuICByb3dzOiBTd2FwUm93W10gPSBbXTtcclxuXHJcbiAgaXNMb2FkaW5nRml4dHVyZXMgPSBmYWxzZTtcclxuICBpc1N1Ym1pdHRpbmcgPSBmYWxzZTtcclxuXHJcbiAgY2FuQWRkUm93ID0gZmFsc2U7XHJcbiAgY2FuU3VibWl0ID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgc3RvcmVTZWxlY3RlZCQgPSBuZXcgU3ViamVjdDxTdG9yZUl0ZW0+KCk7XHJcbiAgcHJpdmF0ZSB0ZW1wbGF0ZXNDYWNoZSQ6IE9ic2VydmFibGU8VGVtcGxhdGVJdGVtW10+IHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBjYWNoZWRUZW1wbGF0ZXNDbGllbnRJZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSByb3dJZFNlcSA9IDA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBzYnM6IFN0b3JlQnVpbGRlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGdzOiBHbG9iYWxTdGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwsXHJcbiAgICBwcml2YXRlIHRvYXN0OiBUb2FzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWVcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxyXG4gICAgICAgIGRlYm91bmNlVGltZSgyMDApLFxyXG4gICAgICAgIGZpbHRlcigoZGF0YSkgPT4gISFkYXRhKSxcclxuICAgICAgICBtYXAoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGRhdGE/LmNsaWVudCkgcmV0dXJuIGRhdGEuY2xpZW50IGFzIHN0cmluZztcclxuICAgICAgICAgIGNvbnN0IGhlYWRlckRhdGEgPSBKU09OLnBhcnNlKFxyXG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnaGVhZGVyLWZpbHRlcnMnKSBhcyBzdHJpbmcsXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgcmV0dXJuIGhlYWRlckRhdGE/LmNsaWVudCBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgZmlsdGVyKChpZCk6IGlkIGlzIHN0cmluZyA9PiAhIWlkKSxcclxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKGNsaWVudElkKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jbGllbnRJZCA9IGNsaWVudElkO1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVzQ2FjaGUkID0gbnVsbDtcclxuICAgICAgICB0aGlzLmNhY2hlZFRlbXBsYXRlc0NsaWVudElkID0gbnVsbDtcclxuICAgICAgICB0aGlzLnJlc2V0U2VsZWN0aW9uKCk7XHJcbiAgICAgICAgdGhpcy5sb2FkU3RvcmVzKCk7XHJcbiAgICAgICAgdGhpcy5wcmVmZXRjaFRlbXBsYXRlcygpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLnN0b3JlU2VsZWN0ZWQkXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcclxuICAgICAgICB0YXAoKHN0b3JlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkU3RvcmUgPSBzdG9yZTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRTdG9yZUlkID0gc3RvcmUuaWQ7XHJcbiAgICAgICAgICB0aGlzLmZpeHR1cmVzID0gW107XHJcbiAgICAgICAgICB0aGlzLnJvd3MgPSBbXTtcclxuICAgICAgICAgIHRoaXMucmVjb21wdXRlRmxhZ3MoKTtcclxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nRml4dHVyZXMgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgc3dpdGNoTWFwKChzdG9yZSkgPT5cclxuICAgICAgICAgIHRoaXMuc2JzXHJcbiAgICAgICAgICAgIC5nZXRGaXh0dXJlRGV0YWlsc0J5U3RvcmUoc3RvcmUubGFiZWwsIHRoaXMuY2xpZW50SWQpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoeyBkYXRhOiBbXSB9KSksXHJcbiAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmdGaXh0dXJlcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgKSxcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGZpeHR1cmVEYXRhOiBhbnlbXSA9IHJlcz8uZGF0YSB8fCBbXTtcclxuICAgICAgICB0aGlzLmZpeHR1cmVzID0gZml4dHVyZURhdGEubWFwKChmKSA9PiAoe1xyXG4gICAgICAgICAgX2lkOiBmLl9pZCxcclxuICAgICAgICAgIGZpeHR1cmVOdW1iZXI6IGYuZml4dHVyZU51bWJlcixcclxuICAgICAgICAgIGZpeHR1cmVOYW1lOiBmLmZpeHR1cmVOYW1lIHx8ICcnLFxyXG4gICAgICAgICAgZml4dHVyZUNhdGVnb3J5OiBmLmZpeHR1cmVDYXRlZ29yeSB8fCAnJyxcclxuICAgICAgICAgIGZpeHR1cmVXaWR0aFZhbHVlOiBmLmZpeHR1cmVXaWR0aFZhbHVlID8/IDAsXHJcbiAgICAgICAgICBhc3NvY2lhdGVkRWxlbWVudFR5cGU6IGYuYXNzb2NpYXRlZEVsZW1lbnRUeXBlIHx8ICcnLFxyXG4gICAgICAgICAgYXNzb2NpYXRlZEVsZW1lbnRGaXh0dXJlTnVtYmVyOlxyXG4gICAgICAgICAgICBmLmFzc29jaWF0ZWRFbGVtZW50Rml4dHVyZU51bWJlciA/PyBudWxsLFxyXG4gICAgICAgICAgZGlzcGxheU5hbWU6IGBGaXh0dXJlICR7Zi5maXh0dXJlTnVtYmVyfWAsXHJcbiAgICAgICAgfSkpO1xyXG4gICAgICAgIHRoaXMucm93cyA9IHRoaXMuZml4dHVyZXMubGVuZ3RoID8gW3RoaXMubWFrZUVtcHR5Um93KCldIDogW107XHJcbiAgICAgICAgdGhpcy5yZWNvbXB1dGVGbGFncygpO1xyXG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGxvYWRTdG9yZXMoKSB7XHJcbiAgICB0aGlzLnNic1xyXG4gICAgICAuZ2V0U3RvcmVPckNsdXN0ZXJMaXN0KHsgc2VhcmNoTW9kZTogJ3N0b3JlJyB9KVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zdG9yZU9wdGlvbnMgPSByZXM/LmRhdGEgfHwgW107XHJcbiAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnN0b3JlT3B0aW9ucyA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHByZWZldGNoVGVtcGxhdGVzKCkge1xyXG4gICAgdGhpcy5nZXRDYWNoZWRUZW1wbGF0ZXMoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6ICh0ZW1wbGF0ZXMpID0+IHtcclxuICAgICAgICAgIHRoaXMudGVtcGxhdGVzID0gdGVtcGxhdGVzO1xyXG4gICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy50ZW1wbGF0ZXMgPSBbXTtcclxuICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRDYWNoZWRUZW1wbGF0ZXMoKTogT2JzZXJ2YWJsZTxUZW1wbGF0ZUl0ZW1bXT4ge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnRlbXBsYXRlc0NhY2hlJCAmJlxyXG4gICAgICB0aGlzLmNhY2hlZFRlbXBsYXRlc0NsaWVudElkID09PSB0aGlzLmNsaWVudElkXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIHRoaXMudGVtcGxhdGVzQ2FjaGUkO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jYWNoZWRUZW1wbGF0ZXNDbGllbnRJZCA9IHRoaXMuY2xpZW50SWQ7XHJcbiAgICB0aGlzLnRlbXBsYXRlc0NhY2hlJCA9IHRoaXMuc2JzXHJcbiAgICAgIC5nZXRBbGxUZW1wbGF0ZXMoeyBjbGllbnRJZDogdGhpcy5jbGllbnRJZCB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCB0cGxEYXRhOiBhbnlbXSA9IHJlcz8uZGF0YSB8fCBbXTtcclxuICAgICAgICAgIHJldHVybiB0cGxEYXRhLm1hcCgodCkgPT4gKHtcclxuICAgICAgICAgICAgX2lkOiB0Ll9pZCxcclxuICAgICAgICAgICAgZml4dHVyZU5hbWU6IHQuZml4dHVyZU5hbWUsXHJcbiAgICAgICAgICAgIGRpc3BsYXlOYW1lOiB0LmZpeHR1cmVOYW1lPy5pbmNsdWRlcygnLWZ0JylcclxuICAgICAgICAgICAgICA/IHQuZml4dHVyZU5hbWVcclxuICAgICAgICAgICAgICA6IGAke3QuZml4dHVyZU5hbWV9IC0gJHt0LmZpeHR1cmVXaWR0aD8udmFsdWUgPz8gJyd9ICR7XHJcbiAgICAgICAgICAgICAgICAgIHQuZml4dHVyZVdpZHRoPy51bml0ID8/ICcnXHJcbiAgICAgICAgICAgICAgICB9YCxcclxuICAgICAgICAgICAgc3VidGV4dDogKHQucHJvZHVjdEJyYW5kTmFtZSB8fCBbXSkuam9pbignLCAnKSxcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiBmYWxzZSB9KSxcclxuICAgICAgKTtcclxuICAgIHJldHVybiB0aGlzLnRlbXBsYXRlc0NhY2hlJDtcclxuICB9XHJcblxyXG4gIG9uU3RvcmVTZWxlY3RlZChzdG9yZUlkOiBzdHJpbmcgfCBudWxsKSB7XHJcbiAgICBpZiAoIXN0b3JlSWQgfHwgc3RvcmVJZCA9PT0gdGhpcy5zZWxlY3RlZFN0b3JlPy5pZCkgcmV0dXJuO1xyXG4gICAgY29uc3Qgc3RvcmUgPSB0aGlzLnN0b3JlT3B0aW9ucy5maW5kKChzKSA9PiBzLmlkID09PSBzdG9yZUlkKTtcclxuICAgIGlmICghc3RvcmUpIHJldHVybjtcclxuICAgIHRoaXMuc3RvcmVTZWxlY3RlZCQubmV4dChzdG9yZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG1ha2VFbXB0eVJvdygpOiBTd2FwUm93IHtcclxuICAgIGNvbnN0IHJvdzogU3dhcFJvdyA9IHtcclxuICAgICAgcm93SWQ6ICsrdGhpcy5yb3dJZFNlcSxcclxuICAgICAgZml4dHVyZUlkOiBudWxsLFxyXG4gICAgICB0ZW1wbGF0ZUlkOiBudWxsLFxyXG4gICAgICBmaXh0dXJlOiBudWxsLFxyXG4gICAgICB0ZW1wbGF0ZTogbnVsbCxcclxuICAgICAgZml4dHVyZU9wdGlvbnM6IFtdLFxyXG4gICAgICB3YWxsUG9zaXRpb246ICcnLFxyXG4gICAgfTtcclxuICAgIHJvdy5maXh0dXJlT3B0aW9ucyA9IHRoaXMuY29tcHV0ZUZpeHR1cmVPcHRpb25zKHJvdyk7XHJcbiAgICByZXR1cm4gcm93O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb21wdXRlRml4dHVyZU9wdGlvbnMoZXhjbHVkZVJvdzogU3dhcFJvdyB8IG51bGwpOiBGaXh0dXJlSXRlbVtdIHtcclxuICAgIGNvbnN0IHVzZWRJZHMgPSBuZXcgU2V0KFxyXG4gICAgICB0aGlzLnJvd3NcclxuICAgICAgICAuZmlsdGVyKChyKSA9PiByICE9PSBleGNsdWRlUm93ICYmIHI/LmZpeHR1cmUpXHJcbiAgICAgICAgLm1hcCgocikgPT4gci5maXh0dXJlIS5faWQpLFxyXG4gICAgKTtcclxuICAgIHJldHVybiB0aGlzLmZpeHR1cmVzLmZpbHRlcigoZikgPT4gIXVzZWRJZHMuaGFzKGYuX2lkKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlZnJlc2hBbGxGaXh0dXJlT3B0aW9ucygpIHtcclxuICAgIHRoaXMucm93cy5mb3JFYWNoKChyKSA9PiB7XHJcbiAgICAgIHIuZml4dHVyZU9wdGlvbnMgPSB0aGlzLmNvbXB1dGVGaXh0dXJlT3B0aW9ucyhyKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb21wdXRlV2FsbFBvc2l0aW9uKGZpeHR1cmU6IEZpeHR1cmVJdGVtIHwgbnVsbCk6IHN0cmluZyB7XHJcbiAgICBpZiAoIWZpeHR1cmUpIHJldHVybiAnJztcclxuICAgIGlmIChcclxuICAgICAgZml4dHVyZS5hc3NvY2lhdGVkRWxlbWVudFR5cGUgPT09ICd3YWxsJyAmJlxyXG4gICAgICBmaXh0dXJlLmFzc29jaWF0ZWRFbGVtZW50Rml4dHVyZU51bWJlciAhPSBudWxsXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIGBXYWxsICR7Zml4dHVyZS5hc3NvY2lhdGVkRWxlbWVudEZpeHR1cmVOdW1iZXJ9YDtcclxuICAgIH1cclxuICAgIGlmIChmaXh0dXJlLmFzc29jaWF0ZWRFbGVtZW50VHlwZSA9PT0gJ2Zsb29yJykgcmV0dXJuICdGbG9vcic7XHJcbiAgICByZXR1cm4gZml4dHVyZS5hc3NvY2lhdGVkRWxlbWVudFR5cGVcclxuICAgICAgPyBmaXh0dXJlLmFzc29jaWF0ZWRFbGVtZW50VHlwZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArXHJcbiAgICAgICAgICBmaXh0dXJlLmFzc29jaWF0ZWRFbGVtZW50VHlwZS5zbGljZSgxKVxyXG4gICAgICA6ICfigJQnO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWNvbXB1dGVGbGFncygpIHtcclxuICAgIGNvbnN0IGxhc3QgPSB0aGlzLnJvd3NbdGhpcy5yb3dzLmxlbmd0aCAtIDFdO1xyXG4gICAgdGhpcy5jYW5BZGRSb3cgPVxyXG4gICAgICB0aGlzLnJvd3MubGVuZ3RoID4gMCAmJlxyXG4gICAgICB0aGlzLnJvd3MubGVuZ3RoIDwgdGhpcy5maXh0dXJlcy5sZW5ndGggJiZcclxuICAgICAgISFsYXN0Py5maXh0dXJlICYmXHJcbiAgICAgICEhbGFzdD8udGVtcGxhdGU7XHJcblxyXG4gICAgdGhpcy5jYW5TdWJtaXQgPVxyXG4gICAgICAhIXRoaXMuc2VsZWN0ZWRTdG9yZSAmJlxyXG4gICAgICB0aGlzLnJvd3MubGVuZ3RoID4gMCAmJlxyXG4gICAgICB0aGlzLnJvd3MuZXZlcnkoKHIpID0+ICEhci5maXh0dXJlICYmICEhci50ZW1wbGF0ZSk7XHJcbiAgfVxyXG5cclxuICBvblJvd0ZpeHR1cmVDaGFuZ2Uocm93OiBTd2FwUm93LCBmaXh0dXJlSWQ6IHN0cmluZyB8IG51bGwpIHtcclxuICAgIHJvdy5maXh0dXJlSWQgPSBmaXh0dXJlSWQ7XHJcbiAgICByb3cuZml4dHVyZSA9IGZpeHR1cmVJZFxyXG4gICAgICA/IHRoaXMuZml4dHVyZXMuZmluZCgoZikgPT4gZi5faWQgPT09IGZpeHR1cmVJZCkgfHwgbnVsbFxyXG4gICAgICA6IG51bGw7XHJcbiAgICByb3cud2FsbFBvc2l0aW9uID0gdGhpcy5jb21wdXRlV2FsbFBvc2l0aW9uKHJvdy5maXh0dXJlKTtcclxuICAgIHRoaXMucmVmcmVzaEFsbEZpeHR1cmVPcHRpb25zKCk7XHJcbiAgICB0aGlzLnJlY29tcHV0ZUZsYWdzKCk7XHJcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIG9uUm93VGVtcGxhdGVDaGFuZ2Uocm93OiBTd2FwUm93LCB0ZW1wbGF0ZUlkOiBzdHJpbmcgfCBudWxsKSB7XHJcbiAgICByb3cudGVtcGxhdGVJZCA9IHRlbXBsYXRlSWQ7XHJcbiAgICByb3cudGVtcGxhdGUgPSB0ZW1wbGF0ZUlkXHJcbiAgICAgID8gdGhpcy50ZW1wbGF0ZXMuZmluZCgodCkgPT4gdC5faWQgPT09IHRlbXBsYXRlSWQpIHx8IG51bGxcclxuICAgICAgOiBudWxsO1xyXG4gICAgdGhpcy5yZWNvbXB1dGVGbGFncygpO1xyXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBhZGRSb3coKSB7XHJcbiAgICBpZiAoIXRoaXMuY2FuQWRkUm93KSByZXR1cm47XHJcbiAgICB0aGlzLnJvd3MucHVzaCh0aGlzLm1ha2VFbXB0eVJvdygpKTtcclxuICAgIHRoaXMucmVjb21wdXRlRmxhZ3MoKTtcclxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlUm93KGluZGV4OiBudW1iZXIpIHtcclxuICAgIGlmICh0aGlzLnJvd3MubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgIHRoaXMucm93c1swXSA9IHRoaXMubWFrZUVtcHR5Um93KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJvd3Muc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIH1cclxuICAgIHRoaXMucmVmcmVzaEFsbEZpeHR1cmVPcHRpb25zKCk7XHJcbiAgICB0aGlzLnJlY29tcHV0ZUZsYWdzKCk7XHJcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIG9uQ2FuY2VsKCkge1xyXG4gICAgdGhpcy5yZXNldFNlbGVjdGlvbigpO1xyXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc2V0U2VsZWN0aW9uKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFN0b3JlID0gbnVsbDtcclxuICAgIHRoaXMuc2VsZWN0ZWRTdG9yZUlkID0gbnVsbDtcclxuICAgIHRoaXMuZml4dHVyZXMgPSBbXTtcclxuICAgIHRoaXMucm93cyA9IFtdO1xyXG4gICAgdGhpcy5pc0xvYWRpbmdGaXh0dXJlcyA9IGZhbHNlO1xyXG4gICAgdGhpcy5yZWNvbXB1dGVGbGFncygpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgb25TdWJtaXQoKSB7XHJcbiAgICBpZiAoIXRoaXMuY2FuU3VibWl0IHx8ICF0aGlzLnNlbGVjdGVkU3RvcmUgfHwgdGhpcy5pc1N1Ym1pdHRpbmcpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBzdG9yZU5hbWUgPSB0aGlzLnNlbGVjdGVkU3RvcmUubGFiZWw7XHJcbiAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICBkYXRhOiB0aGlzLnJvd3MubWFwKChyKSA9PiAoe1xyXG4gICAgICAgIHN0b3JlTmFtZSxcclxuICAgICAgICBmaXh0dXJlSWQ6IHIuZml4dHVyZSEuX2lkLFxyXG4gICAgICAgIGZpeHR1cmVOdW1iZXI6IHIuZml4dHVyZSEuZml4dHVyZU51bWJlcixcclxuICAgICAgICB0ZW1wbGF0ZUlkOiByLnRlbXBsYXRlIS5faWQsXHJcbiAgICAgICAgdGVtcGxhdGVOYW1lOiByLnRlbXBsYXRlIS5maXh0dXJlTmFtZSxcclxuICAgICAgfSkpLFxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBjb25maXJtZWQgPSBhd2FpdCB0aGlzLmNvbmZpcm1Td2FwKHBheWxvYWQuZGF0YS5sZW5ndGgpO1xyXG4gICAgaWYgKCFjb25maXJtZWQpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmlzU3VibWl0dGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIHRoaXMuc2JzXHJcbiAgICAgIC5zd2FwRml4dHVyZVRlbXBsYXRlKHBheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBzdWNjZXNzQ291bnQgPSByZXM/LmRhdGE/LnN1Y2Nlc3NDb3VudCA/PyAwO1xyXG4gICAgICAgICAgY29uc3QgZXJyb3JDb3VudCA9IHJlcz8uZGF0YT8uZXJyb3JDb3VudCA/PyAwO1xyXG4gICAgICAgICAgY29uc3QgZXJyb3JzID0gcmVzPy5kYXRhPy5lcnJvcnMgfHwgW107XHJcbiAgICAgICAgICBpZiAoZXJyb3JDb3VudCA9PT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0LmdldFN1Y2Nlc3NUb2FzdChcclxuICAgICAgICAgICAgICBgU3dhcHBlZCAke3N1Y2Nlc3NDb3VudH0gZml4dHVyZSB0ZW1wbGF0ZShzKSBzdWNjZXNzZnVsbHkuYCxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5vbkNhbmNlbCgpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChzdWNjZXNzQ291bnQgPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0V2FybmluZ1RvYXN0KFxyXG4gICAgICAgICAgICAgIGBQYXJ0aWFsOiAke3N1Y2Nlc3NDb3VudH0gc3VjY2VlZGVkLCAke2Vycm9yQ291bnR9IGZhaWxlZC4gJHt0aGlzLnN1bW1hcml6ZUVycm9ycyhlcnJvcnMpfWAsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoXHJcbiAgICAgICAgICAgICAgYEFsbCAke2Vycm9yQ291bnR9IHN3YXAocykgZmFpbGVkLiAke3RoaXMuc3VtbWFyaXplRXJyb3JzKGVycm9ycyl9YCxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuaXNTdWJtaXR0aW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChcclxuICAgICAgICAgICAgZXJyPy5lcnJvcj8ubWVzc2FnZSB8fCAnRmFpbGVkIHRvIHN3YXAgZml4dHVyZSB0ZW1wbGF0ZS4nLFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMuaXNTdWJtaXR0aW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3VtbWFyaXplRXJyb3JzKFxyXG4gICAgZXJyb3JzOiB7IGZpeHR1cmVOdW1iZXI6IG51bWJlcjsgZXJyb3I6IHN0cmluZyB9W10sXHJcbiAgKTogc3RyaW5nIHtcclxuICAgIGlmICghZXJyb3JzPy5sZW5ndGgpIHJldHVybiAnJztcclxuICAgIGNvbnN0IGZpcnN0ID0gZXJyb3JzXHJcbiAgICAgIC5zbGljZSgwLCAyKVxyXG4gICAgICAubWFwKChlKSA9PiBgIyR7ZS5maXh0dXJlTnVtYmVyfTogJHtlLmVycm9yfWApXHJcbiAgICAgIC5qb2luKCc7ICcpO1xyXG4gICAgcmV0dXJuIGVycm9ycy5sZW5ndGggPiAyID8gYCR7Zmlyc3R9OyDigKZgIDogZmlyc3Q7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGNvbmZpcm1Td2FwKGNvdW50OiBudW1iZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IG1vZGVsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihEZWxldGVDb25maXJtYXRpb25Db21wb25lbnQsIHtcclxuICAgICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICAgfSk7XHJcbiAgICAgIG1vZGVsUmVmLmNvbXBvbmVudEluc3RhbmNlLnRpdGxlID0gJ0NvbmZpcm0gdGVtcGxhdGUgc3dhcCc7XHJcbiAgICAgIG1vZGVsUmVmLmNvbXBvbmVudEluc3RhbmNlLmRlc2NyaXB0aW9uID0gYFRoaXMgd2lsbCBvdmVyd3JpdGUgJHtjb3VudH0gZml4dHVyZShzKSB3aXRoIHRoZSBjaG9zZW4gdGVtcGxhdGVzIGFuZCBkZWxldGUgdGhlaXIgZXhpc3Rpbmcgc2hlbHZlcy4gVGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZS4gQ29udGludWU/YDtcclxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbW9kZWxSZWYucmVzdWx0O1xyXG4gICAgICByZXR1cm4gcmVzdWx0ID09PSAnb2snO1xyXG4gICAgfSBjYXRjaCB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRyYWNrQnlSb3cgPSAoXzogbnVtYmVyLCByb3c6IFN3YXBSb3cpID0+IHJvdy5yb3dJZDtcclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICAgIHRoaXMuc3RvcmVTZWxlY3RlZCQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIiwiPHNlY3Rpb24gY2xhc3M9XCJzd2FwLXRlbXBsYXRlIHAtM1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJjYXJkIHAtNFwiIHN0eWxlPVwibWF4LXdpZHRoOiA5MDBweDtcIj5cclxuICAgIDxoNSBjbGFzcz1cIm1iLTNcIj5Td2FwIEZpeHR1cmUgVGVtcGxhdGU8L2g1PlxyXG5cclxuICAgIDwhLS0gU3RvcmUgU2VsZWN0IC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgPGxpYi1yZWFjdGl2ZS1zZWxlY3RcclxuICAgICAgICBsYWJlbD1cIlN0b3JlXCJcclxuICAgICAgICBbaWRGaWVsZF09XCInaWQnXCJcclxuICAgICAgICBbbmFtZUZpZWxkXT1cIidsYWJlbCdcIlxyXG4gICAgICAgIFtkYXRhXT1cInN0b3JlT3B0aW9uc1wiXHJcbiAgICAgICAgW3NlYXJjaF09XCJ0cnVlXCJcclxuICAgICAgICBbbmdNb2RlbF09XCJzZWxlY3RlZFN0b3JlSWRcIlxyXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uU3RvcmVTZWxlY3RlZCgkZXZlbnQpXCI+XHJcbiAgICAgIDwvbGliLXJlYWN0aXZlLXNlbGVjdD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZFN0b3JlXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0xvYWRpbmdGaXh0dXJlczsgZWxzZSBsb2FkZWRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBtYi0zXCI+TG9hZGluZyBmaXh0dXJlc+KApjwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjbG9hZGVkPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaXh0dXJlcy5sZW5ndGg7IGVsc2Ugbm9GaXh0dXJlc1wiPlxyXG4gICAgICAgICAgPCEtLSBTd2FwIFJvd3MgLS0+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3dhcC1yb3dzXCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHJvdyBvZiByb3dzOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5Um93XCJcclxuICAgICAgICAgICAgICBjbGFzcz1cInN3YXAtcm93IG1iLTNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGctMiBhbGlnbi1pdGVtcy1zdGFydFwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBQbGFubyBGaXh0dXJlIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC01XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxsaWItcmVhY3RpdmUtc2VsZWN0XHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJQbGFubyBGaXh0dXJlXCJcclxuICAgICAgICAgICAgICAgICAgICBbaWRGaWVsZF09XCInX2lkJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW25hbWVGaWVsZF09XCInZGlzcGxheU5hbWUnXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGF0YV09XCJyb3cuZml4dHVyZU9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzZWFyY2hdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwicm93LmZpeHR1cmVJZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25Sb3dGaXh0dXJlQ2hhbmdlKHJvdywgJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L2xpYi1yZWFjdGl2ZS1zZWxlY3Q+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicm93LmZpeHR1cmVcIiBjbGFzcz1cImZpeHR1cmUtaW5mbyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5OYW1lOjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IHJvdy5maXh0dXJlLmZpeHR1cmVOYW1lIHx8ICfigJQnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5Qb3NpdGlvbjo8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyByb3cud2FsbFBvc2l0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBBcnJvdyAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwicGFkZGluZy10b3A6IDMwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3dcIj7ihpI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIFN3YXBwaW5nIFRlbXBsYXRlIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC01XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxsaWItcmVhY3RpdmUtc2VsZWN0XHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJTd2FwcGluZyBUZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2lkRmllbGRdPVwiJ19pZCdcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuYW1lRmllbGRdPVwiJ2Rpc3BsYXlOYW1lJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N1YlRleHRGaWVsZF09XCInc3VidGV4dCdcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkYXRhXT1cInRlbXBsYXRlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NlYXJjaF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJyb3cudGVtcGxhdGVJZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25Sb3dUZW1wbGF0ZUNoYW5nZShyb3csICRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgPC9saWItcmVhY3RpdmUtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBSZW1vdmUgUm93IC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCJcclxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwYWRkaW5nLXRvcDogMzBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWxpbmsgcC0wIHJlbW92ZS1idG5cIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVSb3coaSlcIiB0aXRsZT1cIlJlbW92ZSByb3dcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyb3dzLmxlbmd0aCA9PT0gMSAmJiAhcm93LmZpeHR1cmUgJiYgIXJvdy50ZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDEwIDEwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOSAxTDEgOU0xIDFMOSA5XCIgc3Ryb2tlPVwiIzM0NDA1NFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gQWRkIFJvdyAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHAtMCBhZGQtYnRuXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkUm93KClcIiBbZGlzYWJsZWRdPVwiIWNhbkFkZFJvd1wiPlxyXG4gICAgICAgICAgICAgICsgQWRkIGFub3RoZXIgc3dhcFxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gQWN0aW9ucyAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTIgbXQtNFwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZVwiIChjbGljayk9XCJvbkNhbmNlbCgpXCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNTdWJtaXR0aW5nXCI+XHJcbiAgICAgICAgICAgICAgQ2FuY2VsXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJvblN1Ym1pdCgpXCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNhblN1Ym1pdCB8fCBpc1N1Ym1pdHRpbmdcIj5cclxuICAgICAgICAgICAgICB7eyBpc1N1Ym1pdHRpbmcgPyAnU3VibWl0dGluZ+KApicgOiAnU3VibWl0JyB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI25vRml4dHVyZXM+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZFwiPk5vIGZpeHR1cmVzIGZvdW5kIGZvciB0aGlzIHN0b3JlLjwvZGl2PlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9zZWN0aW9uPlxyXG4iXX0=
|