@eo-sdk/client 11.14.0-rc.4 → 11.14.0-rc.6

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 (43) hide show
  1. package/app/eo-client/inbox-state/inbox-state/inbox-state.component.d.ts.map +1 -1
  2. package/app/eo-client/process-state/process-state.component.d.ts +1 -0
  3. package/app/eo-client/process-state/process-state.component.d.ts.map +1 -1
  4. package/app/eo-framework/app-shell/app-bar/app-search/app-search.component.d.ts.map +1 -1
  5. package/app/eo-framework/app-shell/app-bar/context-search/context-search.component.d.ts +3 -2
  6. package/app/eo-framework/app-shell/app-bar/context-search/context-search.component.d.ts.map +1 -1
  7. package/app/eo-framework/form-elements/codesystem/codesystem.component.d.ts.map +1 -1
  8. package/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.d.ts +10 -8
  9. package/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.d.ts.map +1 -1
  10. package/app/eo-framework/inbox-details/inbox-details.component.d.ts.map +1 -1
  11. package/app/eo-framework/object-form/object-form/form-element/form-element.component.d.ts.map +1 -1
  12. package/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.d.ts +21 -0
  13. package/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.d.ts.map +1 -1
  14. package/app/eo-framework/object-form/object-form/object-form.component.d.ts.map +1 -1
  15. package/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.d.ts +19 -0
  16. package/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.d.ts.map +1 -1
  17. package/esm2022/app/eo-client/about-state/about-state.component.mjs +3 -3
  18. package/esm2022/app/eo-client/inbox-state/inbox-state/inbox-state.component.mjs +20 -2
  19. package/esm2022/app/eo-client/prepare-state/prepare-state/prepare-state.component.mjs +2 -2
  20. package/esm2022/app/eo-client/process-state/process-state.component.mjs +8 -7
  21. package/esm2022/app/eo-framework/app-shell/app-bar/app-search/app-search.component.mjs +4 -1
  22. package/esm2022/app/eo-framework/app-shell/app-bar/context-search/context-search.component.mjs +6 -1
  23. package/esm2022/app/eo-framework/form-elements/codesystem/codesystem.component.mjs +8 -6
  24. package/esm2022/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.mjs +32 -28
  25. package/esm2022/app/eo-framework/form-elements/organization/organization.component.mjs +4 -4
  26. package/esm2022/app/eo-framework/grid/extensions/filter/custom/custom-filter.component.mjs +2 -2
  27. package/esm2022/app/eo-framework/grid/extensions/reset-filter/reset-filter.component.mjs +3 -4
  28. package/esm2022/app/eo-framework/grid/filters/codesystem-filter.component.mjs +2 -2
  29. package/esm2022/app/eo-framework/grid/filters/organization-filter.component.mjs +3 -3
  30. package/esm2022/app/eo-framework/inbox-details/inbox-details.component.mjs +4 -2
  31. package/esm2022/app/eo-framework/media/media.component.mjs +3 -3
  32. package/esm2022/app/eo-framework/object-form/object-form/form-element/form-element.component.mjs +2 -5
  33. package/esm2022/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.mjs +57 -14
  34. package/esm2022/app/eo-framework/object-form/object-form/object-form.component.mjs +3 -1
  35. package/esm2022/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.mjs +37 -3
  36. package/esm2022/app/eo-framework/ui/eo-dialog/eo-dialog.component.mjs +2 -2
  37. package/esm2022/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.mjs +5 -5
  38. package/fesm2022/eo-sdk-client.mjs +193 -82
  39. package/fesm2022/eo-sdk-client.mjs.map +1 -1
  40. package/package.json +2 -2
  41. package/scss/_yuuvis-components.scss +4 -0
  42. package/styles.css +16 -0
  43. package/styles.scss +14 -0
