@unifylib/ui-lib 1.1.24 → 1.1.25
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/base-model/field-info.mjs +1 -1
- package/esm2022/lib/components/activity-report-form/activity-report-form.component.mjs +2 -2
- package/esm2022/lib/components/base-form/base-form.component.mjs +2 -2
- package/esm2022/lib/components/base-form-canvas/base-form-canvas.component.mjs +5 -3
- package/esm2022/lib/components/base-input-dialog/base-input-dialog.component.mjs +2 -2
- package/esm2022/lib/components/base-table/base-table.component.mjs +33 -29
- package/esm2022/lib/components/editable-base-table/editable-base-table.component.mjs +2 -2
- package/esm2022/lib/components/report-details-dialog/report-details-dialog.component.mjs +2 -2
- package/esm2022/lib/components/report-form/report-form.component.mjs +2 -2
- package/esm2022/lib/components/shared-list/shared-list.component.mjs +2 -2
- package/esm2022/lib/components/title-bar/title-bar.component.mjs +46 -8
- package/fesm2022/iq-ui-lib.mjs +87 -42
- package/fesm2022/iq-ui-lib.mjs.map +1 -1
- package/fesm2022/unifylib-ui-lib.mjs +87 -42
- package/fesm2022/unifylib-ui-lib.mjs.map +1 -1
- package/lib/base-model/field-info.d.ts +1 -1
- package/lib/components/base-table/base-table.component.d.ts +8 -3
- package/lib/components/title-bar/title-bar.component.d.ts +12 -3
- package/package.json +1 -1
|
@@ -254,7 +254,7 @@ export class BaseFormComponent extends BaseUtils {
|
|
|
254
254
|
return (!this.isPending && element.stateType == 'PENDING') && this.pageInfo.draftSupported;
|
|
255
255
|
}
|
|
256
256
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseFormComponent, deps: [{ token: i1.MatDialog }, { token: i2.ActivatedRoute }, { token: i2.Router }, { token: i3.Directionality }, { token: i4.Location }, { token: 'securityManager' }, { token: i5.BackendService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
257
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: BaseFormComponent, isStandalone: true, selector: "app-base-form", inputs: { pageInfo: "pageInfo", fields: "fields", errors: "errors", editable: "editable", itemId: "itemId", hideBackButton: "hideBackButton" }, outputs: { actionResultEmitter: "actionResultEmitter", formUpdated: "formUpdated", itemLoaded: "itemLoaded", extraAction: "extraAction", hyperTextEvent: "hyperTextEvent" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"page-container\">\r\n\r\n <div class=\"row full-width mt-2vh\">\r\n <div class=\"column full-width\">\r\n <app-title-bar\r\n [pageTitle]=\"getTitle()\"\r\n [newAction]=\"false\"\r\n [hideBackButton]=\"hideBackButton\">\r\n </app-title-bar>\r\n </div>\r\n </div>\r\n\r\n <app-base-form-canvas\r\n [pageInfo]=\"pageInfo\"\r\n [fields]=\"fields\"\r\n [editable]=\"editable\"\r\n [errors]=\"errors\"\r\n [item]=\"item\"\r\n (formUpdated)=\"updateForm($event)\">\r\n </app-base-form-canvas>\r\n\r\n <div class=\"row main-form-canvas mt-3vh\">\r\n <div class=\"column flex-49\">\r\n <div class=\"row row-center-start\">\r\n <button *ngIf=\"hasWfPositivePermission()\" color=\"primary\" mat-flat-button\r\n (click)=\"doSaveApproveAction()\"\r\n [disabled]=\"disabledSaveButton(item)\"\r\n class=\"action-button\"\r\n id=\"base-form-positive-btn\">\r\n {{ getPositiveWfActionKey(item?.stateType) | translate }}\r\n </button>\r\n <button *ngIf=\"hasWfNegativePermission()\" color=\"second\" mat-raised-button\r\n (click)=\"doCancelRejectAction()\"\r\n [disabled]=\"disabledSaveButton(item)\"\r\n class=\"action-button\"\r\n id=\"base-form-negative-btn\">\r\n {{ getNegativeWfActionKey(item?.stateType) | translate }}\r\n </button>\r\n <button *ngIf=\"pageInfo.hideExtractButton === false && itemId > 0 && editable\" color=\"primary\" mat-raised-button\r\n (click)=\"doExtraAction()\"\r\n class=\"action-button\"\r\n id=\"base-form-extra-btn\">\r\n {{ pageInfo.labelsSection + \".\" + \"EXTRA_BUTTON_NAME\" | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"column flex-49\"></div>\r\n </div>\r\n\r\n\r\n <ng-container *ngIf=\"!pageInfo.hideAuditLog\">\r\n <div class=\"row main-form-canvas mt-4vh pb-5vh\">\r\n <div class=\"column flex-95\">\r\n <app-audit-log [pageInfo]=\"pageInfo\" [fields]=\"fields\"></app-audit-log>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n</div>\r\n", styles: [".page-container{display:flex;flex-direction:column;width:100%}.row{display:flex;flex-direction:row;gap:10px;width:100%;flex-wrap:wrap}.column{display:flex;flex-direction:column}.full-width{width:100%}.flex-49{flex:0 0 49%}.flex-95{flex:0 0 95%}.row-center-start{align-items:center;justify-content:flex-start}.mt-2vh{margin-top:2vh}.mt-3vh{margin-top:3vh}.mt-4vh{margin-top:4vh}.pb-5vh{padding-bottom:5vh}.action-button{font-weight:700;min-width:140px;max-width:200px;margin:0 10px}@media (max-width: 960px){.flex-49,.flex-95{flex:1 1 100%}}@media (max-width: 600px){.row{flex-direction:column;align-items:center}.action-button{width:100%;max-width:300px;margin:5px 0}}\n"], dependencies: [{ kind: "component", type: TitleBarComponent, selector: "app-title-bar", inputs: ["pageTitle", "showExtractButton", "totalElements", "titleMode", "subTitle", "statusDesc", "newAction", "extraButton", "showDetails", "showImport", "showButton", "extraData", "titleCorporateAdmin", "hideBackButton", "buttons", "buttonsDisplayMode"], outputs: ["newActionClicked", "extraButtonClicked", "extractReport", "buttonClicked"] }, { kind: "component", type: BaseFormCanvasComponent, selector: "app-base-form-canvas", inputs: ["pageInfo", "currency", "fields", "errors", "workflowEditableFields", "isWorkflowEditableManaged", "supportingAttributes", "editable", "emitOnValueChanges", "item", "equationSuggestedFields", "currentEquationValue"], outputs: ["attachmentEmitter", "actionEmitter", "formUpdated", "hyperTextEvent", "currentEquationValueChange"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: AuditLogComponent, selector: "app-audit-log", inputs: ["pageInfo", "fields", "showHiddenFields"] }] }); }
|
|
257
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: BaseFormComponent, isStandalone: true, selector: "app-base-form", inputs: { pageInfo: "pageInfo", fields: "fields", errors: "errors", editable: "editable", itemId: "itemId", hideBackButton: "hideBackButton" }, outputs: { actionResultEmitter: "actionResultEmitter", formUpdated: "formUpdated", itemLoaded: "itemLoaded", extraAction: "extraAction", hyperTextEvent: "hyperTextEvent" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"page-container\">\r\n\r\n <div class=\"row full-width mt-2vh\">\r\n <div class=\"column full-width\">\r\n <app-title-bar\r\n [pageTitle]=\"getTitle()\"\r\n [newAction]=\"false\"\r\n [hideBackButton]=\"hideBackButton\">\r\n </app-title-bar>\r\n </div>\r\n </div>\r\n\r\n <app-base-form-canvas\r\n [pageInfo]=\"pageInfo\"\r\n [fields]=\"fields\"\r\n [editable]=\"editable\"\r\n [errors]=\"errors\"\r\n [item]=\"item\"\r\n (formUpdated)=\"updateForm($event)\">\r\n </app-base-form-canvas>\r\n\r\n <div class=\"row main-form-canvas mt-3vh\">\r\n <div class=\"column flex-49\">\r\n <div class=\"row row-center-start\">\r\n <button *ngIf=\"hasWfPositivePermission()\" color=\"primary\" mat-flat-button\r\n (click)=\"doSaveApproveAction()\"\r\n [disabled]=\"disabledSaveButton(item)\"\r\n class=\"action-button\"\r\n id=\"base-form-positive-btn\">\r\n {{ getPositiveWfActionKey(item?.stateType) | translate }}\r\n </button>\r\n <button *ngIf=\"hasWfNegativePermission()\" color=\"second\" mat-raised-button\r\n (click)=\"doCancelRejectAction()\"\r\n [disabled]=\"disabledSaveButton(item)\"\r\n class=\"action-button\"\r\n id=\"base-form-negative-btn\">\r\n {{ getNegativeWfActionKey(item?.stateType) | translate }}\r\n </button>\r\n <button *ngIf=\"pageInfo.hideExtractButton === false && itemId > 0 && editable\" color=\"primary\" mat-raised-button\r\n (click)=\"doExtraAction()\"\r\n class=\"action-button\"\r\n id=\"base-form-extra-btn\">\r\n {{ pageInfo.labelsSection + \".\" + \"EXTRA_BUTTON_NAME\" | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"column flex-49\"></div>\r\n </div>\r\n\r\n\r\n <ng-container *ngIf=\"!pageInfo.hideAuditLog\">\r\n <div class=\"row main-form-canvas mt-4vh pb-5vh\">\r\n <div class=\"column flex-95\">\r\n <app-audit-log [pageInfo]=\"pageInfo\" [fields]=\"fields\"></app-audit-log>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n</div>\r\n", styles: [".page-container{display:flex;flex-direction:column;width:100%}.row{display:flex;flex-direction:row;gap:10px;width:100%;flex-wrap:wrap}.column{display:flex;flex-direction:column}.full-width{width:100%}.flex-49{flex:0 0 49%}.flex-95{flex:0 0 95%}.row-center-start{align-items:center;justify-content:flex-start}.mt-2vh{margin-top:2vh}.mt-3vh{margin-top:3vh}.mt-4vh{margin-top:4vh}.pb-5vh{padding-bottom:5vh}.action-button{font-weight:700;min-width:140px;max-width:200px;margin:0 10px}@media (max-width: 960px){.flex-49,.flex-95{flex:1 1 100%}}@media (max-width: 600px){.row{flex-direction:column;align-items:center}.action-button{width:100%;max-width:300px;margin:5px 0}}\n"], dependencies: [{ kind: "component", type: TitleBarComponent, selector: "app-title-bar", inputs: ["pageTitle", "showExtractButton", "totalElements", "titleMode", "pageInfo", "subTitle", "statusDesc", "newAction", "extraButton", "showDetails", "showImport", "showButton", "extraData", "titleCorporateAdmin", "hideBackButton", "buttons", "buttonsDisplayMode", "draftSupported", "isPending", "onViewModeChange"], outputs: ["newActionClicked", "extraButtonClicked", "extractReport", "buttonClicked", "viewModeChanged"] }, { kind: "component", type: BaseFormCanvasComponent, selector: "app-base-form-canvas", inputs: ["pageInfo", "currency", "fields", "errors", "workflowEditableFields", "isWorkflowEditableManaged", "supportingAttributes", "editable", "emitOnValueChanges", "item", "equationSuggestedFields", "currentEquationValue"], outputs: ["attachmentEmitter", "actionEmitter", "formUpdated", "hyperTextEvent", "currentEquationValueChange"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: AuditLogComponent, selector: "app-audit-log", inputs: ["pageInfo", "fields", "showHiddenFields"] }] }); }
|
|
258
258
|
}
|
|
259
259
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseFormComponent, decorators: [{
|
|
260
260
|
type: Component,
|
|
@@ -294,4 +294,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
294
294
|
}], hideBackButton: [{
|
|
295
295
|
type: Input
|
|
296
296
|
}] } });
|
|
297
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludm9pY2VxL3VpLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvYmFzZS1mb3JtL2Jhc2UtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UtZm9ybS9iYXNlLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUMvRyxPQUFPLEVBQVksTUFBTSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQVksaUJBQWlCLEVBQUUsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFbEgsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBR3BELE9BQU8sRUFBVyxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUMsU0FBUyxFQUFFLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3BFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUN2RixPQUFPLGFBQWEsTUFBTSxtQ0FBbUMsQ0FBQztBQUM5RCxPQUFPLEVBQUMsZUFBZSxFQUFFLElBQUksRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBRWxGLE9BQU8sRUFBQyxTQUFTLEVBQUUsc0JBQXNC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VztzQkFEVixNQUFNO2dCQU9QLGNBQWM7c0JBRGIsTUFBTTtnQkFRUCxjQUFjO3NCQURiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtGaWVsZEluZm8sIEZpbHRlciwgRmlsdGVyUmVxdWVzdCwgTkVXLCBQYWdlSW5mbywgU0FWRV9BTkRfQ09NUExFVEUsIFNuYWNrTWVzc2FnZX0gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWxcIjtcclxuaW1wb3J0IHtGaWVsZE1lc3NhZ2V9IGZyb20gXCIuLi8uLi9iYXNlLW1vZGVsL2FwaS1yZXNwb25zZVwiO1xyXG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZX0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcclxuaW1wb3J0IHtCYWNrZW5kU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzXCI7XHJcbmltcG9ydCB7Rm9ybUdyb3VwfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtMb2NhdGlvbiwgTmdJZn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge01hdEJ1dHRvbiwgTWF0QnV0dG9uTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uXCI7XHJcbmltcG9ydCB7TWF0SWNvbk1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcclxuaW1wb3J0IHtUaXRsZUJhckNvbXBvbmVudH0gZnJvbSBcIi4uL3RpdGxlLWJhci90aXRsZS1iYXIuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7QmFzZUZvcm1DYW52YXNDb21wb25lbnR9IGZyb20gXCIuLi9iYXNlLWZvcm0tY2FudmFzL2Jhc2UtZm9ybS1jYW52YXMuY29tcG9uZW50XCI7XHJcbmltcG9ydCBDbGFzc2ljRWRpdG9yIGZyb20gXCJAY2tlZGl0b3IvY2tlZGl0b3I1LWJ1aWxkLWNsYXNzaWNcIjtcclxuaW1wb3J0IHtEb0FjdGlvblJlcXVlc3QsIFNBVkV9IGZyb20gXCIuLi8uLi9iYXNlLW1vZGVsL2RvLWFjdGlvbi1yZXF1ZXN0XCI7XHJcbmltcG9ydCB7QWN0aW9uQ29tbWVudENvbXBvbmVudH0gZnJvbSBcIi4uL2FjdGlvbi1jb21tZW50L2FjdGlvbi1jb21tZW50LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge01hdERpYWxvZ30gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQge0Jhc2VVdGlscywgZ2V0TmVnYXRpdmVXZkFjdGlvbktleSwgZ2V0UG9zaXRpdmVXZkFjdGlvbktleSwgZ2V0V2ZBY3Rpb25JZH0gZnJvbSBcIi4uLy4uL3V0aWxzL2Jhc2UtdXRpbHNcIjtcclxuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7QXVkaXRMb2dDb21wb25lbnR9IGZyb20gXCIuLi9hdWRpdC1sb2ctbGlzdC9hdWRpdC1sb2cuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7RGlyZWN0aW9uYWxpdHl9IGZyb20gXCJAYW5ndWxhci9jZGsvYmlkaVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2FwcC1iYXNlLWZvcm0nLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBUaXRsZUJhckNvbXBvbmVudCxcclxuICAgIEJhc2VGb3JtQ2FudmFzQ29tcG9uZW50LFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxyXG4gICAgTmdJZixcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBNYXRCdXR0b24sXHJcbiAgICBBdWRpdExvZ0NvbXBvbmVudFxyXG4gIF0sXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vYmFzZS1mb3JtLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsOiAnLi9iYXNlLWZvcm0uY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCYXNlRm9ybUNvbXBvbmVudCBleHRlbmRzIEJhc2VVdGlscyBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuXHJcbiAgQElucHV0KClcclxuICBvdmVycmlkZSBwYWdlSW5mbyE6IFBhZ2VJbmZvO1xyXG5cclxuICBASW5wdXQoKS8vIEB0cy1pZ25vcmVcclxuICBmaWVsZHM6IEZpZWxkSW5mb1tdID0gW107XHJcblxyXG4gIEBJbnB1dCgpLy8gQHRzLWlnbm9yZVxyXG4gIGVycm9yczogRmllbGRNZXNzYWdlW10gPSBbXTtcclxuXHJcbiAgQElucHV0KClcclxuICBlZGl0YWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGl0ZW1JZDogbnVtYmVyO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBhY3Rpb25SZXN1bHRFbWl0dGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBmb3JtVXBkYXRlZDogRXZlbnRFbWl0dGVyPEZvcm1Hcm91cD4gPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm1Hcm91cD4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgaXRlbUxvYWRlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgZXh0cmFBY3Rpb246IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIGl0ZW0gOiBhbnkgPSB7fTtcclxuICBpc0xvYWRlZCA6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgaHlwZXJUZXh0RXZlbnQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgY3VycmVudERpcmVjdGlvbjogJ2x0cicgfCAncnRsJztcclxuICBpc1NhdmVEaXNhYmxlZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgaXNSZWplY3REaXNhYmxlZDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgaGlkZUJhY2tCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBTQVZFID0gU0FWRTtcclxuICBwcml2YXRlIGlzUGVuZGluZzogYm9vbGVhbjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgcm91dGVyOlJvdXRlcixcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgZGlyZWN0aW9uYWxpdHk6IERpcmVjdGlvbmFsaXR5LFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBsb2NhdGlvbjpMb2NhdGlvbixcclxuICAgICAgICAgICAgICAgIEBJbmplY3QoJ3NlY3VyaXR5TWFuYWdlcicpIHByaXZhdGUgc2VjdXJpdHlNYW5hZ2VyOiBhbnksXHJcbiAgICAgICAgICAgICAgICBwdWJsaWMgYmFja2VuZFNlcnZpY2U6IEJhY2tlbmRTZXJ2aWNlKSB7XHJcbiAgICAgIHN1cGVyKCk7XHJcbiAgICAgICBDbGFzc2ljRWRpdG9yLmRlZmF1bHRDb25maWcgPSB7XHJcbiAgICAgICAgICAgIHRvb2xiYXI6IHtcclxuICAgICAgICAgICAgICAgIGl0ZW1zOiBbJ2hlYWRpbmcnLCAnfCcsICdib2xkJywgJ2l0YWxpYycsICd8JywgJ2J1bGxldGVkTGlzdCcsICdudW1iZXJlZExpc3QnXVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBpbWFnZToge1xyXG4gICAgICAgICAgICAgICAgdG9vbGJhcjogWydpbWFnZVN0eWxlOnNpZGUnLCAnfCcsICdpbWFnZVRleHRBbHRlcm5hdGl2ZSddXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHRhYmxlOiB7XHJcbiAgICAgICAgICAgICAgICBjb250ZW50VG9vbGJhcjogWyAndGFibGVDb2x1bW4nLCAndGFibGVSb3cnLCAnbWVyZ2VUYWJsZUNlbGxzJyBdXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGxhbmd1YWdlOiAnZW4nXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgdGhpcy5jdXJyZW50RGlyZWN0aW9uID0gdGhpcy5kaXJlY3Rpb25hbGl0eS52YWx1ZTtcclxuICAgICAgdGhpcy5kaXJlY3Rpb25hbGl0eS5jaGFuZ2Uuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuY3VycmVudERpcmVjdGlvbiA9IHZhbHVlO1xyXG4gICAgICB9KVxyXG5cclxuICAgICAgLy8gY29uc29sZS5sb2coJ2VkaXRhYmxlJywgdGhpcy5lZGl0YWJsZSlcclxuICAgICAgdGhpcy5zZWN1cml0eU1hbmFnZXIubG9hZFBlcm1pc3Npb25zKCkuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiYmVmb3JlIGVkaXRcIiwgdGhpcy5lZGl0YWJsZSk7XHJcbiAgICAgICAgdGhpcy5sb2FkSXRlbSgpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiYWZ0ZXIgZWRpdFwiLCB0aGlzLmVkaXRhYmxlKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkNoYW5nZXMoe2l0ZW0sIGVycm9ycywgZmllbGRzfTogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgfVxyXG5cclxuICAgIGlzVmFsaWQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFja2VuZFNlcnZpY2UucGFyZW50Rm9ybT8udmFsaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgaXNNYXRjaEhlaWdodCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wYWdlSW5mby5wYWdlSGVpZ2h0ID09PSAnbWF0Y2gnO1xyXG4gICAgfVxyXG5cclxuICBwcml2YXRlIGxvYWRJdGVtKCkge1xyXG4gICAgdGhpcy5lZGl0YWJsZSA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0IG1vZGVFbmNyeXB0ZWQgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zWydtb2RlJ107XHJcbiAgICB0aGlzLmlzUGVuZGluZyA9ICEhbW9kZUVuY3J5cHRlZCAmJiB0aGlzLmJhY2tlbmRTZXJ2aWNlLmRlY3J5cHQobW9kZUVuY3J5cHRlZCkgPT09ICdwZW5kaW5nJztcclxuXHJcbiAgICBpZiAodGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1sndG9rZW4nXSAmJiB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zWydtb2RlJ10pIHtcclxuICAgICAgdGhpcy5pdGVtSWQgPSB0aGlzLmJhY2tlbmRTZXJ2aWNlLmRlY3J5cHQodGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1sndG9rZW4nXSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBjb25zb2xlLmxvZygnICoqKioqKiAqKioqKiogKioqKioqICoqKioqKiBlcnJvciBpbiB1cmwgJylcclxuICAgIH1cclxuICAgIGlmICh0aGlzLml0ZW1JZCA+IDApIHtcclxuICAgICAgY29uc3QgZmlsdGVyUmVxdWVzdCA9IG5ldyBGaWx0ZXJSZXF1ZXN0O1xyXG4gICAgICBmaWx0ZXJSZXF1ZXN0LmNvbHVtbnMgPSB0aGlzLmZpZWxkcy5maWx0ZXIoYyA9PiBjLnR5cGUgIT09ICdzcGFjZXInKS5tYXAoYyA9PiBjLnByb3BlcnR5KTtcclxuICAgICAgZmlsdGVyUmVxdWVzdC5wZW5kaW5nUGFnZSA9IHRoaXMuaXNQZW5kaW5nO1xyXG5cclxuICAgICAgZmlsdGVyUmVxdWVzdC5maWx0ZXJzID0gW107XHJcbiAgICAgIGZpbHRlclJlcXVlc3QuZmlsdGVycy5wdXNoKG5ldyBGaWx0ZXIoe1xyXG4gICAgICAgIGtleTogMCxcclxuICAgICAgICBmaWVsZFR5cGU6ICdMb25nJyxcclxuICAgICAgICBmaWVsZE5hbWU6ICdpZCcsXHJcbiAgICAgICAgdmFsdWVPYmplY3Q6IHRoaXMuaXRlbUlkLFxyXG4gICAgICAgIGZpbHRlclR5cGU6ICdGSUxFRF9GSUxURVInLFxyXG4gICAgICAgIG9wZXJhdG9yOiAnRVFVQUxTJ1xyXG4gICAgICB9KSk7XHJcbiAgICAgIC8vL2F1ZGl0LWxvZ1xyXG4gICAgICB0aGlzLmJhY2tlbmRTZXJ2aWNlLmdldEl0ZW1BdWRpdExvZyhmaWx0ZXJSZXF1ZXN0LCB0aGlzLnBhZ2VJbmZvIS5hcGlVcmkpLnN1YnNjcmliZShyZXNwID0+IHtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZygncmVzcCcsIHJlc3ApO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5iYWNrZW5kU2VydmljZS5nZXRJdGVtc0J5RmlsdGVyKGZpbHRlclJlcXVlc3QsIHRoaXMucGFnZUluZm8hLmFwaVVyaSkuc3Vic2NyaWJlKHJlc3AgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwPy52YWxpZCAmJiByZXNwLmJvZHk/Lmxlbmd0aCA+PSAwKSB7XHJcbiAgICAgICAgICB0aGlzLml0ZW0gPSByZXNwLmJvZHlbMF07XHJcbiAgICAgICAgICB0aGlzLmVkaXRhYmxlID0gKCF0aGlzLnBhZ2VJbmZvLmRyYWZ0U3VwcG9ydGVkIHx8ICF0aGlzLmlzUGVuZGluZykgJiYgdGhpcy5zZWN1cml0eU1hbmFnZXIuaGFzUGFnZVBlcm1pc3Npb24odGhpcy5wYWdlSW5mby5pZCwgJ0VESVQnKVxyXG4gICAgICAgICAgICAmJiAoIXRoaXMucGFnZUluZm8uZHJhZnRTdXBwb3J0ZWQgfHx0aGlzLml0ZW1bJ3N0YXRlVHlwZSddID09PSAnQ09NUExFVEVEJyApO1xyXG4gICAgICAgICAgdGhpcy5pdGVtTG9hZGVkLmVtaXQodGhpcy5pdGVtKTtcclxuICAgICAgICAgIHRoaXMuaXNMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmVkaXRhYmxlID0gdGhpcy5zZWN1cml0eU1hbmFnZXIuaGFzUGFnZVBlcm1pc3Npb24odGhpcy5wYWdlSW5mby5pZCwgJ0VESVQnKTtcclxuICAgICAgdGhpcy5pdGVtID0ge307XHJcbiAgICAgIHRoaXMuaXRlbUxvYWRlZC5lbWl0KHRoaXMuaXRlbSk7XHJcbiAgICAgIHRoaXMuaXNMb2FkZWQgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGJ1aWxkRG9BY3Rpb25TdWJqZWN0KCk6IGFueSB7XHJcbiAgICBjb25zdCBuZXdWYXIgPSB0aGlzLmVkaXRhYmxlID8gT2JqZWN0LmFzc2lnbih0aGlzLml0ZW0sIHRoaXMuYmFja2VuZFNlcnZpY2UucGFyZW50Rm9ybS52YWx1ZSkgOiB0aGlzLml0ZW07XHJcbiAgICBpZiAodGhpcy5pdGVtSWQgPD0gMCAmJiB0aGlzLmVkaXRhYmxlICkge1xyXG4gICAgICAvL1RPRE8gdGhpcyBpcyBsaWtlIGEgaGFjayBhbmQgbXVzdCBiZSBoYW5kbGVkIGZyb20gYmFja2VuZFxyXG4gICAgICBuZXdWYXJbJ3N0YXRlVHlwZSddID0gJ05FVyc7XHJcbiAgICB9XHJcbiAgICB0aGlzLmZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcclxuICAgICAgaWYgKGZpZWxkLmZsYXR0ZW5CeVN1YkF0dHJpYnV0ZSl7XHJcbiAgICAgICAgbmV3VmFyW2ZpZWxkLnByb3BlcnR5XSA9IG5ld1ZhcltmaWVsZC5wcm9wZXJ0eV1bZmllbGQuZmxhdHRlbkJ5U3ViQXR0cmlidXRlXVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgaWYgKCF0aGlzLnBhZ2VJbmZvLmRyYWZ0U3VwcG9ydGVkKXtcclxuICAgICAgbmV3VmFyWydzdGF0dXMnXSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3VmFyO1xyXG4gIH1cclxuXHJcblxyXG4gIGRvU2F2ZUFwcHJvdmVBY3Rpb24oKSB7XHJcbiAgICBsZXQgYWN0aW9uSWQgPSBnZXRXZkFjdGlvbklkKHRoaXMuaXRlbS5zdGF0ZVR5cGUpO1xyXG4gICAgaWYgKHRoaXMuaXRlbUlkIDw9IDAgJiYgdGhpcy5lZGl0YWJsZSApIHtcclxuICAgICAgYWN0aW9uSWQgPSBORVdcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5wYWdlSW5mby5kcmFmdFN1cHBvcnRlZCkge1xyXG4gICAgICBhY3Rpb25JZCA9IFNBVkVfQU5EX0NPTVBMRVRFXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5lZGl0YWJsZSAmJiB0aGlzLmJhY2tlbmRTZXJ2aWNlLnBhcmVudEZvcm0udmFsaWQgIT09IHRydWUpIHtcclxuICAgICAgdGhpcy5iYWNrZW5kU2VydmljZS50b3BQYW5lbE1lc3NhZ2UkLm5leHQobmV3IFNuYWNrTWVzc2FnZSgnSU5WQUxJRF9JTlBVVF9GT1JNJywgdHJ1ZSwgJ2Vycm9yJykpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCByZXF1ZXN0ID0gbmV3IERvQWN0aW9uUmVxdWVzdCgpO1xyXG4gICAgcmVxdWVzdC5hY3Rpb25JZCA9IGFjdGlvbklkO1xyXG4gICAgcmVxdWVzdC5zdWJqZWN0ID0gdGhpcy5idWlsZERvQWN0aW9uU3ViamVjdCgpO1xyXG5cclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQWN0aW9uQ29tbWVudENvbXBvbmVudCwge1xyXG4gICAgICBkYXRhOiB7bGFiZWw6ICdzYXZlJywgaXNUZXJtaW5hdGlvbjogZmFsc2V9LFxyXG4gICAgICB3aWR0aDogJzYwMHB4JyxcclxuICAgICAgaGVpZ2h0OiAnYXV0bycsXHJcbiAgICAgIGRpcmVjdGlvbjogIHRoaXMuY3VycmVudERpcmVjdGlvblxyXG4gICAgfSk7XHJcbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgIHJlcXVlc3QuY29tbWVudCA9IHJlc3VsdC5jb21tZW50O1xyXG4gICAgICAgIHRoaXMuYmFja2VuZFNlcnZpY2UuZG9BY3Rpb25XaXRoQXR0YWNobWVudHMocmVxdWVzdCwgW10sIHRoaXMucGFnZUluZm8hKS5zdWJzY3JpYmUocmVzcCA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnc3RlcCcsYWN0aW9uSWQpO1xyXG4gICAgICAgICAgdGhpcy5hY3Rpb25SZXN1bHRFbWl0dGVyLmVtaXQoeyB2YWxpZDogcmVzcC52YWxpZCwgYWN0aW9uSWQ6IGFjdGlvbklkIH0pO1xyXG4gICAgICAgICAgaWYgKHJlc3AudmFsaWQgKSB7XHJcbiAgICAgICAgICAgIGxldCBtZXNzYWdlID0gJ2FwcHJvdmVfc3VjY2Vzc2Z1bGx5JztcclxuICAgICAgICAgICAgc3dpdGNoIChhY3Rpb25JZCkge1xyXG4gICAgICAgICAgICAgIGNhc2UgMTpcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAnc2F2ZWRfc3VjY2Vzc2Z1bGx5JztcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIGNhc2UgMjpcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAndXBkYXRlZF9zdWNjZXNzZnVsbHknO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAnYXBwcm92ZV9zdWNjZXNzZnVsbHknO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuYmFja2VuZFNlcnZpY2UudG9wUGFuZWxNZXNzYWdlJC5uZXh0KG5ldyBTbmFja01lc3NhZ2UobWVzc2FnZSwgdHJ1ZSwgJ3N1Y2Nlc3MnKSk7XHJcbiAgICAgICAgICAgICBpZighdGhpcy5wYWdlSW5mby5zdGF5T25QYWdlKXtcclxuICAgICAgICAgICAgICAgdGhpcy5iYWNrVG9QYXJlbnQoKTtcclxuICAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHJlcXVlc3Quc3ViamVjdFsnc3RhdGVUeXBlJ10gPSBudWxsO1xyXG4gICAgICAgICAgICBpZiAocmVzcC5tZXNzYWdlWzBdLmVycm9yTWVzc2FnZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdkdXBsaWMnKSlcclxuICAgICAgICAgICAgdGhpcy5iYWNrZW5kU2VydmljZS50b3BQYW5lbE1lc3NhZ2UkLm5leHQobmV3IFNuYWNrTWVzc2FnZSh0aGlzLnBhZ2VJbmZvLmxhYmVsc1NlY3Rpb24gKyAnLicgKyByZXNwLm1lc3NhZ2VbMF0uZXJyb3JDb2RlLCB0cnVlLCAnZXJyb3InKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYmFja1RvUGFyZW50KCkge1xyXG4gICAgICBjb25zdCBpZElkeCA9IHRoaXMucm91dGVyLnVybC5sYXN0SW5kZXhPZignLycpO1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMucm91dGVyLnVybC5zdWJzdHJpbmcoMCwgaWRJZHgpKTtcclxuICB9XHJcblxyXG5cclxuICBnZXRUaXRsZSgpIHtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5wYWdlSW5mby5sYWJlbHNTZWN0aW9ufS4ke3RoaXMucGFnZUluZm8uaWR9YCA7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlRm9ybSgkZXZlbnQ6IEZvcm1Hcm91cCkge1xyXG4gICAgICAgIHRoaXMuYmFja2VuZFNlcnZpY2UucGFyZW50Rm9ybSA9ICRldmVudDtcclxuICAgICAgICB0aGlzLmZvcm1VcGRhdGVkLmVtaXQoJGV2ZW50KTtcclxuICAgIH1cclxuXHJcbiAgZG9DYW5jZWxSZWplY3RBY3Rpb24oKSB7XHJcbiAgICBpZiAoIXRoaXMuZWRpdGFibGUpe1xyXG4gICAgICBsZXQgYWN0aW9uSWQgPSAzO1xyXG4gICAgICAvLyBjb25zb2xlLmxvZygnYWN0aW9uSWQnLGFjdGlvbklkKTtcclxuICAgICAgY29uc3QgcmVxdWVzdCA9IG5ldyBEb0FjdGlvblJlcXVlc3QoKTtcclxuICAgICAgcmVxdWVzdC5hY3Rpb25JZCA9IGFjdGlvbklkO1xyXG4gICAgICByZXF1ZXN0LnN1YmplY3QgPSB0aGlzLmJ1aWxkRG9BY3Rpb25TdWJqZWN0KCk7XHJcblxyXG4gICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEFjdGlvbkNvbW1lbnRDb21wb25lbnQsIHtcclxuICAgICAgICBkYXRhOiB7bGFiZWw6ICdyZWplY3QnLCBhY2NlcHRBY3Rpb25MYWJlbDogJ2FjY2VwdCcsIHJlamVjdEFjdGlvbkxhYmVsOiAncmV0dXJuJ30sXHJcbiAgICAgICAgd2lkdGg6ICc2MDBweCcsXHJcbiAgICAgICAgaGVpZ2h0OiAnYXV0bycsXHJcbiAgICAgICAgZGlyZWN0aW9uOiB0aGlzLmN1cnJlbnREaXJlY3Rpb25cclxuICAgICAgfSk7XHJcbiAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgIHJlcXVlc3QuY29tbWVudCA9IHJlc3VsdC5jb21tZW50O1xyXG4gICAgICAgICAgdGhpcy5iYWNrZW5kU2VydmljZS5kb0FjdGlvbldpdGhBdHRhY2htZW50cyhyZXF1ZXN0LCBbXSwgdGhpcy5wYWdlSW5mbyEpLnN1YnNjcmliZShyZXNwID0+IHtcclxuICAgICAgICAgICAgdGhpcy5hY3Rpb25SZXN1bHRFbWl0dGVyLmVtaXQoeyB2YWxpZDogcmVzcC52YWxpZCwgYWN0aW9uSWQ6IGFjdGlvbklkIH0pO1xyXG4gICAgICAgICAgICBpZiAocmVzcC52YWxpZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuYmFja2VuZFNlcnZpY2UudG9wUGFuZWxNZXNzYWdlJC5uZXh0KG5ldyBTbmFja01lc3NhZ2UoJ3N1Y2Nlc3NmdWxfcmVqZWN0X21lc3NhZ2UnLCB0cnVlLCAnc3VjY2VzcycpKTtcclxuICAgICAgICAgICAgICBpZighdGhpcy5wYWdlSW5mby5zdGF5T25QYWdlKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuYmFja1RvUGFyZW50KCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMubG9jYXRpb24uYmFjaygpXHJcbiAgICB9XHJcbiAgICB9XHJcblxyXG4gIGhhc1dmUGVybWlzc2lvbigpIHtcclxuICAgIHJldHVybiAgKHRoaXMuc2VjdXJpdHlNYW5hZ2VyLmhhc1BhZ2VQZXJtaXNzaW9uKHRoaXMucGFnZUluZm8uaWQsICdFRElUJylcclxuICAgIHx8IHRoaXMuc2VjdXJpdHlNYW5hZ2VyLmhhc1BhZ2VQZXJtaXNzaW9uKHRoaXMucGFnZUluZm8uaWQsICdDT01QTEVURScpXHJcbiAgICB8fCB0aGlzLnNlY3VyaXR5TWFuYWdlci5oYXNQYWdlUGVybWlzc2lvbih0aGlzLnBhZ2VJbmZvLmlkLCAnVEVSTUlOQVRFJykpXHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZ2V0UG9zaXRpdmVXZkFjdGlvbktleSA9IGdldFBvc2l0aXZlV2ZBY3Rpb25LZXk7XHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGdldE5lZ2F0aXZlV2ZBY3Rpb25LZXkgPSBnZXROZWdhdGl2ZVdmQWN0aW9uS2V5O1xyXG5cclxuICBoYXNXZlBvc2l0aXZlUGVybWlzc2lvbigpIHtcclxuICAgIHJldHVybiAoIXRoaXMuZWRpdGFibGUgJiYgdGhpcy5zZWN1cml0eU1hbmFnZXIuaGFzUGFnZVBlcm1pc3Npb24odGhpcy5wYWdlSW5mby5pZCwgJ0NPTVBMRVRFJykpIHx8XHJcbiAgICAgICh0aGlzLmVkaXRhYmxlICYmIHRoaXMuc2VjdXJpdHlNYW5hZ2VyLmhhc1BhZ2VQZXJtaXNzaW9uKHRoaXMucGFnZUluZm8uaWQsICdFRElUJykpXHJcbiAgfVxyXG5cclxuICBoYXNXZk5lZ2F0aXZlUGVybWlzc2lvbigpIHtcclxuICAgIHJldHVybiAoIXRoaXMuZWRpdGFibGUgJiYgdGhpcy5zZWN1cml0eU1hbmFnZXIuaGFzUGFnZVBlcm1pc3Npb24odGhpcy5wYWdlSW5mby5pZCwgJ1RFUk1JTkFURScpKSB8fFxyXG4gICAgICAodGhpcy5lZGl0YWJsZSAmJiB0aGlzLnNlY3VyaXR5TWFuYWdlci5oYXNQYWdlUGVybWlzc2lvbih0aGlzLnBhZ2VJbmZvLmlkLCAnRURJVCcpKVxyXG4gIH1cclxuXHJcbiAgZG9FeHRyYUFjdGlvbigpIHtcclxuICAgIHRoaXMuZXh0cmFBY3Rpb24uZW1pdCgpXHJcbiAgfVxyXG4gIGRpc2FibGVkU2F2ZUJ1dHRvbihlbGVtZW50KSB7XHJcbiAgICByZXR1cm4gKCF0aGlzLmlzUGVuZGluZyAmJiBlbGVtZW50LnN0YXRlVHlwZSA9PSAnUEVORElORycpICYmIHRoaXMucGFnZUluZm8uZHJhZnRTdXBwb3J0ZWQgO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInBhZ2UtY29udGFpbmVyXCI+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJyb3cgZnVsbC13aWR0aCBtdC0ydmhcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gZnVsbC13aWR0aFwiPlxyXG4gICAgICA8YXBwLXRpdGxlLWJhclxyXG4gICAgICAgIFtwYWdlVGl0bGVdPVwiZ2V0VGl0bGUoKVwiXHJcbiAgICAgICAgW25ld0FjdGlvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgW2hpZGVCYWNrQnV0dG9uXT1cImhpZGVCYWNrQnV0dG9uXCI+XHJcbiAgICAgIDwvYXBwLXRpdGxlLWJhcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8YXBwLWJhc2UtZm9ybS1jYW52YXNcclxuICAgIFtwYWdlSW5mb109XCJwYWdlSW5mb1wiXHJcbiAgICBbZmllbGRzXT1cImZpZWxkc1wiXHJcbiAgICBbZWRpdGFibGVdPVwiZWRpdGFibGVcIlxyXG4gICAgW2Vycm9yc109XCJlcnJvcnNcIlxyXG4gICAgW2l0ZW1dPVwiaXRlbVwiXHJcbiAgICAoZm9ybVVwZGF0ZWQpPVwidXBkYXRlRm9ybSgkZXZlbnQpXCI+XHJcbiAgPC9hcHAtYmFzZS1mb3JtLWNhbnZhcz5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInJvdyBtYWluLWZvcm0tY2FudmFzIG10LTN2aFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbHVtbiBmbGV4LTQ5XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcm93LWNlbnRlci1zdGFydFwiPlxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJoYXNXZlBvc2l0aXZlUGVybWlzc2lvbigpXCIgY29sb3I9XCJwcmltYXJ5XCIgbWF0LWZsYXQtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZG9TYXZlQXBwcm92ZUFjdGlvbigpXCJcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFNhdmVCdXR0b24oaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb24tYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIGlkPVwiYmFzZS1mb3JtLXBvc2l0aXZlLWJ0blwiPlxyXG4gICAgICAgICAge3sgZ2V0UG9zaXRpdmVXZkFjdGlvbktleShpdGVtPy5zdGF0ZVR5cGUpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImhhc1dmTmVnYXRpdmVQZXJtaXNzaW9uKClcIiBjb2xvcj1cInNlY29uZFwiIG1hdC1yYWlzZWQtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZG9DYW5jZWxSZWplY3RBY3Rpb24oKVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRTYXZlQnV0dG9uKGl0ZW0pXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uLWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICBpZD1cImJhc2UtZm9ybS1uZWdhdGl2ZS1idG5cIj5cclxuICAgICAgICAgIHt7IGdldE5lZ2F0aXZlV2ZBY3Rpb25LZXkoaXRlbT8uc3RhdGVUeXBlKSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJwYWdlSW5mby5oaWRlRXh0cmFjdEJ1dHRvbiA9PT0gZmFsc2UgJiYgaXRlbUlkID4gMCAmJiBlZGl0YWJsZVwiIGNvbG9yPVwicHJpbWFyeVwiIG1hdC1yYWlzZWQtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZG9FeHRyYUFjdGlvbigpXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uLWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICBpZD1cImJhc2UtZm9ybS1leHRyYS1idG5cIj5cclxuICAgICAgICAgIHt7IHBhZ2VJbmZvLmxhYmVsc1NlY3Rpb24gKyBcIi5cIiArIFwiRVhUUkFfQlVUVE9OX05BTUVcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbHVtbiBmbGV4LTQ5XCI+PC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXBhZ2VJbmZvLmhpZGVBdWRpdExvZ1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBtYWluLWZvcm0tY2FudmFzIG10LTR2aCBwYi01dmhcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbiBmbGV4LTk1XCI+XHJcbiAgICAgICAgPGFwcC1hdWRpdC1sb2cgW3BhZ2VJbmZvXT1cInBhZ2VJbmZvXCIgW2ZpZWxkc109XCJmaWVsZHNcIj48L2FwcC1hdWRpdC1sb2c+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG48L2Rpdj5cclxuIl19
|
|
297
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludm9pY2VxL3VpLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvYmFzZS1mb3JtL2Jhc2UtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UtZm9ybS9iYXNlLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUMvRyxPQUFPLEVBQVksTUFBTSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQVksaUJBQWlCLEVBQUUsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFbEgsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBR3BELE9BQU8sRUFBVyxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUMsU0FBUyxFQUFFLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3BFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUN2RixPQUFPLGFBQWEsTUFBTSxtQ0FBbUMsQ0FBQztBQUM5RCxPQUFPLEVBQUMsZUFBZSxFQUFFLElBQUksRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBRWxGLE9BQU8sRUFBQyxTQUFTLEVBQUUsc0JBQXNC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VztzQkFEVixNQUFNO2dCQU9QLGNBQWM7c0JBRGIsTUFBTTtnQkFRUCxjQUFjO3NCQURiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtGaWVsZEluZm8sIEZpbHRlciwgRmlsdGVyUmVxdWVzdCwgTkVXLCBQYWdlSW5mbywgU0FWRV9BTkRfQ09NUExFVEUsIFNuYWNrTWVzc2FnZX0gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWxcIjtcclxuaW1wb3J0IHtGaWVsZE1lc3NhZ2V9IGZyb20gXCIuLi8uLi9iYXNlLW1vZGVsL2FwaS1yZXNwb25zZVwiO1xyXG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZX0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcclxuaW1wb3J0IHtCYWNrZW5kU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzXCI7XHJcbmltcG9ydCB7Rm9ybUdyb3VwfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtMb2NhdGlvbiwgTmdJZn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge01hdEJ1dHRvbiwgTWF0QnV0dG9uTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uXCI7XHJcbmltcG9ydCB7TWF0SWNvbk1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcclxuaW1wb3J0IHtUaXRsZUJhckNvbXBvbmVudH0gZnJvbSBcIi4uL3RpdGxlLWJhci90aXRsZS1iYXIuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7QmFzZUZvcm1DYW52YXNDb21wb25lbnR9IGZyb20gXCIuLi9iYXNlLWZvcm0tY2FudmFzL2Jhc2UtZm9ybS1jYW52YXMuY29tcG9uZW50XCI7XHJcbmltcG9ydCBDbGFzc2ljRWRpdG9yIGZyb20gXCJAY2tlZGl0b3IvY2tlZGl0b3I1LWJ1aWxkLWNsYXNzaWNcIjtcclxuaW1wb3J0IHtEb0FjdGlvblJlcXVlc3QsIFNBVkV9IGZyb20gXCIuLi8uLi9iYXNlLW1vZGVsL2RvLWFjdGlvbi1yZXF1ZXN0XCI7XHJcbmltcG9ydCB7QWN0aW9uQ29tbWVudENvbXBvbmVudH0gZnJvbSBcIi4uL2FjdGlvbi1jb21tZW50L2FjdGlvbi1jb21tZW50LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge01hdERpYWxvZ30gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQge0Jhc2VVdGlscywgZ2V0TmVnYXRpdmVXZkFjdGlvbktleSwgZ2V0UG9zaXRpdmVXZkFjdGlvbktleSwgZ2V0V2ZBY3Rpb25JZH0gZnJvbSBcIi4uLy4uL3V0aWxzL2Jhc2UtdXRpbHNcIjtcclxuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7QXVkaXRMb2dDb21wb25lbnR9IGZyb20gXCIuLi9hdWRpdC1sb2ctbGlzdC9hdWRpdC1sb2cuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7RGlyZWN0aW9uYWxpdHl9IGZyb20gXCJAYW5ndWxhci9jZGsvYmlkaVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2FwcC1iYXNlLWZvcm0nLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBUaXRsZUJhckNvbXBvbmVudCxcclxuICAgIEJhc2VGb3JtQ2FudmFzQ29tcG9uZW50LFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxyXG4gICAgTmdJZixcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBNYXRCdXR0b24sXHJcbiAgICBBdWRpdExvZ0NvbXBvbmVudFxyXG4gIF0sXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vYmFzZS1mb3JtLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsOiAnLi9iYXNlLWZvcm0uY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCYXNlRm9ybUNvbXBvbmVudCBleHRlbmRzIEJhc2VVdGlscyBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuXHJcbiAgQElucHV0KClcclxuICBvdmVycmlkZSBwYWdlSW5mbyE6IFBhZ2VJbmZvO1xyXG5cclxuICBASW5wdXQoKS8vIEB0cy1pZ25vcmVcclxuICBmaWVsZHM6IEZpZWxkSW5mb1tdID0gW107XHJcblxyXG4gIEBJbnB1dCgpLy8gQHRzLWlnbm9yZVxyXG4gIGVycm9yczogRmllbGRNZXNzYWdlW10gPSBbXTtcclxuXHJcbiAgQElucHV0KClcclxuICBlZGl0YWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGl0ZW1JZDogbnVtYmVyO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBhY3Rpb25SZXN1bHRFbWl0dGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBmb3JtVXBkYXRlZDogRXZlbnRFbWl0dGVyPEZvcm1Hcm91cD4gPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm1Hcm91cD4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgaXRlbUxvYWRlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgZXh0cmFBY3Rpb246IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIGl0ZW0gOiBhbnkgPSB7fTtcclxuICBpc0xvYWRlZCA6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgaHlwZXJUZXh0RXZlbnQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgY3VycmVudERpcmVjdGlvbjogJ2x0cicgfCAncnRsJztcclxuICBpc1NhdmVEaXNhYmxlZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgaXNSZWplY3REaXNhYmxlZDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgaGlkZUJhY2tCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBTQVZFID0gU0FWRTtcclxuICBwcml2YXRlIGlzUGVuZGluZzogYm9vbGVhbjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgcm91dGVyOlJvdXRlcixcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgZGlyZWN0aW9uYWxpdHk6IERpcmVjdGlvbmFsaXR5LFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBsb2NhdGlvbjpMb2NhdGlvbixcclxuICAgICAgICAgICAgICAgIEBJbmplY3QoJ3NlY3VyaXR5TWFuYWdlcicpIHByaXZhdGUgc2VjdXJpdHlNYW5hZ2VyOiBhbnksXHJcbiAgICAgICAgICAgICAgICBwdWJsaWMgYmFja2VuZFNlcnZpY2U6IEJhY2tlbmRTZXJ2aWNlKSB7XHJcbiAgICAgIHN1cGVyKCk7XHJcbiAgICAgICBDbGFzc2ljRWRpdG9yLmRlZmF1bHRDb25maWcgPSB7XHJcbiAgICAgICAgICAgIHRvb2xiYXI6IHtcclxuICAgICAgICAgICAgICAgIGl0ZW1zOiBbJ2hlYWRpbmcnLCAnfCcsICdib2xkJywgJ2l0YWxpYycsICd8JywgJ2J1bGxldGVkTGlzdCcsICdudW1iZXJlZExpc3QnXVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBpbWFnZToge1xyXG4gICAgICAgICAgICAgICAgdG9vbGJhcjogWydpbWFnZVN0eWxlOnNpZGUnLCAnfCcsICdpbWFnZVRleHRBbHRlcm5hdGl2ZSddXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHRhYmxlOiB7XHJcbiAgICAgICAgICAgICAgICBjb250ZW50VG9vbGJhcjogWyAndGFibGVDb2x1bW4nLCAndGFibGVSb3cnLCAnbWVyZ2VUYWJsZUNlbGxzJyBdXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGxhbmd1YWdlOiAnZW4nXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgdGhpcy5jdXJyZW50RGlyZWN0aW9uID0gdGhpcy5kaXJlY3Rpb25hbGl0eS52YWx1ZTtcclxuICAgICAgdGhpcy5kaXJlY3Rpb25hbGl0eS5jaGFuZ2Uuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuY3VycmVudERpcmVjdGlvbiA9IHZhbHVlO1xyXG4gICAgICB9KVxyXG5cclxuICAgICAgLy8gY29uc29sZS5sb2coJ2VkaXRhYmxlJywgdGhpcy5lZGl0YWJsZSlcclxuICAgICAgdGhpcy5zZWN1cml0eU1hbmFnZXIubG9hZFBlcm1pc3Npb25zKCkuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiYmVmb3JlIGVkaXRcIiwgdGhpcy5lZGl0YWJsZSk7XHJcbiAgICAgICAgdGhpcy5sb2FkSXRlbSgpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiYWZ0ZXIgZWRpdFwiLCB0aGlzLmVkaXRhYmxlKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkNoYW5nZXMoe2l0ZW0sIGVycm9ycywgZmllbGRzfTogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgfVxyXG5cclxuICAgIGlzVmFsaWQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFja2VuZFNlcnZpY2UucGFyZW50Rm9ybT8udmFsaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgaXNNYXRjaEhlaWdodCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wYWdlSW5mby5wYWdlSGVpZ2h0ID09PSAnbWF0Y2gnO1xyXG4gICAgfVxyXG5cclxuICBwcml2YXRlIGxvYWRJdGVtKCkge1xyXG4gICAgdGhpcy5lZGl0YWJsZSA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0IG1vZGVFbmNyeXB0ZWQgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zWydtb2RlJ107XHJcbiAgICB0aGlzLmlzUGVuZGluZyA9ICEhbW9kZUVuY3J5cHRlZCAmJiB0aGlzLmJhY2tlbmRTZXJ2aWNlLmRlY3J5cHQobW9kZUVuY3J5cHRlZCkgPT09ICdwZW5kaW5nJztcclxuXHJcbiAgICBpZiAodGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1sndG9rZW4nXSAmJiB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zWydtb2RlJ10pIHtcclxuICAgICAgdGhpcy5pdGVtSWQgPSB0aGlzLmJhY2tlbmRTZXJ2aWNlLmRlY3J5cHQodGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1sndG9rZW4nXSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBjb25zb2xlLmxvZygnICoqKioqKiAqKioqKiogKioqKioqICoqKioqKiBlcnJvciBpbiB1cmwgJylcclxuICAgIH1cclxuICAgIGlmICh0aGlzLml0ZW1JZCA+IDApIHtcclxuICAgICAgY29uc3QgZmlsdGVyUmVxdWVzdCA9IG5ldyBGaWx0ZXJSZXF1ZXN0O1xyXG4gICAgICBmaWx0ZXJSZXF1ZXN0LmNvbHVtbnMgPSB0aGlzLmZpZWxkcy5maWx0ZXIoYyA9PiBjLnR5cGUgIT09ICdzcGFjZXInKS5tYXAoYyA9PiBjLnByb3BlcnR5KTtcclxuICAgICAgZmlsdGVyUmVxdWVzdC5wZW5kaW5nUGFnZSA9IHRoaXMuaXNQZW5kaW5nO1xyXG5cclxuICAgICAgZmlsdGVyUmVxdWVzdC5maWx0ZXJzID0gW107XHJcbiAgICAgIGZpbHRlclJlcXVlc3QuZmlsdGVycy5wdXNoKG5ldyBGaWx0ZXIoe1xyXG4gICAgICAgIGtleTogMCxcclxuICAgICAgICBmaWVsZFR5cGU6ICdMb25nJyxcclxuICAgICAgICBmaWVsZE5hbWU6ICdpZCcsXHJcbiAgICAgICAgdmFsdWVPYmplY3Q6IHRoaXMuaXRlbUlkLFxyXG4gICAgICAgIGZpbHRlclR5cGU6ICdGSUxFRF9GSUxURVInLFxyXG4gICAgICAgIG9wZXJhdG9yOiAnRVFVQUxTJ1xyXG4gICAgICB9KSk7XHJcbiAgICAgIC8vL2F1ZGl0LWxvZ1xyXG4gICAgICB0aGlzLmJhY2tlbmRTZXJ2aWNlLmdldEl0ZW1BdWRpdExvZyhmaWx0ZXJSZXF1ZXN0LCB0aGlzLnBhZ2VJbmZvIS5hcGlVcmkpLnN1YnNjcmliZShyZXNwID0+IHtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZygncmVzcCcsIHJlc3ApO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5iYWNrZW5kU2VydmljZS5nZXRJdGVtc0J5RmlsdGVyKGZpbHRlclJlcXVlc3QsIHRoaXMucGFnZUluZm8hLmFwaVVyaSkuc3Vic2NyaWJlKHJlc3AgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwPy52YWxpZCAmJiByZXNwLmJvZHk/Lmxlbmd0aCA+PSAwKSB7XHJcbiAgICAgICAgICB0aGlzLml0ZW0gPSByZXNwLmJvZHlbMF07XHJcbiAgICAgICAgICB0aGlzLmVkaXRhYmxlID0gKCF0aGlzLnBhZ2VJbmZvLmRyYWZ0U3VwcG9ydGVkIHx8ICF0aGlzLmlzUGVuZGluZykgJiYgdGhpcy5zZWN1cml0eU1hbmFnZXIuaGFzUGFnZVBlcm1pc3Npb24odGhpcy5wYWdlSW5mby5pZCwgJ0VESVQnKVxyXG4gICAgICAgICAgICAmJiAoIXRoaXMucGFnZUluZm8uZHJhZnRTdXBwb3J0ZWQgfHx0aGlzLml0ZW1bJ3N0YXRlVHlwZSddID09PSAnQ09NUExFVEVEJyApO1xyXG4gICAgICAgICAgdGhpcy5pdGVtTG9hZGVkLmVtaXQodGhpcy5pdGVtKTtcclxuICAgICAgICAgIHRoaXMuaXNMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmVkaXRhYmxlID0gdGhpcy5zZWN1cml0eU1hbmFnZXIuaGFzUGFnZVBlcm1pc3Npb24odGhpcy5wYWdlSW5mby5pZCwgJ0VESVQnKTtcclxuICAgICAgdGhpcy5pdGVtID0ge307XHJcbiAgICAgIHRoaXMuaXRlbUxvYWRlZC5lbWl0KHRoaXMuaXRlbSk7XHJcbiAgICAgIHRoaXMuaXNMb2FkZWQgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGJ1aWxkRG9BY3Rpb25TdWJqZWN0KCk6IGFueSB7XHJcbiAgICBjb25zdCBuZXdWYXIgPSB0aGlzLmVkaXRhYmxlID8gT2JqZWN0LmFzc2lnbih0aGlzLml0ZW0sIHRoaXMuYmFja2VuZFNlcnZpY2UucGFyZW50Rm9ybS52YWx1ZSkgOiB0aGlzLml0ZW07XHJcbiAgICBpZiAodGhpcy5pdGVtSWQgPD0gMCAmJiB0aGlzLmVkaXRhYmxlICkge1xyXG4gICAgICAvL1RPRE8gdGhpcyBpcyBsaWtlIGEgaGFjayBhbmQgbXVzdCBiZSBoYW5kbGVkIGZyb20gYmFja2VuZFxyXG4gICAgICBuZXdWYXJbJ3N0YXRlVHlwZSddID0gJ05FVyc7XHJcbiAgICB9XHJcbiAgICB0aGlzLmZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcclxuICAgICAgaWYgKGZpZWxkLmZsYXR0ZW5CeVN1YkF0dHJpYnV0ZSl7XHJcbiAgICAgICAgbmV3VmFyW2ZpZWxkLnByb3BlcnR5XSA9IG5ld1ZhcltmaWVsZC5wcm9wZXJ0eV1bZmllbGQuZmxhdHRlbkJ5U3ViQXR0cmlidXRlXVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgaWYgKCF0aGlzLnBhZ2VJbmZvLmRyYWZ0U3VwcG9ydGVkKXtcclxuICAgICAgbmV3VmFyWydzdGF0dXMnXSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3VmFyO1xyXG4gIH1cclxuXHJcblxyXG4gIGRvU2F2ZUFwcHJvdmVBY3Rpb24oKSB7XHJcbiAgICBsZXQgYWN0aW9uSWQgPSBnZXRXZkFjdGlvbklkKHRoaXMuaXRlbS5zdGF0ZVR5cGUpO1xyXG4gICAgaWYgKHRoaXMuaXRlbUlkIDw9IDAgJiYgdGhpcy5lZGl0YWJsZSApIHtcclxuICAgICAgYWN0aW9uSWQgPSBORVdcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5wYWdlSW5mby5kcmFmdFN1cHBvcnRlZCkge1xyXG4gICAgICBhY3Rpb25JZCA9IFNBVkVfQU5EX0NPTVBMRVRFXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5lZGl0YWJsZSAmJiB0aGlzLmJhY2tlbmRTZXJ2aWNlLnBhcmVudEZvcm0udmFsaWQgIT09IHRydWUpIHtcclxuICAgICAgdGhpcy5iYWNrZW5kU2VydmljZS50b3BQYW5lbE1lc3NhZ2UkLm5leHQobmV3IFNuYWNrTWVzc2FnZSgnSU5WQUxJRF9JTlBVVF9GT1JNJywgdHJ1ZSwgJ2Vycm9yJykpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCByZXF1ZXN0ID0gbmV3IERvQWN0aW9uUmVxdWVzdCgpO1xyXG4gICAgcmVxdWVzdC5hY3Rpb25JZCA9IGFjdGlvbklkO1xyXG4gICAgcmVxdWVzdC5zdWJqZWN0ID0gdGhpcy5idWlsZERvQWN0aW9uU3ViamVjdCgpO1xyXG5cclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQWN0aW9uQ29tbWVudENvbXBvbmVudCwge1xyXG4gICAgICBkYXRhOiB7bGFiZWw6ICdzYXZlJywgaXNUZXJtaW5hdGlvbjogZmFsc2V9LFxyXG4gICAgICB3aWR0aDogJzYwMHB4JyxcclxuICAgICAgaGVpZ2h0OiAnYXV0bycsXHJcbiAgICAgIGRpcmVjdGlvbjogIHRoaXMuY3VycmVudERpcmVjdGlvblxyXG4gICAgfSk7XHJcbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgIHJlcXVlc3QuY29tbWVudCA9IHJlc3VsdC5jb21tZW50O1xyXG4gICAgICAgIHRoaXMuYmFja2VuZFNlcnZpY2UuZG9BY3Rpb25XaXRoQXR0YWNobWVudHMocmVxdWVzdCwgW10sIHRoaXMucGFnZUluZm8hKS5zdWJzY3JpYmUocmVzcCA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnc3RlcCcsYWN0aW9uSWQpO1xyXG4gICAgICAgICAgdGhpcy5hY3Rpb25SZXN1bHRFbWl0dGVyLmVtaXQoeyB2YWxpZDogcmVzcC52YWxpZCwgYWN0aW9uSWQ6IGFjdGlvbklkIH0pO1xyXG4gICAgICAgICAgaWYgKHJlc3AudmFsaWQgKSB7XHJcbiAgICAgICAgICAgIGxldCBtZXNzYWdlID0gJ2FwcHJvdmVfc3VjY2Vzc2Z1bGx5JztcclxuICAgICAgICAgICAgc3dpdGNoIChhY3Rpb25JZCkge1xyXG4gICAgICAgICAgICAgIGNhc2UgMTpcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAnc2F2ZWRfc3VjY2Vzc2Z1bGx5JztcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIGNhc2UgMjpcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAndXBkYXRlZF9zdWNjZXNzZnVsbHknO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAnYXBwcm92ZV9zdWNjZXNzZnVsbHknO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuYmFja2VuZFNlcnZpY2UudG9wUGFuZWxNZXNzYWdlJC5uZXh0KG5ldyBTbmFja01lc3NhZ2UobWVzc2FnZSwgdHJ1ZSwgJ3N1Y2Nlc3MnKSk7XHJcbiAgICAgICAgICAgICBpZighdGhpcy5wYWdlSW5mby5zdGF5T25QYWdlKXtcclxuICAgICAgICAgICAgICAgdGhpcy5iYWNrVG9QYXJlbnQoKTtcclxuICAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHJlcXVlc3Quc3ViamVjdFsnc3RhdGVUeXBlJ10gPSBudWxsO1xyXG4gICAgICAgICAgICBpZiAocmVzcC5tZXNzYWdlWzBdLmVycm9yTWVzc2FnZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdkdXBsaWMnKSlcclxuICAgICAgICAgICAgdGhpcy5iYWNrZW5kU2VydmljZS50b3BQYW5lbE1lc3NhZ2UkLm5leHQobmV3IFNuYWNrTWVzc2FnZSh0aGlzLnBhZ2VJbmZvLmxhYmVsc1NlY3Rpb24gKyAnLicgKyByZXNwLm1lc3NhZ2VbMF0uZXJyb3JDb2RlLCB0cnVlLCAnZXJyb3InKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYmFja1RvUGFyZW50KCkge1xyXG4gICAgICBjb25zdCBpZElkeCA9IHRoaXMucm91dGVyLnVybC5sYXN0SW5kZXhPZignLycpO1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMucm91dGVyLnVybC5zdWJzdHJpbmcoMCwgaWRJZHgpKTtcclxuICB9XHJcblxyXG5cclxuICBnZXRUaXRsZSgpIHtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5wYWdlSW5mby5sYWJlbHNTZWN0aW9ufS4ke3RoaXMucGFnZUluZm8uaWR9YCA7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlRm9ybSgkZXZlbnQ6IEZvcm1Hcm91cCkge1xyXG4gICAgICAgIHRoaXMuYmFja2VuZFNlcnZpY2UucGFyZW50Rm9ybSA9ICRldmVudDtcclxuICAgICAgICB0aGlzLmZvcm1VcGRhdGVkLmVtaXQoJGV2ZW50KTtcclxuICAgIH1cclxuXHJcbiAgZG9DYW5jZWxSZWplY3RBY3Rpb24oKSB7XHJcbiAgICBpZiAoIXRoaXMuZWRpdGFibGUpe1xyXG4gICAgICBsZXQgYWN0aW9uSWQgPSAzO1xyXG4gICAgICAvLyBjb25zb2xlLmxvZygnYWN0aW9uSWQnLGFjdGlvbklkKTtcclxuICAgICAgY29uc3QgcmVxdWVzdCA9IG5ldyBEb0FjdGlvblJlcXVlc3QoKTtcclxuICAgICAgcmVxdWVzdC5hY3Rpb25JZCA9IGFjdGlvbklkO1xyXG4gICAgICByZXF1ZXN0LnN1YmplY3QgPSB0aGlzLmJ1aWxkRG9BY3Rpb25TdWJqZWN0KCk7XHJcblxyXG4gICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEFjdGlvbkNvbW1lbnRDb21wb25lbnQsIHtcclxuICAgICAgICBkYXRhOiB7bGFiZWw6ICdyZWplY3QnLCBhY2NlcHRBY3Rpb25MYWJlbDogJ2FjY2VwdCcsIHJlamVjdEFjdGlvbkxhYmVsOiAncmV0dXJuJ30sXHJcbiAgICAgICAgd2lkdGg6ICc2MDBweCcsXHJcbiAgICAgICAgaGVpZ2h0OiAnYXV0bycsXHJcbiAgICAgICAgZGlyZWN0aW9uOiB0aGlzLmN1cnJlbnREaXJlY3Rpb25cclxuICAgICAgfSk7XHJcbiAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgIHJlcXVlc3QuY29tbWVudCA9IHJlc3VsdC5jb21tZW50O1xyXG4gICAgICAgICAgdGhpcy5iYWNrZW5kU2VydmljZS5kb0FjdGlvbldpdGhBdHRhY2htZW50cyhyZXF1ZXN0LCBbXSwgdGhpcy5wYWdlSW5mbyEpLnN1YnNjcmliZShyZXNwID0+IHtcclxuICAgICAgICAgICAgdGhpcy5hY3Rpb25SZXN1bHRFbWl0dGVyLmVtaXQoeyB2YWxpZDogcmVzcC52YWxpZCwgYWN0aW9uSWQ6IGFjdGlvbklkIH0pO1xyXG4gICAgICAgICAgICBpZiAocmVzcC52YWxpZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuYmFja2VuZFNlcnZpY2UudG9wUGFuZWxNZXNzYWdlJC5uZXh0KG5ldyBTbmFja01lc3NhZ2UoJ3N1Y2Nlc3NmdWxfcmVqZWN0X21lc3NhZ2UnLCB0cnVlLCAnc3VjY2VzcycpKTtcclxuICAgICAgICAgICAgICBpZighdGhpcy5wYWdlSW5mby5zdGF5T25QYWdlKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuYmFja1RvUGFyZW50KCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMubG9jYXRpb24uYmFjaygpXHJcbiAgICB9XHJcbiAgICB9XHJcblxyXG4gIGhhc1dmUGVybWlzc2lvbigpIHtcclxuICAgIHJldHVybiAgKHRoaXMuc2VjdXJpdHlNYW5hZ2VyLmhhc1BhZ2VQZXJtaXNzaW9uKHRoaXMucGFnZUluZm8uaWQsICdFRElUJylcclxuICAgIHx8IHRoaXMuc2VjdXJpdHlNYW5hZ2VyLmhhc1BhZ2VQZXJtaXNzaW9uKHRoaXMucGFnZUluZm8uaWQsICdDT01QTEVURScpXHJcbiAgICB8fCB0aGlzLnNlY3VyaXR5TWFuYWdlci5oYXNQYWdlUGVybWlzc2lvbih0aGlzLnBhZ2VJbmZvLmlkLCAnVEVSTUlOQVRFJykpXHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZ2V0UG9zaXRpdmVXZkFjdGlvbktleSA9IGdldFBvc2l0aXZlV2ZBY3Rpb25LZXk7XHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGdldE5lZ2F0aXZlV2ZBY3Rpb25LZXkgPSBnZXROZWdhdGl2ZVdmQWN0aW9uS2V5O1xyXG5cclxuICBoYXNXZlBvc2l0aXZlUGVybWlzc2lvbigpIHtcclxuICAgIHJldHVybiAoIXRoaXMuZWRpdGFibGUgJiYgdGhpcy5zZWN1cml0eU1hbmFnZXIuaGFzUGFnZVBlcm1pc3Npb24odGhpcy5wYWdlSW5mby5pZCwgJ0NPTVBMRVRFJykpIHx8XHJcbiAgICAgICh0aGlzLmVkaXRhYmxlICYmIHRoaXMuc2VjdXJpdHlNYW5hZ2VyLmhhc1BhZ2VQZXJtaXNzaW9uKHRoaXMucGFnZUluZm8uaWQsICdFRElUJykpXHJcbiAgfVxyXG5cclxuICBoYXNXZk5lZ2F0aXZlUGVybWlzc2lvbigpIHtcclxuICAgIHJldHVybiAoIXRoaXMuZWRpdGFibGUgJiYgdGhpcy5zZWN1cml0eU1hbmFnZXIuaGFzUGFnZVBlcm1pc3Npb24odGhpcy5wYWdlSW5mby5pZCwgJ1RFUk1JTkFURScpKSB8fFxyXG4gICAgICAodGhpcy5lZGl0YWJsZSAmJiB0aGlzLnNlY3VyaXR5TWFuYWdlci5oYXNQYWdlUGVybWlzc2lvbih0aGlzLnBhZ2VJbmZvLmlkLCAnRURJVCcpKVxyXG4gIH1cclxuXHJcbiAgZG9FeHRyYUFjdGlvbigpIHtcclxuICAgIHRoaXMuZXh0cmFBY3Rpb24uZW1pdCgpXHJcbiAgfVxyXG4gIGRpc2FibGVkU2F2ZUJ1dHRvbihlbGVtZW50KSB7XHJcbiAgICByZXR1cm4gKCF0aGlzLmlzUGVuZGluZyAmJiBlbGVtZW50LnN0YXRlVHlwZSA9PSAnUEVORElORycpICYmIHRoaXMucGFnZUluZm8uZHJhZnRTdXBwb3J0ZWQgO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInBhZ2UtY29udGFpbmVyXCI+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJyb3cgZnVsbC13aWR0aCBtdC0ydmhcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gZnVsbC13aWR0aFwiPlxyXG4gICAgICA8YXBwLXRpdGxlLWJhclxyXG4gICAgICAgIFtwYWdlVGl0bGVdPVwiZ2V0VGl0bGUoKVwiXHJcbiAgICAgICAgW25ld0FjdGlvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgW2hpZGVCYWNrQnV0dG9uXT1cImhpZGVCYWNrQnV0dG9uXCI+XHJcbiAgICAgIDwvYXBwLXRpdGxlLWJhcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8YXBwLWJhc2UtZm9ybS1jYW52YXNcclxuICAgIFtwYWdlSW5mb109XCJwYWdlSW5mb1wiXHJcbiAgICBbZmllbGRzXT1cImZpZWxkc1wiXHJcbiAgICBbZWRpdGFibGVdPVwiZWRpdGFibGVcIlxyXG4gICAgW2Vycm9yc109XCJlcnJvcnNcIlxyXG4gICAgW2l0ZW1dPVwiaXRlbVwiXHJcbiAgICAoZm9ybVVwZGF0ZWQpPVwidXBkYXRlRm9ybSgkZXZlbnQpXCI+XHJcbiAgPC9hcHAtYmFzZS1mb3JtLWNhbnZhcz5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInJvdyBtYWluLWZvcm0tY2FudmFzIG10LTN2aFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbHVtbiBmbGV4LTQ5XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcm93LWNlbnRlci1zdGFydFwiPlxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJoYXNXZlBvc2l0aXZlUGVybWlzc2lvbigpXCIgY29sb3I9XCJwcmltYXJ5XCIgbWF0LWZsYXQtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZG9TYXZlQXBwcm92ZUFjdGlvbigpXCJcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFNhdmVCdXR0b24oaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb24tYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIGlkPVwiYmFzZS1mb3JtLXBvc2l0aXZlLWJ0blwiPlxyXG4gICAgICAgICAge3sgZ2V0UG9zaXRpdmVXZkFjdGlvbktleShpdGVtPy5zdGF0ZVR5cGUpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImhhc1dmTmVnYXRpdmVQZXJtaXNzaW9uKClcIiBjb2xvcj1cInNlY29uZFwiIG1hdC1yYWlzZWQtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZG9DYW5jZWxSZWplY3RBY3Rpb24oKVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRTYXZlQnV0dG9uKGl0ZW0pXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uLWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICBpZD1cImJhc2UtZm9ybS1uZWdhdGl2ZS1idG5cIj5cclxuICAgICAgICAgIHt7IGdldE5lZ2F0aXZlV2ZBY3Rpb25LZXkoaXRlbT8uc3RhdGVUeXBlKSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJwYWdlSW5mby5oaWRlRXh0cmFjdEJ1dHRvbiA9PT0gZmFsc2UgJiYgaXRlbUlkID4gMCAmJiBlZGl0YWJsZVwiIGNvbG9yPVwicHJpbWFyeVwiIG1hdC1yYWlzZWQtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZG9FeHRyYUFjdGlvbigpXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uLWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICBpZD1cImJhc2UtZm9ybS1leHRyYS1idG5cIj5cclxuICAgICAgICAgIHt7IHBhZ2VJbmZvLmxhYmVsc1NlY3Rpb24gKyBcIi5cIiArIFwiRVhUUkFfQlVUVE9OX05BTUVcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbHVtbiBmbGV4LTQ5XCI+PC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXBhZ2VJbmZvLmhpZGVBdWRpdExvZ1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBtYWluLWZvcm0tY2FudmFzIG10LTR2aCBwYi01dmhcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbiBmbGV4LTk1XCI+XHJcbiAgICAgICAgPGFwcC1hdWRpdC1sb2cgW3BhZ2VJbmZvXT1cInBhZ2VJbmZvXCIgW2ZpZWxkc109XCJmaWVsZHNcIj48L2FwcC1hdWRpdC1sb2c+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG48L2Rpdj5cclxuIl19
|