ngx-histaff-alpha 2.2.0 → 2.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/app/enum/EnumFormBaseContolType.mjs +4 -1
- package/esm2022/lib/app/interfaces/IQueryListRequest.mjs +1 -1
- package/esm2022/lib/app/libraries/contractinfor/contractinfor.component.mjs +2 -2
- package/esm2022/lib/app/libraries/core-contract-seeker/core-contract-seeker/core-contract-seeker.component.mjs +9 -4
- package/esm2022/lib/app/libraries/core-control/core-control/core-control.component.mjs +3 -3
- package/esm2022/lib/app/libraries/core-control-no-grid-buffer/core-control-no-grid-buffer/core-control-no-grid-buffer.component.mjs +2 -2
- package/esm2022/lib/app/libraries/core-employee-seeker/core-employee-seeker/core-employee-seeker.component.mjs +8 -5
- package/esm2022/lib/app/libraries/core-form/core-form/enum-interfaces.mjs +1 -1
- package/esm2022/lib/app/libraries/core-form-control-seeker/core-form-control-seeker/core-form-control-seeker.component.mjs +13 -4
- package/esm2022/lib/app/libraries/core-job-seeker/core-job-seeker.component.mjs +9 -4
- package/esm2022/lib/app/libraries/core-loading-surface/core-loading-surface/core-loading-surface.component.mjs +3 -3
- package/esm2022/lib/app/libraries/core-mcc/core-mcc/core-mcc.component.mjs +2 -2
- package/esm2022/lib/app/libraries/core-org-tree/core-org-tree/core-org-tree.component.mjs +5 -2
- package/esm2022/lib/app/libraries/core-org-unit-seeker/core-org-unit-seeker/core-org-unit-seeker.component.mjs +9 -5
- package/esm2022/lib/app/libraries/core-page-list/core-page-list.component.mjs +11 -2
- package/esm2022/lib/app/libraries/core-permission/core-permission/core-permission.component.mjs +2 -2
- package/esm2022/lib/app/libraries/core-permission-actions/core-permission-actions/core-permission-actions.component.mjs +2 -2
- package/esm2022/lib/app/libraries/core-position-concurrent-seeker/core-position-concurrent-seeker/core-position-concurrent-seeker.component.mjs +9 -4
- package/esm2022/lib/app/libraries/core-position-seeker/core-position-seeker/core-position-seeker.component.mjs +6 -3
- package/esm2022/lib/app/libraries/core-table/core-table.component.mjs +4 -4
- package/esm2022/lib/app/libraries/core-tree-grid/core-tree-grid/core-tree-grid.component.mjs +3 -3
- package/esm2022/lib/app/libraries/core-wage-seeker/core-wage-seeker/core-wage-seeker.component.mjs +9 -4
- package/esm2022/lib/app/libraries/core-working-seeker/core-working-seeker/core-working-seeker.component.mjs +9 -4
- package/esm2022/lib/app/libraries/decision/decision.component.mjs +2 -2
- package/esm2022/lib/app/libraries/huconcurrently/huconcurrently.component.mjs +2 -2
- package/esm2022/lib/app/libraries/job/job.component.mjs +2 -5
- package/esm2022/lib/app/libraries/position/position.component.mjs +2 -2
- package/esm2022/lib/app/libraries/staffprofile/staffprofile.component.mjs +2 -2
- package/esm2022/lib/app/libraries/wage/wage.component.mjs +2 -2
- package/esm2022/lib/app/root/function/function.component.mjs +2 -2
- package/esm2022/lib/app/root/function-ignore/function-ignore/function-ignore.component.mjs +1 -1
- package/esm2022/lib/app/root/groupfunction/groupfunction.component.mjs +1 -1
- package/esm2022/lib/app/root/language/language/language.component.mjs +1 -1
- package/esm2022/lib/app/root/mutation-log/mutation-log/mutation-log.component.mjs +1 -1
- package/esm2022/lib/app/root/portal-route/portal-route.component.mjs +1 -1
- package/esm2022/lib/app/root/sys-action/sys-action/sys-action.component.mjs +1 -1
- package/esm2022/lib/app/root/sys-function-action/sys-function-action/sys-function-action.component.mjs +1 -1
- package/esm2022/lib/app/root/sys-module/sys-module/sys-module.component.mjs +2 -2
- package/fesm2022/ngx-histaff-alpha.mjs +108 -59
- package/fesm2022/ngx-histaff-alpha.mjs.map +1 -1
- package/lib/app/interfaces/IQueryListRequest.d.ts +1 -0
- package/lib/app/libraries/core-contract-seeker/core-contract-seeker/core-contract-seeker.component.d.ts +2 -1
- package/lib/app/libraries/core-employee-seeker/core-employee-seeker/core-employee-seeker.component.d.ts +2 -1
- package/lib/app/libraries/core-form/core-form/enum-interfaces.d.ts +15 -15
- package/lib/app/libraries/core-form-control-seeker/core-form-control-seeker/core-form-control-seeker.component.d.ts +3 -1
- package/lib/app/libraries/core-job-seeker/core-job-seeker.component.d.ts +2 -1
- package/lib/app/libraries/core-org-tree/core-org-tree/core-org-tree.component.d.ts +3 -2
- package/lib/app/libraries/core-org-unit-seeker/core-org-unit-seeker/core-org-unit-seeker.component.d.ts +3 -1
- package/lib/app/libraries/core-page-list/core-page-list.component.d.ts +2 -1
- package/lib/app/libraries/core-position-concurrent-seeker/core-position-concurrent-seeker/core-position-concurrent-seeker.component.d.ts +2 -1
- package/lib/app/libraries/core-position-seeker/core-position-seeker/core-position-seeker.component.d.ts +2 -1
- package/lib/app/libraries/core-wage-seeker/core-wage-seeker/core-wage-seeker.component.d.ts +2 -1
- package/lib/app/libraries/core-working-seeker/core-working-seeker/core-working-seeker.component.d.ts +2 -1
- package/lib/app/libraries/job/job.component.d.ts +1 -2
- package/package.json +1 -1
package/esm2022/lib/app/libraries/core-permission/core-permission/core-permission.component.mjs
CHANGED
|
@@ -475,7 +475,7 @@ export class CorePermissionComponent extends BaseComponent {
|
|
|
475
475
|
this.corePermissionService.selectedObjectActionPermissions$.next([]);
|
|
476
476
|
}
|
|
477
477
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CorePermissionComponent, deps: [{ token: i1.MultiLanguageService }, { token: i2.DialogService }, { token: i3.RandomAvatarService }, { token: i4.CorePermissionService }, { token: i5.AppService }, { token: i6.LayoutService }, { token: i7.AlertService }, { token: i8.Router }, { token: i8.ActivatedRoute }, { token: i9.AuthService }, { token: i10.DomService }, { token: i11.AppConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
478
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: CorePermissionComponent, isStandalone: true, selector: "core-permission", inputs: { type: "type" }, viewQueries: [{ propertyName: "avatar", first: true, predicate: ["avatar"], descendants: true }, { propertyName: "actions", first: true, predicate: ["actions"], descendants: true }, { propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div #container class=\"core-permission-container\" [ngStyle]=\"{ height: height + 'px'}\">\r\n <core-page-header [title]=\"title\" (buttonClick)=\"onCorePageHeaderButtonClick($event)\"></core-page-header>\r\n\r\n <core-composition [left]=\"userSeeker\" [leftWidth]=\"200\" [main]=\"tabs\" [height]=\"compositionHeight\">\r\n </core-composition>\r\n\r\n <div class=\"state-tracker container container-fluid\" *ngIf=\"showStateTracker && isRootUser\">\r\n <div class=\"w-100 d-flex d-flex-between\">\r\n <span>Compare</span>\r\n <i class=\"feather-x\" (click)=\"onClickCloseState()\"></i>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n {{ initialActionPermissionValueJsonString }}\r\n </div>\r\n <div class=\"col-md-6\">\r\n {{ currentActionPermissionValueJsonString }}\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n {{ initialOrgPermissionValueJsonString }}\r\n </div>\r\n <div class=\"col-md-6\">\r\n {{ currentOrgPermissionValueJsonString }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n\r\n<ng-template #tabs>\r\n <core-tabs [headers]=\"tabHeaders\" [contents]=\"[tab1, tab2]\" [height]=\"compositionHeight\"></core-tabs>\r\n</ng-template>\r\n\r\n<ng-template #tab1>\r\n <div [ngStyle]=\"{ height: layoutService.basicSpacing + 'px' }\"></div>\r\n <core-permission-actions [loading]=\"loading\" [(ngModel)]=\"actionPermissionValue\"\r\n (ngModelChange)=\"onActionPermissionValueChange($event)\" [disabled]=\"!!!allowEdit\" [height]=\"corePermissionActionsHeight\"></core-permission-actions>\r\n</ng-template>\r\n\r\n<ng-template #userSeeker>\r\n\r\n <core-list-lazy [queryListApi]=\"objectQueryListApi\" [textField]=\"objectListTextField\" [(ngModel)]=\"objectId\"\r\n (ngModelChange)=\"onObjectIdChange($event)\" [height]=\"compositionHeight\" [blockingInteraction$]=\"blockingLeftListInteraction$\"></core-list-lazy>\r\n\r\n\r\n</ng-template>\r\n\r\n<ng-template #tab2>\r\n <div [ngStyle]=\"{ height: layoutService.basicSpacing + 'px' }\"></div>\r\n <core-org-tree [fullWidthMode]=\"true\" [accessorMode]=\"treeAccessorMode\" [(ngModel)]=\"orgIds\" [disabled]=\"!!!allowEdit\"\r\n (itemClick)=\"onOrgTreeItemCheck($event)\" name=\"orgIds\" ngDefaultControl [height]=\"treeHeight\"></core-org-tree>\r\n</ng-template>", styles: [".core-permission-container{--z-index: 1}.core-permission-container .state-tracker{display:block;position:fixed;width:100%;height:50vh;top:0;left:0;z-index:var(--z-index);background-color:wheat}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i12.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i12.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i13.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i13.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i13.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CoreOrgTreeComponent, selector: "core-org-tree", inputs: ["lineColor", "fullWidthMode", "accessorMode", "fullRendering", "height", "disabledLoopExpand", "showCheckInheritance"], outputs: ["itemDoubleClick", "itemClick"] }, { kind: "component", type: CoreTabsComponent, selector: "core-tabs", inputs: ["headers", "contents", "headerTools", "height", "headerLineHeight"], outputs: ["onHeaderClick", "onToolItemClick"] }, { kind: "component", type: CorePageHeaderComponent, selector: "core-page-header", inputs: ["instanceNumber", "shownItems", "title", "hideButtonGroup"], outputs: ["buttonClick"] }, { kind: "component", type: CoreCompositionComponent, selector: "core-composition", inputs: ["coreCompositionInstanceNumber", "top", "left", "leftWidth", "main", "height", "defaultResizeOff"] }, { kind: "component", type: CoreListLazyComponent, selector: "core-list-lazy", inputs: ["title", "queryListApi", "textField", "pipe", "height", "blockingInteraction$"] }, { kind: "component", type: CorePermissionActionsComponent, selector: "core-permission-actions", inputs: ["loading", "height"] }] }); }
|
|
478
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: CorePermissionComponent, isStandalone: true, selector: "core-permission", inputs: { type: "type" }, viewQueries: [{ propertyName: "avatar", first: true, predicate: ["avatar"], descendants: true }, { propertyName: "actions", first: true, predicate: ["actions"], descendants: true }, { propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div #container class=\"core-permission-container\" [ngStyle]=\"{ height: height + 'px'}\">\r\n <core-page-header [title]=\"title\" (buttonClick)=\"onCorePageHeaderButtonClick($event)\"></core-page-header>\r\n\r\n <core-composition [left]=\"userSeeker\" [leftWidth]=\"200\" [main]=\"tabs\" [height]=\"compositionHeight\">\r\n </core-composition>\r\n\r\n <div class=\"state-tracker container container-fluid\" *ngIf=\"showStateTracker && isRootUser\">\r\n <div class=\"w-100 d-flex d-flex-between\">\r\n <span>Compare</span>\r\n <i class=\"feather-x\" (click)=\"onClickCloseState()\"></i>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n {{ initialActionPermissionValueJsonString }}\r\n </div>\r\n <div class=\"col-md-6\">\r\n {{ currentActionPermissionValueJsonString }}\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n {{ initialOrgPermissionValueJsonString }}\r\n </div>\r\n <div class=\"col-md-6\">\r\n {{ currentOrgPermissionValueJsonString }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n\r\n<ng-template #tabs>\r\n <core-tabs [headers]=\"tabHeaders\" [contents]=\"[tab1, tab2]\" [height]=\"compositionHeight\"></core-tabs>\r\n</ng-template>\r\n\r\n<ng-template #tab1>\r\n <div [ngStyle]=\"{ height: layoutService.basicSpacing + 'px' }\"></div>\r\n <core-permission-actions [loading]=\"loading\" [(ngModel)]=\"actionPermissionValue\"\r\n (ngModelChange)=\"onActionPermissionValueChange($event)\" [disabled]=\"!!!allowEdit\" [height]=\"corePermissionActionsHeight\"></core-permission-actions>\r\n</ng-template>\r\n\r\n<ng-template #userSeeker>\r\n\r\n <core-list-lazy [queryListApi]=\"objectQueryListApi\" [textField]=\"objectListTextField\" [(ngModel)]=\"objectId\"\r\n (ngModelChange)=\"onObjectIdChange($event)\" [height]=\"compositionHeight\" [blockingInteraction$]=\"blockingLeftListInteraction$\"></core-list-lazy>\r\n\r\n\r\n</ng-template>\r\n\r\n<ng-template #tab2>\r\n <div [ngStyle]=\"{ height: layoutService.basicSpacing + 'px' }\"></div>\r\n <core-org-tree [fullWidthMode]=\"true\" [accessorMode]=\"treeAccessorMode\" [(ngModel)]=\"orgIds\" [disabled]=\"!!!allowEdit\"\r\n (itemClick)=\"onOrgTreeItemCheck($event)\" name=\"orgIds\" ngDefaultControl [height]=\"treeHeight\"></core-org-tree>\r\n</ng-template>", styles: [".core-permission-container{--z-index: 1}.core-permission-container .state-tracker{display:block;position:fixed;width:100%;height:50vh;top:0;left:0;z-index:var(--z-index);background-color:wheat}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i12.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i12.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i13.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i13.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i13.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CoreOrgTreeComponent, selector: "core-org-tree", inputs: ["lineColor", "fullWidthMode", "accessorMode", "fullRendering", "height", "disabledLoopExpand", "showCheckInheritance", "excludedIds$"], outputs: ["itemDoubleClick", "itemClick"] }, { kind: "component", type: CoreTabsComponent, selector: "core-tabs", inputs: ["headers", "contents", "headerTools", "height", "headerLineHeight"], outputs: ["onHeaderClick", "onToolItemClick"] }, { kind: "component", type: CorePageHeaderComponent, selector: "core-page-header", inputs: ["instanceNumber", "shownItems", "title", "hideButtonGroup"], outputs: ["buttonClick"] }, { kind: "component", type: CoreCompositionComponent, selector: "core-composition", inputs: ["coreCompositionInstanceNumber", "top", "left", "leftWidth", "main", "height", "defaultResizeOff"] }, { kind: "component", type: CoreListLazyComponent, selector: "core-list-lazy", inputs: ["title", "queryListApi", "textField", "pipe", "height", "blockingInteraction$"] }, { kind: "component", type: CorePermissionActionsComponent, selector: "core-permission-actions", inputs: ["loading", "height"] }] }); }
|
|
479
479
|
}
|
|
480
480
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CorePermissionComponent, decorators: [{
|
|
481
481
|
type: Component,
|
|
@@ -506,4 +506,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
506
506
|
type: ViewChild,
|
|
507
507
|
args: ['container']
|
|
508
508
|
}] } });
|
|
509
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1wZXJtaXNzaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLXBlcm1pc3Npb24vY29yZS1wZXJtaXNzaW9uL2NvcmUtcGVybWlzc2lvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS1wZXJtaXNzaW9uL2NvcmUtcGVybWlzc2lvbi9jb3JlLXBlcm1pc3Npb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWMsS0FBSyxFQUFlLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0csT0FBTyxFQUFFLGVBQWUsRUFBYyxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHdEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxrQkFBa0IsRUFBbUIsTUFBTSx1Q0FBdUMsQ0FBQztBQUU1RixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFjNUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLDRCQUE0QixFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFDNUksT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0ZBQXNGLENBQUM7QUFDN0gsT0FBTyxFQUFFLFlBQVksRUFBRSwwQkFBMEIsRUFB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QUNaLFdBQVcsa25CQUNYLG9CQUFvQixzT0FFcEIsaUJBQWlCLG1MQUNqQix1QkFBdUIsNkpBQ3ZCLHdCQUF3QiwwS0FDeEIscUJBQXFCLHFKQUdyQiw4QkFBOEI7OzJGQU9yQix1QkFBdUI7a0JBckJuQyxTQUFTOytCQUNFLGlCQUFpQixjQUNmLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsb0JBQW9CO3dCQUNwQiw0QkFBNEI7d0JBQzVCLGlCQUFpQjt3QkFDakIsdUJBQXVCO3dCQUN2Qix3QkFBd0I7d0JBQ3hCLHFCQUFxQjt3QkFDckIsYUFBYTt3QkFDYixpQkFBaUI7d0JBQ2pCLDhCQUE4Qjt3QkFDOUIsMEJBQTBCO3dCQUMxQix3QkFBd0I7cUJBQ3pCO2laQU1RLElBQUk7c0JBQVosS0FBSztnQkFDZSxNQUFNO3NCQUExQixTQUFTO3VCQUFDLFFBQVE7Z0JBQ0csT0FBTztzQkFBNUIsU0FBUzt1QkFBQyxTQUFTO2dCQUNJLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIGlzRGV2TW9kZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbWFwLCBzd2l0Y2hNYXAsIHppcCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IFJvdXRlciwgQWN0aXZhdGVkUm91dGUgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcblxyXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uLy4uL2xpYnJhcmllcy9iYXNlLWNvbXBvbmVudC9iYXNlL2Jhc2UuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEVudW1UcmFuc2xhdGVLZXkgfSBmcm9tIFwiYWxwaGEtZ2xvYmFsLWNvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBFbnVtRmlsdGVyT3BlcmF0b3IsIElGaWx0ZXJPcGVyYXRvciB9IGZyb20gXCIuLi8uLi8uLi9pbnRlcmZhY2VzL0lRdWVyeUxpc3RSZXF1ZXN0XCI7XHJcbmltcG9ydCB7IElDb3JlUGFnZUxpc3RBcGlEZWZpbml0aW9uLCBJQ29yZVBhZ2VMaXN0RWRpdFJvdXRpbmcgfSBmcm9tIFwiLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUtcGFnZS1saXN0L2NvcmUtcGFnZS1saXN0LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBhcGkgfSBmcm9tIFwiYWxwaGEtZ2xvYmFsLWNvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBJQ29yZVRhYmxlQ29sdW1uSXRlbSB9IGZyb20gXCIuLi8uLi9jb3JlLXRhYmxlL0lDb3JlVGFibGVDb2x1bW5JdGVtXCI7XHJcbmltcG9ydCB7IEVudW1Db3JlVGFibGVQaXBlVHlwZSB9IGZyb20gXCIuLi8uLi8uLi9saWJyYXJpZXMvY29yZS10YWJsZS9FbnVtQ29yZVRhYmxlUGlwZVR5cGVcIjtcclxuXHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL211bHRpLWxhbmd1YWdlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgUmFuZG9tQXZhdGFyU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy9yYW5kb20tYXZhdGFyLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQ29yZVBlcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL2xpYnJhcmllcy9jb3JlLXBlcm1pc3Npb24vY29yZS1wZXJtaXNzaW9uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQXBwU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy9hcHAuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vbGlicmFyaWVzL2FsZXJ0L2FsZXJ0LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IERvbVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvZG9tLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTGF5b3V0U2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy9sYXlvdXQuc2VydmljZVwiO1xyXG5cclxuaW1wb3J0IHsgSUNvcmVMaXN0T3B0aW9uIH0gZnJvbSBcIi4uLy4uLy4uL2xpYnJhcmllcy9jb3JlLWxpc3QvY29yZS1saXN0L2NvcmUtbGlzdC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgSUZvcm1hdGVkUmVzcG9uc2UgfSBmcm9tIFwiLi4vLi4vLi4vaW50ZXJmYWNlcy9JRm9ybWF0ZWRSZXNwb25zZVwiO1xyXG5pbXBvcnQgeyBJQ29yZUJ1dHRvblZOUyB9IGZyb20gXCIuLi8uLi8uLi9saWJyYXJpZXMvY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9JQ29yZUJ1dHRvblZOU1wiO1xyXG5pbXBvcnQgeyBDb3JlT3JnVHJlZUNvbXBvbmVudCwgRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZSB9IGZyb20gXCIuLi8uLi8uLi9saWJyYXJpZXMvY29yZS1vcmctdHJlZS9jb3JlLW9yZy10cmVlL2NvcmUtb3JnLXRyZWUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEVudW1Db3JlQnV0dG9uVk5TQ29kZSB9IGZyb20gXCIuLi8uLi8uLi9saWJyYXJpZXMvY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9FbnVtQ29yZUJ1dHRvblZOU0NvZGVcIjtcclxuaW1wb3J0IHsgYWxlcnRPcHRpb25zLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucyB9IGZyb20gXCIuLi8uLi8uLi9jb25zdGFudHMvYWxlcnRPcHRpb25zXCI7XHJcbmltcG9ydCB7IENvcmVQZXJtaXNzaW9uQWN0aW9uc0NvbXBvbmVudCwgSUNvcmVGdW5jdGlvbkFjdGlvbiB9IGZyb20gXCIuLi8uLi8uLi9saWJyYXJpZXMvY29yZS1wZXJtaXNzaW9uLWFjdGlvbnMvY29yZS1wZXJtaXNzaW9uLWFjdGlvbnMvY29yZS1wZXJtaXNzaW9uLWFjdGlvbnMuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvZGlhbG9nLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBDb3JlUGFnZUxpc3RDb250ZW50Q29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NvcmUtcGFnZS1saXN0LWNvbnRlbnQvY29yZS1wYWdlLWxpc3QtY29udGVudC9jb3JlLXBhZ2UtbGlzdC1jb250ZW50LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBDb3JlVGFic0NvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb3JlLXRhYnMvY29yZS10YWJzL2NvcmUtdGFicy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgQ29yZVBhZ2VIZWFkZXJDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29yZS1wYWdlLWhlYWRlci9jb3JlLXBhZ2UtaGVhZGVyL2NvcmUtcGFnZS1oZWFkZXIuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IENvcmVDb21wb3NpdGlvbkNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb3JlLWNvbXBvc2l0aW9uL2NvcmUtY29tcG9zaXRpb24vY29yZS1jb21wb3NpdGlvbi5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgQ29yZUxpc3RMYXp5Q29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NvcmUtbGlzdC1sYXp5L2NvcmUtbGlzdC1sYXp5L2NvcmUtbGlzdC1sYXp5LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSBcIi4uLy4uLy4uL2FwcC1waXBlcy90cmFuc2xhdGUucGlwZVwiO1xyXG5pbXBvcnQgeyBDb3JlVGFnc0NvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb3JlLXRhZ3MvY29yZS10YWdzL2NvcmUtdGFncy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgQ29yZUNvbmZpcm1EaWFsb2dDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29yZS1jb25maXJtLWRpYWxvZy9jb3JlLWNvbmZpcm0tZGlhbG9nL2NvcmUtY29uZmlybS1kaWFsb2cuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IENvcmVBcGlQcm9ncmVzc0NvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb3JlLWFwaS1wcm9ncmVzcy9jb3JlLWFwaS1wcm9ncmVzcy9jb3JlLWFwaS1wcm9ncmVzcy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy9hcHAtY29uZmlnLnNlcnZpY2VcIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVVzZXJQZXJtaXNzaW9uTW9kZWwge1xyXG4gIHVzZXJJZDogc3RyaW5nO1xyXG4gIGZ1bmN0aW9uSWQ6IG51bWJlcjtcclxuICBhY3Rpb25JZDogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElVc2VyT3JnUGVybWlzc2lvbk1vZGVsIHtcclxuICB1c2VySWQ6IHN0cmluZztcclxuICBvcmdJZDogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElHcm91cFBlcm1pc3Npb25Nb2RlbCB7XHJcbiAgZ3JvdXBJZDogbnVtYmVyO1xyXG4gIGZ1bmN0aW9uSWQ6IG51bWJlcjtcclxuICBhY3Rpb25JZDogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElHcm91cE9yZ1Blcm1pc3Npb25Nb2RlbCB7XHJcbiAgZ3JvdXBJZDogbnVtYmVyO1xyXG4gIG9yZ0lkOiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIEVudW1QZXJtaXNzaW9uT2JqZWN0VHlwZSB7XHJcbiAgVVNFUiA9ICdVU0VSJyxcclxuICBVU0VSX0dST1VQID0gJ1VTRVJfR1JPVVAnXHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY29yZS1wZXJtaXNzaW9uJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgQ29yZU9yZ1RyZWVDb21wb25lbnQsXHJcbiAgICBDb3JlUGFnZUxpc3RDb250ZW50Q29tcG9uZW50LFxyXG4gICAgQ29yZVRhYnNDb21wb25lbnQsXHJcbiAgICBDb3JlUGFnZUhlYWRlckNvbXBvbmVudCxcclxuICAgIENvcmVDb21wb3NpdGlvbkNvbXBvbmVudCxcclxuICAgIENvcmVMaXN0TGF6eUNvbXBvbmVudCxcclxuICAgIFRyYW5zbGF0ZVBpcGUsXHJcbiAgICBDb3JlVGFnc0NvbXBvbmVudCxcclxuICAgIENvcmVQZXJtaXNzaW9uQWN0aW9uc0NvbXBvbmVudCxcclxuICAgIENvcmVDb25maXJtRGlhbG9nQ29tcG9uZW50LFxyXG4gICAgQ29yZUFwaVByb2dyZXNzQ29tcG9uZW50XHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29yZS1wZXJtaXNzaW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb3JlLXBlcm1pc3Npb24uY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29yZVBlcm1pc3Npb25Db21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpIHR5cGUhOiBFbnVtUGVybWlzc2lvbk9iamVjdFR5cGU7XHJcbiAgQFZpZXdDaGlsZCgnYXZhdGFyJykgYXZhdGFyITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCdhY3Rpb25zJykgYWN0aW9ucyE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyJykgY29udGFpbmVyITogRWxlbWVudFJlZjtcclxuXHJcbiAgaGVpZ2h0ITogbnVtYmVyO1xyXG4gIHRpdGxlITogRW51bVRyYW5zbGF0ZUtleVxyXG4gIGxvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHBpcGUhOiBFbnVtQ29yZVRhYmxlUGlwZVR5cGU7XHJcblxyXG4gIGlzUm9vdFVzZXIhOiBib29sZWFuIHwgdW5kZWZpbmVkO1xyXG4gIGNvbXBvc2l0aW9uSGVpZ2h0ITogbnVtYmVyO1xyXG4gIHNlbGVjdGVkRGF0YTogYW55W10gPSBbXTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBvdmVycmlkZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHVibGljIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJhczogUmFuZG9tQXZhdGFyU2VydmljZSxcclxuICAgIHByaXZhdGUgY29yZVBlcm1pc3Npb25TZXJ2aWNlOiBDb3JlUGVybWlzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwcFNlcnZpY2U6IEFwcFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgbGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZSxcclxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgZG9tU2VydmljZTogRG9tU2VydmljZSxcclxuICAgIHByaXZhdGUgYXBwQ29uZmlnU2VydmljZTogQXBwQ29uZmlnU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIobWxzKTtcclxuXHJcbiAgICB0aGlzLmRlZmF1bHRBdmF0YXIgPSByYXMuZ2V0KCk7XHJcbiAgICB0aGlzLmNvcmVQZXJtaXNzaW9uU2VydmljZS5pbnN0YW5jZU51bWJlciA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG5cclxuICAgIGlmICh0aGlzLnJvdXRlci51cmwuaW5jbHVkZXMoJ3VwZXJtaXNzaW9uJykpIHRoaXMudHlwZSA9IEVudW1QZXJtaXNzaW9uT2JqZWN0VHlwZS5VU0VSXHJcbiAgICBpZiAodGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKCdncm91cHBlcm1pc3Npb24nKSkgdGhpcy50eXBlID0gRW51bVBlcm1pc3Npb25PYmplY3RUeXBlLlVTRVJfR1JPVVBcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5yb3V0ZS5wYXJhbU1hcC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgY29uc3QgaWQgPSB4LmdldCgnaWQnKTtcclxuICAgICAgICBpZiAoISFpZCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gRW51bVBlcm1pc3Npb25PYmplY3RUeXBlLlVTRVIpIHtcclxuICAgICAgICAgICAgdGhpcy5vYmplY3RJZCQubmV4dChpZClcclxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID0gRW51bVBlcm1pc3Npb25PYmplY3RUeXBlLlVTRVJfR1JPVVApIHtcclxuICAgICAgICAgICAgdGhpcy5vYmplY3RJZCQubmV4dChOdW1iZXIoaWQpKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIClcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5hdXRoU2VydmljZS5kYXRhJC5zdWJzY3JpYmUoeCA9PiB0aGlzLmlzUm9vdFVzZXIgPSB4Py5pc1Jvb3QpXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICB0YWJIZWFkZXJzOiBzdHJpbmdbXSA9IFtcclxuICAgIEVudW1UcmFuc2xhdGVLZXkuVUlfVVNFUl9HUk9VUF9QRVJNSVNTSU9OX0ZVTkNUSU9OX1RBQiwgLy8gbWFrZSB1c2Ugb2YgYW4gZXhpc3Rpbmcga2V5XHJcbiAgICBFbnVtVHJhbnNsYXRlS2V5LlVJX1VTRVJfR1JPVVBfUEVSTUlTU0lPTl9PUkdfVU5JVF9UQUIsIC8vIG1ha2UgdXNlIG9mIGFuIGV4aXN0aW5nIGtleVxyXG4gIF1cclxuXHJcbiAgb2JqZWN0SWQhOiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgb2JqZWN0SWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCBudW1iZXIgfCBudWxsPihudWxsKTtcclxuICBvcmdJZHM6IG51bWJlcltdID0gW107XHJcbiAgb2JqZWN0UXVlcnlMaXN0QXBpITogYXBpO1xyXG4gIG9iamVjdExpc3RUZXh0RmllbGQhOiBzdHJpbmc7XHJcbiAgcGVuZGluZ0FjdGlvbiE6IGFueTtcclxuICBwZW5kaW5nT2JqZWN0SWQhOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsO1xyXG5cclxuICBzaG93U3RhdGVUcmFja2VyITogYm9vbGVhbjtcclxuXHJcbiAgdXNlckxpc3RUZXh0UGlwZTogRW51bUNvcmVUYWJsZVBpcGVUeXBlID0gRW51bUNvcmVUYWJsZVBpcGVUeXBlLlVQUEVSQ0FTRTtcclxuXHJcbiAgdHJlZUFjY2Vzc29yTW9kZTogRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZSA9IEVudW1Db3JlT3JnVHJlZWFBY2Nlc3Nvck1vZGUuQ0hFQ0tFRDtcclxuXHJcbiAgdXNlck9wdGlvbnM6IElDb3JlTGlzdE9wdGlvbltdID0gW11cclxuXHJcbiAgb3V0ZXJGaWx0ZXJPcGVyYXRvcnM6IElGaWx0ZXJPcGVyYXRvcltdID0gW1xyXG4gICAge1xyXG4gICAgICBmaWVsZDogJ3VzZXJJZCcsXHJcbiAgICAgIG9wZXJhdG9yOiBFbnVtRmlsdGVyT3BlcmF0b3IuRVFVQUxcclxuICAgIH1cclxuICBdXHJcblxyXG4gIGxlZnRBcGlEZWZpbml0aW9uOiBJQ29yZVBhZ2VMaXN0QXBpRGVmaW5pdGlvbiA9IHtcclxuICAgIHF1ZXJ5TGlzdFJlbGF0aXZlUGF0aDogYXBpLlNZU19VU0VSX1FVRVJZX0xJU1QsXHJcbiAgfVxyXG5cclxuICBhcGlEZWZpbml0aW9uOiBJQ29yZVBhZ2VMaXN0QXBpRGVmaW5pdGlvbiA9IHtcclxuICAgIHF1ZXJ5TGlzdFJlbGF0aXZlUGF0aDogYXBpLlNZU19VU0VSX1BFUk1JU1NJT05fUVVFUllfTElTVCxcclxuICB9XHJcblxyXG4gIGFsbG93RWRpdCE6IGJvb2xlYW47XHJcblxyXG4gIGNvbHVtbnM6IElDb3JlVGFibGVDb2x1bW5JdGVtW10gPSBbXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fQ09NTU9OX0lELFxyXG4gICAgICBmaWVsZDogJ2lkJyxcclxuICAgICAgaGlkZGVuOiB0cnVlLFxyXG4gICAgICB0eXBlOiAnbnVtYmVyJyxcclxuICAgICAgYWxpZ246ICdyaWdodCcsXHJcbiAgICAgIHdpZHRoOiAwLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9TWVNfTU9EVUxFX05BTUVDT0RFLFxyXG4gICAgICBmaWVsZDogJ21vZHVsZU5hbWVDb2RlJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHdpZHRoOiAxNTAsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX1NZU19GVU5DVElPTl9QQVRILFxyXG4gICAgICBmaWVsZDogJ3BhdGgnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgd2lkdGg6IDE1MCxcclxuICAgIH0sXHJcbiAgICAvKlxyXG4gICAge1xyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX1NZU19GVU5DVElPTl9HUk9VUF9OQU1FQ09ERSxcclxuICAgICAgZmllbGQ6ICdncm91cE5hbWVDb2RlJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHdpZHRoOiAxNTAsXHJcbiAgICB9LFxyXG4gICAgKi9cclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9TWVNfRlVOQ1RJT05fTkFNRUNPREUsXHJcbiAgICAgIGZpZWxkOiAnZnVuY3Rpb25OYW1lQ29kZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMTUwLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9TWVNfQUNUSU9OX05BTUVDT0RFLFxyXG4gICAgICBmaWVsZDogJ2FwcEFjdGlvbnMnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgaGlkZVNlYXJjaEJveDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IDEwMDAsXHJcbiAgICAgIHRlbXBsYXRlUmVmOiB0aGlzLmFjdGlvbnMsXHJcbiAgICAgIHRlbXBsYXRlUmVmQWxsb3dFZGl0T25Sb3dBY3RpdmVkOiB0cnVlXHJcbiAgICB9LFxyXG4gIF1cclxuXHJcbiAgZGVmYXVsdEF2YXRhciE6IHN0cmluZztcclxuICB0cmVlSGVpZ2h0ITogbnVtYmVyO1xyXG4gIGNvcmVQZXJtaXNzaW9uQWN0aW9uc0hlaWdodCE6IG51bWJlcjtcclxuICBkaWFsb2dJbnN0YW5jZU51bWJlciE6IG51bWJlcjtcclxuXHJcbiAgZWRpdFJvdXRlOiBJQ29yZVBhZ2VMaXN0RWRpdFJvdXRpbmcgPSB7XHJcbiAgICBhdXhpbGlhcnk6ICdwb3B1cEF1eCdcclxuICB9XHJcblxyXG4gIGFjdGlvblBlcm1pc3Npb25WYWx1ZTogSUNvcmVGdW5jdGlvbkFjdGlvbltdID0gW11cclxuICBpbml0aWFsQWN0aW9uUGVybWlzc2lvblZhbHVlSnNvblN0cmluZyE6IHN0cmluZ1xyXG4gIGN1cnJlbnRBY3Rpb25QZXJtaXNzaW9uVmFsdWVKc29uU3RyaW5nITogc3RyaW5nXHJcbiAgb3JnUGVybWlzc2lvblZhbHVlOiBudW1iZXJbXSA9IFtdXHJcbiAgaW5pdGlhbE9yZ1Blcm1pc3Npb25WYWx1ZUpzb25TdHJpbmchOiBzdHJpbmdcclxuICBjdXJyZW50T3JnUGVybWlzc2lvblZhbHVlSnNvblN0cmluZyE6IHN0cmluZ1xyXG5cclxuXHJcbiAgcXVlcnlGdW5jdGlvbkFjdGlvblBlcm1pc3Npb25MaXN0QXBpRW5kcG9pbnQhOiBzdHJpbmc7XHJcbiAgcXVlcnlPcmdQZXJtaXNzaW9uTGlzdEFwaUVuZHBvaW50ITogc3RyaW5nO1xyXG5cclxuICBibG9ja2luZ0xlZnRMaXN0SW50ZXJhY3Rpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIHVwZGF0ZUluaXRpYWxBY3Rpb25QZXJtaXNzaW9uVmFsdWVKc29uU3RyaW5nKGZ1bmN0aW9uQWN0aW9uczogSUNvcmVGdW5jdGlvbkFjdGlvbltdKTogdm9pZCB7XHJcbiAgICB0aGlzLmluaXRpYWxBY3Rpb25QZXJtaXNzaW9uVmFsdWVKc29uU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoeyBvYmplY3RJZDogdGhpcy5vYmplY3RJZCwgYWN0aW9uczogZnVuY3Rpb25BY3Rpb25zIH0pO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlSW5pdGlhbE9yZ1Blcm1pc3Npb25WYWx1ZUpzb25TdHJpbmcob3JnSWRzOiBudW1iZXJbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5vcmdQZXJtaXNzaW9uVmFsdWUgPSBvcmdJZHM7XHJcbiAgICB0aGlzLmluaXRpYWxPcmdQZXJtaXNzaW9uVmFsdWVKc29uU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoeyBvYmplY3RJZDogdGhpcy5vYmplY3RJZCwgb3JnSWRzOiBvcmdJZHMgfSk7XHJcbiAgfVxyXG5cclxuICByZXNvbHZlUXVlcnlGdW5jdGlvbkFjdGlvblBlcm1pc3Npb25MaXN0KGh0dHBSZXNwb25zZTogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoaHR0cFJlc3BvbnNlPy5vayAmJiBodHRwUmVzcG9uc2U/LnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgIGNvbnN0IGJvZHk6IElGb3JtYXRlZFJlc3BvbnNlID0gaHR0cFJlc3BvbnNlLmJvZHk7XHJcbiAgICAgIGlmIChib2R5LnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG5cclxuICAgICAgICAvLyBjaGVjayBmdW5jdGlvbklkIHRvIGJlIGluIGVsZW1lbnRzIG9mIHBlcm1pc3Npb24gYXJyYXlcclxuICAgICAgICBpZiAoISFib2R5Py5pbm5lckJvZHk/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgY29uc3QgY2hlY2tJdGVtID0gYm9keSEuaW5uZXJCb2R5IVswXVxyXG4gICAgICAgICAgaWYgKCFjaGVja0l0ZW0/LmZ1bmN0aW9uSWQpIHtcclxuICAgICAgICAgICAgaWYgKGlzRGV2TW9kZSgpIHx8IHRoaXMuYXBwQ29uZmlnU2VydmljZS5ERUJVR19FTkFCTEVEKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoYEVhY2ggcm93IG9mIHRoZSBsaXN0IHJldHVybmVkIGJ5ICR7dGhpcy5xdWVyeUZ1bmN0aW9uQWN0aW9uUGVybWlzc2lvbkxpc3RBcGlFbmRwb2ludH0gbXVzdCBoYXZlIGEgZmllbGQgbmFtZWQgZnVuY3Rpb25JZC4gUGxlYXNlIGNoZWNrIHRoZSBCYWNrZW5kIWAsIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmNvcmVQZXJtaXNzaW9uU2VydmljZS5zZWxlY3RlZE9iamVjdEFjdGlvblBlcm1pc3Npb25zJC5uZXh0KGJvZHkuaW5uZXJCb2R5KTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUluaXRpYWxBY3Rpb25QZXJtaXNzaW9uVmFsdWVKc29uU3RyaW5nKGJvZHkuaW5uZXJCb2R5KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbHVtbnMuZmlsdGVyKGMgPT4gYy5maWVsZCA9PT0gJ2FwcEFjdGlvbnMnKVswXS50ZW1wbGF0ZVJlZiA9IHRoaXMuYWN0aW9ucztcclxuXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMubGF5b3V0U2VydmljZS5jb250ZW50Q29udGFpbmVySGVpZ2h0JC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNvbXBvc2l0aW9uSGVpZ2h0ID0geCAtIHRoaXMubGF5b3V0U2VydmljZS5jb3JlUGFnZUhlYWRlckhlaWdodCAtIHRoaXMubGF5b3V0U2VydmljZS5iYXNpY1NwYWNpbmdcclxuICAgICAgICAgIHRoaXMuY29yZVBlcm1pc3Npb25BY3Rpb25zSGVpZ2h0ID0gdGhpcy5jb21wb3NpdGlvbkhlaWdodCAtIHRoaXMubGF5b3V0U2VydmljZS5jb3JlVGFic0hlYWRlckxpbmVIZWlnaHQgLSB0aGlzLmxheW91dFNlcnZpY2UuYmFzaWNTcGFjaW5nXHJcbiAgICAgICAgICB0aGlzLnRyZWVIZWlnaHQgPSB4IC0gdGhpcy5sYXlvdXRTZXJ2aWNlLmNvcmVQYWdlSGVhZGVySGVpZ2h0IC0gdGhpcy5sYXlvdXRTZXJ2aWNlLmJhc2ljU3BhY2luZyAqIDIgLSB0aGlzLmxheW91dFNlcnZpY2UuY29yZVRhYnNIZWFkZXJMaW5lSGVpZ2h0XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG5cclxuICAgICAgaWYgKHRoaXMudHlwZSA9PT0gRW51bVBlcm1pc3Npb25PYmplY3RUeXBlLlVTRVIpIHtcclxuICAgICAgICB0aGlzLnRpdGxlID0gRW51bVRyYW5zbGF0ZUtleS5VSV9DT01QT05FTlRfVElUTEVfVVNFUl9QRVJNSVNTSU9OXHJcbiAgICAgICAgdGhpcy5waXBlID0gRW51bUNvcmVUYWJsZVBpcGVUeXBlLkxPV0VSQ0FTRVxyXG4gICAgICAgIHRoaXMub2JqZWN0UXVlcnlMaXN0QXBpID0gYXBpLlNZU19VU0VSX1FVRVJZX0xJU1RcclxuICAgICAgICB0aGlzLnF1ZXJ5RnVuY3Rpb25BY3Rpb25QZXJtaXNzaW9uTGlzdEFwaUVuZHBvaW50ID0gYXBpLlNZU19VU0VSX1FVRVJZX0ZVTkNUSU9OX0FDVElPTl9QRVJNSVNTSU9OX0xJU1RcclxuICAgICAgICB0aGlzLnF1ZXJ5T3JnUGVybWlzc2lvbkxpc3RBcGlFbmRwb2ludCA9IGFwaS5TWVNfVVNFUl9RVUVSWV9VU0VSX09SR19QRVJNSVNTSU9OX0xJU1RcclxuICAgICAgICB0aGlzLm9iamVjdExpc3RUZXh0RmllbGQgPSBcInVzZXJuYW1lXCJcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09IEVudW1QZXJtaXNzaW9uT2JqZWN0VHlwZS5VU0VSX0dST1VQKSB7XHJcbiAgICAgICAgdGhpcy50aXRsZSA9IEVudW1UcmFuc2xhdGVLZXkuVUlfQ09NUE9ORU5UX1RJVExFX1VTRVJfR1JPVVBfUEVSTUlTU0lPTlxyXG4gICAgICAgIHRoaXMucGlwZSA9IEVudW1Db3JlVGFibGVQaXBlVHlwZS5VUFBFUkNBU0VcclxuICAgICAgICB0aGlzLm9iamVjdFF1ZXJ5TGlzdEFwaSA9IGFwaS5TWVNfR1JPVVBfUVVFUllfTElTVFxyXG4gICAgICAgIHRoaXMucXVlcnlGdW5jdGlvbkFjdGlvblBlcm1pc3Npb25MaXN0QXBpRW5kcG9pbnQgPSBhcGkuU1lTX0dST1VQX1FVRVJZX0ZVTkNUSU9OX0FDVElPTl9QRVJNSVNTSU9OX0xJU1RfR1JQQ1xyXG4gICAgICAgIHRoaXMucXVlcnlPcmdQZXJtaXNzaW9uTGlzdEFwaUVuZHBvaW50ID0gYXBpLlNZU19HUk9VUF9RVUVSWV9HUk9VUF9PUkdfUEVSTUlTU0lPTl9MSVNUXHJcbiAgICAgICAgdGhpcy5vYmplY3RMaXN0VGV4dEZpZWxkID0gXCJuYW1lXCJcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKHRoaXMubWxzLnRyYW5zKCdVSV9QRVJNSVNTSU9OX09CSkVDVF9JU19VTkRFRklORUQnLCB0aGlzLmxhbmcpLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5kaWFsb2dDb25maXJtZWQkLnBpcGUoXHJcbiAgICAgICAgICBmaWx0ZXIoeCA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiAhIXggJiYgISF4LmNvbmZpcm1lZCAmJiAhIXg/Lmluc3RhbmNlTnVtYmVyXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICkuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJ0aGlzLmRpYWxvZ1NlcnZpY2UuZGlhbG9nQ29uZmlybWVkJFwiLCB4KVxyXG4gICAgICAgICAgaWYgKCEhIXg/LmNvbmZpcm1lZCkge1xyXG4gICAgICAgICAgICB0aGlzLm9iamVjdElkID0gdGhpcy5vYmplY3RJZCQudmFsdWUhO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnJlc2V0U2VydmljZSgpXHJcblxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuXHJcblxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLmNvcmVQZXJtaXNzaW9uU2VydmljZS5zZWxlY3RlZE9iamVjdEFjdGlvblBlcm1pc3Npb25zJC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICB0aGlzLmFjdGlvblBlcm1pc3Npb25WYWx1ZSA9IHg7XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG5cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy5vYmplY3RJZCQucGlwZShcclxuICAgICAgICAgIGZpbHRlcih4ID0+ICEheCAmJiB4ICE9PSAwICYmIHggIT09ICcwJyksXHJcbiAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICAgICAgbWFwKHggPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvcmVQZXJtaXNzaW9uU2VydmljZS5zZWxlY3RlZE9iamVjdEFjdGlvblBlcm1pc3Npb25zJC5uZXh0KFtdKTtcclxuICAgICAgICAgICAgdGhpcy5vcmdJZHMgPSBbXTtcclxuICAgICAgICAgICAgcmV0dXJuIHg7XHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIHN3aXRjaE1hcChvYmplY3RJZCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuYmxvY2tpbmdMZWZ0TGlzdEludGVyYWN0aW9uJC5uZXh0KHRydWUpXHJcbiAgICAgICAgICAgIGlmICghISF0aGlzLm9iamVjdElkKSB0aGlzLm9iamVjdElkID0gb2JqZWN0SWQhO1xyXG4gICAgICAgICAgICByZXR1cm4gemlwKFtcclxuICAgICAgICAgICAgICB0aGlzLmFwcFNlcnZpY2UuZ2V0KHRoaXMucXVlcnlGdW5jdGlvbkFjdGlvblBlcm1pc3Npb25MaXN0QXBpRW5kcG9pbnQgKyAnP29iamVjdElkPScgKyBvYmplY3RJZCArIFwiJnVzZUdyb3VwSWZFbXB0eT1mYWxzZVwiKSxcclxuICAgICAgICAgICAgICB0aGlzLmFwcFNlcnZpY2UuZ2V0KHRoaXMucXVlcnlPcmdQZXJtaXNzaW9uTGlzdEFwaUVuZHBvaW50ICsgJz9vYmplY3RJZD0nICsgb2JqZWN0SWQgKyBcIiZ1c2VHcm91cElmRW1wdHk9ZmFsc2VcIildKVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICApLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5ibG9ja2luZ0xlZnRMaXN0SW50ZXJhY3Rpb24kLm5leHQoZmFsc2UpXHJcblxyXG4gICAgICAgICAgdGhpcy5yZXNvbHZlUXVlcnlGdW5jdGlvbkFjdGlvblBlcm1pc3Npb25MaXN0KHhbMF0pO1xyXG5cclxuICAgICAgICAgIC8qXHJcbiAgICAgICAgICBpZiAoeFswXS5vayAmJiB4WzBdLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGJvZHk6IElGb3JtYXRlZFJlc3BvbnNlID0geFswXS5ib2R5O1xyXG4gICAgICAgICAgICBpZiAoYm9keS5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuXHJcbiAgICAgICAgICAgICAgLy8gY2hlY2sgZnVuY3Rpb25JZCB0byBiZSBpbiBlbGVtZW50cyBvZiBwZXJtaXNzaW9uIGFycmF5XHJcbiAgICAgICAgICAgICAgaWYgKCEhYm9keT8uaW5uZXJCb2R5Py5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNoZWNrSXRlbSA9IGJvZHkhLmlubmVyQm9keSFbMF1cclxuICAgICAgICAgICAgICAgIGlmICghY2hlY2tJdGVtPy5mdW5jdGlvbklkKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChpc0Rldk1vZGUoKSB8fCB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuREVCVUdfRU5BQkxFRCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKGBFYWNoIHJvdyBvZiB0aGUgbGlzdCByZXR1cm5lZCBieSAke3RoaXMucXVlcnlGdW5jdGlvbkFjdGlvblBlcm1pc3Npb25MaXN0QXBpRW5kcG9pbnR9IG11c3QgaGF2ZSBhIGZpZWxkIG5hbWVkIGZ1bmN0aW9uSWQuIFBsZWFzZSBjaGVjayB0aGUgQmFja2VuZCFgLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5jb3JlUGVybWlzc2lvblNlcnZpY2Uuc2VsZWN0ZWRPYmplY3RBY3Rpb25QZXJtaXNzaW9ucyQubmV4dChib2R5LmlubmVyQm9keSk7XHJcbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVJbml0aWFsQWN0aW9uUGVybWlzc2lvblZhbHVlSnNvblN0cmluZyhib2R5LmlubmVyQm9keSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgICovXHJcblxyXG4gICAgICAgICAgaWYgKHhbMV0ub2sgJiYgeFsxXS5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICBjb25zdCBib2R5MTogSUZvcm1hdGVkUmVzcG9uc2UgPSB4WzFdLmJvZHk7XHJcbiAgICAgICAgICAgIC8vdGhpcy5yZXNwb25zZVNlcnZpY2UucmVzb2x2ZShib2R5MSk7XHJcbiAgICAgICAgICAgIGlmIChib2R5MS5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICB0aGlzLm9yZ0lkcyA9IGJvZHkxLmlubmVyQm9keTtcclxuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUluaXRpYWxPcmdQZXJtaXNzaW9uVmFsdWVKc29uU3RyaW5nKGJvZHkxLmlubmVyQm9keSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICApXHJcblxyXG4gICAgICB0aGlzLmNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS16LWluZGV4JywgdGhpcy5kb21TZXJ2aWNlLmdldE1heFpJbmRleCgpKVxyXG5cclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgLyogV2UgZG8gbm90IHVwZGF0ZSB0aGUgZ3JpZCB3aGVuIHVzZXJJZCBjaGFuZ2VzICovXHJcbiAgb25PYmplY3RJZENoYW5nZShvYmplY3RJZDogc3RyaW5nIHwgbnVtYmVyKSB7XHJcbiAgICB0aGlzLmNvcmVQZXJtaXNzaW9uU2VydmljZS5vYmplY3RJZCA9IG9iamVjdElkO1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW29iamVjdElkLnRvU3RyaW5nKCldLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUucGFyZW50IH0pXHJcbiAgfVxyXG5cclxuICBvbkNvcmVQYWdlSGVhZGVyQnV0dG9uQ2xpY2soZTogSUNvcmVCdXR0b25WTlMpIHtcclxuICAgIHN3aXRjaCAoZS5jb2RlKSB7XHJcbiAgICAgIGNhc2UgRW51bUNvcmVCdXR0b25WTlNDb2RlLkhFQURFUl9FRElUOlxyXG4gICAgICAgIGlmICghIXRoaXMub2JqZWN0SWQpIHtcclxuICAgICAgICAgIHRoaXMuYWxsb3dFZGl0ID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuaW5mbyh0aGlzLm1scy50cmFucygnVUlfVVNFUl9QRVJNSVNTSU9OX05PX1VTRVJfU0VMRUNURUQnLCB0aGlzLmxhbmcpLCBhbGVydE9wdGlvbnMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBFbnVtQ29yZUJ1dHRvblZOU0NvZGUuSEVBREVSX1VQRVJNSVNTSU9OX0RFTEVURTpcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLm9iamVjdElkKSB7XHJcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS53YXJuKHRoaXMubWxzLnRyYW5zKEVudW1UcmFuc2xhdGVLZXkuVUlfVVNFUl9QRVJNSVNTSU9OX1RPX0VESVRfUExFQVNFX1NFTEVDVF9BX1VTRVIpLCBhbGVydE9wdGlvbnMpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnRpdGxlJC5uZXh0KEVudW1UcmFuc2xhdGVLZXkuVUlfQ09SRV9ESUFMT0dfU0VSVklDRV9DT05GSVJNQVRJT04pXHJcbiAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uub2tCdXR0b25UZXh0JC5uZXh0KEVudW1UcmFuc2xhdGVLZXkuVUlfQ09SRV9DT05GSVJNX0RJQUxPR19CVVRUT05fQ09ORklSTSlcclxuICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5jYW5jZWxCdXR0b25UZXh0JC5uZXh0KEVudW1UcmFuc2xhdGVLZXkuVUlfQ09SRV9DT05GSVJNX0RJQUxPR19CVVRUT05fQ0FOQ0VMKVxyXG4gICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dDYW5jZWxPbmx5JC5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5idXN5ID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5ib2R5JC5uZXh0KEVudW1UcmFuc2xhdGVLZXkuVUlfQ09SRV9ESUFMT0dfU0VSVklDRV9BUkVfWU9VX1NVUkVfVE9fREVMRVRFKTtcclxuICAgICAgICAgIGxldCBsaXN0RGVsZXRlSWRzOiBhbnlbXSA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGEuZm9yRWFjaCh4ID0+IHtcclxuICAgICAgICAgICAgbGlzdERlbGV0ZUlkcy5wdXNoKHhbdGhpcy5jb2x1bW5zWzFdLmZpZWxkXSlcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmluZm9ybWF0aW9uTGluZXMkLm5leHQobGlzdERlbGV0ZUlkcylcclxuICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5zaG93Q29uZmlybURpYWxvZyQubmV4dCh0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRW51bUNvcmVCdXR0b25WTlNDb2RlLkhFQURFUl9TQVZFOlxyXG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT09IEVudW1QZXJtaXNzaW9uT2JqZWN0VHlwZS5VU0VSKSB7XHJcbiAgICAgICAgICBjb25zdCBhY3Rpb25SYW5nZTogSVVzZXJQZXJtaXNzaW9uTW9kZWxbXSA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5hY3Rpb25QZXJtaXNzaW9uVmFsdWUubWFwKGYgPT4ge1xyXG4gICAgICAgICAgICBmLmFsbG93ZWRBY3Rpb25JZHM/Lm1hcChpZCA9PiB7XHJcbiAgICAgICAgICAgICAgYWN0aW9uUmFuZ2UucHVzaCh7XHJcbiAgICAgICAgICAgICAgICB1c2VySWQ6IHRoaXMub2JqZWN0SWQudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uSWQ6IGYuZnVuY3Rpb25JZCxcclxuICAgICAgICAgICAgICAgIGFjdGlvbklkOiBpZFxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgY29uc3Qgb3JnUmFuZ2U6IElVc2VyT3JnUGVybWlzc2lvbk1vZGVsW10gPSBbXTtcclxuICAgICAgICAgIHRoaXMub3JnSWRzLm1hcChvID0+IHtcclxuICAgICAgICAgICAgb3JnUmFuZ2UucHVzaCh7XHJcbiAgICAgICAgICAgICAgdXNlcklkOiB0aGlzLm9iamVjdElkLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgb3JnSWQ6IG9cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBjb25zdCBhY3Rpb25QYXlsb2FkID0geyB1c2VySWQ6IHRoaXMub2JqZWN0SWQsIHJhbmdlOiBhY3Rpb25SYW5nZSB9XHJcbiAgICAgICAgICBjb25zdCBvcmdQYXlsb2FkID0geyB1c2VySWQ6IHRoaXMub2JqZWN0SWQsIHJhbmdlOiBvcmdSYW5nZSB9XHJcblxyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuYmxvY2tpbmdMZWZ0TGlzdEludGVyYWN0aW9uJC5uZXh0KHRydWUpXHJcbiAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuXHJcbiAgICAgICAgICAgIHppcChbXHJcbiAgICAgICAgICAgICAgdGhpcy5hcHBTZXJ2aWNlLnBvc3QoYXBpLlNZU19VU0VSX0ZVTkNUSU9OX0FDVElPTl9QRVJNSVNTSU9OX1VQREFURV9SQU5HRSwgYWN0aW9uUGF5bG9hZCksXHJcbiAgICAgICAgICAgICAgdGhpcy5hcHBTZXJ2aWNlLnBvc3QoYXBpLlNZU19VU0VSX09SR19QRVJNSVNTSU9OX1VQREFURV9SQU5HRSwgb3JnUGF5bG9hZClcclxuICAgICAgICAgICAgXSkuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuYWxsb3dFZGl0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5ibG9ja2luZ0xlZnRMaXN0SW50ZXJhY3Rpb24kLm5leHQoZmFsc2UpXHJcbiAgICAgICAgICAgICAgdGhpcy5yZXNvbHZlUXVlcnlGdW5jdGlvbkFjdGlvblBlcm1pc3Npb25MaXN0KHhbMF0pO1xyXG5cclxuICAgICAgICAgICAgICBpZiAoeFswXS5vayAmJiB4WzBdLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBib2R5OiBJRm9ybWF0ZWRSZXNwb25zZSA9IHhbMF0uYm9keTtcclxuICAgICAgICAgICAgICAgIGlmIChib2R5LnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgLy8gcmVsb2FkIGFjdGlvbiBwZXJtaXNzaW9ucyBmb3IgY3VycmVudCBvYmplY3RJZFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmJsb2NraW5nTGVmdExpc3RJbnRlcmFjdGlvbiQubmV4dCh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBTZXJ2aWNlLmdldCh0aGlzLnF1ZXJ5RnVuY3Rpb25BY3Rpb25QZXJtaXNzaW9uTGlzdEFwaUVuZHBvaW50ICsgJz9vYmplY3RJZD0nICsgdGhpcy5vYmplY3RJZCArIFwiJnVzZUdyb3VwSWZFbXB0eT1mYWxzZVwiKS5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tpbmdMZWZ0TGlzdEludGVyYWN0aW9uJC5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVzb2x2ZVF1ZXJ5RnVuY3Rpb25BY3Rpb25QZXJtaXNzaW9uTGlzdCh4KVxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgIClcclxuXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICAgICAgICAgICAgICAvL3RoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKEpTT04uc3RyaW5naWZ5KHhbMF0sIG51bGwsIDIpLCBhbGVydE9wdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAoeFsxXS5vayAmJiB4WzFdLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBib2R5MTogSUZvcm1hdGVkUmVzcG9uc2UgPSB4WzFdLmJvZHk7XHJcbiAgICAgICAgICAgICAgICAvL3RoaXMucmVzcG9uc2VTZXJ2aWNlLnJlc29sdmUoYm9keTEpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGJvZHkxLnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICAgICAgICAgICAgLy90aGlzLmFsZXJ0U2VydmljZS5lcnJvcihKU09OLnN0cmluZ2lmeSh4WzBdLCBudWxsLCAyKSwgYWxlcnRPcHRpb25zKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09IEVudW1QZXJtaXNzaW9uT2JqZWN0VHlwZS5VU0VSX0dST1VQKSB7XHJcbiAgICAgICAgICBjb25zdCBhY3Rpb25SYW5nZTogSUdyb3VwUGVybWlzc2lvbk1vZGVsW10gPSBbXTtcclxuICAgICAgICAgIHRoaXMuYWN0aW9uUGVybWlzc2lvblZhbHVlLm1hcChmID0+IHtcclxuICAgICAgICAgICAgZi5hbGxvd2VkQWN0aW9uSWRzPy5tYXAoaWQgPT4ge1xyXG4gICAgICAgICAgICAgIGFjdGlvblJhbmdlLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgZ3JvdXBJZDogTnVtYmVyKHRoaXMub2JqZWN0SWQpLFxyXG4gICAgICAgICAgICAgICAgZnVuY3Rpb25JZDogZi5mdW5jdGlvbklkLFxyXG4gICAgICAgICAgICAgICAgYWN0aW9uSWQ6IGlkXHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBjb25zdCBvcmdSYW5nZTogSUdyb3VwT3JnUGVybWlzc2lvbk1vZGVsW10gPSBbXTtcclxuICAgICAgICAgIHRoaXMub3JnSWRzLm1hcChvID0+IHtcclxuICAgICAgICAgICAgb3JnUmFuZ2UucHVzaCh7XHJcbiAgICAgICAgICAgICAgZ3JvdXBJZDogTnVtYmVyKHRoaXMub2JqZWN0SWQpLFxyXG4gICAgICAgICAgICAgIG9yZ0lkOiBvXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgY29uc3QgYWN0aW9uUGF5bG9hZCA9IHsgZ3JvdXBJZDogdGhpcy5vYmplY3RJZCwgcmFuZ2U6IGFjdGlvblJhbmdlIH1cclxuICAgICAgICAgIGNvbnN0IG9yZ1BheWxvYWQgPSB7IGdyb3VwSWQ6IHRoaXMub2JqZWN0SWQsIHJhbmdlOiBvcmdSYW5nZSB9XHJcblxyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuYmxvY2tpbmdMZWZ0TGlzdEludGVyYWN0aW9uJC5uZXh0KHRydWUpXHJcbiAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICAgICAgemlwKFtcclxuICAgICAgICAgICAgICB0aGlzLmFwcFNlcnZpY2UucG9zdChhcGkuU1lTX0dST1VQX0ZVTkNUSU9OX0FDVElPTl9QRVJNSVNTSU9OX1VQREFURV9SQU5HRSwgYWN0aW9uUGF5bG9hZCksXHJcbiAgICAgICAgICAgICAgdGhpcy5hcHBTZXJ2aWNlLnBvc3QoYXBpLlNZU19HUk9VUF9PUkdfUEVSTUlTU0lPTl9VUERBVEVfUkFOR0UsIG9yZ1BheWxvYWQpXHJcbiAgICAgICAgICAgIF0pLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmJsb2NraW5nTGVmdExpc3RJbnRlcmFjdGlvbiQubmV4dChmYWxzZSlcclxuICAgICAgICAgICAgICB0aGlzLmFsbG93RWRpdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIGlmICh4WzBdLm9rICYmIHhbMF0uc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGJvZHk6IElGb3JtYXRlZFJlc3BvbnNlID0geFswXS5ib2R5O1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChib2R5LnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgLy8gcmVsb2FkIGFjdGlvbiBwZXJtaXNzaW9ucyBmb3IgY3VycmVudCBvYmplY3RJZFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmJsb2NraW5nTGVmdExpc3RJbnRlcmFjdGlvbiQubmV4dCh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBTZXJ2aWNlLmdldCh0aGlzLnF1ZXJ5RnVuY3Rpb25BY3Rpb25QZXJtaXNzaW9uTGlzdEFwaUVuZHBvaW50ICsgJz9vYmplY3RJZD0nICsgdGhpcy5vYmplY3RJZCArIFwiJnVzZUdyb3VwSWZFbXB0eT1mYWxzZVwiKS5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tpbmdMZWZ0TGlzdEludGVyYWN0aW9uJC5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVzb2x2ZVF1ZXJ5RnVuY3Rpb25BY3Rpb25QZXJtaXNzaW9uTGlzdCh4KVxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgIClcclxuXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICAgICAgICAgICAgICAvL3RoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKEpTT04uc3RyaW5naWZ5KHhbMF0sIG51bGwsIDIpLCBhbGVydE9wdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAoeFsxXS5vayAmJiB4WzFdLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBib2R5MTogSUZvcm1hdGVkUmVzcG9uc2UgPSB4WzFdLmJvZHk7XHJcbiAgICAgICAgICAgICAgICAvL3RoaXMucmVzcG9uc2VTZXJ2aWNlLnJlc29sdmUoYm9keTEpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGJvZHkxLnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICAgICAgICAgICAgLy90aGlzLmFsZXJ0U2VydmljZS5lcnJvcihKU09OLnN0cmluZ2lmeSh4WzBdLCBudWxsLCAyKSwgYWxlcnRPcHRpb25zKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQWN0aW9uUGVybWlzc2lvblZhbHVlQ2hhbmdlKGU6IElDb3JlRnVuY3Rpb25BY3Rpb25bXSk6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coXCJvbkFjdGlvblBlcm1pc3Npb25WYWx1ZUNoYW5nZVwiLCBlKTtcclxuICB9XHJcblxyXG4gIG9uT3JnVHJlZUl0ZW1DaGVjayhlOiBhbnkpIHtcclxuICAgIGlmICghISF0aGlzLmFsbG93RWRpdCkge1xyXG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5pbmZvKHRoaXMubWxzLnRyYW5zKCdVSV9VU0VSX1BFUk1JU1NJT05fVE9fRURJVF9QTEVBU0VfU0VMRUNUX0FfVVNFUl9BTkRfQ0xJQ0tfVEhFX1BFTkNJTCcsIHRoaXMubGFuZyksIGFsZXJ0T3B0aW9ucyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrQ2xvc2VTdGF0ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd1N0YXRlVHJhY2tlciA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgY2FuRGVhY3RpdmF0ZSgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgYm9vbGVhbiB7XHJcbiAgICB0aGlzLmN1cnJlbnRBY3Rpb25QZXJtaXNzaW9uVmFsdWVKc29uU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkodGhpcy5hY3Rpb25QZXJtaXNzaW9uVmFsdWUpO1xyXG4gICAgY29uc3QgY29uZGl0aW9uMSA9IHRoaXMuY3VycmVudEFjdGlvblBlcm1pc3Npb25WYWx1ZUpzb25TdHJpbmcgPT09IHRoaXMuaW5pdGlhbEFjdGlvblBlcm1pc3Npb25WYWx1ZUpzb25TdHJpbmc7XHJcbiAgICB0aGlzLmN1cnJlbnRPcmdQZXJtaXNzaW9uVmFsdWVKc29uU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkodGhpcy5vcmdQZXJtaXNzaW9uVmFsdWUpO1xyXG4gICAgY29uc3QgY29uZGl0aW9uMiA9IHRoaXMuY3VycmVudE9yZ1Blcm1pc3Npb25WYWx1ZUpzb25TdHJpbmcgPT09IHRoaXMuaW5pdGlhbE9yZ1Blcm1pc3Npb25WYWx1ZUpzb25TdHJpbmc7XHJcbiAgICBjb25zdCBjb25kaXRpb24gPSBjb25kaXRpb24xICYmIGNvbmRpdGlvbjI7XHJcblxyXG4gICAgcmV0dXJuIHRydWU7IC8vIFRPIERPXHJcblxyXG4gICAgaWYgKGNvbmRpdGlvbikge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICB0aGlzLnBlbmRpbmdBY3Rpb24gPSAnQ0hBTkdFU19XSUxMX0JFX0xPU1QnO1xyXG4gICAgICB0aGlzLmRpYWxvZ0luc3RhbmNlTnVtYmVyID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgIHRoaXMuc2hvd1N0YXRlVHJhY2tlciA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuYnVzeSA9IHRydWU7XHJcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5kaWFsb2dDb25maXJtZWQkLm5leHQoe1xyXG4gICAgICAgIGNvbmZpcm1lZDogZmFsc2UsXHJcbiAgICAgICAgaW5zdGFuY2VOdW1iZXI6IHRoaXMuZGlhbG9nSW5zdGFuY2VOdW1iZXJcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dDb25maXJtRGlhbG9nJC5uZXh0KHRydWUpO1xyXG4gICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UudGl0bGUkLm5leHQoRW51bVRyYW5zbGF0ZUtleS5VSV9DT1JFX0NPTkZJUk1fRElBTE9HX1RJVExFKTtcclxuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmJvZHkkLm5leHQoRW51bVRyYW5zbGF0ZUtleS5VSV9DT1JFX0NPTkZJUk1fRElBTE9HX0JPRFlfQ0hBTkdFU19XSUxMX0JFX0xPU1QpO1xyXG4gICAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uub2tCdXR0b25UZXh0JC5uZXh0KEVudW1UcmFuc2xhdGVLZXkuVUlfQ09SRV9DT05GSVJNX0RJQUxPR19CVVRUT05fQ09ORklSTSk7XHJcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5jYW5jZWxCdXR0b25UZXh0JC5uZXh0KEVudW1UcmFuc2xhdGVLZXkuVUlfQ09SRV9DT05GSVJNX0RJQUxPR19CVVRUT05fR09fQkFDS19UT19FRElUX0ZPUk0pO1xyXG4gICAgICBjb25zdCBvYnNlcnZhYmxlID0gdGhpcy5kaWFsb2dTZXJ2aWNlLmNhbkRlYWN0aXZhdGUkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgICByZXR1cm4gb2JzZXJ2YWJsZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLm1hcCh4ID0+IHg/LnVuc3Vic2NyaWJlKCkpXHJcbiAgICB0aGlzLmNvcmVQZXJtaXNzaW9uU2VydmljZS5pbnN0YW5jZU51bWJlciA9IG51bGw7XHJcbiAgICB0aGlzLmNvcmVQZXJtaXNzaW9uU2VydmljZS5zZWxlY3RlZE9iamVjdCQubmV4dChudWxsKTtcclxuICAgIHRoaXMuY29yZVBlcm1pc3Npb25TZXJ2aWNlLnNlbGVjdGVkT2JqZWN0QWN0aW9uUGVybWlzc2lvbnMkLm5leHQoW10pO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiAjY29udGFpbmVyIGNsYXNzPVwiY29yZS1wZXJtaXNzaW9uLWNvbnRhaW5lclwiIFtuZ1N0eWxlXT1cInsgaGVpZ2h0OiBoZWlnaHQgKyAncHgnfVwiPlxyXG4gIDxjb3JlLXBhZ2UtaGVhZGVyIFt0aXRsZV09XCJ0aXRsZVwiIChidXR0b25DbGljayk9XCJvbkNvcmVQYWdlSGVhZGVyQnV0dG9uQ2xpY2soJGV2ZW50KVwiPjwvY29yZS1wYWdlLWhlYWRlcj5cclxuXHJcbiAgPGNvcmUtY29tcG9zaXRpb24gW2xlZnRdPVwidXNlclNlZWtlclwiIFtsZWZ0V2lkdGhdPVwiMjAwXCIgW21haW5dPVwidGFic1wiIFtoZWlnaHRdPVwiY29tcG9zaXRpb25IZWlnaHRcIj5cclxuICA8L2NvcmUtY29tcG9zaXRpb24+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJzdGF0ZS10cmFja2VyIGNvbnRhaW5lciBjb250YWluZXItZmx1aWRcIiAqbmdJZj1cInNob3dTdGF0ZVRyYWNrZXIgJiYgaXNSb290VXNlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInctMTAwIGQtZmxleCBkLWZsZXgtYmV0d2VlblwiPlxyXG4gICAgICA8c3Bhbj5Db21wYXJlPC9zcGFuPlxyXG4gICAgICA8aSBjbGFzcz1cImZlYXRoZXIteFwiIChjbGljayk9XCJvbkNsaWNrQ2xvc2VTdGF0ZSgpXCI+PC9pPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgIHt7IGluaXRpYWxBY3Rpb25QZXJtaXNzaW9uVmFsdWVKc29uU3RyaW5nIH19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICB7eyBjdXJyZW50QWN0aW9uUGVybWlzc2lvblZhbHVlSnNvblN0cmluZyB9fVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICB7eyBpbml0aWFsT3JnUGVybWlzc2lvblZhbHVlSnNvblN0cmluZyB9fVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAge3sgY3VycmVudE9yZ1Blcm1pc3Npb25WYWx1ZUpzb25TdHJpbmcgfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbjwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICN0YWJzPlxyXG4gIDxjb3JlLXRhYnMgW2hlYWRlcnNdPVwidGFiSGVhZGVyc1wiIFtjb250ZW50c109XCJbdGFiMSwgdGFiMl1cIiBbaGVpZ2h0XT1cImNvbXBvc2l0aW9uSGVpZ2h0XCI+PC9jb3JlLXRhYnM+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3RhYjE+XHJcbiAgPGRpdiBbbmdTdHlsZV09XCJ7IGhlaWdodDogbGF5b3V0U2VydmljZS5iYXNpY1NwYWNpbmcgKyAncHgnIH1cIj48L2Rpdj5cclxuICA8Y29yZS1wZXJtaXNzaW9uLWFjdGlvbnMgW2xvYWRpbmddPVwibG9hZGluZ1wiIFsobmdNb2RlbCldPVwiYWN0aW9uUGVybWlzc2lvblZhbHVlXCJcclxuICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQWN0aW9uUGVybWlzc2lvblZhbHVlQ2hhbmdlKCRldmVudClcIiBbZGlzYWJsZWRdPVwiISEhYWxsb3dFZGl0XCIgW2hlaWdodF09XCJjb3JlUGVybWlzc2lvbkFjdGlvbnNIZWlnaHRcIj48L2NvcmUtcGVybWlzc2lvbi1hY3Rpb25zPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICN1c2VyU2Vla2VyPlxyXG5cclxuICA8Y29yZS1saXN0LWxhenkgW3F1ZXJ5TGlzdEFwaV09XCJvYmplY3RRdWVyeUxpc3RBcGlcIiBbdGV4dEZpZWxkXT1cIm9iamVjdExpc3RUZXh0RmllbGRcIiBbKG5nTW9kZWwpXT1cIm9iamVjdElkXCJcclxuICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uT2JqZWN0SWRDaGFuZ2UoJGV2ZW50KVwiIFtoZWlnaHRdPVwiY29tcG9zaXRpb25IZWlnaHRcIiBbYmxvY2tpbmdJbnRlcmFjdGlvbiRdPVwiYmxvY2tpbmdMZWZ0TGlzdEludGVyYWN0aW9uJFwiPjwvY29yZS1saXN0LWxhenk+XHJcblxyXG5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdGFiMj5cclxuICA8ZGl2IFtuZ1N0eWxlXT1cInsgaGVpZ2h0OiBsYXlvdXRTZXJ2aWNlLmJhc2ljU3BhY2luZyArICdweCcgfVwiPjwvZGl2PlxyXG4gIDxjb3JlLW9yZy10cmVlIFtmdWxsV2lkdGhNb2RlXT1cInRydWVcIiBbYWNjZXNzb3JNb2RlXT1cInRyZWVBY2Nlc3Nvck1vZGVcIiBbKG5nTW9kZWwpXT1cIm9yZ0lkc1wiIFtkaXNhYmxlZF09XCIhISFhbGxvd0VkaXRcIlxyXG4gICAgKGl0ZW1DbGljayk9XCJvbk9yZ1RyZWVJdGVtQ2hlY2soJGV2ZW50KVwiIG5hbWU9XCJvcmdJZHNcIiBuZ0RlZmF1bHRDb250cm9sIFtoZWlnaHRdPVwidHJlZUhlaWdodFwiPjwvY29yZS1vcmctdHJlZT5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
|
509
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1wZXJtaXNzaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLXBlcm1pc3Npb24vY29yZS1wZXJtaXNzaW9uL2NvcmUtcGVybWlzc2lvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS1wZXJtaXNzaW9uL2NvcmUtcGVybWlzc2lvbi9jb3JlLXBlcm1pc3Npb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWMsS0FBSyxFQUFlLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0csT0FBTyxFQUFFLGVBQWUsRUFBYyxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHdEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxrQkFBa0IsRUFBbUIsTUFBTSx1Q0FBdUMsQ0FBQztBQUU1RixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFjNUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLDRCQUE0QixFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFDNUksT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0ZBQXNGLENBQUM7QUFDN0gsT0FBTyxFQUFFLFlBQVksRUFBRSwwQkFBMEIsRUFB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QUNaLFdBQVcsa25CQUNYLG9CQUFvQixzUEFFcEIsaUJBQWlCLG1MQUNqQix1QkFBdUIsNkpBQ3ZCLHdCQUF3QiwwS0FDeEIscUJBQXFCLHFKQUdyQiw4QkFBOEI7OzJGQU9yQix1QkFBdUI7a0JBckJuQyxTQUFTOytCQUNFLGlCQUFpQixjQUNmLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsb0JBQW9CO3dCQUNwQiw0QkFBNEI7d0JBQzVCLGlCQUFpQjt3QkFDakIsdUJBQXVCO3dCQUN2Qix3QkFBd0I7d0JBQ3hCLHFCQUFxQjt3QkFDckIsYUFBYTt3QkFDYixpQkFBaUI7d0JBQ2pCLDhCQUE4Qjt3QkFDOUIsMEJBQTBCO3dCQUMxQix3QkFBd0I7cUJBQ3pCO2laQU1RLElBQUk7c0JBQVosS0FBSztnQkFDZSxNQUFNO3NCQUExQixTQUFTO3VCQUFDLFFBQVE7Z0JBQ0csT0FBTztzQkFBNUIsU0FBUzt1QkFBQyxTQUFTO2dCQUNJLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIGlzRGV2TW9kZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbWFwLCBzd2l0Y2hNYXAsIHppcCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IFJvdXRlciwgQWN0aXZhdGVkUm91dGUgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcblxyXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uLy4uL2xpYnJhcmllcy9iYXNlLWNvbXBvbmVudC9iYXNlL2Jhc2UuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEVudW1UcmFuc2xhdGVLZXkgfSBmcm9tIFwiYWxwaGEtZ2xvYmFsLWNvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBFbnVtRmlsdGVyT3BlcmF0b3IsIElGaWx0ZXJPcGVyYXRvciB9IGZyb20gXCIuLi8uLi8uLi9pbnRlcmZhY2VzL0lRdWVyeUxpc3RSZXF1ZXN0XCI7XHJcbmltcG9ydCB7IElDb3JlUGFnZUxpc3RBcGlEZWZpbml0aW9uLCBJQ29yZVBhZ2VMaXN0RWRpdFJvdXRpbmcgfSBmcm9tIFwiLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUtcGFnZS1saXN0L2NvcmUtcGFnZS1saXN0LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBhcGkgfSBmcm9tIFwiYWxwaGEtZ2xvYmFsLWNvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBJQ29yZVRhYmxlQ29sdW1uSXRlbSB9IGZyb20gXCIuLi8uLi9jb3JlLXRhYmxlL0lDb3JlVGFibGVDb2x1bW5JdGVtXCI7XHJcbmltcG9ydCB7IEVudW1Db3JlVGFibGVQaXBlVHlwZSB9IGZyb20gXCIuLi8uLi8uLi9saWJyYXJpZXMvY29yZS10YWJsZS9FbnVtQ29yZVRhYmxlUGlwZVR5cGVcIjtcclxuXHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL211bHRpLWxhbmd1YWdlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgUmFuZG9tQXZhdGFyU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy9yYW5kb20tYXZhdGFyLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQ29yZVBlcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL2xpYnJhcmllcy9jb3JlLXBlcm1pc3Npb24vY29yZS1wZXJtaXNzaW9uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQXBwU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy9hcHAuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vbGlicmFyaWVzL2FsZXJ0L2FsZXJ0LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IERvbVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvZG9tLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTGF5b3V0U2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy9sYXlvdXQuc2VydmljZVwiO1xyXG5cclxuaW1wb3J0IHsgSUNvcmVMaXN0T3B0aW9uIH0gZnJvbSBcIi4uLy4uLy4uL2xpYnJhcmllcy9jb3JlLWxpc3QvY29yZS1saXN0L2NvcmUtbGlzdC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgSUZvcm1hdGVkUmVzcG9uc2UgfSBmcm9tIFwiLi4vLi4vLi4vaW50ZXJmYWNlcy9JRm9ybWF0ZWRSZXNwb25zZVwiO1xyXG5pbXBvcnQgeyBJQ29yZUJ1dHRvblZOUyB9IGZyb20gXCIuLi8uLi8uLi9saWJyYXJpZXMvY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9JQ29yZUJ1dHRvblZOU1wiO1xyXG5pbXBvcnQgeyBDb3JlT3JnVHJlZUNvbXBvbmVudCwgRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZSB9IGZyb20gXCIuLi8uLi8uLi9saWJyYXJpZXMvY29yZS1vcmctdHJlZS9jb3JlLW9yZy10cmVlL2NvcmUtb3JnLXRyZWUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEVudW1Db3JlQnV0dG9uVk5TQ29kZSB9IGZyb20gXCIuLi8uLi8uLi9saWJyYXJpZXMvY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9FbnVtQ29yZUJ1dHRvblZOU0NvZGVcIjtcclxuaW1wb3J0IHsgYWxlcnRPcHRpb25zLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucyB9IGZyb20gXCIuLi8uLi8uLi9jb25zdGFudHMvYWxlcnRPcHRpb25zXCI7XHJcbmltcG9ydCB7IENvcmVQZXJtaXNzaW9uQWN0aW9uc0NvbXBvbmVudCwgSUNvcmVGdW5jdGlvbkFjdGlvbiB9IGZyb20gXCIuLi8uLi8uLi9saWJyYXJpZXMvY29yZS1wZXJtaXNzaW9uLWFjdGlvbnMvY29yZS1wZXJtaXNzaW9uLWFjdGlvbnMvY29yZS1wZXJtaXNzaW9uLWFjdGlvbnMuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvZGlhbG9nLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBDb3JlUGFnZUxpc3RDb250ZW50Q29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NvcmUtcGFnZS1saXN0LWNvbnRlbnQvY29yZS1wYWdlLWxpc3QtY29udGVudC9jb3JlLXBhZ2UtbGlzdC1jb250ZW50LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBDb3JlVGFic0NvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb3JlLXRhYnMvY29yZS10YWJzL2NvcmUtdGFicy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgQ29yZVBhZ2VIZWFkZXJDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29yZS1wYWdlLWhlYWRlci9jb3JlLXBhZ2UtaGVhZGVyL2NvcmUtcGFnZS1oZWFkZXIuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IENvcmVDb21wb3NpdGlvbkNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb3JlLWNvbXBvc2l0aW9uL2NvcmUtY29tcG9zaXRpb24vY29yZS1jb21wb3NpdGlvbi5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgQ29yZUxpc3RMYXp5Q29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NvcmUtbGlzdC1sYXp5L2NvcmUtbGlzdC1sYXp5L2NvcmUtbGlzdC1sYXp5LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSBcIi4uLy4uLy4uL2FwcC1waXBlcy90cmFuc2xhdGUucGlwZVwiO1xyXG5pbXBvcnQgeyBDb3JlVGFnc0NvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb3JlLXRhZ3MvY29yZS10YWdzL2NvcmUtdGFncy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgQ29yZUNvbmZpcm1EaWFsb2dDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29yZS1jb25maXJtLWRpYWxvZy9jb3JlLWNvbmZpcm0tZGlhbG9nL2NvcmUtY29uZmlybS1kaWFsb2cuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IENvcmVBcGlQcm9ncmVzc0NvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb3JlLWFwaS1wcm9ncmVzcy9jb3JlLWFwaS1wcm9ncmVzcy9jb3JlLWFwaS1wcm9ncmVzcy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy9hcHAtY29uZmlnLnNlcnZpY2VcIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVVzZXJQZXJtaXNzaW9uTW9kZWwge1xyXG4gIHVzZXJJZDogc3RyaW5nO1xyXG4gIGZ1bmN0aW9uSWQ6IG51bWJlcjtcclxuICBhY3Rpb25JZDogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElVc2VyT3JnUGVybWlzc2lvbk1vZGVsIHtcclxuICB1c2VySWQ6IHN0cmluZztcclxuICBvcmdJZDogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElHcm91cFBlcm1pc3Npb25Nb2RlbCB7XHJcbiAgZ3JvdXBJZDogbnVtYmVyO1xyXG4gIGZ1bmN0aW9uSWQ6IG51bWJlcjtcclxuICBhY3Rpb25JZDogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElHcm91cE9yZ1Blcm1pc3Npb25Nb2RlbCB7XHJcbiAgZ3JvdXBJZDogbnVtYmVyO1xyXG4gIG9yZ0lkOiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIEVudW1QZXJtaXNzaW9uT2JqZWN0VHlwZSB7XHJcbiAgVVNFUiA9ICdVU0VSJyxcclxuICBVU0VSX0dST1VQID0gJ1VTRVJfR1JPVVAnXHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY29yZS1wZXJtaXNzaW9uJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgQ29yZU9yZ1RyZWVDb21wb25lbnQsXHJcbiAgICBDb3JlUGFnZUxpc3RDb250ZW50Q29tcG9uZW50LFxyXG4gICAgQ29yZVRhYnNDb21wb25lbnQsXHJcbiAgICBDb3JlUGFnZUhlYWRlckNvbXBvbmVudCxcclxuICAgIENvcmVDb21wb3NpdGlvbkNvbXBvbmVudCxcclxuICAgIENvcmVMaXN0TGF6eUNvbXBvbmVudCxcclxuICAgIFRyYW5zbGF0ZVBpcGUsXHJcbiAgICBDb3JlVGFnc0NvbXBvbmVudCxcclxuICAgIENvcmVQZXJtaXNzaW9uQWN0aW9uc0NvbXBvbmVudCxcclxuICAgIENvcmVDb25maXJtRGlhbG9nQ29tcG9uZW50LFxyXG4gICAgQ29yZUFwaVByb2dyZXNzQ29tcG9uZW50XHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29yZS1wZXJtaXNzaW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb3JlLXBlcm1pc3Npb24uY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29yZVBlcm1pc3Npb25Db21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpIHR5cGUhOiBFbnVtUGVybWlzc2lvbk9iamVjdFR5cGU7XHJcbiAgQFZpZXdDaGlsZCgnYXZhdGFyJykgYXZhdGFyITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCdhY3Rpb25zJykgYWN0aW9ucyE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyJykgY29udGFpbmVyITogRWxlbWVudFJlZjtcclxuXHJcbiAgaGVpZ2h0ITogbnVtYmVyO1xyXG4gIHRpdGxlITogRW51bVRyYW5zbGF0ZUtleVxyXG4gIGxvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHBpcGUhOiBFbnVtQ29yZVRhYmxlUGlwZVR5cGU7XHJcblxyXG4gIGlzUm9vdFVzZXIhOiBib29sZWFuIHwgdW5kZWZpbmVkO1xyXG4gIGNvbXBvc2l0aW9uSGVpZ2h0ITogbnVtYmVyO1xyXG4gIHNlbGVjdGVkRGF0YTogYW55W10gPSBbXTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBvdmVycmlkZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHVibGljIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJhczogUmFuZG9tQXZhdGFyU2VydmljZSxcclxuICAgIHByaXZhdGUgY29yZVBlcm1pc3Npb25TZXJ2aWNlOiBDb3JlUGVybWlzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwcFNlcnZpY2U6IEFwcFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgbGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZSxcclxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgZG9tU2VydmljZTogRG9tU2VydmljZSxcclxuICAgIHByaXZhdGUgYXBwQ29uZmlnU2VydmljZTogQXBwQ29uZmlnU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIobWxzKTtcclxuXHJcbiAgICB0aGlzLmRlZmF1bHRBdmF0YXIgPSByYXMuZ2V0KCk7XHJcbiAgICB0aGlzLmNvcmVQZXJtaXNzaW9uU2VydmljZS5pbnN0YW5jZU51bWJlciA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG5cclxuICAgIGlmICh0aGlzLnJvdXRlci51cmwuaW5jbHVkZXMoJ3VwZXJtaXNzaW9uJykpIHRoaXMudHlwZSA9IEVudW1QZXJtaXNzaW9uT2JqZWN0VHlwZS5VU0VSXHJcbiAgICBpZiAodGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKCdncm91cHBlcm1pc3Npb24nKSkgdGhpcy50eXBlID0gRW51bVBlcm1pc3Npb25PYmplY3RUeXBlLlVTRVJfR1JPVVBcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5yb3V0ZS5wYXJhbU1hcC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgY29uc3QgaWQgPSB4LmdldCgnaWQnKTtcclxuICAgICAgICBpZiAoISFpZCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gRW51bVBlcm1pc3Npb25PYmplY3RUeXBlLlVTRVIpIHtcclxuICAgICAgICAgICAgdGhpcy5vYmplY3RJZCQubmV4dChpZClcclxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID0gRW51bVBlcm1pc3Npb25PYmplY3RUeXBlLlVTRVJfR1JPVVApIHtcclxuICAgICAgICAgICAgdGhpcy5vYmplY3RJZCQubmV4dChOdW1iZXIoaWQpKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIClcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5hdXRoU2VydmljZS5kYXRhJC5zdWJzY3JpYmUoeCA9PiB0aGlzLmlzUm9vdFVzZXIgPSB4Py5pc1Jvb3QpXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICB0YWJIZWFkZXJzOiBzdHJpbmdbXSA9IFtcclxuICAgIEVudW1UcmFuc2xhdGVLZXkuVUlfVVNFUl9HUk9VUF9QRVJNSVNTSU9OX0ZVTkNUSU9OX1RBQiwgLy8gbWFrZSB1c2Ugb2YgYW4gZXhpc3Rpbmcga2V5XHJcbiAgICBFbnVtVHJhbnNsYXRlS2V5LlVJX1VTRVJfR1JPVVBfUEVSTUlTU0lPTl9PUkdfVU5JVF9UQUIsIC8vIG1ha2UgdXNlIG9mIGFuIGV4aXN0aW5nIGtleVxyXG4gIF1cclxuXHJcbiAgb2JqZWN0SWQhOiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgb2JqZWN0SWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCBudW1iZXIgfCBudWxsPihudWxsKTtcclxuICBvcmdJZHM6IG51bWJlcltdID0gW107XHJcbiAgb2JqZWN0UXVlcnlMaXN0QXBpITogYXBpO1xyXG4gIG9iamVjdExpc3RUZXh0RmllbGQhOiBzdHJpbmc7XHJcbiAgcGVuZGluZ0FjdGlvbiE6IGFueTtcclxuICBwZW5kaW5nT2JqZWN0SWQhOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsO1xyXG5cclxuICBzaG93U3RhdGVUcmFja2VyITogYm9vbGVhbjtcclxuXHJcbiAgdXNlckxpc3RUZXh0UGlwZTogRW51bUNvcmVUYWJsZVBpcGVUeXBlID0gRW51bUNvcmVUYWJsZVBpcGVUeXBlLlVQUEVSQ0FTRTtcclxuXHJcbiAgdHJlZUFjY2Vzc29yTW9kZTogRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZSA9IEVudW1Db3JlT3JnVHJlZWFBY2Nlc3Nvck1vZGUuQ0hFQ0tFRDtcclxuXHJcbiAgdXNlck9wdGlvbnM6IElDb3JlTGlzdE9wdGlvbltdID0gW11cclxuXHJcbiAgb3V0ZXJGaWx0ZXJPcGVyYXRvcnM6IElGaWx0ZXJPcGVyYXRvcltdID0gW1xyXG4gICAge1xyXG4gICAgICBmaWVsZDogJ3VzZXJJZCcsXHJcbiAgICAgIG9wZXJhdG9yOiBFbnVtRmlsdGVyT3BlcmF0b3IuRVFVQUxcclxuICAgIH1cclxuICBdXHJcblxyXG4gIGxlZnRBcGlEZWZpbml0aW9uOiBJQ29yZVBhZ2VMaXN0QXBpRGVmaW5pdGlvbiA9IHtcclxuICAgIHF1ZXJ5TGlzdFJlbGF0aXZlUGF0aDogYXBpLlNZU19VU0VSX1FVRVJZX0xJU1QsXHJcbiAgfVxyXG5cclxuICBhcGlEZWZpbml0aW9uOiBJQ29yZVBhZ2VMaXN0QXBpRGVmaW5pdGlvbiA9IHtcclxuICAgIHF1ZXJ5TGlzdFJlbGF0aXZlUGF0aDogYXBpLlNZU19VU0VSX1BFUk1JU1NJT05fUVVFUllfTElTVCxcclxuICB9XHJcblxyXG4gIGFsbG93RWRpdCE6IGJvb2xlYW47XHJcblxyXG4gIGNvbHVtbnM6IElDb3JlVGFibGVDb2x1bW5JdGVtW10gPSBbXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fQ09NTU9OX0lELFxyXG4gICAgICBmaWVsZDogJ2lkJyxcclxuICAgICAgaGlkZGVuOiB0cnVlLFxyXG4gICAgICB0eXBlOiAnbnVtYmVyJyxcclxuICAgICAgYWxpZ246ICdyaWdodCcsXHJcbiAgICAgIHdpZHRoOiAwLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9TWVNfTU9EVUxFX05BTUVDT0RFLFxyXG4gICAgICBmaWVsZDogJ21vZHVsZU5hbWVDb2RlJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHdpZHRoOiAxNTAsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX1NZU19GVU5DVElPTl9QQVRILFxyXG4gICAgICBmaWVsZDogJ3BhdGgnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgd2lkdGg6IDE1MCxcclxuICAgIH0sXHJcbiAgICAvKlxyXG4gICAge1xyXG4gICAgICBjYXB0aW9uOiBFbnVtVHJhbnNsYXRlS2V5LlVJX0VOVElUWV9GSUVMRF9DQVBUSU9OX1NZU19GVU5DVElPTl9HUk9VUF9OQU1FQ09ERSxcclxuICAgICAgZmllbGQ6ICdncm91cE5hbWVDb2RlJyxcclxuICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGFsaWduOiAnbGVmdCcsXHJcbiAgICAgIHdpZHRoOiAxNTAsXHJcbiAgICB9LFxyXG4gICAgKi9cclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9TWVNfRlVOQ1RJT05fTkFNRUNPREUsXHJcbiAgICAgIGZpZWxkOiAnZnVuY3Rpb25OYW1lQ29kZScsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMTUwLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9TWVNfQUNUSU9OX05BTUVDT0RFLFxyXG4gICAgICBmaWVsZDogJ2FwcEFjdGlvbnMnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgaGlkZVNlYXJjaEJveDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IDEwMDAsXHJcbiAgICAgIHRlbXBsYXRlUmVmOiB0aGlzLmFjdGlvbnMsXHJcbiAgICAgIHRlbXBsYXRlUmVmQWxsb3dFZGl0T25Sb3dBY3RpdmVkOiB0cnVlXHJcbiAgICB9LFxyXG4gIF1cclxuXHJcbiAgZGVmYXVsdEF2YXRhciE6IHN0cmluZztcclxuICB0cmVlSGVpZ2h0ITogbnVtYmVyO1xyXG4gIGNvcmVQZXJtaXNzaW9uQWN0aW9uc0hlaWdodCE6IG51bWJlcjtcclxuICBkaWFsb2dJbnN0YW5jZU51bWJlciE6IG51bWJlcjtcclxuXHJcbiAgZWRpdFJvdXRlOiBJQ29yZVBhZ2VMaXN0RWRpdFJvdXRpbmcgPSB7XHJcbiAgICBhdXhpbGlhcnk6ICdwb3B1cEF1eCdcclxuICB9XHJcblxyXG4gIGFjdGlvblBlcm1pc3Npb25WYWx1ZTogSUNvcmVGdW5jdGlvbkFjdGlvbltdID0gW11cclxuICBpbml0aWFsQWN0aW9uUGVybWlzc2lvblZhbHVlSnNvblN0cmluZyE6IHN0cmluZ1xyXG4gIGN1cnJlbnRBY3Rpb25QZXJtaXNzaW9uVmFsdWVKc29uU3RyaW5nITogc3RyaW5nXHJcbiAgb3JnUGVybWlzc2lvblZhbHVlOiBudW1iZXJbXSA9IFtdXHJcbiAgaW5pdGlhbE9yZ1Blcm1pc3Npb25WYWx1ZUpzb25TdHJpbmchOiBzdHJpbmdcclxuICBjdXJyZW50T3JnUGVybWlzc2lvblZhbHVlSnNvblN0cmluZyE6IHN0cmluZ1xyXG5cclxuXHJcbiAgcXVlcnlGdW5jdGlvbkFjdGlvblBlcm1pc3Npb25MaXN0QXBpRW5kcG9pbnQhOiBzdHJpbmc7XHJcbiAgcXVlcnlPcmdQZXJtaXNzaW9uTGlzdEFwaUVuZHBvaW50ITogc3RyaW5nO1xyXG5cclxuICBibG9ja2luZ0xlZnRMaXN0SW50ZXJhY3Rpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIHVwZGF0ZUluaXRpYWxBY3Rpb25QZXJtaXNzaW9uVmFsdWVKc29uU3RyaW5nKGZ1bmN0aW9uQWN0aW9uczogSUNvcmVGdW5jdGlvbkFjdGlvbltdKTogdm9pZCB7XHJcbiAgICB0aGlzLmluaXRpYWxBY3Rpb25QZXJtaXNzaW9uVmFsdWVKc29uU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoeyBvYmplY3RJZDogdGhpcy5vYmplY3RJZCwgYWN0aW9uczogZnVuY3Rpb25BY3Rpb25zIH0pO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlSW5pdGlhbE9yZ1Blcm1pc3Npb25WYWx1ZUpzb25TdHJpbmcob3JnSWRzOiBudW1iZXJbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5vcmdQZXJtaXNzaW9uVmFsdWUgPSBvcmdJZHM7XHJcbiAgICB0aGlzLmluaXRpYWxPcmdQZXJtaXNzaW9uVmFsdWVKc29uU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoeyBvYmplY3RJZDogdGhpcy5vYmplY3RJZCwgb3JnSWRzOiBvcmdJZHMgfSk7XHJcbiAgfVxyXG5cclxuICByZXNvbHZlUXVlcnlGdW5jdGlvbkFjdGlvblBlcm1pc3Npb25MaXN0KGh0dHBSZXNwb25zZTogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoaHR0cFJlc3BvbnNlPy5vayAmJiBodHRwUmVzcG9uc2U/LnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgIGNvbnN0IGJvZHk6IElGb3JtYXRlZFJlc3BvbnNlID0gaHR0cFJlc3BvbnNlLmJvZHk7XHJcbiAgICAgIGlmIChib2R5LnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG5cclxuICAgICAgICAvLyBjaGVjayBmdW5jdGlvbklkIHRvIGJlIGluIGVsZW1lbnRzIG9mIHBlcm1pc3Npb24gYXJyYXlcclxuICAgICAgICBpZiAoISFib2R5Py5pbm5lckJvZHk/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgY29uc3QgY2hlY2tJdGVtID0gYm9keSEuaW5uZXJCb2R5IVswXVxyXG4gICAgICAgICAgaWYgKCFjaGVja0l0ZW0/LmZ1bmN0aW9uSWQpIHtcclxuICAgICAgICAgICAgaWYgKGlzRGV2TW9kZSgpIHx8IHRoaXMuYXBwQ29uZmlnU2VydmljZS5ERUJVR19FTkFCTEVEKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoYEVhY2ggcm93IG9mIHRoZSBsaXN0IHJldHVybmVkIGJ5ICR7dGhpcy5xdWVyeUZ1bmN0aW9uQWN0aW9uUGVybWlzc2lvbkxpc3RBcGlFbmRwb2ludH0gbXVzdCBoYXZlIGEgZmllbGQgbmFtZWQgZnVuY3Rpb25JZC4gUGxlYXNlIGNoZWNrIHRoZSBCYWNrZW5kIWAsIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmNvcmVQZXJtaXNzaW9uU2VydmljZS5zZWxlY3RlZE9iamVjdEFjdGlvblBlcm1pc3Npb25zJC5uZXh0KGJvZHkuaW5uZXJCb2R5KTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUluaXRpYWxBY3Rpb25QZXJtaXNzaW9uVmFsdWVKc29uU3RyaW5nKGJvZHkuaW5uZXJCb2R5KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNvbHVtbnMuZmlsdGVyKGMgPT4gYy5maWVsZCA9PT0gJ2FwcEFjdGlvbnMnKVswXS50ZW1wbGF0ZVJlZiA9IHRoaXMuYWN0aW9ucztcclxuXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMubGF5b3V0U2VydmljZS5jb250ZW50Q29udGFpbmVySGVpZ2h0JC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNvbXBvc2l0aW9uSGVpZ2h0ID0geCAtIHRoaXMubGF5b3V0U2VydmljZS5jb3JlUGFnZUhlYWRlckhlaWdodCAtIHRoaXMubGF5b3V0U2VydmljZS5iYXNpY1NwYWNpbmdcclxuICAgICAgICAgIHRoaXMuY29yZVBlcm1pc3Npb25BY3Rpb25zSGVpZ2h0ID0gdGhpcy5jb21wb3NpdGlvbkhlaWdodCAtIHRoaXMubGF5b3V0U2VydmljZS5jb3JlVGFic0hlYWRlckxpbmVIZWlnaHQgLSB0aGlzLmxheW91dFNlcnZpY2UuYmFzaWNTcGFjaW5nXHJcbiAgICAgICAgICB0aGlzLnRyZWVIZWlnaHQgPSB4IC0gdGhpcy5sYXlvdXRTZXJ2aWNlLmNvcmVQYWdlSGVhZGVySGVpZ2h0IC0gdGhpcy5sYXlvdXRTZXJ2aWNlLmJhc2ljU3BhY2luZyAqIDIgLSB0aGlzLmxheW91dFNlcnZpY2UuY29yZVRhYnNIZWFkZXJMaW5lSGVpZ2h0XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG5cclxuICAgICAgaWYgKHRoaXMudHlwZSA9PT0gRW51bVBlcm1pc3Npb25PYmplY3RUeXBlLlVTRVIpIHtcclxuICAgICAgICB0aGlzLnRpdGxlID0gRW51bVRyYW5zbGF0ZUtleS5VSV9DT01QT05FTlRfVElUTEVfVVNFUl9QRVJNSVNTSU9OXHJcbiAgICAgICAgdGhpcy5waXBlID0gRW51bUNvcmVUYWJsZVBpcGVUeXBlLkxPV0VSQ0FTRVxyXG4gICAgICAgIHRoaXMub2JqZWN0UXVlcnlMaXN0QXBpID0gYXBpLlNZU19VU0VSX1FVRVJZX0xJU1RcclxuICAgICAgICB0aGlzLnF1ZXJ5RnVuY3Rpb25BY3Rpb25QZXJtaXNzaW9uTGlzdEFwaUVuZHBvaW50ID0gYXBpLlNZU19VU0VSX1FVRVJZX0ZVTkNUSU9OX0FDVElPTl9QRVJNSVNTSU9OX0xJU1RcclxuICAgICAgICB0aGlzLnF1ZXJ5T3JnUGVybWlzc2lvbkxpc3RBcGlFbmRwb2ludCA9IGFwaS5TWVNfVVNFUl9RVUVSWV9VU0VSX09SR19QRVJNSVNTSU9OX0xJU1RcclxuICAgICAgICB0aGlzLm9iamVjdExpc3RUZXh0RmllbGQgPSBcInVzZXJuYW1lXCJcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09IEVudW1QZXJtaXNzaW9uT2JqZWN0VHlwZS5VU0VSX0dST1VQKSB7XHJcbiAgICAgICAgdGhpcy50aXRsZSA9IEVudW1UcmFuc2xhdGVLZXkuVUlfQ09NUE9ORU5UX1RJVExFX1VTRVJfR1JPVVBfUEVSTUlTU0lPTlxyXG4gICAgICAgIHRoaXMucGlwZSA9IEVudW1Db3JlVGFibGVQaXBlVHlwZS5VUFBFUkNBU0VcclxuICAgICAgICB0aGlzLm9iamVjdFF1ZXJ5TGlzdEFwaSA9IGFwaS5TWVNfR1JPVVBfUVVFUllfTElTVFxyXG4gICAgICAgIHRoaXMucXVlcnlGdW5jdGlvbkFjdGlvblBlcm1pc3Npb25MaXN0QXBpRW5kcG9pbnQgPSBhcGkuU1lTX0dST1VQX1FVRVJZX0ZVTkNUSU9OX0FDVElPTl9QRVJNSVNTSU9OX0xJU1RfR1JQQ1xyXG4gICAgICAgIHRoaXMucXVlcnlPcmdQZXJtaXNzaW9uTGlzdEFwaUVuZHBvaW50ID0gYXBpLlNZU19HUk9VUF9RVUVSWV9HUk9VUF9PUkdfUEVSTUlTU0lPTl9MSVNUXHJcbiAgICAgICAgdGhpcy5vYmplY3RMaXN0VGV4dEZpZWxkID0gXCJuYW1lXCJcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKHRoaXMubWxzLnRyYW5zKCdVSV9QRVJNSVNTSU9OX09CSkVDVF9JU19VTkRFRklORUQnLCB0aGlzLmxhbmcpLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5kaWFsb2dDb25maXJtZWQkLnBpcGUoXHJcbiAgICAgICAgICBmaWx0ZXIoeCA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiAhIXggJiYgISF4LmNvbmZpcm1lZCAmJiAhIXg/Lmluc3RhbmNlTnVtYmVyXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICkuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJ0aGlzLmRpYWxvZ1NlcnZpY2UuZGlhbG9nQ29uZmlybWVkJFwiLCB4KVxyXG4gICAgICAgICAgaWYgKCEhIXg/LmNvbmZpcm1lZCkge1xyXG4gICAgICAgICAgICB0aGlzLm9iamVjdElkID0gdGhpcy5vYmplY3RJZCQudmFsdWUhO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnJlc2V0U2VydmljZSgpXHJcblxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuXHJcblxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLmNvcmVQZXJtaXNzaW9uU2VydmljZS5zZWxlY3RlZE9iamVjdEFjdGlvblBlcm1pc3Npb25zJC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICB0aGlzLmFjdGlvblBlcm1pc3Npb25WYWx1ZSA9IHg7XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG5cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy5vYmplY3RJZCQucGlwZShcclxuICAgICAgICAgIGZpbHRlcih4ID0+ICEheCAmJiB4ICE9PSAwICYmIHggIT09ICcwJyksXHJcbiAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICAgICAgbWFwKHggPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvcmVQZXJtaXNzaW9uU2VydmljZS5zZWxlY3RlZE9iamVjdEFjdGlvblBlcm1pc3Npb25zJC5uZXh0KFtdKTtcclxuICAgICAgICAgICAgdGhpcy5vcmdJZHMgPSBbXTtcclxuICAgICAgICAgICAgcmV0dXJuIHg7XHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIHN3aXRjaE1hcChvYmplY3RJZCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuYmxvY2tpbmdMZWZ0TGlzdEludGVyYWN0aW9uJC5uZXh0KHRydWUpXHJcbiAgICAgICAgICAgIGlmICghISF0aGlzLm9iamVjdElkKSB0aGlzLm9iamVjdElkID0gb2JqZWN0SWQhO1xyXG4gICAgICAgICAgICByZXR1cm4gemlwKFtcclxuICAgICAgICAgICAgICB0aGlzLmFwcFNlcnZpY2UuZ2V0KHRoaXMucXVlcnlGdW5jdGlvbkFjdGlvblBlcm1pc3Npb25MaXN0QXBpRW5kcG9pbnQgKyAnP29iamVjdElkPScgKyBvYmplY3RJZCArIFwiJnVzZUdyb3VwSWZFbXB0eT1mYWxzZVwiKSxcclxuICAgICAgICAgICAgICB0aGlzLmFwcFNlcnZpY2UuZ2V0KHRoaXMucXVlcnlPcmdQZXJtaXNzaW9uTGlzdEFwaUVuZHBvaW50ICsgJz9vYmplY3RJZD0nICsgb2JqZWN0SWQgKyBcIiZ1c2VHcm91cElmRW1wdHk9ZmFsc2VcIildKVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICApLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5ibG9ja2luZ0xlZnRMaXN0SW50ZXJhY3Rpb24kLm5leHQoZmFsc2UpXHJcblxyXG4gICAgICAgICAgdGhpcy5yZXNvbHZlUXVlcnlGdW5jdGlvbkFjdGlvblBlcm1pc3Npb25MaXN0KHhbMF0pO1xyXG5cclxuICAgICAgICAgIC8qXHJcbiAgICAgICAgICBpZiAoeFswXS5vayAmJiB4WzBdLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGJvZHk6IElGb3JtYXRlZFJlc3BvbnNlID0geFswXS5ib2R5O1xyXG4gICAgICAgICAgICBpZiAoYm9keS5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuXHJcbiAgICAgICAgICAgICAgLy8gY2hlY2sgZnVuY3Rpb25JZCB0byBiZSBpbiBlbGVtZW50cyBvZiBwZXJtaXNzaW9uIGFycmF5XHJcbiAgICAgICAgICAgICAgaWYgKCEhYm9keT8uaW5uZXJCb2R5Py5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNoZWNrSXRlbSA9IGJvZHkhLmlubmVyQm9keSFbMF1cclxuICAgICAgICAgICAgICAgIGlmICghY2hlY2tJdGVtPy5mdW5jdGlvbklkKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChpc0Rldk1vZGUoKSB8fCB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuREVCVUdfRU5BQkxFRCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKGBFYWNoIHJvdyBvZiB0aGUgbGlzdCByZXR1cm5lZCBieSAke3RoaXMucXVlcnlGdW5jdGlvbkFjdGlvblBlcm1pc3Npb25MaXN0QXBpRW5kcG9pbnR9IG11c3QgaGF2ZSBhIGZpZWxkIG5hbWVkIGZ1bmN0aW9uSWQuIFBsZWFzZSBjaGVjayB0aGUgQmFja2VuZCFgLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5jb3JlUGVybWlzc2lvblNlcnZpY2Uuc2VsZWN0ZWRPYmplY3RBY3Rpb25QZXJtaXNzaW9ucyQubmV4dChib2R5LmlubmVyQm9keSk7XHJcbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVJbml0aWFsQWN0aW9uUGVybWlzc2lvblZhbHVlSnNvblN0cmluZyhib2R5LmlubmVyQm9keSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgICovXHJcblxyXG4gICAgICAgICAgaWYgKHhbMV0ub2sgJiYgeFsxXS5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICBjb25zdCBib2R5MTogSUZvcm1hdGVkUmVzcG9uc2UgPSB4WzFdLmJvZHk7XHJcbiAgICAgICAgICAgIC8vdGhpcy5yZXNwb25zZVNlcnZpY2UucmVzb2x2ZShib2R5MSk7XHJcbiAgICAgICAgICAgIGlmIChib2R5MS5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICB0aGlzLm9yZ0lkcyA9IGJvZHkxLmlubmVyQm9keTtcclxuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUluaXRpYWxPcmdQZXJtaXNzaW9uVmFsdWVKc29uU3RyaW5nKGJvZHkxLmlubmVyQm9keSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICApXHJcblxyXG4gICAgICB0aGlzLmNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS16LWluZGV4JywgdGhpcy5kb21TZXJ2aWNlLmdldE1heFpJbmRleCgpKVxyXG5cclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgLyogV2UgZG8gbm90IHVwZGF0ZSB0aGUgZ3JpZCB3aGVuIHVzZXJJZCBjaGFuZ2VzICovXHJcbiAgb25PYmplY3RJZENoYW5nZShvYmplY3RJZDogc3RyaW5nIHwgbnVtYmVyKSB7XHJcbiAgICB0aGlzLmNvcmVQZXJtaXNzaW9uU2VydmljZS5vYmplY3RJZCA9IG9iamVjdElkO1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW29iamVjdElkLnRvU3RyaW5nKCldLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUucGFyZW50IH0pXHJcbiAgfVxyXG5cclxuICBvbkNvcmVQYWdlSGVhZGVyQnV0dG9uQ2xpY2soZTogSUNvcmVCdXR0b25WTlMpIHtcclxuICAgIHN3aXRjaCAoZS5jb2RlKSB7XHJcbiAgICAgIGNhc2UgRW51bUNvcmVCdXR0b25WTlNDb2RlLkhFQURFUl9FRElUOlxyXG4gICAgICAgIGlmICghIXRoaXMub2JqZWN0SWQpIHtcclxuICAgICAgICAgIHRoaXMuYWxsb3dFZGl0ID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuaW5mbyh0aGlzLm1scy50cmFucygnVUlfVVNFUl9QRVJNSVNTSU9OX05PX1VTRVJfU0VMRUNURUQnLCB0aGlzLmxhbmcpLCBhbGVydE9wdGlvbnMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBFbnVtQ29yZUJ1dHRvblZOU0NvZGUuSEVBREVSX1VQRVJNSVNTSU9OX0RFTEVURTpcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLm9iamVjdElkKSB7XHJcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS53YXJuKHRoaXMubWxzLnRyYW5zKEVudW1UcmFuc2xhdGVLZXkuVUlfVVNFUl9QRVJNSVNTSU9OX1RPX0VESVRfUExFQVNFX1NFTEVDVF9BX1VTRVIpLCBhbGVydE9wdGlvbnMpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnRpdGxlJC5uZXh0KEVudW1UcmFuc2xhdGVLZXkuVUlfQ09SRV9ESUFMT0dfU0VSVklDRV9DT05GSVJNQVRJT04pXHJcbiAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uub2tCdXR0b25UZXh0JC5uZXh0KEVudW1UcmFuc2xhdGVLZXkuVUlfQ09SRV9DT05GSVJNX0RJQUxPR19CVVRUT05fQ09ORklSTSlcclxuICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5jYW5jZWxCdXR0b25UZXh0JC5uZXh0KEVudW1UcmFuc2xhdGVLZXkuVUlfQ09SRV9DT05GSVJNX0RJQUxPR19CVVRUT05fQ0FOQ0VMKVxyXG4gICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dDYW5jZWxPbmx5JC5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5idXN5ID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5ib2R5JC5uZXh0KEVudW1UcmFuc2xhdGVLZXkuVUlfQ09SRV9ESUFMT0dfU0VSVklDRV9BUkVfWU9VX1NVUkVfVE9fREVMRVRFKTtcclxuICAgICAgICAgIGxldCBsaXN0RGVsZXRlSWRzOiBhbnlbXSA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGEuZm9yRWFjaCh4ID0+IHtcclxuICAgICAgICAgICAgbGlzdERlbGV0ZUlkcy5wdXNoKHhbdGhpcy5jb2x1bW5zWzFdLmZpZWxkXSlcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmluZm9ybWF0aW9uTGluZXMkLm5leHQobGlzdERlbGV0ZUlkcylcclxuICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5zaG93Q29uZmlybURpYWxvZyQubmV4dCh0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRW51bUNvcmVCdXR0b25WTlNDb2RlLkhFQURFUl9TQVZFOlxyXG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT09IEVudW1QZXJtaXNzaW9uT2JqZWN0VHlwZS5VU0VSKSB7XHJcbiAgICAgICAgICBjb25zdCBhY3Rpb25SYW5nZTogSVVzZXJQZXJtaXNzaW9uTW9kZWxbXSA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5hY3Rpb25QZXJtaXNzaW9uVmFsdWUubWFwKGYgPT4ge1xyXG4gICAgICAgICAgICBmLmFsbG93ZWRBY3Rpb25JZHM/Lm1hcChpZCA9PiB7XHJcbiAgICAgICAgICAgICAgYWN0aW9uUmFuZ2UucHVzaCh7XHJcbiAgICAgICAgICAgICAgICB1c2VySWQ6IHRoaXMub2JqZWN0SWQudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uSWQ6IGYuZnVuY3Rpb25JZCxcclxuICAgICAgICAgICAgICAgIGFjdGlvbklkOiBpZFxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgY29uc3Qgb3JnUmFuZ2U6IElVc2VyT3JnUGVybWlzc2lvbk1vZGVsW10gPSBbXTtcclxuICAgICAgICAgIHRoaXMub3JnSWRzLm1hcChvID0+IHtcclxuICAgICAgICAgICAgb3JnUmFuZ2UucHVzaCh7XHJcbiAgICAgICAgICAgICAgdXNlcklkOiB0aGlzLm9iamVjdElkLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgb3JnSWQ6IG9cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBjb25zdCBhY3Rpb25QYXlsb2FkID0geyB1c2VySWQ6IHRoaXMub2JqZWN0SWQsIHJhbmdlOiBhY3Rpb25SYW5nZSB9XHJcbiAgICAgICAgICBjb25zdCBvcmdQYXlsb2FkID0geyB1c2VySWQ6IHRoaXMub2JqZWN0SWQsIHJhbmdlOiBvcmdSYW5nZSB9XHJcblxyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuYmxvY2tpbmdMZWZ0TGlzdEludGVyYWN0aW9uJC5uZXh0KHRydWUpXHJcbiAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuXHJcbiAgICAgICAgICAgIHppcChbXHJcbiAgICAgICAgICAgICAgdGhpcy5hcHBTZXJ2aWNlLnBvc3QoYXBpLlNZU19VU0VSX0ZVTkNUSU9OX0FDVElPTl9QRVJNSVNTSU9OX1VQREFURV9SQU5HRSwgYWN0aW9uUGF5bG9hZCksXHJcbiAgICAgICAgICAgICAgdGhpcy5hcHBTZXJ2aWNlLnBvc3QoYXBpLlNZU19VU0VSX09SR19QRVJNSVNTSU9OX1VQREFURV9SQU5HRSwgb3JnUGF5bG9hZClcclxuICAgICAgICAgICAgXSkuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuYWxsb3dFZGl0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5ibG9ja2luZ0xlZnRMaXN0SW50ZXJhY3Rpb24kLm5leHQoZmFsc2UpXHJcbiAgICAgICAgICAgICAgdGhpcy5yZXNvbHZlUXVlcnlGdW5jdGlvbkFjdGlvblBlcm1pc3Npb25MaXN0KHhbMF0pO1xyXG5cclxuICAgICAgICAgICAgICBpZiAoeFswXS5vayAmJiB4WzBdLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBib2R5OiBJRm9ybWF0ZWRSZXNwb25zZSA9IHhbMF0uYm9keTtcclxuICAgICAgICAgICAgICAgIGlmIChib2R5LnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgLy8gcmVsb2FkIGFjdGlvbiBwZXJtaXNzaW9ucyBmb3IgY3VycmVudCBvYmplY3RJZFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmJsb2NraW5nTGVmdExpc3RJbnRlcmFjdGlvbiQubmV4dCh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBTZXJ2aWNlLmdldCh0aGlzLnF1ZXJ5RnVuY3Rpb25BY3Rpb25QZXJtaXNzaW9uTGlzdEFwaUVuZHBvaW50ICsgJz9vYmplY3RJZD0nICsgdGhpcy5vYmplY3RJZCArIFwiJnVzZUdyb3VwSWZFbXB0eT1mYWxzZVwiKS5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tpbmdMZWZ0TGlzdEludGVyYWN0aW9uJC5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVzb2x2ZVF1ZXJ5RnVuY3Rpb25BY3Rpb25QZXJtaXNzaW9uTGlzdCh4KVxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgIClcclxuXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICAgICAgICAgICAgICAvL3RoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKEpTT04uc3RyaW5naWZ5KHhbMF0sIG51bGwsIDIpLCBhbGVydE9wdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAoeFsxXS5vayAmJiB4WzFdLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBib2R5MTogSUZvcm1hdGVkUmVzcG9uc2UgPSB4WzFdLmJvZHk7XHJcbiAgICAgICAgICAgICAgICAvL3RoaXMucmVzcG9uc2VTZXJ2aWNlLnJlc29sdmUoYm9keTEpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGJvZHkxLnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICAgICAgICAgICAgLy90aGlzLmFsZXJ0U2VydmljZS5lcnJvcihKU09OLnN0cmluZ2lmeSh4WzBdLCBudWxsLCAyKSwgYWxlcnRPcHRpb25zKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09IEVudW1QZXJtaXNzaW9uT2JqZWN0VHlwZS5VU0VSX0dST1VQKSB7XHJcbiAgICAgICAgICBjb25zdCBhY3Rpb25SYW5nZTogSUdyb3VwUGVybWlzc2lvbk1vZGVsW10gPSBbXTtcclxuICAgICAgICAgIHRoaXMuYWN0aW9uUGVybWlzc2lvblZhbHVlLm1hcChmID0+IHtcclxuICAgICAgICAgICAgZi5hbGxvd2VkQWN0aW9uSWRzPy5tYXAoaWQgPT4ge1xyXG4gICAgICAgICAgICAgIGFjdGlvblJhbmdlLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgZ3JvdXBJZDogTnVtYmVyKHRoaXMub2JqZWN0SWQpLFxyXG4gICAgICAgICAgICAgICAgZnVuY3Rpb25JZDogZi5mdW5jdGlvbklkLFxyXG4gICAgICAgICAgICAgICAgYWN0aW9uSWQ6IGlkXHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBjb25zdCBvcmdSYW5nZTogSUdyb3VwT3JnUGVybWlzc2lvbk1vZGVsW10gPSBbXTtcclxuICAgICAgICAgIHRoaXMub3JnSWRzLm1hcChvID0+IHtcclxuICAgICAgICAgICAgb3JnUmFuZ2UucHVzaCh7XHJcbiAgICAgICAgICAgICAgZ3JvdXBJZDogTnVtYmVyKHRoaXMub2JqZWN0SWQpLFxyXG4gICAgICAgICAgICAgIG9yZ0lkOiBvXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgY29uc3QgYWN0aW9uUGF5bG9hZCA9IHsgZ3JvdXBJZDogdGhpcy5vYmplY3RJZCwgcmFuZ2U6IGFjdGlvblJhbmdlIH1cclxuICAgICAgICAgIGNvbnN0IG9yZ1BheWxvYWQgPSB7IGdyb3VwSWQ6IHRoaXMub2JqZWN0SWQsIHJhbmdlOiBvcmdSYW5nZSB9XHJcblxyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuYmxvY2tpbmdMZWZ0TGlzdEludGVyYWN0aW9uJC5uZXh0KHRydWUpXHJcbiAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICAgICAgemlwKFtcclxuICAgICAgICAgICAgICB0aGlzLmFwcFNlcnZpY2UucG9zdChhcGkuU1lTX0dST1VQX0ZVTkNUSU9OX0FDVElPTl9QRVJNSVNTSU9OX1VQREFURV9SQU5HRSwgYWN0aW9uUGF5bG9hZCksXHJcbiAgICAgICAgICAgICAgdGhpcy5hcHBTZXJ2aWNlLnBvc3QoYXBpLlNZU19HUk9VUF9PUkdfUEVSTUlTU0lPTl9VUERBVEVfUkFOR0UsIG9yZ1BheWxvYWQpXHJcbiAgICAgICAgICAgIF0pLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmJsb2NraW5nTGVmdExpc3RJbnRlcmFjdGlvbiQubmV4dChmYWxzZSlcclxuICAgICAgICAgICAgICB0aGlzLmFsbG93RWRpdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIGlmICh4WzBdLm9rICYmIHhbMF0uc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGJvZHk6IElGb3JtYXRlZFJlc3BvbnNlID0geFswXS5ib2R5O1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChib2R5LnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgLy8gcmVsb2FkIGFjdGlvbiBwZXJtaXNzaW9ucyBmb3IgY3VycmVudCBvYmplY3RJZFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmJsb2NraW5nTGVmdExpc3RJbnRlcmFjdGlvbiQubmV4dCh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBTZXJ2aWNlLmdldCh0aGlzLnF1ZXJ5RnVuY3Rpb25BY3Rpb25QZXJtaXNzaW9uTGlzdEFwaUVuZHBvaW50ICsgJz9vYmplY3RJZD0nICsgdGhpcy5vYmplY3RJZCArIFwiJnVzZUdyb3VwSWZFbXB0eT1mYWxzZVwiKS5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tpbmdMZWZ0TGlzdEludGVyYWN0aW9uJC5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVzb2x2ZVF1ZXJ5RnVuY3Rpb25BY3Rpb25QZXJtaXNzaW9uTGlzdCh4KVxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgIClcclxuXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICAgICAgICAgICAgICAvL3RoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKEpTT04uc3RyaW5naWZ5KHhbMF0sIG51bGwsIDIpLCBhbGVydE9wdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAoeFsxXS5vayAmJiB4WzFdLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBib2R5MTogSUZvcm1hdGVkUmVzcG9uc2UgPSB4WzFdLmJvZHk7XHJcbiAgICAgICAgICAgICAgICAvL3RoaXMucmVzcG9uc2VTZXJ2aWNlLnJlc29sdmUoYm9keTEpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGJvZHkxLnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICAgICAgICAgICAgLy90aGlzLmFsZXJ0U2VydmljZS5lcnJvcihKU09OLnN0cmluZ2lmeSh4WzBdLCBudWxsLCAyKSwgYWxlcnRPcHRpb25zKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQWN0aW9uUGVybWlzc2lvblZhbHVlQ2hhbmdlKGU6IElDb3JlRnVuY3Rpb25BY3Rpb25bXSk6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coXCJvbkFjdGlvblBlcm1pc3Npb25WYWx1ZUNoYW5nZVwiLCBlKTtcclxuICB9XHJcblxyXG4gIG9uT3JnVHJlZUl0ZW1DaGVjayhlOiBhbnkpIHtcclxuICAgIGlmICghISF0aGlzLmFsbG93RWRpdCkge1xyXG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5pbmZvKHRoaXMubWxzLnRyYW5zKCdVSV9VU0VSX1BFUk1JU1NJT05fVE9fRURJVF9QTEVBU0VfU0VMRUNUX0FfVVNFUl9BTkRfQ0xJQ0tfVEhFX1BFTkNJTCcsIHRoaXMubGFuZyksIGFsZXJ0T3B0aW9ucyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrQ2xvc2VTdGF0ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd1N0YXRlVHJhY2tlciA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgY2FuRGVhY3RpdmF0ZSgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgYm9vbGVhbiB7XHJcbiAgICB0aGlzLmN1cnJlbnRBY3Rpb25QZXJtaXNzaW9uVmFsdWVKc29uU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkodGhpcy5hY3Rpb25QZXJtaXNzaW9uVmFsdWUpO1xyXG4gICAgY29uc3QgY29uZGl0aW9uMSA9IHRoaXMuY3VycmVudEFjdGlvblBlcm1pc3Npb25WYWx1ZUpzb25TdHJpbmcgPT09IHRoaXMuaW5pdGlhbEFjdGlvblBlcm1pc3Npb25WYWx1ZUpzb25TdHJpbmc7XHJcbiAgICB0aGlzLmN1cnJlbnRPcmdQZXJtaXNzaW9uVmFsdWVKc29uU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkodGhpcy5vcmdQZXJtaXNzaW9uVmFsdWUpO1xyXG4gICAgY29uc3QgY29uZGl0aW9uMiA9IHRoaXMuY3VycmVudE9yZ1Blcm1pc3Npb25WYWx1ZUpzb25TdHJpbmcgPT09IHRoaXMuaW5pdGlhbE9yZ1Blcm1pc3Npb25WYWx1ZUpzb25TdHJpbmc7XHJcbiAgICBjb25zdCBjb25kaXRpb24gPSBjb25kaXRpb24xICYmIGNvbmRpdGlvbjI7XHJcblxyXG4gICAgcmV0dXJuIHRydWU7IC8vIFRPIERPXHJcblxyXG4gICAgaWYgKGNvbmRpdGlvbikge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICB0aGlzLnBlbmRpbmdBY3Rpb24gPSAnQ0hBTkdFU19XSUxMX0JFX0xPU1QnO1xyXG4gICAgICB0aGlzLmRpYWxvZ0luc3RhbmNlTnVtYmVyID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgIHRoaXMuc2hvd1N0YXRlVHJhY2tlciA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuYnVzeSA9IHRydWU7XHJcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5kaWFsb2dDb25maXJtZWQkLm5leHQoe1xyXG4gICAgICAgIGNvbmZpcm1lZDogZmFsc2UsXHJcbiAgICAgICAgaW5zdGFuY2VOdW1iZXI6IHRoaXMuZGlhbG9nSW5zdGFuY2VOdW1iZXJcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dDb25maXJtRGlhbG9nJC5uZXh0KHRydWUpO1xyXG4gICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UudGl0bGUkLm5leHQoRW51bVRyYW5zbGF0ZUtleS5VSV9DT1JFX0NPTkZJUk1fRElBTE9HX1RJVExFKTtcclxuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmJvZHkkLm5leHQoRW51bVRyYW5zbGF0ZUtleS5VSV9DT1JFX0NPTkZJUk1fRElBTE9HX0JPRFlfQ0hBTkdFU19XSUxMX0JFX0xPU1QpO1xyXG4gICAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uub2tCdXR0b25UZXh0JC5uZXh0KEVudW1UcmFuc2xhdGVLZXkuVUlfQ09SRV9DT05GSVJNX0RJQUxPR19CVVRUT05fQ09ORklSTSk7XHJcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5jYW5jZWxCdXR0b25UZXh0JC5uZXh0KEVudW1UcmFuc2xhdGVLZXkuVUlfQ09SRV9DT05GSVJNX0RJQUxPR19CVVRUT05fR09fQkFDS19UT19FRElUX0ZPUk0pO1xyXG4gICAgICBjb25zdCBvYnNlcnZhYmxlID0gdGhpcy5kaWFsb2dTZXJ2aWNlLmNhbkRlYWN0aXZhdGUkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgICByZXR1cm4gb2JzZXJ2YWJsZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLm1hcCh4ID0+IHg/LnVuc3Vic2NyaWJlKCkpXHJcbiAgICB0aGlzLmNvcmVQZXJtaXNzaW9uU2VydmljZS5pbnN0YW5jZU51bWJlciA9IG51bGw7XHJcbiAgICB0aGlzLmNvcmVQZXJtaXNzaW9uU2VydmljZS5zZWxlY3RlZE9iamVjdCQubmV4dChudWxsKTtcclxuICAgIHRoaXMuY29yZVBlcm1pc3Npb25TZXJ2aWNlLnNlbGVjdGVkT2JqZWN0QWN0aW9uUGVybWlzc2lvbnMkLm5leHQoW10pO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiAjY29udGFpbmVyIGNsYXNzPVwiY29yZS1wZXJtaXNzaW9uLWNvbnRhaW5lclwiIFtuZ1N0eWxlXT1cInsgaGVpZ2h0OiBoZWlnaHQgKyAncHgnfVwiPlxyXG4gIDxjb3JlLXBhZ2UtaGVhZGVyIFt0aXRsZV09XCJ0aXRsZVwiIChidXR0b25DbGljayk9XCJvbkNvcmVQYWdlSGVhZGVyQnV0dG9uQ2xpY2soJGV2ZW50KVwiPjwvY29yZS1wYWdlLWhlYWRlcj5cclxuXHJcbiAgPGNvcmUtY29tcG9zaXRpb24gW2xlZnRdPVwidXNlclNlZWtlclwiIFtsZWZ0V2lkdGhdPVwiMjAwXCIgW21haW5dPVwidGFic1wiIFtoZWlnaHRdPVwiY29tcG9zaXRpb25IZWlnaHRcIj5cclxuICA8L2NvcmUtY29tcG9zaXRpb24+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJzdGF0ZS10cmFja2VyIGNvbnRhaW5lciBjb250YWluZXItZmx1aWRcIiAqbmdJZj1cInNob3dTdGF0ZVRyYWNrZXIgJiYgaXNSb290VXNlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInctMTAwIGQtZmxleCBkLWZsZXgtYmV0d2VlblwiPlxyXG4gICAgICA8c3Bhbj5Db21wYXJlPC9zcGFuPlxyXG4gICAgICA8aSBjbGFzcz1cImZlYXRoZXIteFwiIChjbGljayk9XCJvbkNsaWNrQ2xvc2VTdGF0ZSgpXCI+PC9pPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgIHt7IGluaXRpYWxBY3Rpb25QZXJtaXNzaW9uVmFsdWVKc29uU3RyaW5nIH19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICB7eyBjdXJyZW50QWN0aW9uUGVybWlzc2lvblZhbHVlSnNvblN0cmluZyB9fVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICB7eyBpbml0aWFsT3JnUGVybWlzc2lvblZhbHVlSnNvblN0cmluZyB9fVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAge3sgY3VycmVudE9yZ1Blcm1pc3Npb25WYWx1ZUpzb25TdHJpbmcgfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbjwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICN0YWJzPlxyXG4gIDxjb3JlLXRhYnMgW2hlYWRlcnNdPVwidGFiSGVhZGVyc1wiIFtjb250ZW50c109XCJbdGFiMSwgdGFiMl1cIiBbaGVpZ2h0XT1cImNvbXBvc2l0aW9uSGVpZ2h0XCI+PC9jb3JlLXRhYnM+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3RhYjE+XHJcbiAgPGRpdiBbbmdTdHlsZV09XCJ7IGhlaWdodDogbGF5b3V0U2VydmljZS5iYXNpY1NwYWNpbmcgKyAncHgnIH1cIj48L2Rpdj5cclxuICA8Y29yZS1wZXJtaXNzaW9uLWFjdGlvbnMgW2xvYWRpbmddPVwibG9hZGluZ1wiIFsobmdNb2RlbCldPVwiYWN0aW9uUGVybWlzc2lvblZhbHVlXCJcclxuICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQWN0aW9uUGVybWlzc2lvblZhbHVlQ2hhbmdlKCRldmVudClcIiBbZGlzYWJsZWRdPVwiISEhYWxsb3dFZGl0XCIgW2hlaWdodF09XCJjb3JlUGVybWlzc2lvbkFjdGlvbnNIZWlnaHRcIj48L2NvcmUtcGVybWlzc2lvbi1hY3Rpb25zPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICN1c2VyU2Vla2VyPlxyXG5cclxuICA8Y29yZS1saXN0LWxhenkgW3F1ZXJ5TGlzdEFwaV09XCJvYmplY3RRdWVyeUxpc3RBcGlcIiBbdGV4dEZpZWxkXT1cIm9iamVjdExpc3RUZXh0RmllbGRcIiBbKG5nTW9kZWwpXT1cIm9iamVjdElkXCJcclxuICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uT2JqZWN0SWRDaGFuZ2UoJGV2ZW50KVwiIFtoZWlnaHRdPVwiY29tcG9zaXRpb25IZWlnaHRcIiBbYmxvY2tpbmdJbnRlcmFjdGlvbiRdPVwiYmxvY2tpbmdMZWZ0TGlzdEludGVyYWN0aW9uJFwiPjwvY29yZS1saXN0LWxhenk+XHJcblxyXG5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdGFiMj5cclxuICA8ZGl2IFtuZ1N0eWxlXT1cInsgaGVpZ2h0OiBsYXlvdXRTZXJ2aWNlLmJhc2ljU3BhY2luZyArICdweCcgfVwiPjwvZGl2PlxyXG4gIDxjb3JlLW9yZy10cmVlIFtmdWxsV2lkdGhNb2RlXT1cInRydWVcIiBbYWNjZXNzb3JNb2RlXT1cInRyZWVBY2Nlc3Nvck1vZGVcIiBbKG5nTW9kZWwpXT1cIm9yZ0lkc1wiIFtkaXNhYmxlZF09XCIhISFhbGxvd0VkaXRcIlxyXG4gICAgKGl0ZW1DbGljayk9XCJvbk9yZ1RyZWVJdGVtQ2hlY2soJGV2ZW50KVwiIG5hbWU9XCJvcmdJZHNcIiBuZ0RlZmF1bHRDb250cm9sIFtoZWlnaHRdPVwidHJlZUhlaWdodFwiPjwvY29yZS1vcmctdHJlZT5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
|
@@ -101,7 +101,7 @@ export class CorePermissionActionsComponent extends CoreFormControlBaseComponent
|
|
|
101
101
|
multi: true,
|
|
102
102
|
useExisting: CorePermissionActionsComponent
|
|
103
103
|
}
|
|
104
|
-
], viewQueries: [{ propertyName: "actions", first: true, predicate: ["actions"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"core-permission-actions-container\">\r\n <core-page-list [hideHeader]=\"true\" [rowHeight]=\"'50px'\" [apiDefinition]=\"apiDefinition\" [columns]=\"columns\"\r\n [autoResizeWithWindow]=\"true\" [extraManualOffset]=\"68\" [disableHighlightOnClick]=\"true\" [columnSearchDefaultOpen]=\"true\"\r\n [height]=\"corePageListContentHeight\" [disableDoubleClick]=\"true\" [disableHighlightOnClick]=\"true\"\r\n\r\n [wrap]=\"false\"\r\n\r\n [headerWrap]=\"true\"\r\n [headerFirstRowHeight]=\"100\"\r\n\r\n [loading$]=\"loading$\"\r\n\r\n ></core-page-list>\r\n</div>\r\n\r\n<ng-template #actions let-functionId=\"context.id\" let-appActions=\"context.appActions\">\r\n <core-tags [functionId]=\"functionId\" [allOptions]=\"appActions\" [disabled]=\"disabled\" (onValueChange)=\"onTagsValueChange($event)\"></core-tags>\r\n</ng-template>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: CorePageListComponent, selector: "core-page-list", inputs: ["normalMode", "hideHeader", "hideButtonGroup", "seekerMode", "mccMode", "height", "headerWrap", "headerFirstRowHeight", "enableTimeZoneConverterForDateTimePeriodParameters", "showParamKit", "datePeriodComparisonFor", "datePeriodComparisonForLabelKey", "statusInclusionFor", "statusInclusionForLabelKey", "statusOptionsApi", "hideDatePeriodComparison", "hideStatusInclusion", "title", "hasIdOfStringType", "hideCheck", "apiDefinition", "columns", "frozen", "inlineTools", "inlineToolItems", "editRoute", "crud", "showListInlineTools", "top", "left", "hideLeft", "outerParam$", "outerSort", "outerFilterOperators", "outerInOperators", "autoResizeWithWindow", "extraManualOffset", "wrap", "rowHeight", "selfResolveCorePageHeaderButtonClick", "clearData$", "deleteValidateFn", "generateTemplateRequest", "importPreviewPath", "columnSearchDefaultOpen", "fixedPageSize", "disableDoubleClick", "noPaddingCell", "disableHighlightOnClick", "loading$"], outputs: ["corePageHeaderButtonClick", "rowClick", "rowDoubleClick", "selectedIdsChange", "selectedDataChange", "onInstanceCreated", "onInputFileBase64DataReady"] }, { kind: "component", type: CoreTagsComponent, selector: "core-tags", inputs: ["functionId", "allOptions", "disabled"], outputs: ["onValueChange"] }] }); }
|
|
104
|
+
], viewQueries: [{ propertyName: "actions", first: true, predicate: ["actions"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"core-permission-actions-container\">\r\n <core-page-list [hideHeader]=\"true\" [rowHeight]=\"'50px'\" [apiDefinition]=\"apiDefinition\" [columns]=\"columns\"\r\n [autoResizeWithWindow]=\"true\" [extraManualOffset]=\"68\" [disableHighlightOnClick]=\"true\" [columnSearchDefaultOpen]=\"true\"\r\n [height]=\"corePageListContentHeight\" [disableDoubleClick]=\"true\" [disableHighlightOnClick]=\"true\"\r\n\r\n [wrap]=\"false\"\r\n\r\n [headerWrap]=\"true\"\r\n [headerFirstRowHeight]=\"100\"\r\n\r\n [loading$]=\"loading$\"\r\n\r\n ></core-page-list>\r\n</div>\r\n\r\n<ng-template #actions let-functionId=\"context.id\" let-appActions=\"context.appActions\">\r\n <core-tags [functionId]=\"functionId\" [allOptions]=\"appActions\" [disabled]=\"disabled\" (onValueChange)=\"onTagsValueChange($event)\"></core-tags>\r\n</ng-template>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: CorePageListComponent, selector: "core-page-list", inputs: ["normalMode", "hideHeader", "hideButtonGroup", "seekerMode", "mccMode", "height", "headerWrap", "headerFirstRowHeight", "enableTimeZoneConverterForDateTimePeriodParameters", "showParamKit", "datePeriodComparisonFor", "datePeriodComparisonForLabelKey", "statusInclusionFor", "statusInclusionForLabelKey", "statusOptionsApi", "hideDatePeriodComparison", "hideStatusInclusion", "title", "hasIdOfStringType", "hideCheck", "apiDefinition", "columns", "frozen", "inlineTools", "inlineToolItems", "editRoute", "crud", "showListInlineTools", "top", "left", "hideLeft", "outerParam$", "outerSort", "outerFilterOperators", "outerInOperators", "autoResizeWithWindow", "extraManualOffset", "wrap", "rowHeight", "selfResolveCorePageHeaderButtonClick", "clearData$", "deleteValidateFn", "generateTemplateRequest", "importPreviewPath", "columnSearchDefaultOpen", "fixedPageSize", "disableDoubleClick", "noPaddingCell", "disableHighlightOnClick", "loading$", "excludedIds$"], outputs: ["corePageHeaderButtonClick", "rowClick", "rowDoubleClick", "selectedIdsChange", "selectedDataChange", "onInstanceCreated", "onInputFileBase64DataReady"] }, { kind: "component", type: CoreTagsComponent, selector: "core-tags", inputs: ["functionId", "allOptions", "disabled"], outputs: ["onValueChange"] }] }); }
|
|
105
105
|
}
|
|
106
106
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CorePermissionActionsComponent, decorators: [{
|
|
107
107
|
type: Component,
|
|
@@ -124,4 +124,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
124
124
|
type: ViewChild,
|
|
125
125
|
args: ['actions']
|
|
126
126
|
}] } });
|
|
127
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1wZXJtaXNzaW9uLWFjdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtcGVybWlzc2lvbi1hY3Rpb25zL2NvcmUtcGVybWlzc2lvbi1hY3Rpb25zL2NvcmUtcGVybWlzc2lvbi1hY3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLXBlcm1pc3Npb24tYWN0aW9ucy9jb3JlLXBlcm1pc3Npb24tYWN0aW9ucy9jb3JlLXBlcm1pc3Npb24tYWN0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxLQUFLLEVBQWlELFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxSCxPQUFPLEVBQUUscUJBQXFCLEVBQThCLE1BQU0sK0NBQStDLENBQUM7QUFDbEgsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBRTdHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBSXJELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQzs7OztBQW1DbEYsTUFBTSxPQUFPLDhCQUErQixTQUFRLDRCQUE0QjtJQStEOUUsWUFDVSxx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cUJBQ0Y7c0hBSVEsT0FBTztzQkFBZixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFNZ0IsT0FBTztzQkFBNUIsU0FBUzt1QkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIFNpbXBsZUNoYW5nZXMsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29yZVBhZ2VMaXN0Q29tcG9uZW50LCBJQ29yZVBhZ2VMaXN0QXBpRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL2NvcmUtcGFnZS1saXN0L2NvcmUtcGFnZS1saXN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IGFwaSB9IGZyb20gXCJhbHBoYS1nbG9iYWwtY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IENvcmVGb3JtQ29udHJvbEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLWZvcm0tY29udHJvbC1iYXNlL2NvcmUtZm9ybS1jb250cm9sLWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSUNvcmVUYWJsZUNvbHVtbkl0ZW0gfSBmcm9tICcuLi8uLi9jb3JlLXRhYmxlL0lDb3JlVGFibGVDb2x1bW5JdGVtJztcclxuaW1wb3J0IHsgRW51bVRyYW5zbGF0ZUtleSB9IGZyb20gXCJhbHBoYS1nbG9iYWwtY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbGF5b3V0LnNlcnZpY2UnO1xyXG5cclxuaW1wb3J0IHsgQ29yZVBlcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS1wZXJtaXNzaW9uL2NvcmUtcGVybWlzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29yZVRhZ3NDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLXRhZ3MvY29yZS10YWdzL2NvcmUtdGFncy5jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJQ29yZUZ1bmN0aW9uQWN0aW9uIHtcclxuICBmdW5jdGlvbklkOiBudW1iZXI7XHJcbiAgYWxsb3dlZEFjdGlvbklkczogbnVtYmVyW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVVzZXJQZXJtaXNzaW9uQWN0aW9uIHtcclxuICB1c2VySWQ6IHN0cmluZztcclxuICBmdW5jdGlvbkFjdGlvbnM6IElDb3JlRnVuY3Rpb25BY3Rpb25bXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJR3JvdXBQZXJtaXNzaW9uQWN0aW9uIHtcclxuICBncm91cElkOiBudW1iZXI7XHJcbiAgZnVuY3Rpb25BY3Rpb25zOiBJQ29yZUZ1bmN0aW9uQWN0aW9uW107XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY29yZS1wZXJtaXNzaW9uLWFjdGlvbnMnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgQ29yZVBhZ2VMaXN0Q29tcG9uZW50LFxyXG4gICAgQ29yZVRhZ3NDb21wb25lbnRcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3JlLXBlcm1pc3Npb24tYWN0aW9ucy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29yZS1wZXJtaXNzaW9uLWFjdGlvbnMuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgICB1c2VFeGlzdGluZzogQ29yZVBlcm1pc3Npb25BY3Rpb25zQ29tcG9uZW50XHJcbiAgICB9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29yZVBlcm1pc3Npb25BY3Rpb25zQ29tcG9uZW50IGV4dGVuZHMgQ29yZUZvcm1Db250cm9sQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgQElucHV0KCkgbG9hZGluZyE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgaGVpZ2h0ITogbnVtYmVyO1xyXG5cclxuICBsb2FkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpXHJcblxyXG4gIG92ZXJyaWRlIHZhbHVlOiBJQ29yZUZ1bmN0aW9uQWN0aW9uW10gPSBbXTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnYWN0aW9ucycpIGFjdGlvbnMhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBhcGlEZWZpbml0aW9uOiBJQ29yZVBhZ2VMaXN0QXBpRGVmaW5pdGlvbiA9IHtcclxuICAgIHF1ZXJ5TGlzdFJlbGF0aXZlUGF0aDogYXBpLlNZU19VU0VSX1BFUk1JU1NJT05fUVVFUllfTElTVCxcclxuICB9XHJcblxyXG4gIGFsbG93RWRpdCE6IGJvb2xlYW47XHJcblxyXG4gIGNvcmVQYWdlTGlzdENvbnRlbnRIZWlnaHQhOiBudW1iZXI7XHJcblxyXG4gIGNvbHVtbnM6IElDb3JlVGFibGVDb2x1bW5JdGVtW10gPSBbXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fQ09NTU9OX0lELFxyXG4gICAgICBmaWVsZDogJ2lkJyxcclxuICAgICAgaGlkZGVuOiB0cnVlLFxyXG4gICAgICB0eXBlOiAnbnVtYmVyJyxcclxuICAgICAgYWxpZ246ICdyaWdodCcsXHJcbiAgICAgIHdpZHRoOiAwLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9TWVNfTU9EVUxFX05BTUVDT0RFLFxyXG4gICAgICBmaWVsZDogJ21vZHVsZU5hbWUnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgd2lkdGg6IDE1MCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fU1lTX0ZVTkNUSU9OX05BTUVDT0RFLFxyXG4gICAgICBmaWVsZDogJ25hbWUnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgd2lkdGg6IDE1MCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fU1lTX0ZVTkNUSU9OX1BBVEgsXHJcbiAgICAgIGZpZWxkOiAncGF0aCcsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMTUwLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9TWVNfQUNUSU9OX05BTUVDT0RFLFxyXG4gICAgICBmaWVsZDogJ2FwcEFjdGlvbnMnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgaGlkZVNlYXJjaEJveDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IDEwMDAsXHJcbiAgICAgIHRlbXBsYXRlUmVmOiB0aGlzLmFjdGlvbnMsXHJcbiAgICAgIHRlbXBsYXRlUmVmQWxsb3dFZGl0T25Sb3dBY3RpdmVkOiB0cnVlXHJcbiAgICB9LFxyXG4gIF07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjb3JlUGVybWlzc2lvblNlcnZpY2U6IENvcmVQZXJtaXNzaW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgbGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoKVxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKCEhY2hhbmdlc1snbG9hZGluZyddKSB7XHJcbiAgICAgIHRoaXMubG9hZGluZyQubmV4dChjaGFuZ2VzWydsb2FkaW5nJ10uY3VycmVudFZhbHVlKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5jb3JlUGVybWlzc2lvblNlcnZpY2Uuc2VsZWN0ZWRPYmplY3RBY3Rpb25QZXJtaXNzaW9ucyQuc3Vic2NyaWJlKHggPT4gdGhpcy52YWx1ZSA9IHgpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGRpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcblxyXG4gICAgICB0aGlzLmNvbHVtbnMuZmlsdGVyKGMgPT4gYy5maWVsZCA9PT0gJ2FwcEFjdGlvbnMnKVswXS50ZW1wbGF0ZVJlZiA9IHRoaXMuYWN0aW9ucztcclxuXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMubGF5b3V0U2VydmljZS5jb250ZW50Q29udGFpbmVySGVpZ2h0JC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNvcmVQYWdlTGlzdENvbnRlbnRIZWlnaHQgPSB4IC0gdGhpcy5sYXlvdXRTZXJ2aWNlLmNvcmVQYWdlSGVhZGVySGVpZ2h0IC0gdGhpcy5sYXlvdXRTZXJ2aWNlLmNvcmVUYWJzSGVhZGVyTGluZUhlaWdodCAtIHRoaXMubGF5b3V0U2VydmljZS5iYXNpY1NwYWNpbmcgKiAyXHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICBcclxuXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgb25UYWdzVmFsdWVDaGFuZ2UoZTogSUNvcmVGdW5jdGlvbkFjdGlvbik6IHZvaWQge1xyXG4gICAgY29uc3QgbmV3VmFsdWUgPSBbLi4udGhpcy52YWx1ZV07XHJcbiAgICBjb25zdCB0cnlGaWx0ZXIgPSBuZXdWYWx1ZS5maWx0ZXIoZiA9PiBmLmZ1bmN0aW9uSWQgPT09IGUuZnVuY3Rpb25JZCk7XHJcbiAgICBpZiAoISF0cnlGaWx0ZXIubGVuZ3RoKSB7XHJcbiAgICAgIHRyeUZpbHRlclswXS5hbGxvd2VkQWN0aW9uSWRzID0gZS5hbGxvd2VkQWN0aW9uSWRzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbmV3VmFsdWUucHVzaChlKVxyXG4gICAgfVxyXG4gICAgdGhpcy53cml0ZVZhbHVlKG5ld1ZhbHVlKTtcclxuICAgIHRoaXMub25DaGFuZ2UobmV3VmFsdWUpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNvcmUtcGVybWlzc2lvbi1hY3Rpb25zLWNvbnRhaW5lclwiPlxyXG4gICAgPGNvcmUtcGFnZS1saXN0IFtoaWRlSGVhZGVyXT1cInRydWVcIiBbcm93SGVpZ2h0XT1cIic1MHB4J1wiIFthcGlEZWZpbml0aW9uXT1cImFwaURlZmluaXRpb25cIiBbY29sdW1uc109XCJjb2x1bW5zXCJcclxuICAgICAgICBbYXV0b1Jlc2l6ZVdpdGhXaW5kb3ddPVwidHJ1ZVwiIFtleHRyYU1hbnVhbE9mZnNldF09XCI2OFwiIFtkaXNhYmxlSGlnaGxpZ2h0T25DbGlja109XCJ0cnVlXCIgW2NvbHVtblNlYXJjaERlZmF1bHRPcGVuXT1cInRydWVcIlxyXG4gICAgICAgIFtoZWlnaHRdPVwiY29yZVBhZ2VMaXN0Q29udGVudEhlaWdodFwiIFtkaXNhYmxlRG91YmxlQ2xpY2tdPVwidHJ1ZVwiIFtkaXNhYmxlSGlnaGxpZ2h0T25DbGlja109XCJ0cnVlXCJcclxuXHJcbiAgICAgICAgW3dyYXBdPVwiZmFsc2VcIlxyXG5cclxuICAgICAgICBbaGVhZGVyV3JhcF09XCJ0cnVlXCJcclxuICAgICAgICBbaGVhZGVyRmlyc3RSb3dIZWlnaHRdPVwiMTAwXCJcclxuXHJcbiAgICAgICAgW2xvYWRpbmckXT1cImxvYWRpbmckXCJcclxuXHJcbiAgICAgICAgPjwvY29yZS1wYWdlLWxpc3Q+XHJcbjwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICNhY3Rpb25zIGxldC1mdW5jdGlvbklkPVwiY29udGV4dC5pZFwiIGxldC1hcHBBY3Rpb25zPVwiY29udGV4dC5hcHBBY3Rpb25zXCI+XHJcbiAgICA8Y29yZS10YWdzIFtmdW5jdGlvbklkXT1cImZ1bmN0aW9uSWRcIiBbYWxsT3B0aW9uc109XCJhcHBBY3Rpb25zXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgKG9uVmFsdWVDaGFuZ2UpPVwib25UYWdzVmFsdWVDaGFuZ2UoJGV2ZW50KVwiPjwvY29yZS10YWdzPlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1wZXJtaXNzaW9uLWFjdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtcGVybWlzc2lvbi1hY3Rpb25zL2NvcmUtcGVybWlzc2lvbi1hY3Rpb25zL2NvcmUtcGVybWlzc2lvbi1hY3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLXBlcm1pc3Npb24tYWN0aW9ucy9jb3JlLXBlcm1pc3Npb24tYWN0aW9ucy9jb3JlLXBlcm1pc3Npb24tYWN0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxLQUFLLEVBQWlELFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxSCxPQUFPLEVBQUUscUJBQXFCLEVBQThCLE1BQU0sK0NBQStDLENBQUM7QUFDbEgsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBRTdHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBSXJELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQzs7OztBQW1DbEYsTUFBTSxPQUFPLDhCQUErQixTQUFRLDRCQUE0QjtJQStEOUUsWUFDVSxx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cUJBQ0Y7c0hBSVEsT0FBTztzQkFBZixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFNZ0IsT0FBTztzQkFBNUIsU0FBUzt1QkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIFNpbXBsZUNoYW5nZXMsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29yZVBhZ2VMaXN0Q29tcG9uZW50LCBJQ29yZVBhZ2VMaXN0QXBpRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL2NvcmUtcGFnZS1saXN0L2NvcmUtcGFnZS1saXN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IGFwaSB9IGZyb20gXCJhbHBoYS1nbG9iYWwtY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IENvcmVGb3JtQ29udHJvbEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLWZvcm0tY29udHJvbC1iYXNlL2NvcmUtZm9ybS1jb250cm9sLWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSUNvcmVUYWJsZUNvbHVtbkl0ZW0gfSBmcm9tICcuLi8uLi9jb3JlLXRhYmxlL0lDb3JlVGFibGVDb2x1bW5JdGVtJztcclxuaW1wb3J0IHsgRW51bVRyYW5zbGF0ZUtleSB9IGZyb20gXCJhbHBoYS1nbG9iYWwtY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbGF5b3V0LnNlcnZpY2UnO1xyXG5cclxuaW1wb3J0IHsgQ29yZVBlcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS1wZXJtaXNzaW9uL2NvcmUtcGVybWlzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29yZVRhZ3NDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLXRhZ3MvY29yZS10YWdzL2NvcmUtdGFncy5jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJQ29yZUZ1bmN0aW9uQWN0aW9uIHtcclxuICBmdW5jdGlvbklkOiBudW1iZXI7XHJcbiAgYWxsb3dlZEFjdGlvbklkczogbnVtYmVyW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVVzZXJQZXJtaXNzaW9uQWN0aW9uIHtcclxuICB1c2VySWQ6IHN0cmluZztcclxuICBmdW5jdGlvbkFjdGlvbnM6IElDb3JlRnVuY3Rpb25BY3Rpb25bXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJR3JvdXBQZXJtaXNzaW9uQWN0aW9uIHtcclxuICBncm91cElkOiBudW1iZXI7XHJcbiAgZnVuY3Rpb25BY3Rpb25zOiBJQ29yZUZ1bmN0aW9uQWN0aW9uW107XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY29yZS1wZXJtaXNzaW9uLWFjdGlvbnMnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgQ29yZVBhZ2VMaXN0Q29tcG9uZW50LFxyXG4gICAgQ29yZVRhZ3NDb21wb25lbnRcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3JlLXBlcm1pc3Npb24tYWN0aW9ucy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29yZS1wZXJtaXNzaW9uLWFjdGlvbnMuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgICB1c2VFeGlzdGluZzogQ29yZVBlcm1pc3Npb25BY3Rpb25zQ29tcG9uZW50XHJcbiAgICB9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29yZVBlcm1pc3Npb25BY3Rpb25zQ29tcG9uZW50IGV4dGVuZHMgQ29yZUZvcm1Db250cm9sQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgQElucHV0KCkgbG9hZGluZyE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgaGVpZ2h0ITogbnVtYmVyO1xyXG5cclxuICBsb2FkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpXHJcblxyXG4gIG92ZXJyaWRlIHZhbHVlOiBJQ29yZUZ1bmN0aW9uQWN0aW9uW10gPSBbXTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnYWN0aW9ucycpIGFjdGlvbnMhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBhcGlEZWZpbml0aW9uOiBJQ29yZVBhZ2VMaXN0QXBpRGVmaW5pdGlvbiA9IHtcclxuICAgIHF1ZXJ5TGlzdFJlbGF0aXZlUGF0aDogYXBpLlNZU19VU0VSX1BFUk1JU1NJT05fUVVFUllfTElTVCxcclxuICB9XHJcblxyXG4gIGFsbG93RWRpdCE6IGJvb2xlYW47XHJcblxyXG4gIGNvcmVQYWdlTGlzdENvbnRlbnRIZWlnaHQhOiBudW1iZXI7XHJcblxyXG4gIGNvbHVtbnM6IElDb3JlVGFibGVDb2x1bW5JdGVtW10gPSBbXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fQ09NTU9OX0lELFxyXG4gICAgICBmaWVsZDogJ2lkJyxcclxuICAgICAgaGlkZGVuOiB0cnVlLFxyXG4gICAgICB0eXBlOiAnbnVtYmVyJyxcclxuICAgICAgYWxpZ246ICdyaWdodCcsXHJcbiAgICAgIHdpZHRoOiAwLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9TWVNfTU9EVUxFX05BTUVDT0RFLFxyXG4gICAgICBmaWVsZDogJ21vZHVsZU5hbWUnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgd2lkdGg6IDE1MCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fU1lTX0ZVTkNUSU9OX05BTUVDT0RFLFxyXG4gICAgICBmaWVsZDogJ25hbWUnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgd2lkdGg6IDE1MCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGNhcHRpb246IEVudW1UcmFuc2xhdGVLZXkuVUlfRU5USVRZX0ZJRUxEX0NBUFRJT05fU1lTX0ZVTkNUSU9OX1BBVEgsXHJcbiAgICAgIGZpZWxkOiAncGF0aCcsXHJcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBhbGlnbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMTUwLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY2FwdGlvbjogRW51bVRyYW5zbGF0ZUtleS5VSV9FTlRJVFlfRklFTERfQ0FQVElPTl9TWVNfQUNUSU9OX05BTUVDT0RFLFxyXG4gICAgICBmaWVsZDogJ2FwcEFjdGlvbnMnLFxyXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgYWxpZ246ICdsZWZ0JyxcclxuICAgICAgaGlkZVNlYXJjaEJveDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IDEwMDAsXHJcbiAgICAgIHRlbXBsYXRlUmVmOiB0aGlzLmFjdGlvbnMsXHJcbiAgICAgIHRlbXBsYXRlUmVmQWxsb3dFZGl0T25Sb3dBY3RpdmVkOiB0cnVlXHJcbiAgICB9LFxyXG4gIF07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjb3JlUGVybWlzc2lvblNlcnZpY2U6IENvcmVQZXJtaXNzaW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgbGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoKVxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKCEhY2hhbmdlc1snbG9hZGluZyddKSB7XHJcbiAgICAgIHRoaXMubG9hZGluZyQubmV4dChjaGFuZ2VzWydsb2FkaW5nJ10uY3VycmVudFZhbHVlKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5jb3JlUGVybWlzc2lvblNlcnZpY2Uuc2VsZWN0ZWRPYmplY3RBY3Rpb25QZXJtaXNzaW9ucyQuc3Vic2NyaWJlKHggPT4gdGhpcy52YWx1ZSA9IHgpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGRpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcblxyXG4gICAgICB0aGlzLmNvbHVtbnMuZmlsdGVyKGMgPT4gYy5maWVsZCA9PT0gJ2FwcEFjdGlvbnMnKVswXS50ZW1wbGF0ZVJlZiA9IHRoaXMuYWN0aW9ucztcclxuXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMubGF5b3V0U2VydmljZS5jb250ZW50Q29udGFpbmVySGVpZ2h0JC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNvcmVQYWdlTGlzdENvbnRlbnRIZWlnaHQgPSB4IC0gdGhpcy5sYXlvdXRTZXJ2aWNlLmNvcmVQYWdlSGVhZGVySGVpZ2h0IC0gdGhpcy5sYXlvdXRTZXJ2aWNlLmNvcmVUYWJzSGVhZGVyTGluZUhlaWdodCAtIHRoaXMubGF5b3V0U2VydmljZS5iYXNpY1NwYWNpbmcgKiAyXHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICBcclxuXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgb25UYWdzVmFsdWVDaGFuZ2UoZTogSUNvcmVGdW5jdGlvbkFjdGlvbik6IHZvaWQge1xyXG4gICAgY29uc3QgbmV3VmFsdWUgPSBbLi4udGhpcy52YWx1ZV07XHJcbiAgICBjb25zdCB0cnlGaWx0ZXIgPSBuZXdWYWx1ZS5maWx0ZXIoZiA9PiBmLmZ1bmN0aW9uSWQgPT09IGUuZnVuY3Rpb25JZCk7XHJcbiAgICBpZiAoISF0cnlGaWx0ZXIubGVuZ3RoKSB7XHJcbiAgICAgIHRyeUZpbHRlclswXS5hbGxvd2VkQWN0aW9uSWRzID0gZS5hbGxvd2VkQWN0aW9uSWRzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbmV3VmFsdWUucHVzaChlKVxyXG4gICAgfVxyXG4gICAgdGhpcy53cml0ZVZhbHVlKG5ld1ZhbHVlKTtcclxuICAgIHRoaXMub25DaGFuZ2UobmV3VmFsdWUpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNvcmUtcGVybWlzc2lvbi1hY3Rpb25zLWNvbnRhaW5lclwiPlxyXG4gICAgPGNvcmUtcGFnZS1saXN0IFtoaWRlSGVhZGVyXT1cInRydWVcIiBbcm93SGVpZ2h0XT1cIic1MHB4J1wiIFthcGlEZWZpbml0aW9uXT1cImFwaURlZmluaXRpb25cIiBbY29sdW1uc109XCJjb2x1bW5zXCJcclxuICAgICAgICBbYXV0b1Jlc2l6ZVdpdGhXaW5kb3ddPVwidHJ1ZVwiIFtleHRyYU1hbnVhbE9mZnNldF09XCI2OFwiIFtkaXNhYmxlSGlnaGxpZ2h0T25DbGlja109XCJ0cnVlXCIgW2NvbHVtblNlYXJjaERlZmF1bHRPcGVuXT1cInRydWVcIlxyXG4gICAgICAgIFtoZWlnaHRdPVwiY29yZVBhZ2VMaXN0Q29udGVudEhlaWdodFwiIFtkaXNhYmxlRG91YmxlQ2xpY2tdPVwidHJ1ZVwiIFtkaXNhYmxlSGlnaGxpZ2h0T25DbGlja109XCJ0cnVlXCJcclxuXHJcbiAgICAgICAgW3dyYXBdPVwiZmFsc2VcIlxyXG5cclxuICAgICAgICBbaGVhZGVyV3JhcF09XCJ0cnVlXCJcclxuICAgICAgICBbaGVhZGVyRmlyc3RSb3dIZWlnaHRdPVwiMTAwXCJcclxuXHJcbiAgICAgICAgW2xvYWRpbmckXT1cImxvYWRpbmckXCJcclxuXHJcbiAgICAgICAgPjwvY29yZS1wYWdlLWxpc3Q+XHJcbjwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICNhY3Rpb25zIGxldC1mdW5jdGlvbklkPVwiY29udGV4dC5pZFwiIGxldC1hcHBBY3Rpb25zPVwiY29udGV4dC5hcHBBY3Rpb25zXCI+XHJcbiAgICA8Y29yZS10YWdzIFtmdW5jdGlvbklkXT1cImZ1bmN0aW9uSWRcIiBbYWxsT3B0aW9uc109XCJhcHBBY3Rpb25zXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgKG9uVmFsdWVDaGFuZ2UpPVwib25UYWdzVmFsdWVDaGFuZ2UoJGV2ZW50KVwiPjwvY29yZS10YWdzPlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject } from 'rxjs';
|
|
2
3
|
import { EnumTranslateKey } from "alpha-global-constants";
|
|
3
4
|
import { HuconcurrentlyComponent } from '../../huconcurrently/huconcurrently.component';
|
|
4
5
|
import { CommonModule } from '@angular/common';
|
|
@@ -11,6 +12,7 @@ export class CorePositionConcurrentSeekerComponent extends HuconcurrentlyCompone
|
|
|
11
12
|
constructor() {
|
|
12
13
|
super(...arguments);
|
|
13
14
|
this.title = EnumTranslateKey.UI_COMPONENT_TITLE_POSITION_CONCURRENT_SEEKER;
|
|
15
|
+
this.excludedIds$ = new BehaviorSubject([]);
|
|
14
16
|
this.rowDoubleClick = new EventEmitter();
|
|
15
17
|
this.selectedIdsChange = new EventEmitter();
|
|
16
18
|
this.selectedDataChange = new EventEmitter();
|
|
@@ -32,7 +34,8 @@ export class CorePositionConcurrentSeekerComponent extends HuconcurrentlyCompone
|
|
|
32
34
|
this.columnsInit.emit(this.columns);
|
|
33
35
|
}
|
|
34
36
|
onRowDoubleClick(e) {
|
|
35
|
-
this.
|
|
37
|
+
if (!this.multiMode)
|
|
38
|
+
this.rowDoubleClick.emit(e);
|
|
36
39
|
}
|
|
37
40
|
onSelectedIdsChange(e) {
|
|
38
41
|
this.selectedIdsChange.emit(e);
|
|
@@ -41,7 +44,7 @@ export class CorePositionConcurrentSeekerComponent extends HuconcurrentlyCompone
|
|
|
41
44
|
this.selectedDataChange.emit(e);
|
|
42
45
|
}
|
|
43
46
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CorePositionConcurrentSeekerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
44
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: CorePositionConcurrentSeekerComponent, isStandalone: true, selector: "core-position-concurrent-seeker", inputs: { multiMode: "multiMode", preDefinedOuterParam$: "preDefinedOuterParam$" }, outputs: { rowDoubleClick: "rowDoubleClick", selectedIdsChange: "selectedIdsChange", selectedDataChange: "selectedDataChange", columnsInit: "columnsInit" }, usesInheritance: true, ngImport: i0, template: "<div class=\"core-position-concurrent-seeker-container\">\r\n <core-page-list [hideCheck]=\"true\" [height]=\"800\" [apiDefinition]=\"apiDefinition\" [columns]=\"columns\" [editRoute]=\"editRoute\" [crud]=\"crud\"\r\n [title]=\"title\" [left]=\"orgTree\" [outerParam$]=\"outerParam$\"\r\n [outerInOperators]=\"outerInOperators\"\r\n [outerFilterOperators]=\"outerFilterOperators\" [autoResizeWithWindow]=\"true\" [seekerMode]=\"true\" (rowDoubleClick)=\"onRowDoubleClick($event)\"></core-page-list>\r\n\r\n <ng-template #orgTree>\r\n <core-org-tree [(ngModel)]=\"orgIds\"\r\n (ngModelChange)=\"onOrgIdsChange($event)\" [fullWidthMode]=\"false\">\r\n </core-org-tree>\r\n </ng-template>\r\n \r\n</div>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CoreOrgTreeComponent, selector: "core-org-tree", inputs: ["lineColor", "fullWidthMode", "accessorMode", "fullRendering", "height", "disabledLoopExpand", "showCheckInheritance"], outputs: ["itemDoubleClick", "itemClick"] }, { kind: "component", type: CorePageListComponent, selector: "core-page-list", inputs: ["normalMode", "hideHeader", "hideButtonGroup", "seekerMode", "mccMode", "height", "headerWrap", "headerFirstRowHeight", "enableTimeZoneConverterForDateTimePeriodParameters", "showParamKit", "datePeriodComparisonFor", "datePeriodComparisonForLabelKey", "statusInclusionFor", "statusInclusionForLabelKey", "statusOptionsApi", "hideDatePeriodComparison", "hideStatusInclusion", "title", "hasIdOfStringType", "hideCheck", "apiDefinition", "columns", "frozen", "inlineTools", "inlineToolItems", "editRoute", "crud", "showListInlineTools", "top", "left", "hideLeft", "outerParam$", "outerSort", "outerFilterOperators", "outerInOperators", "autoResizeWithWindow", "extraManualOffset", "wrap", "rowHeight", "selfResolveCorePageHeaderButtonClick", "clearData$", "deleteValidateFn", "generateTemplateRequest", "importPreviewPath", "columnSearchDefaultOpen", "fixedPageSize", "disableDoubleClick", "noPaddingCell", "disableHighlightOnClick", "loading$"], outputs: ["corePageHeaderButtonClick", "rowClick", "rowDoubleClick", "selectedIdsChange", "selectedDataChange", "onInstanceCreated", "onInputFileBase64DataReady"] }] }); }
|
|
47
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: CorePositionConcurrentSeekerComponent, isStandalone: true, selector: "core-position-concurrent-seeker", inputs: { multiMode: "multiMode", preDefinedOuterParam$: "preDefinedOuterParam$", excludedIds$: "excludedIds$" }, outputs: { rowDoubleClick: "rowDoubleClick", selectedIdsChange: "selectedIdsChange", selectedDataChange: "selectedDataChange", columnsInit: "columnsInit" }, usesInheritance: true, ngImport: i0, template: "<div class=\"core-position-concurrent-seeker-container\">\r\n <core-page-list [hideCheck]=\"true\" [height]=\"800\" [apiDefinition]=\"apiDefinition\" [columns]=\"columns\" [editRoute]=\"editRoute\" [crud]=\"crud\"\r\n [title]=\"title\" [left]=\"orgTree\" [outerParam$]=\"outerParam$\"\r\n [outerInOperators]=\"outerInOperators\"\r\n [excludedIds$]=\"excludedIds$\"\r\n [outerFilterOperators]=\"outerFilterOperators\" [autoResizeWithWindow]=\"true\" [seekerMode]=\"true\" (rowDoubleClick)=\"onRowDoubleClick($event)\"></core-page-list>\r\n\r\n <ng-template #orgTree>\r\n <core-org-tree [(ngModel)]=\"orgIds\"\r\n (ngModelChange)=\"onOrgIdsChange($event)\" [fullWidthMode]=\"false\">\r\n </core-org-tree>\r\n </ng-template>\r\n \r\n</div>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CoreOrgTreeComponent, selector: "core-org-tree", inputs: ["lineColor", "fullWidthMode", "accessorMode", "fullRendering", "height", "disabledLoopExpand", "showCheckInheritance", "excludedIds$"], outputs: ["itemDoubleClick", "itemClick"] }, { kind: "component", type: CorePageListComponent, selector: "core-page-list", inputs: ["normalMode", "hideHeader", "hideButtonGroup", "seekerMode", "mccMode", "height", "headerWrap", "headerFirstRowHeight", "enableTimeZoneConverterForDateTimePeriodParameters", "showParamKit", "datePeriodComparisonFor", "datePeriodComparisonForLabelKey", "statusInclusionFor", "statusInclusionForLabelKey", "statusOptionsApi", "hideDatePeriodComparison", "hideStatusInclusion", "title", "hasIdOfStringType", "hideCheck", "apiDefinition", "columns", "frozen", "inlineTools", "inlineToolItems", "editRoute", "crud", "showListInlineTools", "top", "left", "hideLeft", "outerParam$", "outerSort", "outerFilterOperators", "outerInOperators", "autoResizeWithWindow", "extraManualOffset", "wrap", "rowHeight", "selfResolveCorePageHeaderButtonClick", "clearData$", "deleteValidateFn", "generateTemplateRequest", "importPreviewPath", "columnSearchDefaultOpen", "fixedPageSize", "disableDoubleClick", "noPaddingCell", "disableHighlightOnClick", "loading$", "excludedIds$"], outputs: ["corePageHeaderButtonClick", "rowClick", "rowDoubleClick", "selectedIdsChange", "selectedDataChange", "onInstanceCreated", "onInputFileBase64DataReady"] }] }); }
|
|
45
48
|
}
|
|
46
49
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CorePositionConcurrentSeekerComponent, decorators: [{
|
|
47
50
|
type: Component,
|
|
@@ -50,11 +53,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
50
53
|
FormsModule,
|
|
51
54
|
CoreOrgTreeComponent,
|
|
52
55
|
CorePageListComponent,
|
|
53
|
-
], template: "<div class=\"core-position-concurrent-seeker-container\">\r\n <core-page-list [hideCheck]=\"true\" [height]=\"800\" [apiDefinition]=\"apiDefinition\" [columns]=\"columns\" [editRoute]=\"editRoute\" [crud]=\"crud\"\r\n [title]=\"title\" [left]=\"orgTree\" [outerParam$]=\"outerParam$\"\r\n [outerInOperators]=\"outerInOperators\"\r\n [outerFilterOperators]=\"outerFilterOperators\" [autoResizeWithWindow]=\"true\" [seekerMode]=\"true\" (rowDoubleClick)=\"onRowDoubleClick($event)\"></core-page-list>\r\n\r\n <ng-template #orgTree>\r\n <core-org-tree [(ngModel)]=\"orgIds\"\r\n (ngModelChange)=\"onOrgIdsChange($event)\" [fullWidthMode]=\"false\">\r\n </core-org-tree>\r\n </ng-template>\r\n \r\n</div>\r\n" }]
|
|
56
|
+
], template: "<div class=\"core-position-concurrent-seeker-container\">\r\n <core-page-list [hideCheck]=\"true\" [height]=\"800\" [apiDefinition]=\"apiDefinition\" [columns]=\"columns\" [editRoute]=\"editRoute\" [crud]=\"crud\"\r\n [title]=\"title\" [left]=\"orgTree\" [outerParam$]=\"outerParam$\"\r\n [outerInOperators]=\"outerInOperators\"\r\n [excludedIds$]=\"excludedIds$\"\r\n [outerFilterOperators]=\"outerFilterOperators\" [autoResizeWithWindow]=\"true\" [seekerMode]=\"true\" (rowDoubleClick)=\"onRowDoubleClick($event)\"></core-page-list>\r\n\r\n <ng-template #orgTree>\r\n <core-org-tree [(ngModel)]=\"orgIds\"\r\n (ngModelChange)=\"onOrgIdsChange($event)\" [fullWidthMode]=\"false\">\r\n </core-org-tree>\r\n </ng-template>\r\n \r\n</div>\r\n" }]
|
|
54
57
|
}], propDecorators: { multiMode: [{
|
|
55
58
|
type: Input
|
|
56
59
|
}], preDefinedOuterParam$: [{
|
|
57
60
|
type: Input
|
|
61
|
+
}], excludedIds$: [{
|
|
62
|
+
type: Input
|
|
58
63
|
}], rowDoubleClick: [{
|
|
59
64
|
type: Output
|
|
60
65
|
}], selectedIdsChange: [{
|
|
@@ -64,4 +69,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
64
69
|
}], columnsInit: [{
|
|
65
70
|
type: Output
|
|
66
71
|
}] } });
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1wb3NpdGlvbi1jb25jdXJyZW50LXNlZWtlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS1wb3NpdGlvbi1jb25jdXJyZW50LXNlZWtlci9jb3JlLXBvc2l0aW9uLWNvbmN1cnJlbnQtc2Vla2VyL2NvcmUtcG9zaXRpb24tY29uY3VycmVudC1zZWVrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtcG9zaXRpb24tY29uY3VycmVudC1zZWVrZXIvY29yZS1wb3NpdGlvbi1jb25jdXJyZW50LXNlZWtlci9jb3JlLXBvc2l0aW9uLWNvbmN1cnJlbnQtc2Vla2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN4RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDOzs7QUFjdEYsTUFBTSxPQUFPLHFDQUFzQyxTQUFRLHVCQUF1QjtJQVpsRjs7UUFjVyxVQUFLLEdBQUcsZ0JBQWdCLENBQUMsNkNBQTZDLENBQUM7UUFJdkUsaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FBVyxFQUFFLENBQUMsQ0FBQztRQUVoRCxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDcEMsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN2Qyx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3hDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztLQWtDNUM7SUFoQ1UsUUFBUTtRQUNmLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUM3QyxDQUFBO1FBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDdkMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzFCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO29CQUNwQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSztvQkFDekIsR0FBRyxDQUFDO2lCQUNMLENBQUMsQ0FBQzthQUNKO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBR0QsZ0JBQWdCLENBQUMsQ0FBTTtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVM7WUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNsRCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsQ0FBTTtRQUN4QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2hDLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxDQUFRO1FBQzNCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDakMsQ0FBQzs4R0EzQ1UscUNBQXFDO2tHQUFyQyxxQ0FBcUMsaVlDckJsRCx1eUJBY0EseUREREksWUFBWSw4QkFDWixXQUFXLCtWQUNYLG9CQUFvQixzUEFDcEIscUJBQXFCOzsyRkFLWixxQ0FBcUM7a0JBWmpELFNBQVM7K0JBQ0UsaUNBQWlDLGNBQy9CLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsb0JBQW9CO3dCQUNwQixxQkFBcUI7cUJBQ3RCOzhCQVFRLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUksY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBFbnVtVHJhbnNsYXRlS2V5IH0gZnJvbSBcImFscGhhLWdsb2JhbC1jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgSHVjb25jdXJyZW50bHlDb21wb25lbnQgfSBmcm9tICcuLi8uLi9odWNvbmN1cnJlbnRseS9odWNvbmN1cnJlbnRseS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29yZU9yZ1RyZWVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLW9yZy10cmVlL2NvcmUtb3JnLXRyZWUvY29yZS1vcmctdHJlZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlUGFnZUxpc3RDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLXBhZ2UtbGlzdC9jb3JlLXBhZ2UtbGlzdC5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjb3JlLXBvc2l0aW9uLWNvbmN1cnJlbnQtc2Vla2VyJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgQ29yZU9yZ1RyZWVDb21wb25lbnQsXHJcbiAgICBDb3JlUGFnZUxpc3RDb21wb25lbnQsICAgIFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvcmUtcG9zaXRpb24tY29uY3VycmVudC1zZWVrZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvcmUtcG9zaXRpb24tY29uY3VycmVudC1zZWVrZXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29yZVBvc2l0aW9uQ29uY3VycmVudFNlZWtlckNvbXBvbmVudCBleHRlbmRzIEh1Y29uY3VycmVudGx5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgb3ZlcnJpZGUgdGl0bGUgPSBFbnVtVHJhbnNsYXRlS2V5LlVJX0NPTVBPTkVOVF9USVRMRV9QT1NJVElPTl9DT05DVVJSRU5UX1NFRUtFUjtcclxuXHJcbiAgQElucHV0KCkgbXVsdGlNb2RlITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBwcmVEZWZpbmVkT3V0ZXJQYXJhbSQhOiBCZWhhdmlvclN1YmplY3Q8YW55PjtcclxuICBASW5wdXQoKSBleGNsdWRlZElkcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcltdPihbXSk7XHJcblxyXG4gIEBPdXRwdXQoKSByb3dEb3VibGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRJZHNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkRGF0YUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgY29sdW1uc0luaXQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMubWxzLmxhbmckLnN1YnNjcmliZSh4ID0+IHRoaXMubGFuZyA9IHgpXHJcbiAgICApXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5wcmVEZWZpbmVkT3V0ZXJQYXJhbSQuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLm91dGVyUGFyYW0kLnZhbHVlID09PSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLm91dGVyUGFyYW0kLm5leHQoeCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMub3V0ZXJQYXJhbSQubmV4dCh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMub3V0ZXJQYXJhbSQudmFsdWUsXHJcbiAgICAgICAgICAgIC4uLnhcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIClcclxuICAgIHRoaXMuY29sdW1uc0luaXQuZW1pdCh0aGlzLmNvbHVtbnMpO1xyXG4gIH1cclxuXHJcblxyXG4gIG9uUm93RG91YmxlQ2xpY2soZTogYW55KSB7XHJcbiAgICBpZiAoIXRoaXMubXVsdGlNb2RlKSB0aGlzLnJvd0RvdWJsZUNsaWNrLmVtaXQoZSlcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0ZWRJZHNDaGFuZ2UoZTogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkSWRzQ2hhbmdlLmVtaXQoZSlcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0ZWREYXRhQ2hhbmdlKGU6IGFueVtdKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0YUNoYW5nZS5lbWl0KGUpXHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY29yZS1wb3NpdGlvbi1jb25jdXJyZW50LXNlZWtlci1jb250YWluZXJcIj5cclxuICAgIDxjb3JlLXBhZ2UtbGlzdCBbaGlkZUNoZWNrXT1cInRydWVcIiBbaGVpZ2h0XT1cIjgwMFwiIFthcGlEZWZpbml0aW9uXT1cImFwaURlZmluaXRpb25cIiBbY29sdW1uc109XCJjb2x1bW5zXCIgW2VkaXRSb3V0ZV09XCJlZGl0Um91dGVcIiBbY3J1ZF09XCJjcnVkXCJcclxuICAgICAgICBbdGl0bGVdPVwidGl0bGVcIiBbbGVmdF09XCJvcmdUcmVlXCIgW291dGVyUGFyYW0kXT1cIm91dGVyUGFyYW0kXCJcclxuICAgICAgICBbb3V0ZXJJbk9wZXJhdG9yc109XCJvdXRlckluT3BlcmF0b3JzXCJcclxuICAgICAgICBbZXhjbHVkZWRJZHMkXT1cImV4Y2x1ZGVkSWRzJFwiXHJcbiAgICAgICAgW291dGVyRmlsdGVyT3BlcmF0b3JzXT1cIm91dGVyRmlsdGVyT3BlcmF0b3JzXCIgW2F1dG9SZXNpemVXaXRoV2luZG93XT1cInRydWVcIiBbc2Vla2VyTW9kZV09XCJ0cnVlXCIgKHJvd0RvdWJsZUNsaWNrKT1cIm9uUm93RG91YmxlQ2xpY2soJGV2ZW50KVwiPjwvY29yZS1wYWdlLWxpc3Q+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlICNvcmdUcmVlPlxyXG4gICAgICAgIDxjb3JlLW9yZy10cmVlIFsobmdNb2RlbCldPVwib3JnSWRzXCJcclxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25PcmdJZHNDaGFuZ2UoJGV2ZW50KVwiIFtmdWxsV2lkdGhNb2RlXT1cImZhbHNlXCI+XHJcbiAgICAgICAgPC9jb3JlLW9yZy10cmVlPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIFxyXG48L2Rpdj5cclxuIl19
|