@@ -22,6 +22,7 @@ export class DynamicListComponent {
22
22
  this.localStorageService = localStorageService;
23
23
  this.objectFormHelperService = objectFormHelperService;
24
24
  this.eventService = eventService;
25
+ this.isTableElement = false;
25
26
  this.hasAutocompleteUrl = false;
26
27
  this.hasAutocompleteValuesCached = false;
27
28
  this.autocompleteUrlValue = null;
@@ -159,8 +160,11 @@ export class DynamicListComponent {
159
160
  }
160
161
  else {
161
162
  let node = {};
162
- if (this.title && this._list) {
163
- node = this._list?.entries.find(entry => entry.models?.find(model => model.name === value)).models?.find(model => model.name === value);
163
+ if (this.title && this._list && this.isSearch) {
164
+ const listEntries = this._list?.entries.find(entry => entry?.models?.some(model => model.name === value));
165
+ if (listEntries) {
166
+ node = listEntries.models?.find(model => model.name === value) || {};
167
+ }
164
168
  }
165
169
  else {
166
170
  node[this.valueField] = value;
@@ -205,7 +209,6 @@ export class DynamicListComponent {
205
209
  /**
206
210
  * Handles the autocomplete functionality based on the provided search term.
207
211
  *
208
- * If `selectedNodes` is set, it resets and updates `selectedNodes` with the search term.
209
212
  * If `hasAutocompleteUrl` is true, it triggers an autocomplete search via an observable.
210
213
  * Otherwise, it filters the autocomplete results locally.
211
214
  *
@@ -213,13 +216,6 @@ export class DynamicListComponent {
213
216
  * @returns {void}
214
217
  */
215
218
  autocompleteFn(term) {
216
- if (this.selectedNodes) {
217
- this.selectedNodes = null;
218
- this.selectedNodes = {
219
- value: term,
220
- data: {}
221
- };
222
- }
223
219
  if (term) {
224
220
  this.hasAutocompleteUrl
225
221
  ? this.autocompleteSearchValue$.next(term)
@@ -242,7 +238,7 @@ export class DynamicListComponent {
242
238
  }
243
239
  ngOnInit() {
244
240
  if (this.situation === 'SEARCH') {
245
- this.multiselect = true;
241
+ this.multiselect = !this.isTableElement;
246
242
  this.isSearch = true;
247
243
  }
248
244
  this.eventService.on(EnaioEvent.CLIENT_LOCALE_CHANGED).subscribe(() => {
@@ -318,7 +314,7 @@ export class DynamicListComponent {
318
314
  }
319
315
  if (changed || forcePropagation) {
320
316
  this.value = v;
321
- if (v?.length > 0) {
317
+ if (v?.length > 0 && this.isSearch) {
322
318
  this.value = {
323
319
  operator: this.searchOption,
324
320
  value: v,
@@ -396,7 +392,7 @@ export class DynamicListComponent {
396
392
  let treeNode = {
397
393
  id: listEntry.id ? listEntry.id : listEntry[this.valueField],
398
394
  name: listEntry[this.descriptionField] ? listEntry[this.valueField] + ' (' + listEntry[this.descriptionField] + ')' : listEntry[this.valueField],
399
- title: listEntry[this.title],
395
+ title: (listEntry[this.title] || listEntry[this.valueField]) + (listEntry.models ? '' : ' (' + listEntry[this.valueField] + ')'),
400
396
  children: [],
401
397
  expanded: false,
402
398
  selected: false,
@@ -410,25 +406,33 @@ export class DynamicListComponent {
410
406
  return treeNode;
411
407
  }
412
408
  /**
413
- * Filters the autocomplete results based on the provided search term.
414
- *
415
- * The method filters the `autocompleteValues` array to find nodes that match the search term.
416
- * It also applies additional filtering based on the `filterFunction` and `multiselect` properties.
417
- *
418
- * @param {string} term - The search term used to filter the autocomplete results.
419
- */
409
+ * Filters the autocomplete results based on the provided search term.
410
+ *
411
+ * The method filters the `autocompleteValues` array to find nodes that match the search term.
412
+ * It also applies additional filtering based on the `filterFunction` and `multiselect` properties.
413
+ * - If `filterFunction` is defined, it filters out nodes that do not pass the function.
414
+ * - If `situation` is 'SEARCH', it excludes nodes that are already selected.
415
+ * - It matches nodes based on the search term against the `valueField` and `descriptionField`.
416
+ *
417
+ * @param {string} term - The search term used to filter the autocomplete results.
418
+ */
420
419
  filterAutocompleteResults(term) {
421
420
  this.autocompleteRes = this.autocompleteValues.filter((acNode) => {
422
- if (this.filterFunction && !this.filterFunction(acNode.data)) {
421
+ const acNodeData = acNode.data;
422
+ const acNodeValue = acNodeData?.[this.valueField];
423
+ const acNodeDescription = acNodeData?.[this.descriptionField];
424
+ if (this.filterFunction && !this.filterFunction(acNodeData)) {
423
425
  return false;
424
426
  }
425
- if (this.multiselect && Array.isArray(this.selectedNodes)) {
426
- if (this.selectedNodes.find((node) => acNode.data[this.valueField] === node.data[this.valueField])) {
427
- return false;
428
- }
427
+ if (this.situation === 'SEARCH' && this.selectedNodes?.some((node) => {
428
+ const nodeValue = node.value || node?.data?.[this.valueField];
429
+ return acNodeData && nodeValue && acNodeValue === nodeValue;
430
+ })) {
431
+ return false;
429
432
  }
430
- return acNode.data[this.valueField].toString().toLowerCase().indexOf(term?.toString().toLowerCase()) !== -1 ||
431
- (acNode.data[this.descriptionField] && acNode.data[this.descriptionField].toString().toLowerCase().indexOf(term?.toString().toLowerCase()) !== -1);
433
+ const termLower = term?.toString().toLowerCase();
434
+ return acNodeValue?.toString().toLowerCase().includes(termLower) ||
435
+ (acNodeDescription && acNodeDescription.toString().toLowerCase().includes(termLower));
432
436
  }).slice(0, 10);
433
437
  }
434
438
  /**
@@ -498,4 +502,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
498
502
  }], autocompleteUrl: [{
499
503
  type: Input
500
504
  }] } });
501
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL2Zvcm0tZWxlbWVudHMvZHluYW1pYy1saXN0L2R5bmFtaWMtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9mb3JtLWVsZW1lbnRzL2R5bmFtaWMtbGlzdC9keW5hbWljLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQVUsS0FBSyxFQUFFLFNBQVMsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUN6RixPQUFPLEVBSUwsaUJBQWlCLEVBQ2pCLGFBQWEsRUFDZCxNQUFNLGdCQUFnQixDQUFDO0FBR3hCLE9BQU8sRUFBNEMsVUFBVSxFQUFnQixVQUFVLEVBQUUsWUFBWSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQzNILE9BQU8sRUFBQyxZQUFZLEVBQWMsT0FBTyxFQUFlLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7OztBQXFCckUsTUFBTSxPQUFPLG9CQUFvQjtJQTZDL0IsbUNBQW1DO0lBQ25DLFlBQW9CLGtCQUFzQyxFQUFVLG1CQUF3QyxFQUFVLHVCQUFnRCxFQUFVLFlBQTBCO1FBQXRMLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFBVSx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQVUsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBakMxTSx1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDM0IsZ0NBQTJCLEdBQUcsS0FBSyxDQUFDO1FBQ3BDLHlCQUFvQixHQUFXLElBQUksQ0FBQztRQUNwQywwQkFBcUIsR0FBRyxLQUFLLENBQUM7UUFDOUIsZUFBVSxHQUFHLE9BQU8s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RSxxQkFBcUIsQ0FBQzs0QkFDbkQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHFCQUFxQixDQUFDOzRCQUNuRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjswTEFJMEIsaUJBQWlCO3NCQUEzQyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ0osa0JBQWtCO3NCQUF0QyxTQUFTO3VCQUFDLFFBQVE7Z0JBRVYsU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQStERixjQUFjO3NCQURqQixLQUFLO3VCQUFDLGdCQUFnQjtnQkFRbkIsVUFBVTtzQkFEYixLQUFLO3VCQUFDLFlBQVk7Z0JBUWYsZUFBZTtzQkFEbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBmb3J3YXJkUmVmLCBPbkluaXQsIElucHV0LCBWaWV3Q2hpbGQsIE9uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBVbnR5cGVkRm9ybUNvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBWYWxpZGF0b3IsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBOR19WQUxJREFUT1JTXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7QXV0b0NvbXBsZXRlfSBmcm9tICdAeXV1dmlzL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7VHJlZU5vZGV9IGZyb20gJy4uLy4uL3RyZWUvdHJlZS5jb21wb25lbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7TG9jYWxTdG9yYWdlU2VydmljZSwgQXV0b2NvbXBsZXRlUmVzcG9uc2UsIEVuYWlvRXZlbnQsIEV2ZW50U2VydmljZSwgUmFuZ2VWYWx1ZSwgU2VhcmNoRmlsdGVyfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWUsIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge09iamVjdEZvcm1IZWxwZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS1oZWxwZXIuc2VydmljZSc7XG5pbXBvcnQge0R5bmFtaWNMaXN0U2VydmljZX0gZnJvbSAnLi9keW5hbWljLWxpc3Quc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLWR5bmFtaWMtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9keW5hbWljLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9keW5hbWljLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEeW5hbWljTGlzdENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IER5bmFtaWNMaXN0Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBEeW5hbWljTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3IsIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBAVmlld0NoaWxkKCdhdXRvY29tcGxldGUnKSBhdXRvQ29tcGxldGVJbnB1dDogQXV0b0NvbXBsZXRlO1xuICBAVmlld0NoaWxkKCdidXR0b24nKSBhdXRvQ29tcGxldGVCdXR0b247XG5cbiAgQElucHV0KCkgc2l0dWF0aW9uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIG11bHRpc2VsZWN0OiBib29sZWFuO1xuICBASW5wdXQoKSBwaWNrZXJUaXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbjtcbiAgQElucHV0KCkgZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGZvcm1FbGVtZW50Q2hhbmdlczogT2JzZXJ2YWJsZTxhbnk+O1xuICBASW5wdXQoKSBpc1RhYmxlRWxlbWVudDogYm9vbGVhbjtcblxuICBoYXNBdXRvY29tcGxldGVVcmwgPSBmYWxzZTtcbiAgaGFzQXV0b2NvbXBsZXRlVmFsdWVzQ2FjaGVkID0gZmFsc2U7XG4gIGF1dG9jb21wbGV0ZVVybFZhbHVlOiBzdHJpbmcgPSBudWxsO1xuICBpc0F1dG9jb21wbGV0ZUxvYWRpbmcgPSBmYWxzZTtcbiAgdmFsdWVGaWVsZCA9ICd2YWx1ZSc7XG4gIHN1YkVudHJpZXNGaWVsZCA9ICdlbnRyaWVzJztcbiAgcHJvamVjdHNFbnRyaWVzRmllbGQgPSAncHJvamVjdHMnO1xuICBkZXNjcmlwdGlvbkZpZWxkID0gJ2Rlc2NyaXB0aW9uJztcbiAgdGl0bGUgPSAndGl0bGUnO1xuICBkaXNwbGF5ID0gZmFsc2U7XG4gIHZhbHVlO1xuICB0cmVlOiBUcmVlTm9kZVtdO1xuICBhdXRvY29tcGxldGVSZXM7XG4gIGF1dG9jb21wbGV0ZVZhbHVlczogVHJlZU5vZGVbXSA9IFtdO1xuICBwcmV2aW91c1NlYXJjaFZhbHVlID0gXCJcIjtcbiAgaGFzRm9ybUVsZW1lbnRDaGFuZ2VkID0gZmFsc2U7XG4gIGlzU2VhcmNoID0gZmFsc2U7XG4gIGlzUHJvcGFnYXRpbmdDaGFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBvcHRpb25zIGZvciBzZWFyY2ggc2l0dWF0aW9uXG4gIHB1YmxpYyBhdmFpbGFibGVTZWFyY2hPcHRpb25zID0gW1xuICAgIHtsYWJlbDogUmFuZ2VWYWx1ZS5nZXRPcGVyYXRvckxhYmVsKFNlYXJjaEZpbHRlci5PUEVSQVRPUi5FUVVBTCksIHZhbHVlOiBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuSU59LFxuICAgIHtsYWJlbDogUmFuZ2VWYWx1ZS5nZXRPcGVyYXRvckxhYmVsKFNlYXJjaEZpbHRlci5PUEVSQVRPUi5VU0VfTk9UKSwgdmFsdWU6IFNlYXJjaEZpbHRlci5PUEVSQVRPUi5VU0VfTk9ULCBhY3R1YWxPcGVyYXRvcjogU2VhcmNoRmlsdGVyLk9QRVJBVE9SLklOfSxcbiAgXTtcblxuICBwdWJsaWMgc2VhcmNoT3B0aW9uID0gdGhpcy5hdmFpbGFibGVTZWFyY2hPcHRpb25zWzBdLnZhbHVlO1xuICBwcml2YXRlIGF1dG9jb21wbGV0ZVNlYXJjaFZhbHVlJCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcbiAgcHJpdmF0ZSBfc2VsZWN0ZWROb2RlczogYW55O1xuICBwcml2YXRlIGlzVmFsaWQgPSB0cnVlO1xuICBwcml2YXRlIGZvcm1FbGVtZW50Q2hhbmdlc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIF9saXN0OiBhbnk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkeW5hbWljTGlzdFNlcnZpY2U6IER5bmFtaWNMaXN0U2VydmljZSwgcHJpdmF0ZSBsb2NhbFN0b3JhZ2VTZXJ2aWNlOiBMb2NhbFN0b3JhZ2VTZXJ2aWNlLCBwcml2YXRlIG9iamVjdEZvcm1IZWxwZXJTZXJ2aWNlOiBPYmplY3RGb3JtSGVscGVyU2VydmljZSwgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSkge1xuXG4gICAgLy8gQ2hlY2sgaWYgdGhlIG5ldyBzZWFyY2ggdmFsdWUgaXMgZGlmZmVyZW50IGZyb20gdGhlIHByZXZpb3VzIHNlYXJjaCB2YWx1ZSBhbmQgdGhlIGN1cnJlbnQgdmFsdWUuXG4gICAgdGhpcy5hdXRvY29tcGxldGVTZWFyY2hWYWx1ZSQucGlwZShcbiAgICAgIGRlYm91bmNlVGltZSgzMDApXG4gICAgKS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgaWYgKHZhbHVlICE9PSB0aGlzLnByZXZpb3VzU2VhcmNoVmFsdWUgJiYgdmFsdWUgIT09IHRoaXMudmFsdWUpIHtcbiAgICAgICAgdGhpcy5wcmV2aW91c1NlYXJjaFZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuZmV0Y2hBdXRvY29tcGxldGVEYXRhKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIFN1YnNjcmliZSB0byB0aGUgbGF0ZXN0IGZvcm0gZWxlbWVudCBjaGFuZ2VzIG9ic2VydmFibGUgYW5kICB0aGUgZmxhZyBpbmRpY2F0aW5nIHRoYXQgdGhlIGZvcm0gZWxlbWVudCBoYXMgY2hhbmdlZC5cbiAgICB0aGlzLm9iamVjdEZvcm1IZWxwZXJTZXJ2aWNlLmxhdGVzdEZvcm1FbGVtZW50Q2hhbmdlcyRcbiAgICAgIC5zdWJzY3JpYmUobGF0ZXN0Q2hhbmdlcyA9PiB7XG4gICAgICAgIHRoaXMuaGFzRm9ybUVsZW1lbnRDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgIH0pO1xuICB9XG5cbiAgZ2V0IGxpc3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xpc3Q7XG4gIH1cblxuICBnZXQgc2VsZWN0ZWROb2RlcygpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWROb2RlcztcbiAgfVxuXG4gIEBJbnB1dCgnZmlsdGVyRnVuY3Rpb24nKVxuICBzZXQgZmlsdGVyRnVuY3Rpb24oZnVuYzogRnVuY3Rpb24pIHtcbiAgICBpZiAodGhpcy5fbGlzdCkge1xuICAgICAgdGhpcy5idWlsZFRyZWUoKTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoJ2xpc3RPYmplY3QnKVxuICBzZXQgbGlzdE9iamVjdChsbzogQXV0b2NvbXBsZXRlUmVzcG9uc2UpIHtcbiAgICBpZiAobG8pIHtcbiAgICAgIHRoaXMucHJvY2Vzc0xpc3RPYmplY3QobG8pO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBhdXRvY29tcGxldGVVcmwodXJsOiBzdHJpbmcpIHtcbiAgICBpZiAodXJsKSB7XG4gICAgICB0aGlzLmhhc0F1dG9jb21wbGV0ZVVybCA9IHRydWU7XG4gICAgICB0aGlzLmF1dG9jb21wbGV0ZVVybFZhbHVlID0gdXJsO1xuICAgIH1cbiAgfVxuXG4gIHNldCBzZWxlY3RlZE5vZGVzKG46IGFueSkge1xuICAgIGlmIChuICYmICFBcnJheS5pc0FycmF5KG4pKSB7XG4gICAgICB0aGlzLmF1dG9jb21wbGV0ZUZuKG5bKHRoaXMuX2xpc3Q/LmNvbmZpZz8udGl0bGUgPyB0aGlzLl9saXN0LmNvbmZpZy50aXRsZSA6IHRoaXMuX2xpc3Q/LmNvbmZpZz8udmFsdWVGaWVsZCkgfHwgJ3ZhbHVlJ10gfHwgKG4udGl0bGUgPyBuLnRpdGxlIDogbi5uYW1lKSk7XG4gICAgfVxuICAgIHRoaXMuX3NlbGVjdGVkTm9kZXMgPSBzdHJ1Y3R1cmVkQ2xvbmUobik7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyBhdXRvY29tcGxldGUgZGF0YSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgc2VhcmNoIHZhbHVlLlxuICAgKlxuICAgKiBJZiB0aGUgYXV0b2NvbXBsZXRlIHZhbHVlcyBhcmUgY2FjaGVkIGFuZCB0aGVyZSBpcyBubyBzZWFyY2ggdmFsdWUgb3IgZm9ybSBlbGVtZW50IGNoYW5nZSxcbiAgICogaXQgcmV0cmlldmVzIHRoZSBjYWNoZWQgdmFsdWVzIGZyb20gbG9jYWwgc3RvcmFnZS4gT3RoZXJ3aXNlLCBpdCBtYWtlcyBhbiBIVFRQIHJlcXVlc3QgdG8gZmV0Y2hcbiAgICogdGhlIGF1dG9jb21wbGV0ZSBkYXRhLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3NlYXJjaFZhbHVlPW51bGxdIC0gVGhlIHNlYXJjaCB2YWx1ZSB1c2VkIHRvIGZpbHRlciB0aGUgYXV0b2NvbXBsZXRlIHJlc3VsdHMuXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgZmV0Y2hBdXRvY29tcGxldGVEYXRhKHNlYXJjaFZhbHVlOiBzdHJpbmcgPSBudWxsKTogdm9pZCB7XG4gICAgbGV0IGF1dG9jb21wZWx0ZUxpc3RWYWx1ZXM6IEF1dG9jb21wbGV0ZVJlc3BvbnNlID0ge30gYXMgQXV0b2NvbXBsZXRlUmVzcG9uc2U7XG4gICAgbGV0IHVybCA9IHRoaXMuYXV0b2NvbXBsZXRlVXJsVmFsdWU7XG4gICAgaWYgKHRoaXMuaGFzQXV0b2NvbXBsZXRlVmFsdWVzQ2FjaGVkKSB7XG4gICAgICBhdXRvY29tcGVsdGVMaXN0VmFsdWVzID0gdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oJ2F1dG9jb21wbGV0ZV8nICsgdGhpcy5mb3JtQ29udHJvbE5hbWUpO1xuICAgICAgdGhpcy5wcm9jZXNzTGlzdE9iamVjdChhdXRvY29tcGVsdGVMaXN0VmFsdWVzKTtcbiAgICAgIGlmIChzZWFyY2hWYWx1ZSkge1xuICAgICAgICB0aGlzLmZpbHRlckF1dG9jb21wbGV0ZVJlc3VsdHMoc2VhcmNoVmFsdWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzQXV0b2NvbXBsZXRlTG9hZGluZyA9IHRydWU7XG4gICAgICBsZXQgcGFyYW1zID0ge307XG5cbiAgICAgIGlmIChzZWFyY2hWYWx1ZSkge1xuICAgICAgICBwYXJhbXNbJ3F1ZXJ5J10gPSBzZWFyY2hWYWx1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuc2l0dWF0aW9uKSB7XG4gICAgICAgIHBhcmFtc1snc2l0dWF0aW9uJ10gPSBTdHJpbmcodGhpcy5zaXR1YXRpb24pLnRvTG93ZXJDYXNlKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZHluYW1pY0xpc3RTZXJ2aWNlLmdldEF1dG9jb21wbGV0ZURhdGEodXJsLCBwYXJhbXMpLnN1YnNjcmliZSgoZGF0YTogQXV0b2NvbXBsZXRlUmVzcG9uc2UpID0+IHtcbiAgICAgICAgdGhpcy5pc0F1dG9jb21wbGV0ZUxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zZXRGb3JtQ29udHJvbFZhbHVlKCk7XG4gICAgICAgIGlmICghc2VhcmNoVmFsdWUpIHtcbiAgICAgICAgICB0aGlzLmhhc0F1dG9jb21wbGV0ZVZhbHVlc0NhY2hlZCA9IHRydWU7XG4gICAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlLnNldEl0ZW0oJ2F1dG9jb21wbGV0ZV8nICsgdGhpcy5mb3JtQ29udHJvbE5hbWUsIGRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucHJvY2Vzc0xpc3RPYmplY3QoZGF0YSk7XG4gICAgICAgIGlmIChzZWFyY2hWYWx1ZSkge1xuICAgICAgICAgIHRoaXMuZmlsdGVyQXV0b2NvbXBsZXRlUmVzdWx0cyhzZWFyY2hWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYXNGb3JtRWxlbWVudENoYW5nZWQgPSBmYWxzZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByb3BhZ2F0ZUNoYW5nZSA9IChfOiBhbnkpID0+IHtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZT8udmFsdWUgfHwgdmFsdWUgfHwgbnVsbDtcbiAgICBjb25zdCB2YWx1ZXMgPSAhdGhpcy52YWx1ZSB8fCBBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpID8gdGhpcy52YWx1ZSB8fCBbXSA6IFt0aGlzLnZhbHVlXTtcblxuICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5vcGVyYXRvcikge1xuICAgICAgY29uc3Qgb3BlcmF0b3IgPSB2YWx1ZT8udXNlTm90ID8gU2VhcmNoRmlsdGVyLk9QRVJBVE9SLlVTRV9OT1QgOiB2YWx1ZS5vcGVyYXRvcjtcbiAgICAgIGNvbnN0IG1hdGNoID0gdGhpcy5hdmFpbGFibGVTZWFyY2hPcHRpb25zLmZpbmQoKG8pID0+IG8udmFsdWUgPT09IG9wZXJhdG9yKTtcbiAgICAgIHRoaXMuc2VhcmNoT3B0aW9uID0gbWF0Y2ggPyBtYXRjaC52YWx1ZSA6IHRoaXMuYXZhaWxhYmxlU2VhcmNoT3B0aW9uc1swXS52YWx1ZTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHRoaXMubXVsdGlzZWxlY3QgJiYgIXRoaXMuaGFzQXV0b2NvbXBsZXRlVXJsKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IFtdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzID0gbnVsbDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzID0gdmFsdWVzLm1hcCh2ID0+IHtcbiAgICAgICAgICBsZXQgbm9kZSA9IHt9O1xuICAgICAgICAgIG5vZGVbdGhpcy52YWx1ZUZpZWxkXSA9IHY7XG4gICAgICAgICAgbm9kZVsndmFsdWUnXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IG5vZGUgPSB7fTtcbiAgICAgICAgaWYgKHRoaXMudGl0bGUgJiYgdGhpcy5fbGlzdCkge1xuICAgICAgICAgIG5vZGUgPSB0aGlzLl9saXN0Py5lbnRyaWVzLmZpbmQoZW50cnkgPT4gZW50cnkubW9kZWxzPy5maW5kKG1vZGVsID0+IG1vZGVsLm5hbWUgPT09IHZhbHVlKSkubW9kZWxzPy5maW5kKG1vZGVsID0+IG1vZGVsLm5hbWUgPT09IHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBub2RlW3RoaXMudmFsdWVGaWVsZF0gPSB2YWx1ZTtcbiAgICAgICAgICBub2RlWyd2YWx1ZSddID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzID0gbm9kZTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3Qgbm9kZXMgPSAhdGhpcy5zZWxlY3RlZE5vZGVzIHx8IEFycmF5LmlzQXJyYXkodGhpcy5zZWxlY3RlZE5vZGVzKSA/IHRoaXMuc2VsZWN0ZWROb2RlcyB8fCBbXSA6IFt0aGlzLnNlbGVjdGVkTm9kZXNdO1xuXG4gICAgaWYgKHRoaXMuX2xpc3QgJiYgKG5vZGVzLmxlbmd0aCAhPT0gdmFsdWVzLmxlbmd0aCB8fCBub2Rlcy5zb21lKChuLCBpKSA9PiBuW3RoaXMudGl0bGUgPyB0aGlzLnRpdGxlIDogdGhpcy52YWx1ZUZpZWxkXSAhPT0gdmFsdWVzW2ldKSkpIHtcbiAgICAgIHRoaXMuYnVpbGRUcmVlKCk7XG4gICAgfVxuICB9XG5cbiAgb25WYWx1ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNldEZvcm1Db250cm9sVmFsdWUodHJ1ZSk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICB9XG5cbiAgb25BdXRvQ29tcGxldGVTZWxlY3Qobm9kZT8pOiB2b2lkIHtcbiAgICBjb25zdCB3YXNJbnZhbGlkID0gIXRoaXMuaXNWYWxpZDtcbiAgICB0aGlzLmlzVmFsaWQgPSB0cnVlO1xuICAgIHRoaXMuc2V0Rm9ybUNvbnRyb2xWYWx1ZSh3YXNJbnZhbGlkKTtcbiAgICBpZiAodGhpcy5oYXNBdXRvY29tcGxldGVVcmwpIHtcbiAgICAgIHRoaXMuZmV0Y2hBdXRvY29tcGxldGVEYXRhKCk7XG4gICAgfVxuICB9XG5cbiAgb25BdXRvQ29tcGxldGVVbnNlbGVjdChub2RlPyk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IHRoaXMuc2VsZWN0ZWROb2Rlcy5maWx0ZXIoKHNOb2RlKSA9PiBzTm9kZS52YWx1ZSAhPT0gbm9kZS52YWx1ZSk7XG4gICAgdGhpcy5zZXRGb3JtQ29udHJvbFZhbHVlKCk7XG4gIH1cblxuICBvblRyZWVTZWxlY3Rpb25DaGFuZ2VkKGV2dCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgdGhpcy5kaXNwbGF5ID0gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IHdhc0ludmFsaWQgPSAhdGhpcy5pc1ZhbGlkO1xuICAgIHRoaXMuaXNWYWxpZCA9IHRydWU7XG4gICAgdGhpcy5zZXRGb3JtQ29udHJvbFZhbHVlKHdhc0ludmFsaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGF1dG9jb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGJhc2VkIG9uIHRoZSBwcm92aWRlZCBzZWFyY2ggdGVybS5cbiAgICpcbiAgICogSWYgYHNlbGVjdGVkTm9kZXNgIGlzIHNldCwgaXQgcmVzZXRzIGFuZCB1cGRhdGVzIGBzZWxlY3RlZE5vZGVzYCB3aXRoIHRoZSBzZWFyY2ggdGVybS5cbiAgICogSWYgYGhhc0F1dG9jb21wbGV0ZVVybGAgaXMgdHJ1ZSwgaXQgdHJpZ2dlcnMgYW4gYXV0b2NvbXBsZXRlIHNlYXJjaCB2aWEgYW4gb2JzZXJ2YWJsZS5cbiAgICogT3RoZXJ3aXNlLCBpdCBmaWx0ZXJzIHRoZSBhdXRvY29tcGxldGUgcmVzdWx0cyBsb2NhbGx5LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGVybSAtIFRoZSBzZWFyY2ggdGVybSB1c2VkIGZvciBhdXRvY29tcGxldGUuXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgYXV0b2NvbXBsZXRlRm4odGVybTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWROb2Rlcykge1xuICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzID0gbnVsbDtcblxuICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzID0ge1xuICAgICAgICB2YWx1ZTogdGVybSxcbiAgICAgICAgZGF0YToge31cbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHRlcm0pIHtcbiAgICAgIHRoaXMuaGFzQXV0b2NvbXBsZXRlVXJsXG4gICAgICAgID8gdGhpcy5hdXRvY29tcGxldGVTZWFyY2hWYWx1ZSQubmV4dCh0ZXJtKVxuICAgICAgICA6IHRoaXMuZmlsdGVyQXV0b2NvbXBsZXRlUmVzdWx0cyh0ZXJtKTtcbiAgICB9XG4gIH1cblxuICBzaG93RGlhbG9nKGV2ZW50PywgZGlzcGxheSA9IHRydWUpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIC8vaWdub3JlIHN5bnRoZXRpemVkIGV2ZW50cyBvbiBlbnRlclxuICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICdjbGljaycgJiYgZXZlbnQuZGV0YWlsID09PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuaGFzQXV0b2NvbXBsZXRlVXJsICYmICF0aGlzLmhhc0F1dG9jb21wbGV0ZVZhbHVlc0NhY2hlZCkge1xuICAgICAgICB0aGlzLmZldGNoQXV0b2NvbXBsZXRlRGF0YSgpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmRpc3BsYXkgPSAhIWRpc3BsYXk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICB0aGlzLm11bHRpc2VsZWN0ID0gdHJ1ZTtcbiAgICAgIHRoaXMuaXNTZWFyY2ggPSB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMuZXZlbnRTZXJ2aWNlLm9uKEVuYWlvRXZlbnQuQ0xJRU5UX0xPQ0FMRV9DSEFOR0VEKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5yZXNldENhY2hlZFZhbHVlcygpO1xuICAgIH0pO1xuICAgIHRoaXMuZXZlbnRTZXJ2aWNlLm9uKEVuYWlvRXZlbnQuU0NIRU1BX0xPQ0FMRV9DSEFOR0VEKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5yZXNldENhY2hlZFZhbHVlcygpO1xuICAgIH0pO1xuXG4gIH1cblxuICBwdWJsaWMgdmFsaWRhdGUoYzogVW50eXBlZEZvcm1Db250cm9sKToge1trZXk6IHN0cmluZ106IHN0cmluZyB8IGJvb2xlYW4gfCB7dmFsaWQ6IGJvb2xlYW59fSB7XG4gICAgcmV0dXJuICh0aGlzLmlzVmFsaWQpID8gbnVsbCA6IHtcbiAgICAgIGR5bmFtaWNsaXN0OiB7XG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubG9jYWxTdG9yYWdlU2VydmljZS5yZW1vdmVJdGVtKCdhdXRvY29tcGxldGVfJyArIHRoaXMuZm9ybUNvbnRyb2xOYW1lKTtcbiAgICBpZiAodGhpcy5mb3JtRWxlbWVudENoYW5nZXNTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuZm9ybUVsZW1lbnRDaGFuZ2VzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFByb2Nlc3NlcyB0aGUgZ2l2ZW4gbGlzdCBvYmplY3QgYW5kIHVwZGF0ZXMgdGhlIGNvbXBvbmVudCdzIHN0YXRlIGFjY29yZGluZ2x5LlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCB1cGRhdGVzIHRoZSBpbnRlcm5hbCBsaXN0LCBzZWxlY3RlZCBub2RlcywgYW5kIHZhcmlvdXMgY29uZmlndXJhdGlvbiBmaWVsZHNcbiAgICogYmFzZWQgb24gdGhlIHByb3ZpZGVkIGxpc3Qgb2JqZWN0LiBJdCBhbHNvIHRyaWdnZXJzIHRoZSBidWlsZGluZyBvZiB0aGUgdHJlZSBzdHJ1Y3R1cmUuXG4gICAqXG4gICAqIEBwYXJhbSB7QXV0b2NvbXBsZXRlUmVzcG9uc2V9IGxpc3RPYmplY3QgLSBUaGUgbGlzdCBvYmplY3QgY29udGFpbmluZyBjb25maWd1cmF0aW9uIGFuZCBkYXRhLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBwcm9jZXNzTGlzdE9iamVjdChsaXN0T2JqZWN0OiBBdXRvY29tcGxldGVSZXNwb25zZSk6IHZvaWQge1xuICAgIHRoaXMuX2xpc3QgPSBsaXN0T2JqZWN0O1xuICAgIGlmIChsaXN0T2JqZWN0LmNvbmZpZyAmJiBsaXN0T2JqZWN0LmNvbmZpZy52YWx1ZUZpZWxkKSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZE5vZGVzKSB7XG4gICAgICAgIGlmICh0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzID0gdGhpcy5zZWxlY3RlZE5vZGVzLm1hcChzbiA9PiB7XG4gICAgICAgICAgICBzbltsaXN0T2JqZWN0LmNvbmZpZy52YWx1ZUZpZWxkXSA9IHNuW3RoaXMudmFsdWVGaWVsZF07XG4gICAgICAgICAgICBzblsndmFsdWUnXSA9IHNuW3RoaXMudmFsdWVGaWVsZF07XG4gICAgICAgICAgICByZXR1cm4gc247XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzW2xpc3RPYmplY3QuY29uZmlnLnZhbHVlRmllbGRdID0gdGhpcy5zZWxlY3RlZE5vZGVzW3RoaXMudmFsdWVGaWVsZF07XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzWyd2YWx1ZSddID0gdGhpcy5zZWxlY3RlZE5vZGVzW3RoaXMudmFsdWVGaWVsZF07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMudmFsdWVGaWVsZCA9IGxpc3RPYmplY3QuY29uZmlnLnZhbHVlRmllbGQ7XG4gICAgICB0aGlzLnRpdGxlID0gbGlzdE9iamVjdC5jb25maWcudGl0bGU7XG4gICAgfVxuICAgIGlmIChsaXN0T2JqZWN0LmNvbmZpZyAmJiBsaXN0T2JqZWN0LmNvbmZpZy5kZXNjcmlwdGlvbkZpZWxkKSB7XG4gICAgICB0aGlzLmRlc2NyaXB0aW9uRmllbGQgPSBsaXN0T2JqZWN0LmNvbmZpZy5kZXNjcmlwdGlvbkZpZWxkO1xuICAgIH1cbiAgICBpZiAobGlzdE9iamVjdC5jb25maWcgJiYgbGlzdE9iamVjdC5jb25maWcuc3ViRW50cmllc0ZpZWxkKSB7XG4gICAgICB0aGlzLnN1YkVudHJpZXNGaWVsZCA9IGxpc3RPYmplY3QuY29uZmlnLnN1YkVudHJpZXNGaWVsZDtcbiAgICB9XG4gICAgdGhpcy5idWlsZFRyZWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGFuZCBwcm9wYWdhdGVzIHRoZSBmb3JtIGNvbnRyb2xzIHZhbHVlIGJhc2VkIG9uIHRoZSBjb21wb25lbnRzIGlubmVyIHZhbHVlcy4gUHJvcGFnYXRlcyBvbmx5IHdoZW4gdGhlIHZhbHVlIGhhcyBjaGFuZ2VkLlxuICAgKiBAcGFyYW0gZm9yY2VQcm9wYWdhdGlvbiAtIGZvcmNlcyBwcm9wYWdhdGlvbiBldmVuIGlmIHRoZSB2YWx1ZSBoYXNuJ3QgYmVlbiBjaGFuZ2VkXG4gICAqL1xuICBwcml2YXRlIHNldEZvcm1Db250cm9sVmFsdWUoZm9yY2VQcm9wYWdhdGlvbj86IGJvb2xlYW4pIHtcbiAgICBsZXQgdjtcbiAgICBsZXQgY2hhbmdlZDogYm9vbGVhbjtcbiAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCAmJiBBcnJheS5pc0FycmF5KHRoaXMuc2VsZWN0ZWROb2RlcykpIHtcbiAgICAgIHYgPSB0aGlzLnNlbGVjdGVkTm9kZXMgPyB0aGlzLnNlbGVjdGVkTm9kZXM/Lm1hcCgobm9kZSkgPT4gbm9kZVt0aGlzLnZhbHVlRmllbGRdKSA6IFtdO1xuICAgICAgY2hhbmdlZCA9ICF0aGlzLnZhbHVlIHx8ICEodi5sZW5ndGggPT09IHRoaXMudmFsdWUubGVuZ3RoICYmIHYuZXZlcnkoKHZhbCkgPT4gdGhpcy52YWx1ZS5zb21lKChjdXJWYWwpID0+IGN1clZhbCA9PT0gdmFsKSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2ID0gdGhpcy5zZWxlY3RlZE5vZGVzICYmIHRoaXMuc2VsZWN0ZWROb2Rlcy5kYXRhID8gdGhpcy5zZWxlY3RlZE5vZGVzPy5kYXRhW3RoaXMudmFsdWVGaWVsZF0gOiBudWxsO1xuICAgICAgY2hhbmdlZCA9IHYgIT09IHRoaXMudmFsdWU7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VkIHx8IGZvcmNlUHJvcGFnYXRpb24pIHtcbiAgICAgIHRoaXMudmFsdWUgPSB2O1xuICAgICAgaWYgKHY/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHtcbiAgICAgICAgICBvcGVyYXRvcjogdGhpcy5zZWFyY2hPcHRpb24sXG4gICAgICAgICAgdmFsdWU6IHYsXG4gICAgICAgICAgYWN0dWFsT3BlcmF0b3I6IHRoaXMuc2VhcmNoT3B0aW9uID09PSBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuVVNFX05PVCA/IFNlYXJjaEZpbHRlci5PUEVSQVRPUi5JTiA6IG51bGwsXG4gICAgICAgICAgdXNlTm90OiB0aGlzLnNlYXJjaE9wdGlvbiA9PT0gU2VhcmNoRmlsdGVyLk9QRVJBVE9SLlVTRV9OT1RcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRUcmVlKCkge1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlVmFsdWVzID0gW107XG4gICAgbGV0IHRyZWU6IFRyZWVOb2RlW10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX2xpc3QuZW50cmllcy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5hZGRUcmVlTm9kZSh0cmVlLCB0aGlzLl9saXN0LmVudHJpZXNbaV0pO1xuICAgIH1cbiAgICB0aGlzLnRyZWUgPSB0cmVlO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRUcmVlTm9kZShwYXJlbnROb2RlOiBUcmVlTm9kZVtdLCBsaXN0RW50cnkpIHtcbiAgICBpZiAodGhpcy5maWx0ZXJGdW5jdGlvbiAmJiAhdGhpcy5maWx0ZXJGdW5jdGlvbihsaXN0RW50cnkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBub2RlOiBUcmVlTm9kZSA9IHRoaXMubGlzdEVudHJ5VG9UcmVlTm9kZShsaXN0RW50cnkpO1xuICAgIGlmIChub2RlLnNlbGVjdGFibGUpIHtcbiAgICAgIHRoaXMuYXV0b2NvbXBsZXRlVmFsdWVzLnB1c2gobm9kZSk7XG4gICAgfVxuICAgIGlmIChsaXN0RW50cnlbdGhpcy5zdWJFbnRyaWVzRmllbGRdKSB7XG4gICAgICBub2RlLmNoaWxkcmVuID0gW107XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3RFbnRyeVt0aGlzLnN1YkVudHJpZXNGaWVsZF0ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy5hZGRUcmVlTm9kZShub2RlLmNoaWxkcmVuLCBsaXN0RW50cnlbdGhpcy5zdWJFbnRyaWVzRmllbGRdW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGxpc3RFbnRyeVt0aGlzLnByb2plY3RzRW50cmllc0ZpZWxkXSkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0RW50cnlbdGhpcy5wcm9qZWN0c0VudHJpZXNGaWVsZF0ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy5hZGRUcmVlTm9kZShub2RlLmNoaWxkcmVuLCBsaXN0RW50cnlbdGhpcy5wcm9qZWN0c0VudHJpZXNGaWVsZF1baV0pO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNoZWNrU2VsZWN0ZWQobm9kZSk7XG4gICAgcGFyZW50Tm9kZS5wdXNoKG5vZGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja1NlbGVjdGVkKG5vZGU6IFRyZWVOb2RlKSB7XG4gICAgaWYgKCF0aGlzLnZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLm11bHRpc2VsZWN0ICYmIEFycmF5LmlzQXJyYXkodGhpcy5zZWxlY3RlZE5vZGVzKSkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGlzVHJlZU5vZGVWYWx1ZUluVmFsdWUgPSBub2RlLmRhdGFbdGhpcy52YWx1ZUZpZWxkXSA9PT0gdGhpcy52YWx1ZVtpXTtcbiAgICAgICAgaWYgKGlzVHJlZU5vZGVWYWx1ZUluVmFsdWUpIHtcbiAgICAgICAgICBjb25zdCBzZWxlY3RlZE5vZGVUaGF0SGFzVmFsdWUgPSB0aGlzLnNlbGVjdGVkTm9kZXMuZmluZChzTiA9PiBzTlt0aGlzLnZhbHVlRmllbGRdID09PSB0aGlzLnZhbHVlW2ldKTtcbiAgICAgICAgICBpZiAoIXNlbGVjdGVkTm9kZVRoYXRIYXNWYWx1ZSkge1xuICAgICAgICAgICAgbm9kZS5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZXMucHVzaChub2RlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2VsZWN0ZWROb2RlVGhhdEhhc1ZhbHVlLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG5vZGUuZGF0YVt0aGlzLnZhbHVlRmllbGRdID09PSB0aGlzLnZhbHVlKSB7XG4gICAgICAgIG5vZGUuc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSBub2RlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG5cbiAgcHJpdmF0ZSBsaXN0RW50cnlUb1RyZWVOb2RlKGxpc3RFbnRyeSk6IFRyZWVOb2RlIHtcbiAgICBsZXQgc2VsZWN0YWJsZTogYm9vbGVhbjtcbiAgICBpZiAodGhpcy5fbGlzdCAmJiB0aGlzLl9saXN0LmNvbmZpZyAmJiB0aGlzLl9saXN0LmNvbmZpZy5hbGxlbGVtZW50c3NlbGVjdGFibGUpIHtcbiAgICAgIHNlbGVjdGFibGUgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWxlY3RhYmxlID0gIShsaXN0RW50cnlbdGhpcy5zdWJFbnRyaWVzRmllbGRdICYmIGxpc3RFbnRyeVt0aGlzLnN1YkVudHJpZXNGaWVsZF0ubGVuZ3RoID4gMCk7XG4gICAgfVxuXG4gICAgbGV0IHRyZWVOb2RlID0ge1xuICAgICAgaWQ6IGxpc3RFbnRyeS5pZCA/IGxpc3RFbnRyeS5pZCA6IGxpc3RFbnRyeVt0aGlzLnZhbHVlRmllbGRdLFxuICAgICAgbmFtZTogbGlzdEVudHJ5W3RoaXMuZGVzY3JpcHRpb25GaWVsZF0gPyBsaXN0RW50cnlbdGhpcy52YWx1ZUZpZWxkXSArICcgKCcgKyBsaXN0RW50cnlbdGhpcy5kZXNjcmlwdGlvbkZpZWxkXSArICcpJyA6IGxpc3RFbnRyeVt0aGlzLnZhbHVlRmllbGRdLFxuICAgICAgdGl0bGU6IGxpc3RFbnRyeVt0aGlzLnRpdGxlXSxcbiAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgIGV4cGFuZGVkOiBmYWxzZSxcbiAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgIHNlbGVjdGFibGU6IGxpc3RFbnRyeS5zZWxlY3RhYmxlID8/IHNlbGVjdGFibGUsXG4gICAgICBkYXRhOiBsaXN0RW50cnlcbiAgICB9O1xuICAgIHRyZWVOb2RlW3RoaXMudmFsdWVGaWVsZF0gPSBsaXN0RW50cnlbdGhpcy52YWx1ZUZpZWxkXTtcbiAgICB0cmVlTm9kZS5kYXRhWyd2YWx1ZSddID0gbGlzdEVudHJ5W3RoaXMudmFsdWVGaWVsZF07XG4gICAgdHJlZU5vZGVbdGhpcy5kZXNjcmlwdGlvbkZpZWxkXSA9IGxpc3RFbnRyeVt0aGlzLmRlc2NyaXB0aW9uRmllbGRdO1xuICAgIHRyZWVOb2RlW3RoaXMuc3ViRW50cmllc0ZpZWxkXSA9IGxpc3RFbnRyeVt0aGlzLnN1YkVudHJpZXNGaWVsZF07XG5cbiAgICByZXR1cm4gdHJlZU5vZGU7XG4gIH1cblxuICAvKipcbiAgICogRmlsdGVycyB0aGUgYXV0b2NvbXBsZXRlIHJlc3VsdHMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHNlYXJjaCB0ZXJtLlxuICAgKlxuICAgKiBUaGUgbWV0aG9kIGZpbHRlcnMgdGhlIGBhdXRvY29tcGxldGVWYWx1ZXNgIGFycmF5IHRvIGZpbmQgbm9kZXMgdGhhdCBtYXRjaCB0aGUgc2VhcmNoIHRlcm0uXG4gICAqIEl0IGFsc28gYXBwbGllcyBhZGRpdGlvbmFsIGZpbHRlcmluZyBiYXNlZCBvbiB0aGUgYGZpbHRlckZ1bmN0aW9uYCBhbmQgYG11bHRpc2VsZWN0YCBwcm9wZXJ0aWVzLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGVybSAtIFRoZSBzZWFyY2ggdGVybSB1c2VkIHRvIGZpbHRlciB0aGUgYXV0b2NvbXBsZXRlIHJlc3VsdHMuXG4gICAqL1xuICBwcml2YXRlIGZpbHRlckF1dG9jb21wbGV0ZVJlc3VsdHModGVybTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5hdXRvY29tcGxldGVSZXMgPSB0aGlzLmF1dG9jb21wbGV0ZVZhbHVlcy5maWx0ZXIoKGFjTm9kZSkgPT4ge1xuICAgICAgaWYgKHRoaXMuZmlsdGVyRnVuY3Rpb24gJiYgIXRoaXMuZmlsdGVyRnVuY3Rpb24oYWNOb2RlLmRhdGEpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm11bHRpc2VsZWN0ICYmIEFycmF5LmlzQXJyYXkodGhpcy5zZWxlY3RlZE5vZGVzKSkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZE5vZGVzLmZpbmQoKG5vZGUpID0+IGFjTm9kZS5kYXRhW3RoaXMudmFsdWVGaWVsZF0gPT09IG5vZGUuZGF0YVt0aGlzLnZhbHVlRmllbGRdKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGFjTm9kZS5kYXRhW3RoaXMudmFsdWVGaWVsZF0udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluZGV4T2YodGVybT8udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSAhPT0gLTEgfHxcbiAgICAgICAgKGFjTm9kZS5kYXRhW3RoaXMuZGVzY3JpcHRpb25GaWVsZF0gJiYgYWNOb2RlLmRhdGFbdGhpcy5kZXNjcmlwdGlvbkZpZWxkXS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0ZXJtPy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpICE9PSAtMSk7XG4gICAgfSkuc2xpY2UoMCwgMTApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGUgY2FjaGVkIGF1dG9jb21wbGV0ZSB2YWx1ZXMuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIHNldHMgdGhlIGBoYXNBdXRvY29tcGxldGVWYWx1ZXNDYWNoZWRgIGZsYWcgdG8gYGZhbHNlYCBhbmQgcmVtb3Zlc1xuICAgKiB0aGUgY2FjaGVkIGF1dG9jb21wbGV0ZSB2YWx1ZXMgZnJvbSBsb2NhbCBzdG9yYWdlIHVzaW5nIHRoZSBgZm9ybUNvbnRyb2xOYW1lYC5cbiAgICovXG4gIHByaXZhdGUgcmVzZXRDYWNoZWRWYWx1ZXMoKTogdm9pZCB7XG4gICAgdGhpcy5oYXNBdXRvY29tcGxldGVWYWx1ZXNDYWNoZWQgPSBmYWxzZTtcbiAgICB0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2UucmVtb3ZlSXRlbSgnYXV0b2NvbXBsZXRlXycgKyB0aGlzLmZvcm1Db250cm9sTmFtZSk7XG4gIH1cblxufVxuIiwiPGVvLWRpYWxvZyAjbGlzdERpYWxvZyBbdGl0bGVdPVwicGlja2VyVGl0bGVcIiBbdmlzaWJsZV09XCJkaXNwbGF5XCIgW25nQ2xhc3NdPVwie2VtcHR5OiAhKGxpc3Q/LmVudHJpZXM/Lmxlbmd0aCkgJiYgZGlzcGxheX1cIlxuICBbc3R5bGVDbGFzc109XCInZHlubGlzdC1kaWFsb2cnXCIgKGhpZGUpPVwiZGlzcGxheSA9IGZhbHNlXCI+XG5cbiAgPGVvLXRyZWUgW3RyZWVdPVwidHJlZVwiICpuZ0lmPVwiZGlzcGxheSAmJiB0cmVlXCIgW2lzRGlzcGxheWVkXT1cImRpc3BsYXlcIiBbb3B0aW9uc109XCJ7bXVsdGlzZWxlY3Q6IG11bHRpc2VsZWN0fVwiXG4gICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZE5vZGVzXCIgKGtleXVwLmVudGVyKT1cInNob3dEaWFsb2coJGV2ZW50LCBmYWxzZSlcIlxuICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uVHJlZVNlbGVjdGlvbkNoYW5nZWQoJGV2ZW50KVwiPlxuICA8L2VvLXRyZWU+XG5cbiAgQGlmICghKGxpc3Q/LmVudHJpZXM/Lmxlbmd0aCkpIHtcbiAgICA8ZGl2IGNsYXNzPVwiZW1wdHlcIj5cbiAgICAgIEBpZiAoaXNBdXRvY29tcGxldGVMb2FkaW5nKSB7XG4gICAgICAgIDxlby1sb2FkaW5nLXNwaW5uZXIgW3NpemVdPVwiJ3NtYWxsJ1wiPjwvZW8tbG9hZGluZy1zcGlubmVyPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxkaXYgdHJhbnNsYXRlPmVvLmZvcm0ucHJvcGVydHkuZHluYW1pYy5saXN0LmVtcHR5PC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIH1cbjwvZW8tZGlhbG9nPlxuXG48ZGl2IGNsYXNzPVwiZW8tZHluYW1pYy1saXN0XCIgW25nQ2xhc3NdPVwie2Z1bGw6IHNlbGVjdGVkTm9kZXMgJiYgc2VsZWN0ZWROb2Rlcy5sZW5ndGggPT09IGF1dG9jb21wbGV0ZVZhbHVlcy5sZW5ndGh9XCI+XG5cbiAgQGlmIChpc1NlYXJjaCAmJiAhaXNUYWJsZUVsZW1lbnQpIHtcbiAgICA8eXZjLWRyb3Bkb3duIFsobmdNb2RlbCldPVwic2VhcmNoT3B0aW9uXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgpXCIgW29wdGlvbnNdPVwiYXZhaWxhYmxlU2VhcmNoT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicmVhZG9ubHlcIiBbZGlzYWJsZUNsZWFyQnV0dG9uXT1cInRydWVcIj48L3l2Yy1kcm9wZG93bj5cbiAgfVxuXG4gIDx5dmMtYXV0b2NvbXBsZXRlIFsobmdNb2RlbCldPVwic2VsZWN0ZWROb2Rlc1wiICNhdXRvY29tcGxldGUgKHN1Z2dlc3Rpb25TZWxlY3QpPVwib25BdXRvQ29tcGxldGVTZWxlY3QoJGV2ZW50KVwiXG4gICAgW2Rpc2FibGVkXT1cInJlYWRvbmx5XCIgKHN1Z2dlc3Rpb25VbnNlbGVjdCk9XCJvbkF1dG9Db21wbGV0ZVVuc2VsZWN0KCRldmVudClcIiBbZm9yY2VTZWxlY3Rpb25dPVwidHJ1ZVwiXG4gICAgW2F1dG9jb21wbGV0ZVZhbHVlc109XCJhdXRvY29tcGxldGVSZXNcIiAobmdNb2RlbENoYW5nZSk9XCJvblRyZWVTZWxlY3Rpb25DaGFuZ2VkKCRldmVudClcIiBmaWVsZD1cInt7c2VsZWN0ZWROb2Rlcz8udGl0bGUgPyB0aXRsZSA6IHZhbHVlRmllbGR9fVwiIChhdXRvY29tcGxldGVGbmMpPVwiYXV0b2NvbXBsZXRlRm4oJGV2ZW50KVwiXG4gICAgW211bHRpcGxlXT1cIm11bHRpc2VsZWN0XCI+XG5cbiAgICA8bmctdGVtcGxhdGUgbGV0LWl0ZW0gI2NoaXBUZW1wbGF0ZT5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZVwiPnt7aXRlbVt2YWx1ZUZpZWxkXX19PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlICNhdXRvY29tcGxldGVPcHRpb25UZW1wbGF0ZSBsZXQtaXRlbT5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZVwiPnt7aXRlbVt2YWx1ZUZpZWxkXX19PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvblwiIHN0eWxlPVwiZm9udC1zdHlsZTogaXRhbGljOyBjb2xvcjogdmFyKC0tdGV4dC1jb2xvci1jYXB0aW9uKVwiPnt7aXRlbVtkZXNjcmlwdGlvbkZpZWxkXX19PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L3l2Yy1hdXRvY29tcGxldGU+XG5cbiAgPGJ1dHRvbiAjYnV0dG9uIGNsYXNzPVwidWktYnV0dG9uXCIgKm5nSWY9XCIhcmVhZG9ubHlcIiBbZGlzYWJsZWRdPVwicmVhZG9ubHlcIiAoY2xpY2spPVwic2hvd0RpYWxvZygkZXZlbnQsICEhJGV2ZW50LmRldGFpbClcIlxuICAgIChrZXl1cC5hcnJvd0Rvd24pPVwic2hvd0RpYWxvZygkZXZlbnQpXCIgKGtleXVwLmVudGVyKT1cInNob3dEaWFsb2coJGV2ZW50KVwiIChrZXl1cC5zcGFjZSk9XCJzaG93RGlhbG9nKCRldmVudClcIj5cbiAgICA8ZW8taWNvbiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19hcnJvd19kb3duLnN2ZydcIj48L2VvLWljb24+XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
505
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL2Zvcm0tZWxlbWVudHMvZHluYW1pYy1saXN0L2R5bmFtaWMtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9mb3JtLWVsZW1lbnRzL2R5bmFtaWMtbGlzdC9keW5hbWljLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQVUsS0FBSyxFQUFFLFNBQVMsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUN6RixPQUFPLEVBSUwsaUJBQWlCLEVBQ2pCLGFBQWEsRUFDZCxNQUFNLGdCQUFnQixDQUFDO0FBR3hCLE9BQU8sRUFBNEMsVUFBVSxFQUFnQixVQUFVLEVBQUUsWUFBWSxFQUFRLE1BQU0sY0FBYyxDQUFDO0FBQ2xJLE9BQU8sRUFBQyxZQUFZLEVBQWMsT0FBTyxFQUFlLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7OztBQXFCckUsTUFBTSxPQUFPLG9CQUFvQjtJQTZDL0IsbUNBQW1DO0lBQ25DLFlBQW9CLGtCQUFzQyxFQUFVLG1CQUF3QyxFQUFVLHVCQUFnRCxFQUFVLFlBQTBCO1FBQXRMLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFBVSx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQVUsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBbkNqTSxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUV6Qyx1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDM0IsZ0NBQTJCLEdBQUcsS0FBSyxDQUFDO1FBQ3BDLHlCQUFvQixHQUFXLElBQUksQ0FBQztRQUNwQywwQkFBcUIsR0FBRyxLQUFL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QUMsR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUM7Z0JBQ25ELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRiw0T0M5QkgseTNFQWtEQTs7MkZEbEJhLG9CQUFvQjtrQkFqQmhDLFNBQVM7K0JBQ0UsaUJBQWlCLGFBR2hCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHFCQUFxQixDQUFDOzRCQUNuRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsYUFBYTs0QkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUscUJBQXFCLENBQUM7NEJBQ25ELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGOzBMQUkwQixpQkFBaUI7c0JBQTNDLFNBQVM7dUJBQUMsY0FBYztnQkFDSixrQkFBa0I7c0JBQXRDLFNBQVM7dUJBQUMsUUFBUTtnQkFFVixTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBK0RGLGNBQWM7c0JBRGpCLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQVFuQixVQUFVO3NCQURiLEtBQUs7dUJBQUMsWUFBWTtnQkFRZixlQUFlO3NCQURsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIGZvcndhcmRSZWYsIE9uSW5pdCwgSW5wdXQsIFZpZXdDaGlsZCwgT25EZXN0cm95fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFVudHlwZWRGb3JtQ29udHJvbCxcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIFZhbGlkYXRvcixcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIE5HX1ZBTElEQVRPUlNcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtBdXRvQ29tcGxldGV9IGZyb20gJ0B5dXV2aXMvY29tcG9uZW50cy9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHtUcmVlTm9kZX0gZnJvbSAnLi4vLi4vdHJlZS90cmVlLmNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHtMb2NhbFN0b3JhZ2VTZXJ2aWNlLCBBdXRvY29tcGxldGVSZXNwb25zZSwgRW5haW9FdmVudCwgRXZlbnRTZXJ2aWNlLCBSYW5nZVZhbHVlLCBTZWFyY2hGaWx0ZXIsIFV0aWxzfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWUsIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge09iamVjdEZvcm1IZWxwZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS1oZWxwZXIuc2VydmljZSc7XG5pbXBvcnQge0R5bmFtaWNMaXN0U2VydmljZX0gZnJvbSAnLi9keW5hbWljLWxpc3Quc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLWR5bmFtaWMtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9keW5hbWljLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9keW5hbWljLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEeW5hbWljTGlzdENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IER5bmFtaWNMaXN0Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBEeW5hbWljTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3IsIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBAVmlld0NoaWxkKCdhdXRvY29tcGxldGUnKSBhdXRvQ29tcGxldGVJbnB1dDogQXV0b0NvbXBsZXRlO1xuICBAVmlld0NoaWxkKCdidXR0b24nKSBhdXRvQ29tcGxldGVCdXR0b247XG5cbiAgQElucHV0KCkgc2l0dWF0aW9uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIG11bHRpc2VsZWN0OiBib29sZWFuO1xuICBASW5wdXQoKSBwaWNrZXJUaXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbjtcbiAgQElucHV0KCkgZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGZvcm1FbGVtZW50Q2hhbmdlczogT2JzZXJ2YWJsZTxhbnk+O1xuICBASW5wdXQoKSBpc1RhYmxlRWxlbWVudDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGhhc0F1dG9jb21wbGV0ZVVybCA9IGZhbHNlO1xuICBoYXNBdXRvY29tcGxldGVWYWx1ZXNDYWNoZWQgPSBmYWxzZTtcbiAgYXV0b2NvbXBsZXRlVXJsVmFsdWU6IHN0cmluZyA9IG51bGw7XG4gIGlzQXV0b2NvbXBsZXRlTG9hZGluZyA9IGZhbHNlO1xuICB2YWx1ZUZpZWxkID0gJ3ZhbHVlJztcbiAgc3ViRW50cmllc0ZpZWxkID0gJ2VudHJpZXMnO1xuICBwcm9qZWN0c0VudHJpZXNGaWVsZCA9ICdwcm9qZWN0cyc7XG4gIGRlc2NyaXB0aW9uRmllbGQgPSAnZGVzY3JpcHRpb24nO1xuICB0aXRsZSA9ICd0aXRsZSc7XG4gIGRpc3BsYXkgPSBmYWxzZTtcbiAgdmFsdWU7XG4gIHRyZWU6IFRyZWVOb2RlW107XG4gIGF1dG9jb21wbGV0ZVJlcztcbiAgYXV0b2NvbXBsZXRlVmFsdWVzOiBUcmVlTm9kZVtdID0gW107XG4gIHByZXZpb3VzU2VhcmNoVmFsdWUgPSBcIlwiO1xuICBoYXNGb3JtRWxlbWVudENoYW5nZWQgPSBmYWxzZTtcbiAgaXNTZWFyY2ggPSBmYWxzZTtcbiAgaXNQcm9wYWdhdGluZ0NoYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIG9wdGlvbnMgZm9yIHNlYXJjaCBzaXR1YXRpb25cbiAgcHVibGljIGF2YWlsYWJsZVNlYXJjaE9wdGlvbnMgPSBbXG4gICAge2xhYmVsOiBSYW5nZVZhbHVlLmdldE9wZXJhdG9yTGFiZWwoU2VhcmNoRmlsdGVyLk9QRVJBVE9SLkVRVUFMKSwgdmFsdWU6IFNlYXJjaEZpbHRlci5PUEVSQVRPUi5JTn0sXG4gICAge2xhYmVsOiBSYW5nZVZhbHVlLmdldE9wZXJhdG9yTGFiZWwoU2VhcmNoRmlsdGVyLk9QRVJBVE9SLlVTRV9OT1QpLCB2YWx1ZTogU2VhcmNoRmlsdGVyLk9QRVJBVE9SLlVTRV9OT1QsIGFjdHVhbE9wZXJhdG9yOiBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuSU59LFxuICBdO1xuXG4gIHB1YmxpYyBzZWFyY2hPcHRpb24gPSB0aGlzLmF2YWlsYWJsZVNlYXJjaE9wdGlvbnNbMF0udmFsdWU7XG4gIHByaXZhdGUgYXV0b2NvbXBsZXRlU2VhcmNoVmFsdWUkID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBwcml2YXRlIF9zZWxlY3RlZE5vZGVzOiBhbnk7XG4gIHByaXZhdGUgaXNWYWxpZCA9IHRydWU7XG4gIHByaXZhdGUgZm9ybUVsZW1lbnRDaGFuZ2VzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgX2xpc3Q6IGFueTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGR5bmFtaWNMaXN0U2VydmljZTogRHluYW1pY0xpc3RTZXJ2aWNlLCBwcml2YXRlIGxvY2FsU3RvcmFnZVNlcnZpY2U6IExvY2FsU3RvcmFnZVNlcnZpY2UsIHByaXZhdGUgb2JqZWN0Rm9ybUhlbHBlclNlcnZpY2U6IE9iamVjdEZvcm1IZWxwZXJTZXJ2aWNlLCBwcml2YXRlIGV2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlKSB7XG5cbiAgICAvLyBDaGVjayBpZiB0aGUgbmV3IHNlYXJjaCB2YWx1ZSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgcHJldmlvdXMgc2VhcmNoIHZhbHVlIGFuZCB0aGUgY3VycmVudCB2YWx1ZS5cbiAgICB0aGlzLmF1dG9jb21wbGV0ZVNlYXJjaFZhbHVlJC5waXBlKFxuICAgICAgZGVib3VuY2VUaW1lKDMwMClcbiAgICApLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBpZiAodmFsdWUgIT09IHRoaXMucHJldmlvdXNTZWFyY2hWYWx1ZSAmJiB2YWx1ZSAhPT0gdGhpcy52YWx1ZSkge1xuICAgICAgICB0aGlzLnByZXZpb3VzU2VhcmNoVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5mZXRjaEF1dG9jb21wbGV0ZURhdGEodmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHRoZSBsYXRlc3QgZm9ybSBlbGVtZW50IGNoYW5nZXMgb2JzZXJ2YWJsZSBhbmQgIHRoZSBmbGFnIGluZGljYXRpbmcgdGhhdCB0aGUgZm9ybSBlbGVtZW50IGhhcyBjaGFuZ2VkLlxuICAgIHRoaXMub2JqZWN0Rm9ybUhlbHBlclNlcnZpY2UubGF0ZXN0Rm9ybUVsZW1lbnRDaGFuZ2VzJFxuICAgICAgLnN1YnNjcmliZShsYXRlc3RDaGFuZ2VzID0+IHtcbiAgICAgICAgdGhpcy5oYXNGb3JtRWxlbWVudENoYW5nZWQgPSB0cnVlO1xuICAgICAgfSk7XG4gIH1cblxuICBnZXQgbGlzdCgpIHtcbiAgICByZXR1cm4gdGhpcy5fbGlzdDtcbiAgfVxuXG4gIGdldCBzZWxlY3RlZE5vZGVzKCkge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZE5vZGVzO1xuICB9XG5cbiAgQElucHV0KCdmaWx0ZXJGdW5jdGlvbicpXG4gIHNldCBmaWx0ZXJGdW5jdGlvbihmdW5jOiBGdW5jdGlvbikge1xuICAgIGlmICh0aGlzLl9saXN0KSB7XG4gICAgICB0aGlzLmJ1aWxkVHJlZSgpO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgnbGlzdE9iamVjdCcpXG4gIHNldCBsaXN0T2JqZWN0KGxvOiBBdXRvY29tcGxldGVSZXNwb25zZSkge1xuICAgIGlmIChsbykge1xuICAgICAgdGhpcy5wcm9jZXNzTGlzdE9iamVjdChsbyk7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGF1dG9jb21wbGV0ZVVybCh1cmw6IHN0cmluZykge1xuICAgIGlmICh1cmwpIHtcbiAgICAgIHRoaXMuaGFzQXV0b2NvbXBsZXRlVXJsID0gdHJ1ZTtcbiAgICAgIHRoaXMuYXV0b2NvbXBsZXRlVXJsVmFsdWUgPSB1cmw7XG4gICAgfVxuICB9XG5cbiAgc2V0IHNlbGVjdGVkTm9kZXMobjogYW55KSB7XG4gICAgaWYgKG4gJiYgIUFycmF5LmlzQXJyYXkobikpIHtcbiAgICAgIHRoaXMuYXV0b2NvbXBsZXRlRm4oblsodGhpcy5fbGlzdD8uY29uZmlnPy50aXRsZSA/IHRoaXMuX2xpc3QuY29uZmlnLnRpdGxlIDogdGhpcy5fbGlzdD8uY29uZmlnPy52YWx1ZUZpZWxkKSB8fCAndmFsdWUnXSB8fCAobi50aXRsZSA/IG4udGl0bGUgOiBuLm5hbWUpKTtcbiAgICB9XG4gICAgdGhpcy5fc2VsZWN0ZWROb2RlcyA9IHN0cnVjdHVyZWRDbG9uZShuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIGF1dG9jb21wbGV0ZSBkYXRhIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBzZWFyY2ggdmFsdWUuXG4gICAqXG4gICAqIElmIHRoZSBhdXRvY29tcGxldGUgdmFsdWVzIGFyZSBjYWNoZWQgYW5kIHRoZXJlIGlzIG5vIHNlYXJjaCB2YWx1ZSBvciBmb3JtIGVsZW1lbnQgY2hhbmdlLFxuICAgKiBpdCByZXRyaWV2ZXMgdGhlIGNhY2hlZCB2YWx1ZXMgZnJvbSBsb2NhbCBzdG9yYWdlLiBPdGhlcndpc2UsIGl0IG1ha2VzIGFuIEhUVFAgcmVxdWVzdCB0byBmZXRjaFxuICAgKiB0aGUgYXV0b2NvbXBsZXRlIGRhdGEuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbc2VhcmNoVmFsdWU9bnVsbF0gLSBUaGUgc2VhcmNoIHZhbHVlIHVzZWQgdG8gZmlsdGVyIHRoZSBhdXRvY29tcGxldGUgcmVzdWx0cy5cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBmZXRjaEF1dG9jb21wbGV0ZURhdGEoc2VhcmNoVmFsdWU6IHN0cmluZyA9IG51bGwpOiB2b2lkIHtcbiAgICBsZXQgYXV0b2NvbXBlbHRlTGlzdFZhbHVlczogQXV0b2NvbXBsZXRlUmVzcG9uc2UgPSB7fSBhcyBBdXRvY29tcGxldGVSZXNwb25zZTtcbiAgICBsZXQgdXJsID0gdGhpcy5hdXRvY29tcGxldGVVcmxWYWx1ZTtcbiAgICBpZiAodGhpcy5oYXNBdXRvY29tcGxldGVWYWx1ZXNDYWNoZWQpIHtcbiAgICAgIGF1dG9jb21wZWx0ZUxpc3RWYWx1ZXMgPSB0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSgnYXV0b2NvbXBsZXRlXycgKyB0aGlzLmZvcm1Db250cm9sTmFtZSk7XG4gICAgICB0aGlzLnByb2Nlc3NMaXN0T2JqZWN0KGF1dG9jb21wZWx0ZUxpc3RWYWx1ZXMpO1xuICAgICAgaWYgKHNlYXJjaFZhbHVlKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyQXV0b2NvbXBsZXRlUmVzdWx0cyhzZWFyY2hWYWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNBdXRvY29tcGxldGVMb2FkaW5nID0gdHJ1ZTtcbiAgICAgIGxldCBwYXJhbXMgPSB7fTtcblxuICAgICAgaWYgKHNlYXJjaFZhbHVlKSB7XG4gICAgICAgIHBhcmFtc1sncXVlcnknXSA9IHNlYXJjaFZhbHVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5zaXR1YXRpb24pIHtcbiAgICAgICAgcGFyYW1zWydzaXR1YXRpb24nXSA9IFN0cmluZyh0aGlzLnNpdHVhdGlvbikudG9Mb3dlckNhc2UoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5keW5hbWljTGlzdFNlcnZpY2UuZ2V0QXV0b2NvbXBsZXRlRGF0YSh1cmwsIHBhcmFtcykuc3Vic2NyaWJlKChkYXRhOiBBdXRvY29tcGxldGVSZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLmlzQXV0b2NvbXBsZXRlTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNldEZvcm1Db250cm9sVmFsdWUoKTtcbiAgICAgICAgaWYgKCFzZWFyY2hWYWx1ZSkge1xuICAgICAgICAgIHRoaXMuaGFzQXV0b2NvbXBsZXRlVmFsdWVzQ2FjaGVkID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2Uuc2V0SXRlbSgnYXV0b2NvbXBsZXRlXycgKyB0aGlzLmZvcm1Db250cm9sTmFtZSwgZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wcm9jZXNzTGlzdE9iamVjdChkYXRhKTtcbiAgICAgICAgaWYgKHNlYXJjaFZhbHVlKSB7XG4gICAgICAgICAgdGhpcy5maWx0ZXJBdXRvY29tcGxldGVSZXN1bHRzKHNlYXJjaFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmhhc0Zvcm1FbGVtZW50Q2hhbmdlZCA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJvcGFnYXRlQ2hhbmdlID0gKF86IGFueSkgPT4ge1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlPy52YWx1ZSB8fCB2YWx1ZSB8fCBudWxsO1xuICAgIGNvbnN0IHZhbHVlcyA9ICF0aGlzLnZhbHVlIHx8IEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkgPyB0aGlzLnZhbHVlIHx8IFtdIDogW3RoaXMudmFsdWVdO1xuXG4gICAgaWYgKHZhbHVlICYmIHZhbHVlLm9wZXJhdG9yKSB7XG4gICAgICBjb25zdCBvcGVyYXRvciA9IHZhbHVlPy51c2VOb3QgPyBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuVVNFX05PVCA6IHZhbHVlLm9wZXJhdG9yO1xuICAgICAgY29uc3QgbWF0Y2ggPSB0aGlzLmF2YWlsYWJsZVNlYXJjaE9wdGlvbnMuZmluZCgobykgPT4gby52YWx1ZSA9PT0gb3BlcmF0b3IpO1xuICAgICAgdGhpcy5zZWFyY2hPcHRpb24gPSBtYXRjaCA/IG1hdGNoLnZhbHVlIDogdGhpcy5hdmFpbGFibGVTZWFyY2hPcHRpb25zWzBdLnZhbHVlO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCAmJiAhdGhpcy5oYXNBdXRvY29tcGxldGVVcmwpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzID0gW107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSBudWxsO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSB2YWx1ZXMubWFwKHYgPT4ge1xuICAgICAgICAgIGxldCBub2RlID0ge307XG4gICAgICAgICAgbm9kZVt0aGlzLnZhbHVlRmllbGRdID0gdjtcbiAgICAgICAgICBub2RlWyd2YWx1ZSddID0gdjtcbiAgICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgbm9kZSA9IHt9O1xuICAgICAgICBpZiAodGhpcy50aXRsZSAmJiB0aGlzLl9saXN0ICYmIHRoaXMuaXNTZWFyY2gpIHtcbiAgICAgICAgICBjb25zdCBsaXN0RW50cmllcyA9IHRoaXMuX2xpc3Q/LmVudHJpZXMuZmluZChlbnRyeSA9PiBlbnRyeT8ubW9kZWxzPy5zb21lKG1vZGVsID0+IG1vZGVsLm5hbWUgPT09IHZhbHVlKSk7XG4gICAgICAgICAgaWYgKGxpc3RFbnRyaWVzKSB7XG4gICAgICAgICAgICBub2RlID0gbGlzdEVudHJpZXMubW9kZWxzPy5maW5kKG1vZGVsID0+IG1vZGVsLm5hbWUgPT09IHZhbHVlKSB8fCB7fTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbm9kZVt0aGlzLnZhbHVlRmllbGRdID0gdmFsdWU7XG4gICAgICAgICAgbm9kZVsndmFsdWUnXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IG5vZGU7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IG5vZGVzID0gIXRoaXMuc2VsZWN0ZWROb2RlcyB8fCBBcnJheS5pc0FycmF5KHRoaXMuc2VsZWN0ZWROb2RlcykgPyB0aGlzLnNlbGVjdGVkTm9kZXMgfHwgW10gOiBbdGhpcy5zZWxlY3RlZE5vZGVzXTtcblxuICAgIGlmICh0aGlzLl9saXN0ICYmIChub2Rlcy5sZW5ndGggIT09IHZhbHVlcy5sZW5ndGggfHwgbm9kZXMuc29tZSgobiwgaSkgPT4gblt0aGlzLnRpdGxlID8gdGhpcy50aXRsZSA6IHRoaXMudmFsdWVGaWVsZF0gIT09IHZhbHVlc1tpXSkpKSB7XG4gICAgICB0aGlzLmJ1aWxkVHJlZSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uVmFsdWVDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRGb3JtQ29udHJvbFZhbHVlKHRydWUpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgfVxuXG4gIG9uQXV0b0NvbXBsZXRlU2VsZWN0KG5vZGU/KTogdm9pZCB7XG4gICAgY29uc3Qgd2FzSW52YWxpZCA9ICF0aGlzLmlzVmFsaWQ7XG4gICAgdGhpcy5pc1ZhbGlkID0gdHJ1ZTtcbiAgICB0aGlzLnNldEZvcm1Db250cm9sVmFsdWUod2FzSW52YWxpZCk7XG4gICAgaWYgKHRoaXMuaGFzQXV0b2NvbXBsZXRlVXJsKSB7XG4gICAgICB0aGlzLmZldGNoQXV0b2NvbXBsZXRlRGF0YSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXV0b0NvbXBsZXRlVW5zZWxlY3Qobm9kZT8pOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSB0aGlzLnNlbGVjdGVkTm9kZXMuZmlsdGVyKChzTm9kZSkgPT4gc05vZGUudmFsdWUgIT09IG5vZGUudmFsdWUpO1xuICAgIHRoaXMuc2V0Rm9ybUNvbnRyb2xWYWx1ZSgpO1xuICB9XG5cbiAgb25UcmVlU2VsZWN0aW9uQ2hhbmdlZChldnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgIHRoaXMuZGlzcGxheSA9IGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCB3YXNJbnZhbGlkID0gIXRoaXMuaXNWYWxpZDtcbiAgICB0aGlzLmlzVmFsaWQgPSB0cnVlO1xuICAgIHRoaXMuc2V0Rm9ybUNvbnRyb2xWYWx1ZSh3YXNJbnZhbGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBhdXRvY29tcGxldGUgZnVuY3Rpb25hbGl0eSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgc2VhcmNoIHRlcm0uXG4gICAqXG4gICAqIElmIGBoYXNBdXRvY29tcGxldGVVcmxgIGlzIHRydWUsIGl0IHRyaWdnZXJzIGFuIGF1dG9jb21wbGV0ZSBzZWFyY2ggdmlhIGFuIG9ic2VydmFibGUuXG4gICAqIE90aGVyd2lzZSwgaXQgZmlsdGVycyB0aGUgYXV0b2NvbXBsZXRlIHJlc3VsdHMgbG9jYWxseS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRlcm0gLSBUaGUgc2VhcmNoIHRlcm0gdXNlZCBmb3IgYXV0b2NvbXBsZXRlLlxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIGF1dG9jb21wbGV0ZUZuKHRlcm06IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0ZXJtKSB7XG4gICAgICB0aGlzLmhhc0F1dG9jb21wbGV0ZVVybFxuICAgICAgICA/IHRoaXMuYXV0b2NvbXBsZXRlU2VhcmNoVmFsdWUkLm5leHQodGVybSlcbiAgICAgICAgOiB0aGlzLmZpbHRlckF1dG9jb21wbGV0ZVJlc3VsdHModGVybSk7XG4gICAgfVxuICB9XG5cbiAgc2hvd0RpYWxvZyhldmVudD8sIGRpc3BsYXkgPSB0cnVlKTogdm9pZCB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAvL2lnbm9yZSBzeW50aGV0aXplZCBldmVudHMgb24gZW50ZXJcbiAgICAgIGlmIChldmVudC50eXBlID09PSAnY2xpY2snICYmIGV2ZW50LmRldGFpbCA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmhhc0F1dG9jb21wbGV0ZVVybCAmJiAhdGhpcy5oYXNBdXRvY29tcGxldGVWYWx1ZXNDYWNoZWQpIHtcbiAgICAgICAgdGhpcy5mZXRjaEF1dG9jb21wbGV0ZURhdGEoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5kaXNwbGF5ID0gISFkaXNwbGF5O1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgdGhpcy5tdWx0aXNlbGVjdCA9ICF0aGlzLmlzVGFibGVFbGVtZW50O1xuICAgICAgdGhpcy5pc1NlYXJjaCA9IHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy5ldmVudFNlcnZpY2Uub24oRW5haW9FdmVudC5DTElFTlRfTE9DQUxFX0NIQU5HRUQpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnJlc2V0Q2FjaGVkVmFsdWVzKCk7XG4gICAgfSk7XG4gICAgdGhpcy5ldmVudFNlcnZpY2Uub24oRW5haW9FdmVudC5TQ0hFTUFfTE9DQUxFX0NIQU5HRUQpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnJlc2V0Q2FjaGVkVmFsdWVzKCk7XG4gICAgfSk7XG5cbiAgfVxuXG4gIHB1YmxpYyB2YWxpZGF0ZShjOiBVbnR5cGVkRm9ybUNvbnRyb2wpOiB7W2tleTogc3RyaW5nXTogc3RyaW5nIHwgYm9vbGVhbiB8IHt2YWxpZDogYm9vbGVhbn19IHtcbiAgICByZXR1cm4gKHRoaXMuaXNWYWxpZCkgPyBudWxsIDoge1xuICAgICAgZHluYW1pY2xpc3Q6IHtcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlLnJlbW92ZUl0ZW0oJ2F1dG9jb21wbGV0ZV8nICsgdGhpcy5mb3JtQ29udHJvbE5hbWUpO1xuICAgIGlmICh0aGlzLmZvcm1FbGVtZW50Q2hhbmdlc1N1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5mb3JtRWxlbWVudENoYW5nZXNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUHJvY2Vzc2VzIHRoZSBnaXZlbiBsaXN0IG9iamVjdCBhbmQgdXBkYXRlcyB0aGUgY29tcG9uZW50J3Mgc3RhdGUgYWNjb3JkaW5nbHkuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIHVwZGF0ZXMgdGhlIGludGVybmFsIGxpc3QsIHNlbGVjdGVkIG5vZGVzLCBhbmQgdmFyaW91cyBjb25maWd1cmF0aW9uIGZpZWxkc1xuICAgKiBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgbGlzdCBvYmplY3QuIEl0IGFsc28gdHJpZ2dlcnMgdGhlIGJ1aWxkaW5nIG9mIHRoZSB0cmVlIHN0cnVjdHVyZS5cbiAgICpcbiAgICogQHBhcmFtIHtBdXRvY29tcGxldGVSZXNwb25zZX0gbGlzdE9iamVjdCAtIFRoZSBsaXN0IG9iamVjdCBjb250YWluaW5nIGNvbmZpZ3VyYXRpb24gYW5kIGRhdGEuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIHByb2Nlc3NMaXN0T2JqZWN0KGxpc3RPYmplY3Q6IEF1dG9jb21wbGV0ZVJlc3BvbnNlKTogdm9pZCB7XG4gICAgdGhpcy5fbGlzdCA9IGxpc3RPYmplY3Q7XG4gICAgaWYgKGxpc3RPYmplY3QuY29uZmlnICYmIGxpc3RPYmplY3QuY29uZmlnLnZhbHVlRmllbGQpIHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkTm9kZXMpIHtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSB0aGlzLnNlbGVjdGVkTm9kZXMubWFwKHNuID0+IHtcbiAgICAgICAgICAgIHNuW2xpc3RPYmplY3QuY29uZmlnLnZhbHVlRmllbGRdID0gc25bdGhpcy52YWx1ZUZpZWxkXTtcbiAgICAgICAgICAgIHNuWyd2YWx1ZSddID0gc25bdGhpcy52YWx1ZUZpZWxkXTtcbiAgICAgICAgICAgIHJldHVybiBzbjtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZXNbbGlzdE9iamVjdC5jb25maWcudmFsdWVGaWVsZF0gPSB0aGlzLnNlbGVjdGVkTm9kZXNbdGhpcy52YWx1ZUZpZWxkXTtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZXNbJ3ZhbHVlJ10gPSB0aGlzLnNlbGVjdGVkTm9kZXNbdGhpcy52YWx1ZUZpZWxkXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy52YWx1ZUZpZWxkID0gbGlzdE9iamVjdC5jb25maWcudmFsdWVGaWVsZDtcbiAgICAgIHRoaXMudGl0bGUgPSBsaXN0T2JqZWN0LmNvbmZpZy50aXRsZTtcbiAgICB9XG4gICAgaWYgKGxpc3RPYmplY3QuY29uZmlnICYmIGxpc3RPYmplY3QuY29uZmlnLmRlc2NyaXB0aW9uRmllbGQpIHtcbiAgICAgIHRoaXMuZGVzY3JpcHRpb25GaWVsZCA9IGxpc3RPYmplY3QuY29uZmlnLmRlc2NyaXB0aW9uRmllbGQ7XG4gICAgfVxuICAgIGlmIChsaXN0T2JqZWN0LmNvbmZpZyAmJiBsaXN0T2JqZWN0LmNvbmZpZy5zdWJFbnRyaWVzRmllbGQpIHtcbiAgICAgIHRoaXMuc3ViRW50cmllc0ZpZWxkID0gbGlzdE9iamVjdC5jb25maWcuc3ViRW50cmllc0ZpZWxkO1xuICAgIH1cbiAgICB0aGlzLmJ1aWxkVHJlZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgYW5kIHByb3BhZ2F0ZXMgdGhlIGZvcm0gY29udHJvbHMgdmFsdWUgYmFzZWQgb24gdGhlIGNvbXBvbmVudHMgaW5uZXIgdmFsdWVzLiBQcm9wYWdhdGVzIG9ubHkgd2hlbiB0aGUgdmFsdWUgaGFzIGNoYW5nZWQuXG4gICAqIEBwYXJhbSBmb3JjZVByb3BhZ2F0aW9uIC0gZm9yY2VzIHByb3BhZ2F0aW9uIGV2ZW4gaWYgdGhlIHZhbHVlIGhhc24ndCBiZWVuIGNoYW5nZWRcbiAgICovXG4gIHByaXZhdGUgc2V0Rm9ybUNvbnRyb2xWYWx1ZShmb3JjZVByb3BhZ2F0aW9uPzogYm9vbGVhbikge1xuICAgIGxldCB2O1xuICAgIGxldCBjaGFuZ2VkOiBib29sZWFuO1xuICAgIGlmICh0aGlzLm11bHRpc2VsZWN0ICYmIEFycmF5LmlzQXJyYXkodGhpcy5zZWxlY3RlZE5vZGVzKSkge1xuICAgICAgdiA9IHRoaXMuc2VsZWN0ZWROb2RlcyA/IHRoaXMuc2VsZWN0ZWROb2Rlcz8ubWFwKChub2RlKSA9PiBub2RlW3RoaXMudmFsdWVGaWVsZF0pIDogW107XG4gICAgICBjaGFuZ2VkID0gIXRoaXMudmFsdWUgfHwgISh2Lmxlbmd0aCA9PT0gdGhpcy52YWx1ZS5sZW5ndGggJiYgdi5ldmVyeSgodmFsKSA9PiB0aGlzLnZhbHVlLnNvbWUoKGN1clZhbCkgPT4gY3VyVmFsID09PSB2YWwpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHYgPSB0aGlzLnNlbGVjdGVkTm9kZXMgJiYgdGhpcy5zZWxlY3RlZE5vZGVzLmRhdGEgPyB0aGlzLnNlbGVjdGVkTm9kZXM/LmRhdGFbdGhpcy52YWx1ZUZpZWxkXSA6IG51bGw7XG4gICAgICBjaGFuZ2VkID0gdiAhPT0gdGhpcy52YWx1ZTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZWQgfHwgZm9yY2VQcm9wYWdhdGlvbikge1xuICAgICAgdGhpcy52YWx1ZSA9IHY7XG4gICAgICBpZiAodj8ubGVuZ3RoID4gMCAmJiB0aGlzLmlzU2VhcmNoKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB7XG4gICAgICAgICAgb3BlcmF0b3I6IHRoaXMuc2VhcmNoT3B0aW9uLFxuICAgICAgICAgIHZhbHVlOiB2LFxuICAgICAgICAgIGFjdHVhbE9wZXJhdG9yOiB0aGlzLnNlYXJjaE9wdGlvbiA9PT0gU2VhcmNoRmlsdGVyLk9QRVJBVE9SLlVTRV9OT1QgPyBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuSU4gOiBudWxsLFxuICAgICAgICAgIHVzZU5vdDogdGhpcy5zZWFyY2hPcHRpb24gPT09IFNlYXJjaEZpbHRlci5PUEVSQVRPUi5VU0VfTk9UXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkVHJlZSgpIHtcbiAgICB0aGlzLmF1dG9jb21wbGV0ZVZhbHVlcyA9IFtdO1xuICAgIGxldCB0cmVlOiBUcmVlTm9kZVtdID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl9saXN0LmVudHJpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuYWRkVHJlZU5vZGUodHJlZSwgdGhpcy5fbGlzdC5lbnRyaWVzW2ldKTtcbiAgICB9XG4gICAgdGhpcy50cmVlID0gdHJlZTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkVHJlZU5vZGUocGFyZW50Tm9kZTogVHJlZU5vZGVbXSwgbGlzdEVudHJ5KSB7XG4gICAgaWYgKHRoaXMuZmlsdGVyRnVuY3Rpb24gJiYgIXRoaXMuZmlsdGVyRnVuY3Rpb24obGlzdEVudHJ5KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgbm9kZTogVHJlZU5vZGUgPSB0aGlzLmxpc3RFbnRyeVRvVHJlZU5vZGUobGlzdEVudHJ5KTtcbiAgICBpZiAobm9kZS5zZWxlY3RhYmxlKSB7XG4gICAgICB0aGlzLmF1dG9jb21wbGV0ZVZhbHVlcy5wdXNoKG5vZGUpO1xuICAgIH1cbiAgICBpZiAobGlzdEVudHJ5W3RoaXMuc3ViRW50cmllc0ZpZWxkXSkge1xuICAgICAgbm9kZS5jaGlsZHJlbiA9IFtdO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0RW50cnlbdGhpcy5zdWJFbnRyaWVzRmllbGRdLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMuYWRkVHJlZU5vZGUobm9kZS5jaGlsZHJlbiwgbGlzdEVudHJ5W3RoaXMuc3ViRW50cmllc0ZpZWxkXVtpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChsaXN0RW50cnlbdGhpcy5wcm9qZWN0c0VudHJpZXNGaWVsZF0pIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdEVudHJ5W3RoaXMucHJvamVjdHNFbnRyaWVzRmllbGRdLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMuYWRkVHJlZU5vZGUobm9kZS5jaGlsZHJlbiwgbGlzdEVudHJ5W3RoaXMucHJvamVjdHNFbnRyaWVzRmllbGRdW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5jaGVja1NlbGVjdGVkKG5vZGUpO1xuICAgIHBhcmVudE5vZGUucHVzaChub2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tTZWxlY3RlZChub2RlOiBUcmVlTm9kZSkge1xuICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCAmJiBBcnJheS5pc0FycmF5KHRoaXMuc2VsZWN0ZWROb2RlcykpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy52YWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBpc1RyZWVOb2RlVmFsdWVJblZhbHVlID0gbm9kZS5kYXRhW3RoaXMudmFsdWVGaWVsZF0gPT09IHRoaXMudmFsdWVbaV07XG4gICAgICAgIGlmIChpc1RyZWVOb2RlVmFsdWVJblZhbHVlKSB7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWROb2RlVGhhdEhhc1ZhbHVlID0gdGhpcy5zZWxlY3RlZE5vZGVzLmZpbmQoc04gPT4gc05bdGhpcy52YWx1ZUZpZWxkXSA9PT0gdGhpcy52YWx1ZVtpXSk7XG4gICAgICAgICAgaWYgKCFzZWxlY3RlZE5vZGVUaGF0SGFzVmFsdWUpIHtcbiAgICAgICAgICAgIG5vZGUuc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzLnB1c2gobm9kZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNlbGVjdGVkTm9kZVRoYXRIYXNWYWx1ZS5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChub2RlLmRhdGFbdGhpcy52YWx1ZUZpZWxkXSA9PT0gdGhpcy52YWx1ZSkge1xuICAgICAgICBub2RlLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzID0gbm9kZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuXG4gIHByaXZhdGUgbGlzdEVudHJ5VG9UcmVlTm9kZShsaXN0RW50cnkpOiBUcmVlTm9kZSB7XG4gICAgbGV0IHNlbGVjdGFibGU6IGJvb2xlYW47XG4gICAgaWYgKHRoaXMuX2xpc3QgJiYgdGhpcy5fbGlzdC5jb25maWcgJiYgdGhpcy5fbGlzdC5jb25maWcuYWxsZWxlbWVudHNzZWxlY3RhYmxlKSB7XG4gICAgICBzZWxlY3RhYmxlID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2VsZWN0YWJsZSA9ICEobGlzdEVudHJ5W3RoaXMuc3ViRW50cmllc0ZpZWxkXSAmJiBsaXN0RW50cnlbdGhpcy5zdWJFbnRyaWVzRmllbGRdLmxlbmd0aCA+IDApO1xuICAgIH1cblxuICAgIGxldCB0cmVlTm9kZSA9IHtcbiAgICAgIGlkOiBsaXN0RW50cnkuaWQgPyBsaXN0RW50cnkuaWQgOiBsaXN0RW50cnlbdGhpcy52YWx1ZUZpZWxkXSxcbiAgICAgIG5hbWU6IGxpc3RFbnRyeVt0aGlzLmRlc2NyaXB0aW9uRmllbGRdID8gbGlzdEVudHJ5W3RoaXMudmFsdWVGaWVsZF0gKyAnICgnICsgbGlzdEVudHJ5W3RoaXMuZGVzY3JpcHRpb25GaWVsZF0gKyAnKScgOiBsaXN0RW50cnlbdGhpcy52YWx1ZUZpZWxkXSxcbiAgICAgIHRpdGxlOiAobGlzdEVudHJ5W3RoaXMudGl0bGVdIHx8IGxpc3RFbnRyeVt0aGlzLnZhbHVlRmllbGRdKSArIChsaXN0RW50cnkubW9kZWxzID8gJycgOiAnICgnICsgbGlzdEVudHJ5W3RoaXMudmFsdWVGaWVsZF0gKyAnKScpLFxuICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgZXhwYW5kZWQ6IGZhbHNlLFxuICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgc2VsZWN0YWJsZTogbGlzdEVudHJ5LnNlbGVjdGFibGUgPz8gc2VsZWN0YWJsZSxcbiAgICAgIGRhdGE6IGxpc3RFbnRyeVxuICAgIH07XG4gICAgdHJlZU5vZGVbdGhpcy52YWx1ZUZpZWxkXSA9IGxpc3RFbnRyeVt0aGlzLnZhbHVlRmllbGRdO1xuICAgIHRyZWVOb2RlLmRhdGFbJ3ZhbHVlJ10gPSBsaXN0RW50cnlbdGhpcy52YWx1ZUZpZWxkXTtcbiAgICB0cmVlTm9kZVt0aGlzLmRlc2NyaXB0aW9uRmllbGRdID0gbGlzdEVudHJ5W3RoaXMuZGVzY3JpcHRpb25GaWVsZF07XG4gICAgdHJlZU5vZGVbdGhpcy5zdWJFbnRyaWVzRmllbGRdID0gbGlzdEVudHJ5W3RoaXMuc3ViRW50cmllc0ZpZWxkXTtcblxuICAgIHJldHVybiB0cmVlTm9kZTtcbiAgfVxuXG4gIC8qKlxuICAqIEZpbHRlcnMgdGhlIGF1dG9jb21wbGV0ZSByZXN1bHRzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBzZWFyY2ggdGVybS5cbiAgKlxuICAqIFRoZSBtZXRob2QgZmlsdGVycyB0aGUgYGF1dG9jb21wbGV0ZVZhbHVlc2AgYXJyYXkgdG8gZmluZCBub2RlcyB0aGF0IG1hdGNoIHRoZSBzZWFyY2ggdGVybS5cbiAgKiBJdCBhbHNvIGFwcGxpZXMgYWRkaXRpb25hbCBmaWx0ZXJpbmcgYmFzZWQgb24gdGhlIGBmaWx0ZXJGdW5jdGlvbmAgYW5kIGBtdWx0aXNlbGVjdGAgcHJvcGVydGllcy5cbiAgKiAtIElmIGBmaWx0ZXJGdW5jdGlvbmAgaXMgZGVmaW5lZCwgaXQgZmlsdGVycyBvdXQgbm9kZXMgdGhhdCBkbyBub3QgcGFzcyB0aGUgZnVuY3Rpb24uXG4gICogLSBJZiBgc2l0dWF0aW9uYCBpcyAnU0VBUkNIJywgaXQgZXhjbHVkZXMgbm9kZXMgdGhhdCBhcmUgYWxyZWFkeSBzZWxlY3RlZC5cbiAgKiAtIEl0IG1hdGNoZXMgbm9kZXMgYmFzZWQgb24gdGhlIHNlYXJjaCB0ZXJtIGFnYWluc3QgdGhlIGB2YWx1ZUZpZWxkYCBhbmQgYGRlc2NyaXB0aW9uRmllbGRgLlxuICAqXG4gICogQHBhcmFtIHtzdHJpbmd9IHRlcm0gLSBUaGUgc2VhcmNoIHRlcm0gdXNlZCB0byBmaWx0ZXIgdGhlIGF1dG9jb21wbGV0ZSByZXN1bHRzLlxuICAqL1xuICBwcml2YXRlIGZpbHRlckF1dG9jb21wbGV0ZVJlc3VsdHModGVybTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5hdXRvY29tcGxldGVSZXMgPSB0aGlzLmF1dG9jb21wbGV0ZVZhbHVlcy5maWx0ZXIoKGFjTm9kZSkgPT4ge1xuICAgICAgY29uc3QgYWNOb2RlRGF0YSA9IGFjTm9kZS5kYXRhO1xuICAgICAgY29uc3QgYWNOb2RlVmFsdWUgPSBhY05vZGVEYXRhPy5bdGhpcy52YWx1ZUZpZWxkXTtcbiAgICAgIGNvbnN0IGFjTm9kZURlc2NyaXB0aW9uID0gYWNOb2RlRGF0YT8uW3RoaXMuZGVzY3JpcHRpb25GaWVsZF07XG5cbiAgICAgIGlmICh0aGlzLmZpbHRlckZ1bmN0aW9uICYmICF0aGlzLmZpbHRlckZ1bmN0aW9uKGFjTm9kZURhdGEpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuc2l0dWF0aW9uID09PSAnU0VBUkNIJyAmJiB0aGlzLnNlbGVjdGVkTm9kZXM/LnNvbWUoKG5vZGUpID0+IHtcbiAgICAgICAgY29uc3Qgbm9kZVZhbHVlID0gbm9kZS52YWx1ZSB8fCBub2RlPy5kYXRhPy5bdGhpcy52YWx1ZUZpZWxkXTtcbiAgICAgICAgcmV0dXJuIGFjTm9kZURhdGEgJiYgbm9kZVZhbHVlICYmIGFjTm9kZVZhbHVlID09PSBub2RlVmFsdWU7XG4gICAgICB9KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRlcm1Mb3dlciA9IHRlcm0/LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgIHJldHVybiBhY05vZGVWYWx1ZT8udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm1Mb3dlcikgfHxcbiAgICAgICAgKGFjTm9kZURlc2NyaXB0aW9uICYmIGFjTm9kZURlc2NyaXB0aW9uLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtTG93ZXIpKTtcbiAgICB9KS5zbGljZSgwLCAxMCk7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBjYWNoZWQgYXV0b2NvbXBsZXRlIHZhbHVlcy5cbiAgICpcbiAgICogVGhpcyBtZXRob2Qgc2V0cyB0aGUgYGhhc0F1dG9jb21wbGV0ZVZhbHVlc0NhY2hlZGAgZmxhZyB0byBgZmFsc2VgIGFuZCByZW1vdmVzXG4gICAqIHRoZSBjYWNoZWQgYXV0b2NvbXBsZXRlIHZhbHVlcyBmcm9tIGxvY2FsIHN0b3JhZ2UgdXNpbmcgdGhlIGBmb3JtQ29udHJvbE5hbWVgLlxuICAgKi9cbiAgcHJpdmF0ZSByZXNldENhY2hlZFZhbHVlcygpOiB2b2lkIHtcbiAgICB0aGlzLmhhc0F1dG9jb21wbGV0ZVZhbHVlc0NhY2hlZCA9IGZhbHNlO1xuICAgIHRoaXMubG9jYWxTdG9yYWdlU2VydmljZS5yZW1vdmVJdGVtKCdhdXRvY29tcGxldGVfJyArIHRoaXMuZm9ybUNvbnRyb2xOYW1lKTtcbiAgfVxuXG59XG4iLCI8ZW8tZGlhbG9nICNsaXN0RGlhbG9nIFt0aXRsZV09XCJwaWNrZXJUaXRsZVwiIFt2aXNpYmxlXT1cImRpc3BsYXlcIiBbbmdDbGFzc109XCJ7ZW1wdHk6ICEobGlzdD8uZW50cmllcz8ubGVuZ3RoKSAmJiBkaXNwbGF5fVwiXG4gIFtzdHlsZUNsYXNzXT1cIidkeW5saXN0LWRpYWxvZydcIiAoaGlkZSk9XCJkaXNwbGF5ID0gZmFsc2VcIj5cblxuICA8ZW8tdHJlZSBbdHJlZV09XCJ0cmVlXCIgKm5nSWY9XCJkaXNwbGF5ICYmIHRyZWVcIiBbaXNEaXNwbGF5ZWRdPVwiZGlzcGxheVwiIFtvcHRpb25zXT1cInttdWx0aXNlbGVjdDogbXVsdGlzZWxlY3R9XCJcbiAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkTm9kZXNcIiAoa2V5dXAuZW50ZXIpPVwic2hvd0RpYWxvZygkZXZlbnQsIGZhbHNlKVwiXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwib25UcmVlU2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQpXCI+XG4gIDwvZW8tdHJlZT5cblxuICBAaWYgKCEobGlzdD8uZW50cmllcz8ubGVuZ3RoKSkge1xuICAgIDxkaXYgY2xhc3M9XCJlbXB0eVwiPlxuICAgICAgQGlmIChpc0F1dG9jb21wbGV0ZUxvYWRpbmcpIHtcbiAgICAgICAgPGVvLWxvYWRpbmctc3Bpbm5lciBbc2l6ZV09XCInc21hbGwnXCI+PC9lby1sb2FkaW5nLXNwaW5uZXI+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGRpdiB0cmFuc2xhdGU+ZW8uZm9ybS5wcm9wZXJ0eS5keW5hbWljLmxpc3QuZW1wdHk8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgfVxuPC9lby1kaWFsb2c+XG5cbjxkaXYgY2xhc3M9XCJlby1keW5hbWljLWxpc3RcIiBbbmdDbGFzc109XCJ7ZnVsbDogc2VsZWN0ZWROb2RlcyAmJiBzZWxlY3RlZE5vZGVzLmxlbmd0aCA9PT0gYXV0b2NvbXBsZXRlVmFsdWVzLmxlbmd0aH1cIj5cblxuICBAaWYgKGlzU2VhcmNoICYmICFpc1RhYmxlRWxlbWVudCkge1xuICAgIDx5dmMtZHJvcGRvd24gWyhuZ01vZGVsKV09XCJzZWFyY2hPcHRpb25cIiAobmdNb2RlbENoYW5nZSk9XCJvblZhbHVlQ2hhbmdlKClcIiBbb3B0aW9uc109XCJhdmFpbGFibGVTZWFyY2hPcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZWFkb25seVwiIFtkaXNhYmxlQ2xlYXJCdXR0b25dPVwidHJ1ZVwiPjwveXZjLWRyb3Bkb3duPlxuICB9XG5cbiAgPHl2Yy1hdXRvY29tcGxldGUgWyhuZ01vZGVsKV09XCJzZWxlY3RlZE5vZGVzXCIgI2F1dG9jb21wbGV0ZSAoc3VnZ2VzdGlvblNlbGVjdCk9XCJvbkF1dG9Db21wbGV0ZVNlbGVjdCgkZXZlbnQpXCJcbiAgICBbZGlzYWJsZWRdPVwicmVhZG9ubHlcIiAoc3VnZ2VzdGlvblVuc2VsZWN0KT1cIm9uQXV0b0NvbXBsZXRlVW5zZWxlY3QoJGV2ZW50KVwiIFtmb3JjZVNlbGVjdGlvbl09XCJ0cnVlXCJcbiAgICBbYXV0b2NvbXBsZXRlVmFsdWVzXT1cImF1dG9jb21wbGV0ZVJlc1wiIChuZ01vZGVsQ2hhbmdlKT1cIm9uVHJlZVNlbGVjdGlvbkNoYW5nZWQoJGV2ZW50KVwiIGZpZWxkPVwie3tzZWxlY3RlZE5vZGVzPy50aXRsZSA/IHRpdGxlIDogdmFsdWVGaWVsZH19XCIgKGF1dG9jb21wbGV0ZUZuYyk9XCJhdXRvY29tcGxldGVGbigkZXZlbnQpXCJcbiAgICBbbXVsdGlwbGVdPVwibXVsdGlzZWxlY3RcIj5cblxuICAgIDxuZy10ZW1wbGF0ZSBsZXQtaXRlbSAjY2hpcFRlbXBsYXRlPlxuICAgICAgPGRpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlXCI+e3tpdGVtW3ZhbHVlRmllbGRdfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGUgI2F1dG9jb21wbGV0ZU9wdGlvblRlbXBsYXRlIGxldC1pdGVtPlxuICAgICAgPGRpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlXCI+e3tpdGVtW3ZhbHVlRmllbGRdfX08L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uXCIgc3R5bGU9XCJmb250LXN0eWxlOiBpdGFsaWM7IGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yLWNhcHRpb24pXCI+e3tpdGVtW2Rlc2NyaXB0aW9uRmllbGRdfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwveXZjLWF1dG9jb21wbGV0ZT5cblxuICA8YnV0dG9uICNidXR0b24gY2xhc3M9XCJ1aS1idXR0b25cIiAqbmdJZj1cIiFyZWFkb25seVwiIFtkaXNhYmxlZF09XCJyZWFkb25seVwiIChjbGljayk9XCJzaG93RGlhbG9nKCRldmVudCwgISEkZXZlbnQuZGV0YWlsKVwiXG4gICAgKGtleXVwLmFycm93RG93bik9XCJzaG93RGlhbG9nKCRldmVudClcIiAoa2V5dXAuZW50ZXIpPVwic2hvd0RpYWxvZygkZXZlbnQpXCIgKGtleXVwLnNwYWNlKT1cInNob3dEaWFsb2coJGV2ZW50KVwiPlxuICAgIDxlby1pY29uIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2Fycm93X2Rvd24uc3ZnJ1wiPjwvZW8taWNvbj5cbiAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
@@ -168,7 +168,7 @@ export class OrganizationComponent {
168
168
  }, 1000);
169
169
  }
170
170
  resolveFn(value) {
171
- const isCurrentUser = value[0] === this.currentUser.name;
171
+ const isCurrentUser = Array.isArray(value) && value.length > 0 ? value[0] === this.currentUser.name : value === this.currentUser.name;
172
172
  if (isCurrentUser) {
173
173
  this.innerValue = [this.currentUser];
174
174
  }
@@ -237,7 +237,7 @@ export class OrganizationComponent {
237
237
  useExisting: forwardRef(() => OrganizationComponent),
238
238
  multi: true
239
239
  }
240
- ], viewQueries: [{ propertyName: "autoCompleteInput", first: true, predicate: ["autocomplete"], descendants: true }], ngImport: i0, template: "<div class=\"eo-organization\" [ngClass]=\"{acInputHidden: !multiselect && innerValue.length}\">\n\n @if (isSearch && !isTableElement) {\n <yvc-dropdown [(ngModel)]=\"searchOption\" (ngModelChange)=\"onValueChange()\" [options]=\"availableSearchOptions\"\n [disabled]=\"readonly\" [disableClearButton]=\"true\"></yvc-dropdown>\n }\n\n <yvc-autocomplete [(ngModel)]=\"innerValue\" #autocomplete (suggestionSelect)=\"onSelect($event)\"\n [placeholder]=\"placeholder\" (suggestionUnselect)=\"onUnselect($event)\" (blur)=\"onAutoCompleteBlur()\"\n [disabled]=\"readonly\" [autocompleteValues]=\"autocompleteRes\" field=\"id\"\n [forceSelection]=\"true\"\n (autocompleteFnc)=\"autocompleteFn($event)\" [multiple]=\"true\">\n\n <ng-template #autocompleteOptionTemplate let-item>\n <div class=\"org-item\">\n <yvc-icon [svg]=\"item.type === 'group' ? icon.group : icon.user\"></yvc-icon>\n <span *ngIf=\"(item.firstname?.length && item.lastname?.length) || item.type === 'group'\">{{item.title}}\n ({{item.name}})</span>\n <span *ngIf=\"!item.firstname?.length && !item.lastname?.length && item.type !== 'group'\">({{item.name}})</span>\n <span *ngIf=\"!item.firstname?.length && item.lastname?.length\">{{item.lastname}} ({{item.name}})</span>\n <span *ngIf=\"item.firstname?.length && !item.lastname?.length\">{{item.firstname}} ({{item.name}})</span>\n </div>\n </ng-template>\n\n <ng-template #chipTemplate let-item>\n <div class=\"org-item\">\n <yvc-icon [svg]=\"item.type === 'group' ? icon.group : icon.user\"></yvc-icon>\n <span\n *ngIf=\"(item.firstname?.length && item.lastname?.length && item.active) || item.type === 'group'\">{{item.title}}\n ({{item.name}})</span>\n <span class=\"inactive\"\n *ngIf=\"(item.firstname?.length && item.lastname?.length && !item.active)\">{{item.title}}\n ({{item.name}})</span>\n <span *ngIf=\"(!item.firstname?.length && !item.lastname?.length && !item.active && !item.type)\"\n class=\"deleted-user-label\">{{'eo.form.property.organization.error.usernotfound'|translate}}</span>\n <span\n *ngIf=\"!item.firstname?.length && !item.lastname?.length && item.active && item.type !== 'group'\">({{item.name}})</span>\n <span *ngIf=\"!item.firstname?.length && item.lastname?.length\">{{item.lastname}} ({{item.name}})</span>\n <span *ngIf=\"item.firstname?.length && !item.lastname?.length\">{{item.firstname}} ({{item.name}})</span>\n </div>\n </ng-template>\n\n </yvc-autocomplete>\n</div>\n", styles: [".eo-organization{display:flex;align-items:center}.eo-organization yvc-autocomplete{width:100%;border:0;outline:0!important}.eo-organization .org-item{display:flex;align-items:center}.eo-organization .inactive{text-decoration:line-through}:host.readonly ::ng-deep .ui-autocomplete-token-icon{display:none}:host ::ng-deep .chip yvc-icon{flex:0 0 auto;width:18px;height:18px;color:var(--text-color-caption)}:host ::ng-deep .deleted-user-label{color:var(--color-error)}:host ::ng-deep .eo-organization.acInputHidden .inputToken{width:0!important;margin:0;padding:0}:host ::ng-deep .eo-organization.acInputHidden .inputToken input{width:0!important}:host ::ng-deep .ui-autocomplete-panel{left:0!important}:host ::ng-deep yvc-dropdown{min-width:min-content;border:0;cursor:pointer;border-radius:2px;outline:1px solid rgba(0,0,0,.2);background-color:var(--list-item-hover-background);margin-right:4px}:host ::ng-deep yvc-dropdown:hover{background-color:var(--list-item-selected-background)}:host ::ng-deep yvc-dropdown ::ng-deep yvc-icon{display:none}\n"], dependencies: [{ kind: "component", type: i3.Icon, selector: "yvc-icon", inputs: ["label", "svg", "svgSrc"] }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.AutoComplete, selector: "yvc-autocomplete", inputs: ["field", "placeholder", "minLength", "multiple", "typeahead", "distinctValues", "forceSelection", "autocompleteValues", "disabled"], outputs: ["autocompleteFnc", "blur", "focus", "suggestionUnselect", "suggestionSelect"] }, { kind: "component", type: i7.Dropdown, selector: "yvc-dropdown", inputs: ["options", "filter", "disabled", "multiple", "disableClearButton"], outputs: ["onDropdownOptionsClose"] }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }] }); }
240
+ ], viewQueries: [{ propertyName: "autoCompleteInput", first: true, predicate: ["autocomplete"], descendants: true }], ngImport: i0, template: "<div class=\"eo-organization\" [ngClass]=\"{acInputHidden: !multiselect && innerValue?.length}\">\n\n @if (isSearch && !isTableElement) {\n <yvc-dropdown [(ngModel)]=\"searchOption\" (ngModelChange)=\"onValueChange()\" [options]=\"availableSearchOptions\"\n [disabled]=\"readonly\" [disableClearButton]=\"true\"></yvc-dropdown>\n }\n\n <yvc-autocomplete [(ngModel)]=\"innerValue\" #autocomplete (suggestionSelect)=\"onSelect($event)\"\n [placeholder]=\"placeholder\" (suggestionUnselect)=\"onUnselect($event)\" (blur)=\"onAutoCompleteBlur()\"\n [disabled]=\"readonly\" [autocompleteValues]=\"autocompleteRes\" field=\"id\"\n [forceSelection]=\"true\"\n (autocompleteFnc)=\"autocompleteFn($event)\" [multiple]=\"true\">\n\n <ng-template #autocompleteOptionTemplate let-item>\n <div class=\"org-item\">\n <yvc-icon [svg]=\"item.type === 'group' ? icon.group : icon.user\"></yvc-icon>\n <span *ngIf=\"(item.firstname?.length && item.lastname?.length) || item.type === 'group'\">{{item.title}}\n ({{item.name}})</span>\n <span *ngIf=\"!item.firstname?.length && !item.lastname?.length && item.type !== 'group'\">({{item.name}})</span>\n <span *ngIf=\"!item.firstname?.length && item.lastname?.length\">{{item.lastname}} ({{item.name}})</span>\n <span *ngIf=\"item.firstname?.length && !item.lastname?.length\">{{item.firstname}} ({{item.name}})</span>\n </div>\n </ng-template>\n\n <ng-template #chipTemplate let-item>\n <div class=\"org-item\">\n <yvc-icon [svg]=\"item.type === 'group' ? icon.group : icon.user\"></yvc-icon>\n <span\n *ngIf=\"(item.firstname?.length && item.lastname?.length && item.active) || item.type === 'group'\">{{item.title}}\n ({{item.name}})</span>\n <span class=\"inactive\"\n *ngIf=\"(item.firstname?.length && item.lastname?.length && !item.active)\">{{item.title}}\n ({{item.name}})</span>\n <span *ngIf=\"(!item.firstname?.length && !item.lastname?.length && !item.active && !item.type)\"\n class=\"deleted-user-label\">{{'eo.form.property.organization.error.usernotfound'|translate}}</span>\n <span\n *ngIf=\"!item.firstname?.length && !item.lastname?.length && item.active && item.type !== 'group'\">({{item.name}})</span>\n <span *ngIf=\"!item.firstname?.length && item.lastname?.length\">{{item.lastname}} ({{item.name}})</span>\n <span *ngIf=\"item.firstname?.length && !item.lastname?.length\">{{item.firstname}} ({{item.name}})</span>\n </div>\n </ng-template>\n\n </yvc-autocomplete>\n</div>\n", styles: [".eo-organization{display:flex;align-items:center}.eo-organization yvc-autocomplete{width:100%;border:0;outline:0!important}.eo-organization .org-item{display:flex;align-items:center}.eo-organization .inactive{text-decoration:line-through}:host.readonly ::ng-deep .ui-autocomplete-token-icon{display:none}:host ::ng-deep .chip yvc-icon{flex:0 0 auto;width:18px;height:18px;color:var(--text-color-caption)}:host ::ng-deep .deleted-user-label{color:var(--color-error)}:host ::ng-deep .eo-organization.acInputHidden .inputToken{width:0!important;margin:0;padding:0}:host ::ng-deep .eo-organization.acInputHidden .inputToken input{width:0!important}:host ::ng-deep .ui-autocomplete-panel{left:0!important}:host ::ng-deep yvc-dropdown{min-width:min-content;border:0;cursor:pointer;border-radius:2px;outline:1px solid rgba(0,0,0,.2);background-color:var(--list-item-hover-background);margin-right:4px}:host ::ng-deep yvc-dropdown:hover{background-color:var(--list-item-selected-background)}:host ::ng-deep yvc-dropdown ::ng-deep yvc-icon{display:none}\n"], dependencies: [{ kind: "component", type: i3.Icon, selector: "yvc-icon", inputs: ["label", "svg", "svgSrc"] }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.AutoComplete, selector: "yvc-autocomplete", inputs: ["field", "placeholder", "minLength", "multiple", "typeahead", "distinctValues", "forceSelection", "autocompleteValues", "disabled"], outputs: ["autocompleteFnc", "blur", "focus", "suggestionUnselect", "suggestionSelect"] }, { kind: "component", type: i7.Dropdown, selector: "yvc-dropdown", inputs: ["options", "filter", "disabled", "multiple", "disableClearButton"], outputs: ["onDropdownOptionsClose"] }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }] }); }
241
241
  }
242
242
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: OrganizationComponent, decorators: [{
243
243
  type: Component,
@@ -252,7 +252,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
252
252
  useExisting: forwardRef(() => OrganizationComponent),
253
253
  multi: true
254
254
  }
255
- ], template: "<div class=\"eo-organization\" [ngClass]=\"{acInputHidden: !multiselect && innerValue.length}\">\n\n @if (isSearch && !isTableElement) {\n <yvc-dropdown [(ngModel)]=\"searchOption\" (ngModelChange)=\"onValueChange()\" [options]=\"availableSearchOptions\"\n [disabled]=\"readonly\" [disableClearButton]=\"true\"></yvc-dropdown>\n }\n\n <yvc-autocomplete [(ngModel)]=\"innerValue\" #autocomplete (suggestionSelect)=\"onSelect($event)\"\n [placeholder]=\"placeholder\" (suggestionUnselect)=\"onUnselect($event)\" (blur)=\"onAutoCompleteBlur()\"\n [disabled]=\"readonly\" [autocompleteValues]=\"autocompleteRes\" field=\"id\"\n [forceSelection]=\"true\"\n (autocompleteFnc)=\"autocompleteFn($event)\" [multiple]=\"true\">\n\n <ng-template #autocompleteOptionTemplate let-item>\n <div class=\"org-item\">\n <yvc-icon [svg]=\"item.type === 'group' ? icon.group : icon.user\"></yvc-icon>\n <span *ngIf=\"(item.firstname?.length && item.lastname?.length) || item.type === 'group'\">{{item.title}}\n ({{item.name}})</span>\n <span *ngIf=\"!item.firstname?.length && !item.lastname?.length && item.type !== 'group'\">({{item.name}})</span>\n <span *ngIf=\"!item.firstname?.length && item.lastname?.length\">{{item.lastname}} ({{item.name}})</span>\n <span *ngIf=\"item.firstname?.length && !item.lastname?.length\">{{item.firstname}} ({{item.name}})</span>\n </div>\n </ng-template>\n\n <ng-template #chipTemplate let-item>\n <div class=\"org-item\">\n <yvc-icon [svg]=\"item.type === 'group' ? icon.group : icon.user\"></yvc-icon>\n <span\n *ngIf=\"(item.firstname?.length && item.lastname?.length && item.active) || item.type === 'group'\">{{item.title}}\n ({{item.name}})</span>\n <span class=\"inactive\"\n *ngIf=\"(item.firstname?.length && item.lastname?.length && !item.active)\">{{item.title}}\n ({{item.name}})</span>\n <span *ngIf=\"(!item.firstname?.length && !item.lastname?.length && !item.active && !item.type)\"\n class=\"deleted-user-label\">{{'eo.form.property.organization.error.usernotfound'|translate}}</span>\n <span\n *ngIf=\"!item.firstname?.length && !item.lastname?.length && item.active && item.type !== 'group'\">({{item.name}})</span>\n <span *ngIf=\"!item.firstname?.length && item.lastname?.length\">{{item.lastname}} ({{item.name}})</span>\n <span *ngIf=\"item.firstname?.length && !item.lastname?.length\">{{item.firstname}} ({{item.name}})</span>\n </div>\n </ng-template>\n\n </yvc-autocomplete>\n</div>\n", styles: [".eo-organization{display:flex;align-items:center}.eo-organization yvc-autocomplete{width:100%;border:0;outline:0!important}.eo-organization .org-item{display:flex;align-items:center}.eo-organization .inactive{text-decoration:line-through}:host.readonly ::ng-deep .ui-autocomplete-token-icon{display:none}:host ::ng-deep .chip yvc-icon{flex:0 0 auto;width:18px;height:18px;color:var(--text-color-caption)}:host ::ng-deep .deleted-user-label{color:var(--color-error)}:host ::ng-deep .eo-organization.acInputHidden .inputToken{width:0!important;margin:0;padding:0}:host ::ng-deep .eo-organization.acInputHidden .inputToken input{width:0!important}:host ::ng-deep .ui-autocomplete-panel{left:0!important}:host ::ng-deep yvc-dropdown{min-width:min-content;border:0;cursor:pointer;border-radius:2px;outline:1px solid rgba(0,0,0,.2);background-color:var(--list-item-hover-background);margin-right:4px}:host ::ng-deep yvc-dropdown:hover{background-color:var(--list-item-selected-background)}:host ::ng-deep yvc-dropdown ::ng-deep yvc-icon{display:none}\n"] }]
255
+ ], template: "<div class=\"eo-organization\" [ngClass]=\"{acInputHidden: !multiselect && innerValue?.length}\">\n\n @if (isSearch && !isTableElement) {\n <yvc-dropdown [(ngModel)]=\"searchOption\" (ngModelChange)=\"onValueChange()\" [options]=\"availableSearchOptions\"\n [disabled]=\"readonly\" [disableClearButton]=\"true\"></yvc-dropdown>\n }\n\n <yvc-autocomplete [(ngModel)]=\"innerValue\" #autocomplete (suggestionSelect)=\"onSelect($event)\"\n [placeholder]=\"placeholder\" (suggestionUnselect)=\"onUnselect($event)\" (blur)=\"onAutoCompleteBlur()\"\n [disabled]=\"readonly\" [autocompleteValues]=\"autocompleteRes\" field=\"id\"\n [forceSelection]=\"true\"\n (autocompleteFnc)=\"autocompleteFn($event)\" [multiple]=\"true\">\n\n <ng-template #autocompleteOptionTemplate let-item>\n <div class=\"org-item\">\n <yvc-icon [svg]=\"item.type === 'group' ? icon.group : icon.user\"></yvc-icon>\n <span *ngIf=\"(item.firstname?.length && item.lastname?.length) || item.type === 'group'\">{{item.title}}\n ({{item.name}})</span>\n <span *ngIf=\"!item.firstname?.length && !item.lastname?.length && item.type !== 'group'\">({{item.name}})</span>\n <span *ngIf=\"!item.firstname?.length && item.lastname?.length\">{{item.lastname}} ({{item.name}})</span>\n <span *ngIf=\"item.firstname?.length && !item.lastname?.length\">{{item.firstname}} ({{item.name}})</span>\n </div>\n </ng-template>\n\n <ng-template #chipTemplate let-item>\n <div class=\"org-item\">\n <yvc-icon [svg]=\"item.type === 'group' ? icon.group : icon.user\"></yvc-icon>\n <span\n *ngIf=\"(item.firstname?.length && item.lastname?.length && item.active) || item.type === 'group'\">{{item.title}}\n ({{item.name}})</span>\n <span class=\"inactive\"\n *ngIf=\"(item.firstname?.length && item.lastname?.length && !item.active)\">{{item.title}}\n ({{item.name}})</span>\n <span *ngIf=\"(!item.firstname?.length && !item.lastname?.length && !item.active && !item.type)\"\n class=\"deleted-user-label\">{{'eo.form.property.organization.error.usernotfound'|translate}}</span>\n <span\n *ngIf=\"!item.firstname?.length && !item.lastname?.length && item.active && item.type !== 'group'\">({{item.name}})</span>\n <span *ngIf=\"!item.firstname?.length && item.lastname?.length\">{{item.lastname}} ({{item.name}})</span>\n <span *ngIf=\"item.firstname?.length && !item.lastname?.length\">{{item.firstname}} ({{item.name}})</span>\n </div>\n </ng-template>\n\n </yvc-autocomplete>\n</div>\n", styles: [".eo-organization{display:flex;align-items:center}.eo-organization yvc-autocomplete{width:100%;border:0;outline:0!important}.eo-organization .org-item{display:flex;align-items:center}.eo-organization .inactive{text-decoration:line-through}:host.readonly ::ng-deep .ui-autocomplete-token-icon{display:none}:host ::ng-deep .chip yvc-icon{flex:0 0 auto;width:18px;height:18px;color:var(--text-color-caption)}:host ::ng-deep .deleted-user-label{color:var(--color-error)}:host ::ng-deep .eo-organization.acInputHidden .inputToken{width:0!important;margin:0;padding:0}:host ::ng-deep .eo-organization.acInputHidden .inputToken input{width:0!important}:host ::ng-deep .ui-autocomplete-panel{left:0!important}:host ::ng-deep yvc-dropdown{min-width:min-content;border:0;cursor:pointer;border-radius:2px;outline:1px solid rgba(0,0,0,.2);background-color:var(--list-item-hover-background);margin-right:4px}:host ::ng-deep yvc-dropdown:hover{background-color:var(--list-item-selected-background)}:host ::ng-deep yvc-dropdown ::ng-deep yvc-icon{display:none}\n"] }]
256
256
  }], ctorParameters: () => [{ type: i1.BackendService }, { type: i1.TranslateService }, { type: i1.SystemService }, { type: i1.UserService }, { type: i2.AppSearchService }], propDecorators: { autoCompleteInput: [{
257
257
  type: ViewChild,
258
258
  args: ['autocomplete']
@@ -286,4 +286,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
286
286
  }], isTableElement: [{
287
287
  type: Input
288
288
  }] } });
289
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL2Zvcm0tZWxlbWVudHMvb3JnYW5pemF0aW9uL29yZ2FuaXphdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9mb3JtLWVsZW1lbnRzL29yZ2FuaXphdGlvbi9vcmdhbml6YXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXVCLGFBQWEsRUFBRSxpQkFBaUIsRUFBWSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pHLE9BQU8sRUFBaUIsVUFBVSxFQUFFLFlBQVksRUFBZ0QsS0FBSyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBRTNILE9BQU8sRUFBQyxRQUFRLElBQUksa0JBQWtCLEVBQUUsRUFBRSxJQUFJLFlBQVksRUFBZSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7OztBQTJCdEYsTUFBTSxPQUFPLHFCQUFxQjtJQTBDaEMsSUFBYSxpQkFBaUIsQ0FBQyxDQUFVO1FBQ3ZDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDN0UsQ0FBQztJQUNELElBQUksaUJBQWlCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFBO0lBQ2hDLENBQUM7SUFJRCxJQUFhLFFBQVEsQ0FBQyxDQUFV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LEVBQUUsc0JBQXNCLENBQUM7NEJBQ3BELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO3VNQUkwQixpQkFBaUI7c0JBQTNDLFNBQVM7dUJBQUMsY0FBYztnQkFVTSxTQUFTO3NCQUF2QyxXQUFXO3VCQUFDLGdCQUFnQjtnQkFHN0IsZUFBZTtzQkFEZCxNQUFNO2dCQUlQLGlCQUFpQjtzQkFEaEIsTUFBTTtnQkF5Qk0saUJBQWlCO3NCQUE3QixLQUFLO2dCQU9HLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNPLFFBQVE7c0JBQXBCLEtBQUs7Z0JBTU8sUUFBUTtzQkFBcEIsS0FBSztnQkFNRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRDaGVja2VkLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBWYWxpZGF0b3J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7QmFja2VuZFNlcnZpY2UsIFJhbmdlVmFsdWUsIFNlYXJjaEZpbHRlciwgU3lzdGVtU2VydmljZSwgVHJhbnNsYXRlU2VydmljZSwgVXNlclNlcnZpY2UsIFV0aWxzfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuaW1wb3J0IHtBdXRvQ29tcGxldGV9IGZyb20gJ0B5dXV2aXMvY29tcG9uZW50cy9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHtmb3JrSm9pbiBhcyBvYnNlcnZhYmxlRm9ya0pvaW4sIG9mIGFzIG9ic2VydmFibGVPZiwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7QXBwU2VhcmNoU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9yZ2FuaXphdGlvbkZpbHRlciB7XG4gIHR5cGU/OiBzdHJpbmc7ICAgICAgICAvLyBUaGUgdHlwZSBvZiB0aGUgb3JnYW5pemF0aW9uIHVuaXQgKCdVU0VSJyBvciAnR1JPVVAnKSB0byBiZSBkaXNwbGF5ZWRcbiAgZ3JvdXBzPzogc3RyaW5nW107ICAgIC8vIGFuIGFycmF5IG9mIGdyb3VwIG5hbWVzIHRvIGZpbHRlciBhdXRvY29tcGxldGUgcmVzdWx0cyB3aXRoXG4gIHJvbGVzPzogc3RyaW5nW107ICAgICAvLyBhbiBhcnJheSBvZiByb2xlIG5hbWVzIHRvIGZpbHRlciBhdXRvY29tcGxldGUgcmVzdWx0cyB3aXRoXG4gIGFjdGl2ZW9ubHk/OiBib29sZWFuOyAvLyB3aGV0aGVyIG9yIG5vdCB0byBmZXRjaCBvbmx5IGFjdGl2ZSBvcmdhbml6YXRpb24gb2JqZWN0c1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlby1vcmdhbml6YXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vb3JnYW5pemF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vb3JnYW5pemF0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gT3JnYW5pemF0aW9uQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gT3JnYW5pemF0aW9uQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIE9yZ2FuaXphdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlckNvbnRlbnRDaGVja2VkLCBWYWxpZGF0b3Ige1xuXG4gIEBWaWV3Q2hpbGQoJ2F1dG9jb21wbGV0ZScpIGF1dG9Db21wbGV0ZUlucHV0OiBBdXRvQ29tcGxldGU7XG5cbiAgaWNvbiA9IHtcbiAgICB1c2VyOiAnPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAtOTYwIDk2MCA5NjBcIiB3aWR0aD1cIjIwXCI+PHBhdGggZD1cIk00ODAtNDgwcS02MCAwLTEwMi00MnQtNDItMTAycTAtNjAgNDItMTAydDEwMi00MnE2MCAwIDEwMiA0MnQ0MiAxMDJxMCA2MC00MiAxMDJ0LTEwMiA0MlpNMTkyLTE5MnYtOTZxMC0yMyAxMi41LTQzLjVUMjM5LTM2NnE1NS0zMiAxMTYuNS00OVQ0ODAtNDMycTYzIDAgMTI0LjUgMTdUNzIxLTM2NnEyMiAxMyAzNC41IDM0dDEyLjUgNDR2OTZIMTkyWlwiLz48L3N2Zz4nLFxuICAgIGdyb3VwOiAnPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAtOTYwIDk2MCA5NjBcIiB3aWR0aD1cIjIwXCI+PHBhdGggZD1cIk05Ni0xOTJ2LTkycTAtMjYgMTIuNS00Ny41VDE0My0zNjZxNTQtMzIgMTE0LjUtNDlUMzg0LTQzMnE2NiAwIDEyNi41IDE3VDYyNS0zNjZxMjIgMTMgMzQuNSAzNC41VDY3Mi0yODR2OTJIOTZabTY0OCAwdi05MnEwLTQyLTE5LjUtNzhUNjcyLTQyMXEzOSA4IDc1LjUgMjEuNVQ4MTctMzY2cTIyIDEzIDM0LjUgMzQuNVQ4NjQtMjg0djkySDc0NFpNMzg0LTQ4MHEtNjAgMC0xMDItNDJ0LTQyLTEwMnEwLTYwIDQyLTEwMnQxMDItNDJxNjAgMCAxMDIgNDJ0NDIgMTAycTAgNjAtNDIgMTAydC0xMDIgNDJabTMzNi0xNDRxMCA2MC00MiAxMDJ0LTEwMiA0MnEtOCAwLTE1LS41dC0xNS0yLjVxMjUtMjkgMzkuNS02NC41VDYwMC02MjRxMC00MS0xNC41LTc2LjVUNTQ2LTc2NXE4LTIgMTUtMi41dDE1LS41cTYwIDAgMTAyIDQydDQyIDEwMlpcIi8+PC9zdmc+J1xuICB9XG5cbiAgcmVtb3RlVXJsID0gJy9vcmdhbml6YXRpb24vcXVlcnk/cT0nO1xuICBtaW5MZW5ndGggPSAyO1xuICB3aWxkQ2FyZCA9ICcqJztcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5yZWFkb25seScpIF9yZWFkb25seTogYm9vbGVhbjtcblxuICBAT3V0cHV0KClcbiAgb25WYWx1ZVJlc29sdmVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAvLyBlbWl0dGVkIHdoZW4gdmFsdWUgY2hhbmdlZCBob2xkaW5nIHRoZSByZXNvbHZlZCBkYXRhX21ldGFcbiAgQE91dHB1dCgpXG4gIG9uRGF0YU1ldGFDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGF1dG9jb21wbGV0ZVJlczogYW55W107XG4gIC8vIG1vZGVsIHZhbHVlXG4gIHZhbHVlO1xuICBjdXJyZW50VXNlcklkOiBzdHJpbmc7XG4gIC8vIGlubmVyIG5nLW1vZGVsIHZhbHVlXG4gIGlubmVyVmFsdWU6IGFueVtdID0gW107XG4gIGVycm9yOiBhbnkgPSB7fTtcbiAgZGVsZXRlZEl0ZW1JRDogc3RyaW5nO1xuICBpc1NlYXJjaCA9IGZhbHNlO1xuXG4gIGN1cnJlbnRVc2VyID0ge1xuICAgIG5hbWU6ICcjY3VycmVudHVzZXIjJyxcbiAgICB0eXBlOiAndXNlcicsXG4gICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmZvcm0ucHJvcGVydHkub3JnYW5pemF0aW9uLmN1cnJlbnQudXNlcicpLFxuICAgIGZpcnN0bmFtZTogXCJDdXJyZW50VXNlclwiLFxuICAgIGxhc3RuYW1lOiBcIkN1cnJlbnRVc2VyXCIsXG4gICAgYWN0aXZlOiB0cnVlLFxuICAgIGhhc2ltYWdlOiBmYWxzZSxcbiAgICBwcmVzZW50OiB0cnVlXG4gIH07XG5cbiAgcHJpdmF0ZSBfcmVtb3ZlQ3VycmVudFVzZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2V0IHJlbW92ZUN1cnJlbnRVc2VyKGI6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9yZW1vdmVDdXJyZW50VXNlciA9IGI7XG4gICAgdGhpcy5jdXJyZW50VXNlcklkID0gYiA/IHRoaXMudXNlclNlcnZpY2UuZ2V0Q3VycmVudFVzZXIoKT8uaWQgOiB1bmRlZmluZWQ7XG4gIH1cbiAgZ2V0IHJlbW92ZUN1cnJlbnRVc2VyKCkge1xuICAgIHJldHVybiB0aGlzLl9yZW1vdmVDdXJyZW50VXNlclxuICB9XG4gIEBJbnB1dCgpIHNpdHVhdGlvbjogc3RyaW5nO1xuICBASW5wdXQoKSBmb3JtQ29udHJvbE5hbWU6IHN0cmluZztcbiAgQElucHV0KCkgbXVsdGlzZWxlY3Q6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHNldCByZWFkb25seShyOiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmVhZG9ubHkgPSByO1xuICB9XG4gIGdldCByZWFkb25seSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZG9ubHk7XG4gIH1cbiAgQElucHV0KCkgc2V0IGRhdGFNZXRhKGRNOiBhbnkpIHtcbiAgICBpZiAoZE0pIHtcbiAgICAgIHRoaXMuaW5uZXJWYWx1ZSA9IEFycmF5LmlzQXJyYXkoZE0pID8gZE0gOiBbZE1dO1xuICAgIH1cbiAgfVxuICBhdXRvY29tcGxldGVUaW1lb3V0OiBhbnlcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcbiAgLy8gbGlzdCBvZiB2YWx1ZXMgdGhhdCBzaG91bGQgbm90IGJlIHNlbGVjdGFibGVcbiAgQElucHV0KCkgZXhjZXB0aW9uczogc3RyaW5nW10gPSBbXTtcbiAgQElucHV0KCkgZmlsdGVyT2JqZWN0OiBPcmdhbml6YXRpb25GaWx0ZXI7XG4gIEBJbnB1dCgpIGZvcm1Db250cm9sO1xuICBASW5wdXQoKSBpc1RhYmxlRWxlbWVudDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJhY2tlbmQ6IEJhY2tlbmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3lzdGVtU2VydmljZTogU3lzdGVtU2VydmljZSxcbiAgICBwdWJsaWMgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXBwU2VhcmNoU2VydmljZTogQXBwU2VhcmNoU2VydmljZSkgeyB9XG5cbiAgcHVibGljIHZhbGlkYXRlKCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIC8vIG9wdGlvbnMgZm9yIHNlYXJjaCBzaXR1YXRpb25cbiAgcHVibGljIGF2YWlsYWJsZVNlYXJjaE9wdGlvbnMgPSBbXG4gICAge2xhYmVsOiBSYW5nZVZhbHVlLmdldE9wZXJhdG9yTGFiZWwoU2VhcmNoRmlsdGVyLk9QRVJBVE9SLkVRVUFMKSwgdmFsdWU6IFNlYXJjaEZpbHRlci5PUEVSQVRPUi5JTn0sXG4gICAge2xhYmVsOiBSYW5nZVZhbHVlLmdldE9wZXJhdG9yTGFiZWwoU2VhcmNoRmlsdGVyLk9QRVJBVE9SLlVTRV9OT1QpLCB2YWx1ZTogU2VhcmNoRmlsdGVyLk9QRVJBVE9SLlVTRV9OT1QsIGFjdHVhbE9wZXJhdG9yOiBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuSU59LFxuICBdO1xuXG4gIHB1YmxpYyBzZWFyY2hPcHRpb24gPSB0aGlzLmF2YWlsYWJsZVNlYXJjaE9wdGlvbnNbMF0udmFsdWU7XG5cbiAgcHJpdmF0ZSBidWlsZEF1dG9jb21wbGV0ZVVyaShxdWVyeTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBxOiBxdWVyeSxcbiAgICAgIGFjdGl2ZW9ubHk6ICh0aGlzLnNpdHVhdGlvbiAhPT0gJ1NFQVJDSCcpID8gJ3RydWUnIDogJ2ZhbHNlJyxcbiAgICAgIGRldGFpbHM6IHRydWVcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuZmlsdGVyT2JqZWN0KSB7XG4gICAgICBpZiAodGhpcy5maWx0ZXJPYmplY3QudHlwZSkge1xuICAgICAgICBwYXJhbXNbJ3Njb3BlJ10gPSB0aGlzLmZpbHRlck9iamVjdC50eXBlO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZmlsdGVyT2JqZWN0Lmdyb3Vwcykge1xuICAgICAgICBwYXJhbXNbJ2dyb3VwZmlsdGVyJ10gPSB0aGlzLmZpbHRlck9iamVjdC5ncm91cHM7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5maWx0ZXJPYmplY3Qucm9sZXMpIHtcbiAgICAgICAgcGFyYW1zWydyb2xlZmlsdGVyJ10gPSB0aGlzLmZpbHRlck9iamVjdC5yb2xlcztcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmZpbHRlck9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnYWN0aXZlb25seScpKSB7XG4gICAgICAgIHBhcmFtc1snYWN0aXZlb25seSddID0gdGhpcy5maWx0ZXJPYmplY3QuYWN0aXZlb25seSA/ICd0cnVlJyA6ICdmYWxzZSc7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBVdGlscy5idWlsZFVyaSgnL29yZ2FuaXphdGlvbi9xdWVyeScsIHBhcmFtcyk7XG4gIH1cblxuICBwcm9wYWdhdGVDaGFuZ2UgPSAoXzogYW55KSA9PiB7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcblxuICAgIGlmICh0aGlzLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIGNvbnN0IHNlYXJjaEZpbHRlcnMgPSB0aGlzLmFwcFNlYXJjaFNlcnZpY2UuZ2V0SW5kZXhTZWFyY2hRdWVyeUZpbHRlcnMoKTtcbiAgICAgIC8vIEZpbmQgdGhlIGZpbHRlciBtYXRjaGluZyB0aGUgZm9ybUNvbnRyb2xOYW1lXG4gICAgICBjb25zdCBjdXJyZW50VmFsdWVGaWx0ZXIgPSBzZWFyY2hGaWx0ZXJzLmZpbmQoXG4gICAgICAgIChmaWx0ZXIpID0+IGZpbHRlci5wcm9wZXJ0eS5lbmRzV2l0aChgLiR7dGhpcy5mb3JtQ29udHJvbE5hbWV9YCkgfHwgZmlsdGVyLnByb3BlcnR5ID09PSB0aGlzLmZvcm1Db250cm9sTmFtZVxuICAgICAgKTtcbiAgICAgIC8vIElmIGEgbWF0Y2hpbmcgZmlsdGVyIGlzIGZvdW5kLCBwcm9jZWVkIHdpdGggdXBkYXRpbmcgdGhlIG9wZXJhdG9yIGxvZ2ljXG4gICAgICBpZiAoY3VycmVudFZhbHVlRmlsdGVyKSB7XG4gICAgICAgIGNvbnN0IG9wZXJhdG9yID0gY3VycmVudFZhbHVlRmlsdGVyLnVzZU5vdFxuICAgICAgICAgID8gU2VhcmNoRmlsdGVyLk9QRVJBVE9SLlVTRV9OT1RcbiAgICAgICAgICA6IGN1cnJlbnRWYWx1ZUZpbHRlci5vcGVyYXRvcjtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSB0aGlzLmF2YWlsYWJsZVNlYXJjaE9wdGlvbnMuZmluZCgobykgPT4gby52YWx1ZSA9PT0gb3BlcmF0b3IpO1xuICAgICAgICB0aGlzLnNlYXJjaE9wdGlvbiA9IG1hdGNoID8gbWF0Y2gudmFsdWUgOiB0aGlzLmF2YWlsYWJsZVNlYXJjaE9wdGlvbnNbMF0udmFsdWU7XG4gICAgICB9XG5cbiAgICB9XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlPy52YWx1ZSB8fCB2YWx1ZSB8fCBudWxsO1xuICAgIGlmICh0aGlzLnZhbHVlKSB7XG4gICAgICB0aGlzLnJlc29sdmVGbih2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5uZXJWYWx1ZSA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIG9uVmFsdWVDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5wcm9wYWdhdGUoKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gIH1cblxuICBwcml2YXRlIHByb3BhZ2F0ZSgpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmlubmVyVmFsdWUpICYmIHRoaXMuaW5uZXJWYWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnZhbHVlID0ge1xuICAgICAgICBvcGVyYXRvcjogdGhpcy5zZWFyY2hPcHRpb24sXG4gICAgICAgIHZhbHVlOiB0aGlzLmlubmVyVmFsdWUubWFwKHYgPT4gdi5uYW1lKSxcbiAgICAgICAgYWN0dWFsT3BlcmF0b3I6IHRoaXMuc2VhcmNoT3B0aW9uID09PSBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuVVNFX05PVCA/IFNlYXJjaEZpbHRlci5PUEVSQVRPUi5JTiA6IG51bGwsXG4gICAgICAgIHVzZU5vdDogdGhpcy5zZWFyY2hPcHRpb24gPT09IFNlYXJjaEZpbHRlci5PUEVSQVRPUi5VU0VfTk9UXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICB9XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgdGhpcy5vbkRhdGFNZXRhQ2hhbmdlZC5lbWl0KHRoaXMuaW5uZXJWYWx1ZSk7XG4gIH1cblxuICBhdXRvY29tcGxldGVGbih0ZXJtOiBzdHJpbmcpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5hdXRvY29tcGxldGVUaW1lb3V0KTtcbiAgICB0aGlzLmF1dG9jb21wbGV0ZVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0ZXJtLmxlbmd0aCA+PSB0aGlzLm1pbkxlbmd0aCB8fCB0ZXJtID09PSB0aGlzLndpbGRDYXJkKSB7XG4gICAgICAgIGlmICh0aGlzLm11bHRpc2VsZWN0IHx8ICghdGhpcy5tdWx0aXNlbGVjdCAmJiB0aGlzLmlubmVyVmFsdWUubGVuZ3RoID09PSAwKSkge1xuICAgICAgICAgIHRoaXMuYmFja2VuZC5nZXRKc29uKHRoaXMuYnVpbGRBdXRvY29tcGxldGVVcmkodGVybSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgICAgICAgICAgLy8gYXV0b2NvbXBsZXRlIHZhbHVlcyBzaG91bGQgYmUgdW5pcXVlIGFuZCBub3QgcGFydCBvZiB0aGUgZXhjZXB0aW9uc1xuICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMudmFsdWU/LnZhbHVlIHx8IHRoaXMudmFsdWU7XG4gICAgICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlUmVzID0gcmVzLmZpbHRlcih2ID0+ICghdmFsdWUgfHwgdmFsdWU/LmluZGV4T2Yodi5uYW1lKSA9PT0gLTEpICYmIHRoaXMuZXhjZXB0aW9ucy5pbmRleE9mKHYubmFtZSkgPT09IC0xICYmICghdGhpcy5yZW1vdmVDdXJyZW50VXNlciB8fCB0aGlzLmN1cnJlbnRVc2VySWQgIT09IHYuaWQpKVxuICAgICAgICAgICAgICAgIC5zb3J0KFV0aWxzLnNvcnRWYWx1ZXMoJ3RpdGxlJykpLnNsaWNlKDAsIDEwKTtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlUmVzLnVuc2hpZnQodGhpcy5jdXJyZW50VXNlcik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFV0aWxzLnRocm93KG51bGwsXG4gICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uZm9ybS5wcm9wZXJ0eS5vcmdhbml6YXRpb24ucmVxdWVzdC5lcnJvci50aXRsZScpLFxuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmZvcm0ucHJvcGVydHkub3JnYW5pemF0aW9uLnJlcXVlc3QuZXJyb3IubXNnJylcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZVJlcyA9IFtdO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZVJlcyA9IFtdO1xuICAgICAgfVxuICAgIH0sIDEwMDApO1xuICB9XG5cbiAgcmVzb2x2ZUZuKHZhbHVlOiBhbnkpOiBTdWJzY3JpcHRpb24ge1xuICAgIGNvbnN0IGlzQ3VycmVudFVzZXIgPSB2YWx1ZVswXSA9PT0gdGhpcy5jdXJyZW50VXNlci5uYW1lO1xuICAgIGlmIChpc0N1cnJlbnRVc2VyKSB7XG4gICAgICB0aGlzLmlubmVyVmFsdWUgPSBbdGhpcy5jdXJyZW50VXNlcl07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHZhbHVlc0FycmF5ID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XG4gICAgICBjb25zdCBvYnNlcnZhYmxlcyA9IHZhbHVlc0FycmF5Lm1hcCh2ID0+IHtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSB0aGlzLmlubmVyVmFsdWUuZmluZChpdiA9PiBpdi5uYW1lID09PSB2KTtcbiAgICAgICAgcmV0dXJuIG1hdGNoID8gb2JzZXJ2YWJsZU9mKG1hdGNoKSA6IHRoaXMuc3lzdGVtU2VydmljZS5nZXRPcmdhbml6YXRpb25PYmplY3Qodik7XG4gICAgICB9KTtcblxuICAgICAgaWYgKG9ic2VydmFibGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLmlubmVyVmFsdWUgPSBbXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBvYnNlcnZhYmxlRm9ya0pvaW4ob2JzZXJ2YWJsZXMpLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgICAgICB0aGlzLmlubmVyVmFsdWUgPSBkYXRhO1xuICAgICAgICAgIHRoaXMub25WYWx1ZVJlc29sdmVkLmVtaXQodGhpcy5pbm5lclZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMub25WYWx1ZVJlc29sdmVkLmVtaXQodGhpcy5pbm5lclZhbHVlKTtcbiAgfVxuXG5cbiAgLy8gaGFuZGxlIHNlbGVjdGlvbiBjaGFuZ2VzIHRvIHRoZSBtb2RlbFxuICBvblVuc2VsZWN0KHZhbHVlKSB7XG4gICAgdGhpcy5pbm5lclZhbHVlID0gdGhpcy5pbm5lclZhbHVlLmZpbHRlcih2ID0+IHYubmFtZSAhPT0gdmFsdWUubmFtZSk7XG4gICAgbGV0IF92YWx1ZSA9IHRoaXMuaW5uZXJWYWx1ZS5tYXAodiA9PiB2Lm5hbWUpO1xuICAgIHRoaXMudmFsdWUgPSB0aGlzLm11bHRpc2VsZWN0ID8gX3ZhbHVlIDogbnVsbDtcbiAgICBpZiAoIXRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgIHRoaXMuY2xlYXJJbm5lcklucHV0KCk7XG4gICAgfVxuICAgIHRoaXMuYXV0b0NvbXBsZXRlSW5wdXQuZm9jdXNJbnB1dCgpO1xuICAgIHRoaXMucHJvcGFnYXRlKCk7XG4gIH1cblxuICAvLyBoYW5kbGUgc2VsZWN0aW9uIGNoYW5nZXMgdG8gdGhlIG1vZGVsXG4gIG9uU2VsZWN0KHZhbHVlKSB7XG4gICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmlubmVyVmFsdWUubWFwKHYgPT4gdi5uYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaW50ZXJuYWwgYXV0b2NvbXBsZXRlIGNvbnRyb2wgaXMgYWx3YXlzIHNldCB0byBtdWx0aXNlbGVjdFxuICAgICAgLy8gc28gdGhlIHJlc29sdmVkIHZhbHVlIGlzIGFsd2F5cyBhbiBhcnJheVxuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuaW5uZXJWYWx1ZVswXS5uYW1lO1xuICAgIH1cbiAgICB0aGlzLnByb3BhZ2F0ZSgpO1xuICB9XG5cbiAgb25BdXRvQ29tcGxldGVCbHVyKCkge1xuICAgIHRoaXMuY2xlYXJJbm5lcklucHV0KCk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFySW5uZXJJbnB1dCgpIHtcbiAgICB0aGlzLmF1dG9Db21wbGV0ZUlucHV0LmNsZWFySW5wdXQoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpIHtcbiAgICBpZiAodGhpcy5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICB0aGlzLm11bHRpc2VsZWN0ID0gdHJ1ZTtcbiAgICAgIHRoaXMuaXNTZWFyY2ggPSB0cnVlO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImVvLW9yZ2FuaXphdGlvblwiIFtuZ0NsYXNzXT1cInthY0lucHV0SGlkZGVuOiAhbXVsdGlzZWxlY3QgJiYgaW5uZXJWYWx1ZS5sZW5ndGh9XCI+XG5cbiAgQGlmIChpc1NlYXJjaCAmJiAhaXNUYWJsZUVsZW1lbnQpIHtcbiAgICA8eXZjLWRyb3Bkb3duIFsobmdNb2RlbCldPVwic2VhcmNoT3B0aW9uXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgpXCIgW29wdGlvbnNdPVwiYXZhaWxhYmxlU2VhcmNoT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicmVhZG9ubHlcIiBbZGlzYWJsZUNsZWFyQnV0dG9uXT1cInRydWVcIj48L3l2Yy1kcm9wZG93bj5cbiAgfVxuXG4gIDx5dmMtYXV0b2NvbXBsZXRlIFsobmdNb2RlbCldPVwiaW5uZXJWYWx1ZVwiICNhdXRvY29tcGxldGUgKHN1Z2dlc3Rpb25TZWxlY3QpPVwib25TZWxlY3QoJGV2ZW50KVwiXG4gICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgKHN1Z2dlc3Rpb25VbnNlbGVjdCk9XCJvblVuc2VsZWN0KCRldmVudClcIiAoYmx1cik9XCJvbkF1dG9Db21wbGV0ZUJsdXIoKVwiXG4gICAgW2Rpc2FibGVkXT1cInJlYWRvbmx5XCIgW2F1dG9jb21wbGV0ZVZhbHVlc109XCJhdXRvY29tcGxldGVSZXNcIiBmaWVsZD1cImlkXCJcbiAgICBbZm9yY2VTZWxlY3Rpb25dPVwidHJ1ZVwiXG4gICAgKGF1dG9jb21wbGV0ZUZuYyk9XCJhdXRvY29tcGxldGVGbigkZXZlbnQpXCIgW211bHRpcGxlXT1cInRydWVcIj5cblxuICAgIDxuZy10ZW1wbGF0ZSAjYXV0b2NvbXBsZXRlT3B0aW9uVGVtcGxhdGUgbGV0LWl0ZW0+XG4gICAgICA8ZGl2IGNsYXNzPVwib3JnLWl0ZW1cIj5cbiAgICAgICAgPHl2Yy1pY29uIFtzdmddPVwiaXRlbS50eXBlID09PSAnZ3JvdXAnID8gIGljb24uZ3JvdXAgOiBpY29uLnVzZXJcIj48L3l2Yy1pY29uPlxuICAgICAgICA8c3BhbiAqbmdJZj1cIihpdGVtLmZpcnN0bmFtZT8ubGVuZ3RoICYmIGl0ZW0ubGFzdG5hbWU/Lmxlbmd0aCkgfHwgaXRlbS50eXBlID09PSAnZ3JvdXAnXCI+e3tpdGVtLnRpdGxlfX1cbiAgICAgICAgICAoe3tpdGVtLm5hbWV9fSk8L3NwYW4+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIWl0ZW0uZmlyc3RuYW1lPy5sZW5ndGggJiYgIWl0ZW0ubGFzdG5hbWU/Lmxlbmd0aCAmJiBpdGVtLnR5cGUgIT09ICdncm91cCdcIj4oe3tpdGVtLm5hbWV9fSk8L3NwYW4+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIWl0ZW0uZmlyc3RuYW1lPy5sZW5ndGggJiYgaXRlbS5sYXN0bmFtZT8ubGVuZ3RoXCI+e3tpdGVtLmxhc3RuYW1lfX0gKHt7aXRlbS5uYW1lfX0pPC9zcGFuPlxuICAgICAgICA8c3BhbiAqbmdJZj1cIml0ZW0uZmlyc3RuYW1lPy5sZW5ndGggJiYgIWl0ZW0ubGFzdG5hbWU/Lmxlbmd0aFwiPnt7aXRlbS5maXJzdG5hbWV9fSAoe3tpdGVtLm5hbWV9fSk8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlICNjaGlwVGVtcGxhdGUgbGV0LWl0ZW0+XG4gICAgICA8ZGl2IGNsYXNzPVwib3JnLWl0ZW1cIj5cbiAgICAgICAgPHl2Yy1pY29uIFtzdmddPVwiaXRlbS50eXBlID09PSAnZ3JvdXAnID8gIGljb24uZ3JvdXAgOiBpY29uLnVzZXJcIj48L3l2Yy1pY29uPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICpuZ0lmPVwiKGl0ZW0uZmlyc3RuYW1lPy5sZW5ndGggJiYgaXRlbS5sYXN0bmFtZT8ubGVuZ3RoICYmIGl0ZW0uYWN0aXZlKSB8fCBpdGVtLnR5cGUgPT09ICdncm91cCdcIj57e2l0ZW0udGl0bGV9fVxuICAgICAgICAgICh7e2l0ZW0ubmFtZX19KTwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmFjdGl2ZVwiXG4gICAgICAgICAgKm5nSWY9XCIoaXRlbS5maXJzdG5hbWU/Lmxlbmd0aCAmJiBpdGVtLmxhc3RuYW1lPy5sZW5ndGggJiYgIWl0ZW0uYWN0aXZlKVwiPnt7aXRlbS50aXRsZX19XG4gICAgICAgICAgKHt7aXRlbS5uYW1lfX0pPC9zcGFuPlxuICAgICAgICA8c3BhbiAqbmdJZj1cIighaXRlbS5maXJzdG5hbWU/Lmxlbmd0aCAmJiAhaXRlbS5sYXN0bmFtZT8ubGVuZ3RoICYmICFpdGVtLmFjdGl2ZSAmJiAhaXRlbS50eXBlKVwiXG4gICAgICAgICAgY2xhc3M9XCJkZWxldGVkLXVzZXItbGFiZWxcIj57eydlby5mb3JtLnByb3BlcnR5Lm9yZ2FuaXphdGlvbi5lcnJvci51c2Vybm90Zm91bmQnfHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICpuZ0lmPVwiIWl0ZW0uZmlyc3RuYW1lPy5sZW5ndGggJiYgIWl0ZW0ubGFzdG5hbWU/Lmxlbmd0aCAmJiBpdGVtLmFjdGl2ZSAmJiBpdGVtLnR5cGUgIT09ICdncm91cCdcIj4oe3tpdGVtLm5hbWV9fSk8L3NwYW4+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIWl0ZW0uZmlyc3RuYW1lPy5sZW5ndGggJiYgaXRlbS5sYXN0bmFtZT8ubGVuZ3RoXCI+e3tpdGVtLmxhc3RuYW1lfX0gKHt7aXRlbS5uYW1lfX0pPC9zcGFuPlxuICAgICAgICA8c3BhbiAqbmdJZj1cIml0ZW0uZmlyc3RuYW1lPy5sZW5ndGggJiYgIWl0ZW0ubGFzdG5hbWU/Lmxlbmd0aFwiPnt7aXRlbS5maXJzdG5hbWV9fSAoe3tpdGVtLm5hbWV9fSk8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gIDwveXZjLWF1dG9jb21wbGV0ZT5cbjwvZGl2PlxuIl19
289
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL2Zvcm0tZWxlbWVudHMvb3JnYW5pemF0aW9uL29yZ2FuaXphdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9mb3JtLWVsZW1lbnRzL29yZ2FuaXphdGlvbi9vcmdhbml6YXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXVCLGFBQWEsRUFBRSxpQkFBaUIsRUFBWSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pHLE9BQU8sRUFBaUIsVUFBVSxFQUFFLFlBQVksRUFBZ0QsS0FBSyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBRTNILE9BQU8sRUFBQyxRQUFRLElBQUksa0JBQWtCLEVBQUUsRUFBRSxJQUFJLFlBQVksRUFBZSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7OztBQTJCdEYsTUFBTSxPQUFPLHFCQUFxQjtJQTBDaEMsSUFBYSxpQkFBaUIsQ0FBQyxDQUFVO1FBQ3ZDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDN0UsQ0FBQztJQUNELElBQUksaUJBQWlCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFBO0lBQ2hDLENBQUM7SUFJRCxJQUFhLFFBQVEsQ0FBQyxDQUFV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VyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsc0JBQXNCLENBQUM7NEJBQ3BELEtBQUssRUFBRSxJQUFJO3lCQUNaO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSxhQUFhOzRCQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxzQkFBc0IsQ0FBQzs0QkFDcEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7dU1BSTBCLGlCQUFpQjtzQkFBM0MsU0FBUzt1QkFBQyxjQUFjO2dCQVVNLFNBQVM7c0JBQXZDLFdBQVc7dUJBQUMsZ0JBQWdCO2dCQUc3QixlQUFlO3NCQURkLE1BQU07Z0JBSVAsaUJBQWlCO3NCQURoQixNQUFNO2dCQXlCTSxpQkFBaUI7c0JBQTdCLEtBQUs7Z0JBT0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ08sUUFBUTtzQkFBcEIsS0FBSztnQkFNTyxRQUFRO3NCQUFwQixLQUFLO2dCQU1HLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudENoZWNrZWQsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IsIFZhbGlkYXRvcn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtCYWNrZW5kU2VydmljZSwgUmFuZ2VWYWx1ZSwgU2VhcmNoRmlsdGVyLCBTeXN0ZW1TZXJ2aWNlLCBUcmFuc2xhdGVTZXJ2aWNlLCBVc2VyU2VydmljZSwgVXRpbHN9IGZyb20gJ0Blby1zZGsvY29yZSc7XG5pbXBvcnQge0F1dG9Db21wbGV0ZX0gZnJvbSAnQHl1dXZpcy9jb21wb25lbnRzL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQge2ZvcmtKb2luIGFzIG9ic2VydmFibGVGb3JrSm9pbiwgb2YgYXMgb2JzZXJ2YWJsZU9mLCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtBcHBTZWFyY2hTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3JnYW5pemF0aW9uRmlsdGVyIHtcbiAgdHlwZT86IHN0cmluZzsgICAgICAgIC8vIFRoZSB0eXBlIG9mIHRoZSBvcmdhbml6YXRpb24gdW5pdCAoJ1VTRVInIG9yICdHUk9VUCcpIHRvIGJlIGRpc3BsYXllZFxuICBncm91cHM/OiBzdHJpbmdbXTsgICAgLy8gYW4gYXJyYXkgb2YgZ3JvdXAgbmFtZXMgdG8gZmlsdGVyIGF1dG9jb21wbGV0ZSByZXN1bHRzIHdpdGhcbiAgcm9sZXM/OiBzdHJpbmdbXTsgICAgIC8vIGFuIGFycmF5IG9mIHJvbGUgbmFtZXMgdG8gZmlsdGVyIGF1dG9jb21wbGV0ZSByZXN1bHRzIHdpdGhcbiAgYWN0aXZlb25seT86IGJvb2xlYW47IC8vIHdoZXRoZXIgb3Igbm90IHRvIGZldGNoIG9ubHkgYWN0aXZlIG9yZ2FuaXphdGlvbiBvYmplY3RzXG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLW9yZ2FuaXphdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9vcmdhbml6YXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vcmdhbml6YXRpb24uY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBPcmdhbml6YXRpb25Db21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBPcmdhbml6YXRpb25Db21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgT3JnYW5pemF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyQ29udGVudENoZWNrZWQsIFZhbGlkYXRvciB7XG5cbiAgQFZpZXdDaGlsZCgnYXV0b2NvbXBsZXRlJykgYXV0b0NvbXBsZXRlSW5wdXQ6IEF1dG9Db21wbGV0ZTtcblxuICBpY29uID0ge1xuICAgIHVzZXI6ICc8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIC05NjAgOTYwIDk2MFwiIHdpZHRoPVwiMjBcIj48cGF0aCBkPVwiTTQ4MC00ODBxLTYwIDAtMTAyLTQydC00Mi0xMDJxMC02MCA0Mi0xMDJ0MTAyLTQycTYwIDAgMTAyIDQydDQyIDEwMnEwIDYwLTQyIDEwMnQtMTAyIDQyWk0xOTItMTkydi05NnEwLTIzIDEyLjUtNDMuNVQyMzktMzY2cTU1LTMyIDExNi41LTQ5VDQ4MC00MzJxNjMgMCAxMjQuNSAxN1Q3MjEtMzY2cTIyIDEzIDM0LjUgMzR0MTIuNSA0NHY5NkgxOTJaXCIvPjwvc3ZnPicsXG4gICAgZ3JvdXA6ICc8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIC05NjAgOTYwIDk2MFwiIHdpZHRoPVwiMjBcIj48cGF0aCBkPVwiTTk2LTE5MnYtOTJxMC0yNiAxMi41LTQ3LjVUMTQzLTM2NnE1NC0zMiAxMTQuNS00OVQzODQtNDMycTY2IDAgMTI2LjUgMTdUNjI1LTM2NnEyMiAxMyAzNC41IDM0LjVUNjcyLTI4NHY5Mkg5NlptNjQ4IDB2LTkycTAtNDItMTkuNS03OFQ2NzItNDIxcTM5IDggNzUuNSAyMS41VDgxNy0zNjZxMjIgMTMgMzQuNSAzNC41VDg2NC0yODR2OTJINzQ0Wk0zODQtNDgwcS02MCAwLTEwMi00MnQtNDItMTAycTAtNjAgNDItMTAydDEwMi00MnE2MCAwIDEwMiA0MnQ0MiAxMDJxMCA2MC00MiAxMDJ0LTEwMiA0MlptMzM2LTE0NHEwIDYwLTQyIDEwMnQtMTAyIDQycS04IDAtMTUtLjV0LTE1LTIuNXEyNS0yOSAzOS41LTY0LjVUNjAwLTYyNHEwLTQxLTE0LjUtNzYuNVQ1NDYtNzY1cTgtMiAxNS0yLjV0MTUtLjVxNjAgMCAxMDIgNDJ0NDIgMTAyWlwiLz48L3N2Zz4nXG4gIH1cblxuICByZW1vdGVVcmwgPSAnL29yZ2FuaXphdGlvbi9xdWVyeT9xPSc7XG4gIG1pbkxlbmd0aCA9IDI7XG4gIHdpbGRDYXJkID0gJyonO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnJlYWRvbmx5JykgX3JlYWRvbmx5OiBib29sZWFuO1xuXG4gIEBPdXRwdXQoKVxuICBvblZhbHVlUmVzb2x2ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIC8vIGVtaXR0ZWQgd2hlbiB2YWx1ZSBjaGFuZ2VkIGhvbGRpbmcgdGhlIHJlc29sdmVkIGRhdGFfbWV0YVxuICBAT3V0cHV0KClcbiAgb25EYXRhTWV0YUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgYXV0b2NvbXBsZXRlUmVzOiBhbnlbXTtcbiAgLy8gbW9kZWwgdmFsdWVcbiAgdmFsdWU7XG4gIGN1cnJlbnRVc2VySWQ6IHN0cmluZztcbiAgLy8gaW5uZXIgbmctbW9kZWwgdmFsdWVcbiAgaW5uZXJWYWx1ZTogYW55W10gPSBbXTtcbiAgZXJyb3I6IGFueSA9IHt9O1xuICBkZWxldGVkSXRlbUlEOiBzdHJpbmc7XG4gIGlzU2VhcmNoID0gZmFsc2U7XG5cbiAgY3VycmVudFVzZXIgPSB7XG4gICAgbmFtZTogJyNjdXJyZW50dXNlciMnLFxuICAgIHR5cGU6ICd1c2VyJyxcbiAgICB0aXRsZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uZm9ybS5wcm9wZXJ0eS5vcmdhbml6YXRpb24uY3VycmVudC51c2VyJyksXG4gICAgZmlyc3RuYW1lOiBcIkN1cnJlbnRVc2VyXCIsXG4gICAgbGFzdG5hbWU6IFwiQ3VycmVudFVzZXJcIixcbiAgICBhY3RpdmU6IHRydWUsXG4gICAgaGFzaW1hZ2U6IGZhbHNlLFxuICAgIHByZXNlbnQ6IHRydWVcbiAgfTtcblxuICBwcml2YXRlIF9yZW1vdmVDdXJyZW50VXNlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzZXQgcmVtb3ZlQ3VycmVudFVzZXIoYjogYm9vbGVhbikge1xuICAgIHRoaXMuX3JlbW92ZUN1cnJlbnRVc2VyID0gYjtcbiAgICB0aGlzLmN1cnJlbnRVc2VySWQgPSBiID8gdGhpcy51c2VyU2VydmljZS5nZXRDdXJyZW50VXNlcigpPy5pZCA6IHVuZGVmaW5lZDtcbiAgfVxuICBnZXQgcmVtb3ZlQ3VycmVudFVzZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlbW92ZUN1cnJlbnRVc2VyXG4gIH1cbiAgQElucHV0KCkgc2l0dWF0aW9uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGZvcm1Db250cm9sTmFtZTogc3RyaW5nO1xuICBASW5wdXQoKSBtdWx0aXNlbGVjdDogYm9vbGVhbjtcbiAgQElucHV0KCkgc2V0IHJlYWRvbmx5KHI6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9yZWFkb25seSA9IHI7XG4gIH1cbiAgZ2V0IHJlYWRvbmx5KCkge1xuICAgIHJldHVybiB0aGlzLl9yZWFkb25seTtcbiAgfVxuICBASW5wdXQoKSBzZXQgZGF0YU1ldGEoZE06IGFueSkge1xuICAgIGlmIChkTSkge1xuICAgICAgdGhpcy5pbm5lclZhbHVlID0gQXJyYXkuaXNBcnJheShkTSkgPyBkTSA6IFtkTV07XG4gICAgfVxuICB9XG4gIGF1dG9jb21wbGV0ZVRpbWVvdXQ6IGFueVxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xuICAvLyBsaXN0IG9mIHZhbHVlcyB0aGF0IHNob3VsZCBub3QgYmUgc2VsZWN0YWJsZVxuICBASW5wdXQoKSBleGNlcHRpb25zOiBzdHJpbmdbXSA9IFtdO1xuICBASW5wdXQoKSBmaWx0ZXJPYmplY3Q6IE9yZ2FuaXphdGlvbkZpbHRlcjtcbiAgQElucHV0KCkgZm9ybUNvbnRyb2w7XG4gIEBJbnB1dCgpIGlzVGFibGVFbGVtZW50OiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzeXN0ZW1TZXJ2aWNlOiBTeXN0ZW1TZXJ2aWNlLFxuICAgIHB1YmxpYyB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcHBTZWFyY2hTZXJ2aWNlOiBBcHBTZWFyY2hTZXJ2aWNlKSB7IH1cblxuICBwdWJsaWMgdmFsaWRhdGUoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgLy8gb3B0aW9ucyBmb3Igc2VhcmNoIHNpdHVhdGlvblxuICBwdWJsaWMgYXZhaWxhYmxlU2VhcmNoT3B0aW9ucyA9IFtcbiAgICB7bGFiZWw6IFJhbmdlVmFsdWUuZ2V0T3BlcmF0b3JMYWJlbChTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuRVFVQUwpLCB2YWx1ZTogU2VhcmNoRmlsdGVyLk9QRVJBVE9SLklOfSxcbiAgICB7bGFiZWw6IFJhbmdlVmFsdWUuZ2V0T3BlcmF0b3JMYWJlbChTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuVVNFX05PVCksIHZhbHVlOiBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuVVNFX05PVCwgYWN0dWFsT3BlcmF0b3I6IFNlYXJjaEZpbHRlci5PUEVSQVRPUi5JTn0sXG4gIF07XG5cbiAgcHVibGljIHNlYXJjaE9wdGlvbiA9IHRoaXMuYXZhaWxhYmxlU2VhcmNoT3B0aW9uc1swXS52YWx1ZTtcblxuICBwcml2YXRlIGJ1aWxkQXV0b2NvbXBsZXRlVXJpKHF1ZXJ5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIHE6IHF1ZXJ5LFxuICAgICAgYWN0aXZlb25seTogKHRoaXMuc2l0dWF0aW9uICE9PSAnU0VBUkNIJykgPyAndHJ1ZScgOiAnZmFsc2UnLFxuICAgICAgZGV0YWlsczogdHJ1ZVxuICAgIH07XG5cbiAgICBpZiAodGhpcy5maWx0ZXJPYmplY3QpIHtcbiAgICAgIGlmICh0aGlzLmZpbHRlck9iamVjdC50eXBlKSB7XG4gICAgICAgIHBhcmFtc1snc2NvcGUnXSA9IHRoaXMuZmlsdGVyT2JqZWN0LnR5cGU7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5maWx0ZXJPYmplY3QuZ3JvdXBzKSB7XG4gICAgICAgIHBhcmFtc1snZ3JvdXBmaWx0ZXInXSA9IHRoaXMuZmlsdGVyT2JqZWN0Lmdyb3VwcztcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmZpbHRlck9iamVjdC5yb2xlcykge1xuICAgICAgICBwYXJhbXNbJ3JvbGVmaWx0ZXInXSA9IHRoaXMuZmlsdGVyT2JqZWN0LnJvbGVzO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZmlsdGVyT2JqZWN0Lmhhc093blByb3BlcnR5KCdhY3RpdmVvbmx5JykpIHtcbiAgICAgICAgcGFyYW1zWydhY3RpdmVvbmx5J10gPSB0aGlzLmZpbHRlck9iamVjdC5hY3RpdmVvbmx5ID8gJ3RydWUnIDogJ2ZhbHNlJztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFV0aWxzLmJ1aWxkVXJpKCcvb3JnYW5pemF0aW9uL3F1ZXJ5JywgcGFyYW1zKTtcbiAgfVxuXG4gIHByb3BhZ2F0ZUNoYW5nZSA9IChfOiBhbnkpID0+IHtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuXG4gICAgaWYgKHRoaXMuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgY29uc3Qgc2VhcmNoRmlsdGVycyA9IHRoaXMuYXBwU2VhcmNoU2VydmljZS5nZXRJbmRleFNlYXJjaFF1ZXJ5RmlsdGVycygpO1xuICAgICAgLy8gRmluZCB0aGUgZmlsdGVyIG1hdGNoaW5nIHRoZSBmb3JtQ29udHJvbE5hbWVcbiAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZUZpbHRlciA9IHNlYXJjaEZpbHRlcnMuZmluZChcbiAgICAgICAgKGZpbHRlcikgPT4gZmlsdGVyLnByb3BlcnR5LmVuZHNXaXRoKGAuJHt0aGlzLmZvcm1Db250cm9sTmFtZX1gKSB8fCBmaWx0ZXIucHJvcGVydHkgPT09IHRoaXMuZm9ybUNvbnRyb2xOYW1lXG4gICAgICApO1xuICAgICAgLy8gSWYgYSBtYXRjaGluZyBmaWx0ZXIgaXMgZm91bmQsIHByb2NlZWQgd2l0aCB1cGRhdGluZyB0aGUgb3BlcmF0b3IgbG9naWNcbiAgICAgIGlmIChjdXJyZW50VmFsdWVGaWx0ZXIpIHtcbiAgICAgICAgY29uc3Qgb3BlcmF0b3IgPSBjdXJyZW50VmFsdWVGaWx0ZXIudXNlTm90XG4gICAgICAgICAgPyBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuVVNFX05PVFxuICAgICAgICAgIDogY3VycmVudFZhbHVlRmlsdGVyLm9wZXJhdG9yO1xuICAgICAgICBjb25zdCBtYXRjaCA9IHRoaXMuYXZhaWxhYmxlU2VhcmNoT3B0aW9ucy5maW5kKChvKSA9PiBvLnZhbHVlID09PSBvcGVyYXRvcik7XG4gICAgICAgIHRoaXMuc2VhcmNoT3B0aW9uID0gbWF0Y2ggPyBtYXRjaC52YWx1ZSA6IHRoaXMuYXZhaWxhYmxlU2VhcmNoT3B0aW9uc1swXS52YWx1ZTtcbiAgICAgIH1cblxuICAgIH1cbiAgICB0aGlzLnZhbHVlID0gdmFsdWU/LnZhbHVlIHx8IHZhbHVlIHx8IG51bGw7XG4gICAgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgIHRoaXMucmVzb2x2ZUZuKHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbm5lclZhbHVlID0gW107XG4gICAgfVxuICB9XG5cbiAgb25WYWx1ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLnByb3BhZ2F0ZSgpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgfVxuXG4gIHByaXZhdGUgcHJvcGFnYXRlKCkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuaW5uZXJWYWx1ZSkgJiYgdGhpcy5pbm5lclZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudmFsdWUgPSB7XG4gICAgICAgIG9wZXJhdG9yOiB0aGlzLnNlYXJjaE9wdGlvbixcbiAgICAgICAgdmFsdWU6IHRoaXMuaW5uZXJWYWx1ZS5tYXAodiA9PiB2Lm5hbWUpLFxuICAgICAgICBhY3R1YWxPcGVyYXRvcjogdGhpcy5zZWFyY2hPcHRpb24gPT09IFNlYXJjaEZpbHRlci5PUEVSQVRPUi5VU0VfTk9UID8gU2VhcmNoRmlsdGVyLk9QRVJBVE9SLklOIDogbnVsbCxcbiAgICAgICAgdXNlTm90OiB0aGlzLnNlYXJjaE9wdGlvbiA9PT0gU2VhcmNoRmlsdGVyLk9QRVJBVE9SLlVTRV9OT1RcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICB0aGlzLm9uRGF0YU1ldGFDaGFuZ2VkLmVtaXQodGhpcy5pbm5lclZhbHVlKTtcbiAgfVxuXG4gIGF1dG9jb21wbGV0ZUZuKHRlcm06IHN0cmluZykge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLmF1dG9jb21wbGV0ZVRpbWVvdXQpO1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRlcm0ubGVuZ3RoID49IHRoaXMubWluTGVuZ3RoIHx8IHRlcm0gPT09IHRoaXMud2lsZENhcmQpIHtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlzZWxlY3QgfHwgKCF0aGlzLm11bHRpc2VsZWN0ICYmIHRoaXMuaW5uZXJWYWx1ZS5sZW5ndGggPT09IDApKSB7XG4gICAgICAgICAgdGhpcy5iYWNrZW5kLmdldEpzb24odGhpcy5idWlsZEF1dG9jb21wbGV0ZVVyaSh0ZXJtKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgICAgICAgICAvLyBhdXRvY29tcGxldGUgdmFsdWVzIHNob3VsZCBiZSB1bmlxdWUgYW5kIG5vdCBwYXJ0IG9mIHRoZSBleGNlcHRpb25zXG4gICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy52YWx1ZT8udmFsdWUgfHwgdGhpcy52YWx1ZTtcbiAgICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVSZXMgPSByZXMuZmlsdGVyKHYgPT4gKCF2YWx1ZSB8fCB2YWx1ZT8uaW5kZXhPZih2Lm5hbWUpID09PSAtMSkgJiYgdGhpcy5leGNlcHRpb25zLmluZGV4T2Yodi5uYW1lKSA9PT0gLTEgJiYgKCF0aGlzLnJlbW92ZUN1cnJlbnRVc2VyIHx8IHRoaXMuY3VycmVudFVzZXJJZCAhPT0gdi5pZCkpXG4gICAgICAgICAgICAgICAgLnNvcnQoVXRpbHMuc29ydFZhbHVlcygndGl0bGUnKSkuc2xpY2UoMCwgMTApO1xuICAgICAgICAgICAgICBpZiAodGhpcy5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVSZXMudW5zaGlmdCh0aGlzLmN1cnJlbnRVc2VyKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgVXRpbHMudGhyb3cobnVsbCxcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5mb3JtLnByb3BlcnR5Lm9yZ2FuaXphdGlvbi5yZXF1ZXN0LmVycm9yLnRpdGxlJyksXG4gICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uZm9ybS5wcm9wZXJ0eS5vcmdhbml6YXRpb24ucmVxdWVzdC5lcnJvci5tc2cnKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlUmVzID0gW107XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlUmVzID0gW107XG4gICAgICB9XG4gICAgfSwgMTAwMCk7XG4gIH1cblxuICByZXNvbHZlRm4odmFsdWU6IGFueSk6IFN1YnNjcmlwdGlvbiB7XG4gICAgY29uc3QgaXNDdXJyZW50VXNlciA9IEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+IDA/IHZhbHVlWzBdID09PSB0aGlzLmN1cnJlbnRVc2VyLm5hbWU6IHZhbHVlID09PSB0aGlzLmN1cnJlbnRVc2VyLm5hbWU7XG4gICAgaWYgKGlzQ3VycmVudFVzZXIpIHtcbiAgICAgIHRoaXMuaW5uZXJWYWx1ZSA9IFt0aGlzLmN1cnJlbnRVc2VyXTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdmFsdWVzQXJyYXkgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcbiAgICAgIGNvbnN0IG9ic2VydmFibGVzID0gdmFsdWVzQXJyYXkubWFwKHYgPT4ge1xuICAgICAgICBjb25zdCBtYXRjaCA9IHRoaXMuaW5uZXJWYWx1ZS5maW5kKGl2ID0+IGl2Lm5hbWUgPT09IHYpO1xuICAgICAgICByZXR1cm4gbWF0Y2ggPyBvYnNlcnZhYmxlT2YobWF0Y2gpIDogdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldE9yZ2FuaXphdGlvbk9iamVjdCh2KTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAob2JzZXJ2YWJsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuaW5uZXJWYWx1ZSA9IFtdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG9ic2VydmFibGVGb3JrSm9pbihvYnNlcnZhYmxlcykuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICAgIHRoaXMuaW5uZXJWYWx1ZSA9IGRhdGE7XG4gICAgICAgICAgdGhpcy5vblZhbHVlUmVzb2x2ZWQuZW1pdCh0aGlzLmlubmVyVmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5vblZhbHVlUmVzb2x2ZWQuZW1pdCh0aGlzLmlubmVyVmFsdWUpO1xuICB9XG5cblxuICAvLyBoYW5kbGUgc2VsZWN0aW9uIGNoYW5nZXMgdG8gdGhlIG1vZGVsXG4gIG9uVW5zZWxlY3QodmFsdWUpIHtcbiAgICB0aGlzLmlubmVyVmFsdWUgPSB0aGlzLmlubmVyVmFsdWUuZmlsdGVyKHYgPT4gdi5uYW1lICE9PSB2YWx1ZS5uYW1lKTtcbiAgICBsZXQgX3ZhbHVlID0gdGhpcy5pbm5lclZhbHVlLm1hcCh2ID0+IHYubmFtZSk7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMubXVsdGlzZWxlY3QgPyBfdmFsdWUgOiBudWxsO1xuICAgIGlmICghdGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgdGhpcy5jbGVhcklubmVySW5wdXQoKTtcbiAgICB9XG4gICAgdGhpcy5hdXRvQ29tcGxldGVJbnB1dC5mb2N1c0lucHV0KCk7XG4gICAgdGhpcy5wcm9wYWdhdGUoKTtcbiAgfVxuXG4gIC8vIGhhbmRsZSBzZWxlY3Rpb24gY2hhbmdlcyB0byB0aGUgbW9kZWxcbiAgb25TZWxlY3QodmFsdWUpIHtcbiAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuaW5uZXJWYWx1ZS5tYXAodiA9PiB2Lm5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBpbnRlcm5hbCBhdXRvY29tcGxldGUgY29udHJvbCBpcyBhbHdheXMgc2V0IHRvIG11bHRpc2VsZWN0XG4gICAgICAvLyBzbyB0aGUgcmVzb2x2ZWQgdmFsdWUgaXMgYWx3YXlzIGFuIGFycmF5XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5pbm5lclZhbHVlWzBdLm5hbWU7XG4gICAgfVxuICAgIHRoaXMucHJvcGFnYXRlKCk7XG4gIH1cblxuICBvbkF1dG9Db21wbGV0ZUJsdXIoKSB7XG4gICAgdGhpcy5jbGVhcklubmVySW5wdXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJJbm5lcklucHV0KCkge1xuICAgIHRoaXMuYXV0b0NvbXBsZXRlSW5wdXQuY2xlYXJJbnB1dCgpO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCkge1xuICAgIGlmICh0aGlzLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIHRoaXMubXVsdGlzZWxlY3QgPSB0cnVlO1xuICAgICAgdGhpcy5pc1NlYXJjaCA9IHRydWU7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZW8tb3JnYW5pemF0aW9uXCIgW25nQ2xhc3NdPVwie2FjSW5wdXRIaWRkZW46ICFtdWx0aXNlbGVjdCAmJiBpbm5lclZhbHVlPy5sZW5ndGh9XCI+XG5cbiAgQGlmIChpc1NlYXJjaCAmJiAhaXNUYWJsZUVsZW1lbnQpIHtcbiAgICA8eXZjLWRyb3Bkb3duIFsobmdNb2RlbCldPVwic2VhcmNoT3B0aW9uXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgpXCIgW29wdGlvbnNdPVwiYXZhaWxhYmxlU2VhcmNoT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicmVhZG9ubHlcIiBbZGlzYWJsZUNsZWFyQnV0dG9uXT1cInRydWVcIj48L3l2Yy1kcm9wZG93bj5cbiAgfVxuXG4gIDx5dmMtYXV0b2NvbXBsZXRlIFsobmdNb2RlbCldPVwiaW5uZXJWYWx1ZVwiICNhdXRvY29tcGxldGUgKHN1Z2dlc3Rpb25TZWxlY3QpPVwib25TZWxlY3QoJGV2ZW50KVwiXG4gICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgKHN1Z2dlc3Rpb25VbnNlbGVjdCk9XCJvblVuc2VsZWN0KCRldmVudClcIiAoYmx1cik9XCJvbkF1dG9Db21wbGV0ZUJsdXIoKVwiXG4gICAgW2Rpc2FibGVkXT1cInJlYWRvbmx5XCIgW2F1dG9jb21wbGV0ZVZhbHVlc109XCJhdXRvY29tcGxldGVSZXNcIiBmaWVsZD1cImlkXCJcbiAgICBbZm9yY2VTZWxlY3Rpb25dPVwidHJ1ZVwiXG4gICAgKGF1dG9jb21wbGV0ZUZuYyk9XCJhdXRvY29tcGxldGVGbigkZXZlbnQpXCIgW211bHRpcGxlXT1cInRydWVcIj5cblxuICAgIDxuZy10ZW1wbGF0ZSAjYXV0b2NvbXBsZXRlT3B0aW9uVGVtcGxhdGUgbGV0LWl0ZW0+XG4gICAgICA8ZGl2IGNsYXNzPVwib3JnLWl0ZW1cIj5cbiAgICAgICAgPHl2Yy1pY29uIFtzdmddPVwiaXRlbS50eXBlID09PSAnZ3JvdXAnID8gIGljb24uZ3JvdXAgOiBpY29uLnVzZXJcIj48L3l2Yy1pY29uPlxuICAgICAgICA8c3BhbiAqbmdJZj1cIihpdGVtLmZpcnN0bmFtZT8ubGVuZ3RoICYmIGl0ZW0ubGFzdG5hbWU/Lmxlbmd0aCkgfHwgaXRlbS50eXBlID09PSAnZ3JvdXAnXCI+e3tpdGVtLnRpdGxlfX1cbiAgICAgICAgICAoe3tpdGVtLm5hbWV9fSk8L3NwYW4+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIWl0ZW0uZmlyc3RuYW1lPy5sZW5ndGggJiYgIWl0ZW0ubGFzdG5hbWU/Lmxlbmd0aCAmJiBpdGVtLnR5cGUgIT09ICdncm91cCdcIj4oe3tpdGVtLm5hbWV9fSk8L3NwYW4+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIWl0ZW0uZmlyc3RuYW1lPy5sZW5ndGggJiYgaXRlbS5sYXN0bmFtZT8ubGVuZ3RoXCI+e3tpdGVtLmxhc3RuYW1lfX0gKHt7aXRlbS5uYW1lfX0pPC9zcGFuPlxuICAgICAgICA8c3BhbiAqbmdJZj1cIml0ZW0uZmlyc3RuYW1lPy5sZW5ndGggJiYgIWl0ZW0ubGFzdG5hbWU/Lmxlbmd0aFwiPnt7aXRlbS5maXJzdG5hbWV9fSAoe3tpdGVtLm5hbWV9fSk8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlICNjaGlwVGVtcGxhdGUgbGV0LWl0ZW0+XG4gICAgICA8ZGl2IGNsYXNzPVwib3JnLWl0ZW1cIj5cbiAgICAgICAgPHl2Yy1pY29uIFtzdmddPVwiaXRlbS50eXBlID09PSAnZ3JvdXAnID8gIGljb24uZ3JvdXAgOiBpY29uLnVzZXJcIj48L3l2Yy1pY29uPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICpuZ0lmPVwiKGl0ZW0uZmlyc3RuYW1lPy5sZW5ndGggJiYgaXRlbS5sYXN0bmFtZT8ubGVuZ3RoICYmIGl0ZW0uYWN0aXZlKSB8fCBpdGVtLnR5cGUgPT09ICdncm91cCdcIj57e2l0ZW0udGl0bGV9fVxuICAgICAgICAgICh7e2l0ZW0ubmFtZX19KTwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmFjdGl2ZVwiXG4gICAgICAgICAgKm5nSWY9XCIoaXRlbS5maXJzdG5hbWU/Lmxlbmd0aCAmJiBpdGVtLmxhc3RuYW1lPy5sZW5ndGggJiYgIWl0ZW0uYWN0aXZlKVwiPnt7aXRlbS50aXRsZX19XG4gICAgICAgICAgKHt7aXRlbS5uYW1lfX0pPC9zcGFuPlxuICAgICAgICA8c3BhbiAqbmdJZj1cIighaXRlbS5maXJzdG5hbWU/Lmxlbmd0aCAmJiAhaXRlbS5sYXN0bmFtZT8ubGVuZ3RoICYmICFpdGVtLmFjdGl2ZSAmJiAhaXRlbS50eXBlKVwiXG4gICAgICAgICAgY2xhc3M9XCJkZWxldGVkLXVzZXItbGFiZWxcIj57eydlby5mb3JtLnByb3BlcnR5Lm9yZ2FuaXphdGlvbi5lcnJvci51c2Vybm90Zm91bmQnfHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICpuZ0lmPVwiIWl0ZW0uZmlyc3RuYW1lPy5sZW5ndGggJiYgIWl0ZW0ubGFzdG5hbWU/Lmxlbmd0aCAmJiBpdGVtLmFjdGl2ZSAmJiBpdGVtLnR5cGUgIT09ICdncm91cCdcIj4oe3tpdGVtLm5hbWV9fSk8L3NwYW4+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIWl0ZW0uZmlyc3RuYW1lPy5sZW5ndGggJiYgaXRlbS5sYXN0bmFtZT8ubGVuZ3RoXCI+e3tpdGVtLmxhc3RuYW1lfX0gKHt7aXRlbS5uYW1lfX0pPC9zcGFuPlxuICAgICAgICA8c3BhbiAqbmdJZj1cIml0ZW0uZmlyc3RuYW1lPy5sZW5ndGggJiYgIWl0ZW0ubGFzdG5hbWU/Lmxlbmd0aFwiPnt7aXRlbS5maXJzdG5hbWV9fSAoe3tpdGVtLm5hbWV9fSk8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gIDwveXZjLWF1dG9jb21wbGV0ZT5cbjwvZGl2PlxuIl19
@@ -57,11 +57,11 @@ export class CustomFilterComponent {
57
57
  this.setFilters.forEach(f => this.setupFilter(f));
58
58
  }
59
59
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: CustomFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
60
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: CustomFilterComponent, selector: "eo-custom-filter", inputs: { overlay: "overlay", eoGrid: "eoGrid", activeFilter: "activeFilter", isFilterActive: "isFilterActive", filterForm: "filterForm" }, outputs: { change: "change", active: "active", onResetFilters: "onResetFilters" }, queries: [{ propertyName: "textFilters", predicate: TextFilterComponent }, { propertyName: "setFilters", predicate: SetFilterComponent }], ngImport: i0, template: "<div class=\"filter\">\n <ng-content></ng-content>\n\n</div>\n<eo-cta [ngClass]=\"{active : isFilterActive}\" [active]=\"isFilterActive\">\n<eo-reset-filter [isFilterActive]=\"isFilterActive\" (click)=\"resetFilter()\"></eo-reset-filter>\n</eo-cta>\n", styles: [":host::ng-deep{display:block;padding:calc(var(--app-pane-padding) / 2);overflow-x:hidden}:host::ng-deep .filter{display:grid}:host::ng-deep .filter-title{margin:.5em 0;font-weight:700}:host::ng-deep .filter__header{margin-top:15px}:host::ng-deep .filter__title{color:rgba(var(--color-black-rgb),.54);font-size:13px;font-weight:700;height:15px;margin-top:6.5px;width:170px}:host::ng-deep .reset-filter{font-size:13px;font-weight:400;border:0;cursor:pointer;background-color:transparent;color:rgba(var(--color-black-rgb),.54);padding:10px 0;transition:all .2s ease-in-out}:host::ng-deep .reset-filter:hover{color:var(--color-accent)!important;background:0 0!important;border:none!important}:host::ng-deep .type-filters .option{margin:1.5em 0}:host::ng-deep .inbox-filters{position:relative;bottom:15px;left:25px}.active{display:flex;justify-content:center;flex-wrap:wrap;padding:4%}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.CtaComponent, selector: "eo-cta", inputs: ["active"] }, { kind: "component", type: i3.ResetFilterComponent, selector: "eo-reset-filter", inputs: ["isFilterActive"] }] }); }
60
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: CustomFilterComponent, selector: "eo-custom-filter", inputs: { overlay: "overlay", eoGrid: "eoGrid", activeFilter: "activeFilter", isFilterActive: "isFilterActive", filterForm: "filterForm" }, outputs: { change: "change", active: "active", onResetFilters: "onResetFilters" }, queries: [{ propertyName: "textFilters", predicate: TextFilterComponent }, { propertyName: "setFilters", predicate: SetFilterComponent }], ngImport: i0, template: "<div class=\"filter\">\n <ng-content></ng-content>\n\n</div>\n<eo-cta [ngClass]=\"{active : isFilterActive}\" [active]=\"isFilterActive\">\n<eo-reset-filter [isFilterActive]=\"isFilterActive\" (click)=\"resetFilter()\"></eo-reset-filter>\n</eo-cta>\n", styles: [":host::ng-deep{display:block;padding:calc(var(--app-pane-padding) / 2);overflow-x:hidden}:host::ng-deep .filter{display:grid}:host::ng-deep .filter-title{margin:.5em 0;font-weight:700}:host::ng-deep .filter__header{margin-top:15px}:host::ng-deep .filter__title{color:rgba(var(--color-black-rgb),.54);font-size:13px;font-weight:700;height:15px;margin-top:6.5px;width:170px}:host::ng-deep .type-filters .option{margin:1.5em 0}:host::ng-deep .inbox-filters{position:relative;bottom:15px;left:25px}.active{display:flex;justify-content:center;flex-wrap:wrap;padding:4%}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.CtaComponent, selector: "eo-cta", inputs: ["active"] }, { kind: "component", type: i3.ResetFilterComponent, selector: "eo-reset-filter", inputs: ["isFilterActive"] }] }); }
61
61
  }
62
62
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: CustomFilterComponent, decorators: [{
63
63
  type: Component,
64
- args: [{ selector: 'eo-custom-filter', template: "<div class=\"filter\">\n <ng-content></ng-content>\n\n</div>\n<eo-cta [ngClass]=\"{active : isFilterActive}\" [active]=\"isFilterActive\">\n<eo-reset-filter [isFilterActive]=\"isFilterActive\" (click)=\"resetFilter()\"></eo-reset-filter>\n</eo-cta>\n", styles: [":host::ng-deep{display:block;padding:calc(var(--app-pane-padding) / 2);overflow-x:hidden}:host::ng-deep .filter{display:grid}:host::ng-deep .filter-title{margin:.5em 0;font-weight:700}:host::ng-deep .filter__header{margin-top:15px}:host::ng-deep .filter__title{color:rgba(var(--color-black-rgb),.54);font-size:13px;font-weight:700;height:15px;margin-top:6.5px;width:170px}:host::ng-deep .reset-filter{font-size:13px;font-weight:400;border:0;cursor:pointer;background-color:transparent;color:rgba(var(--color-black-rgb),.54);padding:10px 0;transition:all .2s ease-in-out}:host::ng-deep .reset-filter:hover{color:var(--color-accent)!important;background:0 0!important;border:none!important}:host::ng-deep .type-filters .option{margin:1.5em 0}:host::ng-deep .inbox-filters{position:relative;bottom:15px;left:25px}.active{display:flex;justify-content:center;flex-wrap:wrap;padding:4%}\n"] }]
64
+ args: [{ selector: 'eo-custom-filter', template: "<div class=\"filter\">\n <ng-content></ng-content>\n\n</div>\n<eo-cta [ngClass]=\"{active : isFilterActive}\" [active]=\"isFilterActive\">\n<eo-reset-filter [isFilterActive]=\"isFilterActive\" (click)=\"resetFilter()\"></eo-reset-filter>\n</eo-cta>\n", styles: [":host::ng-deep{display:block;padding:calc(var(--app-pane-padding) / 2);overflow-x:hidden}:host::ng-deep .filter{display:grid}:host::ng-deep .filter-title{margin:.5em 0;font-weight:700}:host::ng-deep .filter__header{margin-top:15px}:host::ng-deep .filter__title{color:rgba(var(--color-black-rgb),.54);font-size:13px;font-weight:700;height:15px;margin-top:6.5px;width:170px}:host::ng-deep .type-filters .option{margin:1.5em 0}:host::ng-deep .inbox-filters{position:relative;bottom:15px;left:25px}.active{display:flex;justify-content:center;flex-wrap:wrap;padding:4%}\n"] }]
65
65
  }], propDecorators: { overlay: [{
66
66
  type: Input
67
67
  }], eoGrid: [{