@c8y/ngx-components 1018.509.6 → 1018.510.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -245,12 +245,12 @@ export class DashboardChildComponent {
245
245
  }
246
246
  }
247
247
  DashboardChildComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DashboardChildComponent, deps: [{ token: i1.DashboardComponent }, { token: i2.DomSanitizer }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
248
- DashboardChildComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DashboardChildComponent, selector: "c8y-dashboard-child", inputs: { x: "x", y: "y", width: "width", height: "height", data: "data", margin: "margin", isFrozen: "isFrozen", useIntersection: "useIntersection", class: "class" }, outputs: { changeStart: "changeStart", changeEnd: "changeEnd" }, host: { properties: { "attr.style": "this.inlineStyle" }, classAttribute: "dashboard-grid-child" }, queries: [{ propertyName: "templateActions", predicate: DashboardChildActionComponent }], usesOnChanges: true, ngImport: i0, template: "<div cdkDropList>\n <div\n class=\"card-placeholder\"\n *ngIf=\"isResize\"\n ></div>\n <div\n [ngStyle]=\"{ width: _pxWidth, height: _pxHeight }\"\n [ngClass]=\"klasses\"\n cdkDrag\n (cdkDragStarted)=\"dragStarted($event)\"\n (cdkDragEnded)=\"reset($event)\"\n [cdkDragDisabled]=\"isFrozen || (isOneColumnView$ | async)\"\n >\n <div\n class=\"card-header-actions card-header-grid\"\n [ngClass]=\"{ 'drag-handle': !isFrozen, draggableCursor: !isFrozen }\"\n cdkDragHandle\n >\n <ng-content select=\"c8y-dashboard-child-title\"></ng-content>\n <div\n class=\"header-actions d-flex a-i-center\"\n *ngIf=\"!isFrozen && actions.length > 0\"\n >\n <c8y-widget-time-context-icon-bar\n *ngIf=\"data?.config?.displaySettings && data?.config?.widgetInstanceGlobalTimeContext\"\n [config]=\"data.config\"\n ></c8y-widget-time-context-icon-bar>\n <div\n class=\"optionsBtn dropdown\"\n placement=\"bottom right\"\n dropdown\n >\n <button\n class=\"btnIcon c8y-dropdown\"\n title=\"{{ 'Settings' | translate }}\"\n aria-haspopup=\"true\"\n data-cy=\"dashboard-child--settings\"\n (click)=\"(false)\"\n dropdownToggle\n >\n <i [c8yIcon]=\"'cog'\"></i>\n </button>\n <ul\n class=\"dropdown-menu dropdown-menu-right\"\n style=\"right: -1px\"\n *dropdownMenu\n >\n <ng-container *ngFor=\"let action of actions\">\n <ng-container *ngTemplateOutlet=\"action.template\"></ng-container>\n </ng-container>\n </ul>\n </div>\n </div>\n </div>\n <div class=\"card-inner-scroll\">\n <ng-content></ng-content>\n </div>\n <div\n class=\"resize-handle hidden-xs\"\n *ngIf=\"!isFrozen && !isDragging\"\n cdkDrag\n [cdkDragDisabled]=\"isFrozen\"\n (cdkDragStarted)=\"resizeStarted($event)\"\n (cdkDragEnded)=\"reset($event)\"\n ></div>\n <div\n class=\"resize-icon hidden-xs\"\n *ngIf=\"!isFrozen && !isDragging\"\n ></div>\n\n <div\n class=\"card-placeholder\"\n *cdkDragPlaceholder\n ></div>\n </div>\n</div>\n", dependencies: [{ 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: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i5.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i5.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i5.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i5.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "directive", type: i6.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i6.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i6.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "component", type: i7.WidgetTimeContextIconBar, selector: "c8y-widget-time-context-icon-bar", inputs: ["config"] }, { kind: "pipe", type: i8.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] });
248
+ DashboardChildComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DashboardChildComponent, selector: "c8y-dashboard-child", inputs: { x: "x", y: "y", width: "width", height: "height", data: "data", margin: "margin", isFrozen: "isFrozen", useIntersection: "useIntersection", class: "class" }, outputs: { changeStart: "changeStart", changeEnd: "changeEnd" }, host: { properties: { "attr.style": "this.inlineStyle" }, classAttribute: "dashboard-grid-child" }, queries: [{ propertyName: "templateActions", predicate: DashboardChildActionComponent }], usesOnChanges: true, ngImport: i0, template: "<div cdkDropList>\n <div\n class=\"card-placeholder\"\n *ngIf=\"isResize\"\n ></div>\n <div\n [ngStyle]=\"{ width: _pxWidth, height: _pxHeight }\"\n [ngClass]=\"klasses\"\n cdkDrag\n (cdkDragStarted)=\"dragStarted($event)\"\n (cdkDragEnded)=\"reset($event)\"\n [cdkDragDisabled]=\"isFrozen || (isOneColumnView$ | async)\"\n >\n <div\n class=\"card-header-actions card-header-grid\"\n [ngClass]=\"{ 'drag-handle': !isFrozen, draggableCursor: !isFrozen }\"\n cdkDragHandle\n >\n <ng-content select=\"c8y-dashboard-child-title\"></ng-content>\n <div\n class=\"header-actions d-flex a-i-center\"\n *ngIf=\"!isFrozen && actions.length > 0\"\n >\n <c8y-widget-time-context-icon-bar\n *ngIf=\"data?.config?.displaySettings && data?.config?.widgetInstanceGlobalTimeContext\"\n [config]=\"data.config\"\n ></c8y-widget-time-context-icon-bar>\n <div\n class=\"optionsBtn dropdown\"\n placement=\"bottom right\"\n dropdown\n >\n <button\n class=\"btnIcon c8y-dropdown\"\n title=\"{{ 'Settings' | translate }}\"\n aria-haspopup=\"true\"\n data-cy=\"c8y-dashboard-child--settings\"\n (click)=\"(false)\"\n dropdownToggle\n >\n <i [c8yIcon]=\"'cog'\"></i>\n </button>\n <ul\n class=\"dropdown-menu dropdown-menu-right\"\n style=\"right: -1px\"\n *dropdownMenu\n >\n <ng-container *ngFor=\"let action of actions\">\n <ng-container *ngTemplateOutlet=\"action.template\"></ng-container>\n </ng-container>\n </ul>\n </div>\n </div>\n </div>\n <div class=\"card-inner-scroll\">\n <ng-content></ng-content>\n </div>\n <div\n class=\"resize-handle hidden-xs\"\n *ngIf=\"!isFrozen && !isDragging\"\n cdkDrag\n [cdkDragDisabled]=\"isFrozen\"\n (cdkDragStarted)=\"resizeStarted($event)\"\n (cdkDragEnded)=\"reset($event)\"\n ></div>\n <div\n class=\"resize-icon hidden-xs\"\n *ngIf=\"!isFrozen && !isDragging\"\n ></div>\n\n <div\n class=\"card-placeholder\"\n *cdkDragPlaceholder\n ></div>\n </div>\n</div>\n", dependencies: [{ 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: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i5.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i5.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i5.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i5.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "directive", type: i6.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i6.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i6.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "component", type: i7.WidgetTimeContextIconBar, selector: "c8y-widget-time-context-icon-bar", inputs: ["config"] }, { kind: "pipe", type: i8.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] });
249
249
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DashboardChildComponent, decorators: [{
250
250
  type: Component,
251
251
  args: [{ selector: 'c8y-dashboard-child', host: {
252
252
  class: 'dashboard-grid-child'
253
- }, template: "<div cdkDropList>\n <div\n class=\"card-placeholder\"\n *ngIf=\"isResize\"\n ></div>\n <div\n [ngStyle]=\"{ width: _pxWidth, height: _pxHeight }\"\n [ngClass]=\"klasses\"\n cdkDrag\n (cdkDragStarted)=\"dragStarted($event)\"\n (cdkDragEnded)=\"reset($event)\"\n [cdkDragDisabled]=\"isFrozen || (isOneColumnView$ | async)\"\n >\n <div\n class=\"card-header-actions card-header-grid\"\n [ngClass]=\"{ 'drag-handle': !isFrozen, draggableCursor: !isFrozen }\"\n cdkDragHandle\n >\n <ng-content select=\"c8y-dashboard-child-title\"></ng-content>\n <div\n class=\"header-actions d-flex a-i-center\"\n *ngIf=\"!isFrozen && actions.length > 0\"\n >\n <c8y-widget-time-context-icon-bar\n *ngIf=\"data?.config?.displaySettings && data?.config?.widgetInstanceGlobalTimeContext\"\n [config]=\"data.config\"\n ></c8y-widget-time-context-icon-bar>\n <div\n class=\"optionsBtn dropdown\"\n placement=\"bottom right\"\n dropdown\n >\n <button\n class=\"btnIcon c8y-dropdown\"\n title=\"{{ 'Settings' | translate }}\"\n aria-haspopup=\"true\"\n data-cy=\"dashboard-child--settings\"\n (click)=\"(false)\"\n dropdownToggle\n >\n <i [c8yIcon]=\"'cog'\"></i>\n </button>\n <ul\n class=\"dropdown-menu dropdown-menu-right\"\n style=\"right: -1px\"\n *dropdownMenu\n >\n <ng-container *ngFor=\"let action of actions\">\n <ng-container *ngTemplateOutlet=\"action.template\"></ng-container>\n </ng-container>\n </ul>\n </div>\n </div>\n </div>\n <div class=\"card-inner-scroll\">\n <ng-content></ng-content>\n </div>\n <div\n class=\"resize-handle hidden-xs\"\n *ngIf=\"!isFrozen && !isDragging\"\n cdkDrag\n [cdkDragDisabled]=\"isFrozen\"\n (cdkDragStarted)=\"resizeStarted($event)\"\n (cdkDragEnded)=\"reset($event)\"\n ></div>\n <div\n class=\"resize-icon hidden-xs\"\n *ngIf=\"!isFrozen && !isDragging\"\n ></div>\n\n <div\n class=\"card-placeholder\"\n *cdkDragPlaceholder\n ></div>\n </div>\n</div>\n" }]
253
+ }, template: "<div cdkDropList>\n <div\n class=\"card-placeholder\"\n *ngIf=\"isResize\"\n ></div>\n <div\n [ngStyle]=\"{ width: _pxWidth, height: _pxHeight }\"\n [ngClass]=\"klasses\"\n cdkDrag\n (cdkDragStarted)=\"dragStarted($event)\"\n (cdkDragEnded)=\"reset($event)\"\n [cdkDragDisabled]=\"isFrozen || (isOneColumnView$ | async)\"\n >\n <div\n class=\"card-header-actions card-header-grid\"\n [ngClass]=\"{ 'drag-handle': !isFrozen, draggableCursor: !isFrozen }\"\n cdkDragHandle\n >\n <ng-content select=\"c8y-dashboard-child-title\"></ng-content>\n <div\n class=\"header-actions d-flex a-i-center\"\n *ngIf=\"!isFrozen && actions.length > 0\"\n >\n <c8y-widget-time-context-icon-bar\n *ngIf=\"data?.config?.displaySettings && data?.config?.widgetInstanceGlobalTimeContext\"\n [config]=\"data.config\"\n ></c8y-widget-time-context-icon-bar>\n <div\n class=\"optionsBtn dropdown\"\n placement=\"bottom right\"\n dropdown\n >\n <button\n class=\"btnIcon c8y-dropdown\"\n title=\"{{ 'Settings' | translate }}\"\n aria-haspopup=\"true\"\n data-cy=\"c8y-dashboard-child--settings\"\n (click)=\"(false)\"\n dropdownToggle\n >\n <i [c8yIcon]=\"'cog'\"></i>\n </button>\n <ul\n class=\"dropdown-menu dropdown-menu-right\"\n style=\"right: -1px\"\n *dropdownMenu\n >\n <ng-container *ngFor=\"let action of actions\">\n <ng-container *ngTemplateOutlet=\"action.template\"></ng-container>\n </ng-container>\n </ul>\n </div>\n </div>\n </div>\n <div class=\"card-inner-scroll\">\n <ng-content></ng-content>\n </div>\n <div\n class=\"resize-handle hidden-xs\"\n *ngIf=\"!isFrozen && !isDragging\"\n cdkDrag\n [cdkDragDisabled]=\"isFrozen\"\n (cdkDragStarted)=\"resizeStarted($event)\"\n (cdkDragEnded)=\"reset($event)\"\n ></div>\n <div\n class=\"resize-icon hidden-xs\"\n *ngIf=\"!isFrozen && !isDragging\"\n ></div>\n\n <div\n class=\"card-placeholder\"\n *cdkDragPlaceholder\n ></div>\n </div>\n</div>\n" }]
254
254
  }], ctorParameters: function () { return [{ type: i1.DashboardComponent }, { type: i2.DomSanitizer }, { type: i0.ElementRef }]; }, propDecorators: { templateActions: [{
255
255
  type: ContentChildren,
256
256
  args: [DashboardChildActionComponent]
@@ -280,4 +280,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
280
280
  type: HostBinding,
281
281
  args: ['attr.style']
282
282
  }] } });
