@hmcts/ccd-case-ui-toolkit 5.0.24-case-file-view-document-count-v3 → 5.0.24-case-file-view-search-document-exceptions

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 (31) hide show
  1. package/bundles/hmcts-ccd-case-ui-toolkit.umd.js +4032 -4004
  2. package/bundles/hmcts-ccd-case-ui-toolkit.umd.js.map +1 -1
  3. package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js +1 -1
  4. package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js.map +1 -1
  5. package/esm2015/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.js +12 -14
  6. package/esm2015/lib/shared/components/palette/case-file-view/case-file-view-field.component.js +4 -4
  7. package/esm2015/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder.component.js +118 -235
  8. package/esm2015/lib/shared/components/palette/case-file-view/test-data/categories-and-documents-test-data.js +178 -0
  9. package/esm2015/lib/shared/components/palette/utils/is-compound.pipe.js +2 -2
  10. package/esm2015/lib/shared/components/search-result/search-result.component.js +10 -12
  11. package/esm2015/lib/shared/domain/case-file-view/document-tree-node.model.js +6 -0
  12. package/esm2015/lib/shared/domain/case-file-view/index.js +2 -2
  13. package/esm2015/public-api.js +1 -3
  14. package/fesm2015/hmcts-ccd-case-ui-toolkit.js +2122 -2090
  15. package/fesm2015/hmcts-ccd-case-ui-toolkit.js.map +1 -1
  16. package/lib/shared/components/palette/case-file-view/case-file-view-field.component.d.ts +1 -1
  17. package/lib/shared/components/palette/case-file-view/case-file-view-field.component.d.ts.map +1 -1
  18. package/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder.component.d.ts +8 -1
  19. package/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder.component.d.ts.map +1 -1
  20. package/lib/shared/components/palette/case-file-view/test-data/categories-and-documents-test-data.d.ts +3 -0
  21. package/lib/shared/components/palette/case-file-view/test-data/categories-and-documents-test-data.d.ts.map +1 -0
  22. package/lib/shared/domain/case-file-view/document-tree-node.model.d.ts +11 -0
  23. package/lib/shared/domain/case-file-view/document-tree-node.model.d.ts.map +1 -0
  24. package/lib/shared/domain/case-file-view/index.d.ts +1 -1
  25. package/lib/shared/domain/case-file-view/index.d.ts.map +1 -1
  26. package/package.json +1 -1
  27. package/public-api.d.ts +0 -2
  28. package/public-api.d.ts.map +1 -1
  29. package/esm2015/lib/shared/domain/case-file-view/document-tree-node/document-tree-node.model.js +0 -28
  30. package/lib/shared/domain/case-file-view/document-tree-node/document-tree-node.model.d.ts +0 -7
  31. package/lib/shared/domain/case-file-view/document-tree-node/document-tree-node.model.d.ts.map +0 -1
@@ -1,53 +1,77 @@
1
1
  import { NestedTreeControl } from '@angular/cdk/tree';
2
2
  import { Component, Input } from '@angular/core';
3
+ import { FormControl, FormGroup } from '@angular/forms';
3
4
  import { Observable, of } from 'rxjs';
4
- import { DocumentTreeNode } from '../../../../../domain/case-file-view';
5
+ import { switchMap } from 'rxjs/operators';
6
+ import { DocumentTreeNodeType } from '../../../../../domain/case-file-view';
7
+ import { categoriesAndDocuments } from '../../test-data/categories-and-documents-test-data';
5
8
  import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/cdk/tree";
