@skyux/data-manager 7.0.0-beta.12 → 7.0.0-beta.13

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 (25) hide show
  1. package/documentation.json +473 -584
  2. package/esm2020/lib/modules/data-manager/data-manager-column-picker/data-manager-column-picker.component.mjs +51 -45
  3. package/esm2020/lib/modules/data-manager/data-manager-filter-context.mjs +2 -1
  4. package/esm2020/lib/modules/data-manager/data-manager-toolbar/data-manager-toolbar.component.mjs +95 -76
  5. package/esm2020/lib/modules/data-manager/data-manager.component.mjs +39 -31
  6. package/esm2020/lib/modules/data-manager/data-manager.service.mjs +66 -61
  7. package/esm2020/lib/modules/data-manager/data-view.component.mjs +18 -21
  8. package/esm2020/lib/modules/data-manager/models/data-manager-config.mjs +1 -1
  9. package/esm2020/lib/modules/data-manager/models/data-manager-filter-data.mjs +1 -1
  10. package/esm2020/lib/modules/data-manager/models/data-manager-state-options.mjs +1 -1
  11. package/esm2020/lib/modules/data-manager/models/data-manager-state.mjs +1 -1
  12. package/esm2020/lib/modules/data-manager/models/data-view-state-options.mjs +1 -1
  13. package/esm2020/lib/modules/data-manager/models/data-view-state.mjs +1 -1
  14. package/fesm2015/skyux-data-manager.mjs +265 -228
  15. package/fesm2015/skyux-data-manager.mjs.map +1 -1
  16. package/fesm2020/skyux-data-manager.mjs +259 -227
  17. package/fesm2020/skyux-data-manager.mjs.map +1 -1
  18. package/lib/modules/data-manager/data-manager-column-picker/data-manager-column-picker.component.d.ts +1 -3
  19. package/lib/modules/data-manager/data-manager-filter-context.d.ts +1 -1
  20. package/lib/modules/data-manager/data-manager-toolbar/data-manager-toolbar.component.d.ts +8 -18
  21. package/lib/modules/data-manager/data-manager.component.d.ts +2 -9
  22. package/lib/modules/data-manager/data-manager.service.d.ts +3 -14
  23. package/lib/modules/data-manager/data-view.component.d.ts +6 -10
  24. package/lib/modules/data-manager/models/data-manager-state.d.ts +6 -6
  25. package/package.json +9 -9
@@ -1,5 +1,7 @@
1
+ var _SkyDataManagerToolbarComponent_ngUnsubscribe, _SkyDataManagerToolbarComponent_changeDetector, _SkyDataManagerToolbarComponent_dataManagerService, _SkyDataManagerToolbarComponent_modalService, _SkyDataManagerToolbarComponent_columnPickerService, _SkyDataManagerToolbarComponent__source, _SkyDataManagerToolbarComponent__activeView, _SkyDataManagerToolbarComponent__dataManagerConfig, _SkyDataManagerToolbarComponent__dataState, _SkyDataManagerToolbarComponent__views;
2
+ import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
1
3
  import { ChangeDetectionStrategy, ChangeDetectorRef, Component, } from '@angular/core';
2
- import { SkyModalService } from '@skyux/modals';
4
+ import { SkyModalService, } from '@skyux/modals';
3
5
  import { Subject } from 'rxjs';
4
6
  import { takeUntil } from 'rxjs/operators';
5
7
  import { SkyDataManagerColumnPickerContext } from '../data-manager-column-picker/data-manager-column-picker-context';
@@ -25,102 +27,111 @@ import * as i11 from "@skyux/i18n";
25
27
  */
