ontimize-web-ngx 15.0.0-beta.1 → 15.0.0-beta.3
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/esm2020/lib/components/app-sidenav/o-app-sidenav.component.mjs +2 -2
- package/esm2020/lib/components/button-toggle/o-button-toggle-group/o-button-toggle-group.component.mjs +13 -15
- package/esm2020/lib/components/card-menu-item/o-card-menu-item.component.mjs +6 -8
- package/esm2020/lib/components/dual-list-selector/o-dual-list-selector.component.mjs +3 -3
- package/esm2020/lib/components/form/navigation/o-form.navigation.class.mjs +2 -2
- package/esm2020/lib/components/form-container/o-form-container.component.mjs +6 -8
- package/esm2020/lib/components/grid/o-grid.component.mjs +5 -5
- package/esm2020/lib/components/index.mjs +2 -3
- package/esm2020/lib/components/input/combo/o-combo.component.mjs +2 -2
- package/esm2020/lib/components/input/phone-input/o-phone-input.component.mjs +3 -3
- package/esm2020/lib/components/input/search-input/o-search-input.component.mjs +2 -2
- package/esm2020/lib/components/list/list-item/o-list-item.component.mjs +2 -2
- package/esm2020/lib/components/list/o-list.component.mjs +5 -14
- package/esm2020/lib/components/list/renderers/card/o-list-item-card.component.mjs +3 -3
- package/esm2020/lib/components/list/renderers/card-image/o-list-item-card-image.component.mjs +3 -3
- package/esm2020/lib/components/o-service-base-component.class.mjs +1 -1
- package/esm2020/lib/components/o-service-component.class.mjs +2 -1
- package/esm2020/lib/components/table/column/calculated/o-table-column-calculated.component.mjs +6 -7
- package/esm2020/lib/components/table/column/o-table-column.component.mjs +123 -129
- package/esm2020/lib/components/table/extensions/default-o-table.datasource.mjs +46 -9
- package/esm2020/lib/components/table/extensions/dialog/apply-configuration/o-table-apply-configuration-dialog.component.mjs +3 -3
- package/esm2020/lib/components/table/extensions/dialog/filter-by-column/o-table-filter-by-column-data-dialog.component.mjs +3 -3
- package/esm2020/lib/components/table/extensions/dialog/store-configuration/o-table-store-configuration-dialog.component.mjs +3 -3
- package/esm2020/lib/components/table/extensions/dialog/visible-columns/o-table-visible-columns-dialog.component.mjs +3 -3
- package/esm2020/lib/components/table/extensions/header/table-insertable-row/o-table-insertable-row.component.mjs +6 -7
- package/esm2020/lib/components/table/extensions/header/table-quickfilter/o-table-quickfilter.component.mjs +4 -4
- package/esm2020/lib/components/table/o-table.component.mjs +17 -18
- package/esm2020/lib/components/user-info/index.mjs +5 -0
- package/esm2020/lib/components/user-info/o-user-info.module.mjs +3 -3
- package/esm2020/lib/interfaces/o-table-column.interface.mjs +1 -1
- package/esm2020/lib/layouts/form-layout/dialog/o-form-layout-dialog.component.mjs +20 -22
- package/esm2020/lib/layouts/form-layout/dialog/options/o-form-layout-dialog-options.directive.mjs +7 -3
- package/esm2020/lib/layouts/form-layout/o-form-layout-manager.component.mjs +10 -4
- package/esm2020/lib/layouts/form-layout/split-pane/o-form-layout-split-pane.component.mjs +8 -9
- package/esm2020/lib/layouts/form-layout/tabgroup/o-form-layout-tabgroup.component.mjs +8 -10
- package/esm2020/lib/services/o-error-dialog-manager.service.mjs +8 -4
- package/esm2020/lib/services/translate/o-translate.service.mjs +3 -2
- package/esm2020/lib/shared/components/filter/load-filter/o-load-filter-dialog.component.mjs +3 -3
- package/esm2020/lib/util/util.mjs +5 -1
- package/fesm2015/ontimize-web-ngx.mjs +297 -272
- package/fesm2015/ontimize-web-ngx.mjs.map +1 -1
- package/fesm2020/ontimize-web-ngx.mjs +297 -272
- package/fesm2020/ontimize-web-ngx.mjs.map +1 -1
- package/lib/components/button-toggle/o-button-toggle-group/o-button-toggle-group.component.d.ts +1 -3
- package/lib/components/card-menu-item/o-card-menu-item.component.d.ts +2 -3
- package/lib/components/form-container/o-form-container.component.d.ts +1 -3
- package/lib/components/index.d.ts +1 -2
- package/lib/components/list/o-list.component.d.ts +1 -3
- package/lib/components/table/column/calculated/o-table-column-calculated.component.d.ts +2 -3
- package/lib/components/table/column/o-table-column.component.d.ts +3 -4
- package/lib/components/table/extensions/default-o-table.datasource.d.ts +1 -0
- package/lib/components/table/extensions/header/table-insertable-row/o-table-insertable-row.component.d.ts +2 -3
- package/lib/components/table/o-table.component.d.ts +5 -6
- package/lib/components/user-info/index.d.ts +4 -0
- package/lib/components/user-info/o-user-info.module.d.ts +1 -1
- package/lib/interfaces/o-table-column.interface.d.ts +2 -2
- package/lib/layouts/form-layout/dialog/o-form-layout-dialog.component.d.ts +4 -4
- package/lib/layouts/form-layout/dialog/options/o-form-layout-dialog-options.directive.d.ts +3 -1
- package/lib/layouts/form-layout/o-form-layout-manager.component.d.ts +2 -1
- package/lib/layouts/form-layout/split-pane/o-form-layout-split-pane.component.d.ts +2 -3
- package/lib/layouts/form-layout/tabgroup/o-form-layout-tabgroup.component.d.ts +2 -3
- package/lib/services/o-error-dialog-manager.service.d.ts +2 -2
- package/lib/services/translate/o-translate.service.d.ts +1 -0
- package/lib/util/util.d.ts +1 -0
- package/ontimize.scss +2 -72
- package/package.json +1 -1
- package/theme.scss +84 -99
- package/theming/addons/report-on-demand.scss +5 -1
- package/theming/ontimize-style-v8.scss +23 -1
- package/theming/ontimize-style.scss +2 -1
- package/theming/styles/density.scss +37 -23
- package/theming/styles/ontimize-v8/o-form-field-style.scss +23 -15
- package/theming/styles/ontimize-v8/o-table-style.scss +1 -1
- package/theming/styles/ontimize-v8/variables.scss +4 -1
- package/theming/themes/ontimize-blue.scss +6 -3
|
@@ -28,6 +28,7 @@ export class OTranslateService {
|
|
|
28
28
|
this.httpClient = this.injector.get(HttpClient);
|
|
29
29
|
this.appConfig = this.injector.get(AppConfig);
|
|
30
30
|
this.localStorageKey = this.appConfig.getConfiguration().uuid;
|
|
31
|
+
this.defaultLocale = this.appConfig.getConfiguration().defaultLocale;
|
|
31
32
|
}
|
|
32
33
|
storeLanguage(language) {
|
|
33
34
|
if (language) {
|
|
@@ -89,7 +90,7 @@ export class OTranslateService {
|
|
|
89
90
|
textTranslated = undefined;
|
|
90
91
|
}
|
|
91
92
|
if (!textTranslated) {
|
|
92
|
-
const bundle = CORE_TRANSLATIONS.MAP[this.ngxTranslateService.currentLang] || CORE_TRANSLATIONS.MAP[this.DEFAULT_LANG];
|
|
93
|
+
const bundle = CORE_TRANSLATIONS.MAP[this.ngxTranslateService.currentLang] || CORE_TRANSLATIONS.MAP[this.defaultLocale] || CORE_TRANSLATIONS.MAP[this.DEFAULT_LANG];
|
|
93
94
|
if (bundle && bundle[text]) {
|
|
94
95
|
textTranslated = bundle[text];
|
|
95
96
|
}
|
|
@@ -167,4 +168,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
167
168
|
type: Injectable,
|
|
168
169
|
args: [{ providedIn: 'root', useFactory: translateServiceFactory, deps: [Injector] }]
|
|
169
170
|
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
170
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10cmFuc2xhdGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9zZXJ2aWNlcy90cmFuc2xhdGUvby10cmFuc2xhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFFOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sS0FBSyxpQkFBaUIsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQU0xRCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsUUFBa0I7SUFDeEQsTUFBTSxZQUFZLEdBQUcsdUJBQXVCLENBQUMsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDNUUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNu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QyxDQUFDLENBQUM7U0FDekM7UUFDRCxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDbkMsV0FBVyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDekM7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDOztBQWxLYSw2QkFBVyxHQUFHLGdCQUFnQixDQUFDO0FBQy9CLGtDQUFnQixHQUFHLE9BQU8sQ0FBQzs4R0FIOUIsaUJBQWlCO2tIQUFqQixpQkFBaUIsY0FESixNQUFNLGNBQWMsdUJBQXVCLGtCQUFTLFFBQVE7MkZBQ3pFLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLHVCQUF1QixFQUFFLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmliZXIgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQXBwQ29uZmlnIH0gZnJvbSAnLi4vLi4vY29uZmlnL2FwcC1jb25maWcnO1xuaW1wb3J0ICogYXMgQ09SRV9UUkFOU0xBVElPTlMgZnJvbSAnLi4vLi4vaTE4bi9pMThuJztcbmltcG9ydCB7IE1vbWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tb21lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlV3JhcHBlciB9IGZyb20gJy4uLy4uL3V0aWwvYXN5bmMnO1xuaW1wb3J0IHsgX2dldEluamVjdGlvblRva2VuVmFsdWUsIE9fVFJBTlNMQVRFX1NFUlZJQ0UgfSBmcm9tICcuLi9mYWN0b3JpZXMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBDb2RlcyB9IGZyb20gJy4uLy4uL3V0aWwvY29kZXMnO1xuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuXG4vKipcbiAqIGBPVHJhbnNsYXRlU2VydmljZWAgZmFjdG9yeS5cbiAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIHRyYW5zbGF0ZSBzZXJ2aWNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNsYXRlU2VydmljZUZhY3RvcnkoaW5qZWN0b3I6IEluamVjdG9yKTogYW55IHtcbiAgY29uc3Qgc2VydmljZUNsYXNzID0gX2dldEluamVjdGlvblRva2VuVmFsdWUoT19UUkFOU0xBVEVfU0VSVklDRSwgaW5qZWN0b3IpO1xuICBjb25zdCBzZXJ2aWNlID0gVXRpbC5jcmVhdGVTZXJ2aWNlSW5zdGFuY2Uoc2VydmljZUNsYXNzLCBpbmplY3Rvcik7XG4gIHJldHVybiBVdGlsLmlzRGVmaW5lZChzZXJ2aWNlKSA/IHNlcnZpY2UgOiBuZXcgT1RyYW5zbGF0ZVNlcnZpY2UoaW5qZWN0b3IpO1xufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JywgdXNlRmFjdG9yeTogdHJhbnNsYXRlU2VydmljZUZhY3RvcnksIGRlcHM6IFtJbmplY3Rvcl0gfSlcbmV4cG9ydCBjbGFzcyBPVHJhbnNsYXRlU2VydmljZSB7XG5cbiAgcHVibGljIHN0YXRpYyBBU1NFVFNfUEFUSCA9ICcuL2Fzc2V0cy9pMThuLyc7XG4gIHB1YmxpYyBzdGF0aWMgQVNTRVRTX0VYVEVOU0lPTiA9ICcuanNvbic7XG4gIHB1YmxpYyBERUZBVUxUX0xBTkcgPSAnZW4nO1xuICBwdWJsaWMgb25MYW5ndWFnZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHByb3RlY3RlZCBuZ3hUcmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlO1xuICBwcm90ZWN0ZWQgbW9tZW50U2VydmljZTogTW9tZW50U2VydmljZTtcbiAgcHJvdGVjdGVkIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQ7XG5cbiAgcHJvdGVjdGVkIGxvY2FsU3RvcmFnZUtleTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgbm90Rm91bmRMYW5nOiBBcnJheTxzdHJpbmc+ID0gW107XG4gIHByb3RlY3RlZCBhcHBDb25maWc6IEFwcENvbmZpZztcblxuICBwcm90ZWN0ZWQgZXhpc3RpbmdMYW5nRmlsZXM6IEFycmF5PHN0cmluZz4gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgdGhpcy5uZ3hUcmFuc2xhdGVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSk7XG4gICAgdGhpcy5tb21lbnRTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoTW9tZW50U2VydmljZSk7XG4gICAgdGhpcy5odHRwQ2xpZW50ID0gdGhpcy5pbmplY3Rvci5nZXQoSHR0cENsaWVudCk7XG4gICAgdGhpcy5hcHBDb25maWcgPSB0aGlzLmluamVjdG9yLmdldChBcHBDb25maWcpO1xuICAgIHRoaXMubG9jYWxTdG9yYWdlS2V5ID0gdGhpcy5hcHBDb25maWcuZ2V0Q29uZmlndXJhdGlvbigpLnV1aWQ7XG4gIH1cblxuICBwdWJsaWMgc3RvcmVMYW5ndWFnZShsYW5ndWFnZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKGxhbmd1YWdlKSB7XG4gICAgICBjb25zdCBkYXRhU3RyID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5sb2NhbFN0b3JhZ2VLZXkpO1xuICAgICAgY29uc3QgZGF0YSA9IChkYXRhU3RyICYmIGRhdGFTdHIubGVuZ3RoID4gMCkgPyBKU09OLnBhcnNlKGRhdGFTdHIpIDoge307XG4gICAgICBkYXRhW0NvZGVzLkxBTkdVQUdFX0tFWV0gPSBsYW5ndWFnZTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMubG9jYWxTdG9yYWdlS2V5LCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJDYW5ub3Qgc2V0IG5ldyBpdGVtIGluIGxvY2FsU3RvcmFnZS4gRXJyb3I6IFwiICsgZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldFN0b3JlZExhbmd1YWdlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgZGF0YVN0ciA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMubG9jYWxTdG9yYWdlS2V5KTtcbiAgICByZXR1cm4gZGF0YVN0ciA/IEpTT04ucGFyc2UoZGF0YVN0cilbQ29kZXMuTEFOR1VBR0VfS0VZXSA6IHZvaWQgMDtcbiAgfVxuXG4gIHByb3RlY3RlZCBjaGVja0V4aXN0aW5nTGFuZ0ZpbGUobGFuZzogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIGlmIChzZWxmLmV4aXN0aW5nTGFuZ0ZpbGVzLmluZGV4T2YobGFuZykgIT09IC0xKSB7XG4gICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGxvY2FsZUFzc2V0c1BhdGggPSAodGhpcy5uZ3hUcmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMb2FkZXIgYXMgYW55KS5wcmVmaXg7XG4gICAgICBjb25zdCBsb2NhbGVBc3NldHNFeHRlbnNpb24gPSAodGhpcy5uZ3hUcmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMb2FkZXIgYXMgYW55KS5zdWZmaXg7XG4gICAgICBzZWxmLmh0dHBDbGllbnQuZ2V0KGxvY2FsZUFzc2V0c1BhdGggKyBsYW5nICsgbG9jYWxlQXNzZXRzRXh0ZW5zaW9uKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAoc2VsZi5leGlzdGluZ0xhbmdGaWxlcy5pbmRleE9mKGxhbmcpID09PSAtMSkge1xuICAgICAgICAgIHNlbGYuZXhpc3RpbmdMYW5nRmlsZXMucHVzaChsYW5nKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJMThOIEZpbGUgbG9hZGVkIHN1Y2Nlc3NmdWxseVxuICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgfSwgKCkgPT4ge1xuICAgICAgICAvLyBJMThOIEZpbGUgZmFpbGVkIHRvIGxvYWRcbiAgICAgICAgaWYgKHNlbGYubm90Rm91bmRMYW5nLmluZGV4T2YobGFuZykgPT09IC0xKSB7XG4gICAgICAgICAgc2VsZi5ub3RGb3VuZExhbmcucHVzaChsYW5nKTtcbiAgICAgICAgfVxuICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHNldERlZmF1bHRMYW5nKGxhbmc6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMubmd4VHJhbnNsYXRlU2VydmljZS5kZWZhdWx0TGFuZyA9IGxhbmc7XG4gICAgdGhpcy5jaGVja0V4aXN0aW5nTGFuZ0ZpbGUobGFuZykudGhlbigoZXhpc3RzKSA9PiB7XG4gICAgICBpZiAoIWV4aXN0cykge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdEZWZhdWx0IGxhbmd1YWdlKCcgKyBsYW5nICsgJykgaGFzIG5vIGJ1bmRsZSBmaWxlIGRlZmluZWQnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQodGV4dDogc3RyaW5nLCB2YWx1ZXM6IGFueVtdID0gW10pOiBzdHJpbmcge1xuICAgIGxldCB0ZXh0VHJhbnNsYXRlZDtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYnVuZGxlID0gdGhpcy5uZ3hUcmFuc2xhdGVTZXJ2aWNlLmdldCh0ZXh0LCB2YWx1ZXMpO1xuICAgICAgaWYgKGJ1bmRsZSkge1xuICAgICAgICBidW5kbGUuc3Vic2NyaWJlKHggPT4gdGV4dFRyYW5zbGF0ZWQgPSB4KTtcbiAgICAgIH1cbiAgICAgIHRleHRUcmFuc2xhdGVkID0gdGV4dFRyYW5zbGF0ZWQgPT09IHRleHQgPyB1bmRlZmluZWQgOiB0ZXh0VHJhbnNsYXRlZDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0ZXh0VHJhbnNsYXRlZCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaWYgKCF0ZXh0VHJhbnNsYXRlZCkge1xuICAgICAgY29uc3QgYnVuZGxlID0gQ09SRV9UUkFOU0xBVElPTlMuTUFQW3RoaXMubmd4VHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZ10gfHwgQ09SRV9UUkFOU0xBVElPTlMuTUFQW3RoaXMuREVGQVVMVF9MQU5HXTtcbiAgICAgIGlmIChidW5kbGUgJiYgYnVuZGxlW3RleHRdKSB7XG4gICAgICAgIHRleHRUcmFuc2xhdGVkID0gYnVuZGxlW3RleHRdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGV4dFRyYW5zbGF0ZWQgPSB0ZXh0O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGV4dFRyYW5zbGF0ZWQ7XG4gIH1cblxuICBwdWJsaWMgc2V0QXBwTGFuZyhsYW5nOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IG9ic2VydmFibGUgPSBuZXcgT2JzZXJ2YWJsZShvYnNlcnZlciA9PiB7XG4gICAgICB0aGlzLnVzZShsYW5nLCBvYnNlcnZlcik7XG4gICAgfSk7XG4gICAgcmV0dXJuIG9ic2VydmFibGU7XG4gIH1cblxuICBwdWJsaWMgdXNlKGxhbmc6IHN0cmluZywgb2JzZXJ2ZXI/OiBTdWJzY3JpYmVyPGFueT4pOiB2b2lkIHtcbiAgICBpZiAobGFuZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBuZXdMYW5nID0gbGFuZyB8fCB0aGlzLkRFRkFVTFRfTEFORztcbiAgICAgIC8vIHNldHRpbmcgbGFuZyBmb3IgaW5pdGlhbGl6SU5HIG1vbWVudCBhbmQgb3RoZXIgY29tcG9uZW50c1xuICAgICAgdGhpcy5wcm9wYWdhdGVMYW5nKG5ld0xhbmcsIHt9LCBvYnNlcnZlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2hlY2tFeGlzdGluZ0xhbmdGaWxlKGxhbmcpLnRoZW4oKGV4aXN0cykgPT4ge1xuICAgICAgICBsZXQgbmV3TGFuZyA9IGxhbmc7XG4gICAgICAgIGlmICghZXhpc3RzKSB7XG4gICAgICAgICAgbmV3TGFuZyA9IFV0aWwuaXNEZWZpbmVkKHRoaXMuYXBwQ29uZmlnWydfY29uZmlnJ11bJ2RlZmF1bHRMb2NhbGUnXSkgPyB0aGlzLmFwcENvbmZpZ1snX2NvbmZpZyddWydkZWZhdWx0TG9jYWxlJ10gOiB0aGlzLm5neFRyYW5zbGF0ZVNlcnZpY2UuZ2V0RGVmYXVsdExhbmcoKTtcbiAgICAgICAgICBjb25zdCB0cmFuc2xhdGlvbnMgPSBDT1JFX1RSQU5TTEFUSU9OUy5NQVBbbmV3TGFuZ10gfHwgQ09SRV9UUkFOU0xBVElPTlMuTUFQW3RoaXMuREVGQVVMVF9MQU5HXTtcbiAgICAgICAgICBjb25zdCBtc2cgPSB0cmFuc2xhdGlvbnNbJ01FU1NBR0VTLkVSUk9SX01JU1NJTkdfTEFORyddO1xuICAgICAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0KE1hdFNuYWNrQmFyKS5vcGVuKG1zZywgJyAnLCB7XG4gICAgICAgICAgICBkdXJhdGlvbjogMjUwMFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubmd4VHJhbnNsYXRlU2VydmljZS51c2UobmV3TGFuZykuc3Vic2NyaWJlKFxuICAgICAgICAgIHJlcyA9PiB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlTGFuZ3VhZ2UobmV3TGFuZyk7XG4gICAgICAgICAgICB0aGlzLnByb3BhZ2F0ZUxhbmcobmV3TGFuZywgcmVzLCBvYnNlcnZlcik7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHByb3BhZ2F0ZUxhbmcobGFuZzogc3RyaW5nLCBsYW5nUmVzPzogYW55LCBvYnNlcnZlcj86IFN1YnNjcmliZXI8YW55Pikge1xuICAgIGNvbnN0IGNvcmVCdW5kbGUgPSBDT1JFX1RSQU5TTEFUSU9OUy5NQVBbbGFuZyB8fCB0aGlzLkRFRkFVTFRfTEFOR107XG4gICAgaWYgKGNvcmVCdW5kbGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgbWl4ZWQgPSBPYmplY3QuYXNzaWduKHt9LCBjb3JlQnVuZGxlLCBsYW5nUmVzKTtcbiAgICAgIHRoaXMubmd4VHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGlvbnNbbGFuZ10gPSBtaXhlZDtcbiAgICB9XG4gICAgdGhpcy5tb21lbnRTZXJ2aWNlLmxvYWQobGFuZyk7XG4gICAgT2JzZXJ2YWJsZVdyYXBwZXIuY2FsbEVtaXQodGhpcy5vbkxhbmd1YWdlQ2hhbmdlZCwgbGFuZyk7XG4gICAgaWYgKG9ic2VydmVyKSB7XG4gICAgICBvYnNlcnZlci5uZXh0KGxhbmdSZXMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRDdXJyZW50TGFuZygpIHtcbiAgICByZXR1cm4gdGhpcy5uZ3hUcmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nO1xuICB9XG5cbiAgcHVibGljIGdldEJyb3dzZXJMYW5nKCkge1xuICAgIC8vIGNvcHlpbmcgdGhpcy5uZ3hUcmFuc2xhdGVTZXJ2aWNlLmdldEJyb3dzZXJMYW5nKCkgYnV0IHdpdGggYSBmaXggZm9yIGRlZmF1bHQgc2VsZWN0ZWQgbGFuZ3VhZ2UgKGJyb3dzZXJMYW5nKVxuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2Ygd2luZG93Lm5hdmlnYXRvciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IG5hdmlnYXRvcjogYW55ID0gd2luZG93Lm5hdmlnYXRvcjtcbiAgICBsZXQgYnJvd3NlckxhbmcgPSBuYXZpZ2F0b3IubGFuZ3VhZ2VzID8gbmF2aWdhdG9yLmxhbmd1YWdlc1swXSA6IG51bGw7XG4gICAgYnJvd3NlckxhbmcgPSBuYXZpZ2F0b3IubGFuZ3VhZ2UgfHwgYnJvd3NlckxhbmcgfHwgbmF2aWdhdG9yLmJyb3dzZXJMYW5ndWFnZSB8fCBuYXZpZ2F0b3IudXNlckxhbmd1YWdlO1xuICAgIGlmIChicm93c2VyTGFuZy5pbmRleE9mKCctJykgIT09IC0xKSB7XG4gICAgICBicm93c2VyTGFuZyA9IGJyb3dzZXJMYW5nLnNwbGl0KCctJylbMF07XG4gICAgfVxuICAgIGlmIChicm93c2VyTGFuZy5pbmRleE9mKCdfJykgIT09IC0xKSB7XG4gICAgICBicm93c2VyTGFuZyA9IGJyb3dzZXJMYW5nLnNwbGl0KCdfJylbMF07XG4gICAgfVxuICAgIHJldHVybiBicm93c2VyTGFuZztcbiAgfVxuXG59XG4iXX0=
|
|
171
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10cmFuc2xhdGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9zZXJ2aWNlcy90cmFuc2xhdGUvby10cmFuc2xhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFFOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sS0FBSyxpQkFBaUIsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQU0xRCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsUUFBa0I7SUFDeEQsTUFBTSxZQUFZLEdBQUcsdUJBQXVCLENBQUMsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDNUUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNu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Q0FBQztRQUN2RyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDbkMsV0FBVyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDekM7UUFDRCxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDbkMsV0FBVyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDekM7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDOztBQW5LYSw2QkFBVyxHQUFHLGdCQUFnQixDQUFDO0FBQy9CLGtDQUFnQixHQUFHLE9BQU8sQ0FBQzs4R0FIOUIsaUJBQWlCO2tIQUFqQixpQkFBaUIsY0FESixNQUFNLGNBQWMsdUJBQXVCLGtCQUFTLFFBQVE7MkZBQ3pFLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLHVCQUF1QixFQUFFLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmliZXIgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQXBwQ29uZmlnIH0gZnJvbSAnLi4vLi4vY29uZmlnL2FwcC1jb25maWcnO1xuaW1wb3J0ICogYXMgQ09SRV9UUkFOU0xBVElPTlMgZnJvbSAnLi4vLi4vaTE4bi9pMThuJztcbmltcG9ydCB7IE1vbWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tb21lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlV3JhcHBlciB9IGZyb20gJy4uLy4uL3V0aWwvYXN5bmMnO1xuaW1wb3J0IHsgX2dldEluamVjdGlvblRva2VuVmFsdWUsIE9fVFJBTlNMQVRFX1NFUlZJQ0UgfSBmcm9tICcuLi9mYWN0b3JpZXMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBDb2RlcyB9IGZyb20gJy4uLy4uL3V0aWwvY29kZXMnO1xuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuXG4vKipcbiAqIGBPVHJhbnNsYXRlU2VydmljZWAgZmFjdG9yeS5cbiAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIHRyYW5zbGF0ZSBzZXJ2aWNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNsYXRlU2VydmljZUZhY3RvcnkoaW5qZWN0b3I6IEluamVjdG9yKTogYW55IHtcbiAgY29uc3Qgc2VydmljZUNsYXNzID0gX2dldEluamVjdGlvblRva2VuVmFsdWUoT19UUkFOU0xBVEVfU0VSVklDRSwgaW5qZWN0b3IpO1xuICBjb25zdCBzZXJ2aWNlID0gVXRpbC5jcmVhdGVTZXJ2aWNlSW5zdGFuY2Uoc2VydmljZUNsYXNzLCBpbmplY3Rvcik7XG4gIHJldHVybiBVdGlsLmlzRGVmaW5lZChzZXJ2aWNlKSA/IHNlcnZpY2UgOiBuZXcgT1RyYW5zbGF0ZVNlcnZpY2UoaW5qZWN0b3IpO1xufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JywgdXNlRmFjdG9yeTogdHJhbnNsYXRlU2VydmljZUZhY3RvcnksIGRlcHM6IFtJbmplY3Rvcl0gfSlcbmV4cG9ydCBjbGFzcyBPVHJhbnNsYXRlU2VydmljZSB7XG5cbiAgcHVibGljIHN0YXRpYyBBU1NFVFNfUEFUSCA9ICcuL2Fzc2V0cy9pMThuLyc7XG4gIHB1YmxpYyBzdGF0aWMgQVNTRVRTX0VYVEVOU0lPTiA9ICcuanNvbic7XG4gIHB1YmxpYyBERUZBVUxUX0xBTkcgPSAnZW4nO1xuICBwdWJsaWMgb25MYW5ndWFnZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHByb3RlY3RlZCBuZ3hUcmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlO1xuICBwcm90ZWN0ZWQgbW9tZW50U2VydmljZTogTW9tZW50U2VydmljZTtcbiAgcHJvdGVjdGVkIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQ7XG5cbiAgcHJvdGVjdGVkIGxvY2FsU3RvcmFnZUtleTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgbm90Rm91bmRMYW5nOiBBcnJheTxzdHJpbmc+ID0gW107XG4gIHByb3RlY3RlZCBhcHBDb25maWc6IEFwcENvbmZpZztcbiAgcHJvdGVjdGVkIGV4aXN0aW5nTGFuZ0ZpbGVzOiBBcnJheTxzdHJpbmc+ID0gW107XG4gIHByb3RlY3RlZCBkZWZhdWx0TG9jYWxlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgIHRoaXMubmd4VHJhbnNsYXRlU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuICAgIHRoaXMubW9tZW50U2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KE1vbWVudFNlcnZpY2UpO1xuICAgIHRoaXMuaHR0cENsaWVudCA9IHRoaXMuaW5qZWN0b3IuZ2V0KEh0dHBDbGllbnQpO1xuICAgIHRoaXMuYXBwQ29uZmlnID0gdGhpcy5pbmplY3Rvci5nZXQoQXBwQ29uZmlnKTtcbiAgICB0aGlzLmxvY2FsU3RvcmFnZUtleSA9IHRoaXMuYXBwQ29uZmlnLmdldENvbmZpZ3VyYXRpb24oKS51dWlkO1xuICAgIHRoaXMuZGVmYXVsdExvY2FsZSA9IHRoaXMuYXBwQ29uZmlnLmdldENvbmZpZ3VyYXRpb24oKS5kZWZhdWx0TG9jYWxlO1xuICB9XG5cbiAgcHVibGljIHN0b3JlTGFuZ3VhZ2UobGFuZ3VhZ2U6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChsYW5ndWFnZSkge1xuICAgICAgY29uc3QgZGF0YVN0ciA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMubG9jYWxTdG9yYWdlS2V5KTtcbiAgICAgIGNvbnN0IGRhdGEgPSAoZGF0YVN0ciAmJiBkYXRhU3RyLmxlbmd0aCA+IDApID8gSlNPTi5wYXJzZShkYXRhU3RyKSA6IHt9O1xuICAgICAgZGF0YVtDb2Rlcy5MQU5HVUFHRV9LRVldID0gbGFuZ3VhZ2U7XG4gICAgICB0cnkge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmxvY2FsU3RvcmFnZUtleSwgSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiQ2Fubm90IHNldCBuZXcgaXRlbSBpbiBsb2NhbFN0b3JhZ2UuIEVycm9yOiBcIiArIGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRTdG9yZWRMYW5ndWFnZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGRhdGFTdHIgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmxvY2FsU3RvcmFnZUtleSk7XG4gICAgcmV0dXJuIGRhdGFTdHIgPyBKU09OLnBhcnNlKGRhdGFTdHIpW0NvZGVzLkxBTkdVQUdFX0tFWV0gOiB2b2lkIDA7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2hlY2tFeGlzdGluZ0xhbmdGaWxlKGxhbmc6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICBpZiAoc2VsZi5leGlzdGluZ0xhbmdGaWxlcy5pbmRleE9mKGxhbmcpICE9PSAtMSkge1xuICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBsb2NhbGVBc3NldHNQYXRoID0gKHRoaXMubmd4VHJhbnNsYXRlU2VydmljZS5jdXJyZW50TG9hZGVyIGFzIGFueSkucHJlZml4O1xuICAgICAgY29uc3QgbG9jYWxlQXNzZXRzRXh0ZW5zaW9uID0gKHRoaXMubmd4VHJhbnNsYXRlU2VydmljZS5jdXJyZW50TG9hZGVyIGFzIGFueSkuc3VmZml4O1xuICAgICAgc2VsZi5odHRwQ2xpZW50LmdldChsb2NhbGVBc3NldHNQYXRoICsgbGFuZyArIGxvY2FsZUFzc2V0c0V4dGVuc2lvbikuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaWYgKHNlbGYuZXhpc3RpbmdMYW5nRmlsZXMuaW5kZXhPZihsYW5nKSA9PT0gLTEpIHtcbiAgICAgICAgICBzZWxmLmV4aXN0aW5nTGFuZ0ZpbGVzLnB1c2gobGFuZyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gSTE4TiBGaWxlIGxvYWRlZCBzdWNjZXNzZnVsbHlcbiAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgIH0sICgpID0+IHtcbiAgICAgICAgLy8gSTE4TiBGaWxlIGZhaWxlZCB0byBsb2FkXG4gICAgICAgIGlmIChzZWxmLm5vdEZvdW5kTGFuZy5pbmRleE9mKGxhbmcpID09PSAtMSkge1xuICAgICAgICAgIHNlbGYubm90Rm91bmRMYW5nLnB1c2gobGFuZyk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXREZWZhdWx0TGFuZyhsYW5nOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLm5neFRyYW5zbGF0ZVNlcnZpY2UuZGVmYXVsdExhbmcgPSBsYW5nO1xuICAgIHRoaXMuY2hlY2tFeGlzdGluZ0xhbmdGaWxlKGxhbmcpLnRoZW4oKGV4aXN0cykgPT4ge1xuICAgICAgaWYgKCFleGlzdHMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRGVmYXVsdCBsYW5ndWFnZSgnICsgbGFuZyArICcpIGhhcyBubyBidW5kbGUgZmlsZSBkZWZpbmVkJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0KHRleHQ6IHN0cmluZywgdmFsdWVzOiBhbnlbXSA9IFtdKTogc3RyaW5nIHtcbiAgICBsZXQgdGV4dFRyYW5zbGF0ZWQ7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJ1bmRsZSA9IHRoaXMubmd4VHJhbnNsYXRlU2VydmljZS5nZXQodGV4dCwgdmFsdWVzKTtcbiAgICAgIGlmIChidW5kbGUpIHtcbiAgICAgICAgYnVuZGxlLnN1YnNjcmliZSh4ID0+IHRleHRUcmFuc2xhdGVkID0geCk7XG4gICAgICB9XG4gICAgICB0ZXh0VHJhbnNsYXRlZCA9IHRleHRUcmFuc2xhdGVkID09PSB0ZXh0ID8gdW5kZWZpbmVkIDogdGV4dFRyYW5zbGF0ZWQ7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGV4dFRyYW5zbGF0ZWQgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmICghdGV4dFRyYW5zbGF0ZWQpIHtcbiAgICAgIGNvbnN0IGJ1bmRsZSA9IENPUkVfVFJBTlNMQVRJT05TLk1BUFt0aGlzLm5neFRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmddIHx8IENPUkVfVFJBTlNMQVRJT05TLk1BUFt0aGlzLmRlZmF1bHRMb2NhbGVdIHx8IENPUkVfVFJBTlNMQVRJT05TLk1BUFt0aGlzLkRFRkFVTFRfTEFOR107XG4gICAgICBpZiAoYnVuZGxlICYmIGJ1bmRsZVt0ZXh0XSkge1xuICAgICAgICB0ZXh0VHJhbnNsYXRlZCA9IGJ1bmRsZVt0ZXh0XTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRleHRUcmFuc2xhdGVkID0gdGV4dDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRleHRUcmFuc2xhdGVkO1xuICB9XG5cbiAgcHVibGljIHNldEFwcExhbmcobGFuZzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBvYnNlcnZhYmxlID0gbmV3IE9ic2VydmFibGUob2JzZXJ2ZXIgPT4ge1xuICAgICAgdGhpcy51c2UobGFuZywgb2JzZXJ2ZXIpO1xuICAgIH0pO1xuICAgIHJldHVybiBvYnNlcnZhYmxlO1xuICB9XG5cbiAgcHVibGljIHVzZShsYW5nOiBzdHJpbmcsIG9ic2VydmVyPzogU3Vic2NyaWJlcjxhbnk+KTogdm9pZCB7XG4gICAgaWYgKGxhbmcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgbmV3TGFuZyA9IGxhbmcgfHwgdGhpcy5ERUZBVUxUX0xBTkc7XG4gICAgICAvLyBzZXR0aW5nIGxhbmcgZm9yIGluaXRpYWxpeklORyBtb21lbnQgYW5kIG90aGVyIGNvbXBvbmVudHNcbiAgICAgIHRoaXMucHJvcGFnYXRlTGFuZyhuZXdMYW5nLCB7fSwgb2JzZXJ2ZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNoZWNrRXhpc3RpbmdMYW5nRmlsZShsYW5nKS50aGVuKChleGlzdHMpID0+IHtcbiAgICAgICAgbGV0IG5ld0xhbmcgPSBsYW5nO1xuICAgICAgICBpZiAoIWV4aXN0cykge1xuICAgICAgICAgIG5ld0xhbmcgPSBVdGlsLmlzRGVmaW5lZCh0aGlzLmFwcENvbmZpZ1snX2NvbmZpZyddWydkZWZhdWx0TG9jYWxlJ10pID8gdGhpcy5hcHBDb25maWdbJ19jb25maWcnXVsnZGVmYXVsdExvY2FsZSddIDogdGhpcy5uZ3hUcmFuc2xhdGVTZXJ2aWNlLmdldERlZmF1bHRMYW5nKCk7XG4gICAgICAgICAgY29uc3QgdHJhbnNsYXRpb25zID0gQ09SRV9UUkFOU0xBVElPTlMuTUFQW25ld0xhbmddIHx8IENPUkVfVFJBTlNMQVRJT05TLk1BUFt0aGlzLkRFRkFVTFRfTEFOR107XG4gICAgICAgICAgY29uc3QgbXNnID0gdHJhbnNsYXRpb25zWydNRVNTQUdFUy5FUlJPUl9NSVNTSU5HX0xBTkcnXTtcbiAgICAgICAgICB0aGlzLmluamVjdG9yLmdldChNYXRTbmFja0Jhcikub3Blbihtc2csICcgJywge1xuICAgICAgICAgICAgZHVyYXRpb246IDI1MDBcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm5neFRyYW5zbGF0ZVNlcnZpY2UudXNlKG5ld0xhbmcpLnN1YnNjcmliZShcbiAgICAgICAgICByZXMgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdG9yZUxhbmd1YWdlKG5ld0xhbmcpO1xuICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVMYW5nKG5ld0xhbmcsIHJlcywgb2JzZXJ2ZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBwcm9wYWdhdGVMYW5nKGxhbmc6IHN0cmluZywgbGFuZ1Jlcz86IGFueSwgb2JzZXJ2ZXI/OiBTdWJzY3JpYmVyPGFueT4pIHtcbiAgICBjb25zdCBjb3JlQnVuZGxlID0gQ09SRV9UUkFOU0xBVElPTlMuTUFQW2xhbmcgfHwgdGhpcy5ERUZBVUxUX0xBTkddO1xuICAgIGlmIChjb3JlQnVuZGxlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG1peGVkID0gT2JqZWN0LmFzc2lnbih7fSwgY29yZUJ1bmRsZSwgbGFuZ1Jlcyk7XG4gICAgICB0aGlzLm5neFRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRpb25zW2xhbmddID0gbWl4ZWQ7XG4gICAgfVxuICAgIHRoaXMubW9tZW50U2VydmljZS5sb2FkKGxhbmcpO1xuICAgIE9ic2VydmFibGVXcmFwcGVyLmNhbGxFbWl0KHRoaXMub25MYW5ndWFnZUNoYW5nZWQsIGxhbmcpO1xuICAgIGlmIChvYnNlcnZlcikge1xuICAgICAgb2JzZXJ2ZXIubmV4dChsYW5nUmVzKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0Q3VycmVudExhbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMubmd4VHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZztcbiAgfVxuXG4gIHB1YmxpYyBnZXRCcm93c2VyTGFuZygpIHtcbiAgICAvLyBjb3B5aW5nIHRoaXMubmd4VHJhbnNsYXRlU2VydmljZS5nZXRCcm93c2VyTGFuZygpIGJ1dCB3aXRoIGEgZml4IGZvciBkZWZhdWx0IHNlbGVjdGVkIGxhbmd1YWdlIChicm93c2VyTGFuZylcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIHdpbmRvdy5uYXZpZ2F0b3IgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCBuYXZpZ2F0b3I6IGFueSA9IHdpbmRvdy5uYXZpZ2F0b3I7XG4gICAgbGV0IGJyb3dzZXJMYW5nID0gbmF2aWdhdG9yLmxhbmd1YWdlcyA/IG5hdmlnYXRvci5sYW5ndWFnZXNbMF0gOiBudWxsO1xuICAgIGJyb3dzZXJMYW5nID0gbmF2aWdhdG9yLmxhbmd1YWdlIHx8IGJyb3dzZXJMYW5nIHx8IG5hdmlnYXRvci5icm93c2VyTGFuZ3VhZ2UgfHwgbmF2aWdhdG9yLnVzZXJMYW5ndWFnZTtcbiAgICBpZiAoYnJvd3NlckxhbmcuaW5kZXhPZignLScpICE9PSAtMSkge1xuICAgICAgYnJvd3NlckxhbmcgPSBicm93c2VyTGFuZy5zcGxpdCgnLScpWzBdO1xuICAgIH1cbiAgICBpZiAoYnJvd3NlckxhbmcuaW5kZXhPZignXycpICE9PSAtMSkge1xuICAgICAgYnJvd3NlckxhbmcgPSBicm93c2VyTGFuZy5zcGxpdCgnXycpWzBdO1xuICAgIH1cbiAgICByZXR1cm4gYnJvd3Nlckxhbmc7XG4gIH1cblxufVxuIl19
|
|
@@ -44,10 +44,10 @@ export class OLoadFilterDialogComponent {
|
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
OLoadFilterDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OLoadFilterDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
47
|
-
OLoadFilterDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: OLoadFilterDialogComponent, selector: "o-load-filter-dialog", viewQueries: [{ propertyName: "filterList", first: true, predicate: MatSelectionList, descendants: true, static: true }], ngImport: i0, template: "<span mat-dialog-title>{{ 'TABLE.BUTTONS.FILTER_LOAD' | oTranslate }}</span>\n<mat-dialog-content fxLayout=\"column\">\n <div mat-subheader>{{ 'TABLE.DIALOG.LOAD_FILTER' | oTranslate }}</div>\n <mat-selection-list #filterList
|
|
47
|
+
OLoadFilterDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: OLoadFilterDialogComponent, selector: "o-load-filter-dialog", viewQueries: [{ propertyName: "filterList", first: true, predicate: MatSelectionList, descendants: true, static: true }], ngImport: i0, template: "<span mat-dialog-title>{{ 'TABLE.BUTTONS.FILTER_LOAD' | oTranslate }}</span>\n<mat-dialog-content fxLayout=\"column\">\n <div mat-subheader>{{ 'TABLE.DIALOG.LOAD_FILTER' | oTranslate }}</div>\n <mat-selection-list #filterList class=\"o-table-load-filter-dialog-list\">\n <mat-list-option *ngFor=\"let filter of filters \" [value]=\"filter.name\" checkboxPosition=\"before\">\n <span matListItemTitle class=\"o-table-load-filter-dialog-list-title\">{{ filter.name }}</span>\n <span matListItemLine>{{ filter.description }}</span>\n </mat-list-option>\n <mat-list-item *ngIf=\"filters.length === 0\">\n <span class=\"empty-filter-list\">{{ 'TABLE.DIALOG.EMPTY_FILTER_LIST' | oTranslate }}</span>\n </mat-list-item>\n </mat-selection-list>\n</mat-dialog-content>\n\n<mat-dialog-actions align=\"end\">\n <button type=\"button\" mat-stroked-button [disabled]=\"filterList.selectedOptions.selected.length!==1\"\n (click)=\"removeFilter(filterList.selectedOptions.selected[0].value)\" class=\"o-button-danger\">{{ 'DELETE' | oTranslate }}</button>\n <span fxFlex></span>\n <button type=\"button\" mat-stroked-button [mat-dialog-close]=\"false\" class=\"o-button-default cancel\">{{ 'CANCEL' | oTranslate }}</button>\n <button type=\"button\" mat-stroked-button [mat-dialog-close]=\"true\" [disabled]=\"filterList.selectedOptions.selected.length!==1\"\n class=\"o-button-primary\">\n {{'TABLE.BUTTONS.APPLY' | oTranslate }}\n </button>\n</mat-dialog-actions>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i3.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i5.MatSelectionList, selector: "mat-selection-list", inputs: ["color", "compareWith", "multiple", "hideSingleSelectionIndicator", "disabled"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { kind: "component", type: i5.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "component", type: i5.MatListOption, selector: "mat-list-option", inputs: ["togglePosition", "checkboxPosition", "color", "value", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }, { kind: "directive", type: i5.MatListSubheaderCssMatStyler, selector: "[mat-subheader], [matSubheader]" }, { kind: "directive", type: i5.MatListItemLine, selector: "[matListItemLine]" }, { kind: "directive", type: i5.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "pipe", type: i6.OTranslatePipe, name: "oTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
48
48
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OLoadFilterDialogComponent, decorators: [{
|
|
49
49
|
type: Component,
|
|
50
|
-
args: [{ selector: 'o-load-filter-dialog', changeDetection: ChangeDetectionStrategy.OnPush, template: "<span mat-dialog-title>{{ 'TABLE.BUTTONS.FILTER_LOAD' | oTranslate }}</span>\n<mat-dialog-content fxLayout=\"column\">\n <div mat-subheader>{{ 'TABLE.DIALOG.LOAD_FILTER' | oTranslate }}</div>\n <mat-selection-list #filterList
|
|
50
|
+
args: [{ selector: 'o-load-filter-dialog', changeDetection: ChangeDetectionStrategy.OnPush, template: "<span mat-dialog-title>{{ 'TABLE.BUTTONS.FILTER_LOAD' | oTranslate }}</span>\n<mat-dialog-content fxLayout=\"column\">\n <div mat-subheader>{{ 'TABLE.DIALOG.LOAD_FILTER' | oTranslate }}</div>\n <mat-selection-list #filterList class=\"o-table-load-filter-dialog-list\">\n <mat-list-option *ngFor=\"let filter of filters \" [value]=\"filter.name\" checkboxPosition=\"before\">\n <span matListItemTitle class=\"o-table-load-filter-dialog-list-title\">{{ filter.name }}</span>\n <span matListItemLine>{{ filter.description }}</span>\n </mat-list-option>\n <mat-list-item *ngIf=\"filters.length === 0\">\n <span class=\"empty-filter-list\">{{ 'TABLE.DIALOG.EMPTY_FILTER_LIST' | oTranslate }}</span>\n </mat-list-item>\n </mat-selection-list>\n</mat-dialog-content>\n\n<mat-dialog-actions align=\"end\">\n <button type=\"button\" mat-stroked-button [disabled]=\"filterList.selectedOptions.selected.length!==1\"\n (click)=\"removeFilter(filterList.selectedOptions.selected[0].value)\" class=\"o-button-danger\">{{ 'DELETE' | oTranslate }}</button>\n <span fxFlex></span>\n <button type=\"button\" mat-stroked-button [mat-dialog-close]=\"false\" class=\"o-button-default cancel\">{{ 'CANCEL' | oTranslate }}</button>\n <button type=\"button\" mat-stroked-button [mat-dialog-close]=\"true\" [disabled]=\"filterList.selectedOptions.selected.length!==1\"\n class=\"o-button-primary\">\n {{'TABLE.BUTTONS.APPLY' | oTranslate }}\n </button>\n</mat-dialog-actions>\n" }]
|
|
51
51
|
}], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
52
52
|
type: Inject,
|
|
53
53
|
args: [MAT_DIALOG_DATA]
|
|
@@ -55,4 +55,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
55
55
|
type: ViewChild,
|
|
56
56
|
args: [MatSelectionList, { static: true }]
|
|
57
57
|
}] } });
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1sb2FkLWZpbHRlci1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL2ZpbHRlci9sb2FkLWZpbHRlci9vLWxvYWQtZmlsdGVyLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvZmlsdGVyL2xvYWQtZmlsdGVyL28tbG9hZC1maWx0ZXItZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixRQUFRLEVBR1IsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekUsT0FBTyxFQUFpQixnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXpFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7Ozs7QUFRcEUsTUFBTSxPQUFPLDBCQUEwQjtJQVdyQyxZQUNTLFNBQW1ELEVBQ2pDLElBQTJCLEVBQzFDLFFBQWtCO1FBRnJCLGNBQVMsR0FBVCxTQUFTLENBQTBDO1FBRWhELGFBQVEsR0FBUixRQUFRLENBQVU7UUFWOUIsWUFBTyxHQUEwQixFQUFFLENBQUM7UUFFcEMsYUFBUSxHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBVWxELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBZ0IsYUFBb0MsQ0FBQyxDQUFDO1FBQzVGLElBQUk7WUFDRixJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFvQixpQkFBNEMsQ0FBQyxDQUFDO1NBQzlGO1FBQUMsT0FBTyxDQUFDLEVBQUU7U0FFWDtJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLEdBQUcsSUFBSSxjQUFjLENBQWdCLEtBQUssQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBOEI7UUFDeEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDekIsQ0FBQztJQUVELHFCQUFxQjtRQUNuQixNQUFNLFFBQVEsR0FBb0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDO1FBQzNFLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELFlBQVksQ0FBQyxVQUFrQjtRQUM3QixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsb0NBQW9DLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDeEYsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7YUFDekI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O3VIQTdDVSwwQkFBMEIsOENBYTNCLGVBQWU7MkdBYmQsMEJBQTBCLHdHQUUxQixnQkFBZ0IsOERDekI3QiwwOUNBd0JBOzJGRERhLDBCQUEwQjtrQkFMdEMsU0FBUzsrQkFDRSxzQkFBc0IsbUJBRWYsdUJBQXVCLENBQUMsTUFBTTs7MEJBZTVDLE1BQU07MkJBQUMsZUFBZTttRUFYc0IsVUFBVTtzQkFBeEQsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBPbkluaXQsXG4gIFR5cGUsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdExpc3RPcHRpb24sIE1hdFNlbGVjdGlvbkxpc3QgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9saXN0JztcblxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlJztcbmltcG9ydCB7IE9UYWJsZUZpbHRlcnNTdGF0dXMgfSBmcm9tICcuLi8uLi8uLi8uLi90eXBlcy90YWJsZS9vLXRhYmxlLWZpbHRlci1zdGF0dXMudHlwZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tbG9hZC1maWx0ZXItZGlhbG9nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL28tbG9hZC1maWx0ZXItZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgT0xvYWRGaWx0ZXJEaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBWaWV3Q2hpbGQoTWF0U2VsZWN0aW9uTGlzdCwgeyBzdGF0aWM6IHRydWUgfSkgZmlsdGVyTGlzdDogTWF0U2VsZWN0aW9uTGlzdDtcblxuICBmaWx0ZXJzOiBPVGFibGVGaWx0ZXJzU3RhdHVzW10gPSBbXTtcblxuICBvbkRlbGV0ZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHJvdGVjdGVkIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2U7XG4gIHByb3RlY3RlZCBjZDogQ2hhbmdlRGV0ZWN0b3JSZWY7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPE9Mb2FkRmlsdGVyRGlhbG9nQ29tcG9uZW50PixcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgZGF0YTogT1RhYmxlRmlsdGVyc1N0YXR1c1tdLFxuICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3JcbiAgKSB7XG4gICAgdGhpcy5sb2FkRmlsdGVycyhkYXRhKTtcbiAgICB0aGlzLmRpYWxvZ1NlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldDxEaWFsb2dTZXJ2aWNlPihEaWFsb2dTZXJ2aWNlIGFzIFR5cGU8RGlhbG9nU2VydmljZT4pO1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmNkID0gdGhpcy5pbmplY3Rvci5nZXQ8Q2hhbmdlRGV0ZWN0b3JSZWY+KENoYW5nZURldGVjdG9yUmVmIGFzIFR5cGU8Q2hhbmdlRGV0ZWN0b3JSZWY+KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBubyBwYXJlbnQgZm9ybVxuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZmlsdGVyTGlzdC5zZWxlY3RlZE9wdGlvbnMgPSBuZXcgU2VsZWN0aW9uTW9kZWw8TWF0TGlzdE9wdGlvbj4oZmFsc2UpO1xuICB9XG5cbiAgbG9hZEZpbHRlcnMoZmlsdGVyczogT1RhYmxlRmlsdGVyc1N0YXR1c1tdKTogdm9pZCB7XG4gICAgdGhpcy5maWx0ZXJzID0gZmlsdGVycztcbiAgfVxuXG4gIGdldFNlbGVjdGVkRmlsdGVyTmFtZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHNlbGVjdGVkOiBNYXRMaXN0T3B0aW9uW10gPSB0aGlzLmZpbHRlckxpc3Quc2VsZWN0ZWRPcHRpb25zLnNlbGVjdGVkO1xuICAgIHJldHVybiBzZWxlY3RlZC5sZW5ndGggPyBzZWxlY3RlZFswXS52YWx1ZSA6IHZvaWQgMDtcbiAgfVxuXG4gIHJlbW92ZUZpbHRlcihmaWx0ZXJOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuY29uZmlybSgnQ09ORklSTScsICdUQUJMRS5ESUFMT0cuQ09ORklSTV9SRU1PVkVfRklMVEVSJykudGhlbihyZXN1bHQgPT4ge1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICB0aGlzLm9uRGVsZXRlLmVtaXQoZmlsdGVyTmFtZSk7XG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbn1cbiIsIjxzcGFuIG1hdC1kaWFsb2ctdGl0bGU+e3sgJ1RBQkxFLkJVVFRPTlMuRklMVEVSX0xPQUQnIHwgb1RyYW5zbGF0ZSB9fTwvc3Bhbj5cbjxtYXQtZGlhbG9nLWNvbnRlbnQgZnhMYXlvdXQ9XCJjb2x1bW5cIj5cbiAgPGRpdiBtYXQtc3ViaGVhZGVyPnt7ICdUQUJMRS5ESUFMT0cuTE9BRF9GSUxURVInIHwgb1RyYW5zbGF0ZSB9fTwvZGl2PlxuICA8bWF0LXNlbGVjdGlvbi1saXN0ICNmaWx0ZXJMaXN0IGNsYXNzPVwiby10YWJsZS1sb2FkLWZpbHRlci1kaWFsb2ctbGlzdFwiPlxuICAgIDxtYXQtbGlzdC1vcHRpb24gKm5nRm9yPVwibGV0IGZpbHRlciBvZiBmaWx0ZXJzIFwiIFt2YWx1ZV09XCJmaWx0ZXIubmFtZVwiIGNoZWNrYm94UG9zaXRpb249XCJiZWZvcmVcIj5cbiAgICAgIDxzcGFuIG1hdExpc3RJdGVtVGl0bGUgY2xhc3M9XCJvLXRhYmxlLWxvYWQtZmlsdGVyLWRpYWxvZy1saXN0LXRpdGxlXCI+e3sgZmlsdGVyLm5hbWUgfX08L3NwYW4+XG4gICAgICA8c3BhbiBtYXRMaXN0SXRlbUxpbmU+e3sgZmlsdGVyLmRlc2NyaXB0aW9uIH19PC9zcGFuPlxuICAgIDwvbWF0LWxpc3Qtb3B0aW9uPlxuICAgIDxtYXQtbGlzdC1pdGVtICpuZ0lmPVwiZmlsdGVycy5sZW5ndGggPT09IDBcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZW1wdHktZmlsdGVyLWxpc3RcIj57eyAnVEFCTEUuRElBTE9HLkVNUFRZX0ZJTFRFUl9MSVNUJyB8IG9UcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgPC9tYXQtbGlzdC1pdGVtPlxuICA8L21hdC1zZWxlY3Rpb24tbGlzdD5cbjwvbWF0LWRpYWxvZy1jb250ZW50PlxuXG48bWF0LWRpYWxvZy1hY3Rpb25zIGFsaWduPVwiZW5kXCI+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1zdHJva2VkLWJ1dHRvbiBbZGlzYWJsZWRdPVwiZmlsdGVyTGlzdC5zZWxlY3RlZE9wdGlvbnMuc2VsZWN0ZWQubGVuZ3RoIT09MVwiXG4gICAgKGNsaWNrKT1cInJlbW92ZUZpbHRlcihmaWx0ZXJMaXN0LnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZFswXS52YWx1ZSlcIiBjbGFzcz1cIm8tYnV0dG9uLWRhbmdlclwiPnt7ICdERUxFVEUnIHwgb1RyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuICA8c3BhbiBmeEZsZXg+PC9zcGFuPlxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtc3Ryb2tlZC1idXR0b24gW21hdC1kaWFsb2ctY2xvc2VdPVwiZmFsc2VcIiBjbGFzcz1cIm8tYnV0dG9uLWRlZmF1bHQgY2FuY2VsXCI+e3sgJ0NBTkNFTCcgfCBvVHJhbnNsYXRlIH19PC9idXR0b24+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1zdHJva2VkLWJ1dHRvbiBbbWF0LWRpYWxvZy1jbG9zZV09XCJ0cnVlXCIgW2Rpc2FibGVkXT1cImZpbHRlckxpc3Quc2VsZWN0ZWRPcHRpb25zLnNlbGVjdGVkLmxlbmd0aCE9PTFcIlxuICAgIGNsYXNzPVwiby1idXR0b24tcHJpbWFyeVwiPlxuICAgIHt7J1RBQkxFLkJVVFRPTlMuQVBQTFknIHwgb1RyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cbjwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuIl19
|
|
@@ -261,6 +261,10 @@ export class Util {
|
|
|
261
261
|
const L = cuList.join('');
|
|
262
262
|
return L;
|
|
263
263
|
}
|
|
264
|
+
static isArrayEqual(array1, array2) {
|
|
265
|
+
return array1.length === array2.length && array1.every((v, i) => v === array2[i]);
|
|
266
|
+
}
|
|
267
|
+
;
|
|
264
268
|
static differenceArrays(array1, array2) {
|
|
265
269
|
const difference = array1.filter(obj => {
|
|
266
270
|
return !array2.some(obj2 => {
|
|
@@ -408,4 +412,4 @@ export class Util {
|
|
|
408
412
|
}
|
|
409
413
|
}
|
|
410
414
|
Util.columnAggregates = ['sum', 'count', 'avg', 'min', 'max'];
|
|
411
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi91dGlsL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQU8xRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFHaEMsTUFBTSxPQUFPLElBQUk7SUFJZixNQUFNLENBQUMsUUFBUSxDQUFDLEdBQVE7UUFDdEIsTUFBTSxPQUFPLEdBQUcsT0FBTyxHQUFHLENBQUM7UUFDM0IsT0FBTyxPQUFPLEtBQUssUUFBUSxDQUFDO0lBQzlCLENBQUM7SUFFRCxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQVE7UUFDckIsT0FBTyxHQUFHLFlBQVksS0FBSyxDQUFDO0lBQzlCLENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQWEsRUFBRSxZQUFzQjtRQUN2RCxJQUFJLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUUsS0FBSyxLQUFLLENBQUMsRUFBRTtZQUNwRyxPQUFPLElBQUksQ0FBQztTQUNiO2FBQU0sSUFBSSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLE9BQU8sSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUU7WUFDM0csT0FBTyxLQUFLLENBQUM7U0FDZDthQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMs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ciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgZnJvbSwgaXNPYnNlcnZhYmxlLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBJRGF0YVNlcnZpY2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2RhdGEtc2VydmljZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSUZvcm1EYXRhQ29tcG9uZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9mb3JtLWRhdGEtY29tcG9uZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBJUGVybWlzc2lvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wZXJtaXNzaW9ucy1zZXJ2aWNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBPRGF0ZVZhbHVlVHlwZSB9IGZyb20gJy4uL3R5cGVzL28tZGF0ZS12YWx1ZS50eXBlJztcbmltcG9ydCB7IE9Db25maWd1cmVTZXJ2aWNlQXJncyB9IGZyb20gJy4uL3R5cGVzL2NvbmZpZ3VyZS1zZXJ2aWNlLWFyZ3MudHlwZSc7XG5pbXBvcnQgeyBCYXNlNjQgfSBmcm9tICcuL2Jhc2U2NCc7XG5pbXBvcnQgeyBDb2RlcyB9IGZyb20gJy4vY29kZXMnO1xuaW1wb3J0IHsgT0NvbmZpZ3VyZU1lc3NhZ2VTZXJ2aWNlQXJncyB9IGZyb20gJy4uL3R5cGVzL2NvbmZpZ3VyZS1tZXNzYWdlLXNlcnZpY2UtYXJncy50eXBlJztcblxuZXhwb3J0IGNsYXNzIFV0aWwge1xuXG4gIHN0YXRpYyBjb2x1bW5BZ2dyZWdhdGVzID0gWydzdW0nLCAnY291bnQnLCAnYXZnJywgJ21pbicsICdtYXgnXTtcblxuICBzdGF0aWMgaXNPYmplY3QodmFsOiBhbnkpOiBib29sZWFuIHtcbiAgICBjb25zdCB2YWxUeXBlID0gdHlwZW9mIHZhbDtcbiAgICByZXR1cm4gdmFsVHlwZSA9PT0gJ29iamVjdCc7XG4gIH1cblxuICBzdGF0aWMgaXNBcnJheSh2YWw6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB2YWwgaW5zdGFuY2VvZiBBcnJheTtcbiAgfVxuXG4gIHN0YXRpYyBwYXJzZUJvb2xlYW4odmFsdWU6IHN0cmluZywgZGVmYXVsdFZhbHVlPzogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIGlmICgodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykgJiYgKHZhbHVlLnRvVXBwZXJDYXNlKCkgPT09ICdUUlVFJyB8fCB2YWx1ZS50b1VwcGVyQ2FzZSgpID09PSAnWUVTJykpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZiAoKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpICYmICh2YWx1ZS50b1VwcGVyQ2FzZSgpID09PSAnRkFMU0UnIHx8IHZhbHVlLnRvVXBwZXJDYXNlKCkgPT09ICdOTycpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChVdGlsLmlzRGVmaW5lZChkZWZhdWx0VmFsdWUpKSB7XG4gICAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzdGF0aWMgcGFyc2VBcnJheSh2YWx1ZTogc3RyaW5nLCBleGNsdWRlUmVwZWF0ZWQ6IGJvb2xlYW4gPSBmYWxzZSk6IHN0cmluZ1tdIHtcbiAgICBsZXQgcmVzdWx0ID0gW107XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICByZXN1bHQgPSB2YWx1ZS5zcGxpdChDb2Rlcy5BUlJBWV9JTlBVVF9TRVBBUkFUT1IpO1xuICAgIH1cbiAgICBpZiAoZXhjbHVkZVJlcGVhdGVkICYmIHJlc3VsdC5sZW5ndGggPiAwKSB7XG4gICAgICByZXN1bHQgPSBBcnJheS5mcm9tKG5ldyBTZXQocmVzdWx0KSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBvYmplY3Qgd2l0aCBwYXJlbnQga2V5cyBlcXVpdmFsZW5jZXMuXG4gICAqIEBwYXJhbSAgcEtleXNBcnJheSBBcnJheSBvZiBzdHJpbmdzLiBBY2NlcHRlZCBmb3JtYXQ6IGtleSB8IGtleTphbGlhc1xuICAgKiBAcmV0dXJucyBPYmplY3RcbiAgICovXG4gIHN0YXRpYyBwYXJzZVBhcmVudEtleXNFcXVpdmFsZW5jZXMocEtleXNBcnJheTogQXJyYXk8c3RyaW5nPiwgc2VwYXJhdG9yOiBzdHJpbmcgPSAnOicpOiBvYmplY3Qge1xuICAgIGNvbnN0IGVxdWl2YWxlbmNlcyA9IHt9O1xuICAgIGlmIChwS2V5c0FycmF5ICYmIHBLZXlzQXJyYXkubGVuZ3RoID4gMCkge1xuICAgICAgcEtleXNBcnJheS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICBjb25zdCBhdXggPSBpdGVtLnNwbGl0KHNlcGFyYXRvcik7XG4gICAgICAgIGlmIChhdXggJiYgYXV4Lmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgIGlmICgvLitcXFsuK1xcXS8udGVzdChhdXhbMV0pKSB7XG4gICAgICAgICAgICBjb25zdCBlcXVpdktleSA9IGF1eFsxXS5zdWJzdHJpbmcoMCwgYXV4WzFdLmluZGV4T2YoJ1snKSk7XG4gICAgICAgICAgICBjb25zdCBlcXVpdlZhbHVlID0gYXV4WzFdLnN1YnN0cmluZyhhdXhbMV0uaW5kZXhPZignWycpICsgMSwgYXV4WzFdLmluZGV4T2YoJ10nKSk7XG4gICAgICAgICAgICBjb25zdCBlcXVpdiA9IHt9O1xuICAgICAgICAgICAgZXF1aXZbZXF1aXZLZXldID0gZXF1aXZWYWx1ZTtcbiAgICAgICAgICAgIGVxdWl2YWxlbmNlc1thdXhbMF1dID0gZXF1aXY7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVxdWl2YWxlbmNlc1thdXhbMF1dID0gYXV4WzFdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChhdXggJiYgYXV4Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgIGVxdWl2YWxlbmNlc1tpdGVtXSA9IGl0ZW07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZXF1aXZhbGVuY2VzO1xuICB9XG5cbiAgc3RhdGljIGVuY29kZVBhcmVudEtleXMocGFyZW50S2V5czogb2JqZWN0KTogc3RyaW5nIHtcbiAgICBsZXQgZW5jb2RlZDogc3RyaW5nID0gJyc7XG4gICAgaWYgKHBhcmVudEtleXMpIHtcbiAgICAgIGVuY29kZWQgPSBCYXNlNjQuZW5jb2RlKEpTT04uc3RyaW5naWZ5KHBhcmVudEtleXMpKTtcbiAgICB9XG4gICAgcmV0dXJuIGVuY29kZWQ7XG4gIH1cblxuICBzdGF0aWMgZGVjb2RlUGFyZW50S2V5cyhwYXJlbnRLZXlzOiBzdHJpbmcpOiBvYmplY3Qge1xuICAgIGxldCBkZWNvZGVkID0ge307XG4gICAgaWYgKHBhcmVudEtleXMgJiYgcGFyZW50S2V5cy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBkID0gQmFzZTY0LmRlY29kZShwYXJlbnRLZXlzKTtcbiAgICAgIGRlY29kZWQgPSBKU09OLnBhcnNlKGQpO1xuICAgIH1cbiAgICByZXR1cm4gZGVjb2RlZDtcbiAgfVxuXG4gIHN0YXRpYyBpc0FycmF5RW1wdHkoYXJyYXk6IGFueVtdKTogYm9vbGVhbiB7XG4gICAgaWYgKGFycmF5ICYmIGFycmF5Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHN0YXRpYyBpc09iamVjdEVtcHR5KG9iajogb2JqZWN0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKG9iaikubGVuZ3RoID09PSAwO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3ZXRoZXIgc3BlY2lmaWVkIHNlcnZpY2UgYXMgYXJndW1lbnQgaW1wbGVtZW50cyAnSURhdGFTZXJ2aWNlJyBpbnRlcmZhY2VcbiAgICogQHBhcmFtIGFyZyBUaGUgc2VydmljZSBpbnN0YW5jZSBmb3IgY2hlY2tpbmcuXG4gICAqIEByZXR1cm5zIGJvb2xlYW5cbiAgICovXG4gIHN0YXRpYyBpc0RhdGFTZXJ2aWNlKGFyZzogYW55KTogYXJnIGlzIElEYXRhU2VydmljZSB7XG4gICAgaWYgKGFyZyA9PT0gdW5kZWZpbmVkIHx8IGFyZyA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gKChhcmcgYXMgSURhdGFTZXJ2aWNlKS5nZXREZWZhdWx0U2VydmljZUNvbmZpZ3VyYXRpb24gIT09IHVuZGVmaW5lZCAmJlxuICAgICAgKGFyZyBhcyBJRGF0YVNlcnZpY2UpLmNvbmZpZ3VyZVNlcnZpY2UgIT09IHVuZGVmaW5lZCk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdldGhlciBzcGVjaWZpZWQgc2VydmljZSBhcyBhcmd1bWVudCBpbXBsZW1lbnRzICdJRGF0YVNlcnZpY2UnIGludGVyZmFjZVxuICAgKiBAcGFyYW0gYXJnIFRoZSBzZXJ2aWNlIGluc3RhbmNlIGZvciBjaGVja2luZy5cbiAgICogQHJldHVybnMgYm9vbGVhblxuICAgKi9cbiAgc3RhdGljIGlzUGVybWlzc2lvbnNTZXJ2aWNlKGFyZzogYW55KTogYXJnIGlzIElQZXJtaXNzaW9uc1NlcnZpY2Uge1xuICAgIGlmIChhcmcgPT09IHVuZGVmaW5lZCB8fCBhcmcgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuICgoYXJnIGFzIElQZXJtaXNzaW9uc1NlcnZpY2UpLmxvYWRQZXJtaXNzaW9ucyAhPT0gdW5kZWZpbmVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2V0aGVyIHNwZWNpZmllZCBjb21wb25lbnQgYXMgYXJndW1lbnQgaW1wbGVtZW50cyAnSUZvcm1EYXRhQ29tcG9uZW50JyBpbnRlcmZhY2VcbiAgICogQHBhcmFtIGFyZyBUaGUgY29tcG9uZW50IGluc3RhbmNlIGZvciBjaGVja2luZy5cbiAgICogQHJldHVybnMgYm9vbGVhblxuICAgKi9cbiAgc3RhdGljIGlzRm9ybURhdGFDb21wb25lbnQoYXJnOiBhbnkpOiBhcmcgaXMgSUZvcm1EYXRhQ29tcG9uZW50IHtcbiAgICBpZiAoYXJnID09PSB1bmRlZmluZWQgfHwgYXJnID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiAoKGFyZyBhcyBJRm9ybURhdGFDb21wb25lbnQpLmlzQXV0b21hdGljQmluZGluZyAhPT0gdW5kZWZpbmVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wYXJlIGlzIGVxdWFsIHR3byBvYmplY3RzXG4gICAqIEBwYXJhbSBhIE9iamVjdCAxXG4gICAqIEBwYXJhbSBiIE9iamVjdCAyXG4gICAqXG4gICAqL1xuICBzdGF0aWMgaXNFcXVpdmFsZW50KGEsIGIpIHtcbiAgICAvLyBDcmVhdGUgYXJyYXlzIG9mIHByb3BlcnR5IG5hbWVzXG4gICAgY29uc3QgYVByb3BzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoYSk7XG4gICAgY29uc3QgYlByb3BzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoYik7XG5cbiAgICAvLyBJZiBudW1iZXIgb2YgcHJvcGVydGllcyBpcyBkaWZmZXJlbnQsIG9iamVjdHMgYXJlIG5vdCBlcXVpdmFsZW50XG4gICAgaWYgKGFQcm9wcy5sZW5ndGggIT09IGJQcm9wcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFQcm9wcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgcHJvcE5hbWUgPSBhUHJvcHNbaV07XG4gICAgICAvLyBJZiB2YWx1ZXMgb2Ygc2FtZSBwcm9wZXJ0eSBhcmUgbm90IGVxdWFsLCBvYmplY3RzIGFyZSBub3QgZXF1aXZhbGVudFxuICAgICAgbGV0IGJWYWx1ZSA9IGJbcHJvcE5hbWVdO1xuICAgICAgaWYgKHR5cGVvZiBhW3Byb3BOYW1lXSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgY29uc3QgaW50QiA9IHBhcnNlSW50KGJWYWx1ZSwgMTApO1xuICAgICAgICBiVmFsdWUgPSBpc05hTihpbnRCKSA/IGJWYWx1ZSA6IGludEI7XG4gICAgICB9XG4gICAgICBpZiAoYVtwcm9wTmFtZV0gIT09IGJWYWx1ZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSWYgd2UgbWFkZSBpdCB0aGlzIGZhciwgb2JqZWN0cyBhcmUgY29uc2lkZXJlZCBlcXVpdmFsZW50XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBzdGF0aWMgZXF1YWxzKG8xOiBhbnksIG8yOiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAobzEgPT09IG8yKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKG8xID09PSBudWxsIHx8IG8yID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChvMSAhPT0gbzEgJiYgbzIgIT09IG8yKSB7XG4gICAgICAvLyBOYU4gPT09IE5hTlxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IHQxID0gdHlwZW9mIG8xO1xuICAgIGNvbnN0IHQyID0gdHlwZW9mIG8yO1xuICAgIGxldCBsZW5ndGg6IG51bWJlcjtcbiAgICBsZXQga2V5OiBhbnk7XG4gICAgbGV0IGtleVNldDogYW55O1xuICAgIGlmICh0MSA9PT0gdDIgJiYgdDEgPT09ICdvYmplY3QnKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShvMSkpIHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG8yKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBsZW5ndGggPSBvMS5sZW5ndGg7XG4gICAgICAgIGlmIChsZW5ndGggPT09IG8yLmxlbmd0aCkge1xuICAgICAgICAgIGZvciAoa2V5ID0gMDsga2V5IDwgbGVuZ3RoOyBrZXkrKykge1xuICAgICAgICAgICAgaWYgKCFVdGlsLmVxdWFscyhvMVtrZXldLCBvMltrZXldKSkge1xuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvMikpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAga2V5U2V0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgZm9yIChrZXkgaW4gbzEpIHtcbiAgICAgICAgICBpZiAoIVV0aWwuZXF1YWxzKG8xW2tleV0sIG8yW2tleV0pKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIGtleVNldFtrZXldID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGtleSBpbiBvMikge1xuICAgICAgICAgIGlmICghKGtleSBpbiBrZXlTZXQpICYmIHR5cGVvZiBvMltrZXldICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc3RhdGljIGlzRGVmaW5lZCh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsdWUgIT09IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgYSByYW5kb20gbnVtYmVyXG4gICovXG4gIHN0YXRpYyByYW5kb21OdW1iZXIoKSB7XG4gICAgY29uc3QgcmFuZG9tQXJyYXkgPSBuZXcgVWludDMyQXJyYXkoMSk7XG4gICAgd2luZG93LmNyeXB0by5nZXRSYW5kb21WYWx1ZXMocmFuZG9tQXJyYXkpO1xuICAgIHJldHVybiByYW5kb21BcnJheVswXTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHByb3ZpZGVkIHN0cmluZyBpbiBsb3dlcmNhc2UgYW5kIHdpdGhvdXQgYWNjZW50IG1hcmtzLlxuICAgKiBAcGFyYW0gdmFsdWUgdGhlIHRleHQgdG8gbm9ybWFsaXplXG4gICAqL1xuICBzdGF0aWMgbm9ybWFsaXplU3RyaW5nKHZhbHVlOiBzdHJpbmcsIHRvTG93ZXJDYXNlOiBib29sZWFuID0gdHJ1ZSk6IHN0cmluZyB7XG4gICAgaWYgKHZhbHVlICYmIHZhbHVlLmxlbmd0aCkge1xuICAgICAgbGV0IHJlc3VsdCA9IHZhbHVlLm5vcm1hbGl6ZSgnTkZEJykucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgJycpO1xuICAgICAgaWYgKHRvTG93ZXJDYXNlKSB7XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdC50b0xvd2VyQ2FzZSgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHByb3ZpZGVkIGFycmF5IGZsYXR0ZW5kLlxuICAgKiBAcGFyYW0gYXJyYXkgdGhlIGFycmF5IHRvIGZsYXRcbiAgICovXG4gIHN0YXRpYyBmbGF0dGVuKGFycmF5OiBBcnJheTxhbnk+KTogQXJyYXk8YW55PiB7XG4gICAgbGV0IGZsYXR0ZW5lZCA9IFtdO1xuICAgIGZvciAoY29uc3QgY3VycmVudCBvZiBhcnJheSkge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGN1cnJlbnQpKSB7XG4gICAgICAgIGZsYXR0ZW5lZC5wdXNoKGN1cnJlbnQpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3QgY2hpbGRDdXJyZW50IG9mIGN1cnJlbnQpIHtcbiAgICAgICAgZmxhdHRlbmVkLnB1c2goY2hpbGRDdXJyZW50KVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmxhdHRlbmVkXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGxpc3Qgd2l0aCBhbGwgdGhlIHZhbHVlcyBmcm9tIHRoZSBwcm92aWRlZCBvYmplY3QuXG4gICAqIEBwYXJhbSBvYmogdGhlIG9iamVjdFxuICAgKi9cbiAgc3RhdGljIGdldFZhbHVlc0Zyb21PYmplY3Qob2JqOiBvYmplY3QgPSB7fSk6IEFycmF5PGFueT4ge1xuICAgIGNvbnN0IGFycmF5OiBBcnJheTxhbnk+ID0gW107XG4gICAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBpZiAodHlwZW9mIG9ialtrZXldID09PSAnb2JqZWN0Jykge1xuICAgICAgICBhcnJheS5wdXNoKFV0aWwuZ2V0VmFsdWVzRnJvbU9iamVjdChvYmpba2V5XSkpO1xuICAgICAgfVxuICAgICAgYXJyYXkucHVzaChvYmpba2V5XSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIFV0aWwuZmxhdHRlbihhcnJheSk7XG4gIH1cblxuICBzdGF0aWMgcGFyc2VJY29uUG9zaXRpb24odmFsdWU6IHN0cmluZywgZGVmYXVsdFZhbHVlPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgcmVzdWx0ID0gZGVmYXVsdFZhbHVlIHx8IENvZGVzLklDT05fUE9TSVRJT05fTEVGVDtcbiAgICBjb25zdCBhdmFpbGFibGVQb3NpdGlvbnMgPSBbQ29kZXMuSUNPTl9QT1NJVElPTl9MRUZULCBDb2Rlcy5JQ09OX1BPU0lUSU9OX1JJR0hUXTtcbiAgICBpZiAodmFsdWUgJiYgdmFsdWUubGVuZ3RoKSB7XG4gICAgICByZXN1bHQgPSB2YWx1ZS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbiAgICBpZiAoYXZhaWxhYmxlUG9zaXRpb25zLmluZGV4T2YocmVzdWx0KSA9PT0gLTEpIHtcbiAgICAgIHJlc3VsdCA9IGRlZmF1bHRWYWx1ZSB8fCBDb2Rlcy5JQ09OX1BPU0lUSU9OX0xFRlQ7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBzdGF0aWMgY29weVRvQ2xpcGJvYXJkKGRhdGE6IHN0cmluZykge1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NvcHknLCAoZTogQ2xpcGJvYXJkRXZlbnQpID0+IHtcbiAgICAgIGUuY2xpcGJvYXJkRGF0YS5zZXREYXRhKCd0ZXh0L3BsYWluJywgZGF0YSk7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjb3B5JywgbnVsbCk7XG4gICAgfSk7XG4gICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2NvcHknKTtcbiAgfVxuXG4gIHN0YXRpYyBjaGVja1BpeGVsc1ZhbHVlU3RyaW5nKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoJ3B4JykgOiBmYWxzZTtcbiAgfVxuXG4gIHN0YXRpYyBleHRyYWN0UGl4ZWxzVmFsdWUodmFsdWU6IGFueSwgZGVmYXVsdFZhbHVlPzogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBsZXQgcmVzdWx0OiBudW1iZXIgPSB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInID8gdmFsdWUgOiB1bmRlZmluZWQ7XG4gICAgaWYgKFV0aWwuY2hlY2tQaXhlbHNWYWx1ZVN0cmluZyh2YWx1ZSkpIHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlRmxvYXQodmFsdWUuc3Vic3RyKDAsIHZhbHVlLmxlbmd0aCAtICdweCcubGVuZ3RoKSk7XG4gICAgICByZXN1bHQgPSBpc05hTihwYXJzZWQpID8gZGVmYXVsdFZhbHVlIDogcGFyc2VkO1xuICAgIH1cbiAgICByZXR1cm4gVXRpbC5pc0RlZmluZWQocmVzdWx0KSA/IHJlc3VsdCA6IGRlZmF1bHRWYWx1ZTtcbiAgfVxuICAvKipcbiAgICogQWRkZWQgY2xhc3MgJ2FjY2VudCcgaW4gPG1hdC1mb3JtLWZpZWxkPiBhbmQgc2V0IHRoZSBjb2xvciAgYWNjZW50IGluIHRoZSBpY29uc1xuICAgKiBAcGFyYW0gZWxSZWZcbiAgICogQHBhcmFtIG9JbnB1dHNPcHRpb25zXG4gICAqL1xuXG4gIHN0YXRpYyBwYXJzZU9JbnB1dHNPcHRpb25zKGVsUmVmLCBvSW5wdXRzT3B0aW9ucykge1xuXG4gICAgaWYgKG9JbnB1dHNPcHRpb25zLmljb25Db2xvciA9PT0gQ29kZXMuT19JTlBVVFNfT1BUSU9OU19DT0xPUl9BQ0NFTlQpIHtcbiAgICAgIGNvbnN0IG1hdEZvcm1GaWVsZEVMID0gZWxSZWYubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnbWF0LWZvcm0tZmllbGQnKVswXTtcbiAgICAgIGlmIChVdGlsLmlzRGVmaW5lZChtYXRGb3JtRmllbGRFTCkpIHtcbiAgICAgICAgbWF0Rm9ybUZpZWxkRUwuY2xhc3NMaXN0LmFkZCgnYWNjZW50Jyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cblxuICAvKipcbiAgICogIFJldHVybiBzdHJpbmcgd2l0aCBlc2NhcGVkIHNwZWNpYWwgY2hhcmFjdGVyXG4gICAqL1xuICBzdGF0aWMgZXNjYXBlU3BlY2lhbENoYXJhY3RlcihTOiBzdHJpbmcpOiBzdHJpbmcge1xuXG4gICAgY29uc3Qgc3RyID0gU3RyaW5nKFMpO1xuXG4gICAgY29uc3QgY3BMaXN0ID0gQXJyYXkuZnJvbShzdHJbU3ltYm9sLml0ZXJhdG9yXSgpKTtcblxuICAgIGNvbnN0IGN1TGlzdCA9IFtdO1xuICAgIGZvciAoY29uc3QgYyBvZiBjcExpc3QpIHtcbiAgICAgIC8vIGkuIElmIGMgaXMgYSBTcGVjaWFsQ2hhcmFjdGVyIHRoZW4gZG86XG4gICAgICBpZiAoJ14kXFxcXC4qKz8oKVtde318Jy5pbmRleE9mKGMpICE9PSAtMSkge1xuICAgICAgICAvLyBhLiBBcHBlbmQgXCJcXFwiIHRvIGN1TGlzdC5cbiAgICAgICAgY3VMaXN0LnB1c2goJ1xcXFwnKTtcbiAgICAgIH1cbiAgICAgIC8vIEFwcGVuZCBjIHRvIGNwTGlzdC5cbiAgICAgIGN1TGlzdC5wdXNoKGMpO1xuICAgIH1cbiAgICBjb25zdCBMID0gY3VMaXN0LmpvaW4oJycpO1xuICAgIHJldHVybiBMO1xuXG4gIH1cblxuICBzdGF0aWMgZGlmZmVyZW5jZUFycmF5cyhhcnJheTE6IEFycmF5PGFueT4sIGFycmF5MjogQXJyYXk8YW55Pik6IEFycmF5PGFueT4ge1xuICAgIGNvbnN0IGRpZmZlcmVuY2UgPSBhcnJheTEuZmlsdGVyKG9iaiA9PiB7XG4gICAgICByZXR1cm4gIWFycmF5Mi5zb21lKG9iajIgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5lcXVhbHMob2JqLCBvYmoyKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiBkaWZmZXJlbmNlO1xuICB9XG5cbiAgc3RhdGljIGNvbnZlcnRUb09EYXRlVmFsdWVUeXBlKHZhbDogYW55KTogT0RhdGVWYWx1ZVR5cGUge1xuICAgIGxldCByZXN1bHQ6IE9EYXRlVmFsdWVUeXBlID0gJ3RpbWVzdGFtcCc7XG4gICAgY29uc3QgbG93ZXJWYWwgPSAodmFsIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChsb3dlclZhbCA9PT0gJ3N0cmluZycgfHwgbG93ZXJWYWwgPT09ICdkYXRlJyB8fCBsb3dlclZhbCA9PT0gJ3RpbWVzdGFtcCcgfHwgbG93ZXJWYWwgPT09ICdpc28tODYwMScpIHtcbiAgICAgIHJlc3VsdCA9IGxvd2VyVmFsO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cblxuICBzdGF0aWMgdW5pcXVlQnkoYTogQXJyYXk8YW55Piwga2V5KSB7XG4gICAgY29uc3Qgc2VlbiA9IHt9O1xuICAgIHJldHVybiBhLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgY29uc3QgayA9IGtleShpdGVtKTtcbiAgICAgIHJldHVybiBzZWVuLmhhc093blByb3BlcnR5KGspID8gZmFsc2UgOiAoc2VlbltrXSA9IHRydWUpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXBhcmVzIHR3byBzdHJpbmdzIGFuZCByZXR1cm5zIGEgbmVnYXRpdmUgdmFsdWUgaWYgZmlyc3QgYXJndW1lbnQgaXMgbGVzcyB0aGFuIHNlY29uZCBhcmd1bWVudCwgemVybyBpZiB0aGV5J3JlIGVxdWFsIGFuZCBhIHBvc2l0aXZlIHZhbHVlIG90aGVyd2lzZS5cbiAgICovXG4gIHN0YXRpYyBjb21wYXJlKGE6IHN0cmluZywgYjogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBpZiAoYSA8IGIpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gICAgaWYgKGEgPiBiKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBzdGF0aWMgcGFyc2VCeVZhbHVlVHlwZSh2YWx1ZTogYW55LCB2YWx1ZVR5cGU6IE9EYXRlVmFsdWVUeXBlLCBmb3JtYXQ6IHN0cmluZykge1xuICAgIGlmICghVXRpbC5pc0RlZmluZWQodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH1cblxuICAgIGxldCByZXN1bHQgPSB2YWx1ZTtcbiAgICBjb25zdCBtID0gbW9tZW50KHZhbHVlKTtcbiAgICBpZiAoIW0uaXNWYWxpZCgpKSB7XG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH1cbiAgICBzd2l0Y2ggKHZhbHVlVHlwZSkge1xuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgcmVzdWx0ID0gbS5mb3JtYXQoZm9ybWF0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgcmVzdWx0ID0gbS50b0RhdGUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdpc28tODYwMSc6XG4gICAgICAgIHJlc3VsdCA9IG0udG9JU09TdHJpbmcoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0aW1lc3RhbXAnOlxuICAgICAgICByZXN1bHQgPSBtLnZhbHVlT2YoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXN1bHQgPSB2b2lkIDA7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgc3RhdGljIHdyYXBJbnRvT2JzZXJ2YWJsZTxUPih2YWx1ZTogVCB8IFByb21pc2U8VD4gfCBPYnNlcnZhYmxlPFQ+KTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgaWYgKGlzT2JzZXJ2YWJsZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBpZiAoVXRpbC5pc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAvLyBVc2UgYFByb21pc2UucmVzb2x2ZSgpYCB0byB3cmFwIHByb21pc2UtbGlrZSBpbnN0YW5jZXMuXG4gICAgICByZXR1cm4gZnJvbShQcm9taXNlLnJlc29sdmUodmFsdWUpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb2YodmFsdWUpO1xuICB9XG5cbiAgc3RhdGljIGlzUHJvbWlzZTxUID0gYW55PihvYmo6IGFueSk6IG9iaiBpcyBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gISFvYmogJiYgdHlwZW9mIG9iai50aGVuID09PSAnZnVuY3Rpb24nO1xuICB9XG5cblxuICBzdGF0aWMgY29uZmlndXJlU2VydmljZShjb25maWd1cmVTZXJ2aWNlQXJnczogT0NvbmZpZ3VyZVNlcnZpY2VBcmdzKTogYW55IHtcbiAgICBsZXQgZGF0YVNlcnZpY2UgPSBjb25maWd1cmVTZXJ2aWNlQXJncy5iYXNlU2VydmljZTtcbiAgICBjb25zdCBlbnRpdHkgPSBjb25maWd1cmVTZXJ2aWNlQXJncy5zZXJ2aWNlO1xuICAgIGNvbnN0IHNlcnZpY2UgPSBjb25maWd1cmVTZXJ2aWNlQXJncy5zZXJ2aWNlO1xuICAgIGNvbnN0IHNlcnZpY2VUeXBlID0gY29uZmlndXJlU2VydmljZUFyZ3Muc2VydmljZVR5cGU7XG4gICAgY29uc3QgaW5qZWN0b3IgPSBjb25maWd1cmVTZXJ2aWNlQXJncy5pbmplY3RvcjtcblxuICAgIGlmIChzZXJ2aWNlVHlwZSkge1xuICAgICAgZGF0YVNlcnZpY2UgPSBzZXJ2aWNlVHlwZTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGRhdGFTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0PGFueT4oZGF0YVNlcnZpY2UpO1xuICAgICAgaWYgKHNlcnZpY2VUeXBlKSB7XG4gICAgICAgIGRhdGFTZXJ2aWNlID0gVXRpbC5jcmVhdGVTZXJ2aWNlSW5zdGFuY2UoZGF0YVNlcnZpY2UsIGluamVjdG9yKVxuICAgICAgfVxuICAgICAgaWYgKFV0aWwuaXNEYXRhU2VydmljZShkYXRhU2VydmljZSkpIHtcbiAgICAgICAgY29uc3Qgc2VydmljZUNmZyA9IGRhdGFTZXJ2aWNlLmdldERlZmF1bHRTZXJ2aWNlQ29uZmlndXJhdGlvbihzZXJ2aWNlKTtcbiAgICAgICAgaWYgKGVudGl0eSkge1xuICAgICAgICAgIHNlcnZpY2VDZmcuZW50aXR5ID0gZW50aXR5O1xuICAgICAgICB9XG4gICAgICAgIGRhdGFTZXJ2aWNlLmNvbmZpZ3VyZVNlcnZpY2Uoc2VydmljZUNmZyk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGFTZXJ2aWNlO1xuICB9XG5cbiAgLyoqXG4gKiBSZXR1cm5zIGFuIGluc3RhbmNlIG9mIHRoZSBwcm92aWRlZCBzZXJ2aWNlIGNsYXNzXG4gKiBAcGFyYW0gY2xhenogdGhlIGNsYXNzIHJlZmVyZW5jZVxuICogQHBhcmFtIGluamVjdG9yIHRoZSBpbmplY3RvclxuICovXG4gIHN0YXRpYyBjcmVhdGVTZXJ2aWNlSW5zdGFuY2UoY2xheno6IGFueSwgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZChjbGF6eikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdJbnN0YW5jZSA9IG5ldyBjbGF6eihpbmplY3Rvcik7XG4gICAgcmV0dXJuIG5ld0luc3RhbmNlO1xuICB9XG5cbiAgc3RhdGljIGNvbmZpZ3VyZU1lc3NhZ2VTZXJ2aWNlKGNvbmZpZ3VyZVNlcnZpY2VBcmdzOiBPQ29uZmlndXJlTWVzc2FnZVNlcnZpY2VBcmdzKTogYW55IHtcbiAgICBsZXQgbWVzc2FnZVNlcnZpY2UgPSBjb25maWd1cmVTZXJ2aWNlQXJncy5iYXNlU2VydmljZTtcbiAgICBjb25zdCBzZXJ2aWNlVHlwZSA9IGNvbmZpZ3VyZVNlcnZpY2VBcmdzLnNlcnZpY2VUeXBlO1xuICAgIGNvbnN0IGluamVjdG9yID0gY29uZmlndXJlU2VydmljZUFyZ3MuaW5qZWN0b3I7XG5cbiAgICBpZiAoc2VydmljZVR5cGUpIHtcbiAgICAgIG1lc3NhZ2VTZXJ2aWNlID0gc2VydmljZVR5cGU7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBtZXNzYWdlU2VydmljZSA9IGluamVjdG9yLmdldDxhbnk+KG1lc3NhZ2VTZXJ2aWNlKTtcbiAgICAgIGlmIChzZXJ2aWNlVHlwZSkge1xuICAgICAgICBtZXNzYWdlU2VydmljZSA9IFV0aWwuY3JlYXRlU2VydmljZUluc3RhbmNlKG1lc3NhZ2VTZXJ2aWNlLCBpbmplY3RvcilcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgIH1cbiAgICByZXR1cm4gbWVzc2FnZVNlcnZpY2U7XG4gIH1cblxuICBzdGF0aWMgaXNCYXNlNjQoZmlsZTogc3RyaW5nKSB7XG4gICAgY29uc3QgcGF0dGVybiA9IG5ldyBSZWdFeHAoL14oW0EtWmEtejAtOStcXC9dezR9KSooW0EtWmEtejAtOStcXC9dezR9fFtBLVphLXowLTkrXFwvXXszfT18W0EtWmEtejAtOStcXC9dezJ9PT0pJC9nKVxuXG4gICAgaWYgKGZpbGUuc3Vic3RyaW5nKDAsIDQpID09PSAnZGF0YScpIHtcbiAgICAgIGZpbGUgPSBmaWxlLnN1YnN0cmluZyhmaWxlLmluZGV4T2YoJ2Jhc2U2NCcpICsgNyk7XG4gICAgfVxuICAgIHJldHVybiBwYXR0ZXJuLnRlc3QoZmlsZS5yZXBsYWNlKC9cXHMrL2csICcnKSk7XG5cbiAgfVxuICAvKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCB0byBhIEpTT04gc3RyaW5nLCBhdm9pZGluZyBjaXJjdWxhciByZWZlcmVuY2VzLlxuICogQHBhcmFtIG9iaiBUaGUgb2JqZWN0IHRvIGNvbnZlcnQgdG8gSlNPTi5cbiAqIEByZXR1cm5zIEEgSlNPTiBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBvYmplY3QuXG4gKi9cbiAgc3RhdGljIHN0cmluZ2lmeShvYmo6IG9iamVjdCkge1xuICAgIGxldCBjYWNoZSA9IFtdO1xuICAgIGxldCBzdHIgPSBKU09OLnN0cmluZ2lmeShvYmosIGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmIHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgIGlmIChjYWNoZS5pbmRleE9mKHZhbHVlKSAhPT0gLTEpIHtcbiAgICAgICAgICByZXR1cm47IC8vIEF2b2lkIGNpcmN1bGFyIHJlZmVyZW5jZXNcbiAgICAgICAgfVxuICAgICAgICBjYWNoZS5wdXNoKHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9KTtcbiAgICBjYWNoZSA9IG51bGw7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuXG59XG4iXX0=
|
|
415
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi91dGlsL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQU8xRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFHaEMsTUFBTSxPQUFPLElBQUk7SUFJZixNQUFNLENBQUMsUUFBUSxDQUFDLEdBQVE7UUFDdEIsTUFBTSxPQUFPLEdBQUcsT0FBTyxHQUFHLENBQUM7UUFDM0IsT0FBTyxPQUFPLEtBQUssUUFBUSxDQUFDO0lBQzlCLENBQUM7SUFFRCxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQVE7UUFDckIsT0FBTyxHQUFHLFlBQVksS0FBSyxDQUFDO0lBQzlCLENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQWEsRUFBRSxZQUFzQjtRQUN2RCxJQUFJLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUUsS0FBSyxLQUFLLENBQUMsRUFBRTtZQUNwRyxPQUFPLElBQUksQ0FBQztTQUNiO2FBQU0sSUFBSSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLE9BQU8sSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUU7WUFDM0csT0FBTyxLQUFLLENBQUM7U0FDZDthQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMs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Q0QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUMsQ0FBQztRQUNILEtBQUssR0FBRyxJQUFJLENBQUM7UUFDYixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7O0FBL2dCTSxxQkFBZ0IsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBmcm9tLCBpc09ic2VydmFibGUsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IElEYXRhU2VydmljZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvZGF0YS1zZXJ2aWNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJRm9ybURhdGFDb21wb25lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2Zvcm0tZGF0YS1jb21wb25lbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IElQZXJtaXNzaW9uc1NlcnZpY2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3Blcm1pc3Npb25zLXNlcnZpY2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IE9EYXRlVmFsdWVUeXBlIH0gZnJvbSAnLi4vdHlwZXMvby1kYXRlLXZhbHVlLnR5cGUnO1xuaW1wb3J0IHsgT0NvbmZpZ3VyZVNlcnZpY2VBcmdzIH0gZnJvbSAnLi4vdHlwZXMvY29uZmlndXJlLXNlcnZpY2UtYXJncy50eXBlJztcbmltcG9ydCB7IEJhc2U2NCB9IGZyb20gJy4vYmFzZTY0JztcbmltcG9ydCB7IENvZGVzIH0gZnJvbSAnLi9jb2Rlcyc7XG5pbXBvcnQgeyBPQ29uZmlndXJlTWVzc2FnZVNlcnZpY2VBcmdzIH0gZnJvbSAnLi4vdHlwZXMvY29uZmlndXJlLW1lc3NhZ2Utc2VydmljZS1hcmdzLnR5cGUnO1xuXG5leHBvcnQgY2xhc3MgVXRpbCB7XG5cbiAgc3RhdGljIGNvbHVtbkFnZ3JlZ2F0ZXMgPSBbJ3N1bScsICdjb3VudCcsICdhdmcnLCAnbWluJywgJ21heCddO1xuXG4gIHN0YXRpYyBpc09iamVjdCh2YWw6IGFueSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHZhbFR5cGUgPSB0eXBlb2YgdmFsO1xuICAgIHJldHVybiB2YWxUeXBlID09PSAnb2JqZWN0JztcbiAgfVxuXG4gIHN0YXRpYyBpc0FycmF5KHZhbDogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHZhbCBpbnN0YW5jZW9mIEFycmF5O1xuICB9XG5cbiAgc3RhdGljIHBhcnNlQm9vbGVhbih2YWx1ZTogc3RyaW5nLCBkZWZhdWx0VmFsdWU/OiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgaWYgKCh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSAmJiAodmFsdWUudG9VcHBlckNhc2UoKSA9PT0gJ1RSVUUnIHx8IHZhbHVlLnRvVXBwZXJDYXNlKCkgPT09ICdZRVMnKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmICgodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykgJiYgKHZhbHVlLnRvVXBwZXJDYXNlKCkgPT09ICdGQUxTRScgfHwgdmFsdWUudG9VcHBlckNhc2UoKSA9PT0gJ05PJykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKFV0aWwuaXNEZWZpbmVkKGRlZmF1bHRWYWx1ZSkpIHtcbiAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHN0YXRpYyBwYXJzZUFycmF5KHZhbHVlOiBzdHJpbmcsIGV4Y2x1ZGVSZXBlYXRlZDogYm9vbGVhbiA9IGZhbHNlKTogc3RyaW5nW10ge1xuICAgIGxldCByZXN1bHQgPSBbXTtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHJlc3VsdCA9IHZhbHVlLnNwbGl0KENvZGVzLkFSUkFZX0lOUFVUX1NFUEFSQVRPUik7XG4gICAgfVxuICAgIGlmIChleGNsdWRlUmVwZWF0ZWQgJiYgcmVzdWx0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHJlc3VsdCA9IEFycmF5LmZyb20obmV3IFNldChyZXN1bHQpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIG9iamVjdCB3aXRoIHBhcmVudCBrZXlzIGVxdWl2YWxlbmNlcy5cbiAgICogQHBhcmFtICBwS2V5c0FycmF5IEFycmF5IG9mIHN0cmluZ3MuIEFjY2VwdGVkIGZvcm1hdDoga2V5IHwga2V5OmFsaWFzXG4gICAqIEByZXR1cm5zIE9iamVjdFxuICAgKi9cbiAgc3RhdGljIHBhcnNlUGFyZW50S2V5c0VxdWl2YWxlbmNlcyhwS2V5c0FycmF5OiBBcnJheTxzdHJpbmc+LCBzZXBhcmF0b3I6IHN0cmluZyA9ICc6Jyk6IG9iamVjdCB7XG4gICAgY29uc3QgZXF1aXZhbGVuY2VzID0ge307XG4gICAgaWYgKHBLZXlzQXJyYXkgJiYgcEtleXNBcnJheS5sZW5ndGggPiAwKSB7XG4gICAgICBwS2V5c0FycmF5LmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGNvbnN0IGF1eCA9IGl0ZW0uc3BsaXQoc2VwYXJhdG9yKTtcbiAgICAgICAgaWYgKGF1eCAmJiBhdXgubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgaWYgKC8uK1xcWy4rXFxdLy50ZXN0KGF1eFsxXSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGVxdWl2S2V5ID0gYXV4WzFdLnN1YnN0cmluZygwLCBhdXhbMV0uaW5kZXhPZignWycpKTtcbiAgICAgICAgICAgIGNvbnN0IGVxdWl2VmFsdWUgPSBhdXhbMV0uc3Vic3RyaW5nKGF1eFsxXS5pbmRleE9mKCdbJykgKyAxLCBhdXhbMV0uaW5kZXhPZignXScpKTtcbiAgICAgICAgICAgIGNvbnN0IGVxdWl2ID0ge307XG4gICAgICAgICAgICBlcXVpdltlcXVpdktleV0gPSBlcXVpdlZhbHVlO1xuICAgICAgICAgICAgZXF1aXZhbGVuY2VzW2F1eFswXV0gPSBlcXVpdjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZXF1aXZhbGVuY2VzW2F1eFswXV0gPSBhdXhbMV07XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGF1eCAmJiBhdXgubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgZXF1aXZhbGVuY2VzW2l0ZW1dID0gaXRlbTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBlcXVpdmFsZW5jZXM7XG4gIH1cblxuICBzdGF0aWMgZW5jb2RlUGFyZW50S2V5cyhwYXJlbnRLZXlzOiBvYmplY3QpOiBzdHJpbmcge1xuICAgIGxldCBlbmNvZGVkOiBzdHJpbmcgPSAnJztcbiAgICBpZiAocGFyZW50S2V5cykge1xuICAgICAgZW5jb2RlZCA9IEJhc2U2NC5lbmNvZGUoSlNPTi5zdHJpbmdpZnkocGFyZW50S2V5cykpO1xuICAgIH1cbiAgICByZXR1cm4gZW5jb2RlZDtcbiAgfVxuXG4gIHN0YXRpYyBkZWNvZGVQYXJlbnRLZXlzKHBhcmVudEtleXM6IHN0cmluZyk6IG9iamVjdCB7XG4gICAgbGV0IGRlY29kZWQgPSB7fTtcbiAgICBpZiAocGFyZW50S2V5cyAmJiBwYXJlbnRLZXlzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGQgPSBCYXNlNjQuZGVjb2RlKHBhcmVudEtleXMpO1xuICAgICAgZGVjb2RlZCA9IEpTT04ucGFyc2UoZCk7XG4gICAgfVxuICAgIHJldHVybiBkZWNvZGVkO1xuICB9XG5cbiAgc3RhdGljIGlzQXJyYXlFbXB0eShhcnJheTogYW55W10pOiBib29sZWFuIHtcbiAgICBpZiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc3RhdGljIGlzT2JqZWN0RW1wdHkob2JqOiBvYmplY3QpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXMob2JqKS5sZW5ndGggPT09IDA7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdldGhlciBzcGVjaWZpZWQgc2VydmljZSBhcyBhcmd1bWVudCBpbXBsZW1lbnRzICdJRGF0YVNlcnZpY2UnIGludGVyZmFjZVxuICAgKiBAcGFyYW0gYXJnIFRoZSBzZXJ2aWNlIGluc3RhbmNlIGZvciBjaGVja2luZy5cbiAgICogQHJldHVybnMgYm9vbGVhblxuICAgKi9cbiAgc3RhdGljIGlzRGF0YVNlcnZpY2UoYXJnOiBhbnkpOiBhcmcgaXMgSURhdGFTZXJ2aWNlIHtcbiAgICBpZiAoYXJnID09PSB1bmRlZmluZWQgfHwgYXJnID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiAoKGFyZyBhcyBJRGF0YVNlcnZpY2UpLmdldERlZmF1bHRTZXJ2aWNlQ29uZmlndXJhdGlvbiAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAoYXJnIGFzIElEYXRhU2VydmljZSkuY29uZmlndXJlU2VydmljZSAhPT0gdW5kZWZpbmVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2V0aGVyIHNwZWNpZmllZCBzZXJ2aWNlIGFzIGFyZ3VtZW50IGltcGxlbWVudHMgJ0lEYXRhU2VydmljZScgaW50ZXJmYWNlXG4gICAqIEBwYXJhbSBhcmcgVGhlIHNlcnZpY2UgaW5zdGFuY2UgZm9yIGNoZWNraW5nLlxuICAgKiBAcmV0dXJucyBib29sZWFuXG4gICAqL1xuICBzdGF0aWMgaXNQZXJtaXNzaW9uc1NlcnZpY2UoYXJnOiBhbnkpOiBhcmcgaXMgSVBlcm1pc3Npb25zU2VydmljZSB7XG4gICAgaWYgKGFyZyA9PT0gdW5kZWZpbmVkIHx8IGFyZyA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gKChhcmcgYXMgSVBlcm1pc3Npb25zU2VydmljZSkubG9hZFBlcm1pc3Npb25zICE9PSB1bmRlZmluZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3ZXRoZXIgc3BlY2lmaWVkIGNvbXBvbmVudCBhcyBhcmd1bWVudCBpbXBsZW1lbnRzICdJRm9ybURhdGFDb21wb25lbnQnIGludGVyZmFjZVxuICAgKiBAcGFyYW0gYXJnIFRoZSBjb21wb25lbnQgaW5zdGFuY2UgZm9yIGNoZWNraW5nLlxuICAgKiBAcmV0dXJucyBib29sZWFuXG4gICAqL1xuICBzdGF0aWMgaXNGb3JtRGF0YUNvbXBvbmVudChhcmc6IGFueSk6IGFyZyBpcyBJRm9ybURhdGFDb21wb25lbnQge1xuICAgIGlmIChhcmcgPT09IHVuZGVmaW5lZCB8fCBhcmcgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuICgoYXJnIGFzIElGb3JtRGF0YUNvbXBvbmVudCkuaXNBdXRvbWF0aWNCaW5kaW5nICE9PSB1bmRlZmluZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXBhcmUgaXMgZXF1YWwgdHdvIG9iamVjdHNcbiAgICogQHBhcmFtIGEgT2JqZWN0IDFcbiAgICogQHBhcmFtIGIgT2JqZWN0IDJcbiAgICpcbiAgICovXG4gIHN0YXRpYyBpc0VxdWl2YWxlbnQoYSwgYikge1xuICAgIC8vIENyZWF0ZSBhcnJheXMgb2YgcHJvcGVydHkgbmFtZXNcbiAgICBjb25zdCBhUHJvcHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhhKTtcbiAgICBjb25zdCBiUHJvcHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhiKTtcblxuICAgIC8vIElmIG51bWJlciBvZiBwcm9wZXJ0aWVzIGlzIGRpZmZlcmVudCwgb2JqZWN0cyBhcmUgbm90IGVxdWl2YWxlbnRcbiAgICBpZiAoYVByb3BzLmxlbmd0aCAhPT0gYlByb3BzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYVByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBwcm9wTmFtZSA9IGFQcm9wc1tpXTtcbiAgICAgIC8vIElmIHZhbHVlcyBvZiBzYW1lIHByb3BlcnR5IGFyZSBub3QgZXF1YWwsIG9iamVjdHMgYXJlIG5vdCBlcXVpdmFsZW50XG4gICAgICBsZXQgYlZhbHVlID0gYltwcm9wTmFtZV07XG4gICAgICBpZiAodHlwZW9mIGFbcHJvcE5hbWVdID09PSAnbnVtYmVyJykge1xuICAgICAgICBjb25zdCBpbnRCID0gcGFyc2VJbnQoYlZhbHVlLCAxMCk7XG4gICAgICAgIGJWYWx1ZSA9IGlzTmFOKGludEIpID8gYlZhbHVlIDogaW50QjtcbiAgICAgIH1cbiAgICAgIGlmIChhW3Byb3BOYW1lXSAhPT0gYlZhbHVlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZiB3ZSBtYWRlIGl0IHRoaXMgZmFyLCBvYmplY3RzIGFyZSBjb25zaWRlcmVkIGVxdWl2YWxlbnRcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHN0YXRpYyBlcXVhbHMobzE6IGFueSwgbzI6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmIChvMSA9PT0gbzIpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAobzEgPT09IG51bGwgfHwgbzIgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKG8xICE9PSBvMSAmJiBvMiAhPT0gbzIpIHtcbiAgICAgIC8vIE5hTiA9PT0gTmFOXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgdDEgPSB0eXBlb2YgbzE7XG4gICAgY29uc3QgdDIgPSB0eXBlb2YgbzI7XG4gICAgbGV0IGxlbmd0aDogbnVtYmVyO1xuICAgIGxldCBrZXk6IGFueTtcbiAgICBsZXQga2V5U2V0OiBhbnk7XG4gICAgaWYgKHQxID09PSB0MiAmJiB0MSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KG8xKSkge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkobzIpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGxlbmd0aCA9IG8xLmxlbmd0aDtcbiAgICAgICAgaWYgKGxlbmd0aCA9PT0gbzIubGVuZ3RoKSB7XG4gICAgICAgICAgZm9yIChrZXkgPSAwOyBrZXkgPCBsZW5ndGg7IGtleSsrKSB7XG4gICAgICAgICAgICBpZiAoIVV0aWwuZXF1YWxzKG8xW2tleV0sIG8yW2tleV0pKSB7XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KG8yKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBrZXlTZXQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICBmb3IgKGtleSBpbiBvMSkge1xuICAgICAgICAgIGlmICghVXRpbC5lcXVhbHMobzFba2V5XSwgbzJba2V5XSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAga2V5U2V0W2tleV0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoa2V5IGluIG8yKSB7XG4gICAgICAgICAgaWYgKCEoa2V5IGluIGtleVNldCkgJiYgdHlwZW9mIG8yW2tleV0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzdGF0aWMgaXNEZWZpbmVkKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJyAmJiB2YWx1ZSAhPT0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBhIHJhbmRvbSBudW1iZXJcbiAgKi9cbiAgc3RhdGljIHJhbmRvbU51bWJlcigpIHtcbiAgICBjb25zdCByYW5kb21BcnJheSA9IG5ldyBVaW50MzJBcnJheSgxKTtcbiAgICB3aW5kb3cuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhyYW5kb21BcnJheSk7XG4gICAgcmV0dXJuIHJhbmRvbUFycmF5WzBdO1xuICB9XG5cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgcHJvdmlkZWQgc3RyaW5nIGluIGxvd2VyY2FzZSBhbmQgd2l0aG91dCBhY2NlbnQgbWFya3MuXG4gICAqIEBwYXJhbSB2YWx1ZSB0aGUgdGV4dCB0byBub3JtYWxpemVcbiAgICovXG4gIHN0YXRpYyBub3JtYWxpemVTdHJpbmcodmFsdWU6IHN0cmluZywgdG9Mb3dlckNhc2U6IGJvb2xlYW4gPSB0cnVlKTogc3RyaW5nIHtcbiAgICBpZiAodmFsdWUgJiYgdmFsdWUubGVuZ3RoKSB7XG4gICAgICBsZXQgcmVzdWx0ID0gdmFsdWUubm9ybWFsaXplKCdORkQnKS5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCAnJyk7XG4gICAgICBpZiAodG9Mb3dlckNhc2UpIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnRvTG93ZXJDYXNlKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgcHJvdmlkZWQgYXJyYXkgZmxhdHRlbmQuXG4gICAqIEBwYXJhbSBhcnJheSB0aGUgYXJyYXkgdG8gZmxhdFxuICAgKi9cbiAgc3RhdGljIGZsYXR0ZW4oYXJyYXk6IEFycmF5PGFueT4pOiBBcnJheTxhbnk+IHtcbiAgICBsZXQgZmxhdHRlbmVkID0gW107XG4gICAgZm9yIChjb25zdCBjdXJyZW50IG9mIGFycmF5KSB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY3VycmVudCkpIHtcbiAgICAgICAgZmxhdHRlbmVkLnB1c2goY3VycmVudCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBjaGlsZEN1cnJlbnQgb2YgY3VycmVudCkge1xuICAgICAgICBmbGF0dGVuZWQucHVzaChjaGlsZEN1cnJlbnQpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmbGF0dGVuZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbGlzdCB3aXRoIGFsbCB0aGUgdmFsdWVzIGZyb20gdGhlIHByb3ZpZGVkIG9iamVjdC5cbiAgICogQHBhcmFtIG9iaiB0aGUgb2JqZWN0XG4gICAqL1xuICBzdGF0aWMgZ2V0VmFsdWVzRnJvbU9iamVjdChvYmo6IG9iamVjdCA9IHt9KTogQXJyYXk8YW55PiB7XG4gICAgY29uc3QgYXJyYXk6IEFycmF5PGFueT4gPSBbXTtcbiAgICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGlmICh0eXBlb2Ygb2JqW2tleV0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGFycmF5LnB1c2goVXRpbC5nZXRWYWx1ZXNGcm9tT2JqZWN0KG9ialtrZXldKSk7XG4gICAgICB9XG4gICAgICBhcnJheS5wdXNoKG9ialtrZXldKTtcbiAgICB9KTtcbiAgICByZXR1cm4gVXRpbC5mbGF0dGVuKGFycmF5KTtcbiAgfVxuXG4gIHN0YXRpYyBwYXJzZUljb25Qb3NpdGlvbih2YWx1ZTogc3RyaW5nLCBkZWZhdWx0VmFsdWU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCByZXN1bHQgPSBkZWZhdWx0VmFsdWUgfHwgQ29kZXMuSUNPTl9QT1NJVElPTl9MRUZUO1xuICAgIGNvbnN0IGF2YWlsYWJsZVBvc2l0aW9ucyA9IFtDb2Rlcy5JQ09OX1BPU0lUSU9OX0xFRlQsIENvZGVzLklDT05fUE9TSVRJT05fUklHSFRdO1xuICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5sZW5ndGgpIHtcbiAgICAgIHJlc3VsdCA9IHZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuICAgIGlmIChhdmFpbGFibGVQb3NpdGlvbnMuaW5kZXhPZihyZXN1bHQpID09PSAtMSkge1xuICAgICAgcmVzdWx0ID0gZGVmYXVsdFZhbHVlIHx8IENvZGVzLklDT05fUE9TSVRJT05fTEVGVDtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHN0YXRpYyBjb3B5VG9DbGlwYm9hcmQoZGF0YTogc3RyaW5nKSB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY29weScsIChlOiBDbGlwYm9hcmRFdmVudCkgPT4ge1xuICAgICAgZS5jbGlwYm9hcmREYXRhLnNldERhdGEoJ3RleHQvcGxhaW4nLCBkYXRhKTtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NvcHknLCBudWxsKTtcbiAgICB9KTtcbiAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpO1xuICB9XG5cbiAgc3RhdGljIGNoZWNrUGl4ZWxzVmFsdWVTdHJpbmcodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gdmFsdWUudG9Mb3dlckNhc2UoKS5lbmRzV2l0aCgncHgnKSA6IGZhbHNlO1xuICB9XG5cbiAgc3RhdGljIGV4dHJhY3RQaXhlbHNWYWx1ZSh2YWx1ZTogYW55LCBkZWZhdWx0VmFsdWU/OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGxldCByZXN1bHQ6IG51bWJlciA9IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcbiAgICBpZiAoVXRpbC5jaGVja1BpeGVsc1ZhbHVlU3RyaW5nKHZhbHVlKSkge1xuICAgICAgY29uc3QgcGFyc2VkID0gcGFyc2VGbG9hdCh2YWx1ZS5zdWJzdHIoMCwgdmFsdWUubGVuZ3RoIC0gJ3B4Jy5sZW5ndGgpKTtcbiAgICAgIHJlc3VsdCA9IGlzTmFOKHBhcnNlZCkgPyBkZWZhdWx0VmFsdWUgOiBwYXJzZWQ7XG4gICAgfVxuICAgIHJldHVybiBVdGlsLmlzRGVmaW5lZChyZXN1bHQpID8gcmVzdWx0IDogZGVmYXVsdFZhbHVlO1xuICB9XG4gIC8qKlxuICAgKiBBZGRlZCBjbGFzcyAnYWNjZW50JyBpbiA8bWF0LWZvcm0tZmllbGQ+IGFuZCBzZXQgdGhlIGNvbG9yICBhY2NlbnQgaW4gdGhlIGljb25zXG4gICAqIEBwYXJhbSBlbFJlZlxuICAgKiBAcGFyYW0gb0lucHV0c09wdGlvbnNcbiAgICovXG5cbiAgc3RhdGljIHBhcnNlT0lucHV0c09wdGlvbnMoZWxSZWYsIG9JbnB1dHNPcHRpb25zKSB7XG5cbiAgICBpZiAob0lucHV0c09wdGlvbnMuaWNvbkNvbG9yID09PSBDb2Rlcy5PX0lOUFVUU19PUFRJT05TX0NPTE9SX0FDQ0VOVCkge1xuICAgICAgY29uc3QgbWF0Rm9ybUZpZWxkRUwgPSBlbFJlZi5uYXRpdmVFbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdtYXQtZm9ybS1maWVsZCcpWzBdO1xuICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKG1hdEZvcm1GaWVsZEVMKSkge1xuICAgICAgICBtYXRGb3JtRmllbGRFTC5jbGFzc0xpc3QuYWRkKCdhY2NlbnQnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuXG4gIC8qKlxuICAgKiAgUmV0dXJuIHN0cmluZyB3aXRoIGVzY2FwZWQgc3BlY2lhbCBjaGFyYWN0ZXJcbiAgICovXG4gIHN0YXRpYyBlc2NhcGVTcGVjaWFsQ2hhcmFjdGVyKFM6IHN0cmluZyk6IHN0cmluZyB7XG5cbiAgICBjb25zdCBzdHIgPSBTdHJpbmcoUyk7XG5cbiAgICBjb25zdCBjcExpc3QgPSBBcnJheS5mcm9tKHN0cltTeW1ib2wuaXRlcmF0b3JdKCkpO1xuXG4gICAgY29uc3QgY3VMaXN0ID0gW107XG4gICAgZm9yIChjb25zdCBjIG9mIGNwTGlzdCkge1xuICAgICAgLy8gaS4gSWYgYyBpcyBhIFNwZWNpYWxDaGFyYWN0ZXIgdGhlbiBkbzpcbiAgICAgIGlmICgnXiRcXFxcLiorPygpW117fXwnLmluZGV4T2YoYykgIT09IC0xKSB7XG4gICAgICAgIC8vIGEuIEFwcGVuZCBcIlxcXCIgdG8gY3VMaXN0LlxuICAgICAgICBjdUxpc3QucHVzaCgnXFxcXCcpO1xuICAgICAgfVxuICAgICAgLy8gQXBwZW5kIGMgdG8gY3BMaXN0LlxuICAgICAgY3VMaXN0LnB1c2goYyk7XG4gICAgfVxuICAgIGNvbnN0IEwgPSBjdUxpc3Quam9pbignJyk7XG4gICAgcmV0dXJuIEw7XG5cbiAgfVxuXG4gIHN0YXRpYyBpc0FycmF5RXF1YWwoYXJyYXkxOiBBcnJheTxhbnk+LCBhcnJheTI6IEFycmF5PGFueT4pIHtcbiAgICByZXR1cm4gYXJyYXkxLmxlbmd0aCA9PT0gYXJyYXkyLmxlbmd0aCAmJiBhcnJheTEuZXZlcnkoKHYsIGkpID0+IHYgPT09IGFycmF5MltpXSlcbiAgfTtcblxuICBzdGF0aWMgZGlmZmVyZW5jZUFycmF5cyhhcnJheTE6IEFycmF5PGFueT4sIGFycmF5MjogQXJyYXk8YW55Pik6IEFycmF5PGFueT4ge1xuICAgIGNvbnN0IGRpZmZlcmVuY2UgPSBhcnJheTEuZmlsdGVyKG9iaiA9PiB7XG4gICAgICByZXR1cm4gIWFycmF5Mi5zb21lKG9iajIgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5lcXVhbHMob2JqLCBvYmoyKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiBkaWZmZXJlbmNlO1xuICB9XG5cbiAgc3RhdGljIGNvbnZlcnRUb09EYXRlVmFsdWVUeXBlKHZhbDogYW55KTogT0RhdGVWYWx1ZVR5cGUge1xuICAgIGxldCByZXN1bHQ6IE9EYXRlVmFsdWVUeXBlID0gJ3RpbWVzdGFtcCc7XG4gICAgY29uc3QgbG93ZXJWYWwgPSAodmFsIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChsb3dlclZhbCA9PT0gJ3N0cmluZycgfHwgbG93ZXJWYWwgPT09ICdkYXRlJyB8fCBsb3dlclZhbCA9PT0gJ3RpbWVzdGFtcCcgfHwgbG93ZXJWYWwgPT09ICdpc28tODYwMScpIHtcbiAgICAgIHJlc3VsdCA9IGxvd2VyVmFsO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cblxuICBzdGF0aWMgdW5pcXVlQnkoYTogQXJyYXk8YW55Piwga2V5KSB7XG4gICAgY29uc3Qgc2VlbiA9IHt9O1xuICAgIHJldHVybiBhLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgY29uc3QgayA9IGtleShpdGVtKTtcbiAgICAgIHJldHVybiBzZWVuLmhhc093blByb3BlcnR5KGspID8gZmFsc2UgOiAoc2VlbltrXSA9IHRydWUpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXBhcmVzIHR3byBzdHJpbmdzIGFuZCByZXR1cm5zIGEgbmVnYXRpdmUgdmFsdWUgaWYgZmlyc3QgYXJndW1lbnQgaXMgbGVzcyB0aGFuIHNlY29uZCBhcmd1bWVudCwgemVybyBpZiB0aGV5J3JlIGVxdWFsIGFuZCBhIHBvc2l0aXZlIHZhbHVlIG90aGVyd2lzZS5cbiAgICovXG4gIHN0YXRpYyBjb21wYXJlKGE6IHN0cmluZywgYjogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBpZiAoYSA8IGIpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gICAgaWYgKGEgPiBiKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBzdGF0aWMgcGFyc2VCeVZhbHVlVHlwZSh2YWx1ZTogYW55LCB2YWx1ZVR5cGU6IE9EYXRlVmFsdWVUeXBlLCBmb3JtYXQ6IHN0cmluZykge1xuICAgIGlmICghVXRpbC5pc0RlZmluZWQodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH1cblxuICAgIGxldCByZXN1bHQgPSB2YWx1ZTtcbiAgICBjb25zdCBtID0gbW9tZW50KHZhbHVlKTtcbiAgICBpZiAoIW0uaXNWYWxpZCgpKSB7XG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH1cbiAgICBzd2l0Y2ggKHZhbHVlVHlwZSkge1xuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgcmVzdWx0ID0gbS5mb3JtYXQoZm9ybWF0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgcmVzdWx0ID0gbS50b0RhdGUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdpc28tODYwMSc6XG4gICAgICAgIHJlc3VsdCA9IG0udG9JU09TdHJpbmcoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0aW1lc3RhbXAnOlxuICAgICAgICByZXN1bHQgPSBtLnZhbHVlT2YoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXN1bHQgPSB2b2lkIDA7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgc3RhdGljIHdyYXBJbnRvT2JzZXJ2YWJsZTxUPih2YWx1ZTogVCB8IFByb21pc2U8VD4gfCBPYnNlcnZhYmxlPFQ+KTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgaWYgKGlzT2JzZXJ2YWJsZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBpZiAoVXRpbC5pc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAvLyBVc2UgYFByb21pc2UucmVzb2x2ZSgpYCB0byB3cmFwIHByb21pc2UtbGlrZSBpbnN0YW5jZXMuXG4gICAgICByZXR1cm4gZnJvbShQcm9taXNlLnJlc29sdmUodmFsdWUpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb2YodmFsdWUpO1xuICB9XG5cbiAgc3RhdGljIGlzUHJvbWlzZTxUID0gYW55PihvYmo6IGFueSk6IG9iaiBpcyBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gISFvYmogJiYgdHlwZW9mIG9iai50aGVuID09PSAnZnVuY3Rpb24nO1xuICB9XG5cblxuICBzdGF0aWMgY29uZmlndXJlU2VydmljZShjb25maWd1cmVTZXJ2aWNlQXJnczogT0NvbmZpZ3VyZVNlcnZpY2VBcmdzKTogYW55IHtcbiAgICBsZXQgZGF0YVNlcnZpY2UgPSBjb25maWd1cmVTZXJ2aWNlQXJncy5iYXNlU2VydmljZTtcbiAgICBjb25zdCBlbnRpdHkgPSBjb25maWd1cmVTZXJ2aWNlQXJncy5zZXJ2aWNlO1xuICAgIGNvbnN0IHNlcnZpY2UgPSBjb25maWd1cmVTZXJ2aWNlQXJncy5zZXJ2aWNlO1xuICAgIGNvbnN0IHNlcnZpY2VUeXBlID0gY29uZmlndXJlU2VydmljZUFyZ3Muc2VydmljZVR5cGU7XG4gICAgY29uc3QgaW5qZWN0b3IgPSBjb25maWd1cmVTZXJ2aWNlQXJncy5pbmplY3RvcjtcblxuICAgIGlmIChzZXJ2aWNlVHlwZSkge1xuICAgICAgZGF0YVNlcnZpY2UgPSBzZXJ2aWNlVHlwZTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGRhdGFTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0PGFueT4oZGF0YVNlcnZpY2UpO1xuICAgICAgaWYgKHNlcnZpY2VUeXBlKSB7XG4gICAgICAgIGRhdGFTZXJ2aWNlID0gVXRpbC5jcmVhdGVTZXJ2aWNlSW5zdGFuY2UoZGF0YVNlcnZpY2UsIGluamVjdG9yKVxuICAgICAgfVxuICAgICAgaWYgKFV0aWwuaXNEYXRhU2VydmljZShkYXRhU2VydmljZSkpIHtcbiAgICAgICAgY29uc3Qgc2VydmljZUNmZyA9IGRhdGFTZXJ2aWNlLmdldERlZmF1bHRTZXJ2aWNlQ29uZmlndXJhdGlvbihzZXJ2aWNlKTtcbiAgICAgICAgaWYgKGVudGl0eSkge1xuICAgICAgICAgIHNlcnZpY2VDZmcuZW50aXR5ID0gZW50aXR5O1xuICAgICAgICB9XG4gICAgICAgIGRhdGFTZXJ2aWNlLmNvbmZpZ3VyZVNlcnZpY2Uoc2VydmljZUNmZyk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGFTZXJ2aWNlO1xuICB9XG5cbiAgLyoqXG4gKiBSZXR1cm5zIGFuIGluc3RhbmNlIG9mIHRoZSBwcm92aWRlZCBzZXJ2aWNlIGNsYXNzXG4gKiBAcGFyYW0gY2xhenogdGhlIGNsYXNzIHJlZmVyZW5jZVxuICogQHBhcmFtIGluamVjdG9yIHRoZSBpbmplY3RvclxuICovXG4gIHN0YXRpYyBjcmVhdGVTZXJ2aWNlSW5zdGFuY2UoY2xheno6IGFueSwgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZChjbGF6eikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdJbnN0YW5jZSA9IG5ldyBjbGF6eihpbmplY3Rvcik7XG4gICAgcmV0dXJuIG5ld0luc3RhbmNlO1xuICB9XG5cbiAgc3RhdGljIGNvbmZpZ3VyZU1lc3NhZ2VTZXJ2aWNlKGNvbmZpZ3VyZVNlcnZpY2VBcmdzOiBPQ29uZmlndXJlTWVzc2FnZVNlcnZpY2VBcmdzKTogYW55IHtcbiAgICBsZXQgbWVzc2FnZVNlcnZpY2UgPSBjb25maWd1cmVTZXJ2aWNlQXJncy5iYXNlU2VydmljZTtcbiAgICBjb25zdCBzZXJ2aWNlVHlwZSA9IGNvbmZpZ3VyZVNlcnZpY2VBcmdzLnNlcnZpY2VUeXBlO1xuICAgIGNvbnN0IGluamVjdG9yID0gY29uZmlndXJlU2VydmljZUFyZ3MuaW5qZWN0b3I7XG5cbiAgICBpZiAoc2VydmljZVR5cGUpIHtcbiAgICAgIG1lc3NhZ2VTZXJ2aWNlID0gc2VydmljZVR5cGU7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBtZXNzYWdlU2VydmljZSA9IGluamVjdG9yLmdldDxhbnk+KG1lc3NhZ2VTZXJ2aWNlKTtcbiAgICAgIGlmIChzZXJ2aWNlVHlwZSkge1xuICAgICAgICBtZXNzYWdlU2VydmljZSA9IFV0aWwuY3JlYXRlU2VydmljZUluc3RhbmNlKG1lc3NhZ2VTZXJ2aWNlLCBpbmplY3RvcilcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgIH1cbiAgICByZXR1cm4gbWVzc2FnZVNlcnZpY2U7XG4gIH1cblxuICBzdGF0aWMgaXNCYXNlNjQoZmlsZTogc3RyaW5nKSB7XG4gICAgY29uc3QgcGF0dGVybiA9IG5ldyBSZWdFeHAoL14oW0EtWmEtejAtOStcXC9dezR9KSooW0EtWmEtejAtOStcXC9dezR9fFtBLVphLXowLTkrXFwvXXszfT18W0EtWmEtejAtOStcXC9dezJ9PT0pJC9nKVxuXG4gICAgaWYgKGZpbGUuc3Vic3RyaW5nKDAsIDQpID09PSAnZGF0YScpIHtcbiAgICAgIGZpbGUgPSBmaWxlLnN1YnN0cmluZyhmaWxlLmluZGV4T2YoJ2Jhc2U2NCcpICsgNyk7XG4gICAgfVxuICAgIHJldHVybiBwYXR0ZXJuLnRlc3QoZmlsZS5yZXBsYWNlKC9cXHMrL2csICcnKSk7XG5cbiAgfVxuICAvKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCB0byBhIEpTT04gc3RyaW5nLCBhdm9pZGluZyBjaXJjdWxhciByZWZlcmVuY2VzLlxuICogQHBhcmFtIG9iaiBUaGUgb2JqZWN0IHRvIGNvbnZlcnQgdG8gSlNPTi5cbiAqIEByZXR1cm5zIEEgSlNPTiBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBvYmplY3QuXG4gKi9cbiAgc3RhdGljIHN0cmluZ2lmeShvYmo6IG9iamVjdCkge1xuICAgIGxldCBjYWNoZSA9IFtdO1xuICAgIGxldCBzdHIgPSBKU09OLnN0cmluZ2lmeShvYmosIGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmIHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgIGlmIChjYWNoZS5pbmRleE9mKHZhbHVlKSAhPT0gLTEpIHtcbiAgICAgICAgICByZXR1cm47IC8vIEF2b2lkIGNpcmN1bGFyIHJlZmVyZW5jZXNcbiAgICAgICAgfVxuICAgICAgICBjYWNoZS5wdXNoKHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9KTtcbiAgICBjYWNoZSA9IG51bGw7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuXG59XG4iXX0=
|