7
- function CaseFileViewFolderComponent_cdk_nested_tree_node_6_Template(rf, ctx) { if (rf & 1) {
8
- i0.ɵɵelementStart(0, "cdk-nested-tree-node", 7);
9
- i0.ɵɵelementStart(1, "div", 8);
10
- i0.ɵɵelementStart(2, "button", 9);
11
- i0.ɵɵelement(3, "img", 10);
9
+ import * as i1 from "@angular/forms";
10
+ import * as i2 from "@angular/common";
11
+ import * as i3 from "@angular/cdk/tree";
12
+ function CaseFileViewFolderComponent_div_5_div_1_Template(rf, ctx) { if (rf & 1) {
13
+ i0.ɵɵelementStart(0, "div");
14
+ i0.ɵɵtext(1, " No results found ");
12
15
  i0.ɵɵelementEnd();
13
- i0.ɵɵelementStart(4, "span", 11);
14
- i0.ɵɵtext(5);
16
+ } }
17
+ function CaseFileViewFolderComponent_div_5_cdk_nested_tree_node_3_Template(rf, ctx) { if (rf & 1) {
18
+ i0.ɵɵelementStart(0, "cdk-nested-tree-node", 10);
19
+ i0.ɵɵelementStart(1, "div", 11);
20
+ i0.ɵɵelement(2, "button", 12);
21
+ i0.ɵɵelementStart(3, "span", 13);
22
+ i0.ɵɵtext(4);
15
23
  i0.ɵɵelementEnd();
16
24
  i0.ɵɵelementEnd();
17
25
  i0.ɵɵelementEnd();
18
26
  } if (rf & 2) {
19
- const node_r2 = ctx.$implicit;
20
- i0.ɵɵadvance(5);
21
- i0.ɵɵtextInterpolate(node_r2.name);
27
+ const node_r4 = ctx.$implicit;
28
+ i0.ɵɵadvance(4);
29
+ i0.ɵɵtextInterpolate(node_r4.name);
22
30
  } }
23
- function CaseFileViewFolderComponent_cdk_nested_tree_node_7_Template(rf, ctx) { if (rf & 1) {
24
- i0.ɵɵelementStart(0, "cdk-nested-tree-node", 7);
25
- i0.ɵɵelementStart(1, "div", 12);
26
- i0.ɵɵelementStart(2, "button", 13);
27
- i0.ɵɵelement(3, "img", 14);
28
- i0.ɵɵelementStart(4, "span", 15);
29
- i0.ɵɵtext(5);
31
+ function CaseFileViewFolderComponent_div_5_cdk_nested_tree_node_4_Template(rf, ctx) { if (rf & 1) {
32
+ i0.ɵɵelementStart(0, "cdk-nested-tree-node", 10);
33
+ i0.ɵɵelementStart(1, "div", 11);
34
+ i0.ɵɵelementStart(2, "button", 14);
35
+ i0.ɵɵelementStart(3, "span", 15);
36
+ i0.ɵɵtext(4);
30
37
  i0.ɵɵelementEnd();
31
38
  i0.ɵɵelementEnd();
32
- i0.ɵɵelementStart(6, "span", 16);
33
- i0.ɵɵtext(7);
39
+ i0.ɵɵelementStart(5, "span", 16);
40
+ i0.ɵɵtext(6);
34
41
  i0.ɵɵelementEnd();
35
42
  i0.ɵɵelementEnd();
36
- i0.ɵɵelementStart(8, "div");
37
- i0.ɵɵelementContainer(9, 17);
43
+ i0.ɵɵelementStart(7, "div");
44
+ i0.ɵɵelementContainer(8, 17);
38
45
  i0.ɵɵelementEnd();
39
46
  i0.ɵɵelementEnd();
40
47
  } if (rf & 2) {
41
- const node_r3 = ctx.$implicit;
42
- const ctx_r1 = i0.ɵɵnextContext();
48
+ const node_r5 = ctx.$implicit;
49
+ const ctx_r3 = i0.ɵɵnextContext(2);
50
+ i0.ɵɵadvance(2);
51
+ i0.ɵɵattribute("aria-label", "toggle " + node_r5.name);
43
52
  i0.ɵɵadvance(2);
44
- i0.ɵɵattribute("aria-label", "toggle " + node_r3.name);
45
- i0.ɵɵadvance(3);
46
- i0.ɵɵtextInterpolate(node_r3.childDocumentCount);
53
+ i0.ɵɵtextInterpolate(node_r5.count);
47
54
  i0.ɵɵadvance(2);
48
- i0.ɵɵtextInterpolate(node_r3.name);
55
+ i0.ɵɵtextInterpolate(node_r5.name);
49
56
  i0.ɵɵadvance(1);
50
- i0.ɵɵclassProp("document-tree-invisible", !ctx_r1.nestedTreeControl.isExpanded(node_r3));
57
+ i0.ɵɵclassProp("document-tree-invisible", !ctx_r3.nestedTreeControl.isExpanded(node_r5));
58
+ } }
59
+ function CaseFileViewFolderComponent_div_5_Template(rf, ctx) { if (rf & 1) {
60
+ i0.ɵɵelementStart(0, "div", 5);
61
+ i0.ɵɵtemplate(1, CaseFileViewFolderComponent_div_5_div_1_Template, 2, 0, "div", 6);
62
+ i0.ɵɵelementStart(2, "cdk-tree", 7);
63
+ i0.ɵɵtemplate(3, CaseFileViewFolderComponent_div_5_cdk_nested_tree_node_3_Template, 5, 1, "cdk-nested-tree-node", 8);
64
+ i0.ɵɵtemplate(4, CaseFileViewFolderComponent_div_5_cdk_nested_tree_node_4_Template, 9, 5, "cdk-nested-tree-node", 9);
65
+ i0.ɵɵelementEnd();
66
+ i0.ɵɵelementEnd();
67
+ } if (rf & 2) {
68
+ const ctx_r0 = i0.ɵɵnextContext();
69
+ i0.ɵɵadvance(1);
70
+ i0.ɵɵproperty("ngIf", !ctx_r0.nestedDataSource || ctx_r0.nestedDataSource.length === 0);
71
+ i0.ɵɵadvance(1);
72
+ i0.ɵɵproperty("dataSource", ctx_r0.nestedDataSource)("treeControl", ctx_r0.nestedTreeControl);
73
+ i0.ɵɵadvance(2);
74
+ i0.ɵɵproperty("cdkTreeNodeDefWhen", ctx_r0.nestedChildren);
51
75
  } }
52
76
  export class CaseFileViewFolderComponent {
53
77
  constructor() {
@@ -57,243 +81,102 @@ export class CaseFileViewFolderComponent {
57
81
  this.nestedTreeControl = new NestedTreeControl(this.getChildren);
58
82
  }
59
83
  ngOnInit() {
60
- this.categoriesAndDocumentsSubscription = this.categoriesAndDocuments.subscribe(categoriesAndDocuments => {
84
+ this.documentFilterFormGroup = new FormGroup({});
85
+ this.documentSearchFormControl = new FormControl('');
86
+ this.documentFilterFormGroup.addControl(CaseFileViewFolderComponent.DOCUMENT_SEARCH_FORM_CONTROL_NAME, this.documentSearchFormControl);
87
+ // Listen to search input and initiate filter documents if at least three characters entered
88
+ this.documentFilterSubscription = this.documentSearchFormControl.valueChanges.pipe(switchMap((searchTerm) => this.filter(searchTerm.toLowerCase(), this.documentTreeData))).subscribe(documentTreeData => {
89
+ this.nestedDataSource = documentTreeData;
90
+ });
91
+ // Subscribe to the input categories and documents, and generate tree data and initialise cdk tree
92
+ this.categoriesAndDocumentsSubscription = this.categoriesAndDocuments.subscribe(categoriesAndDocumentsResult => {
61
93
  // Using the mock data for now as we have to display the documents as well for demo purpose
62
- const categories = this.loadCategories(); // categoriesAndDocuments.categories;
94
+ const categories = categoriesAndDocuments.categories; // categoriesAndDocuments.categories;
63
95
  // Generate document tree data from categories
64
- const treeData = this.generateTreeData(categories);
96
+ this.documentTreeData = this.generateTreeData(categories);
65
97
  // Append uncategorised documents
66
- if (categoriesAndDocuments.uncategorised_documents && categoriesAndDocuments.uncategorised_documents.length > 0) {
67
- const uncategorisedDocuments = this.getUncategorisedDocuments(categoriesAndDocuments.uncategorised_documents);
68
- treeData.push(uncategorisedDocuments);
98
+ if (categoriesAndDocumentsResult.uncategorised_documents && categoriesAndDocumentsResult.uncategorised_documents.length > 0) {
99
+ const uncategorisedDocuments = this.getUncategorisedDocuments(categoriesAndDocumentsResult.uncategorised_documents);
100
+ this.documentTreeData.push(uncategorisedDocuments);
69
101
  }
70
102
  // Initialise cdk tree with generated data
71
- this.nestedDataSource = treeData;
103
+ this.nestedDataSource = this.documentTreeData;
72
104
  });
73
105
  }
74
106
  generateTreeData(categories) {
75
- return categories.reduce((tree, node) => {
76
- const newDocumentTreeNode = new DocumentTreeNode();
77
- newDocumentTreeNode.name = node.category_name;
78
- newDocumentTreeNode.type = 'category';
79
- newDocumentTreeNode.children = [...this.generateTreeData(node.sub_categories), ...this.getDocuments(node.documents)];
80
- return [
81
- ...tree,
82
- newDocumentTreeNode,
83
- ];
84
- }, []);
107
+ return categories.reduce((tree, node) => [
108
+ ...tree,
109
+ ...[
110
+ {
111
+ name: node.category_name,
112
+ type: DocumentTreeNodeType.FOLDER,
113
+ children: [...this.generateTreeData(node.sub_categories), ...this.getDocuments(node.documents)]
114
+ },
115
+ ],
116
+ ], []);
85
117
  }
86
118
  getDocuments(documents) {
87
119
  const documentsToReturn = [];
88
120
  documents.forEach(document => {
89
- const documentTreeNode = new DocumentTreeNode();
90
- documentTreeNode.name = document.document_filename;
91
- documentTreeNode.type = 'document';
92
- documentsToReturn.push(documentTreeNode);
121
+ documentsToReturn.push({ name: document.document_filename, type: DocumentTreeNodeType.DOCUMENT });
93
122
  });
94
123
  return documentsToReturn;
95
124
  }
96
125
  getUncategorisedDocuments(uncategorisedDocuments) {
97
126
  const documents = [];
98
127
  uncategorisedDocuments.forEach(document => {
99
- const documentTreeNode = new DocumentTreeNode();
100
- documentTreeNode.name = document.document_filename;
101
- documentTreeNode.type = 'document';
102
- documents.push(documentTreeNode);
128
+ documents.push({ name: document.document_filename, type: DocumentTreeNodeType.DOCUMENT });
103
129
  });
104
- const uncategorisedNode = new DocumentTreeNode();
105
- uncategorisedNode.name = CaseFileViewFolderComponent.UNCATEGORISED_DOCUMENTS_TITLE;
106
- uncategorisedNode.type = 'category';
107
- uncategorisedNode.children = documents;
108
- return uncategorisedNode;
130
+ return { name: CaseFileViewFolderComponent.UNCATEGORISED_DOCUMENTS_TITLE, type: DocumentTreeNodeType.FOLDER, children: documents };
131
+ }
132
+ filter(searchTerm, documentTreeData) {
133
+ // Make a copy of the data so we do not mutate the original
134
+ function copy(node) {
135
+ return Object.assign({}, node);
136
+ }
137
+ let filteredData = documentTreeData;
138
+ if (searchTerm && searchTerm.length > 2 && this.documentFilterFormGroup.controls[CaseFileViewFolderComponent.DOCUMENT_SEARCH_FORM_CONTROL_NAME].value.length > 2) {
139
+ filteredData = documentTreeData.map(copy).filter(function filterTreeData(node) {
140
+ if (node.name && node.name.toLowerCase().includes(searchTerm) && node.type === DocumentTreeNodeType.DOCUMENT) {
141
+ return true;
142
+ }
143
+ // Call recursively if node has children
144
+ if (node.children) {
145
+ return (node.children = node.children.map(copy).filter(filterTreeData)).length;
146
+ }
147
+ });
148
+ }
149
+ return of(filteredData);
109
150
  }
110
151
  ngOnDestroy() {
111
152
  if (this.categoriesAndDocumentsSubscription) {
112
153
  this.categoriesAndDocumentsSubscription.unsubscribe();
113
154
  }
114
- }
115
- loadCategories() {
116
- return [
117
- {
118
- category_id: 'Beers',
119
- category_name: 'Beers',
120
- category_order: 1,
121
- documents: [
122
- {
123
- document_url: '/test',
124
- document_filename: 'Beers encyclopedia',
125
- document_binary_url: '/test/binary',
126
- attribute_path: '',
127
- upload_timestamp: ''
128
- }
129
- ],
130
- sub_categories: [
131
- {
132
- category_id: 'BeersBitters',
133
- category_name: 'Bitters',
134
- category_order: 1,
135
- documents: [],
136
- sub_categories: []
137
- },
138
- {
139
- category_id: 'BeersAmerican',
140
- category_name: 'American',
141
- category_order: 2,
142
- documents: [],
143
- sub_categories: []
144
- },
145
- {
146
- category_id: 'BeersAsian',
147
- category_name: 'Asian',
148
- category_order: 3,
149
- documents: [],
150
- sub_categories: []
151
- }
152
- ]
153
- },
154
- {
155
- category_id: 'Wines',
156
- category_name: 'Wines',
157
- category_order: 2,
158
- documents: [],
159
- sub_categories: [
160
- {
161
- category_id: 'WinesFrench',
162
- category_name: 'French',
163
- category_order: 1,
164
- documents: [],
165
- sub_categories: []
166
- },
167
- {
168
- category_id: 'WinesItalian',
169
- category_name: 'Italian',
170
- category_order: 2,
171
- documents: [],
172
- sub_categories: []
173
- }
174
- ]
175
- },
176
- {
177
- category_id: 'Spirits',
178
- category_name: 'Spirits',
179
- category_order: 3,
180
- documents: [],
181
- sub_categories: [
182
- {
183
- category_id: 'SpiritsWhisky',
184
- category_name: 'Scotch whisky',
185
- category_order: 1,
186
- documents: [],
187
- sub_categories: [
188
- {
189
- category_id: 'WhiskyHighland',
190
- category_name: 'Highland',
191
- category_order: 1,
192
- documents: [],
193
- sub_categories: [
194
- {
195
- category_id: 'WhiskyHighland1',
196
- category_name: 'Highland 1',
197
- category_order: 1,
198
- documents: [],
199
- sub_categories: []
200
- }
201
- ]
202
- },
203
- {
204
- category_id: 'WhiskyLowland',
205
- category_name: 'Lowland',
206
- category_order: 2,
207
- documents: [],
208
- sub_categories: [
209
- {
210
- category_id: 'WhiskyLowland1',
211
- category_name: 'Lowland 1',
212
- category_order: 1,
213
- documents: [
214
- {
215
- document_url: '/test',
216
- document_filename: 'Details about Whisky Lowland 1',
217
- document_binary_url: '/test/binary',
218
- attribute_path: '',
219
- upload_timestamp: ''
220
- }
221
- ],
222
- sub_categories: []
223
- },
224
- {
225
- category_id: 'WhiskyLowland2',
226
- category_name: 'Lowland 2',
227
- category_order: 2,
228
- documents: [],
229
- sub_categories: []
230
- }
231
- ]
232
- },
233
- {
234
- category_id: 'WhiskyIslay',
235
- category_name: 'Islay',
236
- category_order: 3,
237
- documents: [
238
- {
239
- document_url: '/test',
240
- document_filename: 'Details about Whisky Islay',
241
- document_binary_url: '/test/binary',
242
- attribute_path: '',
243
- upload_timestamp: ''
244
- },
245
- {
246
- document_url: '/test',
247
- document_filename: 'More information about Whisky Islay',
248
- document_binary_url: '/test/binary',
249
- attribute_path: '',
250
- upload_timestamp: ''
251
- }
252
- ],
253
- sub_categories: []
254
- },
255
- {
256
- category_id: 'WhiskySpeyside',
257
- category_name: 'Speyside',
258
- category_order: 4,
259
- documents: [],
260
- sub_categories: []
261
- },
262
- {
263
- category_id: 'WhiskyCampbeltown',
264
- category_name: 'Campbeltown',
265
- category_order: 5,
266
- documents: [],
267
- sub_categories: []
268
- }
269
- ]
270
- }
271
- ]
272
- }
273
- ];
155
+ if (this.documentFilterSubscription) {
156
+ this.documentFilterSubscription.unsubscribe();
157
+ }
274
158
  }
275
159
  }
276
160
  CaseFileViewFolderComponent.UNCATEGORISED_DOCUMENTS_TITLE = 'Uncategorised documents';
161
+ CaseFileViewFolderComponent.DOCUMENT_SEARCH_FORM_CONTROL_NAME = 'documentSearchFormControl';
162
+ CaseFileViewFolderComponent.MINIMUM_SEARCH_CHARACTERS = 2;
277
163
  CaseFileViewFolderComponent.ɵfac = function CaseFileViewFolderComponent_Factory(t) { return new (t || CaseFileViewFolderComponent)(); };
278
- CaseFileViewFolderComponent.ɵcmp = i0.ɵɵdefineComponent({ type: CaseFileViewFolderComponent, selectors: [["ccd-case-file-view-folder"]], inputs: { categoriesAndDocuments: "categoriesAndDocuments" }, decls: 8, vars: 3, consts: [[1, "document-filter-container"], [1, "document-filter"], [1, "documents-title"], [1, "document-tree-container"], [3, "dataSource", "treeControl"], ["class", "document-tree-node", 4, "cdkTreeNodeDef"], ["class", "document-tree-node", 4, "cdkTreeNodeDef", "cdkTreeNodeDefWhen"], [1, "document-tree-node"], [1, "node"], ["mat-icon-button", "", "disabled", "", 1, "node__icon"], ["src", "/assets/images/document.png", "alt", "Document icon", 1, "node__iconImg"], [1, "node-name", "node-name-document"], ["cdkTreeNodeToggle", "", 1, "node"], ["mat-icon-button", "", 1, "node__icon"], ["src", "/assets/images/folder.png", "alt", "Folder icon", 1, "node__iconImg"], [1, "node__count"], [1, "node__name", "node__name--folder"], ["cdkTreeNodeOutlet", ""]], template: function CaseFileViewFolderComponent_Template(rf, ctx) { if (rf & 1) {
164
+ CaseFileViewFolderComponent.ɵcmp = i0.ɵɵdefineComponent({ type: CaseFileViewFolderComponent, selectors: [["ccd-case-file-view-folder"]], inputs: { categoriesAndDocuments: "categoriesAndDocuments" }, decls: 6, vars: 2, consts: [[1, "document-filter-container"], [1, "form-group", "document-filter", 3, "formGroup"], ["type", "search", "id", "document-search", "name", "documentSearchFormControl", "formControlName", "documentSearchFormControl", "placeholder", "Search by document name", 1, "form-control", "document-search"], [1, "documents-title"], ["class", "document-tree", 4, "ngIf"], [1, "document-tree"], [4, "ngIf"], [3, "dataSource", "treeControl"], ["class", "document-tree-node", 4, "cdkTreeNodeDef"], ["class", "document-tree-node", 4, "cdkTreeNodeDef", "cdkTreeNodeDefWhen"], [1, "document-tree-node"], [1, "node"], ["mat-icon-button", "", "disabled", "", 1, "icon", "icon-document"], [1, "node-name", "node-name-document"], ["mat-icon-button", "", "cdkTreeNodeToggle", "", 1, "icon", "icon-folder"], [1, "document-count"], [1, "node-name", "node-name-folder"], ["cdkTreeNodeOutlet", ""]], template: function CaseFileViewFolderComponent_Template(rf, ctx) { if (rf & 1) {
279
165
  i0.ɵɵelementStart(0, "div", 0);
280
- i0.ɵɵelement(1, "div", 1);
281
- i0.ɵɵelementStart(2, "div", 2);
282
- i0.ɵɵtext(3, "Documents");
283
- i0.ɵɵelementEnd();
166
+ i0.ɵɵelementStart(1, "div", 1);
167
+ i0.ɵɵelement(2, "input", 2);
284
168
  i0.ɵɵelementEnd();
285
- i0.ɵɵelementStart(4, "div", 3);
286
- i0.ɵɵelementStart(5, "cdk-tree", 4);
287
- i0.ɵɵtemplate(6, CaseFileViewFolderComponent_cdk_nested_tree_node_6_Template, 6, 1, "cdk-nested-tree-node", 5);
288
- i0.ɵɵtemplate(7, CaseFileViewFolderComponent_cdk_nested_tree_node_7_Template, 10, 5, "cdk-nested-tree-node", 6);
169
+ i0.ɵɵelementStart(3, "div", 3);
170
+ i0.ɵɵtext(4, "Documents");
289
171
  i0.ɵɵelementEnd();
290
172
  i0.ɵɵelementEnd();
173
+ i0.ɵɵtemplate(5, CaseFileViewFolderComponent_div_5_Template, 5, 4, "div", 4);
291
174
  } if (rf & 2) {
292
- i0.ɵɵadvance(5);
293
- i0.ɵɵproperty("dataSource", ctx.nestedDataSource)("treeControl", ctx.nestedTreeControl);
294
- i0.ɵɵadvance(2);
295
- i0.ɵɵproperty("cdkTreeNodeDefWhen", ctx.nestedChildren);
296
- } }, directives: [i1.CdkTree, i1.CdkTreeNodeDef, i1.CdkNestedTreeNode, i1.CdkTreeNodeToggle, i1.CdkTreeNodeOutlet], styles: [".document-filter-container[_ngcontent-%COMP%]{height:60px;border-bottom:2px solid #c9c9c9;padding-bottom:4px}.document-filter-container[_ngcontent-%COMP%] .document-filter[_ngcontent-%COMP%]{height:70%}.document-filter-container[_ngcontent-%COMP%] .documents-title[_ngcontent-%COMP%]{height:30%;margin-left:8px;font-weight:700}.document-tree-container[_ngcontent-%COMP%]{margin:4px}.document-tree-container[_ngcontent-%COMP%] .document-tree-invisible[_ngcontent-%COMP%]{display:none}.document-tree-container[_ngcontent-%COMP%] .document-tree[_ngcontent-%COMP%] li[_ngcontent-%COMP%], .document-tree-container[_ngcontent-%COMP%] .document-tree[_ngcontent-%COMP%] ul[_ngcontent-%COMP%]{margin-top:0;margin-bottom:0;list-style-type:none}.document-tree-container[_ngcontent-%COMP%] .document-tree-node[_ngcontent-%COMP%]{display:block}.document-tree-container[_ngcontent-%COMP%] .document-tree-node[_ngcontent-%COMP%] .document-tree-node[_ngcontent-%COMP%]{padding-left:40px}.node[_ngcontent-%COMP%]{display:flex;align-items:center;padding:6px 0}.node__icon[_ngcontent-%COMP%]{position:relative;background:none;border:0}.node__iconImg[_ngcontent-%COMP%]{height:24px}.node__count[_ngcontent-%COMP%]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#fff}.node__name[_ngcontent-%COMP%]{margin-left:6px}"] });
175
+ i0.ɵɵadvance(1);
176
+ i0.ɵɵproperty("formGroup", ctx.documentFilterFormGroup);
177
+ i0.ɵɵadvance(4);
178
+ i0.ɵɵproperty("ngIf", ctx.documentTreeData);
179
+ } }, directives: [i1.NgControlStatusGroup, i1.FormGroupDirective, i1.DefaultValueAccessor, i1.NgControlStatus, i1.FormControlName, i2.NgIf, i3.CdkTree, i3.CdkTreeNodeDef, i3.CdkNestedTreeNode, i3.CdkTreeNodeToggle, i3.CdkTreeNodeOutlet], styles: [".document-filter-container[_ngcontent-%COMP%]{border-bottom:2px solid #c9c9c9;padding-bottom:4px}.document-filter-container[_ngcontent-%COMP%] .document-filter[_ngcontent-%COMP%]{height:70%;padding:8px 8px 0;margin-bottom:10px}.document-filter-container[_ngcontent-%COMP%] .document-filter[_ngcontent-%COMP%] .document-search[_ngcontent-%COMP%]{background:url(/assets/images/icon-search-black.svg) no-repeat 100% #fff;background-position-x:calc(100% - 4px);padding-right:30px;width:100%}.document-filter-container[_ngcontent-%COMP%] .documents-title[_ngcontent-%COMP%]{height:30%;margin-left:8px;font-weight:700}.document-tree[_ngcontent-%COMP%]{margin:4px}.document-tree[_ngcontent-%COMP%] .document-tree-invisible[_ngcontent-%COMP%]{display:none}.document-tree[_ngcontent-%COMP%] .document-tree[_ngcontent-%COMP%] li[_ngcontent-%COMP%], .document-tree[_ngcontent-%COMP%] .document-tree[_ngcontent-%COMP%] ul[_ngcontent-%COMP%]{margin-top:0;margin-bottom:0;list-style-type:none}.document-tree[_ngcontent-%COMP%] .document-tree-node[_ngcontent-%COMP%]{display:block}.document-tree[_ngcontent-%COMP%] .document-tree-node[_ngcontent-%COMP%] .document-tree-node[_ngcontent-%COMP%]{padding-left:40px}.document-tree[_ngcontent-%COMP%] .node[_ngcontent-%COMP%]{display:flex;padding:4px}.document-tree[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{width:36px;height:36px;background-size:100%;border:0;background-color:#faf8f8}.document-tree[_ngcontent-%COMP%] .icon-folder[_ngcontent-%COMP%]{background-image:url(/assets/images/folder.png)}.document-tree[_ngcontent-%COMP%] .icon-document[_ngcontent-%COMP%]{background-image:url(/assets/images/document.png)}.document-tree[_ngcontent-%COMP%] .node-name[_ngcontent-%COMP%]{margin-left:6px}.document-tree[_ngcontent-%COMP%] .node-name-document[_ngcontent-%COMP%], .document-tree[_ngcontent-%COMP%] .node-name-folder[_ngcontent-%COMP%]{margin-top:4px}.document-tree[_ngcontent-%COMP%] .document-count[_ngcontent-%COMP%]{color:#fff}"] });
297
180
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseFileViewFolderComponent, [{
298
181
  type: Component,
299
182
  args: [{
@@ -304,4 +187,4 @@ CaseFileViewFolderComponent.ɵcmp = i0.ɵɵdefineComponent({ type: CaseFileViewF
304
187
  }], function () { return []; }, { categoriesAndDocuments: [{
305
188
  type: Input
306
189
  }] }); })();
307
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1maWxlLXZpZXctZm9sZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL2Nhc2UtZmlsZS12aWV3L2NvbXBvbmVudHMvY2FzZS1maWxlLXZpZXctZm9sZGVyL2Nhc2UtZmlsZS12aWV3LWZvbGRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvcGFsZXR0ZS9jYXNlLWZpbGUtdmlldy9jb21wb25lbnRzL2Nhc2UtZmlsZS12aWV3LWZvbGRlci9jYXNlLWZpbGUtdmlldy1mb2xkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUNwRCxPQUFPLEVBSUwsZ0JBQWdCLEVBQ2pCLE1BQU0sc0NBQXNDLENBQUM7Ozs7SUNEMUMsK0NBQTRFO0lBQzFFLDhCQUFrQjtJQUNoQixpQ0FBb0Q7SUFDbEQsMEJBQWlGO0lBQ25GLGlCQUFTO0lBQ1QsZ0NBQTJDO0lBQUEsWUFBYTtJQUFBLGlCQUFPO0lBQ2pFLGlCQUFNO0lBQ1IsaUJBQXVCOzs7SUFGd0IsZUFBYTtJQUFiLGtDQUFhOzs7SUFJNUQsK0NBQWtHO0lBQ2hHLCtCQUFvQztJQUNsQyxrQ0FBc0Y7SUFDcEYsMEJBQTZFO0lBQzdFLGdDQUEwQjtJQUFBLFlBQTJCO0lBQUEsaUJBQU87SUFDOUQsaUJBQVM7SUFDVCxnQ0FBNEM7SUFBQSxZQUFhO0lBQUEsaUJBQU87SUFDbEUsaUJBQU07SUFDTiwyQkFBMkU7SUFDekUsNEJBQStDO0lBQ2pELGlCQUFNO0lBQ1IsaUJBQXVCOzs7O0lBVHdCLGVBQXlDO0lBQXpDLHNEQUF5QztJQUV4RCxlQUEyQjtJQUEzQixnREFBMkI7SUFFWCxlQUFhO0lBQWIsa0NBQWE7SUFFdEQsZUFBcUU7SUFBckUsd0ZBQXFFOztBRFRoRixNQUFNLE9BQU8sMkJBQTJCO0lBYXRDO1FBTk8sZUFBVSxHQUEyQixFQUFFLENBQUM7UUFHdkMsZ0JBQVcsR0FBRyxDQUFDLElBQXNCLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0QsbUJBQWMsR0FBRyxDQUFDLENBQVMsRUFBRSxRQUEwQixFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1FBR25GLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLGlCQUFpQixDQUFtQixJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsa0NBQWtDLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFO1lBQ3ZHLDJGQUEyRjtZQUMzRixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxxQ0FBcUM7WUFDL0UsOENBQThDO1lBQzlDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNuRCxpQ0FBaUM7WUFDakMsSUFBSSxzQkFBc0IsQ0FBQyx1QkFBdUIsSUFBSSxzQkFBc0IsQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUMvRyxNQUFNLHNCQUFzQixHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxzQkFBc0IsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO2dCQUM5RyxRQUFRLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7YUFDdkM7WUFDRCwwQ0FBMEM7WUFDMUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFFBQVEsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxVQUFrQztRQUN4RCxPQUFPLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUU7WUFDdEMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDbkQsbUJBQW1CLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDOUMsbUJBQW1CLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQztZQUN0QyxtQkFBbUIsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBRXJILE9BQU87Z0JBQ0wsR0FBRyxJQUFJO2dCQUNQLG1CQUFtQjthQUNwQixDQUFDO1FBQ0osQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1QsQ0FBQztJQUVNLFlBQVksQ0FBQyxTQUFpQztRQUNuRCxNQUFNLGlCQUFpQixHQUF1QixFQUFFLENBQUM7UUFDakQsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUMzQixNQUFNLGdCQUFnQixHQUFHLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztZQUNoRCxnQkFBZ0IsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLGlCQUFpQixDQUFDO1lBQ25ELGdCQUFnQixDQUFDLElBQUksR0FBRyxVQUFVLENBQUM7WUFFbkMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLGlCQUFpQixDQUFDO0lBQzNCLENBQUM7SUFFTSx5QkFBeUIsQ0FBQyxzQkFBOEM7UUFDN0UsTUFBTSxTQUFTLEdBQXVCLEVBQUUsQ0FBQztRQUN6QyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDeEMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDaEQsZ0JBQWdCLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQztZQUNuRCxnQkFBZ0IsQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDO1lBRW5DLFNBQVMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0saUJBQWlCLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1FBQ2pELGlCQUFpQixDQUFDLElBQUksR0FBRywyQkFBMkIsQ0FBQyw2QkFBNkIsQ0FBQztRQUNuRixpQkFBaUIsQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDO1FBQ3BDLGlCQUFpQixDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7UUFFdkMsT0FBTyxpQkFBaUIsQ0FBQztJQUMzQixDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLElBQUksQ0FBQyxrQ0FBa0MsRUFBRTtZQUMzQyxJQUFJLENBQUMsa0NBQWtDLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDdkQ7SUFDSCxDQUFDO0lBRU0sY0FBYztRQUNuQixPQUFPO1lBQ0w7Z0JBQ0UsV0FBVyxFQUFFLE9BQU87Z0JBQ3BCLGFBQWEsRUFBRSxPQUFPO2dCQUN0QixjQUFjLEVBQUUsQ0FBQztnQkFDakIsU0FBUyxFQUFFO29CQUNUO3dCQUNFLFlBQVksRUFBRSxPQUFPO3dCQUNyQixpQkFBaUIsRUFBRSxvQkFBb0I7d0JBQ3ZDLG1CQUFtQixFQUFFLGNBQWM7d0JBQ25DLGNBQWMsRUFBRSxFQUFFO3dCQUNsQixnQkFBZ0IsRUFBRSxFQUFFO3FCQUNyQjtpQkFDRjtnQkFDRCxjQUFjLEVBQUU7b0JBQ2Q7d0JBQ0UsV0FBVyxFQUFFLGNBQWM7d0JBQzNCLGFBQWEsRUFBRSxTQUFTO3dCQUN4QixjQUFjLEVBQUUsQ0FBQzt3QkFDakIsU0FBUyxFQUFFLEVBQUU7d0JBQ2IsY0FBYyxFQUFFLEVBQUU7cUJBQ25CO29CQUNEO3dCQUNFLFdBQVcsRUFBRSxlQUFlO3dCQUM1QixhQUFhLEVBQUUsVUFBVTt3QkFDekIsY0FBYyxFQUFFLENBQUM7d0JBQ2pCLFNBQVMsRUFBRSxFQUFFO3dCQUNiLGNBQWMsRUFBRSxFQUFFO3FCQUNuQjtvQkFDRDt3QkFDRSxXQUFXLEVBQUUsWUFBWTt3QkFDekIsYUFBYSxFQUFFLE9BQU87d0JBQ3RCLGNBQWMsRUFBRSxDQUFDO3dCQUNqQixTQUFTLEVBQUUsRUFBRTt3QkFDYixjQUFjLEVBQUUsRUFBRTtxQkFDbkI7aUJBQ0Y7YUFDRjtZQUNEO2dCQUNFLFdBQVcsRUFBRSxPQUFPO2dCQUNwQixhQUFhLEVBQUUsT0FBTztnQkFDdEIsY0FBYyxFQUFFLENBQUM7Z0JBQ2pCLFNBQVMsRUFBRSxFQUFFO2dCQUNiLGNBQWMsRUFBRTtvQkFDZDt3QkFDRSxXQUFXLEVBQUUsYUFBYTt3QkFDMUIsYUFBYSxFQUFFLFFBQVE7d0JBQ3ZCLGNBQWMsRUFBRSxDQUFDO3dCQUNqQixTQUFTLEVBQUUsRUFBRTt3QkFDYixjQUFjLEVBQUUsRUFBRTtxQkFDbkI7b0JBQ0Q7d0JBQ0UsV0FBVyxFQUFFLGNBQWM7d0JBQzNCLGFBQWEsRUFBRSxTQUFTO3dCQUN4QixjQUFjLEVBQUUsQ0FBQzt3QkFDakIsU0FBUyxFQUFFLEVBQUU7d0JBQ2IsY0FBYyxFQUFFLEVBQUU7cUJBQ25CO2lCQUNGO2FBQ0Y7WUFDRDtnQkFDRSxXQUFXLEVBQUUsU0FBUztnQkFDdEIsYUFBYSxFQUFFLFNBQVM7Z0JBQ3hCLGNBQWMsRUFBRSxDQUFDO2dCQUNqQixTQUFTLEVBQUUsRUFBRTtnQkFDYixjQUFjLEVBQUU7b0JBQ2Q7d0JBQ0UsV0FBVyxFQUFFLGVBQWU7d0JBQzVCLGFBQWEsRUFBRSxlQUFlO3dCQUM5QixjQUFjLEVBQUUsQ0FBQzt3QkFDakIsU0FBUyxFQUFFLEVBQUU7d0JBQ2IsY0FBYyxFQUFFOzRCQUNkO2dDQUNFLFdBQVcsRUFBRSxnQkFBZ0I7Z0NBQzdCLGFBQWEsRUFBRSxVQUFVO2dDQUN6QixjQUFjLEVBQUUsQ0FBQztnQ0FDakIsU0FBUyxFQUFFLEVBQUU7Z0NBQ2IsY0FBYyxFQUFFO29DQUNkO3dDQUNFLFdBQVcsRUFBRSxpQkFBaUI7d0NBQzlCLGFBQWEsRUFBRSxZQUFZO3dDQUMzQixjQUFjLEVBQUUsQ0FBQzt3Q0FDakIsU0FBUyxFQUFFLEVBQUU7d0NBQ2IsY0FBYyxFQUFFLEVBQUU7cUNBQ25CO2lDQUNGOzZCQUNGOzRCQUNEO2dDQUNFLFdBQVcsRUFBRSxlQUFlO2dDQUM1QixhQUFhLEVBQUUsU0FBUztnQ0FDeEIsY0FBYyxFQUFFLENBQUM7Z0NBQ2pCLFNBQVMsRUFBRSxFQUFFO2dDQUNiLGNBQWMsRUFBRTtvQ0FDZDt3Q0FDRSxXQUFXLEVBQUUsZ0JBQWdCO3dDQUM3QixhQUFhLEVBQUUsV0FBVzt3Q0FDMUIsY0FBYyxFQUFFLENBQUM7d0NBQ2pCLFNBQVMsRUFBRTs0Q0FDVDtnREFDRSxZQUFZLEVBQUUsT0FBTztnREFDckIsaUJBQWlCLEVBQUUsZ0NBQWdDO2dEQUNuRCxtQkFBbUIsRUFBRSxjQUFjO2dEQUNuQyxjQUFjLEVBQUUsRUFBRTtnREFDbEIsZ0JBQWdCLEVBQUUsRUFBRTs2Q0FDckI7eUNBQ0Y7d0NBQ0QsY0FBYyxFQUFFLEVBQUU7cUNBQ25CO29DQUNEO3dDQUNFLFdBQVcsRUFBRSxnQkFBZ0I7d0NBQzdCLGFBQWEsRUFBRSxXQUFXO3dDQUMxQixjQUFjLEVBQUUsQ0FBQzt3Q0FDakIsU0FBUyxFQUFFLEVBQUU7d0NBQ2IsY0FBYyxFQUFFLEVBQUU7cUNBQ25CO2lDQUNGOzZCQUNGOzRCQUNEO2dDQUNFLFdBQVcsRUFBRSxhQUFhO2dDQUMxQixhQUFhLEVBQUUsT0FBTztnQ0FDdEIsY0FBYyxFQUFFLENBQUM7Z0NBQ2pCLFNBQVMsRUFBRTtvQ0FDVDt3Q0FDRSxZQUFZLEVBQUUsT0FBTzt3Q0FDckIsaUJBQWlCLEVBQUUsNEJBQTRCO3dDQUMvQyxtQkFBbUIsRUFBRSxjQUFjO3dDQUNuQyxjQUFjLEVBQUUsRUFBRTt3Q0FDbEIsZ0JBQWdCLEVBQUUsRUFBRTtxQ0FDckI7b0NBQ0Q7d0NBQ0UsWUFBWSxFQUFFLE9BQU87d0NBQ3JCLGlCQUFpQixFQUFFLHFDQUFxQzt3Q0FDeEQsbUJBQW1CLEVBQUUsY0FBYzt3Q0FDbkMsY0FBYyxFQUFFLEVBQUU7d0NBQ2xCLGdCQUFnQixFQUFFLEVBQUU7cUNBQ3JCO2lDQUNGO2dDQUNELGNBQWMsRUFBRSxFQUFFOzZCQUNuQjs0QkFDRDtnQ0FDRSxXQUFXLEVBQUUsZ0JBQWdCO2dDQUM3QixhQUFhLEVBQUUsVUFBVTtnQ0FDekIsY0FBYyxFQUFFLENBQUM7Z0NBQ2pCLFNBQVMsRUFBRSxFQUFFO2dDQUNiLGNBQWMsRUFBRSxFQUFFOzZCQUNuQjs0QkFDRDtnQ0FDRSxXQUFXLEVBQUUsbUJBQW1CO2dDQUNoQyxhQUFhLEVBQUUsYUFBYTtnQ0FDNUIsY0FBYyxFQUFFLENBQUM7Z0NBQ2pCLFNBQVMsRUFBRSxFQUFFO2dDQUNiLGNBQWMsRUFBRSxFQUFFOzZCQUNuQjt5QkFDRjtxQkFDRjtpQkFDRjthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7O0FBbFB1Qix5REFBNkIsR0FBRyx5QkFBeUIsQ0FBQztzR0FEdkUsMkJBQTJCO2dFQUEzQiwyQkFBMkI7UUNmeEMsOEJBQXVDO1FBQ3JDLHlCQUFtQztRQUNuQyw4QkFBNkI7UUFBQSx5QkFBUztRQUFBLGlCQUFNO1FBQzlDLGlCQUFNO1FBQ04sOEJBQXFDO1FBQ25DLG1DQUE0RTtRQUUxRSw4R0FPdUI7UUFFdkIsK0dBV3VCO1FBQ3pCLGlCQUFXO1FBQ2IsaUJBQU07O1FBeEJNLGVBQStCO1FBQS9CLGlEQUErQixzQ0FBQTtRQVdVLGVBQW9CO1FBQXBCLHVEQUFvQjs7dUZERDVELDJCQUEyQjtjQUx2QyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLDJCQUEyQjtnQkFDckMsU0FBUyxFQUFFLENBQUMsd0NBQXdDLENBQUM7Z0JBQ3JELFdBQVcsRUFBRSx3Q0FBd0M7YUFDdEQ7c0NBSWlCLHNCQUFzQjtrQkFBckMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5lc3RlZFRyZWVDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RyZWUnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIENhc2VGaWxlVmlld0NhdGVnb3J5LFxuICBDYXNlRmlsZVZpZXdEb2N1bWVudCxcbiAgQ2F0ZWdvcmllc0FuZERvY3VtZW50cyxcbiAgRG9jdW1lbnRUcmVlTm9kZVxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi9kb21haW4vY2FzZS1maWxlLXZpZXcnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2QtY2FzZS1maWxlLXZpZXctZm9sZGVyJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FzZS1maWxlLXZpZXctZm9sZGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXNlLWZpbGUtdmlldy1mb2xkZXIuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIENhc2VGaWxlVmlld0ZvbGRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgVU5DQVRFR09SSVNFRF9ET0NVTUVOVFNfVElUTEUgPSAnVW5jYXRlZ29yaXNlZCBkb2N1bWVudHMnO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBjYXRlZ29yaWVzQW5kRG9jdW1lbnRzOiBPYnNlcnZhYmxlPENhdGVnb3JpZXNBbmREb2N1bWVudHM+O1xuXG4gIHB1YmxpYyBuZXN0ZWRUcmVlQ29udHJvbDogTmVzdGVkVHJlZUNvbnRyb2w8RG9jdW1lbnRUcmVlTm9kZT47XG4gIHB1YmxpYyBuZXN0ZWREYXRhU291cmNlOiBEb2N1bWVudFRyZWVOb2RlW107XG4gIHB1YmxpYyBjYXRlZ29yaWVzOiBDYXNlRmlsZVZpZXdDYXRlZ29yeVtdID0gW107XG4gIHB1YmxpYyBjYXRlZ29yaWVzQW5kRG9jdW1lbnRzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSBnZXRDaGlsZHJlbiA9IChub2RlOiBEb2N1bWVudFRyZWVOb2RlKSA9PiBvZihub2RlLmNoaWxkcmVuKTtcbiAgcHVibGljIG5lc3RlZENoaWxkcmVuID0gKF86IG51bWJlciwgbm9kZURhdGE6IERvY3VtZW50VHJlZU5vZGUpID0+IG5vZGVEYXRhLmNoaWxkcmVuO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMubmVzdGVkVHJlZUNvbnRyb2wgPSBuZXcgTmVzdGVkVHJlZUNvbnRyb2w8RG9jdW1lbnRUcmVlTm9kZT4odGhpcy5nZXRDaGlsZHJlbik7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jYXRlZ29yaWVzQW5kRG9jdW1lbnRzU3Vic2NyaXB0aW9uID0gdGhpcy5jYXRlZ29yaWVzQW5kRG9jdW1lbnRzLnN1YnNjcmliZShjYXRlZ29yaWVzQW5kRG9jdW1lbnRzID0+IHtcbiAgICAgIC8vIFVzaW5nIHRoZSBtb2NrIGRhdGEgZm9yIG5vdyBhcyB3ZSBoYXZlIHRvIGRpc3BsYXkgdGhlIGRvY3VtZW50cyBhcyB3ZWxsIGZvciBkZW1vIHB1cnBvc2VcbiAgICAgIGNvbnN0IGNhdGVnb3JpZXMgPSB0aGlzLmxvYWRDYXRlZ29yaWVzKCk7IC8vIGNhdGVnb3JpZXNBbmREb2N1bWVudHMuY2F0ZWdvcmllcztcbiAgICAgIC8vIEdlbmVyYXRlIGRvY3VtZW50IHRyZWUgZGF0YSBmcm9tIGNhdGVnb3JpZXNcbiAgICAgIGNvbnN0IHRyZWVEYXRhID0gdGhpcy5nZW5lcmF0ZVRyZWVEYXRhKGNhdGVnb3JpZXMpO1xuICAgICAgLy8gQXBwZW5kIHVuY2F0ZWdvcmlzZWQgZG9jdW1lbnRzXG4gICAgICBpZiAoY2F0ZWdvcmllc0FuZERvY3VtZW50cy51bmNhdGVnb3Jpc2VkX2RvY3VtZW50cyAmJiBjYXRlZ29yaWVzQW5kRG9jdW1lbnRzLnVuY2F0ZWdvcmlzZWRfZG9jdW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgdW5jYXRlZ29yaXNlZERvY3VtZW50cyA9IHRoaXMuZ2V0VW5jYXRlZ29yaXNlZERvY3VtZW50cyhjYXRlZ29yaWVzQW5kRG9jdW1lbnRzLnVuY2F0ZWdvcmlzZWRfZG9jdW1lbnRzKTtcbiAgICAgICAgdHJlZURhdGEucHVzaCh1bmNhdGVnb3Jpc2VkRG9jdW1lbnRzKTtcbiAgICAgIH1cbiAgICAgIC8vIEluaXRpYWxpc2UgY2RrIHRyZWUgd2l0aCBnZW5lcmF0ZWQgZGF0YVxuICAgICAgdGhpcy5uZXN0ZWREYXRhU291cmNlID0gdHJlZURhdGE7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2VuZXJhdGVUcmVlRGF0YShjYXRlZ29yaWVzOiBDYXNlRmlsZVZpZXdDYXRlZ29yeVtdKTogRG9jdW1lbnRUcmVlTm9kZVtdIHtcbiAgICByZXR1cm4gY2F0ZWdvcmllcy5yZWR1Y2UoKHRyZWUsIG5vZGUpID0+IHtcbiAgICAgIGNvbnN0IG5ld0RvY3VtZW50VHJlZU5vZGUgPSBuZXcgRG9jdW1lbnRUcmVlTm9kZSgpO1xuICAgICAgbmV3RG9jdW1lbnRUcmVlTm9kZS5uYW1lID0gbm9kZS5jYXRlZ29yeV9uYW1lO1xuICAgICAgbmV3RG9jdW1lbnRUcmVlTm9kZS50eXBlID0gJ2NhdGVnb3J5JztcbiAgICAgIG5ld0RvY3VtZW50VHJlZU5vZGUuY2hpbGRyZW4gPSBbLi4udGhpcy5nZW5lcmF0ZVRyZWVEYXRhKG5vZGUuc3ViX2NhdGVnb3JpZXMpLCAuLi50aGlzLmdldERvY3VtZW50cyhub2RlLmRvY3VtZW50cyldO1xuXG4gICAgICByZXR1cm4gW1xuICAgICAgICAuLi50cmVlLFxuICAgICAgICBuZXdEb2N1bWVudFRyZWVOb2RlLFxuICAgICAgXTtcbiAgICB9LCBbXSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RG9jdW1lbnRzKGRvY3VtZW50czogQ2FzZUZpbGVWaWV3RG9jdW1lbnRbXSk6IERvY3VtZW50VHJlZU5vZGVbXSB7XG4gICAgY29uc3QgZG9jdW1lbnRzVG9SZXR1cm46IERvY3VtZW50VHJlZU5vZGVbXSA9IFtdO1xuICAgIGRvY3VtZW50cy5mb3JFYWNoKGRvY3VtZW50ID0+IHtcbiAgICAgIGNvbnN0IGRvY3VtZW50VHJlZU5vZGUgPSBuZXcgRG9jdW1lbnRUcmVlTm9kZSgpO1xuICAgICAgZG9jdW1lbnRUcmVlTm9kZS5uYW1lID0gZG9jdW1lbnQuZG9jdW1lbnRfZmlsZW5hbWU7XG4gICAgICBkb2N1bWVudFRyZWVOb2RlLnR5cGUgPSAnZG9jdW1lbnQnO1xuXG4gICAgICBkb2N1bWVudHNUb1JldHVybi5wdXNoKGRvY3VtZW50VHJlZU5vZGUpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRvY3VtZW50c1RvUmV0dXJuO1xuICB9XG5cbiAgcHVibGljIGdldFVuY2F0ZWdvcmlzZWREb2N1bWVudHModW5jYXRlZ29yaXNlZERvY3VtZW50czogQ2FzZUZpbGVWaWV3RG9jdW1lbnRbXSk6IERvY3VtZW50VHJlZU5vZGUge1xuICAgIGNvbnN0IGRvY3VtZW50czogRG9jdW1lbnRUcmVlTm9kZVtdID0gW107XG4gICAgdW5jYXRlZ29yaXNlZERvY3VtZW50cy5mb3JFYWNoKGRvY3VtZW50ID0+IHtcbiAgICAgIGNvbnN0IGRvY3VtZW50VHJlZU5vZGUgPSBuZXcgRG9jdW1lbnRUcmVlTm9kZSgpO1xuICAgICAgZG9jdW1lbnRUcmVlTm9kZS5uYW1lID0gZG9jdW1lbnQuZG9jdW1lbnRfZmlsZW5hbWU7XG4gICAgICBkb2N1bWVudFRyZWVOb2RlLnR5cGUgPSAnZG9jdW1lbnQnO1xuXG4gICAgICBkb2N1bWVudHMucHVzaChkb2N1bWVudFRyZWVOb2RlKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHVuY2F0ZWdvcmlzZWROb2RlID0gbmV3IERvY3VtZW50VHJlZU5vZGUoKTtcbiAgICB1bmNhdGVnb3Jpc2VkTm9kZS5uYW1lID0gQ2FzZUZpbGVWaWV3Rm9sZGVyQ29tcG9uZW50LlVOQ0FURUdPUklTRURfRE9DVU1FTlRTX1RJVExFO1xuICAgIHVuY2F0ZWdvcmlzZWROb2RlLnR5cGUgPSAnY2F0ZWdvcnknO1xuICAgIHVuY2F0ZWdvcmlzZWROb2RlLmNoaWxkcmVuID0gZG9jdW1lbnRzO1xuXG4gICAgcmV0dXJuIHVuY2F0ZWdvcmlzZWROb2RlO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNhdGVnb3JpZXNBbmREb2N1bWVudHNTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuY2F0ZWdvcmllc0FuZERvY3VtZW50c1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBsb2FkQ2F0ZWdvcmllcygpOiBDYXNlRmlsZVZpZXdDYXRlZ29yeVtdIHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBjYXRlZ29yeV9pZDogJ0JlZXJzJyxcbiAgICAgICAgY2F0ZWdvcnlfbmFtZTogJ0JlZXJzJyxcbiAgICAgICAgY2F0ZWdvcnlfb3JkZXI6IDEsXG4gICAgICAgIGRvY3VtZW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRvY3VtZW50X3VybDogJy90ZXN0JyxcbiAgICAgICAgICAgIGRvY3VtZW50X2ZpbGVuYW1lOiAnQmVlcnMgZW5jeWNsb3BlZGlhJyxcbiAgICAgICAgICAgIGRvY3VtZW50X2JpbmFyeV91cmw6ICcvdGVzdC9iaW5hcnknLFxuICAgICAgICAgICAgYXR0cmlidXRlX3BhdGg6ICcnLFxuICAgICAgICAgICAgdXBsb2FkX3RpbWVzdGFtcDogJydcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIHN1Yl9jYXRlZ29yaWVzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2F0ZWdvcnlfaWQ6ICdCZWVyc0JpdHRlcnMnLFxuICAgICAgICAgICAgY2F0ZWdvcnlfbmFtZTogJ0JpdHRlcnMnLFxuICAgICAgICAgICAgY2F0ZWdvcnlfb3JkZXI6IDEsXG4gICAgICAgICAgICBkb2N1bWVudHM6IFtdLFxuICAgICAgICAgICAgc3ViX2NhdGVnb3JpZXM6IFtdXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjYXRlZ29yeV9pZDogJ0JlZXJzQW1lcmljYW4nLFxuICAgICAgICAgICAgY2F0ZWdvcnlfbmFtZTogJ0FtZXJpY2FuJyxcbiAgICAgICAgICAgIGNhdGVnb3J5X29yZGVyOiAyLFxuICAgICAgICAgICAgZG9jdW1lbnRzOiBbXSxcbiAgICAgICAgICAgIHN1Yl9jYXRlZ29yaWVzOiBbXVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2F0ZWdvcnlfaWQ6ICdCZWVyc0FzaWFuJyxcbiAgICAgICAgICAgIGNhdGVnb3J5X25hbWU6ICdBc2lhbicsXG4gICAgICAgICAgICBjYXRlZ29yeV9vcmRlcjogMyxcbiAgICAgICAgICAgIGRvY3VtZW50czogW10sXG4gICAgICAgICAgICBzdWJfY2F0ZWdvcmllczogW11cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNhdGVnb3J5X2lkOiAnV2luZXMnLFxuICAgICAgICBjYXRlZ29yeV9uYW1lOiAnV2luZXMnLFxuICAgICAgICBjYXRlZ29yeV9vcmRlcjogMixcbiAgICAgICAgZG9jdW1lbnRzOiBbXSxcbiAgICAgICAgc3ViX2NhdGVnb3JpZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjYXRlZ29yeV9pZDogJ1dpbmVzRnJlbmNoJyxcbiAgICAgICAgICAgIGNhdGVnb3J5X25hbWU6ICdGcmVuY2gnLFxuICAgICAgICAgICAgY2F0ZWdvcnlfb3JkZXI6IDEsXG4gICAgICAgICAgICBkb2N1bWVudHM6IFtdLFxuICAgICAgICAgICAgc3ViX2NhdGVnb3JpZXM6IFtdXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjYXRlZ29yeV9pZDogJ1dpbmVzSXRhbGlhbicsXG4gICAgICAgICAgICBjYXRlZ29yeV9uYW1lOiAnSXRhbGlhbicsXG4gICAgICAgICAgICBjYXRlZ29yeV9vcmRlcjogMixcbiAgICAgICAgICAgIGRvY3VtZW50czogW10sXG4gICAgICAgICAgICBzdWJfY2F0ZWdvcmllczogW11cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNhdGVnb3J5X2lkOiAnU3Bpcml0cycsXG4gICAgICAgIGNhdGVnb3J5X25hbWU6ICdTcGlyaXRzJyxcbiAgICAgICAgY2F0ZWdvcnlfb3JkZXI6IDMsXG4gICAgICAgIGRvY3VtZW50czogW10sXG4gICAgICAgIHN1Yl9jYXRlZ29yaWVzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2F0ZWdvcnlfaWQ6ICdTcGlyaXRzV2hpc2t5JyxcbiAgICAgICAgICAgIGNhdGVnb3J5X25hbWU6ICdTY290Y2ggd2hpc2t5JyxcbiAgICAgICAgICAgIGNhdGVnb3J5X29yZGVyOiAxLFxuICAgICAgICAgICAgZG9jdW1lbnRzOiBbXSxcbiAgICAgICAgICAgIHN1Yl9jYXRlZ29yaWVzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjYXRlZ29yeV9pZDogJ1doaXNreUhpZ2hsYW5kJyxcbiAgICAgICAgICAgICAgICBjYXRlZ29yeV9uYW1lOiAnSGlnaGxhbmQnLFxuICAgICAgICAgICAgICAgIGNhdGVnb3J5X29yZGVyOiAxLFxuICAgICAgICAgICAgICAgIGRvY3VtZW50czogW10sXG4gICAgICAgICAgICAgICAgc3ViX2NhdGVnb3JpZXM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnlfaWQ6ICdXaGlza3lIaWdobGFuZDEnLFxuICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeV9uYW1lOiAnSGlnaGxhbmQgMScsXG4gICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5X29yZGVyOiAxLFxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudHM6IFtdLFxuICAgICAgICAgICAgICAgICAgICBzdWJfY2F0ZWdvcmllczogW11cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjYXRlZ29yeV9pZDogJ1doaXNreUxvd2xhbmQnLFxuICAgICAgICAgICAgICAgIGNhdGVnb3J5X25hbWU6ICdMb3dsYW5kJyxcbiAgICAgICAgICAgICAgICBjYXRlZ29yeV9vcmRlcjogMixcbiAgICAgICAgICAgICAgICBkb2N1bWVudHM6IFtdLFxuICAgICAgICAgICAgICAgIHN1Yl9jYXRlZ29yaWVzOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5X2lkOiAnV2hpc2t5TG93bGFuZDEnLFxuICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeV9uYW1lOiAnTG93bGFuZCAxJyxcbiAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnlfb3JkZXI6IDEsXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50czogW1xuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50X3VybDogJy90ZXN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50X2ZpbGVuYW1lOiAnRGV0YWlscyBhYm91dCBXaGlza3kgTG93bGFuZCAxJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50X2JpbmFyeV91cmw6ICcvdGVzdC9iaW5hcnknLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlX3BhdGg6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXBsb2FkX3RpbWVzdGFtcDogJydcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIHN1Yl9jYXRlZ29yaWVzOiBbXVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnlfaWQ6ICdXaGlza3lMb3dsYW5kMicsXG4gICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5X25hbWU6ICdMb3dsYW5kIDInLFxuICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeV9vcmRlcjogMixcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgc3ViX2NhdGVnb3JpZXM6IFtdXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2F0ZWdvcnlfaWQ6ICdXaGlza3lJc2xheScsXG4gICAgICAgICAgICAgICAgY2F0ZWdvcnlfbmFtZTogJ0lzbGF5JyxcbiAgICAgICAgICAgICAgICBjYXRlZ29yeV9vcmRlcjogMyxcbiAgICAgICAgICAgICAgICBkb2N1bWVudHM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRfdXJsOiAnL3Rlc3QnLFxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudF9maWxlbmFtZTogJ0RldGFpbHMgYWJvdXQgV2hpc2t5IElzbGF5JyxcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRfYmluYXJ5X3VybDogJy90ZXN0L2JpbmFyeScsXG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZV9wYXRoOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgdXBsb2FkX3RpbWVzdGFtcDogJydcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50X3VybDogJy90ZXN0JyxcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRfZmlsZW5hbWU6ICdNb3JlIGluZm9ybWF0aW9uIGFib3V0IFdoaXNreSBJc2xheScsXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50X2JpbmFyeV91cmw6ICcvdGVzdC9iaW5hcnknLFxuICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVfcGF0aDogJycsXG4gICAgICAgICAgICAgICAgICAgIHVwbG9hZF90aW1lc3RhbXA6ICcnXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBzdWJfY2F0ZWdvcmllczogW11cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNhdGVnb3J5X2lkOiAnV2hpc2t5U3BleXNpZGUnLFxuICAgICAgICAgICAgICAgIGNhdGVnb3J5X25hbWU6ICdTcGV5c2lkZScsXG4gICAgICAgICAgICAgICAgY2F0ZWdvcnlfb3JkZXI6IDQsXG4gICAgICAgICAgICAgICAgZG9jdW1lbnRzOiBbXSxcbiAgICAgICAgICAgICAgICBzdWJfY2F0ZWdvcmllczogW11cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNhdGVnb3J5X2lkOiAnV2hpc2t5Q2FtcGJlbHRvd24nLFxuICAgICAgICAgICAgICAgIGNhdGVnb3J5X25hbWU6ICdDYW1wYmVsdG93bicsXG4gICAgICAgICAgICAgICAgY2F0ZWdvcnlfb3JkZXI6IDUsXG4gICAgICAgICAgICAgICAgZG9jdW1lbnRzOiBbXSxcbiAgICAgICAgICAgICAgICBzdWJfY2F0ZWdvcmllczogW11cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgIF07XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkb2N1bWVudC1maWx0ZXItY29udGFpbmVyXCI+XG4gIDxkaXYgY2xhc3M9XCJkb2N1bWVudC1maWx0ZXJcIj48L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImRvY3VtZW50cy10aXRsZVwiPkRvY3VtZW50czwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiZG9jdW1lbnQtdHJlZS1jb250YWluZXJcIj5cbiAgPGNkay10cmVlIFtkYXRhU291cmNlXT1cIm5lc3RlZERhdGFTb3VyY2VcIiBbdHJlZUNvbnRyb2xdPVwibmVzdGVkVHJlZUNvbnRyb2xcIj5cbiAgICA8IS0tIGRvY3VtZW50IC0tPlxuICAgIDxjZGstbmVzdGVkLXRyZWUtbm9kZSAqY2RrVHJlZU5vZGVEZWY9XCJsZXQgbm9kZVwiIGNsYXNzPVwiZG9jdW1lbnQtdHJlZS1ub2RlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibm9kZVwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwibm9kZV9faWNvblwiIG1hdC1pY29uLWJ1dHRvbiBkaXNhYmxlZD5cbiAgICAgICAgICA8aW1nIHNyYz1cIi9hc3NldHMvaW1hZ2VzL2RvY3VtZW50LnBuZ1wiIGNsYXNzPVwibm9kZV9faWNvbkltZ1wiIGFsdD1cIkRvY3VtZW50IGljb25cIj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibm9kZS1uYW1lIG5vZGUtbmFtZS1kb2N1bWVudFwiPnt7bm9kZS5uYW1lfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Nkay1uZXN0ZWQtdHJlZS1ub2RlPlxuICAgIDwhLS0gZm9sZGVyLS0+XG4gICAgPGNkay1uZXN0ZWQtdHJlZS1ub2RlICpjZGtUcmVlTm9kZURlZj1cImxldCBub2RlOyB3aGVuOiBuZXN0ZWRDaGlsZHJlblwiIGNsYXNzPVwiZG9jdW1lbnQtdHJlZS1ub2RlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibm9kZVwiIGNka1RyZWVOb2RlVG9nZ2xlPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwibm9kZV9faWNvblwiIG1hdC1pY29uLWJ1dHRvbiBbYXR0ci5hcmlhLWxhYmVsXT1cIid0b2dnbGUgJyArIG5vZGUubmFtZVwiID5cbiAgICAgICAgICA8aW1nIHNyYz1cIi9hc3NldHMvaW1hZ2VzL2ZvbGRlci5wbmdcIiBjbGFzcz1cIm5vZGVfX2ljb25JbWdcIiBhbHQ9XCJGb2xkZXIgaWNvblwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibm9kZV9fY291bnRcIj57e25vZGUuY2hpbGREb2N1bWVudENvdW50fX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm5vZGVfX25hbWUgbm9kZV9fbmFtZS0tZm9sZGVyXCI+e3tub2RlLm5hbWV9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBbY2xhc3MuZG9jdW1lbnQtdHJlZS1pbnZpc2libGVdPVwiIW5lc3RlZFRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSlcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBjZGtUcmVlTm9kZU91dGxldD48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvY2RrLW5lc3RlZC10cmVlLW5vZGU+XG4gIDwvY2RrLXRyZWU+XG48L2Rpdj5cbiJdfQ==
190
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1maWxlLXZpZXctZm9sZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL2Nhc2UtZmlsZS12aWV3L2NvbXBvbmVudHMvY2FzZS1maWxlLXZpZXctZm9sZGVyL2Nhc2UtZmlsZS12aWV3LWZvbGRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvcGFsZXR0ZS9jYXNlLWZpbGUtdmlldy9jb21wb25lbnRzL2Nhc2UtZmlsZS12aWV3LWZvbGRlci9jYXNlLWZpbGUtdmlldy1mb2xkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3BELE9BQU8sRUFBb0MsU0FBUyxFQUFPLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEYsT0FBTyxFQUtMLG9CQUFvQixFQUNyQixNQUFNLHNDQUFzQyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDOzs7Ozs7SUNBMUYsMkJBQWdFO0lBQzlELGtDQUNGO0lBQUEsaUJBQU07OztJQUdKLGdEQUE0RTtJQUMxRSwrQkFBa0I7SUFDaEIsNkJBQ1M7SUFDVCxnQ0FBMkM7SUFBQSxZ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QVksQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksSUFBSSxDQUFDLGtDQUFrQyxFQUFFO1lBQzNDLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN2RDtRQUNELElBQUksSUFBSSxDQUFDLDBCQUEwQixFQUFFO1lBQ25DLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUMvQztJQUNILENBQUM7O0FBM0d1Qix5REFBNkIsR0FBRyx5QkFBeUIsQ0FBQztBQUMxRCw2REFBaUMsR0FBRywyQkFBMkIsQ0FBQztBQUNoRSxxREFBeUIsR0FBRyxDQUFDLENBQUM7c0dBSjNDLDJCQUEyQjtnRUFBM0IsMkJBQTJCO1FDbkJ4Qyw4QkFBdUM7UUFDckMsOEJBQThFO1FBQzVFLDJCQUt3QztRQUMxQyxpQkFBTTtRQUNOLDhCQUE2QjtRQUFBLHlCQUFTO1FBQUEsaUJBQU07UUFDOUMsaUJBQU07UUFDTiw0RUEwQk07O1FBcENvQyxlQUFxQztRQUFyQyx1REFBcUM7UUFVbkQsZUFBc0I7UUFBdEIsMkNBQXNCOzt1RkRRckMsMkJBQTJCO2NBTHZDLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsMkJBQTJCO2dCQUNyQyxTQUFTLEVBQUUsQ0FBQyx3Q0FBd0MsQ0FBQztnQkFDckQsV0FBVyxFQUFFLHdDQUF3QzthQUN0RDtzQ0FPaUIsc0JBQXNCO2tCQUFyQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmVzdGVkVHJlZUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9jZGsvdHJlZSc7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGRlYm91bmNlVGltZSwgZmlsdGVyLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIENhc2VGaWxlVmlld0NhdGVnb3J5LFxuICBDYXNlRmlsZVZpZXdEb2N1bWVudCxcbiAgQ2F0ZWdvcmllc0FuZERvY3VtZW50cyxcbiAgRG9jdW1lbnRUcmVlTm9kZSxcbiAgRG9jdW1lbnRUcmVlTm9kZVR5cGVcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZG9tYWluL2Nhc2UtZmlsZS12aWV3JztcbmltcG9ydCB7IGNhdGVnb3JpZXNBbmREb2N1bWVudHMgfSBmcm9tICcuLi8uLi90ZXN0LWRhdGEvY2F0ZWdvcmllcy1hbmQtZG9jdW1lbnRzLXRlc3QtZGF0YSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC1jYXNlLWZpbGUtdmlldy1mb2xkZXInLFxuICBzdHlsZVVybHM6IFsnLi9jYXNlLWZpbGUtdmlldy1mb2xkZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2Nhc2UtZmlsZS12aWV3LWZvbGRlci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQ2FzZUZpbGVWaWV3Rm9sZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFVOQ0FURUdPUklTRURfRE9DVU1FTlRTX1RJVExFID0gJ1VuY2F0ZWdvcmlzZWQgZG9jdW1lbnRzJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRE9DVU1FTlRfU0VBUkNIX0ZPUk1fQ09OVFJPTF9OQU1FID0gJ2RvY3VtZW50U2VhcmNoRm9ybUNvbnRyb2wnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBNSU5JTVVNX1NFQVJDSF9DSEFSQUNURVJTID0gMjtcblxuICBASW5wdXQoKSBwdWJsaWMgY2F0ZWdvcmllc0FuZERvY3VtZW50czogT2JzZXJ2YWJsZTxDYXRlZ29yaWVzQW5kRG9jdW1lbnRzPjtcblxuICBwdWJsaWMgbmVzdGVkVHJlZUNvbnRyb2w6IE5lc3RlZFRyZWVDb250cm9sPERvY3VtZW50VHJlZU5vZGU+O1xuICBwdWJsaWMgbmVzdGVkRGF0YVNvdXJjZTogRG9jdW1lbnRUcmVlTm9kZVtdO1xuICBwdWJsaWMgY2F0ZWdvcmllczogQ2FzZUZpbGVWaWV3Q2F0ZWdvcnlbXSA9IFtdO1xuICBwdWJsaWMgY2F0ZWdvcmllc0FuZERvY3VtZW50c1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgZG9jdW1lbnRGaWx0ZXJGb3JtR3JvdXA6IEZvcm1Hcm91cDtcbiAgcHVibGljIGRvY3VtZW50U2VhcmNoRm9ybUNvbnRyb2w6IEZvcm1Db250cm9sO1xuICBwdWJsaWMgZG9jdW1lbnRUcmVlRGF0YTogRG9jdW1lbnRUcmVlTm9kZVtdO1xuICBwdWJsaWMgZG9jdW1lbnRGaWx0ZXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBwcml2YXRlIGdldENoaWxkcmVuID0gKG5vZGU6IERvY3VtZW50VHJlZU5vZGUpID0+IG9mKG5vZGUuY2hpbGRyZW4pO1xuICBwdWJsaWMgbmVzdGVkQ2hpbGRyZW4gPSAoXzogbnVtYmVyLCBub2RlRGF0YTogRG9jdW1lbnRUcmVlTm9kZSkgPT4gbm9kZURhdGEuY2hpbGRyZW47XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5uZXN0ZWRUcmVlQ29udHJvbCA9IG5ldyBOZXN0ZWRUcmVlQ29udHJvbDxEb2N1bWVudFRyZWVOb2RlPih0aGlzLmdldENoaWxkcmVuKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRvY3VtZW50RmlsdGVyRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gICAgdGhpcy5kb2N1bWVudFNlYXJjaEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnKTtcbiAgICB0aGlzLmRvY3VtZW50RmlsdGVyRm9ybUdyb3VwLmFkZENvbnRyb2woQ2FzZUZpbGVWaWV3Rm9sZGVyQ29tcG9uZW50LkRPQ1VNRU5UX1NFQVJDSF9GT1JNX0NPTlRST0xfTkFNRSwgdGhpcy5kb2N1bWVudFNlYXJjaEZvcm1Db250cm9sKTtcblxuICAgIC8vIExpc3RlbiB0byBzZWFyY2ggaW5wdXQgYW5kIGluaXRpYXRlIGZpbHRlciBkb2N1bWVudHMgaWYgYXQgbGVhc3QgdGhyZWUgY2hhcmFjdGVycyBlbnRlcmVkXG4gICAgdGhpcy5kb2N1bWVudEZpbHRlclN1YnNjcmlwdGlvbiA9IHRoaXMuZG9jdW1lbnRTZWFyY2hGb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoc2VhcmNoVGVybTogc3RyaW5nKSA9PiB0aGlzLmZpbHRlcihzZWFyY2hUZXJtLnRvTG93ZXJDYXNlKCksIHRoaXMuZG9jdW1lbnRUcmVlRGF0YSkpXG4gICAgKS5zdWJzY3JpYmUoZG9jdW1lbnRUcmVlRGF0YSA9PiB7XG4gICAgICB0aGlzLm5lc3RlZERhdGFTb3VyY2UgPSBkb2N1bWVudFRyZWVEYXRhO1xuICAgIH0pO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHRoZSBpbnB1dCBjYXRlZ29yaWVzIGFuZCBkb2N1bWVudHMsIGFuZCBnZW5lcmF0ZSB0cmVlIGRhdGEgYW5kIGluaXRpYWxpc2UgY2RrIHRyZWVcbiAgICB0aGlzLmNhdGVnb3JpZXNBbmREb2N1bWVudHNTdWJzY3JpcHRpb24gPSB0aGlzLmNhdGVnb3JpZXNBbmREb2N1bWVudHMuc3Vic2NyaWJlKGNhdGVnb3JpZXNBbmREb2N1bWVudHNSZXN1bHQgPT4ge1xuICAgICAgLy8gVXNpbmcgdGhlIG1vY2sgZGF0YSBmb3Igbm93IGFzIHdlIGhhdmUgdG8gZGlzcGxheSB0aGUgZG9jdW1lbnRzIGFzIHdlbGwgZm9yIGRlbW8gcHVycG9zZVxuICAgICAgY29uc3QgY2F0ZWdvcmllcyA9IGNhdGVnb3JpZXNBbmREb2N1bWVudHMuY2F0ZWdvcmllczsgLy8gY2F0ZWdvcmllc0FuZERvY3VtZW50cy5jYXRlZ29yaWVzO1xuICAgICAgLy8gR2VuZXJhdGUgZG9jdW1lbnQgdHJlZSBkYXRhIGZyb20gY2F0ZWdvcmllc1xuICAgICAgdGhpcy5kb2N1bWVudFRyZWVEYXRhID0gdGhpcy5nZW5lcmF0ZVRyZWVEYXRhKGNhdGVnb3JpZXMpO1xuICAgICAgLy8gQXBwZW5kIHVuY2F0ZWdvcmlzZWQgZG9jdW1lbnRzXG4gICAgICBpZiAoY2F0ZWdvcmllc0FuZERvY3VtZW50c1Jlc3VsdC51bmNhdGVnb3Jpc2VkX2RvY3VtZW50cyAmJiBjYXRlZ29yaWVzQW5kRG9jdW1lbnRzUmVzdWx0LnVuY2F0ZWdvcmlzZWRfZG9jdW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgdW5jYXRlZ29yaXNlZERvY3VtZW50cyA9IHRoaXMuZ2V0VW5jYXRlZ29yaXNlZERvY3VtZW50cyhjYXRlZ29yaWVzQW5kRG9jdW1lbnRzUmVzdWx0LnVuY2F0ZWdvcmlzZWRfZG9jdW1lbnRzKTtcbiAgICAgICAgdGhpcy5kb2N1bWVudFRyZWVEYXRhLnB1c2godW5jYXRlZ29yaXNlZERvY3VtZW50cyk7XG4gICAgICB9XG4gICAgICAvLyBJbml0aWFsaXNlIGNkayB0cmVlIHdpdGggZ2VuZXJhdGVkIGRhdGFcbiAgICAgIHRoaXMubmVzdGVkRGF0YVNvdXJjZSA9IHRoaXMuZG9jdW1lbnRUcmVlRGF0YTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZW5lcmF0ZVRyZWVEYXRhKGNhdGVnb3JpZXM6IENhc2VGaWxlVmlld0NhdGVnb3J5W10pOiBEb2N1bWVudFRyZWVOb2RlW10ge1xuICAgIHJldHVybiBjYXRlZ29yaWVzLnJlZHVjZSgodHJlZSwgbm9kZSkgPT4gW1xuICAgICAgLi4udHJlZSxcbiAgICAgIC4uLltcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IG5vZGUuY2F0ZWdvcnlfbmFtZSxcbiAgICAgICAgICB0eXBlOiBEb2N1bWVudFRyZWVOb2RlVHlwZS5GT0xERVIsXG4gICAgICAgICAgY2hpbGRyZW46IFsuLi50aGlzLmdlbmVyYXRlVHJlZURhdGEobm9kZS5zdWJfY2F0ZWdvcmllcyksIC4uLnRoaXMuZ2V0RG9jdW1lbnRzKG5vZGUuZG9jdW1lbnRzKV1cbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgXSwgW10pO1xuICB9XG5cbiAgcHVibGljIGdldERvY3VtZW50cyhkb2N1bWVudHM6IENhc2VGaWxlVmlld0RvY3VtZW50W10pOiBEb2N1bWVudFRyZWVOb2RlW10ge1xuICAgIGNvbnN0IGRvY3VtZW50c1RvUmV0dXJuOiBEb2N1bWVudFRyZWVOb2RlW10gPSBbXTtcbiAgICBkb2N1bWVudHMuZm9yRWFjaChkb2N1bWVudCA9PiB7XG4gICAgICBkb2N1bWVudHNUb1JldHVybi5wdXNoKHsgbmFtZTogZG9jdW1lbnQuZG9jdW1lbnRfZmlsZW5hbWUsIHR5cGU6IERvY3VtZW50VHJlZU5vZGVUeXBlLkRPQ1VNRU5UIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiBkb2N1bWVudHNUb1JldHVybjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRVbmNhdGVnb3Jpc2VkRG9jdW1lbnRzKHVuY2F0ZWdvcmlzZWREb2N1bWVudHM6IENhc2VGaWxlVmlld0RvY3VtZW50W10pOiBEb2N1bWVudFRyZWVOb2RlIHtcbiAgICBjb25zdCBkb2N1bWVudHM6IERvY3VtZW50VHJlZU5vZGVbXSA9IFtdO1xuICAgIHVuY2F0ZWdvcmlzZWREb2N1bWVudHMuZm9yRWFjaChkb2N1bWVudCA9PiB7XG4gICAgICBkb2N1bWVudHMucHVzaCh7IG5hbWU6IGRvY3VtZW50LmRvY3VtZW50X2ZpbGVuYW1lLCB0eXBlOiBEb2N1bWVudFRyZWVOb2RlVHlwZS5ET0NVTUVOVCB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4geyBuYW1lOiBDYXNlRmlsZVZpZXdGb2xkZXJDb21wb25lbnQuVU5DQVRFR09SSVNFRF9ET0NVTUVOVFNfVElUTEUsIHR5cGU6IERvY3VtZW50VHJlZU5vZGVUeXBlLkZPTERFUiwgY2hpbGRyZW46IGRvY3VtZW50cyB9O1xuICB9XG5cbiAgcHVibGljIGZpbHRlcihzZWFyY2hUZXJtOiBzdHJpbmcsIGRvY3VtZW50VHJlZURhdGE6IERvY3VtZW50VHJlZU5vZGVbXSk6IE9ic2VydmFibGU8RG9jdW1lbnRUcmVlTm9kZVtdPiB7XG4gICAgLy8gTWFrZSBhIGNvcHkgb2YgdGhlIGRhdGEgc28gd2UgZG8gbm90IG11dGF0ZSB0aGUgb3JpZ2luYWxcbiAgICBmdW5jdGlvbiBjb3B5KG5vZGU6IERvY3VtZW50VHJlZU5vZGUpIHtcbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBub2RlKTtcbiAgICB9XG5cbiAgICBsZXQgZmlsdGVyZWREYXRhID0gZG9jdW1lbnRUcmVlRGF0YTtcbiAgICBpZiAoc2VhcmNoVGVybSAmJiBzZWFyY2hUZXJtLmxlbmd0aCA+IDIgJiYgdGhpcy5kb2N1bWVudEZpbHRlckZvcm1Hcm91cC5jb250cm9sc1tDYXNlRmlsZVZpZXdGb2xkZXJDb21wb25lbnQuRE9DVU1FTlRfU0VBUkNIX0ZPUk1fQ09OVFJPTF9OQU1FXS52YWx1ZS5sZW5ndGggPiAyKSB7XG4gICAgICBmaWx0ZXJlZERhdGEgPSBkb2N1bWVudFRyZWVEYXRhLm1hcChjb3B5KS5maWx0ZXIoZnVuY3Rpb24gZmlsdGVyVHJlZURhdGEobm9kZTogRG9jdW1lbnRUcmVlTm9kZSkge1xuICAgICAgICBpZiAobm9kZS5uYW1lICYmIG5vZGUubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm0pICYmIG5vZGUudHlwZSA9PT0gRG9jdW1lbnRUcmVlTm9kZVR5cGUuRE9DVU1FTlQpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBDYWxsIHJlY3Vyc2l2ZWx5IGlmIG5vZGUgaGFzIGNoaWxkcmVuXG4gICAgICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgICAgcmV0dXJuIChub2RlLmNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbi5tYXAoY29weSkuZmlsdGVyKGZpbHRlclRyZWVEYXRhKSkubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG9mKGZpbHRlcmVkRGF0YSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2F0ZWdvcmllc0FuZERvY3VtZW50c1N1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5jYXRlZ29yaWVzQW5kRG9jdW1lbnRzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmRvY3VtZW50RmlsdGVyU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmRvY3VtZW50RmlsdGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZG9jdW1lbnQtZmlsdGVyLWNvbnRhaW5lclwiPlxuICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBkb2N1bWVudC1maWx0ZXJcIiBbZm9ybUdyb3VwXT1cImRvY3VtZW50RmlsdGVyRm9ybUdyb3VwXCI+XG4gICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIGRvY3VtZW50LXNlYXJjaFwiXG4gICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgIGlkPVwiZG9jdW1lbnQtc2VhcmNoXCJcbiAgICAgIG5hbWU9XCJkb2N1bWVudFNlYXJjaEZvcm1Db250cm9sXCJcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cImRvY3VtZW50U2VhcmNoRm9ybUNvbnRyb2xcIlxuICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggYnkgZG9jdW1lbnQgbmFtZVwiPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImRvY3VtZW50cy10aXRsZVwiPkRvY3VtZW50czwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiZG9jdW1lbnQtdHJlZVwiICpuZ0lmPVwiZG9jdW1lbnRUcmVlRGF0YVwiPlxuICA8ZGl2ICpuZ0lmPVwiIW5lc3RlZERhdGFTb3VyY2UgfHwgbmVzdGVkRGF0YVNvdXJjZS5sZW5ndGggPT09IDBcIj5cbiAgICBObyByZXN1bHRzIGZvdW5kXG4gIDwvZGl2PlxuICA8Y2RrLXRyZWUgW2RhdGFTb3VyY2VdPVwibmVzdGVkRGF0YVNvdXJjZVwiIFt0cmVlQ29udHJvbF09XCJuZXN0ZWRUcmVlQ29udHJvbFwiPlxuICAgIDwhLS0gZG9jdW1lbnQgLS0+XG4gICAgPGNkay1uZXN0ZWQtdHJlZS1ub2RlICpjZGtUcmVlTm9kZURlZj1cImxldCBub2RlXCIgY2xhc3M9XCJkb2N1bWVudC10cmVlLW5vZGVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJub2RlXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJpY29uIGljb24tZG9jdW1lbnRcIiBtYXQtaWNvbi1idXR0b24gZGlzYWJsZWQ+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm5vZGUtbmFtZSBub2RlLW5hbWUtZG9jdW1lbnRcIj57e25vZGUubmFtZX19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9jZGstbmVzdGVkLXRyZWUtbm9kZT5cbiAgICA8IS0tIGZvbGRlci0tPlxuICAgIDxjZGstbmVzdGVkLXRyZWUtbm9kZSAqY2RrVHJlZU5vZGVEZWY9XCJsZXQgbm9kZTsgd2hlbjogbmVzdGVkQ2hpbGRyZW5cIiBjbGFzcz1cImRvY3VtZW50LXRyZWUtbm9kZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm5vZGVcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImljb24gaWNvbi1mb2xkZXJcIiBtYXQtaWNvbi1idXR0b24gW2F0dHIuYXJpYS1sYWJlbF09XCIndG9nZ2xlICcgKyBub2RlLm5hbWVcIiBjZGtUcmVlTm9kZVRvZ2dsZT5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImRvY3VtZW50LWNvdW50XCI+e3tub2RlLmNvdW50fX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm5vZGUtbmFtZSBub2RlLW5hbWUtZm9sZGVyXCI+e3tub2RlLm5hbWV9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBbY2xhc3MuZG9jdW1lbnQtdHJlZS1pbnZpc2libGVdPVwiIW5lc3RlZFRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSlcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBjZGtUcmVlTm9kZU91dGxldD48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvY2RrLW5lc3RlZC10cmVlLW5vZGU+XG4gIDwvY2RrLXRyZWU+XG48L2Rpdj5cbiJdfQ==