@netgrif/components-core 6.2.1 → 6.3.0-rc.1

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 (72) hide show
  1. package/commons/schema.d.ts +1 -0
  2. package/esm2020/assets/i18n/de.json +26 -8
  3. package/esm2020/assets/i18n/en.json +19 -1
  4. package/esm2020/assets/i18n/sk.json +19 -1
  5. package/esm2020/commons/schema.mjs +1 -1
  6. package/esm2020/lib/authentication/models/user.transformer.mjs +2 -2
  7. package/esm2020/lib/authentication/public-api.mjs +3 -1
  8. package/esm2020/lib/authorization/permission/access.service.mjs +2 -2
  9. package/esm2020/lib/authorization/permission/permission.service.mjs +2 -2
  10. package/esm2020/lib/authorization/role/role-guard.service.mjs +36 -11
  11. package/esm2020/lib/data-fields/file-field/abstract-file-field.component.mjs +6 -3
  12. package/esm2020/lib/data-fields/file-list-field/abstract-file-list-field.component.mjs +5 -2
  13. package/esm2020/lib/data-fields/number-field/currency-number-field/abstract-currency-number-field.component.mjs +3 -2
  14. package/esm2020/lib/filter/filter.repository.mjs +7 -1
  15. package/esm2020/lib/impersonation/models/user-impersonate-config-metadata.mjs +2 -0
  16. package/esm2020/lib/impersonation/models/user-impersonation-constants.mjs +11 -0
  17. package/esm2020/lib/impersonation/public-api.mjs +9 -0
  18. package/esm2020/lib/impersonation/services/impersonation-user-list.service.mjs +19 -0
  19. package/esm2020/lib/impersonation/services/impersonation-user-resource.service.mjs +25 -0
  20. package/esm2020/lib/impersonation/services/impersonation-user-select.service.mjs +85 -0
  21. package/esm2020/lib/impersonation/services/impersonation.service.mjs +90 -0
  22. package/esm2020/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.mjs +25 -9
  23. package/esm2020/lib/navigation/navigation-drawer/abstract-navigation-drawer.component.mjs +2 -2
  24. package/esm2020/lib/navigation/quick-panel/components/abstract-quick-panel.component.mjs +1 -1
  25. package/esm2020/lib/resources/engine-endpoint/task-resource.service.mjs +3 -3
  26. package/esm2020/lib/resources/interface/user-resource.mjs +1 -1
  27. package/esm2020/lib/search/models/category/case/case-dataset.mjs +7 -4
  28. package/esm2020/lib/search/search-operand-input-component/abstract-search-operand-input.component.mjs +3 -3
  29. package/esm2020/lib/side-menu/content-components/injection-tokens.mjs +3 -1
  30. package/esm2020/lib/side-menu/content-components/new-case/abstract-new-case.component.mjs +22 -11
  31. package/esm2020/lib/side-menu/content-components/public-api.mjs +3 -1
  32. package/esm2020/lib/side-menu/content-components/user-impersonate/abstract-user-impersonate.component.mjs +37 -0
  33. package/esm2020/lib/side-menu/content-components/user-impersonate/model/user-impersonate-injection-data.mjs +2 -0
  34. package/esm2020/lib/side-menu/models/side-menu-size.mjs +2 -1
  35. package/esm2020/lib/task-content/field-component-resolver/abstract-field-component-resolver.component.mjs +2 -3
  36. package/esm2020/lib/user/models/user.mjs +15 -2
  37. package/esm2020/lib/user/services/user-comparator.service.mjs +4 -3
  38. package/esm2020/lib/user/services/user.service.mjs +17 -12
  39. package/esm2020/lib/utility/tests/test-config.mjs +6 -1
  40. package/esm2020/public-api.mjs +2 -1
  41. package/fesm2015/netgrif-components-core.mjs +449 -72
  42. package/fesm2015/netgrif-components-core.mjs.map +1 -1
  43. package/fesm2020/netgrif-components-core.mjs +445 -72
  44. package/fesm2020/netgrif-components-core.mjs.map +1 -1
  45. package/lib/authentication/public-api.d.ts +2 -0
  46. package/lib/authorization/role/role-guard.service.d.ts +2 -1
  47. package/lib/data-fields/number-field/currency-number-field/abstract-currency-number-field.component.d.ts +1 -0
  48. package/lib/filter/filter.repository.d.ts +4 -0
  49. package/lib/impersonation/models/user-impersonate-config-metadata.d.ts +3 -0
  50. package/lib/impersonation/models/user-impersonation-constants.d.ts +9 -0
  51. package/lib/impersonation/public-api.d.ts +6 -0
  52. package/lib/impersonation/services/impersonation-user-list.service.d.ts +12 -0
  53. package/lib/impersonation/services/impersonation-user-resource.service.d.ts +17 -0
  54. package/lib/impersonation/services/impersonation-user-select.service.d.ts +25 -0
  55. package/lib/impersonation/services/impersonation.service.d.ts +37 -0
  56. package/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.d.ts +10 -3
  57. package/lib/navigation/quick-panel/components/abstract-quick-panel.component.d.ts +1 -1
  58. package/lib/resources/engine-endpoint/task-resource.service.d.ts +2 -1
  59. package/lib/resources/interface/user-resource.d.ts +1 -0
  60. package/lib/search/search-operand-input-component/abstract-search-operand-input.component.d.ts +1 -1
  61. package/lib/side-menu/content-components/injection-tokens.d.ts +2 -0
  62. package/lib/side-menu/content-components/public-api.d.ts +2 -0
  63. package/lib/side-menu/content-components/user-impersonate/abstract-user-impersonate.component.d.ts +14 -0
  64. package/lib/side-menu/content-components/user-impersonate/model/user-impersonate-injection-data.d.ts +8 -0
  65. package/lib/side-menu/models/side-menu-size.d.ts +2 -1
  66. package/lib/user/models/user.d.ts +10 -1
  67. package/lib/user/services/user-comparator.service.d.ts +1 -1
  68. package/package.json +1 -1
  69. package/public-api.d.ts +1 -0
  70. package/src/assets/i18n/de.json +26 -8
  71. package/src/assets/i18n/en.json +19 -1
  72. package/src/assets/i18n/sk.json +19 -1
@@ -103,16 +103,27 @@ export class AbstractNewCaseComponent {
103
103
  };
104
104
  this._caseResourceService.createCase(newCase)
105
105
  .subscribe((response) => {
106
- this._snackBarService.openSuccessSnackBar(response.outcome.message === undefined
107
- ? this._translate.instant('side-menu.new-case.createCase') + ' ' + newCase.title
108
- : response.outcome.message);
109
- this._sideMenuControl.close({
110
- opened: false,
111
- message: response.outcome.message === undefined
112
- ? 'Confirm new case setup'
113
- : response.outcome.message,
114
- data: response.outcome.aCase
115
- });
106
+ if (!!response.outcome) {
107
+ this._snackBarService.openSuccessSnackBar(response.outcome.message === undefined
108
+ ? this._translate.instant('side-menu.new-case.createCase') + ' ' + newCase.title
109
+ : response.outcome.message);
110
+ this._sideMenuControl.close({
111
+ opened: false,
112
+ message: response.outcome.message === undefined
113
+ ? 'Confirm new case setup'
114
+ : response.outcome.message,
115
+ data: response.outcome.aCase
116
+ });
117
+ }
118
+ else if (!!response.error) {
119
+ this._snackBarService.openWarningSnackBar(this._translate.instant('side-menu.new-case.createCaseError') + ' ' + newCase.title);
120
+ this._sideMenuControl.close({
121
+ opened: false,
122
+ message: response.error === undefined
123
+ ? 'Confirm new case setup'
124
+ : response.error
125
+ });
126
+ }
116
127
  }, error => this._snackBarService.openErrorSnackBar(error.message ? error.message : error));
117
128
  }
118
129
  }
@@ -241,4 +252,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
241
252
  type: ViewChild,
242
253
  args: ['stepper2']
243
254
  }] } });
