@pega/angular-sdk-components 0.23.6 → 0.24.1
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/_bridge/angular-pconnect.mjs +14 -2
- package/esm2022/lib/_bridge/helpers/sdk-pega-component-map.mjs +3 -1
- package/esm2022/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.mjs +6 -3
- package/esm2022/lib/_components/designSystemExtension/operator/operator.component.mjs +9 -5
- package/esm2022/lib/_components/field/auto-complete/auto-complete.component.mjs +2 -2
- package/esm2022/lib/_components/field/check-box/check-box.component.mjs +107 -42
- package/esm2022/lib/_components/field/group/group.component.mjs +6 -3
- package/esm2022/lib/_components/field/multiselect/multiselect.component.mjs +311 -0
- package/esm2022/lib/_components/field/multiselect/utils.mjs +187 -0
- package/esm2022/lib/_components/field/rich-text/rich-text.component.mjs +3 -3
- package/esm2022/lib/_components/field/time/time.component.mjs +5 -3
- package/esm2022/lib/_components/field/url/url.component.mjs +5 -3
- package/esm2022/lib/_components/infra/Containers/view-container/view-container.component.mjs +6 -6
- package/esm2022/lib/_components/infra/multi-step/multi-step.component.mjs +3 -3
- package/esm2022/lib/_components/infra/navbar/navbar.component.mjs +6 -3
- package/esm2022/lib/_components/template/case-summary/case-summary.component.mjs +33 -4
- package/esm2022/lib/_components/template/field-value-list/field-value-list.component.mjs +8 -3
- package/esm2022/lib/_components/template/list-view/list-view.component.mjs +23 -25
- package/esm2022/lib/_components/template/simple-table-manual/helpers.mjs +2 -2
- package/esm2022/lib/_components/template/simple-table-manual/simple-table-manual.component.mjs +41 -12
- package/esm2022/lib/_components/template/wss-nav-bar/wss-nav-bar.component.mjs +5 -3
- package/esm2022/lib/_components/widget/attachment/attachment.component.mjs +7 -3
- package/esm2022/lib/_helpers/instructions-utils.mjs +36 -0
- package/esm2022/lib/_helpers/utils.mjs +2 -2
- package/fesm2022/pega-angular-sdk-components.mjs +778 -112
- package/fesm2022/pega-angular-sdk-components.mjs.map +1 -1
- package/lib/_bridge/angular-pconnect.d.ts +2 -0
- package/lib/_bridge/helpers/sdk-pega-component-map.d.ts +2 -0
- package/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.d.ts +2 -0
- package/lib/_components/designSystemExtension/operator/operator.component.d.ts +2 -1
- package/lib/_components/field/check-box/check-box.component.d.ts +18 -0
- package/lib/_components/field/multiselect/multiselect.component.d.ts +64 -0
- package/lib/_components/field/multiselect/utils.d.ts +8 -0
- package/lib/_components/field/time/time.component.d.ts +1 -0
- package/lib/_components/field/url/url.component.d.ts +1 -0
- package/lib/_components/infra/navbar/navbar.component.d.ts +2 -0
- package/lib/_components/template/case-summary/case-summary.component.d.ts +2 -0
- package/lib/_components/template/field-value-list/field-value-list.component.d.ts +2 -1
- package/lib/_components/template/list-view/list-view.component.d.ts +0 -2
- package/lib/_components/template/simple-table-manual/simple-table-manual.component.d.ts +2 -0
- package/lib/_components/template/wss-nav-bar/wss-nav-bar.component.d.ts +2 -0
- package/lib/_components/widget/attachment/attachment.component.d.ts +4 -0
- package/lib/_helpers/instructions-utils.d.ts +4 -0
- package/lib/doc/KeyReleaseUpdates.md +1 -1
- package/package.json +1 -1
|
@@ -96,7 +96,7 @@ export class Utils {
|
|
|
96
96
|
}
|
|
97
97
|
handleDataPageList(configProps, dataObject) {
|
|
98
98
|
const dataPage = configProps.datasource;
|
|
99
|
-
if (dataObject[dataPage]) {
|
|
99
|
+
if (dataObject && dataObject[dataPage]) {
|
|
100
100
|
alert('need to handle data page');
|
|
101
101
|
return [];
|
|
102
102
|
}
|
|
@@ -383,4 +383,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
383
383
|
providedIn: 'root'
|
|
384
384
|
}]
|
|
385
385
|
}], ctorParameters: function () { return [{ type: i1.ServerConfigService }]; } });
|
|
386
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2hlbHBlcnMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxpQkFBaUIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRCxPQUFPLGVBQWUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLFlBQVksTUFBTSwyQkFBMkIsQ0FBQzs7O0FBR3JELEtBQUssQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUNoQyxLQUFLLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQzlCLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7QUFLM0IsTUFBTSxPQUFPLEtBQUs7SUFLaEIsWUFBb0IsU0FBOEI7UUFBOUIsY0FBUyxHQUFULFNBQVMsQ0FBcUI7UUFKbEQsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFFbEIsdUJBQWtCLEdBQUcsQ0FBQyxDQUFDO1FBeVl2QixjQUFTLEdBQUcsSUFBSSxDQUFDLEVBQUU7WUFDakIsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1lBQ2hCLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDNUQsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7YUFDdEI7aUJBQU0sSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksSUFBSSxFQUFFO2dCQUMzQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2FBQ2Y7WUFDRCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDLENBQUM7SUEvWW1ELENBQUM7SUFFdEQsc0JBQXNCO1FB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QkFBb0IsQ0FBQyxJQUFJLElBQUksRUFBRTtZQUN4RCxjQUFjLENBQUMsT0FBTyxDQUFDLG9CQUFvQixFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ25EO1FBRUQsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVuRixPQUFPLEtBQUssS0FBSyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQVlELE1BQU0sQ0FBQyxnQkFBZ0I7UUFDckIsT0FBTyxjQUFjLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBVyxDQUFDO0lBQ3JELENBQUM7SUFFRCxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQVc7UUFDOUIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7SUFDdkMsQ0FBQzsrR0E1WlUsS0FBSzttSEFBTCxLQUFLLGNBRkosTUFBTTs7NEZBRVAsS0FBSztrQkFIakIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xuaW1wb3J0IGN1c3RvbVBhcnNlRm9ybWF0IGZyb20gJ2RheWpzL3BsdWdpbi9jdXN0b21QYXJzZUZvcm1hdCc7XG5pbXBvcnQgbG9jYWxpemVkRm9ybWF0IGZyb20gJ2RheWpzL3BsdWdpbi9sb2NhbGl6ZWRGb3JtYXQnO1xuaW1wb3J0IHJlbGF0aXZlVGltZSBmcm9tICdkYXlqcy9wbHVnaW4vcmVsYXRpdmVUaW1lJztcbmltcG9ydCB7IFNlcnZlckNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi9fc2VydmljZXMvc2VydmVyLWNvbmZpZy5zZXJ2aWNlJztcblxuZGF5anMuZXh0ZW5kKGN1c3RvbVBhcnNlRm9ybWF0KTtcbmRheWpzLmV4dGVuZChsb2NhbGl6ZWRGb3JtYXQpO1xuZGF5anMuZXh0ZW5kKHJlbGF0aXZlVGltZSk7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFV0aWxzIHtcbiAgbGFzdENvbnRyb2xJRCA9IDA7XG5cbiAgdmlld0NvbnRhaW5lckNvdW50ID0gMDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNjU2VydmljZTogU2VydmVyQ29uZmlnU2VydmljZSkge31cblxuICBnZXRTREtTdGF0aWNDb250ZW50VXJsKCkge1xuICAgIGNvbnN0IHNka0NvbmZpZ1NlcnZlciA9IHRoaXMuc2NTZXJ2aWNlLmdldFNka0NvbmZpZ1NlcnZlcigpO1xuXG4gICAgLy8gTk9URTogTmVlZHMgYSB0cmFpbGluZyBzbGFzaCEgU28gYWRkIG9uZSBpZiBub3QgcHJvdmlkZWRcbiAgICBpZiAoIXNka0NvbmZpZ1NlcnZlci5zZGtDb250ZW50U2VydmVyVXJsLmVuZHNXaXRoKCcvJykpIHtcbiAgICAgIHNka0NvbmZpZ1NlcnZlci5zZGtDb250ZW50U2VydmVyVXJsID0gYCR7c2RrQ29uZmlnU2VydmVyLnNka0NvbnRlbnRTZXJ2ZXJVcmx9L2A7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke3Nka0NvbmZpZ1NlcnZlci5zZGtDb250ZW50U2VydmVyVXJsfWNvbnN0ZWxsYXRpb24vYDtcbiAgfVxuXG4gIGNvbnNvbGVLaWREdW1wKHBDb25uOiBhbnksIGxldmVsOiBudW1iZXIgPSAxLCBraWROdW06IG51bWJlciA9IDEpIHtcbiAgICBsZXQgc0Rhc2ggPSAnJztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxldmVsOyBpKyspIHtcbiAgICAgIHNEYXNoID0gc0Rhc2guY29uY2F0KCctJyk7XG4gICAgfVxuICAgIGxldCBjTmFtZSA9ICdibGFuayc7XG4gICAgbGV0IGN0eE5hbWUgPSAnJztcbiAgICB0cnkge1xuICAgICAgY05hbWUgPSBwQ29ubi5nZXRDb21wb25lbnROYW1lKCk7XG4gICAgICBjdHhOYW1lID0gcENvbm4uZ2V0Q29udGV4dE5hbWUoKTtcbiAgICAgIGNvbnNvbGUubG9nKGAke3NEYXNofWxldmVsICR7bGV2ZWx9IGNvbXBvbmVudCgke2tpZE51bX0pOiR7Y05hbWV9IGNvbnRleHQ6JHtjdHhOYW1lfWApO1xuICAgICAgaWYgKHBDb25uLmdldENvbmZpZ1Byb3BzKCkgIT0gbnVsbCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgJHtzRGFzaH1jb25maWdQcm9wczoke0pTT04uc3RyaW5naWZ5KHBDb25uLmdldENvbmZpZ1Byb3BzKCkpfWApO1xuICAgICAgfVxuICAgICAgaWYgKHBDb25uLmdldFJhd01ldGFkYXRhKCkgIT0gbnVsbCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgJHtzRGFzaH1yYXdNZXRhZGF0YToke0pTT04uc3RyaW5naWZ5KHBDb25uLmdldFJhd01ldGFkYXRhKCkpfWApO1xuICAgICAgfVxuXG4gICAgICBpZiAocENvbm4uaGFzQ2hpbGRyZW4oKSAmJiBwQ29ubi5nZXRDaGlsZHJlbigpICE9IG51bGwpIHtcbiAgICAgICAgY29uc29sZS5sb2coYCR7c0Rhc2h9a2lkQ291bnQ6JHtwQ29ubi5nZXRDaGlsZHJlbigpLmxlbmd0aH1gKTtcbiAgICAgICAgY29uc3Qga2lkcyA9IHBDb25uLmdldENoaWxkcmVuKCk7XG4gICAgICAgIGNvbnN0IGtpZHNLZXlzID0gT2JqZWN0LmtleXMoa2lkcyk7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGtpZHNLZXlzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgY29uc3QgaW5kZXggPSBwYXJzZUludChraWRzS2V5c1tpXSwgMTApICsgMTtcbiAgICAgICAgICBjb25zdCBraWQgPSBraWRzW2tpZHNLZXlzW2ldXTtcbiAgICAgICAgICB0aGlzLmNvbnNvbGVLaWREdW1wKGtpZC5nZXRQQ29ubmVjdCgpLCBsZXZlbCArIDEsIGluZGV4KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAvKiBlbXB0eSAqL1xuICAgIH1cbiAgfVxuXG4gIGh0bWxEZWNvZGUoc1ZhbDogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3QgZG9jID0gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyhzVmFsLCAndGV4dC9odG1sJyk7XG4gICAgcmV0dXJuIGRvYy5kb2N1bWVudEVsZW1lbnQudGV4dENvbnRlbnQ7XG4gIH1cblxuICBnZXRVbmlxdWVDb250cm9sSUQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzUHJlZml4ID0gJ2NvbnRyb2wtJztcblxuICAgIHRoaXMubGFzdENvbnRyb2xJRCsrO1xuXG4gICAgcmV0dXJuIHNQcmVmaXggKyB0aGlzLmxhc3RDb250cm9sSUQudG9TdHJpbmcoKTtcbiAgfVxuXG4gIGdldE9wdGlvbkxpc3QoY29uZmlnUHJvcHM6IGFueSwgZGF0YU9iamVjdDogYW55KTogYW55W10ge1xuICAgIGNvbnN0IGxpc3RUeXBlID0gY29uZmlnUHJvcHMubGlzdFR5cGU7XG5cbiAgICBpZiAobGlzdFR5cGUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHN3aXRjaCAobGlzdFR5cGUudG9Mb3dlckNhc2UoKSkge1xuICAgICAgY2FzZSAnYXNzb2NpYXRlZCc6XG4gICAgICAgIHJldHVybiB0aGlzLmhhbmRsZUFzc29jaWF0ZWRMaXN0KGNvbmZpZ1Byb3BzKTtcbiAgICAgIGNhc2UgJ2RhdGFwYWdlJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlRGF0YVBhZ2VMaXN0KGNvbmZpZ1Byb3BzLCBkYXRhT2JqZWN0KTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVBc3NvY2lhdGVkTGlzdChjb25maWdQcm9wczogYW55KTogYW55W10ge1xuICAgIGNvbnN0IGRhdGFTb3VyY2UgPSBjb25maWdQcm9wcy5kYXRhc291cmNlO1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YVNvdXJjZSkpIHtcbiAgICAgIHJldHVybiBkYXRhU291cmNlO1xuICAgIH1cblxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGhhbmRsZURhdGFQYWdlTGlzdChjb25maWdQcm9wczogYW55LCBkYXRhT2JqZWN0OiBhbnkpOiBhbnlbXSB7XG4gICAgY29uc3QgZGF0YVBhZ2UgPSBjb25maWdQcm9wcy5kYXRhc291cmNlO1xuXG4gICAgaWYgKGRhdGFPYmplY3RbZGF0YVBhZ2VdKSB7XG4gICAgICBhbGVydCgnbmVlZCB0byBoYW5kbGUgZGF0YSBwYWdlJyk7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgbGV0IGxpc3RTb3VyY2VJdGVtcyA9IGNvbmZpZ1Byb3BzLmxpc3RPdXRwdXQ7XG5cbiAgICBpZiAodHlwZW9mIGRhdGFQYWdlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShsaXN0U291cmNlSXRlbXMpKSB7XG4gICAgICBsaXN0U291cmNlSXRlbXMgPSBkYXRhUGFnZS5zb3VyY2UgPyBkYXRhUGFnZS5zb3VyY2UgOiBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50cmFuc2Zvcm1MaXN0U291cmNlSXRlbXMobGlzdFNvdXJjZUl0ZW1zKTtcbiAgfVxuXG4gIHRyYW5zZm9ybUxpc3RTb3VyY2VJdGVtcyhsaXN0U291cmNlSXRlbXM6IGFueVtdKTogYW55W10ge1xuICAgIHJldHVybiAobGlzdFNvdXJjZUl0ZW1zIHx8IFtdKS5tYXAoaXRlbSA9PiB7XG4gICAgICByZXR1cm4geyAuLi5pdGVtLCB2YWx1ZTogaXRlbS50ZXh0IHx8IGl0ZW0udmFsdWUgfTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldEluaXRpYWxzKHVzZXJOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCB1c2VySW5pdGlhbHMgPSB1c2VyTmFtZTtcblxuICAgIGlmICh1c2VyTmFtZSAmJiB1c2VyTmFtZSAhPSAnJykge1xuICAgICAgdXNlckluaXRpYWxzID0gdXNlck5hbWUuY2hhckF0KDApO1xuXG4gICAgICBpZiAodXNlck5hbWUubGFzdEluZGV4T2YoJyAnKSA+IDApIHtcbiAgICAgICAgY29uc3QgbGFzdE5hbWUgPSB1c2VyTmFtZS5zdWJzdHJpbmcodXNlck5hbWUubGFzdEluZGV4T2YoJyAnKSArIDEpO1xuICAgICAgICB1c2VySW5pdGlhbHMgKz0gbGFzdE5hbWUuY2hhckF0KDApO1xuICAgICAgfSBlbHNlIGlmICh1c2VyTmFtZS5sYXN0SW5kZXhPZignLicpID4gMCkge1xuICAgICAgICBjb25zdCBsYXN0TmFtZSA9IHVzZXJOYW1lLnN1YnN0cmluZyh1c2VyTmFtZS5sYXN0SW5kZXhPZignLicpICsgMSk7XG4gICAgICAgIHVzZXJJbml0aWFscyArPSBsYXN0TmFtZS5jaGFyQXQoMCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHVzZXJJbml0aWFscyA9ICcnO1xuICAgIH1cblxuICAgIHJldHVybiB1c2VySW5pdGlhbHMudG9VcHBlckNhc2UoKTtcbiAgfVxuXG4gIGdldEltYWdlU3JjKG5hbWU6IHN0cmluZywgc2VydmVyVXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCBpY29uTmFtZSA9IG5hbWUucmVwbGFjZSgncGktJywgJycpLnJlcGxhY2UoJ3BpICcsICcnKS50cmltKCk7XG4gICAgaWYgKGljb25OYW1lID09PSAnbGluZS1jaGFydCcpIHtcbiAgICAgIGljb25OYW1lID0gJ2NoYXJ0LWxpbmUnO1xuICAgIH1cblxuICAgIC8vIHJldHVybiBzZXJ2ZXJVcmwuY29uY2F0KFwiYXNzZXRzL2ljb25zL1wiKS5jb25jYXQoaWNvbk5hbWUpLmNvbmNhdChcIi5zdmdcIik7XG4gICAgcmV0dXJuIHRoaXMuZ2V0SWNvblBhdGgoc2VydmVyVXJsKS5jb25jYXQoaWNvbk5hbWUpLmNvbmNhdCgnLnN2ZycpO1xuICB9XG5cbiAgZ2V0SWNvblBhdGgoc2VydmVyVXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBzZXJ2ZXJVcmwuY29uY2F0KCdhc3NldHMvaWNvbnMvJyk7XG4gIH1cblxuICBnZXRCb29sZWFuVmFsdWUoaW5WYWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgbGV0IGJSZXR1cm4gPSBmYWxzZTtcblxuICAgIGlmICh0eXBlb2YgaW5WYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGlmIChpblZhbHVlLnRvTG93ZXJDYXNlKCkgPT0gJ3RydWUnKSB7XG4gICAgICAgIGJSZXR1cm4gPSB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBiUmV0dXJuID0gaW5WYWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gYlJldHVybjtcbiAgfVxuXG4gIGdlbmVyYXRlRGF0ZShkYXRlVmFsLCBkYXRlRm9ybWF0KSB7XG4gICAgbGV0IHNSZXR1cm5EYXRlID0gZGF0ZVZhbDtcblxuICAgIGlmIChkYXRlVmFsID09IG51bGwgfHwgZGF0ZVZhbCA9PSAnJykge1xuICAgICAgcmV0dXJuIGRhdGVWYWw7XG4gICAgfVxuXG4gICAgLy8gQ29tbWVudGluZyBvdXQgcGVyIFZpbm9kIG5vdGUgaW4gd2ViYyBjb21wb25lbnRzXG4gICAgLy8gVlJTOiBEb250IHRoaW5rIHdlIG5lZWQgdGhlIGJlbG93IGxpbmUuICBDb21tZW50aW5nIG91dCBmb3Igbm93LiAoMjAyMC4wNS4yMClcbiAgICAvLyBpZiBkYXRlIGhhcyBhIFwiLlwiLCB0aGVuIG9mIHRoZSBmb3JtYXQgWVlZTU1ERFtUXUhIbW1zc1suXVNTUyBaLCBuZWVkIHRvIGNoYW5nZSB0byBZWVlZTU1ERFxuICAgIC8vIGlmIChkYXRlVmFsLmluZGV4T2YoXCIuXCIpID49IDApIHtcbiAgICAvLyAgIGRhdGVWYWwgPSBtb21lbnQoZGF0ZVZhbC5yZXBsYWNlKFwiR01UXCIsIFwiKzAwMDBcIiksIFwiWVlZWU1NRERbVF1ISG1tc3NbLl1TU1MgWlwiKS5mb3JtYXQoXCJZWVlZTU1ERFwiKTtcbiAgICAvLyAgIHNSZXR1cm5EYXRlID0gZGF0ZVZhbDtcbiAgICAvLyB9XG5cbiAgICBzd2l0Y2ggKGRhdGVGb3JtYXQpIHtcbiAgICAgIGNhc2UgJ0RhdGUtU2hvcnQnOlxuICAgICAgICAvLyAxLzEvMDFcbiAgICAgICAgc1JldHVybkRhdGUgPSBkYXlqcyhkYXRlVmFsKS5mb3JtYXQoJ00vRC9ZWScpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0RhdGUtU2hvcnQtWVlZWSc6XG4gICAgICAgIC8vIDEvMS8yMDAxXG4gICAgICAgIHNSZXR1cm5EYXRlID0gZGF5anMoZGF0ZVZhbCkuZm9ybWF0KCdNL0QvWVlZWScpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0RhdGUtU2hvcnQtQ3VzdG9tJzpcbiAgICAgICAgLy8gMDEvMDEvMDFcbiAgICAgICAgc1JldHVybkRhdGUgPSBkYXlqcyhkYXRlVmFsKS5mb3JtYXQoJ01NL0REL1lZJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRGF0ZS1TaG9ydC1DdXN0b20tWVlZWSc6XG4gICAgICAgIC8vIDAxLzAxLzIwMDFcbiAgICAgICAgc1JldHVybkRhdGUgPSBkYXlqcyhkYXRlVmFsKS5mb3JtYXQoJ0wnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdEYXRlLUxvbmctQ3VzdG9tLVlZWVknOlxuICAgICAgICAvLyAwNS8yMi8yMDIxXG4gICAgICAgIHNSZXR1cm5EYXRlID0gZGF5anMoZGF0ZVZhbCkuZm9ybWF0KCdNTS9ERC9ZWVlZJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRGF0ZSc6XG4gICAgICBjYXNlICdEYXRlLU1lZGl1bSc6XG4gICAgICAgIC8vIEphbiAxLCAyMDAxXG4gICAgICAgIHNSZXR1cm5EYXRlID0gZGF5anMoZGF0ZVZhbCkuZm9ybWF0KCdsbCcpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0RhdGUtRGF5TW9udGhZZWFyLUN1c3RvbSc6XG4gICAgICAgIC8vIDAxLUphbi0yMDAxXG4gICAgICAgIHNSZXR1cm5EYXRlID0gZGF5anMoZGF0ZVZhbCkuZm9ybWF0KCdERC1NTU0tWVlZWScpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0RhdGUtRnVsbCc6XG4gICAgICAgIC8vIE1vbmRheSwgSmFudWFyeSAxLCAyMDAxXG4gICAgICAgIHNSZXR1cm5EYXRlID0gZGF5anMoZGF0ZVZhbCkuZm9ybWF0KCdkZGRkLCBNTU1NIEQsIFlZWVknKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdEYXRlVGltZS1GcmFtZSc6XG4gICAgICBjYXNlICdEYXRlVGltZS1GcmFtZS1TaG9ydCc6XG4gICAgICBjYXNlICdEYXRlVGltZS1TaW5jZSc6XG4gICAgICAgIC8vIDIgZGF5cywgNSBob3VycyBhZ29cbiAgICAgICAgc1JldHVybkRhdGUgPSBkYXlqcyhkYXRlVmFsKS5mcm9tTm93KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRGF0ZS1Mb25nJzpcbiAgICAgICAgLy8gSmFudWFyeSAxLCAyMDAxXG4gICAgICAgIHNSZXR1cm5EYXRlID0gZGF5anMoZGF0ZVZhbCkuZm9ybWF0KCdNTU1NIEQsIFlZWVknKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdEYXRlLUlTTy04NjAxJzpcbiAgICAgICAgLy8gMjAwMS8wMS8wMSB5L20vZFxuICAgICAgICBzUmV0dXJuRGF0ZSA9IGRheWpzKGRhdGVWYWwpLmZvcm1hdCgnWVlZWS9NTS9ERCcpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0RhdGUtR3JlZ29yaWFuLTEnOlxuICAgICAgICAvLyAwMSBKYW51YXJ5LCAyMDAxXG4gICAgICAgIHNSZXR1cm5EYXRlID0gZGF5anMoZGF0ZVZhbCkuZm9ybWF0KCdERCBNTU1NLCBZWVlZJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRGF0ZS1HcmVnb3JpYW4tMic6XG4gICAgICAgIC8vIEphbnVhcnkgMDEsIDIwMDFcbiAgICAgICAgc1JldHVybkRhdGUgPSBkYXlqcyhkYXRlVmFsKS5mb3JtYXQoJ01NTU0gREQsIFlZWVknKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdEYXRlLUdyZWdvcmlhbi0zJzpcbiAgICAgICAgLy8gMjAwMSwgSmFudWFyeSAwMVxuICAgICAgICBzUmV0dXJuRGF0ZSA9IGRheWpzKGRhdGVWYWwpLmZvcm1hdCgnWVlZWSwgTU1NTSBERCcpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0RhdGVUaW1lLUN1c3RvbSc6XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNSZXR1cm5EYXRlO1xuICB9XG5cbiAgZ2VuZXJhdGVEYXRlVGltZShkYXRlVGltZVZhbCwgZGF0ZUZvcm1hdCkge1xuICAgIGxldCBzUmV0dXJuRGF0ZSA9IGRhdGVUaW1lVmFsO1xuXG4gICAgaWYgKGRhdGVUaW1lVmFsID09IG51bGwgfHwgZGF0ZVRpbWVWYWwgPT0gJycpIHtcbiAgICAgIHJldHVybiBkYXRlVGltZVZhbDtcbiAgICB9XG5cbiAgICBkYXRlVGltZVZhbCA9IGRhdGVUaW1lVmFsLnJlcGxhY2UoJ0dNVCcsICcrMDAwMCcpO1xuXG4gICAgc3dpdGNoIChkYXRlRm9ybWF0KSB7XG4gICAgICBjYXNlICdEYXRlVGltZS1TaG9ydCc6XG4gICAgICAgIC8vIDEvMS8wMSAxOjAwIEFNXG4gICAgICAgIHNSZXR1cm5EYXRlID0gZGF5anMoZGF0ZVRpbWVWYWwpLmZvcm1hdCgnTS9EL1lZIGg6bW0gQScpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0RhdGVUaW1lLVNob3J0LUN1c3RvbSc6XG4gICAgICAgIC8vIDAxLzAxLzAxIDAxOjAwIEFNXG4gICAgICAgIHNSZXR1cm5EYXRlID0gZGF5anMoZGF0ZVRpbWVWYWwpLmZvcm1hdCgnTU0vREQvWVkgaGg6bW0gQScpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0RhdGVUaW1lLVNob3J0LVlZWVktQ3VzdG9tJzpcbiAgICAgICAgLy8gMDEvMDEvMjAwMSAwMTowMCBBTVxuICAgICAgICBzUmV0dXJuRGF0ZSA9IGRheWpzKGRhdGVUaW1lVmFsKS5mb3JtYXQoJ00vRC9ZWVlZIGhoOm1tIEEnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdEYXRlVGltZS1Mb25nLVlZWVktQ3VzdG9tJzpcbiAgICAgICAgLy8gMDEvMDEvMDEgMDE6MDAgQU1cbiAgICAgICAgc1JldHVybkRhdGUgPSBkYXlqcyhkYXRlVGltZVZhbCkuZm9ybWF0KCdNTS9ERC9ZWVlZLCBoaDptbSBBJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRGF0ZVRpbWUtU2hvcnQtWVlZWSc6XG4gICAgICAgIC8vIDEvMS8yMDAxIDE6MDAgQU1cbiAgICAgICAgc1JldHVybkRhdGUgPSBkYXlqcyhkYXRlVGltZVZhbCkuZm9ybWF0KCdNL0QvWVlZWSBoOm1tIEEnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdEYXRlVGltZS1NZWRpdW0nOlxuICAgICAgICAvLyBKYW4gMSwgMjAwMSAxOjAwOjAwIEFNXG4gICAgICAgIHNSZXR1cm5EYXRlID0gZGF5anMoZGF0ZVRpbWVWYWwpLmZvcm1hdCgnTU1NIEQsIFlZWVkgaDptbTpzcyBBJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRGF0ZVRpbWUtTG9uZyc6XG4gICAgICAgIC8vIEphbnVhcnkgMSwgMjAwMSAxOjAwOjAwIEFNXG4gICAgICAgIHNSZXR1cm5EYXRlID0gZGF5anMoZGF0ZVRpbWVWYWwpLmZvcm1hdCgnTU1NTSBELCBZWVlZIGg6bW06c3MgQScpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0RhdGVUaW1lLURheU1vbnRoWWVhci1DdXN0b20nOlxuICAgICAgICAvLyAwMS1KYW4tMjAwMSAxOjAwOjAwIEFNXG4gICAgICAgIHNSZXR1cm5EYXRlID0gZGF5anMoZGF0ZVRpbWVWYWwpLmZvcm1hdCgnREQtTU1NLVlZWVkgaDptbTpzcyBBJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRGF0ZVRpbWUtRnVsbCc6XG4gICAgICAgIC8vIE1vbmRheSwgSmFudWFyeSAxLCAyMDAxIDE6MDAgQU0gRURUXG4gICAgICAgIHNSZXR1cm5EYXRlID0gZGF5anMoZGF0ZVRpbWVWYWwpLmZvcm1hdCgnZGRkZCwgTU1NTSBELCBZWVlZIGg6bW0gQSB6Jyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRGF0ZVRpbWUtRnJhbWUnOlxuICAgICAgY2FzZSAnRGF0ZVRpbWUtRnJhbWUtU2hvcnQnOlxuICAgICAgY2FzZSAnRGF0ZVRpbWUtU2luY2UnOlxuICAgICAgICAvLyAyIGRheXMsIDUgaG91cnMgYWdvXG4gICAgICAgIHNSZXR1cm5EYXRlID0gZGF5anMoZGF0ZVRpbWVWYWwpLmZyb21Ob3coKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdEYXRlVGltZS1JU08tODYwMSc6XG4gICAgICAgIC8vIDIwMDEvMDEvMDEgMTowMDowMCBBTSAgICAgeS9tL2RcbiAgICAgICAgc1JldHVybkRhdGUgPSBkYXlqcyhkYXRlVGltZVZhbCkuZm9ybWF0KCdZWVlZL01NL0REIGg6bW06c3MgQScpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0RhdGVUaW1lLUdyZWdvcmlhbi0xJzpcbiAgICAgICAgLy8gMDEgSmFudWFyeSwgMjAwMSAxOjAwOjAwIEFNXG4gICAgICAgIHNSZXR1cm5EYXRlID0gZGF5anMoZGF0ZVRpbWVWYWwpLmZvcm1hdCgnREQgTU1NTSwgWVlZWSBoOm1tOnNzIEEnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdEYXRlVGltZS1HcmVnb3JpYW4tMic6XG4gICAgICAgIC8vIEphbnVhcnkgMDEsIDIwMDEgMTowMDowMCBBTVxuICAgICAgICBzUmV0dXJuRGF0ZSA9IGRheWpzKGRhdGVUaW1lVmFsKS5mb3JtYXQoJ01NTU0gREQsIFlZWVkgaDptbTpzcyBBJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRGF0ZVRpbWUtR3JlZ29yaWFuLTMnOlxuICAgICAgICAvLyAyMDAxLCBKYW51YXJ5IDAxIDE6MDA6MDAgQU1cbiAgICAgICAgc1JldHVybkRhdGUgPSBkYXlqcyhkYXRlVGltZVZhbCkuZm9ybWF0KCdZWVlZLCBNTU1NIEREIGg6bW06c3MgQScpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0RhdGVUaW1lLUN1c3RvbSc6XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNSZXR1cm5EYXRlO1xuICB9XG5cbiAgZ2V0SWNvbkZyb21GaWxlVHlwZShmaWxlVHlwZSk6IHN0cmluZyB7XG4gICAgbGV0IGljb24gPSAnZG9jdW1lbnQtZG9jJztcbiAgICBpZiAoIWZpbGVUeXBlKSByZXR1cm4gaWNvbjtcbiAgICBpZiAoZmlsZVR5cGUuc3RhcnRzV2l0aCgnYXVkaW8nKSkge1xuICAgICAgaWNvbiA9ICdhdWRpbyc7XG4gICAgfSBlbHNlIGlmIChmaWxlVHlwZS5zdGFydHNXaXRoKCd2aWRlbycpKSB7XG4gICAgICBpY29uID0gJ3ZpZGVvJztcbiAgICB9IGVsc2UgaWYgKGZpbGVUeXBlLnN0YXJ0c1dpdGgoJ2ltYWdlJykpIHtcbiAgICAgIGljb24gPSAncGljdHVyZSc7XG4gICAgfSBlbHNlIGlmIChmaWxlVHlwZS5pbmNsdWRlcygncGRmJykpIHtcbiAgICAgIGljb24gPSAnZG9jdW1lbnQtcGRmJztcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgWywgc3VidHlwZV0gPSBmaWxlVHlwZS5zcGxpdCgnLycpO1xuICAgICAgY29uc3QgZm91bmRNYXRjaCA9IHNvdXJjZXMgPT4ge1xuICAgICAgICByZXR1cm4gc291cmNlcy5zb21lKGtleSA9PiBzdWJ0eXBlLmluY2x1ZGVzKGtleSkpO1xuICAgICAgfTtcblxuICAgICAgaWYgKGZvdW5kTWF0Y2goWydleGNlbCcsICdzcHJlYWRzaGVldCddKSkge1xuICAgICAgICBpY29uID0gJ2RvY3VtZW50LXhscyc7XG4gICAgICB9IGVsc2UgaWYgKGZvdW5kTWF0Y2goWyd6aXAnLCAnY29tcHJlc3NlZCcsICdnemlwJywgJ3JhcicsICd0YXInXSkpIHtcbiAgICAgICAgaWNvbiA9ICdkb2N1bWVudC1jb21wcmVzcyc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGljb247XG4gIH1cblxuICBnZXRJY29uRm9yQXR0YWNobWVudChhdHRhY2htZW50KSB7XG4gICAgbGV0IGljb247XG4gICAgc3dpdGNoIChhdHRhY2htZW50LnR5cGUpIHtcbiAgICAgIGNhc2UgJ0ZJTEUnOlxuICAgICAgICBpY29uID0gdGhpcy5nZXRJY29uRnJvbUZpbGVUeXBlKGF0dGFjaG1lbnQubWltZVR5cGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1VSTCc6XG4gICAgICAgIGljb24gPSAnY2hhaW4nO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGljb24gPSAnZG9jdW1lbnQtZG9jJztcbiAgICB9XG4gICAgcmV0dXJuIGljb247XG4gIH1cblxuICBhZGRWaWV3Q29udGFpbmVyKCkge1xuICAgIGlmIChzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCd2aWV3Q29udGFpbmVyQ291bnQnKSA9PSBudWxsKSB7XG4gICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCd2aWV3Q29udGFpbmVyQ291bnQnLCAnMCcpO1xuICAgIH1cblxuICAgIGxldCBjb3VudCA9IHBhcnNlSW50KHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3ZpZXdDb250YWluZXJDb3VudCcpIGFzIHN0cmluZywgMTApO1xuICAgIGNvdW50Kys7XG5cbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCd2aWV3Q29udGFpbmVyQ291bnQnLCBjb3VudC50b1N0cmluZygpKTtcbiAgfVxuXG4gIHJlbW92ZVZpZXdDb250YWluZXIoKSB7XG4gICAgcmV0dXJuO1xuXG4gICAgbGV0IGNvdW50ID0gcGFyc2VJbnQoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgndmlld0NvbnRhaW5lckNvdW50JykgYXMgc3RyaW5nLCAxMCk7XG4gICAgY291bnQtLTtcblxuICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ3ZpZXdDb250YWluZXJDb3VudCcsIGNvdW50LnRvU3RyaW5nKCkpO1xuICB9XG5cbiAgb2tUb0FkZENvbnRhaW5lclRvVkMoKTogYm9vbGVhbiB7XG4gICAgaWYgKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3ZpZXdDb250YWluZXJDb3VudCcpID09IG51bGwpIHtcbiAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ3ZpZXdDb250YWluZXJDb3VudCcsICcwJyk7XG4gICAgfVxuXG4gICAgY29uc3QgY291bnQgPSBwYXJzZUludChzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCd2aWV3Q29udGFpbmVyQ291bnQnKSBhcyBzdHJpbmcsIDEwKTtcblxuICAgIHJldHVybiBjb3VudCA9PT0gMDtcbiAgfVxuXG4gIGdldFVzZXJJZCA9IHVzZXIgPT4ge1xuICAgIGxldCB1c2VySWQgPSAnJztcbiAgICBpZiAodHlwZW9mIHVzZXIgPT09ICdvYmplY3QnICYmIHVzZXIgIT09IG51bGwgJiYgdXNlci51c2VySWQpIHtcbiAgICAgIHVzZXJJZCA9IHVzZXIudXNlcklkO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHVzZXIgPT09ICdzdHJpbmcnICYmIHVzZXIpIHtcbiAgICAgIHVzZXJJZCA9IHVzZXI7XG4gICAgfVxuICAgIHJldHVybiB1c2VySWQ7XG4gIH07XG5cbiAgc3RhdGljIHNka0dldEF1dGhIZWFkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnYXNka19BSCcpIGFzIHN0cmluZztcbiAgfVxuXG4gIHN0YXRpYyBpc0VtcHR5T2JqZWN0KG9iajogT2JqZWN0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iaikubGVuZ3RoID09PSAwO1xuICB9XG59XG4iXX0=
|
|
386
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2hlbHBlcnMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxpQkFBaUIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRCxPQUFPLGVBQWUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLFlBQVksTUFBTSwyQkFBMkIsQ0FBQzs7O0FBR3JELEtBQUssQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUNoQyxLQUFLLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQzlCLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7QUFLM0IsTUFBTSxPQUFPLEtBQUs7SUFLaEIsWUFBb0IsU0FBOEI7UUFBOUIsY0FBUyxHQUFULFNBQVMsQ0FBcUI7UUFKbEQsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFFbEIsdUJBQWtCLEdBQUcsQ0FBQyxDQUFDO1FBeVl2QixjQUFTLEdBQUcsSUFBSSxDQUFDLEVBQUU7WUFDakIsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1lBQ2hCLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDNUQsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7YUFDdEI7aUJBQU0sSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksSUFBSSxFQUFFO2dCQUMzQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2FBQ2Y7WUFDRCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDLENBQUM7SUEvWW1ELENBQUM7SUFFdEQsc0JBQXNCO1FB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QUFPLENBQUMsb0JBQW9CLENBQUMsSUFBSSxJQUFJLEVBQUU7WUFDeEQsY0FBYyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUNuRDtRQUVELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFbkYsT0FBTyxLQUFLLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFZRCxNQUFNLENBQUMsZ0JBQWdCO1FBQ3JCLE9BQU8sY0FBYyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQVcsQ0FBQztJQUNyRCxDQUFDO0lBRUQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFXO1FBQzlCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7K0dBNVpVLEtBQUs7bUhBQUwsS0FBSyxjQUZKLE1BQU07OzRGQUVQLEtBQUs7a0JBSGpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcbmltcG9ydCBjdXN0b21QYXJzZUZvcm1hdCBmcm9tICdkYXlqcy9wbHVnaW4vY3VzdG9tUGFyc2VGb3JtYXQnO1xuaW1wb3J0IGxvY2FsaXplZEZvcm1hdCBmcm9tICdkYXlqcy9wbHVnaW4vbG9jYWxpemVkRm9ybWF0JztcbmltcG9ydCByZWxhdGl2ZVRpbWUgZnJvbSAnZGF5anMvcGx1Z2luL3JlbGF0aXZlVGltZSc7XG5pbXBvcnQgeyBTZXJ2ZXJDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vX3NlcnZpY2VzL3NlcnZlci1jb25maWcuc2VydmljZSc7XG5cbmRheWpzLmV4dGVuZChjdXN0b21QYXJzZUZvcm1hdCk7XG5kYXlqcy5leHRlbmQobG9jYWxpemVkRm9ybWF0KTtcbmRheWpzLmV4dGVuZChyZWxhdGl2ZVRpbWUpO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBVdGlscyB7XG4gIGxhc3RDb250cm9sSUQgPSAwO1xuXG4gIHZpZXdDb250YWluZXJDb3VudCA9IDA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzY1NlcnZpY2U6IFNlcnZlckNvbmZpZ1NlcnZpY2UpIHt9XG5cbiAgZ2V0U0RLU3RhdGljQ29udGVudFVybCgpIHtcbiAgICBjb25zdCBzZGtDb25maWdTZXJ2ZXIgPSB0aGlzLnNjU2VydmljZS5nZXRTZGtDb25maWdTZXJ2ZXIoKTtcblxuICAgIC8vIE5PVEU6IE5lZWRzIGEgdHJhaWxpbmcgc2xhc2ghIFNvIGFkZCBvbmUgaWYgbm90IHByb3ZpZGVkXG4gICAgaWYgKCFzZGtDb25maWdTZXJ2ZXIuc2RrQ29udGVudFNlcnZlclVybC5lbmRzV2l0aCgnLycpKSB7XG4gICAgICBzZGtDb25maWdTZXJ2ZXIuc2RrQ29udGVudFNlcnZlclVybCA9IGAke3Nka0NvbmZpZ1NlcnZlci5zZGtDb250ZW50U2VydmVyVXJsfS9gO1xuICAgIH1cblxuICAgIHJldHVybiBgJHtzZGtDb25maWdTZXJ2ZXIuc2RrQ29udGVudFNlcnZlclVybH1jb25zdGVsbGF0aW9uL2A7XG4gIH1cblxuICBjb25zb2xlS2lkRHVtcChwQ29ubjogYW55LCBsZXZlbDogbnVtYmVyID0gMSwga2lkTnVtOiBudW1iZXIgPSAxKSB7XG4gICAgbGV0IHNEYXNoID0gJyc7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZXZlbDsgaSsrKSB7XG4gICAgICBzRGFzaCA9IHNEYXNoLmNvbmNhdCgnLScpO1xuICAgIH1cbiAgICBsZXQgY05hbWUgPSAnYmxhbmsnO1xuICAgIGxldCBjdHhOYW1lID0gJyc7XG4gICAgdHJ5IHtcbiAgICAgIGNOYW1lID0gcENvbm4uZ2V0Q29tcG9uZW50TmFtZSgpO1xuICAgICAgY3R4TmFtZSA9IHBDb25uLmdldENvbnRleHROYW1lKCk7XG4gICAgICBjb25zb2xlLmxvZyhgJHtzRGFzaH1sZXZlbCAke2xldmVsfSBjb21wb25lbnQoJHtraWROdW19KToke2NOYW1lfSBjb250ZXh0OiR7Y3R4TmFtZX1gKTtcbiAgICAgIGlmIChwQ29ubi5nZXRDb25maWdQcm9wcygpICE9IG51bGwpIHtcbiAgICAgICAgY29uc29sZS5sb2coYCR7c0Rhc2h9Y29uZmlnUHJvcHM6JHtKU09OLnN0cmluZ2lmeShwQ29ubi5nZXRDb25maWdQcm9wcygpKX1gKTtcbiAgICAgIH1cbiAgICAgIGlmIChwQ29ubi5nZXRSYXdNZXRhZGF0YSgpICE9IG51bGwpIHtcbiAgICAgICAgY29uc29sZS5sb2coYCR7c0Rhc2h9cmF3TWV0YWRhdGE6JHtKU09OLnN0cmluZ2lmeShwQ29ubi5nZXRSYXdNZXRhZGF0YSgpKX1gKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHBDb25uLmhhc0NoaWxkcmVuKCkgJiYgcENvbm4uZ2V0Q2hpbGRyZW4oKSAhPSBudWxsKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGAke3NEYXNofWtpZENvdW50OiR7cENvbm4uZ2V0Q2hpbGRyZW4oKS5sZW5ndGh9YCk7XG4gICAgICAgIGNvbnN0IGtpZHMgPSBwQ29ubi5nZXRDaGlsZHJlbigpO1xuICAgICAgICBjb25zdCBraWRzS2V5cyA9IE9iamVjdC5rZXlzKGtpZHMpO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSBraWRzS2V5cy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgIGNvbnN0IGluZGV4ID0gcGFyc2VJbnQoa2lkc0tleXNbaV0sIDEwKSArIDE7XG4gICAgICAgICAgY29uc3Qga2lkID0ga2lkc1traWRzS2V5c1tpXV07XG4gICAgICAgICAgdGhpcy5jb25zb2xlS2lkRHVtcChraWQuZ2V0UENvbm5lY3QoKSwgbGV2ZWwgKyAxLCBpbmRleCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgLyogZW1wdHkgKi9cbiAgICB9XG4gIH1cblxuICBodG1sRGVjb2RlKHNWYWw6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgIGNvbnN0IGRvYyA9IG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoc1ZhbCwgJ3RleHQvaHRtbCcpO1xuICAgIHJldHVybiBkb2MuZG9jdW1lbnRFbGVtZW50LnRleHRDb250ZW50O1xuICB9XG5cbiAgZ2V0VW5pcXVlQ29udHJvbElEKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgc1ByZWZpeCA9ICdjb250cm9sLSc7XG5cbiAgICB0aGlzLmxhc3RDb250cm9sSUQrKztcblxuICAgIHJldHVybiBzUHJlZml4ICsgdGhpcy5sYXN0Q29udHJvbElELnRvU3RyaW5nKCk7XG4gIH1cblxuICBnZXRPcHRpb25MaXN0KGNvbmZpZ1Byb3BzOiBhbnksIGRhdGFPYmplY3Q6IGFueSk6IGFueVtdIHtcbiAgICBjb25zdCBsaXN0VHlwZSA9IGNvbmZpZ1Byb3BzLmxpc3RUeXBlO1xuXG4gICAgaWYgKGxpc3RUeXBlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGxpc3RUeXBlLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIGNhc2UgJ2Fzc29jaWF0ZWQnOlxuICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVBc3NvY2lhdGVkTGlzdChjb25maWdQcm9wcyk7XG4gICAgICBjYXNlICdkYXRhcGFnZSc6XG4gICAgICAgIHJldHVybiB0aGlzLmhhbmRsZURhdGFQYWdlTGlzdChjb25maWdQcm9wcywgZGF0YU9iamVjdCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlQXNzb2NpYXRlZExpc3QoY29uZmlnUHJvcHM6IGFueSk6IGFueVtdIHtcbiAgICBjb25zdCBkYXRhU291cmNlID0gY29uZmlnUHJvcHMuZGF0YXNvdXJjZTtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGFTb3VyY2UpKSB7XG4gICAgICByZXR1cm4gZGF0YVNvdXJjZTtcbiAgICB9XG5cbiAgICByZXR1cm4gW107XG4gIH1cblxuICBoYW5kbGVEYXRhUGFnZUxpc3QoY29uZmlnUHJvcHM6IGFueSwgZGF0YU9iamVjdDogYW55KTogYW55W10ge1xuICAgIGNvbnN0IGRhdGFQYWdlID0gY29uZmlnUHJvcHMuZGF0YXNvdXJjZTtcblxuICAgIGlmIChkYXRhT2JqZWN0ICYmIGRhdGFPYmplY3RbZGF0YVBhZ2VdKSB7XG4gICAgICBhbGVydCgnbmVlZCB0byBoYW5kbGUgZGF0YSBwYWdlJyk7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgbGV0IGxpc3RTb3VyY2VJdGVtcyA9IGNvbmZpZ1Byb3BzLmxpc3RPdXRwdXQ7XG5cbiAgICBpZiAodHlwZW9mIGRhdGFQYWdlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShsaXN0U291cmNlSXRlbXMpKSB7XG4gICAgICBsaXN0U291cmNlSXRlbXMgPSBkYXRhUGFnZS5zb3VyY2UgPyBkYXRhUGFnZS5zb3VyY2UgOiBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50cmFuc2Zvcm1MaXN0U291cmNlSXRlbXMobGlzdFNvdXJjZUl0ZW1zKTtcbiAgfVxuXG4gIHRyYW5zZm9ybUxpc3RTb3VyY2VJdGVtcyhsaXN0U291cmNlSXRlbXM6IGFueVtdKTogYW55W10ge1xuICAgIHJldHVybiAobGlzdFNvdXJjZUl0ZW1zIHx8IFtdKS5tYXAoaXRlbSA9PiB7XG4gICAgICByZXR1cm4geyAuLi5pdGVtLCB2YWx1ZTogaXRlbS50ZXh0IHx8IGl0ZW0udmFsdWUgfTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldEluaXRpYWxzKHVzZXJOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCB1c2VySW5pdGlhbHMgPSB1c2VyTmFtZTtcblxuICAgIGlmICh1c2VyTmFtZSAmJiB1c2VyTmFtZSAhPSAnJykge1xuICAgICAgdXNlckluaXRpYWxzID0gdXNlck5hbWUuY2hhckF0KDApO1xuXG4gICAgICBpZiAodXNlck5hbWUubGFzdEluZGV4T2YoJyAnKSA+IDApIHtcbiAgICAgICAgY29uc3QgbGFzdE5hbWUgPSB1c2VyTmFtZS5zdWJzdHJpbmcodXNlck5hbWUubGFzdEluZGV4T2YoJyAnKSArIDEpO1xuICAgICAgICB1c2VySW5pdGlhbHMgKz0gbGFzdE5hbWUuY2hhckF0KDApO1xuICAgICAgfSBlbHNlIGlmICh1c2VyTmFtZS5sYXN0SW5kZXhPZignLicpID4gMCkge1xuICAgICAgICBjb25zdCBsYXN0TmFtZSA9IHVzZXJOYW1lLnN1YnN0cmluZyh1c2VyTmFtZS5sYXN0SW5kZXhPZignLicpICsgMSk7XG4gICAgICAgIHVzZXJJbml0aWFscyArPSBsYXN0TmFtZS5jaGFyQXQoMCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHVzZXJJbml0aWFscyA9ICcnO1xuICAgIH1cblxuICAgIHJldHVybiB1c2VySW5pdGlhbHMudG9VcHBlckNhc2UoKTtcbiAgfVxuXG4gIGdldEltYWdlU3JjKG5hbWU6IHN0cmluZywgc2VydmVyVXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCBpY29uTmFtZSA9IG5hbWUucmVwbGFjZSgncGktJywgJycpLnJlcGxhY2UoJ3BpICcsICcnKS50cmltKCk7XG4gICAgaWYgKGljb25OYW1lID09PSAnbGluZS1jaGFydCcpIHtcbiAgICAgIGljb25OYW1lID0gJ2NoYXJ0LWxpbmUnO1xuICAgIH1cblxuICAgIC8vIHJldHVybiBzZXJ2ZXJVcmwuY29uY2F0KFwiYXNzZXRzL2ljb25zL1wiKS5jb25jYXQoaWNvbk5hbWUpLmNvbmNhdChcIi5zdmdcIik7XG4gICAgcmV0dXJuIHRoaXMuZ2V0SWNvblBhdGgoc2VydmVyVXJsKS5jb25jYXQoaWNvbk5hbWUpLmNvbmNhdCgnLnN2ZycpO1xuICB9XG5cbiAgZ2V0SWNvblBhdGgoc2VydmVyVXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBzZXJ2ZXJVcmwuY29uY2F0KCdhc3NldHMvaWNvbnMvJyk7XG4gIH1cblxuICBnZXRCb29sZWFuVmFsdWUoaW5WYWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgbGV0IGJSZXR1cm4gPSBmYWxzZTtcblxuICAgIGlmICh0eXBlb2YgaW5WYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGlmIChpblZhbHVlLnRvTG93ZXJDYXNlKCkgPT0gJ3RydWUnKSB7XG4gICAgICAgIGJSZXR1cm4gPSB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBiUmV0dXJuID0gaW5WYWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gYlJldHVybjtcbiAgfVxuXG4gIGdlbmVyYXRlRGF0ZShkYXRlVmFsLCBkYXRlRm9ybWF0KSB7XG4gICAgbGV0IHNSZXR1cm5EYXRlID0gZGF0ZVZhbDtcblxuICAgIGlmIChkYXRlVmFsID09IG51bGwgfHwgZGF0ZVZhbCA9PSAnJykge1xuICAgICAgcmV0dXJuIGRhdGVWYWw7XG4gICAgfVxuXG4gICAgLy8gQ29tbWVudGluZyBvdXQgcGVyIFZpbm9kIG5vdGUgaW4gd2ViYyBjb21wb25lbnRzXG4gICAgLy8gVlJTOiBEb250IHRoaW5rIHdlIG5lZWQgdGhlIGJlbG93IGxpbmUuICBDb21tZW50aW5nIG91dCBmb3Igbm93LiAoMjAyMC4wNS4yMClcbiAgICAvLyBpZiBkYXRlIGhhcyBhIFwiLlwiLCB0aGVuIG9mIHRoZSBmb3JtYXQgWVlZTU1ERFtUXUhIbW1zc1suXVNTUyBaLCBuZWVkIHRvIGNoYW5nZSB0byBZWVlZTU1ERFxuICAgIC8vIGlmIChkYXRlVmFsLmluZGV4T2YoXCIuXCIpID49IDApIHtcbiAgICAvLyAgIGRhdGVWYWwgPSBtb21lbnQoZGF0ZVZhbC5yZXBsYWNlKFwiR01UXCIsIFwiKzAwMDBcIiksIFwiWVlZWU1NRERbVF1ISG1tc3NbLl1TU1MgWlwiKS5mb3JtYXQoXCJZWVlZTU1ERFwiKTtcbiAgICAvLyAgIHNSZXR1cm5EYXRlID0gZGF0ZVZhbDtcbiAgICAvLyB9XG5cbiAgICBzd2l0Y2ggKGRhdGVGb3JtYXQpIHtcbiAgICAgIGNhc2UgJ0RhdGUtU2hvcnQnOlxuICAgICAgICAvLyAxLzEvMDFcbiAgICAgICAgc1JldHVybkRhdGUgPSBkYXlqcyhkYXRlVmFsKS5mb3JtYXQoJ00vRC9ZWScpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0RhdGUtU2hvcnQtWVlZWSc6XG4gICAgICAgIC8vIDEvMS8yMDAxXG4gICAgICAgIHNSZXR1cm5EYXRlID0gZGF5anMoZGF0ZVZhbCkuZm9ybWF0KCdNL0QvWVlZWScpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0RhdGUtU2hvcnQtQ3VzdG9tJzpcbiAgICAgICAgLy8gMDEvMDEvMDFcbiAgICAgICAgc1JldHVybkRhdGUgPSBkYXlqcyhkYXRlVmFsKS5mb3JtYXQoJ01NL0REL1lZJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRGF0ZS1TaG9ydC1DdXN0b20tWVlZWSc6XG4gICAgICAgIC8vIDAxLzAxLzIwMDFcbiAgICAgICAgc1JldHVybkRhdGUgPSBkYXlqcyhkYXRlVmFsKS5mb3JtYXQoJ0wnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdEYXRlLUxvbmctQ3VzdG9tLVlZWVknOlxuICAgICAgICAvLyAwNS8yMi8yMDIxXG4gICAgICAgIHNSZXR1cm5EYXRlID0gZGF5anMoZGF0ZVZhbCkuZm9ybWF0KCdNTS9ERC9ZWVlZJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRGF0ZSc6XG4gICAgICBjYXNlICdEYXRlLU1lZGl1bSc6XG4gICAgICAgIC8vIEphbiAxLCAyMDAxXG4gICAgICAgIHNSZXR1cm5EYXRlID0gZGF5anMoZGF0ZVZhbCkuZm9ybWF0KCdsbCcpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0RhdGUtRGF5TW9udGhZZWFyLUN1c3RvbSc6XG4gICAgICAgIC8vIDAxLUphbi0yMDAxXG4gICAgICAgIHNSZXR1cm5EYXRlID0gZGF5anMoZGF0ZVZhbCkuZm9ybWF0KCdERC1NTU0tWVlZWScpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0RhdGUtRnVsbCc6XG4gICAgICAgIC8vIE1vbmRheSwgSmFudWFyeSAxLCAyMDAxXG4gICAgICAgIHNSZXR1cm5EYXRlID0gZGF5anMoZGF0ZVZhbCkuZm9ybWF0KCdkZGRkLCBNTU1NIEQsIFlZWVknKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdEYXRlVGltZS1GcmFtZSc6XG4gICAgICBjYXNlICdEYXRlVGltZS1GcmFtZS1TaG9ydCc6XG4gICAgICBjYXNlICdEYXRlVGltZS1TaW5jZSc6XG4gICAgICAgIC8vIDIgZGF5cywgNSBob3VycyBhZ29cbiAgICAgICAgc1JldHVybkRhdGUgPSBkYXlqcyhkYXRlVmFsKS5mcm9tTm93KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRGF0ZS1Mb25nJzpcbiAgICAgICAgLy8gSmFudWFyeSAxLCAyMDAxXG4gICAgICAgIHNSZXR1cm5EYXRlID0gZGF5anMoZGF0ZVZhbCkuZm9ybWF0KCdNTU1NIEQsIFlZWVknKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdEYXRlLUlTTy04NjAxJzpcbiAgICAgICAgLy8gMjAwMS8wMS8wMSB5L20vZFxuICAgICAgICBzUmV0dXJuRGF0ZSA9IGRheWpzKGRhdGVWYWwpLmZvcm1hdCgnWVlZWS9NTS9ERCcpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0RhdGUtR3JlZ29yaWFuLTEnOlxuICAgICAgICAvLyAwMSBKYW51YXJ5LCAyMDAxXG4gICAgICAgIHNSZXR1cm5EYXRlID0gZGF5anMoZGF0ZVZhbCkuZm9ybWF0KCdERCBNTU1NLCBZWVlZJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRGF0ZS1HcmVnb3JpYW4tMic6XG4gICAgICAgIC8vIEphbnVhcnkgMDEsIDIwMDFcbiAgICAgICAgc1JldHVybkRhdGUgPSBkYXlqcyhkYXRlVmFsKS5mb3JtYXQoJ01NTU0gREQsIFlZWVknKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdEYXRlLUdyZWdvcmlhbi0zJzpcbiAgICAgICAgLy8gMjAwMSwgSmFudWFyeSAwMVxuICAgICAgICBzUmV0dXJuRGF0ZSA9IGRheWpzKGRhdGVWYWwpLmZvcm1hdCgnWVlZWSwgTU1NTSBERCcpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0RhdGVUaW1lLUN1c3RvbSc6XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNSZXR1cm5EYXRlO1xuICB9XG5cbiAgZ2VuZXJhdGVEYXRlVGltZShkYXRlVGltZVZhbCwgZGF0ZUZvcm1hdCkge1xuICAgIGxldCBzUmV0dXJuRGF0ZSA9IGRhdGVUaW1lVmFsO1xuXG4gICAgaWYgKGRhdGVUaW1lVmFsID09IG51bGwgfHwgZGF0ZVRpbWVWYWwgPT0gJycpIHtcbiAgICAgIHJldHVybiBkYXRlVGltZVZhbDtcbiAgICB9XG5cbiAgICBkYXRlVGltZVZhbCA9IGRhdGVUaW1lVmFsLnJlcGxhY2UoJ0dNVCcsICcrMDAwMCcpO1xuXG4gICAgc3dpdGNoIChkYXRlRm9ybWF0KSB7XG4gICAgICBjYXNlICdEYXRlVGltZS1TaG9ydCc6XG4gICAgICAgIC8vIDEvMS8wMSAxOjAwIEFNXG4gICAgICAgIHNSZXR1cm5EYXRlID0gZGF5anMoZGF0ZVRpbWVWYWwpLmZvcm1hdCgnTS9EL1lZIGg6bW0gQScpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0RhdGVUaW1lLVNob3J0LUN1c3RvbSc6XG4gICAgICAgIC8vIDAxLzAxLzAxIDAxOjAwIEFNXG4gICAgICAgIHNSZXR1cm5EYXRlID0gZGF5anMoZGF0ZVRpbWVWYWwpLmZvcm1hdCgnTU0vREQvWVkgaGg6bW0gQScpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0RhdGVUaW1lLVNob3J0LVlZWVktQ3VzdG9tJzpcbiAgICAgICAgLy8gMDEvMDEvMjAwMSAwMTowMCBBTVxuICAgICAgICBzUmV0dXJuRGF0ZSA9IGRheWpzKGRhdGVUaW1lVmFsKS5mb3JtYXQoJ00vRC9ZWVlZIGhoOm1tIEEnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdEYXRlVGltZS1Mb25nLVlZWVktQ3VzdG9tJzpcbiAgICAgICAgLy8gMDEvMDEvMDEgMDE6MDAgQU1cbiAgICAgICAgc1JldHVybkRhdGUgPSBkYXlqcyhkYXRlVGltZVZhbCkuZm9ybWF0KCdNTS9ERC9ZWVlZLCBoaDptbSBBJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRGF0ZVRpbWUtU2hvcnQtWVlZWSc6XG4gICAgICAgIC8vIDEvMS8yMDAxIDE6MDAgQU1cbiAgICAgICAgc1JldHVybkRhdGUgPSBkYXlqcyhkYXRlVGltZVZhbCkuZm9ybWF0KCdNL0QvWVlZWSBoOm1tIEEnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdEYXRlVGltZS1NZWRpdW0nOlxuICAgICAgICAvLyBKYW4gMSwgMjAwMSAxOjAwOjAwIEFNXG4gICAgICAgIHNSZXR1cm5EYXRlID0gZGF5anMoZGF0ZVRpbWVWYWwpLmZvcm1hdCgnTU1NIEQsIFlZWVkgaDptbTpzcyBBJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRGF0ZVRpbWUtTG9uZyc6XG4gICAgICAgIC8vIEphbnVhcnkgMSwgMjAwMSAxOjAwOjAwIEFNXG4gICAgICAgIHNSZXR1cm5EYXRlID0gZGF5anMoZGF0ZVRpbWVWYWwpLmZvcm1hdCgnTU1NTSBELCBZWVlZIGg6bW06c3MgQScpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0RhdGVUaW1lLURheU1vbnRoWWVhci1DdXN0b20nOlxuICAgICAgICAvLyAwMS1KYW4tMjAwMSAxOjAwOjAwIEFNXG4gICAgICAgIHNSZXR1cm5EYXRlID0gZGF5anMoZGF0ZVRpbWVWYWwpLmZvcm1hdCgnREQtTU1NLVlZWVkgaDptbTpzcyBBJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRGF0ZVRpbWUtRnVsbCc6XG4gICAgICAgIC8vIE1vbmRheSwgSmFudWFyeSAxLCAyMDAxIDE6MDAgQU0gRURUXG4gICAgICAgIHNSZXR1cm5EYXRlID0gZGF5anMoZGF0ZVRpbWVWYWwpLmZvcm1hdCgnZGRkZCwgTU1NTSBELCBZWVlZIGg6bW0gQSB6Jyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRGF0ZVRpbWUtRnJhbWUnOlxuICAgICAgY2FzZSAnRGF0ZVRpbWUtRnJhbWUtU2hvcnQnOlxuICAgICAgY2FzZSAnRGF0ZVRpbWUtU2luY2UnOlxuICAgICAgICAvLyAyIGRheXMsIDUgaG91cnMgYWdvXG4gICAgICAgIHNSZXR1cm5EYXRlID0gZGF5anMoZGF0ZVRpbWVWYWwpLmZyb21Ob3coKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdEYXRlVGltZS1JU08tODYwMSc6XG4gICAgICAgIC8vIDIwMDEvMDEvMDEgMTowMDowMCBBTSAgICAgeS9tL2RcbiAgICAgICAgc1JldHVybkRhdGUgPSBkYXlqcyhkYXRlVGltZVZhbCkuZm9ybWF0KCdZWVlZL01NL0REIGg6bW06c3MgQScpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0RhdGVUaW1lLUdyZWdvcmlhbi0xJzpcbiAgICAgICAgLy8gMDEgSmFudWFyeSwgMjAwMSAxOjAwOjAwIEFNXG4gICAgICAgIHNSZXR1cm5EYXRlID0gZGF5anMoZGF0ZVRpbWVWYWwpLmZvcm1hdCgnREQgTU1NTSwgWVlZWSBoOm1tOnNzIEEnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdEYXRlVGltZS1HcmVnb3JpYW4tMic6XG4gICAgICAgIC8vIEphbnVhcnkgMDEsIDIwMDEgMTowMDowMCBBTVxuICAgICAgICBzUmV0dXJuRGF0ZSA9IGRheWpzKGRhdGVUaW1lVmFsKS5mb3JtYXQoJ01NTU0gREQsIFlZWVkgaDptbTpzcyBBJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRGF0ZVRpbWUtR3JlZ29yaWFuLTMnOlxuICAgICAgICAvLyAyMDAxLCBKYW51YXJ5IDAxIDE6MDA6MDAgQU1cbiAgICAgICAgc1JldHVybkRhdGUgPSBkYXlqcyhkYXRlVGltZVZhbCkuZm9ybWF0KCdZWVlZLCBNTU1NIEREIGg6bW06c3MgQScpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0RhdGVUaW1lLUN1c3RvbSc6XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNSZXR1cm5EYXRlO1xuICB9XG5cbiAgZ2V0SWNvbkZyb21GaWxlVHlwZShmaWxlVHlwZSk6IHN0cmluZyB7XG4gICAgbGV0IGljb24gPSAnZG9jdW1lbnQtZG9jJztcbiAgICBpZiAoIWZpbGVUeXBlKSByZXR1cm4gaWNvbjtcbiAgICBpZiAoZmlsZVR5cGUuc3RhcnRzV2l0aCgnYXVkaW8nKSkge1xuICAgICAgaWNvbiA9ICdhdWRpbyc7XG4gICAgfSBlbHNlIGlmIChmaWxlVHlwZS5zdGFydHNXaXRoKCd2aWRlbycpKSB7XG4gICAgICBpY29uID0gJ3ZpZGVvJztcbiAgICB9IGVsc2UgaWYgKGZpbGVUeXBlLnN0YXJ0c1dpdGgoJ2ltYWdlJykpIHtcbiAgICAgIGljb24gPSAncGljdHVyZSc7XG4gICAgfSBlbHNlIGlmIChmaWxlVHlwZS5pbmNsdWRlcygncGRmJykpIHtcbiAgICAgIGljb24gPSAnZG9jdW1lbnQtcGRmJztcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgWywgc3VidHlwZV0gPSBmaWxlVHlwZS5zcGxpdCgnLycpO1xuICAgICAgY29uc3QgZm91bmRNYXRjaCA9IHNvdXJjZXMgPT4ge1xuICAgICAgICByZXR1cm4gc291cmNlcy5zb21lKGtleSA9PiBzdWJ0eXBlLmluY2x1ZGVzKGtleSkpO1xuICAgICAgfTtcblxuICAgICAgaWYgKGZvdW5kTWF0Y2goWydleGNlbCcsICdzcHJlYWRzaGVldCddKSkge1xuICAgICAgICBpY29uID0gJ2RvY3VtZW50LXhscyc7XG4gICAgICB9IGVsc2UgaWYgKGZvdW5kTWF0Y2goWyd6aXAnLCAnY29tcHJlc3NlZCcsICdnemlwJywgJ3JhcicsICd0YXInXSkpIHtcbiAgICAgICAgaWNvbiA9ICdkb2N1bWVudC1jb21wcmVzcyc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGljb247XG4gIH1cblxuICBnZXRJY29uRm9yQXR0YWNobWVudChhdHRhY2htZW50KSB7XG4gICAgbGV0IGljb247XG4gICAgc3dpdGNoIChhdHRhY2htZW50LnR5cGUpIHtcbiAgICAgIGNhc2UgJ0ZJTEUnOlxuICAgICAgICBpY29uID0gdGhpcy5nZXRJY29uRnJvbUZpbGVUeXBlKGF0dGFjaG1lbnQubWltZVR5cGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1VSTCc6XG4gICAgICAgIGljb24gPSAnY2hhaW4nO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGljb24gPSAnZG9jdW1lbnQtZG9jJztcbiAgICB9XG4gICAgcmV0dXJuIGljb247XG4gIH1cblxuICBhZGRWaWV3Q29udGFpbmVyKCkge1xuICAgIGlmIChzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCd2aWV3Q29udGFpbmVyQ291bnQnKSA9PSBudWxsKSB7XG4gICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCd2aWV3Q29udGFpbmVyQ291bnQnLCAnMCcpO1xuICAgIH1cblxuICAgIGxldCBjb3VudCA9IHBhcnNlSW50KHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3ZpZXdDb250YWluZXJDb3VudCcpIGFzIHN0cmluZywgMTApO1xuICAgIGNvdW50Kys7XG5cbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCd2aWV3Q29udGFpbmVyQ291bnQnLCBjb3VudC50b1N0cmluZygpKTtcbiAgfVxuXG4gIHJlbW92ZVZpZXdDb250YWluZXIoKSB7XG4gICAgcmV0dXJuO1xuXG4gICAgbGV0IGNvdW50ID0gcGFyc2VJbnQoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgndmlld0NvbnRhaW5lckNvdW50JykgYXMgc3RyaW5nLCAxMCk7XG4gICAgY291bnQtLTtcblxuICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ3ZpZXdDb250YWluZXJDb3VudCcsIGNvdW50LnRvU3RyaW5nKCkpO1xuICB9XG5cbiAgb2tUb0FkZENvbnRhaW5lclRvVkMoKTogYm9vbGVhbiB7XG4gICAgaWYgKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3ZpZXdDb250YWluZXJDb3VudCcpID09IG51bGwpIHtcbiAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ3ZpZXdDb250YWluZXJDb3VudCcsICcwJyk7XG4gICAgfVxuXG4gICAgY29uc3QgY291bnQgPSBwYXJzZUludChzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCd2aWV3Q29udGFpbmVyQ291bnQnKSBhcyBzdHJpbmcsIDEwKTtcblxuICAgIHJldHVybiBjb3VudCA9PT0gMDtcbiAgfVxuXG4gIGdldFVzZXJJZCA9IHVzZXIgPT4ge1xuICAgIGxldCB1c2VySWQgPSAnJztcbiAgICBpZiAodHlwZW9mIHVzZXIgPT09ICdvYmplY3QnICYmIHVzZXIgIT09IG51bGwgJiYgdXNlci51c2VySWQpIHtcbiAgICAgIHVzZXJJZCA9IHVzZXIudXNlcklkO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHVzZXIgPT09ICdzdHJpbmcnICYmIHVzZXIpIHtcbiAgICAgIHVzZXJJZCA9IHVzZXI7XG4gICAgfVxuICAgIHJldHVybiB1c2VySWQ7XG4gIH07XG5cbiAgc3RhdGljIHNka0dldEF1dGhIZWFkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnYXNka19BSCcpIGFzIHN0cmluZztcbiAgfVxuXG4gIHN0YXRpYyBpc0VtcHR5T2JqZWN0KG9iajogT2JqZWN0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iaikubGVuZ3RoID09PSAwO1xuICB9XG59XG4iXX0=
|