283
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLWNoaWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvZGFzaGJvYXJkL2Rhc2hib2FyZC1jaGlsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2Rhc2hib2FyZC9kYXNoYm9hcmQtY2hpbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNMLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUNMLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUE0QixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0QsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbkYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7QUFFOUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNENHO0FBUUgsTUFBTSxPQUFPLHVCQUF1QjtJQUVsQyxJQUFvRCxlQUFlLENBQ2pFLE9BQXdDO1FBRXhDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFvRUQ7O09BRUc7SUFDSCxJQUFJLE9BQU8sQ0FBQyxLQUFLO1FBQ2YsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLEtBQUssSUFBSSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksUUFBUSxD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LDZCQUE2QixrREN4RWhELHd4RUE0RUE7MkZETmEsdUJBQXVCO2tCQVBuQyxTQUFTOytCQUNFLHFCQUFxQixRQUV6Qjt3QkFDSixLQUFLLEVBQUUsc0JBQXNCO3FCQUM5Qjs2SkFJbUQsZUFBZTtzQkFBbEUsZUFBZTt1QkFBQyw2QkFBNkI7Z0JBa0JyQyxDQUFDO3NCQUFULEtBQUs7Z0JBS0csQ0FBQztzQkFBVCxLQUFLO2dCQUtHLEtBQUs7c0JBQWIsS0FBSztnQkFLRyxNQUFNO3NCQUFkLEtBQUs7Z0JBS0csSUFBSTtzQkFBWixLQUFLO2dCQUtHLE1BQU07c0JBQWQsS0FBSztnQkFNRyxRQUFRO3NCQUFoQixLQUFLO2dCQUtHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBS0ksV0FBVztzQkFBcEIsTUFBTTtnQkFLRyxTQUFTO3NCQUFsQixNQUFNO2dCQU1QLEtBQUs7c0JBREosS0FBSztnQkErQ0YsV0FBVztzQkFEZCxXQUFXO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtEcmFnLCBDZGtEcmFnRW5kLCBDZGtEcmFnU3RhcnQgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT3V0cHV0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGFzaGJvYXJkQ2hpbGRBY3Rpb25Db21wb25lbnQgfSBmcm9tICcuL2Rhc2hib2FyZC1jaGlsZC1hY3Rpb24uY29tcG9uZW50JztcbmltcG9ydCB7IERhc2hib2FyZENoaWxkQ2hhbmdlIH0gZnJvbSAnLi9kYXNoYm9hcmQtY2hpbGQtY2hhbmdlJztcbmltcG9ydCB7IERhc2hib2FyZENvbXBvbmVudCB9IGZyb20gJy4vZGFzaGJvYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXNoYm9hcmRDaGlsZERpbWVuc2lvbiwgV2lkZ2V0IH0gZnJvbSAnLi9kYXNoYm9hcmQubW9kZWwnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuLyoqXG4gKiBBIGRhc2hib2FyZCBjaGlsZCBhbGxvd3MgdG8gcG9zaXRpb24gZWxlbWVudHNcbiAqIGNvcnJlY3RseSBvbiBhIGdyaWQuIFRoZSB1c2VyIGNhbiB0aGVuIHJlc2l6ZSBhbmRcbiAqIHJlYXJyYW5nZSB0aGUgZWxlbWVudHMsIGFzIGxvbmcgYXMgdGhleSBhcmUgbm90IGBmcm96ZW5gLlxuICpcbiAqIEJ5IHNldHRpbmcgYGM4eS1kYXNoYm9hcmQtY2hpbGQtYWN0aW9uc2AgYW5kXG4gKiBgYzh5LWRhc2hib2FyZC1jaGlsZC10aXRsZWAgb24gdGhlIGVsZW1lbnQgeW91IGNhbiBhZGRcbiAqIGN1c3RvbSBhY3Rpb25zIG9yIGEgY3VzdG9tIHRpdGxlIHRvIHRoZSBjdXJyZW50IGNoaWxkLlxuICpcbiAqIEJ5IGFkZGluZyB0aGUgY29ycmVjdCBicmFuZGVkIGNsYXNzZXMsIHlvdSBjYW4gZGVmaW5lXG4gKiB0aGUgbG9vayBhbmQgZmVlbCBvZiB0aGUgY2hpbGQuIEJ5IGRlZmF1bHQgaXQgaXMgZGlzcGxheWVkXG4gKiBhcyBhIGNhcmQuXG4gKlxuICogRXhhbXBsZTpcbiAqXG4gKiBgYGBodG1sXG4gKiAgIDxjOHktZGFzaGJvYXJkLWNoaWxkXG4gKiAgICAgI2NwV2lkZ2V0M1xuICogICAgIFtpc0Zyb3plbl09XCJpc0Zyb3plblwiXG4gKiAgICAgW3hdPVwiMFwiXG4gKiAgICAgW3ldPVwiM1wiXG4gKiAgICAgW3dpZHRoXT1cIjRcIlxuICogICAgIFtoZWlnaHRdPVwiNFwiXG4gKiAgICAgW2NsYXNzXT1cIidjYXJkLWRhc2hib2FyZCBwYW5lbC1jb250ZW50LXRyYW5zcGFyZW50J1wiXG4gKiAgID5cbiAqICAgICA8Yzh5LWRhc2hib2FyZC1jaGlsZC10aXRsZSAqbmdJZj1cInNob3dUaXRsZVwiPlxuICogICAgICAgPHNwYW4+VHJhbnNwYXJlbnQhPC9zcGFuPlxuICogICAgIDwvYzh5LWRhc2hib2FyZC1jaGlsZC10aXRsZT5cbiAqICAgICA8Yzh5LWRhc2hib2FyZC1jaGlsZC1hY3Rpb24+XG4gKiAgICAgICA8YSBocmVmPVwiXCIgKGNsaWNrKT1cInNob3dUaXRsZSA9ICFzaG93VGl0bGU7IChmYWxzZSlcIj5cbiAqICAgICAgICAgPGkgW2M4eUljb25dPVwiJ2hlYWRpbmcnXCI+PC9pPiBIaWRlL3Nob3cgdGl0bGVcbiAqICAgICAgIDwvYT5cbiAqICAgICA8L2M4eS1kYXNoYm9hcmQtY2hpbGQtYWN0aW9uPlxuICogICAgIDxjOHktZGFzaGJvYXJkLWNoaWxkLWFjdGlvbj5cbiAqICAgICAgIDxhIGhyZWY9XCJcIiAoY2xpY2spPVwiY3BXaWRnZXQzLmlzRnJvemVuID0gIWNwV2lkZ2V0My5pc0Zyb3plbjsgKGZhbHNlKVwiPlxuICogICAgICAgICA8aSBbYzh5SWNvbl09XCJjcFdpZGdldDMuaXNGcm96ZW4gPyAnbG9jaycgOiAndW5sb2NrJ1wiPjwvaT4gVG9nZ2xlIGZyZWV6ZVxuICogICAgICAgPC9hPlxuICogICAgIDwvYzh5LWRhc2hib2FyZC1jaGlsZC1hY3Rpb24+XG4gKiAgICAgeDoge3sgY3BXaWRnZXQzLnggfX08YnIgLz5cbiAqICAgICB5OiB7eyBjcFdpZGdldDMueSB9fTxiciAvPlxuICogICAgIHdpZHRoOiB7eyBjcFdpZGdldDMud2lkdGggfX08YnIgLz5cbiAqICAgICBoZWlnaHQ6IHt7IGNwV2lkZ2V0My5oZWlnaHQgfX08YnIgLz5cbiAqICAgPC9jOHktZGFzaGJvYXJkLWNoaWxkPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1kYXNoYm9hcmQtY2hpbGQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGFzaGJvYXJkLWNoaWxkLmNvbXBvbmVudC5odG1sJyxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnZGFzaGJvYXJkLWdyaWQtY2hpbGQnXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgRGFzaGJvYXJkQ2hpbGRDb21wb25lbnQgaW1wbGVtZW50cyBEYXNoYm9hcmRDaGlsZERpbWVuc2lvbiB7XG4gIGFjdGlvbnM6IERhc2hib2FyZENoaWxkQWN0aW9uQ29tcG9uZW50W10gPSBbXTtcbiAgQENvbnRlbnRDaGlsZHJlbihEYXNoYm9hcmRDaGlsZEFjdGlvbkNvbXBvbmVudCkgc2V0IHRlbXBsYXRlQWN0aW9ucyhcbiAgICBhY3Rpb25zOiBEYXNoYm9hcmRDaGlsZEFjdGlvbkNvbXBvbmVudFtdXG4gICkge1xuICAgIHRoaXMuYWRkQWN0aW9ucyhhY3Rpb25zLCB0cnVlKTtcbiAgfVxuICBkcmFnU291cmNlOiBDZGtEcmFnO1xuICBpc1Jlc2l6ZSA9IGZhbHNlO1xuICBpc0RyYWdnaW5nID0gZmFsc2U7XG4gIGtsYXNzZXMgPSB7fTtcblxuICBfcHhXaWR0aCA9ICcxMDAlJztcbiAgX3B4SGVpZ2h0ID0gJzEwMCUnO1xuXG4gIHJlYWRvbmx5IE1EX0JPT1RTVFJBUF9CUkVBS1BPSU5UX1JFQURPTkxZX0NMQVNTX1BST1BFUlRZID0gNzY4O1xuXG4gIC8qKlxuICAgKiBUaGUgeCBwb3NpdGlvbiBvZiB0aGUgY2hpbGQuXG4gICAqL1xuICBASW5wdXQoKSB4O1xuXG4gIC8qKlxuICAgKiBUaGUgeSBwb3NpdGlvbiBvZiB0aGUgY2hpbGQuXG4gICAqL1xuICBASW5wdXQoKSB5O1xuXG4gIC8qKlxuICAgKiBUaGUgd2lkdGggb2YgdGhlIGNvbXBvbmVudCBpbiBncmlkLWNvbHVtbnMuXG4gICAqL1xuICBASW5wdXQoKSB3aWR0aCA9IDE7XG5cbiAgLyoqXG4gICAqIFRoZSBoZWlnaHQgb2YgdGhlIGNvbXBvbmVudCBpbiBncmlkLXJvd3MuXG4gICAqL1xuICBASW5wdXQoKSBoZWlnaHQgPSAxO1xuXG4gIC8qKlxuICAgKiBUaGUgZGF0YSBvYmplY3QgY2FuIGJlIHVzZWQgYXMgYSBkYXRhVHJhbnNmZXIgb2JqZWN0IGZvciBldmVudHMgb2YgdGhlIGNoaWxkLlxuICAgKi9cbiAgQElucHV0KCkgZGF0YTogV2lkZ2V0IHwgYW55O1xuXG4gIC8qKlxuICAgKiBUaGUgbWFyZ2luIG9mIHRoZSBjaGlsZCBpbiBwaXhlbC5cbiAgICovXG4gIEBJbnB1dCgpIG1hcmdpbiA9IDEyO1xuXG4gIC8qKlxuICAgKiBJZiBhIGRhc2hib2FyZCBpcyBmcm96ZW4sIGFsbCBjaGlsZHJlbiBjYW5ub3QgYmUgbW92ZWRcbiAgICogb3IgcmVzaXplZC5cbiAgICovXG4gIEBJbnB1dCgpIGlzRnJvemVuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBjaGlsZCBjb250ZW50IGlzIGluaXRpYWxpemVkLCBhcyBzb29uIGl0IGlzIHNjcm9sbGVkIGludG8gdmlld3BvcnRcbiAgICovXG4gIEBJbnB1dCgpIHVzZUludGVyc2VjdGlvbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBBbiBldmVudCBmaXJlZCBpZiBhIGNoaWxkIGNoYW5nZSBpcyBzdGFydGVkIChkcmFnZ2luZyBvciByZXNpemluZylcbiAgICovXG4gIEBPdXRwdXQoKSBjaGFuZ2VTdGFydCA9IG5ldyBFdmVudEVtaXR0ZXI8RGFzaGJvYXJkQ2hpbGRDb21wb25lbnQ+KCk7XG5cbiAgLyoqXG4gICAqIEFuIGV2ZW50IGZpcmVkIGlmIGEgY2hpbGQgY2hhbmdlIGlzIGVuZGVkXG4gICAqL1xuICBAT3V0cHV0KCkgY2hhbmdlRW5kID0gbmV3IEV2ZW50RW1pdHRlcjxEYXNoYm9hcmRDaGlsZENvbXBvbmVudD4oKTtcblxuICAvKipcbiAgICogQWxsIGNsYXNzZXMgYWRkZWQgdG8gdGhpcyBjaGlsZFxuICAgKi9cbiAgQElucHV0KClcbiAgY2xhc3M6IHN0cmluZ1tdIHwgeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcGl4ZWwgd2lkdGggb2YgdGhlIGNoaWxkICh1c2VkIGZvciByZXNpemluZylcbiAgICovXG4gIHNldCBweFdpZHRoKHZhbHVlKSB7XG4gICAgdGhpcy5fcHhXaWR0aCA9IGAke3ZhbHVlfXB4YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBwaXhlbCBoZWlnaHQgb2YgdGhlIGNoaWxkICh1c2VkIGZvciByZXNpemluZylcbiAgICovXG4gIHNldCBweEhlaWdodCh2YWx1ZSkge1xuICAgIHRoaXMuX3B4SGVpZ2h0ID0gYCR7dmFsdWV9cHhgO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyaWdnZXJzIG9uIGV2ZXJ5IHJlc2l6ZSBhbmQgcmV0dXJucyB0cnVlIGlmIGluIG9uZSBjb2x1bW4gdmlldyAobW9iaWxlIHZpZXcpXG4gICAqL1xuICBpc09uZUNvbHVtblZpZXckOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpLnBpcGUoXG4gICAgbWFwKF8gPT4ge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoIDw9IHRoaXMuTURfQk9PVFNUUkFQX0JSRUFLUE9JTlRfUkVBRE9OTFlfQ0xBU1NfUFJPUEVSVFlcbiAgICAgICk7XG4gICAgfSksXG4gICAgZGVib3VuY2VUaW1lKDIwMCksXG4gICAgc3RhcnRXaXRoKFxuICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoIDw9IHRoaXMuTURfQk9PVFNUUkFQX0JSRUFLUE9JTlRfUkVBRE9OTFlfQ0xBU1NfUFJPUEVSVFlcbiAgICApXG4gICk7XG5cbiAgLyoqXG4gICAqIEFuIGluZGljYXRvciBpZiB0aGUgY2hpbGQgaXMgaW50ZXJzZWN0ZWQgKHRoYXQgbWVhbiB2aXNpYmxlIGZvciB0aGUgdXNlcilcbiAgICovXG4gIGludGVyc2VjdGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRlbGxzIGlmIHRoZSBsYXN0IGNoYW5nZSB3YXMgYSBkcmFnZ2luZyBvciByZXNpemluZyBldmVudDtcbiAgICovXG4gIGxhc3RDaGFuZ2U6ICdkcmFnJyB8ICdyZXNpemUnID0gbnVsbDtcblxuICAvKipcbiAgICogbmFzdHkgd29ya2Fyb3VuZCBmb3IgdGhhdCBpc3N1ZTpcbiAgICogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvOTM0M1xuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnN0eWxlJylcbiAgZ2V0IGlubGluZVN0eWxlKCkge1xuICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0U3R5bGUoYFxuICAgIGdyaWQtY29sdW1uLXN0YXJ0OiAke3RoaXMueCArIDF9O1xuICAgIGdyaWQtcm93LXN0YXJ0OiAke3RoaXMueSArIDF9O1xuICAgIGdyaWQtY29sdW1uLWVuZDogc3BhbiAke3RoaXMud2lkdGh9O1xuICAgIGdyaWQtcm93LWVuZDogc3BhbiAke3RoaXMuaGVpZ2h0fTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW46ICR7dGhpcy5tYXJnaW4gfHwgMTJ9cHg7XG4gICAgb3JkZXI6ICR7dGhpcy5nZXRPcmRlcigpfTtcbiAgICBgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgb2JzZXJ2YWJsZSBzdWJzY3JpcHRpb24gd2hpY2ggaXMgbGlzdGVuIHRvXG4gICAqIG9uIGNoYW5nZXMgKGRyYWcgb3IgcmVzaXplKS5cbiAgICovXG4gIGNoYW5nZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBkYXNoYm9hcmQ6IERhc2hib2FyZENvbXBvbmVudCxcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgIHB1YmxpYyBlbGVtZW50OiBFbGVtZW50UmVmXG4gICkge31cblxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLmtsYXNzZXMgPSB7XG4gICAgICBjYXJkOiB0cnVlLFxuICAgICAgJ2NhcmQtZGFzaGJvYXJkJzogdHJ1ZSxcbiAgICAgIGRpc2FibGVkOiB0aGlzLmlzRnJvemVuLFxuICAgICAgJ29uLXJlc2l6ZSc6IHRoaXMuaXNSZXNpemUsXG4gICAgICAuLi50aGlzLmNsYXNzXG4gICAgfTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnggPT09IHVuZGVmaW5lZCB8fCB0aGlzLnkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNldER5bmFtaWNEaW1lbnNpb24oKSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnVzZUludGVyc2VjdGlvbiAmJiAnSW50ZXJzZWN0aW9uT2JzZXJ2ZXInIGluIHdpbmRvdykge1xuICAgICAgY29uc3QgaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoXG4gICAgICAgIGV2ZW50ID0+ICh0aGlzLmludGVyc2VjdGVkID0gdGhpcy5jaGlsZEluVmlldyhldmVudFswXSwgaW50ZXJzZWN0aW9uT2JzZXJ2ZXIpKVxuICAgICAgKTtcbiAgICAgIGludGVyc2VjdGlvbk9ic2VydmVyLm9ic2VydmUodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmludGVyc2VjdGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5kYXNoYm9hcmQuY2hpbGRyZW4ucHVzaCh0aGlzKTtcbiAgfVxuXG4gIHNldER5bmFtaWNEaW1lbnNpb24oKSB7XG4gICAgY29uc3QgZHMgPSBuZXcgRGFzaGJvYXJkQ2hpbGRDaGFuZ2UodGhpcyk7XG4gICAgY29uc3QgeyB4LCB5IH0gPSBkcy5maW5kRnJlZURpbWVuc2lvbigpO1xuICAgIHRoaXMueCA9IHg7XG4gICAgdGhpcy55ID0geTtcblxuICAgIHRoaXMuZGFzaGJvYXJkLmVtaXRDaGFuZ2UodGhpcyk7XG4gIH1cblxuICByZXNpemVTdGFydGVkKCRldmVudDogQ2RrRHJhZ1N0YXJ0KSB7XG4gICAgdGhpcy5pc1Jlc2l6ZSA9IHRydWU7XG4gICAgdGhpcy5kYXNoYm9hcmQudXBkYXRlUmVjdFNpemUoKTtcbiAgICB0aGlzLmRyYWdTb3VyY2UgPSAkZXZlbnQuc291cmNlO1xuICAgIGNvbnN0IHBvc2l0aW9uaW5nID0gbmV3IERhc2hib2FyZENoaWxkQ2hhbmdlKHRoaXMpO1xuICAgIHRoaXMuY2hhbmdlU3Vic2NyaXB0aW9uID0gcG9zaXRpb25pbmcucmVzaXplJC5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmNoYW5nZVN0YXJ0LmVtaXQodGhpcyk7XG4gICAgdGhpcy5uZ09uQ2hhbmdlcygpO1xuICB9XG5cbiAgZHJhZ1N0YXJ0ZWQoJGV2ZW50OiBDZGtEcmFnU3RhcnQpIHtcbiAgICB0aGlzLmlzRHJhZ2dpbmcgPSB0cnVlO1xuICAgIHRoaXMuZGFzaGJvYXJkLnVwZGF0ZVJlY3RTaXplKCk7XG4gICAgdGhpcy5kcmFnU291cmNlID0gJGV2ZW50LnNvdXJjZTtcbiAgICBjb25zdCBwb3NpdGlvbmluZyA9IG5ldyBEYXNoYm9hcmRDaGlsZENoYW5nZSh0aGlzKTtcbiAgICB0aGlzLmNoYW5nZVN1YnNjcmlwdGlvbiA9IHBvc2l0aW9uaW5nLmRyYWckLnN1YnNjcmliZSgpO1xuICAgIHRoaXMuY2hhbmdlU3RhcnQuZW1pdCh0aGlzKTtcbiAgfVxuXG4gIHJlc2V0KCRldmVudD86IENka0RyYWdFbmQpIHtcbiAgICB0aGlzLmxhc3RDaGFuZ2UgPSB0aGlzLmlzUmVzaXplID8gJ3Jlc2l6ZScgOiAnZHJhZyc7XG4gICAgdGhpcy5pc1Jlc2l6ZSA9IGZhbHNlO1xuICAgIHRoaXMuaXNEcmFnZ2luZyA9IGZhbHNlO1xuICAgIHRoaXMuX3B4V2lkdGggPSAnMTAwJSc7XG4gICAgdGhpcy5fcHhIZWlnaHQgPSAnMTAwJSc7XG4gICAgdGhpcy5uZ09uQ2hhbmdlcygpO1xuICAgIGlmICgkZXZlbnQpIHtcbiAgICAgICRldmVudC5zb3VyY2UucmVzZXQoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY2hhbmdlU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmNoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5kYXNoYm9hcmQuZW1pdENoYW5nZSh0aGlzKTtcbiAgICAgIHRoaXMuY2hhbmdlRW5kLmVtaXQodGhpcyk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuY2hhbmdlU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmNoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICB0aGlzLnJlbW92ZVNlbGZGcm9tRGFzaGJvYXJkKCk7XG4gIH1cblxuICBhZGRBY3Rpb25zKGFjdGlvbnM6IERhc2hib2FyZENoaWxkQWN0aW9uQ29tcG9uZW50W10sIHByZXBlbmQgPSBmYWxzZSkge1xuICAgIGlmIChwcmVwZW5kKSB7XG4gICAgICB0aGlzLmFjdGlvbnMgPSBbLi4uYWN0aW9ucywgLi4udGhpcy5hY3Rpb25zXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hY3Rpb25zID0gWy4uLnRoaXMuYWN0aW9ucywgLi4uYWN0aW9uc107XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVTZWxmRnJvbURhc2hib2FyZCgpIHtcbiAgICBjb25zdCBpID0gdGhpcy5kYXNoYm9hcmQuY2hpbGRyZW4uaW5kZXhPZih0aGlzKTtcblxuICAgIGlmIChpID49IDApIHtcbiAgICAgIHRoaXMuZGFzaGJvYXJkLmNoaWxkcmVuLnNwbGljZShpLCAxKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldE9yZGVyKCkge1xuICAgIHJldHVybiBgJHtNYXRoLnJvdW5kKCh0aGlzLnkgKyAodGhpcy54ICsgMSkgLyAxMDApICogMTAwKX1gO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGlsZEluVmlldyhldmVudCwgb2JzZXJ2ZXIpIHtcbiAgICBpZiAoZXZlbnQuaXNJbnRlcnNlY3RpbmcpIHtcbiAgICAgIG9ic2VydmVyLnVub2JzZXJ2ZShldmVudC50YXJnZXQpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIiwiPGRpdiBjZGtEcm9wTGlzdD5cbiAgPGRpdlxuICAgIGNsYXNzPVwiY2FyZC1wbGFjZWhvbGRlclwiXG4gICAgKm5nSWY9XCJpc1Jlc2l6ZVwiXG4gID48L2Rpdj5cbiAgPGRpdlxuICAgIFtuZ1N0eWxlXT1cInsgd2lkdGg6IF9weFdpZHRoLCBoZWlnaHQ6IF9weEhlaWdodCB9XCJcbiAgICBbbmdDbGFzc109XCJrbGFzc2VzXCJcbiAgICBjZGtEcmFnXG4gICAgKGNka0RyYWdTdGFydGVkKT1cImRyYWdTdGFydGVkKCRldmVudClcIlxuICAgIChjZGtEcmFnRW5kZWQpPVwicmVzZXQoJGV2ZW50KVwiXG4gICAgW2Nka0RyYWdEaXNhYmxlZF09XCJpc0Zyb3plbiB8fCAoaXNPbmVDb2x1bW5WaWV3JCB8IGFzeW5jKVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImNhcmQtaGVhZGVyLWFjdGlvbnMgY2FyZC1oZWFkZXItZ3JpZFwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdkcmFnLWhhbmRsZSc6ICFpc0Zyb3plbiwgZHJhZ2dhYmxlQ3Vyc29yOiAhaXNGcm96ZW4gfVwiXG4gICAgICBjZGtEcmFnSGFuZGxlXG4gICAgPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYzh5LWRhc2hib2FyZC1jaGlsZC10aXRsZVwiPjwvbmctY29udGVudD5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJoZWFkZXItYWN0aW9ucyBkLWZsZXggYS1pLWNlbnRlclwiXG4gICAgICAgICpuZ0lmPVwiIWlzRnJvemVuICYmIGFjdGlvbnMubGVuZ3RoID4gMFwiXG4gICAgICA+XG4gICAgICAgIDxjOHktd2lkZ2V0LXRpbWUtY29udGV4dC1pY29uLWJhclxuICAgICAgICAgICpuZ0lmPVwiZGF0YT8uY29uZmlnPy5kaXNwbGF5U2V0dGluZ3MgJiYgZGF0YT8uY29uZmlnPy53aWRnZXRJbnN0YW5jZUdsb2JhbFRpbWVDb250ZXh0XCJcbiAgICAgICAgICBbY29uZmlnXT1cImRhdGEuY29uZmlnXCJcbiAgICAgICAgPjwvYzh5LXdpZGdldC10aW1lLWNvbnRleHQtaWNvbi1iYXI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cIm9wdGlvbnNCdG4gZHJvcGRvd25cIlxuICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbSByaWdodFwiXG4gICAgICAgICAgZHJvcGRvd25cbiAgICAgICAgPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiYnRuSWNvbiBjOHktZHJvcGRvd25cIlxuICAgICAgICAgICAgdGl0bGU9XCJ7eyAnU2V0dGluZ3MnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgICAgICAgIGRhdGEtY3k9XCJkYXNoYm9hcmQtY2hpbGQtLXNldHRpbmdzXCJcbiAgICAgICAgICAgIChjbGljayk9XCIoZmFsc2UpXCJcbiAgICAgICAgICAgIGRyb3Bkb3duVG9nZ2xlXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgW2M4eUljb25dPVwiJ2NvZydcIj48L2k+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPHVsXG4gICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLW1lbnUgZHJvcGRvd24tbWVudS1yaWdodFwiXG4gICAgICAgICAgICBzdHlsZT1cInJpZ2h0OiAtMXB4XCJcbiAgICAgICAgICAgICpkcm9wZG93bk1lbnVcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgYWN0aW9uc1wiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYWN0aW9uLnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWlubmVyLXNjcm9sbFwiPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwicmVzaXplLWhhbmRsZSBoaWRkZW4teHNcIlxuICAgICAgKm5nSWY9XCIhaXNGcm96ZW4gJiYgIWlzRHJhZ2dpbmdcIlxuICAgICAgY2RrRHJhZ1xuICAgICAgW2Nka0RyYWdEaXNhYmxlZF09XCJpc0Zyb3plblwiXG4gICAgICAoY2RrRHJhZ1N0YXJ0ZWQpPVwicmVzaXplU3RhcnRlZCgkZXZlbnQpXCJcbiAgICAgIChjZGtEcmFnRW5kZWQpPVwicmVzZXQoJGV2ZW50KVwiXG4gICAgPjwvZGl2PlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwicmVzaXplLWljb24gaGlkZGVuLXhzXCJcbiAgICAgICpuZ0lmPVwiIWlzRnJvemVuICYmICFpc0RyYWdnaW5nXCJcbiAgICA+PC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImNhcmQtcGxhY2Vob2xkZXJcIlxuICAgICAgKmNka0RyYWdQbGFjZWhvbGRlclxuICAgID48L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
283
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLWNoaWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvZGFzaGJvYXJkL2Rhc2hib2FyZC1jaGlsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2Rhc2hib2FyZC9kYXNoYm9hcmQtY2hpbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNMLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUNMLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUE0QixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0QsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbkYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7QUFFOUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNENHO0FBUUgsTUFBTSxPQUFPLHVCQUF1QjtJQUVsQyxJQUFvRCxlQUFlLENBQ2pFLE9BQXdDO1FBRXhDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFvRUQ7O09BRUc7SUFDSCxJQUFJLE9BQU8sQ0FBQyxLQUFLO1FBQ2YsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLEtBQUssSUFBSSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksUUFBUSxD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LDZCQUE2QixrREN4RWhELDR4RUE0RUE7MkZETmEsdUJBQXVCO2tCQVBuQyxTQUFTOytCQUNFLHFCQUFxQixRQUV6Qjt3QkFDSixLQUFLLEVBQUUsc0JBQXNCO3FCQUM5Qjs2SkFJbUQsZUFBZTtzQkFBbEUsZUFBZTt1QkFBQyw2QkFBNkI7Z0JBa0JyQyxDQUFDO3NCQUFULEtBQUs7Z0JBS0csQ0FBQztzQkFBVCxLQUFLO2dCQUtHLEtBQUs7c0JBQWIsS0FBSztnQkFLRyxNQUFNO3NCQUFkLEtBQUs7Z0JBS0csSUFBSTtzQkFBWixLQUFLO2dCQUtHLE1BQU07c0JBQWQsS0FBSztnQkFNRyxRQUFRO3NCQUFoQixLQUFLO2dCQUtHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBS0ksV0FBVztzQkFBcEIsTUFBTTtnQkFLRyxTQUFTO3NCQUFsQixNQUFNO2dCQU1QLEtBQUs7c0JBREosS0FBSztnQkErQ0YsV0FBVztzQkFEZCxXQUFXO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtEcmFnLCBDZGtEcmFnRW5kLCBDZGtEcmFnU3RhcnQgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT3V0cHV0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGFzaGJvYXJkQ2hpbGRBY3Rpb25Db21wb25lbnQgfSBmcm9tICcuL2Rhc2hib2FyZC1jaGlsZC1hY3Rpb24uY29tcG9uZW50JztcbmltcG9ydCB7IERhc2hib2FyZENoaWxkQ2hhbmdlIH0gZnJvbSAnLi9kYXNoYm9hcmQtY2hpbGQtY2hhbmdlJztcbmltcG9ydCB7IERhc2hib2FyZENvbXBvbmVudCB9IGZyb20gJy4vZGFzaGJvYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXNoYm9hcmRDaGlsZERpbWVuc2lvbiwgV2lkZ2V0IH0gZnJvbSAnLi9kYXNoYm9hcmQubW9kZWwnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuLyoqXG4gKiBBIGRhc2hib2FyZCBjaGlsZCBhbGxvd3MgdG8gcG9zaXRpb24gZWxlbWVudHNcbiAqIGNvcnJlY3RseSBvbiBhIGdyaWQuIFRoZSB1c2VyIGNhbiB0aGVuIHJlc2l6ZSBhbmRcbiAqIHJlYXJyYW5nZSB0aGUgZWxlbWVudHMsIGFzIGxvbmcgYXMgdGhleSBhcmUgbm90IGBmcm96ZW5gLlxuICpcbiAqIEJ5IHNldHRpbmcgYGM4eS1kYXNoYm9hcmQtY2hpbGQtYWN0aW9uc2AgYW5kXG4gKiBgYzh5LWRhc2hib2FyZC1jaGlsZC10aXRsZWAgb24gdGhlIGVsZW1lbnQgeW91IGNhbiBhZGRcbiAqIGN1c3RvbSBhY3Rpb25zIG9yIGEgY3VzdG9tIHRpdGxlIHRvIHRoZSBjdXJyZW50IGNoaWxkLlxuICpcbiAqIEJ5IGFkZGluZyB0aGUgY29ycmVjdCBicmFuZGVkIGNsYXNzZXMsIHlvdSBjYW4gZGVmaW5lXG4gKiB0aGUgbG9vayBhbmQgZmVlbCBvZiB0aGUgY2hpbGQuIEJ5IGRlZmF1bHQgaXQgaXMgZGlzcGxheWVkXG4gKiBhcyBhIGNhcmQuXG4gKlxuICogRXhhbXBsZTpcbiAqXG4gKiBgYGBodG1sXG4gKiAgIDxjOHktZGFzaGJvYXJkLWNoaWxkXG4gKiAgICAgI2NwV2lkZ2V0M1xuICogICAgIFtpc0Zyb3plbl09XCJpc0Zyb3plblwiXG4gKiAgICAgW3hdPVwiMFwiXG4gKiAgICAgW3ldPVwiM1wiXG4gKiAgICAgW3dpZHRoXT1cIjRcIlxuICogICAgIFtoZWlnaHRdPVwiNFwiXG4gKiAgICAgW2NsYXNzXT1cIidjYXJkLWRhc2hib2FyZCBwYW5lbC1jb250ZW50LXRyYW5zcGFyZW50J1wiXG4gKiAgID5cbiAqICAgICA8Yzh5LWRhc2hib2FyZC1jaGlsZC10aXRsZSAqbmdJZj1cInNob3dUaXRsZVwiPlxuICogICAgICAgPHNwYW4+VHJhbnNwYXJlbnQhPC9zcGFuPlxuICogICAgIDwvYzh5LWRhc2hib2FyZC1jaGlsZC10aXRsZT5cbiAqICAgICA8Yzh5LWRhc2hib2FyZC1jaGlsZC1hY3Rpb24+XG4gKiAgICAgICA8YSBocmVmPVwiXCIgKGNsaWNrKT1cInNob3dUaXRsZSA9ICFzaG93VGl0bGU7IChmYWxzZSlcIj5cbiAqICAgICAgICAgPGkgW2M4eUljb25dPVwiJ2hlYWRpbmcnXCI+PC9pPiBIaWRlL3Nob3cgdGl0bGVcbiAqICAgICAgIDwvYT5cbiAqICAgICA8L2M4eS1kYXNoYm9hcmQtY2hpbGQtYWN0aW9uPlxuICogICAgIDxjOHktZGFzaGJvYXJkLWNoaWxkLWFjdGlvbj5cbiAqICAgICAgIDxhIGhyZWY9XCJcIiAoY2xpY2spPVwiY3BXaWRnZXQzLmlzRnJvemVuID0gIWNwV2lkZ2V0My5pc0Zyb3plbjsgKGZhbHNlKVwiPlxuICogICAgICAgICA8aSBbYzh5SWNvbl09XCJjcFdpZGdldDMuaXNGcm96ZW4gPyAnbG9jaycgOiAndW5sb2NrJ1wiPjwvaT4gVG9nZ2xlIGZyZWV6ZVxuICogICAgICAgPC9hPlxuICogICAgIDwvYzh5LWRhc2hib2FyZC1jaGlsZC1hY3Rpb24+XG4gKiAgICAgeDoge3sgY3BXaWRnZXQzLnggfX08YnIgLz5cbiAqICAgICB5OiB7eyBjcFdpZGdldDMueSB9fTxiciAvPlxuICogICAgIHdpZHRoOiB7eyBjcFdpZGdldDMud2lkdGggfX08YnIgLz5cbiAqICAgICBoZWlnaHQ6IHt7IGNwV2lkZ2V0My5oZWlnaHQgfX08YnIgLz5cbiAqICAgPC9jOHktZGFzaGJvYXJkLWNoaWxkPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1kYXNoYm9hcmQtY2hpbGQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGFzaGJvYXJkLWNoaWxkLmNvbXBvbmVudC5odG1sJyxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnZGFzaGJvYXJkLWdyaWQtY2hpbGQnXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgRGFzaGJvYXJkQ2hpbGRDb21wb25lbnQgaW1wbGVtZW50cyBEYXNoYm9hcmRDaGlsZERpbWVuc2lvbiB7XG4gIGFjdGlvbnM6IERhc2hib2FyZENoaWxkQWN0aW9uQ29tcG9uZW50W10gPSBbXTtcbiAgQENvbnRlbnRDaGlsZHJlbihEYXNoYm9hcmRDaGlsZEFjdGlvbkNvbXBvbmVudCkgc2V0IHRlbXBsYXRlQWN0aW9ucyhcbiAgICBhY3Rpb25zOiBEYXNoYm9hcmRDaGlsZEFjdGlvbkNvbXBvbmVudFtdXG4gICkge1xuICAgIHRoaXMuYWRkQWN0aW9ucyhhY3Rpb25zLCB0cnVlKTtcbiAgfVxuICBkcmFnU291cmNlOiBDZGtEcmFnO1xuICBpc1Jlc2l6ZSA9IGZhbHNlO1xuICBpc0RyYWdnaW5nID0gZmFsc2U7XG4gIGtsYXNzZXMgPSB7fTtcblxuICBfcHhXaWR0aCA9ICcxMDAlJztcbiAgX3B4SGVpZ2h0ID0gJzEwMCUnO1xuXG4gIHJlYWRvbmx5IE1EX0JPT1RTVFJBUF9CUkVBS1BPSU5UX1JFQURPTkxZX0NMQVNTX1BST1BFUlRZID0gNzY4O1xuXG4gIC8qKlxuICAgKiBUaGUgeCBwb3NpdGlvbiBvZiB0aGUgY2hpbGQuXG4gICAqL1xuICBASW5wdXQoKSB4O1xuXG4gIC8qKlxuICAgKiBUaGUgeSBwb3NpdGlvbiBvZiB0aGUgY2hpbGQuXG4gICAqL1xuICBASW5wdXQoKSB5O1xuXG4gIC8qKlxuICAgKiBUaGUgd2lkdGggb2YgdGhlIGNvbXBvbmVudCBpbiBncmlkLWNvbHVtbnMuXG4gICAqL1xuICBASW5wdXQoKSB3aWR0aCA9IDE7XG5cbiAgLyoqXG4gICAqIFRoZSBoZWlnaHQgb2YgdGhlIGNvbXBvbmVudCBpbiBncmlkLXJvd3MuXG4gICAqL1xuICBASW5wdXQoKSBoZWlnaHQgPSAxO1xuXG4gIC8qKlxuICAgKiBUaGUgZGF0YSBvYmplY3QgY2FuIGJlIHVzZWQgYXMgYSBkYXRhVHJhbnNmZXIgb2JqZWN0IGZvciBldmVudHMgb2YgdGhlIGNoaWxkLlxuICAgKi9cbiAgQElucHV0KCkgZGF0YTogV2lkZ2V0IHwgYW55O1xuXG4gIC8qKlxuICAgKiBUaGUgbWFyZ2luIG9mIHRoZSBjaGlsZCBpbiBwaXhlbC5cbiAgICovXG4gIEBJbnB1dCgpIG1hcmdpbiA9IDEyO1xuXG4gIC8qKlxuICAgKiBJZiBhIGRhc2hib2FyZCBpcyBmcm96ZW4sIGFsbCBjaGlsZHJlbiBjYW5ub3QgYmUgbW92ZWRcbiAgICogb3IgcmVzaXplZC5cbiAgICovXG4gIEBJbnB1dCgpIGlzRnJvemVuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBjaGlsZCBjb250ZW50IGlzIGluaXRpYWxpemVkLCBhcyBzb29uIGl0IGlzIHNjcm9sbGVkIGludG8gdmlld3BvcnRcbiAgICovXG4gIEBJbnB1dCgpIHVzZUludGVyc2VjdGlvbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBBbiBldmVudCBmaXJlZCBpZiBhIGNoaWxkIGNoYW5nZSBpcyBzdGFydGVkIChkcmFnZ2luZyBvciByZXNpemluZylcbiAgICovXG4gIEBPdXRwdXQoKSBjaGFuZ2VTdGFydCA9IG5ldyBFdmVudEVtaXR0ZXI8RGFzaGJvYXJkQ2hpbGRDb21wb25lbnQ+KCk7XG5cbiAgLyoqXG4gICAqIEFuIGV2ZW50IGZpcmVkIGlmIGEgY2hpbGQgY2hhbmdlIGlzIGVuZGVkXG4gICAqL1xuICBAT3V0cHV0KCkgY2hhbmdlRW5kID0gbmV3IEV2ZW50RW1pdHRlcjxEYXNoYm9hcmRDaGlsZENvbXBvbmVudD4oKTtcblxuICAvKipcbiAgICogQWxsIGNsYXNzZXMgYWRkZWQgdG8gdGhpcyBjaGlsZFxuICAgKi9cbiAgQElucHV0KClcbiAgY2xhc3M6IHN0cmluZ1tdIHwgeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcGl4ZWwgd2lkdGggb2YgdGhlIGNoaWxkICh1c2VkIGZvciByZXNpemluZylcbiAgICovXG4gIHNldCBweFdpZHRoKHZhbHVlKSB7XG4gICAgdGhpcy5fcHhXaWR0aCA9IGAke3ZhbHVlfXB4YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBwaXhlbCBoZWlnaHQgb2YgdGhlIGNoaWxkICh1c2VkIGZvciByZXNpemluZylcbiAgICovXG4gIHNldCBweEhlaWdodCh2YWx1ZSkge1xuICAgIHRoaXMuX3B4SGVpZ2h0ID0gYCR7dmFsdWV9cHhgO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyaWdnZXJzIG9uIGV2ZXJ5IHJlc2l6ZSBhbmQgcmV0dXJucyB0cnVlIGlmIGluIG9uZSBjb2x1bW4gdmlldyAobW9iaWxlIHZpZXcpXG4gICAqL1xuICBpc09uZUNvbHVtblZpZXckOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpLnBpcGUoXG4gICAgbWFwKF8gPT4ge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoIDw9IHRoaXMuTURfQk9PVFNUUkFQX0JSRUFLUE9JTlRfUkVBRE9OTFlfQ0xBU1NfUFJPUEVSVFlcbiAgICAgICk7XG4gICAgfSksXG4gICAgZGVib3VuY2VUaW1lKDIwMCksXG4gICAgc3RhcnRXaXRoKFxuICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoIDw9IHRoaXMuTURfQk9PVFNUUkFQX0JSRUFLUE9JTlRfUkVBRE9OTFlfQ0xBU1NfUFJPUEVSVFlcbiAgICApXG4gICk7XG5cbiAgLyoqXG4gICAqIEFuIGluZGljYXRvciBpZiB0aGUgY2hpbGQgaXMgaW50ZXJzZWN0ZWQgKHRoYXQgbWVhbiB2aXNpYmxlIGZvciB0aGUgdXNlcilcbiAgICovXG4gIGludGVyc2VjdGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRlbGxzIGlmIHRoZSBsYXN0IGNoYW5nZSB3YXMgYSBkcmFnZ2luZyBvciByZXNpemluZyBldmVudDtcbiAgICovXG4gIGxhc3RDaGFuZ2U6ICdkcmFnJyB8ICdyZXNpemUnID0gbnVsbDtcblxuICAvKipcbiAgICogbmFzdHkgd29ya2Fyb3VuZCBmb3IgdGhhdCBpc3N1ZTpcbiAgICogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvOTM0M1xuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnN0eWxlJylcbiAgZ2V0IGlubGluZVN0eWxlKCkge1xuICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0U3R5bGUoYFxuICAgIGdyaWQtY29sdW1uLXN0YXJ0OiAke3RoaXMueCArIDF9O1xuICAgIGdyaWQtcm93LXN0YXJ0OiAke3RoaXMueSArIDF9O1xuICAgIGdyaWQtY29sdW1uLWVuZDogc3BhbiAke3RoaXMud2lkdGh9O1xuICAgIGdyaWQtcm93LWVuZDogc3BhbiAke3RoaXMuaGVpZ2h0fTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW46ICR7dGhpcy5tYXJnaW4gfHwgMTJ9cHg7XG4gICAgb3JkZXI6ICR7dGhpcy5nZXRPcmRlcigpfTtcbiAgICBgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgb2JzZXJ2YWJsZSBzdWJzY3JpcHRpb24gd2hpY2ggaXMgbGlzdGVuIHRvXG4gICAqIG9uIGNoYW5nZXMgKGRyYWcgb3IgcmVzaXplKS5cbiAgICovXG4gIGNoYW5nZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBkYXNoYm9hcmQ6IERhc2hib2FyZENvbXBvbmVudCxcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgIHB1YmxpYyBlbGVtZW50OiBFbGVtZW50UmVmXG4gICkge31cblxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLmtsYXNzZXMgPSB7XG4gICAgICBjYXJkOiB0cnVlLFxuICAgICAgJ2NhcmQtZGFzaGJvYXJkJzogdHJ1ZSxcbiAgICAgIGRpc2FibGVkOiB0aGlzLmlzRnJvemVuLFxuICAgICAgJ29uLXJlc2l6ZSc6IHRoaXMuaXNSZXNpemUsXG4gICAgICAuLi50aGlzLmNsYXNzXG4gICAgfTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnggPT09IHVuZGVmaW5lZCB8fCB0aGlzLnkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNldER5bmFtaWNEaW1lbnNpb24oKSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnVzZUludGVyc2VjdGlvbiAmJiAnSW50ZXJzZWN0aW9uT2JzZXJ2ZXInIGluIHdpbmRvdykge1xuICAgICAgY29uc3QgaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoXG4gICAgICAgIGV2ZW50ID0+ICh0aGlzLmludGVyc2VjdGVkID0gdGhpcy5jaGlsZEluVmlldyhldmVudFswXSwgaW50ZXJzZWN0aW9uT2JzZXJ2ZXIpKVxuICAgICAgKTtcbiAgICAgIGludGVyc2VjdGlvbk9ic2VydmVyLm9ic2VydmUodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmludGVyc2VjdGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5kYXNoYm9hcmQuY2hpbGRyZW4ucHVzaCh0aGlzKTtcbiAgfVxuXG4gIHNldER5bmFtaWNEaW1lbnNpb24oKSB7XG4gICAgY29uc3QgZHMgPSBuZXcgRGFzaGJvYXJkQ2hpbGRDaGFuZ2UodGhpcyk7XG4gICAgY29uc3QgeyB4LCB5IH0gPSBkcy5maW5kRnJlZURpbWVuc2lvbigpO1xuICAgIHRoaXMueCA9IHg7XG4gICAgdGhpcy55ID0geTtcblxuICAgIHRoaXMuZGFzaGJvYXJkLmVtaXRDaGFuZ2UodGhpcyk7XG4gIH1cblxuICByZXNpemVTdGFydGVkKCRldmVudDogQ2RrRHJhZ1N0YXJ0KSB7XG4gICAgdGhpcy5pc1Jlc2l6ZSA9IHRydWU7XG4gICAgdGhpcy5kYXNoYm9hcmQudXBkYXRlUmVjdFNpemUoKTtcbiAgICB0aGlzLmRyYWdTb3VyY2UgPSAkZXZlbnQuc291cmNlO1xuICAgIGNvbnN0IHBvc2l0aW9uaW5nID0gbmV3IERhc2hib2FyZENoaWxkQ2hhbmdlKHRoaXMpO1xuICAgIHRoaXMuY2hhbmdlU3Vic2NyaXB0aW9uID0gcG9zaXRpb25pbmcucmVzaXplJC5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmNoYW5nZVN0YXJ0LmVtaXQodGhpcyk7XG4gICAgdGhpcy5uZ09uQ2hhbmdlcygpO1xuICB9XG5cbiAgZHJhZ1N0YXJ0ZWQoJGV2ZW50OiBDZGtEcmFnU3RhcnQpIHtcbiAgICB0aGlzLmlzRHJhZ2dpbmcgPSB0cnVlO1xuICAgIHRoaXMuZGFzaGJvYXJkLnVwZGF0ZVJlY3RTaXplKCk7XG4gICAgdGhpcy5kcmFnU291cmNlID0gJGV2ZW50LnNvdXJjZTtcbiAgICBjb25zdCBwb3NpdGlvbmluZyA9IG5ldyBEYXNoYm9hcmRDaGlsZENoYW5nZSh0aGlzKTtcbiAgICB0aGlzLmNoYW5nZVN1YnNjcmlwdGlvbiA9IHBvc2l0aW9uaW5nLmRyYWckLnN1YnNjcmliZSgpO1xuICAgIHRoaXMuY2hhbmdlU3RhcnQuZW1pdCh0aGlzKTtcbiAgfVxuXG4gIHJlc2V0KCRldmVudD86IENka0RyYWdFbmQpIHtcbiAgICB0aGlzLmxhc3RDaGFuZ2UgPSB0aGlzLmlzUmVzaXplID8gJ3Jlc2l6ZScgOiAnZHJhZyc7XG4gICAgdGhpcy5pc1Jlc2l6ZSA9IGZhbHNlO1xuICAgIHRoaXMuaXNEcmFnZ2luZyA9IGZhbHNlO1xuICAgIHRoaXMuX3B4V2lkdGggPSAnMTAwJSc7XG4gICAgdGhpcy5fcHhIZWlnaHQgPSAnMTAwJSc7XG4gICAgdGhpcy5uZ09uQ2hhbmdlcygpO1xuICAgIGlmICgkZXZlbnQpIHtcbiAgICAgICRldmVudC5zb3VyY2UucmVzZXQoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY2hhbmdlU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmNoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5kYXNoYm9hcmQuZW1pdENoYW5nZSh0aGlzKTtcbiAgICAgIHRoaXMuY2hhbmdlRW5kLmVtaXQodGhpcyk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuY2hhbmdlU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmNoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICB0aGlzLnJlbW92ZVNlbGZGcm9tRGFzaGJvYXJkKCk7XG4gIH1cblxuICBhZGRBY3Rpb25zKGFjdGlvbnM6IERhc2hib2FyZENoaWxkQWN0aW9uQ29tcG9uZW50W10sIHByZXBlbmQgPSBmYWxzZSkge1xuICAgIGlmIChwcmVwZW5kKSB7XG4gICAgICB0aGlzLmFjdGlvbnMgPSBbLi4uYWN0aW9ucywgLi4udGhpcy5hY3Rpb25zXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hY3Rpb25zID0gWy4uLnRoaXMuYWN0aW9ucywgLi4uYWN0aW9uc107XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVTZWxmRnJvbURhc2hib2FyZCgpIHtcbiAgICBjb25zdCBpID0gdGhpcy5kYXNoYm9hcmQuY2hpbGRyZW4uaW5kZXhPZih0aGlzKTtcblxuICAgIGlmIChpID49IDApIHtcbiAgICAgIHRoaXMuZGFzaGJvYXJkLmNoaWxkcmVuLnNwbGljZShpLCAxKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldE9yZGVyKCkge1xuICAgIHJldHVybiBgJHtNYXRoLnJvdW5kKCh0aGlzLnkgKyAodGhpcy54ICsgMSkgLyAxMDApICogMTAwKX1gO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGlsZEluVmlldyhldmVudCwgb2JzZXJ2ZXIpIHtcbiAgICBpZiAoZXZlbnQuaXNJbnRlcnNlY3RpbmcpIHtcbiAgICAgIG9ic2VydmVyLnVub2JzZXJ2ZShldmVudC50YXJnZXQpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIiwiPGRpdiBjZGtEcm9wTGlzdD5cbiAgPGRpdlxuICAgIGNsYXNzPVwiY2FyZC1wbGFjZWhvbGRlclwiXG4gICAgKm5nSWY9XCJpc1Jlc2l6ZVwiXG4gID48L2Rpdj5cbiAgPGRpdlxuICAgIFtuZ1N0eWxlXT1cInsgd2lkdGg6IF9weFdpZHRoLCBoZWlnaHQ6IF9weEhlaWdodCB9XCJcbiAgICBbbmdDbGFzc109XCJrbGFzc2VzXCJcbiAgICBjZGtEcmFnXG4gICAgKGNka0RyYWdTdGFydGVkKT1cImRyYWdTdGFydGVkKCRldmVudClcIlxuICAgIChjZGtEcmFnRW5kZWQpPVwicmVzZXQoJGV2ZW50KVwiXG4gICAgW2Nka0RyYWdEaXNhYmxlZF09XCJpc0Zyb3plbiB8fCAoaXNPbmVDb2x1bW5WaWV3JCB8IGFzeW5jKVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImNhcmQtaGVhZGVyLWFjdGlvbnMgY2FyZC1oZWFkZXItZ3JpZFwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdkcmFnLWhhbmRsZSc6ICFpc0Zyb3plbiwgZHJhZ2dhYmxlQ3Vyc29yOiAhaXNGcm96ZW4gfVwiXG4gICAgICBjZGtEcmFnSGFuZGxlXG4gICAgPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYzh5LWRhc2hib2FyZC1jaGlsZC10aXRsZVwiPjwvbmctY29udGVudD5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJoZWFkZXItYWN0aW9ucyBkLWZsZXggYS1pLWNlbnRlclwiXG4gICAgICAgICpuZ0lmPVwiIWlzRnJvemVuICYmIGFjdGlvbnMubGVuZ3RoID4gMFwiXG4gICAgICA+XG4gICAgICAgIDxjOHktd2lkZ2V0LXRpbWUtY29udGV4dC1pY29uLWJhclxuICAgICAgICAgICpuZ0lmPVwiZGF0YT8uY29uZmlnPy5kaXNwbGF5U2V0dGluZ3MgJiYgZGF0YT8uY29uZmlnPy53aWRnZXRJbnN0YW5jZUdsb2JhbFRpbWVDb250ZXh0XCJcbiAgICAgICAgICBbY29uZmlnXT1cImRhdGEuY29uZmlnXCJcbiAgICAgICAgPjwvYzh5LXdpZGdldC10aW1lLWNvbnRleHQtaWNvbi1iYXI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cIm9wdGlvbnNCdG4gZHJvcGRvd25cIlxuICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbSByaWdodFwiXG4gICAgICAgICAgZHJvcGRvd25cbiAgICAgICAgPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiYnRuSWNvbiBjOHktZHJvcGRvd25cIlxuICAgICAgICAgICAgdGl0bGU9XCJ7eyAnU2V0dGluZ3MnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgICAgICAgIGRhdGEtY3k9XCJjOHktZGFzaGJvYXJkLWNoaWxkLS1zZXR0aW5nc1wiXG4gICAgICAgICAgICAoY2xpY2spPVwiKGZhbHNlKVwiXG4gICAgICAgICAgICBkcm9wZG93blRvZ2dsZVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIFtjOHlJY29uXT1cIidjb2cnXCI+PC9pPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDx1bFxuICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1tZW51IGRyb3Bkb3duLW1lbnUtcmlnaHRcIlxuICAgICAgICAgICAgc3R5bGU9XCJyaWdodDogLTFweFwiXG4gICAgICAgICAgICAqZHJvcGRvd25NZW51XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFjdGlvbi50ZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1pbm5lci1zY3JvbGxcIj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInJlc2l6ZS1oYW5kbGUgaGlkZGVuLXhzXCJcbiAgICAgICpuZ0lmPVwiIWlzRnJvemVuICYmICFpc0RyYWdnaW5nXCJcbiAgICAgIGNka0RyYWdcbiAgICAgIFtjZGtEcmFnRGlzYWJsZWRdPVwiaXNGcm96ZW5cIlxuICAgICAgKGNka0RyYWdTdGFydGVkKT1cInJlc2l6ZVN0YXJ0ZWQoJGV2ZW50KVwiXG4gICAgICAoY2RrRHJhZ0VuZGVkKT1cInJlc2V0KCRldmVudClcIlxuICAgID48L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInJlc2l6ZS1pY29uIGhpZGRlbi14c1wiXG4gICAgICAqbmdJZj1cIiFpc0Zyb3plbiAmJiAhaXNEcmFnZ2luZ1wiXG4gICAgPjwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJjYXJkLXBsYWNlaG9sZGVyXCJcbiAgICAgICpjZGtEcmFnUGxhY2Vob2xkZXJcbiAgICA+PC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -142,7 +142,7 @@ export class WidgetsDashboardComponent {
142
142
  }
