ngx-histaff-alpha 1.3.2 → 1.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/app/libraries/core-page-list-content/core-page-list-content/core-page-list-content.component.mjs +3 -3
- package/esm2022/lib/app/libraries/core-permission/core-permission/core-permission.component.mjs +18 -9
- package/esm2022/lib/app/libraries/core-table/core-table.component.mjs +4 -3
- package/fesm2022/ngx-histaff-alpha.mjs +18 -9
- package/fesm2022/ngx-histaff-alpha.mjs.map +1 -1
- package/lib/app/libraries/core-permission/core-permission/core-permission.component.d.ts +3 -1
- package/package.json +1 -1
|
@@ -275,7 +275,7 @@ export class CorePageListContentComponent extends CoreFormControlBaseComponent {
|
|
|
275
275
|
useExisting: CorePageListContentComponent
|
|
276
276
|
},
|
|
277
277
|
CorePageListState
|
|
278
|
-
], viewQueries: [{ propertyName: "corePageListContentContainer", first: true, predicate: ["corePageListContentContainer"], descendants: true }, { propertyName: "paginationContainer", first: true, predicate: ["paginationContainer"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"core-page-list-content-container\" #corePageListContentContainer>\r\n <core-table width=\"100%\" [height]=\"tableHeight\" headerHeight=\"42px\" [rowHeight]=\"rowHeight\" [wrap]=\"true\"\r\n [columns]=\"columns\" [data]=\"list\" [showCheckbox]=\"!!!hideCheck\" [wrap]=\"true\" headerHeight=\"60px\"\r\n [tools]=\"inlineTools\" (onRowClick)=\"onRowClick($event)\" (onSelectedIdsChange)=\"onSelectedIdsChange($event)\"\r\n [frozen]=\"frozen || 1\" (onSearching)=\"onSearching($event)\" (onColumnCaptionClick)=\"onColumnCaptionClick($event)\"\r\n [corePageListInstanceNumber]=\"corePageListInstanceNumber\"\r\n [disableHighlightOnClick]=\"disableHighlightOnClick\" [loading]=\"loading\" [columnSearchDefaultOpen]=\"columnSearchDefaultOpen\"\r\n [wrap]=\"wrap\"\r\n [headerWrap]=\"headerWrap\"\r\n [headerFirstRowHeight]=\"headerFirstRowHeight\"\r\n ></core-table>\r\n <div class=\"d-flex-end pagination-wrapper\" #paginationContainer>\r\n <core-pagination-full [height]=\"layoutService.corePaginationHeight\" [currentPage$]=\"currentPage$\" [pageSize$]=\"pageSize$\"\r\n [pageCount]=\"pageCount\"\r\n [innerBodyCount$]=\"innerBodyCount$\" [pagination$]=\"pagination$\" [loading]=\"loading\"\r\n [background]=\"'#848484'\"></core-pagination-full>\r\n\r\n </div>\r\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: CoreTableComponent, selector: "core-table", inputs: ["id", "width", "height", "showCheckbox", "checkboxSize", "outerButtons", "showTools", "tools", "checkingResetFlag", "headerWrap", "headerFirstRowHeight", "headerSecondRowHeight", "wrap", "allowCellScrollY", "loading", "rowHeight", "frozen", "footer", "columns", "data", "selectedIds", "corePageListInstanceNumber", "disableHighlightOnClick", "freeMode", "searchSwitchDisabled", "inlineToolItems", "columnSearchDefaultOpen", "lazyLoading", "noPaddingCell"], outputs: ["onSearching", "onToolClick", "onRowClick", "onRowDoubleClick", "onSelectedIdsChange", "onSelectedDataChange", "onColumnCaptionClick"] }, { kind: "component", type: CorePaginationFullComponent, selector: "core-pagination-full", inputs: ["currentPage$", "height", "pageCount", "loading", "showAdd", "background", "pageSize$", "innerBodyCount$", "pagination$", "fixedPageSize"], outputs: ["onClickAdd", "onCurrentPageChange"] }] }); }
|
|
278
|
+
], viewQueries: [{ propertyName: "corePageListContentContainer", first: true, predicate: ["corePageListContentContainer"], descendants: true }, { propertyName: "paginationContainer", first: true, predicate: ["paginationContainer"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"core-page-list-content-container\" #corePageListContentContainer>\r\n <core-table width=\"100%\" [height]=\"tableHeight\" headerHeight=\"42px\" [rowHeight]=\"rowHeight\" [wrap]=\"true\"\r\n [columns]=\"columns\" [data]=\"list\" [showCheckbox]=\"!!!hideCheck\" [wrap]=\"true\" headerHeight=\"60px\"\r\n [tools]=\"inlineTools\" (onRowClick)=\"onRowClick($event)\" (onSelectedIdsChange)=\"onSelectedIdsChange($event)\"\r\n [frozen]=\"frozen || 1\" (onSearching)=\"onSearching($event)\" (onColumnCaptionClick)=\"onColumnCaptionClick($event)\"\r\n [corePageListInstanceNumber]=\"corePageListInstanceNumber\"\r\n [disableHighlightOnClick]=\"disableHighlightOnClick\" [loading]=\"loading\" [columnSearchDefaultOpen]=\"columnSearchDefaultOpen\"\r\n [wrap]=\"wrap\"\r\n [headerWrap]=\"headerWrap\"\r\n [headerFirstRowHeight]=\"headerFirstRowHeight\"\r\n [lazyLoading]=\"true\"\r\n ></core-table>\r\n <div class=\"d-flex-end pagination-wrapper\" #paginationContainer>\r\n <core-pagination-full [height]=\"layoutService.corePaginationHeight\" [currentPage$]=\"currentPage$\" [pageSize$]=\"pageSize$\"\r\n [pageCount]=\"pageCount\"\r\n [innerBodyCount$]=\"innerBodyCount$\" [pagination$]=\"pagination$\" [loading]=\"loading\"\r\n [background]=\"'#848484'\"></core-pagination-full>\r\n\r\n </div>\r\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: CoreTableComponent, selector: "core-table", inputs: ["id", "width", "height", "showCheckbox", "checkboxSize", "outerButtons", "showTools", "tools", "checkingResetFlag", "headerWrap", "headerFirstRowHeight", "headerSecondRowHeight", "wrap", "allowCellScrollY", "loading", "rowHeight", "frozen", "footer", "columns", "data", "selectedIds", "corePageListInstanceNumber", "disableHighlightOnClick", "freeMode", "searchSwitchDisabled", "inlineToolItems", "columnSearchDefaultOpen", "lazyLoading", "noPaddingCell"], outputs: ["onSearching", "onToolClick", "onRowClick", "onRowDoubleClick", "onSelectedIdsChange", "onSelectedDataChange", "onColumnCaptionClick"] }, { kind: "component", type: CorePaginationFullComponent, selector: "core-pagination-full", inputs: ["currentPage$", "height", "pageCount", "loading", "showAdd", "background", "pageSize$", "innerBodyCount$", "pagination$", "fixedPageSize"], outputs: ["onClickAdd", "onCurrentPageChange"] }] }); }
|
|
279
279
|
}
|
|
280
280
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CorePageListContentComponent, decorators: [{
|
|
281
281
|
type: Component,
|
|
@@ -290,7 +290,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
290
290
|
useExisting: CorePageListContentComponent
|
|
291
291
|
},
|
|
292
292
|
CorePageListState
|
|
293
|
-
], template: "<div class=\"core-page-list-content-container\" #corePageListContentContainer>\r\n <core-table width=\"100%\" [height]=\"tableHeight\" headerHeight=\"42px\" [rowHeight]=\"rowHeight\" [wrap]=\"true\"\r\n [columns]=\"columns\" [data]=\"list\" [showCheckbox]=\"!!!hideCheck\" [wrap]=\"true\" headerHeight=\"60px\"\r\n [tools]=\"inlineTools\" (onRowClick)=\"onRowClick($event)\" (onSelectedIdsChange)=\"onSelectedIdsChange($event)\"\r\n [frozen]=\"frozen || 1\" (onSearching)=\"onSearching($event)\" (onColumnCaptionClick)=\"onColumnCaptionClick($event)\"\r\n [corePageListInstanceNumber]=\"corePageListInstanceNumber\"\r\n [disableHighlightOnClick]=\"disableHighlightOnClick\" [loading]=\"loading\" [columnSearchDefaultOpen]=\"columnSearchDefaultOpen\"\r\n [wrap]=\"wrap\"\r\n [headerWrap]=\"headerWrap\"\r\n [headerFirstRowHeight]=\"headerFirstRowHeight\"\r\n ></core-table>\r\n <div class=\"d-flex-end pagination-wrapper\" #paginationContainer>\r\n <core-pagination-full [height]=\"layoutService.corePaginationHeight\" [currentPage$]=\"currentPage$\" [pageSize$]=\"pageSize$\"\r\n [pageCount]=\"pageCount\"\r\n [innerBodyCount$]=\"innerBodyCount$\" [pagination$]=\"pagination$\" [loading]=\"loading\"\r\n [background]=\"'#848484'\"></core-pagination-full>\r\n\r\n </div>\r\n</div>" }]
|
|
293
|
+
], template: "<div class=\"core-page-list-content-container\" #corePageListContentContainer>\r\n <core-table width=\"100%\" [height]=\"tableHeight\" headerHeight=\"42px\" [rowHeight]=\"rowHeight\" [wrap]=\"true\"\r\n [columns]=\"columns\" [data]=\"list\" [showCheckbox]=\"!!!hideCheck\" [wrap]=\"true\" headerHeight=\"60px\"\r\n [tools]=\"inlineTools\" (onRowClick)=\"onRowClick($event)\" (onSelectedIdsChange)=\"onSelectedIdsChange($event)\"\r\n [frozen]=\"frozen || 1\" (onSearching)=\"onSearching($event)\" (onColumnCaptionClick)=\"onColumnCaptionClick($event)\"\r\n [corePageListInstanceNumber]=\"corePageListInstanceNumber\"\r\n [disableHighlightOnClick]=\"disableHighlightOnClick\" [loading]=\"loading\" [columnSearchDefaultOpen]=\"columnSearchDefaultOpen\"\r\n [wrap]=\"wrap\"\r\n [headerWrap]=\"headerWrap\"\r\n [headerFirstRowHeight]=\"headerFirstRowHeight\"\r\n [lazyLoading]=\"true\"\r\n ></core-table>\r\n <div class=\"d-flex-end pagination-wrapper\" #paginationContainer>\r\n <core-pagination-full [height]=\"layoutService.corePaginationHeight\" [currentPage$]=\"currentPage$\" [pageSize$]=\"pageSize$\"\r\n [pageCount]=\"pageCount\"\r\n [innerBodyCount$]=\"innerBodyCount$\" [pagination$]=\"pagination$\" [loading]=\"loading\"\r\n [background]=\"'#848484'\"></core-pagination-full>\r\n\r\n </div>\r\n</div>" }]
|
|
294
294
|
}], ctorParameters: () => [{ type: i1.CorePageListService }, { type: i2.CorePageListState }, { type: i3.CorePageEditService }, { type: i4.Router }, { type: i4.ActivatedRoute }, { type: i5.MultiLanguageService }, { type: i6.AlertService }, { type: i7.LayoutService }, { type: i8.CoreButtonGroupService }], propDecorators: { height: [{
|
|
295
295
|
type: Input
|
|
296
296
|
}], isHeightForTable: [{
|
|
@@ -338,4 +338,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
338
338
|
type: ViewChild,
|
|
339
339
|
args: ['paginationContainer']
|
|
340
340
|
}] } });
|
|
341
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1wYWdlLWxpc3QtY29udGVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS1wYWdlLWxpc3QtY29udGVudC9jb3JlLXBhZ2UtbGlzdC1jb250ZW50L2NvcmUtcGFnZS1saXN0LWNvbnRlbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtcGFnZS1saXN0LWNvbnRlbnQvY29yZS1wYWdlLWxpc3QtY29udGVudC9jb3JlLXBhZ2UtbGlzdC1jb250ZW50LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFvQyxTQUFTLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBTXBJLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQVNqRSxPQUFPLEVBQUUsZUFBZSxFQUFnQixZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFNOUUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFDN0csT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGdGQUFnRixDQUFDO0FBRTdILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7Ozs7O0FBcUJwRSxNQUFNLE9BQU8sNEJBQTZCLFNBQVEsNEJBQTRCO0lBMEU1RSxZQUNVLG1CQUF3QyxFQUN4QyxpQkFBb0MsRUFDcEMsbUJBQXdDLEVBQ3hDLE1BQWMsRUFDZCxLQUFxQixFQUNyQixHQUF5QixFQUN6QixZQUEwQixFQUMzQixhQUE0QixFQUMzQixzQkFBOEM7UUFHdEQsS0FBSyxFQUFFLENBQUM7UUFYQSx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsUUFBRyxHQUFILEdBQUcsQ0FBc0I7UUFDekIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDM0Isa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDM0IsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQW5EeEQsb0JBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBUyxDQUFDLENBQUMsQ0FBQztRQU9qRCxrQkFBYSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFFNUMsa0JBQWEsR0FBbUIsRUFBRSxDQUFDO1FBRW5DLGdCQUFXLEdBQXdCLEVBQUUsQ0FBQztRQUV0QyxZQUFPLEdBQVksS0FBSyxDQUFDO1FBTXpCLG1JQUFtSTtRQUNuSSxpQkFBWSxHQUFHLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBRTlDLCtHQUErRztRQUMvRyxvQ0FBK0IsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUV0RSx5Q0FBeUM7UUFFekMsY0FBUyxHQUFHLElBQUksZUFBZSxDQUFTLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU1RCxZQUFPLEdBQUcsSUFBSSxlQUFlLENBQU0sSUFBSSxDQUFDLENBQUM7UUFDekMscUJBQWdCLEdBQUcsSUFBSSxlQUFlLENBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBQzlELFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBbUMsSUFBSSxDQUFDLENBQUM7UUFDdEUsVUFBSyxHQUFHLElBQUksZUFBZSxDQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUNyRix3QkFBbUIsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUMxRCxzQkFBaUIsR0FBRyxJQUFJLGVBQWUsQ0FBb0IsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUczRSxzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFrQmpDLGtFQUFrRTtRQUNsRSxJQUFJLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN2RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztZQUN0QyxjQUFjLEVBQUUsSUFBSSxDQUFDLDBCQUEwQjtZQUMvQyxXQUFXLEVBQUUsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDO1lBQ2hELEdBQUcsRUFBRSxJQUFJLGVBQWUsQ0FBTSxJQUFJLENBQUM7WUFDbkMsWUFBWSxFQUFFLElBQUksZUFBZSxDQUFNLElBQUksQ0FBQztTQUM3QyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUN2QixJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQTtTQUM1RjtJQUNILENBQUM7SUFFRCxRQUFRO1FBRU4sSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDekM7UUFFRCw2QkFBNkI7UUFDN0IsTUFBTSxPQUFPLEdBQWdCLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNuQixPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUNYLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSztnQkFDZCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN0QyxDQUFDLENBQUE7UUFDSixDQUFDLENBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXpCLGdEQUFnRDtRQUVoRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzNCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7Z0JBQzFCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUs7Z0JBQy9CLElBQUksRUFBRSxDQUFDO2FBQ1IsQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FBQTtRQUVELElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQy9CLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBRTNDLG9DQUFvQztnQkFDcEMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxDQUFDLGFBQWEsRUFBRTtvQkFDbkIsTUFBTSxTQUFTLEdBQUc7d0JBQ2hCLEdBQUcsYUFBYTt3QkFDaEIsR0FBRyxDQUFDO3FCQUNMLENBQUM7b0JBQ0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7aUJBQzlCO3FCQUFNO29CQUNMLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUN0QjtZQUNILENBQUMsQ0FBQyxDQUNILENBQUM7U0FDSDtRQUVELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN6QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDO2dCQUMxQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLO2dCQUMvQixNQUFNLEVBQUUsQ0FBQzthQUNWLENBQUMsQ0FBQTtRQUNKLENBQUMsQ0FBQyxDQUNILENBQUE7UUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNsQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDO2dCQUMxQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLO2dCQUMvQixlQUFlLEVBQUUsQ0FBQzthQUNuQixDQUFDLENBQUE7UUFDSixDQUFDLENBQUMsQ0FDSCxDQUFBO1FBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUNmLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFDakIsb0JBQW9CLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUU7WUFDbEMsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFO2dCQUNwQixTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFBO2FBQzFEO1lBQ0QsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQyxDQUFDLENBQ0gsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDZCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDO2dCQUMxQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLO2dCQUMvQixNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTthQUNyRSxDQUFDLENBQUE7UUFDSixDQUFDLENBQUMsQ0FDSCxDQUFBO1FBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7Z0JBQzFCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0QsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNwQyxDQUFDLENBQUE7UUFDSixDQUFDLENBQUMsQ0FDSCxDQUFBO1FBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7WUFDOUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFBO1lBQ2hELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7Z0JBQzFCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUs7Z0JBQy9CLEVBQUUsRUFBRSxDQUFDO2FBQ04sQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FBQTtRQUVELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUMzQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztnQkFDcEIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUs7Z0JBQ3pCLElBQUksRUFBRSxDQUFDO2dCQUNQLElBQUksRUFBRSxDQUFDO2FBQ1IsQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FBQTtRQUVELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUM3QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDO2dCQUMxQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLO2dCQUMvQixVQUFVLEVBQUUsQ0FBQzthQUNkLENBQUMsQ0FBQTtRQUNKLENBQUMsQ0FBQyxDQUNILENBQUE7UUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsY0FBYyxLQUFLLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDakksSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FDSCxDQUFBO1FBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDckMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQztnQkFDMUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSztnQkFDL0Isa0JBQWtCLEVBQUUsQ0FBQzthQUN0QixDQUFDLENBQUE7UUFDSixDQUFDLENBQUMsQ0FDSCxDQUFBO1FBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUNwQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsK0JBQStCLENBQUMsS0FBSyxDQUFDLEVBQzFELG9CQUFvQixFQUFFLENBQUMsYUFBYTtTQUNyQzthQUNFLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7WUFDMUMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSztZQUMvQixVQUFVLEVBQUU7Z0JBQ1YsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLFVBQVc7Z0JBQzVDLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFLO2FBQ2hFO1NBQ0YsQ0FBQyxDQUFDLENBQ04sQ0FBQTtRQUVELDhDQUE4QztRQUU5QyxrQ0FBa0M7UUFDbEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBRXJCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQ3pCLE1BQU0sQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUNyRCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUNwQyxvQkFBb0IsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUNsQyxNQUFNLFNBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1lBQ2pFLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUMsQ0FBQztRQUNGOztVQUVFO1FBQ0YsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ1osT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUE7WUFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDcEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQztZQUNyRCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFBO1FBQ25ELENBQUMsQ0FBQztRQUNGOztVQUVFO1NBRUgsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRTtZQUNyQixJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUU7Z0JBQzVCLE1BQU0sSUFBSSxHQUFzQixDQUFDLENBQUMsSUFBSSxDQUFBO2dCQUN0QyxxQ0FBcUM7Z0JBRXJDLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxHQUFHLEVBQUU7b0JBQzNCLE1BQU0sU0FBUyxHQUF1QixJQUFJLENBQUMsU0FBUyxDQUFDO29CQUNyRCxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUU7d0JBRWYsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSyxDQUFDO3dCQUM1QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBTSxDQUFDLENBQUM7d0JBQzVDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBRXBFLHdCQUF3Qjt3QkFDeEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQzt3QkFDOUIsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxLQUFLOzRCQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUM5RSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxDQUFDO3dCQUVqRCxJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUU7NEJBRTlDLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7NEJBQ2hELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFLLENBQUMsQ0FBQTt5QkFFeEM7cUJBQ0Y7eUJBQU07d0JBQ0wsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7d0JBQ2YsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7cUJBQ3BCO2lCQUVGO3FCQUFNO29CQUNMLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO29CQUNmLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO2lCQUNwQjthQUNGO2lCQUFNO2dCQUNMLG9GQUFvRjthQUNyRjtZQUVELElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBRXZCLENBQUMsQ0FBQyxDQUNILENBQUE7UUFDRCxpQ0FBaUM7SUFFbkMsQ0FBQztJQUVELFdBQVcsQ0FBQyxDQUFnQjtRQUMxQixNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzVHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ2hCLFFBQVEsRUFBRSxJQUFLO1lBQ2YsT0FBTyxFQUFFLENBQUM7U0FDWCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZUFBZTtJQUNmLENBQUM7SUFFRCxVQUFVLENBQUMsQ0FBTTtRQUNmLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDakMsQ0FBQztJQUVELG1CQUFtQixDQUFDLENBQXNCO1FBQ3hDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxDQUF1QjtRQUMxQyxNQUFNLE9BQU8sR0FBZ0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMxRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2QsSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUU7Z0JBQ3ZCLElBQUksQ0FBQyxDQUFDLGFBQWEsS0FBSyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUU7b0JBQzlDLENBQUMsQ0FBQyxhQUFhLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxDQUFDO2lCQUN6QztxQkFBTSxJQUFJLENBQUMsQ0FBQyxhQUFhLEtBQUssaUJBQWlCLENBQUMsR0FBRyxFQUFFO29CQUNwRCxDQUFDLENBQUMsYUFBYSxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQztpQkFDMUM7cUJBQU07b0JBQ0wsQ0FBQyxDQUFDLGFBQWEsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7aUJBQzFDO2FBQ0Y7aUJBQU07Z0JBQ0wsQ0FBQyxDQUFDLGFBQWEsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUE7YUFDekM7UUFDSCxDQUFDLENBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUU5Qyx5Q0FBeUM7UUFDekMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsY0FBYyxLQUFLLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQ3JILElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDcEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsY0FBYyxLQUFLLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1lBQ3RILElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1NBQy9DO0lBQ0gsQ0FBQzs4R0FsWFUsNEJBQTRCO2tHQUE1Qiw0QkFBNEIsdXJCQVQ1QjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLEtBQUssRUFBRSxJQUFJO2dCQUNYLFdBQVcsRUFBRSw0QkFBNEI7YUFDMUM7WUFDRCxpQkFBaUI7U0FDbEIsaVVDL0NILGkzQ0FrQk0seUREZ0JGLFlBQVksK0JBQ1osa0JBQWtCLDJwQkFDbEIsMkJBQTJCOzsyRkFhbEIsNEJBQTRCO2tCQW5CeEMsU0FBUzsrQkFDRSx3QkFBd0IsY0FDdEIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osa0JBQWtCO3dCQUNsQiwyQkFBMkI7cUJBQzVCLGFBR1U7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsS0FBSyxFQUFFLElBQUk7NEJBQ1gsV0FBVyw4QkFBOEI7eUJBQzFDO3dCQUNELGlCQUFpQjtxQkFDbEI7MlVBS1EsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFJSyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFHQyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFDRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRXFDLDRCQUE0QjtzQkFBdEUsU0FBUzt1QkFBQyw4QkFBOEI7Z0JBQ1AsbUJBQW1CO3NCQUFwRCxTQUFTO3VCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBWaWV3Q2hpbGQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIsIEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7IElDb3JlVGFibGVUb29sSXRlbSB9IGZyb20gJy4uLy4uL2NvcmUtdGFibGUvY29yZS10YWJsZS5jb21wb25lbnQnO1xyXG5cclxuaW1wb3J0IHsgSUZpbHRlck9wZXJhdG9yLCBJUGFnaW5hdGlvbiwgSVF1ZXJ5TGlzdFJlcXVlc3QsIElTZWFyY2hJdGVtLCBJU29ydEl0ZW0gfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL0lRdWVyeUxpc3RSZXF1ZXN0JztcclxuaW1wb3J0IHsgZGVmYXVsdFBhZ2luZyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9kZWZhdWx0UGFnaW5nJztcclxuXHJcbmltcG9ydCB7IENvcmVQYWdlTGlzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlLXBhZ2UtbGlzdC9jb3JlLXBhZ2UtbGlzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29yZVBhZ2VFZGl0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUtcGFnZS1lZGl0L2NvcmUtcGFnZS1lZGl0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNdWx0aUxhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL211bHRpLWxhbmd1YWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hbGVydC9hbGVydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTGF5b3V0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2xheW91dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29yZUJ1dHRvbkdyb3VwU2VydmljZSwgSUNvcmVCdXR0b25Hcm91cFN0YXR1cyB9IGZyb20gJy4uLy4uL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9jb3JlLWJ1dHRvbi1ncm91cC1zZXJ2aWNlJztcclxuXHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIGZyb21FdmVudCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvcmVQYWdlTGlzdFN0YXRlIH0gZnJvbSAnLi4vLi4vY29yZS1wYWdlLWxpc3QvY29yZS1wYWdlLWxpc3Quc3RhdGUnO1xyXG5pbXBvcnQgeyBJRm9ybWF0ZWRSZXNwb25zZSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvSUZvcm1hdGVkUmVzcG9uc2UnO1xyXG5pbXBvcnQgeyBJUXVlcnlMaXN0UmVzcG9uc2UgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL0lRdWVyeUxpc3RSZXNwb25zZSc7XHJcbmltcG9ydCB7IEVudW1UcmFuc2xhdGVLZXkgfSBmcm9tIFwiYWxwaGEtZ2xvYmFsLWNvbnN0YW50c1wiO1xyXG5cclxuaW1wb3J0IHsgSUNvcmVQYWdlTGlzdEFwaURlZmluaXRpb24sIElDb3JlUGFnZUxpc3RTZWFyY2hPYmplY3QgfSBmcm9tICcuLi8uLi9jb3JlLXBhZ2UtbGlzdC9jb3JlLXBhZ2UtbGlzdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlRm9ybUNvbnRyb2xCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS1mb3JtLWNvbnRyb2wtYmFzZS9jb3JlLWZvcm0tY29udHJvbC1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb3JlVGFibGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLXRhYmxlL2NvcmUtdGFibGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29yZVBhZ2luYXRpb25GdWxsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS1wYWdpbmF0aW9uLWZ1bGwvY29yZS1wYWdpbmF0aW9uLWZ1bGwvY29yZS1wYWdpbmF0aW9uLWZ1bGwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSUNvcmVUYWJsZUNvbHVtbkl0ZW0gfSBmcm9tICcuLi8uLi9jb3JlLXRhYmxlL0lDb3JlVGFibGVDb2x1bW5JdGVtJztcclxuaW1wb3J0IHsgRW51bVNvcnREaXJlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9lbnVtL0VudW1Tb3J0RGlyZWN0aW9uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY29yZS1wYWdlLWxpc3QtY29udGVudCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBDb3JlVGFibGVDb21wb25lbnQsXHJcbiAgICBDb3JlUGFnaW5hdGlvbkZ1bGxDb21wb25lbnQsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29yZS1wYWdlLWxpc3QtY29udGVudC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29yZS1wYWdlLWxpc3QtY29udGVudC5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBDb3JlUGFnZUxpc3RDb250ZW50Q29tcG9uZW50XHJcbiAgICB9LFxyXG4gICAgQ29yZVBhZ2VMaXN0U3RhdGVcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlUGFnZUxpc3RDb250ZW50Q29tcG9uZW50IGV4dGVuZHMgQ29yZUZvcm1Db250cm9sQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICAvKiBTVEFSVDogU29tZSByb3V0ZWQgY29tcG9uZW50cywgc3VjaCBhcyBTdGFmZlByb2ZpbGUsIG1heSBiZSByZXVzZWQgYXMgcmVhZG9ubHkgZm9yIHNlZWtpbmcgKi9cclxuICBASW5wdXQoKSBoZWlnaHQhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgaXNIZWlnaHRGb3JUYWJsZSE6IGJvb2xlYW47XHJcbiAgLyogRU5EOiBTb21lIHJvdXRlZCBjb21wb25lbnRzLCBzdWNoIGFzIFN0YWZmUHJvZmlsZSwgbWF5IGJlIHJldXNlZCBhcyByZWFkb25seSBmb3Igc2Vla2luZyAqL1xyXG5cclxuICAgIC8qIGNoYW5nZSB0aGVzZSAyIHByb3BzIHRvIHdyYXAgaGVhZGVyIHRleHRzICovXHJcbiAgICBASW5wdXQoKSBoZWFkZXJXcmFwITogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGhlYWRlckZpcnN0Um93SGVpZ2h0ITogbnVtYmVyO1xyXG4gICAgLyoqICovXHJcblxyXG4gIEBJbnB1dCgpIHJvd0hlaWdodCE6IHN0cmluZztcclxuICBASW5wdXQoKSB3cmFwITogYm9vbGVhbjtcclxuICBASW5wdXQoKSB0aXRsZSE6IEVudW1UcmFuc2xhdGVLZXk7XHJcbiAgQElucHV0KCkgaGFzSWRPZlN0cmluZ1R5cGUhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGhpZGVDaGVjayE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgYXBpRGVmaW5pdGlvbiE6IElDb3JlUGFnZUxpc3RBcGlEZWZpbml0aW9uO1xyXG4gIEBJbnB1dCgpIGNvbHVtbnMhOiBJQ29yZVRhYmxlQ29sdW1uSXRlbVtdO1xyXG4gIEBJbnB1dCgpIGlubGluZVRvb2xzITogSUNvcmVUYWJsZVRvb2xJdGVtW107XHJcbiAgQElucHV0KCkgYXV0b1Jlc2l6ZVdpdGhXaW5kb3chOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGV4dHJhTWFudWFsT2Zmc2V0ITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVIaWdobGlnaHRPbkNsaWNrITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBjb2x1bW5TZWFyY2hEZWZhdWx0T3BlbiE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgb3V0ZXJQYXJhbSQhOiBCZWhhdmlvclN1YmplY3Q8YW55PjtcclxuICBASW5wdXQoKSBsb2FkaW5nITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBmcm96ZW4hOiBudW1iZXI7XHJcbiAgQElucHV0KCkgZml4ZWRQYWdlU2l6ZSE6IG51bWJlcjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnY29yZVBhZ2VMaXN0Q29udGVudENvbnRhaW5lcicpIGNvcmVQYWdlTGlzdENvbnRlbnRDb250YWluZXIhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ3BhZ2luYXRpb25Db250YWluZXInKSBwYWdpbmF0aW9uQ29udGFpbmVyITogRWxlbWVudFJlZjtcclxuXHJcbiAgaW5uZXJCb2R5Q291bnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDEpO1xyXG5cclxuICB0YWJsZUhlaWdodCE6IG51bWJlcjtcclxuXHJcbiAgcGFnaW5hdGlvbkhlaWdodCE6IG51bWJlcjtcclxuICBjb3JlUGFnZUxpc3RJbnN0YW5jZU51bWJlciE6IG51bWJlcjtcclxuXHJcbiAgcmVzaXplU3RyZWFtJCA9IGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKTtcclxuXHJcbiAgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgc2VsZWN0ZWRJZHM6IHN0cmluZ1tdIHwgbnVtYmVyW10gPSBbXTtcclxuXHJcbiAgaXNBZG1pbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKiBzdGFydDogcGFzc2luZyB0aGlzIHZhciB0byBQYWdpbmF0aW9uICovXHJcblxyXG4gIHBhZ2VDb3VudCE6IG51bWJlcjtcclxuXHJcbiAgLy8gUGFzc2luZyBCZWhhdmlvclN1YmplY3QgdG8gb3RoZXIgY29tcG9uZW50IGlzIGxpa2UgdXNpbmcgYSBzZXJ2aWNlICh0aGF0IGhvbGRzIHRoaXMgQmVoYXZpb3JTdWJqZWN0KSBpbmplY3RlZCB0byBib3RoIGNvbXBvbmVudHNcclxuICBjdXJyZW50UGFnZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMSk7XHJcblxyXG4gIC8vIFNvbWV0aW1lIHdlIG5lZWQgdG8gY29ycmVjdCB0aGUgcGFnZSBudW1iZXIgb2YgUGFnaW5hdGlvbiBjb21wb25lbnQgd2l0aG91dCByZWZyZXNoaW5nIGdyaWQgbGlzdCBieSBBUEkgY2FsbFxyXG4gIHN1c3BlbmRDdXJyZW50UGFnZVN1YnNjcmlwdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgLyogZW5kOiBwYXNzaW5nIHRoaXMgdmFyIHRvIFBhZ2luYXRpb24gKi9cclxuXHJcbiAgcGFnZVNpemUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KGRlZmF1bHRQYWdpbmcudGFrZSk7XHJcblxyXG4gIGZpbHRlciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XHJcbiAgZmlsdGVyT3BlcmF0b3JzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SUZpbHRlck9wZXJhdG9yW10+KFtdKTtcclxuICBzZWFyY2gkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJQ29yZVBhZ2VMaXN0U2VhcmNoT2JqZWN0IHwgbnVsbD4obnVsbCk7XHJcbiAgc29ydCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElTb3J0SXRlbVtdPihbXSk7XHJcbiAgcGFnaW5hdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElQYWdpbmF0aW9uPih7IHNraXA6IDAsIHRha2U6IGRlZmF1bHRQYWdpbmcudGFrZSB9KVxyXG4gIGZvcmNlUmVsb2FkaW5nRmxhZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBxdWVyeUxpc3RSZXF1ZXN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SVF1ZXJ5TGlzdFJlcXVlc3Q+KHsgbGFuZzogJ3ZpJyB9KTtcclxuICBxdWVyeUxpc3RTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIHBhdXNlU3Vic2N0aXB0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGxpc3QhOiBhbnlbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNvcmVQYWdlTGlzdFNlcnZpY2U6IENvcmVQYWdlTGlzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvcmVQYWdlTGlzdFN0YXRlOiBDb3JlUGFnZUxpc3RTdGF0ZSxcclxuICAgIHByaXZhdGUgY29yZVBhZ2VFZGl0U2VydmljZTogQ29yZVBhZ2VFZGl0U2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgbWxzOiBNdWx0aUxhbmd1YWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgbGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZSxcclxuICAgIHByaXZhdGUgY29yZUJ1dHRvbkdyb3VwU2VydmljZTogQ29yZUJ1dHRvbkdyb3VwU2VydmljZVxyXG4gICkge1xyXG5cclxuICAgIHN1cGVyKCk7XHJcblxyXG4gICAgLy9pZiAoISEhdGhpcy5jb21wb3NpdGlvbikgdGhpcy5jb21wb3NpdGlvbiA9IEVudW1Db21wb3NpdGlvbi5OT05FXHJcbiAgICB0aGlzLmNvcmVQYWdlTGlzdEluc3RhbmNlTnVtYmVyID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICB0aGlzLmNvcmVQYWdlTGlzdFNlcnZpY2UuaW5zdGFuY2VzLnB1c2goe1xyXG4gICAgICBpbnN0YW5jZU51bWJlcjogdGhpcy5jb3JlUGFnZUxpc3RJbnN0YW5jZU51bWJlcixcclxuICAgICAgcmVsb2FkRmxhZyQ6IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpLFxyXG4gICAgICBpZCQ6IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKSxcclxuICAgICAgdGJvZHlIZWlnaHQkOiBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCksXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKCEhY2hhbmdlc1snaGVpZ2h0J10pIHtcclxuICAgICAgdGhpcy50YWJsZUhlaWdodCA9IGNoYW5nZXNbJ2hlaWdodCddLmN1cnJlbnRWYWx1ZSAtIHRoaXMubGF5b3V0U2VydmljZS5jb3JlUGFnaW5hdGlvbkhlaWdodFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gICAgaWYgKCEhdGhpcy5maXhlZFBhZ2VTaXplKSB7XHJcbiAgICAgIHRoaXMucGFnZVNpemUkLm5leHQodGhpcy5maXhlZFBhZ2VTaXplKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBzZXQgZGVmYXVsdCBzb3J0IGRpcmVjdGlvblxyXG4gICAgY29uc3QgbmV3U29ydDogSVNvcnRJdGVtW10gPSBbXTtcclxuICAgIHRoaXMuY29sdW1ucy5tYXAoYyA9PiB7XHJcbiAgICAgIG5ld1NvcnQucHVzaCh7XHJcbiAgICAgICAgZmllbGQ6IGMuZmllbGQsXHJcbiAgICAgICAgc29ydERpcmVjdGlvbjogRW51bVNvcnREaXJlY3Rpb24uTk9ORVxyXG4gICAgICB9KVxyXG4gICAgfSlcclxuICAgIHRoaXMuc29ydCQubmV4dChuZXdTb3J0KTtcclxuXHJcbiAgICAvKiBTVEFSVDogU3Vic2NyaXB0aW9ucyBmb3IgcXVlcnlMaXN0UmVxdWVzdCQgKi9cclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5tbHMubGFuZyQuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgIHRoaXMucXVlcnlMaXN0UmVxdWVzdCQubmV4dCh7XHJcbiAgICAgICAgICAuLi50aGlzLnF1ZXJ5TGlzdFJlcXVlc3QkLnZhbHVlLFxyXG4gICAgICAgICAgbGFuZzogeFxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcbiAgICApXHJcblxyXG4gICAgaWYgKCEhdGhpcy5vdXRlclBhcmFtJCkge1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLm91dGVyUGFyYW0kLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ3RoaXMub3V0ZXJQYXJhbSQgY2hhbmdlcycsIHgpO1xyXG5cclxuICAgICAgICAgIC8vIG1lcmdlIG9yIG92ZXJ3cmlyZSBjdXJyZW50IGZpbHRlclxyXG4gICAgICAgICAgY29uc3QgY3VycmVudEZpbHRlciA9IHRoaXMuZmlsdGVyJC52YWx1ZTtcclxuICAgICAgICAgIGlmICghIWN1cnJlbnRGaWx0ZXIpIHtcclxuICAgICAgICAgICAgY29uc3QgbmV3RmlsdGVyID0ge1xyXG4gICAgICAgICAgICAgIC4uLmN1cnJlbnRGaWx0ZXIsXHJcbiAgICAgICAgICAgICAgLi4ueCxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXIkLm5leHQobmV3RmlsdGVyKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyJC5uZXh0KHgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuZmlsdGVyJC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgdGhpcy5xdWVyeUxpc3RSZXF1ZXN0JC5uZXh0KHtcclxuICAgICAgICAgIC4uLnRoaXMucXVlcnlMaXN0UmVxdWVzdCQudmFsdWUsXHJcbiAgICAgICAgICBmaWx0ZXI6IHhcclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmZpbHRlck9wZXJhdG9ycyQuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgIHRoaXMucXVlcnlMaXN0UmVxdWVzdCQubmV4dCh7XHJcbiAgICAgICAgICAuLi50aGlzLnF1ZXJ5TGlzdFJlcXVlc3QkLnZhbHVlLFxyXG4gICAgICAgICAgZmlsdGVyT3BlcmF0b3JzOiB4XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgIClcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5zZWFyY2gkLnBpcGUoXHJcbiAgICAgICAgZGVib3VuY2VUaW1lKDUwMCksXHJcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKHByZXYsIGN1cnIpID0+IHtcclxuICAgICAgICAgIGxldCBjb25kaXRpb24gPSBmYWxzZTtcclxuICAgICAgICAgIGlmICghIXByZXYgfHwgISFjdXJyKSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IEpTT04uc3RyaW5naWZ5KHByZXYpID09PSBKU09OLnN0cmluZ2lmeShjdXJyKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIGNvbmRpdGlvbjtcclxuICAgICAgICB9KVxyXG4gICAgICApLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICB0aGlzLnF1ZXJ5TGlzdFJlcXVlc3QkLm5leHQoe1xyXG4gICAgICAgICAgLi4udGhpcy5xdWVyeUxpc3RSZXF1ZXN0JC52YWx1ZSxcclxuICAgICAgICAgIHNlYXJjaDogISF4Py5jdXJyZW50ID8gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh4Py5jdXJyZW50KSkgOiBudWxsXHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgIClcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5zb3J0JC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgdGhpcy5xdWVyeUxpc3RSZXF1ZXN0JC5uZXh0KHtcclxuICAgICAgICAgIC4uLkpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5xdWVyeUxpc3RSZXF1ZXN0JC52YWx1ZSkpLFxyXG4gICAgICAgICAgc29ydDogSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh4KSlcclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmNvcmVQYWdlTGlzdFN0YXRlLmlkJC5zdWJzY3JpYmUoKHg6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiY29yZVBhZ2VMaXN0U3RhdGUuaWQkIGhhcyBjaGFuZ2VkXCIpXHJcbiAgICAgICAgdGhpcy5xdWVyeUxpc3RSZXF1ZXN0JC5uZXh0KHtcclxuICAgICAgICAgIC4uLnRoaXMucXVlcnlMaXN0UmVxdWVzdCQudmFsdWUsXHJcbiAgICAgICAgICBpZDogeFxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcbiAgICApXHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMucGFnZVNpemUkLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICB0aGlzLnBhZ2luYXRpb24kLm5leHQoe1xyXG4gICAgICAgICAgLi4udGhpcy5wYWdpbmF0aW9uJC52YWx1ZSxcclxuICAgICAgICAgIHNraXA6IDAsXHJcbiAgICAgICAgICB0YWtlOiB4XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgIClcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5wYWdpbmF0aW9uJC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgdGhpcy5xdWVyeUxpc3RSZXF1ZXN0JC5uZXh0KHtcclxuICAgICAgICAgIC4uLnRoaXMucXVlcnlMaXN0UmVxdWVzdCQudmFsdWUsXHJcbiAgICAgICAgICBwYWdpbmF0aW9uOiB4XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgIClcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5jb3JlUGFnZUxpc3RTZXJ2aWNlLmluc3RhbmNlcy5maWx0ZXIoeCA9PiB4Lmluc3RhbmNlTnVtYmVyID09PSB0aGlzLmNvcmVQYWdlTGlzdEluc3RhbmNlTnVtYmVyKVswXS5yZWxvYWRGbGFnJCEuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgIHRoaXMuZm9yY2VSZWxvYWRpbmdGbGFnJC5uZXh0KHgpO1xyXG4gICAgICB9KVxyXG4gICAgKVxyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmZvcmNlUmVsb2FkaW5nRmxhZyQuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgIHRoaXMucXVlcnlMaXN0UmVxdWVzdCQubmV4dCh7XHJcbiAgICAgICAgICAuLi50aGlzLnF1ZXJ5TGlzdFJlcXVlc3QkLnZhbHVlLFxyXG4gICAgICAgICAgZm9yY2VSZWxvYWRpbmdGbGFnOiB4XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgIClcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5jdXJyZW50UGFnZSQucGlwZShcclxuICAgICAgICBmaWx0ZXIoXyA9PiAhISF0aGlzLnN1c3BlbmRDdXJyZW50UGFnZVN1YnNjcmlwdGlvbiQudmFsdWUpLFxyXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkgLy8gSU1QT1JUQU5UIVxyXG4gICAgICApXHJcbiAgICAgICAgLnN1YnNjcmliZSh4ID0+IHRoaXMucXVlcnlMaXN0UmVxdWVzdCQubmV4dCh7XHJcbiAgICAgICAgICAuLi50aGlzLnF1ZXJ5TGlzdFJlcXVlc3QkLnZhbHVlLFxyXG4gICAgICAgICAgcGFnaW5hdGlvbjoge1xyXG4gICAgICAgICAgICAuLi50aGlzLnF1ZXJ5TGlzdFJlcXVlc3QkLnZhbHVlPy5wYWdpbmF0aW9uISxcclxuICAgICAgICAgICAgc2tpcDogKHggLSAxKSAqIHRoaXMucXVlcnlMaXN0UmVxdWVzdCQudmFsdWU/LnBhZ2luYXRpb24/LnRha2UhXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSkpXHJcbiAgICApXHJcblxyXG4gICAgLyogRU5EOiBTdWJzY3JpcHRpb25zIGZvciBxdWVyeUxpc3RSZXF1ZXN0JCAqL1xyXG5cclxuICAgIC8qIFNUQVJUOiBTdWJzY3JpcHRpb24gZm9yIGxpc3QgKi9cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG5cclxuICAgICAgdGhpcy5xdWVyeUxpc3RSZXF1ZXN0JC5waXBlKFxyXG4gICAgICAgIGZpbHRlcigoeDogYW55KSA9PiAhIXggJiYgISF4LnNvcnQgJiYgISF4LnBhZ2luYXRpb24pLFxyXG4gICAgICAgIGZpbHRlcihfID0+ICF0aGlzLnBhdXNlU3Vic2N0aXB0aW9uKSxcclxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgocHJldiwgY3VycikgPT4ge1xyXG4gICAgICAgICAgY29uc3QgY29uZGl0aW9uID0gKEpTT04uc3RyaW5naWZ5KHByZXYpID09PSBKU09OLnN0cmluZ2lmeShjdXJyKSlcclxuICAgICAgICAgIHJldHVybiBjb25kaXRpb247XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgLypcclxuICAgICAgICAvKiBTVEFSVDogdXNlIHN3aXRjaE1hcCBmb3IgY2FuY2VsbGF0aW9uXHJcbiAgICAgICAgKi9cclxuICAgICAgICBzd2l0Y2hNYXAoeCA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcInN3aXRjaE1hcCB4XCIsIHgpXHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgY29uc3QgdXJsID0gdGhpcy5hcGlEZWZpbml0aW9uLnF1ZXJ5TGlzdFJlbGF0aXZlUGF0aDtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmNvcmVQYWdlTGlzdFNlcnZpY2UucXVlcnlMaXN0KHgsIHVybClcclxuICAgICAgICB9KVxyXG4gICAgICAgIC8qXHJcbiAgICAgICAgLyogRU5EOiB1c2Ugc3dpdGNoTWFwIGZvciBjYW5jZWxsYXRpb25cclxuICAgICAgICAqL1xyXG5cclxuICAgICAgKS5zdWJzY3JpYmUoKHg6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmICh4Lm9rICYmIHguc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgIGNvbnN0IGJvZHk6IElGb3JtYXRlZFJlc3BvbnNlID0geC5ib2R5XHJcbiAgICAgICAgICAvL3RoaXMucmVzcG9uc2VTZXJ2aWNlLnJlc29sdmUoYm9keSk7XHJcblxyXG4gICAgICAgICAgaWYgKGJvZHkuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlubmVyQm9keTogSVF1ZXJ5TGlzdFJlc3BvbnNlID0gYm9keS5pbm5lckJvZHk7XHJcbiAgICAgICAgICAgIGlmICghIWlubmVyQm9keSkge1xyXG5cclxuICAgICAgICAgICAgICB0aGlzLmxpc3QgPSBpbm5lckJvZHkubGlzdCE7XHJcbiAgICAgICAgICAgICAgdGhpcy5pbm5lckJvZHlDb3VudCQubmV4dChpbm5lckJvZHkuY291bnQhKTtcclxuICAgICAgICAgICAgICB0aGlzLnBhZ2VDb3VudCA9IE1hdGguY2VpbChpbm5lckJvZHkuY291bnQhIC8gdGhpcy5wYWdlU2l6ZSQudmFsdWUpO1xyXG5cclxuICAgICAgICAgICAgICAvKiBUcmlja2lseSByZXNldCBpZCQgKi9cclxuICAgICAgICAgICAgICB0aGlzLnBhdXNlU3Vic2N0aXB0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgICBpZiAoISF0aGlzLmNvcmVQYWdlTGlzdFN0YXRlLmlkJC52YWx1ZSkgdGhpcy5jb3JlUGFnZUxpc3RTdGF0ZS5pZCQubmV4dChudWxsKTtcclxuICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMucGF1c2VTdWJzY3RpcHRpb24gPSBmYWxzZSk7XHJcblxyXG4gICAgICAgICAgICAgIGlmIChpbm5lckJvZHkucGFnZSAhPT0gdGhpcy5jdXJyZW50UGFnZSQudmFsdWUpIHtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLnN1c3BlbmRDdXJyZW50UGFnZVN1YnNjcmlwdGlvbiQubmV4dCh0cnVlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2UkLm5leHQoaW5uZXJCb2R5LnBhZ2UhKVxyXG5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5saXN0ID0gW107XHJcbiAgICAgICAgICAgICAgdGhpcy5wYWdlQ291bnQgPSAwO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5saXN0ID0gW107XHJcbiAgICAgICAgICAgIHRoaXMucGFnZUNvdW50ID0gMDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy90aGlzLmFsZXJ0U2VydmljZS5lcnJvcihKU09OLnN0cmluZ2lmeShKU09OLnN0cmluZ2lmeSh4LCBudWxsLCAyKSksIGFsZXJ0T3B0aW9ucyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgICAvKiBFTkQ6IFN1YnNjcmlwdGlvbnMgZm9yIGxpc3QgKi9cclxuXHJcbiAgfVxyXG5cclxuICBvblNlYXJjaGluZyhlOiBJU2VhcmNoSXRlbVtdKTogdm9pZCB7XHJcbiAgICBjb25zdCBwcmV2ID0gISF0aGlzLnNlYXJjaCQudmFsdWU/LmN1cnJlbnQgPyBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuc2VhcmNoJC52YWx1ZT8uY3VycmVudCkpIDogbnVsbDtcclxuICAgIHRoaXMuc2VhcmNoJC5uZXh0KHtcclxuICAgICAgcHJldmlvdXM6IHByZXYhLFxyXG4gICAgICBjdXJyZW50OiBlLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICBvblJvd0NsaWNrKGU6IGFueSkge1xyXG4gICAgaWYgKCEhZS5pZCkgdGhpcy5vbkNoYW5nZShlLmlkKVxyXG4gIH1cclxuXHJcbiAgb25TZWxlY3RlZElkc0NoYW5nZShlOiBzdHJpbmdbXSB8IG51bWJlcltdKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkSWRzID0gZTtcclxuICB9XHJcblxyXG4gIG9uQ29sdW1uQ2FwdGlvbkNsaWNrKGU6IElDb3JlVGFibGVDb2x1bW5JdGVtKSB7XHJcbiAgICBjb25zdCBuZXdTb3J0OiBJU29ydEl0ZW1bXSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5zb3J0JC52YWx1ZSkpO1xyXG4gICAgbmV3U29ydC5tYXAoYyA9PiB7XHJcbiAgICAgIGlmIChjLmZpZWxkID09PSBlLmZpZWxkKSB7XHJcbiAgICAgICAgaWYgKGMuc29ydERpcmVjdGlvbiA9PT0gRW51bVNvcnREaXJlY3Rpb24uTk9ORSkge1xyXG4gICAgICAgICAgYy5zb3J0RGlyZWN0aW9uID0gRW51bVNvcnREaXJlY3Rpb24uQVNDO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoYy5zb3J0RGlyZWN0aW9uID09PSBFbnVtU29ydERpcmVjdGlvbi5BU0MpIHtcclxuICAgICAgICAgIGMuc29ydERpcmVjdGlvbiA9IEVudW1Tb3J0RGlyZWN0aW9uLkRFU0M7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGMuc29ydERpcmVjdGlvbiA9IEVudW1Tb3J0RGlyZWN0aW9uLk5PTkU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGMuc29ydERpcmVjdGlvbiA9IEVudW1Tb3J0RGlyZWN0aW9uLk5PTkVcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIHRoaXMuc29ydCQubmV4dChuZXdTb3J0KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLm1hcCh4ID0+IHg/LnVuc3Vic2NyaWJlKCkpO1xyXG5cclxuICAgIC8qIFJlbW92ZSBjdXJyZW50IGNvcmVQYWdlTGlzdEluc3RhbmNlICovXHJcbiAgICBjb25zdCB0cnlGaW5kID0gdGhpcy5jb3JlUGFnZUxpc3RTZXJ2aWNlLmluc3RhbmNlcy5maWx0ZXIoeCA9PiB4Lmluc3RhbmNlTnVtYmVyID09PSB0aGlzLmNvcmVQYWdlTGlzdEluc3RhbmNlTnVtYmVyKTtcclxuICAgIGlmICghIXRyeUZpbmQubGVuZ3RoKSB7XHJcbiAgICAgIGNvbnN0IGV4Y2x1ZGVkID0gdGhpcy5jb3JlUGFnZUxpc3RTZXJ2aWNlLmluc3RhbmNlcy5maWx0ZXIoeCA9PiB4Lmluc3RhbmNlTnVtYmVyICE9PSB0aGlzLmNvcmVQYWdlTGlzdEluc3RhbmNlTnVtYmVyKTtcclxuICAgICAgdGhpcy5jb3JlUGFnZUxpc3RTZXJ2aWNlLmluc3RhbmNlcyA9IGV4Y2x1ZGVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNvcmUtcGFnZS1saXN0LWNvbnRlbnQtY29udGFpbmVyXCIgI2NvcmVQYWdlTGlzdENvbnRlbnRDb250YWluZXI+XHJcbiAgICA8Y29yZS10YWJsZSB3aWR0aD1cIjEwMCVcIiBbaGVpZ2h0XT1cInRhYmxlSGVpZ2h0XCIgaGVhZGVySGVpZ2h0PVwiNDJweFwiIFtyb3dIZWlnaHRdPVwicm93SGVpZ2h0XCIgW3dyYXBdPVwidHJ1ZVwiXHJcbiAgICAgICAgW2NvbHVtbnNdPVwiY29sdW1uc1wiIFtkYXRhXT1cImxpc3RcIiBbc2hvd0NoZWNrYm94XT1cIiEhIWhpZGVDaGVja1wiIFt3cmFwXT1cInRydWVcIiBoZWFkZXJIZWlnaHQ9XCI2MHB4XCJcclxuICAgICAgICBbdG9vbHNdPVwiaW5saW5lVG9vbHNcIiAob25Sb3dDbGljayk9XCJvblJvd0NsaWNrKCRldmVudClcIiAob25TZWxlY3RlZElkc0NoYW5nZSk9XCJvblNlbGVjdGVkSWRzQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgIFtmcm96ZW5dPVwiZnJvemVuIHx8IDFcIiAob25TZWFyY2hpbmcpPVwib25TZWFyY2hpbmcoJGV2ZW50KVwiIChvbkNvbHVtbkNhcHRpb25DbGljayk9XCJvbkNvbHVtbkNhcHRpb25DbGljaygkZXZlbnQpXCJcclxuICAgICAgICBbY29yZVBhZ2VMaXN0SW5zdGFuY2VOdW1iZXJdPVwiY29yZVBhZ2VMaXN0SW5zdGFuY2VOdW1iZXJcIlxyXG4gICAgICAgIFtkaXNhYmxlSGlnaGxpZ2h0T25DbGlja109XCJkaXNhYmxlSGlnaGxpZ2h0T25DbGlja1wiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbY29sdW1uU2VhcmNoRGVmYXVsdE9wZW5dPVwiY29sdW1uU2VhcmNoRGVmYXVsdE9wZW5cIlxyXG4gICAgICAgIFt3cmFwXT1cIndyYXBcIlxyXG4gICAgICAgIFtoZWFkZXJXcmFwXT1cImhlYWRlcldyYXBcIlxyXG4gICAgICAgIFtoZWFkZXJGaXJzdFJvd0hlaWdodF09XCJoZWFkZXJGaXJzdFJvd0hlaWdodFwiXHJcbiAgICAgICAgPjwvY29yZS10YWJsZT5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgtZW5kIHBhZ2luYXRpb24td3JhcHBlclwiICNwYWdpbmF0aW9uQ29udGFpbmVyPlxyXG4gICAgICAgIDxjb3JlLXBhZ2luYXRpb24tZnVsbCBbaGVpZ2h0XT1cImxheW91dFNlcnZpY2UuY29yZVBhZ2luYXRpb25IZWlnaHRcIiBbY3VycmVudFBhZ2UkXT1cImN1cnJlbnRQYWdlJFwiIFtwYWdlU2l6ZSRdPVwicGFnZVNpemUkXCJcclxuICAgICAgICAgICAgW3BhZ2VDb3VudF09XCJwYWdlQ291bnRcIlxyXG4gICAgICAgICAgICBbaW5uZXJCb2R5Q291bnQkXT1cImlubmVyQm9keUNvdW50JFwiIFtwYWdpbmF0aW9uJF09XCJwYWdpbmF0aW9uJFwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxyXG4gICAgICAgICAgICBbYmFja2dyb3VuZF09XCInIzg0ODQ4NCdcIj48L2NvcmUtcGFnaW5hdGlvbi1mdWxsPlxyXG5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|
|
341
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1wYWdlLWxpc3QtY29udGVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS1wYWdlLWxpc3QtY29udGVudC9jb3JlLXBhZ2UtbGlzdC1jb250ZW50L2NvcmUtcGFnZS1saXN0LWNvbnRlbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtcGFnZS1saXN0LWNvbnRlbnQvY29yZS1wYWdlLWxpc3QtY29udGVudC9jb3JlLXBhZ2UtbGlzdC1jb250ZW50LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFvQyxTQUFTLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBTXBJLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQVNqRSxPQUFPLEVBQUUsZUFBZSxFQUFnQixZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFNOUUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFDN0csT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGdGQUFnRixDQUFDO0FBRTdILE9B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aUJBQWlCOzRCQUMxQixLQUFLLEVBQUUsSUFBSTs0QkFDWCxXQUFXLDhCQUE4Qjt5QkFDMUM7d0JBQ0QsaUJBQWlCO3FCQUNsQjsyVUFLUSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUlLLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUdDLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csdUJBQXVCO3NCQUEvQixLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFFcUMsNEJBQTRCO3NCQUF0RSxTQUFTO3VCQUFDLDhCQUE4QjtnQkFDUCxtQkFBbUI7c0JBQXBELFNBQVM7dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIEFmdGVyVmlld0luaXQsIFZpZXdDaGlsZCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlciwgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgSUNvcmVUYWJsZVRvb2xJdGVtIH0gZnJvbSAnLi4vLi4vY29yZS10YWJsZS9jb3JlLXRhYmxlLmNvbXBvbmVudCc7XHJcblxyXG5pbXBvcnQgeyBJRmlsdGVyT3BlcmF0b3IsIElQYWdpbmF0aW9uLCBJUXVlcnlMaXN0UmVxdWVzdCwgSVNlYXJjaEl0ZW0sIElTb3J0SXRlbSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvSVF1ZXJ5TGlzdFJlcXVlc3QnO1xyXG5pbXBvcnQgeyBkZWZhdWx0UGFnaW5nIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2RlZmF1bHRQYWdpbmcnO1xyXG5cclxuaW1wb3J0IHsgQ29yZVBhZ2VMaXN0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUtcGFnZS1saXN0L2NvcmUtcGFnZS1saXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb3JlUGFnZUVkaXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS1wYWdlLWVkaXQvY29yZS1wYWdlLWVkaXQuc2VydmljZSc7XHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbXVsdGktbGFuZ3VhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uLy4uL2FsZXJ0L2FsZXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbGF5b3V0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb3JlQnV0dG9uR3JvdXBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXNlcnZpY2UnO1xyXG5cclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgZnJvbUV2ZW50LCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29yZVBhZ2VMaXN0U3RhdGUgfSBmcm9tICcuLi8uLi9jb3JlLXBhZ2UtbGlzdC9jb3JlLXBhZ2UtbGlzdC5zdGF0ZSc7XHJcbmltcG9ydCB7IElGb3JtYXRlZFJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9JRm9ybWF0ZWRSZXNwb25zZSc7XHJcbmltcG9ydCB7IElRdWVyeUxpc3RSZXNwb25zZSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvSVF1ZXJ5TGlzdFJlc3BvbnNlJztcclxuaW1wb3J0IHsgRW51bVRyYW5zbGF0ZUtleSB9IGZyb20gXCJhbHBoYS1nbG9iYWwtY29uc3RhbnRzXCI7XHJcblxyXG5pbXBvcnQgeyBJQ29yZVBhZ2VMaXN0QXBpRGVmaW5pdGlvbiwgSUNvcmVQYWdlTGlzdFNlYXJjaE9iamVjdCB9IGZyb20gJy4uLy4uL2NvcmUtcGFnZS1saXN0L2NvcmUtcGFnZS1saXN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvcmVGb3JtQ29udHJvbEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLWZvcm0tY29udHJvbC1iYXNlL2NvcmUtZm9ybS1jb250cm9sLWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvcmVUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtdGFibGUvY29yZS10YWJsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlUGFnaW5hdGlvbkZ1bGxDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLXBhZ2luYXRpb24tZnVsbC9jb3JlLXBhZ2luYXRpb24tZnVsbC9jb3JlLXBhZ2luYXRpb24tZnVsbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJQ29yZVRhYmxlQ29sdW1uSXRlbSB9IGZyb20gJy4uLy4uL2NvcmUtdGFibGUvSUNvcmVUYWJsZUNvbHVtbkl0ZW0nO1xyXG5pbXBvcnQgeyBFbnVtU29ydERpcmVjdGlvbiB9IGZyb20gJy4uLy4uLy4uL2VudW0vRW51bVNvcnREaXJlY3Rpb24nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjb3JlLXBhZ2UtbGlzdC1jb250ZW50JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIENvcmVUYWJsZUNvbXBvbmVudCxcclxuICAgIENvcmVQYWdpbmF0aW9uRnVsbENvbXBvbmVudCxcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3JlLXBhZ2UtbGlzdC1jb250ZW50LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb3JlLXBhZ2UtbGlzdC1jb250ZW50LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgICAgdXNlRXhpc3Rpbmc6IENvcmVQYWdlTGlzdENvbnRlbnRDb21wb25lbnRcclxuICAgIH0sXHJcbiAgICBDb3JlUGFnZUxpc3RTdGF0ZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIENvcmVQYWdlTGlzdENvbnRlbnRDb21wb25lbnQgZXh0ZW5kcyBDb3JlRm9ybUNvbnRyb2xCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIC8qIFNUQVJUOiBTb21lIHJvdXRlZCBjb21wb25lbnRzLCBzdWNoIGFzIFN0YWZmUHJvZmlsZSwgbWF5IGJlIHJldXNlZCBhcyByZWFkb25seSBmb3Igc2Vla2luZyAqL1xyXG4gIEBJbnB1dCgpIGhlaWdodCE6IG51bWJlcjtcclxuICBASW5wdXQoKSBpc0hlaWdodEZvclRhYmxlITogYm9vbGVhbjtcclxuICAvKiBFTkQ6IFNvbWUgcm91dGVkIGNvbXBvbmVudHMsIHN1Y2ggYXMgU3RhZmZQcm9maWxlLCBtYXkgYmUgcmV1c2VkIGFzIHJlYWRvbmx5IGZvciBzZWVraW5nICovXHJcblxyXG4gICAgLyogY2hhbmdlIHRoZXNlIDIgcHJvcHMgdG8gd3JhcCBoZWFkZXIgdGV4dHMgKi9cclxuICAgIEBJbnB1dCgpIGhlYWRlcldyYXAhOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgaGVhZGVyRmlyc3RSb3dIZWlnaHQhOiBudW1iZXI7XHJcbiAgICAvKiogKi9cclxuXHJcbiAgQElucHV0KCkgcm93SGVpZ2h0ITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHdyYXAhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHRpdGxlITogRW51bVRyYW5zbGF0ZUtleTtcclxuICBASW5wdXQoKSBoYXNJZE9mU3RyaW5nVHlwZSE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgaGlkZUNoZWNrITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBhcGlEZWZpbml0aW9uITogSUNvcmVQYWdlTGlzdEFwaURlZmluaXRpb247XHJcbiAgQElucHV0KCkgY29sdW1ucyE6IElDb3JlVGFibGVDb2x1bW5JdGVtW107XHJcbiAgQElucHV0KCkgaW5saW5lVG9vbHMhOiBJQ29yZVRhYmxlVG9vbEl0ZW1bXTtcclxuICBASW5wdXQoKSBhdXRvUmVzaXplV2l0aFdpbmRvdyE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgZXh0cmFNYW51YWxPZmZzZXQhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgZGlzYWJsZUhpZ2hsaWdodE9uQ2xpY2shOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGNvbHVtblNlYXJjaERlZmF1bHRPcGVuITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBvdXRlclBhcmFtJCE6IEJlaGF2aW9yU3ViamVjdDxhbnk+O1xyXG4gIEBJbnB1dCgpIGxvYWRpbmchOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGZyb3plbiE6IG51bWJlcjtcclxuICBASW5wdXQoKSBmaXhlZFBhZ2VTaXplITogbnVtYmVyO1xyXG5cclxuICBAVmlld0NoaWxkKCdjb3JlUGFnZUxpc3RDb250ZW50Q29udGFpbmVyJykgY29yZVBhZ2VMaXN0Q29udGVudENvbnRhaW5lciE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgncGFnaW5hdGlvbkNvbnRhaW5lcicpIHBhZ2luYXRpb25Db250YWluZXIhOiBFbGVtZW50UmVmO1xyXG5cclxuICBpbm5lckJvZHlDb3VudCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMSk7XHJcblxyXG4gIHRhYmxlSGVpZ2h0ITogbnVtYmVyO1xyXG5cclxuICBwYWdpbmF0aW9uSGVpZ2h0ITogbnVtYmVyO1xyXG4gIGNvcmVQYWdlTGlzdEluc3RhbmNlTnVtYmVyITogbnVtYmVyO1xyXG5cclxuICByZXNpemVTdHJlYW0kID0gZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpO1xyXG5cclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBzZWxlY3RlZElkczogc3RyaW5nW10gfCBudW1iZXJbXSA9IFtdO1xyXG5cclxuICBpc0FkbWluOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qIHN0YXJ0OiBwYXNzaW5nIHRoaXMgdmFyIHRvIFBhZ2luYXRpb24gKi9cclxuXHJcbiAgcGFnZUNvdW50ITogbnVtYmVyO1xyXG5cclxuICAvLyBQYXNzaW5nIEJlaGF2aW9yU3ViamVjdCB0byBvdGhlciBjb21wb25lbnQgaXMgbGlrZSB1c2luZyBhIHNlcnZpY2UgKHRoYXQgaG9sZHMgdGhpcyBCZWhhdmlvclN1YmplY3QpIGluamVjdGVkIHRvIGJvdGggY29tcG9uZW50c1xyXG4gIGN1cnJlbnRQYWdlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigxKTtcclxuXHJcbiAgLy8gU29tZXRpbWUgd2UgbmVlZCB0byBjb3JyZWN0IHRoZSBwYWdlIG51bWJlciBvZiBQYWdpbmF0aW9uIGNvbXBvbmVudCB3aXRob3V0IHJlZnJlc2hpbmcgZ3JpZCBsaXN0IGJ5IEFQSSBjYWxsXHJcbiAgc3VzcGVuZEN1cnJlbnRQYWdlU3Vic2NyaXB0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICAvKiBlbmQ6IHBhc3NpbmcgdGhpcyB2YXIgdG8gUGFnaW5hdGlvbiAqL1xyXG5cclxuICBwYWdlU2l6ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oZGVmYXVsdFBhZ2luZy50YWtlKTtcclxuXHJcbiAgZmlsdGVyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcclxuICBmaWx0ZXJPcGVyYXRvcnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJRmlsdGVyT3BlcmF0b3JbXT4oW10pO1xyXG4gIHNlYXJjaCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElDb3JlUGFnZUxpc3RTZWFyY2hPYmplY3QgfCBudWxsPihudWxsKTtcclxuICBzb3J0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SVNvcnRJdGVtW10+KFtdKTtcclxuICBwYWdpbmF0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SVBhZ2luYXRpb24+KHsgc2tpcDogMCwgdGFrZTogZGVmYXVsdFBhZ2luZy50YWtlIH0pXHJcbiAgZm9yY2VSZWxvYWRpbmdGbGFnJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHF1ZXJ5TGlzdFJlcXVlc3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJUXVlcnlMaXN0UmVxdWVzdD4oeyBsYW5nOiAndmknIH0pO1xyXG4gIHF1ZXJ5TGlzdFN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgcGF1c2VTdWJzY3RpcHRpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgbGlzdCE6IGFueVtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY29yZVBhZ2VMaXN0U2VydmljZTogQ29yZVBhZ2VMaXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgY29yZVBhZ2VMaXN0U3RhdGU6IENvcmVQYWdlTGlzdFN0YXRlLFxyXG4gICAgcHJpdmF0ZSBjb3JlUGFnZUVkaXRTZXJ2aWNlOiBDb3JlUGFnZUVkaXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcclxuICAgIHB1YmxpYyBsYXlvdXRTZXJ2aWNlOiBMYXlvdXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb3JlQnV0dG9uR3JvdXBTZXJ2aWNlOiBDb3JlQnV0dG9uR3JvdXBTZXJ2aWNlXHJcbiAgKSB7XHJcblxyXG4gICAgc3VwZXIoKTtcclxuXHJcbiAgICAvL2lmICghISF0aGlzLmNvbXBvc2l0aW9uKSB0aGlzLmNvbXBvc2l0aW9uID0gRW51bUNvbXBvc2l0aW9uLk5PTkVcclxuICAgIHRoaXMuY29yZVBhZ2VMaXN0SW5zdGFuY2VOdW1iZXIgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgIHRoaXMuY29yZVBhZ2VMaXN0U2VydmljZS5pbnN0YW5jZXMucHVzaCh7XHJcbiAgICAgIGluc3RhbmNlTnVtYmVyOiB0aGlzLmNvcmVQYWdlTGlzdEluc3RhbmNlTnVtYmVyLFxyXG4gICAgICByZWxvYWRGbGFnJDogbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSksXHJcbiAgICAgIGlkJDogbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpLFxyXG4gICAgICB0Ym9keUhlaWdodCQ6IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKSxcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoISFjaGFuZ2VzWydoZWlnaHQnXSkge1xyXG4gICAgICB0aGlzLnRhYmxlSGVpZ2h0ID0gY2hhbmdlc1snaGVpZ2h0J10uY3VycmVudFZhbHVlIC0gdGhpcy5sYXlvdXRTZXJ2aWNlLmNvcmVQYWdpbmF0aW9uSGVpZ2h0XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICBpZiAoISF0aGlzLmZpeGVkUGFnZVNpemUpIHtcclxuICAgICAgdGhpcy5wYWdlU2l6ZSQubmV4dCh0aGlzLmZpeGVkUGFnZVNpemUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHNldCBkZWZhdWx0IHNvcnQgZGlyZWN0aW9uXHJcbiAgICBjb25zdCBuZXdTb3J0OiBJU29ydEl0ZW1bXSA9IFtdO1xyXG4gICAgdGhpcy5jb2x1bW5zLm1hcChjID0+IHtcclxuICAgICAgbmV3U29ydC5wdXNoKHtcclxuICAgICAgICBmaWVsZDogYy5maWVsZCxcclxuICAgICAgICBzb3J0RGlyZWN0aW9uOiBFbnVtU29ydERpcmVjdGlvbi5OT05FXHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG4gICAgdGhpcy5zb3J0JC5uZXh0KG5ld1NvcnQpO1xyXG5cclxuICAgIC8qIFNUQVJUOiBTdWJzY3JpcHRpb25zIGZvciBxdWVyeUxpc3RSZXF1ZXN0JCAqL1xyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLm1scy5sYW5nJC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgdGhpcy5xdWVyeUxpc3RSZXF1ZXN0JC5uZXh0KHtcclxuICAgICAgICAgIC4uLnRoaXMucXVlcnlMaXN0UmVxdWVzdCQudmFsdWUsXHJcbiAgICAgICAgICBsYW5nOiB4XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgIClcclxuXHJcbiAgICBpZiAoISF0aGlzLm91dGVyUGFyYW0kKSB7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMub3V0ZXJQYXJhbSQuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygndGhpcy5vdXRlclBhcmFtJCBjaGFuZ2VzJywgeCk7XHJcblxyXG4gICAgICAgICAgLy8gbWVyZ2Ugb3Igb3ZlcndyaXJlIGN1cnJlbnQgZmlsdGVyXHJcbiAgICAgICAgICBjb25zdCBjdXJyZW50RmlsdGVyID0gdGhpcy5maWx0ZXIkLnZhbHVlO1xyXG4gICAgICAgICAgaWYgKCEhY3VycmVudEZpbHRlcikge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdGaWx0ZXIgPSB7XHJcbiAgICAgICAgICAgICAgLi4uY3VycmVudEZpbHRlcixcclxuICAgICAgICAgICAgICAuLi54LFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlciQubmV4dChuZXdGaWx0ZXIpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXIkLm5leHQoeCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5maWx0ZXIkLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICB0aGlzLnF1ZXJ5TGlzdFJlcXVlc3QkLm5leHQoe1xyXG4gICAgICAgICAgLi4udGhpcy5xdWVyeUxpc3RSZXF1ZXN0JC52YWx1ZSxcclxuICAgICAgICAgIGZpbHRlcjogeFxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcbiAgICApXHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuZmlsdGVyT3BlcmF0b3JzJC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgdGhpcy5xdWVyeUxpc3RSZXF1ZXN0JC5uZXh0KHtcclxuICAgICAgICAgIC4uLnRoaXMucXVlcnlMaXN0UmVxdWVzdCQudmFsdWUsXHJcbiAgICAgICAgICBmaWx0ZXJPcGVyYXRvcnM6IHhcclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLnNlYXJjaCQucGlwZShcclxuICAgICAgICBkZWJvdW5jZVRpbWUoNTAwKSxcclxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgocHJldiwgY3VycikgPT4ge1xyXG4gICAgICAgICAgbGV0IGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgaWYgKCEhcHJldiB8fCAhIWN1cnIpIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gSlNPTi5zdHJpbmdpZnkocHJldikgPT09IEpTT04uc3RyaW5naWZ5KGN1cnIpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gY29uZGl0aW9uO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICkuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgIHRoaXMucXVlcnlMaXN0UmVxdWVzdCQubmV4dCh7XHJcbiAgICAgICAgICAuLi50aGlzLnF1ZXJ5TGlzdFJlcXVlc3QkLnZhbHVlLFxyXG4gICAgICAgICAgc2VhcmNoOiAhIXg/LmN1cnJlbnQgPyBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHg/LmN1cnJlbnQpKSA6IG51bGxcclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLnNvcnQkLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICB0aGlzLnF1ZXJ5TGlzdFJlcXVlc3QkLm5leHQoe1xyXG4gICAgICAgICAgLi4uSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLnF1ZXJ5TGlzdFJlcXVlc3QkLnZhbHVlKSksXHJcbiAgICAgICAgICBzb3J0OiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHgpKVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcbiAgICApXHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuY29yZVBhZ2VMaXN0U3RhdGUuaWQkLnN1YnNjcmliZSgoeDogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJjb3JlUGFnZUxpc3RTdGF0ZS5pZCQgaGFzIGNoYW5nZWRcIilcclxuICAgICAgICB0aGlzLnF1ZXJ5TGlzdFJlcXVlc3QkLm5leHQoe1xyXG4gICAgICAgICAgLi4udGhpcy5xdWVyeUxpc3RSZXF1ZXN0JC52YWx1ZSxcclxuICAgICAgICAgIGlkOiB4XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgIClcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5wYWdlU2l6ZSQuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgIHRoaXMucGFnaW5hdGlvbiQubmV4dCh7XHJcbiAgICAgICAgICAuLi50aGlzLnBhZ2luYXRpb24kLnZhbHVlLFxyXG4gICAgICAgICAgc2tpcDogMCxcclxuICAgICAgICAgIHRha2U6IHhcclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLnBhZ2luYXRpb24kLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICB0aGlzLnF1ZXJ5TGlzdFJlcXVlc3QkLm5leHQoe1xyXG4gICAgICAgICAgLi4udGhpcy5xdWVyeUxpc3RSZXF1ZXN0JC52YWx1ZSxcclxuICAgICAgICAgIHBhZ2luYXRpb246IHhcclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmNvcmVQYWdlTGlzdFNlcnZpY2UuaW5zdGFuY2VzLmZpbHRlcih4ID0+IHguaW5zdGFuY2VOdW1iZXIgPT09IHRoaXMuY29yZVBhZ2VMaXN0SW5zdGFuY2VOdW1iZXIpWzBdLnJlbG9hZEZsYWckIS5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgdGhpcy5mb3JjZVJlbG9hZGluZ0ZsYWckLm5leHQoeCk7XHJcbiAgICAgIH0pXHJcbiAgICApXHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuZm9yY2VSZWxvYWRpbmdGbGFnJC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgdGhpcy5xdWVyeUxpc3RSZXF1ZXN0JC5uZXh0KHtcclxuICAgICAgICAgIC4uLnRoaXMucXVlcnlMaXN0UmVxdWVzdCQudmFsdWUsXHJcbiAgICAgICAgICBmb3JjZVJlbG9hZGluZ0ZsYWc6IHhcclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlJC5waXBlKFxyXG4gICAgICAgIGZpbHRlcihfID0+ICEhIXRoaXMuc3VzcGVuZEN1cnJlbnRQYWdlU3Vic2NyaXB0aW9uJC52YWx1ZSksXHJcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSAvLyBJTVBPUlRBTlQhXHJcbiAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKHggPT4gdGhpcy5xdWVyeUxpc3RSZXF1ZXN0JC5uZXh0KHtcclxuICAgICAgICAgIC4uLnRoaXMucXVlcnlMaXN0UmVxdWVzdCQudmFsdWUsXHJcbiAgICAgICAgICBwYWdpbmF0aW9uOiB7XHJcbiAgICAgICAgICAgIC4uLnRoaXMucXVlcnlMaXN0UmVxdWVzdCQudmFsdWU/LnBhZ2luYXRpb24hLFxyXG4gICAgICAgICAgICBza2lwOiAoeCAtIDEpICogdGhpcy5xdWVyeUxpc3RSZXF1ZXN0JC52YWx1ZT8ucGFnaW5hdGlvbj8udGFrZSFcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KSlcclxuICAgIClcclxuXHJcbiAgICAvKiBFTkQ6IFN1YnNjcmlwdGlvbnMgZm9yIHF1ZXJ5TGlzdFJlcXVlc3QkICovXHJcblxyXG4gICAgLyogU1RBUlQ6IFN1YnNjcmlwdGlvbiBmb3IgbGlzdCAqL1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcblxyXG4gICAgICB0aGlzLnF1ZXJ5TGlzdFJlcXVlc3QkLnBpcGUoXHJcbiAgICAgICAgZmlsdGVyKCh4OiBhbnkpID0+ICEheCAmJiAhIXguc29ydCAmJiAhIXgucGFnaW5hdGlvbiksXHJcbiAgICAgICAgZmlsdGVyKF8gPT4gIXRoaXMucGF1c2VTdWJzY3RpcHRpb24pLFxyXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwcmV2LCBjdXJyKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBjb25kaXRpb24gPSAoSlNPTi5zdHJpbmdpZnkocHJldikgPT09IEpTT04uc3RyaW5naWZ5KGN1cnIpKVxyXG4gICAgICAgICAgcmV0dXJuIGNvbmRpdGlvbjtcclxuICAgICAgICB9KSxcclxuICAgICAgICAvKlxyXG4gICAgICAgIC8qIFNUQVJUOiB1c2Ugc3dpdGNoTWFwIGZvciBjYW5jZWxsYXRpb25cclxuICAgICAgICAqL1xyXG4gICAgICAgIHN3aXRjaE1hcCh4ID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwic3dpdGNoTWFwIHhcIiwgeClcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgICBjb25zdCB1cmwgPSB0aGlzLmFwaURlZmluaXRpb24ucXVlcnlMaXN0UmVsYXRpdmVQYXRoO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29yZVBhZ2VMaXN0U2VydmljZS5xdWVyeUxpc3QoeCwgdXJsKVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLypcclxuICAgICAgICAvKiBFTkQ6IHVzZSBzd2l0Y2hNYXAgZm9yIGNhbmNlbGxhdGlvblxyXG4gICAgICAgICovXHJcblxyXG4gICAgICApLnN1YnNjcmliZSgoeDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHgub2sgJiYgeC5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgY29uc3QgYm9keTogSUZvcm1hdGVkUmVzcG9uc2UgPSB4LmJvZHlcclxuICAgICAgICAgIC8vdGhpcy5yZXNwb25zZVNlcnZpY2UucmVzb2x2ZShib2R5KTtcclxuXHJcbiAgICAgICAgICBpZiAoYm9keS5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgY29uc3QgaW5uZXJCb2R5OiBJUXVlcnlMaXN0UmVzcG9uc2UgPSBib2R5LmlubmVyQm9keTtcclxuICAgICAgICAgICAgaWYgKCEhaW5uZXJCb2R5KSB7XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMubGlzdCA9IGlubmVyQm9keS5saXN0ITtcclxuICAgICAgICAgICAgICB0aGlzLmlubmVyQm9keUNvdW50JC5uZXh0KGlubmVyQm9keS5jb3VudCEpO1xyXG4gICAgICAgICAgICAgIHRoaXMucGFnZUNvdW50ID0gTWF0aC5jZWlsKGlubmVyQm9keS5jb3VudCEgLyB0aGlzLnBhZ2VTaXplJC52YWx1ZSk7XHJcblxyXG4gICAgICAgICAgICAgIC8qIFRyaWNraWx5IHJlc2V0IGlkJCAqL1xyXG4gICAgICAgICAgICAgIHRoaXMucGF1c2VTdWJzY3RpcHRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICAgIGlmICghIXRoaXMuY29yZVBhZ2VMaXN0U3RhdGUuaWQkLnZhbHVlKSB0aGlzLmNvcmVQYWdlTGlzdFN0YXRlLmlkJC5uZXh0KG51bGwpO1xyXG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5wYXVzZVN1YnNjdGlwdGlvbiA9IGZhbHNlKTtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKGlubmVyQm9keS5wYWdlICE9PSB0aGlzLmN1cnJlbnRQYWdlJC52YWx1ZSkge1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuc3VzcGVuZEN1cnJlbnRQYWdlU3Vic2NyaXB0aW9uJC5uZXh0KHRydWUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50UGFnZSQubmV4dChpbm5lckJvZHkucGFnZSEpXHJcblxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmxpc3QgPSBbXTtcclxuICAgICAgICAgICAgICB0aGlzLnBhZ2VDb3VudCA9IDA7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmxpc3QgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5wYWdlQ291bnQgPSAwO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAvL3RoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKEpTT04uc3RyaW5naWZ5KEpTT04uc3RyaW5naWZ5KHgsIG51bGwsIDIpKSwgYWxlcnRPcHRpb25zKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAgICAgfSlcclxuICAgIClcclxuICAgIC8qIEVORDogU3Vic2NyaXB0aW9ucyBmb3IgbGlzdCAqL1xyXG5cclxuICB9XHJcblxyXG4gIG9uU2VhcmNoaW5nKGU6IElTZWFyY2hJdGVtW10pOiB2b2lkIHtcclxuICAgIGNvbnN0IHByZXYgPSAhIXRoaXMuc2VhcmNoJC52YWx1ZT8uY3VycmVudCA/IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5zZWFyY2gkLnZhbHVlPy5jdXJyZW50KSkgOiBudWxsO1xyXG4gICAgdGhpcy5zZWFyY2gkLm5leHQoe1xyXG4gICAgICBwcmV2aW91czogcHJldiEsXHJcbiAgICAgIGN1cnJlbnQ6IGUsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICB9XHJcblxyXG4gIG9uUm93Q2xpY2soZTogYW55KSB7XHJcbiAgICBpZiAoISFlLmlkKSB0aGlzLm9uQ2hhbmdlKGUuaWQpXHJcbiAgfVxyXG5cclxuICBvblNlbGVjdGVkSWRzQ2hhbmdlKGU6IHN0cmluZ1tdIHwgbnVtYmVyW10pIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJZHMgPSBlO1xyXG4gIH1cclxuXHJcbiAgb25Db2x1bW5DYXB0aW9uQ2xpY2soZTogSUNvcmVUYWJsZUNvbHVtbkl0ZW0pIHtcclxuICAgIGNvbnN0IG5ld1NvcnQ6IElTb3J0SXRlbVtdID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLnNvcnQkLnZhbHVlKSk7XHJcbiAgICBuZXdTb3J0Lm1hcChjID0+IHtcclxuICAgICAgaWYgKGMuZmllbGQgPT09IGUuZmllbGQpIHtcclxuICAgICAgICBpZiAoYy5zb3J0RGlyZWN0aW9uID09PSBFbnVtU29ydERpcmVjdGlvbi5OT05FKSB7XHJcbiAgICAgICAgICBjLnNvcnREaXJlY3Rpb24gPSBFbnVtU29ydERpcmVjdGlvbi5BU0M7XHJcbiAgICAgICAgfSBlbHNlIGlmIChjLnNvcnREaXJlY3Rpb24gPT09IEVudW1Tb3J0RGlyZWN0aW9uLkFTQykge1xyXG4gICAgICAgICAgYy5zb3J0RGlyZWN0aW9uID0gRW51bVNvcnREaXJlY3Rpb24uREVTQztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgYy5zb3J0RGlyZWN0aW9uID0gRW51bVNvcnREaXJlY3Rpb24uTk9ORTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgYy5zb3J0RGlyZWN0aW9uID0gRW51bVNvcnREaXJlY3Rpb24uTk9ORVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgdGhpcy5zb3J0JC5uZXh0KG5ld1NvcnQpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMubWFwKHggPT4geD8udW5zdWJzY3JpYmUoKSk7XHJcblxyXG4gICAgLyogUmVtb3ZlIGN1cnJlbnQgY29yZVBhZ2VMaXN0SW5zdGFuY2UgKi9cclxuICAgIGNvbnN0IHRyeUZpbmQgPSB0aGlzLmNvcmVQYWdlTGlzdFNlcnZpY2UuaW5zdGFuY2VzLmZpbHRlcih4ID0+IHguaW5zdGFuY2VOdW1iZXIgPT09IHRoaXMuY29yZVBhZ2VMaXN0SW5zdGFuY2VOdW1iZXIpO1xyXG4gICAgaWYgKCEhdHJ5RmluZC5sZW5ndGgpIHtcclxuICAgICAgY29uc3QgZXhjbHVkZWQgPSB0aGlzLmNvcmVQYWdlTGlzdFNlcnZpY2UuaW5zdGFuY2VzLmZpbHRlcih4ID0+IHguaW5zdGFuY2VOdW1iZXIgIT09IHRoaXMuY29yZVBhZ2VMaXN0SW5zdGFuY2VOdW1iZXIpO1xyXG4gICAgICB0aGlzLmNvcmVQYWdlTGlzdFNlcnZpY2UuaW5zdGFuY2VzID0gZXhjbHVkZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY29yZS1wYWdlLWxpc3QtY29udGVudC1jb250YWluZXJcIiAjY29yZVBhZ2VMaXN0Q29udGVudENvbnRhaW5lcj5cclxuICAgIDxjb3JlLXRhYmxlIHdpZHRoPVwiMTAwJVwiIFtoZWlnaHRdPVwidGFibGVIZWlnaHRcIiBoZWFkZXJIZWlnaHQ9XCI0MnB4XCIgW3Jvd0hlaWdodF09XCJyb3dIZWlnaHRcIiBbd3JhcF09XCJ0cnVlXCJcclxuICAgICAgICBbY29sdW1uc109XCJjb2x1bW5zXCIgW2RhdGFdPVwibGlzdFwiIFtzaG93Q2hlY2tib3hdPVwiISEhaGlkZUNoZWNrXCIgW3dyYXBdPVwidHJ1ZVwiIGhlYWRlckhlaWdodD1cIjYwcHhcIlxyXG4gICAgICAgIFt0b29sc109XCJpbmxpbmVUb29sc1wiIChvblJvd0NsaWNrKT1cIm9uUm93Q2xpY2soJGV2ZW50KVwiIChvblNlbGVjdGVkSWRzQ2hhbmdlKT1cIm9uU2VsZWN0ZWRJZHNDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgW2Zyb3plbl09XCJmcm96ZW4gfHwgMVwiIChvblNlYXJjaGluZyk9XCJvblNlYXJjaGluZygkZXZlbnQpXCIgKG9uQ29sdW1uQ2FwdGlvbkNsaWNrKT1cIm9uQ29sdW1uQ2FwdGlvbkNsaWNrKCRldmVudClcIlxyXG4gICAgICAgIFtjb3JlUGFnZUxpc3RJbnN0YW5jZU51bWJlcl09XCJjb3JlUGFnZUxpc3RJbnN0YW5jZU51bWJlclwiXHJcbiAgICAgICAgW2Rpc2FibGVIaWdobGlnaHRPbkNsaWNrXT1cImRpc2FibGVIaWdobGlnaHRPbkNsaWNrXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtjb2x1bW5TZWFyY2hEZWZhdWx0T3Blbl09XCJjb2x1bW5TZWFyY2hEZWZhdWx0T3BlblwiXHJcbiAgICAgICAgW3dyYXBdPVwid3JhcFwiXHJcbiAgICAgICAgW2hlYWRlcldyYXBdPVwiaGVhZGVyV3JhcFwiXHJcbiAgICAgICAgW2hlYWRlckZpcnN0Um93SGVpZ2h0XT1cImhlYWRlckZpcnN0Um93SGVpZ2h0XCJcclxuICAgICAgICBbbGF6eUxvYWRpbmddPVwidHJ1ZVwiXHJcbiAgICAgICAgPjwvY29yZS10YWJsZT5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgtZW5kIHBhZ2luYXRpb24td3JhcHBlclwiICNwYWdpbmF0aW9uQ29udGFpbmVyPlxyXG4gICAgICAgIDxjb3JlLXBhZ2luYXRpb24tZnVsbCBbaGVpZ2h0XT1cImxheW91dFNlcnZpY2UuY29yZVBhZ2luYXRpb25IZWlnaHRcIiBbY3VycmVudFBhZ2UkXT1cImN1cnJlbnRQYWdlJFwiIFtwYWdlU2l6ZSRdPVwicGFnZVNpemUkXCJcclxuICAgICAgICAgICAgW3BhZ2VDb3VudF09XCJwYWdlQ291bnRcIlxyXG4gICAgICAgICAgICBbaW5uZXJCb2R5Q291bnQkXT1cImlubmVyQm9keUNvdW50JFwiIFtwYWdpbmF0aW9uJF09XCJwYWdpbmF0aW9uJFwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxyXG4gICAgICAgICAgICBbYmFja2dyb3VuZF09XCInIzg0ODQ4NCdcIj48L2NvcmUtcGFnaW5hdGlvbi1mdWxsPlxyXG5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|
package/esm2022/lib/app/libraries/core-permission/core-permission/core-permission.component.mjs
CHANGED
|
@@ -31,15 +31,16 @@ import * as i7 from "../../../libraries/alert/alert.service";
|
|
|
31
31
|
import * as i8 from "@angular/router";
|
|
32
32
|
import * as i9 from "../../../services/auth.service";
|
|
33
33
|
import * as i10 from "../../services/dom.service";
|
|
34
|
-
import * as i11 from "
|
|
35
|
-
import * as i12 from "@angular/
|
|
34
|
+
import * as i11 from "../../../services/grpc.service";
|
|
35
|
+
import * as i12 from "@angular/common";
|
|
36
|
+
import * as i13 from "@angular/forms";
|
|
36
37
|
export var EnumPermissionObjectType;
|
|
37
38
|
(function (EnumPermissionObjectType) {
|
|
38
39
|
EnumPermissionObjectType["USER"] = "USER";
|
|
39
40
|
EnumPermissionObjectType["USER_GROUP"] = "USER_GROUP";
|
|
40
41
|
})(EnumPermissionObjectType || (EnumPermissionObjectType = {}));
|
|
41
42
|
export class CorePermissionComponent extends BaseComponent {
|
|
42
|
-
constructor(mls, dialogService, ras, corePermissionService, appService, layoutService, alertService, router, route, authService, domService) {
|
|
43
|
+
constructor(mls, dialogService, ras, corePermissionService, appService, layoutService, alertService, router, route, authService, domService, grpcService) {
|
|
43
44
|
super(mls);
|
|
44
45
|
this.mls = mls;
|
|
45
46
|
this.dialogService = dialogService;
|
|
@@ -52,6 +53,7 @@ export class CorePermissionComponent extends BaseComponent {
|
|
|
52
53
|
this.route = route;
|
|
53
54
|
this.authService = authService;
|
|
54
55
|
this.domService = domService;
|
|
56
|
+
this.grpcService = grpcService;
|
|
55
57
|
this.loading = true;
|
|
56
58
|
this.selectedData = [];
|
|
57
59
|
this.tabHeaders = [
|
|
@@ -177,7 +179,7 @@ export class CorePermissionComponent extends BaseComponent {
|
|
|
177
179
|
this.title = EnumTranslateKey.UI_COMPONENT_TITLE_USER_GROUP_PERMISSION;
|
|
178
180
|
this.pipe = EnumCoreTablePipeType.UPPERCASE;
|
|
179
181
|
this.objectQueryListApi = api.SYS_GROUP_QUERY_LIST;
|
|
180
|
-
this.queryFunctionActionPermissionListApiEndpoint = api.
|
|
182
|
+
this.queryFunctionActionPermissionListApiEndpoint = api.SYS_GROUP_QUERY_FUNCTION_ACTION_PERMISSION_LIST_GRPC;
|
|
181
183
|
this.queryOrgPermissionListApiEndpoint = api.SYS_GROUP_QUERY_GROUP_ORG_PERMISSION_LIST;
|
|
182
184
|
this.objectListTextField = "name";
|
|
183
185
|
}
|
|
@@ -216,7 +218,14 @@ export class CorePermissionComponent extends BaseComponent {
|
|
|
216
218
|
const body = x[0].body;
|
|
217
219
|
//this.responseService.resolve(body);
|
|
218
220
|
if (body.statusCode === 200) {
|
|
219
|
-
|
|
221
|
+
let trueInnerBody = [];
|
|
222
|
+
if (this.queryFunctionActionPermissionListApiEndpoint.indexOf('/api/gRPC/') >= 0) {
|
|
223
|
+
trueInnerBody = this.grpcService.convertToCamelCase(JSON.parse(body.innerBody));
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
trueInnerBody = body.innerBody;
|
|
227
|
+
}
|
|
228
|
+
this.corePermissionService.selectedObjectActionPermissions$.next(trueInnerBody);
|
|
220
229
|
this.updateInitialActionPermissionValueJsonString(body.innerBody);
|
|
221
230
|
}
|
|
222
231
|
}
|
|
@@ -419,8 +428,8 @@ export class CorePermissionComponent extends BaseComponent {
|
|
|
419
428
|
this.corePermissionService.selectedObject$.next(null);
|
|
420
429
|
this.corePermissionService.selectedObjectActionPermissions$.next([]);
|
|
421
430
|
}
|
|
422
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CorePermissionComponent, deps: [{ token: i1.MultiLanguageService }, { token: i2.DialogService }, { token: i3.RandomAvatarService }, { token: i4.CorePermissionService }, { token: i5.AppService }, { token: i6.LayoutService }, { token: i7.AlertService }, { token: i8.Router }, { token: i8.ActivatedRoute }, { token: i9.AuthService }, { token: i10.DomService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
423
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: CorePermissionComponent, isStandalone: true, selector: "core-permission", inputs: { type: "type" }, viewQueries: [{ propertyName: "avatar", first: true, predicate: ["avatar"], descendants: true }, { propertyName: "actions", first: true, predicate: ["actions"], descendants: true }, { propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div #container class=\"core-permission-container\" [ngStyle]=\"{ height: height + 'px'}\">\r\n <core-page-header [title]=\"title\" (buttonClick)=\"onCorePageHeaderButtonClick($event)\"></core-page-header>\r\n\r\n <core-composition [left]=\"userSeeker\" [leftWidth]=\"200\" [main]=\"tabs\" [height]=\"compositionHeight\">\r\n </core-composition>\r\n\r\n <div class=\"state-tracker container container-fluid\" *ngIf=\"showStateTracker && isRootUser\">\r\n <div class=\"w-100 d-flex d-flex-between\">\r\n <span>Compare</span>\r\n <i class=\"feather-x\" (click)=\"onClickCloseState()\"></i>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n {{ initialActionPermissionValueJsonString }}\r\n </div>\r\n <div class=\"col-md-6\">\r\n {{ currentActionPermissionValueJsonString }}\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n {{ initialOrgPermissionValueJsonString }}\r\n </div>\r\n <div class=\"col-md-6\">\r\n {{ currentOrgPermissionValueJsonString }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n\r\n<ng-template #tabs>\r\n <core-tabs [headers]=\"tabHeaders\" [contents]=\"[tab1, tab2]\" [height]=\"compositionHeight\"></core-tabs>\r\n</ng-template>\r\n\r\n<ng-template #tab1>\r\n <div [ngStyle]=\"{ height: layoutService.basicSpacing + 'px' }\"></div>\r\n <core-permission-actions [loading]=\"loading\" [(ngModel)]=\"actionPermissionValue\"\r\n (ngModelChange)=\"onActionPermissionValueChange($event)\" [disabled]=\"!!!allowEdit\" [height]=\"corePermissionActionsHeight\"></core-permission-actions>\r\n</ng-template>\r\n\r\n<ng-template #userSeeker>\r\n\r\n <core-list-lazy [queryListApi]=\"objectQueryListApi\" [textField]=\"objectListTextField\" [(ngModel)]=\"objectId\"\r\n (ngModelChange)=\"onObjectIdChange($event)\" [height]=\"compositionHeight\"></core-list-lazy>\r\n\r\n\r\n</ng-template>\r\n\r\n<ng-template #tab2>\r\n <div [ngStyle]=\"{ height: layoutService.basicSpacing + 'px' }\"></div>\r\n <core-org-tree [fullWidthMode]=\"true\" [accessorMode]=\"treeAccessorMode\" [(ngModel)]=\"orgIds\" [disabled]=\"!!!allowEdit\"\r\n (itemClick)=\"onOrgTreeItemCheck($event)\" name=\"orgIds\" ngDefaultControl [height]=\"treeHeight\"></core-org-tree>\r\n</ng-template>", styles: [".core-permission-container{--z-index: 1}.core-permission-container .state-tracker{display:block;position:fixed;width:100%;height:50vh;top:0;left:0;z-index:var(--z-index);background-color:wheat}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type:
|
|
431
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CorePermissionComponent, deps: [{ token: i1.MultiLanguageService }, { token: i2.DialogService }, { token: i3.RandomAvatarService }, { token: i4.CorePermissionService }, { token: i5.AppService }, { token: i6.LayoutService }, { token: i7.AlertService }, { token: i8.Router }, { token: i8.ActivatedRoute }, { token: i9.AuthService }, { token: i10.DomService }, { token: i11.GrpcService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
432
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: CorePermissionComponent, isStandalone: true, selector: "core-permission", inputs: { type: "type" }, viewQueries: [{ propertyName: "avatar", first: true, predicate: ["avatar"], descendants: true }, { propertyName: "actions", first: true, predicate: ["actions"], descendants: true }, { propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div #container class=\"core-permission-container\" [ngStyle]=\"{ height: height + 'px'}\">\r\n <core-page-header [title]=\"title\" (buttonClick)=\"onCorePageHeaderButtonClick($event)\"></core-page-header>\r\n\r\n <core-composition [left]=\"userSeeker\" [leftWidth]=\"200\" [main]=\"tabs\" [height]=\"compositionHeight\">\r\n </core-composition>\r\n\r\n <div class=\"state-tracker container container-fluid\" *ngIf=\"showStateTracker && isRootUser\">\r\n <div class=\"w-100 d-flex d-flex-between\">\r\n <span>Compare</span>\r\n <i class=\"feather-x\" (click)=\"onClickCloseState()\"></i>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n {{ initialActionPermissionValueJsonString }}\r\n </div>\r\n <div class=\"col-md-6\">\r\n {{ currentActionPermissionValueJsonString }}\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n {{ initialOrgPermissionValueJsonString }}\r\n </div>\r\n <div class=\"col-md-6\">\r\n {{ currentOrgPermissionValueJsonString }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n\r\n<ng-template #tabs>\r\n <core-tabs [headers]=\"tabHeaders\" [contents]=\"[tab1, tab2]\" [height]=\"compositionHeight\"></core-tabs>\r\n</ng-template>\r\n\r\n<ng-template #tab1>\r\n <div [ngStyle]=\"{ height: layoutService.basicSpacing + 'px' }\"></div>\r\n <core-permission-actions [loading]=\"loading\" [(ngModel)]=\"actionPermissionValue\"\r\n (ngModelChange)=\"onActionPermissionValueChange($event)\" [disabled]=\"!!!allowEdit\" [height]=\"corePermissionActionsHeight\"></core-permission-actions>\r\n</ng-template>\r\n\r\n<ng-template #userSeeker>\r\n\r\n <core-list-lazy [queryListApi]=\"objectQueryListApi\" [textField]=\"objectListTextField\" [(ngModel)]=\"objectId\"\r\n (ngModelChange)=\"onObjectIdChange($event)\" [height]=\"compositionHeight\"></core-list-lazy>\r\n\r\n\r\n</ng-template>\r\n\r\n<ng-template #tab2>\r\n <div [ngStyle]=\"{ height: layoutService.basicSpacing + 'px' }\"></div>\r\n <core-org-tree [fullWidthMode]=\"true\" [accessorMode]=\"treeAccessorMode\" [(ngModel)]=\"orgIds\" [disabled]=\"!!!allowEdit\"\r\n (itemClick)=\"onOrgTreeItemCheck($event)\" name=\"orgIds\" ngDefaultControl [height]=\"treeHeight\"></core-org-tree>\r\n</ng-template>", styles: [".core-permission-container{--z-index: 1}.core-permission-container .state-tracker{display:block;position:fixed;width:100%;height:50vh;top:0;left:0;z-index:var(--z-index);background-color:wheat}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i12.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i12.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i13.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i13.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i13.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CoreOrgTreeComponent, selector: "core-org-tree", inputs: ["lineColor", "fullWidthMode", "accessorMode", "fullRendering", "height", "disabledLoopExpand", "showCheckInheritance"], outputs: ["itemDoubleClick", "itemClick"] }, { kind: "component", type: CoreTabsComponent, selector: "core-tabs", inputs: ["headers", "contents", "headerTools", "height", "headerLineHeight"], outputs: ["onHeaderClick", "onToolItemClick"] }, { kind: "component", type: CorePageHeaderComponent, selector: "core-page-header", inputs: ["instanceNumber", "shownItems", "title", "hideButtonGroup"], outputs: ["buttonClick"] }, { kind: "component", type: CoreCompositionComponent, selector: "core-composition", inputs: ["coreCompositionInstanceNumber", "top", "left", "leftWidth", "main", "height", "defaultResizeOff"] }, { kind: "component", type: CoreListLazyComponent, selector: "core-list-lazy", inputs: ["title", "queryListApi", "textField", "pipe", "height"] }, { kind: "component", type: CorePermissionActionsComponent, selector: "core-permission-actions", inputs: ["loading", "height"] }] }); }
|
|
424
433
|
}
|
|
425
434
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CorePermissionComponent, decorators: [{
|
|
426
435
|
type: Component,
|
|
@@ -439,7 +448,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
439
448
|
CoreConfirmDialogComponent,
|
|
440
449
|
CoreApiProgressComponent
|
|
441
450
|
], template: "<div #container class=\"core-permission-container\" [ngStyle]=\"{ height: height + 'px'}\">\r\n <core-page-header [title]=\"title\" (buttonClick)=\"onCorePageHeaderButtonClick($event)\"></core-page-header>\r\n\r\n <core-composition [left]=\"userSeeker\" [leftWidth]=\"200\" [main]=\"tabs\" [height]=\"compositionHeight\">\r\n </core-composition>\r\n\r\n <div class=\"state-tracker container container-fluid\" *ngIf=\"showStateTracker && isRootUser\">\r\n <div class=\"w-100 d-flex d-flex-between\">\r\n <span>Compare</span>\r\n <i class=\"feather-x\" (click)=\"onClickCloseState()\"></i>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n {{ initialActionPermissionValueJsonString }}\r\n </div>\r\n <div class=\"col-md-6\">\r\n {{ currentActionPermissionValueJsonString }}\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n {{ initialOrgPermissionValueJsonString }}\r\n </div>\r\n <div class=\"col-md-6\">\r\n {{ currentOrgPermissionValueJsonString }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n\r\n<ng-template #tabs>\r\n <core-tabs [headers]=\"tabHeaders\" [contents]=\"[tab1, tab2]\" [height]=\"compositionHeight\"></core-tabs>\r\n</ng-template>\r\n\r\n<ng-template #tab1>\r\n <div [ngStyle]=\"{ height: layoutService.basicSpacing + 'px' }\"></div>\r\n <core-permission-actions [loading]=\"loading\" [(ngModel)]=\"actionPermissionValue\"\r\n (ngModelChange)=\"onActionPermissionValueChange($event)\" [disabled]=\"!!!allowEdit\" [height]=\"corePermissionActionsHeight\"></core-permission-actions>\r\n</ng-template>\r\n\r\n<ng-template #userSeeker>\r\n\r\n <core-list-lazy [queryListApi]=\"objectQueryListApi\" [textField]=\"objectListTextField\" [(ngModel)]=\"objectId\"\r\n (ngModelChange)=\"onObjectIdChange($event)\" [height]=\"compositionHeight\"></core-list-lazy>\r\n\r\n\r\n</ng-template>\r\n\r\n<ng-template #tab2>\r\n <div [ngStyle]=\"{ height: layoutService.basicSpacing + 'px' }\"></div>\r\n <core-org-tree [fullWidthMode]=\"true\" [accessorMode]=\"treeAccessorMode\" [(ngModel)]=\"orgIds\" [disabled]=\"!!!allowEdit\"\r\n (itemClick)=\"onOrgTreeItemCheck($event)\" name=\"orgIds\" ngDefaultControl [height]=\"treeHeight\"></core-org-tree>\r\n</ng-template>", styles: [".core-permission-container{--z-index: 1}.core-permission-container .state-tracker{display:block;position:fixed;width:100%;height:50vh;top:0;left:0;z-index:var(--z-index);background-color:wheat}\n"] }]
|
|
442
|
-
}], ctorParameters: () => [{ type: i1.MultiLanguageService }, { type: i2.DialogService }, { type: i3.RandomAvatarService }, { type: i4.CorePermissionService }, { type: i5.AppService }, { type: i6.LayoutService }, { type: i7.AlertService }, { type: i8.Router }, { type: i8.ActivatedRoute }, { type: i9.AuthService }, { type: i10.DomService }], propDecorators: { type: [{
|
|
451
|
+
}], ctorParameters: () => [{ type: i1.MultiLanguageService }, { type: i2.DialogService }, { type: i3.RandomAvatarService }, { type: i4.CorePermissionService }, { type: i5.AppService }, { type: i6.LayoutService }, { type: i7.AlertService }, { type: i8.Router }, { type: i8.ActivatedRoute }, { type: i9.AuthService }, { type: i10.DomService }, { type: i11.GrpcService }], propDecorators: { type: [{
|
|
443
452
|
type: Input
|
|
444
453
|
}], avatar: [{
|
|
445
454
|
type: ViewChild,
|
|
@@ -451,4 +460,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
451
460
|
type: ViewChild,
|
|
452
461
|
args: ['container']
|
|
453
462
|
}] } });
|
|
454
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1wZXJtaXNzaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLXBlcm1pc3Npb24vY29yZS1wZXJtaXNzaW9uL2NvcmUtcGVybWlzc2lvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS1wZXJtaXNzaW9uL2NvcmUtcGVybWlzc2lvbi9jb3JlLXBlcm1pc3Npb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWMsS0FBSyxFQUFlLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0csT0FBTyxFQUFFLGVBQWUsRUFBYyxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHdEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxrQkFBa0IsRUFBbUIsTUFBTSx1Q0FBdUMsQ0FBQztBQUU1RixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFjNUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLDRCQUE0QixFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFDNUksT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0ZBQXNGLENBQUM7QUFDN0gsT0FBTyxFQUFFLFlBQVksRUFBRSwwQkFBMEIsRUFB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LGdDQUFnQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2RSxDQUFDOzhHQXJkVSx1QkFBdUI7a0dBQXZCLHVCQUF1Qiw0WUN6RnBDLG15RUFxRGMsNFBEbUJWLFlBQVkseU5BQ1osV0FBVyxrbkJBQ1gsb0JBQW9CLHNPQUVwQixpQkFBaUIsbUxBQ2pCLHVCQUF1Qiw2SkFDdkIsd0JBQXdCLDBLQUN4QixxQkFBcUIsNkhBR3JCLDhCQUE4Qjs7MkZBT3JCLHVCQUF1QjtrQkFyQm5DLFNBQVM7K0JBQ0UsaUJBQWlCLGNBQ2YsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxvQkFBb0I7d0JBQ3BCLDRCQUE0Qjt3QkFDNUIsaUJBQWlCO3dCQUNqQix1QkFBdUI7d0JBQ3ZCLHdCQUF3Qjt3QkFDeEIscUJBQXFCO3dCQUNyQixhQUFhO3dCQUNiLGlCQUFpQjt3QkFDakIsOEJBQThCO3dCQUM5QiwwQkFBMEI7d0JBQzFCLHdCQUF3QjtxQkFDekI7aVhBTVEsSUFBSTtzQkFBWixLQUFLO2dCQUNlLE1BQU07c0JBQTFCLFNBQVM7dUJBQUMsUUFBUTtnQkFDRyxPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVM7Z0JBQ0ksU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgaXNEZXZNb2RlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCwgemlwIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgUm91dGVyLCBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuXHJcbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vLi4vbGlicmFyaWVzL2Jhc2UtY29tcG9uZW50L2Jhc2UvYmFzZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgRW51bVRyYW5zbGF0ZUtleSB9IGZyb20gXCJhbHBoYS1nbG9iYWwtY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IEVudW1GaWx0ZXJPcGVyYXRvciwgSUZpbHRlck9wZXJhdG9yIH0gZnJvbSBcIi4uLy4uLy4uL2ludGVyZmFjZXMvSVF1ZXJ5TGlzdFJlcXVlc3RcIjtcclxuaW1wb3J0IHsgSUNvcmVQYWdlTGlzdEFwaURlZmluaXRpb24sIElDb3JlUGFnZUxpc3RFZGl0Um91dGluZyB9IGZyb20gXCIuLi8uLi8uLi9saWJyYXJpZXMvY29yZS1wYWdlLWxpc3QvY29yZS1wYWdlLWxpc3QuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IGFwaSB9IGZyb20gXCJhbHBoYS1nbG9iYWwtY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IElDb3JlVGFibGVDb2x1bW5JdGVtIH0gZnJvbSBcIi4uLy4uL2NvcmUtdGFibGUvSUNvcmVUYWJsZUNvbHVtbkl0ZW1cIjtcclxuaW1wb3J0IHsgRW51bUNvcmVUYWJsZVBpcGVUeXBlIH0gZnJvbSBcIi4uLy4uLy4uL2xpYnJhcmllcy9jb3JlLXRhYmxlL0VudW1Db3JlVGFibGVQaXBlVHlwZVwiO1xyXG5cclxuaW1wb3J0IHsgTXVsdGlMYW5ndWFnZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvbXVsdGktbGFuZ3VhZ2Uuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBSYW5kb21BdmF0YXJTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3JhbmRvbS1hdmF0YXIuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBDb3JlUGVybWlzc2lvblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUtcGVybWlzc2lvbi9jb3JlLXBlcm1pc3Npb24uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBBcHBTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL2FwcC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9saWJyYXJpZXMvYWxlcnQvYWxlcnQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRG9tU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9kb20uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL2xheW91dC5zZXJ2aWNlXCI7XHJcblxyXG5pbXBvcnQgeyBJQ29yZUxpc3RPcHRpb24gfSBmcm9tIFwiLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUtbGlzdC9jb3JlLWxpc3QvY29yZS1saXN0LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBJRm9ybWF0ZWRSZXNwb25zZSB9IGZyb20gXCIuLi8uLi8uLi9pbnRlcmZhY2VzL0lGb3JtYXRlZFJlc3BvbnNlXCI7XHJcbmltcG9ydCB7IElDb3JlQnV0dG9uVk5TIH0gZnJvbSBcIi4uLy4uLy4uL2xpYnJhcmllcy9jb3JlLWJ1dHRvbi1ncm91cC12bnMvY29yZS1idXR0b24tZ3JvdXAtdm5zL0lDb3JlQnV0dG9uVk5TXCI7XHJcbmltcG9ydCB7IENvcmVPcmdUcmVlQ29tcG9uZW50LCBFbnVtQ29yZU9yZ1RyZWVhQWNjZXNzb3JNb2RlIH0gZnJvbSBcIi4uLy4uLy4uL2xpYnJhcmllcy9jb3JlLW9yZy10cmVlL2NvcmUtb3JnLXRyZWUvY29yZS1vcmctdHJlZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgRW51bUNvcmVCdXR0b25WTlNDb2RlIH0gZnJvbSBcIi4uLy4uLy4uL2xpYnJhcmllcy9jb3JlLWJ1dHRvbi1ncm91cC12bnMvY29yZS1idXR0b24tZ3JvdXAtdm5zL0VudW1Db3JlQnV0dG9uVk5TQ29kZVwiO1xyXG5pbXBvcnQgeyBhbGVydE9wdGlvbnMsIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zIH0gZnJvbSBcIi4uLy4uLy4uL2NvbnN0YW50cy9hbGVydE9wdGlvbnNcIjtcclxuaW1wb3J0IHsgQ29yZVBlcm1pc3Npb25BY3Rpb25zQ29tcG9uZW50LCBJQ29yZUZ1bmN0aW9uQWN0aW9uIH0gZnJvbSBcIi4uLy4uLy4uL2xpYnJhcmllcy9jb3JlLXBlcm1pc3Npb24tYWN0aW9ucy9jb3JlLXBlcm1pc3Npb24tYWN0aW9ucy9jb3JlLXBlcm1pc3Npb24tYWN0aW9ucy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy9kaWFsb2cuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IENvcmVQYWdlTGlzdENvbnRlbnRDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29yZS1wYWdlLWxpc3QtY29udGVudC9jb3JlLXBhZ2UtbGlzdC1jb250ZW50L2NvcmUtcGFnZS1saXN0LWNvbnRlbnQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IENvcmVUYWJzQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NvcmUtdGFicy9jb3JlLXRhYnMvY29yZS10YWJzLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBDb3JlUGFnZUhlYWRlckNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb3JlLXBhZ2UtaGVhZGVyL2NvcmUtcGFnZS1oZWFkZXIvY29yZS1wYWdlLWhlYWRlci5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgQ29yZUNvbXBvc2l0aW9uQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NvcmUtY29tcG9zaXRpb24vY29yZS1jb21wb3NpdGlvbi9jb3JlLWNvbXBvc2l0aW9uLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBDb3JlTGlzdExhenlDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29yZS1saXN0LWxhenkvY29yZS1saXN0LWxhenkvY29yZS1saXN0LWxhenkuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tIFwiLi4vLi4vLi4vYXBwLXBpcGVzL3RyYW5zbGF0ZS5waXBlXCI7XHJcbmltcG9ydCB7IENvcmVUYWdzQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NvcmUtdGFncy9jb3JlLXRhZ3MvY29yZS10YWdzLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBDb3JlQ29uZmlybURpYWxvZ0NvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb3JlLWNvbmZpcm0tZGlhbG9nL2NvcmUtY29uZmlybS1kaWFsb2cvY29yZS1jb25maXJtLWRpYWxvZy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgQ29yZUFwaVByb2dyZXNzQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NvcmUtYXBpLXByb2dyZXNzL2NvcmUtYXBpLXByb2dyZXNzL2NvcmUtYXBpLXByb2dyZXNzLmNvbXBvbmVudFwiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJVXNlclBlcm1pc3Npb25Nb2RlbCB7XHJcbiAgdXNlcklkOiBzdHJpbmc7XHJcbiAgZnVuY3Rpb25JZDogbnVtYmVyO1xyXG4gIGFjdGlvbklkOiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVVzZXJPcmdQZXJtaXNzaW9uTW9kZWwge1xyXG4gIHVzZXJJZDogc3RyaW5nO1xyXG4gIG9yZ0lkOiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUdyb3VwUGVybWlzc2lvbk1vZGVsIHtcclxuICBncm91cElkOiBudW1iZXI7XHJcbiAgZnVuY3Rpb25JZDogbnVtYmVyO1xyXG4gIGFjdGlvbklkOiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUdyb3VwT3JnUGVybWlzc2lvbk1vZGVsIHtcclxuICBncm91cElkOiBudW1iZXI7XHJcbiAgb3JnSWQ6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGVudW0gRW51bVBlcm1pc3Npb25PYmplY3RUeXBlIHtcclxuICBVU0VSID0gJ1VTRVInLFxyXG4gIFVTRVJfR1JPVVAgPSAnVVNFUl9HUk9VUCdcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjb3JlLXBlcm1pc3Npb24nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBDb3JlT3JnVHJlZUNvbXBvbmVudCxcclxuICAgIENvcmVQYWdlTGlzdENvbnRlbnRDb21wb25lbnQsXHJcbiAgICBDb3JlVGFic0NvbXBvbmVudCxcclxuICAgIENvcmVQYWdlSGVhZGVyQ29tcG9uZW50LFxyXG4gICAgQ29yZUNvbXBvc2l0aW9uQ29tcG9uZW50LFxyXG4gICAgQ29yZUxpc3RMYXp5Q29tcG9uZW50LFxyXG4gICAgVHJhbnNsYXRlUGlwZSxcclxuICAgIENvcmVUYWdzQ29tcG9uZW50LFxyXG4gICAgQ29yZVBlcm1pc3Npb25BY3Rpb25zQ29tcG9uZW50LFxyXG4gICAgQ29yZUNvbmZpcm1EaWFsb2dDb21wb25lbnQsXHJcbiAgICBDb3JlQXBpUHJvZ3Jlc3NDb21wb25lbnRcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3JlLXBlcm1pc3Npb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvcmUtcGVybWlzc2lvbi5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlUGVybWlzc2lvbkNvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgQElucHV0KCkgdHlwZSE6IEVudW1QZXJtaXNzaW9uT2JqZWN0VHlwZTtcclxuICBAVmlld0NoaWxkKCdhdmF0YXInKSBhdmF0YXIhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoJ2FjdGlvbnMnKSBhY3Rpb25zITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCdjb250YWluZXInKSBjb250YWluZXIhOiBFbGVtZW50UmVmO1xyXG5cclxuICBoZWlnaHQhOiBudW1iZXI7XHJcbiAgdGl0bGUhOiBFbnVtVHJhbnNsYXRlS2V5XHJcbiAgbG9hZGluZzogYm9vbGVhbiA9IHRydWU7XHJcbiAgcGlwZSE6IEVudW1Db3JlVGFibGVQaXBlVHlwZTtcclxuXHJcbiAgaXNSb290VXNlciE6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XHJcbiAgY29tcG9zaXRpb25IZWlnaHQhOiBudW1iZXI7XHJcbiAgc2VsZWN0ZWREYXRhOiBhbnlbXSA9IFtdO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIG92ZXJyaWRlIG1sczogTXVsdGlMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcclxuICAgIHByaXZhdGUgcmFzOiBSYW5kb21BdmF0YXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb3JlUGVybWlzc2lvblNlcnZpY2U6IENvcmVQZXJtaXNzaW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgYXBwU2VydmljZTogQXBwU2VydmljZSxcclxuICAgIHB1YmxpYyBsYXlvdXRTZXJ2aWNlOiBMYXlvdXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkb21TZXJ2aWNlOiBEb21TZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgc3VwZXIobWxzKTtcclxuXHJcbiAgICB0aGlzLmRlZmF1bHRBdmF0YXIgPSByYXMuZ2V0KCk7XHJcbiAgICB0aGlzLmNvcmVQZXJtaXNzaW9uU2VydmljZS5pbnN0YW5jZU51bWJlciA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG5cclxuICAgIGlmICh0aGlzLnJvdXRlci51cmwuaW5jbHVkZXMoJ3VwZXJtaXNzaW9uJykpIHRoaXMudHlwZSA9IEVudW1QZXJtaXNzaW9uT2JqZWN0VHlwZS5VU0VSXHJcbiAgICBpZiAodGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKCdncm91cHBlcm1pc3Npb24nKSkgdGhpcy50eXBlID0gRW51bVBlcm1pc3Npb25PYmplY3RUeXBlLlVTRVJfR1JPVVBcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5yb3V0ZS5wYXJhbU1hcC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgY29uc3QgaWQgPSB4LmdldCgnaWQnKTtcclxuICAgICAgICBpZiAoISFpZCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gRW51bVBlcm1pc3Npb25PYmplY3RUeXBlLlVTRVIpIHtcclxuICAgICAgICAgICAgdGhpcy5vYmplY3RJZCQubmV4dChpZClcclxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID0gRW51bVBlcm1pc3Npb25PYmplY3RUeXBlLlVTRVJfR1JPVVApIHtcclxuICAgICAgICAgICAgdGhpcy5vYmplY3RJZCQubmV4dChOdW1iZXIoaWQpKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIClcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5hdXRoU2VydmljZS5kYXRhJC5zdWJzY3JpYmUoeCA9PiB0aGlzLmlzUm9vdFVzZXIgPSB4Py5pc1Jvb3QpXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICB0YWJIZWFkZXJzOiBzdHJpbmdbXSA9IFtcclxuICAgIEVudW1UcmFuc2xhdGVLZXkuVUlfVVNFUl9HUk9VUF9QRVJNSVNTSU9OX0ZVTkNUSU9OX1RBQiwgLy8gbWFrZSB1c2Ugb2YgYW4gZXhpc3Rpbmcga2V5XHJcbiAgICBFbnVtVHJhbnNsYXRlS2V5LlVJX1VTRVJfR1JPVVBfUEVSTUlTU0lPTl9PUkdfVU5JVF9UQUIsIC8vIG1ha2UgdXNlIG9mIGFuIGV4aXN0aW5nIGtleVxyXG4gIF1cclxuXHJcbiAgb2JqZWN0SWQhOiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgb2JqZWN0SWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCBudW1iZXIgfCBudWxsPihudWxsKTtcclxuICBvcmdJZHM6IG51bWJlcltdID0gW107XHJcbiAgb2JqZWN0UXVlcnlMaXN0QXBpITogYXBpO1xyXG4gIG9iamVjdExpc3RUZXh0RmllbGQhOiBzdHJpbmc7XHJcbiAgcGVuZGluZ0FjdGlvbiE6IGFueTtcclxuICBwZW5kaW5nT2JqZWN0SWQhOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsO1xyXG5cclxuICBzaG93U3RhdGVUcmFja2VyITogYm9vbGVhbjtcclxuXHJcbiAgdXNlckxpc3RUZXh0UGlwZTogRW51bUNvcmVUYWJsZVBpcGVUeXBlID0gRW51bUNvcmVUYWJsZVBpcGVUeXBlLlVQUEVSQ0FTRTtcclxuXHJcbiAgdHJlZUFjY2Vzc29yTW9kZTogRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZSA9IEVudW1Db3JlT3JnVHJlZWFBY2Nlc3Nvck1vZGUuQ0hFQ0tFRDtcclxuXHJcbiAgdXNlck9wdGlvbnM6IElDb3JlTGlzdE9wdGlvbltdID0gW11cclxuXHJcbiAgb3V0ZXJGaWx0ZXJPcGVyYXRvcnM6IElGaWx0ZXJPcGVyYXRvcltdID0gW1xyXG4gICAge1xyXG4gICAgICBmaWVsZDogJ3VzZXJJZCcsXHJcbiAgICAgIG9wZXJhdG9yOiBFbnVtRmlsdGVyT3BlcmF0b3IuRVFVQUxcclxuICAgIH1cclxuICBdXHJcblxyXG4gIGxlZnRBcGlEZWZpbml0aW9uOiBJQ29yZVBhZ2VMaXN0QXBpRGVmaW5pdGlvbiA9IHtcclxuICAgIHF1ZXJ5TGlzdFJlbGF0aXZlUGF0aDogYXBpLlNZU19VU0VSX1FVRVJZX0xJU1QsXHJcbiAgfVxyXG5cclxuICBhcGlEZWZpbml0aW9uOiBJQ29yZVBhZ2VMaXN0QXBpRGVmaW5pdGlvbiA9IHtcclxuICAgIHF1ZXJ5TGlzdFJlbGF0aXZlUGF0aDogYXBpLlNZU19VU0VSX1BFUk1JU1NJT05fUVVFUllfTElTVCxcclxuICB9XHJcblxyXG4gIGFsbG93RWRpdCE6IGJvb2xlYW47XHJcblxyXG4gIGNvbHVtbnM6IElDb3JlVGFibGVDb2x1bW5JdGVtW10gPSBbXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fQ09NTU9OX0lELFxyXG4gICAgICBmaWVsZDogJ2lkJyxcclxuICAgICAgaGlkZGVuOiB0cnVlLFxyXG4gICAgICB0eXBlOiAnbnVtYmVyJyxcclxuICAgICAgYWxpZ246ICdyaWdodCcsXHJcbiAgICAgIHdpZHRoOiAwLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9TWVNfTU9EVUxFX05BTUVDT0RFLFxyXG4gICAgICBmaWVsZDogJ21vZHVsZU5hbWVDb2RlJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHdpZHRoOiAxNTAsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX1NZU19GVU5DVElPTl9QQVRILFxyXG4gICAgICBmaWVsZDogJ3BhdGgnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgd2lkdGg6IDE1MCxcclxuICAgIH0sXHJcbiAgICAvKlxyXG4gICAge1xyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX1NZU19GVU5DVElPTl9HUk9VUF9OQU1FQ09ERSxcclxuICAgICAgZmllbGQ6ICdncm91cE5hbWVDb2RlJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHdpZHRoOiAxNTAsXHJcbiAgICB9LFxyXG4gICAgKi9cclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9TWVNfRlVOQ1RJT05fTkFNRUNPREUsXHJcbiAgICAgIGZpZWxkOiAnZnVuY3Rpb25OYW1lQ29kZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMTUwLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9TWVNfQUNUSU9OX05BTUVDT0RFLFxyXG4gICAgICBmaWVsZDogJ2FwcEFjdGlvbnMnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgaGlkZVNlYXJjaEJveDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IDEwMDAsXHJcbiAgICAgIHRlbXBsYXRlUmVmOiB0aGlzLmFjdGlvbnMsXHJcbiAgICAgIHRlbXBsYXRlUmVmQWxsb3dFZGl0T25Sb3dBY3RpdmVkOiB0cnVlXHJcbiAgICB9LFxyXG4gIF1cclxuXHJcbiAgZGVmYXVsdEF2YXRhciE6IHN0cmluZztcclxuICB0cmVlSGVpZ2h0ITogbnVtYmVyO1xyXG4gIGNvcmVQZXJtaXNzaW9uQWN0aW9uc0hlaWdodCE6IG51bWJlcjtcclxuICBkaWFsb2dJbnN0YW5jZU51bWJlciE6IG51bWJlcjtcclxuXHJcbiAgZWRpdFJvdXRlOiBJQ29yZVBhZ2VMaXN0RWRpdFJvdXRpbmcgPSB7XHJcbiAgICBhdXhpbGlhcnk6ICdwb3B1cEF1eCdcclxuICB9XHJcblxyXG4gIGFjdGlvblBlcm1pc3Npb25WYWx1ZTogSUNvcmVGdW5jdGlvbkFjdGlvbltdID0gW11cclxuICBpbml0aWFsQWN0aW9uUGVybWlzc2lvblZhbHVlSnNvblN0cmluZyE6IHN0cmluZ1xyXG4gIGN1cnJlbnRBY3Rpb25QZXJtaXNzaW9uVmFsdWVKc29uU3RyaW5nITogc3RyaW5nXHJcbiAgb3JnUGVybWlzc2lvblZhbHVlOiBudW1iZXJbXSA9IFtdXHJcbiAgaW5pdGlhbE9yZ1Blcm1pc3Npb25WYWx1ZUpzb25TdHJpbmchOiBzdHJpbmdcclxuICBjdXJyZW50T3JnUGVybWlzc2lvblZhbHVlSnNvblN0cmluZyE6IHN0cmluZ1xyXG5cclxuXHJcbiAgcXVlcnlGdW5jdGlvbkFjdGlvblBlcm1pc3Npb25MaXN0QXBpRW5kcG9pbnQhOiBzdHJpbmc7XHJcbiAgcXVlcnlPcmdQZXJtaXNzaW9uTGlzdEFwaUVuZHBvaW50ITogc3RyaW5nO1xyXG5cclxuICB1cGRhdGVJbml0aWFsQWN0aW9uUGVybWlzc2lvblZhbHVlSnNvblN0cmluZyhmdW5jdGlvbkFjdGlvbnM6IElDb3JlRnVuY3Rpb25BY3Rpb25bXSk6IHZvaWQge1xyXG4gICAgdGhpcy5pbml0aWFsQWN0aW9uUGVybWlzc2lvblZhbHVlSnNvblN0cmluZyA9IEpTT04uc3RyaW5naWZ5KHsgb2JqZWN0SWQ6IHRoaXMub2JqZWN0SWQsIGFjdGlvbnM6IGZ1bmN0aW9uQWN0aW9ucyB9KTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUluaXRpYWxPcmdQZXJtaXNzaW9uVmFsdWVKc29uU3RyaW5nKG9yZ0lkczogbnVtYmVyW10pOiB2b2lkIHtcclxuICAgIHRoaXMub3JnUGVybWlzc2lvblZhbHVlID0gb3JnSWRzO1xyXG4gICAgdGhpcy5pbml0aWFsT3JnUGVybWlzc2lvblZhbHVlSnNvblN0cmluZyA9IEpTT04uc3RyaW5naWZ5KHsgb2JqZWN0SWQ6IHRoaXMub2JqZWN0SWQsIG9yZ0lkczogb3JnSWRzIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cclxuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY29sdW1ucy5maWx0ZXIoYyA9PiBjLmZpZWxkID09PSAnYXBwQWN0aW9ucycpWzBdLnRlbXBsYXRlUmVmID0gdGhpcy5hY3Rpb25zO1xyXG5cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy5sYXlvdXRTZXJ2aWNlLmNvbnRlbnRDb250YWluZXJIZWlnaHQkLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgIHRoaXMuY29tcG9zaXRpb25IZWlnaHQgPSB4IC0gdGhpcy5sYXlvdXRTZXJ2aWNlLmNvcmVQYWdlSGVhZGVySGVpZ2h0IC0gdGhpcy5sYXlvdXRTZXJ2aWNlLmJhc2ljU3BhY2luZ1xyXG4gICAgICAgICAgdGhpcy5jb3JlUGVybWlzc2lvbkFjdGlvbnNIZWlnaHQgPSB0aGlzLmNvbXBvc2l0aW9uSGVpZ2h0IC0gdGhpcy5sYXlvdXRTZXJ2aWNlLmNvcmVUYWJzSGVhZGVyTGluZUhlaWdodCAtIHRoaXMubGF5b3V0U2VydmljZS5iYXNpY1NwYWNpbmdcclxuICAgICAgICAgIHRoaXMudHJlZUhlaWdodCA9IHggLSB0aGlzLmxheW91dFNlcnZpY2UuY29yZVBhZ2VIZWFkZXJIZWlnaHQgLSB0aGlzLmxheW91dFNlcnZpY2UuYmFzaWNTcGFjaW5nICogMiAtIHRoaXMubGF5b3V0U2VydmljZS5jb3JlVGFic0hlYWRlckxpbmVIZWlnaHRcclxuICAgICAgICB9KVxyXG4gICAgICApXHJcblxyXG4gICAgICBpZiAodGhpcy50eXBlID09PSBFbnVtUGVybWlzc2lvbk9iamVjdFR5cGUuVVNFUikge1xyXG4gICAgICAgIHRoaXMudGl0bGUgPSBFbnVtVHJhbnNsYXRlS2V5LlVJX0NPTVBPTkVOVF9USVRMRV9VU0VSX1BFUk1JU1NJT05cclxuICAgICAgICB0aGlzLnBpcGUgPSBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuTE9XRVJDQVNFXHJcbiAgICAgICAgdGhpcy5vYmplY3RRdWVyeUxpc3RBcGkgPSBhcGkuU1lTX1VTRVJfUVVFUllfTElTVFxyXG4gICAgICAgIHRoaXMucXVlcnlGdW5jdGlvbkFjdGlvblBlcm1pc3Npb25MaXN0QXBpRW5kcG9pbnQgPSBhcGkuU1lTX1VTRVJfUVVFUllfRlVOQ1RJT05fQUNUSU9OX1BFUk1JU1NJT05fTElTVFxyXG4gICAgICAgIHRoaXMucXVlcnlPcmdQZXJtaXNzaW9uTGlzdEFwaUVuZHBvaW50ID0gYXBpLlNZU19VU0VSX1FVRVJZX1VTRVJfT1JHX1BFUk1JU1NJT05fTElTVFxyXG4gICAgICAgIHRoaXMub2JqZWN0TGlzdFRleHRGaWVsZCA9IFwidXNlcm5hbWVcIlxyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gRW51bVBlcm1pc3Npb25PYmplY3RUeXBlLlVTRVJfR1JPVVApIHtcclxuICAgICAgICB0aGlzLnRpdGxlID0gRW51bVRyYW5zbGF0ZUtleS5VSV9DT01QT05FTlRfVElUTEVfVVNFUl9HUk9VUF9QRVJNSVNTSU9OXHJcbiAgICAgICAgdGhpcy5waXBlID0gRW51bUNvcmVUYWJsZVBpcGVUeXBlLlVQUEVSQ0FTRVxyXG4gICAgICAgIHRoaXMub2JqZWN0UXVlcnlMaXN0QXBpID0gYXBpLlNZU19HUk9VUF9RVUVSWV9MSVNUXHJcbiAgICAgICAgdGhpcy5xdWVyeUZ1bmN0aW9uQWN0aW9uUGVybWlzc2lvbkxpc3RBcGlFbmRwb2ludCA9IGFwaS5TWVNfR1JPVVBfUVVFUllfRlVOQ1RJT05fQUNUSU9OX1BFUk1JU1NJT05fTElTVFxyXG4gICAgICAgIHRoaXMucXVlcnlPcmdQZXJtaXNzaW9uTGlzdEFwaUVuZHBvaW50ID0gYXBpLlNZU19HUk9VUF9RVUVSWV9HUk9VUF9PUkdfUEVSTUlTU0lPTl9MSVNUXHJcbiAgICAgICAgdGhpcy5vYmplY3RMaXN0VGV4dEZpZWxkID0gXCJuYW1lXCJcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKHRoaXMubWxzLnRyYW5zKCdVSV9QRVJNSVNTSU9OX09CSkVDVF9JU19VTkRFRklORUQnLCB0aGlzLmxhbmcpLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5kaWFsb2dDb25maXJtZWQkLnBpcGUoXHJcbiAgICAgICAgICBmaWx0ZXIoeCA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiAhIXggJiYgISF4LmNvbmZpcm1lZCAmJiAhIXg/Lmluc3RhbmNlTnVtYmVyXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICkuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJ0aGlzLmRpYWxvZ1NlcnZpY2UuZGlhbG9nQ29uZmlybWVkJFwiLCB4KVxyXG4gICAgICAgICAgaWYgKCEhIXg/LmNvbmZpcm1lZCkge1xyXG4gICAgICAgICAgICB0aGlzLm9iamVjdElkID0gdGhpcy5vYmplY3RJZCQudmFsdWUhO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnJlc2V0U2VydmljZSgpXHJcblxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuXHJcblxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLmNvcmVQZXJtaXNzaW9uU2VydmljZS5zZWxlY3RlZE9iamVjdEFjdGlvblBlcm1pc3Npb25zJC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICB0aGlzLmFjdGlvblBlcm1pc3Npb25WYWx1ZSA9IHg7XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG5cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy5vYmplY3RJZCQucGlwZShcclxuICAgICAgICAgIGZpbHRlcih4ID0+ICEheCAmJiB4ICE9PSAwICYmIHggIT09ICcwJyksXHJcbiAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICAgICAgbWFwKHggPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvcmVQZXJtaXNzaW9uU2VydmljZS5zZWxlY3RlZE9iamVjdEFjdGlvblBlcm1pc3Npb25zJC5uZXh0KFtdKTtcclxuICAgICAgICAgICAgdGhpcy5vcmdJZHMgPSBbXTtcclxuICAgICAgICAgICAgcmV0dXJuIHg7XHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIHN3aXRjaE1hcChvYmplY3RJZCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgICAgIGlmICghISF0aGlzLm9iamVjdElkKSB0aGlzLm9iamVjdElkID0gb2JqZWN0SWQhO1xyXG4gICAgICAgICAgICByZXR1cm4gemlwKFtcclxuICAgICAgICAgICAgICB0aGlzLmFwcFNlcnZpY2UuZ2V0KHRoaXMucXVlcnlGdW5jdGlvbkFjdGlvblBlcm1pc3Npb25MaXN0QXBpRW5kcG9pbnQgKyAnP29iamVjdElkPScgKyBvYmplY3RJZCArIFwiJnVzZUdyb3VwSWZFbXB0eT1mYWxzZVwiKSxcclxuICAgICAgICAgICAgICB0aGlzLmFwcFNlcnZpY2UuZ2V0KHRoaXMucXVlcnlPcmdQZXJtaXNzaW9uTGlzdEFwaUVuZHBvaW50ICsgJz9vYmplY3RJZD0nICsgb2JqZWN0SWQgKyBcIiZ1c2VHcm91cElmRW1wdHk9ZmFsc2VcIildKVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICApLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgaWYgKHhbMF0ub2sgJiYgeFswXS5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICBjb25zdCBib2R5OiBJRm9ybWF0ZWRSZXNwb25zZSA9IHhbMF0uYm9keTtcclxuICAgICAgICAgICAgLy90aGlzLnJlc3BvbnNlU2VydmljZS5yZXNvbHZlKGJvZHkpO1xyXG4gICAgICAgICAgICBpZiAoYm9keS5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvcmVQZXJtaXNzaW9uU2VydmljZS5zZWxlY3RlZE9iamVjdEFjdGlvblBlcm1pc3Npb25zJC5uZXh0KGJvZHkuaW5uZXJCb2R5KTtcclxuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUluaXRpYWxBY3Rpb25QZXJtaXNzaW9uVmFsdWVKc29uU3RyaW5nKGJvZHkuaW5uZXJCb2R5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHhbMV0ub2sgJiYgeFsxXS5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICBjb25zdCBib2R5MTogSUZvcm1hdGVkUmVzcG9uc2UgPSB4WzFdLmJvZHk7XHJcbiAgICAgICAgICAgIC8vdGhpcy5yZXNwb25zZVNlcnZpY2UucmVzb2x2ZShib2R5MSk7XHJcbiAgICAgICAgICAgIGlmIChib2R5MS5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICB0aGlzLm9yZ0lkcyA9IGJvZHkxLmlubmVyQm9keTtcclxuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUluaXRpYWxPcmdQZXJtaXNzaW9uVmFsdWVKc29uU3RyaW5nKGJvZHkxLmlubmVyQm9keSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICApXHJcblxyXG4gICAgICB0aGlzLmNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS16LWluZGV4JywgdGhpcy5kb21TZXJ2aWNlLmdldE1heFpJbmRleCgpKVxyXG5cclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgLyogV2UgZG8gbm90IHVwZGF0ZSB0aGUgZ3JpZCB3aGVuIHVzZXJJZCBjaGFuZ2VzICovXHJcbiAgb25PYmplY3RJZENoYW5nZShvYmplY3RJZDogc3RyaW5nIHwgbnVtYmVyKSB7XHJcbiAgICB0aGlzLmNvcmVQZXJtaXNzaW9uU2VydmljZS5vYmplY3RJZCA9IG9iamVjdElkO1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW29iamVjdElkLnRvU3RyaW5nKCldLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUucGFyZW50IH0pXHJcbiAgfVxyXG5cclxuICBvbkNvcmVQYWdlSGVhZGVyQnV0dG9uQ2xpY2soZTogSUNvcmVCdXR0b25WTlMpIHtcclxuICAgIHN3aXRjaCAoZS5jb2RlKSB7XHJcbiAgICAgIGNhc2UgRW51bUNvcmVCdXR0b25WTlNDb2RlLkhFQURFUl9FRElUOlxyXG4gICAgICAgIGlmICghIXRoaXMub2JqZWN0SWQpIHtcclxuICAgICAgICAgIHRoaXMuYWxsb3dFZGl0ID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuaW5mbyh0aGlzLm1scy50cmFucygnVUlfVVNFUl9QRVJNSVNTSU9OX05PX1VTRVJfU0VMRUNURUQnLCB0aGlzLmxhbmcpLCBhbGVydE9wdGlvbnMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBFbnVtQ29yZUJ1dHRvblZOU0NvZGUuSEVBREVSX1VQRVJNSVNTSU9OX0RFTEVURTpcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLm9iamVjdElkKSB7XHJcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS53YXJuKHRoaXMubWxzLnRyYW5zKEVudW1UcmFuc2xhdGVLZXkuVUlfVVNFUl9QRVJNSVNTSU9OX1RPX0VESVRfUExFQVNFX1NFTEVDVF9BX1VTRVIpLCBhbGVydE9wdGlvbnMpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UudGl0bGUkLm5leHQoRW51bVRyYW5zbGF0ZUtleS5VSV9DT1JFX0RJQUxPR19TRVJWSUNFX0NPTkZJUk1BVElPTilcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLm9rQnV0dG9uVGV4dCQubmV4dChFbnVtVHJhbnNsYXRlS2V5LlVJX0NPUkVfQ09ORklSTV9ESUFMT0dfQlVUVE9OX0NPTkZJUk0pXHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5jYW5jZWxCdXR0b25UZXh0JC5uZXh0KEVudW1UcmFuc2xhdGVLZXkuVUlfQ09SRV9DT05GSVJNX0RJQUxPR19CVVRUT05fQ0FOQ0VMKVxyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uuc2hvd0NhbmNlbE9ubHkkLm5leHQoZmFsc2UpO1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuYnVzeSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5ib2R5JC5uZXh0KEVudW1UcmFuc2xhdGVLZXkuVUlfQ09SRV9ESUFMT0dfU0VSVklDRV9BUkVfWU9VX1NVUkVfVE9fREVMRVRFKTtcclxuICAgICAgICAgICAgbGV0IGxpc3REZWxldGVJZHM6IGFueVtdID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRhLmZvckVhY2goeCA9PiB7XHJcbiAgICAgICAgICAgICAgbGlzdERlbGV0ZUlkcy5wdXNoKHhbdGhpcy5jb2x1bW5zWzFdLmZpZWxkXSlcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5pbmZvcm1hdGlvbkxpbmVzJC5uZXh0KGxpc3REZWxldGVJZHMpXHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5zaG93Q29uZmlybURpYWxvZyQubmV4dCh0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRW51bUNvcmVCdXR0b25WTlNDb2RlLkhFQURFUl9TQVZFOlxyXG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT09IEVudW1QZXJtaXNzaW9uT2JqZWN0VHlwZS5VU0VSKSB7XHJcbiAgICAgICAgICBjb25zdCBhY3Rpb25SYW5nZTogSVVzZXJQZXJtaXNzaW9uTW9kZWxbXSA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5hY3Rpb25QZXJtaXNzaW9uVmFsdWUubWFwKGYgPT4ge1xyXG4gICAgICAgICAgICBmLmFsbG93ZWRBY3Rpb25JZHMubWFwKGlkID0+IHtcclxuICAgICAgICAgICAgICBhY3Rpb25SYW5nZS5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHVzZXJJZDogdGhpcy5vYmplY3RJZC50b1N0cmluZygpLFxyXG4gICAgICAgICAgICAgICAgZnVuY3Rpb25JZDogZi5mdW5jdGlvbklkLFxyXG4gICAgICAgICAgICAgICAgYWN0aW9uSWQ6IGlkXHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBjb25zdCBvcmdSYW5nZTogSVVzZXJPcmdQZXJtaXNzaW9uTW9kZWxbXSA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5vcmdJZHMubWFwKG8gPT4ge1xyXG4gICAgICAgICAgICBvcmdSYW5nZS5wdXNoKHtcclxuICAgICAgICAgICAgICB1c2VySWQ6IHRoaXMub2JqZWN0SWQudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgICBvcmdJZDogb1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIGNvbnN0IGFjdGlvblBheWxvYWQgPSB7IHVzZXJJZDogdGhpcy5vYmplY3RJZCwgcmFuZ2U6IGFjdGlvblJhbmdlIH1cclxuICAgICAgICAgIGNvbnN0IG9yZ1BheWxvYWQgPSB7IHVzZXJJZDogdGhpcy5vYmplY3RJZCwgcmFuZ2U6IG9yZ1JhbmdlIH1cclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuXHJcbiAgICAgICAgICAgIHppcChbXHJcbiAgICAgICAgICAgICAgdGhpcy5hcHBTZXJ2aWNlLnBvc3QoYXBpLlNZU19VU0VSX0ZVTkNUSU9OX0FDVElPTl9QRVJNSVNTSU9OX1VQREFURV9SQU5HRSwgYWN0aW9uUGF5bG9hZCksXHJcbiAgICAgICAgICAgICAgdGhpcy5hcHBTZXJ2aWNlLnBvc3QoYXBpLlNZU19VU0VSX09SR19QRVJNSVNTSU9OX1VQREFURV9SQU5HRSwgb3JnUGF5bG9hZClcclxuICAgICAgICAgICAgXSkuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuYWxsb3dFZGl0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgaWYgKHhbMF0ub2sgJiYgeFswXS5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYm9keTogSUZvcm1hdGVkUmVzcG9uc2UgPSB4WzBdLmJvZHk7XHJcbiAgICAgICAgICAgICAgICAvL3RoaXMucmVzcG9uc2VTZXJ2aWNlLnJlc29sdmUoYm9keSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoYm9keS5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgIC8vdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoSlNPTi5zdHJpbmdpZnkoeFswXSwgbnVsbCwgMiksIGFsZXJ0T3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmICh4WzFdLm9rICYmIHhbMV0uc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGJvZHkxOiBJRm9ybWF0ZWRSZXNwb25zZSA9IHhbMV0uYm9keTtcclxuICAgICAgICAgICAgICAgIC8vdGhpcy5yZXNwb25zZVNlcnZpY2UucmVzb2x2ZShib2R5MSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoYm9keTEuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICAgICAgICAgICAgICAvL3RoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKEpTT04uc3RyaW5naWZ5KHhbMF0sIG51bGwsIDIpLCBhbGVydE9wdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIClcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gRW51bVBlcm1pc3Npb25PYmplY3RUeXBlLlVTRVJfR1JPVVApIHtcclxuICAgICAgICAgIGNvbnN0IGFjdGlvblJhbmdlOiBJR3JvdXBQZXJtaXNzaW9uTW9kZWxbXSA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5hY3Rpb25QZXJtaXNzaW9uVmFsdWUubWFwKGYgPT4ge1xyXG4gICAgICAgICAgICBmLmFsbG93ZWRBY3Rpb25JZHMubWFwKGlkID0+IHtcclxuICAgICAgICAgICAgICBhY3Rpb25SYW5nZS5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGdyb3VwSWQ6IE51bWJlcih0aGlzLm9iamVjdElkKSxcclxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uSWQ6IGYuZnVuY3Rpb25JZCxcclxuICAgICAgICAgICAgICAgIGFjdGlvbklkOiBpZFxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgY29uc3Qgb3JnUmFuZ2U6IElHcm91cE9yZ1Blcm1pc3Npb25Nb2RlbFtdID0gW107XHJcbiAgICAgICAgICB0aGlzLm9yZ0lkcy5tYXAobyA9PiB7XHJcbiAgICAgICAgICAgIG9yZ1JhbmdlLnB1c2goe1xyXG4gICAgICAgICAgICAgIGdyb3VwSWQ6IE51bWJlcih0aGlzLm9iamVjdElkKSxcclxuICAgICAgICAgICAgICBvcmdJZDogb1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIGNvbnN0IGFjdGlvblBheWxvYWQgPSB7IGdyb3VwSWQ6IHRoaXMub2JqZWN0SWQsIHJhbmdlOiBhY3Rpb25SYW5nZSB9XHJcbiAgICAgICAgICBjb25zdCBvcmdQYXlsb2FkID0geyBncm91cElkOiB0aGlzLm9iamVjdElkLCByYW5nZTogb3JnUmFuZ2UgfVxyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG5cclxuICAgICAgICAgICAgemlwKFtcclxuICAgICAgICAgICAgICB0aGlzLmFwcFNlcnZpY2UucG9zdChhcGkuU1lTX0dST1VQX0ZVTkNUSU9OX0FDVElPTl9QRVJNSVNTSU9OX1VQREFURV9SQU5HRSwgYWN0aW9uUGF5bG9hZCksXHJcbiAgICAgICAgICAgICAgdGhpcy5hcHBTZXJ2aWNlLnBvc3QoYXBpLlNZU19HUk9VUF9PUkdfUEVSTUlTU0lPTl9VUERBVEVfUkFOR0UsIG9yZ1BheWxvYWQpXHJcbiAgICAgICAgICAgIF0pLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmFsbG93RWRpdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIGlmICh4WzBdLm9rICYmIHhbMF0uc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGJvZHk6IElGb3JtYXRlZFJlc3BvbnNlID0geFswXS5ib2R5O1xyXG4gICAgICAgICAgICAgICAgLy90aGlzLnJlc3BvbnNlU2VydmljZS5yZXNvbHZlKGJvZHkpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGJvZHkuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICAgICAgICAgICAgICAvL3RoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKEpTT04uc3RyaW5naWZ5KHhbMF0sIG51bGwsIDIpLCBhbGVydE9wdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAoeFsxXS5vayAmJiB4WzFdLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBib2R5MTogSUZvcm1hdGVkUmVzcG9uc2UgPSB4WzFdLmJvZHk7XHJcbiAgICAgICAgICAgICAgICAvL3RoaXMucmVzcG9uc2VTZXJ2aWNlLnJlc29sdmUoYm9keTEpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGJvZHkxLnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICAgICAgICAgICAgLy90aGlzLmFsZXJ0U2VydmljZS5lcnJvcihKU09OLnN0cmluZ2lmeSh4WzBdLCBudWxsLCAyKSwgYWxlcnRPcHRpb25zKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQWN0aW9uUGVybWlzc2lvblZhbHVlQ2hhbmdlKGU6IElDb3JlRnVuY3Rpb25BY3Rpb25bXSk6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coXCJvbkFjdGlvblBlcm1pc3Npb25WYWx1ZUNoYW5nZVwiLCBlKTtcclxuICB9XHJcblxyXG4gIG9uT3JnVHJlZUl0ZW1DaGVjayhlOiBhbnkpIHtcclxuICAgIGlmICghISF0aGlzLmFsbG93RWRpdCkge1xyXG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5pbmZvKHRoaXMubWxzLnRyYW5zKCdVSV9VU0VSX1BFUk1JU1NJT05fVE9fRURJVF9QTEVBU0VfU0VMRUNUX0FfVVNFUl9BTkRfQ0xJQ0tfVEhFX1BFTkNJTCcsIHRoaXMubGFuZyksIGFsZXJ0T3B0aW9ucyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrQ2xvc2VTdGF0ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd1N0YXRlVHJhY2tlciA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgY2FuRGVhY3RpdmF0ZSgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgYm9vbGVhbiB7XHJcbiAgICB0aGlzLmN1cnJlbnRBY3Rpb25QZXJtaXNzaW9uVmFsdWVKc29uU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkodGhpcy5hY3Rpb25QZXJtaXNzaW9uVmFsdWUpO1xyXG4gICAgY29uc3QgY29uZGl0aW9uMSA9IHRoaXMuY3VycmVudEFjdGlvblBlcm1pc3Npb25WYWx1ZUpzb25TdHJpbmcgPT09IHRoaXMuaW5pdGlhbEFjdGlvblBlcm1pc3Npb25WYWx1ZUpzb25TdHJpbmc7XHJcbiAgICB0aGlzLmN1cnJlbnRPcmdQZXJtaXNzaW9uVmFsdWVKc29uU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkodGhpcy5vcmdQZXJtaXNzaW9uVmFsdWUpO1xyXG4gICAgY29uc3QgY29uZGl0aW9uMiA9IHRoaXMuY3VycmVudE9yZ1Blcm1pc3Npb25WYWx1ZUpzb25TdHJpbmcgPT09IHRoaXMuaW5pdGlhbE9yZ1Blcm1pc3Npb25WYWx1ZUpzb25TdHJpbmc7XHJcbiAgICBjb25zdCBjb25kaXRpb24gPSBjb25kaXRpb24xICYmIGNvbmRpdGlvbjI7XHJcblxyXG4gICAgcmV0dXJuIHRydWU7IC8vIFRPIERPXHJcblxyXG4gICAgaWYgKGNvbmRpdGlvbikge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICB0aGlzLnBlbmRpbmdBY3Rpb24gPSAnQ0hBTkdFU19XSUxMX0JFX0xPU1QnO1xyXG4gICAgICB0aGlzLmRpYWxvZ0luc3RhbmNlTnVtYmVyID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgIHRoaXMuc2hvd1N0YXRlVHJhY2tlciA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuYnVzeSA9IHRydWU7XHJcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5kaWFsb2dDb25maXJtZWQkLm5leHQoe1xyXG4gICAgICAgIGNvbmZpcm1lZDogZmFsc2UsXHJcbiAgICAgICAgaW5zdGFuY2VOdW1iZXI6IHRoaXMuZGlhbG9nSW5zdGFuY2VOdW1iZXJcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dDb25maXJtRGlhbG9nJC5uZXh0KHRydWUpO1xyXG4gICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UudGl0bGUkLm5leHQoRW51bVRyYW5zbGF0ZUtleS5VSV9DT1JFX0NPTkZJUk1fRElBTE9HX1RJVExFKTtcclxuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmJvZHkkLm5leHQoRW51bVRyYW5zbGF0ZUtleS5VSV9DT1JFX0NPTkZJUk1fRElBTE9HX0JPRFlfQ0hBTkdFU19XSUxMX0JFX0xPU1QpO1xyXG4gICAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uub2tCdXR0b25UZXh0JC5uZXh0KEVudW1UcmFuc2xhdGVLZXkuVUlfQ09SRV9DT05GSVJNX0RJQUxPR19CVVRUT05fQ09ORklSTSk7XHJcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5jYW5jZWxCdXR0b25UZXh0JC5uZXh0KEVudW1UcmFuc2xhdGVLZXkuVUlfQ09SRV9DT05GSVJNX0RJQUxPR19CVVRUT05fR09fQkFDS19UT19FRElUX0ZPUk0pO1xyXG4gICAgICBjb25zdCBvYnNlcnZhYmxlID0gdGhpcy5kaWFsb2dTZXJ2aWNlLmNhbkRlYWN0aXZhdGUkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgICByZXR1cm4gb2JzZXJ2YWJsZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLm1hcCh4ID0+IHg/LnVuc3Vic2NyaWJlKCkpXHJcbiAgICB0aGlzLmNvcmVQZXJtaXNzaW9uU2VydmljZS5pbnN0YW5jZU51bWJlciA9IG51bGw7XHJcbiAgICB0aGlzLmNvcmVQZXJtaXNzaW9uU2VydmljZS5zZWxlY3RlZE9iamVjdCQubmV4dChudWxsKTtcclxuICAgIHRoaXMuY29yZVBlcm1pc3Npb25TZXJ2aWNlLnNlbGVjdGVkT2JqZWN0QWN0aW9uUGVybWlzc2lvbnMkLm5leHQoW10pO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiAjY29udGFpbmVyIGNsYXNzPVwiY29yZS1wZXJtaXNzaW9uLWNvbnRhaW5lclwiIFtuZ1N0eWxlXT1cInsgaGVpZ2h0OiBoZWlnaHQgKyAncHgnfVwiPlxyXG4gIDxjb3JlLXBhZ2UtaGVhZGVyIFt0aXRsZV09XCJ0aXRsZVwiIChidXR0b25DbGljayk9XCJvbkNvcmVQYWdlSGVhZGVyQnV0dG9uQ2xpY2soJGV2ZW50KVwiPjwvY29yZS1wYWdlLWhlYWRlcj5cclxuXHJcbiAgPGNvcmUtY29tcG9zaXRpb24gW2xlZnRdPVwidXNlclNlZWtlclwiIFtsZWZ0V2lkdGhdPVwiMjAwXCIgW21haW5dPVwidGFic1wiIFtoZWlnaHRdPVwiY29tcG9zaXRpb25IZWlnaHRcIj5cclxuICA8L2NvcmUtY29tcG9zaXRpb24+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJzdGF0ZS10cmFja2VyIGNvbnRhaW5lciBjb250YWluZXItZmx1aWRcIiAqbmdJZj1cInNob3dTdGF0ZVRyYWNrZXIgJiYgaXNSb290VXNlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInctMTAwIGQtZmxleCBkLWZsZXgtYmV0d2VlblwiPlxyXG4gICAgICA8c3Bhbj5Db21wYXJlPC9zcGFuPlxyXG4gICAgICA8aSBjbGFzcz1cImZlYXRoZXIteFwiIChjbGljayk9XCJvbkNsaWNrQ2xvc2VTdGF0ZSgpXCI+PC9pPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgIHt7IGluaXRpYWxBY3Rpb25QZXJtaXNzaW9uVmFsdWVKc29uU3RyaW5nIH19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICB7eyBjdXJyZW50QWN0aW9uUGVybWlzc2lvblZhbHVlSnNvblN0cmluZyB9fVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICB7eyBpbml0aWFsT3JnUGVybWlzc2lvblZhbHVlSnNvblN0cmluZyB9fVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAge3sgY3VycmVudE9yZ1Blcm1pc3Npb25WYWx1ZUpzb25TdHJpbmcgfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbjwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICN0YWJzPlxyXG4gIDxjb3JlLXRhYnMgW2hlYWRlcnNdPVwidGFiSGVhZGVyc1wiIFtjb250ZW50c109XCJbdGFiMSwgdGFiMl1cIiBbaGVpZ2h0XT1cImNvbXBvc2l0aW9uSGVpZ2h0XCI+PC9jb3JlLXRhYnM+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3RhYjE+XHJcbiAgPGRpdiBbbmdTdHlsZV09XCJ7IGhlaWdodDogbGF5b3V0U2VydmljZS5iYXNpY1NwYWNpbmcgKyAncHgnIH1cIj48L2Rpdj5cclxuICA8Y29yZS1wZXJtaXNzaW9uLWFjdGlvbnMgW2xvYWRpbmddPVwibG9hZGluZ1wiIFsobmdNb2RlbCldPVwiYWN0aW9uUGVybWlzc2lvblZhbHVlXCJcclxuICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQWN0aW9uUGVybWlzc2lvblZhbHVlQ2hhbmdlKCRldmVudClcIiBbZGlzYWJsZWRdPVwiISEhYWxsb3dFZGl0XCIgW2hlaWdodF09XCJjb3JlUGVybWlzc2lvbkFjdGlvbnNIZWlnaHRcIj48L2NvcmUtcGVybWlzc2lvbi1hY3Rpb25zPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICN1c2VyU2Vla2VyPlxyXG5cclxuICA8Y29yZS1saXN0LWxhenkgW3F1ZXJ5TGlzdEFwaV09XCJvYmplY3RRdWVyeUxpc3RBcGlcIiBbdGV4dEZpZWxkXT1cIm9iamVjdExpc3RUZXh0RmllbGRcIiBbKG5nTW9kZWwpXT1cIm9iamVjdElkXCJcclxuICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uT2JqZWN0SWRDaGFuZ2UoJGV2ZW50KVwiIFtoZWlnaHRdPVwiY29tcG9zaXRpb25IZWlnaHRcIj48L2NvcmUtbGlzdC1sYXp5PlxyXG5cclxuXHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3RhYjI+XHJcbiAgPGRpdiBbbmdTdHlsZV09XCJ7IGhlaWdodDogbGF5b3V0U2VydmljZS5iYXNpY1NwYWNpbmcgKyAncHgnIH1cIj48L2Rpdj5cclxuICA8Y29yZS1vcmctdHJlZSBbZnVsbFdpZHRoTW9kZV09XCJ0cnVlXCIgW2FjY2Vzc29yTW9kZV09XCJ0cmVlQWNjZXNzb3JNb2RlXCIgWyhuZ01vZGVsKV09XCJvcmdJZHNcIiBbZGlzYWJsZWRdPVwiISEhYWxsb3dFZGl0XCJcclxuICAgIChpdGVtQ2xpY2spPVwib25PcmdUcmVlSXRlbUNoZWNrKCRldmVudClcIiBuYW1lPVwib3JnSWRzXCIgbmdEZWZhdWx0Q29udHJvbCBbaGVpZ2h0XT1cInRyZWVIZWlnaHRcIj48L2NvcmUtb3JnLXRyZWU+XHJcbjwvbmctdGVtcGxhdGU+Il19
|
|
463
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1wZXJtaXNzaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLXBlcm1pc3Npb24vY29yZS1wZXJtaXNzaW9uL2NvcmUtcGVybWlzc2lvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS1wZXJtaXNzaW9uL2NvcmUtcGVybWlzc2lvbi9jb3JlLXBlcm1pc3Npb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWMsS0FBSyxFQUFlLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0csT0FBTyxFQUFFLGVBQWUsRUFBYyxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHdEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxrQkFBa0IsRUFBbUIsTUFBTSx1Q0FBdUMsQ0FBQztBQUU1RixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFjNUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLDRCQUE0QixFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFDNUksT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0ZBQXNGLENBQUM7QUFDN0gsT0FBTyxFQUFFLFlBQVksRUFBRSwwQkFBMEIsRUFB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RWxlbWVudFJlZiwgSW5wdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIGlzRGV2TW9kZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbWFwLCBzd2l0Y2hNYXAsIHppcCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IFJvdXRlciwgQWN0aXZhdGVkUm91dGUgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcblxyXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uLy4uL2xpYnJhcmllcy9iYXNlLWNvbXBvbmVudC9iYXNlL2Jhc2UuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEVudW1UcmFuc2xhdGVLZXkgfSBmcm9tIFwiYWxwaGEtZ2xvYmFsLWNvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBFbnVtRmlsdGVyT3BlcmF0b3IsIElGaWx0ZXJPcGVyYXRvciB9IGZyb20gXCIuLi8uLi8uLi9pbnRlcmZhY2VzL0lRdWVyeUxpc3RSZXF1ZXN0XCI7XHJcbmltcG9ydCB7IElDb3JlUGFnZUxpc3RBcGlEZWZpbml0aW9uLCBJQ29yZVBhZ2VMaXN0RWRpdFJvdXRpbmcgfSBmcm9tIFwiLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUtcGFnZS1saXN0L2NvcmUtcGFnZS1saXN0LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBhcGkgfSBmcm9tIFwiYWxwaGEtZ2xvYmFsLWNvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBJQ29yZVRhYmxlQ29sdW1uSXRlbSB9IGZyb20gXCIuLi8uLi9jb3JlLXRhYmxlL0lDb3JlVGFibGVDb2x1bW5JdGVtXCI7XHJcbmltcG9ydCB7IEVudW1Db3JlVGFibGVQaXBlVHlwZSB9IGZyb20gXCIuLi8uLi8uLi9saWJyYXJpZXMvY29yZS10YWJsZS9FbnVtQ29yZVRhYmxlUGlwZVR5cGVcIjtcclxuXHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL211bHRpLWxhbmd1YWdlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgUmFuZG9tQXZhdGFyU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy9yYW5kb20tYXZhdGFyLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQ29yZVBlcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL2xpYnJhcmllcy9jb3JlLXBlcm1pc3Npb24vY29yZS1wZXJtaXNzaW9uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQXBwU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy9hcHAuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vbGlicmFyaWVzL2FsZXJ0L2FsZXJ0LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IERvbVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvZG9tLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTGF5b3V0U2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy9sYXlvdXQuc2VydmljZVwiO1xyXG5cclxuaW1wb3J0IHsgSUNvcmVMaXN0T3B0aW9uIH0gZnJvbSBcIi4uLy4uLy4uL2xpYnJhcmllcy9jb3JlLWxpc3QvY29yZS1saXN0L2NvcmUtbGlzdC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgSUZvcm1hdGVkUmVzcG9uc2UgfSBmcm9tIFwiLi4vLi4vLi4vaW50ZXJmYWNlcy9JRm9ybWF0ZWRSZXNwb25zZVwiO1xyXG5pbXBvcnQgeyBJQ29yZUJ1dHRvblZOUyB9IGZyb20gXCIuLi8uLi8uLi9saWJyYXJpZXMvY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9JQ29yZUJ1dHRvblZOU1wiO1xyXG5pbXBvcnQgeyBDb3JlT3JnVHJlZUNvbXBvbmVudCwgRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZSB9IGZyb20gXCIuLi8uLi8uLi9saWJyYXJpZXMvY29yZS1vcmctdHJlZS9jb3JlLW9yZy10cmVlL2NvcmUtb3JnLXRyZWUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEVudW1Db3JlQnV0dG9uVk5TQ29kZSB9IGZyb20gXCIuLi8uLi8uLi9saWJyYXJpZXMvY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9FbnVtQ29yZUJ1dHRvblZOU0NvZGVcIjtcclxuaW1wb3J0IHsgYWxlcnRPcHRpb25zLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucyB9IGZyb20gXCIuLi8uLi8uLi9jb25zdGFudHMvYWxlcnRPcHRpb25zXCI7XHJcbmltcG9ydCB7IENvcmVQZXJtaXNzaW9uQWN0aW9uc0NvbXBvbmVudCwgSUNvcmVGdW5jdGlvbkFjdGlvbiB9IGZyb20gXCIuLi8uLi8uLi9saWJyYXJpZXMvY29yZS1wZXJtaXNzaW9uLWFjdGlvbnMvY29yZS1wZXJtaXNzaW9uLWFjdGlvbnMvY29yZS1wZXJtaXNzaW9uLWFjdGlvbnMuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvZGlhbG9nLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBDb3JlUGFnZUxpc3RDb250ZW50Q29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NvcmUtcGFnZS1saXN0LWNvbnRlbnQvY29yZS1wYWdlLWxpc3QtY29udGVudC9jb3JlLXBhZ2UtbGlzdC1jb250ZW50LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBDb3JlVGFic0NvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb3JlLXRhYnMvY29yZS10YWJzL2NvcmUtdGFicy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgQ29yZVBhZ2VIZWFkZXJDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29yZS1wYWdlLWhlYWRlci9jb3JlLXBhZ2UtaGVhZGVyL2NvcmUtcGFnZS1oZWFkZXIuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IENvcmVDb21wb3NpdGlvbkNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb3JlLWNvbXBvc2l0aW9uL2NvcmUtY29tcG9zaXRpb24vY29yZS1jb21wb3NpdGlvbi5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgQ29yZUxpc3RMYXp5Q29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NvcmUtbGlzdC1sYXp5L2NvcmUtbGlzdC1sYXp5L2NvcmUtbGlzdC1sYXp5LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSBcIi4uLy4uLy4uL2FwcC1waXBlcy90cmFuc2xhdGUucGlwZVwiO1xyXG5pbXBvcnQgeyBDb3JlVGFnc0NvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb3JlLXRhZ3MvY29yZS10YWdzL2NvcmUtdGFncy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgQ29yZUNvbmZpcm1EaWFsb2dDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29yZS1jb25maXJtLWRpYWxvZy9jb3JlLWNvbmZpcm0tZGlhbG9nL2NvcmUtY29uZmlybS1kaWFsb2cuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IENvcmVBcGlQcm9ncmVzc0NvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb3JlLWFwaS1wcm9ncmVzcy9jb3JlLWFwaS1wcm9ncmVzcy9jb3JlLWFwaS1wcm9ncmVzcy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgR3JwY1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvZ3JwYy5zZXJ2aWNlXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElVc2VyUGVybWlzc2lvbk1vZGVsIHtcclxuICB1c2VySWQ6IHN0cmluZztcclxuICBmdW5jdGlvbklkOiBudW1iZXI7XHJcbiAgYWN0aW9uSWQ6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJVXNlck9yZ1Blcm1pc3Npb25Nb2RlbCB7XHJcbiAgdXNlcklkOiBzdHJpbmc7XHJcbiAgb3JnSWQ6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJR3JvdXBQZXJtaXNzaW9uTW9kZWwge1xyXG4gIGdyb3VwSWQ6IG51bWJlcjtcclxuICBmdW5jdGlvbklkOiBudW1iZXI7XHJcbiAgYWN0aW9uSWQ6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJR3JvdXBPcmdQZXJtaXNzaW9uTW9kZWwge1xyXG4gIGdyb3VwSWQ6IG51bWJlcjtcclxuICBvcmdJZDogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBFbnVtUGVybWlzc2lvbk9iamVjdFR5cGUge1xyXG4gIFVTRVIgPSAnVVNFUicsXHJcbiAgVVNFUl9HUk9VUCA9ICdVU0VSX0dST1VQJ1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvcmUtcGVybWlzc2lvbicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIENvcmVPcmdUcmVlQ29tcG9uZW50LFxyXG4gICAgQ29yZVBhZ2VMaXN0Q29udGVudENvbXBvbmVudCxcclxuICAgIENvcmVUYWJzQ29tcG9uZW50LFxyXG4gICAgQ29yZVBhZ2VIZWFkZXJDb21wb25lbnQsXHJcbiAgICBDb3JlQ29tcG9zaXRpb25Db21wb25lbnQsXHJcbiAgICBDb3JlTGlzdExhenlDb21wb25lbnQsXHJcbiAgICBUcmFuc2xhdGVQaXBlLFxyXG4gICAgQ29yZVRhZ3NDb21wb25lbnQsXHJcbiAgICBDb3JlUGVybWlzc2lvbkFjdGlvbnNDb21wb25lbnQsXHJcbiAgICBDb3JlQ29uZmlybURpYWxvZ0NvbXBvbmVudCxcclxuICAgIENvcmVBcGlQcm9ncmVzc0NvbXBvbmVudFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvcmUtcGVybWlzc2lvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29yZS1wZXJtaXNzaW9uLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIENvcmVQZXJtaXNzaW9uQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG5cclxuICBASW5wdXQoKSB0eXBlITogRW51bVBlcm1pc3Npb25PYmplY3RUeXBlO1xyXG4gIEBWaWV3Q2hpbGQoJ2F2YXRhcicpIGF2YXRhciE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZCgnYWN0aW9ucycpIGFjdGlvbnMhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicpIGNvbnRhaW5lciE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGhlaWdodCE6IG51bWJlcjtcclxuICB0aXRsZSE6IEVudW1UcmFuc2xhdGVLZXlcclxuICBsb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICBwaXBlITogRW51bUNvcmVUYWJsZVBpcGVUeXBlO1xyXG5cclxuICBpc1Jvb3RVc2VyITogYm9vbGVhbiB8IHVuZGVmaW5lZDtcclxuICBjb21wb3NpdGlvbkhlaWdodCE6IG51bWJlcjtcclxuICBzZWxlY3RlZERhdGE6IGFueVtdID0gW107XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgbWxzOiBNdWx0aUxhbmd1YWdlU2VydmljZSxcclxuICAgIHB1YmxpYyBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByYXM6IFJhbmRvbUF2YXRhclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvcmVQZXJtaXNzaW9uU2VydmljZTogQ29yZVBlcm1pc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhcHBTZXJ2aWNlOiBBcHBTZXJ2aWNlLFxyXG4gICAgcHVibGljIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRvbVNlcnZpY2U6IERvbVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGdycGNTZXJ2aWNlOiBHcnBjU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIobWxzKTtcclxuXHJcbiAgICB0aGlzLmRlZmF1bHRBdmF0YXIgPSByYXMuZ2V0KCk7XHJcbiAgICB0aGlzLmNvcmVQZXJtaXNzaW9uU2VydmljZS5pbnN0YW5jZU51bWJlciA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG5cclxuICAgIGlmICh0aGlzLnJvdXRlci51cmwuaW5jbHVkZXMoJ3VwZXJtaXNzaW9uJykpIHRoaXMudHlwZSA9IEVudW1QZXJtaXNzaW9uT2JqZWN0VHlwZS5VU0VSXHJcbiAgICBpZiAodGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKCdncm91cHBlcm1pc3Npb24nKSkgdGhpcy50eXBlID0gRW51bVBlcm1pc3Npb25PYmplY3RUeXBlLlVTRVJfR1JPVVBcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5yb3V0ZS5wYXJhbU1hcC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgY29uc3QgaWQgPSB4LmdldCgnaWQnKTtcclxuICAgICAgICBpZiAoISFpZCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gRW51bVBlcm1pc3Npb25PYmplY3RUeXBlLlVTRVIpIHtcclxuICAgICAgICAgICAgdGhpcy5vYmplY3RJZCQubmV4dChpZClcclxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID0gRW51bVBlcm1pc3Npb25PYmplY3RUeXBlLlVTRVJfR1JPVVApIHtcclxuICAgICAgICAgICAgdGhpcy5vYmplY3RJZCQubmV4dChOdW1iZXIoaWQpKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIClcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5hdXRoU2VydmljZS5kYXRhJC5zdWJzY3JpYmUoeCA9PiB0aGlzLmlzUm9vdFVzZXIgPSB4Py5pc1Jvb3QpXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICB0YWJIZWFkZXJzOiBzdHJpbmdbXSA9IFtcclxuICAgIEVudW1UcmFuc2xhdGVLZXkuVUlfVVNFUl9HUk9VUF9QRVJNSVNTSU9OX0ZVTkNUSU9OX1RBQiwgLy8gbWFrZSB1c2Ugb2YgYW4gZXhpc3Rpbmcga2V5XHJcbiAgICBFbnVtVHJhbnNsYXRlS2V5LlVJX1VTRVJfR1JPVVBfUEVSTUlTU0lPTl9PUkdfVU5JVF9UQUIsIC8vIG1ha2UgdXNlIG9mIGFuIGV4aXN0aW5nIGtleVxyXG4gIF1cclxuXHJcbiAgb2JqZWN0SWQhOiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgb2JqZWN0SWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCBudW1iZXIgfCBudWxsPihudWxsKTtcclxuICBvcmdJZHM6IG51bWJlcltdID0gW107XHJcbiAgb2JqZWN0UXVlcnlMaXN0QXBpITogYXBpO1xyXG4gIG9iamVjdExpc3RUZXh0RmllbGQhOiBzdHJpbmc7XHJcbiAgcGVuZGluZ0FjdGlvbiE6IGFueTtcclxuICBwZW5kaW5nT2JqZWN0SWQhOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsO1xyXG5cclxuICBzaG93U3RhdGVUcmFja2VyITogYm9vbGVhbjtcclxuXHJcbiAgdXNlckxpc3RUZXh0UGlwZTogRW51bUNvcmVUYWJsZVBpcGVUeXBlID0gRW51bUNvcmVUYWJsZVBpcGVUeXBlLlVQUEVSQ0FTRTtcclxuXHJcbiAgdHJlZUFjY2Vzc29yTW9kZTogRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZSA9IEVudW1Db3JlT3JnVHJlZWFBY2Nlc3Nvck1vZGUuQ0hFQ0tFRDtcclxuXHJcbiAgdXNlck9wdGlvbnM6IElDb3JlTGlzdE9wdGlvbltdID0gW11cclxuXHJcbiAgb3V0ZXJGaWx0ZXJPcGVyYXRvcnM6IElGaWx0ZXJPcGVyYXRvcltdID0gW1xyXG4gICAge1xyXG4gICAgICBmaWVsZDogJ3VzZXJJZCcsXHJcbiAgICAgIG9wZXJhdG9yOiBFbnVtRmlsdGVyT3BlcmF0b3IuRVFVQUxcclxuICAgIH1cclxuICBdXHJcblxyXG4gIGxlZnRBcGlEZWZpbml0aW9uOiBJQ29yZVBhZ2VMaXN0QXBpRGVmaW5pdGlvbiA9IHtcclxuICAgIHF1ZXJ5TGlzdFJlbGF0aXZlUGF0aDogYXBpLlNZU19VU0VSX1FVRVJZX0xJU1QsXHJcbiAgfVxyXG5cclxuICBhcGlEZWZpbml0aW9uOiBJQ29yZVBhZ2VMaXN0QXBpRGVmaW5pdGlvbiA9IHtcclxuICAgIHF1ZXJ5TGlzdFJlbGF0aXZlUGF0aDogYXBpLlNZU19VU0VSX1BFUk1JU1NJT05fUVVFUllfTElTVCxcclxuICB9XHJcblxyXG4gIGFsbG93RWRpdCE6IGJvb2xlYW47XHJcblxyXG4gIGNvbHVtbnM6IElDb3JlVGFibGVDb2x1bW5JdGVtW10gPSBbXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fQ09NTU9OX0lELFxyXG4gICAgICBmaWVsZDogJ2lkJyxcclxuICAgICAgaGlkZGVuOiB0cnVlLFxyXG4gICAgICB0eXBlOiAnbnVtYmVyJyxcclxuICAgICAgYWxpZ246ICdyaWdodCcsXHJcbiAgICAgIHdpZHRoOiAwLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9TWVNfTU9EVUxFX05BTUVDT0RFLFxyXG4gICAgICBmaWVsZDogJ21vZHVsZU5hbWVDb2RlJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHdpZHRoOiAxNTAsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX1NZU19GVU5DVElPTl9QQVRILFxyXG4gICAgICBmaWVsZDogJ3BhdGgnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgd2lkdGg6IDE1MCxcclxuICAgIH0sXHJcbiAgICAvKlxyXG4gICAge1xyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX1NZU19GVU5DVElPTl9HUk9VUF9OQU1FQ09ERSxcclxuICAgICAgZmllbGQ6ICdncm91cE5hbWVDb2RlJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHdpZHRoOiAxNTAsXHJcbiAgICB9LFxyXG4gICAgKi9cclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9TWVNfRlVOQ1RJT05fTkFNRUNPREUsXHJcbiAgICAgIGZpZWxkOiAnZnVuY3Rpb25OYW1lQ29kZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMTUwLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9TWVNfQUNUSU9OX05BTUVDT0RFLFxyXG4gICAgICBmaWVsZDogJ2FwcEFjdGlvbnMnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgaGlkZVNlYXJjaEJveDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IDEwMDAsXHJcbiAgICAgIHRlbXBsYXRlUmVmOiB0aGlzLmFjdGlvbnMsXHJcbiAgICAgIHRlbXBsYXRlUmVmQWxsb3dFZGl0T25Sb3dBY3RpdmVkOiB0cnVlXHJcbiAgICB9LFxyXG4gIF1cclxuXHJcbiAgZGVmYXVsdEF2YXRhciE6IHN0cmluZztcclxuICB0cmVlSGVpZ2h0ITogbnVtYmVyO1xyXG4gIGNvcmVQZXJtaXNzaW9uQWN0aW9uc0hlaWdodCE6IG51bWJlcjtcclxuICBkaWFsb2dJbnN0YW5jZU51bWJlciE6IG51bWJlcjtcclxuXHJcbiAgZWRpdFJvdXRlOiBJQ29yZVBhZ2VMaXN0RWRpdFJvdXRpbmcgPSB7XHJcbiAgICBhdXhpbGlhcnk6ICdwb3B1cEF1eCdcclxuICB9XHJcblxyXG4gIGFjdGlvblBlcm1pc3Npb25WYWx1ZTogSUNvcmVGdW5jdGlvbkFjdGlvbltdID0gW11cclxuICBpbml0aWFsQWN0aW9uUGVybWlzc2lvblZhbHVlSnNvblN0cmluZyE6IHN0cmluZ1xyXG4gIGN1cnJlbnRBY3Rpb25QZXJtaXNzaW9uVmFsdWVKc29uU3RyaW5nITogc3RyaW5nXHJcbiAgb3JnUGVybWlzc2lvblZhbHVlOiBudW1iZXJbXSA9IFtdXHJcbiAgaW5pdGlhbE9yZ1Blcm1pc3Npb25WYWx1ZUpzb25TdHJpbmchOiBzdHJpbmdcclxuICBjdXJyZW50T3JnUGVybWlzc2lvblZhbHVlSnNvblN0cmluZyE6IHN0cmluZ1xyXG5cclxuXHJcbiAgcXVlcnlGdW5jdGlvbkFjdGlvblBlcm1pc3Npb25MaXN0QXBpRW5kcG9pbnQhOiBzdHJpbmc7XHJcbiAgcXVlcnlPcmdQZXJtaXNzaW9uTGlzdEFwaUVuZHBvaW50ITogc3RyaW5nO1xyXG5cclxuICB1cGRhdGVJbml0aWFsQWN0aW9uUGVybWlzc2lvblZhbHVlSnNvblN0cmluZyhmdW5jdGlvbkFjdGlvbnM6IElDb3JlRnVuY3Rpb25BY3Rpb25bXSk6IHZvaWQge1xyXG4gICAgdGhpcy5pbml0aWFsQWN0aW9uUGVybWlzc2lvblZhbHVlSnNvblN0cmluZyA9IEpTT04uc3RyaW5naWZ5KHsgb2JqZWN0SWQ6IHRoaXMub2JqZWN0SWQsIGFjdGlvbnM6IGZ1bmN0aW9uQWN0aW9ucyB9KTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUluaXRpYWxPcmdQZXJtaXNzaW9uVmFsdWVKc29uU3RyaW5nKG9yZ0lkczogbnVtYmVyW10pOiB2b2lkIHtcclxuICAgIHRoaXMub3JnUGVybWlzc2lvblZhbHVlID0gb3JnSWRzO1xyXG4gICAgdGhpcy5pbml0aWFsT3JnUGVybWlzc2lvblZhbHVlSnNvblN0cmluZyA9IEpTT04uc3RyaW5naWZ5KHsgb2JqZWN0SWQ6IHRoaXMub2JqZWN0SWQsIG9yZ0lkczogb3JnSWRzIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cclxuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY29sdW1ucy5maWx0ZXIoYyA9PiBjLmZpZWxkID09PSAnYXBwQWN0aW9ucycpWzBdLnRlbXBsYXRlUmVmID0gdGhpcy5hY3Rpb25zO1xyXG5cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy5sYXlvdXRTZXJ2aWNlLmNvbnRlbnRDb250YWluZXJIZWlnaHQkLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgIHRoaXMuY29tcG9zaXRpb25IZWlnaHQgPSB4IC0gdGhpcy5sYXlvdXRTZXJ2aWNlLmNvcmVQYWdlSGVhZGVySGVpZ2h0IC0gdGhpcy5sYXlvdXRTZXJ2aWNlLmJhc2ljU3BhY2luZ1xyXG4gICAgICAgICAgdGhpcy5jb3JlUGVybWlzc2lvbkFjdGlvbnNIZWlnaHQgPSB0aGlzLmNvbXBvc2l0aW9uSGVpZ2h0IC0gdGhpcy5sYXlvdXRTZXJ2aWNlLmNvcmVUYWJzSGVhZGVyTGluZUhlaWdodCAtIHRoaXMubGF5b3V0U2VydmljZS5iYXNpY1NwYWNpbmdcclxuICAgICAgICAgIHRoaXMudHJlZUhlaWdodCA9IHggLSB0aGlzLmxheW91dFNlcnZpY2UuY29yZVBhZ2VIZWFkZXJIZWlnaHQgLSB0aGlzLmxheW91dFNlcnZpY2UuYmFzaWNTcGFjaW5nICogMiAtIHRoaXMubGF5b3V0U2VydmljZS5jb3JlVGFic0hlYWRlckxpbmVIZWlnaHRcclxuICAgICAgICB9KVxyXG4gICAgICApXHJcblxyXG4gICAgICBpZiAodGhpcy50eXBlID09PSBFbnVtUGVybWlzc2lvbk9iamVjdFR5cGUuVVNFUikge1xyXG4gICAgICAgIHRoaXMudGl0bGUgPSBFbnVtVHJhbnNsYXRlS2V5LlVJX0NPTVBPTkVOVF9USVRMRV9VU0VSX1BFUk1JU1NJT05cclxuICAgICAgICB0aGlzLnBpcGUgPSBFbnVtQ29yZVRhYmxlUGlwZVR5cGUuTE9XRVJDQVNFXHJcbiAgICAgICAgdGhpcy5vYmplY3RRdWVyeUxpc3RBcGkgPSBhcGkuU1lTX1VTRVJfUVVFUllfTElTVFxyXG4gICAgICAgIHRoaXMucXVlcnlGdW5jdGlvbkFjdGlvblBlcm1pc3Npb25MaXN0QXBpRW5kcG9pbnQgPSBhcGkuU1lTX1VTRVJfUVVFUllfRlVOQ1RJT05fQUNUSU9OX1BFUk1JU1NJT05fTElTVFxyXG4gICAgICAgIHRoaXMucXVlcnlPcmdQZXJtaXNzaW9uTGlzdEFwaUVuZHBvaW50ID0gYXBpLlNZU19VU0VSX1FVRVJZX1VTRVJfT1JHX1BFUk1JU1NJT05fTElTVFxyXG4gICAgICAgIHRoaXMub2JqZWN0TGlzdFRleHRGaWVsZCA9IFwidXNlcm5hbWVcIlxyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gRW51bVBlcm1pc3Npb25PYmplY3RUeXBlLlVTRVJfR1JPVVApIHtcclxuICAgICAgICB0aGlzLnRpdGxlID0gRW51bVRyYW5zbGF0ZUtleS5VSV9DT01QT05FTlRfVElUTEVfVVNFUl9HUk9VUF9QRVJNSVNTSU9OXHJcbiAgICAgICAgdGhpcy5waXBlID0gRW51bUNvcmVUYWJsZVBpcGVUeXBlLlVQUEVSQ0FTRVxyXG4gICAgICAgIHRoaXMub2JqZWN0UXVlcnlMaXN0QXBpID0gYXBpLlNZU19HUk9VUF9RVUVSWV9MSVNUXHJcbiAgICAgICAgdGhpcy5xdWVyeUZ1bmN0aW9uQWN0aW9uUGVybWlzc2lvbkxpc3RBcGlFbmRwb2ludCA9IGFwaS5TWVNfR1JPVVBfUVVFUllfRlVOQ1RJT05fQUNUSU9OX1BFUk1JU1NJT05fTElTVF9HUlBDXHJcbiAgICAgICAgdGhpcy5xdWVyeU9yZ1Blcm1pc3Npb25MaXN0QXBpRW5kcG9pbnQgPSBhcGkuU1lTX0dST1VQX1FVRVJZX0dST1VQX09SR19QRVJNSVNTSU9OX0xJU1RcclxuICAgICAgICB0aGlzLm9iamVjdExpc3RUZXh0RmllbGQgPSBcIm5hbWVcIlxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IodGhpcy5tbHMudHJhbnMoJ1VJX1BFUk1JU1NJT05fT0JKRUNUX0lTX1VOREVGSU5FRCcsIHRoaXMubGFuZyksIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmRpYWxvZ0NvbmZpcm1lZCQucGlwZShcclxuICAgICAgICAgIGZpbHRlcih4ID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuICEheCAmJiAhIXguY29uZmlybWVkICYmICEheD8uaW5zdGFuY2VOdW1iZXJcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKS5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcInRoaXMuZGlhbG9nU2VydmljZS5kaWFsb2dDb25maXJtZWQkXCIsIHgpXHJcbiAgICAgICAgICBpZiAoISEheD8uY29uZmlybWVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMub2JqZWN0SWQgPSB0aGlzLm9iamVjdElkJC52YWx1ZSE7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UucmVzZXRTZXJ2aWNlKClcclxuXHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG5cclxuXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMuY29yZVBlcm1pc3Npb25TZXJ2aWNlLnNlbGVjdGVkT2JqZWN0QWN0aW9uUGVybWlzc2lvbnMkLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgIHRoaXMuYWN0aW9uUGVybWlzc2lvblZhbHVlID0geDtcclxuICAgICAgICB9KVxyXG4gICAgICApXHJcblxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLm9iamVjdElkJC5waXBlKFxyXG4gICAgICAgICAgZmlsdGVyKHggPT4gISF4ICYmIHggIT09IDAgJiYgeCAhPT0gJzAnKSxcclxuICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgICAgICBtYXAoeCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29yZVBlcm1pc3Npb25TZXJ2aWNlLnNlbGVjdGVkT2JqZWN0QWN0aW9uUGVybWlzc2lvbnMkLm5leHQoW10pO1xyXG4gICAgICAgICAgICB0aGlzLm9yZ0lkcyA9IFtdO1xyXG4gICAgICAgICAgICByZXR1cm4geDtcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgc3dpdGNoTWFwKG9iamVjdElkID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgaWYgKCEhIXRoaXMub2JqZWN0SWQpIHRoaXMub2JqZWN0SWQgPSBvYmplY3RJZCE7XHJcbiAgICAgICAgICAgIHJldHVybiB6aXAoW1xyXG4gICAgICAgICAgICAgIHRoaXMuYXBwU2VydmljZS5nZXQodGhpcy5xdWVyeUZ1bmN0aW9uQWN0aW9uUGVybWlzc2lvbkxpc3RBcGlFbmRwb2ludCArICc/b2JqZWN0SWQ9JyArIG9iamVjdElkICsgXCImdXNlR3JvdXBJZkVtcHR5PWZhbHNlXCIpLFxyXG4gICAgICAgICAgICAgIHRoaXMuYXBwU2VydmljZS5nZXQodGhpcy5xdWVyeU9yZ1Blcm1pc3Npb25MaXN0QXBpRW5kcG9pbnQgKyAnP29iamVjdElkPScgKyBvYmplY3RJZCArIFwiJnVzZUdyb3VwSWZFbXB0eT1mYWxzZVwiKV0pXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICkuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICBpZiAoeFswXS5vayAmJiB4WzBdLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGJvZHk6IElGb3JtYXRlZFJlc3BvbnNlID0geFswXS5ib2R5O1xyXG4gICAgICAgICAgICAvL3RoaXMucmVzcG9uc2VTZXJ2aWNlLnJlc29sdmUoYm9keSk7XHJcbiAgICAgICAgICAgIGlmIChib2R5LnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgIGxldCB0cnVlSW5uZXJCb2R5OiBJQ29yZUZ1bmN0aW9uQWN0aW9uW10gPSBbXTtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5xdWVyeUZ1bmN0aW9uQWN0aW9uUGVybWlzc2lvbkxpc3RBcGlFbmRwb2ludC5pbmRleE9mKCcvYXBpL2dSUEMvJykgPj0wICkge1xyXG4gICAgICAgICAgICAgICAgdHJ1ZUlubmVyQm9keSA9IHRoaXMuZ3JwY1NlcnZpY2UuY29udmVydFRvQ2FtZWxDYXNlKEpTT04ucGFyc2UoYm9keS5pbm5lckJvZHkpKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdHJ1ZUlubmVyQm9keSA9IGJvZHkuaW5uZXJCb2R5XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuY29yZVBlcm1pc3Npb25TZXJ2aWNlLnNlbGVjdGVkT2JqZWN0QWN0aW9uUGVybWlzc2lvbnMkLm5leHQodHJ1ZUlubmVyQm9keSk7XHJcbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVJbml0aWFsQWN0aW9uUGVybWlzc2lvblZhbHVlSnNvblN0cmluZyhib2R5LmlubmVyQm9keSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh4WzFdLm9rICYmIHhbMV0uc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgY29uc3QgYm9keTE6IElGb3JtYXRlZFJlc3BvbnNlID0geFsxXS5ib2R5O1xyXG4gICAgICAgICAgICAvL3RoaXMucmVzcG9uc2VTZXJ2aWNlLnJlc29sdmUoYm9keTEpO1xyXG4gICAgICAgICAgICBpZiAoYm9keTEuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vcmdJZHMgPSBib2R5MS5pbm5lckJvZHk7XHJcbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVJbml0aWFsT3JnUGVybWlzc2lvblZhbHVlSnNvblN0cmluZyhib2R5MS5pbm5lckJvZHkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG5cclxuICAgICAgdGhpcy5jb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tei1pbmRleCcsIHRoaXMuZG9tU2VydmljZS5nZXRNYXhaSW5kZXgoKSlcclxuXHJcbiAgICB9KVxyXG5cclxuICB9XHJcblxyXG4gIC8qIFdlIGRvIG5vdCB1cGRhdGUgdGhlIGdyaWQgd2hlbiB1c2VySWQgY2hhbmdlcyAqL1xyXG4gIG9uT2JqZWN0SWRDaGFuZ2Uob2JqZWN0SWQ6IHN0cmluZyB8IG51bWJlcikge1xyXG4gICAgdGhpcy5jb3JlUGVybWlzc2lvblNlcnZpY2Uub2JqZWN0SWQgPSBvYmplY3RJZDtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtvYmplY3RJZC50b1N0cmluZygpXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLnBhcmVudCB9KVxyXG4gIH1cclxuXHJcbiAgb25Db3JlUGFnZUhlYWRlckJ1dHRvbkNsaWNrKGU6IElDb3JlQnV0dG9uVk5TKSB7XHJcbiAgICBzd2l0Y2ggKGUuY29kZSkge1xyXG4gICAgICBjYXNlIEVudW1Db3JlQnV0dG9uVk5TQ29kZS5IRUFERVJfRURJVDpcclxuICAgICAgICBpZiAoISF0aGlzLm9iamVjdElkKSB7XHJcbiAgICAgICAgICB0aGlzLmFsbG93RWRpdCA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmluZm8odGhpcy5tbHMudHJhbnMoJ1VJX1VTRVJfUEVSTUlTU0lPTl9OT19VU0VSX1NFTEVDVEVEJywgdGhpcy5sYW5nKSwgYWxlcnRPcHRpb25zKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRW51bUNvcmVCdXR0b25WTlNDb2RlLkhFQURFUl9VUEVSTUlTU0lPTl9ERUxFVEU6XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5vYmplY3RJZCkge1xyXG4gICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2Uud2Fybih0aGlzLm1scy50cmFucyhFbnVtVHJhbnNsYXRlS2V5LlVJX1VTRVJfUEVSTUlTU0lPTl9UT19FRElUX1BMRUFTRV9TRUxFQ1RfQV9VU0VSKSwgYWxlcnRPcHRpb25zKVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnRpdGxlJC5uZXh0KEVudW1UcmFuc2xhdGVLZXkuVUlfQ09SRV9ESUFMT0dfU0VSVklDRV9DT05GSVJNQVRJT04pXHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5va0J1dHRvblRleHQkLm5leHQoRW51bVRyYW5zbGF0ZUtleS5VSV9DT1JFX0NPTkZJUk1fRElBTE9HX0JVVFRPTl9DT05GSVJNKVxyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuY2FuY2VsQnV0dG9uVGV4dCQubmV4dChFbnVtVHJhbnNsYXRlS2V5LlVJX0NPUkVfQ09ORklSTV9ESUFMT0dfQlVUVE9OX0NBTkNFTClcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dDYW5jZWxPbmx5JC5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmJ1c3kgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuYm9keSQubmV4dChFbnVtVHJhbnNsYXRlS2V5LlVJX0NPUkVfRElBTE9HX1NFUlZJQ0VfQVJFX1lPVV9TVVJFX1RPX0RFTEVURSk7XHJcbiAgICAgICAgICAgIGxldCBsaXN0RGVsZXRlSWRzOiBhbnlbXSA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0YS5mb3JFYWNoKHggPT4ge1xyXG4gICAgICAgICAgICAgIGxpc3REZWxldGVJZHMucHVzaCh4W3RoaXMuY29sdW1uc1sxXS5maWVsZF0pXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuaW5mb3JtYXRpb25MaW5lcyQubmV4dChsaXN0RGVsZXRlSWRzKVxyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uuc2hvd0NvbmZpcm1EaWFsb2ckLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEVudW1Db3JlQnV0dG9uVk5TQ29kZS5IRUFERVJfU0FWRTpcclxuICAgICAgICBpZiAodGhpcy50eXBlID09PSBFbnVtUGVybWlzc2lvbk9iamVjdFR5cGUuVVNFUikge1xyXG4gICAgICAgICAgY29uc3QgYWN0aW9uUmFuZ2U6IElVc2VyUGVybWlzc2lvbk1vZGVsW10gPSBbXTtcclxuICAgICAgICAgIHRoaXMuYWN0aW9uUGVybWlzc2lvblZhbHVlLm1hcChmID0+IHtcclxuICAgICAgICAgICAgZi5hbGxvd2VkQWN0aW9uSWRzLm1hcChpZCA9PiB7XHJcbiAgICAgICAgICAgICAgYWN0aW9uUmFuZ2UucHVzaCh7XHJcbiAgICAgICAgICAgICAgICB1c2VySWQ6IHRoaXMub2JqZWN0SWQudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uSWQ6IGYuZnVuY3Rpb25JZCxcclxuICAgICAgICAgICAgICAgIGFjdGlvbklkOiBpZFxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgY29uc3Qgb3JnUmFuZ2U6IElVc2VyT3JnUGVybWlzc2lvbk1vZGVsW10gPSBbXTtcclxuICAgICAgICAgIHRoaXMub3JnSWRzLm1hcChvID0+IHtcclxuICAgICAgICAgICAgb3JnUmFuZ2UucHVzaCh7XHJcbiAgICAgICAgICAgICAgdXNlcklkOiB0aGlzLm9iamVjdElkLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgb3JnSWQ6IG9cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBjb25zdCBhY3Rpb25QYXlsb2FkID0geyB1c2VySWQ6IHRoaXMub2JqZWN0SWQsIHJhbmdlOiBhY3Rpb25SYW5nZSB9XHJcbiAgICAgICAgICBjb25zdCBvcmdQYXlsb2FkID0geyB1c2VySWQ6IHRoaXMub2JqZWN0SWQsIHJhbmdlOiBvcmdSYW5nZSB9XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcblxyXG4gICAgICAgICAgICB6aXAoW1xyXG4gICAgICAgICAgICAgIHRoaXMuYXBwU2VydmljZS5wb3N0KGFwaS5TWVNfVVNFUl9GVU5DVElPTl9BQ1RJT05fUEVSTUlTU0lPTl9VUERBVEVfUkFOR0UsIGFjdGlvblBheWxvYWQpLFxyXG4gICAgICAgICAgICAgIHRoaXMuYXBwU2VydmljZS5wb3N0KGFwaS5TWVNfVVNFUl9PUkdfUEVSTUlTU0lPTl9VUERBVEVfUkFOR0UsIG9yZ1BheWxvYWQpXHJcbiAgICAgICAgICAgIF0pLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmFsbG93RWRpdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIGlmICh4WzBdLm9rICYmIHhbMF0uc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGJvZHk6IElGb3JtYXRlZFJlc3BvbnNlID0geFswXS5ib2R5O1xyXG4gICAgICAgICAgICAgICAgLy90aGlzLnJlc3BvbnNlU2VydmljZS5yZXNvbHZlKGJvZHkpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGJvZHkuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICAgICAgICAgICAgICAvL3RoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKEpTT04uc3RyaW5naWZ5KHhbMF0sIG51bGwsIDIpLCBhbGVydE9wdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAoeFsxXS5vayAmJiB4WzFdLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBib2R5MTogSUZvcm1hdGVkUmVzcG9uc2UgPSB4WzFdLmJvZHk7XHJcbiAgICAgICAgICAgICAgICAvL3RoaXMucmVzcG9uc2VTZXJ2aWNlLnJlc29sdmUoYm9keTEpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGJvZHkxLnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICAgICAgICAgICAgLy90aGlzLmFsZXJ0U2VydmljZS5lcnJvcihKU09OLnN0cmluZ2lmeSh4WzBdLCBudWxsLCAyKSwgYWxlcnRPcHRpb25zKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09IEVudW1QZXJtaXNzaW9uT2JqZWN0VHlwZS5VU0VSX0dST1VQKSB7XHJcbiAgICAgICAgICBjb25zdCBhY3Rpb25SYW5nZTogSUdyb3VwUGVybWlzc2lvbk1vZGVsW10gPSBbXTtcclxuICAgICAgICAgIHRoaXMuYWN0aW9uUGVybWlzc2lvblZhbHVlLm1hcChmID0+IHtcclxuICAgICAgICAgICAgZi5hbGxvd2VkQWN0aW9uSWRzLm1hcChpZCA9PiB7XHJcbiAgICAgICAgICAgICAgYWN0aW9uUmFuZ2UucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBncm91cElkOiBOdW1iZXIodGhpcy5vYmplY3RJZCksXHJcbiAgICAgICAgICAgICAgICBmdW5jdGlvbklkOiBmLmZ1bmN0aW9uSWQsXHJcbiAgICAgICAgICAgICAgICBhY3Rpb25JZDogaWRcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIGNvbnN0IG9yZ1JhbmdlOiBJR3JvdXBPcmdQZXJtaXNzaW9uTW9kZWxbXSA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5vcmdJZHMubWFwKG8gPT4ge1xyXG4gICAgICAgICAgICBvcmdSYW5nZS5wdXNoKHtcclxuICAgICAgICAgICAgICBncm91cElkOiBOdW1iZXIodGhpcy5vYmplY3RJZCksXHJcbiAgICAgICAgICAgICAgb3JnSWQ6IG9cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBjb25zdCBhY3Rpb25QYXlsb2FkID0geyBncm91cElkOiB0aGlzLm9iamVjdElkLCByYW5nZTogYWN0aW9uUmFuZ2UgfVxyXG4gICAgICAgICAgY29uc3Qgb3JnUGF5bG9hZCA9IHsgZ3JvdXBJZDogdGhpcy5vYmplY3RJZCwgcmFuZ2U6IG9yZ1JhbmdlIH1cclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuXHJcbiAgICAgICAgICAgIHppcChbXHJcbiAgICAgICAgICAgICAgdGhpcy5hcHBTZXJ2aWNlLnBvc3QoYXBpLlNZU19HUk9VUF9GVU5DVElPTl9BQ1RJT05fUEVSTUlTU0lPTl9VUERBVEVfUkFOR0UsIGFjdGlvblBheWxvYWQpLFxyXG4gICAgICAgICAgICAgIHRoaXMuYXBwU2VydmljZS5wb3N0KGFwaS5TWVNfR1JPVVBfT1JHX1BFUk1JU1NJT05fVVBEQVRFX1JBTkdFLCBvcmdQYXlsb2FkKVxyXG4gICAgICAgICAgICBdKS5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hbGxvd0VkaXQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICBpZiAoeFswXS5vayAmJiB4WzBdLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBib2R5OiBJRm9ybWF0ZWRSZXNwb25zZSA9IHhbMF0uYm9keTtcclxuICAgICAgICAgICAgICAgIC8vdGhpcy5yZXNwb25zZVNlcnZpY2UucmVzb2x2ZShib2R5KTtcclxuICAgICAgICAgICAgICAgIGlmIChib2R5LnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICAgICAgICAgICAgLy90aGlzLmFsZXJ0U2VydmljZS5lcnJvcihKU09OLnN0cmluZ2lmeSh4WzBdLCBudWxsLCAyKSwgYWxlcnRPcHRpb25zKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHhbMV0ub2sgJiYgeFsxXS5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYm9keTE6IElGb3JtYXRlZFJlc3BvbnNlID0geFsxXS5ib2R5O1xyXG4gICAgICAgICAgICAgICAgLy90aGlzLnJlc3BvbnNlU2VydmljZS5yZXNvbHZlKGJvZHkxKTtcclxuICAgICAgICAgICAgICAgIGlmIChib2R5MS5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgIC8vdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoSlNPTi5zdHJpbmdpZnkoeFswXSwgbnVsbCwgMiksIGFsZXJ0T3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkFjdGlvblBlcm1pc3Npb25WYWx1ZUNoYW5nZShlOiBJQ29yZUZ1bmN0aW9uQWN0aW9uW10pOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKFwib25BY3Rpb25QZXJtaXNzaW9uVmFsdWVDaGFuZ2VcIiwgZSk7XHJcbiAgfVxyXG5cclxuICBvbk9yZ1RyZWVJdGVtQ2hlY2soZTogYW55KSB7XHJcbiAgICBpZiAoISEhdGhpcy5hbGxvd0VkaXQpIHtcclxuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuaW5mbyh0aGlzLm1scy50cmFucygnVUlfVVNFUl9QRVJNSVNTSU9OX1RPX0VESVRfUExFQVNFX1NFTEVDVF9BX1VTRVJfQU5EX0NMSUNLX1RIRV9QRU5DSUwnLCB0aGlzLmxhbmcpLCBhbGVydE9wdGlvbnMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DbGlja0Nsb3NlU3RhdGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNob3dTdGF0ZVRyYWNrZXIgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGNhbkRlYWN0aXZhdGUoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB8IGJvb2xlYW4ge1xyXG4gICAgdGhpcy5jdXJyZW50QWN0aW9uUGVybWlzc2lvblZhbHVlSnNvblN0cmluZyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuYWN0aW9uUGVybWlzc2lvblZhbHVlKTtcclxuICAgIGNvbnN0IGNvbmRpdGlvbjEgPSB0aGlzLmN1cnJlbnRBY3Rpb25QZXJtaXNzaW9uVmFsdWVKc29uU3RyaW5nID09PSB0aGlzLmluaXRpYWxBY3Rpb25QZXJtaXNzaW9uVmFsdWVKc29uU3RyaW5nO1xyXG4gICAgdGhpcy5jdXJyZW50T3JnUGVybWlzc2lvblZhbHVlSnNvblN0cmluZyA9IEpTT04uc3RyaW5naWZ5KHRoaXMub3JnUGVybWlzc2lvblZhbHVlKTtcclxuICAgIGNvbnN0IGNvbmRpdGlvbjIgPSB0aGlzLmN1cnJlbnRPcmdQZXJtaXNzaW9uVmFsdWVKc29uU3RyaW5nID09PSB0aGlzLmluaXRpYWxPcmdQZXJtaXNzaW9uVmFsdWVKc29uU3RyaW5nO1xyXG4gICAgY29uc3QgY29uZGl0aW9uID0gY29uZGl0aW9uMSAmJiBjb25kaXRpb24yO1xyXG5cclxuICAgIHJldHVybiB0cnVlOyAvLyBUTyBET1xyXG5cclxuICAgIGlmIChjb25kaXRpb24pIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgdGhpcy5wZW5kaW5nQWN0aW9uID0gJ0NIQU5HRVNfV0lMTF9CRV9MT1NUJztcclxuICAgICAgdGhpcy5kaWFsb2dJbnN0YW5jZU51bWJlciA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICB0aGlzLnNob3dTdGF0ZVRyYWNrZXIgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmJ1c3kgPSB0cnVlO1xyXG4gICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZGlhbG9nQ29uZmlybWVkJC5uZXh0KHtcclxuICAgICAgICBjb25maXJtZWQ6IGZhbHNlLFxyXG4gICAgICAgIGluc3RhbmNlTnVtYmVyOiB0aGlzLmRpYWxvZ0luc3RhbmNlTnVtYmVyXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5zaG93Q29uZmlybURpYWxvZyQubmV4dCh0cnVlKTtcclxuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnRpdGxlJC5uZXh0KEVudW1UcmFuc2xhdGVLZXkuVUlfQ09SRV9DT05GSVJNX0RJQUxPR19USVRMRSk7XHJcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5ib2R5JC5uZXh0KEVudW1UcmFuc2xhdGVLZXkuVUlfQ09SRV9DT05GSVJNX0RJQUxPR19CT0RZX0NIQU5HRVNfV0lMTF9CRV9MT1NUKTtcclxuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLm9rQnV0dG9uVGV4dCQubmV4dChFbnVtVHJhbnNsYXRlS2V5LlVJX0NPUkVfQ09ORklSTV9ESUFMT0dfQlVUVE9OX0NPTkZJUk0pO1xyXG4gICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuY2FuY2VsQnV0dG9uVGV4dCQubmV4dChFbnVtVHJhbnNsYXRlS2V5LlVJX0NPUkVfQ09ORklSTV9ESUFMT0dfQlVUVE9OX0dPX0JBQ0tfVE9fRURJVF9GT1JNKTtcclxuICAgICAgY29uc3Qgb2JzZXJ2YWJsZSA9IHRoaXMuZGlhbG9nU2VydmljZS5jYW5EZWFjdGl2YXRlJC5hc09ic2VydmFibGUoKTtcclxuICAgICAgcmV0dXJuIG9ic2VydmFibGU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5tYXAoeCA9PiB4Py51bnN1YnNjcmliZSgpKVxyXG4gICAgdGhpcy5jb3JlUGVybWlzc2lvblNlcnZpY2UuaW5zdGFuY2VOdW1iZXIgPSBudWxsO1xyXG4gICAgdGhpcy5jb3JlUGVybWlzc2lvblNlcnZpY2Uuc2VsZWN0ZWRPYmplY3QkLm5leHQobnVsbCk7XHJcbiAgICB0aGlzLmNvcmVQZXJtaXNzaW9uU2VydmljZS5zZWxlY3RlZE9iamVjdEFjdGlvblBlcm1pc3Npb25zJC5uZXh0KFtdKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgI2NvbnRhaW5lciBjbGFzcz1cImNvcmUtcGVybWlzc2lvbi1jb250YWluZXJcIiBbbmdTdHlsZV09XCJ7IGhlaWdodDogaGVpZ2h0ICsgJ3B4J31cIj5cclxuICA8Y29yZS1wYWdlLWhlYWRlciBbdGl0bGVdPVwidGl0bGVcIiAoYnV0dG9uQ2xpY2spPVwib25Db3JlUGFnZUhlYWRlckJ1dHRvbkNsaWNrKCRldmVudClcIj48L2NvcmUtcGFnZS1oZWFkZXI+XHJcblxyXG4gIDxjb3JlLWNvbXBvc2l0aW9uIFtsZWZ0XT1cInVzZXJTZWVrZXJcIiBbbGVmdFdpZHRoXT1cIjIwMFwiIFttYWluXT1cInRhYnNcIiBbaGVpZ2h0XT1cImNvbXBvc2l0aW9uSGVpZ2h0XCI+XHJcbiAgPC9jb3JlLWNvbXBvc2l0aW9uPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwic3RhdGUtdHJhY2tlciBjb250YWluZXIgY29udGFpbmVyLWZsdWlkXCIgKm5nSWY9XCJzaG93U3RhdGVUcmFja2VyICYmIGlzUm9vdFVzZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBkLWZsZXggZC1mbGV4LWJldHdlZW5cIj5cclxuICAgICAgPHNwYW4+Q29tcGFyZTwvc3Bhbj5cclxuICAgICAgPGkgY2xhc3M9XCJmZWF0aGVyLXhcIiAoY2xpY2spPVwib25DbGlja0Nsb3NlU3RhdGUoKVwiPjwvaT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICB7eyBpbml0aWFsQWN0aW9uUGVybWlzc2lvblZhbHVlSnNvblN0cmluZyB9fVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAge3sgY3VycmVudEFjdGlvblBlcm1pc3Npb25WYWx1ZUpzb25TdHJpbmcgfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAge3sgaW5pdGlhbE9yZ1Blcm1pc3Npb25WYWx1ZUpzb25TdHJpbmcgfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgIHt7IGN1cnJlbnRPcmdQZXJtaXNzaW9uVmFsdWVKc29uU3RyaW5nIH19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdGFicz5cclxuICA8Y29yZS10YWJzIFtoZWFkZXJzXT1cInRhYkhlYWRlcnNcIiBbY29udGVudHNdPVwiW3RhYjEsIHRhYjJdXCIgW2hlaWdodF09XCJjb21wb3NpdGlvbkhlaWdodFwiPjwvY29yZS10YWJzPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICN0YWIxPlxyXG4gIDxkaXYgW25nU3R5bGVdPVwieyBoZWlnaHQ6IGxheW91dFNlcnZpY2UuYmFzaWNTcGFjaW5nICsgJ3B4JyB9XCI+PC9kaXY+XHJcbiAgPGNvcmUtcGVybWlzc2lvbi1hY3Rpb25zIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbKG5nTW9kZWwpXT1cImFjdGlvblBlcm1pc3Npb25WYWx1ZVwiXHJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJvbkFjdGlvblBlcm1pc3Npb25WYWx1ZUNoYW5nZSgkZXZlbnQpXCIgW2Rpc2FibGVkXT1cIiEhIWFsbG93RWRpdFwiIFtoZWlnaHRdPVwiY29yZVBlcm1pc3Npb25BY3Rpb25zSGVpZ2h0XCI+PC9jb3JlLXBlcm1pc3Npb24tYWN0aW9ucz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdXNlclNlZWtlcj5cclxuXHJcbiAgPGNvcmUtbGlzdC1sYXp5IFtxdWVyeUxpc3RBcGldPVwib2JqZWN0UXVlcnlMaXN0QXBpXCIgW3RleHRGaWVsZF09XCJvYmplY3RMaXN0VGV4dEZpZWxkXCIgWyhuZ01vZGVsKV09XCJvYmplY3RJZFwiXHJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJvbk9iamVjdElkQ2hhbmdlKCRldmVudClcIiBbaGVpZ2h0XT1cImNvbXBvc2l0aW9uSGVpZ2h0XCI+PC9jb3JlLWxpc3QtbGF6eT5cclxuXHJcblxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICN0YWIyPlxyXG4gIDxkaXYgW25nU3R5bGVdPVwieyBoZWlnaHQ6IGxheW91dFNlcnZpY2UuYmFzaWNTcGFjaW5nICsgJ3B4JyB9XCI+PC9kaXY+XHJcbiAgPGNvcmUtb3JnLXRyZWUgW2Z1bGxXaWR0aE1vZGVdPVwidHJ1ZVwiIFthY2Nlc3Nvck1vZGVdPVwidHJlZUFjY2Vzc29yTW9kZVwiIFsobmdNb2RlbCldPVwib3JnSWRzXCIgW2Rpc2FibGVkXT1cIiEhIWFsbG93RWRpdFwiXHJcbiAgICAoaXRlbUNsaWNrKT1cIm9uT3JnVHJlZUl0ZW1DaGVjaygkZXZlbnQpXCIgbmFtZT1cIm9yZ0lkc1wiIG5nRGVmYXVsdENvbnRyb2wgW2hlaWdodF09XCJ0cmVlSGVpZ2h0XCI+PC9jb3JlLW9yZy10cmVlPlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
|