244
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtbmV3LWNhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9zaWRlLW1lbnUvY29udGVudC1jb21wb25lbnRzL25ldy1jYXNlL2Fic3RyYWN0LW5ldy1jYXNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBYSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUFjLFdBQVcsRUFBRSxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRSxPQUFPLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBYyxhQUFhLEVBQWUsTUFBTSxNQUFNLENBQUM7QUFFN0YsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFLdEUsT0FBTyxFQUFDLE1BQU0sRUFBaUIsTUFBTSxrQkFBa0IsQ0FBQztBQUV4RCxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7Ozs7Ozs7O0FBZTVCLE1BQU0sT0FBZ0Isd0JBQXdCO0lBdUIxQyxZQUErRCxnQkFBaUMsRUFDaEUsWUFBeUIsRUFDekIsZ0JBQWlDLEVBQ2pDLG9CQUF5QyxFQUN6QyxlQUErQixFQUMvQixVQUE0QjtRQUxHLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFDaEUsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDekIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUNqQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXFCO1FBQ3pDLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtRQUMvQixlQUFVLEdBQVYsVUFBVSxDQUFrQjtRQTFCNUQsdUJBQWtCLEdB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T0FBTyxDQUFDO1FBQzFHLElBQUksYUFBYSxLQUFLLFNBQVMsRUFBRTtZQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztTQUN4QjtJQUNMLENBQUM7SUFFRCxVQUFVLENBQUMsU0FBYztRQUNyQixJQUFJLFNBQVMsS0FBSyxJQUFJLElBQUksU0FBUyxDQUFDLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDckQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUN4QjtJQUNMLENBQUM7O3NIQTFQaUIsd0JBQXdCLGtCQXVCWixxQkFBcUI7MEdBdkJqQyx3QkFBd0IsK1VBRmhDLEVBQUU7NEZBRU0sd0JBQXdCO2tCQUo3QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFFBQVEsRUFBRSxFQUFFO2lCQUNmOzswQkF3QjBCLE1BQU07MkJBQUMscUJBQXFCO2tNQVg3QixPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVM7Z0JBRUcsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUNFLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbmplY3QsIE9uRGVzdHJveSwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1N0ZXBwZXJTZWxlY3Rpb25FdmVudH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3N0ZXBwZXInO1xuaW1wb3J0IHttYXAsIHN0YXJ0V2l0aCwgdGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7U25hY2tCYXJTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zbmFjay1iYXIvc2VydmljZXMvc25hY2stYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHtOQUVfU0lERV9NRU5VX0NPTlRST0x9IGZyb20gJy4uLy4uL3NpZGUtbWVudS1pbmplY3Rpb24tdG9rZW4nO1xuaW1wb3J0IHtTaWRlTWVudUNvbnRyb2x9IGZyb20gJy4uLy4uL21vZGVscy9zaWRlLW1lbnUtY29udHJvbCc7XG5pbXBvcnQge0Nhc2VSZXNvdXJjZVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3Jlc291cmNlcy9lbmdpbmUtZW5kcG9pbnQvY2FzZS1yZXNvdXJjZS5zZXJ2aWNlJztcbmltcG9ydCB7TmV3Q2FzZUluamVjdGlvbkRhdGF9IGZyb20gJy4vbW9kZWwvbmV3LWNhc2UtaW5qZWN0aW9uLWRhdGEnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7SG90a2V5LCBIb3RrZXlzU2VydmljZX0gZnJvbSAnYW5ndWxhcjItaG90a2V5cyc7XG5pbXBvcnQge01hdFRvb2xiYXJ9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2xiYXInO1xuaW1wb3J0IHNlbXZlciBmcm9tICdzZW12ZXInO1xuaW1wb3J0IHtDcmVhdGVDYXNlRXZlbnRPdXRjb21lfSBmcm9tICcuLi8uLi8uLi9ldmVudC9tb2RlbC9ldmVudC1vdXRjb21lcy9jYXNlLW91dGNvbWVzL2NyZWF0ZS1jYXNlLWV2ZW50LW91dGNvbWUnO1xuaW1wb3J0IHtFdmVudE91dGNvbWVNZXNzYWdlUmVzb3VyY2V9IGZyb20gJy4uLy4uLy4uL3Jlc291cmNlcy9pbnRlcmZhY2UvbWVzc2FnZS1yZXNvdXJjZSc7XG5pbXBvcnQge01hdE9wdGlvbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5cbmludGVyZmFjZSBGb3JtIHtcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIHZpZXdWYWx1ZTogc3RyaW5nO1xuICAgIHZlcnNpb24/OiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmNjLWFic3RyYWN0LW5ldy1jYXNlJyxcbiAgICB0ZW1wbGF0ZTogJydcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3ROZXdDYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICAgIHByb2Nlc3NGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgdGl0bGVGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgbmV0VmVyc2lvbjogc3RyaW5nO1xuXG4gICAgb3B0aW9uczogQXJyYXk8Rm9ybT4gPSBbXTtcbiAgICBjb2xvcnM6IEFycmF5PEZvcm0+ID0gW1xuICAgICAgICB7dmFsdWU6ICdwYW5lbC1wcmltYXJ5LWljb24nLCB2aWV3VmFsdWU6ICdQcmltYXJ5J30sXG4gICAgICAgIHt2YWx1ZTogJ3BhbmVsLWFjY2VudC1pY29uJywgdmlld1ZhbHVlOiAnQWNjZW50J30sXG4gICAgXTtcbiAgICBmaWx0ZXJlZE9wdGlvbnMkOiBPYnNlcnZhYmxlPEFycmF5PEZvcm0+PjtcbiAgICBAVmlld0NoaWxkKCd0b29sYmFyJykgdG9vbGJhcjogTWF0VG9vbGJhcjtcblxuICAgIEBWaWV3Q2hpbGQoJ3N0ZXBwZXIxJykgc3RlcHBlcjE7XG4gICAgQFZpZXdDaGlsZCgnc3RlcHBlcjInKSBzdGVwcGVyMjtcblxuICAgIHByb3RlY3RlZCBfb3B0aW9ucyQ6IFJlcGxheVN1YmplY3Q8QXJyYXk8Rm9ybT4+O1xuICAgIHByb3RlY3RlZCBfaW5qZWN0ZWREYXRhOiBOZXdDYXNlSW5qZWN0aW9uRGF0YTtcbiAgICBwcm90ZWN0ZWQgX2hhc011bHRpcGxlTmV0cyQ6IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj47XG4gICAgcHJvdGVjdGVkIF9ub3RJbml0aWFsaXplZCQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcbiAgICBwcml2YXRlIF9hbGxvd2VkTmV0c1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKEBJbmplY3QoTkFFX1NJREVfTUVOVV9DT05UUk9MKSBwcm90ZWN0ZWQgX3NpZGVNZW51Q29udHJvbDogU2lkZU1lbnVDb250cm9sLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2Zvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9zbmFja0JhclNlcnZpY2U6IFNuYWNrQmFyU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9jYXNlUmVzb3VyY2VTZXJ2aWNlOiBDYXNlUmVzb3VyY2VTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2hvdGtleXNTZXJ2aWNlOiBIb3RrZXlzU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcbiAgICAgICAgaWYgKHRoaXMuX3NpZGVNZW51Q29udHJvbC5kYXRhKSB7XG4gICAgICAgICAgICB0aGlzLl9pbmplY3RlZERhdGEgPSB0aGlzLl9zaWRlTWVudUNvbnRyb2wuZGF0YSBhcyBOZXdDYXNlSW5qZWN0aW9uRGF0YTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuX2luamVjdGVkRGF0YSkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZU5vTmV0cygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2hvdGtleXNTZXJ2aWNlLmFkZChuZXcgSG90a2V5KCdlbnRlcicsIChldmVudDogS2V5Ym9hcmRFdmVudCk6IGJvb2xlYW4gPT4ge1xuICAgICAgICAgICAgdGhpcy5uZXh0U3RlcCgpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9KSk7XG5cbiAgICAgICAgdGhpcy5faGFzTXVsdGlwbGVOZXRzJCA9IG5ldyBSZXBsYXlTdWJqZWN0KDEpO1xuICAgICAgICB0aGlzLl9ub3RJbml0aWFsaXplZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICAgICAgICB0aGlzLl9vcHRpb25zJCA9IG5ldyBSZXBsYXlTdWJqZWN0KDEpO1xuXG4gICAgICAgIHRoaXMuX2FsbG93ZWROZXRzU3Vic2NyaXB0aW9uID0gdGhpcy5faW5qZWN0ZWREYXRhLmFsbG93ZWROZXRzJC5waXBlKFxuICAgICAgICAgICAgbWFwKG5ldHMgPT4gbmV0cy5tYXAocGV0cmlOZXQgPT4gKHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogcGV0cmlOZXQuc3RyaW5nSWQsXG4gICAgICAgICAgICAgICAgdmlld1ZhbHVlOiBwZXRyaU5ldC50aXRsZSxcbiAgICAgICAgICAgICAgICB2ZXJzaW9uOiBwZXRyaU5ldC52ZXJzaW9uXG4gICAgICAgICAgICB9KSkpLFxuICAgICAgICAgICAgbWFwKG5ldHMgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5fc2lkZU1lbnVDb250cm9sLmFsbFZlcnNpb25FbmFibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlbW92ZU9sZFZlcnNpb25zKG5ldHMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXRzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFwKG9wdGlvbnMgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlTm9OZXRzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgICAgICAgICAgICAgdGhpcy5faGFzTXVsdGlwbGVOZXRzJC5uZXh0KG9wdGlvbnMubGVuZ3RoID4gMSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApLnN1YnNjcmliZShvcHRpb25zID0+IHtcbiAgICAgICAgICAgIHRoaXMuX29wdGlvbnMkLm5leHQob3B0aW9ucyk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX25vdEluaXRpYWxpemVkJC5jbG9zZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9ub3RJbml0aWFsaXplZCQubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbm90SW5pdGlhbGl6ZWQkLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuX29wdGlvbnMkLCB0aGlzLnByb2Nlc3NGb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgoJycpKV0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoc291cmNlcyA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHNvdXJjZXNbMF07XG4gICAgICAgICAgICAgICAgY29uc3QgaW5wdXQgPSB0eXBlb2Ygc291cmNlc1sxXSA9PT0gJ3N0cmluZycgfHwgc291cmNlc1sxXSA9PT0gbnVsbCA/IHNvdXJjZXNbMV0gOiBzb3VyY2VzWzFdLnZpZXdWYWx1ZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaW5wdXQgPyB0aGlzLl9maWx0ZXIoaW5wdXQsIG9wdGlvbnMpIDogb3B0aW9ucy5zbGljZSgpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0YXAoZmlsdGVyZWRPcHRpb25zID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZmlsdGVyZWRPcHRpb25zLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NGb3JtQ29udHJvbC5zZXRWYWx1ZShmaWx0ZXJlZE9wdGlvbnNbMF0sIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faGFzTXVsdGlwbGVOZXRzJC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9hbGxvd2VkTmV0c1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaGFzTXVsdGlwbGVOZXRzJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc011bHRpcGxlTmV0cyQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBub3RJbml0aWFsaXplZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ub3RJbml0aWFsaXplZCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0ZXBDaGFuZ2UoJGV2ZW50OiBTdGVwcGVyU2VsZWN0aW9uRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2lkZU1lbnVDb250cm9sLnB1Ymxpc2goe1xuICAgICAgICAgICAgb3BlbmVkOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogJ0FjdGl2ZSBzdGVwIGhhcyBjaGFuZ2VkJyxcbiAgICAgICAgICAgIGRhdGE6ICRldmVudFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBkaXNwbGF5Rm4ocHJvY2VzczogRm9ybSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBwcm9jZXNzICYmIHByb2Nlc3Mudmlld1ZhbHVlID8gcHJvY2Vzcy52aWV3VmFsdWUgOiAnJztcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlTmV3Q2FzZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudGl0bGVGb3JtQ29udHJvbC52YWxpZCB8fCAhdGhpcy5pc0Nhc2VUaXRsZVJlcXVpcmVkKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld0Nhc2UgPSB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRoaXMudGl0bGVGb3JtQ29udHJvbC52YWx1ZSA9PT0gJycgPyBudWxsIDogdGhpcy50aXRsZUZvcm1Db250cm9sLnZhbHVlLFxuICAgICAgICAgICAgICAgIGNvbG9yOiAncGFuZWwtcHJpbWFyeS1pY29uJyxcbiAgICAgICAgICAgICAgICBuZXRJZDogdGhpcy5vcHRpb25zLmxlbmd0aCA9PT0gMSA/IHRoaXMub3B0aW9uc1swXS52YWx1ZSA6IHRoaXMucHJvY2Vzc0Zvcm1Db250cm9sLnZhbHVlLnZhbHVlXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLl9jYXNlUmVzb3VyY2VTZXJ2aWNlLmNyZWF0ZUNhc2UobmV3Q2FzZSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2U6IEV2ZW50T3V0Y29tZU1lc3NhZ2VSZXNvdXJjZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc25hY2tCYXJTZXJ2aWNlLm9wZW5TdWNjZXNzU25hY2tCYXIocmVzcG9uc2Uub3V0Y29tZS5tZXNzYWdlID09PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdzaWRlLW1lbnUubmV3LWNhc2UuY3JlYXRlQ2FzZScpICsgJyAnICsgbmV3Q2FzZS50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcmVzcG9uc2Uub3V0Y29tZS5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NpZGVNZW51Q29udHJvbC5jbG9zZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlbmVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiByZXNwb25zZS5vdXRjb21lLm1lc3NhZ2UgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdDb25maXJtIG5ldyBjYXNlIHNldHVwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHJlc3BvbnNlLm91dGNvbWUubWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiAocmVzcG9uc2Uub3V0Y29tZSBhcyBDcmVhdGVDYXNlRXZlbnRPdXRjb21lKS5hQ2FzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGVycm9yID0+IHRoaXMuX3NuYWNrQmFyU2VydmljZS5vcGVuRXJyb3JTbmFja0JhcihlcnJvci5tZXNzYWdlID8gZXJyb3IubWVzc2FnZSA6IGVycm9yKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGdW5jdGlvbiB0byBmaWx0ZXIgb3V0IG1hdGNobGVzcyBvcHRpb25zIHdpdGhvdXQgYWNjZW50IGFuZCBjYXNlLXNlbnNpdGl2ZSBkaWZmZXJlbmNlc1xuICAgICAqIEBwYXJhbSB2YWx1ZSB0byBjb21wYXJlIG1hdGNoaW5nIG9wdGlvbnNcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyB0aGF0IHNob3VsZCBiZSBmaWx0ZXJlZFxuICAgICAqIEByZXR1cm4gIHJldHVybiBtYXRjaGVkIG9wdGlvbnNcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2ZpbHRlcih2YWx1ZTogc3RyaW5nLCBvcHRpb25zOiBBcnJheTxGb3JtPik6IEFycmF5PEZvcm0+IHtcbiAgICAgICAgY29uc3QgZmlsdGVyVmFsdWUgPSB2YWx1ZS50b0xvd2VyQ2FzZSgpLm5vcm1hbGl6ZSgnTkZEJykucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgJycpO1xuXG4gICAgICAgIHJldHVybiBvcHRpb25zLmZpbHRlcihvcHRpb24gPT4gb3B0aW9uLnZpZXdWYWx1ZS50b0xvd2VyQ2FzZSgpLm5vcm1hbGl6ZSgnTkZEJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCAnJykuaW5kZXhPZihmaWx0ZXJWYWx1ZSkgPT09IDApO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjbG9zZU5vTmV0cygpIHtcbiAgICAgICAgdGhpcy5fc25hY2tCYXJTZXJ2aWNlLm9wZW5FcnJvclNuYWNrQmFyKHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdzaWRlLW1lbnUubmV3LWNhc2Uubm9OZXRzJykpO1xuICAgICAgICB0aGlzLl9zaWRlTWVudUNvbnRyb2wuY2xvc2Uoe1xuICAgICAgICAgICAgb3BlbmVkOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZXh0U3RlcCgpIHtcbiAgICAgICAgaWYgKHRoaXMuc3RlcHBlcjEpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnN0ZXBwZXIxLnNlbGVjdGVkSW5kZXggPT09IDEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZU5ld0Nhc2UoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwcGVyMS5uZXh0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuc3RlcHBlcjIpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnN0ZXBwZXIyLnNlbGVjdGVkSW5kZXggPT09IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZU5ld0Nhc2UoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwcGVyMi5uZXh0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0aXRsZVNob3J0ZW5pbmcoKSB7XG4gICAgICAgIGxldCBzaXplO1xuICAgICAgICBpZiAodGhpcy50b29sYmFyICYmIHRoaXMudG9vbGJhci5fZWxlbWVudFJlZiAmJiB0aGlzLnRvb2xiYXIuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCAmJlxuICAgICAgICAgICAgdGhpcy50b29sYmFyLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpIHtcbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy50b29sYmFyLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpIHtcbiAgICAgICAgICAgICAgICBjYXNlIDI5NjpcbiAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IDIyO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ5NjpcbiAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IDQyO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDI0NjpcbiAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IDE4O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBzaXplID0gMzI7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2l6ZSA9IDMyO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY2F6ZSA9IHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdzaWRlLW1lbnUubmV3LWNhc2UuY2FzZScpO1xuICAgICAgICBjb25zdCBuYW1lID0gdHlwZW9mIHRoaXMucHJvY2Vzc0Zvcm1Db250cm9sLnZhbHVlID09PSAnc3RyaW5nJyB8fCB0aGlzLnByb2Nlc3NGb3JtQ29udHJvbC52YWx1ZSA9PT0gbnVsbCA/XG4gICAgICAgICAgICB1bmRlZmluZWQgOiB0aGlzLnByb2Nlc3NGb3JtQ29udHJvbC52YWx1ZS52aWV3VmFsdWU7XG4gICAgICAgIGNvbnN0IHRpdGxlID0gbmFtZSA9PT0gdW5kZWZpbmVkID8gY2F6ZSA6IGNhemUgKyAnIC0gJyArIG5hbWU7XG4gICAgICAgIGlmICh0aXRsZS5sZW5ndGggPiBzaXplKSB7XG4gICAgICAgICAgICBjb25zdCB0bXAgPSB0aXRsZS5zbGljZSgwLCBzaXplKTtcbiAgICAgICAgICAgIHJldHVybiB0bXAgKyAnLi4uJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGl0bGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW1vdmVPbGRWZXJzaW9ucyhvcHRpb25zOiBBcnJheTxGb3JtPik6IEFycmF5PEZvcm0+IHtcbiAgICAgICAgY29uc3QgdGVtcE5ldHMgPSBPYmplY3QuYXNzaWduKFtdLCBvcHRpb25zKTtcbiAgICAgICAgY29uc3QgcGV0cmlOZXRJZHMgPSBuZXcgU2V0KG9wdGlvbnMubWFwKGZvcm0gPT4gZm9ybS52YWx1ZSkpO1xuICAgICAgICBjb25zdCBuZXdlc3ROZXRzID0gbmV3IEFycmF5PEZvcm0+KCk7XG5cbiAgICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiBwZXRyaU5ldElkcykge1xuICAgICAgICAgICAgbGV0IGN1cnJlbnQ6IEZvcm0gPSB7dmFsdWUsIHZlcnNpb246ICcxLjAuMCcsIHZpZXdWYWx1ZTogJyd9O1xuICAgICAgICAgICAgZm9yIChjb25zdCBuZXQgb2YgdGVtcE5ldHMpIHtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09IG5ldC52YWx1ZSAmJiAhc2VtdmVyLmx0KG5ldC52ZXJzaW9uLCBjdXJyZW50LnZlcnNpb24pKSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBuZXQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbmV3ZXN0TmV0cy5wdXNoKGN1cnJlbnQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXdlc3ROZXRzO1xuICAgIH1cblxuICAgIGlzQ2FzZVRpdGxlRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhKHRoaXMuX2luamVjdGVkRGF0YT8ubmV3Q2FzZUNyZWF0aW9uQ29uZmlndXJhdGlvbj8uZW5hYmxlQ2FzZVRpdGxlID8/IHRydWUpO1xuICAgIH1cblxuICAgIGlzQ2FzZVRpdGxlUmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzQ2FzZVRpdGxlRW5hYmxlZCgpICYmICEhKHRoaXMuX2luamVjdGVkRGF0YT8ubmV3Q2FzZUNyZWF0aW9uQ29uZmlndXJhdGlvbj8uaXNDYXNlVGl0bGVSZXF1aXJlZCA/PyB0cnVlKTtcbiAgICB9XG5cbiAgICBzaG93VmVyc2lvbihvcHRpb246IE1hdE9wdGlvbik6IHZvaWQge1xuICAgICAgICBpZiAob3B0aW9uICE9PSB1bmRlZmluZWQgJiYgb3B0aW9uLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgb3B0aW9uLnZhbHVlLnZlcnNpb24gIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHRoaXMubmV0VmVyc2lvbiA9IG9wdGlvbi52YWx1ZS52ZXJzaW9uO1xuICAgIH1cblxuICAgIGNoZWNrVmVyc2lvbih2aWV3VmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50T3B0aW9uID0gdHlwZW9mIHZpZXdWYWx1ZSA9PT0gJ3N0cmluZycgfHwgdmlld1ZhbHVlID09PSBudWxsID8gdW5kZWZpbmVkIDogdmlld1ZhbHVlLnZlcnNpb247XG4gICAgICAgIGlmIChjdXJyZW50T3B0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMubmV0VmVyc2lvbiA9ICcnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9OZXh0U3RlcCh2aWV3VmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAodmlld1ZhbHVlICE9PSBudWxsICYmIHZpZXdWYWx1ZS52YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLnN0ZXBwZXIxLm5leHQoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
255
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtbmV3LWNhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9zaWRlLW1lbnUvY29udGVudC1jb21wb25lbnRzL25ldy1jYXNlL2Fic3RyYWN0LW5ldy1jYXNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBYSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUFjLFdBQVcsRUFBRSxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRSxPQUFPLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBYyxhQUFhLEVBQWUsTUFBTSxNQUFNLENBQUM7QUFFN0YsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFLdEUsT0FBTyxFQUFDLE1BQU0sRUFBaUIsTUFBTSxrQkFBa0IsQ0FBQztBQUV4RCxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7Ozs7Ozs7O0FBZTVCLE1BQU0sT0FBZ0Isd0JBQXdCO0lBdUIxQyxZQUErRCxnQkFBaUMsRUFDaEUsWUFBeUIsRUFDekIsZ0JBQWlDLEVBQ2pDLG9CQUF5QyxFQUN6QyxlQUErQixFQUMvQixVQUE0QjtRQUxHLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFDaEUsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDekIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUNqQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXFCO1FBQ3pDLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtRQUMvQixlQUFVLEdBQVYsVUFBVSxDQUFrQjtRQTFCNUQsdUJBQWtCLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5RCxxQkFBZ0IsR0FBRyxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRzVELFlBQU8sR0FBZ0IsRUFBRSxDQUFDO1FBQzFCLFdBQU0sR0FBZ0I7WUFDbEIsRUFBQyxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBQztZQUNuRCxFQUFDLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFDO1NBQ3BELENBQUM7UUFtQkUsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFO1lBQzVCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQTRCLENBQUM7U0FDM0U7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNyQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDdEI7UUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFvQixFQUFXLEVBQUU7WUFDM0UsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hCLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFSixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksZUFBZSxDQUFVLElBQUksQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFdEMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDaEUsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDOUIsS0FBSyxFQUFFLFFBQVEsQ0FBQyxRQUFRO1lBQ3hCLFNBQVMsRUFBRSxRQUFRLENBQUMsS0FBSztZQUN6QixPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU87U0FDNUIsQ0FBQyxDQUFDLENBQUMsRUFDSixHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDUCxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixFQUFFO2dCQUMxQyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN2QztpQkFBTTtnQkFDSCxPQUFPLElBQUksQ0FBQzthQUNmO1FBQ0wsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2FBQ3RCO1lBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7WUFDdkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3BELENBQUMsQ0FBQyxDQUNMLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFO2dCQUMvQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNsQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDcEM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ2xILEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQixNQUFNLEtBQUssR0FBRyxPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ3hHLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2xFLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRTtZQUNsQixJQUFJLGVBQWUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUM5QixJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDO2FBQzVFO1FBQ0wsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRUQsSUFBVyxnQkFBZ0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDakQsQ0FBQztJQUVELElBQVcsZUFBZTtRQUN0QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRU0sVUFBVSxDQUFDLE1BQTZCO1FBQzNDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7WUFDMUIsTUFBTSxFQUFFLElBQUk7WUFDWixPQUFPLEVBQUUseUJBQXlCO1lBQ2xDLElBQUksRUFBRSxNQUFNO1NBQ2YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFNBQVMsQ0FBQyxPQUFhO1FBQ25CLE9BQU8sT0FBTyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNqRSxDQUFDO0lBRU0sYUFBYTtRQUNoQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsRUFBRTtZQUM1RCxNQUFNLE9BQU8sR0FBRztnQkFDWixLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUs7Z0JBQzlFLEtBQUssRUFBRSxvQkFBb0I7Z0JBQzNCLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLEtBQUs7YUFDakcsQ0FBQztZQUVGLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDO2lCQUN4QyxTQUFTLENBQ04sQ0FBQyxRQUFxQyxFQUFFLEVBQUU7Z0JBQ3RDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUU7b0JBQ3BCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sS0FBSyxTQUFTO3dCQUM1RSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsK0JBQStCLENBQUMsR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDLEtBQUs7d0JBQ2hGLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUNoQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO3dCQUN4QixNQUFNLEVBQUUsS0FBSzt3QkFDYixPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEtBQUssU0FBUzs0QkFDM0MsQ0FBQyxDQUFDLHdCQUF3Qjs0QkFDMUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTzt3QkFFOUIsSUFBSSxFQUFHLFFBQVEsQ0FBQyxPQUFrQyxDQUFDLEtBQUs7cUJBQzNELENBQUMsQ0FBQztpQkFDTjtxQkFBTSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFO29CQUN6QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsb0NBQW9DLENBQUMsR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUMvSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO3dCQUN4QixNQUFNLEVBQUUsS0FBSzt3QkFDYixPQUFPLEVBQUUsUUFBUSxDQUFDLEtBQUssS0FBSyxTQUFTOzRCQUNqQyxDQUFDLENBQUMsd0JBQXdCOzRCQUMxQixDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUs7cUJBQ3ZCLENBQUMsQ0FBQztpQkFDTjtZQUNMLENBQUMsRUFDRCxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FDMUYsQ0FBQztTQUNUO0lBQ0wsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ08sT0FBTyxDQUFDLEtBQWEsRUFBRSxPQUFvQjtRQUNqRCxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUV6RixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7YUFDMUUsT0FBTyxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRVMsV0FBVztRQUNqQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDO1FBQzlGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7WUFDeEIsTUFBTSxFQUFFLEtBQUs7U0FDaEIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxLQUFLLENBQUMsRUFBRTtnQkFDbkMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2FBQ3hCO2lCQUFNO2dCQUNILElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDeEI7U0FDSjtRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEtBQUssQ0FBQyxFQUFFO2dCQUNuQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7YUFDeEI7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUN4QjtTQUNKO0lBQ0wsQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLElBQUksQ0FBQztRQUNULElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxhQUFhO1lBQ2xGLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUU7WUFDcEQsUUFBUSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFO2dCQUN4RCxLQUFLLEdBQUc7b0JBQ0osSUFBSSxHQUFHLEVBQUUsQ0FBQztvQkFDVixNQUFNO2dCQUNWLEtBQUssR0FBRztvQkFDSixJQUFJLEdBQUcsRUFBRSxDQUFDO29CQUNWLE1BQU07Z0JBQ1YsS0FBSyxHQUFHO29CQUNKLElBQUksR0FBRyxFQUFFLENBQUM7b0JBQ1YsTUFBTTtnQkFDVjtvQkFDSSxJQUFJLEdBQUcsRUFBRSxDQUFDO29CQUNWLE1BQU07YUFDYjtTQUNKO2FBQU07WUFDSCxJQUFJLEdBQUcsRUFBRSxDQUFDO1NBQ2I7UUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sSUFBSSxHQUFHLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQztZQUN0RyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQ3hELE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDOUQsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksRUFBRTtZQUNyQixNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNqQyxPQUFPLEdBQUcsR0FBRyxLQUFLLENBQUM7U0FDdEI7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRU8saUJBQWlCLENBQUMsT0FBb0I7UUFDMUMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDNUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzdELE1BQU0sVUFBVSxHQUFHLElBQUksS0FBSyxFQUFRLENBQUM7UUFFckMsS0FBSyxNQUFNLEtBQUssSUFBSSxXQUFXLEVBQUU7WUFDN0IsSUFBSSxPQUFPLEdBQVMsRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFDLENBQUM7WUFDN0QsS0FBSyxNQUFNLEdBQUcsSUFBSSxRQUFRLEVBQUU7Z0JBQ3hCLElBQUksS0FBSyxLQUFLLEdBQUcsQ0FBQyxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUNqRSxPQUFPLEdBQUcsR0FBRyxDQUFDO2lCQUNqQjthQUNKO1lBQ0QsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM1QjtRQUNELE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxrQkFBa0I7UUFDZCxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsNEJBQTRCLEVBQUUsZUFBZSxJQUFJLElBQUksQ0FBQyxDQUFDO0lBQ3pGLENBQUM7SUFFRCxtQkFBbUI7UUFDZixPQUFPLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsNEJBQTRCLEVBQUUsbUJBQW1CLElBQUksSUFBSSxDQUFDLENBQUM7SUFDMUgsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFpQjtRQUN6QixJQUFJLE1BQU0sS0FBSyxTQUFTLElBQUksTUFBTSxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLEtBQUssU0FBUztZQUN4RixJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBQy9DLENBQUM7SUFFRCxZQUFZLENBQUMsU0FBYztRQUN2QixNQUFNLGFBQWEsR0FBRyxPQUFPLFNBQVMsS0FBSyxRQUFRLElBQUksU0FBUyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO1FBQzFHLElBQUksYUFBYSxLQUFLLFNBQVMsRUFBRTtZQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztTQUN4QjtJQUNMLENBQUM7SUFFRCxVQUFVLENBQUMsU0FBYztRQUNyQixJQUFJLFNBQVMsS0FBSyxJQUFJLElBQUksU0FBUyxDQUFDLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDckQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUN4QjtJQUNMLENBQUM7O3NIQXBRaUIsd0JBQXdCLGtCQXVCWixxQkFBcUI7MEdBdkJqQyx3QkFBd0IsK1VBRmhDLEVBQUU7NEZBRU0sd0JBQXdCO2tCQUo3QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFFBQVEsRUFBRSxFQUFFO2lCQUNmOzswQkF3QjBCLE1BQU07MkJBQUMscUJBQXFCO2tNQVg3QixPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVM7Z0JBRUcsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUNFLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbmplY3QsIE9uRGVzdHJveSwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1N0ZXBwZXJTZWxlY3Rpb25FdmVudH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3N0ZXBwZXInO1xuaW1wb3J0IHttYXAsIHN0YXJ0V2l0aCwgdGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7U25hY2tCYXJTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zbmFjay1iYXIvc2VydmljZXMvc25hY2stYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHtOQUVfU0lERV9NRU5VX0NPTlRST0x9IGZyb20gJy4uLy4uL3NpZGUtbWVudS1pbmplY3Rpb24tdG9rZW4nO1xuaW1wb3J0IHtTaWRlTWVudUNvbnRyb2x9IGZyb20gJy4uLy4uL21vZGVscy9zaWRlLW1lbnUtY29udHJvbCc7XG5pbXBvcnQge0Nhc2VSZXNvdXJjZVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3Jlc291cmNlcy9lbmdpbmUtZW5kcG9pbnQvY2FzZS1yZXNvdXJjZS5zZXJ2aWNlJztcbmltcG9ydCB7TmV3Q2FzZUluamVjdGlvbkRhdGF9IGZyb20gJy4vbW9kZWwvbmV3LWNhc2UtaW5qZWN0aW9uLWRhdGEnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7SG90a2V5LCBIb3RrZXlzU2VydmljZX0gZnJvbSAnYW5ndWxhcjItaG90a2V5cyc7XG5pbXBvcnQge01hdFRvb2xiYXJ9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2xiYXInO1xuaW1wb3J0IHNlbXZlciBmcm9tICdzZW12ZXInO1xuaW1wb3J0IHtDcmVhdGVDYXNlRXZlbnRPdXRjb21lfSBmcm9tICcuLi8uLi8uLi9ldmVudC9tb2RlbC9ldmVudC1vdXRjb21lcy9jYXNlLW91dGNvbWVzL2NyZWF0ZS1jYXNlLWV2ZW50LW91dGNvbWUnO1xuaW1wb3J0IHtFdmVudE91dGNvbWVNZXNzYWdlUmVzb3VyY2V9IGZyb20gJy4uLy4uLy4uL3Jlc291cmNlcy9pbnRlcmZhY2UvbWVzc2FnZS1yZXNvdXJjZSc7XG5pbXBvcnQge01hdE9wdGlvbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5cbmludGVyZmFjZSBGb3JtIHtcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIHZpZXdWYWx1ZTogc3RyaW5nO1xuICAgIHZlcnNpb24/OiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmNjLWFic3RyYWN0LW5ldy1jYXNlJyxcbiAgICB0ZW1wbGF0ZTogJydcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3ROZXdDYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICAgIHByb2Nlc3NGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgdGl0bGVGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgbmV0VmVyc2lvbjogc3RyaW5nO1xuXG4gICAgb3B0aW9uczogQXJyYXk8Rm9ybT4gPSBbXTtcbiAgICBjb2xvcnM6IEFycmF5PEZvcm0+ID0gW1xuICAgICAgICB7dmFsdWU6ICdwYW5lbC1wcmltYXJ5LWljb24nLCB2aWV3VmFsdWU6ICdQcmltYXJ5J30sXG4gICAgICAgIHt2YWx1ZTogJ3BhbmVsLWFjY2VudC1pY29uJywgdmlld1ZhbHVlOiAnQWNjZW50J30sXG4gICAgXTtcbiAgICBmaWx0ZXJlZE9wdGlvbnMkOiBPYnNlcnZhYmxlPEFycmF5PEZvcm0+PjtcbiAgICBAVmlld0NoaWxkKCd0b29sYmFyJykgdG9vbGJhcjogTWF0VG9vbGJhcjtcblxuICAgIEBWaWV3Q2hpbGQoJ3N0ZXBwZXIxJykgc3RlcHBlcjE7XG4gICAgQFZpZXdDaGlsZCgnc3RlcHBlcjInKSBzdGVwcGVyMjtcblxuICAgIHByb3RlY3RlZCBfb3B0aW9ucyQ6IFJlcGxheVN1YmplY3Q8QXJyYXk8Rm9ybT4+O1xuICAgIHByb3RlY3RlZCBfaW5qZWN0ZWREYXRhOiBOZXdDYXNlSW5qZWN0aW9uRGF0YTtcbiAgICBwcm90ZWN0ZWQgX2hhc011bHRpcGxlTmV0cyQ6IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj47XG4gICAgcHJvdGVjdGVkIF9ub3RJbml0aWFsaXplZCQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcbiAgICBwcml2YXRlIF9hbGxvd2VkTmV0c1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKEBJbmplY3QoTkFFX1NJREVfTUVOVV9DT05UUk9MKSBwcm90ZWN0ZWQgX3NpZGVNZW51Q29udHJvbDogU2lkZU1lbnVDb250cm9sLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2Zvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9zbmFja0JhclNlcnZpY2U6IFNuYWNrQmFyU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9jYXNlUmVzb3VyY2VTZXJ2aWNlOiBDYXNlUmVzb3VyY2VTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2hvdGtleXNTZXJ2aWNlOiBIb3RrZXlzU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcbiAgICAgICAgaWYgKHRoaXMuX3NpZGVNZW51Q29udHJvbC5kYXRhKSB7XG4gICAgICAgICAgICB0aGlzLl9pbmplY3RlZERhdGEgPSB0aGlzLl9zaWRlTWVudUNvbnRyb2wuZGF0YSBhcyBOZXdDYXNlSW5qZWN0aW9uRGF0YTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuX2luamVjdGVkRGF0YSkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZU5vTmV0cygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2hvdGtleXNTZXJ2aWNlLmFkZChuZXcgSG90a2V5KCdlbnRlcicsIChldmVudDogS2V5Ym9hcmRFdmVudCk6IGJvb2xlYW4gPT4ge1xuICAgICAgICAgICAgdGhpcy5uZXh0U3RlcCgpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9KSk7XG5cbiAgICAgICAgdGhpcy5faGFzTXVsdGlwbGVOZXRzJCA9IG5ldyBSZXBsYXlTdWJqZWN0KDEpO1xuICAgICAgICB0aGlzLl9ub3RJbml0aWFsaXplZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICAgICAgICB0aGlzLl9vcHRpb25zJCA9IG5ldyBSZXBsYXlTdWJqZWN0KDEpO1xuXG4gICAgICAgIHRoaXMuX2FsbG93ZWROZXRzU3Vic2NyaXB0aW9uID0gdGhpcy5faW5qZWN0ZWREYXRhLmFsbG93ZWROZXRzJC5waXBlKFxuICAgICAgICAgICAgbWFwKG5ldHMgPT4gbmV0cy5tYXAocGV0cmlOZXQgPT4gKHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogcGV0cmlOZXQuc3RyaW5nSWQsXG4gICAgICAgICAgICAgICAgdmlld1ZhbHVlOiBwZXRyaU5ldC50aXRsZSxcbiAgICAgICAgICAgICAgICB2ZXJzaW9uOiBwZXRyaU5ldC52ZXJzaW9uXG4gICAgICAgICAgICB9KSkpLFxuICAgICAgICAgICAgbWFwKG5ldHMgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5fc2lkZU1lbnVDb250cm9sLmFsbFZlcnNpb25FbmFibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlbW92ZU9sZFZlcnNpb25zKG5ldHMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXRzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFwKG9wdGlvbnMgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlTm9OZXRzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgICAgICAgICAgICAgdGhpcy5faGFzTXVsdGlwbGVOZXRzJC5uZXh0KG9wdGlvbnMubGVuZ3RoID4gMSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApLnN1YnNjcmliZShvcHRpb25zID0+IHtcbiAgICAgICAgICAgIHRoaXMuX29wdGlvbnMkLm5leHQob3B0aW9ucyk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX25vdEluaXRpYWxpemVkJC5jbG9zZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9ub3RJbml0aWFsaXplZCQubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbm90SW5pdGlhbGl6ZWQkLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuX29wdGlvbnMkLCB0aGlzLnByb2Nlc3NGb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgoJycpKV0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoc291cmNlcyA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHNvdXJjZXNbMF07XG4gICAgICAgICAgICAgICAgY29uc3QgaW5wdXQgPSB0eXBlb2Ygc291cmNlc1sxXSA9PT0gJ3N0cmluZycgfHwgc291cmNlc1sxXSA9PT0gbnVsbCA/IHNvdXJjZXNbMV0gOiBzb3VyY2VzWzFdLnZpZXdWYWx1ZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaW5wdXQgPyB0aGlzLl9maWx0ZXIoaW5wdXQsIG9wdGlvbnMpIDogb3B0aW9ucy5zbGljZSgpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0YXAoZmlsdGVyZWRPcHRpb25zID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZmlsdGVyZWRPcHRpb25zLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NGb3JtQ29udHJvbC5zZXRWYWx1ZShmaWx0ZXJlZE9wdGlvbnNbMF0sIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faGFzTXVsdGlwbGVOZXRzJC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9hbGxvd2VkTmV0c1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaGFzTXVsdGlwbGVOZXRzJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc011bHRpcGxlTmV0cyQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBub3RJbml0aWFsaXplZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ub3RJbml0aWFsaXplZCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0ZXBDaGFuZ2UoJGV2ZW50OiBTdGVwcGVyU2VsZWN0aW9uRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2lkZU1lbnVDb250cm9sLnB1Ymxpc2goe1xuICAgICAgICAgICAgb3BlbmVkOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogJ0FjdGl2ZSBzdGVwIGhhcyBjaGFuZ2VkJyxcbiAgICAgICAgICAgIGRhdGE6ICRldmVudFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBkaXNwbGF5Rm4ocHJvY2VzczogRm9ybSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBwcm9jZXNzICYmIHByb2Nlc3Mudmlld1ZhbHVlID8gcHJvY2Vzcy52aWV3VmFsdWUgOiAnJztcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlTmV3Q2FzZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudGl0bGVGb3JtQ29udHJvbC52YWxpZCB8fCAhdGhpcy5pc0Nhc2VUaXRsZVJlcXVpcmVkKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld0Nhc2UgPSB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRoaXMudGl0bGVGb3JtQ29udHJvbC52YWx1ZSA9PT0gJycgPyBudWxsIDogdGhpcy50aXRsZUZvcm1Db250cm9sLnZhbHVlLFxuICAgICAgICAgICAgICAgIGNvbG9yOiAncGFuZWwtcHJpbWFyeS1pY29uJyxcbiAgICAgICAgICAgICAgICBuZXRJZDogdGhpcy5vcHRpb25zLmxlbmd0aCA9PT0gMSA/IHRoaXMub3B0aW9uc1swXS52YWx1ZSA6IHRoaXMucHJvY2Vzc0Zvcm1Db250cm9sLnZhbHVlLnZhbHVlXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLl9jYXNlUmVzb3VyY2VTZXJ2aWNlLmNyZWF0ZUNhc2UobmV3Q2FzZSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2U6IEV2ZW50T3V0Y29tZU1lc3NhZ2VSZXNvdXJjZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEhcmVzcG9uc2Uub3V0Y29tZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NuYWNrQmFyU2VydmljZS5vcGVuU3VjY2Vzc1NuYWNrQmFyKHJlc3BvbnNlLm91dGNvbWUubWVzc2FnZSA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ3NpZGUtbWVudS5uZXctY2FzZS5jcmVhdGVDYXNlJykgKyAnICcgKyBuZXdDYXNlLnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcmVzcG9uc2Uub3V0Y29tZS5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zaWRlTWVudUNvbnRyb2wuY2xvc2Uoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiByZXNwb25zZS5vdXRjb21lLm1lc3NhZ2UgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnQ29uZmlybSBuZXcgY2FzZSBzZXR1cCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcmVzcG9uc2Uub3V0Y29tZS5tZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogKHJlc3BvbnNlLm91dGNvbWUgYXMgQ3JlYXRlQ2FzZUV2ZW50T3V0Y29tZSkuYUNhc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoISFyZXNwb25zZS5lcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NuYWNrQmFyU2VydmljZS5vcGVuV2FybmluZ1NuYWNrQmFyKHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdzaWRlLW1lbnUubmV3LWNhc2UuY3JlYXRlQ2FzZUVycm9yJykgKyAnICcgKyBuZXdDYXNlLnRpdGxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zaWRlTWVudUNvbnRyb2wuY2xvc2Uoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiByZXNwb25zZS5lcnJvciA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdDb25maXJtIG5ldyBjYXNlIHNldHVwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiByZXNwb25zZS5lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBlcnJvciA9PiB0aGlzLl9zbmFja0JhclNlcnZpY2Uub3BlbkVycm9yU25hY2tCYXIoZXJyb3IubWVzc2FnZSA/IGVycm9yLm1lc3NhZ2UgOiBlcnJvcilcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRnVuY3Rpb24gdG8gZmlsdGVyIG91dCBtYXRjaGxlc3Mgb3B0aW9ucyB3aXRob3V0IGFjY2VudCBhbmQgY2FzZS1zZW5zaXRpdmUgZGlmZmVyZW5jZXNcbiAgICAgKiBAcGFyYW0gdmFsdWUgdG8gY29tcGFyZSBtYXRjaGluZyBvcHRpb25zXG4gICAgICogQHBhcmFtIG9wdGlvbnMgdGhhdCBzaG91bGQgYmUgZmlsdGVyZWRcbiAgICAgKiBAcmV0dXJuICByZXR1cm4gbWF0Y2hlZCBvcHRpb25zXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9maWx0ZXIodmFsdWU6IHN0cmluZywgb3B0aW9uczogQXJyYXk8Rm9ybT4pOiBBcnJheTxGb3JtPiB7XG4gICAgICAgIGNvbnN0IGZpbHRlclZhbHVlID0gdmFsdWUudG9Mb3dlckNhc2UoKS5ub3JtYWxpemUoJ05GRCcpLnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2csICcnKTtcblxuICAgICAgICByZXR1cm4gb3B0aW9ucy5maWx0ZXIob3B0aW9uID0+IG9wdGlvbi52aWV3VmFsdWUudG9Mb3dlckNhc2UoKS5ub3JtYWxpemUoJ05GRCcpXG4gICAgICAgICAgICAucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgJycpLmluZGV4T2YoZmlsdGVyVmFsdWUpID09PSAwKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY2xvc2VOb05ldHMoKSB7XG4gICAgICAgIHRoaXMuX3NuYWNrQmFyU2VydmljZS5vcGVuRXJyb3JTbmFja0Jhcih0aGlzLl90cmFuc2xhdGUuaW5zdGFudCgnc2lkZS1tZW51Lm5ldy1jYXNlLm5vTmV0cycpKTtcbiAgICAgICAgdGhpcy5fc2lkZU1lbnVDb250cm9sLmNsb3NlKHtcbiAgICAgICAgICAgIG9wZW5lZDogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmV4dFN0ZXAoKSB7XG4gICAgICAgIGlmICh0aGlzLnN0ZXBwZXIxKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zdGVwcGVyMS5zZWxlY3RlZEluZGV4ID09PSAxKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVOZXdDYXNlKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcHBlcjEubmV4dCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnN0ZXBwZXIyKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zdGVwcGVyMi5zZWxlY3RlZEluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVOZXdDYXNlKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcHBlcjIubmV4dCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdGl0bGVTaG9ydGVuaW5nKCkge1xuICAgICAgICBsZXQgc2l6ZTtcbiAgICAgICAgaWYgKHRoaXMudG9vbGJhciAmJiB0aGlzLnRvb2xiYXIuX2VsZW1lbnRSZWYgJiYgdGhpcy50b29sYmFyLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgJiZcbiAgICAgICAgICAgIHRoaXMudG9vbGJhci5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMudG9vbGJhci5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAyOTY6XG4gICAgICAgICAgICAgICAgICAgIHNpemUgPSAyMjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OTY6XG4gICAgICAgICAgICAgICAgICAgIHNpemUgPSA0MjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAyNDY6XG4gICAgICAgICAgICAgICAgICAgIHNpemUgPSAxODtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IDMyO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNpemUgPSAzMjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNhemUgPSB0aGlzLl90cmFuc2xhdGUuaW5zdGFudCgnc2lkZS1tZW51Lm5ldy1jYXNlLmNhc2UnKTtcbiAgICAgICAgY29uc3QgbmFtZSA9IHR5cGVvZiB0aGlzLnByb2Nlc3NGb3JtQ29udHJvbC52YWx1ZSA9PT0gJ3N0cmluZycgfHwgdGhpcy5wcm9jZXNzRm9ybUNvbnRyb2wudmFsdWUgPT09IG51bGwgP1xuICAgICAgICAgICAgdW5kZWZpbmVkIDogdGhpcy5wcm9jZXNzRm9ybUNvbnRyb2wudmFsdWUudmlld1ZhbHVlO1xuICAgICAgICBjb25zdCB0aXRsZSA9IG5hbWUgPT09IHVuZGVmaW5lZCA/IGNhemUgOiBjYXplICsgJyAtICcgKyBuYW1lO1xuICAgICAgICBpZiAodGl0bGUubGVuZ3RoID4gc2l6ZSkge1xuICAgICAgICAgICAgY29uc3QgdG1wID0gdGl0bGUuc2xpY2UoMCwgc2l6ZSk7XG4gICAgICAgICAgICByZXR1cm4gdG1wICsgJy4uLic7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRpdGxlO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVtb3ZlT2xkVmVyc2lvbnMob3B0aW9uczogQXJyYXk8Rm9ybT4pOiBBcnJheTxGb3JtPiB7XG4gICAgICAgIGNvbnN0IHRlbXBOZXRzID0gT2JqZWN0LmFzc2lnbihbXSwgb3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IHBldHJpTmV0SWRzID0gbmV3IFNldChvcHRpb25zLm1hcChmb3JtID0+IGZvcm0udmFsdWUpKTtcbiAgICAgICAgY29uc3QgbmV3ZXN0TmV0cyA9IG5ldyBBcnJheTxGb3JtPigpO1xuXG4gICAgICAgIGZvciAoY29uc3QgdmFsdWUgb2YgcGV0cmlOZXRJZHMpIHtcbiAgICAgICAgICAgIGxldCBjdXJyZW50OiBGb3JtID0ge3ZhbHVlLCB2ZXJzaW9uOiAnMS4wLjAnLCB2aWV3VmFsdWU6ICcnfTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbmV0IG9mIHRlbXBOZXRzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlID09PSBuZXQudmFsdWUgJiYgIXNlbXZlci5sdChuZXQudmVyc2lvbiwgY3VycmVudC52ZXJzaW9uKSkge1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50ID0gbmV0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5ld2VzdE5ldHMucHVzaChjdXJyZW50KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3ZXN0TmV0cztcbiAgICB9XG5cbiAgICBpc0Nhc2VUaXRsZUVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhISh0aGlzLl9pbmplY3RlZERhdGE/Lm5ld0Nhc2VDcmVhdGlvbkNvbmZpZ3VyYXRpb24/LmVuYWJsZUNhc2VUaXRsZSA/PyB0cnVlKTtcbiAgICB9XG5cbiAgICBpc0Nhc2VUaXRsZVJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0Nhc2VUaXRsZUVuYWJsZWQoKSAmJiAhISh0aGlzLl9pbmplY3RlZERhdGE/Lm5ld0Nhc2VDcmVhdGlvbkNvbmZpZ3VyYXRpb24/LmlzQ2FzZVRpdGxlUmVxdWlyZWQgPz8gdHJ1ZSk7XG4gICAgfVxuXG4gICAgc2hvd1ZlcnNpb24ob3B0aW9uOiBNYXRPcHRpb24pOiB2b2lkIHtcbiAgICAgICAgaWYgKG9wdGlvbiAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbi52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbi52YWx1ZS52ZXJzaW9uICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICB0aGlzLm5ldFZlcnNpb24gPSBvcHRpb24udmFsdWUudmVyc2lvbjtcbiAgICB9XG5cbiAgICBjaGVja1ZlcnNpb24odmlld1ZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY3VycmVudE9wdGlvbiA9IHR5cGVvZiB2aWV3VmFsdWUgPT09ICdzdHJpbmcnIHx8IHZpZXdWYWx1ZSA9PT0gbnVsbCA/IHVuZGVmaW5lZCA6IHZpZXdWYWx1ZS52ZXJzaW9uO1xuICAgICAgICBpZiAoY3VycmVudE9wdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLm5ldFZlcnNpb24gPSAnJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRvTmV4dFN0ZXAodmlld1ZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHZpZXdWYWx1ZSAhPT0gbnVsbCAmJiB2aWV3VmFsdWUudmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5zdGVwcGVyMS5uZXh0KCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -9,6 +9,7 @@ export * from './filter-selector/filter-selector-list-item/abstract-filter-selec
9
9
  export * from './option-selector/abstract-option-selector.component';
