@c8y/ngx-components 1021.54.10 → 1021.54.11
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.
- package/datapoint-selector/datapoint-library.service.d.ts +2 -2
- package/datapoint-selector/datapoint-library.service.d.ts.map +1 -1
- package/datapoint-selector/datapoint-selection-list/datapoint-selection-list.component.d.ts +5 -0
- package/datapoint-selector/datapoint-selection-list/datapoint-selection-list.component.d.ts.map +1 -1
- package/datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.d.ts +13 -2
- package/datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.d.ts.map +1 -1
- package/datapoint-selector/datapoint-selector-modal/datapoint-selector-modal.component.d.ts +2 -0
- package/datapoint-selector/datapoint-selector-modal/datapoint-selector-modal.component.d.ts.map +1 -1
- package/datapoint-selector/datapoint-selector.component.d.ts +11 -1
- package/datapoint-selector/datapoint-selector.component.d.ts.map +1 -1
- package/esm2022/datapoint-selector/datapoint-library.service.mjs +11 -6
- package/esm2022/datapoint-selector/datapoint-selection-list/datapoint-selection-list.component.mjs +5 -3
- package/esm2022/datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.mjs +12 -6
- package/esm2022/datapoint-selector/datapoint-selector-modal/datapoint-selector-modal.component.mjs +5 -3
- package/esm2022/datapoint-selector/datapoint-selector.component.mjs +22 -5
- package/esm2022/upgrade/ng1/downgraded.services.mjs +3 -1
- package/esm2022/upgrade/ng1/index.mjs +4 -3
- package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +49 -19
- package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-upgrade.mjs +4 -2
- package/fesm2022/c8y-ngx-components-upgrade.mjs.map +1 -1
- package/locales/de.po +6 -6
- package/locales/fr.po +7 -7
- package/locales/ja_JP.po +222 -171
- package/locales/locales.pot +12 -3
- package/package.json +1 -1
- package/upgrade/ng1/downgraded.services.d.ts +1 -0
- package/upgrade/ng1/downgraded.services.d.ts.map +1 -1
- package/upgrade/ng1/index.d.ts.map +1 -1
|
@@ -4,6 +4,7 @@ import { gettext } from '@c8y/ngx-components';
|
|
|
4
4
|
import { BehaviorSubject, combineLatest, from } from 'rxjs';
|
|
5
5
|
import { debounceTime, distinctUntilChanged, map, shareReplay, switchMap, tap } from 'rxjs/operators';
|
|
6
6
|
import { DatapointLibraryService } from './datapoint-library.service';
|
|
7
|
+
import { AddButtonTypes } from './datapoint-selector-list-item/datapoint-selector-list-item.component';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
9
|
import * as i1 from "./datapoint-library.service";
|
|
9
10
|
import * as i2 from "@c8y/ngx-components/assets-navigator";
|
|
@@ -21,11 +22,14 @@ export class DatapointSelectorComponent {
|
|
|
21
22
|
this.selectedDatapoints = new Array();
|
|
22
23
|
this.defaultActiveState = true;
|
|
23
24
|
this.ignoreDatapointTemplates = false;
|
|
25
|
+
this.datapointTemplatesOnly = false;
|
|
24
26
|
this.guessDatapointUnit = true;
|
|
25
27
|
this.allowSearch = true;
|
|
26
28
|
this.hideSelection = false;
|
|
29
|
+
this.itemsEditable = true;
|
|
27
30
|
this.searchString = '';
|
|
28
31
|
this.maxNumberOfDatapoints = 50;
|
|
32
|
+
this.AddButtonTypes = AddButtonTypes;
|
|
29
33
|
this.loadingDatapoints = false;
|
|
30
34
|
this.assetSelection = new BehaviorSubject(null);
|
|
31
35
|
this.emptyStateSubtitleWhenNoMatchingDataPoints = gettext('Try another search term.');
|
|
@@ -34,6 +38,15 @@ export class DatapointSelectorComponent {
|
|
|
34
38
|
this.touched = false;
|
|
35
39
|
}
|
|
36
40
|
ngOnInit() {
|
|
41
|
+
this.selectorTitle = this.datapointTemplatesOnly
|
|
42
|
+
? gettext('Available data point templates')
|
|
43
|
+
: gettext('Available data points');
|
|
44
|
+
this.emptyStateTitle = this.datapointTemplatesOnly
|
|
45
|
+
? gettext('No data point templates to display.')
|
|
46
|
+
: gettext('No data points to display.');
|
|
47
|
+
this.selectedListTitle = this.datapointTemplatesOnly
|
|
48
|
+
? gettext('Selected data point templates')
|
|
49
|
+
: gettext('Selected data points');
|
|
37
50
|
this.setupObservables();
|
|
38
51
|
if (!this.ignoreDatapointTemplates) {
|
|
39
52
|
this.datapointLibraryEntries = from(this.datapointService.getFirstDatapointLibraryPage());
|
|
@@ -93,7 +106,7 @@ export class DatapointSelectorComponent {
|
|
|
93
106
|
this.datapoints$ = this.assetSelection.pipe(tap(() => {
|
|
94
107
|
this.loadingDatapoints = true;
|
|
95
108
|
}), switchMap(asset => asset?.id
|
|
96
|
-
? this.datapointService.getDatapointsOfAsset(asset, this.ignoreDatapointTemplates)
|
|
109
|
+
? this.datapointService.getDatapointsOfAsset(asset, this.ignoreDatapointTemplates, this.datapointTemplatesOnly)
|
|
97
110
|
: []), tap(() => (this.loadingDatapoints = false)), shareReplay(1));
|
|
98
111
|
this.searchStringChanges$ = this.searchString$.pipe(distinctUntilChanged(), debounceTime(500), shareReplay(1));
|
|
99
112
|
this.filteredDatapoints$ = combineLatest([this.searchStringChanges$, this.datapoints$]).pipe(map(([searchString, datapoints]) => {
|
|
@@ -140,13 +153,13 @@ export class DatapointSelectorComponent {
|
|
|
140
153
|
return false;
|
|
141
154
|
}
|
|
142
155
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DatapointSelectorComponent, deps: [{ token: i1.DatapointLibraryService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
143
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: DatapointSelectorComponent, selector: "c8y-datapoint-selector", inputs: { contextAsset: "contextAsset", allowChangingContext: "allowChangingContext", allowDatapointsFromMultipleAssets: "allowDatapointsFromMultipleAssets", defaultActiveState: "defaultActiveState", ignoreDatapointTemplates: "ignoreDatapointTemplates", guessDatapointUnit: "guessDatapointUnit", allowSearch: "allowSearch", hideSelection: "hideSelection" }, providers: [
|
|
156
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: DatapointSelectorComponent, selector: "c8y-datapoint-selector", inputs: { contextAsset: "contextAsset", allowChangingContext: "allowChangingContext", allowDatapointsFromMultipleAssets: "allowDatapointsFromMultipleAssets", defaultActiveState: "defaultActiveState", ignoreDatapointTemplates: "ignoreDatapointTemplates", datapointTemplatesOnly: "datapointTemplatesOnly", guessDatapointUnit: "guessDatapointUnit", allowSearch: "allowSearch", hideSelection: "hideSelection", itemsEditable: "itemsEditable" }, providers: [
|
|
144
157
|
{
|
|
145
158
|
provide: NG_VALUE_ACCESSOR,
|
|
146
159
|
multi: true,
|
|
147
160
|
useExisting: forwardRef(() => DatapointSelectorComponent)
|
|
148
161
|
}
|
|
149
|
-
], ngImport: i0, template: "<div\n class=\"d-grid grid__row--1 fit-h\"\n [ngClass]=\"{\n 'grid__col--3-6-3--md': allowChangingContext && !hideSelection,\n 'grid__col--8-4--md': !allowChangingContext && !hideSelection,\n 'grid__col--4-8--md': allowChangingContext && hideSelection\n }\"\n>\n <div class=\"d-flex d-col p-relative bg-level-1\" *ngIf=\"allowChangingContext\">\n <c8y-asset-selector-miller\n class=\"d-contents\"\n [(ngModel)]=\"contextAsset\"\n [asset]=\"contextAsset\"\n (onSelected)=\"selectionChanged($event)\"\n [container]=\"''\"\n [config]=\"{\n view: 'miller',\n groupsSelectable: true,\n columnHeaders: true,\n showChildDevices: true,\n showUnassignedDevices: true,\n singleColumn: true,\n search: allowSearch,\n showFilter: true\n }\"\n ></c8y-asset-selector-miller>\n </div>\n <!-- center column -->\n <div class=\"inner-scroll bg-component\">\n <ng-template #noDeviceEmptyState>\n <div class=\"p-16\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"
|
|
162
|
+
], ngImport: i0, template: "<div\n class=\"d-grid grid__row--1 fit-h\"\n [ngClass]=\"{\n 'grid__col--3-6-3--md': allowChangingContext && !hideSelection,\n 'grid__col--8-4--md': !allowChangingContext && !hideSelection,\n 'grid__col--4-8--md': allowChangingContext && hideSelection\n }\"\n>\n <div class=\"d-flex d-col p-relative bg-level-1\" *ngIf=\"allowChangingContext\">\n <c8y-asset-selector-miller\n class=\"d-contents\"\n [(ngModel)]=\"contextAsset\"\n [asset]=\"contextAsset\"\n (onSelected)=\"selectionChanged($event)\"\n [container]=\"''\"\n [config]=\"{\n view: 'miller',\n groupsSelectable: true,\n columnHeaders: true,\n showChildDevices: true,\n showUnassignedDevices: true,\n singleColumn: true,\n search: allowSearch,\n showFilter: true\n }\"\n ></c8y-asset-selector-miller>\n </div>\n <!-- center column -->\n <div class=\"inner-scroll bg-component\">\n <ng-template #noDeviceEmptyState>\n <div class=\"p-16\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"emptyStateTitle | translate\"\n [subtitle]=\"'Select an asset from the list.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n </ng-template>\n <ng-template #loadingData>\n <div class=\"p-16 text-center\">\n <c8y-loading></c8y-loading>\n </div>\n </ng-template>\n <div class=\"bg-inherit\" *ngIf=\"assetSelection | async as asset; else noDeviceEmptyState\">\n <div class=\"p-l-16 p-r-16 p-t-8 p-b-8 sticky-top bg-inherit separator-bottom\">\n <p\n class=\"text-medium text-truncate\"\n [title]=\"selectorTitle | translate\"\n >\n {{ selectorTitle | translate }}\n </p>\n <div class=\"input-group input-group-search m-t-4\" id=\"search\" *ngIf=\"!loadingDatapoints\">\n <input\n class=\"form-control\"\n type=\"search\"\n placeholder=\"Search\u2026\"\n [ngModel]=\"searchString\"\n (ngModelChange)=\"searchStringChanged($event)\"\n />\n <span class=\"input-group-addon\">\n <i c8yIcon=\"search\" *ngIf=\"!searchString; else clearSearchString\"></i>\n <ng-template #clearSearchString>\n <i class=\"text-muted\" c8yIcon=\"times\" (click)=\"searchStringChanged()\"></i>\n </ng-template>\n </span>\n </div>\n </div>\n <ng-container *ngIf=\"filteredDatapoints$ | async as filteredDatapoints; else loadingData\">\n <ng-container *ngIf=\"!loadingDatapoints; else loadingData\">\n <ng-container *ngIf=\"datapoints$ | async as datapoints\">\n <div class=\"p-16\" *ngIf=\"!filteredDatapoints.length\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"emptyStateTitle | translate\"\n [subtitle]=\"\n datapoints.length\n ? (emptyStateSubtitleWhenNoMatchingDataPoints | translate)\n : (emptyStateSubtitleWhenNoDataPointsInAsset | translate)\n \"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n\n <c8y-list-group>\n <c8y-list-item\n class=\"sticky-top\"\n style=\"top: 72px\"\n *ngIf=\"\n datapoints.length > maxNumberOfDatapoints &&\n filteredDatapoints.length >= maxNumberOfDatapoints\n \"\n >\n <div class=\"alert alert-warning m-b-0\">\n {{\n 'Due to the large number, only a subset of data points is displayed. Use search to narrow down the number of results.'\n | translate\n }}\n </div>\n </c8y-list-item>\n <c8y-datapoint-selector-list-item\n class=\"d-contents\"\n [ngModel]=\"dp\"\n [isSelected]=\"selectedDatapoints | includesDatapoint: dp\"\n [datapointLibraryEntries]=\"datapointLibraryEntries\"\n [disableTypeaheadIfSelected]=\"true\"\n [addButtonType]=\"hideSelection ? AddButtonTypes.select : AddButtonTypes.addRemove\"\n (added)=\"datapointAdded($event)\"\n (removed)=\"datapointRemoved($event)\"\n [highlightText]=\"searchStringChanges$ | async\"\n *ngFor=\"let dp of filteredDatapoints; trackBy: trackByFn\"\n [editable]=\"itemsEditable\"\n ></c8y-datapoint-selector-list-item>\n </c8y-list-group>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n <!-- last column -->\n <div class=\"inner-scroll bg-level-1\" *ngIf=\"!hideSelection\">\n <p class=\"text-medium p-l-16 p-r-16 p-t-8 p-b-8 separator-bottom sticky-top text-truncate\"\n [title]=\"selectedListTitle | translate\" translate>{{ selectedListTitle }}</p>\n <div\n class=\"d-flex flex-wrap gap-8 p-l-16 p-r-16 p-t-8 p-b-16\"\n *ngIf=\"selectedDatapoints?.length\"\n >\n <div class=\"c8y-datapoint-pill\" *ngFor=\"let selectedDp of selectedDatapoints\">\n <button\n class=\"c8y-datapoint-pill__btn\"\n type=\"button\"\n [title]=\"'Remove' | translate\"\n (click)=\"datapointRemoved(selectedDp)\"\n >\n <i class=\"icon-14\" c8yIcon=\"remove\"></i>\n </button>\n <div\n class=\"c8y-datapoint-pill__label\"\n [title]=\"selectedDp | datapointLabel: { doNotUseLabel: true, includeDevice: true }\"\n >\n <i class=\"m-r-4 icon-14\" c8yIcon=\"circle\" [style.color]=\"selectedDp.color\"></i>\n <span class=\"text-truncate\">\n <span class=\"text-truncate\">{{ selectedDp | datapointLabel }}</span>\n <small class=\"text-muted text-10\" *ngIf=\"selectedDp?.__target?.name\">\n {{ selectedDp?.__target?.name }}\n </small>\n </span>\n </div>\n </div>\n </div>\n <div class=\"p-r-8\" *ngIf=\"!selectedDatapoints || !selectedDatapoints.length\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"emptyStateTitle | translate\"\n [subtitle]=\"\n 'Select the asset, then on the available data points list, click on the plus button on the desired data point.'\n | translate\n \"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i2.MillerViewComponent, selector: "c8y-asset-selector-miller", inputs: ["config", "asset", "selectedDevice", "rootNode", "container"], outputs: ["onSelected", "onClearSelected"] }, { kind: "component", type: i3.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { 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: i3.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i3.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i6.DatapointSelectorListItemComponent, selector: "c8y-datapoint-selector-list-item", inputs: ["defaultFormOptions", "isSelected", "isCollapsed", "addButtonType", "editable", "showActiveToggle", "activeToggleDisabled", "showOptions", "datapointLibraryEntries", "actions", "optionToRemove", "hasUnlinkTemplateOption", "colorPickerDisabled", "disableTypeaheadIfSelected", "highlightText"], outputs: ["added", "removed"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.IncludesDatapointPipe, name: "includesDatapoint" }, { kind: "pipe", type: i8.DatapointLabelPipe, name: "datapointLabel" }] }); }
|
|
150
163
|
}
|
|
151
164
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DatapointSelectorComponent, decorators: [{
|
|
152
165
|
type: Component,
|
|
@@ -156,7 +169,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
156
169
|
multi: true,
|
|
157
170
|
useExisting: forwardRef(() => DatapointSelectorComponent)
|
|
158
171
|
}
|
|
159
|
-
], template: "<div\n class=\"d-grid grid__row--1 fit-h\"\n [ngClass]=\"{\n 'grid__col--3-6-3--md': allowChangingContext && !hideSelection,\n 'grid__col--8-4--md': !allowChangingContext && !hideSelection,\n 'grid__col--4-8--md': allowChangingContext && hideSelection\n }\"\n>\n <div class=\"d-flex d-col p-relative bg-level-1\" *ngIf=\"allowChangingContext\">\n <c8y-asset-selector-miller\n class=\"d-contents\"\n [(ngModel)]=\"contextAsset\"\n [asset]=\"contextAsset\"\n (onSelected)=\"selectionChanged($event)\"\n [container]=\"''\"\n [config]=\"{\n view: 'miller',\n groupsSelectable: true,\n columnHeaders: true,\n showChildDevices: true,\n showUnassignedDevices: true,\n singleColumn: true,\n search: allowSearch,\n showFilter: true\n }\"\n ></c8y-asset-selector-miller>\n </div>\n <!-- center column -->\n <div class=\"inner-scroll bg-component\">\n <ng-template #noDeviceEmptyState>\n <div class=\"p-16\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"
|
|
172
|
+
], template: "<div\n class=\"d-grid grid__row--1 fit-h\"\n [ngClass]=\"{\n 'grid__col--3-6-3--md': allowChangingContext && !hideSelection,\n 'grid__col--8-4--md': !allowChangingContext && !hideSelection,\n 'grid__col--4-8--md': allowChangingContext && hideSelection\n }\"\n>\n <div class=\"d-flex d-col p-relative bg-level-1\" *ngIf=\"allowChangingContext\">\n <c8y-asset-selector-miller\n class=\"d-contents\"\n [(ngModel)]=\"contextAsset\"\n [asset]=\"contextAsset\"\n (onSelected)=\"selectionChanged($event)\"\n [container]=\"''\"\n [config]=\"{\n view: 'miller',\n groupsSelectable: true,\n columnHeaders: true,\n showChildDevices: true,\n showUnassignedDevices: true,\n singleColumn: true,\n search: allowSearch,\n showFilter: true\n }\"\n ></c8y-asset-selector-miller>\n </div>\n <!-- center column -->\n <div class=\"inner-scroll bg-component\">\n <ng-template #noDeviceEmptyState>\n <div class=\"p-16\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"emptyStateTitle | translate\"\n [subtitle]=\"'Select an asset from the list.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n </ng-template>\n <ng-template #loadingData>\n <div class=\"p-16 text-center\">\n <c8y-loading></c8y-loading>\n </div>\n </ng-template>\n <div class=\"bg-inherit\" *ngIf=\"assetSelection | async as asset; else noDeviceEmptyState\">\n <div class=\"p-l-16 p-r-16 p-t-8 p-b-8 sticky-top bg-inherit separator-bottom\">\n <p\n class=\"text-medium text-truncate\"\n [title]=\"selectorTitle | translate\"\n >\n {{ selectorTitle | translate }}\n </p>\n <div class=\"input-group input-group-search m-t-4\" id=\"search\" *ngIf=\"!loadingDatapoints\">\n <input\n class=\"form-control\"\n type=\"search\"\n placeholder=\"Search\u2026\"\n [ngModel]=\"searchString\"\n (ngModelChange)=\"searchStringChanged($event)\"\n />\n <span class=\"input-group-addon\">\n <i c8yIcon=\"search\" *ngIf=\"!searchString; else clearSearchString\"></i>\n <ng-template #clearSearchString>\n <i class=\"text-muted\" c8yIcon=\"times\" (click)=\"searchStringChanged()\"></i>\n </ng-template>\n </span>\n </div>\n </div>\n <ng-container *ngIf=\"filteredDatapoints$ | async as filteredDatapoints; else loadingData\">\n <ng-container *ngIf=\"!loadingDatapoints; else loadingData\">\n <ng-container *ngIf=\"datapoints$ | async as datapoints\">\n <div class=\"p-16\" *ngIf=\"!filteredDatapoints.length\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"emptyStateTitle | translate\"\n [subtitle]=\"\n datapoints.length\n ? (emptyStateSubtitleWhenNoMatchingDataPoints | translate)\n : (emptyStateSubtitleWhenNoDataPointsInAsset | translate)\n \"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n\n <c8y-list-group>\n <c8y-list-item\n class=\"sticky-top\"\n style=\"top: 72px\"\n *ngIf=\"\n datapoints.length > maxNumberOfDatapoints &&\n filteredDatapoints.length >= maxNumberOfDatapoints\n \"\n >\n <div class=\"alert alert-warning m-b-0\">\n {{\n 'Due to the large number, only a subset of data points is displayed. Use search to narrow down the number of results.'\n | translate\n }}\n </div>\n </c8y-list-item>\n <c8y-datapoint-selector-list-item\n class=\"d-contents\"\n [ngModel]=\"dp\"\n [isSelected]=\"selectedDatapoints | includesDatapoint: dp\"\n [datapointLibraryEntries]=\"datapointLibraryEntries\"\n [disableTypeaheadIfSelected]=\"true\"\n [addButtonType]=\"hideSelection ? AddButtonTypes.select : AddButtonTypes.addRemove\"\n (added)=\"datapointAdded($event)\"\n (removed)=\"datapointRemoved($event)\"\n [highlightText]=\"searchStringChanges$ | async\"\n *ngFor=\"let dp of filteredDatapoints; trackBy: trackByFn\"\n [editable]=\"itemsEditable\"\n ></c8y-datapoint-selector-list-item>\n </c8y-list-group>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n <!-- last column -->\n <div class=\"inner-scroll bg-level-1\" *ngIf=\"!hideSelection\">\n <p class=\"text-medium p-l-16 p-r-16 p-t-8 p-b-8 separator-bottom sticky-top text-truncate\"\n [title]=\"selectedListTitle | translate\" translate>{{ selectedListTitle }}</p>\n <div\n class=\"d-flex flex-wrap gap-8 p-l-16 p-r-16 p-t-8 p-b-16\"\n *ngIf=\"selectedDatapoints?.length\"\n >\n <div class=\"c8y-datapoint-pill\" *ngFor=\"let selectedDp of selectedDatapoints\">\n <button\n class=\"c8y-datapoint-pill__btn\"\n type=\"button\"\n [title]=\"'Remove' | translate\"\n (click)=\"datapointRemoved(selectedDp)\"\n >\n <i class=\"icon-14\" c8yIcon=\"remove\"></i>\n </button>\n <div\n class=\"c8y-datapoint-pill__label\"\n [title]=\"selectedDp | datapointLabel: { doNotUseLabel: true, includeDevice: true }\"\n >\n <i class=\"m-r-4 icon-14\" c8yIcon=\"circle\" [style.color]=\"selectedDp.color\"></i>\n <span class=\"text-truncate\">\n <span class=\"text-truncate\">{{ selectedDp | datapointLabel }}</span>\n <small class=\"text-muted text-10\" *ngIf=\"selectedDp?.__target?.name\">\n {{ selectedDp?.__target?.name }}\n </small>\n </span>\n </div>\n </div>\n </div>\n <div class=\"p-r-8\" *ngIf=\"!selectedDatapoints || !selectedDatapoints.length\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"emptyStateTitle | translate\"\n [subtitle]=\"\n 'Select the asset, then on the available data points list, click on the plus button on the desired data point.'\n | translate\n \"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n </div>\n</div>\n" }]
|
|
160
173
|
}], ctorParameters: () => [{ type: i1.DatapointLibraryService }], propDecorators: { contextAsset: [{
|
|
161
174
|
type: Input
|
|
162
175
|
}], allowChangingContext: [{
|
|
@@ -167,11 +180,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
167
180
|
type: Input
|
|
168
181
|
}], ignoreDatapointTemplates: [{
|
|
169
182
|
type: Input
|
|
183
|
+
}], datapointTemplatesOnly: [{
|
|
184
|
+
type: Input
|
|
170
185
|
}], guessDatapointUnit: [{
|
|
171
186
|
type: Input
|
|
172
187
|
}], allowSearch: [{
|
|
173
188
|
type: Input
|
|
174
189
|
}], hideSelection: [{
|
|
175
190
|
type: Input
|
|
191
|
+
}], itemsEditable: [{
|
|
192
|
+
type: Input
|
|
176
193
|
}] } });
|
|
177
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50LXNlbGVjdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2RhdGFwb2ludC1zZWxlY3Rvci9kYXRhcG9pbnQtc2VsZWN0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZGF0YXBvaW50LXNlbGVjdG9yL2RhdGFwb2ludC1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDeEUsT0FBTyxFQUNMLFlBQVksRUFDWixvQkFBb0IsRUFDcEIsR0FBRyxFQUNILFdBQVcsRUFDWCxTQUFTLEVBQ1QsR0FBRyxFQUNKLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7Ozs7Ozs7QUFjdEUsTUFBTSxPQUFPLDBCQUEwQjtJQThCckMsWUFBb0IsZ0JBQXlDO1FBQXpDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBeUI7UUE1QnBELHlCQUFvQixHQUFHLElBQUksQ0FBQztRQUM1QixzQ0FBaUMsR0FBRyxJQUFJLENBQUM7UUFDbEQsdUJBQWtCLEdBQUcsSUFBSSxLQUFLLEVBQWMsQ0FBQztRQUNwQyx1QkFBa0IsR0FBRyxJQUFJLENBQUM7UUFDMUIsNkJBQXdCLEdBQUcsS0FBSyxDQUFDO1FBQ2pDLHVCQUFrQixHQUFHLElBQUksQ0FBQztRQUMxQixnQkFBVyxHQUFHLElBQUksQ0FBQztRQUNuQixrQkFBYSxHQUFHLEtBQUssQ0FBQztR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QUFPLEVBQUUsaUJBQWlCO2dCQUMxQixLQUFLLEVBQUUsSUFBSTtnQkFDWCxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLDBCQUEwQixDQUFDO2FBQzFEO1NBQ0YsMEJDekJILHMvTUFtS0E7OzJGRHhJYSwwQkFBMEI7a0JBWHRDLFNBQVM7K0JBQ0Usd0JBQXdCLGFBRXZCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLEtBQUssRUFBRSxJQUFJOzRCQUNYLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDJCQUEyQixDQUFDO3lCQUMxRDtxQkFDRjs0RkFHUSxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxpQ0FBaUM7c0JBQXpDLEtBQUs7Z0JBRUcsa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJSWRlbnRpZmllZCwgSVJlc3VsdExpc3QgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGZyb20sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIGRlYm91bmNlVGltZSxcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIG1hcCxcbiAgc2hhcmVSZXBsYXksXG4gIHN3aXRjaE1hcCxcbiAgdGFwXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERhdGFwb2ludExpYnJhcnlTZXJ2aWNlIH0gZnJvbSAnLi9kYXRhcG9pbnQtbGlicmFyeS5zZXJ2aWNlJztcbmltcG9ydCB7IEtQSURldGFpbHMsIE1hbmFnZWRPYmplY3RLUEkgfSBmcm9tICcuL2RhdGFwb2ludC1zZWxlY3Rpb24ubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZGF0YXBvaW50LXNlbGVjdG9yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGFwb2ludC1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRhcG9pbnRTZWxlY3RvckNvbXBvbmVudClcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRGF0YXBvaW50U2VsZWN0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgQElucHV0KCkgY29udGV4dEFzc2V0OiBJSWRlbnRpZmllZDtcbiAgQElucHV0KCkgYWxsb3dDaGFuZ2luZ0NvbnRleHQgPSB0cnVlO1xuICBASW5wdXQoKSBhbGxvd0RhdGFwb2ludHNGcm9tTXVsdGlwbGVBc3NldHMgPSB0cnVlO1xuICBzZWxlY3RlZERhdGFwb2ludHMgPSBuZXcgQXJyYXk8S1BJRGV0YWlscz4oKTtcbiAgQElucHV0KCkgZGVmYXVsdEFjdGl2ZVN0YXRlID0gdHJ1ZTtcbiAgQElucHV0KCkgaWdub3JlRGF0YXBvaW50VGVtcGxhdGVzID0gZmFsc2U7XG4gIEBJbnB1dCgpIGd1ZXNzRGF0YXBvaW50VW5pdCA9IHRydWU7XG4gIEBJbnB1dCgpIGFsbG93U2VhcmNoID0gdHJ1ZTtcbiAgQElucHV0KCkgaGlkZVNlbGVjdGlvbiA9IGZhbHNlO1xuICBzZWFyY2hTdHJpbmcgPSAnJztcbiAgbWF4TnVtYmVyT2ZEYXRhcG9pbnRzID0gNTA7XG5cbiAgbG9hZGluZ0RhdGFwb2ludHMgPSBmYWxzZTtcbiAgYXNzZXRTZWxlY3Rpb24gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElJZGVudGlmaWVkPihudWxsKTtcbiAgZGF0YXBvaW50cyQ6IE9ic2VydmFibGU8S1BJRGV0YWlsc1tdPjtcbiAgZmlsdGVyZWREYXRhcG9pbnRzJDogT2JzZXJ2YWJsZTxLUElEZXRhaWxzW10+O1xuICBzZWFyY2hTdHJpbmdDaGFuZ2VzJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBkYXRhcG9pbnRMaWJyYXJ5RW50cmllczogT2JzZXJ2YWJsZTxJUmVzdWx0TGlzdDxNYW5hZ2VkT2JqZWN0S1BJPj47XG5cbiAgZW1wdHlTdGF0ZVN1YnRpdGxlV2hlbk5vTWF0Y2hpbmdEYXRhUG9pbnRzID0gZ2V0dGV4dCgnVHJ5IGFub3RoZXIgc2VhcmNoIHRlcm0uJyk7XG4gIGVtcHR5U3RhdGVTdWJ0aXRsZVdoZW5Ob0RhdGFQb2ludHNJbkFzc2V0ID0gZ2V0dGV4dChcbiAgICAnU2VsZWN0IGFuIGFzc2V0IHdpdGggZGF0YSBwb2ludHMgZnJvbSB0aGUgbGlzdC4nXG4gICk7XG5cbiAgcHJpdmF0ZSBzZWFyY2hTdHJpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdCgnJyk7XG4gIHByaXZhdGUgdG91Y2hlZCA9IGZhbHNlO1xuICBwcml2YXRlIG9uQ2hhbmdlOiAocXVhbnRpdHk6IEtQSURldGFpbHNbXSkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBvblRvdWNoZWQ6ICgpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkYXRhcG9pbnRTZXJ2aWNlOiBEYXRhcG9pbnRMaWJyYXJ5U2VydmljZSkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldHVwT2JzZXJ2YWJsZXMoKTtcbiAgICBpZiAoIXRoaXMuaWdub3JlRGF0YXBvaW50VGVtcGxhdGVzKSB7XG4gICAgICB0aGlzLmRhdGFwb2ludExpYnJhcnlFbnRyaWVzID0gZnJvbSh0aGlzLmRhdGFwb2ludFNlcnZpY2UuZ2V0Rmlyc3REYXRhcG9pbnRMaWJyYXJ5UGFnZSgpKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb250ZXh0QXNzZXQpIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlZCh0aGlzLmNvbnRleHRBc3NldCk7XG4gICAgfVxuICB9XG5cbiAgd3JpdGVWYWx1ZShvYmo6IEtQSURldGFpbHNbXSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWREYXRhcG9pbnRzID0gb2JqO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBkYXRhcG9pbnRBZGRlZChkcDogS1BJRGV0YWlscyk6IHZvaWQge1xuICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xuICAgIGRwLl9fYWN0aXZlID0gdGhpcy5kZWZhdWx0QWN0aXZlU3RhdGU7XG4gICAgaWYgKHRoaXMuZ3Vlc3NEYXRhcG9pbnRVbml0ICYmICFkcC51bml0KSB7XG4gICAgICB0aGlzLmRhdGFwb2ludFNlcnZpY2UuZ3Vlc3NVbml0T2ZEYXRhcG9pbnQoZHAuZnJhZ21lbnQsIGRwLnNlcmllcywgZHAuX190YXJnZXQpLnRoZW4odW5pdCA9PiB7XG4gICAgICAgIGRwLnVuaXQgPSB1bml0O1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWREYXRhcG9pbnRzID0gWy4uLnRoaXMuc2VsZWN0ZWREYXRhcG9pbnRzLCBkcF07XG4gICAgdGhpcy5lbWl0Q3VycmVudFNlbGVjdGlvbigpO1xuICB9XG5cbiAgZGF0YXBvaW50UmVtb3ZlZChkcDogS1BJRGV0YWlscyk6IHZvaWQge1xuICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xuICAgIHRoaXMuc2VsZWN0ZWREYXRhcG9pbnRzID0gdGhpcy5zZWxlY3RlZERhdGFwb2ludHMuZmlsdGVyKFxuICAgICAgdG1wID0+XG4gICAgICAgIHRtcC5mcmFnbWVudCAhPT0gZHAuZnJhZ21lbnQgfHxcbiAgICAgICAgdG1wLnNlcmllcyAhPT0gZHAuc2VyaWVzIHx8XG4gICAgICAgIHRtcC5fX3RhcmdldD8uaWQgIT09IGRwLl9fdGFyZ2V0Py5pZFxuICAgICk7XG4gICAgdGhpcy5lbWl0Q3VycmVudFNlbGVjdGlvbigpO1xuICB9XG5cbiAgc2VsZWN0aW9uQ2hhbmdlZChldnQ6IElJZGVudGlmaWVkIHwgSUlkZW50aWZpZWRbXSk6IHZvaWQge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGV2dCkgJiYgZXZ0Lmxlbmd0aCAhPT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0QXNzZXQoZXZ0WzBdKTtcbiAgICB9XG5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZXZ0KSAmJiBldnQuaXRlbXMpIHtcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbkNoYW5nZWQoZXZ0Lml0ZW1zKTtcbiAgICB9XG5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZXZ0KSAmJiBldnQuaWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdEFzc2V0KGV2dCk7XG4gICAgfVxuXG4gICAgLy8gcmVzZXQgc2VsZWN0aW9uXG4gICAgdGhpcy5hc3NldFNlbGVjdGlvbi5uZXh0KG51bGwpO1xuICB9XG5cbiAgdHJhY2tCeUZuKF9pbmRleDogbnVtYmVyLCBpdGVtOiBLUElEZXRhaWxzKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7aXRlbS5mcmFnbWVudH0tJHtpdGVtLl9fdGFyZ2V0Py5pZH0tJHtpdGVtLnNlcmllc31gO1xuICB9XG5cbiAgc2VhcmNoU3RyaW5nQ2hhbmdlZChuZXdWYWx1ZSA9ICcnKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hTdHJpbmckLm5leHQobmV3VmFsdWUpO1xuICAgIHRoaXMuc2VhcmNoU3RyaW5nID0gbmV3VmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHNldHVwT2JzZXJ2YWJsZXMoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhcG9pbnRzJCA9IHRoaXMuYXNzZXRTZWxlY3Rpb24ucGlwZShcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIHRoaXMubG9hZGluZ0RhdGFwb2ludHMgPSB0cnVlO1xuICAgICAgfSksXG4gICAgICBzd2l0Y2hNYXAoYXNzZXQgPT5cbiAgICAgICAgYXNzZXQ/LmlkXG4gICAgICAgICAgPyB0aGlzLmRhdGFwb2ludFNlcnZpY2UuZ2V0RGF0YXBvaW50c09mQXNzZXQoYXNzZXQsIHRoaXMuaWdub3JlRGF0YXBvaW50VGVtcGxhdGVzKVxuICAgICAgICAgIDogW11cbiAgICAgICksXG4gICAgICB0YXAoKCkgPT4gKHRoaXMubG9hZGluZ0RhdGFwb2ludHMgPSBmYWxzZSkpLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuXG4gICAgdGhpcy5zZWFyY2hTdHJpbmdDaGFuZ2VzJCA9IHRoaXMuc2VhcmNoU3RyaW5nJC5waXBlKFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgIGRlYm91bmNlVGltZSg1MDApLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuXG4gICAgdGhpcy5maWx0ZXJlZERhdGFwb2ludHMkID0gY29tYmluZUxhdGVzdChbdGhpcy5zZWFyY2hTdHJpbmdDaGFuZ2VzJCwgdGhpcy5kYXRhcG9pbnRzJF0pLnBpcGUoXG4gICAgICBtYXAoKFtzZWFyY2hTdHJpbmcsIGRhdGFwb2ludHNdKSA9PiB7XG4gICAgICAgIGlmICghc2VhcmNoU3RyaW5nKSB7XG4gICAgICAgICAgcmV0dXJuIGRhdGFwb2ludHM7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbG93ZXJDYXNlU2VhcmNoU3RyaW5nID0gc2VhcmNoU3RyaW5nLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIHJldHVybiBkYXRhcG9pbnRzLmZpbHRlcihkYXRhcG9pbnQgPT5cbiAgICAgICAgICB0aGlzLmluY2x1ZGVzU2VhcmNoU3RyaW5nKGRhdGFwb2ludCwgbG93ZXJDYXNlU2VhcmNoU3RyaW5nKVxuICAgICAgICApO1xuICAgICAgfSksXG4gICAgICBtYXAoZmlsdGVyZWQgPT4gZmlsdGVyZWQuc2xpY2UoMCwgdGhpcy5tYXhOdW1iZXJPZkRhdGFwb2ludHMpKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdEFzc2V0KGFzc2V0OiBJSWRlbnRpZmllZCkge1xuICAgIHRoaXMuYXNzZXRTZWxlY3Rpb24ubmV4dChhc3NldCk7XG4gICAgdGhpcy5zZWFyY2hTdHJpbmdDaGFuZ2VkKCk7XG4gICAgaWYgKCF0aGlzLmFsbG93RGF0YXBvaW50c0Zyb21NdWx0aXBsZUFzc2V0cykge1xuICAgICAgdGhpcy5jbGVhclNlbGVjdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZERhdGFwb2ludHMgPSBbXTtcbiAgICB0aGlzLmVtaXRDdXJyZW50U2VsZWN0aW9uKCk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRDdXJyZW50U2VsZWN0aW9uKCkge1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy5zZWxlY3RlZERhdGFwb2ludHMpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXJrQXNUb3VjaGVkKCkge1xuICAgIGlmICghdGhpcy50b3VjaGVkKSB7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy50b3VjaGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluY2x1ZGVzU2VhcmNoU3RyaW5nKGRhdGFwb2ludDogS1BJRGV0YWlscywgbG93ZXJDYXNlU2VhcmNoU3RyaW5nOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBsYWJlbCA9IGRhdGFwb2ludC5sYWJlbD8udG9Mb3dlckNhc2UoKTtcbiAgICBpZiAobGFiZWwgJiYgbGFiZWwuaW5jbHVkZXMobG93ZXJDYXNlU2VhcmNoU3RyaW5nKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgZnJhZ21lbnQgPSBkYXRhcG9pbnQuZnJhZ21lbnQ/LnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKGZyYWdtZW50ICYmIGZyYWdtZW50LmluY2x1ZGVzKGxvd2VyQ2FzZVNlYXJjaFN0cmluZykpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHNlcmllcyA9IGRhdGFwb2ludC5zZXJpZXM/LnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKHNlcmllcyAmJiBzZXJpZXMuaW5jbHVkZXMobG93ZXJDYXNlU2VhcmNoU3RyaW5nKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwiZC1ncmlkIGdyaWRfX3Jvdy0tMSBmaXQtaFwiXG4gIFtuZ0NsYXNzXT1cIntcbiAgICAnZ3JpZF9fY29sLS0zLTYtMy0tbWQnOiBhbGxvd0NoYW5naW5nQ29udGV4dCAmJiAhaGlkZVNlbGVjdGlvbixcbiAgICAnZ3JpZF9fY29sLS04LTQtLW1kJzogIWFsbG93Q2hhbmdpbmdDb250ZXh0ICYmICFoaWRlU2VsZWN0aW9uLFxuICAgICdncmlkX19jb2wtLTQtOC0tbWQnOiBhbGxvd0NoYW5naW5nQ29udGV4dCAmJiBoaWRlU2VsZWN0aW9uXG4gIH1cIlxuPlxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGQtY29sIHAtcmVsYXRpdmUgYmctbGV2ZWwtMVwiICpuZ0lmPVwiYWxsb3dDaGFuZ2luZ0NvbnRleHRcIj5cbiAgICA8Yzh5LWFzc2V0LXNlbGVjdG9yLW1pbGxlclxuICAgICAgY2xhc3M9XCJkLWNvbnRlbnRzXCJcbiAgICAgIFsobmdNb2RlbCldPVwiY29udGV4dEFzc2V0XCJcbiAgICAgIFthc3NldF09XCJjb250ZXh0QXNzZXRcIlxuICAgICAgKG9uU2VsZWN0ZWQpPVwic2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgIFtjb250YWluZXJdPVwiJydcIlxuICAgICAgW2NvbmZpZ109XCJ7XG4gICAgICAgIHZpZXc6ICdtaWxsZXInLFxuICAgICAgICBncm91cHNTZWxlY3RhYmxlOiB0cnVlLFxuICAgICAgICBjb2x1bW5IZWFkZXJzOiB0cnVlLFxuICAgICAgICBzaG93Q2hpbGREZXZpY2VzOiB0cnVlLFxuICAgICAgICBzaG93VW5hc3NpZ25lZERldmljZXM6IHRydWUsXG4gICAgICAgIHNpbmdsZUNvbHVtbjogdHJ1ZSxcbiAgICAgICAgc2VhcmNoOiBhbGxvd1NlYXJjaCxcbiAgICAgICAgc2hvd0ZpbHRlcjogdHJ1ZVxuICAgICAgfVwiXG4gICAgPjwvYzh5LWFzc2V0LXNlbGVjdG9yLW1pbGxlcj5cbiAgPC9kaXY+XG4gIDwhLS0gY2VudGVyIGNvbHVtbiAtLT5cbiAgPGRpdiBjbGFzcz1cImlubmVyLXNjcm9sbCBiZy1jb21wb25lbnRcIj5cbiAgICA8bmctdGVtcGxhdGUgI25vRGV2aWNlRW1wdHlTdGF0ZT5cbiAgICAgIDxkaXYgY2xhc3M9XCJwLTE2XCI+XG4gICAgICAgIDxjOHktdWktZW1wdHktc3RhdGVcbiAgICAgICAgICBbaWNvbl09XCInYzh5LWRhdGEtcG9pbnRzJ1wiXG4gICAgICAgICAgW3RpdGxlXT1cIidObyBkYXRhIHBvaW50cyB0byBkaXNwbGF5LicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFtzdWJ0aXRsZV09XCInU2VsZWN0IGFuIGFzc2V0IGZyb20gdGhlIGxpc3QuJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgW2hvcml6b250YWxdPVwidHJ1ZVwiXG4gICAgICAgID48L2M4eS11aS1lbXB0eS1zdGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNsb2FkaW5nRGF0YT5cbiAgICAgIDxkaXYgY2xhc3M9XCJwLTE2IHRleHQtY2VudGVyXCI+XG4gICAgICAgIDxjOHktbG9hZGluZz48L2M4eS1sb2FkaW5nPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8ZGl2IGNsYXNzPVwiYmctaW5oZXJpdFwiICpuZ0lmPVwiYXNzZXRTZWxlY3Rpb24gfCBhc3luYyBhcyBhc3NldDsgZWxzZSBub0RldmljZUVtcHR5U3RhdGVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwLWwtMTYgcC1yLTE2IHAtdC04IHAtYi04IHN0aWNreS10b3AgYmctaW5oZXJpdCBzZXBhcmF0b3ItYm90dG9tXCI+XG4gICAgICAgIDxwIGNsYXNzPVwidGV4dC1tZWRpdW0gdGV4dC10cnVuY2F0ZVwiIFt0aXRsZV09XCInQXZhaWxhYmxlIGRhdGEgcG9pbnRzJyB8IHRyYW5zbGF0ZVwiPlxuICAgICAgICAgIHt7ICdBdmFpbGFibGUgZGF0YSBwb2ludHMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvcD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIGlucHV0LWdyb3VwLXNlYXJjaCBtLXQtNFwiIGlkPVwic2VhcmNoXCIgKm5nSWY9XCIhbG9hZGluZ0RhdGFwb2ludHNcIj5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2jigKZcIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwic2VhcmNoU3RyaW5nXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlYXJjaFN0cmluZ0NoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLWFkZG9uXCI+XG4gICAgICAgICAgICA8aSBjOHlJY29uPVwic2VhcmNoXCIgKm5nSWY9XCIhc2VhcmNoU3RyaW5nOyBlbHNlIGNsZWFyU2VhcmNoU3RyaW5nXCI+PC9pPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjbGVhclNlYXJjaFN0cmluZz5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJ0ZXh0LW11dGVkXCIgYzh5SWNvbj1cInRpbWVzXCIgKGNsaWNrKT1cInNlYXJjaFN0cmluZ0NoYW5nZWQoKVwiPjwvaT5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlcmVkRGF0YXBvaW50cyQgfCBhc3luYyBhcyBmaWx0ZXJlZERhdGFwb2ludHM7IGVsc2UgbG9hZGluZ0RhdGFcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFsb2FkaW5nRGF0YXBvaW50czsgZWxzZSBsb2FkaW5nRGF0YVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhcG9pbnRzJCB8IGFzeW5jIGFzIGRhdGFwb2ludHNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTE2XCIgKm5nSWY9XCIhZmlsdGVyZWREYXRhcG9pbnRzLmxlbmd0aFwiPlxuICAgICAgICAgICAgICA8Yzh5LXVpLWVtcHR5LXN0YXRlXG4gICAgICAgICAgICAgICAgW2ljb25dPVwiJ2M4eS1kYXRhLXBvaW50cydcIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCInTm8gZGF0YSBwb2ludHMgdG8gZGlzcGxheS4nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbc3VidGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICBkYXRhcG9pbnRzLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICA/IChlbXB0eVN0YXRlU3VidGl0bGVXaGVuTm9NYXRjaGluZ0RhdGFQb2ludHMgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgICAgICAgICAgIDogKGVtcHR5U3RhdGVTdWJ0aXRsZVdoZW5Ob0RhdGFQb2ludHNJbkFzc2V0IHwgdHJhbnNsYXRlKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgW2hvcml6b250YWxdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgID48L2M4eS11aS1lbXB0eS1zdGF0ZT5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8Yzh5LWxpc3QtZ3JvdXA+XG4gICAgICAgICAgICAgIDxjOHktbGlzdC1pdGVtXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzdGlja3ktdG9wXCJcbiAgICAgICAgICAgICAgICBzdHlsZT1cInRvcDogNzJweFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgIGRhdGFwb2ludHMubGVuZ3RoID4gbWF4TnVtYmVyT2ZEYXRhcG9pbnRzICYmXG4gICAgICAgICAgICAgICAgICBmaWx0ZXJlZERhdGFwb2ludHMubGVuZ3RoID49IG1heE51bWJlck9mRGF0YXBvaW50c1xuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtd2FybmluZyBtLWItMFwiPlxuICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgJ0R1ZSB0byB0aGUgbGFyZ2UgbnVtYmVyLCBvbmx5IGEgc3Vic2V0IG9mIGRhdGEgcG9pbnRzIGlzIGRpc3BsYXllZC4gVXNlIHNlYXJjaCB0byBuYXJyb3cgZG93biB0aGUgbnVtYmVyIG9mIHJlc3VsdHMuJ1xuICAgICAgICAgICAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2M4eS1saXN0LWl0ZW0+XG4gICAgICAgICAgICAgIDxjOHktZGF0YXBvaW50LXNlbGVjdG9yLWxpc3QtaXRlbVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1jb250ZW50c1wiXG4gICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZHBcIlxuICAgICAgICAgICAgICAgIFtpc1NlbGVjdGVkXT1cInNlbGVjdGVkRGF0YXBvaW50cyB8IGluY2x1ZGVzRGF0YXBvaW50OiBkcFwiXG4gICAgICAgICAgICAgICAgW2RhdGFwb2ludExpYnJhcnlFbnRyaWVzXT1cImRhdGFwb2ludExpYnJhcnlFbnRyaWVzXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZVR5cGVhaGVhZElmU2VsZWN0ZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgKGFkZGVkKT1cImRhdGFwb2ludEFkZGVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChyZW1vdmVkKT1cImRhdGFwb2ludFJlbW92ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW2hpZ2hsaWdodFRleHRdPVwic2VhcmNoU3RyaW5nQ2hhbmdlcyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRwIG9mIGZpbHRlcmVkRGF0YXBvaW50czsgdHJhY2tCeTogdHJhY2tCeUZuXCJcbiAgICAgICAgICAgICAgPjwvYzh5LWRhdGFwb2ludC1zZWxlY3Rvci1saXN0LWl0ZW0+XG4gICAgICAgICAgICA8L2M4eS1saXN0LWdyb3VwPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPCEtLSBsYXN0IGNvbHVtbiAgLS0+XG4gIDxkaXYgY2xhc3M9XCJpbm5lci1zY3JvbGwgYmctbGV2ZWwtMVwiICpuZ0lmPVwiIWhpZGVTZWxlY3Rpb25cIj5cbiAgICA8cFxuICAgICAgY2xhc3M9XCJ0ZXh0LW1lZGl1bSBwLWwtMTYgcC1yLTE2IHAtdC04IHAtYi04IHNlcGFyYXRvci1ib3R0b20gc3RpY2t5LXRvcCB0ZXh0LXRydW5jYXRlXCJcbiAgICAgIFt0aXRsZV09XCInU2VsZWN0ZWQgZGF0YSBwb2ludHMnIHwgdHJhbnNsYXRlXCJcbiAgICAgIHRyYW5zbGF0ZVxuICAgID5cbiAgICAgIFNlbGVjdGVkIGRhdGEgcG9pbnRzXG4gICAgPC9wPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtd3JhcCBnYXAtOCBwLWwtMTYgcC1yLTE2IHAtdC04IHAtYi0xNlwiXG4gICAgICAqbmdJZj1cInNlbGVjdGVkRGF0YXBvaW50cz8ubGVuZ3RoXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwiYzh5LWRhdGFwb2ludC1waWxsXCIgKm5nRm9yPVwibGV0IHNlbGVjdGVkRHAgb2Ygc2VsZWN0ZWREYXRhcG9pbnRzXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImM4eS1kYXRhcG9pbnQtcGlsbF9fYnRuXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBbdGl0bGVdPVwiJ1JlbW92ZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIChjbGljayk9XCJkYXRhcG9pbnRSZW1vdmVkKHNlbGVjdGVkRHApXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbi0xNFwiIGM4eUljb249XCJyZW1vdmVcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJjOHktZGF0YXBvaW50LXBpbGxfX2xhYmVsXCJcbiAgICAgICAgICBbdGl0bGVdPVwic2VsZWN0ZWREcCB8IGRhdGFwb2ludExhYmVsOiB7IGRvTm90VXNlTGFiZWw6IHRydWUsIGluY2x1ZGVEZXZpY2U6IHRydWUgfVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aSBjbGFzcz1cIm0tci00IGljb24tMTRcIiBjOHlJY29uPVwiY2lyY2xlXCIgW3N0eWxlLmNvbG9yXT1cInNlbGVjdGVkRHAuY29sb3JcIj48L2k+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIj57eyBzZWxlY3RlZERwIHwgZGF0YXBvaW50TGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LW11dGVkIHRleHQtMTBcIiAqbmdJZj1cInNlbGVjdGVkRHA/Ll9fdGFyZ2V0Py5uYW1lXCI+XG4gICAgICAgICAgICAgIHt7IHNlbGVjdGVkRHA/Ll9fdGFyZ2V0Py5uYW1lIH19XG4gICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicC1yLThcIiAqbmdJZj1cIiFzZWxlY3RlZERhdGFwb2ludHMgfHwgIXNlbGVjdGVkRGF0YXBvaW50cy5sZW5ndGhcIj5cbiAgICAgIDxjOHktdWktZW1wdHktc3RhdGVcbiAgICAgICAgW2ljb25dPVwiJ2M4eS1kYXRhLXBvaW50cydcIlxuICAgICAgICBbdGl0bGVdPVwiJ05vIGRhdGEgcG9pbnRzIHNlbGVjdGVkLicgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbc3VidGl0bGVdPVwiXG4gICAgICAgICAgJ1NlbGVjdCB0aGUgYXNzZXQsIHRoZW4gb24gdGhlIGF2YWlsYWJsZSBkYXRhIHBvaW50cyBsaXN0LCBjbGljayBvbiB0aGUgcGx1cyBidXR0b24gb24gdGhlIGRlc2lyZWQgZGF0YSBwb2ludC4nXG4gICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICBcIlxuICAgICAgICBbaG9yaXpvbnRhbF09XCJ0cnVlXCJcbiAgICAgID48L2M4eS11aS1lbXB0eS1zdGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
194
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50LXNlbGVjdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2RhdGFwb2ludC1zZWxlY3Rvci9kYXRhcG9pbnQtc2VsZWN0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZGF0YXBvaW50LXNlbGVjdG9yL2RhdGFwb2ludC1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDeEUsT0FBTyxFQUNMLFlBQVksRUFDWixvQkFBb0IsRUFDcEIsR0FBRyxFQUNILFdBQVcsRUFDWCxTQUFTLEVBQ1QsR0FBRyxFQUNKLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFdEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVFQUF1RSxDQUFDOzs7Ozs7Ozs7O0FBYXZHLE1BQU0sT0FBTywwQkFBMEI7SUFvQ3JDLFlBQW9CLGdCQUF5QztRQUF6QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXlCO1FBbENwRCx5QkFBb0IsR0FBRyxJQUFJLENBQUM7UUFDNUIsc0NBQWlDLEdBQUcsSUFBSSxDQUFDO1FBQ2xELHVCQUFrQixHQUFHLElBQUksS0FBSyxFQUFjLENBQUM7UUFDcEMsdUJBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQzFCLDZCQUF3QixHQUFHLEtBQUssQ0FBQztRQUNqQywyQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFDL0IsdUJBQWtC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Ryx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSUlkZW50aWZpZWQsIElSZXN1bHRMaXN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmcm9tLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBkZWJvdW5jZVRpbWUsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBtYXAsXG4gIHNoYXJlUmVwbGF5LFxuICBzd2l0Y2hNYXAsXG4gIHRhcFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEYXRhcG9pbnRMaWJyYXJ5U2VydmljZSB9IGZyb20gJy4vZGF0YXBvaW50LWxpYnJhcnkuc2VydmljZSc7XG5pbXBvcnQgeyBLUElEZXRhaWxzLCBNYW5hZ2VkT2JqZWN0S1BJIH0gZnJvbSAnLi9kYXRhcG9pbnQtc2VsZWN0aW9uLm1vZGVsJztcbmltcG9ydCB7IEFkZEJ1dHRvblR5cGVzIH0gZnJvbSAnLi9kYXRhcG9pbnQtc2VsZWN0b3ItbGlzdC1pdGVtL2RhdGFwb2ludC1zZWxlY3Rvci1saXN0LWl0ZW0uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWRhdGFwb2ludC1zZWxlY3RvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhcG9pbnQtc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0YXBvaW50U2VsZWN0b3JDb21wb25lbnQpXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIERhdGFwb2ludFNlbGVjdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIEBJbnB1dCgpIGNvbnRleHRBc3NldDogSUlkZW50aWZpZWQ7XG4gIEBJbnB1dCgpIGFsbG93Q2hhbmdpbmdDb250ZXh0ID0gdHJ1ZTtcbiAgQElucHV0KCkgYWxsb3dEYXRhcG9pbnRzRnJvbU11bHRpcGxlQXNzZXRzID0gdHJ1ZTtcbiAgc2VsZWN0ZWREYXRhcG9pbnRzID0gbmV3IEFycmF5PEtQSURldGFpbHM+KCk7XG4gIEBJbnB1dCgpIGRlZmF1bHRBY3RpdmVTdGF0ZSA9IHRydWU7XG4gIEBJbnB1dCgpIGlnbm9yZURhdGFwb2ludFRlbXBsYXRlcyA9IGZhbHNlO1xuICBASW5wdXQoKSBkYXRhcG9pbnRUZW1wbGF0ZXNPbmx5ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGd1ZXNzRGF0YXBvaW50VW5pdCA9IHRydWU7XG4gIEBJbnB1dCgpIGFsbG93U2VhcmNoID0gdHJ1ZTtcbiAgQElucHV0KCkgaGlkZVNlbGVjdGlvbiA9IGZhbHNlO1xuICBASW5wdXQoKSBpdGVtc0VkaXRhYmxlID0gdHJ1ZTtcbiAgc2VhcmNoU3RyaW5nID0gJyc7XG4gIG1heE51bWJlck9mRGF0YXBvaW50cyA9IDUwO1xuICBzZWxlY3RvclRpdGxlOiBzdHJpbmc7XG4gIGVtcHR5U3RhdGVUaXRsZTogc3RyaW5nO1xuICBzZWxlY3RlZExpc3RUaXRsZTogc3RyaW5nO1xuICBBZGRCdXR0b25UeXBlcyA9IEFkZEJ1dHRvblR5cGVzO1xuXG4gIGxvYWRpbmdEYXRhcG9pbnRzID0gZmFsc2U7XG4gIGFzc2V0U2VsZWN0aW9uID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJSWRlbnRpZmllZD4obnVsbCk7XG4gIGRhdGFwb2ludHMkOiBPYnNlcnZhYmxlPEtQSURldGFpbHNbXT47XG4gIGZpbHRlcmVkRGF0YXBvaW50cyQ6IE9ic2VydmFibGU8S1BJRGV0YWlsc1tdPjtcbiAgc2VhcmNoU3RyaW5nQ2hhbmdlcyQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgZGF0YXBvaW50TGlicmFyeUVudHJpZXM6IE9ic2VydmFibGU8SVJlc3VsdExpc3Q8TWFuYWdlZE9iamVjdEtQST4+O1xuXG4gIGVtcHR5U3RhdGVTdWJ0aXRsZVdoZW5Ob01hdGNoaW5nRGF0YVBvaW50cyA9IGdldHRleHQoJ1RyeSBhbm90aGVyIHNlYXJjaCB0ZXJtLicpO1xuICBlbXB0eVN0YXRlU3VidGl0bGVXaGVuTm9EYXRhUG9pbnRzSW5Bc3NldCA9IGdldHRleHQoXG4gICAgJ1NlbGVjdCBhbiBhc3NldCB3aXRoIGRhdGEgcG9pbnRzIGZyb20gdGhlIGxpc3QuJ1xuICApO1xuXG4gIHByaXZhdGUgc2VhcmNoU3RyaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoJycpO1xuICBwcml2YXRlIHRvdWNoZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBvbkNoYW5nZTogKHF1YW50aXR5OiBLUElEZXRhaWxzW10pID0+IHZvaWQ7XG4gIHByaXZhdGUgb25Ub3VjaGVkOiAoKSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0YXBvaW50U2VydmljZTogRGF0YXBvaW50TGlicmFyeVNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RvclRpdGxlID0gdGhpcy5kYXRhcG9pbnRUZW1wbGF0ZXNPbmx5XG4gICAgICA/IGdldHRleHQoJ0F2YWlsYWJsZSBkYXRhIHBvaW50IHRlbXBsYXRlcycpXG4gICAgICA6IGdldHRleHQoJ0F2YWlsYWJsZSBkYXRhIHBvaW50cycpO1xuICAgIHRoaXMuZW1wdHlTdGF0ZVRpdGxlID0gdGhpcy5kYXRhcG9pbnRUZW1wbGF0ZXNPbmx5XG4gICAgICA/IGdldHRleHQoJ05vIGRhdGEgcG9pbnQgdGVtcGxhdGVzIHRvIGRpc3BsYXkuJylcbiAgICAgIDogZ2V0dGV4dCgnTm8gZGF0YSBwb2ludHMgdG8gZGlzcGxheS4nKTtcbiAgICB0aGlzLnNlbGVjdGVkTGlzdFRpdGxlID0gdGhpcy5kYXRhcG9pbnRUZW1wbGF0ZXNPbmx5XG4gICAgICA/IGdldHRleHQoJ1NlbGVjdGVkIGRhdGEgcG9pbnQgdGVtcGxhdGVzJylcbiAgICAgIDogZ2V0dGV4dCgnU2VsZWN0ZWQgZGF0YSBwb2ludHMnKTtcbiAgICB0aGlzLnNldHVwT2JzZXJ2YWJsZXMoKTtcbiAgICBpZiAoIXRoaXMuaWdub3JlRGF0YXBvaW50VGVtcGxhdGVzKSB7XG4gICAgICB0aGlzLmRhdGFwb2ludExpYnJhcnlFbnRyaWVzID0gZnJvbSh0aGlzLmRhdGFwb2ludFNlcnZpY2UuZ2V0Rmlyc3REYXRhcG9pbnRMaWJyYXJ5UGFnZSgpKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb250ZXh0QXNzZXQpIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlZCh0aGlzLmNvbnRleHRBc3NldCk7XG4gICAgfVxuICB9XG5cbiAgd3JpdGVWYWx1ZShvYmo6IEtQSURldGFpbHNbXSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWREYXRhcG9pbnRzID0gb2JqO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBkYXRhcG9pbnRBZGRlZChkcDogS1BJRGV0YWlscyk6IHZvaWQge1xuICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xuICAgIGRwLl9fYWN0aXZlID0gdGhpcy5kZWZhdWx0QWN0aXZlU3RhdGU7XG4gICAgaWYgKHRoaXMuZ3Vlc3NEYXRhcG9pbnRVbml0ICYmICFkcC51bml0KSB7XG4gICAgICB0aGlzLmRhdGFwb2ludFNlcnZpY2UuZ3Vlc3NVbml0T2ZEYXRhcG9pbnQoZHAuZnJhZ21lbnQsIGRwLnNlcmllcywgZHAuX190YXJnZXQpLnRoZW4odW5pdCA9PiB7XG4gICAgICAgIGRwLnVuaXQgPSB1bml0O1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWREYXRhcG9pbnRzID0gWy4uLnRoaXMuc2VsZWN0ZWREYXRhcG9pbnRzLCBkcF07XG4gICAgdGhpcy5lbWl0Q3VycmVudFNlbGVjdGlvbigpO1xuICB9XG5cbiAgZGF0YXBvaW50UmVtb3ZlZChkcDogS1BJRGV0YWlscyk6IHZvaWQge1xuICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xuICAgIHRoaXMuc2VsZWN0ZWREYXRhcG9pbnRzID0gdGhpcy5zZWxlY3RlZERhdGFwb2ludHMuZmlsdGVyKFxuICAgICAgdG1wID0+XG4gICAgICAgIHRtcC5mcmFnbWVudCAhPT0gZHAuZnJhZ21lbnQgfHxcbiAgICAgICAgdG1wLnNlcmllcyAhPT0gZHAuc2VyaWVzIHx8XG4gICAgICAgIHRtcC5fX3RhcmdldD8uaWQgIT09IGRwLl9fdGFyZ2V0Py5pZFxuICAgICk7XG4gICAgdGhpcy5lbWl0Q3VycmVudFNlbGVjdGlvbigpO1xuICB9XG5cbiAgc2VsZWN0aW9uQ2hhbmdlZChldnQ6IElJZGVudGlmaWVkIHwgSUlkZW50aWZpZWRbXSk6IHZvaWQge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGV2dCkgJiYgZXZ0Lmxlbmd0aCAhPT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0QXNzZXQoZXZ0WzBdKTtcbiAgICB9XG5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZXZ0KSAmJiBldnQuaXRlbXMpIHtcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbkNoYW5nZWQoZXZ0Lml0ZW1zKTtcbiAgICB9XG5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZXZ0KSAmJiBldnQuaWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdEFzc2V0KGV2dCk7XG4gICAgfVxuXG4gICAgLy8gcmVzZXQgc2VsZWN0aW9uXG4gICAgdGhpcy5hc3NldFNlbGVjdGlvbi5uZXh0KG51bGwpO1xuICB9XG5cbiAgdHJhY2tCeUZuKF9pbmRleDogbnVtYmVyLCBpdGVtOiBLUElEZXRhaWxzKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7aXRlbS5mcmFnbWVudH0tJHtpdGVtLl9fdGFyZ2V0Py5pZH0tJHtpdGVtLnNlcmllc31gO1xuICB9XG5cbiAgc2VhcmNoU3RyaW5nQ2hhbmdlZChuZXdWYWx1ZSA9ICcnKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hTdHJpbmckLm5leHQobmV3VmFsdWUpO1xuICAgIHRoaXMuc2VhcmNoU3RyaW5nID0gbmV3VmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHNldHVwT2JzZXJ2YWJsZXMoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhcG9pbnRzJCA9IHRoaXMuYXNzZXRTZWxlY3Rpb24ucGlwZShcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIHRoaXMubG9hZGluZ0RhdGFwb2ludHMgPSB0cnVlO1xuICAgICAgfSksXG4gICAgICBzd2l0Y2hNYXAoYXNzZXQgPT5cbiAgICAgICAgYXNzZXQ/LmlkXG4gICAgICAgICAgPyB0aGlzLmRhdGFwb2ludFNlcnZpY2UuZ2V0RGF0YXBvaW50c09mQXNzZXQoXG4gICAgICAgICAgICAgIGFzc2V0LFxuICAgICAgICAgICAgICB0aGlzLmlnbm9yZURhdGFwb2ludFRlbXBsYXRlcyxcbiAgICAgICAgICAgICAgdGhpcy5kYXRhcG9pbnRUZW1wbGF0ZXNPbmx5XG4gICAgICAgICAgICApXG4gICAgICAgICAgOiBbXVxuICAgICAgKSxcbiAgICAgIHRhcCgoKSA9PiAodGhpcy5sb2FkaW5nRGF0YXBvaW50cyA9IGZhbHNlKSksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG5cbiAgICB0aGlzLnNlYXJjaFN0cmluZ0NoYW5nZXMkID0gdGhpcy5zZWFyY2hTdHJpbmckLnBpcGUoXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgZGVib3VuY2VUaW1lKDUwMCksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG5cbiAgICB0aGlzLmZpbHRlcmVkRGF0YXBvaW50cyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLnNlYXJjaFN0cmluZ0NoYW5nZXMkLCB0aGlzLmRhdGFwb2ludHMkXSkucGlwZShcbiAgICAgIG1hcCgoW3NlYXJjaFN0cmluZywgZGF0YXBvaW50c10pID0+IHtcbiAgICAgICAgaWYgKCFzZWFyY2hTdHJpbmcpIHtcbiAgICAgICAgICByZXR1cm4gZGF0YXBvaW50cztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsb3dlckNhc2VTZWFyY2hTdHJpbmcgPSBzZWFyY2hTdHJpbmcudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgcmV0dXJuIGRhdGFwb2ludHMuZmlsdGVyKGRhdGFwb2ludCA9PlxuICAgICAgICAgIHRoaXMuaW5jbHVkZXNTZWFyY2hTdHJpbmcoZGF0YXBvaW50LCBsb3dlckNhc2VTZWFyY2hTdHJpbmcpXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICAgIG1hcChmaWx0ZXJlZCA9PiBmaWx0ZXJlZC5zbGljZSgwLCB0aGlzLm1heE51bWJlck9mRGF0YXBvaW50cykpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0QXNzZXQoYXNzZXQ6IElJZGVudGlmaWVkKSB7XG4gICAgdGhpcy5hc3NldFNlbGVjdGlvbi5uZXh0KGFzc2V0KTtcbiAgICB0aGlzLnNlYXJjaFN0cmluZ0NoYW5nZWQoKTtcbiAgICBpZiAoIXRoaXMuYWxsb3dEYXRhcG9pbnRzRnJvbU11bHRpcGxlQXNzZXRzKSB7XG4gICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjbGVhclNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkRGF0YXBvaW50cyA9IFtdO1xuICAgIHRoaXMuZW1pdEN1cnJlbnRTZWxlY3Rpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdEN1cnJlbnRTZWxlY3Rpb24oKSB7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnNlbGVjdGVkRGF0YXBvaW50cyk7XG4gIH1cblxuICBwcml2YXRlIG1hcmtBc1RvdWNoZWQoKSB7XG4gICAgaWYgKCF0aGlzLnRvdWNoZWQpIHtcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICB0aGlzLnRvdWNoZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5jbHVkZXNTZWFyY2hTdHJpbmcoZGF0YXBvaW50OiBLUElEZXRhaWxzLCBsb3dlckNhc2VTZWFyY2hTdHJpbmc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGxhYmVsID0gZGF0YXBvaW50LmxhYmVsPy50b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChsYWJlbCAmJiBsYWJlbC5pbmNsdWRlcyhsb3dlckNhc2VTZWFyY2hTdHJpbmcpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBmcmFnbWVudCA9IGRhdGFwb2ludC5mcmFnbWVudD8udG9Mb3dlckNhc2UoKTtcbiAgICBpZiAoZnJhZ21lbnQgJiYgZnJhZ21lbnQuaW5jbHVkZXMobG93ZXJDYXNlU2VhcmNoU3RyaW5nKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3Qgc2VyaWVzID0gZGF0YXBvaW50LnNlcmllcz8udG9Mb3dlckNhc2UoKTtcbiAgICBpZiAoc2VyaWVzICYmIHNlcmllcy5pbmNsdWRlcyhsb3dlckNhc2VTZWFyY2hTdHJpbmcpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJkLWdyaWQgZ3JpZF9fcm93LS0xIGZpdC1oXCJcbiAgW25nQ2xhc3NdPVwie1xuICAgICdncmlkX19jb2wtLTMtNi0zLS1tZCc6IGFsbG93Q2hhbmdpbmdDb250ZXh0ICYmICFoaWRlU2VsZWN0aW9uLFxuICAgICdncmlkX19jb2wtLTgtNC0tbWQnOiAhYWxsb3dDaGFuZ2luZ0NvbnRleHQgJiYgIWhpZGVTZWxlY3Rpb24sXG4gICAgJ2dyaWRfX2NvbC0tNC04LS1tZCc6IGFsbG93Q2hhbmdpbmdDb250ZXh0ICYmIGhpZGVTZWxlY3Rpb25cbiAgfVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggZC1jb2wgcC1yZWxhdGl2ZSBiZy1sZXZlbC0xXCIgKm5nSWY9XCJhbGxvd0NoYW5naW5nQ29udGV4dFwiPlxuICAgIDxjOHktYXNzZXQtc2VsZWN0b3ItbWlsbGVyXG4gICAgICBjbGFzcz1cImQtY29udGVudHNcIlxuICAgICAgWyhuZ01vZGVsKV09XCJjb250ZXh0QXNzZXRcIlxuICAgICAgW2Fzc2V0XT1cImNvbnRleHRBc3NldFwiXG4gICAgICAob25TZWxlY3RlZCk9XCJzZWxlY3Rpb25DaGFuZ2VkKCRldmVudClcIlxuICAgICAgW2NvbnRhaW5lcl09XCInJ1wiXG4gICAgICBbY29uZmlnXT1cIntcbiAgICAgICAgdmlldzogJ21pbGxlcicsXG4gICAgICAgIGdyb3Vwc1NlbGVjdGFibGU6IHRydWUsXG4gICAgICAgIGNvbHVtbkhlYWRlcnM6IHRydWUsXG4gICAgICAgIHNob3dDaGlsZERldmljZXM6IHRydWUsXG4gICAgICAgIHNob3dVbmFzc2lnbmVkRGV2aWNlczogdHJ1ZSxcbiAgICAgICAgc2luZ2xlQ29sdW1uOiB0cnVlLFxuICAgICAgICBzZWFyY2g6IGFsbG93U2VhcmNoLFxuICAgICAgICBzaG93RmlsdGVyOiB0cnVlXG4gICAgICB9XCJcbiAgICA+PC9jOHktYXNzZXQtc2VsZWN0b3ItbWlsbGVyPlxuICA8L2Rpdj5cbiAgPCEtLSBjZW50ZXIgY29sdW1uIC0tPlxuICA8ZGl2IGNsYXNzPVwiaW5uZXItc2Nyb2xsIGJnLWNvbXBvbmVudFwiPlxuICAgIDxuZy10ZW1wbGF0ZSAjbm9EZXZpY2VFbXB0eVN0YXRlPlxuICAgICAgPGRpdiBjbGFzcz1cInAtMTZcIj5cbiAgICAgICAgPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAgICAgICAgIFtpY29uXT1cIidjOHktZGF0YS1wb2ludHMnXCJcbiAgICAgICAgICBbdGl0bGVdPVwiZW1wdHlTdGF0ZVRpdGxlIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbc3VidGl0bGVdPVwiJ1NlbGVjdCBhbiBhc3NldCBmcm9tIHRoZSBsaXN0LicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFtob3Jpem9udGFsXT1cInRydWVcIlxuICAgICAgICA+PC9jOHktdWktZW1wdHktc3RhdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjbG9hZGluZ0RhdGE+XG4gICAgICA8ZGl2IGNsYXNzPVwicC0xNiB0ZXh0LWNlbnRlclwiPlxuICAgICAgICA8Yzh5LWxvYWRpbmc+PC9jOHktbG9hZGluZz5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPGRpdiBjbGFzcz1cImJnLWluaGVyaXRcIiAqbmdJZj1cImFzc2V0U2VsZWN0aW9uIHwgYXN5bmMgYXMgYXNzZXQ7IGVsc2Ugbm9EZXZpY2VFbXB0eVN0YXRlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicC1sLTE2IHAtci0xNiBwLXQtOCBwLWItOCBzdGlja3ktdG9wIGJnLWluaGVyaXQgc2VwYXJhdG9yLWJvdHRvbVwiPlxuICAgICAgICA8cFxuICAgICAgICAgIGNsYXNzPVwidGV4dC1tZWRpdW0gdGV4dC10cnVuY2F0ZVwiXG4gICAgICAgICAgW3RpdGxlXT1cInNlbGVjdG9yVGl0bGUgfCB0cmFuc2xhdGVcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgc2VsZWN0b3JUaXRsZSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L3A+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBpbnB1dC1ncm91cC1zZWFyY2ggbS10LTRcIiBpZD1cInNlYXJjaFwiICpuZ0lmPVwiIWxvYWRpbmdEYXRhcG9pbnRzXCI+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNo4oCmXCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cInNlYXJjaFN0cmluZ1wiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZWFyY2hTdHJpbmdDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC1hZGRvblwiPlxuICAgICAgICAgICAgPGkgYzh5SWNvbj1cInNlYXJjaFwiICpuZ0lmPVwiIXNlYXJjaFN0cmluZzsgZWxzZSBjbGVhclNlYXJjaFN0cmluZ1wiPjwvaT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2xlYXJTZWFyY2hTdHJpbmc+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwidGV4dC1tdXRlZFwiIGM4eUljb249XCJ0aW1lc1wiIChjbGljayk9XCJzZWFyY2hTdHJpbmdDaGFuZ2VkKClcIj48L2k+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXJlZERhdGFwb2ludHMkIHwgYXN5bmMgYXMgZmlsdGVyZWREYXRhcG9pbnRzOyBlbHNlIGxvYWRpbmdEYXRhXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbG9hZGluZ0RhdGFwb2ludHM7IGVsc2UgbG9hZGluZ0RhdGFcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YXBvaW50cyQgfCBhc3luYyBhcyBkYXRhcG9pbnRzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0xNlwiICpuZ0lmPVwiIWZpbHRlcmVkRGF0YXBvaW50cy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAgICAgICAgICAgICAgIFtpY29uXT1cIidjOHktZGF0YS1wb2ludHMnXCJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiZW1wdHlTdGF0ZVRpdGxlIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbc3VidGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICBkYXRhcG9pbnRzLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICA/IChlbXB0eVN0YXRlU3VidGl0bGVXaGVuTm9NYXRjaGluZ0RhdGFQb2ludHMgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgICAgICAgICAgIDogKGVtcHR5U3RhdGVTdWJ0aXRsZVdoZW5Ob0RhdGFQb2ludHNJbkFzc2V0IHwgdHJhbnNsYXRlKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgW2hvcml6b250YWxdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgID48L2M4eS11aS1lbXB0eS1zdGF0ZT5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8Yzh5LWxpc3QtZ3JvdXA+XG4gICAgICAgICAgICAgIDxjOHktbGlzdC1pdGVtXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzdGlja3ktdG9wXCJcbiAgICAgICAgICAgICAgICBzdHlsZT1cInRvcDogNzJweFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgIGRhdGFwb2ludHMubGVuZ3RoID4gbWF4TnVtYmVyT2ZEYXRhcG9pbnRzICYmXG4gICAgICAgICAgICAgICAgICBmaWx0ZXJlZERhdGFwb2ludHMubGVuZ3RoID49IG1heE51bWJlck9mRGF0YXBvaW50c1xuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtd2FybmluZyBtLWItMFwiPlxuICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgJ0R1ZSB0byB0aGUgbGFyZ2UgbnVtYmVyLCBvbmx5IGEgc3Vic2V0IG9mIGRhdGEgcG9pbnRzIGlzIGRpc3BsYXllZC4gVXNlIHNlYXJjaCB0byBuYXJyb3cgZG93biB0aGUgbnVtYmVyIG9mIHJlc3VsdHMuJ1xuICAgICAgICAgICAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2M4eS1saXN0LWl0ZW0+XG4gICAgICAgICAgICAgIDxjOHktZGF0YXBvaW50LXNlbGVjdG9yLWxpc3QtaXRlbVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1jb250ZW50c1wiXG4gICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZHBcIlxuICAgICAgICAgICAgICAgIFtpc1NlbGVjdGVkXT1cInNlbGVjdGVkRGF0YXBvaW50cyB8IGluY2x1ZGVzRGF0YXBvaW50OiBkcFwiXG4gICAgICAgICAgICAgICAgW2RhdGFwb2ludExpYnJhcnlFbnRyaWVzXT1cImRhdGFwb2ludExpYnJhcnlFbnRyaWVzXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZVR5cGVhaGVhZElmU2VsZWN0ZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2FkZEJ1dHRvblR5cGVdPVwiaGlkZVNlbGVjdGlvbiA/IEFkZEJ1dHRvblR5cGVzLnNlbGVjdCA6IEFkZEJ1dHRvblR5cGVzLmFkZFJlbW92ZVwiXG4gICAgICAgICAgICAgICAgKGFkZGVkKT1cImRhdGFwb2ludEFkZGVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChyZW1vdmVkKT1cImRhdGFwb2ludFJlbW92ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW2hpZ2hsaWdodFRleHRdPVwic2VhcmNoU3RyaW5nQ2hhbmdlcyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRwIG9mIGZpbHRlcmVkRGF0YXBvaW50czsgdHJhY2tCeTogdHJhY2tCeUZuXCJcbiAgICAgICAgICAgICAgICBbZWRpdGFibGVdPVwiaXRlbXNFZGl0YWJsZVwiXG4gICAgICAgICAgICAgID48L2M4eS1kYXRhcG9pbnQtc2VsZWN0b3ItbGlzdC1pdGVtPlxuICAgICAgICAgICAgPC9jOHktbGlzdC1ncm91cD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDwhLS0gbGFzdCBjb2x1bW4gIC0tPlxuICA8ZGl2IGNsYXNzPVwiaW5uZXItc2Nyb2xsIGJnLWxldmVsLTFcIiAqbmdJZj1cIiFoaWRlU2VsZWN0aW9uXCI+XG4gICAgPHAgY2xhc3M9XCJ0ZXh0LW1lZGl1bSBwLWwtMTYgcC1yLTE2IHAtdC04IHAtYi04IHNlcGFyYXRvci1ib3R0b20gc3RpY2t5LXRvcCB0ZXh0LXRydW5jYXRlXCJcbiAgICAgIFt0aXRsZV09XCJzZWxlY3RlZExpc3RUaXRsZSB8IHRyYW5zbGF0ZVwiIHRyYW5zbGF0ZT57eyBzZWxlY3RlZExpc3RUaXRsZSB9fTwvcD5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImQtZmxleCBmbGV4LXdyYXAgZ2FwLTggcC1sLTE2IHAtci0xNiBwLXQtOCBwLWItMTZcIlxuICAgICAgKm5nSWY9XCJzZWxlY3RlZERhdGFwb2ludHM/Lmxlbmd0aFwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImM4eS1kYXRhcG9pbnQtcGlsbFwiICpuZ0Zvcj1cImxldCBzZWxlY3RlZERwIG9mIHNlbGVjdGVkRGF0YXBvaW50c1wiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJjOHktZGF0YXBvaW50LXBpbGxfX2J0blwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgW3RpdGxlXT1cIidSZW1vdmUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAoY2xpY2spPVwiZGF0YXBvaW50UmVtb3ZlZChzZWxlY3RlZERwKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aSBjbGFzcz1cImljb24tMTRcIiBjOHlJY29uPVwicmVtb3ZlXCI+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiYzh5LWRhdGFwb2ludC1waWxsX19sYWJlbFwiXG4gICAgICAgICAgW3RpdGxlXT1cInNlbGVjdGVkRHAgfCBkYXRhcG9pbnRMYWJlbDogeyBkb05vdFVzZUxhYmVsOiB0cnVlLCBpbmNsdWRlRGV2aWNlOiB0cnVlIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgY2xhc3M9XCJtLXItNCBpY29uLTE0XCIgYzh5SWNvbj1cImNpcmNsZVwiIFtzdHlsZS5jb2xvcl09XCJzZWxlY3RlZERwLmNvbG9yXCI+PC9pPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCI+e3sgc2VsZWN0ZWREcCB8IGRhdGFwb2ludExhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1tdXRlZCB0ZXh0LTEwXCIgKm5nSWY9XCJzZWxlY3RlZERwPy5fX3RhcmdldD8ubmFtZVwiPlxuICAgICAgICAgICAgICB7eyBzZWxlY3RlZERwPy5fX3RhcmdldD8ubmFtZSB9fVxuICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInAtci04XCIgKm5nSWY9XCIhc2VsZWN0ZWREYXRhcG9pbnRzIHx8ICFzZWxlY3RlZERhdGFwb2ludHMubGVuZ3RoXCI+XG4gICAgICA8Yzh5LXVpLWVtcHR5LXN0YXRlXG4gICAgICAgIFtpY29uXT1cIidjOHktZGF0YS1wb2ludHMnXCJcbiAgICAgICAgW3RpdGxlXT1cImVtcHR5U3RhdGVUaXRsZSB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtzdWJ0aXRsZV09XCJcbiAgICAgICAgICAnU2VsZWN0IHRoZSBhc3NldCwgdGhlbiBvbiB0aGUgYXZhaWxhYmxlIGRhdGEgcG9pbnRzIGxpc3QsIGNsaWNrIG9uIHRoZSBwbHVzIGJ1dHRvbiBvbiB0aGUgZGVzaXJlZCBkYXRhIHBvaW50LidcbiAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgIFwiXG4gICAgICAgIFtob3Jpem9udGFsXT1cInRydWVcIlxuICAgICAgPjwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -8,6 +8,7 @@ import { AbsoluteDateService } from '../absolute-date.service';
|
|
|
8
8
|
import { AuthBridgeService } from '../auth-bridge.service';
|
|
9
9
|
import { BridgeService } from '../bridge.service';
|
|
10
10
|
import { ServerMessagesService } from './serverMessages.service';
|
|
11
|
+
import { DatapointSelectorService } from '@c8y/ngx-components/datapoint-selector';
|
|
11
12
|
export const absoluteDateServiceDowngradedInjectable = downgradeInjectable(AbsoluteDateService);
|
|
12
13
|
export const bridgeServiceDowngradedInjectable = downgradeInjectable(BridgeService);
|
|
13
14
|
export const authBridgeServiceDowngradedInjectable = downgradeInjectable(AuthBridgeService);
|
|
@@ -30,4 +31,5 @@ export const deviceGridServiceDowngradedInjectable = downgradeInjectable(DeviceG
|
|
|
30
31
|
export const serviceRegistryInjectable = downgradeInjectable(ServiceRegistry);
|
|
31
32
|
export const assetLinkPipeDowngradedInjectable = downgradeInjectable(AssetLinkPipe);
|
|
32
33
|
export const propertyValueTransformServiceDowngradedInjectable = downgradeInjectable(PropertyValueTransformService);
|
|
33
|
-
|
|
34
|
+
export const datapointSelectorServiceDowngradedInjectable = downgradeInjectable(DatapointSelectorService);
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG93bmdyYWRlZC5zZXJ2aWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3VwZ3JhZGUvbmcxL2Rvd25ncmFkZWQuc2VydmljZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUNMLFlBQVksRUFDWixlQUFlLEVBQ2YsYUFBYSxFQUNiLDZCQUE2QixFQUM3QixXQUFXLEVBQ1gsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixtQkFBbUIsRUFDbkIsYUFBYSxFQUNiLFlBQVksRUFDWixlQUFlLEVBQ2YsNkJBQTZCLEVBQzdCLGVBQWUsRUFDZixlQUFlLEVBQ2hCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUVsRixNQUFNLENBQUMsTUFBTSx1Q0FBdUMsR0FBRyxtQkFBbUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBQ2hHLE1BQU0sQ0FBQyxNQUFNLGlDQUFpQyxHQUFHLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQ3BGLE1BQU0sQ0FBQyxNQUFNLHFDQUFxQyxHQUFHLG1CQUFtQixDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDNUYsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQUcsbUJBQW1CLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDeEYsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQUcsbUJBQW1CLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDcEYsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQUcsbUJBQW1CLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDbkYsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQUcsbUJBQW1CLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDeEYsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsbUJBQW1CLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDOUUsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQUcsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDaEYsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQUcsbUJBQW1CLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDeEYsTUFBTSxDQUFDLE1BQU0sb0NBQW9DLEdBQUcsbUJBQW1CLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUMxRixNQUFNLENBQUMsTUFBTSxpREFBaUQsR0FBRyxtQkFBbUIsQ0FDbEYsNkJBQTZCLENBQzlCLENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSx1Q0FBdUMsR0FBRyxtQkFBbUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBQ2hHLE1BQU0sQ0FBQyxNQUFNLHlDQUF5QyxHQUFHLG1CQUFtQixDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFDcEcsTUFBTSxDQUFDLE1BQU0sZ0NBQWdDLEdBQUcsbUJBQW1CLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDbEYsTUFBTSxDQUFDLE1BQU0sb0NBQW9DLEdBQUcsbUJBQW1CLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUMxRixNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUNsRixNQUFNLENBQUMsTUFBTSxpREFBaUQsR0FBRyxtQkFBbUIsQ0FDbEYsNkJBQTZCLENBQzlCLENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSxxQ0FBcUMsR0FBRyxtQkFBbUIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQzVGLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQzlFLE1BQU0sQ0FBQyxNQUFNLGlDQUFpQyxHQUFHLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQ3BGLE1BQU0sQ0FBQyxNQUFNLGlEQUFpRCxHQUFHLG1CQUFtQixDQUNsRiw2QkFBNkIsQ0FDOUIsQ0FBQztBQUNGLE1BQU0sQ0FBQyxNQUFNLDRDQUE0QyxHQUN2RCxtQkFBbUIsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZG93bmdyYWRlSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL3VwZ3JhZGUvc3RhdGljJztcbmltcG9ydCB7XG4gIEFsZXJ0U2VydmljZSxcbiAgQXBwU3RhdGVTZXJ2aWNlLFxuICBBc3NldExpbmtQaXBlLFxuICBDYWNoZWRMb2NhbGVEaWN0aW9uYXJ5U2VydmljZSxcbiAgRG9jc1NlcnZpY2UsXG4gIEZpbGVzU2VydmljZSxcbiAgR2FpbnNpZ2h0U2VydmljZSxcbiAgR2xvYmFsQ29uZmlnU2VydmljZSxcbiAgSGVhZGVyU2VydmljZSxcbiAgTW9kYWxTZXJ2aWNlLFxuICBQYXNzd29yZFNlcnZpY2UsXG4gIFByb3BlcnR5VmFsdWVUcmFuc2Zvcm1TZXJ2aWNlLFxuICBTZXJ2aWNlUmVnaXN0cnksXG4gIFVzZXJNZW51U2VydmljZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2FwaSc7XG5pbXBvcnQgeyBEZXZpY2VHcmlkU2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvZGV2aWNlLWdyaWQnO1xuaW1wb3J0IHsgRGV2aWNlVHlwZURldGFpbEVkaXRlZFNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2RldmljZS1wcm90b2NvbHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQWJzb2x1dGVEYXRlU2VydmljZSB9IGZyb20gJy4uL2Fic29sdXRlLWRhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBBdXRoQnJpZGdlU2VydmljZSB9IGZyb20gJy4uL2F1dGgtYnJpZGdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQnJpZGdlU2VydmljZSB9IGZyb20gJy4uL2JyaWRnZS5zZXJ2aWNlJztcbmltcG9ydCB7IFNlcnZlck1lc3NhZ2VzU2VydmljZSB9IGZyb20gJy4vc2VydmVyTWVzc2FnZXMuc2VydmljZSc7XG5pbXBvcnQgeyBEYXRhcG9pbnRTZWxlY3RvclNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2RhdGFwb2ludC1zZWxlY3Rvcic7XG5cbmV4cG9ydCBjb25zdCBhYnNvbHV0ZURhdGVTZXJ2aWNlRG93bmdyYWRlZEluamVjdGFibGUgPSBkb3duZ3JhZGVJbmplY3RhYmxlKEFic29sdXRlRGF0ZVNlcnZpY2UpO1xuZXhwb3J0IGNvbnN0IGJyaWRnZVNlcnZpY2VEb3duZ3JhZGVkSW5qZWN0YWJsZSA9IGRvd25ncmFkZUluamVjdGFibGUoQnJpZGdlU2VydmljZSk7XG5leHBvcnQgY29uc3QgYXV0aEJyaWRnZVNlcnZpY2VEb3duZ3JhZGVkSW5qZWN0YWJsZSA9IGRvd25ncmFkZUluamVjdGFibGUoQXV0aEJyaWRnZVNlcnZpY2UpO1xuZXhwb3J0IGNvbnN0IGFwcFN0YXRlU2VydmljZURvd25ncmFkZWRJbmplY3RhYmxlID0gZG93bmdyYWRlSW5qZWN0YWJsZShBcHBTdGF0ZVNlcnZpY2UpO1xuZXhwb3J0IGNvbnN0IGhlYWRlclNlcnZpY2VEb3duZ3JhZGVkSW5qZWN0YWJsZSA9IGRvd25ncmFkZUluamVjdGFibGUoSGVhZGVyU2VydmljZSk7XG5leHBvcnQgY29uc3QgYWxlcnRzU2VydmljZURvd25ncmFkZWRJbmplY3RhYmxlID0gZG93bmdyYWRlSW5qZWN0YWJsZShBbGVydFNlcnZpY2UpO1xuZXhwb3J0IGNvbnN0IHVzZXJNZW51U2VydmljZURvd25ncmFkZWRJbmplY3RhYmxlID0gZG93bmdyYWRlSW5qZWN0YWJsZShVc2VyTWVudVNlcnZpY2UpO1xuZXhwb3J0IGNvbnN0IGFwaVNlcnZpY2VEb3duZ3JhZGVkSW5qZWN0YWJsZSA9IGRvd25ncmFkZUluamVjdGFibGUoQXBpU2VydmljZSk7XG5leHBvcnQgY29uc3QgZG9jc1NlcnZpY2VEb3duZ3JhZGVkSW5qZWN0YWJsZSA9IGRvd25ncmFkZUluamVjdGFibGUoRG9jc1NlcnZpY2UpO1xuZXhwb3J0IGNvbnN0IHBhc3N3b3JkU2VydmljZURvd25ncmFkZWRJbmplY3RhYmxlID0gZG93bmdyYWRlSW5qZWN0YWJsZShQYXNzd29yZFNlcnZpY2UpO1xuZXhwb3J0IGNvbnN0IHRyYW5zbGF0ZVNlcnZpY2VEb3duZ3JhZGVkSW5qZWN0YWJsZSA9IGRvd25ncmFkZUluamVjdGFibGUoVHJhbnNsYXRlU2VydmljZSk7XG5leHBvcnQgY29uc3QgY2FjaGVkTG9jYWxlRGljdGlvbmFyeVNlcnZpY2VEb3duZ3JhZGVkSW5qZWN0YWJsZSA9IGRvd25ncmFkZUluamVjdGFibGUoXG4gIENhY2hlZExvY2FsZURpY3Rpb25hcnlTZXJ2aWNlXG4pO1xuZXhwb3J0IGNvbnN0IGdsb2JhbENvbmZpZ1NlcnZpY2VEb3duZ3JhZGVkSW5qZWN0YWJsZSA9IGRvd25ncmFkZUluamVjdGFibGUoR2xvYmFsQ29uZmlnU2VydmljZSk7XG5leHBvcnQgY29uc3Qgc2VydmVyTWVzc2FnZXNTZXJ2aWNlRG93bmdyYWRlZEluamVjdGFibGUgPSBkb3duZ3JhZGVJbmplY3RhYmxlKFNlcnZlck1lc3NhZ2VzU2VydmljZSk7XG5leHBvcnQgY29uc3QgbW9kYWxTZXJ2aWNlRG93bmdyYWRlZEluamVjdGFibGUgPSBkb3duZ3JhZGVJbmplY3RhYmxlKE1vZGFsU2VydmljZSk7XG5leHBvcnQgY29uc3QgZ2FpbnNpZ2h0U2VydmljZURvd25ncmFkZWRJbmplY3RhYmxlID0gZG93bmdyYWRlSW5qZWN0YWJsZShHYWluc2lnaHRTZXJ2aWNlKTtcbmV4cG9ydCBjb25zdCBmaWxlc1NlcnZpY2VEb3duZ3JhZGVkSW5qZWN0YWJsZSA9IGRvd25ncmFkZUluamVjdGFibGUoRmlsZXNTZXJ2aWNlKTtcbmV4cG9ydCBjb25zdCBkZXZpY2VUeXBlRGV0YWlsRWRpdGVkU2VydmljZURvd25ncmFkZWRJbmplY3RhYmxlID0gZG93bmdyYWRlSW5qZWN0YWJsZShcbiAgRGV2aWNlVHlwZURldGFpbEVkaXRlZFNlcnZpY2Vcbik7XG5leHBvcnQgY29uc3QgZGV2aWNlR3JpZFNlcnZpY2VEb3duZ3JhZGVkSW5qZWN0YWJsZSA9IGRvd25ncmFkZUluamVjdGFibGUoRGV2aWNlR3JpZFNlcnZpY2UpO1xuZXhwb3J0IGNvbnN0IHNlcnZpY2VSZWdpc3RyeUluamVjdGFibGUgPSBkb3duZ3JhZGVJbmplY3RhYmxlKFNlcnZpY2VSZWdpc3RyeSk7XG5leHBvcnQgY29uc3QgYXNzZXRMaW5rUGlwZURvd25ncmFkZWRJbmplY3RhYmxlID0gZG93bmdyYWRlSW5qZWN0YWJsZShBc3NldExpbmtQaXBlKTtcbmV4cG9ydCBjb25zdCBwcm9wZXJ0eVZhbHVlVHJhbnNmb3JtU2VydmljZURvd25ncmFkZWRJbmplY3RhYmxlID0gZG93bmdyYWRlSW5qZWN0YWJsZShcbiAgUHJvcGVydHlWYWx1ZVRyYW5zZm9ybVNlcnZpY2Vcbik7XG5leHBvcnQgY29uc3QgZGF0YXBvaW50U2VsZWN0b3JTZXJ2aWNlRG93bmdyYWRlZEluamVjdGFibGUgPVxuICBkb3duZ3JhZGVJbmplY3RhYmxlKERhdGFwb2ludFNlbGVjdG9yU2VydmljZSk7XG4iXX0=
|
|
@@ -4,7 +4,7 @@ import { QueriesUtil } from '@c8y/client';
|
|
|
4
4
|
import * as angular from 'angular';
|
|
5
5
|
import { c8yAlertDecorator } from './alert.decorator';
|
|
6
6
|
import { appLogsAutoRefreshComponentDowngradedComponent, bootstrapComponentDowngradedComponent, dataGridComponentDowngradedComponent, datapointSelectionListComponentDowngradedComponent, emptyStateComponentDowngradedComponent, helpComponentDowngradedComponent, highlightComponentDowngradedComponent, loadingComponentDowngradedComponent, paginationComponentDowngradedComponent, passwordInputComponentDowngradedComponent, platformConfigurationFormDowngradedComponent, rangeDisplayComponentDowngradedComponent, rolesAssetTreeComponentDowngradedComponent, userTotpComponentDowngradedComponent } from './downgraded.components';
|
|
7
|
-
import { absoluteDateServiceDowngradedInjectable, alertsServiceDowngradedInjectable, apiServiceDowngradedInjectable, appStateServiceDowngradedInjectable, assetLinkPipeDowngradedInjectable, authBridgeServiceDowngradedInjectable, bridgeServiceDowngradedInjectable, cachedLocaleDictionaryServiceDowngradedInjectable, deviceGridServiceDowngradedInjectable, deviceTypeDetailEditedServiceDowngradedInjectable, docsServiceDowngradedInjectable, filesServiceDowngradedInjectable, gainsightServiceDowngradedInjectable, globalConfigServiceDowngradedInjectable, headerServiceDowngradedInjectable, modalServiceDowngradedInjectable, passwordServiceDowngradedInjectable, propertyValueTransformServiceDowngradedInjectable, serverMessagesServiceDowngradedInjectable, serviceRegistryInjectable, translateServiceDowngradedInjectable, userMenuServiceDowngradedInjectable } from './downgraded.services';
|
|
7
|
+
import { absoluteDateServiceDowngradedInjectable, alertsServiceDowngradedInjectable, apiServiceDowngradedInjectable, appStateServiceDowngradedInjectable, assetLinkPipeDowngradedInjectable, authBridgeServiceDowngradedInjectable, bridgeServiceDowngradedInjectable, cachedLocaleDictionaryServiceDowngradedInjectable, datapointSelectorServiceDowngradedInjectable, deviceGridServiceDowngradedInjectable, deviceTypeDetailEditedServiceDowngradedInjectable, docsServiceDowngradedInjectable, filesServiceDowngradedInjectable, gainsightServiceDowngradedInjectable, globalConfigServiceDowngradedInjectable, headerServiceDowngradedInjectable, modalServiceDowngradedInjectable, passwordServiceDowngradedInjectable, propertyValueTransformServiceDowngradedInjectable, serverMessagesServiceDowngradedInjectable, serviceRegistryInjectable, translateServiceDowngradedInjectable, userMenuServiceDowngradedInjectable } from './downgraded.services';
|
|
8
8
|
import { gettextCatalogDecorator } from './gettextCatalog.decorator';
|
|
9
9
|
import { groupTypesHierarchyNavigatorDecorator } from './groupsHierarchyNavigator.decorator';
|
|
10
10
|
import { c8yNg1HttpInterceptor } from './http.interceptor';
|
|
@@ -46,7 +46,8 @@ angular
|
|
|
46
46
|
.service('c8yGainsightService', gainsightServiceDowngradedInjectable)
|
|
47
47
|
.service('c8yFilesService', filesServiceDowngradedInjectable)
|
|
48
48
|
.service('c8yGlobalConfigService', globalConfigServiceDowngradedInjectable)
|
|
49
|
-
.service('c8yPropertyValueTransformService', propertyValueTransformServiceDowngradedInjectable)
|
|
49
|
+
.service('c8yPropertyValueTransformService', propertyValueTransformServiceDowngradedInjectable)
|
|
50
|
+
.service('c8yDatapointSelectorService', datapointSelectorServiceDowngradedInjectable);
|
|
50
51
|
angular
|
|
51
52
|
.module('c8y.ui')
|
|
52
53
|
.filter('absoluteDate', absoluteDateServiceDowngradedInjectable)
|
|
@@ -84,4 +85,4 @@ angular
|
|
|
84
85
|
}
|
|
85
86
|
]);
|
|
86
87
|
export const ng1ModulesUpgrade = ['app', NAME_UPGRADE];
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi91cGdyYWRlL25nMS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUMsT0FBTyxLQUFLLE9BQU8sTUFBTSxTQUFTLENBQUM7QUFDbkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEQsT0FBTyxFQUNMLDhDQUE4QyxFQUM5QyxxQ0FBcUMsRUFDckMsb0NBQW9DLEVBQ3BDLGtEQUFrRCxFQUNsRCxzQ0FBc0MsRUFDdEMsZ0NBQWdDLEVBQ2hDLHFDQUFxQyxFQUNyQyxtQ0FBbUMsRUFDbkMsc0NBQXNDLEVBQ3RDLHlDQUF5QyxFQUN6Qyw0Q0FBNEMsRUFDNUMsd0NBQXdDLEVBQ3hDLDBDQUEwQyxFQUMxQyxvQ0FBb0MsRUFDckMsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQ0wsdUNBQXVDLEVBQ3ZDLGlDQUFpQyxFQUNqQyw4QkFBOEIsRUFDOUIsbUNBQW1DLEVBQ25DLGlDQUFpQyxFQUNqQyxxQ0FBcUMsRUFDckMsaUNBQWlDLEVBQ2pDLGlEQUFpRCxFQUNqRCxxQ0FBcUMsRUFDckMsaURBQWlELEVBQ2pELCtCQUErQixFQUMvQixnQ0FBZ0MsRUFDaEMsb0NBQW9DLEVBQ3BDLHVDQUF1QyxFQUN2QyxpQ0FBaUMsRUFDakMsZ0NBQWdDLEVBQ2hDLG1DQUFtQyxFQUNuQyxpREFBaUQsRUFDakQseUNBQXlDLEVBQ3pDLHlCQUF5QixFQUN6QixvQ0FBb0MsRUFDcEMsbUNBQW1DLEVBQ3BDLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNEJBQTRCLENB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LGlCQUFpQixHQUFHLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkb3duZ3JhZGVJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvdXBncmFkZS9zdGF0aWMnO1xuaW1wb3J0IHsgUXVlcmllc1V0aWwgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgKiBhcyBhbmd1bGFyIGZyb20gJ2FuZ3VsYXInO1xuaW1wb3J0IHsgYzh5QWxlcnREZWNvcmF0b3IgfSBmcm9tICcuL2FsZXJ0LmRlY29yYXRvcic7XG5pbXBvcnQge1xuICBhcHBMb2dzQXV0b1JlZnJlc2hDb21wb25lbnREb3duZ3JhZGVkQ29tcG9uZW50LFxuICBib290c3RyYXBDb21wb25lbnREb3duZ3JhZGVkQ29tcG9uZW50LFxuICBkYXRhR3JpZENvbXBvbmVudERvd25ncmFkZWRDb21wb25lbnQsXG4gIGRhdGFwb2ludFNlbGVjdGlvbkxpc3RDb21wb25lbnREb3duZ3JhZGVkQ29tcG9uZW50LFxuICBlbXB0eVN0YXRlQ29tcG9uZW50RG93bmdyYWRlZENvbXBvbmVudCxcbiAgaGVscENvbXBvbmVudERvd25ncmFkZWRDb21wb25lbnQsXG4gIGhpZ2hsaWdodENvbXBvbmVudERvd25ncmFkZWRDb21wb25lbnQsXG4gIGxvYWRpbmdDb21wb25lbnREb3duZ3JhZGVkQ29tcG9uZW50LFxuICBwYWdpbmF0aW9uQ29tcG9uZW50RG93bmdyYWRlZENvbXBvbmVudCxcbiAgcGFzc3dvcmRJbnB1dENvbXBvbmVudERvd25ncmFkZWRDb21wb25lbnQsXG4gIHBsYXRmb3JtQ29uZmlndXJhdGlvbkZvcm1Eb3duZ3JhZGVkQ29tcG9uZW50LFxuICByYW5nZURpc3BsYXlDb21wb25lbnREb3duZ3JhZGVkQ29tcG9uZW50LFxuICByb2xlc0Fzc2V0VHJlZUNvbXBvbmVudERvd25ncmFkZWRDb21wb25lbnQsXG4gIHVzZXJUb3RwQ29tcG9uZW50RG93bmdyYWRlZENvbXBvbmVudFxufSBmcm9tICcuL2Rvd25ncmFkZWQuY29tcG9uZW50cyc7XG5pbXBvcnQge1xuICBhYnNvbHV0ZURhdGVTZXJ2aWNlRG93bmdyYWRlZEluamVjdGFibGUsXG4gIGFsZXJ0c1NlcnZpY2VEb3duZ3JhZGVkSW5qZWN0YWJsZSxcbiAgYXBpU2VydmljZURvd25ncmFkZWRJbmplY3RhYmxlLFxuICBhcHBTdGF0ZVNlcnZpY2VEb3duZ3JhZGVkSW5qZWN0YWJsZSxcbiAgYXNzZXRMaW5rUGlwZURvd25ncmFkZWRJbmplY3RhYmxlLFxuICBhdXRoQnJpZGdlU2VydmljZURvd25ncmFkZWRJbmplY3RhYmxlLFxuICBicmlkZ2VTZXJ2aWNlRG93bmdyYWRlZEluamVjdGFibGUsXG4gIGNhY2hlZExvY2FsZURpY3Rpb25hcnlTZXJ2aWNlRG93bmdyYWRlZEluamVjdGFibGUsXG4gIGRldmljZUdyaWRTZXJ2aWNlRG93bmdyYWRlZEluamVjdGFibGUsXG4gIGRldmljZVR5cGVEZXRhaWxFZGl0ZWRTZXJ2aWNlRG93bmdyYWRlZEluamVjdGFibGUsXG4gIGRvY3NTZXJ2aWNlRG93bmdyYWRlZEluamVjdGFibGUsXG4gIGZpbGVzU2VydmljZURvd25ncmFkZWRJbmplY3RhYmxlLFxuICBnYWluc2lnaHRTZXJ2aWNlRG93bmdyYWRlZEluamVjdGFibGUsXG4gIGdsb2JhbENvbmZpZ1NlcnZpY2VEb3duZ3JhZGVkSW5qZWN0YWJsZSxcbiAgaGVhZGVyU2VydmljZURvd25ncmFkZWRJbmplY3RhYmxlLFxuICBtb2RhbFNlcnZpY2VEb3duZ3JhZGVkSW5qZWN0YWJsZSxcbiAgcGFzc3dvcmRTZXJ2aWNlRG93bmdyYWRlZEluamVjdGFibGUsXG4gIHByb3BlcnR5VmFsdWVUcmFuc2Zvcm1TZXJ2aWNlRG93bmdyYWRlZEluamVjdGFibGUsXG4gIHNlcnZlck1lc3NhZ2VzU2VydmljZURvd25ncmFkZWRJbmplY3RhYmxlLFxuICBzZXJ2aWNlUmVnaXN0cnlJbmplY3RhYmxlLFxuICB0cmFuc2xhdGVTZXJ2aWNlRG93bmdyYWRlZEluamVjdGFibGUsXG4gIHVzZXJNZW51U2VydmljZURvd25ncmFkZWRJbmplY3RhYmxlXG59IGZyb20gJy4vZG93bmdyYWRlZC5zZXJ2aWNlcyc7XG5pbXBvcnQgeyBnZXR0ZXh0Q2F0YWxvZ0RlY29yYXRvciB9IGZyb20gJy4vZ2V0dGV4dENhdGFsb2cuZGVjb3JhdG9yJztcbmltcG9ydCB7IGdyb3VwVHlwZXNIaWVyYXJjaHlOYXZpZ2F0b3JEZWNvcmF0b3IgfSBmcm9tICcuL2dyb3Vwc0hpZXJhcmNoeU5hdmlnYXRvci5kZWNvcmF0b3InO1xuaW1wb3J0IHsgYzh5TmcxSHR0cEludGVyY2VwdG9yIH0gZnJvbSAnLi9odHRwLmludGVyY2VwdG9yJztcbmltcG9ydCB7IGM4eU5hdmlnYXRvclByb3ZpZGVyIH0gZnJvbSAnLi9uYXZpZ2F0b3IucHJvdmlkZXInO1xuaW1wb3J0IHsgcm9vdENvbXBvbmVudCB9IGZyb20gJy4vcm9vdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgYzh5VGl0bGVEZWNvcmF0b3IgfSBmcm9tICcuL3RpdGxlLmRlY29yYXRvcic7XG5pbXBvcnQgeyBjOHlWaWV3c1Byb3ZpZGVyIH0gZnJvbSAnLi92aWV3cy5wcm92aWRlcic7XG5cbmNvbnN0IE5BTUVfVVBHUkFERSA9ICdjOHkudXBncmFkZSc7XG4od2luZG93IGFzIGFueSkucHJldmVudE5nMUJvb3RzdHJhcCA9IHRydWU7XG5cbmFuZ3VsYXJcbiAgLm1vZHVsZShOQU1FX1VQR1JBREUsIFtdKVxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6b25seS1hcnJvdy1mdW5jdGlvbnNcbiAgLmNvbmZpZyhmdW5jdGlvbiAoJGh0dHBQcm92aWRlcikge1xuICAgICduZ0luamVjdCc7XG5cbiAgICBjb25zdCBuZzFJbnRlcmNlcHRvckluZGV4ID0gJGh0dHBQcm92aWRlci5pbnRlcmNlcHRvcnMuaW5kZXhPZignYzh5TG9hZGluZ0luZGljYXRvcicpO1xuICAgIGlmIChuZzFJbnRlcmNlcHRvckluZGV4ID4gLTEpIHtcbiAgICAgICRodHRwUHJvdmlkZXIuaW50ZXJjZXB0b3JzLnNwbGljZShuZzFJbnRlcmNlcHRvckluZGV4LCAxKTtcbiAgICB9XG4gICAgJGh0dHBQcm92aWRlci5pbnRlcmNlcHRvcnMucHVzaChjOHlOZzFIdHRwSW50ZXJjZXB0b3IpO1xuICB9KVxuICAuY29tcG9uZW50KCdjOHlVaVJvb3QnLCByb290Q29tcG9uZW50KVxuICAuZGlyZWN0aXZlKCdjOHlCb290c3RyYXAnLCBib290c3RyYXBDb21wb25lbnREb3duZ3JhZGVkQ29tcG9uZW50KVxuICAuZmFjdG9yeSgnYzh5QnJpZGdlU2VydmljZScsIGJyaWRnZVNlcnZpY2VEb3duZ3JhZGVkSW5qZWN0YWJsZSlcbiAgLmZhY3RvcnkoJ2M4eUF1dGhCcmlkZ2VTZXJ2aWNlJywgYXV0aEJyaWRnZVNlcnZpY2VEb3duZ3JhZGVkSW5qZWN0YWJsZSlcbiAgLmZhY3RvcnkoJ2M4eUFwcFN0YXRlU2VydmljZScsIGFwcFN0YXRlU2VydmljZURvd25ncmFkZWRJbmplY3RhYmxlKVxuICAuZmFjdG9yeSgnYzh5SGVhZGVyU2VydmljZScsIGhlYWRlclNlcnZpY2VEb3duZ3JhZGVkSW5qZWN0YWJsZSlcbiAgLmZhY3RvcnkoJ2M4eVVzZXJNZW51U2VydmljZScsIHVzZXJNZW51U2VydmljZURvd25ncmFkZWRJbmplY3RhYmxlKVxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6b25seS1hcnJvdy1mdW5jdGlvbnNcbiAgLnNlcnZpY2UoJ2M4eVF1ZXJpZXNVdGlsJywgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBuZXcgUXVlcmllc1V0aWwoKTtcbiAgfSlcbiAgLmZhY3RvcnkoJ2M4eUFsZXJ0JywgYWxlcnRzU2VydmljZURvd25ncmFkZWRJbmplY3RhYmxlKVxuICAuZGVjb3JhdG9yKCdjOHlBbGVydCcsIGM4eUFsZXJ0RGVjb3JhdG9yKVxuICAuZGVjb3JhdG9yKCdncm91cFR5cGVzSGllcmFyY2h5TmF2aWdhdG9yJywgZ3JvdXBUeXBlc0hpZXJhcmNoeU5hdmlnYXRvckRlY29yYXRvcikgLy8gcHJldmVudHMgbG9hZGluZyB0aGUgZ3JvdXBzXG4gIC5mYWN0b3J5KCdjOHlBcGlTZXJ2aWNlJywgYXBpU2VydmljZURvd25ncmFkZWRJbmplY3RhYmxlKVxuICAuZmFjdG9yeSgnYzh5RG9jcycsIGRvY3NTZXJ2aWNlRG93bmdyYWRlZEluamVjdGFibGUpXG4gIC5zZXJ2aWNlKCdjOHlQYXNzd29yZENvbmZpcm0nLCBwYXNzd29yZFNlcnZpY2VEb3duZ3JhZGVkSW5qZWN0YWJsZSlcbiAgLnNlcnZpY2UoJ2M4eU1vZGFsU2VydmljZScsIG1vZGFsU2VydmljZURvd25ncmFkZWRJbmplY3RhYmxlKVxuICAuc2VydmljZSgnYzh5R2FpbnNpZ2h0U2VydmljZScsIGdhaW5zaWdodFNlcnZpY2VEb3duZ3JhZGVkSW5qZWN0YWJsZSlcbiAgLnNlcnZpY2UoJ2M4eUZpbGVzU2VydmljZScsIGZpbGVzU2VydmljZURvd25ncmFkZWRJbmplY3RhYmxlKVxuICAuc2VydmljZSgnYzh5R2xvYmFsQ29uZmlnU2VydmljZScsIGdsb2JhbENvbmZpZ1NlcnZpY2VEb3duZ3JhZGVkSW5qZWN0YWJsZSlcbiAgLnNlcnZpY2UoJ2M4eVByb3BlcnR5VmFsdWVUcmFuc2Zvcm1TZXJ2aWNlJywgcHJvcGVydHlWYWx1ZVRyYW5zZm9ybVNlcnZpY2VEb3duZ3JhZGVkSW5qZWN0YWJsZSk7XG5cbmFuZ3VsYXJcbiAgLm1vZHVsZSgnYzh5LnVpJylcbiAgLmZpbHRlcignYWJzb2x1dGVEYXRlJywgYWJzb2x1dGVEYXRlU2VydmljZURvd25ncmFkZWRJbmplY3RhYmxlKVxuICAuZGlyZWN0aXZlKCdjOHlMb2FkaW5nJywgbG9hZGluZ0NvbXBvbmVudERvd25ncmFkZWRDb21wb25lbnQpXG4gIC5wcm92aWRlcignYzh5TmF2aWdhdG9yJywgYzh5TmF2aWdhdG9yUHJvdmlkZXIpXG4gIC5wcm92aWRlcignYzh5Vmlld3MnLCBjOHlWaWV3c1Byb3ZpZGVyKVxuICAuZGlyZWN0aXZlKCdjOHlVc2VyVG90cFJldm9rZScsIHVzZXJUb3RwQ29tcG9uZW50RG93bmdyYWRlZENvbXBvbmVudClcbiAgLmRpcmVjdGl2ZSgnYzh5QXBwTG9nc0F1dG9SZWZyZXNoJywgYXBwTG9nc0F1dG9SZWZyZXNoQ29tcG9uZW50RG93bmdyYWRlZENvbXBvbmVudClcbiAgLmRpcmVjdGl2ZSgnYzh5RGF0YUdyaWQnLCBkYXRhR3JpZENvbXBvbmVudERvd25ncmFkZWRDb21wb25lbnQpXG4gIC5kaXJlY3RpdmUoJ2M4eVJhbmdlRGlzcGxheScsIHJhbmdlRGlzcGxheUNvbXBvbmVudERvd25ncmFkZWRDb21wb25lbnQpXG4gIC5kaXJlY3RpdmUoJ2M4eUhlbHAnLCBoZWxwQ29tcG9uZW50RG93bmdyYWRlZENvbXBvbmVudClcbiAgLmRpcmVjdGl2ZSgnYzh5VWlFbXB0eVN0YXRlJywgZW1wdHlTdGF0ZUNvbXBvbmVudERvd25ncmFkZWRDb21wb25lbnQpXG4gIC5kaXJlY3RpdmUoJ2M4eURhdGFwb2ludFNlbGVjdGlvbkxpc3QnLCBkYXRhcG9pbnRTZWxlY3Rpb25MaXN0Q29tcG9uZW50RG93bmdyYWRlZENvbXBvbmVudClcbiAgLmRpcmVjdGl2ZSgnYzh5SGlnaGxpZ2h0JywgaGlnaGxpZ2h0Q29tcG9uZW50RG93bmdyYWRlZENvbXBvbmVudClcbiAgLmRpcmVjdGl2ZSgnYzh5UGFzc3dvcmRJbnB1dCcsIHBhc3N3b3JkSW5wdXRDb21wb25lbnREb3duZ3JhZGVkQ29tcG9uZW50KVxuICAuZGlyZWN0aXZlKCdwYWdpbmF0aW9uJywgcGFnaW5hdGlvbkNvbXBvbmVudERvd25ncmFkZWRDb21wb25lbnQpXG4gIC5kaXJlY3RpdmUoJ2M4eVJvbGVzQXNzZXRUcmVlRG93bmdyYWRlZCcsIHJvbGVzQXNzZXRUcmVlQ29tcG9uZW50RG93bmdyYWRlZENvbXBvbmVudClcbiAgLmRpcmVjdGl2ZSgnYzh5UGxhdGZvcm1Db25maWd1cmF0aW9uRm9ybScsIHBsYXRmb3JtQ29uZmlndXJhdGlvbkZvcm1Eb3duZ3JhZGVkQ29tcG9uZW50KVxuICAuZmFjdG9yeSgnYzh5VHJhbnNsYXRlJywgdHJhbnNsYXRlU2VydmljZURvd25ncmFkZWRJbmplY3RhYmxlKVxuICAuZmFjdG9yeSgnYzh5Q2FjaGVkTG9jYWxlRGljdGlvbmFyeVNlcnZpY2UnLCBjYWNoZWRMb2NhbGVEaWN0aW9uYXJ5U2VydmljZURvd25ncmFkZWRJbmplY3RhYmxlKVxuICAuZGVjb3JhdG9yKCdnZXR0ZXh0Q2F0YWxvZycsIGdldHRleHRDYXRhbG9nRGVjb3JhdG9yKVxuICAuZmFjdG9yeSgnYzh5U2VydmVyTWVzc2FnZXMnLCBzZXJ2ZXJNZXNzYWdlc1NlcnZpY2VEb3duZ3JhZGVkSW5qZWN0YWJsZSlcbiAgLmZhY3RvcnkoJ25nWm9uZScsIGRvd25ncmFkZUluamVjdGFibGUoTmdab25lKSlcbiAgLmZhY3RvcnkoJ2M4eURldmljZVR5cGVEZXRhaWxFZGl0ZWQnLCBkZXZpY2VUeXBlRGV0YWlsRWRpdGVkU2VydmljZURvd25ncmFkZWRJbmplY3RhYmxlKVxuICAuZmFjdG9yeSgnYzh5RGV2aWNlR3JpZFNlcnZpY2UnLCBkZXZpY2VHcmlkU2VydmljZURvd25ncmFkZWRJbmplY3RhYmxlKVxuICAuZmFjdG9yeSgnYzh5U2VydmljZVJlZ2lzdHJ5Jywgc2VydmljZVJlZ2lzdHJ5SW5qZWN0YWJsZSlcbiAgLmZhY3RvcnkoJ2Fzc2V0TGluaycsIGFzc2V0TGlua1BpcGVEb3duZ3JhZGVkSW5qZWN0YWJsZSk7XG5cbmFuZ3VsYXJcbiAgLm1vZHVsZSgnYzh5LnVpJylcbiAgLmRlY29yYXRvcignYzh5VGl0bGUnLCBjOHlUaXRsZURlY29yYXRvcilcbiAgLnJ1bihbXG4gICAgJ2M4eVRpdGxlJyxcbiAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBuZWVkZWQgdG8gaW5qZWN0IGM4eVRpdGxlIHdpdGggZGVjb3JhdG9yIGFwcGxpZWQgdG8gaXQsIHRvIGVuc3VyZSBkaXNwbGF5aW5nIG5nMSB0aXRsZXNcbiAgICB9XG4gIF0pO1xuXG5leHBvcnQgY29uc3QgbmcxTW9kdWxlc1VwZ3JhZGUgPSBbJ2FwcCcsIE5BTUVfVVBHUkFERV07XG4iXX0=
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi91cGdyYWRlL25nMS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUMsT0FBTyxLQUFLLE9BQU8sTUFBTSxTQUFTLENBQUM7QUFDbkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEQsT0FBTyxFQUNMLDhDQUE4QyxFQUM5QyxxQ0FBcUMsRUFDckMsb0NBQW9DLEVBQ3BDLGtEQUFrRCxFQUNsRCxzQ0FBc0MsRUFDdEMsZ0NBQWdDLEVBQ2hDLHFDQUFxQyxFQUNyQyxtQ0FBbUMsRUFDbkMsc0NBQXNDLEVBQ3RDLHlDQUF5QyxFQUN6Qyw0Q0FBNEMsRUFDNUMsd0NBQXdDLEVBQ3hDLDBDQUEwQyxFQUMxQyxvQ0FBb0MsRUFDckMsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQ0wsdUNBQXVDLEVBQ3ZDLGlDQUFpQyxFQUNqQyw4QkFBOEIsRUFDOUIsbUNBQW1DLEVBQ25DLGlDQUFpQyxFQUNqQyxxQ0FBcUMsRUFDckMsaUNBQWlDLEVBQ2pDLGlEQUFpRCxFQUNqRCw0Q0FBNEMsRUFDNUMscUNBQXFDLEVBQ3JDLGlEQUFpRCxFQUNqRCwrQkFBK0IsRUFDL0IsZ0NBQWdDLEVBQ2hDLG9DQUFvQyxFQUNwQyx1Q0FBdUMsRUFDdkMsaUNBQWlDLEVBQ2pDLGdDQUFnQyxFQUNoQyxtQ0FBbUMsRUFDbkMsaURBQWlELEVBQ2pELHlDQUF5QyxFQUN6Qyx5QkFBeUIsRUFDekIsb0NBQW9DLEVBQ3BDLG1DQUFtQyxFQUNwQyxNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxN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LDBGQUEwRjtJQUM1RixDQUFDO0NBQ0YsQ0FBQyxDQUFDO0FBRUwsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGRvd25ncmFkZUluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci91cGdyYWRlL3N0YXRpYyc7XG5pbXBvcnQgeyBRdWVyaWVzVXRpbCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCAqIGFzIGFuZ3VsYXIgZnJvbSAnYW5ndWxhcic7XG5pbXBvcnQgeyBjOHlBbGVydERlY29yYXRvciB9IGZyb20gJy4vYWxlcnQuZGVjb3JhdG9yJztcbmltcG9ydCB7XG4gIGFwcExvZ3NBdXRvUmVmcmVzaENvbXBvbmVudERvd25ncmFkZWRDb21wb25lbnQsXG4gIGJvb3RzdHJhcENvbXBvbmVudERvd25ncmFkZWRDb21wb25lbnQsXG4gIGRhdGFHcmlkQ29tcG9uZW50RG93bmdyYWRlZENvbXBvbmVudCxcbiAgZGF0YXBvaW50U2VsZWN0aW9uTGlzdENvbXBvbmVudERvd25ncmFkZWRDb21wb25lbnQsXG4gIGVtcHR5U3RhdGVDb21wb25lbnREb3duZ3JhZGVkQ29tcG9uZW50LFxuICBoZWxwQ29tcG9uZW50RG93bmdyYWRlZENvbXBvbmVudCxcbiAgaGlnaGxpZ2h0Q29tcG9uZW50RG93bmdyYWRlZENvbXBvbmVudCxcbiAgbG9hZGluZ0NvbXBvbmVudERvd25ncmFkZWRDb21wb25lbnQsXG4gIHBhZ2luYXRpb25Db21wb25lbnREb3duZ3JhZGVkQ29tcG9uZW50LFxuICBwYXNzd29yZElucHV0Q29tcG9uZW50RG93bmdyYWRlZENvbXBvbmVudCxcbiAgcGxhdGZvcm1Db25maWd1cmF0aW9uRm9ybURvd25ncmFkZWRDb21wb25lbnQsXG4gIHJhbmdlRGlzcGxheUNvbXBvbmVudERvd25ncmFkZWRDb21wb25lbnQsXG4gIHJvbGVzQXNzZXRUcmVlQ29tcG9uZW50RG93bmdyYWRlZENvbXBvbmVudCxcbiAgdXNlclRvdHBDb21wb25lbnREb3duZ3JhZGVkQ29tcG9uZW50XG59IGZyb20gJy4vZG93bmdyYWRlZC5jb21wb25lbnRzJztcbmltcG9ydCB7XG4gIGFic29sdXRlRGF0ZVNlcnZpY2VEb3duZ3JhZGVkSW5qZWN0YWJsZSxcbiAgYWxlcnRzU2VydmljZURvd25ncmFkZWRJbmplY3RhYmxlLFxuICBhcGlTZXJ2aWNlRG93bmdyYWRlZEluamVjdGFibGUsXG4gIGFwcFN0YXRlU2VydmljZURvd25ncmFkZWRJbmplY3RhYmxlLFxuICBhc3NldExpbmtQaXBlRG93bmdyYWRlZEluamVjdGFibGUsXG4gIGF1dGhCcmlkZ2VTZXJ2aWNlRG93bmdyYWRlZEluamVjdGFibGUsXG4gIGJyaWRnZVNlcnZpY2VEb3duZ3JhZGVkSW5qZWN0YWJsZSxcbiAgY2FjaGVkTG9jYWxlRGljdGlvbmFyeVNlcnZpY2VEb3duZ3JhZGVkSW5qZWN0YWJsZSxcbiAgZGF0YXBvaW50U2VsZWN0b3JTZXJ2aWNlRG93bmdyYWRlZEluamVjdGFibGUsXG4gIGRldmljZUdyaWRTZXJ2aWNlRG93bmdyYWRlZEluamVjdGFibGUsXG4gIGRldmljZVR5cGVEZXRhaWxFZGl0ZWRTZXJ2aWNlRG93bmdyYWRlZEluamVjdGFibGUsXG4gIGRvY3NTZXJ2aWNlRG93bmdyYWRlZEluamVjdGFibGUsXG4gIGZpbGVzU2VydmljZURvd25ncmFkZWRJbmplY3RhYmxlLFxuICBnYWluc2lnaHRTZXJ2aWNlRG93bmdyYWRlZEluamVjdGFibGUsXG4gIGdsb2JhbENvbmZpZ1NlcnZpY2VEb3duZ3JhZGVkSW5qZWN0YWJsZSxcbiAgaGVhZGVyU2VydmljZURvd25ncmFkZWRJbmplY3RhYmxlLFxuICBtb2RhbFNlcnZpY2VEb3duZ3JhZGVkSW5qZWN0YWJsZSxcbiAgcGFzc3dvcmRTZXJ2aWNlRG93bmdyYWRlZEluamVjdGFibGUsXG4gIHByb3BlcnR5VmFsdWVUcmFuc2Zvcm1TZXJ2aWNlRG93bmdyYWRlZEluamVjdGFibGUsXG4gIHNlcnZlck1lc3NhZ2VzU2VydmljZURvd25ncmFkZWRJbmplY3RhYmxlLFxuICBzZXJ2aWNlUmVnaXN0cnlJbmplY3RhYmxlLFxuICB0cmFuc2xhdGVTZXJ2aWNlRG93bmdyYWRlZEluamVjdGFibGUsXG4gIHVzZXJNZW51U2VydmljZURvd25ncmFkZWRJbmplY3RhYmxlXG59IGZyb20gJy4vZG93bmdyYWRlZC5zZXJ2aWNlcyc7XG5pbXBvcnQgeyBnZXR0ZXh0Q2F0YWxvZ0RlY29yYXRvciB9IGZyb20gJy4vZ2V0dGV4dENhdGFsb2cuZGVjb3JhdG9yJztcbmltcG9ydCB7IGdyb3VwVHlwZXNIaWVyYXJjaHlOYXZpZ2F0b3JEZWNvcmF0b3IgfSBmcm9tICcuL2dyb3Vwc0hpZXJhcmNoeU5hdmlnYXRvci5kZWNvcmF0b3InO1xuaW1wb3J0IHsgYzh5TmcxSHR0cEludGVyY2VwdG9yIH0gZnJvbSAnLi9odHRwLmludGVyY2VwdG9yJztcbmltcG9ydCB7IGM4eU5hdmlnYXRvclByb3ZpZGVyIH0gZnJvbSAnLi9uYXZpZ2F0b3IucHJvdmlkZXInO1xuaW1wb3J0IHsgcm9vdENvbXBvbmVudCB9IGZyb20gJy4vcm9vdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgYzh5VGl0bGVEZWNvcmF0b3IgfSBmcm9tICcuL3RpdGxlLmRlY29yYXRvcic7XG5pbXBvcnQgeyBjOHlWaWV3c1Byb3ZpZGVyIH0gZnJvbSAnLi92aWV3cy5wcm92aWRlcic7XG5cbmNvbnN0IE5BTUVfVVBHUkFERSA9ICdjOHkudXBncmFkZSc7XG4od2luZG93IGFzIGFueSkucHJldmVudE5nMUJvb3RzdHJhcCA9IHRydWU7XG5cbmFuZ3VsYXJcbiAgLm1vZHVsZShOQU1FX1VQR1JBREUsIFtdKVxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6b25seS1hcnJvdy1mdW5jdGlvbnNcbiAgLmNvbmZpZyhmdW5jdGlvbiAoJGh0dHBQcm92aWRlcikge1xuICAgICduZ0luamVjdCc7XG5cbiAgICBjb25zdCBuZzFJbnRlcmNlcHRvckluZGV4ID0gJGh0dHBQcm92aWRlci5pbnRlcmNlcHRvcnMuaW5kZXhPZignYzh5TG9hZGluZ0luZGljYXRvcicpO1xuICAgIGlmIChuZzFJbnRlcmNlcHRvckluZGV4ID4gLTEpIHtcbiAgICAgICRodHRwUHJvdmlkZXIuaW50ZXJjZXB0b3JzLnNwbGljZShuZzFJbnRlcmNlcHRvckluZGV4LCAxKTtcbiAgICB9XG4gICAgJGh0dHBQcm92aWRlci5pbnRlcmNlcHRvcnMucHVzaChjOHlOZzFIdHRwSW50ZXJjZXB0b3IpO1xuICB9KVxuICAuY29tcG9uZW50KCdjOHlVaVJvb3QnLCByb290Q29tcG9uZW50KVxuICAuZGlyZWN0aXZlKCdjOHlCb290c3RyYXAnLCBib290c3RyYXBDb21wb25lbnREb3duZ3JhZGVkQ29tcG9uZW50KVxuICAuZmFjdG9yeSgnYzh5QnJpZGdlU2VydmljZScsIGJyaWRnZVNlcnZpY2VEb3duZ3JhZGVkSW5qZWN0YWJsZSlcbiAgLmZhY3RvcnkoJ2M4eUF1dGhCcmlkZ2VTZXJ2aWNlJywgYXV0aEJyaWRnZVNlcnZpY2VEb3duZ3JhZGVkSW5qZWN0YWJsZSlcbiAgLmZhY3RvcnkoJ2M4eUFwcFN0YXRlU2VydmljZScsIGFwcFN0YXRlU2VydmljZURvd25ncmFkZWRJbmplY3RhYmxlKVxuICAuZmFjdG9yeSgnYzh5SGVhZGVyU2VydmljZScsIGhlYWRlclNlcnZpY2VEb3duZ3JhZGVkSW5qZWN0YWJsZSlcbiAgLmZhY3RvcnkoJ2M4eVVzZXJNZW51U2VydmljZScsIHVzZXJNZW51U2VydmljZURvd25ncmFkZWRJbmplY3RhYmxlKVxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6b25seS1hcnJvdy1mdW5jdGlvbnNcbiAgLnNlcnZpY2UoJ2M4eVF1ZXJpZXNVdGlsJywgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBuZXcgUXVlcmllc1V0aWwoKTtcbiAgfSlcbiAgLmZhY3RvcnkoJ2M4eUFsZXJ0JywgYWxlcnRzU2VydmljZURvd25ncmFkZWRJbmplY3RhYmxlKVxuICAuZGVjb3JhdG9yKCdjOHlBbGVydCcsIGM4eUFsZXJ0RGVjb3JhdG9yKVxuICAuZGVjb3JhdG9yKCdncm91cFR5cGVzSGllcmFyY2h5TmF2aWdhdG9yJywgZ3JvdXBUeXBlc0hpZXJhcmNoeU5hdmlnYXRvckRlY29yYXRvcikgLy8gcHJldmVudHMgbG9hZGluZyB0aGUgZ3JvdXBzXG4gIC5mYWN0b3J5KCdjOHlBcGlTZXJ2aWNlJywgYXBpU2VydmljZURvd25ncmFkZWRJbmplY3RhYmxlKVxuICAuZmFjdG9yeSgnYzh5RG9jcycsIGRvY3NTZXJ2aWNlRG93bmdyYWRlZEluamVjdGFibGUpXG4gIC5zZXJ2aWNlKCdjOHlQYXNzd29yZENvbmZpcm0nLCBwYXNzd29yZFNlcnZpY2VEb3duZ3JhZGVkSW5qZWN0YWJsZSlcbiAgLnNlcnZpY2UoJ2M4eU1vZGFsU2VydmljZScsIG1vZGFsU2VydmljZURvd25ncmFkZWRJbmplY3RhYmxlKVxuICAuc2VydmljZSgnYzh5R2FpbnNpZ2h0U2VydmljZScsIGdhaW5zaWdodFNlcnZpY2VEb3duZ3JhZGVkSW5qZWN0YWJsZSlcbiAgLnNlcnZpY2UoJ2M4eUZpbGVzU2VydmljZScsIGZpbGVzU2VydmljZURvd25ncmFkZWRJbmplY3RhYmxlKVxuICAuc2VydmljZSgnYzh5R2xvYmFsQ29uZmlnU2VydmljZScsIGdsb2JhbENvbmZpZ1NlcnZpY2VEb3duZ3JhZGVkSW5qZWN0YWJsZSlcbiAgLnNlcnZpY2UoJ2M4eVByb3BlcnR5VmFsdWVUcmFuc2Zvcm1TZXJ2aWNlJywgcHJvcGVydHlWYWx1ZVRyYW5zZm9ybVNlcnZpY2VEb3duZ3JhZGVkSW5qZWN0YWJsZSlcbiAgLnNlcnZpY2UoJ2M4eURhdGFwb2ludFNlbGVjdG9yU2VydmljZScsIGRhdGFwb2ludFNlbGVjdG9yU2VydmljZURvd25ncmFkZWRJbmplY3RhYmxlKTtcblxuYW5ndWxhclxuICAubW9kdWxlKCdjOHkudWknKVxuICAuZmlsdGVyKCdhYnNvbHV0ZURhdGUnLCBhYnNvbHV0ZURhdGVTZXJ2aWNlRG93bmdyYWRlZEluamVjdGFibGUpXG4gIC5kaXJlY3RpdmUoJ2M4eUxvYWRpbmcnLCBsb2FkaW5nQ29tcG9uZW50RG93bmdyYWRlZENvbXBvbmVudClcbiAgLnByb3ZpZGVyKCdjOHlOYXZpZ2F0b3InLCBjOHlOYXZpZ2F0b3JQcm92aWRlcilcbiAgLnByb3ZpZGVyKCdjOHlWaWV3cycsIGM4eVZpZXdzUHJvdmlkZXIpXG4gIC5kaXJlY3RpdmUoJ2M4eVVzZXJUb3RwUmV2b2tlJywgdXNlclRvdHBDb21wb25lbnREb3duZ3JhZGVkQ29tcG9uZW50KVxuICAuZGlyZWN0aXZlKCdjOHlBcHBMb2dzQXV0b1JlZnJlc2gnLCBhcHBMb2dzQXV0b1JlZnJlc2hDb21wb25lbnREb3duZ3JhZGVkQ29tcG9uZW50KVxuICAuZGlyZWN0aXZlKCdjOHlEYXRhR3JpZCcsIGRhdGFHcmlkQ29tcG9uZW50RG93bmdyYWRlZENvbXBvbmVudClcbiAgLmRpcmVjdGl2ZSgnYzh5UmFuZ2VEaXNwbGF5JywgcmFuZ2VEaXNwbGF5Q29tcG9uZW50RG93bmdyYWRlZENvbXBvbmVudClcbiAgLmRpcmVjdGl2ZSgnYzh5SGVscCcsIGhlbHBDb21wb25lbnREb3duZ3JhZGVkQ29tcG9uZW50KVxuICAuZGlyZWN0aXZlKCdjOHlVaUVtcHR5U3RhdGUnLCBlbXB0eVN0YXRlQ29tcG9uZW50RG93bmdyYWRlZENvbXBvbmVudClcbiAgLmRpcmVjdGl2ZSgnYzh5RGF0YXBvaW50U2VsZWN0aW9uTGlzdCcsIGRhdGFwb2ludFNlbGVjdGlvbkxpc3RDb21wb25lbnREb3duZ3JhZGVkQ29tcG9uZW50KVxuICAuZGlyZWN0aXZlKCdjOHlIaWdobGlnaHQnLCBoaWdobGlnaHRDb21wb25lbnREb3duZ3JhZGVkQ29tcG9uZW50KVxuICAuZGlyZWN0aXZlKCdjOHlQYXNzd29yZElucHV0JywgcGFzc3dvcmRJbnB1dENvbXBvbmVudERvd25ncmFkZWRDb21wb25lbnQpXG4gIC5kaXJlY3RpdmUoJ3BhZ2luYXRpb24nLCBwYWdpbmF0aW9uQ29tcG9uZW50RG93bmdyYWRlZENvbXBvbmVudClcbiAgLmRpcmVjdGl2ZSgnYzh5Um9sZXNBc3NldFRyZWVEb3duZ3JhZGVkJywgcm9sZXNBc3NldFRyZWVDb21wb25lbnREb3duZ3JhZGVkQ29tcG9uZW50KVxuICAuZGlyZWN0aXZlKCdjOHlQbGF0Zm9ybUNvbmZpZ3VyYXRpb25Gb3JtJywgcGxhdGZvcm1Db25maWd1cmF0aW9uRm9ybURvd25ncmFkZWRDb21wb25lbnQpXG4gIC5mYWN0b3J5KCdjOHlUcmFuc2xhdGUnLCB0cmFuc2xhdGVTZXJ2aWNlRG93bmdyYWRlZEluamVjdGFibGUpXG4gIC5mYWN0b3J5KCdjOHlDYWNoZWRMb2NhbGVEaWN0aW9uYXJ5U2VydmljZScsIGNhY2hlZExvY2FsZURpY3Rpb25hcnlTZXJ2aWNlRG93bmdyYWRlZEluamVjdGFibGUpXG4gIC5kZWNvcmF0b3IoJ2dldHRleHRDYXRhbG9nJywgZ2V0dGV4dENhdGFsb2dEZWNvcmF0b3IpXG4gIC5mYWN0b3J5KCdjOHlTZXJ2ZXJNZXNzYWdlcycsIHNlcnZlck1lc3NhZ2VzU2VydmljZURvd25ncmFkZWRJbmplY3RhYmxlKVxuICAuZmFjdG9yeSgnbmdab25lJywgZG93bmdyYWRlSW5qZWN0YWJsZShOZ1pvbmUpKVxuICAuZmFjdG9yeSgnYzh5RGV2aWNlVHlwZURldGFpbEVkaXRlZCcsIGRldmljZVR5cGVEZXRhaWxFZGl0ZWRTZXJ2aWNlRG93bmdyYWRlZEluamVjdGFibGUpXG4gIC5mYWN0b3J5KCdjOHlEZXZpY2VHcmlkU2VydmljZScsIGRldmljZUdyaWRTZXJ2aWNlRG93bmdyYWRlZEluamVjdGFibGUpXG4gIC5mYWN0b3J5KCdjOHlTZXJ2aWNlUmVnaXN0cnknLCBzZXJ2aWNlUmVnaXN0cnlJbmplY3RhYmxlKVxuICAuZmFjdG9yeSgnYXNzZXRMaW5rJywgYXNzZXRMaW5rUGlwZURvd25ncmFkZWRJbmplY3RhYmxlKTtcblxuYW5ndWxhclxuICAubW9kdWxlKCdjOHkudWknKVxuICAuZGVjb3JhdG9yKCdjOHlUaXRsZScsIGM4eVRpdGxlRGVjb3JhdG9yKVxuICAucnVuKFtcbiAgICAnYzh5VGl0bGUnLFxuICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIG5lZWRlZCB0byBpbmplY3QgYzh5VGl0bGUgd2l0aCBkZWNvcmF0b3IgYXBwbGllZCB0byBpdCwgdG8gZW5zdXJlIGRpc3BsYXlpbmcgbmcxIHRpdGxlc1xuICAgIH1cbiAgXSk7XG5cbmV4cG9ydCBjb25zdCBuZzFNb2R1bGVzVXBncmFkZSA9IFsnYXBwJywgTkFNRV9VUEdSQURFXTtcbiJdfQ==
|