@pega/angular-sdk-components 0.24.2 → 0.24.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/_components/field/cancel-alert/cancel-alert.component.mjs +1 -3
- package/esm2022/lib/_components/field/currency/currency.component.mjs +6 -4
- package/esm2022/lib/_components/field/decimal/decimal.component.mjs +4 -3
- package/esm2022/lib/_components/field/dropdown/dropdown.component.mjs +3 -8
- package/esm2022/lib/_components/field/percentage/percentage.component.mjs +6 -4
- package/esm2022/lib/_components/field/radio-buttons/radio-buttons.component.mjs +3 -8
- package/esm2022/lib/_components/field/scalar-list/scalar-list.component.mjs +3 -2
- package/esm2022/lib/_components/field/text-area/text-area.component.mjs +1 -3
- package/esm2022/lib/_components/infra/Containers/flow-container/flow-container.component.mjs +3 -15
- package/esm2022/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.mjs +1 -2
- package/esm2022/lib/_components/infra/Containers/view-container/view-container.component.mjs +1 -2
- package/esm2022/lib/_components/infra/assignment/assignment.component.mjs +3 -9
- package/esm2022/lib/_components/infra/dashboard-filter/dashboard-filter.component.mjs +1 -2
- package/esm2022/lib/_components/infra/defer-load/defer-load.component.mjs +6 -9
- package/esm2022/lib/_components/infra/navbar/navbar.component.mjs +1 -2
- package/esm2022/lib/_components/template/case-view/case-view.component.mjs +3 -9
- package/esm2022/lib/_components/template/data-reference/data-reference.component.mjs +2 -4
- package/esm2022/lib/_components/template/dynamic-tabs/dynamic-tabs.component.mjs +1 -2
- package/esm2022/lib/_components/template/field-group-template/field-group-template.component.mjs +5 -15
- package/esm2022/lib/_components/template/list-view/list-view.component.mjs +12 -6
- package/esm2022/lib/_components/template/list-view/listViewHelpers.mjs +1 -2
- package/esm2022/lib/_components/template/repeating-structures/repeating-structures.component.mjs +1 -2
- package/esm2022/lib/_components/template/simple-table/simple-table.component.mjs +1 -3
- package/esm2022/lib/_components/template/simple-table-manual/simple-table-manual.component.mjs +6 -12
- package/esm2022/lib/_components/template/simple-table-select/simple-table-select.component.mjs +3 -5
- package/esm2022/lib/_components/widget/attachment/attachment.component.mjs +224 -421
- package/esm2022/lib/_components/widget/case-history/case-history.component.mjs +1 -2
- package/esm2022/lib/_components/widget/feed-container/feed-container.component.mjs +1 -5
- package/esm2022/lib/_components/widget/file-utility/file-utility.component.mjs +1 -5
- package/esm2022/lib/_components/widget/quick-create/quick-create.component.mjs +1 -1
- package/esm2022/lib/_components/widget/todo/todo.component.mjs +4 -3
- package/fesm2022/pega-angular-sdk-components.mjs +272 -539
- package/fesm2022/pega-angular-sdk-components.mjs.map +1 -1
- package/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.d.ts +1 -1
- package/lib/_components/field/currency/currency.component.d.ts +3 -0
- package/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.d.ts +1 -1
- package/lib/_components/field/percentage/percentage.component.d.ts +2 -0
- package/lib/_components/infra/Containers/flow-container/flow-container.component.d.ts +1 -1
- package/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.d.ts +1 -1
- package/lib/_components/infra/action-buttons/action-buttons.component.d.ts +1 -1
- package/lib/_components/infra/error-boundary/error-boundary.component.d.ts +1 -1
- package/lib/_components/template/list-view/list-view.component.d.ts +8 -2
- package/lib/_components/template/simple-table-manual/helpers.d.ts +1 -1
- package/lib/_components/template/wss-nav-bar/wss-nav-bar.component.d.ts +1 -1
- package/lib/_components/widget/attachment/attachment.component.d.ts +29 -57
- package/lib/_components/widget/file-utility/file-utility.component.d.ts +2 -2
- package/lib/_components/widget/todo/todo.component.d.ts +4 -3
- package/lib/_helpers/common.d.ts +1 -1
- package/lib/_helpers/field-group-utils.d.ts +1 -1
- package/lib/_helpers/filter-utils.d.ts +1 -1
- package/lib/_helpers/formatters/common.d.ts +2 -2
- package/package.json +3 -3
|
@@ -13,7 +13,6 @@ export class CaseHistoryComponent {
|
|
|
13
13
|
}
|
|
14
14
|
ngOnInit() {
|
|
15
15
|
this.configProps$ = this.pConn$.getConfigProps();
|
|
16
|
-
// @ts-ignore - second parameter pageReference for getValue method should be optional
|
|
17
16
|
const caseID = this.pConn$.getValue(PCore.getConstants().CASE_INFO.CASE_INFO_ID);
|
|
18
17
|
const dataViewName = 'D_pyWorkHistory';
|
|
19
18
|
const context = this.pConn$.getContextName();
|
|
@@ -78,4 +77,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
78
77
|
}], ctorParameters: () => [{ type: i1.Utils }], propDecorators: { pConn$: [{
|
|
79
78
|
type: Input
|
|
80
79
|
}] } });
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1oaXN0b3J5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy93aWRnZXQvY2FzZS1oaXN0b3J5L2Nhc2UtaGlzdG9yeS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvd2lkZ2V0L2Nhc2UtaGlzdG9yeS9jYXNlLWhpc3RvcnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7QUFjN0UsTUFBTSxPQUFPLG9CQUFvQjtJQVUvQixZQUFvQixLQUFZO1FBQVosVUFBSyxHQUFMLEtBQUssQ0FBTztRQUhoQyxzQkFBaUIsR0FBRyxLQUFLLEVBQU8sQ0FBQztRQUNqQyxtQkFBYyxHQUFHLEtBQUssQ0FBQztJQUVZLENBQUM7SUFFcEMsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUVqRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2pGLE1BQU0sWUFBWSxHQUFHLGlCQUFpQixDQUFDO1FBQ3ZDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7UUFFN0MsSUFB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QUM7UUFDSCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsU0FBZ0IsRUFBRTtRQUNsQyxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDeEIsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0FyRlUsb0JBQW9CO21HQUFwQixvQkFBb0IsMEdDaEJqQyx1aUJBWUEsMlJERVksWUFBWSwySkFBRSxjQUFjOzs0RkFFM0Isb0JBQW9CO2tCQVBoQyxTQUFTOytCQUNFLGtCQUFrQixjQUdoQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsY0FBYyxDQUFDOzBFQUc5QixNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRUYWJsZURhdGFTb3VyY2UsIE1hdFRhYmxlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9faGVscGVycy91dGlscyc7XG5cbmludGVyZmFjZSBDYXNlSGlzdG9yeVByb3BzIHtcbiAgbGFiZWw/OiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jYXNlLWhpc3RvcnknLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FzZS1oaXN0b3J5LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FzZS1oaXN0b3J5LmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdFRhYmxlTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBDYXNlSGlzdG9yeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHBDb25uJDogdHlwZW9mIFBDb25uZWN0O1xuXG4gIGNvbmZpZ1Byb3BzJDogQ2FzZUhpc3RvcnlQcm9wcztcblxuICByZXBlYXRMaXN0JDogTWF0VGFibGVEYXRhU291cmNlPGFueT47XG4gIGZpZWxkcyQ6IGFueVtdO1xuICBkaXNwbGF5ZWRDb2x1bW5zJCA9IEFycmF5PGFueT4oKTtcbiAgd2FpdGluZ0ZvckRhdGEgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHV0aWxzOiBVdGlscykge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpZ1Byb3BzJCA9IHRoaXMucENvbm4kLmdldENvbmZpZ1Byb3BzKCk7XG5cbiAgICBjb25zdCBjYXNlSUQgPSB0aGlzLnBDb25uJC5nZXRWYWx1ZShQQ29yZS5nZXRDb25zdGFudHMoKS5DQVNFX0lORk8uQ0FTRV9JTkZPX0lEKTtcbiAgICBjb25zdCBkYXRhVmlld05hbWUgPSAnRF9weVdvcmtIaXN0b3J5JztcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKTtcblxuICAgIHRoaXMud2FpdGluZ0ZvckRhdGEgPSB0cnVlO1xuXG4gICAgY29uc3QgY2FzZUhpc3RvcnlEYXRhID0gUENvcmUuZ2V0RGF0YUFwaVV0aWxzKCkuZ2V0RGF0YShcbiAgICAgIGRhdGFWaWV3TmFtZSxcbiAgICAgIHsgZGF0YVZpZXdQYXJhbWV0ZXJzOiBbeyBDYXNlSW5zdGFuY2VLZXk6IGNhc2VJRCB9XSB9IGFzIGFueSxcbiAgICAgIGNvbnRleHRcbiAgICApIGFzIFByb21pc2U8YW55PjtcblxuICAgIGNhc2VIaXN0b3J5RGF0YS50aGVuKChoaXN0b3J5SlNPTjogYW55KSA9PiB7XG4gICAgICB0aGlzLmZpZWxkcyQgPSBbXG4gICAgICAgIHsgbGFiZWw6IHRoaXMucENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdEYXRlJywgJycsICcnKSwgdHlwZTogJ0RhdGVUaW1lJywgZmllbGROYW1lOiAncHhUaW1lQ3JlYXRlZCcgfSxcbiAgICAgICAgeyBsYWJlbDogdGhpcy5wQ29ubiQuZ2V0TG9jYWxpemVkVmFsdWUoJ0Rlc2NyaXB0aW9uJywgJycsICcnKSwgdHlwZTogJ1RleHRJbnB1dCcsIGZpZWxkTmFtZTogJ3B5TWVzc2FnZUtleScgfSxcbiAgICAgICAgeyBsYWJlbDogdGhpcy5wQ29ubiQuZ2V0TG9jYWxpemVkVmFsdWUoJ1BlcmZvcm1lZCBieScsICcnLCAnJyksIHR5cGU6ICdUZXh0SW5wdXQnLCBmaWVsZE5hbWU6ICdweVBlcmZvcm1lcicgfVxuICAgICAgXTtcblxuICAgICAgY29uc3QgdGFibGVEYXRhUmVzdWx0cyA9IHRoaXMudXBkYXRlRGF0YShoaXN0b3J5SlNPTi5kYXRhLmRhdGEsIHRoaXMuZmllbGRzJCk7XG5cbiAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucyQgPSB0aGlzLmdldERpc3BsYXlDb2x1bW5zKHRoaXMuZmllbGRzJCk7XG5cbiAgICAgIHRoaXMucmVwZWF0TGlzdCQgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKHRhYmxlRGF0YVJlc3VsdHMpO1xuXG4gICAgICB0aGlzLndhaXRpbmdGb3JEYXRhID0gZmFsc2U7XG4gICAgfSk7XG4gIH1cbiAgLy8gVGhpcyBtZXRob2QgaXNuJ3QgYmVpbmcgdXNlZCBhbnl3aGVyZSwga2VlcGluZyBpdCBhcyBhIHJlZmVyZW5jZSBmb3Igbm93XG4gIC8vIHVwZGF0ZUZpZWxkcyhhckZpZWxkcywgYXJDb2x1bW5zKTogYW55W10ge1xuICAvLyAgIGNvbnN0IGFyUmV0dXJuID0gYXJGaWVsZHM7XG4gIC8vICAgZm9yIChjb25zdCBpIGluIGFyUmV0dXJuKSB7XG4gIC8vICAgICBhclJldHVybltpXS5jb25maWcubmFtZSA9IGFyQ29sdW1uc1tpXTtcbiAgLy8gICB9XG5cbiAgLy8gICByZXR1cm4gYXJSZXR1cm47XG4gIC8vIH1cblxuICB1cGRhdGVEYXRhKGxpc3REYXRhOiBhbnlbXSwgZmllbGREYXRhOiBhbnlbXSk6IGFueVtdIHtcbiAgICBjb25zdCByZXR1cm5MaXN0OiBhbnlbXSA9IG5ldyBBcnJheTxhbnk+KCk7XG4gICAgbGlzdERhdGEuZm9yRWFjaChyb3cgPT4ge1xuICAgICAgLy8gY29weVxuICAgICAgY29uc3Qgcm93RGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocm93KSk7XG5cbiAgICAgIGZvciAoY29uc3QgZmllbGQgb2YgZmllbGREYXRhKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkTmFtZSA9IGZpZWxkLmZpZWxkTmFtZTtcbiAgICAgICAgbGV0IGZvcm1hdHRlZERhdGU7XG5cbiAgICAgICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICAgICAgY2FzZSAnRGF0ZSc6XG4gICAgICAgICAgICBmb3JtYXR0ZWREYXRlID0gdGhpcy51dGlscy5nZW5lcmF0ZURhdGUocm93RGF0YVtmaWVsZE5hbWVdLCAnRGF0ZS1TaG9ydC1ZWVlZJyk7XG4gICAgICAgICAgICByb3dEYXRhW2ZpZWxkTmFtZV0gPSBmb3JtYXR0ZWREYXRlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnRGF0ZVRpbWUnOlxuICAgICAgICAgICAgZm9ybWF0dGVkRGF0ZSA9IHRoaXMudXRpbHMuZ2VuZXJhdGVEYXRlVGltZShyb3dEYXRhW2ZpZWxkTmFtZV0sICdEYXRlVGltZS1TaG9ydC1ZWVlZJyk7XG4gICAgICAgICAgICByb3dEYXRhW2ZpZWxkTmFtZV0gPSBmb3JtYXR0ZWREYXRlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm5MaXN0LnB1c2gocm93RGF0YSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJldHVybkxpc3Q7XG4gIH1cblxuICBnZXREaXNwbGF5Q29sdW1ucyhmaWVsZHM6IGFueVtdID0gW10pIHtcbiAgICByZXR1cm4gZmllbGRzLm1hcChmaWVsZCA9PiB7XG4gICAgICByZXR1cm4gZmllbGQuZmllbGROYW1lO1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2PlxuICA8aDIgY2xhc3M9XCJwc2RrLWNhc2UtaGlzdG9yeS10aXRsZVwiPnt7IGNvbmZpZ1Byb3BzJC5sYWJlbCB9fTwvaDI+XG4gIDx0YWJsZSBtYXQtdGFibGUgW2RhdGFTb3VyY2VdPVwicmVwZWF0TGlzdCRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkQ29sIG9mIGZpZWxkcyRcIiBbbWF0Q29sdW1uRGVmXT1cImRDb2wuZmllbGROYW1lXCI+XG4gICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPnt7IGRDb2wubGFiZWwgfX08L3RoPlxuICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj57eyBlbGVtZW50W2RDb2wuZmllbGROYW1lXSB9fTwvdGQ+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnMkXCI+PC90cj5cbiAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogZGlzcGxheWVkQ29sdW1ucyRcIj48L3RyPlxuICA8L3RhYmxlPlxuPC9kaXY+XG4iXX0=
|
|
@@ -332,13 +332,11 @@ export class FeedContainerComponent {
|
|
|
332
332
|
this.updateSelf();
|
|
333
333
|
}
|
|
334
334
|
else {
|
|
335
|
-
// @ts-ignore - parameter “contextName” for getDataObject method should be optional
|
|
336
335
|
const newPulseData = this.pConn$.getDataObject().pulse;
|
|
337
336
|
if (!isEqual(newPulseData, this.pulseData)) {
|
|
338
337
|
this.updateSelf();
|
|
339
338
|
}
|
|
340
339
|
}
|
|
341
|
-
// @ts-ignore - parameter “contextName” for getDataObject method should be optional
|
|
342
340
|
this.pulseData = this.pConn$.getDataObject().pulse;
|
|
343
341
|
}
|
|
344
342
|
updateSelf() {
|
|
@@ -347,9 +345,7 @@ export class FeedContainerComponent {
|
|
|
347
345
|
getMessageData() {
|
|
348
346
|
const messageIDs = this.pConn$.getConfigProps().messageIDs;
|
|
349
347
|
const userName = this.pConn$.getConfigProps().currentUser;
|
|
350
|
-
// @ts-ignore - second parameter pageReference for getValue method should be optional
|
|
351
348
|
const imageKey = this.pConn$.getValue('OperatorID.pyImageInsKey');
|
|
352
|
-
// @ts-ignore - parameter “contextName” for getDataObject method should be optional
|
|
353
349
|
const oData = this.pConn$.getDataObject();
|
|
354
350
|
if (messageIDs && messageIDs.length > 0) {
|
|
355
351
|
this.pulseMessages$ = JSON.parse(JSON.stringify(oData.pulse.messages));
|
|
@@ -522,4 +518,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
522
518
|
}], ctorParameters: () => [{ type: i1.AngularPConnectService }, { type: i0.ChangeDetectorRef }, { type: i2.Utils }], propDecorators: { pConn$: [{
|
|
523
519
|
type: Input
|
|
524
520
|
}] } });
|
|
525
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZC1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL3dpZGdldC9mZWVkLWNvbnRhaW5lci9mZWVkLWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvd2lkZ2V0L2ZlZWQtY29udGFpbmVyL2ZlZWQtY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNEQUFzRDtBQUN0RCxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBZ0MsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxPQUFPLE1BQU0saUJBQWlCLENBQUM7QUFFdEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7QUFZaEQsTUFBTSxPQUFPLHNCQUFzQjtJQXFDakMsWUFDVSxlQUF1QyxFQUN2QyxLQUF3QixFQUN4QixLQUFZO1FBRlosb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBQ3ZDLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQ3hCLFVBQUssR0FBTCxLQUFLLENBQU87UUFyQ3RCLDRCQUE0QjtRQUM1Qix3QkFBbUIsR0FBd0IsRUFB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QixzQkFBc0IsK0ZBSnRCLENBQUMsS0FBSyxDQUFDLDBCQ2pCcEIsb3JNQXlJQSx5aEZEdEhZLFlBQVksK1BBQUUsa0JBQWtCLHlPQUFFLGNBQWMsMFdBQUUsaUJBQWlCLGlUQUFFLGVBQWU7OzRGQUVuRixzQkFBc0I7a0JBUmxDLFNBQVM7K0JBQ0Usb0JBQW9CLGFBR25CLENBQUMsS0FBSyxDQUFDLGNBQ04sSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLENBQUM7K0lBR3RGLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBDaGFuZ2VEZXRlY3RvclJlZiwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdEdyaWRMaXN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZ3JpZC1saXN0JztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgaXNFcXVhbCBmcm9tICdmYXN0LWRlZXAtZXF1YWwnO1xuaW1wb3J0IHsgQW5ndWxhclBDb25uZWN0RGF0YSwgQW5ndWxhclBDb25uZWN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19icmlkZ2UvYW5ndWxhci1wY29ubmVjdCc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uLy4uL19oZWxwZXJzL3V0aWxzJztcblxuZGVjbGFyZSBjb25zdCB3aW5kb3c6IGFueTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWZlZWQtY29udGFpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZlZWQtY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmVlZC1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbVXRpbHNdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRGb3JtRmllbGRNb2R1bGUsIE1hdElucHV0TW9kdWxlLCBNYXRHcmlkTGlzdE1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBGZWVkQ29udGFpbmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwQ29ubiQ6IHR5cGVvZiBQQ29ubmVjdDtcblxuICAvLyBVc2VkIHdpdGggQW5ndWxhclBDb25uZWN0XG4gIGFuZ3VsYXJQQ29ubmVjdERhdGE6IEFuZ3VsYXJQQ29ubmVjdERhdGEgPSB7fTtcblxuICB1c2VyTmFtZSQ6IHN0cmluZztcbiAgaW1hZ2VLZXkkOiBzdHJpbmc7XG5cbiAgY3VycmVudFVzZXJJbml0aWFscyQ6IHN0cmluZztcbiAgY3VycmVudFVzZXJOYW1lJDogc3RyaW5nO1xuXG4gIHB1bHNlTWVzc2FnZXMkOiBhbnlbXTtcbiAgc2hvd1JlcGx5Q29tbWVudCQ6IE9iamVjdCA9IHt9O1xuXG4gIHN2Z0NvbW1lbnQkOiBzdHJpbmc7XG4gIHN2Z0xpa2UkOiBzdHJpbmc7XG4gIHN2Z0xpa2VkQnlNZSQ6IHN0cmluZztcbiAgc3ZnU2VuZCQ6IHN0cmluZztcblxuICBwdWxzZUNvbnZlcnNhdGlvbjogc3RyaW5nO1xuICB1c2VyRGF0YTogTWFwPGFueSwgYW55PiA9IG5ldyBNYXAoKTtcblxuICBwdWxzZUNvbW1lbnQ6IE9iamVjdCA9IHt9O1xuXG4gIC8vIGZ1bmN0aW9uc1xuICBhY3Rpb25zQVBJOiBhbnk7XG4gIC8vIHVudGlsIEZlZWRBUEkgbW92ZWQgYmFjayB0byBQQ29yZSwgd2UgYWNjZXNzIHRoZSBtZXRob2RzIGRpcmVjdGx5IChzZWUgbmdJbml0KVxuICBmZWVkQVBJOiBhbnk7XG5cbiAgcHVsc2VEYXRhOiBhbnk7XG5cbiAgLy8gVGVtcG9yYXJ5IHdheSB0byB1c2UgRmVlZEFwaS4uLlxuICBmZXRjaE1lc3NhZ2VzOiBhbnk7XG4gIGxpa2VNZXNzYWdlOiBhbnk7XG4gIHBvc3RNZXNzYWdlOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhbmd1bGFyUENvbm5lY3Q6IEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB1dGlsczogVXRpbHNcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudXNlck5hbWUkID0gUENvcmUuZ2V0RW52aXJvbm1lbnRJbmZvKCkuZ2V0T3BlcmF0b3JOYW1lKCk7XG4gICAgdGhpcy5pbWFnZUtleSQgPSBQQ29yZS5nZXRFbnZpcm9ubWVudEluZm8oKS5nZXRPcGVyYXRvckltYWdlSW5zS2V5KCk7XG4gICAgdGhpcy51cGRhdGVDdXJyZW50VXNlck5hbWUodGhpcy51c2VyTmFtZSQpO1xuXG4gICAgLy8gRmlyc3QgdGhpbmcgaW4gaW5pdGlhbGl6YXRpb24gaXMgcmVnaXN0ZXJpbmcgYW5kIHN1YnNjcmliaW5nIHRvIHRoZSBBbmd1bGFyUENvbm5lY3Qgc2VydmljZVxuICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YSA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnJlZ2lzdGVyQW5kU3Vic2NyaWJlQ29tcG9uZW50KHRoaXMsIHRoaXMub25TdGF0ZUNoYW5nZSk7XG5cbiAgICAvLyBUaGVuLCBjb250aW51ZSBvbiB3aXRoIG90aGVyIGluaXRpYWxpemF0aW9uXG4gICAgLy8gZGVidWdnZXI7XG5cbiAgICAvLyBjb25zdCB7XG4gICAgLy8gICBmZXRjaE1lc3NhZ2VzLFxuICAgIC8vICAgbGlrZU1lc3NhZ2UsXG4gICAgLy8gICBwb3N0TWVzc2FnZVxuICAgIC8vIH0gPSBGZWVkQXBpKHRoaXMucENvbm4kKTtcbiAgICAvLyB0aGlzLmZldGNoTWVzc2FnZXMgPSBmZXRjaE1lc3NhZ2VzO1xuICAgIC8vIHRoaXMubGlrZU1lc3NhZ2UgPSBsaWtlTWVzc2FnZTtcbiAgICAvLyB0aGlzLnBvc3RNZXNzYWdlID0gcG9zdE1lc3NhZ2U7XG5cbiAgICAvLyAvLyB0aGlzLnVzZXJOYW1lJCA9IHRoaXMucENvbm4kLmdldFZhbHVlKFwicHhSZXF1ZXN0b3IucHhVc2VyTmFtZVwiKTtcbiAgICAvLyAvLyB0aGlzLmltYWdlS2V5JCA9IHRoaXMucENvbm4kLmdldFZhbHVlKFwiT3BlcmF0b3JJRC5weUltYWdlSW5zS2V5XCIpO1xuXG4gICAgLy8gLy90aGlzLnVzZXJOYW1lJCA9IHRoaXMucENvbm4kLmdldERhdGFPYmplY3QoKVtcIkRfcHhFbnZpcm9ubWVudEluZm9cIl0ucHhPcGVyYXRvci5weVVzZXJOYW1lO1xuICAgIC8vIC8vdGhpcy5pbWFnZUtleSQgPSB0aGlzLnBDb25uJC5nZXREYXRhT2JqZWN0KClbXCJEX3B4RW52aXJvbm1lbnRJbmZvXCJdLnB4T3BlcmF0b3IucHlJbWFnZUluc0tleTtcbiAgICAvLyB0aGlzLnVzZXJOYW1lJCA9IHRoaXMucENvbm4kLmdldEVudmlyb25tZW50SW5mbygpLmdldE9wZXJhdG9yTmFtZSgpO1xuICAgIC8vIHRoaXMuaW1hZ2VLZXkkID0gdGhpcy5wQ29ubiQuZ2V0RW52aXJvbm1lbnRJbmZvKCkuZ2V0T3BlcmF0b3JJbWFnZUluc0tleSgpO1xuXG4gICAgLy8gdGhpcy5hY3Rpb25zQVBJID0gdGhpcy5wQ29ubiQuZ2V0QWN0aW9uc0FwaSgpO1xuXG4gICAgLy8gbGV0IG93bmVyID0gdGhpcy5wQ29ubiQuZ2V0Q29uZmlnUHJvcHMoKS52YWx1ZTtcblxuICAgIC8vIC8vIHdpdGggbmV3IEZlZWRBUEk6IG93bmVyIGlzIHRoZSBwcm9wZXIgdmFsdWUgdG8gcGFzcyBpblxuICAgIC8vIC8vICBhbmQgbm8gbG9uZ2VyIHRha2VzIDJuZCBhcmd1bWVudFxuICAgIC8vIHRoaXMuLypmZWVkQVBJLiovZmV0Y2hNZXNzYWdlcyhvd25lciAvKiwgdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKSovKTtcblxuICAgIC8vIGNvbnN0IGNvbmZpZ1Byb3BzOiBhbnkgPSB0aGlzLnBDb25uJC5nZXRDb25maWdQcm9wcygpO1xuXG4gICAgLy8gY29uc3QgeyBtZXNzYWdlSURzIH0gPSBjb25maWdQcm9wcztcblxuICAgIC8vIGNvbnN0IHsgZmV0Y2hNZXNzYWdlcywgcG9zdE1lc3NhZ2UsIGdldE1lbnRpb25TdWdnZXN0aW9ucywgZ2V0VGFnU3VnZ2VzdGlvbnMgfSA9IEZlZWRBcGkodGhpcy5wQ29ubiQpO1xuXG4gICAgY29uc3QgYXBwTmFtZSA9IFBDb3JlLmdldEVudmlyb25tZW50SW5mbygpLmdldEFwcGxpY2F0aW9uTmFtZSgpO1xuICAgIGxldCB2YWx1ZSA9ICcnO1xuICAgIGxldCBmZWVkSUQgPSAnJztcbiAgICBsZXQgZmVlZENsYXNzID0gJyc7XG5cbiAgICBpZiAodGhpcy5wQ29ubiQuZ2V0Q2FzZVN1bW1hcnkoKS5JRCkge1xuICAgICAgdmFsdWUgPSB0aGlzLnBDb25uJC5nZXRDYXNlU3VtbWFyeSgpLklEO1xuICAgICAgZmVlZElEID0gJ3B5Q2FzZUZlZWQnO1xuICAgICAgZmVlZENsYXNzID0gdGhpcy5wQ29ubiQuZ2V0Q2FzZVN1bW1hcnkoKS5jb250ZW50LmNsYXNzSUQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlID0gYERBVEEtUE9SVEFMICQke2FwcE5hbWV9YDtcbiAgICAgIGZlZWRJRCA9ICdweURhc2hib2FyZEZlZWQnO1xuICAgICAgZmVlZENsYXNzID0gJ0BiYXNlY2xhc3MnO1xuICAgIH1cblxuICAgIGNvbnN0IG9uVXBsb2FkUHJvZ3Jlc3MgPSAoKSA9PiB7fTtcbiAgICBjb25zdCBlcnJvckhhbmRsZXIgPSAoKSA9PiB7fTtcbiAgICBjb25zdCBhdHRhY2htZW50cyA9ICgpID0+IHt9O1xuXG4gICAgY29uc3QgcG9zdENvbW1lbnQgPSAoeyB2YWx1ZTogbWVzc2FnZSwgY2xlYXIgfSkgPT4ge1xuICAgICAgY29uc3QgYXR0YWNobWVudElEcyA9IFtdO1xuICAgICAgY29uc3QgYXR0YWNobWVudFV0aWxzID0gUENvcmUuZ2V0QXR0YWNobWVudFV0aWxzKCk7XG4gICAgICBpZiAoYXR0YWNobWVudHMgJiYgISFhdHRhY2htZW50cy5sZW5ndGgpIHtcbiAgICAgICAgLyogYXR0YWNobWVudHM7XG4gICAgICAgICAgLmZpbHRlcigoZmlsZSkgPT4gIWZpbGUuZXJyb3IpXG4gICAgICAgICAgLm1hcCgoZmlsZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGF0dGFjaG1lbnRVdGlsc1xuICAgICAgICAgICAgICAudXBsb2FkQXR0YWNobWVudChmaWxlLCBvblVwbG9hZFByb2dyZXNzLCBlcnJvckhhbmRsZXIpXG4gICAgICAgICAgICAgIC50aGVuKChmaWxlUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlQ29uZmlnID0ge1xuICAgICAgICAgICAgICAgICAgdHlwZTogXCJGaWxlXCIsXG4gICAgICAgICAgICAgICAgICBjYXRlZ29yeTogXCJGaWxlXCIsXG4gICAgICAgICAgICAgICAgICBmaWxlTmFtZTogZmlsZS5uYW1lLFxuICAgICAgICAgICAgICAgICAgSUQ6IGZpbGVSZXNwb25zZS5kYXRhLklEXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBhdHRhY2htZW50SURzLnB1c2goZmlsZUNvbmZpZyk7XG4gICAgICAgICAgICAgICAgaWYgKGF0dGFjaG1lbnRzLmxlbmd0aCA9PT0gYXR0YWNobWVudElEcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgIHBvc3RNZXNzYWdlKFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtTWFya2Rvd25Ub01zZyhtZXNzYWdlKSxcbiAgICAgICAgICAgICAgICAgICAgYXR0YWNobWVudElEc1xuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIGNsZWFyKCk7XG4gICAgICAgICAgICAgICAgICBzZXRBdHRhY2htZW50cyhbXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgIC5jYXRjaChjb25zb2xlLmVycm9yKTtcbiAgICAgICAgICB9KTsgKi9cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHBvc3RNZXNzYWdlKHZhbHVlLCB0cmFuc2Zvcm1NYXJrZG93blRvTXNnKG1lc3NhZ2UpKTtcbiAgICAgICAgY2xlYXIoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLypcblxuICAgIGNvbnN0IHsgZ2V0UENvbm5lY3QsIG1lc3NhZ2VJRHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IFttZW50aW9uUmVzdWx0cywgc2V0TWVudGlvblJlc3VsdHNdID0gdXNlU3RhdGUoW10pO1xuICAgIGNvbnN0IFt0YWdSZXN1bHRzLCBzZXRUYWdSZXN1bHRzXSA9IHVzZVN0YXRlKFtdKTtcbiAgICBjb25zdCBbYXR0YWNobWVudHMsIHNldEF0dGFjaG1lbnRzXSA9IHVzZVN0YXRlKFtdKTtcbiAgICBjb25zdCBbZmVlZEZpbHRlcnMsIHNldEZlZWRGaWx0ZXJzXSA9IHVzZVN0YXRlKCk7XG4gICAgY29uc3Qge1xuICAgICAgZmV0Y2hNZXNzYWdlcyxcbiAgICAgIHBvc3RNZXNzYWdlLFxuICAgICAgZ2V0TWVudGlvblN1Z2dlc3Rpb25zLFxuICAgICAgZ2V0VGFnU3VnZ2VzdGlvbnNcbiAgICB9ID0gRmVlZEFwaShnZXRQQ29ubmVjdCgpKTtcbiAgICBjb25zdCBhcHBOYW1lID0gUENvcmUuZ2V0RW52aXJvbm1lbnRJbmZvKCkuZ2V0QXBwbGljYXRpb25OYW1lKCk7XG4gICAgbGV0IHZhbHVlID0gXCJcIjtcbiAgICBsZXQgZmVlZElEID0gXCJcIjtcbiAgICBsZXQgZmVlZENsYXNzID0gXCJcIjtcbiAgICBpZiAoZ2V0UENvbm5lY3QoKS5nZXRDYXNlU3VtbWFyeSgpLklEKSB7XG4gICAgICB2YWx1ZSA9IGdldFBDb25uZWN0KCkuZ2V0Q2FzZVN1bW1hcnkoKS5JRDtcbiAgICAgIGZlZWRJRCA9IFwicHlDYXNlRmVlZFwiO1xuICAgICAgZmVlZENsYXNzID0gZ2V0UENvbm5lY3QoKS5nZXRDYXNlU3VtbWFyeSgpLmNvbnRlbnQuY2xhc3NJRDtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSBgREFUQS1QT1JUQUwgJCR7YXBwTmFtZX1gO1xuICAgICAgZmVlZElEID0gXCJweURhc2hib2FyZEZlZWRcIjtcbiAgICAgIGZlZWRDbGFzcyA9IFwiQGJhc2VjbGFzc1wiO1xuICAgIH1cbiAgICAvLyBGb3IgY2FuY2VsbGluZyBmZXRjaHJlcXVlc3QgZm9yIGZpbGV0cnNcbiAgICBjb25zdCBmZXRjaE1lc3NhZ2VzQ2FuY2VsVG9rZW5Tb3VyY2UgPSB1c2VSZWYoW10pO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGZldGNoTWVzc2FnZXMoXG4gICAgICAgIHZhbHVlLFxuICAgICAgICBmZWVkSUQsXG4gICAgICAgIGZlZWRDbGFzcyxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgZmV0Y2hNZXNzYWdlc0NhbmNlbFRva2VuU291cmNlLmN1cnJlbnRcbiAgICAgICkudGhlbigocmVzKSA9PiB7XG4gICAgICAgIHNldEZlZWRGaWx0ZXJzKHJlcyk7XG4gICAgICB9KTtcbiAgICAgIFBDb3JlLmdldEFzc2V0TG9hZGVyKCkuZ2V0TG9hZGVyKFwiY29tcG9uZW50LWxvYWRlclwiKShbXCJBY3Rpdml0eVwiXSk7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gICAgfSwgW10pO1xuXG4gICAgY29uc3Qgb25VcGxvYWRQcm9ncmVzcyA9IHVzZUNhbGxiYWNrKChmaWxlKSA9PiB7XG4gICAgICByZXR1cm4gKHsgbG9hZGVkLCB0b3RhbCB9KSA9PiB7XG4gICAgICAgIGZpbGUucHJvZ3Jlc3MgPSBNYXRoLmZsb29yKChsb2FkZWQgLyB0b3RhbCkgKiAxMDApO1xuICAgICAgICBzZXRBdHRhY2htZW50cygoY3VycmVudCkgPT4ge1xuICAgICAgICAgIHJldHVybiBjdXJyZW50Lm1hcCgoY3VyckZpbGUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBjdXJyRmlsZS5uYW1lID09PSBmaWxlLm5hbWUgPyBmaWxlIDogY3VyckZpbGU7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICB9LCBbXSk7XG5cbiAgICBjb25zdCBlcnJvckhhbmRsZXIgPSB1c2VDYWxsYmFjaygoaXNGZXRjaENhbmNlbGVkLCBmaWxlKSA9PiB7XG4gICAgICByZXR1cm4gKGVycm9yKSA9PiB7XG4gICAgICAgIGlmICghaXNGZXRjaENhbmNlbGVkKGVycm9yKSkge1xuICAgICAgICAgIGxldCBsb2NhbGl6ZWRWYWx1ZSA9IFwiVXBsb2FkIGZhaWxlZFwiO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGVycm9yLnJlc3BvbnNlICYmXG4gICAgICAgICAgICBlcnJvci5yZXNwb25zZS5kYXRhICYmXG4gICAgICAgICAgICBlcnJvci5yZXNwb25zZS5kYXRhLmVycm9yRGV0YWlsc1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgbG9jYWxpemVkVmFsdWUgPSBlcnJvci5yZXNwb25zZS5kYXRhLmVycm9yRGV0YWlsc1swXS5sb2NhbGl6ZWRWYWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZGVsZXRlIGZpbGUucHJvZ3Jlc3M7XG4gICAgICAgICAgc2V0QXR0YWNobWVudHMoKGN1cnJlbnQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBjdXJyZW50Lm1hcCgoY3VyckZpbGUpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGN1cnJGaWxlLm5hbWUgPT09IGZpbGUubmFtZSkge1xuICAgICAgICAgICAgICAgIGN1cnJGaWxlLm1ldGEgPSBsb2NhbGl6ZWRWYWx1ZTtcbiAgICAgICAgICAgICAgICBjdXJyRmlsZS5lcnJvciA9IHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIGN1cnJGaWxlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZXJyb3IuaXNIYW5kbGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH07XG4gICAgfSwgW10pO1xuXG4gICAgY29uc3QgcG9zdENvbW1lbnQgPSAoeyB2YWx1ZTogbWVzc2FnZSwgY2xlYXIgfSkgPT4ge1xuICAgICAgY29uc3QgYXR0YWNobWVudElEcyA9IFtdO1xuICAgICAgY29uc3QgYXR0YWNobWVudFV0aWxzID0gUENvcmUuZ2V0QXR0YWNobWVudFV0aWxzKCk7XG4gICAgICBpZiAoYXR0YWNobWVudHMgJiYgISFhdHRhY2htZW50cy5sZW5ndGgpIHtcbiAgICAgICAgYXR0YWNobWVudHNcbiAgICAgICAgICAuZmlsdGVyKChmaWxlKSA9PiAhZmlsZS5lcnJvcilcbiAgICAgICAgICAubWFwKChmaWxlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYXR0YWNobWVudFV0aWxzXG4gICAgICAgICAgICAgIC51cGxvYWRBdHRhY2htZW50KGZpbGUsIG9uVXBsb2FkUHJvZ3Jlc3MsIGVycm9ySGFuZGxlcilcbiAgICAgICAgICAgICAgLnRoZW4oKGZpbGVSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVDb25maWcgPSB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBcIkZpbGVcIixcbiAgICAgICAgICAgICAgICAgIGNhdGVnb3J5OiBcIkZpbGVcIixcbiAgICAgICAgICAgICAgICAgIGZpbGVOYW1lOiBmaWxlLm5hbWUsXG4gICAgICAgICAgICAgICAgICBJRDogZmlsZVJlc3BvbnNlLmRhdGEuSURcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRJRHMucHVzaChmaWxlQ29uZmlnKTtcbiAgICAgICAgICAgICAgICBpZiAoYXR0YWNobWVudHMubGVuZ3RoID09PSBhdHRhY2htZW50SURzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgcG9zdE1lc3NhZ2UoXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1NYXJrZG93blRvTXNnKG1lc3NhZ2UpLFxuICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50SURzXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgY2xlYXIoKTtcbiAgICAgICAgICAgICAgICAgIHNldEF0dGFjaG1lbnRzKFtdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgLmNhdGNoKGNvbnNvbGUuZXJyb3IpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcG9zdE1lc3NhZ2UodmFsdWUsIHRyYW5zZm9ybU1hcmtkb3duVG9Nc2cobWVzc2FnZSkpO1xuICAgICAgICBjbGVhcigpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAqL1xuXG4gICAgLyogT24gc2VhcmNoIGlzIGNhbGxlZCB3aGVuIEAgY2hhcmFjdGVyIGlzIGVudGVyZWQgYW5kIHdpbGwgZGlzcGxheSB0aGUgbWVudGlvbiAqL1xuXG4gICAgLypcbiAgICBjb25zdCBvblNlYXJjaCA9IGRlYm91bmNlKChldmVudCkgPT4ge1xuICAgICAgaWYgKGV2ZW50LnR5cGUgPT09IFwibWVudGlvblwiKSB7XG4gICAgICAgIGdldE1lbnRpb25TdWdnZXN0aW9ucyh7XG4gICAgICAgICAgcHVsc2VDb250ZXh0OiB2YWx1ZSxcbiAgICAgICAgICBzZWFyY2hGb3I6IGV2ZW50LnNlYXJjaFxuICAgICAgICB9KS50aGVuKChyZXMpID0+IHtcbiAgICAgICAgICBzZXRNZW50aW9uUmVzdWx0cyhyZXMpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdldFRhZ1N1Z2dlc3Rpb25zKHtcbiAgICAgICAgICBzZWFyY2hGb3I6IGV2ZW50LnNlYXJjaFxuICAgICAgICB9KS50aGVuKChyZXMpID0+IHtcbiAgICAgICAgICBzZXRUYWdSZXN1bHRzKHJlcyk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sIDE1MCk7XG5cbiAgICBjb25zdCB1c2VyTmFtZSA9IGdldFBDb25uZWN0KCkuZ2V0RW52aXJvbm1lbnRJbmZvKCkuZ2V0T3BlcmF0b3JOYW1lKCk7XG4gICAgY29uc3QgaW1hZ2VLZXkgPSBnZXRQQ29ubmVjdCgpLmdldEVudmlyb25tZW50SW5mbygpLmdldE9wZXJhdG9ySW1hZ2VJbnNLZXkoKTtcblxuICAgIGNvbnN0IG9uRmlsZXNBZGRlZCA9IHVzZUNhbGxiYWNrKChuZXdseUFkZGVkRmlsZXMpID0+IHtcbiAgICAgIHNldEF0dGFjaG1lbnRzKChjdXJyZW50KSA9PiBbXG4gICAgICAgIC4uLm5ld2x5QWRkZWRGaWxlcy5tYXAoKGZpbGUpID0+IHtcbiAgICAgICAgICBpZiAoIXZhbGlkYXRlTWF4U2l6ZShmaWxlLCA1KSkge1xuICAgICAgICAgICAgZmlsZS5lcnJvciA9IHRydWU7XG4gICAgICAgICAgICBmaWxlLm1ldGEgPSBcIkZpbGUgaXMgdG9vIGJpZy4gTWF4IGFsbG93ZWQgc2l6ZSBpcyA1TUIuXCI7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZpbGUuaWNvbiA9IGdldEljb25Gcm9tRmlsZVR5cGUoZmlsZS50eXBlKTtcbiAgICAgICAgICBmaWxlLm9uRGVsZXRlID0gKCkgPT4ge1xuICAgICAgICAgICAgc2V0QXR0YWNobWVudHMoKGMpID0+IGMuZmlsdGVyKChmKSA9PiBmLm5hbWUgIT09IGZpbGUubmFtZSkpO1xuICAgICAgICAgIH07XG4gICAgICAgICAgcmV0dXJuIGZpbGU7XG4gICAgICAgIH0pLFxuICAgICAgICAuLi5jdXJyZW50XG4gICAgICBdKTtcbiAgICB9LCBbXSk7XG5cbiAgICBjb25zdCBvbkZpbHRlckNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgICAgKGZpbHRlcklEKSA9PiB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRGaWx0ZXJzID0gWy4uLmZlZWRGaWx0ZXJzXTtcbiAgICAgICAgY29uc3QgZmlsdGVyVG9VcGRhdGUgPSB1cGRhdGVkRmlsdGVycy5maW5kKFxuICAgICAgICAgIChmZWVkSXRlbSkgPT4gZmVlZEl0ZW0uaWQgPT09IGZpbHRlcklEXG4gICAgICAgICk7XG4gICAgICAgIGZpbHRlclRvVXBkYXRlLm9uID0gIWZpbHRlclRvVXBkYXRlLm9uO1xuICAgICAgICBpZiAoZmlsdGVySUQgPT09IFwiQWxsXCIpXG4gICAgICAgICAgdXBkYXRlZEZpbHRlcnMuZm9yRWFjaCgoZmVlZEZpbHRlcikgPT4ge1xuICAgICAgICAgICAgZmVlZEZpbHRlci5vbiA9IGZpbHRlclRvVXBkYXRlLm9uO1xuICAgICAgICAgIH0pO1xuICAgICAgICBlbHNlIGlmIChcbiAgICAgICAgICB1cGRhdGVkRmlsdGVycy5maW5kKFxuICAgICAgICAgICAgKGZlZWRJdGVtKSA9PiBmZWVkSXRlbS5vbiA9PT0gZmFsc2UgJiYgZmVlZEl0ZW0uaWQgIT09IFwiQWxsXCJcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICAgICB1cGRhdGVkRmlsdGVycy5maW5kKChmZWVkSXRlbSkgPT4gZmVlZEl0ZW0uaWQgPT09IFwiQWxsXCIpLm9uID0gZmFsc2U7XG4gICAgICAgIGVsc2UgdXBkYXRlZEZpbHRlcnMuZmluZCgoZmVlZEl0ZW0pID0+IGZlZWRJdGVtLmlkID09PSBcIkFsbFwiKS5vbiA9IHRydWU7XG4gICAgICAgIHNldEZlZWRGaWx0ZXJzKHVwZGF0ZWRGaWx0ZXJzKTtcbiAgICAgICAgZmV0Y2hNZXNzYWdlcyhcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICBmZWVkSUQsXG4gICAgICAgICAgZmVlZENsYXNzLFxuICAgICAgICAgIGZlZWRGaWx0ZXJzLFxuICAgICAgICAgIGZldGNoTWVzc2FnZXNDYW5jZWxUb2tlblNvdXJjZS5jdXJyZW50XG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgW1xuICAgICAgICB2YWx1ZSxcbiAgICAgICAgZmVlZElELFxuICAgICAgICBmZWVkQ2xhc3MsXG4gICAgICAgIGZlZWRGaWx0ZXJzLFxuICAgICAgICBmZXRjaE1lc3NhZ2VzQ2FuY2VsVG9rZW5Tb3VyY2UsXG4gICAgICAgIGZldGNoTWVzc2FnZXNcbiAgICAgIF1cbiAgICApO1xuXG4gICAgKi9cblxuICAgIC8vIHNldCB1cCBzdmcgaW1hZ2VzXG4gICAgdGhpcy5zdmdDb21tZW50JCA9IHRoaXMudXRpbHMuZ2V0SW1hZ2VTcmMoJ2NoYXQnLCB0aGlzLnV0aWxzLmdldFNES1N0YXRpY0NvbnRlbnRVcmwoKSk7XG4gICAgdGhpcy5zdmdMaWtlJCA9IHRoaXMudXRpbHMuZ2V0SW1hZ2VTcmMoJ3RodW1icy11cCcsIHRoaXMudXRpbHMuZ2V0U0RLU3RhdGljQ29udGVudFVybCgpKTtcbiAgICB0aGlzLnN2Z0xpa2VkQnlNZSQgPSB0aGlzLnV0aWxzLmdldEltYWdlU3JjKCd0aHVtYnMtdXAtc29saWQnLCB0aGlzLnV0aWxzLmdldFNES1N0YXRpY0NvbnRlbnRVcmwoKSk7XG4gICAgdGhpcy5zdmdTZW5kJCA9IHRoaXMudXRpbHMuZ2V0SW1hZ2VTcmMoJ3NlbmQnLCB0aGlzLnV0aWxzLmdldFNES1N0YXRpY0NvbnRlbnRVcmwoKSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnVuc3Vic2NyaWJlRm4pIHtcbiAgICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2FsbGJhY2sgcGFzc2VkIHdoZW4gc3Vic2NyaWJpbmcgdG8gc3RvcmUgY2hhbmdlXG4gIG9uU3RhdGVDaGFuZ2UoKSB7XG4gICAgY29uc3QgYkxvZ2dpbmcgPSBmYWxzZTtcbiAgICBpZiAoYkxvZ2dpbmcpIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKCBgaW4gJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9IG9uU3RhdGVDaGFuZ2VgICk7XG4gICAgICAvLyBkZWJ1Z2dlcjtcbiAgICB9XG4gICAgLy8gU2hvdWxkIGFsd2F5cyBjaGVjayB0aGUgYnJpZGdlIHRvIHNlZSBpZiB0aGUgY29tcG9uZW50IHNob3VsZCB1cGRhdGUgaXRzZWxmIChyZS1yZW5kZXIpXG4gICAgY29uc3QgYlVwZGF0ZVNlbGYgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5zaG91bGRDb21wb25lbnRVcGRhdGUodGhpcyk7XG4gICAgLy8gY29uc29sZS5sb2coIGAke3RoaXMuY29uc3RydWN0b3IubmFtZX0gc2hvdWxkQ29tcG9uZW50VXBkYXRlOiAke2JVcGRhdGVTZWxmfWApO1xuXG4gICAgLy8gT05MWSBjYWxsIHVwZGF0ZVNlbGYgd2hlbiB0aGUgY29tcG9uZW50IHNob3VsZCB1cGRhdGVcbiAgICAvLyAgICBBTkQgcmVtb3ZpbmcgdGhlIFwiZ2F0ZVwiIHRoYXQgd2FzIHB1dCB0aGVyZSBzaW5jZSBzaG91bGRDb21wb25lbnRVcGRhdGVcbiAgICAvLyAgICAgIHNob3VsZCBiZSB0aGUgcmVhbCBcImdhdGVcIlxuICAgIGlmIChiVXBkYXRlU2VsZikge1xuICAgICAgdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEB0cy1pZ25vcmUgLSBwYXJhbWV0ZXIg4oCcY29udGV4dE5hbWXigJ0gZm9yIGdldERhdGFPYmplY3QgbWV0aG9kIHNob3VsZCBiZSBvcHRpb25hbFxuICAgICAgY29uc3QgbmV3UHVsc2VEYXRhID0gdGhpcy5wQ29ubiQuZ2V0RGF0YU9iamVjdCgpLnB1bHNlO1xuXG4gICAgICBpZiAoIWlzRXF1YWwobmV3UHVsc2VEYXRhLCB0aGlzLnB1bHNlRGF0YSkpIHtcbiAgICAgICAgdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQHRzLWlnbm9yZSAtIHBhcmFtZXRlciDigJxjb250ZXh0TmFtZeKAnSBmb3IgZ2V0RGF0YU9iamVjdCBtZXRob2Qgc2hvdWxkIGJlIG9wdGlvbmFsXG4gICAgdGhpcy5wdWxzZURhdGEgPSB0aGlzLnBDb25uJC5nZXREYXRhT2JqZWN0KCkucHVsc2U7XG4gIH1cblxuICB1cGRhdGVTZWxmKCkge1xuICAgIHRoaXMuZ2V0TWVzc2FnZURhdGEoKTtcbiAgfVxuXG4gIGdldE1lc3NhZ2VEYXRhKCkge1xuICAgIGNvbnN0IG1lc3NhZ2VJRHMgPSAodGhpcy5wQ29ubiQuZ2V0Q29uZmlnUHJvcHMoKSBhcyBhbnkpLm1lc3NhZ2VJRHM7XG4gICAgY29uc3QgdXNlck5hbWUgPSAodGhpcy5wQ29ubiQuZ2V0Q29uZmlnUHJvcHMoKSBhcyBhbnkpLmN1cnJlbnRVc2VyO1xuICAgIC8vIEB0cy1pZ25vcmUgLSBzZWNvbmQgcGFyYW1ldGVyIHBhZ2VSZWZlcmVuY2UgZm9yIGdldFZhbHVlIG1ldGhvZCBzaG91bGQgYmUgb3B0aW9uYWxcbiAgICBjb25zdCBpbWFnZUtleSA9IHRoaXMucENvbm4kLmdldFZhbHVlKCdPcGVyYXRvcklELnB5SW1hZ2VJbnNLZXknKTtcblxuICAgIC8vIEB0cy1pZ25vcmUgLSBwYXJhbWV0ZXIg4oCcY29udGV4dE5hbWXigJ0gZm9yIGdldERhdGFPYmplY3QgbWV0aG9kIHNob3VsZCBiZSBvcHRpb25hbFxuICAgIGNvbnN0IG9EYXRhOiBhbnkgPSB0aGlzLnBDb25uJC5nZXREYXRhT2JqZWN0KCk7XG5cbiAgICBpZiAobWVzc2FnZUlEcyAmJiBtZXNzYWdlSURzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMucHVsc2VNZXNzYWdlcyQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9EYXRhLnB1bHNlLm1lc3NhZ2VzKSk7XG5cbiAgICAgIC8vIGNvbnZlcnQgdG8ganVzdCBhbiBhcnJheSBvZiBvYmplY3RzXG4gICAgICB0aGlzLnB1bHNlTWVzc2FnZXMkID0gdGhpcy5jb252ZXJ0VG9BcnJheSh0aGlzLnB1bHNlTWVzc2FnZXMkKTtcblxuICAgICAgLy8gY3JlYXRlIGEgY29weSwgc28gd2UgY2FuIG1vZGlmeVxuICAgICAgdGhpcy5wdWxzZU1lc3NhZ2VzJCA9IHRoaXMuYXBwZW5kUHVsc2VNZXNzYWdlKHRoaXMucHVsc2VNZXNzYWdlcyQpO1xuXG4gICAgICAvLyBtb3N0IHJlY2VudCBvbiB0b3BcbiAgICAgIHRoaXMucHVsc2VNZXNzYWdlcyQgPSB0aGlzLnB1bHNlTWVzc2FnZXMkLnNvcnQoKGEsIGIpID0+IChhLnVwZGF0ZVRpbWVVVEMgPCBiLnVwZGF0ZVRpbWVVVEMgPyAxIDogLTEpKTtcbiAgICB9XG4gIH1cblxuICBjb252ZXJ0VG9BcnJheShtZXNzYWdlczogYW55W10pOiBhbnlbXSB7XG4gICAgY29uc3QgYXJNZXNzYWdlczogYW55W10gPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWVzc2FnZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFyTWVzc2FnZXMucHVzaChtZXNzYWdlc1tpXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFyTWVzc2FnZXM7XG4gIH1cblxuICBhcHBlbmRQdWxzZU1lc3NhZ2UobWVzc2FnZXM6IGFueVtdKTogYW55W10ge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWVzc2FnZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBtZXNzYWdlc1tpXTtcbiAgICAgIGNvbnN0IHBvc3RlZFRpbWUgPSBtZXNzYWdlLnBvc3RlZFRpbWU7XG4gICAgICBjb25zdCB1cGRhdGVkVGltZSA9IG1lc3NhZ2UudXBkYXRlZFRpbWU7XG5cbiAgICAgIHRoaXMuc2hvd1JlcGx5Q29tbWVudCRbbWVzc2FnZS5JRF0gPSBmYWxzZTtcblxuICAgICAgbWVzc2FnZS5kaXNwbGF5UG9zdGVkVGltZSA9IHRoaXMudXRpbHMuZ2VuZXJhdGVEYXRlVGltZShwb3N0ZWRUaW1lLCAnRGF0ZVRpbWUtU2luY2UnKTtcblxuICAgICAgLy8gZm9yIHNvcnRpbmcgbGFzdGVkIHVwZGF0ZVxuICAgICAgaWYgKHVwZGF0ZWRUaW1lICE9IG51bGwpIHtcbiAgICAgICAgbWVzc2FnZS51cGRhdGVUaW1lVVRDID0gbmV3IERhdGUodXBkYXRlZFRpbWUpLmdldFRpbWUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1lc3NhZ2UudXBkYXRlVGltZVVUQyA9IG5ldyBEYXRlKHBvc3RlZFRpbWUpLmdldFRpbWUoKTtcbiAgICAgIH1cblxuICAgICAgbWVzc2FnZS5kaXNwbGF5UG9zdGVkQnkgPSBtZXNzYWdlLnBvc3RlZEJ5VXNlci5uYW1lO1xuICAgICAgbWVzc2FnZS5kaXNwbGF5UG9zdGVkQnlJbml0aWFscyA9IHRoaXMudXRpbHMuZ2V0SW5pdGlhbHMobWVzc2FnZS5wb3N0ZWRCeVVzZXIubmFtZSk7XG5cbiAgICAgIC8vIGlmIGRpZG4ndCBicmVhaywgdGhlbiBsb29rIGF0IHRoZSByZXBsaWVzXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1lc3NhZ2UucmVwbGllcy5sZW5ndGg7IGorKykge1xuICAgICAgICBjb25zdCByZXBseSA9IG1lc3NhZ2UucmVwbGllc1tqXTtcblxuICAgICAgICBjb25zdCByZXBseVBvc3RlZFRpbWUgPSByZXBseS5wb3N0ZWRUaW1lO1xuICAgICAgICByZXBseS5kaXNwbGF5UG9zdGVkVGltZSA9IHRoaXMudXRpbHMuZ2VuZXJhdGVEYXRlVGltZShyZXBseVBvc3RlZFRpbWUsICdEYXRlVGltZS1TaW5jZScpO1xuXG4gICAgICAgIC8vIGxldCBvUmVwbHlVc2VyID0gdGhpcy51c2VyRGF0YS5nZXQocmVwbHkucG9zdGVkQnlVc2VyKTtcbiAgICAgICAgY29uc3Qgb1JlcGx5VXNlciA9IHJlcGx5LnBvc3RlZEJ5VXNlcjtcblxuICAgICAgICBpZiAob1JlcGx5VXNlcikge1xuICAgICAgICAgIHJlcGx5LmRpc3BsYXlQb3N0ZWRCeSA9IG9SZXBseVVzZXIubmFtZTtcbiAgICAgICAgICByZXBseS5kaXNwbGF5UG9zdGVkQnlJbml0aWFscyA9IHRoaXMudXRpbHMuZ2V0SW5pdGlhbHMob1JlcGx5VXNlci5uYW1lKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gLy8gZm9yXG5cbiAgICByZXR1cm4gbWVzc2FnZXM7XG4gIH1cblxuICB1cGRhdGVNZXNzYWdlc1dpdGhPcGVyYXRvcnMoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnB1bHNlTWVzc2FnZXMkLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5wdWxzZU1lc3NhZ2VzJFtpXTtcblxuICAgICAgY29uc3QgcG9zdGVkVGltZSA9IG1lc3NhZ2UucG9zdGVkVGltZTtcblxuICAgICAgdGhpcy5zaG93UmVwbHlDb21tZW50JFttZXNzYWdlLklEXSA9IGZhbHNlO1xuXG4gICAgICBtZXNzYWdlLmRpc3BsYXlQb3N0ZWRUaW1lID0gdGhpcy51dGlscy5nZW5lcmF0ZURhdGVUaW1lKHBvc3RlZFRpbWUsICdEYXRlVGltZS1TaW5jZScpO1xuXG4gICAgICBjb25zdCBvVXNlciA9IHRoaXMudXNlckRhdGEuZ2V0KG1lc3NhZ2UucG9zdGVkQnkpO1xuXG4gICAgICBpZiAob1VzZXIpIHtcbiAgICAgICAgbWVzc2FnZS5kaXNwbGF5UG9zdGVkQnkgPSBvVXNlci5weVVzZXJOYW1lO1xuICAgICAgICBtZXNzYWdlLmRpc3BsYXlQb3N0ZWRCeUluaXRpYWxzID0gdGhpcy51dGlscy5nZXRJbml0aWFscyhvVXNlci5weVVzZXJOYW1lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG9Vc2VyUGFyYW1zID0ge1xuICAgICAgICAgIE9wZXJhdG9ySWQ6IG1lc3NhZ2UucG9zdGVkQnlcbiAgICAgICAgfTtcbiAgICAgICAgLy8gRG8gc29tZXRoaW5nIHdpdGggb1VzZXJQYXJhbXNcbiAgICAgIH1cblxuICAgICAgLy8gaWYgZGlkbid0IGJyZWFrLCB0aGVuIGxvb2sgYXQgdGhlIHJlcGxpZXNcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWVzc2FnZS5yZXBsaWVzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIGNvbnN0IHJlcGx5ID0gbWVzc2FnZS5yZXBsaWVzW2pdO1xuXG4gICAgICAgIGNvbnN0IHJlcGx5UG9zdGVkVGltZSA9IHJlcGx5LnBvc3RlZFRpbWU7XG4gICAgICAgIHJlcGx5LmRpc3BsYXlQb3N0ZWRUaW1lID0gdGhpcy51dGlscy5nZW5lcmF0ZURhdGVUaW1lKHJlcGx5UG9zdGVkVGltZSwgJ0RhdGVUaW1lLVNpbmNlJyk7XG5cbiAgICAgICAgLy8gbGV0IG9SZXBseVVzZXIgPSB0aGlzLnVzZXJEYXRhLmdldChyZXBseS5wb3N0ZWRCeVVzZXIpO1xuICAgICAgICBjb25zdCBvUmVwbHlVc2VyID0gcmVwbHkucG9zdGVkQnlVc2VyO1xuXG4gICAgICAgIGlmIChvUmVwbHlVc2VyKSB7XG4gICAgICAgICAgcmVwbHkuZGlzcGxheVBvc3RlZEJ5ID0gb1JlcGx5VXNlci5uYW1lO1xuICAgICAgICAgIHJlcGx5LmRpc3BsYXlQb3N0ZWRCeUluaXRpYWxzID0gdGhpcy51dGlscy5nZXRJbml0aWFscyhvUmVwbHlVc2VyLm5hbWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSAvLyBmb3JcbiAgfVxuXG4gIHVwZGF0ZUN1cnJlbnRVc2VyTmFtZShzVXNlcjogc3RyaW5nKSB7XG4gICAgdGhpcy5jdXJyZW50VXNlckluaXRpYWxzJCA9IHRoaXMudXRpbHMuZ2V0SW5pdGlhbHMoc1VzZXIpO1xuICAgIHRoaXMuY3VycmVudFVzZXJOYW1lJCA9IHNVc2VyO1xuICB9XG5cbiAgcG9zdENsaWNrKCkge1xuICAgIC8vIGRvbid0IHNlbmQgYSBibGFuayBtZXNzYWdlXG4gICAgaWYgKHRoaXMucHVsc2VDb252ZXJzYXRpb24gJiYgdGhpcy5wdWxzZUNvbnZlcnNhdGlvbiAhPSAnJykge1xuICAgICAgLy8gbGV0IHB1bHNlTWVzc2FnZSA9IHtcbiAgICAgIC8vICAgY29udGV4dE5hbWUgOiB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpLFxuICAgICAgLy8gICBtZXNzYWdlOiB0aGlzLnB1bHNlQ29udmVyc2F0aW9uLFxuICAgICAgLy8gICBwdWxzZUNvbnRleHQ6IHRoaXMucENvbm4kLmdldFZhbHVlKFwiLnB6SW5zS2V5XCIpXG4gICAgICAvLyB9O1xuXG4gICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgIC8vIHVzZWQgdG8gYmU6IHRoaXMuLypmZWVkQVBJLiovcG9zdE1lc3NhZ2UocHVsc2VNZXNzYWdlKTtcbiAgICAgIC8vIFdpdGggbGF0ZXN0IEZlZWRBUEksIHRoZSAxc3QgYXJnIHNob3VsZCBiZSBnZXRDb25maWdQcm9wcygpLnZhbHVlXG5cbiAgICAgIC8vIElmIGZlZWRBUEkgaXMgZGVmaW5lZCB0aGVuIG9ubHkgcG9zdCBtZXNzYWdlXG4gICAgICBpZiAodGhpcy5mZWVkQVBJKSB7XG4gICAgICAgIHRoaXMuLyogZmVlZEFQSS4gKi8gcG9zdE1lc3NhZ2UoKHRoaXMucENvbm4kLmdldENvbmZpZ1Byb3BzKCkgYXMgYW55KS52YWx1ZSwgdGhpcy5wdWxzZUNvbnZlcnNhdGlvbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmxvZyhcIldlIGRvbid0IHN1cHBvcnQgUHVsc2UgeWV0XCIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGNsZWFyIG91dCBsb2NhbCBjb3B5XG4gICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwdWxzZU1lc3NhZ2UnKSBhcyBIVE1MRWxlbWVudCB8IGFueSkudmFsdWUgPSAnJztcbiAgICB0aGlzLnB1bHNlQ29udmVyc2F0aW9uID0gJyc7XG4gIH1cblxuICBtZXNzYWdlQ2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnB1bHNlQ29udmVyc2F0aW9uID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICB9XG5cbiAgbGlrZUNsaWNrKG1lc3NhZ2VJRDogc3RyaW5nLCByTWVzc2FnZUlEOiBzdHJpbmcsIGJMaWtlZEJ5TWU6IGJvb2xlYW4sIGxldmVsOiBzdHJpbmcpIHtcbiAgICBsZXQgcHVsc2VNZXNzYWdlID0ge307XG5cbiAgICBpZiAobGV2ZWwgPT09ICd0b3AnKSB7XG4gICAgICBwdWxzZU1lc3NhZ2UgPSB7XG4gICAgICAgIHB1bHNlQ29udGV4dDogck1lc3NhZ2VJRCxcbiAgICAgICAgaXNSZXBseTogbnVsbCxcbiAgICAgICAgY29udGV4dE5hbWU6IHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKCksXG4gICAgICAgIGxpa2VkQnk6IGJMaWtlZEJ5TWUsXG4gICAgICAgIG1lc3NhZ2VJRFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHVsc2VNZXNzYWdlID0ge1xuICAgICAgICBwdWxzZUNvbnRleHQ6IHJNZXNzYWdlSUQsXG4gICAgICAgIGlzUmVwbHk6IHRydWUsXG4gICAgICAgIGNvbnRleHROYW1lOiB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpLFxuICAgICAgICBsaWtlZEJ5OiBiTGlrZWRCeU1lLFxuICAgICAgICBtZXNzYWdlSURcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gZGVidWdnZXI7XG4gICAgdGhpcy4vKiBmZWVkQVBJLiAqLyBsaWtlTWVzc2FnZShwdWxzZU1lc3NhZ2UpO1xuICB9XG5cbiAgY29tbWVudENsaWNrKG1lc3NhZ2VJRCkge1xuICAgIC8vIGl0ZXJhdG9yIHRocm91Z2ggbWVzc2FnZXMsIGZpbmQgbWF0Y2gsIHR1cm4gb24gY29tbWVudCBlbnRyeVxuICAgIGNvbnN0IGZvdW5kTWVzc2FnZSA9IHRoaXMucHVsc2VNZXNzYWdlcyQuZmluZChtZXNzYWdlID0+IG1lc3NhZ2UuSUQgPT09IG1lc3NhZ2VJRCk7XG5cbiAgICBpZiAoZm91bmRNZXNzYWdlKSB7XG4gICAgICB0aGlzLnNob3dSZXBseUNvbW1lbnQkW2ZvdW5kTWVzc2FnZS5JRF0gPSB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcG9zdENvbW1lbnRDbGljayhtZXNzYWdlSUQpIHtcbiAgICAvLyBkZWJ1Z2dlcjtcblxuICAgIGlmICh0aGlzLnB1bHNlQ29tbWVudFttZXNzYWdlSURdICYmIHRoaXMucHVsc2VDb21tZW50W21lc3NhZ2VJRF0gIT0gJycpIHtcbiAgICAgIC8vIGxldCBwdWxzZU1lc3NhZ2UgPSB7XG4gICAgICAvLyAgIGNvbnRleHROYW1lIDogdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKSxcbiAgICAgIC8vICAgbWVzc2FnZTogdGhpcy5wdWxzZUNvbW1lbnRbbWVzc2FnZUlEXSxcbiAgICAgIC8vICAgcHVsc2VDb250ZXh0OiBtZXNzYWdlSUQsXG4gICAgICAvLyAgIHJlcGx5OiB0cnVlXG4gICAgICAvLyB9O1xuXG4gICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgIC8vIFVzZWQgdG8gYmU6IHRoaXMuLypmZWVkQVBJLiovcG9zdE1lc3NhZ2UocHVsc2VNZXNzYWdlKTtcbiAgICAgIC8vICBMYXRlc3QgdXBkYXRlIHRvIEFQSSBoYXMgY2hhbmdlZCBhbmQgdGhlIHBvc3RNZXNzYWdlIGFjdHVhbGx5IGdldHNcbiAgICAgIC8vICB0aGUgcHVsc2UgY29udGV4dC4uLlxuICAgICAgLy8gdXNlZCB0byB1c2U6IGNvbnRleHROYW1lXG4gICAgICAvLyBuZXcgRmVlZEFQSSB3YW50cyBhcmdzIHRvIGJlIG1lc3NhZ2VJRCwgdGhpcy5wdWxzZUNvbW1lbnRbbWVzc2FnZUlEXSwgdHJ1ZSAoc2luY2UgdGhpcyBpcyBhIHJlcGx5KVxuICAgICAgdGhpcy4vKiBmZWVkQVBJLiAqLyBwb3N0TWVzc2FnZShtZXNzYWdlSUQsIHRoaXMucHVsc2VDb21tZW50W21lc3NhZ2VJRF0sIHRydWUpO1xuXG4gICAgICB0aGlzLnB1bHNlQ29tbWVudFttZXNzYWdlSURdID0gJyc7XG4gICAgfVxuICB9XG5cbiAgbmV3Q29tbWVudENoYW5nZShldmVudCwgbWVzc2FnZUlEKSB7XG4gICAgdGhpcy5wdWxzZUNvbW1lbnRbbWVzc2FnZUlEXSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgfVxufVxuIiwiPGRpdj5cbiAgPGRpdiBzdHlsZT1cInRleHQtYWxpZ246IGxlZnRcIj5cbiAgICA8aDM+UHVsc2U8L2gzPlxuXG4gICAgPGRpdiBjbGFzcz1cInBzZGstcHVsc2UtZGl2aWRlclwiPjwvZGl2PlxuXG4gICAgPGJyIC8+XG4gICAgPGRpdiBjbGFzcz1cInBzZGstcHVsc2VcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLWF2YXRhci1iaWdcIj57eyB0aGlzLmN1cnJlbnRVc2VySW5pdGlhbHMkIH19PC9kaXY+XG4gICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJwc2RrLWZ1bGwtd2lkdGhcIj5cbiAgICAgICAgPHRleHRhcmVhIG1hdElucHV0IHJvd3M9XCI1XCIgaWQ9XCJwdWxzZU1lc3NhZ2VcIiBwbGFjZWhvbGRlcj1cIlN0YXJ0IGEgY29udmVyc2F0aW9uXCIgdHlwZT1cInRleHRcIiAoY2hhbmdlKT1cIm1lc3NhZ2VDaGFuZ2UoJGV2ZW50KVwiPjwvdGV4dGFyZWE+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bWF0LWdyaWQtbGlzdCBjb2xzPVwiMlwiIHJvd0hlaWdodD1cIjYuMjVyZW1cIj5cbiAgPG1hdC1ncmlkLXRpbGU+IDwvbWF0LWdyaWQtdGlsZT5cbiAgPG1hdC1ncmlkLXRpbGU+XG4gICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwicG9zdENsaWNrKClcIj5Qb3N0PC9idXR0b24+XG4gIDwvbWF0LWdyaWQtdGlsZT5cbjwvbWF0LWdyaWQtbGlzdD5cblxuPGRpdiAqbmdGb3I9XCJsZXQgcHVsc2VNZXNzYWdlIG9mIHB1bHNlTWVzc2FnZXMkOyBsZXQgb2RkID0gb2RkXCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBsZWZ0XCIgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwib2RkID8gJ3doaXRlJyA6ICcjZWVlZWVlJ1wiPlxuICA8ZGl2IGNsYXNzPVwicHNkay1wdWxzZS1kaXZpZGVyXCI+PC9kaXY+XG4gIDxiciAvPlxuICA8ZGl2IGNsYXNzPVwicHNkay1wdWxzZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJwc2RrLWF2YXRhci1iaWdcIj57eyBwdWxzZU1lc3NhZ2UuZGlzcGxheVBvc3RlZEJ5SW5pdGlhbHMgfX08L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicHNkay1wdWxzZS1tZXNzYWdlLWdyb3VwXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicHNkay1wdWxzZS1tZXNzYWdlLWJ5XCI+e3sgcHVsc2VNZXNzYWdlLmRpc3BsYXlQb3N0ZWRCeSB9fTwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInBzZGstcHVsc2UtbWVzc2FnZS10aW1lXCI+e3sgcHVsc2VNZXNzYWdlLmRpc3BsYXlQb3N0ZWRUaW1lIH19PC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwicHNkay1wdWxzZS1tZXNzYWdlLXRleHRcIj57eyBwdWxzZU1lc3NhZ2UubWVzc2FnZSB9fTwvZGl2PlxuICA8ZGl2IGNsYXNzPVwicHNkay1wdWxzZS1tZXNzYWdlLWFjdGlvbnNcIj5cbiAgICA8ZGl2IGNsYXNzPVwicHNkay1wdWxzZS1tZXNzYWdlLWFjdGlvbi1ncm91cFwiPlxuICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJjb21tZW50Q2xpY2socHVsc2VNZXNzYWdlLklEKVwiPlxuICAgICAgICA8aW1nIGNsYXNzPVwicHNkay1jb21tZW50LXN2Zy1pY29uXCIgc3JjPVwie3sgc3ZnQ29tbWVudCQgfX1cIiAvPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJwc2RrLXB1bHNlLW1lc3NhZ2UtbGlrZS1sYWJlbFwiXG4gICAgICAgICAgPkNvbW1lbnQgPHNwYW4gKm5nSWY9XCJwdWxzZU1lc3NhZ2U/LnJlcGxpZXMubGVuZ3RoID4gMFwiPiB8IHt7IHB1bHNlTWVzc2FnZS5yZXBsaWVzLmxlbmd0aCB9fTwvc3Bhbj48L2xhYmVsXG4gICAgICAgID5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJwc2RrLXB1bHNlLW1lc3NhZ2UtYWN0aW9uLWxpa2VcIj5cbiAgICAgIDxkaXYgKm5nSWY9XCJwdWxzZU1lc3NhZ2U/Lmxpa2VDb3VudDsgZWxzZSBub3RMaWtlZFwiPlxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwicHVsc2VNZXNzYWdlPy5saWtlZEJ5TWUgPT0gJ3RydWUnXCIgbWF0LWJ1dHRvbiAoY2xpY2spPVwibGlrZUNsaWNrKHB1bHNlTWVzc2FnZS5JRCwgcHVsc2VNZXNzYWdlLklELCB0cnVlLCAndG9wJylcIj5cbiAgICAgICAgICA8IS0tIDxtYXQtaWNvbiBjbGFzcz1cInBzZGstaWNvbi1saWtlZC1ieS1tZVwiIHN2Z0ljb249XCJ0aHVtYi11cFwiIG1hc3RMaXN0SWNvbiA+PC9tYXQtaWNvbj4gLS0+XG4gICAgICAgICAgPGltZyBjbGFzcz1cInBzZGstbGlrZWQtYnktbWUtc3ZnLWljb25cIiBzcmM9XCJ7eyBzdmdMaWtlZEJ5TWUkIH19XCIgLz5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJwc2RrLXB1bHNlLW1lc3NhZ2UtbGlrZS1sYWJlbFwiPkxpa2UgfCB7eyBwdWxzZU1lc3NhZ2UubGlrZUNvdW50IH19PC9sYWJlbD5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJwdWxzZU1lc3NhZ2U/Lmxpa2VkQnlNZSAhPSAndHJ1ZSdcIiBtYXQtYnV0dG9uIChjbGljayk9XCJsaWtlQ2xpY2socHVsc2VNZXNzYWdlLklELCBwdWxzZU1lc3NhZ2UuSUQsIGZhbHNlLCAndG9wJylcIj5cbiAgICAgICAgICA8IS0tIDxtYXQtaWNvbiBjbGFzcz1cInBzZGstaWNvblwiIHN2Z0ljb249XCJ0aHVtYi11cC1vdXRsaW5lXCIgbWFzdExpc3RJY29uID48L21hdC1pY29uPiAtLT5cbiAgICAgICAgICA8aW1nIGNsYXNzPVwicHNkay1saWtlLXN2Zy1pY29uXCIgc3JjPVwie3sgc3ZnTGlrZSQgfX1cIiAvPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInBzZGstcHVsc2UtbWVzc2FnZS1saWtlLWxhYmVsXCI+TGlrZSB8IHt7IHB1bHNlTWVzc2FnZS5saWtlQ291bnQgfX08L2xhYmVsPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLXRlbXBsYXRlICNub3RMaWtlZD5cbiAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJsaWtlQ2xpY2socHVsc2VNZXNzYWdlLklELCBwdWxzZU1lc3NhZ2UuSUQsIGZhbHNlLCAndG9wJylcIj5cbiAgICAgICAgICA8IS0tIDxtYXQtaWNvbiBjbGFzcz1cInBzZGstaWNvblwiIHN2Z0ljb249XCJ0aHVtYi11cC1vdXRsaW5lXCIgbWFzdExpc3RJY29uID48L21hdC1pY29uPiAtLT5cbiAgICAgICAgICA8aW1nIGNsYXNzPVwicHNkay1saWtlLXN2Zy1pY29uXCIgc3JjPVwie3sgc3ZnTGlrZSQgfX1cIiAvPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInBzZGstcHVsc2UtbWVzc2FnZS1saWtlLWxhYmVsXCI+TGlrZTwvbGFiZWw+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdJZj1cInB1bHNlTWVzc2FnZT8ucmVwbGllc1wiIGNsYXNzPVwicHNkay1wdWxzZS1yZXBseVwiPlxuICAgIDxkaXYgKm5nRm9yPVwibGV0IHJlcGx5TWVzc2FnZSBvZiBwdWxzZU1lc3NhZ2UucmVwbGllc1wiIGNsYXNzPVwicHNkay1wdWxzZS1yZXBseS1hbGlnblwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBzZGstcHVsc2UtZGl2aWRlclwiPjwvZGl2PlxuICAgICAgPGJyIC8+XG4gICAgICA8ZGl2IGNsYXNzPVwicHNkay1wdWxzZS1yZXBseS1ncm91cFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHNkay1hdmF0YXJcIj57eyByZXBseU1lc3NhZ2UuZGlzcGxheVBvc3RlZEJ5SW5pdGlhbHMgfX08L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBzZGstcHVsc2UtcmVwbHktYnlcIj57eyByZXBseU1lc3NhZ2UuZGlzcGxheVBvc3RlZEJ5IH19PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLXB1bHNlLXJlcGx5LW1lc3NhZ2VcIj57eyByZXBseU1lc3NhZ2UubWVzc2FnZSB9fTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicHNkay1wdWxzZS1yZXBseS1hY3Rpb25zXCI+XG4gICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwiY29tbWVudENsaWNrKHB1bHNlTWVzc2FnZS5JRClcIiBjbGFzcz1cInBzZGstcHVsc2UtcmVwbHktY29tbWVudFwiPlxuICAgICAgICAgIDxpbWcgY2xhc3M9XCJwc2RrLWNvbW1lbnQtc3ZnLWljb25cIiBzcmM9XCJ7eyBzdmdDb21tZW50JCB9fVwiIC8+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwicmVwbHlNZXNzYWdlPy5saWtlQ291bnQ7IGVsc2UgcmVwbHlOb3RMaWtlZFwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwicmVwbHlNZXNzYWdlPy5saWtlZEJ5TWUgPT09ICd0cnVlJ1wiXG4gICAgICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgICAgICAoY2xpY2spPVwibGlrZUNsaWNrKHB1bHNlTWVzc2FnZS5JRCwgcmVwbHlNZXNzYWdlLklELCB0cnVlLCAncmVwbHknKVwiXG4gICAgICAgICAgICBjbGFzcz1cInBzZGstcHVsc2UtcmVwbHktbGlrZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGltZyBjbGFzcz1cInBzZGstbGlrZWQtYnktbWUtc3ZnLWljb25cIiBzcmM9XCJ7eyBzdmdMaWtlZEJ5TWUkIH19XCIgLz5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cInJlcGx5TWVzc2FnZT8ubGlrZWRCeU1lICE9ICd0cnVlJ1wiXG4gICAgICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgICAgICAoY2xpY2spPVwibGlrZUNsaWNrKHB1bHNlTWVzc2FnZS5JRCwgcmVwbHlNZXNzYWdlLklELCBmYWxzZSwgJ3JlcGx5JylcIlxuICAgICAgICAgICAgY2xhc3M9XCJwc2RrLXB1bHNlLXJlcGx5LWxpa2VcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJwc2RrLWxpa2Utc3ZnLWljb25cIiBzcmM9XCJ7eyBzdmdMaWtlJCB9fVwiIC8+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwicHNkay1wdWxzZS1yZXBseS1saWtlLWxhYmVsXCI+TGlrZSB8IHt7IHJlcGx5TWVzc2FnZS5saWtlQ291bnQgfX08L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNyZXBseU5vdExpa2VkPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwicmVwbHlNZXNzYWdlPy5saWtlZEJ5TWUgIT0gJ3RydWUnXCJcbiAgICAgICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgICAgIChjbGljayk9XCJsaWtlQ2xpY2socHVsc2VNZXNzYWdlLklELCByZXBseU1lc3NhZ2UuSUQsIGZhbHNlLCAncmVwbHknKVwiXG4gICAgICAgICAgICBjbGFzcz1cInBzZGstcHVsc2UtcmVwbHktbGlrZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGltZyBjbGFzcz1cInBzZGstbGlrZS1zdmctaWNvblwiIHNyYz1cInt7IHN2Z0xpa2UkIH19XCIgLz5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwicHNkay1wdWxzZS1yZXBseS10aW1lXCI+e3sgcmVwbHlNZXNzYWdlLmRpc3BsYXlQb3N0ZWRUaW1lIH19PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxiciAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cInNob3dSZXBseUNvbW1lbnQkW3B1bHNlTWVzc2FnZS5JRF0gPT0gdHJ1ZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBzZGstcHVsc2UtZGl2aWRlclwiPjwvZGl2PlxuICAgICAgPGJyIC8+XG4gICAgICA8ZGl2IGNsYXNzPVwicHNkay1wdWxzZS1jb21tZW50LWdyb3VwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLWF2YXRhclwiPnt7IHRoaXMuY3VycmVudFVzZXJJbml0aWFscyQgfX08L2Rpdj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwicHNkay1mdWxsLXdpZHRoXCI+XG4gICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgcm93cz1cIjVcIlxuICAgICAgICAgICAgaWQ9XCJwdWxzZU1lc3NhZ2VcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJBZGQgYSBjb21tZW50XCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwibmV3Q29tbWVudENoYW5nZSgkZXZlbnQsIHB1bHNlTWVzc2FnZS5JRClcIlxuICAgICAgICAgID48L3RleHRhcmVhPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cInBvc3RDb21tZW50Q2xpY2socHVsc2VNZXNzYWdlLklEKVwiIGNsYXNzPVwicHNkay1wdWxzZS1jb21tZW50LXBvc3RcIj5cbiAgICAgICAgICA8aW1nIGNsYXNzPVwicHNkay1zZW5kLXN2Zy1pY29uXCIgc3JjPVwie3sgc3ZnU2VuZCQgfX1cIiAvPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGJyIC8+XG48L2Rpdj5cbiJdfQ==
|
|
521
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZC1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL3dpZGdldC9mZWVkLWNvbnRhaW5lci9mZWVkLWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvd2lkZ2V0L2ZlZWQtY29udGFpbmVyL2ZlZWQtY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNEQUFzRDtBQUN0RCxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBZ0MsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxPQUFPLE1BQU0saUJBQWlCLENBQUM7QUFFdEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7QUFZaEQsTUFBTSxPQUFPLHNCQUFzQjtJQXFDakMsWUFDVSxlQUF1QyxFQUN2QyxLQUF3QixFQUN4QixLQUFZO1FBRlosb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBQ3ZDLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQ3hCLFVBQUssR0FBTCxLQUFLLENBQU87UUFyQ3RCLDRCQUE0QjtRQUM1Qix3QkFBbUIsR0FBd0IsRUFB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SFksWUFBWSwrUEFBRSxrQkFBa0IseU9BQUUsY0FBYywwV0FBRSxpQkFBaUIsaVRBQUUsZUFBZTs7NEZBRW5GLHNCQUFzQjtrQkFSbEMsU0FBUzsrQkFDRSxvQkFBb0IsYUFHbkIsQ0FBQyxLQUFLLENBQUMsY0FDTixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsQ0FBQzsrSUFHdEYsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIENoYW5nZURldGVjdG9yUmVmLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0R3JpZExpc3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9ncmlkLWxpc3QnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCBpc0VxdWFsIGZyb20gJ2Zhc3QtZGVlcC1lcXVhbCc7XG5pbXBvcnQgeyBBbmd1bGFyUENvbm5lY3REYXRhLCBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9hbmd1bGFyLXBjb25uZWN0JztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vX2hlbHBlcnMvdXRpbHMnO1xuXG5kZWNsYXJlIGNvbnN0IHdpbmRvdzogYW55O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZmVlZC1jb250YWluZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZmVlZC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mZWVkLWNvbnRhaW5lci5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtVdGlsc10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdEZvcm1GaWVsZE1vZHVsZSwgTWF0SW5wdXRNb2R1bGUsIE1hdEdyaWRMaXN0TW9kdWxlLCBNYXRCdXR0b25Nb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIEZlZWRDb250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHBDb25uJDogdHlwZW9mIFBDb25uZWN0O1xuXG4gIC8vIFVzZWQgd2l0aCBBbmd1bGFyUENvbm5lY3RcbiAgYW5ndWxhclBDb25uZWN0RGF0YTogQW5ndWxhclBDb25uZWN0RGF0YSA9IHt9O1xuXG4gIHVzZXJOYW1lJDogc3RyaW5nO1xuICBpbWFnZUtleSQ6IHN0cmluZztcblxuICBjdXJyZW50VXNlckluaXRpYWxzJDogc3RyaW5nO1xuICBjdXJyZW50VXNlck5hbWUkOiBzdHJpbmc7XG5cbiAgcHVsc2VNZXNzYWdlcyQ6IGFueVtdO1xuICBzaG93UmVwbHlDb21tZW50JDogT2JqZWN0ID0ge307XG5cbiAgc3ZnQ29tbWVudCQ6IHN0cmluZztcbiAgc3ZnTGlrZSQ6IHN0cmluZztcbiAgc3ZnTGlrZWRCeU1lJDogc3RyaW5nO1xuICBzdmdTZW5kJDogc3RyaW5nO1xuXG4gIHB1bHNlQ29udmVyc2F0aW9uOiBzdHJpbmc7XG4gIHVzZXJEYXRhOiBNYXA8YW55LCBhbnk+ID0gbmV3IE1hcCgpO1xuXG4gIHB1bHNlQ29tbWVudDogT2JqZWN0ID0ge307XG5cbiAgLy8gZnVuY3Rpb25zXG4gIGFjdGlvbnNBUEk6IGFueTtcbiAgLy8gdW50aWwgRmVlZEFQSSBtb3ZlZCBiYWNrIHRvIFBDb3JlLCB3ZSBhY2Nlc3MgdGhlIG1ldGhvZHMgZGlyZWN0bHkgKHNlZSBuZ0luaXQpXG4gIGZlZWRBUEk6IGFueTtcblxuICBwdWxzZURhdGE6IGFueTtcblxuICAvLyBUZW1wb3Jhcnkgd2F5IHRvIHVzZSBGZWVkQXBpLi4uXG4gIGZldGNoTWVzc2FnZXM6IGFueTtcbiAgbGlrZU1lc3NhZ2U6IGFueTtcbiAgcG9zdE1lc3NhZ2U6IGFueTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFuZ3VsYXJQQ29ubmVjdDogQW5ndWxhclBDb25uZWN0U2VydmljZSxcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHV0aWxzOiBVdGlsc1xuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy51c2VyTmFtZSQgPSBQQ29yZS5nZXRFbnZpcm9ubWVudEluZm8oKS5nZXRPcGVyYXRvck5hbWUoKTtcbiAgICB0aGlzLmltYWdlS2V5JCA9IFBDb3JlLmdldEVudmlyb25tZW50SW5mbygpLmdldE9wZXJhdG9ySW1hZ2VJbnNLZXkoKTtcbiAgICB0aGlzLnVwZGF0ZUN1cnJlbnRVc2VyTmFtZSh0aGlzLnVzZXJOYW1lJCk7XG5cbiAgICAvLyBGaXJzdCB0aGluZyBpbiBpbml0aWFsaXphdGlvbiBpcyByZWdpc3RlcmluZyBhbmQgc3Vic2NyaWJpbmcgdG8gdGhlIEFuZ3VsYXJQQ29ubmVjdCBzZXJ2aWNlXG4gICAgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhID0gdGhpcy5hbmd1bGFyUENvbm5lY3QucmVnaXN0ZXJBbmRTdWJzY3JpYmVDb21wb25lbnQodGhpcywgdGhpcy5vblN0YXRlQ2hhbmdlKTtcblxuICAgIC8vIFRoZW4sIGNvbnRpbnVlIG9uIHdpdGggb3RoZXIgaW5pdGlhbGl6YXRpb25cbiAgICAvLyBkZWJ1Z2dlcjtcblxuICAgIC8vIGNvbnN0IHtcbiAgICAvLyAgIGZldGNoTWVzc2FnZXMsXG4gICAgLy8gICBsaWtlTWVzc2FnZSxcbiAgICAvLyAgIHBvc3RNZXNzYWdlXG4gICAgLy8gfSA9IEZlZWRBcGkodGhpcy5wQ29ubiQpO1xuICAgIC8vIHRoaXMuZmV0Y2hNZXNzYWdlcyA9IGZldGNoTWVzc2FnZXM7XG4gICAgLy8gdGhpcy5saWtlTWVzc2FnZSA9IGxpa2VNZXNzYWdlO1xuICAgIC8vIHRoaXMucG9zdE1lc3NhZ2UgPSBwb3N0TWVzc2FnZTtcblxuICAgIC8vIC8vIHRoaXMudXNlck5hbWUkID0gdGhpcy5wQ29ubiQuZ2V0VmFsdWUoXCJweFJlcXVlc3Rvci5weFVzZXJOYW1lXCIpO1xuICAgIC8vIC8vIHRoaXMuaW1hZ2VLZXkkID0gdGhpcy5wQ29ubiQuZ2V0VmFsdWUoXCJPcGVyYXRvcklELnB5SW1hZ2VJbnNLZXlcIik7XG5cbiAgICAvLyAvL3RoaXMudXNlck5hbWUkID0gdGhpcy5wQ29ubiQuZ2V0RGF0YU9iamVjdCgpW1wiRF9weEVudmlyb25tZW50SW5mb1wiXS5weE9wZXJhdG9yLnB5VXNlck5hbWU7XG4gICAgLy8gLy90aGlzLmltYWdlS2V5JCA9IHRoaXMucENvbm4kLmdldERhdGFPYmplY3QoKVtcIkRfcHhFbnZpcm9ubWVudEluZm9cIl0ucHhPcGVyYXRvci5weUltYWdlSW5zS2V5O1xuICAgIC8vIHRoaXMudXNlck5hbWUkID0gdGhpcy5wQ29ubiQuZ2V0RW52aXJvbm1lbnRJbmZvKCkuZ2V0T3BlcmF0b3JOYW1lKCk7XG4gICAgLy8gdGhpcy5pbWFnZUtleSQgPSB0aGlzLnBDb25uJC5nZXRFbnZpcm9ubWVudEluZm8oKS5nZXRPcGVyYXRvckltYWdlSW5zS2V5KCk7XG5cbiAgICAvLyB0aGlzLmFjdGlvbnNBUEkgPSB0aGlzLnBDb25uJC5nZXRBY3Rpb25zQXBpKCk7XG5cbiAgICAvLyBsZXQgb3duZXIgPSB0aGlzLnBDb25uJC5nZXRDb25maWdQcm9wcygpLnZhbHVlO1xuXG4gICAgLy8gLy8gd2l0aCBuZXcgRmVlZEFQSTogb3duZXIgaXMgdGhlIHByb3BlciB2YWx1ZSB0byBwYXNzIGluXG4gICAgLy8gLy8gIGFuZCBubyBsb25nZXIgdGFrZXMgMm5kIGFyZ3VtZW50XG4gICAgLy8gdGhpcy4vKmZlZWRBUEkuKi9mZXRjaE1lc3NhZ2VzKG93bmVyIC8qLCB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpKi8pO1xuXG4gICAgLy8gY29uc3QgY29uZmlnUHJvcHM6IGFueSA9IHRoaXMucENvbm4kLmdldENvbmZpZ1Byb3BzKCk7XG5cbiAgICAvLyBjb25zdCB7IG1lc3NhZ2VJRHMgfSA9IGNvbmZpZ1Byb3BzO1xuXG4gICAgLy8gY29uc3QgeyBmZXRjaE1lc3NhZ2VzLCBwb3N0TWVzc2FnZSwgZ2V0TWVudGlvblN1Z2dlc3Rpb25zLCBnZXRUYWdTdWdnZXN0aW9ucyB9ID0gRmVlZEFwaSh0aGlzLnBDb25uJCk7XG5cbiAgICBjb25zdCBhcHBOYW1lID0gUENvcmUuZ2V0RW52aXJvbm1lbnRJbmZvKCkuZ2V0QXBwbGljYXRpb25OYW1lKCk7XG4gICAgbGV0IHZhbHVlID0gJyc7XG4gICAgbGV0IGZlZWRJRCA9ICcnO1xuICAgIGxldCBmZWVkQ2xhc3MgPSAnJztcblxuICAgIGlmICh0aGlzLnBDb25uJC5nZXRDYXNlU3VtbWFyeSgpLklEKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMucENvbm4kLmdldENhc2VTdW1tYXJ5KCkuSUQ7XG4gICAgICBmZWVkSUQgPSAncHlDYXNlRmVlZCc7XG4gICAgICBmZWVkQ2xhc3MgPSB0aGlzLnBDb25uJC5nZXRDYXNlU3VtbWFyeSgpLmNvbnRlbnQuY2xhc3NJRDtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSBgREFUQS1QT1JUQUwgJCR7YXBwTmFtZX1gO1xuICAgICAgZmVlZElEID0gJ3B5RGFzaGJvYXJkRmVlZCc7XG4gICAgICBmZWVkQ2xhc3MgPSAnQGJhc2VjbGFzcyc7XG4gICAgfVxuXG4gICAgY29uc3Qgb25VcGxvYWRQcm9ncmVzcyA9ICgpID0+IHt9O1xuICAgIGNvbnN0IGVycm9ySGFuZGxlciA9ICgpID0+IHt9O1xuICAgIGNvbnN0IGF0dGFjaG1lbnRzID0gKCkgPT4ge307XG5cbiAgICBjb25zdCBwb3N0Q29tbWVudCA9ICh7IHZhbHVlOiBtZXNzYWdlLCBjbGVhciB9KSA9PiB7XG4gICAgICBjb25zdCBhdHRhY2htZW50SURzID0gW107XG4gICAgICBjb25zdCBhdHRhY2htZW50VXRpbHMgPSBQQ29yZS5nZXRBdHRhY2htZW50VXRpbHMoKTtcbiAgICAgIGlmIChhdHRhY2htZW50cyAmJiAhIWF0dGFjaG1lbnRzLmxlbmd0aCkge1xuICAgICAgICAvKiBhdHRhY2htZW50cztcbiAgICAgICAgICAuZmlsdGVyKChmaWxlKSA9PiAhZmlsZS5lcnJvcilcbiAgICAgICAgICAubWFwKChmaWxlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYXR0YWNobWVudFV0aWxzXG4gICAgICAgICAgICAgIC51cGxvYWRBdHRhY2htZW50KGZpbGUsIG9uVXBsb2FkUHJvZ3Jlc3MsIGVycm9ySGFuZGxlcilcbiAgICAgICAgICAgICAgLnRoZW4oKGZpbGVSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVDb25maWcgPSB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBcIkZpbGVcIixcbiAgICAgICAgICAgICAgICAgIGNhdGVnb3J5OiBcIkZpbGVcIixcbiAgICAgICAgICAgICAgICAgIGZpbGVOYW1lOiBmaWxlLm5hbWUsXG4gICAgICAgICAgICAgICAgICBJRDogZmlsZVJlc3BvbnNlLmRhdGEuSURcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRJRHMucHVzaChmaWxlQ29uZmlnKTtcbiAgICAgICAgICAgICAgICBpZiAoYXR0YWNobWVudHMubGVuZ3RoID09PSBhdHRhY2htZW50SURzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgcG9zdE1lc3NhZ2UoXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1NYXJrZG93blRvTXNnKG1lc3NhZ2UpLFxuICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50SURzXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgY2xlYXIoKTtcbiAgICAgICAgICAgICAgICAgIHNldEF0dGFjaG1lbnRzKFtdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgLmNhdGNoKGNvbnNvbGUuZXJyb3IpO1xuICAgICAgICAgIH0pOyAqL1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gcG9zdE1lc3NhZ2UodmFsdWUsIHRyYW5zZm9ybU1hcmtkb3duVG9Nc2cobWVzc2FnZSkpO1xuICAgICAgICBjbGVhcigpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvKlxuXG4gICAgY29uc3QgeyBnZXRQQ29ubmVjdCwgbWVzc2FnZUlEcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgW21lbnRpb25SZXN1bHRzLCBzZXRNZW50aW9uUmVzdWx0c10gPSB1c2VTdGF0ZShbXSk7XG4gICAgY29uc3QgW3RhZ1Jlc3VsdHMsIHNldFRhZ1Jlc3VsdHNdID0gdXNlU3RhdGUoW10pO1xuICAgIGNvbnN0IFthdHRhY2htZW50cywgc2V0QXR0YWNobWVudHNdID0gdXNlU3RhdGUoW10pO1xuICAgIGNvbnN0IFtmZWVkRmlsdGVycywgc2V0RmVlZEZpbHRlcnNdID0gdXNlU3RhdGUoKTtcbiAgICBjb25zdCB7XG4gICAgICBmZXRjaE1lc3NhZ2VzLFxuICAgICAgcG9zdE1lc3NhZ2UsXG4gICAgICBnZXRNZW50aW9uU3VnZ2VzdGlvbnMsXG4gICAgICBnZXRUYWdTdWdnZXN0aW9uc1xuICAgIH0gPSBGZWVkQXBpKGdldFBDb25uZWN0KCkpO1xuICAgIGNvbnN0IGFwcE5hbWUgPSBQQ29yZS5nZXRFbnZpcm9ubWVudEluZm8oKS5nZXRBcHBsaWNhdGlvbk5hbWUoKTtcbiAgICBsZXQgdmFsdWUgPSBcIlwiO1xuICAgIGxldCBmZWVkSUQgPSBcIlwiO1xuICAgIGxldCBmZWVkQ2xhc3MgPSBcIlwiO1xuICAgIGlmIChnZXRQQ29ubmVjdCgpLmdldENhc2VTdW1tYXJ5KCkuSUQpIHtcbiAgICAgIHZhbHVlID0gZ2V0UENvbm5lY3QoKS5nZXRDYXNlU3VtbWFyeSgpLklEO1xuICAgICAgZmVlZElEID0gXCJweUNhc2VGZWVkXCI7XG4gICAgICBmZWVkQ2xhc3MgPSBnZXRQQ29ubmVjdCgpLmdldENhc2VTdW1tYXJ5KCkuY29udGVudC5jbGFzc0lEO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IGBEQVRBLVBPUlRBTCAkJHthcHBOYW1lfWA7XG4gICAgICBmZWVkSUQgPSBcInB5RGFzaGJvYXJkRmVlZFwiO1xuICAgICAgZmVlZENsYXNzID0gXCJAYmFzZWNsYXNzXCI7XG4gICAgfVxuICAgIC8vIEZvciBjYW5jZWxsaW5nIGZldGNocmVxdWVzdCBmb3IgZmlsZXRyc1xuICAgIGNvbnN0IGZldGNoTWVzc2FnZXNDYW5jZWxUb2tlblNvdXJjZSA9IHVzZVJlZihbXSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgZmV0Y2hNZXNzYWdlcyhcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIGZlZWRJRCxcbiAgICAgICAgZmVlZENsYXNzLFxuICAgICAgICBudWxsLFxuICAgICAgICBmZXRjaE1lc3NhZ2VzQ2FuY2VsVG9rZW5Tb3VyY2UuY3VycmVudFxuICAgICAgKS50aGVuKChyZXMpID0+IHtcbiAgICAgICAgc2V0RmVlZEZpbHRlcnMocmVzKTtcbiAgICAgIH0pO1xuICAgICAgUENvcmUuZ2V0QXNzZXRMb2FkZXIoKS5nZXRMb2FkZXIoXCJjb21wb25lbnQtbG9hZGVyXCIpKFtcIkFjdGl2aXR5XCJdKTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgICB9LCBbXSk7XG5cbiAgICBjb25zdCBvblVwbG9hZFByb2dyZXNzID0gdXNlQ2FsbGJhY2soKGZpbGUpID0+IHtcbiAgICAgIHJldHVybiAoeyBsb2FkZWQsIHRvdGFsIH0pID0+IHtcbiAgICAgICAgZmlsZS5wcm9ncmVzcyA9IE1hdGguZmxvb3IoKGxvYWRlZCAvIHRvdGFsKSAqIDEwMCk7XG4gICAgICAgIHNldEF0dGFjaG1lbnRzKChjdXJyZW50KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGN1cnJlbnQubWFwKChjdXJyRmlsZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGN1cnJGaWxlLm5hbWUgPT09IGZpbGUubmFtZSA/IGZpbGUgOiBjdXJyRmlsZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgIH0sIFtdKTtcblxuICAgIGNvbnN0IGVycm9ySGFuZGxlciA9IHVzZUNhbGxiYWNrKChpc0ZldGNoQ2FuY2VsZWQsIGZpbGUpID0+IHtcbiAgICAgIHJldHVybiAoZXJyb3IpID0+IHtcbiAgICAgICAgaWYgKCFpc0ZldGNoQ2FuY2VsZWQoZXJyb3IpKSB7XG4gICAgICAgICAgbGV0IGxvY2FsaXplZFZhbHVlID0gXCJVcGxvYWQgZmFpbGVkXCI7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgZXJyb3IucmVzcG9uc2UgJiZcbiAgICAgICAgICAgIGVycm9yLnJlc3BvbnNlLmRhdGEgJiZcbiAgICAgICAgICAgIGVycm9yLnJlc3BvbnNlLmRhdGEuZXJyb3JEZXRhaWxzXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBsb2NhbGl6ZWRWYWx1ZSA9IGVycm9yLnJlc3BvbnNlLmRhdGEuZXJyb3JEZXRhaWxzWzBdLmxvY2FsaXplZFZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBkZWxldGUgZmlsZS5wcm9ncmVzcztcbiAgICAgICAgICBzZXRBdHRhY2htZW50cygoY3VycmVudCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnQubWFwKChjdXJyRmlsZSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoY3VyckZpbGUubmFtZSA9PT0gZmlsZS5uYW1lKSB7XG4gICAgICAgICAgICAgICAgY3VyckZpbGUubWV0YSA9IGxvY2FsaXplZFZhbHVlO1xuICAgICAgICAgICAgICAgIGN1cnJGaWxlLmVycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gY3VyckZpbGU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBlcnJvci5pc0hhbmRsZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfTtcbiAgICB9LCBbXSk7XG5cbiAgICBjb25zdCBwb3N0Q29tbWVudCA9ICh7IHZhbHVlOiBtZXNzYWdlLCBjbGVhciB9KSA9PiB7XG4gICAgICBjb25zdCBhdHRhY2htZW50SURzID0gW107XG4gICAgICBjb25zdCBhdHRhY2htZW50VXRpbHMgPSBQQ29yZS5nZXRBdHRhY2htZW50VXRpbHMoKTtcbiAgICAgIGlmIChhdHRhY2htZW50cyAmJiAhIWF0dGFjaG1lbnRzLmxlbmd0aCkge1xuICAgICAgICBhdHRhY2htZW50c1xuICAgICAgICAgIC5maWx0ZXIoKGZpbGUpID0+ICFmaWxlLmVycm9yKVxuICAgICAgICAgIC5tYXAoKGZpbGUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBhdHRhY2htZW50VXRpbHNcbiAgICAgICAgICAgICAgLnVwbG9hZEF0dGFjaG1lbnQoZmlsZSwgb25VcGxvYWRQcm9ncmVzcywgZXJyb3JIYW5kbGVyKVxuICAgICAgICAgICAgICAudGhlbigoZmlsZVJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZUNvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6IFwiRmlsZVwiLFxuICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk6IFwiRmlsZVwiLFxuICAgICAgICAgICAgICAgICAgZmlsZU5hbWU6IGZpbGUubmFtZSxcbiAgICAgICAgICAgICAgICAgIElEOiBmaWxlUmVzcG9uc2UuZGF0YS5JRFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgYXR0YWNobWVudElEcy5wdXNoKGZpbGVDb25maWcpO1xuICAgICAgICAgICAgICAgIGlmIChhdHRhY2htZW50cy5sZW5ndGggPT09IGF0dGFjaG1lbnRJRHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICBwb3N0TWVzc2FnZShcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybU1hcmtkb3duVG9Nc2cobWVzc2FnZSksXG4gICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRJRHNcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICBjbGVhcigpO1xuICAgICAgICAgICAgICAgICAgc2V0QXR0YWNobWVudHMoW10pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAuY2F0Y2goY29uc29sZS5lcnJvcik7XG4gICAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwb3N0TWVzc2FnZSh2YWx1ZSwgdHJhbnNmb3JtTWFya2Rvd25Ub01zZyhtZXNzYWdlKSk7XG4gICAgICAgIGNsZWFyKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgICovXG5cbiAgICAvKiBPbiBzZWFyY2ggaXMgY2FsbGVkIHdoZW4gQCBjaGFyYWN0ZXIgaXMgZW50ZXJlZCBhbmQgd2lsbCBkaXNwbGF5IHRoZSBtZW50aW9uICovXG5cbiAgICAvKlxuICAgIGNvbnN0IG9uU2VhcmNoID0gZGVib3VuY2UoKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQudHlwZSA9PT0gXCJtZW50aW9uXCIpIHtcbiAgICAgICAgZ2V0TWVudGlvblN1Z2dlc3Rpb25zKHtcbiAgICAgICAgICBwdWxzZUNvbnRleHQ6IHZhbHVlLFxuICAgICAgICAgIHNlYXJjaEZvcjogZXZlbnQuc2VhcmNoXG4gICAgICAgIH0pLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICAgIHNldE1lbnRpb25SZXN1bHRzKHJlcyk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ2V0VGFnU3VnZ2VzdGlvbnMoe1xuICAgICAgICAgIHNlYXJjaEZvcjogZXZlbnQuc2VhcmNoXG4gICAgICAgIH0pLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICAgIHNldFRhZ1Jlc3VsdHMocmVzKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSwgMTUwKTtcblxuICAgIGNvbnN0IHVzZXJOYW1lID0gZ2V0UENvbm5lY3QoKS5nZXRFbnZpcm9ubWVudEluZm8oKS5nZXRPcGVyYXRvck5hbWUoKTtcbiAgICBjb25zdCBpbWFnZUtleSA9IGdldFBDb25uZWN0KCkuZ2V0RW52aXJvbm1lbnRJbmZvKCkuZ2V0T3BlcmF0b3JJbWFnZUluc0tleSgpO1xuXG4gICAgY29uc3Qgb25GaWxlc0FkZGVkID0gdXNlQ2FsbGJhY2soKG5ld2x5QWRkZWRGaWxlcykgPT4ge1xuICAgICAgc2V0QXR0YWNobWVudHMoKGN1cnJlbnQpID0+IFtcbiAgICAgICAgLi4ubmV3bHlBZGRlZEZpbGVzLm1hcCgoZmlsZSkgPT4ge1xuICAgICAgICAgIGlmICghdmFsaWRhdGVNYXhTaXplKGZpbGUsIDUpKSB7XG4gICAgICAgICAgICBmaWxlLmVycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgIGZpbGUubWV0YSA9IFwiRmlsZSBpcyB0b28gYmlnLiBNYXggYWxsb3dlZCBzaXplIGlzIDVNQi5cIjtcbiAgICAgICAgICB9XG4gICAgICAgICAgZmlsZS5pY29uID0gZ2V0SWNvbkZyb21GaWxlVHlwZShmaWxlLnR5cGUpO1xuICAgICAgICAgIGZpbGUub25EZWxldGUgPSAoKSA9PiB7XG4gICAgICAgICAgICBzZXRBdHRhY2htZW50cygoYykgPT4gYy5maWx0ZXIoKGYpID0+IGYubmFtZSAhPT0gZmlsZS5uYW1lKSk7XG4gICAgICAgICAgfTtcbiAgICAgICAgICByZXR1cm4gZmlsZTtcbiAgICAgICAgfSksXG4gICAgICAgIC4uLmN1cnJlbnRcbiAgICAgIF0pO1xuICAgIH0sIFtdKTtcblxuICAgIGNvbnN0IG9uRmlsdGVyQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgICAoZmlsdGVySUQpID0+IHtcbiAgICAgICAgY29uc3QgdXBkYXRlZEZpbHRlcnMgPSBbLi4uZmVlZEZpbHRlcnNdO1xuICAgICAgICBjb25zdCBmaWx0ZXJUb1VwZGF0ZSA9IHVwZGF0ZWRGaWx0ZXJzLmZpbmQoXG4gICAgICAgICAgKGZlZWRJdGVtKSA9PiBmZWVkSXRlbS5pZCA9PT0gZmlsdGVySURcbiAgICAgICAgKTtcbiAgICAgICAgZmlsdGVyVG9VcGRhdGUub24gPSAhZmlsdGVyVG9VcGRhdGUub247XG4gICAgICAgIGlmIChmaWx0ZXJJRCA9PT0gXCJBbGxcIilcbiAgICAgICAgICB1cGRhdGVkRmlsdGVycy5mb3JFYWNoKChmZWVkRmlsdGVyKSA9PiB7XG4gICAgICAgICAgICBmZWVkRmlsdGVyLm9uID0gZmlsdGVyVG9VcGRhdGUub247XG4gICAgICAgICAgfSk7XG4gICAgICAgIGVsc2UgaWYgKFxuICAgICAgICAgIHVwZGF0ZWRGaWx0ZXJzLmZpbmQoXG4gICAgICAgICAgICAoZmVlZEl0ZW0pID0+IGZlZWRJdGVtLm9uID09PSBmYWxzZSAmJiBmZWVkSXRlbS5pZCAhPT0gXCJBbGxcIlxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgICAgIHVwZGF0ZWRGaWx0ZXJzLmZpbmQoKGZlZWRJdGVtKSA9PiBmZWVkSXRlbS5pZCA9PT0gXCJBbGxcIikub24gPSBmYWxzZTtcbiAgICAgICAgZWxzZSB1cGRhdGVkRmlsdGVycy5maW5kKChmZWVkSXRlbSkgPT4gZmVlZEl0ZW0uaWQgPT09IFwiQWxsXCIpLm9uID0gdHJ1ZTtcbiAgICAgICAgc2V0RmVlZEZpbHRlcnModXBkYXRlZEZpbHRlcnMpO1xuICAgICAgICBmZXRjaE1lc3NhZ2VzKFxuICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgIGZlZWRJRCxcbiAgICAgICAgICBmZWVkQ2xhc3MsXG4gICAgICAgICAgZmVlZEZpbHRlcnMsXG4gICAgICAgICAgZmV0Y2hNZXNzYWdlc0NhbmNlbFRva2VuU291cmNlLmN1cnJlbnRcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgICBbXG4gICAgICAgIHZhbHVlLFxuICAgICAgICBmZWVkSUQsXG4gICAgICAgIGZlZWRDbGFzcyxcbiAgICAgICAgZmVlZEZpbHRlcnMsXG4gICAgICAgIGZldGNoTWVzc2FnZXNDYW5jZWxUb2tlblNvdXJjZSxcbiAgICAgICAgZmV0Y2hNZXNzYWdlc1xuICAgICAgXVxuICAgICk7XG5cbiAgICAqL1xuXG4gICAgLy8gc2V0IHVwIHN2ZyBpbWFnZXNcbiAgICB0aGlzLnN2Z0NvbW1lbnQkID0gdGhpcy51dGlscy5nZXRJbWFnZVNyYygnY2hhdCcsIHRoaXMudXRpbHMuZ2V0U0RLU3RhdGljQ29udGVudFVybCgpKTtcbiAgICB0aGlzLnN2Z0xpa2UkID0gdGhpcy51dGlscy5nZXRJbWFnZVNyYygndGh1bWJzLXVwJywgdGhpcy51dGlscy5nZXRTREtTdGF0aWNDb250ZW50VXJsKCkpO1xuICAgIHRoaXMuc3ZnTGlrZWRCeU1lJCA9IHRoaXMudXRpbHMuZ2V0SW1hZ2VTcmMoJ3RodW1icy11cC1zb2xpZCcsIHRoaXMudXRpbHMuZ2V0U0RLU3RhdGljQ29udGVudFVybCgpKTtcbiAgICB0aGlzLnN2Z1NlbmQkID0gdGhpcy51dGlscy5nZXRJbWFnZVNyYygnc2VuZCcsIHRoaXMudXRpbHMuZ2V0U0RLU3RhdGljQ29udGVudFVybCgpKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbikge1xuICAgICAgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnVuc3Vic2NyaWJlRm4oKTtcbiAgICB9XG4gIH1cblxuICAvLyBDYWxsYmFjayBwYXNzZWQgd2hlbiBzdWJzY3JpYmluZyB0byBzdG9yZSBjaGFuZ2VcbiAgb25TdGF0ZUNoYW5nZSgpIHtcbiAgICBjb25zdCBiTG9nZ2luZyA9IGZhbHNlO1xuICAgIGlmIChiTG9nZ2luZykge1xuICAgICAgLy8gY29uc29sZS5sb2coIGBpbiAke3RoaXMuY29uc3RydWN0b3IubmFtZX0gb25TdGF0ZUNoYW5nZWAgKTtcbiAgICAgIC8vIGRlYnVnZ2VyO1xuICAgIH1cbiAgICAvLyBTaG91bGQgYWx3YXlzIGNoZWNrIHRoZSBicmlkZ2UgdG8gc2VlIGlmIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZSBpdHNlbGYgKHJlLXJlbmRlcilcbiAgICBjb25zdCBiVXBkYXRlU2VsZiA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnNob3VsZENvbXBvbmVudFVwZGF0ZSh0aGlzKTtcbiAgICAvLyBjb25zb2xlLmxvZyggYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfSBzaG91bGRDb21wb25lbnRVcGRhdGU6ICR7YlVwZGF0ZVNlbGZ9YCk7XG5cbiAgICAvLyBPTkxZIGNhbGwgdXBkYXRlU2VsZiB3aGVuIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZVxuICAgIC8vICAgIEFORCByZW1vdmluZyB0aGUgXCJnYXRlXCIgdGhhdCB3YXMgcHV0IHRoZXJlIHNpbmNlIHNob3VsZENvbXBvbmVudFVwZGF0ZVxuICAgIC8vICAgICAgc2hvdWxkIGJlIHRoZSByZWFsIFwiZ2F0ZVwiXG4gICAgaWYgKGJVcGRhdGVTZWxmKSB7XG4gICAgICB0aGlzLnVwZGF0ZVNlbGYoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbmV3UHVsc2VEYXRhID0gdGhpcy5wQ29ubiQuZ2V0RGF0YU9iamVjdCgpLnB1bHNlO1xuXG4gICAgICBpZiAoIWlzRXF1YWwobmV3UHVsc2VEYXRhLCB0aGlzLnB1bHNlRGF0YSkpIHtcbiAgICAgICAgdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5wdWxzZURhdGEgPSB0aGlzLnBDb25uJC5nZXREYXRhT2JqZWN0KCkucHVsc2U7XG4gIH1cblxuICB1cGRhdGVTZWxmKCkge1xuICAgIHRoaXMuZ2V0TWVzc2FnZURhdGEoKTtcbiAgfVxuXG4gIGdldE1lc3NhZ2VEYXRhKCkge1xuICAgIGNvbnN0IG1lc3NhZ2VJRHMgPSAodGhpcy5wQ29ubiQuZ2V0Q29uZmlnUHJvcHMoKSBhcyBhbnkpLm1lc3NhZ2VJRHM7XG4gICAgY29uc3QgdXNlck5hbWUgPSAodGhpcy5wQ29ubiQuZ2V0Q29uZmlnUHJvcHMoKSBhcyBhbnkpLmN1cnJlbnRVc2VyO1xuICAgIGNvbnN0IGltYWdlS2V5ID0gdGhpcy5wQ29ubiQuZ2V0VmFsdWUoJ09wZXJhdG9ySUQucHlJbWFnZUluc0tleScpO1xuXG4gICAgY29uc3Qgb0RhdGE6IGFueSA9IHRoaXMucENvbm4kLmdldERhdGFPYmplY3QoKTtcblxuICAgIGlmIChtZXNzYWdlSURzICYmIG1lc3NhZ2VJRHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5wdWxzZU1lc3NhZ2VzJCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob0RhdGEucHVsc2UubWVzc2FnZXMpKTtcblxuICAgICAgLy8gY29udmVydCB0byBqdXN0IGFuIGFycmF5IG9mIG9iamVjdHNcbiAgICAgIHRoaXMucHVsc2VNZXNzYWdlcyQgPSB0aGlzLmNvbnZlcnRUb0FycmF5KHRoaXMucHVsc2VNZXNzYWdlcyQpO1xuXG4gICAgICAvLyBjcmVhdGUgYSBjb3B5LCBzbyB3ZSBjYW4gbW9kaWZ5XG4gICAgICB0aGlzLnB1bHNlTWVzc2FnZXMkID0gdGhpcy5hcHBlbmRQdWxzZU1lc3NhZ2UodGhpcy5wdWxzZU1lc3NhZ2VzJCk7XG5cbiAgICAgIC8vIG1vc3QgcmVjZW50IG9uIHRvcFxuICAgICAgdGhpcy5wdWxzZU1lc3NhZ2VzJCA9IHRoaXMucHVsc2VNZXNzYWdlcyQuc29ydCgoYSwgYikgPT4gKGEudXBkYXRlVGltZVVUQyA8IGIudXBkYXRlVGltZVVUQyA/IDEgOiAtMSkpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnZlcnRUb0FycmF5KG1lc3NhZ2VzOiBhbnlbXSk6IGFueVtdIHtcbiAgICBjb25zdCBhck1lc3NhZ2VzOiBhbnlbXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtZXNzYWdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgYXJNZXNzYWdlcy5wdXNoKG1lc3NhZ2VzW2ldKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXJNZXNzYWdlcztcbiAgfVxuXG4gIGFwcGVuZFB1bHNlTWVzc2FnZShtZXNzYWdlczogYW55W10pOiBhbnlbXSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtZXNzYWdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IG1lc3NhZ2VzW2ldO1xuICAgICAgY29uc3QgcG9zdGVkVGltZSA9IG1lc3NhZ2UucG9zdGVkVGltZTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRUaW1lID0gbWVzc2FnZS51cGRhdGVkVGltZTtcblxuICAgICAgdGhpcy5zaG93UmVwbHlDb21tZW50JFttZXNzYWdlLklEXSA9IGZhbHNlO1xuXG4gICAgICBtZXNzYWdlLmRpc3BsYXlQb3N0ZWRUaW1lID0gdGhpcy51dGlscy5nZW5lcmF0ZURhdGVUaW1lKHBvc3RlZFRpbWUsICdEYXRlVGltZS1TaW5jZScpO1xuXG4gICAgICAvLyBmb3Igc29ydGluZyBsYXN0ZWQgdXBkYXRlXG4gICAgICBpZiAodXBkYXRlZFRpbWUgIT0gbnVsbCkge1xuICAgICAgICBtZXNzYWdlLnVwZGF0ZVRpbWVVVEMgPSBuZXcgRGF0ZSh1cGRhdGVkVGltZSkuZ2V0VGltZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWVzc2FnZS51cGRhdGVUaW1lVVRDID0gbmV3IERhdGUocG9zdGVkVGltZSkuZ2V0VGltZSgpO1xuICAgICAgfVxuXG4gICAgICBtZXNzYWdlLmRpc3BsYXlQb3N0ZWRCeSA9IG1lc3NhZ2UucG9zdGVkQnlVc2VyLm5hbWU7XG4gICAgICBtZXNzYWdlLmRpc3BsYXlQb3N0ZWRCeUluaXRpYWxzID0gdGhpcy51dGlscy5nZXRJbml0aWFscyhtZXNzYWdlLnBvc3RlZEJ5VXNlci5uYW1lKTtcblxuICAgICAgLy8gaWYgZGlkbid0IGJyZWFrLCB0aGVuIGxvb2sgYXQgdGhlIHJlcGxpZXNcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWVzc2FnZS5yZXBsaWVzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIGNvbnN0IHJlcGx5ID0gbWVzc2FnZS5yZXBsaWVzW2pdO1xuXG4gICAgICAgIGNvbnN0IHJlcGx5UG9zdGVkVGltZSA9IHJlcGx5LnBvc3RlZFRpbWU7XG4gICAgICAgIHJlcGx5LmRpc3BsYXlQb3N0ZWRUaW1lID0gdGhpcy51dGlscy5nZW5lcmF0ZURhdGVUaW1lKHJlcGx5UG9zdGVkVGltZSwgJ0RhdGVUaW1lLVNpbmNlJyk7XG5cbiAgICAgICAgLy8gbGV0IG9SZXBseVVzZXIgPSB0aGlzLnVzZXJEYXRhLmdldChyZXBseS5wb3N0ZWRCeVVzZXIpO1xuICAgICAgICBjb25zdCBvUmVwbHlVc2VyID0gcmVwbHkucG9zdGVkQnlVc2VyO1xuXG4gICAgICAgIGlmIChvUmVwbHlVc2VyKSB7XG4gICAgICAgICAgcmVwbHkuZGlzcGxheVBvc3RlZEJ5ID0gb1JlcGx5VXNlci5uYW1lO1xuICAgICAgICAgIHJlcGx5LmRpc3BsYXlQb3N0ZWRCeUluaXRpYWxzID0gdGhpcy51dGlscy5nZXRJbml0aWFscyhvUmVwbHlVc2VyLm5hbWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSAvLyBmb3JcblxuICAgIHJldHVybiBtZXNzYWdlcztcbiAgfVxuXG4gIHVwZGF0ZU1lc3NhZ2VzV2l0aE9wZXJhdG9ycygpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucHVsc2VNZXNzYWdlcyQubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLnB1bHNlTWVzc2FnZXMkW2ldO1xuXG4gICAgICBjb25zdCBwb3N0ZWRUaW1lID0gbWVzc2FnZS5wb3N0ZWRUaW1lO1xuXG4gICAgICB0aGlzLnNob3dSZXBseUNvbW1lbnQkW21lc3NhZ2UuSURdID0gZmFsc2U7XG5cbiAgICAgIG1lc3NhZ2UuZGlzcGxheVBvc3RlZFRpbWUgPSB0aGlzLnV0aWxzLmdlbmVyYXRlRGF0ZVRpbWUocG9zdGVkVGltZSwgJ0RhdGVUaW1lLVNpbmNlJyk7XG5cbiAgICAgIGNvbnN0IG9Vc2VyID0gdGhpcy51c2VyRGF0YS5nZXQobWVzc2FnZS5wb3N0ZWRCeSk7XG5cbiAgICAgIGlmIChvVXNlcikge1xuICAgICAgICBtZXNzYWdlLmRpc3BsYXlQb3N0ZWRCeSA9IG9Vc2VyLnB5VXNlck5hbWU7XG4gICAgICAgIG1lc3NhZ2UuZGlzcGxheVBvc3RlZEJ5SW5pdGlhbHMgPSB0aGlzLnV0aWxzLmdldEluaXRpYWxzKG9Vc2VyLnB5VXNlck5hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgb1VzZXJQYXJhbXMgPSB7XG4gICAgICAgICAgT3BlcmF0b3JJZDogbWVzc2FnZS5wb3N0ZWRCeVxuICAgICAgICB9O1xuICAgICAgICAvLyBEbyBzb21ldGhpbmcgd2l0aCBvVXNlclBhcmFtc1xuICAgICAgfVxuXG4gICAgICAvLyBpZiBkaWRuJ3QgYnJlYWssIHRoZW4gbG9vayBhdCB0aGUgcmVwbGllc1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBtZXNzYWdlLnJlcGxpZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgY29uc3QgcmVwbHkgPSBtZXNzYWdlLnJlcGxpZXNbal07XG5cbiAgICAgICAgY29uc3QgcmVwbHlQb3N0ZWRUaW1lID0gcmVwbHkucG9zdGVkVGltZTtcbiAgICAgICAgcmVwbHkuZGlzcGxheVBvc3RlZFRpbWUgPSB0aGlzLnV0aWxzLmdlbmVyYXRlRGF0ZVRpbWUocmVwbHlQb3N0ZWRUaW1lLCAnRGF0ZVRpbWUtU2luY2UnKTtcblxuICAgICAgICAvLyBsZXQgb1JlcGx5VXNlciA9IHRoaXMudXNlckRhdGEuZ2V0KHJlcGx5LnBvc3RlZEJ5VXNlcik7XG4gICAgICAgIGNvbnN0IG9SZXBseVVzZXIgPSByZXBseS5wb3N0ZWRCeVVzZXI7XG5cbiAgICAgICAgaWYgKG9SZXBseVVzZXIpIHtcbiAgICAgICAgICByZXBseS5kaXNwbGF5UG9zdGVkQnkgPSBvUmVwbHlVc2VyLm5hbWU7XG4gICAgICAgICAgcmVwbHkuZGlzcGxheVBvc3RlZEJ5SW5pdGlhbHMgPSB0aGlzLnV0aWxzLmdldEluaXRpYWxzKG9SZXBseVVzZXIubmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IC8vIGZvclxuICB9XG5cbiAgdXBkYXRlQ3VycmVudFVzZXJOYW1lKHNVc2VyOiBzdHJpbmcpIHtcbiAgICB0aGlzLmN1cnJlbnRVc2VySW5pdGlhbHMkID0gdGhpcy51dGlscy5nZXRJbml0aWFscyhzVXNlcik7XG4gICAgdGhpcy5jdXJyZW50VXNlck5hbWUkID0gc1VzZXI7XG4gIH1cblxuICBwb3N0Q2xpY2soKSB7XG4gICAgLy8gZG9uJ3Qgc2VuZCBhIGJsYW5rIG1lc3NhZ2VcbiAgICBpZiAodGhpcy5wdWxzZUNvbnZlcnNhdGlvbiAmJiB0aGlzLnB1bHNlQ29udmVyc2F0aW9uICE9ICcnKSB7XG4gICAgICAvLyBsZXQgcHVsc2VNZXNzYWdlID0ge1xuICAgICAgLy8gICBjb250ZXh0TmFtZSA6IHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKCksXG4gICAgICAvLyAgIG1lc3NhZ2U6IHRoaXMucHVsc2VDb252ZXJzYXRpb24sXG4gICAgICAvLyAgIHB1bHNlQ29udGV4dDogdGhpcy5wQ29ubiQuZ2V0VmFsdWUoXCIucHpJbnNLZXlcIilcbiAgICAgIC8vIH07XG5cbiAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgLy8gdXNlZCB0byBiZTogdGhpcy4vKmZlZWRBUEkuKi9wb3N0TWVzc2FnZShwdWxzZU1lc3NhZ2UpO1xuICAgICAgLy8gV2l0aCBsYXRlc3QgRmVlZEFQSSwgdGhlIDFzdCBhcmcgc2hvdWxkIGJlIGdldENvbmZpZ1Byb3BzKCkudmFsdWVcblxuICAgICAgLy8gSWYgZmVlZEFQSSBpcyBkZWZpbmVkIHRoZW4gb25seSBwb3N0IG1lc3NhZ2VcbiAgICAgIGlmICh0aGlzLmZlZWRBUEkpIHtcbiAgICAgICAgdGhpcy4vKiBmZWVkQVBJLiAqLyBwb3N0TWVzc2FnZSgodGhpcy5wQ29ubiQuZ2V0Q29uZmlnUHJvcHMoKSBhcyBhbnkpLnZhbHVlLCB0aGlzLnB1bHNlQ29udmVyc2F0aW9uKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiV2UgZG9uJ3Qgc3VwcG9ydCBQdWxzZSB5ZXRcIik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gY2xlYXIgb3V0IGxvY2FsIGNvcHlcbiAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3B1bHNlTWVzc2FnZScpIGFzIEhUTUxFbGVtZW50IHwgYW55KS52YWx1ZSA9ICcnO1xuICAgIHRoaXMucHVsc2VDb252ZXJzYXRpb24gPSAnJztcbiAgfVxuXG4gIG1lc3NhZ2VDaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMucHVsc2VDb252ZXJzYXRpb24gPSBldmVudC50YXJnZXQudmFsdWU7XG4gIH1cblxuICBsaWtlQ2xpY2sobWVzc2FnZUlEOiBzdHJpbmcsIHJNZXNzYWdlSUQ6IHN0cmluZywgYkxpa2VkQnlNZTogYm9vbGVhbiwgbGV2ZWw6IHN0cmluZykge1xuICAgIGxldCBwdWxzZU1lc3NhZ2UgPSB7fTtcblxuICAgIGlmIChsZXZlbCA9PT0gJ3RvcCcpIHtcbiAgICAgIHB1bHNlTWVzc2FnZSA9IHtcbiAgICAgICAgcHVsc2VDb250ZXh0OiByTWVzc2FnZUlELFxuICAgICAgICBpc1JlcGx5OiBudWxsLFxuICAgICAgICBjb250ZXh0TmFtZTogdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKSxcbiAgICAgICAgbGlrZWRCeTogYkxpa2VkQnlNZSxcbiAgICAgICAgbWVzc2FnZUlEXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBwdWxzZU1lc3NhZ2UgPSB7XG4gICAgICAgIHB1bHNlQ29udGV4dDogck1lc3NhZ2VJRCxcbiAgICAgICAgaXNSZXBseTogdHJ1ZSxcbiAgICAgICAgY29udGV4dE5hbWU6IHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKCksXG4gICAgICAgIGxpa2VkQnk6IGJMaWtlZEJ5TWUsXG4gICAgICAgIG1lc3NhZ2VJRFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICB0aGlzLi8qIGZlZWRBUEkuICovIGxpa2VNZXNzYWdlKHB1bHNlTWVzc2FnZSk7XG4gIH1cblxuICBjb21tZW50Q2xpY2sobWVzc2FnZUlEKSB7XG4gICAgLy8gaXRlcmF0b3IgdGhyb3VnaCBtZXNzYWdlcywgZmluZCBtYXRjaCwgdHVybiBvbiBjb21tZW50IGVudHJ5XG4gICAgY29uc3QgZm91bmRNZXNzYWdlID0gdGhpcy5wdWxzZU1lc3NhZ2VzJC5maW5kKG1lc3NhZ2UgPT4gbWVzc2FnZS5JRCA9PT0gbWVzc2FnZUlEKTtcblxuICAgIGlmIChmb3VuZE1lc3NhZ2UpIHtcbiAgICAgIHRoaXMuc2hvd1JlcGx5Q29tbWVudCRbZm91bmRNZXNzYWdlLklEXSA9IHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwb3N0Q29tbWVudENsaWNrKG1lc3NhZ2VJRCkge1xuICAgIC8vIGRlYnVnZ2VyO1xuXG4gICAgaWYgKHRoaXMucHVsc2VDb21tZW50W21lc3NhZ2VJRF0gJiYgdGhpcy5wdWxzZUNvbW1lbnRbbWVzc2FnZUlEXSAhPSAnJykge1xuICAgICAgLy8gbGV0IHB1bHNlTWVzc2FnZSA9IHtcbiAgICAgIC8vICAgY29udGV4dE5hbWUgOiB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpLFxuICAgICAgLy8gICBtZXNzYWdlOiB0aGlzLnB1bHNlQ29tbWVudFttZXNzYWdlSURdLFxuICAgICAgLy8gICBwdWxzZUNvbnRleHQ6IG1lc3NhZ2VJRCxcbiAgICAgIC8vICAgcmVwbHk6IHRydWVcbiAgICAgIC8vIH07XG5cbiAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgLy8gVXNlZCB0byBiZTogdGhpcy4vKmZlZWRBUEkuKi9wb3N0TWVzc2FnZShwdWxzZU1lc3NhZ2UpO1xuICAgICAgLy8gIExhdGVzdCB1cGRhdGUgdG8gQVBJIGhhcyBjaGFuZ2VkIGFuZCB0aGUgcG9zdE1lc3NhZ2UgYWN0dWFsbHkgZ2V0c1xuICAgICAgLy8gIHRoZSBwdWxzZSBjb250ZXh0Li4uXG4gICAgICAvLyB1c2VkIHRvIHVzZTogY29udGV4dE5hbWVcbiAgICAgIC8vIG5ldyBGZWVkQVBJIHdhbnRzIGFyZ3MgdG8gYmUgbWVzc2FnZUlELCB0aGlzLnB1bHNlQ29tbWVudFttZXNzYWdlSURdLCB0cnVlIChzaW5jZSB0aGlzIGlzIGEgcmVwbHkpXG4gICAgICB0aGlzLi8qIGZlZWRBUEkuICovIHBvc3RNZXNzYWdlKG1lc3NhZ2VJRCwgdGhpcy5wdWxzZUNvbW1lbnRbbWVzc2FnZUlEXSwgdHJ1ZSk7XG5cbiAgICAgIHRoaXMucHVsc2VDb21tZW50W21lc3NhZ2VJRF0gPSAnJztcbiAgICB9XG4gIH1cblxuICBuZXdDb21tZW50Q2hhbmdlKGV2ZW50LCBtZXNzYWdlSUQpIHtcbiAgICB0aGlzLnB1bHNlQ29tbWVudFttZXNzYWdlSURdID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICB9XG59XG4iLCI8ZGl2PlxuICA8ZGl2IHN0eWxlPVwidGV4dC1hbGlnbjogbGVmdFwiPlxuICAgIDxoMz5QdWxzZTwvaDM+XG5cbiAgICA8ZGl2IGNsYXNzPVwicHNkay1wdWxzZS1kaXZpZGVyXCI+PC9kaXY+XG5cbiAgICA8YnIgLz5cbiAgICA8ZGl2IGNsYXNzPVwicHNkay1wdWxzZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBzZGstYXZhdGFyLWJpZ1wiPnt7IHRoaXMuY3VycmVudFVzZXJJbml0aWFscyQgfX08L2Rpdj5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInBzZGstZnVsbC13aWR0aFwiPlxuICAgICAgICA8dGV4dGFyZWEgbWF0SW5wdXQgcm93cz1cIjVcIiBpZD1cInB1bHNlTWVzc2FnZVwiIHBsYWNlaG9sZGVyPVwiU3RhcnQgYSBjb252ZXJzYXRpb25cIiB0eXBlPVwidGV4dFwiIChjaGFuZ2UpPVwibWVzc2FnZUNoYW5nZSgkZXZlbnQpXCI+PC90ZXh0YXJlYT5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxtYXQtZ3JpZC1saXN0IGNvbHM9XCIyXCIgcm93SGVpZ2h0PVwiNi4yNXJlbVwiPlxuICA8bWF0LWdyaWQtdGlsZT4gPC9tYXQtZ3JpZC10aWxlPlxuICA8bWF0LWdyaWQtdGlsZT5cbiAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJwb3N0Q2xpY2soKVwiPlBvc3Q8L2J1dHRvbj5cbiAgPC9tYXQtZ3JpZC10aWxlPlxuPC9tYXQtZ3JpZC1saXN0PlxuXG48ZGl2ICpuZ0Zvcj1cImxldCBwdWxzZU1lc3NhZ2Ugb2YgcHVsc2VNZXNzYWdlcyQ7IGxldCBvZGQgPSBvZGRcIiBzdHlsZT1cInRleHQtYWxpZ246IGxlZnRcIiBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJvZGQgPyAnd2hpdGUnIDogJyNlZWVlZWUnXCI+XG4gIDxkaXYgY2xhc3M9XCJwc2RrLXB1bHNlLWRpdmlkZXJcIj48L2Rpdj5cbiAgPGJyIC8+XG4gIDxkaXYgY2xhc3M9XCJwc2RrLXB1bHNlXCI+XG4gICAgPGRpdiBjbGFzcz1cInBzZGstYXZhdGFyLWJpZ1wiPnt7IHB1bHNlTWVzc2FnZS5kaXNwbGF5UG9zdGVkQnlJbml0aWFscyB9fTwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJwc2RrLXB1bHNlLW1lc3NhZ2UtZ3JvdXBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLXB1bHNlLW1lc3NhZ2UtYnlcIj57eyBwdWxzZU1lc3NhZ2UuZGlzcGxheVBvc3RlZEJ5IH19PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicHNkay1wdWxzZS1tZXNzYWdlLXRpbWVcIj57eyBwdWxzZU1lc3NhZ2UuZGlzcGxheVBvc3RlZFRpbWUgfX08L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJwc2RrLXB1bHNlLW1lc3NhZ2UtdGV4dFwiPnt7IHB1bHNlTWVzc2FnZS5tZXNzYWdlIH19PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJwc2RrLXB1bHNlLW1lc3NhZ2UtYWN0aW9uc1wiPlxuICAgIDxkaXYgY2xhc3M9XCJwc2RrLXB1bHNlLW1lc3NhZ2UtYWN0aW9uLWdyb3VwXCI+XG4gICAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cImNvbW1lbnRDbGljayhwdWxzZU1lc3NhZ2UuSUQpXCI+XG4gICAgICAgIDxpbWcgY2xhc3M9XCJwc2RrLWNvbW1lbnQtc3ZnLWljb25cIiBzcmM9XCJ7eyBzdmdDb21tZW50JCB9fVwiIC8+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInBzZGstcHVsc2UtbWVzc2FnZS1saWtlLWxhYmVsXCJcbiAgICAgICAgICA+Q29tbWVudCA8c3BhbiAqbmdJZj1cInB1bHNlTWVzc2FnZT8ucmVwbGllcy5sZW5ndGggPiAwXCI+IHwge3sgcHVsc2VNZXNzYWdlLnJlcGxpZXMubGVuZ3RoIH19PC9zcGFuPjwvbGFiZWxcbiAgICAgICAgPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInBzZGstcHVsc2UtbWVzc2FnZS1hY3Rpb24tbGlrZVwiPlxuICAgICAgPGRpdiAqbmdJZj1cInB1bHNlTWVzc2FnZT8ubGlrZUNvdW50OyBlbHNlIG5vdExpa2VkXCI+XG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJwdWxzZU1lc3NhZ2U/Lmxpa2VkQnlNZSA9PSAndHJ1ZSdcIiBtYXQtYnV0dG9uIChjbGljayk9XCJsaWtlQ2xpY2socHVsc2VNZXNzYWdlLklELCBwdWxzZU1lc3NhZ2UuSUQsIHRydWUsICd0b3AnKVwiPlxuICAgICAgICAgIDwhLS0gPG1hdC1pY29uIGNsYXNzPVwicHNkay1pY29uLWxpa2VkLWJ5LW1lXCIgc3ZnSWNvbj1cInRodW1iLXVwXCIgbWFzdExpc3RJY29uID48L21hdC1pY29uPiAtLT5cbiAgICAgICAgICA8aW1nIGNsYXNzPVwicHNkay1saWtlZC1ieS1tZS1zdmctaWNvblwiIHNyYz1cInt7IHN2Z0xpa2VkQnlNZSQgfX1cIiAvPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInBzZGstcHVsc2UtbWVzc2FnZS1saWtlLWxhYmVsXCI+TGlrZSB8IHt7IHB1bHNlTWVzc2FnZS5saWtlQ291bnQgfX08L2xhYmVsPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInB1bHNlTWVzc2FnZT8ubGlrZWRCeU1lICE9ICd0cnVlJ1wiIG1hdC1idXR0b24gKGNsaWNrKT1cImxpa2VDbGljayhwdWxzZU1lc3NhZ2UuSUQsIHB1bHNlTWVzc2FnZS5JRCwgZmFsc2UsICd0b3AnKVwiPlxuICAgICAgICAgIDwhLS0gPG1hdC1pY29uIGNsYXNzPVwicHNkay1pY29uXCIgc3ZnSWNvbj1cInRodW1iLXVwLW91dGxpbmVcIiBtYXN0TGlzdEljb24gPjwvbWF0LWljb24+IC0tPlxuICAgICAgICAgIDxpbWcgY2xhc3M9XCJwc2RrLWxpa2Utc3ZnLWljb25cIiBzcmM9XCJ7eyBzdmdMaWtlJCB9fVwiIC8+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwicHNkay1wdWxzZS1tZXNzYWdlLWxpa2UtbGFiZWxcIj5MaWtlIHwge3sgcHVsc2VNZXNzYWdlLmxpa2VDb3VudCB9fTwvbGFiZWw+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8bmctdGVtcGxhdGUgI25vdExpa2VkPlxuICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cImxpa2VDbGljayhwdWxzZU1lc3NhZ2UuSUQsIHB1bHNlTWVzc2FnZS5JRCwgZmFsc2UsICd0b3AnKVwiPlxuICAgICAgICAgIDwhLS0gPG1hdC1pY29uIGNsYXNzPVwicHNkay1pY29uXCIgc3ZnSWNvbj1cInRodW1iLXVwLW91dGxpbmVcIiBtYXN0TGlzdEljb24gPjwvbWF0LWljb24+IC0tPlxuICAgICAgICAgIDxpbWcgY2xhc3M9XCJwc2RrLWxpa2Utc3ZnLWljb25cIiBzcmM9XCJ7eyBzdmdMaWtlJCB9fVwiIC8+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwicHNkay1wdWxzZS1tZXNzYWdlLWxpa2UtbGFiZWxcIj5MaWtlPC9sYWJlbD5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPVwicHVsc2VNZXNzYWdlPy5yZXBsaWVzXCIgY2xhc3M9XCJwc2RrLXB1bHNlLXJlcGx5XCI+XG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgcmVwbHlNZXNzYWdlIG9mIHB1bHNlTWVzc2FnZS5yZXBsaWVzXCIgY2xhc3M9XCJwc2RrLXB1bHNlLXJlcGx5LWFsaWduXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicHNkay1wdWxzZS1kaXZpZGVyXCI+PC9kaXY+XG4gICAgICA8YnIgLz5cbiAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLXB1bHNlLXJlcGx5LWdyb3VwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLWF2YXRhclwiPnt7IHJlcGx5TWVzc2FnZS5kaXNwbGF5UG9zdGVkQnlJbml0aWFscyB9fTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHNkay1wdWxzZS1yZXBseS1ieVwiPnt7IHJlcGx5TWVzc2FnZS5kaXNwbGF5UG9zdGVkQnkgfX08L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBzZGstcHVsc2UtcmVwbHktbWVzc2FnZVwiPnt7IHJlcGx5TWVzc2FnZS5tZXNzYWdlIH19PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLXB1bHNlLXJlcGx5LWFjdGlvbnNcIj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJjb21tZW50Q2xpY2socHVsc2VNZXNzYWdlLklEKVwiIGNsYXNzPVwicHNkay1wdWxzZS1yZXBseS1jb21tZW50XCI+XG4gICAgICAgICAgPGltZyBjbGFzcz1cInBzZGstY29tbWVudC1zdmctaWNvblwiIHNyYz1cInt7IHN2Z0NvbW1lbnQkIH19XCIgLz5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJyZXBseU1lc3NhZ2U/Lmxpa2VDb3VudDsgZWxzZSByZXBseU5vdExpa2VkXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJyZXBseU1lc3NhZ2U/Lmxpa2VkQnlNZSA9PT0gJ3RydWUnXCJcbiAgICAgICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgICAgIChjbGljayk9XCJsaWtlQ2xpY2socHVsc2VNZXNzYWdlLklELCByZXBseU1lc3NhZ2UuSUQsIHRydWUsICdyZXBseScpXCJcbiAgICAgICAgICAgIGNsYXNzPVwicHNkay1wdWxzZS1yZXBseS1saWtlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW1nIGNsYXNzPVwicHNkay1saWtlZC1ieS1tZS1zdmctaWNvblwiIHNyYz1cInt7IHN2Z0xpa2VkQnlNZSQgfX1cIiAvPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwicmVwbHlNZXNzYWdlPy5saWtlZEJ5TWUgIT0gJ3RydWUnXCJcbiAgICAgICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgICAgIChjbGljayk9XCJsaWtlQ2xpY2socHVsc2VNZXNzYWdlLklELCByZXBseU1lc3NhZ2UuSUQsIGZhbHNlLCAncmVwbHknKVwiXG4gICAgICAgICAgICBjbGFzcz1cInBzZGstcHVsc2UtcmVwbHktbGlrZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGltZyBjbGFzcz1cInBzZGstbGlrZS1zdmctaWNvblwiIHNyYz1cInt7IHN2Z0xpa2UkIH19XCIgLz5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJwc2RrLXB1bHNlLXJlcGx5LWxpa2UtbGFiZWxcIj5MaWtlIHwge3sgcmVwbHlNZXNzYWdlLmxpa2VDb3VudCB9fTwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctdGVtcGxhdGUgI3JlcGx5Tm90TGlrZWQ+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJyZXBseU1lc3NhZ2U/Lmxpa2VkQnlNZSAhPSAndHJ1ZSdcIlxuICAgICAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAgICAgKGNsaWNrKT1cImxpa2VDbGljayhwdWxzZU1lc3NhZ2UuSUQsIHJlcGx5TWVzc2FnZS5JRCwgZmFsc2UsICdyZXBseScpXCJcbiAgICAgICAgICAgIGNsYXNzPVwicHNkay1wdWxzZS1yZXBseS1saWtlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW1nIGNsYXNzPVwicHNkay1saWtlLXN2Zy1pY29uXCIgc3JjPVwie3sgc3ZnTGlrZSQgfX1cIiAvPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLXB1bHNlLXJlcGx5LXRpbWVcIj57eyByZXBseU1lc3NhZ2UuZGlzcGxheVBvc3RlZFRpbWUgfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGJyIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwic2hvd1JlcGx5Q29tbWVudCRbcHVsc2VNZXNzYWdlLklEXSA9PSB0cnVlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicHNkay1wdWxzZS1kaXZpZGVyXCI+PC9kaXY+XG4gICAgICA8YnIgLz5cbiAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLXB1bHNlLWNvbW1lbnQtZ3JvdXBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBzZGstYXZhdGFyXCI+e3sgdGhpcy5jdXJyZW50VXNlckluaXRpYWxzJCB9fTwvZGl2PlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJwc2RrLWZ1bGwtd2lkdGhcIj5cbiAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICByb3dzPVwiNVwiXG4gICAgICAgICAgICBpZD1cInB1bHNlTWVzc2FnZVwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkFkZCBhIGNvbW1lbnRcIlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJuZXdDb21tZW50Q2hhbmdlKCRldmVudCwgcHVsc2VNZXNzYWdlLklEKVwiXG4gICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwicG9zdENvbW1lbnRDbGljayhwdWxzZU1lc3NhZ2UuSUQpXCIgY2xhc3M9XCJwc2RrLXB1bHNlLWNvbW1lbnQtcG9zdFwiPlxuICAgICAgICAgIDxpbWcgY2xhc3M9XCJwc2RrLXNlbmQtc3ZnLWljb25cIiBzcmM9XCJ7eyBzdmdTZW5kJCB9fVwiIC8+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8YnIgLz5cbjwvZGl2PlxuIl19
|