@valtimo/dossier 11.0.0 → 11.1.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 (166) hide show
  1. package/esm2022/lib/components/dossier-assign-user/dossier-assign-user.component.mjs +98 -0
  2. package/esm2022/lib/{dossier-bulk-assign-modal → components/dossier-bulk-assign-modal}/dossier-bulk-assign-modal.component.mjs +2 -2
  3. package/esm2022/lib/components/dossier-detail/dossier-detail.component.mjs +194 -0
  4. package/esm2022/lib/components/dossier-detail/tab/audit/audit.component.mjs +76 -0
  5. package/esm2022/lib/{dossier-detail → components/dossier-detail}/tab/contact-moments/contact-moments.component.mjs +1 -1
  6. package/esm2022/lib/components/dossier-detail/tab/documenten-api-documents/documenten-api-documents.component.mjs +146 -0
  7. package/esm2022/lib/{dossier-detail → components/dossier-detail}/tab/documents/documents.component.mjs +1 -1
  8. package/esm2022/lib/components/dossier-detail/tab/formio/formio.component.mjs +61 -0
  9. package/esm2022/lib/components/dossier-detail/tab/notes/notes.component.mjs +166 -0
  10. package/esm2022/lib/components/dossier-detail/tab/object-type/object-type.component.mjs +121 -0
  11. package/esm2022/lib/{dossier-detail → components/dossier-detail}/tab/progress/progress.component.mjs +1 -1
  12. package/esm2022/lib/components/dossier-detail/tab/s3-documents/s3-documents.component.mjs +136 -0
  13. package/esm2022/lib/components/dossier-detail/tab/summary/summary.component.mjs +134 -0
  14. package/esm2022/lib/components/dossier-detail/tab/zaakobjecten/zaakobjecten.component.mjs +112 -0
  15. package/esm2022/lib/components/dossier-list/dossier-list.component.mjs +370 -0
  16. package/esm2022/lib/components/dossier-list-actions/dossier-list-actions.component.mjs +84 -0
  17. package/esm2022/lib/{dossier-process-start-modal → components/dossier-process-start-modal}/dossier-process-start-modal.component.mjs +2 -3
  18. package/esm2022/lib/components/dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component.mjs +123 -0
  19. package/esm2022/lib/components/dossier-update/dossier-update.component.mjs +113 -0
  20. package/esm2022/lib/constants/case-tab-token.mjs +19 -0
  21. package/esm2022/lib/constants/index.mjs +3 -0
  22. package/esm2022/lib/constants/tab.mjs +42 -0
  23. package/esm2022/lib/dossier-routing.module.mjs +14 -4
  24. package/esm2022/lib/dossier.module.mjs +33 -27
  25. package/esm2022/lib/models/dossier-detail-tab.model.mjs +27 -0
  26. package/esm2022/lib/models/index.mjs +3 -1
  27. package/esm2022/lib/models/tab-api.model.mjs +23 -0
  28. package/esm2022/lib/models/tabs.model.mjs +32 -28
  29. package/esm2022/lib/permissions/dossier-detail.permissions.mjs +55 -0
  30. package/esm2022/lib/permissions/index.mjs +2 -2
  31. package/esm2022/lib/pipes/index.mjs +17 -0
  32. package/esm2022/lib/pipes/tab-translate/index.mjs +18 -0
  33. package/esm2022/lib/pipes/tab-translate/tab-translate-pipe.module.mjs +33 -0
  34. package/esm2022/lib/pipes/tab-translate/tab-translate.pipe.mjs +41 -0
  35. package/esm2022/lib/services/dossier-list-pagination.service.mjs +2 -2
  36. package/esm2022/lib/services/dossier-tab-api.service.mjs +23 -0
  37. package/esm2022/lib/services/dossier-tab.service.mjs +130 -0
  38. package/esm2022/lib/services/dossier.service.mjs +58 -0
  39. package/esm2022/lib/services/index.mjs +4 -2
  40. package/esm2022/public_api.mjs +13 -15
  41. package/fesm2022/valtimo-dossier.mjs +1345 -1036
  42. package/fesm2022/valtimo-dossier.mjs.map +1 -1
  43. package/lib/components/dossier-assign-user/dossier-assign-user.component.d.ts.map +1 -0
  44. package/lib/{dossier-bulk-assign-modal → components/dossier-bulk-assign-modal}/dossier-bulk-assign-modal.component.d.ts +1 -1
  45. package/lib/components/dossier-bulk-assign-modal/dossier-bulk-assign-modal.component.d.ts.map +1 -0
  46. package/lib/{dossier-detail → components/dossier-detail}/dossier-detail.component.d.ts +11 -10
  47. package/lib/components/dossier-detail/dossier-detail.component.d.ts.map +1 -0
  48. package/lib/components/dossier-detail/tab/audit/audit.component.d.ts.map +1 -0
  49. package/lib/components/dossier-detail/tab/contact-moments/contact-moments.component.d.ts.map +1 -0
  50. package/lib/{dossier-detail → components/dossier-detail}/tab/documenten-api-documents/documenten-api-documents.component.d.ts +1 -1
  51. package/lib/components/dossier-detail/tab/documenten-api-documents/documenten-api-documents.component.d.ts.map +1 -0
  52. package/lib/components/dossier-detail/tab/documents/documents.component.d.ts.map +1 -0
  53. package/lib/components/dossier-detail/tab/formio/formio.component.d.ts +20 -0
  54. package/lib/components/dossier-detail/tab/formio/formio.component.d.ts.map +1 -0
  55. package/lib/{dossier-detail → components/dossier-detail}/tab/notes/notes.component.d.ts +3 -3
  56. package/lib/components/dossier-detail/tab/notes/notes.component.d.ts.map +1 -0
  57. package/lib/{dossier-detail → components/dossier-detail}/tab/object-type/object-type.component.d.ts +2 -2
  58. package/lib/components/dossier-detail/tab/object-type/object-type.component.d.ts.map +1 -0
  59. package/lib/components/dossier-detail/tab/progress/progress.component.d.ts.map +1 -0
  60. package/lib/{dossier-detail → components/dossier-detail}/tab/s3-documents/s3-documents.component.d.ts +1 -1
  61. package/lib/components/dossier-detail/tab/s3-documents/s3-documents.component.d.ts.map +1 -0
  62. package/lib/components/dossier-detail/tab/summary/summary.component.d.ts.map +1 -0
  63. package/lib/{dossier-detail → components/dossier-detail}/tab/zaakobjecten/zaakobjecten.component.d.ts +2 -2
  64. package/lib/components/dossier-detail/tab/zaakobjecten/zaakobjecten.component.d.ts.map +1 -0
  65. package/lib/{dossier-list → components/dossier-list}/dossier-list.component.d.ts +1 -1
  66. package/lib/components/dossier-list/dossier-list.component.d.ts.map +1 -0
  67. package/lib/{dossier-list-actions → components/dossier-list-actions}/dossier-list-actions.component.d.ts +1 -1
  68. package/lib/components/dossier-list-actions/dossier-list-actions.component.d.ts.map +1 -0
  69. package/lib/components/dossier-process-start-modal/dossier-process-start-modal.component.d.ts.map +1 -0
  70. package/lib/{dossier-supporting-process-start-modal → components/dossier-supporting-process-start-modal}/dossier-supporting-process-start-modal.component.d.ts +21 -26
  71. package/lib/components/dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component.d.ts.map +1 -0
  72. package/lib/{dossier-update → components/dossier-update}/dossier-update.component.d.ts +1 -1
  73. package/lib/components/dossier-update/dossier-update.component.d.ts.map +1 -0
  74. package/lib/constants/case-tab-token.d.ts +5 -0
  75. package/lib/constants/case-tab-token.d.ts.map +1 -0
  76. package/lib/constants/index.d.ts +3 -0
  77. package/lib/constants/index.d.ts.map +1 -0
  78. package/lib/constants/tab.d.ts +7 -0
  79. package/lib/constants/tab.d.ts.map +1 -0
  80. package/lib/dossier-routing.module.d.ts.map +1 -1
  81. package/lib/dossier.module.d.ts +33 -31
  82. package/lib/dossier.module.d.ts.map +1 -1
  83. package/lib/models/dossier-detail-tab.model.d.ts +18 -0
  84. package/lib/models/dossier-detail-tab.model.d.ts.map +1 -0
  85. package/lib/models/index.d.ts +2 -0
  86. package/lib/models/index.d.ts.map +1 -1
  87. package/lib/models/tab-api.model.d.ts +13 -0
  88. package/lib/models/tab-api.model.d.ts.map +1 -0
  89. package/lib/models/tabs.model.d.ts +11 -10
  90. package/lib/models/tabs.model.d.ts.map +1 -1
  91. package/lib/permissions/{dossier.permissions.d.ts → dossier-detail.permissions.d.ts} +1 -1
  92. package/lib/permissions/dossier-detail.permissions.d.ts.map +1 -0
  93. package/lib/permissions/index.d.ts +1 -1
  94. package/lib/permissions/index.d.ts.map +1 -1
  95. package/lib/pipes/index.d.ts +2 -0
  96. package/lib/pipes/index.d.ts.map +1 -0
  97. package/lib/pipes/tab-translate/index.d.ts +3 -0
  98. package/lib/pipes/tab-translate/index.d.ts.map +1 -0
  99. package/lib/pipes/tab-translate/tab-translate-pipe.module.d.ts +9 -0
  100. package/lib/pipes/tab-translate/tab-translate-pipe.module.d.ts.map +1 -0
  101. package/lib/pipes/tab-translate/tab-translate.pipe.d.ts +13 -0
  102. package/lib/pipes/tab-translate/tab-translate.pipe.d.ts.map +1 -0
  103. package/lib/services/dossier-list-pagination.service.d.ts +1 -1
  104. package/lib/services/dossier-list-pagination.service.d.ts.map +1 -1
  105. package/lib/services/dossier-tab-api.service.d.ts +15 -0
  106. package/lib/services/dossier-tab-api.service.d.ts.map +1 -0
  107. package/lib/services/dossier-tab.service.d.ts +31 -0
  108. package/lib/services/dossier-tab.service.d.ts.map +1 -0
  109. package/lib/{dossier.service.d.ts → services/dossier.service.d.ts} +1 -1
  110. package/lib/services/dossier.service.d.ts.map +1 -0
  111. package/lib/services/index.d.ts +3 -1
  112. package/lib/services/index.d.ts.map +1 -1
  113. package/package.json +1 -1
  114. package/public_api.d.ts +12 -14
  115. package/public_api.d.ts.map +1 -1
  116. package/esm2022/lib/dossier-assign-user/dossier-assign-user.component.mjs +0 -98
  117. package/esm2022/lib/dossier-detail/dossier-detail.component.mjs +0 -175
  118. package/esm2022/lib/dossier-detail/tab/audit/audit.component.mjs +0 -76
  119. package/esm2022/lib/dossier-detail/tab/documenten-api-documents/documenten-api-documents.component.mjs +0 -146
  120. package/esm2022/lib/dossier-detail/tab/notes/notes.component.mjs +0 -166
  121. package/esm2022/lib/dossier-detail/tab/object-type/object-type.component.mjs +0 -121
  122. package/esm2022/lib/dossier-detail/tab/s3-documents/s3-documents.component.mjs +0 -136
  123. package/esm2022/lib/dossier-detail/tab/summary/summary.component.mjs +0 -130
  124. package/esm2022/lib/dossier-detail/tab/zaakobjecten/zaakobjecten.component.mjs +0 -112
  125. package/esm2022/lib/dossier-detail-tab-enum.mjs +0 -26
  126. package/esm2022/lib/dossier-list/dossier-list.component.mjs +0 -371
  127. package/esm2022/lib/dossier-list-actions/dossier-list-actions.component.mjs +0 -84
  128. package/esm2022/lib/dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component.mjs +0 -116
  129. package/esm2022/lib/dossier-update/dossier-update.component.mjs +0 -113
  130. package/esm2022/lib/dossier.config.mjs +0 -29
  131. package/esm2022/lib/dossier.service.mjs +0 -58
  132. package/esm2022/lib/permissions/dossier.permissions.mjs +0 -55
  133. package/esm2022/lib/tab.service.mjs +0 -80
  134. package/lib/dossier-assign-user/dossier-assign-user.component.d.ts.map +0 -1
  135. package/lib/dossier-bulk-assign-modal/dossier-bulk-assign-modal.component.d.ts.map +0 -1
  136. package/lib/dossier-detail/dossier-detail.component.d.ts.map +0 -1
  137. package/lib/dossier-detail/tab/audit/audit.component.d.ts.map +0 -1
  138. package/lib/dossier-detail/tab/contact-moments/contact-moments.component.d.ts.map +0 -1
  139. package/lib/dossier-detail/tab/documenten-api-documents/documenten-api-documents.component.d.ts.map +0 -1
  140. package/lib/dossier-detail/tab/documents/documents.component.d.ts.map +0 -1
  141. package/lib/dossier-detail/tab/notes/notes.component.d.ts.map +0 -1
  142. package/lib/dossier-detail/tab/object-type/object-type.component.d.ts.map +0 -1
  143. package/lib/dossier-detail/tab/progress/progress.component.d.ts.map +0 -1
  144. package/lib/dossier-detail/tab/s3-documents/s3-documents.component.d.ts.map +0 -1
  145. package/lib/dossier-detail/tab/summary/summary.component.d.ts.map +0 -1
  146. package/lib/dossier-detail/tab/zaakobjecten/zaakobjecten.component.d.ts.map +0 -1
  147. package/lib/dossier-detail-tab-enum.d.ts +0 -10
  148. package/lib/dossier-detail-tab-enum.d.ts.map +0 -1
  149. package/lib/dossier-list/dossier-list.component.d.ts.map +0 -1
  150. package/lib/dossier-list-actions/dossier-list-actions.component.d.ts.map +0 -1
  151. package/lib/dossier-process-start-modal/dossier-process-start-modal.component.d.ts.map +0 -1
  152. package/lib/dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component.d.ts.map +0 -1
  153. package/lib/dossier-update/dossier-update.component.d.ts.map +0 -1
  154. package/lib/dossier.config.d.ts +0 -4
  155. package/lib/dossier.config.d.ts.map +0 -1
  156. package/lib/dossier.service.d.ts.map +0 -1
  157. package/lib/permissions/dossier.permissions.d.ts.map +0 -1
  158. package/lib/tab.service.d.ts +0 -21
  159. package/lib/tab.service.d.ts.map +0 -1
  160. /package/lib/{dossier-assign-user → components/dossier-assign-user}/dossier-assign-user.component.d.ts +0 -0
  161. /package/lib/{dossier-detail → components/dossier-detail}/tab/audit/audit.component.d.ts +0 -0
  162. /package/lib/{dossier-detail → components/dossier-detail}/tab/contact-moments/contact-moments.component.d.ts +0 -0
  163. /package/lib/{dossier-detail → components/dossier-detail}/tab/documents/documents.component.d.ts +0 -0
  164. /package/lib/{dossier-detail → components/dossier-detail}/tab/progress/progress.component.d.ts +0 -0
  165. /package/lib/{dossier-detail → components/dossier-detail}/tab/summary/summary.component.d.ts +0 -0
  166. /package/lib/{dossier-process-start-modal → components/dossier-process-start-modal}/dossier-process-start-modal.component.d.ts +0 -0