26
28
  export class SkyDataManagerToolbarComponent {
27
29
  constructor(changeDetector, dataManagerService, modalService, columnPickerService) {
28
- this.changeDetector = changeDetector;
29
- this.dataManagerService = dataManagerService;
30
- this.modalService = modalService;
31
- this.columnPickerService = columnPickerService;
30
+ _SkyDataManagerToolbarComponent_ngUnsubscribe.set(this, new Subject());
31
+ _SkyDataManagerToolbarComponent_changeDetector.set(this, void 0);
32
+ _SkyDataManagerToolbarComponent_dataManagerService.set(this, void 0);
33
+ _SkyDataManagerToolbarComponent_modalService.set(this, void 0);
34
+ _SkyDataManagerToolbarComponent_columnPickerService.set(this, void 0);
32
35
  // the source to provide for data state changes
33
- this._source = 'toolbar';
34
- this._ngUnsubscribe = new Subject();
35
- this._views = [];
36
- }
37
- get activeSortOptionId() {
38
- const activeSortOption = this.dataState && this.dataState.activeSortOption;
39
- return activeSortOption && activeSortOption.id;
36
+ _SkyDataManagerToolbarComponent__source.set(this, 'toolbar');
37
+ _SkyDataManagerToolbarComponent__activeView.set(this, void 0);
38
+ _SkyDataManagerToolbarComponent__dataManagerConfig.set(this, void 0);
39
+ _SkyDataManagerToolbarComponent__dataState.set(this, void 0);
40
+ _SkyDataManagerToolbarComponent__views.set(this, []);
41
+ __classPrivateFieldSet(this, _SkyDataManagerToolbarComponent_changeDetector, changeDetector, "f");
42
+ __classPrivateFieldSet(this, _SkyDataManagerToolbarComponent_dataManagerService, dataManagerService, "f");
43
+ __classPrivateFieldSet(this, _SkyDataManagerToolbarComponent_modalService, modalService, "f");
44
+ __classPrivateFieldSet(this, _SkyDataManagerToolbarComponent_columnPickerService, columnPickerService, "f");
40
45
  }
41
46
  get activeView() {
42
- return this._activeView;
47
+ return __classPrivateFieldGet(this, _SkyDataManagerToolbarComponent__activeView, "f");
43
48
  }
44
49
  set activeView(value) {
45
- this._activeView = value;
46
- this.changeDetector.markForCheck();
50
+ __classPrivateFieldSet(this, _SkyDataManagerToolbarComponent__activeView, value, "f");
51
+ __classPrivateFieldGet(this, _SkyDataManagerToolbarComponent_changeDetector, "f").markForCheck();
47
52
  }
48
53
  get dataManagerConfig() {
49
- return this._dataManagerConfig;
54
+ return __classPrivateFieldGet(this, _SkyDataManagerToolbarComponent__dataManagerConfig, "f");
50
55
  }
51
56
  set dataManagerConfig(value) {
52
- this._dataManagerConfig = value;
53
- this.changeDetector.markForCheck();
57
+ __classPrivateFieldSet(this, _SkyDataManagerToolbarComponent__dataManagerConfig, value, "f");
58
+ __classPrivateFieldGet(this, _SkyDataManagerToolbarComponent_changeDetector, "f").markForCheck();
54
59
  }
55
60
  get dataState() {
56
- return this._dataState;
61
+ return __classPrivateFieldGet(this, _SkyDataManagerToolbarComponent__dataState, "f");
57
62
  }
58
63
  set dataState(value) {
59
- this._dataState = value;
60
- this.dataManagerService.updateDataState(value, this._source);
64
+ __classPrivateFieldSet(this, _SkyDataManagerToolbarComponent__dataState, value, "f");
65
+ if (value) {
66
+ __classPrivateFieldGet(this, _SkyDataManagerToolbarComponent_dataManagerService, "f").updateDataState(value, __classPrivateFieldGet(this, _SkyDataManagerToolbarComponent__source, "f"));
67
+ }
61
68
  }
62
69
  get views() {
63
- return this._views;
70
+ return __classPrivateFieldGet(this, _SkyDataManagerToolbarComponent__views, "f");
64
71
  }
65
72
  set views(value) {
66
- this._views = value;
67
- this.changeDetector.markForCheck();
73
+ __classPrivateFieldSet(this, _SkyDataManagerToolbarComponent__views, value, "f");
74
+ __classPrivateFieldGet(this, _SkyDataManagerToolbarComponent_changeDetector, "f").markForCheck();
68
75
  }
69
76
  ngOnInit() {
70
- this.dataManagerService
77
+ __classPrivateFieldGet(this, _SkyDataManagerToolbarComponent_dataManagerService, "f")
71
78
  .getActiveViewIdUpdates()
72
- .pipe(takeUntil(this._ngUnsubscribe))
79
+ .pipe(takeUntil(__classPrivateFieldGet(this, _SkyDataManagerToolbarComponent_ngUnsubscribe, "f")))
73
80
  .subscribe((activeViewId) => {
74
81
  /* istanbul ignore else */
75
82
  if (activeViewId) {
76
- this.activeView = this.dataManagerService.getViewById(activeViewId);
77
- this.changeDetector.markForCheck();
83
+ this.activeView = __classPrivateFieldGet(this, _SkyDataManagerToolbarComponent_dataManagerService, "f").getViewById(activeViewId);
84
+ __classPrivateFieldGet(this, _SkyDataManagerToolbarComponent_changeDetector, "f").markForCheck();
78
85
  }
79
86
  });
80
- this.dataManagerService
87
+ __classPrivateFieldGet(this, _SkyDataManagerToolbarComponent_dataManagerService, "f")
81
88
  .getDataViewsUpdates()
82
- .pipe(takeUntil(this._ngUnsubscribe))
89
+ .pipe(takeUntil(__classPrivateFieldGet(this, _SkyDataManagerToolbarComponent_ngUnsubscribe, "f")))
83
90
  .subscribe((views) => {
84
91
  this.views = views;
85
92
  if (this.activeView) {
86
- this.activeView = this.dataManagerService.getViewById(this.activeView.id);
93
+ this.activeView = __classPrivateFieldGet(this, _SkyDataManagerToolbarComponent_dataManagerService, "f").getViewById(this.activeView.id);
87
94
  }
88
- this.changeDetector.markForCheck();
95
+ __classPrivateFieldGet(this, _SkyDataManagerToolbarComponent_changeDetector, "f").markForCheck();
89
96
  });
90
- this.dataManagerService
91
- .getDataStateUpdates(this._source)
92
- .pipe(takeUntil(this._ngUnsubscribe))
97
+ __classPrivateFieldGet(this, _SkyDataManagerToolbarComponent_dataManagerService, "f")
98
+ .getDataStateUpdates(__classPrivateFieldGet(this, _SkyDataManagerToolbarComponent__source, "f"))
99
+ .pipe(takeUntil(__classPrivateFieldGet(this, _SkyDataManagerToolbarComponent_ngUnsubscribe, "f")))
93
100
  .subscribe((dataState) => {
94
- this._dataState = dataState;
101
+ __classPrivateFieldSet(this, _SkyDataManagerToolbarComponent__dataState, dataState, "f");
95
102
  this.onlyShowSelected = dataState.onlyShowSelected;
96
- this.changeDetector.markForCheck();
103
+ __classPrivateFieldGet(this, _SkyDataManagerToolbarComponent_changeDetector, "f").markForCheck();
97
104
  });
98
- this.dataManagerService
105
+ __classPrivateFieldGet(this, _SkyDataManagerToolbarComponent_dataManagerService, "f")
99
106
  .getDataManagerConfigUpdates()
100
- .pipe(takeUntil(this._ngUnsubscribe))
107
+ .pipe(takeUntil(__classPrivateFieldGet(this, _SkyDataManagerToolbarComponent_ngUnsubscribe, "f")))
101
108
  .subscribe((config) => {
102
109
  this.dataManagerConfig = config;
103
110
  });
104
111
  }
105
112
  ngOnDestroy() {
106
- this._ngUnsubscribe.next();
107
- this._ngUnsubscribe.complete();
113
+ __classPrivateFieldGet(this, _SkyDataManagerToolbarComponent_ngUnsubscribe, "f").next();
114
+ __classPrivateFieldGet(this, _SkyDataManagerToolbarComponent_ngUnsubscribe, "f").complete();
108
115
  }
109
116
  sortSelected(sortOption) {
110
- this.dataState.activeSortOption = sortOption;
111
- this.dataManagerService.updateDataState(this.dataState, this._source);
117
+ if (this.dataState) {
118
+ this.dataState.activeSortOption = sortOption;
119
+ __classPrivateFieldGet(this, _SkyDataManagerToolbarComponent_dataManagerService, "f").updateDataState(this.dataState, __classPrivateFieldGet(this, _SkyDataManagerToolbarComponent__source, "f"));
120
+ }
112
121
  }
113
122
  onViewChange(viewId) {
114
- this.dataManagerService.updateActiveViewId(viewId);
123
+ __classPrivateFieldGet(this, _SkyDataManagerToolbarComponent_dataManagerService, "f").updateActiveViewId(viewId);
115
124
  }
116
125
  searchApplied(text) {
117
- this.dataState.searchText = text;
118
- this.dataManagerService.updateDataState(this.dataState, this._source);
126
+ if (this.dataState) {
127
+ this.dataState.searchText = text;
128
+ __classPrivateFieldGet(this, _SkyDataManagerToolbarComponent_dataManagerService, "f").updateDataState(this.dataState, __classPrivateFieldGet(this, _SkyDataManagerToolbarComponent__source, "f"));
129
+ }
119
130
  }
120
131
  filterButtonClicked() {
121
132
  const context = new SkyDataManagerFilterModalContext();
122
133
  const filterModal = this.dataManagerConfig && this.dataManagerConfig.filterModalComponent;
123
- context.filterData = this.dataState && this.dataState.filterData;
134
+ context.filterData = this.dataState?.filterData;
124
135
  const options = {
125
136
  providers: [
126
137
  { provide: SkyDataManagerFilterModalContext, useValue: context },
@@ -128,58 +139,66 @@ export class SkyDataManagerToolbarComponent {
128
139
  size: 'large',
129
140
  };
130
141
  if (filterModal) {
131
- const modalInstance = this.modalService.open(filterModal, options);
142
+ const modalInstance = __classPrivateFieldGet(this, _SkyDataManagerToolbarComponent_modalService, "f").open(filterModal, options);
132
143
  modalInstance.closed.subscribe((result) => {
133
- if (result.reason === 'save') {
144
+ if (this.dataState && result.reason === 'save') {
134
145
  this.dataState.filterData = result.data;
135
- this.dataManagerService.updateDataState(this.dataState, this._source);
146
+ __classPrivateFieldGet(this, _SkyDataManagerToolbarComponent_dataManagerService, "f").updateDataState(this.dataState, __classPrivateFieldGet(this, _SkyDataManagerToolbarComponent__source, "f"));
136
147
  }
137
148
  });
138
149
  }
139
150
  }
140
151
  openColumnPicker() {
141
- const columnOptions = this.activeView && this.activeView.columnOptions;
142
- const viewState = this.dataState.getViewStateById(this.activeView.id);
143
- const context = new SkyDataManagerColumnPickerContext(columnOptions, viewState.displayedColumnIds);
144
- if (this.activeView.columnPickerSortStrategy) {
145
- context.columnPickerSortStrategy =
146
- this.activeView.columnPickerSortStrategy;
147
- }
148
- const options = {
149
- providers: [
150
- { provide: SkyDataManagerColumnPickerContext, useValue: context },
151
- ],
152
- };
153
- const modalInstance = this.modalService.open(this.columnPickerService.getComponentType(), options);
154
- modalInstance.closed.subscribe((result) => {
155
- if (result.reason === 'save') {
156
- const displayedColumnIds = result.data.map((col) => col.id);
157
- viewState.displayedColumnIds = displayedColumnIds;
158
- this.dataState = this.dataState.addOrUpdateView(this.activeView.id, viewState);
152
+ if (this.dataState && this.activeView && this.activeView.columnOptions) {
153
+ const viewState = this.dataState.getViewStateById(this.activeView.id);
154
+ if (viewState) {
155
+ const context = new SkyDataManagerColumnPickerContext(this.activeView.columnOptions, viewState.displayedColumnIds);
156
+ if (this.activeView.columnPickerSortStrategy) {
157
+ context.columnPickerSortStrategy =
158
+ this.activeView.columnPickerSortStrategy;
159
+ }
160
+ const options = {
161
+ providers: [
162
+ { provide: SkyDataManagerColumnPickerContext, useValue: context },
163
+ ],
164
+ };
165
+ const modalInstance = __classPrivateFieldGet(this, _SkyDataManagerToolbarComponent_modalService, "f").open(__classPrivateFieldGet(this, _SkyDataManagerToolbarComponent_columnPickerService, "f").getComponentType(), options);
166
+ modalInstance.closed.subscribe((result) => {
167
+ if (result.reason === 'save') {
168
+ const displayedColumnIds = result.data.map((col) => col.id);
169
+ viewState.displayedColumnIds = displayedColumnIds;
170
+ if (this.dataState && this.activeView) {
171
+ this.dataState = this.dataState.addOrUpdateView(this.activeView.id, viewState);
172
+ }
173
+ }
174
+ });
159
175
  }
160
- });
176
+ }
161
177
  }
162
178
  selectAll() {
163
179
  /* istanbul ignore else */
164
- if (this.activeView.onSelectAllClick) {
180
+ if (this.activeView?.onSelectAllClick) {
165
181
  this.activeView.onSelectAllClick();
166
182
  }
167
183
  }
168
184
  clearAll() {
169
185
  /* istanbul ignore else */
170
- if (this.activeView.onClearAllClick) {
186
+ if (this.activeView?.onClearAllClick) {
171
187
  this.activeView.onClearAllClick();
172
188
  }
173
189
  }
174
190
  onOnlyShowSelected(event) {
175
- this.dataState.onlyShowSelected = event.checked;
176
- this.dataManagerService.updateDataState(this.dataState, this._source);
191
+ if (this.dataState) {
192
+ this.dataState.onlyShowSelected = !!event.checked;
193
+ __classPrivateFieldGet(this, _SkyDataManagerToolbarComponent_dataManagerService, "f").updateDataState(this.dataState, __classPrivateFieldGet(this, _SkyDataManagerToolbarComponent__source, "f"));
194
+ }
177
195
  }
178
196
  }
197
+ _SkyDataManagerToolbarComponent_ngUnsubscribe = new WeakMap(), _SkyDataManagerToolbarComponent_changeDetector = new WeakMap(), _SkyDataManagerToolbarComponent_dataManagerService = new WeakMap(), _SkyDataManagerToolbarComponent_modalService = new WeakMap(), _SkyDataManagerToolbarComponent_columnPickerService = new WeakMap(), _SkyDataManagerToolbarComponent__source = new WeakMap(), _SkyDataManagerToolbarComponent__activeView = new WeakMap(), _SkyDataManagerToolbarComponent__dataManagerConfig = new WeakMap(), _SkyDataManagerToolbarComponent__dataState = new WeakMap(), _SkyDataManagerToolbarComponent__views = new WeakMap();
179
198
  SkyDataManagerToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyDataManagerToolbarComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.SkyDataManagerService }, { token: i2.SkyModalService }, { token: i3.SkyDataManagerColumnPickerService }], target: i0.ɵɵFactoryTarget.Component });
180
- SkyDataManagerToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: SkyDataManagerToolbarComponent, selector: "sky-data-manager-toolbar", ngImport: i0, template: "<div class=\"sky-data-manager-toolbar\">\n <sky-toolbar>\n <sky-toolbar-section>\n <ng-content select=\"sky-data-manager-toolbar-primary-item\"></ng-content>\n\n <sky-toolbar-item *ngIf=\"activeView?.filterButtonEnabled\">\n <sky-filter-button\n [showButtonText]=\"activeView?.showFilterButtonText\"\n (filterButtonClick)=\"filterButtonClicked()\"\n >\n </sky-filter-button>\n </sky-toolbar-item>\n\n <sky-toolbar-item *ngIf=\"activeView?.sortEnabled\">\n <sky-sort [showButtonText]=\"activeView?.showSortButtonText\">\n <sky-sort-item\n *ngFor=\"let item of dataManagerConfig?.sortOptions\"\n [active]=\"activeSortOptionId && activeSortOptionId === item.id\"\n (itemSelect)=\"sortSelected(item)\"\n >\n {{ item.label }}\n </sky-sort-item>\n </sky-sort>\n </sky-toolbar-item>\n\n <sky-toolbar-item *ngIf=\"activeView?.columnPickerEnabled\">\n <button\n class=\"sky-btn sky-btn-default sky-col-picker-btn\"\n type=\"button\"\n [attr.aria-label]=\"\n 'skyux_data_manager_columns_button_title' | skyLibResources\n \"\n [attr.title]=\"\n 'skyux_data_manager_columns_button_title' | skyLibResources\n \"\n (click)=\"openColumnPicker()\"\n >\n <sky-icon icon=\"columns\"></sky-icon>\n <span class=\"sky-column-selector-action-btn-text\">\n {{ 'skyux_data_manager_columns_button_title' | skyLibResources }}\n </span>\n </button>\n </sky-toolbar-item>\n\n <ng-content select=\"sky-data-manager-toolbar-left-item\"></ng-content>\n\n <sky-toolbar-item *ngIf=\"activeView?.searchEnabled\">\n <sky-search\n [expandMode]=\"activeView?.searchExpandMode\"\n [placeholderText]=\"activeView?.searchPlaceholderText\"\n [searchText]=\"dataState?.searchText\"\n (searchApply)=\"searchApplied($event)\"\n >\n </sky-search>\n </sky-toolbar-item>\n\n <sky-toolbar-view-actions>\n <ng-content select=\"sky-data-manager-toolbar-right-item\"></ng-content>\n <sky-radio-group\n *ngIf=\"activeView && views && views.length > 1\"\n [ariaLabel]=\"'data view switcher'\"\n class=\"sky-switch-icon-group\"\n >\n <sky-radio\n *ngFor=\"let view of views\"\n [attr.name]=\"view.name\"\n [attr.aria-label]=\"view.name\"\n [icon]=\"view.icon\"\n [value]=\"view.id\"\n [label]=\"view.name\"\n [(ngModel)]=\"activeView.id\"\n (change)=\"onViewChange(view.id)\"\n >\n </sky-radio>\n </sky-radio-group>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n <ng-content select=\"sky-data-manager-toolbar-section\"></ng-content>\n </sky-toolbar>\n\n <sky-toolbar\n *ngIf=\"activeView?.multiselectToolbarEnabled\"\n class=\"sky-data-manager-multiselect-toolbar\"\n >\n <sky-toolbar-section>\n <sky-toolbar-item>\n <button\n class=\"sky-btn sky-btn-link sky-data-manager-select-all-btn\"\n type=\"button\"\n (click)=\"selectAll()\"\n >\n {{ 'skyux_data_manager_select_all_button_title' | skyLibResources }}\n </button>\n </sky-toolbar-item>\n <sky-toolbar-item>\n <button\n class=\"sky-btn sky-btn-link sky-data-manager-clear-all-btn\"\n type=\"button\"\n (click)=\"clearAll()\"\n >\n {{ 'skyux_data_manager_clear_all_button_title' | skyLibResources }}\n </button>\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n <sky-checkbox\n [checked]=\"onlyShowSelected\"\n (change)=\"onOnlyShowSelected($event)\"\n >\n <sky-checkbox-label>\n {{\n 'skyux_data_manager_show_selected_option_title' | skyLibResources\n }}\n </sky-checkbox-label>\n </sky-checkbox>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n</div>\n", styles: [":host .sky-col-picker-btn .sky-column-selector-action-btn-text{display:none}:host-context(.sky-responsive-container-xs) .sky-col-picker-btn .sky-column-selector-action-btn-text,:host-context(.sky-responsive-container-sm) .sky-col-picker-btn .sky-column-selector-action-btn-text,:host-context(.sky-responsive-container-md) .sky-col-picker-btn .sky-column-selector-action-btn-text,:host-context(.sky-responsive-container-lg) .sky-col-picker-btn .sky-column-selector-action-btn-text{display:none}@media (min-width: 768px){:host .sky-col-picker-btn .sky-column-selector-action-btn-text{display:inline}}:host-context(.sky-responsive-container-sm) .sky-col-picker-btn .sky-column-selector-action-btn-text,:host-context(.sky-responsive-container-md) .sky-col-picker-btn .sky-column-selector-action-btn-text,:host-context(.sky-responsive-container-lg) .sky-col-picker-btn .sky-column-selector-action-btn-text{display:inline}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.λ3, selector: "sky-checkbox", inputs: ["label", "labelledBy", "id", "disabled", "tabindex", "name", "icon", "checkboxType", "checked", "required"], outputs: ["change", "checkedChange", "disabledChange"] }, { kind: "component", type: i6.λ4, selector: "sky-checkbox-label" }, { kind: "component", type: i7.λ1, selector: "sky-filter-button", inputs: ["filterButtonId", "ariaControls", "ariaExpanded", "active", "disabled", "showButtonText"], outputs: ["filterButtonClick"] }, { kind: "component", type: i8.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { kind: "component", type: i6.λ13, selector: "sky-radio", inputs: ["checked", "disabled", "id", "label", "labelledBy", "name", "tabindex", "value", "icon", "radioType"], outputs: ["change", "checkedChange", "disabledChange"] }, { kind: "component", type: i6.λ11, selector: "sky-radio-group", inputs: ["ariaLabelledBy", "ariaLabel", "disabled", "name", "required", "value", "tabIndex"] }, { kind: "component", type: i9.SkySearchComponent, selector: "sky-search", inputs: ["searchText", "expandMode", "debounceTime", "disabled", "placeholderText"], outputs: ["searchApply", "searchChange", "searchClear"] }, { kind: "component", type: i7.λ14, selector: "sky-sort", inputs: ["showButtonText"] }, { kind: "component", type: i7.λ13, selector: "sky-sort-item", inputs: ["active"], outputs: ["itemSelect"] }, { kind: "component", type: i10.λ37, selector: "sky-toolbar" }, { kind: "component", type: i10.λ39, selector: "sky-toolbar-item" }, { kind: "component", type: i10.λ38, selector: "sky-toolbar-section" }, { kind: "component", type: i10.λ40, selector: "sky-toolbar-view-actions" }, { kind: "pipe", type: i11.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
199
+ SkyDataManagerToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: SkyDataManagerToolbarComponent, selector: "sky-data-manager-toolbar", ngImport: i0, template: "<div class=\"sky-data-manager-toolbar\">\n <sky-toolbar>\n <sky-toolbar-section>\n <ng-content select=\"sky-data-manager-toolbar-primary-item\"></ng-content>\n\n <sky-toolbar-item *ngIf=\"activeView?.filterButtonEnabled\">\n <sky-filter-button\n [showButtonText]=\"activeView?.showFilterButtonText\"\n (filterButtonClick)=\"filterButtonClicked()\"\n >\n </sky-filter-button>\n </sky-toolbar-item>\n\n <sky-toolbar-item *ngIf=\"activeView?.sortEnabled\">\n <sky-sort [showButtonText]=\"activeView?.showSortButtonText\">\n <sky-sort-item\n *ngFor=\"let item of dataManagerConfig?.sortOptions\"\n [active]=\"!!(dataState?.activeSortOption?.id === item.id)\"\n (itemSelect)=\"sortSelected(item)\"\n >\n {{ item.label }}\n </sky-sort-item>\n </sky-sort>\n </sky-toolbar-item>\n\n <sky-toolbar-item *ngIf=\"activeView?.columnPickerEnabled\">\n <button\n class=\"sky-btn sky-btn-default sky-col-picker-btn\"\n type=\"button\"\n [attr.aria-label]=\"\n 'skyux_data_manager_columns_button_title' | skyLibResources\n \"\n [attr.title]=\"\n 'skyux_data_manager_columns_button_title' | skyLibResources\n \"\n (click)=\"openColumnPicker()\"\n >\n <sky-icon icon=\"columns\"></sky-icon>\n <span class=\"sky-column-selector-action-btn-text\">\n {{ 'skyux_data_manager_columns_button_title' | skyLibResources }}\n </span>\n </button>\n </sky-toolbar-item>\n\n <ng-content select=\"sky-data-manager-toolbar-left-item\"></ng-content>\n\n <sky-toolbar-item *ngIf=\"activeView?.searchEnabled\">\n <sky-search\n [expandMode]=\"activeView?.searchExpandMode\"\n [placeholderText]=\"activeView?.searchPlaceholderText\"\n [searchText]=\"dataState?.searchText\"\n (searchApply)=\"searchApplied($event)\"\n >\n </sky-search>\n </sky-toolbar-item>\n\n <sky-toolbar-view-actions>\n <ng-content select=\"sky-data-manager-toolbar-right-item\"></ng-content>\n <sky-radio-group\n *ngIf=\"activeView && views && views.length > 1\"\n [ariaLabel]=\"'data view switcher'\"\n class=\"sky-switch-icon-group\"\n >\n <sky-radio\n *ngFor=\"let view of views\"\n [attr.name]=\"view.name\"\n [attr.aria-label]=\"view.name\"\n [icon]=\"view.icon\"\n [value]=\"view.id\"\n [label]=\"view.name\"\n [(ngModel)]=\"activeView.id\"\n (change)=\"onViewChange(view.id)\"\n >\n </sky-radio>\n </sky-radio-group>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n <ng-content select=\"sky-data-manager-toolbar-section\"></ng-content>\n </sky-toolbar>\n\n <sky-toolbar\n *ngIf=\"activeView?.multiselectToolbarEnabled\"\n class=\"sky-data-manager-multiselect-toolbar\"\n >\n <sky-toolbar-section>\n <sky-toolbar-item>\n <button\n class=\"sky-btn sky-btn-link sky-data-manager-select-all-btn\"\n type=\"button\"\n (click)=\"selectAll()\"\n >\n {{ 'skyux_data_manager_select_all_button_title' | skyLibResources }}\n </button>\n </sky-toolbar-item>\n <sky-toolbar-item>\n <button\n class=\"sky-btn sky-btn-link sky-data-manager-clear-all-btn\"\n type=\"button\"\n (click)=\"clearAll()\"\n >\n {{ 'skyux_data_manager_clear_all_button_title' | skyLibResources }}\n </button>\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n <sky-checkbox\n [checked]=\"onlyShowSelected\"\n (change)=\"onOnlyShowSelected($event)\"\n >\n <sky-checkbox-label>\n {{\n 'skyux_data_manager_show_selected_option_title' | skyLibResources\n }}\n </sky-checkbox-label>\n </sky-checkbox>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n</div>\n", styles: [":host .sky-col-picker-btn .sky-column-selector-action-btn-text{display:none}:host-context(.sky-responsive-container-xs) .sky-col-picker-btn .sky-column-selector-action-btn-text,:host-context(.sky-responsive-container-sm) .sky-col-picker-btn .sky-column-selector-action-btn-text,:host-context(.sky-responsive-container-md) .sky-col-picker-btn .sky-column-selector-action-btn-text,:host-context(.sky-responsive-container-lg) .sky-col-picker-btn .sky-column-selector-action-btn-text{display:none}@media (min-width: 768px){:host .sky-col-picker-btn .sky-column-selector-action-btn-text{display:inline}}:host-context(.sky-responsive-container-sm) .sky-col-picker-btn .sky-column-selector-action-btn-text,:host-context(.sky-responsive-container-md) .sky-col-picker-btn .sky-column-selector-action-btn-text,:host-context(.sky-responsive-container-lg) .sky-col-picker-btn .sky-column-selector-action-btn-text{display:inline}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.λ3, selector: "sky-checkbox", inputs: ["label", "labelledBy", "id", "disabled", "tabindex", "name", "icon", "checkboxType", "checked", "required"], outputs: ["change", "checkedChange", "disabledChange"] }, { kind: "component", type: i6.λ4, selector: "sky-checkbox-label" }, { kind: "component", type: i7.λ1, selector: "sky-filter-button", inputs: ["filterButtonId", "ariaControls", "ariaExpanded", "active", "disabled", "showButtonText"], outputs: ["filterButtonClick"] }, { kind: "component", type: i8.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { kind: "component", type: i6.λ13, selector: "sky-radio", inputs: ["checked", "disabled", "id", "label", "labelledBy", "name", "tabindex", "value", "icon", "radioType"], outputs: ["change", "checkedChange", "disabledChange"] }, { kind: "component", type: i6.λ11, selector: "sky-radio-group", inputs: ["ariaLabelledBy", "ariaLabel", "disabled", "name", "required", "value", "tabIndex"] }, { kind: "component", type: i9.SkySearchComponent, selector: "sky-search", inputs: ["searchText", "expandMode", "debounceTime", "disabled", "placeholderText"], outputs: ["searchApply", "searchChange", "searchClear"] }, { kind: "component", type: i7.λ14, selector: "sky-sort", inputs: ["showButtonText"] }, { kind: "component", type: i7.λ13, selector: "sky-sort-item", inputs: ["active"], outputs: ["itemSelect"] }, { kind: "component", type: i10.λ37, selector: "sky-toolbar" }, { kind: "component", type: i10.λ39, selector: "sky-toolbar-item" }, { kind: "component", type: i10.λ38, selector: "sky-toolbar-section" }, { kind: "component", type: i10.λ40, selector: "sky-toolbar-view-actions" }, { kind: "pipe", type: i11.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
181
200
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyDataManagerToolbarComponent, decorators: [{
182
201
  type: Component,
183
- args: [{ selector: 'sky-data-manager-toolbar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"sky-data-manager-toolbar\">\n <sky-toolbar>\n <sky-toolbar-section>\n <ng-content select=\"sky-data-manager-toolbar-primary-item\"></ng-content>\n\n <sky-toolbar-item *ngIf=\"activeView?.filterButtonEnabled\">\n <sky-filter-button\n [showButtonText]=\"activeView?.showFilterButtonText\"\n (filterButtonClick)=\"filterButtonClicked()\"\n >\n </sky-filter-button>\n </sky-toolbar-item>\n\n <sky-toolbar-item *ngIf=\"activeView?.sortEnabled\">\n <sky-sort [showButtonText]=\"activeView?.showSortButtonText\">\n <sky-sort-item\n *ngFor=\"let item of dataManagerConfig?.sortOptions\"\n [active]=\"activeSortOptionId && activeSortOptionId === item.id\"\n (itemSelect)=\"sortSelected(item)\"\n >\n {{ item.label }}\n </sky-sort-item>\n </sky-sort>\n </sky-toolbar-item>\n\n <sky-toolbar-item *ngIf=\"activeView?.columnPickerEnabled\">\n <button\n class=\"sky-btn sky-btn-default sky-col-picker-btn\"\n type=\"button\"\n [attr.aria-label]=\"\n 'skyux_data_manager_columns_button_title' | skyLibResources\n \"\n [attr.title]=\"\n 'skyux_data_manager_columns_button_title' | skyLibResources\n \"\n (click)=\"openColumnPicker()\"\n >\n <sky-icon icon=\"columns\"></sky-icon>\n <span class=\"sky-column-selector-action-btn-text\">\n {{ 'skyux_data_manager_columns_button_title' | skyLibResources }}\n </span>\n </button>\n </sky-toolbar-item>\n\n <ng-content select=\"sky-data-manager-toolbar-left-item\"></ng-content>\n\n <sky-toolbar-item *ngIf=\"activeView?.searchEnabled\">\n <sky-search\n [expandMode]=\"activeView?.searchExpandMode\"\n [placeholderText]=\"activeView?.searchPlaceholderText\"\n [searchText]=\"dataState?.searchText\"\n (searchApply)=\"searchApplied($event)\"\n >\n </sky-search>\n </sky-toolbar-item>\n\n <sky-toolbar-view-actions>\n <ng-content select=\"sky-data-manager-toolbar-right-item\"></ng-content>\n <sky-radio-group\n *ngIf=\"activeView && views && views.length > 1\"\n [ariaLabel]=\"'data view switcher'\"\n class=\"sky-switch-icon-group\"\n >\n <sky-radio\n *ngFor=\"let view of views\"\n [attr.name]=\"view.name\"\n [attr.aria-label]=\"view.name\"\n [icon]=\"view.icon\"\n [value]=\"view.id\"\n [label]=\"view.name\"\n [(ngModel)]=\"activeView.id\"\n (change)=\"onViewChange(view.id)\"\n >\n </sky-radio>\n </sky-radio-group>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n <ng-content select=\"sky-data-manager-toolbar-section\"></ng-content>\n </sky-toolbar>\n\n <sky-toolbar\n *ngIf=\"activeView?.multiselectToolbarEnabled\"\n class=\"sky-data-manager-multiselect-toolbar\"\n >\n <sky-toolbar-section>\n <sky-toolbar-item>\n <button\n class=\"sky-btn sky-btn-link sky-data-manager-select-all-btn\"\n type=\"button\"\n (click)=\"selectAll()\"\n >\n {{ 'skyux_data_manager_select_all_button_title' | skyLibResources }}\n </button>\n </sky-toolbar-item>\n <sky-toolbar-item>\n <button\n class=\"sky-btn sky-btn-link sky-data-manager-clear-all-btn\"\n type=\"button\"\n (click)=\"clearAll()\"\n >\n {{ 'skyux_data_manager_clear_all_button_title' | skyLibResources }}\n </button>\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n <sky-checkbox\n [checked]=\"onlyShowSelected\"\n (change)=\"onOnlyShowSelected($event)\"\n >\n <sky-checkbox-label>\n {{\n 'skyux_data_manager_show_selected_option_title' | skyLibResources\n }}\n </sky-checkbox-label>\n </sky-checkbox>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n</div>\n", styles: [":host .sky-col-picker-btn .sky-column-selector-action-btn-text{display:none}:host-context(.sky-responsive-container-xs) .sky-col-picker-btn .sky-column-selector-action-btn-text,:host-context(.sky-responsive-container-sm) .sky-col-picker-btn .sky-column-selector-action-btn-text,:host-context(.sky-responsive-container-md) .sky-col-picker-btn .sky-column-selector-action-btn-text,:host-context(.sky-responsive-container-lg) .sky-col-picker-btn .sky-column-selector-action-btn-text{display:none}@media (min-width: 768px){:host .sky-col-picker-btn .sky-column-selector-action-btn-text{display:inline}}:host-context(.sky-responsive-container-sm) .sky-col-picker-btn .sky-column-selector-action-btn-text,:host-context(.sky-responsive-container-md) .sky-col-picker-btn .sky-column-selector-action-btn-text,:host-context(.sky-responsive-container-lg) .sky-col-picker-btn .sky-column-selector-action-btn-text{display:inline}\n"] }]
202
+ args: [{ selector: 'sky-data-manager-toolbar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"sky-data-manager-toolbar\">\n <sky-toolbar>\n <sky-toolbar-section>\n <ng-content select=\"sky-data-manager-toolbar-primary-item\"></ng-content>\n\n <sky-toolbar-item *ngIf=\"activeView?.filterButtonEnabled\">\n <sky-filter-button\n [showButtonText]=\"activeView?.showFilterButtonText\"\n (filterButtonClick)=\"filterButtonClicked()\"\n >\n </sky-filter-button>\n </sky-toolbar-item>\n\n <sky-toolbar-item *ngIf=\"activeView?.sortEnabled\">\n <sky-sort [showButtonText]=\"activeView?.showSortButtonText\">\n <sky-sort-item\n *ngFor=\"let item of dataManagerConfig?.sortOptions\"\n [active]=\"!!(dataState?.activeSortOption?.id === item.id)\"\n (itemSelect)=\"sortSelected(item)\"\n >\n {{ item.label }}\n </sky-sort-item>\n </sky-sort>\n </sky-toolbar-item>\n\n <sky-toolbar-item *ngIf=\"activeView?.columnPickerEnabled\">\n <button\n class=\"sky-btn sky-btn-default sky-col-picker-btn\"\n type=\"button\"\n [attr.aria-label]=\"\n 'skyux_data_manager_columns_button_title' | skyLibResources\n \"\n [attr.title]=\"\n 'skyux_data_manager_columns_button_title' | skyLibResources\n \"\n (click)=\"openColumnPicker()\"\n >\n <sky-icon icon=\"columns\"></sky-icon>\n <span class=\"sky-column-selector-action-btn-text\">\n {{ 'skyux_data_manager_columns_button_title' | skyLibResources }}\n </span>\n </button>\n </sky-toolbar-item>\n\n <ng-content select=\"sky-data-manager-toolbar-left-item\"></ng-content>\n\n <sky-toolbar-item *ngIf=\"activeView?.searchEnabled\">\n <sky-search\n [expandMode]=\"activeView?.searchExpandMode\"\n [placeholderText]=\"activeView?.searchPlaceholderText\"\n [searchText]=\"dataState?.searchText\"\n (searchApply)=\"searchApplied($event)\"\n >\n </sky-search>\n </sky-toolbar-item>\n\n <sky-toolbar-view-actions>\n <ng-content select=\"sky-data-manager-toolbar-right-item\"></ng-content>\n <sky-radio-group\n *ngIf=\"activeView && views && views.length > 1\"\n [ariaLabel]=\"'data view switcher'\"\n class=\"sky-switch-icon-group\"\n >\n <sky-radio\n *ngFor=\"let view of views\"\n [attr.name]=\"view.name\"\n [attr.aria-label]=\"view.name\"\n [icon]=\"view.icon\"\n [value]=\"view.id\"\n [label]=\"view.name\"\n [(ngModel)]=\"activeView.id\"\n (change)=\"onViewChange(view.id)\"\n >\n </sky-radio>\n </sky-radio-group>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n <ng-content select=\"sky-data-manager-toolbar-section\"></ng-content>\n </sky-toolbar>\n\n <sky-toolbar\n *ngIf=\"activeView?.multiselectToolbarEnabled\"\n class=\"sky-data-manager-multiselect-toolbar\"\n >\n <sky-toolbar-section>\n <sky-toolbar-item>\n <button\n class=\"sky-btn sky-btn-link sky-data-manager-select-all-btn\"\n type=\"button\"\n (click)=\"selectAll()\"\n >\n {{ 'skyux_data_manager_select_all_button_title' | skyLibResources }}\n </button>\n </sky-toolbar-item>\n <sky-toolbar-item>\n <button\n class=\"sky-btn sky-btn-link sky-data-manager-clear-all-btn\"\n type=\"button\"\n (click)=\"clearAll()\"\n >\n {{ 'skyux_data_manager_clear_all_button_title' | skyLibResources }}\n </button>\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n <sky-checkbox\n [checked]=\"onlyShowSelected\"\n (change)=\"onOnlyShowSelected($event)\"\n >\n <sky-checkbox-label>\n {{\n 'skyux_data_manager_show_selected_option_title' | skyLibResources\n }}\n </sky-checkbox-label>\n </sky-checkbox>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n</div>\n", styles: [":host .sky-col-picker-btn .sky-column-selector-action-btn-text{display:none}:host-context(.sky-responsive-container-xs) .sky-col-picker-btn .sky-column-selector-action-btn-text,:host-context(.sky-responsive-container-sm) .sky-col-picker-btn .sky-column-selector-action-btn-text,:host-context(.sky-responsive-container-md) .sky-col-picker-btn .sky-column-selector-action-btn-text,:host-context(.sky-responsive-container-lg) .sky-col-picker-btn .sky-column-selector-action-btn-text{display:none}@media (min-width: 768px){:host .sky-col-picker-btn .sky-column-selector-action-btn-text{display:inline}}:host-context(.sky-responsive-container-sm) .sky-col-picker-btn .sky-column-selector-action-btn-text,:host-context(.sky-responsive-container-md) .sky-col-picker-btn .sky-column-selector-action-btn-text,:host-context(.sky-responsive-container-lg) .sky-col-picker-btn .sky-column-selector-action-btn-text{display:inline}\n"] }]
184
203
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.SkyDataManagerService }, { type: i2.SkyModalService }, { type: i3.SkyDataManagerColumnPickerService }]; } });
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1tYW5hZ2VyLXRvb2xiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGEtbWFuYWdlci9zcmMvbGliL21vZHVsZXMvZGF0YS1tYW5hZ2VyL2RhdGEtbWFuYWdlci10b29sYmFyL2RhdGEtbWFuYWdlci10b29sYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9kYXRhLW1hbmFnZXIvc3JjL2xpYi9tb2R1bGVzL2RhdGEtbWFuYWdlci9kYXRhLW1hbmFnZXItdG9vbGJhci9kYXRhLW1hbmFnZXItdG9vbGJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEdBR1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFxQixlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFDckgsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFDckgsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFPaEU7Ozs7R0FJRztBQU9ILE1BQU0sT0FBTyw4QkFBOEI7SUFvRHpDLFlBQ1UsY0FBaUMsRUFDakMsa0JBQXlDLEVBQ3pDLFlBQTZCLEVBQzdCLG1CQUFzRDtRQUh0RCxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFD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QyxnQkFBZ0IsRUFBRSxDQUFDO1NBQ3BDO0lBQ0gsQ0FBQztJQUVNLFFBQVE7UUFDYiwwQkFBMEI7UUFDMUIsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsRUFBRTtZQUNuQyxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQ25DO0lBQ0gsQ0FBQztJQUVNLGtCQUFrQixDQUFDLEtBQXdCO1FBQ2hELElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUNoRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hFLENBQUM7OzJIQTFNVSw4QkFBOEI7K0dBQTlCLDhCQUE4QixnRUNsQzNDLG9uSUFzSEE7MkZEcEZhLDhCQUE4QjtrQkFOMUMsU0FBUzsrQkFDRSwwQkFBMEIsbUJBR25CLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5Q2hlY2tib3hDaGFuZ2UgfSBmcm9tICdAc2t5dXgvZm9ybXMnO1xuaW1wb3J0IHsgU2t5TW9kYWxDbG9zZUFyZ3MsIFNreU1vZGFsU2VydmljZSB9IGZyb20gJ0Bza3l1eC9tb2RhbHMnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreURhdGFNYW5hZ2VyQ29sdW1uUGlja2VyQ29udGV4dCB9IGZyb20gJy4uL2RhdGEtbWFuYWdlci1jb2x1bW4tcGlja2VyL2RhdGEtbWFuYWdlci1jb2x1bW4tcGlja2VyLWNvbnRleHQnO1xuaW1wb3J0IHsgU2t5RGF0YU1hbmFnZXJDb2x1bW5QaWNrZXJTZXJ2aWNlIH0gZnJvbSAnLi4vZGF0YS1tYW5hZ2VyLWNvbHVtbi1waWNrZXIvZGF0YS1tYW5hZ2VyLWNvbHVtbi1waWNrZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lEYXRhTWFuYWdlckZpbHRlck1vZGFsQ29udGV4dCB9IGZyb20gJy4uL2RhdGEtbWFuYWdlci1maWx0ZXItY29udGV4dCc7XG5pbXBvcnQgeyBTa3lEYXRhTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi9kYXRhLW1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lEYXRhTWFuYWdlckNvbHVtblBpY2tlck9wdGlvbiB9IGZyb20gJy4uL21vZGVscy9kYXRhLW1hbmFnZXItY29sdW1uLXBpY2tlci1vcHRpb24nO1xuaW1wb3J0IHsgU2t5RGF0YU1hbmFnZXJDb25maWcgfSBmcm9tICcuLi9tb2RlbHMvZGF0YS1tYW5hZ2VyLWNvbmZpZyc7XG5pbXBvcnQgeyBTa3lEYXRhTWFuYWdlclNvcnRPcHRpb24gfSBmcm9tICcuLi9tb2RlbHMvZGF0YS1tYW5hZ2VyLXNvcnQtb3B0aW9uJztcbmltcG9ydCB7IFNreURhdGFNYW5hZ2VyU3RhdGUgfSBmcm9tICcuLi9tb2RlbHMvZGF0YS1tYW5hZ2VyLXN0YXRlJztcbmltcG9ydCB7IFNreURhdGFWaWV3Q29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzL2RhdGEtdmlldy1jb25maWcnO1xuXG4vKipcbiAqIFJlbmRlcnMgYSBgc2t5LXRvb2xiYXJgIHdpdGggdGhlIGNvbnRlbnRzIHNwZWNpZmllZCBieSB0aGUgYWN0aXZlIHZpZXcncyBgU2t5RGF0YVZpZXdDb25maWdgXG4gKiBhbmQgdGhlIGBTa3lEYXRhTWFuYWdlclRvb2xiYXJMZWZ0SXRlbXNDb21wb25lbnRgLCBgU2t5RGF0YU1hbmFnZXJUb29sYmFyUmlnaHRJdGVtc0NvbXBvbmVudGAsXG4gKiBhbmQgYFNreURhdGFNYW5hZ2VyVG9vbGJhclNlY3Rpb25Db21wb25lbnRgIHdyYXBwZXJzLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktZGF0YS1tYW5hZ2VyLXRvb2xiYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YS1tYW5hZ2VyLXRvb2xiYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRhLW1hbmFnZXItdG9vbGJhci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RGF0YU1hbmFnZXJUb29sYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQge1xuICBwdWJsaWMgZ2V0IGFjdGl2ZVNvcnRPcHRpb25JZCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGFjdGl2ZVNvcnRPcHRpb24gPSB0aGlzLmRhdGFTdGF0ZSAmJiB0aGlzLmRhdGFTdGF0ZS5hY3RpdmVTb3J0T3B0aW9uO1xuICAgIHJldHVybiBhY3RpdmVTb3J0T3B0aW9uICYmIGFjdGl2ZVNvcnRPcHRpb24uaWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFjdGl2ZVZpZXcoKTogU2t5RGF0YVZpZXdDb25maWcge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmVWaWV3O1xuICB9XG5cbiAgcHVibGljIHNldCBhY3RpdmVWaWV3KHZhbHVlOiBTa3lEYXRhVmlld0NvbmZpZykge1xuICAgIHRoaXMuX2FjdGl2ZVZpZXcgPSB2YWx1ZTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGdldCBkYXRhTWFuYWdlckNvbmZpZygpOiBTa3lEYXRhTWFuYWdlckNvbmZpZyB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGFNYW5hZ2VyQ29uZmlnO1xuICB9XG5cbiAgcHVibGljIHNldCBkYXRhTWFuYWdlckNvbmZpZyh2YWx1ZTogU2t5RGF0YU1hbmFnZXJDb25maWcpIHtcbiAgICB0aGlzLl9kYXRhTWFuYWdlckNvbmZpZyA9IHZhbHVlO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRhdGFTdGF0ZSgpOiBTa3lEYXRhTWFuYWdlclN0YXRlIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YVN0YXRlO1xuICB9XG5cbiAgcHVibGljIHNldCBkYXRhU3RhdGUodmFsdWU6IFNreURhdGFNYW5hZ2VyU3RhdGUpIHtcbiAgICB0aGlzLl9kYXRhU3RhdGUgPSB2YWx1ZTtcbiAgICB0aGlzLmRhdGFNYW5hZ2VyU2VydmljZS51cGRhdGVEYXRhU3RhdGUodmFsdWUsIHRoaXMuX3NvdXJjZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZpZXdzKCk6IFNreURhdGFWaWV3Q29uZmlnW10ge1xuICAgIHJldHVybiB0aGlzLl92aWV3cztcbiAgfVxuXG4gIHB1YmxpYyBzZXQgdmlld3ModmFsdWU6IFNreURhdGFWaWV3Q29uZmlnW10pIHtcbiAgICB0aGlzLl92aWV3cyA9IHZhbHVlO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgb25seVNob3dTZWxlY3RlZDogYm9vbGVhbjtcblxuICAvLyB0aGUgc291cmNlIHRvIHByb3ZpZGUgZm9yIGRhdGEgc3RhdGUgY2hhbmdlc1xuICBwcml2YXRlIF9zb3VyY2UgPSAndG9vbGJhcic7XG4gIHByaXZhdGUgX2FjdGl2ZVZpZXc6IFNreURhdGFWaWV3Q29uZmlnO1xuICBwcml2YXRlIF9kYXRhTWFuYWdlckNvbmZpZzogU2t5RGF0YU1hbmFnZXJDb25maWc7XG4gIHByaXZhdGUgX2RhdGFTdGF0ZTogU2t5RGF0YU1hbmFnZXJTdGF0ZTtcbiAgcHJpdmF0ZSBfbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgX3ZpZXdzOiBTa3lEYXRhVmlld0NvbmZpZ1tdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBkYXRhTWFuYWdlclNlcnZpY2U6IFNreURhdGFNYW5hZ2VyU2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogU2t5TW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29sdW1uUGlja2VyU2VydmljZTogU2t5RGF0YU1hbmFnZXJDb2x1bW5QaWNrZXJTZXJ2aWNlXG4gICkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhTWFuYWdlclNlcnZpY2VcbiAgICAgIC5nZXRBY3RpdmVWaWV3SWRVcGRhdGVzKClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGFjdGl2ZVZpZXdJZCkgPT4ge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoYWN0aXZlVmlld0lkKSB7XG4gICAgICAgICAgdGhpcy5hY3RpdmVWaWV3ID0gdGhpcy5kYXRhTWFuYWdlclNlcnZpY2UuZ2V0Vmlld0J5SWQoYWN0aXZlVmlld0lkKTtcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHRoaXMuZGF0YU1hbmFnZXJTZXJ2aWNlXG4gICAgICAuZ2V0RGF0YVZpZXdzVXBkYXRlcygpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCh2aWV3cykgPT4ge1xuICAgICAgICB0aGlzLnZpZXdzID0gdmlld3M7XG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZVZpZXcpIHtcbiAgICAgICAgICB0aGlzLmFjdGl2ZVZpZXcgPSB0aGlzLmRhdGFNYW5hZ2VyU2VydmljZS5nZXRWaWV3QnlJZChcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlVmlldy5pZFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5kYXRhTWFuYWdlclNlcnZpY2VcbiAgICAgIC5nZXREYXRhU3RhdGVVcGRhdGVzKHRoaXMuX3NvdXJjZSlcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGFTdGF0ZSkgPT4ge1xuICAgICAgICB0aGlzLl9kYXRhU3RhdGUgPSBkYXRhU3RhdGU7XG4gICAgICAgIHRoaXMub25seVNob3dTZWxlY3RlZCA9IGRhdGFTdGF0ZS5vbmx5U2hvd1NlbGVjdGVkO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmRhdGFNYW5hZ2VyU2VydmljZVxuICAgICAgLmdldERhdGFNYW5hZ2VyQ29uZmlnVXBkYXRlcygpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChjb25maWcpID0+IHtcbiAgICAgICAgdGhpcy5kYXRhTWFuYWdlckNvbmZpZyA9IGNvbmZpZztcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuX25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzb3J0U2VsZWN0ZWQoc29ydE9wdGlvbjogU2t5RGF0YU1hbmFnZXJTb3J0T3B0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhU3RhdGUuYWN0aXZlU29ydE9wdGlvbiA9IHNvcnRPcHRpb247XG4gICAgdGhpcy5kYXRhTWFuYWdlclNlcnZpY2UudXBkYXRlRGF0YVN0YXRlKHRoaXMuZGF0YVN0YXRlLCB0aGlzLl9zb3VyY2UpO1xuICB9XG5cbiAgcHVibGljIG9uVmlld0NoYW5nZSh2aWV3SWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZGF0YU1hbmFnZXJTZXJ2aWNlLnVwZGF0ZUFjdGl2ZVZpZXdJZCh2aWV3SWQpO1xuICB9XG5cbiAgcHVibGljIHNlYXJjaEFwcGxpZWQodGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhU3RhdGUuc2VhcmNoVGV4dCA9IHRleHQ7XG4gICAgdGhpcy5kYXRhTWFuYWdlclNlcnZpY2UudXBkYXRlRGF0YVN0YXRlKHRoaXMuZGF0YVN0YXRlLCB0aGlzLl9zb3VyY2UpO1xuICB9XG5cbiAgcHVibGljIGZpbHRlckJ1dHRvbkNsaWNrZWQoKTogdm9pZCB7XG4gICAgY29uc3QgY29udGV4dCA9IG5ldyBTa3lEYXRhTWFuYWdlckZpbHRlck1vZGFsQ29udGV4dCgpO1xuICAgIGNvbnN0IGZpbHRlck1vZGFsID1cbiAgICAgIHRoaXMuZGF0YU1hbmFnZXJDb25maWcgJiYgdGhpcy5kYXRhTWFuYWdlckNvbmZpZy5maWx0ZXJNb2RhbENvbXBvbmVudDtcblxuICAgIGNvbnRleHQuZmlsdGVyRGF0YSA9IHRoaXMuZGF0YVN0YXRlICYmIHRoaXMuZGF0YVN0YXRlLmZpbHRlckRhdGE7XG5cbiAgICBjb25zdCBvcHRpb25zOiBhbnkgPSB7XG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBTa3lEYXRhTWFuYWdlckZpbHRlck1vZGFsQ29udGV4dCwgdXNlVmFsdWU6IGNvbnRleHQgfSxcbiAgICAgIF0sXG4gICAgICBzaXplOiAnbGFyZ2UnLFxuICAgIH07XG5cbiAgICBpZiAoZmlsdGVyTW9kYWwpIHtcbiAgICAgIGNvbnN0IG1vZGFsSW5zdGFuY2UgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKGZpbHRlck1vZGFsLCBvcHRpb25zKTtcblxuICAgICAgbW9kYWxJbnN0YW5jZS5jbG9zZWQuc3Vic2NyaWJlKChyZXN1bHQ6IFNreU1vZGFsQ2xvc2VBcmdzKSA9PiB7XG4gICAgICAgIGlmIChyZXN1bHQucmVhc29uID09PSAnc2F2ZScpIHtcbiAgICAgICAgICB0aGlzLmRhdGFTdGF0ZS5maWx0ZXJEYXRhID0gcmVzdWx0LmRhdGE7XG4gICAgICAgICAgdGhpcy5kYXRhTWFuYWdlclNlcnZpY2UudXBkYXRlRGF0YVN0YXRlKHRoaXMuZGF0YVN0YXRlLCB0aGlzLl9zb3VyY2UpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3BlbkNvbHVtblBpY2tlcigpOiB2b2lkIHtcbiAgICBjb25zdCBjb2x1bW5PcHRpb25zID0gdGhpcy5hY3RpdmVWaWV3ICYmIHRoaXMuYWN0aXZlVmlldy5jb2x1bW5PcHRpb25zO1xuICAgIGNvbnN0IHZpZXdTdGF0ZSA9IHRoaXMuZGF0YVN0YXRlLmdldFZpZXdTdGF0ZUJ5SWQodGhpcy5hY3RpdmVWaWV3LmlkKTtcbiAgICBjb25zdCBjb250ZXh0ID0gbmV3IFNreURhdGFNYW5hZ2VyQ29sdW1uUGlja2VyQ29udGV4dChcbiAgICAgIGNvbHVtbk9wdGlvbnMsXG4gICAgICB2aWV3U3RhdGUuZGlzcGxheWVkQ29sdW1uSWRzXG4gICAgKTtcblxuICAgIGlmICh0aGlzLmFjdGl2ZVZpZXcuY29sdW1uUGlja2VyU29ydFN0cmF0ZWd5KSB7XG4gICAgICBjb250ZXh0LmNvbHVtblBpY2tlclNvcnRTdHJhdGVneSA9XG4gICAgICAgIHRoaXMuYWN0aXZlVmlldy5jb2x1bW5QaWNrZXJTb3J0U3RyYXRlZ3k7XG4gICAgfVxuXG4gICAgY29uc3Qgb3B0aW9uczogYW55ID0ge1xuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogU2t5RGF0YU1hbmFnZXJDb2x1bW5QaWNrZXJDb250ZXh0LCB1c2VWYWx1ZTogY29udGV4dCB9LFxuICAgICAgXSxcbiAgICB9O1xuXG4gICAgY29uc3QgbW9kYWxJbnN0YW5jZSA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oXG4gICAgICB0aGlzLmNvbHVtblBpY2tlclNlcnZpY2UuZ2V0Q29tcG9uZW50VHlwZSgpLFxuICAgICAgb3B0aW9uc1xuICAgICk7XG5cbiAgICBtb2RhbEluc3RhbmNlLmNsb3NlZC5zdWJzY3JpYmUoKHJlc3VsdDogU2t5TW9kYWxDbG9zZUFyZ3MpID0+IHtcbiAgICAgIGlmIChyZXN1bHQucmVhc29uID09PSAnc2F2ZScpIHtcbiAgICAgICAgY29uc3QgZGlzcGxheWVkQ29sdW1uSWRzID0gcmVzdWx0LmRhdGEubWFwKFxuICAgICAgICAgIChjb2w6IFNreURhdGFNYW5hZ2VyQ29sdW1uUGlja2VyT3B0aW9uKSA9PiBjb2wuaWRcbiAgICAgICAgKTtcblxuICAgICAgICB2aWV3U3RhdGUuZGlzcGxheWVkQ29sdW1uSWRzID0gZGlzcGxheWVkQ29sdW1uSWRzO1xuICAgICAgICB0aGlzLmRhdGFTdGF0ZSA9IHRoaXMuZGF0YVN0YXRlLmFkZE9yVXBkYXRlVmlldyhcbiAgICAgICAgICB0aGlzLmFjdGl2ZVZpZXcuaWQsXG4gICAgICAgICAgdmlld1N0YXRlXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0QWxsKCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuYWN0aXZlVmlldy5vblNlbGVjdEFsbENsaWNrKSB7XG4gICAgICB0aGlzLmFjdGl2ZVZpZXcub25TZWxlY3RBbGxDbGljaygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjbGVhckFsbCgpOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLmFjdGl2ZVZpZXcub25DbGVhckFsbENsaWNrKSB7XG4gICAgICB0aGlzLmFjdGl2ZVZpZXcub25DbGVhckFsbENsaWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uT25seVNob3dTZWxlY3RlZChldmVudDogU2t5Q2hlY2tib3hDaGFuZ2UpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGFTdGF0ZS5vbmx5U2hvd1NlbGVjdGVkID0gZXZlbnQuY2hlY2tlZDtcbiAgICB0aGlzLmRhdGFNYW5hZ2VyU2VydmljZS51cGRhdGVEYXRhU3RhdGUodGhpcy5kYXRhU3RhdGUsIHRoaXMuX3NvdXJjZSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJza3ktZGF0YS1tYW5hZ2VyLXRvb2xiYXJcIj5cbiAgPHNreS10b29sYmFyPlxuICAgIDxza3ktdG9vbGJhci1zZWN0aW9uPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic2t5LWRhdGEtbWFuYWdlci10b29sYmFyLXByaW1hcnktaXRlbVwiPjwvbmctY29udGVudD5cblxuICAgICAgPHNreS10b29sYmFyLWl0ZW0gKm5nSWY9XCJhY3RpdmVWaWV3Py5maWx0ZXJCdXR0b25FbmFibGVkXCI+XG4gICAgICAgIDxza3ktZmlsdGVyLWJ1dHRvblxuICAgICAgICAgIFtzaG93QnV0dG9uVGV4dF09XCJhY3RpdmVWaWV3Py5zaG93RmlsdGVyQnV0dG9uVGV4dFwiXG4gICAgICAgICAgKGZpbHRlckJ1dHRvbkNsaWNrKT1cImZpbHRlckJ1dHRvbkNsaWNrZWQoKVwiXG4gICAgICAgID5cbiAgICAgICAgPC9za3ktZmlsdGVyLWJ1dHRvbj5cbiAgICAgIDwvc2t5LXRvb2xiYXItaXRlbT5cblxuICAgICAgPHNreS10b29sYmFyLWl0ZW0gKm5nSWY9XCJhY3RpdmVWaWV3Py5zb3J0RW5hYmxlZFwiPlxuICAgICAgICA8c2t5LXNvcnQgW3Nob3dCdXR0b25UZXh0XT1cImFjdGl2ZVZpZXc/LnNob3dTb3J0QnV0dG9uVGV4dFwiPlxuICAgICAgICAgIDxza3ktc29ydC1pdGVtXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkYXRhTWFuYWdlckNvbmZpZz8uc29ydE9wdGlvbnNcIlxuICAgICAgICAgICAgW2FjdGl2ZV09XCJhY3RpdmVTb3J0T3B0aW9uSWQgJiYgYWN0aXZlU29ydE9wdGlvbklkID09PSBpdGVtLmlkXCJcbiAgICAgICAgICAgIChpdGVtU2VsZWN0KT1cInNvcnRTZWxlY3RlZChpdGVtKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgaXRlbS5sYWJlbCB9fVxuICAgICAgICAgIDwvc2t5LXNvcnQtaXRlbT5cbiAgICAgICAgPC9za3ktc29ydD5cbiAgICAgIDwvc2t5LXRvb2xiYXItaXRlbT5cblxuICAgICAgPHNreS10b29sYmFyLWl0ZW0gKm5nSWY9XCJhY3RpdmVWaWV3Py5jb2x1bW5QaWNrZXJFbmFibGVkXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1kZWZhdWx0IHNreS1jb2wtcGlja2VyLWJ0blwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICdza3l1eF9kYXRhX21hbmFnZXJfY29sdW1uc19idXR0b25fdGl0bGUnIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbYXR0ci50aXRsZV09XCJcbiAgICAgICAgICAgICdza3l1eF9kYXRhX21hbmFnZXJfY29sdW1uc19idXR0b25fdGl0bGUnIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgXCJcbiAgICAgICAgICAoY2xpY2spPVwib3BlbkNvbHVtblBpY2tlcigpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxza3ktaWNvbiBpY29uPVwiY29sdW1uc1wiPjwvc2t5LWljb24+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJza3ktY29sdW1uLXNlbGVjdG9yLWFjdGlvbi1idG4tdGV4dFwiPlxuICAgICAgICAgICAge3sgJ3NreXV4X2RhdGFfbWFuYWdlcl9jb2x1bW5zX2J1dHRvbl90aXRsZScgfCBza3lMaWJSZXNvdXJjZXMgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9za3ktdG9vbGJhci1pdGVtPlxuXG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJza3ktZGF0YS1tYW5hZ2VyLXRvb2xiYXItbGVmdC1pdGVtXCI+PC9uZy1jb250ZW50PlxuXG4gICAgICA8c2t5LXRvb2xiYXItaXRlbSAqbmdJZj1cImFjdGl2ZVZpZXc/LnNlYXJjaEVuYWJsZWRcIj5cbiAgICAgICAgPHNreS1zZWFyY2hcbiAgICAgICAgICBbZXhwYW5kTW9kZV09XCJhY3RpdmVWaWV3Py5zZWFyY2hFeHBhbmRNb2RlXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJUZXh0XT1cImFjdGl2ZVZpZXc/LnNlYXJjaFBsYWNlaG9sZGVyVGV4dFwiXG4gICAgICAgICAgW3NlYXJjaFRleHRdPVwiZGF0YVN0YXRlPy5zZWFyY2hUZXh0XCJcbiAgICAgICAgICAoc2VhcmNoQXBwbHkpPVwic2VhcmNoQXBwbGllZCgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICA8L3NreS1zZWFyY2g+XG4gICAgICA8L3NreS10b29sYmFyLWl0ZW0+XG5cbiAgICAgIDxza3ktdG9vbGJhci12aWV3LWFjdGlvbnM+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNreS1kYXRhLW1hbmFnZXItdG9vbGJhci1yaWdodC1pdGVtXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8c2t5LXJhZGlvLWdyb3VwXG4gICAgICAgICAgKm5nSWY9XCJhY3RpdmVWaWV3ICYmIHZpZXdzICYmIHZpZXdzLmxlbmd0aCA+IDFcIlxuICAgICAgICAgIFthcmlhTGFiZWxdPVwiJ2RhdGEgdmlldyBzd2l0Y2hlcidcIlxuICAgICAgICAgIGNsYXNzPVwic2t5LXN3aXRjaC1pY29uLWdyb3VwXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxza3ktcmFkaW9cbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCB2aWV3IG9mIHZpZXdzXCJcbiAgICAgICAgICAgIFthdHRyLm5hbWVdPVwidmlldy5uYW1lXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidmlldy5uYW1lXCJcbiAgICAgICAgICAgIFtpY29uXT1cInZpZXcuaWNvblwiXG4gICAgICAgICAgICBbdmFsdWVdPVwidmlldy5pZFwiXG4gICAgICAgICAgICBbbGFiZWxdPVwidmlldy5uYW1lXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiYWN0aXZlVmlldy5pZFwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cIm9uVmlld0NoYW5nZSh2aWV3LmlkKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvc2t5LXJhZGlvPlxuICAgICAgICA8L3NreS1yYWRpby1ncm91cD5cbiAgICAgIDwvc2t5LXRvb2xiYXItdmlldy1hY3Rpb25zPlxuICAgIDwvc2t5LXRvb2xiYXItc2VjdGlvbj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJza3ktZGF0YS1tYW5hZ2VyLXRvb2xiYXItc2VjdGlvblwiPjwvbmctY29udGVudD5cbiAgPC9za3ktdG9vbGJhcj5cblxuICA8c2t5LXRvb2xiYXJcbiAgICAqbmdJZj1cImFjdGl2ZVZpZXc/Lm11bHRpc2VsZWN0VG9vbGJhckVuYWJsZWRcIlxuICAgIGNsYXNzPVwic2t5LWRhdGEtbWFuYWdlci1tdWx0aXNlbGVjdC10b29sYmFyXCJcbiAgPlxuICAgIDxza3ktdG9vbGJhci1zZWN0aW9uPlxuICAgICAgPHNreS10b29sYmFyLWl0ZW0+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1saW5rIHNreS1kYXRhLW1hbmFnZXItc2VsZWN0LWFsbC1idG5cIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJzZWxlY3RBbGwoKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyAnc2t5dXhfZGF0YV9tYW5hZ2VyX3NlbGVjdF9hbGxfYnV0dG9uX3RpdGxlJyB8IHNreUxpYlJlc291cmNlcyB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvc2t5LXRvb2xiYXItaXRlbT5cbiAgICAgIDxza3ktdG9vbGJhci1pdGVtPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tbGluayBza3ktZGF0YS1tYW5hZ2VyLWNsZWFyLWFsbC1idG5cIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJjbGVhckFsbCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdza3l1eF9kYXRhX21hbmFnZXJfY2xlYXJfYWxsX2J1dHRvbl90aXRsZScgfCBza3lMaWJSZXNvdXJjZXMgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L3NreS10b29sYmFyLWl0ZW0+XG4gICAgICA8c2t5LXRvb2xiYXItdmlldy1hY3Rpb25zPlxuICAgICAgICA8c2t5LWNoZWNrYm94XG4gICAgICAgICAgW2NoZWNrZWRdPVwib25seVNob3dTZWxlY3RlZFwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJvbk9ubHlTaG93U2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2t5LWNoZWNrYm94LWxhYmVsPlxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgJ3NreXV4X2RhdGFfbWFuYWdlcl9zaG93X3NlbGVjdGVkX29wdGlvbl90aXRsZScgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPC9za3ktY2hlY2tib3gtbGFiZWw+XG4gICAgICAgIDwvc2t5LWNoZWNrYm94PlxuICAgICAgPC9za3ktdG9vbGJhci12aWV3LWFjdGlvbnM+XG4gICAgPC9za3ktdG9vbGJhci1zZWN0aW9uPlxuICA8L3NreS10b29sYmFyPlxuPC9kaXY+XG4iXX0=
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1tYW5hZ2VyLXRvb2xiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGEtbWFuYWdlci9zcmMvbGliL21vZHVsZXMvZGF0YS1tYW5hZ2VyL2RhdGEtbWFuYWdlci10b29sYmFyL2RhdGEtbWFuYWdlci10b29sYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9kYXRhLW1hbmFnZXIvc3JjL2xpYi9tb2R1bGVzL2RhdGEtbWFuYWdlci9kYXRhLW1hbmFnZXItdG9vbGJhci9kYXRhLW1hbmFnZXItdG9vbGJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsR0FHVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBR0wsZUFBZSxHQUNoQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQUNySCxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQUNySCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7Ozs7OztBQU9oRTs7OztHQUlHO0FBT0gsTUFBTSxPQUFPLDhCQUE4QjtJQXNEekMsWUFDRSxjQUFpQyxFQUNqQyxrQkFBeUMsRUFDekMsWUFBNkIsRUFDN0IsbUJBQXNEO1FBakJ4RCx3REFBaUIsSUFBSSxPQUFPLEVBQVEs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QyxTQUFTLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTs0QkFDckMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FDN0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQ2xCLFNBQVMsQ0FDVixDQUFDO3lCQUNIO3FCQUNGO2dCQUNILENBQUMsQ0FBQyxDQUFDO2FBQ0o7U0FDRjtJQUNILENBQUM7SUFFTSxTQUFTO1FBQ2QsMEJBQTBCO1FBQzFCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRTtZQUNyQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixFQUFFLENBQUM7U0FDcEM7SUFDSCxDQUFDO0lBRU0sUUFBUTtRQUNiLDBCQUEwQjtRQUMxQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsZUFBZSxFQUFFO1lBQ3BDLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDbkM7SUFDSCxDQUFDO0lBRU0sa0JBQWtCLENBQUMsS0FBd0I7UUFDaEQsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDbEQsdUJBQUEsSUFBSSwwREFBb0IsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSx1QkFBQSxJQUFJLCtDQUFTLENBQUMsQ0FBQztTQUN6RTtJQUNILENBQUM7OzsySEEvTlUsOEJBQThCOytHQUE5Qiw4QkFBOEIsZ0VDdEMzQywrbUlBc0hBOzJGRGhGYSw4QkFBOEI7a0JBTjFDLFNBQVM7K0JBQ0UsMEJBQTBCLG1CQUduQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUNoZWNrYm94Q2hhbmdlIH0gZnJvbSAnQHNreXV4L2Zvcm1zJztcbmltcG9ydCB7XG4gIFNreU1vZGFsQ2xvc2VBcmdzLFxuICBTa3lNb2RhbENvbmZpZ3VyYXRpb25JbnRlcmZhY2UsXG4gIFNreU1vZGFsU2VydmljZSxcbn0gZnJvbSAnQHNreXV4L21vZGFscyc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5RGF0YU1hbmFnZXJDb2x1bW5QaWNrZXJDb250ZXh0IH0gZnJvbSAnLi4vZGF0YS1tYW5hZ2VyLWNvbHVtbi1waWNrZXIvZGF0YS1tYW5hZ2VyLWNvbHVtbi1waWNrZXItY29udGV4dCc7XG5pbXBvcnQgeyBTa3lEYXRhTWFuYWdlckNvbHVtblBpY2tlclNlcnZpY2UgfSBmcm9tICcuLi9kYXRhLW1hbmFnZXItY29sdW1uLXBpY2tlci9kYXRhLW1hbmFnZXItY29sdW1uLXBpY2tlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNreURhdGFNYW5hZ2VyRmlsdGVyTW9kYWxDb250ZXh0IH0gZnJvbSAnLi4vZGF0YS1tYW5hZ2VyLWZpbHRlci1jb250ZXh0JztcbmltcG9ydCB7IFNreURhdGFNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uL2RhdGEtbWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNreURhdGFNYW5hZ2VyQ29sdW1uUGlja2VyT3B0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL2RhdGEtbWFuYWdlci1jb2x1bW4tcGlja2VyLW9wdGlvbic7XG5pbXBvcnQgeyBTa3lEYXRhTWFuYWdlckNvbmZpZyB9IGZyb20gJy4uL21vZGVscy9kYXRhLW1hbmFnZXItY29uZmlnJztcbmltcG9ydCB7IFNreURhdGFNYW5hZ2VyU29ydE9wdGlvbiB9IGZyb20gJy4uL21vZGVscy9kYXRhLW1hbmFnZXItc29ydC1vcHRpb24nO1xuaW1wb3J0IHsgU2t5RGF0YU1hbmFnZXJTdGF0ZSB9IGZyb20gJy4uL21vZGVscy9kYXRhLW1hbmFnZXItc3RhdGUnO1xuaW1wb3J0IHsgU2t5RGF0YVZpZXdDb25maWcgfSBmcm9tICcuLi9tb2RlbHMvZGF0YS12aWV3LWNvbmZpZyc7XG5cbi8qKlxuICogUmVuZGVycyBhIGBza3ktdG9vbGJhcmAgd2l0aCB0aGUgY29udGVudHMgc3BlY2lmaWVkIGJ5IHRoZSBhY3RpdmUgdmlldydzIGBTa3lEYXRhVmlld0NvbmZpZ2BcbiAqIGFuZCB0aGUgYFNreURhdGFNYW5hZ2VyVG9vbGJhckxlZnRJdGVtc0NvbXBvbmVudGAsIGBTa3lEYXRhTWFuYWdlclRvb2xiYXJSaWdodEl0ZW1zQ29tcG9uZW50YCxcbiAqIGFuZCBgU2t5RGF0YU1hbmFnZXJUb29sYmFyU2VjdGlvbkNvbXBvbmVudGAgd3JhcHBlcnMuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1kYXRhLW1hbmFnZXItdG9vbGJhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLW1hbmFnZXItdG9vbGJhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGEtbWFuYWdlci10b29sYmFyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lEYXRhTWFuYWdlclRvb2xiYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCB7XG4gIHB1YmxpYyBnZXQgYWN0aXZlVmlldygpOiBTa3lEYXRhVmlld0NvbmZpZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19hY3RpdmVWaWV3O1xuICB9XG5cbiAgcHVibGljIHNldCBhY3RpdmVWaWV3KHZhbHVlOiBTa3lEYXRhVmlld0NvbmZpZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19hY3RpdmVWaWV3ID0gdmFsdWU7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRhdGFNYW5hZ2VyQ29uZmlnKCk6IFNreURhdGFNYW5hZ2VyQ29uZmlnIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX2RhdGFNYW5hZ2VyQ29uZmlnO1xuICB9XG5cbiAgcHVibGljIHNldCBkYXRhTWFuYWdlckNvbmZpZyh2YWx1ZTogU2t5RGF0YU1hbmFnZXJDb25maWcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfZGF0YU1hbmFnZXJDb25maWcgPSB2YWx1ZTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGF0YVN0YXRlKCk6IFNreURhdGFNYW5hZ2VyU3RhdGUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfZGF0YVN0YXRlO1xuICB9XG5cbiAgcHVibGljIHNldCBkYXRhU3RhdGUodmFsdWU6IFNreURhdGFNYW5hZ2VyU3RhdGUgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfZGF0YVN0YXRlID0gdmFsdWU7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLiNkYXRhTWFuYWdlclNlcnZpY2UudXBkYXRlRGF0YVN0YXRlKHZhbHVlLCB0aGlzLiNfc291cmNlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZpZXdzKCk6IFNreURhdGFWaWV3Q29uZmlnW10ge1xuICAgIHJldHVybiB0aGlzLiNfdmlld3M7XG4gIH1cblxuICBwdWJsaWMgc2V0IHZpZXdzKHZhbHVlOiBTa3lEYXRhVmlld0NvbmZpZ1tdKSB7XG4gICAgdGhpcy4jX3ZpZXdzID0gdmFsdWU7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgb25seVNob3dTZWxlY3RlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICNjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG4gICNkYXRhTWFuYWdlclNlcnZpY2U6IFNreURhdGFNYW5hZ2VyU2VydmljZTtcbiAgI21vZGFsU2VydmljZTogU2t5TW9kYWxTZXJ2aWNlO1xuICAjY29sdW1uUGlja2VyU2VydmljZTogU2t5RGF0YU1hbmFnZXJDb2x1bW5QaWNrZXJTZXJ2aWNlO1xuXG4gIC8vIHRoZSBzb3VyY2UgdG8gcHJvdmlkZSBmb3IgZGF0YSBzdGF0ZSBjaGFuZ2VzXG4gICNfc291cmNlID0gJ3Rvb2xiYXInO1xuICAjX2FjdGl2ZVZpZXc6IFNreURhdGFWaWV3Q29uZmlnIHwgdW5kZWZpbmVkO1xuICAjX2RhdGFNYW5hZ2VyQ29uZmlnOiBTa3lEYXRhTWFuYWdlckNvbmZpZyB8IHVuZGVmaW5lZDtcbiAgI19kYXRhU3RhdGU6IFNreURhdGFNYW5hZ2VyU3RhdGUgfCB1bmRlZmluZWQ7XG4gICNfdmlld3M6IFNreURhdGFWaWV3Q29uZmlnW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgZGF0YU1hbmFnZXJTZXJ2aWNlOiBTa3lEYXRhTWFuYWdlclNlcnZpY2UsXG4gICAgbW9kYWxTZXJ2aWNlOiBTa3lNb2RhbFNlcnZpY2UsXG4gICAgY29sdW1uUGlja2VyU2VydmljZTogU2t5RGF0YU1hbmFnZXJDb2x1bW5QaWNrZXJTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yID0gY2hhbmdlRGV0ZWN0b3I7XG4gICAgdGhpcy4jZGF0YU1hbmFnZXJTZXJ2aWNlID0gZGF0YU1hbmFnZXJTZXJ2aWNlO1xuICAgIHRoaXMuI21vZGFsU2VydmljZSA9IG1vZGFsU2VydmljZTtcbiAgICB0aGlzLiNjb2x1bW5QaWNrZXJTZXJ2aWNlID0gY29sdW1uUGlja2VyU2VydmljZTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLiNkYXRhTWFuYWdlclNlcnZpY2VcbiAgICAgIC5nZXRBY3RpdmVWaWV3SWRVcGRhdGVzKClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGFjdGl2ZVZpZXdJZCkgPT4ge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoYWN0aXZlVmlld0lkKSB7XG4gICAgICAgICAgdGhpcy5hY3RpdmVWaWV3ID0gdGhpcy4jZGF0YU1hbmFnZXJTZXJ2aWNlLmdldFZpZXdCeUlkKGFjdGl2ZVZpZXdJZCk7XG4gICAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy4jZGF0YU1hbmFnZXJTZXJ2aWNlXG4gICAgICAuZ2V0RGF0YVZpZXdzVXBkYXRlcygpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCh2aWV3cykgPT4ge1xuICAgICAgICB0aGlzLnZpZXdzID0gdmlld3M7XG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZVZpZXcpIHtcbiAgICAgICAgICB0aGlzLmFjdGl2ZVZpZXcgPSB0aGlzLiNkYXRhTWFuYWdlclNlcnZpY2UuZ2V0Vmlld0J5SWQoXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZVZpZXcuaWRcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLiNkYXRhTWFuYWdlclNlcnZpY2VcbiAgICAgIC5nZXREYXRhU3RhdGVVcGRhdGVzKHRoaXMuI19zb3VyY2UpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChkYXRhU3RhdGUpID0+IHtcbiAgICAgICAgdGhpcy4jX2RhdGFTdGF0ZSA9IGRhdGFTdGF0ZTtcbiAgICAgICAgdGhpcy5vbmx5U2hvd1NlbGVjdGVkID0gZGF0YVN0YXRlLm9ubHlTaG93U2VsZWN0ZWQ7XG4gICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLiNkYXRhTWFuYWdlclNlcnZpY2VcbiAgICAgIC5nZXREYXRhTWFuYWdlckNvbmZpZ1VwZGF0ZXMoKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoY29uZmlnKSA9PiB7XG4gICAgICAgIHRoaXMuZGF0YU1hbmFnZXJDb25maWcgPSBjb25maWc7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgc29ydFNlbGVjdGVkKHNvcnRPcHRpb246IFNreURhdGFNYW5hZ2VyU29ydE9wdGlvbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmRhdGFTdGF0ZSkge1xuICAgICAgdGhpcy5kYXRhU3RhdGUuYWN0aXZlU29ydE9wdGlvbiA9IHNvcnRPcHRpb247XG4gICAgICB0aGlzLiNkYXRhTWFuYWdlclNlcnZpY2UudXBkYXRlRGF0YVN0YXRlKHRoaXMuZGF0YVN0YXRlLCB0aGlzLiNfc291cmNlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25WaWV3Q2hhbmdlKHZpZXdJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy4jZGF0YU1hbmFnZXJTZXJ2aWNlLnVwZGF0ZUFjdGl2ZVZpZXdJZCh2aWV3SWQpO1xuICB9XG5cbiAgcHVibGljIHNlYXJjaEFwcGxpZWQodGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGF0YVN0YXRlKSB7XG4gICAgICB0aGlzLmRhdGFTdGF0ZS5zZWFyY2hUZXh0ID0gdGV4dDtcbiAgICAgIHRoaXMuI2RhdGFNYW5hZ2VyU2VydmljZS51cGRhdGVEYXRhU3RhdGUodGhpcy5kYXRhU3RhdGUsIHRoaXMuI19zb3VyY2UpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmaWx0ZXJCdXR0b25DbGlja2VkKCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRleHQgPSBuZXcgU2t5RGF0YU1hbmFnZXJGaWx0ZXJNb2RhbENvbnRleHQoKTtcbiAgICBjb25zdCBmaWx0ZXJNb2RhbCA9XG4gICAgICB0aGlzLmRhdGFNYW5hZ2VyQ29uZmlnICYmIHRoaXMuZGF0YU1hbmFnZXJDb25maWcuZmlsdGVyTW9kYWxDb21wb25lbnQ7XG5cbiAgICBjb250ZXh0LmZpbHRlckRhdGEgPSB0aGlzLmRhdGFTdGF0ZT8uZmlsdGVyRGF0YTtcblxuICAgIGNvbnN0IG9wdGlvbnM6IFNreU1vZGFsQ29uZmlndXJhdGlvbkludGVyZmFjZSA9IHtcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7IHByb3ZpZGU6IFNreURhdGFNYW5hZ2VyRmlsdGVyTW9kYWxDb250ZXh0LCB1c2VWYWx1ZTogY29udGV4dCB9LFxuICAgICAgXSxcbiAgICAgIHNpemU6ICdsYXJnZScsXG4gICAgfTtcblxuICAgIGlmIChmaWx0ZXJNb2RhbCkge1xuICAgICAgY29uc3QgbW9kYWxJbnN0YW5jZSA9IHRoaXMuI21vZGFsU2VydmljZS5vcGVuKGZpbHRlck1vZGFsLCBvcHRpb25zKTtcblxuICAgICAgbW9kYWxJbnN0YW5jZS5jbG9zZWQuc3Vic2NyaWJlKChyZXN1bHQ6IFNreU1vZGFsQ2xvc2VBcmdzKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmRhdGFTdGF0ZSAmJiByZXN1bHQucmVhc29uID09PSAnc2F2ZScpIHtcbiAgICAgICAgICB0aGlzLmRhdGFTdGF0ZS5maWx0ZXJEYXRhID0gcmVzdWx0LmRhdGE7XG4gICAgICAgICAgdGhpcy4jZGF0YU1hbmFnZXJTZXJ2aWNlLnVwZGF0ZURhdGFTdGF0ZShcbiAgICAgICAgICAgIHRoaXMuZGF0YVN0YXRlLFxuICAgICAgICAgICAgdGhpcy4jX3NvdXJjZVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvcGVuQ29sdW1uUGlja2VyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRhdGFTdGF0ZSAmJiB0aGlzLmFjdGl2ZVZpZXcgJiYgdGhpcy5hY3RpdmVWaWV3LmNvbHVtbk9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IHZpZXdTdGF0ZSA9IHRoaXMuZGF0YVN0YXRlLmdldFZpZXdTdGF0ZUJ5SWQodGhpcy5hY3RpdmVWaWV3LmlkKTtcbiAgICAgIGlmICh2aWV3U3RhdGUpIHtcbiAgICAgICAgY29uc3QgY29udGV4dCA9IG5ldyBTa3lEYXRhTWFuYWdlckNvbHVtblBpY2tlckNvbnRleHQoXG4gICAgICAgICAgdGhpcy5hY3RpdmVWaWV3LmNvbHVtbk9wdGlvbnMsXG4gICAgICAgICAgdmlld1N0YXRlLmRpc3BsYXllZENvbHVtbklkc1xuICAgICAgICApO1xuXG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZVZpZXcuY29sdW1uUGlja2VyU29ydFN0cmF0ZWd5KSB7XG4gICAgICAgICAgY29udGV4dC5jb2x1bW5QaWNrZXJTb3J0U3RyYXRlZ3kgPVxuICAgICAgICAgICAgdGhpcy5hY3RpdmVWaWV3LmNvbHVtblBpY2tlclNvcnRTdHJhdGVneTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9wdGlvbnM6IFNreU1vZGFsQ29uZmlndXJhdGlvbkludGVyZmFjZSA9IHtcbiAgICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICAgIHsgcHJvdmlkZTogU2t5RGF0YU1hbmFnZXJDb2x1bW5QaWNrZXJDb250ZXh0LCB1c2VWYWx1ZTogY29udGV4dCB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgbW9kYWxJbnN0YW5jZSA9IHRoaXMuI21vZGFsU2VydmljZS5vcGVuKFxuICAgICAgICAgIHRoaXMuI2NvbHVtblBpY2tlclNlcnZpY2UuZ2V0Q29tcG9uZW50VHlwZSgpLFxuICAgICAgICAgIG9wdGlvbnNcbiAgICAgICAgKTtcblxuICAgICAgICBtb2RhbEluc3RhbmNlLmNsb3NlZC5zdWJzY3JpYmUoKHJlc3VsdDogU2t5TW9kYWxDbG9zZUFyZ3MpID0+IHtcbiAgICAgICAgICBpZiAocmVzdWx0LnJlYXNvbiA9PT0gJ3NhdmUnKSB7XG4gICAgICAgICAgICBjb25zdCBkaXNwbGF5ZWRDb2x1bW5JZHMgPSByZXN1bHQuZGF0YS5tYXAoXG4gICAgICAgICAgICAgIChjb2w6IFNreURhdGFNYW5hZ2VyQ29sdW1uUGlja2VyT3B0aW9uKSA9PiBjb2wuaWRcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHZpZXdTdGF0ZS5kaXNwbGF5ZWRDb2x1bW5JZHMgPSBkaXNwbGF5ZWRDb2x1bW5JZHM7XG4gICAgICAgICAgICBpZiAodGhpcy5kYXRhU3RhdGUgJiYgdGhpcy5hY3RpdmVWaWV3KSB7XG4gICAgICAgICAgICAgIHRoaXMuZGF0YVN0YXRlID0gdGhpcy5kYXRhU3RhdGUuYWRkT3JVcGRhdGVWaWV3KFxuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlVmlldy5pZCxcbiAgICAgICAgICAgICAgICB2aWV3U3RhdGVcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RBbGwoKTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy5hY3RpdmVWaWV3Py5vblNlbGVjdEFsbENsaWNrKSB7XG4gICAgICB0aGlzLmFjdGl2ZVZpZXcub25TZWxlY3RBbGxDbGljaygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjbGVhckFsbCgpOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLmFjdGl2ZVZpZXc/Lm9uQ2xlYXJBbGxDbGljaykge1xuICAgICAgdGhpcy5hY3RpdmVWaWV3Lm9uQ2xlYXJBbGxDbGljaygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbk9ubHlTaG93U2VsZWN0ZWQoZXZlbnQ6IFNreUNoZWNrYm94Q2hhbmdlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGF0YVN0YXRlKSB7XG4gICAgICB0aGlzLmRhdGFTdGF0ZS5vbmx5U2hvd1NlbGVjdGVkID0gISFldmVudC5jaGVja2VkO1xuICAgICAgdGhpcy4jZGF0YU1hbmFnZXJTZXJ2aWNlLnVwZGF0ZURhdGFTdGF0ZSh0aGlzLmRhdGFTdGF0ZSwgdGhpcy4jX3NvdXJjZSk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2t5LWRhdGEtbWFuYWdlci10b29sYmFyXCI+XG4gIDxza3ktdG9vbGJhcj5cbiAgICA8c2t5LXRvb2xiYXItc2VjdGlvbj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNreS1kYXRhLW1hbmFnZXItdG9vbGJhci1wcmltYXJ5LWl0ZW1cIj48L25nLWNvbnRlbnQ+XG5cbiAgICAgIDxza3ktdG9vbGJhci1pdGVtICpuZ0lmPVwiYWN0aXZlVmlldz8uZmlsdGVyQnV0dG9uRW5hYmxlZFwiPlxuICAgICAgICA8c2t5LWZpbHRlci1idXR0b25cbiAgICAgICAgICBbc2hvd0J1dHRvblRleHRdPVwiYWN0aXZlVmlldz8uc2hvd0ZpbHRlckJ1dHRvblRleHRcIlxuICAgICAgICAgIChmaWx0ZXJCdXR0b25DbGljayk9XCJmaWx0ZXJCdXR0b25DbGlja2VkKClcIlxuICAgICAgICA+XG4gICAgICAgIDwvc2t5LWZpbHRlci1idXR0b24+XG4gICAgICA8L3NreS10b29sYmFyLWl0ZW0+XG5cbiAgICAgIDxza3ktdG9vbGJhci1pdGVtICpuZ0lmPVwiYWN0aXZlVmlldz8uc29ydEVuYWJsZWRcIj5cbiAgICAgICAgPHNreS1zb3J0IFtzaG93QnV0dG9uVGV4dF09XCJhY3RpdmVWaWV3Py5zaG93U29ydEJ1dHRvblRleHRcIj5cbiAgICAgICAgICA8c2t5LXNvcnQtaXRlbVxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGF0YU1hbmFnZXJDb25maWc/LnNvcnRPcHRpb25zXCJcbiAgICAgICAgICAgIFthY3RpdmVdPVwiISEoZGF0YVN0YXRlPy5hY3RpdmVTb3J0T3B0aW9uPy5pZCA9PT0gaXRlbS5pZClcIlxuICAgICAgICAgICAgKGl0ZW1TZWxlY3QpPVwic29ydFNlbGVjdGVkKGl0ZW0pXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBpdGVtLmxhYmVsIH19XG4gICAgICAgICAgPC9za3ktc29ydC1pdGVtPlxuICAgICAgICA8L3NreS1zb3J0PlxuICAgICAgPC9za3ktdG9vbGJhci1pdGVtPlxuXG4gICAgICA8c2t5LXRvb2xiYXItaXRlbSAqbmdJZj1cImFjdGl2ZVZpZXc/LmNvbHVtblBpY2tlckVuYWJsZWRcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWRlZmF1bHQgc2t5LWNvbC1waWNrZXItYnRuXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgJ3NreXV4X2RhdGFfbWFuYWdlcl9jb2x1bW5zX2J1dHRvbl90aXRsZScgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICBcIlxuICAgICAgICAgIFthdHRyLnRpdGxlXT1cIlxuICAgICAgICAgICAgJ3NreXV4X2RhdGFfbWFuYWdlcl9jb2x1bW5zX2J1dHRvbl90aXRsZScgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICBcIlxuICAgICAgICAgIChjbGljayk9XCJvcGVuQ29sdW1uUGlja2VyKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNreS1pY29uIGljb249XCJjb2x1bW5zXCI+PC9za3ktaWNvbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNreS1jb2x1bW4tc2VsZWN0b3ItYWN0aW9uLWJ0bi10ZXh0XCI+XG4gICAgICAgICAgICB7eyAnc2t5dXhfZGF0YV9tYW5hZ2VyX2NvbHVtbnNfYnV0dG9uX3RpdGxlJyB8IHNreUxpYlJlc291cmNlcyB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L3NreS10b29sYmFyLWl0ZW0+XG5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNreS1kYXRhLW1hbmFnZXItdG9vbGJhci1sZWZ0LWl0ZW1cIj48L25nLWNvbnRlbnQ+XG5cbiAgICAgIDxza3ktdG9vbGJhci1pdGVtICpuZ0lmPVwiYWN0aXZlVmlldz8uc2VhcmNoRW5hYmxlZFwiPlxuICAgICAgICA8c2t5LXNlYXJjaFxuICAgICAgICAgIFtleHBhbmRNb2RlXT1cImFjdGl2ZVZpZXc/LnNlYXJjaEV4cGFuZE1vZGVcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlclRleHRdPVwiYWN0aXZlVmlldz8uc2VhcmNoUGxhY2Vob2xkZXJUZXh0XCJcbiAgICAgICAgICBbc2VhcmNoVGV4dF09XCJkYXRhU3RhdGU/LnNlYXJjaFRleHRcIlxuICAgICAgICAgIChzZWFyY2hBcHBseSk9XCJzZWFyY2hBcHBsaWVkKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgIDwvc2t5LXNlYXJjaD5cbiAgICAgIDwvc2t5LXRvb2xiYXItaXRlbT5cblxuICAgICAgPHNreS10b29sYmFyLXZpZXctYWN0aW9ucz5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic2t5LWRhdGEtbWFuYWdlci10b29sYmFyLXJpZ2h0LWl0ZW1cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDxza3ktcmFkaW8tZ3JvdXBcbiAgICAgICAgICAqbmdJZj1cImFjdGl2ZVZpZXcgJiYgdmlld3MgJiYgdmlld3MubGVuZ3RoID4gMVwiXG4gICAgICAgICAgW2FyaWFMYWJlbF09XCInZGF0YSB2aWV3IHN3aXRjaGVyJ1wiXG4gICAgICAgICAgY2xhc3M9XCJza3ktc3dpdGNoLWljb24tZ3JvdXBcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNreS1yYWRpb1xuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHZpZXcgb2Ygdmlld3NcIlxuICAgICAgICAgICAgW2F0dHIubmFtZV09XCJ2aWV3Lm5hbWVcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ2aWV3Lm5hbWVcIlxuICAgICAgICAgICAgW2ljb25dPVwidmlldy5pY29uXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJ2aWV3LmlkXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCJ2aWV3Lm5hbWVcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJhY3RpdmVWaWV3LmlkXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwib25WaWV3Q2hhbmdlKHZpZXcuaWQpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9za3ktcmFkaW8+XG4gICAgICAgIDwvc2t5LXJhZGlvLWdyb3VwPlxuICAgICAgPC9za3ktdG9vbGJhci12aWV3LWFjdGlvbnM+XG4gICAgPC9za3ktdG9vbGJhci1zZWN0aW9uPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNreS1kYXRhLW1hbmFnZXItdG9vbGJhci1zZWN0aW9uXCI+PC9uZy1jb250ZW50PlxuICA8L3NreS10b29sYmFyPlxuXG4gIDxza3ktdG9vbGJhclxuICAgICpuZ0lmPVwiYWN0aXZlVmlldz8ubXVsdGlzZWxlY3RUb29sYmFyRW5hYmxlZFwiXG4gICAgY2xhc3M9XCJza3ktZGF0YS1tYW5hZ2VyLW11bHRpc2VsZWN0LXRvb2xiYXJcIlxuICA+XG4gICAgPHNreS10b29sYmFyLXNlY3Rpb24+XG4gICAgICA8c2t5LXRvb2xiYXItaXRlbT5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWxpbmsgc2t5LWRhdGEtbWFuYWdlci1zZWxlY3QtYWxsLWJ0blwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEFsbCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdza3l1eF9kYXRhX21hbmFnZXJfc2VsZWN0X2FsbF9idXR0b25fdGl0bGUnIHwgc2t5TGliUmVzb3VyY2VzIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9za3ktdG9vbGJhci1pdGVtPlxuICAgICAgPHNreS10b29sYmFyLWl0ZW0+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1saW5rIHNreS1kYXRhLW1hbmFnZXItY2xlYXItYWxsLWJ0blwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cImNsZWFyQWxsKClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgJ3NreXV4X2RhdGFfbWFuYWdlcl9jbGVhcl9hbGxfYnV0dG9uX3RpdGxlJyB8IHNreUxpYlJlc291cmNlcyB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvc2t5LXRvb2xiYXItaXRlbT5cbiAgICAgIDxza3ktdG9vbGJhci12aWV3LWFjdGlvbnM+XG4gICAgICAgIDxza3ktY2hlY2tib3hcbiAgICAgICAgICBbY2hlY2tlZF09XCJvbmx5U2hvd1NlbGVjdGVkXCJcbiAgICAgICAgICAoY2hhbmdlKT1cIm9uT25seVNob3dTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxza3ktY2hlY2tib3gtbGFiZWw+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAnc2t5dXhfZGF0YV9tYW5hZ2VyX3Nob3dfc2VsZWN0ZWRfb3B0aW9uX3RpdGxlJyB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICA8L3NreS1jaGVja2JveC1sYWJlbD5cbiAgICAgICAgPC9za3ktY2hlY2tib3g+XG4gICAgICA8L3NreS10b29sYmFyLXZpZXctYWN0aW9ucz5cbiAgICA8L3NreS10b29sYmFyLXNlY3Rpb24+XG4gIDwvc2t5LXRvb2xiYXI+XG48L2Rpdj5cbiJdfQ==
@@ -1,3 +1,5 @@
1
+ var _SkyDataManagerComponent_activeViewId, _SkyDataManagerComponent_allViewkeeperClasses, _SkyDataManagerComponent_ngUnsubscribe, _SkyDataManagerComponent_sourceId, _SkyDataManagerComponent_changeDetection, _SkyDataManagerComponent_dataManagerService, _SkyDataManagerComponent__isInitialized, _SkyDataManagerComponent__currentViewkeeperClasses;
2
+ import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
1
3
  import { ChangeDetectionStrategy, ChangeDetectorRef, Component, } from '@angular/core';
2
4
  import { SkyBackToTopMessageType } from '@skyux/layout';
3
5
  import { Subject } from 'rxjs';
@@ -8,73 +10,79 @@ import * as i1 from "./data-manager.service";
8
10
  import * as i2 from "@angular/common";
9
11
  import * as i3 from "@skyux/layout";
10
12
  import * as i4 from "@skyux/core";
13
+ const VIEWKEEPER_CLASSES_DEFAULT = ['.sky-data-manager-toolbar'];
11
14
  /**
12
15
  * The top-level data manager component. Provide `SkyDataManagerService` at this level.
13
16
  */
14
17
  export class SkyDataManagerComponent {
15
18
  constructor(changeDetection, dataManagerService) {
16
- this.changeDetection = changeDetection;
17
- this.dataManagerService = dataManagerService;
18
19
  this.backToTopController = new Subject();
19
20
  this.backToTopOptions = {
20
21
  buttonHidden: true,
21
22
  };
22
- this._isInitialized = false;
23
- this.allViewkeeperClasses = {};
24
- this.ngUnsubscribe = new Subject();
25
- this.sourceId = 'dataManagerComponent';
23
+ _SkyDataManagerComponent_activeViewId.set(this, void 0);
24
+ _SkyDataManagerComponent_allViewkeeperClasses.set(this, {});
25
+ _SkyDataManagerComponent_ngUnsubscribe.set(this, new Subject());
26
+ _SkyDataManagerComponent_sourceId.set(this, 'dataManagerComponent');
27
+ _SkyDataManagerComponent_changeDetection.set(this, void 0);
28
+ _SkyDataManagerComponent_dataManagerService.set(this, void 0);
29
+ _SkyDataManagerComponent__isInitialized.set(this, false);
30
+ _SkyDataManagerComponent__currentViewkeeperClasses.set(this, VIEWKEEPER_CLASSES_DEFAULT);
31
+ __classPrivateFieldSet(this, _SkyDataManagerComponent_changeDetection, changeDetection, "f");
32
+ __classPrivateFieldSet(this, _SkyDataManagerComponent_dataManagerService, dataManagerService, "f");
26
33
  }
27
34
  get currentViewkeeperClasses() {
28
- const dataManagerClasses = ['.sky-data-manager-toolbar'];
29
- let allClasses = dataManagerClasses;
30
- if (this._currentViewkeeperClasses) {
31
- allClasses = dataManagerClasses.concat(this._currentViewkeeperClasses);
32
- }
33
- return allClasses;
35
+ return __classPrivateFieldGet(this, _SkyDataManagerComponent__currentViewkeeperClasses, "f");
34
36
  }
35
37
  set currentViewkeeperClasses(value) {
36
- this._currentViewkeeperClasses = value;
37
- this.changeDetection.markForCheck();
38
+ __classPrivateFieldSet(this, _SkyDataManagerComponent__currentViewkeeperClasses, [
39
+ ...VIEWKEEPER_CLASSES_DEFAULT,
40
+ ...(value || []),
41
+ ], "f");
42
+ __classPrivateFieldGet(this, _SkyDataManagerComponent_changeDetection, "f").markForCheck();
38
43
  }
39
44
  get isInitialized() {
40
- return this._isInitialized;
45
+ return __classPrivateFieldGet(this, _SkyDataManagerComponent__isInitialized, "f");
41
46
  }
42
47
  set isInitialized(value) {
43
- this._isInitialized = value;
44
- this.changeDetection.markForCheck();
48
+ __classPrivateFieldSet(this, _SkyDataManagerComponent__isInitialized, value, "f");
49
+ __classPrivateFieldGet(this, _SkyDataManagerComponent_changeDetection, "f").markForCheck();
45
50
  }
46
51
  ngOnInit() {
47
- this.dataManagerService
48
- .getDataStateUpdates(this.sourceId)
49
- .pipe(takeUntil(this.ngUnsubscribe))
52
+ __classPrivateFieldGet(this, _SkyDataManagerComponent_dataManagerService, "f")
53
+ .getDataStateUpdates(__classPrivateFieldGet(this, _SkyDataManagerComponent_sourceId, "f"))
54
+ .pipe(takeUntil(__classPrivateFieldGet(this, _SkyDataManagerComponent_ngUnsubscribe, "f")))
50
55
  .subscribe(() => (this.isInitialized = true));
51
- this.dataManagerService.viewkeeperClasses
52
- .pipe(takeUntil(this.ngUnsubscribe))
56
+ __classPrivateFieldGet(this, _SkyDataManagerComponent_dataManagerService, "f").viewkeeperClasses
57
+ .pipe(takeUntil(__classPrivateFieldGet(this, _SkyDataManagerComponent_ngUnsubscribe, "f")))
53
58
  .subscribe((classes) => {
54
- this.allViewkeeperClasses = classes;
55
- this.currentViewkeeperClasses = classes[this.activeViewId];
59
+ __classPrivateFieldSet(this, _SkyDataManagerComponent_allViewkeeperClasses, classes, "f");
60
+ this.currentViewkeeperClasses = __classPrivateFieldGet(this, _SkyDataManagerComponent_activeViewId, "f")
61
+ ? classes[__classPrivateFieldGet(this, _SkyDataManagerComponent_activeViewId, "f")]
62
+ : undefined;
56
63
  });
57
- this.dataManagerService
64
+ __classPrivateFieldGet(this, _SkyDataManagerComponent_dataManagerService, "f")
58
65
  .getActiveViewIdUpdates()
59
- .pipe(takeUntil(this.ngUnsubscribe))
66
+ .pipe(takeUntil(__classPrivateFieldGet(this, _SkyDataManagerComponent_ngUnsubscribe, "f")))
60
67
  .subscribe((activeViewId) => {
61
- this.activeViewId = activeViewId;
68
+ __classPrivateFieldSet(this, _SkyDataManagerComponent_activeViewId, activeViewId, "f");
62
69
  this.backToTopController.next({
63
70
  type: SkyBackToTopMessageType.BackToTop,
64
71
  });
65
72
  this.currentViewkeeperClasses =
66
- this.allViewkeeperClasses[this.activeViewId];
73
+ __classPrivateFieldGet(this, _SkyDataManagerComponent_allViewkeeperClasses, "f")[__classPrivateFieldGet(this, _SkyDataManagerComponent_activeViewId, "f")];
67
74
  });
68
75
  }
69
76
  ngOnDestroy() {
70
- this.ngUnsubscribe.next();
71
- this.ngUnsubscribe.complete();
77
+ __classPrivateFieldGet(this, _SkyDataManagerComponent_ngUnsubscribe, "f").next();
78
+ __classPrivateFieldGet(this, _SkyDataManagerComponent_ngUnsubscribe, "f").complete();
72
79
  }
73
80
  }
81
+ _SkyDataManagerComponent_activeViewId = new WeakMap(), _SkyDataManagerComponent_allViewkeeperClasses = new WeakMap(), _SkyDataManagerComponent_ngUnsubscribe = new WeakMap(), _SkyDataManagerComponent_sourceId = new WeakMap(), _SkyDataManagerComponent_changeDetection = new WeakMap(), _SkyDataManagerComponent_dataManagerService = new WeakMap(), _SkyDataManagerComponent__isInitialized = new WeakMap(), _SkyDataManagerComponent__currentViewkeeperClasses = new WeakMap();
74
82
  SkyDataManagerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyDataManagerComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.SkyDataManagerService }], target: i0.ɵɵFactoryTarget.Component });
75
83
  SkyDataManagerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: SkyDataManagerComponent, selector: "sky-data-manager", ngImport: i0, template: "<div\n *ngIf=\"isInitialized\"\n class=\"sky-data-manager\"\n [skyBackToTop]=\"backToTopOptions\"\n [skyBackToTopMessageStream]=\"backToTopController\"\n [skyViewkeeper]=\"currentViewkeeperClasses\"\n #dataManager\n>\n <ng-content></ng-content>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.λ7, selector: "[skyBackToTop]", inputs: ["skyBackToTop", "skyBackToTopMessageStream"] }, { kind: "directive", type: i4.λ3, selector: "[skyViewkeeper]", inputs: ["skyViewkeeper"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
76
84
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyDataManagerComponent, decorators: [{
77
85
  type: Component,
78
86
  args: [{ selector: 'sky-data-manager', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n *ngIf=\"isInitialized\"\n class=\"sky-data-manager\"\n [skyBackToTop]=\"backToTopOptions\"\n [skyBackToTopMessageStream]=\"backToTopController\"\n [skyViewkeeper]=\"currentViewkeeperClasses\"\n #dataManager\n>\n <ng-content></ng-content>\n</div>\n" }]
79
87
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.SkyDataManagerService }]; } });
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1tYW5hZ2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9kYXRhLW1hbmFnZXIvc3JjL2xpYi9tb2R1bGVzL2RhdGEtbWFuYWdlci9kYXRhLW1hbmFnZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGEtbWFuYWdlci9zcmMvbGliL21vZHVsZXMvZGF0YS1tYW5hZ2VyL2RhdGEtbWFuYWdlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEdBR1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF1Qix1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7O0FBRS9EOztHQUVHO0FBTUgsTUFBTSxPQUFPLHVCQUF1QjtJQXVDbEMsWUFDVSxlQUFrQyxFQUNsQyxrQkFBeUM7UUFEekMsb0JBQWUsR0FBZixlQUFlLENBQW1CO1FBQ2xDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBdUI7UUFmNUMsd0JBQW1CLEdBQUcsSUFBSSxPQUFPLEVBQXVCLENBQUM7UUFFekQscUJBQWdCLEdBQUc7WUFDeEIsWUFBWSxFQUFFLElBQUk7U0FDbkIsQ0FBQztRQUVNLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBR3ZCLHlCQUFvQixHQUFtQyxFQUFFLENBQUM7UUFDMUQsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ3BDLGFBQVEsR0FBRyxzQkFBc0IsQ0FBQztJQUt2QyxDQUFDO0lBekNKLElBQVcsd0JBQXdCO1FBQ2pDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQ3pELElBQUksVUFBVSxHQUFHLGtCQUFrQixDQUFDO1FBRXBDLElBQUksSUFBSSxDQUFDLHlCQUF5QixFQUFFO1lBQ2xDLFVBQVUsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7U0FDeEU7UUFFRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFBVyx3QkFBd0IsQ0FBQyxLQUFlO1FBQ2pELElBQUksQ0FBQyx5QkFBeUIsR0FBRyxLQUFLLENBQUM7UUFDdkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsSUFBVyxhQUFhO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBVyxhQUFhLENBQUMsS0FBYztRQUNyQyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFvQk0sUUFBUTtRQUNiLElBQUksQ0FBQyxrQkFBa0I7YUFDcEIsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQzthQUNsQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUNuQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFaEQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQjthQUN0QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUNuQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNyQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsT0FBTyxDQUFDO1lBQ3BDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdELENBQUMsQ0FBQyxDQUFDO1FBRUwsSUFBSSxDQUFDLGtCQUFrQjthQUNwQixzQkFBc0IsRUFBRTthQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUNuQyxTQUFTLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRTtZQUMxQixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztZQUNqQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDO2dCQUM1QixJQUFJLEVBQUUsdUJBQXVCLENBQUMsU0FBUzthQUN4QyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsd0JBQXdCO2dCQUMzQixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2hDLENBQUM7O29IQXpFVSx1QkFBdUI7d0dBQXZCLHVCQUF1Qix3REN0QnBDLHVRQVVBOzJGRFlhLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxrQkFBa0IsbUJBRVgsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lCYWNrVG9Ub3BNZXNzYWdlLCBTa3lCYWNrVG9Ub3BNZXNzYWdlVHlwZSB9IGZyb20gJ0Bza3l1eC9sYXlvdXQnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreURhdGFNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4vZGF0YS1tYW5hZ2VyLnNlcnZpY2UnO1xuXG4vKipcbiAqIFRoZSB0b3AtbGV2ZWwgZGF0YSBtYW5hZ2VyIGNvbXBvbmVudC4gUHJvdmlkZSBgU2t5RGF0YU1hbmFnZXJTZXJ2aWNlYCBhdCB0aGlzIGxldmVsLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktZGF0YS1tYW5hZ2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGEtbWFuYWdlci5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lEYXRhTWFuYWdlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0IHtcbiAgcHVibGljIGdldCBjdXJyZW50Vmlld2tlZXBlckNsYXNzZXMoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGRhdGFNYW5hZ2VyQ2xhc3NlcyA9IFsnLnNreS1kYXRhLW1hbmFnZXItdG9vbGJhciddO1xuICAgIGxldCBhbGxDbGFzc2VzID0gZGF0YU1hbmFnZXJDbGFzc2VzO1xuXG4gICAgaWYgKHRoaXMuX2N1cnJlbnRWaWV3a2VlcGVyQ2xhc3Nlcykge1xuICAgICAgYWxsQ2xhc3NlcyA9IGRhdGFNYW5hZ2VyQ2xhc3Nlcy5jb25jYXQodGhpcy5fY3VycmVudFZpZXdrZWVwZXJDbGFzc2VzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWxsQ2xhc3NlcztcbiAgfVxuXG4gIHB1YmxpYyBzZXQgY3VycmVudFZpZXdrZWVwZXJDbGFzc2VzKHZhbHVlOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuX2N1cnJlbnRWaWV3a2VlcGVyQ2xhc3NlcyA9IHZhbHVlO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0aW9uLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGdldCBpc0luaXRpYWxpemVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc0luaXRpYWxpemVkO1xuICB9XG5cbiAgcHVibGljIHNldCBpc0luaXRpYWxpemVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5faXNJbml0aWFsaXplZCA9IHZhbHVlO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0aW9uLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGJhY2tUb1RvcENvbnRyb2xsZXIgPSBuZXcgU3ViamVjdDxTa3lCYWNrVG9Ub3BNZXNzYWdlPigpO1xuXG4gIHB1YmxpYyBiYWNrVG9Ub3BPcHRpb25zID0ge1xuICAgIGJ1dHRvbkhpZGRlbjogdHJ1ZSxcbiAgfTtcblxuICBwcml2YXRlIF9pc0luaXRpYWxpemVkID0gZmFsc2U7XG4gIHByaXZhdGUgX2N1cnJlbnRWaWV3a2VlcGVyQ2xhc3Nlczogc3RyaW5nW107XG4gIHByaXZhdGUgYWN0aXZlVmlld0lkOiBzdHJpbmc7XG4gIHByaXZhdGUgYWxsVmlld2tlZXBlckNsYXNzZXM6IHsgW3ZpZXdJZDogc3RyaW5nXTogc3RyaW5nW10gfSA9IHt9O1xuICBwcml2YXRlIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIHNvdXJjZUlkID0gJ2RhdGFNYW5hZ2VyQ29tcG9uZW50JztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBkYXRhTWFuYWdlclNlcnZpY2U6IFNreURhdGFNYW5hZ2VyU2VydmljZVxuICApIHt9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZGF0YU1hbmFnZXJTZXJ2aWNlXG4gICAgICAuZ2V0RGF0YVN0YXRlVXBkYXRlcyh0aGlzLnNvdXJjZUlkKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+ICh0aGlzLmlzSW5pdGlhbGl6ZWQgPSB0cnVlKSk7XG5cbiAgICB0aGlzLmRhdGFNYW5hZ2VyU2VydmljZS52aWV3a2VlcGVyQ2xhc3Nlc1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChjbGFzc2VzKSA9PiB7XG4gICAgICAgIHRoaXMuYWxsVmlld2tlZXBlckNsYXNzZXMgPSBjbGFzc2VzO1xuICAgICAgICB0aGlzLmN1cnJlbnRWaWV3a2VlcGVyQ2xhc3NlcyA9IGNsYXNzZXNbdGhpcy5hY3RpdmVWaWV3SWRdO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmRhdGFNYW5hZ2VyU2VydmljZVxuICAgICAgLmdldEFjdGl2ZVZpZXdJZFVwZGF0ZXMoKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChhY3RpdmVWaWV3SWQpID0+IHtcbiAgICAgICAgdGhpcy5hY3RpdmVWaWV3SWQgPSBhY3RpdmVWaWV3SWQ7XG4gICAgICAgIHRoaXMuYmFja1RvVG9wQ29udHJvbGxlci5uZXh0KHtcbiAgICAgICAgICB0eXBlOiBTa3lCYWNrVG9Ub3BNZXNzYWdlVHlwZS5CYWNrVG9Ub3AsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmN1cnJlbnRWaWV3a2VlcGVyQ2xhc3NlcyA9XG4gICAgICAgICAgdGhpcy5hbGxWaWV3a2VlcGVyQ2xhc3Nlc1t0aGlzLmFjdGl2ZVZpZXdJZF07XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG59XG4iLCI8ZGl2XG4gICpuZ0lmPVwiaXNJbml0aWFsaXplZFwiXG4gIGNsYXNzPVwic2t5LWRhdGEtbWFuYWdlclwiXG4gIFtza3lCYWNrVG9Ub3BdPVwiYmFja1RvVG9wT3B0aW9uc1wiXG4gIFtza3lCYWNrVG9Ub3BNZXNzYWdlU3RyZWFtXT1cImJhY2tUb1RvcENvbnRyb2xsZXJcIlxuICBbc2t5Vmlld2tlZXBlcl09XCJjdXJyZW50Vmlld2tlZXBlckNsYXNzZXNcIlxuICAjZGF0YU1hbmFnZXJcbj5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1tYW5hZ2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9kYXRhLW1hbmFnZXIvc3JjL2xpYi9tb2R1bGVzL2RhdGEtbWFuYWdlci9kYXRhLW1hbmFnZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGEtbWFuYWdlci9zcmMvbGliL21vZHVsZXMvZGF0YS1tYW5hZ2VyL2RhdGEtbWFuYWdlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsR0FHVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXVCLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7QUFFL0QsTUFBTSwwQkFBMEIsR0FBRyxDQUFDLDJCQUEyQixDQUFDLENBQUM7QUFFakU7O0dBRUc7QUFNSCxNQUFNLE9BQU8sdUJBQXVCO0lBc0NsQyxZQUNFLGVBQWtDLEVBQ2xDLGtCQUF5QztRQWxCcEMsd0JBQW1CLEdBQUcsSUFBSSxPQUFPLEVBQXVCLENBQUM7UUFFekQscUJBQWdCLEdBQUc7WUFDeEIsWUFBWSxFQUFFLElBQUk7U0FDbkIsQ0FBQztRQUVGLHdEQUFrQztRQUNsQyx3REFBa0QsRUFBRSxFQUFDO1FBQ3JELGlEQUFpQixJQUFJLE9BQU8sRUFBUSxFQUFDO1FBQ3JDLDRDQUFZLHNCQUFzQixFQUFDO1FBQ25DLDJEQUFvQztRQUNwQyw4REFBMkM7UUFFM0Msa0RBQWtCLEtBQUssRUFBQztRQUN4Qiw2REFBNkIsMEJBQTBCLEVBQUM7UUFNdEQsdUJBQUEsSUFBSSw0Q0FBb0IsZUFBZSxNQUFBLENBQUM7UUFDeEMsdUJBQUEsSUFBSSwrQ0FBdUIsa0JBQWtCLE1BQUEsQ0FBQztJQUNoRCxDQUFDO0lBM0NELElBQVcsd0JBQXdCO1FBQ2pDLE9BQU8sdUJBQUEsSUFBSSwwREFBMkIsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBVyx3QkFBd0IsQ0FBQyxLQUEyQjtRQUM3RCx1QkFBQSxJQUFJLHNEQUE4QjtZQUNoQyxHQUFHLDBCQUEwQjtZQUM3QixHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztTQUNqQixNQUFBLENBQUM7UUFDRix1QkFBQSxJQUFJLGdEQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFXLGFBQWE7UUFDdEIsT0FBTyx1QkFBQSxJQUFJLCtDQUFnQixDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFXLGFBQWEsQ0FBQyxLQUFjO1FBQ3JDLHVCQUFBLElBQUksMkNBQW1CLEtBQUssTUFBQSxDQUFDO1FBQzdCLHVCQUFBLElBQUksZ0RBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQTBCTSxRQUFRO1FBQ2IsdUJBQUEsSUFBSSxtREFBb0I7YUFDckIsbUJBQW1CLENBQUMsdUJBQUEsSUFBSSx5Q0FBVSxDQUFDO2FBQ25DLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQUEsSUFBSSw4Q0FBZSxDQUFDLENBQUM7YUFDcEMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRWhELHVCQUFBLElBQUksbURBQW9CLENBQUMsaUJBQWlCO2FBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQUEsSUFBSSw4Q0FBZSxDQUFDLENBQUM7YUFDcEMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDckIsdUJBQUEsSUFBSSxpREFBeUIsT0FBTyxNQUFBLENBQUM7WUFDckMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLHVCQUFBLElBQUksNkNBQWM7Z0JBQ2hELENBQUMsQ0FBQyxPQUFPLENBQUMsdUJBQUEsSUFBSSw2Q0FBYyxDQUFDO2dCQUM3QixDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO1FBRUwsdUJBQUEsSUFBSSxtREFBb0I7YUFDckIsc0JBQXNCLEVBQUU7YUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyx1QkFBQSxJQUFJLDhDQUFlLENBQUMsQ0FBQzthQUNwQyxTQUFTLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRTtZQUMxQix1QkFBQSxJQUFJLHlDQUFpQixZQUFZLE1BQUEsQ0FBQztZQUNsQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDO2dCQUM1QixJQUFJLEVBQUUsdUJBQXVCLENBQUMsU0FBUzthQUN4QyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsd0JBQXdCO2dCQUMzQix1QkFBQSxJQUFJLHFEQUFzQixDQUFDLHVCQUFBLElBQUksNkNBQWMsQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLFdBQVc7UUFDaEIsdUJBQUEsSUFBSSw4Q0FBZSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLHVCQUFBLElBQUksOENBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNqQyxDQUFDOzs7b0hBN0VVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLHdEQ3hCcEMsdVFBVUE7MkZEY2EsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLGtCQUFrQixtQkFFWCx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUJhY2tUb1RvcE1lc3NhZ2UsIFNreUJhY2tUb1RvcE1lc3NhZ2VUeXBlIH0gZnJvbSAnQHNreXV4L2xheW91dCc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5RGF0YU1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi9kYXRhLW1hbmFnZXIuc2VydmljZSc7XG5cbmNvbnN0IFZJRVdLRUVQRVJfQ0xBU1NFU19ERUZBVUxUID0gWycuc2t5LWRhdGEtbWFuYWdlci10b29sYmFyJ107XG5cbi8qKlxuICogVGhlIHRvcC1sZXZlbCBkYXRhIG1hbmFnZXIgY29tcG9uZW50LiBQcm92aWRlIGBTa3lEYXRhTWFuYWdlclNlcnZpY2VgIGF0IHRoaXMgbGV2ZWwuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1kYXRhLW1hbmFnZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YS1tYW5hZ2VyLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNreURhdGFNYW5hZ2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQge1xuICBwdWJsaWMgZ2V0IGN1cnJlbnRWaWV3a2VlcGVyQ2xhc3NlcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuI19jdXJyZW50Vmlld2tlZXBlckNsYXNzZXM7XG4gIH1cblxuICBwdWJsaWMgc2V0IGN1cnJlbnRWaWV3a2VlcGVyQ2xhc3Nlcyh2YWx1ZTogc3RyaW5nW10gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfY3VycmVudFZpZXdrZWVwZXJDbGFzc2VzID0gW1xuICAgICAgLi4uVklFV0tFRVBFUl9DTEFTU0VTX0RFRkFVTFQsXG4gICAgICAuLi4odmFsdWUgfHwgW10pLFxuICAgIF07XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0aW9uLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGdldCBpc0luaXRpYWxpemVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNfaXNJbml0aWFsaXplZDtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgaXNJbml0aWFsaXplZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuI19pc0luaXRpYWxpemVkID0gdmFsdWU7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0aW9uLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGJhY2tUb1RvcENvbnRyb2xsZXIgPSBuZXcgU3ViamVjdDxTa3lCYWNrVG9Ub3BNZXNzYWdlPigpO1xuXG4gIHB1YmxpYyBiYWNrVG9Ub3BPcHRpb25zID0ge1xuICAgIGJ1dHRvbkhpZGRlbjogdHJ1ZSxcbiAgfTtcblxuICAjYWN0aXZlVmlld0lkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICNhbGxWaWV3a2VlcGVyQ2xhc3NlczogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+ID0ge307XG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgI3NvdXJjZUlkID0gJ2RhdGFNYW5hZ2VyQ29tcG9uZW50JztcbiAgI2NoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG4gICNkYXRhTWFuYWdlclNlcnZpY2U6IFNreURhdGFNYW5hZ2VyU2VydmljZTtcblxuICAjX2lzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgI19jdXJyZW50Vmlld2tlZXBlckNsYXNzZXMgPSBWSUVXS0VFUEVSX0NMQVNTRVNfREVGQVVMVDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdG9yUmVmLFxuICAgIGRhdGFNYW5hZ2VyU2VydmljZTogU2t5RGF0YU1hbmFnZXJTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuI2NoYW5nZURldGVjdGlvbiA9IGNoYW5nZURldGVjdGlvbjtcbiAgICB0aGlzLiNkYXRhTWFuYWdlclNlcnZpY2UgPSBkYXRhTWFuYWdlclNlcnZpY2U7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy4jZGF0YU1hbmFnZXJTZXJ2aWNlXG4gICAgICAuZ2V0RGF0YVN0YXRlVXBkYXRlcyh0aGlzLiNzb3VyY2VJZClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gKHRoaXMuaXNJbml0aWFsaXplZCA9IHRydWUpKTtcblxuICAgIHRoaXMuI2RhdGFNYW5hZ2VyU2VydmljZS52aWV3a2VlcGVyQ2xhc3Nlc1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoY2xhc3NlcykgPT4ge1xuICAgICAgICB0aGlzLiNhbGxWaWV3a2VlcGVyQ2xhc3NlcyA9IGNsYXNzZXM7XG4gICAgICAgIHRoaXMuY3VycmVudFZpZXdrZWVwZXJDbGFzc2VzID0gdGhpcy4jYWN0aXZlVmlld0lkXG4gICAgICAgICAgPyBjbGFzc2VzW3RoaXMuI2FjdGl2ZVZpZXdJZF1cbiAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy4jZGF0YU1hbmFnZXJTZXJ2aWNlXG4gICAgICAuZ2V0QWN0aXZlVmlld0lkVXBkYXRlcygpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChhY3RpdmVWaWV3SWQpID0+IHtcbiAgICAgICAgdGhpcy4jYWN0aXZlVmlld0lkID0gYWN0aXZlVmlld0lkO1xuICAgICAgICB0aGlzLmJhY2tUb1RvcENvbnRyb2xsZXIubmV4dCh7XG4gICAgICAgICAgdHlwZTogU2t5QmFja1RvVG9wTWVzc2FnZVR5cGUuQmFja1RvVG9wLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jdXJyZW50Vmlld2tlZXBlckNsYXNzZXMgPVxuICAgICAgICAgIHRoaXMuI2FsbFZpZXdrZWVwZXJDbGFzc2VzW3RoaXMuI2FjdGl2ZVZpZXdJZF07XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgKm5nSWY9XCJpc0luaXRpYWxpemVkXCJcbiAgY2xhc3M9XCJza3ktZGF0YS1tYW5hZ2VyXCJcbiAgW3NreUJhY2tUb1RvcF09XCJiYWNrVG9Ub3BPcHRpb25zXCJcbiAgW3NreUJhY2tUb1RvcE1lc3NhZ2VTdHJlYW1dPVwiYmFja1RvVG9wQ29udHJvbGxlclwiXG4gIFtza3lWaWV3a2VlcGVyXT1cImN1cnJlbnRWaWV3a2VlcGVyQ2xhc3Nlc1wiXG4gICNkYXRhTWFuYWdlclxuPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbiJdfQ==