@valtimo/dossier-management 5.13.0 → 5.14.0

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 (17) hide show
  1. package/esm2020/lib/dossier-management-detail-container/dossier-management-detail-container.component.mjs +19 -15
  2. package/esm2020/lib/dossier-management-detail-container/tabs/dossier-management-detail/dossier-management-detail.component.mjs +3 -3
  3. package/esm2020/lib/dossier-management-detail-container/tabs/dossier-management-search-fields/dossier-management-search-fields.component.mjs +223 -20
  4. package/esm2020/lib/dossier-management-list/dossier-management-list.component.mjs +1 -1
  5. package/esm2020/lib/dossier-management.module.mjs +17 -5
  6. package/fesm2015/valtimo-dossier-management.mjs +254 -38
  7. package/fesm2015/valtimo-dossier-management.mjs.map +1 -1
  8. package/fesm2020/valtimo-dossier-management.mjs +255 -39
  9. package/fesm2020/valtimo-dossier-management.mjs.map +1 -1
  10. package/lib/dossier-management-detail-container/dossier-management-detail-container.component.d.ts +8 -4
  11. package/lib/dossier-management-detail-container/dossier-management-detail-container.component.d.ts.map +1 -1
  12. package/lib/dossier-management-detail-container/tabs/dossier-management-detail/dossier-management-detail.component.d.ts.map +1 -1
  13. package/lib/dossier-management-detail-container/tabs/dossier-management-search-fields/dossier-management-search-fields.component.d.ts +48 -6
  14. package/lib/dossier-management-detail-container/tabs/dossier-management-search-fields/dossier-management-search-fields.component.d.ts.map +1 -1
  15. package/lib/dossier-management.module.d.ts +1 -1
  16. package/lib/dossier-management.module.d.ts.map +1 -1
  17. package/package.json +1 -1
@@ -13,20 +13,43 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { Component } from '@angular/core';
17
- import { combineLatest, filter, map, switchMap } from 'rxjs';
16
+ import { Component, EventEmitter, Output, ViewChild, } from '@angular/core';
17
+ import { BehaviorSubject, combineLatest, filter, map, Subscription, switchMap, take, tap, } from 'rxjs';
18
18
  import * as i0 from "@angular/core";
19
19
  import * as i1 from "@valtimo/document";
20
20
  import * as i2 from "@angular/router";
21
21
  import * as i3 from "@ngx-translate/core";
