@netgrif/components-core 6.2.0-rc.9 → 6.2.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 (178) hide show
  1. package/commons/schema.d.ts +3 -0
  2. package/esm2020/assets/i18n/de.json +18 -8
  3. package/esm2020/assets/i18n/en.json +11 -1
  4. package/esm2020/assets/i18n/sk.json +11 -1
  5. package/esm2020/commons/schema.mjs +1 -1
  6. package/esm2020/commons/view-class-info.mjs +9 -1
  7. package/esm2020/lib/admin/public-api.mjs +2 -2
  8. package/esm2020/lib/admin/role-assignment-ldap-group/abstract-ldap-group-role-assignment.component.mjs +88 -0
  9. package/esm2020/lib/authentication/services/methods/basic-authentication/basic-authentication.service.mjs +10 -2
  10. package/esm2020/lib/authorization/permission/access.service.mjs +2 -2
  11. package/esm2020/lib/authorization/role/role-guard.service.mjs +36 -11
  12. package/esm2020/lib/data-fields/button-field/abstract-button-field.component.mjs +2 -12
  13. package/esm2020/lib/data-fields/button-field/models/button-field.mjs +2 -18
  14. package/esm2020/lib/data-fields/enumeration-field/models/dynamic-enumeration-field.mjs +4 -5
  15. package/esm2020/lib/data-fields/enumeration-field/models/enumeration-field.mjs +2 -22
  16. package/esm2020/lib/data-fields/file-field/abstract-file-field.component.mjs +35 -15
  17. package/esm2020/lib/data-fields/file-list-field/abstract-file-list-field.component.mjs +38 -15
  18. package/esm2020/lib/data-fields/i18n-field/abstract-i18n-field.component.mjs +1 -4
  19. package/esm2020/lib/data-fields/models/abstract-data-field.mjs +9 -1
  20. package/esm2020/lib/data-fields/multichoice-field/models/multichoice-field.mjs +2 -17
  21. package/esm2020/lib/data-fields/multichoice-field/multichoice-autocomplete-field/abstract-multichoice-autocomplete-field-component.component.mjs +79 -0
  22. package/esm2020/lib/data-fields/number-field/currency-number-field/abstract-currency-number-field.component.mjs +3 -2
  23. package/esm2020/lib/data-fields/public-api.mjs +4 -1
  24. package/esm2020/lib/data-fields/text-field/models/text-area-field.mjs +4 -5
  25. package/esm2020/lib/data-fields/text-field/models/text-field.mjs +2 -14
  26. package/esm2020/lib/data-fields/user-list-field/abstract-user-list-field.component.mjs +75 -0
  27. package/esm2020/lib/data-fields/user-list-field/models/user-list-field.mjs +11 -0
  28. package/esm2020/lib/data-fields/user-list-field/models/user-list-value.mjs +36 -0
  29. package/esm2020/lib/dialog/components/alert-dialog/alert-dialog.component.mjs +4 -4
  30. package/esm2020/lib/dialog/components/confirm-dialog/confirm-dialog.component.mjs +4 -4
  31. package/esm2020/lib/dialog/components/prompt-dialog/prompt-dialog.component.mjs +4 -4
  32. package/esm2020/lib/dialog/models/abstract-dialog.component.mjs +29 -0
  33. package/esm2020/lib/header/abstract-header-service.mjs +25 -9
  34. package/esm2020/lib/header/abstract-header.component.mjs +7 -5
  35. package/esm2020/lib/header/case-header/case-header.service.mjs +2 -2
  36. package/esm2020/lib/header/services/overflow.service.mjs +2 -2
  37. package/esm2020/lib/header/task-header/task-header.service.mjs +7 -4
  38. package/esm2020/lib/header/workflow-header/workflow-header.service.mjs +11 -8
  39. package/esm2020/lib/navigation/breadcrumbs/abstract-breadcrumbs.component.mjs +69 -0
  40. package/esm2020/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.mjs +7 -4
  41. package/esm2020/lib/navigation/public-api.mjs +2 -1
  42. package/esm2020/lib/navigation/service/uri.service.mjs +5 -1
  43. package/esm2020/lib/panel/abstract/panel-with-header-binding.mjs +17 -5
  44. package/esm2020/lib/panel/abstract/panel-with-immediate-data.mjs +52 -22
  45. package/esm2020/lib/panel/abstract-panel.component.mjs +16 -4
  46. package/esm2020/lib/panel/case-panel/abstract-case-panel.component.mjs +13 -11
  47. package/esm2020/lib/panel/configuration/config-params.mjs +5 -0
  48. package/esm2020/lib/panel/public-api.mjs +3 -1
  49. package/esm2020/lib/panel/task-panel/abstract-task-panel.component.mjs +18 -12
  50. package/esm2020/lib/panel/task-panel-list/abstract-task-list.component.mjs +3 -3
  51. package/esm2020/lib/panel/task-panel-list/default-task-panel-list/abstract-default-task-list.component.mjs +94 -0
  52. package/esm2020/lib/panel/task-panel-list/task-panel-list-pagination/abstract-task-list-pagination.component.mjs +3 -3
  53. package/esm2020/lib/panel/workflow-panel/abstract-workflow-panel.component.mjs +40 -6
  54. package/esm2020/lib/public/factories/public-factory-resolver.mjs +8 -3
  55. package/esm2020/lib/resources/engine-endpoint/petri-net-resource.service.mjs +12 -4
  56. package/esm2020/lib/resources/engine-endpoint/public/public-task-resource.service.mjs +1 -40
  57. package/esm2020/lib/resources/engine-endpoint/task-resource.service.mjs +6 -3
  58. package/esm2020/lib/resources/interface/fields.mjs +1 -1
  59. package/esm2020/lib/routing/redirect-service/redirect.service.mjs +2 -1
  60. package/esm2020/lib/search/models/category/case/case-dataset.mjs +7 -4
  61. package/esm2020/lib/search/search-operand-input-component/abstract-search-operand-input.component.mjs +3 -3
  62. package/esm2020/lib/side-menu/content-components/new-case/abstract-new-case.component.mjs +22 -11
  63. package/esm2020/lib/side-menu/content-components/new-case/model/new-case-injection-data.mjs +1 -1
  64. package/esm2020/lib/side-menu/content-components/save-filter/abstract-save-filter.component.mjs +8 -7
  65. package/esm2020/lib/side-menu/content-components/user-assign/abstract-user-assign.component.mjs +1 -1
  66. package/esm2020/lib/side-menu/content-components/user-assign/model/user-list-injected-data.mjs +1 -1
  67. package/esm2020/lib/snack-bar/components/error-snack-bar/error-snack-bar.component.mjs +3 -3
  68. package/esm2020/lib/snack-bar/components/generic-snack-bar/generic-snack-bar.component.mjs +3 -3
  69. package/esm2020/lib/snack-bar/components/success-snack-bar/success-snack-bar.component.mjs +3 -3
  70. package/esm2020/lib/snack-bar/components/warning-snack-bar/warning-snack-bar.component.mjs +3 -3
  71. package/esm2020/lib/snack-bar/models/abstract-snack-bar.component.mjs +26 -0
  72. package/esm2020/lib/snack-bar/public-api.mjs +2 -2
  73. package/esm2020/lib/task/services/finish-policy.service.mjs +2 -2
  74. package/esm2020/lib/task/services/task-data.service.mjs +51 -13
  75. package/esm2020/lib/task-content/model/field-type-resource.mjs +2 -1
  76. package/esm2020/lib/task-content/model/resource-interface.mjs +1 -1
  77. package/esm2020/lib/task-content/services/field-converter.service.mjs +28 -90
  78. package/esm2020/lib/task-content/services/task-content.service.mjs +5 -2
  79. package/esm2020/lib/view/abstract/view-with-headers.mjs +13 -4
  80. package/esm2020/lib/view/case-view/abstract-case-view.mjs +9 -12
  81. package/esm2020/lib/view/case-view/components/case-list/abstract-case-list.component.mjs +3 -3
  82. package/esm2020/lib/view/case-view/components/case-list-paginator/abstract-case-list-paginator.component.mjs +3 -3
  83. package/esm2020/lib/view/case-view/components/default-case-list/abstract-default-case-list.component.mjs +81 -0
  84. package/esm2020/lib/view/case-view/tabbed-case-view.mjs +7 -14
  85. package/esm2020/lib/view/task-view/abstract-single-task-view.component.mjs +3 -4
  86. package/esm2020/lib/view/task-view/abstract-task-view.mjs +6 -5
  87. package/esm2020/lib/view/task-view/tabbed-task-view.mjs +6 -5
  88. package/esm2020/lib/view/tree-case-view/tree-component/case-tree.service.mjs +6 -4
  89. package/esm2020/lib/view/workflow-view/abstract-workflow-view.component.mjs +6 -5
  90. package/fesm2015/netgrif-components-core.mjs +1010 -611
  91. package/fesm2015/netgrif-components-core.mjs.map +1 -1
  92. package/fesm2020/netgrif-components-core.mjs +996 -616
  93. package/fesm2020/netgrif-components-core.mjs.map +1 -1
  94. package/lib/admin/public-api.d.ts +1 -1
  95. package/lib/admin/role-assignment-ldap-group/{abstract-ldap-group-role-assignment.d.ts → abstract-ldap-group-role-assignment.component.d.ts} +3 -3
  96. package/lib/authentication/services/methods/basic-authentication/basic-authentication.service.d.ts +2 -0
  97. package/lib/authorization/role/role-guard.service.d.ts +2 -1
  98. package/lib/data-fields/button-field/abstract-button-field.component.d.ts +0 -5
  99. package/lib/data-fields/button-field/models/button-field.d.ts +1 -12
  100. package/lib/data-fields/enumeration-field/models/dynamic-enumeration-field.d.ts +2 -3
  101. package/lib/data-fields/enumeration-field/models/enumeration-field.d.ts +1 -11
  102. package/lib/data-fields/i18n-field/abstract-i18n-field.component.d.ts +0 -1
  103. package/lib/data-fields/models/abstract-data-field.d.ts +5 -0
  104. package/lib/data-fields/multichoice-field/models/multichoice-field.d.ts +1 -8
  105. package/lib/data-fields/multichoice-field/multichoice-autocomplete-field/abstract-multichoice-autocomplete-field-component.component.d.ts +24 -0
  106. package/lib/data-fields/number-field/currency-number-field/abstract-currency-number-field.component.d.ts +1 -0
  107. package/lib/data-fields/public-api.d.ts +3 -0
  108. package/lib/data-fields/text-field/models/text-area-field.d.ts +2 -3
  109. package/lib/data-fields/text-field/models/text-field.d.ts +1 -9
  110. package/lib/data-fields/user-list-field/abstract-user-list-field.component.d.ts +38 -0
  111. package/lib/data-fields/user-list-field/models/user-list-field.d.ts +10 -0
  112. package/lib/data-fields/user-list-field/models/user-list-value.d.ts +16 -0
  113. package/lib/dialog/components/alert-dialog/alert-dialog.component.d.ts +3 -3
  114. package/lib/dialog/components/confirm-dialog/confirm-dialog.component.d.ts +3 -3
  115. package/lib/dialog/components/prompt-dialog/prompt-dialog.component.d.ts +3 -3
  116. package/lib/dialog/models/{abstract-dialog.d.ts → abstract-dialog.component.d.ts} +3 -3
  117. package/lib/header/abstract-header-service.d.ts +6 -3
  118. package/lib/header/abstract-header.component.d.ts +2 -2
  119. package/lib/header/services/overflow.service.d.ts +1 -1
  120. package/lib/header/task-header/task-header.service.d.ts +3 -2
  121. package/lib/header/workflow-header/workflow-header.service.d.ts +3 -2
  122. package/lib/navigation/breadcrumbs/abstract-breadcrumbs.component.d.ts +18 -0
  123. package/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.d.ts +1 -1
  124. package/lib/navigation/public-api.d.ts +1 -0
  125. package/lib/navigation/service/uri.service.d.ts +2 -0
  126. package/lib/panel/abstract/panel-with-header-binding.d.ts +5 -2
  127. package/lib/panel/abstract/panel-with-immediate-data.d.ts +4 -2
  128. package/lib/panel/abstract-panel.component.d.ts +5 -1
  129. package/lib/panel/case-panel/abstract-case-panel.component.d.ts +3 -3
  130. package/lib/panel/configuration/config-params.d.ts +3 -0
  131. package/lib/panel/public-api.d.ts +1 -0
  132. package/lib/panel/task-panel/abstract-task-panel.component.d.ts +5 -2
  133. package/lib/panel/task-panel-list/abstract-task-list.component.d.ts +2 -2
  134. package/lib/panel/task-panel-list/default-task-panel-list/{abstract-default-task-list.d.ts → abstract-default-task-list.component.d.ts} +3 -3
  135. package/lib/panel/task-panel-list/task-panel-list-pagination/abstract-task-list-pagination.component.d.ts +2 -2
  136. package/lib/panel/workflow-panel/abstract-workflow-panel.component.d.ts +13 -2
  137. package/lib/public/factories/public-factory-resolver.d.ts +2 -1
  138. package/lib/resources/engine-endpoint/petri-net-resource.service.d.ts +1 -1
  139. package/lib/resources/engine-endpoint/public/public-task-resource.service.d.ts +0 -12
  140. package/lib/resources/engine-endpoint/task-resource.service.d.ts +2 -1
  141. package/lib/resources/interface/fields.d.ts +0 -5
  142. package/lib/search/search-operand-input-component/abstract-search-operand-input.component.d.ts +1 -1
  143. package/lib/side-menu/content-components/new-case/model/new-case-injection-data.d.ts +5 -0
  144. package/lib/side-menu/content-components/save-filter/abstract-save-filter.component.d.ts +2 -1
  145. package/lib/side-menu/content-components/user-assign/model/user-list-injected-data.d.ts +2 -1
  146. package/lib/snack-bar/components/error-snack-bar/error-snack-bar.component.d.ts +2 -2
  147. package/lib/snack-bar/components/generic-snack-bar/generic-snack-bar.component.d.ts +2 -2
  148. package/lib/snack-bar/components/success-snack-bar/success-snack-bar.component.d.ts +2 -2
  149. package/lib/snack-bar/components/warning-snack-bar/warning-snack-bar.component.d.ts +2 -2
  150. package/lib/snack-bar/models/{abstract-snack-bar.d.ts → abstract-snack-bar.component.d.ts} +3 -3
  151. package/lib/snack-bar/public-api.d.ts +1 -1
  152. package/lib/task/services/task-data.service.d.ts +12 -3
  153. package/lib/task-content/model/field-type-resource.d.ts +1 -0
  154. package/lib/task-content/model/resource-interface.d.ts +0 -3
  155. package/lib/task-content/services/field-converter.service.d.ts +3 -16
  156. package/lib/task-content/services/task-content.service.d.ts +1 -0
  157. package/lib/view/abstract/view-with-headers.d.ts +5 -1
  158. package/lib/view/case-view/abstract-case-view.d.ts +5 -3
  159. package/lib/view/case-view/components/case-list/abstract-case-list.component.d.ts +2 -2
  160. package/lib/view/case-view/components/case-list-paginator/abstract-case-list-paginator.component.d.ts +2 -2
  161. package/lib/view/case-view/components/default-case-list/{abstract-default-case-list.d.ts → abstract-default-case-list.component.d.ts} +3 -3
  162. package/lib/view/case-view/tabbed-case-view.d.ts +4 -4
  163. package/lib/view/task-view/abstract-single-task-view.component.d.ts +0 -1
  164. package/lib/view/task-view/abstract-task-view.d.ts +2 -1
  165. package/lib/view/task-view/tabbed-task-view.d.ts +2 -1
  166. package/lib/view/workflow-view/abstract-workflow-view.component.d.ts +2 -1
  167. package/package.json +1 -2
  168. package/schematics/_commons/view-class-info.js +8 -0
  169. package/schematics/_commons/view-class-info.js.map +1 -1
  170. package/src/assets/i18n/de.json +18 -8
  171. package/src/assets/i18n/en.json +11 -1
  172. package/src/assets/i18n/sk.json +11 -1
  173. package/src/schema/nae-schema.json +6 -0
  174. package/esm2020/lib/admin/role-assignment-ldap-group/abstract-ldap-group-role-assignment.mjs +0 -88
  175. package/esm2020/lib/dialog/models/abstract-dialog.mjs +0 -29
  176. package/esm2020/lib/panel/task-panel-list/default-task-panel-list/abstract-default-task-list.mjs +0 -94
  177. package/esm2020/lib/snack-bar/models/abstract-snack-bar.mjs +0 -26
  178. package/esm2020/lib/view/case-view/components/default-case-list/abstract-default-case-list.mjs +0 -81
