verben-workflow-ui 0.5.73 → 0.5.75

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.
@@ -67,10 +67,17 @@ export class FlowableStatusComponent extends BaseDataViewComponent {
67
67
  }
68
68
  }
69
69
  async onSave(data) {
70
- const payload = {
70
+ const merged = {
71
71
  ...this.currentData?.data,
72
72
  ...data,
73
- DataState: this.currentData?.data?.DataState === ObjectState.New ? ObjectState.New : ObjectState.Changed,
73
+ };
74
+ // A record is new only when it has no Code yet (the backend always assigns
75
+ // Code on persisted records). Don't trust the loaded DataState here: records
76
+ // returned from the backend come through unchanged and report DataState
77
+ // 'New', which would force an insert (and thus duplicate) on every edit.
78
+ const payload = {
79
+ ...merged,
80
+ DataState: merged.Code ? ObjectState.Changed : ObjectState.New,
74
81
  };
75
82
  await this.facade.addRequest(payload);
76
83
  }
@@ -119,4 +126,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
119
126
  type: Component,
120
127
  args: [{ selector: 'lib-flowable-status', template: "<div class=\"space-y-8\">\n <verben-data-view #vdv [viewState]=\"{\n isSearch: true,\n isColumn: true,\n isFilter: true,\n isSort: true,\n isExport: true,\n isSelect: true,\n isCreate: true,\n isToggle: true,\n }\" [buttonClass]=\"'my-custom-button-class'\" [iconClass]=\"'my-icon-class'\"\n [activeIconClass]=\"'my-active-icon-class'\" [selectedColumnCount]=\"selectedColumnCount\"\n [selectedSortCount]=\"selectedSortCount\" [selectedFilterTableCount]=\"selectedFilterTableCount\"\n (viewChange)=\"onViewChange($event)\" (stateChange)=\"onStateChange($event)\"\n (onSearchChange)=\"handleSearch($event)\" (createClick)=\"vdv.toggleView()\">\n <div table-content>\n <lib-data-table [data]=\"data()\" [columns]=\"config.columns\" [styleConfig]=\"styles\"\n [formGroupConfig]=\"formGroupConfig()\" (selectionChange)=\"onSelectionChange($event)\"\n (rowSave)=\"onSave($event.data)\">\n <ng-container libColumn=\"date\">\n <ng-template #cell let-row=\"row\" let-value>\n {{ value | date }}\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"name\">\n <ng-template #cellEdit let-control=\"control\">\n <verbena-input name=\"Name\" [formControl]=\"control\" placeHolder=\"Enter Name\" />\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"description\">\n <ng-template #cellEdit let-control=\"control\">\n <verbena-input name=\"Description\" [formControl]=\"control\" placeHolder=\"Enter Description\" />\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"actions\">\n <ng-template #cell let-value let-isEditing=\"isEditing\" let-toggleRowEdit=\"toggleRowEdit\"\n let-deleteRow=\"deleteRow\">\n <div class=\"flex gap-6\">\n <verben-svg (click)=\"toggleRowEdit()\" icon=\"edit\" [width]=\"15\" [height]=\"15\"\n class=\"cursor-pointer\"></verben-svg>\n\n <verben-svg icon=\"delete\" [width]=\"15\" [height]=\"15\" (click)=\"deleteRow()\"\n class=\"cursor-pointer\"></verben-svg>\n </div>\n </ng-template>\n\n <ng-template #cellEdit let-value let-deleteRow let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\" let-row=\"row\" let-rowIndex=\"rowIndex\">\n <div class=\"flex gap-6\">\n <verben-svg (click)=\"toggleRowEdit()\" icon=\"tick\" [width]=\"15\" [height]=\"15\"\n class=\"cursor-pointer\"></verben-svg>\n\n <verben-svg icon=\"delete\" [width]=\"15\" [height]=\"15\" (click)=\"toggleRowEdit()\"\n class=\"cursor-pointer\"></verben-svg>\n </div>\n </ng-template>\n </ng-container>\n </lib-data-table>\n </div>\n <div card-content>\n <verben-card-data-view borderRadius=\"12px\" (loadMoreClick)=\"loadMore()\" #vdcv dataId=\"Id\" border=\"5px\"\n [cardDataList]=\"cardData()\" rbgColor=\"#f5f6f9\" mg=\"20px\">\n <verben-left-card-data-view class=\"space-y-7\">\n <verben-left-card-data #vlcd [parent]=\"vdcv\" dataId=\"Id\"\n class=\"bg-secondary-100 rounded-xl border-primary border-[1px]\" [cardDataList]=\"cardData()\">\n <ng-template #card let-item>\n <div (click)=\"currentData = vdcv.onItemClick(item)\" class=\"flex\">\n <div (click)=\"currentData = vdcv.onItemClick(item)\"\n class=\"flex cursor-pointer w-full bg-secondary rounded-xl\">\n <div class=\"w-3 rounded-xl rounded-tr-none rounded-br-none\" [ngClass]=\"\n item.selected ? 'bg-primary' : 'bg-secondary-200'\n \"></div>\n <div class=\"flex flex-col py-2 px-4 w-full\">\n <div class=\"flex items-center gap-4 justify-between\">\n <div class=\"grid gap-y-2\">\n <span class=\"font-semibold text-[#404040]\">{{\n item.title\n }}</span>\n <p class=\"flex items-center gap-1\">\n <label for=\"desc\"\n class=\"text-[10px] font-light\">Description:</label>\n <span id=\"desc\" class=\"text-sm\">{{\n item.data.Description\n }}</span>\n </p>\n </div>\n\n <div class=\"grid gap-y-1\">\n <p class=\"grid\">\n <label for=\"name\"\n class=\"text-[10px] font-light text-[#404040]\">Name</label>\n <span id=\"name\" class=\"text-sm font-medium\">{{\n item.data?.Name\n }}</span>\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n </verben-left-card-data>\n </verben-left-card-data-view>\n\n <verben-right-card-data-view>\n <ng-template #parent>\n <flowable-status-form [currentData]=\"currentData\" (switchView)=\"vdv.toggleView()\"\n (onSave)=\"onSave($event)\"></flowable-status-form>\n </ng-template>\n </verben-right-card-data-view>\n\n <verben-card-data-view-footer class=\"w-full\">\n <div [ngClass]=\"{\n 'flex gap-2 items-center': true,\n 'justify-end': true\n }\">\n <div class=\"flex {{\n vdcv.hasCurrentItem() ? 'flex-1' : ''\n }} justify-end items-center gap-5\">\n <span class=\"paginator-text\">{{ cardData().length }} records loaded</span>\n <button (click)=\"loadMore()\" class=\"load-more view-links text-[#3479E9] underline\">\n Load more\n </button>\n </div>\n </div>\n </verben-card-data-view-footer>\n </verben-card-data-view>\n </div>\n <div column-content>\n <lib-data-columns [columns]=\"config.columns\" (columnsUpdated)=\"onColumnsUpdated($event)\"></lib-data-columns>\n </div>\n <div filter-content>\n <verben-table-filter [border]=\"'1px solid rgba(212, 160, 7, 1)'\" borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\" bgColor=\"white\" width=\"420px\" textColor=\"black\" pd=\"1rem\"\n primaryColor=\"#FFE681\" secondaryColor=\"#3479E9\" tertiaryColor=\"#404040\" [filterOptions]=\"filterArray\"\n [maxFilterLength]=\"3\"></verben-table-filter>\n </div>\n <div sort-content>\n <lib-data-sort [columns]=\"config.columns\" [data]=\"data()\"\n (sortApplied)=\"onSortUpdated($event)\"></lib-data-sort>\n </div>\n <div export-content>\n <lib-data-xport [columns]=\"config.columns\" [data]=\"data()\" [dataQueryFunction]=\"loadData\">\n </lib-data-xport>\n </div>\n </verben-data-view>\n\n <div *ngIf=\"vdv.isTableView\" class=\"flex gap-2 justify-end\">\n <div class=\"flex justify-end items-center gap-5\">\n <span class=\"paginator-text\">{{ cardData().length }} records loaded</span>\n <button (click)=\"loadMore()\" class=\"load-more view-links text-[#3479E9] underline\">\n Load more\n </button>\n </div>\n </div>\n</div>\n" }]
121
128
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.FlowableStatusFacade }, { type: i2.FormBuilder }] });
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvd2FibGUtc3RhdHVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL2NvbXBvbmVudHMvZmxvd2FibGUtc3RhdHVzL2Zsb3dhYmxlLXN0YXR1cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zsb3dhYmxlLXN0YXR1cy9mbG93YWJsZS1zdGF0dXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpELE9BQU8sRUFBa0IsV0FBVyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDaEYsT0FBTyxFQUFFLHFCQUFxQixFQUFrQixNQUFNLG1DQUFtQyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7OztBQVFwRCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEscUJBQXFDO0lBc0J0RTtJQUNBO0lBQ0E7SUF2QlYsTUFBTSxHQUFtQztRQUN2QyxVQUFVLEVBQUUsRUFBRTtRQUNkLE9BQU8sRUFBRSxPQUFPO1FBQ2hCLGNBQWMsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMzQixRQUFRLEVBQUUsS0FBSztZQUNmLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSTtZQUNsQixJQUFJLEVBQUUsTUFBTTtZQUNaLElBQUksRUFBRTtnQkFDSixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUU7Z0JBQ3JDLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFB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QixrRkNsQnBDLGc3UkErSkE7OzRGRDdJYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0UscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgc2lnbmFsLFxuICBXcml0YWJsZVNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENhcmREYXRhLCBGb3JtR3JvdXBDb25maWcgfSBmcm9tICd2ZXJiZW4tbmctdWknO1xuaW1wb3J0IHsgRmxvd2FibGVTdGF0dXMsIE9iamVjdFN0YXRlIH0gZnJvbSAndmVyYmVuLXdvcmtmbG93LXVpL3NyYy9saWIvbW9kZWxzJztcbmltcG9ydCB7IEJhc2VEYXRhVmlld0NvbXBvbmVudCwgRGF0YVZpZXdDb25maWcgfSBmcm9tICd2ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9zaGFyZWQnO1xuaW1wb3J0IHsgY29sdW1ucyB9IGZyb20gJy4vZmxvd2FibGUtc3RhdHVzLmNvbHVtbnMnO1xuaW1wb3J0IHsgRmxvd2FibGVTdGF0dXNGYWNhZGUgfSBmcm9tICcuL2Zsb3dhYmxlLXN0YXR1cy5mYWNhZGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItZmxvd2FibGUtc3RhdHVzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zsb3dhYmxlLXN0YXR1cy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9mbG93YWJsZS1zdGF0dXMuY29tcG9uZW50LmNzcycsXG59KVxuZXhwb3J0IGNsYXNzIEZsb3dhYmxlU3RhdHVzQ29tcG9uZW50IGV4dGVuZHMgQmFzZURhdGFWaWV3Q29tcG9uZW50PEZsb3dhYmxlU3RhdHVzPiB7XG4gIGNvbmZpZzogRGF0YVZpZXdDb25maWc8Rmxvd2FibGVTdGF0dXM+ID0ge1xuICAgIGRhdGFTb3VyY2U6IFtdLFxuICAgIGNvbHVtbnM6IGNvbHVtbnMsXG4gICAgY2FyZERhdGFNYXBwZXI6IChzdGF0dXMpID0+ICh7XG4gICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICB0aXRsZTogc3RhdHVzLk5hbWUsXG4gICAgICBkYXRhOiBzdGF0dXMsXG4gICAgICBib2R5OiBbXG4gICAgICAgIHsgdGl0bGU6ICdOYW1lJywgdmFsdWU6IHN0YXR1cy5OYW1lIH0sXG4gICAgICAgIHsgdGl0bGU6ICdEZXNjcmlwdGlvbicsIHZhbHVlOiBzdGF0dXMuRGVzY3JpcHRpb24gfSxcbiAgICAgIF0sXG4gICAgICBjaGlsZHJlbjogW10sXG4gICAgfSksXG4gICAgb25EZXRhaWxWaWV3OiAoc3RhdHVzKSA9PiB7XG4gICAgICAvLyBDdXN0b20gZGV0YWlsIHZpZXcgbG9naWNcbiAgICB9LFxuICB9O1xuXG4gIGZvcm1Hcm91cENvbmZpZzogV3JpdGFibGVTaWduYWw8Rm9ybUdyb3VwQ29uZmlnPGFueT4+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGZhY2FkZTogRmxvd2FibGVTdGF0dXNGYWNhZGUsXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXJcbiAgKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMubG9hZERhdGEgPSB0aGlzLmxvYWREYXRhLmJpbmQodGhpcyk7XG5cbiAgICB0aGlzLmZvcm1Hcm91cENvbmZpZyA9IHNpZ25hbCh7XG4gICAgICBjb250cm9sczoge1xuICAgICAgICBOYW1lOiB0aGlzLmZiLmNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICAgIERlc2NyaXB0aW9uOiB0aGlzLmZiLmNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5mYWNhZGUuZ2V0UmVxdWVzdHMkKCkuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICB0aGlzLmRhdGEuc2V0KGRhdGEpO1xuICAgIH0pO1xuICB9XG5cbiAgb3ZlcnJpZGUgbG9hZEluaXRpYWxEYXRhKCkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmZhY2FkZS5sb2FkUmVxdWVzdHMoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gSGFuZGxlIGVycm9yXG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGdldENhcmREYXRhQnlJZGVudGlmaWVyKGNvZGU6IHN0cmluZyk6IENhcmREYXRhIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5jYXJkRGF0YSgpPy5maW5kKCh7IGRhdGEgfSkgPT4gZGF0YS5kYXRhLkNvZGUgPT09IGNvZGUpO1xuICB9XG5cbiAgYXN5bmMgbG9hZE1vcmUoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuZmFjYWRlLmxvYWRNb3JlKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIEhhbmRsZSBlcnJvclxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG9uU2F2ZShkYXRhOiBQYXJ0aWFsPEZsb3dhYmxlU3RhdHVzPikge1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICAuLi50aGlzLmN1cnJlbnREYXRhPy5kYXRhLFxuICAgICAgLi4uZGF0YSxcbiAgICAgIERhdGFTdGF0ZTogdGhpcy5jdXJyZW50RGF0YT8uZGF0YT8uRGF0YVN0YXRlID09PSBPYmplY3RTdGF0ZS5OZXcgPyBPYmplY3RTdGF0ZS5OZXcgOiBPYmplY3RTdGF0ZS5DaGFuZ2VkLFxuICAgIH0gYXMgRmxvd2FibGVTdGF0dXM7XG4gICAgYXdhaXQgdGhpcy5mYWNhZGUuYWRkUmVxdWVzdChwYXlsb2FkKTtcbiAgfVxuXG4gIGhhbmRsZVNlYXJjaChldmVudDogeyBrZXk6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9KSB7XG4gICAgdGhpcy5mYWNhZGUuc2VhcmNoKGV2ZW50LnZhbHVlKTtcbiAgfVxuXG4gIGhhbmRsZUZldGNoZWRFeHBvcnQoeyBza2lwLCBsaW1pdCB9OiBhbnkpIHtcbiAgICB0aGlzLmZhY2FkZS5sb2FkRGF0YShza2lwLCBsaW1pdCkudGhlbigoZGF0YSkgPT4ge1xuICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgdGhpcy5oYW5kbGVFeHBvcnQoZGF0YSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBsb2FkRGF0YShyYW5nZTogeyBza2lwOiBudW1iZXI7IGxpbWl0OiBudW1iZXIgfSkge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmZhY2FkZS5sb2FkRGF0YShyYW5nZS5za2lwLCByYW5nZS5saW1pdCk7XG4gICAgcmV0dXJuIGRhdGEgPz8gW107XG4gIH1cblxuICBvdmVycmlkZSBvblN0YXRlQ2hhbmdlKGV2ZW50OiB7IGtleTogc3RyaW5nOyB2YWx1ZTogYm9vbGVhbiB9KTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coYFN0YXRlIGNoYW5nZWQgZm9yICR7ZXZlbnQua2V5fTpgLCBldmVudC52YWx1ZSk7XG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ2NyZWF0ZSc6XG4gICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IG5ldyBEYXRlKCk7XG4gICAgICAgIHZhciBuZXdGb3JtOiBGbG93YWJsZVN0YXR1cyA9IHtcbiAgICAgICAgICBOYW1lOiAnJyxcbiAgICAgICAgICBEZXNjcmlwdGlvbjogJycsXG4gICAgICAgICAgVGVuYW50SWQ6ICcnLFxuICAgICAgICAgIFNlcnZpY2VOYW1lOiAnJyxcbiAgICAgICAgICBpZDogY3J5cHRvLnJhbmRvbVVVSUQoKSxcbiAgICAgICAgICBJZDogJycsXG4gICAgICAgICAgQ3JlYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICAgIFVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgICBEYXRhU3RhdGU6IE9iamVjdFN0YXRlLk5ldyxcbiAgICAgICAgICBDb2RlOiAnJyxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5kYXRhLnVwZGF0ZSgocHJldikgPT4gW25ld0Zvcm0sIC4uLnByZXZdKTtcbiAgICAgICAgLy8gY29uc29sZS5sb2cobmV3Rm9ybSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic3BhY2UteS04XCI+XG4gICAgPHZlcmJlbi1kYXRhLXZpZXcgI3ZkdiBbdmlld1N0YXRlXT1cIntcbiAgICAgIGlzU2VhcmNoOiB0cnVlLFxuICAgICAgaXNDb2x1bW46IHRydWUsXG4gICAgICBpc0ZpbHRlcjogdHJ1ZSxcbiAgICAgIGlzU29ydDogdHJ1ZSxcbiAgICAgIGlzRXhwb3J0OiB0cnVlLFxuICAgICAgaXNTZWxlY3Q6IHRydWUsXG4gICAgICBpc0NyZWF0ZTogdHJ1ZSxcbiAgICAgIGlzVG9nZ2xlOiB0cnVlLFxuICAgIH1cIiBbYnV0dG9uQ2xhc3NdPVwiJ215LWN1c3RvbS1idXR0b24tY2xhc3MnXCIgW2ljb25DbGFzc109XCInbXktaWNvbi1jbGFzcydcIlxuICAgICAgICBbYWN0aXZlSWNvbkNsYXNzXT1cIidteS1hY3RpdmUtaWNvbi1jbGFzcydcIiBbc2VsZWN0ZWRDb2x1bW5Db3VudF09XCJzZWxlY3RlZENvbHVtbkNvdW50XCJcbiAgICAgICAgW3NlbGVjdGVkU29ydENvdW50XT1cInNlbGVjdGVkU29ydENvdW50XCIgW3NlbGVjdGVkRmlsdGVyVGFibGVDb3VudF09XCJzZWxlY3RlZEZpbHRlclRhYmxlQ291bnRcIlxuICAgICAgICAodmlld0NoYW5nZSk9XCJvblZpZXdDaGFuZ2UoJGV2ZW50KVwiIChzdGF0ZUNoYW5nZSk9XCJvblN0YXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAob25TZWFyY2hDaGFuZ2UpPVwiaGFuZGxlU2VhcmNoKCRldmVudClcIiAoY3JlYXRlQ2xpY2spPVwidmR2LnRvZ2dsZVZpZXcoKVwiPlxuICAgICAgICA8ZGl2IHRhYmxlLWNvbnRlbnQ+XG4gICAgICAgICAgICA8bGliLWRhdGEtdGFibGUgW2RhdGFdPVwiZGF0YSgpXCIgW2NvbHVtbnNdPVwiY29uZmlnLmNvbHVtbnNcIiBbc3R5bGVDb25maWddPVwic3R5bGVzXCJcbiAgICAgICAgICAgICAgICBbZm9ybUdyb3VwQ29uZmlnXT1cImZvcm1Hcm91cENvbmZpZygpXCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAocm93U2F2ZSk9XCJvblNhdmUoJGV2ZW50LmRhdGEpXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBsaWJDb2x1bW49XCJkYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2VsbCBsZXQtcm93PVwicm93XCIgbGV0LXZhbHVlPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgdmFsdWUgfCBkYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIGxpYkNvbHVtbj1cIm5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjZWxsRWRpdCBsZXQtY29udHJvbD1cImNvbnRyb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2ZXJiZW5hLWlucHV0IG5hbWU9XCJOYW1lXCIgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIiBwbGFjZUhvbGRlcj1cIkVudGVyIE5hbWVcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBsaWJDb2x1bW49XCJkZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NlbGxFZGl0IGxldC1jb250cm9sPVwiY29udHJvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHZlcmJlbmEtaW5wdXQgbmFtZT1cIkRlc2NyaXB0aW9uXCIgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIiBwbGFjZUhvbGRlcj1cIkVudGVyIERlc2NyaXB0aW9uXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbGliQ29sdW1uPVwiYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NlbGwgbGV0LXZhbHVlIGxldC1pc0VkaXRpbmc9XCJpc0VkaXRpbmdcIiBsZXQtdG9nZ2xlUm93RWRpdD1cInRvZ2dsZVJvd0VkaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0LWRlbGV0ZVJvdz1cImRlbGV0ZVJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmVyYmVuLXN2ZyAoY2xpY2spPVwidG9nZ2xlUm93RWRpdCgpXCIgaWNvbj1cImVkaXRcIiBbd2lkdGhdPVwiMTVcIiBbaGVpZ2h0XT1cIjE1XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPjwvdmVyYmVuLXN2Zz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2ZXJiZW4tc3ZnIGljb249XCJkZWxldGVcIiBbd2lkdGhdPVwiMTVcIiBbaGVpZ2h0XT1cIjE1XCIgKGNsaWNrKT1cImRlbGV0ZVJvdygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2VsbEVkaXQgbGV0LXZhbHVlIGxldC1kZWxldGVSb3cgbGV0LWlzRWRpdGluZz1cImlzRWRpdGluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQtdG9nZ2xlUm93RWRpdD1cInRvZ2dsZVJvd0VkaXRcIiBsZXQtcm93PVwicm93XCIgbGV0LXJvd0luZGV4PVwicm93SW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC02XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZlcmJlbi1zdmcgKGNsaWNrKT1cInRvZ2dsZVJvd0VkaXQoKVwiIGljb249XCJ0aWNrXCIgW3dpZHRoXT1cIjE1XCIgW2hlaWdodF09XCIxNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj48L3ZlcmJlbi1zdmc+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmVyYmVuLXN2ZyBpY29uPVwiZGVsZXRlXCIgW3dpZHRoXT1cIjE1XCIgW2hlaWdodF09XCIxNVwiIChjbGljayk9XCJ0b2dnbGVSb3dFZGl0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2xpYi1kYXRhLXRhYmxlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICA8dmVyYmVuLWNhcmQtZGF0YS12aWV3IGJvcmRlclJhZGl1cz1cIjEycHhcIiAobG9hZE1vcmVDbGljayk9XCJsb2FkTW9yZSgpXCIgI3ZkY3YgZGF0YUlkPVwiSWRcIiBib3JkZXI9XCI1cHhcIlxuICAgICAgICAgICAgICAgIFtjYXJkRGF0YUxpc3RdPVwiY2FyZERhdGEoKVwiIHJiZ0NvbG9yPVwiI2Y1ZjZmOVwiIG1nPVwiMjBweFwiPlxuICAgICAgICAgICAgICAgIDx2ZXJiZW4tbGVmdC1jYXJkLWRhdGEtdmlldyBjbGFzcz1cInNwYWNlLXktN1wiPlxuICAgICAgICAgICAgICAgICAgICA8dmVyYmVuLWxlZnQtY2FyZC1kYXRhICN2bGNkIFtwYXJlbnRdPVwidmRjdlwiIGRhdGFJZD1cIklkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmctc2Vjb25kYXJ5LTEwMCByb3VuZGVkLXhsIGJvcmRlci1wcmltYXJ5IGJvcmRlci1bMXB4XVwiIFtjYXJkRGF0YUxpc3RdPVwiY2FyZERhdGEoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjYXJkIGxldC1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cImN1cnJlbnREYXRhID0gdmRjdi5vbkl0ZW1DbGljayhpdGVtKVwiIGNsYXNzPVwiZmxleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJjdXJyZW50RGF0YSA9IHZkY3Yub25JdGVtQ2xpY2soaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGN1cnNvci1wb2ludGVyIHctZnVsbCBiZy1zZWNvbmRhcnkgcm91bmRlZC14bFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMyByb3VuZGVkLXhsIHJvdW5kZWQtdHItbm9uZSByb3VuZGVkLWJyLW5vbmVcIiBbbmdDbGFzc109XCJcbiAgICAgICAgICAgICAgICAgICAgICBpdGVtLnNlbGVjdGVkID8gJ2JnLXByaW1hcnknIDogJ2JnLXNlY29uZGFyeS0yMDAnXG4gICAgICAgICAgICAgICAgICAgIFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgcHktMiBweC00IHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtNCBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ2FwLXktMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LXNlbWlib2xkIHRleHQtWyM0MDQwNDBdXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImRlc2NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtWzEwcHhdIGZvbnQtbGlnaHRcIj5EZXNjcmlwdGlvbjo8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGlkPVwiZGVzY1wiIGNsYXNzPVwidGV4dC1zbVwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uZGF0YS5EZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ2FwLXktMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJncmlkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtWzEwcHhdIGZvbnQtbGlnaHQgdGV4dC1bIzQwNDA0MF1cIj5OYW1lPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD1cIm5hbWVcIiBjbGFzcz1cInRleHQtc20gZm9udC1tZWRpdW1cIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmRhdGE/Lk5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC92ZXJiZW4tbGVmdC1jYXJkLWRhdGE+XG4gICAgICAgICAgICAgICAgPC92ZXJiZW4tbGVmdC1jYXJkLWRhdGEtdmlldz5cblxuICAgICAgICAgICAgICAgIDx2ZXJiZW4tcmlnaHQtY2FyZC1kYXRhLXZpZXc+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcGFyZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZsb3dhYmxlLXN0YXR1cy1mb3JtIFtjdXJyZW50RGF0YV09XCJjdXJyZW50RGF0YVwiIChzd2l0Y2hWaWV3KT1cInZkdi50b2dnbGVWaWV3KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvblNhdmUpPVwib25TYXZlKCRldmVudClcIj48L2Zsb3dhYmxlLXN0YXR1cy1mb3JtPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvdmVyYmVuLXJpZ2h0LWNhcmQtZGF0YS12aWV3PlxuXG4gICAgICAgICAgICAgICAgPHZlcmJlbi1jYXJkLWRhdGEtdmlldy1mb290ZXIgY2xhc3M9XCJ3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdmbGV4IGdhcC0yIGl0ZW1zLWNlbnRlcic6IHRydWUsXG4gICAgICAgICAgICAgICdqdXN0aWZ5LWVuZCc6IHRydWVcbiAgICAgICAgICAgIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IHt7XG4gICAgICAgICAgICAgICAgdmRjdi5oYXNDdXJyZW50SXRlbSgpID8gJ2ZsZXgtMScgOiAnJ1xuICAgICAgICAgICAgICB9fSBqdXN0aWZ5LWVuZCBpdGVtcy1jZW50ZXIgZ2FwLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBhZ2luYXRvci10ZXh0XCI+e3sgY2FyZERhdGEoKS5sZW5ndGggfX0gcmVjb3JkcyBsb2FkZWQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwibG9hZE1vcmUoKVwiIGNsYXNzPVwibG9hZC1tb3JlIHZpZXctbGlua3MgdGV4dC1bIzM0NzlFOV0gdW5kZXJsaW5lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvYWQgbW9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvdmVyYmVuLWNhcmQtZGF0YS12aWV3LWZvb3Rlcj5cbiAgICAgICAgICAgIDwvdmVyYmVuLWNhcmQtZGF0YS12aWV3PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjb2x1bW4tY29udGVudD5cbiAgICAgICAgICAgIDxsaWItZGF0YS1jb2x1bW5zIFtjb2x1bW5zXT1cImNvbmZpZy5jb2x1bW5zXCIgKGNvbHVtbnNVcGRhdGVkKT1cIm9uQ29sdW1uc1VwZGF0ZWQoJGV2ZW50KVwiPjwvbGliLWRhdGEtY29sdW1ucz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgZmlsdGVyLWNvbnRlbnQ+XG4gICAgICAgICAgICA8dmVyYmVuLXRhYmxlLWZpbHRlciBbYm9yZGVyXT1cIicxcHggc29saWQgcmdiYSgyMTIsIDE2MCwgNywgMSknXCIgYm9yZGVyUmFkaXVzPVwiMTBweFwiXG4gICAgICAgICAgICAgICAgYm94U2hhZG93PVwiMnB4IDJweCAycHggMHB4IHNpbHZlclwiIGJnQ29sb3I9XCJ3aGl0ZVwiIHdpZHRoPVwiNDIwcHhcIiB0ZXh0Q29sb3I9XCJibGFja1wiIHBkPVwiMXJlbVwiXG4gICAgICAgICAgICAgICAgcHJpbWFyeUNvbG9yPVwiI0ZGRTY4MVwiIHNlY29uZGFyeUNvbG9yPVwiIzM0NzlFOVwiIHRlcnRpYXJ5Q29sb3I9XCIjNDA0MDQwXCIgW2ZpbHRlck9wdGlvbnNdPVwiZmlsdGVyQXJyYXlcIlxuICAgICAgICAgICAgICAgIFttYXhGaWx0ZXJMZW5ndGhdPVwiM1wiPjwvdmVyYmVuLXRhYmxlLWZpbHRlcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgc29ydC1jb250ZW50PlxuICAgICAgICAgICAgPGxpYi1kYXRhLXNvcnQgW2NvbHVtbnNdPVwiY29uZmlnLmNvbHVtbnNcIiBbZGF0YV09XCJkYXRhKClcIlxuICAgICAgICAgICAgICAgIChzb3J0QXBwbGllZCk9XCJvblNvcnRVcGRhdGVkKCRldmVudClcIj48L2xpYi1kYXRhLXNvcnQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGV4cG9ydC1jb250ZW50PlxuICAgICAgICAgICAgPGxpYi1kYXRhLXhwb3J0IFtjb2x1bW5zXT1cImNvbmZpZy5jb2x1bW5zXCIgW2RhdGFdPVwiZGF0YSgpXCIgW2RhdGFRdWVyeUZ1bmN0aW9uXT1cImxvYWREYXRhXCI+XG4gICAgICAgICAgICA8L2xpYi1kYXRhLXhwb3J0PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L3ZlcmJlbi1kYXRhLXZpZXc+XG5cbiAgICA8ZGl2ICpuZ0lmPVwidmR2LmlzVGFibGVWaWV3XCIgY2xhc3M9XCJmbGV4IGdhcC0yIGp1c3RpZnktZW5kXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktZW5kIGl0ZW1zLWNlbnRlciBnYXAtNVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYWdpbmF0b3ItdGV4dFwiPnt7IGNhcmREYXRhKCkubGVuZ3RoIH19IHJlY29yZHMgbG9hZGVkPC9zcGFuPlxuICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwibG9hZE1vcmUoKVwiIGNsYXNzPVwibG9hZC1tb3JlIHZpZXctbGlua3MgdGV4dC1bIzM0NzlFOV0gdW5kZXJsaW5lXCI+XG4gICAgICAgICAgICAgICAgTG9hZCBtb3JlXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvd2FibGUtc3RhdHVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL2NvbXBvbmVudHMvZmxvd2FibGUtc3RhdHVzL2Zsb3dhYmxlLXN0YXR1cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zsb3dhYmxlLXN0YXR1cy9mbG93YWJsZS1zdGF0dXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpELE9BQU8sRUFBa0IsV0FBVyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDaEYsT0FBTyxFQUFFLHFCQUFxQixFQUFrQixNQUFNLG1DQUFtQyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7OztBQVFwRCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEscUJBQXFDO0lBc0J0RTtJQUNBO0lBQ0E7SUF2QlYsTUFBTSxHQUFtQztRQUN2QyxVQUFVLEVBQUUsRUFBRTtRQUNkLE9BQU8sRUFBRSxPQUFPO1FBQ2hCLGNBQWMsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMzQixRQUFRLEVBQUUsS0FBSztZQUNmLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSTtZQUNsQixJQUFJLEVBQUUsTUFBTTtZQUNaLElBQUksRUFBRTtnQkFDSixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUU7Z0JBQ3JDLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFB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O2dCQUNFLE1BQU07UUFDVixDQUFDO0lBQ0gsQ0FBQzt3R0F0SFUsdUJBQXVCOzRGQUF2Qix1QkFBdUIsa0ZDbEJwQyxnN1JBK0pBOzs0RkQ3SWEsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIHNpZ25hbCxcbiAgV3JpdGFibGVTaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDYXJkRGF0YSwgRm9ybUdyb3VwQ29uZmlnIH0gZnJvbSAndmVyYmVuLW5nLXVpJztcbmltcG9ydCB7IEZsb3dhYmxlU3RhdHVzLCBPYmplY3RTdGF0ZSB9IGZyb20gJ3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL21vZGVscyc7XG5pbXBvcnQgeyBCYXNlRGF0YVZpZXdDb21wb25lbnQsIERhdGFWaWV3Q29uZmlnIH0gZnJvbSAndmVyYmVuLXdvcmtmbG93LXVpL3NyYy9saWIvc2hhcmVkJztcbmltcG9ydCB7IGNvbHVtbnMgfSBmcm9tICcuL2Zsb3dhYmxlLXN0YXR1cy5jb2x1bW5zJztcbmltcG9ydCB7IEZsb3dhYmxlU3RhdHVzRmFjYWRlIH0gZnJvbSAnLi9mbG93YWJsZS1zdGF0dXMuZmFjYWRlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWZsb3dhYmxlLXN0YXR1cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9mbG93YWJsZS1zdGF0dXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZmxvd2FibGUtc3RhdHVzLmNvbXBvbmVudC5jc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBGbG93YWJsZVN0YXR1c0NvbXBvbmVudCBleHRlbmRzIEJhc2VEYXRhVmlld0NvbXBvbmVudDxGbG93YWJsZVN0YXR1cz4ge1xuICBjb25maWc6IERhdGFWaWV3Q29uZmlnPEZsb3dhYmxlU3RhdHVzPiA9IHtcbiAgICBkYXRhU291cmNlOiBbXSxcbiAgICBjb2x1bW5zOiBjb2x1bW5zLFxuICAgIGNhcmREYXRhTWFwcGVyOiAoc3RhdHVzKSA9PiAoe1xuICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgdGl0bGU6IHN0YXR1cy5OYW1lLFxuICAgICAgZGF0YTogc3RhdHVzLFxuICAgICAgYm9keTogW1xuICAgICAgICB7IHRpdGxlOiAnTmFtZScsIHZhbHVlOiBzdGF0dXMuTmFtZSB9LFxuICAgICAgICB7IHRpdGxlOiAnRGVzY3JpcHRpb24nLCB2YWx1ZTogc3RhdHVzLkRlc2NyaXB0aW9uIH0sXG4gICAgICBdLFxuICAgICAgY2hpbGRyZW46IFtdLFxuICAgIH0pLFxuICAgIG9uRGV0YWlsVmlldzogKHN0YXR1cykgPT4ge1xuICAgICAgLy8gQ3VzdG9tIGRldGFpbCB2aWV3IGxvZ2ljXG4gICAgfSxcbiAgfTtcblxuICBmb3JtR3JvdXBDb25maWc6IFdyaXRhYmxlU2lnbmFsPEZvcm1Hcm91cENvbmZpZzxhbnk+PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBmYWNhZGU6IEZsb3dhYmxlU3RhdHVzRmFjYWRlLFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyXG4gICkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmxvYWREYXRhID0gdGhpcy5sb2FkRGF0YS5iaW5kKHRoaXMpO1xuXG4gICAgdGhpcy5mb3JtR3JvdXBDb25maWcgPSBzaWduYWwoe1xuICAgICAgY29udHJvbHM6IHtcbiAgICAgICAgTmFtZTogdGhpcy5mYi5jb250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgICBEZXNjcmlwdGlvbjogdGhpcy5mYi5jb250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuZmFjYWRlLmdldFJlcXVlc3RzJCgpLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgdGhpcy5kYXRhLnNldChkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIG92ZXJyaWRlIGxvYWRJbml0aWFsRGF0YSgpIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5mYWNhZGUubG9hZFJlcXVlc3RzKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIEhhbmRsZSBlcnJvclxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRDYXJkRGF0YUJ5SWRlbnRpZmllcihjb2RlOiBzdHJpbmcpOiBDYXJkRGF0YSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY2FyZERhdGEoKT8uZmluZCgoeyBkYXRhIH0pID0+IGRhdGEuZGF0YS5Db2RlID09PSBjb2RlKTtcbiAgfVxuXG4gIGFzeW5jIGxvYWRNb3JlKCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmZhY2FkZS5sb2FkTW9yZSgpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBIYW5kbGUgZXJyb3JcbiAgICB9XG4gIH1cblxuICBhc3luYyBvblNhdmUoZGF0YTogUGFydGlhbDxGbG93YWJsZVN0YXR1cz4pIHtcbiAgICBjb25zdCBtZXJnZWQgPSB7XG4gICAgICAuLi50aGlzLmN1cnJlbnREYXRhPy5kYXRhLFxuICAgICAgLi4uZGF0YSxcbiAgICB9IGFzIEZsb3dhYmxlU3RhdHVzO1xuICAgIC8vIEEgcmVjb3JkIGlzIG5ldyBvbmx5IHdoZW4gaXQgaGFzIG5vIENvZGUgeWV0ICh0aGUgYmFja2VuZCBhbHdheXMgYXNzaWduc1xuICAgIC8vIENvZGUgb24gcGVyc2lzdGVkIHJlY29yZHMpLiBEb24ndCB0cnVzdCB0aGUgbG9hZGVkIERhdGFTdGF0ZSBoZXJlOiByZWNvcmRzXG4gICAgLy8gcmV0dXJuZWQgZnJvbSB0aGUgYmFja2VuZCBjb21lIHRocm91Z2ggdW5jaGFuZ2VkIGFuZCByZXBvcnQgRGF0YVN0YXRlXG4gICAgLy8gJ05ldycsIHdoaWNoIHdvdWxkIGZvcmNlIGFuIGluc2VydCAoYW5kIHRodXMgZHVwbGljYXRlKSBvbiBldmVyeSBlZGl0LlxuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICAuLi5tZXJnZWQsXG4gICAgICBEYXRhU3RhdGU6IG1lcmdlZC5Db2RlID8gT2JqZWN0U3RhdGUuQ2hhbmdlZCA6IE9iamVjdFN0YXRlLk5ldyxcbiAgICB9IGFzIEZsb3dhYmxlU3RhdHVzO1xuICAgIGF3YWl0IHRoaXMuZmFjYWRlLmFkZFJlcXVlc3QocGF5bG9hZCk7XG4gIH1cblxuICBoYW5kbGVTZWFyY2goZXZlbnQ6IHsga2V5OiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfSkge1xuICAgIHRoaXMuZmFjYWRlLnNlYXJjaChldmVudC52YWx1ZSk7XG4gIH1cblxuICBoYW5kbGVGZXRjaGVkRXhwb3J0KHsgc2tpcCwgbGltaXQgfTogYW55KSB7XG4gICAgdGhpcy5mYWNhZGUubG9hZERhdGEoc2tpcCwgbGltaXQpLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIHRoaXMuaGFuZGxlRXhwb3J0KGRhdGEpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgbG9hZERhdGEocmFuZ2U6IHsgc2tpcDogbnVtYmVyOyBsaW1pdDogbnVtYmVyIH0pIHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5mYWNhZGUubG9hZERhdGEocmFuZ2Uuc2tpcCwgcmFuZ2UubGltaXQpO1xuICAgIHJldHVybiBkYXRhID8/IFtdO1xuICB9XG5cbiAgb3ZlcnJpZGUgb25TdGF0ZUNoYW5nZShldmVudDogeyBrZXk6IHN0cmluZzsgdmFsdWU6IGJvb2xlYW4gfSk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKGBTdGF0ZSBjaGFuZ2VkIGZvciAke2V2ZW50LmtleX06YCwgZXZlbnQudmFsdWUpO1xuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdjcmVhdGUnOlxuICAgICAgICBjb25zdCB0aW1lc3RhbXAgPSBuZXcgRGF0ZSgpO1xuICAgICAgICB2YXIgbmV3Rm9ybTogRmxvd2FibGVTdGF0dXMgPSB7XG4gICAgICAgICAgTmFtZTogJycsXG4gICAgICAgICAgRGVzY3JpcHRpb246ICcnLFxuICAgICAgICAgIFRlbmFudElkOiAnJyxcbiAgICAgICAgICBTZXJ2aWNlTmFtZTogJycsXG4gICAgICAgICAgaWQ6IGNyeXB0by5yYW5kb21VVUlEKCksXG4gICAgICAgICAgSWQ6ICcnLFxuICAgICAgICAgIENyZWF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgICBVcGRhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgICAgRGF0YVN0YXRlOiBPYmplY3RTdGF0ZS5OZXcsXG4gICAgICAgICAgQ29kZTogJycsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZGF0YS51cGRhdGUoKHByZXYpID0+IFtuZXdGb3JtLCAuLi5wcmV2XSk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKG5ld0Zvcm0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInNwYWNlLXktOFwiPlxuICAgIDx2ZXJiZW4tZGF0YS12aWV3ICN2ZHYgW3ZpZXdTdGF0ZV09XCJ7XG4gICAgICBpc1NlYXJjaDogdHJ1ZSxcbiAgICAgIGlzQ29sdW1uOiB0cnVlLFxuICAgICAgaXNGaWx0ZXI6IHRydWUsXG4gICAgICBpc1NvcnQ6IHRydWUsXG4gICAgICBpc0V4cG9ydDogdHJ1ZSxcbiAgICAgIGlzU2VsZWN0OiB0cnVlLFxuICAgICAgaXNDcmVhdGU6IHRydWUsXG4gICAgICBpc1RvZ2dsZTogdHJ1ZSxcbiAgICB9XCIgW2J1dHRvbkNsYXNzXT1cIidteS1jdXN0b20tYnV0dG9uLWNsYXNzJ1wiIFtpY29uQ2xhc3NdPVwiJ215LWljb24tY2xhc3MnXCJcbiAgICAgICAgW2FjdGl2ZUljb25DbGFzc109XCInbXktYWN0aXZlLWljb24tY2xhc3MnXCIgW3NlbGVjdGVkQ29sdW1uQ291bnRdPVwic2VsZWN0ZWRDb2x1bW5Db3VudFwiXG4gICAgICAgIFtzZWxlY3RlZFNvcnRDb3VudF09XCJzZWxlY3RlZFNvcnRDb3VudFwiIFtzZWxlY3RlZEZpbHRlclRhYmxlQ291bnRdPVwic2VsZWN0ZWRGaWx0ZXJUYWJsZUNvdW50XCJcbiAgICAgICAgKHZpZXdDaGFuZ2UpPVwib25WaWV3Q2hhbmdlKCRldmVudClcIiAoc3RhdGVDaGFuZ2UpPVwib25TdGF0ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgKG9uU2VhcmNoQ2hhbmdlKT1cImhhbmRsZVNlYXJjaCgkZXZlbnQpXCIgKGNyZWF0ZUNsaWNrKT1cInZkdi50b2dnbGVWaWV3KClcIj5cbiAgICAgICAgPGRpdiB0YWJsZS1jb250ZW50PlxuICAgICAgICAgICAgPGxpYi1kYXRhLXRhYmxlIFtkYXRhXT1cImRhdGEoKVwiIFtjb2x1bW5zXT1cImNvbmZpZy5jb2x1bW5zXCIgW3N0eWxlQ29uZmlnXT1cInN0eWxlc1wiXG4gICAgICAgICAgICAgICAgW2Zvcm1Hcm91cENvbmZpZ109XCJmb3JtR3JvdXBDb25maWcoKVwiIChzZWxlY3Rpb25DaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKHJvd1NhdmUpPVwib25TYXZlKCRldmVudC5kYXRhKVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbGliQ29sdW1uPVwiZGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NlbGwgbGV0LXJvdz1cInJvd1wiIGxldC12YWx1ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHZhbHVlIHwgZGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBsaWJDb2x1bW49XCJuYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2VsbEVkaXQgbGV0LWNvbnRyb2w9XCJjb250cm9sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dmVyYmVuYS1pbnB1dCBuYW1lPVwiTmFtZVwiIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCIgcGxhY2VIb2xkZXI9XCJFbnRlciBOYW1lXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbGliQ29sdW1uPVwiZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjZWxsRWRpdCBsZXQtY29udHJvbD1cImNvbnRyb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2ZXJiZW5hLWlucHV0IG5hbWU9XCJEZXNjcmlwdGlvblwiIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCIgcGxhY2VIb2xkZXI9XCJFbnRlciBEZXNjcmlwdGlvblwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIGxpYkNvbHVtbj1cImFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjZWxsIGxldC12YWx1ZSBsZXQtaXNFZGl0aW5nPVwiaXNFZGl0aW5nXCIgbGV0LXRvZ2dsZVJvd0VkaXQ9XCJ0b2dnbGVSb3dFZGl0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldC1kZWxldGVSb3c9XCJkZWxldGVSb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC02XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZlcmJlbi1zdmcgKGNsaWNrKT1cInRvZ2dsZVJvd0VkaXQoKVwiIGljb249XCJlZGl0XCIgW3dpZHRoXT1cIjE1XCIgW2hlaWdodF09XCIxNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj48L3ZlcmJlbi1zdmc+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmVyYmVuLXN2ZyBpY29uPVwiZGVsZXRlXCIgW3dpZHRoXT1cIjE1XCIgW2hlaWdodF09XCIxNVwiIChjbGljayk9XCJkZWxldGVSb3coKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj48L3ZlcmJlbi1zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NlbGxFZGl0IGxldC12YWx1ZSBsZXQtZGVsZXRlUm93IGxldC1pc0VkaXRpbmc9XCJpc0VkaXRpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0LXRvZ2dsZVJvd0VkaXQ9XCJ0b2dnbGVSb3dFZGl0XCIgbGV0LXJvdz1cInJvd1wiIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2ZXJiZW4tc3ZnIChjbGljayk9XCJ0b2dnbGVSb3dFZGl0KClcIiBpY29uPVwidGlja1wiIFt3aWR0aF09XCIxNVwiIFtoZWlnaHRdPVwiMTVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+PC92ZXJiZW4tc3ZnPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZlcmJlbi1zdmcgaWNvbj1cImRlbGV0ZVwiIFt3aWR0aF09XCIxNVwiIFtoZWlnaHRdPVwiMTVcIiAoY2xpY2spPVwidG9nZ2xlUm93RWRpdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9saWItZGF0YS10YWJsZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgPHZlcmJlbi1jYXJkLWRhdGEtdmlldyBib3JkZXJSYWRpdXM9XCIxMnB4XCIgKGxvYWRNb3JlQ2xpY2spPVwibG9hZE1vcmUoKVwiICN2ZGN2IGRhdGFJZD1cIklkXCIgYm9yZGVyPVwiNXB4XCJcbiAgICAgICAgICAgICAgICBbY2FyZERhdGFMaXN0XT1cImNhcmREYXRhKClcIiByYmdDb2xvcj1cIiNmNWY2ZjlcIiBtZz1cIjIwcHhcIj5cbiAgICAgICAgICAgICAgICA8dmVyYmVuLWxlZnQtY2FyZC1kYXRhLXZpZXcgY2xhc3M9XCJzcGFjZS15LTdcIj5cbiAgICAgICAgICAgICAgICAgICAgPHZlcmJlbi1sZWZ0LWNhcmQtZGF0YSAjdmxjZCBbcGFyZW50XT1cInZkY3ZcIiBkYXRhSWQ9XCJJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJnLXNlY29uZGFyeS0xMDAgcm91bmRlZC14bCBib3JkZXItcHJpbWFyeSBib3JkZXItWzFweF1cIiBbY2FyZERhdGFMaXN0XT1cImNhcmREYXRhKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2FyZCBsZXQtaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJjdXJyZW50RGF0YSA9IHZkY3Yub25JdGVtQ2xpY2soaXRlbSlcIiBjbGFzcz1cImZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwiY3VycmVudERhdGEgPSB2ZGN2Lm9uSXRlbUNsaWNrKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBjdXJzb3ItcG9pbnRlciB3LWZ1bGwgYmctc2Vjb25kYXJ5IHJvdW5kZWQteGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTMgcm91bmRlZC14bCByb3VuZGVkLXRyLW5vbmUgcm91bmRlZC1ici1ub25lXCIgW25nQ2xhc3NdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgaXRlbS5zZWxlY3RlZCA/ICdiZy1wcmltYXJ5JyA6ICdiZy1zZWNvbmRhcnktMjAwJ1xuICAgICAgICAgICAgICAgICAgICBcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHB5LTIgcHgtNCB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTQganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGdhcC15LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1zZW1pYm9sZCB0ZXh0LVsjNDA0MDQwXVwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJkZXNjXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LVsxMHB4XSBmb250LWxpZ2h0XCI+RGVzY3JpcHRpb246PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD1cImRlc2NcIiBjbGFzcz1cInRleHQtc21cIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmRhdGEuRGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGdhcC15LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZ3JpZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LVsxMHB4XSBmb250LWxpZ2h0IHRleHQtWyM0MDQwNDBdXCI+TmFtZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9XCJuYW1lXCIgY2xhc3M9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5kYXRhPy5OYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvdmVyYmVuLWxlZnQtY2FyZC1kYXRhPlxuICAgICAgICAgICAgICAgIDwvdmVyYmVuLWxlZnQtY2FyZC1kYXRhLXZpZXc+XG5cbiAgICAgICAgICAgICAgICA8dmVyYmVuLXJpZ2h0LWNhcmQtZGF0YS12aWV3PlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3BhcmVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmbG93YWJsZS1zdGF0dXMtZm9ybSBbY3VycmVudERhdGFdPVwiY3VycmVudERhdGFcIiAoc3dpdGNoVmlldyk9XCJ2ZHYudG9nZ2xlVmlldygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25TYXZlKT1cIm9uU2F2ZSgkZXZlbnQpXCI+PC9mbG93YWJsZS1zdGF0dXMtZm9ybT5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L3ZlcmJlbi1yaWdodC1jYXJkLWRhdGEtdmlldz5cblxuICAgICAgICAgICAgICAgIDx2ZXJiZW4tY2FyZC1kYXRhLXZpZXctZm9vdGVyIGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnZmxleCBnYXAtMiBpdGVtcy1jZW50ZXInOiB0cnVlLFxuICAgICAgICAgICAgICAnanVzdGlmeS1lbmQnOiB0cnVlXG4gICAgICAgICAgICB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCB7e1xuICAgICAgICAgICAgICAgIHZkY3YuaGFzQ3VycmVudEl0ZW0oKSA/ICdmbGV4LTEnIDogJydcbiAgICAgICAgICAgICAgfX0ganVzdGlmeS1lbmQgaXRlbXMtY2VudGVyIGdhcC01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYWdpbmF0b3ItdGV4dFwiPnt7IGNhcmREYXRhKCkubGVuZ3RoIH19IHJlY29yZHMgbG9hZGVkPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImxvYWRNb3JlKClcIiBjbGFzcz1cImxvYWQtbW9yZSB2aWV3LWxpbmtzIHRleHQtWyMzNDc5RTldIHVuZGVybGluZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2FkIG1vcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3ZlcmJlbi1jYXJkLWRhdGEtdmlldy1mb290ZXI+XG4gICAgICAgICAgICA8L3ZlcmJlbi1jYXJkLWRhdGEtdmlldz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY29sdW1uLWNvbnRlbnQ+XG4gICAgICAgICAgICA8bGliLWRhdGEtY29sdW1ucyBbY29sdW1uc109XCJjb25maWcuY29sdW1uc1wiIChjb2x1bW5zVXBkYXRlZCk9XCJvbkNvbHVtbnNVcGRhdGVkKCRldmVudClcIj48L2xpYi1kYXRhLWNvbHVtbnM+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGZpbHRlci1jb250ZW50PlxuICAgICAgICAgICAgPHZlcmJlbi10YWJsZS1maWx0ZXIgW2JvcmRlcl09XCInMXB4IHNvbGlkIHJnYmEoMjEyLCAxNjAsIDcsIDEpJ1wiIGJvcmRlclJhZGl1cz1cIjEwcHhcIlxuICAgICAgICAgICAgICAgIGJveFNoYWRvdz1cIjJweCAycHggMnB4IDBweCBzaWx2ZXJcIiBiZ0NvbG9yPVwid2hpdGVcIiB3aWR0aD1cIjQyMHB4XCIgdGV4dENvbG9yPVwiYmxhY2tcIiBwZD1cIjFyZW1cIlxuICAgICAgICAgICAgICAgIHByaW1hcnlDb2xvcj1cIiNGRkU2ODFcIiBzZWNvbmRhcnlDb2xvcj1cIiMzNDc5RTlcIiB0ZXJ0aWFyeUNvbG9yPVwiIzQwNDA0MFwiIFtmaWx0ZXJPcHRpb25zXT1cImZpbHRlckFycmF5XCJcbiAgICAgICAgICAgICAgICBbbWF4RmlsdGVyTGVuZ3RoXT1cIjNcIj48L3ZlcmJlbi10YWJsZS1maWx0ZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IHNvcnQtY29udGVudD5cbiAgICAgICAgICAgIDxsaWItZGF0YS1zb3J0IFtjb2x1bW5zXT1cImNvbmZpZy5jb2x1bW5zXCIgW2RhdGFdPVwiZGF0YSgpXCJcbiAgICAgICAgICAgICAgICAoc29ydEFwcGxpZWQpPVwib25Tb3J0VXBkYXRlZCgkZXZlbnQpXCI+PC9saWItZGF0YS1zb3J0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBleHBvcnQtY29udGVudD5cbiAgICAgICAgICAgIDxsaWItZGF0YS14cG9ydCBbY29sdW1uc109XCJjb25maWcuY29sdW1uc1wiIFtkYXRhXT1cImRhdGEoKVwiIFtkYXRhUXVlcnlGdW5jdGlvbl09XCJsb2FkRGF0YVwiPlxuICAgICAgICAgICAgPC9saWItZGF0YS14cG9ydD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC92ZXJiZW4tZGF0YS12aWV3PlxuXG4gICAgPGRpdiAqbmdJZj1cInZkdi5pc1RhYmxlVmlld1wiIGNsYXNzPVwiZmxleCBnYXAtMiBqdXN0aWZ5LWVuZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWVuZCBpdGVtcy1jZW50ZXIgZ2FwLTVcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGFnaW5hdG9yLXRleHRcIj57eyBjYXJkRGF0YSgpLmxlbmd0aCB9fSByZWNvcmRzIGxvYWRlZDwvc3Bhbj5cbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImxvYWRNb3JlKClcIiBjbGFzcz1cImxvYWQtbW9yZSB2aWV3LWxpbmtzIHRleHQtWyMzNDc5RTldIHVuZGVybGluZVwiPlxuICAgICAgICAgICAgICAgIExvYWQgbW9yZVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -125,7 +125,7 @@ export class TaskHistoryComponent {
125
125
  FromStage: '',
126
126
  ToStage: '',
127
127
  Code: '',
128
- TenantId: 'PDLTC6',
128
+ TenantId: '',
129
129
  };
