@c8y/ngx-components 1021.31.0 → 1021.31.4
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/branding/shared/data/branding-tracking.service.d.ts +20 -0
- package/branding/shared/data/branding-tracking.service.d.ts.map +1 -0
- package/branding/shared/data/index.d.ts +1 -0
- package/branding/shared/data/index.d.ts.map +1 -1
- package/branding/shared/data/store-branding.service.d.ts +8 -1
- package/branding/shared/data/store-branding.service.d.ts.map +1 -1
- package/branding/shared/lazy/branding/branding.component.d.ts +3 -2
- package/branding/shared/lazy/branding/branding.component.d.ts.map +1 -1
- package/branding/shared/lazy/edit-branding-router-outlet/edit-branding-router-outlet.component.d.ts.map +1 -1
- package/cockpit-config/cockpit-config.module.d.ts +1 -1
- package/cockpit-config/cockpit-config.module.d.ts.map +1 -1
- package/core/common/ui-state.service.d.ts +0 -1
- package/core/common/ui-state.service.d.ts.map +1 -1
- package/core/plugins/index.d.ts +1 -0
- package/core/plugins/index.d.ts.map +1 -1
- package/core/plugins/plugin-loaded.pipe.d.ts +12 -0
- package/core/plugins/plugin-loaded.pipe.d.ts.map +1 -0
- package/core/plugins/plugins-resolve.service.d.ts +4 -2
- package/core/plugins/plugins-resolve.service.d.ts.map +1 -1
- package/esm2022/branding/shared/data/branding-tracking.service.mjs +58 -0
- package/esm2022/branding/shared/data/index.mjs +2 -1
- package/esm2022/branding/shared/data/store-branding.service.mjs +15 -4
- package/esm2022/branding/shared/lazy/branding/branding.component.mjs +16 -12
- package/esm2022/branding/shared/lazy/edit-branding-router-outlet/edit-branding-router-outlet.component.mjs +2 -2
- package/esm2022/cockpit-config/cockpit-config.module.mjs +6 -3
- package/esm2022/cockpit-config/feature-config.component.mjs +5 -4
- package/esm2022/core/common/ui-state.service.mjs +1 -19
- package/esm2022/core/plugins/index.mjs +2 -1
- package/esm2022/core/plugins/plugin-loaded.pipe.mjs +26 -0
- package/esm2022/core/plugins/plugins-resolve.service.mjs +5 -1
- package/fesm2022/c8y-ngx-components-branding-shared-data.mjs +68 -5
- package/fesm2022/c8y-ngx-components-branding-shared-data.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +15 -11
- package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-cockpit-config.mjs +7 -5
- package/fesm2022/c8y-ngx-components-cockpit-config.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components.mjs +39 -31
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- package/locales/de.po +1 -1
- package/locales/es.po +1 -1
- package/locales/fr.po +1 -1
- package/locales/ja_JP.po +1 -1
- package/locales/ko.po +1 -1
- package/locales/nl.po +1 -1
- package/locales/pl.po +1 -1
- package/locales/pt_BR.po +1 -1
- package/locales/zh_CN.po +1 -1
- package/locales/zh_TW.po +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import * as i1 from "@c8y/ngx-components";
|
|
4
|
-
import * as i2 from "@angular/
|
|
4
|
+
import * as i2 from "@angular/common";
|
|
5
|
+
import * as i3 from "@angular/forms";
|
|
5
6
|
export class FeatureConfigComponent {
|
|
6
7
|
constructor() {
|
|
7
8
|
this.onUpdate = new EventEmitter();
|
|
@@ -10,14 +11,14 @@ export class FeatureConfigComponent {
|
|
|
10
11
|
this.onUpdate.emit();
|
|
11
12
|
}
|
|
12
13
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: FeatureConfigComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
13
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: FeatureConfigComponent, selector: "c8y-feature-config", inputs: { config: "config" }, outputs: { onUpdate: "onUpdate" }, ngImport: i0, template: "<c8y-list-group>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"search\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Global search' | translate }}</p>\n <p>\n <small translate>Display the global search in the main header.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Global search' | translate }}\"\n >\n <input\n name=\"search\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.search\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"c8y-group\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Groups' | translate }}</p>\n <p>\n <small translate>Display top level groups under the Groups navigator menu.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Groups' | translate }}\"\n >\n <input\n name=\"groups\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.groups\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"bell\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Alarms' | translate }}</p>\n <p>\n <small translate>Display a link to the global alarms list in the navigator menu.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Global Alarms view' | translate }}\"\n >\n <input\n name=\"alarms\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.alarms\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"c8y-data-explorer\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Data explorer' | translate }}</p>\n <p>\n <small translate>\n Display the data explorer in the navigator menu and on the group tabs.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Data explorer' | translate }}\"\n >\n <input\n name=\"dataExplorer\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.dataExplorer\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"c8y-reports\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Reports' | translate }}</p>\n <p>\n <small translate>Display a link to the Reports list in the navigator menu.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Reports' | translate }}\"\n >\n <input\n name=\"reports\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.reports\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"graph-report\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Exports' | translate }}</p>\n <p>\n <small translate>\n Display a link to the Exports list under the Configuration navigator menu.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Exports' | translate }}\"\n >\n <input\n name=\"exports\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.exports\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"c8y-data-points\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Data point library' | translate }}</p>\n <p>\n <small translate>\n Display a link to the Data point library under the Configuration navigator menu.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Data point library' | translate }}\"\n >\n <input\n name=\"dataPointLibrary\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.dataPointLibrary\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"c8y-smart-rules\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Global smart rules' | translate }}</p>\n <p>\n <small translate>\n Display a link to the Global smart rules under the Configuration navigator menu.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Global smart rules' | translate }}\"\n >\n <input\n name=\"globalSmartRules\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.globalSmartRules\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"c8y-group-open\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Subassets view' | translate }}</p>\n <p><small translate>Display the \"Subassets\" tab on groups.</small></p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Subassets view' | translate }}\"\n >\n <input\n name=\"subassets\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.subassets\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"c8y-smart-rules\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Smart rules for devices and groups' | translate }}</p>\n <p>\n <small translate>Display the smart rules tab on groups and devices.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Smart rules for devices and groups' | translate }}\"\n >\n <input\n name=\"smartRules\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.smartRules\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"management1\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Dashboard manager' | translate }}</p>\n <p>\n <small translate>\n Display a link to the Dashboard manager under the Configuration navigator menu.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Dashboard manager' | translate }}\"\n >\n <input\n name=\"dashboardManager\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.dashboardManager\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n</c8y-list-group>\n", dependencies: [{ kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i1.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i1.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i1.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }] }); }
|
|
14
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: FeatureConfigComponent, selector: "c8y-feature-config", inputs: { config: "config" }, outputs: { onUpdate: "onUpdate" }, ngImport: i0, template: "<c8y-list-group>\n <c8y-li data-cy=\"feature-config--feature-list\" *ngIf=\"'SearchModule' | c8yPluginLoaded | async\">\n <c8y-li-icon icon=\"search\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Global search' | translate }}</p>\n <p>\n <small translate>Display the global search in the main header.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Global search' | translate }}\"\n >\n <input\n name=\"search\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.search\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"c8y-group\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Groups' | translate }}</p>\n <p>\n <small translate>Display top level groups under the Groups navigator menu.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Groups' | translate }}\"\n >\n <input\n name=\"groups\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.groups\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\" *ngIf=\"'CockpitAlarmsModule' | c8yPluginLoaded | async\">\n <c8y-li-icon icon=\"bell\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Alarms' | translate }}</p>\n <p>\n <small translate>Display a link to the global alarms list in the navigator menu.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Global Alarms view' | translate }}\"\n >\n <input\n name=\"alarms\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.alarms\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"c8y-data-explorer\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Data explorer' | translate }}</p>\n <p>\n <small translate>\n Display the data explorer in the navigator menu and on the group tabs.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Data explorer' | translate }}\"\n >\n <input\n name=\"dataExplorer\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.dataExplorer\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\" *ngIf=\"'ReportDashboardModule' | c8yPluginLoaded | async\">\n <c8y-li-icon icon=\"c8y-reports\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Reports' | translate }}</p>\n <p>\n <small translate>Display a link to the Reports list in the navigator menu.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Reports' | translate }}\"\n >\n <input\n name=\"reports\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.reports\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"graph-report\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Exports' | translate }}</p>\n <p>\n <small translate>\n Display a link to the Exports list under the Configuration navigator menu.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Exports' | translate }}\"\n >\n <input\n name=\"exports\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.exports\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\" *ngIf=\"'DatapointLibraryModule' | c8yPluginLoaded | async\">\n <c8y-li-icon icon=\"c8y-data-points\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Data point library' | translate }}</p>\n <p>\n <small translate>\n Display a link to the Data point library under the Configuration navigator menu.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Data point library' | translate }}\"\n >\n <input\n name=\"dataPointLibrary\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.dataPointLibrary\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"c8y-smart-rules\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Global smart rules' | translate }}</p>\n <p>\n <small translate>\n Display a link to the Global smart rules under the Configuration navigator menu.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Global smart rules' | translate }}\"\n >\n <input\n name=\"globalSmartRules\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.globalSmartRules\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"c8y-group-open\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Subassets view' | translate }}</p>\n <p><small translate>Display the \"Subassets\" tab on groups.</small></p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Subassets view' | translate }}\"\n >\n <input\n name=\"subassets\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.subassets\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"c8y-smart-rules\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Smart rules for devices and groups' | translate }}</p>\n <p>\n <small translate>Display the smart rules tab on groups and devices.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Smart rules for devices and groups' | translate }}\"\n >\n <input\n name=\"smartRules\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.smartRules\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"management1\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Dashboard manager' | translate }}</p>\n <p>\n <small translate>\n Display a link to the Dashboard manager under the Configuration navigator menu.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Dashboard manager' | translate }}\"\n >\n <input\n name=\"dashboardManager\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.dashboardManager\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n</c8y-list-group>\n", dependencies: [{ kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i1.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i1.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i1.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.PluginLoadedPipe, name: "c8yPluginLoaded" }] }); }
|
|
14
15
|
}
|
|
15
16
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: FeatureConfigComponent, decorators: [{
|
|
16
17
|
type: Component,
|
|
17
|
-
args: [{ selector: 'c8y-feature-config', template: "<c8y-list-group>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"search\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Global search' | translate }}</p>\n <p>\n <small translate>Display the global search in the main header.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Global search' | translate }}\"\n >\n <input\n name=\"search\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.search\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"c8y-group\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Groups' | translate }}</p>\n <p>\n <small translate>Display top level groups under the Groups navigator menu.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Groups' | translate }}\"\n >\n <input\n name=\"groups\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.groups\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"bell\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Alarms' | translate }}</p>\n <p>\n <small translate>Display a link to the global alarms list in the navigator menu.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Global Alarms view' | translate }}\"\n >\n <input\n name=\"alarms\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.alarms\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"c8y-data-explorer\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Data explorer' | translate }}</p>\n <p>\n <small translate>\n Display the data explorer in the navigator menu and on the group tabs.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Data explorer' | translate }}\"\n >\n <input\n name=\"dataExplorer\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.dataExplorer\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"c8y-reports\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Reports' | translate }}</p>\n <p>\n <small translate>Display a link to the Reports list in the navigator menu.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Reports' | translate }}\"\n >\n <input\n name=\"reports\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.reports\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"graph-report\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Exports' | translate }}</p>\n <p>\n <small translate>\n Display a link to the Exports list under the Configuration navigator menu.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Exports' | translate }}\"\n >\n <input\n name=\"exports\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.exports\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"c8y-data-points\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Data point library' | translate }}</p>\n <p>\n <small translate>\n Display a link to the Data point library under the Configuration navigator menu.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Data point library' | translate }}\"\n >\n <input\n name=\"dataPointLibrary\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.dataPointLibrary\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"c8y-smart-rules\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Global smart rules' | translate }}</p>\n <p>\n <small translate>\n Display a link to the Global smart rules under the Configuration navigator menu.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Global smart rules' | translate }}\"\n >\n <input\n name=\"globalSmartRules\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.globalSmartRules\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"c8y-group-open\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Subassets view' | translate }}</p>\n <p><small translate>Display the \"Subassets\" tab on groups.</small></p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Subassets view' | translate }}\"\n >\n <input\n name=\"subassets\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.subassets\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"c8y-smart-rules\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Smart rules for devices and groups' | translate }}</p>\n <p>\n <small translate>Display the smart rules tab on groups and devices.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Smart rules for devices and groups' | translate }}\"\n >\n <input\n name=\"smartRules\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.smartRules\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"management1\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Dashboard manager' | translate }}</p>\n <p>\n <small translate>\n Display a link to the Dashboard manager under the Configuration navigator menu.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Dashboard manager' | translate }}\"\n >\n <input\n name=\"dashboardManager\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.dashboardManager\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n</c8y-list-group>\n" }]
|
|
18
|
+
args: [{ selector: 'c8y-feature-config', template: "<c8y-list-group>\n <c8y-li data-cy=\"feature-config--feature-list\" *ngIf=\"'SearchModule' | c8yPluginLoaded | async\">\n <c8y-li-icon icon=\"search\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Global search' | translate }}</p>\n <p>\n <small translate>Display the global search in the main header.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Global search' | translate }}\"\n >\n <input\n name=\"search\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.search\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"c8y-group\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Groups' | translate }}</p>\n <p>\n <small translate>Display top level groups under the Groups navigator menu.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Groups' | translate }}\"\n >\n <input\n name=\"groups\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.groups\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\" *ngIf=\"'CockpitAlarmsModule' | c8yPluginLoaded | async\">\n <c8y-li-icon icon=\"bell\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Alarms' | translate }}</p>\n <p>\n <small translate>Display a link to the global alarms list in the navigator menu.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Global Alarms view' | translate }}\"\n >\n <input\n name=\"alarms\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.alarms\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"c8y-data-explorer\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Data explorer' | translate }}</p>\n <p>\n <small translate>\n Display the data explorer in the navigator menu and on the group tabs.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Data explorer' | translate }}\"\n >\n <input\n name=\"dataExplorer\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.dataExplorer\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\" *ngIf=\"'ReportDashboardModule' | c8yPluginLoaded | async\">\n <c8y-li-icon icon=\"c8y-reports\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Reports' | translate }}</p>\n <p>\n <small translate>Display a link to the Reports list in the navigator menu.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Reports' | translate }}\"\n >\n <input\n name=\"reports\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.reports\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"graph-report\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Exports' | translate }}</p>\n <p>\n <small translate>\n Display a link to the Exports list under the Configuration navigator menu.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Exports' | translate }}\"\n >\n <input\n name=\"exports\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.exports\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\" *ngIf=\"'DatapointLibraryModule' | c8yPluginLoaded | async\">\n <c8y-li-icon icon=\"c8y-data-points\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Data point library' | translate }}</p>\n <p>\n <small translate>\n Display a link to the Data point library under the Configuration navigator menu.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Data point library' | translate }}\"\n >\n <input\n name=\"dataPointLibrary\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.dataPointLibrary\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"c8y-smart-rules\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Global smart rules' | translate }}</p>\n <p>\n <small translate>\n Display a link to the Global smart rules under the Configuration navigator menu.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Global smart rules' | translate }}\"\n >\n <input\n name=\"globalSmartRules\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.globalSmartRules\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"c8y-group-open\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Subassets view' | translate }}</p>\n <p><small translate>Display the \"Subassets\" tab on groups.</small></p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Subassets view' | translate }}\"\n >\n <input\n name=\"subassets\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.subassets\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"c8y-smart-rules\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Smart rules for devices and groups' | translate }}</p>\n <p>\n <small translate>Display the smart rules tab on groups and devices.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Smart rules for devices and groups' | translate }}\"\n >\n <input\n name=\"smartRules\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.smartRules\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"management1\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Dashboard manager' | translate }}</p>\n <p>\n <small translate>\n Display a link to the Dashboard manager under the Configuration navigator menu.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Dashboard manager' | translate }}\"\n >\n <input\n name=\"dashboardManager\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.dashboardManager\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n</c8y-list-group>\n" }]
|
|
18
19
|
}], propDecorators: { config: [{
|
|
19
20
|
type: Input
|
|
20
21
|
}], onUpdate: [{
|
|
21
22
|
type: Output
|
|
22
23
|
}] } });
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1jb25maWcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vY29ja3BpdC1jb25maWcvZmVhdHVyZS1jb25maWcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vY29ja3BpdC1jb25maWcvZmVhdHVyZS1jb25maWcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQU92RSxNQUFNLE9BQU8sc0JBQXNCO0lBSm5DO1FBU0UsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7S0FLckM7SUFIQyxjQUFjO1FBQ1osSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDOzhHQVRVLHNCQUFzQjtrR0FBdEIsc0JBQXNCLDJIQ1BuQyx3aVFBdVFBOzsyRkRoUWEsc0JBQXNCO2tCQUpsQyxTQUFTOytCQUNFLG9CQUFvQjs4QkFLOUIsTUFBTTtzQkFETCxLQUFLO2dCQUlOLFFBQVE7c0JBRFAsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb2NrcGl0Q29uZmlnIH0gZnJvbSAnLi9jb2NrcGl0LWNvbmZpZy5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1mZWF0dXJlLWNvbmZpZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9mZWF0dXJlLWNvbmZpZy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRmVhdHVyZUNvbmZpZ0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIGNvbmZpZzogQ29ja3BpdENvbmZpZztcblxuICBAT3V0cHV0KClcbiAgb25VcGRhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgdXBkYXRlRmVhdHVyZXMoKSB7XG4gICAgdGhpcy5vblVwZGF0ZS5lbWl0KCk7XG4gIH1cbn1cbiIsIjxjOHktbGlzdC1ncm91cD5cbiAgPGM4eS1saSBkYXRhLWN5PVwiZmVhdHVyZS1jb25maWctLWZlYXR1cmUtbGlzdFwiPlxuICAgIDxjOHktbGktaWNvbiBpY29uPVwic2VhcmNoXCI+PC9jOHktbGktaWNvbj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGEtaS1jZW50ZXJcIj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxwPnt7ICdHbG9iYWwgc2VhcmNoJyB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICAgICAgPHA+XG4gICAgICAgICAgPHNtYWxsIHRyYW5zbGF0ZT5EaXNwbGF5IHRoZSBnbG9iYWwgc2VhcmNoIGluIHRoZSBtYWluIGhlYWRlci48L3NtYWxsPlxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxsYWJlbFxuICAgICAgICBjbGFzcz1cImM4eS1zd2l0Y2ggYzh5LXN3aXRjaC0taW5saW5lIG0tbC1hdXRvXCJcbiAgICAgICAgdGl0bGU9XCJ7eyAnR2xvYmFsIHNlYXJjaCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBuYW1lPVwic2VhcmNoXCJcbiAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZmlnLmZlYXR1cmVzLnNlYXJjaFwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJ1cGRhdGVGZWF0dXJlcygpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgPC9sYWJlbD5cbiAgICA8L2Rpdj5cbiAgPC9jOHktbGk+XG4gIDxjOHktbGkgZGF0YS1jeT1cImZlYXR1cmUtY29uZmlnLS1mZWF0dXJlLWxpc3RcIj5cbiAgICA8Yzh5LWxpLWljb24gaWNvbj1cImM4eS1ncm91cFwiPjwvYzh5LWxpLWljb24+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhLWktY2VudGVyXCI+XG4gICAgICA8ZGl2PlxuICAgICAgICA8cD57eyAnR3JvdXBzJyB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICAgICAgPHA+XG4gICAgICAgICAgPHNtYWxsIHRyYW5zbGF0ZT5EaXNwbGF5IHRvcCBsZXZlbCBncm91cHMgdW5kZXIgdGhlIEdyb3VwcyBuYXZpZ2F0b3IgbWVudS48L3NtYWxsPlxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxsYWJlbFxuICAgICAgICBjbGFzcz1cImM4eS1zd2l0Y2ggYzh5LXN3aXRjaC0taW5saW5lIG0tbC1hdXRvXCJcbiAgICAgICAgdGl0bGU9XCJ7eyAnR3JvdXBzJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICA+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIG5hbWU9XCJncm91cHNcIlxuICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25maWcuZmVhdHVyZXMuZ3JvdXBzXCJcbiAgICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZUZlYXR1cmVzKClcIlxuICAgICAgICAvPlxuICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuICA8L2M4eS1saT5cbiAgPGM4eS1saSBkYXRhLWN5PVwiZmVhdHVyZS1jb25maWctLWZlYXR1cmUtbGlzdFwiPlxuICAgIDxjOHktbGktaWNvbiBpY29uPVwiYmVsbFwiPjwvYzh5LWxpLWljb24+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhLWktY2VudGVyXCI+XG4gICAgICA8ZGl2PlxuICAgICAgICA8cD57eyAnQWxhcm1zJyB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICAgICAgPHA+XG4gICAgICAgICAgPHNtYWxsIHRyYW5zbGF0ZT5EaXNwbGF5IGEgbGluayB0byB0aGUgZ2xvYmFsIGFsYXJtcyBsaXN0IGluIHRoZSBuYXZpZ2F0b3IgbWVudS48L3NtYWxsPlxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxsYWJlbFxuICAgICAgICBjbGFzcz1cImM4eS1zd2l0Y2ggYzh5LXN3aXRjaC0taW5saW5lIG0tbC1hdXRvXCJcbiAgICAgICAgdGl0bGU9XCJ7eyAnR2xvYmFsIEFsYXJtcyB2aWV3JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICA+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIG5hbWU9XCJhbGFybXNcIlxuICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25maWcuZmVhdHVyZXMuYWxhcm1zXCJcbiAgICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZUZlYXR1cmVzKClcIlxuICAgICAgICAvPlxuICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuICA8L2M4eS1saT5cbiAgPGM4eS1saSBkYXRhLWN5PVwiZmVhdHVyZS1jb25maWctLWZlYXR1cmUtbGlzdFwiPlxuICAgIDxjOHktbGktaWNvbiBpY29uPVwiYzh5LWRhdGEtZXhwbG9yZXJcIj48L2M4eS1saS1pY29uPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYS1pLWNlbnRlclwiPlxuICAgICAgPGRpdj5cbiAgICAgICAgPHA+e3sgJ0RhdGEgZXhwbG9yZXInIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICA8cD5cbiAgICAgICAgICA8c21hbGwgdHJhbnNsYXRlPlxuICAgICAgICAgICAgRGlzcGxheSB0aGUgZGF0YSBleHBsb3JlciBpbiB0aGUgbmF2aWdhdG9yIG1lbnUgYW5kIG9uIHRoZSBncm91cCB0YWJzLlxuICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGxhYmVsXG4gICAgICAgIGNsYXNzPVwiYzh5LXN3aXRjaCBjOHktc3dpdGNoLS1pbmxpbmUgbS1sLWF1dG9cIlxuICAgICAgICB0aXRsZT1cInt7ICdEYXRhIGV4cGxvcmVyJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICA+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIG5hbWU9XCJkYXRhRXhwbG9yZXJcIlxuICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25maWcuZmVhdHVyZXMuZGF0YUV4cGxvcmVyXCJcbiAgICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZUZlYXR1cmVzKClcIlxuICAgICAgICAvPlxuICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuICA8L2M4eS1saT5cbiAgPGM4eS1saSBkYXRhLWN5PVwiZmVhdHVyZS1jb25maWctLWZlYXR1cmUtbGlzdFwiPlxuICAgIDxjOHktbGktaWNvbiBpY29uPVwiYzh5LXJlcG9ydHNcIj48L2M4eS1saS1pY29uPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYS1pLWNlbnRlclwiPlxuICAgICAgPGRpdj5cbiAgICAgICAgPHA+e3sgJ1JlcG9ydHMnIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICA8cD5cbiAgICAgICAgICA8c21hbGwgdHJhbnNsYXRlPkRpc3BsYXkgYSBsaW5rIHRvIHRoZSBSZXBvcnRzIGxpc3QgaW4gdGhlIG5hdmlnYXRvciBtZW51Ljwvc21hbGw+XG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGxhYmVsXG4gICAgICAgIGNsYXNzPVwiYzh5LXN3aXRjaCBjOHktc3dpdGNoLS1pbmxpbmUgbS1sLWF1dG9cIlxuICAgICAgICB0aXRsZT1cInt7ICdSZXBvcnRzJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICA+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIG5hbWU9XCJyZXBvcnRzXCJcbiAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZmlnLmZlYXR1cmVzLnJlcG9ydHNcIlxuICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlRmVhdHVyZXMoKVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gIDwvYzh5LWxpPlxuICA8Yzh5LWxpIGRhdGEtY3k9XCJmZWF0dXJlLWNvbmZpZy0tZmVhdHVyZS1saXN0XCI+XG4gICAgPGM4eS1saS1pY29uIGljb249XCJncmFwaC1yZXBvcnRcIj48L2M4eS1saS1pY29uPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYS1pLWNlbnRlclwiPlxuICAgICAgPGRpdj5cbiAgICAgICAgPHA+e3sgJ0V4cG9ydHMnIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICA8cD5cbiAgICAgICAgICA8c21hbGwgdHJhbnNsYXRlPlxuICAgICAgICAgICAgRGlzcGxheSBhIGxpbmsgdG8gdGhlIEV4cG9ydHMgbGlzdCB1bmRlciB0aGUgQ29uZmlndXJhdGlvbiBuYXZpZ2F0b3IgbWVudS5cbiAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxsYWJlbFxuICAgICAgICBjbGFzcz1cImM4eS1zd2l0Y2ggYzh5LXN3aXRjaC0taW5saW5lIG0tbC1hdXRvXCJcbiAgICAgICAgdGl0bGU9XCJ7eyAnRXhwb3J0cycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBuYW1lPVwiZXhwb3J0c1wiXG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbmZpZy5mZWF0dXJlcy5leHBvcnRzXCJcbiAgICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZUZlYXR1cmVzKClcIlxuICAgICAgICAvPlxuICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuICA8L2M4eS1saT5cbiAgPGM4eS1saSBkYXRhLWN5PVwiZmVhdHVyZS1jb25maWctLWZlYXR1cmUtbGlzdFwiPlxuICAgIDxjOHktbGktaWNvbiBpY29uPVwiYzh5LWRhdGEtcG9pbnRzXCI+PC9jOHktbGktaWNvbj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGEtaS1jZW50ZXJcIj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxwPnt7ICdEYXRhIHBvaW50IGxpYnJhcnknIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICA8cD5cbiAgICAgICAgICA8c21hbGwgdHJhbnNsYXRlPlxuICAgICAgICAgICAgRGlzcGxheSBhIGxpbmsgdG8gdGhlIERhdGEgcG9pbnQgbGlicmFyeSB1bmRlciB0aGUgQ29uZmlndXJhdGlvbiBuYXZpZ2F0b3IgbWVudS5cbiAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxsYWJlbFxuICAgICAgICBjbGFzcz1cImM4eS1zd2l0Y2ggYzh5LXN3aXRjaC0taW5saW5lIG0tbC1hdXRvXCJcbiAgICAgICAgdGl0bGU9XCJ7eyAnRGF0YSBwb2ludCBsaWJyYXJ5JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICA+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIG5hbWU9XCJkYXRhUG9pbnRMaWJyYXJ5XCJcbiAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZmlnLmZlYXR1cmVzLmRhdGFQb2ludExpYnJhcnlcIlxuICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlRmVhdHVyZXMoKVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gIDwvYzh5LWxpPlxuICA8Yzh5LWxpIGRhdGEtY3k9XCJmZWF0dXJlLWNvbmZpZy0tZmVhdHVyZS1saXN0XCI+XG4gICAgPGM4eS1saS1pY29uIGljb249XCJjOHktc21hcnQtcnVsZXNcIj48L2M4eS1saS1pY29uPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYS1pLWNlbnRlclwiPlxuICAgICAgPGRpdj5cbiAgICAgICAgPHA+e3sgJ0dsb2JhbCBzbWFydCBydWxlcycgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgIDxwPlxuICAgICAgICAgIDxzbWFsbCB0cmFuc2xhdGU+XG4gICAgICAgICAgICBEaXNwbGF5IGEgbGluayB0byB0aGUgR2xvYmFsIHNtYXJ0IHJ1bGVzIHVuZGVyIHRoZSBDb25maWd1cmF0aW9uIG5hdmlnYXRvciBtZW51LlxuICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGxhYmVsXG4gICAgICAgIGNsYXNzPVwiYzh5LXN3aXRjaCBjOHktc3dpdGNoLS1pbmxpbmUgbS1sLWF1dG9cIlxuICAgICAgICB0aXRsZT1cInt7ICdHbG9iYWwgc21hcnQgcnVsZXMnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgID5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgbmFtZT1cImdsb2JhbFNtYXJ0UnVsZXNcIlxuICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25maWcuZmVhdHVyZXMuZ2xvYmFsU21hcnRSdWxlc1wiXG4gICAgICAgICAgKGNoYW5nZSk9XCJ1cGRhdGVGZWF0dXJlcygpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgPC9sYWJlbD5cbiAgICA8L2Rpdj5cbiAgPC9jOHktbGk+XG4gIDxjOHktbGkgZGF0YS1jeT1cImZlYXR1cmUtY29uZmlnLS1mZWF0dXJlLWxpc3RcIj5cbiAgICA8Yzh5LWxpLWljb24gaWNvbj1cImM4eS1ncm91cC1vcGVuXCI+PC9jOHktbGktaWNvbj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGEtaS1jZW50ZXJcIj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxwPnt7ICdTdWJhc3NldHMgdmlldycgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgIDxwPjxzbWFsbCB0cmFuc2xhdGU+RGlzcGxheSB0aGUgXCJTdWJhc3NldHNcIiB0YWIgb24gZ3JvdXBzLjwvc21hbGw+PC9wPlxuICAgICAgPC9kaXY+XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJjOHktc3dpdGNoIGM4eS1zd2l0Y2gtLWlubGluZSBtLWwtYXV0b1wiXG4gICAgICAgIHRpdGxlPVwie3sgJ1N1YmFzc2V0cyB2aWV3JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICA+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIG5hbWU9XCJzdWJhc3NldHNcIlxuICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25maWcuZmVhdHVyZXMuc3ViYXNzZXRzXCJcbiAgICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZUZlYXR1cmVzKClcIlxuICAgICAgICAvPlxuICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuICA8L2M4eS1saT5cbiAgPGM4eS1saSBkYXRhLWN5PVwiZmVhdHVyZS1jb25maWctLWZlYXR1cmUtbGlzdFwiPlxuICAgIDxjOHktbGktaWNvbiBpY29uPVwiYzh5LXNtYXJ0LXJ1bGVzXCI+PC9jOHktbGktaWNvbj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGEtaS1jZW50ZXJcIj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxwPnt7ICdTbWFydCBydWxlcyBmb3IgZGV2aWNlcyBhbmQgZ3JvdXBzJyB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICAgICAgPHA+XG4gICAgICAgICAgPHNtYWxsIHRyYW5zbGF0ZT5EaXNwbGF5IHRoZSBzbWFydCBydWxlcyB0YWIgb24gZ3JvdXBzIGFuZCBkZXZpY2VzLjwvc21hbGw+XG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGxhYmVsXG4gICAgICAgIGNsYXNzPVwiYzh5LXN3aXRjaCBjOHktc3dpdGNoLS1pbmxpbmUgbS1sLWF1dG9cIlxuICAgICAgICB0aXRsZT1cInt7ICdTbWFydCBydWxlcyBmb3IgZGV2aWNlcyBhbmQgZ3JvdXBzJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICA+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIG5hbWU9XCJzbWFydFJ1bGVzXCJcbiAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZmlnLmZlYXR1cmVzLnNtYXJ0UnVsZXNcIlxuICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlRmVhdHVyZXMoKVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gIDwvYzh5LWxpPlxuICA8Yzh5LWxpIGRhdGEtY3k9XCJmZWF0dXJlLWNvbmZpZy0tZmVhdHVyZS1saXN0XCI+XG4gICAgPGM4eS1saS1pY29uIGljb249XCJtYW5hZ2VtZW50MVwiPjwvYzh5LWxpLWljb24+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhLWktY2VudGVyXCI+XG4gICAgICA8ZGl2PlxuICAgICAgICA8cD57eyAnRGFzaGJvYXJkIG1hbmFnZXInIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICA8cD5cbiAgICAgICAgICA8c21hbGwgdHJhbnNsYXRlPlxuICAgICAgICAgICAgRGlzcGxheSBhIGxpbmsgdG8gdGhlIERhc2hib2FyZCBtYW5hZ2VyIHVuZGVyIHRoZSBDb25maWd1cmF0aW9uIG5hdmlnYXRvciBtZW51LlxuICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGxhYmVsXG4gICAgICAgIGNsYXNzPVwiYzh5LXN3aXRjaCBjOHktc3dpdGNoLS1pbmxpbmUgbS1sLWF1dG9cIlxuICAgICAgICB0aXRsZT1cInt7ICdEYXNoYm9hcmQgbWFuYWdlcicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBuYW1lPVwiZGFzaGJvYXJkTWFuYWdlclwiXG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbmZpZy5mZWF0dXJlcy5kYXNoYm9hcmRNYW5hZ2VyXCJcbiAgICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZUZlYXR1cmVzKClcIlxuICAgICAgICAvPlxuICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuICA8L2M4eS1saT5cbjwvYzh5LWxpc3QtZ3JvdXA+XG4iXX0=
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1jb25maWcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vY29ja3BpdC1jb25maWcvZmVhdHVyZS1jb25maWcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vY29ja3BpdC1jb25maWcvZmVhdHVyZS1jb25maWcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFPdkUsTUFBTSxPQUFPLHNCQUFzQjtJQUpuQztRQVNFLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0tBS3JDO0lBSEMsY0FBYztRQUNaLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQzs4R0FUVSxzQkFBc0I7a0dBQXRCLHNCQUFzQiwySENQbkMsOHdRQXVRQTs7MkZEaFFhLHNCQUFzQjtrQkFKbEMsU0FBUzsrQkFDRSxvQkFBb0I7OEJBSzlCLE1BQU07c0JBREwsS0FBSztnQkFJTixRQUFRO3NCQURQLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29ja3BpdENvbmZpZyB9IGZyb20gJy4vY29ja3BpdC1jb25maWcubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZmVhdHVyZS1jb25maWcnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmVhdHVyZS1jb25maWcuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEZlYXR1cmVDb25maWdDb21wb25lbnQge1xuICBASW5wdXQoKVxuICBjb25maWc6IENvY2twaXRDb25maWc7XG5cbiAgQE91dHB1dCgpXG4gIG9uVXBkYXRlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHVwZGF0ZUZlYXR1cmVzKCkge1xuICAgIHRoaXMub25VcGRhdGUuZW1pdCgpO1xuICB9XG59XG4iLCI8Yzh5LWxpc3QtZ3JvdXA+XG4gIDxjOHktbGkgZGF0YS1jeT1cImZlYXR1cmUtY29uZmlnLS1mZWF0dXJlLWxpc3RcIiAqbmdJZj1cIidTZWFyY2hNb2R1bGUnIHwgYzh5UGx1Z2luTG9hZGVkIHwgYXN5bmNcIj5cbiAgICA8Yzh5LWxpLWljb24gaWNvbj1cInNlYXJjaFwiPjwvYzh5LWxpLWljb24+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhLWktY2VudGVyXCI+XG4gICAgICA8ZGl2PlxuICAgICAgICA8cD57eyAnR2xvYmFsIHNlYXJjaCcgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgIDxwPlxuICAgICAgICAgIDxzbWFsbCB0cmFuc2xhdGU+RGlzcGxheSB0aGUgZ2xvYmFsIHNlYXJjaCBpbiB0aGUgbWFpbiBoZWFkZXIuPC9zbWFsbD5cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJjOHktc3dpdGNoIGM4eS1zd2l0Y2gtLWlubGluZSBtLWwtYXV0b1wiXG4gICAgICAgIHRpdGxlPVwie3sgJ0dsb2JhbCBzZWFyY2gnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgID5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgbmFtZT1cInNlYXJjaFwiXG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbmZpZy5mZWF0dXJlcy5zZWFyY2hcIlxuICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlRmVhdHVyZXMoKVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gIDwvYzh5LWxpPlxuICA8Yzh5LWxpIGRhdGEtY3k9XCJmZWF0dXJlLWNvbmZpZy0tZmVhdHVyZS1saXN0XCI+XG4gICAgPGM4eS1saS1pY29uIGljb249XCJjOHktZ3JvdXBcIj48L2M4eS1saS1pY29uPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYS1pLWNlbnRlclwiPlxuICAgICAgPGRpdj5cbiAgICAgICAgPHA+e3sgJ0dyb3VwcycgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgIDxwPlxuICAgICAgICAgIDxzbWFsbCB0cmFuc2xhdGU+RGlzcGxheSB0b3AgbGV2ZWwgZ3JvdXBzIHVuZGVyIHRoZSBHcm91cHMgbmF2aWdhdG9yIG1lbnUuPC9zbWFsbD5cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJjOHktc3dpdGNoIGM4eS1zd2l0Y2gtLWlubGluZSBtLWwtYXV0b1wiXG4gICAgICAgIHRpdGxlPVwie3sgJ0dyb3VwcycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBuYW1lPVwiZ3JvdXBzXCJcbiAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZmlnLmZlYXR1cmVzLmdyb3Vwc1wiXG4gICAgICAgICAgKGNoYW5nZSk9XCJ1cGRhdGVGZWF0dXJlcygpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgPC9sYWJlbD5cbiAgICA8L2Rpdj5cbiAgPC9jOHktbGk+XG4gIDxjOHktbGkgZGF0YS1jeT1cImZlYXR1cmUtY29uZmlnLS1mZWF0dXJlLWxpc3RcIiAqbmdJZj1cIidDb2NrcGl0QWxhcm1zTW9kdWxlJyB8IGM4eVBsdWdpbkxvYWRlZCB8IGFzeW5jXCI+XG4gICAgPGM4eS1saS1pY29uIGljb249XCJiZWxsXCI+PC9jOHktbGktaWNvbj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGEtaS1jZW50ZXJcIj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxwPnt7ICdBbGFybXMnIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICA8cD5cbiAgICAgICAgICA8c21hbGwgdHJhbnNsYXRlPkRpc3BsYXkgYSBsaW5rIHRvIHRoZSBnbG9iYWwgYWxhcm1zIGxpc3QgaW4gdGhlIG5hdmlnYXRvciBtZW51Ljwvc21hbGw+XG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGxhYmVsXG4gICAgICAgIGNsYXNzPVwiYzh5LXN3aXRjaCBjOHktc3dpdGNoLS1pbmxpbmUgbS1sLWF1dG9cIlxuICAgICAgICB0aXRsZT1cInt7ICdHbG9iYWwgQWxhcm1zIHZpZXcnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgID5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgbmFtZT1cImFsYXJtc1wiXG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbmZpZy5mZWF0dXJlcy5hbGFybXNcIlxuICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlRmVhdHVyZXMoKVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gIDwvYzh5LWxpPlxuICA8Yzh5LWxpIGRhdGEtY3k9XCJmZWF0dXJlLWNvbmZpZy0tZmVhdHVyZS1saXN0XCI+XG4gICAgPGM4eS1saS1pY29uIGljb249XCJjOHktZGF0YS1leHBsb3JlclwiPjwvYzh5LWxpLWljb24+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhLWktY2VudGVyXCI+XG4gICAgICA8ZGl2PlxuICAgICAgICA8cD57eyAnRGF0YSBleHBsb3JlcicgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgIDxwPlxuICAgICAgICAgIDxzbWFsbCB0cmFuc2xhdGU+XG4gICAgICAgICAgICBEaXNwbGF5IHRoZSBkYXRhIGV4cGxvcmVyIGluIHRoZSBuYXZpZ2F0b3IgbWVudSBhbmQgb24gdGhlIGdyb3VwIHRhYnMuXG4gICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJjOHktc3dpdGNoIGM4eS1zd2l0Y2gtLWlubGluZSBtLWwtYXV0b1wiXG4gICAgICAgIHRpdGxlPVwie3sgJ0RhdGEgZXhwbG9yZXInIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgID5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgbmFtZT1cImRhdGFFeHBsb3JlclwiXG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbmZpZy5mZWF0dXJlcy5kYXRhRXhwbG9yZXJcIlxuICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlRmVhdHVyZXMoKVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gIDwvYzh5LWxpPlxuICA8Yzh5LWxpIGRhdGEtY3k9XCJmZWF0dXJlLWNvbmZpZy0tZmVhdHVyZS1saXN0XCIgKm5nSWY9XCInUmVwb3J0RGFzaGJvYXJkTW9kdWxlJyB8IGM4eVBsdWdpbkxvYWRlZCB8IGFzeW5jXCI+XG4gICAgPGM4eS1saS1pY29uIGljb249XCJjOHktcmVwb3J0c1wiPjwvYzh5LWxpLWljb24+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhLWktY2VudGVyXCI+XG4gICAgICA8ZGl2PlxuICAgICAgICA8cD57eyAnUmVwb3J0cycgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgIDxwPlxuICAgICAgICAgIDxzbWFsbCB0cmFuc2xhdGU+RGlzcGxheSBhIGxpbmsgdG8gdGhlIFJlcG9ydHMgbGlzdCBpbiB0aGUgbmF2aWdhdG9yIG1lbnUuPC9zbWFsbD5cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJjOHktc3dpdGNoIGM4eS1zd2l0Y2gtLWlubGluZSBtLWwtYXV0b1wiXG4gICAgICAgIHRpdGxlPVwie3sgJ1JlcG9ydHMnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgID5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgbmFtZT1cInJlcG9ydHNcIlxuICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25maWcuZmVhdHVyZXMucmVwb3J0c1wiXG4gICAgICAgICAgKGNoYW5nZSk9XCJ1cGRhdGVGZWF0dXJlcygpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgPC9sYWJlbD5cbiAgICA8L2Rpdj5cbiAgPC9jOHktbGk+XG4gIDxjOHktbGkgZGF0YS1jeT1cImZlYXR1cmUtY29uZmlnLS1mZWF0dXJlLWxpc3RcIj5cbiAgICA8Yzh5LWxpLWljb24gaWNvbj1cImdyYXBoLXJlcG9ydFwiPjwvYzh5LWxpLWljb24+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhLWktY2VudGVyXCI+XG4gICAgICA8ZGl2PlxuICAgICAgICA8cD57eyAnRXhwb3J0cycgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgIDxwPlxuICAgICAgICAgIDxzbWFsbCB0cmFuc2xhdGU+XG4gICAgICAgICAgICBEaXNwbGF5IGEgbGluayB0byB0aGUgRXhwb3J0cyBsaXN0IHVuZGVyIHRoZSBDb25maWd1cmF0aW9uIG5hdmlnYXRvciBtZW51LlxuICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGxhYmVsXG4gICAgICAgIGNsYXNzPVwiYzh5LXN3aXRjaCBjOHktc3dpdGNoLS1pbmxpbmUgbS1sLWF1dG9cIlxuICAgICAgICB0aXRsZT1cInt7ICdFeHBvcnRzJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICA+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIG5hbWU9XCJleHBvcnRzXCJcbiAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZmlnLmZlYXR1cmVzLmV4cG9ydHNcIlxuICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlRmVhdHVyZXMoKVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gIDwvYzh5LWxpPlxuICA8Yzh5LWxpIGRhdGEtY3k9XCJmZWF0dXJlLWNvbmZpZy0tZmVhdHVyZS1saXN0XCIgKm5nSWY9XCInRGF0YXBvaW50TGlicmFyeU1vZHVsZScgfCBjOHlQbHVnaW5Mb2FkZWQgfCBhc3luY1wiPlxuICAgIDxjOHktbGktaWNvbiBpY29uPVwiYzh5LWRhdGEtcG9pbnRzXCI+PC9jOHktbGktaWNvbj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGEtaS1jZW50ZXJcIj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxwPnt7ICdEYXRhIHBvaW50IGxpYnJhcnknIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICA8cD5cbiAgICAgICAgICA8c21hbGwgdHJhbnNsYXRlPlxuICAgICAgICAgICAgRGlzcGxheSBhIGxpbmsgdG8gdGhlIERhdGEgcG9pbnQgbGlicmFyeSB1bmRlciB0aGUgQ29uZmlndXJhdGlvbiBuYXZpZ2F0b3IgbWVudS5cbiAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxsYWJlbFxuICAgICAgICBjbGFzcz1cImM4eS1zd2l0Y2ggYzh5LXN3aXRjaC0taW5saW5lIG0tbC1hdXRvXCJcbiAgICAgICAgdGl0bGU9XCJ7eyAnRGF0YSBwb2ludCBsaWJyYXJ5JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICA+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIG5hbWU9XCJkYXRhUG9pbnRMaWJyYXJ5XCJcbiAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZmlnLmZlYXR1cmVzLmRhdGFQb2ludExpYnJhcnlcIlxuICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlRmVhdHVyZXMoKVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gIDwvYzh5LWxpPlxuICA8Yzh5LWxpIGRhdGEtY3k9XCJmZWF0dXJlLWNvbmZpZy0tZmVhdHVyZS1saXN0XCI+XG4gICAgPGM4eS1saS1pY29uIGljb249XCJjOHktc21hcnQtcnVsZXNcIj48L2M4eS1saS1pY29uPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYS1pLWNlbnRlclwiPlxuICAgICAgPGRpdj5cbiAgICAgICAgPHA+e3sgJ0dsb2JhbCBzbWFydCBydWxlcycgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgIDxwPlxuICAgICAgICAgIDxzbWFsbCB0cmFuc2xhdGU+XG4gICAgICAgICAgICBEaXNwbGF5IGEgbGluayB0byB0aGUgR2xvYmFsIHNtYXJ0IHJ1bGVzIHVuZGVyIHRoZSBDb25maWd1cmF0aW9uIG5hdmlnYXRvciBtZW51LlxuICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGxhYmVsXG4gICAgICAgIGNsYXNzPVwiYzh5LXN3aXRjaCBjOHktc3dpdGNoLS1pbmxpbmUgbS1sLWF1dG9cIlxuICAgICAgICB0aXRsZT1cInt7ICdHbG9iYWwgc21hcnQgcnVsZXMnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgID5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgbmFtZT1cImdsb2JhbFNtYXJ0UnVsZXNcIlxuICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25maWcuZmVhdHVyZXMuZ2xvYmFsU21hcnRSdWxlc1wiXG4gICAgICAgICAgKGNoYW5nZSk9XCJ1cGRhdGVGZWF0dXJlcygpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgPC9sYWJlbD5cbiAgICA8L2Rpdj5cbiAgPC9jOHktbGk+XG4gIDxjOHktbGkgZGF0YS1jeT1cImZlYXR1cmUtY29uZmlnLS1mZWF0dXJlLWxpc3RcIj5cbiAgICA8Yzh5LWxpLWljb24gaWNvbj1cImM4eS1ncm91cC1vcGVuXCI+PC9jOHktbGktaWNvbj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGEtaS1jZW50ZXJcIj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxwPnt7ICdTdWJhc3NldHMgdmlldycgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgIDxwPjxzbWFsbCB0cmFuc2xhdGU+RGlzcGxheSB0aGUgXCJTdWJhc3NldHNcIiB0YWIgb24gZ3JvdXBzLjwvc21hbGw+PC9wPlxuICAgICAgPC9kaXY+XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJjOHktc3dpdGNoIGM4eS1zd2l0Y2gtLWlubGluZSBtLWwtYXV0b1wiXG4gICAgICAgIHRpdGxlPVwie3sgJ1N1YmFzc2V0cyB2aWV3JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICA+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIG5hbWU9XCJzdWJhc3NldHNcIlxuICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25maWcuZmVhdHVyZXMuc3ViYXNzZXRzXCJcbiAgICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZUZlYXR1cmVzKClcIlxuICAgICAgICAvPlxuICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuICA8L2M4eS1saT5cbiAgPGM4eS1saSBkYXRhLWN5PVwiZmVhdHVyZS1jb25maWctLWZlYXR1cmUtbGlzdFwiPlxuICAgIDxjOHktbGktaWNvbiBpY29uPVwiYzh5LXNtYXJ0LXJ1bGVzXCI+PC9jOHktbGktaWNvbj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGEtaS1jZW50ZXJcIj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxwPnt7ICdTbWFydCBydWxlcyBmb3IgZGV2aWNlcyBhbmQgZ3JvdXBzJyB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICAgICAgPHA+XG4gICAgICAgICAgPHNtYWxsIHRyYW5zbGF0ZT5EaXNwbGF5IHRoZSBzbWFydCBydWxlcyB0YWIgb24gZ3JvdXBzIGFuZCBkZXZpY2VzLjwvc21hbGw+XG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGxhYmVsXG4gICAgICAgIGNsYXNzPVwiYzh5LXN3aXRjaCBjOHktc3dpdGNoLS1pbmxpbmUgbS1sLWF1dG9cIlxuICAgICAgICB0aXRsZT1cInt7ICdTbWFydCBydWxlcyBmb3IgZGV2aWNlcyBhbmQgZ3JvdXBzJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICA+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIG5hbWU9XCJzbWFydFJ1bGVzXCJcbiAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZmlnLmZlYXR1cmVzLnNtYXJ0UnVsZXNcIlxuICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlRmVhdHVyZXMoKVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gIDwvYzh5LWxpPlxuICA8Yzh5LWxpIGRhdGEtY3k9XCJmZWF0dXJlLWNvbmZpZy0tZmVhdHVyZS1saXN0XCI+XG4gICAgPGM4eS1saS1pY29uIGljb249XCJtYW5hZ2VtZW50MVwiPjwvYzh5LWxpLWljb24+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhLWktY2VudGVyXCI+XG4gICAgICA8ZGl2PlxuICAgICAgICA8cD57eyAnRGFzaGJvYXJkIG1hbmFnZXInIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICA8cD5cbiAgICAgICAgICA8c21hbGwgdHJhbnNsYXRlPlxuICAgICAgICAgICAgRGlzcGxheSBhIGxpbmsgdG8gdGhlIERhc2hib2FyZCBtYW5hZ2VyIHVuZGVyIHRoZSBDb25maWd1cmF0aW9uIG5hdmlnYXRvciBtZW51LlxuICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGxhYmVsXG4gICAgICAgIGNsYXNzPVwiYzh5LXN3aXRjaCBjOHktc3dpdGNoLS1pbmxpbmUgbS1sLWF1dG9cIlxuICAgICAgICB0aXRsZT1cInt7ICdEYXNoYm9hcmQgbWFuYWdlcicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBuYW1lPVwiZGFzaGJvYXJkTWFuYWdlclwiXG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbmZpZy5mZWF0dXJlcy5kYXNoYm9hcmRNYW5hZ2VyXCJcbiAgICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZUZlYXR1cmVzKClcIlxuICAgICAgICAvPlxuICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuICA8L2M4eS1saT5cbjwvYzh5LWxpc3QtZ3JvdXA+XG4iXX0=
|
|
@@ -8,7 +8,6 @@ import { OptionsService } from './options.service';
|
|
|
8
8
|
import { StateService } from './state-service.abstract';
|
|
9
9
|
import { ApiService } from '@c8y/ngx-components/api';
|
|
10
10
|
import { throttle } from './throttle.decorator';
|
|
11
|
-
import { satisfies } from 'semver';
|
|
12
11
|
import * as i0 from "@angular/core";
|
|
13
12
|
import * as i1 from "@c8y/client";
|
|
14
13
|
import * as i2 from "@c8y/ngx-components/api";
|
|
@@ -198,25 +197,8 @@ export class AppStateService extends StateService {
|
|
|
198
197
|
this.state.supportUrl = await this.options.getSupportUrl();
|
|
199
198
|
this.state.activateSupportUserAvailable = await this.options.getActivateSupportUser();
|
|
200
199
|
this.state.versions.backend = await this.options.getSystemOption('system', 'version');
|
|
201
|
-
try {
|
|
202
|
-
this.showIncompatibleVersionsError();
|
|
203
|
-
}
|
|
204
|
-
catch (ex) {
|
|
205
|
-
// ignore this
|
|
206
|
-
}
|
|
207
200
|
this.emitNewState();
|
|
208
201
|
}
|
|
209
|
-
showIncompatibleVersionsError() {
|
|
210
|
-
if (this.options.noVersionWarning) {
|
|
211
|
-
return;
|
|
212
|
-
}
|
|
213
|
-
const uiVersion = this.state.versions.ui.ngx;
|
|
214
|
-
const backendVersion = this.state.versions.backend;
|
|
215
|
-
if (!satisfies(uiVersion, `<=${backendVersion} || ~${backendVersion}`)) {
|
|
216
|
-
const errorContent = `You are running version ${uiVersion} of the UI and version ${backendVersion} of backend!`;
|
|
217
|
-
console.log('%c ' + errorContent, 'font-weight: bold; font-size: 30px; color: red;');
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
202
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AppStateService, deps: [{ token: i1.ApplicationService }, { token: i2.ApiService }, { token: i3.OptionsService }, { token: i1.FetchClient }, { token: i1.TenantLoginOptionsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
221
203
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AppStateService, providedIn: 'root' }); }
|
|
222
204
|
}
|
|
@@ -230,4 +212,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
230
212
|
type: Injectable,
|
|
231
213
|
args: [{ providedIn: 'root' }]
|
|
232
214
|
}], ctorParameters: () => [{ type: i1.ApplicationService }, { type: i2.ApiService }, { type: i3.OptionsService }, { type: i1.FetchClient }, { type: i1.TenantLoginOptionsService }], propDecorators: { refreshLoginOptions: [] } });
|
|
233
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktc3RhdGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvY29tbW9uL3VpLXN0YXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFDTCxXQUFXLEVBRVgseUJBQXlCLEVBQ3pCLGtCQUFrQixFQUduQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEUsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sR0FBRyxFQUNILElBQUksRUFDSixTQUFTLEVBQ1QsV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEVBQ1osSUFBSSxFQUNMLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxRQUFRLENBQUM7Ozs7O0FBR25DLE1BQU0sT0FBTyxlQUFnQixTQUFRLFlBQVk7SUEwQy9DLFlBQ1Usa0JBQXNDLEVBQ3ZDLFVBQXNCLEVBQ3JCLE9BQXVCLEVBQ3ZCLFdBQXdCLEVBQ3hCLHlCQUFvRDtRQUU1RCxLQUFLLEVBQUUsQ0FBQztRQU5BLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdkMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNyQixZQUFP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dCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEZldGNoQ2xpZW50LFxuICBJQXBwbGljYXRpb24sXG4gIFRlbmFudExvZ2luT3B0aW9uc1NlcnZpY2UsXG4gIEFwcGxpY2F0aW9uU2VydmljZSxcbiAgSUN1cnJlbnRUZW5hbnQsXG4gIElVc2VyXG59IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IGtleXMsIGdldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgZmlsdGVyLFxuICBtYXAsXG4gIHNjYW4sXG4gIHN3aXRjaE1hcCxcbiAgc2hhcmVSZXBsYXksXG4gIHN0YXJ0V2l0aCxcbiAgZGVib3VuY2VUaW1lLFxuICB0YWtlXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9wdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi9vcHRpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi9zdGF0ZS1zZXJ2aWNlLmFic3RyYWN0JztcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2FwaSc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbk9wdGlvbnMgfSBmcm9tICcuL0FwcGxpY2F0aW9uT3B0aW9ucyc7XG5pbXBvcnQgeyB0aHJvdHRsZSB9IGZyb20gJy4vdGhyb3R0bGUuZGVjb3JhdG9yJztcbmltcG9ydCB7IHNhdGlzZmllcyB9IGZyb20gJ3NlbXZlcic7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQXBwU3RhdGVTZXJ2aWNlIGV4dGVuZHMgU3RhdGVTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIFNhdmVzIHRoZSBzdGF0ZS4gU2hvdWxkIG5vdCBiZSBhY2Nlc3NpYmxlIGRpcmVjdGx5LiBVc2UgbWFwIG9yIHRoZSBnZXR0ZXIgdG8gYWNjZXNzXG4gICAqIHRoZSBzdGF0ZS4gVXNlIGZ1bmN0aW9ucyBpbiB0aGUgaW1wbGVtZW50YXRpb24gdG8gY2hhbmdlIHRoZSBzdGF0ZS5cbiAgICovXG4gIHN0YXRlJDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4oe1xuICAgIGFwcDoge1xuICAgICAgbmFtZTogdGhpcy5vcHRpb25zLm5hbWUsXG4gICAgICBjb250ZXh0UGF0aDogdGhpcy5nZXRDdXJyZW50Q29udGV4dFBhdGgoKSB8fCB0aGlzLm9wdGlvbnMuY29udGV4dFBhdGgsXG4gICAgICBpY29uOiB0aGlzLm9wdGlvbnMuaWNvblxuICAgIH0sXG4gICAgc3VwcG9ydFVybDogdGhpcy5vcHRpb25zLnN1cHBvcnRVcmwsXG4gICAgbGFuZzogdGhpcy5vcHRpb25zLmdldCgnZGVmYXVsdExhbmd1YWdlJywgJ2VuJyksXG4gICAgbGFuZ3M6IHRoaXMuZ2V0TGFuZ3MoKSxcbiAgICBsYW5nc0RldGFpbDogdGhpcy5vcHRpb25zLmxhbmd1YWdlcyxcbiAgICBsb2dpbk9wdGlvbnM6IHRoaXMub3B0aW9ucy5sb2dpbk9wdGlvbnMsXG4gICAgYWN0aXZhdGVTdXBwb3J0VXNlckF2YWlsYWJsZTogdW5kZWZpbmVkLFxuICAgIHZlcnNpb25zOiB7XG4gICAgICBiYWNrZW5kOiB1bmRlZmluZWQsXG4gICAgICB1aTogdGhpcy5vcHRpb25zLnZlcnNpb25zIHx8IHsgbmd4OiB1bmRlZmluZWQgfVxuICAgIH0sXG4gICAgaGlkZVBvd2VyZWQ6IHRoaXMub3B0aW9ucy5oaWRlUG93ZXJlZCxcbiAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgIHNob3dSaWdodERyYXdlcjogdGhpcy5vcHRpb25zLnJpZ2h0RHJhd2VyLFxuICAgIGxvZ2luRXh0cmFMaW5rOiB0aGlzLm9wdGlvbnMuZ2V0KCdsb2dpbl9leHRyYV9saW5rJyksXG4gICAgbmV3c2xldHRlcjogdGhpcy5vcHRpb25zLm5ld3NsZXR0ZXJcbiAgfSk7XG4gIGN1cnJlbnRTdXBwb3J0VXNlck5hbWU6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCBudWxsPiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XG4gIGN1cnJlbnRVc2VyOiBCZWhhdmlvclN1YmplY3Q8SVVzZXIgfCBudWxsPiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XG4gIGN1cnJlbnRUZW5hbnQ6IEJlaGF2aW9yU3ViamVjdDxJQ3VycmVudFRlbmFudCB8IG51bGw+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcbiAgY3VycmVudEFwcGxpY2F0aW9uOiBCZWhhdmlvclN1YmplY3Q8SUFwcGxpY2F0aW9uIHwgbnVsbD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xuICBjdXJyZW50QXBwbGljYXRpb25Db25maWc6IE9ic2VydmFibGU8YW55PiA9IHRoaXMuY3VycmVudEFwcGxpY2F0aW9uLnBpcGUoXG4gICAgZmlsdGVyKGFwcCA9PiAhIWFwcCksXG4gICAgbWFwKGFwcCA9PiBhcHA/LmNvbmZpZyB8fCBudWxsKVxuICApO1xuICAvKipcbiAgICogQW4gT2JzZXJ2YWJsZSBvZiB0aGUgYXBwbGljYXRpb25zIGF2YWlsYWJsZSBmb3IgdGhlIGN1cnJlbnQgdXNlci5cbiAgICogVGhlIE9ic2VydmFibGUgZW1pdHMgYSBuZXcgYXJyYXkgb24gdXNlciBjaGFuZ2VzIG9yIGlmIHRoZSBhcHBsaWNhdGlvblxuICAgKiBwZXJmb3JtcyBQT1NULCBQVVQgb3IgREVMRVRFIHJlcXVlc3RzIHRvIHRoZSBhcHBsaWNhdGlvbiBBUEkuXG4gICAqL1xuICBjdXJyZW50QXBwc09mVXNlcjogT2JzZXJ2YWJsZTxJQXBwbGljYXRpb25bXT47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhcHBsaWNhdGlvblNlcnZpY2U6IEFwcGxpY2F0aW9uU2VydmljZSxcbiAgICBwdWJsaWMgYXBpU2VydmljZTogQXBpU2VydmljZSxcbiAgICBwcml2YXRlIG9wdGlvbnM6IE9wdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmV0Y2hDbGllbnQ6IEZldGNoQ2xpZW50LFxuICAgIHByaXZhdGUgdGVuYW50TG9naW5PcHRpb25zU2VydmljZTogVGVuYW50TG9naW5PcHRpb25zU2VydmljZVxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIC8vIGluIGNhc2Ugb2Ygbm9Mb2dpbiBiZWluZyB0cnV0aHkgYGxvYWRNYW5pZmVzdGAgaXMgbmV2ZXIgY2FsbGVkLlxuICAgIGlmICh0aGlzLm9wdGlvbnMubm9Mb2dpbikge1xuICAgICAgdGhpcy5jdXJyZW50QXBwbGljYXRpb24ubmV4dCh0aGlzLnN0YXRlLmFwcCk7XG4gICAgfVxuICAgIHRoaXMuYXBpU2VydmljZS5pc0xvYWRpbmckLnN1YnNjcmliZShpc0xvYWRpbmcgPT4ge1xuICAgICAgdGhpcy5zdGF0ZS5pc0xvYWRpbmcgPSBpc0xvYWRpbmc7XG4gICAgfSk7XG5cbiAgICB0aGlzLmFzc2lnbkFwcGxpY2F0aW9uS2V5VG9EZWZhdWx0SGVhZGVycygpO1xuICAgIHRoaXMuY3VycmVudEFwcHNPZlVzZXIgPSB0aGlzLmN1cnJlbnRBcHBzT2ZVc2VyJCgpO1xuICB9XG5cbiAgYXNzaWduQXBwbGljYXRpb25LZXlUb0RlZmF1bHRIZWFkZXJzKCkge1xuICAgIGlmICghaXNEZXZNb2RlKCkpIHtcbiAgICAgIHRoaXMuZmV0Y2hDbGllbnQuZGVmYXVsdEhlYWRlcnMgPSB7XG4gICAgICAgIC4uLih0aGlzLmZldGNoQ2xpZW50LmRlZmF1bHRIZWFkZXJzIHx8IHt9KSxcbiAgICAgICAgJ1gtQ3VtdWxvY2l0eS1BcHBsaWNhdGlvbi1LZXknOiB0aGlzLm9wdGlvbnMua2V5XG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IHN0YXRlLlxuICAgKi9cbiAgZ2V0IHN0YXRlKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlJC52YWx1ZTtcbiAgfVxuXG4gIGdldExhbmdzKCkge1xuICAgIGNvbnN0IHsgbGFuZ3VhZ2VzIH0gPSB0aGlzLm9wdGlvbnM7XG4gICAgcmV0dXJuIGxhbmd1YWdlcyA/IGtleXMobGFuZ3VhZ2VzKS5maWx0ZXIoayA9PiBsYW5ndWFnZXNba10pIDogW107XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY29ycmVjdCBVSSB2ZXJzaW9uLiBJbiBoeWJyaWQgbW9kZSBmb3IgYW5ndWxhciBhbmQgbmd4LlxuICAgKi9cbiAgZ2V0IHVpVmVyc2lvbigpIHtcbiAgICBjb25zdCB2ZXJzaW9uID0gdGhpcy5zdGF0ZS52ZXJzaW9ucy51aTtcbiAgICByZXR1cm4gdmVyc2lvbi5uZ3ggfHwgdmVyc2lvbi5uZzE7XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgdGhlIGFwcCBtYW5pZmVzdC4gSWYgbm8gYWNjZXNzIC0+IHRocm93IGFuIGVycm9yIHRvIHZlcmlmeSBhcHAgYWNjZXNzLlxuICAgKi9cbiAgYXN5bmMgbG9hZE1hbmlmZXN0KCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBub3JtYWxpemVkQ29udGV4dFBhdGggPSB0aGlzLnN0YXRlLmFwcC5jb250ZXh0UGF0aD8uc3BsaXQoJ0AnKVswXTtcbiAgICAgIGNvbnN0IHsgZGF0YTogYXBwbGljYXRpb24gfSA9XG4gICAgICAgIGF3YWl0IHRoaXMuYXBwbGljYXRpb25TZXJ2aWNlLmdldE1hbmlmZXN0T2ZDb250ZXh0UGF0aChub3JtYWxpemVkQ29udGV4dFBhdGgpO1xuICAgICAgdGhpcy5zdGF0ZS5hcHAubWFuaWZlc3QgPSBhcHBsaWNhdGlvbjtcbiAgICAgIHRoaXMuc3RhdGUuYXBwLmlkID0gYXBwbGljYXRpb24uaWQ7XG4gICAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IHRoaXMuYXBwbGljYXRpb25TZXJ2aWNlLmRldGFpbChhcHBsaWNhdGlvbi5pZCk7XG4gICAgICB0aGlzLmN1cnJlbnRBcHBsaWNhdGlvbi5uZXh0KGRhdGEpO1xuICAgICAgYXdhaXQgdGhpcy5sb2FkRGVmYXVsdE9wdGlvbnMoKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgdGhpcy5jdXJyZW50QXBwbGljYXRpb24ubmV4dCh0aGlzLnN0YXRlLmFwcCk7XG4gICAgICB0aHJvdyBleDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRHluYW1pYyBvcHRpb25zIGFyZSBzdG9yZWQgb24gdGhlIEFQSSBpbiBhIHNwZWNpZmljIGNvbmZpZzoge30gb2JqZWN0LiBUaGV5IGNhblxuICAgKiBiZSB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUgYXBwIGR5bmFtaWNhbGx5LlxuICAgKlxuICAgKiBOb3RlOiBUbyBhdm9pZHMgY29uZmxpY3RzIHdpdGggdGhlIGRlZmF1bHQgQ29uZmlnLCBpdCBpcyByZWNvbW1lbmRlZFxuICAgKiB0byB1c2UgYSBjZXJ0YWluIG5hbWVzcGFjZS5cbiAgICovXG4gIGFzeW5jIHVwZGF0ZUN1cnJlbnRBcHBsaWNhdGlvbkNvbmZpZzxUID0gQXBwbGljYXRpb25PcHRpb25zPihjb25maWc6IFQpOiBQcm9taXNlPFQ+IHtcbiAgICBjb25zdCBhcHBXaXRoVXBkYXRlZENvbmZpZyA9IGF3YWl0IHRoaXMuYXBwbGljYXRpb25TZXJ2aWNlLnVwZGF0ZUFwcGxpY2F0aW9uQ29uZmlnKFxuICAgICAgdGhpcy5zdGF0ZS5hcHAuaWQsXG4gICAgICBjb25maWdcbiAgICApO1xuICAgIHRoaXMuY3VycmVudEFwcGxpY2F0aW9uLm5leHQoYXBwV2l0aFVwZGF0ZWRDb25maWcpO1xuICAgIHJldHVybiBhcHBXaXRoVXBkYXRlZENvbmZpZy5jb25maWc7XG4gIH1cblxuICAvKipcbiAgICogV2hlbiB0aGlzIGZ1bmN0aW9uIGNhbGxlZCwgaXQgcmVmcmVzaGVzIHRoZSB2YWx1ZXMgb2YgbG9naW5PcHRpb25zIHN0b3JlZCB3aXRoaW4gdWkgc3RhdGUgb2JqZWN0LlxuICAgKiBGdW5jdGlvbiBpcyB0aHJvdHRsZWQgdG8gZXhlY3V0ZSB0aGUgcmVmcmVzaCBvbmNlIGluIGEgdGltZSBzcGVjaWZpZWQgYnkgcGFyYW1zIG9mIEB0aHJvdHRsZWQgZGVjb3JhdG9yLFxuICAgKiBpdCBzaG91bGQgYmUgY2FsbGVkIG9uIGxlYWRpbmcgZWRnZSBvZiB0aGUgdGltZW91dC5cbiAgICovXG4gIEB0aHJvdHRsZSg2MDAsIHsgdHJhaWxpbmc6IGZhbHNlIH0pXG4gIGFzeW5jIHJlZnJlc2hMb2dpbk9wdGlvbnMoKSB7XG4gICAgY29uc3QgbG9naW5PcHRpb25zID0gKGF3YWl0IHRoaXMudGVuYW50TG9naW5PcHRpb25zU2VydmljZS5saXN0Rm9yQ3VycmVudFRlbmFudCgpKS5kYXRhO1xuICAgIHRoaXMuc3RhdGUkLm5leHQoeyAuLi50aGlzLnN0YXRlLCBsb2dpbk9wdGlvbnMgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGN1cnJlbnQgdXNlcnMgYXBwbGljYXRpb24gbGlzdCBhbmQgbWF0Y2hlcyBpdCBhZ2FpbnN0IGdpdmVuIGFwcGxpY2F0aW9uIG5hbWUuXG4gICAqIFJldHVybnMgdHJ1ZSBpZiBhcHBsaWNhdGlvbiBpcyBpbiB0aGUgbGlzdC5cbiAgICogQHBhcmFtIG5hbWUgYXBwbGljYXRpb24gbmFtZVxuICAgKi9cbiAgYXN5bmMgaXNBcHBsaWNhdGlvbkF2YWlsYWJsZShuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBhcHBzID0gYXdhaXQgdGhpcy5jdXJyZW50QXBwc09mVXNlci5waXBlKHRha2UoMSkpLnRvUHJvbWlzZSgpO1xuICAgIHJldHVybiBhcHBzLnNvbWUoYXBwID0+IGFwcC5uYW1lID09PSBuYW1lIHx8IGFwcC5jb250ZXh0UGF0aCA9PT0gbmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBjdXJyZW50IHVzZXIgKGluY2x1ZGluZyBzdXBwb3J0IHVzZXIpLlxuICAgKiBAcGFyYW0gdXNlckluZm8gSW5mbyBhYm91dCBjdXJyZW50IHVzZXIgYW5kIHN1cHBvcnQgdXNlciB0byBiZSBzZXQuXG4gICAqL1xuICBzZXRVc2VyKHVzZXJJbmZvOiB7IHVzZXI6IElVc2VyOyBzdXBwb3J0VXNlck5hbWU6IHN0cmluZyB9KSB7XG4gICAgdGhpcy5jdXJyZW50U3VwcG9ydFVzZXJOYW1lLm5leHQodXNlckluZm8uc3VwcG9ydFVzZXJOYW1lIHx8IG51bGwpO1xuICAgIHRoaXMuY3VycmVudFVzZXIubmV4dCh1c2VySW5mby51c2VyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmllcyBpZiB0aGUgY3VycmVudCBhcHBsaWNhdGlvbiBpcyBvd25lZCBieSB0aGUgY3VycmVudCB0ZW5hbnQuXG4gICAqIEBwYXJhbSBhcHAgVGhlIGFwcGxpY2F0aW9uIHRvIHZlcmlmeS5cbiAgICogQHJldHVybnMgdHJ1ZSBpZiBpdCBiZWxvbmdzIHRvIHRoZSBjdXJyZW50IHRlbmFudC5cbiAgICovXG4gIGlzT3duZXJPZkFwcGxpY2F0aW9uKGFwcD86IElBcHBsaWNhdGlvbik6IGJvb2xlYW4ge1xuICAgIGlmICghYXBwKSB7XG4gICAgICBhcHAgPSB0aGlzLmN1cnJlbnRBcHBsaWNhdGlvbi52YWx1ZTtcbiAgICB9XG4gICAgY29uc3QgY3VycmVudFRlbmFudDogSUN1cnJlbnRUZW5hbnQgPSB0aGlzLmN1cnJlbnRUZW5hbnQudmFsdWU7XG4gICAgY29uc3QgYXBwT3duZXIgPSBnZXQoYXBwLCAnb3duZXIudGVuYW50LmlkJyk7XG4gICAgcmV0dXJuIGN1cnJlbnRUZW5hbnQ/Lm5hbWUgPT09IGFwcE93bmVyO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWVzIGlmIHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uIGlzIG93bmVkIGJ5IHRoZSBjdXJyZW50IHRlbmFudC5cbiAgICogQHBhcmFtIGFwcCBUaGUgYXBwbGljYXRpb24gdG8gdmVyaWZ5LlxuICAgKiBAcmV0dXJucyB0cnVlIGlmIGl0IGJlbG9uZ3MgdG8gdGhlIGN1cnJlbnQgdGVuYW50LlxuICAgKi9cbiAgaXNPd25lck9mQXBwbGljYXRpb24kKGFwcD86IElBcHBsaWNhdGlvbik6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGFwcCQgPSBhcHAgPyBvZihhcHApIDogdGhpcy5jdXJyZW50QXBwbGljYXRpb247XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW2FwcCQsIHRoaXMuY3VycmVudFRlbmFudF0pLnBpcGUoXG4gICAgICBtYXAoKFthcHAsIHRlbmFudF0pID0+IHtcbiAgICAgICAgaWYgKCFhcHAgfHwgIXRlbmFudCkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGVuYW50Lm5hbWUgPT09IGdldChhcHAsICdvd25lci50ZW5hbnQuaWQnKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBjb250ZXh0UGF0aC5cbiAgICovXG4gIGdldEN1cnJlbnRDb250ZXh0UGF0aCgpIHtcbiAgICBjb25zdCBtYXRjaCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5tYXRjaCgvXFwvYXBwc1xcLyhwdWJsaWNcXC8pezAsMX0oLis/KShcXC98XFw/fCN8JCkvKTtcbiAgICByZXR1cm4gbWF0Y2ggJiYgbWF0Y2hbMl07XG4gIH1cblxuICBwcm90ZWN0ZWQgY3VycmVudEFwcHNPZlVzZXIkKCk6IE9ic2VydmFibGU8SUFwcGxpY2F0aW9uW10+IHtcbiAgICBjb25zdCBhcHBDaGFuZ2VzJCA9IHRoaXMub25BcHBDaGFuZ2VzQ29tcGxldGlvbiQoKS5waXBlKHN0YXJ0V2l0aCh1bmRlZmluZWQgYXMgdm9pZCkpO1xuICAgIGNvbnN0IHVzZXJDaGFuZ2VzJCA9IHRoaXMuY3VycmVudFVzZXIucGlwZShcbiAgICAgIG1hcCh1c2VyID0+IHVzZXI/LmlkKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICApO1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFt1c2VyQ2hhbmdlcyQsIGFwcENoYW5nZXMkXSkucGlwZShcbiAgICAgIGZpbHRlcigoW3VzZXJJZF0pID0+ICEhdXNlcklkKSxcbiAgICAgIHN3aXRjaE1hcCgoW3VzZXJJZF0pID0+XG4gICAgICAgIHRoaXMuYXBwbGljYXRpb25TZXJ2aWNlLmxpc3RCeVVzZXIodXNlcklkLCB7XG4gICAgICAgICAgZHJvcE92ZXJ3cml0dGVuQXBwczogdHJ1ZSxcbiAgICAgICAgICBub1BhZ2luZzogdHJ1ZVxuICAgICAgICB9KVxuICAgICAgKSxcbiAgICAgIG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpLFxuICAgICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQW4gT2JzZXJ2YWJsZSBlbWl0dGluZyBvbmNlIGFsbCBQT1NULCBQVVQsIERFTEVURSByZXF1ZXN0cyB0byB0aGUgYXBwbGljYXRpb24gQVBJIGZpbmlzaGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgb25BcHBDaGFuZ2VzQ29tcGxldGlvbiQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgbWV0aG9kcyA9IFsnUE9TVCcsICdQVVQnLCAnREVMRVRFJ107XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5jYWxscy5waXBlKFxuICAgICAgZmlsdGVyKFxuICAgICAgICAoeyBtZXRob2QsIHVybCB9KSA9PiBtZXRob2RzLmluY2x1ZGVzKG1ldGhvZCkgJiYgdXJsPy5pbmNsdWRlcygnYXBwbGljYXRpb24vYXBwbGljYXRpb25zJylcbiAgICAgICksXG4gICAgICBtYXAoKHsgcGhhc2UgfSkgPT4gKHBoYXNlID09PSAnc3RhcnQnID8gMSA6IC0xKSksXG4gICAgICBzY2FuKChjb3VudCwgaXRlbSkgPT4gY291bnQgKyBpdGVtLCAwKSxcbiAgICAgIG1hcChjb3VudCA9PiBjb3VudCA9PT0gMCksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgZGVib3VuY2VUaW1lKDUwMCksXG4gICAgICBmaWx0ZXIoY29tcGxldGVkID0+ICEhY29tcGxldGVkKSxcbiAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZERlZmF1bHRPcHRpb25zKCkge1xuICAgIHRoaXMuc3RhdGUuc3VwcG9ydFVybCA9IGF3YWl0IHRoaXMub3B0aW9ucy5nZXRTdXBwb3J0VXJsKCk7XG4gICAgdGhpcy5zdGF0ZS5hY3RpdmF0ZVN1cHBvcnRVc2VyQXZhaWxhYmxlID0gYXdhaXQgdGhpcy5vcHRpb25zLmdldEFjdGl2YXRlU3VwcG9ydFVzZXIoKTtcbiAgICB0aGlzLnN0YXRlLnZlcnNpb25zLmJhY2tlbmQgPSBhd2FpdCB0aGlzLm9wdGlvbnMuZ2V0U3lzdGVtT3B0aW9uKCdzeXN0ZW0nLCAndmVyc2lvbicpO1xuICAgIHRyeSB7XG4gICAgICB0aGlzLnNob3dJbmNvbXBhdGlibGVWZXJzaW9uc0Vycm9yKCk7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIC8vIGlnbm9yZSB0aGlzXG4gICAgfVxuICAgIHRoaXMuZW1pdE5ld1N0YXRlKCk7XG4gIH1cblxuICBwcml2YXRlIHNob3dJbmNvbXBhdGlibGVWZXJzaW9uc0Vycm9yKCkge1xuICAgIGlmICh0aGlzLm9wdGlvbnMubm9WZXJzaW9uV2FybmluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB1aVZlcnNpb246IHN0cmluZyA9IHRoaXMuc3RhdGUudmVyc2lvbnMudWkubmd4O1xuICAgIGNvbnN0IGJhY2tlbmRWZXJzaW9uOiBzdHJpbmcgPSB0aGlzLnN0YXRlLnZlcnNpb25zLmJhY2tlbmQ7XG5cbiAgICBpZiAoIXNhdGlzZmllcyh1aVZlcnNpb24sIGA8PSR7YmFja2VuZFZlcnNpb259IHx8IH4ke2JhY2tlbmRWZXJzaW9ufWApKSB7XG4gICAgICBjb25zdCBlcnJvckNvbnRlbnQgPSBgWW91IGFyZSBydW5uaW5nIHZlcnNpb24gJHt1aVZlcnNpb259IG9mIHRoZSBVSSBhbmQgdmVyc2lvbiAke2JhY2tlbmRWZXJzaW9ufSBvZiBiYWNrZW5kIWA7XG4gICAgICBjb25zb2xlLmxvZygnJWMgJyArIGVycm9yQ29udGVudCwgJ2ZvbnQtd2VpZ2h0OiBib2xkOyBmb250LXNpemU6IDMwcHg7IGNvbG9yOiByZWQ7Jyk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
215
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktc3RhdGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvY29tbW9uL3VpLXN0YXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFDTCxXQUFXLEVBRVgseUJBQXlCLEVBQ3pCLGtCQUFrQixFQUduQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEUsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sR0FBRyxFQUNILElBQUksRUFDSixTQUFTLEVBQ1QsV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEVBQ1osSUFBSSxFQUNMLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7OztBQUdoRCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxZQUFZO0lBMEMvQyxZQUNVLGtCQUFzQyxFQUN2QyxVQUFzQixFQUNyQixPQUF1QixFQUN2QixXQUF3QixFQUN4Qix5QkFBb0Q7UUFFNUQsS0FBSyxFQUFFLENBQUM7UUFOQSx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3ZDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDckIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDdkIsZ0JBQVcsR0FBWCxXQUFXLENB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Q0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN0RixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQzs4R0FoUFUsZUFBZTtrSEFBZixlQUFlLGNBREYsTUFBTTs7QUFxSXhCO0lBREwsUUFBUSxDQUFDLEdBQUcsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQzs7OzswREFJbEM7MkZBdklVLGVBQWU7a0JBRDNCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOytNQXFJMUIsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBGZXRjaENsaWVudCxcbiAgSUFwcGxpY2F0aW9uLFxuICBUZW5hbnRMb2dpbk9wdGlvbnNTZXJ2aWNlLFxuICBBcHBsaWNhdGlvblNlcnZpY2UsXG4gIElDdXJyZW50VGVuYW50LFxuICBJVXNlclxufSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBrZXlzLCBnZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIGZpbHRlcixcbiAgbWFwLFxuICBzY2FuLFxuICBzd2l0Y2hNYXAsXG4gIHNoYXJlUmVwbGF5LFxuICBzdGFydFdpdGgsXG4gIGRlYm91bmNlVGltZSxcbiAgdGFrZVxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBPcHRpb25zU2VydmljZSB9IGZyb20gJy4vb3B0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IFN0YXRlU2VydmljZSB9IGZyb20gJy4vc3RhdGUtc2VydmljZS5hYnN0cmFjdCc7XG5pbXBvcnQgeyBBcGlTZXJ2aWNlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9hcGknO1xuaW1wb3J0IHsgQXBwbGljYXRpb25PcHRpb25zIH0gZnJvbSAnLi9BcHBsaWNhdGlvbk9wdGlvbnMnO1xuaW1wb3J0IHsgdGhyb3R0bGUgfSBmcm9tICcuL3Rocm90dGxlLmRlY29yYXRvcic7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQXBwU3RhdGVTZXJ2aWNlIGV4dGVuZHMgU3RhdGVTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIFNhdmVzIHRoZSBzdGF0ZS4gU2hvdWxkIG5vdCBiZSBhY2Nlc3NpYmxlIGRpcmVjdGx5LiBVc2UgbWFwIG9yIHRoZSBnZXR0ZXIgdG8gYWNjZXNzXG4gICAqIHRoZSBzdGF0ZS4gVXNlIGZ1bmN0aW9ucyBpbiB0aGUgaW1wbGVtZW50YXRpb24gdG8gY2hhbmdlIHRoZSBzdGF0ZS5cbiAgICovXG4gIHN0YXRlJDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4oe1xuICAgIGFwcDoge1xuICAgICAgbmFtZTogdGhpcy5vcHRpb25zLm5hbWUsXG4gICAgICBjb250ZXh0UGF0aDogdGhpcy5nZXRDdXJyZW50Q29udGV4dFBhdGgoKSB8fCB0aGlzLm9wdGlvbnMuY29udGV4dFBhdGgsXG4gICAgICBpY29uOiB0aGlzLm9wdGlvbnMuaWNvblxuICAgIH0sXG4gICAgc3VwcG9ydFVybDogdGhpcy5vcHRpb25zLnN1cHBvcnRVcmwsXG4gICAgbGFuZzogdGhpcy5vcHRpb25zLmdldCgnZGVmYXVsdExhbmd1YWdlJywgJ2VuJyksXG4gICAgbGFuZ3M6IHRoaXMuZ2V0TGFuZ3MoKSxcbiAgICBsYW5nc0RldGFpbDogdGhpcy5vcHRpb25zLmxhbmd1YWdlcyxcbiAgICBsb2dpbk9wdGlvbnM6IHRoaXMub3B0aW9ucy5sb2dpbk9wdGlvbnMsXG4gICAgYWN0aXZhdGVTdXBwb3J0VXNlckF2YWlsYWJsZTogdW5kZWZpbmVkLFxuICAgIHZlcnNpb25zOiB7XG4gICAgICBiYWNrZW5kOiB1bmRlZmluZWQsXG4gICAgICB1aTogdGhpcy5vcHRpb25zLnZlcnNpb25zIHx8IHsgbmd4OiB1bmRlZmluZWQgfVxuICAgIH0sXG4gICAgaGlkZVBvd2VyZWQ6IHRoaXMub3B0aW9ucy5oaWRlUG93ZXJlZCxcbiAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgIHNob3dSaWdodERyYXdlcjogdGhpcy5vcHRpb25zLnJpZ2h0RHJhd2VyLFxuICAgIGxvZ2luRXh0cmFMaW5rOiB0aGlzLm9wdGlvbnMuZ2V0KCdsb2dpbl9leHRyYV9saW5rJyksXG4gICAgbmV3c2xldHRlcjogdGhpcy5vcHRpb25zLm5ld3NsZXR0ZXJcbiAgfSk7XG4gIGN1cnJlbnRTdXBwb3J0VXNlck5hbWU6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCBudWxsPiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XG4gIGN1cnJlbnRVc2VyOiBCZWhhdmlvclN1YmplY3Q8SVVzZXIgfCBudWxsPiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XG4gIGN1cnJlbnRUZW5hbnQ6IEJlaGF2aW9yU3ViamVjdDxJQ3VycmVudFRlbmFudCB8IG51bGw+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcbiAgY3VycmVudEFwcGxpY2F0aW9uOiBCZWhhdmlvclN1YmplY3Q8SUFwcGxpY2F0aW9uIHwgbnVsbD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xuICBjdXJyZW50QXBwbGljYXRpb25Db25maWc6IE9ic2VydmFibGU8YW55PiA9IHRoaXMuY3VycmVudEFwcGxpY2F0aW9uLnBpcGUoXG4gICAgZmlsdGVyKGFwcCA9PiAhIWFwcCksXG4gICAgbWFwKGFwcCA9PiBhcHA/LmNvbmZpZyB8fCBudWxsKVxuICApO1xuICAvKipcbiAgICogQW4gT2JzZXJ2YWJsZSBvZiB0aGUgYXBwbGljYXRpb25zIGF2YWlsYWJsZSBmb3IgdGhlIGN1cnJlbnQgdXNlci5cbiAgICogVGhlIE9ic2VydmFibGUgZW1pdHMgYSBuZXcgYXJyYXkgb24gdXNlciBjaGFuZ2VzIG9yIGlmIHRoZSBhcHBsaWNhdGlvblxuICAgKiBwZXJmb3JtcyBQT1NULCBQVVQgb3IgREVMRVRFIHJlcXVlc3RzIHRvIHRoZSBhcHBsaWNhdGlvbiBBUEkuXG4gICAqL1xuICBjdXJyZW50QXBwc09mVXNlcjogT2JzZXJ2YWJsZTxJQXBwbGljYXRpb25bXT47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhcHBsaWNhdGlvblNlcnZpY2U6IEFwcGxpY2F0aW9uU2VydmljZSxcbiAgICBwdWJsaWMgYXBpU2VydmljZTogQXBpU2VydmljZSxcbiAgICBwcml2YXRlIG9wdGlvbnM6IE9wdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmV0Y2hDbGllbnQ6IEZldGNoQ2xpZW50LFxuICAgIHByaXZhdGUgdGVuYW50TG9naW5PcHRpb25zU2VydmljZTogVGVuYW50TG9naW5PcHRpb25zU2VydmljZVxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIC8vIGluIGNhc2Ugb2Ygbm9Mb2dpbiBiZWluZyB0cnV0aHkgYGxvYWRNYW5pZmVzdGAgaXMgbmV2ZXIgY2FsbGVkLlxuICAgIGlmICh0aGlzLm9wdGlvbnMubm9Mb2dpbikge1xuICAgICAgdGhpcy5jdXJyZW50QXBwbGljYXRpb24ubmV4dCh0aGlzLnN0YXRlLmFwcCk7XG4gICAgfVxuICAgIHRoaXMuYXBpU2VydmljZS5pc0xvYWRpbmckLnN1YnNjcmliZShpc0xvYWRpbmcgPT4ge1xuICAgICAgdGhpcy5zdGF0ZS5pc0xvYWRpbmcgPSBpc0xvYWRpbmc7XG4gICAgfSk7XG5cbiAgICB0aGlzLmFzc2lnbkFwcGxpY2F0aW9uS2V5VG9EZWZhdWx0SGVhZGVycygpO1xuICAgIHRoaXMuY3VycmVudEFwcHNPZlVzZXIgPSB0aGlzLmN1cnJlbnRBcHBzT2ZVc2VyJCgpO1xuICB9XG5cbiAgYXNzaWduQXBwbGljYXRpb25LZXlUb0RlZmF1bHRIZWFkZXJzKCkge1xuICAgIGlmICghaXNEZXZNb2RlKCkpIHtcbiAgICAgIHRoaXMuZmV0Y2hDbGllbnQuZGVmYXVsdEhlYWRlcnMgPSB7XG4gICAgICAgIC4uLih0aGlzLmZldGNoQ2xpZW50LmRlZmF1bHRIZWFkZXJzIHx8IHt9KSxcbiAgICAgICAgJ1gtQ3VtdWxvY2l0eS1BcHBsaWNhdGlvbi1LZXknOiB0aGlzLm9wdGlvbnMua2V5XG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IHN0YXRlLlxuICAgKi9cbiAgZ2V0IHN0YXRlKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlJC52YWx1ZTtcbiAgfVxuXG4gIGdldExhbmdzKCkge1xuICAgIGNvbnN0IHsgbGFuZ3VhZ2VzIH0gPSB0aGlzLm9wdGlvbnM7XG4gICAgcmV0dXJuIGxhbmd1YWdlcyA/IGtleXMobGFuZ3VhZ2VzKS5maWx0ZXIoayA9PiBsYW5ndWFnZXNba10pIDogW107XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY29ycmVjdCBVSSB2ZXJzaW9uLiBJbiBoeWJyaWQgbW9kZSBmb3IgYW5ndWxhciBhbmQgbmd4LlxuICAgKi9cbiAgZ2V0IHVpVmVyc2lvbigpIHtcbiAgICBjb25zdCB2ZXJzaW9uID0gdGhpcy5zdGF0ZS52ZXJzaW9ucy51aTtcbiAgICByZXR1cm4gdmVyc2lvbi5uZ3ggfHwgdmVyc2lvbi5uZzE7XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgdGhlIGFwcCBtYW5pZmVzdC4gSWYgbm8gYWNjZXNzIC0+IHRocm93IGFuIGVycm9yIHRvIHZlcmlmeSBhcHAgYWNjZXNzLlxuICAgKi9cbiAgYXN5bmMgbG9hZE1hbmlmZXN0KCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBub3JtYWxpemVkQ29udGV4dFBhdGggPSB0aGlzLnN0YXRlLmFwcC5jb250ZXh0UGF0aD8uc3BsaXQoJ0AnKVswXTtcbiAgICAgIGNvbnN0IHsgZGF0YTogYXBwbGljYXRpb24gfSA9XG4gICAgICAgIGF3YWl0IHRoaXMuYXBwbGljYXRpb25TZXJ2aWNlLmdldE1hbmlmZXN0T2ZDb250ZXh0UGF0aChub3JtYWxpemVkQ29udGV4dFBhdGgpO1xuICAgICAgdGhpcy5zdGF0ZS5hcHAubWFuaWZlc3QgPSBhcHBsaWNhdGlvbjtcbiAgICAgIHRoaXMuc3RhdGUuYXBwLmlkID0gYXBwbGljYXRpb24uaWQ7XG4gICAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IHRoaXMuYXBwbGljYXRpb25TZXJ2aWNlLmRldGFpbChhcHBsaWNhdGlvbi5pZCk7XG4gICAgICB0aGlzLmN1cnJlbnRBcHBsaWNhdGlvbi5uZXh0KGRhdGEpO1xuICAgICAgYXdhaXQgdGhpcy5sb2FkRGVmYXVsdE9wdGlvbnMoKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgdGhpcy5jdXJyZW50QXBwbGljYXRpb24ubmV4dCh0aGlzLnN0YXRlLmFwcCk7XG4gICAgICB0aHJvdyBleDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRHluYW1pYyBvcHRpb25zIGFyZSBzdG9yZWQgb24gdGhlIEFQSSBpbiBhIHNwZWNpZmljIGNvbmZpZzoge30gb2JqZWN0LiBUaGV5IGNhblxuICAgKiBiZSB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUgYXBwIGR5bmFtaWNhbGx5LlxuICAgKlxuICAgKiBOb3RlOiBUbyBhdm9pZHMgY29uZmxpY3RzIHdpdGggdGhlIGRlZmF1bHQgQ29uZmlnLCBpdCBpcyByZWNvbW1lbmRlZFxuICAgKiB0byB1c2UgYSBjZXJ0YWluIG5hbWVzcGFjZS5cbiAgICovXG4gIGFzeW5jIHVwZGF0ZUN1cnJlbnRBcHBsaWNhdGlvbkNvbmZpZzxUID0gQXBwbGljYXRpb25PcHRpb25zPihjb25maWc6IFQpOiBQcm9taXNlPFQ+IHtcbiAgICBjb25zdCBhcHBXaXRoVXBkYXRlZENvbmZpZyA9IGF3YWl0IHRoaXMuYXBwbGljYXRpb25TZXJ2aWNlLnVwZGF0ZUFwcGxpY2F0aW9uQ29uZmlnKFxuICAgICAgdGhpcy5zdGF0ZS5hcHAuaWQsXG4gICAgICBjb25maWdcbiAgICApO1xuICAgIHRoaXMuY3VycmVudEFwcGxpY2F0aW9uLm5leHQoYXBwV2l0aFVwZGF0ZWRDb25maWcpO1xuICAgIHJldHVybiBhcHBXaXRoVXBkYXRlZENvbmZpZy5jb25maWc7XG4gIH1cblxuICAvKipcbiAgICogV2hlbiB0aGlzIGZ1bmN0aW9uIGNhbGxlZCwgaXQgcmVmcmVzaGVzIHRoZSB2YWx1ZXMgb2YgbG9naW5PcHRpb25zIHN0b3JlZCB3aXRoaW4gdWkgc3RhdGUgb2JqZWN0LlxuICAgKiBGdW5jdGlvbiBpcyB0aHJvdHRsZWQgdG8gZXhlY3V0ZSB0aGUgcmVmcmVzaCBvbmNlIGluIGEgdGltZSBzcGVjaWZpZWQgYnkgcGFyYW1zIG9mIEB0aHJvdHRsZWQgZGVjb3JhdG9yLFxuICAgKiBpdCBzaG91bGQgYmUgY2FsbGVkIG9uIGxlYWRpbmcgZWRnZSBvZiB0aGUgdGltZW91dC5cbiAgICovXG4gIEB0aHJvdHRsZSg2MDAsIHsgdHJhaWxpbmc6IGZhbHNlIH0pXG4gIGFzeW5jIHJlZnJlc2hMb2dpbk9wdGlvbnMoKSB7XG4gICAgY29uc3QgbG9naW5PcHRpb25zID0gKGF3YWl0IHRoaXMudGVuYW50TG9naW5PcHRpb25zU2VydmljZS5saXN0Rm9yQ3VycmVudFRlbmFudCgpKS5kYXRhO1xuICAgIHRoaXMuc3RhdGUkLm5leHQoeyAuLi50aGlzLnN0YXRlLCBsb2dpbk9wdGlvbnMgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGN1cnJlbnQgdXNlcnMgYXBwbGljYXRpb24gbGlzdCBhbmQgbWF0Y2hlcyBpdCBhZ2FpbnN0IGdpdmVuIGFwcGxpY2F0aW9uIG5hbWUuXG4gICAqIFJldHVybnMgdHJ1ZSBpZiBhcHBsaWNhdGlvbiBpcyBpbiB0aGUgbGlzdC5cbiAgICogQHBhcmFtIG5hbWUgYXBwbGljYXRpb24gbmFtZVxuICAgKi9cbiAgYXN5bmMgaXNBcHBsaWNhdGlvbkF2YWlsYWJsZShuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBhcHBzID0gYXdhaXQgdGhpcy5jdXJyZW50QXBwc09mVXNlci5waXBlKHRha2UoMSkpLnRvUHJvbWlzZSgpO1xuICAgIHJldHVybiBhcHBzLnNvbWUoYXBwID0+IGFwcC5uYW1lID09PSBuYW1lIHx8IGFwcC5jb250ZXh0UGF0aCA9PT0gbmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBjdXJyZW50IHVzZXIgKGluY2x1ZGluZyBzdXBwb3J0IHVzZXIpLlxuICAgKiBAcGFyYW0gdXNlckluZm8gSW5mbyBhYm91dCBjdXJyZW50IHVzZXIgYW5kIHN1cHBvcnQgdXNlciB0byBiZSBzZXQuXG4gICAqL1xuICBzZXRVc2VyKHVzZXJJbmZvOiB7IHVzZXI6IElVc2VyOyBzdXBwb3J0VXNlck5hbWU6IHN0cmluZyB9KSB7XG4gICAgdGhpcy5jdXJyZW50U3VwcG9ydFVzZXJOYW1lLm5leHQodXNlckluZm8uc3VwcG9ydFVzZXJOYW1lIHx8IG51bGwpO1xuICAgIHRoaXMuY3VycmVudFVzZXIubmV4dCh1c2VySW5mby51c2VyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmllcyBpZiB0aGUgY3VycmVudCBhcHBsaWNhdGlvbiBpcyBvd25lZCBieSB0aGUgY3VycmVudCB0ZW5hbnQuXG4gICAqIEBwYXJhbSBhcHAgVGhlIGFwcGxpY2F0aW9uIHRvIHZlcmlmeS5cbiAgICogQHJldHVybnMgdHJ1ZSBpZiBpdCBiZWxvbmdzIHRvIHRoZSBjdXJyZW50IHRlbmFudC5cbiAgICovXG4gIGlzT3duZXJPZkFwcGxpY2F0aW9uKGFwcD86IElBcHBsaWNhdGlvbik6IGJvb2xlYW4ge1xuICAgIGlmICghYXBwKSB7XG4gICAgICBhcHAgPSB0aGlzLmN1cnJlbnRBcHBsaWNhdGlvbi52YWx1ZTtcbiAgICB9XG4gICAgY29uc3QgY3VycmVudFRlbmFudDogSUN1cnJlbnRUZW5hbnQgPSB0aGlzLmN1cnJlbnRUZW5hbnQudmFsdWU7XG4gICAgY29uc3QgYXBwT3duZXIgPSBnZXQoYXBwLCAnb3duZXIudGVuYW50LmlkJyk7XG4gICAgcmV0dXJuIGN1cnJlbnRUZW5hbnQ/Lm5hbWUgPT09IGFwcE93bmVyO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWVzIGlmIHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uIGlzIG93bmVkIGJ5IHRoZSBjdXJyZW50IHRlbmFudC5cbiAgICogQHBhcmFtIGFwcCBUaGUgYXBwbGljYXRpb24gdG8gdmVyaWZ5LlxuICAgKiBAcmV0dXJucyB0cnVlIGlmIGl0IGJlbG9uZ3MgdG8gdGhlIGN1cnJlbnQgdGVuYW50LlxuICAgKi9cbiAgaXNPd25lck9mQXBwbGljYXRpb24kKGFwcD86IElBcHBsaWNhdGlvbik6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGFwcCQgPSBhcHAgPyBvZihhcHApIDogdGhpcy5jdXJyZW50QXBwbGljYXRpb247XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW2FwcCQsIHRoaXMuY3VycmVudFRlbmFudF0pLnBpcGUoXG4gICAgICBtYXAoKFthcHAsIHRlbmFudF0pID0+IHtcbiAgICAgICAgaWYgKCFhcHAgfHwgIXRlbmFudCkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGVuYW50Lm5hbWUgPT09IGdldChhcHAsICdvd25lci50ZW5hbnQuaWQnKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBjb250ZXh0UGF0aC5cbiAgICovXG4gIGdldEN1cnJlbnRDb250ZXh0UGF0aCgpIHtcbiAgICBjb25zdCBtYXRjaCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5tYXRjaCgvXFwvYXBwc1xcLyhwdWJsaWNcXC8pezAsMX0oLis/KShcXC98XFw/fCN8JCkvKTtcbiAgICByZXR1cm4gbWF0Y2ggJiYgbWF0Y2hbMl07XG4gIH1cblxuICBwcm90ZWN0ZWQgY3VycmVudEFwcHNPZlVzZXIkKCk6IE9ic2VydmFibGU8SUFwcGxpY2F0aW9uW10+IHtcbiAgICBjb25zdCBhcHBDaGFuZ2VzJCA9IHRoaXMub25BcHBDaGFuZ2VzQ29tcGxldGlvbiQoKS5waXBlKHN0YXJ0V2l0aCh1bmRlZmluZWQgYXMgdm9pZCkpO1xuICAgIGNvbnN0IHVzZXJDaGFuZ2VzJCA9IHRoaXMuY3VycmVudFVzZXIucGlwZShcbiAgICAgIG1hcCh1c2VyID0+IHVzZXI/LmlkKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICApO1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFt1c2VyQ2hhbmdlcyQsIGFwcENoYW5nZXMkXSkucGlwZShcbiAgICAgIGZpbHRlcigoW3VzZXJJZF0pID0+ICEhdXNlcklkKSxcbiAgICAgIHN3aXRjaE1hcCgoW3VzZXJJZF0pID0+XG4gICAgICAgIHRoaXMuYXBwbGljYXRpb25TZXJ2aWNlLmxpc3RCeVVzZXIodXNlcklkLCB7XG4gICAgICAgICAgZHJvcE92ZXJ3cml0dGVuQXBwczogdHJ1ZSxcbiAgICAgICAgICBub1BhZ2luZzogdHJ1ZVxuICAgICAgICB9KVxuICAgICAgKSxcbiAgICAgIG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpLFxuICAgICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQW4gT2JzZXJ2YWJsZSBlbWl0dGluZyBvbmNlIGFsbCBQT1NULCBQVVQsIERFTEVURSByZXF1ZXN0cyB0byB0aGUgYXBwbGljYXRpb24gQVBJIGZpbmlzaGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgb25BcHBDaGFuZ2VzQ29tcGxldGlvbiQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgbWV0aG9kcyA9IFsnUE9TVCcsICdQVVQnLCAnREVMRVRFJ107XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5jYWxscy5waXBlKFxuICAgICAgZmlsdGVyKFxuICAgICAgICAoeyBtZXRob2QsIHVybCB9KSA9PiBtZXRob2RzLmluY2x1ZGVzKG1ldGhvZCkgJiYgdXJsPy5pbmNsdWRlcygnYXBwbGljYXRpb24vYXBwbGljYXRpb25zJylcbiAgICAgICksXG4gICAgICBtYXAoKHsgcGhhc2UgfSkgPT4gKHBoYXNlID09PSAnc3RhcnQnID8gMSA6IC0xKSksXG4gICAgICBzY2FuKChjb3VudCwgaXRlbSkgPT4gY291bnQgKyBpdGVtLCAwKSxcbiAgICAgIG1hcChjb3VudCA9PiBjb3VudCA9PT0gMCksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgZGVib3VuY2VUaW1lKDUwMCksXG4gICAgICBmaWx0ZXIoY29tcGxldGVkID0+ICEhY29tcGxldGVkKSxcbiAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZERlZmF1bHRPcHRpb25zKCkge1xuICAgIHRoaXMuc3RhdGUuc3VwcG9ydFVybCA9IGF3YWl0IHRoaXMub3B0aW9ucy5nZXRTdXBwb3J0VXJsKCk7XG4gICAgdGhpcy5zdGF0ZS5hY3RpdmF0ZVN1cHBvcnRVc2VyQXZhaWxhYmxlID0gYXdhaXQgdGhpcy5vcHRpb25zLmdldEFjdGl2YXRlU3VwcG9ydFVzZXIoKTtcbiAgICB0aGlzLnN0YXRlLnZlcnNpb25zLmJhY2tlbmQgPSBhd2FpdCB0aGlzLm9wdGlvbnMuZ2V0U3lzdGVtT3B0aW9uKCdzeXN0ZW0nLCAndmVyc2lvbicpO1xuICAgIHRoaXMuZW1pdE5ld1N0YXRlKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -2,4 +2,5 @@ export * from './plugins.module';
|
|
|
2
2
|
export * from './plugins.service';
|
|
3
3
|
export * from './plugins-resolve.service';
|
|
4
4
|
export * from './plugins.model';
|
|
5
|
-
|
|
5
|
+
export * from './plugin-loaded.pipe';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3BsdWdpbnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9wbHVnaW5zLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3BsdWdpbnMuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3BsdWdpbnMtcmVzb2x2ZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcGx1Z2lucy5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL3BsdWdpbi1sb2FkZWQucGlwZSc7XG4iXX0=
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
import { PluginsResolveService } from './plugins-resolve.service';
|
|
3
|
+
import { distinctUntilChanged, map, of } from 'rxjs';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "./plugins-resolve.service";
|
|
6
|
+
export class PluginLoadedPipe {
|
|
7
|
+
constructor(pluginsResolve) {
|
|
8
|
+
this.pluginsResolve = pluginsResolve;
|
|
9
|
+
}
|
|
10
|
+
transform(pluginName) {
|
|
11
|
+
if (!pluginName) {
|
|
12
|
+
return of(false);
|
|
13
|
+
}
|
|
14
|
+
return this.pluginsResolve.loadedPluginNames$.pipe(map(pluginNames => pluginNames.includes(pluginName)), distinctUntilChanged());
|
|
15
|
+
}
|
|
16
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: PluginLoadedPipe, deps: [{ token: i1.PluginsResolveService }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
17
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: PluginLoadedPipe, isStandalone: true, name: "c8yPluginLoaded" }); }
|
|
18
|
+
}
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: PluginLoadedPipe, decorators: [{
|
|
20
|
+
type: Pipe,
|
|
21
|
+
args: [{
|
|
22
|
+
name: 'c8yPluginLoaded',
|
|
23
|
+
standalone: true
|
|
24
|
+
}]
|
|
25
|
+
}], ctorParameters: () => [{ type: i1.PluginsResolveService }] });
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWxvYWRlZC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9wbHVnaW5zL3BsdWdpbi1sb2FkZWQucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBTWpFLE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0IsWUFBb0IsY0FBcUM7UUFBckMsbUJBQWMsR0FBZCxjQUFjLENBQXVCO0lBQUcsQ0FBQztJQUU3RCxTQUFTLENBQUMsVUFBa0I7UUFDMUIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25CLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUNoRCxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQ3BELG9CQUFvQixFQUFFLENBQ3ZCLENBQUM7SUFDSixDQUFDOzhHQVhVLGdCQUFnQjs0R0FBaEIsZ0JBQWdCOzsyRkFBaEIsZ0JBQWdCO2tCQUo1QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxpQkFBaUI7b0JBQ3ZCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBsdWdpbnNSZXNvbHZlU2VydmljZSB9IGZyb20gJy4vcGx1Z2lucy1yZXNvbHZlLnNlcnZpY2UnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcblxuQFBpcGUoe1xuICBuYW1lOiAnYzh5UGx1Z2luTG9hZGVkJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBQbHVnaW5Mb2FkZWRQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGx1Z2luc1Jlc29sdmU6IFBsdWdpbnNSZXNvbHZlU2VydmljZSkge31cblxuICB0cmFuc2Zvcm0ocGx1Z2luTmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgaWYgKCFwbHVnaW5OYW1lKSB7XG4gICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wbHVnaW5zUmVzb2x2ZS5sb2FkZWRQbHVnaW5OYW1lcyQucGlwZShcbiAgICAgIG1hcChwbHVnaW5OYW1lcyA9PiBwbHVnaW5OYW1lcy5pbmNsdWRlcyhwbHVnaW5OYW1lKSksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -73,6 +73,7 @@ export class PluginsResolveService {
|
|
|
73
73
|
this._pluginDetails$ = new Subject();
|
|
74
74
|
this._allPluginsLoaded$ = new BehaviorSubject(false);
|
|
75
75
|
this._contextPathsFromWhereRemotesHaveBeenLoaded$ = new BehaviorSubject([]);
|
|
76
|
+
this._loadedPluginNames$ = new BehaviorSubject([]);
|
|
76
77
|
this.injectors$ = this._injectors$.asObservable().pipe(
|
|
77
78
|
// not specifying the bufferSize of shareReplay so all injectors are received on subscription
|
|
78
79
|
shareReplay());
|
|
@@ -83,6 +84,7 @@ export class PluginsResolveService {
|
|
|
83
84
|
this.allPluginsLoaded$ = this._allPluginsLoaded$.asObservable();
|
|
84
85
|
this.contextPathsFromWhereRemotesHaveBeenLoaded$ =
|
|
85
86
|
this._contextPathsFromWhereRemotesHaveBeenLoaded$.asObservable();
|
|
87
|
+
this.loadedPluginNames$ = this._loadedPluginNames$.asObservable();
|
|
86
88
|
}
|
|
87
89
|
/**
|
|
88
90
|
* Loads plugins by resolving the remote NgModules and injecting it. Also attaching
|
|
@@ -109,6 +111,8 @@ export class PluginsResolveService {
|
|
|
109
111
|
else {
|
|
110
112
|
this.loadModule(moduleOrProviders);
|
|
111
113
|
}
|
|
114
|
+
const newLoadedPluginNames = [...this._loadedPluginNames$.value, name];
|
|
115
|
+
this._loadedPluginNames$.next(newLoadedPluginNames);
|
|
112
116
|
}
|
|
113
117
|
catch (ex) {
|
|
114
118
|
console.error(`Failed to load ${name}`, ex);
|
|
@@ -291,4 +295,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
291
295
|
providedIn: 'root'
|
|
292
296
|
}]
|
|
293
297
|
}], ctorParameters: () => [{ type: i0.EnvironmentInjector }] });
|
|
294
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy1yZXNvbHZlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3BsdWdpbnMvcGx1Z2lucy1yZXNvbHZlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFVBQVUsRUFDVixXQUFXLEVBQ1gsbUJBQW1CLEVBRW5CLGNBQWMsRUFHZixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBZ0J0QyxNQUFNLE9BQU8scUJBQXFCO0lBQ2hDOzs7Ozs7Ozs7Ozs7Ozs7OztPQWlCRztJQUNILE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBbUM7UUFDckQsT0FBTyxNQUFNLENBQ1gsT0FBTyxFQUNQLENBQUMsVUFBb0MsRUFBRSxRQUFrQyxFQUFFLEVBQUU7WUFDM0UsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLGFBQXVCLEVBQUUsaUJBQXlCLEVBQUUsRUFBRTtnQkFDdkUsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFDLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDOUQsVUFBVSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUN2RSxDQUFDLENBQUMsQ0FBQztZQUVILE9BQU8sVUFBVSxDQUFDO1FBQ3BCLENBQUMsRUFDRCxFQUFFLENBQ0gsQ0FB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QUFDO1FBQ3JCLElBQUksQ0FBQztZQUNILE1BQU0sU0FBUyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN2RCxPQUFPLEdBQUcsQ0FBQyxNQUFNLFNBQVMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ25ELENBQUM7UUFBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ1osT0FBTyxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0MsRUFBRSxhQUFhLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDckUsQ0FBQztRQUNELE9BQU8sRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQzFDLENBQUM7OEdBdlZVLHFCQUFxQjtrSEFBckIscUJBQXFCLGNBRnBCLE1BQU07OzJGQUVQLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJbmplY3RhYmxlLFxuICBOZ01vZHVsZVJlZixcbiAgRW52aXJvbm1lbnRJbmplY3RvcixcbiAgVHlwZSxcbiAgY3JlYXRlTmdNb2R1bGUsXG4gIEluamVjdG9yLFxuICBQcm92aWRlclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uUmVtb3RlUGx1Z2lucyB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IHJlZHVjZSwgZm9yRWFjaCwgZ2V0LCB1bmlvbiwgY2FtZWxDYXNlIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTdGFuZGFsb25lUGx1Z2luSW5qZWN0b3IgfSBmcm9tICcuLi9jb21tb24nO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoLWVzJztcblxudHlwZSBTY29wZSA9IHVua25vd247XG50eXBlIEZhY3RvcnkgPSAoKSA9PiBhbnk7XG5cbmRlY2xhcmUgY29uc3QgX193ZWJwYWNrX2luaXRfc2hhcmluZ19fOiAoc2hhcmVTY29wZTogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuZGVjbGFyZSBjb25zdCBfX3dlYnBhY2tfc2hhcmVfc2NvcGVzX186IHsgZGVmYXVsdDogU2NvcGUgfTtcbmRlY2xhcmUgY29uc3QgX19PUklHSU5BTF9DT05URVhUX1BBVEhfXzogc3RyaW5nO1xuXG5pbnRlcmZhY2UgQ29udGFpbmVyIHtcbiAgaW5pdChzaGFyZVNjb3BlOiBTY29wZSk6IHZvaWQ7XG4gIGdldChtb2R1bGU6IHN0cmluZyk6IEZhY3Rvcnk7XG59XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBQbHVnaW5zUmVzb2x2ZVNlcnZpY2Uge1xuICAvKipcbiAgICogVGFrZXMgYSBsaXN0IG9mIHJlbW90ZXMgYW5kIHR1cm5zIGl0IGludG8gYW4gb2JqZWN0IGNvbnRhaW5pbmcgdW5pb24gb2YgY29ycmVzcG9uZGluZyByZW1vdGVzLlxuICAgKiBAcGFyYW0gcmVtb3RlcyBMaXN0IG9mIHRoZSByZW1vdGVzLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIG9iamVjdCB3aXRoIG1lcmdlZCByZW1vdGVzLlxuICAgKlxuICAgKiAqKkV4YW1wbGUqKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHJlbW90ZXNBOkFwcGxpY2F0aW9uUmVtb3RlUGx1Z2lucyA9IHsgY29udGV4dFBhdGhBOiBbJ21vZHVsZUEnLCAnbW9kdWxlQiddIH07XG4gICAqIGNvbnN0IHJlbW90ZXNCOkFwcGxpY2F0aW9uUmVtb3RlUGx1Z2lucyA9IHsgY29udGV4dFBhdGhBOiBbJ21vZHVsZUEnXSwgY29udGV4dFBhdGhCOiBbJ21vZHVsZVonXSB9O1xuICAgKiBjb25zdCBtZXJnZWRSZW1vdGVzOkFwcGxpY2F0aW9uUmVtb3RlUGx1Z2lucyA9IG1lcmdlUmVtb3RlcyhbcmVtb3Rlc0EsIHJlbW90ZXNCXSk7XG4gICAqIC8vIFJlc3VsdFxuICAgKiB7XG4gICAqICBjb250ZXh0UGF0aEE6IFsnbW9kdWxlQScsICdtb2R1bGVCJ10sXG4gICAqICBjb250ZXh0UGF0aEI6IFsnbW9kdWxlWiddXG4gICAqIH1cbiAgICpcbiAgICogYGBgXG4gICAqL1xuICBzdGF0aWMgbWVyZ2VSZW1vdGVzKHJlbW90ZXM6IEFwcGxpY2F0aW9uUmVtb3RlUGx1Z2luc1tdKTogQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zIHtcbiAgICByZXR1cm4gcmVkdWNlKFxuICAgICAgcmVtb3RlcyxcbiAgICAgIChhbGxSZW1vdGVzOiBBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnMsIG1mUmVtb3RlOiBBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnMpID0+IHtcbiAgICAgICAgZm9yRWFjaChtZlJlbW90ZSwgKHJlbW90ZU1vZHVsZXM6IHN0cmluZ1tdLCByZW1vdGVDb250ZXh0UGF0aDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgY29uc3QgY3VycmVudFJlbW90ZXMgPSBnZXQoYWxsUmVtb3RlcywgcmVtb3RlQ29udGV4dFBhdGgsIFtdKTtcbiAgICAgICAgICBhbGxSZW1vdGVzW3JlbW90ZUNvbnRleHRQYXRoXSA9IHVuaW9uKGN1cnJlbnRSZW1vdGVzLCByZW1vdGVNb2R1bGVzKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGFsbFJlbW90ZXM7XG4gICAgICB9LFxuICAgICAge31cbiAgICApO1xuICB9XG5cbiAgc3RhdGljIHJlbW92ZVJlbW90ZXMoXG4gICAgcmVtb3Rlc1RvUmVtb3ZlRnJvbTogQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zLFxuICAgIHJlbW90ZXNUb1JlbW92ZT86IEFwcGxpY2F0aW9uUmVtb3RlUGx1Z2luc1xuICApOiBBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnMge1xuICAgIGNvbnN0IGtleXNUb1JlbW92ZSA9IE9iamVjdC5rZXlzKHJlbW90ZXNUb1JlbW92ZSB8fCB7fSk7XG4gICAgaWYgKCFrZXlzVG9SZW1vdmUubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gcmVtb3Rlc1RvUmVtb3ZlRnJvbTtcbiAgICB9XG4gICAgY29uc3QgY3VycmVudEtleXMgPSBPYmplY3Qua2V5cyhyZW1vdGVzVG9SZW1vdmVGcm9tKTtcbiAgICBjb25zdCBrZXlzUHJlc2VudEluQm90aCA9IGN1cnJlbnRLZXlzLmZpbHRlcihrZXkgPT4ga2V5c1RvUmVtb3ZlLmluY2x1ZGVzKGtleSkpO1xuICAgIGlmICgha2V5c1ByZXNlbnRJbkJvdGgubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gcmVtb3Rlc1RvUmVtb3ZlRnJvbTtcbiAgICB9XG4gICAgcmVtb3Rlc1RvUmVtb3ZlRnJvbSA9IGNsb25lRGVlcChyZW1vdGVzVG9SZW1vdmVGcm9tKTtcbiAgICBmb3IgKGNvbnN0IHJlbW90ZUNvbnRleHRQYXRoIG9mIGtleXNQcmVzZW50SW5Cb3RoKSB7XG4gICAgICBjb25zdCByZW1vdGVNb2R1bGVzVG9CZVJlbW92ZWQgPSByZW1vdGVzVG9SZW1vdmVbcmVtb3RlQ29udGV4dFBhdGhdO1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHJlbW90ZU1vZHVsZXNUb0JlUmVtb3ZlZCkgfHwgIXJlbW90ZU1vZHVsZXNUb0JlUmVtb3ZlZD8ubGVuZ3RoKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBsZXQgY3VycmVudE1vZHVsZXMgPSByZW1vdGVzVG9SZW1vdmVGcm9tW3JlbW90ZUNvbnRleHRQYXRoXTtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShjdXJyZW50TW9kdWxlcykgfHwgIWN1cnJlbnRNb2R1bGVzPy5sZW5ndGgpIHtcbiAgICAgICAgZGVsZXRlIHJlbW90ZXNUb1JlbW92ZUZyb21bcmVtb3RlQ29udGV4dFBhdGhdO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY3VycmVudE1vZHVsZXMgPSBjdXJyZW50TW9kdWxlcy5maWx0ZXIobW9kdWxlID0+ICFyZW1vdGVNb2R1bGVzVG9CZVJlbW92ZWQuaW5jbHVkZXMobW9kdWxlKSk7XG4gICAgICBpZiAoY3VycmVudE1vZHVsZXMubGVuZ3RoKSB7XG4gICAgICAgIHJlbW90ZXNUb1JlbW92ZUZyb21bcmVtb3RlQ29udGV4dFBhdGhdID0gY3VycmVudE1vZHVsZXM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWxldGUgcmVtb3Rlc1RvUmVtb3ZlRnJvbVtyZW1vdGVDb250ZXh0UGF0aF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlbW90ZXNUb1JlbW92ZUZyb207XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgYWxsIGluamVjdG9ycyBvZiBhbHJlYWR5IGxvYWRlZCBwbHVnaW5zIG9uIHN1YnNjcmlwdGlvbi5cbiAgICovXG4gIGluamVjdG9ycyQ6IE9ic2VydmFibGU8RW52aXJvbm1lbnRJbmplY3RvciB8IEluamVjdG9yPjtcbiAgLyoqXG4gICAqIEVtaXRzIG9uY2UgcmVtb3RlUGx1Z2lucyBoYXZlIGJlZW4gcmVzb2x2ZWQuXG4gICAqL1xuICByZWZyZXNoJDogT2JzZXJ2YWJsZTx2b2lkPjtcbiAgLyoqXG4gICAqIEVtaXRzIGFsbCBwbHVnaW4gZGV0YWlscyBvZiBhbHJlYWR5IGxvYWRlZCBwbHVnaW5zIG9uIHN1YnNjcmlwdGlvbi5cbiAgICovXG4gIHBsdWdpbkRldGFpbHMkOiBPYnNlcnZhYmxlPHtcbiAgICByZW1vdGVOZ01vZHVsZTogTmdNb2R1bGVSZWY8dW5rbm93bj4gfCBUeXBlPHVua25vd24+O1xuICAgIG1vZHVsZVJlZjogTmdNb2R1bGVSZWY8dW5rbm93bj47XG4gIH0+O1xuICBhbGxQbHVnaW5zTG9hZGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgLyoqXG4gICAqIEVtaXRzIGFsbCBjb250ZXh0UGF0aHMgKGluY2x1ZGluZyB0aGUgY29ycmVzcG9uZGluZyB2ZXJzaW9uL3RhZywgaWYgcHJvdmlkZWQpIHRoYXQgaGF2ZSBiZWVuIGFscmVhZHkgbG9hZGVkIG9uIHN0YXJ0dXAgYW5kIGZ1cnRoZXIgYW55IG5ld2xvYWQgbG9hZGVkLlxuICAgKi9cbiAgY29udGV4dFBhdGhzRnJvbVdoZXJlUmVtb3Rlc0hhdmVCZWVuTG9hZGVkJDogT2JzZXJ2YWJsZTxzdHJpbmdbXT47XG4gIHByaXZhdGUgdXJsUmVtb3Rlc0NhY2hlOiBBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnMgPSBudWxsO1xuICBwcml2YXRlIHJlbW90ZVNjcmlwdFNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBwcml2YXRlIF9pbmplY3RvcnMkID0gbmV3IFN1YmplY3Q8RW52aXJvbm1lbnRJbmplY3RvciB8IEluamVjdG9yPigpO1xuICBwcml2YXRlIF9yZWZyZXNoJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgX3BsdWdpbkRldGFpbHMkID0gbmV3IFN1YmplY3Q8e1xuICAgIHJlbW90ZU5nTW9kdWxlOiBOZ01vZHVsZVJlZjx1bmtub3duPiB8IFR5cGU8dW5rbm93bj47XG4gICAgbW9kdWxlUmVmOiBOZ01vZHVsZVJlZjx1bmtub3duPjtcbiAgfT4oKTtcbiAgcHJpdmF0ZSBfYWxsUGx1Z2luc0xvYWRlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSBfY29udGV4dFBhdGhzRnJvbVdoZXJlUmVtb3Rlc0hhdmVCZWVuTG9hZGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nW10+KFtdKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBFbnZpcm9ubWVudEluamVjdG9yKSB7XG4gICAgdGhpcy5pbmplY3RvcnMkID0gdGhpcy5faW5qZWN0b3JzJC5hc09ic2VydmFibGUoKS5waXBlKFxuICAgICAgLy8gbm90IHNwZWNpZnlpbmcgdGhlIGJ1ZmZlclNpemUgb2Ygc2hhcmVSZXBsYXkgc28gYWxsIGluamVjdG9ycyBhcmUgcmVjZWl2ZWQgb24gc3Vic2NyaXB0aW9uXG4gICAgICBzaGFyZVJlcGxheSgpXG4gICAgKTtcbiAgICB0aGlzLnJlZnJlc2gkID0gdGhpcy5fcmVmcmVzaCQuYXNPYnNlcnZhYmxlKCkucGlwZShzaGFyZVJlcGxheSgxKSk7XG4gICAgdGhpcy5wbHVnaW5EZXRhaWxzJCA9IHRoaXMuX3BsdWdpbkRldGFpbHMkLmFzT2JzZXJ2YWJsZSgpLnBpcGUoXG4gICAgICAvLyBub3Qgc3BlY2lmeWluZyB0aGUgYnVmZmVyU2l6ZSBvZiBzaGFyZVJlcGxheSBzbyBhbGwgZGV0YWlscyBhcmUgcmVjZWl2ZWQgb24gc3Vic2NyaXB0aW9uXG4gICAgICBzaGFyZVJlcGxheSgpXG4gICAgKTtcbiAgICB0aGlzLmFsbFBsdWdpbnNMb2FkZWQkID0gdGhpcy5fYWxsUGx1Z2luc0xvYWRlZCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5jb250ZXh0UGF0aHNGcm9tV2hlcmVSZW1vdGVzSGF2ZUJlZW5Mb2FkZWQkID1cbiAgICAgIHRoaXMuX2NvbnRleHRQYXRoc0Zyb21XaGVyZVJlbW90ZXNIYXZlQmVlbkxvYWRlZCQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgcGx1Z2lucyBieSByZXNvbHZpbmcgdGhlIHJlbW90ZSBOZ01vZHVsZXMgYW5kIGluamVjdGluZyBpdC4gQWxzbyBhdHRhY2hpbmdcbiAgICogdGhlIGhvb2tzIG9udG8gdGhlIHJvb3QgaW5qZWN0b3IuXG4gICAqIEBwYXJhbSByZW1vdGVNb2R1bGVzIFRoZSByZW1vdGUgcGx1Z2lucyB0byBsb2FkIGFzIGZhY3RvcnkgbmFtZSBtYXBwaW5nIGFycmF5LlxuICAgKi9cbiAgcmVzb2x2ZVJlbW90ZVBsdWdpbnMocmVtb3RlTW9kdWxlczogQXJyYXk8eyBmYWN0b3J5OyBuYW1lIH0+KSB7XG4gICAgdGhpcy5sb2FkTW9kdWxlc0R5bmFtaWNhbGx5KHJlbW90ZU1vZHVsZXMpO1xuICAgIHRoaXMucmVmcmVzaEhvb2tzKCk7XG4gICAgdGhpcy5tYXJrUGx1Z2luc0FzTG9hZGVkKCk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgbW9kdWxlcyBhbmQgaGFuZGxlcyBob29raW5nIGNvcnJlY3RseS5cbiAgICogQHBhcmFtIHJlbW90ZU5nTW9kdWxlcyBUaGUgbW9kdWxlcyB0byBsb2FkLlxuICAgKi9cbiAgbG9hZE1vZHVsZXNEeW5hbWljYWxseShyZW1vdGVNb2R1bGVzOiBBcnJheTx7IGZhY3Rvcnk7IG5hbWUgfT4pIHtcbiAgICBmb3IgKGNvbnN0IHsgZmFjdG9yeSwgbmFtZSB9IG9mIHJlbW90ZU1vZHVsZXMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IG1vZHVsZU9yUHJvdmlkZXJzID0gZmFjdG9yeVtuYW1lXTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobW9kdWxlT3JQcm92aWRlcnMpKSB7XG4gICAgICAgICAgdGhpcy5sb2FkUHJvdmlkZXJzKG1vZHVsZU9yUHJvdmlkZXJzLCBuYW1lKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmxvYWRNb2R1bGUobW9kdWxlT3JQcm92aWRlcnMpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChleCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gbG9hZCAke25hbWV9YCwgZXgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGxvYWRQcm92aWRlcnMocHJvdmlkZXJzOiBQcm92aWRlcltdLCBuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBpbmplY3RvciA9IG5ldyBTdGFuZGFsb25lUGx1Z2luSW5qZWN0b3Ioe1xuICAgICAgcHJvdmlkZXJzOiBwcm92aWRlcnMsXG4gICAgICBuYW1lOiBgcGx1Z2luc0luamVjdG9yLSR7bmFtZX1gLFxuICAgICAgcGFyZW50OiB0aGlzLmluamVjdG9yXG4gICAgfSk7XG4gICAgdGhpcy5faW5qZWN0b3JzJC5uZXh0KGluamVjdG9yKTtcbiAgfVxuXG4gIGxvYWRNb2R1bGU8VCA9IHVua25vd24+KHJlbW90ZU5nTW9kdWxlOiBOZ01vZHVsZVJlZjxUPiB8IFR5cGU8VD4pIHtcbiAgICBsZXQgbW9kdWxlUmVmOiBOZ01vZHVsZVJlZjxUPjtcbiAgICBpZiAocmVtb3RlTmdNb2R1bGUgaW5zdGFuY2VvZiBOZ01vZHVsZVJlZikge1xuICAgICAgLy8gQU9UXG4gICAgICBtb2R1bGVSZWYgPSByZW1vdGVOZ01vZHVsZTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSklUXG4gICAgICBtb2R1bGVSZWYgPSBjcmVhdGVOZ01vZHVsZShyZW1vdGVOZ01vZHVsZSwgdGhpcy5pbmplY3Rvcik7XG4gICAgfVxuICAgIHRoaXMuX2luamVjdG9ycyQubmV4dChtb2R1bGVSZWYuaW5qZWN0b3IpO1xuICAgIHRoaXMuX3BsdWdpbkRldGFpbHMkLm5leHQoeyBtb2R1bGVSZWYsIHJlbW90ZU5nTW9kdWxlIH0pO1xuICAgIHJldHVybiBtb2R1bGVSZWY7XG4gIH1cblxuICAvKipcbiAgICogV2lsbCByZWZyZXNoIGFsbCBjdXJyZW50IHJlZ2lzdGVyZWQgaG9va3MuXG4gICAqL1xuICByZWZyZXNoSG9va3MoKSB7XG4gICAgdGhpcy5fcmVmcmVzaCQubmV4dCgpO1xuICB9XG5cbiAgbWFya1BsdWdpbnNBc0xvYWRlZCgpIHtcbiAgICB0aGlzLl9hbGxQbHVnaW5zTG9hZGVkJC5uZXh0KHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWRzIGEgbGlzdCBvZiByZW1vdGVzIHNvIHRoYXQgYSBwYXJ0aWN1bGFyIGFwcGxpY2F0aW9uIGNhbiB1c2UgdGhlbS5cbiAgICogVGhlIHJlcXVlc3QgaXMgbWFkZSB0byB0aGUgZm9sbG93aW5nIGFkZHJlc3M6IC9hcHBzLzxjb250ZXh0UGF0aD4vcmVtb3RlRW50cnkuanNcbiAgICogQHBhcmFtIHJlbW90ZXMgTGlzdCBvZiByZW1vdGVzIHRvIGJlIGxvYWRlZC5cbiAgICogQHJldHVybnMgUmV0dXJucyB0aGUgbGlzdCBvZiBsb2FkZWQgbW9kdWxlcyBmcm9tIHJlbW90ZXMuXG4gICAqL1xuICBhc3luYyBsb2FkUmVtb3RlcyhyZW1vdGVzOiBBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnMpIHtcbiAgICBpZiAoIXJlbW90ZXMpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgcmVtb3RlTW9kdWxlcyA9IFtdO1xuICAgIGZvciAoY29uc3QgcGx1Z2luSWQgaW4gcmVtb3Rlcykge1xuICAgICAgaWYgKHJlbW90ZXMuaGFzT3duUHJvcGVydHkocGx1Z2luSWQpKSB7XG4gICAgICAgIGNvbnN0IG1vZHVsZU5hbWVzID0gcmVtb3Rlc1twbHVnaW5JZF07XG4gICAgICAgIGNvbnN0IHVybCA9IGAvYXBwcy8ke3BsdWdpbklkfS9yZW1vdGVFbnRyeS5qcz9ub2NhY2hlPSR7ZGF0ZS5nZXRUaW1lKCl9YDtcbiAgICAgICAgbGV0IGF0TGVhc3RPbmVNb2R1bGVMb2FkZWRTdWNjZXNzZnVsbHkgPSBmYWxzZTtcbiAgICAgICAgZm9yIChjb25zdCBtb2R1bGVOYW1lIG9mIG1vZHVsZU5hbWVzKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJlbW90ZU1vZHVsZXMucHVzaChhd2FpdCB0aGlzLmxvYWRSZW1vdGVNb2R1bGUodXJsLCBwbHVnaW5JZCwgbW9kdWxlTmFtZSkpO1xuICAgICAgICAgICAgYXRMZWFzdE9uZU1vZHVsZUxvYWRlZFN1Y2Nlc3NmdWxseSA9IHRydWU7XG4gICAgICAgICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgQ291bGQgbm90IGxvYWQgcmVtb3RlIG1vZHVsZSAnJXMnIGZyb20gdXJsOmAsIG1vZHVsZU5hbWUsIHVybCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gT25seSBhZGQgc3VjY2Vzc2Z1bGx5IGxvYWRlZCByZW1vdGVzIHRvIHRoZSBsaXN0XG4gICAgICAgIGlmIChhdExlYXN0T25lTW9kdWxlTG9hZGVkU3VjY2Vzc2Z1bGx5KSB7XG4gICAgICAgICAgdGhpcy5fY29udGV4dFBhdGhzRnJvbVdoZXJlUmVtb3Rlc0hhdmVCZWVuTG9hZGVkJC5uZXh0KFxuICAgICAgICAgICAgdGhpcy5fY29udGV4dFBhdGhzRnJvbVdoZXJlUmVtb3Rlc0hhdmVCZWVuTG9hZGVkJC52YWx1ZS5jb25jYXQocGx1Z2luSWQpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVtb3RlTW9kdWxlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBUYWtlcyBhIGxpc3Qgb2YgcmVtb3RlcyBhbmQgdHVybnMgaXQgaW50byBhbiBvYmplY3QgY29udGFpbmluZyB1bmlvbiBvZiBjb3JyZXNwb25kaW5nIHJlbW90ZXMuXG4gICAqIEBwYXJhbSBtZlJlbW90ZXMgTGlzdCBvZiB0aGUgcmVtb3Rlcy5cbiAgICogQHJldHVybnMgUmV0dXJucyBvYmplY3Qgd2l0aCBtZXJnZWQgcmVtb3Rlcy5cbiAgICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBzdGF0aWMgZnVuY3Rpb24gbWVyZ2VSZW1vdGVzIGFzIHRoaXMgaXMgYSBwdXJlIGZ1bmN0aW9uLlxuICAgKlxuICAgKiAqKkV4YW1wbGUqKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHJlbW90ZXNBOkFwcGxpY2F0aW9uUmVtb3RlUGx1Z2lucyA9IHsgY29udGV4dFBhdGhBOiBbJ21vZHVsZUEnLCAnbW9kdWxlQiddIH07XG4gICAqIGNvbnN0IHJlbW90ZXNCOkFwcGxpY2F0aW9uUmVtb3RlUGx1Z2lucyA9IHsgY29udGV4dFBhdGhBOiBbJ21vZHVsZUEnXSwgY29udGV4dFBhdGhCOiBbJ21vZHVsZVonXSB9O1xuICAgKiBjb25zdCBtZXJnZWRSZW1vdGVzOkFwcGxpY2F0aW9uUmVtb3RlUGx1Z2lucyA9IG1lcmdlTUZSZW1vdGVzKFtyZW1vdGVzQSwgcmVtb3Rlc0JdKTtcbiAgICogLy8gUmVzdWx0XG4gICAqIHtcbiAgICogIGNvbnRleHRQYXRoQTogWydtb2R1bGVBJywgJ21vZHVsZUInXSxcbiAgICogIGNvbnRleHRQYXRoQjogWydtb2R1bGVaJ11cbiAgICogfVxuICAgKlxuICAgKiBgYGBcbiAgICovXG4gIG1lcmdlTUZSZW1vdGVzKG1mUmVtb3RlczogQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zW10pOiBBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnMge1xuICAgIHJldHVybiBQbHVnaW5zUmVzb2x2ZVNlcnZpY2UubWVyZ2VSZW1vdGVzKG1mUmVtb3Rlcyk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXJzIFVSTCByZW1vdGVzIGNhY2hlLlxuICAgKi9cbiAgY2xlYXJVUkxSZW1vdGVzQ2FjaGUoKSB7XG4gICAgdGhpcy51cmxSZW1vdGVzQ2FjaGUgPSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyB0aGUgcmVtb3RlcyBsaXN0IGZyb20gdGhlIFVSTC5cbiAgICogQHJldHVybnMgUmV0dXJucyB0aGUgbGlzdCBvZiByZW1vdGVzLlxuICAgKi9cbiAgbG9hZFVybFJlbW90ZXMoKSB7XG4gICAgaWYgKCF0aGlzLnVybFJlbW90ZXNDYWNoZSkge1xuICAgICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtcbiAgICAgIGNvbnN0IHJlbW90ZXMgPSBwYXJhbXMuZ2V0KCdyZW1vdGVzJyk7XG4gICAgICBpZiAocmVtb3Rlcykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoaXMudXJsUmVtb3Rlc0NhY2hlID0gSlNPTi5wYXJzZShkZWNvZGVVUklDb21wb25lbnQocmVtb3RlcykpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUud2FybihgRmFpbGVkIHRvIHBhcnNlIHJlbW90ZXM6ICR7ZXJyb3J9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudXJsUmVtb3Rlc0NhY2hlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkUmVtb3RlTW9kdWxlKFxuICAgIHJlbW90ZUVudHJ5VXJsOiBzdHJpbmcsXG4gICAgcmVtb3RlQ29udGV4dFBhdGg6IHN0cmluZyxcbiAgICBleHBvc2VkTW9kdWxlOiBzdHJpbmdcbiAgKTogUHJvbWlzZTx7IG5hbWU6IHN0cmluZzsgZmFjdG9yeTogRmFjdG9yeSB9PiB7XG4gICAgaWYgKCF0aGlzLnJlbW90ZVNjcmlwdFNldC5oYXMocmVtb3RlRW50cnlVcmwpKSB7XG4gICAgICB0aGlzLnJlbW90ZVNjcmlwdFNldC5hZGQocmVtb3RlRW50cnlVcmwpO1xuICAgICAgYXdhaXQgdGhpcy5sb2FkUmVtb3RlRW50cnkocmVtb3RlRW50cnlVcmwpO1xuICAgIH1cbiAgICBsZXQgY29udGV4dFBhdGg6IHN0cmluZyA9IHJlbW90ZUNvbnRleHRQYXRoO1xuICAgIGlmIChjb250ZXh0UGF0aC5pbmNsdWRlcygnQCcpKSB7XG4gICAgICBjb250ZXh0UGF0aCA9IHJlbW90ZUNvbnRleHRQYXRoLnNwbGl0KCdAJylbMF07XG4gICAgfVxuICAgIHJldHVybiBhd2FpdCB0aGlzLmxvb2t1cEV4cG9zZWRNb2R1bGUoY2FtZWxDYXNlKGNvbnRleHRQYXRoKSwgZXhwb3NlZE1vZHVsZSk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRSZW1vdGVFbnRyeShyZW1vdGVFbnRyeVVybDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgc2NyaXB0LnNyYyA9IHJlbW90ZUVudHJ5VXJsO1xuXG4gICAgICBzY3JpcHQub25lcnJvciA9IHJlamVjdDtcblxuICAgICAgc2NyaXB0Lm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgcmVzb2x2ZSgpOyAvLyB3aW5kb3cgaXMgdGhlIGdsb2JhbCBuYW1lc3BhY2VcbiAgICAgIH07XG5cbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kKHNjcmlwdCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvb2t1cEV4cG9zZWRNb2R1bGUoXG4gICAgcmVtb3RlTmFtZTogc3RyaW5nLFxuICAgIGV4cG9zZWRNb2R1bGU6IHN0cmluZ1xuICApOiBQcm9taXNlPHsgbmFtZTogc3RyaW5nOyBmYWN0b3J5OiBGYWN0b3J5IH0+IHtcbiAgICAvLyBJbml0aWFsaXplcyB0aGUgc2hhcmUgc2NvcGUuIFRoaXMgZmlsbHMgaXQgd2l0aCBrbm93biBwcm92aWRlZCBtb2R1bGVzIGZyb20gdGhpcyBidWlsZCBhbmQgYWxsIHJlbW90ZXNcbiAgICB0cnkge1xuICAgICAgYXdhaXQgX193ZWJwYWNrX2luaXRfc2hhcmluZ19fKCdkZWZhdWx0Jyk7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIGBNb2R1bGUgJXMgY291bGQgbm90IGJlIGxvYWRlZC4gTW9kdWxlIEZlZGVyYXRpb24gaXMgbm90IGVuYWJsZWQgaW4gdGhpcyBhcHBsaWNhdGlvbi5gLFxuICAgICAgICBleHBvc2VkTW9kdWxlLFxuICAgICAgICBleFxuICAgICAgKTtcbiAgICB9XG4gICAgbGV0IGNvbnRhaW5lcjogQ29udGFpbmVyID0gd2luZG93W3JlbW90ZU5hbWVdO1xuXG4gICAgLyoqXG4gICAgICogTVRNLTYwODUwOiBJbiBjYXNlIG9mIGUuZy4gdGhlIGNvY2twaXQgYXBwIGJlaW5nIGNsb25lZCB0byBhIGRpZmZlcmVudCBjb250ZXh0IHBhdGhcbiAgICAgKiB0aGUgc2VsZiBzY29wZWQgcGx1Z2lucyBvZiBjb2NrcGl0IHdpbGwgYmUgbG9hZGVkIGZyb20gdGhlIG5ldyBjb250ZXh0IHBhdGguXG4gICAgICogQnV0IHRoZSByZW1vdGVFbnRyeS5qcyB3aWxsIHN0aWxsIHJlZ2lzdGVyIHRoZSByZW1vdGVzIHdpdGggdGhlIG9yaWdpbmFsIGNvbnRleHQgcGF0aCxcbiAgICAgKiBhcyB0aGlzIGlzIGhhcmRjb2RlZCBkdXJpbmcgY29tcGlsZSB0aW1lLlxuICAgICAqXG4gICAgICogV2UgdGhlcmVmb3JlIGFkZCBhIGZhbGxiYWNrIHRvIHRoZSBvcmlnaW5hbCBjb250ZXh0IHBhdGggaW4gY2FzZSB0aGVyZSBpcyBubyBjb250YWluZXIgZm9yIHRoZSByZW1vdGVOYW1lXG4gICAgICovXG4gICAgaWYgKCFjb250YWluZXIpIHtcbiAgICAgIGNvbnN0IGZhbGxiYWNrUmVtb3RlTmFtZTogc3RyaW5nID0gY2FtZWxDYXNlKF9fT1JJR0lOQUxfQ09OVEVYVF9QQVRIX18pO1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgQXR0cmlidXRlIFwiJXNcIiBub3QgZGVmaW5lZCBvbiB3aW5kb3cgb2JqZWN0IHdoaWxlIHRyeWluZyB0byBsb2FkIFwiJXNcIi4gVXNpbmcgXCIlc1wiIGFzIGZhbGxiYWNrLmAsXG4gICAgICAgIHJlbW90ZU5hbWUsXG4gICAgICAgIGV4cG9zZWRNb2R1bGUsXG4gICAgICAgIGZhbGxiYWNrUmVtb3RlTmFtZVxuICAgICAgKTtcbiAgICAgIGNvbnRhaW5lciA9IHdpbmRvd1tmYWxsYmFja1JlbW90ZU5hbWVdO1xuICAgIH1cblxuICAgIC8vIEluaXRpYWxpemUgdGhlIGNvbnRhaW5lciwgaXQgbWF5IHByb3ZpZGUgc2hhcmVkIG1vZHVsZXNcbiAgICBsZXQgZmFjdG9yeTogRmFjdG9yeTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgY29udGFpbmVyLmluaXQoX193ZWJwYWNrX3NoYXJlX3Njb3Blc19fLmRlZmF1bHQpO1xuICAgICAgZmFjdG9yeSA9IChhd2FpdCBjb250YWluZXIuZ2V0KGV4cG9zZWRNb2R1bGUpKSgpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBNb2R1bGUgJXMgY291bGQgbm90IGJlIGxvYWRlZC5gLCBleHBvc2VkTW9kdWxlLCBleCk7XG4gICAgfVxuICAgIHJldHVybiB7IG5hbWU6IGV4cG9zZWRNb2R1bGUsIGZhY3RvcnkgfTtcbiAgfVxufVxuIl19
|
|
298
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy1yZXNvbHZlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3BsdWdpbnMvcGx1Z2lucy1yZXNvbHZlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFVBQVUsRUFDVixXQUFXLEVBQ1gsbUJBQW1CLEVBRW5CLGNBQWMsRUFHZixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBZ0J0QyxNQUFNLE9BQU8scUJBQXFCO0lBQ2hDOzs7Ozs7Ozs7Ozs7Ozs7OztPQWlCRztJQUNILE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBbUM7UUFDckQsT0FBTyxNQUFNLENBQ1gsT0FBTyxFQUNQLENBQUMsVUFBb0MsRUFBRSxRQUFrQyxFQUFFLEVBQUU7WUFDM0UsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLGFBQXVCLEVBQUUsaUJBQXlCLEVBQUUsRUFBRTtnQkFDdkUsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFDLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDOUQsVUFBVSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUN2RSxDQUFDLENBQUMsQ0FBQztZQUVILE9BQU8sVUFBVSxDQUFDO1FBQ3BCLENBQUMsRUFDRCxFQUFFLENBQ0gsQ0FB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Ozs7Ozs7V0FPRztRQUNILElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNmLE1BQU0sa0JBQWtCLEdBQVcsU0FBUyxDQUFDLHlCQUF5QixDQUFDLENBQUM7WUFDeEUsT0FBTyxDQUFDLElBQUksQ0FDVixnR0FBZ0csRUFDaEcsVUFBVSxFQUNWLGFBQWEsRUFDYixrQkFBa0IsQ0FDbkIsQ0FBQztZQUNGLFNBQVMsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBRUQsMERBQTBEO1FBQzFELElBQUksT0FBZ0IsQ0FBQztRQUNyQixJQUFJLENBQUM7WUFDSCxNQUFNLFNBQVMsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdkQsT0FBTyxHQUFHLENBQUMsTUFBTSxTQUFTLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNuRCxDQUFDO1FBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUNaLE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLEVBQUUsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7UUFDRCxPQUFPLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUMxQyxDQUFDOzhHQTdWVSxxQkFBcUI7a0hBQXJCLHFCQUFxQixjQUZwQixNQUFNOzsyRkFFUCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW5qZWN0YWJsZSxcbiAgTmdNb2R1bGVSZWYsXG4gIEVudmlyb25tZW50SW5qZWN0b3IsXG4gIFR5cGUsXG4gIGNyZWF0ZU5nTW9kdWxlLFxuICBJbmplY3RvcixcbiAgUHJvdmlkZXJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnMgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyByZWR1Y2UsIGZvckVhY2gsIGdldCwgdW5pb24sIGNhbWVsQ2FzZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHNoYXJlUmVwbGF5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3RhbmRhbG9uZVBsdWdpbkluamVjdG9yIH0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbnR5cGUgU2NvcGUgPSB1bmtub3duO1xudHlwZSBGYWN0b3J5ID0gKCkgPT4gYW55O1xuXG5kZWNsYXJlIGNvbnN0IF9fd2VicGFja19pbml0X3NoYXJpbmdfXzogKHNoYXJlU2NvcGU6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbmRlY2xhcmUgY29uc3QgX193ZWJwYWNrX3NoYXJlX3Njb3Blc19fOiB7IGRlZmF1bHQ6IFNjb3BlIH07XG5kZWNsYXJlIGNvbnN0IF9fT1JJR0lOQUxfQ09OVEVYVF9QQVRIX186IHN0cmluZztcblxuaW50ZXJmYWNlIENvbnRhaW5lciB7XG4gIGluaXQoc2hhcmVTY29wZTogU2NvcGUpOiB2b2lkO1xuICBnZXQobW9kdWxlOiBzdHJpbmcpOiBGYWN0b3J5O1xufVxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUGx1Z2luc1Jlc29sdmVTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIFRha2VzIGEgbGlzdCBvZiByZW1vdGVzIGFuZCB0dXJucyBpdCBpbnRvIGFuIG9iamVjdCBjb250YWluaW5nIHVuaW9uIG9mIGNvcnJlc3BvbmRpbmcgcmVtb3Rlcy5cbiAgICogQHBhcmFtIHJlbW90ZXMgTGlzdCBvZiB0aGUgcmVtb3Rlcy5cbiAgICogQHJldHVybnMgUmV0dXJucyBvYmplY3Qgd2l0aCBtZXJnZWQgcmVtb3Rlcy5cbiAgICpcbiAgICogKipFeGFtcGxlKipcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCByZW1vdGVzQTpBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnMgPSB7IGNvbnRleHRQYXRoQTogWydtb2R1bGVBJywgJ21vZHVsZUInXSB9O1xuICAgKiBjb25zdCByZW1vdGVzQjpBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnMgPSB7IGNvbnRleHRQYXRoQTogWydtb2R1bGVBJ10sIGNvbnRleHRQYXRoQjogWydtb2R1bGVaJ10gfTtcbiAgICogY29uc3QgbWVyZ2VkUmVtb3RlczpBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnMgPSBtZXJnZVJlbW90ZXMoW3JlbW90ZXNBLCByZW1vdGVzQl0pO1xuICAgKiAvLyBSZXN1bHRcbiAgICoge1xuICAgKiAgY29udGV4dFBhdGhBOiBbJ21vZHVsZUEnLCAnbW9kdWxlQiddLFxuICAgKiAgY29udGV4dFBhdGhCOiBbJ21vZHVsZVonXVxuICAgKiB9XG4gICAqXG4gICAqIGBgYFxuICAgKi9cbiAgc3RhdGljIG1lcmdlUmVtb3RlcyhyZW1vdGVzOiBBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnNbXSk6IEFwcGxpY2F0aW9uUmVtb3RlUGx1Z2lucyB7XG4gICAgcmV0dXJuIHJlZHVjZShcbiAgICAgIHJlbW90ZXMsXG4gICAgICAoYWxsUmVtb3RlczogQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zLCBtZlJlbW90ZTogQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zKSA9PiB7XG4gICAgICAgIGZvckVhY2gobWZSZW1vdGUsIChyZW1vdGVNb2R1bGVzOiBzdHJpbmdbXSwgcmVtb3RlQ29udGV4dFBhdGg6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRSZW1vdGVzID0gZ2V0KGFsbFJlbW90ZXMsIHJlbW90ZUNvbnRleHRQYXRoLCBbXSk7XG4gICAgICAgICAgYWxsUmVtb3Rlc1tyZW1vdGVDb250ZXh0UGF0aF0gPSB1bmlvbihjdXJyZW50UmVtb3RlcywgcmVtb3RlTW9kdWxlcyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBhbGxSZW1vdGVzO1xuICAgICAgfSxcbiAgICAgIHt9XG4gICAgKTtcbiAgfVxuXG4gIHN0YXRpYyByZW1vdmVSZW1vdGVzKFxuICAgIHJlbW90ZXNUb1JlbW92ZUZyb206IEFwcGxpY2F0aW9uUmVtb3RlUGx1Z2lucyxcbiAgICByZW1vdGVzVG9SZW1vdmU/OiBBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnNcbiAgKTogQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zIHtcbiAgICBjb25zdCBrZXlzVG9SZW1vdmUgPSBPYmplY3Qua2V5cyhyZW1vdGVzVG9SZW1vdmUgfHwge30pO1xuICAgIGlmICgha2V5c1RvUmVtb3ZlLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHJlbW90ZXNUb1JlbW92ZUZyb207XG4gICAgfVxuICAgIGNvbnN0IGN1cnJlbnRLZXlzID0gT2JqZWN0LmtleXMocmVtb3Rlc1RvUmVtb3ZlRnJvbSk7XG4gICAgY29uc3Qga2V5c1ByZXNlbnRJbkJvdGggPSBjdXJyZW50S2V5cy5maWx0ZXIoa2V5ID0+IGtleXNUb1JlbW92ZS5pbmNsdWRlcyhrZXkpKTtcbiAgICBpZiAoIWtleXNQcmVzZW50SW5Cb3RoLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHJlbW90ZXNUb1JlbW92ZUZyb207XG4gICAgfVxuICAgIHJlbW90ZXNUb1JlbW92ZUZyb20gPSBjbG9uZURlZXAocmVtb3Rlc1RvUmVtb3ZlRnJvbSk7XG4gICAgZm9yIChjb25zdCByZW1vdGVDb250ZXh0UGF0aCBvZiBrZXlzUHJlc2VudEluQm90aCkge1xuICAgICAgY29uc3QgcmVtb3RlTW9kdWxlc1RvQmVSZW1vdmVkID0gcmVtb3Rlc1RvUmVtb3ZlW3JlbW90ZUNvbnRleHRQYXRoXTtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShyZW1vdGVNb2R1bGVzVG9CZVJlbW92ZWQpIHx8ICFyZW1vdGVNb2R1bGVzVG9CZVJlbW92ZWQ/Lmxlbmd0aCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgbGV0IGN1cnJlbnRNb2R1bGVzID0gcmVtb3Rlc1RvUmVtb3ZlRnJvbVtyZW1vdGVDb250ZXh0UGF0aF07XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY3VycmVudE1vZHVsZXMpIHx8ICFjdXJyZW50TW9kdWxlcz8ubGVuZ3RoKSB7XG4gICAgICAgIGRlbGV0ZSByZW1vdGVzVG9SZW1vdmVGcm9tW3JlbW90ZUNvbnRleHRQYXRoXTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGN1cnJlbnRNb2R1bGVzID0gY3VycmVudE1vZHVsZXMuZmlsdGVyKG1vZHVsZSA9PiAhcmVtb3RlTW9kdWxlc1RvQmVSZW1vdmVkLmluY2x1ZGVzKG1vZHVsZSkpO1xuICAgICAgaWYgKGN1cnJlbnRNb2R1bGVzLmxlbmd0aCkge1xuICAgICAgICByZW1vdGVzVG9SZW1vdmVGcm9tW3JlbW90ZUNvbnRleHRQYXRoXSA9IGN1cnJlbnRNb2R1bGVzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVsZXRlIHJlbW90ZXNUb1JlbW92ZUZyb21bcmVtb3RlQ29udGV4dFBhdGhdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZW1vdGVzVG9SZW1vdmVGcm9tO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIGFsbCBpbmplY3RvcnMgb2YgYWxyZWFkeSBsb2FkZWQgcGx1Z2lucyBvbiBzdWJzY3JpcHRpb24uXG4gICAqL1xuICBpbmplY3RvcnMkOiBPYnNlcnZhYmxlPEVudmlyb25tZW50SW5qZWN0b3IgfCBJbmplY3Rvcj47XG4gIC8qKlxuICAgKiBFbWl0cyBvbmNlIHJlbW90ZVBsdWdpbnMgaGF2ZSBiZWVuIHJlc29sdmVkLlxuICAgKi9cbiAgcmVmcmVzaCQ6IE9ic2VydmFibGU8dm9pZD47XG4gIC8qKlxuICAgKiBFbWl0cyBhbGwgcGx1Z2luIGRldGFpbHMgb2YgYWxyZWFkeSBsb2FkZWQgcGx1Z2lucyBvbiBzdWJzY3JpcHRpb24uXG4gICAqL1xuICBwbHVnaW5EZXRhaWxzJDogT2JzZXJ2YWJsZTx7XG4gICAgcmVtb3RlTmdNb2R1bGU6IE5nTW9kdWxlUmVmPHVua25vd24+IHwgVHlwZTx1bmtub3duPjtcbiAgICBtb2R1bGVSZWY6IE5nTW9kdWxlUmVmPHVua25vd24+O1xuICB9PjtcbiAgYWxsUGx1Z2luc0xvYWRlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIGxvYWRlZFBsdWdpbk5hbWVzJDogT2JzZXJ2YWJsZTxzdHJpbmdbXT47XG4gIC8qKlxuICAgKiBFbWl0cyBhbGwgY29udGV4dFBhdGhzIChpbmNsdWRpbmcgdGhlIGNvcnJlc3BvbmRpbmcgdmVyc2lvbi90YWcsIGlmIHByb3ZpZGVkKSB0aGF0IGhhdmUgYmVlbiBhbHJlYWR5IGxvYWRlZCBvbiBzdGFydHVwIGFuZCBmdXJ0aGVyIGFueSBuZXdsb2FkIGxvYWRlZC5cbiAgICovXG4gIGNvbnRleHRQYXRoc0Zyb21XaGVyZVJlbW90ZXNIYXZlQmVlbkxvYWRlZCQ6IE9ic2VydmFibGU8c3RyaW5nW10+O1xuICBwcml2YXRlIHVybFJlbW90ZXNDYWNoZTogQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zID0gbnVsbDtcbiAgcHJpdmF0ZSByZW1vdGVTY3JpcHRTZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgcHJpdmF0ZSBfaW5qZWN0b3JzJCA9IG5ldyBTdWJqZWN0PEVudmlyb25tZW50SW5qZWN0b3IgfCBJbmplY3Rvcj4oKTtcbiAgcHJpdmF0ZSBfcmVmcmVzaCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIF9wbHVnaW5EZXRhaWxzJCA9IG5ldyBTdWJqZWN0PHtcbiAgICByZW1vdGVOZ01vZHVsZTogTmdNb2R1bGVSZWY8dW5rbm93bj4gfCBUeXBlPHVua25vd24+O1xuICAgIG1vZHVsZVJlZjogTmdNb2R1bGVSZWY8dW5rbm93bj47XG4gIH0+KCk7XG4gIHByaXZhdGUgX2FsbFBsdWdpbnNMb2FkZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgX2NvbnRleHRQYXRoc0Zyb21XaGVyZVJlbW90ZXNIYXZlQmVlbkxvYWRlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZ1tdPihbXSk7XG4gIHByaXZhdGUgX2xvYWRlZFBsdWdpbk5hbWVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nW10+KFtdKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBFbnZpcm9ubWVudEluamVjdG9yKSB7XG4gICAgdGhpcy5pbmplY3RvcnMkID0gdGhpcy5faW5qZWN0b3JzJC5hc09ic2VydmFibGUoKS5waXBlKFxuICAgICAgLy8gbm90IHNwZWNpZnlpbmcgdGhlIGJ1ZmZlclNpemUgb2Ygc2hhcmVSZXBsYXkgc28gYWxsIGluamVjdG9ycyBhcmUgcmVjZWl2ZWQgb24gc3Vic2NyaXB0aW9uXG4gICAgICBzaGFyZVJlcGxheSgpXG4gICAgKTtcbiAgICB0aGlzLnJlZnJlc2gkID0gdGhpcy5fcmVmcmVzaCQuYXNPYnNlcnZhYmxlKCkucGlwZShzaGFyZVJlcGxheSgxKSk7XG4gICAgdGhpcy5wbHVnaW5EZXRhaWxzJCA9IHRoaXMuX3BsdWdpbkRldGFpbHMkLmFzT2JzZXJ2YWJsZSgpLnBpcGUoXG4gICAgICAvLyBub3Qgc3BlY2lmeWluZyB0aGUgYnVmZmVyU2l6ZSBvZiBzaGFyZVJlcGxheSBzbyBhbGwgZGV0YWlscyBhcmUgcmVjZWl2ZWQgb24gc3Vic2NyaXB0aW9uXG4gICAgICBzaGFyZVJlcGxheSgpXG4gICAgKTtcbiAgICB0aGlzLmFsbFBsdWdpbnNMb2FkZWQkID0gdGhpcy5fYWxsUGx1Z2luc0xvYWRlZCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5jb250ZXh0UGF0aHNGcm9tV2hlcmVSZW1vdGVzSGF2ZUJlZW5Mb2FkZWQkID1cbiAgICAgIHRoaXMuX2NvbnRleHRQYXRoc0Zyb21XaGVyZVJlbW90ZXNIYXZlQmVlbkxvYWRlZCQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICB0aGlzLmxvYWRlZFBsdWdpbk5hbWVzJCA9IHRoaXMuX2xvYWRlZFBsdWdpbk5hbWVzJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyBwbHVnaW5zIGJ5IHJlc29sdmluZyB0aGUgcmVtb3RlIE5nTW9kdWxlcyBhbmQgaW5qZWN0aW5nIGl0LiBBbHNvIGF0dGFjaGluZ1xuICAgKiB0aGUgaG9va3Mgb250byB0aGUgcm9vdCBpbmplY3Rvci5cbiAgICogQHBhcmFtIHJlbW90ZU1vZHVsZXMgVGhlIHJlbW90ZSBwbHVnaW5zIHRvIGxvYWQgYXMgZmFjdG9yeSBuYW1lIG1hcHBpbmcgYXJyYXkuXG4gICAqL1xuICByZXNvbHZlUmVtb3RlUGx1Z2lucyhyZW1vdGVNb2R1bGVzOiBBcnJheTx7IGZhY3Rvcnk7IG5hbWU6IHN0cmluZyB9Pikge1xuICAgIHRoaXMubG9hZE1vZHVsZXNEeW5hbWljYWxseShyZW1vdGVNb2R1bGVzKTtcbiAgICB0aGlzLnJlZnJlc2hIb29rcygpO1xuICAgIHRoaXMubWFya1BsdWdpbnNBc0xvYWRlZCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWRzIG1vZHVsZXMgYW5kIGhhbmRsZXMgaG9va2luZyBjb3JyZWN0bHkuXG4gICAqIEBwYXJhbSByZW1vdGVOZ01vZHVsZXMgVGhlIG1vZHVsZXMgdG8gbG9hZC5cbiAgICovXG4gIGxvYWRNb2R1bGVzRHluYW1pY2FsbHkocmVtb3RlTW9kdWxlczogQXJyYXk8eyBmYWN0b3J5OyBuYW1lOiBzdHJpbmcgfT4pIHtcbiAgICBmb3IgKGNvbnN0IHsgZmFjdG9yeSwgbmFtZSB9IG9mIHJlbW90ZU1vZHVsZXMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IG1vZHVsZU9yUHJvdmlkZXJzID0gZmFjdG9yeVtuYW1lXTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobW9kdWxlT3JQcm92aWRlcnMpKSB7XG4gICAgICAgICAgdGhpcy5sb2FkUHJvdmlkZXJzKG1vZHVsZU9yUHJvdmlkZXJzLCBuYW1lKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmxvYWRNb2R1bGUobW9kdWxlT3JQcm92aWRlcnMpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld0xvYWRlZFBsdWdpbk5hbWVzID0gWy4uLnRoaXMuX2xvYWRlZFBsdWdpbk5hbWVzJC52YWx1ZSwgbmFtZV07XG4gICAgICAgIHRoaXMuX2xvYWRlZFBsdWdpbk5hbWVzJC5uZXh0KG5ld0xvYWRlZFBsdWdpbk5hbWVzKTtcbiAgICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBsb2FkICR7bmFtZX1gLCBleCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbG9hZFByb3ZpZGVycyhwcm92aWRlcnM6IFByb3ZpZGVyW10sIG5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGluamVjdG9yID0gbmV3IFN0YW5kYWxvbmVQbHVnaW5JbmplY3Rvcih7XG4gICAgICBwcm92aWRlcnM6IHByb3ZpZGVycyxcbiAgICAgIG5hbWU6IGBwbHVnaW5zSW5qZWN0b3ItJHtuYW1lfWAsXG4gICAgICBwYXJlbnQ6IHRoaXMuaW5qZWN0b3JcbiAgICB9KTtcbiAgICB0aGlzLl9pbmplY3RvcnMkLm5leHQoaW5qZWN0b3IpO1xuICB9XG5cbiAgbG9hZE1vZHVsZTxUID0gdW5rbm93bj4ocmVtb3RlTmdNb2R1bGU6IE5nTW9kdWxlUmVmPFQ+IHwgVHlwZTxUPikge1xuICAgIGxldCBtb2R1bGVSZWY6IE5nTW9kdWxlUmVmPFQ+O1xuICAgIGlmIChyZW1vdGVOZ01vZHVsZSBpbnN0YW5jZW9mIE5nTW9kdWxlUmVmKSB7XG4gICAgICAvLyBBT1RcbiAgICAgIG1vZHVsZVJlZiA9IHJlbW90ZU5nTW9kdWxlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBKSVRcbiAgICAgIG1vZHVsZVJlZiA9IGNyZWF0ZU5nTW9kdWxlKHJlbW90ZU5nTW9kdWxlLCB0aGlzLmluamVjdG9yKTtcbiAgICB9XG4gICAgdGhpcy5faW5qZWN0b3JzJC5uZXh0KG1vZHVsZVJlZi5pbmplY3Rvcik7XG4gICAgdGhpcy5fcGx1Z2luRGV0YWlscyQubmV4dCh7IG1vZHVsZVJlZiwgcmVtb3RlTmdNb2R1bGUgfSk7XG4gICAgcmV0dXJuIG1vZHVsZVJlZjtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaWxsIHJlZnJlc2ggYWxsIGN1cnJlbnQgcmVnaXN0ZXJlZCBob29rcy5cbiAgICovXG4gIHJlZnJlc2hIb29rcygpIHtcbiAgICB0aGlzLl9yZWZyZXNoJC5uZXh0KCk7XG4gIH1cblxuICBtYXJrUGx1Z2luc0FzTG9hZGVkKCkge1xuICAgIHRoaXMuX2FsbFBsdWdpbnNMb2FkZWQkLm5leHQodHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgYSBsaXN0IG9mIHJlbW90ZXMgc28gdGhhdCBhIHBhcnRpY3VsYXIgYXBwbGljYXRpb24gY2FuIHVzZSB0aGVtLlxuICAgKiBUaGUgcmVxdWVzdCBpcyBtYWRlIHRvIHRoZSBmb2xsb3dpbmcgYWRkcmVzczogL2FwcHMvPGNvbnRleHRQYXRoPi9yZW1vdGVFbnRyeS5qc1xuICAgKiBAcGFyYW0gcmVtb3RlcyBMaXN0IG9mIHJlbW90ZXMgdG8gYmUgbG9hZGVkLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHRoZSBsaXN0IG9mIGxvYWRlZCBtb2R1bGVzIGZyb20gcmVtb3Rlcy5cbiAgICovXG4gIGFzeW5jIGxvYWRSZW1vdGVzKHJlbW90ZXM6IEFwcGxpY2F0aW9uUmVtb3RlUGx1Z2lucykge1xuICAgIGlmICghcmVtb3Rlcykge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCByZW1vdGVNb2R1bGVzID0gW107XG4gICAgZm9yIChjb25zdCBwbHVnaW5JZCBpbiByZW1vdGVzKSB7XG4gICAgICBpZiAocmVtb3Rlcy5oYXNPd25Qcm9wZXJ0eShwbHVnaW5JZCkpIHtcbiAgICAgICAgY29uc3QgbW9kdWxlTmFtZXMgPSByZW1vdGVzW3BsdWdpbklkXTtcbiAgICAgICAgY29uc3QgdXJsID0gYC9hcHBzLyR7cGx1Z2luSWR9L3JlbW90ZUVudHJ5LmpzP25vY2FjaGU9JHtkYXRlLmdldFRpbWUoKX1gO1xuICAgICAgICBsZXQgYXRMZWFzdE9uZU1vZHVsZUxvYWRlZFN1Y2Nlc3NmdWxseSA9IGZhbHNlO1xuICAgICAgICBmb3IgKGNvbnN0IG1vZHVsZU5hbWUgb2YgbW9kdWxlTmFtZXMpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmVtb3RlTW9kdWxlcy5wdXNoKGF3YWl0IHRoaXMubG9hZFJlbW90ZU1vZHVsZSh1cmwsIHBsdWdpbklkLCBtb2R1bGVOYW1lKSk7XG4gICAgICAgICAgICBhdExlYXN0T25lTW9kdWxlTG9hZGVkU3VjY2Vzc2Z1bGx5ID0gdHJ1ZTtcbiAgICAgICAgICB9IGNhdGNoIChleCkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBDb3VsZCBub3QgbG9hZCByZW1vdGUgbW9kdWxlICclcycgZnJvbSB1cmw6YCwgbW9kdWxlTmFtZSwgdXJsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPbmx5IGFkZCBzdWNjZXNzZnVsbHkgbG9hZGVkIHJlbW90ZXMgdG8gdGhlIGxpc3RcbiAgICAgICAgaWYgKGF0TGVhc3RPbmVNb2R1bGVMb2FkZWRTdWNjZXNzZnVsbHkpIHtcbiAgICAgICAgICB0aGlzLl9jb250ZXh0UGF0aHNGcm9tV2hlcmVSZW1vdGVzSGF2ZUJlZW5Mb2FkZWQkLm5leHQoXG4gICAgICAgICAgICB0aGlzLl9jb250ZXh0UGF0aHNGcm9tV2hlcmVSZW1vdGVzSGF2ZUJlZW5Mb2FkZWQkLnZhbHVlLmNvbmNhdChwbHVnaW5JZClcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZW1vdGVNb2R1bGVzO1xuICB9XG5cbiAgLyoqXG4gICAqIFRha2VzIGEgbGlzdCBvZiByZW1vdGVzIGFuZCB0dXJucyBpdCBpbnRvIGFuIG9iamVjdCBjb250YWluaW5nIHVuaW9uIG9mIGNvcnJlc3BvbmRpbmcgcmVtb3Rlcy5cbiAgICogQHBhcmFtIG1mUmVtb3RlcyBMaXN0IG9mIHRoZSByZW1vdGVzLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIG9iamVjdCB3aXRoIG1lcmdlZCByZW1vdGVzLlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgdGhlIHN0YXRpYyBmdW5jdGlvbiBtZXJnZVJlbW90ZXMgYXMgdGhpcyBpcyBhIHB1cmUgZnVuY3Rpb24uXG4gICAqXG4gICAqICoqRXhhbXBsZSoqXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgcmVtb3Rlc0E6QXBwbGljYXRpb25SZW1vdGVQbHVnaW5zID0geyBjb250ZXh0UGF0aEE6IFsnbW9kdWxlQScsICdtb2R1bGVCJ10gfTtcbiAgICogY29uc3QgcmVtb3Rlc0I6QXBwbGljYXRpb25SZW1vdGVQbHVnaW5zID0geyBjb250ZXh0UGF0aEE6IFsnbW9kdWxlQSddLCBjb250ZXh0UGF0aEI6IFsnbW9kdWxlWiddIH07XG4gICAqIGNvbnN0IG1lcmdlZFJlbW90ZXM6QXBwbGljYXRpb25SZW1vdGVQbHVnaW5zID0gbWVyZ2VNRlJlbW90ZXMoW3JlbW90ZXNBLCByZW1vdGVzQl0pO1xuICAgKiAvLyBSZXN1bHRcbiAgICoge1xuICAgKiAgY29udGV4dFBhdGhBOiBbJ21vZHVsZUEnLCAnbW9kdWxlQiddLFxuICAgKiAgY29udGV4dFBhdGhCOiBbJ21vZHVsZVonXVxuICAgKiB9XG4gICAqXG4gICAqIGBgYFxuICAgKi9cbiAgbWVyZ2VNRlJlbW90ZXMobWZSZW1vdGVzOiBBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnNbXSk6IEFwcGxpY2F0aW9uUmVtb3RlUGx1Z2lucyB7XG4gICAgcmV0dXJuIFBsdWdpbnNSZXNvbHZlU2VydmljZS5tZXJnZVJlbW90ZXMobWZSZW1vdGVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgVVJMIHJlbW90ZXMgY2FjaGUuXG4gICAqL1xuICBjbGVhclVSTFJlbW90ZXNDYWNoZSgpIHtcbiAgICB0aGlzLnVybFJlbW90ZXNDYWNoZSA9IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSByZW1vdGVzIGxpc3QgZnJvbSB0aGUgVVJMLlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHRoZSBsaXN0IG9mIHJlbW90ZXMuXG4gICAqL1xuICBsb2FkVXJsUmVtb3RlcygpIHtcbiAgICBpZiAoIXRoaXMudXJsUmVtb3Rlc0NhY2hlKSB7XG4gICAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xuICAgICAgY29uc3QgcmVtb3RlcyA9IHBhcmFtcy5nZXQoJ3JlbW90ZXMnKTtcbiAgICAgIGlmIChyZW1vdGVzKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdGhpcy51cmxSZW1vdGVzQ2FjaGUgPSBKU09OLnBhcnNlKGRlY29kZVVSSUNvbXBvbmVudChyZW1vdGVzKSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKGBGYWlsZWQgdG8gcGFyc2UgcmVtb3RlczogJHtlcnJvcn1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy51cmxSZW1vdGVzQ2FjaGU7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWRSZW1vdGVNb2R1bGUoXG4gICAgcmVtb3RlRW50cnlVcmw6IHN0cmluZyxcbiAgICByZW1vdGVDb250ZXh0UGF0aDogc3RyaW5nLFxuICAgIGV4cG9zZWRNb2R1bGU6IHN0cmluZ1xuICApOiBQcm9taXNlPHsgbmFtZTogc3RyaW5nOyBmYWN0b3J5OiBGYWN0b3J5IH0+IHtcbiAgICBpZiAoIXRoaXMucmVtb3RlU2NyaXB0U2V0LmhhcyhyZW1vdGVFbnRyeVVybCkpIHtcbiAgICAgIHRoaXMucmVtb3RlU2NyaXB0U2V0LmFkZChyZW1vdGVFbnRyeVVybCk7XG4gICAgICBhd2FpdCB0aGlzLmxvYWRSZW1vdGVFbnRyeShyZW1vdGVFbnRyeVVybCk7XG4gICAgfVxuICAgIGxldCBjb250ZXh0UGF0aDogc3RyaW5nID0gcmVtb3RlQ29udGV4dFBhdGg7XG4gICAgaWYgKGNvbnRleHRQYXRoLmluY2x1ZGVzKCdAJykpIHtcbiAgICAgIGNvbnRleHRQYXRoID0gcmVtb3RlQ29udGV4dFBhdGguc3BsaXQoJ0AnKVswXTtcbiAgICB9XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMubG9va3VwRXhwb3NlZE1vZHVsZShjYW1lbENhc2UoY29udGV4dFBhdGgpLCBleHBvc2VkTW9kdWxlKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZFJlbW90ZUVudHJ5KHJlbW90ZUVudHJ5VXJsOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3Qgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gICAgICBzY3JpcHQuc3JjID0gcmVtb3RlRW50cnlVcmw7XG5cbiAgICAgIHNjcmlwdC5vbmVycm9yID0gcmVqZWN0O1xuXG4gICAgICBzY3JpcHQub25sb2FkID0gKCkgPT4ge1xuICAgICAgICByZXNvbHZlKCk7IC8vIHdpbmRvdyBpcyB0aGUgZ2xvYmFsIG5hbWVzcGFjZVxuICAgICAgfTtcblxuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmQoc2NyaXB0KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9va3VwRXhwb3NlZE1vZHVsZShcbiAgICByZW1vdGVOYW1lOiBzdHJpbmcsXG4gICAgZXhwb3NlZE1vZHVsZTogc3RyaW5nXG4gICk6IFByb21pc2U8eyBuYW1lOiBzdHJpbmc7IGZhY3Rvcnk6IEZhY3RvcnkgfT4ge1xuICAgIC8vIEluaXRpYWxpemVzIHRoZSBzaGFyZSBzY29wZS4gVGhpcyBmaWxscyBpdCB3aXRoIGtub3duIHByb3ZpZGVkIG1vZHVsZXMgZnJvbSB0aGlzIGJ1aWxkIGFuZCBhbGwgcmVtb3Rlc1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBfX3dlYnBhY2tfaW5pdF9zaGFyaW5nX18oJ2RlZmF1bHQnKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYE1vZHVsZSAlcyBjb3VsZCBub3QgYmUgbG9hZGVkLiBNb2R1bGUgRmVkZXJhdGlvbiBpcyBub3QgZW5hYmxlZCBpbiB0aGlzIGFwcGxpY2F0aW9uLmAsXG4gICAgICAgIGV4cG9zZWRNb2R1bGUsXG4gICAgICAgIGV4XG4gICAgICApO1xuICAgIH1cbiAgICBsZXQgY29udGFpbmVyOiBDb250YWluZXIgPSB3aW5kb3dbcmVtb3RlTmFtZV07XG5cbiAgICAvKipcbiAgICAgKiBNVE0tNjA4NTA6IEluIGNhc2Ugb2YgZS5nLiB0aGUgY29ja3BpdCBhcHAgYmVpbmcgY2xvbmVkIHRvIGEgZGlmZmVyZW50IGNvbnRleHQgcGF0aFxuICAgICAqIHRoZSBzZWxmIHNjb3BlZCBwbHVnaW5zIG9mIGNvY2twaXQgd2lsbCBiZSBsb2FkZWQgZnJvbSB0aGUgbmV3IGNvbnRleHQgcGF0aC5cbiAgICAgKiBCdXQgdGhlIHJlbW90ZUVudHJ5LmpzIHdpbGwgc3RpbGwgcmVnaXN0ZXIgdGhlIHJlbW90ZXMgd2l0aCB0aGUgb3JpZ2luYWwgY29udGV4dCBwYXRoLFxuICAgICAqIGFzIHRoaXMgaXMgaGFyZGNvZGVkIGR1cmluZyBjb21waWxlIHRpbWUuXG4gICAgICpcbiAgICAgKiBXZSB0aGVyZWZvcmUgYWRkIGEgZmFsbGJhY2sgdG8gdGhlIG9yaWdpbmFsIGNvbnRleHQgcGF0aCBpbiBjYXNlIHRoZXJlIGlzIG5vIGNvbnRhaW5lciBmb3IgdGhlIHJlbW90ZU5hbWVcbiAgICAgKi9cbiAgICBpZiAoIWNvbnRhaW5lcikge1xuICAgICAgY29uc3QgZmFsbGJhY2tSZW1vdGVOYW1lOiBzdHJpbmcgPSBjYW1lbENhc2UoX19PUklHSU5BTF9DT05URVhUX1BBVEhfXyk7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBBdHRyaWJ1dGUgXCIlc1wiIG5vdCBkZWZpbmVkIG9uIHdpbmRvdyBvYmplY3Qgd2hpbGUgdHJ5aW5nIHRvIGxvYWQgXCIlc1wiLiBVc2luZyBcIiVzXCIgYXMgZmFsbGJhY2suYCxcbiAgICAgICAgcmVtb3RlTmFtZSxcbiAgICAgICAgZXhwb3NlZE1vZHVsZSxcbiAgICAgICAgZmFsbGJhY2tSZW1vdGVOYW1lXG4gICAgICApO1xuICAgICAgY29udGFpbmVyID0gd2luZG93W2ZhbGxiYWNrUmVtb3RlTmFtZV07XG4gICAgfVxuXG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgY29udGFpbmVyLCBpdCBtYXkgcHJvdmlkZSBzaGFyZWQgbW9kdWxlc1xuICAgIGxldCBmYWN0b3J5OiBGYWN0b3J5O1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBjb250YWluZXIuaW5pdChfX3dlYnBhY2tfc2hhcmVfc2NvcGVzX18uZGVmYXVsdCk7XG4gICAgICBmYWN0b3J5ID0gKGF3YWl0IGNvbnRhaW5lci5nZXQoZXhwb3NlZE1vZHVsZSkpKCk7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYE1vZHVsZSAlcyBjb3VsZCBub3QgYmUgbG9hZGVkLmAsIGV4cG9zZWRNb2R1bGUsIGV4KTtcbiAgICB9XG4gICAgcmV0dXJuIHsgbmFtZTogZXhwb3NlZE1vZHVsZSwgZmFjdG9yeSB9O1xuICB9XG59XG4iXX0=
|