@c8y/ngx-components 1021.71.3 → 1021.73.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/branding/shared/lazy/branding/branding.component.d.ts.map +1 -1
  2. package/core/beta-feature/beta-preview.component.d.ts +0 -1
  3. package/core/beta-feature/beta-preview.component.d.ts.map +1 -1
  4. package/core/beta-feature/beta-preview.service.d.ts +1 -1
  5. package/core/beta-feature/beta-preview.service.d.ts.map +1 -1
  6. package/core/common/ApplicationOptions.d.ts +4 -1
  7. package/core/common/ApplicationOptions.d.ts.map +1 -1
  8. package/esm2022/branding/shared/lazy/branding/branding.component.mjs +4 -5
  9. package/esm2022/core/beta-feature/beta-preview.component.mjs +1 -3
  10. package/esm2022/core/beta-feature/beta-preview.service.mjs +10 -6
  11. package/esm2022/core/common/ApplicationOptions.mjs +1 -1
  12. package/esm2022/datapoint-explorer/view/datapoint-explorer.component.mjs +3 -3
  13. package/esm2022/datapoint-selector/datapoint-selector.component.mjs +3 -3
  14. package/esm2022/ecosystem/packages/package-versions/packages-versions.component.mjs +3 -3
  15. package/esm2022/messaging-management/messaging-management.module.mjs +21 -5
  16. package/esm2022/register-device/general/general-device-registration.component.mjs +3 -3
  17. package/esm2022/register-device/general/general-device-registration.service.mjs +2 -2
  18. package/esm2022/trusted-certificates/list/trusted-certificate-list.component.mjs +6 -3
  19. package/esm2022/widgets/implementations/datapoints-graph/datapoints-graph-config/datapoints-graph-widget-config.component.mjs +3 -3
  20. package/esm2022/widgets/implementations/datapoints-graph/datapoints-graph-view/datapoints-graph-widget-view.component.mjs +3 -3
  21. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +3 -4
  22. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs.map +1 -1
  23. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +2 -2
  24. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs.map +1 -1
  25. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +2 -2
  26. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  27. package/fesm2022/c8y-ngx-components-ecosystem.mjs +2 -2
  28. package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
  29. package/fesm2022/c8y-ngx-components-messaging-management.mjs +19 -3
  30. package/fesm2022/c8y-ngx-components-messaging-management.mjs.map +1 -1
  31. package/fesm2022/c8y-ngx-components-register-device.mjs +3 -3
  32. package/fesm2022/c8y-ngx-components-register-device.mjs.map +1 -1
  33. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +5 -2
  34. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
  35. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +4 -4
  36. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs.map +1 -1
  37. package/fesm2022/c8y-ngx-components.mjs +9 -6
  38. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  39. package/locales/de.po +314 -41
  40. package/locales/es.po +315 -42
  41. package/locales/fr.po +315 -42
  42. package/locales/ja_JP.po +308 -47
  43. package/locales/ko.po +314 -42
  44. package/locales/locales.pot +305 -31
  45. package/locales/nl.po +312 -40
  46. package/locales/pl.po +315 -42
  47. package/locales/pt_BR.po +312 -39
  48. package/locales/zh_CN.po +312 -40
  49. package/locales/zh_TW.po +313 -42
  50. package/messaging-management/messaging-management.module.d.ts.map +1 -1
  51. package/package.json +1 -1
  52. package/trusted-certificates/list/trusted-certificate-list.component.d.ts.map +1 -1
@@ -159,7 +159,7 @@ export class DatapointSelectorComponent {
159
159
  multi: true,
160
160
  useExisting: forwardRef(() => DatapointSelectorComponent)
161
161
  }
162
- ], ngImport: i0, template: "<div\n class=\"d-grid grid__row--1 fit-h\"\n [ngClass]=\"{\n 'grid__col--3-6-3--md': allowChangingContext && !hideSelection,\n 'grid__col--8-4--md': !allowChangingContext && !hideSelection,\n 'grid__col--4-8--md': allowChangingContext && hideSelection\n }\"\n>\n <div class=\"d-flex d-col p-relative bg-level-1\" *ngIf=\"allowChangingContext\">\n <c8y-asset-selector-miller\n class=\"d-contents\"\n [(ngModel)]=\"contextAsset\"\n [asset]=\"contextAsset\"\n (onSelected)=\"selectionChanged($event)\"\n [container]=\"''\"\n [config]=\"{\n view: 'miller',\n groupsSelectable: true,\n columnHeaders: true,\n showChildDevices: true,\n showUnassignedDevices: true,\n singleColumn: true,\n search: allowSearch,\n showFilter: true\n }\"\n ></c8y-asset-selector-miller>\n </div>\n <!-- center column -->\n <div class=\"inner-scroll bg-component\">\n <ng-template #noDeviceEmptyState>\n <div class=\"p-16\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"emptyStateTitle | translate\"\n [subtitle]=\"'Select an asset from the list.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n </ng-template>\n <ng-template #loadingData>\n <div class=\"p-16 text-center\">\n <c8y-loading></c8y-loading>\n </div>\n </ng-template>\n <div class=\"bg-inherit\" *ngIf=\"assetSelection | async as asset; else noDeviceEmptyState\">\n <div class=\"p-l-16 p-r-16 p-t-8 p-b-8 sticky-top bg-inherit separator-bottom\">\n <p\n class=\"text-medium text-truncate\"\n [title]=\"selectorTitle | translate\"\n >\n {{ selectorTitle | translate }}\n </p>\n <div class=\"input-group input-group-search m-t-4\" id=\"search\" *ngIf=\"!loadingDatapoints\">\n <input\n class=\"form-control\"\n type=\"search\"\n placeholder=\"Search\u2026\"\n [ngModel]=\"searchString\"\n (ngModelChange)=\"searchStringChanged($event)\"\n />\n <span class=\"input-group-addon\">\n <i c8yIcon=\"search\" *ngIf=\"!searchString; else clearSearchString\"></i>\n <ng-template #clearSearchString>\n <i class=\"text-muted\" c8yIcon=\"times\" (click)=\"searchStringChanged()\"></i>\n </ng-template>\n </span>\n </div>\n </div>\n <ng-container *ngIf=\"filteredDatapoints$ | async as filteredDatapoints; else loadingData\">\n <ng-container *ngIf=\"!loadingDatapoints; else loadingData\">\n <ng-container *ngIf=\"datapoints$ | async as datapoints\">\n <div class=\"p-16\" *ngIf=\"!filteredDatapoints.length\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"emptyStateTitle | translate\"\n [subtitle]=\"\n datapoints.length\n ? (emptyStateSubtitleWhenNoMatchingDataPoints | translate)\n : (emptyStateSubtitleWhenNoDataPointsInAsset | translate)\n \"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n\n <c8y-list-group>\n <c8y-list-item\n class=\"sticky-top\"\n style=\"top: 72px\"\n *ngIf=\"\n datapoints.length > maxNumberOfDatapoints &&\n filteredDatapoints.length >= maxNumberOfDatapoints\n \"\n >\n <div class=\"alert alert-warning m-b-0\">\n {{\n 'Due to the large number, only a subset of data points is displayed. Use search to narrow down the number of results.'\n | translate\n }}\n </div>\n </c8y-list-item>\n <c8y-datapoint-selector-list-item\n class=\"d-contents\"\n [ngModel]=\"dp\"\n [isSelected]=\"selectedDatapoints | includesDatapoint: dp\"\n [datapointLibraryEntries]=\"datapointLibraryEntries\"\n [disableTypeaheadIfSelected]=\"true\"\n [addButtonType]=\"hideSelection ? AddButtonTypes.select : AddButtonTypes.addRemove\"\n (added)=\"datapointAdded($event)\"\n (removed)=\"datapointRemoved($event)\"\n [highlightText]=\"searchStringChanges$ | async\"\n *ngFor=\"let dp of filteredDatapoints; trackBy: trackByFn\"\n [editable]=\"itemsEditable\"\n ></c8y-datapoint-selector-list-item>\n </c8y-list-group>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n <!-- last column -->\n <div class=\"inner-scroll bg-level-1\" *ngIf=\"!hideSelection\">\n <p class=\"text-medium p-l-16 p-r-16 p-t-8 p-b-8 separator-bottom sticky-top text-truncate\"\n [title]=\"selectedListTitle | translate\" translate>{{ selectedListTitle }}</p>\n <div\n class=\"d-flex flex-wrap gap-8 p-l-16 p-r-16 p-t-8 p-b-16\"\n *ngIf=\"selectedDatapoints?.length\"\n >\n <div class=\"c8y-datapoint-pill\" *ngFor=\"let selectedDp of selectedDatapoints\">\n <button\n class=\"c8y-datapoint-pill__btn\"\n type=\"button\"\n [title]=\"'Remove' | translate\"\n (click)=\"datapointRemoved(selectedDp)\"\n >\n <i class=\"icon-14\" c8yIcon=\"remove\"></i>\n </button>\n <div\n class=\"c8y-datapoint-pill__label\"\n [title]=\"selectedDp | datapointLabel: { doNotUseLabel: true, includeDevice: true }\"\n >\n <i class=\"m-r-4 icon-14\" c8yIcon=\"circle\" [style.color]=\"selectedDp.color\"></i>\n <span class=\"text-truncate\">\n <span class=\"text-truncate\">{{ selectedDp | datapointLabel }}</span>\n <small class=\"text-muted text-10\" *ngIf=\"selectedDp?.__target?.name\">\n {{ selectedDp?.__target?.name }}\n </small>\n </span>\n </div>\n </div>\n </div>\n <div class=\"p-r-8\" *ngIf=\"!selectedDatapoints || !selectedDatapoints.length\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"emptyStateTitle | translate\"\n [subtitle]=\"\n 'Select the asset, then on the available data points list, click on the plus button on the desired data point.'\n | translate\n \"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i2.MillerViewComponent, selector: "c8y-asset-selector-miller", inputs: ["config", "asset", "selectedDevice", "rootNode", "container"], outputs: ["onSelected", "onClearSelected"] }, { kind: "component", type: i3.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i3.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i6.DatapointSelectorListItemComponent, selector: "c8y-datapoint-selector-list-item", inputs: ["defaultFormOptions", "isSelected", "isCollapsed", "addButtonType", "editable", "showActiveToggle", "activeToggleDisabled", "showOptions", "datapointLibraryEntries", "actions", "optionToRemove", "hasUnlinkTemplateOption", "colorPickerDisabled", "disableTypeaheadIfSelected", "highlightText"], outputs: ["added", "removed"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.IncludesDatapointPipe, name: "includesDatapoint" }, { kind: "pipe", type: i8.DatapointLabelPipe, name: "datapointLabel" }] }); }
162
+ ], ngImport: i0, template: "<div\n class=\"d-grid grid__row--1 fit-h\"\n [ngClass]=\"{\n 'grid__col--3-6-3--md': allowChangingContext && !hideSelection,\n 'grid__col--8-4--md': !allowChangingContext && !hideSelection,\n 'grid__col--4-8--md': allowChangingContext && hideSelection\n }\"\n>\n <div\n class=\"d-flex d-col p-relative bg-level-1\"\n *ngIf=\"allowChangingContext\"\n >\n <c8y-asset-selector-miller\n class=\"d-contents\"\n [(ngModel)]=\"contextAsset\"\n [asset]=\"contextAsset\"\n (onSelected)=\"selectionChanged($event)\"\n [container]=\"''\"\n [config]=\"{\n view: 'miller',\n groupsSelectable: true,\n columnHeaders: true,\n showChildDevices: true,\n showUnassignedDevices: true,\n singleColumn: true,\n search: allowSearch,\n showFilter: true\n }\"\n ></c8y-asset-selector-miller>\n </div>\n <!-- center column -->\n <div class=\"inner-scroll bg-component\">\n <ng-template #noDeviceEmptyState>\n <div class=\"p-16\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"emptyStateTitle | translate\"\n [subtitle]=\"'Select an asset from the list.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n </ng-template>\n <ng-template #loadingData>\n <div class=\"p-16 text-center\">\n <c8y-loading></c8y-loading>\n </div>\n </ng-template>\n <div\n class=\"bg-inherit\"\n *ngIf=\"assetSelection | async as asset; else noDeviceEmptyState\"\n >\n <div class=\"p-l-16 p-r-16 p-t-8 p-b-8 sticky-top bg-inherit separator-bottom\">\n <p\n class=\"text-medium text-truncate\"\n [title]=\"selectorTitle | translate\"\n >\n {{ selectorTitle | translate }}\n </p>\n <div\n class=\"input-group input-group-search m-t-4\"\n id=\"search\"\n *ngIf=\"!loadingDatapoints\"\n >\n <input\n class=\"form-control\"\n placeholder=\"Search\u2026\"\n type=\"search\"\n [ngModel]=\"searchString\"\n (ngModelChange)=\"searchStringChanged($event)\"\n />\n <span class=\"input-group-addon\">\n <i\n c8yIcon=\"search\"\n *ngIf=\"!searchString; else clearSearchString\"\n ></i>\n <ng-template #clearSearchString>\n <i\n class=\"text-muted\"\n c8yIcon=\"times\"\n (click)=\"searchStringChanged()\"\n ></i>\n </ng-template>\n </span>\n </div>\n </div>\n <ng-container *ngIf=\"filteredDatapoints$ | async as filteredDatapoints; else loadingData\">\n <ng-container *ngIf=\"!loadingDatapoints; else loadingData\">\n <ng-container *ngIf=\"datapoints$ | async as datapoints\">\n <div\n class=\"p-16\"\n *ngIf=\"!filteredDatapoints.length\"\n >\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"emptyStateTitle | translate\"\n [subtitle]=\"\n datapoints.length\n ? (emptyStateSubtitleWhenNoMatchingDataPoints | translate)\n : (emptyStateSubtitleWhenNoDataPointsInAsset | translate)\n \"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n\n <c8y-list-group>\n <c8y-list-item\n class=\"sticky-top\"\n style=\"top: 72px\"\n *ngIf=\"\n datapoints.length > maxNumberOfDatapoints &&\n filteredDatapoints.length >= maxNumberOfDatapoints\n \"\n >\n <div class=\"alert alert-warning m-b-0\">\n {{\n 'Due to the large number, only a subset of data points is displayed. Use search to narrow down the number of results.'\n | translate\n }}\n </div>\n </c8y-list-item>\n <c8y-datapoint-selector-list-item\n class=\"d-contents\"\n [ngModel]=\"dp\"\n [isSelected]=\"selectedDatapoints | includesDatapoint: dp\"\n [datapointLibraryEntries]=\"datapointLibraryEntries\"\n [disableTypeaheadIfSelected]=\"true\"\n [addButtonType]=\"hideSelection ? AddButtonTypes.select : AddButtonTypes.addRemove\"\n (added)=\"datapointAdded($event)\"\n (removed)=\"datapointRemoved($event)\"\n [highlightText]=\"searchStringChanges$ | async\"\n *ngFor=\"let dp of filteredDatapoints; trackBy: trackByFn\"\n [editable]=\"itemsEditable\"\n ></c8y-datapoint-selector-list-item>\n </c8y-list-group>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n <!-- last column -->\n <div\n class=\"inner-scroll bg-level-1\"\n *ngIf=\"!hideSelection\"\n >\n <p\n class=\"text-medium p-l-16 p-r-16 p-t-8 p-b-8 separator-bottom sticky-top text-truncate\"\n [title]=\"selectedListTitle | translate\"\n >\n {{ selectedListTitle | translate }}\n </p>\n <div\n class=\"d-flex flex-wrap gap-8 p-l-16 p-r-16 p-t-8 p-b-16\"\n *ngIf=\"selectedDatapoints?.length\"\n >\n <div\n class=\"c8y-datapoint-pill\"\n *ngFor=\"let selectedDp of selectedDatapoints\"\n >\n <button\n class=\"c8y-datapoint-pill__btn\"\n [title]=\"'Remove' | translate\"\n type=\"button\"\n (click)=\"datapointRemoved(selectedDp)\"\n >\n <i\n class=\"icon-14\"\n c8yIcon=\"remove\"\n ></i>\n </button>\n <div\n class=\"c8y-datapoint-pill__label\"\n [title]=\"selectedDp | datapointLabel: { doNotUseLabel: true, includeDevice: true }\"\n >\n <i\n class=\"m-r-4 icon-14\"\n c8yIcon=\"circle\"\n [style.color]=\"selectedDp.color\"\n ></i>\n <span class=\"text-truncate\">\n <span class=\"text-truncate\">{{ selectedDp | datapointLabel }}</span>\n <small\n class=\"text-muted text-10\"\n *ngIf=\"selectedDp?.__target?.name\"\n >\n {{ selectedDp?.__target?.name }}\n </small>\n </span>\n </div>\n </div>\n </div>\n <div\n class=\"p-r-8\"\n *ngIf=\"!selectedDatapoints || !selectedDatapoints.length\"\n >\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"emptyStateTitle | translate\"\n [subtitle]=\"\n 'Select the asset, then on the available data points list, click on the plus button on the desired data point.'\n | translate\n \"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i2.MillerViewComponent, selector: "c8y-asset-selector-miller", inputs: ["config", "asset", "selectedDevice", "rootNode", "container"], outputs: ["onSelected", "onClearSelected"] }, { kind: "component", type: i3.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i3.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i6.DatapointSelectorListItemComponent, selector: "c8y-datapoint-selector-list-item", inputs: ["defaultFormOptions", "isSelected", "isCollapsed", "addButtonType", "editable", "showActiveToggle", "activeToggleDisabled", "showOptions", "datapointLibraryEntries", "actions", "optionToRemove", "hasUnlinkTemplateOption", "colorPickerDisabled", "disableTypeaheadIfSelected", "highlightText"], outputs: ["added", "removed"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.IncludesDatapointPipe, name: "includesDatapoint" }, { kind: "pipe", type: i8.DatapointLabelPipe, name: "datapointLabel" }] }); }
163
163
  }