@@ -0,0 +1,75 @@
1
+ import { Component, Inject, Input, Optional } from '@angular/core';
2
+ import { AbstractDataFieldComponent } from '../models/abstract-data-field-component';
3
+ import { NAE_INFORM_ABOUT_INVALID_DATA } from '../models/invalid-data-policy-token';
4
+ import { SideMenuSize } from '../../side-menu/models/side-menu-size';
5
+ import { UserListValue } from './models/user-list-value';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../../side-menu/services/side-menu.service";
8
+ import * as i2 from "../../snack-bar/services/snack-bar.service";
9
+ import * as i3 from "@ngx-translate/core";
10
+ export class AbstractUserListFieldComponent extends AbstractDataFieldComponent {
11
+ /**
12
+ * Inject services.
13
+ * @param _sideMenuService Service to open and close [UserAssignComponent]{@link AbstractUserAssignComponent} with user data.
14
+ * @param _snackbar Service to displaying information to the user.
15
+ * @param _translate Service to translate text.
16
+ * @param informAboutInvalidData whether the backend should be notified about invalid values.
17
+ * Option injected trough `NAE_INFORM_ABOUT_INVALID_DATA` InjectionToken
18
+ */
19
+ constructor(_sideMenuService, _snackbar, _translate, informAboutInvalidData) {
20
+ super(informAboutInvalidData);
21
+ this._sideMenuService = _sideMenuService;
22
+ this._snackbar = _snackbar;
23
+ this._translate = _translate;
24
+ }
25
+ ngOnInit() {
26
+ super.ngOnInit();
27
+ }
28
+ /**
29
+ * Call after click on user field button.
30
+ *
31
+ * Open [UserAssignComponent]{@link AbstractUserAssignComponent} in side menu with data represents preselected user from backend.
32
+ *
33
+ * After close side menu, the snackbar info will be displayed either for the unselected user or the selected one.
34
+ */
35
+ selectAbstractUser(component) {
36
+ let valueReturned = false;
37
+ this._sideMenuService.open(component, SideMenuSize.MEDIUM, { value: this.dataField.value }).onClose.subscribe($event => {
38
+ if ($event.data) {
39
+ const existingValue = new UserListValue([]);
40
+ if (!!this.dataField.value) {
41
+ existingValue.addUserValues(this.dataField.value.userValues);
42
+ }
43
+ existingValue.addUserValue($event.data);
44
+ this.dataField.value = existingValue;
45
+ this._snackbar.openGenericSnackBar(this._translate.instant('dataField.snackBar.userAssigned', { userName: this.dataField.value.getLast().fullName }), 'how_to_reg');
46
+ valueReturned = true;
47
+ }
48
+ else if (!valueReturned) {
49
+ this._snackbar.openWarningSnackBar(this._translate.instant('dataField.snackBar.notSelectedUser'));
50
+ }
51
+ });
52
+ }
53
+ removeAbstractUser(user) {
54
+ const existingUsers = new UserListValue([...this.dataField.value.userValues]);
55
+ existingUsers.removeUserValue(user);
56
+ this.dataField.value = existingUsers;
57
+ }
58
+ }
59
+ AbstractUserListFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AbstractUserListFieldComponent, deps: [{ token: i1.SideMenuService }, { token: i2.SnackBarService }, { token: i3.TranslateService }, { token: NAE_INFORM_ABOUT_INVALID_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
60
+ AbstractUserListFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: AbstractUserListFieldComponent, selector: "ncc-abstract-user-list-field", inputs: { dataField: "dataField" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
61
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AbstractUserListFieldComponent, decorators: [{
62
+ type: Component,
63
+ args: [{
64
+ selector: 'ncc-abstract-user-list-field',
65
+ template: '',
66
+ }]
67
+ }], ctorParameters: function () { return [{ type: i1.SideMenuService }, { type: i2.SnackBarService }, { type: i3.TranslateService }, { type: undefined, decorators: [{
68
+ type: Optional
69
+ }, {
70
+ type: Inject,
71
+ args: [NAE_INFORM_ABOUT_INVALID_DATA]
72
+ }] }]; }, propDecorators: { dataField: [{
73
+ type: Input
74
+ }] } });
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtdXNlci1saXN0LWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvZGF0YS1maWVsZHMvdXNlci1saXN0LWZpZWxkL2Fic3RyYWN0LXVzZXItbGlzdC1maWVsZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUlyRixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFJckUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7OztBQU16RCxNQUFNLE9BQWdCLDhCQUFnQyxTQUFRLDBCQUEwQjtJQU1wRjs7Ozs7OztPQU9HO0lBQ0gsWUFBZ0MsZ0JBQWlDLEVBQ2pDLFNBQTBCLEVBQzFCLFVBQTRCLEVBQ2Esc0JBQXNDO1FBQzNHLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBSkYscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUNqQyxjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQUMxQixlQUFVLEdBQVYsVUFBVSxDQUFrQjtJQUc1RCxDQUFDO0lBRUQsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksa0JBQWtCLENBQUMsU0FBUztRQUMvQixJQUFJLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLE1BQU0sRUFDckQsRUFBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQXlCLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2xGLElBQUksTUFBTSxDQUFDLElBQUksRUFBRTtnQkFDYixNQUFNLGFBQWEsR0FBRyxJQUFJLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDNUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUU7b0JBQ3hCLGFBQWEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUE7aUJBQy9EO2dCQUNELGFBQWEsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQWlCLENBQUMsQ0FBQztnQkFDckQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsYUFBYSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxpQ0FBaUMsRUFDekQsRUFBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFDLENBQUMsRUFDcEQsWUFBWSxDQUNmLENBQUM7Z0JBQ0YsYUFBYSxHQUFHLElBQUksQ0FBQzthQUN4QjtpQkFBTSxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLG9DQUFvQyxDQUFDLENBQUMsQ0FBQzthQUNyRztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLGtCQUFrQixDQUFDLElBQWU7UUFDckMsTUFBTSxhQUFhLEdBQUcsSUFBSSxhQUFhLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDOUUsYUFBYSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxhQUFhLENBQUM7SUFDekMsQ0FBQzs7NEhBM0RpQiw4QkFBOEIsZ0hBaUJOLDZCQUE2QjtnSEFqQnJELDhCQUE4QiwrSEFGeEMsRUFBRTs0RkFFUSw4QkFBOEI7a0JBSm5ELFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDhCQUE4QjtvQkFDeEMsUUFBUSxFQUFFLEVBQUU7aUJBQ2I7OzBCQWtCMEIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyw2QkFBNkI7NENBYnZELFNBQVM7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgSW5wdXQsIE9uSW5pdCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0RGF0YUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vbW9kZWxzL2Fic3RyYWN0LWRhdGEtZmllbGQtY29tcG9uZW50JztcbmltcG9ydCB7IFNpZGVNZW51U2VydmljZSB9IGZyb20gJy4uLy4uL3NpZGUtbWVudS9zZXJ2aWNlcy9zaWRlLW1lbnUuc2VydmljZSc7XG5pbXBvcnQgeyBTbmFja0JhclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zbmFjay1iYXIvc2VydmljZXMvc25hY2stYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTkFFX0lORk9STV9BQk9VVF9JTlZBTElEX0RBVEEgfSBmcm9tICcuLi9tb2RlbHMvaW52YWxpZC1kYXRhLXBvbGljeS10b2tlbic7XG5pbXBvcnQgeyBTaWRlTWVudVNpemUgfSBmcm9tICcuLi8uLi9zaWRlLW1lbnUvbW9kZWxzL3NpZGUtbWVudS1zaXplJztcbmltcG9ydCB7IFVzZXJMaXN0SW5qZWN0ZWREYXRhIH0gZnJvbSAnLi4vLi4vc2lkZS1tZW51L2NvbnRlbnQtY29tcG9uZW50cy91c2VyLWFzc2lnbi9tb2RlbC91c2VyLWxpc3QtaW5qZWN0ZWQtZGF0YSc7XG5pbXBvcnQgeyBVc2VyVmFsdWUgfSBmcm9tICcuLi91c2VyLWZpZWxkL21vZGVscy91c2VyLXZhbHVlJztcbmltcG9ydCB7IFVzZXJMaXN0RmllbGQgfSBmcm9tICcuL21vZGVscy91c2VyLWxpc3QtZmllbGQnO1xuaW1wb3J0IHsgVXNlckxpc3RWYWx1ZSB9IGZyb20gJy4vbW9kZWxzL3VzZXItbGlzdC12YWx1ZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25jYy1hYnN0cmFjdC11c2VyLWxpc3QtZmllbGQnLFxuICB0ZW1wbGF0ZTogJycsXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0VXNlckxpc3RGaWVsZENvbXBvbmVudCAgZXh0ZW5kcyBBYnN0cmFjdERhdGFGaWVsZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyBpbmZvIGFib3V0IHVzZXIgZnJvbSBiYWNrZW5kLlxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBkYXRhRmllbGQ6IFVzZXJMaXN0RmllbGQ7XG5cbiAgICAvKipcbiAgICAgKiBJbmplY3Qgc2VydmljZXMuXG4gICAgICogQHBhcmFtIF9zaWRlTWVudVNlcnZpY2UgU2VydmljZSB0byBvcGVuIGFuZCBjbG9zZSBbVXNlckFzc2lnbkNvbXBvbmVudF17QGxpbmsgQWJzdHJhY3RVc2VyQXNzaWduQ29tcG9uZW50fSB3aXRoIHVzZXIgZGF0YS5cbiAgICAgKiBAcGFyYW0gX3NuYWNrYmFyIFNlcnZpY2UgdG8gZGlzcGxheWluZyBpbmZvcm1hdGlvbiB0byB0aGUgdXNlci5cbiAgICAgKiBAcGFyYW0gX3RyYW5zbGF0ZSBTZXJ2aWNlIHRvIHRyYW5zbGF0ZSB0ZXh0LlxuICAgICAqIEBwYXJhbSBpbmZvcm1BYm91dEludmFsaWREYXRhIHdoZXRoZXIgdGhlIGJhY2tlbmQgc2hvdWxkIGJlIG5vdGlmaWVkIGFib3V0IGludmFsaWQgdmFsdWVzLlxuICAgICAqIE9wdGlvbiBpbmplY3RlZCB0cm91Z2ggYE5BRV9JTkZPUk1fQUJPVVRfSU5WQUxJRF9EQVRBYCBJbmplY3Rpb25Ub2tlblxuICAgICAqL1xuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX3NpZGVNZW51U2VydmljZTogU2lkZU1lbnVTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3NuYWNrYmFyOiBTbmFja0JhclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE5BRV9JTkZPUk1fQUJPVVRfSU5WQUxJRF9EQVRBKSBpbmZvcm1BYm91dEludmFsaWREYXRhOiBib29sZWFuIHwgbnVsbCkge1xuICAgICAgICBzdXBlcihpbmZvcm1BYm91dEludmFsaWREYXRhKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxsIGFmdGVyIGNsaWNrIG9uIHVzZXIgZmllbGQgYnV0dG9uLlxuICAgICAqXG4gICAgICogT3BlbiBbVXNlckFzc2lnbkNvbXBvbmVudF17QGxpbmsgQWJzdHJhY3RVc2VyQXNzaWduQ29tcG9uZW50fSBpbiBzaWRlIG1lbnUgd2l0aCBkYXRhIHJlcHJlc2VudHMgcHJlc2VsZWN0ZWQgdXNlciBmcm9tIGJhY2tlbmQuXG4gICAgICpcbiAgICAgKiBBZnRlciBjbG9zZSBzaWRlIG1lbnUsIHRoZSBzbmFja2JhciBpbmZvIHdpbGwgYmUgZGlzcGxheWVkIGVpdGhlciBmb3IgdGhlIHVuc2VsZWN0ZWQgdXNlciBvciB0aGUgc2VsZWN0ZWQgb25lLlxuICAgICAqL1xuICAgIHB1YmxpYyBzZWxlY3RBYnN0cmFjdFVzZXIoY29tcG9uZW50KSB7XG4gICAgICAgIGxldCB2YWx1ZVJldHVybmVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3NpZGVNZW51U2VydmljZS5vcGVuKGNvbXBvbmVudCwgU2lkZU1lbnVTaXplLk1FRElVTSxcbiAgICAgICAgICAgIHt2YWx1ZTogdGhpcy5kYXRhRmllbGQudmFsdWV9IGFzIFVzZXJMaXN0SW5qZWN0ZWREYXRhKS5vbkNsb3NlLnN1YnNjcmliZSgkZXZlbnQgPT4ge1xuICAgICAgICAgICAgaWYgKCRldmVudC5kYXRhKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdWYWx1ZSA9IG5ldyBVc2VyTGlzdFZhbHVlKFtdKTtcbiAgICAgICAgICAgICAgICBpZiAoISF0aGlzLmRhdGFGaWVsZC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBleGlzdGluZ1ZhbHVlLmFkZFVzZXJWYWx1ZXModGhpcy5kYXRhRmllbGQudmFsdWUudXNlclZhbHVlcylcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZXhpc3RpbmdWYWx1ZS5hZGRVc2VyVmFsdWUoJGV2ZW50LmRhdGEgYXMgVXNlclZhbHVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC52YWx1ZSA9IGV4aXN0aW5nVmFsdWU7XG4gICAgICAgICAgICAgICAgdGhpcy5fc25hY2tiYXIub3BlbkdlbmVyaWNTbmFja0JhcihcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ2RhdGFGaWVsZC5zbmFja0Jhci51c2VyQXNzaWduZWQnLFxuICAgICAgICAgICAgICAgICAgICB7dXNlck5hbWU6IHRoaXMuZGF0YUZpZWxkLnZhbHVlLmdldExhc3QoKS5mdWxsTmFtZX0pLFxuICAgICAgICAgICAgICAgICAgICAnaG93X3RvX3JlZydcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHZhbHVlUmV0dXJuZWQgPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghdmFsdWVSZXR1cm5lZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NuYWNrYmFyLm9wZW5XYXJuaW5nU25hY2tCYXIodGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ2RhdGFGaWVsZC5zbmFja0Jhci5ub3RTZWxlY3RlZFVzZXInKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVBYnN0cmFjdFVzZXIodXNlcjogVXNlclZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nVXNlcnMgPSBuZXcgVXNlckxpc3RWYWx1ZShbLi4udGhpcy5kYXRhRmllbGQudmFsdWUudXNlclZhbHVlc10pO1xuICAgICAgICBleGlzdGluZ1VzZXJzLnJlbW92ZVVzZXJWYWx1ZSh1c2VyKTtcbiAgICAgICAgdGhpcy5kYXRhRmllbGQudmFsdWUgPSBleGlzdGluZ1VzZXJzO1xuICAgIH1cblxufVxuIl19
@@ -0,0 +1,11 @@
1
+ import { DataField } from '../../models/abstract-data-field';
2
+ export class UserListField extends DataField {
3
+ constructor(stringId, title, behavior, value, placeholder, description, layout, validations, component, parentTaskId) {
4
+ super(stringId, title, value, behavior, placeholder, description, layout, validations, component, parentTaskId);
5
+ }
6
+ valueEquality(a, b) {
7
+ return (!a && !b) ||
8
+ (!!a && !!b && a.userValues.length === b.userValues.length);
9
+ }
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1saXN0LWZpZWxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9kYXRhLWZpZWxkcy91c2VyLWxpc3QtZmllbGQvbW9kZWxzL3VzZXItbGlzdC1maWVsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFPN0QsTUFBTSxPQUFPLGFBQWMsU0FBUSxTQUF3QjtJQUV2RCxZQUFZLFFBQWdCLEVBQUUsS0FBYSxFQUFFLFFBQWtCLEVBQUUsS0FBb0IsRUFDekUsV0FBb0IsRUFBRSxXQUFvQixFQUFFLE1BQWUsRUFBRSxXQUErQixFQUFFLFNBQXFCLEVBQ25ILFlBQXFCO1FBQzdCLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUNwSCxDQUFDO0lBRVMsYUFBYSxDQUFDLENBQWdCLEVBQUUsQ0FBZ0I7UUFDdEQsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ2IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwRSxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRhRmllbGQgfSBmcm9tICcuLi8uLi9tb2RlbHMvYWJzdHJhY3QtZGF0YS1maWVsZCc7XG5pbXBvcnQgeyBCZWhhdmlvciB9IGZyb20gJy4uLy4uL21vZGVscy9iZWhhdmlvcic7XG5pbXBvcnQgeyBMYXlvdXQgfSBmcm9tICcuLi8uLi9tb2RlbHMvbGF5b3V0JztcbmltcG9ydCB7IFZhbGlkYXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvdmFsaWRhdGlvbic7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2RlbHMvY29tcG9uZW50JztcbmltcG9ydCB7IFVzZXJMaXN0VmFsdWUgfSBmcm9tICcuL3VzZXItbGlzdC12YWx1ZSc7XG5cbmV4cG9ydCBjbGFzcyBVc2VyTGlzdEZpZWxkIGV4dGVuZHMgRGF0YUZpZWxkPFVzZXJMaXN0VmFsdWU+IHtcblxuICAgIGNvbnN0cnVjdG9yKHN0cmluZ0lkOiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcsIGJlaGF2aW9yOiBCZWhhdmlvciwgdmFsdWU6IFVzZXJMaXN0VmFsdWUsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI/OiBzdHJpbmcsIGRlc2NyaXB0aW9uPzogc3RyaW5nLCBsYXlvdXQ/OiBMYXlvdXQsIHZhbGlkYXRpb25zPzogQXJyYXk8VmFsaWRhdGlvbj4sIGNvbXBvbmVudD86IENvbXBvbmVudCxcbiAgICAgICAgICAgICAgICBwYXJlbnRUYXNrSWQ/OiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIoc3RyaW5nSWQsIHRpdGxlLCB2YWx1ZSwgYmVoYXZpb3IsIHBsYWNlaG9sZGVyLCBkZXNjcmlwdGlvbiwgbGF5b3V0LCB2YWxpZGF0aW9ucywgY29tcG9uZW50LCBwYXJlbnRUYXNrSWQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB2YWx1ZUVxdWFsaXR5KGE6IFVzZXJMaXN0VmFsdWUsIGI6IFVzZXJMaXN0VmFsdWUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICghYSAmJiAhYikgfHxcbiAgICAgICAgICAgICghIWEgJiYgISFiICYmIGEudXNlclZhbHVlcy5sZW5ndGggPT09IGIudXNlclZhbHVlcy5sZW5ndGgpO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Used by [UserListField]{@link UserListField}.
3
+ *
4
+ * Represents the value of the user list.
5
+ */
6
+ import { UserValue } from '../../user-field/models/user-value';
7
+ export class UserListValue {
8
+ constructor(userValues) {
9
+ this._userValues = userValues;
10
+ }
11
+ get userValues() {
12
+ return this._userValues;
13
+ }
14
+ set userValues(value) {
15
+ this._userValues = value;
16
+ }
17
+ addUserValue(value) {
18
+ this._userValues.push(value);
19
+ }
20
+ addUserValues(value) {
21
+ this._userValues.push(...value);
22
+ }
23
+ getLast() {
24
+ if (this._userValues.length == 0) {
25
+ return new UserValue('', '', '', '');
26
+ }
27
+ return this._userValues[this._userValues.length - 1];
28
+ }
29
+ removeUserValue(value) {
30
+ const index = this._userValues.findIndex(user => user.id === value.id);
31
+ if (index > -1) {
32
+ this._userValues.splice(index, 1);
33
+ }
34
+ }
35
+ }
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1saXN0LXZhbHVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9kYXRhLWZpZWxkcy91c2VyLWxpc3QtZmllbGQvbW9kZWxzL3VzZXItbGlzdC12YWx1ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBQ0gsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRS9ELE1BQU0sT0FBTyxhQUFhO0lBSXRCLFlBQVksVUFBNEI7UUFDcEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQUksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxVQUFVLENBQUMsS0FBdUI7UUFDbEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUVNLFlBQVksQ0FBQyxLQUFnQjtRQUNoQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRU0sYUFBYSxDQUFDLEtBQWtCO1FBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVNLE9BQU87UUFDVixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtZQUM5QixPQUFPLElBQUksU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQ3hDO1FBQ0QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFTSxlQUFlLENBQUMsS0FBZ0I7UUFDbkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2RSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRTtZQUNaLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNyQztJQUNMLENBQUM7Q0FHSiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVXNlZCBieSBbVXNlckxpc3RGaWVsZF17QGxpbmsgVXNlckxpc3RGaWVsZH0uXG4gKlxuICogUmVwcmVzZW50cyB0aGUgdmFsdWUgb2YgdGhlIHVzZXIgbGlzdC5cbiAqL1xuaW1wb3J0IHsgVXNlclZhbHVlIH0gZnJvbSAnLi4vLi4vdXNlci1maWVsZC9tb2RlbHMvdXNlci12YWx1ZSc7XG5cbmV4cG9ydCBjbGFzcyBVc2VyTGlzdFZhbHVlIHtcblxuICAgIHByaXZhdGUgX3VzZXJWYWx1ZXM6IEFycmF5PFVzZXJWYWx1ZT47XG5cbiAgICBjb25zdHJ1Y3Rvcih1c2VyVmFsdWVzOiBBcnJheTxVc2VyVmFsdWU+KSB7XG4gICAgICAgIHRoaXMuX3VzZXJWYWx1ZXMgPSB1c2VyVmFsdWVzO1xuICAgIH1cblxuICAgIGdldCB1c2VyVmFsdWVzKCk6IEFycmF5PFVzZXJWYWx1ZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdXNlclZhbHVlcztcbiAgICB9XG5cbiAgICBzZXQgdXNlclZhbHVlcyh2YWx1ZTogQXJyYXk8VXNlclZhbHVlPikge1xuICAgICAgICB0aGlzLl91c2VyVmFsdWVzID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZFVzZXJWYWx1ZSh2YWx1ZTogVXNlclZhbHVlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3VzZXJWYWx1ZXMucHVzaCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZFVzZXJWYWx1ZXModmFsdWU6IFVzZXJWYWx1ZVtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3VzZXJWYWx1ZXMucHVzaCguLi52YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldExhc3QoKTogVXNlclZhbHVlIHtcbiAgICAgICAgaWYgKHRoaXMuX3VzZXJWYWx1ZXMubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgVXNlclZhbHVlKCcnLCAnJywgJycsICcnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fdXNlclZhbHVlc1t0aGlzLl91c2VyVmFsdWVzLmxlbmd0aCAtIDFdO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVVc2VyVmFsdWUodmFsdWU6IFVzZXJWYWx1ZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuX3VzZXJWYWx1ZXMuZmluZEluZGV4KHVzZXIgPT4gdXNlci5pZCA9PT0gdmFsdWUuaWQpO1xuICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgdGhpcy5fdXNlclZhbHVlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgfVxuXG5cbn1cbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import { Component, Inject } from '@angular/core';
2
- import { AbstractDialog } from '../../models/abstract-dialog';
2
+ import { AbstractDialogComponent } from '../../models/abstract-dialog.component';
3
3
  import { MAT_DIALOG_DATA } from '@angular/material/dialog';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@angular/material/dialog";
@@ -7,9 +7,9 @@ import * as i2 from "@angular/material/button";
7
7
  import * as i3 from "@angular/flex-layout/flex";
8
8
  /**
9
9
  * Simple modal dialog with its own layout (which only shows information) based on a material design
10
- * that injected data and inherits from an [AbstractDialog]{@link AbstractDialog}.
10
+ * that injected data and inherits from an [AbstractDialog]{@link AbstractDialogComponent}.
11
11
  */
12
- export class AlertDialogComponent extends AbstractDialog {
12
+ export class AlertDialogComponent extends AbstractDialogComponent {
13
13
  /**
14
14
  * Only injecting.
15
15
  * @param dialogRef Reference to a dialog opened via the MatDialog service.
@@ -33,4 +33,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
33
33
  type: Inject,
34
34
  args: [MAT_DIALOG_DATA]
35
35
  }] }]; } });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvZGlhbG9nL2NvbXBvbmVudHMvYWxlcnQtZGlhbG9nL2FsZXJ0LWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL2RpYWxvZy9jb21wb25lbnRzL2FsZXJ0LWRpYWxvZy9hbGVydC1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBRzVELE9BQU8sRUFBQyxlQUFlLEVBQWUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7QUFFdkU7OztHQUdHO0FBTUgsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGNBQW9DO0lBQzFFOzs7O09BSUc7SUFDSCxZQUFtQixTQUEyRCxFQUNsQyxJQUFnQjtRQUN4RCxLQUFLLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRlIsY0FBUyxHQUFULFNBQVMsQ0FBa0Q7UUFDbEMsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUU1RCxDQUFDO0lBRUQsT0FBTztRQUNILElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7O2tIQWJRLG9CQUFvQiw4Q0FPVCxlQUFlO3NHQVAxQixvQkFBb0IsZ0ZDZmpDLGdTQU9BOzRGRFFhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDSSxtQkFBbUI7OzBCQVdoQixNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWJzdHJhY3REaWFsb2d9IGZyb20gJy4uLy4uL21vZGVscy9hYnN0cmFjdC1kaWFsb2cnO1xuaW1wb3J0IHtEaWFsb2dEYXRhfSBmcm9tICcuLi8uLi9tb2RlbHMvRGlhbG9nRGF0YSc7XG5pbXBvcnQge0RpYWxvZ1Jlc3VsdH0gZnJvbSAnLi4vLi4vbW9kZWxzL0RpYWxvZ1Jlc3VsdCc7XG5pbXBvcnQge01BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG4vKipcbiAqIFNpbXBsZSBtb2RhbCBkaWFsb2cgd2l0aCBpdHMgb3duIGxheW91dCAod2hpY2ggb25seSBzaG93cyBpbmZvcm1hdGlvbikgYmFzZWQgb24gYSBtYXRlcmlhbCBkZXNpZ25cbiAqIHRoYXQgaW5qZWN0ZWQgZGF0YSBhbmQgaW5oZXJpdHMgZnJvbSBhbiBbQWJzdHJhY3REaWFsb2dde0BsaW5rIEFic3RyYWN0RGlhbG9nfS5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduY2Mtc2ltcGxlLWRpYWxvZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FsZXJ0LWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vYWxlcnQtZGlhbG9nLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQWxlcnREaWFsb2dDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdERpYWxvZzxBbGVydERpYWxvZ0NvbXBvbmVudD4ge1xuICAgIC8qKlxuICAgICAqIE9ubHkgaW5qZWN0aW5nLlxuICAgICAqIEBwYXJhbSBkaWFsb2dSZWYgUmVmZXJlbmNlIHRvIGEgZGlhbG9nIG9wZW5lZCB2aWEgdGhlIE1hdERpYWxvZyBzZXJ2aWNlLlxuICAgICAqIEBwYXJhbSBkYXRhIEluamVjdGVkIGRhdGEgdGhhdCB3YXMgcGFzc2VkIGluIHRvIGEgZGlhbG9nLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxBbGVydERpYWxvZ0NvbXBvbmVudCwgRGlhbG9nUmVzdWx0PixcbiAgICAgICAgICAgICAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IERpYWxvZ0RhdGEpIHtcbiAgICAgICAgc3VwZXIoZGlhbG9nUmVmLCBkYXRhKTtcbiAgICB9XG5cbiAgICBvbkNsb3NlKCkge1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh7fSk7XG4gICAgfVxuXG59XG4iLCI8aDEgbWF0LWRpYWxvZy10aXRsZT57e2RhdGEudGl0bGV9fTwvaDE+XG5cbjxkaXYgbWF0LWRpYWxvZy1jb250ZW50IGNsYXNzPVwiZGlhbG9nLWNvbnRhaW5lciBkaWFsb2ctY29udGVudC1tYXJnaW5cIj57e2RhdGEuY29udGVudH19PC9kaXY+XG5cbjxtYXQtZGlhbG9nLWFjdGlvbnMgZnhMYXlvdXRBbGlnbj1cImVuZFwiPlxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwib25DbG9zZSgpXCI+T0s8L2J1dHRvbj5cbjwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuIl19
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvZGlhbG9nL2NvbXBvbmVudHMvYWxlcnQtZGlhbG9nL2FsZXJ0LWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL2RpYWxvZy9jb21wb25lbnRzL2FsZXJ0LWRpYWxvZy9hbGVydC1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFHL0UsT0FBTyxFQUFDLGVBQWUsRUFBZSxNQUFNLDBCQUEwQixDQUFDOzs7OztBQUV2RTs7O0dBR0c7QUFNSCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsdUJBQTZDO0lBQ25GOzs7O09BSUc7SUFDSCxZQUFtQixTQUEyRCxFQUNsQyxJQUFnQjtRQUN4RCxLQUFLLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRlIsY0FBUyxHQUFULFNBQVMsQ0FBa0Q7UUFDbEMsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUU1RCxDQUFDO0lBRUQsT0FBTztRQUNILElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7O2tIQWJRLG9CQUFvQiw4Q0FPVCxlQUFlO3NHQVAxQixvQkFBb0IsZ0ZDZmpDLGdTQU9BOzRGRFFhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDSSxtQkFBbUI7OzBCQVdoQixNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWJzdHJhY3REaWFsb2dDb21wb25lbnR9IGZyb20gJy4uLy4uL21vZGVscy9hYnN0cmFjdC1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7RGlhbG9nRGF0YX0gZnJvbSAnLi4vLi4vbW9kZWxzL0RpYWxvZ0RhdGEnO1xuaW1wb3J0IHtEaWFsb2dSZXN1bHR9IGZyb20gJy4uLy4uL21vZGVscy9EaWFsb2dSZXN1bHQnO1xuaW1wb3J0IHtNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuLyoqXG4gKiBTaW1wbGUgbW9kYWwgZGlhbG9nIHdpdGggaXRzIG93biBsYXlvdXQgKHdoaWNoIG9ubHkgc2hvd3MgaW5mb3JtYXRpb24pIGJhc2VkIG9uIGEgbWF0ZXJpYWwgZGVzaWduXG4gKiB0aGF0IGluamVjdGVkIGRhdGEgYW5kIGluaGVyaXRzIGZyb20gYW4gW0Fic3RyYWN0RGlhbG9nXXtAbGluayBBYnN0cmFjdERpYWxvZ0NvbXBvbmVudH0uXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmNjLXNpbXBsZS1kaWFsb2cnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9hbGVydC1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2FsZXJ0LWRpYWxvZy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEFsZXJ0RGlhbG9nQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3REaWFsb2dDb21wb25lbnQ8QWxlcnREaWFsb2dDb21wb25lbnQ+IHtcbiAgICAvKipcbiAgICAgKiBPbmx5IGluamVjdGluZy5cbiAgICAgKiBAcGFyYW0gZGlhbG9nUmVmIFJlZmVyZW5jZSB0byBhIGRpYWxvZyBvcGVuZWQgdmlhIHRoZSBNYXREaWFsb2cgc2VydmljZS5cbiAgICAgKiBAcGFyYW0gZGF0YSBJbmplY3RlZCBkYXRhIHRoYXQgd2FzIHBhc3NlZCBpbiB0byBhIGRpYWxvZy5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8QWxlcnREaWFsb2dDb21wb25lbnQsIERpYWxvZ1Jlc3VsdD4sXG4gICAgICAgICAgICAgICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBEaWFsb2dEYXRhKSB7XG4gICAgICAgIHN1cGVyKGRpYWxvZ1JlZiwgZGF0YSk7XG4gICAgfVxuXG4gICAgb25DbG9zZSgpIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2Uoe30pO1xuICAgIH1cblxufVxuIiwiPGgxIG1hdC1kaWFsb2ctdGl0bGU+e3tkYXRhLnRpdGxlfX08L2gxPlxuXG48ZGl2IG1hdC1kaWFsb2ctY29udGVudCBjbGFzcz1cImRpYWxvZy1jb250YWluZXIgZGlhbG9nLWNvbnRlbnQtbWFyZ2luXCI+e3tkYXRhLmNvbnRlbnR9fTwvZGl2PlxuXG48bWF0LWRpYWxvZy1hY3Rpb25zIGZ4TGF5b3V0QWxpZ249XCJlbmRcIj5cbiAgICA8YnV0dG9uIG1hdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cIm9uQ2xvc2UoKVwiPk9LPC9idXR0b24+XG48L21hdC1kaWFsb2ctYWN0aW9ucz5cbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import { Component, Inject } from '@angular/core';
2
- import { AbstractDialog } from '../../models/abstract-dialog';
2
+ import { AbstractDialogComponent } from '../../models/abstract-dialog.component';
3
3
  import { MAT_DIALOG_DATA } from '@angular/material/dialog';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@angular/material/dialog";
@@ -8,9 +8,9 @@ import * as i3 from "@angular/material/button";
8
8
  import * as i4 from "@angular/flex-layout/flex";
9
9
  /**
10
10
  * Question modal dialog with its own layout (which asks the user a question with two answers - yes or no)
11
- * based on a material design that injected data and inherits from an [AbstractDialog]{@link AbstractDialog}.
11
+ * based on a material design that injected data and inherits from an [AbstractDialog]{@link AbstractDialogComponent}.
12
12
  */
13
- export class ConfirmDialogComponent extends AbstractDialog {
13
+ export class ConfirmDialogComponent extends AbstractDialogComponent {
14
14
  /**
15
15
  * Only injecting.
16
16
  * @param dialogRef Reference to a dialog opened via the MatDialog service.
@@ -45,4 +45,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
45
45
  type: Inject,
46
46
  args: [MAT_DIALOG_DATA]
47
47
  }] }, { type: i2.DomSanitizer }]; } });
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9kaWFsb2cvY29tcG9uZW50cy9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL2RpYWxvZy9jb21wb25lbnRzL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUc1RCxPQUFPLEVBQUMsZUFBZSxFQUFlLE1BQU0sMEJBQTBCLENBQUM7Ozs7OztBQUd2RTs7O0dBR0c7QUFNSCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsY0FBc0M7SUFLOUU7Ozs7O09BS0c7SUFDSCxZQUFtQixTQUE2RCxFQUNwQyxJQUFnQixFQUFVLFNBQXVCO1FBQ3pGLEtBQUssQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFGUixjQUFTLEdBQVQsU0FBUyxDQUFvRDtRQUNwQyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQVUsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUV6RixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ3RCLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1NBQy9GO2FBQU07WUFDSCxJQUFJLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUM5RDtJQUNMLENBQUM7SUFFTSxPQUFPLENBQUMsV0FBb0I7UUFDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7WUFDakIsU0FBUyxFQUFFLFdBQVc7U0FDekIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7b0hBMUJRLHNCQUFzQiw4Q0FZWCxlQUFlO3dHQVoxQixzQkFBc0Isa0ZDaEJuQyw2YUFRQTs0RkRRYSxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0kscUJBQXFCOzswQkFnQmxCLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBYnN0cmFjdERpYWxvZ30gZnJvbSAnLi4vLi4vbW9kZWxzL2Fic3RyYWN0LWRpYWxvZyc7XG5pbXBvcnQge0RpYWxvZ1Jlc3VsdH0gZnJvbSAnLi4vLi4vbW9kZWxzL0RpYWxvZ1Jlc3VsdCc7XG5pbXBvcnQge0RpYWxvZ0RhdGF9IGZyb20gJy4uLy4uL21vZGVscy9EaWFsb2dEYXRhJztcbmltcG9ydCB7TUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWZ9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQge0RvbVNhbml0aXplciwgU2FmZUh0bWx9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG4vKipcbiAqIFF1ZXN0aW9uIG1vZGFsIGRpYWxvZyB3aXRoIGl0cyBvd24gbGF5b3V0ICh3aGljaCBhc2tzIHRoZSB1c2VyIGEgcXVlc3Rpb24gd2l0aCB0d28gYW5zd2VycyAtIHllcyBvciBubylcbiAqIGJhc2VkIG9uIGEgbWF0ZXJpYWwgZGVzaWduIHRoYXQgaW5qZWN0ZWQgZGF0YSBhbmQgaW5oZXJpdHMgZnJvbSBhbiBbQWJzdHJhY3REaWFsb2dde0BsaW5rIEFic3RyYWN0RGlhbG9nfS5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduY2MtcXVlc3Rpb24tZGlhbG9nJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29uZmlybS1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ29uZmlybURpYWxvZ0NvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0RGlhbG9nPENvbmZpcm1EaWFsb2dDb21wb25lbnQ+IHtcblxuICAgIHB1YmxpYyBjaG9pY2U6IGJvb2xlYW47XG4gICAgcHVibGljIHBhcnNlZENvbnRlbnQ6IFNhZmVIdG1sO1xuXG4gICAgLyoqXG4gICAgICogT25seSBpbmplY3RpbmcuXG4gICAgICogQHBhcmFtIGRpYWxvZ1JlZiBSZWZlcmVuY2UgdG8gYSBkaWFsb2cgb3BlbmVkIHZpYSB0aGUgTWF0RGlhbG9nIHNlcnZpY2UuXG4gICAgICogQHBhcmFtIGRhdGEgSW5qZWN0ZWQgZGF0YSB0aGF0IHdhcyBwYXNzZWQgaW4gdG8gYSBkaWFsb2cuXG4gICAgICogQHBhcmFtIHNhbml0aXplciBzYW5pdGl6ZSBIVE1MXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPENvbmZpcm1EaWFsb2dDb21wb25lbnQsIERpYWxvZ1Jlc3VsdD4sXG4gICAgICAgICAgICAgICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBEaWFsb2dEYXRhLCBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7XG4gICAgICAgIHN1cGVyKGRpYWxvZ1JlZiwgZGF0YSk7XG4gICAgICAgIHRoaXMuY2hvaWNlID0gZmFsc2U7XG4gICAgICAgIGlmIChkYXRhICYmIGRhdGEuY29udGVudCkge1xuICAgICAgICAgICAgdGhpcy5wYXJzZWRDb250ZW50ID0gc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGRhdGEuY29udGVudC5yZXBsYWNlKCdcXFxcbicsICc8YnI+JykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wYXJzZWRDb250ZW50ID0gc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKCcnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbkNsb3NlKGlzU3VibWl0dGVkOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHtcbiAgICAgICAgICAgIGNvbmZpcm1lZDogaXNTdWJtaXR0ZWRcbiAgICAgICAgfSk7XG4gICAgfVxuXG59XG4iLCI8aDEgbWF0LWRpYWxvZy10aXRsZT57e2RhdGEudGl0bGV9fTwvaDE+XG5cbjxkaXYgbWF0LWRpYWxvZy1jb250ZW50IGNsYXNzPVwiZGlhbG9nLWNvbnRhaW5lciBkaWFsb2ctY29udGVudC1tYXJnaW5cIiBbaW5uZXJIVE1MXT1cInBhcnNlZENvbnRlbnRcIj48L2Rpdj5cblxuPG1hdC1kaWFsb2ctYWN0aW9ucyBmeExheW91dEFsaWduPVwiZW5kXCI+XG4gICAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNvbG9yPVwid2FyblwiIChjbGljayk9XCJvbkNsb3NlKGZhbHNlKVwiPnt7ZGF0YS5uZWdhdGl2ZUxhYmVsfX08L2J1dHRvbj5cbiAgICA8YnV0dG9uIG1hdC1mbGF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwib25DbG9zZSh0cnVlKVwiPnt7ZGF0YS5wb3NpdGl2ZUxhYmVsfX08L2J1dHRvbj5cbjwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuIl19
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9kaWFsb2cvY29tcG9uZW50cy9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL2RpYWxvZy9jb21wb25lbnRzL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBRy9FLE9BQU8sRUFBQyxlQUFlLEVBQWUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7O0FBR3ZFOzs7R0FHRztBQU1ILE1BQU0sT0FBTyxzQkFBdUIsU0FBUSx1QkFBK0M7SUFLdkY7Ozs7O09BS0c7SUFDSCxZQUFtQixTQUE2RCxFQUNwQyxJQUFnQixFQUFVLFNBQXVCO1FBQ3pGLEtBQUssQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFGUixjQUFTLEdBQVQsU0FBUyxDQUFvRDtRQUNwQyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQVUsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUV6RixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ3RCLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1NBQy9GO2FBQU07WUFDSCxJQUFJLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUM5RDtJQUNMLENBQUM7SUFFTSxPQUFPLENBQUMsV0FBb0I7UUFDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7WUFDakIsU0FBUyxFQUFFLFdBQVc7U0FDekIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7b0hBMUJRLHNCQUFzQiw4Q0FZWCxlQUFlO3dHQVoxQixzQkFBc0Isa0ZDaEJuQyw2YUFRQTs0RkRRYSxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0kscUJBQXFCOzswQkFnQmxCLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBYnN0cmFjdERpYWxvZ0NvbXBvbmVudH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Fic3RyYWN0LWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHtEaWFsb2dSZXN1bHR9IGZyb20gJy4uLy4uL21vZGVscy9EaWFsb2dSZXN1bHQnO1xuaW1wb3J0IHtEaWFsb2dEYXRhfSBmcm9tICcuLi8uLi9tb2RlbHMvRGlhbG9nRGF0YSc7XG5pbXBvcnQge01BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHtEb21TYW5pdGl6ZXIsIFNhZmVIdG1sfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuLyoqXG4gKiBRdWVzdGlvbiBtb2RhbCBkaWFsb2cgd2l0aCBpdHMgb3duIGxheW91dCAod2hpY2ggYXNrcyB0aGUgdXNlciBhIHF1ZXN0aW9uIHdpdGggdHdvIGFuc3dlcnMgLSB5ZXMgb3Igbm8pXG4gKiBiYXNlZCBvbiBhIG1hdGVyaWFsIGRlc2lnbiB0aGF0IGluamVjdGVkIGRhdGEgYW5kIGluaGVyaXRzIGZyb20gYW4gW0Fic3RyYWN0RGlhbG9nXXtAbGluayBBYnN0cmFjdERpYWxvZ0NvbXBvbmVudH0uXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmNjLXF1ZXN0aW9uLWRpYWxvZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jb25maXJtLWRpYWxvZy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENvbmZpcm1EaWFsb2dDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdERpYWxvZ0NvbXBvbmVudDxDb25maXJtRGlhbG9nQ29tcG9uZW50PiB7XG5cbiAgICBwdWJsaWMgY2hvaWNlOiBib29sZWFuO1xuICAgIHB1YmxpYyBwYXJzZWRDb250ZW50OiBTYWZlSHRtbDtcblxuICAgIC8qKlxuICAgICAqIE9ubHkgaW5qZWN0aW5nLlxuICAgICAqIEBwYXJhbSBkaWFsb2dSZWYgUmVmZXJlbmNlIHRvIGEgZGlhbG9nIG9wZW5lZCB2aWEgdGhlIE1hdERpYWxvZyBzZXJ2aWNlLlxuICAgICAqIEBwYXJhbSBkYXRhIEluamVjdGVkIGRhdGEgdGhhdCB3YXMgcGFzc2VkIGluIHRvIGEgZGlhbG9nLlxuICAgICAqIEBwYXJhbSBzYW5pdGl6ZXIgc2FuaXRpemUgSFRNTFxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxDb25maXJtRGlhbG9nQ29tcG9uZW50LCBEaWFsb2dSZXN1bHQ+LFxuICAgICAgICAgICAgICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogRGlhbG9nRGF0YSwgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcikge1xuICAgICAgICBzdXBlcihkaWFsb2dSZWYsIGRhdGEpO1xuICAgICAgICB0aGlzLmNob2ljZSA9IGZhbHNlO1xuICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmNvbnRlbnQpIHtcbiAgICAgICAgICAgIHRoaXMucGFyc2VkQ29udGVudCA9IHNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChkYXRhLmNvbnRlbnQucmVwbGFjZSgnXFxcXG4nLCAnPGJyPicpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucGFyc2VkQ29udGVudCA9IHNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbCgnJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbG9zZShpc1N1Ym1pdHRlZDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh7XG4gICAgICAgICAgICBjb25maXJtZWQ6IGlzU3VibWl0dGVkXG4gICAgICAgIH0pO1xuICAgIH1cblxufVxuIiwiPGgxIG1hdC1kaWFsb2ctdGl0bGU+e3tkYXRhLnRpdGxlfX08L2gxPlxuXG48ZGl2IG1hdC1kaWFsb2ctY29udGVudCBjbGFzcz1cImRpYWxvZy1jb250YWluZXIgZGlhbG9nLWNvbnRlbnQtbWFyZ2luXCIgW2lubmVySFRNTF09XCJwYXJzZWRDb250ZW50XCI+PC9kaXY+XG5cbjxtYXQtZGlhbG9nLWFjdGlvbnMgZnhMYXlvdXRBbGlnbj1cImVuZFwiPlxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjb2xvcj1cIndhcm5cIiAoY2xpY2spPVwib25DbG9zZShmYWxzZSlcIj57e2RhdGEubmVnYXRpdmVMYWJlbH19PC9idXR0b24+XG4gICAgPGJ1dHRvbiBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cIm9uQ2xvc2UodHJ1ZSlcIj57e2RhdGEucG9zaXRpdmVMYWJlbH19PC9idXR0b24+XG48L21hdC1kaWFsb2ctYWN0aW9ucz5cbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import { Component, Inject } from '@angular/core';
2
- import { AbstractDialog } from '../../models/abstract-dialog';
2
+ import { AbstractDialogComponent } from '../../models/abstract-dialog.component';
3
3
  import { MAT_DIALOG_DATA } from '@angular/material/dialog';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@angular/material/dialog";
@@ -11,9 +11,9 @@ import * as i6 from "@angular/flex-layout/flex";
11
11
  import * as i7 from "@ngx-translate/core";
12
12
  /**
13
13
  * Question modal dialog with its own layout (which asks the user a question and wait for the answer)
14
- * based on a material design that injected data and inherits from an [AbstractDialog]{@link AbstractDialog}.
14
+ * based on a material design that injected data and inherits from an [AbstractDialog]{@link AbstractDialogComponent}.
15
15
  */
16
- export class PromptDialogComponent extends AbstractDialog {
16
+ export class PromptDialogComponent extends AbstractDialogComponent {
17
17
  /**
18
18
  * Only injecting.
19
19
  * @param dialogRef Reference to a dialog opened via the MatDialog service.
@@ -41,4 +41,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
41
41
  type: Inject,
42
42
  args: [MAT_DIALOG_DATA]
43
43
  }] }]; } });
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbXB0LWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL2RpYWxvZy9jb21wb25lbnRzL3Byb21wdC1kaWFsb2cvcHJvbXB0LWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL2RpYWxvZy9jb21wb25lbnRzL3Byb21wdC1kaWFsb2cvcHJvbXB0LWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNoRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFHNUQsT0FBTyxFQUFDLGVBQWUsRUFBZSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7QUFFdkU7OztHQUdHO0FBTUgsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGNBQXFDO0lBTTVFOzs7O09BSUc7SUFDSCxZQUFtQixTQUE0RCxFQUNuQyxJQUFnQjtRQUN4RCxLQUFLLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRlIsY0FBUyxHQUFULFNBQVMsQ0FBbUQ7UUFDbkMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQVg1RCw2RUFBNkU7UUFDdEUsa0JBQWEsR0FBRyxJQUFJLENBQUM7SUFZNUIsQ0FBQztJQUVELE9BQU8sQ0FBQyxXQUFvQjtRQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQy9CLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtTQUN0QixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNaLENBQUM7O21IQXBCUSxxQkFBcUIsOENBWVYsZUFBZTt1R0FaMUIscUJBQXFCLDhGQ2ZsQyxreEJBZUE7NEZEQWEscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNJLGlDQUFpQzs7MEJBZ0I5QixNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWJzdHJhY3REaWFsb2d9IGZyb20gJy4uLy4uL21vZGVscy9hYnN0cmFjdC1kaWFsb2cnO1xuaW1wb3J0IHtEaWFsb2dSZXN1bHR9IGZyb20gJy4uLy4uL21vZGVscy9EaWFsb2dSZXN1bHQnO1xuaW1wb3J0IHtEaWFsb2dEYXRhfSBmcm9tICcuLi8uLi9tb2RlbHMvRGlhbG9nRGF0YSc7XG5pbXBvcnQge01BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG4vKipcbiAqIFF1ZXN0aW9uIG1vZGFsIGRpYWxvZyB3aXRoIGl0cyBvd24gbGF5b3V0ICh3aGljaCBhc2tzIHRoZSB1c2VyIGEgcXVlc3Rpb24gYW5kIHdhaXQgZm9yIHRoZSBhbnN3ZXIpXG4gKiBiYXNlZCBvbiBhIG1hdGVyaWFsIGRlc2lnbiB0aGF0IGluamVjdGVkIGRhdGEgYW5kIGluaGVyaXRzIGZyb20gYW4gW0Fic3RyYWN0RGlhbG9nXXtAbGluayBBYnN0cmFjdERpYWxvZ30uXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmNjLXF1ZXN0aW9uLWRpYWxvZy13aXRoLWFuc3dlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Byb21wdC1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3Byb21wdC1kaWFsb2cuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBQcm9tcHREaWFsb2dDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdERpYWxvZzxQcm9tcHREaWFsb2dDb21wb25lbnQ+IHtcbiAgICAvKiogU2V0IHN1Ym1pdCBidXR0b24gdG8gZGlzYWJsZWQgb3IgZW5hYmxlZCBhY2NvcmRpbmcgdG8gdGhlIHVzZXIgYW5zd2VyLiAqL1xuICAgIHB1YmxpYyBkaXNhYmxlQnV0dG9uID0gdHJ1ZTtcbiAgICBwdWJsaWMgcHJvbXB0OiBzdHJpbmc7XG4gICAgcHVibGljIHN1Ym1pdENsaWNrOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogT25seSBpbmplY3RpbmcuXG4gICAgICogQHBhcmFtIGRpYWxvZ1JlZiBSZWZlcmVuY2UgdG8gYSBkaWFsb2cgb3BlbmVkIHZpYSB0aGUgTWF0RGlhbG9nIHNlcnZpY2UuXG4gICAgICogQHBhcmFtIGRhdGEgSW5qZWN0ZWQgZGF0YSB0aGF0IHdhcyBwYXNzZWQgaW4gdG8gYSBkaWFsb2cuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFByb21wdERpYWxvZ0NvbXBvbmVudCwgRGlhbG9nUmVzdWx0PixcbiAgICAgICAgICAgICAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IERpYWxvZ0RhdGEpIHtcbiAgICAgICAgc3VwZXIoZGlhbG9nUmVmLCBkYXRhKTtcbiAgICB9XG5cbiAgICBvbkNsb3NlKGlzU3VibWl0dGVkOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKGlzU3VibWl0dGVkID8ge1xuICAgICAgICAgICAgcHJvbXB0OiB0aGlzLnByb21wdFxuICAgICAgICB9IDoge30pO1xuICAgIH1cblxufVxuIiwiPGgxIG1hdC1kaWFsb2ctdGl0bGU+e3tkYXRhLnRpdGxlfX08L2gxPlxuXG48ZGl2IG1hdC1kaWFsb2ctY29udGVudCBjbGFzcz1cImRpYWxvZy1jb250YWluZXIgZGlhbG9nLWNvbnRlbnQtbWFyZ2luIG5ldGdyaWYtaW5wdXQgbmV0Z3JpZi1pbnB1dC1maXhcIj5cbiAgICA8c3Bhbj57e2RhdGEuY29udGVudH19PC9zcGFuPlxuICAgIDxicj5cbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJkaWFsb2ctcHJvbXB0LW1hcmdpblwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XG4gICAgICAgIDxtYXQtbGFiZWw+e3tkYXRhLnBsYWNlaG9sZGVyfX08L21hdC1sYWJlbD5cbiAgICAgICAgPGlucHV0IG1hdElucHV0IFsobmdNb2RlbCldPVwicHJvbXB0XCIgKG5nTW9kZWxDaGFuZ2UpPVwiZGlzYWJsZUJ1dHRvbiA9ICFwcm9tcHQgfHwgcHJvbXB0LnRyaW0oKS5sZW5ndGggPT09IDBcIj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuPC9kaXY+XG5cbjxtYXQtZGlhbG9nLWFjdGlvbnMgZnhMYXlvdXRBbGlnbj1cImVuZFwiPlxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwib25DbG9zZShmYWxzZSlcIj57eyAnZGlhbG9nLmNsb3NlJyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XG4gICAgPGJ1dHRvbiBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cImRpc2FibGVCdXR0b25cIiAoY2xpY2spPVwib25DbG9zZSh0cnVlKVwiPnt7ICdkaWFsb2cuc3VibWl0JyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XG48L21hdC1kaWFsb2ctYWN0aW9ucz5cbiJdfQ==
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbXB0LWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL2RpYWxvZy9jb21wb25lbnRzL3Byb21wdC1kaWFsb2cvcHJvbXB0LWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL2RpYWxvZy9jb21wb25lbnRzL3Byb21wdC1kaWFsb2cvcHJvbXB0LWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNoRCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUcvRSxPQUFPLEVBQUMsZUFBZSxFQUFlLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7OztBQUV2RTs7O0dBR0c7QUFNSCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsdUJBQThDO0lBTXJGOzs7O09BSUc7SUFDSCxZQUFtQixTQUE0RCxFQUNuQyxJQUFnQjtRQUN4RCxLQUFLLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRlIsY0FBUyxHQUFULFNBQVMsQ0FBbUQ7UUFDbkMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQVg1RCw2RUFBNkU7UUFDdEUsa0JBQWEsR0FBRyxJQUFJLENBQUM7SUFZNUIsQ0FBQztJQUVELE9BQU8sQ0FBQyxXQUFvQjtRQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQy9CLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtTQUN0QixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNaLENBQUM7O21IQXBCUSxxQkFBcUIsOENBWVYsZUFBZTt1R0FaMUIscUJBQXFCLDhGQ2ZsQyxreEJBZUE7NEZEQWEscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNJLGlDQUFpQzs7MEJBZ0I5QixNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWJzdHJhY3REaWFsb2dDb21wb25lbnR9IGZyb20gJy4uLy4uL21vZGVscy9hYnN0cmFjdC1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7RGlhbG9nUmVzdWx0fSBmcm9tICcuLi8uLi9tb2RlbHMvRGlhbG9nUmVzdWx0JztcbmltcG9ydCB7RGlhbG9nRGF0YX0gZnJvbSAnLi4vLi4vbW9kZWxzL0RpYWxvZ0RhdGEnO1xuaW1wb3J0IHtNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuLyoqXG4gKiBRdWVzdGlvbiBtb2RhbCBkaWFsb2cgd2l0aCBpdHMgb3duIGxheW91dCAod2hpY2ggYXNrcyB0aGUgdXNlciBhIHF1ZXN0aW9uIGFuZCB3YWl0IGZvciB0aGUgYW5zd2VyKVxuICogYmFzZWQgb24gYSBtYXRlcmlhbCBkZXNpZ24gdGhhdCBpbmplY3RlZCBkYXRhIGFuZCBpbmhlcml0cyBmcm9tIGFuIFtBYnN0cmFjdERpYWxvZ117QGxpbmsgQWJzdHJhY3REaWFsb2dDb21wb25lbnR9LlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25jYy1xdWVzdGlvbi1kaWFsb2ctd2l0aC1hbnN3ZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9wcm9tcHQtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9wcm9tcHQtZGlhbG9nLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUHJvbXB0RGlhbG9nQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3REaWFsb2dDb21wb25lbnQ8UHJvbXB0RGlhbG9nQ29tcG9uZW50PiB7XG4gICAgLyoqIFNldCBzdWJtaXQgYnV0dG9uIHRvIGRpc2FibGVkIG9yIGVuYWJsZWQgYWNjb3JkaW5nIHRvIHRoZSB1c2VyIGFuc3dlci4gKi9cbiAgICBwdWJsaWMgZGlzYWJsZUJ1dHRvbiA9IHRydWU7XG4gICAgcHVibGljIHByb21wdDogc3RyaW5nO1xuICAgIHB1YmxpYyBzdWJtaXRDbGljazogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIE9ubHkgaW5qZWN0aW5nLlxuICAgICAqIEBwYXJhbSBkaWFsb2dSZWYgUmVmZXJlbmNlIHRvIGEgZGlhbG9nIG9wZW5lZCB2aWEgdGhlIE1hdERpYWxvZyBzZXJ2aWNlLlxuICAgICAqIEBwYXJhbSBkYXRhIEluamVjdGVkIGRhdGEgdGhhdCB3YXMgcGFzc2VkIGluIHRvIGEgZGlhbG9nLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxQcm9tcHREaWFsb2dDb21wb25lbnQsIERpYWxvZ1Jlc3VsdD4sXG4gICAgICAgICAgICAgICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBEaWFsb2dEYXRhKSB7XG4gICAgICAgIHN1cGVyKGRpYWxvZ1JlZiwgZGF0YSk7XG4gICAgfVxuXG4gICAgb25DbG9zZShpc1N1Ym1pdHRlZDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShpc1N1Ym1pdHRlZCA/IHtcbiAgICAgICAgICAgIHByb21wdDogdGhpcy5wcm9tcHRcbiAgICAgICAgfSA6IHt9KTtcbiAgICB9XG5cbn1cbiIsIjxoMSBtYXQtZGlhbG9nLXRpdGxlPnt7ZGF0YS50aXRsZX19PC9oMT5cblxuPGRpdiBtYXQtZGlhbG9nLWNvbnRlbnQgY2xhc3M9XCJkaWFsb2ctY29udGFpbmVyIGRpYWxvZy1jb250ZW50LW1hcmdpbiBuZXRncmlmLWlucHV0IG5ldGdyaWYtaW5wdXQtZml4XCI+XG4gICAgPHNwYW4+e3tkYXRhLmNvbnRlbnR9fTwvc3Bhbj5cbiAgICA8YnI+XG4gICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZGlhbG9nLXByb21wdC1tYXJnaW5cIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxuICAgICAgICA8bWF0LWxhYmVsPnt7ZGF0YS5wbGFjZWhvbGRlcn19PC9tYXQtbGFiZWw+XG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cInByb21wdFwiIChuZ01vZGVsQ2hhbmdlKT1cImRpc2FibGVCdXR0b24gPSAhcHJvbXB0IHx8IHByb21wdC50cmltKCkubGVuZ3RoID09PSAwXCI+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbjwvZGl2PlxuXG48bWF0LWRpYWxvZy1hY3Rpb25zIGZ4TGF5b3V0QWxpZ249XCJlbmRcIj5cbiAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cIm9uQ2xvc2UoZmFsc2UpXCI+e3sgJ2RpYWxvZy5jbG9zZScgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxuICAgIDxidXR0b24gbWF0LWZsYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlQnV0dG9uXCIgKGNsaWNrKT1cIm9uQ2xvc2UodHJ1ZSlcIj57eyAnZGlhbG9nLnN1Ym1pdCcgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+XG4iXX0=
@@ -0,0 +1,29 @@
1
+ import { Component, Inject } from '@angular/core';
2
+ import { MAT_DIALOG_DATA } from '@angular/material/dialog';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/material/dialog";
5
+ /** Abstract dialog for all types of dialog components is used for data injection and dialog reference holding. */
6
+ export class AbstractDialogComponent {
7
+ /**
8
+ * Only injecting.
9
+ * @param dialogRef Reference to a dialog opened via the MatDialog service.
10
+ * @param data Injected data that was passed in to a dialog.
11
+ */
12
+ constructor(dialogRef, data) {
13
+ this.dialogRef = dialogRef;
14
+ this.data = data;
15
+ }
16
+ }
17
+ AbstractDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AbstractDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
18
+ AbstractDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: AbstractDialogComponent, selector: "ncc-abstract-dialog", ngImport: i0, template: '', isInline: true });
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AbstractDialogComponent, decorators: [{
20
+ type: Component,
21
+ args: [{
22
+ selector: 'ncc-abstract-dialog',
23
+ template: ''
24
+ }]
25
+ }], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
26
+ type: Inject,
27
+ args: [MAT_DIALOG_DATA]
28
+ }] }]; } });
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvZGlhbG9nL21vZGVscy9hYnN0cmFjdC1kaWFsb2cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBR2hELE9BQU8sRUFBQyxlQUFlLEVBQWUsTUFBTSwwQkFBMEIsQ0FBQzs7O0FBRXZFLGtIQUFrSDtBQUtsSCxNQUFNLE9BQWdCLHVCQUF1QjtJQUN6Qzs7OztPQUlHO0lBQ0gsWUFBNkIsU0FBd0MsRUFBa0MsSUFBZ0I7UUFBMUYsY0FBUyxHQUFULFNBQVMsQ0FBK0I7UUFBa0MsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUN2SCxDQUFDOztxSEFQaUIsdUJBQXVCLDhDQU1zQyxlQUFlO3lHQU41RSx1QkFBdUIsMkRBRi9CLEVBQUU7NEZBRU0sdUJBQXVCO2tCQUo1QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFFBQVEsRUFBRSxFQUFFO2lCQUNmOzswQkFPMkUsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEluamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0RpYWxvZ0RhdGF9IGZyb20gJy4vRGlhbG9nRGF0YSc7XG5pbXBvcnQge0RpYWxvZ1Jlc3VsdH0gZnJvbSAnLi9EaWFsb2dSZXN1bHQnO1xuaW1wb3J0IHtNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuLyoqIEFic3RyYWN0IGRpYWxvZyBmb3IgYWxsIHR5cGVzIG9mIGRpYWxvZyBjb21wb25lbnRzIGlzIHVzZWQgZm9yIGRhdGEgaW5qZWN0aW9uIGFuZCBkaWFsb2cgcmVmZXJlbmNlIGhvbGRpbmcuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25jYy1hYnN0cmFjdC1kaWFsb2cnLFxuICAgIHRlbXBsYXRlOiAnJ1xufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdERpYWxvZ0NvbXBvbmVudDxUPiB7XG4gICAgLyoqXG4gICAgICogT25seSBpbmplY3RpbmcuXG4gICAgICogQHBhcmFtIGRpYWxvZ1JlZiBSZWZlcmVuY2UgdG8gYSBkaWFsb2cgb3BlbmVkIHZpYSB0aGUgTWF0RGlhbG9nIHNlcnZpY2UuXG4gICAgICogQHBhcmFtIGRhdGEgSW5qZWN0ZWQgZGF0YSB0aGF0IHdhcyBwYXNzZWQgaW4gdG8gYSBkaWFsb2cuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxULCBEaWFsb2dSZXN1bHQ+LCBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IERpYWxvZ0RhdGEpIHtcbiAgICB9XG5cbiAgICAvKiogT24gY2xvc2UgZGlhbG9nIG9yIG9uIGNsaWNrIGFuc3dlciBidXR0b24gY2xvc2VkIGN1cnJlbnQgb3BlbiBtb2RhbCBkaWFsb2cuICovXG4gICAgcHVibGljIGFic3RyYWN0IG9uQ2xvc2UoaXNTdWJtaXR0ZWQ/OiBib29sZWFuKTtcblxufVxuIl19
@@ -8,14 +8,16 @@ import { HeaderChangeType } from './models/user-changes/header-change-type';
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "./models/header-type";
10
10
  import * as i2 from "../user/services/user-preference.service";
