tnx-shared 5.2.28 → 5.2.29

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.
Files changed (85) hide show
  1. package/assets/docker/docker-entrypoint.sh +1 -1
  2. package/classes/base/list-component-base.d.ts +19 -5
  3. package/classes/base/list-component-base.d.ts.map +1 -1
  4. package/classes/environment-schema.d.ts +23 -20
  5. package/classes/environment-schema.d.ts.map +1 -1
  6. package/classes/public-function.d.ts +1 -0
  7. package/classes/public-function.d.ts.map +1 -1
  8. package/components/chat/chat-box/chat-box.component.d.ts.map +1 -1
  9. package/components/common-app-component/common-app-component.d.ts +1 -3
  10. package/components/common-app-component/common-app-component.d.ts.map +1 -1
  11. package/components/crud/advance-search/advance-search.component.d.ts +6 -6
  12. package/components/crud/advance-search/advance-search.component.d.ts.map +1 -1
  13. package/components/crud/crud-form/crud-form.component.d.ts +6 -0
  14. package/components/crud/crud-form/crud-form.component.d.ts.map +1 -1
  15. package/components/dropdown/dropdown.component.d.ts +5 -3
  16. package/components/dropdown/dropdown.component.d.ts.map +1 -1
  17. package/components/file-explorer/file-manager/file-manager.component.d.ts.map +1 -1
  18. package/components/query-builders/query-builder-rule/query-builder-rule.component.d.ts +3 -0
  19. package/components/query-builders/query-builder-rule/query-builder-rule.component.d.ts.map +1 -1
  20. package/components/tn-custom-scrollbar/tn-custom-scrollbar.component.d.ts.map +1 -1
  21. package/components/tn-tinymce/tn-tinymce.component.d.ts +2 -0
  22. package/components/tn-tinymce/tn-tinymce.component.d.ts.map +1 -1
  23. package/congviec/congviec/congviec-form/congviec-form.component.d.ts +1 -0
  24. package/congviec/congviec/congviec-form/congviec-form.component.d.ts.map +1 -1
  25. package/directives/primeng/tn-table.directive.d.ts +7 -6
  26. package/directives/primeng/tn-table.directive.d.ts.map +1 -1
  27. package/esm2020/classes/base/list-component-base.mjs +56 -32
  28. package/esm2020/classes/environment-schema.mjs +10 -1
  29. package/esm2020/classes/public-function.mjs +3 -1
  30. package/esm2020/components/add-news/add-news.component.mjs +3 -3
  31. package/esm2020/components/autocomplete-picker/autocomplete-picker.component.mjs +2 -2
  32. package/esm2020/components/chat/chat-box/chat-box.component.mjs +3 -4
  33. package/esm2020/components/chat/chat-send-message-box/chat-send-message-box.component.mjs +2 -2
  34. package/esm2020/components/common-app-component/common-app-component.mjs +57 -57
  35. package/esm2020/components/common-dashboard/common-dashboard.component.mjs +3 -3
  36. package/esm2020/components/crud/advance-search/advance-search.component.mjs +28 -19
  37. package/esm2020/components/crud/crud-form/crud-form.component.mjs +12 -4
  38. package/esm2020/components/crud/crud-list/crud-list.component.mjs +3 -3
  39. package/esm2020/components/crud/tree-table/tree-table.component.mjs +3 -3
  40. package/esm2020/components/dropdown/dropdown.component.mjs +29 -24
  41. package/esm2020/components/entity-permission/entity-permission.component.mjs +3 -3
  42. package/esm2020/components/entity-picker/entity-picker-box/entity-picker-box.component.mjs +3 -3
  43. package/esm2020/components/entity-picker/entity-picker-dialog/entity-picker-dialog.component.mjs +3 -3
  44. package/esm2020/components/file-explorer/file-manager/file-manager.component.mjs +3 -3
  45. package/esm2020/components/main-list/main-list.component.mjs +3 -3
  46. package/esm2020/components/query-builders/query-builder-rule/query-builder-rule.component.mjs +8 -3
  47. package/esm2020/components/radio-button-list/radio-button-list.component.mjs +3 -3
  48. package/esm2020/components/report-queue/report-queue.component.mjs +2 -2
  49. package/esm2020/components/settings/settings.component.mjs +3 -3
  50. package/esm2020/components/tn-app-help/tn-app-help.component.mjs +3 -3
  51. package/esm2020/components/tn-app-notification/tn-app-notification.component.mjs +3 -3
  52. package/esm2020/components/tn-custom-scrollbar/tn-custom-scrollbar.component.mjs +5 -4
  53. package/esm2020/components/tn-tinymce/tn-tinymce.component.mjs +7 -3
  54. package/esm2020/components/user-picker/user-picker-box/user-picker-box.component.mjs +3 -3
  55. package/esm2020/components/user-picker/user-picker.component.mjs +2 -2
  56. package/esm2020/components/workflow/workflow-picker/workflow-picker.component.mjs +3 -3
  57. package/esm2020/congviec/congviec/congviec-dinhkem/congviec-dinhkem.component.mjs +3 -3
  58. package/esm2020/congviec/congviec/congviec-form/congviec-form.component.mjs +6 -3
  59. package/esm2020/congviec/congviec/congviec.component.mjs +3 -3
  60. package/esm2020/directives/primeng/tn-table.directive.mjs +28 -13
  61. package/esm2020/services/common.service.mjs +11 -3
  62. package/esm2020/services/environment.service.mjs +48 -7
  63. package/esm2020/services/permission.service.mjs +12 -15
  64. package/esm2020/services/position.service.mjs +2 -2
  65. package/esm2020/services/signalr.service.mjs +3 -3
  66. package/esm2020/services/tn-client.service.mjs +30 -25
  67. package/esm2020/tnx-shared.module.mjs +14 -8
  68. package/fesm2015/tnx-shared.mjs +587 -445
  69. package/fesm2015/tnx-shared.mjs.map +1 -1
  70. package/fesm2020/tnx-shared.mjs +587 -445
  71. package/fesm2020/tnx-shared.mjs.map +1 -1
  72. package/package.json +2 -2
  73. package/services/common.service.d.ts +6 -0
  74. package/services/common.service.d.ts.map +1 -1
  75. package/services/environment.service.d.ts +32 -23
  76. package/services/environment.service.d.ts.map +1 -1
  77. package/services/permission.service.d.ts +5 -0
  78. package/services/permission.service.d.ts.map +1 -1
  79. package/services/position.service.d.ts.map +1 -1
  80. package/services/signalr.service.d.ts +1 -1
  81. package/services/signalr.service.d.ts.map +1 -1
  82. package/services/tn-client.service.d.ts +3 -1
  83. package/services/tn-client.service.d.ts.map +1 -1
  84. package/tnx-shared.module.d.ts +12 -11
  85. package/tnx-shared.module.d.ts.map +1 -1
@@ -222,10 +222,10 @@ export class RadioButtonListComponent {
222
222
  }
223
223
  }
224
224
  RadioButtonListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: RadioButtonListComponent, deps: [{ token: i1.CrudService }, { token: i2.DeviceDetectorService }], target: i0.ɵɵFactoryTarget.Component });
225
- RadioButtonListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: RadioButtonListComponent, selector: "radio-button-list", inputs: { control: "control", dataSource: "dataSource", value: "value", disabled: "disabled" }, outputs: { onInit: "onInit", valueChange: "valueChange", onChanged: "onChanged", onDataSourceLoaded: "onDataSourceLoaded", adjustValue: "adjustValue", onReady: "onReady" }, ngImport: i0, template: "<div class=\"p-grid tn-check-box-list\" [class.flex-end]=\"control.align == 'right'\"\r\n [class.flex-center]=\"control.align == 'center'\">\r\n <div [class]=\"classCheckBox\" *ngFor=\"let chk of dataSourceInternal\">\r\n <p-radioButton [disabled]=\"disabled ? true : null\" [label]=\"chk.label\" [value]=\"chk.value\"\r\n [(ngModel)]=\"_value\" (onClick)=\"change($event)\">\r\n </p-radioButton>\r\n </div>\r\n</div>\r\n", styles: [".tn-check-box-list.p-grid{margin-bottom:-.5em}.btn-clear{height:30px;cursor:pointer;border:none;background:#337ab7;color:#fff;border-radius:3px;padding:0 10px;margin:1px .5em 0}.p-col-horizontal{padding:.5em}::ng-deep .tn-check-box-list{position:relative}::ng-deep .tn-check-box-list.flex-end{justify-content:flex-end}::ng-deep .tn-check-box-list.flex-center{justify-content:center}::ng-deep .tn-check-box-list label{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.RadioButton, selector: "p-radioButton", inputs: ["value", "formControlName", "name", "disabled", "label", "tabindex", "inputId", "ariaLabelledBy", "ariaLabel", "style", "styleClass", "labelStyleClass"], outputs: ["onClick", "onFocus", "onBlur"] }] });
225
+ RadioButtonListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: RadioButtonListComponent, selector: "radio-button-list", inputs: { control: "control", dataSource: "dataSource", value: "value", disabled: "disabled" }, outputs: { onInit: "onInit", valueChange: "valueChange", onChanged: "onChanged", onDataSourceLoaded: "onDataSourceLoaded", adjustValue: "adjustValue", onReady: "onReady" }, ngImport: i0, template: "<div class=\"grid tn-check-box-list\" [class.flex-end]=\"control.align == 'right'\"\r\n [class.flex-center]=\"control.align == 'center'\">\r\n <div [class]=\"classCheckBox\" *ngFor=\"let chk of dataSourceInternal\">\r\n <p-radioButton [disabled]=\"disabled ? true : null\" [label]=\"chk.label\" [value]=\"chk.value\" [(ngModel)]=\"_value\"\r\n (onClick)=\"change($event)\">\r\n </p-radioButton>\r\n </div>\r\n</div>", styles: [".tn-check-box-list.p-grid{margin-bottom:-.5em}.btn-clear{height:30px;cursor:pointer;border:none;background:#337ab7;color:#fff;border-radius:3px;padding:0 10px;margin:1px .5em 0}.p-col-horizontal{padding:.5em}::ng-deep .tn-check-box-list{position:relative}::ng-deep .tn-check-box-list.flex-end{justify-content:flex-end}::ng-deep .tn-check-box-list.flex-center{justify-content:center}::ng-deep .tn-check-box-list label{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.RadioButton, selector: "p-radioButton", inputs: ["value", "formControlName", "name", "disabled", "label", "tabindex", "inputId", "ariaLabelledBy", "ariaLabel", "style", "styleClass", "labelStyleClass"], outputs: ["onClick", "onFocus", "onBlur"] }] });
226
226
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: RadioButtonListComponent, decorators: [{
227
227
  type: Component,
228
- args: [{ selector: 'radio-button-list', template: "<div class=\"p-grid tn-check-box-list\" [class.flex-end]=\"control.align == 'right'\"\r\n [class.flex-center]=\"control.align == 'center'\">\r\n <div [class]=\"classCheckBox\" *ngFor=\"let chk of dataSourceInternal\">\r\n <p-radioButton [disabled]=\"disabled ? true : null\" [label]=\"chk.label\" [value]=\"chk.value\"\r\n [(ngModel)]=\"_value\" (onClick)=\"change($event)\">\r\n </p-radioButton>\r\n </div>\r\n</div>\r\n", styles: [".tn-check-box-list.p-grid{margin-bottom:-.5em}.btn-clear{height:30px;cursor:pointer;border:none;background:#337ab7;color:#fff;border-radius:3px;padding:0 10px;margin:1px .5em 0}.p-col-horizontal{padding:.5em}::ng-deep .tn-check-box-list{position:relative}::ng-deep .tn-check-box-list.flex-end{justify-content:flex-end}::ng-deep .tn-check-box-list.flex-center{justify-content:center}::ng-deep .tn-check-box-list label{cursor:pointer}\n"] }]
228
+ args: [{ selector: 'radio-button-list', template: "<div class=\"grid tn-check-box-list\" [class.flex-end]=\"control.align == 'right'\"\r\n [class.flex-center]=\"control.align == 'center'\">\r\n <div [class]=\"classCheckBox\" *ngFor=\"let chk of dataSourceInternal\">\r\n <p-radioButton [disabled]=\"disabled ? true : null\" [label]=\"chk.label\" [value]=\"chk.value\" [(ngModel)]=\"_value\"\r\n (onClick)=\"change($event)\">\r\n </p-radioButton>\r\n </div>\r\n</div>", styles: [".tn-check-box-list.p-grid{margin-bottom:-.5em}.btn-clear{height:30px;cursor:pointer;border:none;background:#337ab7;color:#fff;border-radius:3px;padding:0 10px;margin:1px .5em 0}.p-col-horizontal{padding:.5em}::ng-deep .tn-check-box-list{position:relative}::ng-deep .tn-check-box-list.flex-end{justify-content:flex-end}::ng-deep .tn-check-box-list.flex-center{justify-content:center}::ng-deep .tn-check-box-list label{cursor:pointer}\n"] }]
229
229
  }], ctorParameters: function () { return [{ type: i1.CrudService }, { type: i2.DeviceDetectorService }]; }, propDecorators: { control: [{
230
230
  type: Input
231
231
  }], dataSource: [{
@@ -247,4 +247,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
247
247
  }], onReady: [{
248
248
  type: Output
249
249
  }] } });