10
10
  export * from './save-filter/abstract-save-filter.component';
11
11
  export * from './load-filter/abstract-load-filter.component';
12
+ export * from './user-impersonate/abstract-user-impersonate.component';
12
13
  /* MODELS */
13
14
  export * from './filter-selector/model/filter-selector-injection-data';
14
15
  export * from './option-selector/model/option-selector-injection-data';
@@ -17,4 +18,5 @@ export * from './save-filter/model/save-filter-injection-data';
17
18
  export * from './load-filter/model/load-filter-injection-data';
18
19
  export * from './injection-tokens';
19
20
  export * from './new-case/model/new-case-injection-data';
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvc2lkZS1tZW51L2NvbnRlbnQtY29tcG9uZW50cy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQjtBQUNoQixjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLG9FQUFvRSxDQUFDO0FBQ25GLGNBQWMscUZBQXFGLENBQUM7QUFDcEcsY0FBYyxzREFBc0QsQ0FBQztBQUNyRSxjQUFjLDBGQUEwRixDQUFDO0FBQ3pHLGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLDhDQUE4QyxDQUFDO0FBRTdELFlBQVk7QUFDWixjQUFjLHdEQUF3RCxDQUFDO0FBQ3ZFLGNBQWMsd0RBQXdELENBQUM7QUFDdkUsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLDBDQUEwQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogQ09NUE9ORU5UUyAqL1xuZXhwb3J0ICogZnJvbSAnLi9pbXBvcnQtbmV0L2Fic3RyYWN0LWltcG9ydC1uZXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbmV3LWNhc2UvYWJzdHJhY3QtbmV3LWNhc2UuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdXNlci1hc3NpZ24vYWJzdHJhY3QtdXNlci1hc3NpZ24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdXNlci1hc3NpZ24vdXNlci1hc3NpZ24tbGlzdC9hYnN0cmFjdC11c2VyLWFzc2lnbi1saXN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3VzZXItYXNzaWduL3VzZXItYXNzaWduLWxpc3QvdXNlci1hc3NpZ24taXRlbS9hYnN0cmFjdC11c2VyLWFzc2lnbi1pdGVtLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbHRlci1zZWxlY3Rvci9hYnN0cmFjdC1maWx0ZXItc2VsZWN0b3IuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZmlsdGVyLXNlbGVjdG9yL2ZpbHRlci1zZWxlY3Rvci1saXN0LWl0ZW0vYWJzdHJhY3QtZmlsdGVyLXNlbGVjdG9yLWxpc3QtaXRlbS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9vcHRpb24tc2VsZWN0b3IvYWJzdHJhY3Qtb3B0aW9uLXNlbGVjdG9yLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NhdmUtZmlsdGVyL2Fic3RyYWN0LXNhdmUtZmlsdGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xvYWQtZmlsdGVyL2Fic3RyYWN0LWxvYWQtZmlsdGVyLmNvbXBvbmVudCc7XG5cbi8qIE1PREVMUyAqL1xuZXhwb3J0ICogZnJvbSAnLi9maWx0ZXItc2VsZWN0b3IvbW9kZWwvZmlsdGVyLXNlbGVjdG9yLWluamVjdGlvbi1kYXRhJztcbmV4cG9ydCAqIGZyb20gJy4vb3B0aW9uLXNlbGVjdG9yL21vZGVsL29wdGlvbi1zZWxlY3Rvci1pbmplY3Rpb24tZGF0YSc7XG5leHBvcnQgKiBmcm9tICcuL3VzZXItYXNzaWduL21vZGVsL3VzZXItbGlzdC1pbmplY3RlZC1kYXRhJztcbmV4cG9ydCAqIGZyb20gJy4vc2F2ZS1maWx0ZXIvbW9kZWwvc2F2ZS1maWx0ZXItaW5qZWN0aW9uLWRhdGEnO1xuZXhwb3J0ICogZnJvbSAnLi9sb2FkLWZpbHRlci9tb2RlbC9sb2FkLWZpbHRlci1pbmplY3Rpb24tZGF0YSc7XG5leHBvcnQgKiBmcm9tICcuL2luamVjdGlvbi10b2tlbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9uZXctY2FzZS9tb2RlbC9uZXctY2FzZS1pbmplY3Rpb24tZGF0YSc7XG4iXX0=
21
+ export * from './user-impersonate/model/user-impersonate-injection-data';
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvc2lkZS1tZW51L2NvbnRlbnQtY29tcG9uZW50cy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQjtBQUNoQixjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLG9FQUFvRSxDQUFDO0FBQ25GLGNBQWMscUZBQXFGLENBQUM7QUFDcEcsY0FBYyxzREFBc0QsQ0FBQztBQUNyRSxjQUFjLDBGQUEwRixDQUFDO0FBQ3pHLGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsd0RBQXdELENBQUM7QUFFdkUsWUFBWTtBQUNaLGNBQWMsd0RBQXdELENBQUM7QUFDdkUsY0FBYyx3REFBd0QsQ0FBQztBQUN2RSxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYywwREFBMEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIENPTVBPTkVOVFMgKi9cbmV4cG9ydCAqIGZyb20gJy4vaW1wb3J0LW5ldC9hYnN0cmFjdC1pbXBvcnQtbmV0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL25ldy1jYXNlL2Fic3RyYWN0LW5ldy1jYXNlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3VzZXItYXNzaWduL2Fic3RyYWN0LXVzZXItYXNzaWduLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3VzZXItYXNzaWduL3VzZXItYXNzaWduLWxpc3QvYWJzdHJhY3QtdXNlci1hc3NpZ24tbGlzdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi91c2VyLWFzc2lnbi91c2VyLWFzc2lnbi1saXN0L3VzZXItYXNzaWduLWl0ZW0vYWJzdHJhY3QtdXNlci1hc3NpZ24taXRlbS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9maWx0ZXItc2VsZWN0b3IvYWJzdHJhY3QtZmlsdGVyLXNlbGVjdG9yLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbHRlci1zZWxlY3Rvci9maWx0ZXItc2VsZWN0b3ItbGlzdC1pdGVtL2Fic3RyYWN0LWZpbHRlci1zZWxlY3Rvci1saXN0LWl0ZW0uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vb3B0aW9uLXNlbGVjdG9yL2Fic3RyYWN0LW9wdGlvbi1zZWxlY3Rvci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zYXZlLWZpbHRlci9hYnN0cmFjdC1zYXZlLWZpbHRlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9sb2FkLWZpbHRlci9hYnN0cmFjdC1sb2FkLWZpbHRlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi91c2VyLWltcGVyc29uYXRlL2Fic3RyYWN0LXVzZXItaW1wZXJzb25hdGUuY29tcG9uZW50JztcblxuLyogTU9ERUxTICovXG5leHBvcnQgKiBmcm9tICcuL2ZpbHRlci1zZWxlY3Rvci9tb2RlbC9maWx0ZXItc2VsZWN0b3ItaW5qZWN0aW9uLWRhdGEnO1xuZXhwb3J0ICogZnJvbSAnLi9vcHRpb24tc2VsZWN0b3IvbW9kZWwvb3B0aW9uLXNlbGVjdG9yLWluamVjdGlvbi1kYXRhJztcbmV4cG9ydCAqIGZyb20gJy4vdXNlci1hc3NpZ24vbW9kZWwvdXNlci1saXN0LWluamVjdGVkLWRhdGEnO1xuZXhwb3J0ICogZnJvbSAnLi9zYXZlLWZpbHRlci9tb2RlbC9zYXZlLWZpbHRlci1pbmplY3Rpb24tZGF0YSc7XG5leHBvcnQgKiBmcm9tICcuL2xvYWQtZmlsdGVyL21vZGVsL2xvYWQtZmlsdGVyLWluamVjdGlvbi1kYXRhJztcbmV4cG9ydCAqIGZyb20gJy4vaW5qZWN0aW9uLXRva2Vucyc7XG5leHBvcnQgKiBmcm9tICcuL25ldy1jYXNlL21vZGVsL25ldy1jYXNlLWluamVjdGlvbi1kYXRhJztcbmV4cG9ydCAqIGZyb20gJy4vdXNlci1pbXBlcnNvbmF0ZS9tb2RlbC91c2VyLWltcGVyc29uYXRlLWluamVjdGlvbi1kYXRhJztcbiJdfQ==
@@ -0,0 +1,37 @@
1
+ import { Component, Inject } from '@angular/core';
2
+ import { NAE_SIDE_MENU_CONTROL } from '../../side-menu-injection-token';
3
+ import { AbstractCaseViewComponent } from '../../../view/case-view/abstract-case-view';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../../../view/case-view/service/case-view-service";
6
+ import * as i2 from "../../models/side-menu-control";
7
+ export class AbstractUserImpersonateComponent extends AbstractCaseViewComponent {
8
+ constructor(_sideMenuControl, caseViewService) {
9
+ super(caseViewService);
10
+ this._sideMenuControl = _sideMenuControl;
11
+ if (this._sideMenuControl.data) {
12
+ this._injectedData = this._sideMenuControl.data;
13
+ }
14
+ }
15
+ handleCaseClick(clickedCase) {
16
+ this._sideMenuControl.close({
17
+ opened: false,
18
+ message: 'User selected',
19
+ data: {
20
+ stringId: clickedCase.stringId
21
+ }
22
+ });
23
+ }
24
+ }
25
+ AbstractUserImpersonateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AbstractUserImpersonateComponent, deps: [{ token: NAE_SIDE_MENU_CONTROL }, { token: i1.CaseViewService }], target: i0.ɵɵFactoryTarget.Component });
26
+ AbstractUserImpersonateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: AbstractUserImpersonateComponent, selector: "ncc-abstract-user-impersonate", usesInheritance: true, ngImport: i0, template: '', isInline: true });
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AbstractUserImpersonateComponent, decorators: [{
28
+ type: Component,
29
+ args: [{
30
+ selector: 'ncc-abstract-user-impersonate',
31
+ template: ''
32
+ }]
33
+ }], ctorParameters: function () { return [{ type: i2.SideMenuControl, decorators: [{
34
+ type: Inject,
35
+ args: [NAE_SIDE_MENU_CONTROL]
36
+ }] }, { type: i1.CaseViewService }]; } });
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtdXNlci1pbXBlcnNvbmF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL3NpZGUtbWVudS9jb250ZW50LWNvbXBvbmVudHMvdXNlci1pbXBlcnNvbmF0ZS9hYnN0cmFjdC11c2VyLWltcGVyc29uYXRlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNoRCxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUd0RSxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQzs7OztBQVFyRixNQUFNLE9BQWdCLGdDQUFpQyxTQUFRLHlCQUF5QjtJQUlwRixZQUErRCxnQkFBaUMsRUFDMUUsZUFBZ0M7UUFDbEQsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRm9DLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFHNUYsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFO1lBQzVCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQW9DLENBQUM7U0FDbkY7SUFDTCxDQUFDO0lBRUQsZUFBZSxDQUFDLFdBQWlCO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7WUFDeEIsTUFBTSxFQUFFLEtBQUs7WUFDYixPQUFPLEVBQUUsZUFBZTtZQUN4QixJQUFJLEVBQUU7Z0JBQ0YsUUFBUSxFQUFFLFdBQVcsQ0FBQyxRQUFRO2FBQ0E7U0FDckMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7OEhBcEJpQixnQ0FBZ0Msa0JBSXBCLHFCQUFxQjtrSEFKakMsZ0NBQWdDLDRGQUZ4QyxFQUFFOzRGQUVNLGdDQUFnQztrQkFKckQsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsK0JBQStCO29CQUN6QyxRQUFRLEVBQUUsRUFBRTtpQkFDZjs7MEJBSzBCLE1BQU07MkJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTaWRlTWVudUNvbnRyb2x9IGZyb20gJy4uLy4uL21vZGVscy9zaWRlLW1lbnUtY29udHJvbCc7XG5pbXBvcnQge0NvbXBvbmVudCwgSW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TkFFX1NJREVfTUVOVV9DT05UUk9MfSBmcm9tICcuLi8uLi9zaWRlLW1lbnUtaW5qZWN0aW9uLXRva2VuJztcbmltcG9ydCB7Q2FzZVZpZXdTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi92aWV3L2Nhc2Utdmlldy9zZXJ2aWNlL2Nhc2Utdmlldy1zZXJ2aWNlJztcbmltcG9ydCB7Q2FzZX0gZnJvbSAnLi4vLi4vLi4vcmVzb3VyY2VzL2ludGVyZmFjZS9jYXNlJztcbmltcG9ydCB7QWJzdHJhY3RDYXNlVmlld0NvbXBvbmVudH0gZnJvbSAnLi4vLi4vLi4vdmlldy9jYXNlLXZpZXcvYWJzdHJhY3QtY2FzZS12aWV3JztcbmltcG9ydCB7VXNlckltcGVyc29uYXRlQ29uZmlnTWV0YWRhdGF9IGZyb20gJy4uLy4uLy4uL2ltcGVyc29uYXRpb24vbW9kZWxzL3VzZXItaW1wZXJzb25hdGUtY29uZmlnLW1ldGFkYXRhJztcbmltcG9ydCB7VXNlckltcGVyc29uYXRlSW5qZWN0aW9uRGF0YX0gZnJvbSAnLi9tb2RlbC91c2VyLWltcGVyc29uYXRlLWluamVjdGlvbi1kYXRhJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduY2MtYWJzdHJhY3QtdXNlci1pbXBlcnNvbmF0ZScsXG4gICAgdGVtcGxhdGU6ICcnXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0VXNlckltcGVyc29uYXRlQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RDYXNlVmlld0NvbXBvbmVudCB7XG5cbiAgICBwcm90ZWN0ZWQgX2luamVjdGVkRGF0YTogVXNlckltcGVyc29uYXRlSW5qZWN0aW9uRGF0YTtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihASW5qZWN0KE5BRV9TSURFX01FTlVfQ09OVFJPTCkgcHJvdGVjdGVkIF9zaWRlTWVudUNvbnRyb2w6IFNpZGVNZW51Q29udHJvbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZVZpZXdTZXJ2aWNlOiBDYXNlVmlld1NlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoY2FzZVZpZXdTZXJ2aWNlKTtcbiAgICAgICAgaWYgKHRoaXMuX3NpZGVNZW51Q29udHJvbC5kYXRhKSB7XG4gICAgICAgICAgICB0aGlzLl9pbmplY3RlZERhdGEgPSB0aGlzLl9zaWRlTWVudUNvbnRyb2wuZGF0YSBhcyBVc2VySW1wZXJzb25hdGVJbmplY3Rpb25EYXRhO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFuZGxlQ2FzZUNsaWNrKGNsaWNrZWRDYXNlOiBDYXNlKSB7XG4gICAgICAgIHRoaXMuX3NpZGVNZW51Q29udHJvbC5jbG9zZSh7XG4gICAgICAgICAgICBvcGVuZWQ6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogJ1VzZXIgc2VsZWN0ZWQnLFxuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIHN0cmluZ0lkOiBjbGlja2VkQ2FzZS5zdHJpbmdJZFxuICAgICAgICAgICAgfSBhcyBVc2VySW1wZXJzb25hdGVDb25maWdNZXRhZGF0YVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1pbXBlcnNvbmF0ZS1pbmplY3Rpb24tZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvc2lkZS1tZW51L2NvbnRlbnQtY29tcG9uZW50cy91c2VyLWltcGVyc29uYXRlL21vZGVsL3VzZXItaW1wZXJzb25hdGUtaW5qZWN0aW9uLWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U2lkZU1lbnVJbmplY3Rpb25EYXRhfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvc2lkZS1tZW51LWluamVjdGlvbi1kYXRhJztcbmltcG9ydCB7RmlsdGVyfSBmcm9tICcuLi8uLi8uLi8uLi9maWx0ZXIvbW9kZWxzL2ZpbHRlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlckltcGVyc29uYXRlSW5qZWN0aW9uRGF0YSBleHRlbmRzIFNpZGVNZW51SW5qZWN0aW9uRGF0YSB7XG4gICAgLyoqXG4gICAgICogQSBjYXNlIGZpbHRlciBvZiB0aGUgZmlsdGVyIGNhc2VzXG4gICAgICovXG4gICAgZmlsdGVyOiBGaWx0ZXI7XG59XG4iXX0=
@@ -3,5 +3,6 @@ export var SideMenuSize;
3
3
  SideMenuSize["SMALL"] = "side-menu-width-small";
4
4
  SideMenuSize["MEDIUM"] = "side-menu-width-medium";
5
5
  SideMenuSize["LARGE"] = "side-menu-width-large";
6
+ SideMenuSize["XL"] = "side-menu-width-xl";
6
7
  })(SideMenuSize || (SideMenuSize = {}));
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1tZW51LXNpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL3NpZGUtbWVudS9tb2RlbHMvc2lkZS1tZW51LXNpemUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksWUFJWDtBQUpELFdBQVksWUFBWTtJQUNwQiwrQ0FBK0IsQ0FBQTtJQUMvQixpREFBaUMsQ0FBQTtJQUNqQywrQ0FBK0IsQ0FBQTtBQUNuQyxDQUFDLEVBSlcsWUFBWSxLQUFaLFlBQVksUUFJdkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBTaWRlTWVudVNpemUge1xuICAgIFNNQUxMID0gJ3NpZGUtbWVudS13aWR0aC1zbWFsbCcsXG4gICAgTUVESVVNID0gJ3NpZGUtbWVudS13aWR0aC1tZWRpdW0nLFxuICAgIExBUkdFID0gJ3NpZGUtbWVudS13aWR0aC1sYXJnZSdcbn1cbiJdfQ==
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1tZW51LXNpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL3NpZGUtbWVudS9tb2RlbHMvc2lkZS1tZW51LXNpemUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksWUFLWDtBQUxELFdBQVksWUFBWTtJQUNwQiwrQ0FBK0IsQ0FBQTtJQUMvQixpREFBaUMsQ0FBQTtJQUNqQywrQ0FBK0IsQ0FBQTtJQUMvQix5Q0FBeUIsQ0FBQTtBQUM3QixDQUFDLEVBTFcsWUFBWSxLQUFaLFlBQVksUUFLdkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBTaWRlTWVudVNpemUge1xuICAgIFNNQUxMID0gJ3NpZGUtbWVudS13aWR0aC1zbWFsbCcsXG4gICAgTUVESVVNID0gJ3NpZGUtbWVudS13aWR0aC1tZWRpdW0nLFxuICAgIExBUkdFID0gJ3NpZGUtbWVudS13aWR0aC1sYXJnZScsXG4gICAgWEwgPSAnc2lkZS1tZW51LXdpZHRoLXhsJyxcbn1cbiJdfQ==
@@ -28,8 +28,7 @@ export class AbstractFieldComponentResolverComponent {
28
28
  return this.gridElement.item;
29
29
  }