164
164
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DatapointSelectorComponent, decorators: [{
165
165
  type: Component,
@@ -169,7 +169,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
169
169
  multi: true,
170
170
  useExisting: forwardRef(() => DatapointSelectorComponent)
171
171
  }
172
- ], template: "<div\n class=\"d-grid grid__row--1 fit-h\"\n [ngClass]=\"{\n 'grid__col--3-6-3--md': allowChangingContext && !hideSelection,\n 'grid__col--8-4--md': !allowChangingContext && !hideSelection,\n 'grid__col--4-8--md': allowChangingContext && hideSelection\n }\"\n>\n <div class=\"d-flex d-col p-relative bg-level-1\" *ngIf=\"allowChangingContext\">\n <c8y-asset-selector-miller\n class=\"d-contents\"\n [(ngModel)]=\"contextAsset\"\n [asset]=\"contextAsset\"\n (onSelected)=\"selectionChanged($event)\"\n [container]=\"''\"\n [config]=\"{\n view: 'miller',\n groupsSelectable: true,\n columnHeaders: true,\n showChildDevices: true,\n showUnassignedDevices: true,\n singleColumn: true,\n search: allowSearch,\n showFilter: true\n }\"\n ></c8y-asset-selector-miller>\n </div>\n <!-- center column -->\n <div class=\"inner-scroll bg-component\">\n <ng-template #noDeviceEmptyState>\n <div class=\"p-16\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"emptyStateTitle | translate\"\n [subtitle]=\"'Select an asset from the list.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n </ng-template>\n <ng-template #loadingData>\n <div class=\"p-16 text-center\">\n <c8y-loading></c8y-loading>\n </div>\n </ng-template>\n <div class=\"bg-inherit\" *ngIf=\"assetSelection | async as asset; else noDeviceEmptyState\">\n <div class=\"p-l-16 p-r-16 p-t-8 p-b-8 sticky-top bg-inherit separator-bottom\">\n <p\n class=\"text-medium text-truncate\"\n [title]=\"selectorTitle | translate\"\n >\n {{ selectorTitle | translate }}\n </p>\n <div class=\"input-group input-group-search m-t-4\" id=\"search\" *ngIf=\"!loadingDatapoints\">\n <input\n class=\"form-control\"\n type=\"search\"\n placeholder=\"Search\u2026\"\n [ngModel]=\"searchString\"\n (ngModelChange)=\"searchStringChanged($event)\"\n />\n <span class=\"input-group-addon\">\n <i c8yIcon=\"search\" *ngIf=\"!searchString; else clearSearchString\"></i>\n <ng-template #clearSearchString>\n <i class=\"text-muted\" c8yIcon=\"times\" (click)=\"searchStringChanged()\"></i>\n </ng-template>\n </span>\n </div>\n </div>\n <ng-container *ngIf=\"filteredDatapoints$ | async as filteredDatapoints; else loadingData\">\n <ng-container *ngIf=\"!loadingDatapoints; else loadingData\">\n <ng-container *ngIf=\"datapoints$ | async as datapoints\">\n <div class=\"p-16\" *ngIf=\"!filteredDatapoints.length\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"emptyStateTitle | translate\"\n [subtitle]=\"\n datapoints.length\n ? (emptyStateSubtitleWhenNoMatchingDataPoints | translate)\n : (emptyStateSubtitleWhenNoDataPointsInAsset | translate)\n \"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n\n <c8y-list-group>\n <c8y-list-item\n class=\"sticky-top\"\n style=\"top: 72px\"\n *ngIf=\"\n datapoints.length > maxNumberOfDatapoints &&\n filteredDatapoints.length >= maxNumberOfDatapoints\n \"\n >\n <div class=\"alert alert-warning m-b-0\">\n {{\n 'Due to the large number, only a subset of data points is displayed. Use search to narrow down the number of results.'\n | translate\n }}\n </div>\n </c8y-list-item>\n <c8y-datapoint-selector-list-item\n class=\"d-contents\"\n [ngModel]=\"dp\"\n [isSelected]=\"selectedDatapoints | includesDatapoint: dp\"\n [datapointLibraryEntries]=\"datapointLibraryEntries\"\n [disableTypeaheadIfSelected]=\"true\"\n [addButtonType]=\"hideSelection ? AddButtonTypes.select : AddButtonTypes.addRemove\"\n (added)=\"datapointAdded($event)\"\n (removed)=\"datapointRemoved($event)\"\n [highlightText]=\"searchStringChanges$ | async\"\n *ngFor=\"let dp of filteredDatapoints; trackBy: trackByFn\"\n [editable]=\"itemsEditable\"\n ></c8y-datapoint-selector-list-item>\n </c8y-list-group>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n <!-- last column -->\n <div class=\"inner-scroll bg-level-1\" *ngIf=\"!hideSelection\">\n <p class=\"text-medium p-l-16 p-r-16 p-t-8 p-b-8 separator-bottom sticky-top text-truncate\"\n [title]=\"selectedListTitle | translate\" translate>{{ selectedListTitle }}</p>\n <div\n class=\"d-flex flex-wrap gap-8 p-l-16 p-r-16 p-t-8 p-b-16\"\n *ngIf=\"selectedDatapoints?.length\"\n >\n <div class=\"c8y-datapoint-pill\" *ngFor=\"let selectedDp of selectedDatapoints\">\n <button\n class=\"c8y-datapoint-pill__btn\"\n type=\"button\"\n [title]=\"'Remove' | translate\"\n (click)=\"datapointRemoved(selectedDp)\"\n >\n <i class=\"icon-14\" c8yIcon=\"remove\"></i>\n </button>\n <div\n class=\"c8y-datapoint-pill__label\"\n [title]=\"selectedDp | datapointLabel: { doNotUseLabel: true, includeDevice: true }\"\n >\n <i class=\"m-r-4 icon-14\" c8yIcon=\"circle\" [style.color]=\"selectedDp.color\"></i>\n <span class=\"text-truncate\">\n <span class=\"text-truncate\">{{ selectedDp | datapointLabel }}</span>\n <small class=\"text-muted text-10\" *ngIf=\"selectedDp?.__target?.name\">\n {{ selectedDp?.__target?.name }}\n </small>\n </span>\n </div>\n </div>\n </div>\n <div class=\"p-r-8\" *ngIf=\"!selectedDatapoints || !selectedDatapoints.length\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"emptyStateTitle | translate\"\n [subtitle]=\"\n 'Select the asset, then on the available data points list, click on the plus button on the desired data point.'\n | translate\n \"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n </div>\n</div>\n" }]
172
+ ], template: "<div\n class=\"d-grid grid__row--1 fit-h\"\n [ngClass]=\"{\n 'grid__col--3-6-3--md': allowChangingContext && !hideSelection,\n 'grid__col--8-4--md': !allowChangingContext && !hideSelection,\n 'grid__col--4-8--md': allowChangingContext && hideSelection\n }\"\n>\n <div\n class=\"d-flex d-col p-relative bg-level-1\"\n *ngIf=\"allowChangingContext\"\n >\n <c8y-asset-selector-miller\n class=\"d-contents\"\n [(ngModel)]=\"contextAsset\"\n [asset]=\"contextAsset\"\n (onSelected)=\"selectionChanged($event)\"\n [container]=\"''\"\n [config]=\"{\n view: 'miller',\n groupsSelectable: true,\n columnHeaders: true,\n showChildDevices: true,\n showUnassignedDevices: true,\n singleColumn: true,\n search: allowSearch,\n showFilter: true\n }\"\n ></c8y-asset-selector-miller>\n </div>\n <!-- center column -->\n <div class=\"inner-scroll bg-component\">\n <ng-template #noDeviceEmptyState>\n <div class=\"p-16\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"emptyStateTitle | translate\"\n [subtitle]=\"'Select an asset from the list.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n </ng-template>\n <ng-template #loadingData>\n <div class=\"p-16 text-center\">\n <c8y-loading></c8y-loading>\n </div>\n </ng-template>\n <div\n class=\"bg-inherit\"\n *ngIf=\"assetSelection | async as asset; else noDeviceEmptyState\"\n >\n <div class=\"p-l-16 p-r-16 p-t-8 p-b-8 sticky-top bg-inherit separator-bottom\">\n <p\n class=\"text-medium text-truncate\"\n [title]=\"selectorTitle | translate\"\n >\n {{ selectorTitle | translate }}\n </p>\n <div\n class=\"input-group input-group-search m-t-4\"\n id=\"search\"\n *ngIf=\"!loadingDatapoints\"\n >\n <input\n class=\"form-control\"\n placeholder=\"Search\u2026\"\n type=\"search\"\n [ngModel]=\"searchString\"\n (ngModelChange)=\"searchStringChanged($event)\"\n />\n <span class=\"input-group-addon\">\n <i\n c8yIcon=\"search\"\n *ngIf=\"!searchString; else clearSearchString\"\n ></i>\n <ng-template #clearSearchString>\n <i\n class=\"text-muted\"\n c8yIcon=\"times\"\n (click)=\"searchStringChanged()\"\n ></i>\n </ng-template>\n </span>\n </div>\n </div>\n <ng-container *ngIf=\"filteredDatapoints$ | async as filteredDatapoints; else loadingData\">\n <ng-container *ngIf=\"!loadingDatapoints; else loadingData\">\n <ng-container *ngIf=\"datapoints$ | async as datapoints\">\n <div\n class=\"p-16\"\n *ngIf=\"!filteredDatapoints.length\"\n >\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"emptyStateTitle | translate\"\n [subtitle]=\"\n datapoints.length\n ? (emptyStateSubtitleWhenNoMatchingDataPoints | translate)\n : (emptyStateSubtitleWhenNoDataPointsInAsset | translate)\n \"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n\n <c8y-list-group>\n <c8y-list-item\n class=\"sticky-top\"\n style=\"top: 72px\"\n *ngIf=\"\n datapoints.length > maxNumberOfDatapoints &&\n filteredDatapoints.length >= maxNumberOfDatapoints\n \"\n >\n <div class=\"alert alert-warning m-b-0\">\n {{\n 'Due to the large number, only a subset of data points is displayed. Use search to narrow down the number of results.'\n | translate\n }}\n </div>\n </c8y-list-item>\n <c8y-datapoint-selector-list-item\n class=\"d-contents\"\n [ngModel]=\"dp\"\n [isSelected]=\"selectedDatapoints | includesDatapoint: dp\"\n [datapointLibraryEntries]=\"datapointLibraryEntries\"\n [disableTypeaheadIfSelected]=\"true\"\n [addButtonType]=\"hideSelection ? AddButtonTypes.select : AddButtonTypes.addRemove\"\n (added)=\"datapointAdded($event)\"\n (removed)=\"datapointRemoved($event)\"\n [highlightText]=\"searchStringChanges$ | async\"\n *ngFor=\"let dp of filteredDatapoints; trackBy: trackByFn\"\n [editable]=\"itemsEditable\"\n ></c8y-datapoint-selector-list-item>\n </c8y-list-group>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n <!-- last column -->\n <div\n class=\"inner-scroll bg-level-1\"\n *ngIf=\"!hideSelection\"\n >\n <p\n class=\"text-medium p-l-16 p-r-16 p-t-8 p-b-8 separator-bottom sticky-top text-truncate\"\n [title]=\"selectedListTitle | translate\"\n >\n {{ selectedListTitle | translate }}\n </p>\n <div\n class=\"d-flex flex-wrap gap-8 p-l-16 p-r-16 p-t-8 p-b-16\"\n *ngIf=\"selectedDatapoints?.length\"\n >\n <div\n class=\"c8y-datapoint-pill\"\n *ngFor=\"let selectedDp of selectedDatapoints\"\n >\n <button\n class=\"c8y-datapoint-pill__btn\"\n [title]=\"'Remove' | translate\"\n type=\"button\"\n (click)=\"datapointRemoved(selectedDp)\"\n >\n <i\n class=\"icon-14\"\n c8yIcon=\"remove\"\n ></i>\n </button>\n <div\n class=\"c8y-datapoint-pill__label\"\n [title]=\"selectedDp | datapointLabel: { doNotUseLabel: true, includeDevice: true }\"\n >\n <i\n class=\"m-r-4 icon-14\"\n c8yIcon=\"circle\"\n [style.color]=\"selectedDp.color\"\n ></i>\n <span class=\"text-truncate\">\n <span class=\"text-truncate\">{{ selectedDp | datapointLabel }}</span>\n <small\n class=\"text-muted text-10\"\n *ngIf=\"selectedDp?.__target?.name\"\n >\n {{ selectedDp?.__target?.name }}\n </small>\n </span>\n </div>\n </div>\n </div>\n <div\n class=\"p-r-8\"\n *ngIf=\"!selectedDatapoints || !selectedDatapoints.length\"\n >\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"emptyStateTitle | translate\"\n [subtitle]=\"\n 'Select the asset, then on the available data points list, click on the plus button on the desired data point.'\n | translate\n \"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n </div>\n</div>\n" }]
173
173
  }], ctorParameters: () => [{ type: i1.DatapointLibraryService }], propDecorators: { contextAsset: [{
174
174
  type: Input
175
175
  }], allowChangingContext: [{
@@ -191,4 +191,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
191
191
  }], itemsEditable: [{
192
192
  type: Input
193
193
  }] } });
