@netgrif/components-core 6.2.3 → 6.3.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/esm2020/assets/i18n/de.json +17 -0
  2. package/esm2020/assets/i18n/en.json +17 -0
  3. package/esm2020/assets/i18n/sk.json +17 -0
  4. package/esm2020/lib/authentication/models/user.transformer.mjs +2 -2
  5. package/esm2020/lib/authentication/public-api.mjs +3 -1
  6. package/esm2020/lib/authorization/permission/permission.service.mjs +2 -2
  7. package/esm2020/lib/dashboard/cards/model/custom-dashboard-model/custom-card.mjs +1 -1
  8. package/esm2020/lib/dashboard/cards/model/custom-dashboard-model/custom-iframe-card.mjs +2 -0
  9. package/esm2020/lib/dashboard/cards/model/dashboard-card-types.mjs +2 -1
  10. package/esm2020/lib/dashboard/cards/model/dashboard-card.mjs +1 -1
  11. package/esm2020/lib/data-fields/filter-field/abstract-filter-field-tab-view-content.component.mjs +60 -0
  12. package/esm2020/lib/data-fields/filter-field/abstract-filter-field-tab-view.component.mjs +53 -0
  13. package/esm2020/lib/data-fields/filter-field/abstract-filter-field.component.mjs +4 -1
  14. package/esm2020/lib/data-fields/public-api.mjs +17 -1
  15. package/esm2020/lib/data-fields/task-ref-field/abstract-task-ref-field.component.mjs +133 -0
  16. package/esm2020/lib/data-fields/task-ref-field/model/task-ref-components.mjs +8 -0
  17. package/esm2020/lib/data-fields/task-ref-field/model/task-ref-dashboard-constants.mjs +10 -0
  18. package/esm2020/lib/data-fields/task-ref-field/model/task-ref-dashboard-tile-constants.mjs +13 -0
  19. package/esm2020/lib/data-fields/task-ref-field/model/task-ref-dashboard-tile.mjs +2 -0
  20. package/esm2020/lib/data-fields/task-ref-field/model/task-ref-field.mjs +19 -1
  21. package/esm2020/lib/data-fields/task-ref-field/task-ref-dashboard-field/task-ref-dashboard-tile/abstract-task-ref-dashboard-tile.component.mjs +140 -0
  22. package/esm2020/lib/data-fields/text-field/abstract-dashboard-text-field.component.mjs +42 -0
  23. package/esm2020/lib/data-fields/text-field/dashboard-bar-chart-text-field/abstract-dashboard-bar-chart-text-field.component.mjs +33 -0
  24. package/esm2020/lib/data-fields/text-field/dashboard-iframe-text-field/abstract-dashboard-iframe-text-field.component.mjs +27 -0
  25. package/esm2020/lib/data-fields/text-field/dashboard-line-chart-text-field/abstract-dashboard-line-chart-text-field.component.mjs +33 -0
  26. package/esm2020/lib/data-fields/text-field/dashboard-pie-chart-text-field/abstract-dashboard-pie-chart-text-field.component.mjs +31 -0
  27. package/esm2020/lib/data-fields/text-field/dashboard-portal-text-field/abstract-dashboard-portal-text-field.component.mjs +27 -0
  28. package/esm2020/lib/data-fields/text-field/dashboard-portal-text-field/dashboard-portal-component-registry.service.mjs +35 -0
  29. package/esm2020/lib/data-fields/text-field/dashboard-portal-text-field/dashboard-view-constants.mjs +10 -0
  30. package/esm2020/lib/data-fields/text-field/models/text-field.mjs +23 -1
  31. package/esm2020/lib/filter/filter.repository.mjs +7 -1
  32. package/esm2020/lib/filter/user-filters.service.mjs +3 -1
  33. package/esm2020/lib/impersonation/models/user-impersonate-config-metadata.mjs +2 -0
  34. package/esm2020/lib/impersonation/models/user-impersonation-constants.mjs +11 -0
  35. package/esm2020/lib/impersonation/public-api.mjs +9 -0
  36. package/esm2020/lib/impersonation/services/impersonation-user-list.service.mjs +19 -0
  37. package/esm2020/lib/impersonation/services/impersonation-user-resource.service.mjs +25 -0
  38. package/esm2020/lib/impersonation/services/impersonation-user-select.service.mjs +85 -0
  39. package/esm2020/lib/impersonation/services/impersonation.service.mjs +90 -0
  40. package/esm2020/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.mjs +19 -6
  41. package/esm2020/lib/navigation/navigation-drawer/abstract-navigation-drawer.component.mjs +2 -2
  42. package/esm2020/lib/navigation/quick-panel/components/abstract-quick-panel.component.mjs +1 -1
  43. package/esm2020/lib/panel/task-panel/abstract-task-panel.component.mjs +25 -8
  44. package/esm2020/lib/resources/engine-endpoint/public/public-task-resource.service.mjs +3 -3
  45. package/esm2020/lib/resources/interface/data-groups.mjs +1 -1
  46. package/esm2020/lib/resources/interface/user-resource.mjs +1 -1
  47. package/esm2020/lib/side-menu/content-components/injection-tokens.mjs +3 -1
  48. package/esm2020/lib/side-menu/content-components/public-api.mjs +3 -1
  49. package/esm2020/lib/side-menu/content-components/user-impersonate/abstract-user-impersonate.component.mjs +37 -0
  50. package/esm2020/lib/side-menu/content-components/user-impersonate/model/user-impersonate-injection-data.mjs +2 -0
  51. package/esm2020/lib/side-menu/models/side-menu-size.mjs +2 -1
  52. package/esm2020/lib/task-content/model/preprocessed-data-groups.mjs +2 -0
  53. package/esm2020/lib/task-content/task-content/abstract-task-content.component.mjs +149 -4
  54. package/esm2020/lib/user/models/user.mjs +15 -2
  55. package/esm2020/lib/user/services/user-comparator.service.mjs +4 -3
  56. package/esm2020/lib/user/services/user.service.mjs +17 -12
  57. package/esm2020/lib/utility/public-api.mjs +2 -1
  58. package/esm2020/lib/utility/tests/mocks/mock-user.service.mjs +38 -0
  59. package/esm2020/lib/utility/tests/test-config.mjs +6 -1
  60. package/esm2020/lib/view/public-api.mjs +2 -1
  61. package/esm2020/lib/view/task-view/models/injection-token-task-force-open.mjs +3 -0
  62. package/esm2020/public-api.mjs +2 -1
  63. package/fesm2015/netgrif-components-core.mjs +4363 -3202
  64. package/fesm2015/netgrif-components-core.mjs.map +1 -1
  65. package/fesm2020/netgrif-components-core.mjs +4353 -3206
  66. package/fesm2020/netgrif-components-core.mjs.map +1 -1
  67. package/lib/authentication/public-api.d.ts +2 -0
  68. package/lib/dashboard/cards/model/custom-dashboard-model/custom-card.d.ts +8 -7
  69. package/lib/dashboard/cards/model/custom-dashboard-model/custom-iframe-card.d.ts +4 -0
  70. package/lib/dashboard/cards/model/dashboard-card-types.d.ts +1 -0
  71. package/lib/dashboard/cards/model/dashboard-card.d.ts +1 -1
  72. package/lib/data-fields/filter-field/abstract-filter-field-tab-view-content.component.d.ts +17 -0
  73. package/lib/data-fields/filter-field/abstract-filter-field-tab-view.component.d.ts +17 -0
  74. package/lib/data-fields/filter-field/abstract-filter-field.component.d.ts +1 -0
  75. package/lib/data-fields/public-api.d.ts +16 -0
  76. package/lib/data-fields/task-ref-field/abstract-task-ref-field.component.d.ts +20 -0
  77. package/lib/data-fields/task-ref-field/model/task-ref-components.d.ts +6 -0
  78. package/lib/data-fields/task-ref-field/model/task-ref-dashboard-constants.d.ts +8 -0
  79. package/lib/data-fields/task-ref-field/model/task-ref-dashboard-tile-constants.d.ts +11 -0
  80. package/lib/data-fields/task-ref-field/model/task-ref-dashboard-tile.d.ts +9 -0
  81. package/lib/data-fields/task-ref-field/model/task-ref-field.d.ts +10 -0
  82. package/lib/data-fields/task-ref-field/task-ref-dashboard-field/task-ref-dashboard-tile/abstract-task-ref-dashboard-tile.component.d.ts +36 -0
  83. package/lib/data-fields/text-field/abstract-dashboard-text-field.component.d.ts +23 -0
  84. package/lib/data-fields/text-field/dashboard-bar-chart-text-field/abstract-dashboard-bar-chart-text-field.component.d.ts +10 -0
  85. package/lib/data-fields/text-field/dashboard-iframe-text-field/abstract-dashboard-iframe-text-field.component.d.ts +11 -0
  86. package/lib/data-fields/text-field/dashboard-line-chart-text-field/abstract-dashboard-line-chart-text-field.component.d.ts +10 -0
  87. package/lib/data-fields/text-field/dashboard-pie-chart-text-field/abstract-dashboard-pie-chart-text-field.component.d.ts +10 -0
  88. package/lib/data-fields/text-field/dashboard-portal-text-field/abstract-dashboard-portal-text-field.component.d.ts +10 -0
  89. package/lib/data-fields/text-field/dashboard-portal-text-field/dashboard-portal-component-registry.service.d.ts +14 -0
  90. package/lib/data-fields/text-field/dashboard-portal-text-field/dashboard-view-constants.d.ts +8 -0
  91. package/lib/data-fields/text-field/models/text-field.d.ts +20 -0
  92. package/lib/filter/filter.repository.d.ts +4 -0
  93. package/lib/impersonation/models/user-impersonate-config-metadata.d.ts +3 -0
  94. package/lib/impersonation/models/user-impersonation-constants.d.ts +9 -0
  95. package/lib/impersonation/public-api.d.ts +6 -0
  96. package/lib/impersonation/services/impersonation-user-list.service.d.ts +12 -0
  97. package/lib/impersonation/services/impersonation-user-resource.service.d.ts +17 -0
  98. package/lib/impersonation/services/impersonation-user-select.service.d.ts +25 -0
  99. package/lib/impersonation/services/impersonation.service.d.ts +37 -0
  100. package/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.d.ts +9 -2
  101. package/lib/navigation/quick-panel/components/abstract-quick-panel.component.d.ts +1 -1
  102. package/lib/panel/task-panel/abstract-task-panel.component.d.ts +8 -3
  103. package/lib/resources/engine-endpoint/public/public-task-resource.service.d.ts +2 -1
  104. package/lib/resources/interface/data-groups.d.ts +10 -5
  105. package/lib/resources/interface/user-resource.d.ts +1 -0
  106. package/lib/side-menu/content-components/injection-tokens.d.ts +2 -0
  107. package/lib/side-menu/content-components/public-api.d.ts +2 -0
  108. package/lib/side-menu/content-components/user-impersonate/abstract-user-impersonate.component.d.ts +14 -0
  109. package/lib/side-menu/content-components/user-impersonate/model/user-impersonate-injection-data.d.ts +8 -0
  110. package/lib/side-menu/models/side-menu-size.d.ts +2 -1
  111. package/lib/task-content/model/preprocessed-data-groups.d.ts +5 -0
  112. package/lib/task-content/task-content/abstract-task-content.component.d.ts +42 -1
  113. package/lib/user/models/user.d.ts +10 -1
  114. package/lib/user/services/user-comparator.service.d.ts +1 -1
  115. package/lib/utility/public-api.d.ts +1 -0
  116. package/lib/utility/tests/mocks/mock-user.service.d.ts +16 -0
  117. package/lib/view/public-api.d.ts +1 -0
  118. package/lib/view/task-view/models/injection-token-task-force-open.d.ts +2 -0
  119. package/package.json +1 -1
  120. package/public-api.d.ts +1 -0
  121. package/src/assets/i18n/de.json +17 -0
  122. package/src/assets/i18n/en.json +17 -0
  123. package/src/assets/i18n/sk.json +17 -0
@@ -0,0 +1,31 @@
1
+ import { Component } from '@angular/core';
2
+ import { DashboardCardTypes } from '../../../dashboard/cards/model/dashboard-card-types';
3
+ import { FilterType } from '../../../filter/models/filter-type';
4
+ import { AbstractDashboardTextFieldComponent } from '../abstract-dashboard-text-field.component';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@ngx-translate/core";
7
+ export class AbstractDashboardPieChartTextFieldComponent extends AbstractDashboardTextFieldComponent {
8
+ constructor(translate) {
9
+ super(translate);
10
+ }
11
+ createCard(textFieldValue) {
12
+ const parsedValue = JSON.parse(textFieldValue);
13
+ return {
14
+ type: DashboardCardTypes.PIE,
15
+ query: parsedValue.query,
16
+ title: parsedValue.title,
17
+ resourceType: !!parsedValue.resourceType ? parsedValue.resourceType : FilterType.CASE,
18
+ layout: { x: 0, y: 0, rows: 1, cols: 1 }
19
+ };
20
+ }
21
+ }
22
+ AbstractDashboardPieChartTextFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AbstractDashboardPieChartTextFieldComponent, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
23
+ AbstractDashboardPieChartTextFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: AbstractDashboardPieChartTextFieldComponent, selector: "ncc-abstract-dashboard-pie-chart-text-field", usesInheritance: true, ngImport: i0, template: '', isInline: true });
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AbstractDashboardPieChartTextFieldComponent, decorators: [{
25
+ type: Component,
26
+ args: [{
27
+ selector: 'ncc-abstract-dashboard-pie-chart-text-field',
28
+ template: ''
29
+ }]
30
+ }], ctorParameters: function () { return [{ type: i1.TranslateService }]; } });
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZGFzaGJvYXJkLXBpZS1jaGFydC10ZXh0LWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvZGF0YS1maWVsZHMvdGV4dC1maWVsZC9kYXNoYm9hcmQtcGllLWNoYXJ0LXRleHQtZmllbGQvYWJzdHJhY3QtZGFzaGJvYXJkLXBpZS1jaGFydC10ZXh0LWZpZWxkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBR3hDLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHFEQUFxRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RCxPQUFPLEVBQUMsbUNBQW1DLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQzs7O0FBTS9GLE1BQU0sT0FBZ0IsMkNBQTRDLFNBQVEsbUNBQW1DO0lBRXpHLFlBQXNCLFNBQTJCO1FBQzdDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRVMsVUFBVSxDQUFDLGNBQXNCO1FBQ3ZDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFlLENBQUM7UUFDN0QsT0FBTztZQUNILElBQUksRUFBRSxrQkFBa0IsQ0FBQyxHQUFHO1lBQzVCLEtBQUssRUFBRSxXQUFXLENBQUMsS0FBSztZQUN4QixLQUFLLEVBQUUsV0FBVyxDQUFDLEtBQUs7WUFDeEIsWUFBWSxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSTtZQUNyRixNQUFNLEVBQUUsRUFBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFDO1NBQ3pDLENBQUM7SUFDTixDQUFDOzt5SUFmaUIsMkNBQTJDOzZIQUEzQywyQ0FBMkMsMEdBRm5ELEVBQUU7NEZBRU0sMkNBQTJDO2tCQUpoRSxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSw2Q0FBNkM7b0JBQ3ZELFFBQVEsRUFBRSxFQUFFO2lCQUNmIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7Q3VzdG9tQ2FyZH0gZnJvbSAnLi4vLi4vLi4vZGFzaGJvYXJkL2NhcmRzL21vZGVsL2N1c3RvbS1kYXNoYm9hcmQtbW9kZWwvY3VzdG9tLWNhcmQnO1xuaW1wb3J0IHtEYXNoYm9hcmRDYXJkVHlwZXN9IGZyb20gJy4uLy4uLy4uL2Rhc2hib2FyZC9jYXJkcy9tb2RlbC9kYXNoYm9hcmQtY2FyZC10eXBlcyc7XG5pbXBvcnQge0ZpbHRlclR5cGV9IGZyb20gJy4uLy4uLy4uL2ZpbHRlci9tb2RlbHMvZmlsdGVyLXR5cGUnO1xuaW1wb3J0IHtBYnN0cmFjdERhc2hib2FyZFRleHRGaWVsZENvbXBvbmVudH0gZnJvbSAnLi4vYWJzdHJhY3QtZGFzaGJvYXJkLXRleHQtZmllbGQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduY2MtYWJzdHJhY3QtZGFzaGJvYXJkLXBpZS1jaGFydC10ZXh0LWZpZWxkJyxcbiAgICB0ZW1wbGF0ZTogJydcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3REYXNoYm9hcmRQaWVDaGFydFRleHRGaWVsZENvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0RGFzaGJvYXJkVGV4dEZpZWxkQ29tcG9uZW50IHtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcih0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIodHJhbnNsYXRlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlQ2FyZCh0ZXh0RmllbGRWYWx1ZTogc3RyaW5nKTogQ3VzdG9tQ2FyZCB7XG4gICAgICAgIGNvbnN0IHBhcnNlZFZhbHVlID0gSlNPTi5wYXJzZSh0ZXh0RmllbGRWYWx1ZSkgYXMgQ3VzdG9tQ2FyZDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6IERhc2hib2FyZENhcmRUeXBlcy5QSUUsXG4gICAgICAgICAgICBxdWVyeTogcGFyc2VkVmFsdWUucXVlcnksXG4gICAgICAgICAgICB0aXRsZTogcGFyc2VkVmFsdWUudGl0bGUsXG4gICAgICAgICAgICByZXNvdXJjZVR5cGU6ICEhcGFyc2VkVmFsdWUucmVzb3VyY2VUeXBlID8gcGFyc2VkVmFsdWUucmVzb3VyY2VUeXBlIDogRmlsdGVyVHlwZS5DQVNFLFxuICAgICAgICAgICAgbGF5b3V0OiB7eDogMCwgeTogMCwgcm93czogMSwgY29sczogMX1cbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,27 @@
1
+ import { Component } from '@angular/core';
2
+ import { DashboardCardTypes } from '../../../dashboard/cards/model/dashboard-card-types';
3
+ import { AbstractDashboardTextFieldComponent } from '../abstract-dashboard-text-field.component';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@ngx-translate/core";
6
+ export class AbstractDashboardPortalTextFieldComponent extends AbstractDashboardTextFieldComponent {
7
+ constructor(translate) {
8
+ super(translate);
9
+ }
10
+ createCard(textFieldValue) {
11
+ return {
12
+ type: DashboardCardTypes.PORTAL,
13
+ componentName: textFieldValue,
14
+ layout: { x: 0, y: 0, rows: 1, cols: 1 }
15
+ };
16
+ }
17
+ }
18
+ AbstractDashboardPortalTextFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AbstractDashboardPortalTextFieldComponent, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
19
+ AbstractDashboardPortalTextFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: AbstractDashboardPortalTextFieldComponent, selector: "ncc-abstract-dashboard-pie-chart-text-field", usesInheritance: true, ngImport: i0, template: '', isInline: true });
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AbstractDashboardPortalTextFieldComponent, decorators: [{
21
+ type: Component,
22
+ args: [{
23
+ selector: 'ncc-abstract-dashboard-pie-chart-text-field',
24
+ template: ''
25
+ }]
26
+ }], ctorParameters: function () { return [{ type: i1.TranslateService }]; } });
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZGFzaGJvYXJkLXBvcnRhbC10ZXh0LWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvZGF0YS1maWVsZHMvdGV4dC1maWVsZC9kYXNoYm9hcmQtcG9ydGFsLXRleHQtZmllbGQvYWJzdHJhY3QtZGFzaGJvYXJkLXBvcnRhbC10ZXh0LWZpZWxkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBR3hDLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHFEQUFxRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBQyxtQ0FBbUMsRUFBQyxNQUFNLDRDQUE0QyxDQUFDOzs7QUFNL0YsTUFBTSxPQUFnQix5Q0FBMEMsU0FBUSxtQ0FBbUM7SUFFdkcsWUFBc0IsU0FBMkI7UUFDN0MsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFUyxVQUFVLENBQUMsY0FBc0I7UUFDdkMsT0FBTztZQUNILElBQUksRUFBRSxrQkFBa0IsQ0FBQyxNQUFNO1lBQy9CLGFBQWEsRUFBRSxjQUFjO1lBQzdCLE1BQU0sRUFBRSxFQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUM7U0FDekMsQ0FBQztJQUNOLENBQUM7O3VJQVppQix5Q0FBeUM7MkhBQXpDLHlDQUF5QywwR0FGakQsRUFBRTs0RkFFTSx5Q0FBeUM7a0JBSjlELFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLDZDQUE2QztvQkFDdkQsUUFBUSxFQUFFLEVBQUU7aUJBQ2YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtDdXN0b21DYXJkfSBmcm9tICcuLi8uLi8uLi9kYXNoYm9hcmQvY2FyZHMvbW9kZWwvY3VzdG9tLWRhc2hib2FyZC1tb2RlbC9jdXN0b20tY2FyZCc7XG5pbXBvcnQge0Rhc2hib2FyZENhcmRUeXBlc30gZnJvbSAnLi4vLi4vLi4vZGFzaGJvYXJkL2NhcmRzL21vZGVsL2Rhc2hib2FyZC1jYXJkLXR5cGVzJztcbmltcG9ydCB7QWJzdHJhY3REYXNoYm9hcmRUZXh0RmllbGRDb21wb25lbnR9IGZyb20gJy4uL2Fic3RyYWN0LWRhc2hib2FyZC10ZXh0LWZpZWxkLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmNjLWFic3RyYWN0LWRhc2hib2FyZC1waWUtY2hhcnQtdGV4dC1maWVsZCcsXG4gICAgdGVtcGxhdGU6ICcnXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0RGFzaGJvYXJkUG9ydGFsVGV4dEZpZWxkQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3REYXNoYm9hcmRUZXh0RmllbGRDb21wb25lbnQge1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSkge1xuICAgICAgICBzdXBlcih0cmFuc2xhdGUpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVDYXJkKHRleHRGaWVsZFZhbHVlOiBzdHJpbmcpOiBDdXN0b21DYXJkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6IERhc2hib2FyZENhcmRUeXBlcy5QT1JUQUwsXG4gICAgICAgICAgICBjb21wb25lbnROYW1lOiB0ZXh0RmllbGRWYWx1ZSxcbiAgICAgICAgICAgIGxheW91dDoge3g6IDAsIHk6IDAsIHJvd3M6IDEsIGNvbHM6IDF9XG4gICAgICAgIH07XG4gICAgfVxufVxuIl19
@@ -0,0 +1,35 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class DashboardPortalComponentRegistryService {
4
+ constructor() {
5
+ this.registry = new Map();
6
+ this.typeRegistry = new Map();
7
+ }
8
+ register(component, factory) {
9
+ this.registry.set(component, factory);
10
+ }
11
+ registerType(key, type) {
12
+ this.typeRegistry.set(key, type);
13
+ }
14
+ get(component, injector) {
15
+ if (!this.registry.has(component)) {
16
+ return undefined;
17
+ }
18
+ return this.registry.get(component)(injector);
19
+ }
20
+ getType(key) {
21
+ if (!this.typeRegistry.has(key)) {
22
+ return undefined;
23
+ }
24
+ return this.typeRegistry.get(key);
25
+ }
26
+ }
27
+ DashboardPortalComponentRegistryService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DashboardPortalComponentRegistryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
28
+ DashboardPortalComponentRegistryService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DashboardPortalComponentRegistryService, providedIn: 'root' });
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DashboardPortalComponentRegistryService, decorators: [{
30
+ type: Injectable,
31
+ args: [{
32
+ providedIn: 'root'
33
+ }]
34
+ }], ctorParameters: function () { return []; } });
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLXBvcnRhbC1jb21wb25lbnQtcmVnaXN0cnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvZGF0YS1maWVsZHMvdGV4dC1maWVsZC9kYXNoYm9hcmQtcG9ydGFsLXRleHQtZmllbGQvZGFzaGJvYXJkLXBvcnRhbC1jb21wb25lbnQtcmVnaXN0cnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFrQixNQUFNLGVBQWUsQ0FBQzs7QUFNM0QsTUFBTSxPQUFPLHVDQUF1QztJQUtoRDtRQUNJLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQXdELENBQUM7UUFDaEYsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLEdBQUcsRUFBcUIsQ0FBQztJQUNyRCxDQUFDO0lBRU0sUUFBUSxDQUFDLFNBQWlCLEVBQUUsT0FBcUQ7UUFDcEYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFTSxZQUFZLENBQUMsR0FBVyxFQUFFLElBQWU7UUFDNUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTSxHQUFHLENBQUMsU0FBaUIsRUFBRSxRQUFtQjtRQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDL0IsT0FBTyxTQUFTLENBQUE7U0FDbkI7UUFDRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFTSxPQUFPLENBQUMsR0FBVztRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDN0IsT0FBTyxTQUFTLENBQUE7U0FDbkI7UUFDRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7O3FJQTlCUSx1Q0FBdUM7eUlBQXZDLHVDQUF1QyxjQUZwQyxNQUFNOzRGQUVULHVDQUF1QztrQkFIbkQsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21wb25lbnRQb3J0YWx9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIERhc2hib2FyZFBvcnRhbENvbXBvbmVudFJlZ2lzdHJ5U2VydmljZSB7XG5cbiAgICBwcml2YXRlIHJlZ2lzdHJ5OiBNYXA8c3RyaW5nLCAoaW5qZWN0b3I6IEluamVjdG9yKSA9PiBDb21wb25lbnRQb3J0YWw8YW55Pj47XG4gICAgcHJpdmF0ZSB0eXBlUmVnaXN0cnk6IE1hcDxzdHJpbmcsIFR5cGU8YW55Pj47XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5yZWdpc3RyeSA9IG5ldyBNYXA8c3RyaW5nLCAoaW5qZWN0b3I6IEluamVjdG9yKSA9PiBDb21wb25lbnRQb3J0YWw8YW55Pj4oKTtcbiAgICAgICAgdGhpcy50eXBlUmVnaXN0cnkgPSBuZXcgTWFwPHN0cmluZywgVHlwZTxhbnk+PigpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlcihjb21wb25lbnQ6IHN0cmluZywgZmFjdG9yeTogKGluamVjdG9yOiBJbmplY3RvcikgPT4gQ29tcG9uZW50UG9ydGFsPGFueT4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZWdpc3RyeS5zZXQoY29tcG9uZW50LCBmYWN0b3J5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJUeXBlKGtleTogc3RyaW5nLCB0eXBlOiBUeXBlPGFueT4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy50eXBlUmVnaXN0cnkuc2V0KGtleSwgdHlwZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldChjb21wb25lbnQ6IHN0cmluZywgaW5qZWN0b3I/OiBJbmplY3Rvcik6IENvbXBvbmVudFBvcnRhbDxhbnk+IHtcbiAgICAgICAgaWYgKCF0aGlzLnJlZ2lzdHJ5Lmhhcyhjb21wb25lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucmVnaXN0cnkuZ2V0KGNvbXBvbmVudCkoaW5qZWN0b3IpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRUeXBlKGtleTogc3RyaW5nKTogVHlwZTxhbnk+IHtcbiAgICAgICAgaWYgKCF0aGlzLnR5cGVSZWdpc3RyeS5oYXMoa2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnR5cGVSZWdpc3RyeS5nZXQoa2V5KTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,10 @@
1
+ export var Dashboard;
2
+ (function (Dashboard) {
3
+ Dashboard["FILTER_TAB_VIEW_ID"] = "filter-tab-view";
4
+ Dashboard["FILTER_CASE_VIEW_ID"] = "filter-case-view";
5
+ Dashboard["FILTER_TASK_VIEW_ID"] = "filter-task-view";
6
+ Dashboard["FILTER_TAB_VIEW_TITLE_KEY"] = "tabTitle";
7
+ Dashboard["FILTER_TAB_VIEW_ICON_KEY"] = "tabIcon";
8
+ Dashboard["FILTER_TAB_VIEW_COMPONENT_ID"] = "filter-tab-view";
9
+ })(Dashboard || (Dashboard = {}));
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLXZpZXctY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9kYXRhLWZpZWxkcy90ZXh0LWZpZWxkL2Rhc2hib2FyZC1wb3J0YWwtdGV4dC1maWVsZC9kYXNoYm9hcmQtdmlldy1jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksU0FPWDtBQVBELFdBQVksU0FBUztJQUNqQixtREFBc0MsQ0FBQTtJQUN0QyxxREFBd0MsQ0FBQTtJQUN4QyxxREFBd0MsQ0FBQTtJQUN4QyxtREFBc0MsQ0FBQTtJQUN0QyxpREFBb0MsQ0FBQTtJQUNwQyw2REFBZ0QsQ0FBQTtBQUNwRCxDQUFDLEVBUFcsU0FBUyxLQUFULFNBQVMsUUFPcEIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBEYXNoYm9hcmQge1xuICAgIEZJTFRFUl9UQUJfVklFV19JRCA9ICdmaWx0ZXItdGFiLXZpZXcnLFxuICAgIEZJTFRFUl9DQVNFX1ZJRVdfSUQgPSAnZmlsdGVyLWNhc2UtdmlldycsXG4gICAgRklMVEVSX1RBU0tfVklFV19JRCA9ICdmaWx0ZXItdGFzay12aWV3JyxcbiAgICBGSUxURVJfVEFCX1ZJRVdfVElUTEVfS0VZID0gJ3RhYlRpdGxlJyxcbiAgICBGSUxURVJfVEFCX1ZJRVdfSUNPTl9LRVkgPSAndGFiSWNvbicsXG4gICAgRklMVEVSX1RBQl9WSUVXX0NPTVBPTkVOVF9JRCA9ICdmaWx0ZXItdGFiLXZpZXcnXG59XG4iXX0=
@@ -1,5 +1,27 @@
1
1
  import { Validators } from '@angular/forms';