130
130
  this.service.saveActionHistory([actionHistory]).then(() => {
131
131
  this.newComment = '';
@@ -218,4 +218,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
218
218
  type: Component,
219
219
  args: [{ selector: 'lib-task-history', template: "<div class=\"bg-[#F9FAFB]\">\n <header class=\"mx-8 rounded-lg shadow-lg flex justify-between items-center px-6 py-2 bg-[#D4A00773]\">\n <h4 class=\"font-semibold\">{{ taskCode() }}</h4>\n <div class=\"flex gap-4 items-center\">\n <verbena-button (click)=\"addComment()\" text=\"+ Add Comment\" styleType=\"ylw-outline\"\n class=\"ml-auto\"></verbena-button>\n <verben-svg (click)=\"goBack()\" class=\"cursor-pointer\" [width]=\"17\" [height]=\"17\" [icon]=\"'go-back'\"></verben-svg>\n </div>\n </header>\n <section class=\"grid grid-cols-12\">\n <div class=\"bg-[#fff] col-span-7 pl-16 pt-20 relative\">\n <div *ngIf=\"showCommentBox\" class=\"mb-6 mr-10\">\n <h4 class=\"font-bold text-lg mb-2\">Add Comment</h4>\n <!-- <verbena-textarea [(ngModel)]=\"newComment\" label=\"Comment\" class=\"w-full\"></verbena-textarea> -->\n <textarea [(ngModel)]=\"newComment\" label=\"Comment\" class=\"w-full border rounded-md p-2\"></textarea>\n <div class=\"mt-4\">\n <file-upload (selectedFilesChange)=\"onFileSelect($event)\" [multiple]=\"true\" label=\"Attach Files\">\n </file-upload>\n <div *ngIf=\"selectedFiles.length > 0\" class=\"flex flex-wrap gap-3 mt-3\">\n <div *ngFor=\"let file of selectedFiles\">\n <ng-container [ngSwitch]=\"file.Extension\">\n <img *ngSwitchCase=\"'jpg'\" [src]=\"file.Data\"\n class=\"w-[100px] h-[100px] object-cover rounded-md border\" />\n <img *ngSwitchCase=\"'png'\" [src]=\"file.Data\"\n class=\"w-[100px] h-[100px] object-cover rounded-md border\" />\n <video *ngSwitchCase=\"'mp4'\" [src]=\"file.Data\" class=\"w-[150px] rounded-md shadow\" controls></video>\n <audio *ngSwitchCase=\"'mp3'\" [src]=\"file.Data\" controls class=\"w-[150px]\"></audio>\n </ng-container>\n </div>\n </div>\n </div>\n <div class=\"flex justify-end gap-2 mt-2\">\n <verbena-button (click)=\"addComment()\" text=\"Cancel\" styleType=\"ylw-outline\"></verbena-button>\n <verbena-button (click)=\"saveComment()\" text=\"Save\" bgColor=\"#FFE681\" textColor=\"#404040\" borderRadius=\"10px\"\n pd=\"10px 20px\" width=\"114px\" height=\"39px\"></verbena-button>\n </div>\n </div>\n <span class=\"absolute block h-[90%] h-ninety border border-secondary-200 left-[150px]\"></span>\n <div *ngFor=\"let timeline of history; let i = index\">\n <div>\n <div class=\"flex mb-7\">\n <h5 class=\"w-[100px] cursor-pointer\" (click)=\"setActive(i)\">\n {{ timeline?.CreatedAt | date }}\n </h5>\n <div class=\"ml-24 cursor-pointer min-w-[250px] p-6 rounded-md border-l-2\" [ngClass]=\"{\n 'bg-[#FEFAF1] border-[#FFE681]': active === i,\n 'bg-transparent border-transparent hover:bg-[#F9FAFB]': active !== i\n }\" (click)=\"setActive(i)\">\n <!-- ActionName as primary heading, fallback to ActionType -->\n <h4 class=\"font-bold text-xl text-[#101828] mb-2\">\n {{ timeline.ActionName || timeline.ActionType }}\n </h4>\n\n <!-- Actor information with tooltip -->\n <div class=\"mb-3\">\n <verben-tooltip [top]=\"'0px'\" [left]=\"'0px'\" [textColor]=\"'#000'\" [backgroundColor]=\"'#FFF'\"\n [tooltipContent]=\"actorTooltipTemplate\">\n <p class=\"text-sm text-[#667085] cursor-help inline-flex items-center gap-2\">\n <verben-svg [width]=\"14\" [height]=\"14\" [icon]=\"'user'\" stroke=\"#667085\"></verben-svg>\n <span class=\"font-medium text-[#344054]\">{{ timeline.Actor.Name }}</span>\n </p>\n </verben-tooltip>\n\n <ng-template #actorTooltipTemplate>\n <div class=\"bg-white border border-[#E4E7EC] rounded-lg p-4 shadow-lg w-[280px]\">\n <div class=\"flex gap-3 items-start\">\n <div\n class=\"w-[40px] h-[40px] rounded-full bg-gradient-to-r from-[#D9AEAE] via-[#E3C79F] to-[#FFE681] flex-shrink-0\">\n </div>\n <div class=\"flex-1 min-w-0\">\n <p class=\"font-bold text-sm text-[#101828] mb-1\">\n {{ timeline.Actor.Name }}\n </p>\n <p class=\"text-xs text-[#667085] break-words flex items-start gap-1\">\n <verben-svg [width]=\"12\" [height]=\"12\" [icon]=\"'mail'\" stroke=\"#667085\"></verben-svg>\n <span>{{ timeline.Actor.Identifier }}</span>\n </p>\n <p *ngIf=\"getTagsFromActor(timeline.Actor)\" class=\"text-xs text-[#667085] mt-2\">\n <span class=\"font-medium\">Tags:</span> {{ getTagsFromActor(timeline.Actor) }}\n </p>\n </div>\n </div>\n </div>\n </ng-template>\n </div>\n\n <!-- Action Type (if different from ActionName) -->\n <p *ngIf=\"timeline.ActionName\" class=\"text-sm text-[#667085] mb-2\">\n <span class=\"font-medium\">Operation:</span> {{ timeline.ActionType }}\n </p>\n\n <!-- Stage information for transfer actions -->\n @if (showFromAndTo(timeline.ActionType)) {\n <div class=\"bg-[#F9FAFB] rounded-md p-3 mt-2 space-y-1.5\">\n <p class=\"text-sm flex items-center gap-2\">\n <span class=\"text-[#667085] font-medium\">From:</span>\n <span class=\"text-[#6172F3] font-mono text-xs\">{{ timeline.FromStage }}</span>\n </p>\n <p class=\"text-sm flex items-center gap-2\">\n <span class=\"text-[#667085] font-medium\">To:</span>\n <span class=\"text-[#6172F3] font-mono text-xs\">{{ timeline.ToStage }}</span>\n </p>\n </div>\n }\n\n <!-- View comments button -->\n <button *ngIf=\"timeline.Description\"\n class=\"flex gap-2 items-center w-fit text-[#667085] text-sm border px-3 py-2 rounded-lg bg-[#FCFCFD] mt-3 border-[#E4E7EC] hover:bg-[#F9FAFB] hover:border-[#D0D5DD] transition-colors\">\n <verben-svg [width]=\"15\" [height]=\"15\" [icon]=\"'chat'\"></verben-svg>\n View comments\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-span-5\">\n <div class=\"h-[50px] bg-[#fff]\"></div>\n <div *ngIf=\"active >= 0\" class=\"w-[480px] pl-16 pt-10\">\n <h1 class=\"font-bold text-lg py-2\">Comments</h1>\n <p class=\"text-xs text-[#667085] text-right py-2\">\n {{ history[active].CreatedAt | date }}\n </p>\n <div class=\"bg-[#fff] text-[#101828] leading-relaxed p-8 shadow-md rounded-md\">\n {{ history[active].Description }}\n\n <div *ngIf=\"history[active]?.Files?.length\" class=\"mt-4 border-t pt-4\">\n <h5 class=\"font-bold text-sm mb-2\">Attachments</h5>\n <div class=\"flex flex-col gap-2\">\n <div *ngFor=\"let file of history[active]?.Files\"\n class=\"file-container p-2 flex items-center justify-between gap-3 border rounded-md bg-gray-50\">\n <div class=\"text-sm overflow-x-auto font-semibold\">\n {{ getFileName(file) }}\n </div>\n <span (click)=\"openFile(file)\" class=\"cursor-pointer\">\n <verben-svg [icon]=\"'download-icon'\" [width]=\"20\" [height]=\"20\"></verben-svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </section>\n</div>\n", styles: [".bg-\\[#F9FAFB\\]{background-color:#f9fafb}.bg-\\[#D4A00773\\]{background-color:#d4a00773}.bg-\\[#fff\\]{background-color:#fff}.bg-\\[#d3d3d32a\\]{background-color:#d3d3d32a}.bg-\\[#FCFCFD\\]{background-color:#fcfcfd}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-\\[#D9AEAE\\]{--tw-gradient-from: #d9aeae;--tw-gradient-to: rgb(217 174 174 / 0);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-\\[#E3C79F\\]{--tw-gradient-to: rgb(227 199 159 / 0);--tw-gradient-stops: var(--tw-gradient-from), #e3c79f, var(--tw-gradient-to)}.to-\\[#FFE681\\]{--tw-gradient-to: #ffe681}.mx-8{margin-left:2rem;margin-right:2rem}.rounded-lg{border-radius:.5rem}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.flex{display:flex}.justify-between{justify-content:space-between}.items-center{align-items:center}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.font-semibold{font-weight:600}.cursor-pointer{cursor:pointer}.grid{display:grid}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.col-span-7{grid-column:span 7 / span 7}.col-span-5{grid-column:span 5 / span 5}.pl-16{padding-left:4rem}.pt-20{padding-top:5rem}.pt-10{padding-top:2.5rem}.relative{position:relative}.absolute{position:absolute}.block{display:block}.h-ninety{height:90%}.border{border-width:1px}.border-secondary-200{border-color:#d7dbe6}.left-\\[150px\\]{left:150px}.mb-7{margin-bottom:1.75rem}.w-\\[100px\\]{width:100px}.ml-24{margin-left:6rem}.min-w-\\[250px\\]{min-width:250px}.p-6{padding:1.5rem}.rounded-md{border-radius:.375rem}.after\\:absolute:after{content:\"\";position:absolute}.after\\:-left-\\[90px\\]:after{left:-90px}.after\\:top-0:after{top:0}.after\\:h-full:after{height:100%}.after\\:border-l-2:after{border-left-width:2px}.border-none{border-style:none}.font-bold{font-weight:700}.text-lg{font-size:1.125rem;line-height:1.75rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-\\[\\#667085\\]{color:#667085}.gap-2{gap:.5rem}.w-fit{width:fit-content}.px-3{padding-left:.75rem;padding-right:.75rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.mt-2{margin-top:.5rem}.border-\\[#E4E7EC\\]{border-color:#e4e7ec}.ml-\\[3px\\]{margin-left:3px}.underline{text-decoration-line:underline}.text-\\[\\#6172F3\\]{color:#6172f3}.mt-\\[4px\\]{margin-top:4px}.z-\\[10000\\]{z-index:10000}.border-primary{--tw-border-opacity: 1;border-color:rgb(212 160 7 / var(--tw-border-opacity, 1))}.w-\\[326px\\]{width:326px}.gap-4{gap:1rem}.w-\\[50px\\]{width:50px}.rounded-full{border-radius:9999px}.gap-3{gap:.75rem}.mt-4{margin-top:1rem}.h-\\[50px\\]{height:50px}.w-\\[480px\\]{width:480px}.text-xs{font-size:.75rem;line-height:1rem}.text-right{text-align:right}.text-\\[\\#101828\\]{color:#101828}.leading-relaxed{line-height:1.625}.p-8{padding:2rem}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}\n"] }]
220
220
  }], ctorParameters: () => [{ type: i1.Location }, { type: i2.TaskHistoryService }, { type: i3.EnvironmentService }, { type: i3.UtilService }] });