22
- import * as i4 from "@valtimo/components";
23
- import * as i5 from "@angular/common";
22
+ import * as i4 from "@angular/platform-browser";
23
+ import * as i5 from "@valtimo/components";
24
+ import * as i6 from "@valtimo/user-interface";
25
+ import * as i7 from "@angular/common";
24
26
  export class DossierManagementSearchFieldsComponent {
25
- constructor(documentService, route, translateService) {
27
+ constructor(documentService, route, translateService, sanitizer) {
26
28
  this.documentService = documentService;
27
29
  this.route = route;
28
30
  this.translateService = translateService;
31
+ this.sanitizer = sanitizer;
32
+ this.searchField = new EventEmitter();
33
+ this.downloadName$ = new BehaviorSubject('');
34
+ this.downloadUrl$ = new BehaviorSubject(undefined);
35
+ this.disableInput$ = new BehaviorSubject(false);
36
+ this.selectedSearchField$ = new BehaviorSubject(null);
37
+ this.formData$ = new BehaviorSubject(null);
38
+ this.valid$ = new BehaviorSubject(false);
39
+ this.subscriptions = new Subscription();
29
40
  this.COLUMNS = [
41
+ {
42
+ viewType: 'string',
43
+ sortable: false,
44
+ propertyName: 'title',
45
+ translationKey: 'title',
46
+ },
47
+ {
48
+ viewType: 'string',
49
+ sortable: false,
50
+ propertyName: 'key',
51
+ translationKey: 'key',
52
+ },
30
53
  {
31
54
  viewType: 'string',
32
55
  sortable: false,
@@ -36,45 +59,225 @@ export class DossierManagementSearchFieldsComponent {
36
59
  {
37
60
  viewType: 'string',
38
61
  sortable: false,
39
- propertyName: 'datatype',
40
- translationKey: 'datatype',
62
+ propertyName: 'dataType',
63
+ translationKey: 'dataType',
41
64
  },
42
65
  {
43
66
  viewType: 'string',
44
67
  sortable: false,
45
- propertyName: 'fieldtype',
46
- translationKey: 'fieldtype',
68
+ propertyName: 'fieldType',
69
+ translationKey: 'fieldType',
47
70
  },
48
71
  {
49
72
  viewType: 'string',
50
73
  sortable: false,
51
- propertyName: 'matchtype',
52
- translationKey: 'matchtype',
74
+ propertyName: 'matchType',
75
+ translationKey: 'matchType',
53
76
  },
54
77
  ];
78
+ this.DATA_TYPES = [
79
+ 'text',
80
+ 'number',
81
+ 'date',
82
+ 'datetime',
83
+ 'boolean',
84
+ ];
85
+ this.dataTypeItems$ = this.translateService.stream('key').pipe(map(() => this.DATA_TYPES.map(dataType => ({
86
+ id: dataType,
87
+ text: this.translateService.instant(`searchFields.${dataType}`),
88
+ }))));
89
+ this.FIELD_TYPES = ['single', 'range'];
90
+ this.fieldTypeItems$ = this.translateService
91
+ .stream('key')
92
+ .pipe(map(() => this.FIELD_TYPES.map(fieldType => ({
93
+ id: fieldType,
94
+ text: this.translateService.instant(`searchFieldsOverview.${fieldType}`),
95
+ }))));
96
+ this.MATCH_TYPES = ['exact', 'like'];
97
+ this.matchTypeItems$ = this.translateService
98
+ .stream('key')
99
+ .pipe(map(() => this.MATCH_TYPES.map(matchType => ({
100
+ id: matchType,
101
+ text: this.translateService.instant(`searchFieldsOverview.${matchType}`),
102
+ }))));
55
103
  this.fields$ = this.translateService.stream('key').pipe(map(() => this.COLUMNS.map(column => ({
56
104
  key: column.propertyName,
57
105
  label: this.translateService.instant(`searchFieldsOverview.${column.translationKey}`),
58
106
  sortable: column.sortable,
59
107
  ...(column.viewType && { viewType: column.viewType }),
108
+ ...(column.enum && { enum: column.enum }),
60
109
  }))));
61
110
  this.documentDefinitionName$ = this.route.params.pipe(map(params => params.name || ''), filter(docDefName => !!docDefName));
62
- this.searchFields$ = this.documentDefinitionName$.pipe(switchMap(documentDefinitionName => this.documentService.getDocumentSearchFields(documentDefinitionName)));
111
+ this.loadingSearchFields = true;
112
+ this.showSearchFieldsForm = false;
113
+ this.refreshSearchFields$ = new BehaviorSubject(null);
114
+ this.searchFields$ = combineLatest([
115
+ this.documentDefinitionName$,
116
+ this.refreshSearchFields$,
117
+ ]).pipe(switchMap(([documentDefinitionName]) => this.documentService.getDocumentSearchFields(documentDefinitionName)), tap(searchFields => {
118
+ this.documentDefinitionName$.pipe(take(1)).subscribe(documentDefinitionName => {
119
+ if (searchFields && Array.isArray(searchFields) && searchFields.length > 0) {
120
+ this.setDownload(documentDefinitionName, searchFields);
121
+ }
122
+ });
123
+ }), tap(searchFields => {
124
+ this.cachedSearchFields = searchFields;
125
+ this.loadingSearchFields = false;
126
+ }));
63
127
  this.translatedSearchFields$ = combineLatest([
64
128
  this.searchFields$,
65
129
  this.translateService.stream('key'),
66
130
  ]).pipe(map(([searchFields]) => searchFields.map(searchField => ({
67
131
  ...searchField,
68
- datatype: this.translateService.instant(`searchFields.${searchField.datatype}`),
69
- matchtype: this.translateService.instant(`searchFieldsOverview.${searchField.matchtype}`),
70
- fieldtype: this.translateService.instant(`searchFieldsOverview.${searchField.fieldtype}`),
132
+ title: searchField.title ? searchField.title : '',
133
+ dataType: this.translateService.instant(`searchFields.${searchField.dataType}`),
134
+ matchType: this.translateService.instant(`searchFieldsOverview.${searchField.matchType}`),
135
+ fieldType: this.translateService.instant(`searchFieldsOverview.${searchField.fieldType}`),
71
136
  }))));
72
137
  }
138
+ ngOnInit() {
139
+ this.openSelectedSearchFieldSubscription();
140
+ }
141
+ ngAfterViewInit() {
142
+ this.openModalShowingSubscription();
143
+ }
144
+ ngOnDestroy() {
145
+ this.subscriptions.unsubscribe();
146
+ }
147
+ searchFieldClicked(searchField, searchFieldActionTypeIsAdd) {
148
+ this.disableInput$.pipe(take(1)).subscribe(inputDisabled => {
149
+ if (!inputDisabled) {
150
+ this.searchFieldActionTypeIsAdd = searchFieldActionTypeIsAdd;
151
+ const searchFieldToSelect = this.cachedSearchFields.find(field => field.key === searchField.key);
152
+ this.selectedSearchField$.next(searchFieldToSelect);
153
+ }
154
+ });
155
+ }
156
+ formValueChange(data) {
157
+ const containsAllValues = !!(data.key &&
158
+ data.dataType &&
159
+ data.fieldType &&
160
+ data.matchType &&
161
+ data.path);
162
+ const keyIsUnique = !this.searchFieldActionTypeIsAdd ||
163
+ this.cachedSearchFields.findIndex(field => field.key === data.key) === -1;
164
+ this.formData$.next(data);
165
+ this.valid$.next(containsAllValues && keyIsUnique);
166
+ }
167
+ moveRow(searchFieldRowIndex, moveUp, clickEvent, documentDefinitionName) {
168
+ const searchFields = [...this.cachedSearchFields];
169
+ const searchFieldRow = searchFields[searchFieldRowIndex];
170
+ clickEvent.stopPropagation();
171
+ const searchFieldIndex = searchFields.findIndex(field => field.key === searchFieldRow.key);
172
+ const foundSearchField = { ...searchFields[searchFieldIndex] };
173
+ const filteredSearchFields = searchFields.filter(field => field.key !== searchFieldRow.key);
174
+ const multipleSearchFields = searchFields.length > 1;
175
+ if (multipleSearchFields && moveUp && searchFieldIndex > 0) {
176
+ const searchFieldBeforeKey = `${searchFields[searchFieldIndex - 1].key}`;
177
+ const searchFieldBeforeIndex = filteredSearchFields.findIndex(field => field.key === searchFieldBeforeKey);
178
+ filteredSearchFields.splice(searchFieldBeforeIndex, 0, foundSearchField);
179
+ this.updateSearchFields(documentDefinitionName, filteredSearchFields);
180
+ }
181
+ else if (multipleSearchFields && !moveUp && searchFieldIndex < searchFields.length) {
182
+ const searchFieldAfterKey = `${searchFields[searchFieldIndex + 1].key}`;
183
+ const searchFieldAfterIndex = filteredSearchFields.findIndex(field => field.key === searchFieldAfterKey);
184
+ filteredSearchFields.splice(searchFieldAfterIndex + 1, 0, foundSearchField);
185
+ this.updateSearchFields(documentDefinitionName, filteredSearchFields);
186
+ }
187
+ }
188
+ deleteSelectedSearchField(documentDefinitionName, selectedSearchField) {
189
+ this.disableInput();
190
+ this.documentService
191
+ .deleteDocumentSearch(documentDefinitionName, selectedSearchField.key)
192
+ .subscribe(() => {
193
+ this.enableInput();
194
+ this.hideModal();
195
+ this.refreshSearchFields();
196
+ }, () => {
197
+ this.enableInput();
198
+ });
199
+ }
200
+ saveSearchField(documentDefinitionName) {
201
+ this.disableInput();
202
+ this.formData$.pipe(take(1)).subscribe(formData => {
203
+ if (this.searchFieldActionTypeIsAdd) {
204
+ this.documentService.postDocumentSearch(documentDefinitionName, formData).subscribe(() => {
205
+ this.enableInput();
206
+ this.hideModal();
207
+ this.refreshSearchFields();
208
+ }, () => {
209
+ this.enableInput();
210
+ });
211
+ }
212
+ else {
213
+ const newFields = [...this.cachedSearchFields];
214
+ const indexToReplace = newFields.findIndex(field => field.key === formData.key);
215
+ const filteredFields = newFields.filter(field => field.key !== formData.key);
216
+ filteredFields.splice(indexToReplace, 0, formData);
217
+ this.updateSearchFields(documentDefinitionName, filteredFields);
218
+ }
219
+ });
220
+ }
221
+ updateSearchFields(documentDefinitionName, newSearchFields) {
222
+ this.disableInput();
223
+ this.documentService.putDocumentSearch(documentDefinitionName, newSearchFields).subscribe(() => {
224
+ this.enableInput();
225
+ this.hideModal();
226
+ this.refreshSearchFields();
227
+ }, () => {
228
+ this.enableInput();
229
+ });
230
+ }
231
+ openSelectedSearchFieldSubscription() {
232
+ this.subscriptions.add(this.selectedSearchField$.subscribe(() => {
233
+ this.showModal();
234
+ }));
235
+ }
236
+ openModalShowingSubscription() {
237
+ this.subscriptions.add(this.modal.modalShowing$.subscribe(modalShowing => {
238
+ if (modalShowing) {
239
+ this.showSearchFieldsForm = true;
240
+ }
241
+ else {
242
+ setTimeout(() => {
243
+ this.showSearchFieldsForm = false;
244
+ }, 150);
245
+ }
246
+ }));
247
+ }
248
+ setDownload(documentDefinitionName, searchFields) {
249
+ this.downloadName$.next(`${documentDefinitionName}.json`);
250
+ this.downloadUrl$.next(this.sanitizer.bypassSecurityTrustUrl('data:text/json;charset=UTF-8,' +
251
+ encodeURIComponent(JSON.stringify({ searchFields }, null, 2))));
252
+ }
253
+ disableInput() {
254
+ this.disableInput$.next(true);
255
+ }
256
+ enableInput() {
257
+ this.disableInput$.next(false);
258
+ }
259
+ showModal() {
260
+ this.modal?.show();
261
+ }
262
+ hideModal() {
263
+ this.modal?.hide();
264
+ }
265
+ refreshSearchFields() {
266
+ this.refreshSearchFields$.next(null);
267
+ }
73
268
  }
74
- DossierManagementSearchFieldsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DossierManagementSearchFieldsComponent, deps: [{ token: i1.DocumentService }, { token: i2.ActivatedRoute }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
75
- DossierManagementSearchFieldsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: DossierManagementSearchFieldsComponent, selector: "valtimo-dossier-management-search-fields", ngImport: i0, template: "<!--\n ~ Copyright 2015-2022 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<ng-container\n *ngIf=\"{searchFields: translatedSearchFields$ | async, fields: fields$ | async} as obs\"\n>\n <valtimo-list\n [items]=\"obs.searchFields\"\n [fields]=\"obs.fields\"\n [viewMode]=\"false\"\n [header]=\"false\"\n >\n </valtimo-list>\n</ng-container>\n", styles: [""], components: [{ type: i4.ListComponent, selector: "valtimo-list", inputs: ["items", "fields", "pagination", "viewMode", "isSearchable", "header", "actions", "paginationIdentifier", "initialSortState"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i5.AsyncPipe } });
269
+ DossierManagementSearchFieldsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DossierManagementSearchFieldsComponent, deps: [{ token: i1.DocumentService }, { token: i2.ActivatedRoute }, { token: i3.TranslateService }, { token: i4.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
270
+ DossierManagementSearchFieldsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: DossierManagementSearchFieldsComponent, selector: "valtimo-dossier-management-search-fields", outputs: { searchField: "searchField" }, viewQueries: [{ propertyName: "moveRowButtonsTemplateRef", first: true, predicate: ["moveRowButtons"], descendants: true }, { propertyName: "modal", first: true, predicate: ["searchFieldModal"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2022 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<ng-container\n *ngIf=\"{\n searchFields: translatedSearchFields$ | async,\n fields: fields$ | async,\n downloadUrl: downloadUrl$ | async,\n downloadName: downloadName$ | async,\n documentDefinitionName: documentDefinitionName$ | async,\n valid: valid$ | async,\n disableInput: disableInput$ | async\n } as obs\"\n>\n <ng-container *ngTemplateOutlet=\"buttons; context: {obs: obs}\"></ng-container>\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n <ng-container *ngTemplateOutlet=\"modal; context: {obs: obs}\"></ng-container>\n</ng-container>\n\n<ng-template #buttons let-obs=\"obs\">\n <div class=\"btn-group mt-m3px mb-3 pr-2 float-right\">\n <a\n class=\"btn btn-secondary btn-space\"\n [href]=\"obs.downloadUrl\"\n [download]=\"obs.downloadName\"\n [ngClass]=\"{\n disabled:\n !obs.downloadUrl || !obs.downloadName || obs.searchFields.length <= 0 || obs.disableInput\n }\"\n >\n <i class=\"icon mdi mdi-download mr-1\"></i>\n {{ 'searchFields.downloadButtonText' | translate }}\n </a>\n <button\n (click)=\"searchFieldClicked($event, true)\"\n class=\"btn btn-primary btn-space\"\n [ngClass]=\"{disabled: loadingSearchFields || obs.disableInput}\"\n >\n <i class=\"icon mdi mdi-plus mr-1\"></i>\n {{ 'searchFieldsOverview.addRow' | translate }}\n </button>\n </div>\n</ng-template>\n\n<ng-template #list let-obs=\"obs\">\n <valtimo-list\n [items]=\"obs.searchFields\"\n [fields]=\"obs.fields\"\n [viewMode]=\"false\"\n [header]=\"false\"\n (rowClicked)=\"searchFieldClicked($event, false)\"\n *ngIf=\"obs.searchFields; else loading\"\n [lastColumnTemplate]=\"moveRowButtonsTemplateRef\"\n >\n </valtimo-list>\n</ng-template>\n\n<ng-template #moveRowButtons let-index=\"index\" let-length=\"length\">\n <div\n class=\"move-row-buttons\"\n *ngIf=\"{\n disableInput: disableInput$ | async,\n documentDefinitionName: documentDefinitionName$ | async\n } as obs\"\n >\n <i\n class=\"mdi mdi-arrow-up-bold btn btn-outline-primary mr-1\"\n (click)=\"moveRow(index, true, $event, obs.documentDefinitionName)\"\n [ngClass]=\"{'disabled disabled-move-row-button': index === 0 || obs.disableInput}\"\n ></i>\n <i\n class=\"mdi mdi-arrow-down-bold btn btn-outline-secondary\"\n (click)=\"moveRow(index, false, $event, obs.documentDefinitionName)\"\n [ngClass]=\"{'disabled disabled-move-row-button': index === length - 1 || obs.disableInput}\"\n ></i>\n </div>\n</ng-template>\n\n<ng-template #modal let-obs=\"obs\">\n <valtimo-modal\n #searchFieldModal\n elementId=\"searchFieldModal\"\n [title]=\"\n searchFieldActionTypeIsAdd\n ? ('searchFieldsOverview.addRow' | translate)\n : ('searchFieldsOverview.edit' | translate)\n \"\n [showFooter]=\"true\"\n >\n <div body class=\"mt-2\">\n <v-form\n (valueChange)=\"formValueChange($event)\"\n *ngIf=\"showSearchFieldsForm && {searchField: selectedSearchField$ | async} as searchObs\"\n >\n <v-input\n name=\"title\"\n [title]=\"'searchFieldsOverview.title' | translate\"\n [margin]=\"true\"\n [defaultValue]=\"searchObs.searchField?.title\"\n [disabled]=\"obs.disableInput\"\n [required]=\"false\"\n [fullWidth]=\"true\"\n [tooltip]=\"'searchFieldsOverviewTooltips.title' | translate\"\n >\n </v-input>\n <v-input\n name=\"key\"\n [title]=\"'searchFieldsOverview.key' | translate\"\n [margin]=\"true\"\n [defaultValue]=\"searchObs.searchField?.key\"\n [disabled]=\"obs.disableInput || !searchFieldActionTypeIsAdd\"\n [required]=\"true\"\n [widthPx]=\"200\"\n [tooltip]=\"'searchFieldsOverviewTooltips.key' | translate\"\n >\n </v-input>\n <v-input\n name=\"path\"\n [title]=\"'searchFieldsOverview.path' | translate\"\n [margin]=\"true\"\n [defaultValue]=\"searchObs.searchField?.path\"\n [disabled]=\"obs.disableInput\"\n [required]=\"true\"\n [fullWidth]=\"true\"\n [tooltip]=\"'searchFieldsOverviewTooltips.path' | translate\"\n >\n </v-input>\n <v-select\n *ngIf=\"dataTypeItems$ | async as dataTypeItems\"\n [items]=\"dataTypeItems\"\n [placeholder]=\"'searchFieldsOverview.searchFieldPlaceholder' | translate\"\n [title]=\"'searchFieldsOverview.dataType' | translate\"\n [disabled]=\"obs.disableInput\"\n [margin]=\"true\"\n [required]=\"true\"\n name=\"dataType\"\n [defaultSelectionId]=\"searchObs.searchField?.dataType\"\n [widthInPx]=\"200\"\n [tooltip]=\"'searchFieldsOverviewTooltips.dataType' | translate\"\n ></v-select>\n <v-select\n *ngIf=\"fieldTypeItems$ | async as fieldTypeItems\"\n [items]=\"fieldTypeItems\"\n [placeholder]=\"'searchFieldsOverview.searchFieldPlaceholder' | translate\"\n [title]=\"'searchFieldsOverview.fieldType' | translate\"\n [disabled]=\"obs.disableInput\"\n [margin]=\"true\"\n [required]=\"true\"\n name=\"fieldType\"\n [defaultSelectionId]=\"searchObs.searchField?.fieldType\"\n [widthInPx]=\"200\"\n [tooltip]=\"'searchFieldsOverviewTooltips.fieldType' | translate\"\n ></v-select>\n <v-select\n *ngIf=\"matchTypeItems$ | async as matchTypeItems\"\n [items]=\"matchTypeItems\"\n [placeholder]=\"'searchFieldsOverview.searchFieldPlaceholder' | translate\"\n [title]=\"'searchFieldsOverview.matchType' | translate\"\n [disabled]=\"obs.disableInput\"\n [margin]=\"true\"\n [required]=\"true\"\n name=\"matchType\"\n [defaultSelectionId]=\"searchObs.searchField?.matchType\"\n [widthInPx]=\"200\"\n [tooltip]=\"'searchFieldsOverviewTooltips.matchType' | translate\"\n ></v-select>\n </v-form>\n </div>\n <div footer>\n <div class=\"col-12 p-0\">\n <ng-container *ngTemplateOutlet=\"buttonsFooterModal; context: {obs: obs}\"></ng-container>\n </div>\n </div>\n </valtimo-modal>\n</ng-template>\n\n<ng-template #buttonsFooterModal let-obs=\"obs\">\n <div class=\"buttons-container\" *ngIf=\"{searchField: selectedSearchField$ | async} as searchObs\">\n <div class=\"right-buttons\">\n <button\n class=\"btn btn-space btn-secondary\"\n *ngIf=\"!searchFieldActionTypeIsAdd\"\n [disabled]=\"obs.disableInput\"\n (click)=\"deleteSelectedSearchField(obs.documentDefinitionName, searchObs.searchField)\"\n >\n {{ 'searchFieldsOverview.delete' | translate }}\n </button>\n <button\n (click)=\"saveSearchField(obs.documentDefinitionName)\"\n type=\"button\"\n class=\"btn btn-primary btn-space mr-0\"\n [disabled]=\"obs.disableInput || !obs.valid\"\n >\n {{ 'searchFieldsOverview.submit' | translate }}\n </button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #loading>\n <div class=\"mb-3\">\n <valtimo-spinner></valtimo-spinner>\n </div>\n</ng-template>\n", styles: ["valtimo-list::ng-deep table{border-top:1px solid rgba(0,0,0,.125)}.modal-header::ng-deep{background-color:#f3f4f7}::ng-deep .disabled-move-row-button{cursor:default!important;filter:grayscale(1);opacity:.5}::ng-deep .move-row-buttons{display:flex;flex-direction:row;justify-content:flex-end;padding-right:13px}::ng-deep .tab-container{min-height:unset!important}\n"], components: [{ type: i5.ListComponent, selector: "valtimo-list", inputs: ["items", "fields", "pagination", "viewMode", "isSearchable", "header", "actions", "paginationIdentifier", "initialSortState", "lastColumnTemplate"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged"] }, { type: i5.ModalComponent, selector: "valtimo-modal", inputs: ["elementId", "title", "subtitle", "templateBelowSubtitle", "showFooter"] }, { type: i6.FormComponent, selector: "v-form", inputs: ["className"], outputs: ["valueChange"] }, { type: i6.InputComponent, selector: "v-input", inputs: ["name", "type", "title", "titleTranslationKey", "defaultValue", "widthPx", "fullWidth", "margin", "disabled", "step", "min", "maxLength", "tooltip", "required", "hideNumberSpinBox", "smallLabel", "clear$"], outputs: ["valueChange"] }, { type: i6.SelectComponent, selector: "v-select", inputs: ["items", "defaultSelection", "defaultSelectionId", "clearable", "disabled", "multiple", "margin", "widthInPx", "notFoundText", "clearAllText", "name", "title", "titleTranslationKey", "clearSelectionSubject$", "tooltip", "required", "loading", "loadingText", "placeholder"], outputs: ["selectedChange", "clear"] }, { type: i5.SpinnerComponent, selector: "valtimo-spinner", inputs: ["useBootstrapSpinner", "name", "type", "size", "color", "bdColor", "fullScreen", "noMarginTop"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "async": i7.AsyncPipe, "translate": i3.TranslatePipe } });
76
271
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DossierManagementSearchFieldsComponent, decorators: [{
77
272
  type: Component,
78
- args: [{ selector: 'valtimo-dossier-management-search-fields', template: "<!--\n ~ Copyright 2015-2022 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<ng-container\n *ngIf=\"{searchFields: translatedSearchFields$ | async, fields: fields$ | async} as obs\"\n>\n <valtimo-list\n [items]=\"obs.searchFields\"\n [fields]=\"obs.fields\"\n [viewMode]=\"false\"\n [header]=\"false\"\n >\n </valtimo-list>\n</ng-container>\n", styles: [""] }]
79
- }], ctorParameters: function () { return [{ type: i1.DocumentService }, { type: i2.ActivatedRoute }, { type: i3.TranslateService }]; } });
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1tYW5hZ2VtZW50LXNlYXJjaC1maWVsZHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyLW1hbmFnZW1lbnQvc3JjL2xpYi9kb3NzaWVyLW1hbmFnZW1lbnQtZGV0YWlsLWNvbnRhaW5lci90YWJzL2Rvc3NpZXItbWFuYWdlbWVudC1zZWFyY2gtZmllbGRzL2Rvc3NpZXItbWFuYWdlbWVudC1zZWFyY2gtZmllbGRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci1tYW5hZ2VtZW50L3NyYy9saWIvZG9zc2llci1tYW5hZ2VtZW50LWRldGFpbC1jb250YWluZXIvdGFicy9kb3NzaWVyLW1hbmFnZW1lbnQtc2VhcmNoLWZpZWxkcy9kb3NzaWVyLW1hbmFnZW1lbnQtc2VhcmNoLWZpZWxkcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFeEMsT0FBTyxFQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFjLFNBQVMsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7Ozs7OztBQVd2RSxNQUFNLE9BQU8sc0NBQXNDO0lBaUVqRCxZQUNtQixlQUFnQyxFQUNoQyxLQUFxQixFQUNyQixnQkFBa0M7UUFGbEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFuRXBDLFlBQU8sR0FBNEI7WUFDbEQ7Z0JBQ0UsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLFFBQVEsRUFBRSxLQUFLO2dCQUNmLFlBQVksRUFBRSxNQUFNO2dCQUNwQixjQUFjLEVBQUUsTUFBTTthQUN2QjtZQUNEO2dCQUNFLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixRQUFRLEVBQUUsS0FBSztnQkFDZixZQUFZLEVBQUUsVUFBVTtnQkFDeEIsY0FBYyxFQUFFLFVBQVU7YUFDM0I7WUFDRDtnQkFDRSxRQUFRLEVBQUUsUUFBUTtnQkFDbEIsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsWUFBWSxFQUFFLFdBQVc7Z0JBQ3pCLGNBQWMsRUFBRSxXQUFXO2FBQzVCO1lBQ0Q7Z0JBQ0UsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLFFBQVEsRUFBRSxLQUFLO2dCQUNmLFlBQVksRUFBRSxXQUFXO2dCQUN6QixjQUFjLEVBQUUsV0FBVzthQUM1QjtTQUNGLENBQUM7UUFFTyxZQUFPLEdBQWlDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUN2RixHQUFHLENBQUMsR0FBRyxFQUFFLENBQ1AsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzFCLEdBQUcsRUFBRSxNQUFNLENBQUMsWUFBWTtZQUN4QixLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3JGLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtZQUN6QixHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxFQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFDLENBQUM7U0FDcEQsQ0FBQyxDQUFDLENBQ0osQ0FDRixDQUFDO1FBRWUsNEJBQXVCLEdBQXVCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDbkYsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsRUFDaEMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUNuQyxDQUFDO1FBRWUsa0JBQWEsR0FDNUIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FDL0IsU0FBUyxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FDakMsSUFBSSxDQUFDLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxzQkFBc0IsQ0FBQyxDQUNyRSxDQUNGLENBQUM7UUFFSyw0QkFBdUIsR0FBbUMsYUFBYSxDQUFDO1lBQy9FLElBQUksQ0FBQyxhQUFhO1lBQ2xCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1NBQ3BDLENBQUMsQ0FBQyxJQUFJLENBQ0wsR0FBRyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLENBQ3JCLFlBQVksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQy9CLEdBQUcsV0FBVztZQUNkLFFBQVEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLGdCQUFnQixXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDL0UsU0FBUyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN6RixTQUFTLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQzFGLENBQUMsQ0FBQyxDQUNKLENBQ0YsQ0FBQztJQU1DLENBQUM7O29JQXJFTyxzQ0FBc0M7d0hBQXRDLHNDQUFzQyxnRkM1Qm5ELDQ2QkEyQkE7NEZEQ2Esc0NBQXNDO2tCQUxsRCxTQUFTOytCQUNFLDBDQUEwQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIyIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge0NvbXBvbmVudH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0RvY3VtZW50U2VydmljZX0gZnJvbSAnQHZhbHRpbW8vZG9jdW1lbnQnO1xuaW1wb3J0IHtjb21iaW5lTGF0ZXN0LCBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgc3dpdGNoTWFwfSBmcm9tICdyeGpzJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0xpc3RGaWVsZH0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtEZWZpbml0aW9uQ29sdW1uLCBTZWFyY2hGaWVsZH0gZnJvbSAnQHZhbHRpbW8vY29uZmlnJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtc2VhcmNoLWZpZWxkcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9kb3NzaWVyLW1hbmFnZW1lbnQtc2VhcmNoLWZpZWxkcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Rvc3NpZXItbWFuYWdlbWVudC1zZWFyY2gtZmllbGRzLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIERvc3NpZXJNYW5hZ2VtZW50U2VhcmNoRmllbGRzQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBDT0xVTU5TOiBBcnJheTxEZWZpbml0aW9uQ29sdW1uPiA9IFtcbiAgICB7XG4gICAgICB2aWV3VHlwZTogJ3N0cmluZycsXG4gICAgICBzb3J0YWJsZTogZmFsc2UsXG4gICAgICBwcm9wZXJ0eU5hbWU6ICdwYXRoJyxcbiAgICAgIHRyYW5zbGF0aW9uS2V5OiAncGF0aCcsXG4gICAgfSxcbiAgICB7XG4gICAgICB2aWV3VHlwZTogJ3N0cmluZycsXG4gICAgICBzb3J0YWJsZTogZmFsc2UsXG4gICAgICBwcm9wZXJ0eU5hbWU6ICdkYXRhdHlwZScsXG4gICAgICB0cmFuc2xhdGlvbktleTogJ2RhdGF0eXBlJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHZpZXdUeXBlOiAnc3RyaW5nJyxcbiAgICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICAgIHByb3BlcnR5TmFtZTogJ2ZpZWxkdHlwZScsXG4gICAgICB0cmFuc2xhdGlvbktleTogJ2ZpZWxkdHlwZScsXG4gICAgfSxcbiAgICB7XG4gICAgICB2aWV3VHlwZTogJ3N0cmluZycsXG4gICAgICBzb3J0YWJsZTogZmFsc2UsXG4gICAgICBwcm9wZXJ0eU5hbWU6ICdtYXRjaHR5cGUnLFxuICAgICAgdHJhbnNsYXRpb25LZXk6ICdtYXRjaHR5cGUnLFxuICAgIH0sXG4gIF07XG5cbiAgcmVhZG9ubHkgZmllbGRzJDogT2JzZXJ2YWJsZTxBcnJheTxMaXN0RmllbGQ+PiA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5zdHJlYW0oJ2tleScpLnBpcGUoXG4gICAgbWFwKCgpID0+XG4gICAgICB0aGlzLkNPTFVNTlMubWFwKGNvbHVtbiA9PiAoe1xuICAgICAgICBrZXk6IGNvbHVtbi5wcm9wZXJ0eU5hbWUsXG4gICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChgc2VhcmNoRmllbGRzT3ZlcnZpZXcuJHtjb2x1bW4udHJhbnNsYXRpb25LZXl9YCksXG4gICAgICAgIHNvcnRhYmxlOiBjb2x1bW4uc29ydGFibGUsXG4gICAgICAgIC4uLihjb2x1bW4udmlld1R5cGUgJiYge3ZpZXdUeXBlOiBjb2x1bW4udmlld1R5cGV9KSxcbiAgICAgIH0pKVxuICAgIClcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50RGVmaW5pdGlvbk5hbWUkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0aGlzLnJvdXRlLnBhcmFtcy5waXBlKFxuICAgIG1hcChwYXJhbXMgPT4gcGFyYW1zLm5hbWUgfHwgJycpLFxuICAgIGZpbHRlcihkb2NEZWZOYW1lID0+ICEhZG9jRGVmTmFtZSlcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHNlYXJjaEZpZWxkcyQ6IE9ic2VydmFibGU8QXJyYXk8U2VhcmNoRmllbGQ+PiA9XG4gICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lJC5waXBlKFxuICAgICAgc3dpdGNoTWFwKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPT5cbiAgICAgICAgdGhpcy5kb2N1bWVudFNlcnZpY2UuZ2V0RG9jdW1lbnRTZWFyY2hGaWVsZHMoZG9jdW1lbnREZWZpbml0aW9uTmFtZSlcbiAgICAgIClcbiAgICApO1xuXG4gIHJlYWRvbmx5IHRyYW5zbGF0ZWRTZWFyY2hGaWVsZHMkOiBPYnNlcnZhYmxlPEFycmF5PFNlYXJjaEZpZWxkPj4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLnNlYXJjaEZpZWxkcyQsXG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnN0cmVhbSgna2V5JyksXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbc2VhcmNoRmllbGRzXSkgPT5cbiAgICAgIHNlYXJjaEZpZWxkcy5tYXAoc2VhcmNoRmllbGQgPT4gKHtcbiAgICAgICAgLi4uc2VhcmNoRmllbGQsXG4gICAgICAgIGRhdGF0eXBlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChgc2VhcmNoRmllbGRzLiR7c2VhcmNoRmllbGQuZGF0YXR5cGV9YCksXG4gICAgICAgIG1hdGNodHlwZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoYHNlYXJjaEZpZWxkc092ZXJ2aWV3LiR7c2VhcmNoRmllbGQubWF0Y2h0eXBlfWApLFxuICAgICAgICBmaWVsZHR5cGU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGBzZWFyY2hGaWVsZHNPdmVydmlldy4ke3NlYXJjaEZpZWxkLmZpZWxkdHlwZX1gKSxcbiAgICAgIH0pKVxuICAgIClcbiAgKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50U2VydmljZTogRG9jdW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZVxuICApIHt9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyMiBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxuZy1jb250YWluZXJcbiAgKm5nSWY9XCJ7c2VhcmNoRmllbGRzOiB0cmFuc2xhdGVkU2VhcmNoRmllbGRzJCB8IGFzeW5jLCBmaWVsZHM6IGZpZWxkcyQgfCBhc3luY30gYXMgb2JzXCJcbj5cbiAgPHZhbHRpbW8tbGlzdFxuICAgIFtpdGVtc109XCJvYnMuc2VhcmNoRmllbGRzXCJcbiAgICBbZmllbGRzXT1cIm9icy5maWVsZHNcIlxuICAgIFt2aWV3TW9kZV09XCJmYWxzZVwiXG4gICAgW2hlYWRlcl09XCJmYWxzZVwiXG4gID5cbiAgPC92YWx0aW1vLWxpc3Q+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
273
+ args: [{ selector: 'valtimo-dossier-management-search-fields', template: "<!--\n ~ Copyright 2015-2022 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<ng-container\n *ngIf=\"{\n searchFields: translatedSearchFields$ | async,\n fields: fields$ | async,\n downloadUrl: downloadUrl$ | async,\n downloadName: downloadName$ | async,\n documentDefinitionName: documentDefinitionName$ | async,\n valid: valid$ | async,\n disableInput: disableInput$ | async\n } as obs\"\n>\n <ng-container *ngTemplateOutlet=\"buttons; context: {obs: obs}\"></ng-container>\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n <ng-container *ngTemplateOutlet=\"modal; context: {obs: obs}\"></ng-container>\n</ng-container>\n\n<ng-template #buttons let-obs=\"obs\">\n <div class=\"btn-group mt-m3px mb-3 pr-2 float-right\">\n <a\n class=\"btn btn-secondary btn-space\"\n [href]=\"obs.downloadUrl\"\n [download]=\"obs.downloadName\"\n [ngClass]=\"{\n disabled:\n !obs.downloadUrl || !obs.downloadName || obs.searchFields.length <= 0 || obs.disableInput\n }\"\n >\n <i class=\"icon mdi mdi-download mr-1\"></i>\n {{ 'searchFields.downloadButtonText' | translate }}\n </a>\n <button\n (click)=\"searchFieldClicked($event, true)\"\n class=\"btn btn-primary btn-space\"\n [ngClass]=\"{disabled: loadingSearchFields || obs.disableInput}\"\n >\n <i class=\"icon mdi mdi-plus mr-1\"></i>\n {{ 'searchFieldsOverview.addRow' | translate }}\n </button>\n </div>\n</ng-template>\n\n<ng-template #list let-obs=\"obs\">\n <valtimo-list\n [items]=\"obs.searchFields\"\n [fields]=\"obs.fields\"\n [viewMode]=\"false\"\n [header]=\"false\"\n (rowClicked)=\"searchFieldClicked($event, false)\"\n *ngIf=\"obs.searchFields; else loading\"\n [lastColumnTemplate]=\"moveRowButtonsTemplateRef\"\n >\n </valtimo-list>\n</ng-template>\n\n<ng-template #moveRowButtons let-index=\"index\" let-length=\"length\">\n <div\n class=\"move-row-buttons\"\n *ngIf=\"{\n disableInput: disableInput$ | async,\n documentDefinitionName: documentDefinitionName$ | async\n } as obs\"\n >\n <i\n class=\"mdi mdi-arrow-up-bold btn btn-outline-primary mr-1\"\n (click)=\"moveRow(index, true, $event, obs.documentDefinitionName)\"\n [ngClass]=\"{'disabled disabled-move-row-button': index === 0 || obs.disableInput}\"\n ></i>\n <i\n class=\"mdi mdi-arrow-down-bold btn btn-outline-secondary\"\n (click)=\"moveRow(index, false, $event, obs.documentDefinitionName)\"\n [ngClass]=\"{'disabled disabled-move-row-button': index === length - 1 || obs.disableInput}\"\n ></i>\n </div>\n</ng-template>\n\n<ng-template #modal let-obs=\"obs\">\n <valtimo-modal\n #searchFieldModal\n elementId=\"searchFieldModal\"\n [title]=\"\n searchFieldActionTypeIsAdd\n ? ('searchFieldsOverview.addRow' | translate)\n : ('searchFieldsOverview.edit' | translate)\n \"\n [showFooter]=\"true\"\n >\n <div body class=\"mt-2\">\n <v-form\n (valueChange)=\"formValueChange($event)\"\n *ngIf=\"showSearchFieldsForm && {searchField: selectedSearchField$ | async} as searchObs\"\n >\n <v-input\n name=\"title\"\n [title]=\"'searchFieldsOverview.title' | translate\"\n [margin]=\"true\"\n [defaultValue]=\"searchObs.searchField?.title\"\n [disabled]=\"obs.disableInput\"\n [required]=\"false\"\n [fullWidth]=\"true\"\n [tooltip]=\"'searchFieldsOverviewTooltips.title' | translate\"\n >\n </v-input>\n <v-input\n name=\"key\"\n [title]=\"'searchFieldsOverview.key' | translate\"\n [margin]=\"true\"\n [defaultValue]=\"searchObs.searchField?.key\"\n [disabled]=\"obs.disableInput || !searchFieldActionTypeIsAdd\"\n [required]=\"true\"\n [widthPx]=\"200\"\n [tooltip]=\"'searchFieldsOverviewTooltips.key' | translate\"\n >\n </v-input>\n <v-input\n name=\"path\"\n [title]=\"'searchFieldsOverview.path' | translate\"\n [margin]=\"true\"\n [defaultValue]=\"searchObs.searchField?.path\"\n [disabled]=\"obs.disableInput\"\n [required]=\"true\"\n [fullWidth]=\"true\"\n [tooltip]=\"'searchFieldsOverviewTooltips.path' | translate\"\n >\n </v-input>\n <v-select\n *ngIf=\"dataTypeItems$ | async as dataTypeItems\"\n [items]=\"dataTypeItems\"\n [placeholder]=\"'searchFieldsOverview.searchFieldPlaceholder' | translate\"\n [title]=\"'searchFieldsOverview.dataType' | translate\"\n [disabled]=\"obs.disableInput\"\n [margin]=\"true\"\n [required]=\"true\"\n name=\"dataType\"\n [defaultSelectionId]=\"searchObs.searchField?.dataType\"\n [widthInPx]=\"200\"\n [tooltip]=\"'searchFieldsOverviewTooltips.dataType' | translate\"\n ></v-select>\n <v-select\n *ngIf=\"fieldTypeItems$ | async as fieldTypeItems\"\n [items]=\"fieldTypeItems\"\n [placeholder]=\"'searchFieldsOverview.searchFieldPlaceholder' | translate\"\n [title]=\"'searchFieldsOverview.fieldType' | translate\"\n [disabled]=\"obs.disableInput\"\n [margin]=\"true\"\n [required]=\"true\"\n name=\"fieldType\"\n [defaultSelectionId]=\"searchObs.searchField?.fieldType\"\n [widthInPx]=\"200\"\n [tooltip]=\"'searchFieldsOverviewTooltips.fieldType' | translate\"\n ></v-select>\n <v-select\n *ngIf=\"matchTypeItems$ | async as matchTypeItems\"\n [items]=\"matchTypeItems\"\n [placeholder]=\"'searchFieldsOverview.searchFieldPlaceholder' | translate\"\n [title]=\"'searchFieldsOverview.matchType' | translate\"\n [disabled]=\"obs.disableInput\"\n [margin]=\"true\"\n [required]=\"true\"\n name=\"matchType\"\n [defaultSelectionId]=\"searchObs.searchField?.matchType\"\n [widthInPx]=\"200\"\n [tooltip]=\"'searchFieldsOverviewTooltips.matchType' | translate\"\n ></v-select>\n </v-form>\n </div>\n <div footer>\n <div class=\"col-12 p-0\">\n <ng-container *ngTemplateOutlet=\"buttonsFooterModal; context: {obs: obs}\"></ng-container>\n </div>\n </div>\n </valtimo-modal>\n</ng-template>\n\n<ng-template #buttonsFooterModal let-obs=\"obs\">\n <div class=\"buttons-container\" *ngIf=\"{searchField: selectedSearchField$ | async} as searchObs\">\n <div class=\"right-buttons\">\n <button\n class=\"btn btn-space btn-secondary\"\n *ngIf=\"!searchFieldActionTypeIsAdd\"\n [disabled]=\"obs.disableInput\"\n (click)=\"deleteSelectedSearchField(obs.documentDefinitionName, searchObs.searchField)\"\n >\n {{ 'searchFieldsOverview.delete' | translate }}\n </button>\n <button\n (click)=\"saveSearchField(obs.documentDefinitionName)\"\n type=\"button\"\n class=\"btn btn-primary btn-space mr-0\"\n [disabled]=\"obs.disableInput || !obs.valid\"\n >\n {{ 'searchFieldsOverview.submit' | translate }}\n </button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #loading>\n <div class=\"mb-3\">\n <valtimo-spinner></valtimo-spinner>\n </div>\n</ng-template>\n", styles: ["valtimo-list::ng-deep table{border-top:1px solid rgba(0,0,0,.125)}.modal-header::ng-deep{background-color:#f3f4f7}::ng-deep .disabled-move-row-button{cursor:default!important;filter:grayscale(1);opacity:.5}::ng-deep .move-row-buttons{display:flex;flex-direction:row;justify-content:flex-end;padding-right:13px}::ng-deep .tab-container{min-height:unset!important}\n"] }]
274
+ }], ctorParameters: function () { return [{ type: i1.DocumentService }, { type: i2.ActivatedRoute }, { type: i3.TranslateService }, { type: i4.DomSanitizer }]; }, propDecorators: { moveRowButtonsTemplateRef: [{
275
+ type: ViewChild,
276
+ args: ['moveRowButtons']
277
+ }], modal: [{
278
+ type: ViewChild,
279
+ args: ['searchFieldModal']
280
+ }], searchField: [{
281
+ type: Output
282
+ }] } });
283
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1tYW5hZ2VtZW50LXNlYXJjaC1maWVsZHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyLW1hbmFnZW1lbnQvc3JjL2xpYi9kb3NzaWVyLW1hbmFnZW1lbnQtZGV0YWlsLWNvbnRhaW5lci90YWJzL2Rvc3NpZXItbWFuYWdlbWVudC1zZWFyY2gtZmllbGRzL2Rvc3NpZXItbWFuYWdlbWVudC1zZWFyY2gtZmllbGRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci1tYW5hZ2VtZW50L3NyYy9saWIvZG9zc2llci1tYW5hZ2VtZW50LWRldGFpbC1jb250YWluZXIvdGFicy9kb3NzaWVyLW1hbmFnZW1lbnQtc2VhcmNoLWZpZWxkcy9kb3NzaWVyLW1hbmFnZW1lbnQtc2VhcmNoLWZpZWxkcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUdaLE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNMLGVBQWUsRUFDZixhQUFhLEVBQ2IsTUFBTSxFQUNOLEdBQUcsRUFFSCxZQUFZLEVBQ1osU0FBUyxFQUNULElBQUksRUFDSixHQUFHLEdBQ0osTUFBTSxNQUFNLENBQUM7Ozs7Ozs7OztBQW1CZCxNQUFNLE9BQU8sc0NBQXNDO0lBeUpqRCxZQUNtQixlQUFnQyxFQUNoQyxLQUFxQixFQUNyQixnQkFBa0MsRUFDbEMsU0FBdUI7UUFIdkIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsY0FBUyxHQUFULFNBQVMs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QUFzQztrQkFMbEQsU0FBUzsrQkFDRSwwQ0FBMEM7NkxBS2hCLHlCQUF5QjtzQkFBNUQsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBQ0ksS0FBSztzQkFBbkMsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBRW5CLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMiBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtEb2N1bWVudFNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2RvY3VtZW50JztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgZmlsdGVyLFxuICBtYXAsXG4gIE9ic2VydmFibGUsXG4gIFN1YnNjcmlwdGlvbixcbiAgc3dpdGNoTWFwLFxuICB0YWtlLFxuICB0YXAsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7TGlzdEZpZWxkLCBNb2RhbENvbXBvbmVudH0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgRGVmaW5pdGlvbkNvbHVtbixcbiAgU2VhcmNoRmllbGQsXG4gIFNlYXJjaEZpZWxkRGF0YVR5cGUsXG4gIFNlYXJjaEZpZWxkRmllbGRUeXBlLFxuICBTZWFyY2hGaWVsZE1hdGNoVHlwZSxcbn0gZnJvbSAnQHZhbHRpbW8vY29uZmlnJztcbmltcG9ydCB7RG9tU2FuaXRpemVyLCBTYWZlVXJsfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7U2VsZWN0SXRlbX0gZnJvbSAnQHZhbHRpbW8vdXNlci1pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC1zZWFyY2gtZmllbGRzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Rvc3NpZXItbWFuYWdlbWVudC1zZWFyY2gtZmllbGRzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZG9zc2llci1tYW5hZ2VtZW50LXNlYXJjaC1maWVsZHMuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRG9zc2llck1hbmFnZW1lbnRTZWFyY2hGaWVsZHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ21vdmVSb3dCdXR0b25zJykgcHVibGljIG1vdmVSb3dCdXR0b25zVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaEZpZWxkTW9kYWwnKSBtb2RhbDogTW9kYWxDb21wb25lbnQ7XG5cbiAgQE91dHB1dCgpIHNlYXJjaEZpZWxkOiBFdmVudEVtaXR0ZXI8U2VhcmNoRmllbGQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHJlYWRvbmx5IGRvd25sb2FkTmFtZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuICByZWFkb25seSBkb3dubG9hZFVybCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNhZmVVcmw+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGRpc2FibGVJbnB1dCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRTZWFyY2hGaWVsZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNlYXJjaEZpZWxkIHwgbnVsbD4obnVsbCk7XG4gIHJlYWRvbmx5IGZvcm1EYXRhJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2VhcmNoRmllbGQ+KG51bGwpO1xuICByZWFkb25seSB2YWxpZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBwcml2YXRlIHN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBDT0xVTU5TOiBBcnJheTxEZWZpbml0aW9uQ29sdW1uPiA9IFtcbiAgICB7XG4gICAgICB2aWV3VHlwZTogJ3N0cmluZycsXG4gICAgICBzb3J0YWJsZTogZmFsc2UsXG4gICAgICBwcm9wZXJ0eU5hbWU6ICd0aXRsZScsXG4gICAgICB0cmFuc2xhdGlvbktleTogJ3RpdGxlJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHZpZXdUeXBlOiAnc3RyaW5nJyxcbiAgICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICAgIHByb3BlcnR5TmFtZTogJ2tleScsXG4gICAgICB0cmFuc2xhdGlvbktleTogJ2tleScsXG4gICAgfSxcbiAgICB7XG4gICAgICB2aWV3VHlwZTogJ3N0cmluZycsXG4gICAgICBzb3J0YWJsZTogZmFsc2UsXG4gICAgICBwcm9wZXJ0eU5hbWU6ICdwYXRoJyxcbiAgICAgIHRyYW5zbGF0aW9uS2V5OiAncGF0aCcsXG4gICAgfSxcbiAgICB7XG4gICAgICB2aWV3VHlwZTogJ3N0cmluZycsXG4gICAgICBzb3J0YWJsZTogZmFsc2UsXG4gICAgICBwcm9wZXJ0eU5hbWU6ICdkYXRhVHlwZScsXG4gICAgICB0cmFuc2xhdGlvbktleTogJ2RhdGFUeXBlJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHZpZXdUeXBlOiAnc3RyaW5nJyxcbiAgICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICAgIHByb3BlcnR5TmFtZTogJ2ZpZWxkVHlwZScsXG4gICAgICB0cmFuc2xhdGlvbktleTogJ2ZpZWxkVHlwZScsXG4gICAgfSxcbiAgICB7XG4gICAgICB2aWV3VHlwZTogJ3N0cmluZycsXG4gICAgICBzb3J0YWJsZTogZmFsc2UsXG4gICAgICBwcm9wZXJ0eU5hbWU6ICdtYXRjaFR5cGUnLFxuICAgICAgdHJhbnNsYXRpb25LZXk6ICdtYXRjaFR5cGUnLFxuICAgIH0sXG4gIF07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBEQVRBX1RZUEVTOiBBcnJheTxTZWFyY2hGaWVsZERhdGFUeXBlPiA9IFtcbiAgICAndGV4dCcsXG4gICAgJ251bWJlcicsXG4gICAgJ2RhdGUnLFxuICAgICdkYXRldGltZScsXG4gICAgJ2Jvb2xlYW4nLFxuICBdO1xuICByZWFkb25seSBkYXRhVHlwZUl0ZW1zJDogT2JzZXJ2YWJsZTxBcnJheTxTZWxlY3RJdGVtPj4gPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RyZWFtKCdrZXknKS5waXBlKFxuICAgIG1hcCgoKSA9PlxuICAgICAgdGhpcy5EQVRBX1RZUEVTLm1hcChkYXRhVHlwZSA9PiAoe1xuICAgICAgICBpZDogZGF0YVR5cGUsXG4gICAgICAgIHRleHQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGBzZWFyY2hGaWVsZHMuJHtkYXRhVHlwZX1gKSxcbiAgICAgIH0pKVxuICAgIClcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IEZJRUxEX1RZUEVTOiBBcnJheTxTZWFyY2hGaWVsZEZpZWxkVHlwZT4gPSBbJ3NpbmdsZScsICdyYW5nZSddO1xuICByZWFkb25seSBmaWVsZFR5cGVJdGVtcyQ6IE9ic2VydmFibGU8QXJyYXk8U2VsZWN0SXRlbT4+ID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlXG4gICAgLnN0cmVhbSgna2V5JylcbiAgICAucGlwZShcbiAgICAgIG1hcCgoKSA9PlxuICAgICAgICB0aGlzLkZJRUxEX1RZUEVTLm1hcChmaWVsZFR5cGUgPT4gKHtcbiAgICAgICAgICBpZDogZmllbGRUeXBlLFxuICAgICAgICAgIHRleHQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGBzZWFyY2hGaWVsZHNPdmVydmlldy4ke2ZpZWxkVHlwZX1gKSxcbiAgICAgICAgfSkpXG4gICAgICApXG4gICAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IE1BVENIX1RZUEVTOiBBcnJheTxTZWFyY2hGaWVsZE1hdGNoVHlwZT4gPSBbJ2V4YWN0JywgJ2xpa2UnXTtcbiAgcmVhZG9ubHkgbWF0Y2hUeXBlSXRlbXMkOiBPYnNlcnZhYmxlPEFycmF5PFNlbGVjdEl0ZW0+PiA9IHRoaXMudHJhbnNsYXRlU2VydmljZVxuICAgIC5zdHJlYW0oJ2tleScpXG4gICAgLnBpcGUoXG4gICAgICBtYXAoKCkgPT5cbiAgICAgICAgdGhpcy5NQVRDSF9UWVBFUy5tYXAobWF0Y2hUeXBlID0+ICh7XG4gICAgICAgICAgaWQ6IG1hdGNoVHlwZSxcbiAgICAgICAgICB0ZXh0OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChgc2VhcmNoRmllbGRzT3ZlcnZpZXcuJHttYXRjaFR5cGV9YCksXG4gICAgICAgIH0pKVxuICAgICAgKVxuICAgICk7XG5cbiAgcmVhZG9ubHkgZmllbGRzJDogT2JzZXJ2YWJsZTxBcnJheTxMaXN0RmllbGQ+PiA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5zdHJlYW0oJ2tleScpLnBpcGUoXG4gICAgbWFwKCgpID0+XG4gICAgICB0aGlzLkNPTFVNTlMubWFwKGNvbHVtbiA9PiAoe1xuICAgICAgICBrZXk6IGNvbHVtbi5wcm9wZXJ0eU5hbWUsXG4gICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChgc2VhcmNoRmllbGRzT3ZlcnZpZXcuJHtjb2x1bW4udHJhbnNsYXRpb25LZXl9YCksXG4gICAgICAgIHNvcnRhYmxlOiBjb2x1bW4uc29ydGFibGUsXG4gICAgICAgIC4uLihjb2x1bW4udmlld1R5cGUgJiYge3ZpZXdUeXBlOiBjb2x1bW4udmlld1R5cGV9KSxcbiAgICAgICAgLi4uKGNvbHVtbi5lbnVtICYmIHtlbnVtOiBjb2x1bW4uZW51bX0pLFxuICAgICAgfSkpXG4gICAgKVxuICApO1xuXG4gIHJlYWRvbmx5IGRvY3VtZW50RGVmaW5pdGlvbk5hbWUkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0aGlzLnJvdXRlLnBhcmFtcy5waXBlKFxuICAgIG1hcChwYXJhbXMgPT4gcGFyYW1zLm5hbWUgfHwgJycpLFxuICAgIGZpbHRlcihkb2NEZWZOYW1lID0+ICEhZG9jRGVmTmFtZSlcbiAgKTtcblxuICBwcml2YXRlIGNhY2hlZFNlYXJjaEZpZWxkcyE6IEFycmF5PFNlYXJjaEZpZWxkPjtcbiAgc2VhcmNoRmllbGRBY3Rpb25UeXBlSXNBZGQ6IGJvb2xlYW47XG4gIGxvYWRpbmdTZWFyY2hGaWVsZHMgPSB0cnVlO1xuICBzaG93U2VhcmNoRmllbGRzRm9ybSA9IGZhbHNlO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVmcmVzaFNlYXJjaEZpZWxkcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bGw+KG51bGwpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2VhcmNoRmllbGRzJDogT2JzZXJ2YWJsZTxBcnJheTxTZWFyY2hGaWVsZD4+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lJCxcbiAgICB0aGlzLnJlZnJlc2hTZWFyY2hGaWVsZHMkLFxuICBdKS5waXBlKFxuICAgIHN3aXRjaE1hcCgoW2RvY3VtZW50RGVmaW5pdGlvbk5hbWVdKSA9PlxuICAgICAgdGhpcy5kb2N1bWVudFNlcnZpY2UuZ2V0RG9jdW1lbnRTZWFyY2hGaWVsZHMoZG9jdW1lbnREZWZpbml0aW9uTmFtZSlcbiAgICApLFxuICAgIHRhcChzZWFyY2hGaWVsZHMgPT4ge1xuICAgICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShkb2N1bWVudERlZmluaXRpb25OYW1lID0+IHtcbiAgICAgICAgaWYgKHNlYXJjaEZpZWxkcyAmJiBBcnJheS5pc0FycmF5KHNlYXJjaEZpZWxkcykgJiYgc2VhcmNoRmllbGRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLnNldERvd25sb2FkKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUsIHNlYXJjaEZpZWxkcyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pLFxuICAgIHRhcChzZWFyY2hGaWVsZHMgPT4ge1xuICAgICAgdGhpcy5jYWNoZWRTZWFyY2hGaWVsZHMgPSBzZWFyY2hGaWVsZHM7XG4gICAgICB0aGlzLmxvYWRpbmdTZWFyY2hGaWVsZHMgPSBmYWxzZTtcbiAgICB9KVxuICApO1xuXG4gIHJlYWRvbmx5IHRyYW5zbGF0ZWRTZWFyY2hGaWVsZHMkOiBPYnNlcnZhYmxlPEFycmF5PFNlYXJjaEZpZWxkPj4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLnNlYXJjaEZpZWxkcyQsXG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnN0cmVhbSgna2V5JyksXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbc2VhcmNoRmllbGRzXSkgPT5cbiAgICAgIHNlYXJjaEZpZWxkcy5tYXAoc2VhcmNoRmllbGQgPT4gKHtcbiAgICAgICAgLi4uc2VhcmNoRmllbGQsXG4gICAgICAgIHRpdGxlOiBzZWFyY2hGaWVsZC50aXRsZSA/IHNlYXJjaEZpZWxkLnRpdGxlIDogJycsXG4gICAgICAgIGRhdGFUeXBlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChgc2VhcmNoRmllbGRzLiR7c2VhcmNoRmllbGQuZGF0YVR5cGV9YCksXG4gICAgICAgIG1hdGNoVHlwZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoYHNlYXJjaEZpZWxkc092ZXJ2aWV3LiR7c2VhcmNoRmllbGQubWF0Y2hUeXBlfWApLFxuICAgICAgICBmaWVsZFR5cGU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGBzZWFyY2hGaWVsZHNPdmVydmlldy4ke3NlYXJjaEZpZWxkLmZpZWxkVHlwZX1gKSxcbiAgICAgIH0pKVxuICAgIClcbiAgKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50U2VydmljZTogRG9jdW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNhbml0aXplcjogRG9tU2FuaXRpemVyXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW5TZWxlY3RlZFNlYXJjaEZpZWxkU3Vic2NyaXB0aW9uKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuTW9kYWxTaG93aW5nU3Vic2NyaXB0aW9uKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHNlYXJjaEZpZWxkQ2xpY2tlZChzZWFyY2hGaWVsZDogU2VhcmNoRmllbGQsIHNlYXJjaEZpZWxkQWN0aW9uVHlwZUlzQWRkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlSW5wdXQkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGlucHV0RGlzYWJsZWQgPT4ge1xuICAgICAgaWYgKCFpbnB1dERpc2FibGVkKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoRmllbGRBY3Rpb25UeXBlSXNBZGQgPSBzZWFyY2hGaWVsZEFjdGlvblR5cGVJc0FkZDtcbiAgICAgICAgY29uc3Qgc2VhcmNoRmllbGRUb1NlbGVjdCA9IHRoaXMuY2FjaGVkU2VhcmNoRmllbGRzLmZpbmQoXG4gICAgICAgICAgZmllbGQgPT4gZmllbGQua2V5ID09PSBzZWFyY2hGaWVsZC5rZXlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFNlYXJjaEZpZWxkJC5uZXh0KHNlYXJjaEZpZWxkVG9TZWxlY3QpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZm9ybVZhbHVlQ2hhbmdlKGRhdGE6IFNlYXJjaEZpZWxkKTogdm9pZCB7XG4gICAgY29uc3QgY29udGFpbnNBbGxWYWx1ZXMgPSAhIShcbiAgICAgIGRhdGEua2V5ICYmXG4gICAgICBkYXRhLmRhdGFUeXBlICYmXG4gICAgICBkYXRhLmZpZWxkVHlwZSAmJlxuICAgICAgZGF0YS5tYXRjaFR5cGUgJiZcbiAgICAgIGRhdGEucGF0aFxuICAgICk7XG4gICAgY29uc3Qga2V5SXNVbmlxdWUgPVxuICAgICAgIXRoaXMuc2VhcmNoRmllbGRBY3Rpb25UeXBlSXNBZGQgfHxcbiAgICAgIHRoaXMuY2FjaGVkU2VhcmNoRmllbGRzLmZpbmRJbmRleChmaWVsZCA9PiBmaWVsZC5rZXkgPT09IGRhdGEua2V5KSA9PT0gLTE7XG5cbiAgICB0aGlzLmZvcm1EYXRhJC5uZXh0KGRhdGEpO1xuICAgIHRoaXMudmFsaWQkLm5leHQoY29udGFpbnNBbGxWYWx1ZXMgJiYga2V5SXNVbmlxdWUpO1xuICB9XG5cbiAgbW92ZVJvdyhcbiAgICBzZWFyY2hGaWVsZFJvd0luZGV4OiBudW1iZXIsXG4gICAgbW92ZVVwOiBib29sZWFuLFxuICAgIGNsaWNrRXZlbnQ6IE1vdXNlRXZlbnQsXG4gICAgZG9jdW1lbnREZWZpbml0aW9uTmFtZTogc3RyaW5nXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHNlYXJjaEZpZWxkcyA9IFsuLi50aGlzLmNhY2hlZFNlYXJjaEZpZWxkc107XG4gICAgY29uc3Qgc2VhcmNoRmllbGRSb3cgPSBzZWFyY2hGaWVsZHNbc2VhcmNoRmllbGRSb3dJbmRleF07XG5cbiAgICBjbGlja0V2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgY29uc3Qgc2VhcmNoRmllbGRJbmRleCA9IHNlYXJjaEZpZWxkcy5maW5kSW5kZXgoZmllbGQgPT4gZmllbGQua2V5ID09PSBzZWFyY2hGaWVsZFJvdy5rZXkpO1xuICAgIGNvbnN0IGZvdW5kU2VhcmNoRmllbGQgPSB7Li4uc2VhcmNoRmllbGRzW3NlYXJjaEZpZWxkSW5kZXhdfTtcbiAgICBjb25zdCBmaWx0ZXJlZFNlYXJjaEZpZWxkcyA9IHNlYXJjaEZpZWxkcy5maWx0ZXIoZmllbGQgPT4gZmllbGQua2V5ICE9PSBzZWFyY2hGaWVsZFJvdy5rZXkpO1xuICAgIGNvbnN0IG11bHRpcGxlU2VhcmNoRmllbGRzID0gc2VhcmNoRmllbGRzLmxlbmd0aCA+IDE7XG5cbiAgICBpZiAobXVsdGlwbGVTZWFyY2hGaWVsZHMgJiYgbW92ZVVwICYmIHNlYXJjaEZpZWxkSW5kZXggPiAwKSB7XG4gICAgICBjb25zdCBzZWFyY2hGaWVsZEJlZm9yZUtleSA9IGAke3NlYXJjaEZpZWxkc1tzZWFyY2hGaWVsZEluZGV4IC0gMV0ua2V5fWA7XG4gICAgICBjb25zdCBzZWFyY2hGaWVsZEJlZm9yZUluZGV4ID0gZmlsdGVyZWRTZWFyY2hGaWVsZHMuZmluZEluZGV4KFxuICAgICAgICBmaWVsZCA9PiBmaWVsZC5rZXkgPT09IHNlYXJjaEZpZWxkQmVmb3JlS2V5XG4gICAgICApO1xuICAgICAgZmlsdGVyZWRTZWFyY2hGaWVsZHMuc3BsaWNlKHNlYXJjaEZpZWxkQmVmb3JlSW5kZXgsIDAsIGZvdW5kU2VhcmNoRmllbGQpO1xuICAgICAgdGhpcy51cGRhdGVTZWFyY2hGaWVsZHMoZG9jdW1lbnREZWZpbml0aW9uTmFtZSwgZmlsdGVyZWRTZWFyY2hGaWVsZHMpO1xuICAgIH0gZWxzZSBpZiAobXVsdGlwbGVTZWFyY2hGaWVsZHMgJiYgIW1vdmVVcCAmJiBzZWFyY2hGaWVsZEluZGV4IDwgc2VhcmNoRmllbGRzLmxlbmd0aCkge1xuICAgICAgY29uc3Qgc2VhcmNoRmllbGRBZnRlcktleSA9IGAke3NlYXJjaEZpZWxkc1tzZWFyY2hGaWVsZEluZGV4ICsgMV0ua2V5fWA7XG4gICAgICBjb25zdCBzZWFyY2hGaWVsZEFmdGVySW5kZXggPSBmaWx0ZXJlZFNlYXJjaEZpZWxkcy5maW5kSW5kZXgoXG4gICAgICAgIGZpZWxkID0+IGZpZWxkLmtleSA9PT0gc2VhcmNoRmllbGRBZnRlcktleVxuICAgICAgKTtcbiAgICAgIGZpbHRlcmVkU2VhcmNoRmllbGRzLnNwbGljZShzZWFyY2hGaWVsZEFmdGVySW5kZXggKyAxLCAwLCBmb3VuZFNlYXJjaEZpZWxkKTtcbiAgICAgIHRoaXMudXBkYXRlU2VhcmNoRmllbGRzKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUsIGZpbHRlcmVkU2VhcmNoRmllbGRzKTtcbiAgICB9XG4gIH1cblxuICBkZWxldGVTZWxlY3RlZFNlYXJjaEZpZWxkKFxuICAgIGRvY3VtZW50RGVmaW5pdGlvbk5hbWU6IHN0cmluZyxcbiAgICBzZWxlY3RlZFNlYXJjaEZpZWxkOiBTZWFyY2hGaWVsZFxuICApOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVJbnB1dCgpO1xuXG4gICAgdGhpcy5kb2N1bWVudFNlcnZpY2VcbiAgICAgIC5kZWxldGVEb2N1bWVudFNlYXJjaChkb2N1bWVudERlZmluaXRpb25OYW1lLCBzZWxlY3RlZFNlYXJjaEZpZWxkLmtleSlcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0aGlzLmVuYWJsZUlucHV0KCk7XG4gICAgICAgICAgdGhpcy5oaWRlTW9kYWwoKTtcbiAgICAgICAgICB0aGlzLnJlZnJlc2hTZWFyY2hGaWVsZHMoKTtcbiAgICAgICAgfSxcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZW5hYmxlSW5wdXQoKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIHNhdmVTZWFyY2hGaWVsZChkb2N1bWVudERlZmluaXRpb25OYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVJbnB1dCgpO1xuXG4gICAgdGhpcy5mb3JtRGF0YSQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoZm9ybURhdGEgPT4ge1xuICAgICAgaWYgKHRoaXMuc2VhcmNoRmllbGRBY3Rpb25UeXBlSXNBZGQpIHtcbiAgICAgICAgdGhpcy5kb2N1bWVudFNlcnZpY2UucG9zdERvY3VtZW50U2VhcmNoKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUsIGZvcm1EYXRhKS5zdWJzY3JpYmUoXG4gICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lbmFibGVJbnB1dCgpO1xuICAgICAgICAgICAgdGhpcy5oaWRlTW9kYWwoKTtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaFNlYXJjaEZpZWxkcygpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lbmFibGVJbnB1dCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG5ld0ZpZWxkcyA9IFsuLi50aGlzLmNhY2hlZFNlYXJjaEZpZWxkc107XG4gICAgICAgIGNvbnN0IGluZGV4VG9SZXBsYWNlID0gbmV3RmllbGRzLmZpbmRJbmRleChmaWVsZCA9PiBmaWVsZC5rZXkgPT09IGZvcm1EYXRhLmtleSk7XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkRmllbGRzID0gbmV3RmllbGRzLmZpbHRlcihmaWVsZCA9PiBmaWVsZC5rZXkgIT09IGZvcm1EYXRhLmtleSk7XG5cbiAgICAgICAgZmlsdGVyZWRGaWVsZHMuc3BsaWNlKGluZGV4VG9SZXBsYWNlLCAwLCBmb3JtRGF0YSk7XG4gICAgICAgIHRoaXMudXBkYXRlU2VhcmNoRmllbGRzKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUsIGZpbHRlcmVkRmllbGRzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZVNlYXJjaEZpZWxkcyhkb2N1bWVudERlZmluaXRpb25OYW1lOiBzdHJpbmcsIG5ld1NlYXJjaEZpZWxkczogQXJyYXk8U2VhcmNoRmllbGQ+KTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlSW5wdXQoKTtcblxuICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlLnB1dERvY3VtZW50U2VhcmNoKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUsIG5ld1NlYXJjaEZpZWxkcykuc3Vic2NyaWJlKFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLmVuYWJsZUlucHV0KCk7XG4gICAgICAgIHRoaXMuaGlkZU1vZGFsKCk7XG4gICAgICAgIHRoaXMucmVmcmVzaFNlYXJjaEZpZWxkcygpO1xuICAgICAgfSxcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5lbmFibGVJbnB1dCgpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5TZWxlY3RlZFNlYXJjaEZpZWxkU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnNlbGVjdGVkU2VhcmNoRmllbGQkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2hvd01vZGFsKCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5Nb2RhbFNob3dpbmdTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMubW9kYWwubW9kYWxTaG93aW5nJC5zdWJzY3JpYmUobW9kYWxTaG93aW5nID0+IHtcbiAgICAgICAgaWYgKG1vZGFsU2hvd2luZykge1xuICAgICAgICAgIHRoaXMuc2hvd1NlYXJjaEZpZWxkc0Zvcm0gPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zaG93U2VhcmNoRmllbGRzRm9ybSA9IGZhbHNlO1xuICAgICAgICAgIH0sIDE1MCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0RG93bmxvYWQoZG9jdW1lbnREZWZpbml0aW9uTmFtZTogc3RyaW5nLCBzZWFyY2hGaWVsZHM6IEFycmF5PFNlYXJjaEZpZWxkPik6IHZvaWQge1xuICAgIHRoaXMuZG93bmxvYWROYW1lJC5uZXh0KGAke2RvY3VtZW50RGVmaW5pdGlvbk5hbWV9Lmpzb25gKTtcbiAgICB0aGlzLmRvd25sb2FkVXJsJC5uZXh0KFxuICAgICAgdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybChcbiAgICAgICAgJ2RhdGE6dGV4dC9qc29uO2NoYXJzZXQ9VVRGLTgsJyArXG4gICAgICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHtzZWFyY2hGaWVsZHN9LCBudWxsLCAyKSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNhYmxlSW5wdXQoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlSW5wdXQkLm5leHQodHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIGVuYWJsZUlucHV0KCk6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZUlucHV0JC5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd01vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMubW9kYWw/LnNob3coKTtcbiAgfVxuXG4gIHByaXZhdGUgaGlkZU1vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMubW9kYWw/LmhpZGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVmcmVzaFNlYXJjaEZpZWxkcygpOiB2b2lkIHtcbiAgICB0aGlzLnJlZnJlc2hTZWFyY2hGaWVsZHMkLm5leHQobnVsbCk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDIyIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPG5nLWNvbnRhaW5lclxuICAqbmdJZj1cIntcbiAgICBzZWFyY2hGaWVsZHM6IHRyYW5zbGF0ZWRTZWFyY2hGaWVsZHMkIHwgYXN5bmMsXG4gICAgZmllbGRzOiBmaWVsZHMkIHwgYXN5bmMsXG4gICAgZG93bmxvYWRVcmw6IGRvd25sb2FkVXJsJCB8IGFzeW5jLFxuICAgIGRvd25sb2FkTmFtZTogZG93bmxvYWROYW1lJCB8IGFzeW5jLFxuICAgIGRvY3VtZW50RGVmaW5pdGlvbk5hbWU6IGRvY3VtZW50RGVmaW5pdGlvbk5hbWUkIHwgYXN5bmMsXG4gICAgdmFsaWQ6IHZhbGlkJCB8IGFzeW5jLFxuICAgIGRpc2FibGVJbnB1dDogZGlzYWJsZUlucHV0JCB8IGFzeW5jXG4gIH0gYXMgb2JzXCJcbj5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJ1dHRvbnM7IGNvbnRleHQ6IHtvYnM6IG9ic31cIj48L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxpc3Q7IGNvbnRleHQ6IHtvYnM6IG9ic31cIj48L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1vZGFsOyBjb250ZXh0OiB7b2JzOiBvYnN9XCI+PC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNidXR0b25zIGxldC1vYnM9XCJvYnNcIj5cbiAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cCBtdC1tM3B4IG1iLTMgcHItMiBmbG9hdC1yaWdodFwiPlxuICAgIDxhXG4gICAgICBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5IGJ0bi1zcGFjZVwiXG4gICAgICBbaHJlZl09XCJvYnMuZG93bmxvYWRVcmxcIlxuICAgICAgW2Rvd25sb2FkXT1cIm9icy5kb3dubG9hZE5hbWVcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICBkaXNhYmxlZDpcbiAgICAgICAgICAhb2JzLmRvd25sb2FkVXJsIHx8ICFvYnMuZG93bmxvYWROYW1lIHx8IG9icy5zZWFyY2hGaWVsZHMubGVuZ3RoIDw9IDAgfHwgb2JzLmRpc2FibGVJbnB1dFxuICAgICAgfVwiXG4gICAgPlxuICAgICAgPGkgY2xhc3M9XCJpY29uIG1kaSBtZGktZG93bmxvYWQgbXItMVwiPjwvaT5cbiAgICAgIHt7ICdzZWFyY2hGaWVsZHMuZG93bmxvYWRCdXR0b25UZXh0JyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYT5cbiAgICA8YnV0dG9uXG4gICAgICAoY2xpY2spPVwic2VhcmNoRmllbGRDbGlja2VkKCRldmVudCwgdHJ1ZSlcIlxuICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNwYWNlXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntkaXNhYmxlZDogbG9hZGluZ1NlYXJjaEZpZWxkcyB8fCBvYnMuZGlzYWJsZUlucHV0fVwiXG4gICAgPlxuICAgICAgPGkgY2xhc3M9XCJpY29uIG1kaSBtZGktcGx1cyBtci0xXCI+PC9pPlxuICAgICAge3sgJ3NlYXJjaEZpZWxkc092ZXJ2aWV3LmFkZFJvdycgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2xpc3QgbGV0LW9icz1cIm9ic1wiPlxuICA8dmFsdGltby1saXN0XG4gICAgW2l0ZW1zXT1cIm9icy5zZWFyY2hGaWVsZHNcIlxuICAgIFtmaWVsZHNdPVwib2JzLmZpZWxkc1wiXG4gICAgW3ZpZXdNb2RlXT1cImZhbHNlXCJcbiAgICBbaGVhZGVyXT1cImZhbHNlXCJcbiAgICAocm93Q2xpY2tlZCk9XCJzZWFyY2hGaWVsZENsaWNrZWQoJGV2ZW50LCBmYWxzZSlcIlxuICAgICpuZ0lmPVwib2JzLnNlYXJjaEZpZWxkczsgZWxzZSBsb2FkaW5nXCJcbiAgICBbbGFzdENvbHVtblRlbXBsYXRlXT1cIm1vdmVSb3dCdXR0b25zVGVtcGxhdGVSZWZcIlxuICA+XG4gIDwvdmFsdGltby1saXN0PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNtb3ZlUm93QnV0dG9ucyBsZXQtaW5kZXg9XCJpbmRleFwiIGxldC1sZW5ndGg9XCJsZW5ndGhcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwibW92ZS1yb3ctYnV0dG9uc1wiXG4gICAgKm5nSWY9XCJ7XG4gICAgICBkaXNhYmxlSW5wdXQ6IGRpc2FibGVJbnB1dCQgfCBhc3luYyxcbiAgICAgIGRvY3VtZW50RGVmaW5pdGlvbk5hbWU6IGRvY3VtZW50RGVmaW5pdGlvbk5hbWUkIHwgYXN5bmNcbiAgICB9IGFzIG9ic1wiXG4gID5cbiAgICA8aVxuICAgICAgY2xhc3M9XCJtZGkgbWRpLWFycm93LXVwLWJvbGQgYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgbXItMVwiXG4gICAgICAoY2xpY2spPVwibW92ZVJvdyhpbmRleCwgdHJ1ZSwgJGV2ZW50LCBvYnMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSlcIlxuICAgICAgW25nQ2xhc3NdPVwieydkaXNhYmxlZCBkaXNhYmxlZC1tb3ZlLXJvdy1idXR0b24nOiBpbmRleCA9PT0gMCB8fCBvYnMuZGlzYWJsZUlucHV0fVwiXG4gICAgPjwvaT5cbiAgICA8aVxuICAgICAgY2xhc3M9XCJtZGkgbWRpLWFycm93LWRvd24tYm9sZCBidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5XCJcbiAgICAgIChjbGljayk9XCJtb3ZlUm93KGluZGV4LCBmYWxzZSwgJGV2ZW50LCBvYnMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSlcIlxuICAgICAgW25nQ2xhc3NdPVwieydkaXNhYmxlZCBkaXNhYmxlZC1tb3ZlLXJvdy1idXR0b24nOiBpbmRleCA9PT0gbGVuZ3RoIC0gMSB8fCBvYnMuZGlzYWJsZUlucHV0fVwiXG4gICAgPjwvaT5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21vZGFsIGxldC1vYnM9XCJvYnNcIj5cbiAgPHZhbHRpbW8tbW9kYWxcbiAgICAjc2VhcmNoRmllbGRNb2RhbFxuICAgIGVsZW1lbnRJZD1cInNlYXJjaEZpZWxkTW9kYWxcIlxuICAgIFt0aXRsZV09XCJcbiAgICAgIHNlYXJjaEZpZWxkQWN0aW9uVHlwZUlzQWRkXG4gICAgICAgID8gKCdzZWFyY2hGaWVsZHNPdmVydmlldy5hZGRSb3cnIHwgdHJhbnNsYXRlKVxuICAgICAgICA6ICgnc2VhcmNoRmllbGRzT3ZlcnZpZXcuZWRpdCcgfCB0cmFuc2xhdGUpXG4gICAgXCJcbiAgICBbc2hvd0Zvb3Rlcl09XCJ0cnVlXCJcbiAgPlxuICAgIDxkaXYgYm9keSBjbGFzcz1cIm10LTJcIj5cbiAgICAgIDx2LWZvcm1cbiAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImZvcm1WYWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgKm5nSWY9XCJzaG93U2VhcmNoRmllbGRzRm9ybSAmJiB7c2VhcmNoRmllbGQ6IHNlbGVjdGVkU2VhcmNoRmllbGQkIHwgYXN5bmN9IGFzIHNlYXJjaE9ic1wiXG4gICAgICA+XG4gICAgICAgIDx2LWlucHV0XG4gICAgICAgICAgbmFtZT1cInRpdGxlXCJcbiAgICAgICAgICBbdGl0bGVdPVwiJ3NlYXJjaEZpZWxkc092ZXJ2aWV3LnRpdGxlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICAgICAgICBbZGVmYXVsdFZhbHVlXT1cInNlYXJjaE9icy5zZWFyY2hGaWVsZD8udGl0bGVcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJvYnMuZGlzYWJsZUlucHV0XCJcbiAgICAgICAgICBbcmVxdWlyZWRdPVwiZmFsc2VcIlxuICAgICAgICAgIFtmdWxsV2lkdGhdPVwidHJ1ZVwiXG4gICAgICAgICAgW3Rvb2x0aXBdPVwiJ3NlYXJjaEZpZWxkc092ZXJ2aWV3VG9vbHRpcHMudGl0bGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgPlxuICAgICAgICA8L3YtaW5wdXQ+XG4gICAgICAgIDx2LWlucHV0XG4gICAgICAgICAgbmFtZT1cImtleVwiXG4gICAgICAgICAgW3RpdGxlXT1cIidzZWFyY2hGaWVsZHNPdmVydmlldy5rZXknIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbbWFyZ2luXT1cInRydWVcIlxuICAgICAgICAgIFtkZWZhdWx0VmFsdWVdPVwic2VhcmNoT2JzLnNlYXJjaEZpZWxkPy5rZXlcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJvYnMuZGlzYWJsZUlucHV0IHx8ICFzZWFyY2hGaWVsZEFjdGlvblR5cGVJc0FkZFwiXG4gICAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICAgIFt3aWR0aFB4XT1cIjIwMFwiXG4gICAgICAgICAgW3Rvb2x0aXBdPVwiJ3NlYXJjaEZpZWxkc092ZXJ2aWV3VG9vbHRpcHMua2V5JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgID5cbiAgICAgICAgPC92LWlucHV0PlxuICAgICAgICA8di1pbnB1dFxuICAgICAgICAgIG5hbWU9XCJwYXRoXCJcbiAgICAgICAgICBbdGl0bGVdPVwiJ3NlYXJjaEZpZWxkc092ZXJ2aWV3LnBhdGgnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbbWFyZ2luXT1cInRydWVcIlxuICAgICAgICAgIFtkZWZhdWx0VmFsdWVdPVwic2VhcmNoT2JzLnNlYXJjaEZpZWxkPy5wYXRoXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwib2JzLmRpc2FibGVJbnB1dFwiXG4gICAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICAgIFtmdWxsV2lkdGhdPVwidHJ1ZVwiXG4gICAgICAgICAgW3Rvb2x0aXBdPVwiJ3NlYXJjaEZpZWxkc092ZXJ2aWV3VG9vbHRpcHMucGF0aCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICA+XG4gICAgICAgIDwvdi1pbnB1dD5cbiAgICAgICAgPHYtc2VsZWN0XG4gICAgICAgICAgKm5nSWY9XCJkYXRhVHlwZUl0ZW1zJCB8IGFzeW5jIGFzIGRhdGFUeXBlSXRlbXNcIlxuICAgICAgICAgIFtpdGVtc109XCJkYXRhVHlwZUl0ZW1zXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3NlYXJjaEZpZWxkc092ZXJ2aWV3LnNlYXJjaEZpZWxkUGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbdGl0bGVdPVwiJ3NlYXJjaEZpZWxkc092ZXJ2aWV3LmRhdGFUeXBlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIm9icy5kaXNhYmxlSW5wdXRcIlxuICAgICAgICAgIFttYXJnaW5dPVwidHJ1ZVwiXG4gICAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICAgIG5hbWU9XCJkYXRhVHlwZVwiXG4gICAgICAgICAgW2RlZmF1bHRTZWxlY3Rpb25JZF09XCJzZWFyY2hPYnMuc2VhcmNoRmllbGQ/LmRhdGFUeXBlXCJcbiAgICAgICAgICBbd2lkdGhJblB4XT1cIjIwMFwiXG4gICAgICAgICAgW3Rvb2x0aXBdPVwiJ3NlYXJjaEZpZWxkc092ZXJ2aWV3VG9vbHRpcHMuZGF0YVR5cGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgPjwvdi1zZWxlY3Q+XG4gICAgICAgIDx2LXNlbGVjdFxuICAgICAgICAgICpuZ0lmPVwiZmllbGRUeXBlSXRlbXMkIHwgYXN5bmMgYXMgZmllbGRUeXBlSXRlbXNcIlxuICAgICAgICAgIFtpdGVtc109XCJmaWVsZFR5cGVJdGVtc1wiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidzZWFyY2hGaWVsZHNPdmVydmlldy5zZWFyY2hGaWVsZFBsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgW3RpdGxlXT1cIidzZWFyY2hGaWVsZHNPdmVydmlldy5maWVsZFR5cGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwib2JzLmRpc2FibGVJbnB1dFwiXG4gICAgICAgICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgbmFtZT1cImZpZWxkVHlwZVwiXG4gICAgICAgICAgW2RlZmF1bHRTZWxlY3Rpb25JZF09XCJzZWFyY2hPYnMuc2VhcmNoRmllbGQ/LmZpZWxkVHlwZVwiXG4gICAgICAgICAgW3dpZHRoSW5QeF09XCIyMDBcIlxuICAgICAgICAgIFt0b29sdGlwXT1cIidzZWFyY2hGaWVsZHNPdmVydmlld1Rvb2x0aXBzLmZpZWxkVHlwZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICA+PC92LXNlbGVjdD5cbiAgICAgICAgPHYtc2VsZWN0XG4gICAgICAgICAgKm5nSWY9XCJtYXRjaFR5cGVJdGVtcyQgfCBhc3luYyBhcyBtYXRjaFR5cGVJdGVtc1wiXG4gICAgICAgICAgW2l0ZW1zXT1cIm1hdGNoVHlwZUl0ZW1zXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3NlYXJjaEZpZWxkc092ZXJ2aWV3LnNlYXJjaEZpZWxkUGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbdGl0bGVdPVwiJ3NlYXJjaEZpZWxkc092ZXJ2aWV3Lm1hdGNoVHlwZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJvYnMuZGlzYWJsZUlucHV0XCJcbiAgICAgICAgICBbbWFyZ2luXT1cInRydWVcIlxuICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgICBuYW1lPVwibWF0Y2hUeXBlXCJcbiAgICAgICAgICBbZGVmYXVsdFNlbGVjdGlvbklkXT1cInNlYXJjaE9icy5zZWFyY2hGaWVsZD8ubWF0Y2hUeXBlXCJcbiAgICAgICAgICBbd2lkdGhJblB4XT1cIjIwMFwiXG4gICAgICAgICAgW3Rvb2x0aXBdPVwiJ3NlYXJjaEZpZWxkc092ZXJ2aWV3VG9vbHRpcHMubWF0Y2hUeXBlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgID48L3Ytc2VsZWN0PlxuICAgICAgPC92LWZvcm0+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBmb290ZXI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHAtMFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnV0dG9uc0Zvb3Rlck1vZGFsOyBjb250ZXh0OiB7b2JzOiBvYnN9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC92YWx0aW1vLW1vZGFsPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNidXR0b25zRm9vdGVyTW9kYWwgbGV0LW9icz1cIm9ic1wiPlxuICA8ZGl2IGNsYXNzPVwiYnV0dG9ucy1jb250YWluZXJcIiAqbmdJZj1cIntzZWFyY2hGaWVsZDogc2VsZWN0ZWRTZWFyY2hGaWVsZCQgfCBhc3luY30gYXMgc2VhcmNoT2JzXCI+XG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0LWJ1dHRvbnNcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNwYWNlIGJ0bi1zZWNvbmRhcnlcIlxuICAgICAgICAqbmdJZj1cIiFzZWFyY2hGaWVsZEFjdGlvblR5cGVJc0FkZFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJvYnMuZGlzYWJsZUlucHV0XCJcbiAgICAgICAgKGNsaWNrKT1cImRlbGV0ZVNlbGVjdGVkU2VhcmNoRmllbGQob2JzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUsIHNlYXJjaE9icy5zZWFyY2hGaWVsZClcIlxuICAgICAgPlxuICAgICAgICB7eyAnc2VhcmNoRmllbGRzT3ZlcnZpZXcuZGVsZXRlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIChjbGljayk9XCJzYXZlU2VhcmNoRmllbGQob2JzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUpXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zcGFjZSBtci0wXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIm9icy5kaXNhYmxlSW5wdXQgfHwgIW9icy52YWxpZFwiXG4gICAgICA+XG4gICAgICAgIHt7ICdzZWFyY2hGaWVsZHNPdmVydmlldy5zdWJtaXQnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2xvYWRpbmc+XG4gIDxkaXYgY2xhc3M9XCJtYi0zXCI+XG4gICAgPHZhbHRpbW8tc3Bpbm5lcj48L3ZhbHRpbW8tc3Bpbm5lcj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -68,7 +68,7 @@ export class DossierManagementListComponent {
68
68
  }
69
69
  }
70
70
  DossierManagementListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DossierManagementListComponent, deps: [{ token: i1.DocumentService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component });
71
- DossierManagementListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: DossierManagementListComponent, selector: "valtimo-dossier-management-list", ngImport: i0, template: "<!--\n ~ Copyright 2015-2020 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=\"main-content pt-0\">\n <div class=\"container-fluid\">\n <div class=\"btn-group mt-m3px mb-3 float-right\">\n <button class=\"btn btn-secondary btn-space mr-0\" (click)=\"showModal()\">\n <i class=\"icon mdi mdi-upload mr-1\"></i>\n {{ 'Upload document definition' | translate }}\n </button>\n </div>\n <div class=\"clearfix\"></div>\n <valtimo-widget>\n <valtimo-list\n [items]=\"dossiers\"\n [fields]=\"dossierFields\"\n [header]=\"true\"\n [viewMode]=\"true\"\n [isSearchable]=\"true\"\n [pagination]=\"pagination\"\n paginationIdentifier=\"dossierManagementList\"\n (paginationClicked)=\"paginationClicked($event)\"\n (paginationSet)=\"paginationSet()\"\n (rowClicked)=\"redirectToDetails($event)\"\n >\n <div header>\n <h3 class=\"list-header-title\">{{ 'Dossiers' | translate }}</h3>\n <h5 class=\"list-header-description\">{{ 'Overview of all Dossiers' | translate }}</h5>\n </div>\n </valtimo-list>\n </valtimo-widget>\n </div>\n</div>\n\n<valtimo-dossier-management-upload\n [show$]=\"showModal$\"\n (definitionUploaded)=\"paginationSet()\"\n></valtimo-dossier-management-upload>\n", styles: ["/*!\n * Copyright 2015-2020 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"], components: [{ type: i3.WidgetComponent, selector: "valtimo-widget", inputs: ["type", "name", "icon", "contrast", "divider", "title", "subtitle", "collapseAble", "collapse", "additionalClasses"] }, { type: i3.ListComponent, selector: "valtimo-list", inputs: ["items", "fields", "pagination", "viewMode", "isSearchable", "header", "actions", "paginationIdentifier", "initialSortState"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged"] }, { type: i4.DossierManagementUploadComponent, selector: "valtimo-dossier-management-upload", inputs: ["show$"], outputs: ["definitionUploaded"] }], pipes: { "translate": i5.TranslatePipe } });
71
+ DossierManagementListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: DossierManagementListComponent, selector: "valtimo-dossier-management-list", ngImport: i0, template: "<!--\n ~ Copyright 2015-2020 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=\"main-content pt-0\">\n <div class=\"container-fluid\">\n <div class=\"btn-group mt-m3px mb-3 float-right\">\n <button class=\"btn btn-secondary btn-space mr-0\" (click)=\"showModal()\">\n <i class=\"icon mdi mdi-upload mr-1\"></i>\n {{ 'Upload document definition' | translate }}\n </button>\n </div>\n <div class=\"clearfix\"></div>\n <valtimo-widget>\n <valtimo-list\n [items]=\"dossiers\"\n [fields]=\"dossierFields\"\n [header]=\"true\"\n [viewMode]=\"true\"\n [isSearchable]=\"true\"\n [pagination]=\"pagination\"\n paginationIdentifier=\"dossierManagementList\"\n (paginationClicked)=\"paginationClicked($event)\"\n (paginationSet)=\"paginationSet()\"\n (rowClicked)=\"redirectToDetails($event)\"\n >\n <div header>\n <h3 class=\"list-header-title\">{{ 'Dossiers' | translate }}</h3>\n <h5 class=\"list-header-description\">{{ 'Overview of all Dossiers' | translate }}</h5>\n </div>\n </valtimo-list>\n </valtimo-widget>\n </div>\n</div>\n\n<valtimo-dossier-management-upload\n [show$]=\"showModal$\"\n (definitionUploaded)=\"paginationSet()\"\n></valtimo-dossier-management-upload>\n", styles: ["/*!\n * Copyright 2015-2020 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"], components: [{ type: i3.WidgetComponent, selector: "valtimo-widget", inputs: ["type", "name", "icon", "contrast", "divider", "title", "subtitle", "collapseAble", "collapse", "additionalClasses"] }, { type: i3.ListComponent, selector: "valtimo-list", inputs: ["items", "fields", "pagination", "viewMode", "isSearchable", "header", "actions", "paginationIdentifier", "initialSortState", "lastColumnTemplate"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged"] }, { type: i4.DossierManagementUploadComponent, selector: "valtimo-dossier-management-upload", inputs: ["show$"], outputs: ["definitionUploaded"] }], pipes: { "translate": i5.TranslatePipe } });
72
72
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DossierManagementListComponent, decorators: [{
73
73
  type: Component,
74
74
  args: [{ selector: 'valtimo-dossier-management-list', template: "<!--\n ~ Copyright 2015-2020 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=\"main-content pt-0\">\n <div class=\"container-fluid\">\n <div class=\"btn-group mt-m3px mb-3 float-right\">\n <button class=\"btn btn-secondary btn-space mr-0\" (click)=\"showModal()\">\n <i class=\"icon mdi mdi-upload mr-1\"></i>\n {{ 'Upload document definition' | translate }}\n </button>\n </div>\n <div class=\"clearfix\"></div>\n <valtimo-widget>\n <valtimo-list\n [items]=\"dossiers\"\n [fields]=\"dossierFields\"\n [header]=\"true\"\n [viewMode]=\"true\"\n [isSearchable]=\"true\"\n [pagination]=\"pagination\"\n paginationIdentifier=\"dossierManagementList\"\n (paginationClicked)=\"paginationClicked($event)\"\n (paginationSet)=\"paginationSet()\"\n (rowClicked)=\"redirectToDetails($event)\"\n >\n <div header>\n <h3 class=\"list-header-title\">{{ 'Dossiers' | translate }}</h3>\n <h5 class=\"list-header-description\">{{ 'Overview of all Dossiers' | translate }}</h5>\n </div>\n </valtimo-list>\n </valtimo-widget>\n </div>\n</div>\n\n<valtimo-dossier-management-upload\n [show$]=\"showModal$\"\n (definitionUploaded)=\"paginationSet()\"\n></valtimo-dossier-management-upload>\n", styles: ["/*!\n * Copyright 2015-2020 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"] }]
@@ -17,7 +17,7 @@ import { CommonModule } from '@angular/common';
17
17
  import { NgModule } from '@angular/core';
18
18
  import { FormsModule } from '@angular/forms';
19
19
  import { TranslateModule } from '@ngx-translate/core';
20
- import { DropzoneModule, ListModule, ModalModule, MultiselectDropdownModule, WidgetModule, } from '@valtimo/components';
20
+ import { DropzoneModule, ListModule, ModalModule, MultiselectDropdownModule, SpinnerModule, WidgetModule, } from '@valtimo/components';
21
21
  import { ConfigModule } from '@valtimo/config';
22
22
  import { DossierManagementConnectModalComponent } from './dossier-management-connect-modal/dossier-management-connect-modal.component';
23
23
  import { DossierManagementDetailComponent } from './dossier-management-detail-container/tabs/dossier-management-detail/dossier-management-detail.component';
@@ -28,7 +28,7 @@ import { DossierManagementRemoveModalComponent } from './dossier-management-remo
28
28
  import { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';
29
29
  import { DossierManagementRolesComponent } from './dossier-management-roles/dossier-management-roles.component';
30
30
  import { DossierManagementLinkProcessComponent } from './dossier-management-link-process/dossier-management-link-process.component';
31
- import { ParagraphModule, SelectModule } from '@valtimo/user-interface';
31
+ import { ParagraphModule, SelectModule, InputModule, FormModule } from '@valtimo/user-interface';
32
32
  import { DossierManagementSearchFieldsComponent } from './dossier-management-detail-container/tabs/dossier-management-search-fields/dossier-management-search-fields.component';
33
33
  import { DossierManagementDetailContainerComponent } from './dossier-management-detail-container/dossier-management-detail-container.component';
34
34
  import * as i0 from "@angular/core";
@@ -55,7 +55,11 @@ DossierManagementModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0",
55
55
  NgbTooltipModule,
56
56
  MultiselectDropdownModule,
57
57
  ParagraphModule,
58
- SelectModule] });
58
+ SelectModule,
59
+ SpinnerModule,
60
+ InputModule,
61
+ SelectModule,
62
+ FormModule] });
59
63
  DossierManagementModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DossierManagementModule, imports: [[
60
64
  CommonModule,
61
65
  WidgetModule,
@@ -70,6 +74,10 @@ DossierManagementModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0",
70
74
  MultiselectDropdownModule,
71
75
  ParagraphModule,
72
76
  SelectModule,
77
+ SpinnerModule,
78
+ InputModule,
79
+ SelectModule,
80
+ FormModule,
73
81
  ]] });
74
82
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DossierManagementModule, decorators: [{
75
83
  type: NgModule,
@@ -83,7 +91,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
83
91
  DossierManagementRolesComponent,
84
92
  DossierManagementLinkProcessComponent,
85
93
  DossierManagementSearchFieldsComponent,
86
- DossierManagementDetailContainerComponent
94
+ DossierManagementDetailContainerComponent,
87
95
  ],
88
96
  imports: [
89
97
  CommonModule,
@@ -99,8 +107,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
99
107
  MultiselectDropdownModule,
100
108
  ParagraphModule,
101
109
  SelectModule,
110
+ SpinnerModule,
111
+ InputModule,
112
+ SelectModule,
113
+ FormModule,
102
114
  ],
103
115
  exports: [],
104
116
  }]
105
117
  }] });
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1tYW5hZ2VtZW50Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci1tYW5hZ2VtZW50L3NyYy9saWIvZG9zc2llci1tYW5hZ2VtZW50Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFDLGNBQWMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLHlCQUF5QixFQUFFLFlBQVksR0FBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RILE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsc0NBQXNDLEVBQUMsTUFBTSwrRUFBK0UsQ0FBQztBQUNySSxPQUFPLEVBQUMsZ0NBQWdDLEVBQUMsTUFBTSwwR0FBMEcsQ0FBQztBQUMxSixPQUFPLEVBQUMsOEJBQThCLEVBQUMsTUFBTSw2REFBNkQsQ0FBQztBQUMzRyxPQUFPLEVBQUMsOEJBQThCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUNuRixPQUFPLEVBQUMsZ0NBQWdDLEVBQUMsTUFBTSxpRUFBaUUsQ0FBQztBQUNqSCxPQUFPLEVBQUMscUNBQXFDLEVBQUMsTUFBTSw2RUFBNkUsQ0FBQztBQUNsSSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQUMsK0JBQStCLEVBQUMsTUFBTSwrREFBK0QsQ0FBQztBQUM5RyxPQUFPLEVBQUMscUNBQXFDLEVBQUMsTUFBTSw2RUFBNkUsQ0FBQztBQUNsSSxPQUFPLEVBQUMsZUFBZSxFQUFFLFlBQVksRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3RFLE9BQU8sRUFBQyxzQ0FBc0MsRUFBQyxNQUFNLHdIQUF3SCxDQUFDO0FBQzlLLE9BQU8sRUFBQyx5Q0FBeUMsRUFBQyxNQUFNLHFGQUFxRixDQUFDOztBQStCOUksTUFBTSxPQUFPLHVCQUF1Qjs7cUhBQXZCLHVCQUF1QjtzSEFBdkIsdUJBQXVCLGlCQTNCaEMsOEJBQThCO1FBQzlCLGdDQUFnQztRQUNoQyxzQ0FBc0M7UUFDdEMscUNBQXFDO1FBQ3JDLGdDQUFnQztRQUNoQywrQkFBK0I7UUFDL0IscUNBQXFDO1FBQ3JDLHNDQUFzQztRQUN0Qyx5Q0FBeUMsYUFHekMsWUFBWTtRQUNaLFlBQVk7UUFDWixjQUFjO1FBQ2QsVUFBVTtRQUNWLDhCQUE4QjtRQUM5QixXQUFXO1FBQ1gsZUFBZTtRQUNmLFdBQVc7UUFDWCxZQUFZO1FBQ1osZ0JBQWdCO1FBQ2hCLHlCQUF5QjtRQUN6QixlQUFlO1FBQ2YsWUFBWTtzSEFJSCx1QkFBdUIsWUFqQnpCO1lBQ1AsWUFBWTtZQUNaLFlBQVk7WUFDWixjQUFjO1lBQ2QsVUFBVTtZQUNWLDhCQUE4QjtZQUM5QixXQUFXO1lBQ1gsZUFBZTtZQUNmLFdBQVc7WUFDWCxZQUFZO1lBQ1osZ0JBQWdCO1lBQ2hCLHlCQUF5QjtZQUN6QixlQUFlO1lBQ2YsWUFBWTtTQUNiOzRGQUdVLHVCQUF1QjtrQkE3Qm5DLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLDhCQUE4Qjt3QkFDOUIsZ0NBQWdDO3dCQUNoQyxzQ0FBc0M7d0JBQ3RDLHFDQUFxQzt3QkFDckMsZ0NBQWdDO3dCQUNoQywrQkFBK0I7d0JBQy9CLHFDQUFxQzt3QkFDckMsc0NBQXNDO3dCQUN0Qyx5Q0FBeUM7cUJBQzFDO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxVQUFVO3dCQUNWLDhCQUE4Qjt3QkFDOUIsV0FBVzt3QkFDWCxlQUFlO3dCQUNmLFdBQVc7d0JBQ1gsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLHlCQUF5Qjt3QkFDekIsZUFBZTt3QkFDZixZQUFZO3FCQUNiO29CQUNELE9BQU8sRUFBRSxFQUFFO2lCQUNaIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjAgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7RHJvcHpvbmVNb2R1bGUsIExpc3RNb2R1bGUsIE1vZGFsTW9kdWxlLCBNdWx0aXNlbGVjdERyb3Bkb3duTW9kdWxlLCBXaWRnZXRNb2R1bGUsfSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7Q29uZmlnTW9kdWxlfSBmcm9tICdAdmFsdGltby9jb25maWcnO1xuaW1wb3J0IHtEb3NzaWVyTWFuYWdlbWVudENvbm5lY3RNb2RhbENvbXBvbmVudH0gZnJvbSAnLi9kb3NzaWVyLW1hbmFnZW1lbnQtY29ubmVjdC1tb2RhbC9kb3NzaWVyLW1hbmFnZW1lbnQtY29ubmVjdC1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHtEb3NzaWVyTWFuYWdlbWVudERldGFpbENvbXBvbmVudH0gZnJvbSAnLi9kb3NzaWVyLW1hbmFnZW1lbnQtZGV0YWlsLWNvbnRhaW5lci90YWJzL2Rvc3NpZXItbWFuYWdlbWVudC1kZXRhaWwvZG9zc2llci1tYW5hZ2VtZW50LWRldGFpbC5jb21wb25lbnQnO1xuaW1wb3J0IHtEb3NzaWVyTWFuYWdlbWVudExpc3RDb21wb25lbnR9IGZyb20gJy4vZG9zc2llci1tYW5hZ2VtZW50LWxpc3QvZG9zc2llci1tYW5hZ2VtZW50LWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7RG9zc2llck1hbmFnZW1lbnRSb3V0aW5nTW9kdWxlfSBmcm9tICcuL2Rvc3NpZXItbWFuYWdlbWVudC1yb3V0aW5nLm1vZHVsZSc7XG5pbXBvcnQge0Rvc3NpZXJNYW5hZ2VtZW50VXBsb2FkQ29tcG9uZW50fSBmcm9tICcuL2Rvc3NpZXItbWFuYWdlbWVudC11cGxvYWQvZG9zc2llci1tYW5hZ2VtZW50LXVwbG9hZC5jb21wb25lbnQnO1xuaW1wb3J0IHtEb3NzaWVyTWFuYWdlbWVudFJlbW92ZU1vZGFsQ29tcG9uZW50fSBmcm9tICcuL2Rvc3NpZXItbWFuYWdlbWVudC1yZW1vdmUtbW9kYWwvZG9zc2llci1tYW5hZ2VtZW50LXJlbW92ZS1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHtOZ2JUb29sdGlwTW9kdWxlfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQge0Rvc3NpZXJNYW5hZ2VtZW50Um9sZXNDb21wb25lbnR9IGZyb20gJy4vZG9zc2llci1tYW5hZ2VtZW50LXJvbGVzL2Rvc3NpZXItbWFuYWdlbWVudC1yb2xlcy5jb21wb25lbnQnO1xuaW1wb3J0IHtEb3NzaWVyTWFuYWdlbWVudExpbmtQcm9jZXNzQ29tcG9uZW50fSBmcm9tICcuL2Rvc3NpZXItbWFuYWdlbWVudC1saW5rLXByb2Nlc3MvZG9zc2llci1tYW5hZ2VtZW50LWxpbmstcHJvY2Vzcy5jb21wb25lbnQnO1xuaW1wb3J0IHtQYXJhZ3JhcGhNb2R1bGUsIFNlbGVjdE1vZHVsZX0gZnJvbSAnQHZhbHRpbW8vdXNlci1pbnRlcmZhY2UnO1xuaW1wb3J0IHtEb3NzaWVyTWFuYWdlbWVudFNlYXJjaEZpZWxkc0NvbXBvbmVudH0gZnJvbSAnLi9kb3NzaWVyLW1hbmFnZW1lbnQtZGV0YWlsLWNvbnRhaW5lci90YWJzL2Rvc3NpZXItbWFuYWdlbWVudC1zZWFyY2gtZmllbGRzL2Rvc3NpZXItbWFuYWdlbWVudC1zZWFyY2gtZmllbGRzLmNvbXBvbmVudCc7XG5pbXBvcnQge0Rvc3NpZXJNYW5hZ2VtZW50RGV0YWlsQ29udGFpbmVyQ29tcG9uZW50fSBmcm9tICcuL2Rvc3NpZXItbWFuYWdlbWVudC1kZXRhaWwtY29udGFpbmVyL2Rvc3NpZXItbWFuYWdlbWVudC1kZXRhaWwtY29udGFpbmVyLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIERvc3NpZXJNYW5hZ2VtZW50TGlzdENvbXBvbmVudCxcbiAgICBEb3NzaWVyTWFuYWdlbWVudERldGFpbENvbXBvbmVudCxcbiAgICBEb3NzaWVyTWFuYWdlbWVudENvbm5lY3RNb2RhbENvbXBvbmVudCxcbiAgICBEb3NzaWVyTWFuYWdlbWVudFJlbW92ZU1vZGFsQ29tcG9uZW50LFxuICAgIERvc3NpZXJNYW5hZ2VtZW50VXBsb2FkQ29tcG9uZW50LFxuICAgIERvc3NpZXJNYW5hZ2VtZW50Um9sZXNDb21wb25lbnQsXG4gICAgRG9zc2llck1hbmFnZW1lbnRMaW5rUHJvY2Vzc0NvbXBvbmVudCxcbiAgICBEb3NzaWVyTWFuYWdlbWVudFNlYXJjaEZpZWxkc0NvbXBvbmVudCxcbiAgICBEb3NzaWVyTWFuYWdlbWVudERldGFpbENvbnRhaW5lckNvbXBvbmVudFxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFdpZGdldE1vZHVsZSxcbiAgICBEcm9wem9uZU1vZHVsZSxcbiAgICBMaXN0TW9kdWxlLFxuICAgIERvc3NpZXJNYW5hZ2VtZW50Um91dGluZ01vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgTW9kYWxNb2R1bGUsXG4gICAgQ29uZmlnTW9kdWxlLFxuICAgIE5nYlRvb2x0aXBNb2R1bGUsXG4gICAgTXVsdGlzZWxlY3REcm9wZG93bk1vZHVsZSxcbiAgICBQYXJhZ3JhcGhNb2R1bGUsXG4gICAgU2VsZWN0TW9kdWxlLFxuICBdLFxuICBleHBvcnRzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgRG9zc2llck1hbmFnZW1lbnRNb2R1bGUge31cbiJdfQ==
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1tYW5hZ2VtZW50Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci1tYW5hZ2VtZW50L3NyYy9saWIvZG9zc2llci1tYW5hZ2VtZW50Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUNMLGNBQWMsRUFDZCxVQUFVLEVBQ1YsV0FBVyxFQUNYLHlCQUF5QixFQUN6QixhQUFhLEVBQ2IsWUFBWSxHQUNiLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxzQ0FBc0MsRUFBQyxNQUFNLCtFQUErRSxDQUFDO0FBQ3JJLE9BQU8sRUFBQyxnQ0FBZ0MsRUFBQyxNQUFNLDBHQUEwRyxDQUFDO0FBQzFKLE9BQU8sRUFBQyw4QkFBOEIsRUFBQyxNQUFNLDZEQUE2RCxDQUFDO0FBQzNHLE9BQU8sRUFBQyw4QkFBOEIsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ25GLE9BQU8sRUFBQyxnQ0FBZ0MsRUFBQyxNQUFNLGlFQUFpRSxDQUFDO0FBQ2pILE9BQU8sRUFBQyxxQ0FBcUMsRUFBQyxNQUFNLDZFQUE2RSxDQUFDO0FBQ2xJLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBQywrQkFBK0IsRUFBQyxNQUFNLCtEQUErRCxDQUFDO0FBQzlHLE9BQU8sRUFBQyxxQ0FBcUMsRUFBQyxNQUFNLDZFQUE2RSxDQUFDO0FBQ2xJLE9BQU8sRUFBQyxlQUFlLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRixPQUFPLEVBQUMsc0NBQXNDLEVBQUMsTUFBTSx3SEFBd0gsQ0FBQztBQUM5SyxPQUFPLEVBQUMseUNBQXlDLEVBQUMsTUFBTSxxRkFBcUYsQ0FBQzs7QUFtQzlJLE1BQU0sT0FBTyx1QkFBdUI7O3FIQUF2Qix1QkFBdUI7c0hBQXZCLHVCQUF1QixpQkEvQmhDLDhCQUE4QjtRQUM5QixnQ0FBZ0M7UUFDaEMsc0NBQXNDO1FBQ3RDLHFDQUFxQztRQUNyQyxnQ0FBZ0M7UUFDaEMsK0JBQStCO1FBQy9CLHFDQUFxQztRQUNyQyxzQ0FBc0M7UUFDdEMseUNBQXlDLGFBR3pDLFlBQVk7UUFDWixZQUFZO1FBQ1osY0FBYztRQUNkLFVBQVU7UUFDViw4QkFBOEI7UUFDOUIsV0FBVztRQUNYLGVBQWU7UUFDZixXQUFXO1FBQ1gsWUFBWTtRQUNaLGdCQUFnQjtRQUNoQix5QkFBeUI7UUFDekIsZUFBZTtRQUNmLFlBQVk7UUFDWixhQUFhO1FBQ2IsV0FBVztRQUNYLFlBQVk7UUFDWixVQUFVO3NIQUlELHVCQUF1QixZQXJCekI7WUFDUCxZQUFZO1lBQ1osWUFBWTtZQUNaLGNBQWM7WUFDZCxVQUFVO1lBQ1YsOEJBQThCO1lBQzlCLFdBQVc7WUFDWCxlQUFlO1lBQ2YsV0FBVztZQUNYLFlBQVk7WUFDWixnQkFBZ0I7WUFDaEIseUJBQXlCO1lBQ3pCLGVBQWU7WUFDZixZQUFZO1lBQ1osYUFBYTtZQUNiLFdBQVc7WUFDWCxZQUFZO1lBQ1osVUFBVTtTQUNYOzRGQUdVLHVCQUF1QjtrQkFqQ25DLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLDhCQUE4Qjt3QkFDOUIsZ0NBQWdDO3dCQUNoQyxzQ0FBc0M7d0JBQ3RDLHFDQUFxQzt3QkFDckMsZ0NBQWdDO3dCQUNoQywrQkFBK0I7d0JBQy9CLHFDQUFxQzt3QkFDckMsc0NBQXNDO3dCQUN0Qyx5Q0FBeUM7cUJBQzFDO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxVQUFVO3dCQUNWLDhCQUE4Qjt3QkFDOUIsV0FBVzt3QkFDWCxlQUFlO3dCQUNmLFdBQVc7d0JBQ1gsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLHlCQUF5Qjt3QkFDekIsZUFBZTt3QkFDZixZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsV0FBVzt3QkFDWCxZQUFZO3dCQUNaLFVBQVU7cUJBQ1g7b0JBQ0QsT0FBTyxFQUFFLEVBQUU7aUJBQ1oiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgRHJvcHpvbmVNb2R1bGUsXG4gIExpc3RNb2R1bGUsXG4gIE1vZGFsTW9kdWxlLFxuICBNdWx0aXNlbGVjdERyb3Bkb3duTW9kdWxlLFxuICBTcGlubmVyTW9kdWxlLFxuICBXaWRnZXRNb2R1bGUsXG59IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtDb25maWdNb2R1bGV9IGZyb20gJ0B2YWx0aW1vL2NvbmZpZyc7XG5pbXBvcnQge0Rvc3NpZXJNYW5hZ2VtZW50Q29ubmVjdE1vZGFsQ29tcG9uZW50fSBmcm9tICcuL2Rvc3NpZXItbWFuYWdlbWVudC1jb25uZWN0LW1vZGFsL2Rvc3NpZXItbWFuYWdlbWVudC1jb25uZWN0LW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQge0Rvc3NpZXJNYW5hZ2VtZW50RGV0YWlsQ29tcG9uZW50fSBmcm9tICcuL2Rvc3NpZXItbWFuYWdlbWVudC1kZXRhaWwtY29udGFpbmVyL3RhYnMvZG9zc2llci1tYW5hZ2VtZW50LWRldGFpbC9kb3NzaWVyLW1hbmFnZW1lbnQtZGV0YWlsLmNvbXBvbmVudCc7XG5pbXBvcnQge0Rvc3NpZXJNYW5hZ2VtZW50TGlzdENvbXBvbmVudH0gZnJvbSAnLi9kb3NzaWVyLW1hbmFnZW1lbnQtbGlzdC9kb3NzaWVyLW1hbmFnZW1lbnQtbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHtEb3NzaWVyTWFuYWdlbWVudFJvdXRpbmdNb2R1bGV9IGZyb20gJy4vZG9zc2llci1tYW5hZ2VtZW50LXJvdXRpbmcubW9kdWxlJztcbmltcG9ydCB7RG9zc2llck1hbmFnZW1lbnRVcGxvYWRDb21wb25lbnR9IGZyb20gJy4vZG9zc2llci1tYW5hZ2VtZW50LXVwbG9hZC9kb3NzaWVyLW1hbmFnZW1lbnQtdXBsb2FkLmNvbXBvbmVudCc7XG5pbXBvcnQge0Rvc3NpZXJNYW5hZ2VtZW50UmVtb3ZlTW9kYWxDb21wb25lbnR9IGZyb20gJy4vZG9zc2llci1tYW5hZ2VtZW50LXJlbW92ZS1tb2RhbC9kb3NzaWVyLW1hbmFnZW1lbnQtcmVtb3ZlLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQge05nYlRvb2x0aXBNb2R1bGV9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7RG9zc2llck1hbmFnZW1lbnRSb2xlc0NvbXBvbmVudH0gZnJvbSAnLi9kb3NzaWVyLW1hbmFnZW1lbnQtcm9sZXMvZG9zc2llci1tYW5hZ2VtZW50LXJvbGVzLmNvbXBvbmVudCc7XG5pbXBvcnQge0Rvc3NpZXJNYW5hZ2VtZW50TGlua1Byb2Nlc3NDb21wb25lbnR9IGZyb20gJy4vZG9zc2llci1tYW5hZ2VtZW50LWxpbmstcHJvY2Vzcy9kb3NzaWVyLW1hbmFnZW1lbnQtbGluay1wcm9jZXNzLmNvbXBvbmVudCc7XG5pbXBvcnQge1BhcmFncmFwaE1vZHVsZSwgU2VsZWN0TW9kdWxlLCBJbnB1dE1vZHVsZSwgRm9ybU1vZHVsZX0gZnJvbSAnQHZhbHRpbW8vdXNlci1pbnRlcmZhY2UnO1xuaW1wb3J0IHtEb3NzaWVyTWFuYWdlbWVudFNlYXJjaEZpZWxkc0NvbXBvbmVudH0gZnJvbSAnLi9kb3NzaWVyLW1hbmFnZW1lbnQtZGV0YWlsLWNvbnRhaW5lci90YWJzL2Rvc3NpZXItbWFuYWdlbWVudC1zZWFyY2gtZmllbGRzL2Rvc3NpZXItbWFuYWdlbWVudC1zZWFyY2gtZmllbGRzLmNvbXBvbmVudCc7XG5pbXBvcnQge0Rvc3NpZXJNYW5hZ2VtZW50RGV0YWlsQ29udGFpbmVyQ29tcG9uZW50fSBmcm9tICcuL2Rvc3NpZXItbWFuYWdlbWVudC1kZXRhaWwtY29udGFpbmVyL2Rvc3NpZXItbWFuYWdlbWVudC1kZXRhaWwtY29udGFpbmVyLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIERvc3NpZXJNYW5hZ2VtZW50TGlzdENvbXBvbmVudCxcbiAgICBEb3NzaWVyTWFuYWdlbWVudERldGFpbENvbXBvbmVudCxcbiAgICBEb3NzaWVyTWFuYWdlbWVudENvbm5lY3RNb2RhbENvbXBvbmVudCxcbiAgICBEb3NzaWVyTWFuYWdlbWVudFJlbW92ZU1vZGFsQ29tcG9uZW50LFxuICAgIERvc3NpZXJNYW5hZ2VtZW50VXBsb2FkQ29tcG9uZW50LFxuICAgIERvc3NpZXJNYW5hZ2VtZW50Um9sZXNDb21wb25lbnQsXG4gICAgRG9zc2llck1hbmFnZW1lbnRMaW5rUHJvY2Vzc0NvbXBvbmVudCxcbiAgICBEb3NzaWVyTWFuYWdlbWVudFNlYXJjaEZpZWxkc0NvbXBvbmVudCxcbiAgICBEb3NzaWVyTWFuYWdlbWVudERldGFpbENvbnRhaW5lckNvbXBvbmVudCxcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBXaWRnZXRNb2R1bGUsXG4gICAgRHJvcHpvbmVNb2R1bGUsXG4gICAgTGlzdE1vZHVsZSxcbiAgICBEb3NzaWVyTWFuYWdlbWVudFJvdXRpbmdNb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIE1vZGFsTW9kdWxlLFxuICAgIENvbmZpZ01vZHVsZSxcbiAgICBOZ2JUb29sdGlwTW9kdWxlLFxuICAgIE11bHRpc2VsZWN0RHJvcGRvd25Nb2R1bGUsXG4gICAgUGFyYWdyYXBoTW9kdWxlLFxuICAgIFNlbGVjdE1vZHVsZSxcbiAgICBTcGlubmVyTW9kdWxlLFxuICAgIElucHV0TW9kdWxlLFxuICAgIFNlbGVjdE1vZHVsZSxcbiAgICBGb3JtTW9kdWxlLFxuICBdLFxuICBleHBvcnRzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgRG9zc2llck1hbmFnZW1lbnRNb2R1bGUge31cbiJdfQ==