verben-workflow-ui 0.5.75 → 0.5.77

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.
@@ -96,11 +96,9 @@ export class FlowableStatusComponent extends BaseDataViewComponent {
96
96
  return data ?? [];
97
97
  }
98
98
  onStateChange(event) {
99
- console.log(`State changed for ${event.key}:`, event.value);
100
99
  switch (event.key) {
101
- case 'create':
102
- const timestamp = new Date();
103
- var newForm = {
100
+ case 'create': {
101
+ const newForm = {
104
102
  Name: '',
105
103
  Description: '',
106
104
  TenantId: '',
@@ -113,8 +111,17 @@ export class FlowableStatusComponent extends BaseDataViewComponent {
113
111
  Code: '',
114
112
  };
115
113
  this.data.update((prev) => [newForm, ...prev]);
116
- // console.log(newForm);
114
+ // CardDataViewComponent matches clicks against its cardDataList input,
115
+ // which only receives the new card after a change-detection pass. Force
116
+ // one so the freshly added card is resolvable before we open it.
117
+ this.cdr.detectChanges();
118
+ const card = this.cardData().find((c) => c.data === newForm);
119
+ if (card) {
120
+ this.currentData = this.cardDataView.onItemClick(card);
121
+ this.cdr.detectChanges();
122
+ }
117
123
  break;
124
+ }
118
125
  default:
119
126
  break;
120
127
  }
@@ -126,4 +133,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
126
133
  type: Component,
127
134
  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" }]
128
135
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.FlowableStatusFacade }, { type: i2.FormBuilder }] });
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=
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvd2FibGUtc3RhdHVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL2NvbXBvbmVudHMvZmxvd2FibGUtc3RhdHVzL2Zsb3dhYmxlLXN0YXR1cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zsb3dhYmxlLXN0YXR1cy9mbG93YWJsZS1zdGF0dXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpELE9BQU8sRUFBa0IsV0FBVyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDaEYsT0FBTyxFQUFFLHFCQUFxQixFQUFrQixNQUFNLG1DQUFtQyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7OztBQVFwRCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEscUJBQXFDO0lBc0J0RTtJQUNBO0lBQ0E7SUF2QlYsTUFBTSxHQUFtQztRQUN2QyxVQUFVLEVBQUUsRUFBRTtRQUNkLE9BQU8sRUFBRSxPQUFPO1FBQ2hCLGNBQWMsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMzQixRQUFRLEVBQUUsS0FBSztZQUNmLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSTtZQUNsQixJQUFJLEVBQUUsTUFBTTtZQUNaLElBQUksRUFBRTtnQkFDSixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUU7Z0JBQ3JDLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFB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LENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxDQUFDO2dCQUM3RCxJQUFJLElBQUksRUFBRSxDQUFDO29CQUNULElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3ZELElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQzNCLENBQUM7Z0JBQ0QsTUFBTTtZQUNSLENBQUM7WUFDRDtnQkFDRSxNQUFNO1FBQ1YsQ0FBQztJQUNILENBQUM7d0dBL0hVLHVCQUF1Qjs0RkFBdkIsdUJBQXVCLGtGQ2xCcEMsZzdSQStKQTs7NEZEN0lhLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBzaWduYWwsXG4gIFdyaXRhYmxlU2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ2FyZERhdGEsIEZvcm1Hcm91cENvbmZpZyB9IGZyb20gJ3ZlcmJlbi1uZy11aSc7XG5pbXBvcnQgeyBGbG93YWJsZVN0YXR1cywgT2JqZWN0U3RhdGUgfSBmcm9tICd2ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9tb2RlbHMnO1xuaW1wb3J0IHsgQmFzZURhdGFWaWV3Q29tcG9uZW50LCBEYXRhVmlld0NvbmZpZyB9IGZyb20gJ3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL3NoYXJlZCc7XG5pbXBvcnQgeyBjb2x1bW5zIH0gZnJvbSAnLi9mbG93YWJsZS1zdGF0dXMuY29sdW1ucyc7XG5pbXBvcnQgeyBGbG93YWJsZVN0YXR1c0ZhY2FkZSB9IGZyb20gJy4vZmxvd2FibGUtc3RhdHVzLmZhY2FkZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1mbG93YWJsZS1zdGF0dXMnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmxvd2FibGUtc3RhdHVzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2Zsb3dhYmxlLXN0YXR1cy5jb21wb25lbnQuY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgRmxvd2FibGVTdGF0dXNDb21wb25lbnQgZXh0ZW5kcyBCYXNlRGF0YVZpZXdDb21wb25lbnQ8Rmxvd2FibGVTdGF0dXM+IHtcbiAgY29uZmlnOiBEYXRhVmlld0NvbmZpZzxGbG93YWJsZVN0YXR1cz4gPSB7XG4gICAgZGF0YVNvdXJjZTogW10sXG4gICAgY29sdW1uczogY29sdW1ucyxcbiAgICBjYXJkRGF0YU1hcHBlcjogKHN0YXR1cykgPT4gKHtcbiAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgIHRpdGxlOiBzdGF0dXMuTmFtZSxcbiAgICAgIGRhdGE6IHN0YXR1cyxcbiAgICAgIGJvZHk6IFtcbiAgICAgICAgeyB0aXRsZTogJ05hbWUnLCB2YWx1ZTogc3RhdHVzLk5hbWUgfSxcbiAgICAgICAgeyB0aXRsZTogJ0Rlc2NyaXB0aW9uJywgdmFsdWU6IHN0YXR1cy5EZXNjcmlwdGlvbiB9LFxuICAgICAgXSxcbiAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICB9KSxcbiAgICBvbkRldGFpbFZpZXc6IChzdGF0dXMpID0+IHtcbiAgICAgIC8vIEN1c3RvbSBkZXRhaWwgdmlldyBsb2dpY1xuICAgIH0sXG4gIH07XG5cbiAgZm9ybUdyb3VwQ29uZmlnOiBXcml0YWJsZVNpZ25hbDxGb3JtR3JvdXBDb25maWc8YW55Pj47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZmFjYWRlOiBGbG93YWJsZVN0YXR1c0ZhY2FkZSxcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlclxuICApIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5sb2FkRGF0YSA9IHRoaXMubG9hZERhdGEuYmluZCh0aGlzKTtcblxuICAgIHRoaXMuZm9ybUdyb3VwQ29uZmlnID0gc2lnbmFsKHtcbiAgICAgIGNvbnRyb2xzOiB7XG4gICAgICAgIE5hbWU6IHRoaXMuZmIuY29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgICAgRGVzY3JpcHRpb246IHRoaXMuZmIuY29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmZhY2FkZS5nZXRSZXF1ZXN0cyQoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgIHRoaXMuZGF0YS5zZXQoZGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICBvdmVycmlkZSBsb2FkSW5pdGlhbERhdGEoKSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuZmFjYWRlLmxvYWRSZXF1ZXN0cygpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBIYW5kbGUgZXJyb3JcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0Q2FyZERhdGFCeUlkZW50aWZpZXIoY29kZTogc3RyaW5nKTogQ2FyZERhdGEgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmNhcmREYXRhKCk/LmZpbmQoKHsgZGF0YSB9KSA9PiBkYXRhLmRhdGEuQ29kZSA9PT0gY29kZSk7XG4gIH1cblxuICBhc3luYyBsb2FkTW9yZSgpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5mYWNhZGUubG9hZE1vcmUoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gSGFuZGxlIGVycm9yXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgb25TYXZlKGRhdGE6IFBhcnRpYWw8Rmxvd2FibGVTdGF0dXM+KSB7XG4gICAgY29uc3QgbWVyZ2VkID0ge1xuICAgICAgLi4udGhpcy5jdXJyZW50RGF0YT8uZGF0YSxcbiAgICAgIC4uLmRhdGEsXG4gICAgfSBhcyBGbG93YWJsZVN0YXR1cztcbiAgICAvLyBBIHJlY29yZCBpcyBuZXcgb25seSB3aGVuIGl0IGhhcyBubyBDb2RlIHlldCAodGhlIGJhY2tlbmQgYWx3YXlzIGFzc2lnbnNcbiAgICAvLyBDb2RlIG9uIHBlcnNpc3RlZCByZWNvcmRzKS4gRG9uJ3QgdHJ1c3QgdGhlIGxvYWRlZCBEYXRhU3RhdGUgaGVyZTogcmVjb3Jkc1xuICAgIC8vIHJldHVybmVkIGZyb20gdGhlIGJhY2tlbmQgY29tZSB0aHJvdWdoIHVuY2hhbmdlZCBhbmQgcmVwb3J0IERhdGFTdGF0ZVxuICAgIC8vICdOZXcnLCB3aGljaCB3b3VsZCBmb3JjZSBhbiBpbnNlcnQgKGFuZCB0aHVzIGR1cGxpY2F0ZSkgb24gZXZlcnkgZWRpdC5cbiAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgLi4ubWVyZ2VkLFxuICAgICAgRGF0YVN0YXRlOiBtZXJnZWQuQ29kZSA/IE9iamVjdFN0YXRlLkNoYW5nZWQgOiBPYmplY3RTdGF0ZS5OZXcsXG4gICAgfSBhcyBGbG93YWJsZVN0YXR1cztcbiAgICBhd2FpdCB0aGlzLmZhY2FkZS5hZGRSZXF1ZXN0KHBheWxvYWQpO1xuICB9XG5cbiAgaGFuZGxlU2VhcmNoKGV2ZW50OiB7IGtleTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0pIHtcbiAgICB0aGlzLmZhY2FkZS5zZWFyY2goZXZlbnQudmFsdWUpO1xuICB9XG5cbiAgaGFuZGxlRmV0Y2hlZEV4cG9ydCh7IHNraXAsIGxpbWl0IH06IGFueSkge1xuICAgIHRoaXMuZmFjYWRlLmxvYWREYXRhKHNraXAsIGxpbWl0KS50aGVuKChkYXRhKSA9PiB7XG4gICAgICBpZiAoZGF0YSkge1xuICAgICAgICB0aGlzLmhhbmRsZUV4cG9ydChkYXRhKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGxvYWREYXRhKHJhbmdlOiB7IHNraXA6IG51bWJlcjsgbGltaXQ6IG51bWJlciB9KSB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuZmFjYWRlLmxvYWREYXRhKHJhbmdlLnNraXAsIHJhbmdlLmxpbWl0KTtcbiAgICByZXR1cm4gZGF0YSA/PyBbXTtcbiAgfVxuXG4gIG92ZXJyaWRlIG9uU3RhdGVDaGFuZ2UoZXZlbnQ6IHsga2V5OiBzdHJpbmc7IHZhbHVlOiBib29sZWFuIH0pOiB2b2lkIHtcbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnY3JlYXRlJzoge1xuICAgICAgICBjb25zdCBuZXdGb3JtOiBGbG93YWJsZVN0YXR1cyA9IHtcbiAgICAgICAgICBOYW1lOiAnJyxcbiAgICAgICAgICBEZXNjcmlwdGlvbjogJycsXG4gICAgICAgICAgVGVuYW50SWQ6ICcnLFxuICAgICAgICAgIFNlcnZpY2VOYW1lOiAnJyxcbiAgICAgICAgICBpZDogY3J5cHRvLnJhbmRvbVVVSUQoKSxcbiAgICAgICAgICBJZDogJycsXG4gICAgICAgICAgQ3JlYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICAgIFVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgICBEYXRhU3RhdGU6IE9iamVjdFN0YXRlLk5ldyxcbiAgICAgICAgICBDb2RlOiAnJyxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5kYXRhLnVwZGF0ZSgocHJldikgPT4gW25ld0Zvcm0sIC4uLnByZXZdKTtcblxuICAgICAgICAvLyBDYXJkRGF0YVZpZXdDb21wb25lbnQgbWF0Y2hlcyBjbGlja3MgYWdhaW5zdCBpdHMgY2FyZERhdGFMaXN0IGlucHV0LFxuICAgICAgICAvLyB3aGljaCBvbmx5IHJlY2VpdmVzIHRoZSBuZXcgY2FyZCBhZnRlciBhIGNoYW5nZS1kZXRlY3Rpb24gcGFzcy4gRm9yY2VcbiAgICAgICAgLy8gb25lIHNvIHRoZSBmcmVzaGx5IGFkZGVkIGNhcmQgaXMgcmVzb2x2YWJsZSBiZWZvcmUgd2Ugb3BlbiBpdC5cbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgIGNvbnN0IGNhcmQgPSB0aGlzLmNhcmREYXRhKCkuZmluZCgoYykgPT4gYy5kYXRhID09PSBuZXdGb3JtKTtcbiAgICAgICAgaWYgKGNhcmQpIHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnREYXRhID0gdGhpcy5jYXJkRGF0YVZpZXcub25JdGVtQ2xpY2soY2FyZCk7XG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic3BhY2UteS04XCI+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==