@vendure/admin-ui 1.8.4 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/bundles/vendure-admin-ui-catalog.umd.js +53 -101
  2. package/bundles/vendure-admin-ui-catalog.umd.js.map +1 -1
  3. package/bundles/vendure-admin-ui-core.umd.js +115 -54
  4. package/bundles/vendure-admin-ui-core.umd.js.map +1 -1
  5. package/bundles/vendure-admin-ui-customer.umd.js +52 -2
  6. package/bundles/vendure-admin-ui-customer.umd.js.map +1 -1
  7. package/bundles/vendure-admin-ui-login.umd.js +40 -8
  8. package/bundles/vendure-admin-ui-login.umd.js.map +1 -1
  9. package/bundles/vendure-admin-ui-order.umd.js +52 -3
  10. package/bundles/vendure-admin-ui-order.umd.js.map +1 -1
  11. package/catalog/components/apply-facet-dialog/apply-facet-dialog.component.d.ts +1 -2
  12. package/catalog/components/bulk-add-facet-values-dialog/bulk-add-facet-values-dialog.component.d.ts +0 -1
  13. package/catalog/components/product-detail/product-detail.component.d.ts +2 -7
  14. package/catalog/components/product-variants-list/product-variants-list.component.d.ts +11 -11
  15. package/catalog/providers/product-detail/product-detail.service.d.ts +1 -2
  16. package/catalog/vendure-admin-ui-catalog.metadata.json +1 -1
  17. package/core/common/generated-types.d.ts +59 -0
  18. package/core/common/version.d.ts +1 -1
  19. package/core/data/definitions/facet-definitions.d.ts +1 -0
  20. package/core/data/providers/facet-data.service.d.ts +5 -1
  21. package/core/providers/custom-history-entry-component/history-entry-component-types.d.ts +81 -0
  22. package/core/providers/custom-history-entry-component/history-entry-component.service.d.ts +16 -0
  23. package/core/public_api.d.ts +2 -1
  24. package/core/shared/components/facet-value-selector/facet-value-selector.component.d.ts +17 -17
  25. package/core/shared/dynamic-form-inputs/facet-value-form-input/facet-value-form-input.component.d.ts +3 -11
  26. package/core/shared/dynamic-form-inputs/register-dynamic-input-components.d.ts +1 -2
  27. package/core/vendure-admin-ui-core.metadata.json +1 -1
  28. package/customer/components/customer-detail/customer-detail.component.d.ts +3 -3
  29. package/customer/components/customer-history/customer-history-entry-host.component.d.ts +16 -0
  30. package/customer/components/customer-history/customer-history.component.d.ts +19 -3
  31. package/customer/public_api.d.ts +1 -0
  32. package/customer/vendure-admin-ui-customer.metadata.json +1 -1
  33. package/esm2015/catalog/components/apply-facet-dialog/apply-facet-dialog.component.js +2 -2
  34. package/esm2015/catalog/components/bulk-add-facet-values-dialog/bulk-add-facet-values-dialog.component.js +2 -3
  35. package/esm2015/catalog/components/product-detail/product-detail.component.js +16 -47
  36. package/esm2015/catalog/components/product-list/product-list-bulk-actions.js +4 -7
  37. package/esm2015/catalog/components/product-variants-list/product-variants-list.component.js +38 -30
  38. package/esm2015/catalog/providers/product-detail/product-detail.service.js +1 -4
  39. package/esm2015/core/common/generated-types.js +1 -1
  40. package/esm2015/core/common/introspection-result.js +2 -1
  41. package/esm2015/core/common/version.js +2 -2
  42. package/esm2015/core/data/definitions/facet-definitions.js +12 -1
  43. package/esm2015/core/data/providers/facet-data.service.js +5 -2
  44. package/esm2015/core/providers/custom-history-entry-component/history-entry-component-types.js +2 -0
  45. package/esm2015/core/providers/custom-history-entry-component/history-entry-component.service.js +39 -0
  46. package/esm2015/core/public_api.js +3 -2
  47. package/esm2015/core/shared/components/facet-value-selector/facet-value-selector.component.js +52 -22
  48. package/esm2015/core/shared/components/form-field/form-field.component.js +2 -2
  49. package/esm2015/core/shared/components/timeline-entry/timeline-entry.component.js +2 -2
  50. package/esm2015/core/shared/dynamic-form-inputs/facet-value-form-input/facet-value-form-input.component.js +3 -15
  51. package/esm2015/customer/components/customer-detail/customer-detail.component.js +1 -1
  52. package/esm2015/customer/components/customer-history/customer-history-entry-host.component.js +51 -0
  53. package/esm2015/customer/components/customer-history/customer-history.component.js +12 -4
  54. package/esm2015/customer/customer.module.js +3 -1
  55. package/esm2015/customer/public_api.js +2 -1
  56. package/esm2015/login/components/login/login.component.js +37 -5
  57. package/esm2015/order/components/order-detail/order-detail.component.js +1 -1
  58. package/esm2015/order/components/order-history/order-history-entry-host.component.js +51 -0
  59. package/esm2015/order/components/order-history/order-history.component.js +12 -5
  60. package/esm2015/order/order.module.js +6 -4
  61. package/esm2015/order/public_api.js +2 -1
  62. package/fesm2015/vendure-admin-ui-catalog.js +54 -85
  63. package/fesm2015/vendure-admin-ui-catalog.js.map +1 -1
  64. package/fesm2015/vendure-admin-ui-core.js +106 -39
  65. package/fesm2015/vendure-admin-ui-core.js.map +1 -1
  66. package/fesm2015/vendure-admin-ui-customer.js +63 -5
  67. package/fesm2015/vendure-admin-ui-customer.js.map +1 -1
  68. package/fesm2015/vendure-admin-ui-login.js +36 -4
  69. package/fesm2015/vendure-admin-ui-login.js.map +1 -1
  70. package/fesm2015/vendure-admin-ui-order.js +63 -6
  71. package/fesm2015/vendure-admin-ui-order.js.map +1 -1
  72. package/login/components/login/login.component.d.ts +11 -1
  73. package/login/vendure-admin-ui-login.metadata.json +1 -1
  74. package/order/components/order-detail/order-detail.component.d.ts +3 -3
  75. package/order/components/order-history/order-history-entry-host.component.d.ts +16 -0
  76. package/order/components/order-history/order-history.component.d.ts +18 -3
  77. package/order/public_api.d.ts +1 -0
  78. package/order/vendure-admin-ui-order.metadata.json +1 -1
  79. package/package.json +2 -2
  80. package/static/i18n-messages/de.json +3 -1
  81. package/static/i18n-messages/en.json +3 -1
  82. package/static/styles/_variables.scss +1 -0
  83. package/core/common/utilities/flatten-facet-values.d.ts +0 -2
  84. package/esm2015/core/common/utilities/flatten-facet-values.js +0 -4
@@ -1,7 +1,8 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
2
2
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
3
  import { NgSelectComponent } from '@ng-select/ng-select';
4
- import { flattenFacetValues } from '../../../common/utilities/flatten-facet-values';
4
+ import { concat, merge, of, Subject } from 'rxjs';
5
+ import { debounceTime, distinctUntilChanged, mapTo, switchMap, tap } from 'rxjs/operators';
5
6
  import { DataService } from '../../../data/providers/data.service';
6
7
  /**
7
8
  * @description
@@ -26,30 +27,54 @@ import { DataService } from '../../../data/providers/data.service';
26
27
  * @docsCategory components
27
28
  */