2
2
  import { DataField } from '../../models/abstract-data-field';
3
+ export var TextFieldView;
4
+ (function (TextFieldView) {
5
+ TextFieldView["DEFAULT"] = "default";
6
+ TextFieldView["TEXTAREA"] = "textarea";
7
+ TextFieldView["RICHTEXTAREA"] = "richtextarea";
8
+ TextFieldView["HTMLTEXTAREA"] = "htmltextarea";
9
+ })(TextFieldView || (TextFieldView = {}));
10
+ /**
11
+ * A collection of Text field component names supported by the application engine.
12
+ */
13
+ export var TextFieldComponent;
14
+ (function (TextFieldComponent) {
15
+ TextFieldComponent["PASSWORD"] = "password";
16
+ TextFieldComponent["TEXT_AREA"] = "text_area";
17
+ TextFieldComponent["RICH_TEXT_AREA"] = "richtextarea";
18
+ TextFieldComponent["HTML_TEXT_AREA"] = "htmltextarea";
19
+ TextFieldComponent["DASHBOARD_LINE_CHART"] = "dashboard_line_chart";
20
+ TextFieldComponent["DASHBOARD_PIE_CHART"] = "dashboard_pie_chart";
21
+ TextFieldComponent["DASHBOARD_BAR_CHART"] = "dashboard_bar_chart";
22
+ TextFieldComponent["DASHBOARD_IFRAME"] = "dashboard_iframe";
23
+ TextFieldComponent["DASHBOARD_PORTAL"] = "dashboard_portal";
24
+ })(TextFieldComponent || (TextFieldComponent = {}));
3
25
  export var TextAreaHeight;
4
26
  (function (TextAreaHeight) {
5
27
  TextAreaHeight[TextAreaHeight["OUTLINE"] = 27] = "OUTLINE";
@@ -70,4 +92,4 @@ export class TextField extends DataField {
70
92
  }
71
93
  }
72
94
  TextField.FIELD_HEIGHT = 105;
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1maWVsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvZGF0YS1maWVsZHMvdGV4dC1maWVsZC9tb2RlbHMvdGV4dC1maWVsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQTJCLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBSXBFLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUUzRCxNQUFNLENBQU4sSUFBWSxjQUdYO0FBSEQsV0FBWSxjQUFjO0lBQ3RCLDBEQUFZLENBQUE7SUFDWixzRUFBa0IsQ0FBQTtBQUN0QixDQUFDLEVBSFcsY0FBYyxLQUFkLGNBQWMsUUFHekI7QUFFRCxNQUFNLENBQU4sSUFBWSxtQkFXWDtBQVhELFdBQVksbUJBQW1CO0lBQzNCLDRDQUFxQixDQUFBO0lBQ3JCLCtDQUF3QixDQUFBO0lBQ3hCLCtDQUF3QixDQUFBO0lBQ3hCLHFEQUE4QixDQUFBO0lBQzlCLHFEQUE4QixDQUFBO0lBQzlCLDBDQUFtQixDQUFBO0lBQ25CLHNDQUFlLENBQUE7SUFDZiwwREFBbUMsQ0FBQTtJQUNuQywrQ0FBd0IsQ0FBQTtJQUN4QixzQ0FBZSxDQUFBO0FBQ25CLENBQUMsRUFYVyxtQkFBbUIsS0FBbkIsbUJBQW1CLFFBVzlCO0FBRUQsTUFBTSxPQUFPLFNBQVUsU0FBUSxTQUFpQjtJQUc1QyxZQUFZLFFBQWdCLEVBQUUsS0FBYSxFQUFFLEtBQWEsRUFBRSxRQUFrQixFQUFFLFdBQW9CLEVBQ3hGLFdBQW9CLEVBQUUsTUFBZSxFQUFFLFdBQStCLEVBQUUsVUFBc0IsRUFDOUYsWUFBcUI7UUFDN0IsS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsVUFB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QUFLLENBQUMsQ0FBQyxFQUFFO1lBQ3RILE9BQU8sQ0FBQyxFQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1NBQ25DO2FBQU07WUFDSCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDakI7SUFDTCxDQUFDOztBQWxEYSxzQkFBWSxHQUFHLEdBQUcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QmVoYXZpb3J9IGZyb20gJy4uLy4uL21vZGVscy9iZWhhdmlvcic7XG5pbXBvcnQge0Zvcm1Db250cm9sLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtMYXlvdXR9IGZyb20gJy4uLy4uL21vZGVscy9sYXlvdXQnO1xuaW1wb3J0IHtWYWxpZGF0aW9ufSBmcm9tICcuLi8uLi9tb2RlbHMvdmFsaWRhdGlvbic7XG5pbXBvcnQge0NvbXBvbmVudH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NvbXBvbmVudCc7XG5pbXBvcnQge0RhdGFGaWVsZH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Fic3RyYWN0LWRhdGEtZmllbGQnO1xuXG5leHBvcnQgZW51bSBUZXh0QXJlYUhlaWdodCB7XG4gICAgT1VUTElORSA9IDI3LFxuICAgIEZJTExfU1RBTkRBUkQgPSAzNFxufVxuXG5leHBvcnQgZW51bSBUZXh0RmllbGRWYWxpZGF0aW9uIHtcbiAgICBSRVFVSVJFRCA9ICdyZXF1aXJlZCcsXG4gICAgTUlOX0xFTkdUSCA9ICdtaW5MZW5ndGgnLFxuICAgIE1BWF9MRU5HVEggPSAnbWF4TGVuZ3RoJyxcbiAgICBWQUxJRF9NSU5fTEVOR1RIID0gJ21pbmxlbmd0aCcsXG4gICAgVkFMSURfTUFYX0xFTkdUSCA9ICdtYXhsZW5ndGgnLFxuICAgIFBBVFRFUk4gPSAncGF0dGVybicsXG4gICAgUkVHRVggPSAncmVnZXgnLFxuICAgIFZBTElEX1RFTF9OVU1CRVIgPSAndmFsaWRUZWxOdW1iZXInLFxuICAgIFRFTF9OVU1CRVIgPSAndGVsTnVtYmVyJyxcbiAgICBFTUFJTCA9ICdlbWFpbCdcbn1cblxuZXhwb3J0IGNsYXNzIFRleHRGaWVsZCBleHRlbmRzIERhdGFGaWVsZDxzdHJpbmc+IHtcbiAgICBwdWJsaWMgc3RhdGljIEZJRUxEX0hFSUdIVCA9IDEwNTtcblxuICAgIGNvbnN0cnVjdG9yKHN0cmluZ0lkOiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIGJlaGF2aW9yOiBCZWhhdmlvciwgcGxhY2Vob2xkZXI/OiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb24/OiBzdHJpbmcsIGxheW91dD86IExheW91dCwgdmFsaWRhdGlvbnM/OiBBcnJheTxWYWxpZGF0aW9uPiwgX2NvbXBvbmVudD86IENvbXBvbmVudCxcbiAgICAgICAgICAgICAgICBwYXJlbnRUYXNrSWQ/OiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIoc3RyaW5nSWQsIHRpdGxlLCB2YWx1ZSwgYmVoYXZpb3IsIHBsYWNlaG9sZGVyLCBkZXNjcmlwdGlvbiwgbGF5b3V0LCB2YWxpZGF0aW9ucywgX2NvbXBvbmVudCwgcGFyZW50VGFza0lkKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVzb2x2ZVZhbGlkYXRpb25zKCk6IEFycmF5PFZhbGlkYXRvckZuPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuXG4gICAgICAgIHRoaXMudmFsaWRhdGlvbnMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtLnZhbGlkYXRpb25SdWxlLmluY2x1ZGVzKFRleHRGaWVsZFZhbGlkYXRpb24uTUlOX0xFTkdUSCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0bXAgPSBpdGVtLnZhbGlkYXRpb25SdWxlLnNwbGl0KCcgJyk7XG4gICAgICAgICAgICAgICAgaWYgKHRtcFsxXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxlbmd0aCA9IHBhcnNlSW50KHRtcFsxXSwgMTApO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTmFOKGxlbmd0aCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKGxlbmd0aCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtLnZhbGlkYXRpb25SdWxlLmluY2x1ZGVzKFRleHRGaWVsZFZhbGlkYXRpb24uTUFYX0xFTkdUSCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0bXAgPSBpdGVtLnZhbGlkYXRpb25SdWxlLnNwbGl0KCcgJyk7XG4gICAgICAgICAgICAgICAgaWYgKHRtcFsxXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxlbmd0aCA9IHBhcnNlSW50KHRtcFsxXSwgMTApO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTmFOKGxlbmd0aCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKFZhbGlkYXRvcnMubWF4TGVuZ3RoKGxlbmd0aCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtLnZhbGlkYXRpb25SdWxlLmluY2x1ZGVzKFRleHRGaWVsZFZhbGlkYXRpb24uUkVHRVgpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0udmFsaWRhdGlvblJ1bGUuc3RhcnRzV2l0aCgncmVnZXggJykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goVmFsaWRhdG9ycy5wYXR0ZXJuKG5ldyBSZWdFeHAoaXRlbS52YWxpZGF0aW9uUnVsZS5zdWJzdHJpbmcoNiwgaXRlbS52YWxpZGF0aW9uUnVsZS5sZW5ndGggKSkpKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0udmFsaWRhdGlvblJ1bGUuc3RhcnRzV2l0aCgncmVnZXgoXCInKSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChWYWxpZGF0b3JzLnBhdHRlcm4obmV3IFJlZ0V4cChpdGVtLnZhbGlkYXRpb25SdWxlLnN1YnN0cmluZyg3LCBpdGVtLnZhbGlkYXRpb25SdWxlLmxlbmd0aCAtIDIpKSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbS52YWxpZGF0aW9uUnVsZS5pbmNsdWRlcyhUZXh0RmllbGRWYWxpZGF0aW9uLkVNQUlMKSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKFZhbGlkYXRvcnMuZW1haWwpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtLnZhbGlkYXRpb25SdWxlLmluY2x1ZGVzKFRleHRGaWVsZFZhbGlkYXRpb24uVEVMX05VTUJFUikpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh0aGlzLnZhbGlkVGVsTnVtYmVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZhbGlkVGVsTnVtYmVyKGZjOiBGb3JtQ29udHJvbCkge1xuICAgICAgICBpZiAoIShuZXcgUmVnRXhwKC9eKD86XFwrPyhcXGR7MSwzfSkpPyhbLS4gKF0qKFxcZHszfSlbLS4gKV0qKT8oKFxcZHszfSlbLS4gXSooXFxkezIsNH0pKD86Wy0ueCBdKihcXGQrKSk/KSQvKS50ZXN0KGZjLnZhbHVlKSkpIHtcbiAgICAgICAgICAgIHJldHVybiAoe3ZhbGlkVGVsTnVtYmVyOiB0cnVlfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gKG51bGwpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1maWVsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvZGF0YS1maWVsZHMvdGV4dC1maWVsZC9tb2RlbHMvdGV4dC1maWVsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQTJCLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBSXBFLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUUzRCxNQUFNLENBQU4sSUFBWSxhQUtYO0FBTEQsV0FBWSxhQUFhO0lBQ3JCLG9DQUFtQixDQUFBO0lBQ25CLHNDQUFxQixDQUFBO0lBQ3JCLDhDQUE2QixDQUFBO0lBQzdCLDhDQUE2QixDQUFBO0FBQ2pDLENBQUMsRUFMVyxhQUFhLEtBQWIsYUFBYSxRQUt4QjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksa0JBVVg7QUFWRCxXQUFZLGtCQUFrQjtJQUMxQiwyQ0FBcUIsQ0FBQTtJQUNyQiw2Q0FBdUIsQ0FBQTtJQUN2QixxREFBK0IsQ0FBQTtJQUMvQixxREFBK0IsQ0FBQTtJQUMvQixtRUFBNkMsQ0FBQTtJQUM3QyxpRUFBMkMsQ0FBQTtJQUMzQyxpRUFBMkMsQ0FBQTtJQUMzQywyREFBcUMsQ0FBQTtJQUNyQywyREFBcUMsQ0FBQTtBQUN6QyxDQUFDLEVBVlcsa0JBQWtCLEtBQWxCLGtCQUFrQixRQVU3QjtBQUVELE1BQU0sQ0FBTixJQUFZLGNBR1g7QUFIRCxXQUFZLGNBQWM7SUFDdEIsMERBQVksQ0FBQTtJQUNaLHNFQUFrQixDQUFBO0FBQ3RCLENBQUMsRUFIVyxjQUFjLEtBQWQsY0FBYyxRQUd6QjtBQUVELE1BQU0sQ0FBTixJQUFZLG1CQVdYO0FBWEQsV0FBWSxtQkFBbUI7SUFDM0IsNENBQXFCLENBQUE7SUFDckIsK0NBQXdCLENBQUE7SUFDeEIsK0NBQXdCLENBQUE7SUFDeEIscURBQThCLENBQUE7SUFDOUIscURBQThCLENBQUE7SUFDOUIsMENBQW1CLENBQUE7SUFDbkIsc0NBQWUsQ0FBQTtJQUNmLDBEQUFtQyxDQUFBO0lBQ25DLCtDQUF3QixDQUFBO0lBQ3hCLHNDQUFlLENBQUE7QUFDbkIsQ0FBQyxFQVhXLG1CQUFtQixLQUFuQixtQkFBbUIsUUFXOUI7QUFFRCxNQUFNLE9BQU8sU0FBVSxTQUFRLFNBQWlCO0lBRzVDLFlBQVksUUFBZ0IsRUFBRSxLQUFhLEVBQUUsS0FBYSxFQUFFLFFBQWtCLEVBQUUsV0FBb0IsRUFDeEYsV0FBb0IsRUFBRSxNQUFlLEVBQUUsV0FBK0IsRUFBRSxVQUFzQixFQUM5RixZQUFxQjtRQUM3QixLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDckgsQ0FBQztJQUVTLGtCQUFrQjtRQUN4QixNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFFbEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDNUIsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDOUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzNDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsRUFBRTtvQkFDdEIsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDcEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRTt3QkFDaEIsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7cUJBQzdDO2lCQUNKO2FBQ0o7aUJBQU0sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDckUsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzNDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsRUFBRTtvQkFDdEIsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDcEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRTt3QkFDaEIsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7cUJBQzdDO2lCQUNKO2FBQ0o7aUJBQU0sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDaEUsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRTtvQkFDMUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUM5RztxQkFBTSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFO29CQUNsRCxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNqSDthQUNKO2lCQUFNLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ2hFLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ2pDO2lCQUFNLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLEVBQUU7Z0JBQ3JFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQ3BDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRU8sY0FBYyxDQUFDLEVBQWU7UUFDbEMsSUFBSSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsc0ZBQXNGLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDdEgsT0FBTyxDQUFDLEVBQUMsY0FBYyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7U0FDbkM7YUFBTTtZQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNqQjtJQUNMLENBQUM7O0FBbERhLHNCQUFZLEdBQUcsR0FBRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtCZWhhdmlvcn0gZnJvbSAnLi4vLi4vbW9kZWxzL2JlaGF2aW9yJztcbmltcG9ydCB7Rm9ybUNvbnRyb2wsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0xheW91dH0gZnJvbSAnLi4vLi4vbW9kZWxzL2xheW91dCc7XG5pbXBvcnQge1ZhbGlkYXRpb259IGZyb20gJy4uLy4uL21vZGVscy92YWxpZGF0aW9uJztcbmltcG9ydCB7Q29tcG9uZW50fSBmcm9tICcuLi8uLi9tb2RlbHMvY29tcG9uZW50JztcbmltcG9ydCB7RGF0YUZpZWxkfSBmcm9tICcuLi8uLi9tb2RlbHMvYWJzdHJhY3QtZGF0YS1maWVsZCc7XG5cbmV4cG9ydCBlbnVtIFRleHRGaWVsZFZpZXcge1xuICAgIERFRkFVTFQgPSAnZGVmYXVsdCcsXG4gICAgVEVYVEFSRUEgPSAndGV4dGFyZWEnLFxuICAgIFJJQ0hURVhUQVJFQSA9ICdyaWNodGV4dGFyZWEnLFxuICAgIEhUTUxURVhUQVJFQSA9ICdodG1sdGV4dGFyZWEnXG59XG5cbi8qKlxuICogQSBjb2xsZWN0aW9uIG9mIFRleHQgZmllbGQgY29tcG9uZW50IG5hbWVzIHN1cHBvcnRlZCBieSB0aGUgYXBwbGljYXRpb24gZW5naW5lLlxuICovXG5leHBvcnQgZW51bSBUZXh0RmllbGRDb21wb25lbnQge1xuICAgIFBBU1NXT1JEID0gJ3Bhc3N3b3JkJyxcbiAgICBURVhUX0FSRUEgPSAndGV4dF9hcmVhJyxcbiAgICBSSUNIX1RFWFRfQVJFQSA9ICdyaWNodGV4dGFyZWEnLFxuICAgIEhUTUxfVEVYVF9BUkVBID0gJ2h0bWx0ZXh0YXJlYScsXG4gICAgREFTSEJPQVJEX0xJTkVfQ0hBUlQgPSAnZGFzaGJvYXJkX2xpbmVfY2hhcnQnLFxuICAgIERBU0hCT0FSRF9QSUVfQ0hBUlQgPSAnZGFzaGJvYXJkX3BpZV9jaGFydCcsXG4gICAgREFTSEJPQVJEX0JBUl9DSEFSVCA9ICdkYXNoYm9hcmRfYmFyX2NoYXJ0JyxcbiAgICBEQVNIQk9BUkRfSUZSQU1FID0gJ2Rhc2hib2FyZF9pZnJhbWUnLFxuICAgIERBU0hCT0FSRF9QT1JUQUwgPSAnZGFzaGJvYXJkX3BvcnRhbCcsXG59XG5cbmV4cG9ydCBlbnVtIFRleHRBcmVhSGVpZ2h0IHtcbiAgICBPVVRMSU5FID0gMjcsXG4gICAgRklMTF9TVEFOREFSRCA9IDM0XG59XG5cbmV4cG9ydCBlbnVtIFRleHRGaWVsZFZhbGlkYXRpb24ge1xuICAgIFJFUVVJUkVEID0gJ3JlcXVpcmVkJyxcbiAgICBNSU5fTEVOR1RIID0gJ21pbkxlbmd0aCcsXG4gICAgTUFYX0xFTkdUSCA9ICdtYXhMZW5ndGgnLFxuICAgIFZBTElEX01JTl9MRU5HVEggPSAnbWlubGVuZ3RoJyxcbiAgICBWQUxJRF9NQVhfTEVOR1RIID0gJ21heGxlbmd0aCcsXG4gICAgUEFUVEVSTiA9ICdwYXR0ZXJuJyxcbiAgICBSRUdFWCA9ICdyZWdleCcsXG4gICAgVkFMSURfVEVMX05VTUJFUiA9ICd2YWxpZFRlbE51bWJlcicsXG4gICAgVEVMX05VTUJFUiA9ICd0ZWxOdW1iZXInLFxuICAgIEVNQUlMID0gJ2VtYWlsJ1xufVxuXG5leHBvcnQgY2xhc3MgVGV4dEZpZWxkIGV4dGVuZHMgRGF0YUZpZWxkPHN0cmluZz4ge1xuICAgIHB1YmxpYyBzdGF0aWMgRklFTERfSEVJR0hUID0gMTA1O1xuXG4gICAgY29uc3RydWN0b3Ioc3RyaW5nSWQ6IHN0cmluZywgdGl0bGU6IHN0cmluZywgdmFsdWU6IHN0cmluZywgYmVoYXZpb3I6IEJlaGF2aW9yLCBwbGFjZWhvbGRlcj86IHN0cmluZyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj86IHN0cmluZywgbGF5b3V0PzogTGF5b3V0LCB2YWxpZGF0aW9ucz86IEFycmF5PFZhbGlkYXRpb24+LCBfY29tcG9uZW50PzogQ29tcG9uZW50LFxuICAgICAgICAgICAgICAgIHBhcmVudFRhc2tJZD86IHN0cmluZykge1xuICAgICAgICBzdXBlcihzdHJpbmdJZCwgdGl0bGUsIHZhbHVlLCBiZWhhdmlvciwgcGxhY2Vob2xkZXIsIGRlc2NyaXB0aW9uLCBsYXlvdXQsIHZhbGlkYXRpb25zLCBfY29tcG9uZW50LCBwYXJlbnRUYXNrSWQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCByZXNvbHZlVmFsaWRhdGlvbnMoKTogQXJyYXk8VmFsaWRhdG9yRm4+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW107XG5cbiAgICAgICAgdGhpcy52YWxpZGF0aW9ucy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgaWYgKGl0ZW0udmFsaWRhdGlvblJ1bGUuaW5jbHVkZXMoVGV4dEZpZWxkVmFsaWRhdGlvbi5NSU5fTEVOR1RIKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRtcCA9IGl0ZW0udmFsaWRhdGlvblJ1bGUuc3BsaXQoJyAnKTtcbiAgICAgICAgICAgICAgICBpZiAodG1wWzFdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGVuZ3RoID0gcGFyc2VJbnQodG1wWzFdLCAxMCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNOYU4obGVuZ3RoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goVmFsaWRhdG9ycy5taW5MZW5ndGgobGVuZ3RoKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0udmFsaWRhdGlvblJ1bGUuaW5jbHVkZXMoVGV4dEZpZWxkVmFsaWRhdGlvbi5NQVhfTEVOR1RIKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRtcCA9IGl0ZW0udmFsaWRhdGlvblJ1bGUuc3BsaXQoJyAnKTtcbiAgICAgICAgICAgICAgICBpZiAodG1wWzFdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGVuZ3RoID0gcGFyc2VJbnQodG1wWzFdLCAxMCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNOYU4obGVuZ3RoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goVmFsaWRhdG9ycy5tYXhMZW5ndGgobGVuZ3RoKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0udmFsaWRhdGlvblJ1bGUuaW5jbHVkZXMoVGV4dEZpZWxkVmFsaWRhdGlvbi5SRUdFWCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS52YWxpZGF0aW9uUnVsZS5zdGFydHNXaXRoKCdyZWdleCAnKSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChWYWxpZGF0b3JzLnBhdHRlcm4obmV3IFJlZ0V4cChpdGVtLnZhbGlkYXRpb25SdWxlLnN1YnN0cmluZyg2LCBpdGVtLnZhbGlkYXRpb25SdWxlLmxlbmd0aCApKSkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbS52YWxpZGF0aW9uUnVsZS5zdGFydHNXaXRoKCdyZWdleChcIicpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKFZhbGlkYXRvcnMucGF0dGVybihuZXcgUmVnRXhwKGl0ZW0udmFsaWRhdGlvblJ1bGUuc3Vic3RyaW5nKDcsIGl0ZW0udmFsaWRhdGlvblJ1bGUubGVuZ3RoIC0gMikpKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtLnZhbGlkYXRpb25SdWxlLmluY2x1ZGVzKFRleHRGaWVsZFZhbGlkYXRpb24uRU1BSUwpKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goVmFsaWRhdG9ycy5lbWFpbCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0udmFsaWRhdGlvblJ1bGUuaW5jbHVkZXMoVGV4dEZpZWxkVmFsaWRhdGlvbi5URUxfTlVNQkVSKSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMudmFsaWRUZWxOdW1iZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRUZWxOdW1iZXIoZmM6IEZvcm1Db250cm9sKSB7XG4gICAgICAgIGlmICghKG5ldyBSZWdFeHAoL14oPzpcXCs/KFxcZHsxLDN9KSk/KFstLiAoXSooXFxkezN9KVstLiApXSopPygoXFxkezN9KVstLiBdKihcXGR7Miw0fSkoPzpbLS54IF0qKFxcZCspKT8pJC8pLnRlc3QoZmMudmFsdWUpKSkge1xuICAgICAgICAgICAgcmV0dXJuICh7dmFsaWRUZWxOdW1iZXI6IHRydWV9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAobnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -121,6 +121,12 @@ export class FilterRepository {
121
121
  });
