@eo-sdk/client 7.12.0-rc.1 → 7.13.0-rc.2

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 (43) hide show
  1. package/app/eo-framework/app-shell/app-bar/app-search/app-search.component.d.ts +3 -1
  2. package/app/eo-framework/stored-query/stored-query/stored-query.component.d.ts +3 -1
  3. package/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.d.ts +3 -1
  4. package/app/eo-framework/ui/query-scope-select/query-scope-select.component.d.ts +11 -0
  5. package/app/eo-framework-core/search/app-search.service.d.ts +2 -1
  6. package/assets/_default/config/main.json +2 -1
  7. package/assets/_default/i18n/de.json +7 -4
  8. package/assets/_default/i18n/en.json +158 -155
  9. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js +26 -4
  10. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js.map +1 -1
  11. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js +2 -2
  12. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js.map +1 -1
  13. package/bundles/eo-sdk-client.umd.js +133 -76
  14. package/bundles/eo-sdk-client.umd.js.map +1 -1
  15. package/bundles/eo-sdk-client.umd.min.js +1 -1
  16. package/bundles/eo-sdk-client.umd.min.js.map +1 -1
  17. package/eo-sdk-client.d.ts +63 -62
  18. package/eo-sdk-client.metadata.json +1 -1
  19. package/esm2015/app/eo-client/about-state/about-state.component.js +3 -3
  20. package/esm2015/app/eo-framework/app-shell/app-bar/app-search/app-search.component.js +7 -3
  21. package/esm2015/app/eo-framework/form-elements/checkbox/checkbox.component.js +2 -2
  22. package/esm2015/app/eo-framework/grid/extensions/filter/text/text-filter.component.js +5 -5
  23. package/esm2015/app/eo-framework/stored-query/stored-query/stored-query.component.js +9 -3
  24. package/esm2015/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.js +7 -2
  25. package/esm2015/app/eo-framework/ui/query-scope-select/query-scope-select.component.js +31 -0
  26. package/esm2015/app/eo-framework/ui/ui.module.js +6 -3
  27. package/esm2015/app/eo-framework-core/search/app-search.service.js +6 -1
  28. package/esm2015/eo-sdk-client.js +64 -63
  29. package/esm2015/projects/eo-sdk/core/lib/service/auth/auth.service.js +13 -5
  30. package/esm2015/projects/eo-sdk/core/lib/service/config/config.service.js +5 -1
  31. package/esm2015/projects/eo-sdk/core/lib/service/search/search-query.model.js +10 -1
  32. package/esm2015/projects/eo-sdk/core/lib/service/search/search.service.js +2 -1
  33. package/esm2015/projects/eo-sdk/core/lib/service/stored-queries/stored-query.model.js +2 -1
  34. package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js +28 -5
  35. package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js.map +1 -1
  36. package/fesm2015/eo-sdk-client.js +67 -16
  37. package/fesm2015/eo-sdk-client.js.map +1 -1
  38. package/package.json +2 -2
  39. package/projects/eo-sdk/core/eo-sdk-client-projects-eo-sdk-core.metadata.json +1 -1
  40. package/projects/eo-sdk/core/lib/service/auth/auth.service.d.ts +1 -0
  41. package/projects/eo-sdk/core/lib/service/config/config.service.d.ts +1 -0
  42. package/projects/eo-sdk/core/lib/service/search/search-query.model.d.ts +9 -0
  43. package/projects/eo-sdk/core/package.json +1 -1