250
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tYnV0dG9uLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy9yYWRpby1idXR0b24tbGlzdC9yYWRpby1idXR0b24tbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL3JhZGlvLWJ1dHRvbi1saXN0L3JhZGlvLWJ1dHRvbi1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFNL0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7QUFRekQsTUFBTSxPQUFPLHdCQUF3QjtJQWtDakMsWUFBb0IsWUFBeUIsRUFBVSxzQkFBNkM7UUFBaEYsaUJBQVksR0FBWixZQUFZLENBQWE7UUFBVSwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXVCO1FBaEIxRixXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNqQyxnQkFBVyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3pELGNBQVMsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUN2RCx1QkFBa0IsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNoRSxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDdEMsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFNUMsb0JBQWUsR0FBa0IsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7UUFFaEQsdUJBQWtCLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLDBCQUFxQixH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T0FBTztzQkFBZixLQUFLO2dCQUNPLFVBQVU7c0JBQXRCLEtBQUs7Z0JBSU8sS0FBSztzQkFBakIsS0FBSztnQkFNRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVJLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGV2aWNlRGV0ZWN0b3JTZXJ2aWNlIH0gZnJvbSAnbmd4LWRldmljZS1kZXRlY3Rvcic7XHJcbmltcG9ydCB7IFNlbGVjdEl0ZW0gfSBmcm9tICd0bi1jdXN0b20tcHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBEcm9wZG93bk9wdGlvbnMsIFJhZGlvQnV0dG9uTGlzdENvbnRyb2xTY2hlbWEgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcclxuaW1wb3J0IHsgRmlsdGVyIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyaWQtaW5mbyc7XHJcbmltcG9ydCB7IENydWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY3J1ZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWFzdGVyRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYXN0ZXItZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgYXBwZW5kRGVmYXVsdEZpbHRlciB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbW1vbic7XHJcbmltcG9ydCB7IERyb3Bkb3duU2VydmljZSB9IGZyb20gJy4uL2Ryb3Bkb3duL3NlcnZpY2VzL2Ryb3Bkb3duLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3JhZGlvLWJ1dHRvbi1saXN0JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9yYWRpby1idXR0b24tbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9yYWRpby1idXR0b24tbGlzdC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSYWRpb0J1dHRvbkxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICAgIG9uQ2hhbmdlOiBGdW5jdGlvbjtcclxuICAgIG9uVG91Y2hlZDogRnVuY3Rpb247XHJcblxyXG4gICAgQElucHV0KCkgY29udHJvbDogUmFkaW9CdXR0b25MaXN0Q29udHJvbFNjaGVtYTtcclxuICAgIEBJbnB1dCgpIHNldCBkYXRhU291cmNlKHZhbHVlOiBhbnlbXSkge1xyXG4gICAgICAgIHRoaXMuYmluZGluZ0RhdGFTb3VyY2UodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgX3ZhbHVlOiBhbnk7XHJcbiAgICBASW5wdXQoKSBzZXQgdmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgICAgIGlmICh0aGlzLl92YWx1ZSAhPSB2YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkVmFsdWUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcclxuXHJcbiAgICBAT3V0cHV0KCkgb25Jbml0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25DaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgpIG9uRGF0YVNvdXJjZUxvYWRlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoKSBhZGp1c3RWYWx1ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgpIG9uUmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgICBmdW5jUmV0dXJuVmFsdWU6ICh2YWx1ZSkgPT4ge30gPSB2YWx1ZSA9PiB2YWx1ZTtcclxuXHJcbiAgICBkYXRhU291cmNlSW50ZXJuYWwgPSBbXTtcclxuICAgIGhpZGVUcmFuc2l0aW9uT3B0aW9ucyA9ICcxOTVtcyBlYXNlLWluJztcclxuICAgIHNob3dUcmFuc2l0aW9uT3B0aW9ucyA9ICcyMjVtcyBlYXNlLW91dCc7XHJcbiAgICBjbGFzc0NoZWNrQm94ID0gJ3AtY29sLWhvcml6b250YWwnO1xyXG4gICAgZmllbGRWYWx1ZTogc3RyaW5nO1xyXG4gICAgX2hhc0xvYWRlZERhdGFzb3VyY2UgPSBmYWxzZTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jcnVkU2VydmljZTogQ3J1ZFNlcnZpY2UsIHByaXZhdGUgX2RldmljZURldGVjdG9yU2VydmljZTogRGV2aWNlRGV0ZWN0b3JTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLmNvbnRyb2wuX2NvbXBvbmVudCA9IHRoaXM7XHJcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0U2V0dGluZygpO1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wuYmFzZVNlcnZpY2UpIHtcclxuICAgICAgICAgICAgdGhpcy5fZ2V0RGF0YSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5sYXlvdXQgPT0gJ3ZlcnRpY2FsJykge1xyXG4gICAgICAgICAgICB0aGlzLmNsYXNzQ2hlY2tCb3ggPSAncC1yb3cnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXRoaXMuX2RldmljZURldGVjdG9yU2VydmljZS5pc0Rlc2t0b3AoKSkge1xyXG4gICAgICAgICAgICB0aGlzLmhpZGVUcmFuc2l0aW9uT3B0aW9ucyA9IHRoaXMuc2hvd1RyYW5zaXRpb25PcHRpb25zID0gJyc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMub25Jbml0LmVtaXQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RGVmYXVsdFNldHRpbmcoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5yZXR1cm5UeXBlID09ICd2YWx1ZScpIHtcclxuICAgICAgICAgICAgdGhpcy5mdW5jUmV0dXJuVmFsdWUgPSAodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZVt0aGlzLmNvbnRyb2wudmFsdWVGaWVsZF07XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmZ1bmNSZXR1cm5WYWx1ZSA9IHZhbHVlID0+IHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGJpbmRpbmdEYXRhU291cmNlKHNvdXJjZXM6IGFueVtdKSB7XHJcbiAgICAgICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLl92YWx1ZTtcclxuICAgICAgICBsZXQgaGFzVmFsdWVJblNvdXJjZSA9IGZhbHNlO1xyXG4gICAgICAgIGlmIChzb3VyY2VzICE9IG51bGwgJiYgc291cmNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2hhc0xvYWRlZERhdGFzb3VyY2UgPSB0cnVlO1xyXG4gICAgICAgICAgICBjb25zdCBhcnIgPSBbXTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiBzb3VyY2VzKSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtID0gdGhpcy5yZVN0cnVjdHVyZUl0ZW1PYmplY3QoaXRlbSk7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fdmFsdWUgIT0gbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgICYmIHRoaXMuX3ZhbHVlICE9PSAnJ1xyXG4gICAgICAgICAgICAgICAgICAgICYmIChpdGVtLnZhbHVlW3RoaXMuY29udHJvbC52YWx1ZUZpZWxkXSA9PSB0aGlzLl92YWx1ZSB8fCBpdGVtLnZhbHVlW3RoaXMuY29udHJvbC52YWx1ZUZpZWxkXSA9PSB0aGlzLl92YWx1ZVt0aGlzLmNvbnRyb2wudmFsdWVGaWVsZF0pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSBpdGVtLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGhhc1ZhbHVlSW5Tb3VyY2UgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYXJyLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZUludGVybmFsID0gYXJyO1xyXG5cclxuICAgICAgICAgICAgaWYgKCFoYXNWYWx1ZUluU291cmNlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZSA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZUludGVybmFsID0gW107XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5faGFzTG9hZGVkRGF0YXNvdXJjZSkge1xyXG4gICAgICAgICAgICAvLyBMxrB1IMO9IGlmIOG7nyBkxrDhu5tpIGtow7RuZyDEkcaw4bujYyDEkeG7lWkgdGjDoG5oIG9sZFZhbHVlICE9IHRoaXMuX3ZhbHVlXHJcbiAgICAgICAgICAgIC8vIFbDrCBnacOhIHRy4buLIGPhu6dhIHRoaXMuX3ZhbHVlIHPhur0gxJHGsOG7o2MgY29ycmVjdGluZyDhu58gdHLDqm4gKGlkID0+IG9iamVjdCkgbsOqbiBzbyBzw6FuaCBz4bq9IGtow6FjIG5oYXVcclxuICAgICAgICAgICAgaWYgKChvbGRWYWx1ZSAhPSBudWxsICYmIHRoaXMuX3ZhbHVlID09IG51bGwpXHJcbiAgICAgICAgICAgICAgICB8fCAob2xkVmFsdWUgPT0gbnVsbCAmJiB0aGlzLl92YWx1ZSAhPSBudWxsKVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmlyZUNoYW5nZWRFdmVudCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuX3ZhbHVlICE9IG9sZFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkanVzdFZhbHVlMldheUJpbmRpbmcoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLm9uUmVhZHkuZW1pdCh0aGlzLmNvbnRyb2wuZmllbGQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNoZWNrUmVhZHkoKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRTZWxlY3RlZFZhbHVlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9oYXNMb2FkZWREYXRhc291cmNlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy5fdmFsdWU7XHJcbiAgICAgICAgICAgIGxldCBoYXNWYWx1ZUluU291cmNlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGFTb3VyY2VJbnRlcm5hbCAhPSBudWxsICYmIHRoaXMuZGF0YVNvdXJjZUludGVybmFsLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLmRhdGFTb3VyY2VJbnRlcm5hbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl92YWx1ZSAhPSBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIHRoaXMuX3ZhbHVlICE9PSAnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiAoaXRlbS52YWx1ZVt0aGlzLmNvbnRyb2wudmFsdWVGaWVsZF0gPT0gdGhpcy5fdmFsdWUgfHwgaXRlbS52YWx1ZVt0aGlzLmNvbnRyb2wudmFsdWVGaWVsZF0gPT0gdGhpcy5fdmFsdWVbdGhpcy5jb250cm9sLnZhbHVlRmllbGRdKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZSA9IGl0ZW0udmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc1ZhbHVlSW5Tb3VyY2UgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoIWhhc1ZhbHVlSW5Tb3VyY2UpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKChvbGRWYWx1ZSAhPSBudWxsICYmIHRoaXMuX3ZhbHVlID09IG51bGwpXHJcbiAgICAgICAgICAgICAgICB8fCAob2xkVmFsdWUgPT0gbnVsbCAmJiB0aGlzLl92YWx1ZSAhPSBudWxsKVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmlyZUNoYW5nZWRFdmVudCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuX3ZhbHVlICE9IG9sZFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkanVzdFZhbHVlMldheUJpbmRpbmcoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNoZWNrUmVhZHkoKTtcclxuICAgIH1cclxuXHJcbiAgICByZVN0cnVjdHVyZUl0ZW1PYmplY3QoaXRlbSk6IFNlbGVjdEl0ZW0ge1xyXG4gICAgICAgIGNvbnN0IHRlbXA6IFNlbGVjdEl0ZW0gPSB7IHZhbHVlOiBpdGVtIH07XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5mdW5jR2V0TGFiZWwpIHtcclxuICAgICAgICAgICAgdGVtcC5sYWJlbCA9IHRoaXMuY29udHJvbC5mdW5jR2V0TGFiZWwoaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0ZW1wLmxhYmVsID0gaXRlbVt0aGlzLmNvbnRyb2wuZGlzcGxheUZpZWxkXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGVtcC52YWx1ZS5fZHJvcGRvd252YWx1ZSA9IHRoaXMuY29udHJvbC52YWx1ZUZpZWxkO1xyXG4gICAgICAgIHJldHVybiB0ZW1wO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXN5bmMgX2dldERhdGEoZmlsdGVyUGFyZW50cz86IEZpbHRlcltdKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5iYXNlU2VydmljZSkge1xyXG4gICAgICAgICAgICBpZiAoIWZpbHRlclBhcmVudHMpIGZpbHRlclBhcmVudHMgPSBbXTtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5fZ2V0RGF0YVNvdXJjZShmaWx0ZXJQYXJlbnRzKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhc3luYyBfZ2V0RGF0YVNvdXJjZShmaWx0ZXJGcm9tUGFyZW50czogRmlsdGVyW10pIHtcclxuICAgICAgICBjb25zdCBmaWx0ZXJzID0gYXdhaXQgdGhpcy5maWx0ZXJQcm9jZXNzKGZpbHRlckZyb21QYXJlbnRzKTtcclxuICAgICAgICBjb25zdCBkcm9wZG93bk9wdGlvbnMgPSB0aGlzLl9jcnVkU2VydmljZS5jcmVhdGVEcm9wZG93bk9wdGlvbnModGhpcy5jb250cm9sKTtcclxuICAgICAgICBsZXQgZGF0YVNvdXJjZTogYW55W107XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5iYXNlU2VydmljZSBpbnN0YW5jZW9mIE1hc3RlckRhdGFTZXJ2aWNlKSB7XHJcbiAgICAgICAgICAgIGRhdGFTb3VyY2UgPSBhd2FpdCB0aGlzLmNvbnRyb2wuYmFzZVNlcnZpY2UuZ2V0RGF0YURyb3Bkb3duQnlGaWx0ZXIoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2wuZ3JvdXBDb2RlLCBudWxsLCBmaWx0ZXJzLCBkcm9wZG93bk9wdGlvbnNcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2wuaXNUcmVlKSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlID0gYXdhaXQgdGhpcy5jb250cm9sLmJhc2VTZXJ2aWNlLmdldFRyZWVEYXRhRHJvcGRvd25CeUZpbHRlcihcclxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzLCB0aGlzLmNvbnRyb2wuZmllbGRUcmVlLCB0aGlzLmNvbnRyb2wudmFsdWVQYXJlbnRSb290LCBkcm9wZG93bk9wdGlvbnNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlID0gYXdhaXQgdGhpcy5jb250cm9sLmJhc2VTZXJ2aWNlLmdldERhdGFEcm9wZG93bkJ5RmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcnMsIGRyb3Bkb3duT3B0aW9uc1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5iaW5kaW5nRGF0YVNvdXJjZShkYXRhU291cmNlKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5maXJlQ2FsbEJhY2tJbnNpZGUpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbC5jYWxsYmFja0RhdGFGaW5pc2gpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbC5jYWxsYmFja0RhdGFGaW5pc2goPGFueT57XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogZGF0YVNvdXJjZSxcclxuICAgICAgICAgICAgICAgICAgICBlbG06IHRoaXNcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm9uRGF0YVNvdXJjZUxvYWRlZC5lbWl0KHtcclxuICAgICAgICAgICAgICAgIGRhdGFTb3VyY2UsXHJcbiAgICAgICAgICAgICAgICBlbG06IHRoaXNcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXN5bmMgZmlsdGVyUHJvY2VzcyhmaWx0ZXJGcm9tUGFyZW50czogRmlsdGVyW10pIHtcclxuICAgICAgICBjb25zdCBmaWx0ZXJzID0gZmlsdGVyRnJvbVBhcmVudHM7XHJcbiAgICAgICAgYXdhaXQgYXBwZW5kRGVmYXVsdEZpbHRlcihmaWx0ZXJzLCB0aGlzLmNvbnRyb2wuZGVmYXVsdEZpbHRlcnMpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5jb250cm9sLm1vZGlmeUZpbHRlcikge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmNvbnRyb2wubW9kaWZ5RmlsdGVyKGZpbHRlcnMsIHRoaXMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGZpbHRlcnM7XHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tSZWFkeSgpIHtcclxuICAgICAgICBpZiAodGhpcy5jb250cm9sLm9uQWRqdXN0ZWRWYWx1ZVxyXG4gICAgICAgICAgICAmJiB0aGlzLl9oYXNMb2FkZWREYXRhc291cmNlXHJcbiAgICAgICAgICAgICYmIHRoaXMuX3ZhbHVlICE9IG51bGxcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5maXJlQWRqdXN0VmFsdWVFdmVudCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRWYWx1ZVJldHVybigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5mdW5jUmV0dXJuVmFsdWUodGhpcy5fdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrSW5pdGVkQ29udHJvbCgpIHtcclxuICAgICAgICAvLyBO4bq/dSBjaMawYSBjaOG6oXkgcXVhIGluaXQgdGjDrCBrIGZpcmUgZXZlbnQgZ8OsIGPhuqNcclxuICAgICAgICByZXR1cm4gISF0aGlzLmNvbnRyb2wuX2NvbXBvbmVudDtcclxuICAgIH1cclxuXHJcbiAgICBmaXJlQ2hhbmdlZEV2ZW50KCkge1xyXG4gICAgICAgIC8vIE7hur91IGNoxrBhIGNo4bqheSBxdWEgaW5pdCB0aMOsIGsgZmlyZSBldmVudCBnw6wgY+G6o1xyXG4gICAgICAgIGlmICghdGhpcy5jaGVja0luaXRlZENvbnRyb2woKSkgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IHZhbHVlUmV0dXJuID0gdGhpcy5nZXRWYWx1ZVJldHVybigpO1xyXG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZVJldHVybik7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZWQuZW1pdCh2YWx1ZVJldHVybik7XHJcbiAgICB9XHJcblxyXG4gICAgZmlyZUFkanVzdFZhbHVlRXZlbnQoKSB7XHJcbiAgICAgICAgLy8gTuG6v3UgY2jGsGEgY2jhuqF5IHF1YSBpbml0IHRow6wgayBmaXJlIGV2ZW50IGfDrCBj4bqjXHJcbiAgICAgICAgaWYgKCF0aGlzLmNoZWNrSW5pdGVkQ29udHJvbCgpKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgdmFsdWVSZXR1cm4gPSB0aGlzLmdldFZhbHVlUmV0dXJuKCk7XHJcbiAgICAgICAgdGhpcy5hZGp1c3RWYWx1ZS5uZXh0KHZhbHVlUmV0dXJuKTtcclxuICAgIH1cclxuXHJcbiAgICBhZGp1c3RWYWx1ZTJXYXlCaW5kaW5nKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5jaGVja0luaXRlZENvbnRyb2woKSkgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IHZhbHVlUmV0dXJuID0gdGhpcy5nZXRWYWx1ZVJldHVybigpO1xyXG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZVJldHVybik7XHJcbiAgICB9XHJcblxyXG4gICAgY2hhbmdlKGV2ZW50KSB7XHJcbiAgICAgICAgdGhpcy5maXJlQ2hhbmdlZEV2ZW50KCk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInAtZ3JpZCB0bi1jaGVjay1ib3gtbGlzdFwiIFtjbGFzcy5mbGV4LWVuZF09XCJjb250cm9sLmFsaWduID09ICdyaWdodCdcIlxyXG4gICAgW2NsYXNzLmZsZXgtY2VudGVyXT1cImNvbnRyb2wuYWxpZ24gPT0gJ2NlbnRlcidcIj5cclxuICAgIDxkaXYgW2NsYXNzXT1cImNsYXNzQ2hlY2tCb3hcIiAqbmdGb3I9XCJsZXQgY2hrIG9mIGRhdGFTb3VyY2VJbnRlcm5hbFwiPlxyXG4gICAgICAgIDxwLXJhZGlvQnV0dG9uIFtkaXNhYmxlZF09XCJkaXNhYmxlZCA/IHRydWUgOiBudWxsXCIgW2xhYmVsXT1cImNoay5sYWJlbFwiIFt2YWx1ZV09XCJjaGsudmFsdWVcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cIl92YWx1ZVwiIChvbkNsaWNrKT1cImNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgPC9wLXJhZGlvQnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
250
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tYnV0dG9uLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy9yYWRpby1idXR0b24tbGlzdC9yYWRpby1idXR0b24tbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL3JhZGlvLWJ1dHRvbi1saXN0L3JhZGlvLWJ1dHRvbi1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFNL0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7QUFRekQsTUFBTSxPQUFPLHdCQUF3QjtJQWtDakMsWUFBb0IsWUFBeUIsRUFBVSxzQkFBNkM7UUFBaEYsaUJBQVksR0FBWixZQUFZLENBQWE7UUFBVSwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXVCO1FBaEIxRixXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNqQyxnQkFBVyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3pELGNBQVMsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUN2RCx1QkFBa0IsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNoRSxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDdEMsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFNUMsb0JBQWUsR0FBa0IsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7UUFFaEQsdUJBQWtCLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLDBCQUFxQixH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T0FBTztzQkFBZixLQUFLO2dCQUNPLFVBQVU7c0JBQXRCLEtBQUs7Z0JBSU8sS0FBSztzQkFBakIsS0FBSztnQkFNRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVJLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGV2aWNlRGV0ZWN0b3JTZXJ2aWNlIH0gZnJvbSAnbmd4LWRldmljZS1kZXRlY3Rvcic7XHJcbmltcG9ydCB7IFNlbGVjdEl0ZW0gfSBmcm9tICd0bi1jdXN0b20tcHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBEcm9wZG93bk9wdGlvbnMsIFJhZGlvQnV0dG9uTGlzdENvbnRyb2xTY2hlbWEgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcclxuaW1wb3J0IHsgRmlsdGVyIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyaWQtaW5mbyc7XHJcbmltcG9ydCB7IENydWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY3J1ZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWFzdGVyRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYXN0ZXItZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgYXBwZW5kRGVmYXVsdEZpbHRlciB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbW1vbic7XHJcbmltcG9ydCB7IERyb3Bkb3duU2VydmljZSB9IGZyb20gJy4uL2Ryb3Bkb3duL3NlcnZpY2VzL2Ryb3Bkb3duLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3JhZGlvLWJ1dHRvbi1saXN0JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9yYWRpby1idXR0b24tbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9yYWRpby1idXR0b24tbGlzdC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSYWRpb0J1dHRvbkxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICAgIG9uQ2hhbmdlOiBGdW5jdGlvbjtcclxuICAgIG9uVG91Y2hlZDogRnVuY3Rpb247XHJcblxyXG4gICAgQElucHV0KCkgY29udHJvbDogUmFkaW9CdXR0b25MaXN0Q29udHJvbFNjaGVtYTtcclxuICAgIEBJbnB1dCgpIHNldCBkYXRhU291cmNlKHZhbHVlOiBhbnlbXSkge1xyXG4gICAgICAgIHRoaXMuYmluZGluZ0RhdGFTb3VyY2UodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgX3ZhbHVlOiBhbnk7XHJcbiAgICBASW5wdXQoKSBzZXQgdmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgICAgIGlmICh0aGlzLl92YWx1ZSAhPSB2YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkVmFsdWUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcclxuXHJcbiAgICBAT3V0cHV0KCkgb25Jbml0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25DaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgpIG9uRGF0YVNvdXJjZUxvYWRlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoKSBhZGp1c3RWYWx1ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgpIG9uUmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgICBmdW5jUmV0dXJuVmFsdWU6ICh2YWx1ZSkgPT4ge30gPSB2YWx1ZSA9PiB2YWx1ZTtcclxuXHJcbiAgICBkYXRhU291cmNlSW50ZXJuYWwgPSBbXTtcclxuICAgIGhpZGVUcmFuc2l0aW9uT3B0aW9ucyA9ICcxOTVtcyBlYXNlLWluJztcclxuICAgIHNob3dUcmFuc2l0aW9uT3B0aW9ucyA9ICcyMjVtcyBlYXNlLW91dCc7XHJcbiAgICBjbGFzc0NoZWNrQm94ID0gJ3AtY29sLWhvcml6b250YWwnO1xyXG4gICAgZmllbGRWYWx1ZTogc3RyaW5nO1xyXG4gICAgX2hhc0xvYWRlZERhdGFzb3VyY2UgPSBmYWxzZTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jcnVkU2VydmljZTogQ3J1ZFNlcnZpY2UsIHByaXZhdGUgX2RldmljZURldGVjdG9yU2VydmljZTogRGV2aWNlRGV0ZWN0b3JTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLmNvbnRyb2wuX2NvbXBvbmVudCA9IHRoaXM7XHJcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0U2V0dGluZygpO1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wuYmFzZVNlcnZpY2UpIHtcclxuICAgICAgICAgICAgdGhpcy5fZ2V0RGF0YSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5sYXlvdXQgPT0gJ3ZlcnRpY2FsJykge1xyXG4gICAgICAgICAgICB0aGlzLmNsYXNzQ2hlY2tCb3ggPSAncC1yb3cnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXRoaXMuX2RldmljZURldGVjdG9yU2VydmljZS5pc0Rlc2t0b3AoKSkge1xyXG4gICAgICAgICAgICB0aGlzLmhpZGVUcmFuc2l0aW9uT3B0aW9ucyA9IHRoaXMuc2hvd1RyYW5zaXRpb25PcHRpb25zID0gJyc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMub25Jbml0LmVtaXQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RGVmYXVsdFNldHRpbmcoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5yZXR1cm5UeXBlID09ICd2YWx1ZScpIHtcclxuICAgICAgICAgICAgdGhpcy5mdW5jUmV0dXJuVmFsdWUgPSAodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZVt0aGlzLmNvbnRyb2wudmFsdWVGaWVsZF07XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmZ1bmNSZXR1cm5WYWx1ZSA9IHZhbHVlID0+IHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGJpbmRpbmdEYXRhU291cmNlKHNvdXJjZXM6IGFueVtdKSB7XHJcbiAgICAgICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLl92YWx1ZTtcclxuICAgICAgICBsZXQgaGFzVmFsdWVJblNvdXJjZSA9IGZhbHNlO1xyXG4gICAgICAgIGlmIChzb3VyY2VzICE9IG51bGwgJiYgc291cmNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2hhc0xvYWRlZERhdGFzb3VyY2UgPSB0cnVlO1xyXG4gICAgICAgICAgICBjb25zdCBhcnIgPSBbXTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiBzb3VyY2VzKSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtID0gdGhpcy5yZVN0cnVjdHVyZUl0ZW1PYmplY3QoaXRlbSk7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fdmFsdWUgIT0gbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgICYmIHRoaXMuX3ZhbHVlICE9PSAnJ1xyXG4gICAgICAgICAgICAgICAgICAgICYmIChpdGVtLnZhbHVlW3RoaXMuY29udHJvbC52YWx1ZUZpZWxkXSA9PSB0aGlzLl92YWx1ZSB8fCBpdGVtLnZhbHVlW3RoaXMuY29udHJvbC52YWx1ZUZpZWxkXSA9PSB0aGlzLl92YWx1ZVt0aGlzLmNvbnRyb2wudmFsdWVGaWVsZF0pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSBpdGVtLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGhhc1ZhbHVlSW5Tb3VyY2UgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYXJyLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZUludGVybmFsID0gYXJyO1xyXG5cclxuICAgICAgICAgICAgaWYgKCFoYXNWYWx1ZUluU291cmNlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZSA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZUludGVybmFsID0gW107XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5faGFzTG9hZGVkRGF0YXNvdXJjZSkge1xyXG4gICAgICAgICAgICAvLyBMxrB1IMO9IGlmIOG7nyBkxrDhu5tpIGtow7RuZyDEkcaw4bujYyDEkeG7lWkgdGjDoG5oIG9sZFZhbHVlICE9IHRoaXMuX3ZhbHVlXHJcbiAgICAgICAgICAgIC8vIFbDrCBnacOhIHRy4buLIGPhu6dhIHRoaXMuX3ZhbHVlIHPhur0gxJHGsOG7o2MgY29ycmVjdGluZyDhu58gdHLDqm4gKGlkID0+IG9iamVjdCkgbsOqbiBzbyBzw6FuaCBz4bq9IGtow6FjIG5oYXVcclxuICAgICAgICAgICAgaWYgKChvbGRWYWx1ZSAhPSBudWxsICYmIHRoaXMuX3ZhbHVlID09IG51bGwpXHJcbiAgICAgICAgICAgICAgICB8fCAob2xkVmFsdWUgPT0gbnVsbCAmJiB0aGlzLl92YWx1ZSAhPSBudWxsKVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmlyZUNoYW5nZWRFdmVudCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuX3ZhbHVlICE9IG9sZFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkanVzdFZhbHVlMldheUJpbmRpbmcoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLm9uUmVhZHkuZW1pdCh0aGlzLmNvbnRyb2wuZmllbGQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNoZWNrUmVhZHkoKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRTZWxlY3RlZFZhbHVlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9oYXNMb2FkZWREYXRhc291cmNlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy5fdmFsdWU7XHJcbiAgICAgICAgICAgIGxldCBoYXNWYWx1ZUluU291cmNlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGFTb3VyY2VJbnRlcm5hbCAhPSBudWxsICYmIHRoaXMuZGF0YVNvdXJjZUludGVybmFsLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLmRhdGFTb3VyY2VJbnRlcm5hbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl92YWx1ZSAhPSBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIHRoaXMuX3ZhbHVlICE9PSAnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiAoaXRlbS52YWx1ZVt0aGlzLmNvbnRyb2wudmFsdWVGaWVsZF0gPT0gdGhpcy5fdmFsdWUgfHwgaXRlbS52YWx1ZVt0aGlzLmNvbnRyb2wudmFsdWVGaWVsZF0gPT0gdGhpcy5fdmFsdWVbdGhpcy5jb250cm9sLnZhbHVlRmllbGRdKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZSA9IGl0ZW0udmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc1ZhbHVlSW5Tb3VyY2UgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoIWhhc1ZhbHVlSW5Tb3VyY2UpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKChvbGRWYWx1ZSAhPSBudWxsICYmIHRoaXMuX3ZhbHVlID09IG51bGwpXHJcbiAgICAgICAgICAgICAgICB8fCAob2xkVmFsdWUgPT0gbnVsbCAmJiB0aGlzLl92YWx1ZSAhPSBudWxsKVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmlyZUNoYW5nZWRFdmVudCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuX3ZhbHVlICE9IG9sZFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkanVzdFZhbHVlMldheUJpbmRpbmcoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNoZWNrUmVhZHkoKTtcclxuICAgIH1cclxuXHJcbiAgICByZVN0cnVjdHVyZUl0ZW1PYmplY3QoaXRlbSk6IFNlbGVjdEl0ZW0ge1xyXG4gICAgICAgIGNvbnN0IHRlbXA6IFNlbGVjdEl0ZW0gPSB7IHZhbHVlOiBpdGVtIH07XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5mdW5jR2V0TGFiZWwpIHtcclxuICAgICAgICAgICAgdGVtcC5sYWJlbCA9IHRoaXMuY29udHJvbC5mdW5jR2V0TGFiZWwoaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0ZW1wLmxhYmVsID0gaXRlbVt0aGlzLmNvbnRyb2wuZGlzcGxheUZpZWxkXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGVtcC52YWx1ZS5fZHJvcGRvd252YWx1ZSA9IHRoaXMuY29udHJvbC52YWx1ZUZpZWxkO1xyXG4gICAgICAgIHJldHVybiB0ZW1wO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXN5bmMgX2dldERhdGEoZmlsdGVyUGFyZW50cz86IEZpbHRlcltdKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5iYXNlU2VydmljZSkge1xyXG4gICAgICAgICAgICBpZiAoIWZpbHRlclBhcmVudHMpIGZpbHRlclBhcmVudHMgPSBbXTtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5fZ2V0RGF0YVNvdXJjZShmaWx0ZXJQYXJlbnRzKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhc3luYyBfZ2V0RGF0YVNvdXJjZShmaWx0ZXJGcm9tUGFyZW50czogRmlsdGVyW10pIHtcclxuICAgICAgICBjb25zdCBmaWx0ZXJzID0gYXdhaXQgdGhpcy5maWx0ZXJQcm9jZXNzKGZpbHRlckZyb21QYXJlbnRzKTtcclxuICAgICAgICBjb25zdCBkcm9wZG93bk9wdGlvbnMgPSB0aGlzLl9jcnVkU2VydmljZS5jcmVhdGVEcm9wZG93bk9wdGlvbnModGhpcy5jb250cm9sKTtcclxuICAgICAgICBsZXQgZGF0YVNvdXJjZTogYW55W107XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5iYXNlU2VydmljZSBpbnN0YW5jZW9mIE1hc3RlckRhdGFTZXJ2aWNlKSB7XHJcbiAgICAgICAgICAgIGRhdGFTb3VyY2UgPSBhd2FpdCB0aGlzLmNvbnRyb2wuYmFzZVNlcnZpY2UuZ2V0RGF0YURyb3Bkb3duQnlGaWx0ZXIoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2wuZ3JvdXBDb2RlLCBudWxsLCBmaWx0ZXJzLCBkcm9wZG93bk9wdGlvbnNcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2wuaXNUcmVlKSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlID0gYXdhaXQgdGhpcy5jb250cm9sLmJhc2VTZXJ2aWNlLmdldFRyZWVEYXRhRHJvcGRvd25CeUZpbHRlcihcclxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzLCB0aGlzLmNvbnRyb2wuZmllbGRUcmVlLCB0aGlzLmNvbnRyb2wudmFsdWVQYXJlbnRSb290LCBkcm9wZG93bk9wdGlvbnNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlID0gYXdhaXQgdGhpcy5jb250cm9sLmJhc2VTZXJ2aWNlLmdldERhdGFEcm9wZG93bkJ5RmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcnMsIGRyb3Bkb3duT3B0aW9uc1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5iaW5kaW5nRGF0YVNvdXJjZShkYXRhU291cmNlKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC5maXJlQ2FsbEJhY2tJbnNpZGUpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbC5jYWxsYmFja0RhdGFGaW5pc2gpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbC5jYWxsYmFja0RhdGFGaW5pc2goPGFueT57XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogZGF0YVNvdXJjZSxcclxuICAgICAgICAgICAgICAgICAgICBlbG06IHRoaXNcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm9uRGF0YVNvdXJjZUxvYWRlZC5lbWl0KHtcclxuICAgICAgICAgICAgICAgIGRhdGFTb3VyY2UsXHJcbiAgICAgICAgICAgICAgICBlbG06IHRoaXNcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXN5bmMgZmlsdGVyUHJvY2VzcyhmaWx0ZXJGcm9tUGFyZW50czogRmlsdGVyW10pIHtcclxuICAgICAgICBjb25zdCBmaWx0ZXJzID0gZmlsdGVyRnJvbVBhcmVudHM7XHJcbiAgICAgICAgYXdhaXQgYXBwZW5kRGVmYXVsdEZpbHRlcihmaWx0ZXJzLCB0aGlzLmNvbnRyb2wuZGVmYXVsdEZpbHRlcnMpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5jb250cm9sLm1vZGlmeUZpbHRlcikge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmNvbnRyb2wubW9kaWZ5RmlsdGVyKGZpbHRlcnMsIHRoaXMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGZpbHRlcnM7XHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tSZWFkeSgpIHtcclxuICAgICAgICBpZiAodGhpcy5jb250cm9sLm9uQWRqdXN0ZWRWYWx1ZVxyXG4gICAgICAgICAgICAmJiB0aGlzLl9oYXNMb2FkZWREYXRhc291cmNlXHJcbiAgICAgICAgICAgICYmIHRoaXMuX3ZhbHVlICE9IG51bGxcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5maXJlQWRqdXN0VmFsdWVFdmVudCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRWYWx1ZVJldHVybigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5mdW5jUmV0dXJuVmFsdWUodGhpcy5fdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrSW5pdGVkQ29udHJvbCgpIHtcclxuICAgICAgICAvLyBO4bq/dSBjaMawYSBjaOG6oXkgcXVhIGluaXQgdGjDrCBrIGZpcmUgZXZlbnQgZ8OsIGPhuqNcclxuICAgICAgICByZXR1cm4gISF0aGlzLmNvbnRyb2wuX2NvbXBvbmVudDtcclxuICAgIH1cclxuXHJcbiAgICBmaXJlQ2hhbmdlZEV2ZW50KCkge1xyXG4gICAgICAgIC8vIE7hur91IGNoxrBhIGNo4bqheSBxdWEgaW5pdCB0aMOsIGsgZmlyZSBldmVudCBnw6wgY+G6o1xyXG4gICAgICAgIGlmICghdGhpcy5jaGVja0luaXRlZENvbnRyb2woKSkgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IHZhbHVlUmV0dXJuID0gdGhpcy5nZXRWYWx1ZVJldHVybigpO1xyXG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZVJldHVybik7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZWQuZW1pdCh2YWx1ZVJldHVybik7XHJcbiAgICB9XHJcblxyXG4gICAgZmlyZUFkanVzdFZhbHVlRXZlbnQoKSB7XHJcbiAgICAgICAgLy8gTuG6v3UgY2jGsGEgY2jhuqF5IHF1YSBpbml0IHRow6wgayBmaXJlIGV2ZW50IGfDrCBj4bqjXHJcbiAgICAgICAgaWYgKCF0aGlzLmNoZWNrSW5pdGVkQ29udHJvbCgpKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgdmFsdWVSZXR1cm4gPSB0aGlzLmdldFZhbHVlUmV0dXJuKCk7XHJcbiAgICAgICAgdGhpcy5hZGp1c3RWYWx1ZS5uZXh0KHZhbHVlUmV0dXJuKTtcclxuICAgIH1cclxuXHJcbiAgICBhZGp1c3RWYWx1ZTJXYXlCaW5kaW5nKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5jaGVja0luaXRlZENvbnRyb2woKSkgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IHZhbHVlUmV0dXJuID0gdGhpcy5nZXRWYWx1ZVJldHVybigpO1xyXG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZVJldHVybik7XHJcbiAgICB9XHJcblxyXG4gICAgY2hhbmdlKGV2ZW50KSB7XHJcbiAgICAgICAgdGhpcy5maXJlQ2hhbmdlZEV2ZW50KCk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImdyaWQgdG4tY2hlY2stYm94LWxpc3RcIiBbY2xhc3MuZmxleC1lbmRdPVwiY29udHJvbC5hbGlnbiA9PSAncmlnaHQnXCJcclxuICAgIFtjbGFzcy5mbGV4LWNlbnRlcl09XCJjb250cm9sLmFsaWduID09ICdjZW50ZXInXCI+XHJcbiAgICA8ZGl2IFtjbGFzc109XCJjbGFzc0NoZWNrQm94XCIgKm5nRm9yPVwibGV0IGNoayBvZiBkYXRhU291cmNlSW50ZXJuYWxcIj5cclxuICAgICAgICA8cC1yYWRpb0J1dHRvbiBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyB0cnVlIDogbnVsbFwiIFtsYWJlbF09XCJjaGsubGFiZWxcIiBbdmFsdWVdPVwiY2hrLnZhbHVlXCIgWyhuZ01vZGVsKV09XCJfdmFsdWVcIlxyXG4gICAgICAgICAgICAob25DbGljayk9XCJjaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgIDwvcC1yYWRpb0J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
@@ -1,7 +1,7 @@
1
1
  import { Component, Input, ViewChild } from '@angular/core';
