@openziti/ziti-console-lib 0.4.10 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/styles/global.scss +156 -1
- package/assets/styles/ziti.css +7 -0
- package/esm2022/lib/features/custom-tags/custom-tags.component.mjs +5 -2
- package/esm2022/lib/features/data-table/cells/table-cell-name/table-cell-name.component.mjs +11 -3
- package/esm2022/lib/features/data-table/column-headers/table-column-default/table-column-default.component.mjs +2 -2
- package/esm2022/lib/features/data-table/data-table-filter.service.mjs +13 -3
- package/esm2022/lib/features/data-table/data-table.component.mjs +18 -9
- package/esm2022/lib/features/data-table/data-table.service.mjs +5 -5
- package/esm2022/lib/features/data-table/table-filter-bar/filter-bar.component.mjs +11 -5
- package/esm2022/lib/features/preview-list/preview-list.component.mjs +20 -4
- package/esm2022/lib/features/projectable-forms/configuration/configuration-form.component.mjs +12 -9
- package/esm2022/lib/features/projectable-forms/edge-router/edge-router-form.component.mjs +2 -3
- package/esm2022/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.mjs +13 -11
- package/esm2022/lib/features/projectable-forms/form-field-container/form-field-container.component.mjs +2 -2
- package/esm2022/lib/features/projectable-forms/identity/identity-form.component.mjs +8 -9
- package/esm2022/lib/features/projectable-forms/projectable-form.class.mjs +8 -1
- package/esm2022/lib/features/projectable-forms/service/service-form.component.mjs +83 -23
- package/esm2022/lib/features/projectable-forms/service/service-form.service.mjs +137 -31
- package/esm2022/lib/features/projectable-forms/service/simple-service/simple-service.component.mjs +9 -2
- package/esm2022/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.mjs +13 -11
- package/esm2022/lib/features/projectable-forms/service-policy/service-policy-form.component.mjs +14 -12
- package/esm2022/lib/features/projectable-forms/terminator/terminator-form.component.mjs +248 -0
- package/esm2022/lib/features/projectable-forms/terminator/terminator-form.service.mjs +131 -0
- package/esm2022/lib/features/wrappers/zac-wrapper-service.class.mjs +4 -1
- package/esm2022/lib/features/wrappers/zac-wrapper.component.mjs +5 -4
- package/esm2022/lib/features/wrappers/zac-wrapper.service.mjs +3 -3
- package/esm2022/lib/models/config.mjs +2 -1
- package/esm2022/lib/models/edge-router-policy.mjs +2 -1
- package/esm2022/lib/models/service-edge-router-policy.mjs +2 -1
- package/esm2022/lib/models/service-policy.mjs +2 -1
- package/esm2022/lib/models/terminator.mjs +14 -0
- package/esm2022/lib/pages/configurations/configurations-page.component.mjs +1 -1
- package/esm2022/lib/pages/edge-router-policies/edge-router-policies-page.component.mjs +1 -1
- package/esm2022/lib/pages/edge-routers/edge-routers-page.component.mjs +1 -1
- package/esm2022/lib/pages/identities/identities-page.component.mjs +1 -1
- package/esm2022/lib/pages/service-edge-router-policies/service-edge-router-policies-page.component.mjs +1 -1
- package/esm2022/lib/pages/service-policies/service-policies-page.component.mjs +1 -1
- package/esm2022/lib/pages/services/services-page.component.mjs +1 -1
- package/esm2022/lib/pages/terminators/terminators-page.component.mjs +96 -0
- package/esm2022/lib/pages/terminators/terminators-page.service.mjs +185 -0
- package/esm2022/lib/services/settings-service.class.mjs +2 -2
- package/esm2022/lib/services/ziti-controller-data.service.mjs +7 -3
- package/esm2022/lib/services/ziti-data.service.mjs +1 -1
- package/esm2022/lib/shared/list-page-component.class.mjs +2 -2
- package/esm2022/lib/version.mjs +2 -2
- package/esm2022/lib/ziti-console-lib.module.mjs +20 -8
- package/esm2022/public-api.mjs +6 -1
- package/fesm2022/openziti-ziti-console-lib.mjs +4236 -3371
- package/fesm2022/openziti-ziti-console-lib.mjs.map +1 -1
- package/lib/features/custom-tags/custom-tags.component.d.ts +3 -2
- package/lib/features/custom-tags/custom-tags.component.d.ts.map +1 -1
- package/lib/features/data-table/cells/table-cell-name/table-cell-name.component.d.ts +1 -0
- package/lib/features/data-table/cells/table-cell-name/table-cell-name.component.d.ts.map +1 -1
- package/lib/features/data-table/data-table-filter.service.d.ts.map +1 -1
- package/lib/features/data-table/data-table.component.d.ts +4 -1
- package/lib/features/data-table/data-table.component.d.ts.map +1 -1
- package/lib/features/data-table/table-filter-bar/filter-bar.component.d.ts +3 -1
- package/lib/features/data-table/table-filter-bar/filter-bar.component.d.ts.map +1 -1
- package/lib/features/preview-list/preview-list.component.d.ts +2 -1
- package/lib/features/preview-list/preview-list.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts +1 -1
- package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/edge-router/edge-router-form.component.d.ts +0 -1
- package/lib/features/projectable-forms/edge-router/edge-router-form.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.d.ts +0 -1
- package/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/identity/identity-form.component.d.ts +0 -1
- package/lib/features/projectable-forms/identity/identity-form.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/projectable-form.class.d.ts +7 -0
- package/lib/features/projectable-forms/projectable-form.class.d.ts.map +1 -1
- package/lib/features/projectable-forms/service/service-form.component.d.ts +4 -2
- package/lib/features/projectable-forms/service/service-form.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/service/service-form.service.d.ts +21 -3
- package/lib/features/projectable-forms/service/service-form.service.d.ts.map +1 -1
- package/lib/features/projectable-forms/service/simple-service/simple-service.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.d.ts +0 -1
- package/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/service-policy/service-policy-form.component.d.ts +0 -1
- package/lib/features/projectable-forms/service-policy/service-policy-form.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/terminator/terminator-form.component.d.ts +59 -0
- package/lib/features/projectable-forms/terminator/terminator-form.component.d.ts.map +1 -0
- package/lib/features/projectable-forms/terminator/terminator-form.service.d.ts +33 -0
- package/lib/features/projectable-forms/terminator/terminator-form.service.d.ts.map +1 -0
- package/lib/features/wrappers/zac-wrapper-service.class.d.ts.map +1 -1
- package/lib/features/wrappers/zac-wrapper.component.d.ts.map +1 -1
- package/lib/features/wrappers/zac-wrapper.service.d.ts +1 -0
- package/lib/features/wrappers/zac-wrapper.service.d.ts.map +1 -1
- package/lib/models/config.d.ts +1 -0
- package/lib/models/config.d.ts.map +1 -1
- package/lib/models/edge-router-policy.d.ts +1 -0
- package/lib/models/edge-router-policy.d.ts.map +1 -1
- package/lib/models/service-edge-router-policy.d.ts +1 -0
- package/lib/models/service-edge-router-policy.d.ts.map +1 -1
- package/lib/models/service-policy.d.ts +1 -0
- package/lib/models/service-policy.d.ts.map +1 -1
- package/lib/models/terminator.d.ts +11 -0
- package/lib/models/terminator.d.ts.map +1 -0
- package/lib/pages/terminators/terminators-page.component.d.ts +29 -0
- package/lib/pages/terminators/terminators-page.component.d.ts.map +1 -0
- package/lib/pages/terminators/terminators-page.service.d.ts +31 -0
- package/lib/pages/terminators/terminators-page.service.d.ts.map +1 -0
- package/lib/services/ziti-controller-data.service.d.ts +1 -1
- package/lib/services/ziti-controller-data.service.d.ts.map +1 -1
- package/lib/services/ziti-data.service.d.ts +1 -1
- package/lib/services/ziti-data.service.d.ts.map +1 -1
- package/lib/ziti-console-lib.module.d.ts +20 -18
- package/lib/ziti-console-lib.module.d.ts.map +1 -1
- package/package.json +3 -3
- package/public-api.d.ts +5 -0
- package/public-api.d.ts.map +1 -1
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
import { Component, Inject, ViewChild } from '@angular/core';
|
|
17
17
|
import { NavigationEnd } from '@angular/router';
|
|
18
18
|
import { ZAC_WRAPPER_SERVICE } from "./zac-wrapper-service.class";
|
|
19
|
-
import { invoke, defer, set, get } from 'lodash';
|
|
19
|
+
import { cloneDeep, invoke, isEmpty, defer, set, get } from 'lodash';
|
|
20
20
|
import { Subscription } from "rxjs";
|
|
21
21
|
import { SETTINGS_SERVICE } from "../../services/settings.service";
|
|
22
22
|
import { ZAC_LOGIN_SERVICE } from "../../services/login-service.class";
|
|
@@ -61,8 +61,9 @@ class ZacWrapperComponent {
|
|
|
61
61
|
this.loadPage();
|
|
62
62
|
}));
|
|
63
63
|
this.subscription.add(this.settingsService.settingsChange.subscribe(async (results) => {
|
|
64
|
+
const hasSession = !isEmpty(results?.session?.id);
|
|
64
65
|
const controllerChanged = this.settings?.session?.controllerDomain !== results?.session?.controllerDomain;
|
|
65
|
-
if (
|
|
66
|
+
if (hasSession && (!this.pageLoading || controllerChanged)) {
|
|
66
67
|
this.pageLoading = true;
|
|
67
68
|
this.pageHtml = undefined;
|
|
68
69
|
defer(async () => {
|
|
@@ -71,7 +72,7 @@ class ZacWrapperComponent {
|
|
|
71
72
|
this.pageLoading = false;
|
|
72
73
|
});
|
|
73
74
|
}
|
|
74
|
-
this.settings = results;
|
|
75
|
+
this.settings = cloneDeep(results);
|
|
75
76
|
}));
|
|
76
77
|
this.subscription.add(this.router.events.subscribe((event) => {
|
|
77
78
|
if (event instanceof NavigationEnd) {
|
|
@@ -144,4 +145,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
144
145
|
type: ViewChild,
|
|
145
146
|
args: ['zacContainer']
|
|
146
147
|
}] } });
|
|
147
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemFjLXdyYXBwZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL3dyYXBwZXJzL3phYy13cmFwcGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy93cmFwcGVycy96YWMtd3JhcHBlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7RUFjRTtBQUVGLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFxQixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDOUUsT0FBTyxFQUFTLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxtQkFBbUIsRUFBeUIsTUFBTSw2QkFBNkIsQ0FBQztBQUN4RixPQUFPLEVBQVEsTUFBTSxFQUFXLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBQy9ELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFrQixnQkFBZ0IsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBSWxGLE9BQU8sRUFBb0IsaUJBQWlCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7Ozs7Ozs7QUFDeEYsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBRWxDLE1BS2EsbUJBQW1CO0lBVzlCLFlBQ3lDLGNBQXNDLEVBQ3pDLGVBQWdDLEVBQzFELGFBQTRCLEVBQ0QsWUFBK0IsRUFDMUQsTUFBYztRQUplLG1CQUFjLEdBQWQsY0FBYyxDQUF3QjtRQUN6QyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDMUQsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDRCxpQkFB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QUFFLHdCQUF3QixFQUFFLFlBQVksQ0FBQyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsQ0FBQztnQkFDcEgsSUFBSSxDQUFDLGNBQWMsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO2FBQy9DO1lBQUEsT0FBTSxHQUFHLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQzthQUM3RDtvQkFBUztnQkFDUixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQzthQUN0QjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0F6R1UsbUJBQW1CLGtCQVlsQixtQkFBbUIsYUFDbkIsZ0JBQWdCLDBDQUVoQixpQkFBaUI7bUdBZmxCLG1CQUFtQixxS0NqQ2hDLDA1TUFrSXFGOztTRGpHeEUsbUJBQW1COzRGQUFuQixtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0ksaUJBQWlCOzswQkFnQnhCLE1BQU07MkJBQUMsbUJBQW1COzswQkFDMUIsTUFBTTsyQkFBQyxnQkFBZ0I7OzBCQUV2QixNQUFNOzJCQUFDLGlCQUFpQjtpRUFORixZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICAgIENvcHlyaWdodCBOZXRGb3VuZHJ5IEluYy5cblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgSW5qZWN0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Um91dGVyLCBOYXZpZ2F0aW9uRW5kfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtaQUNfV1JBUFBFUl9TRVJWSUNFLCBaYWNXcmFwcGVyU2VydmljZUNsYXNzfSBmcm9tIFwiLi96YWMtd3JhcHBlci1zZXJ2aWNlLmNsYXNzXCI7XG5pbXBvcnQge2RlbGF5LCBpbnZva2UsIGlzRW1wdHksIGRlZmVyLCBzZXQsIGdldH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtTZXR0aW5nc1NlcnZpY2UsIFNFVFRJTkdTX1NFUlZJQ0V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9zZXR0aW5ncy5zZXJ2aWNlXCI7XG5pbXBvcnQge0xvZ2dlclNlcnZpY2V9IGZyb20gXCIuLi9tZXNzYWdpbmcvbG9nZ2VyLnNlcnZpY2VcIjtcblxuaW1wb3J0ICQgZnJvbSAnanF1ZXJ5JztcbmltcG9ydCB7TG9naW5TZXJ2aWNlQ2xhc3MsIFpBQ19MT0dJTl9TRVJWSUNFfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvbG9naW4tc2VydmljZS5jbGFzc1wiO1xuY29uc3QgY29udGV4dCA9IHdpbmRvd1snY29udGV4dCddO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC16YWMtd3JhcHBlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3phYy13cmFwcGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi96YWMtd3JhcHBlci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBaYWNXcmFwcGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIGxvYWRpbmcgPSBmYWxzZTtcbiAgcGFnZUh0bWw6IGFueSA9ICcnO1xuICBzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHRpdGxlID0gJ1ppdGkgQ29uc29sZSc7XG4gIHdhaXRpbmdGb3JTZXNzaW9uID0gdHJ1ZTtcbiAgcGFnZUxvYWRpbmcgPSBmYWxzZTtcbiAgc2V0dGluZ3M6IGFueSA9IHt9O1xuICBAVmlld0NoaWxkKCd6YWNDb250YWluZXInKSB6YWNDb250YWluZXI6IGFueTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIEBJbmplY3QoWkFDX1dSQVBQRVJfU0VSVklDRSkgcHJpdmF0ZSB3cmFwcGVyU2VydmljZTogWmFjV3JhcHBlclNlcnZpY2VDbGFzcyxcbiAgICAgIEBJbmplY3QoU0VUVElOR1NfU0VSVklDRSkgcHJpdmF0ZSBzZXR0aW5nc1NlcnZpY2U6IFNldHRpbmdzU2VydmljZSxcbiAgICAgIHByaXZhdGUgbG9nZ2VyU2VydmljZTogTG9nZ2VyU2VydmljZSxcbiAgICAgIEBJbmplY3QoWkFDX0xPR0lOX1NFUlZJQ0UpIHByaXZhdGUgbG9naW5TZXJ2aWNlOiBMb2dpblNlcnZpY2VDbGFzcyxcbiAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICkge1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy53cmFwcGVyU2VydmljZS5pbml0WmFjKCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy53cmFwcGVyU2VydmljZS5wYWdlQ2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy53YWl0aW5nRm9yU2Vzc2lvbikge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxvYWRQYWdlKCk7XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICB0aGlzLndyYXBwZXJTZXJ2aWNlLnppdGlVcGRhdGVkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMud2FpdGluZ0ZvclNlc3Npb24pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5sb2FkUGFnZSgpO1xuICAgICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3NDaGFuZ2Uuc3Vic2NyaWJlKGFzeW5jIChyZXN1bHRzOmFueSkgPT4ge1xuICAgICAgICBjb25zdCBjb250cm9sbGVyQ2hhbmdlZCA9IHRoaXMuc2V0dGluZ3M/LnNlc3Npb24/LmNvbnRyb2xsZXJEb21haW4gIT09IHJlc3VsdHM/LnNlc3Npb24/LmNvbnRyb2xsZXJEb21haW47XG4gICAgICAgIGlmICgodGhpcy53YWl0aW5nRm9yU2Vzc2lvbiAmJiAhdGhpcy5wYWdlTG9hZGluZykgfHwgY29udHJvbGxlckNoYW5nZWQpIHtcbiAgICAgICAgICB0aGlzLnBhZ2VMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnBhZ2VIdG1sID0gdW5kZWZpbmVkO1xuICAgICAgICAgIGRlZmVyKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMubG9hZFBhZ2UoKTtcbiAgICAgICAgICAgIHRoaXMud2FpdGluZ0ZvclNlc3Npb24gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucGFnZUxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldHRpbmdzID0gcmVzdWx0cztcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgIHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRQYWdlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICk7XG4gICAgZGVmZXIoKCkgPT4ge1xuICAgICAgdGhpcy53cmFwcGVyU2VydmljZS5pbml0WkFDQnV0dG9uTGlzdGVuZXIoKTtcbiAgICB9KVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnBhZ2VIdG1sID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgYXN5bmMgbG9hZFBhZ2UoKSB7XG4gICAgdGhpcy5wYWdlSHRtbCA9IGF3YWl0IHRoaXMud3JhcHBlclNlcnZpY2UubG9hZEN1cnJlbnRQYWdlKCk7XG4gICAgZGVmZXIoKCkgPT4ge1xuICAgICAgdGhpcy53cmFwcGVyU2VydmljZS5yZXNldFphY0V2ZW50cygpO1xuICAgICAgdGhpcy5leGVjdXRlUGFnZVNjcmlwdHMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGV4ZWN1dGVQYWdlU2NyaXB0cygpIHtcbiAgICBjb25zdCBzY3JpcHRzID0gdGhpcy56YWNDb250YWluZXIubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2NyaXB0Jyk7XG4gICAgZm9yIChjb25zdCBzY3JpcHQgb2Ygc2NyaXB0cykge1xuICAgICAgY29uc3Qgc2NyaXB0Q29weSA9IDxIVE1MU2NyaXB0RWxlbWVudD5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICAgIHNjcmlwdENvcHkudHlwZSA9IHNjcmlwdC50eXBlID8gc2NyaXB0LnR5cGUgOiAndGV4dC9qYXZhc2NyaXB0JztcbiAgICAgIGlmIChzY3JpcHQuaW5uZXJIVE1MKSB7XG4gICAgICAgIHNjcmlwdENvcHkuaW5uZXJIVE1MID0gc2NyaXB0LmlubmVySFRNTDtcbiAgICAgIH0gZWxzZSBpZiAoc2NyaXB0LnNyYykge1xuICAgICAgICBzY3JpcHRDb3B5LnNyYyA9IHNjcmlwdC5zcmM7XG4gICAgICB9XG4gICAgICBzY3JpcHRDb3B5LmFzeW5jID0gZmFsc2U7XG4gICAgICBzY3JpcHQucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoc2NyaXB0Q29weSwgc2NyaXB0KTtcbiAgICB9XG4gICAgZGVmZXIoKCkgPT4ge1xuICAgICAgdHJ5e1xuICAgICAgICBzZXQod2luZG93LCAnY29udGV4dC5pdGVtcycsIFtdKTtcbiAgICAgICAgc2V0KHdpbmRvdywgJ2NvbnRleHQud2F0Y2hlcnMnLCBbXSk7XG4gICAgICAgIHNldCh3aW5kb3csICdjb250ZXh0LmV2ZW50V2F0Y2hlcnMnLCBbXSk7XG4gICAgICAgIGludm9rZSh3aW5kb3csICdhcHAuaW5pdCcpO1xuICAgICAgICBjb250ZXh0LmFkZExpc3RlbmVyKGdldCh3aW5kb3csICdwYWdlLmZpbHRlck9iamVjdC5uYW1lJywgJ2lkZW50aXRpZXMnKSwgdGhpcy53cmFwcGVyU2VydmljZS5pbml0WkFDQnV0dG9uTGlzdGVuZXIpO1xuICAgICAgICB0aGlzLndyYXBwZXJTZXJ2aWNlLmluaXRaQUNQZXJzb25hbFNldHRpbmdzKCk7XG4gICAgICB9Y2F0Y2goZXJyKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5lcnJvcignZXJyb3IgaW5pdGlhbGl6aW5nIHBhZ2Ugc2NyaXB0cycpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ6YWMtd3JhcHBlci1jb250YWluZXJcIiBbaW5uZXJIVE1MXT1cInBhZ2VIdG1sIHwgc2FmZVwiICN6YWNDb250YWluZXIgW25nQ2xhc3NdPVwieydoaWRkZW4nOiBwYWdlTG9hZGluZ31cIj48L2Rpdj5cbjwhLS0gT3BlcmF0aW9uYWwgV2l6YXJkIFVJIC0tPlxuPGRpdiBpZD1cIldpemFyZE1vZGFsXCIgY2xhc3M9XCJtb2RhbCBib3hcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2xvc2UgaWNvbi1jbG9zZVwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiIGRhdGEtaTE4bj1cIlppdGlXaXphcmRcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic3VidGl0bGVcIiBkYXRhLWkxOG49XCJXaXphcmRTZXJ2aWNlXCI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIndpemFyZCBhcmVhIG9wZW5cIj5cbiAgICAgICAgPGxhYmVsIGZvcj1cIldTZXJ2aWNlTmFtZVwiIGRhdGEtaTE4bj1cIlNlcnZpY2VOYW1lXCI+PC9sYWJlbD5cbiAgICAgICAgPGlucHV0IGlkPVwiV1NlcnZpY2VOYW1lXCIgdHlwZT1cInRleHRcIiBtYXhsZW5ndGg9XCIxMDBcIiAvPlxuICAgICAgICA8bGFiZWwgZm9yPVwiV1NlcnZpY2VSb2xlc1wiPjwvbGFiZWw+XG4gICAgPC9kaXY+XG4gICAgPGRpdj48L2Rpdj5cbjwvZGl2PlxuXG5cbjwhLS0gQWRkIEFueSBNb2RhbCBVSSAtLT5cbjxkaXYgaWQ9XCJBZGRBbnlNb2RhbFwiIGNsYXNzPVwibW9kYWwgYm94XCIgc3R5bGU9XCJoZWlnaHQ6IGZpdC1jb250ZW50OyB3aWR0aDogNjAwcHg7IHRyYW5zaXRpb246IHZhcigtLXRyYW5zaXRpb24pO1wiIFtuZ0NsYXNzXT1cInsnaGlkZGVuJzogcGFnZUxvYWRpbmd9XCI+XG4gICAgPGRpdiBjbGFzcz1cImNsb3NlIGljb24tY2xvc2VcIj48L2Rpdj5cbiAgICA8ZGl2IGlkPVwiU2VsZWN0MVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIiBkYXRhLWkxOG49XCJBZGRUaXRsZVwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGlkPVwiU2VsZWN0b3JcIiBjbGFzcz1cImdyaWQgZHVhbFwiPlxuICAgICAgICAgICAgPGRpdiBpZD1cIklubGluZUFkZElkZW50aXR5QnV0dG9uXCIgY2xhc3M9XCJpY29uQnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlIGljb24taWRlbnRpdHlcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIiBkYXRhLWkxOG49XCJBZGRJZGVudGl0eVwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGlkPVwiSW5saW5lQWRkU2VydmljZUJ1dHRvblwiIGNsYXNzPVwiaWNvbkJ1dHRvblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZSBpY29uLXNlcnZpY2VzXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCIgZGF0YS1pMThuPVwiQWRkU2VydmljZVwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBpZD1cIklubGluZUlkZW50aXR5QXJlYVwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiBjbGFzcz1cImFueWFkZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIiBkYXRhLWkxOG49XCJBZGRTaW1wbGVJZGVudGl0eVwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGlkPVwiSWRlbnRpdHlMb2FkZXJcIiBjbGFzcz1cImNlbnRlclwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZHMtcmlwcGxlXCI+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cIklkZW50aXR5MVwiIGNsYXNzPVwiYW55aWRcIj5cbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJJZE5hbWVcIiBkYXRhLWkxOG49XCJOYW1lXCI+PC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCBpZD1cIklkTmFtZVwiIHR5cGU9XCJ0ZXh0XCIgbWF4bGVuZ3RoPVwiNTBcIiBkYXRhLWkxOG49XCJFbnRlck5hbWVcIiAvPlxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cIklkUm9sZXNcIiBkYXRhLWkxOG49XCJSb2xlQXR0cmlidXRlc1wiPjwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGlkPVwiSWRSb2xlc1wiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbnNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2PjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJDcmVhdGVJZEJ1dHRvblwiIGNsYXNzPVwiYnV0dG9uXCIgZGF0YS1pMThuPVwiQ3JlYXRlXCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgaWQ9XCJJZGVudGl0eTJcIiBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCIgY2xhc3M9XCJhbnlpZFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJJZGVudGl0eVFyQ29kZVwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGlkPVwiSWRlbnRpdHlEb3dubG9hZFwiIGNsYXNzPVwibGlua0J1dHRvblwiIGRhdGEtaTE4bj1cIkRvd25sb2FkSldUXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBpZD1cIkRvbmVJZEJ1dHRvblwiIGNsYXNzPVwiYnV0dG9uXCIgZGF0YS1pMThuPVwiRG9uZVwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBpZD1cIklubGluZVNlcnZpY2VBcmVhXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiIGNsYXNzPVwiYW55YWRkXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiIGRhdGEtaTE4bj1cIkFkZFNpbXBsZVNlcnZpY2VcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cIlNTZXJ2aWNlTG9hZGVyXCIgY2xhc3M9XCJjZW50ZXJcIiBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGRzLXJpcHBsZVwiPjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgaWQ9XCJTZXJ2aWNlMVwiIGNsYXNzPVwiYW55c2VydmljZVwiPlxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cIlNTZXJ2aWNlTmFtZVwiIGRhdGEtaTE4bj1cIlNlcnZpY2VOYW1lXCI+PC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCBpZD1cIlNTZXJ2aWNlTmFtZVwiIHR5cGU9XCJ0ZXh0XCIgbWF4bGVuZ3RoPVwiNTBcIiBkYXRhLWkxOG49XCJFbnRlck5hbWVcIiAvPlxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cIldoZXJlSG9zdGVkXCIgZGF0YS1pMThuPVwiV2hlcmVIb3N0ZWRcIj48L2xhYmVsPlxuICAgICAgICAgICAgPGRpdiBpZD1cIldoZXJlSG9zdGVkXCI+PC9kaXY+XG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwiV2hhdElzSXRcIiBkYXRhLWkxOG49XCJXaGF0U2hhcmVcIj48L2xhYmVsPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgYWRkcmVzc0Z1bGxcIj5cbiAgICAgICAgICAgICAgICA8c2VsZWN0IGlkPVwiSG9zdGVkUHJvdG9jb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInRjcFwiPnRjcDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwidWRwXCI+dWRwPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPGlucHV0IGlkPVwiSG9zdGVkSG9zdFwiIHR5cGU9XCJ0ZXh0XCIgbWF4bGVuZ3RoPVwiMTAwXCIgdmFsdWU9XCJsb2NhbGhvc3RcIiBkYXRhLWkxOG49XCJFZ0hvc3RcIiAvPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cIkhvc3RlZFBvcnRcIiB0eXBlPVwibnVtYmVyXCIgbWF4bGVuZ3RoPVwiMTBcIiB2YWx1ZT1cIjgwXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cIldob0FjY2Vzc2VzXCIgZGF0YS1pMThuPVwiV2hvQWNjZXNzZXNcIj48L2xhYmVsPlxuICAgICAgICAgICAgPGRpdiBpZD1cIldob0FjY2Vzc2VzXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGlkPVwiSXNFbmNyeXB0aW9uUmVxdWlyZWRcIiBjbGFzcz1cImZvcm1pbmZvXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBjaGVja0xhYmVsXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBpZD1cIlNpbXBsZUVuY3J5cHRpb25SZXF1aXJlZFwiIGNsYXNzPVwidG9nZ2xlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzd2l0Y2hcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvZ2dsZUxhYmVsXCIgZGF0YS1pMThuPVwiUmVxdWlyZUVuY3J5cHRpb25cIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cIkhvd1RvXCIgZGF0YS1pMThuPVwiSG93U2hhcmVcIj48L2xhYmVsPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgYWRkcmVzc1BvcnRcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJIb3dUb1wiIHR5cGU9XCJ0ZXh0XCIgbWF4bGVuZ3RoPVwiMTAwXCIgZGF0YS1pMThuPVwiRWdIb3N0XCIgLz5cbiAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJIb3dUb1BvcnRcIiB0eXBlPVwibnVtYmVyXCIgbWF4bGVuZ3RoPVwiMTBcIiB2YWx1ZT1cIjgwXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbnNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlua0J1dHRvbiBjbG9zZXJcIiBkYXRhLWkxOG49XCJDYW5jZWxcIiBzdHlsZT1cIndpZHRoOiBmaXQtY29udGVudDtcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiQ3JlYXRlQnV0dG9uXCIgY2xhc3M9XCJidXR0b25cIiBkYXRhLWkxOG49XCJDcmVhdGVcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cIlNlcnZpY2UyXCIgY2xhc3M9XCJhbnlzZXJ2aWNlXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiPlxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cIlNlcnZpY2VIYXBwZW5cIiBkYXRhLWkxOG49XCJTZXJ2aWNlSGFwcGVuXCI+PC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJTZXJ2aWNlSGFwcGVuXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uc1wiPlxuICAgICAgICAgICAgICAgIDxkaXY+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBpZD1cIkRvbmVTZXJ2aWNlQnV0dG9uXCIgY2xhc3M9XCJidXR0b25cIiBkYXRhLWkxOG49XCJEb25lXCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGlkPVwiT3BlcmF0aW9uQ29tbWFuZHNcIiBjbGFzcz1cImNvbW1hbmRzXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiIGRhdGEtaTE4bj1cIkV4ZWN1dGlvbk9wZXJhdGlvbnNcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cIkV4ZWN1dGlvblN0ZXBzXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgaWQ9XCJJY29uRG93bmxvYWRcIiBjbGFzcz1cImljb24gaWNvbi1kb3dubG9hZFwiPjwvZGl2PlxuICAgICAgICA8bGFiZWwgZGF0YS1pMThuPVwiQ0xJQ29tbWFuZHNcIj48L2xhYmVsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRlZFwiPlxuICAgICAgICAgICAgPGlucHV0IGlkPVwiQ0xJQ29tbWFuZHNcIiB0eXBlPVwidGV4dFwiIHJlYWRvbmx5Lz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWNvcHkgY29weVwiIGRhdGEtY29weT1cIkNMSUNvbW1hbmRzXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bGFiZWwgZGF0YS1pMThuPVwiQVBJQ2FsbHNcIj48L2xhYmVsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRlZFwiPlxuICAgICAgICAgICAgPGlucHV0IGlkPVwiQXBpQ2FsbFwiIHR5cGU9XCJ0ZXh0XCIgcmVhZG9ubHkgLz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWNvcHkgY29weVwiIGRhdGEtY29weT1cIkFwaUNhbGxcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGVkXCI+XG4gICAgICAgICAgICA8dGV4dGFyZWEgaWQ9XCJBcGlKc29uXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWNvcHkgY29weSBzd2FwXCIgZGF0YS1jb3B5PVwiQXBpSnNvblwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuPC9kaXY+XG48bGliLWxvYWRpbmctaW5kaWNhdG9yICpuZ0lmPVwibG9hZGluZ1wiIFtpc0xvYWRpbmddPVwibG9hZGluZ1wiPjwvbGliLWxvYWRpbmctaW5kaWNhdG9yPiJdfQ==
|
|
148
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemFjLXdyYXBwZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL3dyYXBwZXJzL3phYy13cmFwcGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy93cmFwcGVycy96YWMtd3JhcHBlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7RUFjRTtBQUVGLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFxQixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDOUUsT0FBTyxFQUFTLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxtQkFBbUIsRUFBeUIsTUFBTSw2QkFBNkIsQ0FBQztBQUN4RixPQUFPLEVBQUMsU0FBUyxFQUFTLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFDMUUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNsQyxPQUFPLEVBQWtCLGdCQUFnQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFJbEYsT0FBTyxFQUFvQixpQkFBaUIsRUFBQyxNQUFNLG9DQUFvQyxDQUFDOzs7Ozs7Ozs7OztBQUN4RixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFbEMsTUFLYSxtQkFBbUI7SUFXOUIsWUFDeUMsY0FBc0MsRUFDekMsZUFBZ0MsRUFDMUQsYUFBNEIsRUFDRCxZQUErQixFQUMxRCxNQUFjO1FBSmUsbUJBQWMsR0FBZCxjQUFjLENBQXdCO1FBQ3pDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUMxRCxrQkFBYSxHQUFi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QUFDLENBQUM7Z0JBQ3pDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7Z0JBQzNCLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSx3QkFBd0IsRUFBRSxZQUFZLENBQUMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDLENBQUM7Z0JBQ3BILElBQUksQ0FBQyxjQUFjLENBQUMsdUJBQXVCLEVBQUUsQ0FBQzthQUMvQztZQUFBLE9BQU0sR0FBRyxFQUFFO2dCQUNWLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7YUFDN0Q7b0JBQVM7Z0JBQ1IsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7YUFDdEI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBMUdVLG1CQUFtQixrQkFZbEIsbUJBQW1CLGFBQ25CLGdCQUFnQiwwQ0FFaEIsaUJBQWlCO21HQWZsQixtQkFBbUIscUtDakNoQywwNU1Ba0lxRjs7U0RqR3hFLG1CQUFtQjs0RkFBbkIsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNJLGlCQUFpQjs7MEJBZ0J4QixNQUFNOzJCQUFDLG1CQUFtQjs7MEJBQzFCLE1BQU07MkJBQUMsZ0JBQWdCOzswQkFFdkIsTUFBTTsyQkFBQyxpQkFBaUI7aUVBTkYsWUFBWTtzQkFBdEMsU0FBUzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAgICBDb3B5cmlnaHQgTmV0Rm91bmRyeSBJbmMuXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuaW1wb3J0IHtDb21wb25lbnQsIEluamVjdCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1JvdXRlciwgTmF2aWdhdGlvbkVuZH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7WkFDX1dSQVBQRVJfU0VSVklDRSwgWmFjV3JhcHBlclNlcnZpY2VDbGFzc30gZnJvbSBcIi4vemFjLXdyYXBwZXItc2VydmljZS5jbGFzc1wiO1xuaW1wb3J0IHtjbG9uZURlZXAsIGRlbGF5LCBpbnZva2UsIGlzRW1wdHksIGRlZmVyLCBzZXQsIGdldH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtTZXR0aW5nc1NlcnZpY2UsIFNFVFRJTkdTX1NFUlZJQ0V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9zZXR0aW5ncy5zZXJ2aWNlXCI7XG5pbXBvcnQge0xvZ2dlclNlcnZpY2V9IGZyb20gXCIuLi9tZXNzYWdpbmcvbG9nZ2VyLnNlcnZpY2VcIjtcblxuaW1wb3J0ICQgZnJvbSAnanF1ZXJ5JztcbmltcG9ydCB7TG9naW5TZXJ2aWNlQ2xhc3MsIFpBQ19MT0dJTl9TRVJWSUNFfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvbG9naW4tc2VydmljZS5jbGFzc1wiO1xuY29uc3QgY29udGV4dCA9IHdpbmRvd1snY29udGV4dCddO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC16YWMtd3JhcHBlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3phYy13cmFwcGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi96YWMtd3JhcHBlci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBaYWNXcmFwcGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIGxvYWRpbmcgPSBmYWxzZTtcbiAgcGFnZUh0bWw6IGFueSA9ICcnO1xuICBzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHRpdGxlID0gJ1ppdGkgQ29uc29sZSc7XG4gIHdhaXRpbmdGb3JTZXNzaW9uID0gdHJ1ZTtcbiAgcGFnZUxvYWRpbmcgPSBmYWxzZTtcbiAgc2V0dGluZ3M6IGFueSA9IHt9O1xuICBAVmlld0NoaWxkKCd6YWNDb250YWluZXInKSB6YWNDb250YWluZXI6IGFueTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIEBJbmplY3QoWkFDX1dSQVBQRVJfU0VSVklDRSkgcHJpdmF0ZSB3cmFwcGVyU2VydmljZTogWmFjV3JhcHBlclNlcnZpY2VDbGFzcyxcbiAgICAgIEBJbmplY3QoU0VUVElOR1NfU0VSVklDRSkgcHJpdmF0ZSBzZXR0aW5nc1NlcnZpY2U6IFNldHRpbmdzU2VydmljZSxcbiAgICAgIHByaXZhdGUgbG9nZ2VyU2VydmljZTogTG9nZ2VyU2VydmljZSxcbiAgICAgIEBJbmplY3QoWkFDX0xPR0lOX1NFUlZJQ0UpIHByaXZhdGUgbG9naW5TZXJ2aWNlOiBMb2dpblNlcnZpY2VDbGFzcyxcbiAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICkge1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy53cmFwcGVyU2VydmljZS5pbml0WmFjKCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy53cmFwcGVyU2VydmljZS5wYWdlQ2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy53YWl0aW5nRm9yU2Vzc2lvbikge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxvYWRQYWdlKCk7XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICB0aGlzLndyYXBwZXJTZXJ2aWNlLnppdGlVcGRhdGVkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMud2FpdGluZ0ZvclNlc3Npb24pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5sb2FkUGFnZSgpO1xuICAgICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3NDaGFuZ2Uuc3Vic2NyaWJlKGFzeW5jIChyZXN1bHRzOmFueSkgPT4ge1xuICAgICAgICBjb25zdCBoYXNTZXNzaW9uID0gIWlzRW1wdHkocmVzdWx0cz8uc2Vzc2lvbj8uaWQpO1xuICAgICAgICBjb25zdCBjb250cm9sbGVyQ2hhbmdlZCA9IHRoaXMuc2V0dGluZ3M/LnNlc3Npb24/LmNvbnRyb2xsZXJEb21haW4gIT09IHJlc3VsdHM/LnNlc3Npb24/LmNvbnRyb2xsZXJEb21haW47XG4gICAgICAgIGlmIChoYXNTZXNzaW9uICYmICghdGhpcy5wYWdlTG9hZGluZyB8fCBjb250cm9sbGVyQ2hhbmdlZCkpIHtcbiAgICAgICAgICB0aGlzLnBhZ2VMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnBhZ2VIdG1sID0gdW5kZWZpbmVkO1xuICAgICAgICAgIGRlZmVyKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMubG9hZFBhZ2UoKTtcbiAgICAgICAgICAgIHRoaXMud2FpdGluZ0ZvclNlc3Npb24gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucGFnZUxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldHRpbmdzID0gY2xvbmVEZWVwKHJlc3VsdHMpO1xuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZSgoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZFBhZ2UoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgKTtcbiAgICBkZWZlcigoKSA9PiB7XG4gICAgICB0aGlzLndyYXBwZXJTZXJ2aWNlLmluaXRaQUNCdXR0b25MaXN0ZW5lcigpO1xuICAgIH0pXG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMucGFnZUh0bWwgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBhc3luYyBsb2FkUGFnZSgpIHtcbiAgICB0aGlzLnBhZ2VIdG1sID0gYXdhaXQgdGhpcy53cmFwcGVyU2VydmljZS5sb2FkQ3VycmVudFBhZ2UoKTtcbiAgICBkZWZlcigoKSA9PiB7XG4gICAgICB0aGlzLndyYXBwZXJTZXJ2aWNlLnJlc2V0WmFjRXZlbnRzKCk7XG4gICAgICB0aGlzLmV4ZWN1dGVQYWdlU2NyaXB0cygpO1xuICAgIH0pO1xuICB9XG5cbiAgZXhlY3V0ZVBhZ2VTY3JpcHRzKCkge1xuICAgIGNvbnN0IHNjcmlwdHMgPSB0aGlzLnphY0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKTtcbiAgICBmb3IgKGNvbnN0IHNjcmlwdCBvZiBzY3JpcHRzKSB7XG4gICAgICBjb25zdCBzY3JpcHRDb3B5ID0gPEhUTUxTY3JpcHRFbGVtZW50PmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgc2NyaXB0Q29weS50eXBlID0gc2NyaXB0LnR5cGUgPyBzY3JpcHQudHlwZSA6ICd0ZXh0L2phdmFzY3JpcHQnO1xuICAgICAgaWYgKHNjcmlwdC5pbm5lckhUTUwpIHtcbiAgICAgICAgc2NyaXB0Q29weS5pbm5lckhUTUwgPSBzY3JpcHQuaW5uZXJIVE1MO1xuICAgICAgfSBlbHNlIGlmIChzY3JpcHQuc3JjKSB7XG4gICAgICAgIHNjcmlwdENvcHkuc3JjID0gc2NyaXB0LnNyYztcbiAgICAgIH1cbiAgICAgIHNjcmlwdENvcHkuYXN5bmMgPSBmYWxzZTtcbiAgICAgIHNjcmlwdC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChzY3JpcHRDb3B5LCBzY3JpcHQpO1xuICAgIH1cbiAgICBkZWZlcigoKSA9PiB7XG4gICAgICB0cnl7XG4gICAgICAgIHNldCh3aW5kb3csICdjb250ZXh0Lml0ZW1zJywgW10pO1xuICAgICAgICBzZXQod2luZG93LCAnY29udGV4dC53YXRjaGVycycsIFtdKTtcbiAgICAgICAgc2V0KHdpbmRvdywgJ2NvbnRleHQuZXZlbnRXYXRjaGVycycsIFtdKTtcbiAgICAgICAgaW52b2tlKHdpbmRvdywgJ2FwcC5pbml0Jyk7XG4gICAgICAgIGNvbnRleHQuYWRkTGlzdGVuZXIoZ2V0KHdpbmRvdywgJ3BhZ2UuZmlsdGVyT2JqZWN0Lm5hbWUnLCAnaWRlbnRpdGllcycpLCB0aGlzLndyYXBwZXJTZXJ2aWNlLmluaXRaQUNCdXR0b25MaXN0ZW5lcik7XG4gICAgICAgIHRoaXMud3JhcHBlclNlcnZpY2UuaW5pdFpBQ1BlcnNvbmFsU2V0dGluZ3MoKTtcbiAgICAgIH1jYXRjaChlcnIpIHtcbiAgICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmVycm9yKCdlcnJvciBpbml0aWFsaXppbmcgcGFnZSBzY3JpcHRzJyk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInphYy13cmFwcGVyLWNvbnRhaW5lclwiIFtpbm5lckhUTUxdPVwicGFnZUh0bWwgfCBzYWZlXCIgI3phY0NvbnRhaW5lciBbbmdDbGFzc109XCJ7J2hpZGRlbic6IHBhZ2VMb2FkaW5nfVwiPjwvZGl2PlxuPCEtLSBPcGVyYXRpb25hbCBXaXphcmQgVUkgLS0+XG48ZGl2IGlkPVwiV2l6YXJkTW9kYWxcIiBjbGFzcz1cIm1vZGFsIGJveFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjbG9zZSBpY29uLWNsb3NlXCI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInRpdGxlXCIgZGF0YS1pMThuPVwiWml0aVdpemFyZFwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzdWJ0aXRsZVwiIGRhdGEtaTE4bj1cIldpemFyZFNlcnZpY2VcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwid2l6YXJkIGFyZWEgb3BlblwiPlxuICAgICAgICA8bGFiZWwgZm9yPVwiV1NlcnZpY2VOYW1lXCIgZGF0YS1pMThuPVwiU2VydmljZU5hbWVcIj48L2xhYmVsPlxuICAgICAgICA8aW5wdXQgaWQ9XCJXU2VydmljZU5hbWVcIiB0eXBlPVwidGV4dFwiIG1heGxlbmd0aD1cIjEwMFwiIC8+XG4gICAgICAgIDxsYWJlbCBmb3I9XCJXU2VydmljZVJvbGVzXCI+PC9sYWJlbD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2PjwvZGl2PlxuPC9kaXY+XG5cblxuPCEtLSBBZGQgQW55IE1vZGFsIFVJIC0tPlxuPGRpdiBpZD1cIkFkZEFueU1vZGFsXCIgY2xhc3M9XCJtb2RhbCBib3hcIiBzdHlsZT1cImhlaWdodDogZml0LWNvbnRlbnQ7IHdpZHRoOiA2MDBweDsgdHJhbnNpdGlvbjogdmFyKC0tdHJhbnNpdGlvbik7XCIgW25nQ2xhc3NdPVwieydoaWRkZW4nOiBwYWdlTG9hZGluZ31cIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2xvc2UgaWNvbi1jbG9zZVwiPjwvZGl2PlxuICAgIDxkaXYgaWQ9XCJTZWxlY3QxXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiIGRhdGEtaTE4bj1cIkFkZFRpdGxlXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgaWQ9XCJTZWxlY3RvclwiIGNsYXNzPVwiZ3JpZCBkdWFsXCI+XG4gICAgICAgICAgICA8ZGl2IGlkPVwiSW5saW5lQWRkSWRlbnRpdHlCdXR0b25cIiBjbGFzcz1cImljb25CdXR0b25cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UgaWNvbi1pZGVudGl0eVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiIGRhdGEtaTE4bj1cIkFkZElkZW50aXR5XCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJJbmxpbmVBZGRTZXJ2aWNlQnV0dG9uXCIgY2xhc3M9XCJpY29uQnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlIGljb24tc2VydmljZXNcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIiBkYXRhLWkxOG49XCJBZGRTZXJ2aWNlXCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGlkPVwiSW5saW5lSWRlbnRpdHlBcmVhXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiIGNsYXNzPVwiYW55YWRkXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiIGRhdGEtaTE4bj1cIkFkZFNpbXBsZUlkZW50aXR5XCI+PC9kaXY+XG4gICAgICAgIDxkaXYgaWQ9XCJJZGVudGl0eUxvYWRlclwiIGNsYXNzPVwiY2VudGVyXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxkcy1yaXBwbGVcIj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGlkPVwiSWRlbnRpdHkxXCIgY2xhc3M9XCJhbnlpZFwiPlxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cIklkTmFtZVwiIGRhdGEtaTE4bj1cIk5hbWVcIj48L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0IGlkPVwiSWROYW1lXCIgdHlwZT1cInRleHRcIiBtYXhsZW5ndGg9XCI1MFwiIGRhdGEtaTE4bj1cIkVudGVyTmFtZVwiIC8+XG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwiSWRSb2xlc1wiIGRhdGEtaTE4bj1cIlJvbGVBdHRyaWJ1dGVzXCI+PC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJJZFJvbGVzXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uc1wiPlxuICAgICAgICAgICAgICAgIDxkaXY+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBpZD1cIkNyZWF0ZUlkQnV0dG9uXCIgY2xhc3M9XCJidXR0b25cIiBkYXRhLWkxOG49XCJDcmVhdGVcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cIklkZW50aXR5MlwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiBjbGFzcz1cImFueWlkXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBpZD1cIklkZW50aXR5UXJDb2RlXCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJJZGVudGl0eURvd25sb2FkXCIgY2xhc3M9XCJsaW5rQnV0dG9uXCIgZGF0YS1pMThuPVwiRG93bmxvYWRKV1RcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiRG9uZUlkQnV0dG9uXCIgY2xhc3M9XCJidXR0b25cIiBkYXRhLWkxOG49XCJEb25lXCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGlkPVwiSW5saW5lU2VydmljZUFyZWFcIiBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCIgY2xhc3M9XCJhbnlhZGRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCIgZGF0YS1pMThuPVwiQWRkU2ltcGxlU2VydmljZVwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGlkPVwiU1NlcnZpY2VMb2FkZXJcIiBjbGFzcz1cImNlbnRlclwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZHMtcmlwcGxlXCI+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cIlNlcnZpY2UxXCIgY2xhc3M9XCJhbnlzZXJ2aWNlXCI+XG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwiU1NlcnZpY2VOYW1lXCIgZGF0YS1pMThuPVwiU2VydmljZU5hbWVcIj48L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0IGlkPVwiU1NlcnZpY2VOYW1lXCIgdHlwZT1cInRleHRcIiBtYXhsZW5ndGg9XCI1MFwiIGRhdGEtaTE4bj1cIkVudGVyTmFtZVwiIC8+XG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwiV2hlcmVIb3N0ZWRcIiBkYXRhLWkxOG49XCJXaGVyZUhvc3RlZFwiPjwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGlkPVwiV2hlcmVIb3N0ZWRcIj48L2Rpdj5cbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJXaGF0SXNJdFwiIGRhdGEtaTE4bj1cIldoYXRTaGFyZVwiPjwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBhZGRyZXNzRnVsbFwiPlxuICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9XCJIb3N0ZWRQcm90b2NvbFwiPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwidGNwXCI+dGNwPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJ1ZHBcIj51ZHA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJIb3N0ZWRIb3N0XCIgdHlwZT1cInRleHRcIiBtYXhsZW5ndGg9XCIxMDBcIiB2YWx1ZT1cImxvY2FsaG9zdFwiIGRhdGEtaTE4bj1cIkVnSG9zdFwiIC8+XG4gICAgICAgICAgICAgICAgPGlucHV0IGlkPVwiSG9zdGVkUG9ydFwiIHR5cGU9XCJudW1iZXJcIiBtYXhsZW5ndGg9XCIxMFwiIHZhbHVlPVwiODBcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwiV2hvQWNjZXNzZXNcIiBkYXRhLWkxOG49XCJXaG9BY2Nlc3Nlc1wiPjwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGlkPVwiV2hvQWNjZXNzZXNcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJJc0VuY3J5cHRpb25SZXF1aXJlZFwiIGNsYXNzPVwiZm9ybWluZm9cIiBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGNoZWNrTGFiZWxcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiU2ltcGxlRW5jcnlwdGlvblJlcXVpcmVkXCIgY2xhc3M9XCJ0b2dnbGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN3aXRjaFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9nZ2xlTGFiZWxcIiBkYXRhLWkxOG49XCJSZXF1aXJlRW5jcnlwdGlvblwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwiSG93VG9cIiBkYXRhLWkxOG49XCJIb3dTaGFyZVwiPjwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBhZGRyZXNzUG9ydFwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cIkhvd1RvXCIgdHlwZT1cInRleHRcIiBtYXhsZW5ndGg9XCIxMDBcIiBkYXRhLWkxOG49XCJFZ0hvc3RcIiAvPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cIkhvd1RvUG9ydFwiIHR5cGU9XCJudW1iZXJcIiBtYXhsZW5ndGg9XCIxMFwiIHZhbHVlPVwiODBcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uc1wiPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaW5rQnV0dG9uIGNsb3NlclwiIGRhdGEtaTE4bj1cIkNhbmNlbFwiIHN0eWxlPVwid2lkdGg6IGZpdC1jb250ZW50O1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJDcmVhdGVCdXR0b25cIiBjbGFzcz1cImJ1dHRvblwiIGRhdGEtaTE4bj1cIkNyZWF0ZVwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGlkPVwiU2VydmljZTJcIiBjbGFzcz1cImFueXNlcnZpY2VcIiBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCI+XG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwiU2VydmljZUhhcHBlblwiIGRhdGEtaTE4bj1cIlNlcnZpY2VIYXBwZW5cIj48L2xhYmVsPlxuICAgICAgICAgICAgPGRpdiBpZD1cIlNlcnZpY2VIYXBwZW5cIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25zXCI+XG4gICAgICAgICAgICAgICAgPGRpdj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiRG9uZVNlcnZpY2VCdXR0b25cIiBjbGFzcz1cImJ1dHRvblwiIGRhdGEtaTE4bj1cIkRvbmVcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgaWQ9XCJPcGVyYXRpb25Db21tYW5kc1wiIGNsYXNzPVwiY29tbWFuZHNcIiBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCIgZGF0YS1pMThuPVwiRXhlY3V0aW9uT3BlcmF0aW9uc1wiPjwvZGl2PlxuICAgICAgICA8ZGl2IGlkPVwiRXhlY3V0aW9uU3RlcHNcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cIkljb25Eb3dubG9hZFwiIGNsYXNzPVwiaWNvbiBpY29uLWRvd25sb2FkXCI+PC9kaXY+XG4gICAgICAgIDxsYWJlbCBkYXRhLWkxOG49XCJDTElDb21tYW5kc1wiPjwvbGFiZWw+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGVkXCI+XG4gICAgICAgICAgICA8aW5wdXQgaWQ9XCJDTElDb21tYW5kc1wiIHR5cGU9XCJ0ZXh0XCIgcmVhZG9ubHkvPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24tY29weSBjb3B5XCIgZGF0YS1jb3B5PVwiQ0xJQ29tbWFuZHNcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxsYWJlbCBkYXRhLWkxOG49XCJBUElDYWxsc1wiPjwvbGFiZWw+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGVkXCI+XG4gICAgICAgICAgICA8aW5wdXQgaWQ9XCJBcGlDYWxsXCIgdHlwZT1cInRleHRcIiByZWFkb25seSAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24tY29weSBjb3B5XCIgZGF0YS1jb3B5PVwiQXBpQ2FsbFwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0ZWRcIj5cbiAgICAgICAgICAgIDx0ZXh0YXJlYSBpZD1cIkFwaUpzb25cIj48L3RleHRhcmVhPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24tY29weSBjb3B5IHN3YXBcIiBkYXRhLWNvcHk9XCJBcGlKc29uXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG48L2Rpdj5cbjxsaWItbG9hZGluZy1pbmRpY2F0b3IgKm5nSWY9XCJsb2FkaW5nXCIgW2lzTG9hZGluZ109XCJsb2FkaW5nXCI+PC9saWItbG9hZGluZy1pbmRpY2F0b3I+Il19
|
|
@@ -908,7 +908,7 @@ class ZacWrapperService extends ZacWrapperServiceClass {
|
|
|
908
908
|
}
|
|
909
909
|
handleError(result) {
|
|
910
910
|
this.loggerService.error(result);
|
|
911
|
-
const error = result;
|
|
911
|
+
const error = result.error ? result.error : result;
|
|
912
912
|
let message = '';
|
|
913
913
|
if (error.cause && error.causeMessage && error.causeMessage.length > 0)
|
|
914
914
|
message = error.causeMessage;
|
|
@@ -920,7 +920,7 @@ class ZacWrapperService extends ZacWrapperServiceClass {
|
|
|
920
920
|
message = error.message;
|
|
921
921
|
else
|
|
922
922
|
message = error;
|
|
923
|
-
return { error: message };
|
|
923
|
+
return { error: message, data: [] };
|
|
924
924
|
}
|
|
925
925
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ZacWrapperService, deps: [{ token: ZITI_DOMAIN_CONTROLLER }, { token: ZITI_URLS }, { token: SETTINGS_SERVICE }, { token: i1.HttpClient }, { token: i2.Router }, { token: i3.GrowlerService }, { token: i4.LoggerService }, { token: i5.ValidationService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
926
926
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ZacWrapperService, providedIn: 'root' }); }
|
|
@@ -939,4 +939,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
939
939
|
type: Inject,
|
|
940
940
|
args: [SETTINGS_SERVICE]
|
|
941
941
|
}] }, { type: i1.HttpClient }, { type: i2.Router }, { type: i3.GrowlerService }, { type: i4.LoggerService }, { type: i5.ValidationService }]; } });
|
|
942
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemFjLXdyYXBwZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy93cmFwcGVycy96YWMtd3JhcHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFO0FBRUYsT0FBTyxFQUFlLE1BQU0sRUFBRSxVQUFVLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRy9FLE9BQU8sRUFBQyxhQUFhLEVBQVMsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDdEQsT0FBTyxFQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFRLE1BQU0sUUFBUSxDQUFDO0FBQ2hELE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLEVBQUMsc0JBQXNCLEVBQThCLE1BQU0sK0NBQStDLENBQUM7QUFDbEgsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxnQkFBZ0IsRUFBa0IsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRixPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUluRSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7Ozs7OztBQUl0QyxhQUFhO0FBQ2IsTUFBTSxFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUMsR0FBRyxNQUFNLENBQUM7QUFFaEMsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFRO0lBQzNCLEdBQUcsRUFBRTs7Ozs7Ozs7OztpQkFVUTtJQUNiLEdBQUcsRUFBRSx3REFBd0Q7SUFDN0QsSUFBSSxFQUFFLDBCQUEwQjtJQUNoQyxPQUFPLEVBQUUsNkJBQTZCO0lBQ3RDLElBQUksRUFBRTs7O29CQUdVO0lBQ2hCLE1BQU0sRUFB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IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG5pbXBvcnQge0V2ZW50RW1pdHRlciwgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0h0dHBDbGllbnR9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xuaW1wb3J0IHtTdWJqZWN0LCBTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge05hdmlnYXRpb25FbmQsIFJvdXRlcn0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHtSZXNvbHZlcn0gZnJvbSBcIkBzdG9wbGlnaHQvanNvbi1yZWYtcmVzb2x2ZXJcIjtcbmltcG9ydCB7Z2V0LCBpc0VtcHR5LCBzZXQsIHVuc2V0fSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0ICQgZnJvbSAnanF1ZXJ5JztcbmltcG9ydCB7WklUSV9ET01BSU5fQ09OVFJPTExFUiwgWml0aURvbWFpbkNvbnRyb2xsZXJTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXMveml0aS1kb21haW4tY29udHJvbGxlci5zZXJ2aWNlXCI7XG5pbXBvcnQge1pJVElfVVJMU30gZnJvbSBcIi4uLy4uL3ppdGktY29uc29sZS5jb25zdGFudHNcIjtcbmltcG9ydCB7U0VUVElOR1NfU0VSVklDRSwgU2V0dGluZ3NTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvc2V0dGluZ3Muc2VydmljZVwiO1xuaW1wb3J0IHtaYWNXcmFwcGVyU2VydmljZUNsYXNzfSBmcm9tIFwiLi96YWMtd3JhcHBlci1zZXJ2aWNlLmNsYXNzXCI7XG5pbXBvcnQge0dyb3dsZXJTZXJ2aWNlfSBmcm9tIFwiLi4vbWVzc2FnaW5nL2dyb3dsZXIuc2VydmljZVwiO1xuaW1wb3J0IHtHcm93bGVyTW9kZWx9IGZyb20gXCIuLi9tZXNzYWdpbmcvZ3Jvd2xlci5tb2RlbFwiO1xuaW1wb3J0IHtMb2dnZXJTZXJ2aWNlfSBmcm9tIFwiLi4vbWVzc2FnaW5nL2xvZ2dlci5zZXJ2aWNlXCI7XG5pbXBvcnQge1ZFUlNJT059IGZyb20gXCIuLi8uLi92ZXJzaW9uXCI7XG5pbXBvcnQge1ZhbGlkYXRpb25TZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvdmFsaWRhdGlvbi5zZXJ2aWNlXCI7XG5pbXBvcnQge1pJVElfREFUQV9TRVJWSUNFLCBaaXRpRGF0YVNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy96aXRpLWRhdGEuc2VydmljZVwiO1xuXG4vLyBAdHMtaWdub3JlXG5jb25zdCB7bW9kYWwsIGdyb3dsZXJ9ID0gd2luZG93O1xuXG5leHBvcnQgY29uc3QgQ09NUE9ORU5UUzogYW55ID0ge1xuICAgIGFwaTogYDxsYWJlbCBkYXRhLWkxOG49XCJBUElDYWxsc1wiPjwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbmZpZ0JveFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0ZWRcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJBcGlVcmxcIiB0eXBlPVwidGV4dFwiIHJlYWRvbmx5IC8+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24tY29weSBjb3B5XCIgZGF0YS1jb3B5PVwiQXBpVXJsXCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGVkXCI+XG4gICAgICAgICAgICAgICAgPHRleHRhcmVhIGlkPVwiQXBpUGFyYW1zXCIgYXV0b2NhcGl0YWxpemU9XCJvZmZcIiBzdHlsZT1cImhlaWdodDo1MDBweFwiPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24tY29weSBjb3B5IHN3YXBcIiBkYXRhLWNvcHk9XCJBcGlQYXJhbXNcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PiBcbiAgICAgICAgICA8L2Rpdj5gLFxuICAgIGFkZDogYDxkaXYgY2xhc3M9XCJhY3Rpb24gaWNvbi1wbHVzXCIgZGF0YS1hY3Rpb249XCJhZGRcIj48L2Rpdj5gLFxuICAgIGxpbmU6IGA8ZGl2IGNsYXNzPVwibGluZVwiPjwvZGl2PmAsXG4gICAgbm9pdGVtczogYDxkaXYgY2xhc3M9XCJub2l0ZW1zXCI+PC9kaXY+YCxcbiAgICBzYXZlOiBgPGRpdiBjbGFzcz1cImJ1dHRvbnNcIj5cbiAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpbmtCdXR0b24gY2xvc2VyXCIgZGF0YS1pMThuPVwiT29wc1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiU2F2ZUJ1dHRvblwiIGNsYXNzPVwiYnV0dG9uXCIgZGF0YS1kZWZpbmVkPVwic2F2ZVwiIGRhdGEtaTE4bj1cIlNhdmVcIj48L2Rpdj5cbiAgICAgICAgICAgICA8L2Rpdj5gLFxuICAgIHNlYXJjaDogYDxkaXYgY2xhc3M9XCJmaWx0ZXJzXCI+XG4gICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cIlNlYXJjaEZpbHRlclwiIGRhdGEtZGVmaW5lZD1cInNlYXJjaFwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJzZWFyY2hcIiBkYXRhLWkxOG49XCJFbnRlckZpbHRlclwiIC8+XG4gICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbGVhciBpY29uLWNsZWFyXCIgZGF0YS1kZWZpbmVkPVwiY2xlYXJcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaEJ1dHRvbiBpY29uLXNlYXJjaFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY291bnRlcnNcIj48c3BhbiBpZD1cIlN0YXJ0XCI+LTwvc3Bhbj4tPHNwYW4gaWQ9XCJFbmRcIj4tPC9zcGFuPiA8c3BhbiBkYXRhLWkxOG49XCJPZlwiPjwvc3Bhbj4gPHNwYW4gaWQ9XCJUb3RhbFwiPi08L3NwYW4+PC9kaXY+XG4gICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYXZpZ2F0ZSBwcmV2IGljb24tcHJldiBkaXNhYmxlZFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmF2aWdhdGUgbmV4dCBpY29uLW5leHQgZGlzYWJsZWRcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PmAsXG4gICAgdGFiSWRlbnRpdGllczogYDxkaXYgY2xhc3M9XCJ0YWJzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYlwiIGRhdGEtZ289XCIvaWRlbnRpdGllc1wiIGRhdGEtaTE4bj1cIklkZW50aXRpZXNcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFiXCIgZGF0YS1nbz1cIi9yZWNpcGVzXCIgZGF0YS1pMThuPVwiUmVjaXBlc1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJcIiBkYXRhLWdvPVwiL3Rlcm1pbmF0b3JzXCIgZGF0YS1pMThuPVwiVGVybWluYXRvcnNcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFiXCIgZGF0YS1nbz1cIi9wb3N0dXJlLWNoZWNrc1wiIGRhdGEtaTE4bj1cIlBvc3R1cmVDaGVja3NcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PmAsXG4gICAgdGFiUG9saWNpZXM6IGA8ZGl2IGNsYXNzPVwidGFic1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFiXCIgZGF0YS1nbz1cIi9zZXJ2aWNlLXBvbGljaWVzXCIgZGF0YS1pMThuPVwiU2VydmljZVBvbGljaWVzXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJcIiBkYXRhLWdvPVwiL3JvdXRlci1wb2xpY2llc1wiIGRhdGEtaTE4bj1cIkVkZ2VSb3V0ZXJQb2xpY2llc1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFiXCIgZGF0YS1nbz1cIi9zZXJ2aWNlLXJvdXRlci1wb2xpY2llc1wiIGRhdGEtaTE4bj1cIlNlcnZpY2VSb3V0ZXJQb2xpY2llc1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFiXCIgZGF0YS1nbz1cIi9hdXRoLXBvbGljaWVzXCIgZGF0YS1pMThuPVwiQXV0aFBvbGljaWVzXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJcIiBkYXRhLWdvPVwiL2p3dC1zaWduZXJzXCIgZGF0YS1pMThuPVwiSnd0U2lnbmVyc1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PmAsXG4gICAgdGFiUm91dGVyczogYDxkaXYgY2xhc3M9XCJ0YWJzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJcIiBkYXRhLWdvPVwiL3JvdXRlcnNcIiBkYXRhLWkxOG49XCJFZGdlUm91dGVyc1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFiXCIgZGF0YS1nbz1cIi90cmFuc2l0LXJvdXRlcnNcIiBkYXRhLWkxOG49XCJUcmFuc2l0Um91dGVyc1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFiXCIgZGF0YS1nbz1cIi9yb3V0ZXItcG9saWNpZXNcIiBkYXRhLWkxOG49XCJFZGdlUm91dGVyUG9saWNpZXNcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5gLFxuICAgIHRhYlNlcnZlcnM6IGA8ZGl2IGNsYXNzPVwidGFic1wiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYlwiIGRhdGEtZ289XCIvc2VydmVyc1wiIGRhdGEtaTE4bj1cIk1hbmFnZVNlcnZlcnNcIj5NYW5hZ2UgU2VydmVyczwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYlwiIGRhdGEtZ289XCIvb3JnYW5pemF0aW9uXCIgZGF0YS1pMThuPVwiTWFuYWdlRmllbGRzXCI+TWFuYWdlIEN1c3RvbSBGaWVsZHM8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+YCxcbiAgICB0YWJTZXJ2aWNlczogYDxkaXYgY2xhc3M9XCJ0YWJzXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFiXCIgZGF0YS1nbz1cIi9zZXJ2aWNlc1wiIGRhdGEtaTE4bj1cIlNlcnZpY2VzXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFiXCIgZGF0YS1nbz1cIi9jb25maWdzXCIgZGF0YS1pMThuPVwiQ29uZmlndXJhdGlvbnNcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJcIiBkYXRhLWdvPVwiL2NvbmZpZy10eXBlc1wiIGRhdGEtaTE4bj1cIkNvbmZpZ1R5cGVzXCI+PC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PmAsXG4gICAgdGFiU2Vzc2lvbnM6IGA8ZGl2IGNsYXNzPVwidGFic1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFiXCIgZGF0YS1nbz1cIi9zZXNzaW9uc1wiIGRhdGEtaTE4bj1cIlNlc3Npb25zXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJcIiBkYXRhLWdvPVwiL2FwaS1zZXNzaW9uc1wiIGRhdGEtaTE4bj1cIkFQSVNlc3Npb25zXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+YCxcbiAgICBjdXN0b210YWdzOiBgPGxhYmVsIGRhdGEtaTE4bj1cIlRhZ3NcIj48L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25maWdCb3hcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cIlRhZ0V4dGVuZGVkXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+YFxufVxuXG5cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIFphY1dyYXBwZXJTZXJ2aWNlIGV4dGVuZHMgWmFjV3JhcHBlclNlcnZpY2VDbGFzcyB7XG5cbiAgICBtb2RhbFNob3c7XG4gICAgbW9kYWxDbG9zZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KFpJVElfRE9NQUlOX0NPTlRST0xMRVIpIG92ZXJyaWRlIHppdGlEb21haW5Db250cm9sbGVyOiBaaXRpRG9tYWluQ29udHJvbGxlclNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoWklUSV9VUkxTKSBvdmVycmlkZSBVUkxTOmFueSxcbiAgICAgICAgQEluamVjdChTRVRUSU5HU19TRVJWSUNFKSBvdmVycmlkZSBzZXR0aW5nc1NlcnZpY2U6IFNldHRpbmdzU2VydmljZSxcbiAgICAgICAgb3ZlcnJpZGUgaHR0cDogSHR0cENsaWVudCxcbiAgICAgICAgb3ZlcnJpZGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIG92ZXJyaWRlIGdyb3dsZXJTZXJ2aWNlOiBHcm93bGVyU2VydmljZSxcbiAgICAgICAgb3ZlcnJpZGUgbG9nZ2VyU2VydmljZTogTG9nZ2VyU2VydmljZSxcbiAgICAgICAgb3ZlcnJpZGUgdmFsaWRhdGlvblNlcnZpY2U6IFZhbGlkYXRpb25TZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKHppdGlEb21haW5Db250cm9sbGVyLCBVUkxTLCBzZXR0aW5nc1NlcnZpY2UsIGh0dHAsIHJvdXRlciwgZ3Jvd2xlclNlcnZpY2UsIGxvZ2dlclNlcnZpY2UsIHZhbGlkYXRpb25TZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5nZXRDdXJyZW50UGFnZSh0aGlzLnJvdXRlci51cmwpO1xuICAgICAgICB0aGlzLmluaXRSb3V0ZUxpc3RlbmVyKCk7XG4gICAgfVxuXG4gICAgaW5pdFphYygpIHtcbiAgICAgICAgaWYgKHRoaXMuemFjSW5pdCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFwcEluaXQgPSBnZXQod2luZG93LCAnYXBwLmluaXQnKTtcbiAgICAgICAgdGhpcy5zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3NDaGFuZ2Uuc3Vic2NyaWJlKChzZXR0aW5ncykgPT4ge1xuICAgICAgICAgICAgc2V0KHdpbmRvdywgJ3NlcnZpY2UuY2FsbCcsIHRoaXMuaGFuZGxlU2VydmljZUNhbGwuYmluZCh0aGlzKSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmluaXRaYWNMaXN0ZW5lcnMoKTtcbiAgICAgICAgdGhpcy56YWNJbml0ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBpbml0WmFjTGlzdGVuZXJzKCkge1xuICAgICAgICBzZXQod2luZG93LCAnaGVhZGVyLmdvdG8nLCAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdXJsID0gJChldmVudC5jdXJyZW50VGFyZ2V0KS5kYXRhKFwiZ29cIik7XG4gICAgICAgICAgICBsZXQgcm91dGUgPSB0aGlzLmdldEN1cnJlbnRQYWdlKHVybCk7XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbcm91dGVdKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDdXJyZW50UGFnZSh1cmwpIHtcbiAgICAgICAgbGV0IHJvdXRlID0gJyc7XG4gICAgICAgIHN3aXRjaCAodXJsKSB7XG4gICAgICAgICAgICBjYXNlICcnOlxuICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9ICdpbmRleCc7XG4gICAgICAgICAgICAgICAgcm91dGUgPSB0aGlzLlVSTFMuWklUSV9EQVNIQk9BUkQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICcvaWRlbnRpdGllcyc6XG4gICAgICAgICAgICBjYXNlICdpZGVudGl0aWVzJzpcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSAnaWRlbnRpdGllcyc7XG4gICAgICAgICAgICAgICAgcm91dGUgPSB0aGlzLlVSTFMuWklUSV9JREVOVElUSUVTO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnL2F0dHJpYnV0ZXMnOlxuICAgICAgICAgICAgY2FzZSAnYXR0cmlidXRlcyc6XG4gICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gJ2F0dHJpYnV0ZXMnO1xuICAgICAgICAgICAgICAgIHJvdXRlID0gdGhpcy5VUkxTLlpJVElfQVRUUklCVVRFUztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJy9qd3Qtc2lnbmVycyc6XG4gICAgICAgICAgICBjYXNlICdqd3Qtc2lnbmVycyc6XG4gICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gJ2p3dC1zaWduZXJzJztcbiAgICAgICAgICAgICAgICByb3V0ZSA9IHRoaXMuVVJMUy5aSVRJX0pXVF9TSUdORVJTO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnL3NlcnZpY2VzJzpcbiAgICAgICAgICAgIGNhc2UgJ3NlcnZpY2VzJzpcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSAnc2VydmljZXMnO1xuICAgICAgICAgICAgICAgIHJvdXRlID0gdGhpcy5VUkxTLlpJVElfU0VSVklDRVM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICcvcm91dGVycyc6XG4gICAgICAgICAgICBjYXNlICdyb3V0ZXJzJzpcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSAncm91dGVycyc7XG4gICAgICAgICAgICAgICAgcm91dGUgPSB0aGlzLlVSTFMuWklUSV9ST1VURVJTO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnL3RyYW5zaXQtcm91dGVycyc6XG4gICAgICAgICAgICBjYXNlICd0cmFuc2l0LXJvdXRlcnMnOlxuICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9ICd0cmFuc2l0LXJvdXRlcnMnO1xuICAgICAgICAgICAgICAgIHJvdXRlID0gdGhpcy5VUkxTLlpJVElfVFJBTlNJVF9ST1VURVJTO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnL2NvbmZpZ3MnOlxuICAgICAgICAgICAgY2FzZSAnY29uZmlncyc6XG4gICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gJ2NvbmZpZ3MnO1xuICAgICAgICAgICAgICAgIHJvdXRlID0gdGhpcy5VUkxTLlpJVElfQ09ORklHUztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJy9jb25maWctdHlwZXMnOlxuICAgICAgICAgICAgY2FzZSAnY29uZmlnLXR5cGVzJzpcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSAnY29uZmlnLXR5cGVzJztcbiAgICAgICAgICAgICAgICByb3V0ZSA9IHRoaXMuVVJMUy5aSVRJX0NPTkZJR19UWVBFUztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJy9yZWNpcGVzJzpcbiAgICAgICAgICAgIGNhc2UgJ3JlY2lwZXMnOlxuICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9ICdyZWNpcGVzJztcbiAgICAgICAgICAgICAgICByb3V0ZSA9IHRoaXMuVVJMUy5aSVRJX1JFQ0lQRVM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICcvdGVybWluYXRvcnMnOlxuICAgICAgICAgICAgY2FzZSAndGVybWluYXRvcnMnOlxuICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9ICd0ZXJtaW5hdG9ycyc7XG4gICAgICAgICAgICAgICAgcm91dGUgPSB0aGlzLlVSTFMuWklUSV9URVJNSU5BVE9SUztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJy9jb25maWctdGVybWluYXRvcnMnOlxuICAgICAgICAgICAgY2FzZSAnY29uZmlnLXRlcm1pbmF0b3JzJzpcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSAnY29uZmlnLXRlcm1pbmF0b3JzJztcbiAgICAgICAgICAgICAgICByb3V0ZSA9IHRoaXMuVVJMUy5aSVRJX0NPTkZJR19URVJNSU5BVE9SUztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJy9hdXRoLXBvbGljaWVzJzpcbiAgICAgICAgICAgIGNhc2UgJ2F1dGgtcG9saWNpZXMnOlxuICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9ICdhdXRoLXBvbGljaWVzJztcbiAgICAgICAgICAgICAgICByb3V0ZSA9IHRoaXMuVVJMUy5aSVRJX0FVVEhfUE9MSUNJRVM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICcvc2VydmljZS1wb2xpY2llcyc6XG4gICAgICAgICAgICBjYXNlICdzZXJ2aWNlLXBvbGljaWVzJzpcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSAnc2VydmljZS1wb2xpY2llcyc7XG4gICAgICAgICAgICAgICAgcm91dGUgPSB0aGlzLlVSTFMuWklUSV9TRVJWSUNFX1BPTElDSUVTO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnL3JvdXRlci1wb2xpY2llcyc6XG4gICAgICAgICAgICBjYXNlICdyb3V0ZXItcG9saWNpZXMnOlxuICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9ICdyb3V0ZXItcG9saWNpZXMnO1xuICAgICAgICAgICAgICAgIHJvdXRlID0gdGhpcy5VUkxTLlpJVElfUk9VVEVSX1BPTElDSUVTO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnL3NlcnZpY2Utcm91dGVyLXBvbGljaWVzJzpcbiAgICAgICAgICAgIGNhc2UgJ3NlcnZpY2Utcm91dGVyLXBvbGljaWVzJzpcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSAnc2VydmljZS1yb3V0ZXItcG9saWNpZXMnO1xuICAgICAgICAgICAgICAgIHJvdXRlID0gdGhpcy5VUkxTLlpJVElfU0VSVklDRV9ST1VURVJfUE9MSUNJRVM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICcvcG9zdHVyZS1jaGVja3MnOlxuICAgICAgICAgICAgY2FzZSAncG9zdHVyZS1jaGVja3MnOlxuICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9ICdwb3N0dXJlLWNoZWNrcyc7XG4gICAgICAgICAgICAgICAgcm91dGUgPSB0aGlzLlVSTFMuWklUSV9QT1NUVVJFX0NIRUNLUztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJy9jZXJ0aWZpY2F0ZS1hdXRob3JpdGllcyc6XG4gICAgICAgICAgICBjYXNlICdjZXJ0aWZpY2F0ZS1hdXRob3JpdGllcyc6XG4gICAgICAgICAgICBjYXNlICcvY2FzJzpcbiAgICAgICAgICAgIGNhc2UgJ2Nhcyc6XG4gICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gJ2Nhcyc7XG4gICAgICAgICAgICAgICAgcm91dGUgPSB0aGlzLlVSTFMuWklUSV9DRVJUX0FVVEhPUklUSUVTO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnL3Nlc3Npb25zJzpcbiAgICAgICAgICAgIGNhc2UgJ3Nlc3Npb25zJzpcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSAnc2Vzc2lvbnMnO1xuICAgICAgICAgICAgICAgIHJvdXRlID0gdGhpcy5VUkxTLlpJVElfU0VTU0lPTlM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICcvbmV0d29yay12aXN1YWxpemVyJzpcbiAgICAgICAgICAgIGNhc2UgJ25ldHdvcmstdmlzdWFsaXplcic6XG4gICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9ICduZXR3b3JrLXZpc3VhbGl6ZXInO1xuICAgICAgICAgICAgICAgICByb3V0ZSA9IHRoaXMuVVJMUy5ORVRXT1JLX1ZJU1VBTElaRVI7XG4gICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnL2FwaS1zZXNzaW9ucyc6XG4gICAgICAgICAgICBjYXNlICdhcGktc2Vzc2lvbnMnOlxuICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9ICdhcGktc2Vzc2lvbnMnO1xuICAgICAgICAgICAgICAgIHJvdXRlID0gdGhpcy5VUkxTLlpJVElfQVBJX1NFU1NJT05TO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnL3NlcnZlcnMnOlxuICAgICAgICAgICAgY2FzZSAnc2VydmVycyc6XG4gICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gJ3NlcnZlcnMnO1xuICAgICAgICAgICAgICAgIHJvdXRlID0gdGhpcy5VUkxTLlpJVElfU0VSVkVSUztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJy9sb2dpbic6XG4gICAgICAgICAgICBjYXNlICdsb2dpbic6XG4gICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gJ2xvZ2luJztcbiAgICAgICAgICAgICAgICByb3V0ZSA9IHRoaXMuVVJMUy5aQUNfTE9HSU47XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICcvb3JnYW5pemF0aW9uJzpcbiAgICAgICAgICAgIGNhc2UgJ29yZ2FuaXphdGlvbic6XG4gICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gJ29yZ2FuaXphdGlvbic7XG4gICAgICAgICAgICAgICAgcm91dGUgPSB0aGlzLlVSTFMuWklUSV9DVVNUT01fRklFTERTO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnL3Byb2ZpbGUnOlxuICAgICAgICAgICAgY2FzZSAncHJvZmlsZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gJ3Byb2ZpbGUnO1xuICAgICAgICAgICAgICAgIHJvdXRlID0gdGhpcy5VUkxTLlpJVElfUFJPRklMRTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJy9zZXR0aW5ncyc6XG4gICAgICAgICAgICBjYXNlICdzZXR0aW5ncyc6XG4gICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gJ3NldHRpbmdzJztcbiAgICAgICAgICAgICAgICByb3V0ZSA9IHRoaXMuVVJMUy5aSVRJX1NFVFRJTkdTO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSAnaW5kZXgnO1xuICAgICAgICAgICAgICAgIHJvdXRlID0gdGhpcy5VUkxTLlpJVElfREFTSEJPQVJEO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByb3V0ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRSb3V0ZUxpc3RlbmVyKCkge1xuICAgICAgICB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKChldmVudCBhcyBhbnkpWydyb3V0ZXJFdmVudCddIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9sZFBhZ2UgPSB0aGlzLnBhZ2U7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFnZSA9IChldmVudCBhcyBhbnkpWydyb3V0ZXJFdmVudCddWyd1cmwnXS5zcGxpdCgnOycpWzBdLnNwbGl0KCc/JylbMF07XG4gICAgICAgICAgICAgICAgbGV0IGRvUGFnZUxvYWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHBhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSB0aGlzLlVSTFMuWklUSV9EQVNIQk9BUkQ6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSAnaW5kZXgnO1xuICAgICAgICAgICAgICAgICAgICAgICAgZG9QYWdlTG9hZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSB0aGlzLlVSTFMuWklUSV9TRVJWSUNFUzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9ICdzZXJ2aWNlcyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSB0aGlzLlVSTFMuWklUSV9JREVOVElUSUVTOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gJ2lkZW50aXRpZXMnO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5VUkxTLlpJVElfSldUX1NJR05FUlM6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSAnand0LXNpZ25lcnMnO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5VUkxTLlpJVElfQ09ORklHUzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9ICdjb25maWdzJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIHRoaXMuVVJMUy5aSVRJX0NPTkZJR19UWVBFUzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9ICdjb25maWctdHlwZXMnO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5VUkxTLlpJVElfUk9VVEVSUzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9ICdyb3V0ZXJzJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIHRoaXMuVVJMUy5aSVRJX1RSQU5TSVRfUk9VVEVSUzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9ICd0cmFuc2l0LXJvdXRlcnMnO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5VUkxTLlpJVElfUkVDSVBFUzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9ICdyZWNpcGVzJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIHRoaXMuVVJMUy5aSVRJX1RFUk1JTkFUT1JTOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gJ3Rlcm1pbmF0b3JzJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIHRoaXMuVVJMUy5aSVRJX0FVVEhfUE9MSUNJRVM6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSAnYXV0aC1wb2xpY2llcyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSB0aGlzLlVSTFMuWklUSV9TRVJWSUNFX1BPTElDSUVTOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gJ3NlcnZpY2UtcG9saWNpZXMnO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5VUkxTLlpJVElfUk9VVEVSX1BPTElDSUVTOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gJ3JvdXRlci1wb2xpY2llcyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSB0aGlzLlVSTFMuWklUSV9TRVJWSUNFX1JPVVRFUl9QT0xJQ0lFUzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9ICdzZXJ2aWNlLXJvdXRlci1wb2xpY2llcyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSB0aGlzLlVSTFMuWklUSV9QT1NUVVJFX0NIRUNLUzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9ICdwb3N0dXJlLWNoZWNrcyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSB0aGlzLlVSTFMuWklUSV9CUk9XWkVSX0NBUzpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSB0aGlzLlVSTFMuWklUSV9DRVJUX0FVVEhPUklUSUVTOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gJ2Nhcyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSB0aGlzLlVSTFMuWklUSV9TRVNTSU9OUzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9ICdzZXNzaW9ucyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSB0aGlzLlVSTFMuWklUSV9BUElfU0VTU0lPTlM6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSAnYXBpLXNlc3Npb25zJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIHRoaXMuVVJMUy5aSVRJX0FUVFJJQlVURVM6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSAnYXR0cmlidXRlcyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSB0aGlzLlVSTFMuWkFDX0xPR0lOOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gJ2xvZ2luJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIHRoaXMuVVJMUy5aSVRJX1NFUlZFUlM6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSAnc2VydmVycyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSB0aGlzLlVSTFMuWklUSV9DVVNUT01fRklFTERTOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gJ29yZ2FuaXphdGlvbic7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSB0aGlzLlVSTFMuWklUSV9QUk9GSUxFOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gJ3Byb2ZpbGUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5VUkxTLlpJVElfU0VUVElOR1M6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSAnc2V0dGluZ3MnO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSAnaW5kZXgnO1xuICAgICAgICAgICAgICAgICAgICAgICAgZG9QYWdlTG9hZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG9sZFBhZ2UgIT09IHRoaXMucGFnZSB8fCBkb1BhZ2VMb2FkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFnZUNoYW5nZWQuZW1pdCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgbG9hZEN1cnJlbnRQYWdlKCkge1xuICAgICAgICB0aGlzLmdldEN1cnJlbnRQYWdlKHRoaXMucm91dGVyLnVybCk7XG4gICAgICAgIGlmIChpc0VtcHR5KHRoaXMucGFnZSkpIHtcbiAgICAgICAgICAgIHRoaXMucGFnZSA9ICdpbmRleCdcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXRoID0gJ2Fzc2V0cy9odG1sLycgKyB0aGlzLnBhZ2UgKyAnLmh0bSc7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHBhdGgsIHtyZXNwb25zZVR5cGU6IFwidGV4dFwifSkudG9Qcm9taXNlKCkudGhlbigoaHRtbDogYW55KSA9PiB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHByb3AgaW4gQ09NUE9ORU5UUykge1xuICAgICAgICAgICAgICAgIGh0bWwgPSBodG1sLnNwbGl0KCd7e2h0bWwuJyArIHByb3AgKyAnfX0nKS5qb2luKENPTVBPTkVOVFNbcHJvcF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGh0bWw7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGhhbmRsZVNlcnZpY2VDYWxsKG5hbWU6IHN0cmluZywgcGFyYW1zOiBhbnksIHJldHVyblRvOiBhbnksIHR5cGU6IGFueSkge1xuICAgICAgICBjb25zdCBjb250cm9sbGVyRG9tYWluID0gdGhpcy5zZXR0aW5nc1NlcnZpY2U/LnNldHRpbmdzPy5zZWxlY3RlZEVkZ2VDb250cm9sbGVyIHx8ICcnO1xuICAgICAgICBzd2l0Y2ggKG5hbWUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2RhdGEnOlxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0Wml0aUVudGl0aWVzKHBhcmFtcy50eXBlLCBwYXJhbXMucGFnaW5nKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVTZXJ2aWNlUmVzdWx0KHJlc3VsdCwgcmV0dXJuVG8pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc3ViZGF0YSc6XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRaaXRpRW50aXR5KHBhcmFtcykudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlU2VydmljZVJlc3VsdChyZXN1bHQsIHJldHVyblRvKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2RhdGFTYXZlJzpcbiAgICAgICAgICAgICAgICB0aGlzLnNhdmVaaXRpRW50aXR5KHBhcmFtcywgcmV0dXJuVG8pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaWRlbnRpdHknOlxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlU2ltcGxlSWRlbnRpdHkocGFyYW1zKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVTZXJ2aWNlUmVzdWx0KHJlc3VsdCwgcmV0dXJuVG8pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc2VydmljZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVTaW1wbGVTZXJ2aWNlKHBhcmFtcykudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlU2VydmljZVJlc3VsdChyZXN1bHQsIHJldHVyblRvKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3N1YlNhdmUnOlxuICAgICAgICAgICAgICAgIHRoaXMuc2F2ZVppdGlTdWJEYXRhKHBhcmFtcywgcmV0dXJuVG8pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZGVsZXRlJzpcbiAgICAgICAgICAgICAgICB0aGlzLmRlbGV0ZVppdGlFbnRpdGllcyhwYXJhbXMsIHJldHVyblRvKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NhbGwnOlxuICAgICAgICAgICAgICAgIHRoaXMuY2FsbFppdGlFZGdlKGAke2NvbnRyb2xsZXJEb21haW59L2VkZ2UvbWFuYWdlbWVudC92MS8ke3BhcmFtcy51cmx9YCwge30pLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVNlcnZpY2VSZXN1bHQocmVzdWx0LCByZXR1cm5Ubyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzY2hlbWEnOlxuICAgICAgICAgICAgICAgIHRoaXMuZGVyZWZlcmVuY2VKU09OU2NoZW1hKHBhcmFtcy5zY2hlbWEpLnRoZW4oKHNjaGVtYSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVNlcnZpY2VSZXN1bHQoe2RhdGE6IHNjaGVtYX0sIHJldHVyblRvKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndGVtcGxhdGUnOlxuICAgICAgICAgICAgY2FzZSAnbGFuZ3VhZ2UnOlxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0TG9jYWxlRmlsZShwYXJhbXMubG9jYWxlKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVTZXJ2aWNlUmVzdWx0KHJlc3VsdCwgcmV0dXJuVG8pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc2V0dGluZ3MnOlxuICAgICAgICAgICAgICAgIHRoaXMuaHR0cC5nZXQoXCJhc3NldHMvZGF0YS9zZXR0aW5ncy5qc29uXCIsIHt9KS50b1Byb21pc2UoKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuVG8ocmVzdWx0KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3ZlcnNpb24nOlxuICAgICAgICAgICAgICAgIHRoaXMuY2FsbFppdGlFZGdlKGAke2NvbnRyb2xsZXJEb21haW59L2VkZ2UvbWFuYWdlbWVudC92MS92ZXJzaW9uYCwge30pLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2ZXJzaW9uRGF0YSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZGF0YVwiOiByZXN1bHQuZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic2VydmljZVVybFwiOiBcIi9lZGdlL21hbmFnZW1lbnQvdjFcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiemFjXCI6IFZFUlNJT04udmVyc2lvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiYmFzZVVybFwiOiB0aGlzLnNldHRpbmdzU2VydmljZT8uc2V0dGluZ3M/LnNlbGVjdGVkRWRnZUNvbnRyb2xsZXJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm5Ubyh2ZXJzaW9uRGF0YSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjb250cm9sbGVyU2F2ZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxsWml0aUVkZ2UoXCIvYXBpL2NvbnRyb2xsZXJTYXZlXCIsIHt9KS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVTZXJ2aWNlUmVzdWx0KHJlc3VsdCwgcmV0dXJuVG8pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc2VydmVyJzpcbiAgICAgICAgICAgICAgICB0aGlzLmNhbGxaaXRpRWRnZShcIi9hcGkvc2VydmVyXCIsIHt9KS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVTZXJ2aWNlUmVzdWx0KHJlc3VsdCwgcmV0dXJuVG8pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndGFncyc6XG4gICAgICAgICAgICAgICAgLy8gRm9yIG5vIHRoaXMgaXMgYSBuby1vcFxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFuZGxlU2VydmljZVJlc3VsdChyZXN1bHQsIHJldHVyblRvKSB7XG4gICAgICAgIGlmIChyZXN1bHQ/LmVycm9yKSB7XG4gICAgICAgICAgICByZXN1bHQgPSB0aGlzLmhhbmRsZUVycm9yKHJlc3VsdCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuVG8ocmVzdWx0KTtcbiAgICB9XG5cbiAgICBhc3luYyBjcmVhdGVTaW1wbGVJZGVudGl0eShwYXJhbXMpIHtcbiAgICAgICAgcGFyYW1zID0ge1xuICAgICAgICAgICAgbmFtZTogcGFyYW1zLm5hbWUsXG4gICAgICAgICAgICByb2xlQXR0cmlidXRlczogcGFyYW1zLnJvbGVzLFxuICAgICAgICAgICAgZW5yb2xsbWVudDogeyBvdHQ6IHRydWUgfSxcbiAgICAgICAgICAgIGlzQWRtaW46IGZhbHNlLFxuICAgICAgICAgICAgdHlwZTogXCJEZXZpY2VcIlxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbnRyb2xsZXJEb21haW4gPSB0aGlzLnNldHRpbmdzU2VydmljZT8uc2V0dGluZ3M/LnNlbGVjdGVkRWRnZUNvbnRyb2xsZXIgfHwgJyc7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke2NvbnRyb2xsZXJEb21haW59L2VkZ2UvbWFuYWdlbWVudC92MS9pZGVudGl0aWVzYDtcbiAgICAgICAgY29uc3QgaWQgPSBhd2FpdCB0aGlzLmNhbGxaaXRpRWRnZSh1cmwsIHBhcmFtcywgJ1BPU1QnKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ/LmRhdGE/LmlkO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZW50aXR5UGFyYW1zID0ge1xuICAgICAgICAgICAgbmFtZTogJ2lkZW50aXRpZXMnLFxuICAgICAgICAgICAgdHlwZTogJycsXG4gICAgICAgICAgICB1cmw6ICcuL2lkZW50aXRpZXMvJyArIGlkXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Wml0aUVudGl0eShlbnRpdHlQYXJhbXMpLnRoZW4oKHJlc3VsdHM6IGFueSkgPT4ge1xuICAgICAgICAgICAgcmVzdWx0cy5jbGkgPSBbXTtcbiAgICAgICAgICAgIHJlc3VsdHMuc2VydmljZXMgPSBbXTtcblxuICAgICAgICAgICAgbGV0IGNsaSA9IFwieml0aSBlZGdlIGNyZWF0ZSBpZGVudGl0eSBkZXZpY2UgXFwnXCIrcGFyYW1zLm5hbWUrXCJcXCdcIjtcbiAgICAgICAgICAgIGlmIChwYXJhbXMucm9sZUF0dHJpYnV0ZXMpIGNsaSArPSBcIiAtYSBcXCdcIitwYXJhbXMucm9sZUF0dHJpYnV0ZXMudG9TdHJpbmcoKStcIlxcJ1wiO1xuICAgICAgICAgICAgcmVzdWx0cy5jbGkucHVzaChjbGkpO1xuXG4gICAgICAgICAgICBsZXQgc2VydmljZUNhbGwgPSB7XG4gICAgICAgICAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgICAgICAgICAgcGFyYW1zOiBwYXJhbXNcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXN1bHRzLnNlcnZpY2VzLnB1c2goc2VydmljZUNhbGwpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgYXN5bmMgY3JlYXRlU2ltcGxlU2VydmljZShwYXJhbXMpIHtcbiAgICAgICAgY29uc3QgbmFtZSA9IHBhcmFtcy5uYW1lO1xuICAgICAgICBjb25zdCBwcm90b2NvbCA9IHBhcmFtcy5wcm90b2NvbDtcbiAgICAgICAgY29uc3QgaG9zdCA9IHBhcmFtcy5ob3N0O1xuICAgICAgICBjb25zdCBwb3J0ID0gTnVtYmVyKHBhcmFtcy5wb3J0KTtcbiAgICAgICAgY29uc3QgdXNlRW5jcnlwdCA9IHBhcmFtcy5lbmNyeXB0O1xuICAgICAgICBjb25zdCB6aXRpSG9zdCA9IHBhcmFtcy56aXRpSG9zdDtcbiAgICAgICAgY29uc3Qgeml0aVBvcnQgPSBOdW1iZXIocGFyYW1zLnppdGlQb3J0KTtcbiAgICAgICAgY29uc3QgaG9zdGVkID0gcGFyYW1zLmhvc3RlZDtcbiAgICAgICAgY29uc3QgYWNjZXNzID0gcGFyYW1zLmFjY2VzcztcblxuICAgICAgICBjb25zdCByb290TmFtZSA9IG5hbWUudHJpbSgpLnJlcGxhY2UoL1teYS16MC05IF0vZ2ksICcnKS5zcGxpdCgnICcpLmpvaW4oJy0nKTtcbiAgICAgICAgY29uc3QgY2xpZW50TmFtZSA9IHJvb3ROYW1lK1wiLUNsaWVudFwiO1xuICAgICAgICBjb25zdCBzZXJ2ZXJOYW1lID0gcm9vdE5hbWUrXCItU2VydmVyXCI7XG4gICAgICAgIGNvbnN0IGRpYWxQb2xpY3lOYW1lID0gcm9vdE5hbWUrXCItRGlhbFBvbGljeVwiO1xuICAgICAgICBjb25zdCBiaW5kUG9saWN5TmFtZSA9IHJvb3ROYW1lK1wiLUJpbmRQb2xpY3lcIjtcblxuICAgICAgICBjb25zdCBzZXJ2ZXJDb25maWcgPSB7XG4gICAgICAgICAgICBob3N0bmFtZTogaG9zdCxcbiAgICAgICAgICAgIHBvcnQ6IHBvcnQsXG4gICAgICAgICAgICBwcm90b2NvbDogcHJvdG9jb2xcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgY2xpZW50Q29uZmlnID0ge1xuICAgICAgICAgICAgaG9zdG5hbWU6IHppdGlIb3N0LFxuICAgICAgICAgICAgcG9ydDogeml0aVBvcnRcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBwYWdpbmcgPSB7XG4gICAgICAgICAgICBmaWx0ZXI6IFwieml0aS10dW5uZWxlci1jbGllbnQudjFcIixcbiAgICAgICAgICAgIG5vU2VhcmNoOiBmYWxzZSxcbiAgICAgICAgICAgIG9yZGVyOiBcImFzY1wiLFxuICAgICAgICAgICAgcGFnZTogMSxcbiAgICAgICAgICAgIHNlYXJjaE9uOiBcIm5hbWVcIixcbiAgICAgICAgICAgIHNvcnQ6IFwibmFtZVwiLFxuICAgICAgICAgICAgdG90YWw6IDUwXG4gICAgICAgIH1cbiAgICAgICAgbGV0IGNvbmZpZ1R5cGVSZXN1bHQgPSBhd2FpdCB0aGlzLmdldFppdGlFbnRpdGllcygnY29uZmlnLXR5cGVzJywgcGFnaW5nKTtcbiAgICAgICAgY29uc3QgY2xpZW50Q29uZmlnSWQgPSBjb25maWdUeXBlUmVzdWx0LmRhdGFbMF0/LmlkO1xuICAgICAgICBwYWdpbmcuZmlsdGVyID0gJ3ppdGktdHVubmVsZXItc2VydmVyLnYxJztcbiAgICAgICAgY29uZmlnVHlwZVJlc3VsdCA9IGF3YWl0IHRoaXMuZ2V0Wml0aUVudGl0aWVzKCdjb25maWctdHlwZXMnLCBwYWdpbmcpO1xuICAgICAgICBjb25zdCBzZXJ2ZXJDb25maWdJZCA9IGNvbmZpZ1R5cGVSZXN1bHQuZGF0YVswXT8uaWQ7XG5cbiAgICAgICAgY29uc3Qgc2VydmVyRGF0YSA9IGF3YWl0IHRoaXMuY3JlYXRlQ29uZmlnKHNlcnZlckNvbmZpZ0lkLCBzZXJ2ZXJOYW1lLCBzZXJ2ZXJDb25maWcpO1xuICAgICAgICBjb25zdCBjbGllbnREYXRhID0gYXdhaXQgdGhpcy5jcmVhdGVDb25maWcoY2xpZW50Q29uZmlnSWQsIGNsaWVudE5hbWUsIGNsaWVudENvbmZpZyk7XG4gICAgICAgIGNvbnN0IHNlcnZlcklkID0gc2VydmVyRGF0YS5pZDtcbiAgICAgICAgY29uc3QgY2xpZW50SWQgPSBjbGllbnREYXRhLmlkO1xuXG4gICAgICAgIGNvbnN0IHNlcnZpY2VEYXRhID0gYXdhaXQgdGhpcy5jcmVhdGVTZXJ2aWNlKG5hbWUsIHNlcnZlcklkLCBjbGllbnRJZCwgdXNlRW5jcnlwdCk7XG4gICAgICAgIGNvbnN0IHNlcnZpY2VJZCA9IHNlcnZpY2VEYXRhLmlkO1xuXG4gICAgICAgIGNvbnN0IGJpbmREYXRhID0gYXdhaXQgdGhpcy5jcmVhdGVTZXJ2aWNlUG9saWN5KGJpbmRQb2xpY3lOYW1lLCBcIkBcIitzZXJ2aWNlSWQsIGhvc3RlZCk7XG4gICAgICAgIGNvbnN0IGRpYWxEYXRhID0gYXdhaXQgdGhpcy5jcmVhdGVTZXJ2aWNlUG9saWN5KGRpYWxQb2xpY3lOYW1lLCBcIkBcIitzZXJ2aWNlSWQsIGFjY2Vzcyk7XG5cbiAgICAgICAgY29uc3QgYmluZElkID0gYmluZERhdGEuaWQ7XG4gICAgICAgIGNvbnN0IGRpYWxJZCA9IGRpYWxEYXRhLmlkO1xuXG4gICAgICAgIGNvbnN0IHRvUmV0dXJuID0ge1xuICAgICAgICAgICAgZGF0YTogW10sXG4gICAgICAgICAgICBjbGk6IFtdLFxuICAgICAgICAgICAgc2VydmljZXM6IFtdXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgbG9ncyA9IFtdO1xuICAgICAgICBsb2dzLnB1c2goe25hbWU6IHNlcnZlck5hbWUsIGlkOiBzZXJ2ZXJJZCwgdHlwZTogXCJDb25maWdcIn0pO1xuICAgICAgICBsb2dzLnB1c2goe25hbWU6IGNsaWVudE5hbWUsIGlkOiBjbGllbnRJZCwgdHlwZTogXCJDb25maWdcIn0pO1xuICAgICAgICBsb2dzLnB1c2goe25hbWU6IG5hbWUsIGlkOiBzZXJ2aWNlSWQsIHR5cGU6IFwiU2VydmljZVwifSk7XG4gICAgICAgIGxvZ3MucHVzaCh7bmFtZTogYmluZFBvbGljeU5hbWUsIGlkOiBiaW5kSWQsIHR5cGU6IFwiUG9saWN5XCJ9KTtcbiAgICAgICAgbG9ncy5wdXNoKHtuYW1lOiBkaWFsUG9saWN5TmFtZSwgaWQ6IGRpYWxJZCwgdHlwZTogXCJQb2xpY3lcIn0pO1xuICAgICAgICB0b1JldHVybi5kYXRhID0gbG9ncztcbiAgICAgICAgdG9SZXR1cm4uY2xpLnB1c2goc2VydmVyRGF0YS5jbGkpO1xuICAgICAgICB0b1JldHVybi5jbGkucHVzaChjbGllbnREYXRhLmNsaSk7XG4gICAgICAgIHRvUmV0dXJuLmNsaS5wdXNoKHNlcnZpY2VEYXRhLmNsaSk7XG4gICAgICAgIHRvUmV0dXJuLmNsaS5wdXNoKGJpbmREYXRhLmNsaSk7XG4gICAgICAgIHRvUmV0dXJuLmNsaS5wdXNoKGRpYWxEYXRhLmNsaSk7XG5cbiAgICAgICAgdG9SZXR1cm4uc2VydmljZXMucHVzaChzZXJ2ZXJEYXRhLnNlcnZpY2UpO1xuICAgICAgICB0b1JldHVybi5zZXJ2aWNlcy5wdXNoKGNsaWVudERhdGEuc2VydmljZSk7XG4gICAgICAgIHRvUmV0dXJuLnNlcnZpY2VzLnB1c2goc2VydmljZURhdGEuc2VydmljZSk7XG4gICAgICAgIHRvUmV0dXJuLnNlcnZpY2VzLnB1c2goYmluZERhdGEuc2VydmljZSk7XG4gICAgICAgIHRvUmV0dXJuLnNlcnZpY2VzLnB1c2goZGlhbERhdGEuc2VydmljZSk7XG5cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cblxuICAgIGFzeW5jIGNyZWF0ZVNlcnZpY2UobmFtZSwgc2VydmVySWQsIGNsaWVudElkLCBlbmNyeXB0KSB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICBjb25maWdzOiBbc2VydmVySWQsIGNsaWVudElkXSxcbiAgICAgICAgICAgIGVuY3J5cHRpb25SZXF1aXJlZDogZW5jcnlwdCxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgY29udHJvbGxlckRvbWFpbiA9IHRoaXMuc2V0dGluZ3NTZXJ2aWNlPy5zZXR0aW5ncz8uc2VsZWN0ZWRFZGdlQ29udHJvbGxlciB8fCAnJztcbiAgICAgICAgY29uc3QgdXJsID0gYCR7Y29udHJvbGxlckRvbWFpbn0vZWRnZS9tYW5hZ2VtZW50L3YxL3NlcnZpY2VzYDtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FsbFppdGlFZGdlKHVybCwgcGFyYW1zLCAnUE9TVCcpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgbGV0IGNsaSA9IFwieml0aSBlZGdlIGNyZWF0ZSBzZXJ2aWNlICdcIituYW1lK1wiJyAtLWNvbmZpZ3MgJ1wiK3NlcnZlcklkK1wiLFwiK2NsaWVudElkK1wiJ1wiO1xuICAgICAgICAgICAgbGV0IHNlcnZpY2VDYWxsID0ge1xuICAgICAgICAgICAgICAgIHVybDogdXJsK1wiL3NlcnZpY2VzXCIsXG4gICAgICAgICAgICAgICAgcGFyYW1zOiBwYXJhbXNcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB2YXIgaXRlbSA9IHtcbiAgICAgICAgICAgICAgICBpZDogcmVzdWx0Py5kYXRhPy5pZCB8fCAnJyxcbiAgICAgICAgICAgICAgICBjbGk6IGNsaSxcbiAgICAgICAgICAgICAgICBzZXJ2aWNlOiBzZXJ2aWNlQ2FsbFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFzeW5jIGNyZWF0ZVNlcnZpY2VQb2xpY3kobmFtZSwgc2VydmljZUlkLCBob3N0ZWQpIHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgIHR5cGU6IFwiQmluZFwiLFxuICAgICAgICAgICAgc2VtYW50aWM6IFwiQW55T2ZcIixcbiAgICAgICAgICAgIHNlcnZpY2VSb2xlczogW3NlcnZpY2VJZF0sXG4gICAgICAgICAgICBpZGVudGl0eVJvbGVzOiBob3N0ZWQsXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29udHJvbGxlckRvbWFpbiA9IHRoaXMuc2V0dGluZ3NTZXJ2aWNlPy5zZXR0aW5ncz8uc2VsZWN0ZWRFZGdlQ29udHJvbGxlciB8fCAnJztcbiAgICAgICAgY29uc3QgdXJsID0gYCR7Y29udHJvbGxlckRvbWFpbn0vZWRnZS9tYW5hZ2VtZW50L3YxL3NlcnZpY2UtcG9saWNpZXNgO1xuICAgICAgICByZXR1cm4gdGhpcy5jYWxsWml0aUVkZ2UodXJsLCBwYXJhbXMsICdQT1NUJykudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICBsZXQgY2xpID0gXCJ6aXRpIGVkZ2UgY3JlYXRlIHNlcnZpY2UtcG9saWN5ICdcIituYW1lK1wiJyBCaW5kIC0tc2VtYW50aWMgQW55T2YgLS1zZXJ2aWNlLXJvbGVzICdcIitzZXJ2aWNlSWQrXCInIC0taWRlbnRpdHktcm9sZXMgJ1wiK2hvc3RlZC50b1N0cmluZygpK1wiJ1wiO1xuICAgICAgICAgICAgbGV0IHNlcnZpY2VDYWxsID0ge1xuICAgICAgICAgICAgICAgIHVybDogdXJsK1wiL3NlcnZpY2UtcG9saWNpZXNcIixcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHBhcmFtc1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHZhciBpdGVtID0ge1xuICAgICAgICAgICAgICAgIGlkOiByZXN1bHQ/LmRhdGE/LmlkIHx8ICcnLFxuICAgICAgICAgICAgICAgIGNsaTogY2xpLFxuICAgICAgICAgICAgICAgIHNlcnZpY2U6IHNlcnZpY2VDYWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYXN5bmMgY3JlYXRlQ29uZmlnKGNvbmZpZ0lkLCBuYW1lLCBkYXRhLCBpbmRleCA9IDApIHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgbmFtZTogbmFtZSsoKGluZGV4PjApP1wiLVwiK2luZGV4OlwiXCIpLFxuICAgICAgICAgICAgY29uZmlnVHlwZUlkOiBjb25maWdJZCxcbiAgICAgICAgICAgIGRhdGE6IGRhdGFcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgY29udHJvbGxlckRvbWFpbiA9IHRoaXMuc2V0dGluZ3NTZXJ2aWNlPy5zZXR0aW5ncz8uc2VsZWN0ZWRFZGdlQ29udHJvbGxlciB8fCAnJztcbiAgICAgICAgY29uc3QgdXJsID0gYCR7Y29udHJvbGxlckRvbWFpbn0vZWRnZS9tYW5hZ2VtZW50L3YxL2NvbmZpZ3NgO1xuICAgICAgICByZXR1cm4gdGhpcy5jYWxsWml0aUVkZ2UodXJsLCBwYXJhbXMsICdQT1NUJykudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjbGkgPSBcInppdGkgZWRnZSBjcmVhdGUgY29uZmlnICdcIitwYXJhbXMubmFtZStcIicgJ1wiK2NvbmZpZ0lkK1wiJyAnXCIrSlNPTi5zdHJpbmdpZnkoZGF0YSkuc3BsaXQoJ1wiJykuam9pbignXFxcXFwiJykrXCInXCI7XG4gICAgICAgICAgICBjb25zdCBzZXJ2aWNlQ2FsbCA9IHtcbiAgICAgICAgICAgICAgICB1cmw6IHVybCtcIi9jb25maWdzXCIsXG4gICAgICAgICAgICAgICAgcGFyYW1zOiBwYXJhbXNcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB7XG4gICAgICAgICAgICAgICAgaWQ6IHJlc3VsdD8uZGF0YT8uaWQgfHwgJycsXG4gICAgICAgICAgICAgICAgY2xpOiBjbGksXG4gICAgICAgICAgICAgICAgc2VydmljZTogc2VydmljZUNhbGxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhc3luYyBkZXJlZmVyZW5jZUpTT05TY2hlbWEoZGF0YTogYW55KSB7XG4gICAgICAgIGNvbnN0IHJlc29sdmVyID0gbmV3IFJlc29sdmVyKCk7XG4gICAgICAgIGNvbnN0IHNjaGVtYSA9IGF3YWl0IHJlc29sdmVyLnJlc29sdmUoZGF0YSk7XG4gICAgICAgIHJldHVybiBzY2hlbWEucmVzdWx0O1xuICAgIH1cblxuICAgIGFzeW5jIGdldExvY2FsZUZpbGUobG9jYWxlOiBzdHJpbmcgPSAnZW4tdXMnKSB7XG4gICAgICAgIGxvY2FsZSA9IGxvY2FsZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBsZXQgcGF0aCA9ICdhc3NldHMvbGFuZ3VhZ2VzLycgKyBsb2NhbGUgKyAnLmpzb24nO1xuICAgICAgICBsZXQgbG9jYWxlRmlsZSA9IGF3YWl0IHRoaXMuaHR0cC5nZXQocGF0aCwge3Jlc3BvbnNlVHlwZTogXCJ0ZXh0XCJ9KS50b1Byb21pc2UoKS50aGVuKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UocmVzdWx0KTtcbiAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlclNlcnZpY2UuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKCFsb2NhbGVGaWxlKSB7XG4gICAgICAgICAgICBwYXRoID0gJ2Fzc2V0cy9sYW5ndWFnZXMvZW4tdXMuanNvbic7XG4gICAgICAgICAgICBsb2NhbGVGaWxlID0gYXdhaXQgdGhpcy5odHRwLmdldChwYXRoLCB7cmVzcG9uc2VUeXBlOiBcInRleHRcIn0pLnRvUHJvbWlzZSgpLnRoZW4oKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UocmVzdWx0KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxvY2FsZUZpbGU7XG4gICAgfVxuXG4gICAgZ2V0Wml0aUVudGl0aWVzKHR5cGU6IHN0cmluZywgcGFnaW5nOiBhbnkpIHtcbiAgICAgICAgY29uc3QgY29udHJvbGxlckRvbWFpbiA9IHRoaXMuc2V0dGluZ3NTZXJ2aWNlPy5zZXR0aW5ncz8uc2VsZWN0ZWRFZGdlQ29udHJvbGxlciB8fCAnJztcbiAgICAgICAgY29uc3Qgc2VydmljZVVybCA9IGAke2NvbnRyb2xsZXJEb21haW59L2VkZ2UvbWFuYWdlbWVudC92MWA7XG4gICAgICAgIGxldCB1cmxGaWx0ZXIgPSBcIlwiO1xuICAgICAgICBsZXQgdG9TZWFyY2hPbiA9IFwibmFtZVwiO1xuICAgICAgICBsZXQgbm9TZWFyY2ggPSBmYWxzZTtcbiAgICAgICAgaWYgKHBhZ2luZyAmJiBwYWdpbmcuc29ydCAhPSBudWxsKSB7XG4gICAgICAgICAgICBpZiAocGFnaW5nLnNlYXJjaE9uKSB0b1NlYXJjaE9uID0gcGFnaW5nLnNlYXJjaE9uO1xuICAgICAgICAgICAgaWYgKHBhZ2luZy5ub1NlYXJjaCkgbm9TZWFyY2ggPSB0cnVlO1xuICAgICAgICAgICAgaWYgKCFwYWdpbmcuZmlsdGVyKSBwYWdpbmcuZmlsdGVyID0gXCJcIjtcbiAgICAgICAgICAgIHBhZ2luZy5maWx0ZXIgPSBwYWdpbmcuZmlsdGVyLnNwbGl0KCcjJykuam9pbignJyk7XG4gICAgICAgICAgICBpZiAobm9TZWFyY2gpIHtcbiAgICAgICAgICAgICAgICBpZiAocGFnaW5nLnBhZ2UgIT09IC0xKSB1cmxGaWx0ZXIgPSBcIj9saW1pdD1cIiArIHBhZ2luZy50b3RhbCArIFwiJm9mZnNldD1cIiArICgocGFnaW5nLnBhZ2UgLSAxKSAqIHBhZ2luZy50b3RhbCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChwYWdpbmcucGFnZSAhPT0gLTEpIHVybEZpbHRlciA9IFwiP2ZpbHRlcj0oXCIgKyB0b1NlYXJjaE9uICsgXCIgY29udGFpbnMgXFxcIlwiICsgcGFnaW5nLmZpbHRlciArIFwiXFxcIikmbGltaXQ9XCIgKyBwYWdpbmcudG90YWwgKyBcIiZvZmZzZXQ9XCIgKyAoKHBhZ2luZy5wYWdlIC0gMSkgKiBwYWdpbmcudG90YWwpICsgXCImc29ydD1cIiArIHBhZ2luZy5zb3J0ICsgXCIgXCIgKyBwYWdpbmcub3JkZXI7XG4gICAgICAgICAgICAgICAgaWYgKHBhZ2luZy5wYXJhbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcGFnaW5nLnBhcmFtcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXJsRmlsdGVyICs9ICgodXJsRmlsdGVyLmxlbmd0aCA9PT0gMCkgPyBcIj9cIiA6IFwiJlwiKSArIGtleSArIFwiPVwiICsgcGFnaW5nLnBhcmFtc1trZXldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNhbGxaaXRpRWRnZShzZXJ2aWNlVXJsICsgXCIvXCIgKyB0eXBlICsgdXJsRmlsdGVyLCB7fSk7XG4gICAgfVxuXG4gICAgZ2V0Wml0aUVudGl0eShwYXJhbXM6IGFueSkge1xuICAgICAgICBjb25zdCBjb250cm9sbGVyRG9tYWluID0gdGhpcy5zZXR0aW5nc1NlcnZpY2U/LnNldHRpbmdzPy5zZWxlY3RlZEVkZ2VDb250cm9sbGVyIHx8ICcnO1xuICAgICAgICBjb25zdCBzZXJ2aWNlVXJsID0gYCR7Y29udHJvbGxlckRvbWFpbn0vZWRnZS9tYW5hZ2VtZW50L3YxYDtcbiAgICAgICAgY29uc3QgdXJsID0gcGFyYW1zLnVybC5zcGxpdChcIi4vXCIpLmpvaW4oXCJcIik7XG4gICAgICAgIGNvbnN0IGlkID0gcGFyYW1zLmlkO1xuICAgICAgICBjb25zdCB0eXBlID0gcGFyYW1zLnR5cGU7XG4gICAgICAgIGNvbnN0IHBhcmVudFR5cGUgPSBwYXJhbXMubmFtZTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FsbFppdGlFZGdlKHNlcnZpY2VVcmwgKyBcIi9cIiArIHVybCwge30sICdHRVQnKS50aGVuKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgICAgICAgcGFyZW50OiBwYXJlbnRUeXBlLFxuICAgICAgICAgICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgICAgICAgICAgZGF0YTogcmVzdWx0LmRhdGFcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZGVsZXRlWml0aUVudGl0aWVzKHBhcmFtcywgcmV0dXJuVG8pIHtcbiAgICAgICAgY29uc3QgY29udHJvbGxlckRvbWFpbiA9IHRoaXMuc2V0dGluZ3NTZXJ2aWNlPy5zZXR0aW5ncz8uc2VsZWN0ZWRFZGdlQ29udHJvbGxlciB8fCAnJztcbiAgICAgICAgY29uc3Qgc2VydmljZVVybCA9IGAke2NvbnRyb2xsZXJEb21haW59L2VkZ2UvbWFuYWdlbWVudC92MWA7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gW107XG4gICAgICAgIHBhcmFtcy5pZHMuZm9yRWFjaCgoaWQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBwYXJhbXMudHlwZTtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudFR5cGUgPSBwYXJhbXMubmFtZTtcbiAgICAgICAgICAgIHByb21pc2VzLnB1c2godGhpcy5jYWxsWml0aUVkZ2Uoc2VydmljZVVybCArIFwiL1wiICsgdHlwZSArIFwiL1wiICsgaWQudHJpbSgpICsgXCIvXCIsIHt9LCAnREVMRVRFJykudGhlbigocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudDogcGFyZW50VHlwZSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogcmVzdWx0LmRhdGFcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5nZXRaaXRpRW50aXRpZXMocGFyYW1zLnR5cGUsIHBhcmFtcy5wYWdpbmcpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVyblRvKHJlc3VsdCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2F2ZVppdGlFbnRpdHkocGFyYW1zOiBhbnksIHJldHVyblRvOiBhbnkpIHtcbiAgICAgICAgY29uc3QgY29udHJvbGxlckRvbWFpbiA9IHRoaXMuc2V0dGluZ3NTZXJ2aWNlPy5zZXR0aW5ncz8uc2VsZWN0ZWRFZGdlQ29udHJvbGxlciB8fCAnJztcbiAgICAgICAgY29uc3Qgc2VydmljZVVybCA9IGAke2NvbnRyb2xsZXJEb21haW59L2VkZ2UvbWFuYWdlbWVudC92MWA7XG4gICAgICAgIGNvbnN0IHNhdmVQYXJhbXMgPSBwYXJhbXMuc2F2ZTtcbiAgICAgICAgY29uc3QgYWRkaXRpb25hbCA9IHBhcmFtcy5hZGRpdGlvbmFsO1xuICAgICAgICBjb25zdCByZW1vdmFsID0gcGFyYW1zLnJlbW92YWw7XG4gICAgICAgIGNvbnN0IHR5cGUgPSBwYXJhbXMudHlwZTtcbiAgICAgICAgY29uc3QgcGFnaW5nID0gcGFyYW1zLnBhZ2luZztcbiAgICAgICAgbGV0IG1ldGhvZCA9IFwiUE9TVFwiO1xuICAgICAgICBsZXQgaWQgPSBwYXJhbXMuaWQ7XG4gICAgICAgIGxldCB1cmwgPSBzZXJ2aWNlVXJsICsgXCIvXCIgKyB0eXBlO1xuICAgICAgICBsZXQgY2hhaW5lZCA9IGZhbHNlO1xuICAgICAgICBpZiAocGFyYW1zLmNoYWluZWQpIGNoYWluZWQgPSBwYXJhbXMuY2hhaW5lZDtcbiAgICAgICAgaWYgKGlkICYmIGlkLnRyaW0oKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBtZXRob2QgPSBcIlBBVENIXCI7XG4gICAgICAgICAgICB1cmwgKz0gXCIvXCIgKyBpZC50cmltKCk7XG4gICAgICAgICAgICBpZiAocmVtb3ZhbCkge1xuICAgICAgICAgICAgICAgIGxldCBvYmplY3RzID0gT2JqZWN0LmVudHJpZXMocmVtb3ZhbCk7XG4gICAgICAgICAgICAgICAgaWYgKG9iamVjdHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9iamVjdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtZXRlcnM6IGFueSA9IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVycy5pZHMgPSBvYmplY3RzW2ldWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2FsbFppdGlFZGdlKHNlcnZpY2VVcmwgKyBcIi9cIiArIHR5cGUgKyBcIi9cIiArIGlkLnRyaW0oKSArIFwiL1wiICsgb2JqZWN0c1tpXVswXSwgcGFyYW1ldGVycywgJ0RFTEVURScpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHNhdmVQYXJhbXMuZGF0YSA9IHRoaXMudmFsaWRhdGlvblNlcnZpY2UucmVkZWZpbmVPYmplY3Qoc2F2ZVBhcmFtcy5kYXRhKTtcbiAgICAgICAgZm9yIChjb25zdCBwcm9wIGluIHNhdmVQYXJhbXMuZGF0YSkge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc2F2ZVBhcmFtcy5kYXRhW3Byb3BdKSAmJiBzYXZlUGFyYW1zLmRhdGFbcHJvcF0ubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgc2F2ZVBhcmFtcy5kYXRhW3Byb3BdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiTm90IEFycmF5OiBcIitwcm9wK1wiIFwiK3NhdmVQYXJhbXMuZGF0YVtwcm9wXS5sZW5ndGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY2FsbFppdGlFZGdlKHVybCwgc2F2ZVBhcmFtcywgbWV0aG9kKS50aGVuKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc3VsdD8uZXJyb3IpIHtcbiAgICAgICAgICAgICAgICByZXR1cm5Ubyh0aGlzLmhhbmRsZUVycm9yKHJlc3VsdC5lcnJvcikpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQ/LmRhdGEpIHtcbiAgICAgICAgICAgICAgICBpZiAoYWRkaXRpb25hbCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgb2JqZWN0cyA9IE9iamVjdC5lbnRyaWVzKGFkZGl0aW9uYWwpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgaW5kZXggPSAwO1xuICAgICAgICAgICAgICAgICAgICBpZiAob2JqZWN0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobWV0aG9kID09PSBcIlBPU1RcIikgaWQgPSByZXN1bHQ/LmRhdGE/LmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvYmplY3RzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxsWml0aUVkZ2Uoc2VydmljZVVybCArIFwiL1wiICsgdHlwZSArIFwiL1wiICsgaWQgKyBcIi9cIiArIG9iamVjdHNbaV1bMF0sIHtpZHM6IG9iamVjdHNbaV1bMV19LCAnUFVUJykudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID09PSBvYmplY3RzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoYWluZWQpIHJldHVyblRvKHJlcy5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgdGhpcy5nZXRaaXRpRW50aXRpZXModHlwZSwgcGFnaW5nKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5UbyhyZXN1bHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoYWluZWQpIHJldHVyblRvKHJlc3VsdC5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgdGhpcy5nZXRaaXRpRW50aXRpZXModHlwZSwgcGFnaW5nKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5UbyhyZXN1bHQpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGFpbmVkKSByZXR1cm5UbyhyZXN1bHQuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgdGhpcy5nZXRaaXRpRW50aXRpZXModHlwZSwgcGFnaW5nKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblRvKHJlc3VsdClcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHJldHVyblRvKHtlcnJvcjogXCJVbmFibGUgdG8gc2F2ZSBkYXRhXCJ9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmVkZWZpbmVPYmplY3Qob2JqKSB7XG4gICAgICAgIGZvciAobGV0IHByb3AgaW4gb2JqKSB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmpbcHJvcF0pICYmIG9ialtwcm9wXS5sZW5ndGg9PTApIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgb2JqW3Byb3BdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9ialtwcm9wXSA9PT0gXCJzdHJpbmdcIiAmJiBvYmpbcHJvcF0udHJpbSgpLmxlbmd0aD09MCkge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgb2JqW3Byb3BdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb2JqW3Byb3BdID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvYmpbcHJvcF0gPSB0aGlzLnJlZGVmaW5lT2JqZWN0KG9ialtwcm9wXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMob2JqW3Byb3BdKS5sZW5ndGg9PTApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgb2JqW3Byb3BdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuXG4gICAgc2F2ZVppdGlTdWJEYXRhKHBhcmFtczogYW55LCByZXR1cm5UbzogYW55KSB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2xsZXJEb21haW4gPSB0aGlzLnNldHRpbmdzU2VydmljZT8uc2V0dGluZ3M/LnNlbGVjdGVkRWRnZUNvbnRyb2xsZXIgfHwgJyc7XG4gICAgICAgIGNvbnN0IHNlcnZpY2VVcmwgPSBgJHtjb250cm9sbGVyRG9tYWlufS9lZGdlL21hbmFnZW1lbnQvdjFgO1xuXG4gICAgICAgIGNvbnN0IGlkID0gcGFyYW1zLmlkO1xuICAgICAgICBjb25zdCB0eXBlID0gcGFyYW1zLnR5cGU7XG4gICAgICAgIGNvbnN0IGRvaW5nID0gcGFyYW1zLmRvaW5nIHx8ICdQT1NUJztcbiAgICAgICAgY29uc3QgcGFyZW50VHlwZSA9IHBhcmFtcy5wYXJlbnRUeXBlO1xuICAgICAgICBjb25zdCBmdWxsVHlwZSA9IHBhcmVudFR5cGUrXCIvXCIraWQrXCIvXCIrdHlwZTtcbiAgICAgICAgY29uc3QgdXJsID0gc2VydmljZVVybCtcIi9cIitmdWxsVHlwZTtcbiAgICAgICAgY29uc3Qgc2F2ZVBhcmFtcyA9IHBhcmFtcy5zYXZlO1xuXG4gICAgICAgIHRoaXMuY2FsbFppdGlFZGdlKHVybCwgc2F2ZVBhcmFtcywgZG9pbmcpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5nZXRaaXRpRW50aXRpZXMoZnVsbFR5cGUsIHBhcmFtcy5wYWdpbmcpLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm5UbyhkYXRhKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjYWxsWml0aUVkZ2UodXJsOiBzdHJpbmcsIGJvZHk6IGFueSwgbWV0aG9kOiBzdHJpbmcgPSAnR0VUJykge1xuICAgICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5nZXRIdHRwT3B0aW9ucygpO1xuICAgICAgICBsZXQgcHJvbTtcbiAgICAgICAgc3dpdGNoIChtZXRob2QpIHtcbiAgICAgICAgICAgIGNhc2UgJ0dFVCc6XG4gICAgICAgICAgICAgICAgcHJvbSA9IHRoaXMuaHR0cC5nZXQodXJsLCBvcHRpb25zKS50b1Byb21pc2UoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1BPU1QnOlxuICAgICAgICAgICAgICAgIHByb20gPSB0aGlzLmh0dHAucG9zdCh1cmwsIGJvZHksIG9wdGlvbnMpLnRvUHJvbWlzZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnUFVUJzpcbiAgICAgICAgICAgICAgICBwcm9tID0gdGhpcy5odHRwLnB1dCh1cmwsIGJvZHksIG9wdGlvbnMpLnRvUHJvbWlzZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnUEFUQ0gnOlxuICAgICAgICAgICAgICAgIHByb20gPSB0aGlzLmh0dHAucGF0Y2godXJsLCBib2R5LCBvcHRpb25zKS50b1Byb21pc2UoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0RFTEVURSc6XG4gICAgICAgICAgICAgICAgcHJvbSA9IHRoaXMuaHR0cC5kZWxldGUodXJsLCBvcHRpb25zKS50b1Byb21pc2UoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcHJvbSA9IHRoaXMuaHR0cC5nZXQodXJsLCBvcHRpb25zKS50b1Byb21pc2UoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHJvbS5jYXRjaCgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzdWx0Py5lcnJvcj8uZXJyb3I/LmNvZGUgPT09ICdVTkFVVEhPUklaRUQnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy56aXRpRG9tYWluQ29udHJvbGxlci5oYW5kbGVVbmF1dGhvcml6ZWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ/LmVycm9yO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBpbml0WkFDQnV0dG9uTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLm1vZGFsQ2xvc2UgJiYgdGhpcy5tb2RhbFNob3cpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1vZGFsU2hvdyA9IG1vZGFsLnNob3c7XG4gICAgICAgIHRoaXMubW9kYWxDbG9zZSA9IG1vZGFsLmNsb3NlO1xuICAgICAgICBpZiAoIXRoaXMubW9kYWxTaG93IHx8ICF0aGlzLm1vZGFsQ2xvc2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtb2RhbElkcyA9IFsnRGV0YWlsTW9kYWwnLCAnQWRkTWVzc2FnZU1vZGFsJywgJ1FSTW9kYWwnLCAnUmVzZXRNb2RhbCcsICdPdmVycmlkZU1vZGFsJywgJ0FkZE1vZGFsJ107XG4gICAgICAgIG1vZGFsLnNob3cgPSAoaWQsIHJlYWRPbmx5KSA9PiB7XG4gICAgICAgICAgICB0aGlzLm1vZGFsU2hvdyhpZCwgcmVhZE9ubHkpO1xuICAgICAgICAgICAgaWYgKG1vZGFsSWRzLmluY2x1ZGVzKGlkKSkge1xuICAgICAgICAgICAgICAgICQoJ2JvZHknKS5hZGRDbGFzcygndXBkYXRlTW9kYWxPcGVuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIG1vZGFsLmNsb3NlID0gKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLm1vZGFsQ2xvc2UoZXZlbnQpO1xuICAgICAgICAgICAgJCgnYm9keScpLnJlbW92ZUNsYXNzKCd1cGRhdGVNb2RhbE9wZW4nKTtcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKCF0aGlzLnNldHRpbmdzU2VydmljZT8uc3VwcG9ydGVkRmVhdHVyZXM/LnJlY2lwZXMpIHtcbiAgICAgICAgICAgICQoJy50YWJbZGF0YS1nbz1cIi9yZWNpcGVzXCJdJykuaGlkZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0SHR0cE9wdGlvbnModXNlWml0aUNyZWRzID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uczogYW55ID0ge1xuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgIGFjY2VwdDogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhcmFtczoge30sXG4gICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyBhcyBjb25zdCxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgfVxuXG4gICAgaGFuZGxlRXJyb3IocmVzdWx0OiBhbnkpIHtcbiAgICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmVycm9yKHJlc3VsdCk7XG4gICAgICAgIGNvbnN0IGVycm9yID0gcmVzdWx0O1xuICAgICAgICBsZXQgbWVzc2FnZSA9ICcnO1xuICAgICAgICBpZiAoZXJyb3IuY2F1c2UmJmVycm9yLmNhdXNlTWVzc2FnZSYmZXJyb3IuY2F1c2VNZXNzYWdlLmxlbmd0aD4wKSBtZXNzYWdlID0gZXJyb3IuY2F1c2VNZXNzYWdlO1xuICAgICAgICBlbHNlIGlmIChlcnJvci5jYXVzZSYmZXJyb3IuY2F1c2UubWVzc2FnZSYmZXJyb3IuY2F1c2UubWVzc2FnZS5sZW5ndGg+MCkgbWVzc2FnZSA9IGVycm9yLmNhdXNlLm1lc3NhZ2U7XG4gICAgICAgIGVsc2UgaWYgKGVycm9yLmNhdXNlJiZlcnJvci5jYXVzZS5yZWFzb24mJmVycm9yLmNhdXNlLnJlYXNvbi5sZW5ndGg+MCkgbWVzc2FnZSA9IGVycm9yLmNhdXNlLnJlYXNvbjtcbiAgICAgICAgZWxzZSBpZiAoZXJyb3IubWVzc2FnZSYmZXJyb3IubWVzc2FnZS5sZW5ndGg+MCkgbWVzc2FnZSA9IGVycm9yLm1lc3NhZ2U7XG4gICAgICAgIGVsc2UgbWVzc2FnZSA9IGVycm9yO1xuICAgICAgICByZXR1cm4ge2Vycm9yOiBtZXNzYWdlfTtcbiAgICB9XG59XG4iXX0=
|
|
942
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemFjLXdyYXBwZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy93cmFwcGVycy96YWMtd3JhcHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFO0FBRUYsT0FBTyxFQUFlLE1BQU0sRUFBRSxVQUFVLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRy9FLE9BQU8sRUFBQyxhQUFhLEVBQVMsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDdEQsT0FBTyxFQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFRLE1BQU0sUUFBUSxDQUFDO0FBQ2hELE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLEVBQUMsc0JBQXNCLEVBQThCLE1BQU0sK0NBQStDLENBQUM7QUFDbEgsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxnQkFBZ0IsRUFBa0IsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRixPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUluRSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7Ozs7OztBQUl0QyxhQUFhO0FBQ2IsTUFBTSxFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUMsR0FBRyxNQUFNLENBQUM7QUFFaEMsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFRO0lBQzNCLEdBQUcsRUFBRTs7Ozs7Ozs7OztpQkFVUTtJQUNiLEdBQUcsRUFBRSx3REFBd0Q7SUFDN0QsSUFBSSxFQUFFLDBCQUEwQjtJQUNoQyxPQUFPLEVBQUUsNkJBQTZCO0lBQ3RDLElBQUksRUFBRTs7O29CQUdVO0lBQ2hCLE1BQU0sRUFB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QixNQUFNOzJCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gICAgQ29weXJpZ2h0IE5ldEZvdW5kcnkgSW5jLlxuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbmltcG9ydCB7RXZlbnRFbWl0dGVyLCBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7SHR0cENsaWVudH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5pbXBvcnQge1N1YmplY3QsIFN1YnNjcmlwdGlvbn0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7TmF2aWdhdGlvbkVuZCwgUm91dGVyfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQge1Jlc29sdmVyfSBmcm9tIFwiQHN0b3BsaWdodC9qc29uLXJlZi1yZXNvbHZlclwiO1xuaW1wb3J0IHtnZXQsIGlzRW1wdHksIHNldCwgdW5zZXR9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgJCBmcm9tICdqcXVlcnknO1xuaW1wb3J0IHtaSVRJX0RPTUFJTl9DT05UUk9MTEVSLCBaaXRpRG9tYWluQ29udHJvbGxlclNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy96aXRpLWRvbWFpbi1jb250cm9sbGVyLnNlcnZpY2VcIjtcbmltcG9ydCB7WklUSV9VUkxTfSBmcm9tIFwiLi4vLi4veml0aS1jb25zb2xlLmNvbnN0YW50c1wiO1xuaW1wb3J0IHtTRVRUSU5HU19TRVJWSUNFLCBTZXR0aW5nc1NlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9zZXR0aW5ncy5zZXJ2aWNlXCI7XG5pbXBvcnQge1phY1dyYXBwZXJTZXJ2aWNlQ2xhc3N9IGZyb20gXCIuL3phYy13cmFwcGVyLXNlcnZpY2UuY2xhc3NcIjtcbmltcG9ydCB7R3Jvd2xlclNlcnZpY2V9IGZyb20gXCIuLi9tZXNzYWdpbmcvZ3Jvd2xlci5zZXJ2aWNlXCI7XG5pbXBvcnQge0dyb3dsZXJNb2RlbH0gZnJvbSBcIi4uL21lc3NhZ2luZy9ncm93bGVyLm1vZGVsXCI7XG5pbXBvcnQge0xvZ2dlclNlcnZpY2V9IGZyb20gXCIuLi9tZXNzYWdpbmcvbG9nZ2VyLnNlcnZpY2VcIjtcbmltcG9ydCB7VkVSU0lPTn0gZnJvbSBcIi4uLy4uL3ZlcnNpb25cIjtcbmltcG9ydCB7VmFsaWRhdGlvblNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy92YWxpZGF0aW9uLnNlcnZpY2VcIjtcbmltcG9ydCB7WklUSV9EQVRBX1NFUlZJQ0UsIFppdGlEYXRhU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3ppdGktZGF0YS5zZXJ2aWNlXCI7XG5cbi8vIEB0cy1pZ25vcmVcbmNvbnN0IHttb2RhbCwgZ3Jvd2xlcn0gPSB3aW5kb3c7XG5cbmV4cG9ydCBjb25zdCBDT01QT05FTlRTOiBhbnkgPSB7XG4gICAgYXBpOiBgPGxhYmVsIGRhdGEtaTE4bj1cIkFQSUNhbGxzXCI+PC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlnQm94XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRlZFwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cIkFwaVVybFwiIHR5cGU9XCJ0ZXh0XCIgcmVhZG9ubHkgLz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi1jb3B5IGNvcHlcIiBkYXRhLWNvcHk9XCJBcGlVcmxcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0ZWRcIj5cbiAgICAgICAgICAgICAgICA8dGV4dGFyZWEgaWQ9XCJBcGlQYXJhbXNcIiBhdXRvY2FwaXRhbGl6ZT1cIm9mZlwiIHN0eWxlPVwiaGVpZ2h0OjUwMHB4XCI+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi1jb3B5IGNvcHkgc3dhcFwiIGRhdGEtY29weT1cIkFwaVBhcmFtc1wiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+IFxuICAgICAgICAgIDwvZGl2PmAsXG4gICAgYWRkOiBgPGRpdiBjbGFzcz1cImFjdGlvbiBpY29uLXBsdXNcIiBkYXRhLWFjdGlvbj1cImFkZFwiPjwvZGl2PmAsXG4gICAgbGluZTogYDxkaXYgY2xhc3M9XCJsaW5lXCI+PC9kaXY+YCxcbiAgICBub2l0ZW1zOiBgPGRpdiBjbGFzcz1cIm5vaXRlbXNcIj48L2Rpdj5gLFxuICAgIHNhdmU6IGA8ZGl2IGNsYXNzPVwiYnV0dG9uc1wiPlxuICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlua0J1dHRvbiBjbG9zZXJcIiBkYXRhLWkxOG49XCJPb3BzXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJTYXZlQnV0dG9uXCIgY2xhc3M9XCJidXR0b25cIiBkYXRhLWRlZmluZWQ9XCJzYXZlXCIgZGF0YS1pMThuPVwiU2F2ZVwiPjwvZGl2PlxuICAgICAgICAgICAgIDwvZGl2PmAsXG4gICAgc2VhcmNoOiBgPGRpdiBjbGFzcz1cImZpbHRlcnNcIj5cbiAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwiU2VhcmNoRmlsdGVyXCIgZGF0YS1kZWZpbmVkPVwic2VhcmNoXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cInNlYXJjaFwiIGRhdGEtaTE4bj1cIkVudGVyRmlsdGVyXCIgLz5cbiAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNsZWFyIGljb24tY2xlYXJcIiBkYXRhLWRlZmluZWQ9XCJjbGVhclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoQnV0dG9uIGljb24tc2VhcmNoXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb3VudGVyc1wiPjxzcGFuIGlkPVwiU3RhcnRcIj4tPC9zcGFuPi08c3BhbiBpZD1cIkVuZFwiPi08L3NwYW4+IDxzcGFuIGRhdGEtaTE4bj1cIk9mXCI+PC9zcGFuPiA8c3BhbiBpZD1cIlRvdGFsXCI+LTwvc3Bhbj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hdmlnYXRlIHByZXYgaWNvbi1wcmV2IGRpc2FibGVkXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYXZpZ2F0ZSBuZXh0IGljb24tbmV4dCBkaXNhYmxlZFwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+YCxcbiAgICB0YWJJZGVudGl0aWVzOiBgPGRpdiBjbGFzcz1cInRhYnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFiXCIgZGF0YS1nbz1cIi9pZGVudGl0aWVzXCIgZGF0YS1pMThuPVwiSWRlbnRpdGllc1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJcIiBkYXRhLWdvPVwiL3JlY2lwZXNcIiBkYXRhLWkxOG49XCJSZWNpcGVzXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYlwiIGRhdGEtZ289XCIvdGVybWluYXRvcnNcIiBkYXRhLWkxOG49XCJUZXJtaW5hdG9yc1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJcIiBkYXRhLWdvPVwiL3Bvc3R1cmUtY2hlY2tzXCIgZGF0YS1pMThuPVwiUG9zdHVyZUNoZWNrc1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+YCxcbiAgICB0YWJQb2xpY2llczogYDxkaXYgY2xhc3M9XCJ0YWJzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJcIiBkYXRhLWdvPVwiL3NlcnZpY2UtcG9saWNpZXNcIiBkYXRhLWkxOG49XCJTZXJ2aWNlUG9saWNpZXNcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYlwiIGRhdGEtZ289XCIvcm91dGVyLXBvbGljaWVzXCIgZGF0YS1pMThuPVwiRWRnZVJvdXRlclBvbGljaWVzXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJcIiBkYXRhLWdvPVwiL3NlcnZpY2Utcm91dGVyLXBvbGljaWVzXCIgZGF0YS1pMThuPVwiU2VydmljZVJvdXRlclBvbGljaWVzXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJcIiBkYXRhLWdvPVwiL2F1dGgtcG9saWNpZXNcIiBkYXRhLWkxOG49XCJBdXRoUG9saWNpZXNcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYlwiIGRhdGEtZ289XCIvand0LXNpZ25lcnNcIiBkYXRhLWkxOG49XCJKd3RTaWduZXJzXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+YCxcbiAgICB0YWJSb3V0ZXJzOiBgPGRpdiBjbGFzcz1cInRhYnNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYlwiIGRhdGEtZ289XCIvcm91dGVyc1wiIGRhdGEtaTE4bj1cIkVkZ2VSb3V0ZXJzXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJcIiBkYXRhLWdvPVwiL3RyYW5zaXQtcm91dGVyc1wiIGRhdGEtaTE4bj1cIlRyYW5zaXRSb3V0ZXJzXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJcIiBkYXRhLWdvPVwiL3JvdXRlci1wb2xpY2llc1wiIGRhdGEtaTE4bj1cIkVkZ2VSb3V0ZXJQb2xpY2llc1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PmAsXG4gICAgdGFiU2VydmVyczogYDxkaXYgY2xhc3M9XCJ0YWJzXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFiXCIgZGF0YS1nbz1cIi9zZXJ2ZXJzXCIgZGF0YS1pMThuPVwiTWFuYWdlU2VydmVyc1wiPk1hbmFnZSBTZXJ2ZXJzPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFiXCIgZGF0YS1nbz1cIi9vcmdhbml6YXRpb25cIiBkYXRhLWkxOG49XCJNYW5hZ2VGaWVsZHNcIj5NYW5hZ2UgQ3VzdG9tIEZpZWxkczwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5gLFxuICAgIHRhYlNlcnZpY2VzOiBgPGRpdiBjbGFzcz1cInRhYnNcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJcIiBkYXRhLWdvPVwiL3NlcnZpY2VzXCIgZGF0YS1pMThuPVwiU2VydmljZXNcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJcIiBkYXRhLWdvPVwiL2NvbmZpZ3NcIiBkYXRhLWkxOG49XCJDb25maWd1cmF0aW9uc1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYlwiIGRhdGEtZ289XCIvY29uZmlnLXR5cGVzXCIgZGF0YS1pMThuPVwiQ29uZmlnVHlwZXNcIj48L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+YCxcbiAgICB0YWJTZXNzaW9uczogYDxkaXYgY2xhc3M9XCJ0YWJzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJcIiBkYXRhLWdvPVwiL3Nlc3Npb25zXCIgZGF0YS1pMThuPVwiU2Vzc2lvbnNcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYlwiIGRhdGEtZ289XCIvYXBpLXNlc3Npb25zXCIgZGF0YS1pMThuPVwiQVBJU2Vzc2lvbnNcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5gLFxuICAgIGN1c3RvbXRhZ3M6IGA8bGFiZWwgZGF0YS1pMThuPVwiVGFnc1wiPjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbmZpZ0JveFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiVGFnRXh0ZW5kZWRcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5gXG59XG5cblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgWmFjV3JhcHBlclNlcnZpY2UgZXh0ZW5kcyBaYWNXcmFwcGVyU2VydmljZUNsYXNzIHtcblxuICAgIG1vZGFsU2hvdztcbiAgICBtb2RhbENsb3NlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoWklUSV9ET01BSU5fQ09OVFJPTExFUikgb3ZlcnJpZGUgeml0aURvbWFpbkNvbnRyb2xsZXI6IFppdGlEb21haW5Db250cm9sbGVyU2VydmljZSxcbiAgICAgICAgQEluamVjdChaSVRJX1VSTFMpIG92ZXJyaWRlIFVSTFM6YW55LFxuICAgICAgICBASW5qZWN0KFNFVFRJTkdTX1NFUlZJQ0UpIG92ZXJyaWRlIHNldHRpbmdzU2VydmljZTogU2V0dGluZ3NTZXJ2aWNlLFxuICAgICAgICBvdmVycmlkZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgICAgICBvdmVycmlkZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgb3ZlcnJpZGUgZ3Jvd2xlclNlcnZpY2U6IEdyb3dsZXJTZXJ2aWNlLFxuICAgICAgICBvdmVycmlkZSBsb2dnZXJTZXJ2aWNlOiBMb2dnZXJTZXJ2aWNlLFxuICAgICAgICBvdmVycmlkZSB2YWxpZGF0aW9uU2VydmljZTogVmFsaWRhdGlvblNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoeml0aURvbWFpbkNvbnRyb2xsZXIsIFVSTFMsIHNldHRpbmdzU2VydmljZSwgaHR0cCwgcm91dGVyLCBncm93bGVyU2VydmljZSwgbG9nZ2VyU2VydmljZSwgdmFsaWRhdGlvblNlcnZpY2UpO1xuICAgICAgICB0aGlzLmdldEN1cnJlbnRQYWdlKHRoaXMucm91dGVyLnVybCk7XG4gICAgICAgIHRoaXMuaW5pdFJvdXRlTGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICBpbml0WmFjKCkge1xuICAgICAgICBpZiAodGhpcy56YWNJbml0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYXBwSW5pdCA9IGdldCh3aW5kb3csICdhcHAuaW5pdCcpO1xuICAgICAgICB0aGlzLnNldHRpbmdzU2VydmljZS5zZXR0aW5nc0NoYW5nZS5zdWJzY3JpYmUoKHNldHRpbmdzKSA9PiB7XG4gICAgICAgICAgICBzZXQod2luZG93LCAnc2VydmljZS5jYWxsJywgdGhpcy5oYW5kbGVTZXJ2aWNlQ2FsbC5iaW5kKHRoaXMpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuaW5pdFphY0xpc3RlbmVycygpO1xuICAgICAgICB0aGlzLnphY0luaXQgPSB0cnVlO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIGluaXRaYWNMaXN0ZW5lcnMoKSB7XG4gICAgICAgIHNldCh3aW5kb3csICdoZWFkZXIuZ290bycsIChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB1cmwgPSAkKGV2ZW50LmN1cnJlbnRUYXJnZXQpLmRhdGEoXCJnb1wiKTtcbiAgICAgICAgICAgIGxldCByb3V0ZSA9IHRoaXMuZ2V0Q3VycmVudFBhZ2UodXJsKTtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtyb3V0ZV0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEN1cnJlbnRQYWdlKHVybCkge1xuICAgICAgICBsZXQgcm91dGUgPSAnJztcbiAgICAgICAgc3dpdGNoICh1cmwpIHtcbiAgICAgICAgICAgIGNhc2UgJyc6XG4gICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gJ2luZGV4JztcbiAgICAgICAgICAgICAgICByb3V0ZSA9IHRoaXMuVVJMUy5aSVRJX0RBU0hCT0FSRDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJy9pZGVudGl0aWVzJzpcbiAgICAgICAgICAgIGNhc2UgJ2lkZW50aXRpZXMnOlxuICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9ICdpZGVudGl0aWVzJztcbiAgICAgICAgICAgICAgICByb3V0ZSA9IHRoaXMuVVJMUy5aSVRJX0lERU5USVRJRVM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICcvYXR0cmlidXRlcyc6XG4gICAgICAgICAgICBjYXNlICdhdHRyaWJ1dGVzJzpcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSAnYXR0cmlidXRlcyc7XG4gICAgICAgICAgICAgICAgcm91dGUgPSB0aGlzLlVSTFMuWklUSV9BVFRSSUJVVEVTO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnL2p3dC1zaWduZXJzJzpcbiAgICAgICAgICAgIGNhc2UgJ2p3dC1zaWduZXJzJzpcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSAnand0LXNpZ25lcnMnO1xuICAgICAgICAgICAgICAgIHJvdXRlID0gdGhpcy5VUkxTLlpJVElfSldUX1NJR05FUlM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICcvc2VydmljZXMnOlxuICAgICAgICAgICAgY2FzZSAnc2VydmljZXMnOlxuICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9ICdzZXJ2aWNlcyc7XG4gICAgICAgICAgICAgICAgcm91dGUgPSB0aGlzLlVSTFMuWklUSV9TRVJWSUNFUztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJy9yb3V0ZXJzJzpcbiAgICAgICAgICAgIGNhc2UgJ3JvdXRlcnMnOlxuICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9ICdyb3V0ZXJzJztcbiAgICAgICAgICAgICAgICByb3V0ZSA9IHRoaXMuVVJMUy5aSVRJX1JPVVRFUlM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICcvdHJhbnNpdC1yb3V0ZXJzJzpcbiAgICAgICAgICAgIGNhc2UgJ3RyYW5zaXQtcm91dGVycyc6XG4gICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gJ3RyYW5zaXQtcm91dGVycyc7XG4gICAgICAgICAgICAgICAgcm91dGUgPSB0aGlzLlVSTFMuWklUSV9UUkFOU0lUX1JPVVRFUlM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICcvY29uZmlncyc6XG4gICAgICAgICAgICBjYXNlICdjb25maWdzJzpcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSAnY29uZmlncyc7XG4gICAgICAgICAgICAgICAgcm91dGUgPSB0aGlzLlVSTFMuWklUSV9DT05GSUdTO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnL2NvbmZpZy10eXBlcyc6XG4gICAgICAgICAgICBjYXNlICdjb25maWctdHlwZXMnOlxuICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9ICdjb25maWctdHlwZXMnO1xuICAgICAgICAgICAgICAgIHJvdXRlID0gdGhpcy5VUkxTLlpJVElfQ09ORklHX1RZUEVTO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnL3JlY2lwZXMnOlxuICAgICAgICAgICAgY2FzZSAncmVjaXBlcyc6XG4gICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gJ3JlY2lwZXMnO1xuICAgICAgICAgICAgICAgIHJvdXRlID0gdGhpcy5VUkxTLlpJVElfUkVDSVBFUztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJy90ZXJtaW5hdG9ycyc6XG4gICAgICAgICAgICBjYXNlICd0ZXJtaW5hdG9ycyc6XG4gICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gJ3Rlcm1pbmF0b3JzJztcbiAgICAgICAgICAgICAgICByb3V0ZSA9IHRoaXMuVVJMUy5aSVRJX1RFUk1JTkFUT1JTO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnL2NvbmZpZy10ZXJtaW5hdG9ycyc6XG4gICAgICAgICAgICBjYXNlICdjb25maWctdGVybWluYXRvcnMnOlxuICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9ICdjb25maWctdGVybWluYXRvcnMnO1xuICAgICAgICAgICAgICAgIHJvdXRlID0gdGhpcy5VUkxTLlpJVElfQ09ORklHX1RFUk1JTkFUT1JTO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnL2F1dGgtcG9saWNpZXMnOlxuICAgICAgICAgICAgY2FzZSAnYXV0aC1wb2xpY2llcyc6XG4gICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gJ2F1dGgtcG9saWNpZXMnO1xuICAgICAgICAgICAgICAgIHJvdXRlID0gdGhpcy5VUkxTLlpJVElfQVVUSF9QT0xJQ0lFUztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJy9zZXJ2aWNlLXBvbGljaWVzJzpcbiAgICAgICAgICAgIGNhc2UgJ3NlcnZpY2UtcG9saWNpZXMnOlxuICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9ICdzZXJ2aWNlLXBvbGljaWVzJztcbiAgICAgICAgICAgICAgICByb3V0ZSA9IHRoaXMuVVJMUy5aSVRJX1NFUlZJQ0VfUE9MSUNJRVM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICcvcm91dGVyLXBvbGljaWVzJzpcbiAgICAgICAgICAgIGNhc2UgJ3JvdXRlci1wb2xpY2llcyc6XG4gICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gJ3JvdXRlci1wb2xpY2llcyc7XG4gICAgICAgICAgICAgICAgcm91dGUgPSB0aGlzLlVSTFMuWklUSV9ST1VURVJfUE9MSUNJRVM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICcvc2VydmljZS1yb3V0ZXItcG9saWNpZXMnOlxuICAgICAgICAgICAgY2FzZSAnc2VydmljZS1yb3V0ZXItcG9saWNpZXMnOlxuICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9ICdzZXJ2aWNlLXJvdXRlci1wb2xpY2llcyc7XG4gICAgICAgICAgICAgICAgcm91dGUgPSB0aGlzLlVSTFMuWklUSV9TRVJWSUNFX1JPVVRFUl9QT0xJQ0lFUztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJy9wb3N0dXJlLWNoZWNrcyc6XG4gICAgICAgICAgICBjYXNlICdwb3N0dXJlLWNoZWNrcyc6XG4gICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gJ3Bvc3R1cmUtY2hlY2tzJztcbiAgICAgICAgICAgICAgICByb3V0ZSA9IHRoaXMuVVJMUy5aSVRJX1BPU1RVUkVfQ0hFQ0tTO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnL2NlcnRpZmljYXRlLWF1dGhvcml0aWVzJzpcbiAgICAgICAgICAgIGNhc2UgJ2NlcnRpZmljYXRlLWF1dGhvcml0aWVzJzpcbiAgICAgICAgICAgIGNhc2UgJy9jYXMnOlxuICAgICAgICAgICAgY2FzZSAnY2FzJzpcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSAnY2FzJztcbiAgICAgICAgICAgICAgICByb3V0ZSA9IHRoaXMuVVJMUy5aSVRJX0NFUlRfQVVUSE9SSVRJRVM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICcvc2Vzc2lvbnMnOlxuICAgICAgICAgICAgY2FzZSAnc2Vzc2lvbnMnOlxuICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9ICdzZXNzaW9ucyc7XG4gICAgICAgICAgICAgICAgcm91dGUgPSB0aGlzLlVSTFMuWklUSV9TRVNTSU9OUztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJy9uZXR3b3JrLXZpc3VhbGl6ZXInOlxuICAgICAgICAgICAgY2FzZSAnbmV0d29yay12aXN1YWxpemVyJzpcbiAgICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gJ25ldHdvcmstdmlzdWFsaXplcic7XG4gICAgICAgICAgICAgICAgIHJvdXRlID0gdGhpcy5VUkxTLk5FVFdPUktfVklTVUFMSVpFUjtcbiAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICcvYXBpLXNlc3Npb25zJzpcbiAgICAgICAgICAgIGNhc2UgJ2FwaS1zZXNzaW9ucyc6XG4gICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gJ2FwaS1zZXNzaW9ucyc7XG4gICAgICAgICAgICAgICAgcm91dGUgPSB0aGlzLlVSTFMuWklUSV9BUElfU0VTU0lPTlM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICcvc2VydmVycyc6XG4gICAgICAgICAgICBjYXNlICdzZXJ2ZXJzJzpcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSAnc2VydmVycyc7XG4gICAgICAgICAgICAgICAgcm91dGUgPSB0aGlzLlVSTFMuWklUSV9TRVJWRVJTO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnL2xvZ2luJzpcbiAgICAgICAgICAgIGNhc2UgJ2xvZ2luJzpcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSAnbG9naW4nO1xuICAgICAgICAgICAgICAgIHJvdXRlID0gdGhpcy5VUkxTLlpBQ19MT0dJTjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJy9vcmdhbml6YXRpb24nOlxuICAgICAgICAgICAgY2FzZSAnb3JnYW5pemF0aW9uJzpcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSAnb3JnYW5pemF0aW9uJztcbiAgICAgICAgICAgICAgICByb3V0ZSA9IHRoaXMuVVJMUy5aSVRJX0NVU1RPTV9GSUVMRFM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICcvcHJvZmlsZSc6XG4gICAgICAgICAgICBjYXNlICdwcm9maWxlJzpcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSAncHJvZmlsZSc7XG4gICAgICAgICAgICAgICAgcm91dGUgPSB0aGlzLlVSTFMuWklUSV9QUk9GSUxFO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnL3NldHRpbmdzJzpcbiAgICAgICAgICAgIGNhc2UgJ3NldHRpbmdzJzpcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSAnc2V0dGluZ3MnO1xuICAgICAgICAgICAgICAgIHJvdXRlID0gdGhpcy5VUkxTLlpJVElfU0VUVElOR1M7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9ICdpbmRleCc7XG4gICAgICAgICAgICAgICAgcm91dGUgPSB0aGlzLlVSTFMuWklUSV9EQVNIQk9BUkQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJvdXRlO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFJvdXRlTGlzdGVuZXIoKSB7XG4gICAgICAgIHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoKGV2ZW50IGFzIGFueSlbJ3JvdXRlckV2ZW50J10gaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb2xkUGFnZSA9IHRoaXMucGFnZTtcbiAgICAgICAgICAgICAgICBjb25zdCBwYWdlID0gKGV2ZW50IGFzIGFueSlbJ3JvdXRlckV2ZW50J11bJ3VybCddLnNwbGl0KCc7JylbMF0uc3BsaXQoJz8nKVswXTtcbiAgICAgICAgICAgICAgICBsZXQgZG9QYWdlTG9hZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHN3aXRjaCAocGFnZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIHRoaXMuVVJMUy5aSVRJX0RBU0hCT0FSRDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9ICdpbmRleCc7XG4gICAgICAgICAgICAgICAgICAgICAgICBkb1BhZ2VMb2FkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIHRoaXMuVVJMUy5aSVRJX1NFUlZJQ0VTOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gJ3NlcnZpY2VzJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIHRoaXMuVVJMUy5aSVRJX0lERU5USVRJRVM6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSAnaWRlbnRpdGllcyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSB0aGlzLlVSTFMuWklUSV9KV1RfU0lHTkVSUzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9ICdqd3Qtc2lnbmVycyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSB0aGlzLlVSTFMuWklUSV9DT05GSUdTOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gJ2NvbmZpZ3MnO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5VUkxTLlpJVElfQ09ORklHX1RZUEVTOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gJ2NvbmZpZy10eXBlcyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSB0aGlzLlVSTFMuWklUSV9ST1VURVJTOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gJ3JvdXRlcnMnO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5VUkxTLlpJVElfVFJBTlNJVF9ST1VURVJTOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gJ3RyYW5zaXQtcm91dGVycyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSB0aGlzLlVSTFMuWklUSV9SRUNJUEVTOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gJ3JlY2lwZXMnO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5VUkxTLlpJVElfVEVSTUlOQVRPUlM6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSAndGVybWluYXRvcnMnO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5VUkxTLlpJVElfQVVUSF9QT0xJQ0lFUzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9ICdhdXRoLXBvbGljaWVzJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIHRoaXMuVVJMUy5aSVRJX1NFUlZJQ0VfUE9MSUNJRVM6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSAnc2VydmljZS1wb2xpY2llcyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSB0aGlzLlVSTFMuWklUSV9ST1VURVJfUE9MSUNJRVM6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSAncm91dGVyLXBvbGljaWVzJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIHRoaXMuVVJMUy5aSVRJX1NFUlZJQ0VfUk9VVEVSX1BPTElDSUVTOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gJ3NlcnZpY2Utcm91dGVyLXBvbGljaWVzJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIHRoaXMuVVJMUy5aSVRJX1BPU1RVUkVfQ0hFQ0tTOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gJ3Bvc3R1cmUtY2hlY2tzJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIHRoaXMuVVJMUy5aSVRJX0JST1daRVJfQ0FTOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIHRoaXMuVVJMUy5aSVRJX0NFUlRfQVVUSE9SSVRJRVM6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSAnY2FzJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIHRoaXMuVVJMUy5aSVRJX1NFU1NJT05TOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gJ3Nlc3Npb25zJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIHRoaXMuVVJMUy5aSVRJX0FQSV9TRVNTSU9OUzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9ICdhcGktc2Vzc2lvbnMnO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5VUkxTLlpJVElfQVRUUklCVVRFUzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9ICdhdHRyaWJ1dGVzJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIHRoaXMuVVJMUy5aQUNfTE9HSU46XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSAnbG9naW4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgdGhpcy5VUkxTLlpJVElfU0VSVkVSUzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9ICdzZXJ2ZXJzJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIHRoaXMuVVJMUy5aSVRJX0NVU1RPTV9GSUVMRFM6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSAnb3JnYW5pemF0aW9uJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIHRoaXMuVVJMUy5aSVRJX1BST0ZJTEU6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSAncHJvZmlsZSc7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSB0aGlzLlVSTFMuWklUSV9TRVRUSU5HUzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9ICdzZXR0aW5ncyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9ICdpbmRleCc7XG4gICAgICAgICAgICAgICAgICAgICAgICBkb1BhZ2VMb2FkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAob2xkUGFnZSAhPT0gdGhpcy5wYWdlIHx8IGRvUGFnZUxvYWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdlQ2hhbmdlZC5lbWl0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBsb2FkQ3VycmVudFBhZ2UoKSB7XG4gICAgICAgIHRoaXMuZ2V0Q3VycmVudFBhZ2UodGhpcy5yb3V0ZXIudXJsKTtcbiAgICAgICAgaWYgKGlzRW1wdHkodGhpcy5wYWdlKSkge1xuICAgICAgICAgICAgdGhpcy5wYWdlID0gJ2luZGV4J1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhdGggPSAnYXNzZXRzL2h0bWwvJyArIHRoaXMucGFnZSArICcuaHRtJztcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQocGF0aCwge3Jlc3BvbnNlVHlwZTogXCJ0ZXh0XCJ9KS50b1Byb21pc2UoKS50aGVuKChodG1sOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcHJvcCBpbiBDT01QT05FTlRTKSB7XG4gICAgICAgICAgICAgICAgaHRtbCA9IGh0bWwuc3BsaXQoJ3t7aHRtbC4nICsgcHJvcCArICd9fScpLmpvaW4oQ09NUE9ORU5UU1twcm9wXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaHRtbDtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaGFuZGxlU2VydmljZUNhbGwobmFtZTogc3RyaW5nLCBwYXJhbXM6IGFueSwgcmV0dXJuVG86IGFueSwgdHlwZTogYW55KSB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2xsZXJEb21haW4gPSB0aGlzLnNldHRpbmdzU2VydmljZT8uc2V0dGluZ3M/LnNlbGVjdGVkRWRnZUNvbnRyb2xsZXIgfHwgJyc7XG4gICAgICAgIHN3aXRjaCAobmFtZSkge1xuICAgICAgICAgICAgY2FzZSAnZGF0YSc6XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRaaXRpRW50aXRpZXMocGFyYW1zLnR5cGUsIHBhcmFtcy5wYWdpbmcpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVNlcnZpY2VSZXN1bHQocmVzdWx0LCByZXR1cm5Ubyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzdWJkYXRhJzpcbiAgICAgICAgICAgICAgICB0aGlzLmdldFppdGlFbnRpdHkocGFyYW1zKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVTZXJ2aWNlUmVzdWx0KHJlc3VsdCwgcmV0dXJuVG8pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZGF0YVNhdmUnOlxuICAgICAgICAgICAgICAgIHRoaXMuc2F2ZVppdGlFbnRpdHkocGFyYW1zLCByZXR1cm5Ubyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdpZGVudGl0eSc6XG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVTaW1wbGVJZGVudGl0eShwYXJhbXMpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVNlcnZpY2VSZXN1bHQocmVzdWx0LCByZXR1cm5Ubyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzZXJ2aWNlJzpcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVNpbXBsZVNlcnZpY2UocGFyYW1zKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVTZXJ2aWNlUmVzdWx0KHJlc3VsdCwgcmV0dXJuVG8pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc3ViU2F2ZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5zYXZlWml0aVN1YkRhdGEocGFyYW1zLCByZXR1cm5Ubyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdkZWxldGUnOlxuICAgICAgICAgICAgICAgIHRoaXMuZGVsZXRlWml0aUVudGl0aWVzKHBhcmFtcywgcmV0dXJuVG8pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY2FsbCc6XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxsWml0aUVkZ2UoYCR7Y29udHJvbGxlckRvbWFpbn0vZWRnZS9tYW5hZ2VtZW50L3YxLyR7cGFyYW1zLnVybH1gLCB7fSkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlU2VydmljZVJlc3VsdChyZXN1bHQsIHJldHVyblRvKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3NjaGVtYSc6XG4gICAgICAgICAgICAgICAgdGhpcy5kZXJlZmVyZW5jZUpTT05TY2hlbWEocGFyYW1zLnNjaGVtYSkudGhlbigoc2NoZW1hKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlU2VydmljZVJlc3VsdCh7ZGF0YTogc2NoZW1hfSwgcmV0dXJuVG8pO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd0ZW1wbGF0ZSc6XG4gICAgICAgICAgICBjYXNlICdsYW5ndWFnZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRMb2NhbGVGaWxlKHBhcmFtcy5sb2NhbGUpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVNlcnZpY2VSZXN1bHQocmVzdWx0LCByZXR1cm5Ubyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzZXR0aW5ncyc6XG4gICAgICAgICAgICAgICAgdGhpcy5odHRwLmdldChcImFzc2V0cy9kYXRhL3NldHRpbmdzLmpzb25cIiwge30pLnRvUHJvbWlzZSgpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm5UbyhyZXN1bHQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndmVyc2lvbic6XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxsWml0aUVkZ2UoYCR7Y29udHJvbGxlckRvbWFpbn0vZWRnZS9tYW5hZ2VtZW50L3YxL3ZlcnNpb25gLCB7fSkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZlcnNpb25EYXRhID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJkYXRhXCI6IHJlc3VsdC5kYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJzZXJ2aWNlVXJsXCI6IFwiL2VkZ2UvbWFuYWdlbWVudC92MVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ6YWNcIjogVkVSU0lPTi52ZXJzaW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJiYXNlVXJsXCI6IHRoaXMuc2V0dGluZ3NTZXJ2aWNlPy5zZXR0aW5ncz8uc2VsZWN0ZWRFZGdlQ29udHJvbGxlclxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVyblRvKHZlcnNpb25EYXRhKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NvbnRyb2xsZXJTYXZlJzpcbiAgICAgICAgICAgICAgICB0aGlzLmNhbGxaaXRpRWRnZShcIi9hcGkvY29udHJvbGxlclNhdmVcIiwge30pLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVNlcnZpY2VSZXN1bHQocmVzdWx0LCByZXR1cm5Ubyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzZXJ2ZXInOlxuICAgICAgICAgICAgICAgIHRoaXMuY2FsbFppdGlFZGdlKFwiL2FwaS9zZXJ2ZXJcIiwge30pLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVNlcnZpY2VSZXN1bHQocmVzdWx0LCByZXR1cm5Ubyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd0YWdzJzpcbiAgICAgICAgICAgICAgICAvLyBGb3Igbm8gdGhpcyBpcyBhIG5vLW9wXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYW5kbGVTZXJ2aWNlUmVzdWx0KHJlc3VsdCwgcmV0dXJuVG8pIHtcbiAgICAgICAgaWYgKHJlc3VsdD8uZXJyb3IpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMuaGFuZGxlRXJyb3IocmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm5UbyhyZXN1bHQpO1xuICAgIH1cblxuICAgIGFzeW5jIGNyZWF0ZVNpbXBsZUlkZW50aXR5KHBhcmFtcykge1xuICAgICAgICBwYXJhbXMgPSB7XG4gICAgICAgICAgICBuYW1lOiBwYXJhbXMubmFtZSxcbiAgICAgICAgICAgIHJvbGVBdHRyaWJ1dGVzOiBwYXJhbXMucm9sZXMsXG4gICAgICAgICAgICBlbnJvbGxtZW50OiB7IG90dDogdHJ1ZSB9LFxuICAgICAgICAgICAgaXNBZG1pbjogZmFsc2UsXG4gICAgICAgICAgICB0eXBlOiBcIkRldmljZVwiXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29udHJvbGxlckRvbWFpbiA9IHRoaXMuc2V0dGluZ3NTZXJ2aWNlPy5zZXR0aW5ncz8uc2VsZWN0ZWRFZGdlQ29udHJvbGxlciB8fCAnJztcbiAgICAgICAgY29uc3QgdXJsID0gYCR7Y29udHJvbGxlckRvbWFpbn0vZWRnZS9tYW5hZ2VtZW50L3YxL2lkZW50aXRpZXNgO1xuICAgICAgICBjb25zdCBpZCA9IGF3YWl0IHRoaXMuY2FsbFppdGlFZGdlKHVybCwgcGFyYW1zLCAnUE9TVCcpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdD8uZGF0YT8uaWQ7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBlbnRpdHlQYXJhbXMgPSB7XG4gICAgICAgICAgICBuYW1lOiAnaWRlbnRpdGllcycsXG4gICAgICAgICAgICB0eXBlOiAnJyxcbiAgICAgICAgICAgIHVybDogJy4vaWRlbnRpdGllcy8nICsgaWRcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5nZXRaaXRpRW50aXR5KGVudGl0eVBhcmFtcykudGhlbigocmVzdWx0czogYW55KSA9PiB7XG4gICAgICAgICAgICByZXN1bHRzLmNsaSA9IFtdO1xuICAgICAgICAgICAgcmVzdWx0cy5zZXJ2aWNlcyA9IFtdO1xuXG4gICAgICAgICAgICBsZXQgY2xpID0gXCJ6aXRpIGVkZ2UgY3JlYXRlIGlkZW50aXR5IGRldmljZSBcXCdcIitwYXJhbXMubmFtZStcIlxcJ1wiO1xuICAgICAgICAgICAgaWYgKHBhcmFtcy5yb2xlQXR0cmlidXRlcykgY2xpICs9IFwiIC1hIFxcJ1wiK3BhcmFtcy5yb2xlQXR0cmlidXRlcy50b1N0cmluZygpK1wiXFwnXCI7XG4gICAgICAgICAgICByZXN1bHRzLmNsaS5wdXNoKGNsaSk7XG5cbiAgICAgICAgICAgIGxldCBzZXJ2aWNlQ2FsbCA9IHtcbiAgICAgICAgICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHBhcmFtc1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlc3VsdHMuc2VydmljZXMucHVzaChzZXJ2aWNlQ2FsbCk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBhc3luYyBjcmVhdGVTaW1wbGVTZXJ2aWNlKHBhcmFtcykge1xuICAgICAgICBjb25zdCBuYW1lID0gcGFyYW1zLm5hbWU7XG4gICAgICAgIGNvbnN0IHByb3RvY29sID0gcGFyYW1zLnByb3RvY29sO1xuICAgICAgICBjb25zdCBob3N0ID0gcGFyYW1zLmhvc3Q7XG4gICAgICAgIGNvbnN0IHBvcnQgPSBOdW1iZXIocGFyYW1zLnBvcnQpO1xuICAgICAgICBjb25zdCB1c2VFbmNyeXB0ID0gcGFyYW1zLmVuY3J5cHQ7XG4gICAgICAgIGNvbnN0IHppdGlIb3N0ID0gcGFyYW1zLnppdGlIb3N0O1xuICAgICAgICBjb25zdCB6aXRpUG9ydCA9IE51bWJlcihwYXJhbXMueml0aVBvcnQpO1xuICAgICAgICBjb25zdCBob3N0ZWQgPSBwYXJhbXMuaG9zdGVkO1xuICAgICAgICBjb25zdCBhY2Nlc3MgPSBwYXJhbXMuYWNjZXNzO1xuXG4gICAgICAgIGNvbnN0IHJvb3ROYW1lID0gbmFtZS50cmltKCkucmVwbGFjZSgvW15hLXowLTkgXS9naSwgJycpLnNwbGl0KCcgJykuam9pbignLScpO1xuICAgICAgICBjb25zdCBjbGllbnROYW1lID0gcm9vdE5hbWUrXCItQ2xpZW50XCI7XG4gICAgICAgIGNvbnN0IHNlcnZlck5hbWUgPSByb290TmFtZStcIi1TZXJ2ZXJcIjtcbiAgICAgICAgY29uc3QgZGlhbFBvbGljeU5hbWUgPSByb290TmFtZStcIi1EaWFsUG9saWN5XCI7XG4gICAgICAgIGNvbnN0IGJpbmRQb2xpY3lOYW1lID0gcm9vdE5hbWUrXCItQmluZFBvbGljeVwiO1xuXG4gICAgICAgIGNvbnN0IHNlcnZlckNvbmZpZyA9IHtcbiAgICAgICAgICAgIGhvc3RuYW1lOiBob3N0LFxuICAgICAgICAgICAgcG9ydDogcG9ydCxcbiAgICAgICAgICAgIHByb3RvY29sOiBwcm90b2NvbFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBjbGllbnRDb25maWcgPSB7XG4gICAgICAgICAgICBob3N0bmFtZTogeml0aUhvc3QsXG4gICAgICAgICAgICBwb3J0OiB6aXRpUG9ydFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHBhZ2luZyA9IHtcbiAgICAgICAgICAgIGZpbHRlcjogXCJ6aXRpLXR1bm5lbGVyLWNsaWVudC52MVwiLFxuICAgICAgICAgICAgbm9TZWFyY2g6IGZhbHNlLFxuICAgICAgICAgICAgb3JkZXI6IFwiYXNjXCIsXG4gICAgICAgICAgICBwYWdlOiAxLFxuICAgICAgICAgICAgc2VhcmNoT246IFwibmFtZVwiLFxuICAgICAgICAgICAgc29ydDogXCJuYW1lXCIsXG4gICAgICAgICAgICB0b3RhbDogNTBcbiAgICAgICAgfVxuICAgICAgICBsZXQgY29uZmlnVHlwZVJlc3VsdCA9IGF3YWl0IHRoaXMuZ2V0Wml0aUVudGl0aWVzKCdjb25maWctdHlwZXMnLCBwYWdpbmcpO1xuICAgICAgICBjb25zdCBjbGllbnRDb25maWdJZCA9IGNvbmZpZ1R5cGVSZXN1bHQuZGF0YVswXT8uaWQ7XG4gICAgICAgIHBhZ2luZy5maWx0ZXIgPSAneml0aS10dW5uZWxlci1zZXJ2ZXIudjEnO1xuICAgICAgICBjb25maWdUeXBlUmVzdWx0ID0gYXdhaXQgdGhpcy5nZXRaaXRpRW50aXRpZXMoJ2NvbmZpZy10eXBlcycsIHBhZ2luZyk7XG4gICAgICAgIGNvbnN0IHNlcnZlckNvbmZpZ0lkID0gY29uZmlnVHlwZVJlc3VsdC5kYXRhWzBdPy5pZDtcblxuICAgICAgICBjb25zdCBzZXJ2ZXJEYXRhID0gYXdhaXQgdGhpcy5jcmVhdGVDb25maWcoc2VydmVyQ29uZmlnSWQsIHNlcnZlck5hbWUsIHNlcnZlckNvbmZpZyk7XG4gICAgICAgIGNvbnN0IGNsaWVudERhdGEgPSBhd2FpdCB0aGlzLmNyZWF0ZUNvbmZpZyhjbGllbnRDb25maWdJZCwgY2xpZW50TmFtZSwgY2xpZW50Q29uZmlnKTtcbiAgICAgICAgY29uc3Qgc2VydmVySWQgPSBzZXJ2ZXJEYXRhLmlkO1xuICAgICAgICBjb25zdCBjbGllbnRJZCA9IGNsaWVudERhdGEuaWQ7XG5cbiAgICAgICAgY29uc3Qgc2VydmljZURhdGEgPSBhd2FpdCB0aGlzLmNyZWF0ZVNlcnZpY2UobmFtZSwgc2VydmVySWQsIGNsaWVudElkLCB1c2VFbmNyeXB0KTtcbiAgICAgICAgY29uc3Qgc2VydmljZUlkID0gc2VydmljZURhdGEuaWQ7XG5cbiAgICAgICAgY29uc3QgYmluZERhdGEgPSBhd2FpdCB0aGlzLmNyZWF0ZVNlcnZpY2VQb2xpY3koYmluZFBvbGljeU5hbWUsIFwiQFwiK3NlcnZpY2VJZCwgaG9zdGVkKTtcbiAgICAgICAgY29uc3QgZGlhbERhdGEgPSBhd2FpdCB0aGlzLmNyZWF0ZVNlcnZpY2VQb2xpY3koZGlhbFBvbGljeU5hbWUsIFwiQFwiK3NlcnZpY2VJZCwgYWNjZXNzKTtcblxuICAgICAgICBjb25zdCBiaW5kSWQgPSBiaW5kRGF0YS5pZDtcbiAgICAgICAgY29uc3QgZGlhbElkID0gZGlhbERhdGEuaWQ7XG5cbiAgICAgICAgY29uc3QgdG9SZXR1cm4gPSB7XG4gICAgICAgICAgICBkYXRhOiBbXSxcbiAgICAgICAgICAgIGNsaTogW10sXG4gICAgICAgICAgICBzZXJ2aWNlczogW11cbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBsb2dzID0gW107XG4gICAgICAgIGxvZ3MucHVzaCh7bmFtZTogc2VydmVyTmFtZSwgaWQ6IHNlcnZlcklkLCB0eXBlOiBcIkNvbmZpZ1wifSk7XG4gICAgICAgIGxvZ3MucHVzaCh7bmFtZTogY2xpZW50TmFtZSwgaWQ6IGNsaWVudElkLCB0eXBlOiBcIkNvbmZpZ1wifSk7XG4gICAgICAgIGxvZ3MucHVzaCh7bmFtZTogbmFtZSwgaWQ6IHNlcnZpY2VJZCwgdHlwZTogXCJTZXJ2aWNlXCJ9KTtcbiAgICAgICAgbG9ncy5wdXNoKHtuYW1lOiBiaW5kUG9saWN5TmFtZSwgaWQ6IGJpbmRJZCwgdHlwZTogXCJQb2xpY3lcIn0pO1xuICAgICAgICBsb2dzLnB1c2goe25hbWU6IGRpYWxQb2xpY3lOYW1lLCBpZDogZGlhbElkLCB0eXBlOiBcIlBvbGljeVwifSk7XG4gICAgICAgIHRvUmV0dXJuLmRhdGEgPSBsb2dzO1xuICAgICAgICB0b1JldHVybi5jbGkucHVzaChzZXJ2ZXJEYXRhLmNsaSk7XG4gICAgICAgIHRvUmV0dXJuLmNsaS5wdXNoKGNsaWVudERhdGEuY2xpKTtcbiAgICAgICAgdG9SZXR1cm4uY2xpLnB1c2goc2VydmljZURhdGEuY2xpKTtcbiAgICAgICAgdG9SZXR1cm4uY2xpLnB1c2goYmluZERhdGEuY2xpKTtcbiAgICAgICAgdG9SZXR1cm4uY2xpLnB1c2goZGlhbERhdGEuY2xpKTtcblxuICAgICAgICB0b1JldHVybi5zZXJ2aWNlcy5wdXNoKHNlcnZlckRhdGEuc2VydmljZSk7XG4gICAgICAgIHRvUmV0dXJuLnNlcnZpY2VzLnB1c2goY2xpZW50RGF0YS5zZXJ2aWNlKTtcbiAgICAgICAgdG9SZXR1cm4uc2VydmljZXMucHVzaChzZXJ2aWNlRGF0YS5zZXJ2aWNlKTtcbiAgICAgICAgdG9SZXR1cm4uc2VydmljZXMucHVzaChiaW5kRGF0YS5zZXJ2aWNlKTtcbiAgICAgICAgdG9SZXR1cm4uc2VydmljZXMucHVzaChkaWFsRGF0YS5zZXJ2aWNlKTtcblxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxuXG4gICAgYXN5bmMgY3JlYXRlU2VydmljZShuYW1lLCBzZXJ2ZXJJZCwgY2xpZW50SWQsIGVuY3J5cHQpIHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgIGNvbmZpZ3M6IFtzZXJ2ZXJJZCwgY2xpZW50SWRdLFxuICAgICAgICAgICAgZW5jcnlwdGlvblJlcXVpcmVkOiBlbmNyeXB0LFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBjb250cm9sbGVyRG9tYWluID0gdGhpcy5zZXR0aW5nc1NlcnZpY2U/LnNldHRpbmdzPy5zZWxlY3RlZEVkZ2VDb250cm9sbGVyIHx8ICcnO1xuICAgICAgICBjb25zdCB1cmwgPSBgJHtjb250cm9sbGVyRG9tYWlufS9lZGdlL21hbmFnZW1lbnQvdjEvc2VydmljZXNgO1xuICAgICAgICByZXR1cm4gdGhpcy5jYWxsWml0aUVkZ2UodXJsLCBwYXJhbXMsICdQT1NUJykudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICBsZXQgY2xpID0gXCJ6aXRpIGVkZ2UgY3JlYXRlIHNlcnZpY2UgJ1wiK25hbWUrXCInIC0tY29uZmlncyAnXCIrc2VydmVySWQrXCIsXCIrY2xpZW50SWQrXCInXCI7XG4gICAgICAgICAgICBsZXQgc2VydmljZUNhbGwgPSB7XG4gICAgICAgICAgICAgICAgdXJsOiB1cmwrXCIvc2VydmljZXNcIixcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHBhcmFtc1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHZhciBpdGVtID0ge1xuICAgICAgICAgICAgICAgIGlkOiByZXN1bHQ/LmRhdGE/LmlkIHx8ICcnLFxuICAgICAgICAgICAgICAgIGNsaTogY2xpLFxuICAgICAgICAgICAgICAgIHNlcnZpY2U6IHNlcnZpY2VDYWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYXN5bmMgY3JlYXRlU2VydmljZVBvbGljeShuYW1lLCBzZXJ2aWNlSWQsIGhvc3RlZCkge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgdHlwZTogXCJCaW5kXCIsXG4gICAgICAgICAgICBzZW1hbnRpYzogXCJBbnlPZlwiLFxuICAgICAgICAgICAgc2VydmljZVJvbGVzOiBbc2VydmljZUlkXSxcbiAgICAgICAgICAgIGlkZW50aXR5Um9sZXM6IGhvc3RlZCxcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb250cm9sbGVyRG9tYWluID0gdGhpcy5zZXR0aW5nc1NlcnZpY2U/LnNldHRpbmdzPy5zZWxlY3RlZEVkZ2VDb250cm9sbGVyIHx8ICcnO1xuICAgICAgICBjb25zdCB1cmwgPSBgJHtjb250cm9sbGVyRG9tYWlufS9lZGdlL21hbmFnZW1lbnQvdjEvc2VydmljZS1wb2xpY2llc2A7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbGxaaXRpRWRnZSh1cmwsIHBhcmFtcywgJ1BPU1QnKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIGxldCBjbGkgPSBcInppdGkgZWRnZSBjcmVhdGUgc2VydmljZS1wb2xpY3kgJ1wiK25hbWUrXCInIEJpbmQgLS1zZW1hbnRpYyBBbnlPZiAtLXNlcnZpY2Utcm9sZXMgJ1wiK3NlcnZpY2VJZCtcIicgLS1pZGVudGl0eS1yb2xlcyAnXCIraG9zdGVkLnRvU3RyaW5nKCkrXCInXCI7XG4gICAgICAgICAgICBsZXQgc2VydmljZUNhbGwgPSB7XG4gICAgICAgICAgICAgICAgdXJsOiB1cmwrXCIvc2VydmljZS1wb2xpY2llc1wiLFxuICAgICAgICAgICAgICAgIHBhcmFtczogcGFyYW1zXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdmFyIGl0ZW0gPSB7XG4gICAgICAgICAgICAgICAgaWQ6IHJlc3VsdD8uZGF0YT8uaWQgfHwgJycsXG4gICAgICAgICAgICAgICAgY2xpOiBjbGksXG4gICAgICAgICAgICAgICAgc2VydmljZTogc2VydmljZUNhbGxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhc3luYyBjcmVhdGVDb25maWcoY29uZmlnSWQsIG5hbWUsIGRhdGEsIGluZGV4ID0gMCkge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgICBuYW1lOiBuYW1lKygoaW5kZXg+MCk/XCItXCIraW5kZXg6XCJcIiksXG4gICAgICAgICAgICBjb25maWdUeXBlSWQ6IGNvbmZpZ0lkLFxuICAgICAgICAgICAgZGF0YTogZGF0YVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBjb250cm9sbGVyRG9tYWluID0gdGhpcy5zZXR0aW5nc1NlcnZpY2U/LnNldHRpbmdzPy5zZWxlY3RlZEVkZ2VDb250cm9sbGVyIHx8ICcnO1xuICAgICAgICBjb25zdCB1cmwgPSBgJHtjb250cm9sbGVyRG9tYWlufS9lZGdlL21hbmFnZW1lbnQvdjEvY29uZmlnc2A7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbGxaaXRpRWRnZSh1cmwsIHBhcmFtcywgJ1BPU1QnKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNsaSA9IFwieml0aSBlZGdlIGNyZWF0ZSBjb25maWcgJ1wiK3BhcmFtcy5uYW1lK1wiJyAnXCIrY29uZmlnSWQrXCInICdcIitKU09OLnN0cmluZ2lmeShkYXRhKS5zcGxpdCgnXCInKS5qb2luKCdcXFxcXCInKStcIidcIjtcbiAgICAgICAgICAgIGNvbnN0IHNlcnZpY2VDYWxsID0ge1xuICAgICAgICAgICAgICAgIHVybDogdXJsK1wiL2NvbmZpZ3NcIixcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHBhcmFtc1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgaXRlbSA9IHtcbiAgICAgICAgICAgICAgICBpZDogcmVzdWx0Py5kYXRhPy5pZCB8fCAnJyxcbiAgICAgICAgICAgICAgICBjbGk6IGNsaSxcbiAgICAgICAgICAgICAgICBzZXJ2aWNlOiBzZXJ2aWNlQ2FsbFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFzeW5jIGRlcmVmZXJlbmNlSlNPTlNjaGVtYShkYXRhOiBhbnkpIHtcbiAgICAgICAgY29uc3QgcmVzb2x2ZXIgPSBuZXcgUmVzb2x2ZXIoKTtcbiAgICAgICAgY29uc3Qgc2NoZW1hID0gYXdhaXQgcmVzb2x2ZXIucmVzb2x2ZShkYXRhKTtcbiAgICAgICAgcmV0dXJuIHNjaGVtYS5yZXN1bHQ7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0TG9jYWxlRmlsZShsb2NhbGU6IHN0cmluZyA9ICdlbi11cycpIHtcbiAgICAgICAgbG9jYWxlID0gbG9jYWxlLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGxldCBwYXRoID0gJ2Fzc2V0cy9sYW5ndWFnZXMvJyArIGxvY2FsZSArICcuanNvbic7XG4gICAgICAgIGxldCBsb2NhbGVGaWxlID0gYXdhaXQgdGhpcy5odHRwLmdldChwYXRoLCB7cmVzcG9uc2VUeXBlOiBcInRleHRcIn0pLnRvUHJvbWlzZSgpLnRoZW4oKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShyZXN1bHQpO1xuICAgICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIWxvY2FsZUZpbGUpIHtcbiAgICAgICAgICAgIHBhdGggPSAnYXNzZXRzL2xhbmd1YWdlcy9lbi11cy5qc29uJztcbiAgICAgICAgICAgIGxvY2FsZUZpbGUgPSBhd2FpdCB0aGlzLmh0dHAuZ2V0KHBhdGgsIHtyZXNwb25zZVR5cGU6IFwidGV4dFwifSkudG9Qcm9taXNlKCkudGhlbigocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShyZXN1bHQpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbG9jYWxlRmlsZTtcbiAgICB9XG5cbiAgICBnZXRaaXRpRW50aXRpZXModHlwZTogc3RyaW5nLCBwYWdpbmc6IGFueSkge1xuICAgICAgICBjb25zdCBjb250cm9sbGVyRG9tYWluID0gdGhpcy5zZXR0aW5nc1NlcnZpY2U/LnNldHRpbmdzPy5zZWxlY3RlZEVkZ2VDb250cm9sbGVyIHx8ICcnO1xuICAgICAgICBjb25zdCBzZXJ2aWNlVXJsID0gYCR7Y29udHJvbGxlckRvbWFpbn0vZWRnZS9tYW5hZ2VtZW50L3YxYDtcbiAgICAgICAgbGV0IHVybEZpbHRlciA9IFwiXCI7XG4gICAgICAgIGxldCB0b1NlYXJjaE9uID0gXCJuYW1lXCI7XG4gICAgICAgIGxldCBub1NlYXJjaCA9IGZhbHNlO1xuICAgICAgICBpZiAocGFnaW5nICYmIHBhZ2luZy5zb3J0ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGlmIChwYWdpbmcuc2VhcmNoT24pIHRvU2VhcmNoT24gPSBwYWdpbmcuc2VhcmNoT247XG4gICAgICAgICAgICBpZiAocGFnaW5nLm5vU2VhcmNoKSBub1NlYXJjaCA9IHRydWU7XG4gICAgICAgICAgICBpZiAoIXBhZ2luZy5maWx0ZXIpIHBhZ2luZy5maWx0ZXIgPSBcIlwiO1xuICAgICAgICAgICAgcGFnaW5nLmZpbHRlciA9IHBhZ2luZy5maWx0ZXIuc3BsaXQoJyMnKS5qb2luKCcnKTtcbiAgICAgICAgICAgIGlmIChub1NlYXJjaCkge1xuICAgICAgICAgICAgICAgIGlmIChwYWdpbmcucGFnZSAhPT0gLTEpIHVybEZpbHRlciA9IFwiP2xpbWl0PVwiICsgcGFnaW5nLnRvdGFsICsgXCImb2Zmc2V0PVwiICsgKChwYWdpbmcucGFnZSAtIDEpICogcGFnaW5nLnRvdGFsKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHBhZ2luZy5wYWdlICE9PSAtMSkgdXJsRmlsdGVyID0gXCI/ZmlsdGVyPShcIiArIHRvU2VhcmNoT24gKyBcIiBjb250YWlucyBcXFwiXCIgKyBwYWdpbmcuZmlsdGVyICsgXCJcXFwiKSZsaW1pdD1cIiArIHBhZ2luZy50b3RhbCArIFwiJm9mZnNldD1cIiArICgocGFnaW5nLnBhZ2UgLSAxKSAqIHBhZ2luZy50b3RhbCkgKyBcIiZzb3J0PVwiICsgcGFnaW5nLnNvcnQgKyBcIiBcIiArIHBhZ2luZy5vcmRlcjtcbiAgICAgICAgICAgICAgICBpZiAocGFnaW5nLnBhcmFtcykge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBwYWdpbmcucGFyYW1zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cmxGaWx0ZXIgKz0gKCh1cmxGaWx0ZXIubGVuZ3RoID09PSAwKSA/IFwiP1wiIDogXCImXCIpICsga2V5ICsgXCI9XCIgKyBwYWdpbmcucGFyYW1zW2tleV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY2FsbFppdGlFZGdlKHNlcnZpY2VVcmwgKyBcIi9cIiArIHR5cGUgKyB1cmxGaWx0ZXIsIHt9KTtcbiAgICB9XG5cbiAgICBnZXRaaXRpRW50aXR5KHBhcmFtczogYW55KSB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2xsZXJEb21haW4gPSB0aGlzLnNldHRpbmdzU2VydmljZT8uc2V0dGluZ3M/LnNlbGVjdGVkRWRnZUNvbnRyb2xsZXIgfHwgJyc7XG4gICAgICAgIGNvbnN0IHNlcnZpY2VVcmwgPSBgJHtjb250cm9sbGVyRG9tYWlufS9lZGdlL21hbmFnZW1lbnQvdjFgO1xuICAgICAgICBjb25zdCB1cmwgPSBwYXJhbXMudXJsLnNwbGl0KFwiLi9cIikuam9pbihcIlwiKTtcbiAgICAgICAgY29uc3QgaWQgPSBwYXJhbXMuaWQ7XG4gICAgICAgIGNvbnN0IHR5cGUgPSBwYXJhbXMudHlwZTtcbiAgICAgICAgY29uc3QgcGFyZW50VHlwZSA9IHBhcmFtcy5uYW1lO1xuICAgICAgICByZXR1cm4gdGhpcy5jYWxsWml0aUVkZ2Uoc2VydmljZVVybCArIFwiL1wiICsgdXJsLCB7fSwgJ0dFVCcpLnRoZW4oKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICAgICAgICBwYXJlbnQ6IHBhcmVudFR5cGUsXG4gICAgICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgICAgICBkYXRhOiByZXN1bHQuZGF0YVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBkZWxldGVaaXRpRW50aXRpZXMocGFyYW1zLCByZXR1cm5Ubykge1xuICAgICAgICBjb25zdCBjb250cm9sbGVyRG9tYWluID0gdGhpcy5zZXR0aW5nc1NlcnZpY2U/LnNldHRpbmdzPy5zZWxlY3RlZEVkZ2VDb250cm9sbGVyIHx8ICcnO1xuICAgICAgICBjb25zdCBzZXJ2aWNlVXJsID0gYCR7Y29udHJvbGxlckRvbWFpbn0vZWRnZS9tYW5hZ2VtZW50L3YxYDtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSBbXTtcbiAgICAgICAgcGFyYW1zLmlkcy5mb3JFYWNoKChpZCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdHlwZSA9IHBhcmFtcy50eXBlO1xuICAgICAgICAgICAgY29uc3QgcGFyZW50VHlwZSA9IHBhcmFtcy5uYW1lO1xuICAgICAgICAgICAgcHJvbWlzZXMucHVzaCh0aGlzLmNhbGxaaXRpRWRnZShzZXJ2aWNlVXJsICsgXCIvXCIgKyB0eXBlICsgXCIvXCIgKyBpZC50cmltKCkgKyBcIi9cIiwge30sICdERUxFVEUnKS50aGVuKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBwYXJlbnRUeXBlLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgICAgICAgICAgICBkYXRhOiByZXN1bHQuZGF0YVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLmFsbChwcm9taXNlcykudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmdldFppdGlFbnRpdGllcyhwYXJhbXMudHlwZSwgcGFyYW1zLnBhZ2luZykudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuVG8ocmVzdWx0KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzYXZlWml0aUVudGl0eShwYXJhbXM6IGFueSwgcmV0dXJuVG86IGFueSkge1xuICAgICAgICBjb25zdCBjb250cm9sbGVyRG9tYWluID0gdGhpcy5zZXR0aW5nc1NlcnZpY2U/LnNldHRpbmdzPy5zZWxlY3RlZEVkZ2VDb250cm9sbGVyIHx8ICcnO1xuICAgICAgICBjb25zdCBzZXJ2aWNlVXJsID0gYCR7Y29udHJvbGxlckRvbWFpbn0vZWRnZS9tYW5hZ2VtZW50L3YxYDtcbiAgICAgICAgY29uc3Qgc2F2ZVBhcmFtcyA9IHBhcmFtcy5zYXZlO1xuICAgICAgICBjb25zdCBhZGRpdGlvbmFsID0gcGFyYW1zLmFkZGl0aW9uYWw7XG4gICAgICAgIGNvbnN0IHJlbW92YWwgPSBwYXJhbXMucmVtb3ZhbDtcbiAgICAgICAgY29uc3QgdHlwZSA9IHBhcmFtcy50eXBlO1xuICAgICAgICBjb25zdCBwYWdpbmcgPSBwYXJhbXMucGFnaW5nO1xuICAgICAgICBsZXQgbWV0aG9kID0gXCJQT1NUXCI7XG4gICAgICAgIGxldCBpZCA9IHBhcmFtcy5pZDtcbiAgICAgICAgbGV0IHVybCA9IHNlcnZpY2VVcmwgKyBcIi9cIiArIHR5cGU7XG4gICAgICAgIGxldCBjaGFpbmVkID0gZmFsc2U7XG4gICAgICAgIGlmIChwYXJhbXMuY2hhaW5lZCkgY2hhaW5lZCA9IHBhcmFtcy5jaGFpbmVkO1xuICAgICAgICBpZiAoaWQgJiYgaWQudHJpbSgpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIG1ldGhvZCA9IFwiUEFUQ0hcIjtcbiAgICAgICAgICAgIHVybCArPSBcIi9cIiArIGlkLnRyaW0oKTtcbiAgICAgICAgICAgIGlmIChyZW1vdmFsKSB7XG4gICAgICAgICAgICAgICAgbGV0IG9iamVjdHMgPSBPYmplY3QuZW50cmllcyhyZW1vdmFsKTtcbiAgICAgICAgICAgICAgICBpZiAob2JqZWN0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb2JqZWN0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyYW1ldGVyczogYW55ID0ge307XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLmlkcyA9IG9iamVjdHNbaV1bMV07XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jYWxsWml0aUVkZ2Uoc2VydmljZVVybCArIFwiL1wiICsgdHlwZSArIFwiL1wiICsgaWQudHJpbSgpICsgXCIvXCIgKyBvYmplY3RzW2ldWzBdLCBwYXJhbWV0ZXJzLCAnREVMRVRFJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc2F2ZVBhcmFtcy5kYXRhID0gdGhpcy52YWxpZGF0aW9uU2VydmljZS5yZWRlZmluZU9iamVjdChzYXZlUGFyYW1zLmRhdGEpO1xuICAgICAgICBmb3IgKGNvbnN0IHByb3AgaW4gc2F2ZVBhcmFtcy5kYXRhKSB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzYXZlUGFyYW1zLmRhdGFbcHJvcF0pICYmIHNhdmVQYXJhbXMuZGF0YVtwcm9wXS5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBzYXZlUGFyYW1zLmRhdGFbcHJvcF07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJOb3QgQXJyYXk6IFwiK3Byb3ArXCIgXCIrc2F2ZVBhcmFtcy5kYXRhW3Byb3BdLmxlbmd0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5jYWxsWml0aUVkZ2UodXJsLCBzYXZlUGFyYW1zLCBtZXRob2QpLnRoZW4oKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzdWx0Py5lcnJvcikge1xuICAgICAgICAgICAgICAgIHJldHVyblRvKHRoaXMuaGFuZGxlRXJyb3IocmVzdWx0LmVycm9yKSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdD8uZGF0YSkge1xuICAgICAgICAgICAgICAgIGlmIChhZGRpdGlvbmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBvYmplY3RzID0gT2JqZWN0LmVudHJpZXMoYWRkaXRpb25hbCk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvYmplY3RzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZXRob2QgPT09IFwiUE9TVFwiKSBpZCA9IHJlc3VsdD8uZGF0YT8uaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9iamVjdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbGxaaXRpRWRnZShzZXJ2aWNlVXJsICsgXCIvXCIgKyB0eXBlICsgXCIvXCIgKyBpZCArIFwiL1wiICsgb2JqZWN0c1tpXVswXSwge2lkczogb2JqZWN0c1tpXVsxXX0sICdQVVQnKS50aGVuKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCsrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT09IG9iamVjdHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hhaW5lZCkgcmV0dXJuVG8ocmVzLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB0aGlzLmdldFppdGlFbnRpdGllcyh0eXBlLCBwYWdpbmcpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblRvKHJlc3VsdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hhaW5lZCkgcmV0dXJuVG8ocmVzdWx0LmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB0aGlzLmdldFppdGlFbnRpdGllcyh0eXBlLCBwYWdpbmcpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblRvKHJlc3VsdClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoYWluZWQpIHJldHVyblRvKHJlc3VsdC5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB0aGlzLmdldFppdGlFbnRpdGllcyh0eXBlLCBwYWdpbmcpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuVG8ocmVzdWx0KVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgcmV0dXJuVG8oe2Vycm9yOiBcIlVuYWJsZSB0byBzYXZlIGRhdGFcIn0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZWRlZmluZU9iamVjdChvYmopIHtcbiAgICAgICAgZm9yIChsZXQgcHJvcCBpbiBvYmopIHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9ialtwcm9wXSkgJiYgb2JqW3Byb3BdLmxlbmd0aD09MCkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBvYmpbcHJvcF07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb2JqW3Byb3BdID09PSBcInN0cmluZ1wiICYmIG9ialtwcm9wXS50cmltKCkubGVuZ3RoPT0wKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBvYmpbcHJvcF07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvYmpbcHJvcF0gPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ialtwcm9wXSA9IHRoaXMucmVkZWZpbmVPYmplY3Qob2JqW3Byb3BdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhvYmpbcHJvcF0pLmxlbmd0aD09MCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBvYmpbcHJvcF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICB9XG5cbiAgICBzYXZlWml0aVN1YkRhdGEocGFyYW1zOiBhbnksIHJldHVyblRvOiBhbnkpIHtcbiAgICAgICAgY29uc3QgY29udHJvbGxlckRvbWFpbiA9IHRoaXMuc2V0dGluZ3NTZXJ2aWNlPy5zZXR0aW5ncz8uc2VsZWN0ZWRFZGdlQ29udHJvbGxlciB8fCAnJztcbiAgICAgICAgY29uc3Qgc2VydmljZVVybCA9IGAke2NvbnRyb2xsZXJEb21haW59L2VkZ2UvbWFuYWdlbWVudC92MWA7XG5cbiAgICAgICAgY29uc3QgaWQgPSBwYXJhbXMuaWQ7XG4gICAgICAgIGNvbnN0IHR5cGUgPSBwYXJhbXMudHlwZTtcbiAgICAgICAgY29uc3QgZG9pbmcgPSBwYXJhbXMuZG9pbmcgfHwgJ1BPU1QnO1xuICAgICAgICBjb25zdCBwYXJlbnRUeXBlID0gcGFyYW1zLnBhcmVudFR5cGU7XG4gICAgICAgIGNvbnN0IGZ1bGxUeXBlID0gcGFyZW50VHlwZStcIi9cIitpZCtcIi9cIit0eXBlO1xuICAgICAgICBjb25zdCB1cmwgPSBzZXJ2aWNlVXJsK1wiL1wiK2Z1bGxUeXBlO1xuICAgICAgICBjb25zdCBzYXZlUGFyYW1zID0gcGFyYW1zLnNhdmU7XG5cbiAgICAgICAgdGhpcy5jYWxsWml0aUVkZ2UodXJsLCBzYXZlUGFyYW1zLCBkb2luZykudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmdldFppdGlFbnRpdGllcyhmdWxsVHlwZSwgcGFyYW1zLnBhZ2luZykudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVyblRvKGRhdGEpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNhbGxaaXRpRWRnZSh1cmw6IHN0cmluZywgYm9keTogYW55LCBtZXRob2Q6IHN0cmluZyA9ICdHRVQnKSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmdldEh0dHBPcHRpb25zKCk7XG4gICAgICAgIGxldCBwcm9tO1xuICAgICAgICBzd2l0Y2ggKG1ldGhvZCkge1xuICAgICAgICAgICAgY2FzZSAnR0VUJzpcbiAgICAgICAgICAgICAgICBwcm9tID0gdGhpcy5odHRwLmdldCh1cmwsIG9wdGlvbnMpLnRvUHJvbWlzZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnUE9TVCc6XG4gICAgICAgICAgICAgICAgcHJvbSA9IHRoaXMuaHR0cC5wb3N0KHVybCwgYm9keSwgb3B0aW9ucykudG9Qcm9taXNlKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdQVVQnOlxuICAgICAgICAgICAgICAgIHByb20gPSB0aGlzLmh0dHAucHV0KHVybCwgYm9keSwgb3B0aW9ucykudG9Qcm9taXNlKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdQQVRDSCc6XG4gICAgICAgICAgICAgICAgcHJvbSA9IHRoaXMuaHR0cC5wYXRjaCh1cmwsIGJvZHksIG9wdGlvbnMpLnRvUHJvbWlzZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnREVMRVRFJzpcbiAgICAgICAgICAgICAgICBwcm9tID0gdGhpcy5odHRwLmRlbGV0ZSh1cmwsIG9wdGlvbnMpLnRvUHJvbWlzZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBwcm9tID0gdGhpcy5odHRwLmdldCh1cmwsIG9wdGlvbnMpLnRvUHJvbWlzZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwcm9tLmNhdGNoKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXN1bHQ/LmVycm9yPy5lcnJvcj8uY29kZSA9PT0gJ1VOQVVUSE9SSVpFRCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnppdGlEb21haW5Db250cm9sbGVyLmhhbmRsZVVuYXV0aG9yaXplZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdD8uZXJyb3I7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIGluaXRaQUNCdXR0b25MaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMubW9kYWxDbG9zZSAmJiB0aGlzLm1vZGFsU2hvdykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubW9kYWxTaG93ID0gbW9kYWwuc2hvdztcbiAgICAgICAgdGhpcy5tb2RhbENsb3NlID0gbW9kYWwuY2xvc2U7XG4gICAgICAgIGlmICghdGhpcy5tb2RhbFNob3cgfHwgIXRoaXMubW9kYWxDbG9zZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1vZGFsSWRzID0gWydEZXRhaWxNb2RhbCcsICdBZGRNZXNzYWdlTW9kYWwnLCAnUVJNb2RhbCcsICdSZXNldE1vZGFsJywgJ092ZXJyaWRlTW9kYWwnLCAnQWRkTW9kYWwnXTtcbiAgICAgICAgbW9kYWwuc2hvdyA9IChpZCwgcmVhZE9ubHkpID0+IHtcbiAgICAgICAgICAgIHRoaXMubW9kYWxTaG93KGlkLCByZWFkT25seSk7XG4gICAgICAgICAgICBpZiAobW9kYWxJZHMuaW5jbHVkZXMoaWQpKSB7XG4gICAgICAgICAgICAgICAgJCgnYm9keScpLmFkZENsYXNzKCd1cGRhdGVNb2RhbE9wZW4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgbW9kYWwuY2xvc2UgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMubW9kYWxDbG9zZShldmVudCk7XG4gICAgICAgICAgICAkKCdib2R5JykucmVtb3ZlQ2xhc3MoJ3VwZGF0ZU1vZGFsT3BlbicpO1xuICAgICAgICB9O1xuICAgICAgICBpZiAoIXRoaXMuc2V0dGluZ3NTZXJ2aWNlPy5zdXBwb3J0ZWRGZWF0dXJlcz8ucmVjaXBlcykge1xuICAgICAgICAgICAgJCgnLnRhYltkYXRhLWdvPVwiL3JlY2lwZXNcIl0nKS5oaWRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRIdHRwT3B0aW9ucyh1c2VaaXRpQ3JlZHMgPSBmYWxzZSkge1xuICAgICAgICBjb25zdCBvcHRpb25zOiBhbnkgPSB7XG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgYWNjZXB0OiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFyYW1zOiB7fSxcbiAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nIGFzIGNvbnN0LFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gb3B0aW9ucztcbiAgICB9XG5cbiAgICBoYW5kbGVFcnJvcihyZXN1bHQ6IGFueSkge1xuICAgICAgICB0aGlzLmxvZ2dlclNlcnZpY2UuZXJyb3IocmVzdWx0KTtcbiAgICAgICAgY29uc3QgZXJyb3IgPSByZXN1bHQuZXJyb3IgPyByZXN1bHQuZXJyb3IgOiByZXN1bHQ7XG4gICAgICAgIGxldCBtZXNzYWdlID0gJyc7XG4gICAgICAgIGlmIChlcnJvci5jYXVzZSYmZXJyb3IuY2F1c2VNZXNzYWdlJiZlcnJvci5jYXVzZU1lc3NhZ2UubGVuZ3RoPjApIG1lc3NhZ2UgPSBlcnJvci5jYXVzZU1lc3NhZ2U7XG4gICAgICAgIGVsc2UgaWYgKGVycm9yLmNhdXNlJiZlcnJvci5jYXVzZS5tZXNzYWdlJiZlcnJvci5jYXVzZS5tZXNzYWdlLmxlbmd0aD4wKSBtZXNzYWdlID0gZXJyb3IuY2F1c2UubWVzc2FnZTtcbiAgICAgICAgZWxzZSBpZiAoZXJyb3IuY2F1c2UmJmVycm9yLmNhdXNlLnJlYXNvbiYmZXJyb3IuY2F1c2UucmVhc29uLmxlbmd0aD4wKSBtZXNzYWdlID0gZXJyb3IuY2F1c2UucmVhc29uO1xuICAgICAgICBlbHNlIGlmIChlcnJvci5tZXNzYWdlJiZlcnJvci5tZXNzYWdlLmxlbmd0aD4wKSBtZXNzYWdlID0gZXJyb3IubWVzc2FnZTtcbiAgICAgICAgZWxzZSBtZXNzYWdlID0gZXJyb3I7XG4gICAgICAgIHJldHVybiB7ZXJyb3I6IG1lc3NhZ2UsIGRhdGE6IFtdfTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -3,7 +3,8 @@ export class Config {
|
|
|
3
3
|
this.name = '';
|
|
4
4
|
this.data = {};
|
|
5
5
|
this.configTypeId = '';
|
|
6
|
+
this.tags = {};
|
|
6
7
|
}
|
|
7
8
|
}
|
|
8
9
|
;
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL21vZGVscy9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLE1BQU07SUFBbkI7UUFDSSxTQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1YsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUNWLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLFNBQUksR0FBUSxFQUFFLENBQUM7SUFDbkIsQ0FBQztDQUFBO0FBQUEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBDb25maWcge1xuICAgIG5hbWUgPSAnJztcbiAgICBkYXRhID0ge307XG4gICAgY29uZmlnVHlwZUlkID0gJyc7XG4gICAgdGFnczogYW55ID0ge307XG59OyJdfQ==
|