@@ -29,7 +29,7 @@ export class CheckboxComponent {
29
29
  CheckboxComponent.decorators = [
30
30
  { type: Component, args: [{
31
31
  selector: 'eo-checkbox',
32
- template: "<div [class.tristate]=\"tristate\" *ngIf=\"tristate; else twostate\">\r\n <p-triStateCheckbox [(ngModel)]=\"value\"\r\n (ngModelChange)=\"onChange($event)\"\r\n [disabled]=\"readonly\"\r\n [ngClass]=\"{undefined: value == undefined}\"></p-triStateCheckbox>\r\n <eo-icon *ngIf=\"!readonly && value !== null && tristate\" [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"reset()\"></eo-icon>\r\n</div>\r\n\r\n<ng-template #twostate>\r\n <p-checkbox binary=\"true\"\r\n [(ngModel)]=\"value\"\r\n (ngModelChange)=\"onChange($event)\"\r\n [disabled]=\"readonly\"\r\n [ngClass]=\"{undefined: value == undefined}\"></p-checkbox>\r\n</ng-template>\r\n\r\n",
32
+ template: "<div [class.tristate]=\"tristate\" *ngIf=\"tristate; else twostate\">\r\n <p-triStateCheckbox [(ngModel)]=\"value\"\r\n (ngModelChange)=\"onChange($event)\"\r\n [disabled]=\"readonly\"\r\n [ngClass]=\"{undefined: value == undefined}\"></p-triStateCheckbox>\r\n <eo-icon *ngIf=\"!readonly && value !== undefined && tristate\" [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"reset()\"></eo-icon>\r\n</div>\r\n\r\n<ng-template #twostate>\r\n <p-checkbox binary=\"true\"\r\n [(ngModel)]=\"value\"\r\n (ngModelChange)=\"onChange($event)\"\r\n [disabled]=\"readonly\"\r\n [ngClass]=\"{undefined: value == undefined}\"></p-checkbox>\r\n</ng-template>\r\n\r\n",
33
33
  providers: [
34
34
  {
35
35
  provide: NG_VALUE_ACCESSOR,
@@ -45,4 +45,4 @@ CheckboxComponent.propDecorators = {
45
45
  tristate: [{ type: Input }],
46
46
  readonly: [{ type: Input }]
47
47
  };
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvZm9ybS1lbGVtZW50cy9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBdUIsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQWN2RSxNQUFNLE9BQU8saUJBQWlCO0lBTTVCLHVCQUF1QjtJQUV2QjtRQUpTLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFZMUIsb0JBQWUsR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFO1FBQzdCLENBQUMsQ0FBQTtJQVJELENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7UUFDdkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUtELFVBQVUsQ0FBQyxLQUFVO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFPO0lBQ3pCLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBSztRQUNaLElBQUksS0FBSyxLQUFLLElBQUksRUFBRTtZQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztTQUNuQjtRQUNELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7OztZQS9DRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGFBQWE7Z0JBQ3ZCLG14QkFBd0M7Z0JBRXhDLFNBQVMsRUFBRTtvQkFDVDt3QkFDRSxPQUFPLEVBQUUsaUJBQWlCO3dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixDQUFDO3dCQUNoRCxLQUFLLEVBQUUsSUFBSTtxQkFDWjtpQkFDRjs7YUFDRjs7Ozt1QkFLRSxLQUFLO3VCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdlby1jaGVja2JveCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NoZWNrYm94LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jaGVja2JveC5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ2hlY2tib3hDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIENoZWNrYm94Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cclxuICB2YWx1ZTogYm9vbGVhbjtcclxuXHJcbiAgQElucHV0KCkgdHJpc3RhdGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbjtcclxuICAvL0BJbnB1dCgpIGZpbHRlcjogYW55O1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICB9XHJcblxyXG4gIHJlc2V0KCk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcHJvcGFnYXRlQ2hhbmdlID0gKF86IGFueSkgPT4ge1xyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZSh2YWx1ZSkge1xyXG4gICAgaWYgKHZhbHVlID09PSBudWxsKSB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy52YWx1ZSk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvZm9ybS1lbGVtZW50cy9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBdUIsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQWN2RSxNQUFNLE9BQU8saUJBQWlCO0lBTTVCLHVCQUF1QjtJQUV2QjtRQUpTLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFZMUIsb0JBQWUsR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFO1FBQzdCLENBQUMsQ0FBQTtJQVJELENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7UUFDdkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUtELFVBQVUsQ0FBQyxLQUFVO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFPO0lBQ3pCLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBSztRQUNaLElBQUksS0FBSyxLQUFLLElBQUksRUFBRTtZQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztTQUNuQjtRQUNELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7OztZQS9DRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGFBQWE7Z0JBQ3ZCLHd4QkFBd0M7Z0JBRXhDLFNBQVMsRUFBRTtvQkFDVDt3QkFDRSxPQUFPLEVBQUUsaUJBQWlCO3dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixDQUFDO3dCQUNoRCxLQUFLLEVBQUUsSUFBSTtxQkFDWjtpQkFDRjs7YUFDRjs7Ozt1QkFLRSxLQUFLO3VCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdlby1jaGVja2JveCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NoZWNrYm94LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jaGVja2JveC5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ2hlY2tib3hDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIENoZWNrYm94Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cclxuICB2YWx1ZTogYm9vbGVhbjtcclxuXHJcbiAgQElucHV0KCkgdHJpc3RhdGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbjtcclxuICAvL0BJbnB1dCgpIGZpbHRlcjogYW55O1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICB9XHJcblxyXG4gIHJlc2V0KCk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcHJvcGFnYXRlQ2hhbmdlID0gKF86IGFueSkgPT4ge1xyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZSh2YWx1ZSkge1xyXG4gICAgaWYgKHZhbHVlID09PSBudWxsKSB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy52YWx1ZSk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
@@ -26,10 +26,10 @@ export class TextFilterComponent extends AbstractFilterComponent {
26
26
  }
27
27
  }
28
28
  doesExternalFilterPass(rowNode) {
29
- return this.valueGetter(rowNode)
30
- .toString()
31
- .toLowerCase()
32
- .indexOf(this.value.toLowerCase()) >= 0;
29
+ const filterTerms = this.value.toLowerCase().split(' ');
30
+ const rowValue = this.valueGetter(rowNode).toString().toLowerCase();
31
+ const everyTermFound = !filterTerms.find(term => rowValue.indexOf(term) === -1);
32
+ return everyTermFound;
33
33
  }
34
34
  reset() {
35
35
  super.reset();
@@ -61,4 +61,4 @@ TextFilterComponent.propDecorators = {
61
61
  placeholder: [{ type: Input }],
62
62
  matchFields: [{ type: Input }]
63
63
  };
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvZ3JpZC9leHRlbnNpb25zL2ZpbHRlci90ZXh0L3RleHQtZmlsdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUUvQyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUN6RSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRSxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBT25DLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSx1QkFBdUI7SUFhOUQsWUFBb0IsZUFBb0M7UUFDdEQsS0FBSyxFQUFFLENBQUM7UUFEVSxvQkFBZSxHQUFmLGVBQWUsQ0FBcUI7UUFYL0MsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLGdCQUFXLEdBQUcsOEJBQThCLENBQUM7UUFDOUMsWUFBTyxHQUFHLEtBQUssQ0FBQztRQVd0QixJQUFJLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUNwQixDQUFDO0lBVkQsSUFDSSxXQUFXLENBQUMsTUFBZ0I7UUFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLE9BQWdCLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEcsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUMzSCxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBT0QsUUFBUSxDQUFDLFFBQVEsRUFBRSxRQUFTO1FBQzFCLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUM7WUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUNwRjtZQUNELElBQUksQ0FBQyxNQUFNLENBQUMscUJBQXFCLEVBQUUsQ0FBQztTQUNyQztJQUNILENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxPQUFnQjtRQUNyQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDO2FBQzdCLFFBQVEsRUFBRTthQUNWLFdBQVcsRUFBRTthQUNiLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxLQUFLO1FBQ0gsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNqQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUVwQixtREFBbUQ7WUFDbkQsVUFBVSxDQUFDLEdBQUcsRUFBRSxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3ZFO0lBQ0gsQ0FBQzs7O1lBeERGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO2dCQUMxQixzWEFBMkM7O2FBRTVDOzs7WUFSTyxtQkFBbUI7OztvQkFXeEIsS0FBSzswQkFDTCxLQUFLOzBCQUdMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1Jvd05vZGV9IGZyb20gJ0BhZy1ncmlkLWNvbW11bml0eS9jb3JlJztcclxuaW1wb3J0IHtMaXN0U2V0dGluZ3NTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9saXN0LXNldHRpbmdzLnNlcnZpY2UnO1xyXG5pbXBvcnQge0Fic3RyYWN0RmlsdGVyQ29tcG9uZW50fSBmcm9tICcuLi9hYnN0cmFjdC1maWx0ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHtVdGlsc30gZnJvbSAnQGVvLXNkay9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZW8tdGV4dC1maWx0ZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXh0LWZpbHRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGV4dC1maWx0ZXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGV4dEZpbHRlckNvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0RmlsdGVyQ29tcG9uZW50IHtcclxuXHJcbiAgQElucHV0KCkgdGl0bGUgPSAnJztcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICdlby5yZXN1bHRsaXN0LmdyaWQuZmlsdGVyT29vJztcclxuICBwcml2YXRlIGZvY3VzZWQgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgbWF0Y2hGaWVsZHMoZmllbGRzOiBzdHJpbmdbXSkge1xyXG4gICAgdGhpcy52YWx1ZUdldHRlciA9IChyb3dOb2RlOiBSb3dOb2RlKSA9PiBmaWVsZHMubWFwKGYgPT4gVXRpbHMuZ2V0UHJvcGVydHkocm93Tm9kZS5kYXRhLCBmKSkuam9pbignXFxuJyk7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZGVmYXVsdFZhbHVlIHx8IHRoaXMuc2V0dGluZ3NTZXJ2aWNlLnNldHVwU2V0dGluZ3ModGhpcy5pZCwgW3tpZDogJ3RleHQnLCB2YWx1ZTogdGhpcy52YWx1ZX1dKVswXS52YWx1ZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5vbkNoYW5nZSh2YWx1ZSksIDApO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzZXR0aW5nc1NlcnZpY2U6IExpc3RTZXR0aW5nc1NlcnZpY2UpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLmlkID0gJyN0ZXh0JztcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlKG5ld1ZhbHVlLCBvbGRWYWx1ZT8pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnZhbHVlICE9PSBuZXdWYWx1ZSkge1xyXG4gICAgICB0aGlzLnZhbHVlID0gbmV3VmFsdWU7XHJcbiAgICAgIGlmICghdGhpcy5kZWZhdWx0VmFsdWUpIHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzU2VydmljZS5zYXZlU2V0dGluZ3ModGhpcy5pZCwgdGhpcy52YWx1ZSA/IHsndGV4dCc6IHRoaXMudmFsdWV9IDogJycpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucGFyYW1zLmZpbHRlckNoYW5nZWRDYWxsYmFjaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZG9lc0V4dGVybmFsRmlsdGVyUGFzcyhyb3dOb2RlOiBSb3dOb2RlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy52YWx1ZUdldHRlcihyb3dOb2RlKVxyXG4gICAgICAudG9TdHJpbmcoKVxyXG4gICAgICAudG9Mb3dlckNhc2UoKVxyXG4gICAgICAuaW5kZXhPZih0aGlzLnZhbHVlLnRvTG93ZXJDYXNlKCkpID49IDA7XHJcbiAgfVxyXG5cclxuICByZXNldCgpIHtcclxuICAgIHN1cGVyLnJlc2V0KCk7XHJcbiAgICB0aGlzLnNldHRpbmdzU2VydmljZS5zYXZlU2V0dGluZ3ModGhpcy5pZCk7XHJcbiAgfVxyXG5cclxuICBmb2N1c291dCAoKSB7XHJcbiAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGZvY3VzICgpIHtcclxuICAgIGlmICghdGhpcy5mb2N1c2VkKSB7XHJcbiAgICAgIHRoaXMuZm9jdXNlZCA9IHRydWU7XHJcblxyXG4gICAgICAvLyBUaW1lb3V0IGZvciBjcm9zcyBicm93c2VyIGNvbXBhdGliaWxpdHkgKENocm9tZSlcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7IGRvY3VtZW50LmV4ZWNDb21tYW5kKCdzZWxlY3RhbGwnLCBmYWxzZSwgbnVsbCk7IH0pO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvZ3JpZC9leHRlbnNpb25zL2ZpbHRlci90ZXh0L3RleHQtZmlsdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUUvQyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUN6RSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRSxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBT25DLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSx1QkFBdUI7SUFhOUQsWUFBb0IsZUFBb0M7UUFDdEQsS0FBSyxFQUFFLENBQUM7UUFEVSxvQkFBZSxHQUFmLGVBQWUsQ0FBcUI7UUFYL0MsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLGdCQUFXLEdBQUcsOEJBQThCLENBQUM7UUFDOUMsWUFBTyxHQUFHLEtBQUssQ0FBQztRQVd0QixJQUFJLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUNwQixDQUFDO0lBVkQsSUFDSSxXQUFXLENBQUMsTUFBZ0I7UUFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLE9BQWdCLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEcsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUMzSCxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBT0QsUUFBUSxDQUFDLFFBQVEsRUFBRSxRQUFTO1FBQzFCLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUM7WUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUNwRjtZQUNELElBQUksQ0FBQyxNQUFNLENBQUMscUJBQXFCLEVBQUUsQ0FBQztTQUNyQztJQUNILENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxPQUFnQjtRQUNyQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BFLE1BQU0sY0FBYyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRixPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBRUQsS0FBSztRQUNILEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNkLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDakIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFFcEIsbURBQW1EO1lBQ25ELFVBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN2RTtJQUNILENBQUM7OztZQXhERixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtnQkFDMUIsc1hBQTJDOzthQUU1Qzs7O1lBUk8sbUJBQW1COzs7b0JBV3hCLEtBQUs7MEJBQ0wsS0FBSzswQkFHTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtSb3dOb2RlfSBmcm9tICdAYWctZ3JpZC1jb21tdW5pdHkvY29yZSc7XHJcbmltcG9ydCB7TGlzdFNldHRpbmdzU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvbGlzdC1zZXR0aW5ncy5zZXJ2aWNlJztcclxuaW1wb3J0IHtBYnN0cmFjdEZpbHRlckNvbXBvbmVudH0gZnJvbSAnLi4vYWJzdHJhY3QtZmlsdGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7VXRpbHN9IGZyb20gJ0Blby1zZGsvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VvLXRleHQtZmlsdGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGV4dC1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RleHQtZmlsdGVyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRleHRGaWx0ZXJDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdEZpbHRlckNvbXBvbmVudCB7XHJcblxyXG4gIEBJbnB1dCgpIHRpdGxlID0gJyc7XHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnZW8ucmVzdWx0bGlzdC5ncmlkLmZpbHRlck9vbyc7XHJcbiAgcHJpdmF0ZSBmb2N1c2VkID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IG1hdGNoRmllbGRzKGZpZWxkczogc3RyaW5nW10pIHtcclxuICAgIHRoaXMudmFsdWVHZXR0ZXIgPSAocm93Tm9kZTogUm93Tm9kZSkgPT4gZmllbGRzLm1hcChmID0+IFV0aWxzLmdldFByb3BlcnR5KHJvd05vZGUuZGF0YSwgZikpLmpvaW4oJ1xcbicpO1xyXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmRlZmF1bHRWYWx1ZSB8fCB0aGlzLnNldHRpbmdzU2VydmljZS5zZXR1cFNldHRpbmdzKHRoaXMuaWQsIFt7aWQ6ICd0ZXh0JywgdmFsdWU6IHRoaXMudmFsdWV9XSlbMF0udmFsdWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMub25DaGFuZ2UodmFsdWUpLCAwKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2V0dGluZ3NTZXJ2aWNlOiBMaXN0U2V0dGluZ3NTZXJ2aWNlKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5pZCA9ICcjdGV4dCc7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZShuZXdWYWx1ZSwgb2xkVmFsdWU/KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy52YWx1ZSAhPT0gbmV3VmFsdWUpIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IG5ld1ZhbHVlO1xyXG4gICAgICBpZiAoIXRoaXMuZGVmYXVsdFZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5nc1NlcnZpY2Uuc2F2ZVNldHRpbmdzKHRoaXMuaWQsIHRoaXMudmFsdWUgPyB7J3RleHQnOiB0aGlzLnZhbHVlfSA6ICcnKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnBhcmFtcy5maWx0ZXJDaGFuZ2VkQ2FsbGJhY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRvZXNFeHRlcm5hbEZpbHRlclBhc3Mocm93Tm9kZTogUm93Tm9kZSk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgZmlsdGVyVGVybXMgPSB0aGlzLnZhbHVlLnRvTG93ZXJDYXNlKCkuc3BsaXQoJyAnKTtcclxuICAgIGNvbnN0IHJvd1ZhbHVlID0gdGhpcy52YWx1ZUdldHRlcihyb3dOb2RlKS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICBjb25zdCBldmVyeVRlcm1Gb3VuZCA9ICFmaWx0ZXJUZXJtcy5maW5kKHRlcm0gPT4gcm93VmFsdWUuaW5kZXhPZih0ZXJtKSA9PT0gLTEpO1xyXG4gICAgcmV0dXJuIGV2ZXJ5VGVybUZvdW5kO1xyXG4gIH1cclxuXHJcbiAgcmVzZXQoKSB7XHJcbiAgICBzdXBlci5yZXNldCgpO1xyXG4gICAgdGhpcy5zZXR0aW5nc1NlcnZpY2Uuc2F2ZVNldHRpbmdzKHRoaXMuaWQpO1xyXG4gIH1cclxuXHJcbiAgZm9jdXNvdXQgKCkge1xyXG4gICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBmb2N1cyAoKSB7XHJcbiAgICBpZiAoIXRoaXMuZm9jdXNlZCkge1xyXG4gICAgICB0aGlzLmZvY3VzZWQgPSB0cnVlO1xyXG5cclxuICAgICAgLy8gVGltZW91dCBmb3IgY3Jvc3MgYnJvd3NlciBjb21wYXRpYmlsaXR5IChDaHJvbWUpXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4geyBkb2N1bWVudC5leGVjQ29tbWFuZCgnc2VsZWN0YWxsJywgZmFsc2UsIG51bGwpOyB9KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -23,6 +23,7 @@ export class StoredQueryComponent {
23
23
  if (storedQuery instanceof StoredQuery) {
24
24
  this._storedQuery = storedQuery;
25
25
  this._storedQuery.state.count = { value: 0 };
26
+ this.queryScope = this._storedQuery.scope;
26
27
  this.createQueryForm();
27
28
  this.aggregate();
28
29
  }
@@ -35,6 +36,11 @@ export class StoredQueryComponent {
35
36
  set formOnly(b) {
36
37
  this._formOnly = b;
37
38
  }
39
+ setQueryScope(scope) {
40
+ this._storedQuery.scope = scope;
41
+ this.queryScope = scope;
42
+ this.aggregate();
43
+ }
38
44
  // generate the form for the dynamic parts of the stored query
39
45
  createQueryForm() {
40
46
  this.queryFormControls = [];
@@ -193,8 +199,8 @@ export class StoredQueryComponent {
193
199
  StoredQueryComponent.decorators = [
194
200
  { type: Component, args: [{
195
201
  selector: "eo-stored-query",
196
- template: "<div *ngIf=\"query\" class=\"eo-stored-query\" [ngClass]=\"{hasForm: queryFormControls?.length > 0}\">\r\n\r\n <div class=\"title\" *ngIf=\"!_formOnly\">{{query.name}}</div>\r\n <div class=\"qform\">\r\n\r\n <div class=\"query-form\" [formGroup]=\"queryForm\" *ngIf=\"queryForm\">\r\n <div class=\"form-field fulltext\" *ngIf=\"fulltextFormControl\">\r\n <eo-form-element [element]=\"fulltextFormControl\" [situation]=\"'SEARCH'\"></eo-form-element>\r\n </div>\r\n\r\n <div class=\"form-field\" *ngFor=\"let element of queryFormControls\"\r\n [ngClass]=\"{sfe: element.controls[element._eoFormControlWrapper.controlName]._eoFormElement.selectedforenrichment}\">\r\n <eo-form-element [element]=\"element\" [situation]=\"'SEARCH'\"></eo-form-element>\r\n </div>\r\n </div>\r\n\r\n <div class=\"actions\">\r\n <div class=\"state\">\r\n <span class=\"count\">{{query.state?.totalCount | localeDecimal}}</span>\r\n <span translate>eo.storedquery.res.count.label</span>\r\n </div>\r\n <div class=\"buttons\" *ngIf=\"!_formOnly\">\r\n <button class=\"secondary\" (click)=\"load()\" translate>eo.storedquery.load</button>\r\n <button class=\"primary\" [disabled]=\"(queryForm && queryForm.invalid) || query.state?.isEmpty\"\r\n (click)=\"execute()\" translate>eo.storedquery.run</button>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n",
197
- styles: [":host .eo-stored-query{width:100%}:host .eo-stored-query .title{color:var(--color-primary-2);font-size:var(--font-title);margin-bottom:var(--app-pane-padding);padding:calc(var(--app-pane-padding)/8) 0}:host .eo-stored-query .actions{align-items:center;display:flex;flex-flow:row wrap;margin:0 -2px}:host .eo-stored-query .actions .state{color:var(--text-color-caption);flex:1 1 auto;padding:calc(var(--app-pane-padding)/4) calc(var(--app-pane-padding)/2)}:host .eo-stored-query .actions .state .count{padding-right:5px}:host .eo-stored-query .actions .buttons{align-items:center;display:flex;flex-flow:row wrap;justify-content:flex-end}:host .eo-stored-query .actions .buttons button{flex:0 0 auto;margin:0 2px 2px}:host .eo-stored-query.hasForm .actions{padding-top:var(--app-pane-padding)}:host.open .eo-stored-query .title{font-weight:var(--font-weight-bold)}:host.open .eo-stored-query .title eo-icon{transform:rotate(180deg)}:host::ng-deep .form-field.sfe .fe-wrapper>label:before{background-color:var(--color-primary-3);border-radius:2px;color:var(--color-white)!important;content:\"*\";display:inline-block;margin:4px;padding:0 2px}"]
202
+ template: "<div *ngIf=\"query\" class=\"eo-stored-query\" [ngClass]=\"{hasForm: queryFormControls?.length > 0}\">\r\n\r\n <div class=\"title\" *ngIf=\"!_formOnly\">{{query.name}}</div>\r\n <div class=\"qform\">\r\n\r\n <div class=\"query-form\" [formGroup]=\"queryForm\" *ngIf=\"queryForm\">\r\n\r\n <div class=\"form-field fulltext\" *ngIf=\"fulltextFormControl\">\r\n <eo-query-scope-select [selection]=\"queryScope\" (select)=\"setQueryScope($event)\"></eo-query-scope-select>\r\n <eo-form-element [element]=\"fulltextFormControl\" [situation]=\"'SEARCH'\"></eo-form-element>\r\n </div>\r\n\r\n <div class=\"form-field\" *ngFor=\"let element of queryFormControls\"\r\n [ngClass]=\"{sfe: element.controls[element._eoFormControlWrapper.controlName]._eoFormElement.selectedforenrichment}\">\r\n <eo-form-element [element]=\"element\" [situation]=\"'SEARCH'\"></eo-form-element>\r\n </div>\r\n </div>\r\n\r\n <div class=\"actions\">\r\n <div class=\"state\">\r\n <span class=\"count\">{{query.state?.totalCount | localeDecimal}}</span>\r\n <span translate>eo.storedquery.res.count.label</span>\r\n </div>\r\n <div class=\"buttons\" *ngIf=\"!_formOnly\">\r\n <button class=\"secondary\" (click)=\"load()\" translate>eo.storedquery.load</button>\r\n <button class=\"primary\" [disabled]=\"(queryForm && queryForm.invalid) || query.state?.isEmpty\"\r\n (click)=\"execute()\" translate>eo.storedquery.run</button>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n",
203
+ styles: [":host .eo-stored-query{width:100%}:host .eo-stored-query .title{color:var(--color-primary-2);font-size:var(--font-title);margin-bottom:var(--app-pane-padding);padding:calc(var(--app-pane-padding)/8) 0}:host .eo-stored-query ::ng-deep eo-query-scope-select .query-scope .query-scope__button{background-color:rgba(0,0,0,.1);border:0;color:var(--text-color-caption)}:host .eo-stored-query .actions{align-items:center;display:flex;flex-flow:row wrap;margin:0 -2px}:host .eo-stored-query .actions .state{color:var(--text-color-caption);flex:1 1 auto;padding:calc(var(--app-pane-padding)/4) calc(var(--app-pane-padding)/2)}:host .eo-stored-query .actions .state .count{padding-right:5px}:host .eo-stored-query .actions .buttons{align-items:center;display:flex;flex-flow:row wrap;justify-content:flex-end}:host .eo-stored-query .actions .buttons button{flex:0 0 auto;margin:0 2px 2px}:host .eo-stored-query.hasForm .actions{padding-top:var(--app-pane-padding)}:host.open .eo-stored-query .title{font-weight:var(--font-weight-bold)}:host.open .eo-stored-query .title eo-icon{transform:rotate(180deg)}:host::ng-deep .form-field.sfe .fe-wrapper>label:before{background-color:var(--color-primary-3);border-radius:2px;color:var(--color-white)!important;content:\"*\";display:inline-block;margin:4px;padding:0 2px}"]
198
204
  },] }
199
205
  ];
200
206
  StoredQueryComponent.ctorParameters = () => [
@@ -213,4 +219,4 @@ StoredQueryComponent.propDecorators = {
213
219
  onQueryExecute: [{ type: Output }],
214
220
  isOpen: [{ type: HostBinding, args: ["class.open",] }]
215
221
  };
216
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmVkLXF1ZXJ5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL3N0b3JlZC1xdWVyeS9zdG9yZWQtcXVlcnkvc3RvcmVkLXF1ZXJ5LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsWUFBWSxFQUFhLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osV0FBVyxFQUNYLFVBQVUsRUFDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUVyRixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxzREFBc0QsQ0FBQztBQUN0RixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0saURBQWlELENBQUM7QUFDaEYsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixZQUFZLEVBRVosV0FBVyxFQUNYLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsYUFBYSxFQUNkLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBQyxRQUFRLEVBQWMsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBTzlDLE1BQU0sT0FBTyxvQkFBb0I7SUFrQy9CLFlBQ1UsYUFBNEIsRUFDNUIsVUFBc0IsRUFDdEIsU0FBMkIsRUFDM0IsYUFBNEIsRUFDNUIsb0JBQTBDLEVBQzFDLGlCQUEwQyxFQUMxQyxnQkFBa0M7UUFObEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1Qix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBeUI7UUFDMUMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQVpsQyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRW5CLFdBQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBVS9DLENBQUM7SUFuQ0osSUFDSSxLQUFLLENBQUMsV0FBd0I7UUFDaEMsSUFBSSxXQUFXLFlBQVksV0FBVyxFQUFFO1lBQ3RDLElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxFQUFDLEtBQUssRUFBRyxDQUFDLEVBQUMsQ0FBQztZQUU1QyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQscUVBQXFFO0lBQ3JFLGlDQUFpQztJQUNqQyxJQUNJLFFBQVEsQ0FBQyxDQUFVO1FBQ3JCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFpQkQsOERBQThEO0lBQzlELGVBQWU7UUFDYixJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7UUFFaEMsMEVBQTBFO1FBQzFFLHNDQUFzQztRQUN0QyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDekUsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xFLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksQ0FDcEQsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLG9CQUFvQixDQUFDLFFBQVEsQ0FDOUMsQ0FBQztZQUVGLHdDQUF3QztZQUN4QyxJQUFJLGFBQWEsRUFBRTtnQkFDakIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FDcEUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLHNCQUFzQixDQUM5QyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQyxFQUNwRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDdkIsRUFDRCxRQUFRLENBQ1QsQ0FBQzthQUNIO1lBRUQsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDMUMsSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFO29CQUNuQixJQUFJLGFBQWEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUNqQyxDQUFDLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUN6QyxDQUFDO29CQUNGLCtEQUErRDtvQkFDL0QsYUFBYSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRTt3QkFDbkMsSUFBRyxZQUFZLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBQzs0QkFDL0IsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDOzRCQUNwRSxJQUFHLE9BQU8sSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFDO2dDQUMzQixZQUFZLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsMEJBQTBCLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQzs2QkFDcEc7aUNBQU07Z0NBQ0wsWUFBWSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dDQUMxQixPQUFPLFlBQVksQ0FBQyxhQUFhLENBQUM7NkJBQ25DO3lCQUNGOzZCQUFJOzRCQUNILDhEQUE4RDs0QkFDOUQsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDOzRCQUM3RCwrRUFBK0U7NEJBQy9FLDhFQUE4RTs0QkFDOUUsSUFBSSxNQUFNLEVBQUU7Z0NBQ1YsMEJBQTBCO2dDQUMxQixJQUNFLE1BQU0sQ0FBQyxRQUFRLEtBQUssWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLO29DQUMvQyxNQUFNLENBQUMsVUFBVSxLQUFLLElBQUksRUFDMUI7b0NBQ0EsWUFBWSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7aUNBQ25DO3FDQUFNO29DQUNMLE9BQU8sWUFBWSxDQUFDLGFBQWEsQ0FBQztpQ0FDbkM7Z0NBRUQsWUFBWSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUMxRCxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQy9DLFlBQVksQ0FBQyxJQUFJLENBQ2xCLENBQUM7NkJBQ0g7aUNBQU07Z0NBQ0wsWUFBWSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7NkJBQ2hDO3lCQUNGO3dCQUNELHNFQUFzRTt3QkFDdEUsaUdBQWlHO3dCQUNqRyxZQUFZLENBQUMsSUFBSSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7d0JBQ3ZDLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FDdkQsWUFBWSxFQUNaLFFBQVEsQ0FDVCxDQUFDO3dCQUNGLElBQUksT0FBTyxFQUFFOzRCQUNYLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7eUJBQ3RDO29CQUNILENBQUMsQ0FBQyxDQUFDO2lCQUNKO2dCQUVELElBQUksSUFBSSxHQUFHLElBQUksZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNuQyw4QkFBOEI7Z0JBQzlCLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFO29CQUM1QixJQUFJLENBQUMsVUFBVSxDQUNiLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLEVBQzFELElBQUksQ0FBQyxtQkFBbUIsQ0FDekIsQ0FBQztpQkFDSDtnQkFDRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ2pDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FDeEQsQ0FBQztnQkFFRixpRUFBaUU7Z0JBQ2pFLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxFQUFFO29CQUNyQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztvQkFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7d0JBQ2pFLHdDQUF3Qzt3QkFDeEMsMENBQTBDO3dCQUMxQyxLQUFLLElBQUksR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTs0QkFDcEQsNEJBQTRCOzRCQUM1QixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDOzRCQUUvQixJQUFJLEdBQUcsS0FBSyxvQkFBb0IsQ0FBQyxRQUFRLEVBQUU7Z0NBQ3pDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7NkJBQ3RDO2lDQUFNO2dDQUNMLE1BQU0sT0FBTyxHQUE2QixJQUFJLENBQUMsU0FBUztxQ0FDckQsUUFBUSxDQUFDLEdBQUcsQ0FBNkIsQ0FBQztnQ0FDN0MsTUFBTSxjQUFjLEdBQ2xCLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxDQUFDO2dDQUU5RCxNQUFNLE9BQU8sR0FDWCxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO29DQUM3QixDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsYUFBYTtvQ0FDNUMsQ0FBQyxDQUFDLEVBQUU7b0NBQ0osQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFDdkIsR0FBRyxFQUNILGNBQWMsQ0FBQyxjQUFjLENBQUMsYUFBYTt3Q0FDekMsQ0FBQyxDQUFDLElBQUk7d0NBQ04sQ0FBQyxDQUFDLEtBQUssQ0FDVixDQUFDO2dDQUVOLElBQUcsY0FBYyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFDO29DQUNoRCxjQUFjLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUU7d0NBQ2xELElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQ0FDM0MsQ0FBQyxDQUFDLENBQUM7aUNBQ0o7Z0NBQ0QsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0NBQ3JELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFO29DQUNuQixJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztpQ0FDckM7NkJBQ0Y7eUJBQ0Y7d0JBQ0Qsc0RBQXNEO3dCQUN0RCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ25CLENBQUMsQ0FBQyxDQUFDO29CQUNILHNGQUFzRjtvQkFDdEYsVUFBVSxDQUFDLEdBQUcsRUFBRTt3QkFDZCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7d0JBQ2hFLElBQUksRUFBRSxFQUFFOzRCQUNOLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQzt5QkFDWjtvQkFDSCxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQ1A7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVPLGVBQWU7UUFDckIsNEZBQTRGO1FBQzVGLDhFQUE4RTtRQUM5RSx3Q0FBd0M7UUFDeEMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3hDLDhFQUE4RTtZQUM5RSxJQUFJLFlBQVksR0FBRyxFQUFFLENBQUM7WUFDdEIsTUFBTSxpQkFBaUIsR0FBRyxFQUFFLENBQUM7WUFDN0IsaUJBQWlCLENBQUMsSUFBSSxDQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLDRCQUE0QixDQUM3QyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQ2hDLFFBQVEsQ0FDVCxDQUNGLENBQUM7WUFDRiw4RUFBOEU7WUFDOUUsK0JBQStCO1lBQy9CLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUNyRCxpQkFBaUIsQ0FBQyxJQUFJLENBQ3BCLElBQUksQ0FBQyxhQUFhLENBQUMsNEJBQTRCLENBQzdDLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUM3QyxRQUFRLEVBQ1IsSUFBSSxDQUNMLENBQ0YsQ0FBQztnQkFDRiwrREFBK0Q7YUFDaEU7WUFDRCxPQUFPLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLElBQUksQ0FDckMsR0FBRyxDQUFDLENBQUMsR0FBVSxFQUFFLEVBQUU7Z0JBQ2pCLFlBQVksR0FBRyxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xFLE9BQU8sWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLG1CQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDekMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztTQUNIO2FBQU07WUFDTCxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNmO0lBQ0gsQ0FBQztJQUVPLFFBQVEsQ0FBQyxLQUFhO1FBQzVCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9DLE9BQU8sT0FBTyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDO1lBQ3ZCLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRTtTQUM1QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sU0FBUztRQUNmLElBQUksQ0FBQyxhQUFhO2FBQ2YsY0FBYyxpQkFBRSxJQUFJLEVBQUUsRUFBQyxJQUFJLEVBQUUsRUFBRSxFQUFDLElBQUssSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsRUFBRTthQUN2RSxTQUFTLENBQUMsQ0FBQyxLQUFrQixFQUFFLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7O1lBNVBGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2dCQUMzQix3N0NBQTRDOzthQUU3Qzs7O1lBWEMsYUFBYTtZQVhiLFVBQVU7WUFZVixnQkFBZ0I7WUFDaEIsYUFBYTtZQU5iLG9CQUFvQjtZQUxkLHVCQUF1QjtZQUV2QixnQkFBZ0I7OztvQkEwQnJCLEtBQUssU0FBQyxPQUFPO3VCQWlCYixLQUFLOzRCQUtMLE1BQU07NkJBQ04sTUFBTTtxQkFFTixXQUFXLFNBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZGVib3VuY2VUaW1lLCBzd2l0Y2hNYXAsIG1hcH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgRWxlbWVudFJlZlxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7T2JqZWN0Rm9ybUhlbHBlclNlcnZpY2V9IGZyb20gXCIuLi8uLi9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS1oZWxwZXIuc2VydmljZVwiO1xyXG5pbXBvcnQge09iamVjdEZvcm1Db250cm9sV3JhcHBlcn0gZnJvbSBcIi4uLy4uL29iamVjdC1mb3JtL29iamVjdC1mb3JtL29iamVjdC1mb3JtLWNvbnRyb2wtd3JhcHBlclwiO1xyXG5pbXBvcnQge0FwcFNlYXJjaFNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS9zZWFyY2gvYXBwLXNlYXJjaC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7T2JqZWN0Rm9ybUdyb3VwfSBmcm9tIFwiLi4vLi4vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0tZ3JvdXBcIjtcclxuaW1wb3J0IHtcclxuICBTdG9yZWRRdWVyaWVzU2VydmljZSxcclxuICBTZWFyY2hGaWx0ZXIsXHJcbiAgU2VhcmNoU3RhdGUsXHJcbiAgU3RvcmVkUXVlcnksXHJcbiAgU2VhcmNoU2VydmljZSxcclxuICBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gIFN5c3RlbVNlcnZpY2VcclxufSBmcm9tIFwiQGVvLXNkay9jb3JlXCI7XHJcbmltcG9ydCB7VXRpbGl0aWVzU2VydmljZX0gZnJvbSBcIi4uLy4uL3V0aWwvc2VydmljZXMvdXRpbGl0aWVzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgb2Z9IGZyb20gXCJyeGpzXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJlby1zdG9yZWQtcXVlcnlcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3N0b3JlZC1xdWVyeS5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9zdG9yZWQtcXVlcnkuY29tcG9uZW50LnNjc3NcIl1cclxufSlcclxuZXhwb3J0IGNsYXNzIFN0b3JlZFF1ZXJ5Q29tcG9uZW50IHtcclxuICBfc3RvcmVkUXVlcnk6IFN0b3JlZFF1ZXJ5O1xyXG4gIHF1ZXJ5Rm9ybUNvbnRyb2xzOiBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXJbXTtcclxuICBxdWVyeUZvcm06IE9iamVjdEZvcm1Hcm91cDtcclxuICBmdWxsdGV4dEZvcm1Db250cm9sOiBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXI7XHJcbiAgX2Zvcm1Pbmx5OiBib29sZWFuO1xyXG5cclxuICBASW5wdXQoXCJxdWVyeVwiKVxyXG4gIHNldCBxdWVyeShzdG9yZWRRdWVyeTogU3RvcmVkUXVlcnkpIHtcclxuICAgIGlmIChzdG9yZWRRdWVyeSBpbnN0YW5jZW9mIFN0b3JlZFF1ZXJ5KSB7XHJcbiAgICAgIHRoaXMuX3N0b3JlZFF1ZXJ5ID0gc3RvcmVkUXVlcnk7XHJcbiAgICAgIHRoaXMuX3N0b3JlZFF1ZXJ5LnN0YXRlLmNvdW50ID0ge3ZhbHVlIDogMH07XHJcblxyXG4gICAgICB0aGlzLmNyZWF0ZVF1ZXJ5Rm9ybSgpO1xyXG4gICAgICB0aGlzLmFnZ3JlZ2F0ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHF1ZXJ5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3N0b3JlZFF1ZXJ5O1xyXG4gIH1cclxuXHJcbiAgLy8gc2V0IHRvIHRydWUgb25seSB0aGUgc3RvcmVkIHF1ZXJ5IGZvcm0gd2lsbCBiZSByZW5kZXJlZCwgb3RoZXJ3aXNlXHJcbiAgLy8gd2UnbGwgZ2V0IHRoZSBjb21wbGV0ZSBjb250cm9sXHJcbiAgQElucHV0KClcclxuICBzZXQgZm9ybU9ubHkoYjogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fZm9ybU9ubHkgPSBiO1xyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpIG9uUXVlcnlMb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uUXVlcnlFeGVjdXRlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5vcGVuXCIpIGlzT3BlbiA9IHRoaXMuZm9ybU9ubHk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBzZWFyY2hTZXJ2aWNlOiBTZWFyY2hTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHN5c3RlbVNlcnZpY2U6IFN5c3RlbVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHN0b3JlZFF1ZXJpZXNTZXJ2aWNlOiBTdG9yZWRRdWVyaWVzU2VydmljZSxcclxuICAgIHByaXZhdGUgZm9ybUhlbHBlclNlcnZpY2U6IE9iamVjdEZvcm1IZWxwZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhcHBTZWFyY2hTZXJ2aWNlOiBBcHBTZWFyY2hTZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICAvLyBnZW5lcmF0ZSB0aGUgZm9ybSBmb3IgdGhlIGR5bmFtaWMgcGFydHMgb2YgdGhlIHN0b3JlZCBxdWVyeVxyXG4gIGNyZWF0ZVF1ZXJ5Rm9ybSgpIHtcclxuICAgIHRoaXMucXVlcnlGb3JtQ29udHJvbHMgPSBbXTtcclxuICAgIHRoaXMuZnVsbHRleHRGb3JtQ29udHJvbCA9IG51bGw7XHJcblxyXG4gICAgLy8gcGFyYW1ldGVycyBvZiBhIHN0b3JlZCBxdWVyeSBjb250YWluIHRoZSBkeW5hbWljIHBhcnRzIG9mIHRoZSBxdWVyeSwgc29cclxuICAgIC8vIHRoZXNlIGFyZSB0aGUgZmllbGRzIHRvIGJlIHJlbmRlcmVkXHJcbiAgICBpZiAodGhpcy5fc3RvcmVkUXVlcnkucGFyYW1ldGVyICYmIHRoaXMuX3N0b3JlZFF1ZXJ5LnBhcmFtZXRlci5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IHBhcmFtUU5hbWVzID0gdGhpcy5fc3RvcmVkUXVlcnkucGFyYW1ldGVyLm1hcChwID0+IHAucW5hbWUpO1xyXG4gICAgICBjb25zdCBmdWxsdGV4dFBhcmFtID0gdGhpcy5fc3RvcmVkUXVlcnkucGFyYW1ldGVyLmZpbmQoXHJcbiAgICAgICAgcCA9PiBwLnR5cGUgPT09IFN0b3JlZFF1ZXJpZXNTZXJ2aWNlLkZVTExURVhUXHJcbiAgICAgICk7XHJcblxyXG4gICAgICAvLyBmdWxsdGV4dCBwYXJhbSBnZXQgYSBzcGVjaWFsIGhhbmRsaW5nXHJcbiAgICAgIGlmIChmdWxsdGV4dFBhcmFtKSB7XHJcbiAgICAgICAgdGhpcy5mdWxsdGV4dEZvcm1Db250cm9sID0gdGhpcy5mb3JtSGVscGVyU2VydmljZS5lbGVtZW50VG9Gb3JtQ29udHJvbChcclxuICAgICAgICAgIHRoaXMuc3RvcmVkUXVlcmllc1NlcnZpY2UuZ2V0RnVsbHRleHRGb3JtRWxlbWVudChcclxuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudChcImVvLnN0b3JlZHF1ZXJ5LnNlYXJjaC50ZXJtXCIpLFxyXG4gICAgICAgICAgICB0aGlzLl9zdG9yZWRRdWVyeS50ZXJtXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgICAgXCJTRUFSQ0hcIlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZ2V0Rm9ybUVsZW1lbnRzKCkuc3Vic2NyaWJlKGVsZW1lbnRzID0+IHtcclxuICAgICAgICBpZiAoZWxlbWVudHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICBsZXQgcGFyYW1FbGVtZW50cyA9IGVsZW1lbnRzLmZpbHRlcihcclxuICAgICAgICAgICAgZSA9PiBwYXJhbVFOYW1lcy5pbmRleE9mKGUucW5hbWUpICE9PSAtMVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIC8vIG5vdywgY3JlYXRlIHRoZSBhY3R1YWwgZm9ybSBjb250cm9scyBmcm9tIHRoZSBwYXJhbSBlbGVtZW50c1xyXG4gICAgICAgICAgcGFyYW1FbGVtZW50cy5mb3JFYWNoKHBhcmFtRWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgIGlmKHBhcmFtRWxlbWVudC50eXBlID09PSAnVEFCTEUnKXtcclxuICAgICAgICAgICAgICBsZXQgZmlsdGVycyA9IHRoaXMuX3N0b3JlZFF1ZXJ5LmdldFRhYmxlRmlsdGVycyhwYXJhbUVsZW1lbnQucW5hbWUpO1xyXG4gICAgICAgICAgICAgIGlmKGZpbHRlcnMgJiYgZmlsdGVycy5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgICAgcGFyYW1FbGVtZW50LnZhbHVlID0gdGhpcy5zZWFyY2hTZXJ2aWNlLnRhYmxlRmlsdGVyc1RvRWxlbWVudFZhbHVlKGZpbHRlcnMsIHBhcmFtRWxlbWVudC5lbGVtZW50cyk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtRWxlbWVudC52YWx1ZSA9IFt7fV07XHJcbiAgICAgICAgICAgICAgICBkZWxldGUgcGFyYW1FbGVtZW50LmlzTm90U2V0VmFsdWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAvLyBncmFiIHZhbHVlIGZvciB0aGUgY29udHJvbCBmcm9tIGNvcnJlc3BvbmRpbmcgcXVlcnkgZmlsdGVyc1xyXG4gICAgICAgICAgICAgIGxldCBmaWx0ZXIgPSB0aGlzLl9zdG9yZWRRdWVyeS5nZXRGaWx0ZXIocGFyYW1FbGVtZW50LnFuYW1lKTtcclxuICAgICAgICAgICAgICAvLyB3ZSBtYXkgaGF2ZSBwYXJhbXMgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIHF1ZXJpZXMgZmlsdGVycy4gVGhpcyBtYXkgYmUgdGhlXHJcbiAgICAgICAgICAgICAgLy8gY2FzZSB3aGVuIHdlIG1hcmsgZm9ybSBlbGVtZW50cyBhcyBkeW5hbWljIGZpZWxkcyB3aXRob3V0IHByb3ZpZGluZyBhIHZhbHVlXHJcbiAgICAgICAgICAgICAgaWYgKGZpbHRlcikge1xyXG4gICAgICAgICAgICAgICAgLy8gZmlsdGVyIHRvIGhhdmUgbm8gdmFsdWVcclxuICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgZmlsdGVyLm9wZXJhdG9yID09PSBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuRVFVQUwgJiZcclxuICAgICAgICAgICAgICAgICAgZmlsdGVyLmZpcnN0VmFsdWUgPT09IG51bGxcclxuICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICBwYXJhbUVsZW1lbnQuaXNOb3RTZXRWYWx1ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICBkZWxldGUgcGFyYW1FbGVtZW50LmlzTm90U2V0VmFsdWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgXHJcbiAgICAgICAgICAgICAgICBwYXJhbUVsZW1lbnQudmFsdWUgPSB0aGlzLnNlYXJjaFNlcnZpY2UuZmlsdGVyVG9FbGVtZW50VmFsdWUoXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuX3N0b3JlZFF1ZXJ5LmdldEZpbHRlcihwYXJhbUVsZW1lbnQucW5hbWUpLFxyXG4gICAgICAgICAgICAgICAgICBwYXJhbUVsZW1lbnQudHlwZVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1FbGVtZW50LnZhbHVlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBuYW1lIHByb3BlcnR5IG9mIHN0b3JlZCBxdWVyeSBwYXJhbSBoYXMgdG8gYmUgcW5hbWUgb2YgZm9ybSBlbGVtZW50XHJcbiAgICAgICAgICAgIC8vIGJlY2F1c2Ugd2UgbWF5IGNvbWJpbmUgbXVsdGlwbGUgZm9ybXMgKGNvbnRleHQgZm9ybSkgYW5kIGluIHRoaXMgY2FzZSBuYW1lIGNvdWxkIGJlIG5vdCB1bmlxdWVcclxuICAgICAgICAgICAgcGFyYW1FbGVtZW50Lm5hbWUgPSBwYXJhbUVsZW1lbnQucW5hbWU7XHJcbiAgICAgICAgICAgIGxldCB3cmFwcGVyID0gdGhpcy5mb3JtSGVscGVyU2VydmljZS5lbGVtZW50VG9Gb3JtQ29udHJvbChcclxuICAgICAgICAgICAgICBwYXJhbUVsZW1lbnQsXHJcbiAgICAgICAgICAgICAgXCJTRUFSQ0hcIlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAod3JhcHBlcikge1xyXG4gICAgICAgICAgICAgIHRoaXMucXVlcnlGb3JtQ29udHJvbHMucHVzaCh3cmFwcGVyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgZm9ybSA9IG5ldyBPYmplY3RGb3JtR3JvdXAoe30pO1xyXG4gICAgICAgIC8vIGFkZCBmdWxsdGV4dCB3aGVuIGF2YWlsYWJsZVxyXG4gICAgICAgIGlmICh0aGlzLmZ1bGx0ZXh0Rm9ybUNvbnRyb2wpIHtcclxuICAgICAgICAgIGZvcm0uYWRkQ29udHJvbChcclxuICAgICAgICAgICAgdGhpcy5mdWxsdGV4dEZvcm1Db250cm9sLl9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZSxcclxuICAgICAgICAgICAgdGhpcy5mdWxsdGV4dEZvcm1Db250cm9sXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnF1ZXJ5Rm9ybUNvbnRyb2xzLmZvckVhY2goYyA9PlxyXG4gICAgICAgICAgZm9ybS5hZGRDb250cm9sKGMuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lLCBjKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIC8vIG9ubHkgc2V0dXAgdGhlIGZvcm0gaWYgd2UgYWN0dWFsbHkgaGF2ZSBjb250cm9scyBhcHBsaWVkIHRvIGl0XHJcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKGZvcm0uY29udHJvbHMpLmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy5xdWVyeUZvcm0gPSBmb3JtO1xyXG4gICAgICAgICAgdGhpcy5xdWVyeUZvcm0udmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDUwMCkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIHVwZGF0ZSBxdWVyeSBiYXNlZCBvbiB0aGUgZm9ybSB2YWx1ZXNcclxuICAgICAgICAgICAgLy9mb3IgKGxldCBrZXkgb2YgT2JqZWN0LmtleXMoZm9ybURhdGEpKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGtleSBvZiBPYmplY3Qua2V5cyh0aGlzLnF1ZXJ5Rm9ybS5jb250cm9scykpIHtcclxuICAgICAgICAgICAgICAvL2xldCB2YWx1ZSA9IGZvcm1EYXRhW2tleV07XHJcbiAgICAgICAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5nZXRWYWx1ZShrZXkpO1xyXG5cclxuICAgICAgICAgICAgICBpZiAoa2V5ID09PSBTdG9yZWRRdWVyaWVzU2VydmljZS5GVUxMVEVYVCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fc3RvcmVkUXVlcnkudGVybSA9IHZhbHVlIHx8IFwiXCI7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHdyYXBwZXI6IE9iamVjdEZvcm1Db250cm9sV3JhcHBlciA9IHRoaXMucXVlcnlGb3JtXHJcbiAgICAgICAgICAgICAgICAgIC5jb250cm9sc1trZXldIGFzIE9iamVjdEZvcm1Db250cm9sV3JhcHBlcjtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1FbGVtZW50UmVmOiBhbnkgPVxyXG4gICAgICAgICAgICAgICAgICB3cmFwcGVyLmNvbnRyb2xzW3dyYXBwZXIuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lXTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJzOiBTZWFyY2hGaWx0ZXJbXSA9XHJcbiAgICAgICAgICAgICAgICAgIFV0aWxpdGllc1NlcnZpY2UuaXNFbXB0eSh2YWx1ZSkgJiZcclxuICAgICAgICAgICAgICAgICAgICAhZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuaXNOb3RTZXRWYWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgID8gW11cclxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuc2VhcmNoU2VydmljZS5nZXRTZWFyY2hGaWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdG9yZWRRdWVyeS50eXBlcyxcclxuICAgICAgICAgICAgICAgICAgICAgIGtleSxcclxuICAgICAgICAgICAgICAgICAgICAgIGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmlzTm90U2V0VmFsdWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdmFsdWVcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYoZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQudHlwZSA9PT0gJ1RBQkxFJyl7XHJcbiAgICAgICAgICAgICAgICAgIGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmVsZW1lbnRzLmZvckVhY2goZWwgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0b3JlZFF1ZXJ5LnJlbW92ZUZpbHRlcihlbC5xbmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZmlsdGVycy5mb3JFYWNoKGYgPT4gdGhpcy5fc3RvcmVkUXVlcnkuYWRkRmlsdGVyKGYpKTtcclxuICAgICAgICAgICAgICAgIGlmICghZmlsdGVycy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5fc3RvcmVkUXVlcnkucmVtb3ZlRmlsdGVyKGtleSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGZldGNoIGFnZ3JlZ2F0aW9ucyBldmVyeSB0aW1lIHRoZSBmb3JtIGRhdGEgY2hhbmdlc1xyXG4gICAgICAgICAgICB0aGlzLmFnZ3JlZ2F0ZSgpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICAvLyBzZXQgZm9jdXMgdG8gdGhlIGZpcnN0IGlucHV0LCBuZWVkcyBUaW1lb3V0IGJlY2F1c2UgZm9ybSBtYXkgbm90IGhhdmUgYmVlbiByZW5kZXJlZFxyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcImlucHV0XCIpO1xyXG4gICAgICAgICAgICBpZiAoZWwpIHtcclxuICAgICAgICAgICAgICBlbC5mb2N1cygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LCAwKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGb3JtRWxlbWVudHMoKTogT2JzZXJ2YWJsZTxhbnlbXT4ge1xyXG4gICAgLy8gZm9yIGZvcm0gZmllbGRzIHdlIHVzZSB0aGUgcW5hbWUgb2YgdGhlIHBhcmFtZXRlciB0byBmZXRjaCB0aGUgY29ycmVzcG9uZGluZyBmb3JtIGVsZW1lbnRcclxuICAgIC8vIGZyb20gb2JqZWN0IGRlZmluaXRpb24gYWx0aG91Z2ggdGhleSBtYXkgYmUgcHJvdmlkZWQsIGJlY2F1c2UgdGhleSBtYXkgaGF2ZVxyXG4gICAgLy8gY2hhbmdlZCBzaW5jZSB0aGUgcXVlcnkgd2FzIHBlcnNpc3RlZFxyXG4gICAgaWYgKHRoaXMuX3N0b3JlZFF1ZXJ5LnR5cGVzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAvLyBjcmVhdGluZyBwYXJhbXMgZm9ybSBvbmx5IG1ha2VzIHNlbnNlIGlmIHdlIGhhdmUgb25lIHNpbmdsZSB0YXJnZXQgdHlwZSAuLi5cclxuICAgICAgbGV0IGZvcm1FbGVtZW50cyA9IFtdO1xyXG4gICAgICBjb25zdCBlbGVtZW50RmV0Y2hUYXNrcyA9IFtdO1xyXG4gICAgICBlbGVtZW50RmV0Y2hUYXNrcy5wdXNoKFxyXG4gICAgICAgIHRoaXMuc3lzdGVtU2VydmljZS5nZXRGb3JtRWxlbWVudHNGcm9tRm9ybU1vZGVsKFxyXG4gICAgICAgICAgdGhpcy5fc3RvcmVkUXVlcnkudHlwZXNbMF0ucW5hbWUsXHJcbiAgICAgICAgICBcIlNFQVJDSFwiXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gICAgICAvLyAuLi4gY29udGV4dGZvbGRlcnR5cGUgbWF5IGFsc28gYmUgcHJvdmlkZWQuIFRoZXkgd2lsbCBiZSBzZXQgdXAgZmlyc3QgdG8gYmVcclxuICAgICAgLy8gb24gdG9wIG9mIHRoZSBnZW5lcmF0ZWQgZm9ybVxyXG4gICAgICBpZiAodGhpcy5fc3RvcmVkUXVlcnkuY29udGV4dEZvbGRlclR5cGVzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgIGVsZW1lbnRGZXRjaFRhc2tzLnB1c2goXHJcbiAgICAgICAgICB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0Rm9ybUVsZW1lbnRzRnJvbUZvcm1Nb2RlbChcclxuICAgICAgICAgICAgdGhpcy5fc3RvcmVkUXVlcnkuY29udGV4dEZvbGRlclR5cGVzWzBdLnFuYW1lLFxyXG4gICAgICAgICAgICBcIlNFQVJDSFwiLFxyXG4gICAgICAgICAgICB0cnVlXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgICAgICAvLyBlbGVtZW50cyA9IHRoaXMuX3N0b3JlZFF1ZXJ5LmNvbnRleHRGb2xkZXJUeXBlc1swXS5lbGVtZW50cztcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZm9ya0pvaW4oZWxlbWVudEZldGNoVGFza3MpLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXM6IGFueVtdKSA9PiB7XHJcbiAgICAgICAgICBmb3JtRWxlbWVudHMgPSByZXMubGVuZ3RoID09PSAyID8gWy4uLnJlc1swXSwgLi4ucmVzWzFdXSA6IHJlc1swXTtcclxuICAgICAgICAgIHJldHVybiBmb3JtRWxlbWVudHMubWFwKGUgPT4gKHsuLi5lfSkpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gb2YoW10pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRWYWx1ZShxbmFtZTogc3RyaW5nKTogYW55IHtcclxuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLnF1ZXJ5Rm9ybS5jb250cm9sc1txbmFtZV07XHJcbiAgICByZXR1cm4gY29udHJvbC52YWx1ZSAmJiBjb250cm9sLnZhbHVlW3FuYW1lXTtcclxuICB9XHJcblxyXG4gIGxvYWQoKSB7XHJcbiAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2Uuc2V0UXVlcnkodGhpcy5fc3RvcmVkUXVlcnkpO1xyXG4gICAgdGhpcy5vblF1ZXJ5TG9hZGVkLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIGV4ZWN1dGUoKSB7XHJcbiAgICB0aGlzLm9uUXVlcnlFeGVjdXRlLmVtaXQoe1xyXG4gICAgICBxdWVyeUpzb246IHRoaXMuX3N0b3JlZFF1ZXJ5LmdldFF1ZXJ5SnNvbigpXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWdncmVnYXRlKCkge1xyXG4gICAgdGhpcy5zZWFyY2hTZXJ2aWNlXHJcbiAgICAgIC5nZXRTZWFyY2hTdGF0ZSh7YWdnczoge3R5cGU6IHt9fSwgLi4udGhpcy5fc3RvcmVkUXVlcnkuZ2V0UXVlcnlKc29uKCl9KVxyXG4gICAgICAuc3Vic2NyaWJlKChzdGF0ZTogU2VhcmNoU3RhdGUpID0+IHtcclxuICAgICAgICB0aGlzLl9zdG9yZWRRdWVyeS5zdGF0ZSA9IHN0YXRlO1xyXG4gICAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
222
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmVkLXF1ZXJ5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL3N0b3JlZC1xdWVyeS9zdG9yZWQtcXVlcnkvc3RvcmVkLXF1ZXJ5LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsWUFBWSxFQUFhLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osV0FBVyxFQUNYLFVBQVUsRUFDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUVyRixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxzREFBc0QsQ0FBQztBQUN0RixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0saURBQWlELENBQUM7QUFDaEYsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixZQUFZLEVBRVosV0FBVyxFQUNYLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsYUFBYSxFQUVkLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBQyxRQUFRLEVBQWMsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBTzlDLE1BQU0sT0FBTyxvQkFBb0I7SUFvQy9CLFlBQ1UsYUFBNEIsRUFDNUIsVUFBc0IsRUFDdEIsU0FBMkIsRUFDM0IsYUFBNEIsRUFDNUIsb0JBQTBDLEVBQzFDLGlCQUEwQyxFQUMxQyxnQkFBa0M7UUFObEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1Qix5QkFB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QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sU0FBUztRQUNmLElBQUksQ0FBQyxhQUFhO2FBQ2YsY0FBYyxpQkFBRSxJQUFJLEVBQUUsRUFBQyxJQUFJLEVBQUUsRUFBRSxFQUFDLElBQUssSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsRUFBRTthQUN2RSxTQUFTLENBQUMsQ0FBQyxLQUFrQixFQUFFLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7O1lBcFFGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2dCQUMzQixxakRBQTRDOzthQUU3Qzs7O1lBWkMsYUFBYTtZQVhiLFVBQVU7WUFZVixnQkFBZ0I7WUFDaEIsYUFBYTtZQU5iLG9CQUFvQjtZQUxkLHVCQUF1QjtZQUV2QixnQkFBZ0I7OztvQkE0QnJCLEtBQUssU0FBQyxPQUFPO3VCQWtCYixLQUFLOzRCQUtMLE1BQU07NkJBQ04sTUFBTTtxQkFFTixXQUFXLFNBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZGVib3VuY2VUaW1lLCBzd2l0Y2hNYXAsIG1hcH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgRWxlbWVudFJlZlxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7T2JqZWN0Rm9ybUhlbHBlclNlcnZpY2V9IGZyb20gXCIuLi8uLi9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS1oZWxwZXIuc2VydmljZVwiO1xyXG5pbXBvcnQge09iamVjdEZvcm1Db250cm9sV3JhcHBlcn0gZnJvbSBcIi4uLy4uL29iamVjdC1mb3JtL29iamVjdC1mb3JtL29iamVjdC1mb3JtLWNvbnRyb2wtd3JhcHBlclwiO1xyXG5pbXBvcnQge0FwcFNlYXJjaFNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS9zZWFyY2gvYXBwLXNlYXJjaC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7T2JqZWN0Rm9ybUdyb3VwfSBmcm9tIFwiLi4vLi4vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0tZ3JvdXBcIjtcclxuaW1wb3J0IHtcclxuICBTdG9yZWRRdWVyaWVzU2VydmljZSxcclxuICBTZWFyY2hGaWx0ZXIsXHJcbiAgU2VhcmNoU3RhdGUsXHJcbiAgU3RvcmVkUXVlcnksXHJcbiAgU2VhcmNoU2VydmljZSxcclxuICBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gIFN5c3RlbVNlcnZpY2UsXHJcbiAgUXVlcnlTY29wZVxyXG59IGZyb20gXCJAZW8tc2RrL2NvcmVcIjtcclxuaW1wb3J0IHtVdGlsaXRpZXNTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vdXRpbC9zZXJ2aWNlcy91dGlsaXRpZXMuc2VydmljZVwiO1xyXG5pbXBvcnQge2ZvcmtKb2luLCBPYnNlcnZhYmxlLCBvZn0gZnJvbSBcInJ4anNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImVvLXN0b3JlZC1xdWVyeVwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vc3RvcmVkLXF1ZXJ5LmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL3N0b3JlZC1xdWVyeS5jb21wb25lbnQuc2Nzc1wiXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3RvcmVkUXVlcnlDb21wb25lbnQge1xyXG4gIHF1ZXJ5U2NvcGU6IFF1ZXJ5U2NvcGU7XHJcbiAgX3N0b3JlZFF1ZXJ5OiBTdG9yZWRRdWVyeTtcclxuICBxdWVyeUZvcm1Db250cm9sczogT2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyW107XHJcbiAgcXVlcnlGb3JtOiBPYmplY3RGb3JtR3JvdXA7XHJcbiAgZnVsbHRleHRGb3JtQ29udHJvbDogT2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyO1xyXG4gIF9mb3JtT25seTogYm9vbGVhbjtcclxuXHJcbiAgQElucHV0KFwicXVlcnlcIilcclxuICBzZXQgcXVlcnkoc3RvcmVkUXVlcnk6IFN0b3JlZFF1ZXJ5KSB7XHJcbiAgICBpZiAoc3RvcmVkUXVlcnkgaW5zdGFuY2VvZiBTdG9yZWRRdWVyeSkge1xyXG4gICAgICB0aGlzLl9zdG9yZWRRdWVyeSA9IHN0b3JlZFF1ZXJ5O1xyXG4gICAgICB0aGlzLl9zdG9yZWRRdWVyeS5zdGF0ZS5jb3VudCA9IHt2YWx1ZSA6IDB9O1xyXG4gICAgICB0aGlzLnF1ZXJ5U2NvcGUgPSB0aGlzLl9zdG9yZWRRdWVyeS5zY29wZTtcclxuXHJcbiAgICAgIHRoaXMuY3JlYXRlUXVlcnlGb3JtKCk7XHJcbiAgICAgIHRoaXMuYWdncmVnYXRlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgcXVlcnkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc3RvcmVkUXVlcnk7XHJcbiAgfVxyXG5cclxuICAvLyBzZXQgdG8gdHJ1ZSBvbmx5IHRoZSBzdG9yZWQgcXVlcnkgZm9ybSB3aWxsIGJlIHJlbmRlcmVkLCBvdGhlcndpc2VcclxuICAvLyB3ZSdsbCBnZXQgdGhlIGNvbXBsZXRlIGNvbnRyb2xcclxuICBASW5wdXQoKVxyXG4gIHNldCBmb3JtT25seShiOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9mb3JtT25seSA9IGI7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgb25RdWVyeUxvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25RdWVyeUV4ZWN1dGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLm9wZW5cIikgaXNPcGVuID0gdGhpcy5mb3JtT25seTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHNlYXJjaFNlcnZpY2U6IFNlYXJjaFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgc3lzdGVtU2VydmljZTogU3lzdGVtU2VydmljZSxcclxuICAgIHByaXZhdGUgc3RvcmVkUXVlcmllc1NlcnZpY2U6IFN0b3JlZFF1ZXJpZXNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmb3JtSGVscGVyU2VydmljZTogT2JqZWN0Rm9ybUhlbHBlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwcFNlYXJjaFNlcnZpY2U6IEFwcFNlYXJjaFNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIHB1YmxpYyBzZXRRdWVyeVNjb3BlKHNjb3BlOiBRdWVyeVNjb3BlKSB7XHJcbiAgICB0aGlzLl9zdG9yZWRRdWVyeS5zY29wZSA9IHNjb3BlO1xyXG4gICAgdGhpcy5xdWVyeVNjb3BlID0gc2NvcGU7XHJcbiAgICB0aGlzLmFnZ3JlZ2F0ZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8gZ2VuZXJhdGUgdGhlIGZvcm0gZm9yIHRoZSBkeW5hbWljIHBhcnRzIG9mIHRoZSBzdG9yZWQgcXVlcnlcclxuICBjcmVhdGVRdWVyeUZvcm0oKSB7XHJcbiAgICB0aGlzLnF1ZXJ5Rm9ybUNvbnRyb2xzID0gW107XHJcbiAgICB0aGlzLmZ1bGx0ZXh0Rm9ybUNvbnRyb2wgPSBudWxsO1xyXG5cclxuICAgIC8vIHBhcmFtZXRlcnMgb2YgYSBzdG9yZWQgcXVlcnkgY29udGFpbiB0aGUgZHluYW1pYyBwYXJ0cyBvZiB0aGUgcXVlcnksIHNvXHJcbiAgICAvLyB0aGVzZSBhcmUgdGhlIGZpZWxkcyB0byBiZSByZW5kZXJlZFxyXG4gICAgaWYgKHRoaXMuX3N0b3JlZFF1ZXJ5LnBhcmFtZXRlciAmJiB0aGlzLl9zdG9yZWRRdWVyeS5wYXJhbWV0ZXIubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBwYXJhbVFOYW1lcyA9IHRoaXMuX3N0b3JlZFF1ZXJ5LnBhcmFtZXRlci5tYXAocCA9PiBwLnFuYW1lKTtcclxuICAgICAgY29uc3QgZnVsbHRleHRQYXJhbSA9IHRoaXMuX3N0b3JlZFF1ZXJ5LnBhcmFtZXRlci5maW5kKFxyXG4gICAgICAgIHAgPT4gcC50eXBlID09PSBTdG9yZWRRdWVyaWVzU2VydmljZS5GVUxMVEVYVFxyXG4gICAgICApO1xyXG5cclxuICAgICAgLy8gZnVsbHRleHQgcGFyYW0gZ2V0IGEgc3BlY2lhbCBoYW5kbGluZ1xyXG4gICAgICBpZiAoZnVsbHRleHRQYXJhbSkge1xyXG4gICAgICAgIHRoaXMuZnVsbHRleHRGb3JtQ29udHJvbCA9IHRoaXMuZm9ybUhlbHBlclNlcnZpY2UuZWxlbWVudFRvRm9ybUNvbnRyb2woXHJcbiAgICAgICAgICB0aGlzLnN0b3JlZFF1ZXJpZXNTZXJ2aWNlLmdldEZ1bGx0ZXh0Rm9ybUVsZW1lbnQoXHJcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJlby5zdG9yZWRxdWVyeS5zZWFyY2gudGVybVwiKSxcclxuICAgICAgICAgICAgdGhpcy5fc3RvcmVkUXVlcnkudGVybVxyXG4gICAgICAgICAgKSxcclxuICAgICAgICAgIFwiU0VBUkNIXCJcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmdldEZvcm1FbGVtZW50cygpLnN1YnNjcmliZShlbGVtZW50cyA9PiB7XHJcbiAgICAgICAgaWYgKGVsZW1lbnRzLmxlbmd0aCkge1xyXG4gICAgICAgICAgbGV0IHBhcmFtRWxlbWVudHMgPSBlbGVtZW50cy5maWx0ZXIoXHJcbiAgICAgICAgICAgIGUgPT4gcGFyYW1RTmFtZXMuaW5kZXhPZihlLnFuYW1lKSAhPT0gLTFcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICAvLyBub3csIGNyZWF0ZSB0aGUgYWN0dWFsIGZvcm0gY29udHJvbHMgZnJvbSB0aGUgcGFyYW0gZWxlbWVudHNcclxuICAgICAgICAgIHBhcmFtRWxlbWVudHMuZm9yRWFjaChwYXJhbUVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICBpZihwYXJhbUVsZW1lbnQudHlwZSA9PT0gJ1RBQkxFJyl7XHJcbiAgICAgICAgICAgICAgbGV0IGZpbHRlcnMgPSB0aGlzLl9zdG9yZWRRdWVyeS5nZXRUYWJsZUZpbHRlcnMocGFyYW1FbGVtZW50LnFuYW1lKTtcclxuICAgICAgICAgICAgICBpZihmaWx0ZXJzICYmIGZpbHRlcnMubGVuZ3RoKXtcclxuICAgICAgICAgICAgICAgIHBhcmFtRWxlbWVudC52YWx1ZSA9IHRoaXMuc2VhcmNoU2VydmljZS50YWJsZUZpbHRlcnNUb0VsZW1lbnRWYWx1ZShmaWx0ZXJzLCBwYXJhbUVsZW1lbnQuZWxlbWVudHMpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBwYXJhbUVsZW1lbnQudmFsdWUgPSBbe31dO1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlIHBhcmFtRWxlbWVudC5pc05vdFNldFZhbHVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgLy8gZ3JhYiB2YWx1ZSBmb3IgdGhlIGNvbnRyb2wgZnJvbSBjb3JyZXNwb25kaW5nIHF1ZXJ5IGZpbHRlcnNcclxuICAgICAgICAgICAgICBsZXQgZmlsdGVyID0gdGhpcy5fc3RvcmVkUXVlcnkuZ2V0RmlsdGVyKHBhcmFtRWxlbWVudC5xbmFtZSk7XHJcbiAgICAgICAgICAgICAgLy8gd2UgbWF5IGhhdmUgcGFyYW1zIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBxdWVyaWVzIGZpbHRlcnMuIFRoaXMgbWF5IGJlIHRoZVxyXG4gICAgICAgICAgICAgIC8vIGNhc2Ugd2hlbiB3ZSBtYXJrIGZvcm0gZWxlbWVudHMgYXMgZHluYW1pYyBmaWVsZHMgd2l0aG91dCBwcm92aWRpbmcgYSB2YWx1ZVxyXG4gICAgICAgICAgICAgIGlmIChmaWx0ZXIpIHtcclxuICAgICAgICAgICAgICAgIC8vIGZpbHRlciB0byBoYXZlIG5vIHZhbHVlXHJcbiAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgIGZpbHRlci5vcGVyYXRvciA9PT0gU2VhcmNoRmlsdGVyLk9QRVJBVE9SLkVRVUFMICYmXHJcbiAgICAgICAgICAgICAgICAgIGZpbHRlci5maXJzdFZhbHVlID09PSBudWxsXHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgcGFyYW1FbGVtZW50LmlzTm90U2V0VmFsdWUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgZGVsZXRlIHBhcmFtRWxlbWVudC5pc05vdFNldFZhbHVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gIFxyXG4gICAgICAgICAgICAgICAgcGFyYW1FbGVtZW50LnZhbHVlID0gdGhpcy5zZWFyY2hTZXJ2aWNlLmZpbHRlclRvRWxlbWVudFZhbHVlKFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLl9zdG9yZWRRdWVyeS5nZXRGaWx0ZXIocGFyYW1FbGVtZW50LnFuYW1lKSxcclxuICAgICAgICAgICAgICAgICAgcGFyYW1FbGVtZW50LnR5cGVcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtRWxlbWVudC52YWx1ZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gbmFtZSBwcm9wZXJ0eSBvZiBzdG9yZWQgcXVlcnkgcGFyYW0gaGFzIHRvIGJlIHFuYW1lIG9mIGZvcm0gZWxlbWVudFxyXG4gICAgICAgICAgICAvLyBiZWNhdXNlIHdlIG1heSBjb21iaW5lIG11bHRpcGxlIGZvcm1zIChjb250ZXh0IGZvcm0pIGFuZCBpbiB0aGlzIGNhc2UgbmFtZSBjb3VsZCBiZSBub3QgdW5pcXVlXHJcbiAgICAgICAgICAgIHBhcmFtRWxlbWVudC5uYW1lID0gcGFyYW1FbGVtZW50LnFuYW1lO1xyXG4gICAgICAgICAgICBsZXQgd3JhcHBlciA9IHRoaXMuZm9ybUhlbHBlclNlcnZpY2UuZWxlbWVudFRvRm9ybUNvbnRyb2woXHJcbiAgICAgICAgICAgICAgcGFyYW1FbGVtZW50LFxyXG4gICAgICAgICAgICAgIFwiU0VBUkNIXCJcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKHdyYXBwZXIpIHtcclxuICAgICAgICAgICAgICB0aGlzLnF1ZXJ5Rm9ybUNvbnRyb2xzLnB1c2god3JhcHBlcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGZvcm0gPSBuZXcgT2JqZWN0Rm9ybUdyb3VwKHt9KTtcclxuICAgICAgICAvLyBhZGQgZnVsbHRleHQgd2hlbiBhdmFpbGFibGVcclxuICAgICAgICBpZiAodGhpcy5mdWxsdGV4dEZvcm1Db250cm9sKSB7XHJcbiAgICAgICAgICBmb3JtLmFkZENvbnRyb2woXHJcbiAgICAgICAgICAgIHRoaXMuZnVsbHRleHRGb3JtQ29udHJvbC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWUsXHJcbiAgICAgICAgICAgIHRoaXMuZnVsbHRleHRGb3JtQ29udHJvbFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5xdWVyeUZvcm1Db250cm9scy5mb3JFYWNoKGMgPT5cclxuICAgICAgICAgIGZvcm0uYWRkQ29udHJvbChjLl9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZSwgYylcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICAvLyBvbmx5IHNldHVwIHRoZSBmb3JtIGlmIHdlIGFjdHVhbGx5IGhhdmUgY29udHJvbHMgYXBwbGllZCB0byBpdFxyXG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhmb3JtLmNvbnRyb2xzKS5sZW5ndGgpIHtcclxuICAgICAgICAgIHRoaXMucXVlcnlGb3JtID0gZm9ybTtcclxuICAgICAgICAgIHRoaXMucXVlcnlGb3JtLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSg1MDApKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAvLyB1cGRhdGUgcXVlcnkgYmFzZWQgb24gdGhlIGZvcm0gdmFsdWVzXHJcbiAgICAgICAgICAgIC8vZm9yIChsZXQga2V5IG9mIE9iamVjdC5rZXlzKGZvcm1EYXRhKSkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5xdWVyeUZvcm0uY29udHJvbHMpKSB7XHJcbiAgICAgICAgICAgICAgLy9sZXQgdmFsdWUgPSBmb3JtRGF0YVtrZXldO1xyXG4gICAgICAgICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWUoa2V5KTtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKGtleSA9PT0gU3RvcmVkUXVlcmllc1NlcnZpY2UuRlVMTFRFWFQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3N0b3JlZFF1ZXJ5LnRlcm0gPSB2YWx1ZSB8fCBcIlwiO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB3cmFwcGVyOiBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXIgPSB0aGlzLnF1ZXJ5Rm9ybVxyXG4gICAgICAgICAgICAgICAgICAuY29udHJvbHNba2V5XSBhcyBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXI7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtRWxlbWVudFJlZjogYW55ID1cclxuICAgICAgICAgICAgICAgICAgd3JhcHBlci5jb250cm9sc1t3cmFwcGVyLl9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZV07XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyczogU2VhcmNoRmlsdGVyW10gPVxyXG4gICAgICAgICAgICAgICAgICBVdGlsaXRpZXNTZXJ2aWNlLmlzRW1wdHkodmFsdWUpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgIWZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LmlzTm90U2V0VmFsdWVcclxuICAgICAgICAgICAgICAgICAgICA/IFtdXHJcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLnNlYXJjaFNlcnZpY2UuZ2V0U2VhcmNoRmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3RvcmVkUXVlcnkudHlwZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICBrZXksXHJcbiAgICAgICAgICAgICAgICAgICAgICBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5pc05vdFNldFZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmKGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LnR5cGUgPT09ICdUQUJMRScpe1xyXG4gICAgICAgICAgICAgICAgICBmb3JtRWxlbWVudFJlZi5fZW9Gb3JtRWxlbWVudC5lbGVtZW50cy5mb3JFYWNoKGVsID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdG9yZWRRdWVyeS5yZW1vdmVGaWx0ZXIoZWwucW5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGZpbHRlcnMuZm9yRWFjaChmID0+IHRoaXMuX3N0b3JlZFF1ZXJ5LmFkZEZpbHRlcihmKSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWZpbHRlcnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuX3N0b3JlZFF1ZXJ5LnJlbW92ZUZpbHRlcihrZXkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBmZXRjaCBhZ2dyZWdhdGlvbnMgZXZlcnkgdGltZSB0aGUgZm9ybSBkYXRhIGNoYW5nZXNcclxuICAgICAgICAgICAgdGhpcy5hZ2dyZWdhdGUoKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgLy8gc2V0IGZvY3VzIHRvIHRoZSBmaXJzdCBpbnB1dCwgbmVlZHMgVGltZW91dCBiZWNhdXNlIGZvcm0gbWF5IG5vdCBoYXZlIGJlZW4gcmVuZGVyZWRcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBlbCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFwiKTtcclxuICAgICAgICAgICAgaWYgKGVsKSB7XHJcbiAgICAgICAgICAgICAgZWwuZm9jdXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSwgMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Rm9ybUVsZW1lbnRzKCk6IE9ic2VydmFibGU8YW55W10+IHtcclxuICAgIC8vIGZvciBmb3JtIGZpZWxkcyB3ZSB1c2UgdGhlIHFuYW1lIG9mIHRoZSBwYXJhbWV0ZXIgdG8gZmV0Y2ggdGhlIGNvcnJlc3BvbmRpbmcgZm9ybSBlbGVtZW50XHJcbiAgICAvLyBmcm9tIG9iamVjdCBkZWZpbml0aW9uIGFsdGhvdWdoIHRoZXkgbWF5IGJlIHByb3ZpZGVkLCBiZWNhdXNlIHRoZXkgbWF5IGhhdmVcclxuICAgIC8vIGNoYW5nZWQgc2luY2UgdGhlIHF1ZXJ5IHdhcyBwZXJzaXN0ZWRcclxuICAgIGlmICh0aGlzLl9zdG9yZWRRdWVyeS50eXBlcy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgLy8gY3JlYXRpbmcgcGFyYW1zIGZvcm0gb25seSBtYWtlcyBzZW5zZSBpZiB3ZSBoYXZlIG9uZSBzaW5nbGUgdGFyZ2V0IHR5cGUgLi4uXHJcbiAgICAgIGxldCBmb3JtRWxlbWVudHMgPSBbXTtcclxuICAgICAgY29uc3QgZWxlbWVudEZldGNoVGFza3MgPSBbXTtcclxuICAgICAgZWxlbWVudEZldGNoVGFza3MucHVzaChcclxuICAgICAgICB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0Rm9ybUVsZW1lbnRzRnJvbUZvcm1Nb2RlbChcclxuICAgICAgICAgIHRoaXMuX3N0b3JlZFF1ZXJ5LnR5cGVzWzBdLnFuYW1lLFxyXG4gICAgICAgICAgXCJTRUFSQ0hcIlxyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuICAgICAgLy8gLi4uIGNvbnRleHRmb2xkZXJ0eXBlIG1heSBhbHNvIGJlIHByb3ZpZGVkLiBUaGV5IHdpbGwgYmUgc2V0IHVwIGZpcnN0IHRvIGJlXHJcbiAgICAgIC8vIG9uIHRvcCBvZiB0aGUgZ2VuZXJhdGVkIGZvcm1cclxuICAgICAgaWYgKHRoaXMuX3N0b3JlZFF1ZXJ5LmNvbnRleHRGb2xkZXJUeXBlcy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICBlbGVtZW50RmV0Y2hUYXNrcy5wdXNoKFxyXG4gICAgICAgICAgdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldEZvcm1FbGVtZW50c0Zyb21Gb3JtTW9kZWwoXHJcbiAgICAgICAgICAgIHRoaXMuX3N0b3JlZFF1ZXJ5LmNvbnRleHRGb2xkZXJUeXBlc1swXS5xbmFtZSxcclxuICAgICAgICAgICAgXCJTRUFSQ0hcIixcclxuICAgICAgICAgICAgdHJ1ZVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgLy8gZWxlbWVudHMgPSB0aGlzLl9zdG9yZWRRdWVyeS5jb250ZXh0Rm9sZGVyVHlwZXNbMF0uZWxlbWVudHM7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGZvcmtKb2luKGVsZW1lbnRGZXRjaFRhc2tzKS5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzOiBhbnlbXSkgPT4ge1xyXG4gICAgICAgICAgZm9ybUVsZW1lbnRzID0gcmVzLmxlbmd0aCA9PT0gMiA/IFsuLi5yZXNbMF0sIC4uLnJlc1sxXV0gOiByZXNbMF07XHJcbiAgICAgICAgICByZXR1cm4gZm9ybUVsZW1lbnRzLm1hcChlID0+ICh7Li4uZX0pKTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIG9mKFtdKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VmFsdWUocW5hbWU6IHN0cmluZyk6IGFueSB7XHJcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5xdWVyeUZvcm0uY29udHJvbHNbcW5hbWVdO1xyXG4gICAgcmV0dXJuIGNvbnRyb2wudmFsdWUgJiYgY29udHJvbC52YWx1ZVtxbmFtZV07XHJcbiAgfVxyXG5cclxuICBsb2FkKCkge1xyXG4gICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLnNldFF1ZXJ5KHRoaXMuX3N0b3JlZFF1ZXJ5KTtcclxuICAgIHRoaXMub25RdWVyeUxvYWRlZC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBleGVjdXRlKCkge1xyXG4gICAgdGhpcy5vblF1ZXJ5RXhlY3V0ZS5lbWl0KHtcclxuICAgICAgcXVlcnlKc29uOiB0aGlzLl9zdG9yZWRRdWVyeS5nZXRRdWVyeUpzb24oKVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFnZ3JlZ2F0ZSgpIHtcclxuICAgIHRoaXMuc2VhcmNoU2VydmljZVxyXG4gICAgICAuZ2V0U2VhcmNoU3RhdGUoe2FnZ3M6IHt0eXBlOiB7fX0sIC4uLnRoaXMuX3N0b3JlZFF1ZXJ5LmdldFF1ZXJ5SnNvbigpfSlcclxuICAgICAgLnN1YnNjcmliZSgoc3RhdGU6IFNlYXJjaFN0YXRlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fc3RvcmVkUXVlcnkuc3RhdGUgPSBzdGF0ZTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -38,11 +38,16 @@ export class StoredQueryDetailsComponent extends UnsubscribeOnDestroy {
38
38
  set query(q) {
39
39
  this.setQuery(q);
40
40
  }
41
+ setQueryScope(scope) {
42
+ this.storedQuery.scope = scope;
43
+ this.queryScope = scope;
44
+ }
41
45
  setQuery(q) {
42
46
  this.resetEditForm();
43
47
  // grab meta information about the query
44
48
  this.storedQuery = q;
45
49
  if (q instanceof StoredQuery) {
50
+ this.queryScope = q.scope;
46
51
  const user = this.userService.getCurrentUser();
47
52
  this.isNewQuery = q.isNew();
48
53
  this.isOwnQuery = this.isNewQuery || q.user.toLowerCase() === user.name.toLowerCase();
@@ -462,7 +467,7 @@ export class StoredQueryDetailsComponent extends UnsubscribeOnDestroy {
462
467
  StoredQueryDetailsComponent.decorators = [
463
468
  { type: Component, args: [{
464
469
  selector: 'eo-stored-query-details',
465
- template: "<ng-container *ngIf=\"storedQuery\">\r\n <div class=\"eo-head\">\r\n <header class=\"eo-header\">\r\n <eo-icon class=\"eo-header-icon\"\r\n [iconSrc]=\"'assets/_default/svg/ic_search.svg'\"\r\n [iconTitle]=\"('eo.sidebar.navigation.storedqueries' | translate)\">\r\n </eo-icon>\r\n <div class=\"eo-header-info\">\r\n <h2 class=\"eo-header-title\">{{storedQuery.name}}</h2>\r\n <h3 class=\"eo-header-subtitle\" translate>eo.search.title.storedqueries</h3>\r\n </div>\r\n </header>\r\n </div>\r\n\r\n <div class=\"eo-body\">\r\n\r\n <div class=\"form\">\r\n\r\n <ng-template #queryForm>\r\n <eo-stored-query [query]=\"storedQuery\" [formOnly]=\"true\" #storedQueryForm\r\n (onQueryLoaded)=\"onStoredQueryLoaded()\"\r\n (onQueryExecute)=\"onStoredQueryExecute($event)\"></eo-stored-query>\r\n </ng-template>\r\n\r\n <form class=\"edit-form\" [formGroup]=\"editForm.form\" *ngIf=\"editForm.form; else queryForm\">\r\n\r\n <div class=\"context dark\">\r\n\r\n <!-- title and fulltext term fields -->\r\n <eo-form-input class=\"title\">\r\n <input type=\"text\" name=\"storedQueryTitle\" maxlength=\"64\" autofocus=\"autofocus\" [formControlName]=\"'storedQueryTitle'\"/>\r\n </eo-form-input>\r\n <div class=\"form-field\">\r\n <eo-form-element [skipToggle]=\"true\" [element]=\"editForm.fulltextFormControl\" [situation]=\"'SEARCH'\"></eo-form-element>\r\n <eo-dynamic-property-switch [parentFormControl]=\"editForm.fulltextFormControl\"\r\n (onPropertyChanged)=\"parameterChanged($event)\"></eo-dynamic-property-switch>\r\n </div>\r\n\r\n <!-- context type form controls -->\r\n <h3>{{storedQuery.contextFolderTypes[0]?.label}}</h3>\r\n <div class=\"form-field\" *ngFor=\"let ctxElement of editForm.contextControls; trackBy: trackByQName\">\r\n <eo-form-element [element]=\"ctxElement\" [situation]=\"'SEARCH'\"></eo-form-element>\r\n <eo-dynamic-property-switch [parentFormControl]=\"ctxElement\" (onPropertyChanged)=\"parameterChanged($event)\"></eo-dynamic-property-switch>\r\n </div>\r\n </div>\r\n\r\n <!-- object type form controls -->\r\n <div class=\"form-fields\" [ngClass]=\"{empty: !editForm.controls?.length}\">\r\n <div class=\"form-field\" *ngFor=\"let element of editForm.controls; trackBy: trackByQName\">\r\n <eo-form-element [element]=\"element\" [situation]=\"'SEARCH'\"></eo-form-element>\r\n <eo-dynamic-property-switch [parentFormControl]=\"element\" (onPropertyChanged)=\"parameterChanged($event)\"></eo-dynamic-property-switch>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n\r\n <aside class=\"aside\" *ngIf=\"!isNewQuery\">\r\n\r\n <!-- favorite and share -->\r\n <div class=\"meta-actions\">\r\n\r\n <ng-container *ngIf=\"isOwnQuery; else sharedWithMe\">\r\n <eo-icon class=\"button btn-share\" [iconSrc]=\"'assets/_default/svg/ic_share.svg'\" *ngIf=\"enableSharing\"\r\n [ngClass]=\"{active: storedQuery.shared || storedQuery.roles.length, editing: editingShare}\"\r\n (click)=\"toggleShareEdit()\"\r\n [iconTitle]=\"iconTitles.share\"></eo-icon>\r\n\r\n <eo-icon class=\"button btn-fav\" [iconSrc]=\"'assets/_default/svg/ic_favorite.svg'\"\r\n [ngClass]=\"{active: storedQuery.favorite}\"\r\n (click)=\"toggleFavoriteState()\"\r\n [iconTitle]=\"iconTitles.favor\"></eo-icon>\r\n </ng-container>\r\n\r\n <ng-template #sharedWithMe>\r\n <eo-icon class=\"sharedWithMe\" [iconSrc]=\"'assets/_default/svg/ic_share.svg'\" [iconTitle]=\"iconTitles.shared\"></eo-icon>\r\n <eo-icon class=\"sharedWithMe\" [iconSrc]=\"'assets/_default/svg/ic_favorite.svg'\" [iconTitle]=\"iconTitles.favored\"></eo-icon>\r\n </ng-template>\r\n\r\n </div>\r\n\r\n <!-- roles that share this query -->\r\n <div class=\"meta-roles\" [ngClass]=\"{dark: editingShare, empty: !storedQuery.roles?.length}\">\r\n\r\n <div class=\"label\" translate>eo.storedquery.share.sharedwith</div>\r\n <div class=\"form-field\" *ngIf=\"rolesPicker?.codesystem?.entries\">\r\n <eo-codesystem [pickerTitle]=\"rolesPicker.title\"\r\n [codesystem]=\"rolesPicker.codesystem\"\r\n [multiselect]=\"true\"\r\n [readonly]=\"!editingShare\"\r\n [inputStyleClass]=\"'stored-query__share'\"\r\n [(ngModel)]=\"rolesPicker.value\"></eo-codesystem>\r\n </div>\r\n\r\n <div class=\"share-actions\" *ngIf=\"editingShare\">\r\n <button class=\"secondary\" (click)=\"cancelShare()\" translate>eo.storedquery.share.cancel</button>\r\n <button class=\"primary\" (click)=\"share()\" translate>eo.storedquery.share.ok</button>\r\n </div>\r\n </div>\r\n\r\n <!-- queries meta info like baseparam settings -->\r\n <div class=\"meta-data\" *ngIf=\"restrictions?.length\">\r\n <div class=\"restriction\" *ngFor=\"let restriction of restrictions; trackBy: trackByIndex\">\r\n <div class=\"label\">{{restriction.label}}</div>\r\n <div class=\"items\">\r\n <div *ngFor=\"let item of restriction.items; trackBy: trackByIndex\">{{item}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </aside>\r\n\r\n </div>\r\n\r\n <div class=\"actions\">\r\n <ng-container *ngIf=\"!editForm.form; else actionEdit\">\r\n <button class=\"secondary btn-delete\" (click)=\"delete()\" [disabled]=\"!isOwnQuery\" translate>eo.storedquery.action.delete</button>\r\n <button class=\"secondary btn-open\" (click)=\"setQueryToAppSearch()\" [disabled]=\"!isOwnQuery\" translate>eo.storedquery.load</button>\r\n <button class=\"primary grey btn-edit\" (click)=\"edit()\" [disabled]=\"!isOwnQuery\" translate>eo.storedquery.action.edit</button>\r\n <button class=\"primary btn-search\" [disabled]=\"storedQuery.state?.isEmpty\" (click)=\"executeQuery()\" translate>eo.storedquery.run</button>\r\n </ng-container>\r\n\r\n <ng-template #actionEdit>\r\n <!-- action while editing the query form -->\r\n <button class=\"secondary btn-cancel\" (click)=\"cancelEdit()\" translate>eo.storedquery.action.cancel</button>\r\n <button class=\"primary btn-save\" (click)=\"updateStoredQuery()\" [disabled]=\"editForm.form.invalid\" translate>eo.storedquery.action.save</button>\r\n </ng-template>\r\n </div>\r\n\r\n</ng-container>\r\n",
470
+ template: "<ng-container *ngIf=\"storedQuery\">\r\n <div class=\"eo-head\">\r\n <header class=\"eo-header\">\r\n <eo-icon class=\"eo-header-icon\"\r\n [iconSrc]=\"'assets/_default/svg/ic_search.svg'\"\r\n [iconTitle]=\"('eo.sidebar.navigation.storedqueries' | translate)\">\r\n </eo-icon>\r\n <div class=\"eo-header-info\">\r\n <h2 class=\"eo-header-title\">{{storedQuery.name}}</h2>\r\n <h3 class=\"eo-header-subtitle\" translate>eo.search.title.storedqueries</h3>\r\n </div>\r\n </header>\r\n </div>\r\n\r\n <div class=\"eo-body\">\r\n\r\n <div class=\"form\">\r\n\r\n <ng-template #queryForm>\r\n <eo-stored-query [query]=\"storedQuery\" [formOnly]=\"true\" #storedQueryForm\r\n (onQueryLoaded)=\"onStoredQueryLoaded()\"\r\n (onQueryExecute)=\"onStoredQueryExecute($event)\"></eo-stored-query>\r\n </ng-template>\r\n\r\n <form class=\"edit-form\" [formGroup]=\"editForm.form\" *ngIf=\"editForm.form; else queryForm\">\r\n\r\n <div class=\"context dark\">\r\n\r\n <!-- title and fulltext term fields -->\r\n <eo-form-input class=\"title\">\r\n <input type=\"text\" name=\"storedQueryTitle\" maxlength=\"64\" autofocus=\"autofocus\" [formControlName]=\"'storedQueryTitle'\"/>\r\n </eo-form-input>\r\n \r\n <eo-query-scope-select [selection]=\"queryScope\" (select)=\"setQueryScope($event)\"></eo-query-scope-select>\r\n <div class=\"form-field\">\r\n <eo-form-element [skipToggle]=\"true\" [element]=\"editForm.fulltextFormControl\" [situation]=\"'SEARCH'\"></eo-form-element>\r\n <eo-dynamic-property-switch [parentFormControl]=\"editForm.fulltextFormControl\"\r\n (onPropertyChanged)=\"parameterChanged($event)\"></eo-dynamic-property-switch>\r\n </div>\r\n\r\n <!-- context type form controls -->\r\n <h3>{{storedQuery.contextFolderTypes[0]?.label}}</h3>\r\n <div class=\"form-field\" *ngFor=\"let ctxElement of editForm.contextControls; trackBy: trackByQName\">\r\n <eo-form-element [element]=\"ctxElement\" [situation]=\"'SEARCH'\"></eo-form-element>\r\n <eo-dynamic-property-switch [parentFormControl]=\"ctxElement\" (onPropertyChanged)=\"parameterChanged($event)\"></eo-dynamic-property-switch>\r\n </div>\r\n </div>\r\n\r\n <!-- object type form controls -->\r\n <div class=\"form-fields\" [ngClass]=\"{empty: !editForm.controls?.length}\">\r\n <div class=\"form-field\" *ngFor=\"let element of editForm.controls; trackBy: trackByQName\">\r\n <eo-form-element [element]=\"element\" [situation]=\"'SEARCH'\"></eo-form-element>\r\n <eo-dynamic-property-switch [parentFormControl]=\"element\" (onPropertyChanged)=\"parameterChanged($event)\"></eo-dynamic-property-switch>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n\r\n <aside class=\"aside\" *ngIf=\"!isNewQuery\">\r\n\r\n <!-- favorite and share -->\r\n <div class=\"meta-actions\">\r\n\r\n <ng-container *ngIf=\"isOwnQuery; else sharedWithMe\">\r\n <eo-icon class=\"button btn-share\" [iconSrc]=\"'assets/_default/svg/ic_share.svg'\" *ngIf=\"enableSharing\"\r\n [ngClass]=\"{active: storedQuery.shared || storedQuery.roles.length, editing: editingShare}\"\r\n (click)=\"toggleShareEdit()\"\r\n [iconTitle]=\"iconTitles.share\"></eo-icon>\r\n\r\n <eo-icon class=\"button btn-fav\" [iconSrc]=\"'assets/_default/svg/ic_favorite.svg'\"\r\n [ngClass]=\"{active: storedQuery.favorite}\"\r\n (click)=\"toggleFavoriteState()\"\r\n [iconTitle]=\"iconTitles.favor\"></eo-icon>\r\n </ng-container>\r\n\r\n <ng-template #sharedWithMe>\r\n <eo-icon class=\"sharedWithMe\" [iconSrc]=\"'assets/_default/svg/ic_share.svg'\" [iconTitle]=\"iconTitles.shared\"></eo-icon>\r\n <eo-icon class=\"sharedWithMe\" [iconSrc]=\"'assets/_default/svg/ic_favorite.svg'\" [iconTitle]=\"iconTitles.favored\"></eo-icon>\r\n </ng-template>\r\n\r\n </div>\r\n\r\n <!-- roles that share this query -->\r\n <div class=\"meta-roles\" [ngClass]=\"{dark: editingShare, empty: !storedQuery.roles?.length}\">\r\n\r\n <div class=\"label\" translate>eo.storedquery.share.sharedwith</div>\r\n <div class=\"form-field\" *ngIf=\"rolesPicker?.codesystem?.entries\">\r\n <eo-codesystem [pickerTitle]=\"rolesPicker.title\"\r\n [codesystem]=\"rolesPicker.codesystem\"\r\n [multiselect]=\"true\"\r\n [readonly]=\"!editingShare\"\r\n [inputStyleClass]=\"'stored-query__share'\"\r\n [(ngModel)]=\"rolesPicker.value\"></eo-codesystem>\r\n </div>\r\n\r\n <div class=\"share-actions\" *ngIf=\"editingShare\">\r\n <button class=\"secondary\" (click)=\"cancelShare()\" translate>eo.storedquery.share.cancel</button>\r\n <button class=\"primary\" (click)=\"share()\" translate>eo.storedquery.share.ok</button>\r\n </div>\r\n </div>\r\n\r\n <!-- queries meta info like baseparam settings -->\r\n <div class=\"meta-data\" *ngIf=\"restrictions?.length\">\r\n <div class=\"restriction\" *ngFor=\"let restriction of restrictions; trackBy: trackByIndex\">\r\n <div class=\"label\">{{restriction.label}}</div>\r\n <div class=\"items\">\r\n <div *ngFor=\"let item of restriction.items; trackBy: trackByIndex\">{{item}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </aside>\r\n\r\n </div>\r\n\r\n <div class=\"actions\">\r\n <ng-container *ngIf=\"!editForm.form; else actionEdit\">\r\n <button class=\"secondary btn-delete\" (click)=\"delete()\" [disabled]=\"!isOwnQuery\" translate>eo.storedquery.action.delete</button>\r\n <button class=\"secondary btn-open\" (click)=\"setQueryToAppSearch()\" [disabled]=\"!isOwnQuery\" translate>eo.storedquery.load</button>\r\n <button class=\"primary grey btn-edit\" (click)=\"edit()\" [disabled]=\"!isOwnQuery\" translate>eo.storedquery.action.edit</button>\r\n <button class=\"primary btn-search\" [disabled]=\"storedQuery.state?.isEmpty\" (click)=\"executeQuery()\" translate>eo.storedquery.run</button>\r\n </ng-container>\r\n\r\n <ng-template #actionEdit>\r\n <!-- action while editing the query form -->\r\n <button class=\"secondary btn-cancel\" (click)=\"cancelEdit()\" translate>eo.storedquery.action.cancel</button>\r\n <button class=\"primary btn-save\" (click)=\"updateStoredQuery()\" [disabled]=\"editForm.form.invalid\" translate>eo.storedquery.action.save</button>\r\n </ng-template>\r\n </div>\r\n\r\n</ng-container>\r\n",
466
471
  styles: [":host{--stored-query-aside-width:300px;background:var(--panel-background-grey);display:flex;flex:1;flex-direction:column;height:100%;min-height:0;min-width:0;overflow-y:auto}:host .eo-head{background-color:var(--color-white);border-bottom:1px solid var(--panel-header-border-bottom-color)}:host .eo-body{overflow-y:hidden}:host .eo-body .form{overflow-y:auto;padding:var(--app-pane-padding);padding-right:calc(var(--stored-query-aside-width) + var(--app-pane-padding)*2)}:host .eo-body .form eo-stored-query{background-color:var(--color-white);padding:var(--app-pane-padding)}:host .eo-body .aside{background-color:rgba(var(--color-black-rgb),.02);border:1px solid rgba(var(--color-black-rgb),.1);box-sizing:border-box;padding:var(--app-pane-padding);position:absolute;right:var(--app-pane-padding);top:var(--app-pane-padding);width:var(--stored-query-aside-width)}:host .eo-body .aside .meta-actions{display:flex;justify-content:flex-end;margin:0 -2px}:host .eo-body .aside .meta-actions eo-icon{color:var(--text-color-hint);margin:0 2px;padding:4px}:host .eo-body .aside .meta-actions eo-icon.active{color:var(--color-favorite)}:host .eo-body .aside .meta-actions eo-icon.editing{background-color:var(--color-primary-2);border-radius:2px 2px 0 0;color:var(--color-white)}:host .eo-body .aside .meta-actions eo-icon.sharedWithMe{background-color:var(--text-color-hint);border-radius:2px;color:var(--color-white)}:host .eo-body .aside .meta-roles.dark{background-color:var(--color-primary-2);border-radius:2px;color:var(--color-white);margin-bottom:var(--app-pane-padding);padding:calc(var(--app-pane-padding)/2)}:host .eo-body .aside .meta-roles.dark .actions{display:flex}:host .eo-body .aside .meta-roles.dark .label{display:none}:host .eo-body .aside .meta-roles.dark .form-field,:host .eo-body .aside .meta-roles .form-field{background-color:rgba(var(--color-white-rgb),.2)}:host .eo-body .aside .meta-roles .form-field{border:1px solid rgba(var(--color-black-rgb),.1);margin-bottom:calc(var(--app-pane-padding)/2);padding:2px 2px 4px 4px}:host .eo-body .aside .meta-roles .label{color:var(--text-color-caption);font-style:italic;margin-bottom:calc(var(--app-pane-padding)/4)}:host .eo-body .aside .meta-roles .share-actions{display:flex;justify-content:flex-end;margin:0 calc(var(--app-pane-padding)/8*-1)}:host .eo-body .aside .meta-roles .share-actions button{margin:0 calc(var(--app-pane-padding)/8);padding:calc(var(--app-pane-padding)/4) calc(var(--app-pane-padding)/2)}:host .eo-body .aside .meta-roles.empty:not(.dark) .form-field,:host .eo-body .aside .meta-roles.empty:not(.dark) .label{display:none}:host .eo-body .aside .meta-data{border-collapse:collapse;display:table;flex:1 1 40%;margin:0 0 var(--app-pane-padding) 0;order:1}:host .eo-body .aside .meta-data .restriction{display:table-row}:host .eo-body .aside .meta-data .restriction .label{color:var(--text-color-caption);display:table-cell;font-style:italic;padding-right:calc(var(--app-pane-padding)/2)}:host .eo-body .aside .meta-data .restriction .items{border-left:1px solid rgba(var(--color-black-rgb),.1);display:table-cell;padding:0 0 calc(var(--app-pane-padding)/2) calc(var(--app-pane-padding)/2)}:host .actions{background-color:var(--color-white);border-top:1px solid var(--panel-header-border-bottom-color);display:flex;flex-flow:row;justify-content:flex-end;padding:var(--app-pane-padding) calc(var(--app-pane-padding) - 2px)}:host .actions button{margin:0 2px}:host .edit-form{background-color:var(--color-white);max-width:500px}:host .edit-form .context{background-color:var(--color-primary-2);padding:calc(var(--app-pane-padding)/2)}:host .edit-form .context h3{color:var(--color-white);display:flex;font-size:var(--font-subhead);font-weight:var(--font-weight-light);justify-content:flex-end;margin:0;padding:var(--app-pane-padding) 0 calc(var(--app-pane-padding)/2) 0}:host .edit-form .form-fields{padding:calc(var(--app-pane-padding)/2)}:host .edit-form .form-fields.empty{display:none}:host .edit-form .form-field{align-items:center;display:flex;flex-flow:row nowrap}:host .edit-form .form-field eo-form-element{flex:1 1 auto}:host .edit-form .form-field eo-dynamic-property-switch{flex:0 0 auto}:host eo-stored-query{display:block;max-width:500px}:host ::ng-deep eo-form-input.title{display:block;margin-bottom:var(--app-pane-padding)}:host ::ng-deep eo-form-input.title input{font-size:var(--font-title);font-weight:var(--font-weight-light)}"]
467
472
  },] }
468
473
  ];
@@ -482,4 +487,4 @@ StoredQueryDetailsComponent.propDecorators = {
482
487
  query: [{ type: Input }],
483
488
  notifyList: [{ type: Output }]
484
489
  };
485
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmVkLXF1ZXJ5LWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvc3RvcmVkLXF1ZXJ5L3N0b3JlZC1xdWVyeS1kZXRhaWxzL3N0b3JlZC1xdWVyeS1kZXRhaWxzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFhLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFPLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBbUIsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RCxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxvRUFBb0UsQ0FBQztBQUN6RyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0saURBQWlELENBQUM7QUFDaEYsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sOENBQThDLENBQUM7QUFDckYsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBSWpGLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHdEQUF3RCxDQUFDO0FBQ3hGLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQ2xGLE9BQU8sRUFFTCxXQUFXLEVBQ1gsb0JBQW9CLEVBQ3BCLFlBQVksRUFDWixXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLGFBQWEsRUFFYixXQUFXLEVBRVgsS0FBSyxFQUNMLGFBQWEsRUFDZCxNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUN2RSxPQUFP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QUFDO0lBQ2YsQ0FBQzs7O1lBcmhCRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtnQkFDbkMsK3NOQUFvRDs7YUFFckQ7OztZQWpDeUIsTUFBTTtZQXdCOUIsYUFBYTtZQUhiLFdBQVc7WUFGWCxhQUFhO1lBVFAsZ0JBQWdCO1lBUGhCLHFCQUFxQjtZQVkzQixvQkFBb0I7WUFWZCx1QkFBdUI7WUFhN0IsZ0JBQWdCOzs7OEJBd0JmLFNBQVMsU0FBQyxpQkFBaUI7b0JBaUIzQixLQUFLO3lCQUtMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3Rha2VVbnRpbCwgc3dpdGNoTWFwLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIFR5cGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge05hdmlnYXRpb25FeHRyYXMsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHtGb3JtQ29udHJvbCwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge09iamVjdEZvcm1Db250cm9sV3JhcHBlcn0gZnJvbSAnLi4vLi4vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0tY29udHJvbC13cmFwcGVyJztcclxuaW1wb3J0IHtQZW5kaW5nQ2hhbmdlc1NlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3BlbmRpbmctY2hhbmdlcy9wZW5kaW5nLWNoYW5nZXMuc2VydmljZSc7XHJcbmltcG9ydCB7T2JqZWN0Rm9ybUdyb3VwfSBmcm9tICcuLi8uLi9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS1ncm91cCc7XHJcbmltcG9ydCB7T2JqZWN0Rm9ybUhlbHBlclNlcnZpY2V9IGZyb20gJy4uLy4uL29iamVjdC1mb3JtL29iamVjdC1mb3JtLWhlbHBlci5zZXJ2aWNlJztcclxuaW1wb3J0IHtMb2NhbGVEYXRlUGlwZX0gZnJvbSAnLi4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvcGlwZXMvbG9jYWxlLWRhdGUucGlwZSc7XHJcbmltcG9ydCB7T2JqZWN0Rm9ybUNvbnRyb2x9IGZyb20gJy4uLy4uL29iamVjdC1mb3JtL29iamVjdC1mb3JtL29iamVjdC1mb3JtLWNvbnRyb2wnO1xyXG5pbXBvcnQge0VkaXRGb3JtLCBOb3RpZnlMaXN0LCBSZXN0cmljdGlvbn0gZnJvbSAnLi4vc3RvcmVkLXF1ZXJ5LmludGVyZmFjZSc7XHJcbmltcG9ydCB7U3RvcmVkUXVlcnlDb21wb25lbnR9IGZyb20gJy4uL3N0b3JlZC1xdWVyeS9zdG9yZWQtcXVlcnkuY29tcG9uZW50JztcclxuaW1wb3J0IHtTZWxlY3Rpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS9zZWxlY3Rpb24vc2VsZWN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQge1Vuc3Vic2NyaWJlT25EZXN0cm95fSBmcm9tICcuLi8uLi91dGlsL3Vuc3Vic2NyaWJlL3Vuc3Vic2NyaWJlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7XHJcbiAgSVN0b3JlZFF1ZXJ5UGFyYW0sXHJcbiAgU3RvcmVkUXVlcnksXHJcbiAgU3RvcmVkUXVlcmllc1NlcnZpY2UsXHJcbiAgU2VhcmNoRmlsdGVyLFxyXG4gIFNlYXJjaFF1ZXJ5LFxyXG4gIFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgU3lzdGVtU2VydmljZSxcclxuICBSYW5nZVZhbHVlLFxyXG4gIFVzZXJTZXJ2aWNlLFxyXG4gIE9yZ1JvbGUsXHJcbiAgVXRpbHMsXHJcbiAgU2VhcmNoU2VydmljZVxyXG59IGZyb20gJ0Blby1zZGsvY29yZSc7XHJcbmltcG9ydCB7VXRpbGl0aWVzU2VydmljZX0gZnJvbSAnLi4vLi4vdXRpbC9zZXJ2aWNlcy91dGlsaXRpZXMuc2VydmljZSc7XHJcbmltcG9ydCB7IGZvcmtKb2luLCBvZiwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdlby1zdG9yZWQtcXVlcnktZGV0YWlscycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3N0b3JlZC1xdWVyeS1kZXRhaWxzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zdG9yZWQtcXVlcnktZGV0YWlscy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdG9yZWRRdWVyeURldGFpbHNDb21wb25lbnQgZXh0ZW5kcyBVbnN1YnNjcmliZU9uRGVzdHJveSBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIHByaXZhdGUgRk9STV9JTlBVVF9USVRMRSA9ICdzdG9yZWRRdWVyeVRpdGxlJztcclxuICBwcml2YXRlIEZPUk1fSU5QVVRfRlVMTFRFWFQgPSAnc3RvcmVkUXVlcnlGdWxsdGV4dCc7XHJcbiAgcHJpdmF0ZSBCQVNFX1BBUkFNU19GSUVMRFMgPSBPYmplY3Qua2V5cyhTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUykubWFwKGsgPT4gU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVNba10pO1xyXG4gIHByaXZhdGUgZGF0ZVBpcGU6IExvY2FsZURhdGVQaXBlO1xyXG4gIHByaXZhdGUgcGVuZGluZ1Rhc2tJZDogc3RyaW5nO1xyXG5cclxuICBAVmlld0NoaWxkKCdzdG9yZWRRdWVyeUZvcm0nKSBzdG9yZWRRdWVyeUZvcm06IFN0b3JlZFF1ZXJ5Q29tcG9uZW50O1xyXG5cclxuICBpY29uVGl0bGVzOiBhbnk7XHJcbiAgc3RvcmVkUXVlcnk6IFN0b3JlZFF1ZXJ5O1xyXG4gIGVkaXRGb3JtOiBFZGl0Rm9ybTtcclxuICByZXN0cmljdGlvbnM6IFJlc3RyaWN0aW9uW107XHJcbiAgZWRpdGluZ1NoYXJlOiBib29sZWFuO1xyXG4gIGlzTmV3UXVlcnk6IGJvb2xlYW47XHJcbiAgaXNPd25RdWVyeTogYm9vbGVhbjtcclxuICBlbmFibGVTaGFyaW5nOiBib29sZWFuO1xyXG4gIHN5c3RlbVJvbGVzOiBPcmdSb2xlW107XHJcbiAgcm9sZXNQaWNrZXIgPSB7XHJcbiAgICB0aXRsZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc3RvcmVkcXVlcnkucm9sZXMnKSxcclxuICAgIGNvZGVzeXN0ZW06IG51bGwsXHJcbiAgICB2YWx1ZTogbnVsbFxyXG4gIH07XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHF1ZXJ5KHE6IFN0b3JlZFF1ZXJ5KSB7XHJcbiAgICB0aGlzLnNldFF1ZXJ5KHEpO1xyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpIG5vdGlmeUxpc3Q6IEV2ZW50RW1pdHRlcjxOb3RpZnlMaXN0PiA9IG5ldyBFdmVudEVtaXR0ZXI8Tm90aWZ5TGlzdD4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgICAgICAgICAgICBwcml2YXRlIHNlYXJjaFNlcnZpY2U6IFNlYXJjaFNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBzeXN0ZW1TZXJ2aWNlOiBTeXN0ZW1TZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgc2VsZWN0aW9uOiBTZWxlY3Rpb25TZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgcGVuZGluZ0NoYW5nZXM6IFBlbmRpbmdDaGFuZ2VzU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIHN0b3JlZFF1ZXJpZXNTZXJ2aWNlOiBTdG9yZWRRdWVyaWVzU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIGZvcm1IZWxwZXJTZXJ2aWNlOiBPYmplY3RGb3JtSGVscGVyU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSkge1xyXG4gICAgc3VwZXIoKTtcclxuXHJcbiAgICB0aGlzLmRhdGVQaXBlID0gbmV3IExvY2FsZURhdGVQaXBlKHRyYW5zbGF0ZSk7XHJcbiAgICB0aGlzLmZldGNoUm9sZXMoKTtcclxuICB9XHJcblxyXG4gIHNldFF1ZXJ5KHE6IFN0b3JlZFF1ZXJ5KSB7XHJcbiAgICB0aGlzLnJlc2V0RWRpdEZvcm0oKTtcclxuICAgIC8vIGdyYWIgbWV0YSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcXVlcnlcclxuICAgIHRoaXMuc3RvcmVkUXVlcnkgPSBxO1xyXG4gICAgaWYgKHEgaW5zdGFuY2VvZiBTdG9yZWRRdWVyeSkge1xyXG4gICAgICBjb25zdCB1c2VyID0gdGhpcy51c2VyU2VydmljZS5nZXRDdXJyZW50VXNlcigpO1xyXG4gICAgICB0aGlzLmlzTmV3UXVlcnkgPSBxLmlzTmV3KCk7XHJcbiAgICAgIHRoaXMuaXNPd25RdWVyeSA9IHRoaXMuaXNOZXdRdWVyeSB8fCBxLnVzZXIudG9Mb3dlckNhc2UoKSA9PT0gdXNlci5uYW1lLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIHRoaXMucmVzdHJpY3Rpb25zID0gdGhpcy5nZXRSZXN0cmljdGlvbnMoKTtcclxuICAgICAgdGhpcy5yb2xlc1BpY2tlci52YWx1ZSA9IHEucm9sZXM7XHJcbiAgICAgIHRoaXMuZW5hYmxlU2hhcmluZyA9IHVzZXIuaGFzUHJpdmlsZWdlKCdTSEFSRV9TVE9SRURfUVVFUklFUycpICYmIHRoaXMuaXNPd25RdWVyeSAmJiAhdGhpcy5pc05ld1F1ZXJ5O1xyXG5cclxuICAgICAgaWYgKHEuaXNOZXcoKSkge1xyXG4gICAgICAgIHRoaXMuc3RvcmVkUXVlcnkubmFtZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnNlYXJjaC5zdG9yZWRxdWVyaWVzLm5ldy50aXRsZScpO1xyXG4gICAgICAgIHRoaXMuZWRpdCgpO1xyXG4gICAgICAgIHRoaXMuc3RhcnRQZW5kaW5nKCk7XHJcbiAgICAgICAgdGhpcy5ub3RpZnlMaXN0LmVtaXQoe3Vuc2VsZWN0OiB0cnVlLCB1cGRhdGU6IGZhbHNlfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhcnRQZW5kaW5nKCkge1xyXG4gICAgaWYgKCF0aGlzLnBlbmRpbmdDaGFuZ2VzLmhhc1BlbmRpbmdUYXNrKHRoaXMucGVuZGluZ1Rhc2tJZCB8fCAnICcpKSB7XHJcbiAgICAgIHRoaXMucGVuZGluZ1Rhc2tJZCA9IHRoaXMucGVuZGluZ0NoYW5nZXMuc3RhcnRUYXNrKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbmlzaFBlbmRpbmcoKSB7XHJcbiAgICB0aGlzLnBlbmRpbmdDaGFuZ2VzLmZpbmlzaFRhc2sodGhpcy5wZW5kaW5nVGFza0lkKTtcclxuICB9XHJcblxyXG4gIGVkaXQoKSB7XHJcbiAgICBpZiAoIXRoaXMuZWRpdEZvcm0uZm9ybSkge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmNyZWF0ZUVkaXRGb3JtKCk7XHJcbiAgICAgICAgdGhpcy5ub3RpZnlMaXN0LmVtaXQoe3Vuc2VsZWN0OiBmYWxzZSwgdXBkYXRlOiB0cnVlfSk7XHJcbiAgICAgIH0sIDApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25Gb3JtU3RhdHVzQ2hhbmdlZChmb3JtU3RhdGUpIHtcclxuICAgIGZvcm1TdGF0ZS5kaXJ0eSA/IHRoaXMuc3RhcnRQZW5kaW5nKCkgOiB0aGlzLmZpbmlzaFBlbmRpbmcoKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZVNoYXJlRWRpdCgpIHtcclxuICAgIHRoaXMuZWRpdGluZ1NoYXJlID0gIXRoaXMuZWRpdGluZ1NoYXJlO1xyXG4gIH1cclxuXHJcbiAgc2hhcmUoKSB7XHJcbiAgICB0aGlzLnN0b3JlZFF1ZXJ5LnJvbGVzID0gdGhpcy5yb2xlc1BpY2tlci52YWx1ZTtcclxuICAgIHRoaXMuc3RvcmVkUXVlcmllc1NlcnZpY2Uuc2F2ZVN0b3JlZFF1ZXJ5KHRoaXMuc3RvcmVkUXVlcnkpLnN1YnNjcmliZShcclxuICAgICAgXyA9PiB7XHJcbiAgICAgIH0sIFV0aWxzLnRocm93KG51bGwsIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnNlYXJjaC5zdG9yZWRxdWVyeS5zYXZlLmVycm9yJykpXHJcbiAgICApO1xyXG4gICAgdGhpcy5lZGl0aW5nU2hhcmUgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGNhbmNlbFNoYXJlKCkge1xyXG4gICAgdGhpcy5yb2xlc1BpY2tlci52YWx1ZSA9IHRoaXMuc3RvcmVkUXVlcnkucm9sZXM7XHJcbiAgICB0aGlzLmVkaXRpbmdTaGFyZSA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlKCkge1xyXG4gICAgdGhpcy5zdG9yZWRRdWVyaWVzU2VydmljZVxyXG4gICAgICAucmVtb3ZlU3RvcmVkUXVlcnkodGhpcy5zdG9yZWRRdWVyeS5pZClcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5xdWVyeSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5ub3RpZnlMaXN0LmVtaXQoe3Vuc2VsZWN0OiBmYWxzZSwgdXBkYXRlOiBmYWxzZX0pO1xyXG4gICAgICB9LCBVdGlscy50aHJvdyhudWxsLCB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zZWFyY2guc3RvcmVkcXVlcnkuZGVsZXRlLmVycm9yJykpKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUZhdm9yaXRlU3RhdGUoKSB7XHJcbiAgICB0aGlzLnN0b3JlZFF1ZXJ5LmZhdm9yaXRlID0gIXRoaXMuc3RvcmVkUXVlcnkuZmF2b3JpdGU7XHJcbiAgICB0aGlzLnN0b3JlZFF1ZXJpZXNTZXJ2aWNlXHJcbiAgICAgIC5zYXZlU3RvcmVkUXVlcnkodGhpcy5zdG9yZWRRdWVyeSlcclxuICAgICAgLnN1YnNjcmliZShfID0+IHtcclxuICAgICAgfSwgVXRpbHMudGhyb3cobnVsbCwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2VhcmNoLnN0b3JlZHF1ZXJ5LnNhdmUuZXJyb3InKSkpO1xyXG4gIH1cclxuXHJcbiAgY2FuY2VsRWRpdCgpIHtcclxuICAgIHRoaXMucmVzZXRFZGl0Rm9ybSgpO1xyXG4gICAgdGhpcy5maW5pc2hQZW5kaW5nKCk7XHJcbiAgICBpZiAodGhpcy5zdG9yZWRRdWVyeS5pc05ldygpKSB7XHJcbiAgICAgIHRoaXMucXVlcnkgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgdGhpcy5ub3RpZnlMaXN0LmVtaXQoe3Vuc2VsZWN0OiBmYWxzZSwgdXBkYXRlOiBmYWxzZSwgcGF5bG9hZDogdGhpcy5zdG9yZWRRdWVyeX0pO1xyXG4gIH1cclxuXHJcbiAgc2V0UXVlcnlUb0FwcFNlYXJjaCgpIHtcclxuICAgIHRoaXMuc3RvcmVkUXVlcnlGb3JtLmxvYWQoKTtcclxuICB9XHJcblxyXG4gIGV4ZWN1dGVRdWVyeSgpIHtcclxuICAgIHRoaXMuc3RvcmVkUXVlcnlGb3JtLmV4ZWN1dGUoKTtcclxuICB9XHJcblxyXG4gIC8vIFNhdmUgdGhlIGN1cnJlbnQgc3RvcmVkIHF1ZXJ5XHJcbiAgdXBkYXRlU3RvcmVkUXVlcnkoKSB7XHJcblxyXG4gICAgY29uc3QgZm9ybURhdGEgPSB0aGlzLmdldEZvcm1EYXRhKCk7XHJcbiAgICB0aGlzLnN0b3JlZFF1ZXJ5LmZpbHRlcnMgPSB0aGlzLnN0b3JlZFF1ZXJ5LmZpbHRlcnMuZmlsdGVyKGYgPT4gfnRoaXMuQkFTRV9QQVJBTVNfRklFTERTLmluZGV4T2YoZi5wcm9wZXJ0eSkpO1xyXG4gICAgT2JqZWN0LmtleXMoZm9ybURhdGEpXHJcbiAgICAgIC5mb3JFYWNoKGsgPT4ge1xyXG4gICAgICAgIGlmIChrID09PSB0aGlzLkZPUk1fSU5QVVRfVElUTEUpIHtcclxuICAgICAgICAgIHRoaXMuc3RvcmVkUXVlcnkubmFtZSA9IGZvcm1EYXRhW2tdO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoayA9PT0gdGhpcy5GT1JNX0lOUFVUX0ZVTExURVhUKSB7XHJcbiAgICAgICAgICB0aGlzLnN0b3JlZFF1ZXJ5LnRlcm0gPSBmb3JtRGF0YVtrXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbGV0IGZpbHRlcnM6IFNlYXJjaEZpbHRlcltdID0gdGhpcy5zZWFyY2hTZXJ2aWNlLmdldFNlYXJjaEZpbHRlcih0aGlzLnN0b3JlZFF1ZXJ5LnR5cGVzLCBrLCBmb3JtRGF0YVtrXSk7XHJcbiAgICAgICAgICBmaWx0ZXJzLmZvckVhY2goZiA9PiB0aGlzLnN0b3JlZFF1ZXJ5LmFkZEZpbHRlcihmKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLnN0b3JlZFF1ZXJpZXNTZXJ2aWNlXHJcbiAgICAgIC5zYXZlU3RvcmVkUXVlcnkodGhpcy5zdG9yZWRRdWVyeSlcclxuICAgICAgLnN1YnNjcmliZSh1cGRhdGVkU3RvcmVkUXVlcnkgPT4ge1xyXG4gICAgICAgIHRoaXMucXVlcnkgPSB1cGRhdGVkU3RvcmVkUXVlcnk7XHJcbiAgICAgICAgdGhpcy5yZXNldEVkaXRGb3JtKCk7XHJcbiAgICAgICAgdGhpcy5maW5pc2hQZW5kaW5nKCk7XHJcbiAgICAgICAgdGhpcy5ub3RpZnlMaXN0LmVtaXQoe3Vuc2VsZWN0OiBmYWxzZSwgdXBkYXRlOiBmYWxzZSwgcGF5bG9hZDogdXBkYXRlZFN0b3JlZFF1ZXJ5fSk7XHJcbiAgICAgIH0sIFV0aWxzLnRocm93KG51bGwsIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnNlYXJjaC5zdG9yZWRxdWVyeS5zYXZlLmVycm9yJykpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRvZ2dsZSBmb3JtIGVsZW1lbnRzIHRvIGJlIGEgZHluYW1pYyBwYXJhbWV0ZXIgb3Igbm90XHJcbiAgICogQHBhcmFtIGV2ZW50XHJcbiAgICovXHJcbiAgcGFyYW1ldGVyQ2hhbmdlZChldmVudDogeyBjb250cm9sOiBzdHJpbmcsIHZhbHVlOiBib29sZWFuIH0pIHtcclxuXHJcbiAgICBsZXQgbSA9IHRoaXMuc3RvcmVkUXVlcnkucGFyYW1ldGVyLmZpbmQocCA9PiBwLnFuYW1lID09PSBldmVudC5jb250cm9sKTtcclxuICAgIGlmIChtICYmICFldmVudC52YWx1ZSkge1xyXG4gICAgICAvLyByZW1vdmUgZXhpc3RpbmcgcGFyYW1ldGVyXHJcbiAgICAgIHRoaXMuc3RvcmVkUXVlcnkucGFyYW1ldGVyID0gdGhpcy5zdG9yZWRRdWVyeS5wYXJhbWV0ZXIuZmlsdGVyKHAgPT4gcC5xbmFtZSAhPT0gZXZlbnQuY29udHJvbCk7XHJcbiAgICB9IGVsc2UgaWYgKCFtICYmIGV2ZW50LnZhbHVlKSB7XHJcbiAgICAgIC8vIGFkZCBwYXJhbWV0ZXIgZWxlbWVudFxyXG4gICAgICBsZXQgcGFyYW0gPSB0aGlzLmZvcm1GaWVsZFRvUGFyYW1ldGVyKGV2ZW50LmNvbnRyb2wpO1xyXG4gICAgICBpZiAocGFyYW0pIHtcclxuICAgICAgICB0aGlzLnN0b3JlZFF1ZXJ5LnBhcmFtZXRlci5wdXNoKHBhcmFtKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGb3JtRGF0YSgpIHtcclxuXHJcbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gT2JqZWN0LmtleXModGhpcy5lZGl0Rm9ybS5mb3JtLnZhbHVlKTtcclxuICAgIGxldCBkYXRhID0ge307XHJcblxyXG5cclxuICAgIHByb3BlcnRpZXMuZm9yRWFjaChwcm9wZXJ0eSA9PiB7XHJcblxyXG4gICAgICBjb25zdCBmYzogT2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyID0gdGhpcy5lZGl0Rm9ybS5mb3JtLmNvbnRyb2xzW3Byb3BlcnR5XSBhcyBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXI7XHJcbiAgICAgIGxldCBmb3JtRWxlbWVudDtcclxuICAgICAgaWYgKGZjLmNvbnRyb2xzICYmIGZjLmNvbnRyb2xzW3Byb3BlcnR5XSkge1xyXG4gICAgICAgIGNvbnN0IGZlOiBPYmplY3RGb3JtQ29udHJvbCA9IGZjLmNvbnRyb2xzW3Byb3BlcnR5XSBhcyBPYmplY3RGb3JtQ29udHJvbDtcclxuICAgICAgICBmb3JtRWxlbWVudCA9IGZlLl9lb0Zvcm1FbGVtZW50O1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChmb3JtRWxlbWVudCAmJiBmb3JtRWxlbWVudC5pc05vdFNldFZhbHVlKSB7XHJcbiAgICAgICAgZGF0YVtwcm9wZXJ0eV0gPSBudWxsO1xyXG4gICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICBzd2l0Y2ggKHByb3BlcnR5KSB7XHJcbiAgICAgICAgICBjYXNlIHRoaXMuRk9STV9JTlBVVF9USVRMRToge1xyXG4gICAgICAgICAgICBkYXRhW3Byb3BlcnR5XSA9IHRoaXMuZWRpdEZvcm0uZm9ybS52YWx1ZVtwcm9wZXJ0eV0gfHwgJyc7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2FzZSB0aGlzLkZPUk1fSU5QVVRfRlVMTFRFWFQ6IHtcclxuICAgICAgICAgICAgZGF0YVtwcm9wZXJ0eV0gPSB0aGlzLmVkaXRGb3JtLmZvcm0udmFsdWVbcHJvcGVydHldW1N0b3JlZFF1ZXJpZXNTZXJ2aWNlLkZVTExURVhUXSB8fCAnJztcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBkZWZhdWx0OiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHYgPSB0aGlzLmVkaXRGb3JtLmZvcm0udmFsdWVbcHJvcGVydHldW3Byb3BlcnR5XTtcclxuICAgICAgICAgICAgaWYgKCFVdGlsaXRpZXNTZXJ2aWNlLmlzRW1wdHkodikpIHtcclxuICAgICAgICAgICAgICBkYXRhW3Byb3BlcnR5XSA9IHY7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgYSBkeW5hbWljIHN0b3JlZCBxdWVyeSBwYXJhbWV0ZXIgZm9yIGEgZm9ybSBlbGVtZW50XHJcbiAgICogQHBhcmFtIHFuYW1lIFRoZSBmb3JtIGVsZW1lbnRzIHFuYW1lXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICBwcml2YXRlIGZvcm1GaWVsZFRvUGFyYW1ldGVyKHFuYW1lOiBzdHJpbmcpOiBJU3RvcmVkUXVlcnlQYXJhbSB7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgbGV0IHBhcmFtOiBJU3RvcmVkUXVlcnlQYXJhbTtcclxuICAgICAgLy8gc3BlY2lhbCBoYW5kbGluZyBmb3IgZnVsbHRleHQgZmllbGRzXHJcbiAgICAgIGlmIChxbmFtZSA9PT0gU3RvcmVkUXVlcmllc1NlcnZpY2UuRlVMTFRFWFQpIHtcclxuICAgICAgICBwYXJhbSA9IHtcclxuICAgICAgICAgIHFuYW1lOiBxbmFtZSxcclxuICAgICAgICAgIHR5cGU6IHFuYW1lLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgZmMgPSAoKHRoaXMuZWRpdEZvcm0uZm9ybS5jb250cm9sc1txbmFtZV0gYXMgT2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyKS5jb250cm9sc1txbmFtZV0gYXMgT2JqZWN0Rm9ybUNvbnRyb2wpO1xyXG4gICAgICAgIGNvbnN0IGZlID0gZmMuX2VvRm9ybUVsZW1lbnQ7XHJcbiAgICAgICAgcGFyYW0gPSB7XHJcbiAgICAgICAgICBxbmFtZTogZmUucW5hbWUsXHJcbiAgICAgICAgICB0eXBlOiBmZS50eXBlXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gcGFyYW07XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXNldEVkaXRGb3JtKCkge1xyXG4gICAgdGhpcy5lZGl0Rm9ybSA9IHtcclxuICAgICAgZm9ybTogbnVsbCxcclxuICAgICAgZnVsbHRleHRGb3JtQ29udHJvbDogbnVsbCxcclxuICAgICAgY29udHJvbHM6IFtdLFxyXG4gICAgICBjb250ZXh0Q29udHJvbHM6IFtdXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgb25Gb3JtQ2hhbmdlcygpOiB2b2lkIHtcclxuICAgIHRoaXMuZWRpdEZvcm1cclxuICAgICAgLmZvcm1cclxuICAgICAgLnZhbHVlQ2hhbmdlc1xyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMub25Gb3JtU3RhdHVzQ2hhbmdlZCh0aGlzLmVkaXRGb3JtLmZvcm0pKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlRWRpdEZvcm0oKSB7XHJcblxyXG4gICAgdGhpcy5yZXNldEVkaXRGb3JtKCk7XHJcbiAgICB0aGlzLnNldHVwRm9ybUNvbnRyb2xzKCkuc3Vic2NyaWJlKF8gPT4ge1xyXG5cclxuICAgICAgbGV0IGZvcm0gPSBuZXcgT2JqZWN0Rm9ybUdyb3VwKHt9KTtcclxuICAgICAgbGV0IGZjVGl0bGUgPSBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICBmY1RpdGxlLnNldFZhbHVlKHRoaXMuc3RvcmVkUXVlcnkubmFtZSk7XHJcblxyXG4gICAgICBsZXQgZmNGdWxsdGV4dCA9IHRoaXMudG9Gb3JtQ29udHJvbCh0aGlzLnN0b3JlZFF1ZXJpZXNTZXJ2aWNlLmdldEZ1bGx0ZXh0Rm9ybUVsZW1lbnQoXHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc3RvcmVkcXVlcnkuc2VhcmNoLnRlcm0nKSxcclxuICAgICAgICB0aGlzLnN0b3JlZFF1ZXJ5LnRlcm1cclxuICAgICAgKSk7XHJcbiAgICAgIHRoaXMuZWRpdEZvcm0uZnVsbHRleHRGb3JtQ29udHJvbCA9IGZjRnVsbHRleHQ7XHJcblxyXG4gICAgICAvLyBhZGQgdGl0bGUgYW5kIGZ1bGx0ZXh0IGZpZWxkXHJcbiAgICAgIGZvcm0uYWRkQ29udHJvbCh0aGlzLkZPUk1fSU5QVVRfVElUTEUsIGZjVGl0bGUpO1xyXG4gICAgICBmb3JtLmFkZENvbnRyb2wodGhpcy5GT1JNX0lOUFVUX0ZVTExURVhULCBmY0Z1bGx0ZXh0KTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmVkaXRGb3JtLmNvbnRyb2xzLmxlbmd0aCB8fCB0aGlzLmVkaXRGb3JtLmNvbnRleHRDb250cm9scy5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLmVkaXRGb3JtLmNvbnRyb2xzXHJcbiAgICAgICAgICAuZm9yRWFjaCgoYykgPT4gZm9ybS5hZGRDb250cm9sKGMuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lLCBjKSk7XHJcbiAgICAgICAgdGhpcy5lZGl0Rm9ybS5jb250ZXh0Q29udHJvbHNcclxuICAgICAgICAgIC5mb3JFYWNoKChjKSA9PiBmb3JtLmFkZENvbnRyb2woYy5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWUsIGMpKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5lZGl0Rm9ybS5mb3JtID0gZm9ybTtcclxuICAgICAgdGhpcy5vbkZvcm1DaGFuZ2VzKCk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXR1cEZvcm1Db250cm9scygpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgdGFza3MgPSBbXTtcclxuICAgICAvLyBzZXR0aW5nIHVwIG9iamVjdCB0eXBlIGZvcm0gb25seSBtYWtlcyBzZW5zZSB3aXRoIG9uZSB0YXJnZXQgdHlwZVxyXG4gICAgaWYgKHRoaXMuc3RvcmVkUXVlcnkudHlwZXMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgIHRhc2tzLnB1c2godGhpcy5zeXN0ZW1TZXJ2aWNlLmdldEZvcm1FbGVtZW50c0Zyb21Gb3JtTW9kZWwodGhpcy5zdG9yZWRRdWVyeS50eXBlc1swXS5xbmFtZSwgJ1NFQVJDSCcpLnBpcGUoXHJcbiAgICAgICAgdGFwKChlbGVtZW50czogYW55W10pID0+IHtcclxuICAgICAgICAgIGVsZW1lbnRzLmZvckVhY2goZSA9PiB7XHJcbiAgICAgICAgICAgIC8vIHByZXZlbnQgdGFibGVzIGFuZCBiaW5hcnkgdHlwZXMgZnJvbSBiZWluZyByZW5kZXJlZCBpbiB0aGUgc3RvcmVkIHF1ZXJ5IGZvcm1cclxuICAgICAgICAgICAgaWYgKGUudHlwZSAhPT0gJ0JJTkFSWScpIHtcclxuICAgICAgICAgICAgICBpZiAoZS5yZXF1aXJlZCkge1xyXG4gICAgICAgICAgICAgICAgZS5yZXF1aXJlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAoZS5yZWFkb25seSkge1xyXG4gICAgICAgICAgICAgICAgZS5yZWFkb25seSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBjb25zdCBmYyA9IHRoaXMudG9Gb3JtQ29udHJvbChlKTtcclxuICAgICAgICAgICAgICBpZiAoZmMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZWRpdEZvcm0uY29udHJvbHMucHVzaChmYyk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH0pXHJcbiAgICAgICkpXHJcbiAgICB9XHJcbiAgICAgLy8gYWRkIGNvbnRleHQgZm9ybSBjb250cm9scyBhcyB3ZWxsXHJcbiAgICBpZiAodGhpcy5zdG9yZWRRdWVyeS5jb250ZXh0Rm9sZGVyVHlwZXMubGVuZ3RoKSB7XHJcbiAgICAgIHRhc2tzLnB1c2godGhpcy5zeXN0ZW1TZXJ2aWNlLmdldEZvcm1FbGVtZW50c0Zyb21Gb3JtTW9kZWwodGhpcy5zdG9yZWRRdWVyeS5jb250ZXh0Rm9sZGVyVHlwZXNbMF0ucW5hbWUsICdTRUFSQ0gnLCB0cnVlKS5waXBlKFxyXG4gICAgICAgIHRhcCgoZWxlbWVudHM6IGFueVtdKSA9PiB7XHJcbiAgICAgICAgICBlbGVtZW50cy5mb3JFYWNoKGUgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBmYyA9IHRoaXMudG9Gb3JtQ29udHJvbChlKTtcclxuICAgICAgICAgICAgaWYgKGZjKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5lZGl0Rm9ybS5jb250ZXh0Q29udHJvbHMucHVzaChmYyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuICAgICAgKSlcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGFza3MubGVuZ3RoID8gZm9ya0pvaW4odGFza3MpIDogb2YodGFza3MpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmZXRjaFJvbGVzKCkge1xyXG4gICAgaWYgKCF0aGlzLnN5c3RlbVJvbGVzIHx8IHRoaXMuc3lzdGVtUm9sZXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMuc3lzdGVtU2VydmljZVxyXG4gICAgICAgIC5nZXRSb2xlcygpXHJcbiAgICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnN5c3RlbVJvbGVzID0gcmVzO1xyXG4gICAgICAgICAgICB0aGlzLnJvbGVzUGlja2VyLmNvZGVzeXN0ZW0gPSB7XHJcbiAgICAgICAgICAgICAgZW50cmllczogdGhpcy5zeXN0ZW1Sb2xlcy5tYXAocm9sZSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgaWQ6IHJvbGUuaWQsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogcm9sZS5uYW1lLFxyXG4gICAgICAgICAgICAgICAgZGVmYXVsdHJlcHJlc2VudGF0aW9uOiByb2xlLm5hbWUsXHJcbiAgICAgICAgICAgICAgICBkYXRhOiByb2xlLm5hbWVcclxuICAgICAgICAgICAgICB9KSkuc29ydChVdGlscy5zb3J0VmFsdWVzKCdsYWJlbCcpKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0UmVzdHJpY3Rpb25zKCk6IFJlc3RyaWN0aW9uW10ge1xyXG4gICAgbGV0IHJlc3RyaWN0aW9uczogUmVzdHJpY3Rpb25bXSA9IFtdO1xyXG5cclxuICAgIC8vIHR5cGUgcmVzdHJpY3Rpb25cclxuICAgIGlmICh0aGlzLnN0b3JlZFF1ZXJ5LnR5cGVzICYmIHRoaXMuc3RvcmVkUXVlcnkudHlwZXMubGVuZ3RoKSB7XHJcbiAgICAgIHJlc3RyaWN0aW9ucy5wdXNoKHtcclxuICAgICAgICBmaWVsZDogU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuVFlQRSxcclxuICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc3RvcmVkcXVlcnkucmVzdHJpY3Rpb24udHlwZScpLFxyXG4gICAgICAgIGl0ZW1zOiB0aGlzLnN0b3JlZFF1ZXJ5LnR5cGVzLm1hcCh0ID0+IHQubGFiZWwpXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGFkZCBiYXNlIHBhcmFtcyByZXN0cmljdGlvbnNcclxuICAgICh0aGlzLnN0b3JlZFF1ZXJ5LmZpbHRlcnMgfHwgW10pLmZvckVhY2goZmlsdGVyID0+IHtcclxuICAgICAgaWYgKGZpbHRlciAmJiB+dGhpcy5CQVNFX1BBUkFNU19GSUVMRFMuaW5kZXhPZihmaWx0ZXIucHJvcGVydHkpKSB7XHJcblxyXG4gICAgICAgIGNvbnN0IGZpZWxkID0gZmlsdGVyLnByb3BlcnR5O1xyXG4gICAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc3RvcmVkcXVlcnkucmVzdHJpY3Rpb24uJyArIGZpZWxkKTtcclxuXHJcbiAgICAgICAgc3dpdGNoIChmaWVsZCkge1xyXG4gICAgICAgICAgY2FzZSBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5NSU1FVFlQRUdST1VQOlxyXG4gICAgICAgICAgICByZXN0cmljdGlvbnMucHVzaCh7XHJcbiAgICAgICAgICAgICAgZmllbGQsIGxhYmVsLCBpdGVtczogQXJyYXkuaXNBcnJheShmaWx0ZXIuZmlyc3RWYWx1ZSkgPyBmaWx0ZXIuZmlyc3RWYWx1ZSA6IFtmaWx0ZXIuZmlyc3RWYWx1ZV1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5GSUxFTkFNRTpcclxuICAgICAgICAgICAgcmVzdHJpY3Rpb25zLnB1c2goe1xyXG4gICAgICAgICAgICAgIGZpZWxkLCBsYWJlbCwgaXRlbXM6IFtmaWx0ZXIuZmlyc3RWYWx1ZV1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5GSUxFU0laRTpcclxuICAgICAgICAgICAgcmVzdHJpY3Rpb25zLnB1c2goe1xyXG4gICAgICAgICAgICAgIGZpZWxkLCBsYWJlbCwgaXRlbXM6IFt0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zZWFyY2guYWdnLmZpbGVzaXplLicgKyBmaWx0ZXIuZmlyc3RWYWx1ZSldXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuQ1JFQVRFRDpcclxuICAgICAgICAgIGNhc2UgU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuTU9ESUZJRUQ6XHJcbiAgICAgICAgICAgIHJlc3RyaWN0aW9ucy5wdXNoKHtcclxuICAgICAgICAgICAgICBmaWVsZCwgbGFiZWwsIGl0ZW1zOiBbdGhpcy5jcmVhdGVEYXRlUmVzdHJpY3Rpb24oZmlsdGVyKV1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5DUkVBVE9SOlxyXG4gICAgICAgICAgY2FzZSBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5NT0RJRklFUjpcclxuICAgICAgICAgICAgdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldE9yZ2FuaXphdGlvbk9iamVjdHMoZmlsdGVyLmZpcnN0VmFsdWUpXHJcbiAgICAgICAgICAgICAgLnN1YnNjcmliZShvcmdVc2VycyA9PiByZXN0cmljdGlvbnMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBmaWVsZCwgbGFiZWwsIGl0ZW1zOiBvcmdVc2Vycy5tYXAodSA9PiB1LnRpdGxlKVxyXG4gICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHJlc3RyaWN0aW9ucztcclxuICB9XHJcblxyXG4gIGNyZWF0ZURhdGVSZXN0cmljdGlvbihmaWx0ZXI6IFNlYXJjaEZpbHRlcikge1xyXG4gICAgc3dpdGNoIChmaWx0ZXIub3BlcmF0b3IpIHtcclxuICAgICAgY2FzZSBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuUkFOR0U6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYGVvLnNlYXJjaC5hZ2cudGltZS4ke2ZpbHRlci5maXJzdFZhbHVlfWApO1xyXG4gICAgICBjYXNlIFNlYXJjaEZpbHRlci5PUEVSQVRPUi5FUVVBTDpcclxuICAgICAgICByZXR1cm4gYD0gJHt0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShmaWx0ZXIuZmlyc3RWYWx1ZSwgJ2VvU2hvcnREYXRlJyl9YDtcclxuICAgICAgY2FzZSBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuSU5URVJWQUxfSU5DTFVERV9CT1RIOlxyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShmaWx0ZXIuZmlyc3RWYWx1ZSwgJ2VvU2hvcnREYXRlJyl9IC0gJHt0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShmaWx0ZXIuc2Vjb25kVmFsdWUsICdlb1Nob3J0RGF0ZScpfWA7XHJcbiAgICAgIGNhc2UgU2VhcmNoRmlsdGVyLk9QRVJBVE9SLkdSRUFURVJfT1JfRVFVQUw6XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnNlYXJjaC5hZ2cudGltZS5zcGFuLnNpbmNlJyl9ICR7dGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZmlsdGVyLmZpcnN0VmFsdWUsICdlb1Nob3J0RGF0ZScpfWA7XHJcbiAgICAgIGNhc2UgU2VhcmNoRmlsdGVyLk9QRVJBVE9SLkxFU1NfT1JfRVFVQUw6XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnNlYXJjaC5hZ2cudGltZS5zcGFuLnVudGlsJyl9ICR7dGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZmlsdGVyLmZpcnN0VmFsdWUsICdlb1Nob3J0RGF0ZScpfWA7XHJcbiAgICAgIGRlZmF1bHQgOlxyXG4gICAgICAgIHJldHVybiBgKCR7ZmlsdGVyLm9wZXJhdG9yfSkgJHt0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShmaWx0ZXIuZmlyc3RWYWx1ZSwgJ2VvU2hvcnREYXRlJyl9YDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBmb3JtIGNvbnRyb2wgZnJvbSBhIGdpdmVuIGZvcm0gZWxlbWVudFxyXG4gICAqIEBwYXJhbSBmb3JtRWxlbWVudFxyXG4gICAqIEByZXR1cm5zXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB0b0Zvcm1Db250cm9sKGZvcm1FbGVtZW50KTogT2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyIHtcclxuXHJcbiAgICAvLyB0aGUgYG5hbWVgIHByb3BlcnR5IG9mIHN0b3JlZCBxdWVyeSBmb3JtIGVsZW1lbnQgaGFzIHRvIGJlIGBxbmFtZWAgb2YgZm9ybSBlbGVtZW50LFxyXG4gICAgLy8gYmVjYXVzZSB3ZSBtYXkgY29tYmluZSBtdWx0aXBsZSBmb3JtcyAoY29udGV4dCBmb3JtKSBhbmQgaW4gdGhpcyBjYXNlIHRoZXJlIG1heVxyXG4gICAgLy8gYmUgY29uZmxpY3RzIGluIG5hbWluZ3NcclxuICAgIGZvcm1FbGVtZW50Lm5hbWUgPSBmb3JtRWxlbWVudC5xbmFtZTtcclxuXHJcbiAgICBpZihmb3JtRWxlbWVudC50eXBlID09PSAnVEFCTEUnKXtcclxuICAgICAgbGV0IGZpbHRlcnMgPSB0aGlzLnN0b3JlZFF1ZXJ5LmdldFRhYmxlRmlsdGVycyhmb3JtRWxlbWVudC5xbmFtZSk7XHJcbiAgICAgIGlmKGZpbHRlcnMgJiYgZmlsdGVycy5sZW5ndGgpe1xyXG4gICAgICAgIGZvcm1FbGVtZW50LnZhbHVlID0gdGhpcy5zZWFyY2hTZXJ2aWNlLnRhYmxlRmlsdGVyc1RvRWxlbWVudFZhbHVlKGZpbHRlcnMsIGZvcm1FbGVtZW50LmVsZW1lbnRzKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBmb3JtRWxlbWVudC52YWx1ZSA9IFt7fV07XHJcbiAgICAgICAgZGVsZXRlIGZvcm1FbGVtZW50LmlzTm90U2V0VmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH1lbHNle1xyXG4gICAgICAvLyBncmFiIHZhbHVlIGZvciB0aGUgY29udHJvbCBmcm9tIGNvcnJlc3BvbmRpbmcgcXVlcnkgZmlsdGVyc1xyXG4gICAgICBsZXQgZmlsdGVyID0gdGhpcy5zdG9yZWRRdWVyeS5nZXRGaWx0ZXIoZm9ybUVsZW1lbnQucW5hbWUpO1xyXG4gICAgICAvLyB3ZSBtYXkgaGF2ZSBwYXJhbXMgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIHF1ZXJpZXMgZmlsdGVycy4gVGhpcyBtYXkgYmUgdGhlXHJcbiAgICAgIC8vIGNhc2Ugd2hlbiB3ZSBtYXJrIGZvcm0gZWxlbWVudHMgYXMgZHluYW1pYyBmaWVsZHMgd2l0aG91dCBwcm92aWRpbmcgYSB2YWx1ZVxyXG4gICAgICBpZiAoZmlsdGVyKSB7XHJcbiAgXHJcbiAgICAgICAgLy8gZmlsdGVyIHRvIGhhdmUgbm8gdmFsdWVcclxuICAgICAgICBpZiAoZmlsdGVyLm9wZXJhdG9yID09PSBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuRVFVQUwgJiYgZmlsdGVyLmZpcnN0VmFsdWUgPT09IG51bGwpIHtcclxuICAgICAgICAgIGZvcm1FbGVtZW50LmlzTm90U2V0VmFsdWUgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBkZWxldGUgZm9ybUVsZW1lbnQuaXNOb3RTZXRWYWx1ZTtcclxuICAgICAgICB9XHJcbiAgXHJcbiAgICAgICAgZm9ybUVsZW1lbnQudmFsdWUgPSB0aGlzLnNlYXJjaFNlcnZpY2UuZmlsdGVyVG9FbGVtZW50VmFsdWUoXHJcbiAgICAgICAgICB0aGlzLnN0b3JlZFF1ZXJ5LmdldEZpbHRlcihmb3JtRWxlbWVudC5xbmFtZSksXHJcbiAgICAgICAgICBmb3JtRWxlbWVudC50eXBlXHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIGlmIChmb3JtRWxlbWVudC5xbmFtZSAhPT0gU3RvcmVkUXVlcmllc1NlcnZpY2UuRlVMTFRFWFQpIHtcclxuICAgICAgICBmb3JtRWxlbWVudC52YWx1ZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICBkZWxldGUgZm9ybUVsZW1lbnQuaXNOb3RTZXRWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gc3luYyB3aXRoIHBhcmFtc1xyXG4gICAgY29uc3QgbWF0Y2g6IGFueSA9IHRoaXMuc3RvcmVkUXVlcnkucGFyYW1ldGVyLmZpbmQocGFyYW0gPT4ge1xyXG4gICAgICByZXR1cm4gKHBhcmFtLnFuYW1lID09PSBmb3JtRWxlbWVudC5xbmFtZSkgfHwgKHBhcmFtLnR5cGUgPT09IFN0b3JlZFF1ZXJpZXNTZXJ2aWNlLkZVTExURVhUICYmIGZvcm1FbGVtZW50LnFuYW1lID09PSBTdG9yZWRRdWVyaWVzU2VydmljZS5GVUxMVEVYVClcclxuICAgIH0pO1xyXG4gICAgLy8gZXZlcnkgZmllbGQgdGhhdCBpcyBwYXJ0IG9mIHRoZSBwYXJhbXMgaXMgc3VwcG9zZWQgdG8gYmUgZHluYW1pY1xyXG4gICAgZm9ybUVsZW1lbnQuX2R5bmFtaWMgPSAhIW1hdGNoO1xyXG5cclxuICAgIC8vIGNyZWF0ZSBhY3R1YWwgZm9ybSBjb250cm9sIHRoYXQgY291bGQgYmUgdXNlZCB3aXRoXHJcbiAgICAvLyBGb3JtRWxlbWVudENvbXBvbmVudCB0byB0aGVuIHJlbmRlciBmb3IgZWxlbWVudHNcclxuICAgIC8vIHdyYXBwZXIgbWF5IGJlIG51bGwgaW4gY2FzZSBvZiBhbiBlcnJvclxyXG4gICAgcmV0dXJuIHRoaXMuZm9ybUhlbHBlclNlcnZpY2UuZWxlbWVudFRvRm9ybUNvbnRyb2woZm9ybUVsZW1lbnQsICdTRUFSQ0gnKTtcclxuICB9XHJcblxyXG4gIG9uU3RvcmVkUXVlcnlMb2FkZWQoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbe291dGxldHM6IHttb2RhbDogJ3NlYXJjaCd9fV0pO1xyXG4gIH1cclxuXHJcbiAgb25TdG9yZWRRdWVyeUV4ZWN1dGUoZXZ0KSB7XHJcbiAgICBjb25zdCB1cmlQYXJhbSA9IGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShldnQucXVlcnlKc29uKSk7XHJcbiAgICBjb25zdCB1cmlQYXJhbVF1ZXJ5OiBOYXZpZ2F0aW9uRXh0cmFzID0ge3F1ZXJ5UGFyYW1zOiB7J3F1ZXJ5JzogdXJpUGFyYW19fTtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3Jlc3VsdCddLCB1cmlQYXJhbVF1ZXJ5KTtcclxuICB9XHJcblxyXG4gIHNldEljb25UaXRsZXMoKSB7XHJcbiAgICB0aGlzLmljb25UaXRsZXMgPSB7XHJcbiAgICAgIHNoYXJlOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zdG9yZWRxdWVyeS5zaGFyZS50aXRsZScpLFxyXG4gICAgICBzaGFyZWQ6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnN0b3JlZHF1ZXJ5LnNoYXJlZGZvci50aXRsZScpLFxyXG4gICAgICBmYXZvcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc3RvcmVkcXVlcnkuZmF2b3IudGl0bGUnKSxcclxuICAgICAgZmF2b3JlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc3RvcmVkcXVlcnkuZmF2b3JlZGZvci50aXRsZScpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnNlbGVjdGlvbi5mb2N1cyRcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuY29tcG9uZW50RGVzdHJveWVkJCkpXHJcbiAgICAgIC5zdWJzY3JpYmUocSA9PiB7XHJcbiAgICAgICAgdGhpcy5xdWVyeSA9IHE7XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5zZXRJY29uVGl0bGVzKCk7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5UU5hbWUoaW5kZXgsIGl0ZW0pIHtcclxuICAgIHJldHVybiBpdGVtLnFuYW1lO1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeUluZGV4KGluZGV4LCBpdGVtKSB7XHJcbiAgICByZXR1cm4gaW5kZXg7XHJcbiAgfVxyXG59XHJcbiJdfQ==
490
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmVkLXF1ZXJ5LWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvc3RvcmVkLXF1ZXJ5L3N0b3JlZC1xdWVyeS1kZXRhaWxzL3N0b3JlZC1xdWVyeS1kZXRhaWxzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFhLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFPLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBbUIsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RCxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxvRUFBb0UsQ0FBQztBQUN6RyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0saURBQWlELENBQUM7QUFDaEYsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sOENBQThDLENBQUM7QUFDckYsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBSWpGLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHdEQUF3RCxDQUFDO0FBQ3hGLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQ2xGLE9BQU8sRUFFTCxXQUFXLEVBQ1gsb0JBQW9CLEVBQ3BCLFlBQVksRUFDWixXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLGFBQWEsRUFFYixXQUFXLEVBRVgsS0FBSyxFQUNMLGFBQWEsRUFFZCxNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUN2RSxPQUFP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O1FBQ0wsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBSyxFQUFFLElBQUk7UUFDdEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBSyxFQUFFLElBQUk7UUFDdEIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzs7WUE1aEJGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUseUJBQXlCO2dCQUNuQyx3MU5BQW9EOzthQUVyRDs7O1lBbEN5QixNQUFNO1lBd0I5QixhQUFhO1lBSGIsV0FBVztZQUZYLGFBQWE7WUFUUCxnQkFBZ0I7WUFQaEIscUJBQXFCO1lBWTNCLG9CQUFvQjtZQVZkLHVCQUF1QjtZQWE3QixnQkFBZ0I7Ozs4QkF5QmYsU0FBUyxTQUFDLGlCQUFpQjtvQkFrQjNCLEtBQUs7eUJBS0wsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7dGFrZVVudGlsLCBzd2l0Y2hNYXAsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkLCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgVHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7TmF2aWdhdGlvbkV4dHJhcywgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQge0Zvcm1Db250cm9sLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7T2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyfSBmcm9tICcuLi8uLi9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS1jb250cm9sLXdyYXBwZXInO1xyXG5pbXBvcnQge1BlbmRpbmdDaGFuZ2VzU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvcGVuZGluZy1jaGFuZ2VzL3BlbmRpbmctY2hhbmdlcy5zZXJ2aWNlJztcclxuaW1wb3J0IHtPYmplY3RGb3JtR3JvdXB9IGZyb20gJy4uLy4uL29iamVjdC1mb3JtL29iamVjdC1mb3JtL29iamVjdC1mb3JtLWdyb3VwJztcclxuaW1wb3J0IHtPYmplY3RGb3JtSGVscGVyU2VydmljZX0gZnJvbSAnLi4vLi4vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0taGVscGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQge0xvY2FsZURhdGVQaXBlfSBmcm9tICcuLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS9waXBlcy9sb2NhbGUtZGF0ZS5waXBlJztcclxuaW1wb3J0IHtPYmplY3RGb3JtQ29udHJvbH0gZnJvbSAnLi4vLi4vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0tY29udHJvbCc7XHJcbmltcG9ydCB7RWRpdEZvcm0sIE5vdGlmeUxpc3QsIFJlc3RyaWN0aW9ufSBmcm9tICcuLi9zdG9yZWQtcXVlcnkuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtTdG9yZWRRdWVyeUNvbXBvbmVudH0gZnJvbSAnLi4vc3RvcmVkLXF1ZXJ5L3N0b3JlZC1xdWVyeS5jb21wb25lbnQnO1xyXG5pbXBvcnQge1NlbGVjdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3NlbGVjdGlvbi9zZWxlY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7VW5zdWJzY3JpYmVPbkRlc3Ryb3l9IGZyb20gJy4uLy4uL3V0aWwvdW5zdWJzY3JpYmUvdW5zdWJzY3JpYmUuY29tcG9uZW50JztcclxuaW1wb3J0IHtcclxuICBJU3RvcmVkUXVlcnlQYXJhbSxcclxuICBTdG9yZWRRdWVyeSxcclxuICBTdG9yZWRRdWVyaWVzU2VydmljZSxcclxuICBTZWFyY2hGaWx0ZXIsXHJcbiAgU2VhcmNoUXVlcnksXHJcbiAgVHJhbnNsYXRlU2VydmljZSxcclxuICBTeXN0ZW1TZXJ2aWNlLFxyXG4gIFJhbmdlVmFsdWUsXHJcbiAgVXNlclNlcnZpY2UsXHJcbiAgT3JnUm9sZSxcclxuICBVdGlscyxcclxuICBTZWFyY2hTZXJ2aWNlLFxyXG4gIFF1ZXJ5U2NvcGVcclxufSBmcm9tICdAZW8tc2RrL2NvcmUnO1xyXG5pbXBvcnQge1V0aWxpdGllc1NlcnZpY2V9IGZyb20gJy4uLy4uL3V0aWwvc2VydmljZXMvdXRpbGl0aWVzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBmb3JrSm9pbiwgb2YsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZW8tc3RvcmVkLXF1ZXJ5LWRldGFpbHMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zdG9yZWQtcXVlcnktZGV0YWlscy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc3RvcmVkLXF1ZXJ5LWRldGFpbHMuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3RvcmVkUXVlcnlEZXRhaWxzQ29tcG9uZW50IGV4dGVuZHMgVW5zdWJzY3JpYmVPbkRlc3Ryb3kgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBwcml2YXRlIEZPUk1fSU5QVVRfVElUTEUgPSAnc3RvcmVkUXVlcnlUaXRsZSc7XHJcbiAgcHJpdmF0ZSBGT1JNX0lOUFVUX0ZVTExURVhUID0gJ3N0b3JlZFF1ZXJ5RnVsbHRleHQnO1xyXG4gIHByaXZhdGUgQkFTRV9QQVJBTVNfRklFTERTID0gT2JqZWN0LmtleXMoU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMpLm1hcChrID0+IFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TW2tdKTtcclxuICBwcml2YXRlIGRhdGVQaXBlOiBMb2NhbGVEYXRlUGlwZTtcclxuICBwcml2YXRlIHBlbmRpbmdUYXNrSWQ6IHN0cmluZztcclxuXHJcbiAgQFZpZXdDaGlsZCgnc3RvcmVkUXVlcnlGb3JtJykgc3RvcmVkUXVlcnlGb3JtOiBTdG9yZWRRdWVyeUNvbXBvbmVudDtcclxuXHJcbiAgaWNvblRpdGxlczogYW55O1xyXG4gIHN0b3JlZFF1ZXJ5OiBTdG9yZWRRdWVyeTtcclxuICBxdWVyeVNjb3BlOiBRdWVyeVNjb3BlO1xyXG4gIGVkaXRGb3JtOiBFZGl0Rm9ybTtcclxuICByZXN0cmljdGlvbnM6IFJlc3RyaWN0aW9uW107XHJcbiAgZWRpdGluZ1NoYXJlOiBib29sZWFuO1xyXG4gIGlzTmV3UXVlcnk6IGJvb2xlYW47XHJcbiAgaXNPd25RdWVyeTogYm9vbGVhbjtcclxuICBlbmFibGVTaGFyaW5nOiBib29sZWFuO1xyXG4gIHN5c3RlbVJvbGVzOiBPcmdSb2xlW107XHJcbiAgcm9sZXNQaWNrZXIgPSB7XHJcbiAgICB0aXRsZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc3RvcmVkcXVlcnkucm9sZXMnKSxcclxuICAgIGNvZGVzeXN0ZW06IG51bGwsXHJcbiAgICB2YWx1ZTogbnVsbFxyXG4gIH07XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHF1ZXJ5KHE6IFN0b3JlZFF1ZXJ5KSB7XHJcbiAgICB0aGlzLnNldFF1ZXJ5KHEpO1xyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpIG5vdGlmeUxpc3Q6IEV2ZW50RW1pdHRlcjxOb3RpZnlMaXN0PiA9IG5ldyBFdmVudEVtaXR0ZXI8Tm90aWZ5TGlzdD4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgICAgICAgICAgICBwcml2YXRlIHNlYXJjaFNlcnZpY2U6IFNlYXJjaFNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBzeXN0ZW1TZXJ2aWNlOiBTeXN0ZW1TZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgc2VsZWN0aW9uOiBTZWxlY3Rpb25TZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgcGVuZGluZ0NoYW5nZXM6IFBlbmRpbmdDaGFuZ2VzU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIHN0b3JlZFF1ZXJpZXNTZXJ2aWNlOiBTdG9yZWRRdWVyaWVzU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIGZvcm1IZWxwZXJTZXJ2aWNlOiBPYmplY3RGb3JtSGVscGVyU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSkge1xyXG4gICAgc3VwZXIoKTtcclxuXHJcbiAgICB0aGlzLmRhdGVQaXBlID0gbmV3IExvY2FsZURhdGVQaXBlKHRyYW5zbGF0ZSk7XHJcbiAgICB0aGlzLmZldGNoUm9sZXMoKTtcclxuICB9XHJcbiAgXHJcbiAgcHVibGljIHNldFF1ZXJ5U2NvcGUoc2NvcGU6IFF1ZXJ5U2NvcGUpIHtcclxuICAgIHRoaXMuc3RvcmVkUXVlcnkuc2NvcGUgPSBzY29wZTtcclxuICAgIHRoaXMucXVlcnlTY29wZSA9IHNjb3BlO1xyXG4gIH1cclxuXHJcbiAgc2V0UXVlcnkocTogU3RvcmVkUXVlcnkpIHtcclxuICAgIHRoaXMucmVzZXRFZGl0Rm9ybSgpO1xyXG4gICAgLy8gZ3JhYiBtZXRhIGluZm9ybWF0aW9uIGFib3V0IHRoZSBxdWVyeVxyXG4gICAgdGhpcy5zdG9yZWRRdWVyeSA9IHE7XHJcbiAgICBpZiAocSBpbnN0YW5jZW9mIFN0b3JlZFF1ZXJ5KSB7XHJcbiAgICAgIHRoaXMucXVlcnlTY29wZSA9IHEuc2NvcGU7XHJcbiAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLnVzZXJTZXJ2aWNlLmdldEN1cnJlbnRVc2VyKCk7XHJcbiAgICAgIHRoaXMuaXNOZXdRdWVyeSA9IHEuaXNOZXcoKTtcclxuICAgICAgdGhpcy5pc093blF1ZXJ5ID0gdGhpcy5pc05ld1F1ZXJ5IHx8IHEudXNlci50b0xvd2VyQ2FzZSgpID09PSB1c2VyLm5hbWUudG9Mb3dlckNhc2UoKTtcclxuICAgICAgdGhpcy5yZXN0cmljdGlvbnMgPSB0aGlzLmdldFJlc3RyaWN0aW9ucygpO1xyXG4gICAgICB0aGlzLnJvbGVzUGlja2VyLnZhbHVlID0gcS5yb2xlcztcclxuICAgICAgdGhpcy5lbmFibGVTaGFyaW5nID0gdXNlci5oYXNQcml2aWxlZ2UoJ1NIQVJFX1NUT1JFRF9RVUVSSUVTJykgJiYgdGhpcy5pc093blF1ZXJ5ICYmICF0aGlzLmlzTmV3UXVlcnk7XHJcblxyXG4gICAgICBpZiAocS5pc05ldygpKSB7XHJcbiAgICAgICAgdGhpcy5zdG9yZWRRdWVyeS5uYW1lID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2VhcmNoLnN0b3JlZHF1ZXJpZXMubmV3LnRpdGxlJyk7XHJcbiAgICAgICAgdGhpcy5lZGl0KCk7XHJcbiAgICAgICAgdGhpcy5zdGFydFBlbmRpbmcoKTtcclxuICAgICAgICB0aGlzLm5vdGlmeUxpc3QuZW1pdCh7dW5zZWxlY3Q6IHRydWUsIHVwZGF0ZTogZmFsc2V9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGFydFBlbmRpbmcoKSB7XHJcbiAgICBpZiAoIXRoaXMucGVuZGluZ0NoYW5nZXMuaGFzUGVuZGluZ1Rhc2sodGhpcy5wZW5kaW5nVGFza0lkIHx8ICcgJykpIHtcclxuICAgICAgdGhpcy5wZW5kaW5nVGFza0lkID0gdGhpcy5wZW5kaW5nQ2hhbmdlcy5zdGFydFRhc2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmluaXNoUGVuZGluZygpIHtcclxuICAgIHRoaXMucGVuZGluZ0NoYW5nZXMuZmluaXNoVGFzayh0aGlzLnBlbmRpbmdUYXNrSWQpO1xyXG4gIH1cclxuXHJcbiAgZWRpdCgpIHtcclxuICAgIGlmICghdGhpcy5lZGl0Rm9ybS5mb3JtKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY3JlYXRlRWRpdEZvcm0oKTtcclxuICAgICAgICB0aGlzLm5vdGlmeUxpc3QuZW1pdCh7dW5zZWxlY3Q6IGZhbHNlLCB1cGRhdGU6IHRydWV9KTtcclxuICAgICAgfSwgMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkZvcm1TdGF0dXNDaGFuZ2VkKGZvcm1TdGF0ZSkge1xyXG4gICAgZm9ybVN0YXRlLmRpcnR5ID8gdGhpcy5zdGFydFBlbmRpbmcoKSA6IHRoaXMuZmluaXNoUGVuZGluZygpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlU2hhcmVFZGl0KCkge1xyXG4gICAgdGhpcy5lZGl0aW5nU2hhcmUgPSAhdGhpcy5lZGl0aW5nU2hhcmU7XHJcbiAgfVxyXG5cclxuICBzaGFyZSgpIHtcclxuICAgIHRoaXMuc3RvcmVkUXVlcnkucm9sZXMgPSB0aGlzLnJvbGVzUGlja2VyLnZhbHVlO1xyXG4gICAgdGhpcy5zdG9yZWRRdWVyaWVzU2VydmljZS5zYXZlU3RvcmVkUXVlcnkodGhpcy5zdG9yZWRRdWVyeSkuc3Vic2NyaWJlKFxyXG4gICAgICBfID0+IHtcclxuICAgICAgfSwgVXRpbHMudGhyb3cobnVsbCwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2VhcmNoLnN0b3JlZHF1ZXJ5LnNhdmUuZXJyb3InKSlcclxuICAgICk7XHJcbiAgICB0aGlzLmVkaXRpbmdTaGFyZSA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgY2FuY2VsU2hhcmUoKSB7XHJcbiAgICB0aGlzLnJvbGVzUGlja2VyLnZhbHVlID0gdGhpcy5zdG9yZWRRdWVyeS5yb2xlcztcclxuICAgIHRoaXMuZWRpdGluZ1NoYXJlID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBkZWxldGUoKSB7XHJcbiAgICB0aGlzLnN0b3JlZFF1ZXJpZXNTZXJ2aWNlXHJcbiAgICAgIC5yZW1vdmVTdG9yZWRRdWVyeSh0aGlzLnN0b3JlZFF1ZXJ5LmlkKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLnF1ZXJ5ID0gbnVsbDtcclxuICAgICAgICB0aGlzLm5vdGlmeUxpc3QuZW1pdCh7dW5zZWxlY3Q6IGZhbHNlLCB1cGRhdGU6IGZhbHNlfSk7XHJcbiAgICAgIH0sIFV0aWxzLnRocm93KG51bGwsIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnNlYXJjaC5zdG9yZWRxdWVyeS5kZWxldGUuZXJyb3InKSkpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlRmF2b3JpdGVTdGF0ZSgpIHtcclxuICAgIHRoaXMuc3RvcmVkUXVlcnkuZmF2b3JpdGUgPSAhdGhpcy5zdG9yZWRRdWVyeS5mYXZvcml0ZTtcclxuICAgIHRoaXMuc3RvcmVkUXVlcmllc1NlcnZpY2VcclxuICAgICAgLnNhdmVTdG9yZWRRdWVyeSh0aGlzLnN0b3JlZFF1ZXJ5KVxyXG4gICAgICAuc3Vic2NyaWJlKF8gPT4ge1xyXG4gICAgICB9LCBVdGlscy50aHJvdyhudWxsLCB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zZWFyY2guc3RvcmVkcXVlcnkuc2F2ZS5lcnJvcicpKSk7XHJcbiAgfVxyXG5cclxuICBjYW5jZWxFZGl0KCkge1xyXG4gICAgdGhpcy5yZXNldEVkaXRGb3JtKCk7XHJcbiAgICB0aGlzLmZpbmlzaFBlbmRpbmcoKTtcclxuICAgIGlmICh0aGlzLnN0b3JlZFF1ZXJ5LmlzTmV3KCkpIHtcclxuICAgICAgdGhpcy5xdWVyeSA9IG51bGw7XHJcbiAgICB9XHJcbiAgICB0aGlzLm5vdGlmeUxpc3QuZW1pdCh7dW5zZWxlY3Q6IGZhbHNlLCB1cGRhdGU6IGZhbHNlLCBwYXlsb2FkOiB0aGlzLnN0b3JlZFF1ZXJ5fSk7XHJcbiAgfVxyXG5cclxuICBzZXRRdWVyeVRvQXBwU2VhcmNoKCkge1xyXG4gICAgdGhpcy5zdG9yZWRRdWVyeUZvcm0ubG9hZCgpO1xyXG4gIH1cclxuXHJcbiAgZXhlY3V0ZVF1ZXJ5KCkge1xyXG4gICAgdGhpcy5zdG9yZWRRdWVyeUZvcm0uZXhlY3V0ZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8gU2F2ZSB0aGUgY3VycmVudCBzdG9yZWQgcXVlcnlcclxuICB1cGRhdGVTdG9yZWRRdWVyeSgpIHtcclxuXHJcbiAgICBjb25zdCBmb3JtRGF0YSA9IHRoaXMuZ2V0Rm9ybURhdGEoKTtcclxuICAgIHRoaXMuc3RvcmVkUXVlcnkuZmlsdGVycyA9IHRoaXMuc3RvcmVkUXVlcnkuZmlsdGVycy5maWx0ZXIoZiA9PiB+dGhpcy5CQVNFX1BBUkFNU19GSUVMRFMuaW5kZXhPZihmLnByb3BlcnR5KSk7XHJcbiAgICBPYmplY3Qua2V5cyhmb3JtRGF0YSlcclxuICAgICAgLmZvckVhY2goayA9PiB7XHJcbiAgICAgICAgaWYgKGsgPT09IHRoaXMuRk9STV9JTlBVVF9USVRMRSkge1xyXG4gICAgICAgICAgdGhpcy5zdG9yZWRRdWVyeS5uYW1lID0gZm9ybURhdGFba107XHJcbiAgICAgICAgfSBlbHNlIGlmIChrID09PSB0aGlzLkZPUk1fSU5QVVRfRlVMTFRFWFQpIHtcclxuICAgICAgICAgIHRoaXMuc3RvcmVkUXVlcnkudGVybSA9IGZvcm1EYXRhW2tdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBsZXQgZmlsdGVyczogU2VhcmNoRmlsdGVyW10gPSB0aGlzLnNlYXJjaFNlcnZpY2UuZ2V0U2VhcmNoRmlsdGVyKHRoaXMuc3RvcmVkUXVlcnkudHlwZXMsIGssIGZvcm1EYXRhW2tdKTtcclxuICAgICAgICAgIGZpbHRlcnMuZm9yRWFjaChmID0+IHRoaXMuc3RvcmVkUXVlcnkuYWRkRmlsdGVyKGYpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMuc3RvcmVkUXVlcmllc1NlcnZpY2VcclxuICAgICAgLnNhdmVTdG9yZWRRdWVyeSh0aGlzLnN0b3JlZFF1ZXJ5KVxyXG4gICAgICAuc3Vic2NyaWJlKHVwZGF0ZWRTdG9yZWRRdWVyeSA9PiB7XHJcbiAgICAgICAgdGhpcy5xdWVyeSA9IHVwZGF0ZWRTdG9yZWRRdWVyeTtcclxuICAgICAgICB0aGlzLnJlc2V0RWRpdEZvcm0oKTtcclxuICAgICAgICB0aGlzLmZpbmlzaFBlbmRpbmcoKTtcclxuICAgICAgICB0aGlzLm5vdGlmeUxpc3QuZW1pdCh7dW5zZWxlY3Q6IGZhbHNlLCB1cGRhdGU6IGZhbHNlLCBwYXlsb2FkOiB1cGRhdGVkU3RvcmVkUXVlcnl9KTtcclxuICAgICAgfSwgVXRpbHMudGhyb3cobnVsbCwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2VhcmNoLnN0b3JlZHF1ZXJ5LnNhdmUuZXJyb3InKSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVG9nZ2xlIGZvcm0gZWxlbWVudHMgdG8gYmUgYSBkeW5hbWljIHBhcmFtZXRlciBvciBub3RcclxuICAgKiBAcGFyYW0gZXZlbnRcclxuICAgKi9cclxuICBwYXJhbWV0ZXJDaGFuZ2VkKGV2ZW50OiB7IGNvbnRyb2w6IHN0cmluZywgdmFsdWU6IGJvb2xlYW4gfSkge1xyXG5cclxuICAgIGxldCBtID0gdGhpcy5zdG9yZWRRdWVyeS5wYXJhbWV0ZXIuZmluZChwID0+IHAucW5hbWUgPT09IGV2ZW50LmNvbnRyb2wpO1xyXG4gICAgaWYgKG0gJiYgIWV2ZW50LnZhbHVlKSB7XHJcbiAgICAgIC8vIHJlbW92ZSBleGlzdGluZyBwYXJhbWV0ZXJcclxuICAgICAgdGhpcy5zdG9yZWRRdWVyeS5wYXJhbWV0ZXIgPSB0aGlzLnN0b3JlZFF1ZXJ5LnBhcmFtZXRlci5maWx0ZXIocCA9PiBwLnFuYW1lICE9PSBldmVudC5jb250cm9sKTtcclxuICAgIH0gZWxzZSBpZiAoIW0gJiYgZXZlbnQudmFsdWUpIHtcclxuICAgICAgLy8gYWRkIHBhcmFtZXRlciBlbGVtZW50XHJcbiAgICAgIGxldCBwYXJhbSA9IHRoaXMuZm9ybUZpZWxkVG9QYXJhbWV0ZXIoZXZlbnQuY29udHJvbCk7XHJcbiAgICAgIGlmIChwYXJhbSkge1xyXG4gICAgICAgIHRoaXMuc3RvcmVkUXVlcnkucGFyYW1ldGVyLnB1c2gocGFyYW0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZvcm1EYXRhKCkge1xyXG5cclxuICAgIGNvbnN0IHByb3BlcnRpZXMgPSBPYmplY3Qua2V5cyh0aGlzLmVkaXRGb3JtLmZvcm0udmFsdWUpO1xyXG4gICAgbGV0IGRhdGEgPSB7fTtcclxuXHJcblxyXG4gICAgcHJvcGVydGllcy5mb3JFYWNoKHByb3BlcnR5ID0+IHtcclxuXHJcbiAgICAgIGNvbnN0IGZjOiBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXIgPSB0aGlzLmVkaXRGb3JtLmZvcm0uY29udHJvbHNbcHJvcGVydHldIGFzIE9iamVjdEZvcm1Db250cm9sV3JhcHBlcjtcclxuICAgICAgbGV0IGZvcm1FbGVtZW50O1xyXG4gICAgICBpZiAoZmMuY29udHJvbHMgJiYgZmMuY29udHJvbHNbcHJvcGVydHldKSB7XHJcbiAgICAgICAgY29uc3QgZmU6IE9iamVjdEZvcm1Db250cm9sID0gZmMuY29udHJvbHNbcHJvcGVydHldIGFzIE9iamVjdEZvcm1Db250cm9sO1xyXG4gICAgICAgIGZvcm1FbGVtZW50ID0gZmUuX2VvRm9ybUVsZW1lbnQ7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGZvcm1FbGVtZW50ICYmIGZvcm1FbGVtZW50LmlzTm90U2V0VmFsdWUpIHtcclxuICAgICAgICBkYXRhW3Byb3BlcnR5XSA9IG51bGw7XHJcbiAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgIHN3aXRjaCAocHJvcGVydHkpIHtcclxuICAgICAgICAgIGNhc2UgdGhpcy5GT1JNX0lOUFVUX1RJVExFOiB7XHJcbiAgICAgICAgICAgIGRhdGFbcHJvcGVydHldID0gdGhpcy5lZGl0Rm9ybS5mb3JtLnZhbHVlW3Byb3BlcnR5XSB8fCAnJztcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXNlIHRoaXMuRk9STV9JTlBVVF9GVUxMVEVYVDoge1xyXG4gICAgICAgICAgICBkYXRhW3Byb3BlcnR5XSA9IHRoaXMuZWRpdEZvcm0uZm9ybS52YWx1ZVtwcm9wZXJ0eV1bU3RvcmVkUXVlcmllc1NlcnZpY2UuRlVMTFRFWFRdIHx8ICcnO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRlZmF1bHQ6IHtcclxuICAgICAgICAgICAgY29uc3QgdiA9IHRoaXMuZWRpdEZvcm0uZm9ybS52YWx1ZVtwcm9wZXJ0eV1bcHJvcGVydHldO1xyXG4gICAgICAgICAgICBpZiAoIVV0aWxpdGllc1NlcnZpY2UuaXNFbXB0eSh2KSkge1xyXG4gICAgICAgICAgICAgIGRhdGFbcHJvcGVydHldID0gdjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZGF0YTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZSBhIGR5bmFtaWMgc3RvcmVkIHF1ZXJ5IHBhcmFtZXRlciBmb3IgYSBmb3JtIGVsZW1lbnRcclxuICAgKiBAcGFyYW0gcW5hbWUgVGhlIGZvcm0gZWxlbWVudHMgcW5hbWVcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgZm9ybUZpZWxkVG9QYXJhbWV0ZXIocW5hbWU6IHN0cmluZyk6IElTdG9yZWRRdWVyeVBhcmFtIHtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBsZXQgcGFyYW06IElTdG9yZWRRdWVyeVBhcmFtO1xyXG4gICAgICAvLyBzcGVjaWFsIGhhbmRsaW5nIGZvciBmdWxsdGV4dCBmaWVsZHNcclxuICAgICAgaWYgKHFuYW1lID09PSBTdG9yZWRRdWVyaWVzU2VydmljZS5GVUxMVEVYVCkge1xyXG4gICAgICAgIHBhcmFtID0ge1xyXG4gICAgICAgICAgcW5hbWU6IHFuYW1lLFxyXG4gICAgICAgICAgdHlwZTogcW5hbWUsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCBmYyA9ICgodGhpcy5lZGl0Rm9ybS5mb3JtLmNvbnRyb2xzW3FuYW1lXSBhcyBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXIpLmNvbnRyb2xzW3FuYW1lXSBhcyBPYmplY3RGb3JtQ29udHJvbCk7XHJcbiAgICAgICAgY29uc3QgZmUgPSBmYy5fZW9Gb3JtRWxlbWVudDtcclxuICAgICAgICBwYXJhbSA9IHtcclxuICAgICAgICAgIHFuYW1lOiBmZS5xbmFtZSxcclxuICAgICAgICAgIHR5cGU6IGZlLnR5cGVcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBwYXJhbTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc2V0RWRpdEZvcm0oKSB7XHJcbiAgICB0aGlzLmVkaXRGb3JtID0ge1xyXG4gICAgICBmb3JtOiBudWxsLFxyXG4gICAgICBmdWxsdGV4dEZvcm1Db250cm9sOiBudWxsLFxyXG4gICAgICBjb250cm9sczogW10sXHJcbiAgICAgIGNvbnRleHRDb250cm9sczogW11cclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBvbkZvcm1DaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5lZGl0Rm9ybVxyXG4gICAgICAuZm9ybVxyXG4gICAgICAudmFsdWVDaGFuZ2VzXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5vbkZvcm1TdGF0dXNDaGFuZ2VkKHRoaXMuZWRpdEZvcm0uZm9ybSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVFZGl0Rm9ybSgpIHtcclxuXHJcbiAgICB0aGlzLnJlc2V0RWRpdEZvcm0oKTtcclxuICAgIHRoaXMuc2V0dXBGb3JtQ29udHJvbHMoKS5zdWJzY3JpYmUoXyA9PiB7XHJcblxyXG4gICAgICBsZXQgZm9ybSA9IG5ldyBPYmplY3RGb3JtR3JvdXAoe30pO1xyXG4gICAgICBsZXQgZmNUaXRsZSA9IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgIGZjVGl0bGUuc2V0VmFsdWUodGhpcy5zdG9yZWRRdWVyeS5uYW1lKTtcclxuXHJcbiAgICAgIGxldCBmY0Z1bGx0ZXh0ID0gdGhpcy50b0Zvcm1Db250cm9sKHRoaXMuc3RvcmVkUXVlcmllc1NlcnZpY2UuZ2V0RnVsbHRleHRGb3JtRWxlbWVudChcclxuICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zdG9yZWRxdWVyeS5zZWFyY2gudGVybScpLFxyXG4gICAgICAgIHRoaXMuc3RvcmVkUXVlcnkudGVybVxyXG4gICAgICApKTtcclxuICAgICAgdGhpcy5lZGl0Rm9ybS5mdWxsdGV4dEZvcm1Db250cm9sID0gZmNGdWxsdGV4dDtcclxuXHJcbiAgICAgIC8vIGFkZCB0aXRsZSBhbmQgZnVsbHRleHQgZmllbGRcclxuICAgICAgZm9ybS5hZGRDb250cm9sKHRoaXMuRk9STV9JTlBVVF9USVRMRSwgZmNUaXRsZSk7XHJcbiAgICAgIGZvcm0uYWRkQ29udHJvbCh0aGlzLkZPUk1fSU5QVVRfRlVMTFRFWFQsIGZjRnVsbHRleHQpO1xyXG5cclxuICAgICAgaWYgKHRoaXMuZWRpdEZvcm0uY29udHJvbHMubGVuZ3RoIHx8IHRoaXMuZWRpdEZvcm0uY29udGV4dENvbnRyb2xzLmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMuZWRpdEZvcm0uY29udHJvbHNcclxuICAgICAgICAgIC5mb3JFYWNoKChjKSA9PiBmb3JtLmFkZENvbnRyb2woYy5fZW9Gb3JtQ29udHJvbFdyYXBwZXIuY29udHJvbE5hbWUsIGMpKTtcclxuICAgICAgICB0aGlzLmVkaXRGb3JtLmNvbnRleHRDb250cm9sc1xyXG4gICAgICAgICAgLmZvckVhY2goKGMpID0+IGZvcm0uYWRkQ29udHJvbChjLl9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZSwgYykpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmVkaXRGb3JtLmZvcm0gPSBmb3JtO1xyXG4gICAgICB0aGlzLm9uRm9ybUNoYW5nZXMoKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldHVwRm9ybUNvbnRyb2xzKCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCB0YXNrcyA9IFtdO1xyXG4gICAgIC8vIHNldHRpbmcgdXAgb2JqZWN0IHR5cGUgZm9ybSBvbmx5IG1ha2VzIHNlbnNlIHdpdGggb25lIHRhcmdldCB0eXBlXHJcbiAgICBpZiAodGhpcy5zdG9yZWRRdWVyeS50eXBlcy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgdGFza3MucHVzaCh0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0Rm9ybUVsZW1lbnRzRnJvbUZvcm1Nb2RlbCh0aGlzLnN0b3JlZFF1ZXJ5LnR5cGVzWzBdLnFuYW1lLCAnU0VBUkNIJykucGlwZShcclxuICAgICAgICB0YXAoKGVsZW1lbnRzOiBhbnlbXSkgPT4ge1xyXG4gICAgICAgICAgZWxlbWVudHMuZm9yRWFjaChlID0+IHtcclxuICAgICAgICAgICAgLy8gcHJldmVudCB0YWJsZXMgYW5kIGJpbmFyeSB0eXBlcyBmcm9tIGJlaW5nIHJlbmRlcmVkIGluIHRoZSBzdG9yZWQgcXVlcnkgZm9ybVxyXG4gICAgICAgICAgICBpZiAoZS50eXBlICE9PSAnQklOQVJZJykge1xyXG4gICAgICAgICAgICAgIGlmIChlLnJlcXVpcmVkKSB7XHJcbiAgICAgICAgICAgICAgICBlLnJlcXVpcmVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChlLnJlYWRvbmx5KSB7XHJcbiAgICAgICAgICAgICAgICBlLnJlYWRvbmx5ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGNvbnN0IGZjID0gdGhpcy50b0Zvcm1Db250cm9sKGUpO1xyXG4gICAgICAgICAgICAgIGlmIChmYykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lZGl0Rm9ybS5jb250cm9scy5wdXNoKGZjKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuICAgICAgKSlcclxuICAgIH1cclxuICAgICAvLyBhZGQgY29udGV4dCBmb3JtIGNvbnRyb2xzIGFzIHdlbGxcclxuICAgIGlmICh0aGlzLnN0b3JlZFF1ZXJ5LmNvbnRleHRGb2xkZXJUeXBlcy5sZW5ndGgpIHtcclxuICAgICAgdGFza3MucHVzaCh0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0Rm9ybUVsZW1lbnRzRnJvbUZvcm1Nb2RlbCh0aGlzLnN0b3JlZFF1ZXJ5LmNvbnRleHRGb2xkZXJUeXBlc1swXS5xbmFtZSwgJ1NFQVJDSCcsIHRydWUpLnBpcGUoXHJcbiAgICAgICAgdGFwKChlbGVtZW50czogYW55W10pID0+IHtcclxuICAgICAgICAgIGVsZW1lbnRzLmZvckVhY2goZSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZjID0gdGhpcy50b0Zvcm1Db250cm9sKGUpO1xyXG4gICAgICAgICAgICBpZiAoZmMpIHtcclxuICAgICAgICAgICAgICB0aGlzLmVkaXRGb3JtLmNvbnRleHRDb250cm9scy5wdXNoKGZjKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9KVxyXG4gICAgICApKVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0YXNrcy5sZW5ndGggPyBmb3JrSm9pbih0YXNrcykgOiBvZih0YXNrcyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZldGNoUm9sZXMoKSB7XHJcbiAgICBpZiAoIXRoaXMuc3lzdGVtUm9sZXMgfHwgdGhpcy5zeXN0ZW1Sb2xlcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy5zeXN0ZW1TZXJ2aWNlXHJcbiAgICAgICAgLmdldFJvbGVzKClcclxuICAgICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc3lzdGVtUm9sZXMgPSByZXM7XHJcbiAgICAgICAgICAgIHRoaXMucm9sZXNQaWNrZXIuY29kZXN5c3RlbSA9IHtcclxuICAgICAgICAgICAgICBlbnRyaWVzOiB0aGlzLnN5c3RlbVJvbGVzLm1hcChyb2xlID0+ICh7XHJcbiAgICAgICAgICAgICAgICBpZDogcm9sZS5pZCxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiByb2xlLm5hbWUsXHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0cmVwcmVzZW50YXRpb246IHJvbGUubmFtZSxcclxuICAgICAgICAgICAgICAgIGRhdGE6IHJvbGUubmFtZVxyXG4gICAgICAgICAgICAgIH0pKS5zb3J0KFV0aWxzLnNvcnRWYWx1ZXMoJ2xhYmVsJykpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICApXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRSZXN0cmljdGlvbnMoKTogUmVzdHJpY3Rpb25bXSB7XHJcbiAgICBsZXQgcmVzdHJpY3Rpb25zOiBSZXN0cmljdGlvbltdID0gW107XHJcblxyXG4gICAgLy8gdHlwZSByZXN0cmljdGlvblxyXG4gICAgaWYgKHRoaXMuc3RvcmVkUXVlcnkudHlwZXMgJiYgdGhpcy5zdG9yZWRRdWVyeS50eXBlcy5sZW5ndGgpIHtcclxuICAgICAgcmVzdHJpY3Rpb25zLnB1c2goe1xyXG4gICAgICAgIGZpZWxkOiBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5UWVBFLFxyXG4gICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zdG9yZWRxdWVyeS5yZXN0cmljdGlvbi50eXBlJyksXHJcbiAgICAgICAgaXRlbXM6IHRoaXMuc3RvcmVkUXVlcnkudHlwZXMubWFwKHQgPT4gdC5sYWJlbClcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gYWRkIGJhc2UgcGFyYW1zIHJlc3RyaWN0aW9uc1xyXG4gICAgKHRoaXMuc3RvcmVkUXVlcnkuZmlsdGVycyB8fCBbXSkuZm9yRWFjaChmaWx0ZXIgPT4ge1xyXG4gICAgICBpZiAoZmlsdGVyICYmIH50aGlzLkJBU0VfUEFSQU1TX0ZJRUxEUy5pbmRleE9mKGZpbHRlci5wcm9wZXJ0eSkpIHtcclxuXHJcbiAgICAgICAgY29uc3QgZmllbGQgPSBmaWx0ZXIucHJvcGVydHk7XHJcbiAgICAgICAgY29uc3QgbGFiZWwgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zdG9yZWRxdWVyeS5yZXN0cmljdGlvbi4nICsgZmllbGQpO1xyXG5cclxuICAgICAgICBzd2l0Y2ggKGZpZWxkKSB7XHJcbiAgICAgICAgICBjYXNlIFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLk1JTUVUWVBFR1JPVVA6XHJcbiAgICAgICAgICAgIHJlc3RyaWN0aW9ucy5wdXNoKHtcclxuICAgICAgICAgICAgICBmaWVsZCwgbGFiZWwsIGl0ZW1zOiBBcnJheS5pc0FycmF5KGZpbHRlci5maXJzdFZhbHVlKSA/IGZpbHRlci5maXJzdFZhbHVlIDogW2ZpbHRlci5maXJzdFZhbHVlXVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLkZJTEVOQU1FOlxyXG4gICAgICAgICAgICByZXN0cmljdGlvbnMucHVzaCh7XHJcbiAgICAgICAgICAgICAgZmllbGQsIGxhYmVsLCBpdGVtczogW2ZpbHRlci5maXJzdFZhbHVlXVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLkZJTEVTSVpFOlxyXG4gICAgICAgICAgICByZXN0cmljdGlvbnMucHVzaCh7XHJcbiAgICAgICAgICAgICAgZmllbGQsIGxhYmVsLCBpdGVtczogW3RoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnNlYXJjaC5hZ2cuZmlsZXNpemUuJyArIGZpbHRlci5maXJzdFZhbHVlKV1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5DUkVBVEVEOlxyXG4gICAgICAgICAgY2FzZSBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5NT0RJRklFRDpcclxuICAgICAgICAgICAgcmVzdHJpY3Rpb25zLnB1c2goe1xyXG4gICAgICAgICAgICAgIGZpZWxkLCBsYWJlbCwgaXRlbXM6IFt0aGlzLmNyZWF0ZURhdGVSZXN0cmljdGlvbihmaWx0ZXIpXVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLkNSRUFUT1I6XHJcbiAgICAgICAgICBjYXNlIFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLk1PRElGSUVSOlxyXG4gICAgICAgICAgICB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uT2JqZWN0cyhmaWx0ZXIuZmlyc3RWYWx1ZSlcclxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKG9yZ1VzZXJzID0+IHJlc3RyaWN0aW9ucy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGZpZWxkLCBsYWJlbCwgaXRlbXM6IG9yZ1VzZXJzLm1hcCh1ID0+IHUudGl0bGUpXHJcbiAgICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gcmVzdHJpY3Rpb25zO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlRGF0ZVJlc3RyaWN0aW9uKGZpbHRlcjogU2VhcmNoRmlsdGVyKSB7XHJcbiAgICBzd2l0Y2ggKGZpbHRlci5vcGVyYXRvcikge1xyXG4gICAgICBjYXNlIFNlYXJjaEZpbHRlci5PUEVSQVRPUi5SQU5HRTpcclxuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgZW8uc2VhcmNoLmFnZy50aW1lLiR7ZmlsdGVyLmZpcnN0VmFsdWV9YCk7XHJcbiAgICAgIGNhc2UgU2VhcmNoRmlsdGVyLk9QRVJBVE9SLkVRVUFMOlxyXG4gICAgICAgIHJldHVybiBgPSAke3RoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGZpbHRlci5maXJzdFZhbHVlLCAnZW9TaG9ydERhdGUnKX1gO1xyXG4gICAgICBjYXNlIFNlYXJjaEZpbHRlci5PUEVSQVRPUi5JTlRFUlZBTF9JTkNMVURFX0JPVEg6XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGZpbHRlci5maXJzdFZhbHVlLCAnZW9TaG9ydERhdGUnKX0gLSAke3RoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGZpbHRlci5zZWNvbmRWYWx1ZSwgJ2VvU2hvcnREYXRlJyl9YDtcclxuICAgICAgY2FzZSBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuR1JFQVRFUl9PUl9FUVVBTDpcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2VhcmNoLmFnZy50aW1lLnNwYW4uc2luY2UnKX0gJHt0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShmaWx0ZXIuZmlyc3RWYWx1ZSwgJ2VvU2hvcnREYXRlJyl9YDtcclxuICAgICAgY2FzZSBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuTEVTU19PUl9FUVVBTDpcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2VhcmNoLmFnZy50aW1lLnNwYW4udW50aWwnKX0gJHt0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShmaWx0ZXIuZmlyc3RWYWx1ZSwgJ2VvU2hvcnREYXRlJyl9YDtcclxuICAgICAgZGVmYXVsdCA6XHJcbiAgICAgICAgcmV0dXJuIGAoJHtmaWx0ZXIub3BlcmF0b3J9KSAke3RoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGZpbHRlci5maXJzdFZhbHVlLCAnZW9TaG9ydERhdGUnKX1gO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIGZvcm0gY29udHJvbCBmcm9tIGEgZ2l2ZW4gZm9ybSBlbGVtZW50XHJcbiAgICogQHBhcmFtIGZvcm1FbGVtZW50XHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICBwcml2YXRlIHRvRm9ybUNvbnRyb2woZm9ybUVsZW1lbnQpOiBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXIge1xyXG5cclxuICAgIC8vIHRoZSBgbmFtZWAgcHJvcGVydHkgb2Ygc3RvcmVkIHF1ZXJ5IGZvcm0gZWxlbWVudCBoYXMgdG8gYmUgYHFuYW1lYCBvZiBmb3JtIGVsZW1lbnQsXHJcbiAgICAvLyBiZWNhdXNlIHdlIG1heSBjb21iaW5lIG11bHRpcGxlIGZvcm1zIChjb250ZXh0IGZvcm0pIGFuZCBpbiB0aGlzIGNhc2UgdGhlcmUgbWF5XHJcbiAgICAvLyBiZSBjb25mbGljdHMgaW4gbmFtaW5nc1xyXG4gICAgZm9ybUVsZW1lbnQubmFtZSA9IGZvcm1FbGVtZW50LnFuYW1lO1xyXG5cclxuICAgIGlmKGZvcm1FbGVtZW50LnR5cGUgPT09ICdUQUJMRScpe1xyXG4gICAgICBsZXQgZmlsdGVycyA9IHRoaXMuc3RvcmVkUXVlcnkuZ2V0VGFibGVGaWx0ZXJzKGZvcm1FbGVtZW50LnFuYW1lKTtcclxuICAgICAgaWYoZmlsdGVycyAmJiBmaWx0ZXJzLmxlbmd0aCl7XHJcbiAgICAgICAgZm9ybUVsZW1lbnQudmFsdWUgPSB0aGlzLnNlYXJjaFNlcnZpY2UudGFibGVGaWx0ZXJzVG9FbGVtZW50VmFsdWUoZmlsdGVycywgZm9ybUVsZW1lbnQuZWxlbWVudHMpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZvcm1FbGVtZW50LnZhbHVlID0gW3t9XTtcclxuICAgICAgICBkZWxldGUgZm9ybUVsZW1lbnQuaXNOb3RTZXRWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgfWVsc2V7XHJcbiAgICAgIC8vIGdyYWIgdmFsdWUgZm9yIHRoZSBjb250cm9sIGZyb20gY29ycmVzcG9uZGluZyBxdWVyeSBmaWx0ZXJzXHJcbiAgICAgIGxldCBmaWx0ZXIgPSB0aGlzLnN0b3JlZFF1ZXJ5LmdldEZpbHRlcihmb3JtRWxlbWVudC5xbmFtZSk7XHJcbiAgICAgIC8vIHdlIG1heSBoYXZlIHBhcmFtcyB0aGF0IGFyZSBub3QgcGFydCBvZiB0aGUgcXVlcmllcyBmaWx0ZXJzLiBUaGlzIG1heSBiZSB0aGVcclxuICAgICAgLy8gY2FzZSB3aGVuIHdlIG1hcmsgZm9ybSBlbGVtZW50cyBhcyBkeW5hbWljIGZpZWxkcyB3aXRob3V0IHByb3ZpZGluZyBhIHZhbHVlXHJcbiAgICAgIGlmIChmaWx0ZXIpIHtcclxuICBcclxuICAgICAgICAvLyBmaWx0ZXIgdG8gaGF2ZSBubyB2YWx1ZVxyXG4gICAgICAgIGlmIChmaWx0ZXIub3BlcmF0b3IgPT09IFNlYXJjaEZpbHRlci5PUEVSQVRPUi5FUVVBTCAmJiBmaWx0ZXIuZmlyc3RWYWx1ZSA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgZm9ybUVsZW1lbnQuaXNOb3RTZXRWYWx1ZSA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGRlbGV0ZSBmb3JtRWxlbWVudC5pc05vdFNldFZhbHVlO1xyXG4gICAgICAgIH1cclxuICBcclxuICAgICAgICBmb3JtRWxlbWVudC52YWx1ZSA9IHRoaXMuc2VhcmNoU2VydmljZS5maWx0ZXJUb0VsZW1lbnRWYWx1ZShcclxuICAgICAgICAgIHRoaXMuc3RvcmVkUXVlcnkuZ2V0RmlsdGVyKGZvcm1FbGVtZW50LnFuYW1lKSxcclxuICAgICAgICAgIGZvcm1FbGVtZW50LnR5cGVcclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2UgaWYgKGZvcm1FbGVtZW50LnFuYW1lICE9PSBTdG9yZWRRdWVyaWVzU2VydmljZS5GVUxMVEVYVCkge1xyXG4gICAgICAgIGZvcm1FbGVtZW50LnZhbHVlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIGRlbGV0ZSBmb3JtRWxlbWVudC5pc05vdFNldFZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBzeW5jIHdpdGggcGFyYW1zXHJcbiAgICBjb25zdCBtYXRjaDogYW55ID0gdGhpcy5zdG9yZWRRdWVyeS5wYXJhbWV0ZXIuZmluZChwYXJhbSA9PiB7XHJcbiAgICAgIHJldHVybiAocGFyYW0ucW5hbWUgPT09IGZvcm1FbGVtZW50LnFuYW1lKSB8fCAocGFyYW0udHlwZSA9PT0gU3RvcmVkUXVlcmllc1NlcnZpY2UuRlVMTFRFWFQgJiYgZm9ybUVsZW1lbnQucW5hbWUgPT09IFN0b3JlZFF1ZXJpZXNTZXJ2aWNlLkZVTExURVhUKVxyXG4gICAgfSk7XHJcbiAgICAvLyBldmVyeSBmaWVsZCB0aGF0IGlzIHBhcnQgb2YgdGhlIHBhcmFtcyBpcyBzdXBwb3NlZCB0byBiZSBkeW5hbWljXHJcbiAgICBmb3JtRWxlbWVudC5fZHluYW1pYyA9ICEhbWF0Y2g7XHJcblxyXG4gICAgLy8gY3JlYXRlIGFjdHVhbCBmb3JtIGNvbnRyb2wgdGhhdCBjb3VsZCBiZSB1c2VkIHdpdGhcclxuICAgIC8vIEZvcm1FbGVtZW50Q29tcG9uZW50IHRvIHRoZW4gcmVuZGVyIGZvciBlbGVtZW50c1xyXG4gICAgLy8gd3JhcHBlciBtYXkgYmUgbnVsbCBpbiBjYXNlIG9mIGFuIGVycm9yXHJcbiAgICByZXR1cm4gdGhpcy5mb3JtSGVscGVyU2VydmljZS5lbGVtZW50VG9Gb3JtQ29udHJvbChmb3JtRWxlbWVudCwgJ1NFQVJDSCcpO1xyXG4gIH1cclxuXHJcbiAgb25TdG9yZWRRdWVyeUxvYWRlZCgpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt7b3V0bGV0czoge21vZGFsOiAnc2VhcmNoJ319XSk7XHJcbiAgfVxyXG5cclxuICBvblN0b3JlZFF1ZXJ5RXhlY3V0ZShldnQpIHtcclxuICAgIGNvbnN0IHVyaVBhcmFtID0gZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGV2dC5xdWVyeUpzb24pKTtcclxuICAgIGNvbnN0IHVyaVBhcmFtUXVlcnk6IE5hdmlnYXRpb25FeHRyYXMgPSB7cXVlcnlQYXJhbXM6IHsncXVlcnknOiB1cmlQYXJhbX19O1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvcmVzdWx0J10sIHVyaVBhcmFtUXVlcnkpO1xyXG4gIH1cclxuXHJcbiAgc2V0SWNvblRpdGxlcygpIHtcclxuICAgIHRoaXMuaWNvblRpdGxlcyA9IHtcclxuICAgICAgc2hhcmU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnN0b3JlZHF1ZXJ5LnNoYXJlLnRpdGxlJyksXHJcbiAgICAgIHNoYXJlZDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc3RvcmVkcXVlcnkuc2hhcmVkZm9yLnRpdGxlJyksXHJcbiAgICAgIGZhdm9yOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zdG9yZWRxdWVyeS5mYXZvci50aXRsZScpLFxyXG4gICAgICBmYXZvcmVkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zdG9yZWRxdWVyeS5mYXZvcmVkZm9yLnRpdGxlJylcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc2VsZWN0aW9uLmZvY3VzJFxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5jb21wb25lbnREZXN0cm95ZWQkKSlcclxuICAgICAgLnN1YnNjcmliZShxID0+IHtcclxuICAgICAgICB0aGlzLnF1ZXJ5ID0gcTtcclxuICAgICAgfSk7XHJcbiAgICB0aGlzLnNldEljb25UaXRsZXMoKTtcclxuICB9XHJcblxyXG4gIHRyYWNrQnlRTmFtZShpbmRleCwgaXRlbSkge1xyXG4gICAgcmV0dXJuIGl0ZW0ucW5hbWU7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5SW5kZXgoaW5kZXgsIGl0ZW0pIHtcclxuICAgIHJldHVybiBpbmRleDtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,31 @@
1
+ import { Component, Input, EventEmitter, Output } from '@angular/core';
2
+ import { QueryScope } from '@eo-sdk/core';
3
+ export class QueryScopeSelectComponent {
4
+ constructor() {
5
+ this.QueryScope = QueryScope;
6
+ this.select = new EventEmitter();
7
+ }
8
+ set selectedQueryScope(scope) {
9
+ this._selectedQueryScope = scope;
10
+ }
11
+ get selectedQueryScope() {
12
+ return this._selectedQueryScope;
13
+ }
14
+ selectQueryScope(scope) {
15
+ this.selectedQueryScope = scope;
16
+ this.select.emit(this.selectedQueryScope);
17
+ }
18
+ }
19
+ QueryScopeSelectComponent.decorators = [
20
+ { type: Component, args: [{
21
+ selector: 'eo-query-scope-select',
22
+ template: "<div class=\"query-scope\">\r\n <button type=\"button\" class=\"query-scope__button\" (click)=\"selectQueryScope(QueryScope.ALL)\" \r\n [ngClass]=\"{'query-scope__button--active': !selectedQueryScope || (selectedQueryScope === QueryScope.ALL)}\"\r\n translate>eo.search.scope.all.label</button>\r\n <button type=\"button\" class=\"query-scope__button\" (click)=\"selectQueryScope(QueryScope.CONTENT)\" \r\n [ngClass]=\"{'query-scope__button--active': selectedQueryScope === QueryScope.CONTENT}\"\r\n translate>eo.search.scope.content.label</button>\r\n <button type=\"button\" class=\"query-scope__button\" (click)=\"selectQueryScope(QueryScope.INDEX_DATA)\" \r\n [ngClass]=\"{'query-scope__button--active': selectedQueryScope === QueryScope.INDEX_DATA}\" \r\n translate>eo.search.scope.indexdata.label</button>\r\n</div>",
23
+ styles: [":host .query-scope{margin:calc(var(--app-pane-padding)/4) calc(var(--app-pane-padding)/2)}:host .query-scope .query-scope__button{background-color:hsla(0,0%,100%,.1);border:1px solid rgba(var(--color-white-rgb),.54);border-radius:4px;color:rgba(var(--color-white-rgb),.54);font-size:var(--font-caption);margin:0 4px 4px 0;outline:none;padding:4px}:host .query-scope .query-scope__button--active{background-color:var(--color-accent)!important;border-color:#fff;color:#fff!important}"]
24
+ },] }
25
+ ];
26
+ QueryScopeSelectComponent.ctorParameters = () => [];
27
+ QueryScopeSelectComponent.propDecorators = {
28
+ selectedQueryScope: [{ type: Input, args: ['selection',] }],
29
+ select: [{ type: Output }]
30
+ };
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktc2NvcGUtc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL3VpL3F1ZXJ5LXNjb3BlLXNlbGVjdC9xdWVyeS1zY29wZS1zZWxlY3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQU94QyxNQUFNLE9BQU8seUJBQXlCO0lBaUJwQztRQWhCQSxlQUFVLEdBQUcsVUFBVSxDQUFDO1FBY3hCLFdBQU0sR0FBNkIsSUFBSSxZQUFZLEVBQWMsQ0FBQztJQUVsRCxDQUFDO0lBWmpCLElBQ0ksa0JBQWtCLENBQUMsS0FBaUI7UUFDdEMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7SUFDbEMsQ0FBQztJQU9ELGdCQUFnQixDQUFDLEtBQWlCO1FBQ2hDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDNUMsQ0FBQzs7O1lBM0JGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsdUJBQXVCO2dCQUNqQyxvM0JBQWtEOzthQUVuRDs7OztpQ0FNRSxLQUFLLFNBQUMsV0FBVztxQkFTakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgRXZlbnRFbWl0dGVyLCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1F1ZXJ5U2NvcGV9IGZyb20gJ0Blby1zZGsvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VvLXF1ZXJ5LXNjb3BlLXNlbGVjdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3F1ZXJ5LXNjb3BlLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcXVlcnktc2NvcGUtc2VsZWN0LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFF1ZXJ5U2NvcGVTZWxlY3RDb21wb25lbnQge1xyXG4gIFF1ZXJ5U2NvcGUgPSBRdWVyeVNjb3BlO1xyXG4gIFxyXG4gIHByaXZhdGUgX3NlbGVjdGVkUXVlcnlTY29wZTogUXVlcnlTY29wZTtcclxuXHJcbiAgQElucHV0KCdzZWxlY3Rpb24nKVxyXG4gIHNldCBzZWxlY3RlZFF1ZXJ5U2NvcGUoc2NvcGU6IFF1ZXJ5U2NvcGUpIHtcclxuICAgIHRoaXMuX3NlbGVjdGVkUXVlcnlTY29wZSA9IHNjb3BlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNlbGVjdGVkUXVlcnlTY29wZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZFF1ZXJ5U2NvcGU7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KClcclxuICBzZWxlY3Q6IEV2ZW50RW1pdHRlcjxRdWVyeVNjb3BlPiA9IG5ldyBFdmVudEVtaXR0ZXI8UXVlcnlTY29wZT4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgc2VsZWN0UXVlcnlTY29wZShzY29wZTogUXVlcnlTY29wZSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFF1ZXJ5U2NvcGUgPSBzY29wZTtcclxuICAgIHRoaXMuc2VsZWN0LmVtaXQodGhpcy5zZWxlY3RlZFF1ZXJ5U2NvcGUpO1xyXG4gIH1cclxuXHJcbn1cclxuIl19