@c8y/ngx-components 1017.0.134 → 1017.0.136
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/assets-navigator/asset-selector/miller-view.component.mjs +3 -3
- package/esm2020/context-dashboard/widget-config.component.mjs +3 -3
- package/fesm2015/c8y-ngx-components-assets-navigator.mjs +2 -2
- package/fesm2015/c8y-ngx-components-assets-navigator.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-context-dashboard.mjs +2 -2
- package/fesm2015/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-assets-navigator.mjs +2 -2
- package/fesm2020/c8y-ngx-components-assets-navigator.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-context-dashboard.mjs +2 -2
- package/fesm2020/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/locales/locales.pot +18 -6
- package/package.json +2 -2
|
@@ -137,7 +137,7 @@ MillerViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ve
|
|
|
137
137
|
useExisting: forwardRef(() => MillerViewComponent),
|
|
138
138
|
multi: true
|
|
139
139
|
}
|
|
140
|
-
], viewQueries: [{ propertyName: "millerViewWrapper", first: true, predicate: ["millerViewWrapper"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\n #millerViewWrapper\n class=\"miller-view-wrapper\"\n [ngClass]=\"{ 'single-column': config.singleColumn }\"\n>\n <div *ngFor=\"let column of columns; index as i\" class=\"miller-column bg-inherit\">\n <c8y-asset-selector\n [config]=\"config\"\n [index]=\"i\"\n [active]=\"columns[i + 1]\"\n [rootNode]=\"column\"\n [selectedItems]=\"selected || []\"\n [selectedDevice]=\"selectedDevice\"\n (onSelected)=\"onSelectionChange($event)\"\n (onRowSelected)=\"addNewColumn($event)\"\n (onLoad)=\"onLoad($event)\"\n [container]=\"container\"\n class=\"bg-inherit
|
|
140
|
+
], viewQueries: [{ propertyName: "millerViewWrapper", first: true, predicate: ["millerViewWrapper"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\n #millerViewWrapper\n class=\"miller-view-wrapper\"\n [ngClass]=\"{ 'single-column': config.singleColumn }\"\n>\n <div *ngFor=\"let column of columns; index as i\" class=\"miller-column bg-inherit\">\n <c8y-asset-selector\n [config]=\"config\"\n [index]=\"i\"\n [active]=\"columns[i + 1]\"\n [rootNode]=\"column\"\n [selectedItems]=\"selected || []\"\n [selectedDevice]=\"selectedDevice\"\n (onSelected)=\"onSelectionChange($event)\"\n (onRowSelected)=\"addNewColumn($event)\"\n (onLoad)=\"onLoad($event)\"\n [container]=\"container\"\n class=\"bg-inherit\"\n >\n </c8y-asset-selector>\n\n <div class=\"p-relative p-b-64\" *ngIf=\"isLoading && columnIndex === i && !selectedDevice\">\n <c8y-loading></c8y-loading>\n </div>\n\n <div *ngIf=\"!column.children.length && !isLoading\" class=\"p-l-8 p-r-8\">\n <c8y-ui-empty-state\n *ngIf=\"!filterText; else noSearchResults\"\n [icon]=\"'folder-open'\"\n [title]=\"'No results to display.' | translate\"\n [subtitle]=\"'The selected asset has no children.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n <ng-template #noSearchResults>\n <c8y-ui-empty-state\n [icon]=\"'folder-open'\"\n [title]=\"'No results to display for the current filter.' | translate\"\n [subtitle]=\"'There are no assets matching the filter.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </ng-template>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i4.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.LoadingComponent, selector: "c8y-loading" }, { kind: "component", type: i6.AssetSelectorComponent, selector: "c8y-asset-selector", inputs: ["config", "active", "index", "asset", "selectedDevice", "selected", "rootNode", "selectedItems", "container"], outputs: ["onSelected", "onRowSelected", "onLoad"] }, { kind: "pipe", type: i4.C8yTranslatePipe, name: "translate" }] });
|
|
141
141
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: MillerViewComponent, decorators: [{
|
|
142
142
|
type: Component,
|
|
143
143
|
args: [{ selector: 'c8y-asset-selector-miller', providers: [
|
|
@@ -146,7 +146,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
|
146
146
|
useExisting: forwardRef(() => MillerViewComponent),
|
|
147
147
|
multi: true
|
|
148
148
|
}
|
|
149
|
-
], template: "<div\n #millerViewWrapper\n class=\"miller-view-wrapper\"\n [ngClass]=\"{ 'single-column': config.singleColumn }\"\n>\n <div *ngFor=\"let column of columns; index as i\" class=\"miller-column bg-inherit\">\n <c8y-asset-selector\n [config]=\"config\"\n [index]=\"i\"\n [active]=\"columns[i + 1]\"\n [rootNode]=\"column\"\n [selectedItems]=\"selected || []\"\n [selectedDevice]=\"selectedDevice\"\n (onSelected)=\"onSelectionChange($event)\"\n (onRowSelected)=\"addNewColumn($event)\"\n (onLoad)=\"onLoad($event)\"\n [container]=\"container\"\n class=\"bg-inherit
|
|
149
|
+
], template: "<div\n #millerViewWrapper\n class=\"miller-view-wrapper\"\n [ngClass]=\"{ 'single-column': config.singleColumn }\"\n>\n <div *ngFor=\"let column of columns; index as i\" class=\"miller-column bg-inherit\">\n <c8y-asset-selector\n [config]=\"config\"\n [index]=\"i\"\n [active]=\"columns[i + 1]\"\n [rootNode]=\"column\"\n [selectedItems]=\"selected || []\"\n [selectedDevice]=\"selectedDevice\"\n (onSelected)=\"onSelectionChange($event)\"\n (onRowSelected)=\"addNewColumn($event)\"\n (onLoad)=\"onLoad($event)\"\n [container]=\"container\"\n class=\"bg-inherit\"\n >\n </c8y-asset-selector>\n\n <div class=\"p-relative p-b-64\" *ngIf=\"isLoading && columnIndex === i && !selectedDevice\">\n <c8y-loading></c8y-loading>\n </div>\n\n <div *ngIf=\"!column.children.length && !isLoading\" class=\"p-l-8 p-r-8\">\n <c8y-ui-empty-state\n *ngIf=\"!filterText; else noSearchResults\"\n [icon]=\"'folder-open'\"\n [title]=\"'No results to display.' | translate\"\n [subtitle]=\"'The selected asset has no children.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n <ng-template #noSearchResults>\n <c8y-ui-empty-state\n [icon]=\"'folder-open'\"\n [title]=\"'No results to display for the current filter.' | translate\"\n [subtitle]=\"'There are no assets matching the filter.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </ng-template>\n </div>\n </div>\n</div>\n" }]
|
|
150
150
|
}], ctorParameters: function () { return [{ type: i1.GroupNodeService }, { type: i2.InventoryService }, { type: i3.AssetSelectorService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { config: [{
|
|
151
151
|
type: Input
|
|
152
152
|
}], asset: [{
|
|
@@ -163,4 +163,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
|
163
163
|
}], container: [{
|
|
164
164
|
type: Input
|
|
165
165
|
}] } });
|
|
166
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlsbGVyLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vYXNzZXRzLW5hdmlnYXRvci9hc3NldC1zZWxlY3Rvci9taWxsZXItdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9hc3NldHMtbmF2aWdhdG9yL2Fzc2V0LXNlbGVjdG9yL21pbGxlci12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBK0IsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFeEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7Ozs7QUFhekMsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGlCQUFpQjtJQThDeEQsWUFDWSxnQkFBa0MsRUFDbEMsU0FBMkIsRUFDM0Isb0JBQTBDLEVBQzFDLEVBQXFCO1FBRS9CLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztRQUwvQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFqRGpDOztX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LENBQUMsQ0FBQztZQUNwQyxPQUFPO1NBQ1I7UUFDRCxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFO1lBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMvQixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQzs7Z0hBaEpVLG1CQUFtQjtvR0FBbkIsbUJBQW1CLHlOQVJuQjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDO1lBQ2xELEtBQUssRUFBRSxJQUFJO1NBQ1o7S0FDRiw4TEM3QkgsdWpEQTRDQTsyRkRiYSxtQkFBbUI7a0JBWC9CLFNBQVM7K0JBQ0UsMkJBQTJCLGFBRTFCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDOzRCQUNsRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjt5TUFNUSxNQUFNO3NCQUFkLEtBQUs7Z0JBSUcsS0FBSztzQkFBYixLQUFLO2dCQUlHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBSUcsUUFBUTtzQkFBaEIsS0FBSztnQkFJSSxVQUFVO3NCQUFuQixNQUFNO2dCQUt5QixpQkFBaUI7c0JBQWhELFNBQVM7dUJBQUMsbUJBQW1CO2dCQWNyQixTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSUlkZW50aWZpZWQsIElNYW5hZ2VkT2JqZWN0LCBJbnZlbnRvcnlTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQXNzZXRTZWxlY3RvclNlcnZpY2UgfSBmcm9tICcuL2Fzc2V0LXNlbGVjdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgR3JvdXBOb2RlU2VydmljZSB9IGZyb20gJy4vZ3JvdXAtbm9kZS5zZXJ2aWNlJztcbmltcG9ydCB7IEFzc2V0U2VsZWN0aW9uQ2hhbmdlRXZlbnQsIEFzc2V0U2VsZWN0b3JPcHRpb25zIH0gZnJvbSAnLi9hc3NldC1zZWxlY3Rvci5tb2RlbCc7XG5pbXBvcnQgeyBBc3NldFNlbGVjdG9yQmFzZSB9IGZyb20gJy4vYXNzZXQtc2VsZWN0b3ItYmFzZSc7XG5pbXBvcnQgeyBHcm91cE5vZGUgfSBmcm9tICcuL2dyb3VwLW5vZGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktYXNzZXQtc2VsZWN0b3ItbWlsbGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21pbGxlci12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBNaWxsZXJWaWV3Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIE1pbGxlclZpZXdDb21wb25lbnQgZXh0ZW5kcyBBc3NldFNlbGVjdG9yQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBDb25maWcgb2JqZWN0IGNvbnRhaW5pbmcgYWxsIG9wdGlvbnMgZm9yIHRoZSBhc3NldCBzZWxlY3Rvci5cbiAgICovXG4gIEBJbnB1dCgpIGNvbmZpZzogQXNzZXRTZWxlY3Rvck9wdGlvbnMgPSB7fTtcbiAgLyoqXG4gICAqIFRoZSBhc3NldCB0byB1c2UgYXMgcm9vdC5cbiAgICovXG4gIEBJbnB1dCgpIGFzc2V0OiBJSWRlbnRpZmllZCA9IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIFRoZSBzZWxlY3RlZCBkZXZpY2VzLlxuICAgKi9cbiAgQElucHV0KCkgc2VsZWN0ZWREZXZpY2U6IElNYW5hZ2VkT2JqZWN0ID0gdW5kZWZpbmVkO1xuICAvKipcbiAgICogVGhlIG5vZGUgdG8gdXNlIGFzIHJvb3QuIFlvdSBjYW4gZWl0aGVyIHNldCB0aGlzLCBvciB0aGUgYXNzZXQgdG8gc3RhcnQgZnJvbS5cbiAgICovXG4gIEBJbnB1dCgpIHJvb3ROb2RlOiBHcm91cE5vZGU7XG4gIC8qKlxuICAgKiBFbWl0cyBpZiB0aGUgc2VsZWN0aW9uIGNoYW5nZXNcbiAgICovXG4gIEBPdXRwdXQoKSBvblNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxBc3NldFNlbGVjdGlvbkNoYW5nZUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKCdtaWxsZXJWaWV3V3JhcHBlcicpIG1pbGxlclZpZXdXcmFwcGVyOiBFbGVtZW50UmVmO1xuICAvKipcbiAgICogVGhlIGNvbHVtbiBhcnJheSB3aWxsIGNvbnRhaW4gYWxsIGN1cnJlbnRseSBzZWxlY3RlZCBub2Rlc1xuICAgKiAgd2hpY2ggd2lsbCBmb3JtIHRoZSBtaWxsZXIgdmlldyBjb2x1bW5zIChvbmx5IG9uZSBwZXIgbGV2ZWwpLlxuICAgKi9cbiAgY29sdW1ucyA9IFtdO1xuICAvKipcbiAgICogVGhlIGN1cnJlbnQgZmlsdGVyIGFwcGxpZWQuIFVzZWQgZm9yIHRoZSBlbXB0eSBzdGF0ZSB0ZXh0IGluIHRoZSB2aWV3LlxuICAgKi9cbiAgZmlsdGVyVGV4dDogc3RyaW5nID0gJyc7XG4gIC8qKlxuICAgKiBJbmRleCBvZiB0aGUgY29sdW1uIHVzZWQgdG8gY2hlY2sgd2hlcmUgdG8gc2hvdyB0aGUgbG9hZGluZyBzdGF0ZS5cbiAgICovXG4gIGNvbHVtbkluZGV4OiBudW1iZXI7XG4gIEBJbnB1dCgpIGNvbnRhaW5lcjogJycgfCAnYm9keScgPSAnYm9keSc7XG5cbiAgY29uZmlnT3B0aW9uc0RlZmF1bHQ6IEFzc2V0U2VsZWN0b3JPcHRpb25zID0ge1xuICAgIHZpZXc6ICdtaWxsZXInLFxuICAgIHNpbmdsZUNvbHVtbjogZmFsc2VcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgZ3JvdXBOb2RlU2VydmljZTogR3JvdXBOb2RlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgaW52ZW50b3J5OiBJbnZlbnRvcnlTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBhc3NldFNlbGVjdG9yU2VydmljZTogQXNzZXRTZWxlY3RvclNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGNkOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICBzdXBlcihncm91cE5vZGVTZXJ2aWNlLCBpbnZlbnRvcnksIGFzc2V0U2VsZWN0b3JTZXJ2aWNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmNvbmZpZyA9IHsgLi4udGhpcy5jb25maWdPcHRpb25zRGVmYXVsdCwgLi4udGhpcy5jb25maWcgfTtcblxuICAgIGNvbnN0IGlzQW55Tm9kZURlZmluZWQgPVxuICAgICAgIXRoaXMucm9vdE5vZGUgJiYgKCF0aGlzLmFzc2V0IHx8IE9iamVjdC5rZXlzKHRoaXMuYXNzZXQpLmxlbmd0aCA9PT0gMCk7XG4gICAgaWYgKGlzQW55Tm9kZURlZmluZWQpIHtcbiAgICAgIHRoaXMucm9vdE5vZGUgPSB0aGlzLmNyZWF0ZURlZmF1bHRSb290Tm9kZSgpO1xuICAgIH1cblxuICAgIGNvbnN0IGlzT25seUFzc2V0Tm9kZURlZmluZWQgPSB0aGlzLmFzc2V0ICYmIE9iamVjdC5rZXlzKHRoaXMuYXNzZXQpLmxlbmd0aCAhPT0gMDtcbiAgICBpZiAoaXNPbmx5QXNzZXROb2RlRGVmaW5lZCkge1xuICAgICAgdGhpcy5yb290Tm9kZSA9IGF3YWl0IHRoaXMuY3JlYXRlTWFuYWdlZE9iamVjdFJvb3ROb2RlKHRoaXMuYXNzZXQpO1xuICAgICAgdGhpcy5yb290Tm9kZS5jbGljaygpO1xuICAgIH1cblxuICAgIHRoaXMuY29sdW1ucy5wdXNoKHRoaXMucm9vdE5vZGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGFzeW5jIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcy5hc3NldCAmJiBjaGFuZ2VzLmFzc2V0LmN1cnJlbnRWYWx1ZSAmJiAhdGhpcy5hc3NldCkge1xuICAgICAgdGhpcy5jb2x1bW5zID0gW107XG4gICAgICB0aGlzLmNvbHVtbnMucHVzaChhd2FpdCB0aGlzLmNyZWF0ZU1hbmFnZWRPYmplY3RSb290Tm9kZShjaGFuZ2VzLmFzc2V0LmN1cnJlbnRWYWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgY29sdW1uIHdpdGggdGhlIHNlbGVjdGVkIG5vZGUgYXMgcm9vdC5cbiAgICovXG4gIGFkZE5ld0NvbHVtbihub2RlKTogdm9pZCB7XG4gICAgY29uc3QgbGV2ZWwgPSBub2RlLmluZGV4O1xuICAgIHRoaXMuc2VsZWN0ZWREZXZpY2UgPSBub2RlLnNlbGVjdGVkRGV2aWNlcyB8fCB1bmRlZmluZWQ7XG4gICAgaWYgKG5vZGUucm9vdCkge1xuICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiAodGhpcy5taWxsZXJWaWV3V3JhcHBlci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSAwKSk7XG4gICAgICB0aGlzLmNvbHVtbnMubGVuZ3RoID0gMTtcbiAgICB9XG5cbiAgICBjb25zdCBpc0xldmVsTG93ZXJUaGFuQ29sdW1uTnVtYmVyID0gbGV2ZWwgPCB0aGlzLmNvbHVtbnMubGVuZ3RoIC0gMTtcbiAgICBsZXQgZ29CYWNrID0gZmFsc2U7XG4gICAgaWYgKGlzTGV2ZWxMb3dlclRoYW5Db2x1bW5OdW1iZXIpIHtcbiAgICAgIHRoaXMuY29sdW1ucy5sZW5ndGggPSBsZXZlbCArIDE7XG4gICAgICBnb0JhY2sgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoIW5vZGUucm9vdCAmJiAhKHRoaXMuY29uZmlnLnNpbmdsZUNvbHVtbiAmJiBnb0JhY2spKSB7XG4gICAgICB0aGlzLmNvbHVtbnMucHVzaChub2RlLm5vZGVDb3B5KTtcbiAgICAgIGNvbnN0IGNvbCA9IHRoaXM7XG4gICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IChjb2wubWlsbGVyVmlld1dyYXBwZXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gNTAwMDApKTtcbiAgICAgIC8qIHRyaWdnZXJlZCB0d2ljZSB3aXRoIGEgc21hbGwgZGVsYXkgYXMgYSB3b3JrYXJvdW5kIGZvciBkZWFsaW5nIHdpdGggU2FmYXJpJ3MgYnVnOlxuICAgICAgIFwiU2FmYXJpIGRvZXNu4oCZdCB1cGRhdGUgdGhlIHNjcm9sbFRvcCAvIHNjcm9sbExlZnQgcHJvcGVydGllcyBvZiBhbiBlbGVtZW50IGl0cyBhbnkgb2YgaXRzIFxuICAgICAgICBhbmNlc3RvcnMgaGFzIG92ZXJmbG93IHNldCB0byBoaWRkZW4uXCIgXG4gICAgICAgIFRoaXMgd2FzIHJlcG9ydGVkIG9uIGN1c3RvbWVyIHBvcnRhbCB3aXRoIHRoZSB0aWNrZXQgU0ktNDg4NTczXG4gICAgICAqL1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoXG4gICAgICAgICAgKCkgPT4gKGNvbC5taWxsZXJWaWV3V3JhcHBlci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSA1NTAwMClcbiAgICAgICAgKTtcbiAgICAgIH0sIDcwMCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoYW5nZSB0aGUgbG9hZGluZyBzdGF0ZSBvZiB0aGUgYXNzZXQgc2VsZWN0b3IuXG4gICAqL1xuICBvbkxvYWQoZXZlbnQpIHtcbiAgICB0aGlzLmlzTG9hZGluZyA9IGV2ZW50LmxvYWRpbmc7XG4gICAgdGhpcy5maWx0ZXJUZXh0ID0gZXZlbnQuZmlsdGVyVGV4dDtcbiAgICB0aGlzLmNvbHVtbkluZGV4ID0gZXZlbnQuaW5kZXg7XG4gICAgdGhpcy5zZWxlY3RlZERldmljZSA9IGV2ZW50LnNlbGVjdGVkRGV2aWNlO1xuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCB0aGUgc2VsZWN0ZWQgbm9kZSB0byB0aGUgc2VsZWN0ZWQgYXJyYXkuXG4gICAqL1xuICBvblNlbGVjdGlvbkNoYW5nZShldmVudDogQXNzZXRTZWxlY3Rpb25DaGFuZ2VFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jb25maWcubXVsdGkpIHtcbiAgICAgIHRoaXMuZGVzZWxlY3RBbGwoZXZlbnQuY2hhbmdlLml0ZW0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZXZlbnQuY2hhbmdlLmlzU2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0KGV2ZW50LmNoYW5nZS5pdGVtKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kZXNlbGVjdChldmVudC5jaGFuZ2UuaXRlbSk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgI21pbGxlclZpZXdXcmFwcGVyXG4gIGNsYXNzPVwibWlsbGVyLXZpZXctd3JhcHBlclwiXG4gIFtuZ0NsYXNzXT1cInsgJ3NpbmdsZS1jb2x1bW4nOiBjb25maWcuc2luZ2xlQ29sdW1uIH1cIlxuPlxuICA8ZGl2ICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uczsgaW5kZXggYXMgaVwiIGNsYXNzPVwibWlsbGVyLWNvbHVtbiBiZy1pbmhlcml0XCI+XG4gICAgPGM4eS1hc3NldC1zZWxlY3RvclxuICAgICAgW2NvbmZpZ109XCJjb25maWdcIlxuICAgICAgW2luZGV4XT1cImlcIlxuICAgICAgW2FjdGl2ZV09XCJjb2x1bW5zW2kgKyAxXVwiXG4gICAgICBbcm9vdE5vZGVdPVwiY29sdW1uXCJcbiAgICAgIFtzZWxlY3RlZEl0ZW1zXT1cInNlbGVjdGVkIHx8IFtdXCJcbiAgICAgIFtzZWxlY3RlZERldmljZV09XCJzZWxlY3RlZERldmljZVwiXG4gICAgICAob25TZWxlY3RlZCk9XCJvblNlbGVjdGlvbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgIChvblJvd1NlbGVjdGVkKT1cImFkZE5ld0NvbHVtbigkZXZlbnQpXCJcbiAgICAgIChvbkxvYWQpPVwib25Mb2FkKCRldmVudClcIlxuICAgICAgW2NvbnRhaW5lcl09XCJjb250YWluZXJcIlxuICAgICAgY2xhc3M9XCJiZy1pbmhlcml0IHAtdC00XCJcbiAgICA+XG4gICAgPC9jOHktYXNzZXQtc2VsZWN0b3I+XG5cbiAgICA8ZGl2IGNsYXNzPVwicC1yZWxhdGl2ZSBwLWItNjRcIiAqbmdJZj1cImlzTG9hZGluZyAmJiBjb2x1bW5JbmRleCA9PT0gaSAmJiAhc2VsZWN0ZWREZXZpY2VcIj5cbiAgICAgIDxjOHktbG9hZGluZz48L2M4eS1sb2FkaW5nPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cIiFjb2x1bW4uY2hpbGRyZW4ubGVuZ3RoICYmICFpc0xvYWRpbmdcIiBjbGFzcz1cInAtbC04IHAtci04XCI+XG4gICAgICA8Yzh5LXVpLWVtcHR5LXN0YXRlXG4gICAgICAgICpuZ0lmPVwiIWZpbHRlclRleHQ7IGVsc2Ugbm9TZWFyY2hSZXN1bHRzXCJcbiAgICAgICAgW2ljb25dPVwiJ2ZvbGRlci1vcGVuJ1wiXG4gICAgICAgIFt0aXRsZV09XCInTm8gcmVzdWx0cyB0byBkaXNwbGF5LicgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbc3VidGl0bGVdPVwiJ1RoZSBzZWxlY3RlZCBhc3NldCBoYXMgbm8gY2hpbGRyZW4uJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtob3Jpem9udGFsXT1cInRydWVcIlxuICAgICAgPjwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuICAgICAgPG5nLXRlbXBsYXRlICNub1NlYXJjaFJlc3VsdHM+XG4gICAgICAgIDxjOHktdWktZW1wdHktc3RhdGVcbiAgICAgICAgICBbaWNvbl09XCInZm9sZGVyLW9wZW4nXCJcbiAgICAgICAgICBbdGl0bGVdPVwiJ05vIHJlc3VsdHMgdG8gZGlzcGxheSBmb3IgdGhlIGN1cnJlbnQgZmlsdGVyLicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFtzdWJ0aXRsZV09XCInVGhlcmUgYXJlIG5vIGFzc2V0cyBtYXRjaGluZyB0aGUgZmlsdGVyLicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFtob3Jpem9udGFsXT1cInRydWVcIlxuICAgICAgICA+PC9jOHktdWktZW1wdHktc3RhdGU+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
166
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlsbGVyLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vYXNzZXRzLW5hdmlnYXRvci9hc3NldC1zZWxlY3Rvci9taWxsZXItdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9hc3NldHMtbmF2aWdhdG9yL2Fzc2V0LXNlbGVjdG9yL21pbGxlci12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBK0IsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFeEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7Ozs7QUFhekMsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGlCQUFpQjtJQThDeEQsWUFDWSxnQkFBa0MsRUFDbEMsU0FBMkIsRUFDM0Isb0JBQTBDLEVBQzFDLEVBQXFCO1FBRS9CLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztRQUwvQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFqRGpDOztX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LENBQUMsQ0FBQztZQUNwQyxPQUFPO1NBQ1I7UUFDRCxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFO1lBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMvQixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQzs7Z0hBaEpVLG1CQUFtQjtvR0FBbkIsbUJBQW1CLHlOQVJuQjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDO1lBQ2xELEtBQUssRUFBRSxJQUFJO1NBQ1o7S0FDRiw4TEM3QkgsaWpEQTRDQTsyRkRiYSxtQkFBbUI7a0JBWC9CLFNBQVM7K0JBQ0UsMkJBQTJCLGFBRTFCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDOzRCQUNsRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjt5TUFNUSxNQUFNO3NCQUFkLEtBQUs7Z0JBSUcsS0FBSztzQkFBYixLQUFLO2dCQUlHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBSUcsUUFBUTtzQkFBaEIsS0FBSztnQkFJSSxVQUFVO3NCQUFuQixNQUFNO2dCQUt5QixpQkFBaUI7c0JBQWhELFNBQVM7dUJBQUMsbUJBQW1CO2dCQWNyQixTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSUlkZW50aWZpZWQsIElNYW5hZ2VkT2JqZWN0LCBJbnZlbnRvcnlTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQXNzZXRTZWxlY3RvclNlcnZpY2UgfSBmcm9tICcuL2Fzc2V0LXNlbGVjdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgR3JvdXBOb2RlU2VydmljZSB9IGZyb20gJy4vZ3JvdXAtbm9kZS5zZXJ2aWNlJztcbmltcG9ydCB7IEFzc2V0U2VsZWN0aW9uQ2hhbmdlRXZlbnQsIEFzc2V0U2VsZWN0b3JPcHRpb25zIH0gZnJvbSAnLi9hc3NldC1zZWxlY3Rvci5tb2RlbCc7XG5pbXBvcnQgeyBBc3NldFNlbGVjdG9yQmFzZSB9IGZyb20gJy4vYXNzZXQtc2VsZWN0b3ItYmFzZSc7XG5pbXBvcnQgeyBHcm91cE5vZGUgfSBmcm9tICcuL2dyb3VwLW5vZGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktYXNzZXQtc2VsZWN0b3ItbWlsbGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21pbGxlci12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBNaWxsZXJWaWV3Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIE1pbGxlclZpZXdDb21wb25lbnQgZXh0ZW5kcyBBc3NldFNlbGVjdG9yQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBDb25maWcgb2JqZWN0IGNvbnRhaW5pbmcgYWxsIG9wdGlvbnMgZm9yIHRoZSBhc3NldCBzZWxlY3Rvci5cbiAgICovXG4gIEBJbnB1dCgpIGNvbmZpZzogQXNzZXRTZWxlY3Rvck9wdGlvbnMgPSB7fTtcbiAgLyoqXG4gICAqIFRoZSBhc3NldCB0byB1c2UgYXMgcm9vdC5cbiAgICovXG4gIEBJbnB1dCgpIGFzc2V0OiBJSWRlbnRpZmllZCA9IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIFRoZSBzZWxlY3RlZCBkZXZpY2VzLlxuICAgKi9cbiAgQElucHV0KCkgc2VsZWN0ZWREZXZpY2U6IElNYW5hZ2VkT2JqZWN0ID0gdW5kZWZpbmVkO1xuICAvKipcbiAgICogVGhlIG5vZGUgdG8gdXNlIGFzIHJvb3QuIFlvdSBjYW4gZWl0aGVyIHNldCB0aGlzLCBvciB0aGUgYXNzZXQgdG8gc3RhcnQgZnJvbS5cbiAgICovXG4gIEBJbnB1dCgpIHJvb3ROb2RlOiBHcm91cE5vZGU7XG4gIC8qKlxuICAgKiBFbWl0cyBpZiB0aGUgc2VsZWN0aW9uIGNoYW5nZXNcbiAgICovXG4gIEBPdXRwdXQoKSBvblNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxBc3NldFNlbGVjdGlvbkNoYW5nZUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKCdtaWxsZXJWaWV3V3JhcHBlcicpIG1pbGxlclZpZXdXcmFwcGVyOiBFbGVtZW50UmVmO1xuICAvKipcbiAgICogVGhlIGNvbHVtbiBhcnJheSB3aWxsIGNvbnRhaW4gYWxsIGN1cnJlbnRseSBzZWxlY3RlZCBub2Rlc1xuICAgKiAgd2hpY2ggd2lsbCBmb3JtIHRoZSBtaWxsZXIgdmlldyBjb2x1bW5zIChvbmx5IG9uZSBwZXIgbGV2ZWwpLlxuICAgKi9cbiAgY29sdW1ucyA9IFtdO1xuICAvKipcbiAgICogVGhlIGN1cnJlbnQgZmlsdGVyIGFwcGxpZWQuIFVzZWQgZm9yIHRoZSBlbXB0eSBzdGF0ZSB0ZXh0IGluIHRoZSB2aWV3LlxuICAgKi9cbiAgZmlsdGVyVGV4dDogc3RyaW5nID0gJyc7XG4gIC8qKlxuICAgKiBJbmRleCBvZiB0aGUgY29sdW1uIHVzZWQgdG8gY2hlY2sgd2hlcmUgdG8gc2hvdyB0aGUgbG9hZGluZyBzdGF0ZS5cbiAgICovXG4gIGNvbHVtbkluZGV4OiBudW1iZXI7XG4gIEBJbnB1dCgpIGNvbnRhaW5lcjogJycgfCAnYm9keScgPSAnYm9keSc7XG5cbiAgY29uZmlnT3B0aW9uc0RlZmF1bHQ6IEFzc2V0U2VsZWN0b3JPcHRpb25zID0ge1xuICAgIHZpZXc6ICdtaWxsZXInLFxuICAgIHNpbmdsZUNvbHVtbjogZmFsc2VcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgZ3JvdXBOb2RlU2VydmljZTogR3JvdXBOb2RlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgaW52ZW50b3J5OiBJbnZlbnRvcnlTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBhc3NldFNlbGVjdG9yU2VydmljZTogQXNzZXRTZWxlY3RvclNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGNkOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICBzdXBlcihncm91cE5vZGVTZXJ2aWNlLCBpbnZlbnRvcnksIGFzc2V0U2VsZWN0b3JTZXJ2aWNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmNvbmZpZyA9IHsgLi4udGhpcy5jb25maWdPcHRpb25zRGVmYXVsdCwgLi4udGhpcy5jb25maWcgfTtcblxuICAgIGNvbnN0IGlzQW55Tm9kZURlZmluZWQgPVxuICAgICAgIXRoaXMucm9vdE5vZGUgJiYgKCF0aGlzLmFzc2V0IHx8IE9iamVjdC5rZXlzKHRoaXMuYXNzZXQpLmxlbmd0aCA9PT0gMCk7XG4gICAgaWYgKGlzQW55Tm9kZURlZmluZWQpIHtcbiAgICAgIHRoaXMucm9vdE5vZGUgPSB0aGlzLmNyZWF0ZURlZmF1bHRSb290Tm9kZSgpO1xuICAgIH1cblxuICAgIGNvbnN0IGlzT25seUFzc2V0Tm9kZURlZmluZWQgPSB0aGlzLmFzc2V0ICYmIE9iamVjdC5rZXlzKHRoaXMuYXNzZXQpLmxlbmd0aCAhPT0gMDtcbiAgICBpZiAoaXNPbmx5QXNzZXROb2RlRGVmaW5lZCkge1xuICAgICAgdGhpcy5yb290Tm9kZSA9IGF3YWl0IHRoaXMuY3JlYXRlTWFuYWdlZE9iamVjdFJvb3ROb2RlKHRoaXMuYXNzZXQpO1xuICAgICAgdGhpcy5yb290Tm9kZS5jbGljaygpO1xuICAgIH1cblxuICAgIHRoaXMuY29sdW1ucy5wdXNoKHRoaXMucm9vdE5vZGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGFzeW5jIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcy5hc3NldCAmJiBjaGFuZ2VzLmFzc2V0LmN1cnJlbnRWYWx1ZSAmJiAhdGhpcy5hc3NldCkge1xuICAgICAgdGhpcy5jb2x1bW5zID0gW107XG4gICAgICB0aGlzLmNvbHVtbnMucHVzaChhd2FpdCB0aGlzLmNyZWF0ZU1hbmFnZWRPYmplY3RSb290Tm9kZShjaGFuZ2VzLmFzc2V0LmN1cnJlbnRWYWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgY29sdW1uIHdpdGggdGhlIHNlbGVjdGVkIG5vZGUgYXMgcm9vdC5cbiAgICovXG4gIGFkZE5ld0NvbHVtbihub2RlKTogdm9pZCB7XG4gICAgY29uc3QgbGV2ZWwgPSBub2RlLmluZGV4O1xuICAgIHRoaXMuc2VsZWN0ZWREZXZpY2UgPSBub2RlLnNlbGVjdGVkRGV2aWNlcyB8fCB1bmRlZmluZWQ7XG4gICAgaWYgKG5vZGUucm9vdCkge1xuICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiAodGhpcy5taWxsZXJWaWV3V3JhcHBlci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSAwKSk7XG4gICAgICB0aGlzLmNvbHVtbnMubGVuZ3RoID0gMTtcbiAgICB9XG5cbiAgICBjb25zdCBpc0xldmVsTG93ZXJUaGFuQ29sdW1uTnVtYmVyID0gbGV2ZWwgPCB0aGlzLmNvbHVtbnMubGVuZ3RoIC0gMTtcbiAgICBsZXQgZ29CYWNrID0gZmFsc2U7XG4gICAgaWYgKGlzTGV2ZWxMb3dlclRoYW5Db2x1bW5OdW1iZXIpIHtcbiAgICAgIHRoaXMuY29sdW1ucy5sZW5ndGggPSBsZXZlbCArIDE7XG4gICAgICBnb0JhY2sgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoIW5vZGUucm9vdCAmJiAhKHRoaXMuY29uZmlnLnNpbmdsZUNvbHVtbiAmJiBnb0JhY2spKSB7XG4gICAgICB0aGlzLmNvbHVtbnMucHVzaChub2RlLm5vZGVDb3B5KTtcbiAgICAgIGNvbnN0IGNvbCA9IHRoaXM7XG4gICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IChjb2wubWlsbGVyVmlld1dyYXBwZXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gNTAwMDApKTtcbiAgICAgIC8qIHRyaWdnZXJlZCB0d2ljZSB3aXRoIGEgc21hbGwgZGVsYXkgYXMgYSB3b3JrYXJvdW5kIGZvciBkZWFsaW5nIHdpdGggU2FmYXJpJ3MgYnVnOlxuICAgICAgIFwiU2FmYXJpIGRvZXNu4oCZdCB1cGRhdGUgdGhlIHNjcm9sbFRvcCAvIHNjcm9sbExlZnQgcHJvcGVydGllcyBvZiBhbiBlbGVtZW50IGl0cyBhbnkgb2YgaXRzIFxuICAgICAgICBhbmNlc3RvcnMgaGFzIG92ZXJmbG93IHNldCB0byBoaWRkZW4uXCIgXG4gICAgICAgIFRoaXMgd2FzIHJlcG9ydGVkIG9uIGN1c3RvbWVyIHBvcnRhbCB3aXRoIHRoZSB0aWNrZXQgU0ktNDg4NTczXG4gICAgICAqL1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoXG4gICAgICAgICAgKCkgPT4gKGNvbC5taWxsZXJWaWV3V3JhcHBlci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSA1NTAwMClcbiAgICAgICAgKTtcbiAgICAgIH0sIDcwMCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoYW5nZSB0aGUgbG9hZGluZyBzdGF0ZSBvZiB0aGUgYXNzZXQgc2VsZWN0b3IuXG4gICAqL1xuICBvbkxvYWQoZXZlbnQpIHtcbiAgICB0aGlzLmlzTG9hZGluZyA9IGV2ZW50LmxvYWRpbmc7XG4gICAgdGhpcy5maWx0ZXJUZXh0ID0gZXZlbnQuZmlsdGVyVGV4dDtcbiAgICB0aGlzLmNvbHVtbkluZGV4ID0gZXZlbnQuaW5kZXg7XG4gICAgdGhpcy5zZWxlY3RlZERldmljZSA9IGV2ZW50LnNlbGVjdGVkRGV2aWNlO1xuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCB0aGUgc2VsZWN0ZWQgbm9kZSB0byB0aGUgc2VsZWN0ZWQgYXJyYXkuXG4gICAqL1xuICBvblNlbGVjdGlvbkNoYW5nZShldmVudDogQXNzZXRTZWxlY3Rpb25DaGFuZ2VFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jb25maWcubXVsdGkpIHtcbiAgICAgIHRoaXMuZGVzZWxlY3RBbGwoZXZlbnQuY2hhbmdlLml0ZW0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZXZlbnQuY2hhbmdlLmlzU2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0KGV2ZW50LmNoYW5nZS5pdGVtKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kZXNlbGVjdChldmVudC5jaGFuZ2UuaXRlbSk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgI21pbGxlclZpZXdXcmFwcGVyXG4gIGNsYXNzPVwibWlsbGVyLXZpZXctd3JhcHBlclwiXG4gIFtuZ0NsYXNzXT1cInsgJ3NpbmdsZS1jb2x1bW4nOiBjb25maWcuc2luZ2xlQ29sdW1uIH1cIlxuPlxuICA8ZGl2ICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uczsgaW5kZXggYXMgaVwiIGNsYXNzPVwibWlsbGVyLWNvbHVtbiBiZy1pbmhlcml0XCI+XG4gICAgPGM4eS1hc3NldC1zZWxlY3RvclxuICAgICAgW2NvbmZpZ109XCJjb25maWdcIlxuICAgICAgW2luZGV4XT1cImlcIlxuICAgICAgW2FjdGl2ZV09XCJjb2x1bW5zW2kgKyAxXVwiXG4gICAgICBbcm9vdE5vZGVdPVwiY29sdW1uXCJcbiAgICAgIFtzZWxlY3RlZEl0ZW1zXT1cInNlbGVjdGVkIHx8IFtdXCJcbiAgICAgIFtzZWxlY3RlZERldmljZV09XCJzZWxlY3RlZERldmljZVwiXG4gICAgICAob25TZWxlY3RlZCk9XCJvblNlbGVjdGlvbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgIChvblJvd1NlbGVjdGVkKT1cImFkZE5ld0NvbHVtbigkZXZlbnQpXCJcbiAgICAgIChvbkxvYWQpPVwib25Mb2FkKCRldmVudClcIlxuICAgICAgW2NvbnRhaW5lcl09XCJjb250YWluZXJcIlxuICAgICAgY2xhc3M9XCJiZy1pbmhlcml0XCJcbiAgICA+XG4gICAgPC9jOHktYXNzZXQtc2VsZWN0b3I+XG5cbiAgICA8ZGl2IGNsYXNzPVwicC1yZWxhdGl2ZSBwLWItNjRcIiAqbmdJZj1cImlzTG9hZGluZyAmJiBjb2x1bW5JbmRleCA9PT0gaSAmJiAhc2VsZWN0ZWREZXZpY2VcIj5cbiAgICAgIDxjOHktbG9hZGluZz48L2M4eS1sb2FkaW5nPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cIiFjb2x1bW4uY2hpbGRyZW4ubGVuZ3RoICYmICFpc0xvYWRpbmdcIiBjbGFzcz1cInAtbC04IHAtci04XCI+XG4gICAgICA8Yzh5LXVpLWVtcHR5LXN0YXRlXG4gICAgICAgICpuZ0lmPVwiIWZpbHRlclRleHQ7IGVsc2Ugbm9TZWFyY2hSZXN1bHRzXCJcbiAgICAgICAgW2ljb25dPVwiJ2ZvbGRlci1vcGVuJ1wiXG4gICAgICAgIFt0aXRsZV09XCInTm8gcmVzdWx0cyB0byBkaXNwbGF5LicgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbc3VidGl0bGVdPVwiJ1RoZSBzZWxlY3RlZCBhc3NldCBoYXMgbm8gY2hpbGRyZW4uJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtob3Jpem9udGFsXT1cInRydWVcIlxuICAgICAgPjwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuICAgICAgPG5nLXRlbXBsYXRlICNub1NlYXJjaFJlc3VsdHM+XG4gICAgICAgIDxjOHktdWktZW1wdHktc3RhdGVcbiAgICAgICAgICBbaWNvbl09XCInZm9sZGVyLW9wZW4nXCJcbiAgICAgICAgICBbdGl0bGVdPVwiJ05vIHJlc3VsdHMgdG8gZGlzcGxheSBmb3IgdGhlIGN1cnJlbnQgZmlsdGVyLicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFtzdWJ0aXRsZV09XCInVGhlcmUgYXJlIG5vIGFzc2V0cyBtYXRjaGluZyB0aGUgZmlsdGVyLicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFtob3Jpem9udGFsXT1cInRydWVcIlxuICAgICAgICA+PC9jOHktdWktZW1wdHktc3RhdGU+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -224,12 +224,12 @@ export class WidgetConfigComponent {
|
|
|
224
224
|
}
|
|
225
225
|
}
|
|
226
226
|
WidgetConfigComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: WidgetConfigComponent, deps: [{ token: i1.WidgetService }, { token: i2.BsModalRef }, { token: i3.InventoryService }, { token: i4.ContextDashboardService }], target: i0.ɵɵFactoryTarget.Component });
|
|
227
|
-
WidgetConfigComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: WidgetConfigComponent, selector: "c8y-widget-config", viewQueries: [{ propertyName: "dynamicComponent", first: true, predicate: ["config"], descendants: true }], ngImport: i0, template: "<div class=\"modal-header separator\">\n <div id=\"modal-title\" class=\"h3\" title=\"{{ 'Add widget' | translate }}\" *ngIf=\"!current\" translate>Add widget</div>\n <div id=\"modal-title\" class=\"h3\" title=\"{{ 'Edit widget' | translate }}\" *ngIf=\"current\" translate>Edit widget</div>\n</div>\n<form #configForm=\"ngForm\" name=\"form\">\n <div class=\"c8y-modal-tabs\" id=\"modal-body\">\n <div class=\"tabContainer\">\n <ul class=\"nav nav-tabs nav-tabsc8y p-l-24\">\n <li [class.active]=\"mode === 'select'\">\n <button\n title=\"{{ 'Select widget' | translate }}\"\n type=\"button\"\n class=\"btn\"\n (click)=\"changeMode('select'); (false)\"\n >\n <i c8yIcon=\"th-large\"></i>\n <span translate>Select widget</span>\n </button>\n </li>\n <li [class.active]=\"mode === 'config'\">\n <button\n title=\"{{ 'Configuration' | translate }}\"\n type=\"button\"\n class=\"btn\"\n [disabled]=\"!selected\"\n (click)=\"changeMode('config'); (false)\"\n >\n <i c8yIcon=\"cog\"></i>\n <span translate>Configuration</span>\n </button>\n </li>\n <li [class.active]=\"mode === 'style'\">\n <button\n title=\"{{ 'Appearance' | translate }}\"\n type=\"button\"\n class=\"btn\"\n [disabled]=\"!selected\"\n (click)=\"changeMode('style'); (false)\"\n >\n <i c8yIcon=\"paint-brush\"></i>\n <span translate>Appearance</span>\n </button>\n </li>\n </ul>\n </div>\n </div>\n\n <div class=\"modal-inner-scroll\">\n <div\n *ngIf=\"mode === 'select'\"\n class=\"bg-level-0 p-l-24 p-r-24 p-t-8 p-b-8 sticky-header-top-0\"\n style=\"z-index: 2\"\n >\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <div class=\"input-group input-group-search\">\n <input\n [attr.aria-label]=\"'Search' | translate\"\n class=\"form-control\"\n placeholder=\"{{ 'Search\u2026' | translate }}\"\n type=\"text\"\n [(ngModel)]=\"searchTerm\"\n [ngModelOptions]=\"{ standalone: true }\"\n (keydown)=\"searchChange$.next($event)\"\n />\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Search' | translate }}\"\n type=\"button\"\n (click)=\"resetSearch()\"\n >\n <i [c8yIcon]=\"searchTerm.length === 0 ? 'search' : 'close'\"></i>\n </button>\n </span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"modal-body bg-level-2\" *ngIf=\"mode === 'select'\">\n <div class=\"card-group card-select m-b-0\">\n <div\n class=\"col-md-3 col-sm-4 col-xs-6\"\n *ngFor=\"let cmp of searchResult || components\"\n title=\"{{ cmp.description | translate }}\"\n >\n <div class=\"card p-8\" [class.active]=\"selected === cmp\" (click)=\"select(cmp)\">\n <div class=\"text-center p-8 m-b-8 d-col flex-center bg-level-2\" role=\"none\">\n <ng-container *ngIf=\"!cmp.previewImage; else previewImage\">\n <div class=\"h1\"><i c8yIcon=\"file-image-o\"></i></div>\n <small translate>Preview not available</small>\n </ng-container>\n <ng-template #previewImage>\n <img class=\"img-responsive\" alt=\"\" [src]=\"cmp.previewImage\" />\n </ng-template>\n </div>\n <p class=\"card-title text-truncate\">\n <c8y-highlight\n text=\"{{ cmp.label | translate }}\"\n [pattern]=\"searchTerm\"\n ></c8y-highlight>\n </p>\n </div>\n </div>\n\n <div class=\"c8y-empty-state text-center\" *ngIf=\"searchResult && searchResult.length === 0\">\n <div class=\"h1\" c8yIcon=\"search\"></div>\n <h3 translate>No widgets found.</h3>\n <div class=\"d-flex\">\n <p translate class=\"m-r-8\">Rephrase your search term.</p>\n <button\n title=\"{{ 'Reset search' | translate }}\"\n class=\"btn btn-primary\"\n type=\"button\"\n (click)=\"resetSearch()\"\n >\n {{ 'Reset search' | translate }}\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- The following is intentional set to hidden to allow the ViewChild ref in the controller -->\n <div *ngIf=\"selected\" [hidden]=\"mode !== 'config'\" style=\"max-height: calc(100vh - 290px)\">\n <div class=\"p-t-16 flex-no-grow\">\n <div class=\"row\">\n <div class=\"col-sm-4\">\n <div class=\"p-l-24\">\n <h4 class=\"text-left text-medium\">\n {{ selected.label | translate }}\n </h4>\n <p>\n {{ selected.description | translate }}\n </p>\n </div>\n </div>\n <div class=\"col-sm-8\">\n <div class=\"p-r-24\">\n <c8y-form-group>\n <label for=\"widgetTitle\" translate>Title</label>\n <input\n id=\"widgetTitle\"\n [(ngModel)]=\"selected.data.title\"\n type=\"text\"\n name=\"title\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} {{ componentLabel | translate }}\"\n required\n />\n </c8y-form-group>\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"row flex-grow separator-top\"\n [ngClass]=\"{ 'd-flex m-l-0': widgetConfig.options || hasConfig() }\"\n >\n <div\n *ngIf=\"!widgetConfig.settings?.noDeviceTarget\"\n class=\"a-i-stretch\"\n [ngClass]=\"{\n 'bg-level-1 col-sm-4 p-l-0 p-r-0': hasConfig(),\n 'bg-level-0 col-sm-12': !hasConfig()\n }\"\n style=\"height: 360px\"\n >\n <div class=\"p-l-16 fit-h bg-inherit\" [ngClass]=\"{ 'p-r-16': !hasConfig() }\">\n <c8y-asset-selector-miller\n (onSelected)=\"selectionChanged($event)\"\n [config]=\"{\n view: 'miller',\n groupsSelectable: this.widgetConfig.settings?.groupsSelectable,\n showChildDevices: true,\n columnHeaders: true,\n showUnassignedDevices: true,\n search: !this.widgetConfig.settings.context?.additionParents,\n showFilter: true,\n singleColumn: !!this.hasConfig()\n }\"\n [asset]=\"widgetConfig.settings?.context\"\n [selectedDevice]=\"selectedDevice\"\n class=\"bg-inherit p-relative\"\n ></c8y-asset-selector-miller>\n </div>\n </div>\n <div\n [ngClass]=\"{\n 'col-sm-8': !widgetConfig.settings?.noDeviceTarget,\n 'col-sm-12 p-l-32 p-r-8': widgetConfig.settings?.noDeviceTarget\n }\"\n >\n <c8y-dynamic-component\n class=\"d-block p-t-8 p-r-24\"\n [componentId]=\"selected.id\"\n mode=\"config\"\n [config]=\"widgetConfig\"\n [notFoundError]=\"false\"\n #config\n ></c8y-dynamic-component>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"mode === 'style'\" class=\"modal-body p-t-0\" style=\"min-height: calc(100vh - 290px)\">\n <div class=\"row\">\n <div class=\"col-xs-6\">\n <c8y-appearance-settings\n [(themeClass)]=\"styling.contentClass\"\n [(headerClass)]=\"styling.headerClass\"\n [possibleStylingTheme]=\"possibleStyling.WIDGET_CONTENT_CLASSES\"\n [possibleStylingHeader]=\"possibleStyling.WIDGET_HEADER_CLASSES\"\n [defaultThemeClass]=\"defaultStyling.contentClass\"\n [defaultHeaderClass]=\"defaultStyling.headerClass\"\n ></c8y-appearance-settings>\n </div>\n <div class=\"col-xs-6 sticky-header-top-0\">\n <c8y-widget-preview [previewClasses]=\"getStyle(true)\"></c8y-widget-preview>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n class=\"btn btn-default\"\n (click)=\"close()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary\"\n (click)=\"save()\"\n [disabled]=\"\n contextDashboardService.formDisabled || configForm.invalid || checkIfDeviceRequired()\n \"\n c8yProductExperience\n [actionName]=\"current ? 'editWidget' : 'createWidget'\"\n [actionData]=\"{ widgetName: selected && selected.id }\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i5.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i7.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i5.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i5.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "component", type: i5.DynamicComponentComponent, selector: "c8y-dynamic-component", inputs: ["componentId", "config", "mode", "notFoundError", "executeResolvers"], outputs: ["updateWidgetClasses"] }, { kind: "directive", type: i5.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit"] }, { kind: "component", type: i8.MillerViewComponent, selector: "c8y-asset-selector-miller", inputs: ["config", "asset", "selectedDevice", "rootNode", "container"], outputs: ["onSelected"] }, { kind: "component", type: i9.AppearanceSettingsComponent, selector: "c8y-appearance-settings", inputs: ["themeClass", "headerClass", "defaultThemeClass", "defaultHeaderClass", "possibleStylingTheme", "possibleStylingHeader"], outputs: ["themeClassChange", "headerClassChange"] }, { kind: "component", type: i10.WidgetPreviewComponent, selector: "c8y-widget-preview", inputs: ["previewClasses", "tab"] }, { kind: "pipe", type: i5.C8yTranslatePipe, name: "translate" }] });
|
|
227
|
+
WidgetConfigComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: WidgetConfigComponent, selector: "c8y-widget-config", viewQueries: [{ propertyName: "dynamicComponent", first: true, predicate: ["config"], descendants: true }], ngImport: i0, template: "<div class=\"modal-header separator\">\n <div\n class=\"h3\"\n title=\"{{ 'Add widget' | translate }}\"\n id=\"modal-title\"\n *ngIf=\"!current\"\n translate\n >\n Add widget\n </div>\n <div\n class=\"h3\"\n title=\"{{ 'Edit widget' | translate }}\"\n id=\"modal-title\"\n *ngIf=\"current\"\n translate\n >\n Edit widget\n </div>\n</div>\n<form name=\"form\" #configForm=\"ngForm\">\n <div class=\"c8y-modal-tabs\" id=\"modal-body\">\n <div class=\"tabContainer\">\n <ul class=\"nav nav-tabs nav-tabsc8y p-l-24\">\n <li [class.active]=\"mode === 'select'\">\n <button\n class=\"btn\"\n type=\"button\"\n title=\"{{ 'Select widget' | translate }}\"\n (click)=\"changeMode('select'); (false)\"\n >\n <i c8yIcon=\"th-large\"></i>\n <span translate>Select widget</span>\n </button>\n </li>\n <li [class.active]=\"mode === 'config'\">\n <button\n class=\"btn\"\n type=\"button\"\n title=\"{{ 'Configuration' | translate }}\"\n [disabled]=\"!selected\"\n (click)=\"changeMode('config'); (false)\"\n >\n <i c8yIcon=\"cog\"></i>\n <span translate>Configuration</span>\n </button>\n </li>\n <li [class.active]=\"mode === 'style'\">\n <button\n class=\"btn\"\n type=\"button\"\n title=\"{{ 'Appearance' | translate }}\"\n [disabled]=\"!selected\"\n (click)=\"changeMode('style'); (false)\"\n >\n <i c8yIcon=\"paint-brush\"></i>\n <span translate>Appearance</span>\n </button>\n </li>\n </ul>\n </div>\n </div>\n\n <div class=\"modal-inner-scroll modal-inner-scroll--fixed\">\n <div\n class=\"bg-level-0 p-l-24 p-r-24 p-t-8 p-b-8 sticky-header-top-0\"\n style=\"z-index: 2\"\n *ngIf=\"mode === 'select'\"\n >\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n data-cy=\"widget-config--Search\"\n type=\"text\"\n [attr.aria-label]=\"'Search' | translate\"\n placeholder=\"{{ 'Search\u2026' | translate }}\"\n [(ngModel)]=\"searchTerm\"\n [ngModelOptions]=\"{ standalone: true }\"\n (keydown)=\"searchChange$.next($event)\"\n />\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-dot\"\n type=\"button\"\n title=\"{{ 'Search' | translate }}\"\n (click)=\"resetSearch()\"\n >\n <i [c8yIcon]=\"searchTerm.length === 0 ? 'search' : 'close'\"></i>\n </button>\n </span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"modal-body bg-level-2\" *ngIf=\"mode === 'select'\">\n <div class=\"card-group card-select m-b-0\">\n <div\n class=\"col-md-3 col-sm-4 col-xs-6\"\n title=\"{{ cmp.description | translate }}\"\n *ngFor=\"let cmp of searchResult || components\"\n >\n <button\n class=\"btn-clean card p-8\"\n type=\"button\"\n [class.active]=\"selected === cmp\"\n (click)=\"select(cmp)\"\n >\n <div class=\"text-center p-8 m-b-8 d-col flex-center bg-level-2\" role=\"presentation\">\n <ng-container *ngIf=\"!cmp.previewImage; else previewImage\">\n <div class=\"h1\"><i c8yIcon=\"file-image-o\"></i></div>\n <small translate>Preview not available</small>\n </ng-container>\n <ng-template #previewImage>\n <img class=\"img-responsive\" alt [src]=\"cmp.previewImage\" />\n </ng-template>\n </div>\n <p class=\"card-title text-truncate\">\n <c8y-highlight\n text=\"{{ cmp.label | translate }}\"\n [pattern]=\"searchTerm\"\n ></c8y-highlight>\n </p>\n </button>\n </div>\n\n <div class=\"c8y-empty-state text-center\" *ngIf=\"searchResult && searchResult.length === 0\">\n <div class=\"h1\" c8yIcon=\"search\"></div>\n <h3 translate>No widgets found.</h3>\n <div class=\"d-flex\">\n <p class=\"m-r-8\" translate>Rephrase your search term.</p>\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n title=\"{{ 'Reset search' | translate }}\"\n (click)=\"resetSearch()\"\n >\n {{ 'Reset search' | translate }}\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- The following is intentional set to hidden to allow the ViewChild ref in the controller -->\n <div class=\"d-flex d-col fit-h\" *ngIf=\"selected\" [ngClass]=\"{ hidden: mode !== 'config' }\">\n <div class=\"p-t-16 flex-no-shrink separator-bottom p-b-16\">\n <div class=\"row\">\n <div class=\"col-sm-4\">\n <div class=\"p-l-24\">\n <div class=\"text-left text-medium h4\">\n {{ selected.label | translate }}\n </div>\n <p>\n {{ selected.description | translate }}\n </p>\n </div>\n </div>\n <div class=\"col-sm-8\">\n <div class=\"p-r-24\">\n <c8y-form-group>\n <label for=\"widgetTitle\" translate>Title</label>\n <input\n class=\"form-control\"\n type=\"text\"\n id=\"widgetTitle\"\n name=\"title\"\n [(ngModel)]=\"selected.data.title\"\n placeholder=\"{{ 'e.g.' | translate }} {{ componentLabel | translate }}\"\n required\n />\n </c8y-form-group>\n </div>\n </div>\n </div>\n </div>\n <div class=\"row flex-grow\" [ngClass]=\"{ 'd-flex': widgetConfig.options || hasConfig() }\">\n <div\n class=\"a-s-stretch\"\n *ngIf=\"!widgetConfig.settings?.noDeviceTarget\"\n [ngClass]=\"{\n 'bg-level-1 col-sm-4 p-r-0': hasConfig(),\n 'bg-level-0 col-sm-12': !hasConfig()\n }\"\n >\n <div class=\"fit-h bg-inherit p-l-16\" [ngClass]=\"{ 'p-r-24': !hasConfig() }\">\n <div class=\"p-relative bg-inherit\">\n <c8y-asset-selector-miller\n class=\"d-block bg-inherit p-relative\"\n style=\"height: calc(100vh - 422px)\"\n (onSelected)=\"selectionChanged($event)\"\n (onClearSelected)=\"selectionChanged()\"\n [config]=\"{\n view: 'miller',\n groupsSelectable: this.widgetConfig.settings?.groupsSelectable,\n showChildDevices: true,\n columnHeaders: true,\n showUnassignedDevices: true,\n search: !this.widgetConfig.settings.context?.additionParents,\n showFilter: true,\n singleColumn: !!this.hasConfig()\n }\"\n [asset]=\"widgetConfig.settings?.context\"\n [selectedDevice]=\"selectedDevice\"\n ></c8y-asset-selector-miller>\n </div>\n </div>\n </div>\n <div\n [ngClass]=\"{\n 'col-sm-8': !widgetConfig.settings?.noDeviceTarget,\n 'col-sm-12': widgetConfig.settings?.noDeviceTarget,\n 'sr-only': !hasConfig()\n }\"\n >\n <c8y-dynamic-component\n class=\"d-block\"\n style=\"height: {{ hasConfig() ? 'calc(100vh - 422px)' : '0' }}\"\n [ngClass]=\"{ 'inner-scroll p-r-24': !widgetConfig.settings?.noDeviceTarget }\"\n [componentId]=\"selected.id\"\n mode=\"config\"\n [config]=\"widgetConfig\"\n [notFoundError]=\"false\"\n #config\n ></c8y-dynamic-component>\n </div>\n </div>\n </div>\n\n <div class=\"modal-body p-t-0\" style=\"height: calc(100vh - 310px)\" *ngIf=\"mode === 'style'\">\n <div class=\"row\">\n <div class=\"col-xs-6\">\n <c8y-appearance-settings\n [(themeClass)]=\"styling.contentClass\"\n [(headerClass)]=\"styling.headerClass\"\n [possibleStylingTheme]=\"possibleStyling.WIDGET_CONTENT_CLASSES\"\n [possibleStylingHeader]=\"possibleStyling.WIDGET_HEADER_CLASSES\"\n [defaultThemeClass]=\"defaultStyling.contentClass\"\n [defaultHeaderClass]=\"defaultStyling.headerClass\"\n ></c8y-appearance-settings>\n </div>\n <div class=\"col-xs-6 sticky-header-top-0\">\n <c8y-widget-preview\n style=\"height: calc(100vh - 382px)\"\n [previewClasses]=\"getStyle(true)\"\n ></c8y-widget-preview>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Cancel' | translate }}\"\n (click)=\"close()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n type=\"submit\"\n title=\"{{ 'Save' | translate }}\"\n (click)=\"save()\"\n [disabled]=\"\n contextDashboardService.formDisabled || configForm.invalid || checkIfDeviceRequired()\n \"\n c8yProductExperience\n [actionName]=\"current ? 'editWidget' : 'createWidget'\"\n [actionData]=\"{ widgetName: selected && selected.id }\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i5.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i7.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i5.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i5.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "component", type: i5.DynamicComponentComponent, selector: "c8y-dynamic-component", inputs: ["componentId", "config", "mode", "notFoundError", "executeResolvers"], outputs: ["updateWidgetClasses"] }, { kind: "directive", type: i5.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit"] }, { kind: "component", type: i8.MillerViewComponent, selector: "c8y-asset-selector-miller", inputs: ["config", "asset", "selectedDevice", "rootNode", "container"], outputs: ["onSelected"] }, { kind: "component", type: i9.AppearanceSettingsComponent, selector: "c8y-appearance-settings", inputs: ["themeClass", "headerClass", "defaultThemeClass", "defaultHeaderClass", "possibleStylingTheme", "possibleStylingHeader"], outputs: ["themeClassChange", "headerClassChange"] }, { kind: "component", type: i10.WidgetPreviewComponent, selector: "c8y-widget-preview", inputs: ["previewClasses", "tab"] }, { kind: "pipe", type: i5.C8yTranslatePipe, name: "translate" }] });
|
|
228
228
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: WidgetConfigComponent, decorators: [{
|
|
229
229
|
type: Component,
|
|
230
|
-
args: [{ selector: 'c8y-widget-config', template: "<div class=\"modal-header separator\">\n <div id=\"modal-title\" class=\"h3\" title=\"{{ 'Add widget' | translate }}\" *ngIf=\"!current\" translate>Add widget</div>\n <div id=\"modal-title\" class=\"h3\" title=\"{{ 'Edit widget' | translate }}\" *ngIf=\"current\" translate>Edit widget</div>\n</div>\n<form #configForm=\"ngForm\" name=\"form\">\n <div class=\"c8y-modal-tabs\" id=\"modal-body\">\n <div class=\"tabContainer\">\n <ul class=\"nav nav-tabs nav-tabsc8y p-l-24\">\n <li [class.active]=\"mode === 'select'\">\n <button\n title=\"{{ 'Select widget' | translate }}\"\n type=\"button\"\n class=\"btn\"\n (click)=\"changeMode('select'); (false)\"\n >\n <i c8yIcon=\"th-large\"></i>\n <span translate>Select widget</span>\n </button>\n </li>\n <li [class.active]=\"mode === 'config'\">\n <button\n title=\"{{ 'Configuration' | translate }}\"\n type=\"button\"\n class=\"btn\"\n [disabled]=\"!selected\"\n (click)=\"changeMode('config'); (false)\"\n >\n <i c8yIcon=\"cog\"></i>\n <span translate>Configuration</span>\n </button>\n </li>\n <li [class.active]=\"mode === 'style'\">\n <button\n title=\"{{ 'Appearance' | translate }}\"\n type=\"button\"\n class=\"btn\"\n [disabled]=\"!selected\"\n (click)=\"changeMode('style'); (false)\"\n >\n <i c8yIcon=\"paint-brush\"></i>\n <span translate>Appearance</span>\n </button>\n </li>\n </ul>\n </div>\n </div>\n\n <div class=\"modal-inner-scroll\">\n <div\n *ngIf=\"mode === 'select'\"\n class=\"bg-level-0 p-l-24 p-r-24 p-t-8 p-b-8 sticky-header-top-0\"\n style=\"z-index: 2\"\n >\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <div class=\"input-group input-group-search\">\n <input\n [attr.aria-label]=\"'Search' | translate\"\n class=\"form-control\"\n placeholder=\"{{ 'Search\u2026' | translate }}\"\n type=\"text\"\n [(ngModel)]=\"searchTerm\"\n [ngModelOptions]=\"{ standalone: true }\"\n (keydown)=\"searchChange$.next($event)\"\n />\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Search' | translate }}\"\n type=\"button\"\n (click)=\"resetSearch()\"\n >\n <i [c8yIcon]=\"searchTerm.length === 0 ? 'search' : 'close'\"></i>\n </button>\n </span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"modal-body bg-level-2\" *ngIf=\"mode === 'select'\">\n <div class=\"card-group card-select m-b-0\">\n <div\n class=\"col-md-3 col-sm-4 col-xs-6\"\n *ngFor=\"let cmp of searchResult || components\"\n title=\"{{ cmp.description | translate }}\"\n >\n <div class=\"card p-8\" [class.active]=\"selected === cmp\" (click)=\"select(cmp)\">\n <div class=\"text-center p-8 m-b-8 d-col flex-center bg-level-2\" role=\"none\">\n <ng-container *ngIf=\"!cmp.previewImage; else previewImage\">\n <div class=\"h1\"><i c8yIcon=\"file-image-o\"></i></div>\n <small translate>Preview not available</small>\n </ng-container>\n <ng-template #previewImage>\n <img class=\"img-responsive\" alt=\"\" [src]=\"cmp.previewImage\" />\n </ng-template>\n </div>\n <p class=\"card-title text-truncate\">\n <c8y-highlight\n text=\"{{ cmp.label | translate }}\"\n [pattern]=\"searchTerm\"\n ></c8y-highlight>\n </p>\n </div>\n </div>\n\n <div class=\"c8y-empty-state text-center\" *ngIf=\"searchResult && searchResult.length === 0\">\n <div class=\"h1\" c8yIcon=\"search\"></div>\n <h3 translate>No widgets found.</h3>\n <div class=\"d-flex\">\n <p translate class=\"m-r-8\">Rephrase your search term.</p>\n <button\n title=\"{{ 'Reset search' | translate }}\"\n class=\"btn btn-primary\"\n type=\"button\"\n (click)=\"resetSearch()\"\n >\n {{ 'Reset search' | translate }}\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- The following is intentional set to hidden to allow the ViewChild ref in the controller -->\n <div *ngIf=\"selected\" [hidden]=\"mode !== 'config'\" style=\"max-height: calc(100vh - 290px)\">\n <div class=\"p-t-16 flex-no-grow\">\n <div class=\"row\">\n <div class=\"col-sm-4\">\n <div class=\"p-l-24\">\n <h4 class=\"text-left text-medium\">\n {{ selected.label | translate }}\n </h4>\n <p>\n {{ selected.description | translate }}\n </p>\n </div>\n </div>\n <div class=\"col-sm-8\">\n <div class=\"p-r-24\">\n <c8y-form-group>\n <label for=\"widgetTitle\" translate>Title</label>\n <input\n id=\"widgetTitle\"\n [(ngModel)]=\"selected.data.title\"\n type=\"text\"\n name=\"title\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} {{ componentLabel | translate }}\"\n required\n />\n </c8y-form-group>\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"row flex-grow separator-top\"\n [ngClass]=\"{ 'd-flex m-l-0': widgetConfig.options || hasConfig() }\"\n >\n <div\n *ngIf=\"!widgetConfig.settings?.noDeviceTarget\"\n class=\"a-i-stretch\"\n [ngClass]=\"{\n 'bg-level-1 col-sm-4 p-l-0 p-r-0': hasConfig(),\n 'bg-level-0 col-sm-12': !hasConfig()\n }\"\n style=\"height: 360px\"\n >\n <div class=\"p-l-16 fit-h bg-inherit\" [ngClass]=\"{ 'p-r-16': !hasConfig() }\">\n <c8y-asset-selector-miller\n (onSelected)=\"selectionChanged($event)\"\n [config]=\"{\n view: 'miller',\n groupsSelectable: this.widgetConfig.settings?.groupsSelectable,\n showChildDevices: true,\n columnHeaders: true,\n showUnassignedDevices: true,\n search: !this.widgetConfig.settings.context?.additionParents,\n showFilter: true,\n singleColumn: !!this.hasConfig()\n }\"\n [asset]=\"widgetConfig.settings?.context\"\n [selectedDevice]=\"selectedDevice\"\n class=\"bg-inherit p-relative\"\n ></c8y-asset-selector-miller>\n </div>\n </div>\n <div\n [ngClass]=\"{\n 'col-sm-8': !widgetConfig.settings?.noDeviceTarget,\n 'col-sm-12 p-l-32 p-r-8': widgetConfig.settings?.noDeviceTarget\n }\"\n >\n <c8y-dynamic-component\n class=\"d-block p-t-8 p-r-24\"\n [componentId]=\"selected.id\"\n mode=\"config\"\n [config]=\"widgetConfig\"\n [notFoundError]=\"false\"\n #config\n ></c8y-dynamic-component>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"mode === 'style'\" class=\"modal-body p-t-0\" style=\"min-height: calc(100vh - 290px)\">\n <div class=\"row\">\n <div class=\"col-xs-6\">\n <c8y-appearance-settings\n [(themeClass)]=\"styling.contentClass\"\n [(headerClass)]=\"styling.headerClass\"\n [possibleStylingTheme]=\"possibleStyling.WIDGET_CONTENT_CLASSES\"\n [possibleStylingHeader]=\"possibleStyling.WIDGET_HEADER_CLASSES\"\n [defaultThemeClass]=\"defaultStyling.contentClass\"\n [defaultHeaderClass]=\"defaultStyling.headerClass\"\n ></c8y-appearance-settings>\n </div>\n <div class=\"col-xs-6 sticky-header-top-0\">\n <c8y-widget-preview [previewClasses]=\"getStyle(true)\"></c8y-widget-preview>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n class=\"btn btn-default\"\n (click)=\"close()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary\"\n (click)=\"save()\"\n [disabled]=\"\n contextDashboardService.formDisabled || configForm.invalid || checkIfDeviceRequired()\n \"\n c8yProductExperience\n [actionName]=\"current ? 'editWidget' : 'createWidget'\"\n [actionData]=\"{ widgetName: selected && selected.id }\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</form>\n" }]
|
|
230
|
+
args: [{ selector: 'c8y-widget-config', template: "<div class=\"modal-header separator\">\n <div\n class=\"h3\"\n title=\"{{ 'Add widget' | translate }}\"\n id=\"modal-title\"\n *ngIf=\"!current\"\n translate\n >\n Add widget\n </div>\n <div\n class=\"h3\"\n title=\"{{ 'Edit widget' | translate }}\"\n id=\"modal-title\"\n *ngIf=\"current\"\n translate\n >\n Edit widget\n </div>\n</div>\n<form name=\"form\" #configForm=\"ngForm\">\n <div class=\"c8y-modal-tabs\" id=\"modal-body\">\n <div class=\"tabContainer\">\n <ul class=\"nav nav-tabs nav-tabsc8y p-l-24\">\n <li [class.active]=\"mode === 'select'\">\n <button\n class=\"btn\"\n type=\"button\"\n title=\"{{ 'Select widget' | translate }}\"\n (click)=\"changeMode('select'); (false)\"\n >\n <i c8yIcon=\"th-large\"></i>\n <span translate>Select widget</span>\n </button>\n </li>\n <li [class.active]=\"mode === 'config'\">\n <button\n class=\"btn\"\n type=\"button\"\n title=\"{{ 'Configuration' | translate }}\"\n [disabled]=\"!selected\"\n (click)=\"changeMode('config'); (false)\"\n >\n <i c8yIcon=\"cog\"></i>\n <span translate>Configuration</span>\n </button>\n </li>\n <li [class.active]=\"mode === 'style'\">\n <button\n class=\"btn\"\n type=\"button\"\n title=\"{{ 'Appearance' | translate }}\"\n [disabled]=\"!selected\"\n (click)=\"changeMode('style'); (false)\"\n >\n <i c8yIcon=\"paint-brush\"></i>\n <span translate>Appearance</span>\n </button>\n </li>\n </ul>\n </div>\n </div>\n\n <div class=\"modal-inner-scroll modal-inner-scroll--fixed\">\n <div\n class=\"bg-level-0 p-l-24 p-r-24 p-t-8 p-b-8 sticky-header-top-0\"\n style=\"z-index: 2\"\n *ngIf=\"mode === 'select'\"\n >\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n data-cy=\"widget-config--Search\"\n type=\"text\"\n [attr.aria-label]=\"'Search' | translate\"\n placeholder=\"{{ 'Search\u2026' | translate }}\"\n [(ngModel)]=\"searchTerm\"\n [ngModelOptions]=\"{ standalone: true }\"\n (keydown)=\"searchChange$.next($event)\"\n />\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-dot\"\n type=\"button\"\n title=\"{{ 'Search' | translate }}\"\n (click)=\"resetSearch()\"\n >\n <i [c8yIcon]=\"searchTerm.length === 0 ? 'search' : 'close'\"></i>\n </button>\n </span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"modal-body bg-level-2\" *ngIf=\"mode === 'select'\">\n <div class=\"card-group card-select m-b-0\">\n <div\n class=\"col-md-3 col-sm-4 col-xs-6\"\n title=\"{{ cmp.description | translate }}\"\n *ngFor=\"let cmp of searchResult || components\"\n >\n <button\n class=\"btn-clean card p-8\"\n type=\"button\"\n [class.active]=\"selected === cmp\"\n (click)=\"select(cmp)\"\n >\n <div class=\"text-center p-8 m-b-8 d-col flex-center bg-level-2\" role=\"presentation\">\n <ng-container *ngIf=\"!cmp.previewImage; else previewImage\">\n <div class=\"h1\"><i c8yIcon=\"file-image-o\"></i></div>\n <small translate>Preview not available</small>\n </ng-container>\n <ng-template #previewImage>\n <img class=\"img-responsive\" alt [src]=\"cmp.previewImage\" />\n </ng-template>\n </div>\n <p class=\"card-title text-truncate\">\n <c8y-highlight\n text=\"{{ cmp.label | translate }}\"\n [pattern]=\"searchTerm\"\n ></c8y-highlight>\n </p>\n </button>\n </div>\n\n <div class=\"c8y-empty-state text-center\" *ngIf=\"searchResult && searchResult.length === 0\">\n <div class=\"h1\" c8yIcon=\"search\"></div>\n <h3 translate>No widgets found.</h3>\n <div class=\"d-flex\">\n <p class=\"m-r-8\" translate>Rephrase your search term.</p>\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n title=\"{{ 'Reset search' | translate }}\"\n (click)=\"resetSearch()\"\n >\n {{ 'Reset search' | translate }}\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- The following is intentional set to hidden to allow the ViewChild ref in the controller -->\n <div class=\"d-flex d-col fit-h\" *ngIf=\"selected\" [ngClass]=\"{ hidden: mode !== 'config' }\">\n <div class=\"p-t-16 flex-no-shrink separator-bottom p-b-16\">\n <div class=\"row\">\n <div class=\"col-sm-4\">\n <div class=\"p-l-24\">\n <div class=\"text-left text-medium h4\">\n {{ selected.label | translate }}\n </div>\n <p>\n {{ selected.description | translate }}\n </p>\n </div>\n </div>\n <div class=\"col-sm-8\">\n <div class=\"p-r-24\">\n <c8y-form-group>\n <label for=\"widgetTitle\" translate>Title</label>\n <input\n class=\"form-control\"\n type=\"text\"\n id=\"widgetTitle\"\n name=\"title\"\n [(ngModel)]=\"selected.data.title\"\n placeholder=\"{{ 'e.g.' | translate }} {{ componentLabel | translate }}\"\n required\n />\n </c8y-form-group>\n </div>\n </div>\n </div>\n </div>\n <div class=\"row flex-grow\" [ngClass]=\"{ 'd-flex': widgetConfig.options || hasConfig() }\">\n <div\n class=\"a-s-stretch\"\n *ngIf=\"!widgetConfig.settings?.noDeviceTarget\"\n [ngClass]=\"{\n 'bg-level-1 col-sm-4 p-r-0': hasConfig(),\n 'bg-level-0 col-sm-12': !hasConfig()\n }\"\n >\n <div class=\"fit-h bg-inherit p-l-16\" [ngClass]=\"{ 'p-r-24': !hasConfig() }\">\n <div class=\"p-relative bg-inherit\">\n <c8y-asset-selector-miller\n class=\"d-block bg-inherit p-relative\"\n style=\"height: calc(100vh - 422px)\"\n (onSelected)=\"selectionChanged($event)\"\n (onClearSelected)=\"selectionChanged()\"\n [config]=\"{\n view: 'miller',\n groupsSelectable: this.widgetConfig.settings?.groupsSelectable,\n showChildDevices: true,\n columnHeaders: true,\n showUnassignedDevices: true,\n search: !this.widgetConfig.settings.context?.additionParents,\n showFilter: true,\n singleColumn: !!this.hasConfig()\n }\"\n [asset]=\"widgetConfig.settings?.context\"\n [selectedDevice]=\"selectedDevice\"\n ></c8y-asset-selector-miller>\n </div>\n </div>\n </div>\n <div\n [ngClass]=\"{\n 'col-sm-8': !widgetConfig.settings?.noDeviceTarget,\n 'col-sm-12': widgetConfig.settings?.noDeviceTarget,\n 'sr-only': !hasConfig()\n }\"\n >\n <c8y-dynamic-component\n class=\"d-block\"\n style=\"height: {{ hasConfig() ? 'calc(100vh - 422px)' : '0' }}\"\n [ngClass]=\"{ 'inner-scroll p-r-24': !widgetConfig.settings?.noDeviceTarget }\"\n [componentId]=\"selected.id\"\n mode=\"config\"\n [config]=\"widgetConfig\"\n [notFoundError]=\"false\"\n #config\n ></c8y-dynamic-component>\n </div>\n </div>\n </div>\n\n <div class=\"modal-body p-t-0\" style=\"height: calc(100vh - 310px)\" *ngIf=\"mode === 'style'\">\n <div class=\"row\">\n <div class=\"col-xs-6\">\n <c8y-appearance-settings\n [(themeClass)]=\"styling.contentClass\"\n [(headerClass)]=\"styling.headerClass\"\n [possibleStylingTheme]=\"possibleStyling.WIDGET_CONTENT_CLASSES\"\n [possibleStylingHeader]=\"possibleStyling.WIDGET_HEADER_CLASSES\"\n [defaultThemeClass]=\"defaultStyling.contentClass\"\n [defaultHeaderClass]=\"defaultStyling.headerClass\"\n ></c8y-appearance-settings>\n </div>\n <div class=\"col-xs-6 sticky-header-top-0\">\n <c8y-widget-preview\n style=\"height: calc(100vh - 382px)\"\n [previewClasses]=\"getStyle(true)\"\n ></c8y-widget-preview>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Cancel' | translate }}\"\n (click)=\"close()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n type=\"submit\"\n title=\"{{ 'Save' | translate }}\"\n (click)=\"save()\"\n [disabled]=\"\n contextDashboardService.formDisabled || configForm.invalid || checkIfDeviceRequired()\n \"\n c8yProductExperience\n [actionName]=\"current ? 'editWidget' : 'createWidget'\"\n [actionData]=\"{ widgetName: selected && selected.id }\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</form>\n" }]
|
|
231
231
|
}], ctorParameters: function () { return [{ type: i1.WidgetService }, { type: i2.BsModalRef }, { type: i3.InventoryService }, { type: i4.ContextDashboardService }]; }, propDecorators: { dynamicComponent: [{
|
|
232
232
|
type: ViewChild,
|
|
233
233
|
args: ['config', { static: false }]
|
|
234
234
|
}] } });
|
|
235
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWNvbmZpZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb250ZXh0LWRhc2hib2FyZC93aWRnZXQtY29uZmlnLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL2NvbnRleHQtZGFzaGJvYXJkL3dpZGdldC1jb25maWcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFzQyx5QkFBeUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXBHLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBZ0IsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBRUwsc0JBQXNCLEVBQ3RCLHFCQUFxQixFQUV0QixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQWtCLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDOzs7Ozs7Ozs7Ozs7QUFNL0QsTUFBTSxPQUFPLHFCQUFxQjtJQTRDaEMsWUFDVSxhQUE0QixFQUM1QixLQUFpQixFQUNqQixTQUEyQixFQUM1Qix1QkFBZ0Q7UUFIL0Msa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNqQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUM1Qiw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBOUN6RCxTQUFJLEdBQWtDLFFBQVEsQ0FBQztRQUkvQyxrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDOUIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUloQixZQUFPLEdBQUc7WUFDUixXQUFXLEVBQUUscUJBQXFCO1lBQ2xDLFlBQVksRUFBRSxxQkFBcUI7U0FDcEMsQ0FBQztRQUNGLG1CQUFjLEdBQUc7WUFDZixXQUFXLEVBQUUscUJBQXFCO1lBQ2xDLFlBQVksRUFBRSxxQkFBcUI7U0FDcEMsQ0FBQztRQUNGLG9CQUFlLEdBQUcsRUFBRSxxQkFBcUIsRUFBRSxzQkFBc0IsRUFBRSxDQUFDO1FBR3BFLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFhbEIsV0FBTSxHQUFvQixJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUN4RCxJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQztZQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQztJQVdBLENBQUM7SUF0QkosSUFBSSxNQUFNO1FBQ1IsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxxQkFBcUI7UUFDdkIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsVUFBVSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxlQUFlLENBQUM7SUFDekYsQ0FBQztJQWtCRCxLQUFLLENBQUMsa0JBQWtCO1FBQ3RCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBRTVELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDL0Q7UUFFRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhO2FBQ2hDLElBQUksQ0FDSCxTQUFTLENBQUMsQ0FBQyxLQUFvQixFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxFQUFFLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQzFGO2FBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQztRQUVMLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVuQixJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUU7WUFDakQsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDMUUsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7U0FDNUI7SUFDSCxDQUFDO0lBRUQscUJBQXFCO1FBQ25CLE9BQU8sQ0FDTCxDQUFDLElBQUksQ0FBQyxZQUFZO1lBQ2xCLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUI7Z0JBQ2xELENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNO2dCQUN6QixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUM5QyxDQUFDO0lBQ0osQ0FBQztJQUVELGdCQUFnQixDQUFDLFNBQW9DO1FBQ25ELElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO0lBQ25ELENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSTtRQUNSLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakYsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNoQixPQUFPO1NBQ1I7UUFFRCxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFFdkQsSUFDRSxJQUFJLENBQUMsWUFBWTtZQUNqQixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU07WUFDeEIsMENBQTBDO1lBQzFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUMvQjtZQUNBLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7WUFDOUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUM7U0FDekM7UUFFRCxNQUFNLE1BQU0sR0FBRztZQUNiLEVBQUU7WUFDRixFQUFFO1lBQ0YsTUFBTTtZQUNOLE9BQU87WUFDUCxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxVQUFVLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztZQUNoRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSztZQUMvQixXQUFXLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzdCLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ3hFLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3hCLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQ3pELENBQUM7UUFFWixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxNQUFNLENBQUMsR0FBRyxFQUFFLE9BQTRCLFFBQVE7UUFDOUMsR0FBRyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQztRQUVwQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLHVCQUF1QixDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBRTNELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ3RFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO1NBQ3pGO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFckYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxjQUFjLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztRQUNoQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzlCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FDL0MsSUFBSSxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUN0RSxDQUFDO1NBQ0g7YUFBTTtZQUNMLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwQjtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7SUFDaEMsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFtQztRQUM1QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELFFBQVEsQ0FBQyxTQUFTLEdBQUcsS0FBSztRQUN4QixNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUN4RSxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUM7U0FDN0M7UUFFRCxJQUFJLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ3pFLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQztTQUM5QztRQUVELElBQUksU0FBUyxFQUFFO1lBQ2IsVUFBVSxDQUFDLG1CQUFtQixJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztTQUMzRjtRQUVELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDakQsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDOUI7SUFDSCxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFO1lBQ3ZDLE9BQU8sQ0FDTCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxlQUFlLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsaUJBQWlCLENBQzdGLENBQUM7U0FDSDtRQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDO0lBQ3ZDLENBQUM7SUFFTyxXQUFXO1FBQ2pCLE1BQU0sZ0JBQWdCLEdBQ3BCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsT0FBTyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkYsTUFBTSxzQkFBc0IsR0FDMUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxhQUFhLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUMxRixFQUFFLENBQUM7UUFDTCxNQUFNLGFBQWEsR0FBYSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFMUYsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQ2xDLEdBQUcsZ0JBQWdCO1lBQ25CLEdBQUcsc0JBQXNCO1lBQ3pCLEdBQUcsYUFBYTtTQUNqQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxHQUFHLGdCQUFnQixFQUFFLEdBQUcsc0JBQXNCLENBQUMsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxTQUFTO1FBQ3ZDLE1BQU0sVUFBVSxHQUFHO1lBQ2pCLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsT0FBTztZQUNoQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGFBQWE7U0FDdkMsQ0FBQztRQUNGLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDOUUsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFVBQVUsQ0FDbkQsTUFBTSxFQUNOLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQzFCLFNBQVMsQ0FDVixDQUFDO1FBQ0YsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFTyxlQUFlLENBQUMsVUFBb0I7UUFDMUMsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7UUFDN0MsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7UUFDM0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLHVCQUF1QjthQUN4QywwQkFBMEIsQ0FBQyxVQUFVLENBQUM7YUFDdEMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDekIsWUFBWSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVLENBQ3BELHNCQUFzQixFQUN0QixTQUFTLEVBQ1QsWUFBWSxDQUNiLENBQUM7WUFDRixXQUFXLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFVBQVUsQ0FDbkQscUJBQXFCLEVBQ3JCLFNBQVMsRUFDVCxXQUFXLENBQ1osQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRU8sbUJBQW1CLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxHQUFHLEVBQUU7UUFDekQsTUFBTSxPQUFPLEdBQUc7WUFDZCxRQUFRLEVBQUU7Z0JBQ1IsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUTtnQkFDbEMsR0FBRyxHQUFHLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUM7Z0JBQ3RELEdBQUcsR0FBRyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxhQUFhLENBQUM7Z0JBQzdDLE9BQU87Z0JBQ1AsV0FBVyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYTthQUNuQztZQUNELEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU07U0FDVixDQUFDO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLDRCQUE0QixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFTyw0QkFBNEIsQ0FBQyxZQUFpQztRQUNwRSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV4RSxJQUFJLFlBQVksRUFBRTtZQUNoQixZQUFZLENBQUMsUUFBUSxDQUFDLFVBQVUsR0FBRyxZQUFZLENBQUM7WUFFaEQsTUFBTSxjQUFjLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHO2dCQUM5QyxDQUFDLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLGNBQWM7Z0JBQ2xELENBQUMsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQztZQUV6QyxJQUFJLENBQUMsY0FBYyxFQUFFO2dCQUNuQixZQUFZLENBQUMsTUFBTSxHQUFHO29CQUNwQixFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUNuQixJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJO2lCQUN4QixDQUFDO2FBQ0g7U0FDRjtRQUNELE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7O2tIQTFSVSxxQkFBcUI7c0dBQXJCLHFCQUFxQixxS0NyQmxDLDJxU0F5UEE7MkZEcE9hLHFCQUFxQjtrQkFKakMsU0FBUzsrQkFDRSxtQkFBbUI7a01BNEI3QixnQkFBZ0I7c0JBRGYsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRHluYW1pY0NvbXBvbmVudERlZmluaXRpb24sIFdpZGdldCwgRHluYW1pY0NvbXBvbmVudENvbXBvbmVudCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQXNzZXRTZWxlY3Rpb25DaGFuZ2VFdmVudCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvYXNzZXRzLW5hdmlnYXRvcic7XG5pbXBvcnQgeyBjbG9uZSwgY2xvbmVEZWVwLCBlc2NhcGVSZWdFeHAsIGdldCwgb21pdCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCc01vZGFsUmVmIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBpaWYsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0LFxuICBXSURHRVRfQ09OVEVOVF9DTEFTU0VTLFxuICBXSURHRVRfSEVBREVSX0NMQVNTRVMsXG4gIENvbnRleHRXaWRnZXRDb25maWdcbn0gZnJvbSAnLi9jb250ZXh0LWRhc2hib2FyZC5tb2RlbCc7XG5pbXBvcnQgeyBXaWRnZXRTZXJ2aWNlIH0gZnJvbSAnLi93aWRnZXQuc2VydmljZSc7XG5pbXBvcnQgeyBDb250ZXh0RGFzaGJvYXJkU2VydmljZSB9IGZyb20gJy4vY29udGV4dC1kYXNoYm9hcmQuc2VydmljZSc7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCwgSW52ZW50b3J5U2VydmljZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LXdpZGdldC1jb25maWcnLFxuICB0ZW1wbGF0ZVVybDogJy4vd2lkZ2V0LWNvbmZpZy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgV2lkZ2V0Q29uZmlnQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgc2VsZWN0ZWREZXZpY2U6IElNYW5hZ2VkT2JqZWN0O1xuICBtb2RlOiAnY29uZmlnJyB8ICdzZWxlY3QnIHwgJ3N0eWxlJyA9ICdzZWxlY3QnO1xuICBzZWFyY2hSZXN1bHQ6IER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uW107XG4gIGNvbXBvbmVudHM6IER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uW107XG4gIHNlbGVjdGVkOiBEeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvbjtcbiAgc2VhcmNoQ2hhbmdlJCA9IG5ldyBTdWJqZWN0KCk7XG4gIHNlYXJjaFRlcm0gPSAnJztcbiAgY29udGV4dDogYW55O1xuICBjb21wb25lbnRMYWJlbDogc3RyaW5nO1xuICBtbzogQ29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3Q7XG4gIHN0eWxpbmcgPSB7XG4gICAgaGVhZGVyQ2xhc3M6ICdwYW5lbC10aXRsZS1yZWd1bGFyJyxcbiAgICBjb250ZW50Q2xhc3M6ICdwYW5lbC1jb250ZW50LWxpZ2h0J1xuICB9O1xuICBkZWZhdWx0U3R5bGluZyA9IHtcbiAgICBoZWFkZXJDbGFzczogJ3BhbmVsLXRpdGxlLXJlZ3VsYXInLFxuICAgIGNvbnRlbnRDbGFzczogJ3BhbmVsLWNvbnRlbnQtbGlnaHQnXG4gIH07XG4gIHBvc3NpYmxlU3R5bGluZyA9IHsgV0lER0VUX0hFQURFUl9DTEFTU0VTLCBXSURHRVRfQ09OVEVOVF9DTEFTU0VTIH07XG4gIGN1cnJlbnQ6IGFueTtcbiAgd2lkZ2V0Q29uZmlnOiBDb250ZXh0V2lkZ2V0Q29uZmlnO1xuICBpc1VwZ3JhZGUgPSBmYWxzZTtcblxuICBAVmlld0NoaWxkKCdjb25maWcnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgZHluYW1pY0NvbXBvbmVudDogRHluYW1pY0NvbXBvbmVudENvbXBvbmVudDtcblxuICBnZXQgaXNFZGl0KCkge1xuICAgIHJldHVybiAhIXRoaXMuY3VycmVudDtcbiAgfVxuXG4gIGdldCBpc0RldmljZVR5cGVEYXNoYm9hcmQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5tby5jOHlfRGFzaGJvYXJkPy5kZXZpY2VUeXBlICYmICEhdGhpcy5tby5jOHlfRGFzaGJvYXJkPy5kZXZpY2VUeXBlVmFsdWU7XG4gIH1cblxuICByZXN1bHQ6IFByb21pc2U8V2lkZ2V0PiA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICB0aGlzLl9zYXZlID0gcmVzb2x2ZTtcbiAgICB0aGlzLl9jYW5jZWwgPSByZWplY3Q7XG4gIH0pO1xuXG4gIHByaXZhdGUgc2VhcmNoU3ViOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgX3NhdmU6ICh2YWx1ZTogV2lkZ2V0KSA9PiB2b2lkO1xuICBwcml2YXRlIF9jYW5jZWw6IChyZWFzb24/OiBhbnkpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB3aWRnZXRTZXJ2aWNlOiBXaWRnZXRTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kYWw6IEJzTW9kYWxSZWYsXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnk6IEludmVudG9yeVNlcnZpY2UsXG4gICAgcHVibGljIGNvbnRleHREYXNoYm9hcmRTZXJ2aWNlOiBDb250ZXh0RGFzaGJvYXJkU2VydmljZVxuICApIHt9XG5cbiAgYXN5bmMgbmdBZnRlckNvbnRlbnRJbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuY29tcG9uZW50cyA9IHRoaXMud2lkZ2V0U2VydmljZS5nZXRXaWRnZXREZWZpbml0aW9ucygpO1xuXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuY3VycmVudCA9IGNsb25lKHRoaXMuc2VsZWN0ZWQpO1xuICAgICAgdGhpcy5zZWxlY3QodGhpcy5zZWxlY3RlZCwgdGhpcy5pc0VkaXQgPyAnY29uZmlnJyA6ICdzZWxlY3QnKTtcbiAgICB9XG5cbiAgICB0aGlzLnNlYXJjaFN1YiA9IHRoaXMuc2VhcmNoQ2hhbmdlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IGlpZigoKSA9PiBldmVudC53aGljaCAhPT0gMTMsIHRpbWVyKDIwMCksIHRpbWVyKDEwKSkpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5zZWFyY2goKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5zZXRTdHlsaW5ncygpO1xuXG4gICAgaWYgKHRoaXMud2lkZ2V0Q29uZmlnICYmIHRoaXMud2lkZ2V0Q29uZmlnLmRldmljZSkge1xuICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCB0aGlzLmludmVudG9yeS5kZXRhaWwodGhpcy53aWRnZXRDb25maWcuZGV2aWNlLmlkKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWREZXZpY2UgPSBkYXRhO1xuICAgIH1cbiAgfVxuXG4gIGNoZWNrSWZEZXZpY2VSZXF1aXJlZCgpIHtcbiAgICByZXR1cm4gKFxuICAgICAgIXRoaXMud2lkZ2V0Q29uZmlnIHx8XG4gICAgICAoIXRoaXMud2lkZ2V0Q29uZmlnLnNldHRpbmdzLmRldmljZVRhcmdldE5vdFJlcXVpcmVkICYmXG4gICAgICAgICF0aGlzLndpZGdldENvbmZpZy5kZXZpY2UgJiZcbiAgICAgICAgIXRoaXMud2lkZ2V0Q29uZmlnLnNldHRpbmdzLm5vRGV2aWNlVGFyZ2V0KVxuICAgICk7XG4gIH1cblxuICBzZWxlY3Rpb25DaGFuZ2VkKHNlbGVjdGlvbjogQXNzZXRTZWxlY3Rpb25DaGFuZ2VFdmVudCkge1xuICAgIHRoaXMud2lkZ2V0Q29uZmlnLmRldmljZSA9IHNlbGVjdGlvbi5jaGFuZ2UuaXRlbTtcbiAgfVxuXG4gIGFzeW5jIHNhdmUoKSB7XG4gICAgY29uc3QgaG9va1N1Y2Nlc3MgPSBhd2FpdCB0aGlzLmR5bmFtaWNDb21wb25lbnQuY2FsbExpZmVDeWNsZUhvb2tzKCkudG9Qcm9taXNlKCk7XG4gICAgaWYgKCFob29rU3VjY2Vzcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgX3gsIF95LCBfd2lkdGgsIF9oZWlnaHQgfSA9IHRoaXMuc2VsZWN0ZWQuZGF0YTtcblxuICAgIGlmIChcbiAgICAgIHRoaXMud2lkZ2V0Q29uZmlnICYmXG4gICAgICB0aGlzLndpZGdldENvbmZpZy5kZXZpY2UgJiZcbiAgICAgIC8vIHNlcmlhbGl6aW5nIHdpbGwgYmUgaGFuZGxlZCBieSByZXNvbHZlclxuICAgICAgIXRoaXMuc2VsZWN0ZWQ/LnJlc29sdmU/LmRldmljZVxuICAgICkge1xuICAgICAgY29uc3QgeyBpZCwgbmFtZSB9ID0gdGhpcy53aWRnZXRDb25maWcuZGV2aWNlO1xuICAgICAgdGhpcy53aWRnZXRDb25maWcuZGV2aWNlID0geyBpZCwgbmFtZSB9O1xuICAgIH1cblxuICAgIGNvbnN0IHdpZGdldCA9IHtcbiAgICAgIF94LFxuICAgICAgX3ksXG4gICAgICBfd2lkdGgsXG4gICAgICBfaGVpZ2h0LFxuICAgICAgY29uZmlnOiBvbWl0KHRoaXMud2lkZ2V0Q29uZmlnLCBbJ3NldHRpbmdzJywgJ2Rpc3BsYXlTZXR0aW5ncyddKSxcbiAgICAgIHRpdGxlOiB0aGlzLnNlbGVjdGVkLmRhdGEudGl0bGUsXG4gICAgICBjb21wb25lbnRJZDogdGhpcy5zZWxlY3RlZC5pZCxcbiAgICAgIGlkOiB0aGlzLmlzRWRpdCA/IHRoaXMuY3VycmVudC5kYXRhLmlkIDogU3RyaW5nKE1hdGgucmFuZG9tKCkpLnN1YnN0cigyKSxcbiAgICAgIGNsYXNzZXM6IHRoaXMuZ2V0U3R5bGUoKSxcbiAgICAgIC4uLighdGhpcy5pc0VkaXQgPyB0aGlzLndpZGdldENvbmZpZy5zZXR0aW5ncy53aWRnZXREZWZhdWx0cyA6IHt9KVxuICAgIH0gYXMgV2lkZ2V0O1xuXG4gICAgdGhpcy5fc2F2ZSh3aWRnZXQpO1xuICB9XG5cbiAgc2VsZWN0KGNtcCwgbW9kZTogJ3NlbGVjdCcgfCAnY29uZmlnJyA9ICdjb25maWcnKSB7XG4gICAgY21wLmRhdGEgPSBjbXAuZGF0YSB8fCB7fTtcbiAgICB0aGlzLnNlbGVjdGVkID0gY21wO1xuXG4gICAgdGhpcy5pc1VwZ3JhZGUgPSAhIWdldChjbXAsICdkYXRhLnNldHRpbmdzLnVwZ3JhZGUnKTtcbiAgICB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmZvcm1EaXNhYmxlZCA9IHRoaXMuaXNVcGdyYWRlO1xuXG4gICAgaWYgKHRoaXMuaXNFZGl0KSB7XG4gICAgICBjb25zdCB7IF94LCBfeSwgX3dpZHRoLCBfaGVpZ2h0LCBjbGFzc2VzLCB0aXRsZSB9ID0gdGhpcy5jdXJyZW50LmRhdGE7XG4gICAgICB0aGlzLnNlbGVjdGVkLmRhdGEgPSB7IC4uLnRoaXMuc2VsZWN0ZWQuZGF0YSwgX3gsIF95LCBfd2lkdGgsIF9oZWlnaHQsIGNsYXNzZXMsIHRpdGxlIH07XG4gICAgfVxuXG4gICAgdGhpcy53aWRnZXRDb25maWcgPSBjbG9uZURlZXAodGhpcy5jb21wb3NlV2lkZ2V0Q29uZmlnKHRoaXMuc2VsZWN0ZWQsIHRoaXMuY29udGV4dCkpO1xuXG4gICAgdGhpcy5zZWxlY3RlZC5kYXRhLnRpdGxlID0gdGhpcy5zZWxlY3RlZC5kYXRhLnRpdGxlIHx8IGNtcC5sYWJlbDtcbiAgICB0aGlzLmNvbXBvbmVudExhYmVsID0gY21wLmxhYmVsO1xuICAgIHRoaXMubW9kZSA9IG1vZGU7XG4gIH1cblxuICBzZWFyY2goKSB7XG4gICAgaWYgKHRoaXMuc2VhcmNoVGVybS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlYXJjaFJlc3VsdCA9IHRoaXMuY29tcG9uZW50cy5maWx0ZXIoY21wID0+XG4gICAgICAgIG5ldyBSZWdFeHAoZXNjYXBlUmVnRXhwKHRoaXMuc2VhcmNoVGVybS50cmltKCkpLCAnaScpLnRlc3QoY21wLmxhYmVsKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZXNldFNlYXJjaCgpO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0U2VhcmNoKCkge1xuICAgIHRoaXMuc2VhcmNoVGVybSA9ICcnO1xuICAgIHRoaXMuc2VhcmNoUmVzdWx0ID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgY2hhbmdlTW9kZShtb2RlOiAnY29uZmlnJyB8ICdzZWxlY3QnIHwgJ3N0eWxlJykge1xuICAgIHRoaXMubW9kZSA9IG1vZGU7XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLl9jYW5jZWwoKTtcbiAgICB0aGlzLm1vZGFsLmhpZGUoKTtcbiAgfVxuXG4gIGdldFN0eWxlKGlzUHJldmlldyA9IGZhbHNlKSB7XG4gICAgY29uc3QgY3NzQ2xhc3NlcyA9IHt9O1xuICAgIGlmIChpc1ByZXZpZXcgfHwgIXRoaXMuaXNEYXNoYm9hcmREZWZhdWx0U3R5bGUodGhpcy5zdHlsaW5nLmhlYWRlckNsYXNzKSkge1xuICAgICAgY3NzQ2xhc3Nlc1t0aGlzLnN0eWxpbmcuaGVhZGVyQ2xhc3NdID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoaXNQcmV2aWV3IHx8ICF0aGlzLmlzRGFzaGJvYXJkRGVmYXVsdFN0eWxlKHRoaXMuc3R5bGluZy5jb250ZW50Q2xhc3MpKSB7XG4gICAgICBjc3NDbGFzc2VzW3RoaXMuc3R5bGluZy5jb250ZW50Q2xhc3NdID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoaXNQcmV2aWV3KSB7XG4gICAgICBjc3NDbGFzc2VzW2BkYXNoYm9hcmQtdGhlbWUtJHt0aGlzLmRlZmF1bHRTdHlsaW5nLmNvbnRlbnRDbGFzcy5zcGxpdCgnLScpLnBvcCgpfWBdID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gY3NzQ2xhc3NlcztcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuZm9ybURpc2FibGVkID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5zZWFyY2hTdWIpIHtcbiAgICAgIHRoaXMuc2VhcmNoU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgaGFzQ29uZmlnKCkge1xuICAgIGlmICh0aGlzLndpZGdldENvbmZpZy5zZXR0aW5ncz8udXBncmFkZSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgdGhpcy53aWRnZXRDb25maWcuc2V0dGluZ3M/LmNvbmZpZ0NvbXBvbmVudCB8fCB0aGlzLndpZGdldENvbmZpZy5zZXR0aW5ncz8uY29uZmlnVGVtcGxhdGVVcmxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiAhdGhpcy5keW5hbWljQ29tcG9uZW50Py5lcnJvcjtcbiAgfVxuXG4gIHByaXZhdGUgc2V0U3R5bGluZ3MoKTogdm9pZCB7XG4gICAgY29uc3QgZGFzaGJvYXJkQ2xhc3Nlczogc3RyaW5nW10gPVxuICAgICAgKHRoaXMubW8uYzh5X0Rhc2hib2FyZD8uY2xhc3NlcyAmJiBPYmplY3Qua2V5cyh0aGlzLm1vLmM4eV9EYXNoYm9hcmQuY2xhc3NlcykpIHx8IFtdO1xuICAgIGNvbnN0IGRhc2hib2FyZFdpZGdldENsYXNzZXM6IHN0cmluZ1tdID1cbiAgICAgICh0aGlzLm1vLmM4eV9EYXNoYm9hcmQ/LndpZGdldENsYXNzZXMgJiYgT2JqZWN0LmtleXModGhpcy5tby5jOHlfRGFzaGJvYXJkLndpZGdldENsYXNzZXMpKSB8fFxuICAgICAgW107XG4gICAgY29uc3Qgd2lkZ2V0Q2xhc3Nlczogc3RyaW5nW10gPSB0aGlzLmlzRWRpdCA/IE9iamVjdC5rZXlzKHRoaXMuY3VycmVudC5kYXRhLmNsYXNzZXMpIDogW107XG5cbiAgICB0aGlzLnN0eWxpbmcgPSB0aGlzLnNldERlZmF1bHRTdHlsZShbXG4gICAgICAuLi5kYXNoYm9hcmRDbGFzc2VzLFxuICAgICAgLi4uZGFzaGJvYXJkV2lkZ2V0Q2xhc3NlcyxcbiAgICAgIC4uLndpZGdldENsYXNzZXNcbiAgICBdKTtcbiAgICB0aGlzLmRlZmF1bHRTdHlsaW5nID0gdGhpcy5zZXREZWZhdWx0U3R5bGUoWy4uLmRhc2hib2FyZENsYXNzZXMsIC4uLmRhc2hib2FyZFdpZGdldENsYXNzZXNdKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNEYXNoYm9hcmREZWZhdWx0U3R5bGUoY2xhc3NOYW1lKSB7XG4gICAgY29uc3QgYWxsQ2xhc3NlcyA9IHtcbiAgICAgIC4uLnRoaXMubW8uYzh5X0Rhc2hib2FyZC5jbGFzc2VzLFxuICAgICAgLi4udGhpcy5tby5jOHlfRGFzaGJvYXJkLndpZGdldENsYXNzZXNcbiAgICB9O1xuICAgIGNvbnN0IHN0eWxlcyA9IE9iamVjdC5rZXlzKGFsbENsYXNzZXMpLm1hcChjc3NDbGFzcyA9PiAoeyBjbGFzczogY3NzQ2xhc3MgfSkpO1xuICAgIGNvbnN0IHN0eWxlID0gdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5nZXRTdHlsaW5nKFxuICAgICAgc3R5bGVzLFxuICAgICAgY2xhc3NOYW1lLnNwbGl0KCctJykucG9wKCksXG4gICAgICB1bmRlZmluZWRcbiAgICApO1xuICAgIHJldHVybiAhIXN0eWxlO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXREZWZhdWx0U3R5bGUoc2V0Q2xhc3Nlczogc3RyaW5nW10pIHtcbiAgICBsZXQgY29udGVudENsYXNzID0gdGhpcy5zdHlsaW5nLmNvbnRlbnRDbGFzcztcbiAgICBsZXQgaGVhZGVyQ2xhc3MgPSB0aGlzLnN0eWxpbmcuaGVhZGVyQ2xhc3M7XG4gICAgY29uc3Qgc3R5bGVzID0gdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZVxuICAgICAgLmdldEZpbHRlcmVkRGFzaGJvYXJkU3R5bGVzKHNldENsYXNzZXMpXG4gICAgICAubWFwKGMgPT4gYy5zcGxpdCgnLScpLnBvcCgpKTtcbiAgICBzdHlsZXMuZm9yRWFjaChzdHlsZU5hbWUgPT4ge1xuICAgICAgY29udGVudENsYXNzID0gdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5nZXRTdHlsaW5nKFxuICAgICAgICBXSURHRVRfQ09OVEVOVF9DTEFTU0VTLFxuICAgICAgICBzdHlsZU5hbWUsXG4gICAgICAgIGNvbnRlbnRDbGFzc1xuICAgICAgKTtcbiAgICAgIGhlYWRlckNsYXNzID0gdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5nZXRTdHlsaW5nKFxuICAgICAgICBXSURHRVRfSEVBREVSX0NMQVNTRVMsXG4gICAgICAgIHN0eWxlTmFtZSxcbiAgICAgICAgaGVhZGVyQ2xhc3NcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4geyBoZWFkZXJDbGFzcywgY29udGVudENsYXNzIH07XG4gIH1cblxuICBwcml2YXRlIGNvbXBvc2VXaWRnZXRDb25maWcoc2VsZWN0ZWRDb21wb25lbnQsIGNvbnRleHQgPSB7fSkge1xuICAgIGNvbnN0IHNldHRpbmcgPSB7XG4gICAgICBzZXR0aW5nczoge1xuICAgICAgICAuLi5zZWxlY3RlZENvbXBvbmVudC5kYXRhLnNldHRpbmdzLFxuICAgICAgICAuLi5nZXQoc2VsZWN0ZWRDb21wb25lbnQuZGF0YS5zZXR0aW5ncywgJ25nMS5vcHRpb25zJyksXG4gICAgICAgIC4uLmdldChzZWxlY3RlZENvbXBvbmVudC5kYXRhLCAnbmcxLm9wdGlvbnMnKSxcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgZGFzaGJvYXJkTW86IHRoaXMubW8uYzh5X0Rhc2hib2FyZFxuICAgICAgfSxcbiAgICAgIC4uLnNlbGVjdGVkQ29tcG9uZW50LmRhdGEuY29uZmlnXG4gICAgfSBhcyBDb250ZXh0V2lkZ2V0Q29uZmlnO1xuICAgIHJldHVybiB0aGlzLmFwcGx5VGFyZ2V0SWZEZXZpY2VEYXNoYm9hcmQoc2V0dGluZyk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5VGFyZ2V0SWZEZXZpY2VEYXNoYm9hcmQod2lkZ2V0Q29uZmlnOiBDb250ZXh0V2lkZ2V0Q29uZmlnKSB7XG4gICAgY29uc3QgaXNEZXZpY2VUeXBlID0gdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5pc0RldmljZVR5cGUodGhpcy5tbyk7XG5cbiAgICBpZiAoaXNEZXZpY2VUeXBlKSB7XG4gICAgICB3aWRnZXRDb25maWcuc2V0dGluZ3MuaGlkZVRhcmdldCA9IGlzRGV2aWNlVHlwZTtcblxuICAgICAgY29uc3Qgbm9EZXZpY2VUYXJnZXQgPSB3aWRnZXRDb25maWcuc2V0dGluZ3MubmcxXG4gICAgICAgID8gd2lkZ2V0Q29uZmlnLnNldHRpbmdzLm5nMS5vcHRpb25zLm5vRGV2aWNlVGFyZ2V0XG4gICAgICAgIDogd2lkZ2V0Q29uZmlnLnNldHRpbmdzLm5vRGV2aWNlVGFyZ2V0O1xuXG4gICAgICBpZiAoIW5vRGV2aWNlVGFyZ2V0KSB7XG4gICAgICAgIHdpZGdldENvbmZpZy5kZXZpY2UgPSB7XG4gICAgICAgICAgaWQ6IHRoaXMuY29udGV4dC5pZCxcbiAgICAgICAgICBuYW1lOiB0aGlzLmNvbnRleHQubmFtZVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gd2lkZ2V0Q29uZmlnO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHNlcGFyYXRvclwiPlxuICA8ZGl2IGlkPVwibW9kYWwtdGl0bGVcIiBjbGFzcz1cImgzXCIgdGl0bGU9XCJ7eyAnQWRkIHdpZGdldCcgfCB0cmFuc2xhdGUgfX1cIiAqbmdJZj1cIiFjdXJyZW50XCIgdHJhbnNsYXRlPkFkZCB3aWRnZXQ8L2Rpdj5cbiAgPGRpdiBpZD1cIm1vZGFsLXRpdGxlXCIgY2xhc3M9XCJoM1wiIHRpdGxlPVwie3sgJ0VkaXQgd2lkZ2V0JyB8IHRyYW5zbGF0ZSB9fVwiICpuZ0lmPVwiY3VycmVudFwiIHRyYW5zbGF0ZT5FZGl0IHdpZGdldDwvZGl2PlxuPC9kaXY+XG48Zm9ybSAjY29uZmlnRm9ybT1cIm5nRm9ybVwiIG5hbWU9XCJmb3JtXCI+XG4gIDxkaXYgY2xhc3M9XCJjOHktbW9kYWwtdGFic1wiIGlkPVwibW9kYWwtYm9keVwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0YWJDb250YWluZXJcIj5cbiAgICAgIDx1bCBjbGFzcz1cIm5hdiBuYXYtdGFicyBuYXYtdGFic2M4eSBwLWwtMjRcIj5cbiAgICAgICAgPGxpIFtjbGFzcy5hY3RpdmVdPVwibW9kZSA9PT0gJ3NlbGVjdCdcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0aXRsZT1cInt7ICdTZWxlY3Qgd2lkZ2V0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VNb2RlKCdzZWxlY3QnKTsgKGZhbHNlKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgYzh5SWNvbj1cInRoLWxhcmdlXCI+PC9pPlxuICAgICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPlNlbGVjdCB3aWRnZXQ8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbGk+XG4gICAgICAgIDxsaSBbY2xhc3MuYWN0aXZlXT1cIm1vZGUgPT09ICdjb25maWcnXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQ29uZmlndXJhdGlvbicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cImJ0blwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXNlbGVjdGVkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VNb2RlKCdjb25maWcnKTsgKGZhbHNlKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgYzh5SWNvbj1cImNvZ1wiPjwvaT5cbiAgICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5Db25maWd1cmF0aW9uPC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2xpPlxuICAgICAgICA8bGkgW2NsYXNzLmFjdGl2ZV09XCJtb2RlID09PSAnc3R5bGUnXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQXBwZWFyYW5jZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cImJ0blwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXNlbGVjdGVkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VNb2RlKCdzdHlsZScpOyAoZmFsc2UpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aSBjOHlJY29uPVwicGFpbnQtYnJ1c2hcIj48L2k+XG4gICAgICAgICAgICA8c3BhbiB0cmFuc2xhdGU+QXBwZWFyYW5jZTwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9saT5cbiAgICAgIDwvdWw+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1pbm5lci1zY3JvbGxcIj5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cIm1vZGUgPT09ICdzZWxlY3QnXCJcbiAgICAgIGNsYXNzPVwiYmctbGV2ZWwtMCBwLWwtMjQgcC1yLTI0IHAtdC04IHAtYi04IHN0aWNreS1oZWFkZXItdG9wLTBcIlxuICAgICAgc3R5bGU9XCJ6LWluZGV4OiAyXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBpbnB1dC1ncm91cC1zZWFyY2hcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidTZWFyY2gnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdTZWFyY2jigKYnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRlcm1cIlxuICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxuICAgICAgICAgICAgICAoa2V5ZG93bik9XCJzZWFyY2hDaGFuZ2UkLm5leHQoJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC1idG5cIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kb3RcIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ1NlYXJjaCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJyZXNldFNlYXJjaCgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpIFtjOHlJY29uXT1cInNlYXJjaFRlcm0ubGVuZ3RoID09PSAwID8gJ3NlYXJjaCcgOiAnY2xvc2UnXCI+PC9pPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBiZy1sZXZlbC0yXCIgKm5nSWY9XCJtb2RlID09PSAnc2VsZWN0J1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZ3JvdXAgY2FyZC1zZWxlY3QgbS1iLTBcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiY29sLW1kLTMgY29sLXNtLTQgY29sLXhzLTZcIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBjbXAgb2Ygc2VhcmNoUmVzdWx0IHx8IGNvbXBvbmVudHNcIlxuICAgICAgICAgIHRpdGxlPVwie3sgY21wLmRlc2NyaXB0aW9uIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIHAtOFwiIFtjbGFzcy5hY3RpdmVdPVwic2VsZWN0ZWQgPT09IGNtcFwiIChjbGljayk9XCJzZWxlY3QoY21wKVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHAtOCBtLWItOCBkLWNvbCBmbGV4LWNlbnRlciBiZy1sZXZlbC0yXCIgcm9sZT1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjbXAucHJldmlld0ltYWdlOyBlbHNlIHByZXZpZXdJbWFnZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoMVwiPjxpIGM4eUljb249XCJmaWxlLWltYWdlLW9cIj48L2k+PC9kaXY+XG4gICAgICAgICAgICAgICAgPHNtYWxsIHRyYW5zbGF0ZT5QcmV2aWV3IG5vdCBhdmFpbGFibGU8L3NtYWxsPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNwcmV2aWV3SW1hZ2U+XG4gICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1yZXNwb25zaXZlXCIgYWx0PVwiXCIgW3NyY109XCJjbXAucHJldmlld0ltYWdlXCIgLz5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJjYXJkLXRpdGxlIHRleHQtdHJ1bmNhdGVcIj5cbiAgICAgICAgICAgICAgPGM4eS1oaWdobGlnaHRcbiAgICAgICAgICAgICAgICB0ZXh0PVwie3sgY21wLmxhYmVsIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICBbcGF0dGVybl09XCJzZWFyY2hUZXJtXCJcbiAgICAgICAgICAgICAgPjwvYzh5LWhpZ2hsaWdodD5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImM4eS1lbXB0eS1zdGF0ZSB0ZXh0LWNlbnRlclwiICpuZ0lmPVwic2VhcmNoUmVzdWx0ICYmIHNlYXJjaFJlc3VsdC5sZW5ndGggPT09IDBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaDFcIiBjOHlJY29uPVwic2VhcmNoXCI+PC9kaXY+XG4gICAgICAgICAgPGgzIHRyYW5zbGF0ZT5ObyB3aWRnZXRzIGZvdW5kLjwvaDM+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxuICAgICAgICAgICAgPHAgdHJhbnNsYXRlIGNsYXNzPVwibS1yLThcIj5SZXBocmFzZSB5b3VyIHNlYXJjaCB0ZXJtLjwvcD5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnUmVzZXQgc2VhcmNoJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJyZXNldFNlYXJjaCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJ1Jlc2V0IHNlYXJjaCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBUaGUgZm9sbG93aW5nIGlzIGludGVudGlvbmFsIHNldCB0byBoaWRkZW4gdG8gYWxsb3cgdGhlIFZpZXdDaGlsZCByZWYgaW4gdGhlIGNvbnRyb2xsZXIgLS0+XG4gICAgPGRpdiAqbmdJZj1cInNlbGVjdGVkXCIgW2hpZGRlbl09XCJtb2RlICE9PSAnY29uZmlnJ1wiIHN0eWxlPVwibWF4LWhlaWdodDogY2FsYygxMDB2aCAtIDI5MHB4KVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInAtdC0xNiBmbGV4LW5vLWdyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtbC0yNFwiPlxuICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJ0ZXh0LWxlZnQgdGV4dC1tZWRpdW1cIj5cbiAgICAgICAgICAgICAgICB7eyBzZWxlY3RlZC5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2g0PlxuICAgICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICB7eyBzZWxlY3RlZC5kZXNjcmlwdGlvbiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLThcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXItMjRcIj5cbiAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJ3aWRnZXRUaXRsZVwiIHRyYW5zbGF0ZT5UaXRsZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICBpZD1cIndpZGdldFRpdGxlXCJcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWQuZGF0YS50aXRsZVwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICBuYW1lPVwidGl0bGVcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnZS5nLicgfCB0cmFuc2xhdGUgfX0ge3sgY29tcG9uZW50TGFiZWwgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicm93IGZsZXgtZ3JvdyBzZXBhcmF0b3ItdG9wXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnZC1mbGV4IG0tbC0wJzogd2lkZ2V0Q29uZmlnLm9wdGlvbnMgfHwgaGFzQ29uZmlnKCkgfVwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cIiF3aWRnZXRDb25maWcuc2V0dGluZ3M/Lm5vRGV2aWNlVGFyZ2V0XCJcbiAgICAgICAgICBjbGFzcz1cImEtaS1zdHJldGNoXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnYmctbGV2ZWwtMSBjb2wtc20tNCBwLWwtMCBwLXItMCc6IGhhc0NvbmZpZygpLFxuICAgICAgICAgICAgJ2JnLWxldmVsLTAgY29sLXNtLTEyJzogIWhhc0NvbmZpZygpXG4gICAgICAgICAgfVwiXG4gICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDM2MHB4XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWwtMTYgZml0LWggYmctaW5oZXJpdFwiIFtuZ0NsYXNzXT1cInsgJ3Atci0xNic6ICFoYXNDb25maWcoKSB9XCI+XG4gICAgICAgICAgICA8Yzh5LWFzc2V0LXNlbGVjdG9yLW1pbGxlclxuICAgICAgICAgICAgICAob25TZWxlY3RlZCk9XCJzZWxlY3Rpb25DaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgICAgICBbY29uZmlnXT1cIntcbiAgICAgICAgICAgICAgICB2aWV3OiAnbWlsbGVyJyxcbiAgICAgICAgICAgICAgICBncm91cHNTZWxlY3RhYmxlOiB0aGlzLndpZGdldENvbmZpZy5zZXR0aW5ncz8uZ3JvdXBzU2VsZWN0YWJsZSxcbiAgICAgICAgICAgICAgICBzaG93Q2hpbGREZXZpY2VzOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNvbHVtbkhlYWRlcnM6IHRydWUsXG4gICAgICAgICAgICAgICAgc2hvd1VuYXNzaWduZWREZXZpY2VzOiB0cnVlLFxuICAgICAgICAgICAgICAgIHNlYXJjaDogIXRoaXMud2lkZ2V0Q29uZmlnLnNldHRpbmdzLmNvbnRleHQ/LmFkZGl0aW9uUGFyZW50cyxcbiAgICAgICAgICAgICAgICBzaG93RmlsdGVyOiB0cnVlLFxuICAgICAgICAgICAgICAgIHNpbmdsZUNvbHVtbjogISF0aGlzLmhhc0NvbmZpZygpXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICBbYXNzZXRdPVwid2lkZ2V0Q29uZmlnLnNldHRpbmdzPy5jb250ZXh0XCJcbiAgICAgICAgICAgICAgW3NlbGVjdGVkRGV2aWNlXT1cInNlbGVjdGVkRGV2aWNlXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJiZy1pbmhlcml0IHAtcmVsYXRpdmVcIlxuICAgICAgICAgICAgPjwvYzh5LWFzc2V0LXNlbGVjdG9yLW1pbGxlcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnY29sLXNtLTgnOiAhd2lkZ2V0Q29uZmlnLnNldHRpbmdzPy5ub0RldmljZVRhcmdldCxcbiAgICAgICAgICAgICdjb2wtc20tMTIgcC1sLTMyIHAtci04Jzogd2lkZ2V0Q29uZmlnLnNldHRpbmdzPy5ub0RldmljZVRhcmdldFxuICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGM4eS1keW5hbWljLWNvbXBvbmVudFxuICAgICAgICAgICAgY2xhc3M9XCJkLWJsb2NrIHAtdC04IHAtci0yNFwiXG4gICAgICAgICAgICBbY29tcG9uZW50SWRdPVwic2VsZWN0ZWQuaWRcIlxuICAgICAgICAgICAgbW9kZT1cImNvbmZpZ1wiXG4gICAgICAgICAgICBbY29uZmlnXT1cIndpZGdldENvbmZpZ1wiXG4gICAgICAgICAgICBbbm90Rm91bmRFcnJvcl09XCJmYWxzZVwiXG4gICAgICAgICAgICAjY29uZmlnXG4gICAgICAgICAgPjwvYzh5LWR5bmFtaWMtY29tcG9uZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cIm1vZGUgPT09ICdzdHlsZSdcIiBjbGFzcz1cIm1vZGFsLWJvZHkgcC10LTBcIiBzdHlsZT1cIm1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggLSAyOTBweClcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy02XCI+XG4gICAgICAgICAgPGM4eS1hcHBlYXJhbmNlLXNldHRpbmdzXG4gICAgICAgICAgICBbKHRoZW1lQ2xhc3MpXT1cInN0eWxpbmcuY29udGVudENsYXNzXCJcbiAgICAgICAgICAgIFsoaGVhZGVyQ2xhc3MpXT1cInN0eWxpbmcuaGVhZGVyQ2xhc3NcIlxuICAgICAgICAgICAgW3Bvc3NpYmxlU3R5bGluZ1RoZW1lXT1cInBvc3NpYmxlU3R5bGluZy5XSURHRVRfQ09OVEVOVF9DTEFTU0VTXCJcbiAgICAgICAgICAgIFtwb3NzaWJsZVN0eWxpbmdIZWFkZXJdPVwicG9zc2libGVTdHlsaW5nLldJREdFVF9IRUFERVJfQ0xBU1NFU1wiXG4gICAgICAgICAgICBbZGVmYXVsdFRoZW1lQ2xhc3NdPVwiZGVmYXVsdFN0eWxpbmcuY29udGVudENsYXNzXCJcbiAgICAgICAgICAgIFtkZWZhdWx0SGVhZGVyQ2xhc3NdPVwiZGVmYXVsdFN0eWxpbmcuaGVhZGVyQ2xhc3NcIlxuICAgICAgICAgID48L2M4eS1hcHBlYXJhbmNlLXNldHRpbmdzPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy02IHN0aWNreS1oZWFkZXItdG9wLTBcIj5cbiAgICAgICAgICA8Yzh5LXdpZGdldC1wcmV2aWV3IFtwcmV2aWV3Q2xhc3Nlc109XCJnZXRTdHlsZSh0cnVlKVwiPjwvYzh5LXdpZGdldC1wcmV2aWV3PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgPGJ1dHRvblxuICAgICAgdGl0bGU9XCJ7eyAnQ2FuY2VsJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICAgIChjbGljayk9XCJjbG9zZSgpXCJcbiAgICA+XG4gICAgICB7eyAnQ2FuY2VsJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIHRpdGxlPVwie3sgJ1NhdmUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgKGNsaWNrKT1cInNhdmUoKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgIGNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmZvcm1EaXNhYmxlZCB8fCBjb25maWdGb3JtLmludmFsaWQgfHwgY2hlY2tJZkRldmljZVJlcXVpcmVkKClcbiAgICAgIFwiXG4gICAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgICAgW2FjdGlvbk5hbWVdPVwiY3VycmVudCA/ICdlZGl0V2lkZ2V0JyA6ICdjcmVhdGVXaWRnZXQnXCJcbiAgICAgIFthY3Rpb25EYXRhXT1cInsgd2lkZ2V0TmFtZTogc2VsZWN0ZWQgJiYgc2VsZWN0ZWQuaWQgfVwiXG4gICAgPlxuICAgICAge3sgJ1NhdmUnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9mb3JtPlxuIl19
|
|
235
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWNvbmZpZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb250ZXh0LWRhc2hib2FyZC93aWRnZXQtY29uZmlnLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL2NvbnRleHQtZGFzaGJvYXJkL3dpZGdldC1jb25maWcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFzQyx5QkFBeUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXBHLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBZ0IsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBRUwsc0JBQXNCLEVBQ3RCLHFCQUFxQixFQUV0QixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQWtCLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDOzs7Ozs7Ozs7Ozs7QUFNL0QsTUFBTSxPQUFPLHFCQUFxQjtJQTRDaEMsWUFDVSxhQUE0QixFQUM1QixLQUFpQixFQUNqQixTQUEyQixFQUM1Qix1QkFBZ0Q7UUFIL0Msa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNqQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtR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QUFFLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYTthQUNuQztZQUNELEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU07U0FDVixDQUFDO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLDRCQUE0QixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFTyw0QkFBNEIsQ0FBQyxZQUFpQztRQUNwRSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV4RSxJQUFJLFlBQVksRUFBRTtZQUNoQixZQUFZLENBQUMsUUFBUSxDQUFDLFVBQVUsR0FBRyxZQUFZLENBQUM7WUFFaEQsTUFBTSxjQUFjLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHO2dCQUM5QyxDQUFDLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLGNBQWM7Z0JBQ2xELENBQUMsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQztZQUV6QyxJQUFJLENBQUMsY0FBYyxFQUFFO2dCQUNuQixZQUFZLENBQUMsTUFBTSxHQUFHO29CQUNwQixFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUNuQixJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJO2lCQUN4QixDQUFDO2FBQ0g7U0FDRjtRQUNELE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7O2tIQTFSVSxxQkFBcUI7c0dBQXJCLHFCQUFxQixxS0NyQmxDLCswVEFxUkE7MkZEaFFhLHFCQUFxQjtrQkFKakMsU0FBUzsrQkFDRSxtQkFBbUI7a01BNEI3QixnQkFBZ0I7c0JBRGYsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRHluYW1pY0NvbXBvbmVudERlZmluaXRpb24sIFdpZGdldCwgRHluYW1pY0NvbXBvbmVudENvbXBvbmVudCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQXNzZXRTZWxlY3Rpb25DaGFuZ2VFdmVudCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvYXNzZXRzLW5hdmlnYXRvcic7XG5pbXBvcnQgeyBjbG9uZSwgY2xvbmVEZWVwLCBlc2NhcGVSZWdFeHAsIGdldCwgb21pdCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCc01vZGFsUmVmIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBpaWYsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0LFxuICBXSURHRVRfQ09OVEVOVF9DTEFTU0VTLFxuICBXSURHRVRfSEVBREVSX0NMQVNTRVMsXG4gIENvbnRleHRXaWRnZXRDb25maWdcbn0gZnJvbSAnLi9jb250ZXh0LWRhc2hib2FyZC5tb2RlbCc7XG5pbXBvcnQgeyBXaWRnZXRTZXJ2aWNlIH0gZnJvbSAnLi93aWRnZXQuc2VydmljZSc7XG5pbXBvcnQgeyBDb250ZXh0RGFzaGJvYXJkU2VydmljZSB9IGZyb20gJy4vY29udGV4dC1kYXNoYm9hcmQuc2VydmljZSc7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCwgSW52ZW50b3J5U2VydmljZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LXdpZGdldC1jb25maWcnLFxuICB0ZW1wbGF0ZVVybDogJy4vd2lkZ2V0LWNvbmZpZy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgV2lkZ2V0Q29uZmlnQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgc2VsZWN0ZWREZXZpY2U6IElNYW5hZ2VkT2JqZWN0O1xuICBtb2RlOiAnY29uZmlnJyB8ICdzZWxlY3QnIHwgJ3N0eWxlJyA9ICdzZWxlY3QnO1xuICBzZWFyY2hSZXN1bHQ6IER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uW107XG4gIGNvbXBvbmVudHM6IER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uW107XG4gIHNlbGVjdGVkOiBEeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvbjtcbiAgc2VhcmNoQ2hhbmdlJCA9IG5ldyBTdWJqZWN0KCk7XG4gIHNlYXJjaFRlcm0gPSAnJztcbiAgY29udGV4dDogYW55O1xuICBjb21wb25lbnRMYWJlbDogc3RyaW5nO1xuICBtbzogQ29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3Q7XG4gIHN0eWxpbmcgPSB7XG4gICAgaGVhZGVyQ2xhc3M6ICdwYW5lbC10aXRsZS1yZWd1bGFyJyxcbiAgICBjb250ZW50Q2xhc3M6ICdwYW5lbC1jb250ZW50LWxpZ2h0J1xuICB9O1xuICBkZWZhdWx0U3R5bGluZyA9IHtcbiAgICBoZWFkZXJDbGFzczogJ3BhbmVsLXRpdGxlLXJlZ3VsYXInLFxuICAgIGNvbnRlbnRDbGFzczogJ3BhbmVsLWNvbnRlbnQtbGlnaHQnXG4gIH07XG4gIHBvc3NpYmxlU3R5bGluZyA9IHsgV0lER0VUX0hFQURFUl9DTEFTU0VTLCBXSURHRVRfQ09OVEVOVF9DTEFTU0VTIH07XG4gIGN1cnJlbnQ6IGFueTtcbiAgd2lkZ2V0Q29uZmlnOiBDb250ZXh0V2lkZ2V0Q29uZmlnO1xuICBpc1VwZ3JhZGUgPSBmYWxzZTtcblxuICBAVmlld0NoaWxkKCdjb25maWcnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgZHluYW1pY0NvbXBvbmVudDogRHluYW1pY0NvbXBvbmVudENvbXBvbmVudDtcblxuICBnZXQgaXNFZGl0KCkge1xuICAgIHJldHVybiAhIXRoaXMuY3VycmVudDtcbiAgfVxuXG4gIGdldCBpc0RldmljZVR5cGVEYXNoYm9hcmQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5tby5jOHlfRGFzaGJvYXJkPy5kZXZpY2VUeXBlICYmICEhdGhpcy5tby5jOHlfRGFzaGJvYXJkPy5kZXZpY2VUeXBlVmFsdWU7XG4gIH1cblxuICByZXN1bHQ6IFByb21pc2U8V2lkZ2V0PiA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICB0aGlzLl9zYXZlID0gcmVzb2x2ZTtcbiAgICB0aGlzLl9jYW5jZWwgPSByZWplY3Q7XG4gIH0pO1xuXG4gIHByaXZhdGUgc2VhcmNoU3ViOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgX3NhdmU6ICh2YWx1ZTogV2lkZ2V0KSA9PiB2b2lkO1xuICBwcml2YXRlIF9jYW5jZWw6IChyZWFzb24/OiBhbnkpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB3aWRnZXRTZXJ2aWNlOiBXaWRnZXRTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kYWw6IEJzTW9kYWxSZWYsXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnk6IEludmVudG9yeVNlcnZpY2UsXG4gICAgcHVibGljIGNvbnRleHREYXNoYm9hcmRTZXJ2aWNlOiBDb250ZXh0RGFzaGJvYXJkU2VydmljZVxuICApIHt9XG5cbiAgYXN5bmMgbmdBZnRlckNvbnRlbnRJbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuY29tcG9uZW50cyA9IHRoaXMud2lkZ2V0U2VydmljZS5nZXRXaWRnZXREZWZpbml0aW9ucygpO1xuXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuY3VycmVudCA9IGNsb25lKHRoaXMuc2VsZWN0ZWQpO1xuICAgICAgdGhpcy5zZWxlY3QodGhpcy5zZWxlY3RlZCwgdGhpcy5pc0VkaXQgPyAnY29uZmlnJyA6ICdzZWxlY3QnKTtcbiAgICB9XG5cbiAgICB0aGlzLnNlYXJjaFN1YiA9IHRoaXMuc2VhcmNoQ2hhbmdlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IGlpZigoKSA9PiBldmVudC53aGljaCAhPT0gMTMsIHRpbWVyKDIwMCksIHRpbWVyKDEwKSkpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5zZWFyY2goKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5zZXRTdHlsaW5ncygpO1xuXG4gICAgaWYgKHRoaXMud2lkZ2V0Q29uZmlnICYmIHRoaXMud2lkZ2V0Q29uZmlnLmRldmljZSkge1xuICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCB0aGlzLmludmVudG9yeS5kZXRhaWwodGhpcy53aWRnZXRDb25maWcuZGV2aWNlLmlkKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWREZXZpY2UgPSBkYXRhO1xuICAgIH1cbiAgfVxuXG4gIGNoZWNrSWZEZXZpY2VSZXF1aXJlZCgpIHtcbiAgICByZXR1cm4gKFxuICAgICAgIXRoaXMud2lkZ2V0Q29uZmlnIHx8XG4gICAgICAoIXRoaXMud2lkZ2V0Q29uZmlnLnNldHRpbmdzLmRldmljZVRhcmdldE5vdFJlcXVpcmVkICYmXG4gICAgICAgICF0aGlzLndpZGdldENvbmZpZy5kZXZpY2UgJiZcbiAgICAgICAgIXRoaXMud2lkZ2V0Q29uZmlnLnNldHRpbmdzLm5vRGV2aWNlVGFyZ2V0KVxuICAgICk7XG4gIH1cblxuICBzZWxlY3Rpb25DaGFuZ2VkKHNlbGVjdGlvbjogQXNzZXRTZWxlY3Rpb25DaGFuZ2VFdmVudCkge1xuICAgIHRoaXMud2lkZ2V0Q29uZmlnLmRldmljZSA9IHNlbGVjdGlvbi5jaGFuZ2UuaXRlbTtcbiAgfVxuXG4gIGFzeW5jIHNhdmUoKSB7XG4gICAgY29uc3QgaG9va1N1Y2Nlc3MgPSBhd2FpdCB0aGlzLmR5bmFtaWNDb21wb25lbnQuY2FsbExpZmVDeWNsZUhvb2tzKCkudG9Qcm9taXNlKCk7XG4gICAgaWYgKCFob29rU3VjY2Vzcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgX3gsIF95LCBfd2lkdGgsIF9oZWlnaHQgfSA9IHRoaXMuc2VsZWN0ZWQuZGF0YTtcblxuICAgIGlmIChcbiAgICAgIHRoaXMud2lkZ2V0Q29uZmlnICYmXG4gICAgICB0aGlzLndpZGdldENvbmZpZy5kZXZpY2UgJiZcbiAgICAgIC8vIHNlcmlhbGl6aW5nIHdpbGwgYmUgaGFuZGxlZCBieSByZXNvbHZlclxuICAgICAgIXRoaXMuc2VsZWN0ZWQ/LnJlc29sdmU/LmRldmljZVxuICAgICkge1xuICAgICAgY29uc3QgeyBpZCwgbmFtZSB9ID0gdGhpcy53aWRnZXRDb25maWcuZGV2aWNlO1xuICAgICAgdGhpcy53aWRnZXRDb25maWcuZGV2aWNlID0geyBpZCwgbmFtZSB9O1xuICAgIH1cblxuICAgIGNvbnN0IHdpZGdldCA9IHtcbiAgICAgIF94LFxuICAgICAgX3ksXG4gICAgICBfd2lkdGgsXG4gICAgICBfaGVpZ2h0LFxuICAgICAgY29uZmlnOiBvbWl0KHRoaXMud2lkZ2V0Q29uZmlnLCBbJ3NldHRpbmdzJywgJ2Rpc3BsYXlTZXR0aW5ncyddKSxcbiAgICAgIHRpdGxlOiB0aGlzLnNlbGVjdGVkLmRhdGEudGl0bGUsXG4gICAgICBjb21wb25lbnRJZDogdGhpcy5zZWxlY3RlZC5pZCxcbiAgICAgIGlkOiB0aGlzLmlzRWRpdCA/IHRoaXMuY3VycmVudC5kYXRhLmlkIDogU3RyaW5nKE1hdGgucmFuZG9tKCkpLnN1YnN0cigyKSxcbiAgICAgIGNsYXNzZXM6IHRoaXMuZ2V0U3R5bGUoKSxcbiAgICAgIC4uLighdGhpcy5pc0VkaXQgPyB0aGlzLndpZGdldENvbmZpZy5zZXR0aW5ncy53aWRnZXREZWZhdWx0cyA6IHt9KVxuICAgIH0gYXMgV2lkZ2V0O1xuXG4gICAgdGhpcy5fc2F2ZSh3aWRnZXQpO1xuICB9XG5cbiAgc2VsZWN0KGNtcCwgbW9kZTogJ3NlbGVjdCcgfCAnY29uZmlnJyA9ICdjb25maWcnKSB7XG4gICAgY21wLmRhdGEgPSBjbXAuZGF0YSB8fCB7fTtcbiAgICB0aGlzLnNlbGVjdGVkID0gY21wO1xuXG4gICAgdGhpcy5pc1VwZ3JhZGUgPSAhIWdldChjbXAsICdkYXRhLnNldHRpbmdzLnVwZ3JhZGUnKTtcbiAgICB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmZvcm1EaXNhYmxlZCA9IHRoaXMuaXNVcGdyYWRlO1xuXG4gICAgaWYgKHRoaXMuaXNFZGl0KSB7XG4gICAgICBjb25zdCB7IF94LCBfeSwgX3dpZHRoLCBfaGVpZ2h0LCBjbGFzc2VzLCB0aXRsZSB9ID0gdGhpcy5jdXJyZW50LmRhdGE7XG4gICAgICB0aGlzLnNlbGVjdGVkLmRhdGEgPSB7IC4uLnRoaXMuc2VsZWN0ZWQuZGF0YSwgX3gsIF95LCBfd2lkdGgsIF9oZWlnaHQsIGNsYXNzZXMsIHRpdGxlIH07XG4gICAgfVxuXG4gICAgdGhpcy53aWRnZXRDb25maWcgPSBjbG9uZURlZXAodGhpcy5jb21wb3NlV2lkZ2V0Q29uZmlnKHRoaXMuc2VsZWN0ZWQsIHRoaXMuY29udGV4dCkpO1xuXG4gICAgdGhpcy5zZWxlY3RlZC5kYXRhLnRpdGxlID0gdGhpcy5zZWxlY3RlZC5kYXRhLnRpdGxlIHx8IGNtcC5sYWJlbDtcbiAgICB0aGlzLmNvbXBvbmVudExhYmVsID0gY21wLmxhYmVsO1xuICAgIHRoaXMubW9kZSA9IG1vZGU7XG4gIH1cblxuICBzZWFyY2goKSB7XG4gICAgaWYgKHRoaXMuc2VhcmNoVGVybS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlYXJjaFJlc3VsdCA9IHRoaXMuY29tcG9uZW50cy5maWx0ZXIoY21wID0+XG4gICAgICAgIG5ldyBSZWdFeHAoZXNjYXBlUmVnRXhwKHRoaXMuc2VhcmNoVGVybS50cmltKCkpLCAnaScpLnRlc3QoY21wLmxhYmVsKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZXNldFNlYXJjaCgpO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0U2VhcmNoKCkge1xuICAgIHRoaXMuc2VhcmNoVGVybSA9ICcnO1xuICAgIHRoaXMuc2VhcmNoUmVzdWx0ID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgY2hhbmdlTW9kZShtb2RlOiAnY29uZmlnJyB8ICdzZWxlY3QnIHwgJ3N0eWxlJykge1xuICAgIHRoaXMubW9kZSA9IG1vZGU7XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLl9jYW5jZWwoKTtcbiAgICB0aGlzLm1vZGFsLmhpZGUoKTtcbiAgfVxuXG4gIGdldFN0eWxlKGlzUHJldmlldyA9IGZhbHNlKSB7XG4gICAgY29uc3QgY3NzQ2xhc3NlcyA9IHt9O1xuICAgIGlmIChpc1ByZXZpZXcgfHwgIXRoaXMuaXNEYXNoYm9hcmREZWZhdWx0U3R5bGUodGhpcy5zdHlsaW5nLmhlYWRlckNsYXNzKSkge1xuICAgICAgY3NzQ2xhc3Nlc1t0aGlzLnN0eWxpbmcuaGVhZGVyQ2xhc3NdID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoaXNQcmV2aWV3IHx8ICF0aGlzLmlzRGFzaGJvYXJkRGVmYXVsdFN0eWxlKHRoaXMuc3R5bGluZy5jb250ZW50Q2xhc3MpKSB7XG4gICAgICBjc3NDbGFzc2VzW3RoaXMuc3R5bGluZy5jb250ZW50Q2xhc3NdID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoaXNQcmV2aWV3KSB7XG4gICAgICBjc3NDbGFzc2VzW2BkYXNoYm9hcmQtdGhlbWUtJHt0aGlzLmRlZmF1bHRTdHlsaW5nLmNvbnRlbnRDbGFzcy5zcGxpdCgnLScpLnBvcCgpfWBdID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gY3NzQ2xhc3NlcztcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuZm9ybURpc2FibGVkID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5zZWFyY2hTdWIpIHtcbiAgICAgIHRoaXMuc2VhcmNoU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgaGFzQ29uZmlnKCkge1xuICAgIGlmICh0aGlzLndpZGdldENvbmZpZy5zZXR0aW5ncz8udXBncmFkZSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgdGhpcy53aWRnZXRDb25maWcuc2V0dGluZ3M/LmNvbmZpZ0NvbXBvbmVudCB8fCB0aGlzLndpZGdldENvbmZpZy5zZXR0aW5ncz8uY29uZmlnVGVtcGxhdGVVcmxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiAhdGhpcy5keW5hbWljQ29tcG9uZW50Py5lcnJvcjtcbiAgfVxuXG4gIHByaXZhdGUgc2V0U3R5bGluZ3MoKTogdm9pZCB7XG4gICAgY29uc3QgZGFzaGJvYXJkQ2xhc3Nlczogc3RyaW5nW10gPVxuICAgICAgKHRoaXMubW8uYzh5X0Rhc2hib2FyZD8uY2xhc3NlcyAmJiBPYmplY3Qua2V5cyh0aGlzLm1vLmM4eV9EYXNoYm9hcmQuY2xhc3NlcykpIHx8IFtdO1xuICAgIGNvbnN0IGRhc2hib2FyZFdpZGdldENsYXNzZXM6IHN0cmluZ1tdID1cbiAgICAgICh0aGlzLm1vLmM4eV9EYXNoYm9hcmQ/LndpZGdldENsYXNzZXMgJiYgT2JqZWN0LmtleXModGhpcy5tby5jOHlfRGFzaGJvYXJkLndpZGdldENsYXNzZXMpKSB8fFxuICAgICAgW107XG4gICAgY29uc3Qgd2lkZ2V0Q2xhc3Nlczogc3RyaW5nW10gPSB0aGlzLmlzRWRpdCA/IE9iamVjdC5rZXlzKHRoaXMuY3VycmVudC5kYXRhLmNsYXNzZXMpIDogW107XG5cbiAgICB0aGlzLnN0eWxpbmcgPSB0aGlzLnNldERlZmF1bHRTdHlsZShbXG4gICAgICAuLi5kYXNoYm9hcmRDbGFzc2VzLFxuICAgICAgLi4uZGFzaGJvYXJkV2lkZ2V0Q2xhc3NlcyxcbiAgICAgIC4uLndpZGdldENsYXNzZXNcbiAgICBdKTtcbiAgICB0aGlzLmRlZmF1bHRTdHlsaW5nID0gdGhpcy5zZXREZWZhdWx0U3R5bGUoWy4uLmRhc2hib2FyZENsYXNzZXMsIC4uLmRhc2hib2FyZFdpZGdldENsYXNzZXNdKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNEYXNoYm9hcmREZWZhdWx0U3R5bGUoY2xhc3NOYW1lKSB7XG4gICAgY29uc3QgYWxsQ2xhc3NlcyA9IHtcbiAgICAgIC4uLnRoaXMubW8uYzh5X0Rhc2hib2FyZC5jbGFzc2VzLFxuICAgICAgLi4udGhpcy5tby5jOHlfRGFzaGJvYXJkLndpZGdldENsYXNzZXNcbiAgICB9O1xuICAgIGNvbnN0IHN0eWxlcyA9IE9iamVjdC5rZXlzKGFsbENsYXNzZXMpLm1hcChjc3NDbGFzcyA9PiAoeyBjbGFzczogY3NzQ2xhc3MgfSkpO1xuICAgIGNvbnN0IHN0eWxlID0gdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5nZXRTdHlsaW5nKFxuICAgICAgc3R5bGVzLFxuICAgICAgY2xhc3NOYW1lLnNwbGl0KCctJykucG9wKCksXG4gICAgICB1bmRlZmluZWRcbiAgICApO1xuICAgIHJldHVybiAhIXN0eWxlO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXREZWZhdWx0U3R5bGUoc2V0Q2xhc3Nlczogc3RyaW5nW10pIHtcbiAgICBsZXQgY29udGVudENsYXNzID0gdGhpcy5zdHlsaW5nLmNvbnRlbnRDbGFzcztcbiAgICBsZXQgaGVhZGVyQ2xhc3MgPSB0aGlzLnN0eWxpbmcuaGVhZGVyQ2xhc3M7XG4gICAgY29uc3Qgc3R5bGVzID0gdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZVxuICAgICAgLmdldEZpbHRlcmVkRGFzaGJvYXJkU3R5bGVzKHNldENsYXNzZXMpXG4gICAgICAubWFwKGMgPT4gYy5zcGxpdCgnLScpLnBvcCgpKTtcbiAgICBzdHlsZXMuZm9yRWFjaChzdHlsZU5hbWUgPT4ge1xuICAgICAgY29udGVudENsYXNzID0gdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5nZXRTdHlsaW5nKFxuICAgICAgICBXSURHRVRfQ09OVEVOVF9DTEFTU0VTLFxuICAgICAgICBzdHlsZU5hbWUsXG4gICAgICAgIGNvbnRlbnRDbGFzc1xuICAgICAgKTtcbiAgICAgIGhlYWRlckNsYXNzID0gdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5nZXRTdHlsaW5nKFxuICAgICAgICBXSURHRVRfSEVBREVSX0NMQVNTRVMsXG4gICAgICAgIHN0eWxlTmFtZSxcbiAgICAgICAgaGVhZGVyQ2xhc3NcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4geyBoZWFkZXJDbGFzcywgY29udGVudENsYXNzIH07XG4gIH1cblxuICBwcml2YXRlIGNvbXBvc2VXaWRnZXRDb25maWcoc2VsZWN0ZWRDb21wb25lbnQsIGNvbnRleHQgPSB7fSkge1xuICAgIGNvbnN0IHNldHRpbmcgPSB7XG4gICAgICBzZXR0aW5nczoge1xuICAgICAgICAuLi5zZWxlY3RlZENvbXBvbmVudC5kYXRhLnNldHRpbmdzLFxuICAgICAgICAuLi5nZXQoc2VsZWN0ZWRDb21wb25lbnQuZGF0YS5zZXR0aW5ncywgJ25nMS5vcHRpb25zJyksXG4gICAgICAgIC4uLmdldChzZWxlY3RlZENvbXBvbmVudC5kYXRhLCAnbmcxLm9wdGlvbnMnKSxcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgZGFzaGJvYXJkTW86IHRoaXMubW8uYzh5X0Rhc2hib2FyZFxuICAgICAgfSxcbiAgICAgIC4uLnNlbGVjdGVkQ29tcG9uZW50LmRhdGEuY29uZmlnXG4gICAgfSBhcyBDb250ZXh0V2lkZ2V0Q29uZmlnO1xuICAgIHJldHVybiB0aGlzLmFwcGx5VGFyZ2V0SWZEZXZpY2VEYXNoYm9hcmQoc2V0dGluZyk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5VGFyZ2V0SWZEZXZpY2VEYXNoYm9hcmQod2lkZ2V0Q29uZmlnOiBDb250ZXh0V2lkZ2V0Q29uZmlnKSB7XG4gICAgY29uc3QgaXNEZXZpY2VUeXBlID0gdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5pc0RldmljZVR5cGUodGhpcy5tbyk7XG5cbiAgICBpZiAoaXNEZXZpY2VUeXBlKSB7XG4gICAgICB3aWRnZXRDb25maWcuc2V0dGluZ3MuaGlkZVRhcmdldCA9IGlzRGV2aWNlVHlwZTtcblxuICAgICAgY29uc3Qgbm9EZXZpY2VUYXJnZXQgPSB3aWRnZXRDb25maWcuc2V0dGluZ3MubmcxXG4gICAgICAgID8gd2lkZ2V0Q29uZmlnLnNldHRpbmdzLm5nMS5vcHRpb25zLm5vRGV2aWNlVGFyZ2V0XG4gICAgICAgIDogd2lkZ2V0Q29uZmlnLnNldHRpbmdzLm5vRGV2aWNlVGFyZ2V0O1xuXG4gICAgICBpZiAoIW5vRGV2aWNlVGFyZ2V0KSB7XG4gICAgICAgIHdpZGdldENvbmZpZy5kZXZpY2UgPSB7XG4gICAgICAgICAgaWQ6IHRoaXMuY29udGV4dC5pZCxcbiAgICAgICAgICBuYW1lOiB0aGlzLmNvbnRleHQubmFtZVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gd2lkZ2V0Q29uZmlnO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHNlcGFyYXRvclwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJoM1wiXG4gICAgdGl0bGU9XCJ7eyAnQWRkIHdpZGdldCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgIGlkPVwibW9kYWwtdGl0bGVcIlxuICAgICpuZ0lmPVwiIWN1cnJlbnRcIlxuICAgIHRyYW5zbGF0ZVxuICA+XG4gICAgQWRkIHdpZGdldFxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiaDNcIlxuICAgIHRpdGxlPVwie3sgJ0VkaXQgd2lkZ2V0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgaWQ9XCJtb2RhbC10aXRsZVwiXG4gICAgKm5nSWY9XCJjdXJyZW50XCJcbiAgICB0cmFuc2xhdGVcbiAgPlxuICAgIEVkaXQgd2lkZ2V0XG4gIDwvZGl2PlxuPC9kaXY+XG48Zm9ybSBuYW1lPVwiZm9ybVwiICNjb25maWdGb3JtPVwibmdGb3JtXCI+XG4gIDxkaXYgY2xhc3M9XCJjOHktbW9kYWwtdGFic1wiIGlkPVwibW9kYWwtYm9keVwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0YWJDb250YWluZXJcIj5cbiAgICAgIDx1bCBjbGFzcz1cIm5hdiBuYXYtdGFicyBuYXYtdGFic2M4eSBwLWwtMjRcIj5cbiAgICAgICAgPGxpIFtjbGFzcy5hY3RpdmVdPVwibW9kZSA9PT0gJ3NlbGVjdCdcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cImJ0blwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIHRpdGxlPVwie3sgJ1NlbGVjdCB3aWRnZXQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VNb2RlKCdzZWxlY3QnKTsgKGZhbHNlKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgYzh5SWNvbj1cInRoLWxhcmdlXCI+PC9pPlxuICAgICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPlNlbGVjdCB3aWRnZXQ8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbGk+XG4gICAgICAgIDxsaSBbY2xhc3MuYWN0aXZlXT1cIm1vZGUgPT09ICdjb25maWcnXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJidG5cIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICB0aXRsZT1cInt7ICdDb25maWd1cmF0aW9uJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXNlbGVjdGVkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VNb2RlKCdjb25maWcnKTsgKGZhbHNlKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgYzh5SWNvbj1cImNvZ1wiPjwvaT5cbiAgICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5Db25maWd1cmF0aW9uPC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2xpPlxuICAgICAgICA8bGkgW2NsYXNzLmFjdGl2ZV09XCJtb2RlID09PSAnc3R5bGUnXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJidG5cIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICB0aXRsZT1cInt7ICdBcHBlYXJhbmNlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXNlbGVjdGVkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VNb2RlKCdzdHlsZScpOyAoZmFsc2UpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aSBjOHlJY29uPVwicGFpbnQtYnJ1c2hcIj48L2k+XG4gICAgICAgICAgICA8c3BhbiB0cmFuc2xhdGU+QXBwZWFyYW5jZTwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9saT5cbiAgICAgIDwvdWw+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1pbm5lci1zY3JvbGwgbW9kYWwtaW5uZXItc2Nyb2xsLS1maXhlZFwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiYmctbGV2ZWwtMCBwLWwtMjQgcC1yLTI0IHAtdC04IHAtYi04IHN0aWNreS1oZWFkZXItdG9wLTBcIlxuICAgICAgc3R5bGU9XCJ6LWluZGV4OiAyXCJcbiAgICAgICpuZ0lmPVwibW9kZSA9PT0gJ3NlbGVjdCdcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIGlucHV0LWdyb3VwLXNlYXJjaFwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgZGF0YS1jeT1cIndpZGdldC1jb25maWctLVNlYXJjaFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInU2VhcmNoJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ1NlYXJjaOKApicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRlcm1cIlxuICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxuICAgICAgICAgICAgICAoa2V5ZG93bik9XCJzZWFyY2hDaGFuZ2UkLm5leHQoJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC1idG5cIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kb3RcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ1NlYXJjaCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJyZXNldFNlYXJjaCgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpIFtjOHlJY29uXT1cInNlYXJjaFRlcm0ubGVuZ3RoID09PSAwID8gJ3NlYXJjaCcgOiAnY2xvc2UnXCI+PC9pPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBiZy1sZXZlbC0yXCIgKm5nSWY9XCJtb2RlID09PSAnc2VsZWN0J1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZ3JvdXAgY2FyZC1zZWxlY3QgbS1iLTBcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiY29sLW1kLTMgY29sLXNtLTQgY29sLXhzLTZcIlxuICAgICAgICAgIHRpdGxlPVwie3sgY21wLmRlc2NyaXB0aW9uIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgY21wIG9mIHNlYXJjaFJlc3VsdCB8fCBjb21wb25lbnRzXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiYnRuLWNsZWFuIGNhcmQgcC04XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJzZWxlY3RlZCA9PT0gY21wXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3QoY21wKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHAtOCBtLWItOCBkLWNvbCBmbGV4LWNlbnRlciBiZy1sZXZlbC0yXCIgcm9sZT1cInByZXNlbnRhdGlvblwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNtcC5wcmV2aWV3SW1hZ2U7IGVsc2UgcHJldmlld0ltYWdlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgxXCI+PGkgYzh5SWNvbj1cImZpbGUtaW1hZ2Utb1wiPjwvaT48L2Rpdj5cbiAgICAgICAgICAgICAgICA8c21hbGwgdHJhbnNsYXRlPlByZXZpZXcgbm90IGF2YWlsYWJsZTwvc21hbGw+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3ByZXZpZXdJbWFnZT5cbiAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLXJlc3BvbnNpdmVcIiBhbHQgW3NyY109XCJjbXAucHJldmlld0ltYWdlXCIgLz5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJjYXJkLXRpdGxlIHRleHQtdHJ1bmNhdGVcIj5cbiAgICAgICAgICAgICAgPGM4eS1oaWdobGlnaHRcbiAgICAgICAgICAgICAgICB0ZXh0PVwie3sgY21wLmxhYmVsIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICBbcGF0dGVybl09XCJzZWFyY2hUZXJtXCJcbiAgICAgICAgICAgICAgPjwvYzh5LWhpZ2hsaWdodD5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImM4eS1lbXB0eS1zdGF0ZSB0ZXh0LWNlbnRlclwiICpuZ0lmPVwic2VhcmNoUmVzdWx0ICYmIHNlYXJjaFJlc3VsdC5sZW5ndGggPT09IDBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaDFcIiBjOHlJY29uPVwic2VhcmNoXCI+PC9kaXY+XG4gICAgICAgICAgPGgzIHRyYW5zbGF0ZT5ObyB3aWRnZXRzIGZvdW5kLjwvaDM+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJtLXItOFwiIHRyYW5zbGF0ZT5SZXBocmFzZSB5b3VyIHNlYXJjaCB0ZXJtLjwvcD5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnUmVzZXQgc2VhcmNoJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJyZXNldFNlYXJjaCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJ1Jlc2V0IHNlYXJjaCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBUaGUgZm9sbG93aW5nIGlzIGludGVudGlvbmFsIHNldCB0byBoaWRkZW4gdG8gYWxsb3cgdGhlIFZpZXdDaGlsZCByZWYgaW4gdGhlIGNvbnRyb2xsZXIgLS0+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBkLWNvbCBmaXQtaFwiICpuZ0lmPVwic2VsZWN0ZWRcIiBbbmdDbGFzc109XCJ7IGhpZGRlbjogbW9kZSAhPT0gJ2NvbmZpZycgfVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInAtdC0xNiBmbGV4LW5vLXNocmluayBzZXBhcmF0b3ItYm90dG9tIHAtYi0xNlwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS00XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1sLTI0XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxlZnQgdGV4dC1tZWRpdW0gaDRcIj5cbiAgICAgICAgICAgICAgICB7eyBzZWxlY3RlZC5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAge3sgc2VsZWN0ZWQuZGVzY3JpcHRpb24gfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS04XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1yLTI0XCI+XG4gICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwid2lkZ2V0VGl0bGVcIiB0cmFuc2xhdGU+VGl0bGU8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJ3aWRnZXRUaXRsZVwiXG4gICAgICAgICAgICAgICAgICBuYW1lPVwidGl0bGVcIlxuICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZC5kYXRhLnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2UuZy4nIHwgdHJhbnNsYXRlIH19IHt7IGNvbXBvbmVudExhYmVsIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBmbGV4LWdyb3dcIiBbbmdDbGFzc109XCJ7ICdkLWZsZXgnOiB3aWRnZXRDb25maWcub3B0aW9ucyB8fCBoYXNDb25maWcoKSB9XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImEtcy1zdHJldGNoXCJcbiAgICAgICAgICAqbmdJZj1cIiF3aWRnZXRDb25maWcuc2V0dGluZ3M/Lm5vRGV2aWNlVGFyZ2V0XCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnYmctbGV2ZWwtMSBjb2wtc20tNCBwLXItMCc6IGhhc0NvbmZpZygpLFxuICAgICAgICAgICAgJ2JnLWxldmVsLTAgY29sLXNtLTEyJzogIWhhc0NvbmZpZygpXG4gICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZml0LWggYmctaW5oZXJpdCBwLWwtMTZcIiBbbmdDbGFzc109XCJ7ICdwLXItMjQnOiAhaGFzQ29uZmlnKCkgfVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtcmVsYXRpdmUgYmctaW5oZXJpdFwiPlxuICAgICAgICAgICAgICA8Yzh5LWFzc2V0LXNlbGVjdG9yLW1pbGxlclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1ibG9jayBiZy1pbmhlcml0IHAtcmVsYXRpdmVcIlxuICAgICAgICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNDIycHgpXCJcbiAgICAgICAgICAgICAgICAob25TZWxlY3RlZCk9XCJzZWxlY3Rpb25DaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChvbkNsZWFyU2VsZWN0ZWQpPVwic2VsZWN0aW9uQ2hhbmdlZCgpXCJcbiAgICAgICAgICAgICAgICBbY29uZmlnXT1cIntcbiAgICAgICAgICAgICAgICAgIHZpZXc6ICdtaWxsZXInLFxuICAgICAgICAgICAgICAgICAgZ3JvdXBzU2VsZWN0YWJsZTogdGhpcy53aWRnZXRDb25maWcuc2V0dGluZ3M/Lmdyb3Vwc1NlbGVjdGFibGUsXG4gICAgICAgICAgICAgICAgICBzaG93Q2hpbGREZXZpY2VzOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgY29sdW1uSGVhZGVyczogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIHNob3dVbmFzc2lnbmVkRGV2aWNlczogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIHNlYXJjaDogIXRoaXMud2lkZ2V0Q29uZmlnLnNldHRpbmdzLmNvbnRleHQ/LmFkZGl0aW9uUGFyZW50cyxcbiAgICAgICAgICAgICAgICAgIHNob3dGaWx0ZXI6IHRydWUsXG4gICAgICAgICAgICAgICAgICBzaW5nbGVDb2x1bW46ICEhdGhpcy5oYXNDb25maWcoKVxuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgIFthc3NldF09XCJ3aWRnZXRDb25maWcuc2V0dGluZ3M/LmNvbnRleHRcIlxuICAgICAgICAgICAgICAgIFtzZWxlY3RlZERldmljZV09XCJzZWxlY3RlZERldmljZVwiXG4gICAgICAgICAgICAgID48L2M4eS1hc3NldC1zZWxlY3Rvci1taWxsZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnY29sLXNtLTgnOiAhd2lkZ2V0Q29uZmlnLnNldHRpbmdzPy5ub0RldmljZVRhcmdldCxcbiAgICAgICAgICAgICdjb2wtc20tMTInOiB3aWRnZXRDb25maWcuc2V0dGluZ3M/Lm5vRGV2aWNlVGFyZ2V0LFxuICAgICAgICAgICAgJ3NyLW9ubHknOiAhaGFzQ29uZmlnKClcbiAgICAgICAgICB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjOHktZHluYW1pYy1jb21wb25lbnRcbiAgICAgICAgICAgIGNsYXNzPVwiZC1ibG9ja1wiXG4gICAgICAgICAgICBzdHlsZT1cImhlaWdodDoge3sgaGFzQ29uZmlnKCkgPyAnY2FsYygxMDB2aCAtIDQyMnB4KScgOiAnMCcgfX1cIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaW5uZXItc2Nyb2xsIHAtci0yNCc6ICF3aWRnZXRDb25maWcuc2V0dGluZ3M/Lm5vRGV2aWNlVGFyZ2V0IH1cIlxuICAgICAgICAgICAgW2NvbXBvbmVudElkXT1cInNlbGVjdGVkLmlkXCJcbiAgICAgICAgICAgIG1vZGU9XCJjb25maWdcIlxuICAgICAgICAgICAgW2NvbmZpZ109XCJ3aWRnZXRDb25maWdcIlxuICAgICAgICAgICAgW25vdEZvdW5kRXJyb3JdPVwiZmFsc2VcIlxuICAgICAgICAgICAgI2NvbmZpZ1xuICAgICAgICAgID48L2M4eS1keW5hbWljLWNvbXBvbmVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHAtdC0wXCIgc3R5bGU9XCJoZWlnaHQ6IGNhbGMoMTAwdmggLSAzMTBweClcIiAqbmdJZj1cIm1vZGUgPT09ICdzdHlsZSdcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy02XCI+XG4gICAgICAgICAgPGM4eS1hcHBlYXJhbmNlLXNldHRpbmdzXG4gICAgICAgICAgICBbKHRoZW1lQ2xhc3MpXT1cInN0eWxpbmcuY29udGVudENsYXNzXCJcbiAgICAgICAgICAgIFsoaGVhZGVyQ2xhc3MpXT1cInN0eWxpbmcuaGVhZGVyQ2xhc3NcIlxuICAgICAgICAgICAgW3Bvc3NpYmxlU3R5bGluZ1RoZW1lXT1cInBvc3NpYmxlU3R5bGluZy5XSURHRVRfQ09OVEVOVF9DTEFTU0VTXCJcbiAgICAgICAgICAgIFtwb3NzaWJsZVN0eWxpbmdIZWFkZXJdPVwicG9zc2libGVTdHlsaW5nLldJREdFVF9IRUFERVJfQ0xBU1NFU1wiXG4gICAgICAgICAgICBbZGVmYXVsdFRoZW1lQ2xhc3NdPVwiZGVmYXVsdFN0eWxpbmcuY29udGVudENsYXNzXCJcbiAgICAgICAgICAgIFtkZWZhdWx0SGVhZGVyQ2xhc3NdPVwiZGVmYXVsdFN0eWxpbmcuaGVhZGVyQ2xhc3NcIlxuICAgICAgICAgID48L2M4eS1hcHBlYXJhbmNlLXNldHRpbmdzPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy02IHN0aWNreS1oZWFkZXItdG9wLTBcIj5cbiAgICAgICAgICA8Yzh5LXdpZGdldC1wcmV2aWV3XG4gICAgICAgICAgICBzdHlsZT1cImhlaWdodDogY2FsYygxMDB2aCAtIDM4MnB4KVwiXG4gICAgICAgICAgICBbcHJldmlld0NsYXNzZXNdPVwiZ2V0U3R5bGUodHJ1ZSlcIlxuICAgICAgICAgID48L2M4eS13aWRnZXQtcHJldmlldz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgdGl0bGU9XCJ7eyAnQ2FuY2VsJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAoY2xpY2spPVwiY2xvc2UoKVwiXG4gICAgPlxuICAgICAge3sgJ0NhbmNlbCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgIHRpdGxlPVwie3sgJ1NhdmUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIChjbGljayk9XCJzYXZlKClcIlxuICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICBjb250ZXh0RGFzaGJvYXJkU2VydmljZS5mb3JtRGlzYWJsZWQgfHwgY29uZmlnRm9ybS5pbnZhbGlkIHx8IGNoZWNrSWZEZXZpY2VSZXF1aXJlZCgpXG4gICAgICBcIlxuICAgICAgYzh5UHJvZHVjdEV4cGVyaWVuY2VcbiAgICAgIFthY3Rpb25OYW1lXT1cImN1cnJlbnQgPyAnZWRpdFdpZGdldCcgOiAnY3JlYXRlV2lkZ2V0J1wiXG4gICAgICBbYWN0aW9uRGF0YV09XCJ7IHdpZGdldE5hbWU6IHNlbGVjdGVkICYmIHNlbGVjdGVkLmlkIH1cIlxuICAgID5cbiAgICAgIHt7ICdTYXZlJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==
|
|
@@ -1721,7 +1721,7 @@ MillerViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ve
|
|
|
1721
1721
|
useExisting: forwardRef(() => MillerViewComponent),
|
|
1722
1722
|
multi: true
|
|
1723
1723
|
}
|
|
1724
|
-
], viewQueries: [{ propertyName: "millerViewWrapper", first: true, predicate: ["millerViewWrapper"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\n #millerViewWrapper\n class=\"miller-view-wrapper\"\n [ngClass]=\"{ 'single-column': config.singleColumn }\"\n>\n <div *ngFor=\"let column of columns; index as i\" class=\"miller-column bg-inherit\">\n <c8y-asset-selector\n [config]=\"config\"\n [index]=\"i\"\n [active]=\"columns[i + 1]\"\n [rootNode]=\"column\"\n [selectedItems]=\"selected || []\"\n [selectedDevice]=\"selectedDevice\"\n (onSelected)=\"onSelectionChange($event)\"\n (onRowSelected)=\"addNewColumn($event)\"\n (onLoad)=\"onLoad($event)\"\n [container]=\"container\"\n class=\"bg-inherit
|
|
1724
|
+
], viewQueries: [{ propertyName: "millerViewWrapper", first: true, predicate: ["millerViewWrapper"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\n #millerViewWrapper\n class=\"miller-view-wrapper\"\n [ngClass]=\"{ 'single-column': config.singleColumn }\"\n>\n <div *ngFor=\"let column of columns; index as i\" class=\"miller-column bg-inherit\">\n <c8y-asset-selector\n [config]=\"config\"\n [index]=\"i\"\n [active]=\"columns[i + 1]\"\n [rootNode]=\"column\"\n [selectedItems]=\"selected || []\"\n [selectedDevice]=\"selectedDevice\"\n (onSelected)=\"onSelectionChange($event)\"\n (onRowSelected)=\"addNewColumn($event)\"\n (onLoad)=\"onLoad($event)\"\n [container]=\"container\"\n class=\"bg-inherit\"\n >\n </c8y-asset-selector>\n\n <div class=\"p-relative p-b-64\" *ngIf=\"isLoading && columnIndex === i && !selectedDevice\">\n <c8y-loading></c8y-loading>\n </div>\n\n <div *ngIf=\"!column.children.length && !isLoading\" class=\"p-l-8 p-r-8\">\n <c8y-ui-empty-state\n *ngIf=\"!filterText; else noSearchResults\"\n [icon]=\"'folder-open'\"\n [title]=\"'No results to display.' | translate\"\n [subtitle]=\"'The selected asset has no children.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n <ng-template #noSearchResults>\n <c8y-ui-empty-state\n [icon]=\"'folder-open'\"\n [title]=\"'No results to display for the current filter.' | translate\"\n [subtitle]=\"'There are no assets matching the filter.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </ng-template>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i3.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.LoadingComponent, selector: "c8y-loading" }, { kind: "component", type: AssetSelectorComponent, selector: "c8y-asset-selector", inputs: ["config", "active", "index", "asset", "selectedDevice", "selected", "rootNode", "selectedItems", "container"], outputs: ["onSelected", "onRowSelected", "onLoad"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }] });
|
|
1725
1725
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: MillerViewComponent, decorators: [{
|
|
1726
1726
|
type: Component,
|
|
1727
1727
|
args: [{ selector: 'c8y-asset-selector-miller', providers: [
|
|
@@ -1730,7 +1730,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
|
1730
1730
|
useExisting: forwardRef(() => MillerViewComponent),
|
|
1731
1731
|
multi: true
|
|
1732
1732
|
}
|
|
1733
|
-
], template: "<div\n #millerViewWrapper\n class=\"miller-view-wrapper\"\n [ngClass]=\"{ 'single-column': config.singleColumn }\"\n>\n <div *ngFor=\"let column of columns; index as i\" class=\"miller-column bg-inherit\">\n <c8y-asset-selector\n [config]=\"config\"\n [index]=\"i\"\n [active]=\"columns[i + 1]\"\n [rootNode]=\"column\"\n [selectedItems]=\"selected || []\"\n [selectedDevice]=\"selectedDevice\"\n (onSelected)=\"onSelectionChange($event)\"\n (onRowSelected)=\"addNewColumn($event)\"\n (onLoad)=\"onLoad($event)\"\n [container]=\"container\"\n class=\"bg-inherit
|
|
1733
|
+
], template: "<div\n #millerViewWrapper\n class=\"miller-view-wrapper\"\n [ngClass]=\"{ 'single-column': config.singleColumn }\"\n>\n <div *ngFor=\"let column of columns; index as i\" class=\"miller-column bg-inherit\">\n <c8y-asset-selector\n [config]=\"config\"\n [index]=\"i\"\n [active]=\"columns[i + 1]\"\n [rootNode]=\"column\"\n [selectedItems]=\"selected || []\"\n [selectedDevice]=\"selectedDevice\"\n (onSelected)=\"onSelectionChange($event)\"\n (onRowSelected)=\"addNewColumn($event)\"\n (onLoad)=\"onLoad($event)\"\n [container]=\"container\"\n class=\"bg-inherit\"\n >\n </c8y-asset-selector>\n\n <div class=\"p-relative p-b-64\" *ngIf=\"isLoading && columnIndex === i && !selectedDevice\">\n <c8y-loading></c8y-loading>\n </div>\n\n <div *ngIf=\"!column.children.length && !isLoading\" class=\"p-l-8 p-r-8\">\n <c8y-ui-empty-state\n *ngIf=\"!filterText; else noSearchResults\"\n [icon]=\"'folder-open'\"\n [title]=\"'No results to display.' | translate\"\n [subtitle]=\"'The selected asset has no children.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n <ng-template #noSearchResults>\n <c8y-ui-empty-state\n [icon]=\"'folder-open'\"\n [title]=\"'No results to display for the current filter.' | translate\"\n [subtitle]=\"'There are no assets matching the filter.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </ng-template>\n </div>\n </div>\n</div>\n" }]
|
|
1734
1734
|
}], ctorParameters: function () { return [{ type: GroupNodeService }, { type: i1.InventoryService }, { type: AssetSelectorService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { config: [{
|
|
1735
1735
|
type: Input
|
|
1736
1736
|
}], asset: [{
|