122
122
  return result;
123
123
  }
124
+ /**
125
+ * Removes all stored filters from the repository
126
+ */
127
+ removeAllFilters() {
128
+ this._filters = new Map();
129
+ }
124
130
  }
125
131
  FilterRepository.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: FilterRepository, deps: [{ token: i1.ConfigurationService }, { token: i2.LoggerService }], target: i0.ɵɵFactoryTarget.Injectable });
126
132
  FilterRepository.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: FilterRepository, providedIn: 'root' });
@@ -130,4 +136,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
130
136
  providedIn: 'root'
131
137
  }]
132
138
  }], ctorParameters: function () { return [{ type: i1.ConfigurationService }, { type: i2.LoggerService }]; } });
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLnJlcG9zaXRvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL2ZpbHRlci9maWx0ZXIucmVwb3NpdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBS3pDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFFcEQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHdCQUF3QixDQUFDOzs7O0FBR3BEOzs7Ozs7R0FNRztBQUlILE1BQU0sT0FBTyxnQkFBZ0I7SUFPekI7O09BRUc7SUFDSCxZQUFzQixjQUFvQyxFQUFZLElBQW1CO1FBQW5FLG1CQUFjLEdBQWQsY0FBYyxDQUFzQjtRQUFZLFNBQUksR0FBSixJQUFJLENBQWU7UUFSekY7O1dBRUc7UUFDTyxhQUFRLEdBQXdCLElBQUksR0FBRyxFQUFrQixDQUFDO1FBTWhFLE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUM7UUFDN0MsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNWLE9BQU87U0FDVjtRQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3BDLE1BQU0sWUFBWSxHQUFpQixPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDckQsdURBQXVEO1lBQ3ZELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRTtnQkFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLFFBQVEsMERBQTBELENBQUMsQ0FBQztnQkFDekYsT0FBTzthQUNWO1lBQ0QsSUFBSSxLQUFL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Q0FBQztRQUNsQixTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ25CLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbEMsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFO2dCQUN2QixNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3RCO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDOzs4R0F0SFEsZ0JBQWdCO2tIQUFoQixnQkFBZ0IsY0FGYixNQUFNOzRGQUVULGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb25maWd1cmF0aW9uU2VydmljZX0gZnJvbSAnLi4vY29uZmlndXJhdGlvbi9jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtDb25maWdGaWx0ZXJ9IGZyb20gJy4uLy4uL2NvbW1vbnMvc2NoZW1hJztcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vbG9nZ2VyL3NlcnZpY2VzL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7TWVyZ2VPcGVyYXRvcn0gZnJvbSAnLi9tb2RlbHMvbWVyZ2Utb3BlcmF0b3InO1xuaW1wb3J0IHtGaWx0ZXJUeXBlfSBmcm9tICcuL21vZGVscy9maWx0ZXItdHlwZSc7XG5pbXBvcnQge1NpbXBsZUZpbHRlcn0gZnJvbSAnLi9tb2RlbHMvc2ltcGxlLWZpbHRlcic7XG5pbXBvcnQge0ZpbHRlcn0gZnJvbSAnLi9tb2RlbHMvZmlsdGVyJztcbmltcG9ydCB7TWVyZ2VkRmlsdGVyfSBmcm9tICcuL21vZGVscy9tZXJnZWQtZmlsdGVyJztcblxuXG4vKipcbiAqIEFsbG93cyBhY2Nlc3MgdG8gZmlsdGVycyBkZWZpbmVkIGluIG5hZS5qc29uIGR1cmluZyBydW50aW1lLlxuICpcbiAqIEZpbHRlcnMgYXJlIGFsd2F5cyByZXR1cm5lZCBhcyBjb3BpZXMgdG8gYXZvaWQgdW5pbnRlbmRlZCBzaWRlIGVmZmVjdHMgd2hlbiBvcGVyYXRpbmcgb24gdGhlbS5cbiAqXG4gKiBBbHNvIHNlZSB7QGxpbmsgRmlsdGVyfS5cbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBGaWx0ZXJSZXBvc2l0b3J5IHtcblxuICAgIC8qKlxuICAgICAqIFN0b3JlcyB0aGUgZmlsdGVycyBtYW5hZ2VkIGJ5IHRoZSByZXBvc2l0b3J5LiBLZXlzIGFyZSBmaWx0ZXJJZHMuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9maWx0ZXJzOiBNYXA8c3RyaW5nLCBGaWx0ZXI+ID0gbmV3IE1hcDxzdHJpbmcsIEZpbHRlcj4oKTtcblxuICAgIC8qKlxuICAgICAqIExvYWRzIGFuZCBjcmVhdGVzIGZpbHRlcnMgZGVjbGFyZWQgaW4gbmFlLmpzb24uXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIF9jb25maWdTZXJ2aWNlOiBDb25maWd1cmF0aW9uU2VydmljZSwgcHJvdGVjdGVkIF9sb2c6IExvZ2dlclNlcnZpY2UpIHtcbiAgICAgICAgY29uc3QgZmlsdGVycyA9IF9jb25maWdTZXJ2aWNlLmdldCgpLmZpbHRlcnM7XG4gICAgICAgIGlmICghZmlsdGVycykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgT2JqZWN0LmtleXMoZmlsdGVycykuZm9yRWFjaChmaWx0ZXJJZCA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb25maWdGaWx0ZXI6IENvbmZpZ0ZpbHRlciA9IGZpbHRlcnNbZmlsdGVySWRdO1xuICAgICAgICAgICAgLy8gVE9ETyAxNy40LjIwMjAgLSBkb24ndCBpZ25vcmUgZmlsdGVyLmFjY2VzcyBwcm9wZXJ0eVxuICAgICAgICAgICAgaWYgKCFjb25maWdGaWx0ZXIudHlwZSB8fCAhY29uZmlnRmlsdGVyLmJvZHkpIHtcbiAgICAgICAgICAgICAgICBfbG9nLndhcm4oYEZpbHRlciAnJHtmaWx0ZXJJZH0nIGRvZXNuJ3QgZGVmaW5lIGFsbCB0aGUgbmVjZXNzYXJ5IHByb3BlcnRpZXMuIFNraXBwaW5nLmApO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNvbmZpZ0ZpbHRlci5ib2R5KSkge1xuICAgICAgICAgICAgICAgIGlmICghY29uZmlnRmlsdGVyLm1lcmdlT3BlcmF0b3IpIHtcbiAgICAgICAgICAgICAgICAgICAgX2xvZy53YXJuKGBGaWx0ZXIgJyR7ZmlsdGVySWR9JyBjb250YWlucyBtdWx0aXBsZSBmaWx0ZXJzLCBidXQgZG9lc24ndCBkZWZpbmUgYSBtZXJnZSBvcGVyYXRvci4gU2tpcHBpbmcuYCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy53YXJuSWZGaWx0ZXJFeGlzdHMoZmlsdGVySWQpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyID0gbmV3IE1lcmdlZEZpbHRlcihmaWx0ZXJJZCwgY29uZmlnRmlsdGVyLnR5cGUgYXMgRmlsdGVyVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnRmlsdGVyLmJvZHksIGNvbmZpZ0ZpbHRlci5tZXJnZU9wZXJhdG9yIGFzIE1lcmdlT3BlcmF0b3IsIGNvbmZpZ0ZpbHRlci50aXRsZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZmlsdGVycy5zZXQoZmlsdGVySWQsIGZpbHRlcik7XG5cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy53YXJuSWZGaWx0ZXJFeGlzdHMoZmlsdGVySWQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlciA9IG5ldyBTaW1wbGVGaWx0ZXIoZmlsdGVySWQsIGNvbmZpZ0ZpbHRlci50eXBlIGFzIEZpbHRlclR5cGUsIGNvbmZpZ0ZpbHRlci5ib2R5LCBjb25maWdGaWx0ZXIudGl0bGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2ZpbHRlcnMuc2V0KGZpbHRlcklkLCBmaWx0ZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMb2dzIGEgd2FybmluZyBpZiBmaWx0ZXIgd2l0aCB0aGUgZ2l2ZW4gaWQgYWxyZWFkeSBleGlzdHMuIFRoZSB3YXJuaW5nIHN0YXRlcyB0aGF0IHRoZSBmaWx0ZXIgd2lsbCBiZSByZXBsYWNlZC5cbiAgICAgKiBAcGFyYW0gZmlsdGVySWQgSUQgb2YgdGhlIGZpbHRlciB3aG8ncyBleGlzdGVuY2Ugc2hvdWxkIGJlIGNoZWNrZWRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgd2FybklmRmlsdGVyRXhpc3RzKGZpbHRlcklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2ZpbHRlcnMuaGFzKGZpbHRlcklkKSkge1xuICAgICAgICAgICAgdGhpcy5fbG9nLndhcm4oYEZpbHRlciB3aXRoIGlkICcke2ZpbHRlcklkfScgYWxyZWFkeSBleGlzdHMgaW4gdGhlIHJlcG9zaXRvcnkgYW5kIHdpbGwgYmUgcmVwbGFjZWQhYCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gZmlsdGVySWQgSUQgb2YgdGhlIGZpbHRlciB0aGF0IHNob3VsZCBiZSByZXRyaWV2ZWRcbiAgICAgKiBAcmV0dXJucyBhIGNvcHkgb2YgdGhlIHNwZWNpZmllZCBmaWx0ZXIsIG9yIGB1bmRlZmluZWRgIGlmIHN1Y2ggZmlsdGVyIGRvZXNuJ3QgZXhpc3QgaW4gdGhlIHJlcG9zaXRvcnkuXG4gICAgICovXG4gICAgcHVibGljIGdldEZpbHRlcihmaWx0ZXJJZDogc3RyaW5nKTogRmlsdGVyIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgbGV0IGZpbHRlciA9IHRoaXMuX2ZpbHRlcnMuZ2V0KGZpbHRlcklkKTtcbiAgICAgICAgaWYgKCEhZmlsdGVyKSB7XG4gICAgICAgICAgICBmaWx0ZXIgPSBmaWx0ZXIuY2xvbmUoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmlsdGVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN0b3JlcyBhIG5ldyBmaWx0ZXIgaW50byB0aGUgcmVwb3NpdG9yeS4gSWYgdGhlIHJlcG9zaXRvcnkgYWxyZWFkeSBjb250YWlucyBhIGZpbHRlciB3aXRoIHRoZSBzYW1lIElELCB0aGUgc3RvcmVkIGZpbHRlclxuICAgICAqIHdpbGwgYmUgcmVwbGFjZWQgYW5kIGEgd2FybmluZyB3aWxsIGJlIGxvZ2dlZC5cbiAgICAgKlxuICAgICAqIFRoZSByZXBvc2l0b3J5IHN0b3JlcyBhIGNvcHkgb2YgdGhlIHByb3ZpZGVkIGZpbHRlciwgdG8gZW5zdXJlIHRoYXQgdGhlIG9iamVjdHMgaW4gdGhlIHJlcG9zaXRvcnkgYXJlbid0IHJlZmVyZW5jZWQgZnJvbSBvdXRzaWRlLlxuICAgICAqIEBwYXJhbSBmaWx0ZXIgdGhlIGZpbHRlciB0aGF0IHNob3VsZCBiZSBzdG9yZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgc2F2ZUZpbHRlcihmaWx0ZXI6IEZpbHRlcik6IHZvaWQge1xuICAgICAgICB0aGlzLndhcm5JZkZpbHRlckV4aXN0cyhmaWx0ZXIuaWQpO1xuICAgICAgICB0aGlzLl9maWx0ZXJzLnNldChmaWx0ZXIuaWQsIGZpbHRlci5jbG9uZSgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyBsaXN0IG9mIGNhc2UgZmlsdGVyIGlkZW50aWZpZXJzIHN0b3JlZCBpbiB0aGUgcmVwb3NpdG9yeVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDYXNlRmlsdGVyTGlzdCgpOiBBcnJheTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RmlsdGVyTGlzdChmaWx0ZXIgPT4gZmlsdGVyLnR5cGUgPT09IEZpbHRlclR5cGUuQ0FTRSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgbGlzdCBvZiB0YXNrIGZpbHRlciBpZGVudGlmaWVycyBzdG9yZWQgaW4gdGhlIHJlcG9zaXRvcnlcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0VGFza0ZpbHRlckxpc3QoKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEZpbHRlckxpc3QoZmlsdGVyID0+IGZpbHRlci50eXBlID09PSBGaWx0ZXJUeXBlLlRBU0spO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBwcmVkaWNhdGUgY29uZGl0aW9uIHRoYXQgbXVzdCBiZSBmdWxmaWxsZWQgYnkgdGhlIGZpbHRlcnMgaW4gdGhlIHJlcG9zaXRvcnkgaW4gb3JkZXIgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdFxuICAgICAqIEByZXR1cm5zIGxpc3Qgb2YgZmlsdGVyIGlkZW50aWZpZXJzIHRoYXQgZnVsZmlsbCB0aGUgZ2l2ZW4gcHJlZGljYXRlXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdldEZpbHRlckxpc3QocHJlZGljYXRlOiAoZjogRmlsdGVyKSA9PiBib29sZWFuKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgICAgICB0aGlzLl9maWx0ZXJzLmZvckVhY2goZmlsdGVyID0+IHtcbiAgICAgICAgICAgIGlmIChwcmVkaWNhdGUoZmlsdGVyKSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGZpbHRlci5pZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBmaWx0ZXJJZHMgbGlzdCBvZiBpZHMgb2YgZmlsdGVycyB0aGF0IHNob3VsZCBiZSByZXR1cm5lZFxuICAgICAqIEByZXR1cm5zIGxpc3Qgb2YgY29waWVzIG9mIHNwZWNpZmllZCBmaWx0ZXJzLiBJZiBzb21lIG9mIHRoZSBmaWx0ZXJzIGRvbid0IGV4aXN0IGluIHRoZSByZXBvc2l0b3J5LCB0aGV5IHdvbid0IGJlIGluY2x1ZGVkXG4gICAgICogYW5kIHRoZSBhcnJheSB3aWxsIGNvbnRhaW4gbGVzcyBlbGVtZW50cyB0aGFuIHRoZSBpbnB1dCBhcnJheS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0RmlsdGVycyhmaWx0ZXJJZHM6IEFycmF5PHN0cmluZz4pOiBBcnJheTxGaWx0ZXI+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgICAgIGZpbHRlcklkcy5mb3JFYWNoKGlkID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuZ2V0RmlsdGVyKGlkKTtcbiAgICAgICAgICAgIGlmIChmaWx0ZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZmlsdGVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxufVxuIl19
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLnJlcG9zaXRvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL2ZpbHRlci9maWx0ZXIucmVwb3NpdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBS3pDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFFcEQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHdCQUF3QixDQUFDOzs7O0FBR3BEOzs7Ozs7R0FNRztBQUlILE1BQU0sT0FBTyxnQkFBZ0I7SUFPekI7O09BRUc7SUFDSCxZQUFzQixjQUFvQyxFQUFZLElBQW1CO1FBQW5FLG1CQUFjLEdBQWQsY0FBYyxDQUFzQjtRQUFZLFNBQUksR0FBSixJQUFJLENBQWU7UUFSekY7O1dBRUc7UUFDTyxhQUFRLEdBQXdCLElBQUksR0FBRyxFQUFrQixDQUFDO1FBTWhFLE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUM7UUFDN0MsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNWLE9BQU87U0FDVjtRQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3BDLE1BQU0sWUFBWSxHQUFpQixPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDckQsdURBQXVEO1lBQ3ZELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRTtnQkFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLFFBQVEsMERBQTBELENBQUMsQ0FBQztnQkFDekYsT0FBTzthQUNWO1lBQ0QsSUFBSSxLQUFL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Q0FBQztRQUNsQixTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ25CLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbEMsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFO2dCQUN2QixNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3RCO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxnQkFBZ0I7UUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztJQUM5QyxDQUFDOzs4R0E3SFEsZ0JBQWdCO2tIQUFoQixnQkFBZ0IsY0FGYixNQUFNOzRGQUVULGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb25maWd1cmF0aW9uU2VydmljZX0gZnJvbSAnLi4vY29uZmlndXJhdGlvbi9jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtDb25maWdGaWx0ZXJ9IGZyb20gJy4uLy4uL2NvbW1vbnMvc2NoZW1hJztcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vbG9nZ2VyL3NlcnZpY2VzL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7TWVyZ2VPcGVyYXRvcn0gZnJvbSAnLi9tb2RlbHMvbWVyZ2Utb3BlcmF0b3InO1xuaW1wb3J0IHtGaWx0ZXJUeXBlfSBmcm9tICcuL21vZGVscy9maWx0ZXItdHlwZSc7XG5pbXBvcnQge1NpbXBsZUZpbHRlcn0gZnJvbSAnLi9tb2RlbHMvc2ltcGxlLWZpbHRlcic7XG5pbXBvcnQge0ZpbHRlcn0gZnJvbSAnLi9tb2RlbHMvZmlsdGVyJztcbmltcG9ydCB7TWVyZ2VkRmlsdGVyfSBmcm9tICcuL21vZGVscy9tZXJnZWQtZmlsdGVyJztcblxuXG4vKipcbiAqIEFsbG93cyBhY2Nlc3MgdG8gZmlsdGVycyBkZWZpbmVkIGluIG5hZS5qc29uIGR1cmluZyBydW50aW1lLlxuICpcbiAqIEZpbHRlcnMgYXJlIGFsd2F5cyByZXR1cm5lZCBhcyBjb3BpZXMgdG8gYXZvaWQgdW5pbnRlbmRlZCBzaWRlIGVmZmVjdHMgd2hlbiBvcGVyYXRpbmcgb24gdGhlbS5cbiAqXG4gKiBBbHNvIHNlZSB7QGxpbmsgRmlsdGVyfS5cbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBGaWx0ZXJSZXBvc2l0b3J5IHtcblxuICAgIC8qKlxuICAgICAqIFN0b3JlcyB0aGUgZmlsdGVycyBtYW5hZ2VkIGJ5IHRoZSByZXBvc2l0b3J5LiBLZXlzIGFyZSBmaWx0ZXJJZHMuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9maWx0ZXJzOiBNYXA8c3RyaW5nLCBGaWx0ZXI+ID0gbmV3IE1hcDxzdHJpbmcsIEZpbHRlcj4oKTtcblxuICAgIC8qKlxuICAgICAqIExvYWRzIGFuZCBjcmVhdGVzIGZpbHRlcnMgZGVjbGFyZWQgaW4gbmFlLmpzb24uXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIF9jb25maWdTZXJ2aWNlOiBDb25maWd1cmF0aW9uU2VydmljZSwgcHJvdGVjdGVkIF9sb2c6IExvZ2dlclNlcnZpY2UpIHtcbiAgICAgICAgY29uc3QgZmlsdGVycyA9IF9jb25maWdTZXJ2aWNlLmdldCgpLmZpbHRlcnM7XG4gICAgICAgIGlmICghZmlsdGVycykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgT2JqZWN0LmtleXMoZmlsdGVycykuZm9yRWFjaChmaWx0ZXJJZCA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb25maWdGaWx0ZXI6IENvbmZpZ0ZpbHRlciA9IGZpbHRlcnNbZmlsdGVySWRdO1xuICAgICAgICAgICAgLy8gVE9ETyAxNy40LjIwMjAgLSBkb24ndCBpZ25vcmUgZmlsdGVyLmFjY2VzcyBwcm9wZXJ0eVxuICAgICAgICAgICAgaWYgKCFjb25maWdGaWx0ZXIudHlwZSB8fCAhY29uZmlnRmlsdGVyLmJvZHkpIHtcbiAgICAgICAgICAgICAgICBfbG9nLndhcm4oYEZpbHRlciAnJHtmaWx0ZXJJZH0nIGRvZXNuJ3QgZGVmaW5lIGFsbCB0aGUgbmVjZXNzYXJ5IHByb3BlcnRpZXMuIFNraXBwaW5nLmApO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNvbmZpZ0ZpbHRlci5ib2R5KSkge1xuICAgICAgICAgICAgICAgIGlmICghY29uZmlnRmlsdGVyLm1lcmdlT3BlcmF0b3IpIHtcbiAgICAgICAgICAgICAgICAgICAgX2xvZy53YXJuKGBGaWx0ZXIgJyR7ZmlsdGVySWR9JyBjb250YWlucyBtdWx0aXBsZSBmaWx0ZXJzLCBidXQgZG9lc24ndCBkZWZpbmUgYSBtZXJnZSBvcGVyYXRvci4gU2tpcHBpbmcuYCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy53YXJuSWZGaWx0ZXJFeGlzdHMoZmlsdGVySWQpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyID0gbmV3IE1lcmdlZEZpbHRlcihmaWx0ZXJJZCwgY29uZmlnRmlsdGVyLnR5cGUgYXMgRmlsdGVyVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnRmlsdGVyLmJvZHksIGNvbmZpZ0ZpbHRlci5tZXJnZU9wZXJhdG9yIGFzIE1lcmdlT3BlcmF0b3IsIGNvbmZpZ0ZpbHRlci50aXRsZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZmlsdGVycy5zZXQoZmlsdGVySWQsIGZpbHRlcik7XG5cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy53YXJuSWZGaWx0ZXJFeGlzdHMoZmlsdGVySWQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlciA9IG5ldyBTaW1wbGVGaWx0ZXIoZmlsdGVySWQsIGNvbmZpZ0ZpbHRlci50eXBlIGFzIEZpbHRlclR5cGUsIGNvbmZpZ0ZpbHRlci5ib2R5LCBjb25maWdGaWx0ZXIudGl0bGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2ZpbHRlcnMuc2V0KGZpbHRlcklkLCBmaWx0ZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMb2dzIGEgd2FybmluZyBpZiBmaWx0ZXIgd2l0aCB0aGUgZ2l2ZW4gaWQgYWxyZWFkeSBleGlzdHMuIFRoZSB3YXJuaW5nIHN0YXRlcyB0aGF0IHRoZSBmaWx0ZXIgd2lsbCBiZSByZXBsYWNlZC5cbiAgICAgKiBAcGFyYW0gZmlsdGVySWQgSUQgb2YgdGhlIGZpbHRlciB3aG8ncyBleGlzdGVuY2Ugc2hvdWxkIGJlIGNoZWNrZWRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgd2FybklmRmlsdGVyRXhpc3RzKGZpbHRlcklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2ZpbHRlcnMuaGFzKGZpbHRlcklkKSkge1xuICAgICAgICAgICAgdGhpcy5fbG9nLndhcm4oYEZpbHRlciB3aXRoIGlkICcke2ZpbHRlcklkfScgYWxyZWFkeSBleGlzdHMgaW4gdGhlIHJlcG9zaXRvcnkgYW5kIHdpbGwgYmUgcmVwbGFjZWQhYCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gZmlsdGVySWQgSUQgb2YgdGhlIGZpbHRlciB0aGF0IHNob3VsZCBiZSByZXRyaWV2ZWRcbiAgICAgKiBAcmV0dXJucyBhIGNvcHkgb2YgdGhlIHNwZWNpZmllZCBmaWx0ZXIsIG9yIGB1bmRlZmluZWRgIGlmIHN1Y2ggZmlsdGVyIGRvZXNuJ3QgZXhpc3QgaW4gdGhlIHJlcG9zaXRvcnkuXG4gICAgICovXG4gICAgcHVibGljIGdldEZpbHRlcihmaWx0ZXJJZDogc3RyaW5nKTogRmlsdGVyIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgbGV0IGZpbHRlciA9IHRoaXMuX2ZpbHRlcnMuZ2V0KGZpbHRlcklkKTtcbiAgICAgICAgaWYgKCEhZmlsdGVyKSB7XG4gICAgICAgICAgICBmaWx0ZXIgPSBmaWx0ZXIuY2xvbmUoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmlsdGVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN0b3JlcyBhIG5ldyBmaWx0ZXIgaW50byB0aGUgcmVwb3NpdG9yeS4gSWYgdGhlIHJlcG9zaXRvcnkgYWxyZWFkeSBjb250YWlucyBhIGZpbHRlciB3aXRoIHRoZSBzYW1lIElELCB0aGUgc3RvcmVkIGZpbHRlclxuICAgICAqIHdpbGwgYmUgcmVwbGFjZWQgYW5kIGEgd2FybmluZyB3aWxsIGJlIGxvZ2dlZC5cbiAgICAgKlxuICAgICAqIFRoZSByZXBvc2l0b3J5IHN0b3JlcyBhIGNvcHkgb2YgdGhlIHByb3ZpZGVkIGZpbHRlciwgdG8gZW5zdXJlIHRoYXQgdGhlIG9iamVjdHMgaW4gdGhlIHJlcG9zaXRvcnkgYXJlbid0IHJlZmVyZW5jZWQgZnJvbSBvdXRzaWRlLlxuICAgICAqIEBwYXJhbSBmaWx0ZXIgdGhlIGZpbHRlciB0aGF0IHNob3VsZCBiZSBzdG9yZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgc2F2ZUZpbHRlcihmaWx0ZXI6IEZpbHRlcik6IHZvaWQge1xuICAgICAgICB0aGlzLndhcm5JZkZpbHRlckV4aXN0cyhmaWx0ZXIuaWQpO1xuICAgICAgICB0aGlzLl9maWx0ZXJzLnNldChmaWx0ZXIuaWQsIGZpbHRlci5jbG9uZSgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyBsaXN0IG9mIGNhc2UgZmlsdGVyIGlkZW50aWZpZXJzIHN0b3JlZCBpbiB0aGUgcmVwb3NpdG9yeVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDYXNlRmlsdGVyTGlzdCgpOiBBcnJheTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RmlsdGVyTGlzdChmaWx0ZXIgPT4gZmlsdGVyLnR5cGUgPT09IEZpbHRlclR5cGUuQ0FTRSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgbGlzdCBvZiB0YXNrIGZpbHRlciBpZGVudGlmaWVycyBzdG9yZWQgaW4gdGhlIHJlcG9zaXRvcnlcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0VGFza0ZpbHRlckxpc3QoKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEZpbHRlckxpc3QoZmlsdGVyID0+IGZpbHRlci50eXBlID09PSBGaWx0ZXJUeXBlLlRBU0spO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBwcmVkaWNhdGUgY29uZGl0aW9uIHRoYXQgbXVzdCBiZSBmdWxmaWxsZWQgYnkgdGhlIGZpbHRlcnMgaW4gdGhlIHJlcG9zaXRvcnkgaW4gb3JkZXIgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdFxuICAgICAqIEByZXR1cm5zIGxpc3Qgb2YgZmlsdGVyIGlkZW50aWZpZXJzIHRoYXQgZnVsZmlsbCB0aGUgZ2l2ZW4gcHJlZGljYXRlXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdldEZpbHRlckxpc3QocHJlZGljYXRlOiAoZjogRmlsdGVyKSA9PiBib29sZWFuKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgICAgICB0aGlzLl9maWx0ZXJzLmZvckVhY2goZmlsdGVyID0+IHtcbiAgICAgICAgICAgIGlmIChwcmVkaWNhdGUoZmlsdGVyKSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGZpbHRlci5pZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBmaWx0ZXJJZHMgbGlzdCBvZiBpZHMgb2YgZmlsdGVycyB0aGF0IHNob3VsZCBiZSByZXR1cm5lZFxuICAgICAqIEByZXR1cm5zIGxpc3Qgb2YgY29waWVzIG9mIHNwZWNpZmllZCBmaWx0ZXJzLiBJZiBzb21lIG9mIHRoZSBmaWx0ZXJzIGRvbid0IGV4aXN0IGluIHRoZSByZXBvc2l0b3J5LCB0aGV5IHdvbid0IGJlIGluY2x1ZGVkXG4gICAgICogYW5kIHRoZSBhcnJheSB3aWxsIGNvbnRhaW4gbGVzcyBlbGVtZW50cyB0aGFuIHRoZSBpbnB1dCBhcnJheS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0RmlsdGVycyhmaWx0ZXJJZHM6IEFycmF5PHN0cmluZz4pOiBBcnJheTxGaWx0ZXI+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgICAgIGZpbHRlcklkcy5mb3JFYWNoKGlkID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuZ2V0RmlsdGVyKGlkKTtcbiAgICAgICAgICAgIGlmIChmaWx0ZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZmlsdGVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhbGwgc3RvcmVkIGZpbHRlcnMgZnJvbSB0aGUgcmVwb3NpdG9yeVxuICAgICAqL1xuICAgIHB1YmxpYyByZW1vdmVBbGxGaWx0ZXJzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9maWx0ZXJzID0gbmV3IE1hcDxzdHJpbmcsIEZpbHRlcj4oKTtcbiAgICB9XG59XG4iXX0=
@@ -270,12 +270,14 @@ export class UserFiltersService {
270
270
  if (assignOutcome.error) {
271
271
  this._log.error(`Could not assign task '${task.title}'`, task, assignOutcome.error);
272
272
  callChain.next(false);
273
+ return;
273
274
  }
274
275
  this._taskService.setData(task.stringId, data).subscribe(() => {
275
276
  this._taskService.finishTask(task.stringId).subscribe(finishOutcome => {
276
277
  if (finishOutcome.error) {
277
278
  this._log.error(`Could not finish task '${task.title}'`, task, finishOutcome.error);
278
279
  callChain.next(false);
280
+ return;
279
281
  }
280
282
  callChain.next(true);
281
283
  }, error => {
@@ -319,4 +321,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
319
321
  type: Inject,
320
322
  args: [NAE_LOAD_FILTER_COMPONENT]
321
323
  }] }]; } });