30
30
  getTaskId() {
31
- const referencedTaskId = this.taskContentService.getReferencedFieldTask(this.getDataField().stringId);
32
- return referencedTaskId ?? this.taskContentService.task.stringId;
31
+ return this.taskContentService.task.stringId;
33
32
  }
34
33
  isField() {
35
34
  return this.gridElement.type !== TaskElementType.BLANK && this.gridElement.type !== TaskElementType.DATA_GROUP_TITLE;
@@ -52,4 +51,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
52
51
  }], ctorParameters: function () { return [{ type: i1.TaskContentService }]; }, propDecorators: { gridElement: [{
53
52
  type: Input
54
53
  }] } });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZmllbGQtY29tcG9uZW50LXJlc29sdmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvdGFzay1jb250ZW50L2ZpZWxkLWNvbXBvbmVudC1yZXNvbHZlci9hYnN0cmFjdC1maWVsZC1jb21wb25lbnQtcmVzb2x2ZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRy9DLE9BQU8sRUFBeUIsZUFBZSxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFFM0YsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sOEJBQThCLENBQUM7OztBQUUvRDs7R0FFRztBQUtILE1BQU0sT0FBZ0IsdUNBQXVDO0lBTXpELFlBQWdDLGtCQUFzQztRQUF0Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBSC9ELGtCQUFhLEdBQUcsaUJBQWlCLENBQUM7UUFDbEMsb0JBQWUsR0FBRyxlQUFlLENBQUM7SUFHekMsQ0FBQztJQUVTLGVBQWU7UUFDckIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUNuSSxDQUFDO0lBRUQsY0FBYztRQUNWLE9BQU8sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQsY0FBYztRQUNWLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUE4QixDQUFDO0lBQzNELENBQUM7SUFFRCxpQkFBaUI7UUFDYixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxZQUFZO1FBQ1IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztJQUNqQyxDQUFDO0lBRUQsU0FBUztRQUNMLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0RyxPQUFPLGdCQUFnQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3JFLENBQUM7SUFFRCxPQUFPO1FBQ0gsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksS0FBSyxlQUFlLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxLQUFLLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQztJQUN6SCxDQUFDO0lBRUQsY0FBYztRQUNWLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzlGLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEtBQUssaUJBQWlCLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxTQUFTO2VBQy9ELENBQUMsU0FBUyxDQUFDLElBQUksS0FBSyxTQUFTO21CQUN6QixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBVSxJQUFJLFdBQVcsSUFBSSxTQUFTLENBQUMsVUFBVSxJQUFJLFNBQVMsQ0FBQyxVQUFVLENBQUMsVUFBVSxLQUFLLE1BQU0sQ0FBQyxDQUNuSCxDQUFDO0lBQ1YsQ0FBQzs7cUlBNUNpQix1Q0FBdUM7eUhBQXZDLHVDQUF1QyxxSEFGL0MsRUFBRTs0RkFFTSx1Q0FBdUM7a0JBSjVELFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHVDQUF1QztvQkFDakQsUUFBUSxFQUFFLEVBQUU7aUJBQ2Y7eUdBRVksV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1Rhc2tDb250ZW50U2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvdGFzay1jb250ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtEYXRhZmllbGRHcmlkTGF5b3V0RWxlbWVudH0gZnJvbSAnLi4vbW9kZWwvZGF0YWZpZWxkLWdyaWQtbGF5b3V0LWVsZW1lbnQnO1xuaW1wb3J0IHtUYXNrQ29udGVudEVsZW1lbnRUeXBlLCBUYXNrRWxlbWVudFR5cGV9IGZyb20gJy4uL21vZGVsL3Rhc2stY29udGVudC1lbGVtZW50LXR5cGUnO1xuaW1wb3J0IHtEYXRhRmllbGR9IGZyb20gJy4uLy4uL2RhdGEtZmllbGRzL21vZGVscy9hYnN0cmFjdC1kYXRhLWZpZWxkJztcbmltcG9ydCB7RmllbGRUeXBlUmVzb3VyY2V9IGZyb20gJy4uL21vZGVsL2ZpZWxkLXR5cGUtcmVzb3VyY2UnO1xuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBjb3JyZWN0IHtAbGluayBBYnN0cmFjdERhdGFGaWVsZENvbXBvbmVudH0gaW1wbGVtZW50YXRpb24gZm9yIHRoZSBwcm92aWRlZCBkYXRhIGZpZWxkIG9iamVjdC5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduY2MtYWJzdHJhY3QtZmllbGQtY29tcG9uZW50LXJlc29sdmVyJyxcbiAgICB0ZW1wbGF0ZTogJydcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RGaWVsZENvbXBvbmVudFJlc29sdmVyQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBncmlkRWxlbWVudDogRGF0YWZpZWxkR3JpZExheW91dEVsZW1lbnQ7XG5cbiAgICBwdWJsaWMgZmllbGRUeXBlRW51bSA9IEZpZWxkVHlwZVJlc291cmNlO1xuICAgIHB1YmxpYyB0YXNrRWxlbWVudEVudW0gPSBUYXNrRWxlbWVudFR5cGU7XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IocHJvdGVjdGVkIHRhc2tDb250ZW50U2VydmljZTogVGFza0NvbnRlbnRTZXJ2aWNlKSB7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGlzT2Zmc2V0UHJlc2VudCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy50YXNrQ29udGVudFNlcnZpY2UudGFzayAmJiAhIXRoaXMudGFza0NvbnRlbnRTZXJ2aWNlLnRhc2subGF5b3V0ICYmICEhdGhpcy50YXNrQ29udGVudFNlcnZpY2UudGFzay5sYXlvdXQub2Zmc2V0O1xuICAgIH1cblxuICAgIGdldEZpZWxkT2Zmc2V0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzT2Zmc2V0UHJlc2VudCgpID8gdGhpcy50YXNrQ29udGVudFNlcnZpY2UudGFzay5sYXlvdXQub2Zmc2V0IDogMDtcbiAgICB9XG5cbiAgICBnZXRFbGVtZW50VHlwZSgpOiBUYXNrQ29udGVudEVsZW1lbnRUeXBlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZEVsZW1lbnQudHlwZSBhcyBUYXNrQ29udGVudEVsZW1lbnRUeXBlO1xuICAgIH1cblxuICAgIGdldERhdGFHcm91cFRpdGxlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWRFbGVtZW50LnRpdGxlO1xuICAgIH1cblxuICAgIGdldERhdGFGaWVsZCgpOiBEYXRhRmllbGQ8dW5rbm93bj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ncmlkRWxlbWVudC5pdGVtO1xuICAgIH1cblxuICAgIGdldFRhc2tJZCgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCByZWZlcmVuY2VkVGFza0lkID0gdGhpcy50YXNrQ29udGVudFNlcnZpY2UuZ2V0UmVmZXJlbmNlZEZpZWxkVGFzayh0aGlzLmdldERhdGFGaWVsZCgpLnN0cmluZ0lkKTtcbiAgICAgICAgcmV0dXJuIHJlZmVyZW5jZWRUYXNrSWQgPz8gdGhpcy50YXNrQ29udGVudFNlcnZpY2UudGFzay5zdHJpbmdJZDtcbiAgICB9XG5cbiAgICBpc0ZpZWxkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ncmlkRWxlbWVudC50eXBlICE9PSBUYXNrRWxlbWVudFR5cGUuQkxBTksgJiYgdGhpcy5ncmlkRWxlbWVudC50eXBlICE9PSBUYXNrRWxlbWVudFR5cGUuREFUQV9HUk9VUF9USVRMRTtcbiAgICB9XG5cbiAgICBpc0N1c3RvbUhlaWdodCgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gISF0aGlzLmdyaWRFbGVtZW50Lml0ZW0/LmNvbXBvbmVudCA/IHRoaXMuZ3JpZEVsZW1lbnQuaXRlbS5jb21wb25lbnQgOiBudWxsO1xuICAgICAgICByZXR1cm4gdGhpcy5ncmlkRWxlbWVudC50eXBlID09PSBGaWVsZFR5cGVSZXNvdXJjZS5JMThOICYmICEhY29tcG9uZW50XG4gICAgICAgICAgICAmJiAoY29tcG9uZW50Lm5hbWUgPT09ICdkaXZpZGVyJ1xuICAgICAgICAgICAgICAgIHx8ICghIWNvbXBvbmVudC5wcm9wZXJ0aWVzICYmICdwbGFpblRleHQnIGluIGNvbXBvbmVudC5wcm9wZXJ0aWVzICYmIGNvbXBvbmVudC5wcm9wZXJ0aWVzLnBsYWludFRleHQgPT09ICd0cnVlJylcbiAgICAgICAgICAgICk7XG4gICAgfVxufVxuIl19
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZmllbGQtY29tcG9uZW50LXJlc29sdmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvdGFzay1jb250ZW50L2ZpZWxkLWNvbXBvbmVudC1yZXNvbHZlci9hYnN0cmFjdC1maWVsZC1jb21wb25lbnQtcmVzb2x2ZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRy9DLE9BQU8sRUFBeUIsZUFBZSxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFFM0YsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sOEJBQThCLENBQUM7OztBQUUvRDs7R0FFRztBQUtILE1BQU0sT0FBZ0IsdUNBQXVDO0lBTXpELFlBQWdDLGtCQUFzQztRQUF0Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBSC9ELGtCQUFhLEdBQUcsaUJBQWlCLENBQUM7UUFDbEMsb0JBQWUsR0FBRyxlQUFlLENBQUM7SUFHekMsQ0FBQztJQUVTLGVBQWU7UUFDckIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUNuSSxDQUFDO0lBRUQsY0FBYztRQUNWLE9BQU8sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQsY0FBYztRQUNWLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUE4QixDQUFDO0lBQzNELENBQUM7SUFFRCxpQkFBaUI7UUFDYixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxZQUFZO1FBQ1IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztJQUNqQyxDQUFDO0lBRUQsU0FBUztRQUNMLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDakQsQ0FBQztJQUVELE9BQU87UUFDSCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxLQUFLLGVBQWUsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLGdCQUFnQixDQUFDO0lBQ3pILENBQUM7SUFFRCxjQUFjO1FBQ1YsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDOUYsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksS0FBSyxpQkFBaUIsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLFNBQVM7ZUFDL0QsQ0FBQyxTQUFTLENBQUMsSUFBSSxLQUFLLFNBQVM7bUJBQ3pCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLElBQUksV0FBVyxJQUFJLFNBQVMsQ0FBQyxVQUFVLElBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQyxVQUFVLEtBQUssTUFBTSxDQUFDLENBQ25ILENBQUM7SUFDVixDQUFDOztxSUEzQ2lCLHVDQUF1Qzt5SEFBdkMsdUNBQXVDLHFIQUYvQyxFQUFFOzRGQUVNLHVDQUF1QztrQkFKNUQsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsdUNBQXVDO29CQUNqRCxRQUFRLEVBQUUsRUFBRTtpQkFDZjt5R0FFWSxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VGFza0NvbnRlbnRTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlcy90YXNrLWNvbnRlbnQuc2VydmljZSc7XG5pbXBvcnQge0RhdGFmaWVsZEdyaWRMYXlvdXRFbGVtZW50fSBmcm9tICcuLi9tb2RlbC9kYXRhZmllbGQtZ3JpZC1sYXlvdXQtZWxlbWVudCc7XG5pbXBvcnQge1Rhc2tDb250ZW50RWxlbWVudFR5cGUsIFRhc2tFbGVtZW50VHlwZX0gZnJvbSAnLi4vbW9kZWwvdGFzay1jb250ZW50LWVsZW1lbnQtdHlwZSc7XG5pbXBvcnQge0RhdGFGaWVsZH0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvbW9kZWxzL2Fic3RyYWN0LWRhdGEtZmllbGQnO1xuaW1wb3J0IHtGaWVsZFR5cGVSZXNvdXJjZX0gZnJvbSAnLi4vbW9kZWwvZmllbGQtdHlwZS1yZXNvdXJjZSc7XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIGNvcnJlY3Qge0BsaW5rIEFic3RyYWN0RGF0YUZpZWxkQ29tcG9uZW50fSBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIHByb3ZpZGVkIGRhdGEgZmllbGQgb2JqZWN0LlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25jYy1hYnN0cmFjdC1maWVsZC1jb21wb25lbnQtcmVzb2x2ZXInLFxuICAgIHRlbXBsYXRlOiAnJ1xufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdEZpZWxkQ29tcG9uZW50UmVzb2x2ZXJDb21wb25lbnQge1xuICAgIEBJbnB1dCgpIGdyaWRFbGVtZW50OiBEYXRhZmllbGRHcmlkTGF5b3V0RWxlbWVudDtcblxuICAgIHB1YmxpYyBmaWVsZFR5cGVFbnVtID0gRmllbGRUeXBlUmVzb3VyY2U7XG4gICAgcHVibGljIHRhc2tFbGVtZW50RW51bSA9IFRhc2tFbGVtZW50VHlwZTtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgdGFza0NvbnRlbnRTZXJ2aWNlOiBUYXNrQ29udGVudFNlcnZpY2UpIHtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaXNPZmZzZXRQcmVzZW50KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLnRhc2tDb250ZW50U2VydmljZS50YXNrICYmICEhdGhpcy50YXNrQ29udGVudFNlcnZpY2UudGFzay5sYXlvdXQgJiYgISF0aGlzLnRhc2tDb250ZW50U2VydmljZS50YXNrLmxheW91dC5vZmZzZXQ7XG4gICAgfVxuXG4gICAgZ2V0RmllbGRPZmZzZXQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNPZmZzZXRQcmVzZW50KCkgPyB0aGlzLnRhc2tDb250ZW50U2VydmljZS50YXNrLmxheW91dC5vZmZzZXQgOiAwO1xuICAgIH1cblxuICAgIGdldEVsZW1lbnRUeXBlKCk6IFRhc2tDb250ZW50RWxlbWVudFR5cGUge1xuICAgICAgICByZXR1cm4gdGhpcy5ncmlkRWxlbWVudC50eXBlIGFzIFRhc2tDb250ZW50RWxlbWVudFR5cGU7XG4gICAgfVxuXG4gICAgZ2V0RGF0YUdyb3VwVGl0bGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZEVsZW1lbnQudGl0bGU7XG4gICAgfVxuXG4gICAgZ2V0RGF0YUZpZWxkKCk6IERhdGFGaWVsZDx1bmtub3duPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWRFbGVtZW50Lml0ZW07XG4gICAgfVxuXG4gICAgZ2V0VGFza0lkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhc2tDb250ZW50U2VydmljZS50YXNrLnN0cmluZ0lkO1xuICAgIH1cblxuICAgIGlzRmllbGQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWRFbGVtZW50LnR5cGUgIT09IFRhc2tFbGVtZW50VHlwZS5CTEFOSyAmJiB0aGlzLmdyaWRFbGVtZW50LnR5cGUgIT09IFRhc2tFbGVtZW50VHlwZS5EQVRBX0dST1VQX1RJVExFO1xuICAgIH1cblxuICAgIGlzQ3VzdG9tSGVpZ2h0KCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBjb21wb25lbnQgPSAhIXRoaXMuZ3JpZEVsZW1lbnQuaXRlbT8uY29tcG9uZW50ID8gdGhpcy5ncmlkRWxlbWVudC5pdGVtLmNvbXBvbmVudCA6IG51bGw7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWRFbGVtZW50LnR5cGUgPT09IEZpZWxkVHlwZVJlc291cmNlLkkxOE4gJiYgISFjb21wb25lbnRcbiAgICAgICAgICAgICYmIChjb21wb25lbnQubmFtZSA9PT0gJ2RpdmlkZXInXG4gICAgICAgICAgICAgICAgfHwgKCEhY29tcG9uZW50LnByb3BlcnRpZXMgJiYgJ3BsYWluVGV4dCcgaW4gY29tcG9uZW50LnByb3BlcnRpZXMgJiYgY29tcG9uZW50LnByb3BlcnRpZXMucGxhaW50VGV4dCA9PT0gJ3RydWUnKVxuICAgICAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=
@@ -2,7 +2,7 @@
2
2
  * The user object that is used by the frontend in its logic.
