vcomply-workflow-engine 3.4.22 → 3.4.24
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/esm2020/lib/add-multiple-responsibility/add-multiple-responsibility.component.mjs +2 -4
- package/esm2020/lib/add-multiple-risk/add-multiple-risk.component.mjs +2 -3
- package/esm2020/lib/formgroup/cs-select/cs-select.component.mjs +5 -5
- package/esm2020/lib/formgroup/cs-switch/cs-switch.component.mjs +1 -4
- package/esm2020/lib/log-an-issue/log-an-issue.component.mjs +1 -11
- package/esm2020/lib/more-option/more-option.component.mjs +5 -6
- package/esm2020/lib/pipes/filter.pipe.mjs +1 -2
- package/esm2020/lib/pipes/search.pipe.mjs +3 -5
- package/esm2020/lib/sharedComponents/approval-workflow/approval-create-form/approval-create-form.component.mjs +3 -7
- package/esm2020/lib/sharedComponents/approval-workflow/approval-workflow-list/approval-workflow-list.component.mjs +1 -5
- package/esm2020/lib/sharedComponents/approval-workflow/approval-workflow.component.mjs +1 -7
- package/esm2020/lib/sharedComponents/assessment-editor/create-assessment-container/create-assessment-container.component.mjs +80 -36
- package/esm2020/lib/sharedComponents/assessment-list/assessment-list.component.mjs +27 -21
- package/esm2020/lib/sharedComponents/assessment-preview/preview/preview.component.mjs +7 -4
- package/esm2020/lib/sharedComponents/audit-category-list/audit-category-list.component.mjs +3 -4
- package/esm2020/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.mjs +3 -9
- package/esm2020/lib/sharedComponents/bulk-view/bulk-view.component.mjs +9 -7
- package/esm2020/lib/sharedComponents/category-multiselect/category-multi-select.component.mjs +6 -8
- package/esm2020/lib/sharedComponents/checkpoint/checkpoints/checkpoints.component.mjs +93 -27
- package/esm2020/lib/sharedComponents/checkpoint/checkpoints-questions/checkpoints-questions.component.mjs +11 -9
- package/esm2020/lib/sharedComponents/checkpoint-policy/checkpoints-policy-container/checkpoints-policy-container.component.mjs +13 -12
- package/esm2020/lib/sharedComponents/checkpoint-policy/checkpoints-policy-questions/checkpoints-policy-questions.component.mjs +28 -19
- package/esm2020/lib/sharedComponents/floating-bar/floating-bar.component.mjs +8 -8
- package/esm2020/lib/sharedComponents/format-and-evidence/format-and-evidence.component.mjs +35 -37
- package/esm2020/lib/sharedComponents/framework-list/parent-table/parent-table.component.mjs +7 -7
- package/esm2020/lib/sharedComponents/frequency/frequency-biannual/frequency-biannual.component.mjs +1 -12
- package/esm2020/lib/sharedComponents/frequency/frequency-container/frequency-container.component.mjs +1 -3
- package/esm2020/lib/sharedComponents/frequency/frequency-daily/frequency-daily.component.mjs +1 -13
- package/esm2020/lib/sharedComponents/frequency/frequency-due-date/frequency-due-date.component.mjs +1 -7
- package/esm2020/lib/sharedComponents/frequency/frequency-lifecycle/frequency-lifecycle.component.mjs +1 -26
- package/esm2020/lib/sharedComponents/frequency/frequency-monthly/frequency-monthly.component.mjs +1 -15
- package/esm2020/lib/sharedComponents/frequency/frequency-one-time/frequency-one-time.component.mjs +1 -14
- package/esm2020/lib/sharedComponents/frequency/frequency-ongoing/frequency-ongoing.component.mjs +14 -8
- package/esm2020/lib/sharedComponents/frequency/frequency-quarterly/frequency-quarterly.component.mjs +1 -13
- package/esm2020/lib/sharedComponents/frequency/frequency-radio-list/frequency-radio-list.component.mjs +1 -2
- package/esm2020/lib/sharedComponents/frequency/frequency-random/frequency-random.component.mjs +1 -18
- package/esm2020/lib/sharedComponents/frequency/frequency-top/frequency-top.component.mjs +2 -2
- package/esm2020/lib/sharedComponents/frequency/frequency-weekly/frequency-weekly.component.mjs +1 -12
- package/esm2020/lib/sharedComponents/frequency/frequency.service.mjs +2 -11
- package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-annual/frequency-dialog-annual.component.mjs +1 -2
- package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-biannual/frequency-dialog-biannual.component.mjs +1 -2
- package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-monthly/frequency-dialog-monthly.component.mjs +1 -2
- package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-one-time/frequency-dialog-one-time.component.mjs +1 -2
- package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-quarterly/frequency-dialog-quarterly.component.mjs +1 -2
- package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-radio-list/frequency-dialog-radio-list.component.mjs +1 -2
- package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-top/frequency-dialog-top.component.mjs +2 -2
- package/esm2020/lib/sharedComponents/group-users-list/group-users-list.component.mjs +1 -3
- package/esm2020/lib/sharedComponents/link-program/link-program/link-program.component.mjs +48 -38
- package/esm2020/lib/sharedComponents/link-program/restapi.service.mjs +31 -16
- package/esm2020/lib/sharedComponents/no-data/no-data.component.mjs +2 -4
- package/esm2020/lib/sharedComponents/owner-list/owner-list.component.mjs +12 -10
- package/esm2020/lib/sharedComponents/program-listing/program-listing.component.mjs +127 -58
- package/esm2020/lib/sharedComponents/radio-list-with-pagination/radio-list.component.mjs +4 -7
- package/esm2020/lib/sharedComponents/risk-classification/risk-classification.component.mjs +11 -6
- package/esm2020/lib/sharedComponents/select-approvers/select-approvers.component.mjs +1 -2
- package/esm2020/lib/sharedComponents/users-radio-list/users-radio-list.component.mjs +2 -3
- package/esm2020/lib/ui-kit/formgroup/cs-switch/cs-switch.component.mjs +1 -4
- package/esm2020/lib/ui-kit/popover/popover-longpress.directive.mjs +1 -3
- package/esm2020/lib/ui-kit/popover/popover.component.mjs +26 -12
- package/esm2020/lib/ui-kit/tooltip/tooltip.directive.mjs +8 -5
- package/esm2020/lib/workflow/shared/components/attributes/attributes.component.mjs +1 -2
- package/esm2020/lib/workflow/shared/components/edit-mode/edit-mode.component.mjs +1 -4
- package/esm2020/lib/workflow/shared/components/grc-object-list/grc-object-list.component.mjs +1 -2
- package/esm2020/lib/workflow/shared/components/list-popup/list-popup.component.mjs +1 -4
- package/esm2020/lib/workflow/shared/components/table-card/table-card.component.mjs +4 -8
- package/esm2020/lib/workflow-assessment/import-an-assessment/import-an-assessment.component.mjs +245 -108
- package/esm2020/lib/workflow-assessment/workflow-assessment.component.mjs +2 -4
- package/esm2020/lib/workflow-compliance/workflow-compliance.component.mjs +10 -8
- package/esm2020/lib/workflow-engine-container/workflow-engine-container.component.mjs +1 -5
- package/esm2020/lib/workflow-policy/workflow-policy.component.mjs +5 -5
- package/esm2020/lib/workflow-program/create-program-ui/assessment-picker/assessment-picker.component.mjs +45 -45
- package/esm2020/lib/workflow-program/create-program-ui/define-framework-listing/define-framework-listing.component.mjs +43 -25
- package/esm2020/lib/workflow-program/create-program-ui/define-framework-listing/pipes/sub-cat-indeter.pipe.mjs +4 -4
- package/esm2020/lib/workflow-program/create-program-ui/floating-bar/floating-bar.component.mjs +1 -2
- package/esm2020/lib/workflow-program/create-program-ui/pagination/pagination/pagination.component.mjs +25 -14
- package/esm2020/lib/workflow-program/create-program-ui/pipes/assessment-resolver.pipe.mjs +6 -3
- package/esm2020/lib/workflow-program/create-program-ui/role-list/role-list.component.mjs +25 -19
- package/esm2020/lib/workflow-program/create-program-ui/user-group-list/user-group-list.component.mjs +1 -4
- package/esm2020/lib/workflow-program/workflow-program.component.mjs +232 -110
- package/esm2020/lib/workflow-services/add-risk.service.mjs +1 -2
- package/esm2020/lib/workflow-services/assessment.service.mjs +1 -5
- package/esm2020/lib/workflow-services/programs.service.mjs +173 -57
- package/fesm2015/vcomply-workflow-engine.mjs +1380 -938
- package/fesm2015/vcomply-workflow-engine.mjs.map +1 -1
- package/fesm2020/vcomply-workflow-engine.mjs +1390 -943
- package/fesm2020/vcomply-workflow-engine.mjs.map +1 -1
- package/lib/formgroup/cs-switch/cs-switch.component.d.ts +2 -3
- package/lib/sharedComponents/assessment-list/assessment-list.component.d.ts +4 -5
- package/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.d.ts +2 -3
- package/lib/sharedComponents/bulk-view/bulk-view.component.d.ts +2 -3
- package/lib/sharedComponents/frequency/frequency-lifecycle/frequency-lifecycle.component.d.ts +2 -4
- package/lib/sharedComponents/frequency/frequency-ongoing/frequency-ongoing.component.d.ts +1 -1
- package/lib/sharedComponents/link-program/restapi.service.d.ts +3 -3
- package/lib/sharedComponents/no-data/no-data.component.d.ts +2 -4
- package/lib/ui-kit/formgroup/cs-switch/cs-switch.component.d.ts +2 -3
- package/lib/workflow/shared/components/edit-mode/edit-mode.component.d.ts +2 -3
- package/lib/workflow/shared/components/list-popup/list-popup.component.d.ts +2 -3
- package/lib/workflow/shared/components/table-card/table-card.component.d.ts +2 -5
- package/lib/workflow-program/create-program-ui/assessment-picker/assessment-picker.component.d.ts +8 -9
- package/lib/workflow-program/create-program-ui/pagination/pagination/pagination.component.d.ts +2 -4
- package/package.json +1 -1
|
@@ -82,13 +82,11 @@ export class GroupUsersListComponent {
|
|
|
82
82
|
this.setgroupList();
|
|
83
83
|
}
|
|
84
84
|
selectAll(mode) {
|
|
85
|
-
console.log('68', mode, this.usersList);
|
|
86
85
|
if (mode) {
|
|
87
86
|
let list = [...this.usersList];
|
|
88
87
|
if (!this.isDisabledSelected) {
|
|
89
88
|
list = list.filter((user) => !this.disabledId.includes(user[this.userIdKey]));
|
|
90
89
|
}
|
|
91
|
-
console.log('733', list, this.disabledId);
|
|
92
90
|
this.selectedIds = [];
|
|
93
91
|
list.forEach((element) => {
|
|
94
92
|
this.selectedIds.push(element[this.userIdKey]);
|
|
@@ -258,4 +256,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
258
256
|
}], isDisabledSelected: [{
|
|
259
257
|
type: Input
|
|
260
258
|
}] } });
|
|
261
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtdXNlcnMtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2dyb3VwLXVzZXJzLWxpc3QvZ3JvdXAtdXNlcnMtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2dyb3VwLXVzZXJzLWxpc3QvZ3JvdXAtdXNlcnMtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxHQUdiLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDbkMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDckYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7Ozs7QUFpQm5FLE1BQU0sT0FBTyx1QkFBdUI7SUF5QmxDLFlBQW9CLFFBQXlCO1FBQXpCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBdkJwQyxjQUFTLEdBQUcs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O3NCQUFkLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4uLy4uL3VpLWtpdC9zbmFjay1iYXIvc25hY2stYmFyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgUG9wb3Zlck1vZHVsZSB9IGZyb20gJy4uLy4uL3VpLWtpdC9wb3BvdmVyL3BvcG92ZXIubW9kdWxlJztcclxuaW1wb3J0IHsgQ2xpY2tPdXRzaWRlTW9kdWxlIH0gZnJvbSAnLi4vLi4vdWkta2l0L2NsaWNrLW91dHNpZGUvY2xpY2stb3V0c2lkZS5tb2R1bGUnO1xyXG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAnLi4vLi4vdWkta2l0L3Rvb2x0aXAvdG9vbHRpcC5tb2R1bGUnO1xyXG5pbXBvcnQgeyBGbG9hdGluZ0Jhck1vZHVsZSB9IGZyb20gJy4uL2Zsb2F0aW5nLWJhci9mbG9hdGluZy1iYXIubW9kdWxlJztcclxuaW1wb3J0IHsgUGlwZXNNb2R1bGUgfSBmcm9tICcuLi8uLi9waXBlcy9waXBlcy5tb2R1bGUnO1xyXG5pbXBvcnQgeyBGb3JtZ3JvdXBNb2R1bGUgfSBmcm9tICcuLi8uLi9mb3JtZ3JvdXAvZm9ybWdyb3VwLm1vZHVsZSc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWdyb3VwLXVzZXJzLWxpc3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9ncm91cC11c2Vycy1saXN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9ncm91cC11c2Vycy1saXN0LmNvbXBvbmVudC5sZXNzJywgJy4uLy4uL2Zvcm1zLmxlc3MnXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUG9wb3Zlck1vZHVsZSxcclxuICAgIENsaWNrT3V0c2lkZU1vZHVsZSxcclxuICAgIFRvb2x0aXBNb2R1bGUsXHJcbiAgICBGbG9hdGluZ0Jhck1vZHVsZSxcclxuICAgIFBpcGVzTW9kdWxlLFxyXG4gICAgRm9ybWdyb3VwTW9kdWxlLFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHcm91cFVzZXJzTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKSBncm91cHNFbmFibGVkOiBhbnk7XHJcbiAgQElucHV0KCkgdXNlcnNMaXN0ID0gW107XHJcbiAgQElucHV0KCkgZ3JvdXBzTGlzdDogYW55W10gPSBbXTtcclxuICBASW5wdXQoKSBzZWxlY3RlZFVzZXJzID0gW107XHJcbiAgQElucHV0KCkgdXNlcklkS2V5ID0gJyc7XHJcbiAgQElucHV0KCkgZ3JvdXBJZEtleSA9ICcnO1xyXG4gIEBJbnB1dCgpIG9wZW5lZEZyb20gPSAnJztcclxuICBAT3V0cHV0KCkgc2F2ZVNlbGVjdGVkTGlzdCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgY2xvc2VVc2Vyc0xpc3QgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRHcm91cHM6IGFueVtdID0gW107XHJcbiAgQElucHV0KCkgYXNzaWduZWVHcm91cHNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkSWQ6IGFueVtdID0gW107XHJcbiAgQElucHV0KCkgZnJvbVJlc3BvbnNpYmlsaXR5OiBhbnk7XHJcbiAgQElucHV0KCkgcmV2aWV3ZXJJZHM6IGFueVtdID0gW107XHJcbiAgQElucHV0KCkgb3ZlcnNlZXJJZHM6IGFueVtdID0gW107XHJcbiAgQElucHV0KCkgYXNzaWdub3JJZDogYW55W10gPSBbXTtcclxuICBASW5wdXQoKSBsb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBpc0Rpc2FibGVkU2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgc2VhcmNoID0gJyc7XHJcbiAgc2VsZWN0ZWRJZHM6IGFueVtdID0gW107XHJcbiAgYW5pbWF0aW9uID0gZmFsc2U7XHJcbiAgc2VsZWN0ZWRHcm91cElkczogYW55W10gPSBbXTtcclxuICBzZWxlY3RlZGdyb3VwTGlzdDogYW55W10gPSBbXTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNuYWNrYmFyOiBTbmFja0JhclNlcnZpY2UpIHt9XHJcblxyXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZElkcyA9IHRoaXMuc2VsZWN0ZWRVc2Vycy5tYXAoKGVsZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChlbGVbdGhpcy51c2VySWRLZXldKSB7XHJcbiAgICAgICAgcmV0dXJuIGVsZVt0aGlzLnVzZXJJZEtleV07XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZWxlY3RlZEdyb3VwSWRzID0gdGhpcy5zZWxlY3RlZEdyb3Vwcz8ubWFwKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoZWxlW3RoaXMuZ3JvdXBJZEtleV0pIHtcclxuICAgICAgICByZXR1cm4gZWxlW3RoaXMuZ3JvdXBJZEtleV07XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuYW5pbWF0aW9uID0gdHJ1ZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmFuaW1hdGlvbiA9IGZhbHNlO1xyXG4gICAgfSwgMzAwKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdFVzZXIodXNlcjogYW55LCBtb2RlOiBhbnkpIHtcclxuICAgIGlmIChtb2RlKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJZHMucHVzaCh1c2VyKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RlZElkcy5maW5kSW5kZXgoXHJcbiAgICAgICAgKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudCA9PSB1c2VyXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJZHMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0TGlzdCgpO1xyXG4gIH1cclxuICBkZWxldGVFdmVudChldmVudDogYW55KSB7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VsZWN0ZWRJZHMuZmluZEluZGV4KFxyXG4gICAgICAoZWxlbWVudDogYW55KSA9PiBlbGVtZW50ID09IGV2ZW50W3RoaXMudXNlcklkS2V5XVxyXG4gICAgKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRJZHMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIHRoaXMuc2V0TGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlR3JvdXBFdmVudChldmVudDogYW55KSB7XHJcbiAgICBjb25zdCBncm91cGluZGV4ID0gdGhpcy5zZWxlY3RlZEdyb3VwSWRzLmZpbmRJbmRleChcclxuICAgICAgKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudCA9PSBldmVudFsnZ3JvdXBfaWQnXVxyXG4gICAgKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRHcm91cElkcy5zcGxpY2UoZ3JvdXBpbmRleCwgMSk7XHJcbiAgICB0aGlzLnNldGdyb3VwTGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0QWxsKG1vZGU6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coJzY4JywgbW9kZSwgdGhpcy51c2Vyc0xpc3QpO1xyXG5cclxuICAgIGlmIChtb2RlKSB7XHJcbiAgICAgIGxldCBsaXN0ID0gWy4uLnRoaXMudXNlcnNMaXN0XTtcclxuICAgICAgaWYgKCF0aGlzLmlzRGlzYWJsZWRTZWxlY3RlZCkge1xyXG4gICAgICAgIGxpc3QgPSBsaXN0LmZpbHRlcihcclxuICAgICAgICAgICh1c2VyOiBhbnkpID0+ICF0aGlzLmRpc2FibGVkSWQuaW5jbHVkZXModXNlclt0aGlzLnVzZXJJZEtleV0pXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc29sZS5sb2coJzczMycsIGxpc3QsIHRoaXMuZGlzYWJsZWRJZCk7XHJcblxyXG4gICAgICB0aGlzLnNlbGVjdGVkSWRzID0gW107XHJcbiAgICAgIGxpc3QuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJZHMucHVzaChlbGVtZW50W3RoaXMudXNlcklkS2V5XSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKCF0aGlzLmlzRGlzYWJsZWRTZWxlY3RlZCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJZHMgPSBbXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSWRzID0gdGhpcy5zZWxlY3RlZElkcy5maWx0ZXIoKGlkOiBudW1iZXIpID0+XHJcbiAgICAgICAgICB0aGlzLmRpc2FibGVkSWQuaW5jbHVkZXMoaWQpXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRMaXN0KCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RBbGxHcm91cHMobW9kZTogYW55KSB7XHJcbiAgICBpZiAobW9kZSkge1xyXG4gICAgICBjb25zdCBncm91cGxpc3QgPSBbLi4udGhpcy5hc3NpZ25lZUdyb3Vwc0xpc3RdO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkR3JvdXBJZHMgPSBbXTtcclxuICAgICAgZ3JvdXBsaXN0LmZvckVhY2goKGVsZW1lbnQpID0+IHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkR3JvdXBJZHMucHVzaChlbGVtZW50W3RoaXMuZ3JvdXBJZEtleV0pO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEdyb3VwcyA9IGdyb3VwbGlzdDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRHcm91cElkcyA9IFtdO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkR3JvdXBzID0gW107XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldGdyb3VwTGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGlvbkNoZWNrKGlzQ2hlY2tlZDogYm9vbGVhbikge1xyXG4gICAgaWYgKGlzQ2hlY2tlZCkge1xyXG4gICAgICB0aGlzLnNuYWNrYmFyLnNob3coJ1lvdSBjYW4gc2VsZWN0IGEgbWF4aW11bSBvZiAxOSB1c2Vycy4nLCAnYWxlcnQnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldExpc3QoKSB7XHJcbiAgICBjb25zdCBkYXRhOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IHVzZXJMaXN0ID0gY2xvbmVEZWVwKHRoaXMudXNlcnNMaXN0KTtcclxuICAgIGNvbnN0IHNlbGVjdGVkSWRzID0gY2xvbmVEZWVwKHRoaXMuc2VsZWN0ZWRJZHMpO1xyXG4gICAgdXNlckxpc3QuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChzZWxlY3RlZElkcy5pbmNsdWRlcyhlbGVtZW50W3RoaXMudXNlcklkS2V5XSkpIHtcclxuICAgICAgICBkYXRhLnB1c2goZWxlbWVudCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZWxlY3RlZFVzZXJzID0gZGF0YTtcclxuICB9XHJcbiAgc2V0Z3JvdXBMaXN0KCkge1xyXG4gICAgY29uc3QgZGF0YTogYW55ID0gW107XHJcbiAgICBjb25zdCBncm91cHNsaXN0ID0gY2xvbmVEZWVwKHRoaXMuYXNzaWduZWVHcm91cHNMaXN0KTtcclxuICAgIGNvbnN0IHNlbGVjdGVkR3JvdXBJZHMgPSBjbG9uZURlZXAodGhpcy5zZWxlY3RlZEdyb3VwSWRzKTtcclxuICAgIGdyb3Vwc2xpc3QuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChzZWxlY3RlZEdyb3VwSWRzLmluY2x1ZGVzKGVsZW1lbnRbdGhpcy5ncm91cElkS2V5XSkpIHtcclxuICAgICAgICBkYXRhLnB1c2goZWxlbWVudCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZWxlY3RlZEdyb3VwcyA9IGRhdGE7XHJcbiAgfVxyXG5cclxuICBjaGVja1NlbGVjdEFsbCgpIHtcclxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLnVzZXJzTGlzdC5ldmVyeSgodXNlcjogYW55KSA9PlxyXG4gICAgICB0aGlzLnNlbGVjdGVkSWRzLmluY2x1ZGVzKHVzZXJbdGhpcy51c2VySWRLZXldKVxyXG4gICAgKTtcclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tzZWxlY3RBbGxncm91cHMoKSB7XHJcbiAgICBjb25zdCBkYXRhID0gdGhpcy5hc3NpZ25lZUdyb3Vwc0xpc3QuZXZlcnkoKGdyb3VwOiBhbnkpID0+XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRHcm91cElkcy5pbmNsdWRlcyhncm91cFt0aGlzLmdyb3VwSWRLZXldKVxyXG4gICAgKTtcclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH1cclxuXHJcbiAgc2F2ZShzZWxlY3RlZElkczogYW55KSB7XHJcbiAgICBsZXQgc2VsZWN0ZWREYXRhO1xyXG4gICAgaWYgKHRoaXMuYXNzaWduZWVHcm91cHNMaXN0Lmxlbmd0aCkge1xyXG4gICAgICBzZWxlY3RlZERhdGEgPSB7IHVzZXJzOiB0aGlzLnNlbGVjdGVkSWRzLCBncm91cHM6IHRoaXMuc2VsZWN0ZWRHcm91cElkcyB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2VsZWN0ZWREYXRhID0gc2VsZWN0ZWRJZHM7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNhdmVTZWxlY3RlZExpc3QuZW1pdChzZWxlY3RlZERhdGEpO1xyXG4gIH1cclxuXHJcbiAgY2xvc2UoKSB7XHJcbiAgICB0aGlzLmNsb3NlVXNlcnNMaXN0LmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdEdyb3VwKGdyb3VwSWRzOiBhbnksIG1vZGU6IGFueSkge1xyXG4gICAgaWYgKG1vZGUpIHtcclxuICAgICAgZ3JvdXBJZHMuZm9yRWFjaCgodXNlcklkOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRJZHMuaW5jbHVkZXModXNlcklkKSkge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZElkcy5wdXNoKHVzZXJJZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGdyb3VwSWRzLmZvckVhY2goKHVzZXJJZDogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkSWRzLmZpbmRJbmRleChcclxuICAgICAgICAgIChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQgPT0gdXNlcklkXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSWRzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRMaXN0KCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RHcm91cEVsZW1lbnQoZGF0YTogYW55LCBtb2RlOiBhbnkpIHtcclxuICAgIGlmIChtb2RlKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRncm91cExpc3QucHVzaChkYXRhKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEdyb3VwSWRzLnB1c2goZGF0YVt0aGlzLmdyb3VwSWRLZXldKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RlZGdyb3VwTGlzdC5maW5kSW5kZXgoXHJcbiAgICAgICAgKGVsZTogeyBbeDogc3RyaW5nXTogYW55IH0pID0+XHJcbiAgICAgICAgICBlbGVbdGhpcy5ncm91cElkS2V5XSA9PT0gZGF0YVt0aGlzLmdyb3VwSWRLZXldXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRncm91cExpc3Quc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgY29uc3QgaWRJbmRleCA9IHRoaXMuc2VsZWN0ZWRHcm91cElkcy5maW5kSW5kZXgoXHJcbiAgICAgICAgKGVsZSkgPT4gZWxlID09PSBkYXRhW3RoaXMuZ3JvdXBJZEtleV1cclxuICAgICAgKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEdyb3VwSWRzLnNwbGljZShpZEluZGV4LCAxKTtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0Z3JvdXBMaXN0KCk7XHJcbiAgfVxyXG5cclxuICBjaGVja0dyb3VwTGlzdChncm91cElkczogYW55KSB7XHJcbiAgICByZXR1cm4gZ3JvdXBJZHMuZXZlcnkoKGlkOiBhbnkpID0+IHRoaXMuc2VsZWN0ZWRJZHMuaW5jbHVkZXMoaWQpKTtcclxuICB9XHJcblxyXG4gIGhpZGVHcm91cChncm91cElkczogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy51c2Vyc0xpc3QuZXZlcnkoXHJcbiAgICAgICh1c2VyOiBhbnkpID0+ICFncm91cElkcy5pbmNsdWRlcyh1c2VyW3RoaXMudXNlcklkS2V5XSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBjdXJyZW50VGFiID0gJ1VTRVInO1xyXG4gIHN3aXRjaFRhYih0YWI6IHN0cmluZykge1xyXG4gICAgdGhpcy5jdXJyZW50VGFiID0gdGFiO1xyXG4gICAgdGhpcy5zZWFyY2ggPSAnJztcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImFkZC1yaXNrLWdyb3VwLXVzZXItbGlzdFwiIFtjbGFzcy5hbmltYXRlXT1cImFuaW1hdGlvblwiPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiYWRkLXJpc2stZ3JvdXAtdXNlci1saXN0LWhlYWQgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtcGwtNCB2eC1wci00XCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTQgdngtZnctNTAwIHZ4LWxhYmVsLXR4dFwiPlNlbGVjdCBVc2VyKHMpPC9kaXY+XHJcbiAgICA8IS0tIDxidXR0b24gY2xhc3M9XCJhZGQtcmlzay1ncm91cC11c2VyLWxpc3QtY2xvc2VcIiAoY2xpY2spPVwiY2xvc2UoKVwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgPC9idXR0b24+IC0tPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJhZGQtcmlzay1ncm91cC11c2VyLWxpc3QtYm9keVwiPlxyXG4gICAgPGFwcC1sb2FkZXItaW5saW5lICpuZ0lmPVwibG9hZGVyXCI+PC9hcHAtbG9hZGVyLWlubGluZT5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJhZGQtcmlzay1ncm91cC11c2VyLWxpc3QtdGFiIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtbXQtMSB2eC1tYi0yXCJcclxuICAgICAgKm5nSWY9XCJncm91cHNFbmFibGVkXCJcclxuICAgID5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIChjbGljayk9XCJzd2l0Y2hUYWIoJ1VTRVInKVwiXHJcbiAgICAgICAgY2xhc3M9XCJ0YWItYnRuIHZ4LWZzLTExIHZ4LWZ3LTYwMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtcGItMiB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1saC00XCJcclxuICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImN1cnJlbnRUYWIgPT09ICdVU0VSJ1wiXHJcbiAgICAgID5cclxuICAgICAgICBVU0VSU1xyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBjbGFzcz1cInZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LW1sLTIgdngtbGgtNFwiXHJcbiAgICAgICAgICA+e3tcclxuICAgICAgICAgICAgc2VhcmNoPy5sZW5ndGggJiYgY3VycmVudFRhYiA9PT0gXCJVU0VSXCJcclxuICAgICAgICAgICAgICA/ICh1c2Vyc0xpc3QgfCBzZWFyY2ggOiBzZWFyY2gpPy5sZW5ndGhcclxuICAgICAgICAgICAgICA6IHVzZXJzTGlzdD8ubGVuZ3RoXHJcbiAgICAgICAgICB9fTwvc3BhblxyXG4gICAgICAgID5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICAoY2xpY2spPVwic3dpdGNoVGFiKCdHUk9VUCcpXCJcclxuICAgICAgICBjbGFzcz1cInRhYi1idG4gdngtZnMtMTEgdngtZnctNjAwIHZ4LXBhcmFncmFwaC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1wYi0yIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWxoLTRcIlxyXG4gICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiY3VycmVudFRhYiA9PT0gJ0dST1VQJ1wiXHJcbiAgICAgID5cclxuICAgICAgICBVU0VSIEdST1VQU1xyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBjbGFzcz1cInZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LW1sLTIgdngtbGgtNFwiXHJcbiAgICAgICAgICA+e3tcclxuICAgICAgICAgICAgc2VhcmNoPy5sZW5ndGggJiYgY3VycmVudFRhYiA9PT0gXCJHUk9VUFwiXHJcbiAgICAgICAgICAgICAgPyAoYXNzaWduZWVHcm91cHNMaXN0IHwgc2VhcmNoIDogc2VhcmNoKT8ubGVuZ3RoXHJcbiAgICAgICAgICAgICAgOiBhc3NpZ25lZUdyb3Vwc0xpc3Q/Lmxlbmd0aFxyXG4gICAgICAgICAgfX08L3NwYW5cclxuICAgICAgICA+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWJsb2NrIHZ4LW1iLTJcIj5cclxuICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGI7PC9pPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hcIlxyXG4gICAgICAgIHBsYWNlaG9sZGVyPVwie3tcclxuICAgICAgICAgIGN1cnJlbnRUYWIgPT09ICdVU0VSJyA/ICdTZWFyY2ggVXNlcihzKScgOiAnU2VhcmNoIFVzZXIgR3JvdXAocyknXHJcbiAgICAgICAgfX0gXCJcclxuICAgICAgLz5cclxuICAgIDwvZGl2PlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFncm91cHNFbmFibGVkXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ1c2Vyc0xpc3QgfCBzZWFyY2ggOiBzZWFyY2ggYXMgdXNlcmxpc3RcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ3JvdXBzTGlzdCB8IHNlYXJjaCA6IHNlYXJjaCBhcyBncm91cGxpc3RcIj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJib2R5LXRvcFwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgKHVzZXJsaXN0Py5sZW5ndGggPiAwIHx8XHJcbiAgICAgICAgICAgICAgICAodXNlcmxpc3Q/Lmxlbmd0aCA+IDAgJiYgZ3JvdXBsaXN0Py5sZW5ndGggPiAwKSkgJiZcclxuICAgICAgICAgICAgICBzZWFyY2g/LnRyaW0oKT8ubGVuZ3RoID09PSAwXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxhcHAtY3MtY2hlY2tib3hcclxuICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgKG9wZW5lZEZyb20gPT09ICdSSVNLX1RSRUFUTUVOVCcgJiYgdXNlcnNMaXN0Py5sZW5ndGggPCAxOSkgfHxcclxuICAgICAgICAgICAgICAgIG9wZW5lZEZyb20gIT09ICdSSVNLX1RSRUFUTUVOVCdcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIFtuZ1ZhbHVlXT1cImNoZWNrU2VsZWN0QWxsKClcIlxyXG4gICAgICAgICAgICAgIChuZ1ZhbHVlQ2hhbmdlKT1cInNlbGVjdEFsbCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzdHJvbmc+XHJcbiAgICAgICAgICAgICAgICB7eyBjaGVja1NlbGVjdEFsbCgpID8gXCJEZXNlbGVjdCBBbGxcIiA6IFwiU2VsZWN0IEFsbFwiIH19XHJcbiAgICAgICAgICAgICAgPC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDwvYXBwLWNzLWNoZWNrYm94PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwibGlzdC1ibG9ja1wiXHJcbiAgICAgICAgICAgIFtjbGFzcy53aXRob3V0LWdyb3VwXT1cIiFncm91cHNFbmFibGVkXCJcclxuICAgICAgICAgICAgW2NsYXNzLndpdGgtbm8tZGF0YV09XCJcclxuICAgICAgICAgICAgICB1c2VybGlzdD8ubGVuZ3RoID09PSAwICYmIGdyb3VwbGlzdD8ubGVuZ3RoID09PSAwICYmICFsb2FkZXJcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiZ3JvdXAtdXNlci1saXN0XCIgKm5nSWY9XCJncm91cGxpc3Q/Lmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBncm91cCBvZiBncm91cGxpc3RcIj5cclxuICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cIiFoaWRlR3JvdXAoZ3JvdXAudXNlcklkcylcIj5cclxuICAgICAgICAgICAgICAgICAgPGFwcC1jcy1jaGVja2JveFxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1ZhbHVlXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2hlY2tHcm91cExpc3QoZ3JvdXAudXNlcklkcykgJiZcclxuICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLnVzZXJJZHM/Lmxlbmd0aCAhPT0gMFxyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG5nVmFsdWVDaGFuZ2UpPVwic2VsZWN0R3JvdXAoZ3JvdXAudXNlcklkcywgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKG9wZW5lZEZyb20gPT09ICdSSVNLX1RSRUFUTUVOVCcgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRVc2Vycz8ubGVuZ3RoICsgZ3JvdXAudXNlcklkcz8ubGVuZ3RoID4gMTkgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgIWNoZWNrR3JvdXBMaXN0KGdyb3VwLnVzZXJJZHMpKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgZ3JvdXAudXNlcklkcz8ubGVuZ3RoID09PSAwXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uQ2hlY2soXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5lZEZyb20gPT09ICdSSVNLX1RSRUFUTUVOVCcgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFVzZXJzPy5sZW5ndGggKyBncm91cC51c2VySWRzPy5sZW5ndGggPiAxOSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICFjaGVja0dyb3VwTGlzdChncm91cC51c2VySWRzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPnt7IGdyb3VwLmdyb3VwTmFtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgfX08c3BhbiBjbGFzcz1cImNvdW50ZXJcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cC51c2VySWRzPy5sZW5ndGggPiAxXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBncm91cC51c2VySWRzPy5sZW5ndGggKyBcIiBVU0VSU1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBncm91cC51c2VySWRzPy5sZW5ndGggKyBcIiBVU0VSXCJcclxuICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPjwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPC9hcHAtY3MtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJncm91cC11c2VyLWxpc3RcIiAqbmdJZj1cInVzZXJsaXN0Py5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgdXNlciBvZiB1c2VybGlzdFwiXHJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcclxuICAgICAgICAgICAgICAgICAgdXNlclxyXG4gICAgICAgICAgICAgICAgICAgIHwgdG9vbHRpcE1lc3NhZ2VcclxuICAgICAgICAgICAgICAgICAgICAgIDogZnJvbVJlc3BvbnNpYmlsaXR5XHJcbiAgICAgICAgICAgICAgICAgICAgICA6IHJldmlld2VySWRzXHJcbiAgICAgICAgICAgICAgICAgICAgICA6IG92ZXJzZWVySWRzXHJcbiAgICAgICAgICAgICAgICAgICAgICA6IGFzc2lnbm9ySWRcclxuICAgICAgICAgICAgICAgICAgICAgIDogW11cclxuICAgICAgICAgICAgICAgICAgICAgIDogJ215X21lbWJlcl9pZCdcclxuICAgICAgICAgICAgICAgICAgICAgIDogKG9wZW5lZEZyb20gPT09ICdSSVNLX1RSRUFUTUVOVCcgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFVzZXJzPy5sZW5ndGggPT09IDE5ICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIXNlbGVjdGVkSWRzPy5pbmNsdWRlcyh1c2VyW3VzZXJJZEtleV0pKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkSWQ/LmluY2x1ZGVzKHVzZXJbdXNlcklkS2V5XSlcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGFwcC1jcy1jaGVja2JveFxyXG4gICAgICAgICAgICAgICAgICBbbmdWYWx1ZV09XCJzZWxlY3RlZElkcz8uaW5jbHVkZXModXNlclt1c2VySWRLZXldKVwiXHJcbiAgICAgICAgICAgICAgICAgIChuZ1ZhbHVlQ2hhbmdlKT1cInNlbGVjdFVzZXIodXNlclt1c2VySWRLZXldLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIChvcGVuZWRGcm9tID09PSAnUklTS19UUkVBVE1FTlQnICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFVzZXJzPy5sZW5ndGggPT09IDE5ICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAhc2VsZWN0ZWRJZHM/LmluY2x1ZGVzKHVzZXJbdXNlcklkS2V5XSkpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWRJZD8uaW5jbHVkZXModXNlclt1c2VySWRLZXldKVxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbkNoZWNrKFxyXG4gICAgICAgICAgICAgICAgICAgICAgb3BlbmVkRnJvbSA9PT0gJ1JJU0tfVFJFQVRNRU5UJyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFVzZXJzPy5sZW5ndGggPT09IDE5ICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICFzZWxlY3RlZElkcz8uaW5jbHVkZXModXNlclt1c2VySWRLZXldKVxyXG4gICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuYW1lXCI+e3sgdXNlci5lbXBsb3llZV9uYW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9hcHAtY3MtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPGFwcC1uby1kYXRhXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgIHVzZXJsaXN0Py5sZW5ndGggPT09IDAgJiYgZ3JvdXBsaXN0Py5sZW5ndGggPT09IDAgJiYgIWxvYWRlclxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgW25vRGF0YUltYWdlXT1cIlxyXG4gICAgICAgICAgICAgICAgJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9zZWFyY2gtZGF0YS5zdmcnXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBbbm9EYXRhVGV4dF09XCInTm8gVXNlcnMgRm91bmQnXCJcclxuICAgICAgICAgICAgPjwvYXBwLW5vLWRhdGE+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudFRhYiA9PT0gJ1VTRVInICYmIGdyb3Vwc0VuYWJsZWQgJiYgIWxvYWRlclwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidXNlcnNMaXN0IHwgc2VhcmNoIDogc2VhcmNoIGFzIHVzZXJsaXN0XCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJib2R5LXRvcFwiXHJcbiAgICAgICAgICAqbmdJZj1cInVzZXJsaXN0Py5sZW5ndGggPiAwICYmIHNlYXJjaD8udHJpbSgpPy5sZW5ndGggPT09IDBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxhcHAtY3MtY2hlY2tib3hcclxuICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAob3BlbmVkRnJvbSA9PT0gJ1JJU0tfVFJFQVRNRU5UJyAmJiB1c2Vyc0xpc3Q/Lmxlbmd0aCA8IDE5KSB8fFxyXG4gICAgICAgICAgICAgIG9wZW5lZEZyb20gIT09ICdSSVNLX1RSRUFUTUVOVCdcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgW25nVmFsdWVdPVwiY2hlY2tTZWxlY3RBbGwoKVwiXHJcbiAgICAgICAgICAgIChuZ1ZhbHVlQ2hhbmdlKT1cInNlbGVjdEFsbCgkZXZlbnQpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPHN0cm9uZz5cclxuICAgICAgICAgICAgICB7eyBjaGVja1NlbGVjdEFsbCgpID8gXCJEZXNlbGVjdCBBbGxcIiA6IFwiU2VsZWN0IEFsbFwiIH19XHJcbiAgICAgICAgICAgIDwvc3Ryb25nPlxyXG4gICAgICAgICAgPC9hcHAtY3MtY2hlY2tib3g+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwibGlzdC1ibG9ja1wiXHJcbiAgICAgICAgICBbY2xhc3Mud2l0aC1uby1kYXRhXT1cInVzZXJsaXN0Py5sZW5ndGggPT09IDAgJiYgIWxvYWRlclwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHVsIGNsYXNzPVwiZ3JvdXAtdXNlci1saXN0XCIgKm5nSWY9XCJ1c2VybGlzdD8ubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgdXNlciBvZiB1c2VybGlzdFwiXHJcbiAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXHJcbiAgICAgICAgICAgICAgICB1c2VyXHJcbiAgICAgICAgICAgICAgICAgIHwgdG9vbHRpcE1lc3NhZ2VcclxuICAgICAgICAgICAgICAgICAgICA6IGZyb21SZXNwb25zaWJpbGl0eVxyXG4gICAgICAgICAgICAgICAgICAgIDogcmV2aWV3ZXJJZHNcclxuICAgICAgICAgICAgICAgICAgICA6IG92ZXJzZWVySWRzXHJcbiAgICAgICAgICAgICAgICAgICAgOiBhc3NpZ25vcklkXHJcbiAgICAgICAgICAgICAgICAgICAgOiBbXVxyXG4gICAgICAgICAgICAgICAgICAgIDogJ215X21lbWJlcl9pZCdcclxuICAgICAgICAgICAgICAgICAgICA6IChvcGVuZWRGcm9tID09PSAnUklTS19UUkVBVE1FTlQnICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkVXNlcnM/Lmxlbmd0aCA9PT0gMTkgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgIXNlbGVjdGVkSWRzPy5pbmNsdWRlcyh1c2VyW3VzZXJJZEtleV0pKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZElkPy5pbmNsdWRlcyh1c2VyW3VzZXJJZEtleV0pXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxhcHAtY3MtY2hlY2tib3hcclxuICAgICAgICAgICAgICAgIFtuZ1ZhbHVlXT1cInNlbGVjdGVkSWRzPy5pbmNsdWRlcyh1c2VyW3VzZXJJZEtleV0pXCJcclxuICAgICAgICAgICAgICAgIChuZ1ZhbHVlQ2hhbmdlKT1cInNlbGVjdFVzZXIodXNlclt1c2VySWRLZXldLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJcclxuICAgICAgICAgICAgICAgICAgKG9wZW5lZEZyb20gPT09ICdSSVNLX1RSRUFUTUVOVCcgJiZcclxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFVzZXJzPy5sZW5ndGggPT09IDE5ICYmXHJcbiAgICAgICAgICAgICAgICAgICAgIXNlbGVjdGVkSWRzPy5pbmNsdWRlcyh1c2VyW3VzZXJJZEtleV0pKSB8fFxyXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZElkPy5pbmNsdWRlcyh1c2VyW3VzZXJJZEtleV0pXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uQ2hlY2soXHJcbiAgICAgICAgICAgICAgICAgICAgb3BlbmVkRnJvbSA9PT0gJ1JJU0tfVFJFQVRNRU5UJyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRVc2Vycz8ubGVuZ3RoID09PSAxOSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgIXNlbGVjdGVkSWRzPy5pbmNsdWRlcyh1c2VyW3VzZXJJZEtleV0pXHJcbiAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuYW1lXCI+e3sgdXNlci5lbXBsb3llZV9uYW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvYXBwLWNzLWNoZWNrYm94PlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgPC91bD5cclxuICAgICAgICAgIDxhcHAtbm8tZGF0YVxyXG4gICAgICAgICAgICAqbmdJZj1cInVzZXJsaXN0Py5sZW5ndGggPT09IDAgJiYgIWxvYWRlclwiXHJcbiAgICAgICAgICAgIFtub0RhdGFJbWFnZV09XCJcclxuICAgICAgICAgICAgICAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3NlYXJjaC1kYXRhLnN2ZydcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgW25vRGF0YVRleHRdPVwiJ05vIFVzZXJzIEZvdW5kJ1wiXHJcbiAgICAgICAgICA+PC9hcHAtbm8tZGF0YT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50VGFiID09PSAnR1JPVVAnICYmIGdyb3Vwc0VuYWJsZWQgJiYgIWxvYWRlclwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXNzaWduZWVHcm91cHNMaXN0IHwgc2VhcmNoIDogc2VhcmNoIGFzIGdyb3VwbGlzdFwiPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwiYm9keS10b3BcIlxyXG4gICAgICAgICAgKm5nSWY9XCJncm91cGxpc3Q/Lmxlbmd0aCA+IDAgJiYgc2VhcmNoPy50cmltKCk/Lmxlbmd0aCA9PT0gMFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGFwcC1jcy1jaGVja2JveFxyXG4gICAgICAgICAgICBbbmdWYWx1ZV09XCJjaGVja3NlbGVjdEFsbGdyb3VwcygpXCJcclxuICAgICAgICAgICAgKG5nVmFsdWVDaGFuZ2UpPVwic2VsZWN0QWxsR3JvdXBzKCRldmVudClcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3Ryb25nPlxyXG4gICAgICAgICAgICAgIHt7IGNoZWNrc2VsZWN0QWxsZ3JvdXBzKCkgPyBcIkRlc2VsZWN0IEFsbFwiIDogXCJTZWxlY3QgQWxsXCIgfX1cclxuICAgICAgICAgICAgPC9zdHJvbmc+XHJcbiAgICAgICAgICA8L2FwcC1jcy1jaGVja2JveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImxpc3QtYmxvY2tcIlxyXG4gICAgICAgICAgW2NsYXNzLndpdGgtbm8tZGF0YV09XCJncm91cGxpc3Q/Lmxlbmd0aCA9PT0gMCAmJiAhbG9hZGVyXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8dWwgY2xhc3M9XCJncm91cC11c2VyLWxpc3RcIiAqbmdJZj1cImdyb3VwbGlzdD8ubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgZ3JvdXBsaXN0OyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8YXBwLWNzLWNoZWNrYm94XHJcbiAgICAgICAgICAgICAgICAgIFtuZ1ZhbHVlXT1cInNlbGVjdGVkR3JvdXBJZHM/LmluY2x1ZGVzKGdyb3VwW2dyb3VwSWRLZXldKVwiXHJcbiAgICAgICAgICAgICAgICAgIChuZ1ZhbHVlQ2hhbmdlKT1cInNlbGVjdEdyb3VwRWxlbWVudChncm91cCwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJcclxuICAgICAgICAgICAgICAgICAgICBvcGVuZWRGcm9tID09PSAnUklTS19UUkVBVE1FTlQnICYmXHJcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXAubWVtYmVyX2lkcz8ubGVuZ3RoID4gMTkgJiZcclxuICAgICAgICAgICAgICAgICAgICAhY2hlY2tHcm91cExpc3QoZ3JvdXApXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uQ2hlY2soXHJcbiAgICAgICAgICAgICAgICAgICAgICBvcGVuZWRGcm9tID09PSAnUklTS19UUkVBVE1FTlQnICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLm1lbWJlcl9pZHM/Lmxlbmd0aCA+IDE5ICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICFjaGVja0dyb3VwTGlzdChncm91cClcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmFtZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZ3JvdXAtbmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJncm91cD8uZ3JvdXBfbmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+e3sgZ3JvdXA/Lmdyb3VwX25hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb3VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgID57eyBncm91cFtcIm1lbWJlcl9jb3VudFwiXSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgZ3JvdXA/Lm1lbWJlcl9jb3VudCA+IDEgPyBcIlVTRVJTXCIgOiBcIlVTRVJcIiB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9hcHAtY3MtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgPGFwcC1uby1kYXRhXHJcbiAgICAgICAgICAgICpuZ0lmPVwiZ3JvdXBsaXN0Py5sZW5ndGggPT09IDAgJiYgIWxvYWRlclwiXHJcbiAgICAgICAgICAgIFtub0RhdGFJbWFnZV09XCJcclxuICAgICAgICAgICAgICAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3NlYXJjaC1kYXRhLnN2ZydcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgW25vRGF0YVRleHRdPVwiJ05vIEdyb3VwcyBGb3VuZCdcIlxyXG4gICAgICAgICAgPjwvYXBwLW5vLWRhdGE+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPGFwcC1mbG9hdGluZy1iYXJcclxuICAgICAgW3NlbGVjdGVkRGF0YV09XCJzZWxlY3RlZFVzZXJzXCJcclxuICAgICAgW3NlbGVjdGVkR3JvdXBzXT1cInNlbGVjdGVkR3JvdXBzXCJcclxuICAgICAgW2Rpc3BsYXlFbGVtZW50S2V5XT1cIidlbXBsb3llZV9uYW1lJ1wiXHJcbiAgICAgIFtlbGVtZW50SWRdPVwidXNlcklkS2V5XCJcclxuICAgICAgW3Npbmd1bGFyVGV4dF09XCInVXNlciBzZWxlY3RlZCdcIlxyXG4gICAgICBbcGx1cmFsVGV4dF09XCInVXNlcnMgc2VsZWN0ZWQnXCJcclxuICAgICAgKGNsb3NlRXZlbnQpPVwic2F2ZShzZWxlY3RlZElkcylcIlxyXG4gICAgICAoY2xvc2VMaXN0KT1cImNsb3NlKClcIlxyXG4gICAgICAoZGVsZXRlRXZlbnQpPVwiZGVsZXRlRXZlbnQoJGV2ZW50KVwiXHJcbiAgICAgIChkZWxldGVHcm91cEV2ZW50KT1cImRlbGV0ZUdyb3VwRXZlbnQoJGV2ZW50KVwiXHJcbiAgICAgIFtncm91cHNFbmFibGVkXT1cImdyb3Vwc0VuYWJsZWRcIlxyXG4gICAgICBbbm9uUmVtb3ZhYmxlVXNlcnNMaXN0XT1cImlzRGlzYWJsZWRTZWxlY3RlZCA/IGRpc2FibGVkSWQgOiBbXVwiXHJcbiAgICAgIFtpc0Rpc2FibGVkXT1cIlxyXG4gICAgICAgIGdyb3Vwc0xpc3Q/Lmxlbmd0aCArIHVzZXJzTGlzdD8ubGVuZ3RoID09PSAwIHx8XHJcbiAgICAgICAgKHNlbGVjdGVkVXNlcnM/Lmxlbmd0aCA9PT0gMCAmJiBzZWxlY3RlZEdyb3Vwcz8ubGVuZ3RoID09PSAwKVxyXG4gICAgICBcIlxyXG4gICAgPlxyXG4gICAgPC9hcHAtZmxvYXRpbmctYmFyPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
259
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtdXNlcnMtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2dyb3VwLXVzZXJzLWxpc3QvZ3JvdXAtdXNlcnMtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2dyb3VwLXVzZXJzLWxpc3QvZ3JvdXAtdXNlcnMtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxHQUdiLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDbkMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDckYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7Ozs7QUFpQm5FLE1BQU0sT0FBTyx1QkFBdUI7SUF5QmxDLFlBQW9CLFFBQXlCO1FBQXpCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBdkJwQyxjQUFTLEdBQUcs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LENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQztRQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUNuQixDQUFDOztvSEE1TlUsdUJBQXVCO3dHQUF2Qix1QkFBdUIsa3FCQ25DcEMsK2djQXNWQSxnOG5FRDdUSSxZQUFZLCtQQUNaLFdBQVcsOG1CQUNYLGFBQWEsOEJBQ2Isa0JBQWtCLDhCQUNsQixhQUFhLHFNQUNiLGlCQUFpQix5akJBQ2pCLFdBQVcsNEpBQ1gsZUFBZTsyRkFHTix1QkFBdUI7a0JBaEJuQyxTQUFTOytCQUNFLHNCQUFzQixjQUdwQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLGFBQWE7d0JBQ2Isa0JBQWtCO3dCQUNsQixhQUFhO3dCQUNiLGlCQUFpQjt3QkFDakIsV0FBVzt3QkFDWCxlQUFlO3FCQUNoQjtzR0FHUSxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNJLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNFLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBPbkNoYW5nZXMsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU25hY2tCYXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdWkta2l0L3NuYWNrLWJhci9zbmFjay1iYXIuc2VydmljZSc7XHJcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBQb3BvdmVyTW9kdWxlIH0gZnJvbSAnLi4vLi4vdWkta2l0L3BvcG92ZXIvcG9wb3Zlci5tb2R1bGUnO1xyXG5pbXBvcnQgeyBDbGlja091dHNpZGVNb2R1bGUgfSBmcm9tICcuLi8uLi91aS1raXQvY2xpY2stb3V0c2lkZS9jbGljay1vdXRzaWRlLm1vZHVsZSc7XHJcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICcuLi8uLi91aS1raXQvdG9vbHRpcC90b29sdGlwLm1vZHVsZSc7XHJcbmltcG9ydCB7IEZsb2F0aW5nQmFyTW9kdWxlIH0gZnJvbSAnLi4vZmxvYXRpbmctYmFyL2Zsb2F0aW5nLWJhci5tb2R1bGUnO1xyXG5pbXBvcnQgeyBQaXBlc01vZHVsZSB9IGZyb20gJy4uLy4uL3BpcGVzL3BpcGVzLm1vZHVsZSc7XHJcbmltcG9ydCB7IEZvcm1ncm91cE1vZHVsZSB9IGZyb20gJy4uLy4uL2Zvcm1ncm91cC9mb3JtZ3JvdXAubW9kdWxlJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZ3JvdXAtdXNlcnMtbGlzdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2dyb3VwLXVzZXJzLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2dyb3VwLXVzZXJzLWxpc3QuY29tcG9uZW50Lmxlc3MnLCAnLi4vLi4vZm9ybXMubGVzcyddLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBQb3BvdmVyTW9kdWxlLFxyXG4gICAgQ2xpY2tPdXRzaWRlTW9kdWxlLFxyXG4gICAgVG9vbHRpcE1vZHVsZSxcclxuICAgIEZsb2F0aW5nQmFyTW9kdWxlLFxyXG4gICAgUGlwZXNNb2R1bGUsXHJcbiAgICBGb3JtZ3JvdXBNb2R1bGUsXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEdyb3VwVXNlcnNMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gIEBJbnB1dCgpIGdyb3Vwc0VuYWJsZWQ6IGFueTtcclxuICBASW5wdXQoKSB1c2Vyc0xpc3QgPSBbXTtcclxuICBASW5wdXQoKSBncm91cHNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkVXNlcnMgPSBbXTtcclxuICBASW5wdXQoKSB1c2VySWRLZXkgPSAnJztcclxuICBASW5wdXQoKSBncm91cElkS2V5ID0gJyc7XHJcbiAgQElucHV0KCkgb3BlbmVkRnJvbSA9ICcnO1xyXG4gIEBPdXRwdXQoKSBzYXZlU2VsZWN0ZWRMaXN0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBjbG9zZVVzZXJzTGlzdCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBASW5wdXQoKSBzZWxlY3RlZEdyb3VwczogYW55W10gPSBbXTtcclxuICBASW5wdXQoKSBhc3NpZ25lZUdyb3Vwc0xpc3Q6IGFueVtdID0gW107XHJcbiAgQElucHV0KCkgZGlzYWJsZWRJZDogYW55W10gPSBbXTtcclxuICBASW5wdXQoKSBmcm9tUmVzcG9uc2liaWxpdHk6IGFueTtcclxuICBASW5wdXQoKSByZXZpZXdlcklkczogYW55W10gPSBbXTtcclxuICBASW5wdXQoKSBvdmVyc2VlcklkczogYW55W10gPSBbXTtcclxuICBASW5wdXQoKSBhc3NpZ25vcklkOiBhbnlbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGxvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGlzRGlzYWJsZWRTZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBzZWFyY2ggPSAnJztcclxuICBzZWxlY3RlZElkczogYW55W10gPSBbXTtcclxuICBhbmltYXRpb24gPSBmYWxzZTtcclxuICBzZWxlY3RlZEdyb3VwSWRzOiBhbnlbXSA9IFtdO1xyXG4gIHNlbGVjdGVkZ3JvdXBMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc25hY2tiYXI6IFNuYWNrQmFyU2VydmljZSkge31cclxuXHJcbiAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkSWRzID0gdGhpcy5zZWxlY3RlZFVzZXJzLm1hcCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGVsZVt0aGlzLnVzZXJJZEtleV0pIHtcclxuICAgICAgICByZXR1cm4gZWxlW3RoaXMudXNlcklkS2V5XTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkR3JvdXBJZHMgPSB0aGlzLnNlbGVjdGVkR3JvdXBzPy5tYXAoKGVsZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChlbGVbdGhpcy5ncm91cElkS2V5XSkge1xyXG4gICAgICAgIHJldHVybiBlbGVbdGhpcy5ncm91cElkS2V5XTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5hbmltYXRpb24gPSB0cnVlO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuYW5pbWF0aW9uID0gZmFsc2U7XHJcbiAgICB9LCAzMDApO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0VXNlcih1c2VyOiBhbnksIG1vZGU6IGFueSkge1xyXG4gICAgaWYgKG1vZGUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZElkcy5wdXNoKHVzZXIpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkSWRzLmZpbmRJbmRleChcclxuICAgICAgICAoZWxlbWVudDogYW55KSA9PiBlbGVtZW50ID09IHVzZXJcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZElkcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRMaXN0KCk7XHJcbiAgfVxyXG4gIGRlbGV0ZUV2ZW50KGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RlZElkcy5maW5kSW5kZXgoXHJcbiAgICAgIChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQgPT0gZXZlbnRbdGhpcy51c2VySWRLZXldXHJcbiAgICApO1xyXG4gICAgdGhpcy5zZWxlY3RlZElkcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgdGhpcy5zZXRMaXN0KCk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVHcm91cEV2ZW50KGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IGdyb3VwaW5kZXggPSB0aGlzLnNlbGVjdGVkR3JvdXBJZHMuZmluZEluZGV4KFxyXG4gICAgICAoZWxlbWVudDogYW55KSA9PiBlbGVtZW50ID09IGV2ZW50Wydncm91cF9pZCddXHJcbiAgICApO1xyXG4gICAgdGhpcy5zZWxlY3RlZEdyb3VwSWRzLnNwbGljZShncm91cGluZGV4LCAxKTtcclxuICAgIHRoaXMuc2V0Z3JvdXBMaXN0KCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RBbGwobW9kZTogYW55KSB7XHJcbiAgICBpZiAobW9kZSkge1xyXG4gICAgICBsZXQgbGlzdCA9IFsuLi50aGlzLnVzZXJzTGlzdF07XHJcbiAgICAgIGlmICghdGhpcy5pc0Rpc2FibGVkU2VsZWN0ZWQpIHtcclxuICAgICAgICBsaXN0ID0gbGlzdC5maWx0ZXIoXHJcbiAgICAgICAgICAodXNlcjogYW55KSA9PiAhdGhpcy5kaXNhYmxlZElkLmluY2x1ZGVzKHVzZXJbdGhpcy51c2VySWRLZXldKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJZHMgPSBbXTtcclxuICAgICAgbGlzdC5mb3JFYWNoKChlbGVtZW50KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZElkcy5wdXNoKGVsZW1lbnRbdGhpcy51c2VySWRLZXldKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoIXRoaXMuaXNEaXNhYmxlZFNlbGVjdGVkKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZElkcyA9IFtdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJZHMgPSB0aGlzLnNlbGVjdGVkSWRzLmZpbHRlcigoaWQ6IG51bWJlcikgPT5cclxuICAgICAgICAgIHRoaXMuZGlzYWJsZWRJZC5pbmNsdWRlcyhpZClcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldExpc3QoKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdEFsbEdyb3Vwcyhtb2RlOiBhbnkpIHtcclxuICAgIGlmIChtb2RlKSB7XHJcbiAgICAgIGNvbnN0IGdyb3VwbGlzdCA9IFsuLi50aGlzLmFzc2lnbmVlR3JvdXBzTGlzdF07XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRHcm91cElkcyA9IFtdO1xyXG4gICAgICBncm91cGxpc3QuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRHcm91cElkcy5wdXNoKGVsZW1lbnRbdGhpcy5ncm91cElkS2V5XSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkR3JvdXBzID0gZ3JvdXBsaXN0O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEdyb3VwSWRzID0gW107XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRHcm91cHMgPSBbXTtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0Z3JvdXBMaXN0KCk7XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0aW9uQ2hlY2soaXNDaGVja2VkOiBib29sZWFuKSB7XHJcbiAgICBpZiAoaXNDaGVja2VkKSB7XHJcbiAgICAgIHRoaXMuc25hY2tiYXIuc2hvdygnWW91IGNhbiBzZWxlY3QgYSBtYXhpbXVtIG9mIDE5IHVzZXJzLicsICdhbGVydCcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0TGlzdCgpIHtcclxuICAgIGNvbnN0IGRhdGE6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgdXNlckxpc3QgPSBjbG9uZURlZXAodGhpcy51c2Vyc0xpc3QpO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRJZHMgPSBjbG9uZURlZXAodGhpcy5zZWxlY3RlZElkcyk7XHJcbiAgICB1c2VyTGlzdC5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgaWYgKHNlbGVjdGVkSWRzLmluY2x1ZGVzKGVsZW1lbnRbdGhpcy51c2VySWRLZXldKSkge1xyXG4gICAgICAgIGRhdGEucHVzaChlbGVtZW50KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkVXNlcnMgPSBkYXRhO1xyXG4gIH1cclxuICBzZXRncm91cExpc3QoKSB7XHJcbiAgICBjb25zdCBkYXRhOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IGdyb3Vwc2xpc3QgPSBjbG9uZURlZXAodGhpcy5hc3NpZ25lZUdyb3Vwc0xpc3QpO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRHcm91cElkcyA9IGNsb25lRGVlcCh0aGlzLnNlbGVjdGVkR3JvdXBJZHMpO1xyXG4gICAgZ3JvdXBzbGlzdC5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgaWYgKHNlbGVjdGVkR3JvdXBJZHMuaW5jbHVkZXMoZWxlbWVudFt0aGlzLmdyb3VwSWRLZXldKSkge1xyXG4gICAgICAgIGRhdGEucHVzaChlbGVtZW50KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkR3JvdXBzID0gZGF0YTtcclxuICB9XHJcblxyXG4gIGNoZWNrU2VsZWN0QWxsKCkge1xyXG4gICAgY29uc3QgZGF0YSA9IHRoaXMudXNlcnNMaXN0LmV2ZXJ5KCh1c2VyOiBhbnkpID0+XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJZHMuaW5jbHVkZXModXNlclt0aGlzLnVzZXJJZEtleV0pXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfVxyXG5cclxuICBjaGVja3NlbGVjdEFsbGdyb3VwcygpIHtcclxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmFzc2lnbmVlR3JvdXBzTGlzdC5ldmVyeSgoZ3JvdXA6IGFueSkgPT5cclxuICAgICAgdGhpcy5zZWxlY3RlZEdyb3VwSWRzLmluY2x1ZGVzKGdyb3VwW3RoaXMuZ3JvdXBJZEtleV0pXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfVxyXG5cclxuICBzYXZlKHNlbGVjdGVkSWRzOiBhbnkpIHtcclxuICAgIGxldCBzZWxlY3RlZERhdGE7XHJcbiAgICBpZiAodGhpcy5hc3NpZ25lZUdyb3Vwc0xpc3QubGVuZ3RoKSB7XHJcbiAgICAgIHNlbGVjdGVkRGF0YSA9IHsgdXNlcnM6IHRoaXMuc2VsZWN0ZWRJZHMsIGdyb3VwczogdGhpcy5zZWxlY3RlZEdyb3VwSWRzIH07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzZWxlY3RlZERhdGEgPSBzZWxlY3RlZElkcztcclxuICAgIH1cclxuICAgIHRoaXMuc2F2ZVNlbGVjdGVkTGlzdC5lbWl0KHNlbGVjdGVkRGF0YSk7XHJcbiAgfVxyXG5cclxuICBjbG9zZSgpIHtcclxuICAgIHRoaXMuY2xvc2VVc2Vyc0xpc3QuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0R3JvdXAoZ3JvdXBJZHM6IGFueSwgbW9kZTogYW55KSB7XHJcbiAgICBpZiAobW9kZSkge1xyXG4gICAgICBncm91cElkcy5mb3JFYWNoKCh1c2VySWQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RlZElkcy5pbmNsdWRlcyh1c2VySWQpKSB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSWRzLnB1c2godXNlcklkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZ3JvdXBJZHMuZm9yRWFjaCgodXNlcklkOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VsZWN0ZWRJZHMuZmluZEluZGV4KFxyXG4gICAgICAgICAgKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudCA9PSB1c2VySWRcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJZHMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldExpc3QoKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdEdyb3VwRWxlbWVudChkYXRhOiBhbnksIG1vZGU6IGFueSkge1xyXG4gICAgaWYgKG1vZGUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZGdyb3VwTGlzdC5wdXNoKGRhdGEpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkR3JvdXBJZHMucHVzaChkYXRhW3RoaXMuZ3JvdXBJZEtleV0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkZ3JvdXBMaXN0LmZpbmRJbmRleChcclxuICAgICAgICAoZWxlOiB7IFt4OiBzdHJpbmddOiBhbnkgfSkgPT5cclxuICAgICAgICAgIGVsZVt0aGlzLmdyb3VwSWRLZXldID09PSBkYXRhW3RoaXMuZ3JvdXBJZEtleV1cclxuICAgICAgKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZGdyb3VwTGlzdC5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICBjb25zdCBpZEluZGV4ID0gdGhpcy5zZWxlY3RlZEdyb3VwSWRzLmZpbmRJbmRleChcclxuICAgICAgICAoZWxlKSA9PiBlbGUgPT09IGRhdGFbdGhpcy5ncm91cElkS2V5XVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkR3JvdXBJZHMuc3BsaWNlKGlkSW5kZXgsIDEpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRncm91cExpc3QoKTtcclxuICB9XHJcblxyXG4gIGNoZWNrR3JvdXBMaXN0KGdyb3VwSWRzOiBhbnkpIHtcclxuICAgIHJldHVybiBncm91cElkcy5ldmVyeSgoaWQ6IGFueSkgPT4gdGhpcy5zZWxlY3RlZElkcy5pbmNsdWRlcyhpZCkpO1xyXG4gIH1cclxuXHJcbiAgaGlkZUdyb3VwKGdyb3VwSWRzOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLnVzZXJzTGlzdC5ldmVyeShcclxuICAgICAgKHVzZXI6IGFueSkgPT4gIWdyb3VwSWRzLmluY2x1ZGVzKHVzZXJbdGhpcy51c2VySWRLZXldKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGN1cnJlbnRUYWIgPSAnVVNFUic7XHJcbiAgc3dpdGNoVGFiKHRhYjogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmN1cnJlbnRUYWIgPSB0YWI7XHJcbiAgICB0aGlzLnNlYXJjaCA9ICcnO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiYWRkLXJpc2stZ3JvdXAtdXNlci1saXN0XCIgW2NsYXNzLmFuaW1hdGVdPVwiYW5pbWF0aW9uXCI+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJhZGQtcmlzay1ncm91cC11c2VyLWxpc3QtaGVhZCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1wbC00IHZ4LXByLTRcIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xNCB2eC1mdy01MDAgdngtbGFiZWwtdHh0XCI+U2VsZWN0IFVzZXIocyk8L2Rpdj5cclxuICAgIDwhLS0gPGJ1dHRvbiBjbGFzcz1cImFkZC1yaXNrLWdyb3VwLXVzZXItbGlzdC1jbG9zZVwiIChjbGljayk9XCJjbG9zZSgpXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBkOzwvaT5cclxuICAgICAgICA8L2J1dHRvbj4gLS0+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImFkZC1yaXNrLWdyb3VwLXVzZXItbGlzdC1ib2R5XCI+XHJcbiAgICA8YXBwLWxvYWRlci1pbmxpbmUgKm5nSWY9XCJsb2FkZXJcIj48L2FwcC1sb2FkZXItaW5saW5lPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImFkZC1yaXNrLWdyb3VwLXVzZXItbGlzdC10YWIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1tdC0xIHZ4LW1iLTJcIlxyXG4gICAgICAqbmdJZj1cImdyb3Vwc0VuYWJsZWRcIlxyXG4gICAgPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgKGNsaWNrKT1cInN3aXRjaFRhYignVVNFUicpXCJcclxuICAgICAgICBjbGFzcz1cInRhYi1idG4gdngtZnMtMTEgdngtZnctNjAwIHZ4LXBhcmFncmFwaC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1wYi0yIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWxoLTRcIlxyXG4gICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiY3VycmVudFRhYiA9PT0gJ1VTRVInXCJcclxuICAgICAgPlxyXG4gICAgICAgIFVTRVJTXHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIGNsYXNzPVwidngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbWwtMiB2eC1saC00XCJcclxuICAgICAgICAgID57e1xyXG4gICAgICAgICAgICBzZWFyY2g/Lmxlbmd0aCAmJiBjdXJyZW50VGFiID09PSBcIlVTRVJcIlxyXG4gICAgICAgICAgICAgID8gKHVzZXJzTGlzdCB8IHNlYXJjaCA6IHNlYXJjaCk/Lmxlbmd0aFxyXG4gICAgICAgICAgICAgIDogdXNlcnNMaXN0Py5sZW5ndGhcclxuICAgICAgICAgIH19PC9zcGFuXHJcbiAgICAgICAgPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIChjbGljayk9XCJzd2l0Y2hUYWIoJ0dST1VQJylcIlxyXG4gICAgICAgIGNsYXNzPVwidGFiLWJ0biB2eC1mcy0xMSB2eC1mdy02MDAgdngtcGFyYWdyYXBoLXR4dCB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LXBiLTIgdngtbS0wIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtbGgtNFwiXHJcbiAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJjdXJyZW50VGFiID09PSAnR1JPVVAnXCJcclxuICAgICAgPlxyXG4gICAgICAgIFVTRVIgR1JPVVBTXHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIGNsYXNzPVwidngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbWwtMiB2eC1saC00XCJcclxuICAgICAgICAgID57e1xyXG4gICAgICAgICAgICBzZWFyY2g/Lmxlbmd0aCAmJiBjdXJyZW50VGFiID09PSBcIkdST1VQXCJcclxuICAgICAgICAgICAgICA/IChhc3NpZ25lZUdyb3Vwc0xpc3QgfCBzZWFyY2ggOiBzZWFyY2gpPy5sZW5ndGhcclxuICAgICAgICAgICAgICA6IGFzc2lnbmVlR3JvdXBzTGlzdD8ubGVuZ3RoXHJcbiAgICAgICAgICB9fTwvc3BhblxyXG4gICAgICAgID5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtYmxvY2sgdngtbWItMlwiPlxyXG4gICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkwYjs8L2k+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFwiXHJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJ7e1xyXG4gICAgICAgICAgY3VycmVudFRhYiA9PT0gJ1VTRVInID8gJ1NlYXJjaCBVc2VyKHMpJyA6ICdTZWFyY2ggVXNlciBHcm91cChzKSdcclxuICAgICAgICB9fSBcIlxyXG4gICAgICAvPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWdyb3Vwc0VuYWJsZWRcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInVzZXJzTGlzdCB8IHNlYXJjaCA6IHNlYXJjaCBhcyB1c2VybGlzdFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJncm91cHNMaXN0IHwgc2VhcmNoIDogc2VhcmNoIGFzIGdyb3VwbGlzdFwiPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImJvZHktdG9wXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAodXNlcmxpc3Q/Lmxlbmd0aCA+IDAgfHxcclxuICAgICAgICAgICAgICAgICh1c2VybGlzdD8ubGVuZ3RoID4gMCAmJiBncm91cGxpc3Q/Lmxlbmd0aCA+IDApKSAmJlxyXG4gICAgICAgICAgICAgIHNlYXJjaD8udHJpbSgpPy5sZW5ndGggPT09IDBcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGFwcC1jcy1jaGVja2JveFxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAob3BlbmVkRnJvbSA9PT0gJ1JJU0tfVFJFQVRNRU5UJyAmJiB1c2Vyc0xpc3Q/Lmxlbmd0aCA8IDE5KSB8fFxyXG4gICAgICAgICAgICAgICAgb3BlbmVkRnJvbSAhPT0gJ1JJU0tfVFJFQVRNRU5UJ1xyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgW25nVmFsdWVdPVwiY2hlY2tTZWxlY3RBbGwoKVwiXHJcbiAgICAgICAgICAgICAgKG5nVmFsdWVDaGFuZ2UpPVwic2VsZWN0QWxsKCRldmVudClcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHN0cm9uZz5cclxuICAgICAgICAgICAgICAgIHt7IGNoZWNrU2VsZWN0QWxsKCkgPyBcIkRlc2VsZWN0IEFsbFwiIDogXCJTZWxlY3QgQWxsXCIgfX1cclxuICAgICAgICAgICAgICA8L3N0cm9uZz5cclxuICAgICAgICAgICAgPC9hcHAtY3MtY2hlY2tib3g+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJsaXN0LWJsb2NrXCJcclxuICAgICAgICAgICAgW2NsYXNzLndpdGhvdXQtZ3JvdXBdPVwiIWdyb3Vwc0VuYWJsZWRcIlxyXG4gICAgICAgICAgICBbY2xhc3Mud2l0aC1uby1kYXRhXT1cIlxyXG4gICAgICAgICAgICAgIHVzZXJsaXN0Py5sZW5ndGggPT09IDAgJiYgZ3JvdXBsaXN0Py5sZW5ndGggPT09IDAgJiYgIWxvYWRlclxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJncm91cC11c2VyLWxpc3RcIiAqbmdJZj1cImdyb3VwbGlzdD8ubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGdyb3VwbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiIWhpZGVHcm91cChncm91cC51c2VySWRzKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8YXBwLWNzLWNoZWNrYm94XHJcbiAgICAgICAgICAgICAgICAgICAgW25nVmFsdWVdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjaGVja0dyb3VwTGlzdChncm91cC51c2VySWRzKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgZ3JvdXAudXNlcklkcz8ubGVuZ3RoICE9PSAwXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAobmdWYWx1ZUNoYW5nZSk9XCJzZWxlY3RHcm91cChncm91cC51c2VySWRzLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAob3BlbmVkRnJvbSA9PT0gJ1JJU0tfVFJFQVRNRU5UJyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFVzZXJzPy5sZW5ndGggKyBncm91cC51c2VySWRzPy5sZW5ndGggPiAxOSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAhY2hlY2tHcm91cExpc3QoZ3JvdXAudXNlcklkcykpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICBncm91cC51c2VySWRzPy5sZW5ndGggPT09IDBcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb25DaGVjayhcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3BlbmVkRnJvbSA9PT0gJ1JJU0tfVFJFQVRNRU5UJyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkVXNlcnM/Lmxlbmd0aCArIGdyb3VwLnVzZXJJZHM/Lmxlbmd0aCA+IDE5ICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIWNoZWNrR3JvdXBMaXN0KGdyb3VwLnVzZXJJZHMpXHJcbiAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+e3sgZ3JvdXAuZ3JvdXBOYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICB9fTxzcGFuIGNsYXNzPVwiY291bnRlclwiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLnVzZXJJZHM/Lmxlbmd0aCA+IDFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IGdyb3VwLnVzZXJJZHM/Lmxlbmd0aCArIFwiIFVTRVJTXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IGdyb3VwLnVzZXJJZHM/Lmxlbmd0aCArIFwiIFVTRVJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+PC9zcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2FwcC1jcy1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImdyb3VwLXVzZXItbGlzdFwiICpuZ0lmPVwidXNlcmxpc3Q/Lmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB1c2VyIG9mIHVzZXJsaXN0XCJcclxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxyXG4gICAgICAgICAgICAgICAgICB1c2VyXHJcbiAgICAgICAgICAgICAgICAgICAgfCB0b29sdGlwTWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgOiBmcm9tUmVzcG9uc2liaWxpdHlcclxuICAgICAgICAgICAgICAgICAgICAgIDogcmV2aWV3ZXJJZHNcclxuICAgICAgICAgICAgICAgICAgICAgIDogb3ZlcnNlZXJJZHNcclxuICAgICAgICAgICAgICAgICAgICAgIDogYXNzaWdub3JJZFxyXG4gICAgICAgICAgICAgICAgICAgICAgOiBbXVxyXG4gICAgICAgICAgICAgICAgICAgICAgOiAnbXlfbWVtYmVyX2lkJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgOiAob3BlbmVkRnJvbSA9PT0gJ1JJU0tfVFJFQVRNRU5UJyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkVXNlcnM/Lmxlbmd0aCA9PT0gMTkgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAhc2VsZWN0ZWRJZHM/LmluY2x1ZGVzKHVzZXJbdXNlcklkS2V5XSkpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWRJZD8uaW5jbHVkZXModXNlclt1c2VySWRLZXldKVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8YXBwLWNzLWNoZWNrYm94XHJcbiAgICAgICAgICAgICAgICAgIFtuZ1ZhbHVlXT1cInNlbGVjdGVkSWRzPy5pbmNsdWRlcyh1c2VyW3VzZXJJZEtleV0pXCJcclxuICAgICAgICAgICAgICAgICAgKG5nVmFsdWVDaGFuZ2UpPVwic2VsZWN0VXNlcih1c2VyW3VzZXJJZEtleV0sICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG9wZW5lZEZyb20gPT09ICdSSVNLX1RSRUFUTUVOVCcgJiZcclxuICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkVXNlcnM/Lmxlbmd0aCA9PT0gMTkgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICFzZWxlY3RlZElkcz8uaW5jbHVkZXModXNlclt1c2VySWRLZXldKSkgfHxcclxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZElkPy5pbmNsdWRlcyh1c2VyW3VzZXJJZEtleV0pXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uQ2hlY2soXHJcbiAgICAgICAgICAgICAgICAgICAgICBvcGVuZWRGcm9tID09PSAnUklTS19UUkVBVE1FTlQnICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkVXNlcnM/Lmxlbmd0aCA9PT0gMTkgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgIXNlbGVjdGVkSWRzPy5pbmNsdWRlcyh1c2VyW3VzZXJJZEtleV0pXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5hbWVcIj57eyB1c2VyLmVtcGxveWVlX25hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2FwcC1jcy1jaGVja2JveD5cclxuICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8YXBwLW5vLWRhdGFcclxuICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgdXNlcmxpc3Q/Lmxlbmd0aCA9PT0gMCAmJiBncm91cGxpc3Q/Lmxlbmd0aCA9PT0gMCAmJiAhbG9hZGVyXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBbbm9EYXRhSW1hZ2VdPVwiXHJcbiAgICAgICAgICAgICAgICAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3NlYXJjaC1kYXRhLnN2ZydcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIFtub0RhdGFUZXh0XT1cIidObyBVc2VycyBGb3VuZCdcIlxyXG4gICAgICAgICAgICA+PC9hcHAtbm8tZGF0YT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50VGFiID09PSAnVVNFUicgJiYgZ3JvdXBzRW5hYmxlZCAmJiAhbG9hZGVyXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ1c2Vyc0xpc3QgfCBzZWFyY2ggOiBzZWFyY2ggYXMgdXNlcmxpc3RcIj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImJvZHktdG9wXCJcclxuICAgICAgICAgICpuZ0lmPVwidXNlcmxpc3Q/Lmxlbmd0aCA+IDAgJiYgc2VhcmNoPy50cmltKCk/Lmxlbmd0aCA9PT0gMFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGFwcC1jcy1jaGVja2JveFxyXG4gICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgIChvcGVuZWRGcm9tID09PSAnUklTS19UUkVBVE1FTlQnICYmIHVzZXJzTGlzdD8ubGVuZ3RoIDwgMTkpIHx8XHJcbiAgICAgICAgICAgICAgb3BlbmVkRnJvbSAhPT0gJ1JJU0tfVFJFQVRNRU5UJ1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBbbmdWYWx1ZV09XCJjaGVja1NlbGVjdEFsbCgpXCJcclxuICAgICAgICAgICAgKG5nVmFsdWVDaGFuZ2UpPVwic2VsZWN0QWxsKCRldmVudClcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3Ryb25nPlxyXG4gICAgICAgICAgICAgIHt7IGNoZWNrU2VsZWN0QWxsKCkgPyBcIkRlc2VsZWN0IEFsbFwiIDogXCJTZWxlY3QgQWxsXCIgfX1cclxuICAgICAgICAgICAgPC9zdHJvbmc+XHJcbiAgICAgICAgICA8L2FwcC1jcy1jaGVja2JveD5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJsaXN0LWJsb2NrXCJcclxuICAgICAgICAgIFtjbGFzcy53aXRoLW5vLWRhdGFdPVwidXNlcmxpc3Q/Lmxlbmd0aCA9PT0gMCAmJiAhbG9hZGVyXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8dWwgY2xhc3M9XCJncm91cC11c2VyLWxpc3RcIiAqbmdJZj1cInVzZXJsaXN0Py5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB1c2VyIG9mIHVzZXJsaXN0XCJcclxuICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcclxuICAgICAgICAgICAgICAgIHVzZXJcclxuICAgICAgICAgICAgICAgICAgfCB0b29sdGlwTWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgICAgIDogZnJvbVJlc3BvbnNpYmlsaXR5XHJcbiAgICAgICAgICAgICAgICAgICAgOiByZXZpZXdlcklkc1xyXG4gICAgICAgICAgICAgICAgICAgIDogb3ZlcnNlZXJJZHNcclxuICAgICAgICAgICAgICAgICAgICA6IGFzc2lnbm9ySWRcclxuICAgICAgICAgICAgICAgICAgICA6IFtdXHJcbiAgICAgICAgICAgICAgICAgICAgOiAnbXlfbWVtYmVyX2lkJ1xyXG4gICAgICAgICAgICAgICAgICAgIDogKG9wZW5lZEZyb20gPT09ICdSSVNLX1RSRUFUTUVOVCcgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRVc2Vycz8ubGVuZ3RoID09PSAxOSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAhc2VsZWN0ZWRJZHM/LmluY2x1ZGVzKHVzZXJbdXNlcklkS2V5XSkpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkSWQ/LmluY2x1ZGVzKHVzZXJbdXNlcklkS2V5XSlcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGFwcC1jcy1jaGVja2JveFxyXG4gICAgICAgICAgICAgICAgW25nVmFsdWVdPVwic2VsZWN0ZWRJZHM/LmluY2x1ZGVzKHVzZXJbdXNlcklkS2V5XSlcIlxyXG4gICAgICAgICAgICAgICAgKG5nVmFsdWVDaGFuZ2UpPVwic2VsZWN0VXNlcih1c2VyW3VzZXJJZEtleV0sICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxyXG4gICAgICAgICAgICAgICAgICAob3BlbmVkRnJvbSA9PT0gJ1JJU0tfVFJFQVRNRU5UJyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkVXNlcnM/Lmxlbmd0aCA9PT0gMTkgJiZcclxuICAgICAgICAgICAgICAgICAgICAhc2VsZWN0ZWRJZHM/LmluY2x1ZGVzKHVzZXJbdXNlcklkS2V5XSkpIHx8XHJcbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkSWQ/LmluY2x1ZGVzKHVzZXJbdXNlcklkS2V5XSlcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb25DaGVjayhcclxuICAgICAgICAgICAgICAgICAgICBvcGVuZWRGcm9tID09PSAnUklTS19UUkVBVE1FTlQnICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFVzZXJzPy5sZW5ndGggPT09IDE5ICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAhc2VsZWN0ZWRJZHM/LmluY2x1ZGVzKHVzZXJbdXNlcklkS2V5XSlcclxuICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5hbWVcIj57eyB1c2VyLmVtcGxveWVlX25hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9hcHAtY3MtY2hlY2tib3g+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgPGFwcC1uby1kYXRhXHJcbiAgICAgICAgICAgICpuZ0lmPVwidXNlcmxpc3Q/Lmxlbmd0aCA9PT0gMCAmJiAhbG9hZGVyXCJcclxuICAgICAgICAgICAgW25vRGF0YUltYWdlXT1cIlxyXG4gICAgICAgICAgICAgICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvc2VhcmNoLWRhdGEuc3ZnJ1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBbbm9EYXRhVGV4dF09XCInTm8gVXNlcnMgRm91bmQnXCJcclxuICAgICAgICAgID48L2FwcC1uby1kYXRhPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRUYWIgPT09ICdHUk9VUCcgJiYgZ3JvdXBzRW5hYmxlZCAmJiAhbG9hZGVyXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhc3NpZ25lZUdyb3Vwc0xpc3QgfCBzZWFyY2ggOiBzZWFyY2ggYXMgZ3JvdXBsaXN0XCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJib2R5LXRvcFwiXHJcbiAgICAgICAgICAqbmdJZj1cImdyb3VwbGlzdD8ubGVuZ3RoID4gMCAmJiBzZWFyY2g/LnRyaW0oKT8ubGVuZ3RoID09PSAwXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8YXBwLWNzLWNoZWNrYm94XHJcbiAgICAgICAgICAgIFtuZ1ZhbHVlXT1cImNoZWNrc2VsZWN0QWxsZ3JvdXBzKClcIlxyXG4gICAgICAgICAgICAobmdWYWx1ZUNoYW5nZSk9XCJzZWxlY3RBbGxHcm91cHMoJGV2ZW50KVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxzdHJvbmc+XHJcbiAgICAgICAgICAgICAge3sgY2hlY2tzZWxlY3RBbGxncm91cHMoKSA/IFwiRGVzZWxlY3QgQWxsXCIgOiBcIlNlbGVjdCBBbGxcIiB9fVxyXG4gICAgICAgICAgICA8L3N0cm9uZz5cclxuICAgICAgICAgIDwvYXBwLWNzLWNoZWNrYm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwibGlzdC1ibG9ja1wiXHJcbiAgICAgICAgICBbY2xhc3Mud2l0aC1uby1kYXRhXT1cImdyb3VwbGlzdD8ubGVuZ3RoID09PSAwICYmICFsb2FkZXJcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDx1bCBjbGFzcz1cImdyb3VwLXVzZXItbGlzdFwiICpuZ0lmPVwiZ3JvdXBsaXN0Py5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBncm91cCBvZiBncm91cGxpc3Q7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgIDxhcHAtY3MtY2hlY2tib3hcclxuICAgICAgICAgICAgICAgICAgW25nVmFsdWVdPVwic2VsZWN0ZWRHcm91cElkcz8uaW5jbHVkZXMoZ3JvdXBbZ3JvdXBJZEtleV0pXCJcclxuICAgICAgICAgICAgICAgICAgKG5nVmFsdWVDaGFuZ2UpPVwic2VsZWN0R3JvdXBFbGVtZW50KGdyb3VwLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIG9wZW5lZEZyb20gPT09ICdSSVNLX1RSRUFUTUVOVCcgJiZcclxuICAgICAgICAgICAgICAgICAgICBncm91cC5tZW1iZXJfaWRzPy5sZW5ndGggPiAxOSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICFjaGVja0dyb3VwTGlzdChncm91cClcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb25DaGVjayhcclxuICAgICAgICAgICAgICAgICAgICAgIG9wZW5lZEZyb20gPT09ICdSSVNLX1RSRUFUTUVOVCcgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAubWVtYmVyX2lkcz8ubGVuZ3RoID4gMTkgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgIWNoZWNrR3JvdXBMaXN0KGdyb3VwKVxyXG4gICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuYW1lIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJncm91cC1uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImdyb3VwPy5ncm91cF9uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgID57eyBncm91cD8uZ3JvdXBfbmFtZSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvdW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPnt7IGdyb3VwW1wibWVtYmVyX2NvdW50XCJdIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyBncm91cD8ubWVtYmVyX2NvdW50ID4gMSA/IFwiVVNFUlNcIiA6IFwiVVNFUlwiIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2FwcC1jcy1jaGVja2JveD5cclxuICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICA8YXBwLW5vLWRhdGFcclxuICAgICAgICAgICAgKm5nSWY9XCJncm91cGxpc3Q/Lmxlbmd0aCA9PT0gMCAmJiAhbG9hZGVyXCJcclxuICAgICAgICAgICAgW25vRGF0YUltYWdlXT1cIlxyXG4gICAgICAgICAgICAgICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvc2VhcmNoLWRhdGEuc3ZnJ1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBbbm9EYXRhVGV4dF09XCInTm8gR3JvdXBzIEZvdW5kJ1wiXHJcbiAgICAgICAgICA+PC9hcHAtbm8tZGF0YT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8YXBwLWZsb2F0aW5nLWJhclxyXG4gICAgICBbc2VsZWN0ZWREYXRhXT1cInNlbGVjdGVkVXNlcnNcIlxyXG4gICAgICBbc2VsZWN0ZWRHcm91cHNdPVwic2VsZWN0ZWRHcm91cHNcIlxyXG4gICAgICBbZGlzcGxheUVsZW1lbnRLZXldPVwiJ2VtcGxveWVlX25hbWUnXCJcclxuICAgICAgW2VsZW1lbnRJZF09XCJ1c2VySWRLZXlcIlxyXG4gICAgICBbc2luZ3VsYXJUZXh0XT1cIidVc2VyIHNlbGVjdGVkJ1wiXHJcbiAgICAgIFtwbHVyYWxUZXh0XT1cIidVc2VycyBzZWxlY3RlZCdcIlxyXG4gICAgICAoY2xvc2VFdmVudCk9XCJzYXZlKHNlbGVjdGVkSWRzKVwiXHJcbiAgICAgIChjbG9zZUxpc3QpPVwiY2xvc2UoKVwiXHJcbiAgICAgIChkZWxldGVFdmVudCk9XCJkZWxldGVFdmVudCgkZXZlbnQpXCJcclxuICAgICAgKGRlbGV0ZUdyb3VwRXZlbnQpPVwiZGVsZXRlR3JvdXBFdmVudCgkZXZlbnQpXCJcclxuICAgICAgW2dyb3Vwc0VuYWJsZWRdPVwiZ3JvdXBzRW5hYmxlZFwiXHJcbiAgICAgIFtub25SZW1vdmFibGVVc2Vyc0xpc3RdPVwiaXNEaXNhYmxlZFNlbGVjdGVkID8gZGlzYWJsZWRJZCA6IFtdXCJcclxuICAgICAgW2lzRGlzYWJsZWRdPVwiXHJcbiAgICAgICAgZ3JvdXBzTGlzdD8ubGVuZ3RoICsgdXNlcnNMaXN0Py5sZW5ndGggPT09IDAgfHxcclxuICAgICAgICAoc2VsZWN0ZWRVc2Vycz8ubGVuZ3RoID09PSAwICYmIHNlbGVjdGVkR3JvdXBzPy5sZW5ndGggPT09IDApXHJcbiAgICAgIFwiXHJcbiAgICA+XHJcbiAgICA8L2FwcC1mbG9hdGluZy1iYXI+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|