194
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50LXNlbGVjdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2RhdGFwb2ludC1zZWxlY3Rvci9kYXRhcG9pbnQtc2VsZWN0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZGF0YXBvaW50LXNlbGVjdG9yL2RhdGFwb2ludC1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDeEUsT0FBTyxFQUNMLFlBQVksRUFDWixvQkFBb0IsRUFDcEIsR0FBRyxFQUNILFdBQVcsRUFDWCxTQUFTLEVBQ1QsR0FBRyxFQUNKLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFdEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVFQUF1RSxDQUFDOzs7Ozs7Ozs7O0FBYXZHLE1BQU0sT0FBTywwQkFBMEI7SUFvQ3JDLFlBQW9CLGdCQUF5QztRQUF6QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXlCO1FBbENwRCx5QkFBb0IsR0FBRyxJQUFJLENBQUM7UUFDNUIsc0NBQWlDLEdBQUcsSUFBSSxDQUFDO1FBQ2xELHVCQUFrQixHQUFHLElBQUksS0FBSyxFQUFjLENBQUM7UUFDcEMsdUJBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQzFCLDZCQUF3QixHQUFHLEtBQUssQ0FBQztRQUNqQywyQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFDL0IsdUJBQWtC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Ryx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSUlkZW50aWZpZWQsIElSZXN1bHRMaXN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmcm9tLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBkZWJvdW5jZVRpbWUsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBtYXAsXG4gIHNoYXJlUmVwbGF5LFxuICBzd2l0Y2hNYXAsXG4gIHRhcFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEYXRhcG9pbnRMaWJyYXJ5U2VydmljZSB9IGZyb20gJy4vZGF0YXBvaW50LWxpYnJhcnkuc2VydmljZSc7XG5pbXBvcnQgeyBLUElEZXRhaWxzLCBNYW5hZ2VkT2JqZWN0S1BJIH0gZnJvbSAnLi9kYXRhcG9pbnQtc2VsZWN0aW9uLm1vZGVsJztcbmltcG9ydCB7IEFkZEJ1dHRvblR5cGVzIH0gZnJvbSAnLi9kYXRhcG9pbnQtc2VsZWN0b3ItbGlzdC1pdGVtL2RhdGFwb2ludC1zZWxlY3Rvci1saXN0LWl0ZW0uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWRhdGFwb2ludC1zZWxlY3RvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhcG9pbnQtc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0YXBvaW50U2VsZWN0b3JDb21wb25lbnQpXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIERhdGFwb2ludFNlbGVjdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIEBJbnB1dCgpIGNvbnRleHRBc3NldDogSUlkZW50aWZpZWQ7XG4gIEBJbnB1dCgpIGFsbG93Q2hhbmdpbmdDb250ZXh0ID0gdHJ1ZTtcbiAgQElucHV0KCkgYWxsb3dEYXRhcG9pbnRzRnJvbU11bHRpcGxlQXNzZXRzID0gdHJ1ZTtcbiAgc2VsZWN0ZWREYXRhcG9pbnRzID0gbmV3IEFycmF5PEtQSURldGFpbHM+KCk7XG4gIEBJbnB1dCgpIGRlZmF1bHRBY3RpdmVTdGF0ZSA9IHRydWU7XG4gIEBJbnB1dCgpIGlnbm9yZURhdGFwb2ludFRlbXBsYXRlcyA9IGZhbHNlO1xuICBASW5wdXQoKSBkYXRhcG9pbnRUZW1wbGF0ZXNPbmx5ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGd1ZXNzRGF0YXBvaW50VW5pdCA9IHRydWU7XG4gIEBJbnB1dCgpIGFsbG93U2VhcmNoID0gdHJ1ZTtcbiAgQElucHV0KCkgaGlkZVNlbGVjdGlvbiA9IGZhbHNlO1xuICBASW5wdXQoKSBpdGVtc0VkaXRhYmxlID0gdHJ1ZTtcbiAgc2VhcmNoU3RyaW5nID0gJyc7XG4gIG1heE51bWJlck9mRGF0YXBvaW50cyA9IDUwO1xuICBzZWxlY3RvclRpdGxlOiBzdHJpbmc7XG4gIGVtcHR5U3RhdGVUaXRsZTogc3RyaW5nO1xuICBzZWxlY3RlZExpc3RUaXRsZTogc3RyaW5nO1xuICBBZGRCdXR0b25UeXBlcyA9IEFkZEJ1dHRvblR5cGVzO1xuXG4gIGxvYWRpbmdEYXRhcG9pbnRzID0gZmFsc2U7XG4gIGFzc2V0U2VsZWN0aW9uID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJSWRlbnRpZmllZD4obnVsbCk7XG4gIGRhdGFwb2ludHMkOiBPYnNlcnZhYmxlPEtQSURldGFpbHNbXT47XG4gIGZpbHRlcmVkRGF0YXBvaW50cyQ6IE9ic2VydmFibGU8S1BJRGV0YWlsc1tdPjtcbiAgc2VhcmNoU3RyaW5nQ2hhbmdlcyQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgZGF0YXBvaW50TGlicmFyeUVudHJpZXM6IE9ic2VydmFibGU8SVJlc3VsdExpc3Q8TWFuYWdlZE9iamVjdEtQST4+O1xuXG4gIGVtcHR5U3RhdGVTdWJ0aXRsZVdoZW5Ob01hdGNoaW5nRGF0YVBvaW50cyA9IGdldHRleHQoJ1RyeSBhbm90aGVyIHNlYXJjaCB0ZXJtLicpO1xuICBlbXB0eVN0YXRlU3VidGl0bGVXaGVuTm9EYXRhUG9pbnRzSW5Bc3NldCA9IGdldHRleHQoXG4gICAgJ1NlbGVjdCBhbiBhc3NldCB3aXRoIGRhdGEgcG9pbnRzIGZyb20gdGhlIGxpc3QuJ1xuICApO1xuXG4gIHByaXZhdGUgc2VhcmNoU3RyaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoJycpO1xuICBwcml2YXRlIHRvdWNoZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBvbkNoYW5nZTogKHF1YW50aXR5OiBLUElEZXRhaWxzW10pID0+IHZvaWQ7XG4gIHByaXZhdGUgb25Ub3VjaGVkOiAoKSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0YXBvaW50U2VydmljZTogRGF0YXBvaW50TGlicmFyeVNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RvclRpdGxlID0gdGhpcy5kYXRhcG9pbnRUZW1wbGF0ZXNPbmx5XG4gICAgICA/IGdldHRleHQoJ0F2YWlsYWJsZSBkYXRhIHBvaW50IHRlbXBsYXRlcycpXG4gICAgICA6IGdldHRleHQoJ0F2YWlsYWJsZSBkYXRhIHBvaW50cycpO1xuICAgIHRoaXMuZW1wdHlTdGF0ZVRpdGxlID0gdGhpcy5kYXRhcG9pbnRUZW1wbGF0ZXNPbmx5XG4gICAgICA/IGdldHRleHQoJ05vIGRhdGEgcG9pbnQgdGVtcGxhdGVzIHRvIGRpc3BsYXkuJylcbiAgICAgIDogZ2V0dGV4dCgnTm8gZGF0YSBwb2ludHMgdG8gZGlzcGxheS4nKTtcbiAgICB0aGlzLnNlbGVjdGVkTGlzdFRpdGxlID0gdGhpcy5kYXRhcG9pbnRUZW1wbGF0ZXNPbmx5XG4gICAgICA/IGdldHRleHQoJ1NlbGVjdGVkIGRhdGEgcG9pbnQgdGVtcGxhdGVzJylcbiAgICAgIDogZ2V0dGV4dCgnU2VsZWN0ZWQgZGF0YSBwb2ludHMnKTtcbiAgICB0aGlzLnNldHVwT2JzZXJ2YWJsZXMoKTtcbiAgICBpZiAoIXRoaXMuaWdub3JlRGF0YXBvaW50VGVtcGxhdGVzKSB7XG4gICAgICB0aGlzLmRhdGFwb2ludExpYnJhcnlFbnRyaWVzID0gZnJvbSh0aGlzLmRhdGFwb2ludFNlcnZpY2UuZ2V0Rmlyc3REYXRhcG9pbnRMaWJyYXJ5UGFnZSgpKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb250ZXh0QXNzZXQpIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlZCh0aGlzLmNvbnRleHRBc3NldCk7XG4gICAgfVxuICB9XG5cbiAgd3JpdGVWYWx1ZShvYmo6IEtQSURldGFpbHNbXSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWREYXRhcG9pbnRzID0gb2JqO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBkYXRhcG9pbnRBZGRlZChkcDogS1BJRGV0YWlscyk6IHZvaWQge1xuICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xuICAgIGRwLl9fYWN0aXZlID0gdGhpcy5kZWZhdWx0QWN0aXZlU3RhdGU7XG4gICAgaWYgKHRoaXMuZ3Vlc3NEYXRhcG9pbnRVbml0ICYmICFkcC51bml0KSB7XG4gICAgICB0aGlzLmRhdGFwb2ludFNlcnZpY2UuZ3Vlc3NVbml0T2ZEYXRhcG9pbnQoZHAuZnJhZ21lbnQsIGRwLnNlcmllcywgZHAuX190YXJnZXQpLnRoZW4odW5pdCA9PiB7XG4gICAgICAgIGRwLnVuaXQgPSB1bml0O1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWREYXRhcG9pbnRzID0gWy4uLnRoaXMuc2VsZWN0ZWREYXRhcG9pbnRzLCBkcF07XG4gICAgdGhpcy5lbWl0Q3VycmVudFNlbGVjdGlvbigpO1xuICB9XG5cbiAgZGF0YXBvaW50UmVtb3ZlZChkcDogS1BJRGV0YWlscyk6IHZvaWQge1xuICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xuICAgIHRoaXMuc2VsZWN0ZWREYXRhcG9pbnRzID0gdGhpcy5zZWxlY3RlZERhdGFwb2ludHMuZmlsdGVyKFxuICAgICAgdG1wID0+XG4gICAgICAgIHRtcC5mcmFnbWVudCAhPT0gZHAuZnJhZ21lbnQgfHxcbiAgICAgICAgdG1wLnNlcmllcyAhPT0gZHAuc2VyaWVzIHx8XG4gICAgICAgIHRtcC5fX3RhcmdldD8uaWQgIT09IGRwLl9fdGFyZ2V0Py5pZFxuICAgICk7XG4gICAgdGhpcy5lbWl0Q3VycmVudFNlbGVjdGlvbigpO1xuICB9XG5cbiAgc2VsZWN0aW9uQ2hhbmdlZChldnQ6IElJZGVudGlmaWVkIHwgSUlkZW50aWZpZWRbXSk6IHZvaWQge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGV2dCkgJiYgZXZ0Lmxlbmd0aCAhPT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0QXNzZXQoZXZ0WzBdKTtcbiAgICB9XG5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZXZ0KSAmJiBldnQuaXRlbXMpIHtcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbkNoYW5nZWQoZXZ0Lml0ZW1zKTtcbiAgICB9XG5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZXZ0KSAmJiBldnQuaWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdEFzc2V0KGV2dCk7XG4gICAgfVxuXG4gICAgLy8gcmVzZXQgc2VsZWN0aW9uXG4gICAgdGhpcy5hc3NldFNlbGVjdGlvbi5uZXh0KG51bGwpO1xuICB9XG5cbiAgdHJhY2tCeUZuKF9pbmRleDogbnVtYmVyLCBpdGVtOiBLUElEZXRhaWxzKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7aXRlbS5mcmFnbWVudH0tJHtpdGVtLl9fdGFyZ2V0Py5pZH0tJHtpdGVtLnNlcmllc31gO1xuICB9XG5cbiAgc2VhcmNoU3RyaW5nQ2hhbmdlZChuZXdWYWx1ZSA9ICcnKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hTdHJpbmckLm5leHQobmV3VmFsdWUpO1xuICAgIHRoaXMuc2VhcmNoU3RyaW5nID0gbmV3VmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHNldHVwT2JzZXJ2YWJsZXMoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhcG9pbnRzJCA9IHRoaXMuYXNzZXRTZWxlY3Rpb24ucGlwZShcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIHRoaXMubG9hZGluZ0RhdGFwb2ludHMgPSB0cnVlO1xuICAgICAgfSksXG4gICAgICBzd2l0Y2hNYXAoYXNzZXQgPT5cbiAgICAgICAgYXNzZXQ/LmlkXG4gICAgICAgICAgPyB0aGlzLmRhdGFwb2ludFNlcnZpY2UuZ2V0RGF0YXBvaW50c09mQXNzZXQoXG4gICAgICAgICAgICAgIGFzc2V0LFxuICAgICAgICAgICAgICB0aGlzLmlnbm9yZURhdGFwb2ludFRlbXBsYXRlcyxcbiAgICAgICAgICAgICAgdGhpcy5kYXRhcG9pbnRUZW1wbGF0ZXNPbmx5XG4gICAgICAgICAgICApXG4gICAgICAgICAgOiBbXVxuICAgICAgKSxcbiAgICAgIHRhcCgoKSA9PiAodGhpcy5sb2FkaW5nRGF0YXBvaW50cyA9IGZhbHNlKSksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG5cbiAgICB0aGlzLnNlYXJjaFN0cmluZ0NoYW5nZXMkID0gdGhpcy5zZWFyY2hTdHJpbmckLnBpcGUoXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgZGVib3VuY2VUaW1lKDUwMCksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG5cbiAgICB0aGlzLmZpbHRlcmVkRGF0YXBvaW50cyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLnNlYXJjaFN0cmluZ0NoYW5nZXMkLCB0aGlzLmRhdGFwb2ludHMkXSkucGlwZShcbiAgICAgIG1hcCgoW3NlYXJjaFN0cmluZywgZGF0YXBvaW50c10pID0+IHtcbiAgICAgICAgaWYgKCFzZWFyY2hTdHJpbmcpIHtcbiAgICAgICAgICByZXR1cm4gZGF0YXBvaW50cztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsb3dlckNhc2VTZWFyY2hTdHJpbmcgPSBzZWFyY2hTdHJpbmcudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgcmV0dXJuIGRhdGFwb2ludHMuZmlsdGVyKGRhdGFwb2ludCA9PlxuICAgICAgICAgIHRoaXMuaW5jbHVkZXNTZWFyY2hTdHJpbmcoZGF0YXBvaW50LCBsb3dlckNhc2VTZWFyY2hTdHJpbmcpXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICAgIG1hcChmaWx0ZXJlZCA9PiBmaWx0ZXJlZC5zbGljZSgwLCB0aGlzLm1heE51bWJlck9mRGF0YXBvaW50cykpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0QXNzZXQoYXNzZXQ6IElJZGVudGlmaWVkKSB7XG4gICAgdGhpcy5hc3NldFNlbGVjdGlvbi5uZXh0KGFzc2V0KTtcbiAgICB0aGlzLnNlYXJjaFN0cmluZ0NoYW5nZWQoKTtcbiAgICBpZiAoIXRoaXMuYWxsb3dEYXRhcG9pbnRzRnJvbU11bHRpcGxlQXNzZXRzKSB7XG4gICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjbGVhclNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkRGF0YXBvaW50cyA9IFtdO1xuICAgIHRoaXMuZW1pdEN1cnJlbnRTZWxlY3Rpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdEN1cnJlbnRTZWxlY3Rpb24oKSB7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnNlbGVjdGVkRGF0YXBvaW50cyk7XG4gIH1cblxuICBwcml2YXRlIG1hcmtBc1RvdWNoZWQoKSB7XG4gICAgaWYgKCF0aGlzLnRvdWNoZWQpIHtcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICB0aGlzLnRvdWNoZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5jbHVkZXNTZWFyY2hTdHJpbmcoZGF0YXBvaW50OiBLUElEZXRhaWxzLCBsb3dlckNhc2VTZWFyY2hTdHJpbmc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGxhYmVsID0gZGF0YXBvaW50LmxhYmVsPy50b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChsYWJlbCAmJiBsYWJlbC5pbmNsdWRlcyhsb3dlckNhc2VTZWFyY2hTdHJpbmcpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBmcmFnbWVudCA9IGRhdGFwb2ludC5mcmFnbWVudD8udG9Mb3dlckNhc2UoKTtcbiAgICBpZiAoZnJhZ21lbnQgJiYgZnJhZ21lbnQuaW5jbHVkZXMobG93ZXJDYXNlU2VhcmNoU3RyaW5nKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3Qgc2VyaWVzID0gZGF0YXBvaW50LnNlcmllcz8udG9Mb3dlckNhc2UoKTtcbiAgICBpZiAoc2VyaWVzICYmIHNlcmllcy5pbmNsdWRlcyhsb3dlckNhc2VTZWFyY2hTdHJpbmcpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJkLWdyaWQgZ3JpZF9fcm93LS0xIGZpdC1oXCJcbiAgW25nQ2xhc3NdPVwie1xuICAgICdncmlkX19jb2wtLTMtNi0zLS1tZCc6IGFsbG93Q2hhbmdpbmdDb250ZXh0ICYmICFoaWRlU2VsZWN0aW9uLFxuICAgICdncmlkX19jb2wtLTgtNC0tbWQnOiAhYWxsb3dDaGFuZ2luZ0NvbnRleHQgJiYgIWhpZGVTZWxlY3Rpb24sXG4gICAgJ2dyaWRfX2NvbC0tNC04LS1tZCc6IGFsbG93Q2hhbmdpbmdDb250ZXh0ICYmIGhpZGVTZWxlY3Rpb25cbiAgfVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggZC1jb2wgcC1yZWxhdGl2ZSBiZy1sZXZlbC0xXCIgKm5nSWY9XCJhbGxvd0NoYW5naW5nQ29udGV4dFwiPlxuICAgIDxjOHktYXNzZXQtc2VsZWN0b3ItbWlsbGVyXG4gICAgICBjbGFzcz1cImQtY29udGVudHNcIlxuICAgICAgWyhuZ01vZGVsKV09XCJjb250ZXh0QXNzZXRcIlxuICAgICAgW2Fzc2V0XT1cImNvbnRleHRBc3NldFwiXG4gICAgICAob25TZWxlY3RlZCk9XCJzZWxlY3Rpb25DaGFuZ2VkKCRldmVudClcIlxuICAgICAgW2NvbnRhaW5lcl09XCInJ1wiXG4gICAgICBbY29uZmlnXT1cIntcbiAgICAgICAgdmlldzogJ21pbGxlcicsXG4gICAgICAgIGdyb3Vwc1NlbGVjdGFibGU6IHRydWUsXG4gICAgICAgIGNvbHVtbkhlYWRlcnM6IHRydWUsXG4gICAgICAgIHNob3dDaGlsZERldmljZXM6IHRydWUsXG4gICAgICAgIHNob3dVbmFzc2lnbmVkRGV2aWNlczogdHJ1ZSxcbiAgICAgICAgc2luZ2xlQ29sdW1uOiB0cnVlLFxuICAgICAgICBzZWFyY2g6IGFsbG93U2VhcmNoLFxuICAgICAgICBzaG93RmlsdGVyOiB0cnVlXG4gICAgICB9XCJcbiAgICA+PC9jOHktYXNzZXQtc2VsZWN0b3ItbWlsbGVyPlxuICA8L2Rpdj5cbiAgPCEtLSBjZW50ZXIgY29sdW1uIC0tPlxuICA8ZGl2IGNsYXNzPVwiaW5uZXItc2Nyb2xsIGJnLWNvbXBvbmVudFwiPlxuICAgIDxuZy10ZW1wbGF0ZSAjbm9EZXZpY2VFbXB0eVN0YXRlPlxuICAgICAgPGRpdiBjbGFzcz1cInAtMTZcIj5cbiAgICAgICAgPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAgICAgICAgIFtpY29uXT1cIidjOHktZGF0YS1wb2ludHMnXCJcbiAgICAgICAgICBbdGl0bGVdPVwiZW1wdHlTdGF0ZVRpdGxlIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbc3VidGl0bGVdPVwiJ1NlbGVjdCBhbiBhc3NldCBmcm9tIHRoZSBsaXN0LicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFtob3Jpem9udGFsXT1cInRydWVcIlxuICAgICAgICA+PC9jOHktdWktZW1wdHktc3RhdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjbG9hZGluZ0RhdGE+XG4gICAgICA8ZGl2IGNsYXNzPVwicC0xNiB0ZXh0LWNlbnRlclwiPlxuICAgICAgICA8Yzh5LWxvYWRpbmc+PC9jOHktbG9hZGluZz5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPGRpdiBjbGFzcz1cImJnLWluaGVyaXRcIiAqbmdJZj1cImFzc2V0U2VsZWN0aW9uIHwgYXN5bmMgYXMgYXNzZXQ7IGVsc2Ugbm9EZXZpY2VFbXB0eVN0YXRlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicC1sLTE2IHAtci0xNiBwLXQtOCBwLWItOCBzdGlja3ktdG9wIGJnLWluaGVyaXQgc2VwYXJhdG9yLWJvdHRvbVwiPlxuICAgICAgICA8cFxuICAgICAgICAgIGNsYXNzPVwidGV4dC1tZWRpdW0gdGV4dC10cnVuY2F0ZVwiXG4gICAgICAgICAgW3RpdGxlXT1cInNlbGVjdG9yVGl0bGUgfCB0cmFuc2xhdGVcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgc2VsZWN0b3JUaXRsZSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L3A+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBpbnB1dC1ncm91cC1zZWFyY2ggbS10LTRcIiBpZD1cInNlYXJjaFwiICpuZ0lmPVwiIWxvYWRpbmdEYXRhcG9pbnRzXCI+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNo4oCmXCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cInNlYXJjaFN0cmluZ1wiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZWFyY2hTdHJpbmdDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC1hZGRvblwiPlxuICAgICAgICAgICAgPGkgYzh5SWNvbj1cInNlYXJjaFwiICpuZ0lmPVwiIXNlYXJjaFN0cmluZzsgZWxzZSBjbGVhclNlYXJjaFN0cmluZ1wiPjwvaT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2xlYXJTZWFyY2hTdHJpbmc+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwidGV4dC1tdXRlZFwiIGM4eUljb249XCJ0aW1lc1wiIChjbGljayk9XCJzZWFyY2hTdHJpbmdDaGFuZ2VkKClcIj48L2k+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXJlZERhdGFwb2ludHMkIHwgYXN5bmMgYXMgZmlsdGVyZWREYXRhcG9pbnRzOyBlbHNlIGxvYWRpbmdEYXRhXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbG9hZGluZ0RhdGFwb2ludHM7IGVsc2UgbG9hZGluZ0RhdGFcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YXBvaW50cyQgfCBhc3luYyBhcyBkYXRhcG9pbnRzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0xNlwiICpuZ0lmPVwiIWZpbHRlcmVkRGF0YXBvaW50cy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAgICAgICAgICAgICAgIFtpY29uXT1cIidjOHktZGF0YS1wb2ludHMnXCJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiZW1wdHlTdGF0ZVRpdGxlIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbc3VidGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICBkYXRhcG9pbnRzLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICA/IChlbXB0eVN0YXRlU3VidGl0bGVXaGVuTm9NYXRjaGluZ0RhdGFQb2ludHMgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgICAgICAgICAgIDogKGVtcHR5U3RhdGVTdWJ0aXRsZVdoZW5Ob0RhdGFQb2ludHNJbkFzc2V0IHwgdHJhbnNsYXRlKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgW2hvcml6b250YWxdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgID48L2M4eS11aS1lbXB0eS1zdGF0ZT5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8Yzh5LWxpc3QtZ3JvdXA+XG4gICAgICAgICAgICAgIDxjOHktbGlzdC1pdGVtXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzdGlja3ktdG9wXCJcbiAgICAgICAgICAgICAgICBzdHlsZT1cInRvcDogNzJweFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgIGRhdGFwb2ludHMubGVuZ3RoID4gbWF4TnVtYmVyT2ZEYXRhcG9pbnRzICYmXG4gICAgICAgICAgICAgICAgICBmaWx0ZXJlZERhdGFwb2ludHMubGVuZ3RoID49IG1heE51bWJlck9mRGF0YXBvaW50c1xuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtd2FybmluZyBtLWItMFwiPlxuICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgJ0R1ZSB0byB0aGUgbGFyZ2UgbnVtYmVyLCBvbmx5IGEgc3Vic2V0IG9mIGRhdGEgcG9pbnRzIGlzIGRpc3BsYXllZC4gVXNlIHNlYXJjaCB0byBuYXJyb3cgZG93biB0aGUgbnVtYmVyIG9mIHJlc3VsdHMuJ1xuICAgICAgICAgICAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2M4eS1saXN0LWl0ZW0+XG4gICAgICAgICAgICAgIDxjOHktZGF0YXBvaW50LXNlbGVjdG9yLWxpc3QtaXRlbVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1jb250ZW50c1wiXG4gICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZHBcIlxuICAgICAgICAgICAgICAgIFtpc1NlbGVjdGVkXT1cInNlbGVjdGVkRGF0YXBvaW50cyB8IGluY2x1ZGVzRGF0YXBvaW50OiBkcFwiXG4gICAgICAgICAgICAgICAgW2RhdGFwb2ludExpYnJhcnlFbnRyaWVzXT1cImRhdGFwb2ludExpYnJhcnlFbnRyaWVzXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZVR5cGVhaGVhZElmU2VsZWN0ZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2FkZEJ1dHRvblR5cGVdPVwiaGlkZVNlbGVjdGlvbiA/IEFkZEJ1dHRvblR5cGVzLnNlbGVjdCA6IEFkZEJ1dHRvblR5cGVzLmFkZFJlbW92ZVwiXG4gICAgICAgICAgICAgICAgKGFkZGVkKT1cImRhdGFwb2ludEFkZGVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChyZW1vdmVkKT1cImRhdGFwb2ludFJlbW92ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW2hpZ2hsaWdodFRleHRdPVwic2VhcmNoU3RyaW5nQ2hhbmdlcyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRwIG9mIGZpbHRlcmVkRGF0YXBvaW50czsgdHJhY2tCeTogdHJhY2tCeUZuXCJcbiAgICAgICAgICAgICAgICBbZWRpdGFibGVdPVwiaXRlbXNFZGl0YWJsZVwiXG4gICAgICAgICAgICAgID48L2M4eS1kYXRhcG9pbnQtc2VsZWN0b3ItbGlzdC1pdGVtPlxuICAgICAgICAgICAgPC9jOHktbGlzdC1ncm91cD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDwhLS0gbGFzdCBjb2x1bW4gIC0tPlxuICA8ZGl2IGNsYXNzPVwiaW5uZXItc2Nyb2xsIGJnLWxldmVsLTFcIiAqbmdJZj1cIiFoaWRlU2VsZWN0aW9uXCI+XG4gICAgPHAgY2xhc3M9XCJ0ZXh0LW1lZGl1bSBwLWwtMTYgcC1yLTE2IHAtdC04IHAtYi04IHNlcGFyYXRvci1ib3R0b20gc3RpY2t5LXRvcCB0ZXh0LXRydW5jYXRlXCJcbiAgICAgIFt0aXRsZV09XCJzZWxlY3RlZExpc3RUaXRsZSB8IHRyYW5zbGF0ZVwiIHRyYW5zbGF0ZT57eyBzZWxlY3RlZExpc3RUaXRsZSB9fTwvcD5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImQtZmxleCBmbGV4LXdyYXAgZ2FwLTggcC1sLTE2IHAtci0xNiBwLXQtOCBwLWItMTZcIlxuICAgICAgKm5nSWY9XCJzZWxlY3RlZERhdGFwb2ludHM/Lmxlbmd0aFwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImM4eS1kYXRhcG9pbnQtcGlsbFwiICpuZ0Zvcj1cImxldCBzZWxlY3RlZERwIG9mIHNlbGVjdGVkRGF0YXBvaW50c1wiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJjOHktZGF0YXBvaW50LXBpbGxfX2J0blwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgW3RpdGxlXT1cIidSZW1vdmUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAoY2xpY2spPVwiZGF0YXBvaW50UmVtb3ZlZChzZWxlY3RlZERwKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aSBjbGFzcz1cImljb24tMTRcIiBjOHlJY29uPVwicmVtb3ZlXCI+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiYzh5LWRhdGFwb2ludC1waWxsX19sYWJlbFwiXG4gICAgICAgICAgW3RpdGxlXT1cInNlbGVjdGVkRHAgfCBkYXRhcG9pbnRMYWJlbDogeyBkb05vdFVzZUxhYmVsOiB0cnVlLCBpbmNsdWRlRGV2aWNlOiB0cnVlIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgY2xhc3M9XCJtLXItNCBpY29uLTE0XCIgYzh5SWNvbj1cImNpcmNsZVwiIFtzdHlsZS5jb2xvcl09XCJzZWxlY3RlZERwLmNvbG9yXCI+PC9pPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCI+e3sgc2VsZWN0ZWREcCB8IGRhdGFwb2ludExhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1tdXRlZCB0ZXh0LTEwXCIgKm5nSWY9XCJzZWxlY3RlZERwPy5fX3RhcmdldD8ubmFtZVwiPlxuICAgICAgICAgICAgICB7eyBzZWxlY3RlZERwPy5fX3RhcmdldD8ubmFtZSB9fVxuICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInAtci04XCIgKm5nSWY9XCIhc2VsZWN0ZWREYXRhcG9pbnRzIHx8ICFzZWxlY3RlZERhdGFwb2ludHMubGVuZ3RoXCI+XG4gICAgICA8Yzh5LXVpLWVtcHR5LXN0YXRlXG4gICAgICAgIFtpY29uXT1cIidjOHktZGF0YS1wb2ludHMnXCJcbiAgICAgICAgW3RpdGxlXT1cImVtcHR5U3RhdGVUaXRsZSB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtzdWJ0aXRsZV09XCJcbiAgICAgICAgICAnU2VsZWN0IHRoZSBhc3NldCwgdGhlbiBvbiB0aGUgYXZhaWxhYmxlIGRhdGEgcG9pbnRzIGxpc3QsIGNsaWNrIG9uIHRoZSBwbHVzIGJ1dHRvbiBvbiB0aGUgZGVzaXJlZCBkYXRhIHBvaW50LidcbiAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgIFwiXG4gICAgICAgIFtob3Jpem9udGFsXT1cInRydWVcIlxuICAgICAgPjwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50LXNlbGVjdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2RhdGFwb2ludC1zZWxlY3Rvci9kYXRhcG9pbnQtc2VsZWN0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZGF0YXBvaW50LXNlbGVjdG9yL2RhdGFwb2ludC1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDeEUsT0FBTyxFQUNMLFlBQVksRUFDWixvQkFBb0IsRUFDcEIsR0FBRyxFQUNILFdBQVcsRUFDWCxTQUFTLEVBQ1QsR0FBRyxFQUNKLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFdEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVFQUF1RSxDQUFDOzs7Ozs7Ozs7O0FBYXZHLE1BQU0sT0FBTywwQkFBMEI7SUFvQ3JDLFlBQW9CLGdCQUF5QztRQUF6QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXlCO1FBbENwRCx5QkFBb0IsR0FBRyxJQUFJLENBQUM7UUFDNUIsc0NBQWlDLEdBQUcsSUFBSSxDQUFDO1FBQ2xELHVCQUFrQixHQUFHLElBQUksS0FBSyxFQUFjLENBQUM7UUFDcEMsdUJBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQzFCLDZCQUF3QixHQUFHLEtBQUssQ0FBQztRQUNqQywyQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFDL0IsdUJBQWtC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Ryx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSUlkZW50aWZpZWQsIElSZXN1bHRMaXN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmcm9tLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBkZWJvdW5jZVRpbWUsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBtYXAsXG4gIHNoYXJlUmVwbGF5LFxuICBzd2l0Y2hNYXAsXG4gIHRhcFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEYXRhcG9pbnRMaWJyYXJ5U2VydmljZSB9IGZyb20gJy4vZGF0YXBvaW50LWxpYnJhcnkuc2VydmljZSc7XG5pbXBvcnQgeyBLUElEZXRhaWxzLCBNYW5hZ2VkT2JqZWN0S1BJIH0gZnJvbSAnLi9kYXRhcG9pbnQtc2VsZWN0aW9uLm1vZGVsJztcbmltcG9ydCB7IEFkZEJ1dHRvblR5cGVzIH0gZnJvbSAnLi9kYXRhcG9pbnQtc2VsZWN0b3ItbGlzdC1pdGVtL2RhdGFwb2ludC1zZWxlY3Rvci1saXN0LWl0ZW0uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWRhdGFwb2ludC1zZWxlY3RvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhcG9pbnQtc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0YXBvaW50U2VsZWN0b3JDb21wb25lbnQpXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIERhdGFwb2ludFNlbGVjdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIEBJbnB1dCgpIGNvbnRleHRBc3NldDogSUlkZW50aWZpZWQ7XG4gIEBJbnB1dCgpIGFsbG93Q2hhbmdpbmdDb250ZXh0ID0gdHJ1ZTtcbiAgQElucHV0KCkgYWxsb3dEYXRhcG9pbnRzRnJvbU11bHRpcGxlQXNzZXRzID0gdHJ1ZTtcbiAgc2VsZWN0ZWREYXRhcG9pbnRzID0gbmV3IEFycmF5PEtQSURldGFpbHM+KCk7XG4gIEBJbnB1dCgpIGRlZmF1bHRBY3RpdmVTdGF0ZSA9IHRydWU7XG4gIEBJbnB1dCgpIGlnbm9yZURhdGFwb2ludFRlbXBsYXRlcyA9IGZhbHNlO1xuICBASW5wdXQoKSBkYXRhcG9pbnRUZW1wbGF0ZXNPbmx5ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGd1ZXNzRGF0YXBvaW50VW5pdCA9IHRydWU7XG4gIEBJbnB1dCgpIGFsbG93U2VhcmNoID0gdHJ1ZTtcbiAgQElucHV0KCkgaGlkZVNlbGVjdGlvbiA9IGZhbHNlO1xuICBASW5wdXQoKSBpdGVtc0VkaXRhYmxlID0gdHJ1ZTtcbiAgc2VhcmNoU3RyaW5nID0gJyc7XG4gIG1heE51bWJlck9mRGF0YXBvaW50cyA9IDUwO1xuICBzZWxlY3RvclRpdGxlOiBzdHJpbmc7XG4gIGVtcHR5U3RhdGVUaXRsZTogc3RyaW5nO1xuICBzZWxlY3RlZExpc3RUaXRsZTogc3RyaW5nO1xuICBBZGRCdXR0b25UeXBlcyA9IEFkZEJ1dHRvblR5cGVzO1xuXG4gIGxvYWRpbmdEYXRhcG9pbnRzID0gZmFsc2U7XG4gIGFzc2V0U2VsZWN0aW9uID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJSWRlbnRpZmllZD4obnVsbCk7XG4gIGRhdGFwb2ludHMkOiBPYnNlcnZhYmxlPEtQSURldGFpbHNbXT47XG4gIGZpbHRlcmVkRGF0YXBvaW50cyQ6IE9ic2VydmFibGU8S1BJRGV0YWlsc1tdPjtcbiAgc2VhcmNoU3RyaW5nQ2hhbmdlcyQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgZGF0YXBvaW50TGlicmFyeUVudHJpZXM6IE9ic2VydmFibGU8SVJlc3VsdExpc3Q8TWFuYWdlZE9iamVjdEtQST4+O1xuXG4gIGVtcHR5U3RhdGVTdWJ0aXRsZVdoZW5Ob01hdGNoaW5nRGF0YVBvaW50cyA9IGdldHRleHQoJ1RyeSBhbm90aGVyIHNlYXJjaCB0ZXJtLicpO1xuICBlbXB0eVN0YXRlU3VidGl0bGVXaGVuTm9EYXRhUG9pbnRzSW5Bc3NldCA9IGdldHRleHQoXG4gICAgJ1NlbGVjdCBhbiBhc3NldCB3aXRoIGRhdGEgcG9pbnRzIGZyb20gdGhlIGxpc3QuJ1xuICApO1xuXG4gIHByaXZhdGUgc2VhcmNoU3RyaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoJycpO1xuICBwcml2YXRlIHRvdWNoZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBvbkNoYW5nZTogKHF1YW50aXR5OiBLUElEZXRhaWxzW10pID0+IHZvaWQ7XG4gIHByaXZhdGUgb25Ub3VjaGVkOiAoKSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0YXBvaW50U2VydmljZTogRGF0YXBvaW50TGlicmFyeVNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RvclRpdGxlID0gdGhpcy5kYXRhcG9pbnRUZW1wbGF0ZXNPbmx5XG4gICAgICA/IGdldHRleHQoJ0F2YWlsYWJsZSBkYXRhIHBvaW50IHRlbXBsYXRlcycpXG4gICAgICA6IGdldHRleHQoJ0F2YWlsYWJsZSBkYXRhIHBvaW50cycpO1xuICAgIHRoaXMuZW1wdHlTdGF0ZVRpdGxlID0gdGhpcy5kYXRhcG9pbnRUZW1wbGF0ZXNPbmx5XG4gICAgICA/IGdldHRleHQoJ05vIGRhdGEgcG9pbnQgdGVtcGxhdGVzIHRvIGRpc3BsYXkuJylcbiAgICAgIDogZ2V0dGV4dCgnTm8gZGF0YSBwb2ludHMgdG8gZGlzcGxheS4nKTtcbiAgICB0aGlzLnNlbGVjdGVkTGlzdFRpdGxlID0gdGhpcy5kYXRhcG9pbnRUZW1wbGF0ZXNPbmx5XG4gICAgICA/IGdldHRleHQoJ1NlbGVjdGVkIGRhdGEgcG9pbnQgdGVtcGxhdGVzJylcbiAgICAgIDogZ2V0dGV4dCgnU2VsZWN0ZWQgZGF0YSBwb2ludHMnKTtcbiAgICB0aGlzLnNldHVwT2JzZXJ2YWJsZXMoKTtcbiAgICBpZiAoIXRoaXMuaWdub3JlRGF0YXBvaW50VGVtcGxhdGVzKSB7XG4gICAgICB0aGlzLmRhdGFwb2ludExpYnJhcnlFbnRyaWVzID0gZnJvbSh0aGlzLmRhdGFwb2ludFNlcnZpY2UuZ2V0Rmlyc3REYXRhcG9pbnRMaWJyYXJ5UGFnZSgpKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb250ZXh0QXNzZXQpIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlZCh0aGlzLmNvbnRleHRBc3NldCk7XG4gICAgfVxuICB9XG5cbiAgd3JpdGVWYWx1ZShvYmo6IEtQSURldGFpbHNbXSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWREYXRhcG9pbnRzID0gb2JqO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBkYXRhcG9pbnRBZGRlZChkcDogS1BJRGV0YWlscyk6IHZvaWQge1xuICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xuICAgIGRwLl9fYWN0aXZlID0gdGhpcy5kZWZhdWx0QWN0aXZlU3RhdGU7XG4gICAgaWYgKHRoaXMuZ3Vlc3NEYXRhcG9pbnRVbml0ICYmICFkcC51bml0KSB7XG4gICAgICB0aGlzLmRhdGFwb2ludFNlcnZpY2UuZ3Vlc3NVbml0T2ZEYXRhcG9pbnQoZHAuZnJhZ21lbnQsIGRwLnNlcmllcywgZHAuX190YXJnZXQpLnRoZW4odW5pdCA9PiB7XG4gICAgICAgIGRwLnVuaXQgPSB1bml0O1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWREYXRhcG9pbnRzID0gWy4uLnRoaXMuc2VsZWN0ZWREYXRhcG9pbnRzLCBkcF07XG4gICAgdGhpcy5lbWl0Q3VycmVudFNlbGVjdGlvbigpO1xuICB9XG5cbiAgZGF0YXBvaW50UmVtb3ZlZChkcDogS1BJRGV0YWlscyk6IHZvaWQge1xuICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xuICAgIHRoaXMuc2VsZWN0ZWREYXRhcG9pbnRzID0gdGhpcy5zZWxlY3RlZERhdGFwb2ludHMuZmlsdGVyKFxuICAgICAgdG1wID0+XG4gICAgICAgIHRtcC5mcmFnbWVudCAhPT0gZHAuZnJhZ21lbnQgfHxcbiAgICAgICAgdG1wLnNlcmllcyAhPT0gZHAuc2VyaWVzIHx8XG4gICAgICAgIHRtcC5fX3RhcmdldD8uaWQgIT09IGRwLl9fdGFyZ2V0Py5pZFxuICAgICk7XG4gICAgdGhpcy5lbWl0Q3VycmVudFNlbGVjdGlvbigpO1xuICB9XG5cbiAgc2VsZWN0aW9uQ2hhbmdlZChldnQ6IElJZGVudGlmaWVkIHwgSUlkZW50aWZpZWRbXSk6IHZvaWQge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGV2dCkgJiYgZXZ0Lmxlbmd0aCAhPT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0QXNzZXQoZXZ0WzBdKTtcbiAgICB9XG5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZXZ0KSAmJiBldnQuaXRlbXMpIHtcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbkNoYW5nZWQoZXZ0Lml0ZW1zKTtcbiAgICB9XG5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZXZ0KSAmJiBldnQuaWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdEFzc2V0KGV2dCk7XG4gICAgfVxuXG4gICAgLy8gcmVzZXQgc2VsZWN0aW9uXG4gICAgdGhpcy5hc3NldFNlbGVjdGlvbi5uZXh0KG51bGwpO1xuICB9XG5cbiAgdHJhY2tCeUZuKF9pbmRleDogbnVtYmVyLCBpdGVtOiBLUElEZXRhaWxzKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7aXRlbS5mcmFnbWVudH0tJHtpdGVtLl9fdGFyZ2V0Py5pZH0tJHtpdGVtLnNlcmllc31gO1xuICB9XG5cbiAgc2VhcmNoU3RyaW5nQ2hhbmdlZChuZXdWYWx1ZSA9ICcnKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hTdHJpbmckLm5leHQobmV3VmFsdWUpO1xuICAgIHRoaXMuc2VhcmNoU3RyaW5nID0gbmV3VmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHNldHVwT2JzZXJ2YWJsZXMoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhcG9pbnRzJCA9IHRoaXMuYXNzZXRTZWxlY3Rpb24ucGlwZShcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIHRoaXMubG9hZGluZ0RhdGFwb2ludHMgPSB0cnVlO1xuICAgICAgfSksXG4gICAgICBzd2l0Y2hNYXAoYXNzZXQgPT5cbiAgICAgICAgYXNzZXQ/LmlkXG4gICAgICAgICAgPyB0aGlzLmRhdGFwb2ludFNlcnZpY2UuZ2V0RGF0YXBvaW50c09mQXNzZXQoXG4gICAgICAgICAgICAgIGFzc2V0LFxuICAgICAgICAgICAgICB0aGlzLmlnbm9yZURhdGFwb2ludFRlbXBsYXRlcyxcbiAgICAgICAgICAgICAgdGhpcy5kYXRhcG9pbnRUZW1wbGF0ZXNPbmx5XG4gICAgICAgICAgICApXG4gICAgICAgICAgOiBbXVxuICAgICAgKSxcbiAgICAgIHRhcCgoKSA9PiAodGhpcy5sb2FkaW5nRGF0YXBvaW50cyA9IGZhbHNlKSksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG5cbiAgICB0aGlzLnNlYXJjaFN0cmluZ0NoYW5nZXMkID0gdGhpcy5zZWFyY2hTdHJpbmckLnBpcGUoXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgZGVib3VuY2VUaW1lKDUwMCksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG5cbiAgICB0aGlzLmZpbHRlcmVkRGF0YXBvaW50cyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLnNlYXJjaFN0cmluZ0NoYW5nZXMkLCB0aGlzLmRhdGFwb2ludHMkXSkucGlwZShcbiAgICAgIG1hcCgoW3NlYXJjaFN0cmluZywgZGF0YXBvaW50c10pID0+IHtcbiAgICAgICAgaWYgKCFzZWFyY2hTdHJpbmcpIHtcbiAgICAgICAgICByZXR1cm4gZGF0YXBvaW50cztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsb3dlckNhc2VTZWFyY2hTdHJpbmcgPSBzZWFyY2hTdHJpbmcudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgcmV0dXJuIGRhdGFwb2ludHMuZmlsdGVyKGRhdGFwb2ludCA9PlxuICAgICAgICAgIHRoaXMuaW5jbHVkZXNTZWFyY2hTdHJpbmcoZGF0YXBvaW50LCBsb3dlckNhc2VTZWFyY2hTdHJpbmcpXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICAgIG1hcChmaWx0ZXJlZCA9PiBmaWx0ZXJlZC5zbGljZSgwLCB0aGlzLm1heE51bWJlck9mRGF0YXBvaW50cykpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0QXNzZXQoYXNzZXQ6IElJZGVudGlmaWVkKSB7XG4gICAgdGhpcy5hc3NldFNlbGVjdGlvbi5uZXh0KGFzc2V0KTtcbiAgICB0aGlzLnNlYXJjaFN0cmluZ0NoYW5nZWQoKTtcbiAgICBpZiAoIXRoaXMuYWxsb3dEYXRhcG9pbnRzRnJvbU11bHRpcGxlQXNzZXRzKSB7XG4gICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjbGVhclNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkRGF0YXBvaW50cyA9IFtdO1xuICAgIHRoaXMuZW1pdEN1cnJlbnRTZWxlY3Rpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdEN1cnJlbnRTZWxlY3Rpb24oKSB7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnNlbGVjdGVkRGF0YXBvaW50cyk7XG4gIH1cblxuICBwcml2YXRlIG1hcmtBc1RvdWNoZWQoKSB7XG4gICAgaWYgKCF0aGlzLnRvdWNoZWQpIHtcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICB0aGlzLnRvdWNoZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5jbHVkZXNTZWFyY2hTdHJpbmcoZGF0YXBvaW50OiBLUElEZXRhaWxzLCBsb3dlckNhc2VTZWFyY2hTdHJpbmc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGxhYmVsID0gZGF0YXBvaW50LmxhYmVsPy50b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChsYWJlbCAmJiBsYWJlbC5pbmNsdWRlcyhsb3dlckNhc2VTZWFyY2hTdHJpbmcpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBmcmFnbWVudCA9IGRhdGFwb2ludC5mcmFnbWVudD8udG9Mb3dlckNhc2UoKTtcbiAgICBpZiAoZnJhZ21lbnQgJiYgZnJhZ21lbnQuaW5jbHVkZXMobG93ZXJDYXNlU2VhcmNoU3RyaW5nKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3Qgc2VyaWVzID0gZGF0YXBvaW50LnNlcmllcz8udG9Mb3dlckNhc2UoKTtcbiAgICBpZiAoc2VyaWVzICYmIHNlcmllcy5pbmNsdWRlcyhsb3dlckNhc2VTZWFyY2hTdHJpbmcpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJkLWdyaWQgZ3JpZF9fcm93LS0xIGZpdC1oXCJcbiAgW25nQ2xhc3NdPVwie1xuICAgICdncmlkX19jb2wtLTMtNi0zLS1tZCc6IGFsbG93Q2hhbmdpbmdDb250ZXh0ICYmICFoaWRlU2VsZWN0aW9uLFxuICAgICdncmlkX19jb2wtLTgtNC0tbWQnOiAhYWxsb3dDaGFuZ2luZ0NvbnRleHQgJiYgIWhpZGVTZWxlY3Rpb24sXG4gICAgJ2dyaWRfX2NvbC0tNC04LS1tZCc6IGFsbG93Q2hhbmdpbmdDb250ZXh0ICYmIGhpZGVTZWxlY3Rpb25cbiAgfVwiXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cImQtZmxleCBkLWNvbCBwLXJlbGF0aXZlIGJnLWxldmVsLTFcIlxuICAgICpuZ0lmPVwiYWxsb3dDaGFuZ2luZ0NvbnRleHRcIlxuICA+XG4gICAgPGM4eS1hc3NldC1zZWxlY3Rvci1taWxsZXJcbiAgICAgIGNsYXNzPVwiZC1jb250ZW50c1wiXG4gICAgICBbKG5nTW9kZWwpXT1cImNvbnRleHRBc3NldFwiXG4gICAgICBbYXNzZXRdPVwiY29udGV4dEFzc2V0XCJcbiAgICAgIChvblNlbGVjdGVkKT1cInNlbGVjdGlvbkNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICBbY29udGFpbmVyXT1cIicnXCJcbiAgICAgIFtjb25maWddPVwie1xuICAgICAgICB2aWV3OiAnbWlsbGVyJyxcbiAgICAgICAgZ3JvdXBzU2VsZWN0YWJsZTogdHJ1ZSxcbiAgICAgICAgY29sdW1uSGVhZGVyczogdHJ1ZSxcbiAgICAgICAgc2hvd0NoaWxkRGV2aWNlczogdHJ1ZSxcbiAgICAgICAgc2hvd1VuYXNzaWduZWREZXZpY2VzOiB0cnVlLFxuICAgICAgICBzaW5nbGVDb2x1bW46IHRydWUsXG4gICAgICAgIHNlYXJjaDogYWxsb3dTZWFyY2gsXG4gICAgICAgIHNob3dGaWx0ZXI6IHRydWVcbiAgICAgIH1cIlxuICAgID48L2M4eS1hc3NldC1zZWxlY3Rvci1taWxsZXI+XG4gIDwvZGl2PlxuICA8IS0tIGNlbnRlciBjb2x1bW4gLS0+XG4gIDxkaXYgY2xhc3M9XCJpbm5lci1zY3JvbGwgYmctY29tcG9uZW50XCI+XG4gICAgPG5nLXRlbXBsYXRlICNub0RldmljZUVtcHR5U3RhdGU+XG4gICAgICA8ZGl2IGNsYXNzPVwicC0xNlwiPlxuICAgICAgICA8Yzh5LXVpLWVtcHR5LXN0YXRlXG4gICAgICAgICAgW2ljb25dPVwiJ2M4eS1kYXRhLXBvaW50cydcIlxuICAgICAgICAgIFt0aXRsZV09XCJlbXB0eVN0YXRlVGl0bGUgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFtzdWJ0aXRsZV09XCInU2VsZWN0IGFuIGFzc2V0IGZyb20gdGhlIGxpc3QuJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgW2hvcml6b250YWxdPVwidHJ1ZVwiXG4gICAgICAgID48L2M4eS11aS1lbXB0eS1zdGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNsb2FkaW5nRGF0YT5cbiAgICAgIDxkaXYgY2xhc3M9XCJwLTE2IHRleHQtY2VudGVyXCI+XG4gICAgICAgIDxjOHktbG9hZGluZz48L2M4eS1sb2FkaW5nPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImJnLWluaGVyaXRcIlxuICAgICAgKm5nSWY9XCJhc3NldFNlbGVjdGlvbiB8IGFzeW5jIGFzIGFzc2V0OyBlbHNlIG5vRGV2aWNlRW1wdHlTdGF0ZVwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cInAtbC0xNiBwLXItMTYgcC10LTggcC1iLTggc3RpY2t5LXRvcCBiZy1pbmhlcml0IHNlcGFyYXRvci1ib3R0b21cIj5cbiAgICAgICAgPHBcbiAgICAgICAgICBjbGFzcz1cInRleHQtbWVkaXVtIHRleHQtdHJ1bmNhdGVcIlxuICAgICAgICAgIFt0aXRsZV09XCJzZWxlY3RvclRpdGxlIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHNlbGVjdG9yVGl0bGUgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9wPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJpbnB1dC1ncm91cCBpbnB1dC1ncm91cC1zZWFyY2ggbS10LTRcIlxuICAgICAgICAgIGlkPVwic2VhcmNoXCJcbiAgICAgICAgICAqbmdJZj1cIiFsb2FkaW5nRGF0YXBvaW50c1wiXG4gICAgICAgID5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNo4oCmXCJcbiAgICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwic2VhcmNoU3RyaW5nXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlYXJjaFN0cmluZ0NoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLWFkZG9uXCI+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBjOHlJY29uPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhc2VhcmNoU3RyaW5nOyBlbHNlIGNsZWFyU2VhcmNoU3RyaW5nXCJcbiAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NsZWFyU2VhcmNoU3RyaW5nPlxuICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1tdXRlZFwiXG4gICAgICAgICAgICAgICAgYzh5SWNvbj1cInRpbWVzXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VhcmNoU3RyaW5nQ2hhbmdlZCgpXCJcbiAgICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlcmVkRGF0YXBvaW50cyQgfCBhc3luYyBhcyBmaWx0ZXJlZERhdGFwb2ludHM7IGVsc2UgbG9hZGluZ0RhdGFcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFsb2FkaW5nRGF0YXBvaW50czsgZWxzZSBsb2FkaW5nRGF0YVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhcG9pbnRzJCB8IGFzeW5jIGFzIGRhdGFwb2ludHNcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJwLTE2XCJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhZmlsdGVyZWREYXRhcG9pbnRzLmxlbmd0aFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxjOHktdWktZW1wdHktc3RhdGVcbiAgICAgICAgICAgICAgICBbaWNvbl09XCInYzh5LWRhdGEtcG9pbnRzJ1wiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cImVtcHR5U3RhdGVUaXRsZSB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW3N1YnRpdGxlXT1cIlxuICAgICAgICAgICAgICAgICAgZGF0YXBvaW50cy5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgPyAoZW1wdHlTdGF0ZVN1YnRpdGxlV2hlbk5vTWF0Y2hpbmdEYXRhUG9pbnRzIHwgdHJhbnNsYXRlKVxuICAgICAgICAgICAgICAgICAgICA6IChlbXB0eVN0YXRlU3VidGl0bGVXaGVuTm9EYXRhUG9pbnRzSW5Bc3NldCB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIFtob3Jpem9udGFsXT1cInRydWVcIlxuICAgICAgICAgICAgICA+PC9jOHktdWktZW1wdHktc3RhdGU+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGM4eS1saXN0LWdyb3VwPlxuICAgICAgICAgICAgICA8Yzh5LWxpc3QtaXRlbVxuICAgICAgICAgICAgICAgIGNsYXNzPVwic3RpY2t5LXRvcFwiXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJ0b3A6IDcycHhcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICBkYXRhcG9pbnRzLmxlbmd0aCA+IG1heE51bWJlck9mRGF0YXBvaW50cyAmJlxuICAgICAgICAgICAgICAgICAgZmlsdGVyZWREYXRhcG9pbnRzLmxlbmd0aCA+PSBtYXhOdW1iZXJPZkRhdGFwb2ludHNcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LXdhcm5pbmcgbS1iLTBcIj5cbiAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICdEdWUgdG8gdGhlIGxhcmdlIG51bWJlciwgb25seSBhIHN1YnNldCBvZiBkYXRhIHBvaW50cyBpcyBkaXNwbGF5ZWQuIFVzZSBzZWFyY2ggdG8gbmFycm93IGRvd24gdGhlIG51bWJlciBvZiByZXN1bHRzLidcbiAgICAgICAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9jOHktbGlzdC1pdGVtPlxuICAgICAgICAgICAgICA8Yzh5LWRhdGFwb2ludC1zZWxlY3Rvci1saXN0LWl0ZW1cbiAgICAgICAgICAgICAgICBjbGFzcz1cImQtY29udGVudHNcIlxuICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImRwXCJcbiAgICAgICAgICAgICAgICBbaXNTZWxlY3RlZF09XCJzZWxlY3RlZERhdGFwb2ludHMgfCBpbmNsdWRlc0RhdGFwb2ludDogZHBcIlxuICAgICAgICAgICAgICAgIFtkYXRhcG9pbnRMaWJyYXJ5RW50cmllc109XCJkYXRhcG9pbnRMaWJyYXJ5RW50cmllc1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVUeXBlYWhlYWRJZlNlbGVjdGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFthZGRCdXR0b25UeXBlXT1cImhpZGVTZWxlY3Rpb24gPyBBZGRCdXR0b25UeXBlcy5zZWxlY3QgOiBBZGRCdXR0b25UeXBlcy5hZGRSZW1vdmVcIlxuICAgICAgICAgICAgICAgIChhZGRlZCk9XCJkYXRhcG9pbnRBZGRlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAocmVtb3ZlZCk9XCJkYXRhcG9pbnRSZW1vdmVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFtoaWdobGlnaHRUZXh0XT1cInNlYXJjaFN0cmluZ0NoYW5nZXMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkcCBvZiBmaWx0ZXJlZERhdGFwb2ludHM7IHRyYWNrQnk6IHRyYWNrQnlGblwiXG4gICAgICAgICAgICAgICAgW2VkaXRhYmxlXT1cIml0ZW1zRWRpdGFibGVcIlxuICAgICAgICAgICAgICA+PC9jOHktZGF0YXBvaW50LXNlbGVjdG9yLWxpc3QtaXRlbT5cbiAgICAgICAgICAgIDwvYzh5LWxpc3QtZ3JvdXA+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8IS0tIGxhc3QgY29sdW1uICAtLT5cbiAgPGRpdlxuICAgIGNsYXNzPVwiaW5uZXItc2Nyb2xsIGJnLWxldmVsLTFcIlxuICAgICpuZ0lmPVwiIWhpZGVTZWxlY3Rpb25cIlxuICA+XG4gICAgPHBcbiAgICAgIGNsYXNzPVwidGV4dC1tZWRpdW0gcC1sLTE2IHAtci0xNiBwLXQtOCBwLWItOCBzZXBhcmF0b3ItYm90dG9tIHN0aWNreS10b3AgdGV4dC10cnVuY2F0ZVwiXG4gICAgICBbdGl0bGVdPVwic2VsZWN0ZWRMaXN0VGl0bGUgfCB0cmFuc2xhdGVcIlxuICAgID5cbiAgICAgIHt7IHNlbGVjdGVkTGlzdFRpdGxlIHwgdHJhbnNsYXRlIH19XG4gICAgPC9wPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtd3JhcCBnYXAtOCBwLWwtMTYgcC1yLTE2IHAtdC04IHAtYi0xNlwiXG4gICAgICAqbmdJZj1cInNlbGVjdGVkRGF0YXBvaW50cz8ubGVuZ3RoXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiYzh5LWRhdGFwb2ludC1waWxsXCJcbiAgICAgICAgKm5nRm9yPVwibGV0IHNlbGVjdGVkRHAgb2Ygc2VsZWN0ZWREYXRhcG9pbnRzXCJcbiAgICAgID5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYzh5LWRhdGFwb2ludC1waWxsX19idG5cIlxuICAgICAgICAgIFt0aXRsZV09XCInUmVtb3ZlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cImRhdGFwb2ludFJlbW92ZWQoc2VsZWN0ZWREcClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGlcbiAgICAgICAgICAgIGNsYXNzPVwiaWNvbi0xNFwiXG4gICAgICAgICAgICBjOHlJY29uPVwicmVtb3ZlXCJcbiAgICAgICAgICA+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiYzh5LWRhdGFwb2ludC1waWxsX19sYWJlbFwiXG4gICAgICAgICAgW3RpdGxlXT1cInNlbGVjdGVkRHAgfCBkYXRhcG9pbnRMYWJlbDogeyBkb05vdFVzZUxhYmVsOiB0cnVlLCBpbmNsdWRlRGV2aWNlOiB0cnVlIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGlcbiAgICAgICAgICAgIGNsYXNzPVwibS1yLTQgaWNvbi0xNFwiXG4gICAgICAgICAgICBjOHlJY29uPVwiY2lyY2xlXCJcbiAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJzZWxlY3RlZERwLmNvbG9yXCJcbiAgICAgICAgICA+PC9pPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCI+e3sgc2VsZWN0ZWREcCB8IGRhdGFwb2ludExhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgPHNtYWxsXG4gICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1tdXRlZCB0ZXh0LTEwXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RlZERwPy5fX3RhcmdldD8ubmFtZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IHNlbGVjdGVkRHA/Ll9fdGFyZ2V0Py5uYW1lIH19XG4gICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInAtci04XCJcbiAgICAgICpuZ0lmPVwiIXNlbGVjdGVkRGF0YXBvaW50cyB8fCAhc2VsZWN0ZWREYXRhcG9pbnRzLmxlbmd0aFwiXG4gICAgPlxuICAgICAgPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAgICAgICBbaWNvbl09XCInYzh5LWRhdGEtcG9pbnRzJ1wiXG4gICAgICAgIFt0aXRsZV09XCJlbXB0eVN0YXRlVGl0bGUgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbc3VidGl0bGVdPVwiXG4gICAgICAgICAgJ1NlbGVjdCB0aGUgYXNzZXQsIHRoZW4gb24gdGhlIGF2YWlsYWJsZSBkYXRhIHBvaW50cyBsaXN0LCBjbGljayBvbiB0aGUgcGx1cyBidXR0b24gb24gdGhlIGRlc2lyZWQgZGF0YSBwb2ludC4nXG4gICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICBcIlxuICAgICAgICBbaG9yaXpvbnRhbF09XCJ0cnVlXCJcbiAgICAgID48L2M4eS11aS1lbXB0eS1zdGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -37,10 +37,10 @@ export class PackageVersionsComponent {
37
37
  }