11
- import * as i3 from "../user/services/view-id.service";
12
- import * as i4 from "../logger/services/logger.service";
11
+ import * as i3 from "../logger/services/logger.service";
12
+ import * as i4 from "../user/services/view-id.service";
13
+ import * as i5 from "./services/overflow.service";
13
14
  export class AbstractHeaderService {
14
- constructor(_headerType, _preferences, _viewIdService, _logger) {
15
+ constructor(_headerType, _preferences, _logger, _viewIdService, _overflowService) {
15
16
  this._headerType = _headerType;
16
17
  this._preferences = _preferences;
17
- this._viewIdService = _viewIdService;
18
18
  this._logger = _logger;
19
+ this._viewIdService = _viewIdService;
20
+ this._overflowService = _overflowService;
19
21
  this.loading = new LoadingEmitter(true);
20
22
  this._headerChange$ = new Subject();
21
23
  this.fieldsGroup = [{ groupTitle: 'Meta data', fields: this.createMetaHeaders() }];
@@ -47,6 +49,14 @@ export class AbstractHeaderService {
47
49
  get headerType() {
48
50
  return this._headerType;
49
51
  }
52
+ get overflowMode() {
53
+ if (!!this._overflowService) {
54
+ return this._overflowService.overflowMode;
55
+ }
56
+ else {
57
+ return false;
58
+ }
59
+ }
50
60
  get headerColumnCount() {
51
61
  return this._headerColumnCount$.getValue();
52
62
  }
@@ -240,7 +250,11 @@ export class AbstractHeaderService {
240
250
  header.sortDirection = '';
241
251
  }
242
252
  });
243
- this._headerChange$.next({ headerType: this.headerType, changeType: HeaderChangeType.SORT, description: sortChangeDescription });
253
+ this._headerChange$.next({
254
+ headerType: this.headerType,
255
+ changeType: HeaderChangeType.SORT,
256
+ description: sortChangeDescription
257
+ });
244
258
  }
245
259
  /**
246
260
  * Saves the search value in the appropriate column in the header
@@ -386,11 +400,13 @@ export class AbstractHeaderService {
386
400
  }
387
401
  AbstractHeaderService.DEFAULT_HEADER_COUNT = 5;
388
402
  AbstractHeaderService.DEFAULT_HEADER_RESPONSIVITY = true;
389
- AbstractHeaderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AbstractHeaderService, deps: [{ token: i1.HeaderType }, { token: i2.UserPreferenceService }, { token: i3.ViewIdService, optional: true }, { token: i4.LoggerService }], target: i0.ɵɵFactoryTarget.Injectable });
403
+ AbstractHeaderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AbstractHeaderService, deps: [{ token: i1.HeaderType }, { token: i2.UserPreferenceService }, { token: i3.LoggerService }, { token: i4.ViewIdService, optional: true }, { token: i5.OverflowService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
390
404
  AbstractHeaderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AbstractHeaderService });
391
405
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AbstractHeaderService, decorators: [{
392
406
  type: Injectable
393
- }], ctorParameters: function () { return [{ type: i1.HeaderType }, { type: i2.UserPreferenceService }, { type: i3.ViewIdService, decorators: [{
407
+ }], ctorParameters: function () { return [{ type: i1.HeaderType }, { type: i2.UserPreferenceService }, { type: i3.LoggerService }, { type: i4.ViewIdService, decorators: [{
408
+ type: Optional
409
+ }] }, { type: i5.OverflowService, decorators: [{
394
410
  type: Optional
395
- }] }, { type: i4.LoggerService }]; } });
396
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtaGVhZGVyLXNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL2hlYWRlci9hYnN0cmFjdC1oZWFkZXItc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsZUFBZSxFQUFjLGFBQWEsRUFBRSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFekUsT0FBTyxFQUFDLFdBQVcsRUFBdUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQUMsVUFBVSxFQUFhLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQU05RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxFQUFDLFlBQVksRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBR3RFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUUxRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7O0FBSzFFLE1BQU0sT0FBZ0IscUJBQXFCO0lBaUJ2QyxZQUFnQyxXQUF1QixFQUN2QixZQUFtQyxFQUN6QixjQUE2QixFQUN2QyxPQUFzQjtRQUh0QixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QixpQkFBWSxHQUFaLFlBQVksQ0FBdUI7UUFDekIsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDdkMsWUFBTyxHQUFQLE9BQU8sQ0FBZTtRQUNsRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxPQUFPLEVBQWdCLENBQUM7UUFDbEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLEVBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxD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QkFBbUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOztPQUVHO0lBQ08sU0FBUztRQUNmLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNyQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDO1NBQ3JDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQzs7QUFqYnNCLDBDQUFvQixHQUFHLENBQUUsQ0FBQTtBQUN6QixpREFBMkIsR0FBRyxJQUFLLENBQUE7bUhBSHhDLHFCQUFxQjt1SEFBckIscUJBQXFCOzRGQUFyQixxQkFBcUI7a0JBRDFDLFVBQVU7OzBCQW9CZ0IsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7RmllbGRzR3JvdXB9IGZyb20gJy4vbW9kZWxzL2ZpZWxkcy1ncm91cCc7XG5pbXBvcnQge0hlYWRlclN0YXRlLCBIZWFkZXJTdGF0ZUludGVyZmFjZX0gZnJvbSAnLi9oZWFkZXItc3RhdGUnO1xuaW1wb3J0IHtJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U29ydENoYW5nZURlc2NyaXB0aW9ufSBmcm9tICcuL21vZGVscy91c2VyLWNoYW5nZXMvc29ydC1jaGFuZ2UtZGVzY3JpcHRpb24nO1xuaW1wb3J0IHtTZWFyY2hDaGFuZ2VEZXNjcmlwdGlvbn0gZnJvbSAnLi9tb2RlbHMvdXNlci1jaGFuZ2VzL3NlYXJjaC1jaGFuZ2UtZGVzY3JpcHRpb24nO1xuaW1wb3J0IHtIZWFkZXJDaGFuZ2V9IGZyb20gJy4vbW9kZWxzL3VzZXItY2hhbmdlcy9oZWFkZXItY2hhbmdlJztcbmltcG9ydCB7UGV0cmlOZXRSZWZlcmVuY2V9IGZyb20gJy4uL3Jlc291cmNlcy9pbnRlcmZhY2UvcGV0cmktbmV0LXJlZmVyZW5jZSc7XG5pbXBvcnQge0hlYWRlclR5cGV9IGZyb20gJy4vbW9kZWxzL2hlYWRlci10eXBlJztcbmltcG9ydCB7SGVhZGVyTW9kZX0gZnJvbSAnLi9tb2RlbHMvaGVhZGVyLW1vZGUnO1xuaW1wb3J0IHtIZWFkZXJDb2x1bW4sIEhlYWRlckNvbHVtblR5cGV9IGZyb20gJy4vbW9kZWxzL2hlYWRlci1jb2x1bW4nO1xuaW1wb3J0IHtVc2VyUHJlZmVyZW5jZVNlcnZpY2V9IGZyb20gJy4uL3VzZXIvc2VydmljZXMvdXNlci1wcmVmZXJlbmNlLnNlcnZpY2UnO1xuaW1wb3J0IHtMb2dnZXJTZXJ2aWNlfSBmcm9tICcuLi9sb2dnZXIvc2VydmljZXMvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHtMb2FkaW5nRW1pdHRlcn0gZnJvbSAnLi4vdXRpbGl0eS9sb2FkaW5nLWVtaXR0ZXInO1xuaW1wb3J0IHtTb3J0RGlyZWN0aW9ufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcbmltcG9ydCB7SGVhZGVyQ2hhbmdlVHlwZX0gZnJvbSAnLi9tb2RlbHMvdXNlci1jaGFuZ2VzL2hlYWRlci1jaGFuZ2UtdHlwZSc7XG5pbXBvcnQge1ZpZXdJZFNlcnZpY2V9IGZyb20gJy4uL3VzZXIvc2VydmljZXMvdmlldy1pZC5zZXJ2aWNlJztcbmltcG9ydCB7TmV0fSBmcm9tICcuLi9wcm9jZXNzL25ldCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdEhlYWRlclNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0hFQURFUl9DT1VOVCA9IDU7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0hFQURFUl9SRVNQT05TSVZJVFkgPSB0cnVlO1xuXG4gICAgcHJvdGVjdGVkIF9oZWFkZXJDb2x1bW5Db3VudCQ6IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+O1xuICAgIHByb3RlY3RlZCBfcHJlZmVyZW5jZUNvbHVtbkNvdW50JDogUmVwbGF5U3ViamVjdDxudW1iZXI+O1xuICAgIHByb3RlY3RlZCBfcmVzcG9uc2l2ZUhlYWRlcnMkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj47XG4gICAgcHJvdGVjdGVkIF9oZWFkZXJTdGF0ZTogSGVhZGVyU3RhdGU7XG4gICAgcHJvdGVjdGVkIF9oZWFkZXJDaGFuZ2UkOiBTdWJqZWN0PEhlYWRlckNoYW5nZT47XG4gICAgcHJvdGVjdGVkIF9jbGVhckhlYWRlclNlYXJjaCQ6IFN1YmplY3Q8bnVtYmVyPjtcbiAgICBwcml2YXRlIF9pbml0RGVmYXVsdEhlYWRlcnM6IEFycmF5PHN0cmluZz47XG4gICAgcHJpdmF0ZSBfaW5pdGlhbGl6ZWRDb3VudDogYm9vbGVhbjtcblxuICAgIHB1YmxpYyBsb2FkaW5nOiBMb2FkaW5nRW1pdHRlcjtcbiAgICBwdWJsaWMgZmllbGRzR3JvdXA6IEFycmF5PEZpZWxkc0dyb3VwPjtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX2hlYWRlclR5cGU6IEhlYWRlclR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfcHJlZmVyZW5jZXM6IFVzZXJQcmVmZXJlbmNlU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfdmlld0lkU2VydmljZTogVmlld0lkU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9sb2dnZXI6IExvZ2dlclNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gbmV3IExvYWRpbmdFbWl0dGVyKHRydWUpO1xuICAgICAgICB0aGlzLl9oZWFkZXJDaGFuZ2UkID0gbmV3IFN1YmplY3Q8SGVhZGVyQ2hhbmdlPigpO1xuICAgICAgICB0aGlzLmZpZWxkc0dyb3VwID0gW3tncm91cFRpdGxlOiAnTWV0YSBkYXRhJywgZmllbGRzOiB0aGlzLmNyZWF0ZU1ldGFIZWFkZXJzKCl9XTtcbiAgICAgICAgdGhpcy5faGVhZGVyQ29sdW1uQ291bnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KEFic3RyYWN0SGVhZGVyU2VydmljZS5ERUZBVUxUX0hFQURFUl9DT1VOVCk7XG4gICAgICAgIHRoaXMuX3Jlc3BvbnNpdmVIZWFkZXJzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oQWJzdHJhY3RIZWFkZXJTZXJ2aWNlLkRFRkFVTFRfSEVBREVSX1JFU1BPTlNJVklUWSk7XG4gICAgICAgIHRoaXMuX3ByZWZlcmVuY2VDb2x1bW5Db3VudCQgPSBuZXcgUmVwbGF5U3ViamVjdDxudW1iZXI+KCk7XG4gICAgICAgIHRoaXMuX2NsZWFySGVhZGVyU2VhcmNoJCA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcbiAgICAgICAgdGhpcy5faW5pdGlhbGl6ZWRDb3VudCA9IGZhbHNlO1xuXG4gICAgICAgIGlmICh0aGlzLl92aWV3SWRTZXJ2aWNlID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIud2FybignSGVhZGVyIHNlcnZpY2UgY291bGQgbm90IGluamVjdCBWaWV3SWRTZXJ2aWNlISBVc2VyIHByZWZlcmVuY2VzIHdvblxcJ3QgYmUgbG9hZGVkIG9yIHNhdmVkIScpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcHJlZmVyZW5jZXMucHJlZmVyZW5jZXNDaGFuZ2VkJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2FkSGVhZGVyc0Zyb21QcmVmZXJlbmNlcygpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmluaXRpYWxpemVIZWFkZXJTdGF0ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb3ZpZGVzIE9ic2VydmFibGUgZm9yIGFsbCBjaGFuZ2VzIGluIGhlYWRlclxuICAgICAqL1xuICAgIGdldCBoZWFkZXJDaGFuZ2UkKCk6IE9ic2VydmFibGU8SGVhZGVyQ2hhbmdlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oZWFkZXJDaGFuZ2UkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIGdldCBzZWxlY3RlZEhlYWRlcnMkKCk6IE9ic2VydmFibGU8QXJyYXk8SGVhZGVyQ29sdW1uPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faGVhZGVyU3RhdGUuc2VsZWN0ZWRIZWFkZXJzJDtcbiAgICB9XG5cbiAgICBnZXQgaGVhZGVyU3RhdGUoKTogSGVhZGVyU3RhdGVJbnRlcmZhY2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5faGVhZGVyU3RhdGUuYXNJbnRlcmZhY2UoKTtcbiAgICB9XG5cbiAgICBnZXQgaGVhZGVyVHlwZSgpOiBIZWFkZXJUeXBlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hlYWRlclR5cGU7XG4gICAgfVxuXG4gICAgZ2V0IGhlYWRlckNvbHVtbkNvdW50KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oZWFkZXJDb2x1bW5Db3VudCQuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICBzZXQgaGVhZGVyQ29sdW1uQ291bnQobWF4Q29sdW1uczogbnVtYmVyKSB7XG4gICAgICAgIGlmIChtYXhDb2x1bW5zICE9PSB0aGlzLmhlYWRlckNvbHVtbkNvdW50KSB7XG4gICAgICAgICAgICB0aGlzLl9oZWFkZXJDb2x1bW5Db3VudCQubmV4dChtYXhDb2x1bW5zKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlSGVhZGVyQ29sdW1uQ291bnQoKTtcbiAgICAgICAgICAgIGlmICghdGhpcy5faW5pdGlhbGl6ZWRDb3VudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZURlZmF1bHRIZWFkZXJTdGF0ZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2luaXRpYWxpemVkQ291bnQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IGhlYWRlckNvbHVtbkNvdW50JCgpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faGVhZGVyQ29sdW1uQ291bnQkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIGdldCByZXNwb25zaXZlSGVhZGVycygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3BvbnNpdmVIZWFkZXJzJC5nZXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIHNldCByZXNwb25zaXZlSGVhZGVycyhyZXNwb25zaXZlSGVhZGVyczogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9yZXNwb25zaXZlSGVhZGVycyQubmV4dChyZXNwb25zaXZlSGVhZGVycyk7XG4gICAgfVxuXG4gICAgZ2V0IHJlc3BvbnNpdmVIZWFkZXJzJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3BvbnNpdmVIZWFkZXJzJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBnZXQgY2xlYXJIZWFkZXJTZWFyY2gkKCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jbGVhckhlYWRlclNlYXJjaCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgc2V0IGluaXREZWZhdWx0SGVhZGVycyhkZWZhdWx0SGVhZGVyczogQXJyYXk8c3RyaW5nPikge1xuICAgICAgICB0aGlzLl9pbml0RGVmYXVsdEhlYWRlcnMgPSBkZWZhdWx0SGVhZGVycztcbiAgICB9XG5cbiAgICBnZXQgaW5pdERlZmF1bHRIZWFkZXJzKCk6IEFycmF5PHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5pdERlZmF1bHRIZWFkZXJzO1xuICAgIH1cblxuICAgIGdldCBwcmVmZXJlbmNlQ29sdW1uQ291bnQkKCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcmVmZXJlbmNlQ29sdW1uQ291bnQkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZUhlYWRlclN0YXRlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBkZWZhdWx0SGVhZGVycyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZmllbGRzR3JvdXBbMF0uZmllbGRzLmxlbmd0aCAmJiBkZWZhdWx0SGVhZGVycy5sZW5ndGggPCB0aGlzLmhlYWRlckNvbHVtbkNvdW50OyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmZpZWxkc0dyb3VwWzBdLmZpZWxkc1tpXS5pbml0aWFsKSB7XG4gICAgICAgICAgICAgICAgZGVmYXVsdEhlYWRlcnMucHVzaCh0aGlzLmZpZWxkc0dyb3VwWzBdLmZpZWxkc1tpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKGRlZmF1bHRIZWFkZXJzLmxlbmd0aCA8IHRoaXMuaGVhZGVyQ29sdW1uQ291bnQpIHtcbiAgICAgICAgICAgIGRlZmF1bHRIZWFkZXJzLnB1c2gobnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faGVhZGVyU3RhdGUgPSBuZXcgSGVhZGVyU3RhdGUoZGVmYXVsdEhlYWRlcnMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBpbml0aWFsaXplRGVmYXVsdEhlYWRlclN0YXRlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pbml0RGVmYXVsdEhlYWRlcnMgJiYgQXJyYXkuaXNBcnJheSh0aGlzLmluaXREZWZhdWx0SGVhZGVycykpIHtcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRIZWFkZXJzID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuaGVhZGVyQ29sdW1uQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgICAgIGRlZmF1bHRIZWFkZXJzLnB1c2gobnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuaW5pdERlZmF1bHRIZWFkZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGkgPj0gdGhpcy5oZWFkZXJDb2x1bW5Db3VudCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIud2FybigndGhlcmUgYXJlIG1vcmUgTkFFX0RFRkFVTFRfSEVBREVSUyB0aGFuIGhlYWRlciBjb2x1bW5zLiBTa2lwcGluZyB0aGUgcmVzdC4uLicpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBoIG9mIHRoaXMuZmllbGRzR3JvdXApIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaGVhZCA9IGguZmllbGRzLmZpbmQoaGVhZGVyID0+IGhlYWRlci51bmlxdWVJZCA9PT0gdGhpcy5pbml0RGVmYXVsdEhlYWRlcnNbaV0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaGVhZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEhlYWRlcnNbaV0gPSBoZWFkO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9oZWFkZXJTdGF0ZS51cGRhdGVTZWxlY3RlZEhlYWRlcnMoZGVmYXVsdEhlYWRlcnMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubG9hZEhlYWRlcnNGcm9tUHJlZmVyZW5jZXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGBudWxsYCBoZWFkZXJzIGlmIHRoZSBuZXcgY291bnQgaXMgZ3JlYXRlciB0aGFuIHRoZSBjdXJyZW50IGNvdW50LlxuICAgICAqXG4gICAgICogUmVtb3ZlcyBleHRyYSBoZWFkZXJzIGlmIHRoZSBuZXcgY291bnQgaXMgc21hbGxlciB0aGFuIHRoZSBjdXJyZW50IGNvdW50LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCB1cGRhdGVIZWFkZXJDb2x1bW5Db3VudCgpOiB2b2lkIHtcbiAgICAgICAgbGV0IGhlYWRlcnMgPSB0aGlzLl9oZWFkZXJTdGF0ZS5zZWxlY3RlZEhlYWRlcnM7XG4gICAgICAgIGlmIChoZWFkZXJzLmxlbmd0aCA8IHRoaXMuaGVhZGVyQ29sdW1uQ291bnQpIHtcbiAgICAgICAgICAgIHdoaWxlIChoZWFkZXJzLmxlbmd0aCAhPT0gdGhpcy5oZWFkZXJDb2x1bW5Db3VudCkge1xuICAgICAgICAgICAgICAgIGhlYWRlcnMucHVzaChudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChoZWFkZXJzLmxlbmd0aCA+IHRoaXMuaGVhZGVyQ29sdW1uQ291bnQpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNsaWNlKDAsIHRoaXMuaGVhZGVyQ29sdW1uQ291bnQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2hlYWRlclN0YXRlLnVwZGF0ZVNlbGVjdGVkSGVhZGVycyhoZWFkZXJzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0QWxsb3dlZE5ldHMoYWxsb3dlZE5ldHM6IEFycmF5PFBldHJpTmV0UmVmZXJlbmNlPikge1xuICAgICAgICAvKiBUT0RPIGJ5IHNpbXBseSByZXBsYWNpbmcgdGhlIHNlbGVjdCBvcHRpb25zIHdpdGggbmV3IG9iamVjdCwgd2UgZG9uJ3QgbG9vc2UgdGhlIG9sZCByZWZlcmVuY2VzLlxuICAgICAgICAgICAgIENvbHVtbnMgd2l0aCBoZWFkZXJzIGZyb20gbmV0cyB0aGF0IGFyZSBubyBsb25nZXIgYWxsb3dlZCBzaG91bGQgaGF2ZSB0aGVpciB2YWx1ZSBjbGVhcmVkLlxuICAgICAgICAgICAgIENvbHVtbnMgd2l0aCB2YWxpZCB2YWx1ZXMgdGhhdCBhcmUgbm90IG1ldGFkYXRhIHNob3VsZCBoYXZlIHRoZWlyIHNlbGVjdGlvbiByZW1hcHBlZCB0byB0aGUgbmV3IG9iamVjdHMuXG4gICAgICAgICAqL1xuXG4gICAgICAgIGNvbnN0IGZpZWxkc0dyb3VwczogQXJyYXk8RmllbGRzR3JvdXA+ID0gW107XG4gICAgICAgIGFsbG93ZWROZXRzLmZvckVhY2goYWxsb3dlZE5ldCA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWVsZHNHcm91cDogRmllbGRzR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgZ3JvdXBUaXRsZTogYWxsb3dlZE5ldC50aXRsZSxcbiAgICAgICAgICAgICAgICBmaWVsZHM6IFtdXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYWxsb3dlZE5ldC5pbW1lZGlhdGVEYXRhLmZvckVhY2goaW1tZWRpYXRlID0+IHtcbiAgICAgICAgICAgICAgICBmaWVsZHNHcm91cC5maWVsZHMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEhlYWRlckNvbHVtbihIZWFkZXJDb2x1bW5UeXBlLklNTUVESUFURSwgaW1tZWRpYXRlLnN0cmluZ0lkLCBpbW1lZGlhdGUudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbW1lZGlhdGUudHlwZSwgZmFsc2UsIGFsbG93ZWROZXQuaWRlbnRpZmllcilcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBmaWVsZHNHcm91cHMucHVzaChmaWVsZHNHcm91cCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZmllbGRzR3JvdXAuc3BsaWNlKDEsIHRoaXMuZmllbGRzR3JvdXAubGVuZ3RoIC0gMSk7XG4gICAgICAgIHRoaXMuZmllbGRzR3JvdXAucHVzaCguLi5maWVsZHNHcm91cHMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRUYXNrQWxsb3dlZE5ldHMoYWxsb3dlZE5ldHM6IEFycmF5PE5ldD4pIHtcbiAgICAgICAgLyogVE9ETyBieSBzaW1wbHkgcmVwbGFjaW5nIHRoZSBzZWxlY3Qgb3B0aW9ucyB3aXRoIG5ldyBvYmplY3QsIHdlIGRvbid0IGxvb3NlIHRoZSBvbGQgcmVmZXJlbmNlcy5cbiAgICAgICAgICAgICBDb2x1bW5zIHdpdGggaGVhZGVycyBmcm9tIG5ldHMgdGhhdCBhcmUgbm8gbG9uZ2VyIGFsbG93ZWQgc2hvdWxkIGhhdmUgdGhlaXIgdmFsdWUgY2xlYXJlZC5cbiAgICAgICAgICAgICBDb2x1bW5zIHdpdGggdmFsaWQgdmFsdWVzIHRoYXQgYXJlIG5vdCBtZXRhZGF0YSBzaG91bGQgaGF2ZSB0aGVpciBzZWxlY3Rpb24gcmVtYXBwZWQgdG8gdGhlIG5ldyBvYmplY3RzLlxuICAgICAgICAgKi9cblxuICAgICAgICBjb25zdCBmaWVsZHNHcm91cHM6IEFycmF5PEZpZWxkc0dyb3VwPiA9IFtdO1xuICAgICAgICBhbGxvd2VkTmV0cy5mb3JFYWNoKGFsbG93ZWROZXQgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmllbGRzR3JvdXA6IEZpZWxkc0dyb3VwID0ge1xuICAgICAgICAgICAgICAgIGdyb3VwVGl0bGU6IGFsbG93ZWROZXQudGl0bGUsXG4gICAgICAgICAgICAgICAgZmllbGRzOiBbXVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nID0gbmV3IFNldCgpO1xuICAgICAgICAgICAgYWxsb3dlZE5ldC50cmFuc2l0aW9ucy5mb3JFYWNoKHRyYW5zID0+IHtcbiAgICAgICAgICAgICAgICB0cmFucy5pbW1lZGlhdGVEYXRhLmZvckVhY2goZGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZXhpc3RpbmcuaGFzKGRhdGEuc3RyaW5nSWQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZy5hZGQoZGF0YS5zdHJpbmdJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZHNHcm91cC5maWVsZHMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgSGVhZGVyQ29sdW1uKEhlYWRlckNvbHVtblR5cGUuSU1NRURJQVRFLCBkYXRhLnN0cmluZ0lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnRpdGxlLCBkYXRhLnR5cGUsIGZhbHNlLCBhbGxvd2VkTmV0LmlkZW50aWZpZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGZpZWxkc0dyb3Vwcy5wdXNoKGZpZWxkc0dyb3VwKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5maWVsZHNHcm91cC5zcGxpY2UoMSwgdGhpcy5maWVsZHNHcm91cC5sZW5ndGggLSAxKTtcbiAgICAgICAgdGhpcy5maWVsZHNHcm91cC5wdXNoKC4uLmZpZWxkc0dyb3Vwcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSWYgdGhpcyB2aWV3IGhhcyBzb20gaGVhZGVycyBzdG9yZWQgaW4gaXQncyBwcmVmZXJlbmNlcyBhdHRlbXB0cyB0byBsb2FkIHRoZW0uXG4gICAgICogSWYgdGhlIHByZWZlcmVuY2VzIGNvbnRhaW4gbm9uZXhpc3RlbnQgaGVhZGVycyB0aGV5IHdpbGwgYmUgc2tpcHBlZC5cbiAgICAgKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgTk9UIGNhbGxlZCBieSB0aGUgYWJzdHJhY3QgY2xhc3MnIGNvbnN0cnVjdG9yLlxuICAgICAqIEl0IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgY2hpbGQgY2xhc3MgdG8gY2FsbCBpdCBhdCBhbiBhcHByb3ByaWF0ZSBtb21lbnQuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGxvYWRIZWFkZXJzRnJvbVByZWZlcmVuY2VzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB2aWV3SWQgPSB0aGlzLmdldFZpZXdJZCgpO1xuICAgICAgICBpZiAoIXZpZXdJZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByZWZlcnJlZEhlYWRlcktleXMgPSB0aGlzLl9wcmVmZXJlbmNlcy5nZXRIZWFkZXJzKHZpZXdJZCk7XG4gICAgICAgIGlmICghcHJlZmVycmVkSGVhZGVyS2V5cykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld0hlYWRlcnMgPSBbXTtcbiAgICAgICAgcHJlZmVycmVkSGVhZGVyS2V5cy5mb3JFYWNoKGhlYWRlcktleSA9PiB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZpZWxkR3JvdXAgb2YgdGhpcy5maWVsZHNHcm91cCkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaGVhZGVyIG9mIGZpZWxkR3JvdXAuZmllbGRzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChoZWFkZXIudW5pcXVlSWQgPT09IGhlYWRlcktleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3SGVhZGVycy5wdXNoKGhlYWRlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47IC8vIGNvbnRpbnVlIHRoZSBvdXRlcm1vc3QgbG9vcFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gbm8gbWF0Y2ggZm91bmRcbiAgICAgICAgICAgIG5ld0hlYWRlcnMucHVzaChudWxsKTtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci53YXJuKFxuICAgICAgICAgICAgICAgIGBDb3VsZCBub3QgcmVzdG9yZSBoZWFkZXIgd2l0aCBJRCAnJHtoZWFkZXJLZXl9JyBmcm9tIHByZWZlcmVuY2VzLiBJdCBpcyBub3Qgb25lIG9mIHRoZSBhdmFpbGFibGUgaGVhZGVycyBmb3IgdGhpcyB2aWV3LmApO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fcHJlZmVyZW5jZUNvbHVtbkNvdW50JC5uZXh0KG5ld0hlYWRlcnMubGVuZ3RoKTtcbiAgICAgICAgdGhpcy5faGVhZGVyU3RhdGUudXBkYXRlU2VsZWN0ZWRIZWFkZXJzKG5ld0hlYWRlcnMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBjcmVhdGVNZXRhSGVhZGVycygpOiBBcnJheTxIZWFkZXJDb2x1bW4+O1xuXG4gICAgLyoqXG4gICAgICogQ2hhbmdlIHNvcnQgbW9kZSBmb3Igc2VsZWN0ZWQgY29sdW1uIGFsbCBvdGhlciBjb2x1bW4gYXJlIHNldCB0byBkZWZhdWx0IHNvcnQgbW9kZVxuICAgICAqIEVtaXQgcmVxdWVzdCBmb3Igc29ydGVkIHBhbmVsc1xuICAgICAqIEBwYXJhbSBjb2x1bW5JbmRleCBpbmRleCBvZiB0aGUgY29sdW1uIHRoYXQgY2F1c2VkIHRoZSBzb3J0IGNoYW5nZVxuICAgICAqIEBwYXJhbSBhY3RpdmUgUmVwcmVzZW50cyBjb2x1bW4gaWRlbnRpZmllclxuICAgICAqIEBwYXJhbSBkaXJlY3Rpb24gUmVwcmVzZW50IG9uZSBvZiBzb3J0IG1vZGVzOiBhc2QsIGRlc2MgYW5kICcnXG4gICAgICovXG4gICAgcHVibGljIHNvcnRIZWFkZXJDaGFuZ2VkKGNvbHVtbkluZGV4OiBudW1iZXIsIGFjdGl2ZTogc3RyaW5nLCBkaXJlY3Rpb246IFNvcnREaXJlY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgbGV0IHNvcnRDaGFuZ2VEZXNjcmlwdGlvbjogU29ydENoYW5nZURlc2NyaXB0aW9uO1xuICAgICAgICBsZXQgZm91bmRGaXJzdE1hdGNoID0gZmFsc2U7IC8vIGNvbHVtbiBjYW4gZmVhdHVyZSBpbiB0aGUgaGVhZGVyIGluIG11bHRpcGxlIHBvc2l0aW9ucyA9PiB3ZSBkb24ndCB3YW50IHRvIHNlbmQgbXVsdGlwbGUgZXZlbnRzXG4gICAgICAgIHRoaXMuaGVhZGVyU3RhdGUuc2VsZWN0ZWRIZWFkZXJzLmZpbHRlcihoZWFkZXIgPT4gISFoZWFkZXIpLmZvckVhY2goaGVhZGVyID0+IHtcbiAgICAgICAgICAgIGlmIChoZWFkZXIudW5pcXVlSWQgPT09IGFjdGl2ZSAmJiAhZm91bmRGaXJzdE1hdGNoKSB7XG4gICAgICAgICAgICAgICAgc29ydENoYW5nZURlc2NyaXB0aW9uID0ge1xuICAgICAgICAgICAgICAgICAgICBzb3J0RGlyZWN0aW9uOiBkaXJlY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtblR5cGU6IGhlYWRlci50eXBlLFxuICAgICAgICAgICAgICAgICAgICBmaWVsZElkZW50aWZpZXI6IGhlYWRlci5maWVsZElkZW50aWZpZXIsXG4gICAgICAgICAgICAgICAgICAgIHBldHJpTmV0SWRlbnRpZmllcjogaGVhZGVyLnBldHJpTmV0SWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uSWRlbnRpZmllcjogY29sdW1uSW5kZXgsXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkVHlwZTogaGVhZGVyLmZpZWxkVHlwZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgaGVhZGVyLnNvcnREaXJlY3Rpb24gPSBkaXJlY3Rpb247XG4gICAgICAgICAgICAgICAgZm91bmRGaXJzdE1hdGNoID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaGVhZGVyLnNvcnREaXJlY3Rpb24gPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2hlYWRlckNoYW5nZSQubmV4dCh7aGVhZGVyVHlwZTogdGhpcy5oZWFkZXJUeXBlLCBjaGFuZ2VUeXBlOiBIZWFkZXJDaGFuZ2VUeXBlLlNPUlQsIGRlc2NyaXB0aW9uOiBzb3J0Q2hhbmdlRGVzY3JpcHRpb259KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTYXZlcyB0aGUgc2VhcmNoIHZhbHVlIGluIHRoZSBhcHByb3ByaWF0ZSBjb2x1bW4gaW4gdGhlIGhlYWRlclxuICAgICAqIEVtaXQgcmVxdWVzdCBmb3Igc2VhcmNoZWQgcGFuZWxzIGJ5IHVzZXIgaW5wdXQgcXVlcnlcbiAgICAgKi9cbiAgICBwdWJsaWMgaGVhZGVyU2VhcmNoSW5wdXRDaGFuZ2VkKGNvbHVtbkluZGV4OiBudW1iZXIsIHNlYXJjaElucHV0OiBhbnkpIHtcbiAgICAgICAgY29uc3QgYWZmZWN0ZWRIZWFkZXIgPSB0aGlzLmhlYWRlclN0YXRlLnNlbGVjdGVkSGVhZGVyc1tjb2x1bW5JbmRleF07XG4gICAgICAgIGFmZmVjdGVkSGVhZGVyLnNlYXJjaElucHV0ID0gc2VhcmNoSW5wdXQ7XG4gICAgICAgIGNvbnN0IHNlYXJjaENoYW5nZURlc2NyaXB0aW9uOiBTZWFyY2hDaGFuZ2VEZXNjcmlwdGlvbiA9IHtcbiAgICAgICAgICAgIGZpZWxkSWRlbnRpZmllcjogYWZmZWN0ZWRIZWFkZXIuZmllbGRJZGVudGlmaWVyLFxuICAgICAgICAgICAgZmllbGRUeXBlOiBhZmZlY3RlZEhlYWRlci5maWVsZFR5cGUsXG4gICAgICAgICAgICBmaWVsZFRpdGxlOiBhZmZlY3RlZEhlYWRlci50aXRsZSxcbiAgICAgICAgICAgIHNlYXJjaElucHV0LFxuICAgICAgICAgICAgdHlwZTogYWZmZWN0ZWRIZWFkZXIudHlwZSxcbiAgICAgICAgICAgIHBldHJpTmV0SWRlbnRpZmllcjogYWZmZWN0ZWRIZWFkZXIucGV0cmlOZXRJZGVudGlmaWVyLFxuICAgICAgICAgICAgY29sdW1uSWRlbnRpZmllcjogY29sdW1uSW5kZXhcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5faGVhZGVyQ2hhbmdlJC5uZXh0KHtcbiAgICAgICAgICAgIGhlYWRlclR5cGU6IHRoaXMuaGVhZGVyVHlwZSxcbiAgICAgICAgICAgIGNoYW5nZVR5cGU6IEhlYWRlckNoYW5nZVR5cGUuU0VBUkNILFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHNlYXJjaENoYW5nZURlc2NyaXB0aW9uXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoYW5nZSBhY3RpdmUgaGVhZGVyIGFuZCB0aXRsZXMgb2YgcGFuZWxzXG4gICAgICovXG4gICAgcHVibGljIGhlYWRlckNvbHVtblNlbGVjdGVkKGNvbHVtbkluZGV4OiBudW1iZXIsIG5ld0hlYWRlckNvbHVtbjogSGVhZGVyQ29sdW1uKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5ld0hlYWRlcnM6IEFycmF5PEhlYWRlckNvbHVtbj4gPSBbXTtcbiAgICAgICAgbmV3SGVhZGVycy5wdXNoKC4uLnRoaXMuX2hlYWRlclN0YXRlLnNlbGVjdGVkSGVhZGVycyk7XG4gICAgICAgIGlmICghIW5ld0hlYWRlcnNbY29sdW1uSW5kZXhdKSB7XG4gICAgICAgICAgICBuZXdIZWFkZXJzW2NvbHVtbkluZGV4XS5zb3J0RGlyZWN0aW9uID0gJyc7XG4gICAgICAgICAgICBuZXdIZWFkZXJzW2NvbHVtbkluZGV4XS5zZWFyY2hJbnB1dCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBuZXdIZWFkZXJzW2NvbHVtbkluZGV4XSA9IG5ld0hlYWRlckNvbHVtbjtcbiAgICAgICAgdGhpcy5faGVhZGVyU3RhdGUudXBkYXRlU2VsZWN0ZWRIZWFkZXJzKG5ld0hlYWRlcnMpO1xuICAgICAgICB0aGlzLl9oZWFkZXJDaGFuZ2UkLm5leHQoe1xuICAgICAgICAgICAgaGVhZGVyVHlwZTogdGhpcy5oZWFkZXJUeXBlLFxuICAgICAgICAgICAgY2hhbmdlVHlwZTogSGVhZGVyQ2hhbmdlVHlwZS5FRElULFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHtwcmVmZXJyZWRIZWFkZXJzOiB0aGlzLl9oZWFkZXJTdGF0ZS5zZWxlY3RlZEhlYWRlcnN9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoYW5nZSBzZWxlY3RlZCBoZWFkZXIgbW9kZSB0aGVyZSBhcmUgdGhyZWUgcG9zc2libGUgbW9kZXM6IFNPUlQsIFNFQVJDSCBhbmQgRURJVFxuICAgICAqIEBwYXJhbSBuZXdNb2RlIHRoZSBtb2RlIHRoYXQgdGhlIGhlYWRlciBzaG91bGQgY2hhbmdlIHRvXG4gICAgICogQHBhcmFtIHNhdmVMYXN0TW9kZSB3aGV0aGVyIHRoZSBsYXN0IHN0YXRlIHNob3VsZCBiZSByZW1lbWJlcmVkLlxuICAgICAqIEl0IGNhbiBiZSByZXN0b3JlZCB3aXRoIHRoZSBbSGVhZGVyU3RhdGUucmVzdG9yZUxhc3RNb2RlKClde0BsaW5rIEhlYWRlclN0YXRlI3Jlc3RvcmVMYXN0TW9kZX0gbWV0aG9kLlxuICAgICAqL1xuICAgIHB1YmxpYyBjaGFuZ2VNb2RlKG5ld01vZGU6IEhlYWRlck1vZGUsIHNhdmVMYXN0TW9kZSA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgaWYgKG5ld01vZGUgPT09IHRoaXMuX2hlYWRlclN0YXRlLm1vZGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzYXZlTGFzdE1vZGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2hlYWRlclN0YXRlLnNhdmVTdGF0ZSgpO1xuICAgICAgICAgICAgdGhpcy5zYXZlU3RhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNoYW5nZSA9IHRoaXMubW9kZUNoYW5nZUZyb21DdXJyZW50KG5ld01vZGUpO1xuICAgICAgICB0aGlzLl9oZWFkZXJTdGF0ZS5tb2RlID0gbmV3TW9kZTtcbiAgICAgICAgdGhpcy5faGVhZGVyQ2hhbmdlJC5uZXh0KGNoYW5nZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNvbmZpcm1FZGl0TW9kZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faGVhZGVyU3RhdGUucmVzdG9yZUxhc3RNb2RlKCk7XG4gICAgICAgIHRoaXMuc2F2ZU5ld1N0YXRlKCk7XG4gICAgICAgIGNvbnN0IGNoYW5nZSA9IHRoaXMubW9kZUNoYW5nZUFmdGVyRWRpdCgpO1xuICAgICAgICBjb25zdCB2aWV3SWQgPSB0aGlzLmdldFZpZXdJZCgpO1xuICAgICAgICBpZiAoISF2aWV3SWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmhlYWRlclN0YXRlLnNlbGVjdGVkSGVhZGVycztcbiAgICAgICAgICAgIHRoaXMuX3ByZWZlcmVuY2VzLnNldEhlYWRlcnModmlld0lkLCBoZWFkZXJzLm1hcChoZWFkZXIgPT4gISFoZWFkZXIgPyBoZWFkZXIudW5pcXVlSWQgOiAnJykpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2hlYWRlckNoYW5nZSQubmV4dChjaGFuZ2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdoZW4gdXNlciBjYW5jZWxzIHRoZSBlZGl0IG1vZGUsIHRoZSBsYXN0IHNhdmVkIGhlYWRlcnMgc3RhdGUgaXMgbG9hZGVkIGFuZCBlbWl0dGVkXG4gICAgICogTGFzdCBtb2RlIGluIGhlYWRlciBpcyByZWxvYWRlZCBhcyB3ZWxsLiBQb3NzaWJsZSByZWxvYWRlZCBtb2Rlczogc29ydCBvciBzZWFyY2hcbiAgICAgKi9cbiAgICBwdWJsaWMgcmV2ZXJ0RWRpdE1vZGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2hlYWRlclN0YXRlLnJlc3RvcmVMYXN0U3RhdGUoKTtcbiAgICAgICAgdGhpcy5yZXN0b3JlTGFzdFN0YXRlKCk7XG4gICAgICAgIGNvbnN0IGNoYW5nZSA9IHRoaXMubW9kZUNoYW5nZUFmdGVyRWRpdCgpO1xuICAgICAgICB0aGlzLl9oZWFkZXJDaGFuZ2UkLm5leHQoe1xuICAgICAgICAgICAgaGVhZGVyVHlwZTogdGhpcy5oZWFkZXJUeXBlLFxuICAgICAgICAgICAgY2hhbmdlVHlwZTogSGVhZGVyQ2hhbmdlVHlwZS5FRElULFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHtwcmVmZXJyZWRIZWFkZXJzOiB0aGlzLl9oZWFkZXJTdGF0ZS5zZWxlY3RlZEhlYWRlcnN9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9oZWFkZXJDaGFuZ2UkLm5leHQoY2hhbmdlKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faGVhZGVyQ2hhbmdlJC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9jbGVhckhlYWRlclNlYXJjaCQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5faGVhZGVyQ29sdW1uQ291bnQkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX3Jlc3BvbnNpdmVIZWFkZXJzJC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLmxvYWRpbmcuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5fcHJlZmVyZW5jZUNvbHVtbkNvdW50JC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBuZXdNb2RlIHRoZSB7QGxpbmsgSGVhZGVyTW9kZX0gdGhhdCBpcyBiZWluZyBzZWxlY3RlZCBhcyB0aGUgbmV4dCBtb2RlXG4gICAgICogQHJldHVybnNhIHtAbGluayBIZWFkZXJDaGFuZ2V9IG9iamVjdCB3aXRoIHtAbGluayBNb2RlQ2hhbmdlRGVzY3JpcHRpb259IG9iamVjdCBhcyBpdCdzIGBkZXNjcmlwdGlvbmAsXG4gICAgICogd2hlcmUgdGhlIGBwcmV2aW91c01vZGVgIGlzIHNldCB0byB0aGUgY3VycmVudGx5IHNlbGVjdGVkIG1vZGUgYW5kIHRoZSBgY3VycmVudE1vZGVgIGlzIHNldCB0byB0aGUgcHJvdmlkZWQgYXJndW1lbnRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgbW9kZUNoYW5nZUZyb21DdXJyZW50KG5ld01vZGU6IEhlYWRlck1vZGUpOiBIZWFkZXJDaGFuZ2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVNb2RlQ2hhbmdlKHRoaXMuX2hlYWRlclN0YXRlLm1vZGUsIG5ld01vZGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIGEge0BsaW5rIEhlYWRlckNoYW5nZX0gb2JqZWN0IHdpdGgge0BsaW5rIE1vZGVDaGFuZ2VEZXNjcmlwdGlvbn0gb2JqZWN0IGFzIGl0J3MgYGRlc2NyaXB0aW9uYCxcbiAgICAgKiB3aGVyZSB0aGUgYHByZXZpb3VzTW9kZWAgaXMgc2V0IHRvIFtFRElUXXtAbGluayBIZWFkZXJNb2RlI0VESVR9IGFuZCB0aGUgYGN1cnJlbnRNb2RlYCB0byB0aGUgbW9kZVxuICAgICAqIHRoYXQgaXMgY3VycmVudGx5IHNlbGVjdGVkXG4gICAgICovXG4gICAgcHJvdGVjdGVkIG1vZGVDaGFuZ2VBZnRlckVkaXQoKTogSGVhZGVyQ2hhbmdlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlTW9kZUNoYW5nZShIZWFkZXJNb2RlLkVESVQsIHRoaXMuX2hlYWRlclN0YXRlLm1vZGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBvbGRNb2RlIHRoZSB7QGxpbmsgSGVhZGVyTW9kZX0gdGhhdCB3YXMgcHJldmlvdXNseSBzZWxlY3RlZFxuICAgICAqIEBwYXJhbSBuZXdNb2RlIHRoZSB7QGxpbmsgSGVhZGVyTW9kZX0gdGhhdCBpcyBzZWxlY3RlZCBub3dcbiAgICAgKiBAcmV0dXJucyBhIHtAbGluayBIZWFkZXJDaGFuZ2V9IG9iamVjdCB3aXRoIHtAbGluayBNb2RlQ2hhbmdlRGVzY3JpcHRpb259IG9iamVjdCBhcyBpdCdzIGBkZXNjcmlwdGlvbmBcbiAgICAgKiBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IGEgY2hhbmdlIHRvIHRoZSBoZWFkZXIgbW9kZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBjcmVhdGVNb2RlQ2hhbmdlKG9sZE1vZGU6IEhlYWRlck1vZGUsIG5ld01vZGU6IEhlYWRlck1vZGUpOiBIZWFkZXJDaGFuZ2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2hhbmdlVHlwZTogSGVhZGVyQ2hhbmdlVHlwZS5NT0RFX0NIQU5HRUQsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRNb2RlOiBuZXdNb2RlLFxuICAgICAgICAgICAgICAgIHByZXZpb3VzTW9kZTogb2xkTW9kZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhlYWRlclR5cGU6IHRoaXMuaGVhZGVyVHlwZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVtaXRzIGEgbmV3IHZhbHVlIGludG8gdGhlIFtjbGVhckhlYWRlclNlYXJjaCRde0BsaW5rIEFic3RyYWN0SGVhZGVyU2VydmljZSNjbGVhckhlYWRlclNlYXJjaCR9IHN0cmVhbSwgdGhhdCBub3RpZmllc1xuICAgICAqIHRoZSBoZWFkZXIgc2VhcmNoIGNvbXBvbmVudCwgdGhhdCBpdCBzaG91bGQgY2xlYXIgdGhlIGlucHV0IGZvciB0aGUgc3BlY2lmaWVkIGNvbHVtbi5cbiAgICAgKiBAcGFyYW0gY29sdW1uSW5kZXggdGhlIGluZGV4IG9mIHRoZSBjb2x1bW4gdGhhdCBzaG91bGQgYmUgY2xlYXJlZFxuICAgICAqL1xuICAgIHB1YmxpYyBjbGVhckhlYWRlclNlYXJjaChjb2x1bW5JbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NsZWFySGVhZGVyU2VhcmNoJC5uZXh0KGNvbHVtbkluZGV4KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyB0aGUgSWQgb2YgdGhlIHZpZXcsIGlmIHRoZSBWaWV3SWRTZXJ2aWNlIHdhcyBpbmplY3RlZC4gUmV0dXJucyBgdW5kZWZpbmVkYCBpZiB0aGUgc2VydmljZSB3YXMgbm90IGluamVjdGVkLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBnZXRWaWV3SWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHRoaXMuX3ZpZXdJZFNlcnZpY2UpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl92aWV3SWRTZXJ2aWNlLnZpZXdJZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBzYXZlU3RhdGUoKTtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBzYXZlTmV3U3RhdGUoKTtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCByZXN0b3JlTGFzdFN0YXRlKCk7XG59XG4iXX0=
411
+ }] }]; } });
412
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtaGVhZGVyLXNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL2hlYWRlci9hYnN0cmFjdC1oZWFkZXItc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsZUFBZSxFQUFjLGFBQWEsRUFBRSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFekUsT0FBTyxFQUFDLFdBQVcsRUFBdUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQUMsVUFBVSxFQUFhLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQU05RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxFQUFDLFlBQVksRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBR3RFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUUxRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7OztBQU0xRSxNQUFNLE9BQWdCLHFCQUFxQjtJQWlCdkMsWUFBZ0MsV0FBdUIsRUFDdkIsWUFBbUMsRUFDbkMsT0FBc0IsRUFDWixjQUE2QixFQUMzQixnQkFBaUM7UUFKN0MsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIsaUJBQVksR0FBWixZQUFZLENBQXVCO1FBQ25DLFlBQU8sR0FBUCxPQUFPLENBQWU7UUFDWixtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUMzQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWlCO1FBQ3pFLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLE9BQU8sRUFBZ0IsQ0FBQztRQUNsRCxJQUFJLENBQUMsV0FBVyxHQUFHLENB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QVUsRUFBRSxnQkFBZ0IsQ0FBQyxZQUFZO1lBQ3pDLFdBQVcsRUFBRTtnQkFDVCxXQUFXLEVBQUUsT0FBTztnQkFDcEIsWUFBWSxFQUFFLE9BQU87YUFDeEI7WUFDRCxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7U0FDOUIsQ0FBQztJQUNOLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksaUJBQWlCLENBQUMsV0FBbUI7UUFDeEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7O09BRUc7SUFDTyxTQUFTO1FBQ2YsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3JCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUM7U0FDckM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDOztBQTlic0IsMENBQW9CLEdBQUcsQ0FBRSxDQUFBO0FBQ3pCLGlEQUEyQixHQUFHLElBQUssQ0FBQTttSEFIeEMscUJBQXFCO3VIQUFyQixxQkFBcUI7NEZBQXJCLHFCQUFxQjtrQkFEMUMsVUFBVTs7MEJBcUJnQixRQUFROzswQkFDUixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtGaWVsZHNHcm91cH0gZnJvbSAnLi9tb2RlbHMvZmllbGRzLWdyb3VwJztcbmltcG9ydCB7SGVhZGVyU3RhdGUsIEhlYWRlclN0YXRlSW50ZXJmYWNlfSBmcm9tICcuL2hlYWRlci1zdGF0ZSc7XG5pbXBvcnQge0luamVjdGFibGUsIE9uRGVzdHJveSwgT3B0aW9uYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTb3J0Q2hhbmdlRGVzY3JpcHRpb259IGZyb20gJy4vbW9kZWxzL3VzZXItY2hhbmdlcy9zb3J0LWNoYW5nZS1kZXNjcmlwdGlvbic7XG5pbXBvcnQge1NlYXJjaENoYW5nZURlc2NyaXB0aW9ufSBmcm9tICcuL21vZGVscy91c2VyLWNoYW5nZXMvc2VhcmNoLWNoYW5nZS1kZXNjcmlwdGlvbic7XG5pbXBvcnQge0hlYWRlckNoYW5nZX0gZnJvbSAnLi9tb2RlbHMvdXNlci1jaGFuZ2VzL2hlYWRlci1jaGFuZ2UnO1xuaW1wb3J0IHtQZXRyaU5ldFJlZmVyZW5jZX0gZnJvbSAnLi4vcmVzb3VyY2VzL2ludGVyZmFjZS9wZXRyaS1uZXQtcmVmZXJlbmNlJztcbmltcG9ydCB7SGVhZGVyVHlwZX0gZnJvbSAnLi9tb2RlbHMvaGVhZGVyLXR5cGUnO1xuaW1wb3J0IHtIZWFkZXJNb2RlfSBmcm9tICcuL21vZGVscy9oZWFkZXItbW9kZSc7XG5pbXBvcnQge0hlYWRlckNvbHVtbiwgSGVhZGVyQ29sdW1uVHlwZX0gZnJvbSAnLi9tb2RlbHMvaGVhZGVyLWNvbHVtbic7XG5pbXBvcnQge1VzZXJQcmVmZXJlbmNlU2VydmljZX0gZnJvbSAnLi4vdXNlci9zZXJ2aWNlcy91c2VyLXByZWZlcmVuY2Uuc2VydmljZSc7XG5pbXBvcnQge0xvZ2dlclNlcnZpY2V9IGZyb20gJy4uL2xvZ2dlci9zZXJ2aWNlcy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQge0xvYWRpbmdFbWl0dGVyfSBmcm9tICcuLi91dGlsaXR5L2xvYWRpbmctZW1pdHRlcic7XG5pbXBvcnQge1NvcnREaXJlY3Rpb259IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xuaW1wb3J0IHtIZWFkZXJDaGFuZ2VUeXBlfSBmcm9tICcuL21vZGVscy91c2VyLWNoYW5nZXMvaGVhZGVyLWNoYW5nZS10eXBlJztcbmltcG9ydCB7Vmlld0lkU2VydmljZX0gZnJvbSAnLi4vdXNlci9zZXJ2aWNlcy92aWV3LWlkLnNlcnZpY2UnO1xuaW1wb3J0IHtOZXR9IGZyb20gJy4uL3Byb2Nlc3MvbmV0JztcbmltcG9ydCB7T3ZlcmZsb3dTZXJ2aWNlfSBmcm9tICcuL3NlcnZpY2VzL292ZXJmbG93LnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RIZWFkZXJTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9IRUFERVJfQ09VTlQgPSA1O1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9IRUFERVJfUkVTUE9OU0lWSVRZID0gdHJ1ZTtcblxuICAgIHByb3RlY3RlZCBfaGVhZGVyQ29sdW1uQ291bnQkOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPjtcbiAgICBwcm90ZWN0ZWQgX3ByZWZlcmVuY2VDb2x1bW5Db3VudCQ6IFJlcGxheVN1YmplY3Q8bnVtYmVyPjtcbiAgICBwcm90ZWN0ZWQgX3Jlc3BvbnNpdmVIZWFkZXJzJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+O1xuICAgIHByb3RlY3RlZCBfaGVhZGVyU3RhdGU6IEhlYWRlclN0YXRlO1xuICAgIHByb3RlY3RlZCBfaGVhZGVyQ2hhbmdlJDogU3ViamVjdDxIZWFkZXJDaGFuZ2U+O1xuICAgIHByb3RlY3RlZCBfY2xlYXJIZWFkZXJTZWFyY2gkOiBTdWJqZWN0PG51bWJlcj47XG4gICAgcHJpdmF0ZSBfaW5pdERlZmF1bHRIZWFkZXJzOiBBcnJheTxzdHJpbmc+O1xuICAgIHByaXZhdGUgX2luaXRpYWxpemVkQ291bnQ6IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgbG9hZGluZzogTG9hZGluZ0VtaXR0ZXI7XG4gICAgcHVibGljIGZpZWxkc0dyb3VwOiBBcnJheTxGaWVsZHNHcm91cD47XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IocHJvdGVjdGVkIF9oZWFkZXJUeXBlOiBIZWFkZXJUeXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3ByZWZlcmVuY2VzOiBVc2VyUHJlZmVyZW5jZVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF92aWV3SWRTZXJ2aWNlOiBWaWV3SWRTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgX292ZXJmbG93U2VydmljZTogT3ZlcmZsb3dTZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IG5ldyBMb2FkaW5nRW1pdHRlcih0cnVlKTtcbiAgICAgICAgdGhpcy5faGVhZGVyQ2hhbmdlJCA9IG5ldyBTdWJqZWN0PEhlYWRlckNoYW5nZT4oKTtcbiAgICAgICAgdGhpcy5maWVsZHNHcm91cCA9IFt7Z3JvdXBUaXRsZTogJ01ldGEgZGF0YScsIGZpZWxkczogdGhpcy5jcmVhdGVNZXRhSGVhZGVycygpfV07XG4gICAgICAgIHRoaXMuX2hlYWRlckNvbHVtbkNvdW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPihBYnN0cmFjdEhlYWRlclNlcnZpY2UuREVGQVVMVF9IRUFERVJfQ09VTlQpO1xuICAgICAgICB0aGlzLl9yZXNwb25zaXZlSGVhZGVycyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KEFic3RyYWN0SGVhZGVyU2VydmljZS5ERUZBVUxUX0hFQURFUl9SRVNQT05TSVZJVFkpO1xuICAgICAgICB0aGlzLl9wcmVmZXJlbmNlQ29sdW1uQ291bnQkID0gbmV3IFJlcGxheVN1YmplY3Q8bnVtYmVyPigpO1xuICAgICAgICB0aGlzLl9jbGVhckhlYWRlclNlYXJjaCQgPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XG4gICAgICAgIHRoaXMuX2luaXRpYWxpemVkQ291bnQgPSBmYWxzZTtcblxuICAgICAgICBpZiAodGhpcy5fdmlld0lkU2VydmljZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ0hlYWRlciBzZXJ2aWNlIGNvdWxkIG5vdCBpbmplY3QgVmlld0lkU2VydmljZSEgVXNlciBwcmVmZXJlbmNlcyB3b25cXCd0IGJlIGxvYWRlZCBvciBzYXZlZCEnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3ByZWZlcmVuY2VzLnByZWZlcmVuY2VzQ2hhbmdlZCQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZEhlYWRlcnNGcm9tUHJlZmVyZW5jZXMoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5pbml0aWFsaXplSGVhZGVyU3RhdGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm92aWRlcyBPYnNlcnZhYmxlIGZvciBhbGwgY2hhbmdlcyBpbiBoZWFkZXJcbiAgICAgKi9cbiAgICBnZXQgaGVhZGVyQ2hhbmdlJCgpOiBPYnNlcnZhYmxlPEhlYWRlckNoYW5nZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faGVhZGVyQ2hhbmdlJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBnZXQgc2VsZWN0ZWRIZWFkZXJzJCgpOiBPYnNlcnZhYmxlPEFycmF5PEhlYWRlckNvbHVtbj4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hlYWRlclN0YXRlLnNlbGVjdGVkSGVhZGVycyQ7XG4gICAgfVxuXG4gICAgZ2V0IGhlYWRlclN0YXRlKCk6IEhlYWRlclN0YXRlSW50ZXJmYWNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hlYWRlclN0YXRlLmFzSW50ZXJmYWNlKCk7XG4gICAgfVxuXG4gICAgZ2V0IGhlYWRlclR5cGUoKTogSGVhZGVyVHlwZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oZWFkZXJUeXBlO1xuICAgIH1cblxuICAgIGdldCBvdmVyZmxvd01vZGUoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghIXRoaXMuX292ZXJmbG93U2VydmljZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX292ZXJmbG93U2VydmljZS5vdmVyZmxvd01vZGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgaGVhZGVyQ29sdW1uQ291bnQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hlYWRlckNvbHVtbkNvdW50JC5nZXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIHNldCBoZWFkZXJDb2x1bW5Db3VudChtYXhDb2x1bW5zOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKG1heENvbHVtbnMgIT09IHRoaXMuaGVhZGVyQ29sdW1uQ291bnQpIHtcbiAgICAgICAgICAgIHRoaXMuX2hlYWRlckNvbHVtbkNvdW50JC5uZXh0KG1heENvbHVtbnMpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVIZWFkZXJDb2x1bW5Db3VudCgpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9pbml0aWFsaXplZENvdW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplRGVmYXVsdEhlYWRlclN0YXRlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZWRDb3VudCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgaGVhZGVyQ29sdW1uQ291bnQkKCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oZWFkZXJDb2x1bW5Db3VudCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgZ2V0IHJlc3BvbnNpdmVIZWFkZXJzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzcG9uc2l2ZUhlYWRlcnMkLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgc2V0IHJlc3BvbnNpdmVIZWFkZXJzKHJlc3BvbnNpdmVIZWFkZXJzOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3Jlc3BvbnNpdmVIZWFkZXJzJC5uZXh0KHJlc3BvbnNpdmVIZWFkZXJzKTtcbiAgICB9XG5cbiAgICBnZXQgcmVzcG9uc2l2ZUhlYWRlcnMkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzcG9uc2l2ZUhlYWRlcnMkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIGdldCBjbGVhckhlYWRlclNlYXJjaCQoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NsZWFySGVhZGVyU2VhcmNoJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBzZXQgaW5pdERlZmF1bHRIZWFkZXJzKGRlZmF1bHRIZWFkZXJzOiBBcnJheTxzdHJpbmc+KSB7XG4gICAgICAgIHRoaXMuX2luaXREZWZhdWx0SGVhZGVycyA9IGRlZmF1bHRIZWFkZXJzO1xuICAgIH1cblxuICAgIGdldCBpbml0RGVmYXVsdEhlYWRlcnMoKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbml0RGVmYXVsdEhlYWRlcnM7XG4gICAgfVxuXG4gICAgZ2V0IHByZWZlcmVuY2VDb2x1bW5Db3VudCQoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ByZWZlcmVuY2VDb2x1bW5Db3VudCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplSGVhZGVyU3RhdGUoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRIZWFkZXJzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5maWVsZHNHcm91cFswXS5maWVsZHMubGVuZ3RoICYmIGRlZmF1bHRIZWFkZXJzLmxlbmd0aCA8IHRoaXMuaGVhZGVyQ29sdW1uQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZmllbGRzR3JvdXBbMF0uZmllbGRzW2ldLmluaXRpYWwpIHtcbiAgICAgICAgICAgICAgICBkZWZhdWx0SGVhZGVycy5wdXNoKHRoaXMuZmllbGRzR3JvdXBbMF0uZmllbGRzW2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoZGVmYXVsdEhlYWRlcnMubGVuZ3RoIDwgdGhpcy5oZWFkZXJDb2x1bW5Db3VudCkge1xuICAgICAgICAgICAgZGVmYXVsdEhlYWRlcnMucHVzaChudWxsKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9oZWFkZXJTdGF0ZSA9IG5ldyBIZWFkZXJTdGF0ZShkZWZhdWx0SGVhZGVycyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGluaXRpYWxpemVEZWZhdWx0SGVhZGVyU3RhdGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmluaXREZWZhdWx0SGVhZGVycyAmJiBBcnJheS5pc0FycmF5KHRoaXMuaW5pdERlZmF1bHRIZWFkZXJzKSkge1xuICAgICAgICAgICAgY29uc3QgZGVmYXVsdEhlYWRlcnMgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5oZWFkZXJDb2x1bW5Db3VudDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgZGVmYXVsdEhlYWRlcnMucHVzaChudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5pbml0RGVmYXVsdEhlYWRlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaSA+PSB0aGlzLmhlYWRlckNvbHVtbkNvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCd0aGVyZSBhcmUgbW9yZSBOQUVfREVGQVVMVF9IRUFERVJTIHRoYW4gaGVhZGVyIGNvbHVtbnMuIFNraXBwaW5nIHRoZSByZXN0Li4uJyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGggb2YgdGhpcy5maWVsZHNHcm91cCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBoZWFkID0gaC5maWVsZHMuZmluZChoZWFkZXIgPT4gaGVhZGVyLnVuaXF1ZUlkID09PSB0aGlzLmluaXREZWZhdWx0SGVhZGVyc1tpXSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChoZWFkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0SGVhZGVyc1tpXSA9IGhlYWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX2hlYWRlclN0YXRlLnVwZGF0ZVNlbGVjdGVkSGVhZGVycyhkZWZhdWx0SGVhZGVycyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2FkSGVhZGVyc0Zyb21QcmVmZXJlbmNlcygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgYG51bGxgIGhlYWRlcnMgaWYgdGhlIG5ldyBjb3VudCBpcyBncmVhdGVyIHRoYW4gdGhlIGN1cnJlbnQgY291bnQuXG4gICAgICpcbiAgICAgKiBSZW1vdmVzIGV4dHJhIGhlYWRlcnMgaWYgdGhlIG5ldyBjb3VudCBpcyBzbWFsbGVyIHRoYW4gdGhlIGN1cnJlbnQgY291bnQuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHVwZGF0ZUhlYWRlckNvbHVtbkNvdW50KCk6IHZvaWQge1xuICAgICAgICBsZXQgaGVhZGVycyA9IHRoaXMuX2hlYWRlclN0YXRlLnNlbGVjdGVkSGVhZGVycztcbiAgICAgICAgaWYgKGhlYWRlcnMubGVuZ3RoIDwgdGhpcy5oZWFkZXJDb2x1bW5Db3VudCkge1xuICAgICAgICAgICAgd2hpbGUgKGhlYWRlcnMubGVuZ3RoICE9PSB0aGlzLmhlYWRlckNvbHVtbkNvdW50KSB7XG4gICAgICAgICAgICAgICAgaGVhZGVycy5wdXNoKG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGhlYWRlcnMubGVuZ3RoID4gdGhpcy5oZWFkZXJDb2x1bW5Db3VudCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2xpY2UoMCwgdGhpcy5oZWFkZXJDb2x1bW5Db3VudCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faGVhZGVyU3RhdGUudXBkYXRlU2VsZWN0ZWRIZWFkZXJzKGhlYWRlcnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRBbGxvd2VkTmV0cyhhbGxvd2VkTmV0czogQXJyYXk8UGV0cmlOZXRSZWZlcmVuY2U+KSB7XG4gICAgICAgIC8qIFRPRE8gYnkgc2ltcGx5IHJlcGxhY2luZyB0aGUgc2VsZWN0IG9wdGlvbnMgd2l0aCBuZXcgb2JqZWN0LCB3ZSBkb24ndCBsb29zZSB0aGUgb2xkIHJlZmVyZW5jZXMuXG4gICAgICAgICAgICAgQ29sdW1ucyB3aXRoIGhlYWRlcnMgZnJvbSBuZXRzIHRoYXQgYXJlIG5vIGxvbmdlciBhbGxvd2VkIHNob3VsZCBoYXZlIHRoZWlyIHZhbHVlIGNsZWFyZWQuXG4gICAgICAgICAgICAgQ29sdW1ucyB3aXRoIHZhbGlkIHZhbHVlcyB0aGF0IGFyZSBub3QgbWV0YWRhdGEgc2hvdWxkIGhhdmUgdGhlaXIgc2VsZWN0aW9uIHJlbWFwcGVkIHRvIHRoZSBuZXcgb2JqZWN0cy5cbiAgICAgICAgICovXG5cbiAgICAgICAgY29uc3QgZmllbGRzR3JvdXBzOiBBcnJheTxGaWVsZHNHcm91cD4gPSBbXTtcbiAgICAgICAgYWxsb3dlZE5ldHMuZm9yRWFjaChhbGxvd2VkTmV0ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkc0dyb3VwOiBGaWVsZHNHcm91cCA9IHtcbiAgICAgICAgICAgICAgICBncm91cFRpdGxlOiBhbGxvd2VkTmV0LnRpdGxlLFxuICAgICAgICAgICAgICAgIGZpZWxkczogW11cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBhbGxvd2VkTmV0LmltbWVkaWF0ZURhdGEuZm9yRWFjaChpbW1lZGlhdGUgPT4ge1xuICAgICAgICAgICAgICAgIGZpZWxkc0dyb3VwLmZpZWxkcy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgSGVhZGVyQ29sdW1uKEhlYWRlckNvbHVtblR5cGUuSU1NRURJQVRFLCBpbW1lZGlhdGUuc3RyaW5nSWQsIGltbWVkaWF0ZS50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltbWVkaWF0ZS50eXBlLCBmYWxzZSwgYWxsb3dlZE5ldC5pZGVudGlmaWVyKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGZpZWxkc0dyb3Vwcy5wdXNoKGZpZWxkc0dyb3VwKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5maWVsZHNHcm91cC5zcGxpY2UoMSwgdGhpcy5maWVsZHNHcm91cC5sZW5ndGggLSAxKTtcbiAgICAgICAgdGhpcy5maWVsZHNHcm91cC5wdXNoKC4uLmZpZWxkc0dyb3Vwcyk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFRhc2tBbGxvd2VkTmV0cyhhbGxvd2VkTmV0czogQXJyYXk8TmV0Pikge1xuICAgICAgICAvKiBUT0RPIGJ5IHNpbXBseSByZXBsYWNpbmcgdGhlIHNlbGVjdCBvcHRpb25zIHdpdGggbmV3IG9iamVjdCwgd2UgZG9uJ3QgbG9vc2UgdGhlIG9sZCByZWZlcmVuY2VzLlxuICAgICAgICAgICAgIENvbHVtbnMgd2l0aCBoZWFkZXJzIGZyb20gbmV0cyB0aGF0IGFyZSBubyBsb25nZXIgYWxsb3dlZCBzaG91bGQgaGF2ZSB0aGVpciB2YWx1ZSBjbGVhcmVkLlxuICAgICAgICAgICAgIENvbHVtbnMgd2l0aCB2YWxpZCB2YWx1ZXMgdGhhdCBhcmUgbm90IG1ldGFkYXRhIHNob3VsZCBoYXZlIHRoZWlyIHNlbGVjdGlvbiByZW1hcHBlZCB0byB0aGUgbmV3IG9iamVjdHMuXG4gICAgICAgICAqL1xuXG4gICAgICAgIGNvbnN0IGZpZWxkc0dyb3VwczogQXJyYXk8RmllbGRzR3JvdXA+ID0gW107XG4gICAgICAgIGFsbG93ZWROZXRzLmZvckVhY2goYWxsb3dlZE5ldCA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWVsZHNHcm91cDogRmllbGRzR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgZ3JvdXBUaXRsZTogYWxsb3dlZE5ldC50aXRsZSxcbiAgICAgICAgICAgICAgICBmaWVsZHM6IFtdXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBuZXcgU2V0KCk7XG4gICAgICAgICAgICBhbGxvd2VkTmV0LnRyYW5zaXRpb25zLmZvckVhY2godHJhbnMgPT4ge1xuICAgICAgICAgICAgICAgIHRyYW5zLmltbWVkaWF0ZURhdGEuZm9yRWFjaChkYXRhID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFleGlzdGluZy5oYXMoZGF0YS5zdHJpbmdJZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nLmFkZChkYXRhLnN0cmluZ0lkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkc0dyb3VwLmZpZWxkcy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBIZWFkZXJDb2x1bW4oSGVhZGVyQ29sdW1uVHlwZS5JTU1FRElBVEUsIGRhdGEuc3RyaW5nSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEudGl0bGUsIGRhdGEudHlwZSwgZmFsc2UsIGFsbG93ZWROZXQuaWRlbnRpZmllcilcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZmllbGRzR3JvdXBzLnB1c2goZmllbGRzR3JvdXApO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmZpZWxkc0dyb3VwLnNwbGljZSgxLCB0aGlzLmZpZWxkc0dyb3VwLmxlbmd0aCAtIDEpO1xuICAgICAgICB0aGlzLmZpZWxkc0dyb3VwLnB1c2goLi4uZmllbGRzR3JvdXBzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJZiB0aGlzIHZpZXcgaGFzIHNvbSBoZWFkZXJzIHN0b3JlZCBpbiBpdCdzIHByZWZlcmVuY2VzIGF0dGVtcHRzIHRvIGxvYWQgdGhlbS5cbiAgICAgKiBJZiB0aGUgcHJlZmVyZW5jZXMgY29udGFpbiBub25leGlzdGVudCBoZWFkZXJzIHRoZXkgd2lsbCBiZSBza2lwcGVkLlxuICAgICAqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBOT1QgY2FsbGVkIGJ5IHRoZSBhYnN0cmFjdCBjbGFzcycgY29uc3RydWN0b3IuXG4gICAgICogSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBjaGlsZCBjbGFzcyB0byBjYWxsIGl0IGF0IGFuIGFwcHJvcHJpYXRlIG1vbWVudC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgbG9hZEhlYWRlcnNGcm9tUHJlZmVyZW5jZXMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZpZXdJZCA9IHRoaXMuZ2V0Vmlld0lkKCk7XG4gICAgICAgIGlmICghdmlld0lkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcHJlZmVycmVkSGVhZGVyS2V5cyA9IHRoaXMuX3ByZWZlcmVuY2VzLmdldEhlYWRlcnModmlld0lkKTtcbiAgICAgICAgaWYgKCFwcmVmZXJyZWRIZWFkZXJLZXlzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3SGVhZGVycyA9IFtdO1xuICAgICAgICBwcmVmZXJyZWRIZWFkZXJLZXlzLmZvckVhY2goaGVhZGVyS2V5ID0+IHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZmllbGRHcm91cCBvZiB0aGlzLmZpZWxkc0dyb3VwKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBoZWFkZXIgb2YgZmllbGRHcm91cC5maWVsZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhlYWRlci51bmlxdWVJZCA9PT0gaGVhZGVyS2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdIZWFkZXJzLnB1c2goaGVhZGVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsgLy8gY29udGludWUgdGhlIG91dGVybW9zdCBsb29wXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBubyBtYXRjaCBmb3VuZFxuICAgICAgICAgICAgbmV3SGVhZGVycy5wdXNoKG51bGwpO1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oXG4gICAgICAgICAgICAgICAgYENvdWxkIG5vdCByZXN0b3JlIGhlYWRlciB3aXRoIElEICcke2hlYWRlcktleX0nIGZyb20gcHJlZmVyZW5jZXMuIEl0IGlzIG5vdCBvbmUgb2YgdGhlIGF2YWlsYWJsZSBoZWFkZXJzIGZvciB0aGlzIHZpZXcuYCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9wcmVmZXJlbmNlQ29sdW1uQ291bnQkLm5leHQobmV3SGVhZGVycy5sZW5ndGgpO1xuICAgICAgICB0aGlzLl9oZWFkZXJTdGF0ZS51cGRhdGVTZWxlY3RlZEhlYWRlcnMobmV3SGVhZGVycyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGNyZWF0ZU1ldGFIZWFkZXJzKCk6IEFycmF5PEhlYWRlckNvbHVtbj47XG5cbiAgICAvKipcbiAgICAgKiBDaGFuZ2Ugc29ydCBtb2RlIGZvciBzZWxlY3RlZCBjb2x1bW4gYWxsIG90aGVyIGNvbHVtbiBhcmUgc2V0IHRvIGRlZmF1bHQgc29ydCBtb2RlXG4gICAgICogRW1pdCByZXF1ZXN0IGZvciBzb3J0ZWQgcGFuZWxzXG4gICAgICogQHBhcmFtIGNvbHVtbkluZGV4IGluZGV4IG9mIHRoZSBjb2x1bW4gdGhhdCBjYXVzZWQgdGhlIHNvcnQgY2hhbmdlXG4gICAgICogQHBhcmFtIGFjdGl2ZSBSZXByZXNlbnRzIGNvbHVtbiBpZGVudGlmaWVyXG4gICAgICogQHBhcmFtIGRpcmVjdGlvbiBSZXByZXNlbnQgb25lIG9mIHNvcnQgbW9kZXM6IGFzZCwgZGVzYyBhbmQgJydcbiAgICAgKi9cbiAgICBwdWJsaWMgc29ydEhlYWRlckNoYW5nZWQoY29sdW1uSW5kZXg6IG51bWJlciwgYWN0aXZlOiBzdHJpbmcsIGRpcmVjdGlvbjogU29ydERpcmVjdGlvbik6IHZvaWQge1xuICAgICAgICBsZXQgc29ydENoYW5nZURlc2NyaXB0aW9uOiBTb3J0Q2hhbmdlRGVzY3JpcHRpb247XG4gICAgICAgIGxldCBmb3VuZEZpcnN0TWF0Y2ggPSBmYWxzZTsgLy8gY29sdW1uIGNhbiBmZWF0dXJlIGluIHRoZSBoZWFkZXIgaW4gbXVsdGlwbGUgcG9zaXRpb25zID0+IHdlIGRvbid0IHdhbnQgdG8gc2VuZCBtdWx0aXBsZSBldmVudHNcbiAgICAgICAgdGhpcy5oZWFkZXJTdGF0ZS5zZWxlY3RlZEhlYWRlcnMuZmlsdGVyKGhlYWRlciA9PiAhIWhlYWRlcikuZm9yRWFjaChoZWFkZXIgPT4ge1xuICAgICAgICAgICAgaWYgKGhlYWRlci51bmlxdWVJZCA9PT0gYWN0aXZlICYmICFmb3VuZEZpcnN0TWF0Y2gpIHtcbiAgICAgICAgICAgICAgICBzb3J0Q2hhbmdlRGVzY3JpcHRpb24gPSB7XG4gICAgICAgICAgICAgICAgICAgIHNvcnREaXJlY3Rpb246IGRpcmVjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uVHlwZTogaGVhZGVyLnR5cGUsXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkSWRlbnRpZmllcjogaGVhZGVyLmZpZWxkSWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICAgICAgcGV0cmlOZXRJZGVudGlmaWVyOiBoZWFkZXIucGV0cmlOZXRJZGVudGlmaWVyLFxuICAgICAgICAgICAgICAgICAgICBjb2x1bW5JZGVudGlmaWVyOiBjb2x1bW5JbmRleCxcbiAgICAgICAgICAgICAgICAgICAgZmllbGRUeXBlOiBoZWFkZXIuZmllbGRUeXBlXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBoZWFkZXIuc29ydERpcmVjdGlvbiA9IGRpcmVjdGlvbjtcbiAgICAgICAgICAgICAgICBmb3VuZEZpcnN0TWF0Y2ggPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBoZWFkZXIuc29ydERpcmVjdGlvbiA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5faGVhZGVyQ2hhbmdlJC5uZXh0KHtcbiAgICAgICAgICAgIGhlYWRlclR5cGU6IHRoaXMuaGVhZGVyVHlwZSxcbiAgICAgICAgICAgIGNoYW5nZVR5cGU6IEhlYWRlckNoYW5nZVR5cGUuU09SVCxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBzb3J0Q2hhbmdlRGVzY3JpcHRpb25cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2F2ZXMgdGhlIHNlYXJjaCB2YWx1ZSBpbiB0aGUgYXBwcm9wcmlhdGUgY29sdW1uIGluIHRoZSBoZWFkZXJcbiAgICAgKiBFbWl0IHJlcXVlc3QgZm9yIHNlYXJjaGVkIHBhbmVscyBieSB1c2VyIGlucHV0IHF1ZXJ5XG4gICAgICovXG4gICAgcHVibGljIGhlYWRlclNlYXJjaElucHV0Q2hhbmdlZChjb2x1bW5JbmRleDogbnVtYmVyLCBzZWFyY2hJbnB1dDogYW55KSB7XG4gICAgICAgIGNvbnN0IGFmZmVjdGVkSGVhZGVyID0gdGhpcy5oZWFkZXJTdGF0ZS5zZWxlY3RlZEhlYWRlcnNbY29sdW1uSW5kZXhdO1xuICAgICAgICBhZmZlY3RlZEhlYWRlci5zZWFyY2hJbnB1dCA9IHNlYXJjaElucHV0O1xuICAgICAgICBjb25zdCBzZWFyY2hDaGFuZ2VEZXNjcmlwdGlvbjogU2VhcmNoQ2hhbmdlRGVzY3JpcHRpb24gPSB7XG4gICAgICAgICAgICBmaWVsZElkZW50aWZpZXI6IGFmZmVjdGVkSGVhZGVyLmZpZWxkSWRlbnRpZmllcixcbiAgICAgICAgICAgIGZpZWxkVHlwZTogYWZmZWN0ZWRIZWFkZXIuZmllbGRUeXBlLFxuICAgICAgICAgICAgZmllbGRUaXRsZTogYWZmZWN0ZWRIZWFkZXIudGl0bGUsXG4gICAgICAgICAgICBzZWFyY2hJbnB1dCxcbiAgICAgICAgICAgIHR5cGU6IGFmZmVjdGVkSGVhZGVyLnR5cGUsXG4gICAgICAgICAgICBwZXRyaU5ldElkZW50aWZpZXI6IGFmZmVjdGVkSGVhZGVyLnBldHJpTmV0SWRlbnRpZmllcixcbiAgICAgICAgICAgIGNvbHVtbklkZW50aWZpZXI6IGNvbHVtbkluZGV4XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuX2hlYWRlckNoYW5nZSQubmV4dCh7XG4gICAgICAgICAgICBoZWFkZXJUeXBlOiB0aGlzLmhlYWRlclR5cGUsXG4gICAgICAgICAgICBjaGFuZ2VUeXBlOiBIZWFkZXJDaGFuZ2VUeXBlLlNFQVJDSCxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBzZWFyY2hDaGFuZ2VEZXNjcmlwdGlvblxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGFuZ2UgYWN0aXZlIGhlYWRlciBhbmQgdGl0bGVzIG9mIHBhbmVsc1xuICAgICAqL1xuICAgIHB1YmxpYyBoZWFkZXJDb2x1bW5TZWxlY3RlZChjb2x1bW5JbmRleDogbnVtYmVyLCBuZXdIZWFkZXJDb2x1bW46IEhlYWRlckNvbHVtbik6IHZvaWQge1xuICAgICAgICBjb25zdCBuZXdIZWFkZXJzOiBBcnJheTxIZWFkZXJDb2x1bW4+ID0gW107XG4gICAgICAgIG5ld0hlYWRlcnMucHVzaCguLi50aGlzLl9oZWFkZXJTdGF0ZS5zZWxlY3RlZEhlYWRlcnMpO1xuICAgICAgICBpZiAoISFuZXdIZWFkZXJzW2NvbHVtbkluZGV4XSkge1xuICAgICAgICAgICAgbmV3SGVhZGVyc1tjb2x1bW5JbmRleF0uc29ydERpcmVjdGlvbiA9ICcnO1xuICAgICAgICAgICAgbmV3SGVhZGVyc1tjb2x1bW5JbmRleF0uc2VhcmNoSW5wdXQgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgbmV3SGVhZGVyc1tjb2x1bW5JbmRleF0gPSBuZXdIZWFkZXJDb2x1bW47XG4gICAgICAgIHRoaXMuX2hlYWRlclN0YXRlLnVwZGF0ZVNlbGVjdGVkSGVhZGVycyhuZXdIZWFkZXJzKTtcbiAgICAgICAgdGhpcy5faGVhZGVyQ2hhbmdlJC5uZXh0KHtcbiAgICAgICAgICAgIGhlYWRlclR5cGU6IHRoaXMuaGVhZGVyVHlwZSxcbiAgICAgICAgICAgIGNoYW5nZVR5cGU6IEhlYWRlckNoYW5nZVR5cGUuRURJVCxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB7cHJlZmVycmVkSGVhZGVyczogdGhpcy5faGVhZGVyU3RhdGUuc2VsZWN0ZWRIZWFkZXJzfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGFuZ2Ugc2VsZWN0ZWQgaGVhZGVyIG1vZGUgdGhlcmUgYXJlIHRocmVlIHBvc3NpYmxlIG1vZGVzOiBTT1JULCBTRUFSQ0ggYW5kIEVESVRcbiAgICAgKiBAcGFyYW0gbmV3TW9kZSB0aGUgbW9kZSB0aGF0IHRoZSBoZWFkZXIgc2hvdWxkIGNoYW5nZSB0b1xuICAgICAqIEBwYXJhbSBzYXZlTGFzdE1vZGUgd2hldGhlciB0aGUgbGFzdCBzdGF0ZSBzaG91bGQgYmUgcmVtZW1iZXJlZC5cbiAgICAgKiBJdCBjYW4gYmUgcmVzdG9yZWQgd2l0aCB0aGUgW0hlYWRlclN0YXRlLnJlc3RvcmVMYXN0TW9kZSgpXXtAbGluayBIZWFkZXJTdGF0ZSNyZXN0b3JlTGFzdE1vZGV9IG1ldGhvZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgY2hhbmdlTW9kZShuZXdNb2RlOiBIZWFkZXJNb2RlLCBzYXZlTGFzdE1vZGUgPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIGlmIChuZXdNb2RlID09PSB0aGlzLl9oZWFkZXJTdGF0ZS5tb2RlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2F2ZUxhc3RNb2RlKSB7XG4gICAgICAgICAgICB0aGlzLl9oZWFkZXJTdGF0ZS5zYXZlU3RhdGUoKTtcbiAgICAgICAgICAgIHRoaXMuc2F2ZVN0YXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjaGFuZ2UgPSB0aGlzLm1vZGVDaGFuZ2VGcm9tQ3VycmVudChuZXdNb2RlKTtcbiAgICAgICAgdGhpcy5faGVhZGVyU3RhdGUubW9kZSA9IG5ld01vZGU7XG4gICAgICAgIHRoaXMuX2hlYWRlckNoYW5nZSQubmV4dChjaGFuZ2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb25maXJtRWRpdE1vZGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2hlYWRlclN0YXRlLnJlc3RvcmVMYXN0TW9kZSgpO1xuICAgICAgICB0aGlzLnNhdmVOZXdTdGF0ZSgpO1xuICAgICAgICBjb25zdCBjaGFuZ2UgPSB0aGlzLm1vZGVDaGFuZ2VBZnRlckVkaXQoKTtcbiAgICAgICAgY29uc3Qgdmlld0lkID0gdGhpcy5nZXRWaWV3SWQoKTtcbiAgICAgICAgaWYgKCEhdmlld0lkKSB7XG4gICAgICAgICAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5oZWFkZXJTdGF0ZS5zZWxlY3RlZEhlYWRlcnM7XG4gICAgICAgICAgICB0aGlzLl9wcmVmZXJlbmNlcy5zZXRIZWFkZXJzKHZpZXdJZCwgaGVhZGVycy5tYXAoaGVhZGVyID0+ICEhaGVhZGVyID8gaGVhZGVyLnVuaXF1ZUlkIDogJycpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9oZWFkZXJDaGFuZ2UkLm5leHQoY2hhbmdlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGVuIHVzZXIgY2FuY2VscyB0aGUgZWRpdCBtb2RlLCB0aGUgbGFzdCBzYXZlZCBoZWFkZXJzIHN0YXRlIGlzIGxvYWRlZCBhbmQgZW1pdHRlZFxuICAgICAqIExhc3QgbW9kZSBpbiBoZWFkZXIgaXMgcmVsb2FkZWQgYXMgd2VsbC4gUG9zc2libGUgcmVsb2FkZWQgbW9kZXM6IHNvcnQgb3Igc2VhcmNoXG4gICAgICovXG4gICAgcHVibGljIHJldmVydEVkaXRNb2RlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9oZWFkZXJTdGF0ZS5yZXN0b3JlTGFzdFN0YXRlKCk7XG4gICAgICAgIHRoaXMucmVzdG9yZUxhc3RTdGF0ZSgpO1xuICAgICAgICBjb25zdCBjaGFuZ2UgPSB0aGlzLm1vZGVDaGFuZ2VBZnRlckVkaXQoKTtcbiAgICAgICAgdGhpcy5faGVhZGVyQ2hhbmdlJC5uZXh0KHtcbiAgICAgICAgICAgIGhlYWRlclR5cGU6IHRoaXMuaGVhZGVyVHlwZSxcbiAgICAgICAgICAgIGNoYW5nZVR5cGU6IEhlYWRlckNoYW5nZVR5cGUuRURJVCxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB7cHJlZmVycmVkSGVhZGVyczogdGhpcy5faGVhZGVyU3RhdGUuc2VsZWN0ZWRIZWFkZXJzfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5faGVhZGVyQ2hhbmdlJC5uZXh0KGNoYW5nZSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2hlYWRlckNoYW5nZSQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5fY2xlYXJIZWFkZXJTZWFyY2gkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX2hlYWRlckNvbHVtbkNvdW50JC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9yZXNwb25zaXZlSGVhZGVycyQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5sb2FkaW5nLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX3ByZWZlcmVuY2VDb2x1bW5Db3VudCQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gbmV3TW9kZSB0aGUge0BsaW5rIEhlYWRlck1vZGV9IHRoYXQgaXMgYmVpbmcgc2VsZWN0ZWQgYXMgdGhlIG5leHQgbW9kZVxuICAgICAqIEByZXR1cm5zYSB7QGxpbmsgSGVhZGVyQ2hhbmdlfSBvYmplY3Qgd2l0aCB7QGxpbmsgTW9kZUNoYW5nZURlc2NyaXB0aW9ufSBvYmplY3QgYXMgaXQncyBgZGVzY3JpcHRpb25gLFxuICAgICAqIHdoZXJlIHRoZSBgcHJldmlvdXNNb2RlYCBpcyBzZXQgdG8gdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBtb2RlIGFuZCB0aGUgYGN1cnJlbnRNb2RlYCBpcyBzZXQgdG8gdGhlIHByb3ZpZGVkIGFyZ3VtZW50XG4gICAgICovXG4gICAgcHJvdGVjdGVkIG1vZGVDaGFuZ2VGcm9tQ3VycmVudChuZXdNb2RlOiBIZWFkZXJNb2RlKTogSGVhZGVyQ2hhbmdlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlTW9kZUNoYW5nZSh0aGlzLl9oZWFkZXJTdGF0ZS5tb2RlLCBuZXdNb2RlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyBhIHtAbGluayBIZWFkZXJDaGFuZ2V9IG9iamVjdCB3aXRoIHtAbGluayBNb2RlQ2hhbmdlRGVzY3JpcHRpb259IG9iamVjdCBhcyBpdCdzIGBkZXNjcmlwdGlvbmAsXG4gICAgICogd2hlcmUgdGhlIGBwcmV2aW91c01vZGVgIGlzIHNldCB0byBbRURJVF17QGxpbmsgSGVhZGVyTW9kZSNFRElUfSBhbmQgdGhlIGBjdXJyZW50TW9kZWAgdG8gdGhlIG1vZGVcbiAgICAgKiB0aGF0IGlzIGN1cnJlbnRseSBzZWxlY3RlZFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBtb2RlQ2hhbmdlQWZ0ZXJFZGl0KCk6IEhlYWRlckNoYW5nZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZU1vZGVDaGFuZ2UoSGVhZGVyTW9kZS5FRElULCB0aGlzLl9oZWFkZXJTdGF0ZS5tb2RlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gb2xkTW9kZSB0aGUge0BsaW5rIEhlYWRlck1vZGV9IHRoYXQgd2FzIHByZXZpb3VzbHkgc2VsZWN0ZWRcbiAgICAgKiBAcGFyYW0gbmV3TW9kZSB0aGUge0BsaW5rIEhlYWRlck1vZGV9IHRoYXQgaXMgc2VsZWN0ZWQgbm93XG4gICAgICogQHJldHVybnMgYSB7QGxpbmsgSGVhZGVyQ2hhbmdlfSBvYmplY3Qgd2l0aCB7QGxpbmsgTW9kZUNoYW5nZURlc2NyaXB0aW9ufSBvYmplY3QgYXMgaXQncyBgZGVzY3JpcHRpb25gXG4gICAgICogY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCBhIGNoYW5nZSB0byB0aGUgaGVhZGVyIG1vZGVcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgY3JlYXRlTW9kZUNoYW5nZShvbGRNb2RlOiBIZWFkZXJNb2RlLCBuZXdNb2RlOiBIZWFkZXJNb2RlKTogSGVhZGVyQ2hhbmdlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNoYW5nZVR5cGU6IEhlYWRlckNoYW5nZVR5cGUuTU9ERV9DSEFOR0VELFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHtcbiAgICAgICAgICAgICAgICBjdXJyZW50TW9kZTogbmV3TW9kZSxcbiAgICAgICAgICAgICAgICBwcmV2aW91c01vZGU6IG9sZE1vZGVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBoZWFkZXJUeXBlOiB0aGlzLmhlYWRlclR5cGVcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFbWl0cyBhIG5ldyB2YWx1ZSBpbnRvIHRoZSBbY2xlYXJIZWFkZXJTZWFyY2gkXXtAbGluayBBYnN0cmFjdEhlYWRlclNlcnZpY2UjY2xlYXJIZWFkZXJTZWFyY2gkfSBzdHJlYW0sIHRoYXQgbm90aWZpZXNcbiAgICAgKiB0aGUgaGVhZGVyIHNlYXJjaCBjb21wb25lbnQsIHRoYXQgaXQgc2hvdWxkIGNsZWFyIHRoZSBpbnB1dCBmb3IgdGhlIHNwZWNpZmllZCBjb2x1bW4uXG4gICAgICogQHBhcmFtIGNvbHVtbkluZGV4IHRoZSBpbmRleCBvZiB0aGUgY29sdW1uIHRoYXQgc2hvdWxkIGJlIGNsZWFyZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgY2xlYXJIZWFkZXJTZWFyY2goY29sdW1uSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLl9jbGVhckhlYWRlclNlYXJjaCQubmV4dChjb2x1bW5JbmRleCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgdGhlIElkIG9mIHRoZSB2aWV3LCBpZiB0aGUgVmlld0lkU2VydmljZSB3YXMgaW5qZWN0ZWQuIFJldHVybnMgYHVuZGVmaW5lZGAgaWYgdGhlIHNlcnZpY2Ugd2FzIG5vdCBpbmplY3RlZC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0Vmlld0lkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh0aGlzLl92aWV3SWRTZXJ2aWNlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fdmlld0lkU2VydmljZS52aWV3SWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2F2ZVN0YXRlKCk7XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2F2ZU5ld1N0YXRlKCk7XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVzdG9yZUxhc3RTdGF0ZSgpO1xufVxuIl19