3
3
  */
4
4
  export class User {
5
- constructor(id, email, firstName, lastName, authorities, roles, groups, nextGroups) {
5
+ constructor(id, email, firstName, lastName, authorities, roles, groups, nextGroups, impersonated) {
6
6
  this.id = id;
7
7
  this.email = email;
8
8
  this.firstName = firstName;
@@ -11,6 +11,7 @@ export class User {
11
11
  this.roles = roles;
12
12
  this.groups = groups;
13
13
  this.nextGroups = nextGroups;
14
+ this.impersonated = impersonated;
14
15
  }
15
16
  get fullName() {
16
17
  return this.firstName + ' ' + this.lastName;
@@ -33,5 +34,17 @@ export class User {
33
34
  isEmpty() {
34
35
  return this.id === '';
35
36
  }
37
+ /**
38
+ * @returns self if no impersonated user is present, or impersonated user otherwise
39
+ */
40
+ getSelfOrImpersonated() {
41
+ return this.isImpersonating() ? this.impersonated : this;
42
+ }
43
+ /**
44
+ * @returns true if user is impersonating another user
45
+ */
46
+ isImpersonating() {
47
+ return !!this.impersonated;
48
+ }
36
49
  }
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvdXNlci9tb2RlbHMvdXNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQTs7R0FFRztBQUNILE1BQU0sT0FBTyxJQUFJO0lBRWIsWUFDVyxFQUFVLEVBQ1YsS0FBYSxFQUNiLFNBQWlCLEVBQ2pCLFFBQWdCLEVBQ2hCLFdBQTBCLEVBQzFCLEtBQXlCLEVBQ3pCLE1BQXNCLEVBQ3RCLFVBQTBCO1FBUDFCLE9BQUUsR0FBRixFQUFFLENBQVE7UUFDVixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2IsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUNqQixhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQ2hCLGdCQUFXLEdBQVgsV0FBVyxDQUFlO1FBQzFCLFVBQUssR0FBTCxLQUFLLENBQW9CO1FBQ3pCLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQ3RCLGVBQVUsR0FBVixVQUFVLENBQWdCO0lBRXJDLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDaEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxJQUFJO1FBQ1gsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsT0FBTztRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxPQUFPO1FBQ1YsT0FBTyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUMxQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1Byb2Nlc3NSb2xlfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvaW50ZXJmYWNlL3Byb2Nlc3Mtcm9sZSc7XG5pbXBvcnQge0lVc2VyfSBmcm9tICcuL2l1c2VyJztcblxuLyoqXG4gKiBUaGUgdXNlciBvYmplY3QgdGhhdCBpcyB1c2VkIGJ5IHRoZSBmcm9udGVuZCBpbiBpdHMgbG9naWMuXG4gKi9cbmV4cG9ydCBjbGFzcyBVc2VyIGltcGxlbWVudHMgSVVzZXIge1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBpZDogc3RyaW5nLFxuICAgICAgICBwdWJsaWMgZW1haWw6IHN0cmluZyxcbiAgICAgICAgcHVibGljIGZpcnN0TmFtZTogc3RyaW5nLFxuICAgICAgICBwdWJsaWMgbGFzdE5hbWU6IHN0cmluZyxcbiAgICAgICAgcHVibGljIGF1dGhvcml0aWVzOiBBcnJheTxzdHJpbmc+LFxuICAgICAgICBwdWJsaWMgcm9sZXM6IEFycmF5PFByb2Nlc3NSb2xlPixcbiAgICAgICAgcHVibGljIGdyb3Vwcz86IEFycmF5PHN0cmluZz4sXG4gICAgICAgIHB1YmxpYyBuZXh0R3JvdXBzPzogQXJyYXk8c3RyaW5nPlxuICAgICkge1xuICAgIH1cblxuICAgIGdldCBmdWxsTmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlyc3ROYW1lICsgJyAnICsgdGhpcy5sYXN0TmFtZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTeW5vbnltIGZvciBgZmlyc3ROYW1lYC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlyc3ROYW1lO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN5bm9ueW0gZm9yIGBsYXN0TmFtZWAuXG4gICAgICovXG4gICAgcHVibGljIGdldCBzdXJuYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmxhc3ROYW1lO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgVXNlciBvYmplY3QgcmVwcmVzZW50cyBhbiBlbXB0eSB1c2VyLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgaXNFbXB0eSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWQgPT09ICcnO1xuICAgIH1cbn1cbiJdfQ==
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvdXNlci9tb2RlbHMvdXNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQTs7R0FFRztBQUNILE1BQU0sT0FBTyxJQUFJO0lBRWIsWUFDVyxFQUFVLEVBQ1YsS0FBYSxFQUNiLFNBQWlCLEVBQ2pCLFFBQWdCLEVBQ2hCLFdBQTBCLEVBQzFCLEtBQXlCLEVBQ3pCLE1BQXNCLEVBQ3RCLFVBQTBCLEVBQzFCLFlBQW1CO1FBUm5CLE9BQUUsR0FBRixFQUFFLENBQVE7UUFDVixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2IsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUNqQixhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQ2hCLGdCQUFXLEdBQVgsV0FBVyxDQUFlO1FBQzFCLFVBQUssR0FBTCxLQUFLLENBQW9CO1FBQ3pCLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQ3RCLGVBQVUsR0FBVixVQUFVLENBQWdCO1FBQzFCLGlCQUFZLEdBQVosWUFBWSxDQUFPO0lBRTlCLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDaEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxJQUFJO1FBQ1gsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsT0FBTztRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxPQUFPO1FBQ1YsT0FBTyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxxQkFBcUI7UUFDeEIsT0FBTyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM3RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxlQUFlO1FBQ2xCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDL0IsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQcm9jZXNzUm9sZX0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2ludGVyZmFjZS9wcm9jZXNzLXJvbGUnO1xuaW1wb3J0IHtJVXNlcn0gZnJvbSAnLi9pdXNlcic7XG5cbi8qKlxuICogVGhlIHVzZXIgb2JqZWN0IHRoYXQgaXMgdXNlZCBieSB0aGUgZnJvbnRlbmQgaW4gaXRzIGxvZ2ljLlxuICovXG5leHBvcnQgY2xhc3MgVXNlciBpbXBsZW1lbnRzIElVc2VyIHtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgaWQ6IHN0cmluZyxcbiAgICAgICAgcHVibGljIGVtYWlsOiBzdHJpbmcsXG4gICAgICAgIHB1YmxpYyBmaXJzdE5hbWU6IHN0cmluZyxcbiAgICAgICAgcHVibGljIGxhc3ROYW1lOiBzdHJpbmcsXG4gICAgICAgIHB1YmxpYyBhdXRob3JpdGllczogQXJyYXk8c3RyaW5nPixcbiAgICAgICAgcHVibGljIHJvbGVzOiBBcnJheTxQcm9jZXNzUm9sZT4sXG4gICAgICAgIHB1YmxpYyBncm91cHM/OiBBcnJheTxzdHJpbmc+LFxuICAgICAgICBwdWJsaWMgbmV4dEdyb3Vwcz86IEFycmF5PHN0cmluZz4sXG4gICAgICAgIHB1YmxpYyBpbXBlcnNvbmF0ZWQ/OiBVc2VyXG4gICAgKSB7XG4gICAgfVxuXG4gICAgZ2V0IGZ1bGxOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5maXJzdE5hbWUgKyAnICcgKyB0aGlzLmxhc3ROYW1lO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN5bm9ueW0gZm9yIGBmaXJzdE5hbWVgLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5maXJzdE5hbWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3lub255bSBmb3IgYGxhc3ROYW1lYC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHN1cm5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGFzdE5hbWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBVc2VyIG9iamVjdCByZXByZXNlbnRzIGFuIGVtcHR5IHVzZXIsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyBpc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pZCA9PT0gJyc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgc2VsZiBpZiBubyBpbXBlcnNvbmF0ZWQgdXNlciBpcyBwcmVzZW50LCBvciBpbXBlcnNvbmF0ZWQgdXNlciBvdGhlcndpc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0U2VsZk9ySW1wZXJzb25hdGVkKCk6IFVzZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0ltcGVyc29uYXRpbmcoKSA/IHRoaXMuaW1wZXJzb25hdGVkIDogdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyB0cnVlIGlmIHVzZXIgaXMgaW1wZXJzb25hdGluZyBhbm90aGVyIHVzZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNJbXBlcnNvbmF0aW5nKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmltcGVyc29uYXRlZDtcbiAgICB9XG59XG4iXX0=
@@ -5,8 +5,9 @@ export class UserComparatorService {
5
5
  constructor(_userService) {
6
6
  this._userService = _userService;
7
7
  }
8
- compareUsers(user) {
9
- return user.email === this._userService.user.email ||
8
+ compareUsers(user, acceptImpersonator = true) {
9
+ const loggedUser = acceptImpersonator ? this._userService.user.getSelfOrImpersonated() : this._userService.user;
10
+ return user.email === loggedUser.email ||
10
11
  user.email.includes('anonymous') && this._userService.user.email.includes('anonymous');
11
12
  }
12
13
  }
@@ -18,4 +19,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
18
19
  providedIn: 'root'
19
20
  }]
20
21
  }], ctorParameters: function () { return [{ type: i1.UserService }]; } });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1jb21wYXJhdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL3VzZXIvc2VydmljZXMvdXNlci1jb21wYXJhdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7O0FBT3pDLE1BQU0sT0FBTyxxQkFBcUI7SUFFaEMsWUFBb0IsWUFBeUI7UUFBekIsaUJBQVksR0FBWixZQUFZLENBQWE7SUFBSSxDQUFDO0lBRTNDLFlBQVksQ0FBQyxJQUFXO1FBQzNCLE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLO1lBQzlDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDL0YsQ0FBQzs7bUhBUFUscUJBQXFCO3VIQUFyQixxQkFBcUIsY0FGcEIsTUFBTTs0RkFFUCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VXNlclNlcnZpY2V9IGZyb20gJy4vdXNlci5zZXJ2aWNlJztcbmltcG9ydCB7SVVzZXJ9IGZyb20gJy4uL21vZGVscy9pdXNlcic7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJDb21wYXJhdG9yU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlKSB7IH1cblxuICBwdWJsaWMgY29tcGFyZVVzZXJzKHVzZXI6IElVc2VyKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gdXNlci5lbWFpbCA9PT0gdGhpcy5fdXNlclNlcnZpY2UudXNlci5lbWFpbCB8fFxuICAgICAgICAgIHVzZXIuZW1haWwuaW5jbHVkZXMoJ2Fub255bW91cycpICYmIHRoaXMuX3VzZXJTZXJ2aWNlLnVzZXIuZW1haWwuaW5jbHVkZXMoJ2Fub255bW91cycpO1xuICB9XG59XG4iXX0=
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1jb21wYXJhdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL3VzZXIvc2VydmljZXMvdXNlci1jb21wYXJhdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7O0FBT3pDLE1BQU0sT0FBTyxxQkFBcUI7SUFFaEMsWUFBb0IsWUFBeUI7UUFBekIsaUJBQVksR0FBWixZQUFZLENBQWE7SUFBSSxDQUFDO0lBRTNDLFlBQVksQ0FBQyxJQUFXLEVBQUUscUJBQThCLElBQUk7UUFDL0QsTUFBTSxVQUFVLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO1FBQ2hILE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxVQUFVLENBQUMsS0FBSztZQUNsQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQy9GLENBQUM7O21IQVJVLHFCQUFxQjt1SEFBckIscUJBQXFCLGNBRnBCLE1BQU07NEZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1VzZXJTZXJ2aWNlfSBmcm9tICcuL3VzZXIuc2VydmljZSc7XG5pbXBvcnQge0lVc2VyfSBmcm9tICcuLi9tb2RlbHMvaXVzZXInO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBVc2VyQ29tcGFyYXRvclNlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3VzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSkgeyB9XG5cbiAgcHVibGljIGNvbXBhcmVVc2Vycyh1c2VyOiBJVXNlciwgYWNjZXB0SW1wZXJzb25hdG9yOiBib29sZWFuID0gdHJ1ZSk6IGJvb2xlYW4ge1xuICAgICAgY29uc3QgbG9nZ2VkVXNlciA9IGFjY2VwdEltcGVyc29uYXRvciA/IHRoaXMuX3VzZXJTZXJ2aWNlLnVzZXIuZ2V0U2VsZk9ySW1wZXJzb25hdGVkKCkgOiB0aGlzLl91c2VyU2VydmljZS51c2VyO1xuICAgICAgcmV0dXJuIHVzZXIuZW1haWwgPT09IGxvZ2dlZFVzZXIuZW1haWwgfHxcbiAgICAgICAgICB1c2VyLmVtYWlsLmluY2x1ZGVzKCdhbm9ueW1vdXMnKSAmJiB0aGlzLl91c2VyU2VydmljZS51c2VyLmVtYWlsLmluY2x1ZGVzKCdhbm9ueW1vdXMnKTtcbiAgfVxufVxuIl19
@@ -65,31 +65,34 @@ export class UserService {
65
65
  * If calculated intersection isn't empty returns true, otherwise false.
66
66
  */
67
67
  hasAuthority(authority) {
68
- if (!authority || !this._user.authorities) {
68
+ const user = this._user.getSelfOrImpersonated();
69
+ if (!authority || !user.authorities) {
69
70
  return false;
70
71
  }
71
72
  if (authority instanceof Array) {
72
- return authority.some(a => this._user.authorities.some(u => u === a));
73
+ return authority.some(a => user.authorities.some(u => u === a));
73
74
  }
74
75
  else {
75
- return this._user.authorities.some(a => a === authority);
76
+ return user.authorities.some(a => a === authority);
76
77
  }
77
78
  }
78
79
  hasRole(role) {
79
- if (!role || !this._user.roles) {
80
+ const user = this._user.getSelfOrImpersonated();
81
+ if (!role || !user.roles) {
80
82
  return false;
81
83
  }
82
- return this._user.roles.some(r => r === role);
84
+ return user.roles.some(r => r === role);
83
85
  }
84
86
  /**
85
87
  * Checks whether the user has role with a specific stringId
86
88
  * @param roleStringId ID of the role we want to check
87
89
  */
88
90
  hasRoleById(roleStringId) {
89
- if (!roleStringId || !this._user.roles) {
91
+ const user = this._user.getSelfOrImpersonated();
92
+ if (!roleStringId || !user.roles) {
90
93
  return false;
91
94
  }
92
- return this._user.roles.some(r => r.stringId === roleStringId);
95
+ return user.roles.some(r => r.stringId === roleStringId);
93
96
  }
94
97
  /**
95
98
  * Checks whether the user has role with the specified identifier in a process with the specified identifier (any version)
@@ -97,10 +100,11 @@ export class UserService {
97
100
  * @param netIdentifier identifier (import ID) of the process the role is defined in
98
101
  */
99
102
  hasRoleByIdentifier(roleIdentifier, netIdentifier) {
100
- if (!roleIdentifier || !netIdentifier || !this._user.roles) {
103
+ const user = this._user.getSelfOrImpersonated();
104
+ if (!roleIdentifier || !netIdentifier || !user.roles) {
101
105
  return false;
102
106
  }
103
- return this._user.roles.some(r => r.netImportId === netIdentifier && r.importId === roleIdentifier);
107
+ return user.roles.some(r => r.netImportId === netIdentifier && r.importId === roleIdentifier);
104
108
  }
105
109
  /**
106
110
  * Checks whether the user has role with the specified name in a process with the specified identifier (any version)
@@ -108,10 +112,11 @@ export class UserService {
108
112
  * @param netIdentifier identifier (import ID) of the process the role is defined in
109
113
  */
110
114
  hasRoleByName(roleName, netIdentifier) {
111
- if (!roleName || !netIdentifier || !this._user.roles) {
115
+ const user = this._user.getSelfOrImpersonated();
116
+ if (!roleName || !netIdentifier || !user.roles) {
112
117
  return false;
113
118
  }
114
- return this._user.roles.some(r => r.netImportId === netIdentifier && r.name === roleName);
119
+ return user.roles.some(r => r.netImportId === netIdentifier && r.name === roleName);
115
120
  }
116
121
  login(credentials) {
117
122
  this._loginCalled = true;
@@ -180,4 +185,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
180
185
  providedIn: 'root'
181
186
  }]
182
187
  }], ctorParameters: function () { return [{ type: i1.AuthenticationService }, { type: i2.UserResourceService }, { type: i3.UserTransformer }, { type: i4.LoggerService }, { type: i5.SessionService }, { type: i6.AnonymousService }]; } });
183
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi91c2VyL3NlcnZpY2VzL3VzZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBYSxhQUFhLEVBQWUsTUFBTSxNQUFNLENBQUM7QUFFN0QsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXBDLE9BQU8sRUFBQyxJQUFJLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFLekMsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7O0FBUXZELE1BQU0sT0FBTyxXQUFXO0lBVXBCLFlBQXNCLFlBQW1DLEVBQ25DLGFBQWtDLEVBQ2xDLGNBQStCLEVBQy9CLElBQW1CLEVBQ25CLFFBQXdCLEVBQ3hCLGlCQUFtQztRQUxuQyxpQkFBWSxHQUFaLFlBQVksQ0FBdUI7UUFDbkMsa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBQ2xDLG1CQUFjLEdBQWQsY0FBYyxDQUFpQjtRQUMvQixTQUFJLEdBQUosSUFBSSxDQUFlO1FBQ25CLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBQ3hCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDckQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLGFBQWEsQ0FBTyxDQUFDLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxhQUFhLENBQU8sQ0FBQyxDQUFDLENBQUM7UUFDeEQsVUFBVSxDQUFDLEdBQUcs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Y0FGUixNQUFNOzRGQUVULFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlLCBPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtQcm9jZXNzUm9sZX0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2ludGVyZmFjZS9wcm9jZXNzLXJvbGUnO1xuaW1wb3J0IHtVc2VyfSBmcm9tICcuLi9tb2RlbHMvdXNlcic7XG5pbXBvcnQge0NyZWRlbnRpYWxzfSBmcm9tICcuLi8uLi9hdXRoZW50aWNhdGlvbi9tb2RlbHMvY3JlZGVudGlhbHMnO1xuaW1wb3J0IHt0YWtlLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7QXV0aGVudGljYXRpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi9hdXRoZW50aWNhdGlvbi9zZXJ2aWNlcy9hdXRoZW50aWNhdGlvbi9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7VXNlclJlc291cmNlU2VydmljZX0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2VuZ2luZS1lbmRwb2ludC91c2VyLXJlc291cmNlLnNlcnZpY2UnO1xuaW1wb3J0IHtVc2VyVHJhbnNmb3JtZXJ9IGZyb20gJy4uLy4uL2F1dGhlbnRpY2F0aW9uL21vZGVscy91c2VyLnRyYW5zZm9ybWVyJztcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vLi4vbG9nZ2VyL3NlcnZpY2VzL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7SHR0cEVycm9yUmVzcG9uc2V9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7U2Vzc2lvblNlcnZpY2V9IGZyb20gJy4uLy4uL2F1dGhlbnRpY2F0aW9uL3Nlc3Npb24vc2VydmljZXMvc2Vzc2lvbi5zZXJ2aWNlJztcbmltcG9ydCB7VXNlclJlc291cmNlfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvaW50ZXJmYWNlL3VzZXItcmVzb3VyY2UnO1xuaW1wb3J0IHtBbm9ueW1vdXNTZXJ2aWNlfSBmcm9tICcuLi8uLi9hdXRoZW50aWNhdGlvbi9hbm9ueW1vdXMvYW5vbnltb3VzLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICAgIHByb3RlY3RlZCBfdXNlcjogVXNlcjtcbiAgICBwcm90ZWN0ZWQgX3VzZXJDaGFuZ2UkOiBSZXBsYXlTdWJqZWN0PFVzZXI+O1xuICAgIHByb3RlY3RlZCBfYW5vbnltb3VzVXNlckNoYW5nZSQ6IFJlcGxheVN1YmplY3Q8VXNlcj47XG4gICAgcHJvdGVjdGVkIF9sb2dpbkNhbGxlZDogYm9vbGVhbjtcbiAgICBwcm90ZWN0ZWQgX3N1YkF1dGg6IFN1YnNjcmlwdGlvbjtcbiAgICBwcm90ZWN0ZWQgX3N1YkFub255bTogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgX3B1YmxpY0xvYWRDYWxsZWQ6IGJvb2xlYW47XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX2F1dGhTZXJ2aWNlOiBBdXRoZW50aWNhdGlvblNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF91c2VyUmVzb3VyY2U6IFVzZXJSZXNvdXJjZVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF91c2VyVHJhbnNmb3JtOiBVc2VyVHJhbnNmb3JtZXIsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9sb2c6IExvZ2dlclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9zZXNzaW9uOiBTZXNzaW9uU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2Fub255bW91c1NlcnZpY2U6IEFub255bW91c1NlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5fdXNlciA9IHRoaXMuZW1wdHlVc2VyKCk7XG4gICAgICAgIHRoaXMuX2xvZ2luQ2FsbGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3VzZXJDaGFuZ2UkID0gbmV3IFJlcGxheVN1YmplY3Q8VXNlcj4oMSk7XG4gICAgICAgIHRoaXMuX2Fub255bW91c1VzZXJDaGFuZ2UkID0gbmV3IFJlcGxheVN1YmplY3Q8VXNlcj4oMSk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fc3ViQXV0aCA9IHRoaXMuX2F1dGhTZXJ2aWNlLmF1dGhlbnRpY2F0ZWQkLnN1YnNjcmliZShhdXRoID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoYXV0aCAmJiAhdGhpcy5fbG9naW5DYWxsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkVXNlcigpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWF1dGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhclVzZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wdWJsaXNoVXNlckNoYW5nZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fc3ViQW5vbnltID0gdGhpcy5fYW5vbnltb3VzU2VydmljZS50b2tlblNldC5zdWJzY3JpYmUodG9rZW4gPT4ge1xuICAgICAgICAgICAgaWYgKHRva2VuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkUHVibGljVXNlcigpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyVXNlcigpO1xuICAgICAgICAgICAgICAgIHRoaXMucHVibGlzaEFub255bW91c1VzZXJDaGFuZ2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0IHVzZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl91c2VyO1xuICAgIH1cblxuICAgIGdldCB1c2VyJCgpOiBPYnNlcnZhYmxlPFVzZXI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VzZXJDaGFuZ2UkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIGdldCBhbm9ueW1vdXNVc2VyJCgpOiBPYnNlcnZhYmxlPFVzZXI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Fub255bW91c1VzZXJDaGFuZ2UkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl91c2VyQ2hhbmdlJC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9hbm9ueW1vdXNVc2VyQ2hhbmdlJC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9zdWJBdXRoLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX3N1YkFub255bS51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIHVzZXIgaGFzIHNwZWNpZmllZCBhdXRob3JpdHkuXG4gICAgICogQHBhcmFtIGF1dGhvcml0eSAtIElmIHByb3ZpZGVkIGF1dGhvcml0eSBpcyBhcnJheSBvZiBhdXRob3JpdGllcy5cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgTWV0aG9kIG1ha2UgaW50ZXJzZWN0aW9uIG9mIHRoZSBwcm92aWRlZCBhdXRob3JpdGllcyBhbmQgdXNlcidzIGF1dGhvcml0aWVzLlxuICAgICAqICAgICAgICAgICAgICAgICAgICBJZiBjYWxjdWxhdGVkIGludGVyc2VjdGlvbiBpc24ndCBlbXB0eSByZXR1cm5zIHRydWUsIG90aGVyd2lzZSBmYWxzZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgaGFzQXV0aG9yaXR5KGF1dGhvcml0eTogQXJyYXk8c3RyaW5nPiB8IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIWF1dGhvcml0eSB8fCAhdGhpcy5fdXNlci5hdXRob3JpdGllcykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhdXRob3JpdHkgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgICAgcmV0dXJuIGF1dGhvcml0eS5zb21lKGEgPT4gdGhpcy5fdXNlci5hdXRob3JpdGllcy5zb21lKHUgPT4gdSA9PT0gYSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3VzZXIuYXV0aG9yaXRpZXMuc29tZShhID0+IGEgPT09IGF1dGhvcml0eSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaGFzUm9sZShyb2xlOiBQcm9jZXNzUm9sZSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXJvbGUgfHwgIXRoaXMuX3VzZXIucm9sZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fdXNlci5yb2xlcy5zb21lKHIgPT4gciA9PT0gcm9sZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIHVzZXIgaGFzIHJvbGUgd2l0aCBhIHNwZWNpZmljIHN0cmluZ0lkXG4gICAgICogQHBhcmFtIHJvbGVTdHJpbmdJZCBJRCBvZiB0aGUgcm9sZSB3ZSB3YW50IHRvIGNoZWNrXG4gICAgICovXG4gICAgcHVibGljIGhhc1JvbGVCeUlkKHJvbGVTdHJpbmdJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghcm9sZVN0cmluZ0lkIHx8ICF0aGlzLl91c2VyLnJvbGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3VzZXIucm9sZXMuc29tZShyID0+IHIuc3RyaW5nSWQgPT09IHJvbGVTdHJpbmdJZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIHVzZXIgaGFzIHJvbGUgd2l0aCB0aGUgc3BlY2lmaWVkIGlkZW50aWZpZXIgaW4gYSBwcm9jZXNzIHdpdGggdGhlIHNwZWNpZmllZCBpZGVudGlmaWVyIChhbnkgdmVyc2lvbilcbiAgICAgKiBAcGFyYW0gcm9sZUlkZW50aWZpZXIgaWRlbnRpZmllciAoaW1wb3J0IElEKSBvZiB0aGUgcm9sZSB3ZSB3YW50IHRvIGNoZWNrXG4gICAgICogQHBhcmFtIG5ldElkZW50aWZpZXIgaWRlbnRpZmllciAoaW1wb3J0IElEKSBvZiB0aGUgcHJvY2VzcyB0aGUgcm9sZSBpcyBkZWZpbmVkIGluXG4gICAgICovXG4gICAgcHVibGljIGhhc1JvbGVCeUlkZW50aWZpZXIocm9sZUlkZW50aWZpZXI6IHN0cmluZywgbmV0SWRlbnRpZmllcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghcm9sZUlkZW50aWZpZXIgfHwgIW5ldElkZW50aWZpZXIgfHwgIXRoaXMuX3VzZXIucm9sZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fdXNlci5yb2xlcy5zb21lKHIgPT4gci5uZXRJbXBvcnRJZCA9PT0gbmV0SWRlbnRpZmllciAmJiByLmltcG9ydElkID09PSByb2xlSWRlbnRpZmllcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIHVzZXIgaGFzIHJvbGUgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUgaW4gYSBwcm9jZXNzIHdpdGggdGhlIHNwZWNpZmllZCBpZGVudGlmaWVyIChhbnkgdmVyc2lvbilcbiAgICAgKiBAcGFyYW0gcm9sZU5hbWUgbmFtZSBvZiB0aGUgcm9sZSB3ZSB3YW50IHRvIGNoZWNrXG4gICAgICogQHBhcmFtIG5ldElkZW50aWZpZXIgaWRlbnRpZmllciAoaW1wb3J0IElEKSBvZiB0aGUgcHJvY2VzcyB0aGUgcm9sZSBpcyBkZWZpbmVkIGluXG4gICAgICovXG4gICAgcHVibGljIGhhc1JvbGVCeU5hbWUocm9sZU5hbWU6IHN0cmluZywgbmV0SWRlbnRpZmllcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghcm9sZU5hbWUgfHwgIW5ldElkZW50aWZpZXIgfHwgIXRoaXMuX3VzZXIucm9sZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fdXNlci5yb2xlcy5zb21lKHIgPT4gci5uZXRJbXBvcnRJZCA9PT0gbmV0SWRlbnRpZmllciAmJiByLm5hbWUgPT09IHJvbGVOYW1lKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbG9naW4oY3JlZGVudGlhbHM6IENyZWRlbnRpYWxzKTogT2JzZXJ2YWJsZTxVc2VyPiB7XG4gICAgICAgIHRoaXMuX2xvZ2luQ2FsbGVkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dGhTZXJ2aWNlLmxvZ2luKGNyZWRlbnRpYWxzKS5waXBlKFxuICAgICAgICAgICAgdGFwKChhdXRoVXNlcjogVXNlcikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3VzZXIgPSBhdXRoVXNlcjtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2dpbkNhbGxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMucHVibGlzaFVzZXJDaGFuZ2UoKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGxvZ291dCgpOiBPYnNlcnZhYmxlPG9iamVjdD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXV0aFNlcnZpY2UubG9nb3V0KCkucGlwZShcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdXNlciA9IHRoaXMuZW1wdHlVc2VyKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5wdWJsaXNoVXNlckNoYW5nZSgpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVsb2FkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmxvYWRVc2VyKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGVtcHR5VXNlcigpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBVc2VyKCcnLCAnJywgJycsICcnLCBbXSwgW10sIFtdLCBbXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGxvYWRVc2VyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl91c2VyUmVzb3VyY2UuZ2V0TG9nZ2VkVXNlcigpLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCh1c2VyOiBVc2VyUmVzb3VyY2UpID0+IHtcbiAgICAgICAgICAgIGlmICh1c2VyKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmFja2VuZFVzZXIgPSB7Li4udXNlciwgaWQ6IHVzZXIuaWQudG9TdHJpbmcoKX07XG4gICAgICAgICAgICAgICAgdGhpcy5fdXNlciA9IHRoaXMuX3VzZXJUcmFuc2Zvcm0udHJhbnNmb3JtKGJhY2tlbmRVc2VyKTtcbiAgICAgICAgICAgICAgICB0aGlzLnB1Ymxpc2hVc2VyQ2hhbmdlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlICYmIGVycm9yLnN0YXR1cyA9PT0gNDAxKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmRlYnVnKCdBdXRoZW50aWNhdGlvbiB0b2tlbiBpcyBpbnZhbGlkLiBDbGVhcmluZyBzdHJlYW0nKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXNzaW9uLmNsZWFyKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcignTG9hZGluZyBsb2dnZWQgdXNlciBoYXMgZmFpbGVkISBJbml0aWFsaXNhdGlvbiBoYXMgbm90IGJlIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkhJywgZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbG9hZFB1YmxpY1VzZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3VzZXJSZXNvdXJjZS5nZXRQdWJsaWNMb2dnZWRVc2VyKCkucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKHVzZXI6IFVzZXJSZXNvdXJjZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHVzZXIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBiYWNrZW5kVXNlciA9IHsuLi51c2VyLCBpZDogdXNlci5pZC50b1N0cmluZygpfTtcbiAgICAgICAgICAgICAgICB0aGlzLl91c2VyID0gdGhpcy5fdXNlclRyYW5zZm9ybS50cmFuc2Zvcm0oYmFja2VuZFVzZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMucHVibGlzaEFub255bW91c1VzZXJDaGFuZ2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKCdMb2FkaW5nIGxvZ2dlZCB1c2VyIGhhcyBmYWlsZWQhIEluaXRpYWxpc2F0aW9uIGhhcyBub3QgYmUgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSEnLCBlcnJvcik7XG4gICAgICAgICAgICB0aGlzLl9wdWJsaWNMb2FkQ2FsbGVkID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhclVzZXIoKSB7XG4gICAgICAgIHRoaXMuX3VzZXIgPSB0aGlzLmVtcHR5VXNlcigpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBwdWJsaXNoVXNlckNoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdXNlckNoYW5nZSQubmV4dCh0aGlzLnVzZXIpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBwdWJsaXNoQW5vbnltb3VzVXNlckNoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fYW5vbnltb3VzVXNlckNoYW5nZSQubmV4dCh0aGlzLnVzZXIpO1xuICAgIH1cbn1cbiJdfQ==
188
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi91c2VyL3NlcnZpY2VzL3VzZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBYSxhQUFhLEVBQWUsTUFBTSxNQUFNLENBQUM7QUFFN0QsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXBDLE9BQU8sRUFBQyxJQUFJLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFLekMsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7O0FBUXZELE1BQU0sT0FBTyxXQUFXO0lBVXBCLFlBQXNCLFlBQW1DLEVBQ25DLGFBQWtDLEVBQ2xDLGNBQStCLEVBQy9CLElBQW1CLEVBQ25CLFFBQXdCLEVBQ3hCLGlCQUFtQztRQUxuQyxpQkFBWSxHQUFaLFlBQVksQ0FBdUI7UUFDbkMsa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBQ2xDLG1CQUFjLEdBQWQsY0FBYyxDQUFpQjtRQUMvQixTQUFJLEdBQUosSUFBSSxDQUFlO1FBQ25CLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBQ3hCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDckQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLGFBQWEsQ0FBTyxDQUFDLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxhQUFhLENBQU8sQ0FBQyxDQUFDLENBQUM7UUFDeEQsVUFBVSxDQUFDLEdBQUcs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Q3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRVMsMEJBQTBCO1FBQ2hDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9DLENBQUM7O3lHQS9MUSxXQUFXOzZHQUFYLFdBQVcsY0FGUixNQUFNOzRGQUVULFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlLCBPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtQcm9jZXNzUm9sZX0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2ludGVyZmFjZS9wcm9jZXNzLXJvbGUnO1xuaW1wb3J0IHtVc2VyfSBmcm9tICcuLi9tb2RlbHMvdXNlcic7XG5pbXBvcnQge0NyZWRlbnRpYWxzfSBmcm9tICcuLi8uLi9hdXRoZW50aWNhdGlvbi9tb2RlbHMvY3JlZGVudGlhbHMnO1xuaW1wb3J0IHt0YWtlLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7QXV0aGVudGljYXRpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi9hdXRoZW50aWNhdGlvbi9zZXJ2aWNlcy9hdXRoZW50aWNhdGlvbi9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7VXNlclJlc291cmNlU2VydmljZX0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2VuZ2luZS1lbmRwb2ludC91c2VyLXJlc291cmNlLnNlcnZpY2UnO1xuaW1wb3J0IHtVc2VyVHJhbnNmb3JtZXJ9IGZyb20gJy4uLy4uL2F1dGhlbnRpY2F0aW9uL21vZGVscy91c2VyLnRyYW5zZm9ybWVyJztcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vLi4vbG9nZ2VyL3NlcnZpY2VzL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7SHR0cEVycm9yUmVzcG9uc2V9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7U2Vzc2lvblNlcnZpY2V9IGZyb20gJy4uLy4uL2F1dGhlbnRpY2F0aW9uL3Nlc3Npb24vc2VydmljZXMvc2Vzc2lvbi5zZXJ2aWNlJztcbmltcG9ydCB7VXNlclJlc291cmNlfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvaW50ZXJmYWNlL3VzZXItcmVzb3VyY2UnO1xuaW1wb3J0IHtBbm9ueW1vdXNTZXJ2aWNlfSBmcm9tICcuLi8uLi9hdXRoZW50aWNhdGlvbi9hbm9ueW1vdXMvYW5vbnltb3VzLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICAgIHByb3RlY3RlZCBfdXNlcjogVXNlcjtcbiAgICBwcm90ZWN0ZWQgX3VzZXJDaGFuZ2UkOiBSZXBsYXlTdWJqZWN0PFVzZXI+O1xuICAgIHByb3RlY3RlZCBfYW5vbnltb3VzVXNlckNoYW5nZSQ6IFJlcGxheVN1YmplY3Q8VXNlcj47XG4gICAgcHJvdGVjdGVkIF9sb2dpbkNhbGxlZDogYm9vbGVhbjtcbiAgICBwcm90ZWN0ZWQgX3N1YkF1dGg6IFN1YnNjcmlwdGlvbjtcbiAgICBwcm90ZWN0ZWQgX3N1YkFub255bTogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgX3B1YmxpY0xvYWRDYWxsZWQ6IGJvb2xlYW47XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX2F1dGhTZXJ2aWNlOiBBdXRoZW50aWNhdGlvblNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF91c2VyUmVzb3VyY2U6IFVzZXJSZXNvdXJjZVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF91c2VyVHJhbnNmb3JtOiBVc2VyVHJhbnNmb3JtZXIsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9sb2c6IExvZ2dlclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9zZXNzaW9uOiBTZXNzaW9uU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2Fub255bW91c1NlcnZpY2U6IEFub255bW91c1NlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5fdXNlciA9IHRoaXMuZW1wdHlVc2VyKCk7XG4gICAgICAgIHRoaXMuX2xvZ2luQ2FsbGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3VzZXJDaGFuZ2UkID0gbmV3IFJlcGxheVN1YmplY3Q8VXNlcj4oMSk7XG4gICAgICAgIHRoaXMuX2Fub255bW91c1VzZXJDaGFuZ2UkID0gbmV3IFJlcGxheVN1YmplY3Q8VXNlcj4oMSk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fc3ViQXV0aCA9IHRoaXMuX2F1dGhTZXJ2aWNlLmF1dGhlbnRpY2F0ZWQkLnN1YnNjcmliZShhdXRoID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoYXV0aCAmJiAhdGhpcy5fbG9naW5DYWxsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkVXNlcigpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWF1dGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhclVzZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wdWJsaXNoVXNlckNoYW5nZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fc3ViQW5vbnltID0gdGhpcy5fYW5vbnltb3VzU2VydmljZS50b2tlblNldC5zdWJzY3JpYmUodG9rZW4gPT4ge1xuICAgICAgICAgICAgaWYgKHRva2VuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkUHVibGljVXNlcigpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyVXNlcigpO1xuICAgICAgICAgICAgICAgIHRoaXMucHVibGlzaEFub255bW91c1VzZXJDaGFuZ2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0IHVzZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl91c2VyO1xuICAgIH1cblxuICAgIGdldCB1c2VyJCgpOiBPYnNlcnZhYmxlPFVzZXI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VzZXJDaGFuZ2UkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIGdldCBhbm9ueW1vdXNVc2VyJCgpOiBPYnNlcnZhYmxlPFVzZXI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Fub255bW91c1VzZXJDaGFuZ2UkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl91c2VyQ2hhbmdlJC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9hbm9ueW1vdXNVc2VyQ2hhbmdlJC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9zdWJBdXRoLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX3N1YkFub255bS51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIHVzZXIgaGFzIHNwZWNpZmllZCBhdXRob3JpdHkuXG4gICAgICogQHBhcmFtIGF1dGhvcml0eSAtIElmIHByb3ZpZGVkIGF1dGhvcml0eSBpcyBhcnJheSBvZiBhdXRob3JpdGllcy5cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgTWV0aG9kIG1ha2UgaW50ZXJzZWN0aW9uIG9mIHRoZSBwcm92aWRlZCBhdXRob3JpdGllcyBhbmQgdXNlcidzIGF1dGhvcml0aWVzLlxuICAgICAqICAgICAgICAgICAgICAgICAgICBJZiBjYWxjdWxhdGVkIGludGVyc2VjdGlvbiBpc24ndCBlbXB0eSByZXR1cm5zIHRydWUsIG90aGVyd2lzZSBmYWxzZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgaGFzQXV0aG9yaXR5KGF1dGhvcml0eTogQXJyYXk8c3RyaW5nPiB8IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB1c2VyID0gdGhpcy5fdXNlci5nZXRTZWxmT3JJbXBlcnNvbmF0ZWQoKTtcbiAgICAgICAgaWYgKCFhdXRob3JpdHkgfHwgIXVzZXIuYXV0aG9yaXRpZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXV0aG9yaXR5IGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgICAgIHJldHVybiBhdXRob3JpdHkuc29tZShhID0+IHVzZXIuYXV0aG9yaXRpZXMuc29tZSh1ID0+IHUgPT09IGEpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB1c2VyLmF1dGhvcml0aWVzLnNvbWUoYSA9PiBhID09PSBhdXRob3JpdHkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGhhc1JvbGUocm9sZTogUHJvY2Vzc1JvbGUpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgdXNlciA9IHRoaXMuX3VzZXIuZ2V0U2VsZk9ySW1wZXJzb25hdGVkKCk7XG4gICAgICAgIGlmICghcm9sZSB8fCAhdXNlci5yb2xlcykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1c2VyLnJvbGVzLnNvbWUociA9PiByID09PSByb2xlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3Mgd2hldGhlciB0aGUgdXNlciBoYXMgcm9sZSB3aXRoIGEgc3BlY2lmaWMgc3RyaW5nSWRcbiAgICAgKiBAcGFyYW0gcm9sZVN0cmluZ0lkIElEIG9mIHRoZSByb2xlIHdlIHdhbnQgdG8gY2hlY2tcbiAgICAgKi9cbiAgICBwdWJsaWMgaGFzUm9sZUJ5SWQocm9sZVN0cmluZ0lkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgdXNlciA9IHRoaXMuX3VzZXIuZ2V0U2VsZk9ySW1wZXJzb25hdGVkKCk7XG4gICAgICAgIGlmICghcm9sZVN0cmluZ0lkIHx8ICF1c2VyLnJvbGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVzZXIucm9sZXMuc29tZShyID0+IHIuc3RyaW5nSWQgPT09IHJvbGVTdHJpbmdJZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIHVzZXIgaGFzIHJvbGUgd2l0aCB0aGUgc3BlY2lmaWVkIGlkZW50aWZpZXIgaW4gYSBwcm9jZXNzIHdpdGggdGhlIHNwZWNpZmllZCBpZGVudGlmaWVyIChhbnkgdmVyc2lvbilcbiAgICAgKiBAcGFyYW0gcm9sZUlkZW50aWZpZXIgaWRlbnRpZmllciAoaW1wb3J0IElEKSBvZiB0aGUgcm9sZSB3ZSB3YW50IHRvIGNoZWNrXG4gICAgICogQHBhcmFtIG5ldElkZW50aWZpZXIgaWRlbnRpZmllciAoaW1wb3J0IElEKSBvZiB0aGUgcHJvY2VzcyB0aGUgcm9sZSBpcyBkZWZpbmVkIGluXG4gICAgICovXG4gICAgcHVibGljIGhhc1JvbGVCeUlkZW50aWZpZXIocm9sZUlkZW50aWZpZXI6IHN0cmluZywgbmV0SWRlbnRpZmllcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLl91c2VyLmdldFNlbGZPckltcGVyc29uYXRlZCgpO1xuICAgICAgICBpZiAoIXJvbGVJZGVudGlmaWVyIHx8ICFuZXRJZGVudGlmaWVyIHx8ICF1c2VyLnJvbGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVzZXIucm9sZXMuc29tZShyID0+IHIubmV0SW1wb3J0SWQgPT09IG5ldElkZW50aWZpZXIgJiYgci5pbXBvcnRJZCA9PT0gcm9sZUlkZW50aWZpZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyB3aGV0aGVyIHRoZSB1c2VyIGhhcyByb2xlIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lIGluIGEgcHJvY2VzcyB3aXRoIHRoZSBzcGVjaWZpZWQgaWRlbnRpZmllciAoYW55IHZlcnNpb24pXG4gICAgICogQHBhcmFtIHJvbGVOYW1lIG5hbWUgb2YgdGhlIHJvbGUgd2Ugd2FudCB0byBjaGVja1xuICAgICAqIEBwYXJhbSBuZXRJZGVudGlmaWVyIGlkZW50aWZpZXIgKGltcG9ydCBJRCkgb2YgdGhlIHByb2Nlc3MgdGhlIHJvbGUgaXMgZGVmaW5lZCBpblxuICAgICAqL1xuICAgIHB1YmxpYyBoYXNSb2xlQnlOYW1lKHJvbGVOYW1lOiBzdHJpbmcsIG5ldElkZW50aWZpZXI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB1c2VyID0gdGhpcy5fdXNlci5nZXRTZWxmT3JJbXBlcnNvbmF0ZWQoKTtcbiAgICAgICAgaWYgKCFyb2xlTmFtZSB8fCAhbmV0SWRlbnRpZmllciB8fCAhdXNlci5yb2xlcykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1c2VyLnJvbGVzLnNvbWUociA9PiByLm5ldEltcG9ydElkID09PSBuZXRJZGVudGlmaWVyICYmIHIubmFtZSA9PT0gcm9sZU5hbWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBsb2dpbihjcmVkZW50aWFsczogQ3JlZGVudGlhbHMpOiBPYnNlcnZhYmxlPFVzZXI+IHtcbiAgICAgICAgdGhpcy5fbG9naW5DYWxsZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gdGhpcy5fYXV0aFNlcnZpY2UubG9naW4oY3JlZGVudGlhbHMpLnBpcGUoXG4gICAgICAgICAgICB0YXAoKGF1dGhVc2VyOiBVc2VyKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdXNlciA9IGF1dGhVc2VyO1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2luQ2FsbGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5wdWJsaXNoVXNlckNoYW5nZSgpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbG9nb3V0KCk6IE9ic2VydmFibGU8b2JqZWN0PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hdXRoU2VydmljZS5sb2dvdXQoKS5waXBlKFxuICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl91c2VyID0gdGhpcy5lbXB0eVVzZXIoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnB1Ymxpc2hVc2VyQ2hhbmdlKCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWxvYWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubG9hZFVzZXIoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZW1wdHlVc2VyKCkge1xuICAgICAgICByZXR1cm4gbmV3IFVzZXIoJycsICcnLCAnJywgJycsIFtdLCBbXSwgW10sIFtdKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgbG9hZFVzZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3VzZXJSZXNvdXJjZS5nZXRMb2dnZWRVc2VyKCkucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKHVzZXI6IFVzZXJSZXNvdXJjZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHVzZXIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBiYWNrZW5kVXNlciA9IHsuLi51c2VyLCBpZDogdXNlci5pZC50b1N0cmluZygpfTtcbiAgICAgICAgICAgICAgICB0aGlzLl91c2VyID0gdGhpcy5fdXNlclRyYW5zZm9ybS50cmFuc2Zvcm0oYmFja2VuZFVzZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMucHVibGlzaFVzZXJDaGFuZ2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UgJiYgZXJyb3Iuc3RhdHVzID09PSA0MDEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZGVidWcoJ0F1dGhlbnRpY2F0aW9uIHRva2VuIGlzIGludmFsaWQuIENsZWFyaW5nIHN0cmVhbScpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3Nlc3Npb24uY2xlYXIoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKCdMb2FkaW5nIGxvZ2dlZCB1c2VyIGhhcyBmYWlsZWQhIEluaXRpYWxpc2F0aW9uIGhhcyBub3QgYmUgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSEnLCBlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBsb2FkUHVibGljVXNlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdXNlclJlc291cmNlLmdldFB1YmxpY0xvZ2dlZFVzZXIoKS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgodXNlcjogVXNlclJlc291cmNlKSA9PiB7XG4gICAgICAgICAgICBpZiAodXNlcikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJhY2tlbmRVc2VyID0gey4uLnVzZXIsIGlkOiB1c2VyLmlkLnRvU3RyaW5nKCl9O1xuICAgICAgICAgICAgICAgIHRoaXMuX3VzZXIgPSB0aGlzLl91c2VyVHJhbnNmb3JtLnRyYW5zZm9ybShiYWNrZW5kVXNlcik7XG4gICAgICAgICAgICAgICAgdGhpcy5wdWJsaXNoQW5vbnltb3VzVXNlckNoYW5nZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoJ0xvYWRpbmcgbG9nZ2VkIHVzZXIgaGFzIGZhaWxlZCEgSW5pdGlhbGlzYXRpb24gaGFzIG5vdCBiZSBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IScsIGVycm9yKTtcbiAgICAgICAgICAgIHRoaXMuX3B1YmxpY0xvYWRDYWxsZWQgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyVXNlcigpIHtcbiAgICAgICAgdGhpcy5fdXNlciA9IHRoaXMuZW1wdHlVc2VyKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHB1Ymxpc2hVc2VyQ2hhbmdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl91c2VyQ2hhbmdlJC5uZXh0KHRoaXMudXNlcik7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHB1Ymxpc2hBbm9ueW1vdXNVc2VyQ2hhbmdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9hbm9ueW1vdXNVc2VyQ2hhbmdlJC5uZXh0KHRoaXMudXNlcik7XG4gICAgfVxufVxuIl19