38
38
  }
39
39
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PackageVersionsComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.ContextRouteService }, { token: i2.PluginsService }], target: i0.ɵɵFactoryTarget.Component }); }
40
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PackageVersionsComponent, selector: "c8y-package-versions", ngImport: i0, template: "<c8y-title>{{ package?.name | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-atom'\"\n [label]=\"'Ecosystem' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'big-parcel'\"\n [label]=\"'Extensions' | translate\"\n [path]=\"'ecosystem/extension/extensions'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"package?.name | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Versions' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<div\n class=\"card content-fullpage d-grid\"\n [ngClass]=\"{ 'grid__col--6-6-0': !selectedPlugin, 'grid__col--0-6-6': !!selectedPlugin }\"\n>\n <c8y-package-versions-list\n class=\"d-contents\"\n (onVersionSelect)=\"selectVersion($event)\"\n ></c8y-package-versions-list>\n\n <!-- Package contents -->\n <div\n class=\"inner-scroll split-view__detail\"\n [ngClass]=\"{ 'split-view__detail--selected': selectedVersion }\"\n >\n <div class=\"large-padding card-header separator visible-sm visible-xs fit-w sticky-top\">\n <div class=\"d-flex a-i-center\">\n <button\n class=\"btn-clean text-primary m-r-8\"\n title=\"{{ 'Back' | translate }}\"\n (click)=\"clearSelectedVersion()\"\n >\n <i c8yIcon=\"chevron-left\"></i>\n <span translate>Back</span>\n </button>\n <div\n class=\"card-title\"\n translate\n >\n {{ packageContentsTitle | translate: { selectedVersion } }}\n </div>\n </div>\n </div>\n <div class=\"card-header large-padding separator sticky-top visible-md visible-lg\">\n <div class=\"card-title\">\n <ng-container *ngIf=\"selectedVersion\">\n {{ packageContentsTitle | translate: { selectedVersion } }}\n </ng-container>\n </div>\n </div>\n <div class=\"inner-scroll split-view__list\">\n <c8y-package-contents\n [selectedVersion]=\"selectedVersion\"\n [selectedPlugin]=\"selectedPlugin\"\n (showOverview)=\"showPluginOverview($event)\"\n ></c8y-package-contents>\n </div>\n </div>\n\n <!-- Plugin readme -->\n <div\n class=\"inner-scroll split-view__detail\"\n [ngClass]=\"{ 'split-view__detail--selected': selectedPlugin }\"\n >\n <div\n class=\"card-header separator sticky-top\"\n *ngIf=\"selectedPlugin\"\n >\n <button\n class=\"btn-clean\"\n (click)=\"closeOverview()\"\n >\n <i c8yIcon=\"caret-back\"></i>\n {{ 'Back to package versions overview ' | translate }}\n </button>\n </div>\n <div\n class=\"card-block p-l-16 p-r-16 overflow-visible\"\n *ngIf=\"selectedPlugin\"\n >\n <div\n class=\"markdown-content\"\n *ngIf=\"pluginMarkdown\"\n [innerHTML]=\"pluginMarkdown | markdownToHtml: { baseUrl: pluginBaseUrl } | async\"\n ></div>\n <c8y-ui-empty-state\n [icon]=\"'user-manual'\"\n [title]=\"'No README.md found for plugin' | translate\"\n [subtitle]=\"\n 'To view the contents of &quot;README&quot;, add the file &quot;README.md&quot; to the plugin.'\n | translate\n \"\n *ngIf=\"!pluginMarkdown\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i2.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i2.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: i2.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: i4.PackageContentsComponent, selector: "c8y-package-contents", inputs: ["selectedVersion", "selectedPlugin"], outputs: ["showOverview"] }, { kind: "component", type: i5.PackageVersionsListComponent, selector: "c8y-package-versions-list", outputs: ["onVersionSelect"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.HumanizeAppNamePipe, name: "humanizeAppName" }, { kind: "pipe", type: i2.MarkdownToHtmlPipe, name: "markdownToHtml" }] }); }
40
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PackageVersionsComponent, selector: "c8y-package-versions", ngImport: i0, template: "<c8y-title>{{ package?.name | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-atom'\"\n [label]=\"'Ecosystem' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'big-parcel'\"\n [label]=\"'Extensions' | translate\"\n [path]=\"'ecosystem/extension/extensions'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"package?.name | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Versions' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<div\n class=\"card content-fullpage d-grid\"\n [ngClass]=\"{ 'grid__col--6-6-0': !selectedPlugin, 'grid__col--0-6-6': !!selectedPlugin }\"\n>\n <c8y-package-versions-list\n class=\"d-contents\"\n (onVersionSelect)=\"selectVersion($event)\"\n ></c8y-package-versions-list>\n\n <!-- Package contents -->\n <div\n class=\"inner-scroll split-view__detail\"\n [ngClass]=\"{ 'split-view__detail--selected': selectedVersion }\"\n >\n <div class=\"large-padding card-header separator visible-sm visible-xs fit-w sticky-top\">\n <div class=\"d-flex a-i-center\">\n <button\n class=\"btn-clean text-primary m-r-8\"\n title=\"{{ 'Back' | translate }}\"\n (click)=\"clearSelectedVersion()\"\n >\n <i c8yIcon=\"chevron-left\"></i>\n <span translate>Back</span>\n </button>\n <div class=\"card-title\">\n {{ packageContentsTitle | translate: { selectedVersion } }}\n </div>\n </div>\n </div>\n <div class=\"card-header large-padding separator sticky-top visible-md visible-lg\">\n <div class=\"card-title\">\n <ng-container *ngIf=\"selectedVersion\">\n {{ packageContentsTitle | translate: { selectedVersion } }}\n </ng-container>\n </div>\n </div>\n <div class=\"inner-scroll split-view__list\">\n <c8y-package-contents\n [selectedVersion]=\"selectedVersion\"\n [selectedPlugin]=\"selectedPlugin\"\n (showOverview)=\"showPluginOverview($event)\"\n ></c8y-package-contents>\n </div>\n </div>\n\n <!-- Plugin readme -->\n <div\n class=\"inner-scroll split-view__detail\"\n [ngClass]=\"{ 'split-view__detail--selected': selectedPlugin }\"\n >\n <div\n class=\"card-header separator sticky-top\"\n *ngIf=\"selectedPlugin\"\n >\n <button\n class=\"btn-clean\"\n (click)=\"closeOverview()\"\n >\n <i c8yIcon=\"caret-back\"></i>\n {{ 'Back to package versions overview ' | translate }}\n </button>\n </div>\n <div\n class=\"card-block p-l-16 p-r-16 overflow-visible\"\n *ngIf=\"selectedPlugin\"\n >\n <div\n class=\"markdown-content\"\n *ngIf=\"pluginMarkdown\"\n [innerHTML]=\"pluginMarkdown | markdownToHtml: { baseUrl: pluginBaseUrl } | async\"\n ></div>\n <c8y-ui-empty-state\n [icon]=\"'user-manual'\"\n [title]=\"'No README.md found for plugin' | translate\"\n [subtitle]=\"\n 'To view the contents of &quot;README&quot;, add the file &quot;README.md&quot; to the plugin.'\n | translate\n \"\n *ngIf=\"!pluginMarkdown\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i2.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i2.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: i2.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: i4.PackageContentsComponent, selector: "c8y-package-contents", inputs: ["selectedVersion", "selectedPlugin"], outputs: ["showOverview"] }, { kind: "component", type: i5.PackageVersionsListComponent, selector: "c8y-package-versions-list", outputs: ["onVersionSelect"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.HumanizeAppNamePipe, name: "humanizeAppName" }, { kind: "pipe", type: i2.MarkdownToHtmlPipe, name: "markdownToHtml" }] }); }
41
41
  }
42
42
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PackageVersionsComponent, decorators: [{
43
43
  type: Component,
44
- args: [{ selector: 'c8y-package-versions', template: "<c8y-title>{{ package?.name | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-atom'\"\n [label]=\"'Ecosystem' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'big-parcel'\"\n [label]=\"'Extensions' | translate\"\n [path]=\"'ecosystem/extension/extensions'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"package?.name | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Versions' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<div\n class=\"card content-fullpage d-grid\"\n [ngClass]=\"{ 'grid__col--6-6-0': !selectedPlugin, 'grid__col--0-6-6': !!selectedPlugin }\"\n>\n <c8y-package-versions-list\n class=\"d-contents\"\n (onVersionSelect)=\"selectVersion($event)\"\n ></c8y-package-versions-list>\n\n <!-- Package contents -->\n <div\n class=\"inner-scroll split-view__detail\"\n [ngClass]=\"{ 'split-view__detail--selected': selectedVersion }\"\n >\n <div class=\"large-padding card-header separator visible-sm visible-xs fit-w sticky-top\">\n <div class=\"d-flex a-i-center\">\n <button\n class=\"btn-clean text-primary m-r-8\"\n title=\"{{ 'Back' | translate }}\"\n (click)=\"clearSelectedVersion()\"\n >\n <i c8yIcon=\"chevron-left\"></i>\n <span translate>Back</span>\n </button>\n <div\n class=\"card-title\"\n translate\n >\n {{ packageContentsTitle | translate: { selectedVersion } }}\n </div>\n </div>\n </div>\n <div class=\"card-header large-padding separator sticky-top visible-md visible-lg\">\n <div class=\"card-title\">\n <ng-container *ngIf=\"selectedVersion\">\n {{ packageContentsTitle | translate: { selectedVersion } }}\n </ng-container>\n </div>\n </div>\n <div class=\"inner-scroll split-view__list\">\n <c8y-package-contents\n [selectedVersion]=\"selectedVersion\"\n [selectedPlugin]=\"selectedPlugin\"\n (showOverview)=\"showPluginOverview($event)\"\n ></c8y-package-contents>\n </div>\n </div>\n\n <!-- Plugin readme -->\n <div\n class=\"inner-scroll split-view__detail\"\n [ngClass]=\"{ 'split-view__detail--selected': selectedPlugin }\"\n >\n <div\n class=\"card-header separator sticky-top\"\n *ngIf=\"selectedPlugin\"\n >\n <button\n class=\"btn-clean\"\n (click)=\"closeOverview()\"\n >\n <i c8yIcon=\"caret-back\"></i>\n {{ 'Back to package versions overview ' | translate }}\n </button>\n </div>\n <div\n class=\"card-block p-l-16 p-r-16 overflow-visible\"\n *ngIf=\"selectedPlugin\"\n >\n <div\n class=\"markdown-content\"\n *ngIf=\"pluginMarkdown\"\n [innerHTML]=\"pluginMarkdown | markdownToHtml: { baseUrl: pluginBaseUrl } | async\"\n ></div>\n <c8y-ui-empty-state\n [icon]=\"'user-manual'\"\n [title]=\"'No README.md found for plugin' | translate\"\n [subtitle]=\"\n 'To view the contents of &quot;README&quot;, add the file &quot;README.md&quot; to the plugin.'\n | translate\n \"\n *ngIf=\"!pluginMarkdown\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n </div>\n</div>\n" }]
44
+ args: [{ selector: 'c8y-package-versions', template: "<c8y-title>{{ package?.name | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-atom'\"\n [label]=\"'Ecosystem' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'big-parcel'\"\n [label]=\"'Extensions' | translate\"\n [path]=\"'ecosystem/extension/extensions'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"package?.name | humanizeAppName | async\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'Versions' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<div\n class=\"card content-fullpage d-grid\"\n [ngClass]=\"{ 'grid__col--6-6-0': !selectedPlugin, 'grid__col--0-6-6': !!selectedPlugin }\"\n>\n <c8y-package-versions-list\n class=\"d-contents\"\n (onVersionSelect)=\"selectVersion($event)\"\n ></c8y-package-versions-list>\n\n <!-- Package contents -->\n <div\n class=\"inner-scroll split-view__detail\"\n [ngClass]=\"{ 'split-view__detail--selected': selectedVersion }\"\n >\n <div class=\"large-padding card-header separator visible-sm visible-xs fit-w sticky-top\">\n <div class=\"d-flex a-i-center\">\n <button\n class=\"btn-clean text-primary m-r-8\"\n title=\"{{ 'Back' | translate }}\"\n (click)=\"clearSelectedVersion()\"\n >\n <i c8yIcon=\"chevron-left\"></i>\n <span translate>Back</span>\n </button>\n <div class=\"card-title\">\n {{ packageContentsTitle | translate: { selectedVersion } }}\n </div>\n </div>\n </div>\n <div class=\"card-header large-padding separator sticky-top visible-md visible-lg\">\n <div class=\"card-title\">\n <ng-container *ngIf=\"selectedVersion\">\n {{ packageContentsTitle | translate: { selectedVersion } }}\n </ng-container>\n </div>\n </div>\n <div class=\"inner-scroll split-view__list\">\n <c8y-package-contents\n [selectedVersion]=\"selectedVersion\"\n [selectedPlugin]=\"selectedPlugin\"\n (showOverview)=\"showPluginOverview($event)\"\n ></c8y-package-contents>\n </div>\n </div>\n\n <!-- Plugin readme -->\n <div\n class=\"inner-scroll split-view__detail\"\n [ngClass]=\"{ 'split-view__detail--selected': selectedPlugin }\"\n >\n <div\n class=\"card-header separator sticky-top\"\n *ngIf=\"selectedPlugin\"\n >\n <button\n class=\"btn-clean\"\n (click)=\"closeOverview()\"\n >\n <i c8yIcon=\"caret-back\"></i>\n {{ 'Back to package versions overview ' | translate }}\n </button>\n </div>\n <div\n class=\"card-block p-l-16 p-r-16 overflow-visible\"\n *ngIf=\"selectedPlugin\"\n >\n <div\n class=\"markdown-content\"\n *ngIf=\"pluginMarkdown\"\n [innerHTML]=\"pluginMarkdown | markdownToHtml: { baseUrl: pluginBaseUrl } | async\"\n ></div>\n <c8y-ui-empty-state\n [icon]=\"'user-manual'\"\n [title]=\"'No README.md found for plugin' | translate\"\n [subtitle]=\"\n 'To view the contents of &quot;README&quot;, add the file &quot;README.md&quot; to the plugin.'\n | translate\n \"\n *ngIf=\"!pluginMarkdown\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n </div>\n</div>\n" }]
45
45
  }], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i2.ContextRouteService }, { type: i2.PluginsService }] });
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZXMtdmVyc2lvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vZWNvc3lzdGVtL3BhY2thZ2VzL3BhY2thZ2UtdmVyc2lvbnMvcGFja2FnZXMtdmVyc2lvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vZWNvc3lzdGVtL3BhY2thZ2VzL3BhY2thZ2UtdmVyc2lvbnMvcGFja2FnZXMtdmVyc2lvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFakQsT0FBTyxFQUVMLG1CQUFtQixFQUNuQixPQUFPLEVBQ1AsY0FBYyxFQUNmLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7QUFNN0IsTUFBTSxPQUFPLHdCQUF3QjtJQVFuQyxZQUNVLGNBQThCLEVBQzlCLG1CQUF3QyxFQUN4QyxjQUE4QjtRQUY5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFWeEMsWUFBTyxHQUFpQixFQUFFLENBQUM7UUFLM0IseUJBQW9CLEdBQUcsT0FBTyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7SUFNOUUsQ0FBQztJQUVKLEtBQUssQ0FBQyxRQUFRO1FBQ1osSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxXQUFXLENBQUM7SUFDM0YsQ0FBQztJQUVELEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxNQUF5QjtRQUNoRCxJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQztRQUM3QixNQUFNLE9BQU8sR0FBRyxTQUFTLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQztRQUM3QixJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO0lBQzdCLENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVELGFBQWEsQ0FBQyxPQUFlO1FBQzNCLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQztZQUMvQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7K0dBdENVLHdCQUF3QjttR0FBeEIsd0JBQXdCLDREQ2RyQyw0MEdBdUdBOzs0RkR6RmEsd0JBQXdCO2tCQUpwQyxTQUFTOytCQUNFLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSUFwcGxpY2F0aW9uIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25QbHVnaW4sXG4gIENvbnRleHRSb3V0ZVNlcnZpY2UsXG4gIGdldHRleHQsXG4gIFBsdWdpbnNTZXJ2aWNlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktcGFja2FnZS12ZXJzaW9ucycsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWNrYWdlcy12ZXJzaW9ucy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgUGFja2FnZVZlcnNpb25zQ29tcG9uZW50IHtcbiAgcGFja2FnZTogSUFwcGxpY2F0aW9uID0ge307XG4gIHNlbGVjdGVkVmVyc2lvbjogc3RyaW5nO1xuICBzZWxlY3RlZFBsdWdpbjogQXBwbGljYXRpb25QbHVnaW47XG4gIHBsdWdpbkJhc2VVcmw6IHN0cmluZztcbiAgcGx1Z2luTWFya2Rvd246IHN0cmluZztcbiAgcGFja2FnZUNvbnRlbnRzVGl0bGUgPSBnZXR0ZXh0KCdWZXJzaW9uIHt7IHNlbGVjdGVkVmVyc2lvbiB9fSBwYWNrYWdlIGNvbnRlbnRzJyk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBjb250ZXh0Um91dGVTZXJ2aWNlOiBDb250ZXh0Um91dGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGx1Z2luc1NlcnZpY2U6IFBsdWdpbnNTZXJ2aWNlXG4gICkge31cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnBhY2thZ2UgPSB0aGlzLmNvbnRleHRSb3V0ZVNlcnZpY2UuZ2V0Q29udGV4dERhdGEodGhpcy5hY3RpdmF0ZWRSb3V0ZSk/LmNvbnRleHREYXRhO1xuICB9XG5cbiAgYXN5bmMgc2hvd1BsdWdpbk92ZXJ2aWV3KHBsdWdpbjogQXBwbGljYXRpb25QbHVnaW4pIHtcbiAgICB0aGlzLnNlbGVjdGVkUGx1Z2luID0gcGx1Z2luO1xuICAgIGNvbnN0IGJhc2VVcmwgPSBgL2FwcHMvJHtwbHVnaW4uaWR9L2A7XG4gICAgdGhpcy5wbHVnaW5CYXNlVXJsID0gYmFzZVVybDtcbiAgICB0aGlzLnBsdWdpbk1hcmtkb3duID0gYXdhaXQgdGhpcy5wbHVnaW5zU2VydmljZS5nZXRSZWFkbWVGaWxlQ29udGVudChiYXNlVXJsKTtcbiAgfVxuXG4gIGNsb3NlT3ZlcnZpZXcoKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZFBsdWdpbiA9IG51bGw7XG4gIH1cblxuICBjbGVhclNlbGVjdGVkVmVyc2lvbigpIHtcbiAgICB0aGlzLnNlbGVjdGVkVmVyc2lvbiA9IG51bGw7XG4gIH1cblxuICBzZWxlY3RWZXJzaW9uKHZlcnNpb246IHN0cmluZykge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkVmVyc2lvbiAhPT0gdmVyc2lvbikge1xuICAgICAgdGhpcy5zZWxlY3RlZFZlcnNpb24gPSB2ZXJzaW9uO1xuICAgICAgdGhpcy5jbG9zZU92ZXJ2aWV3KCk7XG4gICAgfVxuICB9XG59XG4iLCI8Yzh5LXRpdGxlPnt7IHBhY2thZ2U/Lm5hbWUgfCBodW1hbml6ZUFwcE5hbWUgfCBhc3luYyB9fTwvYzh5LXRpdGxlPlxuXG48Yzh5LWJyZWFkY3J1bWI+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtXG4gICAgW2ljb25dPVwiJ2M4eS1hdG9tJ1wiXG4gICAgW2xhYmVsXT1cIidFY29zeXN0ZW0nIHwgdHJhbnNsYXRlXCJcbiAgPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW1cbiAgICBbaWNvbl09XCInYmlnLXBhcmNlbCdcIlxuICAgIFtsYWJlbF09XCInRXh0ZW5zaW9ucycgfCB0cmFuc2xhdGVcIlxuICAgIFtwYXRoXT1cIidlY29zeXN0ZW0vZXh0ZW5zaW9uL2V4dGVuc2lvbnMnXCJcbiAgPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW0gW2xhYmVsXT1cInBhY2thZ2U/Lm5hbWUgfCBodW1hbml6ZUFwcE5hbWUgfCBhc3luY1wiPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW0gW2xhYmVsXT1cIidWZXJzaW9ucycgfCB0cmFuc2xhdGVcIj48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG48L2M4eS1icmVhZGNydW1iPlxuXG48ZGl2XG4gIGNsYXNzPVwiY2FyZCBjb250ZW50LWZ1bGxwYWdlIGQtZ3JpZFwiXG4gIFtuZ0NsYXNzXT1cInsgJ2dyaWRfX2NvbC0tNi02LTAnOiAhc2VsZWN0ZWRQbHVnaW4sICdncmlkX19jb2wtLTAtNi02JzogISFzZWxlY3RlZFBsdWdpbiB9XCJcbj5cbiAgPGM4eS1wYWNrYWdlLXZlcnNpb25zLWxpc3RcbiAgICBjbGFzcz1cImQtY29udGVudHNcIlxuICAgIChvblZlcnNpb25TZWxlY3QpPVwic2VsZWN0VmVyc2lvbigkZXZlbnQpXCJcbiAgPjwvYzh5LXBhY2thZ2UtdmVyc2lvbnMtbGlzdD5cblxuICA8IS0tIFBhY2thZ2UgY29udGVudHMgLS0+XG4gIDxkaXZcbiAgICBjbGFzcz1cImlubmVyLXNjcm9sbCBzcGxpdC12aWV3X19kZXRhaWxcIlxuICAgIFtuZ0NsYXNzXT1cInsgJ3NwbGl0LXZpZXdfX2RldGFpbC0tc2VsZWN0ZWQnOiBzZWxlY3RlZFZlcnNpb24gfVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwibGFyZ2UtcGFkZGluZyBjYXJkLWhlYWRlciBzZXBhcmF0b3IgdmlzaWJsZS1zbSB2aXNpYmxlLXhzIGZpdC13IHN0aWNreS10b3BcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYS1pLWNlbnRlclwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJidG4tY2xlYW4gdGV4dC1wcmltYXJ5IG0tci04XCJcbiAgICAgICAgICB0aXRsZT1cInt7ICdCYWNrJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgKGNsaWNrKT1cImNsZWFyU2VsZWN0ZWRWZXJzaW9uKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgYzh5SWNvbj1cImNoZXZyb24tbGVmdFwiPjwvaT5cbiAgICAgICAgICA8c3BhbiB0cmFuc2xhdGU+QmFjazwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImNhcmQtdGl0bGVcIlxuICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICA+XG4gICAgICAgICAge3sgcGFja2FnZUNvbnRlbnRzVGl0bGUgfCB0cmFuc2xhdGU6IHsgc2VsZWN0ZWRWZXJzaW9uIH0gfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgbGFyZ2UtcGFkZGluZyBzZXBhcmF0b3Igc3RpY2t5LXRvcCB2aXNpYmxlLW1kIHZpc2libGUtbGdcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZFZlcnNpb25cIj5cbiAgICAgICAgICB7eyBwYWNrYWdlQ29udGVudHNUaXRsZSB8IHRyYW5zbGF0ZTogeyBzZWxlY3RlZFZlcnNpb24gfSB9fVxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJpbm5lci1zY3JvbGwgc3BsaXQtdmlld19fbGlzdFwiPlxuICAgICAgPGM4eS1wYWNrYWdlLWNvbnRlbnRzXG4gICAgICAgIFtzZWxlY3RlZFZlcnNpb25dPVwic2VsZWN0ZWRWZXJzaW9uXCJcbiAgICAgICAgW3NlbGVjdGVkUGx1Z2luXT1cInNlbGVjdGVkUGx1Z2luXCJcbiAgICAgICAgKHNob3dPdmVydmlldyk9XCJzaG93UGx1Z2luT3ZlcnZpZXcoJGV2ZW50KVwiXG4gICAgICA+PC9jOHktcGFja2FnZS1jb250ZW50cz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBQbHVnaW4gcmVhZG1lIC0tPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJpbm5lci1zY3JvbGwgc3BsaXQtdmlld19fZGV0YWlsXCJcbiAgICBbbmdDbGFzc109XCJ7ICdzcGxpdC12aWV3X19kZXRhaWwtLXNlbGVjdGVkJzogc2VsZWN0ZWRQbHVnaW4gfVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImNhcmQtaGVhZGVyIHNlcGFyYXRvciBzdGlja3ktdG9wXCJcbiAgICAgICpuZ0lmPVwic2VsZWN0ZWRQbHVnaW5cIlxuICAgID5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJidG4tY2xlYW5cIlxuICAgICAgICAoY2xpY2spPVwiY2xvc2VPdmVydmlldygpXCJcbiAgICAgID5cbiAgICAgICAgPGkgYzh5SWNvbj1cImNhcmV0LWJhY2tcIj48L2k+XG4gICAgICAgIHt7ICdCYWNrIHRvIHBhY2thZ2UgdmVyc2lvbnMgb3ZlcnZpZXcgJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJjYXJkLWJsb2NrIHAtbC0xNiBwLXItMTYgb3ZlcmZsb3ctdmlzaWJsZVwiXG4gICAgICAqbmdJZj1cInNlbGVjdGVkUGx1Z2luXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwibWFya2Rvd24tY29udGVudFwiXG4gICAgICAgICpuZ0lmPVwicGx1Z2luTWFya2Rvd25cIlxuICAgICAgICBbaW5uZXJIVE1MXT1cInBsdWdpbk1hcmtkb3duIHwgbWFya2Rvd25Ub0h0bWw6IHsgYmFzZVVybDogcGx1Z2luQmFzZVVybCB9IHwgYXN5bmNcIlxuICAgICAgPjwvZGl2PlxuICAgICAgPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAgICAgICBbaWNvbl09XCIndXNlci1tYW51YWwnXCJcbiAgICAgICAgW3RpdGxlXT1cIidObyBSRUFETUUubWQgZm91bmQgZm9yIHBsdWdpbicgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbc3VidGl0bGVdPVwiXG4gICAgICAgICAgJ1RvIHZpZXcgdGhlIGNvbnRlbnRzIG9mICZxdW90O1JFQURNRSZxdW90OywgYWRkIHRoZSBmaWxlICZxdW90O1JFQURNRS5tZCZxdW90OyB0byB0aGUgcGx1Z2luLidcbiAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgIFwiXG4gICAgICAgICpuZ0lmPVwiIXBsdWdpbk1hcmtkb3duXCJcbiAgICAgICAgW2hvcml6b250YWxdPVwidHJ1ZVwiXG4gICAgICA+PC9jOHktdWktZW1wdHktc3RhdGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZXMtdmVyc2lvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vZWNvc3lzdGVtL3BhY2thZ2VzL3BhY2thZ2UtdmVyc2lvbnMvcGFja2FnZXMtdmVyc2lvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vZWNvc3lzdGVtL3BhY2thZ2VzL3BhY2thZ2UtdmVyc2lvbnMvcGFja2FnZXMtdmVyc2lvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFakQsT0FBTyxFQUVMLG1CQUFtQixFQUNuQixPQUFPLEVBQ1AsY0FBYyxFQUNmLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7QUFNN0IsTUFBTSxPQUFPLHdCQUF3QjtJQVFuQyxZQUNVLGNBQThCLEVBQzlCLG1CQUF3QyxFQUN4QyxjQUE4QjtRQUY5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFWeEMsWUFBTyxHQUFpQixFQUFFLENBQUM7UUFLM0IseUJBQW9CLEdBQUcsT0FBTyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7SUFNOUUsQ0FBQztJQUVKLEtBQUssQ0FBQyxRQUFRO1FBQ1osSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxXQUFXLENBQUM7SUFDM0YsQ0FBQztJQUVELEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxNQUF5QjtRQUNoRCxJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQztRQUM3QixNQUFNLE9BQU8sR0FBRyxTQUFTLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQztRQUM3QixJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO0lBQzdCLENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVELGFBQWEsQ0FBQyxPQUFlO1FBQzNCLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQztZQUMvQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7K0dBdENVLHdCQUF3QjttR0FBeEIsd0JBQXdCLDREQ2RyQyxreUdBb0dBOzs0RkR0RmEsd0JBQXdCO2tCQUpwQyxTQUFTOytCQUNFLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSUFwcGxpY2F0aW9uIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25QbHVnaW4sXG4gIENvbnRleHRSb3V0ZVNlcnZpY2UsXG4gIGdldHRleHQsXG4gIFBsdWdpbnNTZXJ2aWNlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktcGFja2FnZS12ZXJzaW9ucycsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWNrYWdlcy12ZXJzaW9ucy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgUGFja2FnZVZlcnNpb25zQ29tcG9uZW50IHtcbiAgcGFja2FnZTogSUFwcGxpY2F0aW9uID0ge307XG4gIHNlbGVjdGVkVmVyc2lvbjogc3RyaW5nO1xuICBzZWxlY3RlZFBsdWdpbjogQXBwbGljYXRpb25QbHVnaW47XG4gIHBsdWdpbkJhc2VVcmw6IHN0cmluZztcbiAgcGx1Z2luTWFya2Rvd246IHN0cmluZztcbiAgcGFja2FnZUNvbnRlbnRzVGl0bGUgPSBnZXR0ZXh0KCdWZXJzaW9uIHt7IHNlbGVjdGVkVmVyc2lvbiB9fSBwYWNrYWdlIGNvbnRlbnRzJyk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBjb250ZXh0Um91dGVTZXJ2aWNlOiBDb250ZXh0Um91dGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGx1Z2luc1NlcnZpY2U6IFBsdWdpbnNTZXJ2aWNlXG4gICkge31cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnBhY2thZ2UgPSB0aGlzLmNvbnRleHRSb3V0ZVNlcnZpY2UuZ2V0Q29udGV4dERhdGEodGhpcy5hY3RpdmF0ZWRSb3V0ZSk/LmNvbnRleHREYXRhO1xuICB9XG5cbiAgYXN5bmMgc2hvd1BsdWdpbk92ZXJ2aWV3KHBsdWdpbjogQXBwbGljYXRpb25QbHVnaW4pIHtcbiAgICB0aGlzLnNlbGVjdGVkUGx1Z2luID0gcGx1Z2luO1xuICAgIGNvbnN0IGJhc2VVcmwgPSBgL2FwcHMvJHtwbHVnaW4uaWR9L2A7XG4gICAgdGhpcy5wbHVnaW5CYXNlVXJsID0gYmFzZVVybDtcbiAgICB0aGlzLnBsdWdpbk1hcmtkb3duID0gYXdhaXQgdGhpcy5wbHVnaW5zU2VydmljZS5nZXRSZWFkbWVGaWxlQ29udGVudChiYXNlVXJsKTtcbiAgfVxuXG4gIGNsb3NlT3ZlcnZpZXcoKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZFBsdWdpbiA9IG51bGw7XG4gIH1cblxuICBjbGVhclNlbGVjdGVkVmVyc2lvbigpIHtcbiAgICB0aGlzLnNlbGVjdGVkVmVyc2lvbiA9IG51bGw7XG4gIH1cblxuICBzZWxlY3RWZXJzaW9uKHZlcnNpb246IHN0cmluZykge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkVmVyc2lvbiAhPT0gdmVyc2lvbikge1xuICAgICAgdGhpcy5zZWxlY3RlZFZlcnNpb24gPSB2ZXJzaW9uO1xuICAgICAgdGhpcy5jbG9zZU92ZXJ2aWV3KCk7XG4gICAgfVxuICB9XG59XG4iLCI8Yzh5LXRpdGxlPnt7IHBhY2thZ2U/Lm5hbWUgfCBodW1hbml6ZUFwcE5hbWUgfCBhc3luYyB9fTwvYzh5LXRpdGxlPlxuXG48Yzh5LWJyZWFkY3J1bWI+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtXG4gICAgW2ljb25dPVwiJ2M4eS1hdG9tJ1wiXG4gICAgW2xhYmVsXT1cIidFY29zeXN0ZW0nIHwgdHJhbnNsYXRlXCJcbiAgPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW1cbiAgICBbaWNvbl09XCInYmlnLXBhcmNlbCdcIlxuICAgIFtsYWJlbF09XCInRXh0ZW5zaW9ucycgfCB0cmFuc2xhdGVcIlxuICAgIFtwYXRoXT1cIidlY29zeXN0ZW0vZXh0ZW5zaW9uL2V4dGVuc2lvbnMnXCJcbiAgPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW0gW2xhYmVsXT1cInBhY2thZ2U/Lm5hbWUgfCBodW1hbml6ZUFwcE5hbWUgfCBhc3luY1wiPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW0gW2xhYmVsXT1cIidWZXJzaW9ucycgfCB0cmFuc2xhdGVcIj48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG48L2M4eS1icmVhZGNydW1iPlxuXG48ZGl2XG4gIGNsYXNzPVwiY2FyZCBjb250ZW50LWZ1bGxwYWdlIGQtZ3JpZFwiXG4gIFtuZ0NsYXNzXT1cInsgJ2dyaWRfX2NvbC0tNi02LTAnOiAhc2VsZWN0ZWRQbHVnaW4sICdncmlkX19jb2wtLTAtNi02JzogISFzZWxlY3RlZFBsdWdpbiB9XCJcbj5cbiAgPGM4eS1wYWNrYWdlLXZlcnNpb25zLWxpc3RcbiAgICBjbGFzcz1cImQtY29udGVudHNcIlxuICAgIChvblZlcnNpb25TZWxlY3QpPVwic2VsZWN0VmVyc2lvbigkZXZlbnQpXCJcbiAgPjwvYzh5LXBhY2thZ2UtdmVyc2lvbnMtbGlzdD5cblxuICA8IS0tIFBhY2thZ2UgY29udGVudHMgLS0+XG4gIDxkaXZcbiAgICBjbGFzcz1cImlubmVyLXNjcm9sbCBzcGxpdC12aWV3X19kZXRhaWxcIlxuICAgIFtuZ0NsYXNzXT1cInsgJ3NwbGl0LXZpZXdfX2RldGFpbC0tc2VsZWN0ZWQnOiBzZWxlY3RlZFZlcnNpb24gfVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwibGFyZ2UtcGFkZGluZyBjYXJkLWhlYWRlciBzZXBhcmF0b3IgdmlzaWJsZS1zbSB2aXNpYmxlLXhzIGZpdC13IHN0aWNreS10b3BcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYS1pLWNlbnRlclwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJidG4tY2xlYW4gdGV4dC1wcmltYXJ5IG0tci04XCJcbiAgICAgICAgICB0aXRsZT1cInt7ICdCYWNrJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgKGNsaWNrKT1cImNsZWFyU2VsZWN0ZWRWZXJzaW9uKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgYzh5SWNvbj1cImNoZXZyb24tbGVmdFwiPjwvaT5cbiAgICAgICAgICA8c3BhbiB0cmFuc2xhdGU+QmFjazwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlXCI+XG4gICAgICAgICAge3sgcGFja2FnZUNvbnRlbnRzVGl0bGUgfCB0cmFuc2xhdGU6IHsgc2VsZWN0ZWRWZXJzaW9uIH0gfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgbGFyZ2UtcGFkZGluZyBzZXBhcmF0b3Igc3RpY2t5LXRvcCB2aXNpYmxlLW1kIHZpc2libGUtbGdcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZFZlcnNpb25cIj5cbiAgICAgICAgICB7eyBwYWNrYWdlQ29udGVudHNUaXRsZSB8IHRyYW5zbGF0ZTogeyBzZWxlY3RlZFZlcnNpb24gfSB9fVxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJpbm5lci1zY3JvbGwgc3BsaXQtdmlld19fbGlzdFwiPlxuICAgICAgPGM4eS1wYWNrYWdlLWNvbnRlbnRzXG4gICAgICAgIFtzZWxlY3RlZFZlcnNpb25dPVwic2VsZWN0ZWRWZXJzaW9uXCJcbiAgICAgICAgW3NlbGVjdGVkUGx1Z2luXT1cInNlbGVjdGVkUGx1Z2luXCJcbiAgICAgICAgKHNob3dPdmVydmlldyk9XCJzaG93UGx1Z2luT3ZlcnZpZXcoJGV2ZW50KVwiXG4gICAgICA+PC9jOHktcGFja2FnZS1jb250ZW50cz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBQbHVnaW4gcmVhZG1lIC0tPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJpbm5lci1zY3JvbGwgc3BsaXQtdmlld19fZGV0YWlsXCJcbiAgICBbbmdDbGFzc109XCJ7ICdzcGxpdC12aWV3X19kZXRhaWwtLXNlbGVjdGVkJzogc2VsZWN0ZWRQbHVnaW4gfVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImNhcmQtaGVhZGVyIHNlcGFyYXRvciBzdGlja3ktdG9wXCJcbiAgICAgICpuZ0lmPVwic2VsZWN0ZWRQbHVnaW5cIlxuICAgID5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJidG4tY2xlYW5cIlxuICAgICAgICAoY2xpY2spPVwiY2xvc2VPdmVydmlldygpXCJcbiAgICAgID5cbiAgICAgICAgPGkgYzh5SWNvbj1cImNhcmV0LWJhY2tcIj48L2k+XG4gICAgICAgIHt7ICdCYWNrIHRvIHBhY2thZ2UgdmVyc2lvbnMgb3ZlcnZpZXcgJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJjYXJkLWJsb2NrIHAtbC0xNiBwLXItMTYgb3ZlcmZsb3ctdmlzaWJsZVwiXG4gICAgICAqbmdJZj1cInNlbGVjdGVkUGx1Z2luXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwibWFya2Rvd24tY29udGVudFwiXG4gICAgICAgICpuZ0lmPVwicGx1Z2luTWFya2Rvd25cIlxuICAgICAgICBbaW5uZXJIVE1MXT1cInBsdWdpbk1hcmtkb3duIHwgbWFya2Rvd25Ub0h0bWw6IHsgYmFzZVVybDogcGx1Z2luQmFzZVVybCB9IHwgYXN5bmNcIlxuICAgICAgPjwvZGl2PlxuICAgICAgPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAgICAgICBbaWNvbl09XCIndXNlci1tYW51YWwnXCJcbiAgICAgICAgW3RpdGxlXT1cIidObyBSRUFETUUubWQgZm91bmQgZm9yIHBsdWdpbicgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbc3VidGl0bGVdPVwiXG4gICAgICAgICAgJ1RvIHZpZXcgdGhlIGNvbnRlbnRzIG9mICZxdW90O1JFQURNRSZxdW90OywgYWRkIHRoZSBmaWxlICZxdW90O1JFQURNRS5tZCZxdW90OyB0byB0aGUgcGx1Z2luLidcbiAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgIFwiXG4gICAgICAgICpuZ0lmPVwiIXBsdWdpbk1hcmtkb3duXCJcbiAgICAgICAgW2hvcml6b250YWxdPVwidHJ1ZVwiXG4gICAgICA+PC9jOHktdWktZW1wdHktc3RhdGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -1,11 +1,11 @@
1
1
  import { NgModule } from '@angular/core';
2
- import { hookNavigator, hookRoute, hookTab } from '@c8y/ngx-components';
2
+ import { hookNavigator, hookPreview, hookRoute, hookTab } from '@c8y/ngx-components';
3
3
  import { MessagingNavigatorNodeFactory } from './navigator/messaging-navigator-factory';
4
4
  import { NamespaceListComponent } from './messaging/namespace-list/namespace-list.component';
5
5
  import { TopicListViewComponent } from './messaging/topic/topic-list-view.component';
6
6
  import { TopicSubscribersViewComponent } from './messaging/topic/topic-subscribers-view/topic-subscribers-view.component';
7
7
  import { TopicDetailsTabFactory } from './navigator/topic-details-tab.factory';
8
- import { basePath } from './constants';
8
+ import { basePath, MESSAGING_MANAGEMENT_FEATURE_KEY } from './constants';
9
9
  import { MessagingManagementGuard } from './messaging-management.guard';
10
10
  import * as i0 from "@angular/core";
11
11
  export class MessagingManagementModule {
@@ -35,7 +35,15 @@ export class MessagingManagementModule {
35
35
  }
36
36
  ]),
37
37
  hookTab(TopicDetailsTabFactory),
38
- hookNavigator(MessagingNavigatorNodeFactory)
38
+ hookNavigator(MessagingNavigatorNodeFactory),
39
+ hookPreview({
40
+ key: MESSAGING_MANAGEMENT_FEATURE_KEY,
41
+ label: 'Messaging service - monitoring & management',
42
+ description: () => import('@c8y/style/markdown-files/messaging-management-preview.md').then(m => m.default),
43
+ settings: {
44
+ reload: true
45
+ }
46
+ })
39
47
  ] }); }
40
48
  }
41
49
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MessagingManagementModule, decorators: [{
@@ -65,8 +73,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
65
73
  }
66
74
  ]),
67
75
  hookTab(TopicDetailsTabFactory),
68
- hookNavigator(MessagingNavigatorNodeFactory)
76
+ hookNavigator(MessagingNavigatorNodeFactory),
77
+ hookPreview({
78
+ key: MESSAGING_MANAGEMENT_FEATURE_KEY,
79
+ label: 'Messaging service - monitoring & management',
80
+ description: () => import('@c8y/style/markdown-files/messaging-management-preview.md').then(m => m.default),
81
+ settings: {
82
+ reload: true
83
+ }
84
+ })
69
85
  ]
70
86
  }]
71
87
  }] });
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnaW5nLW1hbmFnZW1lbnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbWVzc2FnaW5nLW1hbmFnZW1lbnQvbWVzc2FnaW5nLW1hbmFnZW1lbnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDeEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDN0YsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDckYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sMkVBQTJFLENBQUM7QUFDMUgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDL0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUE4QnhFLE1BQU0sT0FBTyx5QkFBeUI7K0dBQXpCLHlCQUF5QjtnSEFBekIseUJBQXlCO2dIQUF6Qix5QkFBeUIsYUEzQnpCO1lBQ1QsU0FBUyxDQUFDO2dCQUNSO29CQUNFLElBQUksRUFBRSxRQUFRO29CQUNkLFNBQVMsRUFBRSxzQkFBc0I7b0JBQ2pDLFdBQVcsRUFBRSxDQUFDLHdCQUF3QixDQUFDO2lCQUN4QztnQkFDRDtvQkFDRSxJQUFJLEVBQUUsUUFBUSxHQUFHLHVCQUF1QjtvQkFDeEMsU0FBUyxFQUFFLHNCQUFzQjtvQkFDakMsV0FBVyxFQUFFLENBQUMsd0JBQXdCLENBQUM7aUJBQ3hDO2dCQUNEO29CQUNFLElBQUksRUFBRSxRQUFRLEdBQUcsb0NBQW9DO29CQUNyRCxVQUFVLEVBQUUsUUFBUSxHQUFHLGdEQUFnRDtvQkFDdkUsU0FBUyxFQUFFLE1BQU07aUJBQ2xCO2dCQUNEO29CQUNFLElBQUksRUFBRSxRQUFRLEdBQUcsZ0RBQWdEO29CQUNqRSxTQUFTLEVBQUUsNkJBQTZCO29CQUN4QyxXQUFXLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztpQkFDeEM7YUFDRixDQUFDO1lBQ0YsT0FBTyxDQUFDLHNCQUFzQixDQUFDO1lBQy9CLGFBQWEsQ0FBQyw2QkFBNkIsQ0FBQztTQUM3Qzs7NEZBRVUseUJBQXlCO2tCQTVCckMsUUFBUTttQkFBQztvQkFDUixTQUFTLEVBQUU7d0JBQ1QsU0FBUyxDQUFDOzRCQUNSO2dDQUNFLElBQUksRUFBRSxRQUFRO2dDQUNkLFNBQVMsRUFBRSxzQkFBc0I7Z0NBQ2pDLFdBQVcsRUFBRSxDQUFDLHdCQUF3QixDQUFDOzZCQUN4Qzs0QkFDRDtnQ0FDRSxJQUFJLEVBQUUsUUFBUSxHQUFHLHVCQUF1QjtnQ0FDeEMsU0FBUyxFQUFFLHNCQUFzQjtnQ0FDakMsV0FBVyxFQUFFLENBQUMsd0JBQXdCLENBQUM7NkJBQ3hDOzRCQUNEO2dDQUNFLElBQUksRUFBRSxRQUFRLEdBQUcsb0NBQW9DO2dDQUNyRCxVQUFVLEVBQUUsUUFBUSxHQUFHLGdEQUFnRDtnQ0FDdkUsU0FBUyxFQUFFLE1BQU07NkJBQ2xCOzRCQUNEO2dDQUNFLElBQUksRUFBRSxRQUFRLEdBQUcsZ0RBQWdEO2dDQUNqRSxTQUFTLEVBQUUsNkJBQTZCO2dDQUN4QyxXQUFXLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQzs2QkFDeEM7eUJBQ0YsQ0FBQzt3QkFDRixPQUFPLENBQUMsc0JBQXNCLENBQUM7d0JBQy9CLGFBQWEsQ0FBQyw2QkFBNkIsQ0FBQztxQkFDN0M7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaG9va05hdmlnYXRvciwgaG9va1JvdXRlLCBob29rVGFiIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBNZXNzYWdpbmdOYXZpZ2F0b3JOb2RlRmFjdG9yeSB9IGZyb20gJy4vbmF2aWdhdG9yL21lc3NhZ2luZy1uYXZpZ2F0b3ItZmFjdG9yeSc7XG5pbXBvcnQgeyBOYW1lc3BhY2VMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9tZXNzYWdpbmcvbmFtZXNwYWNlLWxpc3QvbmFtZXNwYWNlLWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IFRvcGljTGlzdFZpZXdDb21wb25lbnQgfSBmcm9tICcuL21lc3NhZ2luZy90b3BpYy90b3BpYy1saXN0LXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IFRvcGljU3Vic2NyaWJlcnNWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi9tZXNzYWdpbmcvdG9waWMvdG9waWMtc3Vic2NyaWJlcnMtdmlldy90b3BpYy1zdWJzY3JpYmVycy12aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUb3BpY0RldGFpbHNUYWJGYWN0b3J5IH0gZnJvbSAnLi9uYXZpZ2F0b3IvdG9waWMtZGV0YWlscy10YWIuZmFjdG9yeSc7XG5pbXBvcnQgeyBiYXNlUGF0aCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IE1lc3NhZ2luZ01hbmFnZW1lbnRHdWFyZCB9IGZyb20gJy4vbWVzc2FnaW5nLW1hbmFnZW1lbnQuZ3VhcmQnO1xuXG5ATmdNb2R1bGUoe1xuICBwcm92aWRlcnM6IFtcbiAgICBob29rUm91dGUoW1xuICAgICAge1xuICAgICAgICBwYXRoOiBiYXNlUGF0aCxcbiAgICAgICAgY29tcG9uZW50OiBOYW1lc3BhY2VMaXN0Q29tcG9uZW50LFxuICAgICAgICBjYW5BY3RpdmF0ZTogW01lc3NhZ2luZ01hbmFnZW1lbnRHdWFyZF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHBhdGg6IGJhc2VQYXRoICsgJy9uYW1lc3BhY2UvOm5hbWVzcGFjZScsXG4gICAgICAgIGNvbXBvbmVudDogVG9waWNMaXN0Vmlld0NvbXBvbmVudCxcbiAgICAgICAgY2FuQWN0aXZhdGU6IFtNZXNzYWdpbmdNYW5hZ2VtZW50R3VhcmRdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBwYXRoOiBiYXNlUGF0aCArICcvbmFtZXNwYWNlLzpuYW1lc3BhY2UvdG9waWMvOnRvcGljJyxcbiAgICAgICAgcmVkaXJlY3RUbzogYmFzZVBhdGggKyAnL25hbWVzcGFjZS86bmFtZXNwYWNlL3RvcGljLzp0b3BpYy9zdWJzY3JpYmVycycsXG4gICAgICAgIHBhdGhNYXRjaDogJ2Z1bGwnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBwYXRoOiBiYXNlUGF0aCArICcvbmFtZXNwYWNlLzpuYW1lc3BhY2UvdG9waWMvOnRvcGljL3N1YnNjcmliZXJzJyxcbiAgICAgICAgY29tcG9uZW50OiBUb3BpY1N1YnNjcmliZXJzVmlld0NvbXBvbmVudCxcbiAgICAgICAgY2FuQWN0aXZhdGU6IFtNZXNzYWdpbmdNYW5hZ2VtZW50R3VhcmRdXG4gICAgICB9XG4gICAgXSksXG4gICAgaG9va1RhYihUb3BpY0RldGFpbHNUYWJGYWN0b3J5KSxcbiAgICBob29rTmF2aWdhdG9yKE1lc3NhZ2luZ05hdmlnYXRvck5vZGVGYWN0b3J5KVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2luZ01hbmFnZW1lbnRNb2R1bGUge31cbiJdfQ==
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnaW5nLW1hbmFnZW1lbnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbWVzc2FnaW5nLW1hbmFnZW1lbnQvbWVzc2FnaW5nLW1hbmFnZW1lbnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDJFQUEyRSxDQUFDO0FBQzFILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxRQUFRLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDekUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBdUN4RSxNQUFNLE9BQU8seUJBQXlCOytHQUF6Qix5QkFBeUI7Z0hBQXpCLHlCQUF5QjtnSEFBekIseUJBQXlCLGFBcEN6QjtZQUNULFNBQVMsQ0FBQztnQkFDUjtvQkFDRSxJQUFJLEVBQUUsUUFBUTtvQkFDZCxTQUFTLEVBQUUsc0JBQXNCO29CQUNqQyxXQUFXLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztpQkFDeEM7Z0JBQ0Q7b0JBQ0UsSUFBSSxFQUFFLFFBQVEsR0FBRyx1QkFBdUI7b0JBQ3hDLFNBQVMsRUFBRSxzQkFBc0I7b0JBQ2pDLFdBQVcsRUFBRSxDQUFDLHdCQUF3QixDQUFDO2lCQUN4QztnQkFDRDtvQkFDRSxJQUFJLEVBQUUsUUFBUSxHQUFHLG9DQUFvQztvQkFDckQsVUFBVSxFQUFFLFFBQVEsR0FBRyxnREFBZ0Q7b0JBQ3ZFLFNBQVMsRUFBRSxNQUFNO2lCQUNsQjtnQkFDRDtvQkFDRSxJQUFJLEVBQUUsUUFBUSxHQUFHLGdEQUFnRDtvQkFDakUsU0FBUyxFQUFFLDZCQUE2QjtvQkFDeEMsV0FBVyxFQUFFLENBQUMsd0JBQXdCLENBQUM7aUJBQ3hDO2FBQ0YsQ0FBQztZQUNGLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQztZQUMvQixhQUFhLENBQUMsNkJBQTZCLENBQUM7WUFDNUMsV0FBVyxDQUFDO2dCQUNWLEdBQUcsRUFBRSxnQ0FBZ0M7Z0JBQ3JDLEtBQUssRUFBRSw2Q0FBNkM7Z0JBQ3BELFdBQVcsRUFBRSxHQUFHLEVBQUUsQ0FDaEIsTUFBTSxDQUFDLDJEQUEyRCxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztnQkFDMUYsUUFBUSxFQUFFO29CQUNSLE1BQU0sRUFBRSxJQUFJO2lCQUNiO2FBQ0YsQ0FBQztTQUNIOzs0RkFFVSx5QkFBeUI7a0JBckNyQyxRQUFRO21CQUFDO29CQUNSLFNBQVMsRUFBRTt3QkFDVCxTQUFTLENBQUM7NEJBQ1I7Z0NBQ0UsSUFBSSxFQUFFLFFBQVE7Z0NBQ2QsU0FBUyxFQUFFLHNCQUFzQjtnQ0FDakMsV0FBVyxFQUFFLENBQUMsd0JBQXdCLENBQUM7NkJBQ3hDOzRCQUNEO2dDQUNFLElBQUksRUFBRSxRQUFRLEdBQUcsdUJBQXVCO2dDQUN4QyxTQUFTLEVBQUUsc0JBQXNCO2dDQUNqQyxXQUFXLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQzs2QkFDeEM7NEJBQ0Q7Z0NBQ0UsSUFBSSxFQUFFLFFBQVEsR0FBRyxvQ0FBb0M7Z0NBQ3JELFVBQVUsRUFBRSxRQUFRLEdBQUcsZ0RBQWdEO2dDQUN2RSxTQUFTLEVBQUUsTUFBTTs2QkFDbEI7NEJBQ0Q7Z0NBQ0UsSUFBSSxFQUFFLFFBQVEsR0FBRyxnREFBZ0Q7Z0NBQ2pFLFNBQVMsRUFBRSw2QkFBNkI7Z0NBQ3hDLFdBQVcsRUFBRSxDQUFDLHdCQUF3QixDQUFDOzZCQUN4Qzt5QkFDRixDQUFDO3dCQUNGLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQzt3QkFDL0IsYUFBYSxDQUFDLDZCQUE2QixDQUFDO3dCQUM1QyxXQUFXLENBQUM7NEJBQ1YsR0FBRyxFQUFFLGdDQUFnQzs0QkFDckMsS0FBSyxFQUFFLDZDQUE2Qzs0QkFDcEQsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUNoQixNQUFNLENBQUMsMkRBQTJELENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDOzRCQUMxRixRQUFRLEVBQUU7Z0NBQ1IsTUFBTSxFQUFFLElBQUk7NkJBQ2I7eUJBQ0YsQ0FBQztxQkFDSDtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBob29rTmF2aWdhdG9yLCBob29rUHJldmlldywgaG9va1JvdXRlLCBob29rVGFiIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBNZXNzYWdpbmdOYXZpZ2F0b3JOb2RlRmFjdG9yeSB9IGZyb20gJy4vbmF2aWdhdG9yL21lc3NhZ2luZy1uYXZpZ2F0b3ItZmFjdG9yeSc7XG5pbXBvcnQgeyBOYW1lc3BhY2VMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9tZXNzYWdpbmcvbmFtZXNwYWNlLWxpc3QvbmFtZXNwYWNlLWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IFRvcGljTGlzdFZpZXdDb21wb25lbnQgfSBmcm9tICcuL21lc3NhZ2luZy90b3BpYy90b3BpYy1saXN0LXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IFRvcGljU3Vic2NyaWJlcnNWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi9tZXNzYWdpbmcvdG9waWMvdG9waWMtc3Vic2NyaWJlcnMtdmlldy90b3BpYy1zdWJzY3JpYmVycy12aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUb3BpY0RldGFpbHNUYWJGYWN0b3J5IH0gZnJvbSAnLi9uYXZpZ2F0b3IvdG9waWMtZGV0YWlscy10YWIuZmFjdG9yeSc7XG5pbXBvcnQgeyBiYXNlUGF0aCwgTUVTU0FHSU5HX01BTkFHRU1FTlRfRkVBVFVSRV9LRVkgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBNZXNzYWdpbmdNYW5hZ2VtZW50R3VhcmQgfSBmcm9tICcuL21lc3NhZ2luZy1tYW5hZ2VtZW50Lmd1YXJkJztcblxuQE5nTW9kdWxlKHtcbiAgcHJvdmlkZXJzOiBbXG4gICAgaG9va1JvdXRlKFtcbiAgICAgIHtcbiAgICAgICAgcGF0aDogYmFzZVBhdGgsXG4gICAgICAgIGNvbXBvbmVudDogTmFtZXNwYWNlTGlzdENvbXBvbmVudCxcbiAgICAgICAgY2FuQWN0aXZhdGU6IFtNZXNzYWdpbmdNYW5hZ2VtZW50R3VhcmRdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBwYXRoOiBiYXNlUGF0aCArICcvbmFtZXNwYWNlLzpuYW1lc3BhY2UnLFxuICAgICAgICBjb21wb25lbnQ6IFRvcGljTGlzdFZpZXdDb21wb25lbnQsXG4gICAgICAgIGNhbkFjdGl2YXRlOiBbTWVzc2FnaW5nTWFuYWdlbWVudEd1YXJkXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcGF0aDogYmFzZVBhdGggKyAnL25hbWVzcGFjZS86bmFtZXNwYWNlL3RvcGljLzp0b3BpYycsXG4gICAgICAgIHJlZGlyZWN0VG86IGJhc2VQYXRoICsgJy9uYW1lc3BhY2UvOm5hbWVzcGFjZS90b3BpYy86dG9waWMvc3Vic2NyaWJlcnMnLFxuICAgICAgICBwYXRoTWF0Y2g6ICdmdWxsJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcGF0aDogYmFzZVBhdGggKyAnL25hbWVzcGFjZS86bmFtZXNwYWNlL3RvcGljLzp0b3BpYy9zdWJzY3JpYmVycycsXG4gICAgICAgIGNvbXBvbmVudDogVG9waWNTdWJzY3JpYmVyc1ZpZXdDb21wb25lbnQsXG4gICAgICAgIGNhbkFjdGl2YXRlOiBbTWVzc2FnaW5nTWFuYWdlbWVudEd1YXJkXVxuICAgICAgfVxuICAgIF0pLFxuICAgIGhvb2tUYWIoVG9waWNEZXRhaWxzVGFiRmFjdG9yeSksXG4gICAgaG9va05hdmlnYXRvcihNZXNzYWdpbmdOYXZpZ2F0b3JOb2RlRmFjdG9yeSksXG4gICAgaG9va1ByZXZpZXcoe1xuICAgICAga2V5OiBNRVNTQUdJTkdfTUFOQUdFTUVOVF9GRUFUVVJFX0tFWSxcbiAgICAgIGxhYmVsOiAnTWVzc2FnaW5nIHNlcnZpY2UgLSBtb25pdG9yaW5nICYgbWFuYWdlbWVudCcsXG4gICAgICBkZXNjcmlwdGlvbjogKCkgPT5cbiAgICAgICAgaW1wb3J0KCdAYzh5L3N0eWxlL21hcmtkb3duLWZpbGVzL21lc3NhZ2luZy1tYW5hZ2VtZW50LXByZXZpZXcubWQnKS50aGVuKG0gPT4gbS5kZWZhdWx0KSxcbiAgICAgIHNldHRpbmdzOiB7XG4gICAgICAgIHJlbG9hZDogdHJ1ZVxuICAgICAgfVxuICAgIH0pXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTWVzc2FnaW5nTWFuYWdlbWVudE1vZHVsZSB7fVxuIl19