tnx-shared 5.1.162 → 5.1.166
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/bundles/tnx-shared.umd.js +45 -40
- package/bundles/tnx-shared.umd.js.map +1 -1
- package/bundles/tnx-shared.umd.min.js +1 -1
- package/bundles/tnx-shared.umd.min.js.map +1 -1
- package/classes/base/component-base.d.ts +1 -1
- package/classes/base/component-base.d.ts.map +1 -1
- package/classes/base/data-form-base.d.ts.map +1 -1
- package/classes/base/data-list-base.d.ts.map +1 -1
- package/classes/public-function.d.ts +1 -1
- package/components/crud/crud-form/crud-form.component.d.ts +2 -2
- package/enums/common.d.ts +2 -1
- package/enums/common.d.ts.map +1 -1
- package/esm2015/classes/base/component-base.js +4 -3
- package/esm2015/classes/base/data-form-base.js +5 -1
- package/esm2015/classes/base/data-list-base.js +3 -2
- package/esm2015/components/chat/chat-box/chat-box.component.js +1 -1
- package/esm2015/components/chat/chat-send-message-box/chat-send-message-box.component.js +1 -1
- package/esm2015/components/tn-app-help/tn-app-help.component.js +2 -2
- package/esm2015/components/workflow/workflow-history-new/workflow-history-new.component.js +4 -5
- package/esm2015/enums/common.js +2 -1
- package/esm2015/models/grid-info.js +2 -1
- package/esm2015/services/base.service.js +4 -3
- package/esm2015/services/common.service.js +3 -2
- package/fesm2015/tnx-shared.js +22 -13
- package/fesm2015/tnx-shared.js.map +1 -1
- package/models/grid-info.d.ts +1 -0
- package/models/grid-info.d.ts.map +1 -1
- package/package.json +2 -2
- package/services/base.service.d.ts +1 -1
- package/services/base.service.d.ts.map +1 -1
- package/services/common.service.d.ts +1 -1
- package/services/common.service.d.ts.map +1 -1
- package/tnx-shared.metadata.json +1 -1
|
@@ -314,11 +314,10 @@ export class WorkflowHistoryNewComponent extends DataListBase {
|
|
|
314
314
|
if (lastMachine.type == EnumStateType.STOP)
|
|
315
315
|
return;
|
|
316
316
|
// Lấy ra các action mà người dùng được phép thực hiện
|
|
317
|
-
const actionAllows = (
|
|
318
|
-
if (!actionAllows)
|
|
319
|
-
return;
|
|
317
|
+
// const actionAllows = (await this.businessSetting.baseService.getActionAllow(this.item.id)).data;
|
|
318
|
+
// if (!actionAllows) return;
|
|
320
319
|
let index = 1;
|
|
321
|
-
machinesDataRaw.connections.filter(q => q.source == lastMachine.rawId
|
|
320
|
+
machinesDataRaw.connections.filter(q => q.source == lastMachine.rawId)
|
|
322
321
|
.forEach(conn => {
|
|
323
322
|
const targetMachine = machinesDataRaw.machines.find(q => q.id == conn.target);
|
|
324
323
|
if (targetMachine.code == lastMachine.code) {
|
|
@@ -511,4 +510,4 @@ WorkflowHistoryNewComponent.propDecorators = {
|
|
|
511
510
|
item: [{ type: Input }],
|
|
512
511
|
workflowSetting: [{ type: Input }]
|
|
513
512
|
};
|
|
514
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctaGlzdG9yeS1uZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvd29ya2Zsb3cvd29ya2Zsb3ctaGlzdG9yeS1uZXcvd29ya2Zsb3ctaGlzdG9yeS1uZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUU5SSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDakYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDcEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxhQUFhLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLHNCQUFzQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFbEgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFROUUsTUFBTSxPQUFPLDJCQUE0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TCxLQUFLO3dCQUNMLEtBQUs7bUJBQ0wsS0FBSzs4QkFDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2FwcC1jb250ZXh0L2NvbXBvbmVudC1jb250ZXh0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEYXRhTGlzdEJhc2UgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2Jhc2UvZGF0YS1saXN0LWJhc2UnO1xyXG5pbXBvcnQgeyBDb2x1bW5TY2hlbWFCYXNlLCBDcnVkTGlzdFNldHRpbmcsIERhdGFUeXBlLCBFbnVtRmlsZUxheW91dCwgSGVpZ2h0VHlwZSwgTW9kZWxTY2hlbWEsIE9wZXJhdG9yIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9mb3JtLXNjaGVtYSc7XHJcbmltcG9ydCB7IEdyaWRJbmZvIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dyaWQtaW5mbyc7XHJcbmltcG9ydCB7IERtQ2h1Y1Z1U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2RtLWNodWN2dS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXNlckdyb3VwUmVhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91c2VyLWdyb3VwLXJlYWwuc2VydmljZSc7XHJcbmltcG9ydCB7IENvQ2F1VG9DaHVjU2VydmljZSB9IGZyb20gJy4uLy4uL2NvY2F1dG9jaHVjL3NlcnZpY2VzL2NvY2F1dG9jaHVjLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGaWxlRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9maWxlLWV4cGxvcmVyL3NlcnZpY2VzL2ZpbGUtZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW51bVN0YXRlVHlwZSwgRW51bVdvcmtmbG93SGlzdG9yeVN0YXR1cyB9IGZyb20gJy4uLy4uL3N0YXRlbWFjaGluZXMvbW9kZWxzL2VudW1zJztcclxuaW1wb3J0IHsgSnNQbHVtYk9wdGlvbiB9IGZyb20gJy4uLy4uL3N0YXRlbWFjaGluZXMvbW9kZWxzL21vZGVscyc7XHJcbmltcG9ydCB7IEFjdGlvbkNob1lLaWVuQmFzZSwgQWN0aW9uVGh1SG9pQmFzZSwgQWN0aW9uVXBkYXRlTW9kZWwsIE1hQWN0aW9uQmF0RGF1UXV5VHJpbmggfSBmcm9tICcuLi9tb2RlbHMvY29uc3QnO1xyXG5pbXBvcnQgeyBXZlNjaGVtYSB9IGZyb20gJy4uL21vZGVscy9tb2RlbHMnO1xyXG5pbXBvcnQgeyBXb3JrZmxvd0hpc3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvd29ya2Zsb3ctaGlzdG9yeS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd3b3JrZmxvdy1oaXN0b3J5LW5ldycsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vd29ya2Zsb3ctaGlzdG9yeS1uZXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vd29ya2Zsb3ctaGlzdG9yeS1uZXcuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW0NvbXBvbmVudENvbnRleHRTZXJ2aWNlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dIaXN0b3J5TmV3Q29tcG9uZW50IGV4dGVuZHMgRGF0YUxpc3RCYXNlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgICBASW5wdXQoKSBidXNpbmVzc1NldHRpbmc6IENydWRMaXN0U2V0dGluZztcclxuICAgIC8vIEzDoCBmb3JtIGzhu4tjaCBz4butIGPhu6dhIHRhc2sgbmjGsG5nIG3hu58gdOG7qyBnaWFvIGRp4buHbiBj4bunYSDEkeG7kWkgdMaw4bujbmcgbcOgIHRhc2sgZ+G6r24gdsOgb1xyXG4gICAgLy8g4bueIGZvcm0gbsOgeSB0aMOsIGNo4buJIHhlbSBs4buLY2ggc+G7rSBjaOG7qSBrIGRjIGzDoG0gZ8OsIGjhur90XHJcbiAgICBASW5wdXQoKSBpc1JlbGF0aXZlRm9ybTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgdGFibGVOYW1lOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBpdGVtOiBhbnk7XHJcbiAgICBASW5wdXQoKSB3b3JrZmxvd1NldHRpbmc6IGFueTtcclxuXHJcbiAgICBsYXlvdXRGaWxlID0gRW51bUZpbGVMYXlvdXQ7XHJcbiAgICBlbnVtV29ya2Zsb3dIaXN0b3J5U3RhdHVzID0gRW51bVdvcmtmbG93SGlzdG9yeVN0YXR1cztcclxuICAgIGZpbGVEYXRhU2VydmljZTogRmlsZURhdGFTZXJ2aWNlO1xyXG4gICAgY3VycmVudFdvcmtmbG93OiB7XHJcbiAgICAgICAgdGl0bGU6IHN0cmluZyxcclxuICAgICAgICBkYXRhOiBXZlNjaGVtYVxyXG4gICAgfTtcclxuICAgIHdhaXRUb0RldGFjaDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcmVhZHlUb1JhdzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgd29ya2Zsb3dUaXRsZTogc3RyaW5nO1xyXG4gICAgbWFjaGluZXNEYXRhOiBhbnkgPSB7IG1hY2hpbmVzOiBbXSwgY29ubmVjdGlvbnM6IFtdIH07XHJcbiAgICBqc1BsdW1iT3B0aW9uOiBKc1BsdW1iT3B0aW9uID0gbmV3IEpzUGx1bWJPcHRpb24oe1xyXG4gICAgICAgIFN0cmFpZ2h0Q29ubmVjdGlvbjogdHJ1ZSxcclxuICAgICAgICBDZW50ZXJDb25uZWN0aW9uTGFiZWw6IHRydWVcclxuICAgIH0pO1xyXG4gICAgY3VycmVudENvbm5lY3Rpb246IGFueTtcclxuICAgIG1hY2hpbmVDb2RlS2V0VGh1Y3M6IHN0cmluZ1tdO1xyXG4gICAgZ2VuZXJhdGVkID0gZmFsc2U7XHJcbiAgICBkYXRhU291cmNlQWN0aW9uOiBhbnlbXSA9IFtdO1xyXG4gICAgc3RhdGVEaXN0YW5jZSA9IDM1MDtcclxuICAgIHRvcERpc3RhbmNlID0gODA7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJvdGVjdGVkIF9pbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHVibGljIF93b3JrZmxvd0hpc3RvcnlTZXJ2aWNlOiBXb3JrZmxvd0hpc3RvcnlTZXJ2aWNlLFxyXG4gICAgICAgIHByb3RlY3RlZCBfY29DYXVUb0NodWNTZXJ2aWNlOiBDb0NhdVRvQ2h1Y1NlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF91c2VyR3JvdXBTZXJ2aWNlOiBVc2VyR3JvdXBSZWFsU2VydmljZSxcclxuICAgICAgICBwcm90ZWN0ZWQgX2RtQ2h1Y1Z1U2VydmljZTogRG1DaHVjVnVTZXJ2aWNlLFxyXG4gICAgICAgIF9maWxlRGF0YVNlcnZpY2U6IEZpbGVEYXRhU2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoX2luamVjdG9yKTtcclxuICAgICAgICB0aGlzLmZpbGVEYXRhU2VydmljZSA9IF9maWxlRGF0YVNlcnZpY2U7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5sb2FkRGV0YWlsRnJvbVF1ZXJ5UGFyYW0gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuYmFzZVNlcnZpY2UgPSB0aGlzLl93b3JrZmxvd0hpc3RvcnlTZXJ2aWNlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5tdWx0aXBsZUNoZWNrV2hlbkNsaWNrUm93ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLnNldHRpbmdLZXkgPSAnX193b3JrZmxvdyc7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50V29ya2Zsb3cgPSB0aGlzLndvcmtmbG93U2V0dGluZy53b3JrZmxvd3MuZmluZChxID0+IHEuY29kZSA9PSB0aGlzLml0ZW0uX193b3JrZmxvd0NvZGUpO1xyXG5cclxuICAgICAgICB0aGlzLnNldHRpbmcudGl0bGUgPSAnJztcclxuICAgICAgICB0aGlzLnNldHRpbmcuaGVpZ2h0VHlwZSA9IEhlaWdodFR5cGUuZHluYW1pYztcclxuICAgICAgICB0aGlzLnNldHRpbmcuc2hvd0VkaXRMaW5rID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlbkJ1dHRvbnMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5oaWRkZW5DaGVja2JveCA9IHRydWU7XHJcbiAgICAgICAgY29uc3QgdXNlckN1cnJlbnQgPSB0aGlzLl91c2VyU2VydmljZS5nZXRDdXJyZW50VXNlcigpO1xyXG4gICAgICAgIGlmICh1c2VyQ3VycmVudC51c2VyTmFtZSAhPSAnYWRtaW4nIHx8IHRoaXMuaXNSZWxhdGl2ZUZvcm0pIHtcclxuICAgICAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlbkZ1bmN0aW9uQ29sdW1uID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLnRhYmxlTmFtZSkge1xyXG4gICAgICAgICAgICB0aGlzLnRhYmxlTmFtZSA9IHRoaXMuYnVzaW5lc3NTZXR0aW5nLmJhc2VTZXJ2aWNlLmVudGl0eU5hbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2VudGl0eVdvcmtmbG93SGlzdG9yeVNlcnZpY2Uuc2V0Q3VycmVudFNlcnZpY2VVcmkodGhpcy50YWJsZU5hbWUpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50V29ya2Zsb3cgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLm1vZGVsLnJlYWR5ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIC8vIEtp4buDbSB0cmEgbuG6v3UgYWNjb3VudCBsw6AgYWRtaW4gdGjDrCB0w6xtIGzhu4tjaCBz4butIGN14buRaSBjw7luZyBj4bunYSBi4bqjbiBnaGkgxJHhu4MgeMOhYyDEkeG7i25oIHdvcmtmbG93IGNvZGVcclxuICAgICAgICAgICAgLy8gUGjhu6VjIHbhu6Ugdmnhu4djIHJldmVydCBk4buvIGxp4buHdSBs4buXaVxyXG4gICAgICAgICAgICBpZiAodXNlckN1cnJlbnQudXNlck5hbWUgPT0gJ2FkbWluJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5maW5kTGFzdEhpc3RvcnlBbmRHZXREYXRhKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndvcmtmbG93VGl0bGUgPSAnS2jDtG5nIHjDoWMgxJHhu4tuaCc7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd1dhcm5pbmcoJ1F1eSB0csOsbmggY+G7p2EgYuG6o24gZ2hpIMSRw6MgYuG7iyB4w7NhJyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRXb3JrZmxvdyA9IHtcclxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy53b3JrZmxvd1RpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZXM6IFtdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uczogW11cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMud29ya2Zsb3dUaXRsZSA9IHRoaXMuY3VycmVudFdvcmtmbG93LnRpdGxlO1xyXG4gICAgICAgICAgICB0aGlzLm1hY2hpbmVzRGF0YSA9IHRoaXMuY3VycmVudFdvcmtmbG93LmRhdGE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5tYWNoaW5lQ29kZUtldFRodWNzID0gdGhpcy5jdXJyZW50V29ya2Zsb3cuZGF0YS5tYWNoaW5lcy5maWx0ZXIocSA9PiBxLnR5cGUgPT0gRW51bVN0YXRlVHlwZS5TVE9QKS5tYXAocSA9PiBxLmNvZGUpO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5tb2RlbFNjaGVtYXMgPSBbXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAndXNlcklkQ3JlYXRlZCcsIG5hbWU6ICdOZ8aw4budaSBn4butaScsIGZ1bGxOYW1lOiAnTmfGsOG7nWkgZ+G7rWknLCBkZXNjcmlwdGlvbjogJycgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAnYWN0aW9uQ29kZScsIG5hbWU6ICdUaGFvIHTDoWMnLCBmdWxsTmFtZTogJ1RoYW8gdMOhYycsIGRlc2NyaXB0aW9uOiAnJyB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICd0aW1lJywgbmFtZTogJ1Ro4budaSBnaWFuJywgZnVsbE5hbWU6ICdUaOG7nWkgZ2lhbicsIGRlc2NyaXB0aW9uOiAnJyB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICd1c2VySWRzJywgbmFtZTogJ05nxrDhu51pIG5o4bqtbicsIGZ1bGxOYW1lOiAnTmfGsOG7nWkgbmjhuq1uJywgZGVzY3JpcHRpb246ICcnIH0pLFxyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ3VzZXJWaWV3SWRzJywgbmFtZTogJ05nxrDhu51pIHRoZW8gZMO1aScsIGZ1bGxOYW1lOiAnTmfGsOG7nWkgdGhlbyBkw7VpJywgZGVzY3JpcHRpb246ICcnIH0pLFxyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ2RvblZpSWRzJywgbmFtZTogJ8SQxqFuIHbhu4sgbmjhuq1uJywgZnVsbE5hbWU6ICfEkMahbiB24buLIG5o4bqtbicsIGRlc2NyaXB0aW9uOiAnJyB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICdkb25WaVZpZXdJZHMnLCBuYW1lOiAnxJDGoW4gduG7iyB0aGVvIGTDtWknLCBmdWxsTmFtZTogJ8SQxqFuIHbhu4sgdGhlbyBkw7VpJywgZGVzY3JpcHRpb246ICcnIH0pLFxyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ2dyb3VwSWRzJywgbmFtZTogJ05ow7NtIG5nxrDhu51pIGTDuW5nIG5o4bqtbicsIGZ1bGxOYW1lOiAnTmjDs20gbmfGsOG7nWkgZMO5bmcgbmjhuq1uJywgZGVzY3JpcHRpb246ICcnIH0pLFxyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ2dyb3VwVmlld0lkcycsIG5hbWU6ICdOaMOzbSBuZ8aw4budaSBkw7luZyB0aGVvIGTDtWknLCBmdWxsTmFtZTogJ05ow7NtIG5nxrDhu51pIGTDuW5nIHRoZW8gZMO1aScsIGRlc2NyaXB0aW9uOiAnJyB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICdyb2xlSWRzJywgbmFtZTogJ0No4bupYyB24bulIG5o4bqtbicsIGZ1bGxOYW1lOiAnQ2jhu6ljIHbhu6Ugbmjhuq1uJywgZGVzY3JpcHRpb246ICcnIH0pLFxyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ3JvbGVWaWV3SWRzJywgbmFtZTogJ0No4bupYyB24bulIHRoZW8gZMO1aScsIGZ1bGxOYW1lOiAnQ2jhu6ljIHbhu6UgdGhlbyBkw7VpJywgZGVzY3JpcHRpb246ICcnIH0pLFxyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ25vdGUnLCBuYW1lOiAnw50ga2nhur9uJywgZnVsbE5hbWU6ICfDnSBraeG6v24nLCBkZXNjcmlwdGlvbjogJycgfSlcclxuICAgICAgICBdO1xyXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZUFjdGlvbiA9IHRoaXMuY3JlYXRlRGF0YXNvdXJjZUFjdGlvbigpO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5jb2xzID0gW1xyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ3VzZXJJZENyZWF0ZWQnLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxMiUnLFxyXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX3VzZXJTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgZGlzcGxheUZpZWxkOiAnZnVsbE5hbWVOZXcnXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2Z1bGxBY3Rpb25Db2RlJyxcclxuICAgICAgICAgICAgICAgIGZpZWxkRmlsdGVyOiAnYWN0aW9uQ29kZScsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0jDoG5oIMSR4buZbmcnLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICc5JScsXHJcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlOiB0aGlzLmRhdGFTb3VyY2VBY3Rpb24sXHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5RmllbGRJbkdyaWQ6ICdzaG9ydFRlbicsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZUZpZWxkOiAnY29kZSdcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAndXNlcklkcycsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzE1JScsXHJcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fdXNlclNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogJ2Z1bGxOYW1lTmV3JyxcclxuICAgICAgICAgICAgICAgIGZpZWxkUGx1czogJ3VzZXJOYW1lJyxcclxuICAgICAgICAgICAgICAgIHZpc2libGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgZm9yY2VHZXREYXRhOiB0cnVlXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ3VzZXJWaWV3SWRzJyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTUlJyxcclxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl91c2VyU2VydmljZSxcclxuICAgICAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgZGlzcGxheUZpZWxkOiAnZnVsbE5hbWVOZXcnLFxyXG4gICAgICAgICAgICAgICAgZmllbGRQbHVzOiAndXNlck5hbWUnLFxyXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBmb3JjZUdldERhdGE6IHRydWVcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnZG9uVmlJZHMnLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxNSUnLFxyXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX2NvQ2F1VG9DaHVjU2VydmljZSxcclxuICAgICAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBmb3JjZUdldERhdGE6IHRydWVcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnZG9uVmlWaWV3SWRzJyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTUlJyxcclxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl9jb0NhdVRvQ2h1Y1NlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHZpc2libGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgZm9yY2VHZXREYXRhOiB0cnVlXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2dyb3VwSWRzJyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTUlJyxcclxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl91c2VyR3JvdXBTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgZGlzcGxheUZpZWxkOiAnbmFtZScsXHJcbiAgICAgICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHZpc2libGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgZm9yY2VHZXREYXRhOiB0cnVlXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2dyb3VwVmlld0lkcycsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzE1JScsXHJcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fdXNlckdyb3VwU2VydmljZSxcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogJ25hbWUnLFxyXG4gICAgICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGZvcmNlR2V0RGF0YTogdHJ1ZVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdyb2xlSWRzJyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTUlJyxcclxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl9kbUNodWNWdVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHZpc2libGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgZm9yY2VHZXREYXRhOiB0cnVlXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ3JvbGVWaWV3SWRzJyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTUlJyxcclxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl9kbUNodWNWdVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHZpc2libGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgZm9yY2VHZXREYXRhOiB0cnVlXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ25vdGUnLFxyXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdub3RlJyxcclxuICAgICAgICAgICAgICAgIGZ1bGxUZXh0U2VhcmNoOiB0cnVlXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ3RpbWUnLFxyXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6IERhdGFUeXBlLmRhdGV0aW1lLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxNDBweCdcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAncmVjZWl2ZXInLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdOZ8aw4budaSBuaOG6rW4nLFxyXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdyZWNlaXZlcicsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzI1MHB4JyxcclxuICAgICAgICAgICAgICAgIHNvcnQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgYWxsb3dGaWx0ZXI6IGZhbHNlXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ3JlY2VpdmVyVmlldycsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogJ05nxrDhu51pIHRoZW8gZMO1aScsXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ3JlY2VpdmVyVmlldycsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzI1MHB4JyxcclxuICAgICAgICAgICAgICAgIHNvcnQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgYWxsb3dGaWx0ZXI6IGZhbHNlXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2ZpbGVEaW5oS2VtJyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0ZpbGUgxJHDrW5oIGvDqG0nKSxcclxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnZmlsZURpbmhLZW0nLFxyXG4gICAgICAgICAgICAgICAgYWxsb3dGaWx0ZXI6IGZhbHNlXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgXTtcclxuXHJcbiAgICAgICAgdGhpcy5tb2RlbC5yZWFkeSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5taW5pbWl6ZURhdGFzb3VyY2VBY3Rpb24oKTtcclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGZpbmRMYXN0SGlzdG9yeUFuZEdldERhdGEoKSB7XHJcbiAgICAgICAgY29uc3QgbGFzdEhpc3RvcnkgPSAoYXdhaXQgdGhpcy5fd29ya2Zsb3dIaXN0b3J5U2VydmljZS5nZXRMYXN0QnlJdGVtSWQodGhpcy5pdGVtLmlkKSkuZGF0YTtcclxuICAgICAgICBpZiAoIWxhc3RIaXN0b3J5KSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5jdXJyZW50V29ya2Zsb3cgPSB0aGlzLndvcmtmbG93U2V0dGluZy53b3JrZmxvd3MuZmluZChxID0+IHEuY29kZSA9PSBsYXN0SGlzdG9yeS53b3JrZmxvd0NvZGUpO1xyXG4gICAgICAgIHRoaXMuaXRlbS5fX3dvcmtmbG93Q29kZSA9IGxhc3RIaXN0b3J5LndvcmtmbG93Q29kZTtcclxuICAgICAgICAvLyB0aGlzLmFwcGVuZE1hY2hpbmVzQW5kQ29ubmVjdGlvbih0aGlzLmN1cnJlbnRXb3JrZmxvdy5kYXRhLCB0aGlzLm1hY2hpbmVzRGF0YSk7XHJcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFdvcmtmbG93ID09IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLndvcmtmbG93VGl0bGUgPSB0aGlzLmN1cnJlbnRXb3JrZmxvdy50aXRsZTtcclxuICAgICAgICB0aGlzLmluaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyByZWdlbmVyYXRlTWFjaGluZURhdGEoKSB7XHJcbiAgICAgICAgdGhpcy5yZWFkeVRvUmF3ID0gZmFsc2U7XHJcbiAgICAgICAgY29uc3QgbWFjaGluZXNEYXRhID0geyBtYWNoaW5lczogW10sIGNvbm5lY3Rpb25zOiBbXSwgZG9Ob3RBZGp1c3RMb2NhbHRpb246IHRydWUgfTtcclxuICAgICAgICBpZiAodGhpcy5tYWNoaW5lc0RhdGEgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLm1hY2hpbmVzRGF0YSA9IHsgbWFjaGluZXM6IFtdLCBjb25uZWN0aW9uczogW10gfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgb2JqVGVtcCA9IHsgc3RhcnQ6IDEwIH07XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMubW9kZWwuZGF0YVNvdXJjZS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgICAgICBjb25zdCBpdGVtSGlzdG9yeSA9IHRoaXMubW9kZWwuZGF0YVNvdXJjZVtpXTtcclxuICAgICAgICAgICAgaWYgKGl0ZW1IaXN0b3J5LnN0YXR1cyAhPSBFbnVtV29ya2Zsb3dIaXN0b3J5U3RhdHVzLklOX01BSU5fVEhSRUFEKSB7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbGV0IHNvdXJjZVN0YXRlLCB0YXJnZXRTdGF0ZTtcclxuICAgICAgICAgICAgdGhpcy5tYWNoaW5lc0RhdGEubWFjaGluZXMuZm9yRWFjaChtYWNoaW5lID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChtYWNoaW5lLmNvZGUgPT0gaXRlbUhpc3Rvcnkuc291cmNlU3RhdHVzQ29kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZVN0YXRlID0gbWFjaGluZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChtYWNoaW5lLmNvZGUgPT0gaXRlbUhpc3RvcnkudGFyZ2V0U3RhdHVzQ29kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldFN0YXRlID0gbWFjaGluZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlmIChzb3VyY2VTdGF0ZSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0U3RhdGUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxhc3RTdGF0ZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1hY2hpbmVzRGF0YS5tYWNoaW5lcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RTdGF0ZSA9IG1hY2hpbmVzRGF0YS5tYWNoaW5lc1ttYWNoaW5lc0RhdGEubWFjaGluZXMubGVuZ3RoIC0gMV07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBuZXdTb3VyY2VTdGF0ZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3RTdGF0ZSAmJiBsYXN0U3RhdGUuY29kZSA9PSBzb3VyY2VTdGF0ZS5jb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NvdXJjZVN0YXRlID0gbGFzdFN0YXRlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3U291cmNlU3RhdGUgPSB0aGlzLmNsb25lTWFjaGluZShzb3VyY2VTdGF0ZSwgb2JqVGVtcCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVzRGF0YS5tYWNoaW5lcy5wdXNoKG5ld1NvdXJjZVN0YXRlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3VGFyZ2V0U3RhdGUgPSB0aGlzLmNsb25lTWFjaGluZSh0YXJnZXRTdGF0ZSwgb2JqVGVtcCk7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFjaGluZXNEYXRhLm1hY2hpbmVzLnB1c2gobmV3VGFyZ2V0U3RhdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPSB0aGlzLm1hY2hpbmVzRGF0YS5jb25uZWN0aW9ucy5maW5kKHEgPT4gcS5zb3VyY2UgPT0gc291cmNlU3RhdGUuaWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgcS50YXJnZXQgPT0gdGFyZ2V0U3RhdGUuaWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgcS5jb2RlID09IGl0ZW1IaXN0b3J5LmFjdGlvbkNvZGVcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb25uZWN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVzRGF0YS5jb25uZWN0aW9ucy5wdXNoKHRoaXMuY2xvbmVDb25uZWN0aW9uKGNvbm5lY3Rpb24sIG5ld1NvdXJjZVN0YXRlLCBuZXdUYXJnZXRTdGF0ZSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICh0YXJnZXRTdGF0ZSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBtYWNoaW5lc0RhdGEubWFjaGluZXMucHVzaCh0aGlzLmNsb25lTWFjaGluZSh0YXJnZXRTdGF0ZSwgb2JqVGVtcCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChtYWNoaW5lc0RhdGEuY29ubmVjdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRDb25uZWN0aW9uID0gbWFjaGluZXNEYXRhLmNvbm5lY3Rpb25zLm1hcChxID0+ICh7IC4uLnEgfSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0aGlzLm1vZGVsLmRhdGFTb3VyY2UubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRDb25uZWN0aW9uID0gW1xyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldDogbWFjaGluZXNEYXRhLm1hY2hpbmVzWzBdLmlkXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIEtp4buDbSB0cmEgc3RhdGUgY3Xhu5FpLCBu4bq/dSBjaMawYSBwaOG6o2kgc3RhdGUga+G6v3QgdGjDumMgdGjDrCB24bq9IHRow6ptIGPDoWMgc3RhdGUgcGjDrWEgc2F1IMSR4buDIG5nxrDhu51pIGTDuW5nIGJp4bq/dCBjaOG6oXkgdGhlbyBoxrDhu5tuZyBuw6BvXHJcbiAgICAgICAgYXdhaXQgdGhpcy5hcHBlbmRTdGF0ZUFmdGVyTGFzdFN0YXRlKG1hY2hpbmVzRGF0YSwgdGhpcy5tYWNoaW5lc0RhdGEsIG9ialRlbXAuc3RhcnQpO1xyXG4gICAgICAgIHRoaXMubWFjaGluZXNEYXRhID0gbWFjaGluZXNEYXRhO1xyXG4gICAgICAgIHRoaXMud2FpdFRvRGV0YWNoID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnJlYWR5VG9SYXcgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGFwcGVuZFN0YXRlQWZ0ZXJMYXN0U3RhdGUobWFjaGluZXNEYXRhLCBtYWNoaW5lc0RhdGFSYXcsIGxlZnQpIHtcclxuICAgICAgICBpZiAobWFjaGluZXNEYXRhLm1hY2hpbmVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29uc3QgbGFzdE1hY2hpbmUgPSBtYWNoaW5lc0RhdGEubWFjaGluZXNbbWFjaGluZXNEYXRhLm1hY2hpbmVzLmxlbmd0aCAtIDFdO1xyXG4gICAgICAgICAgICBpZiAobGFzdE1hY2hpbmUudHlwZSA9PSBFbnVtU3RhdGVUeXBlLlNUT1ApIHJldHVybjtcclxuICAgICAgICAgICAgLy8gTOG6pXkgcmEgY8OhYyBhY3Rpb24gbcOgIG5nxrDhu51pIGTDuW5nIMSRxrDhu6NjIHBow6lwIHRo4buxYyBoaeG7h25cclxuICAgICAgICAgICAgY29uc3QgYWN0aW9uQWxsb3dzID0gKGF3YWl0IHRoaXMuYnVzaW5lc3NTZXR0aW5nLmJhc2VTZXJ2aWNlLmdldEFjdGlvbkFsbG93KHRoaXMuaXRlbS5pZCkpLmRhdGE7XHJcbiAgICAgICAgICAgIGlmICghYWN0aW9uQWxsb3dzKSByZXR1cm47XHJcbiAgICAgICAgICAgIGxldCBpbmRleCA9IDE7XHJcbiAgICAgICAgICAgIG1hY2hpbmVzRGF0YVJhdy5jb25uZWN0aW9ucy5maWx0ZXIocSA9PiBxLnNvdXJjZSA9PSBsYXN0TWFjaGluZS5yYXdJZCAmJiBhY3Rpb25BbGxvd3MuaW5kZXhPZihxLmNvZGUpID4gLTEpXHJcbiAgICAgICAgICAgICAgICAuZm9yRWFjaChjb25uID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRNYWNoaW5lID0gbWFjaGluZXNEYXRhUmF3Lm1hY2hpbmVzLmZpbmQocSA9PiBxLmlkID09IGNvbm4udGFyZ2V0KTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0TWFjaGluZS5jb2RlID09IGxhc3RNYWNoaW5lLmNvZGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29ubmVjdGlvbiA9IHRoaXMuY2xvbmVDb25uZWN0aW9uKGNvbm4sIGxhc3RNYWNoaW5lLCBsYXN0TWFjaGluZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uY29ubmVjdG9yID0gJ1N0YXRlTWFjaGluZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVzRGF0YS5jb25uZWN0aW9ucy5wdXNoKGNvbm5lY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3VGFyZ2V0TWFjaGluZSA9IHRoaXMuY2xvbmVNYWNoaW5lKHRhcmdldE1hY2hpbmUsIHt9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3VGFyZ2V0TWFjaGluZS5sb2NhdGlvbiA9IFtsZWZ0LCB0aGlzLnRvcERpc3RhbmNlICsgMTUwICogKGluZGV4IC0gMSldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmRleCsrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lc0RhdGEuY29ubmVjdGlvbnMucHVzaCh0aGlzLmNsb25lQ29ubmVjdGlvbihjb25uLCBsYXN0TWFjaGluZSwgbmV3VGFyZ2V0TWFjaGluZSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lc0RhdGEubWFjaGluZXMucHVzaChuZXdUYXJnZXRNYWNoaW5lKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY2xvbmVNYWNoaW5lKG1hY2hpbmU6IGFueSwgb2JqVGVtcCkge1xyXG4gICAgICAgIGNvbnN0IG5ld0lkID0gdGhpcy5fY29tbW9uU2VydmljZS5ndWlkKCk7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge1xyXG4gICAgICAgICAgICAuLi5tYWNoaW5lLFxyXG4gICAgICAgICAgICBsb2NhdGlvbjogW29ialRlbXAuc3RhcnQsIHRoaXMudG9wRGlzdGFuY2VdLFxyXG4gICAgICAgICAgICByYXdJZDogbWFjaGluZS5pZCxcclxuICAgICAgICAgICAgcmF3SWROZXc6IG5ld0lkLFxyXG4gICAgICAgICAgICBpZDogbmV3SWRcclxuICAgICAgICB9O1xyXG4gICAgICAgIG9ialRlbXAuc3RhcnQgKz0gdGhpcy5zdGF0ZURpc3RhbmNlO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgY2xvbmVDb25uZWN0aW9uKGNvbm5lY3Rpb246IGFueSwgc291cmNlU3RhdGU6IGFueSwgdGFyZ2V0U3RhdGU6IGFueSkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIC4uLmNvbm5lY3Rpb24sXHJcbiAgICAgICAgICAgIHNvdXJjZTogc291cmNlU3RhdGUuaWQsXHJcbiAgICAgICAgICAgIHRhcmdldDogdGFyZ2V0U3RhdGUuaWRcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIG1pbmltaXplRGF0YXNvdXJjZUFjdGlvbigpIHtcclxuICAgICAgICBjb25zdCBsc3RXb3JrZmxvd0hpc3RvcnkgPSAoYXdhaXQgdGhpcy5fd29ya2Zsb3dIaXN0b3J5U2VydmljZS5nZXRBbGwodGhpcy5nZXREZWZhdWx0RmlsdGVyKCksICdzb3VyY2VTdGF0dXNDb2RlLGFjdGlvbkNvZGUnKSkuZGF0YTtcclxuICAgICAgICBjb25zdCBkYXRhU291cmNlID0gdGhpcy5fd29ya2Zsb3dTZXR0aW5nU2VydmljZS5taW5pbWl6ZURhdGFzb3VyY2VBY3Rpb24odGhpcy5kYXRhU291cmNlQWN0aW9uLCBsc3RXb3JrZmxvd0hpc3RvcnkpO1xyXG4gICAgICAgIHRoaXMuY3J1ZExpc3Quc2V0RHJvcGRvd25EYXRhc291cmNlKCdmdWxsQWN0aW9uQ29kZScsIGRhdGFTb3VyY2UpO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZURhdGFzb3VyY2VBY3Rpb24oKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0OiBhbnlbXSA9IFtcclxuICAgICAgICAgICAgeyBjb2RlOiBNYUFjdGlvbkJhdERhdVF1eVRyaW5oLCB0ZW46ICdC4bqvdCDEkeG6p3UgcXV5IHRyw6xuaCcsIGJ1aWxkSW46IHRydWUgfVxyXG4gICAgICAgIF07XHJcbiAgICAgICAgcmVzdWx0LnB1c2goLi4udGhpcy5fd29ya2Zsb3dTZXR0aW5nU2VydmljZS5yZW5kZXJEYXRhU291cmNlQWN0aW9uV29ya2Zsb3codGhpcy5jdXJyZW50V29ya2Zsb3cuZGF0YSkpO1xyXG4gICAgICAgIHJlc3VsdC5wdXNoKFxyXG4gICAgICAgICAgICB7IGNvZGU6IEFjdGlvblVwZGF0ZU1vZGVsLCB0ZW46ICdDaOG7iW5oIHPhu61hJywgYnVpbGRJbjogdHJ1ZSB9LFxyXG4gICAgICAgICAgICB7IGNvZGU6IEFjdGlvbkNob1lLaWVuQmFzZSwgdGVuOiAnQ2hvIMO9IGtp4bq/bicsIGJ1aWxkSW46IHRydWUgfSxcclxuICAgICAgICAgICAgeyBjb2RlOiBBY3Rpb25UaHVIb2lCYXNlLCB0ZW46ICdUaHUgaOG7k2kgdGhhbyB0w6FjJywgYnVpbGRJbjogdHJ1ZSB9XHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXN1bHQuZmlsdGVyKHEgPT4gcS5idWlsZEluKS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICBpdGVtLnJhd0NvZGUgPSBpdGVtLmNvZGU7XHJcbiAgICAgICAgICAgIGl0ZW0uc2hvcnRUZW4gPSBpdGVtLnRlbjtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0RGVmYXVsdEZpbHRlcigpIHtcclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcigndGFibGVOYW1lJywgT3BlcmF0b3IuZXF1YWwsIHRoaXMudGFibGVOYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIoJ2l0ZW1JZCcsIE9wZXJhdG9yLmVxdWFsLCB0aGlzLml0ZW0uaWQpLFxyXG4gICAgICAgICAgICB0aGlzLm5ld0ZpbHRlcignd29ya2Zsb3dDb2RlJywgT3BlcmF0b3IuZXF1YWwsIHRoaXMuaXRlbS5fX3dvcmtmbG93Q29kZSlcclxuICAgICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIG1vZGlmeUdyaWRJbmZvKGdyaWRJbmZvPzogR3JpZEluZm8pIHtcclxuICAgICAgICBjb25zdCBmaWx0ZXJCeUFjdGlvbkNvZGUgPSBncmlkSW5mby5maWx0ZXJzLmZpbmQocSA9PiBxLmZpZWxkID09ICdhY3Rpb25Db2RlJyk7XHJcbiAgICAgICAgaWYgKGZpbHRlckJ5QWN0aW9uQ29kZSkge1xyXG4gICAgICAgICAgICBjb25zdCBhcnJWYWx1ZSA9IEpTT04ucGFyc2UoZmlsdGVyQnlBY3Rpb25Db2RlLnZhbHVlKTtcclxuICAgICAgICAgICAgY29uc3QgYXJyQWN0aW9uQ29kZSA9IHRoaXMuZGF0YVNvdXJjZUFjdGlvbi5maWx0ZXIocSA9PiBhcnJWYWx1ZS5zb21lKHggPT4geCA9PSBxLmNvZGUpKS5tYXAoeCA9PiB4LnJhd0NvZGUpO1xyXG4gICAgICAgICAgICBmaWx0ZXJCeUFjdGlvbkNvZGUudmFsdWUgPSBKU09OLnN0cmluZ2lmeShhcnJBY3Rpb25Db2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZ3JpZEluZm8uZmlsdGVycy51bnNoaWZ0KFxyXG4gICAgICAgICAgICAuLi50aGlzLmdldERlZmF1bHRGaWx0ZXIoKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGdyaWRJbmZvLnNvcnRzLnVuc2hpZnQodGhpcy5uZXdTb3J0KCdjcmVhdGVkJywgLTEpKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBiZWZvcmVSZW5kZXJEYXRhU291cmNlKGRhdGFTb3VyY2UpIHtcclxuICAgICAgICAvLyBEdXnhu4d0IHThu6tuZyBoaXN0b3J5IMSR4buDIGNo4buJIGhp4buDbiB0aOG7iyBsdeG7k25nIGhp4buHbiB04bqhaSBj4bunYSBxdXkgdHLDrG5oLiBrIGhp4buDbiB0aOG7iyBjw6FjIGLGsOG7m2MgdGjhu6thXHJcbiAgICAgICAgZGF0YVNvdXJjZS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICBpdGVtLmZ1bGxBY3Rpb25Db2RlID0gaXRlbS5hY3Rpb25Db2RlO1xyXG4gICAgICAgICAgICBpZiAoaXRlbS5hY3Rpb25Db2RlICE9IE1hQWN0aW9uQmF0RGF1UXV5VHJpbmhcclxuICAgICAgICAgICAgICAgICYmIGl0ZW0uYWN0aW9uQ29kZSAhPSBBY3Rpb25VcGRhdGVNb2RlbFxyXG4gICAgICAgICAgICAgICAgJiYgaXRlbS5hY3Rpb25Db2RlICE9IEFjdGlvbkNob1lLaWVuQmFzZVxyXG4gICAgICAgICAgICAgICAgJiYgaXRlbS5hY3Rpb25Db2RlICE9IEFjdGlvblRodUhvaUJhc2VcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtLmZ1bGxBY3Rpb25Db2RlID0gYCR7aXRlbS5zb3VyY2VTdGF0dXNDb2RlfV9fXyR7aXRlbS5hY3Rpb25Db2RlfWA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zcGxpdExpc3QoaXRlbSwgJ3VzZXJJZHMnKTtcclxuICAgICAgICAgICAgdGhpcy5zcGxpdExpc3QoaXRlbSwgJ3VzZXJWaWV3SWRzJyk7XHJcbiAgICAgICAgICAgIHRoaXMuc3BsaXRMaXN0KGl0ZW0sICdkb25WaUlkcycpO1xyXG4gICAgICAgICAgICB0aGlzLnNwbGl0TGlzdChpdGVtLCAnZG9uVmlWaWV3SWRzJyk7XHJcbiAgICAgICAgICAgIHRoaXMuc3BsaXRMaXN0KGl0ZW0sICdncm91cElkcycpO1xyXG4gICAgICAgICAgICB0aGlzLnNwbGl0TGlzdChpdGVtLCAnZ3JvdXBWaWV3SWRzJyk7XHJcbiAgICAgICAgICAgIHRoaXMuc3BsaXRMaXN0KGl0ZW0sICdyb2xlSWRzJyk7XHJcbiAgICAgICAgICAgIHRoaXMuc3BsaXRMaXN0KGl0ZW0sICdyb2xlVmlld0lkcycpO1xyXG4gICAgICAgICAgICBpZiAoIWl0ZW0uY29sU3BhbikgaXRlbS5jb2xTcGFuID0ge307XHJcbiAgICAgICAgICAgIGlmICghaXRlbS5oaWRkZW4pIGl0ZW0uaGlkZGVuID0ge307XHJcbiAgICAgICAgICAgIGlmIChpdGVtLnN0YXR1cyA9PSBFbnVtV29ya2Zsb3dIaXN0b3J5U3RhdHVzLk5PVF9JTl9NQUlOX1RIUkVBRCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uYWN0aW9uQ29kZSA9PSBBY3Rpb25VcGRhdGVNb2RlbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uY29sU3BhblsncmVjZWl2ZXInXSA9IDI7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5oaWRkZW5bJ3JlY2VpdmVyVmlldyddID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5qc29uTW9kZWxDaGFuZ2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5qc29uTW9kZWxDaGFuZ2UgPSBKU09OLnBhcnNlKGl0ZW0uanNvbk1vZGVsQ2hhbmdlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uanNvbk1vZGVsQ2hhbmdlID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXRlbS5hY3Rpb25Db2RlID09IEFjdGlvblRodUhvaUJhc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLmNsYXNzID0gJ3JlY2FsbGVkJztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChpdGVtLnN0YXR1cyA9PSBFbnVtV29ya2Zsb3dIaXN0b3J5U3RhdHVzLlJFQ0FMTEVEKSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtLmNsYXNzID0gJ3JlY2FsbGVkJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGFmdGVyR2V0RGF0YSgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuZ2VuZXJhdGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5yZWdlbmVyYXRlTWFjaGluZURhdGEoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzcGxpdExpc3QoaXRlbTogYW55LCBmaWVsZDogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKGl0ZW1bZmllbGRdKSB7XHJcbiAgICAgICAgICAgIGl0ZW1bZmllbGRdID0gaXRlbVtmaWVsZF0uc3BsaXQoJywnKS5maWx0ZXIocSA9PiAhIXEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaXRlbVtmaWVsZF0gPSBbXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlUm93U2VsZWN0KGV2dCkge1xyXG4gICAgICAgIHRoaXMuc2V0Q3VycmVudENvbm5lY3Rpb24odGhpcy5tb2RlbC5zZWxlY3RlZEl0ZW0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0Q3VycmVudENvbm5lY3Rpb24oaXRlbUhpc3RvcnkpIHtcclxuICAgICAgICBpZiAoIWl0ZW1IaXN0b3J5XHJcbiAgICAgICAgICAgIHx8IGl0ZW1IaXN0b3J5LnN0YXR1cyAhPSBFbnVtV29ya2Zsb3dIaXN0b3J5U3RhdHVzLklOX01BSU5fVEhSRUFEXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudENvbm5lY3Rpb24gPSB0aGlzLm1vZGVsLmRhdGFTb3VyY2UuZmlsdGVyKHEgPT4gcS5zdGF0dXMgPT0gRW51bVdvcmtmbG93SGlzdG9yeVN0YXR1cy5JTl9NQUlOX1RIUkVBRClcclxuICAgICAgICAgICAgICAgIC5tYXAocSA9PiB0aGlzLmdldENvbm5lY3Rpb25Gcm9tSGlzdG9yeShxKSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jdXJyZW50Q29ubmVjdGlvbiA9IFtcclxuICAgICAgICAgICAgdGhpcy5nZXRDb25uZWN0aW9uRnJvbUhpc3RvcnkoaXRlbUhpc3RvcnkpXHJcbiAgICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldENvbm5lY3Rpb25Gcm9tSGlzdG9yeShpdGVtSGlzdG9yeTogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgc291cmNlQ29kZTogaXRlbUhpc3Rvcnkuc291cmNlU3RhdHVzQ29kZSxcclxuICAgICAgICAgICAgdGFyZ2V0Q29kZTogaXRlbUhpc3RvcnkudGFyZ2V0U3RhdHVzQ29kZSxcclxuICAgICAgICAgICAgYWN0aW9uQ29kZTogaXRlbUhpc3RvcnkuYWN0aW9uQ29kZVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcm9sbGJhY2tCeUhpc3Rvcnkocm93RGF0YSkge1xyXG4gICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93Q29uZmlybSgnQuG6oW4gY8OzIGNo4bqvYyBjaOG6r24gbXXhu5FuIHRodSBo4buTaSB0aGFvIHTDoWMgduG7gSBs4buLY2ggc+G7rSDEkcOjIGNo4buNbicpXHJcbiAgICAgICAgICAgIC50aGVuKHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXJlcykgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgbGV0IG5hbWUgPSAnJztcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5idXNpbmVzc1NldHRpbmcuZGlzcGxheUZpZWxkID09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHRoaXMuaXRlbVs8c3RyaW5nPih0aGlzLmJ1c2luZXNzU2V0dGluZy5kaXNwbGF5RmllbGQpXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWUgPSAoPEZ1bmN0aW9uPih0aGlzLmJ1c2luZXNzU2V0dGluZy5kaXNwbGF5RmllbGQpKSh0aGlzLml0ZW0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5idXNpbmVzc1NldHRpbmcuYmFzZVNlcnZpY2Uucm9sbGJhY2tCeUhpc3RvcnkoXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtLmlkLCByb3dEYXRhLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgIFt0aGlzLmJ1c2luZXNzU2V0dGluZy5iYXNlU2VydmljZS5vYmplY3ROYW1lLCBuYW1lXVxyXG4gICAgICAgICAgICAgICAgKS50aGVuKHJlcyA9PiB0aGlzLmhhbmRsZVJlc3BvbnNlKHJlcywgJ1RodSBo4buTaSB0aGFvIHTDoWMgdGjDoG5oIGPDtG5nJywgZiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdHJpZ2dlclByb2Nlc3NEYXRhKCk7XHJcbiAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGFmdGVyUmVsb2FkZWQoKSB7XHJcbiAgICAgICAgdGhpcy5maWxlRGF0YVNlcnZpY2UuZ2V0RGF0YSgpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
513
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctaGlzdG9yeS1uZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvd29ya2Zsb3cvd29ya2Zsb3ctaGlzdG9yeS1uZXcvd29ya2Zsb3ctaGlzdG9yeS1uZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUU5SSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDakYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDcEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxhQUFhLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLHNCQUFzQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFbEgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFROUUsTUFBTSxPQUFPLDJCQUE0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Q0FBQyxDQUFDLENBQUM7YUFDakU7aUJBQ0k7Z0JBQ0QsSUFBSSxHQUFjLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDckU7WUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFDeEIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQ3RELENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsNkJBQTZCLEVBQUUsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3RFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQy9CLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDUixDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFSyxhQUFhOztZQUNmLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbkMsQ0FBQztLQUFBOzs7WUExZ0JKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsc0JBQXNCO2dCQUNoQyxxN0lBQW9EO2dCQUVwRCxTQUFTLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQzs7YUFDdkM7OztZQXBCa0MsUUFBUTtZQWFsQyxzQkFBc0I7WUFOdEIsa0JBQWtCO1lBRGxCLG9CQUFvQjtZQURwQixlQUFlO1lBR2YsZUFBZTs7OzhCQWVuQixLQUFLOzZCQUdMLEtBQUs7d0JBQ0wsS0FBSzttQkFDTCxLQUFLOzhCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXBwLWNvbnRleHQvY29tcG9uZW50LWNvbnRleHQuc2VydmljZSc7XHJcbmltcG9ydCB7IERhdGFMaXN0QmFzZSB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvYmFzZS9kYXRhLWxpc3QtYmFzZSc7XHJcbmltcG9ydCB7IENvbHVtblNjaGVtYUJhc2UsIENydWRMaXN0U2V0dGluZywgRGF0YVR5cGUsIEVudW1GaWxlTGF5b3V0LCBIZWlnaHRUeXBlLCBNb2RlbFNjaGVtYSwgT3BlcmF0b3IgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcclxuaW1wb3J0IHsgR3JpZEluZm8gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ3JpZC1pbmZvJztcclxuaW1wb3J0IHsgRG1DaHVjVnVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZG0tY2h1Y3Z1LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVc2VyR3JvdXBSZWFsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3VzZXItZ3JvdXAtcmVhbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29DYXVUb0NodWNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29jYXV0b2NodWMvc2VydmljZXMvY29jYXV0b2NodWMuc2VydmljZSc7XHJcbmltcG9ydCB7IEZpbGVEYXRhU2VydmljZSB9IGZyb20gJy4uLy4uL2ZpbGUtZXhwbG9yZXIvc2VydmljZXMvZmlsZS1kYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbnVtU3RhdGVUeXBlLCBFbnVtV29ya2Zsb3dIaXN0b3J5U3RhdHVzIH0gZnJvbSAnLi4vLi4vc3RhdGVtYWNoaW5lcy9tb2RlbHMvZW51bXMnO1xyXG5pbXBvcnQgeyBKc1BsdW1iT3B0aW9uIH0gZnJvbSAnLi4vLi4vc3RhdGVtYWNoaW5lcy9tb2RlbHMvbW9kZWxzJztcclxuaW1wb3J0IHsgQWN0aW9uQ2hvWUtpZW5CYXNlLCBBY3Rpb25UaHVIb2lCYXNlLCBBY3Rpb25VcGRhdGVNb2RlbCwgTWFBY3Rpb25CYXREYXVRdXlUcmluaCB9IGZyb20gJy4uL21vZGVscy9jb25zdCc7XHJcbmltcG9ydCB7IFdmU2NoZW1hIH0gZnJvbSAnLi4vbW9kZWxzL21vZGVscyc7XHJcbmltcG9ydCB7IFdvcmtmbG93SGlzdG9yeVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy93b3JrZmxvdy1oaXN0b3J5LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3dvcmtmbG93LWhpc3RvcnktbmV3JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi93b3JrZmxvdy1oaXN0b3J5LW5ldy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi93b3JrZmxvdy1oaXN0b3J5LW5ldy5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgcHJvdmlkZXJzOiBbQ29tcG9uZW50Q29udGV4dFNlcnZpY2VdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXb3JrZmxvd0hpc3RvcnlOZXdDb21wb25lbnQgZXh0ZW5kcyBEYXRhTGlzdEJhc2UgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG5cclxuICAgIEBJbnB1dCgpIGJ1c2luZXNzU2V0dGluZzogQ3J1ZExpc3RTZXR0aW5nO1xyXG4gICAgLy8gTMOgIGZvcm0gbOG7i2NoIHPhu60gY+G7p2EgdGFzayBuaMawbmcgbeG7nyB04burIGdpYW8gZGnhu4duIGPhu6dhIMSR4buRaSB0xrDhu6NuZyBtw6AgdGFzayBn4bqvbiB2w6BvXHJcbiAgICAvLyDhu54gZm9ybSBuw6B5IHRow6wgY2jhu4kgeGVtIGzhu4tjaCBz4butIGNo4bupIGsgZGMgbMOgbSBnw6wgaOG6v3RcclxuICAgIEBJbnB1dCgpIGlzUmVsYXRpdmVGb3JtOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSB0YWJsZU5hbWU6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGl0ZW06IGFueTtcclxuICAgIEBJbnB1dCgpIHdvcmtmbG93U2V0dGluZzogYW55O1xyXG5cclxuICAgIGxheW91dEZpbGUgPSBFbnVtRmlsZUxheW91dDtcclxuICAgIGVudW1Xb3JrZmxvd0hpc3RvcnlTdGF0dXMgPSBFbnVtV29ya2Zsb3dIaXN0b3J5U3RhdHVzO1xyXG4gICAgZmlsZURhdGFTZXJ2aWNlOiBGaWxlRGF0YVNlcnZpY2U7XHJcbiAgICBjdXJyZW50V29ya2Zsb3c6IHtcclxuICAgICAgICB0aXRsZTogc3RyaW5nLFxyXG4gICAgICAgIGRhdGE6IFdmU2NoZW1hXHJcbiAgICB9O1xyXG4gICAgd2FpdFRvRGV0YWNoOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICByZWFkeVRvUmF3OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICB3b3JrZmxvd1RpdGxlOiBzdHJpbmc7XHJcbiAgICBtYWNoaW5lc0RhdGE6IGFueSA9IHsgbWFjaGluZXM6IFtdLCBjb25uZWN0aW9uczogW10gfTtcclxuICAgIGpzUGx1bWJPcHRpb246IEpzUGx1bWJPcHRpb24gPSBuZXcgSnNQbHVtYk9wdGlvbih7XHJcbiAgICAgICAgU3RyYWlnaHRDb25uZWN0aW9uOiB0cnVlLFxyXG4gICAgICAgIENlbnRlckNvbm5lY3Rpb25MYWJlbDogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgICBjdXJyZW50Q29ubmVjdGlvbjogYW55O1xyXG4gICAgbWFjaGluZUNvZGVLZXRUaHVjczogc3RyaW5nW107XHJcbiAgICBnZW5lcmF0ZWQgPSBmYWxzZTtcclxuICAgIGRhdGFTb3VyY2VBY3Rpb246IGFueVtdID0gW107XHJcbiAgICBzdGF0ZURpc3RhbmNlID0gMzUwO1xyXG4gICAgdG9wRGlzdGFuY2UgPSA4MDtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcm90ZWN0ZWQgX2luamVjdG9yOiBJbmplY3RvcixcclxuICAgICAgICBwdWJsaWMgX3dvcmtmbG93SGlzdG9yeVNlcnZpY2U6IFdvcmtmbG93SGlzdG9yeVNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9jb0NhdVRvQ2h1Y1NlcnZpY2U6IENvQ2F1VG9DaHVjU2VydmljZSxcclxuICAgICAgICBwcm90ZWN0ZWQgX3VzZXJHcm91cFNlcnZpY2U6IFVzZXJHcm91cFJlYWxTZXJ2aWNlLFxyXG4gICAgICAgIHByb3RlY3RlZCBfZG1DaHVjVnVTZXJ2aWNlOiBEbUNodWNWdVNlcnZpY2UsXHJcbiAgICAgICAgX2ZpbGVEYXRhU2VydmljZTogRmlsZURhdGFTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihfaW5qZWN0b3IpO1xyXG4gICAgICAgIHRoaXMuZmlsZURhdGFTZXJ2aWNlID0gX2ZpbGVEYXRhU2VydmljZTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLmxvYWREZXRhaWxGcm9tUXVlcnlQYXJhbSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5iYXNlU2VydmljZSA9IHRoaXMuX3dvcmtmbG93SGlzdG9yeVNlcnZpY2U7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLm11bHRpcGxlQ2hlY2tXaGVuQ2xpY2tSb3cgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuc2V0dGluZ0tleSA9ICdfX3dvcmtmbG93JztcclxuICAgICAgICB0aGlzLmN1cnJlbnRXb3JrZmxvdyA9IHRoaXMud29ya2Zsb3dTZXR0aW5nLndvcmtmbG93cy5maW5kKHEgPT4gcS5jb2RlID09IHRoaXMuaXRlbS5fX3dvcmtmbG93Q29kZSk7XHJcblxyXG4gICAgICAgIHRoaXMuc2V0dGluZy50aXRsZSA9ICcnO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5oZWlnaHRUeXBlID0gSGVpZ2h0VHlwZS5keW5hbWljO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5zaG93RWRpdExpbmsgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuQnV0dG9ucyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmhpZGRlbkNoZWNrYm94ID0gdHJ1ZTtcclxuICAgICAgICBjb25zdCB1c2VyQ3VycmVudCA9IHRoaXMuX3VzZXJTZXJ2aWNlLmdldEN1cnJlbnRVc2VyKCk7XHJcbiAgICAgICAgaWYgKHVzZXJDdXJyZW50LnVzZXJOYW1lICE9ICdhZG1pbicgfHwgdGhpcy5pc1JlbGF0aXZlRm9ybSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldHRpbmcuaGlkZGVuRnVuY3Rpb25Db2x1bW4gPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXRoaXMudGFibGVOYW1lKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGFibGVOYW1lID0gdGhpcy5idXNpbmVzc1NldHRpbmcuYmFzZVNlcnZpY2UuZW50aXR5TmFtZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fZW50aXR5V29ya2Zsb3dIaXN0b3J5U2VydmljZS5zZXRDdXJyZW50U2VydmljZVVyaSh0aGlzLnRhYmxlTmFtZSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRXb3JrZmxvdyA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWwucmVhZHkgPSBmYWxzZTtcclxuICAgICAgICAgICAgLy8gS2nhu4NtIHRyYSBu4bq/dSBhY2NvdW50IGzDoCBhZG1pbiB0aMOsIHTDrG0gbOG7i2NoIHPhu60gY3Xhu5FpIGPDuW5nIGPhu6dhIGLhuqNuIGdoaSDEkeG7gyB4w6FjIMSR4buLbmggd29ya2Zsb3cgY29kZVxyXG4gICAgICAgICAgICAvLyBQaOG7pWMgduG7pSB2aeG7h2MgcmV2ZXJ0IGThu68gbGnhu4d1IGzhu5dpXHJcbiAgICAgICAgICAgIGlmICh1c2VyQ3VycmVudC51c2VyTmFtZSA9PSAnYWRtaW4nKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbmRMYXN0SGlzdG9yeUFuZEdldERhdGEoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMud29ya2Zsb3dUaXRsZSA9ICdLaMO0bmcgeMOhYyDEkeG7i25oJztcclxuICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93V2FybmluZygnUXV5IHRyw6xuaCBj4bunYSBi4bqjbiBnaGkgxJHDoyBi4buLIHjDs2EnKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFdvcmtmbG93ID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aGlzLndvcmtmbG93VGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lczogW10sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25zOiBbXVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy53b3JrZmxvd1RpdGxlID0gdGhpcy5jdXJyZW50V29ya2Zsb3cudGl0bGU7XHJcbiAgICAgICAgICAgIHRoaXMubWFjaGluZXNEYXRhID0gdGhpcy5jdXJyZW50V29ya2Zsb3cuZGF0YTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdCgpIHtcclxuICAgICAgICB0aGlzLm1hY2hpbmVDb2RlS2V0VGh1Y3MgPSB0aGlzLmN1cnJlbnRXb3JrZmxvdy5kYXRhLm1hY2hpbmVzLmZpbHRlcihxID0+IHEudHlwZSA9PSBFbnVtU3RhdGVUeXBlLlNUT1ApLm1hcChxID0+IHEuY29kZSk7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLm1vZGVsU2NoZW1hcyA9IFtcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICd1c2VySWRDcmVhdGVkJywgbmFtZTogJ05nxrDhu51pIGfhu61pJywgZnVsbE5hbWU6ICdOZ8aw4budaSBn4butaScsIGRlc2NyaXB0aW9uOiAnJyB9KSxcclxuICAgICAgICAgICAgbmV3IE1vZGVsU2NoZW1hKHsgZmllbGQ6ICdhY3Rpb25Db2RlJywgbmFtZTogJ1RoYW8gdMOhYycsIGZ1bGxOYW1lOiAnVGhhbyB0w6FjJywgZGVzY3JpcHRpb246ICcnIH0pLFxyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ3RpbWUnLCBuYW1lOiAnVGjhu51pIGdpYW4nLCBmdWxsTmFtZTogJ1Ro4budaSBnaWFuJywgZGVzY3JpcHRpb246ICcnIH0pLFxyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ3VzZXJJZHMnLCBuYW1lOiAnTmfGsOG7nWkgbmjhuq1uJywgZnVsbE5hbWU6ICdOZ8aw4budaSBuaOG6rW4nLCBkZXNjcmlwdGlvbjogJycgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAndXNlclZpZXdJZHMnLCBuYW1lOiAnTmfGsOG7nWkgdGhlbyBkw7VpJywgZnVsbE5hbWU6ICdOZ8aw4budaSB0aGVvIGTDtWknLCBkZXNjcmlwdGlvbjogJycgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAnZG9uVmlJZHMnLCBuYW1lOiAnxJDGoW4gduG7iyBuaOG6rW4nLCBmdWxsTmFtZTogJ8SQxqFuIHbhu4sgbmjhuq1uJywgZGVzY3JpcHRpb246ICcnIH0pLFxyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ2RvblZpVmlld0lkcycsIG5hbWU6ICfEkMahbiB24buLIHRoZW8gZMO1aScsIGZ1bGxOYW1lOiAnxJDGoW4gduG7iyB0aGVvIGTDtWknLCBkZXNjcmlwdGlvbjogJycgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAnZ3JvdXBJZHMnLCBuYW1lOiAnTmjDs20gbmfGsOG7nWkgZMO5bmcgbmjhuq1uJywgZnVsbE5hbWU6ICdOaMOzbSBuZ8aw4budaSBkw7luZyBuaOG6rW4nLCBkZXNjcmlwdGlvbjogJycgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAnZ3JvdXBWaWV3SWRzJywgbmFtZTogJ05ow7NtIG5nxrDhu51pIGTDuW5nIHRoZW8gZMO1aScsIGZ1bGxOYW1lOiAnTmjDs20gbmfGsOG7nWkgZMO5bmcgdGhlbyBkw7VpJywgZGVzY3JpcHRpb246ICcnIH0pLFxyXG4gICAgICAgICAgICBuZXcgTW9kZWxTY2hlbWEoeyBmaWVsZDogJ3JvbGVJZHMnLCBuYW1lOiAnQ2jhu6ljIHbhu6Ugbmjhuq1uJywgZnVsbE5hbWU6ICdDaOG7qWMgduG7pSBuaOG6rW4nLCBkZXNjcmlwdGlvbjogJycgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAncm9sZVZpZXdJZHMnLCBuYW1lOiAnQ2jhu6ljIHbhu6UgdGhlbyBkw7VpJywgZnVsbE5hbWU6ICdDaOG7qWMgduG7pSB0aGVvIGTDtWknLCBkZXNjcmlwdGlvbjogJycgfSksXHJcbiAgICAgICAgICAgIG5ldyBNb2RlbFNjaGVtYSh7IGZpZWxkOiAnbm90ZScsIG5hbWU6ICfDnSBraeG6v24nLCBmdWxsTmFtZTogJ8OdIGtp4bq/bicsIGRlc2NyaXB0aW9uOiAnJyB9KVxyXG4gICAgICAgIF07XHJcbiAgICAgICAgdGhpcy5kYXRhU291cmNlQWN0aW9uID0gdGhpcy5jcmVhdGVEYXRhc291cmNlQWN0aW9uKCk7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nLmNvbHMgPSBbXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAndXNlcklkQ3JlYXRlZCcsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzEyJScsXHJcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fdXNlclNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5RmllbGQ6ICdmdWxsTmFtZU5ldydcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnZnVsbEFjdGlvbkNvZGUnLFxyXG4gICAgICAgICAgICAgICAgZmllbGRGaWx0ZXI6ICdhY3Rpb25Db2RlJyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnSMOgbmggxJHhu5luZycsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzklJyxcclxuICAgICAgICAgICAgICAgIGRhdGFTb3VyY2U6IHRoaXMuZGF0YVNvdXJjZUFjdGlvbixcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZEluR3JpZDogJ3Nob3J0VGVuJyxcclxuICAgICAgICAgICAgICAgIHZhbHVlRmllbGQ6ICdjb2RlJ1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICd1c2VySWRzJyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTUlJyxcclxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl91c2VyU2VydmljZSxcclxuICAgICAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgZGlzcGxheUZpZWxkOiAnZnVsbE5hbWVOZXcnLFxyXG4gICAgICAgICAgICAgICAgZmllbGRQbHVzOiAndXNlck5hbWUnLFxyXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBmb3JjZUdldERhdGE6IHRydWVcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAndXNlclZpZXdJZHMnLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxNSUnLFxyXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX3VzZXJTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5RmllbGQ6ICdmdWxsTmFtZU5ldycsXHJcbiAgICAgICAgICAgICAgICBmaWVsZFBsdXM6ICd1c2VyTmFtZScsXHJcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGZvcmNlR2V0RGF0YTogdHJ1ZVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdkb25WaUlkcycsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzE1JScsXHJcbiAgICAgICAgICAgICAgICBiYXNlU2VydmljZTogdGhpcy5fY29DYXVUb0NodWNTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGZvcmNlR2V0RGF0YTogdHJ1ZVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdkb25WaVZpZXdJZHMnLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxNSUnLFxyXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX2NvQ2F1VG9DaHVjU2VydmljZSxcclxuICAgICAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBmb3JjZUdldERhdGE6IHRydWVcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnZ3JvdXBJZHMnLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxNSUnLFxyXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX3VzZXJHcm91cFNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5RmllbGQ6ICduYW1lJyxcclxuICAgICAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBmb3JjZUdldERhdGE6IHRydWVcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnZ3JvdXBWaWV3SWRzJyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTUlJyxcclxuICAgICAgICAgICAgICAgIGJhc2VTZXJ2aWNlOiB0aGlzLl91c2VyR3JvdXBTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgZGlzcGxheUZpZWxkOiAnbmFtZScsXHJcbiAgICAgICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHZpc2libGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgZm9yY2VHZXREYXRhOiB0cnVlXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgQ29sdW1uU2NoZW1hQmFzZSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ3JvbGVJZHMnLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxNSUnLFxyXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX2RtQ2h1Y1Z1U2VydmljZSxcclxuICAgICAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBmb3JjZUdldERhdGE6IHRydWVcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAncm9sZVZpZXdJZHMnLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxNSUnLFxyXG4gICAgICAgICAgICAgICAgYmFzZVNlcnZpY2U6IHRoaXMuX2RtQ2h1Y1Z1U2VydmljZSxcclxuICAgICAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBmb3JjZUdldERhdGE6IHRydWVcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnbm90ZScsXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ25vdGUnLFxyXG4gICAgICAgICAgICAgICAgZnVsbFRleHRTZWFyY2g6IHRydWVcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAndGltZScsXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogRGF0YVR5cGUuZGF0ZXRpbWUsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzE0MHB4J1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IENvbHVtblNjaGVtYUJhc2Uoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdyZWNlaXZlcicsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogJ05nxrDhu51pIG5o4bqtbicsXHJcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ3JlY2VpdmVyJyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMjUwcHgnLFxyXG4gICAgICAgICAgICAgICAgc29ydDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBhbGxvd0ZpbHRlcjogZmFsc2VcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAncmVjZWl2ZXJWaWV3JyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnTmfGsOG7nWkgdGhlbyBkw7VpJyxcclxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAncmVjZWl2ZXJWaWV3JyxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMjUwcHgnLFxyXG4gICAgICAgICAgICAgICAgc29ydDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBhbGxvd0ZpbHRlcjogZmFsc2VcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDb2x1bW5TY2hlbWFCYXNlKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnZmlsZURpbmhLZW0nLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnRmlsZSDEkcOtbmgga8OobScpLFxyXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdmaWxlRGluaEtlbScsXHJcbiAgICAgICAgICAgICAgICBhbGxvd0ZpbHRlcjogZmFsc2VcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICB0aGlzLm1vZGVsLnJlYWR5ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm1pbmltaXplRGF0YXNvdXJjZUFjdGlvbigpO1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZmluZExhc3RIaXN0b3J5QW5kR2V0RGF0YSgpIHtcclxuICAgICAgICBjb25zdCBsYXN0SGlzdG9yeSA9IChhd2FpdCB0aGlzLl93b3JrZmxvd0hpc3RvcnlTZXJ2aWNlLmdldExhc3RCeUl0ZW1JZCh0aGlzLml0ZW0uaWQpKS5kYXRhO1xyXG4gICAgICAgIGlmICghbGFzdEhpc3RvcnkpIHJldHVybjtcclxuICAgICAgICB0aGlzLmN1cnJlbnRXb3JrZmxvdyA9IHRoaXMud29ya2Zsb3dTZXR0aW5nLndvcmtmbG93cy5maW5kKHEgPT4gcS5jb2RlID09IGxhc3RIaXN0b3J5LndvcmtmbG93Q29kZSk7XHJcbiAgICAgICAgdGhpcy5pdGVtLl9fd29ya2Zsb3dDb2RlID0gbGFzdEhpc3Rvcnkud29ya2Zsb3dDb2RlO1xyXG4gICAgICAgIC8vIHRoaXMuYXBwZW5kTWFjaGluZXNBbmRDb25uZWN0aW9uKHRoaXMuY3VycmVudFdvcmtmbG93LmRhdGEsIHRoaXMubWFjaGluZXNEYXRhKTtcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50V29ya2Zsb3cgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMud29ya2Zsb3dUaXRsZSA9IHRoaXMuY3VycmVudFdvcmtmbG93LnRpdGxlO1xyXG4gICAgICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHJlZ2VuZXJhdGVNYWNoaW5lRGF0YSgpIHtcclxuICAgICAgICB0aGlzLnJlYWR5VG9SYXcgPSBmYWxzZTtcclxuICAgICAgICBjb25zdCBtYWNoaW5lc0RhdGEgPSB7IG1hY2hpbmVzOiBbXSwgY29ubmVjdGlvbnM6IFtdLCBkb05vdEFkanVzdExvY2FsdGlvbjogdHJ1ZSB9O1xyXG4gICAgICAgIGlmICh0aGlzLm1hY2hpbmVzRGF0YSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMubWFjaGluZXNEYXRhID0geyBtYWNoaW5lczogW10sIGNvbm5lY3Rpb25zOiBbXSB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBvYmpUZW1wID0geyBzdGFydDogMTAgfTtcclxuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5tb2RlbC5kYXRhU291cmNlLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1IaXN0b3J5ID0gdGhpcy5tb2RlbC5kYXRhU291cmNlW2ldO1xyXG4gICAgICAgICAgICBpZiAoaXRlbUhpc3Rvcnkuc3RhdHVzICE9IEVudW1Xb3JrZmxvd0hpc3RvcnlTdGF0dXMuSU5fTUFJTl9USFJFQUQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBsZXQgc291cmNlU3RhdGUsIHRhcmdldFN0YXRlO1xyXG4gICAgICAgICAgICB0aGlzLm1hY2hpbmVzRGF0YS5tYWNoaW5lcy5mb3JFYWNoKG1hY2hpbmUgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKG1hY2hpbmUuY29kZSA9PSBpdGVtSGlzdG9yeS5zb3VyY2VTdGF0dXNDb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc291cmNlU3RhdGUgPSBtYWNoaW5lO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKG1hY2hpbmUuY29kZSA9PSBpdGVtSGlzdG9yeS50YXJnZXRTdGF0dXNDb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0U3RhdGUgPSBtYWNoaW5lO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWYgKHNvdXJjZVN0YXRlICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0YXJnZXRTdGF0ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgbGFzdFN0YXRlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobWFjaGluZXNEYXRhLm1hY2hpbmVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFN0YXRlID0gbWFjaGluZXNEYXRhLm1hY2hpbmVzW21hY2hpbmVzRGF0YS5tYWNoaW5lcy5sZW5ndGggLSAxXTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG5ld1NvdXJjZVN0YXRlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobGFzdFN0YXRlICYmIGxhc3RTdGF0ZS5jb2RlID09IHNvdXJjZVN0YXRlLmNvZGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3U291cmNlU3RhdGUgPSBsYXN0U3RhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdTb3VyY2VTdGF0ZSA9IHRoaXMuY2xvbmVNYWNoaW5lKHNvdXJjZVN0YXRlLCBvYmpUZW1wKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZXNEYXRhLm1hY2hpbmVzLnB1c2gobmV3U291cmNlU3RhdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdUYXJnZXRTdGF0ZSA9IHRoaXMuY2xvbmVNYWNoaW5lKHRhcmdldFN0YXRlLCBvYmpUZW1wKTtcclxuICAgICAgICAgICAgICAgICAgICBtYWNoaW5lc0RhdGEubWFjaGluZXMucHVzaChuZXdUYXJnZXRTdGF0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29ubmVjdGlvbiA9IHRoaXMubWFjaGluZXNEYXRhLmNvbm5lY3Rpb25zLmZpbmQocSA9PiBxLnNvdXJjZSA9PSBzb3VyY2VTdGF0ZS5pZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiBxLnRhcmdldCA9PSB0YXJnZXRTdGF0ZS5pZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiBxLmNvZGUgPT0gaXRlbUhpc3RvcnkuYWN0aW9uQ29kZVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbm5lY3Rpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZXNEYXRhLmNvbm5lY3Rpb25zLnB1c2godGhpcy5jbG9uZUNvbm5lY3Rpb24oY29ubmVjdGlvbiwgbmV3U291cmNlU3RhdGUsIG5ld1RhcmdldFN0YXRlKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRhcmdldFN0YXRlICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIG1hY2hpbmVzRGF0YS5tYWNoaW5lcy5wdXNoKHRoaXMuY2xvbmVNYWNoaW5lKHRhcmdldFN0YXRlLCBvYmpUZW1wKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG1hY2hpbmVzRGF0YS5jb25uZWN0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudENvbm5lY3Rpb24gPSBtYWNoaW5lc0RhdGEuY29ubmVjdGlvbnMubWFwKHEgPT4gKHsgLi4ucSB9KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMubW9kZWwuZGF0YVNvdXJjZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudENvbm5lY3Rpb24gPSBbXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiBtYWNoaW5lc0RhdGEubWFjaGluZXNbMF0uaWRcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gS2nhu4NtIHRyYSBzdGF0ZSBjdeG7kWksIG7hur91IGNoxrBhIHBo4bqjaSBzdGF0ZSBr4bq/dCB0aMO6YyB0aMOsIHbhur0gdGjDqm0gY8OhYyBzdGF0ZSBwaMOtYSBzYXUgxJHhu4MgbmfGsOG7nWkgZMO5bmcgYmnhur90IGNo4bqheSB0aGVvIGjGsOG7m25nIG7DoG9cclxuICAgICAgICBhd2FpdCB0aGlzLmFwcGVuZFN0YXRlQWZ0ZXJMYXN0U3RhdGUobWFjaGluZXNEYXRhLCB0aGlzLm1hY2hpbmVzRGF0YSwgb2JqVGVtcC5zdGFydCk7XHJcbiAgICAgICAgdGhpcy5tYWNoaW5lc0RhdGEgPSBtYWNoaW5lc0RhdGE7XHJcbiAgICAgICAgdGhpcy53YWl0VG9EZXRhY2ggPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucmVhZHlUb1JhdyA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgYXBwZW5kU3RhdGVBZnRlckxhc3RTdGF0ZShtYWNoaW5lc0RhdGEsIG1hY2hpbmVzRGF0YVJhdywgbGVmdCkge1xyXG4gICAgICAgIGlmIChtYWNoaW5lc0RhdGEubWFjaGluZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBjb25zdCBsYXN0TWFjaGluZSA9IG1hY2hpbmVzRGF0YS5tYWNoaW5lc1ttYWNoaW5lc0RhdGEubWFjaGluZXMubGVuZ3RoIC0gMV07XHJcbiAgICAgICAgICAgIGlmIChsYXN0TWFjaGluZS50eXBlID09IEVudW1TdGF0ZVR5cGUuU1RPUCkgcmV0dXJuO1xyXG4gICAgICAgICAgICAvLyBM4bqleSByYSBjw6FjIGFjdGlvbiBtw6AgbmfGsOG7nWkgZMO5bmcgxJHGsOG7o2MgcGjDqXAgdGjhu7FjIGhp4buHblxyXG4gICAgICAgICAgICAvLyBjb25zdCBhY3Rpb25BbGxvd3MgPSAoYXdhaXQgdGhpcy5idXNpbmVzc1NldHRpbmcuYmFzZVNlcnZpY2UuZ2V0QWN0aW9uQWxsb3codGhpcy5pdGVtLmlkKSkuZGF0YTtcclxuICAgICAgICAgICAgLy8gaWYgKCFhY3Rpb25BbGxvd3MpIHJldHVybjtcclxuICAgICAgICAgICAgbGV0IGluZGV4ID0gMTtcclxuICAgICAgICAgICAgbWFjaGluZXNEYXRhUmF3LmNvbm5lY3Rpb25zLmZpbHRlcihxID0+IHEuc291cmNlID09IGxhc3RNYWNoaW5lLnJhd0lkKVxyXG4gICAgICAgICAgICAgICAgLmZvckVhY2goY29ubiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0TWFjaGluZSA9IG1hY2hpbmVzRGF0YVJhdy5tYWNoaW5lcy5maW5kKHEgPT4gcS5pZCA9PSBjb25uLnRhcmdldCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldE1hY2hpbmUuY29kZSA9PSBsYXN0TWFjaGluZS5jb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPSB0aGlzLmNsb25lQ29ubmVjdGlvbihjb25uLCBsYXN0TWFjaGluZSwgbGFzdE1hY2hpbmUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLmNvbm5lY3RvciA9ICdTdGF0ZU1hY2hpbmUnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lc0RhdGEuY29ubmVjdGlvbnMucHVzaChjb25uZWN0aW9uKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1RhcmdldE1hY2hpbmUgPSB0aGlzLmNsb25lTWFjaGluZSh0YXJnZXRNYWNoaW5lLCB7fSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1RhcmdldE1hY2hpbmUubG9jYXRpb24gPSBbbGVmdCwgdGhpcy50b3BEaXN0YW5jZSArIDE1MCAqIChpbmRleCAtIDEpXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgrKztcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZXNEYXRhLmNvbm5lY3Rpb25zLnB1c2godGhpcy5jbG9uZUNvbm5lY3Rpb24oY29ubiwgbGFzdE1hY2hpbmUsIG5ld1RhcmdldE1hY2hpbmUpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZXNEYXRhLm1hY2hpbmVzLnB1c2gobmV3VGFyZ2V0TWFjaGluZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNsb25lTWFjaGluZShtYWNoaW5lOiBhbnksIG9ialRlbXApIHtcclxuICAgICAgICBjb25zdCBuZXdJZCA9IHRoaXMuX2NvbW1vblNlcnZpY2UuZ3VpZCgpO1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHtcclxuICAgICAgICAgICAgLi4ubWFjaGluZSxcclxuICAgICAgICAgICAgbG9jYXRpb246IFtvYmpUZW1wLnN0YXJ0LCB0aGlzLnRvcERpc3RhbmNlXSxcclxuICAgICAgICAgICAgcmF3SWQ6IG1hY2hpbmUuaWQsXHJcbiAgICAgICAgICAgIHJhd0lkTmV3OiBuZXdJZCxcclxuICAgICAgICAgICAgaWQ6IG5ld0lkXHJcbiAgICAgICAgfTtcclxuICAgICAgICBvYmpUZW1wLnN0YXJ0ICs9IHRoaXMuc3RhdGVEaXN0YW5jZTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIGNsb25lQ29ubmVjdGlvbihjb25uZWN0aW9uOiBhbnksIHNvdXJjZVN0YXRlOiBhbnksIHRhcmdldFN0YXRlOiBhbnkpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAuLi5jb25uZWN0aW9uLFxyXG4gICAgICAgICAgICBzb3VyY2U6IHNvdXJjZVN0YXRlLmlkLFxyXG4gICAgICAgICAgICB0YXJnZXQ6IHRhcmdldFN0YXRlLmlkXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBtaW5pbWl6ZURhdGFzb3VyY2VBY3Rpb24oKSB7XHJcbiAgICAgICAgY29uc3QgbHN0V29ya2Zsb3dIaXN0b3J5ID0gKGF3YWl0IHRoaXMuX3dvcmtmbG93SGlzdG9yeVNlcnZpY2UuZ2V0QWxsKHRoaXMuZ2V0RGVmYXVsdEZpbHRlcigpLCAnc291cmNlU3RhdHVzQ29kZSxhY3Rpb25Db2RlJykpLmRhdGE7XHJcbiAgICAgICAgY29uc3QgZGF0YVNvdXJjZSA9IHRoaXMuX3dvcmtmbG93U2V0dGluZ1NlcnZpY2UubWluaW1pemVEYXRhc291cmNlQWN0aW9uKHRoaXMuZGF0YVNvdXJjZUFjdGlvbiwgbHN0V29ya2Zsb3dIaXN0b3J5KTtcclxuICAgICAgICB0aGlzLmNydWRMaXN0LnNldERyb3Bkb3duRGF0YXNvdXJjZSgnZnVsbEFjdGlvbkNvZGUnLCBkYXRhU291cmNlKTtcclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVEYXRhc291cmNlQWN0aW9uKCkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdDogYW55W10gPSBbXHJcbiAgICAgICAgICAgIHsgY29kZTogTWFBY3Rpb25CYXREYXVRdXlUcmluaCwgdGVuOiAnQuG6r3QgxJHhuqd1IHF1eSB0csOsbmgnLCBidWlsZEluOiB0cnVlIH1cclxuICAgICAgICBdO1xyXG4gICAgICAgIHJlc3VsdC5wdXNoKC4uLnRoaXMuX3dvcmtmbG93U2V0dGluZ1NlcnZpY2UucmVuZGVyRGF0YVNvdXJjZUFjdGlvbldvcmtmbG93KHRoaXMuY3VycmVudFdvcmtmbG93LmRhdGEpKTtcclxuICAgICAgICByZXN1bHQucHVzaChcclxuICAgICAgICAgICAgeyBjb2RlOiBBY3Rpb25VcGRhdGVNb2RlbCwgdGVuOiAnQ2jhu4luaCBz4butYScsIGJ1aWxkSW46IHRydWUgfSxcclxuICAgICAgICAgICAgeyBjb2RlOiBBY3Rpb25DaG9ZS2llbkJhc2UsIHRlbjogJ0NobyDDvSBraeG6v24nLCBidWlsZEluOiB0cnVlIH0sXHJcbiAgICAgICAgICAgIHsgY29kZTogQWN0aW9uVGh1SG9pQmFzZSwgdGVuOiAnVGh1IGjhu5NpIHRoYW8gdMOhYycsIGJ1aWxkSW46IHRydWUgfVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmVzdWx0LmZpbHRlcihxID0+IHEuYnVpbGRJbikuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgaXRlbS5yYXdDb2RlID0gaXRlbS5jb2RlO1xyXG4gICAgICAgICAgICBpdGVtLnNob3J0VGVuID0gaXRlbS50ZW47XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldERlZmF1bHRGaWx0ZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIoJ3RhYmxlTmFtZScsIE9wZXJhdG9yLmVxdWFsLCB0aGlzLnRhYmxlTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMubmV3RmlsdGVyKCdpdGVtSWQnLCBPcGVyYXRvci5lcXVhbCwgdGhpcy5pdGVtLmlkKSxcclxuICAgICAgICAgICAgdGhpcy5uZXdGaWx0ZXIoJ3dvcmtmbG93Q29kZScsIE9wZXJhdG9yLmVxdWFsLCB0aGlzLml0ZW0uX193b3JrZmxvd0NvZGUpXHJcbiAgICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBtb2RpZnlHcmlkSW5mbyhncmlkSW5mbz86IEdyaWRJbmZvKSB7XHJcbiAgICAgICAgY29uc3QgZmlsdGVyQnlBY3Rpb25Db2RlID0gZ3JpZEluZm8uZmlsdGVycy5maW5kKHEgPT4gcS5maWVsZCA9PSAnYWN0aW9uQ29kZScpO1xyXG4gICAgICAgIGlmIChmaWx0ZXJCeUFjdGlvbkNvZGUpIHtcclxuICAgICAgICAgICAgY29uc3QgYXJyVmFsdWUgPSBKU09OLnBhcnNlKGZpbHRlckJ5QWN0aW9uQ29kZS52YWx1ZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGFyckFjdGlvbkNvZGUgPSB0aGlzLmRhdGFTb3VyY2VBY3Rpb24uZmlsdGVyKHEgPT4gYXJyVmFsdWUuc29tZSh4ID0+IHggPT0gcS5jb2RlKSkubWFwKHggPT4geC5yYXdDb2RlKTtcclxuICAgICAgICAgICAgZmlsdGVyQnlBY3Rpb25Db2RlLnZhbHVlID0gSlNPTi5zdHJpbmdpZnkoYXJyQWN0aW9uQ29kZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGdyaWRJbmZvLmZpbHRlcnMudW5zaGlmdChcclxuICAgICAgICAgICAgLi4udGhpcy5nZXREZWZhdWx0RmlsdGVyKClcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBncmlkSW5mby5zb3J0cy51bnNoaWZ0KHRoaXMubmV3U29ydCgnY3JlYXRlZCcsIC0xKSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgYmVmb3JlUmVuZGVyRGF0YVNvdXJjZShkYXRhU291cmNlKSB7XHJcbiAgICAgICAgLy8gRHV54buHdCB04burbmcgaGlzdG9yeSDEkeG7gyBjaOG7iSBoaeG7g24gdGjhu4sgbHXhu5NuZyBoaeG7h24gdOG6oWkgY+G7p2EgcXV5IHRyw6xuaC4gayBoaeG7g24gdGjhu4sgY8OhYyBixrDhu5tjIHRo4burYVxyXG4gICAgICAgIGRhdGFTb3VyY2UuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgaXRlbS5mdWxsQWN0aW9uQ29kZSA9IGl0ZW0uYWN0aW9uQ29kZTtcclxuICAgICAgICAgICAgaWYgKGl0ZW0uYWN0aW9uQ29kZSAhPSBNYUFjdGlvbkJhdERhdVF1eVRyaW5oXHJcbiAgICAgICAgICAgICAgICAmJiBpdGVtLmFjdGlvbkNvZGUgIT0gQWN0aW9uVXBkYXRlTW9kZWxcclxuICAgICAgICAgICAgICAgICYmIGl0ZW0uYWN0aW9uQ29kZSAhPSBBY3Rpb25DaG9ZS2llbkJhc2VcclxuICAgICAgICAgICAgICAgICYmIGl0ZW0uYWN0aW9uQ29kZSAhPSBBY3Rpb25UaHVIb2lCYXNlXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgaXRlbS5mdWxsQWN0aW9uQ29kZSA9IGAke2l0ZW0uc291cmNlU3RhdHVzQ29kZX1fX18ke2l0ZW0uYWN0aW9uQ29kZX1gO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc3BsaXRMaXN0KGl0ZW0sICd1c2VySWRzJyk7XHJcbiAgICAgICAgICAgIHRoaXMuc3BsaXRMaXN0KGl0ZW0sICd1c2VyVmlld0lkcycpO1xyXG4gICAgICAgICAgICB0aGlzLnNwbGl0TGlzdChpdGVtLCAnZG9uVmlJZHMnKTtcclxuICAgICAgICAgICAgdGhpcy5zcGxpdExpc3QoaXRlbSwgJ2RvblZpVmlld0lkcycpO1xyXG4gICAgICAgICAgICB0aGlzLnNwbGl0TGlzdChpdGVtLCAnZ3JvdXBJZHMnKTtcclxuICAgICAgICAgICAgdGhpcy5zcGxpdExpc3QoaXRlbSwgJ2dyb3VwVmlld0lkcycpO1xyXG4gICAgICAgICAgICB0aGlzLnNwbGl0TGlzdChpdGVtLCAncm9sZUlkcycpO1xyXG4gICAgICAgICAgICB0aGlzLnNwbGl0TGlzdChpdGVtLCAncm9sZVZpZXdJZHMnKTtcclxuICAgICAgICAgICAgaWYgKCFpdGVtLmNvbFNwYW4pIGl0ZW0uY29sU3BhbiA9IHt9O1xyXG4gICAgICAgICAgICBpZiAoIWl0ZW0uaGlkZGVuKSBpdGVtLmhpZGRlbiA9IHt9O1xyXG4gICAgICAgICAgICBpZiAoaXRlbS5zdGF0dXMgPT0gRW51bVdvcmtmbG93SGlzdG9yeVN0YXR1cy5OT1RfSU5fTUFJTl9USFJFQUQpIHtcclxuICAgICAgICAgICAgICAgIGlmIChpdGVtLmFjdGlvbkNvZGUgPT0gQWN0aW9uVXBkYXRlTW9kZWwpIHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLmNvbFNwYW5bJ3JlY2VpdmVyJ10gPSAyO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uaGlkZGVuWydyZWNlaXZlclZpZXcnXSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0uanNvbk1vZGVsQ2hhbmdlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uanNvbk1vZGVsQ2hhbmdlID0gSlNPTi5wYXJzZShpdGVtLmpzb25Nb2RlbENoYW5nZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmpzb25Nb2RlbENoYW5nZSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGl0ZW0uYWN0aW9uQ29kZSA9PSBBY3Rpb25UaHVIb2lCYXNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5jbGFzcyA9ICdyZWNhbGxlZCc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoaXRlbS5zdGF0dXMgPT0gRW51bVdvcmtmbG93SGlzdG9yeVN0YXR1cy5SRUNBTExFRCkge1xyXG4gICAgICAgICAgICAgICAgaXRlbS5jbGFzcyA9ICdyZWNhbGxlZCc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBhZnRlckdldERhdGEoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmdlbmVyYXRlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMucmVnZW5lcmF0ZU1hY2hpbmVEYXRhKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3BsaXRMaXN0KGl0ZW06IGFueSwgZmllbGQ6IHN0cmluZykge1xyXG4gICAgICAgIGlmIChpdGVtW2ZpZWxkXSkge1xyXG4gICAgICAgICAgICBpdGVtW2ZpZWxkXSA9IGl0ZW1bZmllbGRdLnNwbGl0KCcsJykuZmlsdGVyKHEgPT4gISFxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGl0ZW1bZmllbGRdID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZVJvd1NlbGVjdChldnQpIHtcclxuICAgICAgICB0aGlzLnNldEN1cnJlbnRDb25uZWN0aW9uKHRoaXMubW9kZWwuc2VsZWN0ZWRJdGVtKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNldEN1cnJlbnRDb25uZWN0aW9uKGl0ZW1IaXN0b3J5KSB7XHJcbiAgICAgICAgaWYgKCFpdGVtSGlzdG9yeVxyXG4gICAgICAgICAgICB8fCBpdGVtSGlzdG9yeS5zdGF0dXMgIT0gRW51bVdvcmtmbG93SGlzdG9yeVN0YXR1cy5JTl9NQUlOX1RIUkVBRFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRDb25uZWN0aW9uID0gdGhpcy5tb2RlbC5kYXRhU291cmNlLmZpbHRlcihxID0+IHEuc3RhdHVzID09IEVudW1Xb3JrZmxvd0hpc3RvcnlTdGF0dXMuSU5fTUFJTl9USFJFQUQpXHJcbiAgICAgICAgICAgICAgICAubWFwKHEgPT4gdGhpcy5nZXRDb25uZWN0aW9uRnJvbUhpc3RvcnkocSkpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY3VycmVudENvbm5lY3Rpb24gPSBbXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0Q29ubmVjdGlvbkZyb21IaXN0b3J5KGl0ZW1IaXN0b3J5KVxyXG4gICAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRDb25uZWN0aW9uRnJvbUhpc3RvcnkoaXRlbUhpc3Rvcnk6IGFueSkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHNvdXJjZUNvZGU6IGl0ZW1IaXN0b3J5LnNvdXJjZVN0YXR1c0NvZGUsXHJcbiAgICAgICAgICAgIHRhcmdldENvZGU6IGl0ZW1IaXN0b3J5LnRhcmdldFN0YXR1c0NvZGUsXHJcbiAgICAgICAgICAgIGFjdGlvbkNvZGU6IGl0ZW1IaXN0b3J5LmFjdGlvbkNvZGVcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHJvbGxiYWNrQnlIaXN0b3J5KHJvd0RhdGEpIHtcclxuICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd0NvbmZpcm0oJ0LhuqFuIGPDsyBjaOG6r2MgY2jhuq9uIG114buRbiB0aHUgaOG7k2kgdGhhbyB0w6FjIHbhu4EgbOG7i2NoIHPhu60gxJHDoyBjaOG7jW4nKVxyXG4gICAgICAgICAgICAudGhlbihyZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFyZXMpIHJldHVybjtcclxuICAgICAgICAgICAgICAgIGxldCBuYW1lID0gJyc7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuYnVzaW5lc3NTZXR0aW5nLmRpc3BsYXlGaWVsZCA9PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWUgPSB0aGlzLml0ZW1bPHN0cmluZz4odGhpcy5idXNpbmVzc1NldHRpbmcuZGlzcGxheUZpZWxkKV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lID0gKDxGdW5jdGlvbj4odGhpcy5idXNpbmVzc1NldHRpbmcuZGlzcGxheUZpZWxkKSkodGhpcy5pdGVtKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuYnVzaW5lc3NTZXR0aW5nLmJhc2VTZXJ2aWNlLnJvbGxiYWNrQnlIaXN0b3J5KFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbS5pZCwgcm93RGF0YS5pZCxcclxuICAgICAgICAgICAgICAgICAgICBbdGhpcy5idXNpbmVzc1NldHRpbmcuYmFzZVNlcnZpY2Uub2JqZWN0TmFtZSwgbmFtZV1cclxuICAgICAgICAgICAgICAgICkudGhlbihyZXMgPT4gdGhpcy5oYW5kbGVSZXNwb25zZShyZXMsICdUaHUgaOG7k2kgdGhhbyB0w6FjIHRow6BuaCBjw7RuZycsIGYgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RyaWdnZXJQcm9jZXNzRGF0YSgpO1xyXG4gICAgICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBhZnRlclJlbG9hZGVkKCkge1xyXG4gICAgICAgIHRoaXMuZmlsZURhdGFTZXJ2aWNlLmdldERhdGEoKTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
package/esm2015/enums/common.js
CHANGED
|
@@ -3,5 +3,6 @@ export var PermissionBase;
|
|
|
3
3
|
PermissionBase[PermissionBase["READ"] = 1] = "READ";
|
|
4
4
|
PermissionBase[PermissionBase["EDIT"] = 2] = "EDIT";
|
|
5
5
|
PermissionBase[PermissionBase["DELETE"] = 4] = "DELETE";
|
|
6
|
+
PermissionBase[PermissionBase["FULL"] = 7] = "FULL";
|
|
6
7
|
})(PermissionBase || (PermissionBase = {}));
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImVudW1zL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxjQUtYO0FBTEQsV0FBWSxjQUFjO0lBQ3RCLG1EQUFRLENBQUE7SUFDUixtREFBUSxDQUFBO0lBQ1IsdURBQVUsQ0FBQTtJQUNWLG1EQUFRLENBQUE7QUFDWixDQUFDLEVBTFcsY0FBYyxLQUFkLGNBQWMsUUFLekIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBQZXJtaXNzaW9uQmFzZSB7XHJcbiAgICBSRUFEID0gMSxcclxuICAgIEVESVQgPSAyLFxyXG4gICAgREVMRVRFID0gNCxcclxuICAgIEZVTEwgPSA3XHJcbn1cclxuIl19
|
|
@@ -88,10 +88,11 @@ export class Sort {
|
|
|
88
88
|
}
|
|
89
89
|
export class Filter {
|
|
90
90
|
constructor(init) {
|
|
91
|
+
this.valueIsField = false;
|
|
91
92
|
this.filters = [];
|
|
92
93
|
for (const key in init) {
|
|
93
94
|
this[key] = init[key];
|
|
94
95
|
}
|
|
95
96
|
}
|
|
96
97
|
}
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1pbmZvLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbIm1vZGVscy9ncmlkLWluZm8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUJBQW1CO0FBQ25CLHdDQUF3QztBQUN4QyxzQ0FBc0M7QUFDdEMsc0ZBQXNGO0FBQ3RGLCtDQUErQzs7QUFJL0MsNERBQTREO0FBQzVELHNEQUFzRDtBQUN0RCxZQUFZO0FBQ1osUUFBUTtBQUNSLElBQUk7QUFFSixNQUFNLE9BQU8sUUFBUTtJQTBCakIsWUFBWSxJQUFlO1FBeEIzQixZQUFPLEdBQWEsRUFBRSxDQUFDO1FBQ3ZCLFVBQUssR0FBVyxFQUFFLENBQUM7UUFDbkIsYUFBUSxHQUFhLElBQUksUUFBUSxFQUFFLENBQUM7UUF1QmhDLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekI7SUFDTCxDQUFDO0lBekJELGNBQWMsQ0FBRSxLQUFLLEVBQUUsZUFBd0IsS0FBSztRQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBQzFCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMxQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEtBQUssRUFBRTtnQkFDaEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7Z0JBQ3BDLElBQUksWUFBWSxFQUFFO29CQUNkLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztpQkFDN0I7Z0JBQ0QsT0FBTyxLQUFLLENBQUM7YUFDaEI7U0FDSjtJQUNMLENBQUM7SUFDSyxZQUFZLENBQUUsS0FBSyxFQUFFLFVBQW9DOztZQUMzRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87Z0JBQUUsT0FBTztZQUMxQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksS0FBSyxFQUFFO29CQUNoQyxNQUFNLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2xDLE1BQU07aUJBQ1Q7YUFDSjtRQUNMLENBQUM7S0FBQTtDQU1KO0FBRUQsb0NBQW9DO0FBQ3BDLDJCQUEyQjtBQUMzQix1RUFBdUU7QUFDdkUsb0NBQW9DO0FBQ3BDLDJCQUEyQjtBQUMzQixRQUFRO0FBQ1IsMkJBQTJCO0FBQzNCLGtFQUFrRTtBQUNsRSxtRUFBbUU7QUFDbkUsOENBQThDO0FBQzlDLFlBQVk7QUFDWiwyQkFBMkI7QUFDM0IsUUFBUTtBQUNSLDJCQUEyQjtBQUMzQixvRUFBb0U7QUFDcEUseUNBQXlDO0FBQ3pDLDJCQUEyQjtBQUMzQixRQUFRO0FBQ1IsMkJBQTJCO0FBQzNCLDZFQUE2RTtBQUM3RSx3Q0FBd0M7QUFDeEMsMkJBQTJCO0FBQzNCLFFBQVE7QUFDUixJQUFJO0FBRUosTUFBTSxPQUFPLFFBQVE7SUFHakIsWUFBWSxJQUFlO1FBRjNCLFNBQUksR0FBRyxDQUFDLENBQUM7UUFDVCxhQUFRLEdBQUcsRUFBRSxDQUFDO1FBRVYsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxJQUFJO0lBR2IsWUFBWSxJQUFXO1FBRnZCLFVBQUssR0FBRyxJQUFJLENBQUM7UUFDYixRQUFHLEdBQUcsQ0FBQyxDQUFDO1FBRUosS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7Q0FDSjtBQUNELE1BQU0sT0FBTyxNQUFNO0lBVWYsWUFBWSxJQUFhO1FBSHpCLGlCQUFZLEdBQWEsS0FBSyxDQUFDO1FBRS9CLFlBQU8sR0FBYyxFQUFFLENBQUM7UUFFcEIsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRPRE86IFRlc3QgbGF0ZXJcclxuLy8gZXhwb3J0IGZ1bmN0aW9uIGV4dGVuc2lvbihjdHI6IGFueSkge1xyXG4vLyAgICAgbGV0IG9yaWdpbmFsRnVuY3Rpb246IEZ1bmN0aW9uO1xyXG4vLyAgICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIHByb3BlcnR5S2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikge1xyXG4vLyAgICAgICAgIG9yaWdpbmFsRnVuY3Rpb24gPSBkZXNjcmlwdG9yLnZhbHVlO1xyXG5cclxuaW1wb3J0IHsgT3BlcmF0b3IgfSBmcm9tICcuLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcclxuXHJcbi8vICAgICAgICAgY3RyLnByb3RvdHlwZVtwcm9wZXJ0eUtleV0gPSBmdW5jdGlvbiAoLi4uYXJncykge1xyXG4vLyAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxGdW5jdGlvbih0aGlzLCAuLi5hcmdzKTtcclxuLy8gICAgICAgICB9XHJcbi8vICAgICB9XHJcbi8vIH1cclxuXHJcbmV4cG9ydCBjbGFzcyBHcmlkSW5mbyB7XHJcbiAgICBmaWVsZHM/OiBzdHJpbmc7XHJcbiAgICBmaWx0ZXJzOiBGaWx0ZXJbXSA9IFtdO1xyXG4gICAgc29ydHM6IFNvcnRbXSA9IFtdO1xyXG4gICAgcGFnZUluZm86IFBhZ2VJbmZvID0gbmV3IFBhZ2VJbmZvKCk7XHJcbiAgICBnZXRGaWx0ZXJWYWx1ZT8oZmllbGQsIHJlbW92ZUZpbHRlcjogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmZpbHRlcnMpIHJldHVybjtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZmlsdGVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5maWx0ZXJzW2ldLmZpZWxkID09IGZpZWxkKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZmlsdGVyc1tpXS52YWx1ZTtcclxuICAgICAgICAgICAgICAgIGlmIChyZW1vdmVGaWx0ZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcnMuc3BsaWNlKGksIDEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgYXN5bmMgbW9kaWZ5RmlsdGVyPyhmaWVsZCwgZnVuY01vZGlmeTogKGZpbHRlcjogRmlsdGVyKSA9PiB2b2lkKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmZpbHRlcnMpIHJldHVybjtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZmlsdGVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5maWx0ZXJzW2ldLmZpZWxkID09IGZpZWxkKSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCBmdW5jTW9kaWZ5KHRoaXMuZmlsdGVyc1tpXSk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBHcmlkSW5mbykge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuLy8gZXhwb3J0IGNsYXNzIEdyaWRJbmZvRXh0ZW5zaW9ucyB7XHJcbi8vICAgICBAZXh0ZW5zaW9uKEdyaWRJbmZvKVxyXG4vLyAgICAgc3RhdGljIHNldEZpZWxkcyh0aGlzQXJnczogR3JpZEluZm8sIGZpZWxkczogc3RyaW5nKTogR3JpZEluZm8ge1xyXG4vLyAgICAgICAgIHRoaXNBcmdzLmZpZWxkcyA9IGZpZWxkcztcclxuLy8gICAgICAgICByZXR1cm4gdGhpc0FyZ3M7XHJcbi8vICAgICB9XHJcbi8vICAgICBAZXh0ZW5zaW9uKEdyaWRJbmZvKVxyXG4vLyAgICAgc3RhdGljIGZpZWxkKHRoaXNBcmdzOiBHcmlkSW5mbywgZmllbGQ6IHN0cmluZyk6IEdyaWRJbmZvIHtcclxuLy8gICAgICAgICBpZiAoIXRoaXNBcmdzLmZpZWxkcy5zcGxpdCgnLCcpLnNvbWUoeCA9PiB4ID09IGZpZWxkKSkge1xyXG4vLyAgICAgICAgICAgICB0aGlzQXJncy5maWVsZHMgKz0gJywnICsgZmllbGQ7XHJcbi8vICAgICAgICAgfVxyXG4vLyAgICAgICAgIHJldHVybiB0aGlzQXJncztcclxuLy8gICAgIH1cclxuLy8gICAgIEBleHRlbnNpb24oR3JpZEluZm8pXHJcbi8vICAgICBzdGF0aWMgZmlsdGVyKHRoaXNBcmdzOiBHcmlkSW5mbywgZmlsdGVyOiBGaWx0ZXIpOiBHcmlkSW5mbyB7XHJcbi8vICAgICAgICAgdGhpc0FyZ3MuZmlsdGVycy5wdXNoKGZpbHRlcik7XHJcbi8vICAgICAgICAgcmV0dXJuIHRoaXNBcmdzO1xyXG4vLyAgICAgfVxyXG4vLyAgICAgQGV4dGVuc2lvbihHcmlkSW5mbylcclxuLy8gICAgIHN0YXRpYyBzZXRQYWdlSW5mbyh0aGlzQXJnczogR3JpZEluZm8sIHBhZ2VJbmZvOiBQYWdlSW5mbyk6IEdyaWRJbmZvIHtcclxuLy8gICAgICAgICB0aGlzQXJncy5wYWdlSW5mbyA9IHBhZ2VJbmZvO1xyXG4vLyAgICAgICAgIHJldHVybiB0aGlzQXJncztcclxuLy8gICAgIH1cclxuLy8gfVxyXG5cclxuZXhwb3J0IGNsYXNzIFBhZ2VJbmZvIHtcclxuICAgIHBhZ2UgPSAxO1xyXG4gICAgcGFnZVNpemUgPSAxMDtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBQYWdlSW5mbykge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFNvcnQge1xyXG4gICAgZmllbGQgPSAnaWQnO1xyXG4gICAgZGlyID0gMTtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBTb3J0KSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmV4cG9ydCBjbGFzcyBGaWx0ZXIge1xyXG4gICAgZmllbGQ/OiBzdHJpbmc7XHJcbiAgICBsb2dpYz86ICdvcicgfCAnYW5kJztcclxuICAgIHNvdXJjZUZpZWxkPzogc3RyaW5nO1xyXG4gICAgc3ViRmllbGQ/OiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgICBmdW5jR2V0VmFsdWU/OiAoaXRlbSkgPT4gdm9pZDtcclxuICAgIHZhbHVlPzogc3RyaW5nO1xyXG4gICAgdmFsdWVJc0ZpZWxkPzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgb3BlcmF0b3I/OiBPcGVyYXRvcjtcclxuICAgIGZpbHRlcnM/OiBGaWx0ZXJbXSA9IFtdO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEZpbHRlcikge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
|