28
29
  export class FacetValueSelectorComponent {
29
- constructor(dataService) {
30
+ constructor(dataService, changeDetectorRef) {
30
31
  this.dataService = dataService;
32
+ this.changeDetectorRef = changeDetectorRef;
31
33
  this.selectedValuesChange = new EventEmitter();
32
34
  this.readonly = false;
33
35
  this.transformControlValueAccessorValue = value => value;
34
- this.facetValues = [];
36
+ this.searchInput$ = new Subject();
37
+ this.searchLoading = false;
38
+ this.selectedIds$ = new Subject();
35
39
  this.disabled = false;
36
- this.toSelectorItem = (facetValue) => {
37
- return {
38
- name: facetValue.name,
39
- facetName: facetValue.facet.name,
40
- id: facetValue.id,
41
- value: facetValue,
42
- };
43
- };
44
40
  }
45
41
  ngOnInit() {
46
- this.facetValues = flattenFacetValues(this.facets).map(this.toSelectorItem);
42
+ this.initSearchResults();
43
+ }
44
+ initSearchResults() {
45
+ const searchItems$ = this.searchInput$.pipe(debounceTime(200), distinctUntilChanged(), tap(() => (this.searchLoading = true)), switchMap(term => {
46
+ if (!term) {
47
+ return of([]);
48
+ }
49
+ return this.dataService.facet
50
+ .getFacetValues({ take: 10, filter: { name: { contains: term } } })
51
+ .mapSingle(result => result.facetValues.items);
52
+ }), tap(() => (this.searchLoading = false)));
53
+ this.subscription = this.selectedIds$
54
+ .pipe(switchMap(ids => {
55
+ if (!ids.length) {
56
+ return of([]);
57
+ }
58
+ return this.dataService.facet
59
+ .getFacetValues({ take: 10, filter: { id: { in: ids } } }, 'cache-first')
60
+ .mapSingle(result => result.facetValues.items);
61
+ }))
62
+ .subscribe(val => {
63
+ this.value = val;
64
+ this.changeDetectorRef.markForCheck();
65
+ });
66
+ const clear$ = this.selectedValuesChange.pipe(mapTo([]));
67
+ this.searchResults$ = concat(of([]), merge(searchItems$, clear$));
68
+ }
69
+ ngOnDestroy() {
70
+ var _a;
71
+ (_a = this.subscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
47
72
  }
48
73
  onChange(selected) {
49
74
  if (this.readonly) {
50
75
  return;
51
76
  }
52
- this.selectedValuesChange.emit(selected.map(s => s.value));
77
+ this.selectedValuesChange.emit(selected);
53
78
  if (this.onChangeFn) {
54
79
  const transformedValue = this.transformControlValueAccessorValue(selected);
55
80
  this.onChangeFn(transformedValue);
@@ -68,10 +93,11 @@ export class FacetValueSelectorComponent {
68
93
  this.ngSelect.focus();
69
94
  }
70
95
  writeValue(obj) {
96
+ let valueIds;
71
97
  if (typeof obj === 'string') {
72
98
  try {
73
- const facetIds = JSON.parse(obj);
74
- this.value = facetIds;
99
+ const facetValueIds = JSON.parse(obj);
100
+ valueIds = facetValueIds;
75
101
  }
76
102
  catch (err) {
77
103
  // TODO: log error
@@ -81,18 +107,22 @@ export class FacetValueSelectorComponent {
81
107
  else if (Array.isArray(obj)) {
82
108
  const isIdArray = (input) => input.every(i => typeof i === 'number' || typeof i === 'string');
83
109
  if (isIdArray(obj)) {
84
- this.value = obj.map(fv => fv.toString());
110
+ valueIds = obj.map(fv => fv.toString());
85
111
  }
86
112
  else {
87
- this.value = obj.map(fv => fv.id);
113
+ valueIds = obj.map(fv => fv.id);
88
114
  }
89
115
  }
116
+ if (valueIds) {
117
+ // this.value = valueIds;
118
+ this.selectedIds$.next(valueIds);
119
+ }
90
120
  }
91
121
  }
92
122
  FacetValueSelectorComponent.decorators = [
93
123
  { type: Component, args: [{
94
124
  selector: 'vdr-facet-value-selector',
95
- template: "<ng-select\r\n [items]=\"facetValues\"\r\n [addTag]=\"false\"\r\n [hideSelected]=\"true\"\r\n bindValue=\"id\"\r\n multiple=\"true\"\r\n appendTo=\"body\"\r\n bindLabel=\"name\"\r\n [disabled]=\"disabled || readonly\"\r\n [ngModel]=\"value\"\r\n (change)=\"onChange($event)\"\r\n>\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <vdr-facet-value-chip\r\n *ngIf=\"item.value; else facetNotFound\"\r\n [facetValue]=\"item.value\"\r\n [removable]=\"!readonly\"\r\n (remove)=\"clear(item)\"\r\n ></vdr-facet-value-chip>\r\n <ng-template #facetNotFound>\r\n <vdr-chip colorType=\"error\" icon=\"times\" (iconClick)=\"clear(item)\">{{\r\n 'catalog.facet-value-not-available' | translate: { id: item.id }\r\n }}</vdr-chip>\r\n </ng-template>\r\n </ng-template>\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <vdr-facet-value-chip [facetValue]=\"item.value\" [removable]=\"false\"></vdr-facet-value-chip>\r\n </ng-template>\r\n</ng-select>\r\n",
125
+ template: "<ng-select\r\n [items]=\"searchResults$ | async\"\r\n [addTag]=\"false\"\r\n [hideSelected]=\"true\"\r\n [loading]=\"searchLoading\"\r\n [typeahead]=\"searchInput$\"\r\n multiple=\"true\"\r\n appendTo=\"body\"\r\n bindLabel=\"name\"\r\n [disabled]=\"disabled || readonly\"\r\n [ngModel]=\"value\"\r\n (change)=\"onChange($event)\"\r\n>\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <vdr-facet-value-chip\r\n *ngIf=\"item; else facetNotFound\"\r\n [facetValue]=\"item\"\r\n [removable]=\"!readonly\"\r\n (remove)=\"clear(item)\"\r\n ></vdr-facet-value-chip>\r\n <ng-template #facetNotFound>\r\n <vdr-chip colorType=\"error\" icon=\"times\" (iconClick)=\"clear(item)\">{{\r\n 'catalog.facet-value-not-available' | translate: { id: item.id }\r\n }}</vdr-chip>\r\n </ng-template>\r\n </ng-template>\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <vdr-facet-value-chip [facetValue]=\"item\" [removable]=\"false\"></vdr-facet-value-chip>\r\n </ng-template>\r\n</ng-select>\r\n",
96
126
  changeDetection: ChangeDetectionStrategy.OnPush,
97
127
  providers: [
98
128
  {
@@ -105,13 +135,13 @@ FacetValueSelectorComponent.decorators = [
105
135
  },] }
106
136
  ];
107
137
  FacetValueSelectorComponent.ctorParameters = () => [
108
- { type: DataService }
138
+ { type: DataService },
139
+ { type: ChangeDetectorRef }
109
140
  ];
110
141
  FacetValueSelectorComponent.propDecorators = {
111
142
  selectedValuesChange: [{ type: Output }],
112
- facets: [{ type: Input }],
113
143
  readonly: [{ type: Input }],
114
144
  transformControlValueAccessorValue: [{ type: Input }],
115
145
  ngSelect: [{ type: ViewChild, args: [NgSelectComponent,] }]
116
146
  };
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjZXQtdmFsdWUtc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL3NyYy9zaGFyZWQvY29tcG9uZW50cy9mYWNldC12YWx1ZS1zZWxlY3Rvci9mYWNldC12YWx1ZS1zZWxlY3Rvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUd6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUNwRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFTbkU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQWNILE1BQU0sT0FBTywyQkFBMkI7SUFhcEMsWUFBb0IsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFabEMseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQXlCLENBQUM7UUFFbEUsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQix1Q0FBa0MsR0FBOEMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7UUFJeEcsZ0JBQVcsR0FBNEIsRUFBRSxDQUFDO1FBRzFDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUF1RFQsbUJBQWMsR0FBRyxDQUFDLFVBQStCLEVBQXlCLEVBQUU7WUFDaEYsT0FBTztnQkFDSCxJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUk7Z0JBQ3JCLFNBQVMsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUk7Z0JBQ2hDLEVBQUUsRUFBRSxVQUFV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ZWd5LFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkluaXQsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTmdTZWxlY3RDb21wb25lbnQgfSBmcm9tICdAbmctc2VsZWN0L25nLXNlbGVjdCc7XHJcblxyXG5pbXBvcnQgeyBGYWNldFZhbHVlLCBGYWNldFdpdGhWYWx1ZXMgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vZ2VuZXJhdGVkLXR5cGVzJztcclxuaW1wb3J0IHsgZmxhdHRlbkZhY2V0VmFsdWVzIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3V0aWxpdGllcy9mbGF0dGVuLWZhY2V0LXZhbHVlcyc7XHJcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZGF0YS9wcm92aWRlcnMvZGF0YS5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCB0eXBlIEZhY2V0VmFsdWVTZWxldG9ySXRlbSA9IHtcclxuICAgIG5hbWU6IHN0cmluZztcclxuICAgIGZhY2V0TmFtZTogc3RyaW5nO1xyXG4gICAgaWQ6IHN0cmluZztcclxuICAgIHZhbHVlOiBGYWNldFZhbHVlLkZyYWdtZW50O1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIEBkZXNjcmlwdGlvblxyXG4gKiBBIGZvcm0gY29udHJvbCBmb3Igc2VsZWN0aW5nIGZhY2V0IHZhbHVlcy5cclxuICpcclxuICogQGV4YW1wbGVcclxuICogYGBgSFRNTFxyXG4gKiA8dmRyLWZhY2V0LXZhbHVlLXNlbGVjdG9yXHJcbiAqICAgW2ZhY2V0c109XCJmYWNldHNcIlxyXG4gKiAgIChzZWxlY3RlZFZhbHVlc0NoYW5nZSk9XCJzZWxlY3RlZFZhbHVlcyA9ICRldmVudFwiXHJcbiAqID48L3Zkci1mYWNldC12YWx1ZS1zZWxlY3Rvcj5cclxuICogYGBgXHJcbiAqIFRoZSBgZmFjZXRzYCBpbnB1dCBzaG91bGQgYmUgcHJvdmlkZWQgZnJvbSB0aGUgcGFyZW50IGNvbXBvbmVudFxyXG4gKiBsaWtlIHRoaXM6XHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYFR5cGVTY3JpcHRcclxuICogdGhpcy5mYWNldHMgPSB0aGlzLmRhdGFTZXJ2aWNlXHJcbiAqICAgLmZhY2V0LmdldEFsbEZhY2V0cygpXHJcbiAqICAgLm1hcFNpbmdsZShkYXRhID0+IGRhdGEuZmFjZXRzLml0ZW1zKTtcclxuICogYGBgXHJcbiAqIEBkb2NzQ2F0ZWdvcnkgY29tcG9uZW50c1xyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3Zkci1mYWNldC12YWx1ZS1zZWxlY3RvcicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vZmFjZXQtdmFsdWUtc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vZmFjZXQtdmFsdWUtc2VsZWN0b3IuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IEZhY2V0VmFsdWVTZWxlY3RvckNvbXBvbmVudCxcclxuICAgICAgICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgICAgfSxcclxuICAgIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGYWNldFZhbHVlU2VsZWN0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICAgIEBPdXRwdXQoKSBzZWxlY3RlZFZhbHVlc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RmFjZXRWYWx1ZS5GcmFnbWVudFtdPigpO1xyXG4gICAgQElucHV0KCkgZmFjZXRzOiBGYWNldFdpdGhWYWx1ZXMuRnJhZ21lbnRbXTtcclxuICAgIEBJbnB1dCgpIHJlYWRvbmx5ID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSB0cmFuc2Zvcm1Db250cm9sVmFsdWVBY2Nlc3NvclZhbHVlOiAodmFsdWU6IEZhY2V0VmFsdWVTZWxldG9ySXRlbVtdKSA9PiBhbnlbXSA9IHZhbHVlID0+IHZhbHVlO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoTmdTZWxlY3RDb21wb25lbnQpIHByaXZhdGUgbmdTZWxlY3Q6IE5nU2VsZWN0Q29tcG9uZW50O1xyXG5cclxuICAgIGZhY2V0VmFsdWVzOiBGYWNldFZhbHVlU2VsZXRvckl0ZW1bXSA9IFtdO1xyXG4gICAgb25DaGFuZ2VGbjogKHZhbDogYW55KSA9PiB2b2lkO1xyXG4gICAgb25Ub3VjaEZuOiAoKSA9PiB2b2lkO1xyXG4gICAgZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgIHZhbHVlOiBBcnJheTxzdHJpbmcgfCBGYWNldFZhbHVlLkZyYWdtZW50PjtcclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlKSB7fVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMuZmFjZXRWYWx1ZXMgPSBmbGF0dGVuRmFjZXRWYWx1ZXModGhpcy5mYWNldHMpLm1hcCh0aGlzLnRvU2VsZWN0b3JJdGVtKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNoYW5nZShzZWxlY3RlZDogRmFjZXRWYWx1ZVNlbGV0b3JJdGVtW10pIHtcclxuICAgICAgICBpZiAodGhpcy5yZWFkb25seSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNDaGFuZ2UuZW1pdChzZWxlY3RlZC5tYXAocyA9PiBzLnZhbHVlKSk7XHJcbiAgICAgICAgaWYgKHRoaXMub25DaGFuZ2VGbikge1xyXG4gICAgICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZFZhbHVlID0gdGhpcy50cmFuc2Zvcm1Db250cm9sVmFsdWVBY2Nlc3NvclZhbHVlKHNlbGVjdGVkKTtcclxuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZUZuKHRyYW5zZm9ybWVkVmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlRm4gPSBmbjtcclxuICAgIH1cclxuXHJcbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KSB7XHJcbiAgICAgICAgdGhpcy5vblRvdWNoRm4gPSBmbjtcclxuICAgIH1cclxuXHJcbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICAgIH1cclxuXHJcbiAgICBmb2N1cygpIHtcclxuICAgICAgICB0aGlzLm5nU2VsZWN0LmZvY3VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgd3JpdGVWYWx1ZShvYmo6IHN0cmluZyB8IEZhY2V0VmFsdWUuRnJhZ21lbnRbXSB8IEFycmF5PHN0cmluZyB8IG51bWJlcj4gfCBudWxsKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmYWNldElkcyA9IEpTT04ucGFyc2Uob2JqKSBhcyBzdHJpbmdbXTtcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBmYWNldElkcztcclxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBUT0RPOiBsb2cgZXJyb3JcclxuICAgICAgICAgICAgICAgIHRocm93IGVycjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzSWRBcnJheSA9IChpbnB1dDogdW5rbm93bltdKTogaW5wdXQgaXMgQXJyYXk8c3RyaW5nIHwgbnVtYmVyPiA9PlxyXG4gICAgICAgICAgICAgICAgaW5wdXQuZXZlcnkoaSA9PiB0eXBlb2YgaSA9PT0gJ251bWJlcicgfHwgdHlwZW9mIGkgPT09ICdzdHJpbmcnKTtcclxuICAgICAgICAgICAgaWYgKGlzSWRBcnJheShvYmopKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gb2JqLm1hcChmdiA9PiBmdi50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBvYmoubWFwKGZ2ID0+IGZ2LmlkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHRvU2VsZWN0b3JJdGVtID0gKGZhY2V0VmFsdWU6IEZhY2V0VmFsdWUuRnJhZ21lbnQpOiBGYWNldFZhbHVlU2VsZXRvckl0ZW0gPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIG5hbWU6IGZhY2V0VmFsdWUubmFtZSxcclxuICAgICAgICAgICAgZmFjZXROYW1lOiBmYWNldFZhbHVlLmZhY2V0Lm5hbWUsXHJcbiAgICAgICAgICAgIGlkOiBmYWNldFZhbHVlLmlkLFxyXG4gICAgICAgICAgICB2YWx1ZTogZmFjZXRWYWx1ZSxcclxuICAgICAgICB9O1xyXG4gICAgfTtcclxufVxyXG4iXX0=
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjZXQtdmFsdWUtc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL3NyYy9zaGFyZWQvY29tcG9uZW50cy9mYWNldC12YWx1ZS1zZWxlY3Rvci9mYWNldC12YWx1ZS1zZWxlY3Rvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDNUUsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzNGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUVuRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBY0gsTUFBTSxPQUFPLDJCQUEyQjtJQWdCcEMsWUFBb0IsV0FBd0IsRUFBVSxpQkFBb0M7UUFBdEUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBVSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBZmhGLHlCQUFvQixHQUFHLElBQUksWUFBWSxFQUF3QixDQUFDO1FBQ2pFLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsdUNBQWtDLEdBQTJDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQ3JHLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVB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LEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUNuQztTQUNKO1FBQ0QsSUFBSSxRQUFRLEVBQUU7WUFDVix5QkFBeUI7WUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDcEM7SUFDTCxDQUFDOzs7WUEzSEosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSwwQkFBMEI7Z0JBQ3BDLHlwQ0FBb0Q7Z0JBRXBELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2dCQUMvQyxTQUFTLEVBQUU7b0JBQ1A7d0JBQ0ksT0FBTyxFQUFFLGlCQUFpQjt3QkFDMUIsV0FBVyxFQUFFLDJCQUEyQjt3QkFDeEMsS0FBSyxFQUFFLElBQUk7cUJBQ2Q7aUJBQ0o7O2FBQ0o7OztZQXBDUSxXQUFXO1lBZmhCLGlCQUFpQjs7O21DQXFEaEIsTUFBTTt1QkFDTixLQUFLO2lEQUNMLEtBQUs7dUJBTUwsU0FBUyxTQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkRlc3Ryb3ksXHJcbiAgICBPbkluaXQsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTmdTZWxlY3RDb21wb25lbnQgfSBmcm9tICdAbmctc2VsZWN0L25nLXNlbGVjdCc7XHJcbmltcG9ydCB7IGNvbmNhdCwgbWVyZ2UsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwVG8sIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgRmFjZXRWYWx1ZSwgRmFjZXRWYWx1ZUZyYWdtZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2dlbmVyYXRlZC10eXBlcyc7XHJcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZGF0YS9wcm92aWRlcnMvZGF0YS5zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBAZGVzY3JpcHRpb25cclxuICogQSBmb3JtIGNvbnRyb2wgZm9yIHNlbGVjdGluZyBmYWNldCB2YWx1ZXMuXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYEhUTUxcclxuICogPHZkci1mYWNldC12YWx1ZS1zZWxlY3RvclxyXG4gKiAgIFtmYWNldHNdPVwiZmFjZXRzXCJcclxuICogICAoc2VsZWN0ZWRWYWx1ZXNDaGFuZ2UpPVwic2VsZWN0ZWRWYWx1ZXMgPSAkZXZlbnRcIlxyXG4gKiA+PC92ZHItZmFjZXQtdmFsdWUtc2VsZWN0b3I+XHJcbiAqIGBgYFxyXG4gKiBUaGUgYGZhY2V0c2AgaW5wdXQgc2hvdWxkIGJlIHByb3ZpZGVkIGZyb20gdGhlIHBhcmVudCBjb21wb25lbnRcclxuICogbGlrZSB0aGlzOlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGBUeXBlU2NyaXB0XHJcbiAqIHRoaXMuZmFjZXRzID0gdGhpcy5kYXRhU2VydmljZVxyXG4gKiAgIC5mYWNldC5nZXRBbGxGYWNldHMoKVxyXG4gKiAgIC5tYXBTaW5nbGUoZGF0YSA9PiBkYXRhLmZhY2V0cy5pdGVtcyk7XHJcbiAqIGBgYFxyXG4gKiBAZG9jc0NhdGVnb3J5IGNvbXBvbmVudHNcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd2ZHItZmFjZXQtdmFsdWUtc2VsZWN0b3InLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZhY2V0LXZhbHVlLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2ZhY2V0LXZhbHVlLXNlbGVjdG9yLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBGYWNldFZhbHVlU2VsZWN0b3JDb21wb25lbnQsXHJcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmFjZXRWYWx1ZVNlbGVjdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICAgIEBPdXRwdXQoKSBzZWxlY3RlZFZhbHVlc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RmFjZXRWYWx1ZUZyYWdtZW50W10+KCk7XHJcbiAgICBASW5wdXQoKSByZWFkb25seSA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgdHJhbnNmb3JtQ29udHJvbFZhbHVlQWNjZXNzb3JWYWx1ZTogKHZhbHVlOiBGYWNldFZhbHVlRnJhZ21lbnRbXSkgPT4gYW55W10gPSB2YWx1ZSA9PiB2YWx1ZTtcclxuICAgIHNlYXJjaElucHV0JCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcclxuICAgIHNlYXJjaExvYWRpbmcgPSBmYWxzZTtcclxuICAgIHNlYXJjaFJlc3VsdHMkOiBPYnNlcnZhYmxlPEZhY2V0VmFsdWVGcmFnbWVudFtdPjtcclxuICAgIHNlbGVjdGVkSWRzJCA9IG5ldyBTdWJqZWN0PHN0cmluZ1tdPigpO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoTmdTZWxlY3RDb21wb25lbnQpIHByaXZhdGUgbmdTZWxlY3Q6IE5nU2VsZWN0Q29tcG9uZW50O1xyXG5cclxuICAgIG9uQ2hhbmdlRm46ICh2YWw6IGFueSkgPT4gdm9pZDtcclxuICAgIG9uVG91Y2hGbjogKCkgPT4gdm9pZDtcclxuICAgIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgICB2YWx1ZTogQXJyYXk8c3RyaW5nIHwgRmFjZXRWYWx1ZUZyYWdtZW50PjtcclxuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSwgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5pbml0U2VhcmNoUmVzdWx0cygpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaW5pdFNlYXJjaFJlc3VsdHMoKSB7XHJcbiAgICAgICAgY29uc3Qgc2VhcmNoSXRlbXMkID0gdGhpcy5zZWFyY2hJbnB1dCQucGlwZShcclxuICAgICAgICAgICAgZGVib3VuY2VUaW1lKDIwMCksXHJcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgICAgICAgIHRhcCgoKSA9PiAodGhpcy5zZWFyY2hMb2FkaW5nID0gdHJ1ZSkpLFxyXG4gICAgICAgICAgICBzd2l0Y2hNYXAodGVybSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRlcm0pIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoW10pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UuZmFjZXRcclxuICAgICAgICAgICAgICAgICAgICAuZ2V0RmFjZXRWYWx1ZXMoeyB0YWtlOiAxMCwgZmlsdGVyOiB7IG5hbWU6IHsgY29udGFpbnM6IHRlcm0gfSB9IH0pXHJcbiAgICAgICAgICAgICAgICAgICAgLm1hcFNpbmdsZShyZXN1bHQgPT4gcmVzdWx0LmZhY2V0VmFsdWVzLml0ZW1zKTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIHRhcCgoKSA9PiAodGhpcy5zZWFyY2hMb2FkaW5nID0gZmFsc2UpKSxcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5zZWxlY3RlZElkcyRcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoaWRzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWlkcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKFtdKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UuZmFjZXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmdldEZhY2V0VmFsdWVzKHsgdGFrZTogMTAsIGZpbHRlcjogeyBpZDogeyBpbjogaWRzIH0gfSB9LCAnY2FjaGUtZmlyc3QnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAubWFwU2luZ2xlKHJlc3VsdCA9PiByZXN1bHQuZmFjZXRWYWx1ZXMuaXRlbXMpO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSh2YWwgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjb25zdCBjbGVhciQgPSB0aGlzLnNlbGVjdGVkVmFsdWVzQ2hhbmdlLnBpcGUobWFwVG8oW10pKTtcclxuICAgICAgICB0aGlzLnNlYXJjaFJlc3VsdHMkID0gY29uY2F0KG9mKFtdKSwgbWVyZ2Uoc2VhcmNoSXRlbXMkLCBjbGVhciQpKTtcclxuICAgIH1cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2hhbmdlKHNlbGVjdGVkOiBGYWNldFZhbHVlRnJhZ21lbnRbXSkge1xyXG4gICAgICAgIGlmICh0aGlzLnJlYWRvbmx5KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlc0NoYW5nZS5lbWl0KHNlbGVjdGVkKTtcclxuICAgICAgICBpZiAodGhpcy5vbkNoYW5nZUZuKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybWVkVmFsdWUgPSB0aGlzLnRyYW5zZm9ybUNvbnRyb2xWYWx1ZUFjY2Vzc29yVmFsdWUoc2VsZWN0ZWQpO1xyXG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlRm4odHJhbnNmb3JtZWRWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2VGbiA9IGZuO1xyXG4gICAgfVxyXG5cclxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcclxuICAgICAgICB0aGlzLm9uVG91Y2hGbiA9IGZuO1xyXG4gICAgfVxyXG5cclxuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gICAgfVxyXG5cclxuICAgIGZvY3VzKCkge1xyXG4gICAgICAgIHRoaXMubmdTZWxlY3QuZm9jdXMoKTtcclxuICAgIH1cclxuXHJcbiAgICB3cml0ZVZhbHVlKG9iajogc3RyaW5nIHwgRmFjZXRWYWx1ZS5GcmFnbWVudFtdIHwgQXJyYXk8c3RyaW5nIHwgbnVtYmVyPiB8IG51bGwpOiB2b2lkIHtcclxuICAgICAgICBsZXQgdmFsdWVJZHM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xyXG4gICAgICAgIGlmICh0eXBlb2Ygb2JqID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmFjZXRWYWx1ZUlkcyA9IEpTT04ucGFyc2Uob2JqKSBhcyBzdHJpbmdbXTtcclxuICAgICAgICAgICAgICAgIHZhbHVlSWRzID0gZmFjZXRWYWx1ZUlkcztcclxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBUT0RPOiBsb2cgZXJyb3JcclxuICAgICAgICAgICAgICAgIHRocm93IGVycjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzSWRBcnJheSA9IChpbnB1dDogdW5rbm93bltdKTogaW5wdXQgaXMgQXJyYXk8c3RyaW5nIHwgbnVtYmVyPiA9PlxyXG4gICAgICAgICAgICAgICAgaW5wdXQuZXZlcnkoaSA9PiB0eXBlb2YgaSA9PT0gJ251bWJlcicgfHwgdHlwZW9mIGkgPT09ICdzdHJpbmcnKTtcclxuICAgICAgICAgICAgaWYgKGlzSWRBcnJheShvYmopKSB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZUlkcyA9IG9iai5tYXAoZnYgPT4gZnYudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZUlkcyA9IG9iai5tYXAoZnYgPT4gZnYuaWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh2YWx1ZUlkcykge1xyXG4gICAgICAgICAgICAvLyB0aGlzLnZhbHVlID0gdmFsdWVJZHM7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJZHMkLm5leHQodmFsdWVJZHMpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
@@ -33,7 +33,7 @@ export class FormFieldComponent {
33
33
  if (!this.formFieldControl || !this.formFieldControl.formControlName) {
34
34
  return;
35
35
  }
36
- const errors = this.formFieldControl.formControlName.errors;
36
+ const errors = this.formFieldControl.formControlName.dirty && this.formFieldControl.formControlName.errors;
37
37
  if (errors) {
38
38
  for (const errorKey of Object.keys(errors)) {
39
39
  if (this.errors[errorKey]) {
@@ -58,4 +58,4 @@ FormFieldComponent.propDecorators = {
58
58
  readOnlyToggle: [{ type: Input }],
59
59
  formFieldControl: [{ type: ContentChild, args: [FormFieldControlDirective, { static: true },] }]
60
60
  };
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL3NoYXJlZC9jb21wb25lbnRzL2Zvcm0tZmllbGQvZm9ybS1maWVsZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdILFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxHQUVSLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTNFOzs7R0FHRztBQU1ILE1BQU0sT0FBTyxrQkFBa0I7SUFML0I7UUFTSTs7O1dBR0c7UUFDTSxXQUFNLEdBQThCLEVBQUUsQ0FBQztRQUNoRDs7O1dBR0c7UUFDTSxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUVoQyxlQUFVLEdBQUcsS0FBSyxDQUFDO0lBNEJ2QixDQUFDO0lBMUJHLFFBQVE7UUFDSixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMxQjtRQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWM7UUFDdEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxFQUFFO1lBQ2xFLE9BQU87U0FDVjtRQUNELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDO1FBQzVELElBQUksTUFBTSxFQUFFO1lBQ1IsS0FBSyxNQUFNLFFBQVEsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUN4QyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUU7b0JBQ3ZCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDaEM7YUFDSjtTQUNKO0lBQ0wsQ0FBQzs7O1lBL0NKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsZ0JBQWdCO2dCQUMxQixnMkNBQTBDOzthQUU3Qzs7O29CQUVJLEtBQUs7a0JBQ0wsS0FBSztzQkFDTCxLQUFLO3FCQUtMLEtBQUs7NkJBS0wsS0FBSzsrQkFDTCxZQUFZLFNBQUMseUJBQXlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIEFmdGVyQ29udGVudEluaXQsXHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENvbXBvbmVudCxcclxuICAgIENvbnRlbnRDaGlsZCxcclxuICAgIElucHV0LFxyXG4gICAgT25Jbml0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgRm9ybUZpZWxkQ29udHJvbERpcmVjdGl2ZSB9IGZyb20gJy4vZm9ybS1maWVsZC1jb250cm9sLmRpcmVjdGl2ZSc7XHJcblxyXG4vKipcclxuICogQSBmb3JtIGZpZWxkIHdyYXBwZXIgd2hpY2ggaGFuZGxlcyB0aGUgY29ycmVjdCBsYXlvdXQgYW5kIHZhbGlkYXRpb24gZXJyb3IgZGlzcGxheSBmb3JcclxuICogYSBmb3JtIGNvbnRyb2wuXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndmRyLWZvcm0tZmllbGQnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tZmllbGQuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vZm9ybS1maWVsZC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9ybUZpZWxkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBmb3I6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHRvb2x0aXA6IHN0cmluZztcclxuICAgIC8qKlxyXG4gICAgICogQSBtYXAgb2YgZXJyb3IgbWVzc2FnZSBjb2RlcyAocmVxdWlyZWQsIHBhdHRlcm4gZXRjLikgdG8gbWVzc2FnZXMgdG8gZGlzcGxheVxyXG4gICAgICogd2hlbiB0aG9zZSBlcnJvcnMgYXJlIHByZXNlbnQuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGVycm9yczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBJZiBzZXQgdG8gdHJ1ZSwgdGhlIGlucHV0IHdpbGwgYmUgaW5pdGlhbGx5IHNldCB0byBcInJlYWRPbmx5XCIsIGFuZCBhbiBcImVkaXRcIiBidXR0b25cclxuICAgICAqIHdpbGwgYmUgZGlzcGxheWVkIHdoaWNoIGFsbG93cyB0aGUgZmllbGQgdG8gYmUgZWRpdGVkLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSByZWFkT25seVRvZ2dsZSA9IGZhbHNlO1xyXG4gICAgQENvbnRlbnRDaGlsZChGb3JtRmllbGRDb250cm9sRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KSBmb3JtRmllbGRDb250cm9sOiBGb3JtRmllbGRDb250cm9sRGlyZWN0aXZlO1xyXG4gICAgaXNSZWFkT25seSA9IGZhbHNlO1xyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIGlmICh0aGlzLnJlYWRPbmx5VG9nZ2xlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNSZWFkT25seSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0UmVhZE9ubHkodHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaXNSZWFkT25seSA9IHRoaXMucmVhZE9ubHlUb2dnbGU7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0UmVhZE9ubHkodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLmZvcm1GaWVsZENvbnRyb2wuc2V0UmVhZE9ubHkodmFsdWUpO1xyXG4gICAgICAgIHRoaXMuaXNSZWFkT25seSA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEVycm9yTWVzc2FnZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGlmICghdGhpcy5mb3JtRmllbGRDb250cm9sIHx8ICF0aGlzLmZvcm1GaWVsZENvbnRyb2wuZm9ybUNvbnRyb2xOYW1lKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZXJyb3JzID0gdGhpcy5mb3JtRmllbGRDb250cm9sLmZvcm1Db250cm9sTmFtZS5lcnJvcnM7XHJcbiAgICAgICAgaWYgKGVycm9ycykge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGVycm9yS2V5IG9mIE9iamVjdC5rZXlzKGVycm9ycykpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmVycm9yc1tlcnJvcktleV0pIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvcnNbZXJyb3JLZXldO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL3NoYXJlZC9jb21wb25lbnRzL2Zvcm0tZmllbGQvZm9ybS1maWVsZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdILFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxHQUVSLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTNFOzs7R0FHRztBQU1ILE1BQU0sT0FBTyxrQkFBa0I7SUFML0I7UUFTSTs7O1dBR0c7UUFDTSxXQUFNLEdBQThCLEVBQUUsQ0FBQztRQUNoRDs7O1dBR0c7UUFDTSxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUVoQyxlQUFVLEdBQUcsS0FBSyxDQUFDO0lBNkJ2QixDQUFDO0lBM0JHLFFBQVE7UUFDSixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMxQjtRQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWM7UUFDdEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxFQUFFO1lBQ2xFLE9BQU87U0FDVjtRQUNELE1BQU0sTUFBTSxHQUNSLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDO1FBQ2hHLElBQUksTUFBTSxFQUFFO1lBQ1IsS0FBSyxNQUFNLFFBQVEsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUN4QyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUU7b0JBQ3ZCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDaEM7YUFDSjtTQUNKO0lBQ0wsQ0FBQzs7O1lBaERKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsZ0JBQWdCO2dCQUMxQixnMkNBQTBDOzthQUU3Qzs7O29CQUVJLEtBQUs7a0JBQ0wsS0FBSztzQkFDTCxLQUFLO3FCQUtMLEtBQUs7NkJBS0wsS0FBSzsrQkFDTCxZQUFZLFNBQUMseUJBQXlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgSW5wdXQsXG4gICAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRm9ybUZpZWxkQ29udHJvbERpcmVjdGl2ZSB9IGZyb20gJy4vZm9ybS1maWVsZC1jb250cm9sLmRpcmVjdGl2ZSc7XG5cbi8qKlxuICogQSBmb3JtIGZpZWxkIHdyYXBwZXIgd2hpY2ggaGFuZGxlcyB0aGUgY29ycmVjdCBsYXlvdXQgYW5kIHZhbGlkYXRpb24gZXJyb3IgZGlzcGxheSBmb3JcbiAqIGEgZm9ybSBjb250cm9sLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3Zkci1mb3JtLWZpZWxkJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1maWVsZC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZm9ybS1maWVsZC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtRmllbGRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XG4gICAgQElucHV0KCkgZm9yOiBzdHJpbmc7XG4gICAgQElucHV0KCkgdG9vbHRpcDogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEEgbWFwIG9mIGVycm9yIG1lc3NhZ2UgY29kZXMgKHJlcXVpcmVkLCBwYXR0ZXJuIGV0Yy4pIHRvIG1lc3NhZ2VzIHRvIGRpc3BsYXlcbiAgICAgKiB3aGVuIHRob3NlIGVycm9ycyBhcmUgcHJlc2VudC5cbiAgICAgKi9cbiAgICBASW5wdXQoKSBlcnJvcnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgICAvKipcbiAgICAgKiBJZiBzZXQgdG8gdHJ1ZSwgdGhlIGlucHV0IHdpbGwgYmUgaW5pdGlhbGx5IHNldCB0byBcInJlYWRPbmx5XCIsIGFuZCBhbiBcImVkaXRcIiBidXR0b25cbiAgICAgKiB3aWxsIGJlIGRpc3BsYXllZCB3aGljaCBhbGxvd3MgdGhlIGZpZWxkIHRvIGJlIGVkaXRlZC5cbiAgICAgKi9cbiAgICBASW5wdXQoKSByZWFkT25seVRvZ2dsZSA9IGZhbHNlO1xuICAgIEBDb250ZW50Q2hpbGQoRm9ybUZpZWxkQ29udHJvbERpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSkgZm9ybUZpZWxkQ29udHJvbDogRm9ybUZpZWxkQ29udHJvbERpcmVjdGl2ZTtcbiAgICBpc1JlYWRPbmx5ID0gZmFsc2U7XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZE9ubHlUb2dnbGUpIHtcbiAgICAgICAgICAgIHRoaXMuaXNSZWFkT25seSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnNldFJlYWRPbmx5KHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNSZWFkT25seSA9IHRoaXMucmVhZE9ubHlUb2dnbGU7XG4gICAgfVxuXG4gICAgc2V0UmVhZE9ubHkodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5mb3JtRmllbGRDb250cm9sLnNldFJlYWRPbmx5KHZhbHVlKTtcbiAgICAgICAgdGhpcy5pc1JlYWRPbmx5ID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0RXJyb3JNZXNzYWdlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICghdGhpcy5mb3JtRmllbGRDb250cm9sIHx8ICF0aGlzLmZvcm1GaWVsZENvbnRyb2wuZm9ybUNvbnRyb2xOYW1lKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZXJyb3JzID1cbiAgICAgICAgICAgIHRoaXMuZm9ybUZpZWxkQ29udHJvbC5mb3JtQ29udHJvbE5hbWUuZGlydHkgJiYgdGhpcy5mb3JtRmllbGRDb250cm9sLmZvcm1Db250cm9sTmFtZS5lcnJvcnM7XG4gICAgICAgIGlmIChlcnJvcnMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZXJyb3JLZXkgb2YgT2JqZWN0LmtleXMoZXJyb3JzKSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmVycm9yc1tlcnJvcktleV0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JzW2Vycm9yS2V5XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -22,7 +22,7 @@ export class TimelineEntryComponent {
22
22
  TimelineEntryComponent.decorators = [
23
23
  { type: Component, args: [{
24
24
  selector: 'vdr-timeline-entry',
25
- template: "<div\r\n [ngClass]=\"displayType\"\r\n [class.has-custom-icon]=\"!!iconShape\"\r\n class=\"entry\"\r\n [class.last]=\"isLast === true\"\r\n [class.collapsed]=\"collapsed\"\r\n>\r\n <div class=\"timeline\" (click)=\"expandClick.emit()\" [title]=\"timelineTitle | translate\">\r\n <div class=\"custom-icon\">\r\n <clr-icon\r\n *ngIf=\"iconShape && !collapsed\"\r\n [attr.shape]=\"getIconShape()\"\r\n [ngClass]=\"getIconClass()\"\r\n size=\"24\"\r\n ></clr-icon>\r\n </div>\r\n </div>\r\n <div class=\"entry-body\">\r\n <div class=\"detail\">\r\n <div class=\"time\">\r\n {{ createdAt | localeDate: 'short' }}\r\n </div>\r\n <div class=\"name\">\r\n {{ name }}\r\n </div>\r\n </div>\r\n <div [class.featured-entry]=\"featured\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n",
25
+ template: "<div\r\n [ngClass]=\"displayType\"\r\n [class.has-custom-icon]=\"!!iconShape\"\r\n class=\"entry\"\r\n [class.last]=\"isLast === true\"\r\n [class.collapsed]=\"collapsed\"\r\n>\r\n <div class=\"timeline\" (click)=\"expandClick.emit()\" [title]=\"timelineTitle | translate\">\r\n <div class=\"custom-icon\">\r\n <clr-icon\r\n *ngIf=\"iconShape && !collapsed\"\r\n [attr.shape]=\"getIconShape()\"\r\n [ngClass]=\"getIconClass()\"\r\n size=\"24\"\r\n ></clr-icon>\r\n </div>\r\n </div>\r\n <div class=\"entry-body\">\r\n <div class=\"detail\">\r\n <div class=\"time\">\r\n {{ createdAt | localeDate: 'short' }}\r\n </div>\r\n <div class=\"name\">\r\n {{ name || '' }}\r\n </div>\r\n </div>\r\n <div [class.featured-entry]=\"featured\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n",
26
26
  changeDetection: ChangeDetectionStrategy.OnPush,
27
27
  styles: [":host{display:block}:host:first-of-type .timeline:before{border-left-color:var(--color-timeline-thread)}:host:first-of-type .entry-body{max-height:initial}.entry{display:flex}.timeline{border-left:2px solid var(--color-timeline-thread);padding-bottom:8px;position:relative}.timeline:before{content:\"\";position:absolute;width:2px;height:32px;left:-2px;border-left:2px solid var(--color-timeline-thread)}.timeline:after{content:\"\";display:block;border-radius:50%;width:8px;height:8px;background-color:var(--color-component-bg-200);border:1px solid var(--color-component-border-300);position:absolute;left:-5px;top:32px;transition:top .2s;cursor:pointer}.timeline .custom-icon{position:absolute;width:32px;height:32px;left:-17px;top:32px;align-items:center;justify-content:center;border-radius:50%;color:var(--color-primary-600);background-color:var(--color-component-bg-100);border:1px solid var(--color-component-border-200);display:none}.entry.has-custom-icon .timeline:after{display:none}.entry.has-custom-icon .custom-icon{display:flex}.entry.last .timeline{border-left-color:transparent}.entry-body{flex:1;padding-top:24px;padding-left:12px;line-height:16px;margin-left:12px;color:var(--color-text-200);overflow:visible;max-height:100px;transition:max-height .2s,padding-top .2s,opacity .2s .2s}.featured-entry ::ng-deep .title{color:var(--color-text-100);font-size:16px;line-height:26px}.featured-entry ::ng-deep .note-text{color:var(--color-text-100);white-space:pre-wrap}.detail{display:flex;color:var(--color-text-300);font-size:12px}.detail .name{margin-left:12px}.muted .timeline,.muted .timeline .custom-icon{color:var(--color-text-300)}.success .timeline,.success .timeline .custom-icon{color:var(--color-success-400)}.success .timeline:after{background-color:var(--color-success-200);border:1px solid var(--color-success-400)}.error .timeline,.error .timeline .custom-icon{color:var(--color-error-400)}.error .timeline:after{background-color:var(--color-error-200);border:1px solid var(--color-error-400)}.warning .timeline,.warning .timeline .custom-icon{color:var(--color-warning-400)}.warning .timeline:after{background-color:var(--color-warning-200);border:1px solid var(--color-warning-400)}.collapsed .entry-body{max-height:0;overflow:hidden;opacity:0;padding-top:0}.collapsed .timeline{border-left-color:transparent}.collapsed .timeline:after{top:0}\n"]
28
28
  },] }
@@ -37,4 +37,4 @@ TimelineEntryComponent.propDecorators = {
37
37
  collapsed: [{ type: HostBinding, args: ['class.collapsed',] }, { type: Input }],
38
38
  expandClick: [{ type: Output }]
39
39
  };
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxpbmUtZW50cnkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL3NyYy9zaGFyZWQvY29tcG9uZW50cy90aW1lbGluZS1lbnRyeS90aW1lbGluZS1lbnRyeS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBRUwsTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFVdEUsTUFBTSxPQUFPLHNCQUFzQjtJQU5uQztRQWVJLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDUixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFpQi9DLENBQUM7SUFmRyxJQUFJLGFBQWE7UUFDYixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQsWUFBWTtRQUNSLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQixPQUFPLE9BQU8sSUFBSSxDQUFDLFNBQVMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbEY7SUFDTCxDQUFDO0lBRUQsWUFBWTtRQUNSLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQixPQUFPLE9BQU8sSUFBSSxDQUFDLFNBQVMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN0RTtJQUNMLENBQUM7OztZQWhDSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIsZ2hDQUE4QztnQkFFOUMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2FBQ2xEOzs7MEJBRUksS0FBSzt3QkFDTCxLQUFLO21CQUNMLEtBQUs7dUJBQ0wsS0FBSzt3QkFDTCxLQUFLO3FCQUNMLEtBQUs7d0JBQ0wsV0FBVyxTQUFDLGlCQUFpQixjQUM3QixLQUFLOzBCQUVMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBIb3N0QmluZGluZyxcclxuICAgIElucHV0LFxyXG4gICAgT25Jbml0LFxyXG4gICAgT3V0cHV0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBtYXJrZXIgYXMgXyB9IGZyb20gJ0BiaWVzYmplcmcvbmd4LXRyYW5zbGF0ZS1leHRyYWN0LW1hcmtlcic7XHJcblxyXG5leHBvcnQgdHlwZSBUaW1lbGluZURpc3BsYXlUeXBlID0gJ3N1Y2Nlc3MnIHwgJ2Vycm9yJyB8ICd3YXJuaW5nJyB8ICdkZWZhdWx0JyB8ICdtdXRlZCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndmRyLXRpbWVsaW5lLWVudHJ5JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi90aW1lbGluZS1lbnRyeS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi90aW1lbGluZS1lbnRyeS5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUaW1lbGluZUVudHJ5Q29tcG9uZW50IHtcclxuICAgIEBJbnB1dCgpIGRpc3BsYXlUeXBlOiBUaW1lbGluZURpc3BsYXlUeXBlO1xyXG4gICAgQElucHV0KCkgY3JlYXRlZEF0OiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBmZWF0dXJlZDogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGljb25TaGFwZT86IHN0cmluZyB8IFtzdHJpbmcsIHN0cmluZ107XHJcbiAgICBASW5wdXQoKSBpc0xhc3Q/OiBib29sZWFuO1xyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jb2xsYXBzZWQnKVxyXG4gICAgQElucHV0KClcclxuICAgIGNvbGxhcHNlZCA9IGZhbHNlO1xyXG4gICAgQE91dHB1dCgpIGV4cGFuZENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAgIGdldCB0aW1lbGluZVRpdGxlKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sbGFwc2VkID8gXygnY29tbW9uLmV4cGFuZC1lbnRyaWVzJykgOiBfKCdjb21tb24uY29sbGFwc2UtZW50cmllcycpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEljb25TaGFwZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5pY29uU2hhcGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiB0aGlzLmljb25TaGFwZSA9PT0gJ3N0cmluZycgPyB0aGlzLmljb25TaGFwZSA6IHRoaXMuaWNvblNoYXBlWzBdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRJY29uQ2xhc3MoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaWNvblNoYXBlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgdGhpcy5pY29uU2hhcGUgPT09ICdzdHJpbmcnID8gJycgOiB0aGlzLmljb25TaGFwZVsxXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxpbmUtZW50cnkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL3NyYy9zaGFyZWQvY29tcG9uZW50cy90aW1lbGluZS1lbnRyeS90aW1lbGluZS1lbnRyeS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBRUwsTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFVdEUsTUFBTSxPQUFPLHNCQUFzQjtJQU5uQztRQWVJLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDUixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFpQi9DLENBQUM7SUFmRyxJQUFJLGFBQWE7UUFDYixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQsWUFBWTtRQUNSLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQixPQUFPLE9BQU8sSUFBSSxDQUFDLFNBQVMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbEY7SUFDTCxDQUFDO0lBRUQsWUFBWTtRQUNSLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQixPQUFPLE9BQU8sSUFBSSxDQUFDLFNBQVMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN0RTtJQUNMLENBQUM7OztZQWhDSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIsc2hDQUE4QztnQkFFOUMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2FBQ2xEOzs7MEJBRUksS0FBSzt3QkFDTCxLQUFLO21CQUNMLEtBQUs7dUJBQ0wsS0FBSzt3QkFDTCxLQUFLO3FCQUNMLEtBQUs7d0JBQ0wsV0FBVyxTQUFDLGlCQUFpQixjQUM3QixLQUFLOzBCQUVMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBIb3N0QmluZGluZyxcclxuICAgIElucHV0LFxyXG4gICAgT25Jbml0LFxyXG4gICAgT3V0cHV0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBtYXJrZXIgYXMgXyB9IGZyb20gJ0BiaWVzYmplcmcvbmd4LXRyYW5zbGF0ZS1leHRyYWN0LW1hcmtlcic7XHJcblxyXG5leHBvcnQgdHlwZSBUaW1lbGluZURpc3BsYXlUeXBlID0gJ3N1Y2Nlc3MnIHwgJ2Vycm9yJyB8ICd3YXJuaW5nJyB8ICdkZWZhdWx0JyB8ICdtdXRlZCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndmRyLXRpbWVsaW5lLWVudHJ5JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi90aW1lbGluZS1lbnRyeS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi90aW1lbGluZS1lbnRyeS5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUaW1lbGluZUVudHJ5Q29tcG9uZW50IHtcclxuICAgIEBJbnB1dCgpIGRpc3BsYXlUeXBlOiBUaW1lbGluZURpc3BsYXlUeXBlO1xyXG4gICAgQElucHV0KCkgY3JlYXRlZEF0OiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBmZWF0dXJlZDogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGljb25TaGFwZT86IHN0cmluZyB8IFtzdHJpbmcsIHN0cmluZ107XHJcbiAgICBASW5wdXQoKSBpc0xhc3Q/OiBib29sZWFuO1xyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jb2xsYXBzZWQnKVxyXG4gICAgQElucHV0KClcclxuICAgIGNvbGxhcHNlZCA9IGZhbHNlO1xyXG4gICAgQE91dHB1dCgpIGV4cGFuZENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAgIGdldCB0aW1lbGluZVRpdGxlKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sbGFwc2VkID8gXygnY29tbW9uLmV4cGFuZC1lbnRyaWVzJykgOiBfKCdjb21tb24uY29sbGFwc2UtZW50cmllcycpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEljb25TaGFwZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5pY29uU2hhcGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiB0aGlzLmljb25TaGFwZSA9PT0gJ3N0cmluZycgPyB0aGlzLmljb25TaGFwZSA6IHRoaXMuaWNvblNoYXBlWzBdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRJY29uQ2xhc3MoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaWNvblNoYXBlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgdGhpcy5pY29uU2hhcGUgPT09ICdzdHJpbmcnID8gJycgOiB0aGlzLmljb25TaGFwZVsxXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -1,6 +1,4 @@
1
1
  import { ChangeDetectionStrategy, Component } from '@angular/core';
2
- import { shareReplay } from 'rxjs/operators';
3
- import { DataService } from '../../../data/providers/data.service';
4
2
  /**
5
3
  * @description
6
4
  * Allows the selection of multiple FacetValues via an autocomplete select input.
@@ -10,8 +8,7 @@ import { DataService } from '../../../data/providers/data.service';
10
8
  * @docsPage default-inputs
11
9
  */
12
10
  export class FacetValueFormInputComponent {
13
- constructor(dataService) {
14
- this.dataService = dataService;
11
+ constructor() {
15
12
  this.isListInput = true;
16
13
  this.valueTransformFn = (values) => {
17
14
  const isUsedInConfigArg = this.config.__typename === 'ConfigArgDefinition';
@@ -23,23 +20,14 @@ export class FacetValueFormInputComponent {
23
20
  }
24
21
  };
25
22
  }
26
- ngOnInit() {
27
- this.facets$ = this.dataService.facet
28
- .getAllFacets()
29
- .mapSingle(data => data.facets.items)
30
- .pipe(shareReplay(1));
31
- }
32
23
  }
33
24
  FacetValueFormInputComponent.id = 'facet-value-form-input';
34
25
  FacetValueFormInputComponent.decorators = [
35
26
  { type: Component, args: [{
36
27
  selector: 'vdr-facet-value-form-input',
37
- template: "<vdr-facet-value-selector\r\n *ngIf=\"facets$ | async as facets\"\r\n [readonly]=\"readonly\"\r\n [facets]=\"facets\"\r\n [formControl]=\"formControl\"\r\n [transformControlValueAccessorValue]=\"valueTransformFn\"\r\n></vdr-facet-value-selector>\r\n",
28
+ template: "<vdr-facet-value-selector\r\n [readonly]=\"readonly\"\r\n [formControl]=\"formControl\"\r\n [transformControlValueAccessorValue]=\"valueTransformFn\"\r\n></vdr-facet-value-selector>\r\n",
38
29
  changeDetection: ChangeDetectionStrategy.OnPush,
39
30
  styles: [""]
40
31
  },] }
41
32
  ];
42
- FacetValueFormInputComponent.ctorParameters = () => [
43
- { type: DataService }
44
- ];
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjZXQtdmFsdWUtZm9ybS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL3NoYXJlZC9keW5hbWljLWZvcm0taW5wdXRzL2ZhY2V0LXZhbHVlLWZvcm0taW5wdXQvZmFjZXQtdmFsdWUtZm9ybS1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFJbEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSTdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUduRTs7Ozs7OztHQU9HO0FBT0gsTUFBTSxPQUFPLDRCQUE0QjtJQU9yQyxZQUFvQixXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUxuQyxnQkFBVyxHQUFHLElBQUksQ0FBQztRQWM1QixxQkFBZ0IsR0FBRyxDQUFDLE1BQStCLEVBQUUsRUFBRTtZQUNuRCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxLQUFLLHFCQUFxQixDQUFDO1lBQzNFLElBQUksaUJBQWlCLEVBQUU7Z0JBQ25CLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDaEQ7aUJBQU07Z0JBQ0gsT0FBTyxNQUFNLENBQUM7YUFDakI7UUFDTCxDQUFDLENBQUM7SUFoQjZDLENBQUM7SUFFaEQsUUFBUTtRQUNKLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLO2FBQ2hDLFlBQVksRUFBRTthQUNkLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO2FBQ3BDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QixDQUFDOztBQWJlLCtCQUFFLEdBQTJCLHdCQUF3QixDQUFDOztZQVB6RSxTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLDRCQUE0QjtnQkFDdEMsb1JBQXNEO2dCQUV0RCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7YUFDbEQ7OztZQWhCUSxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRGVmYXVsdEZvcm1Db21wb25lbnRJZCB9IGZyb20gJ0B2ZW5kdXJlL2NvbW1vbi9saWIvc2hhcmVkLXR5cGVzJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBzaGFyZVJlcGxheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IEZvcm1JbnB1dENvbXBvbmVudCwgSW5wdXRDb21wb25lbnRDb25maWcgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vY29tcG9uZW50LXJlZ2lzdHJ5LXR5cGVzJztcclxuaW1wb3J0IHsgRmFjZXRXaXRoVmFsdWVzIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2dlbmVyYXRlZC10eXBlcyc7XHJcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZGF0YS9wcm92aWRlcnMvZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmFjZXRWYWx1ZVNlbGV0b3JJdGVtIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9mYWNldC12YWx1ZS1zZWxlY3Rvci9mYWNldC12YWx1ZS1zZWxlY3Rvci5jb21wb25lbnQnO1xyXG5cclxuLyoqXHJcbiAqIEBkZXNjcmlwdGlvblxyXG4gKiBBbGxvd3MgdGhlIHNlbGVjdGlvbiBvZiBtdWx0aXBsZSBGYWNldFZhbHVlcyB2aWEgYW4gYXV0b2NvbXBsZXRlIHNlbGVjdCBpbnB1dC5cclxuICogU2hvdWxkIGJlIHVzZWQgd2l0aCBgSURgIHR5cGUgKipsaXN0KiogZmllbGRzIHdoaWNoIHJlcHJlc2VudCBGYWNldFZhbHVlIElEcy5cclxuICpcclxuICogQGRvY3NDYXRlZ29yeSBjdXN0b20taW5wdXQtY29tcG9uZW50c1xyXG4gKiBAZG9jc1BhZ2UgZGVmYXVsdC1pbnB1dHNcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd2ZHItZmFjZXQtdmFsdWUtZm9ybS1pbnB1dCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vZmFjZXQtdmFsdWUtZm9ybS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9mYWNldC12YWx1ZS1mb3JtLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZhY2V0VmFsdWVGb3JtSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBGb3JtSW5wdXRDb21wb25lbnQsIE9uSW5pdCB7XHJcbiAgICBzdGF0aWMgcmVhZG9ubHkgaWQ6IERlZmF1bHRGb3JtQ29tcG9uZW50SWQgPSAnZmFjZXQtdmFsdWUtZm9ybS1pbnB1dCc7XHJcbiAgICByZWFkb25seSBpc0xpc3RJbnB1dCA9IHRydWU7XHJcbiAgICByZWFkb25seTogYm9vbGVhbjtcclxuICAgIGZvcm1Db250cm9sOiBGb3JtQ29udHJvbDtcclxuICAgIGZhY2V0cyQ6IE9ic2VydmFibGU8RmFjZXRXaXRoVmFsdWVzLkZyYWdtZW50W10+O1xyXG4gICAgY29uZmlnOiBJbnB1dENvbXBvbmVudENvbmZpZztcclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlKSB7fVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMuZmFjZXRzJCA9IHRoaXMuZGF0YVNlcnZpY2UuZmFjZXRcclxuICAgICAgICAgICAgLmdldEFsbEZhY2V0cygpXHJcbiAgICAgICAgICAgIC5tYXBTaW5nbGUoZGF0YSA9PiBkYXRhLmZhY2V0cy5pdGVtcylcclxuICAgICAgICAgICAgLnBpcGUoc2hhcmVSZXBsYXkoMSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHZhbHVlVHJhbnNmb3JtRm4gPSAodmFsdWVzOiBGYWNldFZhbHVlU2VsZXRvckl0ZW1bXSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGlzVXNlZEluQ29uZmlnQXJnID0gdGhpcy5jb25maWcuX190eXBlbmFtZSA9PT0gJ0NvbmZpZ0FyZ0RlZmluaXRpb24nO1xyXG4gICAgICAgIGlmIChpc1VzZWRJbkNvbmZpZ0FyZykge1xyXG4gICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWVzLm1hcChzID0+IHMuaWQpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWVzO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbn1cclxuIl19
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjZXQtdmFsdWUtZm9ybS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL3NoYXJlZC9keW5hbWljLWZvcm0taW5wdXRzL2ZhY2V0LXZhbHVlLWZvcm0taW5wdXQvZmFjZXQtdmFsdWUtZm9ybS1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQU8zRTs7Ozs7OztHQU9HO0FBT0gsTUFBTSxPQUFPLDRCQUE0QjtJQU56QztRQVFhLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBSzVCLHFCQUFnQixHQUFHLENBQUMsTUFBNEIsRUFBRSxFQUFFO1lBQ2hELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEtBQUsscUJBQXFCLENBQUM7WUFDM0UsSUFBSSxpQkFBaUIsRUFBRTtnQkFDbkIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUNoRDtpQkFBTTtnQkFDSCxPQUFPLE1BQU0sQ0FBQzthQUNqQjtRQUNMLENBQUMsQ0FBQztJQUNOLENBQUM7O0FBZG1CLCtCQUFFLEdBQTJCLHdCQUF3QixDQUFDOztZQVB6RSxTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLDRCQUE0QjtnQkFDdEMsOE1BQXNEO2dCQUV0RCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7YUFDbEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IERlZmF1bHRGb3JtQ29tcG9uZW50SWQgfSBmcm9tICdAdmVuZHVyZS9jb21tb24vbGliL3NoYXJlZC10eXBlcyc7XHJcblxyXG5pbXBvcnQgeyBGb3JtSW5wdXRDb21wb25lbnQsIElucHV0Q29tcG9uZW50Q29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2NvbXBvbmVudC1yZWdpc3RyeS10eXBlcyc7XHJcbmltcG9ydCB7IEZhY2V0VmFsdWVGcmFnbWVudCB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9nZW5lcmF0ZWQtdHlwZXMnO1xyXG5cclxuLyoqXHJcbiAqIEBkZXNjcmlwdGlvblxyXG4gKiBBbGxvd3MgdGhlIHNlbGVjdGlvbiBvZiBtdWx0aXBsZSBGYWNldFZhbHVlcyB2aWEgYW4gYXV0b2NvbXBsZXRlIHNlbGVjdCBpbnB1dC5cclxuICogU2hvdWxkIGJlIHVzZWQgd2l0aCBgSURgIHR5cGUgKipsaXN0KiogZmllbGRzIHdoaWNoIHJlcHJlc2VudCBGYWNldFZhbHVlIElEcy5cclxuICpcclxuICogQGRvY3NDYXRlZ29yeSBjdXN0b20taW5wdXQtY29tcG9uZW50c1xyXG4gKiBAZG9jc1BhZ2UgZGVmYXVsdC1pbnB1dHNcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd2ZHItZmFjZXQtdmFsdWUtZm9ybS1pbnB1dCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vZmFjZXQtdmFsdWUtZm9ybS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9mYWNldC12YWx1ZS1mb3JtLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZhY2V0VmFsdWVGb3JtSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBGb3JtSW5wdXRDb21wb25lbnQge1xyXG4gICAgc3RhdGljIHJlYWRvbmx5IGlkOiBEZWZhdWx0Rm9ybUNvbXBvbmVudElkID0gJ2ZhY2V0LXZhbHVlLWZvcm0taW5wdXQnO1xyXG4gICAgcmVhZG9ubHkgaXNMaXN0SW5wdXQgPSB0cnVlO1xyXG4gICAgcmVhZG9ubHk6IGJvb2xlYW47XHJcbiAgICBmb3JtQ29udHJvbDogRm9ybUNvbnRyb2w7XHJcbiAgICBjb25maWc6IElucHV0Q29tcG9uZW50Q29uZmlnO1xyXG5cclxuICAgIHZhbHVlVHJhbnNmb3JtRm4gPSAodmFsdWVzOiBGYWNldFZhbHVlRnJhZ21lbnRbXSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGlzVXNlZEluQ29uZmlnQXJnID0gdGhpcy5jb25maWcuX190eXBlbmFtZSA9PT0gJ0NvbmZpZ0FyZ0RlZmluaXRpb24nO1xyXG4gICAgICAgIGlmIChpc1VzZWRJbkNvbmZpZ0FyZykge1xyXG4gICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWVzLm1hcChzID0+IHMuaWQpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWVzO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbn1cclxuIl19
@@ -413,4 +413,4 @@ CustomerDetailComponent.ctorParameters = () => [
413
413
  { type: ModalService },
414
414
  { type: NotificationService }
415
415
  ];
416
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItZGV0YWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY3VzdG9tZXIvc3JjL2NvbXBvbmVudHMvY3VzdG9tZXItZGV0YWlsL2N1c3RvbWVyLWRldGFpbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDdEUsT0FBTyxFQUNILG1CQUFtQixFQU9uQixXQUFXLEVBRVgsdUJBQXVCLEVBTXZCLFlBQVksRUFDWixtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLFNBQVMsR0FNWixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBZSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEUsT0FBTyxFQUNILFNBQVMsRUFDVCxNQUFNLEVBQ04sR0FBRyxFQUNILEtBQUssRUFDTCxRQUFRLEVBQ1IsV0FBVyxFQUNYLFNBQVMsRUFDVCxTQUFTLEVBQ1QsSUFBSSxHQUNQLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFVNUgsTUFBTSxPQUFPLHVCQUNULFNBQVEsbUJBQXVDO0lBbUIvQyxZQUNJLEtBQXFCLEVBQ3JCLE1BQWMsRUFDZCxtQkFBd0MsRUFDaEMsY0FBaUMsRUFDakMsV0FBd0IsRUFDdEIsV0FBd0IsRUFDMUIsWUFBMEIsRUFDMUIsbUJBQXdDO1FBRWhELEtBQUssQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLG1CQUFtQixFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBTi9DLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN0QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUMxQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBakJwRCxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFHbkMseUJBQW9CLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUN6QywyQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFDL0Isa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFDbkIsc0JBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBQ2Qsc0JBQWlCLEdBQUcsSUFBSSxPQUFPLEVBQXNCLENBQUM7UUFjMUQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQ3JDLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztnQkFDN0IsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7Z0JBQ3BDLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO2dCQUNuQyxXQUFXLEVBQUUsRUFBRTtnQkFDZixZQUFZLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0QsUUFBUSxFQUFFLEVBQUU7Z0JBQ1osWUFBWSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUNoQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLGlDQUFNLElBQUksS0FBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUcsRUFBRSxFQUFFLENBQUMsQ0FDakY7YUFDSixDQUFDO1lBQ0YsU0FBUyxFQUFFLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQztTQUMvQixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNaLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVE7YUFDL0MscUJBQXFCLEVBQUU7YUFDdkIsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7YUFDM0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTFCLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7UUFDOUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ25GLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQ2xDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFDZixTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ1gsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVE7aUJBQzNCLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUU7Z0JBQ3pCLElBQUksRUFBRTtvQkFDRixTQUFTLEVBQUUsU0FBUyxDQUFDLElBQUk7aUJBQzVCO2FBQ0osQ0FBQztpQkFDRCxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsV0FBQyxPQUFBLE1BQUEsSUFBSSxDQUFDLFFBQVEsMENBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQSxFQUFBLENBQUMsQ0FBQztRQUN6RCxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDZixJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELHNCQUFzQjtRQUNsQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFjLENBQUM7UUFDbEUsT0FBTyxTQUFTLENBQUMsUUFBeUIsQ0FBQztJQUMvQyxDQUFDO0lBRUQsMEJBQTBCLENBQUMsRUFBVTtRQUNqQyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUM7SUFDdkMsQ0FBQztJQUVELDJCQUEyQixDQUFDLEVBQVU7UUFDbEMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxFQUFVO1FBQzFCLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUNuQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ3hDO2FBQU07WUFDSCxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ3JDO0lBQ0wsQ0FBQztJQUVELFVBQVU7UUFDTixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBYyxDQUFDO1FBQ3ZFLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQ3RDLFFBQVEsRUFBRSxFQUFFO1lBQ1osT0FBTyxFQUFFLEVBQUU7WUFDWCxXQUFXLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUN0QyxXQUFXLEVBQUUsRUFBRTtZQUNmLElBQUksRUFBRSxFQUFFO1lBQ1IsUUFBUSxFQUFFLEVBQUU7WUFDWixVQUFVLEVBQUUsRUFBRTtZQUNkLFdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ3RDLFdBQVcsRUFBRSxFQUFFO1lBQ2Ysc0JBQXNCLEVBQUUsS0FBSztZQUM3QixxQkFBcUIsRUFBRSxLQUFLO1NBQy9CLENBQUMsQ0FBQztRQUNILElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRTtZQUNqQyxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3JELEtBQUssTUFBTSxRQUFRLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFO2dCQUM3QyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ3BFO1lBQ0QsVUFBVSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztTQUM1RDtRQUNELGdCQUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsb0JBQW9CLENBQUMsWUFBb0I7UUFDckMsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLFlBQVksQ0FBQztRQUNuQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELG1CQUFtQixDQUFDLElBQVk7UUFDNUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsSUFBSSxDQUFDO1FBQy9CLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsTUFBTTs7UUFDRixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ2YsT0FBTztTQUNWO1FBQ0QsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQztRQUNyQyxNQUFNLFlBQVksR0FBRyxNQUFBLFlBQVksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLDBDQUFFLEtBQUssQ0FBQztRQUM3RCxNQUFNLFFBQVEsR0FBd0I7WUFDbEMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLO1lBQ3RCLFlBQVksRUFBRSxTQUFTLENBQUMsWUFBWTtZQUNwQyxTQUFTLEVBQUUsU0FBUyxDQUFDLFNBQVM7WUFDOUIsUUFBUSxFQUFFLFNBQVMsQ0FBQyxRQUFRO1lBQzVCLFdBQVcsRUFBRSxTQUFTLENBQUMsV0FBVztZQUNsQyxZQUFZO1NBQ2YsQ0FBQztRQUNGLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUTthQUNwQixjQUFjLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxRQUFRLENBQUM7YUFDNUMsU0FBUyxDQUFDLENBQUMsRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFO1lBQzlCLFFBQVEsY0FBYyxDQUFDLFVBQVUsRUFBRTtnQkFDL0IsS0FBSyxVQUFVO29CQUNYLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLDhCQUE4QixDQUFDLEVBQUU7d0JBQ2hFLE1BQU0sRUFBRSxVQUFVO3FCQUNyQixDQUFDLENBQUM7b0JBQ0gsSUFBSSxjQUFjLENBQUMsWUFBWSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRTt3QkFDcEQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQzs0QkFDNUIsT0FBTyxFQUFFLENBQUMsQ0FBQyxrQ0FBa0MsQ0FBQzs0QkFDOUMsZUFBZSxFQUFFLEVBQUUsWUFBWSxFQUFFLFNBQVMsQ0FBQyxZQUFZLEVBQUU7NEJBQ3pELElBQUksRUFBRSxNQUFNOzRCQUNaLFFBQVEsRUFBRSxLQUFLO3lCQUNsQixDQUFDLENBQUM7cUJBQ047b0JBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDakMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQztvQkFDcEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO29CQUM3RSxNQUFNO2dCQUNWLEtBQUssMkJBQTJCO29CQUM1QixJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUM5RDtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELElBQUk7UUFDQSxJQUFJLENBQUMsT0FBTzthQUNQLElBQUksQ0FDRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsUUFBUSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFOztZQUNoQixNQUFNLGNBQWMsR0FPaEIsRUFBRSxDQUFDO1lBQ1AsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDckQsSUFBSSxZQUFZLElBQUksWUFBWSxDQUFDLEtBQUssRUFBRTtnQkFDcEMsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQztnQkFDckMsTUFBTSxZQUFZLEdBQUcsTUFBQSxZQUFZLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQywwQ0FBRSxLQUFLLENBQUM7Z0JBQzdELE1BQU0sUUFBUSxHQUF3QjtvQkFDbEMsRUFBRTtvQkFDRixLQUFLLEVBQUUsU0FBUyxDQUFDLEtBQUs7b0JBQ3RCLFlBQVksRUFBRSxTQUFTLENBQUMsWUFBWTtvQkFDcEMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxTQUFTO29CQUM5QixRQUFRLEVBQUUsU0FBUyxDQUFDLFFBQVE7b0JBQzVCLFdBQVcsRUFBRSxTQUFTLENBQUMsV0FBVztvQkFDbEMsWUFBWTtpQkFDZixDQUFDO2dCQUNGLGNBQWMsQ0FBQyxJQUFJLENBQ2YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRO3FCQUNwQixjQUFjLENBQUMsUUFBUSxDQUFDO3FCQUN4QixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQzVDLENBQUM7YUFDTDtZQUNELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFjLENBQUM7WUFDdkUsSUFBSSxDQUFDLGdCQUFnQixJQUFJLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtnQkFDN0UsS0FBSyxNQUFNLGNBQWMsSUFBSSxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUU7b0JBQ3BELElBQUksY0FBYyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUU7d0JBQ3JELE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUM7d0JBQ3JDLE1BQU0sS0FBSyxHQUF1Qjs0QkFDOUIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFROzRCQUMxQixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87NEJBQ3hCLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVzs0QkFDaEMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXOzRCQUNoQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7NEJBQ2xCLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTs0QkFDMUIsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVOzRCQUM5QixXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVc7NEJBQ2hDLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVzs0QkFDaEMsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixLQUFLLE9BQU8sQ0FBQyxFQUFFOzRCQUNwRSxxQkFBcUIsRUFBRSxJQUFJLENBQUMsdUJBQXVCLEtBQUssT0FBTyxDQUFDLEVBQUU7NEJBQ2xFLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWTt5QkFDckMsQ0FBQzt3QkFDRixJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRTs0QkFDYixjQUFjLENBQUMsSUFBSSxDQUNmLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUTtpQ0FDcEIscUJBQXFCLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQztpQ0FDaEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQ25ELENBQUM7eUJBQ0w7NkJBQU07NEJBQ0gsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRTtnQ0FDM0MsY0FBYyxDQUFDLElBQUksQ0FDZixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVE7cUNBQ3BCLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7cUNBQ2pDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUNuRCxDQUFDOzZCQUNMO2lDQUFNO2dDQUNILGNBQWMsQ0FBQyxJQUFJLENBQ2YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRO3FDQUNwQixxQkFBcUIsaUNBQ2YsS0FBSyxLQUNSLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRSxJQUNoQjtxQ0FDRCxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FDbkQsQ0FBQzs2QkFDTDt5QkFDSjtxQkFDSjtpQkFDSjthQUNKO1lBQ0QsT0FBTyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQ0w7YUFDQSxTQUFTLENBQ04sSUFBSSxDQUFDLEVBQUU7WUFDSCxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDckIsS0FBSyxNQUFNLE1BQU0sSUFBSSxJQUFJLEVBQUU7Z0JBQ3ZCLFFBQVEsTUFBTSxDQUFDLFVBQVUsRUFBRTtvQkFDdkIsS0FBSyxVQUFVLENBQUM7b0JBQ2hCLEtBQUssU0FBUyxDQUFDO29CQUNmLEtBQUssU0FBUzt3QkFDVixJQUFJLENBQUMsUUFBUSxFQUFFOzRCQUNYLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLDhCQUE4QixDQUFDLEVBQUU7Z0NBQ2hFLE1BQU0sRUFBRSxVQUFVOzZCQUNyQixDQUFDLENBQUM7NEJBQ0gsUUFBUSxHQUFHLElBQUksQ0FBQzs0QkFDaEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQzs0QkFDakMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQzs0QkFDcEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQzs0QkFDbkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQzs0QkFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7eUJBQ3RFO3dCQUNELE1BQU07b0JBQ1YsS0FBSywyQkFBMkI7d0JBQzVCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO3dCQUMvQyxNQUFNO2lCQUNiO2FBQ0o7UUFDTCxDQUFDLEVBQ0QsR0FBRyxDQUFDLEVBQUU7WUFDRixJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFO2dCQUM1RCxNQUFNLEVBQUUsVUFBVTthQUNyQixDQUFDLENBQUM7UUFDUCxDQUFDLENBQ0osQ0FBQztJQUNWLENBQUM7SUFFRCxVQUFVO1FBQ04sSUFBSSxDQUFDLFlBQVk7YUFDWixhQUFhLENBQUMsa0NBQWtDLEVBQUU7WUFDL0MsSUFBSSxFQUFFLElBQUk7U0FDYixDQUFDO2FBQ0QsSUFBSSxDQUNELFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQzFELFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQzFGO2FBQ0EsU0FBUyxDQUFDO1lBQ1AsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFO2dCQUNSLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLHlDQUF5QyxDQUFDLEVBQUU7b0JBQzNFLGFBQWEsRUFBRSxDQUFDO29CQUNoQixTQUFTLEVBQUUsR0FBRyxDQUFDLG1CQUFtQixDQUFDLElBQUk7aUJBQzFDLENBQUMsQ0FBQztZQUNQLENBQUM7WUFDRCxRQUFRLEVBQUUsR0FBRyxFQUFFO2dCQUNYLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNoRixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzdCLENBQUM7U0FDSixDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQXlCO1FBQ3JDLElBQUksQ0FBQyxZQUFZO2FBQ1osTUFBTSxDQUFDO1lBQ0osS0FBSyxFQUFFLENBQUMsQ0FBQyw2Q0FBNkMsQ0FBQztZQUN2RCxPQUFPLEVBQUU7Z0JBQ0wsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsZUFBZSxDQUFDLEVBQUU7Z0JBQ2hELEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7YUFDbkU7U0FDSixDQUFDO2FBQ0QsSUFBSSxDQUNELFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUNqQixRQUFRO1lBQ0osQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDekUsQ0FBQyxDQUFDLEtBQUssQ0FDZCxFQUNELFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUN2RjthQUNBLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNoQixJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyw4Q0FBOEMsQ0FBQyxFQUFFO2dCQUNoRixhQUFhLEVBQUUsQ0FBQztnQkFDaEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxJQUFJO2FBQ3hCLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBRSxJQUFJLEVBQW9CO1FBQ3hDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN0RSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLDhCQUE4QixDQUFDLEVBQUU7Z0JBQ2hFLE1BQU0sRUFBRSxNQUFNO2FBQ2pCLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFtQjtRQUMxQixJQUFJLENBQUMsWUFBWTthQUNaLGFBQWEsQ0FBQyx1QkFBdUIsRUFBRTtZQUNwQyxRQUFRLEVBQUUsSUFBSTtZQUNkLE1BQU0sRUFBRTtnQkFDSixzQkFBc0IsRUFBRSxLQUFLO2dCQUM3QixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJO2FBQ3hCO1NBQ0osQ0FBQzthQUNELElBQUksQ0FDRCxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDZixJQUFJLE1BQU0sRUFBRTtnQkFDUixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDO29CQUNoRCxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUU7b0JBQ2hCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtpQkFDcEIsQ0FBQyxDQUFDO2FBQ047aUJBQU07Z0JBQ0gsT0FBTyxLQUFLLENBQUM7YUFDaEI7UUFDTCxDQUFDLENBQUMsQ0FDTDthQUNBLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNoQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLDhCQUE4QixDQUFDLEVBQUU7Z0JBQ2hFLE1BQU0sRUFBRSxNQUFNO2FBQ2pCLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFtQjtRQUMxQixPQUFPLElBQUksQ0FBQyxZQUFZO2FBQ25CLE1BQU0sQ0FBQztZQUNKLEtBQUssRUFBRSxDQUFDLENBQUMsNEJBQTRCLENBQUM7WUFDdEMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUNyQixPQUFPLEVBQUU7Z0JBQ0wsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsZUFBZSxDQUFDLEVBQUU7Z0JBQ2hELEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7YUFDbkU7U0FDSixDQUFDO2FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDOUYsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsOEJBQThCLENBQUMsRUFBRTtnQkFDaEUsTUFBTSxFQUFFLE1BQU07YUFDakIsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRVMsYUFBYSxDQUFDLE1BQTBCOztRQUM5QyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0RCxJQUFJLGFBQWEsRUFBRTtZQUNmLGFBQWEsQ0FBQyxVQUFVLENBQUM7Z0JBQ3JCLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSztnQkFDbkIsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO2dCQUMzQixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7Z0JBQ3pCLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVztnQkFDL0IsWUFBWSxFQUFFLE1BQU0sQ0FBQyxZQUFZO2FBQ3BDLENBQUMsQ0FBQztTQUNOO1FBRUQsSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFO1lBQ2xCLE1BQU0sY0FBYyxHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pDLEtBQUssTUFBTSxPQUFPLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRTtnQkFDcEMsTUFBTSxLQUE0QixPQUFjLEVBQTFDLEVBQUUsWUFBWSxPQUE0QixFQUF2QixJQUFJLGNBQXZCLGdCQUF5QixDQUFpQixDQUFDO2dCQUNqRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssaUNBQ3BDLElBQUksS0FDUCxXQUFXLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQ25DLENBQUM7Z0JBQ0gsY0FBYyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDbEMsSUFBSSxPQUFPLENBQUMsc0JBQXNCLEVBQUU7b0JBQ2hDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDO2lCQUM5QztnQkFDRCxJQUFJLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRTtvQkFDL0IsSUFBSSxDQUFDLHVCQUF1QixHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUM7aUJBQzdDO2dCQUVELElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRTtvQkFDakMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDckQsS0FBSyxNQUFNLFFBQVEsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7d0JBQzdDLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7d0JBQzFCLE1BQU0sS0FBSyxHQUFHLE1BQUMsT0FBZSxDQUFDLFlBQVksMENBQUcsR0FBRyxDQUFDLENBQUM7d0JBQ25ELE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUN2QyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO3FCQUM5QztvQkFDRCxZQUFZLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO2lCQUM5RDthQUNKO1lBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1NBQzNEO1FBRUQsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRTtZQUMxQixJQUFJLENBQUMsd0JBQXdCLENBQ3pCLElBQUksQ0FBQyxZQUFZLEVBQ2pCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLGNBQWMsQ0FBQyxDQUFDLEVBQ2pELE1BQU0sQ0FDVCxDQUFDO1NBQ0w7UUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7T0FFRztJQUNLLGVBQWU7UUFDbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRO2FBQ3BCLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ2xCLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYTtZQUN4QixJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWE7WUFDdkQsSUFBSSxFQUFFLEVBQUUsYUFBYSxFQUFFLFNBQVMsQ0FBQyxJQUFJLEVBQUU7U0FDMUMsQ0FBQzthQUNELE9BQU8sQ0FBQyxJQUFJLENBQ1QsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUMxQixNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FDN0I7YUFDQSxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDbEUsQ0FBQzs7O1lBemRKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUscUJBQXFCO2dCQUMvQix5aVFBQStDO2dCQUUvQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7YUFDbEQ7OztZQW5EUSxjQUFjO1lBQUUsTUFBTTtZQW9CM0IsbUJBQW1CO1lBdEJXLGlCQUFpQjtZQUMvQixXQUFXO1lBVzNCLFdBQVc7WUFRWCxZQUFZO1lBQ1osbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBtYXJrZXIgYXMgXyB9IGZyb20gJ0BiaWVzYmplcmcvbmd4LXRyYW5zbGF0ZS1leHRyYWN0LW1hcmtlcic7XHJcbmltcG9ydCB7XHJcbiAgICBCYXNlRGV0YWlsQ29tcG9uZW50LFxyXG4gICAgQ3JlYXRlQWRkcmVzc0lucHV0LFxyXG4gICAgQ3JlYXRlQ3VzdG9tZXJBZGRyZXNzLFxyXG4gICAgQ3JlYXRlQ3VzdG9tZXJBZGRyZXNzTXV0YXRpb24sXHJcbiAgICBDcmVhdGVDdXN0b21lcklucHV0LFxyXG4gICAgQ3VzdG9tZXIsXHJcbiAgICBDdXN0b21GaWVsZENvbmZpZyxcclxuICAgIERhdGFTZXJ2aWNlLFxyXG4gICAgRGVsZXRlQ3VzdG9tZXJBZGRyZXNzLFxyXG4gICAgRWRpdE5vdGVEaWFsb2dDb21wb25lbnQsXHJcbiAgICBHZXRBdmFpbGFibGVDb3VudHJpZXMsXHJcbiAgICBHZXRDdXN0b21lcixcclxuICAgIEdldEN1c3RvbWVySGlzdG9yeSxcclxuICAgIEdldEN1c3RvbWVyUXVlcnksXHJcbiAgICBIaXN0b3J5RW50cnksXHJcbiAgICBNb2RhbFNlcnZpY2UsXHJcbiAgICBOb3RpZmljYXRpb25TZXJ2aWNlLFxyXG4gICAgU2VydmVyQ29uZmlnU2VydmljZSxcclxuICAgIFNvcnRPcmRlcixcclxuICAgIFVwZGF0ZUN1c3RvbWVyLFxyXG4gICAgVXBkYXRlQ3VzdG9tZXJBZGRyZXNzLFxyXG4gICAgVXBkYXRlQ3VzdG9tZXJBZGRyZXNzTXV0YXRpb24sXHJcbiAgICBVcGRhdGVDdXN0b21lcklucHV0LFxyXG4gICAgVXBkYXRlQ3VzdG9tZXJNdXRhdGlvbixcclxufSBmcm9tICdAdmVuZHVyZS9hZG1pbi11aS9jb3JlJztcclxuaW1wb3J0IHsgYXNzZXJ0TmV2ZXIsIG5vdE51bGxPclVuZGVmaW5lZCB9IGZyb20gJ0B2ZW5kdXJlL2NvbW1vbi9saWIvc2hhcmVkLXV0aWxzJztcclxuaW1wb3J0IHsgRU1QVFksIGZvcmtKb2luLCBmcm9tLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7XHJcbiAgICBjb25jYXRNYXAsXHJcbiAgICBmaWx0ZXIsXHJcbiAgICBtYXAsXHJcbiAgICBtZXJnZSxcclxuICAgIG1lcmdlTWFwLFxyXG4gICAgc2hhcmVSZXBsYXksXHJcbiAgICBzdGFydFdpdGgsXHJcbiAgICBzd2l0Y2hNYXAsXHJcbiAgICB0YWtlLFxyXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IFNlbGVjdEN1c3RvbWVyR3JvdXBEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9zZWxlY3QtY3VzdG9tZXItZ3JvdXAtZGlhbG9nL3NlbGVjdC1jdXN0b21lci1ncm91cC1kaWFsb2cuY29tcG9uZW50JztcclxuXHJcbnR5cGUgQ3VzdG9tZXJXaXRoT3JkZXJzID0gTm9uTnVsbGFibGU8R2V0Q3VzdG9tZXJRdWVyeVsnY3VzdG9tZXInXT47XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndmRyLWN1c3RvbWVyLWRldGFpbCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vY3VzdG9tZXItZGV0YWlsLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2N1c3RvbWVyLWRldGFpbC5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDdXN0b21lckRldGFpbENvbXBvbmVudFxyXG4gICAgZXh0ZW5kcyBCYXNlRGV0YWlsQ29tcG9uZW50PEN1c3RvbWVyV2l0aE9yZGVycz5cclxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3lcclxue1xyXG4gICAgZGV0YWlsRm9ybTogRm9ybUdyb3VwO1xyXG4gICAgY3VzdG9tRmllbGRzOiBDdXN0b21GaWVsZENvbmZpZ1tdO1xyXG4gICAgYWRkcmVzc0N1c3RvbUZpZWxkczogQ3VzdG9tRmllbGRDb25maWdbXTtcclxuICAgIGF2YWlsYWJsZUNvdW50cmllcyQ6IE9ic2VydmFibGU8R2V0QXZhaWxhYmxlQ291bnRyaWVzLkl0ZW1zW10+O1xyXG4gICAgb3JkZXJzJDogT2JzZXJ2YWJsZTxHZXRDdXN0b21lci5JdGVtc1tdPjtcclxuICAgIG9yZGVyc0NvdW50JDogT2JzZXJ2YWJsZTxudW1iZXI+O1xyXG4gICAgaGlzdG9yeSQ6IE9ic2VydmFibGU8R2V0Q3VzdG9tZXJIaXN0b3J5Lkl0ZW1zW10gfCB1bmRlZmluZWQ+O1xyXG4gICAgZmV0Y2hIaXN0b3J5ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAgIGRlZmF1bHRTaGlwcGluZ0FkZHJlc3NJZDogc3RyaW5nO1xyXG4gICAgZGVmYXVsdEJpbGxpbmdBZGRyZXNzSWQ6IHN0cmluZztcclxuICAgIGFkZHJlc3Nlc1RvRGVsZXRlSWRzID0gbmV3IFNldDxzdHJpbmc+KCk7XHJcbiAgICBhZGRyZXNzRGVmYXVsdHNVcGRhdGVkID0gZmFsc2U7XHJcbiAgICBvcmRlcnNQZXJQYWdlID0gMTA7XHJcbiAgICBjdXJyZW50T3JkZXJzUGFnZSA9IDE7XHJcbiAgICBwcml2YXRlIG9yZGVyTGlzdFVwZGF0ZXMkID0gbmV3IFN1YmplY3Q8Q3VzdG9tZXJXaXRoT3JkZXJzPigpO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgICAgICByb3V0ZXI6IFJvdXRlcixcclxuICAgICAgICBzZXJ2ZXJDb25maWdTZXJ2aWNlOiBTZXJ2ZXJDb25maWdTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxyXG4gICAgICAgIHByb3RlY3RlZCBkYXRhU2VydmljZTogRGF0YVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihyb3V0ZSwgcm91dGVyLCBzZXJ2ZXJDb25maWdTZXJ2aWNlLCBkYXRhU2VydmljZSk7XHJcblxyXG4gICAgICAgIHRoaXMuY3VzdG9tRmllbGRzID0gdGhpcy5nZXRDdXN0b21GaWVsZENvbmZpZygnQ3VzdG9tZXInKTtcclxuICAgICAgICB0aGlzLmFkZHJlc3NDdXN0b21GaWVsZHMgPSB0aGlzLmdldEN1c3RvbUZpZWxkQ29uZmlnKCdBZGRyZXNzJyk7XHJcbiAgICAgICAgdGhpcy5kZXRhaWxGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgICAgICAgIGN1c3RvbWVyOiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiAnJyxcclxuICAgICAgICAgICAgICAgIGZpcnN0TmFtZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgICAgIGxhc3ROYW1lOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgICAgICAgcGhvbmVOdW1iZXI6ICcnLFxyXG4gICAgICAgICAgICAgICAgZW1haWxBZGRyZXNzOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsXV0sXHJcbiAgICAgICAgICAgICAgICBwYXNzd29yZDogJycsXHJcbiAgICAgICAgICAgICAgICBjdXN0b21GaWVsZHM6IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXN0b21GaWVsZHMucmVkdWNlKChoYXNoLCBmaWVsZCkgPT4gKHsgLi4uaGFzaCwgW2ZpZWxkLm5hbWVdOiAnJyB9KSwge30pLFxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIGFkZHJlc3NlczogbmV3IEZvcm1BcnJheShbXSksXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICAgICAgdGhpcy5hdmFpbGFibGVDb3VudHJpZXMkID0gdGhpcy5kYXRhU2VydmljZS5zZXR0aW5nc1xyXG4gICAgICAgICAgICAuZ2V0QXZhaWxhYmxlQ291bnRyaWVzKClcclxuICAgICAgICAgICAgLm1hcFNpbmdsZShyZXN1bHQgPT4gcmVzdWx0LmNvdW50cmllcy5pdGVtcylcclxuICAgICAgICAgICAgLnBpcGUoc2hhcmVSZXBsYXkoMSkpO1xyXG5cclxuICAgICAgICBjb25zdCBjdXN0b21lcldpdGhVcGRhdGVzJCA9IHRoaXMuZW50aXR5JC5waXBlKG1lcmdlKHRoaXMub3JkZXJMaXN0VXBkYXRlcyQpKTtcclxuICAgICAgICB0aGlzLm9yZGVycyQgPSBjdXN0b21lcldpdGhVcGRhdGVzJC5waXBlKG1hcChjdXN0b21lciA9PiBjdXN0b21lci5vcmRlcnMuaXRlbXMpKTtcclxuICAgICAgICB0aGlzLm9yZGVyc0NvdW50JCA9IHRoaXMuZW50aXR5JC5waXBlKG1hcChjdXN0b21lciA9PiBjdXN0b21lci5vcmRlcnMudG90YWxJdGVtcykpO1xyXG4gICAgICAgIHRoaXMuaGlzdG9yeSQgPSB0aGlzLmZldGNoSGlzdG9yeS5waXBlKFxyXG4gICAgICAgICAgICBzdGFydFdpdGgobnVsbCksXHJcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5jdXN0b21lclxyXG4gICAgICAgICAgICAgICAgICAgIC5nZXRDdXN0b21lckhpc3RvcnkodGhpcy5pZCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzb3J0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkQXQ6IFNvcnRPcmRlci5ERVNDLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgLm1hcFN0cmVhbShkYXRhID0+IGRhdGEuY3VzdG9tZXI/Lmhpc3RvcnkuaXRlbXMpO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMuZGVzdHJveSgpO1xyXG4gICAgICAgIHRoaXMub3JkZXJMaXN0VXBkYXRlcyQuY29tcGxldGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRBZGRyZXNzRm9ybUNvbnRyb2xzKCk6IEZvcm1Db250cm9sW10ge1xyXG4gICAgICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuZGV0YWlsRm9ybS5nZXQoWydhZGRyZXNzZXMnXSkgYXMgRm9ybUFycmF5O1xyXG4gICAgICAgIHJldHVybiBmb3JtQXJyYXkuY29udHJvbHMgYXMgRm9ybUNvbnRyb2xbXTtcclxuICAgIH1cclxuXHJcbiAgICBzZXREZWZhdWx0QmlsbGluZ0FkZHJlc3NJZChpZDogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5kZWZhdWx0QmlsbGluZ0FkZHJlc3NJZCA9IGlkO1xyXG4gICAgICAgIHRoaXMuYWRkcmVzc0RlZmF1bHRzVXBkYXRlZCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RGVmYXVsdFNoaXBwaW5nQWRkcmVzc0lkKGlkOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLmRlZmF1bHRTaGlwcGluZ0FkZHJlc3NJZCA9IGlkO1xyXG4gICAgICAgIHRoaXMuYWRkcmVzc0RlZmF1bHRzVXBkYXRlZCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgdG9nZ2xlRGVsZXRlQWRkcmVzcyhpZDogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkcmVzc2VzVG9EZWxldGVJZHMuaGFzKGlkKSkge1xyXG4gICAgICAgICAgICB0aGlzLmFkZHJlc3Nlc1RvRGVsZXRlSWRzLmRlbGV0ZShpZCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5hZGRyZXNzZXNUb0RlbGV0ZUlkcy5hZGQoaWQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhZGRBZGRyZXNzKCkge1xyXG4gICAgICAgIGNvbnN0IGFkZHJlc3NGb3JtQXJyYXkgPSB0aGlzLmRldGFpbEZvcm0uZ2V0KCdhZGRyZXNzZXMnKSBhcyBGb3JtQXJyYXk7XHJcbiAgICAgICAgY29uc3QgbmV3QWRkcmVzcyA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICAgICAgICBmdWxsTmFtZTogJycsXHJcbiAgICAgICAgICAgIGNvbXBhbnk6ICcnLFxyXG4gICAgICAgICAgICBzdHJlZXRMaW5lMTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgc3RyZWV0TGluZTI6ICcnLFxyXG4gICAgICAgICAgICBjaXR5OiAnJyxcclxuICAgICAgICAgICAgcHJvdmluY2U6ICcnLFxyXG4gICAgICAgICAgICBwb3N0YWxDb2RlOiAnJyxcclxuICAgICAgICAgICAgY291bnRyeUNvZGU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgIHBob25lTnVtYmVyOiAnJyxcclxuICAgICAgICAgICAgZGVmYXVsdFNoaXBwaW5nQWRkcmVzczogZmFsc2UsXHJcbiAgICAgICAgICAgIGRlZmF1bHRCaWxsaW5nQWRkcmVzczogZmFsc2UsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkcmVzc0N1c3RvbUZpZWxkcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgY29uc3QgY3VzdG9tRmllbGRzR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHt9KTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBmaWVsZERlZiBvZiB0aGlzLmFkZHJlc3NDdXN0b21GaWVsZHMpIHtcclxuICAgICAgICAgICAgICAgIGN1c3RvbUZpZWxkc0dyb3VwLmFkZENvbnRyb2woZmllbGREZWYubmFtZSwgbmV3IEZvcm1Db250cm9sKCcnKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbmV3QWRkcmVzcy5hZGRDb250cm9sKCdjdXN0b21GaWVsZHMnLCBjdXN0b21GaWVsZHNHcm91cCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGFkZHJlc3NGb3JtQXJyYXkucHVzaChuZXdBZGRyZXNzKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRPcmRlckl0ZW1zUGVyUGFnZShpdGVtc1BlclBhZ2U6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMub3JkZXJzUGVyUGFnZSA9ICtpdGVtc1BlclBhZ2U7XHJcbiAgICAgICAgdGhpcy5mZXRjaE9yZGVyc0xpc3QoKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRPcmRlckN1cnJlbnRQYWdlKHBhZ2U6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMuY3VycmVudE9yZGVyc1BhZ2UgPSArcGFnZTtcclxuICAgICAgICB0aGlzLmZldGNoT3JkZXJzTGlzdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZSgpIHtcclxuICAgICAgICBjb25zdCBjdXN0b21lckZvcm0gPSB0aGlzLmRldGFpbEZvcm0uZ2V0KCdjdXN0b21lcicpO1xyXG4gICAgICAgIGlmICghY3VzdG9tZXJGb3JtKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZm9ybVZhbHVlID0gY3VzdG9tZXJGb3JtLnZhbHVlO1xyXG4gICAgICAgIGNvbnN0IGN1c3RvbUZpZWxkcyA9IGN1c3RvbWVyRm9ybS5nZXQoJ2N1c3RvbUZpZWxkcycpPy52YWx1ZTtcclxuICAgICAgICBjb25zdCBjdXN0b21lcjogQ3JlYXRlQ3VzdG9tZXJJbnB1dCA9IHtcclxuICAgICAgICAgICAgdGl0bGU6IGZvcm1WYWx1ZS50aXRsZSxcclxuICAgICAgICAgICAgZW1haWxBZGRyZXNzOiBmb3JtVmFsdWUuZW1haWxBZGRyZXNzLFxyXG4gICAgICAgICAgICBmaXJzdE5hbWU6IGZvcm1WYWx1ZS5maXJzdE5hbWUsXHJcbiAgICAgICAgICAgIGxhc3ROYW1lOiBmb3JtVmFsdWUubGFzdE5hbWUsXHJcbiAgICAgICAgICAgIHBob25lTnVtYmVyOiBmb3JtVmFsdWUucGhvbmVOdW1iZXIsXHJcbiAgICAgICAgICAgIGN1c3RvbUZpZWxkcyxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuY3VzdG9tZXJcclxuICAgICAgICAgICAgLmNyZWF0ZUN1c3RvbWVyKGN1c3RvbWVyLCBmb3JtVmFsdWUucGFzc3dvcmQpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHsgY3JlYXRlQ3VzdG9tZXIgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgc3dpdGNoIChjcmVhdGVDdXN0b21lci5fX3R5cGVuYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnQ3VzdG9tZXInOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhfKCdjb21tb24ubm90aWZ5LWNyZWF0ZS1zdWNjZXNzJyksIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eTogJ0N1c3RvbWVyJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjcmVhdGVDdXN0b21lci5lbWFpbEFkZHJlc3MgJiYgIWZvcm1WYWx1ZS5wYXNzd29yZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLm5vdGlmeSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogXygnY3VzdG9tZXIuZW1haWwtdmVyaWZpY2F0aW9uLXNlbnQnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvblZhcnM6IHsgZW1haWxBZGRyZXNzOiBmb3JtVmFsdWUuZW1haWxBZGRyZXNzIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2luZm8nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAxMDAwMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGV0YWlsRm9ybS5tYXJrQXNQcmlzdGluZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZHJlc3NEZWZhdWx0c1VwZGF0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLi8nLCBjcmVhdGVDdXN0b21lci5pZF0sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnRW1haWxBZGRyZXNzQ29uZmxpY3RFcnJvcic6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihjcmVhdGVDdXN0b21lci5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZSgpIHtcclxuICAgICAgICB0aGlzLmVudGl0eSRcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICB0YWtlKDEpLFxyXG4gICAgICAgICAgICAgICAgbWVyZ2VNYXAoKHsgaWQgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNhdmVPcGVyYXRpb25zOiBBcnJheTxcclxuICAgICAgICAgICAgICAgICAgICAgICAgT2JzZXJ2YWJsZTxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVXBkYXRlQ3VzdG9tZXIuVXBkYXRlQ3VzdG9tZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ3JlYXRlQ3VzdG9tZXJBZGRyZXNzLkNyZWF0ZUN1c3RvbWVyQWRkcmVzc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBVcGRhdGVDdXN0b21lckFkZHJlc3MuVXBkYXRlQ3VzdG9tZXJBZGRyZXNzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlbGV0ZUN1c3RvbWVyQWRkcmVzcy5EZWxldGVDdXN0b21lckFkZHJlc3NcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgID4gPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXN0b21lckZvcm0gPSB0aGlzLmRldGFpbEZvcm0uZ2V0KCdjdXN0b21lcicpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXN0b21lckZvcm0gJiYgY3VzdG9tZXJGb3JtLmRpcnR5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IGN1c3RvbWVyRm9ybS52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VzdG9tRmllbGRzID0gY3VzdG9tZXJGb3JtLmdldCgnY3VzdG9tRmllbGRzJyk/LnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXN0b21lcjogVXBkYXRlQ3VzdG9tZXJJbnB1dCA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGZvcm1WYWx1ZS50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtYWlsQWRkcmVzczogZm9ybVZhbHVlLmVtYWlsQWRkcmVzcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0TmFtZTogZm9ybVZhbHVlLmZpcnN0TmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3ROYW1lOiBmb3JtVmFsdWUubGFzdE5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaG9uZU51bWJlcjogZm9ybVZhbHVlLnBob25lTnVtYmVyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tRmllbGRzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzYXZlT3BlcmF0aW9ucy5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhU2VydmljZS5jdXN0b21lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC51cGRhdGVDdXN0b21lcihjdXN0b21lcilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucGlwZShtYXAocmVzID0+IHJlcy51cGRhdGVDdXN0b21lcikpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhZGRyZXNzRm9ybUFycmF5ID0gdGhpcy5kZXRhaWxGb3JtLmdldCgnYWRkcmVzc2VzJykgYXMgRm9ybUFycmF5O1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgoYWRkcmVzc0Zvcm1BcnJheSAmJiBhZGRyZXNzRm9ybUFycmF5LmRpcnR5KSB8fCB0aGlzLmFkZHJlc3NEZWZhdWx0c1VwZGF0ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBhZGRyZXNzQ29udHJvbCBvZiBhZGRyZXNzRm9ybUFycmF5LmNvbnRyb2xzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWRkcmVzc0NvbnRyb2wuZGlydHkgfHwgdGhpcy5hZGRyZXNzRGVmYXVsdHNVcGRhdGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWRkcmVzcyA9IGFkZHJlc3NDb250cm9sLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlucHV0OiBDcmVhdGVBZGRyZXNzSW5wdXQgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxOYW1lOiBhZGRyZXNzLmZ1bGxOYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wYW55OiBhZGRyZXNzLmNvbXBhbnksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVldExpbmUxOiBhZGRyZXNzLnN0cmVldExpbmUxLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlZXRMaW5lMjogYWRkcmVzcy5zdHJlZXRMaW5lMixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2l0eTogYWRkcmVzcy5jaXR5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aW5jZTogYWRkcmVzcy5wcm92aW5jZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zdGFsQ29kZTogYWRkcmVzcy5wb3N0YWxDb2RlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5Q29kZTogYWRkcmVzcy5jb3VudHJ5Q29kZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGhvbmVOdW1iZXI6IGFkZHJlc3MucGhvbmVOdW1iZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRTaGlwcGluZ0FkZHJlc3M6IHRoaXMuZGVmYXVsdFNoaXBwaW5nQWRkcmVzc0lkID09PSBhZGRyZXNzLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0QmlsbGluZ0FkZHJlc3M6IHRoaXMuZGVmYXVsdEJpbGxpbmdBZGRyZXNzSWQgPT09IGFkZHJlc3MuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbUZpZWxkczogYWRkcmVzcy5jdXN0b21GaWVsZHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWFkZHJlc3MuaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZU9wZXJhdGlvbnMucHVzaChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuY3VzdG9tZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY3JlYXRlQ3VzdG9tZXJBZGRyZXNzKGlkLCBpbnB1dClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucGlwZShtYXAocmVzID0+IHJlcy5jcmVhdGVDdXN0b21lckFkZHJlc3MpKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5hZGRyZXNzZXNUb0RlbGV0ZUlkcy5oYXMoYWRkcmVzcy5pZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVPcGVyYXRpb25zLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhU2VydmljZS5jdXN0b21lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZGVsZXRlQ3VzdG9tZXJBZGRyZXNzKGFkZHJlc3MuaWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKG1hcChyZXMgPT4gcmVzLmRlbGV0ZUN1c3RvbWVyQWRkcmVzcykpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVPcGVyYXRpb25zLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhU2VydmljZS5jdXN0b21lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudXBkYXRlQ3VzdG9tZXJBZGRyZXNzKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmlucHV0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGFkZHJlc3MuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKG1hcChyZXMgPT4gcmVzLnVwZGF0ZUN1c3RvbWVyQWRkcmVzcykpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm9ya0pvaW4oc2F2ZU9wZXJhdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICAgICAgIGRhdGEgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBub3RpZmllZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcmVzdWx0IG9mIGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChyZXN1bHQuX190eXBlbmFtZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnQ3VzdG9tZXInOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnQWRkcmVzcyc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdTdWNjZXNzJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW5vdGlmaWVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKF8oJ2NvbW1vbi5ub3RpZnktdXBkYXRlLXN1Y2Nlc3MnKSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5OiAnQ3VzdG9tZXInLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90aWZpZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRldGFpbEZvcm0ubWFya0FzUHJpc3RpbmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRyZXNzRGVmYXVsdHNVcGRhdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmV0Y2hIaXN0b3J5Lm5leHQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhU2VydmljZS5jdXN0b21lci5nZXRDdXN0b21lcih0aGlzLmlkKS5zaW5nbGUkLnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0VtYWlsQWRkcmVzc0NvbmZsaWN0RXJyb3InOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihyZXN1bHQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IoXygnY29tbW9uLm5vdGlmeS11cGRhdGUtZXJyb3InKSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHk6ICdDdXN0b21lcicsXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZFRvR3JvdXAoKSB7XHJcbiAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2VcclxuICAgICAgICAgICAgLmZyb21Db21wb25lbnQoU2VsZWN0Q3VzdG9tZXJHcm91cERpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICAgICAgICAgICAgc2l6ZTogJ21kJyxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoZ3JvdXBJZHMgPT4gKGdyb3VwSWRzID8gZnJvbShncm91cElkcykgOiBFTVBUWSkpLFxyXG4gICAgICAgICAgICAgICAgY29uY2F0TWFwKGdyb3VwSWQgPT4gdGhpcy5kYXRhU2VydmljZS5jdXN0b21lci5hZGRDdXN0b21lcnNUb0dyb3VwKGdyb3VwSWQsIFt0aGlzLmlkXSkpLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogcmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhfKGBjdXN0b21lci5hZGQtY3VzdG9tZXJzLXRvLWdyb3VwLXN1Y2Nlc3NgKSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21lckNvdW50OiAxLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cE5hbWU6IHJlcy5hZGRDdXN0b21lcnNUb0dyb3VwLm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLmN1c3RvbWVyLmdldEN1c3RvbWVyKHRoaXMuaWQsIHsgdGFrZTogMCB9KS5zaW5nbGUkLnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmV0Y2hIaXN0b3J5Lm5leHQoKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZUZyb21Hcm91cChncm91cDogR2V0Q3VzdG9tZXIuR3JvdXBzKSB7XHJcbiAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2VcclxuICAgICAgICAgICAgLmRpYWxvZyh7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogXygnY3VzdG9tZXIuY29uZmlybS1yZW1vdmUtY3VzdG9tZXItZnJvbS1ncm91cCcpLFxyXG4gICAgICAgICAgICAgICAgYnV0dG9uczogW1xyXG4gICAgICAgICAgICAgICAgICAgIHsgdHlwZTogJ3NlY29uZGFyeScsIGxhYmVsOiBfKCdjb21tb24uY2FuY2VsJykgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICdkYW5nZXInLCBsYWJlbDogXygnY29tbW9uLmRlbGV0ZScpLCByZXR1cm5WYWx1ZTogdHJ1ZSB9LFxyXG4gICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAocmVzcG9uc2UgPT5cclxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuZGF0YVNlcnZpY2UuY3VzdG9tZXIucmVtb3ZlQ3VzdG9tZXJzRnJvbUdyb3VwKGdyb3VwLmlkLCBbdGhpcy5pZF0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogRU1QVFksXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuZGF0YVNlcnZpY2UuY3VzdG9tZXIuZ2V0Q3VzdG9tZXIodGhpcy5pZCwgeyB0YWtlOiAwIH0pLnNpbmdsZSQpLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKF8oYGN1c3RvbWVyLnJlbW92ZS1jdXN0b21lcnMtZnJvbS1ncm91cC1zdWNjZXNzYCksIHtcclxuICAgICAgICAgICAgICAgICAgICBjdXN0b21lckNvdW50OiAxLFxyXG4gICAgICAgICAgICAgICAgICAgIGdyb3VwTmFtZTogZ3JvdXAubmFtZSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mZXRjaEhpc3RvcnkubmV4dCgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhZGROb3RlVG9DdXN0b21lcih7IG5vdGUgfTogeyBub3RlOiBzdHJpbmcgfSkge1xyXG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuY3VzdG9tZXIuYWRkTm90ZVRvQ3VzdG9tZXIodGhpcy5pZCwgbm90ZSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5mZXRjaEhpc3RvcnkubmV4dCgpO1xyXG4gICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhfKCdjb21tb24ubm90aWZ5LWNyZWF0ZS1zdWNjZXNzJyksIHtcclxuICAgICAgICAgICAgICAgIGVudGl0eTogJ05vdGUnLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVOb3RlKGVudHJ5OiBIaXN0b3J5RW50cnkpIHtcclxuICAgICAgICB0aGlzLm1vZGFsU2VydmljZVxyXG4gICAgICAgICAgICAuZnJvbUNvbXBvbmVudChFZGl0Tm90ZURpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICAgICAgICAgICAgY2xvc2FibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBsb2NhbHM6IHtcclxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5UHJpdmFjeUNvbnRyb2xzOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBlbnRyeS5kYXRhLm5vdGUsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UuY3VzdG9tZXIudXBkYXRlQ3VzdG9tZXJOb3RlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdGVJZDogZW50cnkuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3RlOiByZXN1bHQubm90ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmV0Y2hIaXN0b3J5Lm5leHQoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKF8oJ2NvbW1vbi5ub3RpZnktdXBkYXRlLXN1Y2Nlc3MnKSwge1xyXG4gICAgICAgICAgICAgICAgICAgIGVudGl0eTogJ05vdGUnLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZU5vdGUoZW50cnk6IEhpc3RvcnlFbnRyeSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1vZGFsU2VydmljZVxyXG4gICAgICAgICAgICAuZGlhbG9nKHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBfKCdjb21tb24uY29uZmlybS1kZWxldGUtbm90ZScpLFxyXG4gICAgICAgICAgICAgICAgYm9keTogZW50cnkuZGF0YS5ub3RlLFxyXG4gICAgICAgICAgICAgICAgYnV0dG9uczogW1xyXG4gICAgICAgICAgICAgICAgICAgIHsgdHlwZTogJ3NlY29uZGFyeScsIGxhYmVsOiBfKCdjb21tb24uY2FuY2VsJykgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICdkYW5nZXInLCBsYWJlbDogXygnY29tbW9uLmRlbGV0ZScpLCByZXR1cm5WYWx1ZTogdHJ1ZSB9LFxyXG4gICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnBpcGUoc3dpdGNoTWFwKHJlcyA9PiAocmVzID8gdGhpcy5kYXRhU2VydmljZS5jdXN0b21lci5kZWxldGVDdXN0b21lck5vdGUoZW50cnkuaWQpIDogRU1QVFkpKSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZldGNoSGlzdG9yeS5uZXh0KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhfKCdjb21tb24ubm90aWZ5LWRlbGV0ZS1zdWNjZXNzJyksIHtcclxuICAgICAgICAgICAgICAgICAgICBlbnRpdHk6ICdOb3RlJyxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgc2V0Rm9ybVZhbHVlcyhlbnRpdHk6IEN1c3RvbWVyV2l0aE9yZGVycyk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGN1c3RvbWVyR3JvdXAgPSB0aGlzLmRldGFpbEZvcm0uZ2V0KCdjdXN0b21lcicpO1xyXG4gICAgICAgIGlmIChjdXN0b21lckdyb3VwKSB7XHJcbiAgICAgICAgICAgIGN1c3RvbWVyR3JvdXAucGF0Y2hWYWx1ZSh7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogZW50aXR5LnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgZmlyc3ROYW1lOiBlbnRpdHkuZmlyc3ROYW1lLFxyXG4gICAgICAgICAgICAgICAgbGFzdE5hbWU6IGVudGl0eS5sYXN0TmFtZSxcclxuICAgICAgICAgICAgICAgIHBob25lTnVtYmVyOiBlbnRpdHkucGhvbmVOdW1iZXIsXHJcbiAgICAgICAgICAgICAgICBlbWFpbEFkZHJlc3M6IGVudGl0eS5lbWFpbEFkZHJlc3MsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGVudGl0eS5hZGRyZXNzZXMpIHtcclxuICAgICAgICAgICAgY29uc3QgYWRkcmVzc2VzQXJyYXkgPSBuZXcgRm9ybUFycmF5KFtdKTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBhZGRyZXNzIG9mIGVudGl0eS5hZGRyZXNzZXMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgY3VzdG9tRmllbGRzLCAuLi5yZXN0IH0gPSBhZGRyZXNzIGFzIGFueTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFkZHJlc3NHcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnJlc3QsXHJcbiAgICAgICAgICAgICAgICAgICAgY291bnRyeUNvZGU6IGFkZHJlc3MuY291bnRyeS5jb2RlLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBhZGRyZXNzZXNBcnJheS5wdXNoKGFkZHJlc3NHcm91cCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoYWRkcmVzcy5kZWZhdWx0U2hpcHBpbmdBZGRyZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0U2hpcHBpbmdBZGRyZXNzSWQgPSBhZGRyZXNzLmlkO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGFkZHJlc3MuZGVmYXVsdEJpbGxpbmdBZGRyZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0QmlsbGluZ0FkZHJlc3NJZCA9IGFkZHJlc3MuaWQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYWRkcmVzc0N1c3RvbUZpZWxkcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXN0b21GaWVsZHNHcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe30pO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZmllbGREZWYgb2YgdGhpcy5hZGRyZXNzQ3VzdG9tRmllbGRzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGZpZWxkRGVmLm5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gKGFkZHJlc3MgYXMgYW55KS5jdXN0b21GaWVsZHM/LltrZXldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250cm9sID0gbmV3IEZvcm1Db250cm9sKHZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tRmllbGRzR3JvdXAuYWRkQ29udHJvbChrZXksIGNvbnRyb2wpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBhZGRyZXNzR3JvdXAuYWRkQ29udHJvbCgnY3VzdG9tRmllbGRzJywgY3VzdG9tRmllbGRzR3JvdXApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuZGV0YWlsRm9ybS5zZXRDb250cm9sKCdhZGRyZXNzZXMnLCBhZGRyZXNzZXNBcnJheSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5jdXN0b21GaWVsZHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0Q3VzdG9tRmllbGRGb3JtVmFsdWVzKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21GaWVsZHMsXHJcbiAgICAgICAgICAgICAgICB0aGlzLmRldGFpbEZvcm0uZ2V0KFsnY3VzdG9tZXInLCAnY3VzdG9tRmllbGRzJ10pLFxyXG4gICAgICAgICAgICAgICAgZW50aXR5LFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVmZXRjaCB0aGUgY3VzdG9tZXIgd2l0aCB0aGUgY3VycmVudCBvcmRlciBsaXN0IHNldHRpbmdzLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGZldGNoT3JkZXJzTGlzdCgpIHtcclxuICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLmN1c3RvbWVyXHJcbiAgICAgICAgICAgIC5nZXRDdXN0b21lcih0aGlzLmlkLCB7XHJcbiAgICAgICAgICAgICAgICB0YWtlOiB0aGlzLm9yZGVyc1BlclBhZ2UsXHJcbiAgICAgICAgICAgICAgICBza2lwOiAodGhpcy5jdXJyZW50T3JkZXJzUGFnZSAtIDEpICogdGhpcy5vcmRlcnNQZXJQYWdlLFxyXG4gICAgICAgICAgICAgICAgc29ydDogeyBvcmRlclBsYWNlZEF0OiBTb3J0T3JkZXIuREVTQyB9LFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuc2luZ2xlJC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKGRhdGEgPT4gZGF0YS5jdXN0b21lciksXHJcbiAgICAgICAgICAgICAgICBmaWx0ZXIobm90TnVsbE9yVW5kZWZpbmVkKSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB0aGlzLm9yZGVyTGlzdFVwZGF0ZXMkLm5leHQocmVzdWx0KSk7XHJcbiAgICB9XHJcbn1cclxuIl19
416
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItZGV0YWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY3VzdG9tZXIvc3JjL2NvbXBvbmVudHMvY3VzdG9tZXItZGV0YWlsL2N1c3RvbWVyLWRldGFpbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDdEUsT0FBTyxFQUNILG1CQUFtQixFQU9uQixXQUFXLEVBRVgsdUJBQXVCLEVBTXZCLFlBQVksRUFDWixtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLFNBQVMsR0FNWixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBZSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEUsT0FBTyxFQUNILFNBQVMsRUFDVCxNQUFNLEVBQ04sR0FBRyxFQUNILEtBQUssRUFDTCxRQUFRLEVBQ1IsV0FBVyxFQUNYLFNBQVMsRUFDVCxTQUFTLEVBQ1QsSUFBSSxHQUNQLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFVNUgsTUFBTSxPQUFPLHVCQUNULFNBQVEsbUJBQXVDO0lBbUIvQyxZQUNJLEtBQXFCLEVBQ3JCLE1B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Q0FDN0I7YUFDQSxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDbEUsQ0FBQzs7O1lBemRKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUscUJBQXFCO2dCQUMvQix5aVFBQStDO2dCQUUvQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7YUFDbEQ7OztZQW5EUSxjQUFjO1lBQUUsTUFBTTtZQW9CM0IsbUJBQW1CO1lBdEJXLGlCQUFpQjtZQUMvQixXQUFXO1lBVzNCLFdBQVc7WUFRWCxZQUFZO1lBQ1osbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBtYXJrZXIgYXMgXyB9IGZyb20gJ0BiaWVzYmplcmcvbmd4LXRyYW5zbGF0ZS1leHRyYWN0LW1hcmtlcic7XHJcbmltcG9ydCB7XHJcbiAgICBCYXNlRGV0YWlsQ29tcG9uZW50LFxyXG4gICAgQ3JlYXRlQWRkcmVzc0lucHV0LFxyXG4gICAgQ3JlYXRlQ3VzdG9tZXJBZGRyZXNzLFxyXG4gICAgQ3JlYXRlQ3VzdG9tZXJBZGRyZXNzTXV0YXRpb24sXHJcbiAgICBDcmVhdGVDdXN0b21lcklucHV0LFxyXG4gICAgQ3VzdG9tZXIsXHJcbiAgICBDdXN0b21GaWVsZENvbmZpZyxcclxuICAgIERhdGFTZXJ2aWNlLFxyXG4gICAgRGVsZXRlQ3VzdG9tZXJBZGRyZXNzLFxyXG4gICAgRWRpdE5vdGVEaWFsb2dDb21wb25lbnQsXHJcbiAgICBHZXRBdmFpbGFibGVDb3VudHJpZXMsXHJcbiAgICBHZXRDdXN0b21lcixcclxuICAgIEdldEN1c3RvbWVySGlzdG9yeSxcclxuICAgIEdldEN1c3RvbWVyUXVlcnksXHJcbiAgICBUaW1lbGluZUhpc3RvcnlFbnRyeSxcclxuICAgIE1vZGFsU2VydmljZSxcclxuICAgIE5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICBTZXJ2ZXJDb25maWdTZXJ2aWNlLFxyXG4gICAgU29ydE9yZGVyLFxyXG4gICAgVXBkYXRlQ3VzdG9tZXIsXHJcbiAgICBVcGRhdGVDdXN0b21lckFkZHJlc3MsXHJcbiAgICBVcGRhdGVDdXN0b21lckFkZHJlc3NNdXRhdGlvbixcclxuICAgIFVwZGF0ZUN1c3RvbWVySW5wdXQsXHJcbiAgICBVcGRhdGVDdXN0b21lck11dGF0aW9uLFxyXG59IGZyb20gJ0B2ZW5kdXJlL2FkbWluLXVpL2NvcmUnO1xyXG5pbXBvcnQgeyBhc3NlcnROZXZlciwgbm90TnVsbE9yVW5kZWZpbmVkIH0gZnJvbSAnQHZlbmR1cmUvY29tbW9uL2xpYi9zaGFyZWQtdXRpbHMnO1xyXG5pbXBvcnQgeyBFTVBUWSwgZm9ya0pvaW4sIGZyb20sIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtcclxuICAgIGNvbmNhdE1hcCxcclxuICAgIGZpbHRlcixcclxuICAgIG1hcCxcclxuICAgIG1lcmdlLFxyXG4gICAgbWVyZ2VNYXAsXHJcbiAgICBzaGFyZVJlcGxheSxcclxuICAgIHN0YXJ0V2l0aCxcclxuICAgIHN3aXRjaE1hcCxcclxuICAgIHRha2UsXHJcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgU2VsZWN0Q3VzdG9tZXJHcm91cERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL3NlbGVjdC1jdXN0b21lci1ncm91cC1kaWFsb2cvc2VsZWN0LWN1c3RvbWVyLWdyb3VwLWRpYWxvZy5jb21wb25lbnQnO1xyXG5cclxudHlwZSBDdXN0b21lcldpdGhPcmRlcnMgPSBOb25OdWxsYWJsZTxHZXRDdXN0b21lclF1ZXJ5WydjdXN0b21lciddPjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd2ZHItY3VzdG9tZXItZGV0YWlsJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9jdXN0b21lci1kZXRhaWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vY3VzdG9tZXItZGV0YWlsLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIEN1c3RvbWVyRGV0YWlsQ29tcG9uZW50XHJcbiAgICBleHRlbmRzIEJhc2VEZXRhaWxDb21wb25lbnQ8Q3VzdG9tZXJXaXRoT3JkZXJzPlxyXG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveVxyXG57XHJcbiAgICBkZXRhaWxGb3JtOiBGb3JtR3JvdXA7XHJcbiAgICBjdXN0b21GaWVsZHM6IEN1c3RvbUZpZWxkQ29uZmlnW107XHJcbiAgICBhZGRyZXNzQ3VzdG9tRmllbGRzOiBDdXN0b21GaWVsZENvbmZpZ1tdO1xyXG4gICAgYXZhaWxhYmxlQ291bnRyaWVzJDogT2JzZXJ2YWJsZTxHZXRBdmFpbGFibGVDb3VudHJpZXMuSXRlbXNbXT47XHJcbiAgICBvcmRlcnMkOiBPYnNlcnZhYmxlPEdldEN1c3RvbWVyLkl0ZW1zW10+O1xyXG4gICAgb3JkZXJzQ291bnQkOiBPYnNlcnZhYmxlPG51bWJlcj47XHJcbiAgICBoaXN0b3J5JDogT2JzZXJ2YWJsZTxHZXRDdXN0b21lckhpc3RvcnkuSXRlbXNbXSB8IHVuZGVmaW5lZD47XHJcbiAgICBmZXRjaEhpc3RvcnkgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gICAgZGVmYXVsdFNoaXBwaW5nQWRkcmVzc0lkOiBzdHJpbmc7XHJcbiAgICBkZWZhdWx0QmlsbGluZ0FkZHJlc3NJZDogc3RyaW5nO1xyXG4gICAgYWRkcmVzc2VzVG9EZWxldGVJZHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcclxuICAgIGFkZHJlc3NEZWZhdWx0c1VwZGF0ZWQgPSBmYWxzZTtcclxuICAgIG9yZGVyc1BlclBhZ2UgPSAxMDtcclxuICAgIGN1cnJlbnRPcmRlcnNQYWdlID0gMTtcclxuICAgIHByaXZhdGUgb3JkZXJMaXN0VXBkYXRlcyQgPSBuZXcgU3ViamVjdDxDdXN0b21lcldpdGhPcmRlcnM+KCk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgICAgIHJvdXRlcjogUm91dGVyLFxyXG4gICAgICAgIHNlcnZlckNvbmZpZ1NlcnZpY2U6IFNlcnZlckNvbmZpZ1NlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICAgICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXHJcbiAgICAgICAgcHJvdGVjdGVkIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSxcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKHJvdXRlLCByb3V0ZXIsIHNlcnZlckNvbmZpZ1NlcnZpY2UsIGRhdGFTZXJ2aWNlKTtcclxuXHJcbiAgICAgICAgdGhpcy5jdXN0b21GaWVsZHMgPSB0aGlzLmdldEN1c3RvbUZpZWxkQ29uZmlnKCdDdXN0b21lcicpO1xyXG4gICAgICAgIHRoaXMuYWRkcmVzc0N1c3RvbUZpZWxkcyA9IHRoaXMuZ2V0Q3VzdG9tRmllbGRDb25maWcoJ0FkZHJlc3MnKTtcclxuICAgICAgICB0aGlzLmRldGFpbEZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgICAgICAgY3VzdG9tZXI6IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICAgICAgICAgICAgdGl0bGU6ICcnLFxyXG4gICAgICAgICAgICAgICAgZmlyc3ROYW1lOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgICAgICAgbGFzdE5hbWU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgICAgICBwaG9uZU51bWJlcjogJycsXHJcbiAgICAgICAgICAgICAgICBlbWFpbEFkZHJlc3M6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWxdXSxcclxuICAgICAgICAgICAgICAgIHBhc3N3b3JkOiAnJyxcclxuICAgICAgICAgICAgICAgIGN1c3RvbUZpZWxkczogdGhpcy5mb3JtQnVpbGRlci5ncm91cChcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbUZpZWxkcy5yZWR1Y2UoKGhhc2gsIGZpZWxkKSA9PiAoeyAuLi5oYXNoLCBbZmllbGQubmFtZV06ICcnIH0pLCB7fSksXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgYWRkcmVzc2VzOiBuZXcgRm9ybUFycmF5KFtdKSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLmluaXQoKTtcclxuICAgICAgICB0aGlzLmF2YWlsYWJsZUNvdW50cmllcyQgPSB0aGlzLmRhdGFTZXJ2aWNlLnNldHRpbmdzXHJcbiAgICAgICAgICAgIC5nZXRBdmFpbGFibGVDb3VudHJpZXMoKVxyXG4gICAgICAgICAgICAubWFwU2luZ2xlKHJlc3VsdCA9PiByZXN1bHQuY291bnRyaWVzLml0ZW1zKVxyXG4gICAgICAgICAgICAucGlwZShzaGFyZVJlcGxheSgxKSk7XHJcblxyXG4gICAgICAgIGNvbnN0IGN1c3RvbWVyV2l0aFVwZGF0ZXMkID0gdGhpcy5lbnRpdHkkLnBpcGUobWVyZ2UodGhpcy5vcmRlckxpc3RVcGRhdGVzJCkpO1xyXG4gICAgICAgIHRoaXMub3JkZXJzJCA9IGN1c3RvbWVyV2l0aFVwZGF0ZXMkLnBpcGUobWFwKGN1c3RvbWVyID0+IGN1c3RvbWVyLm9yZGVycy5pdGVtcykpO1xyXG4gICAgICAgIHRoaXMub3JkZXJzQ291bnQkID0gdGhpcy5lbnRpdHkkLnBpcGUobWFwKGN1c3RvbWVyID0+IGN1c3RvbWVyLm9yZGVycy50b3RhbEl0ZW1zKSk7XHJcbiAgICAgICAgdGhpcy5oaXN0b3J5JCA9IHRoaXMuZmV0Y2hIaXN0b3J5LnBpcGUoXHJcbiAgICAgICAgICAgIHN0YXJ0V2l0aChudWxsKSxcclxuICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmN1c3RvbWVyXHJcbiAgICAgICAgICAgICAgICAgICAgLmdldEN1c3RvbWVySGlzdG9yeSh0aGlzLmlkLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWRBdDogU29ydE9yZGVyLkRFU0MsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAubWFwU3RyZWFtKGRhdGEgPT4gZGF0YS5jdXN0b21lcj8uaGlzdG9yeS5pdGVtcyk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgdGhpcy5kZXN0cm95KCk7XHJcbiAgICAgICAgdGhpcy5vcmRlckxpc3RVcGRhdGVzJC5jb21wbGV0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEFkZHJlc3NGb3JtQ29udHJvbHMoKTogRm9ybUNvbnRyb2xbXSB7XHJcbiAgICAgICAgY29uc3QgZm9ybUFycmF5ID0gdGhpcy5kZXRhaWxGb3JtLmdldChbJ2FkZHJlc3NlcyddKSBhcyBGb3JtQXJyYXk7XHJcbiAgICAgICAgcmV0dXJuIGZvcm1BcnJheS5jb250cm9scyBhcyBGb3JtQ29udHJvbFtdO1xyXG4gICAgfVxyXG5cclxuICAgIHNldERlZmF1bHRCaWxsaW5nQWRkcmVzc0lkKGlkOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLmRlZmF1bHRCaWxsaW5nQWRkcmVzc0lkID0gaWQ7XHJcbiAgICAgICAgdGhpcy5hZGRyZXNzRGVmYXVsdHNVcGRhdGVkID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBzZXREZWZhdWx0U2hpcHBpbmdBZGRyZXNzSWQoaWQ6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuZGVmYXVsdFNoaXBwaW5nQWRkcmVzc0lkID0gaWQ7XHJcbiAgICAgICAgdGhpcy5hZGRyZXNzRGVmYXVsdHNVcGRhdGVkID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICB0b2dnbGVEZWxldGVBZGRyZXNzKGlkOiBzdHJpbmcpIHtcclxuICAgICAgICBpZiAodGhpcy5hZGRyZXNzZXNUb0RlbGV0ZUlkcy5oYXMoaWQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkcmVzc2VzVG9EZWxldGVJZHMuZGVsZXRlKGlkKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmFkZHJlc3Nlc1RvRGVsZXRlSWRzLmFkZChpZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFkZEFkZHJlc3MoKSB7XHJcbiAgICAgICAgY29uc3QgYWRkcmVzc0Zvcm1BcnJheSA9IHRoaXMuZGV0YWlsRm9ybS5nZXQoJ2FkZHJlc3NlcycpIGFzIEZvcm1BcnJheTtcclxuICAgICAgICBjb25zdCBuZXdBZGRyZXNzID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgICAgICAgIGZ1bGxOYW1lOiAnJyxcclxuICAgICAgICAgICAgY29tcGFueTogJycsXHJcbiAgICAgICAgICAgIHN0cmVldExpbmUxOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgICBzdHJlZXRMaW5lMjogJycsXHJcbiAgICAgICAgICAgIGNpdHk6ICcnLFxyXG4gICAgICAgICAgICBwcm92aW5jZTogJycsXHJcbiAgICAgICAgICAgIHBvc3RhbENvZGU6ICcnLFxyXG4gICAgICAgICAgICBjb3VudHJ5Q29kZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgcGhvbmVOdW1iZXI6ICcnLFxyXG4gICAgICAgICAgICBkZWZhdWx0U2hpcHBpbmdBZGRyZXNzOiBmYWxzZSxcclxuICAgICAgICAgICAgZGVmYXVsdEJpbGxpbmdBZGRyZXNzOiBmYWxzZSxcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAodGhpcy5hZGRyZXNzQ3VzdG9tRmllbGRzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBjb25zdCBjdXN0b21GaWVsZHNHcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe30pO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZpZWxkRGVmIG9mIHRoaXMuYWRkcmVzc0N1c3RvbUZpZWxkcykge1xyXG4gICAgICAgICAgICAgICAgY3VzdG9tRmllbGRzR3JvdXAuYWRkQ29udHJvbChmaWVsZERlZi5uYW1lLCBuZXcgRm9ybUNvbnRyb2woJycpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBuZXdBZGRyZXNzLmFkZENvbnRyb2woJ2N1c3RvbUZpZWxkcycsIGN1c3RvbUZpZWxkc0dyb3VwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYWRkcmVzc0Zvcm1BcnJheS5wdXNoKG5ld0FkZHJlc3MpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldE9yZGVySXRlbXNQZXJQYWdlKGl0ZW1zUGVyUGFnZTogbnVtYmVyKSB7XHJcbiAgICAgICAgdGhpcy5vcmRlcnNQZXJQYWdlID0gK2l0ZW1zUGVyUGFnZTtcclxuICAgICAgICB0aGlzLmZldGNoT3JkZXJzTGlzdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldE9yZGVyQ3VycmVudFBhZ2UocGFnZTogbnVtYmVyKSB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50T3JkZXJzUGFnZSA9ICtwYWdlO1xyXG4gICAgICAgIHRoaXMuZmV0Y2hPcmRlcnNMaXN0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlKCkge1xyXG4gICAgICAgIGNvbnN0IGN1c3RvbWVyRm9ybSA9IHRoaXMuZGV0YWlsRm9ybS5nZXQoJ2N1c3RvbWVyJyk7XHJcbiAgICAgICAgaWYgKCFjdXN0b21lckZvcm0pIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBmb3JtVmFsdWUgPSBjdXN0b21lckZvcm0udmFsdWU7XHJcbiAgICAgICAgY29uc3QgY3VzdG9tRmllbGRzID0gY3VzdG9tZXJGb3JtLmdldCgnY3VzdG9tRmllbGRzJyk/LnZhbHVlO1xyXG4gICAgICAgIGNvbnN0IGN1c3RvbWVyOiBDcmVhdGVDdXN0b21lcklucHV0ID0ge1xyXG4gICAgICAgICAgICB0aXRsZTogZm9ybVZhbHVlLnRpdGxlLFxyXG4gICAgICAgICAgICBlbWFpbEFkZHJlc3M6IGZvcm1WYWx1ZS5lbWFpbEFkZHJlc3MsXHJcbiAgICAgICAgICAgIGZpcnN0TmFtZTogZm9ybVZhbHVlLmZpcnN0TmFtZSxcclxuICAgICAgICAgICAgbGFzdE5hbWU6IGZvcm1WYWx1ZS5sYXN0TmFtZSxcclxuICAgICAgICAgICAgcGhvbmVOdW1iZXI6IGZvcm1WYWx1ZS5waG9uZU51bWJlcixcclxuICAgICAgICAgICAgY3VzdG9tRmllbGRzLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5kYXRhU2VydmljZS5jdXN0b21lclxyXG4gICAgICAgICAgICAuY3JlYXRlQ3VzdG9tZXIoY3VzdG9tZXIsIGZvcm1WYWx1ZS5wYXNzd29yZClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoeyBjcmVhdGVDdXN0b21lciB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGNyZWF0ZUN1c3RvbWVyLl9fdHlwZW5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlICdDdXN0b21lcic6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKF8oJ2NvbW1vbi5ub3RpZnktY3JlYXRlLXN1Y2Nlc3MnKSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5OiAnQ3VzdG9tZXInLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNyZWF0ZUN1c3RvbWVyLmVtYWlsQWRkcmVzcyAmJiAhZm9ybVZhbHVlLnBhc3N3b3JkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uubm90aWZ5KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBfKCdjdXN0b21lci5lbWFpbC12ZXJpZmljYXRpb24tc2VudCcpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uVmFyczogeyBlbWFpbEFkZHJlc3M6IGZvcm1WYWx1ZS5lbWFpbEFkZHJlc3MgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnaW5mbycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IDEwMDAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXRhaWxGb3JtLm1hcmtBc1ByaXN0aW5lKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkcmVzc0RlZmF1bHRzVXBkYXRlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uLycsIGNyZWF0ZUN1c3RvbWVyLmlkXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlICdFbWFpbEFkZHJlc3NDb25mbGljdEVycm9yJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKGNyZWF0ZUN1c3RvbWVyLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzYXZlKCkge1xyXG4gICAgICAgIHRoaXMuZW50aXR5JFxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHRha2UoMSksXHJcbiAgICAgICAgICAgICAgICBtZXJnZU1hcCgoeyBpZCB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2F2ZU9wZXJhdGlvbnM6IEFycmF5PFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBPYnNlcnZhYmxlPFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBVcGRhdGVDdXN0b21lci5VcGRhdGVDdXN0b21lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDcmVhdGVDdXN0b21lckFkZHJlc3MuQ3JlYXRlQ3VzdG9tZXJBZGRyZXNzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFVwZGF0ZUN1c3RvbWVyQWRkcmVzcy5VcGRhdGVDdXN0b21lckFkZHJlc3NcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVsZXRlQ3VzdG9tZXJBZGRyZXNzLkRlbGV0ZUN1c3RvbWVyQWRkcmVzc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPiA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1c3RvbWVyRm9ybSA9IHRoaXMuZGV0YWlsRm9ybS5nZXQoJ2N1c3RvbWVyJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1c3RvbWVyRm9ybSAmJiBjdXN0b21lckZvcm0uZGlydHkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZm9ybVZhbHVlID0gY3VzdG9tZXJGb3JtLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXN0b21GaWVsZHMgPSBjdXN0b21lckZvcm0uZ2V0KCdjdXN0b21GaWVsZHMnKT8udmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1c3RvbWVyOiBVcGRhdGVDdXN0b21lcklucHV0ID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogZm9ybVZhbHVlLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1haWxBZGRyZXNzOiBmb3JtVmFsdWUuZW1haWxBZGRyZXNzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3ROYW1lOiBmb3JtVmFsdWUuZmlyc3ROYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdE5hbWU6IGZvcm1WYWx1ZS5sYXN0TmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBob25lTnVtYmVyOiBmb3JtVmFsdWUucGhvbmVOdW1iZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21GaWVsZHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVPcGVyYXRpb25zLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLmN1c3RvbWVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnVwZGF0ZUN1c3RvbWVyKGN1c3RvbWVyKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKG1hcChyZXMgPT4gcmVzLnVwZGF0ZUN1c3RvbWVyKSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFkZHJlc3NGb3JtQXJyYXkgPSB0aGlzLmRldGFpbEZvcm0uZ2V0KCdhZGRyZXNzZXMnKSBhcyBGb3JtQXJyYXk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChhZGRyZXNzRm9ybUFycmF5ICYmIGFkZHJlc3NGb3JtQXJyYXkuZGlydHkpIHx8IHRoaXMuYWRkcmVzc0RlZmF1bHRzVXBkYXRlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGFkZHJlc3NDb250cm9sIG9mIGFkZHJlc3NGb3JtQXJyYXkuY29udHJvbHMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhZGRyZXNzQ29udHJvbC5kaXJ0eSB8fCB0aGlzLmFkZHJlc3NEZWZhdWx0c1VwZGF0ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhZGRyZXNzID0gYWRkcmVzc0NvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5wdXQ6IENyZWF0ZUFkZHJlc3NJbnB1dCA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbE5hbWU6IGFkZHJlc3MuZnVsbE5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhbnk6IGFkZHJlc3MuY29tcGFueSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWV0TGluZTE6IGFkZHJlc3Muc3RyZWV0TGluZTEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVldExpbmUyOiBhZGRyZXNzLnN0cmVldExpbmUyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaXR5OiBhZGRyZXNzLmNpdHksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpbmNlOiBhZGRyZXNzLnByb3ZpbmNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3N0YWxDb2RlOiBhZGRyZXNzLnBvc3RhbENvZGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnlDb2RlOiBhZGRyZXNzLmNvdW50cnlDb2RlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaG9uZU51bWJlcjogYWRkcmVzcy5waG9uZU51bWJlcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFNoaXBwaW5nQWRkcmVzczogdGhpcy5kZWZhdWx0U2hpcHBpbmdBZGRyZXNzSWQgPT09IGFkZHJlc3MuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRCaWxsaW5nQWRkcmVzczogdGhpcy5kZWZhdWx0QmlsbGluZ0FkZHJlc3NJZCA9PT0gYWRkcmVzcy5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tRmllbGRzOiBhZGRyZXNzLmN1c3RvbUZpZWxkcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYWRkcmVzcy5pZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlT3BlcmF0aW9ucy5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhU2VydmljZS5jdXN0b21lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jcmVhdGVDdXN0b21lckFkZHJlc3MoaWQsIGlucHV0KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKG1hcChyZXMgPT4gcmVzLmNyZWF0ZUN1c3RvbWVyQWRkcmVzcykpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmFkZHJlc3Nlc1RvRGVsZXRlSWRzLmhhcyhhZGRyZXNzLmlkKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZU9wZXJhdGlvbnMucHVzaChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLmN1c3RvbWVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5kZWxldGVDdXN0b21lckFkZHJlc3MoYWRkcmVzcy5pZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUobWFwKHJlcyA9PiByZXMuZGVsZXRlQ3VzdG9tZXJBZGRyZXNzKSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZU9wZXJhdGlvbnMucHVzaChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLmN1c3RvbWVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC51cGRhdGVDdXN0b21lckFkZHJlc3Moe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uaW5wdXQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogYWRkcmVzcy5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUobWFwKHJlcyA9PiByZXMudXBkYXRlQ3VzdG9tZXJBZGRyZXNzKSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmb3JrSm9pbihzYXZlT3BlcmF0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgZGF0YSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG5vdGlmaWVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCByZXN1bHQgb2YgZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHJlc3VsdC5fX3R5cGVuYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdDdXN0b21lcic6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdBZGRyZXNzJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1N1Y2Nlc3MnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbm90aWZpZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoXygnY29tbW9uLm5vdGlmeS11cGRhdGUtc3VjY2VzcycpLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHk6ICdDdXN0b21lcicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3RpZmllZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGV0YWlsRm9ybS5tYXJrQXNQcmlzdGluZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZHJlc3NEZWZhdWx0c1VwZGF0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mZXRjaEhpc3RvcnkubmV4dCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLmN1c3RvbWVyLmdldEN1c3RvbWVyKHRoaXMuaWQpLnNpbmdsZSQuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnRW1haWxBZGRyZXNzQ29uZmxpY3RFcnJvcic6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKHJlc3VsdC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihfKCdjb21tb24ubm90aWZ5LXVwZGF0ZS1lcnJvcicpLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eTogJ0N1c3RvbWVyJyxcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkVG9Hcm91cCgpIHtcclxuICAgICAgICB0aGlzLm1vZGFsU2VydmljZVxyXG4gICAgICAgICAgICAuZnJvbUNvbXBvbmVudChTZWxlY3RDdXN0b21lckdyb3VwRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgICAgICBzaXplOiAnbWQnLFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChncm91cElkcyA9PiAoZ3JvdXBJZHMgPyBmcm9tKGdyb3VwSWRzKSA6IEVNUFRZKSksXHJcbiAgICAgICAgICAgICAgICBjb25jYXRNYXAoZ3JvdXBJZCA9PiB0aGlzLmRhdGFTZXJ2aWNlLmN1c3RvbWVyLmFkZEN1c3RvbWVyc1RvR3JvdXAoZ3JvdXBJZCwgW3RoaXMuaWRdKSksXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICBuZXh0OiByZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKF8oYGN1c3RvbWVyLmFkZC1jdXN0b21lcnMtdG8tZ3JvdXAtc3VjY2Vzc2ApLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbWVyQ291bnQ6IDEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwTmFtZTogcmVzLmFkZEN1c3RvbWVyc1RvR3JvdXAubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuY3VzdG9tZXIuZ2V0Q3VzdG9tZXIodGhpcy5pZCwgeyB0YWtlOiAwIH0pLnNpbmdsZSQuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mZXRjaEhpc3RvcnkubmV4dCgpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlRnJvbUdyb3VwKGdyb3VwOiBHZXRDdXN0b21lci5Hcm91cHMpIHtcclxuICAgICAgICB0aGlzLm1vZGFsU2VydmljZVxyXG4gICAgICAgICAgICAuZGlhbG9nKHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBfKCdjdXN0b21lci5jb25maXJtLXJlbW92ZS1jdXN0b21lci1mcm9tLWdyb3VwJyksXHJcbiAgICAgICAgICAgICAgICBidXR0b25zOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAnc2Vjb25kYXJ5JywgbGFiZWw6IF8oJ2NvbW1vbi5jYW5jZWwnKSB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgdHlwZTogJ2RhbmdlcicsIGxhYmVsOiBfKCdjb21tb24uZGVsZXRlJyksIHJldHVyblZhbHVlOiB0cnVlIH0sXHJcbiAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChyZXNwb25zZSA9PlxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5kYXRhU2VydmljZS5jdXN0b21lci5yZW1vdmVDdXN0b21lcnNGcm9tR3JvdXAoZ3JvdXAuaWQsIFt0aGlzLmlkXSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiBFTVBUWSxcclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5kYXRhU2VydmljZS5jdXN0b21lci5nZXRDdXN0b21lcih0aGlzLmlkLCB7IHRha2U6IDAgfSkuc2luZ2xlJCksXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoXyhgY3VzdG9tZXIucmVtb3ZlLWN1c3RvbWVycy1mcm9tLWdyb3VwLXN1Y2Nlc3NgKSwge1xyXG4gICAgICAgICAgICAgICAgICAgIGN1c3RvbWVyQ291bnQ6IDEsXHJcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBOYW1lOiBncm91cC5uYW1lLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZldGNoSGlzdG9yeS5uZXh0KCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZE5vdGVUb0N1c3RvbWVyKHsgbm90ZSB9OiB7IG5vdGU6IHN0cmluZyB9KSB7XHJcbiAgICAgICAgdGhpcy5kYXRhU2VydmljZS5jdXN0b21lci5hZGROb3RlVG9DdXN0b21lcih0aGlzLmlkLCBub3RlKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmZldGNoSGlzdG9yeS5uZXh0KCk7XHJcbiAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKF8oJ2NvbW1vbi5ub3RpZnktY3JlYXRlLXN1Y2Nlc3MnKSwge1xyXG4gICAgICAgICAgICAgICAgZW50aXR5OiAnTm90ZScsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZU5vdGUoZW50cnk6IFRpbWVsaW5lSGlzdG9yeUVudHJ5KSB7XHJcbiAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2VcclxuICAgICAgICAgICAgLmZyb21Db21wb25lbnQoRWRpdE5vdGVEaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgICAgIGNsb3NhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgbG9jYWxzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheVByaXZhY3lDb250cm9sczogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogZW50cnkuZGF0YS5ub3RlLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmN1c3RvbWVyLnVwZGF0ZUN1c3RvbWVyTm90ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3RlSWQ6IGVudHJ5LmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogcmVzdWx0Lm5vdGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFTVBUWTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZldGNoSGlzdG9yeS5uZXh0KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhfKCdjb21tb24ubm90aWZ5LXVwZGF0ZS1zdWNjZXNzJyksIHtcclxuICAgICAgICAgICAgICAgICAgICBlbnRpdHk6ICdOb3RlJyxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBkZWxldGVOb3RlKGVudHJ5OiBUaW1lbGluZUhpc3RvcnlFbnRyeSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1vZGFsU2VydmljZVxyXG4gICAgICAgICAgICAuZGlhbG9nKHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBfKCdjb21tb24uY29uZmlybS1kZWxldGUtbm90ZScpLFxyXG4gICAgICAgICAgICAgICAgYm9keTogZW50cnkuZGF0YS5ub3RlLFxyXG4gICAgICAgICAgICAgICAgYnV0dG9uczogW1xyXG4gICAgICAgICAgICAgICAgICAgIHsgdHlwZTogJ3NlY29uZGFyeScsIGxhYmVsOiBfKCdjb21tb24uY2FuY2VsJykgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICdkYW5nZXInLCBsYWJlbDogXygnY29tbW9uLmRlbGV0ZScpLCByZXR1cm5WYWx1ZTogdHJ1ZSB9LFxyXG4gICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnBpcGUoc3dpdGNoTWFwKHJlcyA9PiAocmVzID8gdGhpcy5kYXRhU2VydmljZS5jdXN0b21lci5kZWxldGVDdXN0b21lck5vdGUoZW50cnkuaWQpIDogRU1QVFkpKSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZldGNoSGlzdG9yeS5uZXh0KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhfKCdjb21tb24ubm90aWZ5LWRlbGV0ZS1zdWNjZXNzJyksIHtcclxuICAgICAgICAgICAgICAgICAgICBlbnRpdHk6ICdOb3RlJyxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgc2V0Rm9ybVZhbHVlcyhlbnRpdHk6IEN1c3RvbWVyV2l0aE9yZGVycyk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGN1c3RvbWVyR3JvdXAgPSB0aGlzLmRldGFpbEZvcm0uZ2V0KCdjdXN0b21lcicpO1xyXG4gICAgICAgIGlmIChjdXN0b21lckdyb3VwKSB7XHJcbiAgICAgICAgICAgIGN1c3RvbWVyR3JvdXAucGF0Y2hWYWx1ZSh7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogZW50aXR5LnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgZmlyc3ROYW1lOiBlbnRpdHkuZmlyc3ROYW1lLFxyXG4gICAgICAgICAgICAgICAgbGFzdE5hbWU6IGVudGl0eS5sYXN0TmFtZSxcclxuICAgICAgICAgICAgICAgIHBob25lTnVtYmVyOiBlbnRpdHkucGhvbmVOdW1iZXIsXHJcbiAgICAgICAgICAgICAgICBlbWFpbEFkZHJlc3M6IGVudGl0eS5lbWFpbEFkZHJlc3MsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGVudGl0eS5hZGRyZXNzZXMpIHtcclxuICAgICAgICAgICAgY29uc3QgYWRkcmVzc2VzQXJyYXkgPSBuZXcgRm9ybUFycmF5KFtdKTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBhZGRyZXNzIG9mIGVudGl0eS5hZGRyZXNzZXMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgY3VzdG9tRmllbGRzLCAuLi5yZXN0IH0gPSBhZGRyZXNzIGFzIGFueTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFkZHJlc3NHcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnJlc3QsXHJcbiAgICAgICAgICAgICAgICAgICAgY291bnRyeUNvZGU6IGFkZHJlc3MuY291bnRyeS5jb2RlLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBhZGRyZXNzZXNBcnJheS5wdXNoKGFkZHJlc3NHcm91cCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoYWRkcmVzcy5kZWZhdWx0U2hpcHBpbmdBZGRyZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0U2hpcHBpbmdBZGRyZXNzSWQgPSBhZGRyZXNzLmlkO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGFkZHJlc3MuZGVmYXVsdEJpbGxpbmdBZGRyZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0QmlsbGluZ0FkZHJlc3NJZCA9IGFkZHJlc3MuaWQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYWRkcmVzc0N1c3RvbUZpZWxkcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXN0b21GaWVsZHNHcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe30pO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZmllbGREZWYgb2YgdGhpcy5hZGRyZXNzQ3VzdG9tRmllbGRzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGZpZWxkRGVmLm5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gKGFkZHJlc3MgYXMgYW55KS5jdXN0b21GaWVsZHM/LltrZXldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250cm9sID0gbmV3IEZvcm1Db250cm9sKHZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tRmllbGRzR3JvdXAuYWRkQ29udHJvbChrZXksIGNvbnRyb2wpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBhZGRyZXNzR3JvdXAuYWRkQ29udHJvbCgnY3VzdG9tRmllbGRzJywgY3VzdG9tRmllbGRzR3JvdXApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuZGV0YWlsRm9ybS5zZXRDb250cm9sKCdhZGRyZXNzZXMnLCBhZGRyZXNzZXNBcnJheSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5jdXN0b21GaWVsZHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0Q3VzdG9tRmllbGRGb3JtVmFsdWVzKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21GaWVsZHMsXHJcbiAgICAgICAgICAgICAgICB0aGlzLmRldGFpbEZvcm0uZ2V0KFsnY3VzdG9tZXInLCAnY3VzdG9tRmllbGRzJ10pLFxyXG4gICAgICAgICAgICAgICAgZW50aXR5LFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVmZXRjaCB0aGUgY3VzdG9tZXIgd2l0aCB0aGUgY3VycmVudCBvcmRlciBsaXN0IHNldHRpbmdzLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGZldGNoT3JkZXJzTGlzdCgpIHtcclxuICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLmN1c3RvbWVyXHJcbiAgICAgICAgICAgIC5nZXRDdXN0b21lcih0aGlzLmlkLCB7XHJcbiAgICAgICAgICAgICAgICB0YWtlOiB0aGlzLm9yZGVyc1BlclBhZ2UsXHJcbiAgICAgICAgICAgICAgICBza2lwOiAodGhpcy5jdXJyZW50T3JkZXJzUGFnZSAtIDEpICogdGhpcy5vcmRlcnNQZXJQYWdlLFxyXG4gICAgICAgICAgICAgICAgc29ydDogeyBvcmRlclBsYWNlZEF0OiBTb3J0T3JkZXIuREVTQyB9LFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuc2luZ2xlJC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKGRhdGEgPT4gZGF0YS5jdXN0b21lciksXHJcbiAgICAgICAgICAgICAgICBmaWx0ZXIobm90TnVsbE9yVW5kZWZpbmVkKSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB0aGlzLm9yZGVyTGlzdFVwZGF0ZXMkLm5leHQocmVzdWx0KSk7XHJcbiAgICB9XHJcbn1cclxuIl19