@@ -0,0 +1,98 @@
1
+ /*
2
+ * Copyright 2015-2023 Ritense BV, the Netherlands.
3
+ *
4
+ * Licensed under EUPL, Version 1.2 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" basis,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
17
+ import { BehaviorSubject, filter, map, of, switchMap } from 'rxjs';
18
+ import { tap } from 'rxjs/operators';
19
+ import * as i0 from "@angular/core";
20
+ import * as i1 from "@valtimo/document";
21
+ import * as i2 from "@angular/common";
22
+ import * as i3 from "@valtimo/components";
23
+ import * as i4 from "@ngx-translate/core";
24
+ export class DossierAssignUserComponent {
25
+ set documentId(value) {
26
+ this.documentId$.next(value);
27
+ }
28
+ set assigneeId(value) {
29
+ this.assigneeId$.next(value);
30
+ }
31
+ set assigneeFullName(value) {
32
+ this.assigneeFullName$.next(value);
33
+ }
34
+ constructor(documentService) {
35
+ this.documentService = documentService;
36
+ this.hasPermission = true;
37
+ this.assignmentOfDocumentChanged = new EventEmitter();
38
+ this.disabled$ = new BehaviorSubject(true);
39
+ this.documentId$ = new BehaviorSubject('');
40
+ this.userItems$ = this.documentId$.pipe(filter(documentId => !!documentId), switchMap(documentId => this.hasPermission ? this.documentService.getCandidateUsers(documentId) : of([])), map(candidateUsers => this.mapUsersForDropdown(candidateUsers)), tap(() => this.enable()));
41
+ this.assigneeId$ = new BehaviorSubject('');
42
+ this.assigneeFullName$ = new BehaviorSubject('');
43
+ }
44
+ assignDocument(userId) {
45
+ this.disable();
46
+ this.documentId$
47
+ .pipe(switchMap(documentId => this.documentService.assignHandlerToDocument(documentId, userId)))
48
+ .subscribe(() => {
49
+ this.emitChange();
50
+ this.enable();
51
+ });
52
+ }
53
+ unassignDocument() {
54
+ this.disable();
55
+ this.documentId$
56
+ .pipe(switchMap(documentId => this.documentService.unassignHandlerFromDocument(documentId)))
57
+ .subscribe(() => {
58
+ this.emitChange();
59
+ this.enable();
60
+ });
61
+ }
62
+ mapUsersForDropdown(users) {
63
+ return users
64
+ .sort((a, b) => {
65
+ if (a.lastName && b.lastName) {
66
+ return a.lastName.localeCompare(b.lastName);
67
+ }
68
+ return 0;
69
+ })
70
+ .map(user => ({ text: user.label, id: user.id }));
71
+ }
72
+ emitChange() {
73
+ this.assignmentOfDocumentChanged.emit();
74
+ }
75
+ enable() {
76
+ this.disabled$.next(false);
77
+ }
78
+ disable() {
79
+ this.disabled$.next(true);
80
+ }
81
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DossierAssignUserComponent, deps: [{ token: i1.DocumentService }], target: i0.ɵɵFactoryTarget.Component }); }
82
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DossierAssignUserComponent, selector: "valtimo-dossier-assign-user", inputs: { documentId: "documentId", assigneeId: "assigneeId", assigneeFullName: "assigneeFullName", hasPermission: "hasPermission" }, outputs: { assignmentOfDocumentChanged: "assignmentOfDocumentChanged" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"container-fluid\">\n <div class=\"row\">\n <div class=\"col-12 pl-0 d-flex flex-row align-items-center\">\n <ng-container *ngTemplateOutlet=\"content\"> </ng-container>\n </div>\n </div>\n</div>\n\n<ng-template #content>\n <ng-container\n *ngIf=\"{\n disabled: disabled$ | async,\n assigneeFullName: assigneeFullName$ | async,\n assigneeId: assigneeId$ | async\n } as obs\"\n >\n <ng-container *ngIf=\"!hasPermission && obs.assigneeFullName\">\n <ng-container *ngTemplateOutlet=\"fullName; context: {obs: obs}\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"hasPermission\">\n <ng-container *ngTemplateOutlet=\"selectUser; context: {obs: obs}\"></ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #fullName let-obs=\"obs\">\n <valtimo-searchable-dropdown-select\n [buttonText]=\"'assignDocument.header' | translate\"\n [clearSelectionButtonTitle]=\"'assignDocument.remove' | translate\"\n [hasPermission]=\"false\"\n [hasSelection]=\"true\"\n [noResultsText]=\"'interface.noSearchResults' | translate\"\n [searchText]=\"'interface.typeToSearch' | translate\"\n [selectedTextValue]=\"obs.assigneeFullName\"\n [selectedText]=\"'assignDocument.assignedTo' | translate\"\n [style]=\"'underlinedText'\"\n [width]=\"250\"\n class=\"dossier-candidates-dropdown\"\n >\n </valtimo-searchable-dropdown-select>\n</ng-template>\n\n<ng-template #selectUser let-obs=\"obs\">\n <ng-container *ngIf=\"userItems$ | async as userItems; else loadingUsers\">\n <valtimo-searchable-dropdown-select\n [buttonText]=\"'assignDocument.header' | translate\"\n [clearSelectionButtonTitle]=\"'assignDocument.remove' | translate\"\n [disabled]=\"obs.disabled\"\n [hasPermission]=\"hasPermission\"\n [hasSelection]=\"obs.assigneeId\"\n [items]=\"userItems\"\n [noResultsText]=\"'interface.noSearchResults' | translate\"\n [searchText]=\"'interface.typeToSearch' | translate\"\n [selectedTextValue]=\"obs.assigneeFullName\"\n [selectedText]=\"'assignDocument.assignedTo' | translate\"\n [style]=\"'underlinedText'\"\n [width]=\"250\"\n (clearSelection)=\"unassignDocument()\"\n (itemSelected)=\"assignDocument($event)\"\n class=\"dossier-candidates-dropdown\"\n >\n </valtimo-searchable-dropdown-select>\n </ng-container>\n</ng-template>\n\n<ng-template #loadingUsers>\n <h5>\n <b>{{ 'assignDocument.fetchingUsers' | translate }}</b>\n </h5>\n</ng-template>\n", styles: [".container-fluid{color:#959595}valtimo-searchable-dropdown-select{font-size:13px}:host .dossier-candidates-dropdown h5{margin-block:0}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.SearchableDropdownSelectComponent, selector: "valtimo-searchable-dropdown-select", inputs: ["style", "items", "buttonText", "searchText", "noResultsText", "disabled", "selectedText", "selectedTextValue", "clearSelectionButtonTitle", "hasSelection", "width", "hasPermission"], outputs: ["itemSelected", "clearSelection"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
83
+ }
84
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DossierAssignUserComponent, decorators: [{
85
+ type: Component,
86
+ args: [{ selector: 'valtimo-dossier-assign-user', template: "<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"container-fluid\">\n <div class=\"row\">\n <div class=\"col-12 pl-0 d-flex flex-row align-items-center\">\n <ng-container *ngTemplateOutlet=\"content\"> </ng-container>\n </div>\n </div>\n</div>\n\n<ng-template #content>\n <ng-container\n *ngIf=\"{\n disabled: disabled$ | async,\n assigneeFullName: assigneeFullName$ | async,\n assigneeId: assigneeId$ | async\n } as obs\"\n >\n <ng-container *ngIf=\"!hasPermission && obs.assigneeFullName\">\n <ng-container *ngTemplateOutlet=\"fullName; context: {obs: obs}\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"hasPermission\">\n <ng-container *ngTemplateOutlet=\"selectUser; context: {obs: obs}\"></ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #fullName let-obs=\"obs\">\n <valtimo-searchable-dropdown-select\n [buttonText]=\"'assignDocument.header' | translate\"\n [clearSelectionButtonTitle]=\"'assignDocument.remove' | translate\"\n [hasPermission]=\"false\"\n [hasSelection]=\"true\"\n [noResultsText]=\"'interface.noSearchResults' | translate\"\n [searchText]=\"'interface.typeToSearch' | translate\"\n [selectedTextValue]=\"obs.assigneeFullName\"\n [selectedText]=\"'assignDocument.assignedTo' | translate\"\n [style]=\"'underlinedText'\"\n [width]=\"250\"\n class=\"dossier-candidates-dropdown\"\n >\n </valtimo-searchable-dropdown-select>\n</ng-template>\n\n<ng-template #selectUser let-obs=\"obs\">\n <ng-container *ngIf=\"userItems$ | async as userItems; else loadingUsers\">\n <valtimo-searchable-dropdown-select\n [buttonText]=\"'assignDocument.header' | translate\"\n [clearSelectionButtonTitle]=\"'assignDocument.remove' | translate\"\n [disabled]=\"obs.disabled\"\n [hasPermission]=\"hasPermission\"\n [hasSelection]=\"obs.assigneeId\"\n [items]=\"userItems\"\n [noResultsText]=\"'interface.noSearchResults' | translate\"\n [searchText]=\"'interface.typeToSearch' | translate\"\n [selectedTextValue]=\"obs.assigneeFullName\"\n [selectedText]=\"'assignDocument.assignedTo' | translate\"\n [style]=\"'underlinedText'\"\n [width]=\"250\"\n (clearSelection)=\"unassignDocument()\"\n (itemSelected)=\"assignDocument($event)\"\n class=\"dossier-candidates-dropdown\"\n >\n </valtimo-searchable-dropdown-select>\n </ng-container>\n</ng-template>\n\n<ng-template #loadingUsers>\n <h5>\n <b>{{ 'assignDocument.fetchingUsers' | translate }}</b>\n </h5>\n</ng-template>\n", styles: [".container-fluid{color:#959595}valtimo-searchable-dropdown-select{font-size:13px}:host .dossier-candidates-dropdown h5{margin-block:0}\n"] }]
87
+ }], ctorParameters: function () { return [{ type: i1.DocumentService }]; }, propDecorators: { documentId: [{
88
+ type: Input
89
+ }], assigneeId: [{
90
+ type: Input
91
+ }], assigneeFullName: [{
92
+ type: Input
93
+ }], hasPermission: [{
94
+ type: Input
95
+ }], assignmentOfDocumentChanged: [{
96
+ type: Output
97
+ }] } });
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1hc3NpZ24tdXNlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXIvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItYXNzaWduLXVzZXIvZG9zc2llci1hc3NpZ24tdXNlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXIvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItYXNzaWduLXVzZXIvZG9zc2llci1hc3NpZ24tdXNlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHckUsT0FBTyxFQUFDLGVBQWUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFN0UsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFPbkMsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxJQUFhLFVBQVUsQ0FBQyxLQUFhO1FBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFDRCxJQUFhLFVBQVUsQ0FBQyxLQUFhO1FBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFDRCxJQUFhLGdCQUFnQixDQUFDLEtBQWE7UUFDekMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBaUJELFlBQTZCLGVBQWdDO1FBQWhDLG9CQUFlLEdBQWYsZUFBZSxD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QzVCLENBQUM7K0dBMUVVLDBCQUEwQjttR0FBMUIsMEJBQTBCLGtSQzNCdkMsK3BHQXVGQTs7NEZENURhLDBCQUEwQjtrQkFMdEMsU0FBUzsrQkFDRSw2QkFBNkI7c0dBSzFCLFVBQVU7c0JBQXRCLEtBQUs7Z0JBR08sVUFBVTtzQkFBdEIsS0FBSztnQkFHTyxnQkFBZ0I7c0JBQTVCLEtBQUs7Z0JBR0csYUFBYTtzQkFBckIsS0FBSztnQkFDSSwyQkFBMkI7c0JBQXBDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMyBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Ryb3Bkb3duSXRlbX0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge0RvY3VtZW50U2VydmljZX0gZnJvbSAnQHZhbHRpbW8vZG9jdW1lbnQnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGZpbHRlciwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgc3dpdGNoTWFwfSBmcm9tICdyeGpzJztcbmltcG9ydCB7TmFtZWRVc2VyfSBmcm9tICdAdmFsdGltby9jb25maWcnO1xuaW1wb3J0IHt0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1kb3NzaWVyLWFzc2lnbi11c2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Rvc3NpZXItYXNzaWduLXVzZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kb3NzaWVyLWFzc2lnbi11c2VyLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRG9zc2llckFzc2lnblVzZXJDb21wb25lbnQge1xuICBASW5wdXQoKSBzZXQgZG9jdW1lbnRJZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5kb2N1bWVudElkJC5uZXh0KHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgYXNzaWduZWVJZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5hc3NpZ25lZUlkJC5uZXh0KHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgYXNzaWduZWVGdWxsTmFtZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5hc3NpZ25lZUZ1bGxOYW1lJC5uZXh0KHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBoYXNQZXJtaXNzaW9uID0gdHJ1ZTtcbiAgQE91dHB1dCgpIGFzc2lnbm1lbnRPZkRvY3VtZW50Q2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZGlzYWJsZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgcHVibGljIHJlYWRvbmx5IGRvY3VtZW50SWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgcHVibGljIHJlYWRvbmx5IHVzZXJJdGVtcyQ6IE9ic2VydmFibGU8QXJyYXk8RHJvcGRvd25JdGVtPj4gPSB0aGlzLmRvY3VtZW50SWQkLnBpcGUoXG4gICAgZmlsdGVyKGRvY3VtZW50SWQgPT4gISFkb2N1bWVudElkKSxcbiAgICBzd2l0Y2hNYXAoZG9jdW1lbnRJZCA9PlxuICAgICAgdGhpcy5oYXNQZXJtaXNzaW9uID8gdGhpcy5kb2N1bWVudFNlcnZpY2UuZ2V0Q2FuZGlkYXRlVXNlcnMoZG9jdW1lbnRJZCkgOiBvZihbXSlcbiAgICApLFxuICAgIG1hcChjYW5kaWRhdGVVc2VycyA9PiB0aGlzLm1hcFVzZXJzRm9yRHJvcGRvd24oY2FuZGlkYXRlVXNlcnMpKSxcbiAgICB0YXAoKCkgPT4gdGhpcy5lbmFibGUoKSlcbiAgKTtcbiAgcHVibGljIHJlYWRvbmx5IGFzc2lnbmVlSWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgcHVibGljIHJlYWRvbmx5IGFzc2lnbmVlRnVsbE5hbWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50U2VydmljZTogRG9jdW1lbnRTZXJ2aWNlKSB7fVxuXG4gIHB1YmxpYyBhc3NpZ25Eb2N1bWVudCh1c2VySWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZSgpO1xuXG4gICAgdGhpcy5kb2N1bWVudElkJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcChkb2N1bWVudElkID0+IHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmFzc2lnbkhhbmRsZXJUb0RvY3VtZW50KGRvY3VtZW50SWQsIHVzZXJJZCkpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5lbWl0Q2hhbmdlKCk7XG4gICAgICAgIHRoaXMuZW5hYmxlKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyB1bmFzc2lnbkRvY3VtZW50KCk6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZSgpO1xuXG4gICAgdGhpcy5kb2N1bWVudElkJFxuICAgICAgLnBpcGUoc3dpdGNoTWFwKGRvY3VtZW50SWQgPT4gdGhpcy5kb2N1bWVudFNlcnZpY2UudW5hc3NpZ25IYW5kbGVyRnJvbURvY3VtZW50KGRvY3VtZW50SWQpKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmVtaXRDaGFuZ2UoKTtcbiAgICAgICAgdGhpcy5lbmFibGUoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBVc2Vyc0ZvckRyb3Bkb3duKHVzZXJzOiBOYW1lZFVzZXJbXSk6IERyb3Bkb3duSXRlbVtdIHtcbiAgICByZXR1cm4gdXNlcnNcbiAgICAgIC5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIGlmIChhLmxhc3ROYW1lICYmIGIubGFzdE5hbWUpIHtcbiAgICAgICAgICByZXR1cm4gYS5sYXN0TmFtZS5sb2NhbGVDb21wYXJlKGIubGFzdE5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9KVxuICAgICAgLm1hcCh1c2VyID0+ICh7dGV4dDogdXNlci5sYWJlbCwgaWQ6IHVzZXIuaWR9KSk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5hc3NpZ25tZW50T2ZEb2N1bWVudENoYW5nZWQuZW1pdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbmFibGUoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCQubmV4dChmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIGRpc2FibGUoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCQubmV4dCh0cnVlKTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjMgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XG4gIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHBsLTAgZC1mbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRcIj4gPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjY29udGVudD5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwie1xuICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkJCB8IGFzeW5jLFxuICAgICAgYXNzaWduZWVGdWxsTmFtZTogYXNzaWduZWVGdWxsTmFtZSQgfCBhc3luYyxcbiAgICAgIGFzc2lnbmVlSWQ6IGFzc2lnbmVlSWQkIHwgYXN5bmNcbiAgICB9IGFzIG9ic1wiXG4gID5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWhhc1Blcm1pc3Npb24gJiYgb2JzLmFzc2lnbmVlRnVsbE5hbWVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmdWxsTmFtZTsgY29udGV4dDoge29iczogb2JzfVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc1Blcm1pc3Npb25cIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWxlY3RVc2VyOyBjb250ZXh0OiB7b2JzOiBvYnN9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNmdWxsTmFtZSBsZXQtb2JzPVwib2JzXCI+XG4gIDx2YWx0aW1vLXNlYXJjaGFibGUtZHJvcGRvd24tc2VsZWN0XG4gICAgW2J1dHRvblRleHRdPVwiJ2Fzc2lnbkRvY3VtZW50LmhlYWRlcicgfCB0cmFuc2xhdGVcIlxuICAgIFtjbGVhclNlbGVjdGlvbkJ1dHRvblRpdGxlXT1cIidhc3NpZ25Eb2N1bWVudC5yZW1vdmUnIHwgdHJhbnNsYXRlXCJcbiAgICBbaGFzUGVybWlzc2lvbl09XCJmYWxzZVwiXG4gICAgW2hhc1NlbGVjdGlvbl09XCJ0cnVlXCJcbiAgICBbbm9SZXN1bHRzVGV4dF09XCInaW50ZXJmYWNlLm5vU2VhcmNoUmVzdWx0cycgfCB0cmFuc2xhdGVcIlxuICAgIFtzZWFyY2hUZXh0XT1cIidpbnRlcmZhY2UudHlwZVRvU2VhcmNoJyB8IHRyYW5zbGF0ZVwiXG4gICAgW3NlbGVjdGVkVGV4dFZhbHVlXT1cIm9icy5hc3NpZ25lZUZ1bGxOYW1lXCJcbiAgICBbc2VsZWN0ZWRUZXh0XT1cIidhc3NpZ25Eb2N1bWVudC5hc3NpZ25lZFRvJyB8IHRyYW5zbGF0ZVwiXG4gICAgW3N0eWxlXT1cIid1bmRlcmxpbmVkVGV4dCdcIlxuICAgIFt3aWR0aF09XCIyNTBcIlxuICAgIGNsYXNzPVwiZG9zc2llci1jYW5kaWRhdGVzLWRyb3Bkb3duXCJcbiAgPlxuICA8L3ZhbHRpbW8tc2VhcmNoYWJsZS1kcm9wZG93bi1zZWxlY3Q+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NlbGVjdFVzZXIgbGV0LW9icz1cIm9ic1wiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwidXNlckl0ZW1zJCB8IGFzeW5jIGFzIHVzZXJJdGVtczsgZWxzZSBsb2FkaW5nVXNlcnNcIj5cbiAgICA8dmFsdGltby1zZWFyY2hhYmxlLWRyb3Bkb3duLXNlbGVjdFxuICAgICAgW2J1dHRvblRleHRdPVwiJ2Fzc2lnbkRvY3VtZW50LmhlYWRlcicgfCB0cmFuc2xhdGVcIlxuICAgICAgW2NsZWFyU2VsZWN0aW9uQnV0dG9uVGl0bGVdPVwiJ2Fzc2lnbkRvY3VtZW50LnJlbW92ZScgfCB0cmFuc2xhdGVcIlxuICAgICAgW2Rpc2FibGVkXT1cIm9icy5kaXNhYmxlZFwiXG4gICAgICBbaGFzUGVybWlzc2lvbl09XCJoYXNQZXJtaXNzaW9uXCJcbiAgICAgIFtoYXNTZWxlY3Rpb25dPVwib2JzLmFzc2lnbmVlSWRcIlxuICAgICAgW2l0ZW1zXT1cInVzZXJJdGVtc1wiXG4gICAgICBbbm9SZXN1bHRzVGV4dF09XCInaW50ZXJmYWNlLm5vU2VhcmNoUmVzdWx0cycgfCB0cmFuc2xhdGVcIlxuICAgICAgW3NlYXJjaFRleHRdPVwiJ2ludGVyZmFjZS50eXBlVG9TZWFyY2gnIHwgdHJhbnNsYXRlXCJcbiAgICAgIFtzZWxlY3RlZFRleHRWYWx1ZV09XCJvYnMuYXNzaWduZWVGdWxsTmFtZVwiXG4gICAgICBbc2VsZWN0ZWRUZXh0XT1cIidhc3NpZ25Eb2N1bWVudC5hc3NpZ25lZFRvJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbc3R5bGVdPVwiJ3VuZGVybGluZWRUZXh0J1wiXG4gICAgICBbd2lkdGhdPVwiMjUwXCJcbiAgICAgIChjbGVhclNlbGVjdGlvbik9XCJ1bmFzc2lnbkRvY3VtZW50KClcIlxuICAgICAgKGl0ZW1TZWxlY3RlZCk9XCJhc3NpZ25Eb2N1bWVudCgkZXZlbnQpXCJcbiAgICAgIGNsYXNzPVwiZG9zc2llci1jYW5kaWRhdGVzLWRyb3Bkb3duXCJcbiAgICA+XG4gICAgPC92YWx0aW1vLXNlYXJjaGFibGUtZHJvcGRvd24tc2VsZWN0PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbG9hZGluZ1VzZXJzPlxuICA8aDU+XG4gICAgPGI+e3sgJ2Fzc2lnbkRvY3VtZW50LmZldGNoaW5nVXNlcnMnIHwgdHJhbnNsYXRlIH19PC9iPlxuICA8L2g1PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -17,7 +17,7 @@ import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, O
17
17
  import { Validators } from '@angular/forms';
18
18
  import { map } from 'rxjs';
19
19
  import * as i0 from "@angular/core";
20
- import * as i1 from "../services";
20
+ import * as i1 from "../../services";
21
21
  import * as i2 from "@angular/forms";
22
22
  import * as i3 from "@angular/common";
23
23
  import * as i4 from "carbon-components-angular";
@@ -72,4 +72,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
72
72
  }], closeEvent: [{
73
73
  type: Output
74
74
  }] } });
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1idWxrLWFzc2lnbi1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXIvc3JjL2xpYi9kb3NzaWVyLWJ1bGstYXNzaWduLW1vZGFsL2Rvc3NpZXItYnVsay1hc3NpZ24tbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvZG9zc2llci1idWxrLWFzc2lnbi1tb2RhbC9kb3NzaWVyLWJ1bGstYXNzaWduLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBeUIsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEUsT0FBTyxFQUFDLEdBQUcsRUFBYSxNQUFNLE1BQU0sQ0FBQzs7Ozs7OztBQVVyQyxNQUFNLE9BQU8sK0JBQStCO0lBRzFDLElBQW9CLFdBQVcsQ0FBQyxLQUFlO1FBQzdDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ2pCLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBbUJELFlBQ1UsaUJBQTJDLEVBQzNDLEVBQWU7UUFEZixzQkFBaUIsR0FBakIsaUJBQWlCLENBQTBCO1FBQzNDLE9BQUUsR0FBRixFQUFFLENBQWE7UUE1QkksZUFBVSxHQUFHLG1DQUFtQyxDQUFDO1FBUXJFLFNBQUksR0FBRyxLQUFLLENBQUM7UUFFWixlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENBQUM7UUFFbEQsb0JBQWUsR0FBMkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQzFGLEdBQUcsQ0FBQyxDQUFDLGNBQStCLEVBQUUsRUFBRSxDQUN0QyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBNEIsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNwRCxFQUFFLEVBQUUsYUFBYSxDQUFDLEVBQUU7WUFDcEIsT0FBTyxFQUFFLEdBQUcsYUFBYSxDQUFDLFNBQVMsSUFBSSxhQUFhLENBQUMsUUFBUSxFQUFFO1lBQy9ELFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLGFBQWEsQ0FBQyxFQUFFO1NBQ3pFLENBQUMsQ0FBQyxDQUNKLENBQ0YsQ0FBQztRQUVLLGNBQVMsR0FBYyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUMxQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBQyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7U0FDdkYsQ0FBQyxDQUFDO0lBS0EsQ0FBQztJQUVHLFVBQVUsQ0FBQyxPQUFpQjtRQUNqQyxNQUFNLFFBQVEsR0FBb0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQztRQUNoRixJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0IsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxZQUFZLENBQUMsS0FBYTtRQUMvQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7K0dBN0NVLCtCQUErQjttR0FBL0IsK0JBQStCLDROQ25DNUMsMHZEQTJDQTs7NEZEUmEsK0JBQStCO2tCQU4zQyxTQUFTOytCQUNFLG1DQUFtQyxtQkFHNUIsdUJBQXVCLENBQUMsTUFBTTt5SUFHbEIsVUFBVTtzQkFBdEMsV0FBVzt1QkFBQyxPQUFPO2dCQUVBLFdBQVc7c0JBQTlCLEtBQUs7Z0JBTUcsSUFBSTtzQkFBWixLQUFLO2dCQUVJLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMyBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TGlzdEl0ZW19IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuaW1wb3J0IHttYXAsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtDYW5kaWRhdGVVc2VyfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHtEb3NzaWVyQnVsa0Fzc2lnblNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1kb3NzaWVyLWJ1bGstYXNzaWduLW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Rvc3NpZXItYnVsay1hc3NpZ24tbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kb3NzaWVyLWJ1bGstYXNzaWduLW1vZGFsLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBEb3NzaWVyQnVsa0Fzc2lnbk1vZGFsQ29tcG9uZW50IHtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIHB1YmxpYyBtb2RhbENsYXNzID0gJ3ZhbHRpbW8tZG9zc2llci1idWxrLWFzc2lnbi1tb2RhbCc7XG5cbiAgQElucHV0KCkgcHVibGljIHNldCBkb2N1bWVudElkcyh2YWx1ZTogc3RyaW5nW10pIHtcbiAgICBpZiAoIXZhbHVlLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmJ1bGtBc3NpZ25TZXJ2aWNlLmxvYWRDYW5kaWRhdGVVc2Vycyh2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgb3BlbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBjbG9zZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCBudWxsPigpO1xuXG4gIHB1YmxpYyBjYW5kaWRhdGVVc2VycyQ6IE9ic2VydmFibGU8TGlzdEl0ZW1bXT4gPSB0aGlzLmJ1bGtBc3NpZ25TZXJ2aWNlLmNhbmRpZGF0ZVVzZXJzJC5waXBlKFxuICAgIG1hcCgoY2FuZGlkYXRlVXNlcnM6IENhbmRpZGF0ZVVzZXJbXSkgPT5cbiAgICAgIGNhbmRpZGF0ZVVzZXJzLm1hcCgoY2FuZGlkYXRlVXNlcjogQ2FuZGlkYXRlVXNlcikgPT4gKHtcbiAgICAgICAgaWQ6IGNhbmRpZGF0ZVVzZXIuaWQsXG4gICAgICAgIGNvbnRlbnQ6IGAke2NhbmRpZGF0ZVVzZXIuZmlyc3ROYW1lfSAke2NhbmRpZGF0ZVVzZXIubGFzdE5hbWV9YCxcbiAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuZm9ybUdyb3VwLmdldCgnYXNzaWduZWUnKT8udmFsdWU/LmlkID09PSBjYW5kaWRhdGVVc2VyLmlkLFxuICAgICAgfSkpXG4gICAgKVxuICApO1xuXG4gIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Hcm91cCA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgIGFzc2lnbmVlOiB0aGlzLmZiLmNvbnRyb2woe2lkOiAnJywgY29udGVudDogJycsIHNlbGVjdGVkOiBmYWxzZX0sIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICB9KTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGJ1bGtBc3NpZ25TZXJ2aWNlOiBEb3NzaWVyQnVsa0Fzc2lnblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXJcbiAgKSB7fVxuXG4gIHB1YmxpYyBjbG9zZU1vZGFsKGNvbmZpcm0/OiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgYXNzaWduZWU6IExpc3RJdGVtIHwgbnVsbCA9IHRoaXMuZm9ybUdyb3VwLmdldCgnYXNzaWduZWUnKT8udmFsdWUgPz8gbnVsbDtcbiAgICBpZiAoIWFzc2lnbmVlKSB7XG4gICAgICB0aGlzLmNsb3NlRXZlbnQuZW1pdChudWxsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmNsb3NlRXZlbnQuZW1pdChjb25maXJtID8gYXNzaWduZWUuaWQgOiBudWxsKTtcbiAgICB0aGlzLmZvcm1Hcm91cC5yZXNldCgpO1xuICB9XG5cbiAgcHVibGljIHRyYWNrQnlJbmRleChpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPGNkcy1tb2RhbCB2YWx0aW1vQ2RzTW9kYWwgW29wZW5dPVwib3BlblwiIChjbG9zZSk9XCJjbG9zZU1vZGFsKClcIiBzaG93Rm9vdGVyPVwidHJ1ZVwiPlxuICA8Y2RzLW1vZGFsLWhlYWRlciBzaG93Q2xvc2VCdXR0b249XCJ0cnVlXCIgKGNsb3NlU2VsZWN0KT1cImNsb3NlTW9kYWwoKVwiPlxuICAgIDxoMyBjZHNNb2RhbEhlYWRlckhlYWRpbmc+e3sgJ2Rvc3NpZXIuYnVsa0Fzc2lnbi5tb2RhbC50aXRsZScgfCB0cmFuc2xhdGUgfX08L2gzPlxuICA8L2Nkcy1tb2RhbC1oZWFkZXI+XG5cbiAgPHNlY3Rpb24gY2RzTW9kYWxDb250ZW50PlxuICAgIDxmb3JtICpuZ0lmPVwiY2FuZGlkYXRlVXNlcnMkIHwgYXN5bmMgYXMgY2FuZGlkYXRlVXNlcnNcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuICAgICAgPGNkcy1jb21iby1ib3hcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYXNzaWduZWVcIlxuICAgICAgICBbZHJvcFVwXT1cImZhbHNlXCJcbiAgICAgICAgW2l0ZW1zXT1cImNhbmRpZGF0ZVVzZXJzXCJcbiAgICAgICAgW2xhYmVsXT1cIidkb3NzaWVyLmJ1bGtBc3NpZ24ubW9kYWwuc2VsZWN0TGFiZWwnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidkb3NzaWVyLmJ1bGtBc3NpZ24ubW9kYWwuc2VsZWN0UGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCJcbiAgICAgID5cbiAgICAgICAgPGNkcy1kcm9wZG93bi1saXN0PjwvY2RzLWRyb3Bkb3duLWxpc3Q+XG4gICAgICA8L2Nkcy1jb21iby1ib3g+XG4gICAgPC9mb3JtPlxuICA8L3NlY3Rpb24+XG5cbiAgPGNkcy1tb2RhbC1mb290ZXI+XG4gICAgPGJ1dHRvbiBjZHNCdXR0b249XCJnaG9zdFwiIChjbGljayk9XCJjbG9zZU1vZGFsKClcIj57eyAnaW50ZXJmYWNlLmNhbmNlbCcgfCB0cmFuc2xhdGUgfX08L2J1dHRvbj5cblxuICAgIDxidXR0b24gY2RzQnV0dG9uPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCJmb3JtR3JvdXAuaW52YWxpZFwiIChjbGljayk9XCJjbG9zZU1vZGFsKHRydWUpXCI+XG4gICAgICB7eyAnZG9zc2llci5idWxrQXNzaWduLm1vZGFsLmNvbmZpcm0nIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvY2RzLW1vZGFsLWZvb3Rlcj5cbjwvY2RzLW1vZGFsPlxuIl19
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1idWxrLWFzc2lnbi1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXIvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItYnVsay1hc3NpZ24tbW9kYWwvZG9zc2llci1idWxrLWFzc2lnbi1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXIvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItYnVsay1hc3NpZ24tbW9kYWwvZG9zc2llci1idWxrLWFzc2lnbi1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXlCLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRWxFLE9BQU8sRUFBQyxHQUFHLEVBQWEsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUFVckMsTUFBTSxPQUFPLCtCQUErQjtJQUcxQyxJQUFvQixXQUFXLENBQUMsS0FBZTtRQUM3QyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNqQixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQW1CRCxZQUNVLGlCQUEyQyxFQUMzQyxFQUFlO1FBRGYsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUEwQjtRQUMzQyxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBNUJJLGVBQVUsR0FBRyxtQ0FBbUMsQ0FBQztRQVFyRSxTQUFJLEdBQUcsS0FBSyxDQUFDO1FBRVosZUFBVSxHQUFHLElBQUksWUFBWSxFQUFpQixDQUFDO1FBRWxELG9CQUFlLEdBQTJCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUMxRixHQUFHLENBQUMsQ0FBQyxjQUErQixFQUFFLEVBQUUsQ0FDdEMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQTRCLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDcEQsRUFBRSxFQUFFLGFBQWEsQ0FBQyxFQUFFO1lBQ3BCLE9BQU8sRUFBRSxHQUFHLGFBQWEsQ0FBQyxTQUFTLElBQUksYUFBYSxDQUFDLFFBQVEsRUFBRTtZQUMvRCxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxhQUFhLENBQUMsRUFBRTtTQUN6RSxDQUFDLENBQUMsQ0FDSixDQUNGLENBQUM7UUFFSyxjQUFTLEdBQWMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDMUMsUUFBUSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUMsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1NBQ3ZGLENBQUMsQ0FBQztJQUtBLENBQUM7SUFFRyxVQUFVLENBQUMsT0FBaUI7UUFDakMsTUFBTSxRQUFRLEdBQW9CLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssSUFBSSxJQUFJLENBQUM7UUFDaEYsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNiLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNCLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU0sWUFBWSxDQUFDLEtBQWE7UUFDL0IsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOytHQTdDVSwrQkFBK0I7bUdBQS9CLCtCQUErQiw0TkNuQzVDLDB2REEyQ0E7OzRGRFJhLCtCQUErQjtrQkFOM0MsU0FBUzsrQkFDRSxtQ0FBbUMsbUJBRzVCLHVCQUF1QixDQUFDLE1BQU07eUlBR2xCLFVBQVU7c0JBQXRDLFdBQVc7dUJBQUMsT0FBTztnQkFFQSxXQUFXO3NCQUE5QixLQUFLO2dCQU1HLElBQUk7c0JBQVosS0FBSztnQkFFSSxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjMgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0xpc3RJdGVtfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCB7bWFwLCBPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Q2FuZGlkYXRlVXNlcn0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7RG9zc2llckJ1bGtBc3NpZ25TZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tZG9zc2llci1idWxrLWFzc2lnbi1tb2RhbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kb3NzaWVyLWJ1bGstYXNzaWduLW1vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZG9zc2llci1idWxrLWFzc2lnbi1tb2RhbC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRG9zc2llckJ1bGtBc3NpZ25Nb2RhbENvbXBvbmVudCB7XG4gIEBIb3N0QmluZGluZygnY2xhc3MnKSBwdWJsaWMgbW9kYWxDbGFzcyA9ICd2YWx0aW1vLWRvc3NpZXItYnVsay1hc3NpZ24tbW9kYWwnO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgZG9jdW1lbnRJZHModmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgaWYgKCF2YWx1ZS5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5idWxrQXNzaWduU2VydmljZS5sb2FkQ2FuZGlkYXRlVXNlcnModmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIG9wZW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgY2xvc2VFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgbnVsbD4oKTtcblxuICBwdWJsaWMgY2FuZGlkYXRlVXNlcnMkOiBPYnNlcnZhYmxlPExpc3RJdGVtW10+ID0gdGhpcy5idWxrQXNzaWduU2VydmljZS5jYW5kaWRhdGVVc2VycyQucGlwZShcbiAgICBtYXAoKGNhbmRpZGF0ZVVzZXJzOiBDYW5kaWRhdGVVc2VyW10pID0+XG4gICAgICBjYW5kaWRhdGVVc2Vycy5tYXAoKGNhbmRpZGF0ZVVzZXI6IENhbmRpZGF0ZVVzZXIpID0+ICh7XG4gICAgICAgIGlkOiBjYW5kaWRhdGVVc2VyLmlkLFxuICAgICAgICBjb250ZW50OiBgJHtjYW5kaWRhdGVVc2VyLmZpcnN0TmFtZX0gJHtjYW5kaWRhdGVVc2VyLmxhc3ROYW1lfWAsXG4gICAgICAgIHNlbGVjdGVkOiB0aGlzLmZvcm1Hcm91cC5nZXQoJ2Fzc2lnbmVlJyk/LnZhbHVlPy5pZCA9PT0gY2FuZGlkYXRlVXNlci5pZCxcbiAgICAgIH0pKVxuICAgIClcbiAgKTtcblxuICBwdWJsaWMgZm9ybUdyb3VwOiBGb3JtR3JvdXAgPSB0aGlzLmZiLmdyb3VwKHtcbiAgICBhc3NpZ25lZTogdGhpcy5mYi5jb250cm9sKHtpZDogJycsIGNvbnRlbnQ6ICcnLCBzZWxlY3RlZDogZmFsc2V9LCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBidWxrQXNzaWduU2VydmljZTogRG9zc2llckJ1bGtBc3NpZ25TZXJ2aWNlLFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyXG4gICkge31cblxuICBwdWJsaWMgY2xvc2VNb2RhbChjb25maXJtPzogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IGFzc2lnbmVlOiBMaXN0SXRlbSB8IG51bGwgPSB0aGlzLmZvcm1Hcm91cC5nZXQoJ2Fzc2lnbmVlJyk/LnZhbHVlID8/IG51bGw7XG4gICAgaWYgKCFhc3NpZ25lZSkge1xuICAgICAgdGhpcy5jbG9zZUV2ZW50LmVtaXQobnVsbCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jbG9zZUV2ZW50LmVtaXQoY29uZmlybSA/IGFzc2lnbmVlLmlkIDogbnVsbCk7XG4gICAgdGhpcy5mb3JtR3JvdXAucmVzZXQoKTtcbiAgfVxuXG4gIHB1YmxpYyB0cmFja0J5SW5kZXgoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyMyBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxjZHMtbW9kYWwgdmFsdGltb0Nkc01vZGFsIFtvcGVuXT1cIm9wZW5cIiAoY2xvc2UpPVwiY2xvc2VNb2RhbCgpXCIgc2hvd0Zvb3Rlcj1cInRydWVcIj5cbiAgPGNkcy1tb2RhbC1oZWFkZXIgc2hvd0Nsb3NlQnV0dG9uPVwidHJ1ZVwiIChjbG9zZVNlbGVjdCk9XCJjbG9zZU1vZGFsKClcIj5cbiAgICA8aDMgY2RzTW9kYWxIZWFkZXJIZWFkaW5nPnt7ICdkb3NzaWVyLmJ1bGtBc3NpZ24ubW9kYWwudGl0bGUnIHwgdHJhbnNsYXRlIH19PC9oMz5cbiAgPC9jZHMtbW9kYWwtaGVhZGVyPlxuXG4gIDxzZWN0aW9uIGNkc01vZGFsQ29udGVudD5cbiAgICA8Zm9ybSAqbmdJZj1cImNhbmRpZGF0ZVVzZXJzJCB8IGFzeW5jIGFzIGNhbmRpZGF0ZVVzZXJzXCIgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cbiAgICAgIDxjZHMtY29tYm8tYm94XG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFzc2lnbmVlXCJcbiAgICAgICAgW2Ryb3BVcF09XCJmYWxzZVwiXG4gICAgICAgIFtpdGVtc109XCJjYW5kaWRhdGVVc2Vyc1wiXG4gICAgICAgIFtsYWJlbF09XCInZG9zc2llci5idWxrQXNzaWduLm1vZGFsLnNlbGVjdExhYmVsJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCInZG9zc2llci5idWxrQXNzaWduLm1vZGFsLnNlbGVjdFBsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICA+XG4gICAgICAgIDxjZHMtZHJvcGRvd24tbGlzdD48L2Nkcy1kcm9wZG93bi1saXN0PlxuICAgICAgPC9jZHMtY29tYm8tYm94PlxuICAgIDwvZm9ybT5cbiAgPC9zZWN0aW9uPlxuXG4gIDxjZHMtbW9kYWwtZm9vdGVyPlxuICAgIDxidXR0b24gY2RzQnV0dG9uPVwiZ2hvc3RcIiAoY2xpY2spPVwiY2xvc2VNb2RhbCgpXCI+e3sgJ2ludGVyZmFjZS5jYW5jZWwnIHwgdHJhbnNsYXRlIH19PC9idXR0b24+XG5cbiAgICA8YnV0dG9uIGNkc0J1dHRvbj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiZm9ybUdyb3VwLmludmFsaWRcIiAoY2xpY2spPVwiY2xvc2VNb2RhbCh0cnVlKVwiPlxuICAgICAge3sgJ2Rvc3NpZXIuYnVsa0Fzc2lnbi5tb2RhbC5jb25maXJtJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Nkcy1tb2RhbC1mb290ZXI+XG48L2Nkcy1tb2RhbD5cbiJdfQ==
@@ -0,0 +1,194 @@
1
+ import { Component, ViewChild, ViewContainerRef, } from '@angular/core';
2
+ import moment from 'moment';
3
+ import { BehaviorSubject, combineLatest, from, map, of, startWith, switchMap, take, tap, } from 'rxjs';
4
+ import { TabLoaderImpl } from '../../models';
5
+ import { CAN_ASSIGN_CASE_PERMISSION, CAN_CLAIM_CASE_PERMISSION, DOSSIER_DETAIL_PERMISSION_RESOURCE, } from '../../permissions';
6
+ import { DossierTabService } from '../../services';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@valtimo/components";
9
+ import * as i2 from "@valtimo/config";
10
+ import * as i3 from "@valtimo/document";
11
+ import * as i4 from "keycloak-angular";
12
+ import * as i5 from "@angular/common";
13
+ import * as i6 from "ngx-logger";
14
+ import * as i7 from "@valtimo/access-control";
15
+ import * as i8 from "@angular/router";
16
+ import * as i9 from "../../services";
17
+ import * as i10 from "@ng-bootstrap/ng-bootstrap";
18
+ import * as i11 from "carbon-components-angular";
19
+ import * as i12 from "../dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component";
20
+ import * as i13 from "../dossier-assign-user/dossier-assign-user.component";
21
+ import * as i14 from "@ngx-translate/core";
22
+ import * as i15 from "../../pipes/tab-translate/tab-translate.pipe";
23
+ export class DossierDetailComponent {
24
+ constructor(breadcrumbService, componentFactoryResolver, configService, documentService, keyCloakService, location, logger, permissionService, route, router, dossierTabService, dossierService) {
25
+ this.breadcrumbService = breadcrumbService;
26
+ this.componentFactoryResolver = componentFactoryResolver;
27
+ this.configService = configService;
28
+ this.documentService = documentService;
29
+ this.keyCloakService = keyCloakService;
30
+ this.location = location;
31
+ this.logger = logger;
32
+ this.permissionService = permissionService;
33
+ this.route = route;
34
+ this.router = router;
35
+ this.dossierTabService = dossierTabService;
36
+ this.dossierService = dossierService;
37
+ this.customDossierHeaderItems = [];
38
+ this.document = null;
39
+ this.processDefinitionListFields = [];
40
+ this.processDocumentDefinitions = [];
41
+ this.tabLoader = null;
42
+ this.assigneeId$ = new BehaviorSubject('');
43
+ this.document$ = this.dossierService.refreshDocument$.pipe(switchMap(() => this.route.params), map((params) => params?.documentId), switchMap((documentId) => documentId ? this.documentService.getDocument(this.documentId) : of(null)), tap((document) => {
44
+ if (document) {
45
+ this.assigneeId$.next(document.assigneeId);
46
+ this.document = document;
47
+ if (this.configService.config.customDossierHeader?.hasOwnProperty(this.documentDefinitionName.toLowerCase()) &&
48
+ this.customDossierHeaderItems.length === 0) {
49
+ this.configService.config.customDossierHeader[this.documentDefinitionName.toLowerCase()]?.forEach(item => this.getCustomDossierHeaderItem(item));
50
+ }
51
+ }
52
+ }));
53
+ this.documentDefinitionName$ = this.route.params.pipe(map(params => params.documentDefinitionName || ''));
54
+ this.userId$ = from(this.keyCloakService.isLoggedIn()).pipe(switchMap(() => this.keyCloakService.loadUserProfile()), map(profile => profile?.id));
55
+ this.isAssigning$ = new BehaviorSubject(false);
56
+ this.isAssignedToCurrentUser$ = combineLatest([
57
+ this.assigneeId$,
58
+ this.userId$,
59
+ ]).pipe(map(([assigneeId, userId]) => !!assigneeId && !!userId && assigneeId === userId), startWith(true));
60
+ this.canHaveAssignee$ = this.documentDefinitionName$.pipe(switchMap(documentDefinitionName => this.documentService.getCaseSettings(documentDefinitionName)), map(caseSettings => caseSettings?.canHaveAssignee));
61
+ this.canAssignLoaded$ = new BehaviorSubject(false);
62
+ this.canAssign$ = this.route.paramMap.pipe(switchMap((params) => this.permissionService.requestPermission(CAN_ASSIGN_CASE_PERMISSION, {
63
+ resource: DOSSIER_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,
64
+ identifier: params.get('documentId') ?? '',
65
+ })), tap(() => {
66
+ this.canAssignLoaded$.next(true);
67
+ }));
68
+ this.canClaim$ = this.route.paramMap.pipe(switchMap((params) => this.permissionService.requestPermission(CAN_CLAIM_CASE_PERMISSION, {
69
+ resource: DOSSIER_DETAIL_PERMISSION_RESOURCE.jsonSchemaDocument,
70
+ identifier: params.get('documentId') ?? '',
71
+ })));
72
+ this.loadingTabs$ = new BehaviorSubject(true);
73
+ this.noTabsConfigured$ = new BehaviorSubject(false);
74
+ this._snapshot = this.route.snapshot.paramMap;
75
+ this.documentDefinitionName = this._snapshot.get('documentDefinitionName') || '';
76
+ this.documentId = this._snapshot.get('documentId') || '';
77
+ }
78
+ ngAfterViewInit() {
79
+ this.initTabLoader();
80
+ this.initBreadcrumb();
81
+ this.getAllAssociatedProcessDefinitions();
82
+ }
83
+ ngOnDestroy() {
84
+ this.breadcrumbService.clearSecondBreadcrumb();
85
+ }
86
+ getAllAssociatedProcessDefinitions() {
87
+ this.documentService
88
+ .findProcessDocumentDefinitions(this.documentDefinitionName)
89
+ .subscribe((processDocumentDefinitions) => {
90
+ this.processDocumentDefinitions = processDocumentDefinitions.filter(processDocumentDefinition => processDocumentDefinition.startableByUser);
91
+ this.processDefinitionListFields = [
92
+ {
93
+ key: 'processName',
94
+ label: 'Proces',
95
+ },
96
+ ];
97
+ });
98
+ }
99
+ startProcess(processDocumentDefinition) {
100
+ this.supportingProcessStart.openModal(processDocumentDefinition, this.documentId);
101
+ }
102
+ claimAssignee() {
103
+ this.isAssigning$.next(true);
104
+ this.userId$
105
+ .pipe(take(1), switchMap((userId) => this.documentService.assignHandlerToDocument(this.documentId, userId ?? '')))
106
+ .subscribe({
107
+ next: () => {
108
+ this.isAssigning$.next(false);
109
+ this.dossierService.refresh();
110
+ },
111
+ error: () => {
112
+ this.isAssigning$.next(false);
113
+ this.logger.debug('Something went wrong while assigning user to case');
114
+ },
115
+ });
116
+ }
117
+ initBreadcrumb() {
118
+ this.documentService
119
+ .getDocumentDefinition(this.documentDefinitionName)
120
+ .subscribe(definition => {
121
+ this.documentDefinitionNameTitle = definition.schema.title;
122
+ this.setBreadcrumb();
123
+ });
124
+ }
125
+ initTabLoader() {
126
+ this.dossierTabService.tabs$.pipe(take(1)).subscribe(tabs => {
127
+ if (tabs?.length > 0) {
128
+ this._initialTabName = this._snapshot.get('tab') ?? '';
129
+ this.tabLoader = new TabLoaderImpl(tabs, this.componentFactoryResolver, this.viewContainerRef, this.router, this.route);
130
+ this.tabLoader.initial(this._initialTabName);
131
+ this.loadingTabs$.next(false);
132
+ }
133
+ else {
134
+ this.noTabsConfigured$.next(true);
135
+ this.loadingTabs$.next(false);
136
+ }
137
+ });
138
+ }
139
+ assignmentOfDocumentChanged() {
140
+ this.dossierService.refresh();
141
+ }
142
+ getCustomDossierHeaderItem(item) {
143
+ this.customDossierHeaderItems.push({
144
+ label: item['labelTranslationKey'] || '',
145
+ columnSize: item['columnSize'] || 3,
146
+ textSize: item['textSize'] || 'md',
147
+ customClass: item['customClass'] || '',
148
+ modifier: item['modifier'] || '',
149
+ value: item['propertyPaths']?.reduce((prev, curr) => prev + this.getStringFromDocumentPath(item, curr), ''),
150
+ });
151
+ }
152
+ getStringFromDocumentPath(item, path) {
153
+ const prefix = item['propertyPaths'].indexOf(path) > 0 ? ' ' : '';
154
+ let string = this.getNestedProperty(this.document.content, path, item['noValueText']) || '';
155
+ const dateFormats = [moment.ISO_8601, 'MM-DD-YYYY', 'DD-MM-YYYY', 'YYYY-MM-DD'];
156
+ switch (item['modifier']) {
157
+ case 'age': {
158
+ if (moment(string, dateFormats, true).isValid()) {
159
+ string = moment().diff(string, 'years');
160
+ }
161
+ break;
162
+ }
163
+ default: {
164
+ if (moment(string, dateFormats, true).isValid()) {
165
+ string = moment(string).format('DD-MM-YYYY');
166
+ }
167
+ }
168
+ }
169
+ return prefix + string;
170
+ }
171
+ getNestedProperty(obj, path, defaultValue) {
172
+ return path.split('.').reduce((currentObject, key) => currentObject?.[key], obj) || defaultValue;
173
+ }
174
+ setBreadcrumb() {
175
+ this.breadcrumbService.setSecondBreadcrumb({
176
+ route: [`/dossiers/${this.documentDefinitionName}`],
177
+ content: this.documentDefinitionNameTitle,
178
+ href: `/dossiers/${this.documentDefinitionName}`,
179
+ });
180
+ }
181
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DossierDetailComponent, deps: [{ token: i1.BreadcrumbService }, { token: i0.ComponentFactoryResolver }, { token: i2.ConfigService }, { token: i3.DocumentService }, { token: i4.KeycloakService }, { token: i5.Location }, { token: i6.NGXLogger }, { token: i7.PermissionService }, { token: i8.ActivatedRoute }, { token: i8.Router }, { token: i9.DossierTabService }, { token: i9.DossierService }], target: i0.ɵɵFactoryTarget.Component }); }
182
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DossierDetailComponent, selector: "valtimo-dossier-detail", providers: [DossierTabService], viewQueries: [{ propertyName: "supportingProcessStart", first: true, predicate: ["supportingProcessStartModal"], descendants: true }, { propertyName: "viewContainerRef", first: true, predicate: ["tabContainer"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<div\n *ngIf=\"{\n canAssign: canAssign$ | async,\n canClaim: canClaim$ | async,\n canHaveAssignee: canHaveAssignee$ | async,\n document: document$ | async\n } as obs\"\n class=\"main-content\"\n>\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-widget>\n <div class=\"card-header bg-light card-header-divider pb-2\">\n <div class=\"row\">\n <div class=\"col\">\n <ng-container\n *ngTemplateOutlet=\"\n caseDetailHeader;\n context: {\n canHaveAssignee: obs.canHaveAssignee,\n document: obs.document,\n canAssign: obs.canAssign\n }\n \"\n ></ng-container>\n </div>\n\n <div class=\"btn-group mt-m3px mb-3 col-auto\">\n <valtimo-extension\n module=\"dossier\"\n page=\"dossier-detail\"\n section=\"card-header\"\n ></valtimo-extension>\n\n <ng-container\n *ngTemplateOutlet=\"\n claimButton;\n context: {canClaim: obs.canClaim, canHaveAssignee: obs.canHaveAssignee}\n \"\n ></ng-container>\n\n <div class=\"dropdown\">\n <button\n [disabled]=\"processDocumentDefinitions.length === 0\"\n [ngbTooltip]=\"processDocumentDefinitions.length === 0 ? 'No action' : null\"\n aria-expanded=\"false\"\n aria-haspopup=\"true\"\n class=\"btn btn-primary dropdown-toggle\"\n data-toggle=\"dropdown\"\n id=\"startProcessDropdown\"\n placement=\"bottom\"\n type=\"button\"\n >\n <span>{{ 'dossier.startSubProcess' | translate }}</span>\n\n <i class=\"ml-1 mdi mdi-chevron-down\"></i>\n </button>\n\n <div\n aria-labelledby=\"startProcessDropdown\"\n class=\"dropdown-menu dropdown-menu-right\"\n >\n <button\n *ngFor=\"let processDocumentDefinition of processDocumentDefinitions\"\n (click)=\"startProcess(processDocumentDefinition)\"\n class=\"dropdown-item p\"\n href=\"#\"\n >\n {{\n (processDocumentDefinition?.id?.processDefinitionKey | translate) !==\n processDocumentDefinition?.id?.processDefinitionKey\n ? (processDocumentDefinition.id.processDefinitionKey | translate)\n : processDocumentDefinition.processName\n }}\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <ul *ngIf=\"tabLoader\" class=\"nav nav-tabs\">\n <li class=\"nav-item\" *ngFor=\"let tab of tabLoader.tabs\">\n <a\n [ngClass]=\"{active: tab.isActive()}\"\n (click)=\"tabLoader.load(tab)\"\n class=\"nav-link clickable\"\n data-toggle=\"tab\"\n id=\"{{ tab.name }}-tab\"\n >\n {{ tab | tabTranslate | async }}\n </a>\n </li>\n </ul>\n\n <div class=\"card-body bg-white p-5 position-relative tab-container\">\n <div *ngIf=\"loadingTabs$ | async\" class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n\n <valtimo-no-results\n *ngIf=\"noTabsConfigured$ | async\"\n [description]=\"'dossier.tabs.noResultsDescription' | translate\"\n [title]=\"'dossier.tabs.noResults' | translate\"\n ></valtimo-no-results>\n\n <ng-template #tabContainer></ng-template>\n\n <div class=\"clearfix\"></div>\n </div>\n </valtimo-widget>\n </div>\n\n <valtimo-dossier-supporting-process-start-modal\n (formSubmit)=\"tabLoader.refreshView()\"\n #supportingProcessStartModal\n ></valtimo-dossier-supporting-process-start-modal>\n </div>\n</div>\n\n<ng-template\n #caseDetailHeader\n let-canHaveAssignee=\"canHaveAssignee\"\n let-document=\"document\"\n let-canAssign=\"canAssign\"\n>\n <div class=\"row\" *ngIf=\"customDossierHeaderItems.length > 0; else defaultTitle\">\n <span\n *ngFor=\"let item of customDossierHeaderItems\"\n [ngClass]=\"{\n h1: item.textSize === 'xl',\n h2: item.textSize === 'lg',\n h3: item.textSize === 'md',\n h4: item.textSize === 'sm',\n h5: item.textSize === 'xs'\n }\"\n class=\"mb-0 mt-0 pb-2 align-self-end col-xl-{{ item.columnSize }} col-lg-{{\n item.columnSize * 2\n }} {{ item.customClass }}\"\n >\n <span *ngIf=\"item.label\">{{ item.label | translate }}</span>\n\n <span *ngIf=\"item.label && item.value\">: </span>\n\n <strong>{{ item.value }}</strong>\n </span>\n </div>\n\n <ng-container\n *ngTemplateOutlet=\"\n caseDetailAssignee;\n context: {canHaveAssignee: canHaveAssignee, document: document, canAssign: canAssign}\n \"\n ></ng-container>\n</ng-template>\n\n<ng-template #defaultTitle>\n <div class=\"row ml-0 mr-0\">{{ documentDefinitionNameTitle?.trim() }}</div>\n</ng-template>\n\n<ng-template\n #caseDetailAssignee\n let-canHaveAssignee=\"canHaveAssignee\"\n let-document=\"document\"\n let-canAssign=\"canAssign\"\n>\n <div class=\"row ml-0 mr-0 mt-1 mb-1\" *ngIf=\"canHaveAssignee && document\">\n <valtimo-dossier-assign-user\n *ngIf=\"canAssignLoaded$ | async\"\n [assigneeFullName]=\"document?.assigneeFullName\"\n [assigneeId]=\"document.assigneeId\"\n [documentId]=\"document.id\"\n [hasPermission]=\"canAssign\"\n (assignmentOfDocumentChanged)=\"assignmentOfDocumentChanged()\"\n ></valtimo-dossier-assign-user>\n </div>\n</ng-template>\n\n<ng-template #claimButton let-canClaim=\"canClaim\" let-canHaveAssignee=\"canHaveAssignee\">\n <div class=\"user-full-name\" *ngIf=\"canClaim && canHaveAssignee\">\n <button\n [disabled]=\"(isAssigning$ | async) || (isAssignedToCurrentUser$ | async)\"\n (click)=\"claimAssignee()\"\n aria-expanded=\"false\"\n aria-haspopup=\"true\"\n class=\"btn btn-space btn-primary mr-1\"\n placement=\"bottom\"\n type=\"button\"\n >\n <span>{{ 'dossier.claimAssigneeCase' | translate }}</span>\n </button>\n </div>\n</ng-template>\n", styles: [".tab-container{min-height:300px}.loading-container{display:flex;justify-content:center;flex-direction:row}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1.WidgetComponent, selector: "valtimo-widget", inputs: ["type", "name", "icon", "contrast", "divider", "title", "subtitle", "collapseAble", "collapse", "additionalClasses"] }, { kind: "directive", type: i10.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: i2.ExtensionComponent, selector: "valtimo-extension", inputs: ["module", "page", "section"] }, { kind: "component", type: i11.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "component", type: i1.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title"] }, { kind: "component", type: i12.DossierSupportingProcessStartModalComponent, selector: "valtimo-dossier-supporting-process-start-modal", outputs: ["formSubmit"] }, { kind: "component", type: i13.DossierAssignUserComponent, selector: "valtimo-dossier-assign-user", inputs: ["documentId", "assigneeId", "assigneeFullName", "hasPermission"], outputs: ["assignmentOfDocumentChanged"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i14.TranslatePipe, name: "translate" }, { kind: "pipe", type: i15.TabTranslatePipe, name: "tabTranslate" }] }); }
183
+ }
184
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DossierDetailComponent, decorators: [{
185
+ type: Component,
186
+ args: [{ selector: 'valtimo-dossier-detail', providers: [DossierTabService], template: "<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<div\n *ngIf=\"{\n canAssign: canAssign$ | async,\n canClaim: canClaim$ | async,\n canHaveAssignee: canHaveAssignee$ | async,\n document: document$ | async\n } as obs\"\n class=\"main-content\"\n>\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-widget>\n <div class=\"card-header bg-light card-header-divider pb-2\">\n <div class=\"row\">\n <div class=\"col\">\n <ng-container\n *ngTemplateOutlet=\"\n caseDetailHeader;\n context: {\n canHaveAssignee: obs.canHaveAssignee,\n document: obs.document,\n canAssign: obs.canAssign\n }\n \"\n ></ng-container>\n </div>\n\n <div class=\"btn-group mt-m3px mb-3 col-auto\">\n <valtimo-extension\n module=\"dossier\"\n page=\"dossier-detail\"\n section=\"card-header\"\n ></valtimo-extension>\n\n <ng-container\n *ngTemplateOutlet=\"\n claimButton;\n context: {canClaim: obs.canClaim, canHaveAssignee: obs.canHaveAssignee}\n \"\n ></ng-container>\n\n <div class=\"dropdown\">\n <button\n [disabled]=\"processDocumentDefinitions.length === 0\"\n [ngbTooltip]=\"processDocumentDefinitions.length === 0 ? 'No action' : null\"\n aria-expanded=\"false\"\n aria-haspopup=\"true\"\n class=\"btn btn-primary dropdown-toggle\"\n data-toggle=\"dropdown\"\n id=\"startProcessDropdown\"\n placement=\"bottom\"\n type=\"button\"\n >\n <span>{{ 'dossier.startSubProcess' | translate }}</span>\n\n <i class=\"ml-1 mdi mdi-chevron-down\"></i>\n </button>\n\n <div\n aria-labelledby=\"startProcessDropdown\"\n class=\"dropdown-menu dropdown-menu-right\"\n >\n <button\n *ngFor=\"let processDocumentDefinition of processDocumentDefinitions\"\n (click)=\"startProcess(processDocumentDefinition)\"\n class=\"dropdown-item p\"\n href=\"#\"\n >\n {{\n (processDocumentDefinition?.id?.processDefinitionKey | translate) !==\n processDocumentDefinition?.id?.processDefinitionKey\n ? (processDocumentDefinition.id.processDefinitionKey | translate)\n : processDocumentDefinition.processName\n }}\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <ul *ngIf=\"tabLoader\" class=\"nav nav-tabs\">\n <li class=\"nav-item\" *ngFor=\"let tab of tabLoader.tabs\">\n <a\n [ngClass]=\"{active: tab.isActive()}\"\n (click)=\"tabLoader.load(tab)\"\n class=\"nav-link clickable\"\n data-toggle=\"tab\"\n id=\"{{ tab.name }}-tab\"\n >\n {{ tab | tabTranslate | async }}\n </a>\n </li>\n </ul>\n\n <div class=\"card-body bg-white p-5 position-relative tab-container\">\n <div *ngIf=\"loadingTabs$ | async\" class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n\n <valtimo-no-results\n *ngIf=\"noTabsConfigured$ | async\"\n [description]=\"'dossier.tabs.noResultsDescription' | translate\"\n [title]=\"'dossier.tabs.noResults' | translate\"\n ></valtimo-no-results>\n\n <ng-template #tabContainer></ng-template>\n\n <div class=\"clearfix\"></div>\n </div>\n </valtimo-widget>\n </div>\n\n <valtimo-dossier-supporting-process-start-modal\n (formSubmit)=\"tabLoader.refreshView()\"\n #supportingProcessStartModal\n ></valtimo-dossier-supporting-process-start-modal>\n </div>\n</div>\n\n<ng-template\n #caseDetailHeader\n let-canHaveAssignee=\"canHaveAssignee\"\n let-document=\"document\"\n let-canAssign=\"canAssign\"\n>\n <div class=\"row\" *ngIf=\"customDossierHeaderItems.length > 0; else defaultTitle\">\n <span\n *ngFor=\"let item of customDossierHeaderItems\"\n [ngClass]=\"{\n h1: item.textSize === 'xl',\n h2: item.textSize === 'lg',\n h3: item.textSize === 'md',\n h4: item.textSize === 'sm',\n h5: item.textSize === 'xs'\n }\"\n class=\"mb-0 mt-0 pb-2 align-self-end col-xl-{{ item.columnSize }} col-lg-{{\n item.columnSize * 2\n }} {{ item.customClass }}\"\n >\n <span *ngIf=\"item.label\">{{ item.label | translate }}</span>\n\n <span *ngIf=\"item.label && item.value\">: </span>\n\n <strong>{{ item.value }}</strong>\n </span>\n </div>\n\n <ng-container\n *ngTemplateOutlet=\"\n caseDetailAssignee;\n context: {canHaveAssignee: canHaveAssignee, document: document, canAssign: canAssign}\n \"\n ></ng-container>\n</ng-template>\n\n<ng-template #defaultTitle>\n <div class=\"row ml-0 mr-0\">{{ documentDefinitionNameTitle?.trim() }}</div>\n</ng-template>\n\n<ng-template\n #caseDetailAssignee\n let-canHaveAssignee=\"canHaveAssignee\"\n let-document=\"document\"\n let-canAssign=\"canAssign\"\n>\n <div class=\"row ml-0 mr-0 mt-1 mb-1\" *ngIf=\"canHaveAssignee && document\">\n <valtimo-dossier-assign-user\n *ngIf=\"canAssignLoaded$ | async\"\n [assigneeFullName]=\"document?.assigneeFullName\"\n [assigneeId]=\"document.assigneeId\"\n [documentId]=\"document.id\"\n [hasPermission]=\"canAssign\"\n (assignmentOfDocumentChanged)=\"assignmentOfDocumentChanged()\"\n ></valtimo-dossier-assign-user>\n </div>\n</ng-template>\n\n<ng-template #claimButton let-canClaim=\"canClaim\" let-canHaveAssignee=\"canHaveAssignee\">\n <div class=\"user-full-name\" *ngIf=\"canClaim && canHaveAssignee\">\n <button\n [disabled]=\"(isAssigning$ | async) || (isAssignedToCurrentUser$ | async)\"\n (click)=\"claimAssignee()\"\n aria-expanded=\"false\"\n aria-haspopup=\"true\"\n class=\"btn btn-space btn-primary mr-1\"\n placement=\"bottom\"\n type=\"button\"\n >\n <span>{{ 'dossier.claimAssigneeCase' | translate }}</span>\n </button>\n </div>\n</ng-template>\n", styles: [".tab-container{min-height:300px}.loading-container{display:flex;justify-content:center;flex-direction:row}\n"] }]
187
+ }], ctorParameters: function () { return [{ type: i1.BreadcrumbService }, { type: i0.ComponentFactoryResolver }, { type: i2.ConfigService }, { type: i3.DocumentService }, { type: i4.KeycloakService }, { type: i5.Location }, { type: i6.NGXLogger }, { type: i7.PermissionService }, { type: i8.ActivatedRoute }, { type: i8.Router }, { type: i9.DossierTabService }, { type: i9.DossierService }]; }, propDecorators: { supportingProcessStart: [{
188
+ type: ViewChild,
189
+ args: ['supportingProcessStartModal']
190
+ }], viewContainerRef: [{
191
+ type: ViewChild,
192
+ args: ['tabContainer', { read: ViewContainerRef }]
193
+ }] } });
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1kZXRhaWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLWRldGFpbC9kb3NzaWVyLWRldGFpbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXIvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItZGV0YWlsL2Rvc3NpZXItZGV0YWlsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlCQSxPQUFPLEVBRUwsU0FBUyxFQUdULFNBQVMsRUFDVCxnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFPdkIsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBRTVCLE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUNiLElBQUksRUFDSixHQUFHLEVBRUgsRUFBRSxFQUNGLFNBQVMsRUFDVCxTQUFTLEVBQ1QsSUFBSSxFQUNKLEdBQUcsR0FDSixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDM0MsT0FBTyxFQUNMLDBCQUEwQixFQUMxQix5QkFBeUIsRUFDekIsa0NBQWtDLEdBQ25DLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFpQixpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQVFqRSxNQUFNLE9BQU8sc0JBQXNCO0lBbUdqQyxZQUNtQixpQkFBb0MsRUFDcEMsd0JBQWtELEVBQ2xELGFBQTRCLEVBQzVCLGVBQWdDLEVBQ2hDLGVBQWdDLEVBQ2hDLFFBQWtCLEVBQ2xCLE1BQWlCLEVBQ2pCLGlCQUFvQyxFQUNwQyxLQUFxQixFQUNyQixNQUFjLEVBQ2QsaUJBQW9DLEVBQ3BDLGNBQThCO1FBWDlCLHNCQUFp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RSxnQkFBZ0IsRUFBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7TG9jYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgT25EZXN0cm95LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUGFyYW1NYXAsIFBhcmFtcywgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtQZXJtaXNzaW9uU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vYWNjZXNzLWNvbnRyb2wnO1xuaW1wb3J0IHtCcmVhZGNydW1iU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge0NvbmZpZ1NlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2NvbmZpZyc7XG5pbXBvcnQge0RvY3VtZW50LCBEb2N1bWVudFNlcnZpY2UsIFByb2Nlc3NEb2N1bWVudERlZmluaXRpb259IGZyb20gJ0B2YWx0aW1vL2RvY3VtZW50JztcbmltcG9ydCB7S2V5Y2xvYWtTZXJ2aWNlfSBmcm9tICdrZXljbG9hay1hbmd1bGFyJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7TkdYTG9nZ2VyfSBmcm9tICduZ3gtbG9nZ2VyJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgZnJvbSxcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgc3RhcnRXaXRoLFxuICBzd2l0Y2hNYXAsXG4gIHRha2UsXG4gIHRhcCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0Rvc3NpZXJTdXBwb3J0aW5nUHJvY2Vzc1N0YXJ0TW9kYWxDb21wb25lbnR9IGZyb20gJy4uL2Rvc3NpZXItc3VwcG9ydGluZy1wcm9jZXNzLXN0YXJ0LW1vZGFsL2Rvc3NpZXItc3VwcG9ydGluZy1wcm9jZXNzLXN0YXJ0LW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQge1RhYkxvYWRlckltcGx9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge1xuICBDQU5fQVNTSUdOX0NBU0VfUEVSTUlTU0lPTixcbiAgQ0FOX0NMQUlNX0NBU0VfUEVSTUlTU0lPTixcbiAgRE9TU0lFUl9ERVRBSUxfUEVSTUlTU0lPTl9SRVNPVVJDRSxcbn0gZnJvbSAnLi4vLi4vcGVybWlzc2lvbnMnO1xuaW1wb3J0IHtEb3NzaWVyU2VydmljZSwgRG9zc2llclRhYlNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1kb3NzaWVyLWRldGFpbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kb3NzaWVyLWRldGFpbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Rvc3NpZXItZGV0YWlsLmNvbXBvbmVudC5jc3MnXSxcbiAgcHJvdmlkZXJzOiBbRG9zc2llclRhYlNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBEb3NzaWVyRGV0YWlsQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZCgnc3VwcG9ydGluZ1Byb2Nlc3NTdGFydE1vZGFsJylcbiAgc3VwcG9ydGluZ1Byb2Nlc3NTdGFydDogRG9zc2llclN1cHBvcnRpbmdQcm9jZXNzU3RhcnRNb2RhbENvbXBvbmVudDtcblxuICBAVmlld0NoaWxkKCd0YWJDb250YWluZXInLCB7cmVhZDogVmlld0NvbnRhaW5lclJlZn0pXG4gIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgcHVibGljIGN1c3RvbURvc3NpZXJIZWFkZXJJdGVtczogQXJyYXk8YW55PiA9IFtdO1xuICBwdWJsaWMgZG9jdW1lbnQ6IERvY3VtZW50IHwgbnVsbCA9IG51bGw7XG4gIHB1YmxpYyBkb2N1bWVudERlZmluaXRpb25OYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBkb2N1bWVudERlZmluaXRpb25OYW1lVGl0bGU6IHN0cmluZztcbiAgcHVibGljIGRvY3VtZW50SWQ6IHN0cmluZztcbiAgcHVibGljIHByb2Nlc3NEZWZpbml0aW9uTGlzdEZpZWxkczogQXJyYXk8YW55PiA9IFtdO1xuICBwdWJsaWMgcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnM6IFByb2Nlc3NEb2N1bWVudERlZmluaXRpb25bXSA9IFtdO1xuICBwdWJsaWMgdGFiTG9hZGVyOiBUYWJMb2FkZXJJbXBsIHwgbnVsbCA9IG51bGw7XG5cbiAgcHVibGljIHJlYWRvbmx5IGFzc2lnbmVlSWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZG9jdW1lbnQkOiBPYnNlcnZhYmxlPERvY3VtZW50IHwgbnVsbD4gPVxuICAgIHRoaXMuZG9zc2llclNlcnZpY2UucmVmcmVzaERvY3VtZW50JC5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMucm91dGUucGFyYW1zKSxcbiAgICAgIG1hcCgocGFyYW1zOiBQYXJhbXMpID0+IHBhcmFtcz8uZG9jdW1lbnRJZCksXG4gICAgICBzd2l0Y2hNYXAoKGRvY3VtZW50SWQ6IHN0cmluZykgPT5cbiAgICAgICAgZG9jdW1lbnRJZCA/IHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmdldERvY3VtZW50KHRoaXMuZG9jdW1lbnRJZCkgOiBvZihudWxsKVxuICAgICAgKSxcbiAgICAgIHRhcCgoZG9jdW1lbnQ6IERvY3VtZW50IHwgbnVsbCkgPT4ge1xuICAgICAgICBpZiAoZG9jdW1lbnQpIHtcbiAgICAgICAgICB0aGlzLmFzc2lnbmVlSWQkLm5leHQoZG9jdW1lbnQuYXNzaWduZWVJZCk7XG4gICAgICAgICAgdGhpcy5kb2N1bWVudCA9IGRvY3VtZW50O1xuXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5jdXN0b21Eb3NzaWVySGVhZGVyPy5oYXNPd25Qcm9wZXJ0eShcbiAgICAgICAgICAgICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICkgJiZcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tRG9zc2llckhlYWRlckl0ZW1zLmxlbmd0aCA9PT0gMFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5jdXN0b21Eb3NzaWVySGVhZGVyW1xuICAgICAgICAgICAgICB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgXT8uZm9yRWFjaChpdGVtID0+IHRoaXMuZ2V0Q3VzdG9tRG9zc2llckhlYWRlckl0ZW0oaXRlbSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBkb2N1bWVudERlZmluaXRpb25OYW1lJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5yb3V0ZS5wYXJhbXMucGlwZShcbiAgICBtYXAocGFyYW1zID0+IHBhcmFtcy5kb2N1bWVudERlZmluaXRpb25OYW1lIHx8ICcnKVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSB1c2VySWQkOiBPYnNlcnZhYmxlPHN0cmluZyB8IHVuZGVmaW5lZD4gPSBmcm9tKFxuICAgIHRoaXMua2V5Q2xvYWtTZXJ2aWNlLmlzTG9nZ2VkSW4oKVxuICApLnBpcGUoXG4gICAgc3dpdGNoTWFwKCgpID0+IHRoaXMua2V5Q2xvYWtTZXJ2aWNlLmxvYWRVc2VyUHJvZmlsZSgpKSxcbiAgICBtYXAocHJvZmlsZSA9PiBwcm9maWxlPy5pZClcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgaXNBc3NpZ25pbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBpc0Fzc2lnbmVkVG9DdXJyZW50VXNlciQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmFzc2lnbmVlSWQkLFxuICAgIHRoaXMudXNlcklkJCxcbiAgXSkucGlwZShcbiAgICBtYXAoKFthc3NpZ25lZUlkLCB1c2VySWRdKSA9PiAhIWFzc2lnbmVlSWQgJiYgISF1c2VySWQgJiYgYXNzaWduZWVJZCA9PT0gdXNlcklkKSxcbiAgICBzdGFydFdpdGgodHJ1ZSlcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgY2FuSGF2ZUFzc2lnbmVlJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSQucGlwZShcbiAgICBzd2l0Y2hNYXAoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PlxuICAgICAgdGhpcy5kb2N1bWVudFNlcnZpY2UuZ2V0Q2FzZVNldHRpbmdzKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUpXG4gICAgKSxcbiAgICBtYXAoY2FzZVNldHRpbmdzID0+IGNhc2VTZXR0aW5ncz8uY2FuSGF2ZUFzc2lnbmVlKVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBjYW5Bc3NpZ25Mb2FkZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBjYW5Bc3NpZ24kOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5yb3V0ZS5wYXJhbU1hcC5waXBlKFxuICAgIHN3aXRjaE1hcCgocGFyYW1zOiBQYXJhbU1hcCkgPT5cbiAgICAgIHRoaXMucGVybWlzc2lvblNlcnZpY2UucmVxdWVzdFBlcm1pc3Npb24oQ0FOX0FTU0lHTl9DQVNFX1BFUk1JU1NJT04sIHtcbiAgICAgICAgcmVzb3VyY2U6IERPU1NJRVJfREVUQUlMX1BFUk1JU1NJT05fUkVTT1VSQ0UuanNvblNjaGVtYURvY3VtZW50LFxuICAgICAgICBpZGVudGlmaWVyOiBwYXJhbXMuZ2V0KCdkb2N1bWVudElkJykgPz8gJycsXG4gICAgICB9KVxuICAgICksXG4gICAgdGFwKCgpID0+IHtcbiAgICAgIHRoaXMuY2FuQXNzaWduTG9hZGVkJC5uZXh0KHRydWUpO1xuICAgIH0pXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNhbkNsYWltJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMucm91dGUucGFyYW1NYXAucGlwZShcbiAgICBzd2l0Y2hNYXAoKHBhcmFtczogUGFyYW1NYXApID0+XG4gICAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLnJlcXVlc3RQZXJtaXNzaW9uKENBTl9DTEFJTV9DQVNFX1BFUk1JU1NJT04sIHtcbiAgICAgICAgcmVzb3VyY2U6IERPU1NJRVJfREVUQUlMX1BFUk1JU1NJT05fUkVTT1VSQ0UuanNvblNjaGVtYURvY3VtZW50LFxuICAgICAgICBpZGVudGlmaWVyOiBwYXJhbXMuZ2V0KCdkb2N1bWVudElkJykgPz8gJycsXG4gICAgICB9KVxuICAgIClcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgbG9hZGluZ1RhYnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgcHVibGljIHJlYWRvbmx5IG5vVGFic0NvbmZpZ3VyZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHJpdmF0ZSBfc25hcHNob3Q6IFBhcmFtTWFwO1xuICBwcml2YXRlIF9pbml0aWFsVGFiTmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYnJlYWRjcnVtYlNlcnZpY2U6IEJyZWFkY3J1bWJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnRTZXJ2aWNlOiBEb2N1bWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBrZXlDbG9ha1NlcnZpY2U6IEtleWNsb2FrU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlcjogTkdYTG9nZ2VyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGVybWlzc2lvblNlcnZpY2U6IFBlcm1pc3Npb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb3NzaWVyVGFiU2VydmljZTogRG9zc2llclRhYlNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb3NzaWVyU2VydmljZTogRG9zc2llclNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5fc25hcHNob3QgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwO1xuICAgIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9IHRoaXMuX3NuYXBzaG90LmdldCgnZG9jdW1lbnREZWZpbml0aW9uTmFtZScpIHx8ICcnO1xuICAgIHRoaXMuZG9jdW1lbnRJZCA9IHRoaXMuX3NuYXBzaG90LmdldCgnZG9jdW1lbnRJZCcpIHx8ICcnO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRUYWJMb2FkZXIoKTtcbiAgICB0aGlzLmluaXRCcmVhZGNydW1iKCk7XG4gICAgdGhpcy5nZXRBbGxBc3NvY2lhdGVkUHJvY2Vzc0RlZmluaXRpb25zKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5icmVhZGNydW1iU2VydmljZS5jbGVhclNlY29uZEJyZWFkY3J1bWIoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBbGxBc3NvY2lhdGVkUHJvY2Vzc0RlZmluaXRpb25zKCk6IHZvaWQge1xuICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlXG4gICAgICAuZmluZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zKHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSlcbiAgICAgIC5zdWJzY3JpYmUoKHByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zOiBQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uW10pID0+IHtcbiAgICAgICAgdGhpcy5wcm9jZXNzRG9jdW1lbnREZWZpbml0aW9ucyA9IHByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zLmZpbHRlcihcbiAgICAgICAgICBwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uID0+IHByb2Nlc3NEb2N1bWVudERlZmluaXRpb24uc3RhcnRhYmxlQnlVc2VyXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5wcm9jZXNzRGVmaW5pdGlvbkxpc3RGaWVsZHMgPSBbXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiAncHJvY2Vzc05hbWUnLFxuICAgICAgICAgICAgbGFiZWw6ICdQcm9jZXMnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGFydFByb2Nlc3MocHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbjogUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbik6IHZvaWQge1xuICAgIHRoaXMuc3VwcG9ydGluZ1Byb2Nlc3NTdGFydC5vcGVuTW9kYWwocHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbiwgdGhpcy5kb2N1bWVudElkKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGFpbUFzc2lnbmVlKCk6IHZvaWQge1xuICAgIHRoaXMuaXNBc3NpZ25pbmckLm5leHQodHJ1ZSk7XG5cbiAgICB0aGlzLnVzZXJJZCRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICBzd2l0Y2hNYXAoKHVzZXJJZDogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PlxuICAgICAgICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmFzc2lnbkhhbmRsZXJUb0RvY3VtZW50KHRoaXMuZG9jdW1lbnRJZCwgdXNlcklkID8/ICcnKVxuICAgICAgICApXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKCk6IHZvaWQgPT4ge1xuICAgICAgICAgIHRoaXMuaXNBc3NpZ25pbmckLm5leHQoZmFsc2UpO1xuICAgICAgICAgIHRoaXMuZG9zc2llclNlcnZpY2UucmVmcmVzaCgpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKCk6IHZvaWQgPT4ge1xuICAgICAgICAgIHRoaXMuaXNBc3NpZ25pbmckLm5leHQoZmFsc2UpO1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdTb21ldGhpbmcgd2VudCB3cm9uZyB3aGlsZSBhc3NpZ25pbmcgdXNlciB0byBjYXNlJyk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdEJyZWFkY3J1bWIoKTogdm9pZCB7XG4gICAgdGhpcy5kb2N1bWVudFNlcnZpY2VcbiAgICAgIC5nZXREb2N1bWVudERlZmluaXRpb24odGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lKVxuICAgICAgLnN1YnNjcmliZShkZWZpbml0aW9uID0+IHtcbiAgICAgICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lVGl0bGUgPSBkZWZpbml0aW9uLnNjaGVtYS50aXRsZTtcbiAgICAgICAgdGhpcy5zZXRCcmVhZGNydW1iKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFRhYkxvYWRlcigpOiB2b2lkIHtcbiAgICB0aGlzLmRvc3NpZXJUYWJTZXJ2aWNlLnRhYnMkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKHRhYnMgPT4ge1xuICAgICAgaWYgKHRhYnM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5faW5pdGlhbFRhYk5hbWUgPSB0aGlzLl9zbmFwc2hvdC5nZXQoJ3RhYicpID8/ICcnO1xuICAgICAgICB0aGlzLnRhYkxvYWRlciA9IG5ldyBUYWJMb2FkZXJJbXBsKFxuICAgICAgICAgIHRhYnMsXG4gICAgICAgICAgdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyUmVmLFxuICAgICAgICAgIHRoaXMucm91dGVyLFxuICAgICAgICAgIHRoaXMucm91dGVcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy50YWJMb2FkZXIuaW5pdGlhbCh0aGlzLl9pbml0aWFsVGFiTmFtZSk7XG4gICAgICAgIHRoaXMubG9hZGluZ1RhYnMkLm5leHQoZmFsc2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5ub1RhYnNDb25maWd1cmVkJC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmxvYWRpbmdUYWJzJC5uZXh0KGZhbHNlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3NpZ25tZW50T2ZEb2N1bWVudENoYW5nZWQoKTogdm9pZCB7XG4gICAgdGhpcy5kb3NzaWVyU2VydmljZS5yZWZyZXNoKCk7XG4gIH1cblxuICBwcml2YXRlIGdldEN1c3RvbURvc3NpZXJIZWFkZXJJdGVtKGl0ZW0pOiB2b2lkIHtcbiAgICB0aGlzLmN1c3RvbURvc3NpZXJIZWFkZXJJdGVtcy5wdXNoKHtcbiAgICAgIGxhYmVsOiBpdGVtWydsYWJlbFRyYW5zbGF0aW9uS2V5J10gfHwgJycsXG4gICAgICBjb2x1bW5TaXplOiBpdGVtWydjb2x1bW5TaXplJ10gfHwgMyxcbiAgICAgIHRleHRTaXplOiBpdGVtWyd0ZXh0U2l6ZSddIHx8ICdtZCcsXG4gICAgICBjdXN0b21DbGFzczogaXRlbVsnY3VzdG9tQ2xhc3MnXSB8fCAnJyxcbiAgICAgIG1vZGlmaWVyOiBpdGVtWydtb2RpZmllciddIHx8ICcnLFxuICAgICAgdmFsdWU6IGl0ZW1bJ3Byb3BlcnR5UGF0aHMnXT8ucmVkdWNlKFxuICAgICAgICAocHJldiwgY3VycikgPT4gcHJldiArIHRoaXMuZ2V0U3RyaW5nRnJvbURvY3VtZW50UGF0aChpdGVtLCBjdXJyKSxcbiAgICAgICAgJydcbiAgICAgICksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldFN0cmluZ0Zyb21Eb2N1bWVudFBhdGgoaXRlbSwgcGF0aCk6IHN0cmluZyB7XG4gICAgY29uc3QgcHJlZml4ID0gaXRlbVsncHJvcGVydHlQYXRocyddLmluZGV4T2YocGF0aCkgPiAwID8gJyAnIDogJyc7XG4gICAgbGV0IHN0cmluZyA9IHRoaXMuZ2V0TmVzdGVkUHJvcGVydHkodGhpcy5kb2N1bWVudC5jb250ZW50LCBwYXRoLCBpdGVtWydub1ZhbHVlVGV4dCddKSB8fCAnJztcbiAgICBjb25zdCBkYXRlRm9ybWF0cyA9IFttb21lbnQuSVNPXzg2MDEsICdNTS1ERC1ZWVlZJywgJ0RELU1NLVlZWVknLCAnWVlZWS1NTS1ERCddO1xuICAgIHN3aXRjaCAoaXRlbVsnbW9kaWZpZXInXSkge1xuICAgICAgY2FzZSAnYWdlJzoge1xuICAgICAgICBpZiAobW9tZW50KHN0cmluZywgZGF0ZUZvcm1hdHMsIHRydWUpLmlzVmFsaWQoKSkge1xuICAgICAgICAgIHN0cmluZyA9IG1vbWVudCgpLmRpZmYoc3RyaW5nLCAneWVhcnMnKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgaWYgKG1vbWVudChzdHJpbmcsIGRhdGVGb3JtYXRzLCB0cnVlKS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICBzdHJpbmcgPSBtb21lbnQoc3RyaW5nKS5mb3JtYXQoJ0RELU1NLVlZWVknKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcHJlZml4ICsgc3RyaW5nO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXROZXN0ZWRQcm9wZXJ0eShvYmo6IGFueSwgcGF0aDogc3RyaW5nLCBkZWZhdWx0VmFsdWU6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIHBhdGguc3BsaXQoJy4nKS5yZWR1Y2UoKGN1cnJlbnRPYmplY3QsIGtleSkgPT4gY3VycmVudE9iamVjdD8uW2tleV0sIG9iaikgfHwgZGVmYXVsdFZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRCcmVhZGNydW1iKCk6IHZvaWQge1xuICAgIHRoaXMuYnJlYWRjcnVtYlNlcnZpY2Uuc2V0U2Vjb25kQnJlYWRjcnVtYih7XG4gICAgICByb3V0ZTogW2AvZG9zc2llcnMvJHt0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWV9YF0sXG4gICAgICBjb250ZW50OiB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWVUaXRsZSxcbiAgICAgIGhyZWY6IGAvZG9zc2llcnMvJHt0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWV9YCxcbiAgICB9KTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjMgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuPGRpdlxuICAqbmdJZj1cIntcbiAgICBjYW5Bc3NpZ246IGNhbkFzc2lnbiQgfCBhc3luYyxcbiAgICBjYW5DbGFpbTogY2FuQ2xhaW0kIHwgYXN5bmMsXG4gICAgY2FuSGF2ZUFzc2lnbmVlOiBjYW5IYXZlQXNzaWduZWUkIHwgYXN5bmMsXG4gICAgZG9jdW1lbnQ6IGRvY3VtZW50JCB8IGFzeW5jXG4gIH0gYXMgb2JzXCJcbiAgY2xhc3M9XCJtYWluLWNvbnRlbnRcIlxuPlxuICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMiBweC0wIG1iLTVcIj5cbiAgICAgIDx2YWx0aW1vLXdpZGdldD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJnLWxpZ2h0IGNhcmQtaGVhZGVyLWRpdmlkZXIgcGItMlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICBjYXNlRGV0YWlsSGVhZGVyO1xuICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICBjYW5IYXZlQXNzaWduZWU6IG9icy5jYW5IYXZlQXNzaWduZWUsXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50OiBvYnMuZG9jdW1lbnQsXG4gICAgICAgICAgICAgICAgICAgIGNhbkFzc2lnbjogb2JzLmNhbkFzc2lnblxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwIG10LW0zcHggbWItMyBjb2wtYXV0b1wiPlxuICAgICAgICAgICAgICA8dmFsdGltby1leHRlbnNpb25cbiAgICAgICAgICAgICAgICBtb2R1bGU9XCJkb3NzaWVyXCJcbiAgICAgICAgICAgICAgICBwYWdlPVwiZG9zc2llci1kZXRhaWxcIlxuICAgICAgICAgICAgICAgIHNlY3Rpb249XCJjYXJkLWhlYWRlclwiXG4gICAgICAgICAgICAgID48L3ZhbHRpbW8tZXh0ZW5zaW9uPlxuXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgY2xhaW1CdXR0b247XG4gICAgICAgICAgICAgICAgICBjb250ZXh0OiB7Y2FuQ2xhaW06IG9icy5jYW5DbGFpbSwgY2FuSGF2ZUFzc2lnbmVlOiBvYnMuY2FuSGF2ZUFzc2lnbmVlfVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd25cIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMubGVuZ3RoID09PSAwXCJcbiAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cInByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zLmxlbmd0aCA9PT0gMCA/ICdObyBhY3Rpb24nIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgZHJvcGRvd24tdG9nZ2xlXCJcbiAgICAgICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJzdGFydFByb2Nlc3NEcm9wZG93blwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgJ2Rvc3NpZXIuc3RhcnRTdWJQcm9jZXNzJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtbC0xIG1kaSBtZGktY2hldnJvbi1kb3duXCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwic3RhcnRQcm9jZXNzRHJvcGRvd25cIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1tZW51IGRyb3Bkb3duLW1lbnUtcmlnaHRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHByb2Nlc3NEb2N1bWVudERlZmluaXRpb24gb2YgcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic3RhcnRQcm9jZXNzKHByb2Nlc3NEb2N1bWVudERlZmluaXRpb24pXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1pdGVtIHBcIlxuICAgICAgICAgICAgICAgICAgICBocmVmPVwiI1wiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgKHByb2Nlc3NEb2N1bWVudERlZmluaXRpb24/LmlkPy5wcm9jZXNzRGVmaW5pdGlvbktleSB8IHRyYW5zbGF0ZSkgIT09XG4gICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbj8uaWQ/LnByb2Nlc3NEZWZpbml0aW9uS2V5XG4gICAgICAgICAgICAgICAgICAgICAgICA/IChwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uLmlkLnByb2Nlc3NEZWZpbml0aW9uS2V5IHwgdHJhbnNsYXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uLnByb2Nlc3NOYW1lXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPHVsICpuZ0lmPVwidGFiTG9hZGVyXCIgY2xhc3M9XCJuYXYgbmF2LXRhYnNcIj5cbiAgICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbVwiICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFiTG9hZGVyLnRhYnNcIj5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInthY3RpdmU6IHRhYi5pc0FjdGl2ZSgpfVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0YWJMb2FkZXIubG9hZCh0YWIpXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJuYXYtbGluayBjbGlja2FibGVcIlxuICAgICAgICAgICAgICBkYXRhLXRvZ2dsZT1cInRhYlwiXG4gICAgICAgICAgICAgIGlkPVwie3sgdGFiLm5hbWUgfX0tdGFiXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgdGFiIHwgdGFiVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICA8L3VsPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgYmctd2hpdGUgcC01IHBvc2l0aW9uLXJlbGF0aXZlIHRhYi1jb250YWluZXJcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwibG9hZGluZ1RhYnMkIHwgYXN5bmNcIiBjbGFzcz1cImxvYWRpbmctY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8Y2RzLWxvYWRpbmc+PC9jZHMtbG9hZGluZz5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDx2YWx0aW1vLW5vLXJlc3VsdHNcbiAgICAgICAgICAgICpuZ0lmPVwibm9UYWJzQ29uZmlndXJlZCQgfCBhc3luY1wiXG4gICAgICAgICAgICBbZGVzY3JpcHRpb25dPVwiJ2Rvc3NpZXIudGFicy5ub1Jlc3VsdHNEZXNjcmlwdGlvbicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgW3RpdGxlXT1cIidkb3NzaWVyLnRhYnMubm9SZXN1bHRzJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgPjwvdmFsdGltby1uby1yZXN1bHRzPlxuXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICN0YWJDb250YWluZXI+PC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbGVhcmZpeFwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvdmFsdGltby13aWRnZXQ+XG4gICAgPC9kaXY+XG5cbiAgICA8dmFsdGltby1kb3NzaWVyLXN1cHBvcnRpbmctcHJvY2Vzcy1zdGFydC1tb2RhbFxuICAgICAgKGZvcm1TdWJtaXQpPVwidGFiTG9hZGVyLnJlZnJlc2hWaWV3KClcIlxuICAgICAgI3N1cHBvcnRpbmdQcm9jZXNzU3RhcnRNb2RhbFxuICAgID48L3ZhbHRpbW8tZG9zc2llci1zdXBwb3J0aW5nLXByb2Nlc3Mtc3RhcnQtbW9kYWw+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZVxuICAjY2FzZURldGFpbEhlYWRlclxuICBsZXQtY2FuSGF2ZUFzc2lnbmVlPVwiY2FuSGF2ZUFzc2lnbmVlXCJcbiAgbGV0LWRvY3VtZW50PVwiZG9jdW1lbnRcIlxuICBsZXQtY2FuQXNzaWduPVwiY2FuQXNzaWduXCJcbj5cbiAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiY3VzdG9tRG9zc2llckhlYWRlckl0ZW1zLmxlbmd0aCA+IDA7IGVsc2UgZGVmYXVsdFRpdGxlXCI+XG4gICAgPHNwYW5cbiAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGN1c3RvbURvc3NpZXJIZWFkZXJJdGVtc1wiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgIGgxOiBpdGVtLnRleHRTaXplID09PSAneGwnLFxuICAgICAgICBoMjogaXRlbS50ZXh0U2l6ZSA9PT0gJ2xnJyxcbiAgICAgICAgaDM6IGl0ZW0udGV4dFNpemUgPT09ICdtZCcsXG4gICAgICAgIGg0OiBpdGVtLnRleHRTaXplID09PSAnc20nLFxuICAgICAgICBoNTogaXRlbS50ZXh0U2l6ZSA9PT0gJ3hzJ1xuICAgICAgfVwiXG4gICAgICBjbGFzcz1cIm1iLTAgbXQtMCBwYi0yIGFsaWduLXNlbGYtZW5kIGNvbC14bC17eyBpdGVtLmNvbHVtblNpemUgfX0gY29sLWxnLXt7XG4gICAgICAgIGl0ZW0uY29sdW1uU2l6ZSAqIDJcbiAgICAgIH19IHt7IGl0ZW0uY3VzdG9tQ2xhc3MgfX1cIlxuICAgID5cbiAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS5sYWJlbFwiPnt7IGl0ZW0ubGFiZWwgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG5cbiAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS5sYWJlbCAmJiBpdGVtLnZhbHVlXCI+OiA8L3NwYW4+XG5cbiAgICAgIDxzdHJvbmc+e3sgaXRlbS52YWx1ZSB9fTwvc3Ryb25nPlxuICAgIDwvc3Bhbj5cbiAgPC9kaXY+XG5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICBjYXNlRGV0YWlsQXNzaWduZWU7XG4gICAgICBjb250ZXh0OiB7Y2FuSGF2ZUFzc2lnbmVlOiBjYW5IYXZlQXNzaWduZWUsIGRvY3VtZW50OiBkb2N1bWVudCwgY2FuQXNzaWduOiBjYW5Bc3NpZ259XG4gICAgXCJcbiAgPjwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0VGl0bGU+XG4gIDxkaXYgY2xhc3M9XCJyb3cgbWwtMCBtci0wXCI+e3sgZG9jdW1lbnREZWZpbml0aW9uTmFtZVRpdGxlPy50cmltKCkgfX08L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZVxuICAjY2FzZURldGFpbEFzc2lnbmVlXG4gIGxldC1jYW5IYXZlQXNzaWduZWU9XCJjYW5IYXZlQXNzaWduZWVcIlxuICBsZXQtZG9jdW1lbnQ9XCJkb2N1bWVudFwiXG4gIGxldC1jYW5Bc3NpZ249XCJjYW5Bc3NpZ25cIlxuPlxuICA8ZGl2IGNsYXNzPVwicm93IG1sLTAgbXItMCBtdC0xIG1iLTFcIiAqbmdJZj1cImNhbkhhdmVBc3NpZ25lZSAmJiBkb2N1bWVudFwiPlxuICAgIDx2YWx0aW1vLWRvc3NpZXItYXNzaWduLXVzZXJcbiAgICAgICpuZ0lmPVwiY2FuQXNzaWduTG9hZGVkJCB8IGFzeW5jXCJcbiAgICAgIFthc3NpZ25lZUZ1bGxOYW1lXT1cImRvY3VtZW50Py5hc3NpZ25lZUZ1bGxOYW1lXCJcbiAgICAgIFthc3NpZ25lZUlkXT1cImRvY3VtZW50LmFzc2lnbmVlSWRcIlxuICAgICAgW2RvY3VtZW50SWRdPVwiZG9jdW1lbnQuaWRcIlxuICAgICAgW2hhc1Blcm1pc3Npb25dPVwiY2FuQXNzaWduXCJcbiAgICAgIChhc3NpZ25tZW50T2ZEb2N1bWVudENoYW5nZWQpPVwiYXNzaWdubWVudE9mRG9jdW1lbnRDaGFuZ2VkKClcIlxuICAgID48L3ZhbHRpbW8tZG9zc2llci1hc3NpZ24tdXNlcj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NsYWltQnV0dG9uIGxldC1jYW5DbGFpbT1cImNhbkNsYWltXCIgbGV0LWNhbkhhdmVBc3NpZ25lZT1cImNhbkhhdmVBc3NpZ25lZVwiPlxuICA8ZGl2IGNsYXNzPVwidXNlci1mdWxsLW5hbWVcIiAqbmdJZj1cImNhbkNsYWltICYmIGNhbkhhdmVBc3NpZ25lZVwiPlxuICAgIDxidXR0b25cbiAgICAgIFtkaXNhYmxlZF09XCIoaXNBc3NpZ25pbmckIHwgYXN5bmMpIHx8IChpc0Fzc2lnbmVkVG9DdXJyZW50VXNlciQgfCBhc3luYylcIlxuICAgICAgKGNsaWNrKT1cImNsYWltQXNzaWduZWUoKVwiXG4gICAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIlxuICAgICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxuICAgICAgY2xhc3M9XCJidG4gYnRuLXNwYWNlIGJ0bi1wcmltYXJ5IG1yLTFcIlxuICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgID5cbiAgICAgIDxzcGFuPnt7ICdkb3NzaWVyLmNsYWltQXNzaWduZWVDYXNlJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19