322
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1maWx0ZXJzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL2ZpbHRlci91c2VyLWZpbHRlcnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBYSxRQUFRLEVBQU8sTUFBTSxlQUFlLENBQUM7QUFDNUUsT0FBTyxFQUFhLEVBQUUsRUFBRSxhQUFhLEVBQVUsTUFBTSxNQUFNLENBQUM7QUFNNUQsT0FBTyxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBSWxFLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBRzVFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUdoRSxPQUFPLEVBQUMseUJBQXlCLEVBQUUseUJBQXlCLEVBQUMsTUFBTSxrREFBa0QsQ0FBQztBQUd0SCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFaEQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBTXRELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7QUFHNUQ7O0dBRUc7QUFJSCxNQUFNLE9BQU8sa0JBQWtCO0lBSzNCLFlBQXNCLFlBQWlDLEVBQ2pDLFlBQWlDLEVBQ2pDLGVBQStCLEVBQy9CLGlCQUFtQyxFQUNuQyxnQkFBaUMsRUFDakMsSUFBbUIsRUFDbkIsd0JBQWlELEVBQ0Ysb0JB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Q0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2Rix1QkFBdUIsRUFBRSxxQkFBcUI7WUFDOUMsa0JBQWtCO1NBQ3JCLENBQUM7SUFDTixDQUFDOztnSEFsVlEsa0JBQWtCLHlQQVlLLHlCQUF5Qiw2QkFDekIseUJBQXlCO29IQWJoRCxrQkFBa0IsY0FGZixNQUFNOzRGQUVULGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQWFnQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLHlCQUF5Qjs7MEJBQzVDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGUsIE9uRGVzdHJveSwgT3B0aW9uYWwsIFR5cGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBvZiwgUmVwbGF5U3ViamVjdCwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0Nhc2VSZXNvdXJjZVNlcnZpY2V9IGZyb20gJy4uL3Jlc291cmNlcy9lbmdpbmUtZW5kcG9pbnQvY2FzZS1yZXNvdXJjZS5zZXJ2aWNlJztcbmltcG9ydCB7VGFza1Jlc291cmNlU2VydmljZX0gZnJvbSAnLi4vcmVzb3VyY2VzL2VuZ2luZS1lbmRwb2ludC90YXNrLXJlc291cmNlLnNlcnZpY2UnO1xuaW1wb3J0IHtTZWFyY2hTZXJ2aWNlfSBmcm9tICcuLi9zZWFyY2gvc2VhcmNoLXNlcnZpY2Uvc2VhcmNoLnNlcnZpY2UnO1xuaW1wb3J0IHtQcm9jZXNzU2VydmljZX0gZnJvbSAnLi4vcHJvY2Vzcy9wcm9jZXNzLnNlcnZpY2UnO1xuaW1wb3J0IHtMb2dnZXJTZXJ2aWNlfSBmcm9tICcuLi9sb2dnZXIvc2VydmljZXMvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHtmaWx0ZXIsIHRha2V9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7U2ltcGxlRmlsdGVyfSBmcm9tICcuL21vZGVscy9zaW1wbGUtZmlsdGVyJztcbmltcG9ydCB7aGFzQ29udGVudH0gZnJvbSAnLi4vdXRpbGl0eS9wYWdpbmF0aW9uL3BhZ2UtaGFzLWNvbnRlbnQnO1xuaW1wb3J0IHtUYXNrfSBmcm9tICcuLi9yZXNvdXJjZXMvaW50ZXJmYWNlL3Rhc2snO1xuaW1wb3J0IHtDYWxsQ2hhaW5TZXJ2aWNlfSBmcm9tICcuLi91dGlsaXR5L2NhbGwtY2hhaW4vY2FsbC1jaGFpbi5zZXJ2aWNlJztcbmltcG9ydCB7VGFza1NldERhdGFSZXF1ZXN0Qm9keSwgVGFza1NldERhdGFSZXF1ZXN0RmllbGRzfSBmcm9tICcuLi9yZXNvdXJjZXMvaW50ZXJmYWNlL3Rhc2stc2V0LWRhdGEtcmVxdWVzdC1ib2R5JztcbmltcG9ydCB7RmllbGRUeXBlUmVzb3VyY2V9IGZyb20gJy4uL3Rhc2stY29udGVudC9tb2RlbC9maWVsZC10eXBlLXJlc291cmNlJztcbmltcG9ydCB7Q2F0ZWdvcnl9IGZyb20gJy4uL3NlYXJjaC9tb2RlbHMvY2F0ZWdvcnkvY2F0ZWdvcnknO1xuaW1wb3J0IHtOZXR9IGZyb20gJy4uL3Byb2Nlc3MvbmV0JztcbmltcG9ydCB7VXNlckZpbHRlckNvbnN0YW50c30gZnJvbSAnLi9tb2RlbHMvdXNlci1maWx0ZXItY29uc3RhbnRzJztcbmltcG9ydCB7U2lkZU1lbnVTaXplfSBmcm9tICcuLi9zaWRlLW1lbnUvbW9kZWxzL3NpZGUtbWVudS1zaXplJztcbmltcG9ydCB7U2F2ZUZpbHRlckluamVjdGlvbkRhdGF9IGZyb20gJy4uL3NpZGUtbWVudS9jb250ZW50LWNvbXBvbmVudHMvc2F2ZS1maWx0ZXIvbW9kZWwvc2F2ZS1maWx0ZXItaW5qZWN0aW9uLWRhdGEnO1xuaW1wb3J0IHtTaWRlTWVudVNlcnZpY2V9IGZyb20gJy4uL3NpZGUtbWVudS9zZXJ2aWNlcy9zaWRlLW1lbnUuc2VydmljZSc7XG5pbXBvcnQge05BRV9MT0FEX0ZJTFRFUl9DT01QT05FTlQsIE5BRV9TQVZFX0ZJTFRFUl9DT01QT05FTlR9IGZyb20gJy4uL3NpZGUtbWVudS9jb250ZW50LWNvbXBvbmVudHMvaW5qZWN0aW9uLXRva2Vucyc7XG5pbXBvcnQge0NvbXBvbmVudFR5cGV9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtMb2FkRmlsdGVySW5qZWN0aW9uRGF0YX0gZnJvbSAnLi4vc2lkZS1tZW51L2NvbnRlbnQtY29tcG9uZW50cy9sb2FkLWZpbHRlci9tb2RlbC9sb2FkLWZpbHRlci1pbmplY3Rpb24tZGF0YSc7XG5pbXBvcnQge0ZpbHRlclR5cGV9IGZyb20gJy4vbW9kZWxzL2ZpbHRlci10eXBlJztcbmltcG9ydCB7RmlsdGVyfSBmcm9tICcuL21vZGVscy9maWx0ZXInO1xuaW1wb3J0IHtNZXJnZU9wZXJhdG9yfSBmcm9tICcuL21vZGVscy9tZXJnZS1vcGVyYXRvcic7XG5pbXBvcnQge1NhdmVkRmlsdGVyTWV0YWRhdGF9IGZyb20gJy4uL3NlYXJjaC9tb2RlbHMvcGVyc2lzdGFuY2Uvc2F2ZWQtZmlsdGVyLW1ldGFkYXRhJztcbmltcG9ydCB7RmlsdGVyTWV0YWRhdGF9IGZyb20gJy4uL3NlYXJjaC9tb2RlbHMvcGVyc2lzdGFuY2UvZmlsdGVyLW1ldGFkYXRhJztcbmltcG9ydCB7Q3JlYXRlQ2FzZUV2ZW50T3V0Y29tZX0gZnJvbSAnLi4vZXZlbnQvbW9kZWwvZXZlbnQtb3V0Y29tZXMvY2FzZS1vdXRjb21lcy9jcmVhdGUtY2FzZS1ldmVudC1vdXRjb21lJztcbmltcG9ydCB7Q2F0ZWdvcnlSZXNvbHZlclNlcnZpY2V9IGZyb20gJy4uL3NlYXJjaC9jYXRlZ29yeS1mYWN0b3J5L2NhdGVnb3J5LXJlc29sdmVyLnNlcnZpY2UnO1xuaW1wb3J0IHtEYXRhR3JvdXB9IGZyb20gJy4uL3Jlc291cmNlcy9pbnRlcmZhY2UvZGF0YS1ncm91cHMnO1xuaW1wb3J0IHtnZXRGaWVsZEZyb21EYXRhR3JvdXBzfSBmcm9tICcuLi91dGlsaXR5L2dldC1maWVsZCc7XG5pbXBvcnQge0V2ZW50T3V0Y29tZU1lc3NhZ2VSZXNvdXJjZX0gZnJvbSAnLi4vcmVzb3VyY2VzL2ludGVyZmFjZS9tZXNzYWdlLXJlc291cmNlJztcblxuLyoqXG4gKiBTZXJ2aWNlIHRoYXQgbWFuYWdlcyBmaWx0ZXJzIGNyZWF0ZWQgYnkgdXNlcnMgb2YgdGhlIGFwcGxpY2F0aW9uLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJGaWx0ZXJzU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgICBwcm90ZWN0ZWQgX2luaXRpYWxpemVkJDogUmVwbGF5U3ViamVjdDxib29sZWFuPjtcbiAgICBwcm90ZWN0ZWQgX2ZpbHRlck5ldDogTmV0O1xuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIF9jYXNlU2VydmljZTogQ2FzZVJlc291cmNlU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3Rhc2tTZXJ2aWNlOiBUYXNrUmVzb3VyY2VTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfcHJvY2Vzc1NlcnZpY2U6IFByb2Nlc3NTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfY2FsbENoYWluU2VydmljZTogQ2FsbENoYWluU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3NpZGVNZW51U2VydmljZTogU2lkZU1lbnVTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfbG9nOiBMb2dnZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfY2F0ZWdvcnlSZXNvbHZlclNlcnZpY2U6IENhdGVnb3J5UmVzb2x2ZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTkFFX1NBVkVfRklMVEVSX0NPTVBPTkVOVCkgcHJvdGVjdGVkIF9zYXZlRmlsdGVyQ29tcG9uZW50OiBDb21wb25lbnRUeXBlPHVua25vd24+LFxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTkFFX0xPQURfRklMVEVSX0NPTVBPTkVOVCkgcHJvdGVjdGVkIF9sb2FkRmlsdGVyQ29tcG9uZW50OiBDb21wb25lbnRUeXBlPHVua25vd24+KSB7XG4gICAgICAgIHRoaXMuX2luaXRpYWxpemVkJCA9IG5ldyBSZXBsYXlTdWJqZWN0PGJvb2xlYW4+KDEpO1xuICAgICAgICB0aGlzLl9wcm9jZXNzU2VydmljZS5nZXROZXQoVXNlckZpbHRlckNvbnN0YW50cy5GSUxURVJfTkVUX0lERU5USUZJRVIpLnN1YnNjcmliZShuZXQgPT4ge1xuICAgICAgICAgICAgdGhpcy5fZmlsdGVyTmV0ID0gbmV0O1xuICAgICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZWQkLm5leHQodHJ1ZSk7XG4gICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcihgRmlsdGVyIG5ldCBjb3VsZCBub3QgYmUgbG9hZGVkIHdpdGggZXJyb3JgLCBlcnJvcik7XG4gICAgICAgICAgICB0aGlzLl9pbml0aWFsaXplZCQubmV4dChmYWxzZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pbml0aWFsaXplZCQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWxldGVzIHRoZSBzcGVjaWZpZWQgZmlsdGVyIGNhc2UgYnkgaXRzIGNhc2UgaWQuXG4gICAgICogQHBhcmFtIGZpbHRlckNhc2VJZCBTdHJpbmdJZCBvZiB0aGUgZmlsdGVyIGNhc2UgdGhhdCBzaG91bGQgYmUgZGVsZXRlZFxuICAgICAqIEByZXR1cm5zIGFuIE9ic2VydmFibGUgdGhhdCBlbWl0cyBgdHJ1ZWAgaWYgdGhlIGNhc2Ugd2FzIHN1Y2Nlc3NmdWxseSBkZWxldGVkIGFuZCBgZmFsc2VgIG90aGVyd2lzZVxuICAgICAqL1xuICAgIHB1YmxpYyBkZWxldGUoZmlsdGVyQ2FzZUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0JCA9IG5ldyBSZXBsYXlTdWJqZWN0PGJvb2xlYW4+KDEpO1xuICAgICAgICB0aGlzLl9jYXNlU2VydmljZS5kZWxldGVDYXNlKGZpbHRlckNhc2VJZCkuc3Vic2NyaWJlKChyZXNwb25zZTogRXZlbnRPdXRjb21lTWVzc2FnZVJlc291cmNlKSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvZy5kZWJ1ZygnRmlsdGVyIGNhc2UgZGVsZXRlIHN1Y2Nlc3MnLCByZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgcmVzdWx0JC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgICAgIHJlc3VsdCQuY29tcGxldGUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKCdGaWx0ZXIgY2FzZSBkZWxldGUgZmFpbHVyZScsIHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICByZXN1bHQkLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHJlc3VsdCQuY29tcGxldGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgZSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoJ0ZpbHRlciBjYXNlIGRlbGV0ZSBlcnJvcicsIGUpO1xuICAgICAgICAgICAgcmVzdWx0JC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgIHJlc3VsdCQuY29tcGxldGUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9wZW5zIGEgc2lkZSBtZW51IHdpdGggZmlsdGVyIGNhc2VzIGFuZCBhbGxvd3MgdGhlIHVzZXIgdG8gc2VsZWN0IG9uZSBvZiB0aGVtLlxuICAgICAqXG4gICAgICogVGhlIGRlZmF1bHQgZmlsdGVyIGNvbnN0cmFpbnMgdGhlIGNhc2VzIHRvIGJlIGluc3RhbmNlcyBvZiB0aGUgZmlsdGVyIHByb2Nlc3MgYW5kIHRvIGJlIGZpbHRlcnMgb2YgdGhlIHNwZWNpZmllZCB0eXBlXG4gICAgICogKGBDYXNlYCBvciBgVGFza2ApLlxuICAgICAqXG4gICAgICogQHBhcmFtIGZpbHRlclR5cGUgd2hldGhlciBgQ2FzZWAgb3IgYFRhc2tgIHVzZXIgZmlsdGVycyBzaG91bGQgYmUgbG9hZGVkXG4gICAgICogQHBhcmFtIGFkZGl0aW9uYWxGaWx0ZXIgYWRkaXRpb25hbCBjb25zdHJhaW5zIG9uIHRoZSBkaXNwbGF5ZWQgdXNlciBmaWx0ZXIgY2FzZXMuIE11c3QgYmUgb2YgdHlwZSBgQ2FzZWBcbiAgICAgKiBvdGhlcndpc2UgdGhlIG1ldGhvZCB0aHJvd3MgYW4gZXJyb3IuIElmIGl0IGlzIGEge0BsaW5rIE1lcmdlZEZpbHRlcn0gbXVzdCB1c2UgdGhlIGBBTkRgIHtAbGluayBNZXJnZU9wZXJhdG9yfSBvdGhlcndpc2UgYW4gZXJyb3JcbiAgICAgKiB3aWxsIGJlIHRocm93blxuICAgICAqIEByZXR1cm5zIGFuIE9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgZGF0YSBuZWNlc3NhcnkgdG8gcmVjb25zdHJ1Y3QgdGhlIHNlbGVjdGVkIGZpbHRlciwgb3IgYHVuZGVmaW5lZGAgaWYgbm8gZmlsdGVyIHdhcyBzZWxlY3RlZFxuICAgICAqL1xuICAgIHB1YmxpYyBsb2FkKGZpbHRlclR5cGU6IEZpbHRlclR5cGUsIGFkZGl0aW9uYWxGaWx0ZXI/OiBGaWx0ZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICBpZiAoYWRkaXRpb25hbEZpbHRlcj8udHlwZSA9PT0gRmlsdGVyVHlwZS5UQVNLKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoJ1RoZSBhZGRpdGlvbmFsIGZpbHRlciBhcHBsaWVkIHRvIFVzZXJGaWx0ZXJzU2VydmljZS5sb2FkKCkgbXVzdCBiZSBvZiB0eXBlIENhc2UnLCBhZGRpdGlvbmFsRmlsdGVyKTtcbiAgICAgICAgICAgIHRocm93IEVycm9yKCdUaGUgYWRkaXRpb25hbCBmaWx0ZXIgYXBwbGllZCB0byBVc2VyRmlsdGVyc1NlcnZpY2UubG9hZCgpIG11c3QgYmUgb2YgdHlwZSBDYXNlJyk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZmlsdGVyQ2FzZXNGaWx0ZXIgPSBTaW1wbGVGaWx0ZXIuZnJvbUNhc2VRdWVyeSh7XG4gICAgICAgICAgICBwcm9jZXNzOiB7XG4gICAgICAgICAgICAgICAgaWRlbnRpZmllcjogVXNlckZpbHRlckNvbnN0YW50cy5GSUxURVJfTkVUX0lERU5USUZJRVJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBxdWVyeTogYGRhdGFTZXQuJHtVc2VyRmlsdGVyQ29uc3RhbnRzLkZJTFRFUl9UWVBFX0ZJRUxEX0lEfS5rZXlWYWx1ZToke2ZpbHRlclR5cGV9YFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKCEhYWRkaXRpb25hbEZpbHRlcikge1xuICAgICAgICAgICAgZmlsdGVyQ2FzZXNGaWx0ZXIgPSBmaWx0ZXJDYXNlc0ZpbHRlci5tZXJnZShhZGRpdGlvbmFsRmlsdGVyLCBNZXJnZU9wZXJhdG9yLkFORCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgUmVwbGF5U3ViamVjdDxhbnk+KDEpO1xuICAgICAgICBjb25zdCByZWYgPSB0aGlzLl9zaWRlTWVudVNlcnZpY2Uub3Blbih0aGlzLl9sb2FkRmlsdGVyQ29tcG9uZW50LCBTaWRlTWVudVNpemUuTEFSR0UsIHtcbiAgICAgICAgICAgIGZpbHRlcjogZmlsdGVyQ2FzZXNGaWx0ZXJcbiAgICAgICAgfSBhcyBMb2FkRmlsdGVySW5qZWN0aW9uRGF0YSk7XG4gICAgICAgIHJlZi5vbkNsb3NlLnBpcGUoZmlsdGVyKGUgPT4gIWUub3BlbmVkKSwgdGFrZSgxKSkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgICAgIGlmIChldmVudC5tZXNzYWdlID09PSAnU2lkZSBtZW51IGNsb3NlZCB1bmV4cGVjdGVkbHknKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0Lm5leHQoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0Lm5leHQoZXZlbnQuZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQuY29tcGxldGUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2F2ZXMgdGhlIHByZWRpY2F0ZSBmaWx0ZXIgY29udGFpbmVkIGluIHRoZSBwcm92aWRlZCB7QGxpbmsgU2VhcmNoU2VydmljZX0gaW5zdGFuY2UuXG4gICAgICpcbiAgICAgKiBUaGUgYmFzZSBmaWx0ZXIgb2YgdGhlIHNlYXJjaCBzZXJ2aWNlIGlzIG5vdCBzYXZlZC5cbiAgICAgKlxuICAgICAqIEEgbmV3IGZpbHRlciBjYXNlIGlzIGNyZWF0ZWQgYW5kIHRoZSBuZWNlc3NhcnkgZmlsdGVyIGluZm9ybWF0aW9uIGlzIHNldCBpbnRvIGl0LlxuICAgICAqXG4gICAgICogVGhlbiBhIHNpZGUgbWVudSB3aXRoIHRoZSBmaWx0ZXIgaXMgb3BlbmVkIGZvciB0aGUgdXNlciB0byBlbnRlciB0aGUgbmFtZSBhbmQgb3RoZXIgcHJvcGVydGllcy5cbiAgICAgKiBUaGUgdXNlciBjYW4gY29uZmlybSBvciBjYW5jZWwgdGhlIHNhdmUgYnkgZmluaXNoaW5nIHRoZSB0YXNrIGluIHRoZSBzaWRlIG1lbnUsIG9yIGJ5IGNhbmNlbGluZy9jbG9zaW5nLlxuICAgICAqXG4gICAgICogQHBhcmFtIHNlYXJjaFNlcnZpY2Ugc2VhcmNoIHNlcnZpY2UgY29udGFpbmluZyBhIHByZWRpY2F0ZSBmaWx0ZXIsIHdlIHdhbnQgdG8gc2F2ZVxuICAgICAqIEBwYXJhbSBhbGxvd2VkTmV0cyBhbGxvd2VkIG5ldHMgb2YgdGhlIHZpZXcsIHRoYXQgY29udGFpbnMgdGhlIHNlYXJjaCBzZXJ2aWNlXG4gICAgICogQHBhcmFtIHNlYXJjaENhdGVnb3JpZXMgc2VhcmNoIGNhdGVnb3JpZXMgYXZhaWxhYmxlIGluIHRoZSBzYXZlZCBhZHZhbmNlZCBzZWFyY2ggY29tcG9uZW50XG4gICAgICogQHBhcmFtIHZpZXdJZCB0aGUgdmlld0lkIG9mIHRoZSB2aWV3IHdoaWNoIGNvbnRhaW5lZCB0aGUgZmlsdGVyLlxuICAgICAqIElmIG5laXRoZXIgdGhlIGB2aWV3SWRgIG5vciB0aGUgYG5hdmlnYXRpb25JdGVtVGFza0RhdGFgIGF0dHJpYnV0ZSBpcyBzZXQgdGhlIGZpbHRlciB3aWxsIGJlIGNyZWF0ZWQgYXMgYSBuZXcgcm9vdCBmaWx0ZXJcbiAgICAgKiB3aXRob3V0IGFueSBwYXJlbnQgZmlsdGVyIGxpbmsuIFRoaXMgd2lsbCBtb3N0IGxpa2VseSByZXN1bHQgaW4gdGhlIGZpbHRlciBiZWluZyBsZXNzIHJlc3RyaWN0aXZlIHRoYW4gd2hhdFxuICAgICAqIHRoZSB1c2VyIHNlZXMgaW4gdGhlIGN1cnJlbnQgdmlldywgc2luY2UgdGhlIGJhc2UgZmlsdGVyIG9mIHRoZSB2aWV3IHdpbGwgTk9UIGJlIHNhdmVkIGFsb25nc2lkZSB0aGUgc2F2ZWQgZmlsdGVyLlxuICAgICAqIEBwYXJhbSBhZGRpdGlvbmFsRGF0YSBzZXQgZGF0YSByZXF1ZXN0IGJvZHksIHRoYXQgaXMgc2VudCB0byB0aGUgZmlsdGVyIGluIGFkZGl0aW9uIHRvIHRoZSBkZWZhdWx0IGJvZHkuXG4gICAgICogVGhlIGRlZmF1bHQgYm9keSBpcyBhcHBsaWVkIGZpcnN0IGFuZCBjYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGlzIGFyZ3VtZW50LlxuICAgICAqIEBwYXJhbSB3aXRoRGVmYXVsdENhdGVnb3JpZXMgV2hldGhlciB0aGUgc2F2ZWQgZmlsdGVyIHNob3VsZCBiZSBzYXZlZCB3aXRoXG4gICAgICogdGhlIFtkZWZhdWx0U2VhcmNoQ2F0ZWdvcmllc117QGxpbmsgRmlsdGVyTWV0YWRhdGEjZGVmYXVsdFNlYXJjaENhdGVnb3JpZXN9IGZsYWcgc2V0IHRvIGB0cnVlYCwgb3IgYGZhbHNlYC5cbiAgICAgKiBAcGFyYW0gaW5oZXJpdEFsbG93ZWROZXRzIFdoZXRoZXIgdGhlIHNhdmVkIGZpbHRlciBzaG91bGQgbWVyZ2UgaXRzIGFsbG93ZWQgbmV0cyB3aXRoIHRoZSBhbGxvd2VkIG5ldHMgcHJvdmlkZWQgYnlcbiAgICAgKiB0aGUge0BsaW5rIEJhc2VBbGxvd2VkTmV0c1NlcnZpY2V9LlxuICAgICAqIEBwYXJhbSBuYXZpZ2F0aW9uSXRlbVRhc2tEYXRhIGlmIHByb3ZpZGVkIHRoZW4gaXQgaW1wbGllcyB0aGUgZmlsdGVyIGhhcyBhIHBhcmVudCBmaWx0ZXIgdGhhdCBjcmVhdGVkIGl0cyBob3N0IGR5bmFtaWMgdmlldy5cbiAgICAgKiBJZiB0aGlzIGlzIHRoZSBjYXNlIHRoZSBjYXNlIElEIG9mIHRoZSBwYXJlbnQgZmlsdGVyIHdpbGwgYmUgc2V0IGludG8gdGhlIG5ld2x5IGNyZWF0ZWQgZmlsdGVyIGNhc2UuXG4gICAgICogSWYgbm90IHNldCBpdCBpbXBsaWVzIHRoaXMgaXMgYSBmaWx0ZXIgb3JpZ2luYXRpbmcgaW4gYW4gaW4tYXBwIHZpZXcgYW5kIGl0cyB2aWV3IGlkIHdpbGwgYmUgc2V0IGludG8gdGhlIGNyZWF0ZWQgZmlsdGVyLlxuICAgICAqIEByZXR1cm5zIGFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgaWQgb2YgdGhlIGNyZWF0ZWQgRmlsdGVyIGNhc2UgaW5zdGFuY2Ugb3IgYHVuZGVmaW5lZGAgaWYgdGhlIHVzZXIgY2FuY2VsZWQgdGhlIHNhdmUgcHJvY2VzcyxcbiAgICAgKiBvciB0aGUgZmlsdGVyIGNvdWxkIG5vdCBiZSBzYXZlZFxuICAgICAqL1xuICAgIHB1YmxpYyBzYXZlKHNlYXJjaFNlcnZpY2U6IFNlYXJjaFNlcnZpY2UsXG4gICAgICAgICAgICAgICAgYWxsb3dlZE5ldHM6IFJlYWRvbmx5QXJyYXk8c3RyaW5nPixcbiAgICAgICAgICAgICAgICBzZWFyY2hDYXRlZ29yaWVzOiBSZWFkb25seUFycmF5PFR5cGU8Q2F0ZWdvcnk8YW55Pj4+LFxuICAgICAgICAgICAgICAgIHZpZXdJZD86IHN0cmluZyxcbiAgICAgICAgICAgICAgICBhZGRpdGlvbmFsRGF0YTogVGFza1NldERhdGFSZXF1ZXN0RmllbGRzID0ge30sXG4gICAgICAgICAgICAgICAgd2l0aERlZmF1bHRDYXRlZ29yaWVzID0gdHJ1ZSxcbiAgICAgICAgICAgICAgICBpbmhlcml0QWxsb3dlZE5ldHMgPSB0cnVlLFxuICAgICAgICAgICAgICAgIG5hdmlnYXRpb25JdGVtVGFza0RhdGE6IEFycmF5PERhdGFHcm91cD4gPSBudWxsKTogT2JzZXJ2YWJsZTxTYXZlZEZpbHRlck1ldGFkYXRhPiB7XG4gICAgICAgIGlmICghc2VhcmNoU2VydmljZS5hZGRpdGlvbmFsRmlsdGVyc0FwcGxpZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvZy53YXJuKCdUaGUgcHJvdmlkZWQgU2VhcmNoU2VydmljZSBjb250YWlucyBubyBmaWx0ZXIgYmVzaWRlcyB0aGUgYmFzZSBmaWx0ZXIuIE5vdGhpbmcgdG8gc2F2ZS4nKTtcbiAgICAgICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IFJlcGxheVN1YmplY3Q8U2F2ZWRGaWx0ZXJNZXRhZGF0YT4oMSk7XG4gICAgICAgIHRoaXMuY3JlYXRlRmlsdGVyQ2FzZUFuZFNldERhdGEoXG4gICAgICAgICAgICBzZWFyY2hTZXJ2aWNlLFxuICAgICAgICAgICAgYWxsb3dlZE5ldHMsXG4gICAgICAgICAgICBzZWFyY2hDYXRlZ29yaWVzLFxuICAgICAgICAgICAgdmlld0lkLFxuICAgICAgICAgICAgYWRkaXRpb25hbERhdGEsXG4gICAgICAgICAgICB3aXRoRGVmYXVsdENhdGVnb3JpZXMsXG4gICAgICAgICAgICBpbmhlcml0QWxsb3dlZE5ldHMsXG4gICAgICAgICAgICBuYXZpZ2F0aW9uSXRlbVRhc2tEYXRhXG4gICAgICAgICkuc3Vic2NyaWJlKGZpbHRlckNhc2VJZCA9PiB7XG4gICAgICAgICAgICBjb25zdCByZWYgPSB0aGlzLl9zaWRlTWVudVNlcnZpY2Uub3Blbih0aGlzLl9zYXZlRmlsdGVyQ29tcG9uZW50LCBTaWRlTWVudVNpemUuTEFSR0UsIHtcbiAgICAgICAgICAgICAgICBuZXdGaWx0ZXJDYXNlSWQ6IGZpbHRlckNhc2VJZFxuICAgICAgICAgICAgfSBhcyBTYXZlRmlsdGVySW5qZWN0aW9uRGF0YSk7XG4gICAgICAgICAgICByZWYub25DbG9zZS5waXBlKGZpbHRlcihlID0+ICFlLm9wZW5lZCksIHRha2UoMSkpLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50Lm1lc3NhZ2UgPT09ICdTaWRlIG1lbnUgY2xvc2VkIHVuZXhwZWN0ZWRseScpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWxldGUoZmlsdGVyQ2FzZUlkKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm5leHQoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQubmV4dCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJDYXNlSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2VkTmV0czogWy4uLmFsbG93ZWROZXRzXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpblZpZXdJZDogdmlld0lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyTWV0YWRhdGE6IHRoaXMuZmlsdGVyTWV0YWRhdGFGcm9tU2VhcmNoU2VydmljZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaENhdGVnb3JpZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aERlZmF1bHRDYXRlZ29yaWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaGVyaXRBbGxvd2VkTmV0c1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogU2ltcGxlRmlsdGVyLmZyb21RdWVyeSh7cXVlcnk6IHNlYXJjaFNlcnZpY2Uucm9vdFByZWRpY2F0ZS5xdWVyeS52YWx1ZX0sIHNlYXJjaFNlcnZpY2UuZmlsdGVyVHlwZSlcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJlc3VsdC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNhdmVzIHRoZSBwcmVkaWNhdGUgZmlsdGVyIGNvbnRhaW5lZCBpbiB0aGUgcHJvdmlkZWQge0BsaW5rIFNlYXJjaFNlcnZpY2V9IGluc3RhbmNlLlxuICAgICAqXG4gICAgICogVGhlIGJhc2UgZmlsdGVyIG9mIHRoZSBzZWFyY2ggc2VydmljZSBpcyBub3Qgc2F2ZWQuXG4gICAgICpcbiAgICAgKiBBIG5ldyBmaWx0ZXIgY2FzZSBpcyBjcmVhdGVkIGFuZCB0aGUgbmVjZXNzYXJ5IGZpbHRlciBpbmZvcm1hdGlvbiBpcyBzZXQgaW50byBpdC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzZWFyY2hTZXJ2aWNlIHNlYXJjaCBzZXJ2aWNlIGNvbnRhaW5pbmcgYSBwcmVkaWNhdGUgZmlsdGVyLCB3ZSB3YW50IHRvIHNhdmVcbiAgICAgKiBAcGFyYW0gYWxsb3dlZE5ldHMgYWxsb3dlZCBuZXRzIG9mIHRoZSB2aWV3LCB0aGF0IGNvbnRhaW5zIHRoZSBzZWFyY2ggc2VydmljZVxuICAgICAqIEBwYXJhbSBzZWFyY2hDYXRlZ29yaWVzIHNlYXJjaCBjYXRlZ29yaWVzIGF2YWlsYWJsZSBpbiB0aGUgc2F2ZWQgYWR2YW5jZWQgc2VhcmNoIGNvbXBvbmVudFxuICAgICAqIEBwYXJhbSB2aWV3SWQgdGhlIHZpZXdJZCBvZiB0aGUgdmlldyB3aGljaCBjb250YWluZWQgdGhlIGZpbHRlci5cbiAgICAgKiBJZiBuZWl0aGVyIHRoZSBgdmlld0lkYCBub3IgdGhlIGBuYXZpZ2F0aW9uSXRlbVRhc2tEYXRhYCBhdHRyaWJ1dGUgaXMgc2V0IHRoZSBmaWx0ZXIgd2lsbCBiZSBjcmVhdGVkIGFzIGEgbmV3IHJvb3QgZmlsdGVyXG4gICAgICogd2l0aG91dCBhbnkgcGFyZW50IGZpbHRlciBsaW5rLiBUaGlzIHdpbGwgbW9zdCBsaWtlbHkgcmVzdWx0IGluIHRoZSBmaWx0ZXIgYmVpbmcgbGVzcyByZXN0cmljdGl2ZSB0aGFuIHdoYXRcbiAgICAgKiB0aGUgdXNlciBzZWVzIGluIHRoZSBjdXJyZW50IHZpZXcsIHNpbmNlIHRoZSBiYXNlIGZpbHRlciBvZiB0aGUgdmlldyB3aWxsIE5PVCBiZSBzYXZlZCBhbG9uZ3NpZGUgdGhlIHNhdmVkIGZpbHRlci5cbiAgICAgKiBAcGFyYW0gYWRkaXRpb25hbERhdGEgc2V0IGRhdGEgcmVxdWVzdCBib2R5LCB0aGF0IGlzIHNlbnQgdG8gdGhlIGZpbHRlciBpbiBhZGRpdGlvbiB0byB0aGUgZGVmYXVsdCBib2R5LlxuICAgICAqIFRoZSBkZWZhdWx0IGJvZHkgaXMgYXBwbGllZCBmaXJzdCBhbmQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgdGhpcyBhcmd1bWVudC5cbiAgICAgKiBAcGFyYW0gd2l0aERlZmF1bHRDYXRlZ29yaWVzIFdoZXRoZXIgdGhlIHNhdmVkIGZpbHRlciBzaG91bGQgYmUgc2F2ZWQgd2l0aFxuICAgICAqIHRoZSBbZGVmYXVsdFNlYXJjaENhdGVnb3JpZXNde0BsaW5rIEZpbHRlck1ldGFkYXRhI2RlZmF1bHRTZWFyY2hDYXRlZ29yaWVzfSBmbGFnIHNldCB0byBgdHJ1ZWAsIG9yIGBmYWxzZWAuXG4gICAgICogQHBhcmFtIGluaGVyaXRBbGxvd2VkTmV0cyBXaGV0aGVyIHRoZSBzYXZlZCBmaWx0ZXIgc2hvdWxkIG1lcmdlIGl0cyBhbGxvd2VkIG5ldHMgd2l0aCB0aGUgYWxsb3dlZCBuZXRzIHByb3ZpZGVkIGJ5XG4gICAgICogdGhlIHtAbGluayBCYXNlQWxsb3dlZE5ldHNTZXJ2aWNlfS5cbiAgICAgKiBAcGFyYW0gbmF2aWdhdGlvbkl0ZW1UYXNrRGF0YSBpZiBwcm92aWRlZCB0aGVuIGl0IGltcGxpZXMgdGhlIGZpbHRlciBoYXMgYSBwYXJlbnQgZmlsdGVyIHRoYXQgY3JlYXRlZCBpdHMgaG9zdCBkeW5hbWljIHZpZXcuXG4gICAgICogSWYgdGhpcyBpcyB0aGUgY2FzZSB0aGUgY2FzZSBJRCBvZiB0aGUgcGFyZW50IGZpbHRlciB3aWxsIGJlIHNldCBpbnRvIHRoZSBuZXdseSBjcmVhdGVkIGZpbHRlciBjYXNlLlxuICAgICAqIElmIG5vdCBzZXQgaXQgaW1wbGllcyB0aGlzIGlzIGEgZmlsdGVyIG9yaWdpbmF0aW5nIGluIGFuIGluLWFwcCB2aWV3IGFuZCBpdHMgdmlldyBpZCB3aWxsIGJlIHNldCBpbnRvIHRoZSBjcmVhdGVkIGZpbHRlci5cbiAgICAgKiBAcmV0dXJucyBhbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIGlkIG9mIHRoZSBjcmVhdGVkIEZpbHRlciBjYXNlIGluc3RhbmNlXG4gICAgICovXG4gICAgcHVibGljIGNyZWF0ZUZpbHRlckNhc2VBbmRTZXREYXRhKHNlYXJjaFNlcnZpY2U6IFNlYXJjaFNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93ZWROZXRzOiBSZWFkb25seUFycmF5PHN0cmluZz4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaENhdGVnb3JpZXM6IFJlYWRvbmx5QXJyYXk8VHlwZTxDYXRlZ29yeTxhbnk+Pj4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdJZD86IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbERhdGE6IFRhc2tTZXREYXRhUmVxdWVzdEZpZWxkcyA9IHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoRGVmYXVsdENhdGVnb3JpZXMgPSB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0QWxsb3dlZE5ldHMgPSB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0aW9uSXRlbVRhc2tEYXRhOiBBcnJheTxEYXRhR3JvdXA+ID0gbnVsbCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBSZXBsYXlTdWJqZWN0PHN0cmluZz4oMSk7XG4gICAgICAgIHRoaXMud2hlbkluaXRpYWxpemVkKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2Nhc2VTZXJ2aWNlLmNyZWF0ZUNhc2Uoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0aGlzLl9maWx0ZXJOZXQuZGVmYXVsdENhc2VOYW1lLFxuICAgICAgICAgICAgICAgIG5ldElkOiB0aGlzLl9maWx0ZXJOZXQuc3RyaW5nSWRcbiAgICAgICAgICAgIH0pLnN1YnNjcmliZShmaWx0ZXJDYXNlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl90YXNrU2VydmljZS5nZXRUYXNrcyhTaW1wbGVGaWx0ZXIuZnJvbVRhc2tRdWVyeSh7XG4gICAgICAgICAgICAgICAgICAgIGNhc2U6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAoZmlsdGVyQ2FzZS5vdXRjb21lIGFzIENyZWF0ZUNhc2VFdmVudE91dGNvbWUpLmFDYXNlLnN0cmluZ0lkXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSkuc3Vic2NyaWJlKHBhZ2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc0NvbnRlbnQocGFnZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgZmlsdGVyIHByb2Nlc3MgdG8gY29udGFpbiB0YXNrcywgYnV0IG5vbmUgd2VyZSBmb3VuZCEnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGluaXRUYXNrID0gcGFnZS5jb250ZW50LmZpbmQodGFzayA9PiB0YXNrLnRyYW5zaXRpb25JZCA9PT0gVXNlckZpbHRlckNvbnN0YW50cy5TRVRfRklMVEVSX01FVEFEQVRBX1RSQU5TSVRJT05fSUQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5pdFRhc2sgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBmaWx0ZXIgcHJvY2VzcyB0byBjb250YWluIHRhc2sgJyR7VXNlckZpbHRlckNvbnN0YW50cy5TRVRfRklMVEVSX01FVEFEQVRBX1RSQU5TSVRJT05fSURcbiAgICAgICAgICAgICAgICAgICAgICAgIH0nLCBidXQgbm9uZSB3YXMgZm91bmQhYCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0Qm9keSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFtVc2VyRmlsdGVyQ29uc3RhbnRzLkZJTFRFUl9UWVBFX0ZJRUxEX0lEXToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZVJlc291cmNlLkVOVU1FUkFUSU9OX01BUCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogc2VhcmNoU2VydmljZS5maWx0ZXJUeXBlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgW1VzZXJGaWx0ZXJDb25zdGFudHMuRklMVEVSX0ZJRUxEX0lEXToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZVJlc291cmNlLkZJTFRFUixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogc2VhcmNoU2VydmljZS5yb290UHJlZGljYXRlLnF1ZXJ5LnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93ZWROZXRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlck1ldGFkYXRhOiB0aGlzLmZpbHRlck1ldGFkYXRhRnJvbVNlYXJjaFNlcnZpY2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaFNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaENhdGVnb3JpZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhEZWZhdWx0Q2F0ZWdvcmllcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdEFsbG93ZWROZXRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICBsZXQgcGFyZW50RmlsdGVyQ2FzZUlkRmllbGQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuYXZpZ2F0aW9uSXRlbVRhc2tEYXRhICE9PSBudWxsICYmIG5hdmlnYXRpb25JdGVtVGFza0RhdGEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50RmlsdGVyQ2FzZUlkRmllbGQgPSBnZXRGaWVsZEZyb21EYXRhR3JvdXBzKG5hdmlnYXRpb25JdGVtVGFza0RhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlckZpbHRlckNvbnN0YW50cy5GSUxURVJfQ0FTRV9JRF9GSUVMRF9JRCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50RmlsdGVyQ2FzZUlkRmllbGQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEJvZHlbVXNlckZpbHRlckNvbnN0YW50cy5QQVJFTlRfRklMVEVSX0NBU0VfSURfRklFTERfSURdID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZVJlc291cmNlLlRFWFQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHBhcmVudEZpbHRlckNhc2VJZEZpZWxkLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZpZXdJZCAhPT0gdW5kZWZpbmVkIHx8IHZpZXdJZCAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RCb2R5W1VzZXJGaWx0ZXJDb25zdGFudHMuT1JJR0lOX1ZJRVdfSURfRklFTERfSURdID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZVJlc291cmNlLlRFWFQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZpZXdJZFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXNzaWduU2V0RGF0YUZpbmlzaChpbml0VGFzaywge1xuICAgICAgICAgICAgICAgICAgICAgICAgW2luaXRUYXNrLnN0cmluZ0lkXToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnJlcXVlc3RCb2R5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmFkZGl0aW9uYWxEYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHRoaXMuX2NhbGxDaGFpblNlcnZpY2UuY3JlYXRlKHN1Y2Nlc3MgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGaWx0ZXIgaW5zdGFuY2UgY291bGQgbm90IGJlIGluaXRpYWxpemVkJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5uZXh0KChmaWx0ZXJDYXNlLm91dGNvbWUgYXMgQ3JlYXRlQ2FzZUV2ZW50T3V0Y29tZSkuYUNhc2Uuc3RyaW5nSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCAnc2F2ZVdpdGhTaWRlTWVudScpO1xuICAgICAgICByZXR1cm4gcmVzdWx0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB3aGVuSW5pdGlhbGl6ZWQob25TdWNjZXNzOiAoKSA9PiB2b2lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kPzogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25GYWlsdXJlOiAoKSA9PiB2b2lkID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcihgVXNlckZpbHRlclNlcnZpY2UgZmFpbGVkIHRvIGluaXRpYWxpemUgYW5kIHRoZSBjYWxsZWQgbWV0aG9kJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kID8gJyAoJyArIG1ldGhvZCArICcpJyA6ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYW5ub3QgYmUgcGVyZm9ybWVkYCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSB7XG4gICAgICAgIHRoaXMuX2luaXRpYWxpemVkJC5hc09ic2VydmFibGUoKS5waXBlKHRha2UoMSkpLnN1YnNjcmliZShpbml0aWFsaXplZCA9PiB7XG4gICAgICAgICAgICBpbml0aWFsaXplZCA/IG9uU3VjY2VzcygpIDogb25GYWlsdXJlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFRPRE8gNi40LjIwMjEgSU1QUk9WRU1FTlQgLSBleHRyYWN0IHNpbWlsYXIgbWV0aG9kIGludG8gc29tZSB1dGlsaXR5IHNlcnZpY2VcbiAgICBwcm90ZWN0ZWQgYXNzaWduU2V0RGF0YUZpbmlzaCh0YXNrOiBUYXNrLCBkYXRhOiBUYXNrU2V0RGF0YVJlcXVlc3RCb2R5LCBjYWxsQ2hhaW46IFN1YmplY3Q8Ym9vbGVhbj4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFza1NlcnZpY2UuYXNzaWduVGFzayh0YXNrLnN0cmluZ0lkKS5zdWJzY3JpYmUoYXNzaWduT3V0Y29tZSA9PiB7XG4gICAgICAgICAgICBpZiAoYXNzaWduT3V0Y29tZS5lcnJvcikge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcihgQ291bGQgbm90IGFzc2lnbiB0YXNrICcke3Rhc2sudGl0bGV9J2AsIHRhc2ssIGFzc2lnbk91dGNvbWUuZXJyb3IpO1xuICAgICAgICAgICAgICAgIGNhbGxDaGFpbi5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fdGFza1NlcnZpY2Uuc2V0RGF0YSh0YXNrLnN0cmluZ0lkLCBkYXRhKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3Rhc2tTZXJ2aWNlLmZpbmlzaFRhc2sodGFzay5zdHJpbmdJZCkuc3Vic2NyaWJlKGZpbmlzaE91dGNvbWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmluaXNoT3V0Y29tZS5lcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKGBDb3VsZCBub3QgZmluaXNoIHRhc2sgJyR7dGFzay50aXRsZX0nYCwgdGFzaywgZmluaXNoT3V0Y29tZS5lcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsQ2hhaW4ubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjYWxsQ2hhaW4ubmV4dCh0cnVlKTtcbiAgICAgICAgICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcihgQ291bGQgbm90IGZpbmlzaCB0YXNrICcke3Rhc2sudGl0bGV9J2AsIHRhc2ssIGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgY2FsbENoYWluLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcihgQ291bGQgbm90IHNldCBkYXRhIG9mIHRhc2sgJyR7dGFzay50aXRsZX0nYCwgdGFzaywgZGF0YSwgZXJyb3IpO1xuICAgICAgICAgICAgICAgIGNhbGxDaGFpbi5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoYENvdWxkIG5vdCBhc3NpZ24gdGFzayAnJHt0YXNrLnRpdGxlfSdgLCB0YXNrLCBlcnJvcik7XG4gICAgICAgICAgICBjYWxsQ2hhaW4ubmV4dChmYWxzZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBmaWx0ZXJNZXRhZGF0YUZyb21TZWFyY2hTZXJ2aWNlKHNlYXJjaFNlcnZpY2U6IFNlYXJjaFNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQ2F0ZWdvcmllczogUmVhZG9ubHlBcnJheTxUeXBlPENhdGVnb3J5PGFueT4+PixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoRGVmYXVsdENhdGVnb3JpZXM6IGJvb2xlYW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdEFsbG93ZWROZXRzOiBib29sZWFuKTogRmlsdGVyTWV0YWRhdGEge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZmlsdGVyVHlwZTogc2VhcmNoU2VydmljZS5maWx0ZXJUeXBlLFxuICAgICAgICAgICAgcHJlZGljYXRlTWV0YWRhdGE6IHNlYXJjaFNlcnZpY2UuY3JlYXRlUHJlZGljYXRlTWV0YWRhdGEoKSxcbiAgICAgICAgICAgIHNlYXJjaENhdGVnb3JpZXM6IHNlYXJjaENhdGVnb3JpZXMubWFwKGMgPT4gdGhpcy5fY2F0ZWdvcnlSZXNvbHZlclNlcnZpY2Uuc2VyaWFsaXplKGMpKSxcbiAgICAgICAgICAgIGRlZmF1bHRTZWFyY2hDYXRlZ29yaWVzOiB3aXRoRGVmYXVsdENhdGVnb3JpZXMsXG4gICAgICAgICAgICBpbmhlcml0QWxsb3dlZE5ldHNcbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=
324
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1maWx0ZXJzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL2ZpbHRlci91c2VyLWZpbHRlcnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBYSxRQUFRLEVBQU8sTUFBTSxlQUFlLENBQUM7QUFDNUUsT0FBTyxFQUFhLEVBQUUsRUFBRSxhQUFhLEVBQVUsTUFBTSxNQUFNLENBQUM7QUFNNUQsT0FBTyxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBSWxFLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBRzVFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUdoRSxPQUFPLEVBQUMseUJBQXlCLEVBQUUseUJBQXlCLEVBQUMsTUFBTSxrREFBa0QsQ0FBQztBQUd0SCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFaEQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBTXRELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7QUFHNUQ7O0dBRUc7QUFJSCxNQUFNLE9BQU8sa0JBQWtCO0lBSzNCLFlBQXNCLFlBQWlDLEVBQ2pDLFlBQWlDLEVBQ2pDLGVBQStCLEVBQy9CLGlCQUFtQyxFQUNuQyxnQkFBaUMsRUFDakMsSUFBbUIsRUFDbkIsd0JBQWlELEVBQ0Ysb0JB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QixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkYsdUJBQXVCLEVBQUUscUJBQXFCO1lBQzlDLGtCQUFrQjtTQUNyQixDQUFDO0lBQ04sQ0FBQzs7Z0hBcFZRLGtCQUFrQix5UEFZSyx5QkFBeUIsNkJBQ3pCLHlCQUF5QjtvSEFiaEQsa0JBQWtCLGNBRmYsTUFBTTs0RkFFVCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFhZ0IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyx5QkFBeUI7OzBCQUM1QyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIE9wdGlvbmFsLCBUeXBlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2YsIFJlcGxheVN1YmplY3QsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtDYXNlUmVzb3VyY2VTZXJ2aWNlfSBmcm9tICcuLi9yZXNvdXJjZXMvZW5naW5lLWVuZHBvaW50L2Nhc2UtcmVzb3VyY2Uuc2VydmljZSc7XG5pbXBvcnQge1Rhc2tSZXNvdXJjZVNlcnZpY2V9IGZyb20gJy4uL3Jlc291cmNlcy9lbmdpbmUtZW5kcG9pbnQvdGFzay1yZXNvdXJjZS5zZXJ2aWNlJztcbmltcG9ydCB7U2VhcmNoU2VydmljZX0gZnJvbSAnLi4vc2VhcmNoL3NlYXJjaC1zZXJ2aWNlL3NlYXJjaC5zZXJ2aWNlJztcbmltcG9ydCB7UHJvY2Vzc1NlcnZpY2V9IGZyb20gJy4uL3Byb2Nlc3MvcHJvY2Vzcy5zZXJ2aWNlJztcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vbG9nZ2VyL3NlcnZpY2VzL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7ZmlsdGVyLCB0YWtlfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1NpbXBsZUZpbHRlcn0gZnJvbSAnLi9tb2RlbHMvc2ltcGxlLWZpbHRlcic7XG5pbXBvcnQge2hhc0NvbnRlbnR9IGZyb20gJy4uL3V0aWxpdHkvcGFnaW5hdGlvbi9wYWdlLWhhcy1jb250ZW50JztcbmltcG9ydCB7VGFza30gZnJvbSAnLi4vcmVzb3VyY2VzL2ludGVyZmFjZS90YXNrJztcbmltcG9ydCB7Q2FsbENoYWluU2VydmljZX0gZnJvbSAnLi4vdXRpbGl0eS9jYWxsLWNoYWluL2NhbGwtY2hhaW4uc2VydmljZSc7XG5pbXBvcnQge1Rhc2tTZXREYXRhUmVxdWVzdEJvZHksIFRhc2tTZXREYXRhUmVxdWVzdEZpZWxkc30gZnJvbSAnLi4vcmVzb3VyY2VzL2ludGVyZmFjZS90YXNrLXNldC1kYXRhLXJlcXVlc3QtYm9keSc7XG5pbXBvcnQge0ZpZWxkVHlwZVJlc291cmNlfSBmcm9tICcuLi90YXNrLWNvbnRlbnQvbW9kZWwvZmllbGQtdHlwZS1yZXNvdXJjZSc7XG5pbXBvcnQge0NhdGVnb3J5fSBmcm9tICcuLi9zZWFyY2gvbW9kZWxzL2NhdGVnb3J5L2NhdGVnb3J5JztcbmltcG9ydCB7TmV0fSBmcm9tICcuLi9wcm9jZXNzL25ldCc7XG5pbXBvcnQge1VzZXJGaWx0ZXJDb25zdGFudHN9IGZyb20gJy4vbW9kZWxzL3VzZXItZmlsdGVyLWNvbnN0YW50cyc7XG5pbXBvcnQge1NpZGVNZW51U2l6ZX0gZnJvbSAnLi4vc2lkZS1tZW51L21vZGVscy9zaWRlLW1lbnUtc2l6ZSc7XG5pbXBvcnQge1NhdmVGaWx0ZXJJbmplY3Rpb25EYXRhfSBmcm9tICcuLi9zaWRlLW1lbnUvY29udGVudC1jb21wb25lbnRzL3NhdmUtZmlsdGVyL21vZGVsL3NhdmUtZmlsdGVyLWluamVjdGlvbi1kYXRhJztcbmltcG9ydCB7U2lkZU1lbnVTZXJ2aWNlfSBmcm9tICcuLi9zaWRlLW1lbnUvc2VydmljZXMvc2lkZS1tZW51LnNlcnZpY2UnO1xuaW1wb3J0IHtOQUVfTE9BRF9GSUxURVJfQ09NUE9ORU5ULCBOQUVfU0FWRV9GSUxURVJfQ09NUE9ORU5UfSBmcm9tICcuLi9zaWRlLW1lbnUvY29udGVudC1jb21wb25lbnRzL2luamVjdGlvbi10b2tlbnMnO1xuaW1wb3J0IHtDb21wb25lbnRUeXBlfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7TG9hZEZpbHRlckluamVjdGlvbkRhdGF9IGZyb20gJy4uL3NpZGUtbWVudS9jb250ZW50LWNvbXBvbmVudHMvbG9hZC1maWx0ZXIvbW9kZWwvbG9hZC1maWx0ZXItaW5qZWN0aW9uLWRhdGEnO1xuaW1wb3J0IHtGaWx0ZXJUeXBlfSBmcm9tICcuL21vZGVscy9maWx0ZXItdHlwZSc7XG5pbXBvcnQge0ZpbHRlcn0gZnJvbSAnLi9tb2RlbHMvZmlsdGVyJztcbmltcG9ydCB7TWVyZ2VPcGVyYXRvcn0gZnJvbSAnLi9tb2RlbHMvbWVyZ2Utb3BlcmF0b3InO1xuaW1wb3J0IHtTYXZlZEZpbHRlck1ldGFkYXRhfSBmcm9tICcuLi9zZWFyY2gvbW9kZWxzL3BlcnNpc3RhbmNlL3NhdmVkLWZpbHRlci1tZXRhZGF0YSc7XG5pbXBvcnQge0ZpbHRlck1ldGFkYXRhfSBmcm9tICcuLi9zZWFyY2gvbW9kZWxzL3BlcnNpc3RhbmNlL2ZpbHRlci1tZXRhZGF0YSc7XG5pbXBvcnQge0NyZWF0ZUNhc2VFdmVudE91dGNvbWV9IGZyb20gJy4uL2V2ZW50L21vZGVsL2V2ZW50LW91dGNvbWVzL2Nhc2Utb3V0Y29tZXMvY3JlYXRlLWNhc2UtZXZlbnQtb3V0Y29tZSc7XG5pbXBvcnQge0NhdGVnb3J5UmVzb2x2ZXJTZXJ2aWNlfSBmcm9tICcuLi9zZWFyY2gvY2F0ZWdvcnktZmFjdG9yeS9jYXRlZ29yeS1yZXNvbHZlci5zZXJ2aWNlJztcbmltcG9ydCB7RGF0YUdyb3VwfSBmcm9tICcuLi9yZXNvdXJjZXMvaW50ZXJmYWNlL2RhdGEtZ3JvdXBzJztcbmltcG9ydCB7Z2V0RmllbGRGcm9tRGF0YUdyb3Vwc30gZnJvbSAnLi4vdXRpbGl0eS9nZXQtZmllbGQnO1xuaW1wb3J0IHtFdmVudE91dGNvbWVNZXNzYWdlUmVzb3VyY2V9IGZyb20gJy4uL3Jlc291cmNlcy9pbnRlcmZhY2UvbWVzc2FnZS1yZXNvdXJjZSc7XG5cbi8qKlxuICogU2VydmljZSB0aGF0IG1hbmFnZXMgZmlsdGVycyBjcmVhdGVkIGJ5IHVzZXJzIG9mIHRoZSBhcHBsaWNhdGlvbi5cbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBVc2VyRmlsdGVyc1NlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gICAgcHJvdGVjdGVkIF9pbml0aWFsaXplZCQ6IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj47XG4gICAgcHJvdGVjdGVkIF9maWx0ZXJOZXQ6IE5ldDtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfY2FzZVNlcnZpY2U6IENhc2VSZXNvdXJjZVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF90YXNrU2VydmljZTogVGFza1Jlc291cmNlU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3Byb2Nlc3NTZXJ2aWNlOiBQcm9jZXNzU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2NhbGxDaGFpblNlcnZpY2U6IENhbGxDaGFpblNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9zaWRlTWVudVNlcnZpY2U6IFNpZGVNZW51U2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2xvZzogTG9nZ2VyU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2NhdGVnb3J5UmVzb2x2ZXJTZXJ2aWNlOiBDYXRlZ29yeVJlc29sdmVyU2VydmljZSxcbiAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE5BRV9TQVZFX0ZJTFRFUl9DT01QT05FTlQpIHByb3RlY3RlZCBfc2F2ZUZpbHRlckNvbXBvbmVudDogQ29tcG9uZW50VHlwZTx1bmtub3duPixcbiAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE5BRV9MT0FEX0ZJTFRFUl9DT01QT05FTlQpIHByb3RlY3RlZCBfbG9hZEZpbHRlckNvbXBvbmVudDogQ29tcG9uZW50VHlwZTx1bmtub3duPikge1xuICAgICAgICB0aGlzLl9pbml0aWFsaXplZCQgPSBuZXcgUmVwbGF5U3ViamVjdDxib29sZWFuPigxKTtcbiAgICAgICAgdGhpcy5fcHJvY2Vzc1NlcnZpY2UuZ2V0TmV0KFVzZXJGaWx0ZXJDb25zdGFudHMuRklMVEVSX05FVF9JREVOVElGSUVSKS5zdWJzY3JpYmUobmV0ID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2ZpbHRlck5ldCA9IG5ldDtcbiAgICAgICAgICAgIHRoaXMuX2luaXRpYWxpemVkJC5uZXh0KHRydWUpO1xuICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoYEZpbHRlciBuZXQgY291bGQgbm90IGJlIGxvYWRlZCB3aXRoIGVycm9yYCwgZXJyb3IpO1xuICAgICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZWQkLm5leHQoZmFsc2UpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5pdGlhbGl6ZWQkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVsZXRlcyB0aGUgc3BlY2lmaWVkIGZpbHRlciBjYXNlIGJ5IGl0cyBjYXNlIGlkLlxuICAgICAqIEBwYXJhbSBmaWx0ZXJDYXNlSWQgU3RyaW5nSWQgb2YgdGhlIGZpbHRlciBjYXNlIHRoYXQgc2hvdWxkIGJlIGRlbGV0ZWRcbiAgICAgKiBAcmV0dXJucyBhbiBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgYHRydWVgIGlmIHRoZSBjYXNlIHdhcyBzdWNjZXNzZnVsbHkgZGVsZXRlZCBhbmQgYGZhbHNlYCBvdGhlcndpc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgZGVsZXRlKGZpbHRlckNhc2VJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCQgPSBuZXcgUmVwbGF5U3ViamVjdDxib29sZWFuPigxKTtcbiAgICAgICAgdGhpcy5fY2FzZVNlcnZpY2UuZGVsZXRlQ2FzZShmaWx0ZXJDYXNlSWQpLnN1YnNjcmliZSgocmVzcG9uc2U6IEV2ZW50T3V0Y29tZU1lc3NhZ2VSZXNvdXJjZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZGVidWcoJ0ZpbHRlciBjYXNlIGRlbGV0ZSBzdWNjZXNzJywgcmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgIHJlc3VsdCQubmV4dCh0cnVlKTtcbiAgICAgICAgICAgICAgICByZXN1bHQkLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcignRmlsdGVyIGNhc2UgZGVsZXRlIGZhaWx1cmUnLCByZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgcmVzdWx0JC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICByZXN1bHQkLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIGUgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKCdGaWx0ZXIgY2FzZSBkZWxldGUgZXJyb3InLCBlKTtcbiAgICAgICAgICAgIHJlc3VsdCQubmV4dChmYWxzZSk7XG4gICAgICAgICAgICByZXN1bHQkLmNvbXBsZXRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0JC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPcGVucyBhIHNpZGUgbWVudSB3aXRoIGZpbHRlciBjYXNlcyBhbmQgYWxsb3dzIHRoZSB1c2VyIHRvIHNlbGVjdCBvbmUgb2YgdGhlbS5cbiAgICAgKlxuICAgICAqIFRoZSBkZWZhdWx0IGZpbHRlciBjb25zdHJhaW5zIHRoZSBjYXNlcyB0byBiZSBpbnN0YW5jZXMgb2YgdGhlIGZpbHRlciBwcm9jZXNzIGFuZCB0byBiZSBmaWx0ZXJzIG9mIHRoZSBzcGVjaWZpZWQgdHlwZVxuICAgICAqIChgQ2FzZWAgb3IgYFRhc2tgKS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWx0ZXJUeXBlIHdoZXRoZXIgYENhc2VgIG9yIGBUYXNrYCB1c2VyIGZpbHRlcnMgc2hvdWxkIGJlIGxvYWRlZFxuICAgICAqIEBwYXJhbSBhZGRpdGlvbmFsRmlsdGVyIGFkZGl0aW9uYWwgY29uc3RyYWlucyBvbiB0aGUgZGlzcGxheWVkIHVzZXIgZmlsdGVyIGNhc2VzLiBNdXN0IGJlIG9mIHR5cGUgYENhc2VgXG4gICAgICogb3RoZXJ3aXNlIHRoZSBtZXRob2QgdGhyb3dzIGFuIGVycm9yLiBJZiBpdCBpcyBhIHtAbGluayBNZXJnZWRGaWx0ZXJ9IG11c3QgdXNlIHRoZSBgQU5EYCB7QGxpbmsgTWVyZ2VPcGVyYXRvcn0gb3RoZXJ3aXNlIGFuIGVycm9yXG4gICAgICogd2lsbCBiZSB0aHJvd25cbiAgICAgKiBAcmV0dXJucyBhbiBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIGRhdGEgbmVjZXNzYXJ5IHRvIHJlY29uc3RydWN0IHRoZSBzZWxlY3RlZCBmaWx0ZXIsIG9yIGB1bmRlZmluZWRgIGlmIG5vIGZpbHRlciB3YXMgc2VsZWN0ZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgbG9hZChmaWx0ZXJUeXBlOiBGaWx0ZXJUeXBlLCBhZGRpdGlvbmFsRmlsdGVyPzogRmlsdGVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgaWYgKGFkZGl0aW9uYWxGaWx0ZXI/LnR5cGUgPT09IEZpbHRlclR5cGUuVEFTSykge1xuICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKCdUaGUgYWRkaXRpb25hbCBmaWx0ZXIgYXBwbGllZCB0byBVc2VyRmlsdGVyc1NlcnZpY2UubG9hZCgpIG11c3QgYmUgb2YgdHlwZSBDYXNlJywgYWRkaXRpb25hbEZpbHRlcik7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcignVGhlIGFkZGl0aW9uYWwgZmlsdGVyIGFwcGxpZWQgdG8gVXNlckZpbHRlcnNTZXJ2aWNlLmxvYWQoKSBtdXN0IGJlIG9mIHR5cGUgQ2FzZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGZpbHRlckNhc2VzRmlsdGVyID0gU2ltcGxlRmlsdGVyLmZyb21DYXNlUXVlcnkoe1xuICAgICAgICAgICAgcHJvY2Vzczoge1xuICAgICAgICAgICAgICAgIGlkZW50aWZpZXI6IFVzZXJGaWx0ZXJDb25zdGFudHMuRklMVEVSX05FVF9JREVOVElGSUVSXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcXVlcnk6IGBkYXRhU2V0LiR7VXNlckZpbHRlckNvbnN0YW50cy5GSUxURVJfVFlQRV9GSUVMRF9JRH0ua2V5VmFsdWU6JHtmaWx0ZXJUeXBlfWBcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghIWFkZGl0aW9uYWxGaWx0ZXIpIHtcbiAgICAgICAgICAgIGZpbHRlckNhc2VzRmlsdGVyID0gZmlsdGVyQ2FzZXNGaWx0ZXIubWVyZ2UoYWRkaXRpb25hbEZpbHRlciwgTWVyZ2VPcGVyYXRvci5BTkQpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IFJlcGxheVN1YmplY3Q8YW55PigxKTtcbiAgICAgICAgY29uc3QgcmVmID0gdGhpcy5fc2lkZU1lbnVTZXJ2aWNlLm9wZW4odGhpcy5fbG9hZEZpbHRlckNvbXBvbmVudCwgU2lkZU1lbnVTaXplLkxBUkdFLCB7XG4gICAgICAgICAgICBmaWx0ZXI6IGZpbHRlckNhc2VzRmlsdGVyXG4gICAgICAgIH0gYXMgTG9hZEZpbHRlckluamVjdGlvbkRhdGEpO1xuICAgICAgICByZWYub25DbG9zZS5waXBlKGZpbHRlcihlID0+ICFlLm9wZW5lZCksIHRha2UoMSkpLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICBpZiAoZXZlbnQubWVzc2FnZSA9PT0gJ1NpZGUgbWVudSBjbG9zZWQgdW5leHBlY3RlZGx5Jykge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5uZXh0KCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5uZXh0KGV2ZW50LmRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0LmNvbXBsZXRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNhdmVzIHRoZSBwcmVkaWNhdGUgZmlsdGVyIGNvbnRhaW5lZCBpbiB0aGUgcHJvdmlkZWQge0BsaW5rIFNlYXJjaFNlcnZpY2V9IGluc3RhbmNlLlxuICAgICAqXG4gICAgICogVGhlIGJhc2UgZmlsdGVyIG9mIHRoZSBzZWFyY2ggc2VydmljZSBpcyBub3Qgc2F2ZWQuXG4gICAgICpcbiAgICAgKiBBIG5ldyBmaWx0ZXIgY2FzZSBpcyBjcmVhdGVkIGFuZCB0aGUgbmVjZXNzYXJ5IGZpbHRlciBpbmZvcm1hdGlvbiBpcyBzZXQgaW50byBpdC5cbiAgICAgKlxuICAgICAqIFRoZW4gYSBzaWRlIG1lbnUgd2l0aCB0aGUgZmlsdGVyIGlzIG9wZW5lZCBmb3IgdGhlIHVzZXIgdG8gZW50ZXIgdGhlIG5hbWUgYW5kIG90aGVyIHByb3BlcnRpZXMuXG4gICAgICogVGhlIHVzZXIgY2FuIGNvbmZpcm0gb3IgY2FuY2VsIHRoZSBzYXZlIGJ5IGZpbmlzaGluZyB0aGUgdGFzayBpbiB0aGUgc2lkZSBtZW51LCBvciBieSBjYW5jZWxpbmcvY2xvc2luZy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzZWFyY2hTZXJ2aWNlIHNlYXJjaCBzZXJ2aWNlIGNvbnRhaW5pbmcgYSBwcmVkaWNhdGUgZmlsdGVyLCB3ZSB3YW50IHRvIHNhdmVcbiAgICAgKiBAcGFyYW0gYWxsb3dlZE5ldHMgYWxsb3dlZCBuZXRzIG9mIHRoZSB2aWV3LCB0aGF0IGNvbnRhaW5zIHRoZSBzZWFyY2ggc2VydmljZVxuICAgICAqIEBwYXJhbSBzZWFyY2hDYXRlZ29yaWVzIHNlYXJjaCBjYXRlZ29yaWVzIGF2YWlsYWJsZSBpbiB0aGUgc2F2ZWQgYWR2YW5jZWQgc2VhcmNoIGNvbXBvbmVudFxuICAgICAqIEBwYXJhbSB2aWV3SWQgdGhlIHZpZXdJZCBvZiB0aGUgdmlldyB3aGljaCBjb250YWluZWQgdGhlIGZpbHRlci5cbiAgICAgKiBJZiBuZWl0aGVyIHRoZSBgdmlld0lkYCBub3IgdGhlIGBuYXZpZ2F0aW9uSXRlbVRhc2tEYXRhYCBhdHRyaWJ1dGUgaXMgc2V0IHRoZSBmaWx0ZXIgd2lsbCBiZSBjcmVhdGVkIGFzIGEgbmV3IHJvb3QgZmlsdGVyXG4gICAgICogd2l0aG91dCBhbnkgcGFyZW50IGZpbHRlciBsaW5rLiBUaGlzIHdpbGwgbW9zdCBsaWtlbHkgcmVzdWx0IGluIHRoZSBmaWx0ZXIgYmVpbmcgbGVzcyByZXN0cmljdGl2ZSB0aGFuIHdoYXRcbiAgICAgKiB0aGUgdXNlciBzZWVzIGluIHRoZSBjdXJyZW50IHZpZXcsIHNpbmNlIHRoZSBiYXNlIGZpbHRlciBvZiB0aGUgdmlldyB3aWxsIE5PVCBiZSBzYXZlZCBhbG9uZ3NpZGUgdGhlIHNhdmVkIGZpbHRlci5cbiAgICAgKiBAcGFyYW0gYWRkaXRpb25hbERhdGEgc2V0IGRhdGEgcmVxdWVzdCBib2R5LCB0aGF0IGlzIHNlbnQgdG8gdGhlIGZpbHRlciBpbiBhZGRpdGlvbiB0byB0aGUgZGVmYXVsdCBib2R5LlxuICAgICAqIFRoZSBkZWZhdWx0IGJvZHkgaXMgYXBwbGllZCBmaXJzdCBhbmQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgdGhpcyBhcmd1bWVudC5cbiAgICAgKiBAcGFyYW0gd2l0aERlZmF1bHRDYXRlZ29yaWVzIFdoZXRoZXIgdGhlIHNhdmVkIGZpbHRlciBzaG91bGQgYmUgc2F2ZWQgd2l0aFxuICAgICAqIHRoZSBbZGVmYXVsdFNlYXJjaENhdGVnb3JpZXNde0BsaW5rIEZpbHRlck1ldGFkYXRhI2RlZmF1bHRTZWFyY2hDYXRlZ29yaWVzfSBmbGFnIHNldCB0byBgdHJ1ZWAsIG9yIGBmYWxzZWAuXG4gICAgICogQHBhcmFtIGluaGVyaXRBbGxvd2VkTmV0cyBXaGV0aGVyIHRoZSBzYXZlZCBmaWx0ZXIgc2hvdWxkIG1lcmdlIGl0cyBhbGxvd2VkIG5ldHMgd2l0aCB0aGUgYWxsb3dlZCBuZXRzIHByb3ZpZGVkIGJ5XG4gICAgICogdGhlIHtAbGluayBCYXNlQWxsb3dlZE5ldHNTZXJ2aWNlfS5cbiAgICAgKiBAcGFyYW0gbmF2aWdhdGlvbkl0ZW1UYXNrRGF0YSBpZiBwcm92aWRlZCB0aGVuIGl0IGltcGxpZXMgdGhlIGZpbHRlciBoYXMgYSBwYXJlbnQgZmlsdGVyIHRoYXQgY3JlYXRlZCBpdHMgaG9zdCBkeW5hbWljIHZpZXcuXG4gICAgICogSWYgdGhpcyBpcyB0aGUgY2FzZSB0aGUgY2FzZSBJRCBvZiB0aGUgcGFyZW50IGZpbHRlciB3aWxsIGJlIHNldCBpbnRvIHRoZSBuZXdseSBjcmVhdGVkIGZpbHRlciBjYXNlLlxuICAgICAqIElmIG5vdCBzZXQgaXQgaW1wbGllcyB0aGlzIGlzIGEgZmlsdGVyIG9yaWdpbmF0aW5nIGluIGFuIGluLWFwcCB2aWV3IGFuZCBpdHMgdmlldyBpZCB3aWxsIGJlIHNldCBpbnRvIHRoZSBjcmVhdGVkIGZpbHRlci5cbiAgICAgKiBAcmV0dXJucyBhbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIGlkIG9mIHRoZSBjcmVhdGVkIEZpbHRlciBjYXNlIGluc3RhbmNlIG9yIGB1bmRlZmluZWRgIGlmIHRoZSB1c2VyIGNhbmNlbGVkIHRoZSBzYXZlIHByb2Nlc3MsXG4gICAgICogb3IgdGhlIGZpbHRlciBjb3VsZCBub3QgYmUgc2F2ZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgc2F2ZShzZWFyY2hTZXJ2aWNlOiBTZWFyY2hTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIGFsbG93ZWROZXRzOiBSZWFkb25seUFycmF5PHN0cmluZz4sXG4gICAgICAgICAgICAgICAgc2VhcmNoQ2F0ZWdvcmllczogUmVhZG9ubHlBcnJheTxUeXBlPENhdGVnb3J5PGFueT4+PixcbiAgICAgICAgICAgICAgICB2aWV3SWQ/OiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgYWRkaXRpb25hbERhdGE6IFRhc2tTZXREYXRhUmVxdWVzdEZpZWxkcyA9IHt9LFxuICAgICAgICAgICAgICAgIHdpdGhEZWZhdWx0Q2F0ZWdvcmllcyA9IHRydWUsXG4gICAgICAgICAgICAgICAgaW5oZXJpdEFsbG93ZWROZXRzID0gdHJ1ZSxcbiAgICAgICAgICAgICAgICBuYXZpZ2F0aW9uSXRlbVRhc2tEYXRhOiBBcnJheTxEYXRhR3JvdXA+ID0gbnVsbCk6IE9ic2VydmFibGU8U2F2ZWRGaWx0ZXJNZXRhZGF0YT4ge1xuICAgICAgICBpZiAoIXNlYXJjaFNlcnZpY2UuYWRkaXRpb25hbEZpbHRlcnNBcHBsaWVkKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2cud2FybignVGhlIHByb3ZpZGVkIFNlYXJjaFNlcnZpY2UgY29udGFpbnMgbm8gZmlsdGVyIGJlc2lkZXMgdGhlIGJhc2UgZmlsdGVyLiBOb3RoaW5nIHRvIHNhdmUuJyk7XG4gICAgICAgICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBSZXBsYXlTdWJqZWN0PFNhdmVkRmlsdGVyTWV0YWRhdGE+KDEpO1xuICAgICAgICB0aGlzLmNyZWF0ZUZpbHRlckNhc2VBbmRTZXREYXRhKFxuICAgICAgICAgICAgc2VhcmNoU2VydmljZSxcbiAgICAgICAgICAgIGFsbG93ZWROZXRzLFxuICAgICAgICAgICAgc2VhcmNoQ2F0ZWdvcmllcyxcbiAgICAgICAgICAgIHZpZXdJZCxcbiAgICAgICAgICAgIGFkZGl0aW9uYWxEYXRhLFxuICAgICAgICAgICAgd2l0aERlZmF1bHRDYXRlZ29yaWVzLFxuICAgICAgICAgICAgaW5oZXJpdEFsbG93ZWROZXRzLFxuICAgICAgICAgICAgbmF2aWdhdGlvbkl0ZW1UYXNrRGF0YVxuICAgICAgICApLnN1YnNjcmliZShmaWx0ZXJDYXNlSWQgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVmID0gdGhpcy5fc2lkZU1lbnVTZXJ2aWNlLm9wZW4odGhpcy5fc2F2ZUZpbHRlckNvbXBvbmVudCwgU2lkZU1lbnVTaXplLkxBUkdFLCB7XG4gICAgICAgICAgICAgICAgbmV3RmlsdGVyQ2FzZUlkOiBmaWx0ZXJDYXNlSWRcbiAgICAgICAgICAgIH0gYXMgU2F2ZUZpbHRlckluamVjdGlvbkRhdGEpO1xuICAgICAgICAgICAgcmVmLm9uQ2xvc2UucGlwZShmaWx0ZXIoZSA9PiAhZS5vcGVuZWQpLCB0YWtlKDEpKS5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChldmVudC5tZXNzYWdlID09PSAnU2lkZSBtZW51IGNsb3NlZCB1bmV4cGVjdGVkbHknKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGVsZXRlKGZpbHRlckNhc2VJZCk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5uZXh0KCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm5leHQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyQ2FzZUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dlZE5ldHM6IFsuLi5hbGxvd2VkTmV0c10sXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5WaWV3SWQ6IHZpZXdJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlck1ldGFkYXRhOiB0aGlzLmZpbHRlck1ldGFkYXRhRnJvbVNlYXJjaFNlcnZpY2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hDYXRlZ29yaWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhEZWZhdWx0Q2F0ZWdvcmllcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0QWxsb3dlZE5ldHNcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IFNpbXBsZUZpbHRlci5mcm9tUXVlcnkoe3F1ZXJ5OiBzZWFyY2hTZXJ2aWNlLnJvb3RQcmVkaWNhdGUucXVlcnkudmFsdWV9LCBzZWFyY2hTZXJ2aWNlLmZpbHRlclR5cGUpXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXN1bHQuY29tcGxldGUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTYXZlcyB0aGUgcHJlZGljYXRlIGZpbHRlciBjb250YWluZWQgaW4gdGhlIHByb3ZpZGVkIHtAbGluayBTZWFyY2hTZXJ2aWNlfSBpbnN0YW5jZS5cbiAgICAgKlxuICAgICAqIFRoZSBiYXNlIGZpbHRlciBvZiB0aGUgc2VhcmNoIHNlcnZpY2UgaXMgbm90IHNhdmVkLlxuICAgICAqXG4gICAgICogQSBuZXcgZmlsdGVyIGNhc2UgaXMgY3JlYXRlZCBhbmQgdGhlIG5lY2Vzc2FyeSBmaWx0ZXIgaW5mb3JtYXRpb24gaXMgc2V0IGludG8gaXQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc2VhcmNoU2VydmljZSBzZWFyY2ggc2VydmljZSBjb250YWluaW5nIGEgcHJlZGljYXRlIGZpbHRlciwgd2Ugd2FudCB0byBzYXZlXG4gICAgICogQHBhcmFtIGFsbG93ZWROZXRzIGFsbG93ZWQgbmV0cyBvZiB0aGUgdmlldywgdGhhdCBjb250YWlucyB0aGUgc2VhcmNoIHNlcnZpY2VcbiAgICAgKiBAcGFyYW0gc2VhcmNoQ2F0ZWdvcmllcyBzZWFyY2ggY2F0ZWdvcmllcyBhdmFpbGFibGUgaW4gdGhlIHNhdmVkIGFkdmFuY2VkIHNlYXJjaCBjb21wb25lbnRcbiAgICAgKiBAcGFyYW0gdmlld0lkIHRoZSB2aWV3SWQgb2YgdGhlIHZpZXcgd2hpY2ggY29udGFpbmVkIHRoZSBmaWx0ZXIuXG4gICAgICogSWYgbmVpdGhlciB0aGUgYHZpZXdJZGAgbm9yIHRoZSBgbmF2aWdhdGlvbkl0ZW1UYXNrRGF0YWAgYXR0cmlidXRlIGlzIHNldCB0aGUgZmlsdGVyIHdpbGwgYmUgY3JlYXRlZCBhcyBhIG5ldyByb290IGZpbHRlclxuICAgICAqIHdpdGhvdXQgYW55IHBhcmVudCBmaWx0ZXIgbGluay4gVGhpcyB3aWxsIG1vc3QgbGlrZWx5IHJlc3VsdCBpbiB0aGUgZmlsdGVyIGJlaW5nIGxlc3MgcmVzdHJpY3RpdmUgdGhhbiB3aGF0XG4gICAgICogdGhlIHVzZXIgc2VlcyBpbiB0aGUgY3VycmVudCB2aWV3LCBzaW5jZSB0aGUgYmFzZSBmaWx0ZXIgb2YgdGhlIHZpZXcgd2lsbCBOT1QgYmUgc2F2ZWQgYWxvbmdzaWRlIHRoZSBzYXZlZCBmaWx0ZXIuXG4gICAgICogQHBhcmFtIGFkZGl0aW9uYWxEYXRhIHNldCBkYXRhIHJlcXVlc3QgYm9keSwgdGhhdCBpcyBzZW50IHRvIHRoZSBmaWx0ZXIgaW4gYWRkaXRpb24gdG8gdGhlIGRlZmF1bHQgYm9keS5cbiAgICAgKiBUaGUgZGVmYXVsdCBib2R5IGlzIGFwcGxpZWQgZmlyc3QgYW5kIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoaXMgYXJndW1lbnQuXG4gICAgICogQHBhcmFtIHdpdGhEZWZhdWx0Q2F0ZWdvcmllcyBXaGV0aGVyIHRoZSBzYXZlZCBmaWx0ZXIgc2hvdWxkIGJlIHNhdmVkIHdpdGhcbiAgICAgKiB0aGUgW2RlZmF1bHRTZWFyY2hDYXRlZ29yaWVzXXtAbGluayBGaWx0ZXJNZXRhZGF0YSNkZWZhdWx0U2VhcmNoQ2F0ZWdvcmllc30gZmxhZyBzZXQgdG8gYHRydWVgLCBvciBgZmFsc2VgLlxuICAgICAqIEBwYXJhbSBpbmhlcml0QWxsb3dlZE5ldHMgV2hldGhlciB0aGUgc2F2ZWQgZmlsdGVyIHNob3VsZCBtZXJnZSBpdHMgYWxsb3dlZCBuZXRzIHdpdGggdGhlIGFsbG93ZWQgbmV0cyBwcm92aWRlZCBieVxuICAgICAqIHRoZSB7QGxpbmsgQmFzZUFsbG93ZWROZXRzU2VydmljZX0uXG4gICAgICogQHBhcmFtIG5hdmlnYXRpb25JdGVtVGFza0RhdGEgaWYgcHJvdmlkZWQgdGhlbiBpdCBpbXBsaWVzIHRoZSBmaWx0ZXIgaGFzIGEgcGFyZW50IGZpbHRlciB0aGF0IGNyZWF0ZWQgaXRzIGhvc3QgZHluYW1pYyB2aWV3LlxuICAgICAqIElmIHRoaXMgaXMgdGhlIGNhc2UgdGhlIGNhc2UgSUQgb2YgdGhlIHBhcmVudCBmaWx0ZXIgd2lsbCBiZSBzZXQgaW50byB0aGUgbmV3bHkgY3JlYXRlZCBmaWx0ZXIgY2FzZS5cbiAgICAgKiBJZiBub3Qgc2V0IGl0IGltcGxpZXMgdGhpcyBpcyBhIGZpbHRlciBvcmlnaW5hdGluZyBpbiBhbiBpbi1hcHAgdmlldyBhbmQgaXRzIHZpZXcgaWQgd2lsbCBiZSBzZXQgaW50byB0aGUgY3JlYXRlZCBmaWx0ZXIuXG4gICAgICogQHJldHVybnMgYW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBpZCBvZiB0aGUgY3JlYXRlZCBGaWx0ZXIgY2FzZSBpbnN0YW5jZVxuICAgICAqL1xuICAgIHB1YmxpYyBjcmVhdGVGaWx0ZXJDYXNlQW5kU2V0RGF0YShzZWFyY2hTZXJ2aWNlOiBTZWFyY2hTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2VkTmV0czogUmVhZG9ubHlBcnJheTxzdHJpbmc+LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hDYXRlZ29yaWVzOiBSZWFkb25seUFycmF5PFR5cGU8Q2F0ZWdvcnk8YW55Pj4+LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3SWQ/OiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxEYXRhOiBUYXNrU2V0RGF0YVJlcXVlc3RGaWVsZHMgPSB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aERlZmF1bHRDYXRlZ29yaWVzID0gdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdEFsbG93ZWROZXRzID0gdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGlvbkl0ZW1UYXNrRGF0YTogQXJyYXk8RGF0YUdyb3VwPiA9IG51bGwpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgUmVwbGF5U3ViamVjdDxzdHJpbmc+KDEpO1xuICAgICAgICB0aGlzLndoZW5Jbml0aWFsaXplZCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jYXNlU2VydmljZS5jcmVhdGVDYXNlKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy5fZmlsdGVyTmV0LmRlZmF1bHRDYXNlTmFtZSxcbiAgICAgICAgICAgICAgICBuZXRJZDogdGhpcy5fZmlsdGVyTmV0LnN0cmluZ0lkXG4gICAgICAgICAgICB9KS5zdWJzY3JpYmUoZmlsdGVyQ2FzZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFza1NlcnZpY2UuZ2V0VGFza3MoU2ltcGxlRmlsdGVyLmZyb21UYXNrUXVlcnkoe1xuICAgICAgICAgICAgICAgICAgICBjYXNlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogKGZpbHRlckNhc2Uub3V0Y29tZSBhcyBDcmVhdGVDYXNlRXZlbnRPdXRjb21lKS5hQ2FzZS5zdHJpbmdJZFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSkpLnN1YnNjcmliZShwYWdlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFoYXNDb250ZW50KHBhZ2UpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIGZpbHRlciBwcm9jZXNzIHRvIGNvbnRhaW4gdGFza3MsIGJ1dCBub25lIHdlcmUgZm91bmQhJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbml0VGFzayA9IHBhZ2UuY29udGVudC5maW5kKHRhc2sgPT4gdGFzay50cmFuc2l0aW9uSWQgPT09IFVzZXJGaWx0ZXJDb25zdGFudHMuU0VUX0ZJTFRFUl9NRVRBREFUQV9UUkFOU0lUSU9OX0lEKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluaXRUYXNrID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgZmlsdGVyIHByb2Nlc3MgdG8gY29udGFpbiB0YXNrICcke1VzZXJGaWx0ZXJDb25zdGFudHMuU0VUX0ZJTFRFUl9NRVRBREFUQV9UUkFOU0lUSU9OX0lEXG4gICAgICAgICAgICAgICAgICAgICAgICB9JywgYnV0IG5vbmUgd2FzIGZvdW5kIWApO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdEJvZHkgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBbVXNlckZpbHRlckNvbnN0YW50cy5GSUxURVJfVFlQRV9GSUVMRF9JRF06IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGVSZXNvdXJjZS5FTlVNRVJBVElPTl9NQVAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHNlYXJjaFNlcnZpY2UuZmlsdGVyVHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtVc2VyRmlsdGVyQ29uc3RhbnRzLkZJTFRFUl9GSUVMRF9JRF06IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGVSZXNvdXJjZS5GSUxURVIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHNlYXJjaFNlcnZpY2Uucm9vdFByZWRpY2F0ZS5xdWVyeS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2VkTmV0cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJNZXRhZGF0YTogdGhpcy5maWx0ZXJNZXRhZGF0YUZyb21TZWFyY2hTZXJ2aWNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hDYXRlZ29yaWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoRGVmYXVsdENhdGVnb3JpZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaGVyaXRBbGxvd2VkTmV0c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHBhcmVudEZpbHRlckNhc2VJZEZpZWxkO1xuICAgICAgICAgICAgICAgICAgICBpZiAobmF2aWdhdGlvbkl0ZW1UYXNrRGF0YSAhPT0gbnVsbCAmJiBuYXZpZ2F0aW9uSXRlbVRhc2tEYXRhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudEZpbHRlckNhc2VJZEZpZWxkID0gZ2V0RmllbGRGcm9tRGF0YUdyb3VwcyhuYXZpZ2F0aW9uSXRlbVRhc2tEYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJGaWx0ZXJDb25zdGFudHMuRklMVEVSX0NBU0VfSURfRklFTERfSUQpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudEZpbHRlckNhc2VJZEZpZWxkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RCb2R5W1VzZXJGaWx0ZXJDb25zdGFudHMuUEFSRU5UX0ZJTFRFUl9DQVNFX0lEX0ZJRUxEX0lEXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGVSZXNvdXJjZS5URVhULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBwYXJlbnRGaWx0ZXJDYXNlSWRGaWVsZC52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2aWV3SWQgIT09IHVuZGVmaW5lZCB8fCB2aWV3SWQgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Qm9keVtVc2VyRmlsdGVyQ29uc3RhbnRzLk9SSUdJTl9WSUVXX0lEX0ZJRUxEX0lEXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGVSZXNvdXJjZS5URVhULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2aWV3SWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFzc2lnblNldERhdGFGaW5pc2goaW5pdFRhc2ssIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbml0VGFzay5zdHJpbmdJZF06IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5yZXF1ZXN0Qm9keSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5hZGRpdGlvbmFsRGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLl9jYWxsQ2hhaW5TZXJ2aWNlLmNyZWF0ZShzdWNjZXNzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmlsdGVyIGluc3RhbmNlIGNvdWxkIG5vdCBiZSBpbml0aWFsaXplZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQubmV4dCgoZmlsdGVyQ2FzZS5vdXRjb21lIGFzIENyZWF0ZUNhc2VFdmVudE91dGNvbWUpLmFDYXNlLnN0cmluZ0lkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgJ3NhdmVXaXRoU2lkZU1lbnUnKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgd2hlbkluaXRpYWxpemVkKG9uU3VjY2VzczogKCkgPT4gdm9pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZD86IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRmFpbHVyZTogKCkgPT4gdm9pZCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoYFVzZXJGaWx0ZXJTZXJ2aWNlIGZhaWxlZCB0byBpbml0aWFsaXplIGFuZCB0aGUgY2FsbGVkIG1ldGhvZCR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCA/ICcgKCcgKyBtZXRob2QgKyAnKScgOiAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2Fubm90IGJlIHBlcmZvcm1lZGApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkge1xuICAgICAgICB0aGlzLl9pbml0aWFsaXplZCQuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoaW5pdGlhbGl6ZWQgPT4ge1xuICAgICAgICAgICAgaW5pdGlhbGl6ZWQgPyBvblN1Y2Nlc3MoKSA6IG9uRmFpbHVyZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBUT0RPIDYuNC4yMDIxIElNUFJPVkVNRU5UIC0gZXh0cmFjdCBzaW1pbGFyIG1ldGhvZCBpbnRvIHNvbWUgdXRpbGl0eSBzZXJ2aWNlXG4gICAgcHJvdGVjdGVkIGFzc2lnblNldERhdGFGaW5pc2godGFzazogVGFzaywgZGF0YTogVGFza1NldERhdGFSZXF1ZXN0Qm9keSwgY2FsbENoYWluOiBTdWJqZWN0PGJvb2xlYW4+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Rhc2tTZXJ2aWNlLmFzc2lnblRhc2sodGFzay5zdHJpbmdJZCkuc3Vic2NyaWJlKGFzc2lnbk91dGNvbWUgPT4ge1xuICAgICAgICAgICAgaWYgKGFzc2lnbk91dGNvbWUuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoYENvdWxkIG5vdCBhc3NpZ24gdGFzayAnJHt0YXNrLnRpdGxlfSdgLCB0YXNrLCBhc3NpZ25PdXRjb21lLmVycm9yKTtcbiAgICAgICAgICAgICAgICBjYWxsQ2hhaW4ubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl90YXNrU2VydmljZS5zZXREYXRhKHRhc2suc3RyaW5nSWQsIGRhdGEpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFza1NlcnZpY2UuZmluaXNoVGFzayh0YXNrLnN0cmluZ0lkKS5zdWJzY3JpYmUoZmluaXNoT3V0Y29tZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaW5pc2hPdXRjb21lLmVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoYENvdWxkIG5vdCBmaW5pc2ggdGFzayAnJHt0YXNrLnRpdGxlfSdgLCB0YXNrLCBmaW5pc2hPdXRjb21lLmVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxDaGFpbi5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNhbGxDaGFpbi5uZXh0KHRydWUpO1xuICAgICAgICAgICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKGBDb3VsZCBub3QgZmluaXNoIHRhc2sgJyR7dGFzay50aXRsZX0nYCwgdGFzaywgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICBjYWxsQ2hhaW4ubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKGBDb3VsZCBub3Qgc2V0IGRhdGEgb2YgdGFzayAnJHt0YXNrLnRpdGxlfSdgLCB0YXNrLCBkYXRhLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgY2FsbENoYWluLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcihgQ291bGQgbm90IGFzc2lnbiB0YXNrICcke3Rhc2sudGl0bGV9J2AsIHRhc2ssIGVycm9yKTtcbiAgICAgICAgICAgIGNhbGxDaGFpbi5uZXh0KGZhbHNlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGZpbHRlck1ldGFkYXRhRnJvbVNlYXJjaFNlcnZpY2Uoc2VhcmNoU2VydmljZTogU2VhcmNoU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hDYXRlZ29yaWVzOiBSZWFkb25seUFycmF5PFR5cGU8Q2F0ZWdvcnk8YW55Pj4+LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhEZWZhdWx0Q2F0ZWdvcmllczogYm9vbGVhbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0QWxsb3dlZE5ldHM6IGJvb2xlYW4pOiBGaWx0ZXJNZXRhZGF0YSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmaWx0ZXJUeXBlOiBzZWFyY2hTZXJ2aWNlLmZpbHRlclR5cGUsXG4gICAgICAgICAgICBwcmVkaWNhdGVNZXRhZGF0YTogc2VhcmNoU2VydmljZS5jcmVhdGVQcmVkaWNhdGVNZXRhZGF0YSgpLFxuICAgICAgICAgICAgc2VhcmNoQ2F0ZWdvcmllczogc2VhcmNoQ2F0ZWdvcmllcy5tYXAoYyA9PiB0aGlzLl9jYXRlZ29yeVJlc29sdmVyU2VydmljZS5zZXJpYWxpemUoYykpLFxuICAgICAgICAgICAgZGVmYXVsdFNlYXJjaENhdGVnb3JpZXM6IHdpdGhEZWZhdWx0Q2F0ZWdvcmllcyxcbiAgICAgICAgICAgIGluaGVyaXRBbGxvd2VkTmV0c1xuICAgICAgICB9O1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1pbXBlcnNvbmF0ZS1jb25maWctbWV0YWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL2ltcGVyc29uYXRpb24vbW9kZWxzL3VzZXItaW1wZXJzb25hdGUtY29uZmlnLW1ldGFkYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFVzZXJJbXBlcnNvbmF0ZUNvbmZpZ01ldGFkYXRhIHtcbiAgICBzdHJpbmdJZDogc3RyaW5nXG59XG4iXX0=
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Holds all identifiers of the Impersonation config process in an accessible manner
3
+ */
4
+ export var UserImpersonationConstants;
5
+ (function (UserImpersonationConstants) {
6
+ UserImpersonationConstants["IMPERSONATION_CONFIG_NET_IDENTIFIER"] = "impersonation_config";
7
+ UserImpersonationConstants["IMPERSONATION_CONFIG_FIELD_IMPERSONATED"] = "impersonated";
8
+ UserImpersonationConstants["IMPERSONATION_CONFIG_FIELD_ROLES"] = "impersonated_roles";
9
+ UserImpersonationConstants["IMPERSONATION_CONFIG_FIELD_AUTHS"] = "impersonated_authorities";
10
+ })(UserImpersonationConstants || (UserImpersonationConstants = {}));
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1pbXBlcnNvbmF0aW9uLWNvbnN0YW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvaW1wZXJzb25hdGlvbi9tb2RlbHMvdXNlci1pbXBlcnNvbmF0aW9uLWNvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLDBCQVFYO0FBUkQsV0FBWSwwQkFBMEI7SUFFbEMsMEZBQTRELENBQUE7SUFFNUQsc0ZBQXdELENBQUE7SUFDeEQscUZBQXVELENBQUE7SUFDdkQsMkZBQTZELENBQUE7QUFFakUsQ0FBQyxFQVJXLDBCQUEwQixLQUExQiwwQkFBMEIsUUFRckMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEhvbGRzIGFsbCBpZGVudGlmaWVycyBvZiB0aGUgSW1wZXJzb25hdGlvbiBjb25maWcgcHJvY2VzcyBpbiBhbiBhY2Nlc3NpYmxlIG1hbm5lclxuICovXG5leHBvcnQgZW51bSBVc2VySW1wZXJzb25hdGlvbkNvbnN0YW50cyB7XG5cbiAgICBJTVBFUlNPTkFUSU9OX0NPTkZJR19ORVRfSURFTlRJRklFUiA9ICdpbXBlcnNvbmF0aW9uX2NvbmZpZycsXG5cbiAgICBJTVBFUlNPTkFUSU9OX0NPTkZJR19GSUVMRF9JTVBFUlNPTkFURUQgPSAnaW1wZXJzb25hdGVkJyxcbiAgICBJTVBFUlNPTkFUSU9OX0NPTkZJR19GSUVMRF9ST0xFUyA9ICdpbXBlcnNvbmF0ZWRfcm9sZXMnLFxuICAgIElNUEVSU09OQVRJT05fQ09ORklHX0ZJRUxEX0FVVEhTID0gJ2ltcGVyc29uYXRlZF9hdXRob3JpdGllcycsXG5cbn1cbiJdfQ==
@@ -0,0 +1,9 @@
1
+ /* MODELS */
2
+ export * from './models/user-impersonation-constants';
3
+ export * from './models/user-impersonate-config-metadata';
4
+ /* SERVICES */
5
+ export * from './services/impersonation.service';
6
+ export * from './services/impersonation-user-select.service';
7
+ export * from './services/impersonation-user-list.service';
8
+ export * from './services/impersonation-user-resource.service';
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvaW1wZXJzb25hdGlvbi9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFDWixjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsMkNBQTJDLENBQUM7QUFFMUQsY0FBYztBQUNkLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsZ0RBQWdELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBNT0RFTFMgKi9cbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzL3VzZXItaW1wZXJzb25hdGlvbi1jb25zdGFudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMvdXNlci1pbXBlcnNvbmF0ZS1jb25maWctbWV0YWRhdGEnO1xuXG4vKiBTRVJWSUNFUyAqL1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9pbXBlcnNvbmF0aW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9pbXBlcnNvbmF0aW9uLXVzZXItc2VsZWN0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9pbXBlcnNvbmF0aW9uLXVzZXItbGlzdC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvaW1wZXJzb25hdGlvbi11c2VyLXJlc291cmNlLnNlcnZpY2UnO1xuIl19
@@ -0,0 +1,19 @@
1
+ import { UserListService } from '../../user/services/user-list.service';
2
+ import { Injectable } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./impersonation-user-resource.service";
5
+ import * as i2 from "../../logger/services/logger.service";
6
+ import * as i3 from "../../snack-bar/services/snack-bar.service";
7
+ import * as i4 from "@ngx-translate/core";
8
+ export class ImpersonationUserListService extends UserListService {
9
+ constructor(_resources, _logService, _snackbar, _translate) {
10
+ super(_resources, _logService, _snackbar, _translate);
11
+ this._logService = _logService;
12
+ }
13
+ }
14
+ ImpersonationUserListService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ImpersonationUserListService, deps: [{ token: i1.ImpersonationUserResourceService }, { token: i2.LoggerService }, { token: i3.SnackBarService }, { token: i4.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable });
15
+ ImpersonationUserListService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ImpersonationUserListService });
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ImpersonationUserListService, decorators: [{
17
+ type: Injectable
18
+ }], ctorParameters: function () { return [{ type: i1.ImpersonationUserResourceService }, { type: i2.LoggerService }, { type: i3.SnackBarService }, { type: i4.TranslateService }]; } });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wZXJzb25hdGlvbi11c2VyLWxpc3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvaW1wZXJzb25hdGlvbi9zZXJ2aWNlcy9pbXBlcnNvbmF0aW9uLXVzZXItbGlzdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUN0RSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFPekMsTUFBTSxPQUFPLDRCQUE2QixTQUFRLGVBQWU7SUFFN0QsWUFBWSxVQUE0QyxFQUNsQyxXQUEwQixFQUNwQyxTQUEwQixFQUMxQixVQUE0QjtRQUNwQyxLQUFLLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFIcEMsZ0JBQVcsR0FBWCxXQUFXLENBQWU7SUFJaEQsQ0FBQzs7MEhBUFEsNEJBQTRCOzhIQUE1Qiw0QkFBNEI7NEZBQTVCLDRCQUE0QjtrQkFEeEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VXNlckxpc3RTZXJ2aWNlfSBmcm9tICcuLi8uLi91c2VyL3NlcnZpY2VzL3VzZXItbGlzdC5zZXJ2aWNlJztcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1NuYWNrQmFyU2VydmljZX0gZnJvbSAnLi4vLi4vc25hY2stYmFyL3NlcnZpY2VzL3NuYWNrLWJhci5zZXJ2aWNlJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0xvZ2dlclNlcnZpY2V9IGZyb20gJy4uLy4uL2xvZ2dlci9zZXJ2aWNlcy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQge0ltcGVyc29uYXRpb25Vc2VyUmVzb3VyY2VTZXJ2aWNlfSBmcm9tICcuL2ltcGVyc29uYXRpb24tdXNlci1yZXNvdXJjZS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEltcGVyc29uYXRpb25Vc2VyTGlzdFNlcnZpY2UgZXh0ZW5kcyBVc2VyTGlzdFNlcnZpY2Uge1xuXG4gICAgY29uc3RydWN0b3IoX3Jlc291cmNlczogSW1wZXJzb25hdGlvblVzZXJSZXNvdXJjZVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9sb2dTZXJ2aWNlOiBMb2dnZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIF9zbmFja2JhcjogU25hY2tCYXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoX3Jlc291cmNlcywgX2xvZ1NlcnZpY2UsIF9zbmFja2JhciwgX3RyYW5zbGF0ZSk7XG4gICAgfVxuXG59XG4iXX0=
@@ -0,0 +1,25 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { UserResourceService } from '../../resources/engine-endpoint/user-resource.service';
3
+ import { map } from 'rxjs/operators';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../../resources/resource-provider.service";
6
+ import * as i2 from "../../configuration/configuration.service";
7
+ export class ImpersonationUserResourceService extends UserResourceService {
8
+ constructor(provider, configService) {
9
+ super(provider, configService);
10
+ this._IMPERSONATION_SERVER_URL = this.getResourceAddress('impersonation');
11
+ }
12
+ search(body, params) {
13
+ return this._resourceProvider.post$('/impersonate/search', this._IMPERSONATION_SERVER_URL, { query: body.fulltext }, params)
14
+ .pipe(map((r) => this.getResourcePage(r, 'users')));
15
+ }
16
+ }
17
+ ImpersonationUserResourceService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ImpersonationUserResourceService, deps: [{ token: i1.ResourceProvider }, { token: i2.ConfigurationService }], target: i0.ɵɵFactoryTarget.Injectable });
18
+ ImpersonationUserResourceService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ImpersonationUserResourceService, providedIn: 'root' });
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ImpersonationUserResourceService, decorators: [{
20
+ type: Injectable,
21
+ args: [{
22
+ providedIn: 'root'
23
+ }]
24
+ }], ctorParameters: function () { return [{ type: i1.ResourceProvider }, { type: i2.ConfigurationService }]; } });
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wZXJzb25hdGlvbi11c2VyLXJlc291cmNlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL2ltcGVyc29uYXRpb24vc2VydmljZXMvaW1wZXJzb25hdGlvbi11c2VyLXJlc291cmNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx1REFBdUQsQ0FBQztBQU8xRixPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFLbkMsTUFBTSxPQUFPLGdDQUFpQyxTQUFRLG1CQUFtQjtJQUlyRSxZQUFZLFFBQTBCLEVBQUUsYUFBbUM7UUFDdkUsS0FBSyxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFTSxNQUFNLENBQUMsSUFBd0IsRUFBRSxNQUFlO1FBQ25ELE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMseUJBQXlCLEVBQUUsRUFBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBQyxFQUFFLE1BQU0sQ0FBQzthQUNySCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFlLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUUsQ0FBQzs7OEhBWlEsZ0NBQWdDO2tJQUFoQyxnQ0FBZ0MsY0FGN0IsTUFBTTs0RkFFVCxnQ0FBZ0M7a0JBSDVDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VXNlclJlc291cmNlU2VydmljZX0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2VuZ2luZS1lbmRwb2ludC91c2VyLXJlc291cmNlLnNlcnZpY2UnO1xuaW1wb3J0IHtSZXNvdXJjZVByb3ZpZGVyfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvcmVzb3VyY2UtcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQge0NvbmZpZ3VyYXRpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL2NvbmZpZ3VyYXRpb24uc2VydmljZSc7XG5pbXBvcnQge1BhcmFtc30gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1BhZ2V9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9pbnRlcmZhY2UvcGFnZSc7XG5pbXBvcnQge1VzZXJSZXNvdXJjZX0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2ludGVyZmFjZS91c2VyLXJlc291cmNlJztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgSW1wZXJzb25hdGlvblVzZXJSZXNvdXJjZVNlcnZpY2UgZXh0ZW5kcyBVc2VyUmVzb3VyY2VTZXJ2aWNlIHtcblxuICAgIHByb3RlY3RlZCBfSU1QRVJTT05BVElPTl9TRVJWRVJfVVJMOiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm92aWRlcjogUmVzb3VyY2VQcm92aWRlciwgY29uZmlnU2VydmljZTogQ29uZmlndXJhdGlvblNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIocHJvdmlkZXIsIGNvbmZpZ1NlcnZpY2UpO1xuICAgICAgICB0aGlzLl9JTVBFUlNPTkFUSU9OX1NFUlZFUl9VUkwgPSB0aGlzLmdldFJlc291cmNlQWRkcmVzcygnaW1wZXJzb25hdGlvbicpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZWFyY2goYm9keToge2Z1bGx0ZXh0OiBzdHJpbmd9LCBwYXJhbXM/OiBQYXJhbXMpOiBPYnNlcnZhYmxlPFBhZ2U8VXNlclJlc291cmNlPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VQcm92aWRlci5wb3N0JCgnL2ltcGVyc29uYXRlL3NlYXJjaCcsIHRoaXMuX0lNUEVSU09OQVRJT05fU0VSVkVSX1VSTCwge3F1ZXJ5OiBib2R5LmZ1bGx0ZXh0fSwgcGFyYW1zKVxuICAgICAgICAgICAgLnBpcGUobWFwKChyKSA9PiB0aGlzLmdldFJlc291cmNlUGFnZTxVc2VyUmVzb3VyY2U+KHIsICd1c2VycycpKSk7XG4gICAgfVxufVxuIl19