221
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1oaXN0b3J5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL2NvbXBvbmVudHMvdGFzay1oaXN0b3J5L3Rhc2staGlzdG9yeS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9jb21wb25lbnRzL3Rhc2staGlzdG9yeS90YXNrLWhpc3RvcnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFpQixVQUFVLEVBQTJCLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7Ozs7QUFTbkksTUFBTSxPQUFPLG9CQUFvQjtJQVVyQjtJQUNBO0lBQ0E7SUFDQTtJQVpWLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7SUFDcEMsYUFBYSxHQUFHLGFBQWEsQ0FBQztJQUM5QixNQUFNLEdBQVcsQ0FBQyxDQUFDO0lBQ25CLGNBQWMsR0FBWSxLQUFLLENBQUM7SUFDaEMsVUFBVSxHQUFXLEVBQUUsQ0FBQztJQUN4QixhQUFhLEdBQWUsRUFBRSxDQUFDO0lBQy9CLDJCQUEyQjtJQUUzQixZQUNVLFNBQW1CLEVBQ25CLE9BQTJCLEVBQzNCLE1BQTBCLEVBQzFCLFdBQXdCO1FBSHhCLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDbkIsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUFDM0IsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7SUFDOUIsQ0FBQztJQUNMLHFDQUFxQztJQUNyQyxNQUFNO0lBQ04sdUJBQXVCO0lBQ3ZCLHdDQUF3QztJQUN4QyxtQkFBbUI7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VSxDQUFDLE1BQU0sQ0FBQztZQUN2QixLQUFLLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDekIsS0FBSyxVQUFVLENBQUMsV0FBVyxDQUFDO1lBQzVCLEtBQUssVUFBVSxDQUFDLFlBQVk7Z0JBQzFCLE9BQU8sSUFBSSxDQUFDO1lBQ2QsS0FBSyxVQUFVLENBQUMsT0FBTyxDQUFDO1lBQ3hCLEtBQUssVUFBVSxDQUFDLFdBQVcsQ0FBQztZQUM1QixLQUFLLFVBQVUsQ0FBQyxZQUFZO2dCQUMxQixPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFlO1FBQ3pCLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDeEIsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsUUFBUSxDQUFDLE9BQWU7UUFDdEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLHdCQUF3QixDQUN2QyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLGFBQWEsR0FBRyxPQUFPLEVBQUUsQ0FDckQsQ0FBQztJQUNKLENBQUM7d0dBL05VLG9CQUFvQjs0RkFBcEIsb0JBQW9CLG9NQ1hqQyx5OFBBaUpBOzs0RkR0SWEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgaW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9uSGlzdG9yeSwgQWN0aW9uVHlwZSwgQWN0b3IsIEZpbGUgYXMgRmlsZURhdGEsIE9iamVjdFN0YXRlLCBPcGVyYXRpb25UeXBlIH0gZnJvbSAndmVyYmVuLXdvcmtmbG93LXVpL3NyYy9saWIvbW9kZWxzJztcbmltcG9ydCB7IEVudmlyb25tZW50U2VydmljZSwgVXRpbFNlcnZpY2UgfSBmcm9tICd2ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBUYXNrSGlzdG9yeVNlcnZpY2UgfSBmcm9tICcuL3Rhc2staGlzdG9yeS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXRhc2staGlzdG9yeScsXG4gIHRlbXBsYXRlVXJsOiAnLi90YXNrLWhpc3RvcnkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vdGFzay1oaXN0b3J5LmNvbXBvbmVudC5jc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBUYXNrSGlzdG9yeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHRhc2tDb2RlID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICBvcGVyYXRpb25UeXBlID0gT3BlcmF0aW9uVHlwZTtcbiAgYWN0aXZlOiBudW1iZXIgPSAwO1xuICBzaG93Q29tbWVudEJveDogYm9vbGVhbiA9IGZhbHNlO1xuICBuZXdDb21tZW50OiBzdHJpbmcgPSAnJztcbiAgc2VsZWN0ZWRGaWxlczogRmlsZURhdGFbXSA9IFtdO1xuICAvLyBBY3Rpb25UeXBlID0gQWN0aW9uVHlwZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9sb2NhdGlvbjogTG9jYXRpb24sXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBUYXNrSGlzdG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbnZTdmM6IEVudmlyb25tZW50U2VydmljZSxcbiAgICBwcml2YXRlIHV0aWxTZXJ2aWNlOiBVdGlsU2VydmljZVxuICApIHsgfVxuICAvLyBzaW5nbGVIaXN0b3J5OiBUaW1lbGluZUV2ZW50W10gPSBbXG4gIC8vICAge1xuICAvLyAgICAgRGF0ZTogJzQ6MDUgUE0nLFxuICAvLyAgICAgT3BlcmF0aW9uOiBPcGVyYXRpb25UeXBlLkNvbW1lbnQsXG4gIC8vICAgICBEZXRhaWxzOiB7fSxcbiAgLy8gICAgIEFjdGlvbnM6IFtcbiAgLy8gICAgICAgeyBMYWJlbDogJ1ZpZXcgQ29tbWVudHMnLCBUeXBlOiAnYnV0dG9uJywgQWN0aW9uOiAndmlld0NvbW1lbnRzJyB9LFxuICAvLyAgICAgXSxcbiAgLy8gICB9LFxuICAvLyAgIHtcbiAgLy8gICAgIERhdGU6ICdZZXN0ZXJkYXknLFxuICAvLyAgICAgT3BlcmF0aW9uOiBPcGVyYXRpb25UeXBlLkNvbW1lbnQsXG4gIC8vICAgICBEZXRhaWxzOiB7fSxcbiAgLy8gICAgIEFjdGlvbnM6IFtcbiAgLy8gICAgICAgeyBMYWJlbDogJ1ZpZXcgQ29tbWVudHMnLCBUeXBlOiAnYnV0dG9uJywgQWN0aW9uOiAndmlld0NvbW1lbnRzJyB9LFxuICAvLyAgICAgXSxcbiAgLy8gICB9LFxuICAvLyAgIHtcbiAgLy8gICAgIERhdGU6ICdNYXIgMicsXG4gIC8vICAgICBPcGVyYXRpb246IE9wZXJhdGlvblR5cGUuRm9ybXMsXG4gIC8vICAgICBEZXRhaWxzOiB7XG4gIC8vICAgICAgIEZpbGxlZEJ5OiAnQW5vbnltb3VzJyxcbiAgLy8gICAgIH0sXG4gIC8vICAgICBBY3Rpb25zOiBbeyBMYWJlbDogJ1ZpZXcgRm9ybScsIFR5cGU6ICdidXR0b24nLCBBY3Rpb246ICd2aWV3Rm9ybScgfV0sXG4gIC8vICAgfSxcbiAgLy8gICB7XG4gIC8vICAgICBEYXRlOiAnTm92IDQnLFxuICAvLyAgICAgT3BlcmF0aW9uOiBPcGVyYXRpb25UeXBlLkFzc2lnbm1lbnQsXG4gIC8vICAgICBEZXRhaWxzOiB7XG4gIC8vICAgICAgIEZyb206ICdKb2huIERvZScsXG4gIC8vICAgICAgIFRvOiAnSmFuZSBEb2UnLFxuICAvLyAgICAgfSxcbiAgLy8gICAgIEFjdGlvbnM6IFtdLFxuICAvLyAgIH0sXG4gIC8vICAge1xuICAvLyAgICAgRGF0ZTogJ05vdiA2JyxcbiAgLy8gICAgIE9wZXJhdGlvbjogT3BlcmF0aW9uVHlwZS5Db21tZW50LFxuICAvLyAgICAgRGV0YWlsczoge30sXG4gIC8vICAgICBBY3Rpb25zOiBbXG4gIC8vICAgICAgIHsgTGFiZWw6ICdWaWV3IENvbW1lbnRzJywgVHlwZTogJ2J1dHRvbicsIEFjdGlvbjogJ3ZpZXdDb21tZW50cycgfSxcbiAgLy8gICAgIF0sXG4gIC8vICAgfSxcbiAgLy8gXTtcblxuICBoaXN0b3J5OiBBY3Rpb25IaXN0b3J5W10gPSBbXTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlcnZpY2UuZ2V0VGFza0hpc3RvcnkodGhpcy50YXNrQ29kZSgpKS50aGVuKChyZXMpID0+IHtcbiAgICAgIHRoaXMuaGlzdG9yeSA9IHJlcztcbiAgICAgIGNvbnNvbGUubG9nKHRoaXMuaGlzdG9yeSk7XG4gICAgfSk7XG4gIH1cblxuICBnb0JhY2soKSB7XG4gICAgdGhpcy5fbG9jYXRpb24uYmFjaygpO1xuICB9XG5cbiAgc2V0QWN0aXZlKGk6IG51bWJlcikge1xuICAgIHRoaXMuYWN0aXZlID0gaTtcbiAgfVxuXG4gIGdldFRhZ3NGcm9tQWN0b3IoYWN0b3I6IEFjdG9yKSB7XG4gICAgcmV0dXJuIGFjdG9yLlRhZ3MubWFwKCh0YWcpID0+IHRhZy5OYW1lKS5qb2luKCcsICcpO1xuICB9XG5cbiAgYWRkQ29tbWVudCgpIHtcbiAgICB0aGlzLnNob3dDb21tZW50Qm94ID0gIXRoaXMuc2hvd0NvbW1lbnRCb3g7XG4gIH1cblxuICBhc3luYyBzYXZlQ29tbWVudCgpIHtcbiAgICBjb25zb2xlLmxvZyh0aGlzLm5ld0NvbW1lbnQpO1xuICAgIGlmICghdGhpcy5uZXdDb21tZW50LnRyaW0oKSAmJiB0aGlzLnNlbGVjdGVkRmlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHVwbG9hZGVkRmlsZXM6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRGaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLnV0aWxTZXJ2aWNlLnNlbmRCSSh0cnVlKTtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5zZXJ2aWNlLnVwbG9hZEZpbGVzKHRoaXMuc2VsZWN0ZWRGaWxlcyk7XG4gICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICB1cGxvYWRlZEZpbGVzID0gcmVzO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdGaWxlIHVwbG9hZCBmYWlsZWQnLCBlcnJvcik7XG4gICAgICAgIHRoaXMudXRpbFNlcnZpY2Uuc2VuZEJJKGZhbHNlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkoZmFsc2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGFjdGlvbkhpc3RvcnkgPSB7XG4gICAgICBUYXNrQ29kZTogdGhpcy50YXNrQ29kZSgpID8/ICcnLFxuICAgICAgRGVzY3JpcHRpb246IHRoaXMubmV3Q29tbWVudCxcbiAgICAgIEFjdGlvblR5cGU6IEFjdGlvblR5cGUuQ29tbWVudCxcbiAgICAgIERhdGFTdGF0ZTogT2JqZWN0U3RhdGUuTmV3LFxuICAgICAgRmlsZXM6IHVwbG9hZGVkRmlsZXMsXG4gICAgICAvLyBBY3Rvcjoge1xuICAgICAgLy8gICBJZDogdGhpcy5zZWxlY3RlZERldGFpbC5BY3RvcklkLFxuICAgICAgLy8gICBOYW1lOiB0aGlzLnNlbGVjdGVkRGV0YWlsLkFjdG9yTmFtZSxcbiAgICAgIC8vICAgVGFnczogdGhpcy5zZWxlY3RlZERldGFpbC5UYWdzLFxuICAgICAgLy8gfSxcbiAgICAgIFdvcmtmbG93OiAnJyxcbiAgICAgIEZyb21TdGFnZTogJycsXG4gICAgICBUb1N0YWdlOiAnJyxcbiAgICAgIENvZGU6ICcnLFxuICAgICAgVGVuYW50SWQ6ICdQRExUQzYnLFxuICAgIH0gYXMgQWN0aW9uSGlzdG9yeTtcblxuICAgIHRoaXMuc2VydmljZS5zYXZlQWN0aW9uSGlzdG9yeShbYWN0aW9uSGlzdG9yeV0pLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5uZXdDb21tZW50ID0gJyc7XG4gICAgICB0aGlzLnNlbGVjdGVkRmlsZXMgPSBbXTtcbiAgICAgIHRoaXMuc2hvd0NvbW1lbnRCb3ggPSBmYWxzZTtcbiAgICAgIHRoaXMuc2VydmljZS5nZXRUYXNrSGlzdG9yeSh0aGlzLnRhc2tDb2RlKCkpLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICB0aGlzLmhpc3RvcnkgPSByZXM7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIG9uRmlsZVNlbGVjdChkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBmaWxlczogYW55ID0gZGF0YTtcblxuICAgIGlmICghZmlsZXMgfHwgZmlsZXMubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBmaWxlQXJyYXk6IEZpbGVEYXRhW10gPSBbXTtcbiAgICBjb25zdCByZWFkZXJzOiBQcm9taXNlPHZvaWQ+W10gPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGZpbGUgPSBmaWxlc1tpXTtcbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG5cbiAgICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgYmFzZTY0ID0gcmVhZGVyLnJlc3VsdCBhcyBzdHJpbmc7XG4gICAgICAgICAgZmlsZUFycmF5LnB1c2goe1xuICAgICAgICAgICAgRXh0ZW5zaW9uOiBmaWxlLm5hbWUuc3BsaXQoJy4nKS5wb3AoKSxcbiAgICAgICAgICAgIE5hbWU6IHRoaXMuZ2VuZXJhdGVSYW5kb21Db2RlKCksXG4gICAgICAgICAgICBEYXRhOiBiYXNlNjQsXG4gICAgICAgICAgICBEYXRhU3RhdGU6IE9iamVjdFN0YXRlLk5ldyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmVhZGVyLm9uZXJyb3IgPSAoZXJyb3IpID0+IHJlamVjdChlcnJvcik7XG4gICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAgICAgfSk7XG5cbiAgICAgIHJlYWRlcnMucHVzaChwcm9taXNlKTtcbiAgICB9XG5cbiAgICBQcm9taXNlLmFsbChyZWFkZXJzKS50aGVuKCgpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCdGaWxlcyByZWFkeSB0byB1cGxvYWQ6JywgZmlsZUFycmF5KTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlcyA9IGZpbGVBcnJheTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVSYW5kb21Db2RlKGxlbmd0aDogbnVtYmVyID0gMTApOiBzdHJpbmcge1xuICAgIGNvbnN0IGNoYXJzID1cbiAgICAgICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSc7XG4gICAgbGV0IHJlc3VsdCA9ICcnO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHJlc3VsdCArPSBjaGFycy5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY2hhcnMubGVuZ3RoKSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBnZXRGaWxlRXh0ZW5zaW9uKGZpbGVVcmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgcGFydHMgPSBmaWxlVXJsLnNwbGl0KCcuJyk7XG4gICAgcmV0dXJuIHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdLnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICBzZXRQcmV2aWV3KHZhbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXZhbCkgcmV0dXJuICcnO1xuICAgIGNvbnN0IGZpcnN0ID0gdmFsLnNwbGl0KCcsJylbMF0udHJpbSgpO1xuXG4gICAgaWYgKGZpcnN0LnN0YXJ0c1dpdGgoJ2h0dHAnKSB8fCBmaXJzdC5zdGFydHNXaXRoKCdkYXRhOicpKSB7XG4gICAgICByZXR1cm4gZmlyc3Q7XG4gICAgfVxuICAgIHJldHVybiBgJHt0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5GSUxFX1VSTH0vJHtmaXJzdH1gO1xuICB9XG5cbiAgc2hvd0Zyb21BbmRUbyhhY3Rpb25UeXBlOiBBY3Rpb25UeXBlKTogYm9vbGVhbiB7XG4gICAgc3dpdGNoIChhY3Rpb25UeXBlKSB7XG4gICAgICBjYXNlIEFjdGlvblR5cGUuUGFzc09uOlxuICAgICAgY2FzZSBBY3Rpb25UeXBlLlBhc3NCYWNrOlxuICAgICAgY2FzZSBBY3Rpb25UeXBlLlNraXBGb3J3YXJkOlxuICAgICAgY2FzZSBBY3Rpb25UeXBlLlNraXBCYWNrd2FyZDpcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBjYXNlIEFjdGlvblR5cGUuQ29tbWVudDpcbiAgICAgIGNhc2UgQWN0aW9uVHlwZS5Gb3JtRmlsbGluZzpcbiAgICAgIGNhc2UgQWN0aW9uVHlwZS5TdGF0dXNDaGFuZ2U6XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBnZXRGaWxlTmFtZShmaWxlVXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghZmlsZVVybCkgcmV0dXJuICcnO1xuICAgIHJldHVybiBmaWxlVXJsLnNwbGl0KCcvJykucG9wKCkgfHwgJyc7XG4gIH1cblxuICBvcGVuRmlsZShmaWxlVXJsOiBzdHJpbmcpIHtcbiAgICBpZiAoIWZpbGVVcmwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy51dGlsU2VydmljZS5vcGVuRnVsbFJvdXRlSW5OZXdXaW5kb3coXG4gICAgICBgJHt0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5GSUxFX0JBU0VfVVJMfSR7ZmlsZVVybH1gXG4gICAgKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImJnLVsjRjlGQUZCXVwiPlxuICA8aGVhZGVyIGNsYXNzPVwibXgtOCByb3VuZGVkLWxnIHNoYWRvdy1sZyBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgcHgtNiBweS0yIGJnLVsjRDRBMDA3NzNdXCI+XG4gICAgPGg0IGNsYXNzPVwiZm9udC1zZW1pYm9sZFwiPnt7IHRhc2tDb2RlKCkgfX08L2g0PlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC00IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgPHZlcmJlbmEtYnV0dG9uIChjbGljayk9XCJhZGRDb21tZW50KClcIiB0ZXh0PVwiKyBBZGQgQ29tbWVudFwiIHN0eWxlVHlwZT1cInlsdy1vdXRsaW5lXCJcbiAgICAgICAgY2xhc3M9XCJtbC1hdXRvXCI+PC92ZXJiZW5hLWJ1dHRvbj5cbiAgICAgIDx2ZXJiZW4tc3ZnIChjbGljayk9XCJnb0JhY2soKVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiBbd2lkdGhdPVwiMTdcIiBbaGVpZ2h0XT1cIjE3XCIgW2ljb25dPVwiJ2dvLWJhY2snXCI+PC92ZXJiZW4tc3ZnPlxuICAgIDwvZGl2PlxuICA8L2hlYWRlcj5cbiAgPHNlY3Rpb24gY2xhc3M9XCJncmlkIGdyaWQtY29scy0xMlwiPlxuICAgIDxkaXYgY2xhc3M9XCJiZy1bI2ZmZl0gY29sLXNwYW4tNyBwbC0xNiBwdC0yMCByZWxhdGl2ZVwiPlxuICAgICAgPGRpdiAqbmdJZj1cInNob3dDb21tZW50Qm94XCIgY2xhc3M9XCJtYi02IG1yLTEwXCI+XG4gICAgICAgIDxoNCBjbGFzcz1cImZvbnQtYm9sZCB0ZXh0LWxnIG1iLTJcIj5BZGQgQ29tbWVudDwvaDQ+XG4gICAgICAgIDwhLS0gPHZlcmJlbmEtdGV4dGFyZWEgWyhuZ01vZGVsKV09XCJuZXdDb21tZW50XCIgbGFiZWw9XCJDb21tZW50XCIgY2xhc3M9XCJ3LWZ1bGxcIj48L3ZlcmJlbmEtdGV4dGFyZWE+IC0tPlxuICAgICAgICA8dGV4dGFyZWEgWyhuZ01vZGVsKV09XCJuZXdDb21tZW50XCIgbGFiZWw9XCJDb21tZW50XCIgY2xhc3M9XCJ3LWZ1bGwgYm9yZGVyIHJvdW5kZWQtbWQgcC0yXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm10LTRcIj5cbiAgICAgICAgICA8ZmlsZS11cGxvYWQgKHNlbGVjdGVkRmlsZXNDaGFuZ2UpPVwib25GaWxlU2VsZWN0KCRldmVudClcIiBbbXVsdGlwbGVdPVwidHJ1ZVwiIGxhYmVsPVwiQXR0YWNoIEZpbGVzXCI+XG4gICAgICAgICAgPC9maWxlLXVwbG9hZD5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRGaWxlcy5sZW5ndGggPiAwXCIgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBnYXAtMyBtdC0zXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBmaWxlIG9mIHNlbGVjdGVkRmlsZXNcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiZmlsZS5FeHRlbnNpb25cIj5cbiAgICAgICAgICAgICAgICA8aW1nICpuZ1N3aXRjaENhc2U9XCInanBnJ1wiIFtzcmNdPVwiZmlsZS5EYXRhXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy1bMTAwcHhdIGgtWzEwMHB4XSBvYmplY3QtY292ZXIgcm91bmRlZC1tZCBib3JkZXJcIiAvPlxuICAgICAgICAgICAgICAgIDxpbWcgKm5nU3dpdGNoQ2FzZT1cIidwbmcnXCIgW3NyY109XCJmaWxlLkRhdGFcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LVsxMDBweF0gaC1bMTAwcHhdIG9iamVjdC1jb3ZlciByb3VuZGVkLW1kIGJvcmRlclwiIC8+XG4gICAgICAgICAgICAgICAgPHZpZGVvICpuZ1N3aXRjaENhc2U9XCInbXA0J1wiIFtzcmNdPVwiZmlsZS5EYXRhXCIgY2xhc3M9XCJ3LVsxNTBweF0gcm91bmRlZC1tZCBzaGFkb3dcIiBjb250cm9scz48L3ZpZGVvPlxuICAgICAgICAgICAgICAgIDxhdWRpbyAqbmdTd2l0Y2hDYXNlPVwiJ21wMydcIiBbc3JjXT1cImZpbGUuRGF0YVwiIGNvbnRyb2xzIGNsYXNzPVwidy1bMTUwcHhdXCI+PC9hdWRpbz5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktZW5kIGdhcC0yIG10LTJcIj5cbiAgICAgICAgICA8dmVyYmVuYS1idXR0b24gKGNsaWNrKT1cImFkZENvbW1lbnQoKVwiIHRleHQ9XCJDYW5jZWxcIiBzdHlsZVR5cGU9XCJ5bHctb3V0bGluZVwiPjwvdmVyYmVuYS1idXR0b24+XG4gICAgICAgICAgPHZlcmJlbmEtYnV0dG9uIChjbGljayk9XCJzYXZlQ29tbWVudCgpXCIgdGV4dD1cIlNhdmVcIiBiZ0NvbG9yPVwiI0ZGRTY4MVwiIHRleHRDb2xvcj1cIiM0MDQwNDBcIiBib3JkZXJSYWRpdXM9XCIxMHB4XCJcbiAgICAgICAgICAgIHBkPVwiMTBweCAyMHB4XCIgd2lkdGg9XCIxMTRweFwiIGhlaWdodD1cIjM5cHhcIj48L3ZlcmJlbmEtYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNwYW4gY2xhc3M9XCJhYnNvbHV0ZSBibG9jayBoLVs5MCVdIGgtbmluZXR5IGJvcmRlciBib3JkZXItc2Vjb25kYXJ5LTIwMCBsZWZ0LVsxNTBweF1cIj48L3NwYW4+XG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCB0aW1lbGluZSBvZiBoaXN0b3J5OyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggbWItN1wiPlxuICAgICAgICAgICAgPGg1IGNsYXNzPVwidy1bMTAwcHhdIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNldEFjdGl2ZShpKVwiPlxuICAgICAgICAgICAgICB7eyB0aW1lbGluZT8uQ3JlYXRlZEF0IHwgZGF0ZSB9fVxuICAgICAgICAgICAgPC9oNT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtbC0yNCBjdXJzb3ItcG9pbnRlciBtaW4tdy1bMjUwcHhdIHAtNiByb3VuZGVkLW1kIGJvcmRlci1sLTJcIiBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgJ2JnLVsjRkVGQUYxXSBib3JkZXItWyNGRkU2ODFdJzogYWN0aXZlID09PSBpLFxuICAgICAgICAgICAgICAgICdiZy10cmFuc3BhcmVudCBib3JkZXItdHJhbnNwYXJlbnQgaG92ZXI6YmctWyNGOUZBRkJdJzogYWN0aXZlICE9PSBpXG4gICAgICAgICAgICAgIH1cIiAoY2xpY2spPVwic2V0QWN0aXZlKGkpXCI+XG4gICAgICAgICAgICAgIDwhLS0gQWN0aW9uTmFtZSBhcyBwcmltYXJ5IGhlYWRpbmcsIGZhbGxiYWNrIHRvIEFjdGlvblR5cGUgLS0+XG4gICAgICAgICAgICAgIDxoNCBjbGFzcz1cImZvbnQtYm9sZCB0ZXh0LXhsIHRleHQtWyMxMDE4MjhdIG1iLTJcIj5cbiAgICAgICAgICAgICAgICB7eyB0aW1lbGluZS5BY3Rpb25OYW1lIHx8IHRpbWVsaW5lLkFjdGlvblR5cGUgfX1cbiAgICAgICAgICAgICAgPC9oND5cblxuICAgICAgICAgICAgICA8IS0tIEFjdG9yIGluZm9ybWF0aW9uIHdpdGggdG9vbHRpcCAtLT5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cbiAgICAgICAgICAgICAgICA8dmVyYmVuLXRvb2x0aXAgW3RvcF09XCInMHB4J1wiIFtsZWZ0XT1cIicwcHgnXCIgW3RleHRDb2xvcl09XCInIzAwMCdcIiBbYmFja2dyb3VuZENvbG9yXT1cIicjRkZGJ1wiXG4gICAgICAgICAgICAgICAgICBbdG9vbHRpcENvbnRlbnRdPVwiYWN0b3JUb29sdGlwVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1zbSB0ZXh0LVsjNjY3MDg1XSBjdXJzb3ItaGVscCBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHZlcmJlbi1zdmcgW3dpZHRoXT1cIjE0XCIgW2hlaWdodF09XCIxNFwiIFtpY29uXT1cIid1c2VyJ1wiIHN0cm9rZT1cIiM2NjcwODVcIj48L3ZlcmJlbi1zdmc+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1tZWRpdW0gdGV4dC1bIzM0NDA1NF1cIj57eyB0aW1lbGluZS5BY3Rvci5OYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgIDwvdmVyYmVuLXRvb2x0aXA+XG5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2FjdG9yVG9vbHRpcFRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJnLXdoaXRlIGJvcmRlciBib3JkZXItWyNFNEU3RUNdIHJvdW5kZWQtbGcgcC00IHNoYWRvdy1sZyB3LVsyODBweF1cIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTMgaXRlbXMtc3RhcnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctWzQwcHhdIGgtWzQwcHhdIHJvdW5kZWQtZnVsbCBiZy1ncmFkaWVudC10by1yIGZyb20tWyNEOUFFQUVdIHZpYS1bI0UzQzc5Rl0gdG8tWyNGRkU2ODFdIGZsZXgtc2hyaW5rLTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC0xIG1pbi13LTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZm9udC1ib2xkIHRleHQtc20gdGV4dC1bIzEwMTgyOF0gbWItMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0aW1lbGluZS5BY3Rvci5OYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQteHMgdGV4dC1bIzY2NzA4NV0gYnJlYWstd29yZHMgZmxleCBpdGVtcy1zdGFydCBnYXAtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dmVyYmVuLXN2ZyBbd2lkdGhdPVwiMTJcIiBbaGVpZ2h0XT1cIjEyXCIgW2ljb25dPVwiJ21haWwnXCIgc3Ryb2tlPVwiIzY2NzA4NVwiPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgdGltZWxpbmUuQWN0b3IuSWRlbnRpZmllciB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwICpuZ0lmPVwiZ2V0VGFnc0Zyb21BY3Rvcih0aW1lbGluZS5BY3RvcilcIiBjbGFzcz1cInRleHQteHMgdGV4dC1bIzY2NzA4NV0gbXQtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtbWVkaXVtXCI+VGFnczo8L3NwYW4+IHt7IGdldFRhZ3NGcm9tQWN0b3IodGltZWxpbmUuQWN0b3IpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPCEtLSBBY3Rpb24gVHlwZSAoaWYgZGlmZmVyZW50IGZyb20gQWN0aW9uTmFtZSkgLS0+XG4gICAgICAgICAgICAgIDxwICpuZ0lmPVwidGltZWxpbmUuQWN0aW9uTmFtZVwiIGNsYXNzPVwidGV4dC1zbSB0ZXh0LVsjNjY3MDg1XSBtYi0yXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LW1lZGl1bVwiPk9wZXJhdGlvbjo8L3NwYW4+IHt7IHRpbWVsaW5lLkFjdGlvblR5cGUgfX1cbiAgICAgICAgICAgICAgPC9wPlxuXG4gICAgICAgICAgICAgIDwhLS0gU3RhZ2UgaW5mb3JtYXRpb24gZm9yIHRyYW5zZmVyIGFjdGlvbnMgLS0+XG4gICAgICAgICAgICAgIEBpZiAoc2hvd0Zyb21BbmRUbyh0aW1lbGluZS5BY3Rpb25UeXBlKSkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmctWyNGOUZBRkJdIHJvdW5kZWQtbWQgcC0zIG10LTIgc3BhY2UteS0xLjVcIj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtc20gZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1bIzY2NzA4NV0gZm9udC1tZWRpdW1cIj5Gcm9tOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1bIzYxNzJGM10gZm9udC1tb25vIHRleHQteHNcIj57eyB0aW1lbGluZS5Gcm9tU3RhZ2UgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1zbSBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LVsjNjY3MDg1XSBmb250LW1lZGl1bVwiPlRvOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1bIzYxNzJGM10gZm9udC1tb25vIHRleHQteHNcIj57eyB0aW1lbGluZS5Ub1N0YWdlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICA8IS0tIFZpZXcgY29tbWVudHMgYnV0dG9uIC0tPlxuICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwidGltZWxpbmUuRGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBnYXAtMiBpdGVtcy1jZW50ZXIgdy1maXQgdGV4dC1bIzY2NzA4NV0gdGV4dC1zbSBib3JkZXIgcHgtMyBweS0yIHJvdW5kZWQtbGcgYmctWyNGQ0ZDRkRdIG10LTMgYm9yZGVyLVsjRTRFN0VDXSBob3ZlcjpiZy1bI0Y5RkFGQl0gaG92ZXI6Ym9yZGVyLVsjRDBENUREXSB0cmFuc2l0aW9uLWNvbG9yc1wiPlxuICAgICAgICAgICAgICAgIDx2ZXJiZW4tc3ZnIFt3aWR0aF09XCIxNVwiIFtoZWlnaHRdPVwiMTVcIiBbaWNvbl09XCInY2hhdCdcIj48L3ZlcmJlbi1zdmc+XG4gICAgICAgICAgICAgICAgVmlldyBjb21tZW50c1xuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc3Bhbi01XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaC1bNTBweF0gYmctWyNmZmZdXCI+PC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiYWN0aXZlID49IDBcIiBjbGFzcz1cInctWzQ4MHB4XSBwbC0xNiBwdC0xMFwiPlxuICAgICAgICA8aDEgY2xhc3M9XCJmb250LWJvbGQgdGV4dC1sZyBweS0yXCI+Q29tbWVudHM8L2gxPlxuICAgICAgICA8cCBjbGFzcz1cInRleHQteHMgdGV4dC1bIzY2NzA4NV0gdGV4dC1yaWdodCBweS0yXCI+XG4gICAgICAgICAge3sgaGlzdG9yeVthY3RpdmVdLkNyZWF0ZWRBdCB8IGRhdGUgfX1cbiAgICAgICAgPC9wPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmctWyNmZmZdIHRleHQtWyMxMDE4MjhdIGxlYWRpbmctcmVsYXhlZCBwLTggc2hhZG93LW1kIHJvdW5kZWQtbWRcIj5cbiAgICAgICAgICB7eyBoaXN0b3J5W2FjdGl2ZV0uRGVzY3JpcHRpb24gfX1cblxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJoaXN0b3J5W2FjdGl2ZV0/LkZpbGVzPy5sZW5ndGhcIiBjbGFzcz1cIm10LTQgYm9yZGVyLXQgcHQtNFwiPlxuICAgICAgICAgICAgPGg1IGNsYXNzPVwiZm9udC1ib2xkIHRleHQtc20gbWItMlwiPkF0dGFjaG1lbnRzPC9oNT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0yXCI+XG4gICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGZpbGUgb2YgaGlzdG9yeVthY3RpdmVdPy5GaWxlc1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmaWxlLWNvbnRhaW5lciBwLTIgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC0zIGJvcmRlciByb3VuZGVkLW1kIGJnLWdyYXktNTBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zbSBvdmVyZmxvdy14LWF1dG8gZm9udC1zZW1pYm9sZFwiPlxuICAgICAgICAgICAgICAgICAge3sgZ2V0RmlsZU5hbWUoZmlsZSkgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwib3BlbkZpbGUoZmlsZSlcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XG4gICAgICAgICAgICAgICAgICA8dmVyYmVuLXN2ZyBbaWNvbl09XCInZG93bmxvYWQtaWNvbidcIiBbd2lkdGhdPVwiMjBcIiBbaGVpZ2h0XT1cIjIwXCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9zZWN0aW9uPlxuPC9kaXY+XG4iXX0=
221
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1oaXN0b3J5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL2NvbXBvbmVudHMvdGFzay1oaXN0b3J5L3Rhc2staGlzdG9yeS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9jb21wb25lbnRzL3Rhc2staGlzdG9yeS90YXNrLWhpc3RvcnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFpQixVQUFVLEVBQTJCLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7Ozs7QUFTbkksTUFBTSxPQUFPLG9CQUFvQjtJQVVyQjtJQUNBO0lBQ0E7SUFDQTtJQVpWLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7SUFDcEMsYUFBYSxHQUFHLGFBQWEsQ0FBQztJQUM5QixNQUFNLEdBQVcsQ0FBQyxDQUFDO0lBQ25CLGNBQWMsR0FBWSxLQUFLLENBQUM7SUFDaEMsVUFBVSxHQUFXLEVBQUUsQ0FBQztJQUN4QixhQUFhLEdBQWUsRUFBRSxDQUFDO0lBQy9CLDJCQUEyQjtJQUUzQixZQUNVLFNBQW1CLEVBQ25CLE9BQTJCLEVBQzNCLE1BQTBCLEVBQzFCLFdBQXdCO1FBSHhCLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDbkIsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUFDM0IsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7SUFDOUIsQ0FBQztJQUNMLHFDQUFxQztJQUNyQyxNQUFNO0lBQ04sdUJBQXVCO0lBQ3ZCLHdDQUF3QztJQUN4QyxtQkFBbUI7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VSxDQUFDLE1BQU0sQ0FBQztZQUN2QixLQUFLLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDekIsS0FBSyxVQUFVLENBQUMsV0FBVyxDQUFDO1lBQzVCLEtBQUssVUFBVSxDQUFDLFlBQVk7Z0JBQzFCLE9BQU8sSUFBSSxDQUFDO1lBQ2QsS0FBSyxVQUFVLENBQUMsT0FBTyxDQUFDO1lBQ3hCLEtBQUssVUFBVSxDQUFDLFdBQVcsQ0FBQztZQUM1QixLQUFLLFVBQVUsQ0FBQyxZQUFZO2dCQUMxQixPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFlO1FBQ3pCLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDeEIsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsUUFBUSxDQUFDLE9BQWU7UUFDdEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLHdCQUF3QixDQUN2QyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLGFBQWEsR0FBRyxPQUFPLEVBQUUsQ0FDckQsQ0FBQztJQUNKLENBQUM7d0dBL05VLG9CQUFvQjs0RkFBcEIsb0JBQW9CLG9NQ1hqQyx5OFBBaUpBOzs0RkR0SWEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgaW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9uSGlzdG9yeSwgQWN0aW9uVHlwZSwgQWN0b3IsIEZpbGUgYXMgRmlsZURhdGEsIE9iamVjdFN0YXRlLCBPcGVyYXRpb25UeXBlIH0gZnJvbSAndmVyYmVuLXdvcmtmbG93LXVpL3NyYy9saWIvbW9kZWxzJztcbmltcG9ydCB7IEVudmlyb25tZW50U2VydmljZSwgVXRpbFNlcnZpY2UgfSBmcm9tICd2ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBUYXNrSGlzdG9yeVNlcnZpY2UgfSBmcm9tICcuL3Rhc2staGlzdG9yeS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXRhc2staGlzdG9yeScsXG4gIHRlbXBsYXRlVXJsOiAnLi90YXNrLWhpc3RvcnkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vdGFzay1oaXN0b3J5LmNvbXBvbmVudC5jc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBUYXNrSGlzdG9yeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHRhc2tDb2RlID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICBvcGVyYXRpb25UeXBlID0gT3BlcmF0aW9uVHlwZTtcbiAgYWN0aXZlOiBudW1iZXIgPSAwO1xuICBzaG93Q29tbWVudEJveDogYm9vbGVhbiA9IGZhbHNlO1xuICBuZXdDb21tZW50OiBzdHJpbmcgPSAnJztcbiAgc2VsZWN0ZWRGaWxlczogRmlsZURhdGFbXSA9IFtdO1xuICAvLyBBY3Rpb25UeXBlID0gQWN0aW9uVHlwZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9sb2NhdGlvbjogTG9jYXRpb24sXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBUYXNrSGlzdG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbnZTdmM6IEVudmlyb25tZW50U2VydmljZSxcbiAgICBwcml2YXRlIHV0aWxTZXJ2aWNlOiBVdGlsU2VydmljZVxuICApIHsgfVxuICAvLyBzaW5nbGVIaXN0b3J5OiBUaW1lbGluZUV2ZW50W10gPSBbXG4gIC8vICAge1xuICAvLyAgICAgRGF0ZTogJzQ6MDUgUE0nLFxuICAvLyAgICAgT3BlcmF0aW9uOiBPcGVyYXRpb25UeXBlLkNvbW1lbnQsXG4gIC8vICAgICBEZXRhaWxzOiB7fSxcbiAgLy8gICAgIEFjdGlvbnM6IFtcbiAgLy8gICAgICAgeyBMYWJlbDogJ1ZpZXcgQ29tbWVudHMnLCBUeXBlOiAnYnV0dG9uJywgQWN0aW9uOiAndmlld0NvbW1lbnRzJyB9LFxuICAvLyAgICAgXSxcbiAgLy8gICB9LFxuICAvLyAgIHtcbiAgLy8gICAgIERhdGU6ICdZZXN0ZXJkYXknLFxuICAvLyAgICAgT3BlcmF0aW9uOiBPcGVyYXRpb25UeXBlLkNvbW1lbnQsXG4gIC8vICAgICBEZXRhaWxzOiB7fSxcbiAgLy8gICAgIEFjdGlvbnM6IFtcbiAgLy8gICAgICAgeyBMYWJlbDogJ1ZpZXcgQ29tbWVudHMnLCBUeXBlOiAnYnV0dG9uJywgQWN0aW9uOiAndmlld0NvbW1lbnRzJyB9LFxuICAvLyAgICAgXSxcbiAgLy8gICB9LFxuICAvLyAgIHtcbiAgLy8gICAgIERhdGU6ICdNYXIgMicsXG4gIC8vICAgICBPcGVyYXRpb246IE9wZXJhdGlvblR5cGUuRm9ybXMsXG4gIC8vICAgICBEZXRhaWxzOiB7XG4gIC8vICAgICAgIEZpbGxlZEJ5OiAnQW5vbnltb3VzJyxcbiAgLy8gICAgIH0sXG4gIC8vICAgICBBY3Rpb25zOiBbeyBMYWJlbDogJ1ZpZXcgRm9ybScsIFR5cGU6ICdidXR0b24nLCBBY3Rpb246ICd2aWV3Rm9ybScgfV0sXG4gIC8vICAgfSxcbiAgLy8gICB7XG4gIC8vICAgICBEYXRlOiAnTm92IDQnLFxuICAvLyAgICAgT3BlcmF0aW9uOiBPcGVyYXRpb25UeXBlLkFzc2lnbm1lbnQsXG4gIC8vICAgICBEZXRhaWxzOiB7XG4gIC8vICAgICAgIEZyb206ICdKb2huIERvZScsXG4gIC8vICAgICAgIFRvOiAnSmFuZSBEb2UnLFxuICAvLyAgICAgfSxcbiAgLy8gICAgIEFjdGlvbnM6IFtdLFxuICAvLyAgIH0sXG4gIC8vICAge1xuICAvLyAgICAgRGF0ZTogJ05vdiA2JyxcbiAgLy8gICAgIE9wZXJhdGlvbjogT3BlcmF0aW9uVHlwZS5Db21tZW50LFxuICAvLyAgICAgRGV0YWlsczoge30sXG4gIC8vICAgICBBY3Rpb25zOiBbXG4gIC8vICAgICAgIHsgTGFiZWw6ICdWaWV3IENvbW1lbnRzJywgVHlwZTogJ2J1dHRvbicsIEFjdGlvbjogJ3ZpZXdDb21tZW50cycgfSxcbiAgLy8gICAgIF0sXG4gIC8vICAgfSxcbiAgLy8gXTtcblxuICBoaXN0b3J5OiBBY3Rpb25IaXN0b3J5W10gPSBbXTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlcnZpY2UuZ2V0VGFza0hpc3RvcnkodGhpcy50YXNrQ29kZSgpKS50aGVuKChyZXMpID0+IHtcbiAgICAgIHRoaXMuaGlzdG9yeSA9IHJlcztcbiAgICAgIGNvbnNvbGUubG9nKHRoaXMuaGlzdG9yeSk7XG4gICAgfSk7XG4gIH1cblxuICBnb0JhY2soKSB7XG4gICAgdGhpcy5fbG9jYXRpb24uYmFjaygpO1xuICB9XG5cbiAgc2V0QWN0aXZlKGk6IG51bWJlcikge1xuICAgIHRoaXMuYWN0aXZlID0gaTtcbiAgfVxuXG4gIGdldFRhZ3NGcm9tQWN0b3IoYWN0b3I6IEFjdG9yKSB7XG4gICAgcmV0dXJuIGFjdG9yLlRhZ3MubWFwKCh0YWcpID0+IHRhZy5OYW1lKS5qb2luKCcsICcpO1xuICB9XG5cbiAgYWRkQ29tbWVudCgpIHtcbiAgICB0aGlzLnNob3dDb21tZW50Qm94ID0gIXRoaXMuc2hvd0NvbW1lbnRCb3g7XG4gIH1cblxuICBhc3luYyBzYXZlQ29tbWVudCgpIHtcbiAgICBjb25zb2xlLmxvZyh0aGlzLm5ld0NvbW1lbnQpO1xuICAgIGlmICghdGhpcy5uZXdDb21tZW50LnRyaW0oKSAmJiB0aGlzLnNlbGVjdGVkRmlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHVwbG9hZGVkRmlsZXM6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRGaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLnV0aWxTZXJ2aWNlLnNlbmRCSSh0cnVlKTtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5zZXJ2aWNlLnVwbG9hZEZpbGVzKHRoaXMuc2VsZWN0ZWRGaWxlcyk7XG4gICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICB1cGxvYWRlZEZpbGVzID0gcmVzO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdGaWxlIHVwbG9hZCBmYWlsZWQnLCBlcnJvcik7XG4gICAgICAgIHRoaXMudXRpbFNlcnZpY2Uuc2VuZEJJKGZhbHNlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkoZmFsc2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGFjdGlvbkhpc3RvcnkgPSB7XG4gICAgICBUYXNrQ29kZTogdGhpcy50YXNrQ29kZSgpID8/ICcnLFxuICAgICAgRGVzY3JpcHRpb246IHRoaXMubmV3Q29tbWVudCxcbiAgICAgIEFjdGlvblR5cGU6IEFjdGlvblR5cGUuQ29tbWVudCxcbiAgICAgIERhdGFTdGF0ZTogT2JqZWN0U3RhdGUuTmV3LFxuICAgICAgRmlsZXM6IHVwbG9hZGVkRmlsZXMsXG4gICAgICAvLyBBY3Rvcjoge1xuICAgICAgLy8gICBJZDogdGhpcy5zZWxlY3RlZERldGFpbC5BY3RvcklkLFxuICAgICAgLy8gICBOYW1lOiB0aGlzLnNlbGVjdGVkRGV0YWlsLkFjdG9yTmFtZSxcbiAgICAgIC8vICAgVGFnczogdGhpcy5zZWxlY3RlZERldGFpbC5UYWdzLFxuICAgICAgLy8gfSxcbiAgICAgIFdvcmtmbG93OiAnJyxcbiAgICAgIEZyb21TdGFnZTogJycsXG4gICAgICBUb1N0YWdlOiAnJyxcbiAgICAgIENvZGU6ICcnLFxuICAgICAgVGVuYW50SWQ6ICcnLFxuICAgIH0gYXMgQWN0aW9uSGlzdG9yeTtcblxuICAgIHRoaXMuc2VydmljZS5zYXZlQWN0aW9uSGlzdG9yeShbYWN0aW9uSGlzdG9yeV0pLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5uZXdDb21tZW50ID0gJyc7XG4gICAgICB0aGlzLnNlbGVjdGVkRmlsZXMgPSBbXTtcbiAgICAgIHRoaXMuc2hvd0NvbW1lbnRCb3ggPSBmYWxzZTtcbiAgICAgIHRoaXMuc2VydmljZS5nZXRUYXNrSGlzdG9yeSh0aGlzLnRhc2tDb2RlKCkpLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICB0aGlzLmhpc3RvcnkgPSByZXM7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIG9uRmlsZVNlbGVjdChkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBmaWxlczogYW55ID0gZGF0YTtcblxuICAgIGlmICghZmlsZXMgfHwgZmlsZXMubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBmaWxlQXJyYXk6IEZpbGVEYXRhW10gPSBbXTtcbiAgICBjb25zdCByZWFkZXJzOiBQcm9taXNlPHZvaWQ+W10gPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGZpbGUgPSBmaWxlc1tpXTtcbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG5cbiAgICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgYmFzZTY0ID0gcmVhZGVyLnJlc3VsdCBhcyBzdHJpbmc7XG4gICAgICAgICAgZmlsZUFycmF5LnB1c2goe1xuICAgICAgICAgICAgRXh0ZW5zaW9uOiBmaWxlLm5hbWUuc3BsaXQoJy4nKS5wb3AoKSxcbiAgICAgICAgICAgIE5hbWU6IHRoaXMuZ2VuZXJhdGVSYW5kb21Db2RlKCksXG4gICAgICAgICAgICBEYXRhOiBiYXNlNjQsXG4gICAgICAgICAgICBEYXRhU3RhdGU6IE9iamVjdFN0YXRlLk5ldyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmVhZGVyLm9uZXJyb3IgPSAoZXJyb3IpID0+IHJlamVjdChlcnJvcik7XG4gICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAgICAgfSk7XG5cbiAgICAgIHJlYWRlcnMucHVzaChwcm9taXNlKTtcbiAgICB9XG5cbiAgICBQcm9taXNlLmFsbChyZWFkZXJzKS50aGVuKCgpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCdGaWxlcyByZWFkeSB0byB1cGxvYWQ6JywgZmlsZUFycmF5KTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlcyA9IGZpbGVBcnJheTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVSYW5kb21Db2RlKGxlbmd0aDogbnVtYmVyID0gMTApOiBzdHJpbmcge1xuICAgIGNvbnN0IGNoYXJzID1cbiAgICAgICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSc7XG4gICAgbGV0IHJlc3VsdCA9ICcnO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHJlc3VsdCArPSBjaGFycy5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY2hhcnMubGVuZ3RoKSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBnZXRGaWxlRXh0ZW5zaW9uKGZpbGVVcmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgcGFydHMgPSBmaWxlVXJsLnNwbGl0KCcuJyk7XG4gICAgcmV0dXJuIHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdLnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICBzZXRQcmV2aWV3KHZhbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXZhbCkgcmV0dXJuICcnO1xuICAgIGNvbnN0IGZpcnN0ID0gdmFsLnNwbGl0KCcsJylbMF0udHJpbSgpO1xuXG4gICAgaWYgKGZpcnN0LnN0YXJ0c1dpdGgoJ2h0dHAnKSB8fCBmaXJzdC5zdGFydHNXaXRoKCdkYXRhOicpKSB7XG4gICAgICByZXR1cm4gZmlyc3Q7XG4gICAgfVxuICAgIHJldHVybiBgJHt0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5GSUxFX1VSTH0vJHtmaXJzdH1gO1xuICB9XG5cbiAgc2hvd0Zyb21BbmRUbyhhY3Rpb25UeXBlOiBBY3Rpb25UeXBlKTogYm9vbGVhbiB7XG4gICAgc3dpdGNoIChhY3Rpb25UeXBlKSB7XG4gICAgICBjYXNlIEFjdGlvblR5cGUuUGFzc09uOlxuICAgICAgY2FzZSBBY3Rpb25UeXBlLlBhc3NCYWNrOlxuICAgICAgY2FzZSBBY3Rpb25UeXBlLlNraXBGb3J3YXJkOlxuICAgICAgY2FzZSBBY3Rpb25UeXBlLlNraXBCYWNrd2FyZDpcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBjYXNlIEFjdGlvblR5cGUuQ29tbWVudDpcbiAgICAgIGNhc2UgQWN0aW9uVHlwZS5Gb3JtRmlsbGluZzpcbiAgICAgIGNhc2UgQWN0aW9uVHlwZS5TdGF0dXNDaGFuZ2U6XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBnZXRGaWxlTmFtZShmaWxlVXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghZmlsZVVybCkgcmV0dXJuICcnO1xuICAgIHJldHVybiBmaWxlVXJsLnNwbGl0KCcvJykucG9wKCkgfHwgJyc7XG4gIH1cblxuICBvcGVuRmlsZShmaWxlVXJsOiBzdHJpbmcpIHtcbiAgICBpZiAoIWZpbGVVcmwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy51dGlsU2VydmljZS5vcGVuRnVsbFJvdXRlSW5OZXdXaW5kb3coXG4gICAgICBgJHt0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5GSUxFX0JBU0VfVVJMfSR7ZmlsZVVybH1gXG4gICAgKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImJnLVsjRjlGQUZCXVwiPlxuICA8aGVhZGVyIGNsYXNzPVwibXgtOCByb3VuZGVkLWxnIHNoYWRvdy1sZyBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgcHgtNiBweS0yIGJnLVsjRDRBMDA3NzNdXCI+XG4gICAgPGg0IGNsYXNzPVwiZm9udC1zZW1pYm9sZFwiPnt7IHRhc2tDb2RlKCkgfX08L2g0PlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC00IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgPHZlcmJlbmEtYnV0dG9uIChjbGljayk9XCJhZGRDb21tZW50KClcIiB0ZXh0PVwiKyBBZGQgQ29tbWVudFwiIHN0eWxlVHlwZT1cInlsdy1vdXRsaW5lXCJcbiAgICAgICAgY2xhc3M9XCJtbC1hdXRvXCI+PC92ZXJiZW5hLWJ1dHRvbj5cbiAgICAgIDx2ZXJiZW4tc3ZnIChjbGljayk9XCJnb0JhY2soKVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiBbd2lkdGhdPVwiMTdcIiBbaGVpZ2h0XT1cIjE3XCIgW2ljb25dPVwiJ2dvLWJhY2snXCI+PC92ZXJiZW4tc3ZnPlxuICAgIDwvZGl2PlxuICA8L2hlYWRlcj5cbiAgPHNlY3Rpb24gY2xhc3M9XCJncmlkIGdyaWQtY29scy0xMlwiPlxuICAgIDxkaXYgY2xhc3M9XCJiZy1bI2ZmZl0gY29sLXNwYW4tNyBwbC0xNiBwdC0yMCByZWxhdGl2ZVwiPlxuICAgICAgPGRpdiAqbmdJZj1cInNob3dDb21tZW50Qm94XCIgY2xhc3M9XCJtYi02IG1yLTEwXCI+XG4gICAgICAgIDxoNCBjbGFzcz1cImZvbnQtYm9sZCB0ZXh0LWxnIG1iLTJcIj5BZGQgQ29tbWVudDwvaDQ+XG4gICAgICAgIDwhLS0gPHZlcmJlbmEtdGV4dGFyZWEgWyhuZ01vZGVsKV09XCJuZXdDb21tZW50XCIgbGFiZWw9XCJDb21tZW50XCIgY2xhc3M9XCJ3LWZ1bGxcIj48L3ZlcmJlbmEtdGV4dGFyZWE+IC0tPlxuICAgICAgICA8dGV4dGFyZWEgWyhuZ01vZGVsKV09XCJuZXdDb21tZW50XCIgbGFiZWw9XCJDb21tZW50XCIgY2xhc3M9XCJ3LWZ1bGwgYm9yZGVyIHJvdW5kZWQtbWQgcC0yXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm10LTRcIj5cbiAgICAgICAgICA8ZmlsZS11cGxvYWQgKHNlbGVjdGVkRmlsZXNDaGFuZ2UpPVwib25GaWxlU2VsZWN0KCRldmVudClcIiBbbXVsdGlwbGVdPVwidHJ1ZVwiIGxhYmVsPVwiQXR0YWNoIEZpbGVzXCI+XG4gICAgICAgICAgPC9maWxlLXVwbG9hZD5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRGaWxlcy5sZW5ndGggPiAwXCIgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBnYXAtMyBtdC0zXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBmaWxlIG9mIHNlbGVjdGVkRmlsZXNcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiZmlsZS5FeHRlbnNpb25cIj5cbiAgICAgICAgICAgICAgICA8aW1nICpuZ1N3aXRjaENhc2U9XCInanBnJ1wiIFtzcmNdPVwiZmlsZS5EYXRhXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy1bMTAwcHhdIGgtWzEwMHB4XSBvYmplY3QtY292ZXIgcm91bmRlZC1tZCBib3JkZXJcIiAvPlxuICAgICAgICAgICAgICAgIDxpbWcgKm5nU3dpdGNoQ2FzZT1cIidwbmcnXCIgW3NyY109XCJmaWxlLkRhdGFcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LVsxMDBweF0gaC1bMTAwcHhdIG9iamVjdC1jb3ZlciByb3VuZGVkLW1kIGJvcmRlclwiIC8+XG4gICAgICAgICAgICAgICAgPHZpZGVvICpuZ1N3aXRjaENhc2U9XCInbXA0J1wiIFtzcmNdPVwiZmlsZS5EYXRhXCIgY2xhc3M9XCJ3LVsxNTBweF0gcm91bmRlZC1tZCBzaGFkb3dcIiBjb250cm9scz48L3ZpZGVvPlxuICAgICAgICAgICAgICAgIDxhdWRpbyAqbmdTd2l0Y2hDYXNlPVwiJ21wMydcIiBbc3JjXT1cImZpbGUuRGF0YVwiIGNvbnRyb2xzIGNsYXNzPVwidy1bMTUwcHhdXCI+PC9hdWRpbz5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktZW5kIGdhcC0yIG10LTJcIj5cbiAgICAgICAgICA8dmVyYmVuYS1idXR0b24gKGNsaWNrKT1cImFkZENvbW1lbnQoKVwiIHRleHQ9XCJDYW5jZWxcIiBzdHlsZVR5cGU9XCJ5bHctb3V0bGluZVwiPjwvdmVyYmVuYS1idXR0b24+XG4gICAgICAgICAgPHZlcmJlbmEtYnV0dG9uIChjbGljayk9XCJzYXZlQ29tbWVudCgpXCIgdGV4dD1cIlNhdmVcIiBiZ0NvbG9yPVwiI0ZGRTY4MVwiIHRleHRDb2xvcj1cIiM0MDQwNDBcIiBib3JkZXJSYWRpdXM9XCIxMHB4XCJcbiAgICAgICAgICAgIHBkPVwiMTBweCAyMHB4XCIgd2lkdGg9XCIxMTRweFwiIGhlaWdodD1cIjM5cHhcIj48L3ZlcmJlbmEtYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNwYW4gY2xhc3M9XCJhYnNvbHV0ZSBibG9jayBoLVs5MCVdIGgtbmluZXR5IGJvcmRlciBib3JkZXItc2Vjb25kYXJ5LTIwMCBsZWZ0LVsxNTBweF1cIj48L3NwYW4+XG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCB0aW1lbGluZSBvZiBoaXN0b3J5OyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggbWItN1wiPlxuICAgICAgICAgICAgPGg1IGNsYXNzPVwidy1bMTAwcHhdIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNldEFjdGl2ZShpKVwiPlxuICAgICAgICAgICAgICB7eyB0aW1lbGluZT8uQ3JlYXRlZEF0IHwgZGF0ZSB9fVxuICAgICAgICAgICAgPC9oNT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtbC0yNCBjdXJzb3ItcG9pbnRlciBtaW4tdy1bMjUwcHhdIHAtNiByb3VuZGVkLW1kIGJvcmRlci1sLTJcIiBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgJ2JnLVsjRkVGQUYxXSBib3JkZXItWyNGRkU2ODFdJzogYWN0aXZlID09PSBpLFxuICAgICAgICAgICAgICAgICdiZy10cmFuc3BhcmVudCBib3JkZXItdHJhbnNwYXJlbnQgaG92ZXI6YmctWyNGOUZBRkJdJzogYWN0aXZlICE9PSBpXG4gICAgICAgICAgICAgIH1cIiAoY2xpY2spPVwic2V0QWN0aXZlKGkpXCI+XG4gICAgICAgICAgICAgIDwhLS0gQWN0aW9uTmFtZSBhcyBwcmltYXJ5IGhlYWRpbmcsIGZhbGxiYWNrIHRvIEFjdGlvblR5cGUgLS0+XG4gICAgICAgICAgICAgIDxoNCBjbGFzcz1cImZvbnQtYm9sZCB0ZXh0LXhsIHRleHQtWyMxMDE4MjhdIG1iLTJcIj5cbiAgICAgICAgICAgICAgICB7eyB0aW1lbGluZS5BY3Rpb25OYW1lIHx8IHRpbWVsaW5lLkFjdGlvblR5cGUgfX1cbiAgICAgICAgICAgICAgPC9oND5cblxuICAgICAgICAgICAgICA8IS0tIEFjdG9yIGluZm9ybWF0aW9uIHdpdGggdG9vbHRpcCAtLT5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cbiAgICAgICAgICAgICAgICA8dmVyYmVuLXRvb2x0aXAgW3RvcF09XCInMHB4J1wiIFtsZWZ0XT1cIicwcHgnXCIgW3RleHRDb2xvcl09XCInIzAwMCdcIiBbYmFja2dyb3VuZENvbG9yXT1cIicjRkZGJ1wiXG4gICAgICAgICAgICAgICAgICBbdG9vbHRpcENvbnRlbnRdPVwiYWN0b3JUb29sdGlwVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1zbSB0ZXh0LVsjNjY3MDg1XSBjdXJzb3ItaGVscCBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHZlcmJlbi1zdmcgW3dpZHRoXT1cIjE0XCIgW2hlaWdodF09XCIxNFwiIFtpY29uXT1cIid1c2VyJ1wiIHN0cm9rZT1cIiM2NjcwODVcIj48L3ZlcmJlbi1zdmc+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1tZWRpdW0gdGV4dC1bIzM0NDA1NF1cIj57eyB0aW1lbGluZS5BY3Rvci5OYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgIDwvdmVyYmVuLXRvb2x0aXA+XG5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2FjdG9yVG9vbHRpcFRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJnLXdoaXRlIGJvcmRlciBib3JkZXItWyNFNEU3RUNdIHJvdW5kZWQtbGcgcC00IHNoYWRvdy1sZyB3LVsyODBweF1cIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTMgaXRlbXMtc3RhcnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctWzQwcHhdIGgtWzQwcHhdIHJvdW5kZWQtZnVsbCBiZy1ncmFkaWVudC10by1yIGZyb20tWyNEOUFFQUVdIHZpYS1bI0UzQzc5Rl0gdG8tWyNGRkU2ODFdIGZsZXgtc2hyaW5rLTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC0xIG1pbi13LTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZm9udC1ib2xkIHRleHQtc20gdGV4dC1bIzEwMTgyOF0gbWItMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0aW1lbGluZS5BY3Rvci5OYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQteHMgdGV4dC1bIzY2NzA4NV0gYnJlYWstd29yZHMgZmxleCBpdGVtcy1zdGFydCBnYXAtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dmVyYmVuLXN2ZyBbd2lkdGhdPVwiMTJcIiBbaGVpZ2h0XT1cIjEyXCIgW2ljb25dPVwiJ21haWwnXCIgc3Ryb2tlPVwiIzY2NzA4NVwiPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgdGltZWxpbmUuQWN0b3IuSWRlbnRpZmllciB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwICpuZ0lmPVwiZ2V0VGFnc0Zyb21BY3Rvcih0aW1lbGluZS5BY3RvcilcIiBjbGFzcz1cInRleHQteHMgdGV4dC1bIzY2NzA4NV0gbXQtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtbWVkaXVtXCI+VGFnczo8L3NwYW4+IHt7IGdldFRhZ3NGcm9tQWN0b3IodGltZWxpbmUuQWN0b3IpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPCEtLSBBY3Rpb24gVHlwZSAoaWYgZGlmZmVyZW50IGZyb20gQWN0aW9uTmFtZSkgLS0+XG4gICAgICAgICAgICAgIDxwICpuZ0lmPVwidGltZWxpbmUuQWN0aW9uTmFtZVwiIGNsYXNzPVwidGV4dC1zbSB0ZXh0LVsjNjY3MDg1XSBtYi0yXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LW1lZGl1bVwiPk9wZXJhdGlvbjo8L3NwYW4+IHt7IHRpbWVsaW5lLkFjdGlvblR5cGUgfX1cbiAgICAgICAgICAgICAgPC9wPlxuXG4gICAgICAgICAgICAgIDwhLS0gU3RhZ2UgaW5mb3JtYXRpb24gZm9yIHRyYW5zZmVyIGFjdGlvbnMgLS0+XG4gICAgICAgICAgICAgIEBpZiAoc2hvd0Zyb21BbmRUbyh0aW1lbGluZS5BY3Rpb25UeXBlKSkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmctWyNGOUZBRkJdIHJvdW5kZWQtbWQgcC0zIG10LTIgc3BhY2UteS0xLjVcIj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtc20gZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1bIzY2NzA4NV0gZm9udC1tZWRpdW1cIj5Gcm9tOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1bIzYxNzJGM10gZm9udC1tb25vIHRleHQteHNcIj57eyB0aW1lbGluZS5Gcm9tU3RhZ2UgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1zbSBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LVsjNjY3MDg1XSBmb250LW1lZGl1bVwiPlRvOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1bIzYxNzJGM10gZm9udC1tb25vIHRleHQteHNcIj57eyB0aW1lbGluZS5Ub1N0YWdlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICA8IS0tIFZpZXcgY29tbWVudHMgYnV0dG9uIC0tPlxuICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwidGltZWxpbmUuRGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBnYXAtMiBpdGVtcy1jZW50ZXIgdy1maXQgdGV4dC1bIzY2NzA4NV0gdGV4dC1zbSBib3JkZXIgcHgtMyBweS0yIHJvdW5kZWQtbGcgYmctWyNGQ0ZDRkRdIG10LTMgYm9yZGVyLVsjRTRFN0VDXSBob3ZlcjpiZy1bI0Y5RkFGQl0gaG92ZXI6Ym9yZGVyLVsjRDBENUREXSB0cmFuc2l0aW9uLWNvbG9yc1wiPlxuICAgICAgICAgICAgICAgIDx2ZXJiZW4tc3ZnIFt3aWR0aF09XCIxNVwiIFtoZWlnaHRdPVwiMTVcIiBbaWNvbl09XCInY2hhdCdcIj48L3ZlcmJlbi1zdmc+XG4gICAgICAgICAgICAgICAgVmlldyBjb21tZW50c1xuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc3Bhbi01XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaC1bNTBweF0gYmctWyNmZmZdXCI+PC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiYWN0aXZlID49IDBcIiBjbGFzcz1cInctWzQ4MHB4XSBwbC0xNiBwdC0xMFwiPlxuICAgICAgICA8aDEgY2xhc3M9XCJmb250LWJvbGQgdGV4dC1sZyBweS0yXCI+Q29tbWVudHM8L2gxPlxuICAgICAgICA8cCBjbGFzcz1cInRleHQteHMgdGV4dC1bIzY2NzA4NV0gdGV4dC1yaWdodCBweS0yXCI+XG4gICAgICAgICAge3sgaGlzdG9yeVthY3RpdmVdLkNyZWF0ZWRBdCB8IGRhdGUgfX1cbiAgICAgICAgPC9wPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmctWyNmZmZdIHRleHQtWyMxMDE4MjhdIGxlYWRpbmctcmVsYXhlZCBwLTggc2hhZG93LW1kIHJvdW5kZWQtbWRcIj5cbiAgICAgICAgICB7eyBoaXN0b3J5W2FjdGl2ZV0uRGVzY3JpcHRpb24gfX1cblxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJoaXN0b3J5W2FjdGl2ZV0/LkZpbGVzPy5sZW5ndGhcIiBjbGFzcz1cIm10LTQgYm9yZGVyLXQgcHQtNFwiPlxuICAgICAgICAgICAgPGg1IGNsYXNzPVwiZm9udC1ib2xkIHRleHQtc20gbWItMlwiPkF0dGFjaG1lbnRzPC9oNT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0yXCI+XG4gICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGZpbGUgb2YgaGlzdG9yeVthY3RpdmVdPy5GaWxlc1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmaWxlLWNvbnRhaW5lciBwLTIgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC0zIGJvcmRlciByb3VuZGVkLW1kIGJnLWdyYXktNTBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zbSBvdmVyZmxvdy14LWF1dG8gZm9udC1zZW1pYm9sZFwiPlxuICAgICAgICAgICAgICAgICAge3sgZ2V0RmlsZU5hbWUoZmlsZSkgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwib3BlbkZpbGUoZmlsZSlcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XG4gICAgICAgICAgICAgICAgICA8dmVyYmVuLXN2ZyBbaWNvbl09XCInZG93bmxvYWQtaWNvbidcIiBbd2lkdGhdPVwiMjBcIiBbaGVpZ2h0XT1cIjIwXCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9zZWN0aW9uPlxuPC9kaXY+XG4iXX0=
@@ -148,7 +148,7 @@ export class EscalationDialogComponent {
148
148
  ...(this.escalation() ?? {
149
149
  Id: '',
150
150
  Code: '',
151
- TenantId: 'PDLTC6',
151
+ TenantId: '',
152
152
  Workflow: this.workflowCode(),
153
153
  Stage: this.stageCode(),
154
154
  Type: this.type(),
@@ -235,4 +235,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
235
235
  }], created: [{
236
236
  type: Output
237
237
  }] } });
