@openziti/ziti-console-lib 0.12.8 → 0.12.9
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/components/tabIdentities.html +0 -1
- package/assets/components/tabServices.html +1 -0
- package/assets/fonts/icomoon.eot +0 -0
- package/assets/fonts/icomoon.svg +3 -0
- package/assets/fonts/icomoon.ttf +0 -0
- package/assets/fonts/icomoon.woff +0 -0
- package/assets/fonts/icomoon.woff2 +0 -0
- package/assets/styles/global.scss +101 -0
- package/assets/styles/icons.css +4 -1
- package/esm2022/lib/features/card-list/card-list.component.mjs +6 -3
- package/esm2022/lib/features/creation-summary-dialog/creation-summary-dialog.component.mjs +5 -3
- package/esm2022/lib/features/custom-tags/custom-tags.component.mjs +56 -24
- package/esm2022/lib/features/multi-action-button/multi-action-button.component.mjs +3 -3
- package/esm2022/lib/features/projectable-forms/api-session/api-session-form.component.mjs +1 -1
- package/esm2022/lib/features/projectable-forms/auth-policy/auth-policy-form.component.mjs +1 -1
- package/esm2022/lib/features/projectable-forms/certificate-authority/certificate-authority-form.component.mjs +1 -1
- package/esm2022/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.component.mjs +1 -1
- package/esm2022/lib/features/projectable-forms/config-type/config-type-form.component.mjs +1 -1
- package/esm2022/lib/features/projectable-forms/configuration/configuration-form.component.mjs +1 -1
- package/esm2022/lib/features/projectable-forms/edge-router/edge-router-form.component.mjs +1 -1
- package/esm2022/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.mjs +1 -1
- package/esm2022/lib/features/projectable-forms/form-header/form-header.component.mjs +25 -4
- package/esm2022/lib/features/projectable-forms/identity/identity-form.component.mjs +106 -21
- package/esm2022/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.mjs +1 -1
- package/esm2022/lib/features/projectable-forms/posture-check/posture-check-form.component.mjs +1 -1
- package/esm2022/lib/features/projectable-forms/projectable-form.class.mjs +4 -1
- package/esm2022/lib/features/projectable-forms/service/service-form.component.mjs +17 -4
- package/esm2022/lib/features/projectable-forms/service/service-form.service.mjs +1 -1
- package/esm2022/lib/features/projectable-forms/service/simple-service/simple-service.component.mjs +310 -112
- package/esm2022/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.mjs +1 -1
- package/esm2022/lib/features/projectable-forms/service-policy/service-policy-form.component.mjs +1 -1
- package/esm2022/lib/features/projectable-forms/session/session-form.component.mjs +1 -1
- package/esm2022/lib/features/projectable-forms/terminator/terminator-form.component.mjs +1 -1
- package/esm2022/lib/features/projectable-forms/transit-router/transit-router-form.component.mjs +1 -1
- package/esm2022/lib/features/reset-enrollment/reset-enrollment.component.mjs +3 -3
- package/esm2022/lib/urls.mjs +34 -0
- package/esm2022/lib/version.mjs +2 -2
- package/fesm2022/openziti-ziti-console-lib.mjs +567 -186
- package/fesm2022/openziti-ziti-console-lib.mjs.map +1 -1
- package/lib/features/card-list/card-list.component.d.ts +1 -0
- package/lib/features/card-list/card-list.component.d.ts.map +1 -1
- package/lib/features/creation-summary-dialog/creation-summary-dialog.component.d.ts +1 -0
- package/lib/features/creation-summary-dialog/creation-summary-dialog.component.d.ts.map +1 -1
- package/lib/features/custom-tags/custom-tags.component.d.ts +19 -3
- package/lib/features/custom-tags/custom-tags.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/form-header/form-header.component.d.ts +14 -3
- package/lib/features/projectable-forms/form-header/form-header.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/identity/identity-form.component.d.ts +14 -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 +1 -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 +1 -0
- 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.map +1 -1
- package/lib/features/projectable-forms/service/simple-service/simple-service.component.d.ts +29 -6
- package/lib/features/projectable-forms/service/simple-service/simple-service.component.d.ts.map +1 -1
- package/lib/urls.d.ts +34 -0
- package/lib/urls.d.ts.map +1 -0
- package/package.json +1 -1
|
@@ -101,6 +101,9 @@ class ProjectableForm extends ExtendableComponent {
|
|
|
101
101
|
}));
|
|
102
102
|
this.initBaseHref();
|
|
103
103
|
}
|
|
104
|
+
get isEdit() {
|
|
105
|
+
return !isEmpty(this.formData.id);
|
|
106
|
+
}
|
|
104
107
|
ngAfterViewInit(skipFocus = false) {
|
|
105
108
|
super.ngAfterViewInit();
|
|
106
109
|
this.errors = {};
|
|
@@ -347,4 +350,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
347
350
|
type: ViewChild,
|
|
348
351
|
args: ['scrollContainer']
|
|
349
352
|
}] } });
|
|
350
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdGFibGUtZm9ybS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9wcm9qZWN0YWJsZS1mb3Jtcy9wcm9qZWN0YWJsZS1mb3JtLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFO0FBRUYsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUNILFNBQVMsRUFHVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQXFCLE1BQU0sUUFBUSxDQUFDO0FBQ2xJLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUV4RCxPQUFPLEVBQW1CLGlCQUFpQixFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFFMUYsT0FBTyxFQUFDLGlCQUFpQixFQUFrQixNQUFNLGtDQUFrQyxDQUFDO0FBQ3BGLE9BQU8sRUFBaUIsYUFBYSxFQUFTLE1BQU0saUJBQWlCLENBQUM7QUFDdEUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVsQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQWtCLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7QUFFbEYsYUFBYTtBQUNiLE1BQU0sRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFDLEdBQUcsTUFBTSxDQUFDO0FBRXhELE1BQU0sT0FBTyxNQUFNO0NBRWxCO0FBRUQsTUFBTSxDQUFD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QWUsZ0RBdUNyQixpQkFBaUIsYUFDakIsaUJBQWlCLHlGQUlqQixnQkFBZ0I7bUdBNUNWLGVBQWUscWFBSHZCLEVBQUU7O1NBR00sZUFBZTs0RkFBZixlQUFlO2tCQUpwQyxTQUFTOytCQUNJLEVBQUU7OzBCQTBDUCxNQUFNOzJCQUFDLGlCQUFpQjs7MEJBQ3hCLE1BQU07MkJBQUMsaUJBQWlCOzswQkFJeEIsTUFBTTsyQkFBQyxnQkFBZ0I7NENBM0NuQixPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDWSxRQUFRO3NCQUF6QixLQUFLO2dCQUNhLEtBQUs7c0JBQXZCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDc0IsY0FBYztzQkFBMUMsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBQ0csZUFBZTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICAgIENvcHlyaWdodCBOZXRGb3VuZHJ5IEluYy5cblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG5pbXBvcnQge0V4dGVuZGFibGVDb21wb25lbnR9IGZyb20gXCIuLi9leHRlbmRhYmxlL2V4dGVuZGFibGUuY29tcG9uZW50XCI7XG5pbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBEb0NoZWNrLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuaW1wb3J0IHtkZWZlciwgaXNFcXVhbCwgdW5zZXQsIGRlYm91bmNlLCBjbG9uZURlZXAsIGZvckVhY2gsIGlzQXJyYXksIGlzRW1wdHksIGlzT2JqZWN0LCBpc05pbCwgbWFwLCBvbWl0QnksIHNsaWNlfSBmcm9tIFwibG9kYXNoXCI7XG5pbXBvcnQge0dyb3dsZXJNb2RlbH0gZnJvbSBcIi4uL21lc3NhZ2luZy9ncm93bGVyLm1vZGVsXCI7XG5pbXBvcnQge0dyb3dsZXJTZXJ2aWNlfSBmcm9tIFwiLi4vbWVzc2FnaW5nL2dyb3dsZXIuc2VydmljZVwiO1xuaW1wb3J0IHtFeHRlbnNpb25TZXJ2aWNlLCBTSEFSRURaX0VYVEVOU0lPTn0gZnJvbSBcIi4uL2V4dGVuZGFibGUvZXh0ZW5zaW9ucy1ub29wLnNlcnZpY2VcIjtcbmltcG9ydCB7SWRlbnRpdHl9IGZyb20gXCIuLi8uLi9tb2RlbHMvaWRlbnRpdHlcIjtcbmltcG9ydCB7WklUSV9EQVRBX1NFUlZJQ0UsIFppdGlEYXRhU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3ppdGktZGF0YS5zZXJ2aWNlXCI7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXJ9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtMb2NhdGlvbn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHtTRVRUSU5HU19TRVJWSUNFLCBTZXR0aW5nc1NlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9zZXR0aW5ncy5zZXJ2aWNlXCI7XG5cbi8vIEB0cy1pZ25vcmVcbmNvbnN0IHtjb250ZXh0LCB0YWdzLCByZXNvdXJjZXMsIHNlcnZpY2UsIGFwcH0gPSB3aW5kb3c7XG5cbmV4cG9ydCBjbGFzcyBFbnRpdHkge1xuICAgIG5hbWU6ICcnXG59XG5cbmV4cG9ydCBjb25zdCBLRVlfQ09ERVMgPSB7XG4gICAgTEVGVF9BUlJPVzogMzcsXG4gICAgVVBfQVJST1c6IDM4LFxuICAgIFJJR0hUX0FSUk9XOiAzOSxcbiAgICBET1dOX0FSUk9XOiA0MFxufTtcblxuQENvbXBvbmVudCh7XG4gICAgdGVtcGxhdGU6ICcnLFxuICAgIHN0eWxlVXJsczogWycuL3Byb2plY3RhYmxlLWZvcm0uY2xhc3Muc2NzcyddXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFByb2plY3RhYmxlRm9ybSBleHRlbmRzIEV4dGVuZGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBEb0NoZWNrLCBPbkluaXQge1xuICAgIEBJbnB1dCgpIGlzTW9kYWwgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBlbnRpdHlJZDogU3RyaW5nO1xuICAgIEBJbnB1dCgpIGFic3RyYWN0IGZvcm1EYXRhOiBhbnk7XG4gICAgQE91dHB1dCgpIGFic3RyYWN0IGNsb3NlOiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgICBAT3V0cHV0KCkgZGF0YUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAVmlld0NoaWxkKCduYW1lRmllbGRJbnB1dCcpIG5hbWVGaWVsZElucHV0OiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoJ3Njcm9sbENvbnRhaW5lcicpIHNjcm9sbENvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICAgIGFic3RyYWN0IGNsZWFyKCk6IHZvaWQ7XG4gICAgYWJzdHJhY3Qgc2F2ZSgpOiB2b2lkO1xuXG4gICAgcHVibGljIGVycm9yczogYW55ID0ge307XG4gICAgcHJvdGVjdGVkIGVudGl0eVR5cGUgPSAnaWRlbnRpdGllcyc7XG4gICAgcHJvdGVjdGVkIGVudGl0eUNsYXNzOiBhbnkgPSBFbnRpdHk7XG4gICAgcHJvdGVjdGVkIGlzTG9hZGluZyA9IGZhbHNlO1xuICAgIHByb3RlY3RlZCB1c2VQcmV2aW91c0xvY2F0aW9uID0gdHJ1ZTtcbiAgICBtb3JlQWN0aW9uczogYW55W10gPSBbXTtcbiAgICB0YWdFbGVtZW50czogYW55ID0gW107XG4gICAgdGFnRGF0YTogYW55ID0gW107XG4gICAgaGlkZVRhZ3MgPSBmYWxzZTtcbiAgICBpbml0RGF0YTogYW55ID0ge307XG4gICAgX2RhdGFDaGFuZ2UgPSBmYWxzZTtcbiAgICBhcGlPcHRpb25zID0gW3tpZDogJ2NsaScsIGxhYmVsOiAnQ29weSBhcyBDTEknfSwge2lkOiAnY3VybCcsIGxhYmVsOiAnQ29weSBhcyBDVVJMJ31dO1xuICAgIGJhc2VQYXRoID0gJyc7XG4gICAgYmFzZUhyZWY7XG4gICAgcHJldmlvdXNSb3V0ZTtcbiAgICBzaG93TW9yZSA9IGZhbHNlO1xuXG4gICAgX3NldHRpbmdzOiBhbnkgPSB7fTtcbiAgICBjaGVja0RhdGFDaGFuZ2VEZWJvdW5jZWQgPSBkZWJvdW5jZSh0aGlzLmNoZWNrRGF0YUNoYW5nZSwgMTAwLCB7bWF4V2FpdDogMTAwfSk7XG4gICAgaWdub3JlRGF0YUNoYW5nZSA9IGZhbHNlO1xuXG4gICAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICBmb3JtSW5pdCA9IGZhbHNlO1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgZ3Jvd2xlclNlcnZpY2U6IEdyb3dsZXJTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KFNIQVJFRFpfRVhURU5TSU9OKSBwcm90ZWN0ZWQgZXh0U2VydmljZTogRXh0ZW5zaW9uU2VydmljZSxcbiAgICAgICAgQEluamVjdChaSVRJX0RBVEFfU0VSVklDRSkgcHJvdGVjdGVkIHppdGlTZXJ2aWNlOiBaaXRpRGF0YVNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCByb3V0ZXI/OiBSb3V0ZXIsXG4gICAgICAgIHByb3RlY3RlZCByb3V0ZT86IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwcm90ZWN0ZWQgbG9jYXRpb24/OiBMb2NhdGlvbixcbiAgICAgICAgQEluamVjdChTRVRUSU5HU19TRVJWSUNFKSBwcm90ZWN0ZWQgc2V0dGluZ3NTZXJ2aWNlPzogU2V0dGluZ3NTZXJ2aWNlLFxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnByZXZpb3VzUm91dGUgPSB0aGlzLnJvdXRlci5nZXRDdXJyZW50TmF2aWdhdGlvbigpLnByZXZpb3VzTmF2aWdhdGlvbj8uZmluYWxVcmw/LnRvU3RyaW5nKCk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgIHRoaXMucm91dGU/LnBhcmFtcz8uc3Vic2NyaWJlKHBhcmFtcyA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaWQgPSBwYXJhbXNbJ2lkJ107XG4gICAgICAgICAgICAgICAgaWYgKCFpc0VtcHR5KGlkKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVudGl0eUlkID0gaWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICAgICAgcm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZXZlbnQ/LnNuYXBzaG90Py5yb3V0ZUNvbmZpZz8ucGF0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhdGhTZWdtZW50cyA9IGV2ZW50LnNuYXBzaG90LnJvdXRlQ29uZmlnLnBhdGguc3BsaXQoJy8nKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iYXNlUGF0aCA9IHBhdGhTZWdtZW50c1swXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzU2VydmljZS5zZXR0aW5nc0NoYW5nZT8uc3Vic2NyaWJlKHBhcmFtcyA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3U2V0dGluZ3MgPSBjbG9uZURlZXAodGhpcy5zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3MpO1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgIWlzRW1wdHkodGhpcy5mb3JtRGF0YT8uaWQpICYmIChpc0VtcHR5KHRoaXMuX3NldHRpbmdzKSB8fFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZXR0aW5ncy5zZXNzaW9uPy5pZCA9PT0gbmV3U2V0dGluZ3Muc2Vzc2lvbj8uaWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRW1wdHkobmV3U2V0dGluZ3Muc2Vzc2lvbj8uaWQpKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZXR0aW5ncyA9IG5ld1NldHRpbmdzO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuX3NldHRpbmdzID0gbmV3U2V0dGluZ3M7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmZvcm1Jbml0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5uZ09uSW5pdCgpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5pbml0QmFzZUhyZWYoKTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBuZ0FmdGVyVmlld0luaXQoc2tpcEZvY3VzID0gZmFsc2UpIHtcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgICAgIHRoaXMuZXJyb3JzID0ge307XG4gICAgICAgIGlmICghc2tpcEZvY3VzKSB7XG4gICAgICAgICAgICB0aGlzLm5hbWVGaWVsZElucHV0Py5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmV4dFNlcnZpY2U/Lm1vcmVBY3Rpb25zKSB7XG4gICAgICAgICAgICB0aGlzLm1vcmVBY3Rpb25zID0gWy4uLnRoaXMubW9yZUFjdGlvbnMsIC4uLnRoaXMuZXh0U2VydmljZS5tb3JlQWN0aW9uc107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZW50aXR5SWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmVudGl0eUlkID09PSAnY3JlYXRlJykge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybURhdGEgPSBuZXcgdGhpcy5lbnRpdHlDbGFzcygpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdERhdGEgPSBjbG9uZURlZXAodGhpcy5mb3JtRGF0YSk7XG4gICAgICAgICAgICAgICAgdGhpcy5lbnRpdHlVcGRhdGVkKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy56aXRpU2VydmljZS5nZXRTdWJkYXRhKHRoaXMuZW50aXR5VHlwZSwgdGhpcy5lbnRpdHlJZCwgJycpLnRoZW4oKGVudGl0eTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtRGF0YSA9IGVudGl0eT8uZGF0YTtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXREYXRhID0gY2xvbmVEZWVwKHRoaXMuZm9ybURhdGEpO1xuICAgICAgICAgICAgICAgIHRoaXMuZW50aXR5VXBkYXRlZCgpO1xuICAgICAgICAgICAgfSkuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZm9ybUluaXQgPSB0cnVlO1xuICAgIH1cblxuICAgIGluaXRCYXNlSHJlZigpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGJhc2UgPSBkb2N1bWVudD8ucXVlcnlTZWxlY3RvcignYmFzZScpO1xuICAgICAgICAgICAgdGhpcy5iYXNlSHJlZiA9IGJhc2UgPyBiYXNlLmdldEF0dHJpYnV0ZSgnaHJlZicpIDogJy8nO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgdGhpcy5iYXNlSHJlZiA9ICcvJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNob3dNb3JlQ2hhbmdlZChzaG93TW9yZSkge1xuICAgICAgICBpZiAoIXNob3dNb3JlIHx8IHRoaXMuaGlkZVRhZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlc2V0VGFncygpXG4gICAgfVxuXG4gICAgbG9hZFRhZ3MoKSB7XG4gICAgICAgIHRoaXMuaGlkZVRhZ3MgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImhpZGVUYWdzXCIpPT1cInllc1wiO1xuICAgICAgICBpZiAodGhpcy5oaWRlVGFncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNlcnZpY2UuY2FsbChcInRhZ3NcIiwge30sIHRoaXMudGFnc0xvYWRlZC5iaW5kKHRoaXMpKTtcbiAgICB9XG5cbiAgICB0YWdzTG9hZGVkKHJlc3VsdHMpIHtcbiAgICAgICAgdGFncy5kYXRhID0gcmVzdWx0cztcbiAgICAgICAgY29udGV4dC5zZXQodGFncy5uYW1lLCB0YWdzLmRhdGEpO1xuICAgICAgICB0YWdzLnRhZ0RhdGEgPSBbXTtcbiAgICAgICAgdGFncy5kYXRhLmZvckVhY2goKHRhZykgPT4ge1xuICAgICAgICAgICAgbGV0IGh0bWw7XG4gICAgICAgICAgICBpZiAodGFnLm9iamVjdHM9PVwiYWxsXCIgfHwgdGFnLm9iamVjdHMuaW5kZXhPZih0aGlzLmVudGl0eVR5cGUpPj0wKSB7XG4gICAgICAgICAgICAgICAgdGFncy50YWdEYXRhW3RhZ3MudGFnRGF0YS5sZW5ndGhdID0gdGFnO1xuICAgICAgICAgICAgICAgIGh0bWwgPSB0aGlzLmdldFRhZ0NvbnRlbnQodGFnKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0YWdFbCA9IHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRhZy5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogaHRtbFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnRhZ0VsZW1lbnRzLnB1c2godGFnRWwpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJlc2V0VGFncygpIHtcbiAgICAgICAgdW5zZXQodGFncywgJ21hcCcpO1xuICAgICAgICBpZiAodGhpcy5oaWRlVGFncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGRlZmVyKCgpID0+IHtcbiAgICAgICAgICAgIHRhZ3MucmVzZXQodGhpcy5mb3JtRGF0YSk7XG4gICAgICAgICAgICB0YWdzLmV2ZW50cygpO1xuICAgICAgICB9KVxuICAgIH1cblxuICAgIGdldFRhZ0NvbnRlbnQodGFnKSB7XG4gICAgICAgIGxldCBodG1sID0gJyc7XG4gICAgICAgIGlmICh0YWcudmFsdWU9PVwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIGh0bWwgKz0gJzxpbnB1dCBpZD1cIlRhZ18nK3RhZy5pZCsnXCIgdHlwZT1cInRleHRcIiBkYXRhLXRhZz1cIicrdGFnLmlkKydcIiBtYXhsZW5ndGg9XCI1MDBcIiBwbGFjZWhvbGRlcj1cIicrdGFnLmRlc2NyaXB0aW9uKydcIiAvPic7XG4gICAgICAgIH0gZWxzZSBpZiAodGFnLnZhbHVlPT1cImJvb2xlYW5cIikge1xuICAgICAgICAgICAgaHRtbCArPSAnPGlucHV0IGlkPVwiVGFnXycrdGFnLmlkKydcIiB0eXBlPVwiY2hlY2tib3hcIiBkYXRhLXRhZz1cIicrdGFnLmlkKydcIiAvPic7XG4gICAgICAgIH0gZWxzZSBpZiAodGFnLnZhbHVlPT1cIm1hcFwiKSB7XG4gICAgICAgICAgICBodG1sICs9ICc8ZGl2IGlkPVwiVGFnXycrdGFnLmlkKydfTWFwXCIgZGF0YS1tYXA9XCInK3RhZy5pZCsnXCIgY2xhc3M9XCJtYXBcIj48L2Rpdj4nO1xuICAgICAgICAgICAgaHRtbCArPSAnPGlucHV0IGlkPVwiVGFnXycrdGFnLmlkKydcIiB0eXBlPVwidGV4dFwiIGRhdGEtdGFnPVwiJyt0YWcuaWQrJ1wiIG1heGxlbmd0aD1cIjUwMFwiIHBsYWNlaG9sZGVyPVwiJyt0YWcuZGVzY3JpcHRpb24rJ1wiIC8+JztcbiAgICAgICAgfSBlbHNlIGlmICh0YWcudmFsdWU9PVwiYXZhdGFyXCIpIHtcbiAgICAgICAgICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9XCJmb3JtUm93XCI+JztcbiAgICAgICAgICAgIGh0bWwgKz0gJzxkaXYgaWQ9XCJUYWdfJyt0YWcuaWQrJ1wiIGRhdGEtaWQ9XCInK3RhZy5pZCsnXCIgZGF0YS1yZXNvdXJjZT1cImF2YXRhclwiIGNsYXNzPVwicmVzb3VyY2UgaWNvbiBwcm9maWxlXCIgdGl0bGU9XCInK3RhZy5kZXNjcmlwdGlvbisnXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyt0YWcuZGVmYXVsdCsnKVwiPjwvZGl2PjxkaXYgaWQ9XCJUYWdfUmVzb3VyY2VzXycrdGFnLmlkKydcIiBjbGFzcz1cInJlc291cmNlc1wiIGRhdGEtaWQ9XCInK3RhZy5pZCsnXCIgZGF0YS1yZXNvdXJjZXM9XCJhdmF0YXJcIj48L2Rpdj4nO1xuICAgICAgICAgICAgaHRtbCArPSAnPGlucHV0IGlkPVwiVGFnXycrdGFnLmlkKydfSGlkZXJcIiBkYXRhLXRhZz1cIicrdGFnLmlkKydcIiB0eXBlPVwiaGlkZGVuXCIvPic7XG4gICAgICAgICAgICByZXNvdXJjZXMuZ2V0KHRhZy5pZCk7XG4gICAgICAgICAgICBjb250ZXh0LmFkZExpc3RlbmVyKFwicmVzb3VyY2VzLVwiK3RhZy5pZCwgdGFncy5sb2FkZWQpO1xuICAgICAgICB9IGVsc2UgaWYgKHRhZy52YWx1ZT09XCJpY29uXCIpIHtcbiAgICAgICAgICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9XCJmb3JtUm93XCI+JztcbiAgICAgICAgICAgIGh0bWwgKz0gJzxkaXYgaWQ9XCJUYWdfJyt0YWcuaWQrJ1wiIGRhdGEtaWQ9XCInK3RhZy5pZCsnXCIgZGF0YS1yZXNvdXJjZT1cImljb25cIiBjbGFzcz1cInJlc291cmNlIGljb25cIiB0aXRsZT1cIicrdGFnLmRlc2NyaXB0aW9uKydcIiBzdHlsZT1cImJhY2tncm91bmQtaW1hZ2U6IHVybCgnK3RhZy5kZWZhdWx0KycpXCI+PC9kaXY+PGRpdiBpZD1cIlRhZ19SZXNvdXJjZXNfJyt0YWcuaWQrJ1wiIGNsYXNzPVwicmVzb3VyY2VzXCIgZGF0YS1pZD1cIicrdGFnLmlkKydcIiBkYXRhLXJlc291cmNlcz1cImljb25cIj48L2Rpdj4nO1xuICAgICAgICAgICAgaHRtbCArPSAnPGlucHV0IGlkPVwiVGFnXycrdGFnLmlkKydfSGlkZXJcIiBkYXRhLXRhZz1cIicrdGFnLmlkKydcIiB0eXBlPVwiaGlkZGVuXCIvPic7XG4gICAgICAgICAgICByZXNvdXJjZXMuZ2V0KHRhZy5pZCk7XG4gICAgICAgICAgICBjb250ZXh0LmFkZExpc3RlbmVyKFwicmVzb3VyY2VzLVwiK3RhZy5pZCwgdGFncy5sb2FkZWQpO1xuICAgICAgICB9IGVsc2UgaWYgKHRhZy52YWx1ZT09XCJhcnJheVwiKSB7XG4gICAgICAgICAgICBodG1sICs9ICc8ZGl2IGlkPVwiVGFnXycrdGFnLmlkKydfU2VsZWN0ZWRcIj48L2Rpdj4nO1xuICAgICAgICAgICAgaHRtbCArPSAnPGlucHV0IGlkPVwiVGFnXycrdGFnLmlkKydcIiB0eXBlPVwidGV4dFwiIGRhdGEtdGFnPVwiJyt0YWcuaWQrJ1wiIGRhdGEtYXJyYXk9XCInK3RhZy5pZCsnXCIgbWF4bGVuZ3RoPVwiNTAwXCIgcGxhY2Vob2xkZXI9XCInK3RhZy5kZXNjcmlwdGlvbisnXCIgLz4nO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBodG1sO1xuICAgIH1cblxuICAgIGdldFRhZ1ZhbHVlcygpIHtcbiAgICAgICAgcmV0dXJuIHRhZ3MudmFsKCk7XG4gICAgfVxuXG4gICAgY2xvc2VGb3JtKHJlZnJlc2ggPSB0cnVlLCBpZ25vcmVDaGFuZ2VzID0gZmFsc2UsIGRhdGE/LCBldmVudD8pIHtcbiAgICAgICAgaWYgKCFpZ25vcmVDaGFuZ2VzICYmIHRoaXMuX2RhdGFDaGFuZ2UpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpcm1lZCA9IGNvbmZpcm0oJ1lvdSBoYXZlIHVuc2F2ZWQgY2hhbmdlcy4gRG8geW91IHdhbnQgdG8gbGVhdmUgdGhpcyBwYWdlIGFuZCBkaXNjYXJkIHlvdXIgY2hhbmdlcyBvciBzdGF5IG9uIHRoaXMgcGFnZT8nKTtcbiAgICAgICAgICAgIGlmICghY29uZmlybWVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzTW9kYWwpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VNb2RhbChyZWZyZXNoLCBpZ25vcmVDaGFuZ2VzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmV0dXJuVG9MaXN0UGFnZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xvc2VNb2RhbChyZWZyZXNoID0gdHJ1ZSwgaWdub3JlQ2hhbmdlcyA9IGZhbHNlLCBkYXRhPywgZXZlbnQ/KTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xvc2UuZW1pdCh7cmVmcmVzaDogcmVmcmVzaH0pO1xuICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuVG9MaXN0UGFnZSgpIHtcbiAgICAgICAgaWYgKHRoaXMubG9jYXRpb24gJiYgdGhpcy5wcmV2aW91c1JvdXRlICYmIHRoaXMudXNlUHJldmlvdXNMb2NhdGlvbikge1xuICAgICAgICAgICAgdGhpcy5sb2NhdGlvbi5iYWNrKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlcj8ubmF2aWdhdGVCeVVybChgJHt0aGlzLmJhc2VQYXRofWApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdEb0NoZWNrKCkge1xuICAgICAgICB0aGlzLmNoZWNrRGF0YUNoYW5nZURlYm91bmNlZCgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjaGVja0RhdGFDaGFuZ2UoKSB7XG4gICAgICAgIGlmICh0aGlzLmlnbm9yZURhdGFDaGFuZ2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgaW5pdERhdGEgPSBjbG9uZURlZXAodGhpcy5pbml0RGF0YSk7XG4gICAgICAgIGluaXREYXRhID0gdGhpcy5vbWl0RW1wdHlEYXRhKGluaXREYXRhKTtcbiAgICAgICAgbGV0IGZvcm1EYXRhID0gY2xvbmVEZWVwKHRoaXMuZm9ybURhdGEpO1xuICAgICAgICBmb3JtRGF0YSA9IHRoaXMub21pdEVtcHR5RGF0YShmb3JtRGF0YSk7XG4gICAgICAgIGNvbnN0IGRhdGFDaGFuZ2UgPSAhaXNFcXVhbChpbml0RGF0YSwgZm9ybURhdGEpO1xuICAgICAgICBpZiAoZGF0YUNoYW5nZSAhPT0gdGhpcy5fZGF0YUNoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5kYXRhQ2hhbmdlLmVtaXQoZGF0YUNoYW5nZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZGF0YUNoYW5nZSA9IGRhdGFDaGFuZ2U7XG4gICAgICAgIGFwcC5pc0RpcnR5ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgb21pdEVtcHR5RGF0YShvYmplY3QpIHtcbiAgICAgICAgZm9yRWFjaChvYmplY3QsICh2YWwsIGtleSkgPT4ge1xuICAgICAgICAgICAgaWYodGhpcy5vbWl0RGF0YUl0ZXJhdGVlKHZhbCkpIHtcbiAgICAgICAgICAgICAgICB1bnNldChvYmplY3QsIGtleSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYoaXNPYmplY3QodmFsKSkge1xuICAgICAgICAgICAgICAgIHRoaXMub21pdEVtcHR5RGF0YSh2YWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG5cbiAgICBvbWl0RGF0YUl0ZXJhdGVlKHZhbCkge1xuICAgICAgICByZXR1cm4gaXNOaWwodmFsKSB8fCAoaXNBcnJheSh2YWwpICYmIGlzRW1wdHkodmFsKSk7XG4gICAgfVxuXG4gICAgY29weVRvQ2xpcGJvYXJkKHZhbCkge1xuICAgICAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh2YWwpO1xuICAgICAgICBjb25zdCBncm93bGVyRGF0YSA9IG5ldyBHcm93bGVyTW9kZWwoXG4gICAgICAgICAgICAnc3VjY2VzcycsXG4gICAgICAgICAgICAnU3VjY2VzcycsXG4gICAgICAgICAgICBgVGV4dCBDb3BpZWRgLFxuICAgICAgICAgICAgYEFQSSBjYWxsIFVSTCBjb3BpZWQgdG8gY2xpcGJvYXJkYCxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5ncm93bGVyU2VydmljZS5zaG93KGdyb3dsZXJEYXRhKTtcbiAgICB9XG5cbiAgICBnZXRSb2xlc0NMSVZhcmlhYmxlKHNlbGVjdGVkUm9sZXMpIHtcbiAgICAgICAgbGV0IHJvbGVzVmFyID0gJyc7XG4gICAgICAgIHNlbGVjdGVkUm9sZXMuZm9yRWFjaCgocm9sZSwgaW5kZXgpPT4ge1xuICAgICAgICAgICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgICAgICAgICAgIHJvbGVzVmFyICs9ICcsJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJvbGVzVmFyICs9IHJvbGU7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcm9sZXNWYXI7XG4gICAgfVxuXG4gICAgZ2V0Um9sZXNDVVJMVmFyaWFibGUoc2VsZWN0ZWRSb2xlcykge1xuICAgICAgICBsZXQgcm9sZXNWYXIgPSAnJztcbiAgICAgICAgc2VsZWN0ZWRSb2xlcy5mb3JFYWNoKChyb2xlLCBpbmRleCk9PiB7XG4gICAgICAgICAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICAgICAgICAgICAgcm9sZXNWYXIgKz0gJywgJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJvbGVzVmFyICs9IGBcIiR7cm9sZX1cImA7XG4gICAgICAgIH0pO1xuICAgICAgICByb2xlc1ZhciA9IGBbJHtyb2xlc1Zhcn1dYDtcbiAgICAgICAgcmV0dXJuIHJvbGVzVmFyO1xuICAgIH1cblxuICAgIGNhbkRlYWN0aXZhdGUoKSB7XG4gICAgICAgIGlmICh0aGlzLl9kYXRhQ2hhbmdlKSB7XG4gICAgICAgICAgICByZXR1cm4gY29uZmlybSgnWW91IGhhdmUgdW5zYXZlZCBjaGFuZ2VzLiBEbyB5b3Ugd2FudCB0byBsZWF2ZSB0aGlzIHBhZ2UgYW5kIGRpc2NhcmQgeW91ciBjaGFuZ2VzIG9yIHN0YXkgb24gdGhpcyBwYWdlPycpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBlbnRpdHlVcGRhdGVkKCkge1xuICAgICAgICAvL25vLW9wXG4gICAgfVxuXG4gICAgZ2V0Um9sZUF0dHJpYnV0ZXModHlwZTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnppdGlTZXJ2aWNlLmdldCh0eXBlLCB7fSwgW10pLnRoZW4oKHJlc3VsdHMpID0+IHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHRzLmRhdGE7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
353
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdGFibGUtZm9ybS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9wcm9qZWN0YWJsZS1mb3Jtcy9wcm9qZWN0YWJsZS1mb3JtLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFO0FBRUYsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUNILFNBQVMsRUFHVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQXFCLE1BQU0sUUFBUSxDQUFDO0FBQ2xJLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUV4RCxPQUFPLEVBQW1CLGlCQUFpQixFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFFMUYsT0FBTyxFQUFDLGlCQUFpQixFQUFrQixNQUFNLGtDQUFrQyxDQUFDO0FBQ3BGLE9BQU8sRUFBaUIsYUFBYSxFQUFTLE1BQU0saUJBQWlCLENBQUM7QUFDdEUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVsQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQWtCLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7QUFFbEYsYUFBYTtBQUNiLE1BQU0sRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFDLEdBQUcsTUFBTSxDQUFDO0FBRXhELE1BQU0sT0FBTyxNQUFNO0NBRWxCO0FBRUQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHO0lBQ3JCLFVBQVUsRUFBRSxFQUFFO0lBQ2QsUUFBUSxFQUFFLEVBQUU7SUFDWixXQUFXLEVBQUUsRUFBRTtJQUNmLFVBQVUsRUFBRSxFQUFFO0NBQ2pCLENBQUM7QUFFRixNQUlzQixlQUFnQixTQUFRLG1CQUFtQjtJQXFDN0QsWUFDYyxjQUE4QixFQUNILFVBQTRCLEVBQzVCLFdBQTRCLEVBQ3ZELE1BQWUsRUFDZixLQUFzQixFQUN0QixRQUFtQixFQUNPLGVBQWlDO1FBRXJFLEtBQUssRUFBRSxDQUFDO1FBUkUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQ0gsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7UUFDNUIsZ0JBQVcsR0FBWCxXQUFXLENBQWlCO1FBQ3ZELFdBQU0sR0FBTixNQUFNLENBQVM7UUFDZixVQUFLLEdBQUwsS0FBSyxDQUFpQjtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ08sb0JBQWUsR0FBZixlQUFlLENBQWtCO1FBM0NoRSxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBSWYsZUFBVSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBTzNELFdBQU0sR0FBUSxFQUFFLENBQUM7UUFDZCxlQUFVLEdBQUcsWUFBWSxDQUFDO1FBQzFCLGdCQUFXLEdBQVEsTUFBTSxDQUFDO1FBQzFCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsd0JBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQ3JDLGdCQUFXLEdBQVUsRUFBRSxDQUFDO1FBQ3hCLGdCQUFXLEdBQVEsRUFBRSxDQUFDO1FBQ3RCLFlBQU8sR0FBUSxFQUFFLENBQUM7UUFDbEIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixhQUFRLEdBQVEsRUFBRSxDQUFDO1FBQ25CLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLGVBQVUsR0FBRyxDQUFDLEVBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUMsQ0FBQyxDQUFDO1FBQ3RGLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFHZCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpCLGNBQVMsR0FBUSxFQUFFLENBQUM7UUFDcEIsNkJBQXdCLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsR0FBRyxFQUFFLEVBQUMsT0FBTyxFQUFFLEdBQUcsRUFBQyxDQUFDLENBQUM7UUFDL0UscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBRXpCLGlCQUFZLEdBQWlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFaEQsYUFBUSxHQUFHLEtBQUssQ0FBQztRQVliLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQztRQUNqRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FDakIsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ25DLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFO2dCQUNkLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO2FBQ3RCO1FBQ0wsQ0FBQyxDQUFDLENBQ0wsQ0FBQztRQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUNqQixNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBQ25DLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLFlBQVksYUFBYSxFQUFFO2dCQUN6QyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO29CQUNyQyxPQUFPO2lCQUNWO2dCQUNELE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2hFLElBQUksQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ25DO1FBQ0wsQ0FBQyxDQUFDLENBQ0wsQ0FBQztRQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUNqQixJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDcEQsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDN0QsSUFDSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7Z0JBQ3ZELElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxXQUFXLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQ2xELE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQ3ZDO2dCQUNFLElBQUksQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDO2dCQUM3QixPQUFPO2FBQ1Y7WUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQztZQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDaEIsT0FBTzthQUNWO1lBQ0QsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUNMLENBQUM7UUFDRixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksTUFBTTtRQUNOLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRVEsZUFBZSxDQUFDLFNBQVMsR0FBRyxLQUFLO1FBQ3RDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ1osSUFBSSxDQUFDLGNBQWMsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLENBQUM7U0FDL0M7UUFDRCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFO1lBQzlCLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQzVFO0lBQ0wsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUFFO2dCQUM1QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUN2QyxJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDckIsT0FBTzthQUNWO1lBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFO2dCQUNqRixJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sRUFBRSxJQUFJLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDekMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3pCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDM0IsQ0FBQyxDQUFDLENBQUM7U0FDTjtRQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxZQUFZO1FBQ1IsSUFBSTtZQUNBLE1BQU0sSUFBSSxHQUFHLFFBQVEsRUFBRSxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDN0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztTQUMxRDtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ1osSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7U0FDdkI7SUFDTCxDQUFDO0lBRUQsZUFBZSxDQUFDLFFBQVE7UUFDcEIsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQzVCLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQTtJQUNwQixDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBRSxLQUFLLENBQUM7UUFDeEQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2YsT0FBTztTQUNWO1FBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFPO1FBQ2QsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUM7UUFDcEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ3RCLElBQUksSUFBSSxDQUFDO1lBQ1QsSUFBSSxHQUFHLENBQUMsT0FBTyxJQUFFLEtBQUssSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUUsQ0FBQyxFQUFFO2dCQUMvRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDO2dCQUN4QyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDL0IsTUFBTSxLQUFLLEdBQUc7b0JBQ1YsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLO29CQUNoQixPQUFPLEVBQUUsSUFBSTtpQkFDaEIsQ0FBQTtnQkFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTthQUMvQjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFNBQVM7UUFDTCxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ25CLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLE9BQU87U0FDVjtRQUNELEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFDUCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBRUQsYUFBYSxDQUFDLEdBQUc7UUFDYixJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZCxJQUFJLEdBQUcsQ0FBQyxLQUFLLElBQUUsUUFBUSxFQUFFO1lBQ3JCLElBQUksSUFBSSxpQkFBaUIsR0FBQyxHQUFHLENBQUMsRUFBRSxHQUFDLDBCQUEwQixHQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUMsaUNBQWlDLEdBQUMsR0FBRyxDQUFDLFdBQVcsR0FBQyxNQUFNLENBQUM7U0FDL0g7YUFBTSxJQUFJLEdBQUcsQ0FBQyxLQUFLLElBQUUsU0FBUyxFQUFFO1lBQzdCLElBQUksSUFBSSxpQkFBaUIsR0FBQyxHQUFHLENBQUMsRUFBRSxHQUFDLDhCQUE4QixHQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUMsTUFBTSxDQUFDO1NBQ2pGO2FBQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxJQUFFLEtBQUssRUFBRTtZQUN6QixJQUFJLElBQUksZUFBZSxHQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUMsa0JBQWtCLEdBQUMsR0FBRyxDQUFDLEVBQUUsR0FBQyxzQkFBc0IsQ0FBQztZQUNoRixJQUFJLElBQUksaUJBQWlCLEdBQUMsR0FBRyxDQUFDLEVBQUUsR0FBQywwQkFBMEIsR0FBQyxHQUFHLENBQUMsRUFBRSxHQUFDLGlDQUFpQyxHQUFDLEdBQUcsQ0FBQyxXQUFXLEdBQUMsTUFBTSxDQUFDO1NBQy9IO2FBQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxJQUFFLFFBQVEsRUFBRTtZQUM1QixJQUFJLElBQUksdUJBQXVCLENBQUM7WUFDaEMsSUFBSSxJQUFJLGVBQWUsR0FBQyxHQUFHLENBQUMsRUFBRSxHQUFDLGFBQWEsR0FBQyxHQUFHLENBQUMsRUFBRSxHQUFDLGdFQUFnRSxHQUFDLEdBQUcsQ0FBQyxXQUFXLEdBQUMsaUNBQWlDLEdBQUMsR0FBRyxDQUFDLE9BQU8sR0FBQyxrQ0FBa0MsR0FBQyxHQUFHLENBQUMsRUFBRSxHQUFDLCtCQUErQixHQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUMsa0NBQWtDLENBQUM7WUFDdlMsSUFBSSxJQUFJLGlCQUFpQixHQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUMsb0JBQW9CLEdBQUMsR0FBRyxDQUFDLEVBQUUsR0FBQyxtQkFBbUIsQ0FBQztZQUNqRixTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN0QixPQUFPLENBQUMsV0FBVyxDQUFDLFlBQVksR0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN6RDthQUFNLElBQUksR0FBRyxDQUFDLEtBQUssSUFBRSxNQUFNLEVBQUU7WUFDMUIsSUFBSSxJQUFJLHVCQUF1QixDQUFDO1lBQ2hDLElBQUksSUFBSSxlQUFlLEdBQUMsR0FBRyxDQUFDLEVBQUUsR0FBQyxhQUFhLEdBQUMsR0FBRyxDQUFDLEVBQUUsR0FBQyxzREFBc0QsR0FBQyxHQUFHLENBQUMsV0FBVyxHQUFDLGlDQUFpQyxHQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUMsa0NBQWtDLEdBQUMsR0FBRyxDQUFDLEVBQUUsR0FBQywrQkFBK0IsR0FBQyxHQUFHLENBQUMsRUFBRSxHQUFDLGdDQUFnQyxDQUFDO1lBQzNSLElBQUksSUFBSSxpQkFBaUIsR0FBQyxHQUFHLENBQUMsRUFBRSxHQUFDLG9CQUFvQixHQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUMsbUJBQW1CLENBQUM7WUFDakYsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdEIsT0FBTyxDQUFDLFdBQVcsQ0FBQyxZQUFZLEdBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDekQ7YUFBTSxJQUFJLEdBQUcsQ0FBQyxLQUFLLElBQUUsT0FBTyxFQUFFO1lBQzNCLElBQUksSUFBSSxlQUFlLEdBQUMsR0FBRyxDQUFDLEVBQUUsR0FBQyxtQkFBbUIsQ0FBQztZQUNuRCxJQUFJLElBQUksaUJBQWlCLEdBQUMsR0FBRyxDQUFDLEVBQUUsR0FBQywwQkFBMEIsR0FBQyxHQUFHLENBQUMsRUFBRSxHQUFDLGdCQUFnQixHQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUMsaUNBQWlDLEdBQUMsR0FBRyxDQUFDLFdBQVcsR0FBQyxNQUFNLENBQUM7U0FDdko7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsWUFBWTtRQUNSLE9BQU8sSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxTQUFTLENBQUMsT0FBTyxHQUFHLElBQUksRUFBRSxhQUFhLEdBQUcsS0FBSyxFQUFFLElBQUssRUFBRSxLQUFNO1FBQzFELElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMseUdBQXlHLENBQUMsQ0FBQztZQUNySSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNaLE9BQU87YUFDVjtTQUNKO1FBQ0QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUM7U0FDM0M7YUFBTTtZQUNILElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1NBQzNCO0lBQ0wsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFPLEdBQUcsSUFBSSxFQUFFLGFBQWEsR0FBRyxLQUFLLEVBQUUsSUFBSyxFQUFFLEtBQU07UUFDM0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBQyxPQUFPLEVBQUUsT0FBTyxFQUFDLENBQUMsQ0FBQztRQUNwQyxJQUFJLEtBQUssRUFBRTtZQUNQLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUMzQjtJQUNMLENBQUM7SUFFRCxnQkFBZ0I7UUFDWixJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDakUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUN4QjthQUFNO1lBQ0gsSUFBSSxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztTQUNsRDtJQUNMLENBQUM7SUFFRCxTQUFTO1FBQ0wsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVTLGVBQWU7UUFDckIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDdkIsT0FBTztTQUNWO1FBQ0QsSUFBSSxRQUFRLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QyxJQUFJLFFBQVEsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sVUFBVSxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNoRCxJQUFJLFVBQVUsS0FBSyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ3BDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7UUFDOUIsR0FBRyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUFNO1FBQ2hCLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDekIsSUFBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQzNCLEtBQUssQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDdEI7aUJBQU0sSUFBRyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDM0I7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxHQUFHO1FBQ2hCLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxlQUFlLENBQUMsR0FBRztRQUNmLFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLE1BQU0sV0FBVyxHQUFHLElBQUksWUFBWSxDQUNoQyxTQUFTLEVBQ1QsU0FBUyxFQUNULGFBQWEsRUFDYixrQ0FBa0MsQ0FDckMsQ0FBQztRQUNGLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxhQUFhO1FBQzdCLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNsQixhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBQyxFQUFFO1lBQ2pDLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtnQkFDWCxRQUFRLElBQUksR0FBRyxDQUFDO2FBQ25CO1lBQ0QsUUFBUSxJQUFJLElBQUksQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxhQUFhO1FBQzlCLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNsQixhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBQyxFQUFFO1lBQ2pDLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtnQkFDWCxRQUFRLElBQUksSUFBSSxDQUFDO2FBQ3BCO1lBQ0QsUUFBUSxJQUFJLElBQUksSUFBSSxHQUFHLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7UUFDSCxRQUFRLEdBQUcsSUFBSSxRQUFRLEdBQUcsQ0FBQztRQUMzQixPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0lBRUQsYUFBYTtRQUNULElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNsQixPQUFPLE9BQU8sQ0FBQyx5R0FBeUcsQ0FBQyxDQUFDO1NBQzdIO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVTLGFBQWE7UUFDbkIsT0FBTztJQUNYLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxJQUFZO1FBQzFCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUN2RCxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOytHQWpVaUIsZUFBZSxnREF1Q3JCLGlCQUFpQixhQUNqQixpQkFBaUIseUZBSWpCLGdCQUFnQjttR0E1Q1YsZUFBZSxxYUFIdkIsRUFBRTs7U0FHTSxlQUFlOzRGQUFmLGVBQWU7a0JBSnBDLFNBQVM7K0JBQ0ksRUFBRTs7MEJBMENQLE1BQU07MkJBQUMsaUJBQWlCOzswQkFDeEIsTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUl4QixNQUFNOzJCQUFDLGdCQUFnQjs0Q0EzQ25CLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNZLFFBQVE7c0JBQXpCLEtBQUs7Z0JBQ2EsS0FBSztzQkFBdkIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNzQixjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQjtnQkFDRyxlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gICAgQ29weXJpZ2h0IE5ldEZvdW5kcnkgSW5jLlxuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbmltcG9ydCB7RXh0ZW5kYWJsZUNvbXBvbmVudH0gZnJvbSBcIi4uL2V4dGVuZGFibGUvZXh0ZW5kYWJsZS5jb21wb25lbnRcIjtcbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIERvQ2hlY2ssXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdDaGlsZFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5pbXBvcnQge2RlZmVyLCBpc0VxdWFsLCB1bnNldCwgZGVib3VuY2UsIGNsb25lRGVlcCwgZm9yRWFjaCwgaXNBcnJheSwgaXNFbXB0eSwgaXNPYmplY3QsIGlzTmlsLCBtYXAsIG9taXRCeSwgc2xpY2V9IGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCB7R3Jvd2xlck1vZGVsfSBmcm9tIFwiLi4vbWVzc2FnaW5nL2dyb3dsZXIubW9kZWxcIjtcbmltcG9ydCB7R3Jvd2xlclNlcnZpY2V9IGZyb20gXCIuLi9tZXNzYWdpbmcvZ3Jvd2xlci5zZXJ2aWNlXCI7XG5pbXBvcnQge0V4dGVuc2lvblNlcnZpY2UsIFNIQVJFRFpfRVhURU5TSU9OfSBmcm9tIFwiLi4vZXh0ZW5kYWJsZS9leHRlbnNpb25zLW5vb3Auc2VydmljZVwiO1xuaW1wb3J0IHtJZGVudGl0eX0gZnJvbSBcIi4uLy4uL21vZGVscy9pZGVudGl0eVwiO1xuaW1wb3J0IHtaSVRJX0RBVEFfU0VSVklDRSwgWml0aURhdGFTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXMveml0aS1kYXRhLnNlcnZpY2VcIjtcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25FbmQsIFJvdXRlcn0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge0xvY2F0aW9ufSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQge1NFVFRJTkdTX1NFUlZJQ0UsIFNldHRpbmdzU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3NldHRpbmdzLnNlcnZpY2VcIjtcblxuLy8gQHRzLWlnbm9yZVxuY29uc3Qge2NvbnRleHQsIHRhZ3MsIHJlc291cmNlcywgc2VydmljZSwgYXBwfSA9IHdpbmRvdztcblxuZXhwb3J0IGNsYXNzIEVudGl0eSB7XG4gICAgbmFtZTogJydcbn1cblxuZXhwb3J0IGNvbnN0IEtFWV9DT0RFUyA9IHtcbiAgICBMRUZUX0FSUk9XOiAzNyxcbiAgICBVUF9BUlJPVzogMzgsXG4gICAgUklHSFRfQVJST1c6IDM5LFxuICAgIERPV05fQVJST1c6IDQwXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZTogJycsXG4gICAgc3R5bGVVcmxzOiBbJy4vcHJvamVjdGFibGUtZm9ybS5jbGFzcy5zY3NzJ11cbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUHJvamVjdGFibGVGb3JtIGV4dGVuZHMgRXh0ZW5kYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIERvQ2hlY2ssIE9uSW5pdCB7XG4gICAgQElucHV0KCkgaXNNb2RhbCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGVudGl0eUlkOiBTdHJpbmc7XG4gICAgQElucHV0KCkgYWJzdHJhY3QgZm9ybURhdGE6IGFueTtcbiAgICBAT3V0cHV0KCkgYWJzdHJhY3QgY2xvc2U6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICAgIEBPdXRwdXQoKSBkYXRhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBWaWV3Q2hpbGQoJ25hbWVGaWVsZElucHV0JykgbmFtZUZpZWxkSW5wdXQ6IEVsZW1lbnRSZWY7XG4gICAgQFZpZXdDaGlsZCgnc2Nyb2xsQ29udGFpbmVyJykgc2Nyb2xsQ29udGFpbmVyOiBFbGVtZW50UmVmO1xuXG4gICAgYWJzdHJhY3QgY2xlYXIoKTogdm9pZDtcbiAgICBhYnN0cmFjdCBzYXZlKCk6IHZvaWQ7XG5cbiAgICBwdWJsaWMgZXJyb3JzOiBhbnkgPSB7fTtcbiAgICBwcm90ZWN0ZWQgZW50aXR5VHlwZSA9ICdpZGVudGl0aWVzJztcbiAgICBwcm90ZWN0ZWQgZW50aXR5Q2xhc3M6IGFueSA9IEVudGl0eTtcbiAgICBwcm90ZWN0ZWQgaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIHVzZVByZXZpb3VzTG9jYXRpb24gPSB0cnVlO1xuICAgIG1vcmVBY3Rpb25zOiBhbnlbXSA9IFtdO1xuICAgIHRhZ0VsZW1lbnRzOiBhbnkgPSBbXTtcbiAgICB0YWdEYXRhOiBhbnkgPSBbXTtcbiAgICBoaWRlVGFncyA9IGZhbHNlO1xuICAgIGluaXREYXRhOiBhbnkgPSB7fTtcbiAgICBfZGF0YUNoYW5nZSA9IGZhbHNlO1xuICAgIGFwaU9wdGlvbnMgPSBbe2lkOiAnY2xpJywgbGFiZWw6ICdDb3B5IGFzIENMSSd9LCB7aWQ6ICdjdXJsJywgbGFiZWw6ICdDb3B5IGFzIENVUkwnfV07XG4gICAgYmFzZVBhdGggPSAnJztcbiAgICBiYXNlSHJlZjtcbiAgICBwcmV2aW91c1JvdXRlO1xuICAgIHNob3dNb3JlID0gZmFsc2U7XG5cbiAgICBfc2V0dGluZ3M6IGFueSA9IHt9O1xuICAgIGNoZWNrRGF0YUNoYW5nZURlYm91bmNlZCA9IGRlYm91bmNlKHRoaXMuY2hlY2tEYXRhQ2hhbmdlLCAxMDAsIHttYXhXYWl0OiAxMDB9KTtcbiAgICBpZ25vcmVEYXRhQ2hhbmdlID0gZmFsc2U7XG5cbiAgICBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIGZvcm1Jbml0ID0gZmFsc2U7XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBncm93bGVyU2VydmljZTogR3Jvd2xlclNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoU0hBUkVEWl9FWFRFTlNJT04pIHByb3RlY3RlZCBleHRTZXJ2aWNlOiBFeHRlbnNpb25TZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KFpJVElfREFUQV9TRVJWSUNFKSBwcm90ZWN0ZWQgeml0aVNlcnZpY2U6IFppdGlEYXRhU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIHJvdXRlcj86IFJvdXRlcixcbiAgICAgICAgcHJvdGVjdGVkIHJvdXRlPzogQWN0aXZhdGVkUm91dGUsXG4gICAgICAgIHByb3RlY3RlZCBsb2NhdGlvbj86IExvY2F0aW9uLFxuICAgICAgICBASW5qZWN0KFNFVFRJTkdTX1NFUlZJQ0UpIHByb3RlY3RlZCBzZXR0aW5nc1NlcnZpY2U/OiBTZXR0aW5nc1NlcnZpY2UsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMucHJldmlvdXNSb3V0ZSA9IHRoaXMucm91dGVyLmdldEN1cnJlbnROYXZpZ2F0aW9uKCkucHJldmlvdXNOYXZpZ2F0aW9uPy5maW5hbFVybD8udG9TdHJpbmcoKTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICAgICAgdGhpcy5yb3V0ZT8ucGFyYW1zPy5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpZCA9IHBhcmFtc1snaWQnXTtcbiAgICAgICAgICAgICAgICBpZiAoIWlzRW1wdHkoaWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW50aXR5SWQgPSBpZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgICAgICByb3V0ZXIuZXZlbnRzLnN1YnNjcmliZSgoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFldmVudD8uc25hcHNob3Q/LnJvdXRlQ29uZmlnPy5wYXRoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGF0aFNlZ21lbnRzID0gZXZlbnQuc25hcHNob3Qucm91dGVDb25maWcucGF0aC5zcGxpdCgnLycpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJhc2VQYXRoID0gcGF0aFNlZ21lbnRzWzBdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzQ2hhbmdlPy5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdTZXR0aW5ncyA9IGNsb25lRGVlcCh0aGlzLnNldHRpbmdzU2VydmljZS5zZXR0aW5ncyk7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAhaXNFbXB0eSh0aGlzLmZvcm1EYXRhPy5pZCkgJiYgKGlzRW1wdHkodGhpcy5fc2V0dGluZ3MpIHx8XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NldHRpbmdzLnNlc3Npb24/LmlkID09PSBuZXdTZXR0aW5ncy5zZXNzaW9uPy5pZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNFbXB0eShuZXdTZXR0aW5ncy5zZXNzaW9uPy5pZCkpXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NldHRpbmdzID0gbmV3U2V0dGluZ3M7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5fc2V0dGluZ3MgPSBuZXdTZXR0aW5ncztcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZm9ybUluaXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLm5nT25Jbml0KCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmluaXRCYXNlSHJlZigpO1xuICAgIH1cblxuICAgIGdldCBpc0VkaXQoKSB7XG4gICAgICAgIHJldHVybiAhaXNFbXB0eSh0aGlzLmZvcm1EYXRhLmlkKTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBuZ0FmdGVyVmlld0luaXQoc2tpcEZvY3VzID0gZmFsc2UpIHtcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgICAgIHRoaXMuZXJyb3JzID0ge307XG4gICAgICAgIGlmICghc2tpcEZvY3VzKSB7XG4gICAgICAgICAgICB0aGlzLm5hbWVGaWVsZElucHV0Py5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmV4dFNlcnZpY2U/Lm1vcmVBY3Rpb25zKSB7XG4gICAgICAgICAgICB0aGlzLm1vcmVBY3Rpb25zID0gWy4uLnRoaXMubW9yZUFjdGlvbnMsIC4uLnRoaXMuZXh0U2VydmljZS5tb3JlQWN0aW9uc107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZW50aXR5SWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmVudGl0eUlkID09PSAnY3JlYXRlJykge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybURhdGEgPSBuZXcgdGhpcy5lbnRpdHlDbGFzcygpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdERhdGEgPSBjbG9uZURlZXAodGhpcy5mb3JtRGF0YSk7XG4gICAgICAgICAgICAgICAgdGhpcy5lbnRpdHlVcGRhdGVkKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy56aXRpU2VydmljZS5nZXRTdWJkYXRhKHRoaXMuZW50aXR5VHlwZSwgdGhpcy5lbnRpdHlJZCwgJycpLnRoZW4oKGVudGl0eTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtRGF0YSA9IGVudGl0eT8uZGF0YTtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXREYXRhID0gY2xvbmVEZWVwKHRoaXMuZm9ybURhdGEpO1xuICAgICAgICAgICAgICAgIHRoaXMuZW50aXR5VXBkYXRlZCgpO1xuICAgICAgICAgICAgfSkuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZm9ybUluaXQgPSB0cnVlO1xuICAgIH1cblxuICAgIGluaXRCYXNlSHJlZigpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGJhc2UgPSBkb2N1bWVudD8ucXVlcnlTZWxlY3RvcignYmFzZScpO1xuICAgICAgICAgICAgdGhpcy5iYXNlSHJlZiA9IGJhc2UgPyBiYXNlLmdldEF0dHJpYnV0ZSgnaHJlZicpIDogJy8nO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgdGhpcy5iYXNlSHJlZiA9ICcvJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNob3dNb3JlQ2hhbmdlZChzaG93TW9yZSkge1xuICAgICAgICBpZiAoIXNob3dNb3JlIHx8IHRoaXMuaGlkZVRhZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlc2V0VGFncygpXG4gICAgfVxuXG4gICAgbG9hZFRhZ3MoKSB7XG4gICAgICAgIHRoaXMuaGlkZVRhZ3MgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImhpZGVUYWdzXCIpPT1cInllc1wiO1xuICAgICAgICBpZiAodGhpcy5oaWRlVGFncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNlcnZpY2UuY2FsbChcInRhZ3NcIiwge30sIHRoaXMudGFnc0xvYWRlZC5iaW5kKHRoaXMpKTtcbiAgICB9XG5cbiAgICB0YWdzTG9hZGVkKHJlc3VsdHMpIHtcbiAgICAgICAgdGFncy5kYXRhID0gcmVzdWx0cztcbiAgICAgICAgY29udGV4dC5zZXQodGFncy5uYW1lLCB0YWdzLmRhdGEpO1xuICAgICAgICB0YWdzLnRhZ0RhdGEgPSBbXTtcbiAgICAgICAgdGFncy5kYXRhLmZvckVhY2goKHRhZykgPT4ge1xuICAgICAgICAgICAgbGV0IGh0bWw7XG4gICAgICAgICAgICBpZiAodGFnLm9iamVjdHM9PVwiYWxsXCIgfHwgdGFnLm9iamVjdHMuaW5kZXhPZih0aGlzLmVudGl0eVR5cGUpPj0wKSB7XG4gICAgICAgICAgICAgICAgdGFncy50YWdEYXRhW3RhZ3MudGFnRGF0YS5sZW5ndGhdID0gdGFnO1xuICAgICAgICAgICAgICAgIGh0bWwgPSB0aGlzLmdldFRhZ0NvbnRlbnQodGFnKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0YWdFbCA9IHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRhZy5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogaHRtbFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnRhZ0VsZW1lbnRzLnB1c2godGFnRWwpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJlc2V0VGFncygpIHtcbiAgICAgICAgdW5zZXQodGFncywgJ21hcCcpO1xuICAgICAgICBpZiAodGhpcy5oaWRlVGFncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGRlZmVyKCgpID0+IHtcbiAgICAgICAgICAgIHRhZ3MucmVzZXQodGhpcy5mb3JtRGF0YSk7XG4gICAgICAgICAgICB0YWdzLmV2ZW50cygpO1xuICAgICAgICB9KVxuICAgIH1cblxuICAgIGdldFRhZ0NvbnRlbnQodGFnKSB7XG4gICAgICAgIGxldCBodG1sID0gJyc7XG4gICAgICAgIGlmICh0YWcudmFsdWU9PVwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIGh0bWwgKz0gJzxpbnB1dCBpZD1cIlRhZ18nK3RhZy5pZCsnXCIgdHlwZT1cInRleHRcIiBkYXRhLXRhZz1cIicrdGFnLmlkKydcIiBtYXhsZW5ndGg9XCI1MDBcIiBwbGFjZWhvbGRlcj1cIicrdGFnLmRlc2NyaXB0aW9uKydcIiAvPic7XG4gICAgICAgIH0gZWxzZSBpZiAodGFnLnZhbHVlPT1cImJvb2xlYW5cIikge1xuICAgICAgICAgICAgaHRtbCArPSAnPGlucHV0IGlkPVwiVGFnXycrdGFnLmlkKydcIiB0eXBlPVwiY2hlY2tib3hcIiBkYXRhLXRhZz1cIicrdGFnLmlkKydcIiAvPic7XG4gICAgICAgIH0gZWxzZSBpZiAodGFnLnZhbHVlPT1cIm1hcFwiKSB7XG4gICAgICAgICAgICBodG1sICs9ICc8ZGl2IGlkPVwiVGFnXycrdGFnLmlkKydfTWFwXCIgZGF0YS1tYXA9XCInK3RhZy5pZCsnXCIgY2xhc3M9XCJtYXBcIj48L2Rpdj4nO1xuICAgICAgICAgICAgaHRtbCArPSAnPGlucHV0IGlkPVwiVGFnXycrdGFnLmlkKydcIiB0eXBlPVwidGV4dFwiIGRhdGEtdGFnPVwiJyt0YWcuaWQrJ1wiIG1heGxlbmd0aD1cIjUwMFwiIHBsYWNlaG9sZGVyPVwiJyt0YWcuZGVzY3JpcHRpb24rJ1wiIC8+JztcbiAgICAgICAgfSBlbHNlIGlmICh0YWcudmFsdWU9PVwiYXZhdGFyXCIpIHtcbiAgICAgICAgICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9XCJmb3JtUm93XCI+JztcbiAgICAgICAgICAgIGh0bWwgKz0gJzxkaXYgaWQ9XCJUYWdfJyt0YWcuaWQrJ1wiIGRhdGEtaWQ9XCInK3RhZy5pZCsnXCIgZGF0YS1yZXNvdXJjZT1cImF2YXRhclwiIGNsYXNzPVwicmVzb3VyY2UgaWNvbiBwcm9maWxlXCIgdGl0bGU9XCInK3RhZy5kZXNjcmlwdGlvbisnXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyt0YWcuZGVmYXVsdCsnKVwiPjwvZGl2PjxkaXYgaWQ9XCJUYWdfUmVzb3VyY2VzXycrdGFnLmlkKydcIiBjbGFzcz1cInJlc291cmNlc1wiIGRhdGEtaWQ9XCInK3RhZy5pZCsnXCIgZGF0YS1yZXNvdXJjZXM9XCJhdmF0YXJcIj48L2Rpdj4nO1xuICAgICAgICAgICAgaHRtbCArPSAnPGlucHV0IGlkPVwiVGFnXycrdGFnLmlkKydfSGlkZXJcIiBkYXRhLXRhZz1cIicrdGFnLmlkKydcIiB0eXBlPVwiaGlkZGVuXCIvPic7XG4gICAgICAgICAgICByZXNvdXJjZXMuZ2V0KHRhZy5pZCk7XG4gICAgICAgICAgICBjb250ZXh0LmFkZExpc3RlbmVyKFwicmVzb3VyY2VzLVwiK3RhZy5pZCwgdGFncy5sb2FkZWQpO1xuICAgICAgICB9IGVsc2UgaWYgKHRhZy52YWx1ZT09XCJpY29uXCIpIHtcbiAgICAgICAgICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9XCJmb3JtUm93XCI+JztcbiAgICAgICAgICAgIGh0bWwgKz0gJzxkaXYgaWQ9XCJUYWdfJyt0YWcuaWQrJ1wiIGRhdGEtaWQ9XCInK3RhZy5pZCsnXCIgZGF0YS1yZXNvdXJjZT1cImljb25cIiBjbGFzcz1cInJlc291cmNlIGljb25cIiB0aXRsZT1cIicrdGFnLmRlc2NyaXB0aW9uKydcIiBzdHlsZT1cImJhY2tncm91bmQtaW1hZ2U6IHVybCgnK3RhZy5kZWZhdWx0KycpXCI+PC9kaXY+PGRpdiBpZD1cIlRhZ19SZXNvdXJjZXNfJyt0YWcuaWQrJ1wiIGNsYXNzPVwicmVzb3VyY2VzXCIgZGF0YS1pZD1cIicrdGFnLmlkKydcIiBkYXRhLXJlc291cmNlcz1cImljb25cIj48L2Rpdj4nO1xuICAgICAgICAgICAgaHRtbCArPSAnPGlucHV0IGlkPVwiVGFnXycrdGFnLmlkKydfSGlkZXJcIiBkYXRhLXRhZz1cIicrdGFnLmlkKydcIiB0eXBlPVwiaGlkZGVuXCIvPic7XG4gICAgICAgICAgICByZXNvdXJjZXMuZ2V0KHRhZy5pZCk7XG4gICAgICAgICAgICBjb250ZXh0LmFkZExpc3RlbmVyKFwicmVzb3VyY2VzLVwiK3RhZy5pZCwgdGFncy5sb2FkZWQpO1xuICAgICAgICB9IGVsc2UgaWYgKHRhZy52YWx1ZT09XCJhcnJheVwiKSB7XG4gICAgICAgICAgICBodG1sICs9ICc8ZGl2IGlkPVwiVGFnXycrdGFnLmlkKydfU2VsZWN0ZWRcIj48L2Rpdj4nO1xuICAgICAgICAgICAgaHRtbCArPSAnPGlucHV0IGlkPVwiVGFnXycrdGFnLmlkKydcIiB0eXBlPVwidGV4dFwiIGRhdGEtdGFnPVwiJyt0YWcuaWQrJ1wiIGRhdGEtYXJyYXk9XCInK3RhZy5pZCsnXCIgbWF4bGVuZ3RoPVwiNTAwXCIgcGxhY2Vob2xkZXI9XCInK3RhZy5kZXNjcmlwdGlvbisnXCIgLz4nO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBodG1sO1xuICAgIH1cblxuICAgIGdldFRhZ1ZhbHVlcygpIHtcbiAgICAgICAgcmV0dXJuIHRhZ3MudmFsKCk7XG4gICAgfVxuXG4gICAgY2xvc2VGb3JtKHJlZnJlc2ggPSB0cnVlLCBpZ25vcmVDaGFuZ2VzID0gZmFsc2UsIGRhdGE/LCBldmVudD8pIHtcbiAgICAgICAgaWYgKCFpZ25vcmVDaGFuZ2VzICYmIHRoaXMuX2RhdGFDaGFuZ2UpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpcm1lZCA9IGNvbmZpcm0oJ1lvdSBoYXZlIHVuc2F2ZWQgY2hhbmdlcy4gRG8geW91IHdhbnQgdG8gbGVhdmUgdGhpcyBwYWdlIGFuZCBkaXNjYXJkIHlvdXIgY2hhbmdlcyBvciBzdGF5IG9uIHRoaXMgcGFnZT8nKTtcbiAgICAgICAgICAgIGlmICghY29uZmlybWVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzTW9kYWwpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VNb2RhbChyZWZyZXNoLCBpZ25vcmVDaGFuZ2VzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmV0dXJuVG9MaXN0UGFnZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xvc2VNb2RhbChyZWZyZXNoID0gdHJ1ZSwgaWdub3JlQ2hhbmdlcyA9IGZhbHNlLCBkYXRhPywgZXZlbnQ/KTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xvc2UuZW1pdCh7cmVmcmVzaDogcmVmcmVzaH0pO1xuICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuVG9MaXN0UGFnZSgpIHtcbiAgICAgICAgaWYgKHRoaXMubG9jYXRpb24gJiYgdGhpcy5wcmV2aW91c1JvdXRlICYmIHRoaXMudXNlUHJldmlvdXNMb2NhdGlvbikge1xuICAgICAgICAgICAgdGhpcy5sb2NhdGlvbi5iYWNrKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlcj8ubmF2aWdhdGVCeVVybChgJHt0aGlzLmJhc2VQYXRofWApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdEb0NoZWNrKCkge1xuICAgICAgICB0aGlzLmNoZWNrRGF0YUNoYW5nZURlYm91bmNlZCgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjaGVja0RhdGFDaGFuZ2UoKSB7XG4gICAgICAgIGlmICh0aGlzLmlnbm9yZURhdGFDaGFuZ2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgaW5pdERhdGEgPSBjbG9uZURlZXAodGhpcy5pbml0RGF0YSk7XG4gICAgICAgIGluaXREYXRhID0gdGhpcy5vbWl0RW1wdHlEYXRhKGluaXREYXRhKTtcbiAgICAgICAgbGV0IGZvcm1EYXRhID0gY2xvbmVEZWVwKHRoaXMuZm9ybURhdGEpO1xuICAgICAgICBmb3JtRGF0YSA9IHRoaXMub21pdEVtcHR5RGF0YShmb3JtRGF0YSk7XG4gICAgICAgIGNvbnN0IGRhdGFDaGFuZ2UgPSAhaXNFcXVhbChpbml0RGF0YSwgZm9ybURhdGEpO1xuICAgICAgICBpZiAoZGF0YUNoYW5nZSAhPT0gdGhpcy5fZGF0YUNoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5kYXRhQ2hhbmdlLmVtaXQoZGF0YUNoYW5nZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZGF0YUNoYW5nZSA9IGRhdGFDaGFuZ2U7XG4gICAgICAgIGFwcC5pc0RpcnR5ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgb21pdEVtcHR5RGF0YShvYmplY3QpIHtcbiAgICAgICAgZm9yRWFjaChvYmplY3QsICh2YWwsIGtleSkgPT4ge1xuICAgICAgICAgICAgaWYodGhpcy5vbWl0RGF0YUl0ZXJhdGVlKHZhbCkpIHtcbiAgICAgICAgICAgICAgICB1bnNldChvYmplY3QsIGtleSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYoaXNPYmplY3QodmFsKSkge1xuICAgICAgICAgICAgICAgIHRoaXMub21pdEVtcHR5RGF0YSh2YWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG5cbiAgICBvbWl0RGF0YUl0ZXJhdGVlKHZhbCkge1xuICAgICAgICByZXR1cm4gaXNOaWwodmFsKSB8fCAoaXNBcnJheSh2YWwpICYmIGlzRW1wdHkodmFsKSk7XG4gICAgfVxuXG4gICAgY29weVRvQ2xpcGJvYXJkKHZhbCkge1xuICAgICAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh2YWwpO1xuICAgICAgICBjb25zdCBncm93bGVyRGF0YSA9IG5ldyBHcm93bGVyTW9kZWwoXG4gICAgICAgICAgICAnc3VjY2VzcycsXG4gICAgICAgICAgICAnU3VjY2VzcycsXG4gICAgICAgICAgICBgVGV4dCBDb3BpZWRgLFxuICAgICAgICAgICAgYEFQSSBjYWxsIFVSTCBjb3BpZWQgdG8gY2xpcGJvYXJkYCxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5ncm93bGVyU2VydmljZS5zaG93KGdyb3dsZXJEYXRhKTtcbiAgICB9XG5cbiAgICBnZXRSb2xlc0NMSVZhcmlhYmxlKHNlbGVjdGVkUm9sZXMpIHtcbiAgICAgICAgbGV0IHJvbGVzVmFyID0gJyc7XG4gICAgICAgIHNlbGVjdGVkUm9sZXMuZm9yRWFjaCgocm9sZSwgaW5kZXgpPT4ge1xuICAgICAgICAgICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgICAgICAgICAgIHJvbGVzVmFyICs9ICcsJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJvbGVzVmFyICs9IHJvbGU7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcm9sZXNWYXI7XG4gICAgfVxuXG4gICAgZ2V0Um9sZXNDVVJMVmFyaWFibGUoc2VsZWN0ZWRSb2xlcykge1xuICAgICAgICBsZXQgcm9sZXNWYXIgPSAnJztcbiAgICAgICAgc2VsZWN0ZWRSb2xlcy5mb3JFYWNoKChyb2xlLCBpbmRleCk9PiB7XG4gICAgICAgICAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICAgICAgICAgICAgcm9sZXNWYXIgKz0gJywgJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJvbGVzVmFyICs9IGBcIiR7cm9sZX1cImA7XG4gICAgICAgIH0pO1xuICAgICAgICByb2xlc1ZhciA9IGBbJHtyb2xlc1Zhcn1dYDtcbiAgICAgICAgcmV0dXJuIHJvbGVzVmFyO1xuICAgIH1cblxuICAgIGNhbkRlYWN0aXZhdGUoKSB7XG4gICAgICAgIGlmICh0aGlzLl9kYXRhQ2hhbmdlKSB7XG4gICAgICAgICAgICByZXR1cm4gY29uZmlybSgnWW91IGhhdmUgdW5zYXZlZCBjaGFuZ2VzLiBEbyB5b3Ugd2FudCB0byBsZWF2ZSB0aGlzIHBhZ2UgYW5kIGRpc2NhcmQgeW91ciBjaGFuZ2VzIG9yIHN0YXkgb24gdGhpcyBwYWdlPycpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBlbnRpdHlVcGRhdGVkKCkge1xuICAgICAgICAvL25vLW9wXG4gICAgfVxuXG4gICAgZ2V0Um9sZUF0dHJpYnV0ZXModHlwZTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnppdGlTZXJ2aWNlLmdldCh0eXBlLCB7fSwgW10pLnRoZW4oKHJlc3VsdHMpID0+IHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHRzLmRhdGE7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|