2
2
  import { TemplateConstant } from '../../configs/component-contants';
3
3
  import { JobItem, JobTypes, REPORT_QUEUE_CONSTANT } from './base-job/job-item';
4
- import * as FileSaver from 'file-saver';
4
+ import FileSaver from 'file-saver';
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "../../services/notifier.service";
7
7
  import * as i2 from "../../services/common.service";
@@ -287,4 +287,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
287
287
  type: ViewChild,
288
288
  args: ['scrollbar']
289
289
  }] } });
290
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXF1ZXVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC9zcmMvbGliL2NvbXBvbmVudHMvcmVwb3J0LXF1ZXVlL3JlcG9ydC1xdWV1ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL3JlcG9ydC1xdWV1ZS9yZXBvcnQtcXVldWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBU3BFLE9BQU8sRUFBYSxPQUFPLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUYsT0FBTyxLQUFLLFNBQVMsTUFBTSxZQUFZLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQVF4QyxNQUFNLE9BQU8sb0JBQW9CO0lBa0I3QixZQUNZLGdCQUFpQyxFQUNqQyxjQUE2QixFQUM3QixZQUFpQyxFQUNqQyxlQUFnQyxFQUNoQyxlQUErQixFQUMvQix1QkFBK0MsRUFDL0MsWUFBeUI7UUFOekIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUNqQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUM3QixpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFDakMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtRQUMvQiw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXdCO1FBQy9DLGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBdkI1QixTQUFJLEdBQUcsYUFBYSxDQUFDO1FBQ3JCLFdBQU0sR0FBRyxjQUFjLENBQUM7UUFDeEIsaUJBQVksR0FBRyxLQUFLLENBQUM7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QUFDLEtBQUssSUFBSSxRQUFRLENBQUMsUUFBUSxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUM7b0JBQ25FLElBQUksZUFBZSxFQUFFO3dCQUNqQixJQUFJLENBQUMsZUFBZSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO3FCQUN0RTtnQkFDTCxDQUFDLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDN0IsQ0FBQyxDQUFDLENBQUM7U0FDVjthQUFNO1lBQ0gsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7U0FDcEI7SUFDTCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2IsSUFBSSxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQzFELElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN6RSxDQUFDOztpSEFqUlEsb0JBQW9CO3FHQUFwQixvQkFBb0IsMFFDbkJqQyxzOUVBaURBOzJGRDlCYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0ksY0FBYzs4UkFLZixlQUFlO3NCQUF2QixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDa0IsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVGVtcGxhdGVDb25zdGFudCB9IGZyb20gJy4uLy4uL2NvbmZpZ3MvY29tcG9uZW50LWNvbnRhbnRzJztcclxuaW1wb3J0IHsgUmVzcG9uc2VSZXN1bHQgfSBmcm9tICcuLi8uLi9tb2RlbHMvcmVzcG9uc2UtcmVzdWx0JztcclxuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbW1vbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ3J1ZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jcnVkLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIaWdoUGVyZm9ybWFuY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaGlnaC1wZXJmb3JtYW5jZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTm90aWZpZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbm90aWZpZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFNpZ25hbFJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2lnbmFsci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVGVtcGxhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGVtcGxhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEZpbGVFeHBsb3JlclNlcnZpY2UgfSBmcm9tICcuLi9maWxlLWV4cGxvcmVyL3NlcnZpY2VzL2ZpbGUtZXhwbG9yZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IEV4cG9ydEpvYiwgSm9iSXRlbSwgSm9iVHlwZXMsIFJFUE9SVF9RVUVVRV9DT05TVEFOVCB9IGZyb20gJy4vYmFzZS1qb2Ivam9iLWl0ZW0nO1xyXG5pbXBvcnQgKiBhcyBGaWxlU2F2ZXIgZnJvbSAnZmlsZS1zYXZlcic7XHJcbmltcG9ydCB7IFRuQ3VzdG9tU2Nyb2xsYmFyQ29tcG9uZW50IH0gZnJvbSAnLi4vdG4tY3VzdG9tLXNjcm9sbGJhci90bi1jdXN0b20tc2Nyb2xsYmFyLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAncmVwb3J0LXF1ZXVlJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9yZXBvcnQtcXVldWUuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vcmVwb3J0LXF1ZXVlLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFJlcG9ydFF1ZXVlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIEBJbnB1dCgpIHBhcmVudERhdGFNb2RlbDogYW55O1xyXG4gICAgQElucHV0KCkgbmFtZSA9ICdyZXBvcnRRdWV1ZSc7XHJcbiAgICBASW5wdXQoKSBoZWFkZXIgPSAnWHXhuqV0IGLDoW8gY8Ohbyc7XHJcbiAgICBASW5wdXQoKSBhdXRvRG93bmxvYWQgPSBmYWxzZTtcclxuICAgIEBWaWV3Q2hpbGQoJ3Njcm9sbGJhcicpIHNjcm9sbGJhcjogVG5DdXN0b21TY3JvbGxiYXJDb21wb25lbnQ7XHJcbiAgICBtYXhOYW1lTGVuZ3RoID0gNDA7XHJcbiAgICBleHBhbmQgPSB0cnVlO1xyXG4gICAgcXVldWVOYW1lID0gJ1JFUE9SVF9RVUVVRSc7XHJcbiAgICBodWIgPSAnQ29tbW9uSHViJztcclxuXHJcbiAgICBkaWNTdGF0dXMgPSBSRVBPUlRfUVVFVUVfQ09OU1RBTlQuZGljU3RhdHVzO1xyXG4gICAgc3RhdHVzZXMgPSBSRVBPUlRfUVVFVUVfQ09OU1RBTlQuc3RhdHVzZXM7XHJcblxyXG4gICAgX3F1ZXVlOiBKb2JJdGVtW10gPSBbXTtcclxuICAgIG1heEhlaWdodCA9IDIwMDtcclxuICAgIGl0ZW1IZWlnaHQgPSA1MDtcclxuICAgIHBvcHVwSGVpZ2h0ID0gdGhpcy5pdGVtSGVpZ2h0O1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBfbm90aWZpZXJTZXJ2aWNlOiBOb3RpZmllclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9maWxlU2VydmljZTogRmlsZUV4cGxvcmVyU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF90ZW1wYXRlU2VydmljZTogVGVtcGxhdGVTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX3NpZ25hbFJTZXJ2aWNlOiBTaWduYWxSU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9oaWdoUGVyZm9ybWFuY2VTZXJ2aWNlOiBIaWdoUGVyZm9ybWFuY2VTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2NydWRTZXJ2aWNlOiBDcnVkU2VydmljZVxyXG4gICAgKSB7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucGFyZW50RGF0YU1vZGVsICYmIHRoaXMubmFtZSkge1xyXG4gICAgICAgICAgICB0aGlzLnBhcmVudERhdGFNb2RlbFt0aGlzLm5hbWVdID0gdGhpcztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdG9nZ2xlRXhwYW5kKCkge1xyXG4gICAgICAgIHRoaXMuZXhwYW5kID0gIXRoaXMuZXhwYW5kO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGjDqm0gam9iIHbDoG8gxJHhu4MgdGjhu7FjIGhp4buHblxyXG4gICAgICovXHJcbiAgICBhc3luYyBhZGRKb2IoZXhwb3J0Sm9iOiBFeHBvcnRKb2IpIHtcclxuICAgICAgICB2YXIgZm91bmRJbmRleCA9IHRoaXMuX3F1ZXVlLmZpbmRJbmRleChqb2IgPT4gam9iLl9jb2RlID09IGV4cG9ydEpvYi50ZW1wbGF0ZUNvZGUgJiYgam9iLl9zdGF0dXMgPT0gdGhpcy5zdGF0dXNlcy5FeHBvcnRpbmcpO1xyXG4gICAgICAgIGlmIChmb3VuZEluZGV4ICE9PSAtMSkge1xyXG4gICAgICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd1dhcm5pbmcoXCJGaWxlIGPDuW5nIGxv4bqhaSDEkWFuZyDEkcaw4bujYyB44butIGzDvSwgdGjhu60gbOG6oWkgc2F1IGtoaSB44butIGzDvSB4b25nIVwiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFyIGpvYiA9IG5ldyBKb2JJdGVtKGV4cG9ydEpvYi50ZW1wbGF0ZUNvZGUsIHt9LCBleHBvcnRKb2IuZmlsZU5hbWUgfHwgZXhwb3J0Sm9iLnRlbXBsYXRlQ29kZSwgdGhpcy5zdGF0dXNlcy5FeHBvcnRpbmcpO1xyXG4gICAgICAgIHRoaXMuX3F1ZXVlLnB1c2goam9iKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZVBvcHVwSGVpZ2h0KCk7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsYmFyLnNjcm9sbFRvQm90dG9tKCk7XHJcbiAgICAgICAgfSwgMTAwKTtcclxuICAgICAgICB2YXIgcnNEYXRhID0gYXdhaXQgZXhwb3J0Sm9iLmRhdGFQcm9taXNlO1xyXG4gICAgICAgIGlmIChyc0RhdGEuZGF0YSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGpvYi5fc3RhdHVzID0gdGhpcy5zdGF0dXNlcy5FcnJvcjtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NydWRTZXJ2aWNlLnByb2Nlc3NFcnJvclJlc3BvbnNlKHJzRGF0YSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZXhwb3J0Sm9iLmNiKSB7XHJcbiAgICAgICAgICAgIGpvYi5fZGF0YSA9ICg8RnVuY3Rpb24+ZXhwb3J0Sm9iLmNiKShyc0RhdGEuZGF0YSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChleHBvcnRKb2Iucm9vdE5hbWUpIHtcclxuICAgICAgICAgICAgam9iLl9kYXRhW2V4cG9ydEpvYi5yb290TmFtZV0gPSByc0RhdGEuZGF0YTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBqb2IuX2RhdGEgPSByc0RhdGEuZGF0YTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHN3aXRjaCAoZXhwb3J0Sm9iLnR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSBKb2JUeXBlcy5Ob3JtYWw6XHJcbiAgICAgICAgICAgICAgICB0aGlzLkV4cG9ydChqb2IpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgSm9iVHlwZXMuU2luZ25hbFI6XHJcbiAgICAgICAgICAgICAgICB0aGlzLkV4cG9ydFdpdGhTaWduYWxSKGpvYik7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBKb2JUeXBlcy5NYW55OlxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGjDqm0gam9iIHbDoG8gxJHhu4MgdGjhu7FjIGhp4buHblxyXG4gICAgICogIC0gdGVtcGxhdGVDb2RlOiBjb2RlIHRlbXBsYXRlIGPhuqV1IGjDrG5oIGLDqm4gcXXhuqNuIHRy4buLXHJcbiAgICAgKiAgLSBkYXRhOiBk4buvIGxp4buHdSBleHBvcnRcclxuICAgICAqICAtIGZpbGVOYW1lOiB0w6puIGPhu6dhIGZpbGUgxJHGsOG7o2MgbMawdVxyXG4gICAgICogIC0gdXNlU2lnbmFsUjogdGhheSB2w6wgZ+G7jWkgcmVxdWVzdCB2w6AgY2jhu50gxJHhur9uIGtoaSB0aOG7sWMgaGnhu4duIHhvbmdcclxuICAgICAqICAgICAgdHLhuqMgduG7gSBiaW5hcnlGaWxlIHRow6wgdOG6oW8gdGnhur9uIHRyw6xuaCByacOqbmcgxJHhu4MgZXhwb3J0LCB2w6AgZMO5bmcgc2lnbmFsUiB0aMO0bmdcclxuICAgICAqICAgICAgYsOhbyBr4bq/dCBxdeG6oyBleHBvcnQsIHRy4bqjIHbhu4EgZmlsZUlkIMSR4buDIHThuqNpLlxyXG4gICAgICovXHJcbiAgICBhc3luYyBhZGRKb2JXaXRoRGF0YShcclxuICAgICAgICB0ZW1wbGF0ZUNvZGU6IHN0cmluZyxcclxuICAgICAgICBkYXRhLFxyXG4gICAgICAgIGZpbGVOYW1lLFxyXG4gICAgICAgIHVzZVNpZ25hbFIgPSBmYWxzZVxyXG4gICAgKSB7XHJcbiAgICAgICAgdmFyIGZvdW5kSW5kZXggPSB0aGlzLl9xdWV1ZS5maW5kSW5kZXgoam9iID0+IGpvYi5fY29kZSA9PSB0ZW1wbGF0ZUNvZGUgJiYgam9iLl9zdGF0dXMgPT0gdGhpcy5zdGF0dXNlcy5FeHBvcnRpbmcpO1xyXG4gICAgICAgIGlmIChmb3VuZEluZGV4ICE9PSAtMSkge1xyXG4gICAgICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2Uuc2hvd1dhcm5pbmcoXCJGaWxlIGPDuW5nIGxv4bqhaSDEkWFuZyDEkcaw4bujYyB44butIGzDvSwgdGjhu60gbOG6oWkgc2F1IGtoaSB44butIGzDvSB4b25nIVwiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFyIGpvYiA9IG5ldyBKb2JJdGVtKHRlbXBsYXRlQ29kZSwgZGF0YSwgZmlsZU5hbWUgfHwgdGVtcGxhdGVDb2RlLCB0aGlzLnN0YXR1c2VzLkV4cG9ydGluZyk7XHJcbiAgICAgICAgdGhpcy5fcXVldWUucHVzaChqb2IpO1xyXG4gICAgICAgIGlmICh1c2VTaWduYWxSKSB7XHJcbiAgICAgICAgICAgIHRoaXMuRXhwb3J0V2l0aFNpZ25hbFIoam9iKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLkV4cG9ydChqb2IpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBFeHBvcnQoam9iOiBKb2JJdGVtKSB7XHJcbiAgICAgICAgdGhpcy5fdGVtcGF0ZVNlcnZpY2UuZXhwb3J0Q3hFeGNlbEJ5Q29kZVByb21pc2UoeyBjb2RlOiBqb2IuX2NvZGUsIGRhdGE6IEpTT04uc3RyaW5naWZ5KGpvYi5fZGF0YSksIGZpbGVOYW1lOiBqb2IuX2ZpbGVOYW1lIH0pXHJcbiAgICAgICAgICAgIC50aGVuKGZpbGUgPT4ge1xyXG4gICAgICAgICAgICAgICAgam9iLl9zdGF0dXMgPSB0aGlzLnN0YXR1c2VzLlN1Y2Nlc3M7XHJcbiAgICAgICAgICAgICAgICBqb2IuX2JpbmFyeUZpbGUgPSBmaWxlO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmF1dG9Eb3dubG9hZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZG93bmxvYWQoam9iKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSkuY2F0Y2goYXN5bmMgZXJyID0+IHtcclxuICAgICAgICAgICAgICAgIGpvYi5fc3RhdHVzID0gdGhpcy5zdGF0dXNlcy5FcnJvcjtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yVGV4dCA9IGF3YWl0IGVyci5lcnJvci50ZXh0KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9jcnVkU2VydmljZS5wcm9jZXNzRXJyb3JSZXNwb25zZShKU09OLnBhcnNlKGVycm9yVGV4dCB8fCAnJykpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBFeHBvcnRXaXRoU2lnbmFsUihqb2I6IEpvYkl0ZW0pIHtcclxuICAgICAgICBjb25zdCB0b3BpYyA9IHRoaXMuX2NvbW1vblNlcnZpY2UuZ3VpZCgpO1xyXG4gICAgICAgIGpvYi5fdW5pcXVlS2V5ID0gdG9waWM7XHJcbiAgICAgICAgdGhpcy5fc2lnbmFsUlNlcnZpY2Uuc3RhcnQodGhpcy5odWIsIHRvcGljLCAobWVzc2FnZSkgPT4ge1xyXG4gICAgICAgICAgICB2YXIgcnMgPSBKU09OLnBhcnNlKG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBpZiAocnMuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAgICAgam9iLl9zdGF0dXMgPSB0aGlzLnN0YXR1c2VzLlN1Y2Nlc3M7XHJcbiAgICAgICAgICAgICAgICBqb2IuX2ZpbGVJZCA9IHJzLmRhdGE7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hdXRvRG93bmxvYWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRvd25sb2FkKGpvYik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBqb2IuX3N0YXR1cyA9IHRoaXMuc3RhdHVzZXMuRXJyb3I7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9jcnVkU2VydmljZS5wcm9jZXNzRXJyb3JSZXNwb25zZShycyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5fdGVtcGF0ZVNlcnZpY2UuRXhwb3J0Q3hFeGNlbEJ5Q29kZVdpdGhTaWduYWxSKHsgY29kZTogam9iLl9jb2RlLCBkYXRhOiBKU09OLnN0cmluZ2lmeShqb2IuX2RhdGEpLCBmaWxlTmFtZTogam9iLl9maWxlTmFtZSwgdG9waWM6IHRvcGljIH0pXHJcbiAgICAgICAgICAgIC50aGVuKHJzID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghcnMuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAgICAgICAgIGpvYi5fc3RhdHVzID0gdGhpcy5zdGF0dXNlcy5FcnJvcjtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jcnVkU2VydmljZS5wcm9jZXNzRXJyb3JSZXNwb25zZShycyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pLmNhdGNoKGFzeW5jIGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICBqb2IuX3N0YXR1cyA9IHRoaXMuc3RhdHVzZXMuRXJyb3I7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9jcnVkU2VydmljZS5wcm9jZXNzRXJyb3JSZXNwb25zZShlcnIuZXJyb3IpO1xyXG4gICAgICAgICAgICB9KTs7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgRXhwb3J0Q3hFeGNlbEJ5Q29kZVdpdGhIUFMoam9iOiBKb2JJdGVtKSB7XHJcbiAgICAgICAgdGhpcy5faGlnaFBlcmZvcm1hbmNlU2VydmljZS5jcmVhdGVQcm9jZXNzKHRoaXMucXVldWVOYW1lLCAoYXJyTWVzc2FnZSkgPT4ge1xyXG4gICAgICAgICAgICB2YXIgbWVzc2FnZSA9IGFyck1lc3NhZ2UucG9wKCk7XHJcbiAgICAgICAgICAgIHZhciBycyA9IEpTT04ucGFyc2UobWVzc2FnZSk7XHJcbiAgICAgICAgICAgIGlmIChycy5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgICBqb2IuX3N0YXR1cyA9IHRoaXMuc3RhdHVzZXMuU3VjY2VzcztcclxuICAgICAgICAgICAgICAgIGpvYi5fZmlsZUlkID0gcnMuZGF0YTtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmF1dG9Eb3dubG9hZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZpbGVTZXJ2aWNlLmRvd25sb2FkRmlsZShqb2IuX2ZpbGVJZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgam9iLl9zdGF0dXMgPSB0aGlzLnN0YXR1c2VzLkRvd25sb2FkZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgam9iLl9maWxlSWQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgam9iLl9zdGF0dXMgPSB0aGlzLnN0YXR1c2VzLkVycm9yO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fY3J1ZFNlcnZpY2UucHJvY2Vzc0Vycm9yUmVzcG9uc2UocnMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSkudGhlbihycyA9PiB7XHJcbiAgICAgICAgICAgIGpvYi5fdW5pcXVlS2V5ID0gcnM7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl90ZW1wYXRlU2VydmljZS5FeHBvcnRDeEV4Y2VsQnlDb2RlV2l0aEhQUyh7XHJcbiAgICAgICAgICAgICAgICBjb2RlOiBqb2IuX2NvZGUsXHJcbiAgICAgICAgICAgICAgICBkYXRhOiBKU09OLnN0cmluZ2lmeShqb2IuX2RhdGEpLFxyXG4gICAgICAgICAgICAgICAgZmlsZU5hbWU6IGpvYi5fZmlsZU5hbWUsXHJcbiAgICAgICAgICAgICAgICB0b3BpYzogdGhpcy5xdWV1ZU5hbWUsXHJcbiAgICAgICAgICAgICAgICB1bmlxdWVLZXk6IGpvYi5fdW5pcXVlS2V5XHJcbiAgICAgICAgICAgIH0pLnRoZW4ocnMgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFycy5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgam9iLl9zdGF0dXMgPSB0aGlzLnN0YXR1c2VzLkVycm9yO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NydWRTZXJ2aWNlLnByb2Nlc3NFcnJvclJlc3BvbnNlKHJzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSwgZXJyID0+IHtcclxuICAgICAgICAgICAgICAgIGpvYi5fc3RhdHVzID0gdGhpcy5zdGF0dXNlcy5FcnJvcjtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiTOG7l2kgZ+G7jWkgYXBpIHNlcnZlciBleHBvcnRcIik7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgICAgIGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICBqb2IuX3N0YXR1cyA9IHRoaXMuc3RhdHVzZXMuRXJyb3I7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkzhu5dpIGfhu41pIEhQUyBzZXJ2aWNlIDooXCIpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBkb3dubG9hZChqb2IpIHtcclxuICAgICAgICBpZiAoam9iLl9zdGF0dXMgPT0gdGhpcy5zdGF0dXNlcy5Eb3dubG9hZGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGpvYi5fZmlsZUlkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2ZpbGVTZXJ2aWNlLmRvd25sb2FkRmlsZShqb2IuX2ZpbGVJZCwgZmFsc2UsIGpvYi5fZmlsZU5hbWUpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoam9iLl9iaW5hcnlGaWxlKSB7XHJcbiAgICAgICAgICAgIEZpbGVTYXZlci5zYXZlQXMoam9iLl9iaW5hcnlGaWxlLCBqb2IuX2ZpbGVOYW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgam9iLl9zdGF0dXMgPSB0aGlzLnN0YXR1c2VzLkRvd25sb2FkZWQ7XHJcbiAgICAgICAgam9iLl9iaW5hcnlGaWxlID0gbnVsbDtcclxuICAgICAgICBqb2IuX2ZpbGVJZCA9IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd1F1ZXVlKCkge1xyXG4gICAgICAgIGxldCBzaG93ID0gdGhpcy5fcXVldWUgJiYgdGhpcy5fcXVldWUubGVuZ3RoID4gMDtcclxuXHJcbiAgICAgICAgcmV0dXJuIHNob3c7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TmFtZShqb2IpIHtcclxuICAgICAgICB2YXIgbmFtZSA9IGpvYi5fZmlsZU5hbWUubGVuZ3RoID4gdGhpcy5tYXhOYW1lTGVuZ3RoID8gYCR7am9iLl9maWxlTmFtZS5zdWJzdHIoMCwgdGhpcy5tYXhOYW1lTGVuZ3RoIC0gMTApfVsuLi5dJHtUZW1wbGF0ZUNvbnN0YW50LkVYQ0VMX0VYVEVOU0lPTn1gIDogam9iLl9maWxlTmFtZTtcclxuICAgICAgICByZXR1cm4gbmFtZTtcclxuICAgIH1cclxuXHJcbiAgICBjYW5jZWxKb2Ioam9iKSB7XHJcbiAgICAgICAgbGV0IGZvdW5kSW5kZXggPSB0aGlzLl9xdWV1ZS5maW5kSW5kZXgoaiA9PiBqLl9jb2RlID09IGpvYi5fY29kZSk7XHJcbiAgICAgICAgaWYgKGZvdW5kSW5kZXggPT0gLTEpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGZvdW5kSm9iID0gdGhpcy5fcXVldWVbZm91bmRJbmRleF07XHJcbiAgICAgICAgaWYgKGZvdW5kSm9iLl9zdGF0dXMgPT0gdGhpcy5zdGF0dXNlcy5FeHBvcnRpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlXHJcbiAgICAgICAgICAgICAgICAuc2hvd0NvbmZpcm0oJ0ZpbGUgbsOgeSDEkWFuZyDEkcaw4bujYyB44butIGzDvS4gQuG6oW4gY8OzIG114buRbiBk4burbmcgbOG6oWk/JywgJ0jhu6d5IHh14bqldCBmaWxlJylcclxuICAgICAgICAgICAgICAgIC50aGVuKHJzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXJzKSB7IHJldHVybjsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBuZWVkVW5zdWJzY3JpYmUgPSBmb3VuZEpvYi5fdHlwZSA9PSBKb2JUeXBlcy5TaW5nbmFsUiAmJiBmb3VuZEpvYi5fdW5pcXVlS2V5O1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChuZWVkVW5zdWJzY3JpYmUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2lnbmFsUlNlcnZpY2UudW5TdWJzY3JpYmVWaWV3Q29kZShmb3VuZEpvYi5fdW5pcXVlS2V5LCB0aGlzLmh1Yik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3F1ZXVlLnNwbGljZShmb3VuZEluZGV4LCAxKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVBvcHVwSGVpZ2h0KCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2UgaWYgKGZvdW5kSm9iLl9zdGF0dXMgIT0gdGhpcy5zdGF0dXNlcy5FeHBvcnRpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5fcXVldWUuc3BsaWNlKGZvdW5kSW5kZXgsIDEpO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVBvcHVwSGVpZ2h0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlKCkge1xyXG4gICAgICAgIHZhciBoYXNFeHBvcnRpbmcgPSB0aGlzLl9xdWV1ZSAmJiB0aGlzLl9xdWV1ZS5maWx0ZXIoaXRlbSA9PiBpdGVtLl9zdGF0dXMgPT0gdGhpcy5zdGF0dXNlcy5FeHBvcnRpbmcpLmxlbmd0aCA+IDA7XHJcblxyXG4gICAgICAgIGlmIChoYXNFeHBvcnRpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlXHJcbiAgICAgICAgICAgICAgICAuc2hvd0NvbmZpcm0oJ0PDsyBmaWxlIMSRYW5nIMSRxrDhu6NjIHjhu60gbMO9LiBC4bqhbiBjw7MgbXXhu5FuIGThu6tuZyBs4bqhaT8nLCAnSOG7p3kgeHXhuqV0IGZpbGUnKVxyXG4gICAgICAgICAgICAgICAgLnRoZW4ocnMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghcnMpIHsgcmV0dXJuOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG5lZWRVbnN1YnNjcmliZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3F1ZXVlLmZvckVhY2goam9iID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmVlZFVuc3Vic2NyaWJlID0gam9iLl90eXBlID09IEpvYlR5cGVzLlNpbmduYWxSICYmIGpvYi5fdW5pcXVlS2V5O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobmVlZFVuc3Vic2NyaWJlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zaWduYWxSU2VydmljZS51blN1YnNjcmliZVZpZXdDb2RlKGpvYi5fdW5pcXVlS2V5LCB0aGlzLmh1Yik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9xdWV1ZSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlUG9wdXBIZWlnaHQoKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3F1ZXVlID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZVBvcHVwSGVpZ2h0KCkge1xyXG4gICAgICAgIGxldCBoZWlnaHQgPSAodGhpcy5fcXVldWUgfHwgW10pLmxlbmd0aCAqIHRoaXMuaXRlbUhlaWdodDtcclxuICAgICAgICB0aGlzLnBvcHVwSGVpZ2h0ID0gaGVpZ2h0ID4gdGhpcy5tYXhIZWlnaHQgPyB0aGlzLm1heEhlaWdodCA6IGhlaWdodDtcclxuICAgIH1cclxufVxyXG5cclxuIiwiPGRpdiBjbGFzcz1cInJxLWNvbnRhaW5lclwiICpuZ0lmPVwic2hvd1F1ZXVlKClcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJycS1oZWFkZXJcIj5cclxuICAgICAgICA8ZGl2Pnt7aGVhZGVyIHwgdHJhbnNsYXRlfX08L2Rpdj5cclxuICAgICAgICA8ZGl2PlxyXG5cclxuICAgICAgICAgICAgPHAtY2hlY2tib3ggWyhuZ01vZGVsKV09XCJhdXRvRG93bmxvYWRcIiBiaW5hcnk9XCJ0cnVlXCIgcFRvb2x0aXA9XCJU4buxIMSR4buZbmcgdOG6o2lcIiB0b29sdGlwUG9zaXRpb249XCJsZWZ0XCI+XHJcbiAgICAgICAgICAgIDwvcC1jaGVja2JveD5cclxuXHJcbiAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiAoY2xpY2spPVwidG9nZ2xlRXhwYW5kKClcIiBwVG9vbHRpcD1cInt7ZXhwYW5kID8gJ1RodSBn4buNbicgOiAnTeG7nyBy4buZbmcnfX1cIlxyXG4gICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwibGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXNcIiBbbmdDbGFzc109XCJ7J2ZhLWNvbXByZXNzJyA6IGV4cGFuZCwgJ2ZhLWV4cGFuZCc6ICFleHBhbmR9XCI+PC9pPlxyXG4gICAgICAgICAgICA8L2E+XHJcblxyXG4gICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDo7XCIgKGNsaWNrKT1cImNsb3NlKClcIiBwVG9vbHRpcD1cIsSQw7NuZ1wiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtdGltZXNcIj48L2k+XHJcbiAgICAgICAgICAgIDwvYT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJxLWJvZHlcIiAqbmdJZj1cImV4cGFuZFwiPlxyXG4gICAgICAgIDx0bi1jdXN0b20tc2Nyb2xsYmFyIFtzdHlsZV09XCJ7J2hlaWdodC5weCc6IHBvcHVwSGVpZ2h0fVwiICNzY3JvbGxiYXI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZS1qb2JcIiAqbmdGb3I9XCJsZXQgam9iIG9mIF9xdWV1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlLWpvYi10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+e3tnZXROYW1lKGpvYil9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiAoY2xpY2spPVwiY2FuY2VsSm9iKGpvYilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXRpbWVzXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZS1qb2ItcmVzdWx0XCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2pvYi1zdWNjZXNzJzogam9iLl9zdGF0dXMgPT0gc3RhdHVzZXMuU3VjY2VzcywgJ2pvYi1lcnJvcic6IGpvYi5fc3RhdHVzID09IHN0YXR1c2VzLkVycm9yLCAnam9iLWV4cG9ydGluZycgOiBqb2IuX3N0YXR1cyA9PSBzdGF0dXNlcy5FeHBvcnRpbmcsICdqb2ItZG93bmxvYWRlZCc6IGpvYi5fc3RhdHVzID09IHN0YXR1c2VzLkRvd25sb2FkZWR9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJqb2IuX3N0YXR1cyAhPSBzdGF0dXNlcy5TdWNjZXNzICYmIGpvYi5fc3RhdHVzICE9IHN0YXR1c2VzLkV4cG9ydGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2RpY1N0YXR1cy5nZXQoam9iLl9zdGF0dXMpIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiam9iLl9zdGF0dXMgPT0gc3RhdHVzZXMuRXhwb3J0aW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2FkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tkaWNTdGF0dXMuZ2V0KGpvYi5fc3RhdHVzKSB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDo7XCIgKGNsaWNrKT1cImRvd25sb2FkKGpvYilcIiBjbGFzcz1cImpvYi1zdWNjZXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJqb2IuX3N0YXR1cyA9PSBzdGF0dXNlcy5TdWNjZXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWRvd25sb2FkXCI+PC9pPiB7e2RpY1N0YXR1cy5nZXQoam9iLl9zdGF0dXMpIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC90bi1jdXN0b20tc2Nyb2xsYmFyPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
290
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXF1ZXVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC9zcmMvbGliL2NvbXBvbmVudHMvcmVwb3J0LXF1ZXVlL3JlcG9ydC1xdWV1ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL3JlcG9ydC1xdWV1ZS9yZXBvcnQtcXVldWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBU3BFLE9BQU8sRUFBYSxPQUFPLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUYsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFRbkMsTUFBTSxPQUFPLG9CQUFvQjtJQWtCN0IsWUFDWSxnQkFBaUMsRUFDakMsY0FBNkIsRUFDN0IsWUFBaUMsRUFDakMsZUFBZ0MsRUFDaEMsZUFBK0IsRUFDL0IsdUJBQStDLEVBQy9DLFlBQXlCO1FBTnpCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFDakMsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDN0IsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2pDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFDL0IsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF3QjtRQUMvQyxpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQXZCNUIsU0FBSSxHQUFHLGFBQWEsQ0FBQztRQUNyQixXQUFNLEdBQUcsY0FBYyxDQUFDO1FBQ3hCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRTlC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QUFLLElBQUksUUFBUSxDQUFDLFFBQVEsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDO29CQUNuRSxJQUFJLGVBQWUsRUFBRTt3QkFDakIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztxQkFDdEU7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzdCLENBQUMsQ0FBQyxDQUFDO1NBQ1Y7YUFBTTtZQUNILElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1NBQ3BCO0lBQ0wsQ0FBQztJQUVELGlCQUFpQjtRQUNiLElBQUksTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUMxRCxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDekUsQ0FBQzs7aUhBalJRLG9CQUFvQjtxR0FBcEIsb0JBQW9CLDBRQ25CakMsczlFQWlEQTsyRkQ5QmEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNJLGNBQWM7OFJBS2YsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ2tCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRlbXBsYXRlQ29uc3RhbnQgfSBmcm9tICcuLi8uLi9jb25maWdzL2NvbXBvbmVudC1jb250YW50cyc7XHJcbmltcG9ydCB7IFJlc3BvbnNlUmVzdWx0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3Jlc3BvbnNlLXJlc3VsdCc7XHJcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb21tb24uc2VydmljZSc7XHJcbmltcG9ydCB7IENydWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY3J1ZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSGlnaFBlcmZvcm1hbmNlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2hpZ2gtcGVyZm9ybWFuY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IE5vdGlmaWVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vdGlmaWVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTaWduYWxSU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NpZ25hbHIuc2VydmljZSc7XHJcbmltcG9ydCB7IFRlbXBsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RlbXBsYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGaWxlRXhwbG9yZXJTZXJ2aWNlIH0gZnJvbSAnLi4vZmlsZS1leHBsb3Jlci9zZXJ2aWNlcy9maWxlLWV4cGxvcmVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFeHBvcnRKb2IsIEpvYkl0ZW0sIEpvYlR5cGVzLCBSRVBPUlRfUVVFVUVfQ09OU1RBTlQgfSBmcm9tICcuL2Jhc2Utam9iL2pvYi1pdGVtJztcclxuaW1wb3J0IEZpbGVTYXZlciBmcm9tICdmaWxlLXNhdmVyJztcclxuaW1wb3J0IHsgVG5DdXN0b21TY3JvbGxiYXJDb21wb25lbnQgfSBmcm9tICcuLi90bi1jdXN0b20tc2Nyb2xsYmFyL3RuLWN1c3RvbS1zY3JvbGxiYXIuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdyZXBvcnQtcXVldWUnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3JlcG9ydC1xdWV1ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9yZXBvcnQtcXVldWUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVwb3J0UXVldWVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgQElucHV0KCkgcGFyZW50RGF0YU1vZGVsOiBhbnk7XHJcbiAgICBASW5wdXQoKSBuYW1lID0gJ3JlcG9ydFF1ZXVlJztcclxuICAgIEBJbnB1dCgpIGhlYWRlciA9ICdYdeG6pXQgYsOhbyBjw6FvJztcclxuICAgIEBJbnB1dCgpIGF1dG9Eb3dubG9hZCA9IGZhbHNlO1xyXG4gICAgQFZpZXdDaGlsZCgnc2Nyb2xsYmFyJykgc2Nyb2xsYmFyOiBUbkN1c3RvbVNjcm9sbGJhckNvbXBvbmVudDtcclxuICAgIG1heE5hbWVMZW5ndGggPSA0MDtcclxuICAgIGV4cGFuZCA9IHRydWU7XHJcbiAgICBxdWV1ZU5hbWUgPSAnUkVQT1JUX1FVRVVFJztcclxuICAgIGh1YiA9ICdDb21tb25IdWInO1xyXG5cclxuICAgIGRpY1N0YXR1cyA9IFJFUE9SVF9RVUVVRV9DT05TVEFOVC5kaWNTdGF0dXM7XHJcbiAgICBzdGF0dXNlcyA9IFJFUE9SVF9RVUVVRV9DT05TVEFOVC5zdGF0dXNlcztcclxuXHJcbiAgICBfcXVldWU6IEpvYkl0ZW1bXSA9IFtdO1xyXG4gICAgbWF4SGVpZ2h0ID0gMjAwO1xyXG4gICAgaXRlbUhlaWdodCA9IDUwO1xyXG4gICAgcG9wdXBIZWlnaHQgPSB0aGlzLml0ZW1IZWlnaHQ7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIF9ub3RpZmllclNlcnZpY2U6IE5vdGlmaWVyU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9jb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2ZpbGVTZXJ2aWNlOiBGaWxlRXhwbG9yZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX3RlbXBhdGVTZXJ2aWNlOiBUZW1wbGF0ZVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfc2lnbmFsUlNlcnZpY2U6IFNpZ25hbFJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2hpZ2hQZXJmb3JtYW5jZVNlcnZpY2U6IEhpZ2hQZXJmb3JtYW5jZVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfY3J1ZFNlcnZpY2U6IENydWRTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICBpZiAodGhpcy5wYXJlbnREYXRhTW9kZWwgJiYgdGhpcy5uYW1lKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGFyZW50RGF0YU1vZGVsW3RoaXMubmFtZV0gPSB0aGlzO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0b2dnbGVFeHBhbmQoKSB7XHJcbiAgICAgICAgdGhpcy5leHBhbmQgPSAhdGhpcy5leHBhbmQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaMOqbSBqb2IgdsOgbyDEkeG7gyB0aOG7sWMgaGnhu4duXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGFkZEpvYihleHBvcnRKb2I6IEV4cG9ydEpvYikge1xyXG4gICAgICAgIHZhciBmb3VuZEluZGV4ID0gdGhpcy5fcXVldWUuZmluZEluZGV4KGpvYiA9PiBqb2IuX2NvZGUgPT0gZXhwb3J0Sm9iLnRlbXBsYXRlQ29kZSAmJiBqb2IuX3N0YXR1cyA9PSB0aGlzLnN0YXR1c2VzLkV4cG9ydGluZyk7XHJcbiAgICAgICAgaWYgKGZvdW5kSW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93V2FybmluZyhcIkZpbGUgY8O5bmcgbG/huqFpIMSRYW5nIMSRxrDhu6NjIHjhu60gbMO9LCB0aOG7rSBs4bqhaSBzYXUga2hpIHjhu60gbMO9IHhvbmchXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgam9iID0gbmV3IEpvYkl0ZW0oZXhwb3J0Sm9iLnRlbXBsYXRlQ29kZSwge30sIGV4cG9ydEpvYi5maWxlTmFtZSB8fCBleHBvcnRKb2IudGVtcGxhdGVDb2RlLCB0aGlzLnN0YXR1c2VzLkV4cG9ydGluZyk7XHJcbiAgICAgICAgdGhpcy5fcXVldWUucHVzaChqb2IpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlUG9wdXBIZWlnaHQoKTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zY3JvbGxiYXIuc2Nyb2xsVG9Cb3R0b20oKTtcclxuICAgICAgICB9LCAxMDApO1xyXG4gICAgICAgIHZhciByc0RhdGEgPSBhd2FpdCBleHBvcnRKb2IuZGF0YVByb21pc2U7XHJcbiAgICAgICAgaWYgKHJzRGF0YS5kYXRhID09IG51bGwpIHtcclxuICAgICAgICAgICAgam9iLl9zdGF0dXMgPSB0aGlzLnN0YXR1c2VzLkVycm9yO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY3J1ZFNlcnZpY2UucHJvY2Vzc0Vycm9yUmVzcG9uc2UocnNEYXRhKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChleHBvcnRKb2IuY2IpIHtcclxuICAgICAgICAgICAgam9iLl9kYXRhID0gKDxGdW5jdGlvbj5leHBvcnRKb2IuY2IpKHJzRGF0YS5kYXRhKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGV4cG9ydEpvYi5yb290TmFtZSkge1xyXG4gICAgICAgICAgICBqb2IuX2RhdGFbZXhwb3J0Sm9iLnJvb3ROYW1lXSA9IHJzRGF0YS5kYXRhO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGpvYi5fZGF0YSA9IHJzRGF0YS5kYXRhO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3dpdGNoIChleHBvcnRKb2IudHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIEpvYlR5cGVzLk5vcm1hbDpcclxuICAgICAgICAgICAgICAgIHRoaXMuRXhwb3J0KGpvYik7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBKb2JUeXBlcy5TaW5nbmFsUjpcclxuICAgICAgICAgICAgICAgIHRoaXMuRXhwb3J0V2l0aFNpZ25hbFIoam9iKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIEpvYlR5cGVzLk1hbnk6XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaMOqbSBqb2IgdsOgbyDEkeG7gyB0aOG7sWMgaGnhu4duXHJcbiAgICAgKiAgLSB0ZW1wbGF0ZUNvZGU6IGNvZGUgdGVtcGxhdGUgY+G6pXUgaMOsbmggYsOqbiBxdeG6o24gdHLhu4tcclxuICAgICAqICAtIGRhdGE6IGThu68gbGnhu4d1IGV4cG9ydFxyXG4gICAgICogIC0gZmlsZU5hbWU6IHTDqm4gY+G7p2EgZmlsZSDEkcaw4bujYyBsxrB1XHJcbiAgICAgKiAgLSB1c2VTaWduYWxSOiB0aGF5IHbDrCBn4buNaSByZXF1ZXN0IHbDoCBjaOG7nSDEkeG6v24ga2hpIHRo4buxYyBoaeG7h24geG9uZ1xyXG4gICAgICogICAgICB0cuG6oyB24buBIGJpbmFyeUZpbGUgdGjDrCB04bqhbyB0aeG6v24gdHLDrG5oIHJpw6puZyDEkeG7gyBleHBvcnQsIHbDoCBkw7luZyBzaWduYWxSIHRow7RuZ1xyXG4gICAgICogICAgICBiw6FvIGvhur90IHF14bqjIGV4cG9ydCwgdHLhuqMgduG7gSBmaWxlSWQgxJHhu4MgdOG6o2kuXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGFkZEpvYldpdGhEYXRhKFxyXG4gICAgICAgIHRlbXBsYXRlQ29kZTogc3RyaW5nLFxyXG4gICAgICAgIGRhdGEsXHJcbiAgICAgICAgZmlsZU5hbWUsXHJcbiAgICAgICAgdXNlU2lnbmFsUiA9IGZhbHNlXHJcbiAgICApIHtcclxuICAgICAgICB2YXIgZm91bmRJbmRleCA9IHRoaXMuX3F1ZXVlLmZpbmRJbmRleChqb2IgPT4gam9iLl9jb2RlID09IHRlbXBsYXRlQ29kZSAmJiBqb2IuX3N0YXR1cyA9PSB0aGlzLnN0YXR1c2VzLkV4cG9ydGluZyk7XHJcbiAgICAgICAgaWYgKGZvdW5kSW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93V2FybmluZyhcIkZpbGUgY8O5bmcgbG/huqFpIMSRYW5nIMSRxrDhu6NjIHjhu60gbMO9LCB0aOG7rSBs4bqhaSBzYXUga2hpIHjhu60gbMO9IHhvbmchXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgam9iID0gbmV3IEpvYkl0ZW0odGVtcGxhdGVDb2RlLCBkYXRhLCBmaWxlTmFtZSB8fCB0ZW1wbGF0ZUNvZGUsIHRoaXMuc3RhdHVzZXMuRXhwb3J0aW5nKTtcclxuICAgICAgICB0aGlzLl9xdWV1ZS5wdXNoKGpvYik7XHJcbiAgICAgICAgaWYgKHVzZVNpZ25hbFIpIHtcclxuICAgICAgICAgICAgdGhpcy5FeHBvcnRXaXRoU2lnbmFsUihqb2IpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuRXhwb3J0KGpvYik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIEV4cG9ydChqb2I6IEpvYkl0ZW0pIHtcclxuICAgICAgICB0aGlzLl90ZW1wYXRlU2VydmljZS5leHBvcnRDeEV4Y2VsQnlDb2RlUHJvbWlzZSh7IGNvZGU6IGpvYi5fY29kZSwgZGF0YTogSlNPTi5zdHJpbmdpZnkoam9iLl9kYXRhKSwgZmlsZU5hbWU6IGpvYi5fZmlsZU5hbWUgfSlcclxuICAgICAgICAgICAgLnRoZW4oZmlsZSA9PiB7XHJcbiAgICAgICAgICAgICAgICBqb2IuX3N0YXR1cyA9IHRoaXMuc3RhdHVzZXMuU3VjY2VzcztcclxuICAgICAgICAgICAgICAgIGpvYi5fYmluYXJ5RmlsZSA9IGZpbGU7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYXV0b0Rvd25sb2FkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kb3dubG9hZChqb2IpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KS5jYXRjaChhc3luYyBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgam9iLl9zdGF0dXMgPSB0aGlzLnN0YXR1c2VzLkVycm9yO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZXJyb3JUZXh0ID0gYXdhaXQgZXJyLmVycm9yLnRleHQoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2NydWRTZXJ2aWNlLnByb2Nlc3NFcnJvclJlc3BvbnNlKEpTT04ucGFyc2UoZXJyb3JUZXh0IHx8ICcnKSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIEV4cG9ydFdpdGhTaWduYWxSKGpvYjogSm9iSXRlbSkge1xyXG4gICAgICAgIGNvbnN0IHRvcGljID0gdGhpcy5fY29tbW9uU2VydmljZS5ndWlkKCk7XHJcbiAgICAgICAgam9iLl91bmlxdWVLZXkgPSB0b3BpYztcclxuICAgICAgICB0aGlzLl9zaWduYWxSU2VydmljZS5zdGFydCh0aGlzLmh1YiwgdG9waWMsIChtZXNzYWdlKSA9PiB7XHJcbiAgICAgICAgICAgIHZhciBycyA9IEpTT04ucGFyc2UobWVzc2FnZSk7XHJcbiAgICAgICAgICAgIGlmIChycy5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgICBqb2IuX3N0YXR1cyA9IHRoaXMuc3RhdHVzZXMuU3VjY2VzcztcclxuICAgICAgICAgICAgICAgIGpvYi5fZmlsZUlkID0gcnMuZGF0YTtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmF1dG9Eb3dubG9hZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZG93bmxvYWQoam9iKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGpvYi5fc3RhdHVzID0gdGhpcy5zdGF0dXNlcy5FcnJvcjtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2NydWRTZXJ2aWNlLnByb2Nlc3NFcnJvclJlc3BvbnNlKHJzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLl90ZW1wYXRlU2VydmljZS5FeHBvcnRDeEV4Y2VsQnlDb2RlV2l0aFNpZ25hbFIoeyBjb2RlOiBqb2IuX2NvZGUsIGRhdGE6IEpTT04uc3RyaW5naWZ5KGpvYi5fZGF0YSksIGZpbGVOYW1lOiBqb2IuX2ZpbGVOYW1lLCB0b3BpYzogdG9waWMgfSlcclxuICAgICAgICAgICAgLnRoZW4ocnMgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFycy5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgam9iLl9zdGF0dXMgPSB0aGlzLnN0YXR1c2VzLkVycm9yO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NydWRTZXJ2aWNlLnByb2Nlc3NFcnJvclJlc3BvbnNlKHJzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSkuY2F0Y2goYXN5bmMgZXJyID0+IHtcclxuICAgICAgICAgICAgICAgIGpvYi5fc3RhdHVzID0gdGhpcy5zdGF0dXNlcy5FcnJvcjtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2NydWRTZXJ2aWNlLnByb2Nlc3NFcnJvclJlc3BvbnNlKGVyci5lcnJvcik7XHJcbiAgICAgICAgICAgIH0pOztcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBFeHBvcnRDeEV4Y2VsQnlDb2RlV2l0aEhQUyhqb2I6IEpvYkl0ZW0pIHtcclxuICAgICAgICB0aGlzLl9oaWdoUGVyZm9ybWFuY2VTZXJ2aWNlLmNyZWF0ZVByb2Nlc3ModGhpcy5xdWV1ZU5hbWUsIChhcnJNZXNzYWdlKSA9PiB7XHJcbiAgICAgICAgICAgIHZhciBtZXNzYWdlID0gYXJyTWVzc2FnZS5wb3AoKTtcclxuICAgICAgICAgICAgdmFyIHJzID0gSlNPTi5wYXJzZShtZXNzYWdlKTtcclxuICAgICAgICAgICAgaWYgKHJzLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgIGpvYi5fc3RhdHVzID0gdGhpcy5zdGF0dXNlcy5TdWNjZXNzO1xyXG4gICAgICAgICAgICAgICAgam9iLl9maWxlSWQgPSBycy5kYXRhO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYXV0b0Rvd25sb2FkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZmlsZVNlcnZpY2UuZG93bmxvYWRGaWxlKGpvYi5fZmlsZUlkKTtcclxuICAgICAgICAgICAgICAgICAgICBqb2IuX3N0YXR1cyA9IHRoaXMuc3RhdHVzZXMuRG93bmxvYWRlZDtcclxuICAgICAgICAgICAgICAgICAgICBqb2IuX2ZpbGVJZCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBqb2IuX3N0YXR1cyA9IHRoaXMuc3RhdHVzZXMuRXJyb3I7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9jcnVkU2VydmljZS5wcm9jZXNzRXJyb3JSZXNwb25zZShycyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KS50aGVuKHJzID0+IHtcclxuICAgICAgICAgICAgam9iLl91bmlxdWVLZXkgPSBycztcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX3RlbXBhdGVTZXJ2aWNlLkV4cG9ydEN4RXhjZWxCeUNvZGVXaXRoSFBTKHtcclxuICAgICAgICAgICAgICAgIGNvZGU6IGpvYi5fY29kZSxcclxuICAgICAgICAgICAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KGpvYi5fZGF0YSksXHJcbiAgICAgICAgICAgICAgICBmaWxlTmFtZTogam9iLl9maWxlTmFtZSxcclxuICAgICAgICAgICAgICAgIHRvcGljOiB0aGlzLnF1ZXVlTmFtZSxcclxuICAgICAgICAgICAgICAgIHVuaXF1ZUtleTogam9iLl91bmlxdWVLZXlcclxuICAgICAgICAgICAgfSkudGhlbihycyA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXJzLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICBqb2IuX3N0YXR1cyA9IHRoaXMuc3RhdHVzZXMuRXJyb3I7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3J1ZFNlcnZpY2UucHJvY2Vzc0Vycm9yUmVzcG9uc2UocnMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LCBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgam9iLl9zdGF0dXMgPSB0aGlzLnN0YXR1c2VzLkVycm9yO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJM4buXaSBn4buNaSBhcGkgc2VydmVyIGV4cG9ydFwiKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAgICAgZXJyID0+IHtcclxuICAgICAgICAgICAgICAgIGpvYi5fc3RhdHVzID0gdGhpcy5zdGF0dXNlcy5FcnJvcjtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiTOG7l2kgZ+G7jWkgSFBTIHNlcnZpY2UgOihcIik7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGRvd25sb2FkKGpvYikge1xyXG4gICAgICAgIGlmIChqb2IuX3N0YXR1cyA9PSB0aGlzLnN0YXR1c2VzLkRvd25sb2FkZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoam9iLl9maWxlSWQpIHtcclxuICAgICAgICAgICAgdGhpcy5fZmlsZVNlcnZpY2UuZG93bmxvYWRGaWxlKGpvYi5fZmlsZUlkLCBmYWxzZSwgam9iLl9maWxlTmFtZSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChqb2IuX2JpbmFyeUZpbGUpIHtcclxuICAgICAgICAgICAgRmlsZVNhdmVyLnNhdmVBcyhqb2IuX2JpbmFyeUZpbGUsIGpvYi5fZmlsZU5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBqb2IuX3N0YXR1cyA9IHRoaXMuc3RhdHVzZXMuRG93bmxvYWRlZDtcclxuICAgICAgICBqb2IuX2JpbmFyeUZpbGUgPSBudWxsO1xyXG4gICAgICAgIGpvYi5fZmlsZUlkID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBzaG93UXVldWUoKSB7XHJcbiAgICAgICAgbGV0IHNob3cgPSB0aGlzLl9xdWV1ZSAmJiB0aGlzLl9xdWV1ZS5sZW5ndGggPiAwO1xyXG5cclxuICAgICAgICByZXR1cm4gc2hvdztcclxuICAgIH1cclxuXHJcbiAgICBnZXROYW1lKGpvYikge1xyXG4gICAgICAgIHZhciBuYW1lID0gam9iLl9maWxlTmFtZS5sZW5ndGggPiB0aGlzLm1heE5hbWVMZW5ndGggPyBgJHtqb2IuX2ZpbGVOYW1lLnN1YnN0cigwLCB0aGlzLm1heE5hbWVMZW5ndGggLSAxMCl9Wy4uLl0ke1RlbXBsYXRlQ29uc3RhbnQuRVhDRUxfRVhURU5TSU9OfWAgOiBqb2IuX2ZpbGVOYW1lO1xyXG4gICAgICAgIHJldHVybiBuYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIGNhbmNlbEpvYihqb2IpIHtcclxuICAgICAgICBsZXQgZm91bmRJbmRleCA9IHRoaXMuX3F1ZXVlLmZpbmRJbmRleChqID0+IGouX2NvZGUgPT0gam9iLl9jb2RlKTtcclxuICAgICAgICBpZiAoZm91bmRJbmRleCA9PSAtMSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgZm91bmRKb2IgPSB0aGlzLl9xdWV1ZVtmb3VuZEluZGV4XTtcclxuICAgICAgICBpZiAoZm91bmRKb2IuX3N0YXR1cyA9PSB0aGlzLnN0YXR1c2VzLkV4cG9ydGluZykge1xyXG4gICAgICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2VcclxuICAgICAgICAgICAgICAgIC5zaG93Q29uZmlybSgnRmlsZSBuw6B5IMSRYW5nIMSRxrDhu6NjIHjhu60gbMO9LiBC4bqhbiBjw7MgbXXhu5FuIGThu6tuZyBs4bqhaT8nLCAnSOG7p3kgeHXhuqV0IGZpbGUnKVxyXG4gICAgICAgICAgICAgICAgLnRoZW4ocnMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghcnMpIHsgcmV0dXJuOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG5lZWRVbnN1YnNjcmliZSA9IGZvdW5kSm9iLl90eXBlID09IEpvYlR5cGVzLlNpbmduYWxSICYmIGZvdW5kSm9iLl91bmlxdWVLZXk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5lZWRVbnN1YnNjcmliZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zaWduYWxSU2VydmljZS51blN1YnNjcmliZVZpZXdDb2RlKGZvdW5kSm9iLl91bmlxdWVLZXksIHRoaXMuaHViKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcXVldWUuc3BsaWNlKGZvdW5kSW5kZXgsIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlUG9wdXBIZWlnaHQoKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZm91bmRKb2IuX3N0YXR1cyAhPSB0aGlzLnN0YXR1c2VzLkV4cG9ydGluZykge1xyXG4gICAgICAgICAgICB0aGlzLl9xdWV1ZS5zcGxpY2UoZm91bmRJbmRleCwgMSk7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUG9wdXBIZWlnaHQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2UoKSB7XHJcbiAgICAgICAgdmFyIGhhc0V4cG9ydGluZyA9IHRoaXMuX3F1ZXVlICYmIHRoaXMuX3F1ZXVlLmZpbHRlcihpdGVtID0+IGl0ZW0uX3N0YXR1cyA9PSB0aGlzLnN0YXR1c2VzLkV4cG9ydGluZykubGVuZ3RoID4gMDtcclxuXHJcbiAgICAgICAgaWYgKGhhc0V4cG9ydGluZykge1xyXG4gICAgICAgICAgICB0aGlzLl9ub3RpZmllclNlcnZpY2VcclxuICAgICAgICAgICAgICAgIC5zaG93Q29uZmlybSgnQ8OzIGZpbGUgxJFhbmcgxJHGsOG7o2MgeOG7rSBsw70uIELhuqFuIGPDsyBtdeG7kW4gZOG7q25nIGzhuqFpPycsICdI4buneSB4deG6pXQgZmlsZScpXHJcbiAgICAgICAgICAgICAgICAudGhlbihycyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFycykgeyByZXR1cm47IH1cclxuICAgICAgICAgICAgICAgICAgICBsZXQgbmVlZFVuc3Vic2NyaWJlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcXVldWUuZm9yRWFjaChqb2IgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZWVkVW5zdWJzY3JpYmUgPSBqb2IuX3R5cGUgPT0gSm9iVHlwZXMuU2luZ25hbFIgJiYgam9iLl91bmlxdWVLZXk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZWVkVW5zdWJzY3JpYmUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NpZ25hbFJTZXJ2aWNlLnVuU3Vic2NyaWJlVmlld0NvZGUoam9iLl91bmlxdWVLZXksIHRoaXMuaHViKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3F1ZXVlID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVQb3B1cEhlaWdodCgpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5fcXVldWUgPSBbXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlUG9wdXBIZWlnaHQoKSB7XHJcbiAgICAgICAgbGV0IGhlaWdodCA9ICh0aGlzLl9xdWV1ZSB8fCBbXSkubGVuZ3RoICogdGhpcy5pdGVtSGVpZ2h0O1xyXG4gICAgICAgIHRoaXMucG9wdXBIZWlnaHQgPSBoZWlnaHQgPiB0aGlzLm1heEhlaWdodCA/IHRoaXMubWF4SGVpZ2h0IDogaGVpZ2h0O1xyXG4gICAgfVxyXG59XHJcblxyXG4iLCI8ZGl2IGNsYXNzPVwicnEtY29udGFpbmVyXCIgKm5nSWY9XCJzaG93UXVldWUoKVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJxLWhlYWRlclwiPlxyXG4gICAgICAgIDxkaXY+e3toZWFkZXIgfCB0cmFuc2xhdGV9fTwvZGl2PlxyXG4gICAgICAgIDxkaXY+XHJcblxyXG4gICAgICAgICAgICA8cC1jaGVja2JveCBbKG5nTW9kZWwpXT1cImF1dG9Eb3dubG9hZFwiIGJpbmFyeT1cInRydWVcIiBwVG9vbHRpcD1cIlThu7EgxJHhu5luZyB04bqjaVwiIHRvb2x0aXBQb3NpdGlvbj1cImxlZnRcIj5cclxuICAgICAgICAgICAgPC9wLWNoZWNrYm94PlxyXG5cclxuICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6O1wiIChjbGljayk9XCJ0b2dnbGVFeHBhbmQoKVwiIHBUb29sdGlwPVwie3tleHBhbmQgPyAnVGh1IGfhu41uJyA6ICdN4bufIHLhu5luZyd9fVwiXHJcbiAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJsZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhc1wiIFtuZ0NsYXNzXT1cInsnZmEtY29tcHJlc3MnIDogZXhwYW5kLCAnZmEtZXhwYW5kJzogIWV4cGFuZH1cIj48L2k+XHJcbiAgICAgICAgICAgIDwvYT5cclxuXHJcbiAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiAoY2xpY2spPVwiY2xvc2UoKVwiIHBUb29sdGlwPVwixJDDs25nXCI+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS10aW1lc1wiPjwvaT5cclxuICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicnEtYm9keVwiICpuZ0lmPVwiZXhwYW5kXCI+XHJcbiAgICAgICAgPHRuLWN1c3RvbS1zY3JvbGxiYXIgW3N0eWxlXT1cInsnaGVpZ2h0LnB4JzogcG9wdXBIZWlnaHR9XCIgI3Njcm9sbGJhcj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlLWpvYlwiICpuZ0Zvcj1cImxldCBqb2Igb2YgX3F1ZXVlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmUtam9iLXRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj57e2dldE5hbWUoam9iKX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6O1wiIChjbGljayk9XCJjYW5jZWxKb2Ioam9iKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtdGltZXNcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlLWpvYi1yZXN1bHRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnam9iLXN1Y2Nlc3MnOiBqb2IuX3N0YXR1cyA9PSBzdGF0dXNlcy5TdWNjZXNzLCAnam9iLWVycm9yJzogam9iLl9zdGF0dXMgPT0gc3RhdHVzZXMuRXJyb3IsICdqb2ItZXhwb3J0aW5nJyA6IGpvYi5fc3RhdHVzID09IHN0YXR1c2VzLkV4cG9ydGluZywgJ2pvYi1kb3dubG9hZGVkJzogam9iLl9zdGF0dXMgPT0gc3RhdHVzZXMuRG93bmxvYWRlZH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImpvYi5fc3RhdHVzICE9IHN0YXR1c2VzLlN1Y2Nlc3MgJiYgam9iLl9zdGF0dXMgIT0gc3RhdHVzZXMuRXhwb3J0aW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGljU3RhdHVzLmdldChqb2IuX3N0YXR1cykgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJqb2IuX3N0YXR1cyA9PSBzdGF0dXNlcy5FeHBvcnRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxvYWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2RpY1N0YXR1cy5nZXQoam9iLl9zdGF0dXMpIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiAoY2xpY2spPVwiZG93bmxvYWQoam9iKVwiIGNsYXNzPVwiam9iLXN1Y2Nlc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImpvYi5fc3RhdHVzID09IHN0YXR1c2VzLlN1Y2Nlc3NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtZG93bmxvYWRcIj48L2k+IHt7ZGljU3RhdHVzLmdldChqb2IuX3N0YXR1cykgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3RuLWN1c3RvbS1zY3JvbGxiYXI+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -168,10 +168,10 @@ export class SettingsComponent extends ComponentBase {
168
168
  }