238
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNjYWxhdGlvbi1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLXdvcmtmbG93LXVpL3NyYy9saWIvY29tcG9uZW50cy93b3JrZmxvdy1kZXNpZ25lci9lc2NhbGF0aW9uLWRpYWxvZy9lc2NhbGF0aW9uLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9jb21wb25lbnRzL3dvcmtmbG93LWRlc2lnbmVyL2VzY2FsYXRpb24tZGlhbG9nL2VzY2FsYXRpb24tZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFlBQVksRUFDWixLQUFLLEVBQ0wsS0FBSyxFQUVMLE1BQU0sRUFDTixNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFnQixVQUFVLEVBQWUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RSxPQUFPLEVBQThCLFdBQVcsRUFBb0Msb0JBQW9CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7Ozs7QUFTcEosTUFBTSxPQUFPLHlCQUF5QjtJQXdEMUI7SUFDQTtJQUNBO0lBekRELE9BQU8sR0FBWSxLQUFLLENBQUM7SUFDbEMsWUFBWSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztJQUN4QyxTQUFTLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO0lBQ3JDLElBQUksR0FBRyxLQUFLLEVBQWtCLENBQUM7SUFFckIsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFDNUIsT0FBTyxHQUFHLElBQUksWUFBWSxFQUFNLENBQUM7SUFFM0MsVUFBVSxHQUFzQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFN0Qsa0JBQWtC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QXpCLHlCQUF5QiwrbkJDdEJ0Qyw2M0pBOEZBOzs0RkR4RWEseUJBQXlCO2tCQUxyQyxTQUFTOytCQUNFLHVCQUF1Qjs0SUFLeEIsT0FBTztzQkFBZixLQUFLO2dCQUtJLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBlZmZlY3QsXG4gIEV2ZW50RW1pdHRlcixcbiAgaW5wdXQsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgc2lnbmFsLFxuICBXcml0YWJsZVNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEVkaXRvckNvbmZpZywgRWRpdG9yTW9kZSwgRWRpdG9yU3RhdGUgfSBmcm9tICd2ZXJiZW4tcmVwb3J0aW5nLXVpJztcbmltcG9ydCB7IEVzY2FsYXRpb24sIEVzY2FsYXRpb25UeXBlLCBPYmplY3RTdGF0ZSwgUmVwb3J0U2NoZWR1bGUsIFRhc2tOb3RpZmljYXRpb24sIFRhc2tOb3RpZmljYXRpb25UeXBlIH0gZnJvbSAndmVyYmVuLXdvcmtmbG93LXVpL3NyYy9saWIvbW9kZWxzJztcbmltcG9ydCB7IFV0aWxTZXJ2aWNlIH0gZnJvbSAndmVyYmVuLXdvcmtmbG93LXVpL3NyYy9saWIvc2VydmljZXMnO1xuaW1wb3J0IHsgV29ya2Zsb3dEYXRhU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LWRhdGEuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1lc2NhbGF0aW9uLWRpYWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9lc2NhbGF0aW9uLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9lc2NhbGF0aW9uLWRpYWxvZy5jb21wb25lbnQuY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgRXNjYWxhdGlvbkRpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgd29ya2Zsb3dDb2RlID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICBzdGFnZUNvZGUgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG4gIHR5cGUgPSBpbnB1dDxFc2NhbGF0aW9uVHlwZT4oKTtcblxuICBAT3V0cHV0KCkgY2xvc2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgY3JlYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8e30+KCk7XG5cbiAgZXNjYWxhdGlvbjogV3JpdGFibGVTaWduYWw8RXNjYWxhdGlvbiB8IG51bGw+ID0gc2lnbmFsKG51bGwpO1xuXG4gIC8vIGVzY2FsYXRpb25Gb3JtO1xuICByZXBvcnRTY2hlZHVsZXM6IFdyaXRhYmxlU2lnbmFsPFJlcG9ydFNjaGVkdWxlW10+ID0gc2lnbmFsKFtdKTtcbiAgLy8gb3BlcmF0aW9uQWN0aW9uczogV3JpdGFibGVTaWduYWw8T3BlcmF0aW9uQWN0aW9uW10+ID0gc2lnbmFsKFtdKTtcblxuICAvLyBzZWxlY3RlZE9wZXJhdGlvbkFjdGlvbjogQmVoYXZpb3JTdWJqZWN0PE9wZXJhdGlvbkFjdGlvbltcIkNvZGVcIl0gfCBudWxsPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8T3BlcmF0aW9uQWN0aW9uW1wiQ29kZVwiXSB8IG51bGw+KG51bGwpO1xuXG4gIC8vIHNlbGVjdGVkTWVzc2FnZXM6IFdyaXRhYmxlU2lnbmFsPFxuICAvLyAgICgoUmVwb3J0U2NoZWR1bGUgJiB7IElzVGFza0RhdGFTb3VyY2U6IGJvb2xlYW4gfSkgfCBudWxsKVtdXG4gIC8vID4gPSBzaWduYWwoW10pO1xuXG4gIHNlbGVjdGVkTWVzc2FnZXM6ICgoUmVwb3J0U2NoZWR1bGUgJiB7IElzVGFza0RhdGFTb3VyY2U6IGJvb2xlYW47IElzTWVzc2FnZUlkOiBib29sZWFuOyB9KSB8IG51bGwpW10gPSBbXTtcblxuICBlZGl0b3JNb2RlOiBFZGl0b3JNb2RlID0gRWRpdG9yTW9kZS5EZXNpZ25lcjtcbiAgZWRpdG9yQ29uZmlnOiBFZGl0b3JDb25maWcgPSB7XG4gICAgZWRpdGFibGU6IHRydWUsXG4gICAgaGVpZ2h0OiAnJyxcbiAgICB3aWR0aDogJycsXG4gICAgc2hvd1Rvb2xiYXI6IHRydWUsXG4gICAgbWVudUl0ZW1zOiBbXG4gICAgICB7XG4gICAgICAgIExhYmVsOiAnVG9nZ2xlVmlldycsXG4gICAgICAgIEljb246ICdjb2RlLXRvZ2dsZScsXG4gICAgICAgIEljb25XaWR0aDogMjAsXG4gICAgICAgIEljb25IZWlnaHQ6IDIwLFxuICAgICAgICBJc1N0cm9rZTogZmFsc2UsXG4gICAgICAgIEdyb3VwQnk6ICdsb2NhbCcsXG4gICAgICAgIE9uQ2xpY2s6IChldmVudDogRWRpdG9yU3RhdGUgfCB1bmRlZmluZWQpID0+IHtcbiAgICAgICAgICB0aGlzLmVkaXRvck1vZGUgPVxuICAgICAgICAgICAgdGhpcy5lZGl0b3JNb2RlID09IEVkaXRvck1vZGUuRGVzaWduZXJcbiAgICAgICAgICAgICAgPyBFZGl0b3JNb2RlLkNvZGVcbiAgICAgICAgICAgICAgOiBFZGl0b3JNb2RlLkRlc2lnbmVyO1xuICAgICAgICB9LFxuICAgICAgICBJc0Rpc2FibGVkOiAoZXZlbnQ6IEVkaXRvclN0YXRlIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9LFxuICAgICAgICBJc0VuYWJsZWQ6IChldmVudDogRWRpdG9yU3RhdGUgfCB1bmRlZmluZWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5lZGl0b3JNb2RlID09IEVkaXRvck1vZGUuQ29kZTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgXSxcbiAgfTtcblxuICAvLyBJc1Rhc2tEYXRhU291cmNlOiBXcml0YWJsZVNpZ25hbDxib29sZWFuW10+ID0gc2lnbmFsKFtdKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGRhdGFTZXJ2aWNlOiBXb3JrZmxvd0RhdGFTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXRpbFNlcnZpY2U6IFV0aWxTZXJ2aWNlXG4gICkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBzdGFnZUNvZGUgPSB0aGlzLnN0YWdlQ29kZSgpO1xuICAgICAgY29uc3Qgd29ya2Zsb3dDb2RlID0gdGhpcy53b3JrZmxvd0NvZGUoKTtcbiAgICAgIGNvbnN0IHR5cGUgPSB0aGlzLnR5cGUoKTtcbiAgICAgIGNvbnNvbGUubG9nKCdTdGFnZSBjb2RlIGNoYW5nZWQ6Jywgc3RhZ2VDb2RlKTtcbiAgICAgIGlmICh3b3JrZmxvd0NvZGUgJiYgc3RhZ2VDb2RlICYmIHR5cGUpIHtcbiAgICAgICAgLy8gdGhpcy5sb2FkRXNjYWxhdGlvbihzdGFnZUNvZGUpO1xuICAgICAgICB0aGlzLnNlYXJjaEVzY2FsYXRpb24od29ya2Zsb3dDb2RlLCBzdGFnZUNvZGUsIHR5cGUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGVzY2FsYXRpb24gPSB0aGlzLmVzY2FsYXRpb24oKTtcbiAgICAgIGNvbnN0IHJlcG9ydFNjaGVkdWxlcyA9IHRoaXMucmVwb3J0U2NoZWR1bGVzKCk7XG5cbiAgICAgIGlmIChlc2NhbGF0aW9uICYmIHJlcG9ydFNjaGVkdWxlcykge1xuICAgICAgICB0aGlzLnNlbGVjdGVkTWVzc2FnZXMgPSBlc2NhbGF0aW9uLkZ1bGxNZXNzYWdlcy5tYXAoKHsgTWVzc2FnZSwgSXNUYXNrRGF0YVNvdXJjZSwgSXNNZXNzYWdlSWQgfSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGZvdW5kID0gcmVwb3J0U2NoZWR1bGVzLmZpbmQoKHJzKSA9PiBycy5Db2RlID09PSBNZXNzYWdlKTtcbiAgICAgICAgICByZXR1cm4gZm91bmQgPyB7IC4uLmZvdW5kLCBJc1Rhc2tEYXRhU291cmNlLCBJc01lc3NhZ2VJZCB9IDogbnVsbDtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIHRoaXMuc2VsZWN0ZWRPcGVyYXRpb25BY3Rpb24ubmV4dChlc2NhbGF0aW9uLk9wZXJhdGlvbkFjdGlvbiA/PyBudWxsKTtcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJTRVRUSU5HIE9QXCIsIHRoaXMuc2VsZWN0ZWRPcGVyYXRpb25BY3Rpb24pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gdGhpcy5lc2NhbGF0aW9uRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgIC8vICAgTWVzc2FnZXM6IHRoaXMuZmIuYXJyYXkoW10pLFxuICAgIC8vIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkUmVwb3J0U2NoZWR1bGVzKCk7XG4gICAgLy8gdGhpcy5sb2FkT3BlcmF0aW9uQWN0aW9ucygpO1xuXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRNZXNzYWdlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuYWRkTWVzc2FnZSgpO1xuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKFxuICAgICAgJ0VzY2FsYXRpb25EaWFsb2dDb21wb25lbnQgaW5pdGlhbGl6ZWQgd2l0aCBzdGFnZUNvZGU6JyxcbiAgICAgIHRoaXMuc3RhZ2VDb2RlXG4gICAgKTtcbiAgICAvLyBjb25zb2xlLmxvZygnRXNjYWxhdGlvbkRpYWxvZ0NvbXBvbmVudCB0eXBlOicsIHRoaXMudHlwZSk7XG4gIH1cblxuICAvLyBnZXQgbWVzc2FnZXMoKSB7XG4gIC8vICAgcmV0dXJuIHRoaXMuZXNjYWxhdGlvbkZvcm0uY29udHJvbHNbJ01lc3NhZ2VzJ10gYXMgRm9ybUFycmF5O1xuICAvLyB9XG5cbiAgYWRkTWVzc2FnZSgpIHtcbiAgICB0aGlzLnNlbGVjdGVkTWVzc2FnZXMgPSB0aGlzLnNlbGVjdGVkTWVzc2FnZXMuY29uY2F0KFtudWxsXSk7XG4gIH1cblxuICBkZWxldGVNZXNzYWdlKGxlc3NvbkluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnNlbGVjdGVkTWVzc2FnZXMgPSB0aGlzLnNlbGVjdGVkTWVzc2FnZXMuc3BsaWNlKGxlc3NvbkluZGV4LCAxKTtcbiAgfVxuXG4gIG9uTWVzc2FnZVNlbGVjdGVkKHJlcG9ydFNjaGVkdWxlOiBSZXBvcnRTY2hlZHVsZSwgaW5kZXg6IG51bWJlcikge1xuICAgIGNvbnNvbGUubG9nKCdTZWxlY3RlZCBtZXNzYWdlOicsIHJlcG9ydFNjaGVkdWxlLCAnYXQgaW5kZXg6JywgaW5kZXgpO1xuICAgIHRoaXMuc2VsZWN0ZWRNZXNzYWdlcyA9IHRoaXMuc2VsZWN0ZWRNZXNzYWdlcy5tYXAoKG1zZywgaSkgPT4ge1xuICAgICAgaWYgKGkgPT09IGluZGV4KSB7XG4gICAgICAgIHJldHVybiB7IC4uLnJlcG9ydFNjaGVkdWxlLCBJc1Rhc2tEYXRhU291cmNlOiBmYWxzZSwgSXNNZXNzYWdlSWQ6IHRydWUgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBtc2c7XG4gICAgfSk7XG4gIH1cblxuICBpc1ZhbGlkU2VsZWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkTWVzc2FnZXMuZXZlcnkoKG1zZykgPT4gISFtc2cpO1xuICB9XG5cbiAgYXN5bmMgc2F2ZU1lc3NhZ2VzKCkge1xuICAgIGNvbnNvbGUubG9nKHRoaXMuc2VsZWN0ZWRNZXNzYWdlcyk7XG4gICAgY29uc3QgdGFza05vdGlmaWNhdGlvbnM6IFRhc2tOb3RpZmljYXRpb25bXSA9IHRoaXMuc2VsZWN0ZWRNZXNzYWdlc1xuICAgICAgLmZpbHRlcigobXNnKSA9PiAhIW1zZylcbiAgICAgIC5tYXAoKG1zZykgPT4gKHtcbiAgICAgICAgSWQ6ICcnLFxuICAgICAgICBDb2RlOiAnJyxcbiAgICAgICAgVGVuYW50SWQ6ICcnLFxuICAgICAgICBNZXNzYWdlOiBtc2cuQ29kZSxcbiAgICAgICAgTmFtZTogbXNnLk5hbWUsXG4gICAgICAgIFN1YmplY3Q6IG1zZy5TdWJqZWN0LFxuICAgICAgICBTZW5kZXJDb25maWc6IG1zZy5NZXNzYWdlQ29uZmlnLFxuICAgICAgICBNZWRpdW06IG1zZy5NZWRpdW0sXG4gICAgICAgIE5vdGlmaWNhdGlvblR5cGU6IFRhc2tOb3RpZmljYXRpb25UeXBlLkVzY2FsYXRpb24sXG4gICAgICAgIElzTWVzc2FnZUlkOiBtc2cuSXNNZXNzYWdlSWQsXG4gICAgICAgIElzVGFza0RhdGFTb3VyY2U6IG1zZy5Jc1Rhc2tEYXRhU291cmNlLFxuICAgICAgICBNZXNzYWdlRGF0YVNvdXJjZTogIW1zZy5Jc1Rhc2tEYXRhU291cmNlID8gbXNnLlJlcG9ydERhdGFTb3VyY2UgOiAnJyxcbiAgICAgICAgRGF0YVN0YXRlOiBPYmplY3RTdGF0ZS5OZXcsXG4gICAgICAgIGlkOiAnJyxcbiAgICAgICAgU2VydmljZU5hbWU6ICcnLFxuICAgICAgICBDcmVhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgIFVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgIH0pKTtcblxuICAgIC8vIGlmICh0YXNrTm90aWZpY2F0aW9ucy5sZW5ndGgpIHtcbiAgICAvLyB0aGlzLmNyZWF0ZWQuZW1pdCh0YXNrTm90aWZpY2F0aW9ucyk7XG4gICAgY29uc29sZS5sb2codGFza05vdGlmaWNhdGlvbnMpO1xuICAgIHRoaXMub25EaWFsb2dDbG9zZShudWxsKTtcbiAgICBjb25zdCBkYXRhOiBQYXJ0aWFsPEVzY2FsYXRpb24+ID0ge1xuICAgICAgLi4uKHRoaXMuZXNjYWxhdGlvbigpID8/IHtcbiAgICAgICAgSWQ6ICcnLFxuICAgICAgICBDb2RlOiAnJyxcbiAgICAgICAgVGVuYW50SWQ6ICdQRExUQzYnLFxuICAgICAgICBXb3JrZmxvdzogdGhpcy53b3JrZmxvd0NvZGUoKSxcbiAgICAgICAgU3RhZ2U6IHRoaXMuc3RhZ2VDb2RlKCksXG4gICAgICAgIFR5cGU6IHRoaXMudHlwZSgpLFxuICAgICAgICBFeHBpcmF0aW9uV2FybmluZzogMCxcbiAgICAgICAgRHVyYXRpb246IDAsXG4gICAgICAgIE5vdGlmeUFmdGVyOiAwLFxuICAgICAgICBQb3NpdGlvbjogMSxcbiAgICAgICAgRGF0YVN0YXRlOiBPYmplY3RTdGF0ZS5OZXcsXG4gICAgICB9KSxcbiAgICAgIC8vIE9wZXJhdGlvbkFjdGlvbjogdGhpcy5zZWxlY3RlZE9wZXJhdGlvbkFjdGlvbi5nZXRWYWx1ZSgpLFxuICAgICAgTWVzc2FnZXM6IHRhc2tOb3RpZmljYXRpb25zLm1hcCgoeyBDb2RlIH0pID0+IENvZGUpLFxuICAgICAgRnVsbE1lc3NhZ2VzOiB0YXNrTm90aWZpY2F0aW9ucyxcbiAgICB9O1xuICAgIGNvbnNvbGUubG9nKFwiU2F2aW5nIGVzY2FsYXRpb24gZGF0YTpcIiwgZGF0YSk7XG4gICAgdGhpcy5kYXRhU2VydmljZS5zYXZlRXNjYWxhdGlvbnMoW2RhdGFdKS50aGVuKChkYXRhKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhcIkVzY2FsYXRpb24gc2F2ZWQ6XCIsIGRhdGEpO1xuICAgICAgdGhpcy5lc2NhbGF0aW9uLnNldChkYXRhPy5bMF0gPz8gbnVsbCk7XG4gICAgICB0aGlzLnV0aWxTZXJ2aWNlLnNob3dTdWNjZXNzKCdFc2NhbGF0aW9uIHNhdmVkIHN1Y2Nlc3NmdWxseScpO1xuICAgICAgdGhpcy5vbkRpYWxvZ0Nsb3NlKG51bGwpO1xuICAgIH0pO1xuICAgIC8vIH1cbiAgfVxuXG4gIGRlbGV0ZUVzY2FsYXRpb24oKSB7XG4gICAgY29uc3QgZXNjYWxhdGlvbiA9IHRoaXMuZXNjYWxhdGlvbigpO1xuICAgIGlmIChlc2NhbGF0aW9uKSB7XG4gICAgICB0aGlzLmRhdGFTZXJ2aWNlLmRlbGV0ZUVzY2FsYXRpb25zKFtlc2NhbGF0aW9uLkNvZGVdKS50aGVuKChkYXRhKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiRXNjYWxhdGlvbiBkZWxldGVkOlwiLCBkYXRhKTtcbiAgICAgICAgdGhpcy5lc2NhbGF0aW9uLnNldChudWxsKTtcbiAgICAgICAgdGhpcy5vbkRpYWxvZ0Nsb3NlKG51bGwpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsb2FkRXNjYWxhdGlvbihzdGFnZUNvZGU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZGF0YVNlcnZpY2UuZ2V0RXNjYWxhdGlvbldpdGhQYXJhbShzdGFnZUNvZGUpLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgIHRoaXMuZXNjYWxhdGlvbi5zZXQoZGF0YS5SZXN1bHRbMF0gPz8gbnVsbCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNlYXJjaEVzY2FsYXRpb24oXG4gICAgV29ya2Zsb3c6IHN0cmluZyxcbiAgICBTdGFnZTogc3RyaW5nLFxuICAgIFR5cGU6IEVzY2FsYXRpb25UeXBlXG4gICk6IHZvaWQge1xuICAgIHRoaXMuZGF0YVNlcnZpY2VcbiAgICAgIC5zZWFyY2hFc2NhbGF0aW9uV2l0aFBhcmFtKHtcbiAgICAgICAgV29ya2Zsb3csXG4gICAgICAgIFN0YWdlLFxuICAgICAgICBUeXBlLFxuICAgICAgfSlcbiAgICAgIC50aGVuKChkYXRhKSA9PiB7XG4gICAgICAgIHRoaXMuZXNjYWxhdGlvbi5zZXQoZGF0YS5SZXN1bHRbMF0gPz8gbnVsbCk7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiRXNjYWxhdGlvbiBsb2FkZWQ6XCIsIHRoaXMuZXNjYWxhdGlvbigpKTtcbiAgICAgICAgLy8gdGhpcy5zZWxlY3RlZE9wZXJhdGlvbkFjdGlvbi5uZXh0KGRhdGEuUmVzdWx0WzBdPy5PcGVyYXRpb25BY3Rpb24gPz8gbnVsbCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZFJlcG9ydFNjaGVkdWxlcygpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLmdldFJlcG9ydFNjaGVkdWxlcygpLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgIHRoaXMucmVwb3J0U2NoZWR1bGVzLnNldChkYXRhLlJlc3VsdCk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBwcml2YXRlIGxvYWRPcGVyYXRpb25BY3Rpb25zKCk6IHZvaWQge1xuICAvLyAgIHRoaXMuZGF0YVNlcnZpY2UuZ2V0T3BlcmF0aW9uQWN0aW9ucygpLnRoZW4oKGRhdGEpID0+IHtcbiAgLy8gICAgIHRoaXMub3BlcmF0aW9uQWN0aW9ucy5zZXQoZGF0YS5SZXN1bHQpO1xuICAvLyAgIH0pO1xuICAvLyB9XG5cbiAgb25EaWFsb2dDbG9zZShldmVudERhdGE6IGFueSkge1xuICAgIGNvbnNvbGUubG9nKCdEaWFsb2cgY2xvc2VkLCByZWNlaXZlZCBkYXRhOicsIGV2ZW50RGF0YSk7XG4gICAgdGhpcy5lc2NhbGF0aW9uLnNldChudWxsKTtcbiAgICB0aGlzLnNlbGVjdGVkTWVzc2FnZXMgPSBbXTtcbiAgICB0aGlzLmNsb3NlZC5lbWl0KCk7XG4gIH1cblxuICBvbkRpYWxvZ09wZW4oZXZlbnREYXRhOiBhbnkpIHtcbiAgICBjb25zb2xlLmxvZygnRGlhbG9nIG9wZW5lZCwgcmVjZWl2ZWQgZGF0YTonLCBldmVudERhdGEpO1xuICB9XG5cbiAgaXNOb3ROZXcoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZXNjYWxhdGlvbiA9IHRoaXMuZXNjYWxhdGlvbigpO1xuICAgIHJldHVybiBlc2NhbGF0aW9uICE9PSBudWxsICYmIGVzY2FsYXRpb24uRGF0YVN0YXRlICE9PSAnTmV3JztcbiAgfVxufVxuIiwiPHZlcmJlbi1kaWFsb2d1ZSBbc2hvd0Nsb3NlSWNvbl09XCJ0cnVlXCIgW2Rpc21pc3NPdXRzaWRlQ2xpY2tdPVwidHJ1ZVwiIFtjbG9zZU9uRXNjYXBlXT1cInRydWVcIiBbc2l6ZV09XCInbWVkaXVtJ1wiXG4gIFttb2RlXT1cIidkcmF3ZXInXCIgW2Rpc2FibGVGb290ZXJdPVwiZmFsc2VcIiBbaXNWaXNpYmxlXT1cInZpc2libGVcIiBbaGVhZGVyVGVtcGxhdGVdPVwiaGVhZGVyVGVtcGxhdGVcIlxuICBbYm9keVRlbXBsYXRlXT1cImJvZHlUZW1wbGF0ZVwiIFtmb290ZXJUZW1wbGF0ZV09XCJmb290ZXJUZW1wbGF0ZVwiIChvcGVuTW9kYWwpPVwib25EaWFsb2dPcGVuKCRldmVudClcIlxuICAoY2xvc2VNb2RhbCk9XCJvbkRpYWxvZ0Nsb3NlKCRldmVudClcIj5cbjwvdmVyYmVuLWRpYWxvZ3VlPlxuXG48bmctdGVtcGxhdGUgI2hlYWRlclRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHAtMyB0ZXh0LXhzIGJvcmRlci1iLTQgYm9yZGVyLVsjRkZFNjgxXVwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJtci00XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvbkRpYWxvZ0Nsb3NlKCRldmVudClcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiYmxvY2sgdy0yLjUgaC0yLjUgYm9yZGVyLXQgYm9yZGVyLWwgYm9yZGVyLVsjM0UzRTNFXS83MCB0cmFuc2Zvcm0gLXJvdGF0ZS00NVwiPjwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2JvZHlUZW1wbGF0ZT5cbiAgPGRpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWItNCBzcGFjZS15LTRcIj5cbiAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInNwYWNlLXktMVwiPlxuICAgICAgICA8bGFiZWwgZm9yPVwib3BlcmF0aW9uLWFjdGlvblwiIGNsYXNzPVwidGV4dC1zbSBmb250LXNlbWlib2xkIHRleHQtWyMzRTNFM0VdXCI+XG4gICAgICAgICAgRXNjYWxhdGlvblxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8dmVyYmVuLWRyb3AtZG93blxuICAgICAgICAgICAgaWQ9XCJvcGVyYXRpb24tYWN0aW9uXCJcbiAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJ3LWZ1bGxcIlxuICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgIFttdWx0aXNlbGVjdF09XCJmYWxzZVwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBPcGVyYXRpb24gQWN0aW9uXCJcbiAgICAgICAgICAgIFtvcHRpb25zXT1cIm9wZXJhdGlvbkFjdGlvbnMoKVwiXG4gICAgICAgICAgICBvcHRpb25MYWJlbD1cIk5hbWVcIlxuICAgICAgICAgICAgb3B0aW9uVmFsdWU9XCJDb2RlXCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cInNlbGVjdGVkT3BlcmF0aW9uQWN0aW9uIHwgYXN5bmNcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VsZWN0ZWRPcGVyYXRpb25BY3Rpb24ubmV4dCgkZXZlbnQpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICA+PC92ZXJiZW4tZHJvcC1kb3duPlxuICAgICAgPC9kaXY+IC0tPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwic3BhY2UteS00XCIgKm5nRm9yPVwibGV0IG1lc3NhZ2Ugb2Ygc2VsZWN0ZWRNZXNzYWdlczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3BhY2UteS0xXCI+XG4gICAgICAgICAgPGxhYmVsIFtmb3JdPVwibWVzc2FnZSArICctJyArIGlcIiBjbGFzcz1cInRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LVsjM0UzRTNFXVwiPlxuICAgICAgICAgICAgTWVzc2FnZSB7eyBpICsgMSB9fVxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPHZlcmJlbi1kcm9wLWRvd24gW2lkXT1cIm1lc3NhZ2UgKyAnLScgKyBpXCIgc2VsZWN0S2V5PVwiQ29kZVwiIHN0eWxlQ2xhc3M9XCJ3LWZ1bGxcIiB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgW211bHRpc2VsZWN0XT1cImZhbHNlXCIgcGxhY2Vob2xkZXI9XCJTZWxlY3QgTWVzc2FnZVwiIFtvcHRpb25zXT1cInJlcG9ydFNjaGVkdWxlcygpXCIgb3B0aW9uTGFiZWw9XCJOYW1lXCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cIm1lc3NhZ2VcIiAobmdNb2RlbENoYW5nZSk9XCJvbk1lc3NhZ2VTZWxlY3RlZCgkZXZlbnQsIGkpXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIj48L3ZlcmJlbi1kcm9wLWRvd24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIEBpZiAobWVzc2FnZSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTRcIj5cbiAgICAgICAgICA8bGFiZWwgW2Zvcl09XCInaXMtJyArIG1lc3NhZ2UgKyAnLScgKyBpICsgJ3Rhc2stZGF0YS1zb3VyY2UnXCIgY2xhc3M9XCJ0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC1bIzNFM0UzRV1cIj5cbiAgICAgICAgICAgIElzIFRhc2sgRGF0YSBTb3VyY2U/XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8dmVyYmVuYS1zd2l0Y2ggW2lkXT1cIidpcy0nICsgbWVzc2FnZSArICctJyArIGkgKyAndGFzay1kYXRhLXNvdXJjZSdcIiBvblRleHQ9XCJZZXNcIiBvZmZUZXh0PVwiTm9cIlxuICAgICAgICAgICAgW29uQ29sb3JdPVwiJyMxQTIzN0UnXCIgWyhuZ01vZGVsKV09XCJtZXNzYWdlLklzVGFza0RhdGFTb3VyY2VcIj48L3ZlcmJlbmEtc3dpdGNoPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTRcIj5cbiAgICAgICAgICA8bGFiZWwgW2Zvcl09XCInaXMtJyArIG1lc3NhZ2UgKyAnLScgKyBpICsgJ2lzLW1lc3NhZ2UtaWQnXCIgY2xhc3M9XCJ0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC1bIzNFM0UzRV1cIj5cbiAgICAgICAgICAgIElzIE1lc3NhZ2UgSUQ/XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8dmVyYmVuYS1zd2l0Y2ggW2lkXT1cIidpcy0nICsgbWVzc2FnZSArICctJyArIGkgKyAnaXMtbWVzc2FnZS1pZCdcIiBvblRleHQ9XCJZZXNcIiBvZmZUZXh0PVwiTm9cIlxuICAgICAgICAgICAgW29uQ29sb3JdPVwiJyMxQTIzN0UnXCIgWyhuZ01vZGVsKV09XCJtZXNzYWdlLklzTWVzc2FnZUlkXCI+PC92ZXJiZW5hLXN3aXRjaD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyIGJvcmRlci1wcmltYXJ5IC1tLTIgcm91bmRlZC1sZyBmbGV4IGZsZXgtY29sIGdhcC0zXCIgKm5nSWY9XCJtZXNzYWdlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNwYWNlLXktMyBib3JkZXItYiBib3JkZXItcHJpbWFyeSBweC0yIHB5LTNcIj5cbiAgICAgICAgICAgIDx2ZXJiZW5hLWlucHV0IG5hbWU9XCJTdWJqZWN0XCIgWyhuZ01vZGVsKV09XCJtZXNzYWdlLlN1YmplY3RcIiBbcmVhZE9ubHldPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICA8dmVyYmVuYS1pbnB1dCBuYW1lPVwiUmVjaXBpZW50c1wiIFsobmdNb2RlbCldPVwibWVzc2FnZS5SZWNpcGllbnRzXCIgW3JlYWRPbmx5XT1cInRydWVcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxsaWItZWRpdG9yIFtlZGl0b3JDb25maWddPVwiZWRpdG9yQ29uZmlnXCIgW2VkaXRvck1vZGVdPVwiZWRpdG9yTW9kZVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm1lc3NhZ2UuUGxhaW5NZXNzYWdlXCI+PC9saWItZWRpdG9yPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZm9vdGVyVGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgZ2FwLTggdy1mdWxsXCI+XG4gICAgPHZlcmJlbmEtYnV0dG9uIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCIgdHlwZT1cImJ1dHRvblwiIHRleHQ9XCJBZGQgTWVzc2FnZVwiIGJnQ29sb3I9XCIjRkZFNjgxXCIgdGV4dENvbG9yPVwiIzQwNDA0MFwiXG4gICAgICBib3JkZXJSYWRpdXM9XCI4cHhcIiBwZD1cIjEwcHggMjBweFwiIGhlaWdodD1cIjM5cHhcIiBmb250V2VpZ2h0PVwiNjAwXCIgZm9udFNpemU9XCIxMnB4XCIgc3ZnPVwiYWRkXCIgW3N2Z0hlaWdodF09XCIxNFwiXG4gICAgICBbc3ZnV2lkdGhdPVwiMTRcIiBbc3ZnU2l6ZV09XCInc20nXCIgKGNsaWNrKT1cImFkZE1lc3NhZ2UoKVwiPjwvdmVyYmVuYS1idXR0b24+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMiBpdGVtcy1jZW50ZXJcIj5cbiAgICAgIDx2ZXJiZW5hLWJ1dHRvbiBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiIHR5cGU9XCJidXR0b25cIiB0ZXh0PVwiRGVsZXRlXCIgYmdDb2xvcj1cIiNGRkU2ODFcIiB0ZXh0Q29sb3I9XCIjNDA0MDQwXCJcbiAgICAgICAgYm9yZGVyUmFkaXVzPVwiOHB4XCIgcGQ9XCIxMHB4IDIwcHhcIiB3aWR0aD1cIjExMHB4XCIgaGVpZ2h0PVwiMzlweFwiIGZvbnRXZWlnaHQ9XCI2MDBcIiBmb250U2l6ZT1cIjEycHhcIiBzdmc9XCJkZWxldGVcIlxuICAgICAgICBbc3ZnSGVpZ2h0XT1cIjE0XCIgW3N2Z1dpZHRoXT1cIjE0XCIgW3N2Z1NpemVdPVwiJ3NtJ1wiIChjbGljayk9XCJkZWxldGVFc2NhbGF0aW9uKClcIj48L3ZlcmJlbmEtYnV0dG9uPlxuXG4gICAgICA8dmVyYmVuYS1idXR0b24gc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgdGV4dD1cIlNhdmVcIiBiZ0NvbG9yPVwiI0ZGRTY4MVwiIHRleHRDb2xvcj1cIiM0MDQwNDBcIlxuICAgICAgICBib3JkZXJSYWRpdXM9XCI4cHhcIiBwZD1cIjEwcHggMjBweFwiIHdpZHRoPVwiMTYwcHhcIiBoZWlnaHQ9XCIzOXB4XCIgZm9udFdlaWdodD1cIjYwMFwiIGZvbnRTaXplPVwiMTJweFwiIHN2Zz1cInNlbmRcIlxuICAgICAgICBbc3ZnSGVpZ2h0XT1cIjE0XCIgW3N2Z1dpZHRoXT1cIjE0XCIgW3N2Z1NpemVdPVwiJ3NtJ1wiIChjbGljayk9XCJzYXZlTWVzc2FnZXMoKVwiPjwvdmVyYmVuYS1idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
238
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNjYWxhdGlvbi1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLXdvcmtmbG93LXVpL3NyYy9saWIvY29tcG9uZW50cy93b3JrZmxvdy1kZXNpZ25lci9lc2NhbGF0aW9uLWRpYWxvZy9lc2NhbGF0aW9uLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9jb21wb25lbnRzL3dvcmtmbG93LWRlc2lnbmVyL2VzY2FsYXRpb24tZGlhbG9nL2VzY2FsYXRpb24tZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFlBQVksRUFDWixLQUFLLEVBQ0wsS0FBSyxFQUVMLE1BQU0sRUFDTixNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFnQixVQUFVLEVBQWUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RSxPQUFPLEVBQThCLFdBQVcsRUFBb0Msb0JBQW9CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7Ozs7QUFTcEosTUFBTSxPQUFPLHlCQUF5QjtJQXdEMUI7SUFDQTtJQUNBO0lBekRELE9BQU8sR0FBWSxLQUFLLENBQUM7SUFDbEMsWUFBWSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztJQUN4QyxTQUFTLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO0lBQ3JDLElBQUksR0FBRyxLQUFLLEVBQWtCLENBQUM7SUFFckIsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFDNUIsT0FBTyxHQUFHLElBQUksWUFBWSxFQUFNLENBQUM7SUFFM0MsVUFBVSxHQUFzQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFN0Qsa0JBQWtC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ekIseUJBQXlCLCtuQkN0QnRDLDYzSkE4RkE7OzRGRHhFYSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0UsdUJBQXVCOzRJQUt4QixPQUFPO3NCQUFmLEtBQUs7Z0JBS0ksTUFBTTtzQkFBZixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIGVmZmVjdCxcbiAgRXZlbnRFbWl0dGVyLFxuICBpbnB1dCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBzaWduYWwsXG4gIFdyaXRhYmxlU2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRWRpdG9yQ29uZmlnLCBFZGl0b3JNb2RlLCBFZGl0b3JTdGF0ZSB9IGZyb20gJ3ZlcmJlbi1yZXBvcnRpbmctdWknO1xuaW1wb3J0IHsgRXNjYWxhdGlvbiwgRXNjYWxhdGlvblR5cGUsIE9iamVjdFN0YXRlLCBSZXBvcnRTY2hlZHVsZSwgVGFza05vdGlmaWNhdGlvbiwgVGFza05vdGlmaWNhdGlvblR5cGUgfSBmcm9tICd2ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9tb2RlbHMnO1xuaW1wb3J0IHsgVXRpbFNlcnZpY2UgfSBmcm9tICd2ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBXb3JrZmxvd0RhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctZGF0YS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWVzY2FsYXRpb24tZGlhbG9nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VzY2FsYXRpb24tZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2VzY2FsYXRpb24tZGlhbG9nLmNvbXBvbmVudC5jc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBFc2NhbGF0aW9uRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgdmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICB3b3JrZmxvd0NvZGUgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG4gIHN0YWdlQ29kZSA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcbiAgdHlwZSA9IGlucHV0PEVzY2FsYXRpb25UeXBlPigpO1xuXG4gIEBPdXRwdXQoKSBjbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBjcmVhdGVkID0gbmV3IEV2ZW50RW1pdHRlcjx7fT4oKTtcblxuICBlc2NhbGF0aW9uOiBXcml0YWJsZVNpZ25hbDxFc2NhbGF0aW9uIHwgbnVsbD4gPSBzaWduYWwobnVsbCk7XG5cbiAgLy8gZXNjYWxhdGlvbkZvcm07XG4gIHJlcG9ydFNjaGVkdWxlczogV3JpdGFibGVTaWduYWw8UmVwb3J0U2NoZWR1bGVbXT4gPSBzaWduYWwoW10pO1xuICAvLyBvcGVyYXRpb25BY3Rpb25zOiBXcml0YWJsZVNpZ25hbDxPcGVyYXRpb25BY3Rpb25bXT4gPSBzaWduYWwoW10pO1xuXG4gIC8vIHNlbGVjdGVkT3BlcmF0aW9uQWN0aW9uOiBCZWhhdmlvclN1YmplY3Q8T3BlcmF0aW9uQWN0aW9uW1wiQ29kZVwiXSB8IG51bGw+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxPcGVyYXRpb25BY3Rpb25bXCJDb2RlXCJdIHwgbnVsbD4obnVsbCk7XG5cbiAgLy8gc2VsZWN0ZWRNZXNzYWdlczogV3JpdGFibGVTaWduYWw8XG4gIC8vICAgKChSZXBvcnRTY2hlZHVsZSAmIHsgSXNUYXNrRGF0YVNvdXJjZTogYm9vbGVhbiB9KSB8IG51bGwpW11cbiAgLy8gPiA9IHNpZ25hbChbXSk7XG5cbiAgc2VsZWN0ZWRNZXNzYWdlczogKChSZXBvcnRTY2hlZHVsZSAmIHsgSXNUYXNrRGF0YVNvdXJjZTogYm9vbGVhbjsgSXNNZXNzYWdlSWQ6IGJvb2xlYW47IH0pIHwgbnVsbClbXSA9IFtdO1xuXG4gIGVkaXRvck1vZGU6IEVkaXRvck1vZGUgPSBFZGl0b3JNb2RlLkRlc2lnbmVyO1xuICBlZGl0b3JDb25maWc6IEVkaXRvckNvbmZpZyA9IHtcbiAgICBlZGl0YWJsZTogdHJ1ZSxcbiAgICBoZWlnaHQ6ICcnLFxuICAgIHdpZHRoOiAnJyxcbiAgICBzaG93VG9vbGJhcjogdHJ1ZSxcbiAgICBtZW51SXRlbXM6IFtcbiAgICAgIHtcbiAgICAgICAgTGFiZWw6ICdUb2dnbGVWaWV3JyxcbiAgICAgICAgSWNvbjogJ2NvZGUtdG9nZ2xlJyxcbiAgICAgICAgSWNvbldpZHRoOiAyMCxcbiAgICAgICAgSWNvbkhlaWdodDogMjAsXG4gICAgICAgIElzU3Ryb2tlOiBmYWxzZSxcbiAgICAgICAgR3JvdXBCeTogJ2xvY2FsJyxcbiAgICAgICAgT25DbGljazogKGV2ZW50OiBFZGl0b3JTdGF0ZSB8IHVuZGVmaW5lZCkgPT4ge1xuICAgICAgICAgIHRoaXMuZWRpdG9yTW9kZSA9XG4gICAgICAgICAgICB0aGlzLmVkaXRvck1vZGUgPT0gRWRpdG9yTW9kZS5EZXNpZ25lclxuICAgICAgICAgICAgICA/IEVkaXRvck1vZGUuQ29kZVxuICAgICAgICAgICAgICA6IEVkaXRvck1vZGUuRGVzaWduZXI7XG4gICAgICAgIH0sXG4gICAgICAgIElzRGlzYWJsZWQ6IChldmVudDogRWRpdG9yU3RhdGUgfCB1bmRlZmluZWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0sXG4gICAgICAgIElzRW5hYmxlZDogKGV2ZW50OiBFZGl0b3JTdGF0ZSB8IHVuZGVmaW5lZCkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLmVkaXRvck1vZGUgPT0gRWRpdG9yTW9kZS5Db2RlO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICBdLFxuICB9O1xuXG4gIC8vIElzVGFza0RhdGFTb3VyY2U6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW5bXT4gPSBzaWduYWwoW10pO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgZGF0YVNlcnZpY2U6IFdvcmtmbG93RGF0YVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1dGlsU2VydmljZTogVXRpbFNlcnZpY2VcbiAgKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IHN0YWdlQ29kZSA9IHRoaXMuc3RhZ2VDb2RlKCk7XG4gICAgICBjb25zdCB3b3JrZmxvd0NvZGUgPSB0aGlzLndvcmtmbG93Q29kZSgpO1xuICAgICAgY29uc3QgdHlwZSA9IHRoaXMudHlwZSgpO1xuICAgICAgY29uc29sZS5sb2coJ1N0YWdlIGNvZGUgY2hhbmdlZDonLCBzdGFnZUNvZGUpO1xuICAgICAgaWYgKHdvcmtmbG93Q29kZSAmJiBzdGFnZUNvZGUgJiYgdHlwZSkge1xuICAgICAgICAvLyB0aGlzLmxvYWRFc2NhbGF0aW9uKHN0YWdlQ29kZSk7XG4gICAgICAgIHRoaXMuc2VhcmNoRXNjYWxhdGlvbih3b3JrZmxvd0NvZGUsIHN0YWdlQ29kZSwgdHlwZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgZXNjYWxhdGlvbiA9IHRoaXMuZXNjYWxhdGlvbigpO1xuICAgICAgY29uc3QgcmVwb3J0U2NoZWR1bGVzID0gdGhpcy5yZXBvcnRTY2hlZHVsZXMoKTtcblxuICAgICAgaWYgKGVzY2FsYXRpb24gJiYgcmVwb3J0U2NoZWR1bGVzKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRNZXNzYWdlcyA9IGVzY2FsYXRpb24uRnVsbE1lc3NhZ2VzLm1hcCgoeyBNZXNzYWdlLCBJc1Rhc2tEYXRhU291cmNlLCBJc01lc3NhZ2VJZCB9KSA9PiB7XG4gICAgICAgICAgY29uc3QgZm91bmQgPSByZXBvcnRTY2hlZHVsZXMuZmluZCgocnMpID0+IHJzLkNvZGUgPT09IE1lc3NhZ2UpO1xuICAgICAgICAgIHJldHVybiBmb3VuZCA/IHsgLi4uZm91bmQsIElzVGFza0RhdGFTb3VyY2UsIElzTWVzc2FnZUlkIH0gOiBudWxsO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gdGhpcy5zZWxlY3RlZE9wZXJhdGlvbkFjdGlvbi5uZXh0KGVzY2FsYXRpb24uT3BlcmF0aW9uQWN0aW9uID8/IG51bGwpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIlNFVFRJTkcgT1BcIiwgdGhpcy5zZWxlY3RlZE9wZXJhdGlvbkFjdGlvbik7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyB0aGlzLmVzY2FsYXRpb25Gb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgLy8gICBNZXNzYWdlczogdGhpcy5mYi5hcnJheShbXSksXG4gICAgLy8gfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRSZXBvcnRTY2hlZHVsZXMoKTtcbiAgICAvLyB0aGlzLmxvYWRPcGVyYXRpb25BY3Rpb25zKCk7XG5cbiAgICBpZiAodGhpcy5zZWxlY3RlZE1lc3NhZ2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5hZGRNZXNzYWdlKCk7XG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coXG4gICAgICAnRXNjYWxhdGlvbkRpYWxvZ0NvbXBvbmVudCBpbml0aWFsaXplZCB3aXRoIHN0YWdlQ29kZTonLFxuICAgICAgdGhpcy5zdGFnZUNvZGVcbiAgICApO1xuICAgIC8vIGNvbnNvbGUubG9nKCdFc2NhbGF0aW9uRGlhbG9nQ29tcG9uZW50IHR5cGU6JywgdGhpcy50eXBlKTtcbiAgfVxuXG4gIC8vIGdldCBtZXNzYWdlcygpIHtcbiAgLy8gICByZXR1cm4gdGhpcy5lc2NhbGF0aW9uRm9ybS5jb250cm9sc1snTWVzc2FnZXMnXSBhcyBGb3JtQXJyYXk7XG4gIC8vIH1cblxuICBhZGRNZXNzYWdlKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRNZXNzYWdlcyA9IHRoaXMuc2VsZWN0ZWRNZXNzYWdlcy5jb25jYXQoW251bGxdKTtcbiAgfVxuXG4gIGRlbGV0ZU1lc3NhZ2UobGVzc29uSW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuc2VsZWN0ZWRNZXNzYWdlcyA9IHRoaXMuc2VsZWN0ZWRNZXNzYWdlcy5zcGxpY2UobGVzc29uSW5kZXgsIDEpO1xuICB9XG5cbiAgb25NZXNzYWdlU2VsZWN0ZWQocmVwb3J0U2NoZWR1bGU6IFJlcG9ydFNjaGVkdWxlLCBpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc29sZS5sb2coJ1NlbGVjdGVkIG1lc3NhZ2U6JywgcmVwb3J0U2NoZWR1bGUsICdhdCBpbmRleDonLCBpbmRleCk7XG4gICAgdGhpcy5zZWxlY3RlZE1lc3NhZ2VzID0gdGhpcy5zZWxlY3RlZE1lc3NhZ2VzLm1hcCgobXNnLCBpKSA9PiB7XG4gICAgICBpZiAoaSA9PT0gaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIHsgLi4ucmVwb3J0U2NoZWR1bGUsIElzVGFza0RhdGFTb3VyY2U6IGZhbHNlLCBJc01lc3NhZ2VJZDogdHJ1ZSB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG1zZztcbiAgICB9KTtcbiAgfVxuXG4gIGlzVmFsaWRTZWxlY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRNZXNzYWdlcy5ldmVyeSgobXNnKSA9PiAhIW1zZyk7XG4gIH1cblxuICBhc3luYyBzYXZlTWVzc2FnZXMoKSB7XG4gICAgY29uc29sZS5sb2codGhpcy5zZWxlY3RlZE1lc3NhZ2VzKTtcbiAgICBjb25zdCB0YXNrTm90aWZpY2F0aW9uczogVGFza05vdGlmaWNhdGlvbltdID0gdGhpcy5zZWxlY3RlZE1lc3NhZ2VzXG4gICAgICAuZmlsdGVyKChtc2cpID0+ICEhbXNnKVxuICAgICAgLm1hcCgobXNnKSA9PiAoe1xuICAgICAgICBJZDogJycsXG4gICAgICAgIENvZGU6ICcnLFxuICAgICAgICBUZW5hbnRJZDogJycsXG4gICAgICAgIE1lc3NhZ2U6IG1zZy5Db2RlLFxuICAgICAgICBOYW1lOiBtc2cuTmFtZSxcbiAgICAgICAgU3ViamVjdDogbXNnLlN1YmplY3QsXG4gICAgICAgIFNlbmRlckNvbmZpZzogbXNnLk1lc3NhZ2VDb25maWcsXG4gICAgICAgIE1lZGl1bTogbXNnLk1lZGl1bSxcbiAgICAgICAgTm90aWZpY2F0aW9uVHlwZTogVGFza05vdGlmaWNhdGlvblR5cGUuRXNjYWxhdGlvbixcbiAgICAgICAgSXNNZXNzYWdlSWQ6IG1zZy5Jc01lc3NhZ2VJZCxcbiAgICAgICAgSXNUYXNrRGF0YVNvdXJjZTogbXNnLklzVGFza0RhdGFTb3VyY2UsXG4gICAgICAgIE1lc3NhZ2VEYXRhU291cmNlOiAhbXNnLklzVGFza0RhdGFTb3VyY2UgPyBtc2cuUmVwb3J0RGF0YVNvdXJjZSA6ICcnLFxuICAgICAgICBEYXRhU3RhdGU6IE9iamVjdFN0YXRlLk5ldyxcbiAgICAgICAgaWQ6ICcnLFxuICAgICAgICBTZXJ2aWNlTmFtZTogJycsXG4gICAgICAgIENyZWF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgVXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgfSkpO1xuXG4gICAgLy8gaWYgKHRhc2tOb3RpZmljYXRpb25zLmxlbmd0aCkge1xuICAgIC8vIHRoaXMuY3JlYXRlZC5lbWl0KHRhc2tOb3RpZmljYXRpb25zKTtcbiAgICBjb25zb2xlLmxvZyh0YXNrTm90aWZpY2F0aW9ucyk7XG4gICAgdGhpcy5vbkRpYWxvZ0Nsb3NlKG51bGwpO1xuICAgIGNvbnN0IGRhdGE6IFBhcnRpYWw8RXNjYWxhdGlvbj4gPSB7XG4gICAgICAuLi4odGhpcy5lc2NhbGF0aW9uKCkgPz8ge1xuICAgICAgICBJZDogJycsXG4gICAgICAgIENvZGU6ICcnLFxuICAgICAgICBUZW5hbnRJZDogJycsXG4gICAgICAgIFdvcmtmbG93OiB0aGlzLndvcmtmbG93Q29kZSgpLFxuICAgICAgICBTdGFnZTogdGhpcy5zdGFnZUNvZGUoKSxcbiAgICAgICAgVHlwZTogdGhpcy50eXBlKCksXG4gICAgICAgIEV4cGlyYXRpb25XYXJuaW5nOiAwLFxuICAgICAgICBEdXJhdGlvbjogMCxcbiAgICAgICAgTm90aWZ5QWZ0ZXI6IDAsXG4gICAgICAgIFBvc2l0aW9uOiAxLFxuICAgICAgICBEYXRhU3RhdGU6IE9iamVjdFN0YXRlLk5ldyxcbiAgICAgIH0pLFxuICAgICAgLy8gT3BlcmF0aW9uQWN0aW9uOiB0aGlzLnNlbGVjdGVkT3BlcmF0aW9uQWN0aW9uLmdldFZhbHVlKCksXG4gICAgICBNZXNzYWdlczogdGFza05vdGlmaWNhdGlvbnMubWFwKCh7IENvZGUgfSkgPT4gQ29kZSksXG4gICAgICBGdWxsTWVzc2FnZXM6IHRhc2tOb3RpZmljYXRpb25zLFxuICAgIH07XG4gICAgY29uc29sZS5sb2coXCJTYXZpbmcgZXNjYWxhdGlvbiBkYXRhOlwiLCBkYXRhKTtcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLnNhdmVFc2NhbGF0aW9ucyhbZGF0YV0pLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKFwiRXNjYWxhdGlvbiBzYXZlZDpcIiwgZGF0YSk7XG4gICAgICB0aGlzLmVzY2FsYXRpb24uc2V0KGRhdGE/LlswXSA/PyBudWxsKTtcbiAgICAgIHRoaXMudXRpbFNlcnZpY2Uuc2hvd1N1Y2Nlc3MoJ0VzY2FsYXRpb24gc2F2ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgICB0aGlzLm9uRGlhbG9nQ2xvc2UobnVsbCk7XG4gICAgfSk7XG4gICAgLy8gfVxuICB9XG5cbiAgZGVsZXRlRXNjYWxhdGlvbigpIHtcbiAgICBjb25zdCBlc2NhbGF0aW9uID0gdGhpcy5lc2NhbGF0aW9uKCk7XG4gICAgaWYgKGVzY2FsYXRpb24pIHtcbiAgICAgIHRoaXMuZGF0YVNlcnZpY2UuZGVsZXRlRXNjYWxhdGlvbnMoW2VzY2FsYXRpb24uQ29kZV0pLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coXCJFc2NhbGF0aW9uIGRlbGV0ZWQ6XCIsIGRhdGEpO1xuICAgICAgICB0aGlzLmVzY2FsYXRpb24uc2V0KG51bGwpO1xuICAgICAgICB0aGlzLm9uRGlhbG9nQ2xvc2UobnVsbCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxvYWRFc2NhbGF0aW9uKHN0YWdlQ29kZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhU2VydmljZS5nZXRFc2NhbGF0aW9uV2l0aFBhcmFtKHN0YWdlQ29kZSkudGhlbigoZGF0YSkgPT4ge1xuICAgICAgdGhpcy5lc2NhbGF0aW9uLnNldChkYXRhLlJlc3VsdFswXSA/PyBudWxsKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2VhcmNoRXNjYWxhdGlvbihcbiAgICBXb3JrZmxvdzogc3RyaW5nLFxuICAgIFN0YWdlOiBzdHJpbmcsXG4gICAgVHlwZTogRXNjYWxhdGlvblR5cGVcbiAgKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhU2VydmljZVxuICAgICAgLnNlYXJjaEVzY2FsYXRpb25XaXRoUGFyYW0oe1xuICAgICAgICBXb3JrZmxvdyxcbiAgICAgICAgU3RhZ2UsXG4gICAgICAgIFR5cGUsXG4gICAgICB9KVxuICAgICAgLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgdGhpcy5lc2NhbGF0aW9uLnNldChkYXRhLlJlc3VsdFswXSA/PyBudWxsKTtcbiAgICAgICAgY29uc29sZS5sb2coXCJFc2NhbGF0aW9uIGxvYWRlZDpcIiwgdGhpcy5lc2NhbGF0aW9uKCkpO1xuICAgICAgICAvLyB0aGlzLnNlbGVjdGVkT3BlcmF0aW9uQWN0aW9uLm5leHQoZGF0YS5SZXN1bHRbMF0/Lk9wZXJhdGlvbkFjdGlvbiA/PyBudWxsKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkUmVwb3J0U2NoZWR1bGVzKCk6IHZvaWQge1xuICAgIHRoaXMuZGF0YVNlcnZpY2UuZ2V0UmVwb3J0U2NoZWR1bGVzKCkudGhlbigoZGF0YSkgPT4ge1xuICAgICAgdGhpcy5yZXBvcnRTY2hlZHVsZXMuc2V0KGRhdGEuUmVzdWx0KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIHByaXZhdGUgbG9hZE9wZXJhdGlvbkFjdGlvbnMoKTogdm9pZCB7XG4gIC8vICAgdGhpcy5kYXRhU2VydmljZS5nZXRPcGVyYXRpb25BY3Rpb25zKCkudGhlbigoZGF0YSkgPT4ge1xuICAvLyAgICAgdGhpcy5vcGVyYXRpb25BY3Rpb25zLnNldChkYXRhLlJlc3VsdCk7XG4gIC8vICAgfSk7XG4gIC8vIH1cblxuICBvbkRpYWxvZ0Nsb3NlKGV2ZW50RGF0YTogYW55KSB7XG4gICAgY29uc29sZS5sb2coJ0RpYWxvZyBjbG9zZWQsIHJlY2VpdmVkIGRhdGE6JywgZXZlbnREYXRhKTtcbiAgICB0aGlzLmVzY2FsYXRpb24uc2V0KG51bGwpO1xuICAgIHRoaXMuc2VsZWN0ZWRNZXNzYWdlcyA9IFtdO1xuICAgIHRoaXMuY2xvc2VkLmVtaXQoKTtcbiAgfVxuXG4gIG9uRGlhbG9nT3BlbihldmVudERhdGE6IGFueSkge1xuICAgIGNvbnNvbGUubG9nKCdEaWFsb2cgb3BlbmVkLCByZWNlaXZlZCBkYXRhOicsIGV2ZW50RGF0YSk7XG4gIH1cblxuICBpc05vdE5ldygpOiBib29sZWFuIHtcbiAgICBjb25zdCBlc2NhbGF0aW9uID0gdGhpcy5lc2NhbGF0aW9uKCk7XG4gICAgcmV0dXJuIGVzY2FsYXRpb24gIT09IG51bGwgJiYgZXNjYWxhdGlvbi5EYXRhU3RhdGUgIT09ICdOZXcnO1xuICB9XG59XG4iLCI8dmVyYmVuLWRpYWxvZ3VlIFtzaG93Q2xvc2VJY29uXT1cInRydWVcIiBbZGlzbWlzc091dHNpZGVDbGlja109XCJ0cnVlXCIgW2Nsb3NlT25Fc2NhcGVdPVwidHJ1ZVwiIFtzaXplXT1cIidtZWRpdW0nXCJcbiAgW21vZGVdPVwiJ2RyYXdlcidcIiBbZGlzYWJsZUZvb3Rlcl09XCJmYWxzZVwiIFtpc1Zpc2libGVdPVwidmlzaWJsZVwiIFtoZWFkZXJUZW1wbGF0ZV09XCJoZWFkZXJUZW1wbGF0ZVwiXG4gIFtib2R5VGVtcGxhdGVdPVwiYm9keVRlbXBsYXRlXCIgW2Zvb3RlclRlbXBsYXRlXT1cImZvb3RlclRlbXBsYXRlXCIgKG9wZW5Nb2RhbCk9XCJvbkRpYWxvZ09wZW4oJGV2ZW50KVwiXG4gIChjbG9zZU1vZGFsKT1cIm9uRGlhbG9nQ2xvc2UoJGV2ZW50KVwiPlxuPC92ZXJiZW4tZGlhbG9ndWU+XG5cbjxuZy10ZW1wbGF0ZSAjaGVhZGVyVGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcC0zIHRleHQteHMgYm9yZGVyLWItNCBib3JkZXItWyNGRkU2ODFdXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cIm1yLTRcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uRGlhbG9nQ2xvc2UoJGV2ZW50KVwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJibG9jayB3LTIuNSBoLTIuNSBib3JkZXItdCBib3JkZXItbCBib3JkZXItWyMzRTNFM0VdLzcwIHRyYW5zZm9ybSAtcm90YXRlLTQ1XCI+PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYm9keVRlbXBsYXRlPlxuICA8ZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtYi00IHNwYWNlLXktNFwiPlxuICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwic3BhY2UteS0xXCI+XG4gICAgICAgIDxsYWJlbCBmb3I9XCJvcGVyYXRpb24tYWN0aW9uXCIgY2xhc3M9XCJ0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC1bIzNFM0UzRV1cIj5cbiAgICAgICAgICBFc2NhbGF0aW9uXG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDx2ZXJiZW4tZHJvcC1kb3duXG4gICAgICAgICAgICBpZD1cIm9wZXJhdGlvbi1hY3Rpb25cIlxuICAgICAgICAgICAgc3R5bGVDbGFzcz1cInctZnVsbFwiXG4gICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgW211bHRpc2VsZWN0XT1cImZhbHNlXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IE9wZXJhdGlvbiBBY3Rpb25cIlxuICAgICAgICAgICAgW29wdGlvbnNdPVwib3BlcmF0aW9uQWN0aW9ucygpXCJcbiAgICAgICAgICAgIG9wdGlvbkxhYmVsPVwiTmFtZVwiXG4gICAgICAgICAgICBvcHRpb25WYWx1ZT1cIkNvZGVcIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwic2VsZWN0ZWRPcGVyYXRpb25BY3Rpb24gfCBhc3luY1wiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZWxlY3RlZE9wZXJhdGlvbkFjdGlvbi5uZXh0KCRldmVudClcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgID48L3ZlcmJlbi1kcm9wLWRvd24+XG4gICAgICA8L2Rpdj4gLS0+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJzcGFjZS15LTRcIiAqbmdGb3I9XCJsZXQgbWVzc2FnZSBvZiBzZWxlY3RlZE1lc3NhZ2VzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzcGFjZS15LTFcIj5cbiAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJtZXNzYWdlICsgJy0nICsgaVwiIGNsYXNzPVwidGV4dC1zbSBmb250LXNlbWlib2xkIHRleHQtWyMzRTNFM0VdXCI+XG4gICAgICAgICAgICBNZXNzYWdlIHt7IGkgKyAxIH19XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8dmVyYmVuLWRyb3AtZG93biBbaWRdPVwibWVzc2FnZSArICctJyArIGlcIiBzZWxlY3RLZXk9XCJDb2RlXCIgc3R5bGVDbGFzcz1cInctZnVsbFwiIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICBbbXVsdGlzZWxlY3RdPVwiZmFsc2VcIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBNZXNzYWdlXCIgW29wdGlvbnNdPVwicmVwb3J0U2NoZWR1bGVzKClcIiBvcHRpb25MYWJlbD1cIk5hbWVcIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwibWVzc2FnZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uTWVzc2FnZVNlbGVjdGVkKCRldmVudCwgaSlcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiPjwvdmVyYmVuLWRyb3AtZG93bj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgQGlmIChtZXNzYWdlKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtNFwiPlxuICAgICAgICAgIDxsYWJlbCBbZm9yXT1cIidpcy0nICsgbWVzc2FnZSArICctJyArIGkgKyAndGFzay1kYXRhLXNvdXJjZSdcIiBjbGFzcz1cInRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LVsjM0UzRTNFXVwiPlxuICAgICAgICAgICAgSXMgVGFzayBEYXRhIFNvdXJjZT9cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDx2ZXJiZW5hLXN3aXRjaCBbaWRdPVwiJ2lzLScgKyBtZXNzYWdlICsgJy0nICsgaSArICd0YXNrLWRhdGEtc291cmNlJ1wiIG9uVGV4dD1cIlllc1wiIG9mZlRleHQ9XCJOb1wiXG4gICAgICAgICAgICBbb25Db2xvcl09XCInIzFBMjM3RSdcIiBbKG5nTW9kZWwpXT1cIm1lc3NhZ2UuSXNUYXNrRGF0YVNvdXJjZVwiPjwvdmVyYmVuYS1zd2l0Y2g+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtNFwiPlxuICAgICAgICAgIDxsYWJlbCBbZm9yXT1cIidpcy0nICsgbWVzc2FnZSArICctJyArIGkgKyAnaXMtbWVzc2FnZS1pZCdcIiBjbGFzcz1cInRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LVsjM0UzRTNFXVwiPlxuICAgICAgICAgICAgSXMgTWVzc2FnZSBJRD9cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDx2ZXJiZW5hLXN3aXRjaCBbaWRdPVwiJ2lzLScgKyBtZXNzYWdlICsgJy0nICsgaSArICdpcy1tZXNzYWdlLWlkJ1wiIG9uVGV4dD1cIlllc1wiIG9mZlRleHQ9XCJOb1wiXG4gICAgICAgICAgICBbb25Db2xvcl09XCInIzFBMjM3RSdcIiBbKG5nTW9kZWwpXT1cIm1lc3NhZ2UuSXNNZXNzYWdlSWRcIj48L3ZlcmJlbmEtc3dpdGNoPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgYm9yZGVyLXByaW1hcnkgLW0tMiByb3VuZGVkLWxnIGZsZXggZmxleC1jb2wgZ2FwLTNcIiAqbmdJZj1cIm1lc3NhZ2VcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3BhY2UteS0zIGJvcmRlci1iIGJvcmRlci1wcmltYXJ5IHB4LTIgcHktM1wiPlxuICAgICAgICAgICAgPHZlcmJlbmEtaW5wdXQgbmFtZT1cIlN1YmplY3RcIiBbKG5nTW9kZWwpXT1cIm1lc3NhZ2UuU3ViamVjdFwiIFtyZWFkT25seV09XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgIDx2ZXJiZW5hLWlucHV0IG5hbWU9XCJSZWNpcGllbnRzXCIgWyhuZ01vZGVsKV09XCJtZXNzYWdlLlJlY2lwaWVudHNcIiBbcmVhZE9ubHldPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGxpYi1lZGl0b3IgW2VkaXRvckNvbmZpZ109XCJlZGl0b3JDb25maWdcIiBbZWRpdG9yTW9kZV09XCJlZGl0b3JNb2RlXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwibWVzc2FnZS5QbGFpbk1lc3NhZ2VcIj48L2xpYi1lZGl0b3I+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNmb290ZXJUZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBnYXAtOCB3LWZ1bGxcIj5cbiAgICA8dmVyYmVuYS1idXR0b24gc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgdGV4dD1cIkFkZCBNZXNzYWdlXCIgYmdDb2xvcj1cIiNGRkU2ODFcIiB0ZXh0Q29sb3I9XCIjNDA0MDQwXCJcbiAgICAgIGJvcmRlclJhZGl1cz1cIjhweFwiIHBkPVwiMTBweCAyMHB4XCIgaGVpZ2h0PVwiMzlweFwiIGZvbnRXZWlnaHQ9XCI2MDBcIiBmb250U2l6ZT1cIjEycHhcIiBzdmc9XCJhZGRcIiBbc3ZnSGVpZ2h0XT1cIjE0XCJcbiAgICAgIFtzdmdXaWR0aF09XCIxNFwiIFtzdmdTaXplXT1cIidzbSdcIiAoY2xpY2spPVwiYWRkTWVzc2FnZSgpXCI+PC92ZXJiZW5hLWJ1dHRvbj5cblxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0yIGl0ZW1zLWNlbnRlclwiPlxuICAgICAgPHZlcmJlbmEtYnV0dG9uIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCIgdHlwZT1cImJ1dHRvblwiIHRleHQ9XCJEZWxldGVcIiBiZ0NvbG9yPVwiI0ZGRTY4MVwiIHRleHRDb2xvcj1cIiM0MDQwNDBcIlxuICAgICAgICBib3JkZXJSYWRpdXM9XCI4cHhcIiBwZD1cIjEwcHggMjBweFwiIHdpZHRoPVwiMTEwcHhcIiBoZWlnaHQ9XCIzOXB4XCIgZm9udFdlaWdodD1cIjYwMFwiIGZvbnRTaXplPVwiMTJweFwiIHN2Zz1cImRlbGV0ZVwiXG4gICAgICAgIFtzdmdIZWlnaHRdPVwiMTRcIiBbc3ZnV2lkdGhdPVwiMTRcIiBbc3ZnU2l6ZV09XCInc20nXCIgKGNsaWNrKT1cImRlbGV0ZUVzY2FsYXRpb24oKVwiPjwvdmVyYmVuYS1idXR0b24+XG5cbiAgICAgIDx2ZXJiZW5hLWJ1dHRvbiBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiIHR5cGU9XCJidXR0b25cIiB0ZXh0PVwiU2F2ZVwiIGJnQ29sb3I9XCIjRkZFNjgxXCIgdGV4dENvbG9yPVwiIzQwNDA0MFwiXG4gICAgICAgIGJvcmRlclJhZGl1cz1cIjhweFwiIHBkPVwiMTBweCAyMHB4XCIgd2lkdGg9XCIxNjBweFwiIGhlaWdodD1cIjM5cHhcIiBmb250V2VpZ2h0PVwiNjAwXCIgZm9udFNpemU9XCIxMnB4XCIgc3ZnPVwic2VuZFwiXG4gICAgICAgIFtzdmdIZWlnaHRdPVwiMTRcIiBbc3ZnV2lkdGhdPVwiMTRcIiBbc3ZnU2l6ZV09XCInc20nXCIgKGNsaWNrKT1cInNhdmVNZXNzYWdlcygpXCI+PC92ZXJiZW5hLWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19