ngx-histaff-alpha 1.2.4 → 1.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/app/root/sys-function-url-mapper/sys-function-url-mapper.component.mjs +13 -10
- package/esm2022/lib/app/services/app-initialization.service.mjs +32 -29
- package/fesm2022/ngx-histaff-alpha.mjs +71 -67
- package/fesm2022/ngx-histaff-alpha.mjs.map +1 -1
- package/lib/app/root/sys-function-url-mapper/sys-function-url-mapper.component.d.ts +3 -1
- package/lib/app/services/app-initialization.service.d.ts +3 -1
- package/package.json +1 -1
|
@@ -17,11 +17,12 @@ import * as i5 from "../../services/app.service";
|
|
|
17
17
|
import * as i6 from "../../services/routing.service";
|
|
18
18
|
import * as i7 from "../../services/multi-language.service";
|
|
19
19
|
import * as i8 from "../../services/navigator.service";
|
|
20
|
-
import * as i9 from "
|
|
21
|
-
import * as i10 from "
|
|
22
|
-
import * as i11 from "../../libraries/
|
|
20
|
+
import * as i9 from "../../services/grpc.service";
|
|
21
|
+
import * as i10 from "@angular/common";
|
|
22
|
+
import * as i11 from "../../libraries/alert/alert.service";
|
|
23
|
+
import * as i12 from "../../libraries/services/string.service";
|
|
23
24
|
export class SysFunctionUrlMapperComponent extends BaseEditComponent {
|
|
24
|
-
constructor(dialogService, fncService, router, coreFormService, appService, routingService, mls, navigatorService, location, alertService, stringService) {
|
|
25
|
+
constructor(dialogService, fncService, router, coreFormService, appService, routingService, mls, navigatorService, grpcService, location, alertService, stringService) {
|
|
25
26
|
super(dialogService);
|
|
26
27
|
this.dialogService = dialogService;
|
|
27
28
|
this.fncService = fncService;
|
|
@@ -31,6 +32,7 @@ export class SysFunctionUrlMapperComponent extends BaseEditComponent {
|
|
|
31
32
|
this.routingService = routingService;
|
|
32
33
|
this.mls = mls;
|
|
33
34
|
this.navigatorService = navigatorService;
|
|
35
|
+
this.grpcService = grpcService;
|
|
34
36
|
this.location = location;
|
|
35
37
|
this.alertService = alertService;
|
|
36
38
|
this.stringService = stringService;
|
|
@@ -544,11 +546,12 @@ export class SysFunctionUrlMapperComponent extends BaseEditComponent {
|
|
|
544
546
|
}
|
|
545
547
|
}
|
|
546
548
|
reloadFunctions() {
|
|
547
|
-
this.subscriptions.push(this.routingService.
|
|
549
|
+
this.subscriptions.push(this.routingService.readAllFunctionWithAllActions().subscribe(x => {
|
|
548
550
|
if (x.ok && x.status === 200) {
|
|
549
551
|
const body = x.body;
|
|
550
552
|
if (body.statusCode === 200) {
|
|
551
|
-
this.
|
|
553
|
+
const innerBody = this.grpcService.convertToCamelCase(JSON.parse(body.innerBody));
|
|
554
|
+
this.routingService.fullFunctions$.next(innerBody);
|
|
552
555
|
this.location.back();
|
|
553
556
|
}
|
|
554
557
|
}
|
|
@@ -596,8 +599,8 @@ export class SysFunctionUrlMapperComponent extends BaseEditComponent {
|
|
|
596
599
|
ngOnDestroy() {
|
|
597
600
|
this.subscriptions.map(x => x?.unsubscribe());
|
|
598
601
|
}
|
|
599
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: SysFunctionUrlMapperComponent, deps: [{ token: i1.DialogService }, { token: i2.FunctionEditService }, { token: i3.Router }, { token: i4.CoreFormService }, { token: i5.AppService }, { token: i6.RoutingService }, { token: i7.MultiLanguageService }, { token: i8.NavigatorService }, { token: i9.
|
|
600
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: SysFunctionUrlMapperComponent, isStandalone: true, selector: "app-sys-function-url-mapper", usesInheritance: true, ngImport: i0, template: "<core-page-edit *ngIf=\"!!sections.length\" [width]=\"1000\" [captionCode]=\"captionCode\" [sections]=\"sections\" [crud]=\"crud\"\r\n [entityTable]=\"entityTable\" (onFormCreated)=\"onFormCreated($event)\"\r\n (onInitialValueStringReady)=\"onFormReinit($event)\"\r\n [autoSubmitLogicOff]=\"true\"\r\n [mixedMode]=\"true\"\r\n [checkError$]=\"checkError$\"\r\n (submitLogic)=\"onSubmit($event)\"\r\n ></core-page-edit>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type:
|
|
602
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: SysFunctionUrlMapperComponent, deps: [{ token: i1.DialogService }, { token: i2.FunctionEditService }, { token: i3.Router }, { token: i4.CoreFormService }, { token: i5.AppService }, { token: i6.RoutingService }, { token: i7.MultiLanguageService }, { token: i8.NavigatorService }, { token: i9.GrpcService }, { token: i10.Location }, { token: i11.AlertService }, { token: i12.StringService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
603
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: SysFunctionUrlMapperComponent, isStandalone: true, selector: "app-sys-function-url-mapper", usesInheritance: true, ngImport: i0, template: "<core-page-edit *ngIf=\"!!sections.length\" [width]=\"1000\" [captionCode]=\"captionCode\" [sections]=\"sections\" [crud]=\"crud\"\r\n [entityTable]=\"entityTable\" (onFormCreated)=\"onFormCreated($event)\"\r\n (onInitialValueStringReady)=\"onFormReinit($event)\"\r\n [autoSubmitLogicOff]=\"true\"\r\n [mixedMode]=\"true\"\r\n [checkError$]=\"checkError$\"\r\n (submitLogic)=\"onSubmit($event)\"\r\n ></core-page-edit>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: CorePageEditComponent, selector: "core-page-edit", inputs: ["stayAfterSubmit", "width", "entityTable", "hasIdOfStringType", "captionCode", "leftInputSections", "leftInputSectionsFlexSize", "sections", "normalMode", "bottomTemplateRef", "autoGetByIdOff", "autoSubmitLogicOff", "autoCancelLogicOff", "customFormButtonItems", "mixedMode", "checkError$", "showSaveButton", "disableSaveButton", "crud", "entityUniqueIndexs"], outputs: ["submitLogic", "onFormCreated", "onSubmitSuccess", "onButtonClick", "cancelLogic", "onInitialValueStringReady"] }] }); }
|
|
601
604
|
}
|
|
602
605
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: SysFunctionUrlMapperComponent, decorators: [{
|
|
603
606
|
type: Component,
|
|
@@ -605,5 +608,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
605
608
|
CommonModule,
|
|
606
609
|
CorePageEditComponent,
|
|
607
610
|
], template: "<core-page-edit *ngIf=\"!!sections.length\" [width]=\"1000\" [captionCode]=\"captionCode\" [sections]=\"sections\" [crud]=\"crud\"\r\n [entityTable]=\"entityTable\" (onFormCreated)=\"onFormCreated($event)\"\r\n (onInitialValueStringReady)=\"onFormReinit($event)\"\r\n [autoSubmitLogicOff]=\"true\"\r\n [mixedMode]=\"true\"\r\n [checkError$]=\"checkError$\"\r\n (submitLogic)=\"onSubmit($event)\"\r\n ></core-page-edit>" }]
|
|
608
|
-
}], ctorParameters: () => [{ type: i1.DialogService }, { type: i2.FunctionEditService }, { type: i3.Router }, { type: i4.CoreFormService }, { type: i5.AppService }, { type: i6.RoutingService }, { type: i7.MultiLanguageService }, { type: i8.NavigatorService }, { type: i9.
|
|
609
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzLWZ1bmN0aW9uLXVybC1tYXBwZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvcm9vdC9zeXMtZnVuY3Rpb24tdXJsLW1hcHBlci9zeXMtZnVuY3Rpb24tdXJsLW1hcHBlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9yb290L3N5cy1mdW5jdGlvbi11cmwtbWFwcGVyL3N5cy1mdW5jdGlvbi11cmwtbWFwcGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBMEIsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEUsT0FBTyxFQUFFLGVBQWUsRUFBZ0Isb0JBQW9CLEVBQUUsTUFBTSxFQUFPLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seURBQXlELENBQUM7QUFHNUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFJMUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTdDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBWTNFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQVksTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVloRyxNQUFNLE9BQU8sNkJBQThCLFNBQVEsaUJBQWlCO0lBc1Rs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cG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCwgemlwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEJhc2VFZGl0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbGlicmFyaWVzL2Jhc2UtZWRpdC9iYXNlLWVkaXQvYmFzZS1lZGl0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IElOYXZpZ2F0b3JJdGVtIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JTmF2aWdhdG9ySXRlbSc7XHJcbmltcG9ydCB7IElDb3JlRHJvcGRvd25PcHRpb24gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lDb3JlRHJvcGRvd25PcHRpb24nO1xyXG5pbXBvcnQgeyBFbnVtVHJhbnNsYXRlS2V5IH0gZnJvbSBcImFscGhhLWdsb2JhbC1jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgSUNvcmVQYWdlRWRpdENSVUQgfSBmcm9tICcuLi8uLi9saWJyYXJpZXMvY29yZS1wYWdlLWVkaXQvSUNvcmVQYWdlRWRpdENSVUQnO1xyXG5pbXBvcnQgeyBJQ29yZVRhYmxlQ29sdW1uSXRlbSB9IGZyb20gJy4uLy4uL2xpYnJhcmllcy9jb3JlLXRhYmxlL0lDb3JlVGFibGVDb2x1bW5JdGVtJztcclxuaW1wb3J0IHsgSUNvcmVQYWdlTGlzdEFwaURlZmluaXRpb24gfSBmcm9tICcuLi8uLi9saWJyYXJpZXMvY29yZS1wYWdlLWxpc3QvY29yZS1wYWdlLWxpc3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgYXBpIH0gZnJvbSBcImFscGhhLWdsb2JhbC1jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgSUNvcmVGb3JtU2VjdGlvbiwgSVZhbGlkYXRvciB9IGZyb20gJy4uLy4uL2xpYnJhcmllcy9jb3JlLWZvcm0vY29yZS1mb3JtL2VudW0taW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IEVudW1Gb3JtQmFzZUNvbnRvbFR5cGUgfSBmcm9tICcuLi8uLi9lbnVtL0VudW1Gb3JtQmFzZUNvbnRvbFR5cGUnO1xyXG5pbXBvcnQgeyBJQ29yZVJhZGlvT3B0aW9uIH0gZnJvbSAnLi4vLi4vbGlicmFyaWVzL2NvcmUtcmFkaW8tZ3JvdXAvY29yZS1yYWRpby1ncm91cC9jb3JlLXJhZGlvLWdyb3VwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IElGb3JtYXRlZFJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JRm9ybWF0ZWRSZXNwb25zZSc7XHJcbmltcG9ydCB7IENvcmVGb3JtU2VydmljZSB9IGZyb20gJy4uLy4uL2xpYnJhcmllcy9jb3JlLWZvcm0vY29yZS1mb3JtLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBcHBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXBwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSb3V0aW5nU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3JvdXRpbmcuc2VydmljZSc7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uLy4uL2xpYnJhcmllcy9hbGVydC9hbGVydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRnVuY3Rpb25FZGl0U2VydmljZSB9IGZyb20gJy4vZnVuY3Rpb24tZWRpdC5zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbXVsdGktbGFuZ3VhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IE5hdmlnYXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9uYXZpZ2F0b3Iuc2VydmljZSc7XHJcbmltcG9ydCB7IFN0cmluZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9saWJyYXJpZXMvc2VydmljZXMvc3RyaW5nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9hbGVydE9wdGlvbnMnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29yZVBhZ2VFZGl0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbGlicmFyaWVzL2NvcmUtcGFnZS1lZGl0L2NvcmUtcGFnZS1lZGl0LmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1zeXMtZnVuY3Rpb24tdXJsLW1hcHBlcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBDb3JlUGFnZUVkaXRDb21wb25lbnQsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vc3lzLWZ1bmN0aW9uLXVybC1tYXBwZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3N5cy1mdW5jdGlvbi11cmwtbWFwcGVyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFN5c0Z1bmN0aW9uVXJsTWFwcGVyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUVkaXRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBwZW5kaW5nVXJsITogc3RyaW5nO1xyXG4gIGxhc3RDbGlja2VkTWVudUl0ZW0hOiBJTmF2aWdhdG9ySXRlbTtcclxuICBsYXN0Q2xpY2tlZE1lbnVJdGVtU3RyaW5nITogc3RyaW5nO1xyXG5cclxuICAvKiBQcm9wZXJ0aWVzIHRvIGJlIHBhc3NlZCBpbnRvIGNvcmUtcGFnZS1lZGl0ICovXHJcbiAgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG92ZXJyaWRlIGVudGl0eVRhYmxlID0gXCJTWVNfRlVOQ1RJT05cIjtcclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG4gIGdyb3VwT3B0aW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElDb3JlRHJvcGRvd25PcHRpb25bXT4oW10pO1xyXG4gIG1vZHVsZU9wdGlvbnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJQ29yZURyb3Bkb3duT3B0aW9uW10+KFtdKTtcclxuICBjYXB0aW9uQ29kZSE6IEVudW1UcmFuc2xhdGVLZXk7XHJcbiAgY3J1ZCE6IElDb3JlUGFnZUVkaXRDUlVEO1xyXG5cclxuICBjaGVja0Vycm9yJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICBwZW5kaW5nVXBkYXRlUGF5bG9hZCE6IGFueTtcclxuICBwZW5kaW5nTGFzdENsaWNrZWRNZW51SXRlbVN0cmluZyE6IHN0cmluZztcclxuICBwZW5kaW5nVXBkYXRlRnVuY3Rpb25JZFRvTWVudUl0ZW0hOiBib29sZWFuO1xyXG5cclxuICBkaWFsb2dJbnN0YW5jZU51bWJlciE6IG51bWJlcjtcclxuXHJcbiAgZnVuY3Rpb25NY2NDb2x1bW5zOiBJQ29yZVRhYmxlQ29sdW1uSXRlbVtdID0gW1xyXG4gICAge1xyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX0NPTU1PTl9JRCxcclxuICAgICAgZmllbGQ6ICdpZCcsXHJcbiAgICAgIGhpZGRlbjogdHJ1ZSxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHdpZHRoOiAzMCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fU1lTX0ZVTkNUSU9OX01PRFVMRV9OQU1FLFxyXG4gICAgICBmaWVsZDogJ21vZHVsZU5hbWUnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgd2lkdGg6IDI1MFxyXG4gICAgfSxcclxuICAgIC8vIHtcclxuICAgIC8vICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9TWVNfRlVOQ1RJT05fR1JPVVBfTkFNRSxcclxuICAgIC8vICAgZmllbGQ6ICdncm91cE5hbWUnLFxyXG4gICAgLy8gICB0eXBlOiAnc3RyaW5nJyxcclxuICAgIC8vICAgYWxpZ246ICdsZWZ0JyxcclxuICAgIC8vICAgd2lkdGg6IDI1MFxyXG4gICAgLy8gfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9TWVNfRlVOQ1RJT05fQ09ERSxcclxuICAgICAgZmllbGQ6ICdjb2RlJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHdpZHRoOiAyMDBcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fU1lTX0ZVTkNUSU9OX05BTUUsXHJcbiAgICAgIGZpZWxkOiAnbmFtZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMjUwLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9TWVNfRlVOQ1RJT05fUEFUSCxcclxuICAgICAgZmllbGQ6ICdwYXRoJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHdpZHRoOiAyNTAsXHJcbiAgICB9LFxyXG4gICAgLy8ge1xyXG4gICAgLy8gICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX1NZU19GVU5DVElPTl9TVEFUVVMsXHJcbiAgICAvLyAgIGZpZWxkOiAnc3RhdHVzJyxcclxuICAgIC8vICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAvLyAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAvLyAgIHdpZHRoOiAyMDBcclxuICAgIC8vIH0sXHJcbiAgXTtcclxuXHJcbiAgZnVuY3Rpb25NY2NBcGlEZWZpbml0aW9uOiBJQ29yZVBhZ2VMaXN0QXBpRGVmaW5pdGlvbiA9IHtcclxuICAgIHF1ZXJ5TGlzdFJlbGF0aXZlUGF0aDogYXBpLlNZU19GVU5DVElPTl9RVUVSWV9MSVNULFxyXG4gIH1cclxuXHJcbiAgZnVuY3Rpb25NY2NTZWxlY3RlZFJvdyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4oe30pO1xyXG5cclxuICBtb2R1bGVWYWxpZGF0b3JzOiBJVmFsaWRhdG9yW10gPSBbXHJcbiAgICB7XHJcbiAgICAgIG5hbWU6ICdyZXF1aXJlZCcsXHJcbiAgICAgIHZhbGlkYXRvcjogVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgZXJyb3JNZXNzYWdlOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0ZPUk1fQ09OVFJPTF9FUlJPUl9SRVFVSVJFRCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIG5hbWU6ICdtaW5MZW5ndGgnLFxyXG4gICAgICB2YWxpZGF0b3I6IFZhbGlkYXRvcnMubWluKDEpLFxyXG4gICAgICBlcnJvck1lc3NhZ2U6IEVudW1UcmFuc2xhdGVLZXkuVUlfRk9STV9DT05UUk9MX0VSUk9SX1JFUVVJUkVELFxyXG4gICAgfVxyXG4gIF1cclxuXHJcbiAgY29kZVZhbGlkYXRvcnM6IElWYWxpZGF0b3JbXSA9IFtcclxuICAgIHtcclxuICAgICAgbmFtZTogJ3JlcXVpcmVkJyxcclxuICAgICAgdmFsaWRhdG9yOiBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICBlcnJvck1lc3NhZ2U6IEVudW1UcmFuc2xhdGVLZXkuVUlfRk9STV9DT05UUk9MX0VSUk9SX1JFUVVJUkVELFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgbmFtZTogJ21pbkxlbmd0aCcsXHJcbiAgICAgIHZhbGlkYXRvcjogVmFsaWRhdG9ycy5taW5MZW5ndGgoMSksXHJcbiAgICAgIGVycm9yTWVzc2FnZTogRW51bVRyYW5zbGF0ZUtleS5VSV9GT1JNX0NPTlRST0xfRVJST1JfTUlOX0xFTkdUSCxcclxuICAgIH1cclxuICBdXHJcblxyXG4gIG5hbWVWYWxpZGF0b3JzOiBJVmFsaWRhdG9yW10gPSBbXHJcbiAgICB7XHJcbiAgICAgIG5hbWU6ICdyZXF1aXJlZCcsXHJcbiAgICAgIHZhbGlkYXRvcjogVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgZXJyb3JNZXNzYWdlOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0ZPUk1fQ09OVFJPTF9FUlJPUl9SRVFVSVJFRCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIG5hbWU6ICdtaW5MZW5ndGgnLFxyXG4gICAgICB2YWxpZGF0b3I6IFZhbGlkYXRvcnMubWluTGVuZ3RoKDEpLFxyXG4gICAgICBlcnJvck1lc3NhZ2U6IEVudW1UcmFuc2xhdGVLZXkuVUlfRk9STV9DT05UUk9MX0VSUk9SX01JTl9MRU5HVEgsXHJcbiAgICB9XHJcbiAgXVxyXG5cclxuICBmdW5jdGlvbklkVmFsaWRhdG9yczogSVZhbGlkYXRvcltdID0gW1xyXG4gICAge1xyXG4gICAgICBuYW1lOiAncmVxdWlyZWQnLFxyXG4gICAgICB2YWxpZGF0b3I6IFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgIGVycm9yTWVzc2FnZTogRW51bVRyYW5zbGF0ZUtleS5VSV9GT1JNX0NPTlRST0xfRVJST1JfUkVRVUlSRUQsXHJcbiAgICB9LFxyXG4gIF1cclxuXHJcbiAgbmF0aXZlTW9kdWxlVmFsaWRhdG9yITogVmFsaWRhdG9yRm47XHJcbiAgbmF0aXZlQ29kZVZhbGlkYXRvciE6IFZhbGlkYXRvckZuO1xyXG4gIG5hdGl2ZU5hbWVWYWxpZGF0b3IhOiBWYWxpZGF0b3JGbjtcclxuICBuYXRpdmVGdW5jdGlvbklkVmFsaWRhdG9yITogVmFsaWRhdG9yRm47XHJcblxyXG4gIHNlY3Rpb25zOiBJQ29yZUZvcm1TZWN0aW9uW10gPVxyXG4gICAgW1xyXG4gICAgICB7XHJcbiAgICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5ST09UX01BUFBFUl9NT0RFX0ZPUl9USEVfVVJMLFxyXG4gICAgICAgIHJvd3M6IFtcclxuICAgICAgICAgIFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGZsZXhTaXplOiA2LFxyXG4gICAgICAgICAgICAgIGxhYmVsOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0NPTU1PTl9FTVBUWV9TVFJJTkcsXHJcbiAgICAgICAgICAgICAgZmllbGQ6ICdlZGl0TW9kZScsIC8vIGhlbHBlclxyXG4gICAgICAgICAgICAgIHZhbHVlOiAnQ1JFQVRFJyxcclxuICAgICAgICAgICAgICBjb250cm9sVHlwZTogRW51bUZvcm1CYXNlQ29udG9sVHlwZS5SQURJT0dST1VQLFxyXG4gICAgICAgICAgICAgIHZlcnRpY2FsTW9kZTogdHJ1ZSxcclxuICAgICAgICAgICAgICByYWRpb0dyb3VwT3B0aW9ucyQ6IG5ldyBCZWhhdmlvclN1YmplY3Q8SUNvcmVSYWRpb09wdGlvbltdPihbXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiAnQ1JFQVRFJyxcclxuICAgICAgICAgICAgICAgICAgdGV4dDogRW51bVRyYW5zbGF0ZUtleS5ST09UX01BUFBFUl9NT0RFX0ZPUl9USEVfVVJMX0NSRUFURV9ORVdfRlVOQ1RJT05cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiAnVVBEQVRFJyxcclxuICAgICAgICAgICAgICAgICAgdGV4dDogRW51bVRyYW5zbGF0ZUtleS5ST09UX01BUFBFUl9NT0RFX0ZPUl9USEVfVVJMX1VQREFURV9FWElTVElOR19GVU5DVElPTlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgdmFsdWU6ICdBRERfVE9fSUdOT1JFJyxcclxuICAgICAgICAgICAgICAgICAgdGV4dDogRW51bVRyYW5zbGF0ZUtleS5ST09UX01BUFBFUl9NT0RFX0ZPUl9USEVfVVJMX0FERF9QQVRIX1RPX0lHTk9SRURfRlVOQ1RJT05cclxuICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgIF0pLFxyXG4gICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgXVxyXG4gICAgICAgIF1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuUk9PVF9NQVBQRVJfTU9ERV9GT1JfVEhFX1VSTF9DUkVBVEVfTkVXX0ZVTkNUSU9OLFxyXG4gICAgICAgIHJvd3M6IFtcclxuICAgICAgICAgIFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGZsZXhTaXplOiA2LFxyXG4gICAgICAgICAgICAgIGxhYmVsOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX1NZU19GVU5DVElPTl9NT0RVTEVfTkFNRSxcclxuICAgICAgICAgICAgICBmaWVsZDogJ21vZHVsZUlkJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcbiAgICAgICAgICAgICAgY29udHJvbFR5cGU6IEVudW1Gb3JtQmFzZUNvbnRvbFR5cGUuRFJPUERPV04sXHJcbiAgICAgICAgICAgICAgZHJvcGRvd25PcHRpb25zJDogdGhpcy5tb2R1bGVPcHRpb25zJCxcclxuICAgICAgICAgICAgICBnZXRCeUlkT2JqZWN0JDogbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpLFxyXG4gICAgICAgICAgICAgIGdldEJ5SWRBcGk6IGFwaS5TWVNfTU9EVUxFX1JFQUQsXHJcbiAgICAgICAgICAgICAgc2hvd25Gcm9tOiAnbmFtZScsXHJcbiAgICAgICAgICAgICAgdHlwZTogJ251bWJlcicsXHJcbiAgICAgICAgICAgICAgdmFsaWRhdG9yczogdGhpcy5tb2R1bGVWYWxpZGF0b3JzLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgZmxleFNpemU6IDYsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fU1lTX0ZVTkNUSU9OX0dST1VQX05BTUUsXHJcbiAgICAgICAgICAgICAgZmllbGQ6ICdncm91cElkJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcbiAgICAgICAgICAgICAgY29udHJvbFR5cGU6IEVudW1Gb3JtQmFzZUNvbnRvbFR5cGUuRFJPUERPV04sXHJcbiAgICAgICAgICAgICAgZHJvcGRvd25PcHRpb25zJDogdGhpcy5ncm91cE9wdGlvbnMkLFxyXG4gICAgICAgICAgICAgIGdldEJ5SWRPYmplY3QkOiBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCksXHJcbiAgICAgICAgICAgICAgZ2V0QnlJZEFwaTogYXBpLlNZU19GVU5DVElPTl9HUk9VUF9SRUFELFxyXG4gICAgICAgICAgICAgIHNob3duRnJvbTogJ25hbWUnLFxyXG4gICAgICAgICAgICAgIHR5cGU6ICdudW1iZXInLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgXSxcclxuICAgICAgICAgIFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGZsZXhTaXplOiAwLFxyXG4gICAgICAgICAgICAgIGxhYmVsOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX0NPTU1PTl9JRCxcclxuICAgICAgICAgICAgICBmaWVsZDogJ2lkJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcbiAgICAgICAgICAgICAgY29udHJvbFR5cGU6IEVudW1Gb3JtQmFzZUNvbnRvbFR5cGUuVEVYVEJPWCxcclxuICAgICAgICAgICAgICByZWFkb25seTogdHJ1ZSxcclxuICAgICAgICAgICAgICBoaWRkZW46IHRydWUsXHJcbiAgICAgICAgICAgICAgdHlwZTogJ3RleHQnXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBmbGV4U2l6ZTogNixcclxuICAgICAgICAgICAgICBsYWJlbDogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9TWVNfRlVOQ1RJT05fQ09ERSxcclxuICAgICAgICAgICAgICBmaWVsZDogJ2NvZGUnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuICAgICAgICAgICAgICBjb250cm9sVHlwZTogRW51bUZvcm1CYXNlQ29udG9sVHlwZS5URVhUQk9YLFxyXG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcclxuICAgICAgICAgICAgICB2YWxpZGF0b3JzOiB0aGlzLmNvZGVWYWxpZGF0b3JzXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBmbGV4U2l6ZTogNixcclxuICAgICAgICAgICAgICBsYWJlbDogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9TWVNfRlVOQ1RJT05fTkFNRSxcclxuICAgICAgICAgICAgICBmaWVsZDogJ25hbWUnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuICAgICAgICAgICAgICBjb250cm9sVHlwZTogRW51bUZvcm1CYXNlQ29udG9sVHlwZS5URVhUQk9YLFxyXG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcclxuICAgICAgICAgICAgICB2YWxpZGF0b3JzOiB0aGlzLm5hbWVWYWxpZGF0b3JzXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgIF1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuUk9PVF9NQVBQRVJfTU9ERV9GT1JfVEhFX1VSTF9VUERBVEVfRVhJU1RJTkdfRlVOQ1RJT04sXHJcbiAgICAgICAgaGlkZGVuOiB0cnVlLFxyXG4gICAgICAgIHJvd3M6IFtcclxuICAgICAgICAgIFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGZsZXhTaXplOiAxMixcclxuICAgICAgICAgICAgICBsYWJlbDogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9TWVNfTUVOVV9TWVNfRlVOQ1RJT04sXHJcbiAgICAgICAgICAgICAgZmllbGQ6ICdmdW5jdGlvbklkJywgLy8gaGVscGVyXHJcbiAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXHJcbiAgICAgICAgICAgICAgY29udHJvbFR5cGU6IEVudW1Gb3JtQmFzZUNvbnRvbFR5cGUuTUNDLFxyXG4gICAgICAgICAgICAgIGNvbHVtbnM6IHRoaXMuZnVuY3Rpb25NY2NDb2x1bW5zLFxyXG4gICAgICAgICAgICAgIHNob3duRnJvbTogJ25hbWUnLFxyXG4gICAgICAgICAgICAgIGFwaURlZmluaXRpb246IHRoaXMuZnVuY3Rpb25NY2NBcGlEZWZpbml0aW9uLFxyXG4gICAgICAgICAgICAgIGdldEJ5SWRBcGk6IGFwaS5TWVNfRlVOQ1RJT05fUkVBRCxcclxuICAgICAgICAgICAgICBzZWxlY3RlZFJvdyQ6IHRoaXMuZnVuY3Rpb25NY2NTZWxlY3RlZFJvdyQsXHJcbiAgICAgICAgICAgICAgdHlwZTogJ251bWJlcicsXHJcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgdmFsaWRhdG9yczogdGhpcy5mdW5jdGlvbklkVmFsaWRhdG9yc1xyXG4gICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgIF1cclxuICAgICAgICBdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlJPT1RfTUFQUEVSX1RIRV9VUkwsXHJcbiAgICAgICAgcm93czogW1xyXG4gICAgICAgICAgW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgZmxleFNpemU6IDEyLFxyXG4gICAgICAgICAgICAgIGxhYmVsOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX1NZU19GVU5DVElPTl9QQVRILFxyXG4gICAgICAgICAgICAgIGZpZWxkOiAncGF0aCcsXHJcbiAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG4gICAgICAgICAgICAgIGNvbnRyb2xUeXBlOiBFbnVtRm9ybUJhc2VDb250b2xUeXBlLlRFWFRCT1gsXHJcbiAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgICAgW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgZmxleFNpemU6IDYsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fU1lTX0ZVTkNUSU9OX1BBVEhfRlVMTF9NQVRDSCxcclxuICAgICAgICAgICAgICBmaWVsZDogJ3BhdGhGdWxsTWF0Y2gnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiB0cnVlLFxyXG4gICAgICAgICAgICAgIGNvbnRyb2xUeXBlOiBFbnVtRm9ybUJhc2VDb250b2xUeXBlLkNIRUNLQk9YLFxyXG4gICAgICAgICAgICAgIHR5cGU6ICdib29sZWFuJyxcclxuICAgICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIF1cclxuXHJcbiAgICAgICAgXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5ST09UX01BUFBFUl9MQVNUX0NMSUNLRURfTUVOVV9JVEVNX1NUUklORyxcclxuICAgICAgICByb3dzOiBbXHJcbiAgICAgICAgICBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBmbGV4U2l6ZTogMTIsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IEVudW1UcmFuc2xhdGVLZXkuVUlfQ09NTU9OX0VNUFRZX1NUUklORyxcclxuICAgICAgICAgICAgICBmaWVsZDogJ2xhc3RDbGlja2VkTWVudUl0ZW1TdHJpbmcnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuICAgICAgICAgICAgICBjb250cm9sVHlwZTogRW51bUZvcm1CYXNlQ29udG9sVHlwZS5URVhUQk9YLFxyXG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcclxuICAgICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgICAgW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgZmxleFNpemU6IDYsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IEVudW1UcmFuc2xhdGVLZXkuUk9PVF9NQVBQRVJfVVBEQVRFX0ZVTkNUSU9OX0lEX0ZPUl9USEVfTUVOVV9JVEVNLFxyXG4gICAgICAgICAgICAgIGZpZWxkOiAndXBkYXRlRnVuY3Rpb25JZFRvTWVudUl0ZW0nLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICAgICAgICBjb250cm9sVHlwZTogRW51bUZvcm1CYXNlQ29udG9sVHlwZS5DSEVDS0JPWCxcclxuICAgICAgICAgICAgICB0eXBlOiAnYm9vbGVhbicsXHJcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICBdXHJcblxyXG4gICAgICAgIF1cclxuICAgICAgfSxcclxuICAgIF07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIG92ZXJyaWRlIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZuY1NlcnZpY2U6IEZ1bmN0aW9uRWRpdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBjb3JlRm9ybVNlcnZpY2U6IENvcmVGb3JtU2VydmljZSxcclxuICAgIHByaXZhdGUgYXBwU2VydmljZTogQXBwU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGluZ1NlcnZpY2U6IFJvdXRpbmdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBuYXZpZ2F0b3JTZXJ2aWNlOiBOYXZpZ2F0b3JTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb24sXHJcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzdHJpbmdTZXJ2aWNlOiBTdHJpbmdTZXJ2aWNlXHJcbiAgKSB7XHJcblxyXG4gICAgc3VwZXIoZGlhbG9nU2VydmljZSk7XHJcblxyXG4gICAgdGhpcy5wZW5kaW5nVXJsID0gdGhpcy5yb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb24oKT8uZXh0cmFzLnN0YXRlIVsndXJsJ107XHJcbiAgICB0aGlzLmxhc3RDbGlja2VkTWVudUl0ZW0gPSB0aGlzLnJvdXRlci5nZXRDdXJyZW50TmF2aWdhdGlvbigpPy5leHRyYXMuc3RhdGUhWydsYXN0Q2xpY2tlZE1lbnVJdGVtJ107XHJcbiAgICB0aGlzLmxhc3RDbGlja2VkTWVudUl0ZW1TdHJpbmcgPSB0aGlzLnJvdXRlci5nZXRDdXJyZW50TmF2aWdhdGlvbigpPy5leHRyYXMuc3RhdGUhWydsYXN0Q2xpY2tlZE1lbnVJdGVtU3RyaW5nJ107XHJcblxyXG4gICAgdGhpcy5jYXB0aW9uQ29kZSA9IEVudW1UcmFuc2xhdGVLZXkuVUlfQ09NUE9ORU5UX1RJVExFX1NZU19GVU5DVElPTl9FRElUO1xyXG5cclxuICAgIHRoaXMuY3J1ZCA9IHtcclxuICAgICAgYzogYXBpLlNZU19GVU5DVElPTl9DUkVBVEUsXHJcbiAgICAgIHI6IGFwaS5TWVNfRlVOQ1RJT05fUkVBRCxcclxuICAgICAgdTogYXBpLlNZU19GVU5DVElPTl9VUERBVEUsXHJcbiAgICAgIGQ6IGFwaS5TWVNfRlVOQ1RJT05fREVMRVRFLFxyXG4gICAgfTtcclxuXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLmNvcmVGb3JtU2VydmljZS5nZXRGb3JtQmFzZUNvbnRyb2xCeU5hbWUodGhpcy5zZWN0aW9ucywgJ3BhdGgnKSEudmFsdWUgPSB0aGlzLnBlbmRpbmdVcmw7XHJcbiAgICB0aGlzLmNvcmVGb3JtU2VydmljZS5nZXRGb3JtQmFzZUNvbnRyb2xCeU5hbWUodGhpcy5zZWN0aW9ucywgJ2xhc3RDbGlja2VkTWVudUl0ZW1TdHJpbmcnKSEudmFsdWUgPSB0aGlzLmxhc3RDbGlja2VkTWVudUl0ZW1TdHJpbmc7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5kaWFsb2dDb25maXJtZWQkLnBpcGUoXHJcbiAgICAgICAgZmlsdGVyKHggPT4gISF4Py5jb25maXJtZWQgJiYgISF0aGlzLnBlbmRpbmdVcGRhdGVQYXlsb2FkICYmIHguaW5zdGFuY2VOdW1iZXIgPT09IHRoaXMuZGlhbG9nSW5zdGFuY2VOdW1iZXIpXHJcbiAgICAgICkuc3Vic2NyaWJlKF8gPT4ge1xyXG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5yZXNldFNlcnZpY2UoKVxyXG4gICAgICAgIHRoaXMudXBkYXRlKHRoaXMucGVuZGluZ1VwZGF0ZVBheWxvYWQsIHRoaXMucGVuZGluZ0xhc3RDbGlja2VkTWVudUl0ZW1TdHJpbmcsIHRoaXMucGVuZGluZ1VwZGF0ZUZ1bmN0aW9uSWRUb01lbnVJdGVtKTtcclxuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UucmVzZXRTZXJ2aWNlKClcclxuICAgICAgfSlcclxuICAgIClcclxuXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgemlwKFtcclxuICAgICAgICAgIHRoaXMuZm5jU2VydmljZS5nZXRNb2R1bGVzKCksXHJcbiAgICAgICAgICB0aGlzLmZuY1NlcnZpY2UuZ2V0RnVuY0dyb3VwcygpXHJcbiAgICAgICAgXSkuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICBpZiAoeFswXS5vayAmJiB4WzBdLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGJvZHk6IElGb3JtYXRlZFJlc3BvbnNlID0geFswXS5ib2R5XHJcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbnM6IHsgdmFsdWU6IG51bWJlcjsgdGV4dDogc3RyaW5nOyB9W10gPSBbXTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coYm9keS5pbm5lckJvZHkpXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGJvZHkuaW5uZXJCb2R5Lmxlbmd0aClcclxuICAgICAgICAgICAgdGhpcy5zdHJpbmdTZXJ2aWNlLnNvcnQoYm9keS5pbm5lckJvZHksICduYW1lJyk7XHJcbiAgICAgICAgICAgIGJvZHkuaW5uZXJCb2R5Lm1hcCgoZzogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgb3B0aW9ucy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBnLmlkLFxyXG4gICAgICAgICAgICAgICAgdGV4dDogZy5uYW1lXHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgdGhpcy5tb2R1bGVPcHRpb25zJC5uZXh0KG9wdGlvbnMpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoeFsxXS5vayAmJiB4WzFdLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGJvZHk6IElGb3JtYXRlZFJlc3BvbnNlID0geFsxXS5ib2R5XHJcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbnM6IHsgdmFsdWU6IG51bWJlcjsgdGV4dDogc3RyaW5nOyB9W10gPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5zdHJpbmdTZXJ2aWNlLnNvcnQoYm9keS5pbm5lckJvZHksICduYW1lJyk7XHJcbiAgICAgICAgICAgIGJvZHkuaW5uZXJCb2R5Lm1hcCgoZzogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgb3B0aW9ucy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBnLmlkLFxyXG4gICAgICAgICAgICAgICAgdGV4dDogZy5uYW1lXHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgdGhpcy5ncm91cE9wdGlvbnMkLm5leHQob3B0aW9ucylcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLyogR0VUIEZvcm1Hcm91cCBJbnN0YW5jZSAqL1xyXG4gIG9uRm9ybUNyZWF0ZWQoZTogRm9ybUdyb3VwKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm0gPSBlO1xyXG5cclxuICAgIGlmICghIXRoaXMubGFzdENsaWNrZWRNZW51SXRlbVN0cmluZykge1xyXG4gICAgICBjb25zdCBtZW51VXJsID0gdGhpcy5sYXN0Q2xpY2tlZE1lbnVJdGVtU3RyaW5nLnNwbGl0KCc9PicpWzJdLnJlcGxhY2UoJygnLCAnJykucmVwbGFjZSgnKScsICcnKTtcclxuICAgICAgaWYgKG1lbnVVcmwgPT09IHRoaXMucGVuZGluZ1VybCkge1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ3BhdGgnKSEuZGlzYWJsZSgpO1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ3BhdGhGdWxsTWF0Y2gnKSEucGF0Y2hWYWx1ZSh0cnVlKTtcclxuICAgICAgICAvL3RoaXMuZm9ybS5nZXQoJ3BhdGhGdWxsTWF0Y2gnKSEuZGlzYWJsZSgpO1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ3VwZGF0ZUZ1bmN0aW9uSWRUb01lbnVJdGVtJykhLnBhdGNoVmFsdWUodHJ1ZSk7XHJcbiAgICAgICAgLy90aGlzLmZvcm0uZ2V0KCd1cGRhdGVGdW5jdGlvbklkVG9NZW51SXRlbScpIS5kaXNhYmxlKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5mb3JtLmdldCgncGF0aEZ1bGxNYXRjaCcpIS5wYXRjaFZhbHVlKGZhbHNlKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCd1cGRhdGVGdW5jdGlvbklkVG9NZW51SXRlbScpIS5wYXRjaFZhbHVlKGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubmF0aXZlTW9kdWxlVmFsaWRhdG9yID0gdGhpcy5mb3JtLmdldChcIm1vZHVsZUlkXCIpIS52YWxpZGF0b3IhO1xyXG4gICAgdGhpcy5uYXRpdmVDb2RlVmFsaWRhdG9yID0gdGhpcy5mb3JtLmdldChcImNvZGVcIikhLnZhbGlkYXRvciE7XHJcbiAgICB0aGlzLm5hdGl2ZU5hbWVWYWxpZGF0b3IgPSB0aGlzLmZvcm0uZ2V0KFwibmFtZVwiKSEudmFsaWRhdG9yITtcclxuICAgIHRoaXMubmF0aXZlRnVuY3Rpb25JZFZhbGlkYXRvciA9IHRoaXMuZm9ybS5nZXQoXCJmdW5jdGlvbklkXCIpIS52YWxpZGF0b3IhO1xyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmZvcm0uZ2V0KCdmdW5jdGlvbklkJyk/LnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICAgIGZpbHRlcih4ID0+ICEheCksXHJcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgICBzd2l0Y2hNYXAoeCA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5hcHBTZXJ2aWNlLmdldChhcGkuU1lTX0ZVTkNUSU9OX1JFQUQgKyAnP2lkPScgKyB4KVxyXG4gICAgICAgIH0pXHJcbiAgICAgICkuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgIGlmICh4Lm9rICYmIHggPT09IDIwMCkge1xyXG4gICAgICAgICAgY29uc3QgYm9keTogSUZvcm1hdGVkUmVzcG9uc2UgPSB4LmJvZHk7XHJcbiAgICAgICAgICBpZiAoYm9keS5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoYm9keS5pbm5lckJvZHkpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSFcclxuICAgIClcclxuXHJcblxyXG4gICAgdGhpcy5mb3JtLmdldCgnZWRpdE1vZGUnKT8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgY29uc3QgY3JlYXRlUGFydCA9IHRoaXMuc2VjdGlvbnMuZmlsdGVyKHMgPT4gcy5jYXB0aW9uID09PSBFbnVtVHJhbnNsYXRlS2V5LlJPT1RfTUFQUEVSX01PREVfRk9SX1RIRV9VUkxfQ1JFQVRFX05FV19GVU5DVElPTilbMF1cclxuICAgICAgY29uc3QgdXBkYXRlUGFydCA9IHRoaXMuc2VjdGlvbnMuZmlsdGVyKHMgPT4gcy5jYXB0aW9uID09PSBFbnVtVHJhbnNsYXRlS2V5LlJPT1RfTUFQUEVSX01PREVfRk9SX1RIRV9VUkxfVVBEQVRFX0VYSVNUSU5HX0ZVTkNUSU9OKVswXVxyXG4gICAgICBjb25zdCBmdW5jdGlvbmxlc3NQYXJ0ID0gdGhpcy5zZWN0aW9ucy5maWx0ZXIocyA9PiBzLmNhcHRpb24gPT09IEVudW1UcmFuc2xhdGVLZXkuUk9PVF9NQVBQRVJfTU9ERV9GT1JfVEhFX1VSTF9VUERBVEVfRVhJU1RJTkdfRlVOQ1RJT04pWzBdXHJcbiAgICAgIGZ1bmN0aW9ubGVzc1BhcnQucm93cyA9IGZ1bmN0aW9ubGVzc1BhcnQucm93cy5maWx0ZXIociA9PiByLmZpbHRlcihjID0+IGMuZmllbGQgPT09ICdwYXRoJykpXHJcbiAgICAgIGNvbnN0IGJvdHRvbVBhcnQgPSB0aGlzLnNlY3Rpb25zLmZpbHRlcihzID0+IHMuY2FwdGlvbiA9PT0gRW51bVRyYW5zbGF0ZUtleS5ST09UX01BUFBFUl9MQVNUX0NMSUNLRURfTUVOVV9JVEVNX1NUUklORylbMF1cclxuICAgICAgY29uc29sZS5sb2coXCJmdW5jdGlvbmxlc3NQYXJ0XCIsIGZ1bmN0aW9ubGVzc1BhcnQpXHJcbiAgICAgIGlmICh4ID09PSAnQ1JFQVRFJykge1xyXG5cclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KFwibW9kdWxlSWRcIikhLnZhbGlkYXRvciA9IHRoaXMubmF0aXZlTW9kdWxlVmFsaWRhdG9yO1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoXCJjb2RlXCIpIS52YWxpZGF0b3IgPSB0aGlzLm5hdGl2ZUNvZGVWYWxpZGF0b3I7XHJcbiAgICAgICAgdGhpcy5mb3JtLmdldChcIm5hbWVcIikhLnZhbGlkYXRvciA9IHRoaXMubmF0aXZlTmFtZVZhbGlkYXRvcjtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KFwiZnVuY3Rpb25JZFwiKSEuY2xlYXJWYWxpZGF0b3JzKCk7XHJcblxyXG5cclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdmdW5jdGlvbklkJyk/LnBhdGNoVmFsdWUobnVsbCk7XHJcbiAgICAgICAgY3JlYXRlUGFydC5oaWRkZW4gPSBmYWxzZTtcclxuICAgICAgICB1cGRhdGVQYXJ0LmhpZGRlbiA9IHRydWU7XHJcbiAgICAgICAgYm90dG9tUGFydC5oaWRkZW4gPSBmYWxzZTtcclxuXHJcbiAgICAgICAgY3JlYXRlUGFydC5yb3dzLm1hcChyb3cgPT4ge1xyXG4gICAgICAgICAgcm93Lm1hcChjb2x1bW4gPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KGNvbHVtbi5maWVsZCk/LmVuYWJsZSgpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICB9IGVsc2UgaWYgKHggPT09ICdVUERBVEUnKSB7XHJcblxyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoXCJtb2R1bGVJZFwiKSEuY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICAgICAgdGhpcy5mb3JtLmdldChcImNvZGVcIikhLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoXCJuYW1lXCIpIS5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KFwiZnVuY3Rpb25JZFwiKSEudmFsaWRhdG9yID0gdGhpcy5uYXRpdmVGdW5jdGlvbklkVmFsaWRhdG9yO1xyXG5cclxuICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7XHJcbiAgICAgICAgICBpZDogbnVsbCxcclxuICAgICAgICAgIG1vZHVsZUlkOiBudWxsLFxyXG4gICAgICAgICAgZ3JvdXBJZDogbnVsbCxcclxuICAgICAgICAgIGNvZGU6IG51bGwsXHJcbiAgICAgICAgICBuYW1lOiBudWxsLFxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIGNyZWF0ZVBhcnQuaGlkZGVuID0gdHJ1ZTtcclxuICAgICAgICB1cGRhdGVQYXJ0LmhpZGRlbiA9IGZhbHNlO1xyXG4gICAgICAgIGJvdHRvbVBhcnQuaGlkZGVuID0gZmFsc2U7XHJcblxyXG4gICAgICAgIHVwZGF0ZVBhcnQucm93cy5tYXAocm93ID0+IHtcclxuICAgICAgICAgIHJvdy5tYXAoY29sdW1uID0+IHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldChjb2x1bW4uZmllbGQpPy5lbmFibGUoKVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9KVxyXG4gICAgICB9IGVsc2UgaWYgKHggPT09ICdBRERfVE9fSUdOT1JFJykge1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoXCJmdW5jdGlvbklkXCIpIS5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KFwibW9kdWxlSWRcIikhLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoXCJjb2RlXCIpIS5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KFwibmFtZVwiKSEuY2xlYXJWYWxpZGF0b3JzKCk7XHJcblxyXG4gICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHtcclxuICAgICAgICAgIGlkOiBudWxsLFxyXG4gICAgICAgICAgbW9kdWxlSWQ6IG51bGwsXHJcbiAgICAgICAgICBncm91cElkOiBudWxsLFxyXG4gICAgICAgICAgY29kZTogbnVsbCxcclxuICAgICAgICAgIG5hbWU6IG51bGwsXHJcbiAgICAgICAgICB1cGRhdGVGdW5jdGlvbklkVG9NZW51SXRlbTogbnVsbFxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIGNyZWF0ZVBhcnQuaGlkZGVuID0gdHJ1ZTtcclxuICAgICAgICB1cGRhdGVQYXJ0LmhpZGRlbiA9IHRydWU7XHJcbiAgICAgICAgYm90dG9tUGFydC5oaWRkZW4gPSB0cnVlO1xyXG5cclxuICAgICAgICBmdW5jdGlvbmxlc3NQYXJ0LnJvd3MubWFwKHJvdyA9PiB7XHJcbiAgICAgICAgICByb3cubWFwKGNvbHVtbiA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoY29sdW1uLmZpZWxkKT8uZW5hYmxlKClcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGVja0Vycm9yJC5uZXh0KGZhbHNlKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvKiBUbyBhbGxvdyBmb3JtIHRvIGJlIGRlYWN0aXZhdGVkICovXHJcbiAgb25Gb3JtUmVpbml0KGU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtSW5pdFN0cmluZ1ZhbHVlID0gZTtcclxuICB9XHJcblxyXG4gIG9uU3VibWl0KGV2ZW50OiB7IG1vZGU6IHN0cmluZzsgZm9ybVZhbHVlOiBhbnkgfSk6IHZvaWQge1xyXG4gICAgaWYgKGV2ZW50Lm1vZGUgPT09ICdDUkVBVEUnKSB7XHJcbiAgICAgIGNvbnN0IHsgbW9kdWxlSWQsIGdyb3VwSWQsIGNvZGUsIG5hbWUsIHBhdGgsIHBhdGhGdWxsTWF0Y2gsIGxhc3RDbGlja2VkTWVudUl0ZW1TdHJpbmcsIHVwZGF0ZUZ1bmN0aW9uSWRUb01lbnVJdGVtIH0gPSBldmVudC5mb3JtVmFsdWVcclxuICAgICAgY29uc3QgcGF5bG9hZCA9IHsgbW9kdWxlSWQsIGdyb3VwSWQsIGNvZGUsIG5hbWUsIHBhdGgsIHBhdGhGdWxsTWF0Y2ggfVxyXG5cclxuICAgICAgaWYgKCEhdXBkYXRlRnVuY3Rpb25JZFRvTWVudUl0ZW0pIHtcclxuICAgICAgICBpZiAoISFsYXN0Q2xpY2tlZE1lbnVJdGVtU3RyaW5nKSB7XHJcbiAgICAgICAgICBjb25zdCBtZW51SWQgPSBOdW1iZXIobGFzdENsaWNrZWRNZW51SXRlbVN0cmluZy5zcGxpdCgnPT4nKVswXS5yZXBsYWNlKCdbJywgJycpLnJlcGxhY2UoJ10nLCAnJykpO1xyXG4gICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICAgIHRoaXMuYXBwU2VydmljZS5wb3N0KGFwaS5TWVNfRlVOQ1RJT05fQ1JFQVRFX1RIRU5fVVBEQVRFX0ZVTkNUSU9OX0lEX0ZPUl9NRU5VLCB7IGZ1bmN0aW9uOiBwYXlsb2FkLCBtZW51SWQgfSkuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgICAgICAgIGlmICh4Lm9rICYmIHguc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGJvZHk6IElGb3JtYXRlZFJlc3BvbnNlID0geC5ib2R5XHJcbiAgICAgICAgICAgICAgICBpZiAoYm9keS5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5yZWxvYWRGdW5jdGlvbnMoKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSkpXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKFwibGFzdENsaWNrZWRNZW51SXRlbVN0cmluZyB3YXMgbnVsbFwiLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgICAgdGhpcy5hcHBTZXJ2aWNlLnBvc3QoYXBpLlNZU19GVU5DVElPTl9DUkVBVEUsIHBheWxvYWQpLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgICAgaWYgKHgub2sgJiYgeC5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGJvZHk6IElGb3JtYXRlZFJlc3BvbnNlID0geC5ib2R5XHJcbiAgICAgICAgICAgICAgaWYgKGJvZHkuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbG9hZEZ1bmN0aW9ucygpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KSlcclxuICAgICAgfVxyXG5cclxuICAgIH0gZWxzZSBpZiAoZXZlbnQubW9kZSA9PT0gJ1VQREFURScpIHtcclxuICAgICAgY29uc3QgeyBpZCwgbW9kdWxlSWQsIGdyb3VwSWQsIGNvZGUsIG5hbWUsIHBhdGggfSA9IHRoaXMuZnVuY3Rpb25NY2NTZWxlY3RlZFJvdyQudmFsdWVcclxuICAgICAgY29uc3QgeyBsYXN0Q2xpY2tlZE1lbnVJdGVtU3RyaW5nLCB1cGRhdGVGdW5jdGlvbklkVG9NZW51SXRlbSwgcGF0aEZ1bGxNYXRjaCB9ID0gZXZlbnQuZm9ybVZhbHVlXHJcbiAgICAgIGNvbnN0IG5ld1BhdGggPSBldmVudC5mb3JtVmFsdWUucGF0aDtcclxuICAgICAgY29uc3QgcGF5bG9hZCA9IHsgaWQsIG1vZHVsZUlkLCBncm91cElkLCBjb2RlLCBuYW1lLCBwYXRoOiBuZXdQYXRoLCBwYXRoRnVsbE1hdGNoIH1cclxuXHJcbiAgICAgIGlmIChuZXdQYXRoICE9PSBwYXRoKSB7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dJbnN0YW5jZU51bWJlciA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5kaWFsb2dDb25maXJtZWQkLm5leHQoe1xyXG4gICAgICAgICAgaW5zdGFuY2VOdW1iZXI6IHRoaXMuZGlhbG9nSW5zdGFuY2VOdW1iZXIsXHJcbiAgICAgICAgICBjb25maXJtZWQ6IGZhbHNlXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnRpdGxlJC5uZXh0KEVudW1UcmFuc2xhdGVLZXkuVUlfQ09SRV9ESUFMT0dfU0VSVklDRV9DT05GSVJNQVRJT04pXHJcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmJvZHkkLm5leHQoRW51bVRyYW5zbGF0ZUtleS5ST09UX01BUFBFUl9ET19ZT1VfV0FOVF9UT19PVkVSV1JJVEVfVEhFX0VYSVNUSU5HX1VSTClcclxuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uuc2hvd0NhbmNlbE9ubHkkLm5leHQoZmFsc2UpXHJcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLm9rQnV0dG9uVGV4dCQubmV4dChFbnVtVHJhbnNsYXRlS2V5LllFUylcclxuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuY2FuY2VsQnV0dG9uVGV4dCQubmV4dChFbnVtVHJhbnNsYXRlS2V5LkNBTkNFTClcclxuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuaW5mb3JtYXRpb25MaW5lcyQubmV4dChbXHJcbiAgICAgICAgICBwYXRoLFxyXG4gICAgICAgICAgdGhpcy5tbHMudHJhbnMoRW51bVRyYW5zbGF0ZUtleS5VSV9QRVJNSVNTSU9OX1RISVNfUEFUSF9XSUxMX0JFX1JFUExBQ0VEX0JZKSxcclxuICAgICAgICAgIG5ld1BhdGhcclxuICAgICAgICBdKVxyXG4gICAgICAgIHRoaXMucGVuZGluZ1VwZGF0ZVBheWxvYWQgPSBwYXlsb2FkXHJcbiAgICAgICAgdGhpcy5wZW5kaW5nTGFzdENsaWNrZWRNZW51SXRlbVN0cmluZyA9IGxhc3RDbGlja2VkTWVudUl0ZW1TdHJpbmdcclxuICAgICAgICB0aGlzLnBlbmRpbmdVcGRhdGVGdW5jdGlvbklkVG9NZW51SXRlbSA9IHVwZGF0ZUZ1bmN0aW9uSWRUb01lbnVJdGVtXHJcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dDb25maXJtRGlhbG9nJC5uZXh0KHRydWUpXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnVwZGF0ZShwYXlsb2FkLCBsYXN0Q2xpY2tlZE1lbnVJdGVtU3RyaW5nLCB1cGRhdGVGdW5jdGlvbklkVG9NZW51SXRlbSk7XHJcblxyXG4gICAgfSBlbHNlIGlmIChldmVudC5tb2RlID09PSAnQUREX1RPX0lHTk9SRScpIHtcclxuICAgICAgY29uc3QgeyBwYXRoIH0gPSBldmVudC5mb3JtVmFsdWVcclxuICAgICAgY29uc3QgcGF5bG9hZCA9IHsgcGF0aCB9XHJcblxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLmFwcFNlcnZpY2UucG9zdChhcGkuU1lTX0ZVTkNUSU9OX0lHTk9SRV9DUkVBVEUsIHBheWxvYWQpLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgIGlmICh4Lm9rICYmIHguc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgY29uc3QgYm9keTogSUZvcm1hdGVkUmVzcG9uc2UgPSB4LmJvZHlcclxuICAgICAgICAgICAgaWYgKGJvZHkuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZWxvYWRJZ25vcmVkUGF0aHMoKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSkpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbG9hZEZ1bmN0aW9ucygpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UuZ2V0RnVsbEZ1bmN0aW9ucygpLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICBpZiAoeC5vayAmJiB4LnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICBjb25zdCBib2R5OiBJRm9ybWF0ZWRSZXNwb25zZSA9IHguYm9keVxyXG4gICAgICAgICAgaWYgKGJvZHkuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UuZnVsbEZ1bmN0aW9ucyQubmV4dChib2R5LmlubmVyQm9keSlcclxuICAgICAgICAgICAgdGhpcy5sb2NhdGlvbi5iYWNrKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSAgICAgICAgICBcclxuICAgICAgfSlcclxuICAgIClcclxuICB9XHJcbiAgcHJpdmF0ZSByZWxvYWRJZ25vcmVkUGF0aHMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLmdldElnbm9yZVBhdGhzKCkuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgIGlmICh4Lm9rICYmIHguc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgIGNvbnN0IGJvZHk6IElGb3JtYXRlZFJlc3BvbnNlID0geC5ib2R5XHJcbiAgICAgICAgICBpZiAoYm9keS5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5pZ25vcmVkUGF0aHMkLm5leHQoYm9keS5pbm5lckJvZHkpXHJcbiAgICAgICAgICAgIHRoaXMubG9jYXRpb24uYmFjaygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIClcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlKHBheWxvYWQ6IGFueSwgbGFzdENsaWNrZWRNZW51SXRlbVN0cmluZzogc3RyaW5nLCB1cGRhdGVGdW5jdGlvbklkVG9NZW51SXRlbTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKCEhdXBkYXRlRnVuY3Rpb25JZFRvTWVudUl0ZW0pIHtcclxuICAgICAgaWYgKCEhbGFzdENsaWNrZWRNZW51SXRlbVN0cmluZykge1xyXG4gICAgICAgIGNvbnN0IG1lbnVJZCA9IE51bWJlcihsYXN0Q2xpY2tlZE1lbnVJdGVtU3RyaW5nLnNwbGl0KCc9PicpWzBdLnJlcGxhY2UoJ1snLCAnJykucmVwbGFjZSgnXScsICcnKSk7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICB0aGlzLmFwcFNlcnZpY2UucG9zdChhcGkuU1lTX0ZVTkNUSU9OX1VQREFURV9USEVOX1VQREFURV9GVU5DVElPTl9JRF9GT1JfTUVOVSwgeyBmdW5jdGlvbjogcGF5bG9hZCwgbWVudUlkIH0pLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgICAgaWYgKHgub2sgJiYgeC5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGJvZHk6IElGb3JtYXRlZFJlc3BvbnNlID0geC5ib2R5XHJcbiAgICAgICAgICAgICAgaWYgKGJvZHkuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbG9hZEZ1bmN0aW9ucygpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KSlcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihcImxhc3RDbGlja2VkTWVudUl0ZW1TdHJpbmcgd2FzIG51bGxcIiwgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLmFwcFNlcnZpY2UucG9zdChhcGkuU1lTX0ZVTkNUSU9OX1VQREFURSwgcGF5bG9hZCkuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgICAgaWYgKHgub2sgJiYgeC5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICBjb25zdCBib2R5OiBJRm9ybWF0ZWRSZXNwb25zZSA9IHguYm9keVxyXG4gICAgICAgICAgICBpZiAoYm9keS5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICB0aGlzLnJlbG9hZEZ1bmN0aW9ucygpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLm1hcCh4ID0+IHg/LnVuc3Vic2NyaWJlKCkpXHJcbiAgfVxyXG5cclxufSIsIjxjb3JlLXBhZ2UtZWRpdCAqbmdJZj1cIiEhc2VjdGlvbnMubGVuZ3RoXCIgW3dpZHRoXT1cIjEwMDBcIiBbY2FwdGlvbkNvZGVdPVwiY2FwdGlvbkNvZGVcIiBbc2VjdGlvbnNdPVwic2VjdGlvbnNcIiBbY3J1ZF09XCJjcnVkXCJcclxuICAgIFtlbnRpdHlUYWJsZV09XCJlbnRpdHlUYWJsZVwiIChvbkZvcm1DcmVhdGVkKT1cIm9uRm9ybUNyZWF0ZWQoJGV2ZW50KVwiXHJcbiAgICAob25Jbml0aWFsVmFsdWVTdHJpbmdSZWFkeSk9XCJvbkZvcm1SZWluaXQoJGV2ZW50KVwiXHJcbiAgICBbYXV0b1N1Ym1pdExvZ2ljT2ZmXT1cInRydWVcIlxyXG4gICAgW21peGVkTW9kZV09XCJ0cnVlXCJcclxuICAgIFtjaGVja0Vycm9yJF09XCJjaGVja0Vycm9yJFwiXHJcbiAgICAoc3VibWl0TG9naWMpPVwib25TdWJtaXQoJGV2ZW50KVwiXHJcbiAgICA+PC9jb3JlLXBhZ2UtZWRpdD4iXX0=
|
|
611
|
+
}], ctorParameters: () => [{ type: i1.DialogService }, { type: i2.FunctionEditService }, { type: i3.Router }, { type: i4.CoreFormService }, { type: i5.AppService }, { type: i6.RoutingService }, { type: i7.MultiLanguageService }, { type: i8.NavigatorService }, { type: i9.GrpcService }, { type: i10.Location }, { type: i11.AlertService }, { type: i12.StringService }] });
|
|
612
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzLWZ1bmN0aW9uLXVybC1tYXBwZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvcm9vdC9zeXMtZnVuY3Rpb24tdXJsLW1hcHBlci9zeXMtZnVuY3Rpb24tdXJsLW1hcHBlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9yb290L3N5cy1mdW5jdGlvbi11cmwtbWFwcGVyL3N5cy1mdW5jdGlvbi11cmwtbWFwcGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBMEIsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEUsT0FBTyxFQUFFLGVBQWUsRUFBZ0Isb0JBQW9CLEVBQUUsTUFBTSxFQUFPLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seURBQXlELENBQUM7QUFHNUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFJMUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTdDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBWTNFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQVksTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFhaEcsTUFBTSxPQUFPLDZCQUE4QixTQUFRLGlCQUFpQjtJQXNU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eUREMkJsQixZQUFZLG9JQUNaLHFCQUFxQjs7MkZBS1osNkJBQTZCO2tCQVZ6QyxTQUFTOytCQUNFLDZCQUE2QixjQUMzQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixxQkFBcUI7cUJBQ3RCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwLCB6aXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQmFzZUVkaXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9saWJyYXJpZXMvYmFzZS1lZGl0L2Jhc2UtZWRpdC9iYXNlLWVkaXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSU5hdmlnYXRvckl0ZW0gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lOYXZpZ2F0b3JJdGVtJztcclxuaW1wb3J0IHsgSUNvcmVEcm9wZG93bk9wdGlvbiB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSUNvcmVEcm9wZG93bk9wdGlvbic7XHJcbmltcG9ydCB7IEVudW1UcmFuc2xhdGVLZXkgfSBmcm9tIFwiYWxwaGEtZ2xvYmFsLWNvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBJQ29yZVBhZ2VFZGl0Q1JVRCB9IGZyb20gJy4uLy4uL2xpYnJhcmllcy9jb3JlLXBhZ2UtZWRpdC9JQ29yZVBhZ2VFZGl0Q1JVRCc7XHJcbmltcG9ydCB7IElDb3JlVGFibGVDb2x1bW5JdGVtIH0gZnJvbSAnLi4vLi4vbGlicmFyaWVzL2NvcmUtdGFibGUvSUNvcmVUYWJsZUNvbHVtbkl0ZW0nO1xyXG5pbXBvcnQgeyBJQ29yZVBhZ2VMaXN0QXBpRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL2xpYnJhcmllcy9jb3JlLXBhZ2UtbGlzdC9jb3JlLXBhZ2UtbGlzdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBhcGkgfSBmcm9tIFwiYWxwaGEtZ2xvYmFsLWNvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBJQ29yZUZvcm1TZWN0aW9uLCBJVmFsaWRhdG9yIH0gZnJvbSAnLi4vLi4vbGlicmFyaWVzL2NvcmUtZm9ybS9jb3JlLWZvcm0vZW51bS1pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgRW51bUZvcm1CYXNlQ29udG9sVHlwZSB9IGZyb20gJy4uLy4uL2VudW0vRW51bUZvcm1CYXNlQ29udG9sVHlwZSc7XHJcbmltcG9ydCB7IElDb3JlUmFkaW9PcHRpb24gfSBmcm9tICcuLi8uLi9saWJyYXJpZXMvY29yZS1yYWRpby1ncm91cC9jb3JlLXJhZGlvLWdyb3VwL2NvcmUtcmFkaW8tZ3JvdXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSUZvcm1hdGVkUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lGb3JtYXRlZFJlc3BvbnNlJztcclxuaW1wb3J0IHsgQ29yZUZvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbGlicmFyaWVzL2NvcmUtZm9ybS9jb3JlLWZvcm0uc2VydmljZSc7XHJcbmltcG9ydCB7IEFwcFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hcHAuc2VydmljZSc7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kaWFsb2cuc2VydmljZSc7XHJcbmltcG9ydCB7IFJvdXRpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcm91dGluZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbGlicmFyaWVzL2FsZXJ0L2FsZXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGdW5jdGlvbkVkaXRTZXJ2aWNlIH0gZnJvbSAnLi9mdW5jdGlvbi1lZGl0LnNlcnZpY2VzJztcclxuaW1wb3J0IHsgTXVsdGlMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tdWx0aS1sYW5ndWFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmF2aWdhdG9yU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25hdmlnYXRvci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3RyaW5nU2VydmljZSB9IGZyb20gJy4uLy4uL2xpYnJhcmllcy9zZXJ2aWNlcy9zdHJpbmcuc2VydmljZSc7XHJcbmltcG9ydCB7IG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2FsZXJ0T3B0aW9ucyc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb3JlUGFnZUVkaXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9saWJyYXJpZXMvY29yZS1wYWdlLWVkaXQvY29yZS1wYWdlLWVkaXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgR3JwY1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ncnBjLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtc3lzLWZ1bmN0aW9uLXVybC1tYXBwZXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgQ29yZVBhZ2VFZGl0Q29tcG9uZW50LFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3N5cy1mdW5jdGlvbi11cmwtbWFwcGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zeXMtZnVuY3Rpb24tdXJsLW1hcHBlci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTeXNGdW5jdGlvblVybE1hcHBlckNvbXBvbmVudCBleHRlbmRzIEJhc2VFZGl0Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgcGVuZGluZ1VybCE6IHN0cmluZztcclxuICBsYXN0Q2xpY2tlZE1lbnVJdGVtITogSU5hdmlnYXRvckl0ZW07XHJcbiAgbGFzdENsaWNrZWRNZW51SXRlbVN0cmluZyE6IHN0cmluZztcclxuXHJcbiAgLyogUHJvcGVydGllcyB0byBiZSBwYXNzZWQgaW50byBjb3JlLXBhZ2UtZWRpdCAqL1xyXG4gIGxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBvdmVycmlkZSBlbnRpdHlUYWJsZSA9IFwiU1lTX0ZVTkNUSU9OXCI7XHJcbiAgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICBncm91cE9wdGlvbnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJQ29yZURyb3Bkb3duT3B0aW9uW10+KFtdKTtcclxuICBtb2R1bGVPcHRpb25zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SUNvcmVEcm9wZG93bk9wdGlvbltdPihbXSk7XHJcbiAgY2FwdGlvbkNvZGUhOiBFbnVtVHJhbnNsYXRlS2V5O1xyXG4gIGNydWQhOiBJQ29yZVBhZ2VFZGl0Q1JVRDtcclxuXHJcbiAgY2hlY2tFcnJvciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgcGVuZGluZ1VwZGF0ZVBheWxvYWQhOiBhbnk7XHJcbiAgcGVuZGluZ0xhc3RDbGlja2VkTWVudUl0ZW1TdHJpbmchOiBzdHJpbmc7XHJcbiAgcGVuZGluZ1VwZGF0ZUZ1bmN0aW9uSWRUb01lbnVJdGVtITogYm9vbGVhbjtcclxuXHJcbiAgZGlhbG9nSW5zdGFuY2VOdW1iZXIhOiBudW1iZXI7XHJcblxyXG4gIGZ1bmN0aW9uTWNjQ29sdW1uczogSUNvcmVUYWJsZUNvbHVtbkl0ZW1bXSA9IFtcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9DT01NT05fSUQsXHJcbiAgICAgIGZpZWxkOiAnaWQnLFxyXG4gICAgICBoaWRkZW46IHRydWUsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMzAsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX1NZU19GVU5DVElPTl9NT0RVTEVfTkFNRSxcclxuICAgICAgZmllbGQ6ICdtb2R1bGVOYW1lJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHdpZHRoOiAyNTBcclxuICAgIH0sXHJcbiAgICAvLyB7XHJcbiAgICAvLyAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fU1lTX0ZVTkNUSU9OX0dST1VQX05BTUUsXHJcbiAgICAvLyAgIGZpZWxkOiAnZ3JvdXBOYW1lJyxcclxuICAgIC8vICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAvLyAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAvLyAgIHdpZHRoOiAyNTBcclxuICAgIC8vIH0sXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fU1lTX0ZVTkNUSU9OX0NPREUsXHJcbiAgICAgIGZpZWxkOiAnY29kZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMjAwXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX1NZU19GVU5DVElPTl9OQU1FLFxyXG4gICAgICBmaWVsZDogJ25hbWUnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgd2lkdGg6IDI1MCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fU1lTX0ZVTkNUSU9OX1BBVEgsXHJcbiAgICAgIGZpZWxkOiAncGF0aCcsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMjUwLFxyXG4gICAgfSxcclxuICAgIC8vIHtcclxuICAgIC8vICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9TWVNfRlVOQ1RJT05fU1RBVFVTLFxyXG4gICAgLy8gICBmaWVsZDogJ3N0YXR1cycsXHJcbiAgICAvLyAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgLy8gICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgLy8gICB3aWR0aDogMjAwXHJcbiAgICAvLyB9LFxyXG4gIF07XHJcblxyXG4gIGZ1bmN0aW9uTWNjQXBpRGVmaW5pdGlvbjogSUNvcmVQYWdlTGlzdEFwaURlZmluaXRpb24gPSB7XHJcbiAgICBxdWVyeUxpc3RSZWxhdGl2ZVBhdGg6IGFwaS5TWVNfRlVOQ1RJT05fUVVFUllfTElTVCxcclxuICB9XHJcblxyXG4gIGZ1bmN0aW9uTWNjU2VsZWN0ZWRSb3ckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KHt9KTtcclxuXHJcbiAgbW9kdWxlVmFsaWRhdG9yczogSVZhbGlkYXRvcltdID0gW1xyXG4gICAge1xyXG4gICAgICBuYW1lOiAncmVxdWlyZWQnLFxyXG4gICAgICB2YWxpZGF0b3I6IFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgIGVycm9yTWVzc2FnZTogRW51bVRyYW5zbGF0ZUtleS5VSV9GT1JNX0NPTlRST0xfRVJST1JfUkVRVUlSRUQsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBuYW1lOiAnbWluTGVuZ3RoJyxcclxuICAgICAgdmFsaWRhdG9yOiBWYWxpZGF0b3JzLm1pbigxKSxcclxuICAgICAgZXJyb3JNZXNzYWdlOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0ZPUk1fQ09OVFJPTF9FUlJPUl9SRVFVSVJFRCxcclxuICAgIH1cclxuICBdXHJcblxyXG4gIGNvZGVWYWxpZGF0b3JzOiBJVmFsaWRhdG9yW10gPSBbXHJcbiAgICB7XHJcbiAgICAgIG5hbWU6ICdyZXF1aXJlZCcsXHJcbiAgICAgIHZhbGlkYXRvcjogVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgZXJyb3JNZXNzYWdlOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0ZPUk1fQ09OVFJPTF9FUlJPUl9SRVFVSVJFRCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIG5hbWU6ICdtaW5MZW5ndGgnLFxyXG4gICAgICB2YWxpZGF0b3I6IFZhbGlkYXRvcnMubWluTGVuZ3RoKDEpLFxyXG4gICAgICBlcnJvck1lc3NhZ2U6IEVudW1UcmFuc2xhdGVLZXkuVUlfRk9STV9DT05UUk9MX0VSUk9SX01JTl9MRU5HVEgsXHJcbiAgICB9XHJcbiAgXVxyXG5cclxuICBuYW1lVmFsaWRhdG9yczogSVZhbGlkYXRvcltdID0gW1xyXG4gICAge1xyXG4gICAgICBuYW1lOiAncmVxdWlyZWQnLFxyXG4gICAgICB2YWxpZGF0b3I6IFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgIGVycm9yTWVzc2FnZTogRW51bVRyYW5zbGF0ZUtleS5VSV9GT1JNX0NPTlRST0xfRVJST1JfUkVRVUlSRUQsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBuYW1lOiAnbWluTGVuZ3RoJyxcclxuICAgICAgdmFsaWRhdG9yOiBWYWxpZGF0b3JzLm1pbkxlbmd0aCgxKSxcclxuICAgICAgZXJyb3JNZXNzYWdlOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0ZPUk1fQ09OVFJPTF9FUlJPUl9NSU5fTEVOR1RILFxyXG4gICAgfVxyXG4gIF1cclxuXHJcbiAgZnVuY3Rpb25JZFZhbGlkYXRvcnM6IElWYWxpZGF0b3JbXSA9IFtcclxuICAgIHtcclxuICAgICAgbmFtZTogJ3JlcXVpcmVkJyxcclxuICAgICAgdmFsaWRhdG9yOiBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICBlcnJvck1lc3NhZ2U6IEVudW1UcmFuc2xhdGVLZXkuVUlfRk9STV9DT05UUk9MX0VSUk9SX1JFUVVJUkVELFxyXG4gICAgfSxcclxuICBdXHJcblxyXG4gIG5hdGl2ZU1vZHVsZVZhbGlkYXRvciE6IFZhbGlkYXRvckZuO1xyXG4gIG5hdGl2ZUNvZGVWYWxpZGF0b3IhOiBWYWxpZGF0b3JGbjtcclxuICBuYXRpdmVOYW1lVmFsaWRhdG9yITogVmFsaWRhdG9yRm47XHJcbiAgbmF0aXZlRnVuY3Rpb25JZFZhbGlkYXRvciE6IFZhbGlkYXRvckZuO1xyXG5cclxuICBzZWN0aW9uczogSUNvcmVGb3JtU2VjdGlvbltdID1cclxuICAgIFtcclxuICAgICAge1xyXG4gICAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuUk9PVF9NQVBQRVJfTU9ERV9GT1JfVEhFX1VSTCxcclxuICAgICAgICByb3dzOiBbXHJcbiAgICAgICAgICBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBmbGV4U2l6ZTogNixcclxuICAgICAgICAgICAgICBsYWJlbDogRW51bVRyYW5zbGF0ZUtleS5VSV9DT01NT05fRU1QVFlfU1RSSU5HLFxyXG4gICAgICAgICAgICAgIGZpZWxkOiAnZWRpdE1vZGUnLCAvLyBoZWxwZXJcclxuICAgICAgICAgICAgICB2YWx1ZTogJ0NSRUFURScsXHJcbiAgICAgICAgICAgICAgY29udHJvbFR5cGU6IEVudW1Gb3JtQmFzZUNvbnRvbFR5cGUuUkFESU9HUk9VUCxcclxuICAgICAgICAgICAgICB2ZXJ0aWNhbE1vZGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgcmFkaW9Hcm91cE9wdGlvbnMkOiBuZXcgQmVoYXZpb3JTdWJqZWN0PElDb3JlUmFkaW9PcHRpb25bXT4oW1xyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogJ0NSRUFURScsXHJcbiAgICAgICAgICAgICAgICAgIHRleHQ6IEVudW1UcmFuc2xhdGVLZXkuUk9PVF9NQVBQRVJfTU9ERV9GT1JfVEhFX1VSTF9DUkVBVEVfTkVXX0ZVTkNUSU9OXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogJ1VQREFURScsXHJcbiAgICAgICAgICAgICAgICAgIHRleHQ6IEVudW1UcmFuc2xhdGVLZXkuUk9PVF9NQVBQRVJfTU9ERV9GT1JfVEhFX1VSTF9VUERBVEVfRVhJU1RJTkdfRlVOQ1RJT05cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiAnQUREX1RPX0lHTk9SRScsXHJcbiAgICAgICAgICAgICAgICAgIHRleHQ6IEVudW1UcmFuc2xhdGVLZXkuUk9PVF9NQVBQRVJfTU9ERV9GT1JfVEhFX1VSTF9BRERfUEFUSF9UT19JR05PUkVEX0ZVTkNUSU9OXHJcbiAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICBdKSxcclxuICAgICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIF1cclxuICAgICAgICBdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlJPT1RfTUFQUEVSX01PREVfRk9SX1RIRV9VUkxfQ1JFQVRFX05FV19GVU5DVElPTixcclxuICAgICAgICByb3dzOiBbXHJcbiAgICAgICAgICBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBmbGV4U2l6ZTogNixcclxuICAgICAgICAgICAgICBsYWJlbDogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9TWVNfRlVOQ1RJT05fTU9EVUxFX05BTUUsXHJcbiAgICAgICAgICAgICAgZmllbGQ6ICdtb2R1bGVJZCcsXHJcbiAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG4gICAgICAgICAgICAgIGNvbnRyb2xUeXBlOiBFbnVtRm9ybUJhc2VDb250b2xUeXBlLkRST1BET1dOLFxyXG4gICAgICAgICAgICAgIGRyb3Bkb3duT3B0aW9ucyQ6IHRoaXMubW9kdWxlT3B0aW9ucyQsXHJcbiAgICAgICAgICAgICAgZ2V0QnlJZE9iamVjdCQ6IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKSxcclxuICAgICAgICAgICAgICBnZXRCeUlkQXBpOiBhcGkuU1lTX01PRFVMRV9SRUFELFxyXG4gICAgICAgICAgICAgIHNob3duRnJvbTogJ25hbWUnLFxyXG4gICAgICAgICAgICAgIHR5cGU6ICdudW1iZXInLFxyXG4gICAgICAgICAgICAgIHZhbGlkYXRvcnM6IHRoaXMubW9kdWxlVmFsaWRhdG9ycyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGZsZXhTaXplOiA2LFxyXG4gICAgICAgICAgICAgIGxhYmVsOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX1NZU19GVU5DVElPTl9HUk9VUF9OQU1FLFxyXG4gICAgICAgICAgICAgIGZpZWxkOiAnZ3JvdXBJZCcsXHJcbiAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG4gICAgICAgICAgICAgIGNvbnRyb2xUeXBlOiBFbnVtRm9ybUJhc2VDb250b2xUeXBlLkRST1BET1dOLFxyXG4gICAgICAgICAgICAgIGRyb3Bkb3duT3B0aW9ucyQ6IHRoaXMuZ3JvdXBPcHRpb25zJCxcclxuICAgICAgICAgICAgICBnZXRCeUlkT2JqZWN0JDogbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpLFxyXG4gICAgICAgICAgICAgIGdldEJ5SWRBcGk6IGFwaS5TWVNfRlVOQ1RJT05fR1JPVVBfUkVBRCxcclxuICAgICAgICAgICAgICBzaG93bkZyb206ICduYW1lJyxcclxuICAgICAgICAgICAgICB0eXBlOiAnbnVtYmVyJyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgICBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBmbGV4U2l6ZTogMCxcclxuICAgICAgICAgICAgICBsYWJlbDogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9DT01NT05fSUQsXHJcbiAgICAgICAgICAgICAgZmllbGQ6ICdpZCcsXHJcbiAgICAgICAgICAgICAgdmFsdWU6ICcnLFxyXG4gICAgICAgICAgICAgIGNvbnRyb2xUeXBlOiBFbnVtRm9ybUJhc2VDb250b2xUeXBlLlRFWFRCT1gsXHJcbiAgICAgICAgICAgICAgcmVhZG9ubHk6IHRydWUsXHJcbiAgICAgICAgICAgICAgaGlkZGVuOiB0cnVlLFxyXG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0J1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgZmxleFNpemU6IDYsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fU1lTX0ZVTkNUSU9OX0NPREUsXHJcbiAgICAgICAgICAgICAgZmllbGQ6ICdjb2RlJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcbiAgICAgICAgICAgICAgY29udHJvbFR5cGU6IEVudW1Gb3JtQmFzZUNvbnRvbFR5cGUuVEVYVEJPWCxcclxuICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXHJcbiAgICAgICAgICAgICAgdmFsaWRhdG9yczogdGhpcy5jb2RlVmFsaWRhdG9yc1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgZmxleFNpemU6IDYsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fU1lTX0ZVTkNUSU9OX05BTUUsXHJcbiAgICAgICAgICAgICAgZmllbGQ6ICduYW1lJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcbiAgICAgICAgICAgICAgY29udHJvbFR5cGU6IEVudW1Gb3JtQmFzZUNvbnRvbFR5cGUuVEVYVEJPWCxcclxuICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXHJcbiAgICAgICAgICAgICAgdmFsaWRhdG9yczogdGhpcy5uYW1lVmFsaWRhdG9yc1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgXSxcclxuICAgICAgICBdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlJPT1RfTUFQUEVSX01PREVfRk9SX1RIRV9VUkxfVVBEQVRFX0VYSVNUSU5HX0ZVTkNUSU9OLFxyXG4gICAgICAgIGhpZGRlbjogdHJ1ZSxcclxuICAgICAgICByb3dzOiBbXHJcbiAgICAgICAgICBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBmbGV4U2l6ZTogMTIsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fU1lTX01FTlVfU1lTX0ZVTkNUSU9OLFxyXG4gICAgICAgICAgICAgIGZpZWxkOiAnZnVuY3Rpb25JZCcsIC8vIGhlbHBlclxyXG4gICAgICAgICAgICAgIHZhbHVlOiBudWxsLFxyXG4gICAgICAgICAgICAgIGNvbnRyb2xUeXBlOiBFbnVtRm9ybUJhc2VDb250b2xUeXBlLk1DQyxcclxuICAgICAgICAgICAgICBjb2x1bW5zOiB0aGlzLmZ1bmN0aW9uTWNjQ29sdW1ucyxcclxuICAgICAgICAgICAgICBzaG93bkZyb206ICduYW1lJyxcclxuICAgICAgICAgICAgICBhcGlEZWZpbml0aW9uOiB0aGlzLmZ1bmN0aW9uTWNjQXBpRGVmaW5pdGlvbixcclxuICAgICAgICAgICAgICBnZXRCeUlkQXBpOiBhcGkuU1lTX0ZVTkNUSU9OX1JFQUQsXHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRSb3ckOiB0aGlzLmZ1bmN0aW9uTWNjU2VsZWN0ZWRSb3ckLFxyXG4gICAgICAgICAgICAgIHR5cGU6ICdudW1iZXInLFxyXG4gICAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlLFxyXG4gICAgICAgICAgICAgIHZhbGlkYXRvcnM6IHRoaXMuZnVuY3Rpb25JZFZhbGlkYXRvcnNcclxuICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICBdXHJcbiAgICAgICAgXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5ST09UX01BUFBFUl9USEVfVVJMLFxyXG4gICAgICAgIHJvd3M6IFtcclxuICAgICAgICAgIFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGZsZXhTaXplOiAxMixcclxuICAgICAgICAgICAgICBsYWJlbDogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9TWVNfRlVOQ1RJT05fUEFUSCxcclxuICAgICAgICAgICAgICBmaWVsZDogJ3BhdGgnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAnJyxcclxuICAgICAgICAgICAgICBjb250cm9sVHlwZTogRW51bUZvcm1CYXNlQ29udG9sVHlwZS5URVhUQk9YLFxyXG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgXSxcclxuICAgICAgICAgIFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGZsZXhTaXplOiA2LFxyXG4gICAgICAgICAgICAgIGxhYmVsOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX1NZU19GVU5DVElPTl9QQVRIX0ZVTExfTUFUQ0gsXHJcbiAgICAgICAgICAgICAgZmllbGQ6ICdwYXRoRnVsbE1hdGNoJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogdHJ1ZSxcclxuICAgICAgICAgICAgICBjb250cm9sVHlwZTogRW51bUZvcm1CYXNlQ29udG9sVHlwZS5DSEVDS0JPWCxcclxuICAgICAgICAgICAgICB0eXBlOiAnYm9vbGVhbicsXHJcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICBdXHJcblxyXG4gICAgICAgIF1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuUk9PVF9NQVBQRVJfTEFTVF9DTElDS0VEX01FTlVfSVRFTV9TVFJJTkcsXHJcbiAgICAgICAgcm93czogW1xyXG4gICAgICAgICAgW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgZmxleFNpemU6IDEyLFxyXG4gICAgICAgICAgICAgIGxhYmVsOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0NPTU1PTl9FTVBUWV9TVFJJTkcsXHJcbiAgICAgICAgICAgICAgZmllbGQ6ICdsYXN0Q2xpY2tlZE1lbnVJdGVtU3RyaW5nJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogJycsXHJcbiAgICAgICAgICAgICAgY29udHJvbFR5cGU6IEVudW1Gb3JtQmFzZUNvbnRvbFR5cGUuVEVYVEJPWCxcclxuICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXHJcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRydWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgXSxcclxuICAgICAgICAgIFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGZsZXhTaXplOiA2LFxyXG4gICAgICAgICAgICAgIGxhYmVsOiBFbnVtVHJhbnNsYXRlS2V5LlJPT1RfTUFQUEVSX1VQREFURV9GVU5DVElPTl9JRF9GT1JfVEhFX01FTlVfSVRFTSxcclxuICAgICAgICAgICAgICBmaWVsZDogJ3VwZGF0ZUZ1bmN0aW9uSWRUb01lbnVJdGVtJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgY29udHJvbFR5cGU6IEVudW1Gb3JtQmFzZUNvbnRvbFR5cGUuQ0hFQ0tCT1gsXHJcbiAgICAgICAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxyXG4gICAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgXVxyXG5cclxuICAgICAgICBdXHJcbiAgICAgIH0sXHJcbiAgICBdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBvdmVycmlkZSBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmbmNTZXJ2aWNlOiBGdW5jdGlvbkVkaXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgY29yZUZvcm1TZXJ2aWNlOiBDb3JlRm9ybVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwcFNlcnZpY2U6IEFwcFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRpbmdTZXJ2aWNlOiBSb3V0aW5nU2VydmljZSxcclxuICAgIHByaXZhdGUgbWxzOiBNdWx0aUxhbmd1YWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgbmF2aWdhdG9yU2VydmljZTogTmF2aWdhdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgZ3JwY1NlcnZpY2U6IEdycGNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb24sXHJcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzdHJpbmdTZXJ2aWNlOiBTdHJpbmdTZXJ2aWNlXHJcbiAgKSB7XHJcblxyXG4gICAgc3VwZXIoZGlhbG9nU2VydmljZSk7XHJcblxyXG4gICAgdGhpcy5wZW5kaW5nVXJsID0gdGhpcy5yb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb24oKT8uZXh0cmFzLnN0YXRlIVsndXJsJ107XHJcbiAgICB0aGlzLmxhc3RDbGlja2VkTWVudUl0ZW0gPSB0aGlzLnJvdXRlci5nZXRDdXJyZW50TmF2aWdhdGlvbigpPy5leHRyYXMuc3RhdGUhWydsYXN0Q2xpY2tlZE1lbnVJdGVtJ107XHJcbiAgICB0aGlzLmxhc3RDbGlja2VkTWVudUl0ZW1TdHJpbmcgPSB0aGlzLnJvdXRlci5nZXRDdXJyZW50TmF2aWdhdGlvbigpPy5leHRyYXMuc3RhdGUhWydsYXN0Q2xpY2tlZE1lbnVJdGVtU3RyaW5nJ107XHJcblxyXG4gICAgdGhpcy5jYXB0aW9uQ29kZSA9IEVudW1UcmFuc2xhdGVLZXkuVUlfQ09NUE9ORU5UX1RJVExFX1NZU19GVU5DVElPTl9FRElUO1xyXG5cclxuICAgIHRoaXMuY3J1ZCA9IHtcclxuICAgICAgYzogYXBpLlNZU19GVU5DVElPTl9DUkVBVEUsXHJcbiAgICAgIHI6IGFwaS5TWVNfRlVOQ1RJT05fUkVBRCxcclxuICAgICAgdTogYXBpLlNZU19GVU5DVElPTl9VUERBVEUsXHJcbiAgICAgIGQ6IGFwaS5TWVNfRlVOQ1RJT05fREVMRVRFLFxyXG4gICAgfTtcclxuXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLmNvcmVGb3JtU2VydmljZS5nZXRGb3JtQmFzZUNvbnRyb2xCeU5hbWUodGhpcy5zZWN0aW9ucywgJ3BhdGgnKSEudmFsdWUgPSB0aGlzLnBlbmRpbmdVcmw7XHJcbiAgICB0aGlzLmNvcmVGb3JtU2VydmljZS5nZXRGb3JtQmFzZUNvbnRyb2xCeU5hbWUodGhpcy5zZWN0aW9ucywgJ2xhc3RDbGlja2VkTWVudUl0ZW1TdHJpbmcnKSEudmFsdWUgPSB0aGlzLmxhc3RDbGlja2VkTWVudUl0ZW1TdHJpbmc7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5kaWFsb2dDb25maXJtZWQkLnBpcGUoXHJcbiAgICAgICAgZmlsdGVyKHggPT4gISF4Py5jb25maXJtZWQgJiYgISF0aGlzLnBlbmRpbmdVcGRhdGVQYXlsb2FkICYmIHguaW5zdGFuY2VOdW1iZXIgPT09IHRoaXMuZGlhbG9nSW5zdGFuY2VOdW1iZXIpXHJcbiAgICAgICkuc3Vic2NyaWJlKF8gPT4ge1xyXG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5yZXNldFNlcnZpY2UoKVxyXG4gICAgICAgIHRoaXMudXBkYXRlKHRoaXMucGVuZGluZ1VwZGF0ZVBheWxvYWQsIHRoaXMucGVuZGluZ0xhc3RDbGlja2VkTWVudUl0ZW1TdHJpbmcsIHRoaXMucGVuZGluZ1VwZGF0ZUZ1bmN0aW9uSWRUb01lbnVJdGVtKTtcclxuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UucmVzZXRTZXJ2aWNlKClcclxuICAgICAgfSlcclxuICAgIClcclxuXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgemlwKFtcclxuICAgICAgICAgIHRoaXMuZm5jU2VydmljZS5nZXRNb2R1bGVzKCksXHJcbiAgICAgICAgICB0aGlzLmZuY1NlcnZpY2UuZ2V0RnVuY0dyb3VwcygpXHJcbiAgICAgICAgXSkuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICBpZiAoeFswXS5vayAmJiB4WzBdLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGJvZHk6IElGb3JtYXRlZFJlc3BvbnNlID0geFswXS5ib2R5XHJcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbnM6IHsgdmFsdWU6IG51bWJlcjsgdGV4dDogc3RyaW5nOyB9W10gPSBbXTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coYm9keS5pbm5lckJvZHkpXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGJvZHkuaW5uZXJCb2R5Lmxlbmd0aClcclxuICAgICAgICAgICAgdGhpcy5zdHJpbmdTZXJ2aWNlLnNvcnQoYm9keS5pbm5lckJvZHksICduYW1lJyk7XHJcbiAgICAgICAgICAgIGJvZHkuaW5uZXJCb2R5Lm1hcCgoZzogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgb3B0aW9ucy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBnLmlkLFxyXG4gICAgICAgICAgICAgICAgdGV4dDogZy5uYW1lXHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgdGhpcy5tb2R1bGVPcHRpb25zJC5uZXh0KG9wdGlvbnMpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoeFsxXS5vayAmJiB4WzFdLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGJvZHk6IElGb3JtYXRlZFJlc3BvbnNlID0geFsxXS5ib2R5XHJcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbnM6IHsgdmFsdWU6IG51bWJlcjsgdGV4dDogc3RyaW5nOyB9W10gPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5zdHJpbmdTZXJ2aWNlLnNvcnQoYm9keS5pbm5lckJvZHksICduYW1lJyk7XHJcbiAgICAgICAgICAgIGJvZHkuaW5uZXJCb2R5Lm1hcCgoZzogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgb3B0aW9ucy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBnLmlkLFxyXG4gICAgICAgICAgICAgICAgdGV4dDogZy5uYW1lXHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgdGhpcy5ncm91cE9wdGlvbnMkLm5leHQob3B0aW9ucylcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLyogR0VUIEZvcm1Hcm91cCBJbnN0YW5jZSAqL1xyXG4gIG9uRm9ybUNyZWF0ZWQoZTogRm9ybUdyb3VwKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm0gPSBlO1xyXG5cclxuICAgIGlmICghIXRoaXMubGFzdENsaWNrZWRNZW51SXRlbVN0cmluZykge1xyXG4gICAgICBjb25zdCBtZW51VXJsID0gdGhpcy5sYXN0Q2xpY2tlZE1lbnVJdGVtU3RyaW5nLnNwbGl0KCc9PicpWzJdLnJlcGxhY2UoJygnLCAnJykucmVwbGFjZSgnKScsICcnKTtcclxuICAgICAgaWYgKG1lbnVVcmwgPT09IHRoaXMucGVuZGluZ1VybCkge1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ3BhdGgnKSEuZGlzYWJsZSgpO1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ3BhdGhGdWxsTWF0Y2gnKSEucGF0Y2hWYWx1ZSh0cnVlKTtcclxuICAgICAgICAvL3RoaXMuZm9ybS5nZXQoJ3BhdGhGdWxsTWF0Y2gnKSEuZGlzYWJsZSgpO1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ3VwZGF0ZUZ1bmN0aW9uSWRUb01lbnVJdGVtJykhLnBhdGNoVmFsdWUodHJ1ZSk7XHJcbiAgICAgICAgLy90aGlzLmZvcm0uZ2V0KCd1cGRhdGVGdW5jdGlvbklkVG9NZW51SXRlbScpIS5kaXNhYmxlKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5mb3JtLmdldCgncGF0aEZ1bGxNYXRjaCcpIS5wYXRjaFZhbHVlKGZhbHNlKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCd1cGRhdGVGdW5jdGlvbklkVG9NZW51SXRlbScpIS5wYXRjaFZhbHVlKGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubmF0aXZlTW9kdWxlVmFsaWRhdG9yID0gdGhpcy5mb3JtLmdldChcIm1vZHVsZUlkXCIpIS52YWxpZGF0b3IhO1xyXG4gICAgdGhpcy5uYXRpdmVDb2RlVmFsaWRhdG9yID0gdGhpcy5mb3JtLmdldChcImNvZGVcIikhLnZhbGlkYXRvciE7XHJcbiAgICB0aGlzLm5hdGl2ZU5hbWVWYWxpZGF0b3IgPSB0aGlzLmZvcm0uZ2V0KFwibmFtZVwiKSEudmFsaWRhdG9yITtcclxuICAgIHRoaXMubmF0aXZlRnVuY3Rpb25JZFZhbGlkYXRvciA9IHRoaXMuZm9ybS5nZXQoXCJmdW5jdGlvbklkXCIpIS52YWxpZGF0b3IhO1xyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmZvcm0uZ2V0KCdmdW5jdGlvbklkJyk/LnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICAgIGZpbHRlcih4ID0+ICEheCksXHJcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgICBzd2l0Y2hNYXAoeCA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5hcHBTZXJ2aWNlLmdldChhcGkuU1lTX0ZVTkNUSU9OX1JFQUQgKyAnP2lkPScgKyB4KVxyXG4gICAgICAgIH0pXHJcbiAgICAgICkuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgIGlmICh4Lm9rICYmIHggPT09IDIwMCkge1xyXG4gICAgICAgICAgY29uc3QgYm9keTogSUZvcm1hdGVkUmVzcG9uc2UgPSB4LmJvZHk7XHJcbiAgICAgICAgICBpZiAoYm9keS5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoYm9keS5pbm5lckJvZHkpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSFcclxuICAgIClcclxuXHJcblxyXG4gICAgdGhpcy5mb3JtLmdldCgnZWRpdE1vZGUnKT8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgY29uc3QgY3JlYXRlUGFydCA9IHRoaXMuc2VjdGlvbnMuZmlsdGVyKHMgPT4gcy5jYXB0aW9uID09PSBFbnVtVHJhbnNsYXRlS2V5LlJPT1RfTUFQUEVSX01PREVfRk9SX1RIRV9VUkxfQ1JFQVRFX05FV19GVU5DVElPTilbMF1cclxuICAgICAgY29uc3QgdXBkYXRlUGFydCA9IHRoaXMuc2VjdGlvbnMuZmlsdGVyKHMgPT4gcy5jYXB0aW9uID09PSBFbnVtVHJhbnNsYXRlS2V5LlJPT1RfTUFQUEVSX01PREVfRk9SX1RIRV9VUkxfVVBEQVRFX0VYSVNUSU5HX0ZVTkNUSU9OKVswXVxyXG4gICAgICBjb25zdCBmdW5jdGlvbmxlc3NQYXJ0ID0gdGhpcy5zZWN0aW9ucy5maWx0ZXIocyA9PiBzLmNhcHRpb24gPT09IEVudW1UcmFuc2xhdGVLZXkuUk9PVF9NQVBQRVJfTU9ERV9GT1JfVEhFX1VSTF9VUERBVEVfRVhJU1RJTkdfRlVOQ1RJT04pWzBdXHJcbiAgICAgIGZ1bmN0aW9ubGVzc1BhcnQucm93cyA9IGZ1bmN0aW9ubGVzc1BhcnQucm93cy5maWx0ZXIociA9PiByLmZpbHRlcihjID0+IGMuZmllbGQgPT09ICdwYXRoJykpXHJcbiAgICAgIGNvbnN0IGJvdHRvbVBhcnQgPSB0aGlzLnNlY3Rpb25zLmZpbHRlcihzID0+IHMuY2FwdGlvbiA9PT0gRW51bVRyYW5zbGF0ZUtleS5ST09UX01BUFBFUl9MQVNUX0NMSUNLRURfTUVOVV9JVEVNX1NUUklORylbMF1cclxuICAgICAgY29uc29sZS5sb2coXCJmdW5jdGlvbmxlc3NQYXJ0XCIsIGZ1bmN0aW9ubGVzc1BhcnQpXHJcbiAgICAgIGlmICh4ID09PSAnQ1JFQVRFJykge1xyXG5cclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KFwibW9kdWxlSWRcIikhLnZhbGlkYXRvciA9IHRoaXMubmF0aXZlTW9kdWxlVmFsaWRhdG9yO1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoXCJjb2RlXCIpIS52YWxpZGF0b3IgPSB0aGlzLm5hdGl2ZUNvZGVWYWxpZGF0b3I7XHJcbiAgICAgICAgdGhpcy5mb3JtLmdldChcIm5hbWVcIikhLnZhbGlkYXRvciA9IHRoaXMubmF0aXZlTmFtZVZhbGlkYXRvcjtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KFwiZnVuY3Rpb25JZFwiKSEuY2xlYXJWYWxpZGF0b3JzKCk7XHJcblxyXG5cclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdmdW5jdGlvbklkJyk/LnBhdGNoVmFsdWUobnVsbCk7XHJcbiAgICAgICAgY3JlYXRlUGFydC5oaWRkZW4gPSBmYWxzZTtcclxuICAgICAgICB1cGRhdGVQYXJ0LmhpZGRlbiA9IHRydWU7XHJcbiAgICAgICAgYm90dG9tUGFydC5oaWRkZW4gPSBmYWxzZTtcclxuXHJcbiAgICAgICAgY3JlYXRlUGFydC5yb3dzLm1hcChyb3cgPT4ge1xyXG4gICAgICAgICAgcm93Lm1hcChjb2x1bW4gPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KGNvbHVtbi5maWVsZCk/LmVuYWJsZSgpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICB9IGVsc2UgaWYgKHggPT09ICdVUERBVEUnKSB7XHJcblxyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoXCJtb2R1bGVJZFwiKSEuY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICAgICAgdGhpcy5mb3JtLmdldChcImNvZGVcIikhLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoXCJuYW1lXCIpIS5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KFwiZnVuY3Rpb25JZFwiKSEudmFsaWRhdG9yID0gdGhpcy5uYXRpdmVGdW5jdGlvbklkVmFsaWRhdG9yO1xyXG5cclxuICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7XHJcbiAgICAgICAgICBpZDogbnVsbCxcclxuICAgICAgICAgIG1vZHVsZUlkOiBudWxsLFxyXG4gICAgICAgICAgZ3JvdXBJZDogbnVsbCxcclxuICAgICAgICAgIGNvZGU6IG51bGwsXHJcbiAgICAgICAgICBuYW1lOiBudWxsLFxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIGNyZWF0ZVBhcnQuaGlkZGVuID0gdHJ1ZTtcclxuICAgICAgICB1cGRhdGVQYXJ0LmhpZGRlbiA9IGZhbHNlO1xyXG4gICAgICAgIGJvdHRvbVBhcnQuaGlkZGVuID0gZmFsc2U7XHJcblxyXG4gICAgICAgIHVwZGF0ZVBhcnQucm93cy5tYXAocm93ID0+IHtcclxuICAgICAgICAgIHJvdy5tYXAoY29sdW1uID0+IHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldChjb2x1bW4uZmllbGQpPy5lbmFibGUoKVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9KVxyXG4gICAgICB9IGVsc2UgaWYgKHggPT09ICdBRERfVE9fSUdOT1JFJykge1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoXCJmdW5jdGlvbklkXCIpIS5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KFwibW9kdWxlSWRcIikhLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoXCJjb2RlXCIpIS5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KFwibmFtZVwiKSEuY2xlYXJWYWxpZGF0b3JzKCk7XHJcblxyXG4gICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHtcclxuICAgICAgICAgIGlkOiBudWxsLFxyXG4gICAgICAgICAgbW9kdWxlSWQ6IG51bGwsXHJcbiAgICAgICAgICBncm91cElkOiBudWxsLFxyXG4gICAgICAgICAgY29kZTogbnVsbCxcclxuICAgICAgICAgIG5hbWU6IG51bGwsXHJcbiAgICAgICAgICB1cGRhdGVGdW5jdGlvbklkVG9NZW51SXRlbTogbnVsbFxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIGNyZWF0ZVBhcnQuaGlkZGVuID0gdHJ1ZTtcclxuICAgICAgICB1cGRhdGVQYXJ0LmhpZGRlbiA9IHRydWU7XHJcbiAgICAgICAgYm90dG9tUGFydC5oaWRkZW4gPSB0cnVlO1xyXG5cclxuICAgICAgICBmdW5jdGlvbmxlc3NQYXJ0LnJvd3MubWFwKHJvdyA9PiB7XHJcbiAgICAgICAgICByb3cubWFwKGNvbHVtbiA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoY29sdW1uLmZpZWxkKT8uZW5hYmxlKClcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jaGVja0Vycm9yJC5uZXh0KGZhbHNlKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvKiBUbyBhbGxvdyBmb3JtIHRvIGJlIGRlYWN0aXZhdGVkICovXHJcbiAgb25Gb3JtUmVpbml0KGU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtSW5pdFN0cmluZ1ZhbHVlID0gZTtcclxuICB9XHJcblxyXG4gIG9uU3VibWl0KGV2ZW50OiB7IG1vZGU6IHN0cmluZzsgZm9ybVZhbHVlOiBhbnkgfSk6IHZvaWQge1xyXG4gICAgaWYgKGV2ZW50Lm1vZGUgPT09ICdDUkVBVEUnKSB7XHJcbiAgICAgIGNvbnN0IHsgbW9kdWxlSWQsIGdyb3VwSWQsIGNvZGUsIG5hbWUsIHBhdGgsIHBhdGhGdWxsTWF0Y2gsIGxhc3RDbGlja2VkTWVudUl0ZW1TdHJpbmcsIHVwZGF0ZUZ1bmN0aW9uSWRUb01lbnVJdGVtIH0gPSBldmVudC5mb3JtVmFsdWVcclxuICAgICAgY29uc3QgcGF5bG9hZCA9IHsgbW9kdWxlSWQsIGdyb3VwSWQsIGNvZGUsIG5hbWUsIHBhdGgsIHBhdGhGdWxsTWF0Y2ggfVxyXG5cclxuICAgICAgaWYgKCEhdXBkYXRlRnVuY3Rpb25JZFRvTWVudUl0ZW0pIHtcclxuICAgICAgICBpZiAoISFsYXN0Q2xpY2tlZE1lbnVJdGVtU3RyaW5nKSB7XHJcbiAgICAgICAgICBjb25zdCBtZW51SWQgPSBOdW1iZXIobGFzdENsaWNrZWRNZW51SXRlbVN0cmluZy5zcGxpdCgnPT4nKVswXS5yZXBsYWNlKCdbJywgJycpLnJlcGxhY2UoJ10nLCAnJykpO1xyXG4gICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICAgIHRoaXMuYXBwU2VydmljZS5wb3N0KGFwaS5TWVNfRlVOQ1RJT05fQ1JFQVRFX1RIRU5fVVBEQVRFX0ZVTkNUSU9OX0lEX0ZPUl9NRU5VLCB7IGZ1bmN0aW9uOiBwYXlsb2FkLCBtZW51SWQgfSkuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgICAgICAgIGlmICh4Lm9rICYmIHguc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGJvZHk6IElGb3JtYXRlZFJlc3BvbnNlID0geC5ib2R5XHJcbiAgICAgICAgICAgICAgICBpZiAoYm9keS5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5yZWxvYWRGdW5jdGlvbnMoKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSkpXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKFwibGFzdENsaWNrZWRNZW51SXRlbVN0cmluZyB3YXMgbnVsbFwiLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgICAgdGhpcy5hcHBTZXJ2aWNlLnBvc3QoYXBpLlNZU19GVU5DVElPTl9DUkVBVEUsIHBheWxvYWQpLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgICAgaWYgKHgub2sgJiYgeC5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGJvZHk6IElGb3JtYXRlZFJlc3BvbnNlID0geC5ib2R5XHJcbiAgICAgICAgICAgICAgaWYgKGJvZHkuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbG9hZEZ1bmN0aW9ucygpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KSlcclxuICAgICAgfVxyXG5cclxuICAgIH0gZWxzZSBpZiAoZXZlbnQubW9kZSA9PT0gJ1VQREFURScpIHtcclxuICAgICAgY29uc3QgeyBpZCwgbW9kdWxlSWQsIGdyb3VwSWQsIGNvZGUsIG5hbWUsIHBhdGggfSA9IHRoaXMuZnVuY3Rpb25NY2NTZWxlY3RlZFJvdyQudmFsdWVcclxuICAgICAgY29uc3QgeyBsYXN0Q2xpY2tlZE1lbnVJdGVtU3RyaW5nLCB1cGRhdGVGdW5jdGlvbklkVG9NZW51SXRlbSwgcGF0aEZ1bGxNYXRjaCB9ID0gZXZlbnQuZm9ybVZhbHVlXHJcbiAgICAgIGNvbnN0IG5ld1BhdGggPSBldmVudC5mb3JtVmFsdWUucGF0aDtcclxuICAgICAgY29uc3QgcGF5bG9hZCA9IHsgaWQsIG1vZHVsZUlkLCBncm91cElkLCBjb2RlLCBuYW1lLCBwYXRoOiBuZXdQYXRoLCBwYXRoRnVsbE1hdGNoIH1cclxuXHJcbiAgICAgIGlmIChuZXdQYXRoICE9PSBwYXRoKSB7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dJbnN0YW5jZU51bWJlciA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5kaWFsb2dDb25maXJtZWQkLm5leHQoe1xyXG4gICAgICAgICAgaW5zdGFuY2VOdW1iZXI6IHRoaXMuZGlhbG9nSW5zdGFuY2VOdW1iZXIsXHJcbiAgICAgICAgICBjb25maXJtZWQ6IGZhbHNlXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnRpdGxlJC5uZXh0KEVudW1UcmFuc2xhdGVLZXkuVUlfQ09SRV9ESUFMT0dfU0VSVklDRV9DT05GSVJNQVRJT04pXHJcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmJvZHkkLm5leHQoRW51bVRyYW5zbGF0ZUtleS5ST09UX01BUFBFUl9ET19ZT1VfV0FOVF9UT19PVkVSV1JJVEVfVEhFX0VYSVNUSU5HX1VSTClcclxuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uuc2hvd0NhbmNlbE9ubHkkLm5leHQoZmFsc2UpXHJcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLm9rQnV0dG9uVGV4dCQubmV4dChFbnVtVHJhbnNsYXRlS2V5LllFUylcclxuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuY2FuY2VsQnV0dG9uVGV4dCQubmV4dChFbnVtVHJhbnNsYXRlS2V5LkNBTkNFTClcclxuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuaW5mb3JtYXRpb25MaW5lcyQubmV4dChbXHJcbiAgICAgICAgICBwYXRoLFxyXG4gICAgICAgICAgdGhpcy5tbHMudHJhbnMoRW51bVRyYW5zbGF0ZUtleS5VSV9QRVJNSVNTSU9OX1RISVNfUEFUSF9XSUxMX0JFX1JFUExBQ0VEX0JZKSxcclxuICAgICAgICAgIG5ld1BhdGhcclxuICAgICAgICBdKVxyXG4gICAgICAgIHRoaXMucGVuZGluZ1VwZGF0ZVBheWxvYWQgPSBwYXlsb2FkXHJcbiAgICAgICAgdGhpcy5wZW5kaW5nTGFzdENsaWNrZWRNZW51SXRlbVN0cmluZyA9IGxhc3RDbGlja2VkTWVudUl0ZW1TdHJpbmdcclxuICAgICAgICB0aGlzLnBlbmRpbmdVcGRhdGVGdW5jdGlvbklkVG9NZW51SXRlbSA9IHVwZGF0ZUZ1bmN0aW9uSWRUb01lbnVJdGVtXHJcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dDb25maXJtRGlhbG9nJC5uZXh0KHRydWUpXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnVwZGF0ZShwYXlsb2FkLCBsYXN0Q2xpY2tlZE1lbnVJdGVtU3RyaW5nLCB1cGRhdGVGdW5jdGlvbklkVG9NZW51SXRlbSk7XHJcblxyXG4gICAgfSBlbHNlIGlmIChldmVudC5tb2RlID09PSAnQUREX1RPX0lHTk9SRScpIHtcclxuICAgICAgY29uc3QgeyBwYXRoIH0gPSBldmVudC5mb3JtVmFsdWVcclxuICAgICAgY29uc3QgcGF5bG9hZCA9IHsgcGF0aCB9XHJcblxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLmFwcFNlcnZpY2UucG9zdChhcGkuU1lTX0ZVTkNUSU9OX0lHTk9SRV9DUkVBVEUsIHBheWxvYWQpLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgIGlmICh4Lm9rICYmIHguc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgY29uc3QgYm9keTogSUZvcm1hdGVkUmVzcG9uc2UgPSB4LmJvZHlcclxuICAgICAgICAgICAgaWYgKGJvZHkuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZWxvYWRJZ25vcmVkUGF0aHMoKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSkpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbG9hZEZ1bmN0aW9ucygpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UucmVhZEFsbEZ1bmN0aW9uV2l0aEFsbEFjdGlvbnMoKS5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgaWYgKHgub2sgJiYgeC5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgY29uc3QgYm9keTogSUZvcm1hdGVkUmVzcG9uc2UgPSB4LmJvZHlcclxuICAgICAgICAgIGlmIChib2R5LnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICBjb25zdCBpbm5lckJvZHkgPSB0aGlzLmdycGNTZXJ2aWNlLmNvbnZlcnRUb0NhbWVsQ2FzZShKU09OLnBhcnNlKGJvZHkuaW5uZXJCb2R5KSk7XHJcbiAgICAgICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UuZnVsbEZ1bmN0aW9ucyQubmV4dChpbm5lckJvZHkpXHJcbiAgICAgICAgICAgIHRoaXMubG9jYXRpb24uYmFjaygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gICAgICAgICAgXHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgfVxyXG4gIHByaXZhdGUgcmVsb2FkSWdub3JlZFBhdGhzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5nZXRJZ25vcmVQYXRocygpLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICBpZiAoeC5vayAmJiB4LnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICBjb25zdCBib2R5OiBJRm9ybWF0ZWRSZXNwb25zZSA9IHguYm9keVxyXG4gICAgICAgICAgaWYgKGJvZHkuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UuaWdub3JlZFBhdGhzJC5uZXh0KGJvZHkuaW5uZXJCb2R5KVxyXG4gICAgICAgICAgICB0aGlzLmxvY2F0aW9uLmJhY2soKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZShwYXlsb2FkOiBhbnksIGxhc3RDbGlja2VkTWVudUl0ZW1TdHJpbmc6IHN0cmluZywgdXBkYXRlRnVuY3Rpb25JZFRvTWVudUl0ZW06IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGlmICghIXVwZGF0ZUZ1bmN0aW9uSWRUb01lbnVJdGVtKSB7XHJcbiAgICAgIGlmICghIWxhc3RDbGlja2VkTWVudUl0ZW1TdHJpbmcpIHtcclxuICAgICAgICBjb25zdCBtZW51SWQgPSBOdW1iZXIobGFzdENsaWNrZWRNZW51SXRlbVN0cmluZy5zcGxpdCgnPT4nKVswXS5yZXBsYWNlKCdbJywgJycpLnJlcGxhY2UoJ10nLCAnJykpO1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgICAgdGhpcy5hcHBTZXJ2aWNlLnBvc3QoYXBpLlNZU19GVU5DVElPTl9VUERBVEVfVEhFTl9VUERBVEVfRlVOQ1RJT05fSURfRk9SX01FTlUsIHsgZnVuY3Rpb246IHBheWxvYWQsIG1lbnVJZCB9KS5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICAgIGlmICh4Lm9rICYmIHguc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICBjb25zdCBib2R5OiBJRm9ybWF0ZWRSZXNwb25zZSA9IHguYm9keVxyXG4gICAgICAgICAgICAgIGlmIChib2R5LnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZWxvYWRGdW5jdGlvbnMoKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSkpXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoXCJsYXN0Q2xpY2tlZE1lbnVJdGVtU3RyaW5nIHdhcyBudWxsXCIsIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy5hcHBTZXJ2aWNlLnBvc3QoYXBpLlNZU19GVU5DVElPTl9VUERBVEUsIHBheWxvYWQpLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgIGlmICh4Lm9rICYmIHguc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgY29uc3QgYm9keTogSUZvcm1hdGVkUmVzcG9uc2UgPSB4LmJvZHlcclxuICAgICAgICAgICAgaWYgKGJvZHkuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZWxvYWRGdW5jdGlvbnMoKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSkpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5tYXAoeCA9PiB4Py51bnN1YnNjcmliZSgpKVxyXG4gIH1cclxuXHJcbn0iLCI8Y29yZS1wYWdlLWVkaXQgKm5nSWY9XCIhIXNlY3Rpb25zLmxlbmd0aFwiIFt3aWR0aF09XCIxMDAwXCIgW2NhcHRpb25Db2RlXT1cImNhcHRpb25Db2RlXCIgW3NlY3Rpb25zXT1cInNlY3Rpb25zXCIgW2NydWRdPVwiY3J1ZFwiXHJcbiAgICBbZW50aXR5VGFibGVdPVwiZW50aXR5VGFibGVcIiAob25Gb3JtQ3JlYXRlZCk9XCJvbkZvcm1DcmVhdGVkKCRldmVudClcIlxyXG4gICAgKG9uSW5pdGlhbFZhbHVlU3RyaW5nUmVhZHkpPVwib25Gb3JtUmVpbml0KCRldmVudClcIlxyXG4gICAgW2F1dG9TdWJtaXRMb2dpY09mZl09XCJ0cnVlXCJcclxuICAgIFttaXhlZE1vZGVdPVwidHJ1ZVwiXHJcbiAgICBbY2hlY2tFcnJvciRdPVwiY2hlY2tFcnJvciRcIlxyXG4gICAgKHN1Ym1pdExvZ2ljKT1cIm9uU3VibWl0KCRldmVudClcIlxyXG4gICAgPjwvY29yZS1wYWdlLWVkaXQ+Il19
|
|
@@ -9,8 +9,9 @@ import * as i4 from "./organization.service";
|
|
|
9
9
|
import * as i5 from "./routing.service";
|
|
10
10
|
import * as i6 from "./app-config.service";
|
|
11
11
|
import * as i7 from "./app.service";
|
|
12
|
+
import * as i8 from "./grpc.service";
|
|
12
13
|
export class AppInitializationService {
|
|
13
|
-
constructor(authService, mls, layoutService, organizationService, routingService, appConfigService, appService) {
|
|
14
|
+
constructor(authService, mls, layoutService, organizationService, routingService, appConfigService, appService, grpcService) {
|
|
14
15
|
this.authService = authService;
|
|
15
16
|
this.mls = mls;
|
|
16
17
|
this.layoutService = layoutService;
|
|
@@ -18,6 +19,7 @@ export class AppInitializationService {
|
|
|
18
19
|
this.routingService = routingService;
|
|
19
20
|
this.appConfigService = appConfigService;
|
|
20
21
|
this.appService = appService;
|
|
22
|
+
this.grpcService = grpcService;
|
|
21
23
|
this.initializing$ = new BehaviorSubject(true);
|
|
22
24
|
this.ssoProcessing$ = new BehaviorSubject(true);
|
|
23
25
|
this.subscriptions = [];
|
|
@@ -27,31 +29,32 @@ export class AppInitializationService {
|
|
|
27
29
|
this.ssoFailed = false;
|
|
28
30
|
}
|
|
29
31
|
appInitialize() {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}
|
|
49
|
-
newO[newKey] = value;
|
|
50
|
-
}
|
|
32
|
+
/*
|
|
33
|
+
const toCamel = (o: any): any => {
|
|
34
|
+
var newO, origKey, newKey, value
|
|
35
|
+
if (o instanceof Array) {
|
|
36
|
+
return o.map(function (value) {
|
|
37
|
+
if (typeof value === "object") {
|
|
38
|
+
value = toCamel(value)
|
|
39
|
+
}
|
|
40
|
+
return value
|
|
41
|
+
})
|
|
42
|
+
} else {
|
|
43
|
+
newO = {}
|
|
44
|
+
for (origKey in o) {
|
|
45
|
+
if (o.hasOwnProperty(origKey)) {
|
|
46
|
+
newKey = (origKey.charAt(0).toLowerCase() + origKey.slice(1) || origKey).toString()
|
|
47
|
+
value = o[origKey]
|
|
48
|
+
if (value instanceof Array || (value !== null && value.constructor === Object)) {
|
|
49
|
+
value = toCamel(value)
|
|
51
50
|
}
|
|
51
|
+
(newO as any)[newKey] = value
|
|
52
|
+
}
|
|
52
53
|
}
|
|
53
|
-
|
|
54
|
-
|
|
54
|
+
}
|
|
55
|
+
return newO
|
|
56
|
+
}
|
|
57
|
+
*/
|
|
55
58
|
try {
|
|
56
59
|
fetch('../../assets/app.config.json').then(res => res.json()).then(({ APP_TYPE, BASE_URL, GOLIVE_URL, DEBUG_ENABLED, LOGO_LOGIN, LOGO_HEADER, HOME_BACKGROUND_IMAGE, OAUTH2_OIDC_ENABLED, OAUTH2_OIDC_CLIENT_ID, OAUTH2_OIDC_LOGIN_URI, OAUTH2_OIDC_REDIRECT_URI, OAUTH2_OIDC_SCOPE, SAML2ADFS_ENABLED, SAML2ADFS_IDP, SAML2ADFS_IDENTIFIER, SAML2ADFS_WA_SIGNIN, SAML2ADFS_WA_SIGNOUT, SAML2ADFS_WREPLY, HANGFIRE_PATH, STATIC_FOLDER, AVATAR_FOLDER, }) => {
|
|
57
60
|
this.appConfigService.APP_TYPE = APP_TYPE;
|
|
@@ -164,11 +167,11 @@ export class AppInitializationService {
|
|
|
164
167
|
this.mls.data$.next(body1.innerBody);
|
|
165
168
|
}
|
|
166
169
|
}
|
|
167
|
-
const x2 =
|
|
170
|
+
const x2 = this.grpcService.convertToCamelCase(responses[1]);
|
|
168
171
|
if (x2.ok && x2.status === 200) {
|
|
169
172
|
body2 = x2.body;
|
|
170
173
|
if (body2.statusCode === 200) {
|
|
171
|
-
this.routingService.fullFunctions$.next(
|
|
174
|
+
this.routingService.fullFunctions$.next(this.grpcService.convertToCamelCase(JSON.parse(body2.innerBody)));
|
|
172
175
|
}
|
|
173
176
|
}
|
|
174
177
|
const x3 = responses[2];
|
|
@@ -243,7 +246,7 @@ export class AppInitializationService {
|
|
|
243
246
|
ngOnDestroy() {
|
|
244
247
|
this.subscriptions.map(x => x?.unsubscribe());
|
|
245
248
|
}
|
|
246
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AppInitializationService, deps: [{ token: i1.AuthService }, { token: i2.MultiLanguageService }, { token: i3.LayoutService }, { token: i4.OrganizationService }, { token: i5.RoutingService }, { token: i6.AppConfigService }, { token: i7.AppService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
249
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AppInitializationService, deps: [{ token: i1.AuthService }, { token: i2.MultiLanguageService }, { token: i3.LayoutService }, { token: i4.OrganizationService }, { token: i5.RoutingService }, { token: i6.AppConfigService }, { token: i7.AppService }, { token: i8.GrpcService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
247
250
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AppInitializationService, providedIn: 'root' }); }
|
|
248
251
|
}
|
|
249
252
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AppInitializationService, decorators: [{
|
|
@@ -251,5 +254,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
251
254
|
args: [{
|
|
252
255
|
providedIn: 'root'
|
|
253
256
|
}]
|
|
254
|
-
}], ctorParameters: () => [{ type: i1.AuthService }, { type: i2.MultiLanguageService }, { type: i3.LayoutService }, { type: i4.OrganizationService }, { type: i5.RoutingService }, { type: i6.AppConfigService }, { type: i7.AppService }] });
|
|
255
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWluaXRpYWxpemF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9zZXJ2aWNlcy9hcHAtaW5pdGlhbGl6YXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQWdCLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQVdsRixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7OztBQUs3QyxNQUFNLE9BQU8sd0JBQXdCO0lBYW5DLFlBQ1UsV0FBd0IsRUFDeEIsR0FBeUIsRUFDekIsYUFBNEIsRUFDNUIsbUJBQXdDLEVBQ3hDLGNBQThCLEVBQzlCLGdCQUFrQyxFQUNsQyxVQUFzQjtRQU50QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixRQUFHLEdBQUgsR0FBRyxDQUFzQjtRQUN6QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFsQmhDLGtCQUFhLEdBQUcsSUFBSSxlQUFlLENBQVUsSUFBSSxDQUFDLENBQUM7UUFDbkQsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBVSxJQUFJLENBQUMsQ0FBQztRQUNwRCxrQkFBYSxHQUFtQixFQUFFLENBQUM7UUFFbkMsdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBQ3BDLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBRWhDLHFCQUFnQixHQUFHLElBQUksZUFBZSxDQUFtQixJ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LENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQTtJQUMvQyxDQUFDOzhHQS9UVSx3QkFBd0I7a0hBQXhCLHdCQUF3QixjQUZ2QixNQUFNOzsyRkFFUCx3QkFBd0I7a0JBSHBDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgemlwLCBjYXRjaEVycm9yLCBvZiwgU3Vic2NyaXB0aW9uLCBmaWx0ZXIgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9tdWx0aS1sYW5ndWFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTGF5b3V0U2VydmljZSB9IGZyb20gJy4vbGF5b3V0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9hcHAtY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJRm9ybWF0ZWRSZXNwb25zZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvSUZvcm1hdGVkUmVzcG9uc2UnO1xyXG5pbXBvcnQgeyBJQXV0aERhdGEgfSBmcm9tICcuLi9pbnRlcmZhY2VzL0lBdXRoRGF0YSc7XHJcbmltcG9ydCB7IFJvdXRpbmdTZXJ2aWNlIH0gZnJvbSAnLi9yb3V0aW5nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPcmdhbml6YXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9vcmdhbml6YXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IElFdmVyeVRyZWVTdGF0dXMgfSBmcm9tICcuLi9saWJyYXJpZXMvc2VydmljZXMvcmVjdXJzaXZlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBcHBTZXJ2aWNlIH0gZnJvbSAnLi9hcHAuc2VydmljZSc7XHJcbmltcG9ydCB7IGFwaSB9IGZyb20gJ2FscGhhLWdsb2JhbC1jb25zdGFudHMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXBwSW5pdGlhbGl6YXRpb25TZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuIFxyXG4gIGluaXRpYWxpemluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xyXG4gIHNzb1Byb2Nlc3NpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBwcmltYXJ5SW5pdGlhbGl6ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzdG9yZVNlc3Npb25PazogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwZW5kaW5nQXV0aERhdGEkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJQXV0aERhdGEgfCBudWxsPihudWxsKTtcclxuXHJcbiAgc3NvRmFpbGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1sczogTXVsdGlMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG9yZ2FuaXphdGlvblNlcnZpY2U6IE9yZ2FuaXphdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRpbmdTZXJ2aWNlOiBSb3V0aW5nU2VydmljZSxcclxuICAgIHByaXZhdGUgYXBwQ29uZmlnU2VydmljZTogQXBwQ29uZmlnU2VydmljZSxcclxuICAgIHByaXZhdGUgYXBwU2VydmljZTogQXBwU2VydmljZVxyXG4gICkge1xyXG5cclxuICB9XHJcblxyXG4gIGFwcEluaXRpYWxpemUoKTogdm9pZCB7XHJcblxyXG4gICAgY29uc3QgdG9DYW1lbCA9IChvOiBhbnkpOiBhbnkgPT4ge1xyXG4gICAgICB2YXIgbmV3Tywgb3JpZ0tleSwgbmV3S2V5LCB2YWx1ZVxyXG4gICAgICBpZiAobyBpbnN0YW5jZW9mIEFycmF5KSB7XHJcbiAgICAgICAgcmV0dXJuIG8ubWFwKGZ1bmN0aW9uICh2YWx1ZSkge1xyXG4gICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIikge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IHRvQ2FtZWwodmFsdWUpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gdmFsdWVcclxuICAgICAgICB9KVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5ld08gPSB7fVxyXG4gICAgICAgIGZvciAob3JpZ0tleSBpbiBvKSB7XHJcbiAgICAgICAgICBpZiAoby5oYXNPd25Qcm9wZXJ0eShvcmlnS2V5KSkge1xyXG4gICAgICAgICAgICBuZXdLZXkgPSAob3JpZ0tleS5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSArIG9yaWdLZXkuc2xpY2UoMSkgfHwgb3JpZ0tleSkudG9TdHJpbmcoKVxyXG4gICAgICAgICAgICB2YWx1ZSA9IG9bb3JpZ0tleV1cclxuICAgICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkgfHwgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlLmNvbnN0cnVjdG9yID09PSBPYmplY3QpKSB7XHJcbiAgICAgICAgICAgICAgdmFsdWUgPSB0b0NhbWVsKHZhbHVlKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIChuZXdPIGFzIGFueSlbbmV3S2V5XSA9IHZhbHVlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBuZXdPXHJcbiAgICB9XHJcblxyXG4gICAgdHJ5IHtcclxuXHJcbiAgICAgIGZldGNoKCcuLi8uLi9hc3NldHMvYXBwLmNvbmZpZy5qc29uJykudGhlbihyZXMgPT4gcmVzLmpzb24oKSkudGhlbigoe1xyXG5cclxuICAgICAgICBBUFBfVFlQRSxcclxuICAgICAgICBCQVNFX1VSTCwgICAgIFxyXG4gICAgICAgIEdPTElWRV9VUkwsXHJcbiAgICAgICAgREVCVUdfRU5BQkxFRCxcclxuXHJcbiAgICAgICAgTE9HT19MT0dJTixcclxuICAgICAgICBMT0dPX0hFQURFUixcclxuICAgICAgICBIT01FX0JBQ0tHUk9VTkRfSU1BR0UsIFxyXG5cclxuICAgICAgICBPQVVUSDJfT0lEQ19FTkFCTEVELFxyXG4gICAgICAgIE9BVVRIMl9PSURDX0NMSUVOVF9JRCxcclxuICAgICAgICBPQVVUSDJfT0lEQ19MT0dJTl9VUkksXHJcbiAgICAgICAgT0FVVEgyX09JRENfUkVESVJFQ1RfVVJJLFxyXG4gICAgICAgIE9BVVRIMl9PSURDX1NDT1BFLFxyXG5cclxuICAgICAgICBTQU1MMkFERlNfRU5BQkxFRCwgXHJcbiAgICAgICAgU0FNTDJBREZTX0lEUCwgXHJcbiAgICAgICAgU0FNTDJBREZTX0lERU5USUZJRVIsXHJcbiAgICAgICAgU0FNTDJBREZTX1dBX1NJR05JTixcclxuICAgICAgICBTQU1MMkFERlNfV0FfU0lHTk9VVCxcclxuICAgICAgICBTQU1MMkFERlNfV1JFUExZLFxyXG5cclxuICAgICAgICBIQU5HRklSRV9QQVRILFxyXG4gICAgICAgIFNUQVRJQ19GT0xERVIsXHJcbiAgICAgICAgQVZBVEFSX0ZPTERFUixcclxuXHJcbiAgICAgIH0pID0+IHtcclxuXHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLkFQUF9UWVBFID0gQVBQX1RZUEU7XHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLkJBU0VfVVJMID0gQkFTRV9VUkw7XHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLkdPTElWRV9VUkwgPSBHT0xJVkVfVVJMO1xyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5ERUJVR19FTkFCTEVEID0gREVCVUdfRU5BQkxFRDtcclxuXHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLkxPR09fTE9HSU4gPSBMT0dPX0xPR0lOO1xyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5MT0dPX0hFQURFUiA9IExPR09fSEVBREVSO1xyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5IT01FX0JBQ0tHUk9VTkRfSU1BR0UgPSBIT01FX0JBQ0tHUk9VTkRfSU1BR0U7XHJcblxyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5PQVVUSDJfT0lEQ19FTkFCTEVEID0gT0FVVEgyX09JRENfRU5BQkxFRDtcclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuT0FVVEgyX09JRENfQ0xJRU5UX0lEID0gT0FVVEgyX09JRENfQ0xJRU5UX0lEO1xyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5PQVVUSDJfT0lEQ19MT0dJTl9VUkkgPSBPQVVUSDJfT0lEQ19MT0dJTl9VUkk7XHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLk9BVVRIMl9PSURDX1JFRElSRUNUX1VSSSA9IE9BVVRIMl9PSURDX1JFRElSRUNUX1VSSTtcclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuT0FVVEgyX09JRENfU0NPUEUgPSBPQVVUSDJfT0lEQ19TQ09QRTtcclxuXHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLlNBTUwyQURGU19FTkFCTEVEID0gU0FNTDJBREZTX0VOQUJMRUQ7XHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLlNBTUwyQURGU19JRFAgPSBTQU1MMkFERlNfSURQO1xyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5TQU1MMkFERlNfSURFTlRJRklFUiA9IFNBTUwyQURGU19JREVOVElGSUVSO1xyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5TQU1MMkFERlNfV0FfU0lHTklOID0gU0FNTDJBREZTX1dBX1NJR05JTjtcclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuU0FNTDJBREZTX1dBX1NJR05PVVQgPSBTQU1MMkFERlNfV0FfU0lHTk9VVDtcclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuU0FNTDJBREZTX1dSRVBMWSA9IFNBTUwyQURGU19XUkVQTFk7XHJcblxyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5IQU5HRklSRV9QQVRIID0gSEFOR0ZJUkVfUEFUSDtcclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuU1RBVElDX0ZPTERFUiA9IFNUQVRJQ19GT0xERVI7XHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLkFWQVRBUl9GT0xERVIgPSBBVkFUQVJfRk9MREVSO1xyXG5cclxuICAgICAgICBjb25zdCBwYXJhbXMgPSAobmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZikpLnNlYXJjaFBhcmFtcztcclxuICAgICAgICBjb25zdCBsb2NhbCA9IHBhcmFtcy5nZXQoXCJsb2NhbFwiKTtcclxuXHJcbiAgICAgICAgaWYgKFNBTUwyQURGU19FTkFCTEVEICYmICFsb2NhbCkge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLnNzb0ZhaWxlZCkge1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBjb25zdCB0b2tlbiA9IHBhcmFtcy5nZXQoXCJ0b2tlblwiKTtcclxuICAgICAgICAgICAgICBpZiAodG9rZW4gIT09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmFwcFNlcnZpY2UuZ2V0KGFwaS5TWVNfU0hPUlRfTElWRURfVE9LRU5fTE9HSU4gKyBcIj90b2tlbj1cIiArIHRva2VuKS5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHgub2sgJiYgeC5zdGF0dXMgPT09IDIwMCAmJiB4LmJvZHk/LnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9keTogSUZvcm1hdGVkUmVzcG9uc2UgPSB4LmJvZHlcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChib2R5LnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBlbmRpbmdBdXRoRGF0YSQubmV4dCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYm9keS5pbm5lckJvZHksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naW5UaW1lOiBuZXcgRGF0ZSgpLmdldFRpbWUoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNzb0ZhaWxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3NvUHJvY2Vzc2luZyQubmV4dChmYWxzZSk7XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmICghIWxvY2FsU3RvcmFnZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsZWZ0YmFyUmVkdWNlZFN0cmluZyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsZWZ0YmFyUmVkdWNlZCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsZWZ0YmFyUmVkdWNlZCA9IEpTT04ucGFyc2UobGVmdGJhclJlZHVjZWRTdHJpbmchKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxheW91dFNlcnZpY2UubGVmdGJhclJlZHVjZWQkLm5leHQoISFsZWZ0YmFyUmVkdWNlZCk7XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgcm91dGluZ0hpc3RvcnlTdHJpbmcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncm91dGluZ0hpc3RvcnknKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEhcm91dGluZ0hpc3RvcnlTdHJpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByb3V0aW5nSGlzdG9yeSA9IEpTT04ucGFyc2Uocm91dGluZ0hpc3RvcnlTdHJpbmcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2Uucm91dGluZ0hpc3RvcnkkLm5leHQocm91dGluZ0hpc3RvcnkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29yZU9yZ1RyZWVTdGF0dXNTdHJpbmcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImNvcmVPcmdUcmVlU3RhdHVzXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29yZU9yZ1RyZWVTdGF0dXNTdHJpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzYXZlZE9iamVjdDogSUV2ZXJ5VHJlZVN0YXR1cyA9IEpTT04ucGFyc2UoY29yZU9yZ1RyZWVTdGF0dXNTdHJpbmcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3JnYW5pemF0aW9uU2VydmljZS5zdGF0dXMkLm5leHQoc2F2ZWRPYmplY3QpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSwgMjAwKVxyXG4gICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgXHJcbiAgICBcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIEFMV0FZUyBSRURJUkVDVCBUTyBUSEUgQU5HVUxBUiBBUFBMSUNBVElPTiBMT0dJTiBQQUdFIElGIE5PIFNFU1NJT04gRk9VTkQgKD9sb2NhbD0xKVxyXG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgJHt0aGlzLmFwcENvbmZpZ1NlcnZpY2UuU0FNTDJBREZTX0lERU5USUZJRVJ9P2xvY2FsPTFgO1xyXG5cclxuICAgICAgICAgICAgICAgIC8qXHJcblxyXG4gICAgICAgICAgICAgICAgLy9JRiBUSEUgQU5HVUxBUiBBUFBMSUNBVElPTiBMT0dJTiBQQUdFIElTIE5PVCBNQU5EQVRPUlkgPT4gQ0FMTCBTQU1MMi4wIElkUFxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvZGVWZXJpZmllciA9IHRoaXMuYXV0aFNlcnZpY2UuZ2VuZXJhdGVSYW5kb21Db2RlVmVyaWZpZXIoNDMpO1xyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJjb2RlVmVyaWZpZXJcIiwgY29kZVZlcmlmaWVyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2VuZXJhdGVDb2RlQ2hhbGxlbmdlRnJvbVZlcmlmaWVyKGNvZGVWZXJpZmllcikudGhlbihjb2RlQ2hhbGxlbmdlID0+IHtcclxuICAgICAgICAgICAgICAgICAgY29uc3QgYXV0aG9yaXphdGlvblVybCA9IGAke3RoaXMuYXBwQ29uZmlnU2VydmljZS5TQU1MMkFERlNfSURQfT9gICtcclxuICAgICAgICAgICAgICAgICAgICBgd3RyZWFsbT0ke3RoaXMuYXBwQ29uZmlnU2VydmljZS5TQU1MMkFERlNfSURFTlRJRklFUn1gICtcclxuICAgICAgICAgICAgICAgICAgICBgJndhPSR7dGhpcy5hcHBDb25maWdTZXJ2aWNlLlNBTUwyQURGU19XQV9TSUdOSU4gfHwgJ3dzaWduaW4xLjAnfWAgKyBcclxuICAgICAgICAgICAgICAgICAgICBgJndyZXBseT0ke3RoaXMuYXBwQ29uZmlnU2VydmljZS5CQVNFX1VSTH0ke3RoaXMuYXBwQ29uZmlnU2VydmljZS5TQU1MMkFERlNfV1JFUExZfWAgKyBcclxuICAgICAgICAgICAgICAgICAgICBgJndjdHg9JHtjb2RlQ2hhbGxlbmdlfWBcclxuICAgICAgICAgICAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWxlcnQoYXV0aG9yaXphdGlvblVybCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYXV0aG9yaXphdGlvblVybDtcclxuXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICovXHJcblxyXG5cclxuICAgICAgICAgICAgICB9XHJcbiAgXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNzb1Byb2Nlc3NpbmckLm5leHQoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGJvZHkxOiBJRm9ybWF0ZWRSZXNwb25zZTtcclxuICAgICAgICBsZXQgYm9keTI6IElGb3JtYXRlZFJlc3BvbnNlO1xyXG4gICAgICAgIGxldCBib2R5MzogSUZvcm1hdGVkUmVzcG9uc2U7XHJcbiAgICAgICAgbGV0IGJvZHk0OiBJRm9ybWF0ZWRSZXNwb25zZTtcclxuXHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICB0aGlzLnNzb1Byb2Nlc3NpbmckLnBpcGUoXHJcbiAgICAgICAgICAgIGZpbHRlcih4ID0+ICF4KVxyXG4gICAgICAgICAgKS5zdWJzY3JpYmUoXyA9PiB7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICAgICAgICB6aXAoW1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tbHMucmVhZEFsbE1pbmkoKSxcclxuICAgICAgICAgICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UucmVhZEFsbEZ1bmN0aW9uV2l0aEFsbEFjdGlvbnMoKSxcclxuICAgICAgICAgICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UuZ2V0SWdub3JlUGF0aHMoKSxcclxuICAgICAgICAgICAgICAgIHRoaXMuYXBwU2VydmljZS5nZXQoYXBpLlBPUlRBTF9ST1VURV9SRUFEX0FMTF9NSU5JKVxyXG4gICAgICAgICAgICAgIF0pLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKHZhbCA9PiBvZihgVGhlIGFwcCBjYXVnaHQ6ICR7dmFsfWApKVxyXG4gICAgICAgICAgICAgICkuc3Vic2NyaWJlKHJlc3BvbnNlcyA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJhcHBJbml0aWFsaXplKCkgemlwKCkgZG9uZVwiKVxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHgxID0gcmVzcG9uc2VzWzBdO1xyXG4gICAgICAgICAgICAgICAgaWYgKHgxLm9rICYmIHgxLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIGJvZHkxID0geDEuYm9keVxyXG4gICAgICAgICAgICAgICAgICBpZiAoYm9keTEuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tbHMuZGF0YSQubmV4dChib2R5MS5pbm5lckJvZHkpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgeDIgPSB0b0NhbWVsKHJlc3BvbnNlc1sxXSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoeDIub2sgJiYgeDIuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgYm9keTIgPSB4Mi5ib2R5XHJcbiAgICAgICAgICAgICAgICAgIGlmIChib2R5Mi5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLmZ1bGxGdW5jdGlvbnMkLm5leHQodG9DYW1lbChKU09OLnBhcnNlKGJvZHkyLmlubmVyQm9keSkpKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHgzID0gcmVzcG9uc2VzWzJdO1xyXG4gICAgICAgICAgICAgICAgaWYgKHgzLm9rICYmIHgzLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIGJvZHkzID0geDMuYm9keVxyXG4gICAgICAgICAgICAgICAgICBpZiAoYm9keTMuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5pZ25vcmVkUGF0aHMkLm5leHQoYm9keTMuaW5uZXJCb2R5KTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHg0ID0gcmVzcG9uc2VzWzNdO1xyXG4gICAgICAgICAgICAgICAgaWYgKHg0Lm9rICYmIHg0LnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIGJvZHk0ID0geDQuYm9keVxyXG4gICAgICAgICAgICAgICAgICBpZiAoYm9keTQuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5wb3J0YWxSb3V0ZXMkLm5leHQoYm9keTQuaW5uZXJCb2R5KTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChib2R5MT8uc3RhdHVzQ29kZSA9PT0gMjAwICYmIGJvZHkyPy5zdGF0dXNDb2RlID09PSAyMDAgJiYgYm9keTM/LnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcmltYXJ5SW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgaWYgKCEhT0FVVEgyX09JRENfRU5BQkxFRCAmJiAhIXRoaXMucGVuZGluZ0F1dGhEYXRhJC52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcmVTZXNzaW9uT2sgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQubmV4dCh0aGlzLnBlbmRpbmdBdXRoRGF0YSQudmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGVuZGluZ0F1dGhEYXRhJC5uZXh0KG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuYXV0aGVudGljYXRlZCQubmV4dCh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRpYWxpemluZyQubmV4dChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZS50cnlSZXN0b3JlU2Vzc2lvbigpXHJcbiAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHggPT4ge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHgub2sgJiYgeC5zdGF0dXMgPT09IDIwMCAmJiB4LmJvZHk/LnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvZHk6IElGb3JtYXRlZFJlc3BvbnNlID0geC5ib2R5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJvZHkuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdBdXRoRGF0YTogSUF1dGhEYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5ib2R5LmlubmVyQm9keSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naW5UaW1lOiBuZXcgRGF0ZSgpLmdldFRpbWUoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9yZVNlc3Npb25PayA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLm5leHQobmV3QXV0aERhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEhbG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsZWZ0YmFyUmVkdWNlZFN0cmluZyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsZWZ0YmFyUmVkdWNlZCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGVmdGJhclJlZHVjZWQgPSBKU09OLnBhcnNlKGxlZnRiYXJSZWR1Y2VkU3RyaW5nISlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGF5b3V0U2VydmljZS5sZWZ0YmFyUmVkdWNlZCQubmV4dCghIWxlZnRiYXJSZWR1Y2VkKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByb3V0aW5nSGlzdG9yeVN0cmluZyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdyb3V0aW5nSGlzdG9yeScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEhcm91dGluZ0hpc3RvcnlTdHJpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgcm91dGluZ0hpc3RvcnkgPSBKU09OLnBhcnNlKHJvdXRpbmdIaXN0b3J5U3RyaW5nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5yb3V0aW5nSGlzdG9yeSQubmV4dChyb3V0aW5nSGlzdG9yeSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29yZU9yZ1RyZWVTdGF0dXNTdHJpbmcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImNvcmVPcmdUcmVlU3RhdHVzXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvcmVPcmdUcmVlU3RhdHVzU3RyaW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNhdmVkT2JqZWN0OiBJRXZlcnlUcmVlU3RhdHVzID0gSlNPTi5wYXJzZShjb3JlT3JnVHJlZVN0YXR1c1N0cmluZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3JnYW5pemF0aW9uU2VydmljZS5zdGF0dXMkLm5leHQoc2F2ZWRPYmplY3QpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRpYWxpemluZyQubmV4dChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIDIwMClcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIClcclxuXHJcblxyXG4gICAgICAgICAgfSlcclxuICAgICAgICApXHJcblxyXG4gICAgICB9KS5jYXRjaChlID0+IGNvbnNvbGUubG9nKFwiZmV0Y2ggYXBwLmNvbmZpZy5qc29uIGVycm9yXCIsIGUpKVxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICBjb25zb2xlLmxvZyhcImFwcEluaXRpYWxpemUoKSB6aXAoKSBlcnJvcjogXCIsIGUpXHJcbiAgICB9IGZpbmFsbHkge1xyXG4gICAgICBjb25zb2xlLmxvZyhcImZpbmFsbHlcIilcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5tYXAoeCA9PiB4Py51bnN1YnNjcmliZSgpKVxyXG4gIH1cclxuXHJcbn1cclxuIl19
|
|
257
|
+
}], ctorParameters: () => [{ type: i1.AuthService }, { type: i2.MultiLanguageService }, { type: i3.LayoutService }, { type: i4.OrganizationService }, { type: i5.RoutingService }, { type: i6.AppConfigService }, { type: i7.AppService }, { type: i8.GrpcService }] });
|
|
258
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWluaXRpYWxpemF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9zZXJ2aWNlcy9hcHAtaW5pdGlhbGl6YXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQWdCLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQVdsRixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7QUFNN0MsTUFBTSxPQUFPLHdCQUF3QjtJQWFuQyxZQUNVLFdBQXdCLEVBQ3hCLEdBQXlCLEVBQ3pCLGFBQTRCLEVBQzVCLG1CQUF3QyxFQUN4QyxjQUE4QixFQUM5QixnQkFBa0MsRUFDbEMsVUFBc0IsRUFDdEIsV0FBd0I7UUFQeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsUUFBRyxHQUFILEdBQUcsQ0FBc0I7UUFDekIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBbkJsQyxrQkFBYSxHQUFHLElBQUksZUFBZSxDQUFVLElBQUksQ0FBQyxDQUFDO1FBQ25ELG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQVUsSUFBSSxDQUFDLENBQUM7UUFDcEQsa0JBQWEsR0FBbUIsRUFBRSxDQUFDO1FBRW5DLHVCQUFrQixHQUFZLEtBQUssQ0FBQztRQUNwQyxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUVoQyxxQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBbUIsSUFBSSxDQUFDLENBQUM7UUFFL0QsY0FBUyxHQUFZLEtBQUssQ0FBQztJQWEzQixDQUFDO0lBRUQsYUFBYTtRQUVYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1VBeUJFO1FBRUYsSUFBSTtZQUVGLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBRWxFLFFBQVEsRUFDUixRQUFRLEVBQ1IsVUFBVSxFQUNWLGFBQWEsRUFFYixVQUFVLEVBQ1YsV0FBVyxFQUNYLHFCQUFxQixFQUVyQixtQkFBbUIsRUFDbkIscUJBQXFCLEVBQ3JCLHFCQUFxQixFQUNyQix3QkFBd0IsRUFDeEIsaUJBQWlCLEVBRWpCLGlCQUFpQixFQUNqQixhQUFhLEVBQ2Isb0JBQW9CLEVBQ3BCLG1CQUFtQixFQUNuQixvQkFBb0IsRUFDcEIsZ0JBQWdCLEVBRWhCLGFBQWEsRUFDYixhQUFhLEVBQ2IsYUFBYSxHQUVkLEVBQUUsRUFBRTtnQkFFSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztnQkFDMUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO2dCQUM5QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztnQkFFcEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7Z0JBQzlDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO2dCQUNoRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMscUJBQXFCLEdBQUcscUJBQXFCLENBQUM7Z0JBRXBFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBbUIsR0FBRyxtQkFBbUIsQ0FBQztnQkFDaEUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHFCQUFxQixHQUFHLHFCQUFxQixDQUFDO2dCQUNwRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMscUJBQXFCLEdBQUcscUJBQXFCLENBQUM7Z0JBQ3BFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyx3QkFBd0IsR0FBRyx3QkFBd0IsQ0FBQztnQkFDMUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDO2dCQUU1RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUM7Z0JBQzVELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO2dCQUNwRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsb0JBQW9CLEdBQUcsb0JBQW9CLENBQUM7Z0JBQ2xFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBbUIsR0FBRyxtQkFBbUIsQ0FBQztnQkFDaEUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLG9CQUFvQixHQUFHLG9CQUFvQixDQUFDO2dCQUNsRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7Z0JBRTFELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO2dCQUNwRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztnQkFDcEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7Z0JBRXBELE1BQU0sTUFBTSxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztnQkFDNUQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFFbEMsSUFBSSxpQkFBaUIsSUFBSSxDQUFDLEtBQUssRUFBRTtvQkFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7d0JBQ25CLFVBQVUsQ0FBQyxHQUFHLEVBQUU7NEJBRWQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQzs0QkFDbEMsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO2dDQUVsQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FFckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLDJCQUEyQixHQUFHLFNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0NBQ3JGLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLFVBQVUsS0FBSyxHQUFHLEVBQUU7d0NBQzFELE1BQU0sSUFBSSxHQUFzQixDQUFDLENBQUMsSUFBSSxDQUFBO3dDQUN0QyxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssR0FBRyxFQUFFOzRDQUMzQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO2dEQUN6QixHQUFHLElBQUksQ0FBQyxTQUFTO2dEQUNqQixTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUU7NkNBQ2hDLENBQUMsQ0FBQTt5Q0FDSDtxQ0FDRjt5Q0FBTTt3Q0FDTCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztxQ0FDdkI7b0NBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7b0NBRWhDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7d0NBQ2QsSUFBSSxDQUFDLENBQUMsWUFBWSxFQUFFOzRDQUNsQixNQUFNLG9CQUFvQixHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQzs0Q0FDcEUsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxvQkFBcUIsQ0FBQyxDQUFBOzRDQUN4RCxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDOzRDQUUxRCxNQUFNLG9CQUFvQixHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQzs0Q0FDcEUsSUFBSSxDQUFDLENBQUMsb0JBQW9CLEVBQUU7Z0RBQzFCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztnREFDeEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDOzZDQUMxRDs0Q0FFRCxNQUFNLHVCQUF1QixHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQzs0Q0FDMUUsSUFBSSx1QkFBdUIsRUFBRTtnREFDM0IsTUFBTSxXQUFXLEdBQXFCLElBQUksQ0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztnREFDMUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7NkNBQ3BEO3lDQUNGO29DQUNILENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQTtnQ0FDVCxDQUFDLENBQUMsQ0FDSCxDQUFBOzZCQUdGO2lDQUFNO2dDQUVMLHVGQUF1RjtnQ0FDdkYsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsb0JBQW9CLFVBQVUsQ0FBQztnQ0FFL0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0NBbUJFOzZCQUdIO3dCQUVILENBQUMsQ0FBQyxDQUFBO3FCQUVIO2lCQUVGO3FCQUFNO29CQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUNqQztnQkFFRCxJQUFJLEtBQXdCLENBQUM7Z0JBQzdCLElBQUksS0FBd0IsQ0FBQztnQkFDN0IsSUFBSSxLQUF3QixDQUFDO2dCQUM3QixJQUFJLEtBQXdCLENBQUM7Z0JBRTdCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FDdEIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDaEIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBRWQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLEdBQUcsQ0FBQzt3QkFDRixJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRTt3QkFDdEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyw2QkFBNkIsRUFBRTt3QkFDbkQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUU7d0JBQ3BDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQztxQkFDcEQsQ0FBQyxDQUFDLElBQUksQ0FDTCxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsbUJBQW1CLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FDaEQsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUU7d0JBRXRCLE9BQU8sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLENBQUMsQ0FBQTt3QkFFekMsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUN4QixJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUU7NEJBQzlCLEtBQUssR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFBOzRCQUNmLElBQUksS0FBSyxDQUFDLFVBQVUsS0FBSyxHQUFHLEVBQUU7Z0NBQzVCLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7NkJBQ3RDO3lCQUNGO3dCQUVELE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQzdELElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRTs0QkFDOUIsS0FBSyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUE7NEJBQ2YsSUFBSSxLQUFLLENBQUMsVUFBVSxLQUFLLEdBQUcsRUFBRTtnQ0FDNUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDOzZCQUMzRzt5QkFDRjt3QkFFRCxNQUFNLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQ3hCLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRTs0QkFDOUIsS0FBSyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUE7NEJBQ2YsSUFBSSxLQUFLLENBQUMsVUFBVSxLQUFLLEdBQUcsRUFBRTtnQ0FDNUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQzs2QkFDekQ7eUJBQ0Y7d0JBRUQsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUN4QixJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUU7NEJBQzlCLEtBQUssR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFBOzRCQUNmLElBQUksS0FBSyxDQUFDLFVBQVUsS0FBSyxHQUFHLEVBQUU7Z0NBQzVCLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7NkJBQ3pEO3lCQUNGO3dCQUVELElBQUksS0FBSyxFQUFFLFVBQVUsS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLFVBQVUsS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLFVBQVUsS0FBSyxHQUFHLEVBQUU7NEJBRXZGLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7NEJBRS9CLElBQUksQ0FBQyxDQUFDLG1CQUFtQixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFO2dDQUMxRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztnQ0FDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQ0FDekQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQ0FDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dDQUMzQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzs2QkFDaEM7aUNBQU07Z0NBQ0wsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRTtxQ0FDakMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO29DQUViLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLFVBQVUsS0FBSyxHQUFHLEVBQUU7d0NBQzFELE1BQU0sSUFBSSxHQUFzQixDQUFDLENBQUMsSUFBSSxDQUFBO3dDQUN0QyxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssR0FBRyxFQUFFOzRDQUMzQixNQUFNLFdBQVcsR0FBYztnREFDN0IsR0FBRyxJQUFJLENBQUMsU0FBUztnREFDakIsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFOzZDQUNoQyxDQUFBOzRDQUNELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDOzRDQUMzQixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7eUNBQzFDO3FDQUNGO29DQUVELFVBQVUsQ0FBQyxHQUFHLEVBQUU7d0NBQ2QsSUFBSSxDQUFDLENBQUMsWUFBWSxFQUFFOzRDQUNsQixNQUFNLG9CQUFvQixHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQzs0Q0FDcEUsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxvQkFBcUIsQ0FBQyxDQUFBOzRDQUN4RCxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDOzRDQUUxRCxNQUFNLG9CQUFvQixHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQzs0Q0FDcEUsSUFBSSxDQUFDLENBQUMsb0JBQW9CLEVBQUU7Z0RBQzFCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztnREFDeEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDOzZDQUMxRDs0Q0FFRCxNQUFNLHVCQUF1QixHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQzs0Q0FDMUUsSUFBSSx1QkFBdUIsRUFBRTtnREFDM0IsTUFBTSxXQUFXLEdBQXFCLElBQUksQ0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztnREFDMUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7NkNBQ3BEO3lDQUNGO3dDQUNELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO29DQUNqQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUE7Z0NBRVQsQ0FBQyxDQUFDLENBQUE7NkJBQ0w7eUJBQ0Y7b0JBRUgsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtnQkFHSCxDQUFDLENBQUMsQ0FDSCxDQUFBO1lBRUgsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO1NBQzdEO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixPQUFPLENBQUMsR0FBRyxDQUFDLCtCQUErQixFQUFFLENBQUMsQ0FBQyxDQUFBO1NBQ2hEO2dCQUFTO1lBQ1IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQTtTQUN2QjtJQUVILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQTtJQUMvQyxDQUFDOzhHQWxVVSx3QkFBd0I7a0hBQXhCLHdCQUF3QixjQUZ2QixNQUFNOzsyRkFFUCx3QkFBd0I7a0JBSHBDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgemlwLCBjYXRjaEVycm9yLCBvZiwgU3Vic2NyaXB0aW9uLCBmaWx0ZXIgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9tdWx0aS1sYW5ndWFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTGF5b3V0U2VydmljZSB9IGZyb20gJy4vbGF5b3V0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9hcHAtY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJRm9ybWF0ZWRSZXNwb25zZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvSUZvcm1hdGVkUmVzcG9uc2UnO1xyXG5pbXBvcnQgeyBJQXV0aERhdGEgfSBmcm9tICcuLi9pbnRlcmZhY2VzL0lBdXRoRGF0YSc7XHJcbmltcG9ydCB7IFJvdXRpbmdTZXJ2aWNlIH0gZnJvbSAnLi9yb3V0aW5nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPcmdhbml6YXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9vcmdhbml6YXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IElFdmVyeVRyZWVTdGF0dXMgfSBmcm9tICcuLi9saWJyYXJpZXMvc2VydmljZXMvcmVjdXJzaXZlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBcHBTZXJ2aWNlIH0gZnJvbSAnLi9hcHAuc2VydmljZSc7XHJcbmltcG9ydCB7IGFwaSB9IGZyb20gJ2FscGhhLWdsb2JhbC1jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBHcnBjU2VydmljZSB9IGZyb20gJy4vZ3JwYy5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEFwcEluaXRpYWxpemF0aW9uU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiBcclxuICBpbml0aWFsaXppbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcclxuICBzc29Qcm9jZXNzaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XHJcbiAgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgcHJpbWFyeUluaXRpYWxpemVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc3RvcmVTZXNzaW9uT2s6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcGVuZGluZ0F1dGhEYXRhJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SUF1dGhEYXRhIHwgbnVsbD4obnVsbCk7XHJcblxyXG4gIHNzb0ZhaWxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsYXlvdXRTZXJ2aWNlOiBMYXlvdXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBvcmdhbml6YXRpb25TZXJ2aWNlOiBPcmdhbml6YXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0aW5nU2VydmljZTogUm91dGluZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwcENvbmZpZ1NlcnZpY2U6IEFwcENvbmZpZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwcFNlcnZpY2U6IEFwcFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGdycGNTZXJ2aWNlOiBHcnBjU2VydmljZSxcclxuICApIHtcclxuXHJcbiAgfVxyXG5cclxuICBhcHBJbml0aWFsaXplKCk6IHZvaWQge1xyXG5cclxuICAgIC8qXHJcbiAgICBjb25zdCB0b0NhbWVsID0gKG86IGFueSk6IGFueSA9PiB7XHJcbiAgICAgIHZhciBuZXdPLCBvcmlnS2V5LCBuZXdLZXksIHZhbHVlXHJcbiAgICAgIGlmIChvIGluc3RhbmNlb2YgQXJyYXkpIHtcclxuICAgICAgICByZXR1cm4gby5tYXAoZnVuY3Rpb24gKHZhbHVlKSB7XHJcbiAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiKSB7XHJcbiAgICAgICAgICAgIHZhbHVlID0gdG9DYW1lbCh2YWx1ZSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiB2YWx1ZVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbmV3TyA9IHt9XHJcbiAgICAgICAgZm9yIChvcmlnS2V5IGluIG8pIHtcclxuICAgICAgICAgIGlmIChvLmhhc093blByb3BlcnR5KG9yaWdLZXkpKSB7XHJcbiAgICAgICAgICAgIG5ld0tleSA9IChvcmlnS2V5LmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpICsgb3JpZ0tleS5zbGljZSgxKSB8fCBvcmlnS2V5KS50b1N0cmluZygpXHJcbiAgICAgICAgICAgIHZhbHVlID0gb1tvcmlnS2V5XVxyXG4gICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSB8fCAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUuY29uc3RydWN0b3IgPT09IE9iamVjdCkpIHtcclxuICAgICAgICAgICAgICB2YWx1ZSA9IHRvQ2FtZWwodmFsdWUpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKG5ld08gYXMgYW55KVtuZXdLZXldID0gdmFsdWVcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG5ld09cclxuICAgIH1cclxuICAgICovXHJcblxyXG4gICAgdHJ5IHtcclxuXHJcbiAgICAgIGZldGNoKCcuLi8uLi9hc3NldHMvYXBwLmNvbmZpZy5qc29uJykudGhlbihyZXMgPT4gcmVzLmpzb24oKSkudGhlbigoe1xyXG5cclxuICAgICAgICBBUFBfVFlQRSxcclxuICAgICAgICBCQVNFX1VSTCwgICAgIFxyXG4gICAgICAgIEdPTElWRV9VUkwsXHJcbiAgICAgICAgREVCVUdfRU5BQkxFRCxcclxuXHJcbiAgICAgICAgTE9HT19MT0dJTixcclxuICAgICAgICBMT0dPX0hFQURFUixcclxuICAgICAgICBIT01FX0JBQ0tHUk9VTkRfSU1BR0UsIFxyXG5cclxuICAgICAgICBPQVVUSDJfT0lEQ19FTkFCTEVELFxyXG4gICAgICAgIE9BVVRIMl9PSURDX0NMSUVOVF9JRCxcclxuICAgICAgICBPQVVUSDJfT0lEQ19MT0dJTl9VUkksXHJcbiAgICAgICAgT0FVVEgyX09JRENfUkVESVJFQ1RfVVJJLFxyXG4gICAgICAgIE9BVVRIMl9PSURDX1NDT1BFLFxyXG5cclxuICAgICAgICBTQU1MMkFERlNfRU5BQkxFRCwgXHJcbiAgICAgICAgU0FNTDJBREZTX0lEUCwgXHJcbiAgICAgICAgU0FNTDJBREZTX0lERU5USUZJRVIsXHJcbiAgICAgICAgU0FNTDJBREZTX1dBX1NJR05JTixcclxuICAgICAgICBTQU1MMkFERlNfV0FfU0lHTk9VVCxcclxuICAgICAgICBTQU1MMkFERlNfV1JFUExZLFxyXG5cclxuICAgICAgICBIQU5HRklSRV9QQVRILFxyXG4gICAgICAgIFNUQVRJQ19GT0xERVIsXHJcbiAgICAgICAgQVZBVEFSX0ZPTERFUixcclxuXHJcbiAgICAgIH0pID0+IHtcclxuXHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLkFQUF9UWVBFID0gQVBQX1RZUEU7XHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLkJBU0VfVVJMID0gQkFTRV9VUkw7XHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLkdPTElWRV9VUkwgPSBHT0xJVkVfVVJMO1xyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5ERUJVR19FTkFCTEVEID0gREVCVUdfRU5BQkxFRDtcclxuXHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLkxPR09fTE9HSU4gPSBMT0dPX0xPR0lOO1xyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5MT0dPX0hFQURFUiA9IExPR09fSEVBREVSO1xyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5IT01FX0JBQ0tHUk9VTkRfSU1BR0UgPSBIT01FX0JBQ0tHUk9VTkRfSU1BR0U7XHJcblxyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5PQVVUSDJfT0lEQ19FTkFCTEVEID0gT0FVVEgyX09JRENfRU5BQkxFRDtcclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuT0FVVEgyX09JRENfQ0xJRU5UX0lEID0gT0FVVEgyX09JRENfQ0xJRU5UX0lEO1xyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5PQVVUSDJfT0lEQ19MT0dJTl9VUkkgPSBPQVVUSDJfT0lEQ19MT0dJTl9VUkk7XHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLk9BVVRIMl9PSURDX1JFRElSRUNUX1VSSSA9IE9BVVRIMl9PSURDX1JFRElSRUNUX1VSSTtcclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuT0FVVEgyX09JRENfU0NPUEUgPSBPQVVUSDJfT0lEQ19TQ09QRTtcclxuXHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLlNBTUwyQURGU19FTkFCTEVEID0gU0FNTDJBREZTX0VOQUJMRUQ7XHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLlNBTUwyQURGU19JRFAgPSBTQU1MMkFERlNfSURQO1xyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5TQU1MMkFERlNfSURFTlRJRklFUiA9IFNBTUwyQURGU19JREVOVElGSUVSO1xyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5TQU1MMkFERlNfV0FfU0lHTklOID0gU0FNTDJBREZTX1dBX1NJR05JTjtcclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuU0FNTDJBREZTX1dBX1NJR05PVVQgPSBTQU1MMkFERlNfV0FfU0lHTk9VVDtcclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuU0FNTDJBREZTX1dSRVBMWSA9IFNBTUwyQURGU19XUkVQTFk7XHJcblxyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5IQU5HRklSRV9QQVRIID0gSEFOR0ZJUkVfUEFUSDtcclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuU1RBVElDX0ZPTERFUiA9IFNUQVRJQ19GT0xERVI7XHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLkFWQVRBUl9GT0xERVIgPSBBVkFUQVJfRk9MREVSO1xyXG5cclxuICAgICAgICBjb25zdCBwYXJhbXMgPSAobmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZikpLnNlYXJjaFBhcmFtcztcclxuICAgICAgICBjb25zdCBsb2NhbCA9IHBhcmFtcy5nZXQoXCJsb2NhbFwiKTtcclxuXHJcbiAgICAgICAgaWYgKFNBTUwyQURGU19FTkFCTEVEICYmICFsb2NhbCkge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLnNzb0ZhaWxlZCkge1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBjb25zdCB0b2tlbiA9IHBhcmFtcy5nZXQoXCJ0b2tlblwiKTtcclxuICAgICAgICAgICAgICBpZiAodG9rZW4gIT09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmFwcFNlcnZpY2UuZ2V0KGFwaS5TWVNfU0hPUlRfTElWRURfVE9LRU5fTE9HSU4gKyBcIj90b2tlbj1cIiArIHRva2VuKS5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHgub2sgJiYgeC5zdGF0dXMgPT09IDIwMCAmJiB4LmJvZHk/LnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9keTogSUZvcm1hdGVkUmVzcG9uc2UgPSB4LmJvZHlcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChib2R5LnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBlbmRpbmdBdXRoRGF0YSQubmV4dCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYm9keS5pbm5lckJvZHksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naW5UaW1lOiBuZXcgRGF0ZSgpLmdldFRpbWUoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNzb0ZhaWxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3NvUHJvY2Vzc2luZyQubmV4dChmYWxzZSk7XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmICghIWxvY2FsU3RvcmFnZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsZWZ0YmFyUmVkdWNlZFN0cmluZyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsZWZ0YmFyUmVkdWNlZCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsZWZ0YmFyUmVkdWNlZCA9IEpTT04ucGFyc2UobGVmdGJhclJlZHVjZWRTdHJpbmchKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxheW91dFNlcnZpY2UubGVmdGJhclJlZHVjZWQkLm5leHQoISFsZWZ0YmFyUmVkdWNlZCk7XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgcm91dGluZ0hpc3RvcnlTdHJpbmcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncm91dGluZ0hpc3RvcnknKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEhcm91dGluZ0hpc3RvcnlTdHJpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByb3V0aW5nSGlzdG9yeSA9IEpTT04ucGFyc2Uocm91dGluZ0hpc3RvcnlTdHJpbmcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2Uucm91dGluZ0hpc3RvcnkkLm5leHQocm91dGluZ0hpc3RvcnkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29yZU9yZ1RyZWVTdGF0dXNTdHJpbmcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImNvcmVPcmdUcmVlU3RhdHVzXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29yZU9yZ1RyZWVTdGF0dXNTdHJpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzYXZlZE9iamVjdDogSUV2ZXJ5VHJlZVN0YXR1cyA9IEpTT04ucGFyc2UoY29yZU9yZ1RyZWVTdGF0dXNTdHJpbmcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3JnYW5pemF0aW9uU2VydmljZS5zdGF0dXMkLm5leHQoc2F2ZWRPYmplY3QpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSwgMjAwKVxyXG4gICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgXHJcbiAgICBcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIEFMV0FZUyBSRURJUkVDVCBUTyBUSEUgQU5HVUxBUiBBUFBMSUNBVElPTiBMT0dJTiBQQUdFIElGIE5PIFNFU1NJT04gRk9VTkQgKD9sb2NhbD0xKVxyXG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgJHt0aGlzLmFwcENvbmZpZ1NlcnZpY2UuU0FNTDJBREZTX0lERU5USUZJRVJ9P2xvY2FsPTFgO1xyXG5cclxuICAgICAgICAgICAgICAgIC8qXHJcblxyXG4gICAgICAgICAgICAgICAgLy9JRiBUSEUgQU5HVUxBUiBBUFBMSUNBVElPTiBMT0dJTiBQQUdFIElTIE5PVCBNQU5EQVRPUlkgPT4gQ0FMTCBTQU1MMi4wIElkUFxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvZGVWZXJpZmllciA9IHRoaXMuYXV0aFNlcnZpY2UuZ2VuZXJhdGVSYW5kb21Db2RlVmVyaWZpZXIoNDMpO1xyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJjb2RlVmVyaWZpZXJcIiwgY29kZVZlcmlmaWVyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2VuZXJhdGVDb2RlQ2hhbGxlbmdlRnJvbVZlcmlmaWVyKGNvZGVWZXJpZmllcikudGhlbihjb2RlQ2hhbGxlbmdlID0+IHtcclxuICAgICAgICAgICAgICAgICAgY29uc3QgYXV0aG9yaXphdGlvblVybCA9IGAke3RoaXMuYXBwQ29uZmlnU2VydmljZS5TQU1MMkFERlNfSURQfT9gICtcclxuICAgICAgICAgICAgICAgICAgICBgd3RyZWFsbT0ke3RoaXMuYXBwQ29uZmlnU2VydmljZS5TQU1MMkFERlNfSURFTlRJRklFUn1gICtcclxuICAgICAgICAgICAgICAgICAgICBgJndhPSR7dGhpcy5hcHBDb25maWdTZXJ2aWNlLlNBTUwyQURGU19XQV9TSUdOSU4gfHwgJ3dzaWduaW4xLjAnfWAgKyBcclxuICAgICAgICAgICAgICAgICAgICBgJndyZXBseT0ke3RoaXMuYXBwQ29uZmlnU2VydmljZS5CQVNFX1VSTH0ke3RoaXMuYXBwQ29uZmlnU2VydmljZS5TQU1MMkFERlNfV1JFUExZfWAgKyBcclxuICAgICAgICAgICAgICAgICAgICBgJndjdHg9JHtjb2RlQ2hhbGxlbmdlfWBcclxuICAgICAgICAgICAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWxlcnQoYXV0aG9yaXphdGlvblVybCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYXV0aG9yaXphdGlvblVybDtcclxuXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICovXHJcblxyXG5cclxuICAgICAgICAgICAgICB9XHJcbiAgXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNzb1Byb2Nlc3NpbmckLm5leHQoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGJvZHkxOiBJRm9ybWF0ZWRSZXNwb25zZTtcclxuICAgICAgICBsZXQgYm9keTI6IElGb3JtYXRlZFJlc3BvbnNlO1xyXG4gICAgICAgIGxldCBib2R5MzogSUZvcm1hdGVkUmVzcG9uc2U7XHJcbiAgICAgICAgbGV0IGJvZHk0OiBJRm9ybWF0ZWRSZXNwb25zZTtcclxuXHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICB0aGlzLnNzb1Byb2Nlc3NpbmckLnBpcGUoXHJcbiAgICAgICAgICAgIGZpbHRlcih4ID0+ICF4KVxyXG4gICAgICAgICAgKS5zdWJzY3JpYmUoXyA9PiB7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICAgICAgICB6aXAoW1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tbHMucmVhZEFsbE1pbmkoKSxcclxuICAgICAgICAgICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UucmVhZEFsbEZ1bmN0aW9uV2l0aEFsbEFjdGlvbnMoKSxcclxuICAgICAgICAgICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UuZ2V0SWdub3JlUGF0aHMoKSxcclxuICAgICAgICAgICAgICAgIHRoaXMuYXBwU2VydmljZS5nZXQoYXBpLlBPUlRBTF9ST1VURV9SRUFEX0FMTF9NSU5JKVxyXG4gICAgICAgICAgICAgIF0pLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKHZhbCA9PiBvZihgVGhlIGFwcCBjYXVnaHQ6ICR7dmFsfWApKVxyXG4gICAgICAgICAgICAgICkuc3Vic2NyaWJlKHJlc3BvbnNlcyA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJhcHBJbml0aWFsaXplKCkgemlwKCkgZG9uZVwiKVxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHgxID0gcmVzcG9uc2VzWzBdO1xyXG4gICAgICAgICAgICAgICAgaWYgKHgxLm9rICYmIHgxLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIGJvZHkxID0geDEuYm9keVxyXG4gICAgICAgICAgICAgICAgICBpZiAoYm9keTEuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tbHMuZGF0YSQubmV4dChib2R5MS5pbm5lckJvZHkpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgeDIgPSB0aGlzLmdycGNTZXJ2aWNlLmNvbnZlcnRUb0NhbWVsQ2FzZShyZXNwb25zZXNbMV0pO1xyXG4gICAgICAgICAgICAgICAgaWYgKHgyLm9rICYmIHgyLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIGJvZHkyID0geDIuYm9keVxyXG4gICAgICAgICAgICAgICAgICBpZiAoYm9keTIuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5mdWxsRnVuY3Rpb25zJC5uZXh0KHRoaXMuZ3JwY1NlcnZpY2UuY29udmVydFRvQ2FtZWxDYXNlKEpTT04ucGFyc2UoYm9keTIuaW5uZXJCb2R5KSkpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgeDMgPSByZXNwb25zZXNbMl07XHJcbiAgICAgICAgICAgICAgICBpZiAoeDMub2sgJiYgeDMuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgYm9keTMgPSB4My5ib2R5XHJcbiAgICAgICAgICAgICAgICAgIGlmIChib2R5My5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLmlnbm9yZWRQYXRocyQubmV4dChib2R5My5pbm5lckJvZHkpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgeDQgPSByZXNwb25zZXNbM107XHJcbiAgICAgICAgICAgICAgICBpZiAoeDQub2sgJiYgeDQuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgYm9keTQgPSB4NC5ib2R5XHJcbiAgICAgICAgICAgICAgICAgIGlmIChib2R5NC5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLnBvcnRhbFJvdXRlcyQubmV4dChib2R5NC5pbm5lckJvZHkpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGJvZHkxPy5zdGF0dXNDb2RlID09PSAyMDAgJiYgYm9keTI/LnN0YXR1c0NvZGUgPT09IDIwMCAmJiBib2R5Mz8uc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByaW1hcnlJbml0aWFsaXplZCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICAgICAgICBpZiAoISFPQVVUSDJfT0lEQ19FTkFCTEVEICYmICEhdGhpcy5wZW5kaW5nQXV0aERhdGEkLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9yZVNlc3Npb25PayA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZS5kYXRhJC5uZXh0KHRoaXMucGVuZGluZ0F1dGhEYXRhJC52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wZW5kaW5nQXV0aERhdGEkLm5leHQobnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZS5hdXRoZW50aWNhdGVkJC5uZXh0KHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6aW5nJC5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLnRyeVJlc3RvcmVTZXNzaW9uKClcclxuICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoeCA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoeC5vayAmJiB4LnN0YXR1cyA9PT0gMjAwICYmIHguYm9keT8uc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9keTogSUZvcm1hdGVkUmVzcG9uc2UgPSB4LmJvZHlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYm9keS5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld0F1dGhEYXRhOiBJQXV0aERhdGEgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmJvZHkuaW5uZXJCb2R5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpblRpbWU6IG5ldyBEYXRlKCkuZ2V0VGltZSgpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3JlU2Vzc2lvbk9rID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQubmV4dChuZXdBdXRoRGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISFsb2NhbFN0b3JhZ2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxlZnRiYXJSZWR1Y2VkU3RyaW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xlZnRiYXJSZWR1Y2VkJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsZWZ0YmFyUmVkdWNlZCA9IEpTT04ucGFyc2UobGVmdGJhclJlZHVjZWRTdHJpbmchKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sYXlvdXRTZXJ2aWNlLmxlZnRiYXJSZWR1Y2VkJC5uZXh0KCEhbGVmdGJhclJlZHVjZWQpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJvdXRpbmdIaXN0b3J5U3RyaW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3JvdXRpbmdIaXN0b3J5Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISFyb3V0aW5nSGlzdG9yeVN0cmluZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByb3V0aW5nSGlzdG9yeSA9IEpTT04ucGFyc2Uocm91dGluZ0hpc3RvcnlTdHJpbmcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLnJvdXRpbmdIaXN0b3J5JC5uZXh0KHJvdXRpbmdIaXN0b3J5KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb3JlT3JnVHJlZVN0YXR1c1N0cmluZyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY29yZU9yZ1RyZWVTdGF0dXNcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29yZU9yZ1RyZWVTdGF0dXNTdHJpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2F2ZWRPYmplY3Q6IElFdmVyeVRyZWVTdGF0dXMgPSBKU09OLnBhcnNlKGNvcmVPcmdUcmVlU3RhdHVzU3RyaW5nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLnN0YXR1cyQubmV4dChzYXZlZE9iamVjdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6aW5nJC5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgMjAwKVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKVxyXG5cclxuXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIClcclxuXHJcbiAgICAgIH0pLmNhdGNoKGUgPT4gY29uc29sZS5sb2coXCJmZXRjaCBhcHAuY29uZmlnLmpzb24gZXJyb3JcIiwgZSkpXHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiYXBwSW5pdGlhbGl6ZSgpIHppcCgpIGVycm9yOiBcIiwgZSlcclxuICAgIH0gZmluYWxseSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiZmluYWxseVwiKVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLm1hcCh4ID0+IHg/LnVuc3Vic2NyaWJlKCkpXHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|