169
169
  }
170
170
  SettingsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: SettingsComponent, deps: [{ token: i0.Injector }, { token: i1.TranslateService }, { token: i2.DomService }, { token: i3.UserService }], target: i0.ɵɵFactoryTarget.Component });
171
- SettingsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: SettingsComponent, selector: "settings", inputs: { parentModel: "parentModel", parentSetting: "parentSetting", entityMetadataService: "entityMetadataService" }, outputs: { onCancel: "onCancel", onSave: "onSave", onDelete: "onDelete" }, providers: [ComponentContextService], viewQueries: [{ propertyName: "dialog", first: true, predicate: ["dialog"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<tn-dialog #dialog [disabledButton]=\"model.submitting\" [closeOnEscape]=\"true\" [header]=\"popupHeader | translate\"\r\n [popupSize]=\"popupSize\" [visible]=\"true\" (onHide)=\"cancel()\" (visibleChange)=\"visibleChangedDialog($event)\"\r\n [styleClass]=\"'tn-form-dialog'\">\r\n <div style=\"height: 100%\">\r\n <crud-form #crudForm [context]=\"context\" [(data)]=\"model.data\" [setting]=\"setting\" [disableCaching]=\"true\">\r\n </crud-form>\r\n <div style=\"padding: 0.5rem;\">\r\n <div class=\"p-col-12\" *ngIf=\"parentSetting.cols\">\r\n <label for=\"configViewTable\" class=\"config-view-label\">C\u1EA5u h\u00ECnh hi\u1EC3n th\u1ECB</label>\r\n </div>\r\n <div class=\"p-col-12\" *ngIf=\"!parentSetting.cols\">\r\n <label for=\"configViewTable\" class=\"config-view-label\">Ch\u01B0a c\u00F3 thi\u1EBFt l\u1EADp c\u1ED9t cho trang\r\n n\u00E0y</label>\r\n </div>\r\n <div class=\"p-col-12\">\r\n <p-table [value]=\"model.data.details\" [columns]=\"columnSchemas\" [responsive]=\"true\"\r\n [reorderableColumns]=\"true\">\r\n <ng-template pTemplate=\"header\" let-columns let-rowData>\r\n <tr>\r\n <th *ngFor=\"let col of columnSchemas\" [style.width]=\"col.width\" style=\"text-align: center;\">\r\n {{col.header}}\r\n </th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-rowData let-ri=\"rowIndex\"\r\n let-columns=\"pageSetting.columnSettings\">\r\n <tr [pReorderableRow]=\"ri\">\r\n <td class=\"stt\" style=\"text-align:center\">{{ri+1}}</td>\r\n <td style=\"text-align:left\">\r\n <span class=\"p-column-title\">{{columnSchemas[1].header}}</span>\r\n {{rowData.columnName}}\r\n </td>\r\n <td style=\"text-align:center\">\r\n <span class=\"p-column-title\">{{columnSchemas[2].header}}</span>\r\n <p-checkbox [(ngModel)]=\"rowData.visible\" [binary]=\"true\">\r\n </p-checkbox>\r\n </td>\r\n <td style=\"text-align:center\">\r\n <span class=\"p-column-title\">{{columnSchemas[3].header}}</span>\r\n <p-dropdown appendTo=\"body\" [styleClass]=\"'full-width'\" [(ngModel)]=\"rowData.textAlign\"\r\n [options]=\"textAlignOptions\">\r\n </p-dropdown>\r\n </td>\r\n <td style=\"text-align:center\">\r\n <span class=\"p-column-title\">{{columnSchemas[4].header}}</span>\r\n <input [(ngModel)]=\"rowData.width\" pInputText style=\"width:100%\" autocomplete=\"off\"\r\n autocorrect=\"off\" autocapitalize=\"off\" spellcheck=\"false\" />\r\n </td>\r\n <td style=\"text-align:center\">\r\n <i class=\"fas fa-arrows-alt\"\r\n style=\"width:50px; cursor:pointer; padding: 8px; color: #555;\"\r\n [pReorderableRowHandle]=\"ri\"></i>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-template #footer>\r\n <ng-container *ngIf=\"!parentSetting.hiddenSaveSetting\">\r\n <button type=\"button\" pButton class=\"p-button-text\" icon=\"pi pi-save\" [label]=\"'L\u01B0u' | translate\"\r\n (click)=\"saveSetting()\"></button>\r\n <button type=\"button\" pButton class=\"p-button-text p-button-danger\" icon=\"pi pi-trash\"\r\n [label]=\"'B\u1ECF c\u1EA5u h\u00ECnh' | translate\" (click)=\"deleteSetting()\"></button>\r\n </ng-container>\r\n <button type=\"button\" pButton class=\"p-button-text p-button-secondary\" icon=\"pi pi-replay\"\r\n [label]=\"'FORM.CANCEL' | translate\" preventTab (click)=\"cancel()\"></button>\r\n </ng-template>\r\n</tn-dialog>", styles: [""], dependencies: [{ kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i7.Dropdown, selector: "p-dropdown", inputs: ["scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "selectId", "dataKey", "filterBy", "autofocus", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "maxItemDisplay", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "autofocusSelectedItem", "modifyOptionsWhenFilter", "delayFilter", "disabled", "itemSize", "options", "filterValue"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: i8.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "virtualRowHeight", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["selectAllChange", "selectionChange", "contextMenuSelectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i8.ReorderableRowHandle, selector: "[pReorderableRowHandle]", inputs: ["pReorderableRowHandle"] }, { kind: "directive", type: i8.ReorderableRow, selector: "[pReorderableRow]", inputs: ["pReorderableRow", "pReorderableRowDisabled"] }, { kind: "directive", type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i10.Checkbox, selector: "p-checkbox", inputs: ["value", "name", "disabled", "binary", "label", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "style", "styleClass", "labelStyleClass", "formControl", "checkboxIcon", "readonly", "required", "trueValue", "falseValue"], outputs: ["onChange"] }, { kind: "directive", type: i11.InputText, selector: "[pInputText]" }, { kind: "component", type: i12.CrudFormComponent, selector: "crud-form", inputs: ["setting", "context", "filesUploaded", "isViewMode", "disableKeypressControl", "disableCaching", "styleClass", "useGridTemplate", "formId", "formClass", "autoFocus", "trapFocus", "data", "formState"], outputs: ["onFormReady", "onControlReady", "onAllControlReady", "onModelChanged", "dataChange", "onChange", "onAfterTrinhKy"] }, { kind: "component", type: i13.TnDialogComponent, selector: "tn-dialog", inputs: ["maskClass", "styleClass", "scrollBarStyleClass", "useDefaultScrollBar", "visible", "disabledButton", "modal", "header", "popupSize", "closeOnEscape", "showFooter", "positionTop", "minY", "hiddenSave", "maximizable"], outputs: ["onSave", "onCancel", "onShow", "onHide"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Default });
171
+ SettingsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: SettingsComponent, selector: "settings", inputs: { parentModel: "parentModel", parentSetting: "parentSetting", entityMetadataService: "entityMetadataService" }, outputs: { onCancel: "onCancel", onSave: "onSave", onDelete: "onDelete" }, providers: [ComponentContextService], viewQueries: [{ propertyName: "dialog", first: true, predicate: ["dialog"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<tn-dialog #dialog [disabledButton]=\"model.submitting\" [closeOnEscape]=\"true\" [header]=\"popupHeader | translate\"\r\n [popupSize]=\"popupSize\" [visible]=\"true\" (onHide)=\"cancel()\" (visibleChange)=\"visibleChangedDialog($event)\"\r\n [styleClass]=\"'tn-form-dialog'\">\r\n <div style=\"height: 100%\">\r\n <crud-form #crudForm [context]=\"context\" [(data)]=\"model.data\" [setting]=\"setting\" [disableCaching]=\"true\">\r\n </crud-form>\r\n <div style=\"padding: 0.5rem;\">\r\n <div class=\"col-12\" *ngIf=\"parentSetting.cols\">\r\n <label for=\"configViewTable\" class=\"config-view-label\">C\u1EA5u h\u00ECnh hi\u1EC3n th\u1ECB</label>\r\n </div>\r\n <div class=\"col-12\" *ngIf=\"!parentSetting.cols\">\r\n <label for=\"configViewTable\" class=\"config-view-label\">Ch\u01B0a c\u00F3 thi\u1EBFt l\u1EADp c\u1ED9t cho trang\r\n n\u00E0y</label>\r\n </div>\r\n <div class=\"col-12\">\r\n <p-table [value]=\"model.data.details\" [columns]=\"columnSchemas\" [responsive]=\"true\"\r\n [reorderableColumns]=\"true\">\r\n <ng-template pTemplate=\"header\" let-columns let-rowData>\r\n <tr>\r\n <th *ngFor=\"let col of columnSchemas\" [style.width]=\"col.width\" style=\"text-align: center;\">\r\n {{col.header}}\r\n </th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-rowData let-ri=\"rowIndex\"\r\n let-columns=\"pageSetting.columnSettings\">\r\n <tr [pReorderableRow]=\"ri\">\r\n <td class=\"stt\" style=\"text-align:center\">{{ri+1}}</td>\r\n <td style=\"text-align:left\">\r\n <span class=\"p-column-title\">{{columnSchemas[1].header}}</span>\r\n {{rowData.columnName}}\r\n </td>\r\n <td style=\"text-align:center\">\r\n <span class=\"p-column-title\">{{columnSchemas[2].header}}</span>\r\n <p-checkbox [(ngModel)]=\"rowData.visible\" [binary]=\"true\">\r\n </p-checkbox>\r\n </td>\r\n <td style=\"text-align:center\">\r\n <span class=\"p-column-title\">{{columnSchemas[3].header}}</span>\r\n <p-dropdown appendTo=\"body\" [styleClass]=\"'full-width'\" [(ngModel)]=\"rowData.textAlign\"\r\n [options]=\"textAlignOptions\">\r\n </p-dropdown>\r\n </td>\r\n <td style=\"text-align:center\">\r\n <span class=\"p-column-title\">{{columnSchemas[4].header}}</span>\r\n <input [(ngModel)]=\"rowData.width\" pInputText style=\"width:100%\" autocomplete=\"off\"\r\n autocorrect=\"off\" autocapitalize=\"off\" spellcheck=\"false\" />\r\n </td>\r\n <td style=\"text-align:center\">\r\n <i class=\"fas fa-arrows-alt\"\r\n style=\"width:50px; cursor:pointer; padding: 8px; color: #555;\"\r\n [pReorderableRowHandle]=\"ri\"></i>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-template #footer>\r\n <ng-container *ngIf=\"!parentSetting.hiddenSaveSetting\">\r\n <button type=\"button\" pButton class=\"p-button-text\" icon=\"pi pi-save\" [label]=\"'L\u01B0u' | translate\"\r\n (click)=\"saveSetting()\"></button>\r\n <button type=\"button\" pButton class=\"p-button-text p-button-danger\" icon=\"pi pi-trash\"\r\n [label]=\"'B\u1ECF c\u1EA5u h\u00ECnh' | translate\" (click)=\"deleteSetting()\"></button>\r\n </ng-container>\r\n <button type=\"button\" pButton class=\"p-button-text p-button-secondary\" icon=\"pi pi-replay\"\r\n [label]=\"'FORM.CANCEL' | translate\" preventTab (click)=\"cancel()\"></button>\r\n </ng-template>\r\n</tn-dialog>", styles: [""], dependencies: [{ kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i7.Dropdown, selector: "p-dropdown", inputs: ["scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "selectId", "dataKey", "filterBy", "autofocus", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "maxItemDisplay", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "autofocusSelectedItem", "modifyOptionsWhenFilter", "delayFilter", "disabled", "itemSize", "options", "filterValue"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: i8.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "virtualRowHeight", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["selectAllChange", "selectionChange", "contextMenuSelectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i8.ReorderableRowHandle, selector: "[pReorderableRowHandle]", inputs: ["pReorderableRowHandle"] }, { kind: "directive", type: i8.ReorderableRow, selector: "[pReorderableRow]", inputs: ["pReorderableRow", "pReorderableRowDisabled"] }, { kind: "directive", type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i10.Checkbox, selector: "p-checkbox", inputs: ["value", "name", "disabled", "binary", "label", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "style", "styleClass", "labelStyleClass", "formControl", "checkboxIcon", "readonly", "required", "trueValue", "falseValue"], outputs: ["onChange"] }, { kind: "directive", type: i11.InputText, selector: "[pInputText]" }, { kind: "component", type: i12.CrudFormComponent, selector: "crud-form", inputs: ["setting", "context", "filesUploaded", "isViewMode", "disableKeypressControl", "disableCaching", "styleClass", "useGridTemplate", "formId", "formClass", "autoFocus", "trapFocus", "data", "formState"], outputs: ["onFormReady", "onControlReady", "onAllControlReady", "onModelChanged", "dataChange", "onChange", "onAfterTrinhKy"] }, { kind: "component", type: i13.TnDialogComponent, selector: "tn-dialog", inputs: ["maskClass", "styleClass", "scrollBarStyleClass", "useDefaultScrollBar", "visible", "disabledButton", "modal", "header", "popupSize", "closeOnEscape", "showFooter", "positionTop", "minY", "hiddenSave", "maximizable"], outputs: ["onSave", "onCancel", "onShow", "onHide"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Default });
172
172
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: SettingsComponent, decorators: [{
173
173
  type: Component,
174
- args: [{ selector: 'settings', providers: [ComponentContextService], changeDetection: ChangeDetectionStrategy.Default, template: "<tn-dialog #dialog [disabledButton]=\"model.submitting\" [closeOnEscape]=\"true\" [header]=\"popupHeader | translate\"\r\n [popupSize]=\"popupSize\" [visible]=\"true\" (onHide)=\"cancel()\" (visibleChange)=\"visibleChangedDialog($event)\"\r\n [styleClass]=\"'tn-form-dialog'\">\r\n <div style=\"height: 100%\">\r\n <crud-form #crudForm [context]=\"context\" [(data)]=\"model.data\" [setting]=\"setting\" [disableCaching]=\"true\">\r\n </crud-form>\r\n <div style=\"padding: 0.5rem;\">\r\n <div class=\"p-col-12\" *ngIf=\"parentSetting.cols\">\r\n <label for=\"configViewTable\" class=\"config-view-label\">C\u1EA5u h\u00ECnh hi\u1EC3n th\u1ECB</label>\r\n </div>\r\n <div class=\"p-col-12\" *ngIf=\"!parentSetting.cols\">\r\n <label for=\"configViewTable\" class=\"config-view-label\">Ch\u01B0a c\u00F3 thi\u1EBFt l\u1EADp c\u1ED9t cho trang\r\n n\u00E0y</label>\r\n </div>\r\n <div class=\"p-col-12\">\r\n <p-table [value]=\"model.data.details\" [columns]=\"columnSchemas\" [responsive]=\"true\"\r\n [reorderableColumns]=\"true\">\r\n <ng-template pTemplate=\"header\" let-columns let-rowData>\r\n <tr>\r\n <th *ngFor=\"let col of columnSchemas\" [style.width]=\"col.width\" style=\"text-align: center;\">\r\n {{col.header}}\r\n </th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-rowData let-ri=\"rowIndex\"\r\n let-columns=\"pageSetting.columnSettings\">\r\n <tr [pReorderableRow]=\"ri\">\r\n <td class=\"stt\" style=\"text-align:center\">{{ri+1}}</td>\r\n <td style=\"text-align:left\">\r\n <span class=\"p-column-title\">{{columnSchemas[1].header}}</span>\r\n {{rowData.columnName}}\r\n </td>\r\n <td style=\"text-align:center\">\r\n <span class=\"p-column-title\">{{columnSchemas[2].header}}</span>\r\n <p-checkbox [(ngModel)]=\"rowData.visible\" [binary]=\"true\">\r\n </p-checkbox>\r\n </td>\r\n <td style=\"text-align:center\">\r\n <span class=\"p-column-title\">{{columnSchemas[3].header}}</span>\r\n <p-dropdown appendTo=\"body\" [styleClass]=\"'full-width'\" [(ngModel)]=\"rowData.textAlign\"\r\n [options]=\"textAlignOptions\">\r\n </p-dropdown>\r\n </td>\r\n <td style=\"text-align:center\">\r\n <span class=\"p-column-title\">{{columnSchemas[4].header}}</span>\r\n <input [(ngModel)]=\"rowData.width\" pInputText style=\"width:100%\" autocomplete=\"off\"\r\n autocorrect=\"off\" autocapitalize=\"off\" spellcheck=\"false\" />\r\n </td>\r\n <td style=\"text-align:center\">\r\n <i class=\"fas fa-arrows-alt\"\r\n style=\"width:50px; cursor:pointer; padding: 8px; color: #555;\"\r\n [pReorderableRowHandle]=\"ri\"></i>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-template #footer>\r\n <ng-container *ngIf=\"!parentSetting.hiddenSaveSetting\">\r\n <button type=\"button\" pButton class=\"p-button-text\" icon=\"pi pi-save\" [label]=\"'L\u01B0u' | translate\"\r\n (click)=\"saveSetting()\"></button>\r\n <button type=\"button\" pButton class=\"p-button-text p-button-danger\" icon=\"pi pi-trash\"\r\n [label]=\"'B\u1ECF c\u1EA5u h\u00ECnh' | translate\" (click)=\"deleteSetting()\"></button>\r\n </ng-container>\r\n <button type=\"button\" pButton class=\"p-button-text p-button-secondary\" icon=\"pi pi-replay\"\r\n [label]=\"'FORM.CANCEL' | translate\" preventTab (click)=\"cancel()\"></button>\r\n </ng-template>\r\n</tn-dialog>" }]
174
+ args: [{ selector: 'settings', providers: [ComponentContextService], changeDetection: ChangeDetectionStrategy.Default, template: "<tn-dialog #dialog [disabledButton]=\"model.submitting\" [closeOnEscape]=\"true\" [header]=\"popupHeader | translate\"\r\n [popupSize]=\"popupSize\" [visible]=\"true\" (onHide)=\"cancel()\" (visibleChange)=\"visibleChangedDialog($event)\"\r\n [styleClass]=\"'tn-form-dialog'\">\r\n <div style=\"height: 100%\">\r\n <crud-form #crudForm [context]=\"context\" [(data)]=\"model.data\" [setting]=\"setting\" [disableCaching]=\"true\">\r\n </crud-form>\r\n <div style=\"padding: 0.5rem;\">\r\n <div class=\"col-12\" *ngIf=\"parentSetting.cols\">\r\n <label for=\"configViewTable\" class=\"config-view-label\">C\u1EA5u h\u00ECnh hi\u1EC3n th\u1ECB</label>\r\n </div>\r\n <div class=\"col-12\" *ngIf=\"!parentSetting.cols\">\r\n <label for=\"configViewTable\" class=\"config-view-label\">Ch\u01B0a c\u00F3 thi\u1EBFt l\u1EADp c\u1ED9t cho trang\r\n n\u00E0y</label>\r\n </div>\r\n <div class=\"col-12\">\r\n <p-table [value]=\"model.data.details\" [columns]=\"columnSchemas\" [responsive]=\"true\"\r\n [reorderableColumns]=\"true\">\r\n <ng-template pTemplate=\"header\" let-columns let-rowData>\r\n <tr>\r\n <th *ngFor=\"let col of columnSchemas\" [style.width]=\"col.width\" style=\"text-align: center;\">\r\n {{col.header}}\r\n </th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-rowData let-ri=\"rowIndex\"\r\n let-columns=\"pageSetting.columnSettings\">\r\n <tr [pReorderableRow]=\"ri\">\r\n <td class=\"stt\" style=\"text-align:center\">{{ri+1}}</td>\r\n <td style=\"text-align:left\">\r\n <span class=\"p-column-title\">{{columnSchemas[1].header}}</span>\r\n {{rowData.columnName}}\r\n </td>\r\n <td style=\"text-align:center\">\r\n <span class=\"p-column-title\">{{columnSchemas[2].header}}</span>\r\n <p-checkbox [(ngModel)]=\"rowData.visible\" [binary]=\"true\">\r\n </p-checkbox>\r\n </td>\r\n <td style=\"text-align:center\">\r\n <span class=\"p-column-title\">{{columnSchemas[3].header}}</span>\r\n <p-dropdown appendTo=\"body\" [styleClass]=\"'full-width'\" [(ngModel)]=\"rowData.textAlign\"\r\n [options]=\"textAlignOptions\">\r\n </p-dropdown>\r\n </td>\r\n <td style=\"text-align:center\">\r\n <span class=\"p-column-title\">{{columnSchemas[4].header}}</span>\r\n <input [(ngModel)]=\"rowData.width\" pInputText style=\"width:100%\" autocomplete=\"off\"\r\n autocorrect=\"off\" autocapitalize=\"off\" spellcheck=\"false\" />\r\n </td>\r\n <td style=\"text-align:center\">\r\n <i class=\"fas fa-arrows-alt\"\r\n style=\"width:50px; cursor:pointer; padding: 8px; color: #555;\"\r\n [pReorderableRowHandle]=\"ri\"></i>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-template #footer>\r\n <ng-container *ngIf=\"!parentSetting.hiddenSaveSetting\">\r\n <button type=\"button\" pButton class=\"p-button-text\" icon=\"pi pi-save\" [label]=\"'L\u01B0u' | translate\"\r\n (click)=\"saveSetting()\"></button>\r\n <button type=\"button\" pButton class=\"p-button-text p-button-danger\" icon=\"pi pi-trash\"\r\n [label]=\"'B\u1ECF c\u1EA5u h\u00ECnh' | translate\" (click)=\"deleteSetting()\"></button>\r\n </ng-container>\r\n <button type=\"button\" pButton class=\"p-button-text p-button-secondary\" icon=\"pi pi-replay\"\r\n [label]=\"'FORM.CANCEL' | translate\" preventTab (click)=\"cancel()\"></button>\r\n </ng-template>\r\n</tn-dialog>" }]
175
175
  }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.TranslateService }, { type: i2.DomService }, { type: i3.UserService }]; }, propDecorators: { dialog: [{
176
176
  type: ViewChild,
177
177
  args: ['dialog', { static: true }]
@@ -188,4 +188,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
188
188
  }], onDelete: [{
189
189
  type: Output
190
190
  }] } });
191
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy9zZXR0aW5ncy9zZXR0aW5ncy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL3NldHRpbmdzL3NldHRpbmdzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFZLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzdILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHFCQUFxQixFQUF1QixZQUFZLEVBQUUsZUFBZSxFQUFpQyxxQkFBcUIsRUFBa0IsNEJBQTRCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxTixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQVkvQyxNQUFNLE9BQU8saUJBQWtCLFNBQVEsYUFBYTtJQXNCaEQsWUFDSSxTQUFtQixFQUNULGlCQUFtQyxFQUNuQyxXQUF1QixFQUN2QixZQUF5QjtRQUVuQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFKUCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBQ25DLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ3ZCLGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBbEI3QixhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNuQyxXQUFNLEdBQUcsSUFBSSxZQUFZ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TyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0MsQ0FBQzs7OEdBMUtRLGlCQUFpQjtrR0FBakIsaUJBQWlCLHNPQUhmLENBQUMsdUJBQXVCLENBQUMsaUtDaEJ4QywwakpBcUVZOzJGRGxEQyxpQkFBaUI7a0JBUDdCLFNBQVM7K0JBQ0ksVUFBVSxhQUdULENBQUMsdUJBQXVCLENBQUMsbUJBQ25CLHVCQUF1QixDQUFDLE9BQU87aUxBR1QsTUFBTTtzQkFBNUMsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUU1QixXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUcscUJBQXFCO3NCQUE3QixLQUFLO2dCQUVJLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IERpYWxvZyB9IGZyb20gJ3RuLWN1c3RvbS1wcmltZW5nL2RpYWxvZyc7XHJcbmltcG9ydCB7IENvbXBvbmVudENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBwLWNvbnRleHQvY29tcG9uZW50LWNvbnRleHQuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudEJhc2UgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2Jhc2UvY29tcG9uZW50LWJhc2UnO1xyXG5pbXBvcnQgeyBTb3J0RGlycyB9IGZyb20gJy4uLy4uL2NsYXNzZXMvY29uc3RhbnRzJztcclxuaW1wb3J0IHsgQ2hlY2tib3hDb250cm9sU2NoZW1hLCBDb2x1bW5TZXR0aW5nRGV0YWlsLCBDcnVkRm9ybURhdGEsIENydWRGb3JtU2V0dGluZywgQ3J1ZExpc3REYXRhLCBDcnVkTGlzdFNldHRpbmcsIERyb3Bkb3duQ29udHJvbFNjaGVtYSwgRm9ybVNjaGVtYUJhc2UsIFJhZGlvQnV0dG9uTGlzdENvbnRyb2xTY2hlbWEgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcclxuaW1wb3J0IHsgVGV4dEFsaWduIH0gZnJvbSAnLi4vLi4vZW51bXMvY29tbW9uJztcclxuaW1wb3J0IHsgRG9tU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RvbS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW50aXR5TWV0YWRhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZW50aXR5LW1ldGFkYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3VzZXIuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnc2V0dGluZ3MnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NldHRpbmdzLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3NldHRpbmdzLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFtDb21wb25lbnRDb250ZXh0U2VydmljZV0sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHRcclxufSlcclxuZXhwb3J0IGNsYXNzIFNldHRpbmdzQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBAVmlld0NoaWxkKCdkaWFsb2cnLCB7IHN0YXRpYzogdHJ1ZSB9KSBkaWFsb2c6IERpYWxvZztcclxuXHJcbiAgICBASW5wdXQoKSBwYXJlbnRNb2RlbDogQ3J1ZExpc3REYXRhO1xyXG4gICAgQElucHV0KCkgcGFyZW50U2V0dGluZzogQ3J1ZExpc3RTZXR0aW5nO1xyXG5cclxuICAgIEBJbnB1dCgpIGVudGl0eU1ldGFkYXRhU2VydmljZTogRW50aXR5TWV0YWRhdGFTZXJ2aWNlO1xyXG5cclxuICAgIEBPdXRwdXQoKSBvbkNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgpIG9uU2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgpIG9uRGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gICAgbW9kZWw6IENydWRGb3JtRGF0YSA9IG5ldyBDcnVkRm9ybURhdGEoKTtcclxuICAgIHNldHRpbmc6IENydWRGb3JtU2V0dGluZyA9IG5ldyBDcnVkRm9ybVNldHRpbmcoKTtcclxuICAgIGNvbnRleHQ6IENvbXBvbmVudENvbnRleHRTZXJ2aWNlO1xyXG5cclxuICAgIGZvcm1TY2hlbWE6IEZvcm1TY2hlbWFCYXNlW107XHJcbiAgICBwb3B1cFNpemUgPSB7IHdpZHRoOiAxMDI0LCBoZWlnaHQ6IDU1MCB9O1xyXG4gICAgcG9wdXBIZWFkZXIgPSAnQ+G6pXUgaMOsbmgnO1xyXG4gICAgY29sdW1uU2NoZW1hczogYW55ID0gW107XHJcbiAgICB0ZXh0QWxpZ25PcHRpb25zOiBhbnkgPSBbXTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBfaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgIHByb3RlY3RlZCBfdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgICAgICBwcm90ZWN0ZWQgX2RvbVNlcnZpY2U6IERvbVNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF91c2VyU2VydmljZTogVXNlclNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKF9pbmplY3Rvcik7XHJcbiAgICB9XHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICBjb25zdCBzb3J0RGF0YVNvdXJjZSA9IFtdLCBncm91cERhdGFTb3VyY2UgPSBbXTtcclxuICAgICAgICB0aGlzLm1vZGVsLmRhdGEgPSB7XHJcbiAgICAgICAgICAgIHNvcnRGaWVsZDogdGhpcy5wYXJlbnRTZXR0aW5nLmNvbHVtblNldHRpbmcuc29ydEZpZWxkLFxyXG4gICAgICAgICAgICBzb3J0RGlyOiB0aGlzLnBhcmVudFNldHRpbmcuY29sdW1uU2V0dGluZy5zb3J0RGlyLFxyXG4gICAgICAgICAgICBncm91cEZpZWxkOiB0aGlzLnBhcmVudFNldHRpbmcuY29sdW1uU2V0dGluZy5ncm91cEZpZWxkLFxyXG4gICAgICAgICAgICBncm91cEluQ2xpZW50OiB0aGlzLnBhcmVudFNldHRpbmcuY29sdW1uU2V0dGluZy5ncm91cEluQ2xpZW50LFxyXG4gICAgICAgICAgICBkZXRhaWxzOiB0aGlzLnBhcmVudFNldHRpbmcuY29sdW1uU2V0dGluZy5kZXRhaWxzXHJcbiAgICAgICAgfTtcclxuICAgICAgICAvLyB0aGlzLm1vZGVsLmFjdGl2ZUVudGl0eU1ldGFkYXRhID0gZmFsc2U7XHJcbiAgICAgICAgLy8gdGhpcy5tb2RlbC5hY3RpdmVFbnRpdHlQZXJtaXNzaW9uID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGNvbnN0IHRlbXAgPSBbXTtcclxuICAgICAgICBpZiAoIXRoaXMucGFyZW50U2V0dGluZy5jb2xzKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wYXJlbnRTZXR0aW5nLmNvbHMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQudmlzaWJsZSkge1xyXG4gICAgICAgICAgICAgICAgZ3JvdXBEYXRhU291cmNlLnB1c2goeyB2YWx1ZTogZWxlbWVudC5maWVsZCwgbGFiZWw6IGVsZW1lbnQubGFiZWwgfSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5zb3J0ID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc29ydERhdGFTb3VyY2UucHVzaCh7IHZhbHVlOiBlbGVtZW50LmZpZWxkLCBsYWJlbDogZWxlbWVudC5sYWJlbCB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChlbGVtZW50LnJhd0NvbHVtbikge1xyXG4gICAgICAgICAgICAgICAgZ3JvdXBEYXRhU291cmNlLnB1c2goeyB2YWx1ZTogZWxlbWVudC5maWVsZCwgbGFiZWw6IGVsZW1lbnQubGFiZWwgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCFlbGVtZW50LnJhd0NvbHVtbikge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLm1vZGVsLmRhdGEuZGV0YWlscy5zb21lKHEgPT4gcS5jb2x1bW5Db2RlID09IGVsZW1lbnQuZmllbGQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHZpc2libGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5iYXNlU2VydmljZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWZGaWVsZCA9IHRoaXMucGFyZW50U2V0dGluZy5jb2xzLmZpbmQoZiA9PiBmLmZpZWxkID09ICdzdHInICsgZWxlbWVudC5maWVsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWZGaWVsZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZSA9IHJlZkZpZWxkLnZpc2libGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlID0gZWxlbWVudC52aXNpYmxlID09PSB1bmRlZmluZWQgfHwgZWxlbWVudC52aXNpYmxlID09PSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlID0gZWxlbWVudC52aXNpYmxlID09PSB1bmRlZmluZWQgfHwgZWxlbWVudC52aXNpYmxlID09PSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0gPENvbHVtblNldHRpbmdEZXRhaWw+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5Db2RlOiBlbGVtZW50LmZpZWxkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5OYW1lOiBlbGVtZW50LmxhYmVsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0QWxpZ246IGVsZW1lbnQudGV4dEFsaWduID09PSB1bmRlZmluZWQgPyBUZXh0QWxpZ24uTGVmdCA6IGVsZW1lbnQudGV4dEFsaWduLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogZWxlbWVudC53aWR0aFxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZpc2libGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb2RlbC5kYXRhLmRldGFpbHMucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGVtcC5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm1vZGVsLmRhdGEuZGV0YWlscy5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLnNldHRpbmcuc2NoZW1hID0gPEZvcm1TY2hlbWFCYXNlW10+W1xyXG4gICAgICAgICAgICBuZXcgRHJvcGRvd25Db250cm9sU2NoZW1hKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnc29ydEZpZWxkJyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ1Phuq9wIHjhur9wIHRoZW8nKSxcclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnQ2jhu41uIGPhu5l0JyxcclxuICAgICAgICAgICAgICAgIHNob3dDbGVhcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGRhdGFTb3VyY2U6IHNvcnREYXRhU291cmNlLFxyXG4gICAgICAgICAgICAgICAgbWRXaWR0aDogNixcclxuICAgICAgICAgICAgICAgIHZhbHVlRmllbGQ6ICd2YWx1ZScsXHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5RmllbGQ6ICdsYWJlbCcsXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgUmFkaW9CdXR0b25MaXN0Q29udHJvbFNjaGVtYSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ3NvcnREaXInLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdDaGnhu4F1IHPhuq9wIHjhur9wJyxcclxuICAgICAgICAgICAgICAgIG1kV2lkdGg6IDYsXHJcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlOiBbeyB2YWx1ZTogU29ydERpcnMuQXNjLCBsYWJlbDogJ1TEg25nIGThuqduJyB9LCB7IHZhbHVlOiBTb3J0RGlycy5EZXNjLCBsYWJlbDogJ0dp4bqjbSBk4bqnbicgfV0sXHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IFNvcnREaXJzLkFzYyxcclxuICAgICAgICAgICAgICAgIHZhbHVlRmllbGQ6ICd2YWx1ZScsXHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5RmllbGQ6ICdsYWJlbCcsXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgRHJvcGRvd25Db250cm9sU2NoZW1hKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnZ3JvdXBGaWVsZCcsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdOaMOzbSB0aGVvJyksXHJcbiAgICAgICAgICAgICAgICBtZFdpZHRoOiA2LFxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdDaOG7jW4gY+G7mXQnLFxyXG4gICAgICAgICAgICAgICAgc2hvd0NsZWFyOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgZGF0YVNvdXJjZTogZ3JvdXBEYXRhU291cmNlLFxyXG4gICAgICAgICAgICAgICAgdmFsdWVGaWVsZDogJ3ZhbHVlJyxcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogJ2xhYmVsJyxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDaGVja2JveENvbnRyb2xTY2hlbWEoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdncm91cEluQ2xpZW50JyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ05ow7NtIHRyw6puIGNsaWVudCcpLFxyXG4gICAgICAgICAgICAgICAgbWRXaWR0aDogNixcclxuICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2VcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICBdO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5zY2hlbWEuZm9yRWFjaChzY2hlbWEgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXNjaGVtYS5mdWxsTGFiZWwpIHtcclxuICAgICAgICAgICAgICAgIHNjaGVtYS5mdWxsTGFiZWwgPSBzY2hlbWEubGFiZWw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmNvbHVtblNjaGVtYXMgPSBbXHJcbiAgICAgICAgICAgIHsgaGVhZGVyOiAnU1RUJywgd2lkdGg6ICc3MHB4JyB9LFxyXG4gICAgICAgICAgICB7IGhlYWRlcjogJ1TDqm4gY+G7mXQnIH0sXHJcbiAgICAgICAgICAgIHsgaGVhZGVyOiAnSGnhu4NuIHRo4buLJywgd2lkdGg6ICc4MHB4JyB9LFxyXG4gICAgICAgICAgICB7IGhlYWRlcjogJ0PEg24gbOG7gScsIHdpZHRoOiAnMTMwcHgnIH0sXHJcbiAgICAgICAgICAgIHsgaGVhZGVyOiAnQ2hp4buBdSBy4buZbmcnLCB3aWR0aDogJzEwMHB4JyB9LFxyXG4gICAgICAgICAgICB7IGhlYWRlcjogJ1Ro4bupIHThu7EnLCB3aWR0aDogJzgwcHgnIH1cclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICB0aGlzLnRleHRBbGlnbk9wdGlvbnMgPSBbXHJcbiAgICAgICAgICAgIHsgdmFsdWU6IFRleHRBbGlnbi5MZWZ0LCBsYWJlbDogJ0PEg24gdHLDoWknIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6IFRleHRBbGlnbi5DZW50ZXIsIGxhYmVsOiAnQ8SDbiBnaeG7r2EnIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6IFRleHRBbGlnbi5SaWdodCwgbGFiZWw6ICdDxINuIHBo4bqjaScgfVxyXG4gICAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZVNldHRpbmcoKSB7XHJcbiAgICAgICAgdGhpcy5vblNhdmUubmV4dCh0aGlzLm1vZGVsLmRhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZVNldHRpbmcoKSB7XHJcbiAgICAgICAgdGhpcy5vbkRlbGV0ZS5uZXh0KDEpO1xyXG4gICAgfVxyXG5cclxuICAgIGNhbmNlbCgpIHtcclxuICAgICAgICB0aGlzLm9uQ2FuY2VsLm5leHQobnVsbCk7XHJcbiAgICB9XHJcblxyXG4gICAgdmlzaWJsZUNoYW5nZWREaWFsb2coZXZlbnQpIHtcclxuICAgICAgICBpZiAoIWV2ZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2FuY2VsKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldEpzb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMubW9kZWwpLmpvaW4oJywnKTtcclxuICAgIH1cclxufVxyXG4iLCI8dG4tZGlhbG9nICNkaWFsb2cgW2Rpc2FibGVkQnV0dG9uXT1cIm1vZGVsLnN1Ym1pdHRpbmdcIiBbY2xvc2VPbkVzY2FwZV09XCJ0cnVlXCIgW2hlYWRlcl09XCJwb3B1cEhlYWRlciB8IHRyYW5zbGF0ZVwiXHJcbiAgICBbcG9wdXBTaXplXT1cInBvcHVwU2l6ZVwiIFt2aXNpYmxlXT1cInRydWVcIiAob25IaWRlKT1cImNhbmNlbCgpXCIgKHZpc2libGVDaGFuZ2UpPVwidmlzaWJsZUNoYW5nZWREaWFsb2coJGV2ZW50KVwiXHJcbiAgICBbc3R5bGVDbGFzc109XCIndG4tZm9ybS1kaWFsb2cnXCI+XHJcbiAgICA8ZGl2IHN0eWxlPVwiaGVpZ2h0OiAxMDAlXCI+XHJcbiAgICAgICAgPGNydWQtZm9ybSAjY3J1ZEZvcm0gW2NvbnRleHRdPVwiY29udGV4dFwiIFsoZGF0YSldPVwibW9kZWwuZGF0YVwiIFtzZXR0aW5nXT1cInNldHRpbmdcIiBbZGlzYWJsZUNhY2hpbmddPVwidHJ1ZVwiPlxyXG4gICAgICAgIDwvY3J1ZC1mb3JtPlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJwYWRkaW5nOiAwLjVyZW07XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNvbC0xMlwiICpuZ0lmPVwicGFyZW50U2V0dGluZy5jb2xzXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiY29uZmlnVmlld1RhYmxlXCIgY2xhc3M9XCJjb25maWctdmlldy1sYWJlbFwiPkPhuqV1IGjDrG5oIGhp4buDbiB0aOG7izwvbGFiZWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jb2wtMTJcIiAqbmdJZj1cIiFwYXJlbnRTZXR0aW5nLmNvbHNcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJjb25maWdWaWV3VGFibGVcIiBjbGFzcz1cImNvbmZpZy12aWV3LWxhYmVsXCI+Q2jGsGEgY8OzIHRoaeG6v3QgbOG6rXAgY+G7mXQgY2hvIHRyYW5nXHJcbiAgICAgICAgICAgICAgICAgICAgbsOgeTwvbGFiZWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jb2wtMTJcIj5cclxuICAgICAgICAgICAgICAgIDxwLXRhYmxlIFt2YWx1ZV09XCJtb2RlbC5kYXRhLmRldGFpbHNcIiBbY29sdW1uc109XCJjb2x1bW5TY2hlbWFzXCIgW3Jlc3BvbnNpdmVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Jlb3JkZXJhYmxlQ29sdW1uc109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiIGxldC1jb2x1bW5zIGxldC1yb3dEYXRhPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5TY2hlbWFzXCIgW3N0eWxlLndpZHRoXT1cImNvbC53aWR0aFwiIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29sLmhlYWRlcn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIiBsZXQtcm93RGF0YSBsZXQtcmk9XCJyb3dJbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldC1jb2x1bW5zPVwicGFnZVNldHRpbmcuY29sdW1uU2V0dGluZ3NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRyIFtwUmVvcmRlcmFibGVSb3ddPVwicmlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInN0dFwiIHN0eWxlPVwidGV4dC1hbGlnbjpjZW50ZXJcIj57e3JpKzF9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9XCJ0ZXh0LWFsaWduOmxlZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtY29sdW1uLXRpdGxlXCI+e3tjb2x1bW5TY2hlbWFzWzFdLmhlYWRlcn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7cm93RGF0YS5jb2x1bW5OYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9XCJ0ZXh0LWFsaWduOmNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1jb2x1bW4tdGl0bGVcIj57e2NvbHVtblNjaGVtYXNbMl0uaGVhZGVyfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtY2hlY2tib3ggWyhuZ01vZGVsKV09XCJyb3dEYXRhLnZpc2libGVcIiBbYmluYXJ5XT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3AtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPVwidGV4dC1hbGlnbjpjZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtY29sdW1uLXRpdGxlXCI+e3tjb2x1bW5TY2hlbWFzWzNdLmhlYWRlcn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWRyb3Bkb3duIGFwcGVuZFRvPVwiYm9keVwiIFtzdHlsZUNsYXNzXT1cIidmdWxsLXdpZHRoJ1wiIFsobmdNb2RlbCldPVwicm93RGF0YS50ZXh0QWxpZ25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJ0ZXh0QWxpZ25PcHRpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT1cInRleHQtYWxpZ246Y2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWNvbHVtbi10aXRsZVwiPnt7Y29sdW1uU2NoZW1hc1s0XS5oZWFkZXJ9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgWyhuZ01vZGVsKV09XCJyb3dEYXRhLndpZHRoXCIgcElucHV0VGV4dCBzdHlsZT1cIndpZHRoOjEwMCVcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29ycmVjdD1cIm9mZlwiIGF1dG9jYXBpdGFsaXplPVwib2ZmXCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9XCJ0ZXh0LWFsaWduOmNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWFycm93cy1hbHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOjUwcHg7IGN1cnNvcjpwb2ludGVyOyBwYWRkaW5nOiA4cHg7IGNvbG9yOiAjNTU1O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwUmVvcmRlcmFibGVSb3dIYW5kbGVdPVwicmlcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L3AtdGFibGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmctdGVtcGxhdGUgI2Zvb3Rlcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXBhcmVudFNldHRpbmcuaGlkZGVuU2F2ZVNldHRpbmdcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgcEJ1dHRvbiBjbGFzcz1cInAtYnV0dG9uLXRleHRcIiBpY29uPVwicGkgcGktc2F2ZVwiIFtsYWJlbF09XCInTMawdScgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNhdmVTZXR0aW5nKClcIj48L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgcEJ1dHRvbiBjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24tZGFuZ2VyXCIgaWNvbj1cInBpIHBpLXRyYXNoXCJcclxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCInQuG7jyBj4bqldSBow6xuaCcgfCB0cmFuc2xhdGVcIiAoY2xpY2spPVwiZGVsZXRlU2V0dGluZygpXCI+PC9idXR0b24+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgcEJ1dHRvbiBjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24tc2Vjb25kYXJ5XCIgaWNvbj1cInBpIHBpLXJlcGxheVwiXHJcbiAgICAgICAgICAgIFtsYWJlbF09XCInRk9STS5DQU5DRUwnIHwgdHJhbnNsYXRlXCIgcHJldmVudFRhYiAoY2xpY2spPVwiY2FuY2VsKClcIj48L2J1dHRvbj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbjwvdG4tZGlhbG9nPiJdfQ==
191
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy9zZXR0aW5ncy9zZXR0aW5ncy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL3NldHRpbmdzL3NldHRpbmdzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFZLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzdILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHFCQUFxQixFQUF1QixZQUFZLEVBQUUsZUFBZSxFQUFpQyxxQkFBcUIsRUFBa0IsNEJBQTRCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxTixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQVkvQyxNQUFNLE9BQU8saUJBQWtCLFNBQVEsYUFBYTtJQXNCaEQsWUFDSSxTQUFtQixFQUNULGlCQUFtQyxFQUNuQyxXQUF1QixFQUN2QixZQUF5QjtRQUVuQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFKUCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBQ25DLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ3ZCLGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBbEI3QixhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNuQyxXQUFNLEdBQUcsSUFBSSxZQUFZ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TyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0MsQ0FBQzs7OEdBMUtRLGlCQUFpQjtrR0FBakIsaUJBQWlCLHNPQUhmLENBQUMsdUJBQXVCLENBQUMsaUtDaEJ4QyxvakpBcUVZOzJGRGxEQyxpQkFBaUI7a0JBUDdCLFNBQVM7K0JBQ0ksVUFBVSxhQUdULENBQUMsdUJBQXVCLENBQUMsbUJBQ25CLHVCQUF1QixDQUFDLE9BQU87aUxBR1QsTUFBTTtzQkFBNUMsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUU1QixXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUcscUJBQXFCO3NCQUE3QixLQUFLO2dCQUVJLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IERpYWxvZyB9IGZyb20gJ3RuLWN1c3RvbS1wcmltZW5nL2RpYWxvZyc7XHJcbmltcG9ydCB7IENvbXBvbmVudENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBwLWNvbnRleHQvY29tcG9uZW50LWNvbnRleHQuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudEJhc2UgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2Jhc2UvY29tcG9uZW50LWJhc2UnO1xyXG5pbXBvcnQgeyBTb3J0RGlycyB9IGZyb20gJy4uLy4uL2NsYXNzZXMvY29uc3RhbnRzJztcclxuaW1wb3J0IHsgQ2hlY2tib3hDb250cm9sU2NoZW1hLCBDb2x1bW5TZXR0aW5nRGV0YWlsLCBDcnVkRm9ybURhdGEsIENydWRGb3JtU2V0dGluZywgQ3J1ZExpc3REYXRhLCBDcnVkTGlzdFNldHRpbmcsIERyb3Bkb3duQ29udHJvbFNjaGVtYSwgRm9ybVNjaGVtYUJhc2UsIFJhZGlvQnV0dG9uTGlzdENvbnRyb2xTY2hlbWEgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcclxuaW1wb3J0IHsgVGV4dEFsaWduIH0gZnJvbSAnLi4vLi4vZW51bXMvY29tbW9uJztcclxuaW1wb3J0IHsgRG9tU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RvbS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW50aXR5TWV0YWRhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZW50aXR5LW1ldGFkYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3VzZXIuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnc2V0dGluZ3MnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NldHRpbmdzLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3NldHRpbmdzLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFtDb21wb25lbnRDb250ZXh0U2VydmljZV0sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHRcclxufSlcclxuZXhwb3J0IGNsYXNzIFNldHRpbmdzQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBAVmlld0NoaWxkKCdkaWFsb2cnLCB7IHN0YXRpYzogdHJ1ZSB9KSBkaWFsb2c6IERpYWxvZztcclxuXHJcbiAgICBASW5wdXQoKSBwYXJlbnRNb2RlbDogQ3J1ZExpc3REYXRhO1xyXG4gICAgQElucHV0KCkgcGFyZW50U2V0dGluZzogQ3J1ZExpc3RTZXR0aW5nO1xyXG5cclxuICAgIEBJbnB1dCgpIGVudGl0eU1ldGFkYXRhU2VydmljZTogRW50aXR5TWV0YWRhdGFTZXJ2aWNlO1xyXG5cclxuICAgIEBPdXRwdXQoKSBvbkNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgpIG9uU2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgQE91dHB1dCgpIG9uRGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gICAgbW9kZWw6IENydWRGb3JtRGF0YSA9IG5ldyBDcnVkRm9ybURhdGEoKTtcclxuICAgIHNldHRpbmc6IENydWRGb3JtU2V0dGluZyA9IG5ldyBDcnVkRm9ybVNldHRpbmcoKTtcclxuICAgIGNvbnRleHQ6IENvbXBvbmVudENvbnRleHRTZXJ2aWNlO1xyXG5cclxuICAgIGZvcm1TY2hlbWE6IEZvcm1TY2hlbWFCYXNlW107XHJcbiAgICBwb3B1cFNpemUgPSB7IHdpZHRoOiAxMDI0LCBoZWlnaHQ6IDU1MCB9O1xyXG4gICAgcG9wdXBIZWFkZXIgPSAnQ+G6pXUgaMOsbmgnO1xyXG4gICAgY29sdW1uU2NoZW1hczogYW55ID0gW107XHJcbiAgICB0ZXh0QWxpZ25PcHRpb25zOiBhbnkgPSBbXTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBfaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgIHByb3RlY3RlZCBfdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgICAgICBwcm90ZWN0ZWQgX2RvbVNlcnZpY2U6IERvbVNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF91c2VyU2VydmljZTogVXNlclNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKF9pbmplY3Rvcik7XHJcbiAgICB9XHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICBjb25zdCBzb3J0RGF0YVNvdXJjZSA9IFtdLCBncm91cERhdGFTb3VyY2UgPSBbXTtcclxuICAgICAgICB0aGlzLm1vZGVsLmRhdGEgPSB7XHJcbiAgICAgICAgICAgIHNvcnRGaWVsZDogdGhpcy5wYXJlbnRTZXR0aW5nLmNvbHVtblNldHRpbmcuc29ydEZpZWxkLFxyXG4gICAgICAgICAgICBzb3J0RGlyOiB0aGlzLnBhcmVudFNldHRpbmcuY29sdW1uU2V0dGluZy5zb3J0RGlyLFxyXG4gICAgICAgICAgICBncm91cEZpZWxkOiB0aGlzLnBhcmVudFNldHRpbmcuY29sdW1uU2V0dGluZy5ncm91cEZpZWxkLFxyXG4gICAgICAgICAgICBncm91cEluQ2xpZW50OiB0aGlzLnBhcmVudFNldHRpbmcuY29sdW1uU2V0dGluZy5ncm91cEluQ2xpZW50LFxyXG4gICAgICAgICAgICBkZXRhaWxzOiB0aGlzLnBhcmVudFNldHRpbmcuY29sdW1uU2V0dGluZy5kZXRhaWxzXHJcbiAgICAgICAgfTtcclxuICAgICAgICAvLyB0aGlzLm1vZGVsLmFjdGl2ZUVudGl0eU1ldGFkYXRhID0gZmFsc2U7XHJcbiAgICAgICAgLy8gdGhpcy5tb2RlbC5hY3RpdmVFbnRpdHlQZXJtaXNzaW9uID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGNvbnN0IHRlbXAgPSBbXTtcclxuICAgICAgICBpZiAoIXRoaXMucGFyZW50U2V0dGluZy5jb2xzKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wYXJlbnRTZXR0aW5nLmNvbHMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQudmlzaWJsZSkge1xyXG4gICAgICAgICAgICAgICAgZ3JvdXBEYXRhU291cmNlLnB1c2goeyB2YWx1ZTogZWxlbWVudC5maWVsZCwgbGFiZWw6IGVsZW1lbnQubGFiZWwgfSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5zb3J0ID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc29ydERhdGFTb3VyY2UucHVzaCh7IHZhbHVlOiBlbGVtZW50LmZpZWxkLCBsYWJlbDogZWxlbWVudC5sYWJlbCB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChlbGVtZW50LnJhd0NvbHVtbikge1xyXG4gICAgICAgICAgICAgICAgZ3JvdXBEYXRhU291cmNlLnB1c2goeyB2YWx1ZTogZWxlbWVudC5maWVsZCwgbGFiZWw6IGVsZW1lbnQubGFiZWwgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCFlbGVtZW50LnJhd0NvbHVtbikge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLm1vZGVsLmRhdGEuZGV0YWlscy5zb21lKHEgPT4gcS5jb2x1bW5Db2RlID09IGVsZW1lbnQuZmllbGQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHZpc2libGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5iYXNlU2VydmljZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWZGaWVsZCA9IHRoaXMucGFyZW50U2V0dGluZy5jb2xzLmZpbmQoZiA9PiBmLmZpZWxkID09ICdzdHInICsgZWxlbWVudC5maWVsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWZGaWVsZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZSA9IHJlZkZpZWxkLnZpc2libGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlID0gZWxlbWVudC52aXNpYmxlID09PSB1bmRlZmluZWQgfHwgZWxlbWVudC52aXNpYmxlID09PSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlID0gZWxlbWVudC52aXNpYmxlID09PSB1bmRlZmluZWQgfHwgZWxlbWVudC52aXNpYmxlID09PSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0gPENvbHVtblNldHRpbmdEZXRhaWw+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5Db2RlOiBlbGVtZW50LmZpZWxkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5OYW1lOiBlbGVtZW50LmxhYmVsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0QWxpZ246IGVsZW1lbnQudGV4dEFsaWduID09PSB1bmRlZmluZWQgPyBUZXh0QWxpZ24uTGVmdCA6IGVsZW1lbnQudGV4dEFsaWduLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogZWxlbWVudC53aWR0aFxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZpc2libGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb2RlbC5kYXRhLmRldGFpbHMucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGVtcC5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm1vZGVsLmRhdGEuZGV0YWlscy5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLnNldHRpbmcuc2NoZW1hID0gPEZvcm1TY2hlbWFCYXNlW10+W1xyXG4gICAgICAgICAgICBuZXcgRHJvcGRvd25Db250cm9sU2NoZW1hKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnc29ydEZpZWxkJyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ1Phuq9wIHjhur9wIHRoZW8nKSxcclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnQ2jhu41uIGPhu5l0JyxcclxuICAgICAgICAgICAgICAgIHNob3dDbGVhcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGRhdGFTb3VyY2U6IHNvcnREYXRhU291cmNlLFxyXG4gICAgICAgICAgICAgICAgbWRXaWR0aDogNixcclxuICAgICAgICAgICAgICAgIHZhbHVlRmllbGQ6ICd2YWx1ZScsXHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5RmllbGQ6ICdsYWJlbCcsXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgUmFkaW9CdXR0b25MaXN0Q29udHJvbFNjaGVtYSh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZDogJ3NvcnREaXInLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdDaGnhu4F1IHPhuq9wIHjhur9wJyxcclxuICAgICAgICAgICAgICAgIG1kV2lkdGg6IDYsXHJcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlOiBbeyB2YWx1ZTogU29ydERpcnMuQXNjLCBsYWJlbDogJ1TEg25nIGThuqduJyB9LCB7IHZhbHVlOiBTb3J0RGlycy5EZXNjLCBsYWJlbDogJ0dp4bqjbSBk4bqnbicgfV0sXHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IFNvcnREaXJzLkFzYyxcclxuICAgICAgICAgICAgICAgIHZhbHVlRmllbGQ6ICd2YWx1ZScsXHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5RmllbGQ6ICdsYWJlbCcsXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgRHJvcGRvd25Db250cm9sU2NoZW1hKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkOiAnZ3JvdXBGaWVsZCcsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdOaMOzbSB0aGVvJyksXHJcbiAgICAgICAgICAgICAgICBtZFdpZHRoOiA2LFxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdDaOG7jW4gY+G7mXQnLFxyXG4gICAgICAgICAgICAgICAgc2hvd0NsZWFyOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgZGF0YVNvdXJjZTogZ3JvdXBEYXRhU291cmNlLFxyXG4gICAgICAgICAgICAgICAgdmFsdWVGaWVsZDogJ3ZhbHVlJyxcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogJ2xhYmVsJyxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBDaGVja2JveENvbnRyb2xTY2hlbWEoe1xyXG4gICAgICAgICAgICAgICAgZmllbGQ6ICdncm91cEluQ2xpZW50JyxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ05ow7NtIHRyw6puIGNsaWVudCcpLFxyXG4gICAgICAgICAgICAgICAgbWRXaWR0aDogNixcclxuICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2VcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICBdO1xyXG4gICAgICAgIHRoaXMuc2V0dGluZy5zY2hlbWEuZm9yRWFjaChzY2hlbWEgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXNjaGVtYS5mdWxsTGFiZWwpIHtcclxuICAgICAgICAgICAgICAgIHNjaGVtYS5mdWxsTGFiZWwgPSBzY2hlbWEubGFiZWw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmNvbHVtblNjaGVtYXMgPSBbXHJcbiAgICAgICAgICAgIHsgaGVhZGVyOiAnU1RUJywgd2lkdGg6ICc3MHB4JyB9LFxyXG4gICAgICAgICAgICB7IGhlYWRlcjogJ1TDqm4gY+G7mXQnIH0sXHJcbiAgICAgICAgICAgIHsgaGVhZGVyOiAnSGnhu4NuIHRo4buLJywgd2lkdGg6ICc4MHB4JyB9LFxyXG4gICAgICAgICAgICB7IGhlYWRlcjogJ0PEg24gbOG7gScsIHdpZHRoOiAnMTMwcHgnIH0sXHJcbiAgICAgICAgICAgIHsgaGVhZGVyOiAnQ2hp4buBdSBy4buZbmcnLCB3aWR0aDogJzEwMHB4JyB9LFxyXG4gICAgICAgICAgICB7IGhlYWRlcjogJ1Ro4bupIHThu7EnLCB3aWR0aDogJzgwcHgnIH1cclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICB0aGlzLnRleHRBbGlnbk9wdGlvbnMgPSBbXHJcbiAgICAgICAgICAgIHsgdmFsdWU6IFRleHRBbGlnbi5MZWZ0LCBsYWJlbDogJ0PEg24gdHLDoWknIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6IFRleHRBbGlnbi5DZW50ZXIsIGxhYmVsOiAnQ8SDbiBnaeG7r2EnIH0sXHJcbiAgICAgICAgICAgIHsgdmFsdWU6IFRleHRBbGlnbi5SaWdodCwgbGFiZWw6ICdDxINuIHBo4bqjaScgfVxyXG4gICAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZVNldHRpbmcoKSB7XHJcbiAgICAgICAgdGhpcy5vblNhdmUubmV4dCh0aGlzLm1vZGVsLmRhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZVNldHRpbmcoKSB7XHJcbiAgICAgICAgdGhpcy5vbkRlbGV0ZS5uZXh0KDEpO1xyXG4gICAgfVxyXG5cclxuICAgIGNhbmNlbCgpIHtcclxuICAgICAgICB0aGlzLm9uQ2FuY2VsLm5leHQobnVsbCk7XHJcbiAgICB9XHJcblxyXG4gICAgdmlzaWJsZUNoYW5nZWREaWFsb2coZXZlbnQpIHtcclxuICAgICAgICBpZiAoIWV2ZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2FuY2VsKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldEpzb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMubW9kZWwpLmpvaW4oJywnKTtcclxuICAgIH1cclxufVxyXG4iLCI8dG4tZGlhbG9nICNkaWFsb2cgW2Rpc2FibGVkQnV0dG9uXT1cIm1vZGVsLnN1Ym1pdHRpbmdcIiBbY2xvc2VPbkVzY2FwZV09XCJ0cnVlXCIgW2hlYWRlcl09XCJwb3B1cEhlYWRlciB8IHRyYW5zbGF0ZVwiXHJcbiAgICBbcG9wdXBTaXplXT1cInBvcHVwU2l6ZVwiIFt2aXNpYmxlXT1cInRydWVcIiAob25IaWRlKT1cImNhbmNlbCgpXCIgKHZpc2libGVDaGFuZ2UpPVwidmlzaWJsZUNoYW5nZWREaWFsb2coJGV2ZW50KVwiXHJcbiAgICBbc3R5bGVDbGFzc109XCIndG4tZm9ybS1kaWFsb2cnXCI+XHJcbiAgICA8ZGl2IHN0eWxlPVwiaGVpZ2h0OiAxMDAlXCI+XHJcbiAgICAgICAgPGNydWQtZm9ybSAjY3J1ZEZvcm0gW2NvbnRleHRdPVwiY29udGV4dFwiIFsoZGF0YSldPVwibW9kZWwuZGF0YVwiIFtzZXR0aW5nXT1cInNldHRpbmdcIiBbZGlzYWJsZUNhY2hpbmddPVwidHJ1ZVwiPlxyXG4gICAgICAgIDwvY3J1ZC1mb3JtPlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJwYWRkaW5nOiAwLjVyZW07XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIiAqbmdJZj1cInBhcmVudFNldHRpbmcuY29sc1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImNvbmZpZ1ZpZXdUYWJsZVwiIGNsYXNzPVwiY29uZmlnLXZpZXctbGFiZWxcIj5D4bqldSBow6xuaCBoaeG7g24gdGjhu4s8L2xhYmVsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiICpuZ0lmPVwiIXBhcmVudFNldHRpbmcuY29sc1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImNvbmZpZ1ZpZXdUYWJsZVwiIGNsYXNzPVwiY29uZmlnLXZpZXctbGFiZWxcIj5DaMawYSBjw7MgdGhp4bq/dCBs4bqtcCBj4buZdCBjaG8gdHJhbmdcclxuICAgICAgICAgICAgICAgICAgICBuw6B5PC9sYWJlbD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuICAgICAgICAgICAgICAgIDxwLXRhYmxlIFt2YWx1ZV09XCJtb2RlbC5kYXRhLmRldGFpbHNcIiBbY29sdW1uc109XCJjb2x1bW5TY2hlbWFzXCIgW3Jlc3BvbnNpdmVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Jlb3JkZXJhYmxlQ29sdW1uc109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiIGxldC1jb2x1bW5zIGxldC1yb3dEYXRhPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5TY2hlbWFzXCIgW3N0eWxlLndpZHRoXT1cImNvbC53aWR0aFwiIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29sLmhlYWRlcn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIiBsZXQtcm93RGF0YSBsZXQtcmk9XCJyb3dJbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldC1jb2x1bW5zPVwicGFnZVNldHRpbmcuY29sdW1uU2V0dGluZ3NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRyIFtwUmVvcmRlcmFibGVSb3ddPVwicmlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInN0dFwiIHN0eWxlPVwidGV4dC1hbGlnbjpjZW50ZXJcIj57e3JpKzF9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9XCJ0ZXh0LWFsaWduOmxlZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtY29sdW1uLXRpdGxlXCI+e3tjb2x1bW5TY2hlbWFzWzFdLmhlYWRlcn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7cm93RGF0YS5jb2x1bW5OYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9XCJ0ZXh0LWFsaWduOmNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1jb2x1bW4tdGl0bGVcIj57e2NvbHVtblNjaGVtYXNbMl0uaGVhZGVyfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtY2hlY2tib3ggWyhuZ01vZGVsKV09XCJyb3dEYXRhLnZpc2libGVcIiBbYmluYXJ5XT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3AtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPVwidGV4dC1hbGlnbjpjZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtY29sdW1uLXRpdGxlXCI+e3tjb2x1bW5TY2hlbWFzWzNdLmhlYWRlcn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWRyb3Bkb3duIGFwcGVuZFRvPVwiYm9keVwiIFtzdHlsZUNsYXNzXT1cIidmdWxsLXdpZHRoJ1wiIFsobmdNb2RlbCldPVwicm93RGF0YS50ZXh0QWxpZ25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJ0ZXh0QWxpZ25PcHRpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT1cInRleHQtYWxpZ246Y2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWNvbHVtbi10aXRsZVwiPnt7Y29sdW1uU2NoZW1hc1s0XS5oZWFkZXJ9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgWyhuZ01vZGVsKV09XCJyb3dEYXRhLndpZHRoXCIgcElucHV0VGV4dCBzdHlsZT1cIndpZHRoOjEwMCVcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29ycmVjdD1cIm9mZlwiIGF1dG9jYXBpdGFsaXplPVwib2ZmXCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9XCJ0ZXh0LWFsaWduOmNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWFycm93cy1hbHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOjUwcHg7IGN1cnNvcjpwb2ludGVyOyBwYWRkaW5nOiA4cHg7IGNvbG9yOiAjNTU1O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwUmVvcmRlcmFibGVSb3dIYW5kbGVdPVwicmlcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L3AtdGFibGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmctdGVtcGxhdGUgI2Zvb3Rlcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXBhcmVudFNldHRpbmcuaGlkZGVuU2F2ZVNldHRpbmdcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgcEJ1dHRvbiBjbGFzcz1cInAtYnV0dG9uLXRleHRcIiBpY29uPVwicGkgcGktc2F2ZVwiIFtsYWJlbF09XCInTMawdScgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNhdmVTZXR0aW5nKClcIj48L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgcEJ1dHRvbiBjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24tZGFuZ2VyXCIgaWNvbj1cInBpIHBpLXRyYXNoXCJcclxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCInQuG7jyBj4bqldSBow6xuaCcgfCB0cmFuc2xhdGVcIiAoY2xpY2spPVwiZGVsZXRlU2V0dGluZygpXCI+PC9idXR0b24+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgcEJ1dHRvbiBjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24tc2Vjb25kYXJ5XCIgaWNvbj1cInBpIHBpLXJlcGxheVwiXHJcbiAgICAgICAgICAgIFtsYWJlbF09XCInRk9STS5DQU5DRUwnIHwgdHJhbnNsYXRlXCIgcHJldmVudFRhYiAoY2xpY2spPVwiY2FuY2VsKClcIj48L2J1dHRvbj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbjwvdG4tZGlhbG9nPiJdfQ==