143
143
  }
144
144
  WidgetsDashboardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: WidgetsDashboardComponent, deps: [{ token: i1.DynamicComponentService }, { token: i2.TranslateService }, { token: i3.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
145
- WidgetsDashboardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: WidgetsDashboardComponent, selector: "c8y-widgets-dashboard", inputs: { widgets: "widgets", context: "context", contextDashboard: "contextDashboard", _settings: ["settings", "_settings"], breadcrumb: "breadcrumb" }, outputs: { onAddWidget: "onAddWidget", onEditWidget: "onEditWidget", onDeleteWidget: "onDeleteWidget", onChangeDashboard: "onChangeDashboard", onEditDashboard: "onEditDashboard", onCopyDashboard: "onCopyDashboard", onDeleteDashboard: "onDeleteDashboard", onFreeze: "onFreeze", onChangeStart: "onChangeStart", onChangeEnd: "onChangeEnd" }, host: { styleAttribute: "\n display: block;\n ", classAttribute: "dashboard c8y-grid-dashboard" }, providers: [WidgetsDashboardEventService], ngImport: i0, template: "<c8y-title *ngIf=\"!!settings.title\">\n {{ settings.title | translate }}\n</c8y-title>\n\n<c8y-breadcrumb *ngIf=\"!!breadcrumb\">\n <c8y-breadcrumb-item\n [icon]=\"breadcrumb.icon\"\n [label]=\"breadcrumb.label\"\n [path]=\"breadcrumb.path\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n *ngIf=\"onAddWidget.observers.length\"\n>\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add widget' | translate }}\"\n type=\"button\"\n [disabled]=\"settings.isFrozen || settings.isDisabled\"\n (click)=\"onAddWidget.emit()\"\n data-cy=\"widget-dashboard--Add-widget\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add widget' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n *ngIf=\"onEditDashboard.observers.length\"\n>\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Edit' | translate }}\"\n type=\"button\"\n [disabled]=\"settings.isFrozen || settings.isDisabled\"\n (click)=\"onEditDashboard.emit()\"\n data-cy=\"widgets-dashboard--edit-widget\"\n >\n <i c8yIcon=\"pencil\"></i>\n {{ 'Edit' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n *ngIf=\"settings.allowFullscreen\"\n>\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Full screen' | translate }}\"\n type=\"button\"\n (click)=\"toggleFullscreen()\"\n data-cy=\"widgets-dashboard--Full-screen\"\n >\n <i [c8yIcon]=\"fullScreen() ? 'compress' : 'expand'\"></i>\n {{ 'Full screen' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n itemClass=\"navbar-form\"\n *ngIf=\"onFreeze.observers.length\"\n>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Lock/unlock this dashboard' | translate }}\"\n type=\"button\"\n [ngClass]=\"{ active: settings.isFrozen }\"\n (click)=\"onFreeze.emit(settings)\"\n [disabled]=\"settings.isDisabled\"\n uib-btn-checkbox\n data-cy=\"widgets-dashboard--button-lock-toggle\"\n >\n <i [c8yIcon]=\"settings.isFrozen ? 'lock' : 'unlock'\"></i>\n </button>\n</c8y-action-bar-item>\n<c8y-action-bar-item\n [placement]=\"'more'\"\n [priority]=\"-2000\"\n *ngIf=\"settings.canCopy\"\n>\n <button\n class=\"btn btn-link\"\n title=\"{{\n settings.isCopyDisabled ? copyDashboardWarningMessage : ('Copy dashboard' | translate)\n }}\"\n type=\"button\"\n data-cy=\"widgets-dashboard--copy-dashboard\"\n (click)=\"onCopyDashboard.emit()\"\n [disabled]=\"settings.isCopyDisabled\"\n >\n <i c8yIcon=\"clone\"></i>\n <span\n class=\"m-l-4\"\n translate\n >\n Copy dashboard\n </span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'more'\"\n [priority]=\"-3000\"\n *ngIf=\"settings.canDelete && onDeleteDashboard.observers.length\"\n>\n <button\n title=\"{{ 'Delete dashboard' | translate }}\"\n type=\"button\"\n (click)=\"onDeleteDashboard.emit()\"\n [disabled]=\"settings.isFrozen || settings.isDisabled\"\n >\n <i c8yIcon=\"delete\"></i>\n <span\n class=\"m-l-4\"\n translate\n >\n Delete dashboard\n </span>\n </button>\n</c8y-action-bar-item>\n\n<ng-template #loadingIndicator>\n <c8y-loading\n class=\"col-xs-12 text-center\"\n *ngIf=\"isLoadingWidgets$ | async\"\n ></c8y-loading>\n</ng-template>\n\n<ng-container *ngIf=\"!(isLoadingWidgets$ | async); else loadingIndicator\">\n <ng-container *ngIf=\"resolvedWidgets$ | async as widgetsToDisplay\">\n <!-- empty state -->\n <c8y-ui-empty-state\n [icon]=\"'c8y-device'\"\n [title]=\"'No widgets to display.' | translate\"\n *ngIf=\"widgetsToDisplay?.length === 0\"\n >\n <div *ngIf=\"!settings.isFrozen && onAddWidget.observers.length\">\n <p translate>Add widgets to this dashboard.</p>\n <div>\n <button\n class=\"btn btn-primary m-t-16\"\n title=\"{{ 'Add widget' | translate }}\"\n type=\"button\"\n [disabled]=\"settings.isFrozen || settings.isDisabled\"\n (click)=\"onAddWidget.emit()\"\n data-cy=\"widgets-dashboard--Add-widget\"\n translate\n >\n Add widget\n </button>\n </div>\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a c8y-guide-href=\"/docs/cockpit/working-with-dashboards\">user documentation</a>\n .\n </small>\n </p>\n </div>\n </c8y-ui-empty-state>\n\n <c8y-dashboard\n [columns]=\"settings.columns\"\n (dashboardChange)=\"onChangeDashboard.emit($event)\"\n #dashboard\n >\n <c8y-dashboard-child\n [class]=\"widget.classes\"\n *ngFor=\"let widget of widgetsToDisplay\"\n [x]=\"widget._x\"\n [y]=\"widget._y\"\n [width]=\"widget._width || settings.defaultWidth\"\n [height]=\"widget._height || settings.defaultHeight\"\n [margin]=\"settings.widgetMargin\"\n [isFrozen]=\"settings.isFrozen || settings.isDisabled\"\n [data]=\"widget\"\n [useIntersection]=\"true\"\n (changeStart)=\"onChangeStart.emit({ widget: widget, source: child, dashboard: dashboard })\"\n (changeEnd)=\"onChangeEnd.emit({ widget: widget, source: child, dashboard: dashboard })\"\n #child\n >\n <c8y-dashboard-child-title>\n <span\n data-cy=\"c8y-dashboard-list--device-widget\"\n *ngIf=\"settings.translateWidgetTitle\"\n >\n {{ widget.title | translate }}\n </span>\n <span *ngIf=\"!settings.translateWidgetTitle\">\n {{ widget.title }}\n </span>\n </c8y-dashboard-child-title>\n <c8y-dashboard-child-action *ngIf=\"onEditWidget.observers.length\">\n <button\n title=\"{{ 'Edit widget' | translate }}\"\n type=\"button\"\n data-cy=\"widgets-dashboard--edit-dashboard\"\n (click)=\"onEditWidget.emit({ widget: widget, source: child, dashboard: dashboard })\"\n >\n <i c8yIcon=\"pencil\"></i>\n <span\n class=\"m-l-4\"\n translate\n >\n Edit\n </span>\n </button>\n </c8y-dashboard-child-action>\n <c8y-dashboard-child-action *ngIf=\"onDeleteWidget.observers.length\">\n <button\n title=\"{{ 'Remove widget' | translate }}\"\n type=\"button\"\n data-cy=\"widgets-dashboard--remove-widget\"\n (click)=\"onDeleteWidget.emit({ widget: widget, source: child, dashboard: dashboard })\"\n >\n <i c8yIcon=\"delete\"></i>\n <span\n class=\"m-l-4\"\n translate\n >\n Remove\n </span>\n </button>\n </c8y-dashboard-child-action>\n\n <c8y-widget-time-context\n *ngIf=\"\n (widget.config?.displaySettings?.globalTimeContext ||\n widget.config?.displaySettings?.globalRealtimeContext) &&\n widget.config.widgetInstanceGlobalTimeContext\n \"\n (dateContextChange)=\"updateWidgetConfig($event, widget)\"\n [canDecouple]=\"widget.config.canDecoupleGlobalTimeContext\"\n [displaySettings]=\"widget.config.displaySettings\"\n ></c8y-widget-time-context>\n\n <c8y-dynamic-component\n [componentId]=\"widget.componentId || widget.name\"\n [config]=\"\n widget.templateUrl || widget.widgetComponent\n ? { child: widget, dashboard: contextDashboard, context: context }\n : widget.config\n \"\n *ngIf=\"child.intersected\"\n (updateWidgetClasses)=\"updateWidgetClasses(widget, $event)\"\n ></c8y-dynamic-component>\n </c8y-dashboard-child>\n </c8y-dashboard>\n </ng-container>\n</ng-container>\n", dependencies: [{ kind: "component", type: i4.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i5.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i6.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.LoadingComponent, selector: "c8y-loading" }, { kind: "component", type: i9.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "component", type: i10.DynamicComponentComponent, selector: "c8y-dynamic-component", inputs: ["componentId", "config", "mode", "notFoundError", "executeResolvers"], outputs: ["updateWidgetClasses"] }, { kind: "component", type: i11.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "directive", type: i12.GuideHrefDirective, selector: "[c8y-guide-href]", inputs: ["c8y-guide-href"] }, { kind: "component", type: i13.GuideDocsComponent, selector: "[c8y-guide-docs]" }, { kind: "component", type: i14.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i15.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: i16.DashboardChildComponent, selector: "c8y-dashboard-child", inputs: ["x", "y", "width", "height", "data", "margin", "isFrozen", "useIntersection", "class"], outputs: ["changeStart", "changeEnd"] }, { kind: "component", type: i17.DashboardComponent, selector: "c8y-dashboard", inputs: ["columns", "gap", "rows"], outputs: ["dashboardChange"] }, { kind: "component", type: i18.DashboardChildTitleComponent, selector: "c8y-dashboard-child-title" }, { kind: "component", type: i19.DashboardChildActionComponent, selector: "c8y-dashboard-child-action" }, { kind: "component", type: i20.WidgetTimeContextComponent, selector: "c8y-widget-time-context", inputs: ["canDecouple", "displaySettings"], outputs: ["dateContextChange"] }, { kind: "pipe", type: i21.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }] });
145
+ WidgetsDashboardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: WidgetsDashboardComponent, selector: "c8y-widgets-dashboard", inputs: { widgets: "widgets", context: "context", contextDashboard: "contextDashboard", _settings: ["settings", "_settings"], breadcrumb: "breadcrumb" }, outputs: { onAddWidget: "onAddWidget", onEditWidget: "onEditWidget", onDeleteWidget: "onDeleteWidget", onChangeDashboard: "onChangeDashboard", onEditDashboard: "onEditDashboard", onCopyDashboard: "onCopyDashboard", onDeleteDashboard: "onDeleteDashboard", onFreeze: "onFreeze", onChangeStart: "onChangeStart", onChangeEnd: "onChangeEnd" }, host: { styleAttribute: "\n display: block;\n ", classAttribute: "dashboard c8y-grid-dashboard" }, providers: [WidgetsDashboardEventService], ngImport: i0, template: "<c8y-title *ngIf=\"!!settings.title\">\n {{ settings.title | translate }}\n</c8y-title>\n\n<c8y-breadcrumb *ngIf=\"!!breadcrumb\">\n <c8y-breadcrumb-item\n [icon]=\"breadcrumb.icon\"\n [label]=\"breadcrumb.label\"\n [path]=\"breadcrumb.path\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n *ngIf=\"onAddWidget.observers.length\"\n>\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add widget' | translate }}\"\n type=\"button\"\n [disabled]=\"settings.isFrozen || settings.isDisabled\"\n (click)=\"onAddWidget.emit()\"\n data-cy=\"widget-dashboard--Add-widget\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add widget' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n *ngIf=\"onEditDashboard.observers.length\"\n>\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Edit' | translate }}\"\n type=\"button\"\n [disabled]=\"settings.isFrozen || settings.isDisabled\"\n (click)=\"onEditDashboard.emit()\"\n data-cy=\"widgets-dashboard--edit-widget\"\n >\n <i c8yIcon=\"pencil\"></i>\n {{ 'Edit' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n *ngIf=\"settings.allowFullscreen\"\n>\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Full screen' | translate }}\"\n type=\"button\"\n (click)=\"toggleFullscreen()\"\n data-cy=\"widgets-dashboard--Full-screen\"\n >\n <i [c8yIcon]=\"fullScreen() ? 'compress' : 'expand'\"></i>\n {{ 'Full screen' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n itemClass=\"navbar-form\"\n *ngIf=\"onFreeze.observers.length\"\n>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Lock/unlock this dashboard' | translate }}\"\n type=\"button\"\n [ngClass]=\"{ active: settings.isFrozen }\"\n (click)=\"onFreeze.emit(settings)\"\n [disabled]=\"settings.isDisabled\"\n uib-btn-checkbox\n data-cy=\"widgets-dashboard--button-lock-toggle\"\n >\n <i [c8yIcon]=\"settings.isFrozen ? 'lock' : 'unlock'\"></i>\n </button>\n</c8y-action-bar-item>\n<c8y-action-bar-item\n [placement]=\"'more'\"\n [priority]=\"-2000\"\n *ngIf=\"settings.canCopy\"\n>\n <button\n class=\"btn btn-link\"\n title=\"{{\n settings.isCopyDisabled ? copyDashboardWarningMessage : ('Copy dashboard' | translate)\n }}\"\n type=\"button\"\n data-cy=\"widgets-dashboard--copy-dashboard\"\n (click)=\"onCopyDashboard.emit()\"\n [disabled]=\"settings.isCopyDisabled\"\n >\n <i c8yIcon=\"clone\"></i>\n <span\n class=\"m-l-4\"\n translate\n >\n Copy dashboard\n </span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'more'\"\n [priority]=\"-3000\"\n *ngIf=\"settings.canDelete && onDeleteDashboard.observers.length\"\n>\n <button\n title=\"{{ 'Delete dashboard' | translate }}\"\n type=\"button\"\n (click)=\"onDeleteDashboard.emit()\"\n [disabled]=\"settings.isFrozen || settings.isDisabled\"\n >\n <i c8yIcon=\"delete\"></i>\n <span\n class=\"m-l-4\"\n translate\n >\n Delete dashboard\n </span>\n </button>\n</c8y-action-bar-item>\n\n<ng-template #loadingIndicator>\n <c8y-loading\n class=\"col-xs-12 text-center\"\n *ngIf=\"isLoadingWidgets$ | async\"\n ></c8y-loading>\n</ng-template>\n\n<ng-container *ngIf=\"!(isLoadingWidgets$ | async); else loadingIndicator\">\n <ng-container *ngIf=\"resolvedWidgets$ | async as widgetsToDisplay\">\n <!-- empty state -->\n <c8y-ui-empty-state\n [icon]=\"'c8y-device'\"\n [title]=\"'No widgets to display.' | translate\"\n *ngIf=\"widgetsToDisplay?.length === 0\"\n >\n <div *ngIf=\"!settings.isFrozen && onAddWidget.observers.length\">\n <p translate>Add widgets to this dashboard.</p>\n <div>\n <button\n class=\"btn btn-primary m-t-16\"\n title=\"{{ 'Add widget' | translate }}\"\n type=\"button\"\n [disabled]=\"settings.isFrozen || settings.isDisabled\"\n (click)=\"onAddWidget.emit()\"\n data-cy=\"widgets-dashboard--Add-widget\"\n translate\n >\n Add widget\n </button>\n </div>\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a c8y-guide-href=\"/docs/cockpit/working-with-dashboards\">user documentation</a>\n .\n </small>\n </p>\n </div>\n </c8y-ui-empty-state>\n\n <c8y-dashboard\n [columns]=\"settings.columns\"\n (dashboardChange)=\"onChangeDashboard.emit($event)\"\n #dashboard\n >\n <c8y-dashboard-child\n [class]=\"widget.classes\"\n *ngFor=\"let widget of widgetsToDisplay\"\n [x]=\"widget._x\"\n [y]=\"widget._y\"\n [width]=\"widget._width || settings.defaultWidth\"\n [height]=\"widget._height || settings.defaultHeight\"\n [margin]=\"settings.widgetMargin\"\n [isFrozen]=\"settings.isFrozen || settings.isDisabled\"\n [data]=\"widget\"\n [useIntersection]=\"true\"\n (changeStart)=\"onChangeStart.emit({ widget: widget, source: child, dashboard: dashboard })\"\n (changeEnd)=\"onChangeEnd.emit({ widget: widget, source: child, dashboard: dashboard })\"\n #child\n >\n <c8y-dashboard-child-title>\n <span\n data-cy=\"c8y-dashboard-list--device-widget\"\n *ngIf=\"settings.translateWidgetTitle\"\n >\n {{ widget.title | translate }}\n </span>\n <span *ngIf=\"!settings.translateWidgetTitle\">\n {{ widget.title }}\n </span>\n </c8y-dashboard-child-title>\n <c8y-dashboard-child-action *ngIf=\"onEditWidget.observers.length\">\n <button\n title=\"{{ 'Edit widget' | translate }}\"\n type=\"button\"\n data-cy=\"c8y-widgets-dashboard--edit-dashboard\"\n (click)=\"onEditWidget.emit({ widget: widget, source: child, dashboard: dashboard })\"\n >\n <i c8yIcon=\"pencil\"></i>\n <span\n class=\"m-l-4\"\n translate\n >\n Edit\n </span>\n </button>\n </c8y-dashboard-child-action>\n <c8y-dashboard-child-action *ngIf=\"onDeleteWidget.observers.length\">\n <button\n title=\"{{ 'Remove widget' | translate }}\"\n type=\"button\"\n data-cy=\"c8y-widgets-dashboard--remove-widget\"\n (click)=\"onDeleteWidget.emit({ widget: widget, source: child, dashboard: dashboard })\"\n >\n <i c8yIcon=\"delete\"></i>\n <span\n class=\"m-l-4\"\n translate\n >\n Remove\n </span>\n </button>\n </c8y-dashboard-child-action>\n\n <c8y-widget-time-context\n *ngIf=\"\n (widget.config?.displaySettings?.globalTimeContext ||\n widget.config?.displaySettings?.globalRealtimeContext) &&\n widget.config.widgetInstanceGlobalTimeContext\n \"\n (dateContextChange)=\"updateWidgetConfig($event, widget)\"\n [canDecouple]=\"widget.config.canDecoupleGlobalTimeContext\"\n [displaySettings]=\"widget.config.displaySettings\"\n ></c8y-widget-time-context>\n\n <c8y-dynamic-component\n [componentId]=\"widget.componentId || widget.name\"\n [config]=\"\n widget.templateUrl || widget.widgetComponent\n ? { child: widget, dashboard: contextDashboard, context: context }\n : widget.config\n \"\n *ngIf=\"child.intersected\"\n (updateWidgetClasses)=\"updateWidgetClasses(widget, $event)\"\n ></c8y-dynamic-component>\n </c8y-dashboard-child>\n </c8y-dashboard>\n </ng-container>\n</ng-container>\n", dependencies: [{ kind: "component", type: i4.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i5.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i6.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.LoadingComponent, selector: "c8y-loading" }, { kind: "component", type: i9.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "component", type: i10.DynamicComponentComponent, selector: "c8y-dynamic-component", inputs: ["componentId", "config", "mode", "notFoundError", "executeResolvers"], outputs: ["updateWidgetClasses"] }, { kind: "component", type: i11.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "directive", type: i12.GuideHrefDirective, selector: "[c8y-guide-href]", inputs: ["c8y-guide-href"] }, { kind: "component", type: i13.GuideDocsComponent, selector: "[c8y-guide-docs]" }, { kind: "component", type: i14.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i15.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: i16.DashboardChildComponent, selector: "c8y-dashboard-child", inputs: ["x", "y", "width", "height", "data", "margin", "isFrozen", "useIntersection", "class"], outputs: ["changeStart", "changeEnd"] }, { kind: "component", type: i17.DashboardComponent, selector: "c8y-dashboard", inputs: ["columns", "gap", "rows"], outputs: ["dashboardChange"] }, { kind: "component", type: i18.DashboardChildTitleComponent, selector: "c8y-dashboard-child-title" }, { kind: "component", type: i19.DashboardChildActionComponent, selector: "c8y-dashboard-child-action" }, { kind: "component", type: i20.WidgetTimeContextComponent, selector: "c8y-widget-time-context", inputs: ["canDecouple", "displaySettings"], outputs: ["dateContextChange"] }, { kind: "pipe", type: i21.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }] });
146
146
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: WidgetsDashboardComponent, decorators: [{
147
147
  type: Component,
148
148
  args: [{ selector: 'c8y-widgets-dashboard', host: {
@@ -150,7 +150,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
150
150
  display: block;
151
151
  `,
152
152
  class: 'dashboard c8y-grid-dashboard'
153
- }, providers: [WidgetsDashboardEventService], template: "<c8y-title *ngIf=\"!!settings.title\">\n {{ settings.title | translate }}\n</c8y-title>\n\n<c8y-breadcrumb *ngIf=\"!!breadcrumb\">\n <c8y-breadcrumb-item\n [icon]=\"breadcrumb.icon\"\n [label]=\"breadcrumb.label\"\n [path]=\"breadcrumb.path\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n *ngIf=\"onAddWidget.observers.length\"\n>\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add widget' | translate }}\"\n type=\"button\"\n [disabled]=\"settings.isFrozen || settings.isDisabled\"\n (click)=\"onAddWidget.emit()\"\n data-cy=\"widget-dashboard--Add-widget\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add widget' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n *ngIf=\"onEditDashboard.observers.length\"\n>\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Edit' | translate }}\"\n type=\"button\"\n [disabled]=\"settings.isFrozen || settings.isDisabled\"\n (click)=\"onEditDashboard.emit()\"\n data-cy=\"widgets-dashboard--edit-widget\"\n >\n <i c8yIcon=\"pencil\"></i>\n {{ 'Edit' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n *ngIf=\"settings.allowFullscreen\"\n>\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Full screen' | translate }}\"\n type=\"button\"\n (click)=\"toggleFullscreen()\"\n data-cy=\"widgets-dashboard--Full-screen\"\n >\n <i [c8yIcon]=\"fullScreen() ? 'compress' : 'expand'\"></i>\n {{ 'Full screen' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n itemClass=\"navbar-form\"\n *ngIf=\"onFreeze.observers.length\"\n>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Lock/unlock this dashboard' | translate }}\"\n type=\"button\"\n [ngClass]=\"{ active: settings.isFrozen }\"\n (click)=\"onFreeze.emit(settings)\"\n [disabled]=\"settings.isDisabled\"\n uib-btn-checkbox\n data-cy=\"widgets-dashboard--button-lock-toggle\"\n >\n <i [c8yIcon]=\"settings.isFrozen ? 'lock' : 'unlock'\"></i>\n </button>\n</c8y-action-bar-item>\n<c8y-action-bar-item\n [placement]=\"'more'\"\n [priority]=\"-2000\"\n *ngIf=\"settings.canCopy\"\n>\n <button\n class=\"btn btn-link\"\n title=\"{{\n settings.isCopyDisabled ? copyDashboardWarningMessage : ('Copy dashboard' | translate)\n }}\"\n type=\"button\"\n data-cy=\"widgets-dashboard--copy-dashboard\"\n (click)=\"onCopyDashboard.emit()\"\n [disabled]=\"settings.isCopyDisabled\"\n >\n <i c8yIcon=\"clone\"></i>\n <span\n class=\"m-l-4\"\n translate\n >\n Copy dashboard\n </span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'more'\"\n [priority]=\"-3000\"\n *ngIf=\"settings.canDelete && onDeleteDashboard.observers.length\"\n>\n <button\n title=\"{{ 'Delete dashboard' | translate }}\"\n type=\"button\"\n (click)=\"onDeleteDashboard.emit()\"\n [disabled]=\"settings.isFrozen || settings.isDisabled\"\n >\n <i c8yIcon=\"delete\"></i>\n <span\n class=\"m-l-4\"\n translate\n >\n Delete dashboard\n </span>\n </button>\n</c8y-action-bar-item>\n\n<ng-template #loadingIndicator>\n <c8y-loading\n class=\"col-xs-12 text-center\"\n *ngIf=\"isLoadingWidgets$ | async\"\n ></c8y-loading>\n</ng-template>\n\n<ng-container *ngIf=\"!(isLoadingWidgets$ | async); else loadingIndicator\">\n <ng-container *ngIf=\"resolvedWidgets$ | async as widgetsToDisplay\">\n <!-- empty state -->\n <c8y-ui-empty-state\n [icon]=\"'c8y-device'\"\n [title]=\"'No widgets to display.' | translate\"\n *ngIf=\"widgetsToDisplay?.length === 0\"\n >\n <div *ngIf=\"!settings.isFrozen && onAddWidget.observers.length\">\n <p translate>Add widgets to this dashboard.</p>\n <div>\n <button\n class=\"btn btn-primary m-t-16\"\n title=\"{{ 'Add widget' | translate }}\"\n type=\"button\"\n [disabled]=\"settings.isFrozen || settings.isDisabled\"\n (click)=\"onAddWidget.emit()\"\n data-cy=\"widgets-dashboard--Add-widget\"\n translate\n >\n Add widget\n </button>\n </div>\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a c8y-guide-href=\"/docs/cockpit/working-with-dashboards\">user documentation</a>\n .\n </small>\n </p>\n </div>\n </c8y-ui-empty-state>\n\n <c8y-dashboard\n [columns]=\"settings.columns\"\n (dashboardChange)=\"onChangeDashboard.emit($event)\"\n #dashboard\n >\n <c8y-dashboard-child\n [class]=\"widget.classes\"\n *ngFor=\"let widget of widgetsToDisplay\"\n [x]=\"widget._x\"\n [y]=\"widget._y\"\n [width]=\"widget._width || settings.defaultWidth\"\n [height]=\"widget._height || settings.defaultHeight\"\n [margin]=\"settings.widgetMargin\"\n [isFrozen]=\"settings.isFrozen || settings.isDisabled\"\n [data]=\"widget\"\n [useIntersection]=\"true\"\n (changeStart)=\"onChangeStart.emit({ widget: widget, source: child, dashboard: dashboard })\"\n (changeEnd)=\"onChangeEnd.emit({ widget: widget, source: child, dashboard: dashboard })\"\n #child\n >\n <c8y-dashboard-child-title>\n <span\n data-cy=\"c8y-dashboard-list--device-widget\"\n *ngIf=\"settings.translateWidgetTitle\"\n >\n {{ widget.title | translate }}\n </span>\n <span *ngIf=\"!settings.translateWidgetTitle\">\n {{ widget.title }}\n </span>\n </c8y-dashboard-child-title>\n <c8y-dashboard-child-action *ngIf=\"onEditWidget.observers.length\">\n <button\n title=\"{{ 'Edit widget' | translate }}\"\n type=\"button\"\n data-cy=\"widgets-dashboard--edit-dashboard\"\n (click)=\"onEditWidget.emit({ widget: widget, source: child, dashboard: dashboard })\"\n >\n <i c8yIcon=\"pencil\"></i>\n <span\n class=\"m-l-4\"\n translate\n >\n Edit\n </span>\n </button>\n </c8y-dashboard-child-action>\n <c8y-dashboard-child-action *ngIf=\"onDeleteWidget.observers.length\">\n <button\n title=\"{{ 'Remove widget' | translate }}\"\n type=\"button\"\n data-cy=\"widgets-dashboard--remove-widget\"\n (click)=\"onDeleteWidget.emit({ widget: widget, source: child, dashboard: dashboard })\"\n >\n <i c8yIcon=\"delete\"></i>\n <span\n class=\"m-l-4\"\n translate\n >\n Remove\n </span>\n </button>\n </c8y-dashboard-child-action>\n\n <c8y-widget-time-context\n *ngIf=\"\n (widget.config?.displaySettings?.globalTimeContext ||\n widget.config?.displaySettings?.globalRealtimeContext) &&\n widget.config.widgetInstanceGlobalTimeContext\n \"\n (dateContextChange)=\"updateWidgetConfig($event, widget)\"\n [canDecouple]=\"widget.config.canDecoupleGlobalTimeContext\"\n [displaySettings]=\"widget.config.displaySettings\"\n ></c8y-widget-time-context>\n\n <c8y-dynamic-component\n [componentId]=\"widget.componentId || widget.name\"\n [config]=\"\n widget.templateUrl || widget.widgetComponent\n ? { child: widget, dashboard: contextDashboard, context: context }\n : widget.config\n \"\n *ngIf=\"child.intersected\"\n (updateWidgetClasses)=\"updateWidgetClasses(widget, $event)\"\n ></c8y-dynamic-component>\n </c8y-dashboard-child>\n </c8y-dashboard>\n </ng-container>\n</ng-container>\n" }]
153
+ }, providers: [WidgetsDashboardEventService], template: "<c8y-title *ngIf=\"!!settings.title\">\n {{ settings.title | translate }}\n</c8y-title>\n\n<c8y-breadcrumb *ngIf=\"!!breadcrumb\">\n <c8y-breadcrumb-item\n [icon]=\"breadcrumb.icon\"\n [label]=\"breadcrumb.label\"\n [path]=\"breadcrumb.path\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n *ngIf=\"onAddWidget.observers.length\"\n>\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add widget' | translate }}\"\n type=\"button\"\n [disabled]=\"settings.isFrozen || settings.isDisabled\"\n (click)=\"onAddWidget.emit()\"\n data-cy=\"widget-dashboard--Add-widget\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add widget' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n *ngIf=\"onEditDashboard.observers.length\"\n>\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Edit' | translate }}\"\n type=\"button\"\n [disabled]=\"settings.isFrozen || settings.isDisabled\"\n (click)=\"onEditDashboard.emit()\"\n data-cy=\"widgets-dashboard--edit-widget\"\n >\n <i c8yIcon=\"pencil\"></i>\n {{ 'Edit' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n *ngIf=\"settings.allowFullscreen\"\n>\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Full screen' | translate }}\"\n type=\"button\"\n (click)=\"toggleFullscreen()\"\n data-cy=\"widgets-dashboard--Full-screen\"\n >\n <i [c8yIcon]=\"fullScreen() ? 'compress' : 'expand'\"></i>\n {{ 'Full screen' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n itemClass=\"navbar-form\"\n *ngIf=\"onFreeze.observers.length\"\n>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Lock/unlock this dashboard' | translate }}\"\n type=\"button\"\n [ngClass]=\"{ active: settings.isFrozen }\"\n (click)=\"onFreeze.emit(settings)\"\n [disabled]=\"settings.isDisabled\"\n uib-btn-checkbox\n data-cy=\"widgets-dashboard--button-lock-toggle\"\n >\n <i [c8yIcon]=\"settings.isFrozen ? 'lock' : 'unlock'\"></i>\n </button>\n</c8y-action-bar-item>\n<c8y-action-bar-item\n [placement]=\"'more'\"\n [priority]=\"-2000\"\n *ngIf=\"settings.canCopy\"\n>\n <button\n class=\"btn btn-link\"\n title=\"{{\n settings.isCopyDisabled ? copyDashboardWarningMessage : ('Copy dashboard' | translate)\n }}\"\n type=\"button\"\n data-cy=\"widgets-dashboard--copy-dashboard\"\n (click)=\"onCopyDashboard.emit()\"\n [disabled]=\"settings.isCopyDisabled\"\n >\n <i c8yIcon=\"clone\"></i>\n <span\n class=\"m-l-4\"\n translate\n >\n Copy dashboard\n </span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'more'\"\n [priority]=\"-3000\"\n *ngIf=\"settings.canDelete && onDeleteDashboard.observers.length\"\n>\n <button\n title=\"{{ 'Delete dashboard' | translate }}\"\n type=\"button\"\n (click)=\"onDeleteDashboard.emit()\"\n [disabled]=\"settings.isFrozen || settings.isDisabled\"\n >\n <i c8yIcon=\"delete\"></i>\n <span\n class=\"m-l-4\"\n translate\n >\n Delete dashboard\n </span>\n </button>\n</c8y-action-bar-item>\n\n<ng-template #loadingIndicator>\n <c8y-loading\n class=\"col-xs-12 text-center\"\n *ngIf=\"isLoadingWidgets$ | async\"\n ></c8y-loading>\n</ng-template>\n\n<ng-container *ngIf=\"!(isLoadingWidgets$ | async); else loadingIndicator\">\n <ng-container *ngIf=\"resolvedWidgets$ | async as widgetsToDisplay\">\n <!-- empty state -->\n <c8y-ui-empty-state\n [icon]=\"'c8y-device'\"\n [title]=\"'No widgets to display.' | translate\"\n *ngIf=\"widgetsToDisplay?.length === 0\"\n >\n <div *ngIf=\"!settings.isFrozen && onAddWidget.observers.length\">\n <p translate>Add widgets to this dashboard.</p>\n <div>\n <button\n class=\"btn btn-primary m-t-16\"\n title=\"{{ 'Add widget' | translate }}\"\n type=\"button\"\n [disabled]=\"settings.isFrozen || settings.isDisabled\"\n (click)=\"onAddWidget.emit()\"\n data-cy=\"widgets-dashboard--Add-widget\"\n translate\n >\n Add widget\n </button>\n </div>\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a c8y-guide-href=\"/docs/cockpit/working-with-dashboards\">user documentation</a>\n .\n </small>\n </p>\n </div>\n </c8y-ui-empty-state>\n\n <c8y-dashboard\n [columns]=\"settings.columns\"\n (dashboardChange)=\"onChangeDashboard.emit($event)\"\n #dashboard\n >\n <c8y-dashboard-child\n [class]=\"widget.classes\"\n *ngFor=\"let widget of widgetsToDisplay\"\n [x]=\"widget._x\"\n [y]=\"widget._y\"\n [width]=\"widget._width || settings.defaultWidth\"\n [height]=\"widget._height || settings.defaultHeight\"\n [margin]=\"settings.widgetMargin\"\n [isFrozen]=\"settings.isFrozen || settings.isDisabled\"\n [data]=\"widget\"\n [useIntersection]=\"true\"\n (changeStart)=\"onChangeStart.emit({ widget: widget, source: child, dashboard: dashboard })\"\n (changeEnd)=\"onChangeEnd.emit({ widget: widget, source: child, dashboard: dashboard })\"\n #child\n >\n <c8y-dashboard-child-title>\n <span\n data-cy=\"c8y-dashboard-list--device-widget\"\n *ngIf=\"settings.translateWidgetTitle\"\n >\n {{ widget.title | translate }}\n </span>\n <span *ngIf=\"!settings.translateWidgetTitle\">\n {{ widget.title }}\n </span>\n </c8y-dashboard-child-title>\n <c8y-dashboard-child-action *ngIf=\"onEditWidget.observers.length\">\n <button\n title=\"{{ 'Edit widget' | translate }}\"\n type=\"button\"\n data-cy=\"c8y-widgets-dashboard--edit-dashboard\"\n (click)=\"onEditWidget.emit({ widget: widget, source: child, dashboard: dashboard })\"\n >\n <i c8yIcon=\"pencil\"></i>\n <span\n class=\"m-l-4\"\n translate\n >\n Edit\n </span>\n </button>\n </c8y-dashboard-child-action>\n <c8y-dashboard-child-action *ngIf=\"onDeleteWidget.observers.length\">\n <button\n title=\"{{ 'Remove widget' | translate }}\"\n type=\"button\"\n data-cy=\"c8y-widgets-dashboard--remove-widget\"\n (click)=\"onDeleteWidget.emit({ widget: widget, source: child, dashboard: dashboard })\"\n >\n <i c8yIcon=\"delete\"></i>\n <span\n class=\"m-l-4\"\n translate\n >\n Remove\n </span>\n </button>\n </c8y-dashboard-child-action>\n\n <c8y-widget-time-context\n *ngIf=\"\n (widget.config?.displaySettings?.globalTimeContext ||\n widget.config?.displaySettings?.globalRealtimeContext) &&\n widget.config.widgetInstanceGlobalTimeContext\n \"\n (dateContextChange)=\"updateWidgetConfig($event, widget)\"\n [canDecouple]=\"widget.config.canDecoupleGlobalTimeContext\"\n [displaySettings]=\"widget.config.displaySettings\"\n ></c8y-widget-time-context>\n\n <c8y-dynamic-component\n [componentId]=\"widget.componentId || widget.name\"\n [config]=\"\n widget.templateUrl || widget.widgetComponent\n ? { child: widget, dashboard: contextDashboard, context: context }\n : widget.config\n \"\n *ngIf=\"child.intersected\"\n (updateWidgetClasses)=\"updateWidgetClasses(widget, $event)\"\n ></c8y-dynamic-component>\n </c8y-dashboard-child>\n </c8y-dashboard>\n </ng-container>\n</ng-container>\n" }]
154
154
  }], ctorParameters: function () { return [{ type: i1.DynamicComponentService }, { type: i2.TranslateService }, { type: i3.ActivatedRoute }]; }, propDecorators: { widgets: [{
155
155
  type: Input
156
156
  }], context: [{
@@ -183,4 +183,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
183
183
  }], onChangeEnd: [{
184
184
  type: Output
185
185
  }] } });
186
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0cy1kYXNoYm9hcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9kYXNoYm9hcmQvd2lkZ2V0cy1kYXNoYm9hcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vY29yZS9kYXNoYm9hcmQvd2lkZ2V0cy1kYXNoYm9hcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJakQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEMsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDakYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBYXZELE1BQU0sT0FBTyx5QkFBeUI7SUFDcEMsSUFDSSxPQUFPLENBQUMsS0FBZTtRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUM3QixDQUFDO0lBUUQsSUFDSSxTQUFTLENBQUMsUUFBb0M7UUFDaEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLEdBQUcs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LENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUM5RCxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQy9CLENBQUM7YUFDSDtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQzs7c0hBM0tVLHlCQUF5QjswR0FBekIseUJBQXlCLHdvQkFGekIsQ0FBQyw0QkFBNEIsQ0FBQywwQkNyQjNDLDg4UEFrUUE7MkZEM09hLHlCQUF5QjtrQkFYckMsU0FBUzsrQkFDRSx1QkFBdUIsUUFFM0I7d0JBQ0osS0FBSyxFQUFFOztLQUVOO3dCQUNELEtBQUssRUFBRSw4QkFBOEI7cUJBQ3RDLGFBQ1UsQ0FBQyw0QkFBNEIsQ0FBQzswS0FJckMsT0FBTztzQkFEVixLQUFLO2dCQVVOLE9BQU87c0JBRE4sS0FBSztnQkFJTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFJRixTQUFTO3NCQURaLEtBQUs7dUJBQUMsVUFBVTtnQkFPakIsVUFBVTtzQkFEVCxLQUFLO2dCQWtCTixXQUFXO3NCQURWLE1BQU07Z0JBSVAsWUFBWTtzQkFEWCxNQUFNO2dCQUlQLGNBQWM7c0JBRGIsTUFBTTtnQkFJUCxpQkFBaUI7c0JBRGhCLE1BQU07Z0JBSVAsZUFBZTtzQkFEZCxNQUFNO2dCQUlQLGVBQWU7c0JBRGQsTUFBTTtnQkFJUCxpQkFBaUI7c0JBRGhCLE1BQU07Z0JBSVAsUUFBUTtzQkFEUCxNQUFNO2dCQUlQLGFBQWE7c0JBRFosTUFBTTtnQkFJUCxXQUFXO3NCQURWLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQnJlYWRjcnVtYkl0ZW0gfSBmcm9tICcuLi9icmVhZGNydW1iL2JyZWFkY3J1bWIubW9kZWwnO1xuaW1wb3J0IHsgRGFzaGJvYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9kYXNoYm9hcmQuY29tcG9uZW50JztcbmltcG9ydCB7IERhc2hib2FyZENoYW5nZSwgRGFzaGJvYXJkU2V0dGluZ3MsIFdpZGdldCwgV2lkZ2V0Q2hhbmdlIH0gZnJvbSAnLi9kYXNoYm9hcmQubW9kZWwnO1xuaW1wb3J0IHsgRHluYW1pY0NvbXBvbmVudFNlcnZpY2UgfSBmcm9tICcuLi9keW5hbWljLWNvbXBvbmVudC9keW5hbWljLWNvbXBvbmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbWVyZ2UsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IHNldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBXaWRnZXRzRGFzaGJvYXJkRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi93aWRnZXRzLWRhc2hib2FyZC1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LXdpZGdldHMtZGFzaGJvYXJkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dpZGdldHMtZGFzaGJvYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgaG9zdDoge1xuICAgIHN0eWxlOiBgXG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICBgLFxuICAgIGNsYXNzOiAnZGFzaGJvYXJkIGM4eS1ncmlkLWRhc2hib2FyZCdcbiAgfSxcbiAgcHJvdmlkZXJzOiBbV2lkZ2V0c0Rhc2hib2FyZEV2ZW50U2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgV2lkZ2V0c0Rhc2hib2FyZENvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIHNldCB3aWRnZXRzKHZhbHVlOiBXaWRnZXRbXSkge1xuICAgIHRoaXMuX3dpZGdldHMubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBnZXQgd2lkZ2V0cygpOiBXaWRnZXRbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3dpZGdldHMudmFsdWU7XG4gIH1cblxuICBASW5wdXQoKVxuICBjb250ZXh0OiBhbnk7XG5cbiAgQElucHV0KClcbiAgY29udGV4dERhc2hib2FyZDogYW55ID0geyB1cGRhdGVUYXJnZXQ6IHRydWUgfTtcblxuICBASW5wdXQoJ3NldHRpbmdzJylcbiAgc2V0IF9zZXR0aW5ncyhzZXR0aW5nczogUGFydGlhbDxEYXNoYm9hcmRTZXR0aW5ncz4pIHtcbiAgICB0aGlzLnNldHRpbmdzID0geyAuLi50aGlzLnNldHRpbmdzLCAuLi5zZXR0aW5ncyB9O1xuICAgIHRoaXMuaXNMb2FkaW5nJC5uZXh0KCEhdGhpcy5zZXR0aW5ncy5pc0xvYWRpbmcpO1xuICB9XG5cbiAgQElucHV0KClcbiAgYnJlYWRjcnVtYjogQnJlYWRjcnVtYkl0ZW07XG5cbiAgc2V0dGluZ3M6IERhc2hib2FyZFNldHRpbmdzID0ge1xuICAgIGlzRnJvemVuOiBmYWxzZSxcbiAgICBpc0Rpc2FibGVkOiBmYWxzZSxcbiAgICB3aWRnZXRNYXJnaW46IDEyLFxuICAgIHRyYW5zbGF0ZVdpZGdldFRpdGxlOiBmYWxzZSxcbiAgICBkZWZhdWx0SGVpZ2h0OiA0LFxuICAgIGRlZmF1bHRXaWR0aDogNCxcbiAgICBhbGxvd0Z1bGxzY3JlZW46IGZhbHNlLFxuICAgIGNhbkNvcHk6IHRydWUsXG4gICAgY2FuRGVsZXRlOiB0cnVlLFxuICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgY29sdW1uczogMTJcbiAgfTtcblxuICBAT3V0cHV0KClcbiAgb25BZGRXaWRnZXQ6IEV2ZW50RW1pdHRlcjxEYXNoYm9hcmRDb21wb25lbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICBvbkVkaXRXaWRnZXQ6IEV2ZW50RW1pdHRlcjxXaWRnZXRDaGFuZ2U+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICBvbkRlbGV0ZVdpZGdldDogRXZlbnRFbWl0dGVyPFdpZGdldENoYW5nZT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uQ2hhbmdlRGFzaGJvYXJkOiBFdmVudEVtaXR0ZXI8RGFzaGJvYXJkQ2hhbmdlPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgb25FZGl0RGFzaGJvYXJkOiBFdmVudEVtaXR0ZXI8RGFzaGJvYXJkQ29tcG9uZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgb25Db3B5RGFzaGJvYXJkOiBFdmVudEVtaXR0ZXI8RGFzaGJvYXJkQ29tcG9uZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgb25EZWxldGVEYXNoYm9hcmQ6IEV2ZW50RW1pdHRlcjxEYXNoYm9hcmRDb21wb25lbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICBvbkZyZWV6ZTogRXZlbnRFbWl0dGVyPERhc2hib2FyZFNldHRpbmdzPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgb25DaGFuZ2VTdGFydDogRXZlbnRFbWl0dGVyPFdpZGdldENoYW5nZT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uQ2hhbmdlRW5kOiBFdmVudEVtaXR0ZXI8V2lkZ2V0Q2hhbmdlPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICByZXNvbHZlZFdpZGdldHMkOiBPYnNlcnZhYmxlPFdpZGdldFtdPjtcblxuICBpc0xvYWRpbmdXaWRnZXRzJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICBjb3B5RGFzaGJvYXJkV2FybmluZ01lc3NhZ2U6IHN0cmluZztcblxuICBwcml2YXRlIF93aWRnZXRzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxXaWRnZXRbXT4oW10pO1xuICBwcml2YXRlIGlzTG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KCEhdGhpcy5fc2V0dGluZ3M/LmlzTG9hZGluZyk7XG4gIHByaXZhdGUgaXNFeGVjdXRpbmdSZXNvbHZlcnMkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZHluYW1pYzogRHluYW1pY0NvbXBvbmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlXG4gICkge1xuICAgIGNvbnN0IHZpZXdDb250ZXh0ID0gdGhpcy5yb3V0ZS5wYXJlbnQuc25hcHNob3QuZGF0YT8uY29udGV4dDtcbiAgICBpZiAodmlld0NvbnRleHQpIHtcbiAgICAgIGNvbnN0IGN0eCA9IHZpZXdDb250ZXh0LnNwbGl0KCcvJykuc2hpZnQoKTtcbiAgICAgIHRoaXMuY29weURhc2hib2FyZFdhcm5pbmdNZXNzYWdlID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICdPbmx5IGRhc2hib2FyZHMgd2l0aCB3aWRnZXRzIHJlZmVyZW5jaW5nIHRoZSBjdXJyZW50IHt7IGN0eCB9fSBjYW4gYmUgY29waWVkLicsXG4gICAgICAgIHsgY3R4IH1cbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5yZXNvbHZlZFdpZGdldHMkID0gdGhpcy5fd2lkZ2V0cy5waXBlKFxuICAgICAgc3dpdGNoTWFwKHdpZGdldHMgPT4gdGhpcy5leGVjdXRlUmVzb2x2ZXJzT2ZXaWRnZXRzKHdpZGdldHMpKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcbiAgICB0aGlzLmlzRXhlY3V0aW5nUmVzb2x2ZXJzJCA9IG1lcmdlKFxuICAgICAgdGhpcy5fd2lkZ2V0cy5waXBlKG1hcCgoKSA9PiB0cnVlKSksXG4gICAgICB0aGlzLnJlc29sdmVkV2lkZ2V0cyQucGlwZShtYXAoKCkgPT4gZmFsc2UpKVxuICAgICk7XG4gICAgdGhpcy5pc0xvYWRpbmdXaWRnZXRzJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuaXNMb2FkaW5nJCwgdGhpcy5pc0V4ZWN1dGluZ1Jlc29sdmVycyRdKS5waXBlKFxuICAgICAgbWFwKGxvYWRpbmdzID0+IGxvYWRpbmdzLnNvbWUobG9hZGluZyA9PiBsb2FkaW5nKSksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG4gIH1cblxuICB0b2dnbGVGdWxsc2NyZWVuKCkge1xuICAgIGNvbnN0IGVsZW0gPSBkb2N1bWVudC5ib2R5IGFzIGFueTtcbiAgICBjb25zdCBkb2MgPSBkb2N1bWVudCBhcyBhbnk7XG4gICAgaWYgKCF0aGlzLmZ1bGxTY3JlZW4oKSkge1xuICAgICAgaWYgKGVsZW0ucmVxdWVzdEZ1bGxzY3JlZW4pIHtcbiAgICAgICAgZWxlbS5yZXF1ZXN0RnVsbHNjcmVlbigpO1xuICAgICAgfSBlbHNlIGlmIChlbGVtLm1zUmVxdWVzdEZ1bGxzY3JlZW4pIHtcbiAgICAgICAgZWxlbS5tc1JlcXVlc3RGdWxsc2NyZWVuKCk7XG4gICAgICB9IGVsc2UgaWYgKGVsZW0ubW96UmVxdWVzdEZ1bGxTY3JlZW4pIHtcbiAgICAgICAgZWxlbS5tb3pSZXF1ZXN0RnVsbFNjcmVlbigpO1xuICAgICAgfSBlbHNlIGlmIChlbGVtLndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKSB7XG4gICAgICAgIGVsZW0ud2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKEVsZW1lbnQgYXMgYW55KS5BTExPV19LRVlCT0FSRF9JTlBVVCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChkb2MuZXhpdEZ1bGxzY3JlZW4pIHtcbiAgICAgIGRvYy5leGl0RnVsbHNjcmVlbigpO1xuICAgIH0gZWxzZSBpZiAoZG9jLm1zRXhpdEZ1bGxzY3JlZW4pIHtcbiAgICAgIGRvYy5tc0V4aXRGdWxsc2NyZWVuKCk7XG4gICAgfSBlbHNlIGlmIChkb2MubW96Q2FuY2VsRnVsbFNjcmVlbikge1xuICAgICAgZG9jLm1vekNhbmNlbEZ1bGxTY3JlZW4oKTtcbiAgICB9IGVsc2UgaWYgKGRvYy53ZWJraXRFeGl0RnVsbHNjcmVlbikge1xuICAgICAgZG9jLndlYmtpdEV4aXRGdWxsc2NyZWVuKCk7XG4gICAgfVxuICB9XG5cbiAgZnVsbFNjcmVlbigpIHtcbiAgICBjb25zdCBkb2M6IGFueSA9IGRvY3VtZW50O1xuICAgIHJldHVybiAhIShcbiAgICAgIGRvYy5mdWxsc2NyZWVuRWxlbWVudCB8fFxuICAgICAgZG9jLm1vekZ1bGxTY3JlZW5FbGVtZW50IHx8XG4gICAgICBkb2Mud2Via2l0RnVsbHNjcmVlbkVsZW1lbnQgfHxcbiAgICAgIGRvYy5tc0Z1bGxzY3JlZW5FbGVtZW50XG4gICAgKTtcbiAgfVxuXG4gIHVwZGF0ZVdpZGdldENsYXNzZXMod2lkZ2V0OiBXaWRnZXQsIGNsYXNzZXM6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9KSB7XG4gICAgd2lkZ2V0LmNsYXNzZXMgPSB7IC4uLndpZGdldC5jbGFzc2VzLCAuLi5jbGFzc2VzIH07XG4gIH1cblxuICB1cGRhdGVXaWRnZXRDb25maWcoZGF0YTogYW55LCB3aWRnZXQ6IFdpZGdldCkge1xuICAgIHdpZGdldC5jb25maWcgPSB7IC4uLndpZGdldC5jb25maWcsIC4uLmRhdGEgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZXhlY3V0ZVJlc29sdmVyc09mV2lkZ2V0cyh3aWRnZXRzOiBXaWRnZXRbXSk6IFByb21pc2U8V2lkZ2V0W10+IHtcbiAgICBpZiAoIXdpZGdldHMpIHtcbiAgICAgIHJldHVybiB3aWRnZXRzO1xuICAgIH1cblxuICAgIGNvbnN0IHR1cGxlID0gd2lkZ2V0cy5tYXAod2lkZ2V0ID0+ICh7XG4gICAgICBjb21wb25lbnRJZDogd2lkZ2V0LmNvbXBvbmVudElkIHx8IHdpZGdldC5uYW1lLFxuICAgICAgY29uZmlnOiB3aWRnZXQuY29uZmlnXG4gICAgfSkpO1xuXG4gICAgY29uc3QgcmVzb2x2ZWRSZXN1bHRzID0gYXdhaXQgdGhpcy5keW5hbWljLmV4ZWN1dGVSZXNvbHZlcnModHVwbGUpO1xuICAgIHdpZGdldHMuZm9yRWFjaCgod2lkZ2V0LCBpbmRleCkgPT4ge1xuICAgICAgaWYgKHJlc29sdmVkUmVzdWx0c1tpbmRleF0pIHtcbiAgICAgICAgaWYgKCF3aWRnZXQuY29uZmlnKSB7XG4gICAgICAgICAgd2lkZ2V0LmNvbmZpZyA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHJlc29sdmVkUmVzdWx0c1tpbmRleF0pLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT5cbiAgICAgICAgICBzZXQod2lkZ2V0LmNvbmZpZywga2V5LCB2YWx1ZSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gd2lkZ2V0cztcbiAgfVxufVxuIiwiPGM4eS10aXRsZSAqbmdJZj1cIiEhc2V0dGluZ3MudGl0bGVcIj5cbiAge3sgc2V0dGluZ3MudGl0bGUgfCB0cmFuc2xhdGUgfX1cbjwvYzh5LXRpdGxlPlxuXG48Yzh5LWJyZWFkY3J1bWIgKm5nSWY9XCIhIWJyZWFkY3J1bWJcIj5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW1cbiAgICBbaWNvbl09XCJicmVhZGNydW1iLmljb25cIlxuICAgIFtsYWJlbF09XCJicmVhZGNydW1iLmxhYmVsXCJcbiAgICBbcGF0aF09XCJicmVhZGNydW1iLnBhdGhcIlxuICA+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuPC9jOHktYnJlYWRjcnVtYj5cblxuPGM4eS1hY3Rpb24tYmFyLWl0ZW1cbiAgW3BsYWNlbWVudF09XCIncmlnaHQnXCJcbiAgKm5nSWY9XCJvbkFkZFdpZGdldC5vYnNlcnZlcnMubGVuZ3RoXCJcbj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCJcbiAgICB0aXRsZT1cInt7ICdBZGQgd2lkZ2V0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgW2Rpc2FibGVkXT1cInNldHRpbmdzLmlzRnJvemVuIHx8IHNldHRpbmdzLmlzRGlzYWJsZWRcIlxuICAgIChjbGljayk9XCJvbkFkZFdpZGdldC5lbWl0KClcIlxuICAgIGRhdGEtY3k9XCJ3aWRnZXQtZGFzaGJvYXJkLS1BZGQtd2lkZ2V0XCJcbiAgPlxuICAgIDxpIGM4eUljb249XCJwbHVzLWNpcmNsZVwiPjwvaT5cbiAgICB7eyAnQWRkIHdpZGdldCcgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtXG4gIFtwbGFjZW1lbnRdPVwiJ3JpZ2h0J1wiXG4gICpuZ0lmPVwib25FZGl0RGFzaGJvYXJkLm9ic2VydmVycy5sZW5ndGhcIlxuPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4gYnRuLWxpbmtcIlxuICAgIHRpdGxlPVwie3sgJ0VkaXQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBbZGlzYWJsZWRdPVwic2V0dGluZ3MuaXNGcm96ZW4gfHwgc2V0dGluZ3MuaXNEaXNhYmxlZFwiXG4gICAgKGNsaWNrKT1cIm9uRWRpdERhc2hib2FyZC5lbWl0KClcIlxuICAgIGRhdGEtY3k9XCJ3aWRnZXRzLWRhc2hib2FyZC0tZWRpdC13aWRnZXRcIlxuICA+XG4gICAgPGkgYzh5SWNvbj1cInBlbmNpbFwiPjwvaT5cbiAgICB7eyAnRWRpdCcgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtXG4gIFtwbGFjZW1lbnRdPVwiJ3JpZ2h0J1wiXG4gICpuZ0lmPVwic2V0dGluZ3MuYWxsb3dGdWxsc2NyZWVuXCJcbj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCJcbiAgICB0aXRsZT1cInt7ICdGdWxsIHNjcmVlbicgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIChjbGljayk9XCJ0b2dnbGVGdWxsc2NyZWVuKClcIlxuICAgIGRhdGEtY3k9XCJ3aWRnZXRzLWRhc2hib2FyZC0tRnVsbC1zY3JlZW5cIlxuICA+XG4gICAgPGkgW2M4eUljb25dPVwiZnVsbFNjcmVlbigpID8gJ2NvbXByZXNzJyA6ICdleHBhbmQnXCI+PC9pPlxuICAgIHt7ICdGdWxsIHNjcmVlbicgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtXG4gIFtwbGFjZW1lbnRdPVwiJ3JpZ2h0J1wiXG4gIGl0ZW1DbGFzcz1cIm5hdmJhci1mb3JtXCJcbiAgKm5nSWY9XCJvbkZyZWV6ZS5vYnNlcnZlcnMubGVuZ3RoXCJcbj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICB0aXRsZT1cInt7ICdMb2NrL3VubG9jayB0aGlzIGRhc2hib2FyZCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiBzZXR0aW5ncy5pc0Zyb3plbiB9XCJcbiAgICAoY2xpY2spPVwib25GcmVlemUuZW1pdChzZXR0aW5ncylcIlxuICAgIFtkaXNhYmxlZF09XCJzZXR0aW5ncy5pc0Rpc2FibGVkXCJcbiAgICB1aWItYnRuLWNoZWNrYm94XG4gICAgZGF0YS1jeT1cIndpZGdldHMtZGFzaGJvYXJkLS1idXR0b24tbG9jay10b2dnbGVcIlxuICA+XG4gICAgPGkgW2M4eUljb25dPVwic2V0dGluZ3MuaXNGcm96ZW4gPyAnbG9jaycgOiAndW5sb2NrJ1wiPjwvaT5cbiAgPC9idXR0b24+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG48Yzh5LWFjdGlvbi1iYXItaXRlbVxuICBbcGxhY2VtZW50XT1cIidtb3JlJ1wiXG4gIFtwcmlvcml0eV09XCItMjAwMFwiXG4gICpuZ0lmPVwic2V0dGluZ3MuY2FuQ29weVwiXG4+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tbGlua1wiXG4gICAgdGl0bGU9XCJ7e1xuICAgICAgc2V0dGluZ3MuaXNDb3B5RGlzYWJsZWQgPyBjb3B5RGFzaGJvYXJkV2FybmluZ01lc3NhZ2UgOiAoJ0NvcHkgZGFzaGJvYXJkJyB8IHRyYW5zbGF0ZSlcbiAgICB9fVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgZGF0YS1jeT1cIndpZGdldHMtZGFzaGJvYXJkLS1jb3B5LWRhc2hib2FyZFwiXG4gICAgKGNsaWNrKT1cIm9uQ29weURhc2hib2FyZC5lbWl0KClcIlxuICAgIFtkaXNhYmxlZF09XCJzZXR0aW5ncy5pc0NvcHlEaXNhYmxlZFwiXG4gID5cbiAgICA8aSBjOHlJY29uPVwiY2xvbmVcIj48L2k+XG4gICAgPHNwYW5cbiAgICAgIGNsYXNzPVwibS1sLTRcIlxuICAgICAgdHJhbnNsYXRlXG4gICAgPlxuICAgICAgQ29weSBkYXNoYm9hcmRcbiAgICA8L3NwYW4+XG4gIDwvYnV0dG9uPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48Yzh5LWFjdGlvbi1iYXItaXRlbVxuICBbcGxhY2VtZW50XT1cIidtb3JlJ1wiXG4gIFtwcmlvcml0eV09XCItMzAwMFwiXG4gICpuZ0lmPVwic2V0dGluZ3MuY2FuRGVsZXRlICYmIG9uRGVsZXRlRGFzaGJvYXJkLm9ic2VydmVycy5sZW5ndGhcIlxuPlxuICA8YnV0dG9uXG4gICAgdGl0bGU9XCJ7eyAnRGVsZXRlIGRhc2hib2FyZCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIChjbGljayk9XCJvbkRlbGV0ZURhc2hib2FyZC5lbWl0KClcIlxuICAgIFtkaXNhYmxlZF09XCJzZXR0aW5ncy5pc0Zyb3plbiB8fCBzZXR0aW5ncy5pc0Rpc2FibGVkXCJcbiAgPlxuICAgIDxpIGM4eUljb249XCJkZWxldGVcIj48L2k+XG4gICAgPHNwYW5cbiAgICAgIGNsYXNzPVwibS1sLTRcIlxuICAgICAgdHJhbnNsYXRlXG4gICAgPlxuICAgICAgRGVsZXRlIGRhc2hib2FyZFxuICAgIDwvc3Bhbj5cbiAgPC9idXR0b24+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxuZy10ZW1wbGF0ZSAjbG9hZGluZ0luZGljYXRvcj5cbiAgPGM4eS1sb2FkaW5nXG4gICAgY2xhc3M9XCJjb2wteHMtMTIgdGV4dC1jZW50ZXJcIlxuICAgICpuZ0lmPVwiaXNMb2FkaW5nV2lkZ2V0cyQgfCBhc3luY1wiXG4gID48L2M4eS1sb2FkaW5nPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEoaXNMb2FkaW5nV2lkZ2V0cyQgfCBhc3luYyk7IGVsc2UgbG9hZGluZ0luZGljYXRvclwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVzb2x2ZWRXaWRnZXRzJCB8IGFzeW5jIGFzIHdpZGdldHNUb0Rpc3BsYXlcIj5cbiAgICA8IS0tIGVtcHR5IHN0YXRlIC0tPlxuICAgIDxjOHktdWktZW1wdHktc3RhdGVcbiAgICAgIFtpY29uXT1cIidjOHktZGV2aWNlJ1wiXG4gICAgICBbdGl0bGVdPVwiJ05vIHdpZGdldHMgdG8gZGlzcGxheS4nIHwgdHJhbnNsYXRlXCJcbiAgICAgICpuZ0lmPVwid2lkZ2V0c1RvRGlzcGxheT8ubGVuZ3RoID09PSAwXCJcbiAgICA+XG4gICAgICA8ZGl2ICpuZ0lmPVwiIXNldHRpbmdzLmlzRnJvemVuICYmIG9uQWRkV2lkZ2V0Lm9ic2VydmVycy5sZW5ndGhcIj5cbiAgICAgICAgPHAgdHJhbnNsYXRlPkFkZCB3aWRnZXRzIHRvIHRoaXMgZGFzaGJvYXJkLjwvcD5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBtLXQtMTZcIlxuICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQWRkIHdpZGdldCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwic2V0dGluZ3MuaXNGcm96ZW4gfHwgc2V0dGluZ3MuaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25BZGRXaWRnZXQuZW1pdCgpXCJcbiAgICAgICAgICAgIGRhdGEtY3k9XCJ3aWRnZXRzLWRhc2hib2FyZC0tQWRkLXdpZGdldFwiXG4gICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICA+XG4gICAgICAgICAgICBBZGQgd2lkZ2V0XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8cCBjOHktZ3VpZGUtZG9jcz5cbiAgICAgICAgICA8c21hbGxcbiAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgbmdOb25CaW5kYWJsZVxuICAgICAgICAgID5cbiAgICAgICAgICAgIEZpbmQgb3V0IG1vcmUgaW4gdGhlXG4gICAgICAgICAgICA8YSBjOHktZ3VpZGUtaHJlZj1cIi9kb2NzL2NvY2twaXQvd29ya2luZy13aXRoLWRhc2hib2FyZHNcIj51c2VyIGRvY3VtZW50YXRpb248L2E+XG4gICAgICAgICAgICAuXG4gICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG4gICAgPC9jOHktdWktZW1wdHktc3RhdGU+XG5cbiAgICA8Yzh5LWRhc2hib2FyZFxuICAgICAgW2NvbHVtbnNdPVwic2V0dGluZ3MuY29sdW1uc1wiXG4gICAgICAoZGFzaGJvYXJkQ2hhbmdlKT1cIm9uQ2hhbmdlRGFzaGJvYXJkLmVtaXQoJGV2ZW50KVwiXG4gICAgICAjZGFzaGJvYXJkXG4gICAgPlxuICAgICAgPGM4eS1kYXNoYm9hcmQtY2hpbGRcbiAgICAgICAgW2NsYXNzXT1cIndpZGdldC5jbGFzc2VzXCJcbiAgICAgICAgKm5nRm9yPVwibGV0IHdpZGdldCBvZiB3aWRnZXRzVG9EaXNwbGF5XCJcbiAgICAgICAgW3hdPVwid2lkZ2V0Ll94XCJcbiAgICAgICAgW3ldPVwid2lkZ2V0Ll95XCJcbiAgICAgICAgW3dpZHRoXT1cIndpZGdldC5fd2lkdGggfHwgc2V0dGluZ3MuZGVmYXVsdFdpZHRoXCJcbiAgICAgICAgW2hlaWdodF09XCJ3aWRnZXQuX2hlaWdodCB8fCBzZXR0aW5ncy5kZWZhdWx0SGVpZ2h0XCJcbiAgICAgICAgW21hcmdpbl09XCJzZXR0aW5ncy53aWRnZXRNYXJnaW5cIlxuICAgICAgICBbaXNGcm96ZW5dPVwic2V0dGluZ3MuaXNGcm96ZW4gfHwgc2V0dGluZ3MuaXNEaXNhYmxlZFwiXG4gICAgICAgIFtkYXRhXT1cIndpZGdldFwiXG4gICAgICAgIFt1c2VJbnRlcnNlY3Rpb25dPVwidHJ1ZVwiXG4gICAgICAgIChjaGFuZ2VTdGFydCk9XCJvbkNoYW5nZVN0YXJ0LmVtaXQoeyB3aWRnZXQ6IHdpZGdldCwgc291cmNlOiBjaGlsZCwgZGFzaGJvYXJkOiBkYXNoYm9hcmQgfSlcIlxuICAgICAgICAoY2hhbmdlRW5kKT1cIm9uQ2hhbmdlRW5kLmVtaXQoeyB3aWRnZXQ6IHdpZGdldCwgc291cmNlOiBjaGlsZCwgZGFzaGJvYXJkOiBkYXNoYm9hcmQgfSlcIlxuICAgICAgICAjY2hpbGRcbiAgICAgID5cbiAgICAgICAgPGM4eS1kYXNoYm9hcmQtY2hpbGQtdGl0bGU+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGRhdGEtY3k9XCJjOHktZGFzaGJvYXJkLWxpc3QtLWRldmljZS13aWRnZXRcIlxuICAgICAgICAgICAgKm5nSWY9XCJzZXR0aW5ncy50cmFuc2xhdGVXaWRnZXRUaXRsZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgd2lkZ2V0LnRpdGxlIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXNldHRpbmdzLnRyYW5zbGF0ZVdpZGdldFRpdGxlXCI+XG4gICAgICAgICAgICB7eyB3aWRnZXQudGl0bGUgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvYzh5LWRhc2hib2FyZC1jaGlsZC10aXRsZT5cbiAgICAgICAgPGM4eS1kYXNoYm9hcmQtY2hpbGQtYWN0aW9uICpuZ0lmPVwib25FZGl0V2lkZ2V0Lm9ic2VydmVycy5sZW5ndGhcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0aXRsZT1cInt7ICdFZGl0IHdpZGdldCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBkYXRhLWN5PVwid2lkZ2V0cy1kYXNoYm9hcmQtLWVkaXQtZGFzaGJvYXJkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkVkaXRXaWRnZXQuZW1pdCh7IHdpZGdldDogd2lkZ2V0LCBzb3VyY2U6IGNoaWxkLCBkYXNoYm9hcmQ6IGRhc2hib2FyZCB9KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgYzh5SWNvbj1cInBlbmNpbFwiPjwvaT5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwibS1sLTRcIlxuICAgICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgRWRpdFxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2M4eS1kYXNoYm9hcmQtY2hpbGQtYWN0aW9uPlxuICAgICAgICA8Yzh5LWRhc2hib2FyZC1jaGlsZC1hY3Rpb24gKm5nSWY9XCJvbkRlbGV0ZVdpZGdldC5vYnNlcnZlcnMubGVuZ3RoXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdGl0bGU9XCJ7eyAnUmVtb3ZlIHdpZGdldCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBkYXRhLWN5PVwid2lkZ2V0cy1kYXNoYm9hcmQtLXJlbW92ZS13aWRnZXRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGVsZXRlV2lkZ2V0LmVtaXQoeyB3aWRnZXQ6IHdpZGdldCwgc291cmNlOiBjaGlsZCwgZGFzaGJvYXJkOiBkYXNoYm9hcmQgfSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGM4eUljb249XCJkZWxldGVcIj48L2k+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cIm0tbC00XCJcbiAgICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIFJlbW92ZVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2M4eS1kYXNoYm9hcmQtY2hpbGQtYWN0aW9uPlxuXG4gICAgICAgIDxjOHktd2lkZ2V0LXRpbWUtY29udGV4dFxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAod2lkZ2V0LmNvbmZpZz8uZGlzcGxheVNldHRpbmdzPy5nbG9iYWxUaW1lQ29udGV4dCB8fFxuICAgICAgICAgICAgICB3aWRnZXQuY29uZmlnPy5kaXNwbGF5U2V0dGluZ3M/Lmdsb2JhbFJlYWx0aW1lQ29udGV4dCkgJiZcbiAgICAgICAgICAgIHdpZGdldC5jb25maWcud2lkZ2V0SW5zdGFuY2VHbG9iYWxUaW1lQ29udGV4dFxuICAgICAgICAgIFwiXG4gICAgICAgICAgKGRhdGVDb250ZXh0Q2hhbmdlKT1cInVwZGF0ZVdpZGdldENvbmZpZygkZXZlbnQsIHdpZGdldClcIlxuICAgICAgICAgIFtjYW5EZWNvdXBsZV09XCJ3aWRnZXQuY29uZmlnLmNhbkRlY291cGxlR2xvYmFsVGltZUNvbnRleHRcIlxuICAgICAgICAgIFtkaXNwbGF5U2V0dGluZ3NdPVwid2lkZ2V0LmNvbmZpZy5kaXNwbGF5U2V0dGluZ3NcIlxuICAgICAgICA+PC9jOHktd2lkZ2V0LXRpbWUtY29udGV4dD5cblxuICAgICAgICA8Yzh5LWR5bmFtaWMtY29tcG9uZW50XG4gICAgICAgICAgW2NvbXBvbmVudElkXT1cIndpZGdldC5jb21wb25lbnRJZCB8fCB3aWRnZXQubmFtZVwiXG4gICAgICAgICAgW2NvbmZpZ109XCJcbiAgICAgICAgICAgIHdpZGdldC50ZW1wbGF0ZVVybCB8fCB3aWRnZXQud2lkZ2V0Q29tcG9uZW50XG4gICAgICAgICAgICAgID8geyBjaGlsZDogd2lkZ2V0LCBkYXNoYm9hcmQ6IGNvbnRleHREYXNoYm9hcmQsIGNvbnRleHQ6IGNvbnRleHQgfVxuICAgICAgICAgICAgICA6IHdpZGdldC5jb25maWdcbiAgICAgICAgICBcIlxuICAgICAgICAgICpuZ0lmPVwiY2hpbGQuaW50ZXJzZWN0ZWRcIlxuICAgICAgICAgICh1cGRhdGVXaWRnZXRDbGFzc2VzKT1cInVwZGF0ZVdpZGdldENsYXNzZXMod2lkZ2V0LCAkZXZlbnQpXCJcbiAgICAgICAgPjwvYzh5LWR5bmFtaWMtY29tcG9uZW50PlxuICAgICAgPC9jOHktZGFzaGJvYXJkLWNoaWxkPlxuICAgIDwvYzh5LWRhc2hib2FyZD5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
186
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0cy1kYXNoYm9hcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9kYXNoYm9hcmQvd2lkZ2V0cy1kYXNoYm9hcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vY29yZS9kYXNoYm9hcmQvd2lkZ2V0cy1kYXNoYm9hcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJakQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEMsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDakYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBYXZELE1BQU0sT0FBTyx5QkFBeUI7SUFDcEMsSUFDSSxPQUFPLENBQUMsS0FBZTtRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUM3QixDQUFDO0lBUUQsSUFDSSxTQUFTLENBQUMsUUFBb0M7UUFDaEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLEdBQUcs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LENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUM5RCxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQy9CLENBQUM7YUFDSDtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQzs7c0hBM0tVLHlCQUF5QjswR0FBekIseUJBQXlCLHdvQkFGekIsQ0FBQyw0QkFBNEIsQ0FBQywwQkNyQjNDLHM5UEFrUUE7MkZEM09hLHlCQUF5QjtrQkFYckMsU0FBUzsrQkFDRSx1QkFBdUIsUUFFM0I7d0JBQ0osS0FBSyxFQUFFOztLQUVOO3dCQUNELEtBQUssRUFBRSw4QkFBOEI7cUJBQ3RDLGFBQ1UsQ0FBQyw0QkFBNEIsQ0FBQzswS0FJckMsT0FBTztzQkFEVixLQUFLO2dCQVVOLE9BQU87c0JBRE4sS0FBSztnQkFJTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFJRixTQUFTO3NCQURaLEtBQUs7dUJBQUMsVUFBVTtnQkFPakIsVUFBVTtzQkFEVCxLQUFLO2dCQWtCTixXQUFXO3NCQURWLE1BQU07Z0JBSVAsWUFBWTtzQkFEWCxNQUFNO2dCQUlQLGNBQWM7c0JBRGIsTUFBTTtnQkFJUCxpQkFBaUI7c0JBRGhCLE1BQU07Z0JBSVAsZUFBZTtzQkFEZCxNQUFNO2dCQUlQLGVBQWU7c0JBRGQsTUFBTTtnQkFJUCxpQkFBaUI7c0JBRGhCLE1BQU07Z0JBSVAsUUFBUTtzQkFEUCxNQUFNO2dCQUlQLGFBQWE7c0JBRFosTUFBTTtnQkFJUCxXQUFXO3NCQURWLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQnJlYWRjcnVtYkl0ZW0gfSBmcm9tICcuLi9icmVhZGNydW1iL2JyZWFkY3J1bWIubW9kZWwnO1xuaW1wb3J0IHsgRGFzaGJvYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9kYXNoYm9hcmQuY29tcG9uZW50JztcbmltcG9ydCB7IERhc2hib2FyZENoYW5nZSwgRGFzaGJvYXJkU2V0dGluZ3MsIFdpZGdldCwgV2lkZ2V0Q2hhbmdlIH0gZnJvbSAnLi9kYXNoYm9hcmQubW9kZWwnO1xuaW1wb3J0IHsgRHluYW1pY0NvbXBvbmVudFNlcnZpY2UgfSBmcm9tICcuLi9keW5hbWljLWNvbXBvbmVudC9keW5hbWljLWNvbXBvbmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbWVyZ2UsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IHNldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBXaWRnZXRzRGFzaGJvYXJkRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi93aWRnZXRzLWRhc2hib2FyZC1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LXdpZGdldHMtZGFzaGJvYXJkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dpZGdldHMtZGFzaGJvYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgaG9zdDoge1xuICAgIHN0eWxlOiBgXG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICBgLFxuICAgIGNsYXNzOiAnZGFzaGJvYXJkIGM4eS1ncmlkLWRhc2hib2FyZCdcbiAgfSxcbiAgcHJvdmlkZXJzOiBbV2lkZ2V0c0Rhc2hib2FyZEV2ZW50U2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgV2lkZ2V0c0Rhc2hib2FyZENvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIHNldCB3aWRnZXRzKHZhbHVlOiBXaWRnZXRbXSkge1xuICAgIHRoaXMuX3dpZGdldHMubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBnZXQgd2lkZ2V0cygpOiBXaWRnZXRbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3dpZGdldHMudmFsdWU7XG4gIH1cblxuICBASW5wdXQoKVxuICBjb250ZXh0OiBhbnk7XG5cbiAgQElucHV0KClcbiAgY29udGV4dERhc2hib2FyZDogYW55ID0geyB1cGRhdGVUYXJnZXQ6IHRydWUgfTtcblxuICBASW5wdXQoJ3NldHRpbmdzJylcbiAgc2V0IF9zZXR0aW5ncyhzZXR0aW5nczogUGFydGlhbDxEYXNoYm9hcmRTZXR0aW5ncz4pIHtcbiAgICB0aGlzLnNldHRpbmdzID0geyAuLi50aGlzLnNldHRpbmdzLCAuLi5zZXR0aW5ncyB9O1xuICAgIHRoaXMuaXNMb2FkaW5nJC5uZXh0KCEhdGhpcy5zZXR0aW5ncy5pc0xvYWRpbmcpO1xuICB9XG5cbiAgQElucHV0KClcbiAgYnJlYWRjcnVtYjogQnJlYWRjcnVtYkl0ZW07XG5cbiAgc2V0dGluZ3M6IERhc2hib2FyZFNldHRpbmdzID0ge1xuICAgIGlzRnJvemVuOiBmYWxzZSxcbiAgICBpc0Rpc2FibGVkOiBmYWxzZSxcbiAgICB3aWRnZXRNYXJnaW46IDEyLFxuICAgIHRyYW5zbGF0ZVdpZGdldFRpdGxlOiBmYWxzZSxcbiAgICBkZWZhdWx0SGVpZ2h0OiA0LFxuICAgIGRlZmF1bHRXaWR0aDogNCxcbiAgICBhbGxvd0Z1bGxzY3JlZW46IGZhbHNlLFxuICAgIGNhbkNvcHk6IHRydWUsXG4gICAgY2FuRGVsZXRlOiB0cnVlLFxuICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgY29sdW1uczogMTJcbiAgfTtcblxuICBAT3V0cHV0KClcbiAgb25BZGRXaWRnZXQ6IEV2ZW50RW1pdHRlcjxEYXNoYm9hcmRDb21wb25lbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICBvbkVkaXRXaWRnZXQ6IEV2ZW50RW1pdHRlcjxXaWRnZXRDaGFuZ2U+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICBvbkRlbGV0ZVdpZGdldDogRXZlbnRFbWl0dGVyPFdpZGdldENoYW5nZT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uQ2hhbmdlRGFzaGJvYXJkOiBFdmVudEVtaXR0ZXI8RGFzaGJvYXJkQ2hhbmdlPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgb25FZGl0RGFzaGJvYXJkOiBFdmVudEVtaXR0ZXI8RGFzaGJvYXJkQ29tcG9uZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgb25Db3B5RGFzaGJvYXJkOiBFdmVudEVtaXR0ZXI8RGFzaGJvYXJkQ29tcG9uZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgb25EZWxldGVEYXNoYm9hcmQ6IEV2ZW50RW1pdHRlcjxEYXNoYm9hcmRDb21wb25lbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICBvbkZyZWV6ZTogRXZlbnRFbWl0dGVyPERhc2hib2FyZFNldHRpbmdzPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgb25DaGFuZ2VTdGFydDogRXZlbnRFbWl0dGVyPFdpZGdldENoYW5nZT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uQ2hhbmdlRW5kOiBFdmVudEVtaXR0ZXI8V2lkZ2V0Q2hhbmdlPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICByZXNvbHZlZFdpZGdldHMkOiBPYnNlcnZhYmxlPFdpZGdldFtdPjtcblxuICBpc0xvYWRpbmdXaWRnZXRzJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICBjb3B5RGFzaGJvYXJkV2FybmluZ01lc3NhZ2U6IHN0cmluZztcblxuICBwcml2YXRlIF93aWRnZXRzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxXaWRnZXRbXT4oW10pO1xuICBwcml2YXRlIGlzTG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KCEhdGhpcy5fc2V0dGluZ3M/LmlzTG9hZGluZyk7XG4gIHByaXZhdGUgaXNFeGVjdXRpbmdSZXNvbHZlcnMkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZHluYW1pYzogRHluYW1pY0NvbXBvbmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlXG4gICkge1xuICAgIGNvbnN0IHZpZXdDb250ZXh0ID0gdGhpcy5yb3V0ZS5wYXJlbnQuc25hcHNob3QuZGF0YT8uY29udGV4dDtcbiAgICBpZiAodmlld0NvbnRleHQpIHtcbiAgICAgIGNvbnN0IGN0eCA9IHZpZXdDb250ZXh0LnNwbGl0KCcvJykuc2hpZnQoKTtcbiAgICAgIHRoaXMuY29weURhc2hib2FyZFdhcm5pbmdNZXNzYWdlID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICdPbmx5IGRhc2hib2FyZHMgd2l0aCB3aWRnZXRzIHJlZmVyZW5jaW5nIHRoZSBjdXJyZW50IHt7IGN0eCB9fSBjYW4gYmUgY29waWVkLicsXG4gICAgICAgIHsgY3R4IH1cbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5yZXNvbHZlZFdpZGdldHMkID0gdGhpcy5fd2lkZ2V0cy5waXBlKFxuICAgICAgc3dpdGNoTWFwKHdpZGdldHMgPT4gdGhpcy5leGVjdXRlUmVzb2x2ZXJzT2ZXaWRnZXRzKHdpZGdldHMpKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcbiAgICB0aGlzLmlzRXhlY3V0aW5nUmVzb2x2ZXJzJCA9IG1lcmdlKFxuICAgICAgdGhpcy5fd2lkZ2V0cy5waXBlKG1hcCgoKSA9PiB0cnVlKSksXG4gICAgICB0aGlzLnJlc29sdmVkV2lkZ2V0cyQucGlwZShtYXAoKCkgPT4gZmFsc2UpKVxuICAgICk7XG4gICAgdGhpcy5pc0xvYWRpbmdXaWRnZXRzJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuaXNMb2FkaW5nJCwgdGhpcy5pc0V4ZWN1dGluZ1Jlc29sdmVycyRdKS5waXBlKFxuICAgICAgbWFwKGxvYWRpbmdzID0+IGxvYWRpbmdzLnNvbWUobG9hZGluZyA9PiBsb2FkaW5nKSksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG4gIH1cblxuICB0b2dnbGVGdWxsc2NyZWVuKCkge1xuICAgIGNvbnN0IGVsZW0gPSBkb2N1bWVudC5ib2R5IGFzIGFueTtcbiAgICBjb25zdCBkb2MgPSBkb2N1bWVudCBhcyBhbnk7XG4gICAgaWYgKCF0aGlzLmZ1bGxTY3JlZW4oKSkge1xuICAgICAgaWYgKGVsZW0ucmVxdWVzdEZ1bGxzY3JlZW4pIHtcbiAgICAgICAgZWxlbS5yZXF1ZXN0RnVsbHNjcmVlbigpO1xuICAgICAgfSBlbHNlIGlmIChlbGVtLm1zUmVxdWVzdEZ1bGxzY3JlZW4pIHtcbiAgICAgICAgZWxlbS5tc1JlcXVlc3RGdWxsc2NyZWVuKCk7XG4gICAgICB9IGVsc2UgaWYgKGVsZW0ubW96UmVxdWVzdEZ1bGxTY3JlZW4pIHtcbiAgICAgICAgZWxlbS5tb3pSZXF1ZXN0RnVsbFNjcmVlbigpO1xuICAgICAgfSBlbHNlIGlmIChlbGVtLndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKSB7XG4gICAgICAgIGVsZW0ud2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKEVsZW1lbnQgYXMgYW55KS5BTExPV19LRVlCT0FSRF9JTlBVVCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChkb2MuZXhpdEZ1bGxzY3JlZW4pIHtcbiAgICAgIGRvYy5leGl0RnVsbHNjcmVlbigpO1xuICAgIH0gZWxzZSBpZiAoZG9jLm1zRXhpdEZ1bGxzY3JlZW4pIHtcbiAgICAgIGRvYy5tc0V4aXRGdWxsc2NyZWVuKCk7XG4gICAgfSBlbHNlIGlmIChkb2MubW96Q2FuY2VsRnVsbFNjcmVlbikge1xuICAgICAgZG9jLm1vekNhbmNlbEZ1bGxTY3JlZW4oKTtcbiAgICB9IGVsc2UgaWYgKGRvYy53ZWJraXRFeGl0RnVsbHNjcmVlbikge1xuICAgICAgZG9jLndlYmtpdEV4aXRGdWxsc2NyZWVuKCk7XG4gICAgfVxuICB9XG5cbiAgZnVsbFNjcmVlbigpIHtcbiAgICBjb25zdCBkb2M6IGFueSA9IGRvY3VtZW50O1xuICAgIHJldHVybiAhIShcbiAgICAgIGRvYy5mdWxsc2NyZWVuRWxlbWVudCB8fFxuICAgICAgZG9jLm1vekZ1bGxTY3JlZW5FbGVtZW50IHx8XG4gICAgICBkb2Mud2Via2l0RnVsbHNjcmVlbkVsZW1lbnQgfHxcbiAgICAgIGRvYy5tc0Z1bGxzY3JlZW5FbGVtZW50XG4gICAgKTtcbiAgfVxuXG4gIHVwZGF0ZVdpZGdldENsYXNzZXMod2lkZ2V0OiBXaWRnZXQsIGNsYXNzZXM6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9KSB7XG4gICAgd2lkZ2V0LmNsYXNzZXMgPSB7IC4uLndpZGdldC5jbGFzc2VzLCAuLi5jbGFzc2VzIH07XG4gIH1cblxuICB1cGRhdGVXaWRnZXRDb25maWcoZGF0YTogYW55LCB3aWRnZXQ6IFdpZGdldCkge1xuICAgIHdpZGdldC5jb25maWcgPSB7IC4uLndpZGdldC5jb25maWcsIC4uLmRhdGEgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZXhlY3V0ZVJlc29sdmVyc09mV2lkZ2V0cyh3aWRnZXRzOiBXaWRnZXRbXSk6IFByb21pc2U8V2lkZ2V0W10+IHtcbiAgICBpZiAoIXdpZGdldHMpIHtcbiAgICAgIHJldHVybiB3aWRnZXRzO1xuICAgIH1cblxuICAgIGNvbnN0IHR1cGxlID0gd2lkZ2V0cy5tYXAod2lkZ2V0ID0+ICh7XG4gICAgICBjb21wb25lbnRJZDogd2lkZ2V0LmNvbXBvbmVudElkIHx8IHdpZGdldC5uYW1lLFxuICAgICAgY29uZmlnOiB3aWRnZXQuY29uZmlnXG4gICAgfSkpO1xuXG4gICAgY29uc3QgcmVzb2x2ZWRSZXN1bHRzID0gYXdhaXQgdGhpcy5keW5hbWljLmV4ZWN1dGVSZXNvbHZlcnModHVwbGUpO1xuICAgIHdpZGdldHMuZm9yRWFjaCgod2lkZ2V0LCBpbmRleCkgPT4ge1xuICAgICAgaWYgKHJlc29sdmVkUmVzdWx0c1tpbmRleF0pIHtcbiAgICAgICAgaWYgKCF3aWRnZXQuY29uZmlnKSB7XG4gICAgICAgICAgd2lkZ2V0LmNvbmZpZyA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHJlc29sdmVkUmVzdWx0c1tpbmRleF0pLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT5cbiAgICAgICAgICBzZXQod2lkZ2V0LmNvbmZpZywga2V5LCB2YWx1ZSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gd2lkZ2V0cztcbiAgfVxufVxuIiwiPGM4eS10aXRsZSAqbmdJZj1cIiEhc2V0dGluZ3MudGl0bGVcIj5cbiAge3sgc2V0dGluZ3MudGl0bGUgfCB0cmFuc2xhdGUgfX1cbjwvYzh5LXRpdGxlPlxuXG48Yzh5LWJyZWFkY3J1bWIgKm5nSWY9XCIhIWJyZWFkY3J1bWJcIj5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW1cbiAgICBbaWNvbl09XCJicmVhZGNydW1iLmljb25cIlxuICAgIFtsYWJlbF09XCJicmVhZGNydW1iLmxhYmVsXCJcbiAgICBbcGF0aF09XCJicmVhZGNydW1iLnBhdGhcIlxuICA+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuPC9jOHktYnJlYWRjcnVtYj5cblxuPGM4eS1hY3Rpb24tYmFyLWl0ZW1cbiAgW3BsYWNlbWVudF09XCIncmlnaHQnXCJcbiAgKm5nSWY9XCJvbkFkZFdpZGdldC5vYnNlcnZlcnMubGVuZ3RoXCJcbj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCJcbiAgICB0aXRsZT1cInt7ICdBZGQgd2lkZ2V0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgW2Rpc2FibGVkXT1cInNldHRpbmdzLmlzRnJvemVuIHx8IHNldHRpbmdzLmlzRGlzYWJsZWRcIlxuICAgIChjbGljayk9XCJvbkFkZFdpZGdldC5lbWl0KClcIlxuICAgIGRhdGEtY3k9XCJ3aWRnZXQtZGFzaGJvYXJkLS1BZGQtd2lkZ2V0XCJcbiAgPlxuICAgIDxpIGM4eUljb249XCJwbHVzLWNpcmNsZVwiPjwvaT5cbiAgICB7eyAnQWRkIHdpZGdldCcgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtXG4gIFtwbGFjZW1lbnRdPVwiJ3JpZ2h0J1wiXG4gICpuZ0lmPVwib25FZGl0RGFzaGJvYXJkLm9ic2VydmVycy5sZW5ndGhcIlxuPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4gYnRuLWxpbmtcIlxuICAgIHRpdGxlPVwie3sgJ0VkaXQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBbZGlzYWJsZWRdPVwic2V0dGluZ3MuaXNGcm96ZW4gfHwgc2V0dGluZ3MuaXNEaXNhYmxlZFwiXG4gICAgKGNsaWNrKT1cIm9uRWRpdERhc2hib2FyZC5lbWl0KClcIlxuICAgIGRhdGEtY3k9XCJ3aWRnZXRzLWRhc2hib2FyZC0tZWRpdC13aWRnZXRcIlxuICA+XG4gICAgPGkgYzh5SWNvbj1cInBlbmNpbFwiPjwvaT5cbiAgICB7eyAnRWRpdCcgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtXG4gIFtwbGFjZW1lbnRdPVwiJ3JpZ2h0J1wiXG4gICpuZ0lmPVwic2V0dGluZ3MuYWxsb3dGdWxsc2NyZWVuXCJcbj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCJcbiAgICB0aXRsZT1cInt7ICdGdWxsIHNjcmVlbicgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIChjbGljayk9XCJ0b2dnbGVGdWxsc2NyZWVuKClcIlxuICAgIGRhdGEtY3k9XCJ3aWRnZXRzLWRhc2hib2FyZC0tRnVsbC1zY3JlZW5cIlxuICA+XG4gICAgPGkgW2M4eUljb25dPVwiZnVsbFNjcmVlbigpID8gJ2NvbXByZXNzJyA6ICdleHBhbmQnXCI+PC9pPlxuICAgIHt7ICdGdWxsIHNjcmVlbicgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtXG4gIFtwbGFjZW1lbnRdPVwiJ3JpZ2h0J1wiXG4gIGl0ZW1DbGFzcz1cIm5hdmJhci1mb3JtXCJcbiAgKm5nSWY9XCJvbkZyZWV6ZS5vYnNlcnZlcnMubGVuZ3RoXCJcbj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICB0aXRsZT1cInt7ICdMb2NrL3VubG9jayB0aGlzIGRhc2hib2FyZCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiBzZXR0aW5ncy5pc0Zyb3plbiB9XCJcbiAgICAoY2xpY2spPVwib25GcmVlemUuZW1pdChzZXR0aW5ncylcIlxuICAgIFtkaXNhYmxlZF09XCJzZXR0aW5ncy5pc0Rpc2FibGVkXCJcbiAgICB1aWItYnRuLWNoZWNrYm94XG4gICAgZGF0YS1jeT1cIndpZGdldHMtZGFzaGJvYXJkLS1idXR0b24tbG9jay10b2dnbGVcIlxuICA+XG4gICAgPGkgW2M4eUljb25dPVwic2V0dGluZ3MuaXNGcm96ZW4gPyAnbG9jaycgOiAndW5sb2NrJ1wiPjwvaT5cbiAgPC9idXR0b24+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG48Yzh5LWFjdGlvbi1iYXItaXRlbVxuICBbcGxhY2VtZW50XT1cIidtb3JlJ1wiXG4gIFtwcmlvcml0eV09XCItMjAwMFwiXG4gICpuZ0lmPVwic2V0dGluZ3MuY2FuQ29weVwiXG4+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tbGlua1wiXG4gICAgdGl0bGU9XCJ7e1xuICAgICAgc2V0dGluZ3MuaXNDb3B5RGlzYWJsZWQgPyBjb3B5RGFzaGJvYXJkV2FybmluZ01lc3NhZ2UgOiAoJ0NvcHkgZGFzaGJvYXJkJyB8IHRyYW5zbGF0ZSlcbiAgICB9fVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgZGF0YS1jeT1cIndpZGdldHMtZGFzaGJvYXJkLS1jb3B5LWRhc2hib2FyZFwiXG4gICAgKGNsaWNrKT1cIm9uQ29weURhc2hib2FyZC5lbWl0KClcIlxuICAgIFtkaXNhYmxlZF09XCJzZXR0aW5ncy5pc0NvcHlEaXNhYmxlZFwiXG4gID5cbiAgICA8aSBjOHlJY29uPVwiY2xvbmVcIj48L2k+XG4gICAgPHNwYW5cbiAgICAgIGNsYXNzPVwibS1sLTRcIlxuICAgICAgdHJhbnNsYXRlXG4gICAgPlxuICAgICAgQ29weSBkYXNoYm9hcmRcbiAgICA8L3NwYW4+XG4gIDwvYnV0dG9uPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48Yzh5LWFjdGlvbi1iYXItaXRlbVxuICBbcGxhY2VtZW50XT1cIidtb3JlJ1wiXG4gIFtwcmlvcml0eV09XCItMzAwMFwiXG4gICpuZ0lmPVwic2V0dGluZ3MuY2FuRGVsZXRlICYmIG9uRGVsZXRlRGFzaGJvYXJkLm9ic2VydmVycy5sZW5ndGhcIlxuPlxuICA8YnV0dG9uXG4gICAgdGl0bGU9XCJ7eyAnRGVsZXRlIGRhc2hib2FyZCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIChjbGljayk9XCJvbkRlbGV0ZURhc2hib2FyZC5lbWl0KClcIlxuICAgIFtkaXNhYmxlZF09XCJzZXR0aW5ncy5pc0Zyb3plbiB8fCBzZXR0aW5ncy5pc0Rpc2FibGVkXCJcbiAgPlxuICAgIDxpIGM4eUljb249XCJkZWxldGVcIj48L2k+XG4gICAgPHNwYW5cbiAgICAgIGNsYXNzPVwibS1sLTRcIlxuICAgICAgdHJhbnNsYXRlXG4gICAgPlxuICAgICAgRGVsZXRlIGRhc2hib2FyZFxuICAgIDwvc3Bhbj5cbiAgPC9idXR0b24+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxuZy10ZW1wbGF0ZSAjbG9hZGluZ0luZGljYXRvcj5cbiAgPGM4eS1sb2FkaW5nXG4gICAgY2xhc3M9XCJjb2wteHMtMTIgdGV4dC1jZW50ZXJcIlxuICAgICpuZ0lmPVwiaXNMb2FkaW5nV2lkZ2V0cyQgfCBhc3luY1wiXG4gID48L2M4eS1sb2FkaW5nPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEoaXNMb2FkaW5nV2lkZ2V0cyQgfCBhc3luYyk7IGVsc2UgbG9hZGluZ0luZGljYXRvclwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVzb2x2ZWRXaWRnZXRzJCB8IGFzeW5jIGFzIHdpZGdldHNUb0Rpc3BsYXlcIj5cbiAgICA8IS0tIGVtcHR5IHN0YXRlIC0tPlxuICAgIDxjOHktdWktZW1wdHktc3RhdGVcbiAgICAgIFtpY29uXT1cIidjOHktZGV2aWNlJ1wiXG4gICAgICBbdGl0bGVdPVwiJ05vIHdpZGdldHMgdG8gZGlzcGxheS4nIHwgdHJhbnNsYXRlXCJcbiAgICAgICpuZ0lmPVwid2lkZ2V0c1RvRGlzcGxheT8ubGVuZ3RoID09PSAwXCJcbiAgICA+XG4gICAgICA8ZGl2ICpuZ0lmPVwiIXNldHRpbmdzLmlzRnJvemVuICYmIG9uQWRkV2lkZ2V0Lm9ic2VydmVycy5sZW5ndGhcIj5cbiAgICAgICAgPHAgdHJhbnNsYXRlPkFkZCB3aWRnZXRzIHRvIHRoaXMgZGFzaGJvYXJkLjwvcD5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBtLXQtMTZcIlxuICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQWRkIHdpZGdldCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwic2V0dGluZ3MuaXNGcm96ZW4gfHwgc2V0dGluZ3MuaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25BZGRXaWRnZXQuZW1pdCgpXCJcbiAgICAgICAgICAgIGRhdGEtY3k9XCJ3aWRnZXRzLWRhc2hib2FyZC0tQWRkLXdpZGdldFwiXG4gICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICA+XG4gICAgICAgICAgICBBZGQgd2lkZ2V0XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8cCBjOHktZ3VpZGUtZG9jcz5cbiAgICAgICAgICA8c21hbGxcbiAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgbmdOb25CaW5kYWJsZVxuICAgICAgICAgID5cbiAgICAgICAgICAgIEZpbmQgb3V0IG1vcmUgaW4gdGhlXG4gICAgICAgICAgICA8YSBjOHktZ3VpZGUtaHJlZj1cIi9kb2NzL2NvY2twaXQvd29ya2luZy13aXRoLWRhc2hib2FyZHNcIj51c2VyIGRvY3VtZW50YXRpb248L2E+XG4gICAgICAgICAgICAuXG4gICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG4gICAgPC9jOHktdWktZW1wdHktc3RhdGU+XG5cbiAgICA8Yzh5LWRhc2hib2FyZFxuICAgICAgW2NvbHVtbnNdPVwic2V0dGluZ3MuY29sdW1uc1wiXG4gICAgICAoZGFzaGJvYXJkQ2hhbmdlKT1cIm9uQ2hhbmdlRGFzaGJvYXJkLmVtaXQoJGV2ZW50KVwiXG4gICAgICAjZGFzaGJvYXJkXG4gICAgPlxuICAgICAgPGM4eS1kYXNoYm9hcmQtY2hpbGRcbiAgICAgICAgW2NsYXNzXT1cIndpZGdldC5jbGFzc2VzXCJcbiAgICAgICAgKm5nRm9yPVwibGV0IHdpZGdldCBvZiB3aWRnZXRzVG9EaXNwbGF5XCJcbiAgICAgICAgW3hdPVwid2lkZ2V0Ll94XCJcbiAgICAgICAgW3ldPVwid2lkZ2V0Ll95XCJcbiAgICAgICAgW3dpZHRoXT1cIndpZGdldC5fd2lkdGggfHwgc2V0dGluZ3MuZGVmYXVsdFdpZHRoXCJcbiAgICAgICAgW2hlaWdodF09XCJ3aWRnZXQuX2hlaWdodCB8fCBzZXR0aW5ncy5kZWZhdWx0SGVpZ2h0XCJcbiAgICAgICAgW21hcmdpbl09XCJzZXR0aW5ncy53aWRnZXRNYXJnaW5cIlxuICAgICAgICBbaXNGcm96ZW5dPVwic2V0dGluZ3MuaXNGcm96ZW4gfHwgc2V0dGluZ3MuaXNEaXNhYmxlZFwiXG4gICAgICAgIFtkYXRhXT1cIndpZGdldFwiXG4gICAgICAgIFt1c2VJbnRlcnNlY3Rpb25dPVwidHJ1ZVwiXG4gICAgICAgIChjaGFuZ2VTdGFydCk9XCJvbkNoYW5nZVN0YXJ0LmVtaXQoeyB3aWRnZXQ6IHdpZGdldCwgc291cmNlOiBjaGlsZCwgZGFzaGJvYXJkOiBkYXNoYm9hcmQgfSlcIlxuICAgICAgICAoY2hhbmdlRW5kKT1cIm9uQ2hhbmdlRW5kLmVtaXQoeyB3aWRnZXQ6IHdpZGdldCwgc291cmNlOiBjaGlsZCwgZGFzaGJvYXJkOiBkYXNoYm9hcmQgfSlcIlxuICAgICAgICAjY2hpbGRcbiAgICAgID5cbiAgICAgICAgPGM4eS1kYXNoYm9hcmQtY2hpbGQtdGl0bGU+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGRhdGEtY3k9XCJjOHktZGFzaGJvYXJkLWxpc3QtLWRldmljZS13aWRnZXRcIlxuICAgICAgICAgICAgKm5nSWY9XCJzZXR0aW5ncy50cmFuc2xhdGVXaWRnZXRUaXRsZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgd2lkZ2V0LnRpdGxlIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXNldHRpbmdzLnRyYW5zbGF0ZVdpZGdldFRpdGxlXCI+XG4gICAgICAgICAgICB7eyB3aWRnZXQudGl0bGUgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvYzh5LWRhc2hib2FyZC1jaGlsZC10aXRsZT5cbiAgICAgICAgPGM4eS1kYXNoYm9hcmQtY2hpbGQtYWN0aW9uICpuZ0lmPVwib25FZGl0V2lkZ2V0Lm9ic2VydmVycy5sZW5ndGhcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0aXRsZT1cInt7ICdFZGl0IHdpZGdldCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBkYXRhLWN5PVwiYzh5LXdpZGdldHMtZGFzaGJvYXJkLS1lZGl0LWRhc2hib2FyZFwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25FZGl0V2lkZ2V0LmVtaXQoeyB3aWRnZXQ6IHdpZGdldCwgc291cmNlOiBjaGlsZCwgZGFzaGJvYXJkOiBkYXNoYm9hcmQgfSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGM4eUljb249XCJwZW5jaWxcIj48L2k+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cIm0tbC00XCJcbiAgICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIEVkaXRcbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9jOHktZGFzaGJvYXJkLWNoaWxkLWFjdGlvbj5cbiAgICAgICAgPGM4eS1kYXNoYm9hcmQtY2hpbGQtYWN0aW9uICpuZ0lmPVwib25EZWxldGVXaWRnZXQub2JzZXJ2ZXJzLmxlbmd0aFwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHRpdGxlPVwie3sgJ1JlbW92ZSB3aWRnZXQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgZGF0YS1jeT1cImM4eS13aWRnZXRzLWRhc2hib2FyZC0tcmVtb3ZlLXdpZGdldFwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25EZWxldGVXaWRnZXQuZW1pdCh7IHdpZGdldDogd2lkZ2V0LCBzb3VyY2U6IGNoaWxkLCBkYXNoYm9hcmQ6IGRhc2hib2FyZCB9KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgYzh5SWNvbj1cImRlbGV0ZVwiPjwvaT5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwibS1sLTRcIlxuICAgICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgUmVtb3ZlXG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvYzh5LWRhc2hib2FyZC1jaGlsZC1hY3Rpb24+XG5cbiAgICAgICAgPGM4eS13aWRnZXQtdGltZS1jb250ZXh0XG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICh3aWRnZXQuY29uZmlnPy5kaXNwbGF5U2V0dGluZ3M/Lmdsb2JhbFRpbWVDb250ZXh0IHx8XG4gICAgICAgICAgICAgIHdpZGdldC5jb25maWc/LmRpc3BsYXlTZXR0aW5ncz8uZ2xvYmFsUmVhbHRpbWVDb250ZXh0KSAmJlxuICAgICAgICAgICAgd2lkZ2V0LmNvbmZpZy53aWRnZXRJbnN0YW5jZUdsb2JhbFRpbWVDb250ZXh0XG4gICAgICAgICAgXCJcbiAgICAgICAgICAoZGF0ZUNvbnRleHRDaGFuZ2UpPVwidXBkYXRlV2lkZ2V0Q29uZmlnKCRldmVudCwgd2lkZ2V0KVwiXG4gICAgICAgICAgW2NhbkRlY291cGxlXT1cIndpZGdldC5jb25maWcuY2FuRGVjb3VwbGVHbG9iYWxUaW1lQ29udGV4dFwiXG4gICAgICAgICAgW2Rpc3BsYXlTZXR0aW5nc109XCJ3aWRnZXQuY29uZmlnLmRpc3BsYXlTZXR0aW5nc1wiXG4gICAgICAgID48L2M4eS13aWRnZXQtdGltZS1jb250ZXh0PlxuXG4gICAgICAgIDxjOHktZHluYW1pYy1jb21wb25lbnRcbiAgICAgICAgICBbY29tcG9uZW50SWRdPVwid2lkZ2V0LmNvbXBvbmVudElkIHx8IHdpZGdldC5uYW1lXCJcbiAgICAgICAgICBbY29uZmlnXT1cIlxuICAgICAgICAgICAgd2lkZ2V0LnRlbXBsYXRlVXJsIHx8IHdpZGdldC53aWRnZXRDb21wb25lbnRcbiAgICAgICAgICAgICAgPyB7IGNoaWxkOiB3aWRnZXQsIGRhc2hib2FyZDogY29udGV4dERhc2hib2FyZCwgY29udGV4dDogY29udGV4dCB9XG4gICAgICAgICAgICAgIDogd2lkZ2V0LmNvbmZpZ1xuICAgICAgICAgIFwiXG4gICAgICAgICAgKm5nSWY9XCJjaGlsZC5pbnRlcnNlY3RlZFwiXG4gICAgICAgICAgKHVwZGF0ZVdpZGdldENsYXNzZXMpPVwidXBkYXRlV2lkZ2V0Q2xhc3Nlcyh3aWRnZXQsICRldmVudClcIlxuICAgICAgICA+PC9jOHktZHluYW1pYy1jb21wb25lbnQ+XG4gICAgICA8L2M4eS1kYXNoYm9hcmQtY2hpbGQ+XG4gICAgPC9jOHktZGFzaGJvYXJkPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuIl19
@@ -23,9 +23,9 @@ export class TitleOutletComponent {
23
23
  }
24
24
  }
25
25
  TitleOutletComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TitleOutletComponent, deps: [{ token: i1.HeaderService }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
26
- TitleOutletComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TitleOutletComponent, selector: "c8y-title-outlet", ngImport: i0, template: "<div class=\"c8y-ui-title\" data-cy=\"title-outlet--c8y-ui-title\">\n <div class=\"title\" *c8yOutlet=\"title\"></div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.OutletDirective, selector: "[c8yOutlet]", inputs: ["c8yOutlet", "c8yOutletProperties", "c8yOutletInjector"] }] });
26
+ TitleOutletComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TitleOutletComponent, selector: "c8y-title-outlet", ngImport: i0, template: "<div class=\"c8y-ui-title\" data-cy=\"c8y-title--title-outlet\">\n <div class=\"title\" *c8yOutlet=\"title\"></div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.OutletDirective, selector: "[c8yOutlet]", inputs: ["c8yOutlet", "c8yOutletProperties", "c8yOutletInjector"] }] });
27
27
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TitleOutletComponent, decorators: [{
28
28
  type: Component,
29
- args: [{ selector: 'c8y-title-outlet', template: "<div class=\"c8y-ui-title\" data-cy=\"title-outlet--c8y-ui-title\">\n <div class=\"title\" *c8yOutlet=\"title\"></div>\n</div>\n" }]
29
+ args: [{ selector: 'c8y-title-outlet', template: "<div class=\"c8y-ui-title\" data-cy=\"c8y-title--title-outlet\">\n <div class=\"title\" *c8yOutlet=\"title\"></div>\n</div>\n" }]
30
30
  }], ctorParameters: function () { return [{ type: i1.HeaderService }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGl0bGUtb3V0bGV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2NvcmUvaGVhZGVyL3RpdGxlL3RpdGxlLW91dGxldC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9jb3JlL2hlYWRlci90aXRsZS90aXRsZS1vdXRsZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQU0zRCxNQUFNLE9BQU8sb0JBQW9CO0lBSS9CLFlBQ1UsYUFBNEIsRUFDNUIsT0FBbUIsRUFDbkIsSUFBWTtRQUZaLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFDbkIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQU50QixVQUFLLEdBQUcsU0FBUyxDQUFDO1FBQ2xCLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBT3JCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVELE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUVoRCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2hGLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUMsQ0FBQyxDQUFDO1FBRXhGLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQy9CLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTTtpQkFDdEIsSUFBSSxDQUNILFlBQVksQ0FBQyxHQUFHLENBQUMsRUFDakIsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxFQUN0QyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQ2pCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsRUFDekQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUN6QixHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQ3ZCLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FDaEI7aUJBQ0EsU0FBUyxDQUFDLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDeEUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztpSEE1QlUsb0JBQW9CO3FHQUFwQixvQkFBb0Isd0RDUmpDLG1JQUdBOzJGREthLG9CQUFvQjtrQkFKaEMsU0FBUzsrQkFDRSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSGVhZGVyU2VydmljZSB9IGZyb20gJy4uL2hlYWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgbWFwLCBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS10aXRsZS1vdXRsZXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGl0bGUtb3V0bGV0LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBUaXRsZU91dGxldENvbXBvbmVudCB7XG4gIHRpdGxlID0gdW5kZWZpbmVkO1xuICBwYWdlVGl0bGVVcGRhdGUgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaGVhZGVyU2VydmljZTogSGVhZGVyU2VydmljZSxcbiAgICBwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmVcbiAgKSB7XG4gICAgY29uc3QgdGl0bGUkID0gdGhpcy5oZWFkZXJTZXJ2aWNlLm1hcChzdGF0ZSA9PiBzdGF0ZS50aXRsZSk7XG4gICAgdGl0bGUkLnN1YnNjcmliZSh0aXRsZSA9PiAodGhpcy50aXRsZSA9IHRpdGxlKSk7XG5cbiAgICBjb25zdCBwYWdlVGl0bGVVcGRhdGUkID0gdGhpcy5oZWFkZXJTZXJ2aWNlLm1hcChzdGF0ZSA9PiBzdGF0ZS5wYWdlVGl0bGVVcGRhdGUpO1xuICAgIHBhZ2VUaXRsZVVwZGF0ZSQuc3Vic2NyaWJlKHBhZ2VUaXRsZVVwZGF0ZSA9PiAodGhpcy5wYWdlVGl0bGVVcGRhdGUgPSBwYWdlVGl0bGVVcGRhdGUpKTtcblxuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLmhlYWRlclNlcnZpY2Uuc3RhdGUkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGRlYm91bmNlVGltZSgxMDApLFxuICAgICAgICAgIGZpbHRlcihzdGF0ZSA9PiBzdGF0ZS5wYWdlVGl0bGVVcGRhdGUpLFxuICAgICAgICAgIGRlYm91bmNlVGltZSgxMDApLFxuICAgICAgICAgIG1hcCgoKSA9PiB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdoMScpKSxcbiAgICAgICAgICBmaWx0ZXIoZWwgPT4gZWwgIT09IG51bGwpLFxuICAgICAgICAgIG1hcChlbCA9PiBlbC5pbm5lclRleHQpLFxuICAgICAgICAgIGZpbHRlcihCb29sZWFuKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKHRpdGxlOiBzdHJpbmcpID0+IGhlYWRlclNlcnZpY2UuY2hhbmdlUGFnZVRpdGxlKHRpdGxlKSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjOHktdWktdGl0bGVcIiBkYXRhLWN5PVwidGl0bGUtb3V0bGV0LS1jOHktdWktdGl0bGVcIj5cbiAgPGRpdiBjbGFzcz1cInRpdGxlXCIgKmM4eU91dGxldD1cInRpdGxlXCI+PC9kaXY+XG48L2Rpdj5cbiJdfQ==
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGl0bGUtb3V0bGV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2NvcmUvaGVhZGVyL3RpdGxlL3RpdGxlLW91dGxldC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9jb3JlL2hlYWRlci90aXRsZS90aXRsZS1vdXRsZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQU0zRCxNQUFNLE9BQU8sb0JBQW9CO0lBSS9CLFlBQ1UsYUFBNEIsRUFDNUIsT0FBbUIsRUFDbkIsSUFBWTtRQUZaLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFDbkIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQU50QixVQUFLLEdBQUcsU0FBUyxDQUFDO1FBQ2xCLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBT3JCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVELE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUVoRCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2hGLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUMsQ0FBQyxDQUFDO1FBRXhGLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQy9CLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTTtpQkFDdEIsSUFBSSxDQUNILFlBQVksQ0FBQyxHQUFHLENBQUMsRUFDakIsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxFQUN0QyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQ2pCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsRUFDekQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUN6QixHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQ3ZCLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FDaEI7aUJBQ0EsU0FBUyxDQUFDLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDeEUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztpSEE1QlUsb0JBQW9CO3FHQUFwQixvQkFBb0Isd0RDUmpDLGdJQUdBOzJGREthLG9CQUFvQjtrQkFKaEMsU0FBUzsrQkFDRSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSGVhZGVyU2VydmljZSB9IGZyb20gJy4uL2hlYWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgbWFwLCBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS10aXRsZS1vdXRsZXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGl0bGUtb3V0bGV0LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBUaXRsZU91dGxldENvbXBvbmVudCB7XG4gIHRpdGxlID0gdW5kZWZpbmVkO1xuICBwYWdlVGl0bGVVcGRhdGUgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaGVhZGVyU2VydmljZTogSGVhZGVyU2VydmljZSxcbiAgICBwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmVcbiAgKSB7XG4gICAgY29uc3QgdGl0bGUkID0gdGhpcy5oZWFkZXJTZXJ2aWNlLm1hcChzdGF0ZSA9PiBzdGF0ZS50aXRsZSk7XG4gICAgdGl0bGUkLnN1YnNjcmliZSh0aXRsZSA9PiAodGhpcy50aXRsZSA9IHRpdGxlKSk7XG5cbiAgICBjb25zdCBwYWdlVGl0bGVVcGRhdGUkID0gdGhpcy5oZWFkZXJTZXJ2aWNlLm1hcChzdGF0ZSA9PiBzdGF0ZS5wYWdlVGl0bGVVcGRhdGUpO1xuICAgIHBhZ2VUaXRsZVVwZGF0ZSQuc3Vic2NyaWJlKHBhZ2VUaXRsZVVwZGF0ZSA9PiAodGhpcy5wYWdlVGl0bGVVcGRhdGUgPSBwYWdlVGl0bGVVcGRhdGUpKTtcblxuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLmhlYWRlclNlcnZpY2Uuc3RhdGUkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGRlYm91bmNlVGltZSgxMDApLFxuICAgICAgICAgIGZpbHRlcihzdGF0ZSA9PiBzdGF0ZS5wYWdlVGl0bGVVcGRhdGUpLFxuICAgICAgICAgIGRlYm91bmNlVGltZSgxMDApLFxuICAgICAgICAgIG1hcCgoKSA9PiB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdoMScpKSxcbiAgICAgICAgICBmaWx0ZXIoZWwgPT4gZWwgIT09IG51bGwpLFxuICAgICAgICAgIG1hcChlbCA9PiBlbC5pbm5lclRleHQpLFxuICAgICAgICAgIGZpbHRlcihCb29sZWFuKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKHRpdGxlOiBzdHJpbmcpID0+IGhlYWRlclNlcnZpY2UuY2hhbmdlUGFnZVRpdGxlKHRpdGxlKSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjOHktdWktdGl0bGVcIiBkYXRhLWN5PVwiYzh5LXRpdGxlLS10aXRsZS1vdXRsZXRcIj5cbiAgPGRpdiBjbGFzcz1cInRpdGxlXCIgKmM4eU91dGxldD1cInRpdGxlXCI+PC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -77,7 +77,7 @@ export class Lwm2mFormDeviceSettings extends Lwm2mFormWrapperBase {
77
77
  defaultValue: false,
78
78
  props: {
79
79
  label: gettext('Use source timestamp'),
80
- description: gettext('Use common timestamp resources 5518 and 6050 or object specific timestamp for object 6 reported by the device if available.')
80
+ description: gettext('LWM2M offers various methods for associating timestamp information with data points, including resources 5518 and 6050, SenML, or resource 5 for the location object (6). When activated, the LWM2M agent utilizes this timestamp data source to generate measurements, events, or alarms. If deactivated, the LWM2M agent resorts to using its local time.')
81
81
  }
82
82
  },
83
83
  {
@@ -109,4 +109,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
109
109
  type: Component,
110
110
  args: [{ imports: [CoreModule, Lwm2mUIThemeModule], standalone: true, template: "<formly-form\n *ngIf=\"fields?.length > 0; else empty\"\n [model]=\"model\"\n [form]=\"form\"\n [fields]=\"fields\"\n [options]=\"options\"\n data-cy=\"lwm2m-device-configuration--formly-form\"\n></formly-form>\n<ng-template #empty>\n <c8y-ui-empty-state\n [icon]=\"'c8y-device-protocols'\"\n title=\"{{ 'No configuration selected' | translate }}\"\n subtitle=\"{{ 'Select a configuration on the left' | translate }}\"\n ></c8y-ui-empty-state>\n</ng-template>\n" }]
111
111
  }], ctorParameters: function () { return [{ type: i1.Lwm2mConfigurationService }]; } });
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLXNldHRpbmdzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb3RvY29sLWx3bTJtL2NvbXBvbmVudHMvY29uZmlndXJhdGlvbi90eXBlZC1mb3Jtcy9kZXZpY2Utc2V0dGluZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvdG9jb2wtbHdtMm0vY29tcG9uZW50cy9jb25maWd1cmF0aW9uL3R5cGVkLWZvcm1zL2Zvcm0td3JhcHBlci1iYXNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMvRSxPQUFPLEVBQ0wsY0FBYyxFQUVkLFFBQVEsRUFDUixtQkFBbUIsRUFDcEIsTUFBTSwwQ0FBMEMsQ0FBQztBQUNsRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7Ozs7O0FBT3hGLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxvQkFBb0M7SUFFL0UsWUFBc0IsT0FBa0Q7UUFDdEUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBREssWUFBTyxHQUFQLE9BQU8sQ0FBMkM7UUFEOUQsYUFBUSxHQUFhLFFBQVEsQ0FBQyxjQUFjLENBQUM7SUFHdkQsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPO1lBQ0w7Z0JBQ0UsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQUNwQixVQUFVLEVBQUU7b0JBQ1Y7d0JBQ0UsR0FBRyxFQUFFLFlBQVk7d0JBQ2pCLElBQUksRUFBRSxRQUFRO3dCQUNkLEtBQUssRUFB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QUxuQyxTQUFTOzhCQUVDLENBQUMsVUFBVSxFQUFFLGtCQUFrQixDQUFDLGNBQzdCLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvcmVNb2R1bGUsIGdldHRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEx3bTJtVUlUaGVtZU1vZHVsZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvcHJvdG9jb2wtbHdtMm0vZm9ybWx5JztcbmltcG9ydCB7XG4gIEJpbmFyeUVuY29kaW5nLFxuICBEZXZpY2VTZXR0aW5ncyxcbiAgRW5kcG9pbnQsXG4gIFNlcmlhbGl6YXRpb25Gb3JtYXRcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9wcm90b2NvbC1sd20ybS9tb2RlbCc7XG5pbXBvcnQgeyBMd20ybUZvcm1XcmFwcGVyQmFzZSB9IGZyb20gJy4vZm9ybS13cmFwcGVyLWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IEx3bTJtQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL3Byb3RvY29sLWx3bTJtL3NlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLXdyYXBwZXItYmFzZS5jb21wb25lbnQuaHRtbCcsXG4gIGltcG9ydHM6IFtDb3JlTW9kdWxlLCBMd20ybVVJVGhlbWVNb2R1bGVdLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIEx3bTJtRm9ybURldmljZVNldHRpbmdzIGV4dGVuZHMgTHdtMm1Gb3JtV3JhcHBlckJhc2U8RGV2aWNlU2V0dGluZ3M+IHtcbiAgcHJvdGVjdGVkIGVuZHBvaW50OiBFbmRwb2ludCA9IEVuZHBvaW50LmRldmljZVNldHRpbmdzO1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgc2VydmljZTogTHdtMm1Db25maWd1cmF0aW9uU2VydmljZTxEZXZpY2VTZXR0aW5ncz4pIHtcbiAgICBzdXBlcihzZXJ2aWNlKTtcbiAgfVxuXG4gIGNyZWF0ZUZvcm0oKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgd3JhcHBlcnM6IFsnbGVnZW5kJ10sXG4gICAgICAgIGZpZWxkR3JvdXA6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBrZXk6ICdlbmRwb2ludElkJyxcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0VuZHBvaW50IGNsaWVudCBJRCcpLFxuICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiAnYXdha2VUaW1lJyxcbiAgICAgICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0F3YWtlIHRpbWUgcmVnaXN0cmF0aW9uIHBhcmFtZXRlcicpLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnaW4gbWlsbGlzZWNvbmRzLCAwIG1lYW5zIGRldmljZSBpcyBhbHdheXMgb25saW5lJyksXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnMCcsXG4gICAgICAgICAgICAgIG1pbjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiAncmVxdWVzdFRpbWVvdXQnLFxuICAgICAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnTFdNMk0gcmVxdWVzdCB0aW1lb3V0JyksXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdpbiBtaWxsaXNlY29uZHMnKSxcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICcxODAwMDAnLFxuICAgICAgICAgICAgICBtaW46IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGtleTogJ2JpbmFyeUVuY29kaW5nJyxcbiAgICAgICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBCaW5hcnlFbmNvZGluZy5PUEFRVUUsXG4gICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnQmluYXJ5IGRlbGl2ZXJ5IGVuY29kaW5nJyksXG4gICAgICAgICAgICAgIG9wdGlvbnM6IE9iamVjdC52YWx1ZXMoQmluYXJ5RW5jb2RpbmcpLm1hcCh2YWx1ZSA9PiAoeyBsYWJlbDogdmFsdWUsIHZhbHVlIH0pKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiAnc2VyaWFsaXphdGlvbkZvcm1hdCcsXG4gICAgICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdTZXJpYWxpemF0aW9uIGZvcm1hdCcpLFxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogZ2V0dGV4dCgnRGVmYXVsdCBkZXZpY2UgdmFsdWUnKSxcbiAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgIC4uLk9iamVjdC52YWx1ZXMoU2VyaWFsaXphdGlvbkZvcm1hdCkubWFwKHZhbHVlID0+ICh7IGxhYmVsOiB2YWx1ZSwgdmFsdWUgfSkpXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KFxuICAgICAgICAgICAgICAgICdJbmRpY2F0ZXMgdGhlIHByZWZlcnJlZCBjb250ZW50IGZvcm1hdCBmb3IgTFdNMk0gQWdlbnQgdG8gdXNlIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIGRldmljZS4nXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGFjY2VwdFVuZGVmaW5lZDogdHJ1ZSxcbiAgICAgICAgICAgICAgcmVtb3ZlRXhlbXBsaUdyYXRpYTogdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiAndXNlVGltZXN0YW1wUmVzb3VyY2VzJyxcbiAgICAgICAgICAgIHR5cGU6ICdzd2l0Y2gnLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBmYWxzZSxcbiAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdVc2Ugc291cmNlIHRpbWVzdGFtcCcpLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dChcbiAgICAgICAgICAgICAgICAnVXNlIGNvbW1vbiB0aW1lc3RhbXAgcmVzb3VyY2VzIDU1MTggYW5kIDYwNTAgb3Igb2JqZWN0IHNwZWNpZmljIHRpbWVzdGFtcCBmb3Igb2JqZWN0IDYgcmVwb3J0ZWQgYnkgdGhlIGRldmljZSBpZiBhdmFpbGFibGUuJ1xuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBrZXk6ICdrZWVwT2xkVmFsdWVzT25PcGVyYXRpb25GYWlsJyxcbiAgICAgICAgICAgIHR5cGU6ICdzd2l0Y2gnLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBmYWxzZSxcbiAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdLZWVwIG9sZCB2YWx1ZXMnKSxcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGdldHRleHQoJ0tlZXAgb2xkIHZhbHVlcyBpbiB0aGUgb2JqZWN0cyB0YWIgaWYgYW4gb3BlcmF0aW9uIGZhaWxzLicpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBrZXk6ICdkaXNhYmxlT2JqZWN0SW5zdGFuY2VBY3Rpb25zJyxcbiAgICAgICAgICAgIHR5cGU6ICdzd2l0Y2gnLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBmYWxzZSxcbiAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdEaXNhYmxlIGRlZmF1bHQgYmVoYXZpb3IgZm9yIG9iamVjdCBpbnN0YW5jZXMnKSxcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGdldHRleHQoJ1R1cm5zIG9mZiB0aGUgaW50ZXJuYWwgZGVmYXVsdCBoYW5kbGluZyBvZiBvYmplY3RzIDMsIDQgYW5kIDYnKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgIF07XG4gIH1cbn1cbiIsIjxmb3JtbHktZm9ybVxuICAqbmdJZj1cImZpZWxkcz8ubGVuZ3RoID4gMDsgZWxzZSBlbXB0eVwiXG4gIFttb2RlbF09XCJtb2RlbFwiXG4gIFtmb3JtXT1cImZvcm1cIlxuICBbZmllbGRzXT1cImZpZWxkc1wiXG4gIFtvcHRpb25zXT1cIm9wdGlvbnNcIlxuICBkYXRhLWN5PVwibHdtMm0tZGV2aWNlLWNvbmZpZ3VyYXRpb24tLWZvcm1seS1mb3JtXCJcbj48L2Zvcm1seS1mb3JtPlxuPG5nLXRlbXBsYXRlICNlbXB0eT5cbiAgPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAgIFtpY29uXT1cIidjOHktZGV2aWNlLXByb3RvY29scydcIlxuICAgIHRpdGxlPVwie3sgJ05vIGNvbmZpZ3VyYXRpb24gc2VsZWN0ZWQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICBzdWJ0aXRsZT1cInt7ICdTZWxlY3QgYSBjb25maWd1cmF0aW9uIG9uIHRoZSBsZWZ0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gID48L2M4eS11aS1lbXB0eS1zdGF0ZT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLXNldHRpbmdzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb3RvY29sLWx3bTJtL2NvbXBvbmVudHMvY29uZmlndXJhdGlvbi90eXBlZC1mb3Jtcy9kZXZpY2Utc2V0dGluZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvdG9jb2wtbHdtMm0vY29tcG9uZW50cy9jb25maWd1cmF0aW9uL3R5cGVkLWZvcm1zL2Zvcm0td3JhcHBlci1iYXNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMvRSxPQUFPLEVBQ0wsY0FBYyxFQUVkLFFBQVEsRUFDUixtQkFBbUIsRUFDcEIsTUFBTSwwQ0FBMEMsQ0FBQztBQUNsRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7Ozs7O0FBT3hGLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxvQkFBb0M7SUFFL0UsWUFBc0IsT0FBa0Q7UUFDdEUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBREssWUFBTyxHQUFQLE9BQU8sQ0FBMkM7UUFEOUQsYUFBUSxHQUFhLFFBQVEsQ0FBQyxjQUFjLENBQUM7SUFHdkQsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPO1lBQ0w7Z0JBQ0UsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQUNwQixVQUFVLEVBQUU7b0JBQ1Y7d0JBQ0UsR0FBRyxFQUFFLFlBQVk7d0JBQ2pCLElBQUksRUFBRSxRQUFRO3dCQUNkLEtBQUssRUFB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QUxuQyxTQUFTOzhCQUVDLENBQUMsVUFBVSxFQUFFLGtCQUFrQixDQUFDLGNBQzdCLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvcmVNb2R1bGUsIGdldHRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEx3bTJtVUlUaGVtZU1vZHVsZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvcHJvdG9jb2wtbHdtMm0vZm9ybWx5JztcbmltcG9ydCB7XG4gIEJpbmFyeUVuY29kaW5nLFxuICBEZXZpY2VTZXR0aW5ncyxcbiAgRW5kcG9pbnQsXG4gIFNlcmlhbGl6YXRpb25Gb3JtYXRcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9wcm90b2NvbC1sd20ybS9tb2RlbCc7XG5pbXBvcnQgeyBMd20ybUZvcm1XcmFwcGVyQmFzZSB9IGZyb20gJy4vZm9ybS13cmFwcGVyLWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IEx3bTJtQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL3Byb3RvY29sLWx3bTJtL3NlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLXdyYXBwZXItYmFzZS5jb21wb25lbnQuaHRtbCcsXG4gIGltcG9ydHM6IFtDb3JlTW9kdWxlLCBMd20ybVVJVGhlbWVNb2R1bGVdLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIEx3bTJtRm9ybURldmljZVNldHRpbmdzIGV4dGVuZHMgTHdtMm1Gb3JtV3JhcHBlckJhc2U8RGV2aWNlU2V0dGluZ3M+IHtcbiAgcHJvdGVjdGVkIGVuZHBvaW50OiBFbmRwb2ludCA9IEVuZHBvaW50LmRldmljZVNldHRpbmdzO1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgc2VydmljZTogTHdtMm1Db25maWd1cmF0aW9uU2VydmljZTxEZXZpY2VTZXR0aW5ncz4pIHtcbiAgICBzdXBlcihzZXJ2aWNlKTtcbiAgfVxuXG4gIGNyZWF0ZUZvcm0oKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgd3JhcHBlcnM6IFsnbGVnZW5kJ10sXG4gICAgICAgIGZpZWxkR3JvdXA6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBrZXk6ICdlbmRwb2ludElkJyxcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0VuZHBvaW50IGNsaWVudCBJRCcpLFxuICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiAnYXdha2VUaW1lJyxcbiAgICAgICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0F3YWtlIHRpbWUgcmVnaXN0cmF0aW9uIHBhcmFtZXRlcicpLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnaW4gbWlsbGlzZWNvbmRzLCAwIG1lYW5zIGRldmljZSBpcyBhbHdheXMgb25saW5lJyksXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnMCcsXG4gICAgICAgICAgICAgIG1pbjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiAncmVxdWVzdFRpbWVvdXQnLFxuICAgICAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnTFdNMk0gcmVxdWVzdCB0aW1lb3V0JyksXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdpbiBtaWxsaXNlY29uZHMnKSxcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICcxODAwMDAnLFxuICAgICAgICAgICAgICBtaW46IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGtleTogJ2JpbmFyeUVuY29kaW5nJyxcbiAgICAgICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBCaW5hcnlFbmNvZGluZy5PUEFRVUUsXG4gICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnQmluYXJ5IGRlbGl2ZXJ5IGVuY29kaW5nJyksXG4gICAgICAgICAgICAgIG9wdGlvbnM6IE9iamVjdC52YWx1ZXMoQmluYXJ5RW5jb2RpbmcpLm1hcCh2YWx1ZSA9PiAoeyBsYWJlbDogdmFsdWUsIHZhbHVlIH0pKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiAnc2VyaWFsaXphdGlvbkZvcm1hdCcsXG4gICAgICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdTZXJpYWxpemF0aW9uIGZvcm1hdCcpLFxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogZ2V0dGV4dCgnRGVmYXVsdCBkZXZpY2UgdmFsdWUnKSxcbiAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgIC4uLk9iamVjdC52YWx1ZXMoU2VyaWFsaXphdGlvbkZvcm1hdCkubWFwKHZhbHVlID0+ICh7IGxhYmVsOiB2YWx1ZSwgdmFsdWUgfSkpXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KFxuICAgICAgICAgICAgICAgICdJbmRpY2F0ZXMgdGhlIHByZWZlcnJlZCBjb250ZW50IGZvcm1hdCBmb3IgTFdNMk0gQWdlbnQgdG8gdXNlIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIGRldmljZS4nXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGFjY2VwdFVuZGVmaW5lZDogdHJ1ZSxcbiAgICAgICAgICAgICAgcmVtb3ZlRXhlbXBsaUdyYXRpYTogdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiAndXNlVGltZXN0YW1wUmVzb3VyY2VzJyxcbiAgICAgICAgICAgIHR5cGU6ICdzd2l0Y2gnLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBmYWxzZSxcbiAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdVc2Ugc291cmNlIHRpbWVzdGFtcCcpLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dChcbiAgICAgICAgICAgICAgICAnTFdNMk0gb2ZmZXJzIHZhcmlvdXMgbWV0aG9kcyBmb3IgYXNzb2NpYXRpbmcgdGltZXN0YW1wIGluZm9ybWF0aW9uIHdpdGggZGF0YSBwb2ludHMsIGluY2x1ZGluZyByZXNvdXJjZXMgNTUxOCBhbmQgNjA1MCwgU2VuTUwsIG9yIHJlc291cmNlIDUgZm9yIHRoZSBsb2NhdGlvbiBvYmplY3QgKDYpLiBXaGVuIGFjdGl2YXRlZCwgdGhlIExXTTJNIGFnZW50IHV0aWxpemVzIHRoaXMgdGltZXN0YW1wIGRhdGEgc291cmNlIHRvIGdlbmVyYXRlIG1lYXN1cmVtZW50cywgZXZlbnRzLCBvciBhbGFybXMuIElmIGRlYWN0aXZhdGVkLCB0aGUgTFdNMk0gYWdlbnQgcmVzb3J0cyB0byB1c2luZyBpdHMgbG9jYWwgdGltZS4nXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGtleTogJ2tlZXBPbGRWYWx1ZXNPbk9wZXJhdGlvbkZhaWwnLFxuICAgICAgICAgICAgdHlwZTogJ3N3aXRjaCcsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0tlZXAgb2xkIHZhbHVlcycpLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnS2VlcCBvbGQgdmFsdWVzIGluIHRoZSBvYmplY3RzIHRhYiBpZiBhbiBvcGVyYXRpb24gZmFpbHMuJylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGtleTogJ2Rpc2FibGVPYmplY3RJbnN0YW5jZUFjdGlvbnMnLFxuICAgICAgICAgICAgdHlwZTogJ3N3aXRjaCcsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0Rpc2FibGUgZGVmYXVsdCBiZWhhdmlvciBmb3Igb2JqZWN0IGluc3RhbmNlcycpLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnVHVybnMgb2ZmIHRoZSBpbnRlcm5hbCBkZWZhdWx0IGhhbmRsaW5nIG9mIG9iamVjdHMgMywgNCBhbmQgNicpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgXTtcbiAgfVxufVxuIiwiPGZvcm1seS1mb3JtXG4gICpuZ0lmPVwiZmllbGRzPy5sZW5ndGggPiAwOyBlbHNlIGVtcHR5XCJcbiAgW21vZGVsXT1cIm1vZGVsXCJcbiAgW2Zvcm1dPVwiZm9ybVwiXG4gIFtmaWVsZHNdPVwiZmllbGRzXCJcbiAgW29wdGlvbnNdPVwib3B0aW9uc1wiXG4gIGRhdGEtY3k9XCJsd20ybS1kZXZpY2UtY29uZmlndXJhdGlvbi0tZm9ybWx5LWZvcm1cIlxuPjwvZm9ybWx5LWZvcm0+XG48bmctdGVtcGxhdGUgI2VtcHR5PlxuICA8Yzh5LXVpLWVtcHR5LXN0YXRlXG4gICAgW2ljb25dPVwiJ2M4eS1kZXZpY2UtcHJvdG9jb2xzJ1wiXG4gICAgdGl0bGU9XCJ7eyAnTm8gY29uZmlndXJhdGlvbiBzZWxlY3RlZCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHN1YnRpdGxlPVwie3sgJ1NlbGVjdCBhIGNvbmZpZ3VyYXRpb24gb24gdGhlIGxlZnQnIHwgdHJhbnNsYXRlIH19XCJcbiAgPjwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -279,7 +279,7 @@ class Lwm2mFormDeviceSettings extends Lwm2mFormWrapperBase {
279
279
  defaultValue: false,
280
280
  props: {
281
281
  label: gettext('Use source timestamp'),
282
- description: gettext('Use common timestamp resources 5518 and 6050 or object specific timestamp for object 6 reported by the device if available.')
282
+ description: gettext('LWM2M offers various methods for associating timestamp information with data points, including resources 5518 and 6050, SenML, or resource 5 for the location object (6). When activated, the LWM2M agent utilizes this timestamp data source to generate measurements, events, or alarms. If deactivated, the LWM2M agent resorts to using its local time.')
283
283
  }
284
284
  },
285
285
  {