gamma-app-controller 1.1.2 → 1.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/application-controller/application-content.service.mjs +40 -1
- package/esm2020/lib/application-controller/application-controller.module.mjs +5 -1
- package/esm2020/lib/application-controller/application-dataset-component/application-dataset/application-dataset.component.mjs +3 -3
- package/esm2020/lib/application-controller/application-dataset-component/create-dataset-sql/create-dataset-sql.component.mjs +16 -6
- package/esm2020/lib/application-controller/application-filter/application-filter.component.mjs +2 -2
- package/esm2020/lib/application-controller/application-menu-controller/application-create-menu/application-create-menu.component.mjs +104 -27
- package/esm2020/lib/application-controller/application-menu-controller/application-menus/application-menus.component.mjs +95 -7
- package/esm2020/lib/application-controller/application-view-components/application-views/application-views.component.mjs +3 -3
- package/esm2020/lib/application-controller/common-header/common-header.component.mjs +6 -3
- package/esm2020/lib/application-controller/common.mjs +21 -1
- package/esm2020/lib/application-controller/page-controller/page-config/page-config.component.mjs +34 -8
- package/esm2020/lib/application-controller/page-controller/page-controller/page-controller.component.mjs +3 -3
- package/esm2020/lib/application-controller/shared/advanced-component/app-advance-header/app-header.component.mjs +1 -3
- package/fesm2015/gamma-app-controller.mjs +294 -48
- package/fesm2015/gamma-app-controller.mjs.map +1 -1
- package/fesm2020/gamma-app-controller.mjs +302 -48
- package/fesm2020/gamma-app-controller.mjs.map +1 -1
- package/lib/application-controller/application-content.service.d.ts +5 -0
- package/lib/application-controller/application-menu-controller/application-create-menu/application-create-menu.component.d.ts +15 -5
- package/lib/application-controller/application-menu-controller/application-menus/application-menus.component.d.ts +14 -1
- package/lib/application-controller/common-header/common-header.component.d.ts +1 -0
- package/lib/application-controller/common.d.ts +4 -0
- package/package.json +1 -1
|
@@ -1,23 +1,111 @@
|
|
|
1
1
|
import { Component } from '@angular/core';
|
|
2
|
+
import { confirm } from 'devextreme/ui/dialog';
|
|
2
3
|
import * as i0 from "@angular/core";
|
|
3
4
|
import * as i1 from "../../common";
|
|
4
5
|
import * as i2 from "@angular/router";
|
|
5
|
-
import * as i3 from "../../
|
|
6
|
+
import * as i3 from "../../application-content.service";
|
|
7
|
+
import * as i4 from "ngx-toastr";
|
|
8
|
+
import * as i5 from "@angular/common";
|
|
9
|
+
import * as i6 from "devextreme-angular/core";
|
|
10
|
+
import * as i7 from "devextreme-angular/ui/nested";
|
|
11
|
+
import * as i8 from "devextreme-angular/ui/data-grid";
|
|
12
|
+
import * as i9 from "../../shared/loader/loader.component";
|
|
13
|
+
import * as i10 from "../../common-header/common-header.component";
|
|
6
14
|
export class ApplicationMenusComponent {
|
|
7
|
-
constructor(commonService, router) {
|
|
15
|
+
constructor(commonService, router, commonservice, service, toasterService) {
|
|
8
16
|
this.commonService = commonService;
|
|
9
17
|
this.router = router;
|
|
18
|
+
this.commonservice = commonservice;
|
|
19
|
+
this.service = service;
|
|
20
|
+
this.toasterService = toasterService;
|
|
10
21
|
}
|
|
11
22
|
ngOnInit() {
|
|
23
|
+
this.isLoader = true;
|
|
24
|
+
this.getParentMenuList();
|
|
25
|
+
}
|
|
26
|
+
getParentMenuList() {
|
|
27
|
+
this.paparentMenuDatasource = [];
|
|
28
|
+
this.service.getListOfParentAppMenu().subscribe({
|
|
29
|
+
next: (data) => {
|
|
30
|
+
data.forEach(element => {
|
|
31
|
+
element['attributeValues'] = (element.measures && element.measures.length !== 0) ? this.getUsers(element.measures) : "";
|
|
32
|
+
});
|
|
33
|
+
this.paparentMenuDatasource = data;
|
|
34
|
+
this.isLoader = false;
|
|
35
|
+
const userName = "admin";
|
|
36
|
+
this.treviewDatasource = this.buildMenuTree(userName, data);
|
|
37
|
+
}, error: (error) => {
|
|
38
|
+
this.isLoader = false;
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
editMenu(item) {
|
|
43
|
+
let navigationExtra = {
|
|
44
|
+
queryParams: {
|
|
45
|
+
"contentType": "edit",
|
|
46
|
+
"menuId": item.menuId
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
this.router.navigate(['/apps/controlPanel/menuController/editMenu'], navigationExtra);
|
|
50
|
+
}
|
|
51
|
+
deleteMenu(item) {
|
|
52
|
+
let result = confirm("<i>Are You Sure?</i>", "Delete App Menuconfig ");
|
|
53
|
+
result.then((dialogResult) => {
|
|
54
|
+
if (dialogResult) {
|
|
55
|
+
this.service.deleteAppMenuConfig(item.menuId).subscribe({
|
|
56
|
+
next: (data) => {
|
|
57
|
+
this.toasterService.success("Muse Successfully Deleted");
|
|
58
|
+
this.getParentMenuList();
|
|
59
|
+
}, error: (err) => {
|
|
60
|
+
this.toasterService.error('Unexpected Server Exception. Please contact System Admin.', 'App Menu Config');
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
getUsers(items) {
|
|
67
|
+
const att = [];
|
|
68
|
+
items.forEach(element => {
|
|
69
|
+
att.push(element.attributeValues);
|
|
70
|
+
});
|
|
71
|
+
return att.join(',');
|
|
12
72
|
}
|
|
13
73
|
createNewMenu() {
|
|
14
74
|
this.router.navigate(['/apps/controlPanel/menuController/createMenu']);
|
|
15
75
|
}
|
|
76
|
+
buildMenuTree(userName, menuData) {
|
|
77
|
+
let filteredMenus = menuData.filter(menu => !userName || (menu.measures && menu.measures.some(measure => measure.attributeValues.includes(userName))));
|
|
78
|
+
const menuMap = new Map();
|
|
79
|
+
const menuTree = [];
|
|
80
|
+
filteredMenus.forEach(menu => {
|
|
81
|
+
menuMap.set(menu.childMenuTid || menu.parentMenuTid, {
|
|
82
|
+
id: menu.menuId,
|
|
83
|
+
title: menu.title,
|
|
84
|
+
icon: menu.icon,
|
|
85
|
+
type: menu.type,
|
|
86
|
+
...(menu.subtitle && { subtitle: menu.subtitle }),
|
|
87
|
+
...(menu.link && { link: menu.link.replace(/^\/+/, '') }),
|
|
88
|
+
children: []
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
filteredMenus.forEach(menu => {
|
|
92
|
+
if (menu.parentMenuTid && menu.childMenuTid) {
|
|
93
|
+
const parent = menuMap.get(menu.parentMenuTid);
|
|
94
|
+
if (parent) {
|
|
95
|
+
parent.children.push(menuMap.get(menu.childMenuTid));
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
menuTree.push(menuMap.get(menu.parentMenuTid));
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
return menuTree;
|
|
103
|
+
}
|
|
16
104
|
}
|
|
17
|
-
ApplicationMenusComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ApplicationMenusComponent, deps: [{ token: i1.CommonService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component });
|
|
18
|
-
ApplicationMenusComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ApplicationMenusComponent, selector: "lib-application-menus", ngImport: i0, template: "<div class=\"flex flex-col flex-auto min-w-0\">\n\n <lib-common-header [pageTitle]=\"'Application Menu Controller'\"></lib-common-header>\n\n <div class=\"p-4 w-full\">\n <div class=\"m-3 p-4 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <h6 class=\"mb-2 text-lg tracking-tight text-gray-900\n dark:text-white border-b pb-3 flex items-center\">\n <div class=\"ml-auto\">\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"createNewMenu()\">\n Add Menu Content\n </button>\n </div>\n </h6>\n <!-- <app-loader *ngIf=\"isLoader\"></app-loader> -->\n <!-- <dx-data-grid [columnAutoWidth]=\"true\" [dataSource]=\"componentViewTableDataSource\"\n [hoverStateEnabled]=\"true\" *ngIf=\"!isLoader\" [selectedRowKeys]=\"[]\" [showBorders]=\"true\"\n [showColumnLines]=\"true\" [showRowLines]=\"true\" id=\"gridContainer\">\n <dxo-paging [pageSize]=\"10\"></dxo-paging>\n <dxo-export [enabled]=\"true\"></dxo-export>\n <dxo-search-panel [highlightCaseSensitive]=\"true\" [visible]=\"true\">\n </dxo-search-panel>\n <dxi-column dataField=\"viewName\"></dxi-column>\n <dxi-column dataField=\"kpiConfig.formate\"></dxi-column>\n <dxi-column dataField=\"creationDate\"></dxi-column>\n <dxi-column dataField=\"action\" cellTemplate=\"cellTemplate\" [fixed]=\"true\"\n fixedPosition=\"right\"></dxi-column>\n <div *dxTemplate=\"let data of 'cellTemplate'\">\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"editViews(data.data)\">\n Edit\n </button>\n <button class=\"{{commonService.btn_danger_md}}\" (click)=\"deleteDataset(data.data)\">\n Delete\n </button>\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"exportJsonFile(data.data)\"\n title=\"Export View\">\n <i class=\"fa fa-sign-out\"></i>\n </button>\n <button class=\"{{commonService.btn_warning_md}}\" (click)=\"copyJsonFile(data.data)\"\n title=\"Copy as Json\">\n <i class=\"fa fa-files-o\"></i>\n </button>\n </div>\n </dx-data-grid> -->\n </div>\n </div>\n\n</div>\n\n<!-- \n<dx-popup [(visible)]=\"isPopupVisible\" [dragEnabled]=\"false\" [closeOnOutsideClick]=\"false\" [showTitle]=\"true\"\n title=\"Model Editor\" [width]=\"1000\" [height]=\"620\">\n\n <div>\n <button (click)=\"hidePopup()\" class=\"btn btn-secondary\"></button>\n <div class=\"m-2 flex items-center justify-between\">\n <input type=\"file\" #fileInput accept=\".json\"\n class=\"block w-3/5 p-2 text-sm text-gray-400 border border-gray-700 rounded-lg bg-gray-800 focus:ring-blue-500 focus:border-blue-500\"\n (change)=\"onjsonFileSelected($event)\">\n <button (click)=\"submitView()\" class=\"{{commonService.btn_success_md}} mr-4\">Submit</button>\n\n </div>\n <textarea [(ngModel)]=\"jsonContent\"\n class=\"w-full h-100 p-2 border border-gray-700 rounded-lg bg-gray-800 text-gray-400\"></textarea>\n </div>\n</dx-popup> -->", styles: [""], dependencies: [{ kind: "component", type: i3.CommonHeaderComponent, selector: "lib-common-header", inputs: ["pageTitle"] }] });
|
|
105
|
+
ApplicationMenusComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ApplicationMenusComponent, deps: [{ token: i1.CommonService }, { token: i2.Router }, { token: i1.CommonService }, { token: i3.ApplicationContentService }, { token: i4.ToastrService }], target: i0.ɵɵFactoryTarget.Component });
|
|
106
|
+
ApplicationMenusComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ApplicationMenusComponent, selector: "lib-application-menus", ngImport: i0, template: "<div class=\"flex flex-col flex-auto min-w-0\">\n\n <lib-common-header [pageTitle]=\"'Application Menu Controller'\"></lib-common-header>\n\n <div class=\"p-4 w-full\">\n <div class=\"m-3 p-4 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <h6 class=\"mb-2 text-lg tracking-tight text-gray-900\n dark:text-white border-b pb-3 flex items-center\">\n <div class=\"ml-auto\">\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"createNewMenu()\">\n Add Menu Content\n </button>\n </div>\n </h6>\n <app-loader *ngIf=\"isLoader\"></app-loader>\n <dx-data-grid [columnAutoWidth]=\"true\" [dataSource]=\"paparentMenuDatasource\"\n [hoverStateEnabled]=\"true\" *ngIf=\"!isLoader\" [selectedRowKeys]=\"[]\" [showBorders]=\"true\"\n [showColumnLines]=\"true\" [showRowLines]=\"true\" id=\"gridContainer\">\n <dxo-paging [pageSize]=\"10\"></dxo-paging>\n <dxo-export [enabled]=\"true\"></dxo-export>\n <dxo-search-panel [highlightCaseSensitive]=\"true\" [visible]=\"true\">\n </dxo-search-panel>\n <dxi-column dataField=\"title\"></dxi-column>\n <dxi-column dataField=\"link\"></dxi-column>\n <dxi-column dataField=\"menuType\"></dxi-column>\n <dxi-column dataField=\"type\"></dxi-column>\n <dxi-column dataField=\"icon\"></dxi-column>\n <dxi-column dataField=\"parentMenuTid\"></dxi-column>\n <dxi-column dataField=\"childMenuTid\"></dxi-column>\n <dxi-column dataField=\"attributeValues\"></dxi-column>\n <dxi-column dataField=\"action\" cellTemplate=\"cellTemplate\" [fixed]=\"true\"\n fixedPosition=\"right\"></dxi-column>\n <div *dxTemplate=\"let data of 'cellTemplate'\">\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"editMenu(data.data)\">\n Edit\n </button>\n <button class=\"{{commonService.btn_danger_md}}\" (click)=\"deleteMenu(data.data)\">\n Delete\n </button>\n \n </div>\n </dx-data-grid>\n </div>\n </div>\n\n <!-- <div class=\"m-3 p-4 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <h6 class=\"mb-2 text-lg tracking-tight text-gray-900\n dark:text-white border-b pb-3 flex items-center\">\n Menu\n <div class=\"ml-auto\">\n \n </div>\n </h6>\n <div class=\"\">\n <pre><code>{{treviewDatasource | json}}</code></pre>\n </div>\n \n </div> -->\n\n</div>\n\n<!-- \n<dx-popup [(visible)]=\"isPopupVisible\" [dragEnabled]=\"false\" [closeOnOutsideClick]=\"false\" [showTitle]=\"true\"\n title=\"Model Editor\" [width]=\"1000\" [height]=\"620\">\n\n <div>\n <button (click)=\"hidePopup()\" class=\"btn btn-secondary\"></button>\n <div class=\"m-2 flex items-center justify-between\">\n <input type=\"file\" #fileInput accept=\".json\"\n class=\"block w-3/5 p-2 text-sm text-gray-400 border border-gray-700 rounded-lg bg-gray-800 focus:ring-blue-500 focus:border-blue-500\"\n (change)=\"onjsonFileSelected($event)\">\n <button (click)=\"submitView()\" class=\"{{commonService.btn_success_md}} mr-4\">Submit</button>\n\n </div>\n <textarea [(ngModel)]=\"jsonContent\"\n class=\"w-full h-100 p-2 border border-gray-700 rounded-lg bg-gray-800 text-gray-400\"></textarea>\n </div>\n</dx-popup> -->", styles: [""], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i7.DxoExportComponent, selector: "dxo-export", inputs: ["backgroundColor", "enabled", "fileName", "formats", "margin", "printingEnabled", "proxyUrl", "svgToCanvas", "allowExportSelectedData", "customizeExcelCell", "excelFilterEnabled", "excelWrapTextEnabled", "ignoreExcelErrors", "texts"] }, { kind: "component", type: i8.DxDataGridComponent, selector: "dx-data-grid", inputs: ["accessKey", "activeStateEnabled", "allowColumnReordering", "allowColumnResizing", "autoNavigateToFocusedRow", "cacheEnabled", "cellHintEnabled", "columnAutoWidth", "columnChooser", "columnFixing", "columnHidingEnabled", "columnMinWidth", "columnResizingMode", "columns", "columnWidth", "customizeColumns", "customizeExportData", "dataRowTemplate", "dataSource", "dateSerializationFormat", "disabled", "editing", "elementAttr", "errorRowEnabled", "export", "filterBuilder", "filterBuilderPopup", "filterPanel", "filterRow", "filterSyncEnabled", "filterValue", "focusedColumnIndex", "focusedRowEnabled", "focusedRowIndex", "focusedRowKey", "focusStateEnabled", "grouping", "groupPanel", "headerFilter", "height", "highlightChanges", "hint", "hoverStateEnabled", "keyboardNavigation", "keyExpr", "loadPanel", "masterDetail", "noDataText", "pager", "paging", "remoteOperations", "renderAsync", "repaintChangesOnly", "rowAlternationEnabled", "rowDragging", "rowTemplate", "rtlEnabled", "scrolling", "searchPanel", "selectedRowKeys", "selection", "selectionFilter", "showBorders", "showColumnHeaders", "showColumnLines", "showRowLines", "sortByGroupSummaryInfo", "sorting", "stateStoring", "summary", "syncLookupFilterValues", "tabIndex", "toolbar", "twoWayBindingEnabled", "visible", "width", "wordWrapEnabled"], outputs: ["onAdaptiveDetailRowPreparing", "onCellClick", "onCellDblClick", "onCellHoverChanged", "onCellPrepared", "onContentReady", "onContextMenuPreparing", "onDataErrorOccurred", "onDisposing", "onEditCanceled", "onEditCanceling", "onEditingStart", "onEditorPrepared", "onEditorPreparing", "onExported", "onExporting", "onFileSaving", "onFocusedCellChanged", "onFocusedCellChanging", "onFocusedRowChanged", "onFocusedRowChanging", "onInitialized", "onInitNewRow", "onKeyDown", "onOptionChanged", "onRowClick", "onRowCollapsed", "onRowCollapsing", "onRowDblClick", "onRowExpanded", "onRowExpanding", "onRowInserted", "onRowInserting", "onRowPrepared", "onRowRemoved", "onRowRemoving", "onRowUpdated", "onRowUpdating", "onRowValidating", "onSaved", "onSaving", "onSelectionChanged", "onToolbarPreparing", "accessKeyChange", "activeStateEnabledChange", "allowColumnReorderingChange", "allowColumnResizingChange", "autoNavigateToFocusedRowChange", "cacheEnabledChange", "cellHintEnabledChange", "columnAutoWidthChange", "columnChooserChange", "columnFixingChange", "columnHidingEnabledChange", "columnMinWidthChange", "columnResizingModeChange", "columnsChange", "columnWidthChange", "customizeColumnsChange", "customizeExportDataChange", "dataRowTemplateChange", "dataSourceChange", "dateSerializationFormatChange", "disabledChange", "editingChange", "elementAttrChange", "errorRowEnabledChange", "exportChange", "filterBuilderChange", "filterBuilderPopupChange", "filterPanelChange", "filterRowChange", "filterSyncEnabledChange", "filterValueChange", "focusedColumnIndexChange", "focusedRowEnabledChange", "focusedRowIndexChange", "focusedRowKeyChange", "focusStateEnabledChange", "groupingChange", "groupPanelChange", "headerFilterChange", "heightChange", "highlightChangesChange", "hintChange", "hoverStateEnabledChange", "keyboardNavigationChange", "keyExprChange", "loadPanelChange", "masterDetailChange", "noDataTextChange", "pagerChange", "pagingChange", "remoteOperationsChange", "renderAsyncChange", "repaintChangesOnlyChange", "rowAlternationEnabledChange", "rowDraggingChange", "rowTemplateChange", "rtlEnabledChange", "scrollingChange", "searchPanelChange", "selectedRowKeysChange", "selectionChange", "selectionFilterChange", "showBordersChange", "showColumnHeadersChange", "showColumnLinesChange", "showRowLinesChange", "sortByGroupSummaryInfoChange", "sortingChange", "stateStoringChange", "summaryChange", "syncLookupFilterValuesChange", "tabIndexChange", "toolbarChange", "twoWayBindingEnabledChange", "visibleChange", "widthChange", "wordWrapEnabledChange"] }, { kind: "component", type: i7.DxiColumnComponent, selector: "dxi-column", inputs: ["alignment", "allowEditing", "allowExporting", "allowFiltering", "allowFixing", "allowGrouping", "allowHeaderFiltering", "allowHiding", "allowReordering", "allowResizing", "allowSearch", "allowSorting", "autoExpandGroup", "buttons", "calculateCellValue", "calculateDisplayValue", "calculateFilterExpression", "calculateGroupValue", "calculateSortValue", "caption", "cellTemplate", "columns", "cssClass", "customizeText", "dataField", "dataType", "editCellTemplate", "editorOptions", "encodeHtml", "falseText", "filterOperations", "filterType", "filterValue", "filterValues", "fixed", "fixedPosition", "format", "formItem", "groupCellTemplate", "groupIndex", "headerCellTemplate", "headerFilter", "hidingPriority", "isBand", "lookup", "minWidth", "name", "ownerBand", "renderAsync", "selectedFilterOperation", "setCellValue", "showEditorAlways", "showInColumnChooser", "showWhenGrouped", "sortIndex", "sortingMethod", "sortOrder", "trueText", "type", "validationRules", "visible", "visibleIndex", "width"], outputs: ["filterValueChange", "filterValuesChange", "groupIndexChange", "selectedFilterOperationChange", "sortIndexChange", "sortOrderChange", "visibleChange", "visibleIndexChange"] }, { kind: "component", type: i7.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "component", type: i7.DxoSearchPanelComponent, selector: "dxo-search-panel", inputs: ["highlightCaseSensitive", "highlightSearchText", "placeholder", "searchVisibleColumnsOnly", "text", "visible", "width"], outputs: ["textChange"] }, { kind: "component", type: i9.LoaderComponent, selector: "app-loader" }, { kind: "component", type: i10.CommonHeaderComponent, selector: "lib-common-header", inputs: ["pageTitle"] }] });
|
|
19
107
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ApplicationMenusComponent, decorators: [{
|
|
20
108
|
type: Component,
|
|
21
|
-
args: [{ selector: 'lib-application-menus', template: "<div class=\"flex flex-col flex-auto min-w-0\">\n\n <lib-common-header [pageTitle]=\"'Application Menu Controller'\"></lib-common-header>\n\n <div class=\"p-4 w-full\">\n <div class=\"m-3 p-4 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <h6 class=\"mb-2 text-lg tracking-tight text-gray-900\n dark:text-white border-b pb-3 flex items-center\">\n <div class=\"ml-auto\">\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"createNewMenu()\">\n Add Menu Content\n </button>\n </div>\n </h6>\n
|
|
22
|
-
}], ctorParameters: function () { return [{ type: i1.CommonService }, { type: i2.Router }]; } });
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tbWVudXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLW1lbnUtY29udHJvbGxlci9hcHBsaWNhdGlvbi1tZW51cy9hcHBsaWNhdGlvbi1tZW51cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvYXBwbGljYXRpb24tbWVudS1jb250cm9sbGVyL2FwcGxpY2F0aW9uLW1lbnVzL2FwcGxpY2F0aW9uLW1lbnVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBU2xELE1BQU0sT0FBTyx5QkFBeUI7SUFFcEMsWUFDUyxhQUE0QixFQUMzQixNQUFjO1FBRGYsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDM0IsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUNwQixDQUFDO0lBRUwsUUFBUTtJQUNSLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDLENBQUE7SUFFeEUsQ0FBQzs7c0hBYlUseUJBQXlCOzBHQUF6Qix5QkFBeUIsNkRDVHRDLDZoSEFpRWU7MkZEeERGLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbW1vbic7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItYXBwbGljYXRpb24tbWVudXMnLFxuICB0ZW1wbGF0ZVVybDogJy4vYXBwbGljYXRpb24tbWVudXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hcHBsaWNhdGlvbi1tZW51cy5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb25NZW51c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGNvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxuICApIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICB9XG5cbiAgY3JlYXRlTmV3TWVudSgpe1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2FwcHMvY29udHJvbFBhbmVsL21lbnVDb250cm9sbGVyL2NyZWF0ZU1lbnUnXSlcbiAgIFxuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGZsZXgtYXV0byBtaW4tdy0wXCI+XG5cbiAgICA8bGliLWNvbW1vbi1oZWFkZXIgW3BhZ2VUaXRsZV09XCInQXBwbGljYXRpb24gTWVudSBDb250cm9sbGVyJ1wiPjwvbGliLWNvbW1vbi1oZWFkZXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwicC00IHctZnVsbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibS0zIHAtNCBiZy13aGl0ZSBib3JkZXIgYm9yZGVyLWdyYXktMjAwIHJvdW5kZWQtbGcgc2hhZG93LW1kIGRhcms6YmctZ3JheS04MDAgZGFyazpib3JkZXItZ3JheS03MDBcIj5cbiAgICAgICAgICAgIDxoNiBjbGFzcz1cIm1iLTIgdGV4dC1sZyB0cmFja2luZy10aWdodCB0ZXh0LWdyYXktOTAwXG4gICAgICAgICAgICAgICAgZGFyazp0ZXh0LXdoaXRlIGJvcmRlci1iIHBiLTMgZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWwtYXV0b1wiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9wcmltYXJ5X21kfX1cIiAoY2xpY2spPVwiY3JlYXRlTmV3TWVudSgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBBZGQgTWVudSBDb250ZW50XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9oNj5cbiAgICAgICAgICAgIDwhLS0gPGFwcC1sb2FkZXIgKm5nSWY9XCJpc0xvYWRlclwiPjwvYXBwLWxvYWRlcj4gLS0+XG4gICAgICAgICAgICA8IS0tIDxkeC1kYXRhLWdyaWQgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCIgW2RhdGFTb3VyY2VdPVwiY29tcG9uZW50Vmlld1RhYmxlRGF0YVNvdXJjZVwiXG4gICAgICAgICAgICAgICAgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIiAqbmdJZj1cIiFpc0xvYWRlclwiIFtzZWxlY3RlZFJvd0tleXNdPVwiW11cIiBbc2hvd0JvcmRlcnNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW3Nob3dDb2x1bW5MaW5lc109XCJ0cnVlXCIgW3Nob3dSb3dMaW5lc109XCJ0cnVlXCIgaWQ9XCJncmlkQ29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPGR4by1wYWdpbmcgW3BhZ2VTaXplXT1cIjEwXCI+PC9keG8tcGFnaW5nPlxuICAgICAgICAgICAgICAgIDxkeG8tZXhwb3J0IFtlbmFibGVkXT1cInRydWVcIj48L2R4by1leHBvcnQ+XG4gICAgICAgICAgICAgICAgPGR4by1zZWFyY2gtcGFuZWwgW2hpZ2hsaWdodENhc2VTZW5zaXRpdmVdPVwidHJ1ZVwiIFt2aXNpYmxlXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICA8L2R4by1zZWFyY2gtcGFuZWw+XG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwidmlld05hbWVcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwia3BpQ29uZmlnLmZvcm1hdGVcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiY3JlYXRpb25EYXRlXCI+PC9keGktY29sdW1uPlxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImFjdGlvblwiIGNlbGxUZW1wbGF0ZT1cImNlbGxUZW1wbGF0ZVwiIFtmaXhlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgZml4ZWRQb3NpdGlvbj1cInJpZ2h0XCI+PC9keGktY29sdW1uPlxuICAgICAgICAgICAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgZGF0YSBvZiAnY2VsbFRlbXBsYXRlJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9wcmltYXJ5X21kfX1cIiAoY2xpY2spPVwiZWRpdFZpZXdzKGRhdGEuZGF0YSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEVkaXRcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX2Rhbmdlcl9tZH19XCIgKGNsaWNrKT1cImRlbGV0ZURhdGFzZXQoZGF0YS5kYXRhKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgRGVsZXRlXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9wcmltYXJ5X21kfX1cIiAoY2xpY2spPVwiZXhwb3J0SnNvbkZpbGUoZGF0YS5kYXRhKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cIkV4cG9ydCBWaWV3XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXNpZ24tb3V0XCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fd2FybmluZ19tZH19XCIgKGNsaWNrKT1cImNvcHlKc29uRmlsZShkYXRhLmRhdGEpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwiQ29weSBhcyBKc29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWZpbGVzLW9cIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9keC1kYXRhLWdyaWQ+IC0tPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuPC9kaXY+XG5cbjwhLS0gXG48ZHgtcG9wdXAgWyh2aXNpYmxlKV09XCJpc1BvcHVwVmlzaWJsZVwiIFtkcmFnRW5hYmxlZF09XCJmYWxzZVwiIFtjbG9zZU9uT3V0c2lkZUNsaWNrXT1cImZhbHNlXCIgW3Nob3dUaXRsZV09XCJ0cnVlXCJcbiAgICB0aXRsZT1cIk1vZGVsIEVkaXRvclwiIFt3aWR0aF09XCIxMDAwXCIgW2hlaWdodF09XCI2MjBcIj5cblxuICAgIDxkaXY+XG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cImhpZGVQb3B1cCgpXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiPjwvYnV0dG9uPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibS0yIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgI2ZpbGVJbnB1dCBhY2NlcHQ9XCIuanNvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJibG9jayB3LTMvNSBwLTIgdGV4dC1zbSB0ZXh0LWdyYXktNDAwIGJvcmRlciBib3JkZXItZ3JheS03MDAgcm91bmRlZC1sZyBiZy1ncmF5LTgwMCBmb2N1czpyaW5nLWJsdWUtNTAwIGZvY3VzOmJvcmRlci1ibHVlLTUwMFwiXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbmpzb25GaWxlU2VsZWN0ZWQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwic3VibWl0VmlldygpXCIgY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3N1Y2Nlc3NfbWR9fSBtci00XCI+U3VibWl0PC9idXR0b24+XG5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDx0ZXh0YXJlYSBbKG5nTW9kZWwpXT1cImpzb25Db250ZW50XCJcbiAgICAgICAgICAgIGNsYXNzPVwidy1mdWxsIGgtMTAwIHAtMiAgYm9yZGVyIGJvcmRlci1ncmF5LTcwMCByb3VuZGVkLWxnIGJnLWdyYXktODAwIHRleHQtZ3JheS00MDBcIj48L3RleHRhcmVhPlxuICAgIDwvZGl2PlxuPC9keC1wb3B1cD4gLS0+Il19
|
|
109
|
+
args: [{ selector: 'lib-application-menus', template: "<div class=\"flex flex-col flex-auto min-w-0\">\n\n <lib-common-header [pageTitle]=\"'Application Menu Controller'\"></lib-common-header>\n\n <div class=\"p-4 w-full\">\n <div class=\"m-3 p-4 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <h6 class=\"mb-2 text-lg tracking-tight text-gray-900\n dark:text-white border-b pb-3 flex items-center\">\n <div class=\"ml-auto\">\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"createNewMenu()\">\n Add Menu Content\n </button>\n </div>\n </h6>\n <app-loader *ngIf=\"isLoader\"></app-loader>\n <dx-data-grid [columnAutoWidth]=\"true\" [dataSource]=\"paparentMenuDatasource\"\n [hoverStateEnabled]=\"true\" *ngIf=\"!isLoader\" [selectedRowKeys]=\"[]\" [showBorders]=\"true\"\n [showColumnLines]=\"true\" [showRowLines]=\"true\" id=\"gridContainer\">\n <dxo-paging [pageSize]=\"10\"></dxo-paging>\n <dxo-export [enabled]=\"true\"></dxo-export>\n <dxo-search-panel [highlightCaseSensitive]=\"true\" [visible]=\"true\">\n </dxo-search-panel>\n <dxi-column dataField=\"title\"></dxi-column>\n <dxi-column dataField=\"link\"></dxi-column>\n <dxi-column dataField=\"menuType\"></dxi-column>\n <dxi-column dataField=\"type\"></dxi-column>\n <dxi-column dataField=\"icon\"></dxi-column>\n <dxi-column dataField=\"parentMenuTid\"></dxi-column>\n <dxi-column dataField=\"childMenuTid\"></dxi-column>\n <dxi-column dataField=\"attributeValues\"></dxi-column>\n <dxi-column dataField=\"action\" cellTemplate=\"cellTemplate\" [fixed]=\"true\"\n fixedPosition=\"right\"></dxi-column>\n <div *dxTemplate=\"let data of 'cellTemplate'\">\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"editMenu(data.data)\">\n Edit\n </button>\n <button class=\"{{commonService.btn_danger_md}}\" (click)=\"deleteMenu(data.data)\">\n Delete\n </button>\n \n </div>\n </dx-data-grid>\n </div>\n </div>\n\n <!-- <div class=\"m-3 p-4 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <h6 class=\"mb-2 text-lg tracking-tight text-gray-900\n dark:text-white border-b pb-3 flex items-center\">\n Menu\n <div class=\"ml-auto\">\n \n </div>\n </h6>\n <div class=\"\">\n <pre><code>{{treviewDatasource | json}}</code></pre>\n </div>\n \n </div> -->\n\n</div>\n\n<!-- \n<dx-popup [(visible)]=\"isPopupVisible\" [dragEnabled]=\"false\" [closeOnOutsideClick]=\"false\" [showTitle]=\"true\"\n title=\"Model Editor\" [width]=\"1000\" [height]=\"620\">\n\n <div>\n <button (click)=\"hidePopup()\" class=\"btn btn-secondary\"></button>\n <div class=\"m-2 flex items-center justify-between\">\n <input type=\"file\" #fileInput accept=\".json\"\n class=\"block w-3/5 p-2 text-sm text-gray-400 border border-gray-700 rounded-lg bg-gray-800 focus:ring-blue-500 focus:border-blue-500\"\n (change)=\"onjsonFileSelected($event)\">\n <button (click)=\"submitView()\" class=\"{{commonService.btn_success_md}} mr-4\">Submit</button>\n\n </div>\n <textarea [(ngModel)]=\"jsonContent\"\n class=\"w-full h-100 p-2 border border-gray-700 rounded-lg bg-gray-800 text-gray-400\"></textarea>\n </div>\n</dx-popup> -->" }]
|
|
110
|
+
}], ctorParameters: function () { return [{ type: i1.CommonService }, { type: i2.Router }, { type: i1.CommonService }, { type: i3.ApplicationContentService }, { type: i4.ToastrService }]; } });
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tbWVudXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLW1lbnUtY29udHJvbGxlci9hcHBsaWNhdGlvbi1tZW51cy9hcHBsaWNhdGlvbi1tZW51cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvYXBwbGljYXRpb24tbWVudS1jb250cm9sbGVyL2FwcGxpY2F0aW9uLW1lbnVzL2FwcGxpY2F0aW9uLW1lbnVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFLbEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7Ozs7QUFPL0MsTUFBTSxPQUFPLHlCQUF5QjtJQUtwQyxZQUNTLGFBQTRCLEVBQzNCLE1BQWMsRUFDZixhQUE0QixFQUMzQixPQUFrQyxFQUNsQyxjQUE2QjtRQUo5QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUMzQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Ysa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDM0IsWUFBTyxHQUFQLE9BQU8sQ0FBMkI7UUFDbEMsbUJBQWMsR0FBZCxjQUFjLENBQWU7SUFDbkMsQ0FBQztJQUVMLFFBQVE7UUFDTixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUUzQixDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDLHNCQUFzQixFQUFFLENBQUMsU0FBUyxDQUFDO1lBQzlDLElBQUksRUFBRSxDQUFDLElBQVMsRUFBRSxFQUFFO2dCQUNsQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUNyQixPQUFPLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBRTFILENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO2dCQUd0QixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUU5RCxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsS0FBVSxFQUFFLEVBQUU7Z0JBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1lBQ3hCLENBQUM7U0FDRixDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsUUFBUSxDQUFDLElBQUk7UUFDWCxJQUFJLGVBQWUsR0FBcUI7WUFDdEMsV0FBVyxFQUFFO2dCQUNYLGFBQWEsRUFBRSxNQUFNO2dCQUNyQixRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU07YUFDdEI7U0FDRixDQUFBO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyw0Q0FBNEMsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxDQUFBO0lBQ3ZGLENBQUM7SUFDRCxVQUFVLENBQUMsSUFBSTtRQUViLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3ZFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRTtZQUMzQixJQUFJLFlBQVksRUFBRTtnQkFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDO29CQUN0RCxJQUFJLEVBQUUsQ0FBQyxJQUFTLEVBQUUsRUFBRTt3QkFDbEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsMkJBQTJCLENBQUMsQ0FBQzt3QkFDekQsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUE7b0JBQzFCLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTt3QkFDckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsMkRBQTJELEVBQUUsaUJBQWlCLENBQUMsQ0FBQTtvQkFFM0csQ0FBQztpQkFDRixDQUFDLENBQUE7YUFFSDtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFLO1FBQ1osTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ2YsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN0QixHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQTtRQUNuQyxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUN0QixDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsOENBQThDLENBQUMsQ0FBQyxDQUFBO0lBRXhFLENBQUM7SUFHRCxhQUFhLENBQUMsUUFBZ0IsRUFBRSxRQUFlO1FBQzdDLElBQUksYUFBYSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDekMsQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUMxRyxDQUFDO1FBRUYsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUMxQixNQUFNLFFBQVEsR0FBVSxFQUFFLENBQUM7UUFFM0IsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMzQixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtnQkFDbkQsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNO2dCQUNmLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDakIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO2dCQUNmLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDZixHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2pELEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUN6RCxRQUFRLEVBQUUsRUFBRTthQUNiLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMzQixJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDM0MsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQy9DLElBQUksTUFBTSxFQUFFO29CQUNWLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7aUJBQ3REO2FBQ0Y7aUJBQU07Z0JBQ0wsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO2FBQ2hEO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDOztzSEFuSFUseUJBQXlCOzBHQUF6Qix5QkFBeUIsNkRDWnRDLHUxSEE2RWU7MkZEakVGLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbW1vbic7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uRXh0cmFzLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQXBwbGljYXRpb25Db250ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL2FwcGxpY2F0aW9uLWNvbnRlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cic7XG5pbXBvcnQgeyBjb25maXJtIH0gZnJvbSAnZGV2ZXh0cmVtZS91aS9kaWFsb2cnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItYXBwbGljYXRpb24tbWVudXMnLFxuICB0ZW1wbGF0ZVVybDogJy4vYXBwbGljYXRpb24tbWVudXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hcHBsaWNhdGlvbi1tZW51cy5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb25NZW51c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHBhcGFyZW50TWVudURhdGFzb3VyY2U7XG4gIGlzTG9hZGVyOiBib29sZWFuO1xuXG4gIHRyZXZpZXdEYXRhc291cmNlOiBhbnk7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBjb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHVibGljIGNvbW1vbnNlcnZpY2U6IENvbW1vblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBBcHBsaWNhdGlvbkNvbnRlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdG9hc3RlclNlcnZpY2U6IFRvYXN0clNlcnZpY2VcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzTG9hZGVyID0gdHJ1ZTtcbiAgICB0aGlzLmdldFBhcmVudE1lbnVMaXN0KCk7XG5cbiAgfVxuXG4gIGdldFBhcmVudE1lbnVMaXN0KCkge1xuICAgIHRoaXMucGFwYXJlbnRNZW51RGF0YXNvdXJjZSA9IFtdO1xuICAgIHRoaXMuc2VydmljZS5nZXRMaXN0T2ZQYXJlbnRBcHBNZW51KCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgZGF0YS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgIGVsZW1lbnRbJ2F0dHJpYnV0ZVZhbHVlcyddID0gKGVsZW1lbnQubWVhc3VyZXMgJiYgZWxlbWVudC5tZWFzdXJlcy5sZW5ndGggIT09IDApID8gdGhpcy5nZXRVc2VycyhlbGVtZW50Lm1lYXN1cmVzKSA6IFwiXCI7XG5cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucGFwYXJlbnRNZW51RGF0YXNvdXJjZSA9IGRhdGE7XG4gICAgICAgIHRoaXMuaXNMb2FkZXIgPSBmYWxzZTtcblxuICAgICAgICAvLyBFeGFtcGxlIHVzYWdlOlxuICAgICAgICBjb25zdCB1c2VyTmFtZSA9IFwiYWRtaW5cIjtcbiAgICAgICAgdGhpcy50cmV2aWV3RGF0YXNvdXJjZSA9IHRoaXMuYnVpbGRNZW51VHJlZSh1c2VyTmFtZSwgZGF0YSk7XG4gICAgICAgIC8vIHRoaXMucGFwYXJlbnRNZW51RGF0YXNvdXJjZSA9IGRhdGE7XG4gICAgICB9LCBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5pc0xvYWRlciA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBlZGl0TWVudShpdGVtKSB7XG4gICAgbGV0IG5hdmlnYXRpb25FeHRyYTogTmF2aWdhdGlvbkV4dHJhcyA9IHtcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgIFwiY29udGVudFR5cGVcIjogXCJlZGl0XCIsXG4gICAgICAgIFwibWVudUlkXCI6IGl0ZW0ubWVudUlkXG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2FwcHMvY29udHJvbFBhbmVsL21lbnVDb250cm9sbGVyL2VkaXRNZW51J10sIG5hdmlnYXRpb25FeHRyYSlcbiAgfVxuICBkZWxldGVNZW51KGl0ZW0pIHtcblxuICAgIGxldCByZXN1bHQgPSBjb25maXJtKFwiPGk+QXJlIFlvdSBTdXJlPzwvaT5cIiwgXCJEZWxldGUgQXBwIE1lbnVjb25maWcgXCIpO1xuICAgIHJlc3VsdC50aGVuKChkaWFsb2dSZXN1bHQpID0+IHtcbiAgICAgIGlmIChkaWFsb2dSZXN1bHQpIHtcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmRlbGV0ZUFwcE1lbnVDb25maWcoaXRlbS5tZW51SWQpLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5zdWNjZXNzKFwiTXVzZSBTdWNjZXNzZnVsbHkgRGVsZXRlZFwiKTtcbiAgICAgICAgICAgIHRoaXMuZ2V0UGFyZW50TWVudUxpc3QoKVxuICAgICAgICAgIH0sIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoJ1VuZXhwZWN0ZWQgU2VydmVyIEV4Y2VwdGlvbi4gUGxlYXNlIGNvbnRhY3QgU3lzdGVtIEFkbWluLicsICdBcHAgTWVudSBDb25maWcnKVxuXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBnZXRVc2VycyhpdGVtcykge1xuICAgIGNvbnN0IGF0dCA9IFtdO1xuICAgIGl0ZW1zLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBhdHQucHVzaChlbGVtZW50LmF0dHJpYnV0ZVZhbHVlcylcbiAgICB9KTtcblxuICAgIHJldHVybiBhdHQuam9pbignLCcpXG4gIH1cblxuICBjcmVhdGVOZXdNZW51KCkge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2FwcHMvY29udHJvbFBhbmVsL21lbnVDb250cm9sbGVyL2NyZWF0ZU1lbnUnXSlcblxuICB9XG5cblxuICBidWlsZE1lbnVUcmVlKHVzZXJOYW1lOiBzdHJpbmcsIG1lbnVEYXRhOiBhbnlbXSk6IGFueVtdIHtcbiAgICBsZXQgZmlsdGVyZWRNZW51cyA9IG1lbnVEYXRhLmZpbHRlcihtZW51ID0+XG4gICAgICAhdXNlck5hbWUgfHwgKG1lbnUubWVhc3VyZXMgJiYgbWVudS5tZWFzdXJlcy5zb21lKG1lYXN1cmUgPT4gbWVhc3VyZS5hdHRyaWJ1dGVWYWx1ZXMuaW5jbHVkZXModXNlck5hbWUpKSlcbiAgICApO1xuXG4gICAgY29uc3QgbWVudU1hcCA9IG5ldyBNYXAoKTtcbiAgICBjb25zdCBtZW51VHJlZTogYW55W10gPSBbXTtcblxuICAgIGZpbHRlcmVkTWVudXMuZm9yRWFjaChtZW51ID0+IHtcbiAgICAgIG1lbnVNYXAuc2V0KG1lbnUuY2hpbGRNZW51VGlkIHx8IG1lbnUucGFyZW50TWVudVRpZCwge1xuICAgICAgICBpZDogbWVudS5tZW51SWQsXG4gICAgICAgIHRpdGxlOiBtZW51LnRpdGxlLFxuICAgICAgICBpY29uOiBtZW51Lmljb24sXG4gICAgICAgIHR5cGU6IG1lbnUudHlwZSxcbiAgICAgICAgLi4uKG1lbnUuc3VidGl0bGUgJiYgeyBzdWJ0aXRsZTogbWVudS5zdWJ0aXRsZSB9KSxcbiAgICAgICAgLi4uKG1lbnUubGluayAmJiB7IGxpbms6IG1lbnUubGluay5yZXBsYWNlKC9eXFwvKy8sICcnKSB9KSxcbiAgICAgICAgY2hpbGRyZW46IFtdXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGZpbHRlcmVkTWVudXMuZm9yRWFjaChtZW51ID0+IHtcbiAgICAgIGlmIChtZW51LnBhcmVudE1lbnVUaWQgJiYgbWVudS5jaGlsZE1lbnVUaWQpIHtcbiAgICAgICAgY29uc3QgcGFyZW50ID0gbWVudU1hcC5nZXQobWVudS5wYXJlbnRNZW51VGlkKTtcbiAgICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICAgIHBhcmVudC5jaGlsZHJlbi5wdXNoKG1lbnVNYXAuZ2V0KG1lbnUuY2hpbGRNZW51VGlkKSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1lbnVUcmVlLnB1c2gobWVudU1hcC5nZXQobWVudS5wYXJlbnRNZW51VGlkKSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWVudVRyZWU7XG4gIH1cblxuXG5cblxufVxuIiwiPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZmxleC1hdXRvIG1pbi13LTBcIj5cblxuICAgIDxsaWItY29tbW9uLWhlYWRlciBbcGFnZVRpdGxlXT1cIidBcHBsaWNhdGlvbiBNZW51IENvbnRyb2xsZXInXCI+PC9saWItY29tbW9uLWhlYWRlcj5cblxuICAgIDxkaXYgY2xhc3M9XCJwLTQgdy1mdWxsXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLTMgcC00IGJnLXdoaXRlIGJvcmRlciBib3JkZXItZ3JheS0yMDAgcm91bmRlZC1sZyBzaGFkb3ctbWQgZGFyazpiZy1ncmF5LTgwMCBkYXJrOmJvcmRlci1ncmF5LTcwMFwiPlxuICAgICAgICAgICAgPGg2IGNsYXNzPVwibWItMiB0ZXh0LWxnIHRyYWNraW5nLXRpZ2h0IHRleHQtZ3JheS05MDBcbiAgICAgICAgICAgICAgICBkYXJrOnRleHQtd2hpdGUgYm9yZGVyLWIgcGItMyBmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtbC1hdXRvXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3ByaW1hcnlfbWR9fVwiIChjbGljayk9XCJjcmVhdGVOZXdNZW51KClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEFkZCBNZW51IENvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2g2PlxuICAgICAgICAgICAgPGFwcC1sb2FkZXIgKm5nSWY9XCJpc0xvYWRlclwiPjwvYXBwLWxvYWRlcj5cbiAgICAgICAgICAgIDxkeC1kYXRhLWdyaWQgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCIgW2RhdGFTb3VyY2VdPVwicGFwYXJlbnRNZW51RGF0YXNvdXJjZVwiXG4gICAgICAgICAgICAgICAgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIiAqbmdJZj1cIiFpc0xvYWRlclwiIFtzZWxlY3RlZFJvd0tleXNdPVwiW11cIiBbc2hvd0JvcmRlcnNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW3Nob3dDb2x1bW5MaW5lc109XCJ0cnVlXCIgW3Nob3dSb3dMaW5lc109XCJ0cnVlXCIgaWQ9XCJncmlkQ29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPGR4by1wYWdpbmcgW3BhZ2VTaXplXT1cIjEwXCI+PC9keG8tcGFnaW5nPlxuICAgICAgICAgICAgICAgIDxkeG8tZXhwb3J0IFtlbmFibGVkXT1cInRydWVcIj48L2R4by1leHBvcnQ+XG4gICAgICAgICAgICAgICAgPGR4by1zZWFyY2gtcGFuZWwgW2hpZ2hsaWdodENhc2VTZW5zaXRpdmVdPVwidHJ1ZVwiIFt2aXNpYmxlXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICA8L2R4by1zZWFyY2gtcGFuZWw+XG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwidGl0bGVcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwibGlua1wiPjwvZHhpLWNvbHVtbj5cbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJtZW51VHlwZVwiPjwvZHhpLWNvbHVtbj5cbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJ0eXBlXCI+PC9keGktY29sdW1uPlxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImljb25cIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwicGFyZW50TWVudVRpZFwiPjwvZHhpLWNvbHVtbj5cbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJjaGlsZE1lbnVUaWRcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiYXR0cmlidXRlVmFsdWVzXCI+PC9keGktY29sdW1uPlxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImFjdGlvblwiIGNlbGxUZW1wbGF0ZT1cImNlbGxUZW1wbGF0ZVwiIFtmaXhlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgZml4ZWRQb3NpdGlvbj1cInJpZ2h0XCI+PC9keGktY29sdW1uPlxuICAgICAgICAgICAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgZGF0YSBvZiAnY2VsbFRlbXBsYXRlJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9wcmltYXJ5X21kfX1cIiAoY2xpY2spPVwiZWRpdE1lbnUoZGF0YS5kYXRhKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgRWRpdFxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fZGFuZ2VyX21kfX1cIiAoY2xpY2spPVwiZGVsZXRlTWVudShkYXRhLmRhdGEpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBEZWxldGVcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2R4LWRhdGEtZ3JpZD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIDxkaXYgY2xhc3M9XCJtLTMgcC00IGJnLXdoaXRlIGJvcmRlciBib3JkZXItZ3JheS0yMDAgcm91bmRlZC1sZyBzaGFkb3ctbWQgZGFyazpiZy1ncmF5LTgwMCBkYXJrOmJvcmRlci1ncmF5LTcwMFwiPlxuICAgICAgICA8aDYgY2xhc3M9XCJtYi0yIHRleHQtbGcgdHJhY2tpbmctdGlnaHQgdGV4dC1ncmF5LTkwMFxuICAgICAgICAgICAgZGFyazp0ZXh0LXdoaXRlIGJvcmRlci1iIHBiLTMgZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIE1lbnVcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtbC1hdXRvXCI+XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9oNj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgPHByZT48Y29kZT57e3RyZXZpZXdEYXRhc291cmNlIHwganNvbn19PC9jb2RlPjwvcHJlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICBcbiAgICA8L2Rpdj4gLS0+XG5cbjwvZGl2PlxuXG48IS0tIFxuPGR4LXBvcHVwIFsodmlzaWJsZSldPVwiaXNQb3B1cFZpc2libGVcIiBbZHJhZ0VuYWJsZWRdPVwiZmFsc2VcIiBbY2xvc2VPbk91dHNpZGVDbGlja109XCJmYWxzZVwiIFtzaG93VGl0bGVdPVwidHJ1ZVwiXG4gICAgdGl0bGU9XCJNb2RlbCBFZGl0b3JcIiBbd2lkdGhdPVwiMTAwMFwiIFtoZWlnaHRdPVwiNjIwXCI+XG5cbiAgICA8ZGl2PlxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJoaWRlUG9wdXAoKVwiIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIj48L2J1dHRvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tMiBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiICNmaWxlSW5wdXQgYWNjZXB0PVwiLmpzb25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYmxvY2sgdy0zLzUgcC0yIHRleHQtc20gdGV4dC1ncmF5LTQwMCBib3JkZXIgYm9yZGVyLWdyYXktNzAwIHJvdW5kZWQtbGcgYmctZ3JheS04MDAgZm9jdXM6cmluZy1ibHVlLTUwMCBmb2N1czpib3JkZXItYmx1ZS01MDBcIlxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25qc29uRmlsZVNlbGVjdGVkKCRldmVudClcIj5cbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInN1Ym1pdFZpZXcoKVwiIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9zdWNjZXNzX21kfX0gbXItNFwiPlN1Ym1pdDwvYnV0dG9uPlxuXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8dGV4dGFyZWEgWyhuZ01vZGVsKV09XCJqc29uQ29udGVudFwiXG4gICAgICAgICAgICBjbGFzcz1cInctZnVsbCBoLTEwMCBwLTIgIGJvcmRlciBib3JkZXItZ3JheS03MDAgcm91bmRlZC1sZyBiZy1ncmF5LTgwMCB0ZXh0LWdyYXktNDAwXCI+PC90ZXh0YXJlYT5cbiAgICA8L2Rpdj5cbjwvZHgtcG9wdXA+IC0tPiJdfQ==
|
|
@@ -188,12 +188,12 @@ export class ApplicationViewsComponent {
|
|
|
188
188
|
}
|
|
189
189
|
}
|
|
190
190
|
ApplicationViewsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ApplicationViewsComponent, deps: [{ token: i1.ApplicationContentService }, { token: i2.CommonService }, { token: i3.ToastrService }, { token: i4.Title }, { token: i5.ActivatedRoute }, { token: i5.Router }], target: i0.ɵɵFactoryTarget.Component });
|
|
191
|
-
ApplicationViewsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ApplicationViewsComponent, selector: "app-application-views", viewQueries: [{ propertyName: "scrollToElement", first: true, predicate: ["scrollToElement"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-col flex-auto min-w-0\">\n\n <lib-common-header [pageTitle]=\"'Application Views'\"></lib-common-header>\n\n <div class=\"p-4 w-full\">\n <div class=\"m-3 p-4 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <h6 class=\"mb-2 text-lg tracking-tight text-gray-900\n dark:text-white border-b pb-3 flex items-center\">\n <i class=\"fa fa-table mr-2\"></i> Manage Views\n <div class=\"ml-auto\">\n\n\n <button class=\"{{commonService.btnLightWhite}}\" (click)=\"backToPage()\" *ngIf=\"pageId\">\n Back To Page\n </button>\n <button (click)=\"importConfigPopup()\" class=\"{{commonService.btn_warning_md}}\">\n Import Config\n </button>\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"createNewComponentView()\">\n Add View\n </button>\n\n </div>\n </h6>\n <app-loader *ngIf=\"isLoader\"></app-loader>\n <dx-data-grid [columnAutoWidth]=\"true\" [dataSource]=\"componentViewTableDataSource\"\n [hoverStateEnabled]=\"true\" *ngIf=\"!isLoader\" [selectedRowKeys]=\"[]\" [showBorders]=\"true\"\n [showColumnLines]=\"true\" [showRowLines]=\"true\" id=\"gridContainer\">\n <dxo-paging [pageSize]=\"10\"></dxo-paging>\n <dxo-export [enabled]=\"true\"></dxo-export>\n <dxo-search-panel [highlightCaseSensitive]=\"true\" [visible]=\"true\">\n </dxo-search-panel>\n\n <dxi-column dataField=\"viewName\"></dxi-column>\n <!-- <dxi-column dataField=\"datasetName\"></dxi-column>-->\n <!-- <dxi-column dataField=\"viewLabel\"></dxi-column> -->\n <dxi-column dataField=\"kpiConfig.formate\"></dxi-column>\n <dxi-column dataField=\"kpiConfig.componentName\"></dxi-column>\n <dxi-column dataField=\"viewType\"></dxi-column>\n <dxi-column dataField=\"createdBy\"></dxi-column>\n <dxi-column dataField=\"creationDate\"></dxi-column>\n <dxi-column dataField=\"action\" cellTemplate=\"cellTemplate\" [fixed]=\"true\"\n fixedPosition=\"right\"></dxi-column>\n <div *dxTemplate=\"let data of 'cellTemplate'\">\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"editViews(data.data)\">\n Edit\n </button>\n <!-- <button class=\"{{commonService.btn_warning_md}}\" (click)=\"duplicateViews(data.data)\">\n Duplicate\n </button> -->\n <button class=\"{{commonService.btn_danger_md}}\" (click)=\"deleteDataset(data.data)\">\n Delete\n </button>\n\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"exportJsonFile(data.data)\"\n title=\"Export View\">\n <i class=\"fa fa-sign-out\"></i>\n\n </button>\n <button class=\"{{commonService.btn_warning_md}}\" (click)=\"copyJsonFile(data.data)\"\n title=\"Copy as Json\">\n <i class=\"fa fa-files-o\"></i>\n\n\n </button>\n </div>\n\n\n\n </dx-data-grid>\n </div>\n </div>\n\n</div>\n\n\n<dx-popup [(visible)]=\"isPopupVisible\" [dragEnabled]=\"false\" [closeOnOutsideClick]=\"false\" [showTitle]=\"true\"\n title=\"Model Editor\" [width]=\"1000\" [height]=\"620\">\n\n <div>\n <button (click)=\"hidePopup()\" class=\"btn btn-secondary\"></button>\n <div class=\"m-2 flex items-center justify-between\">\n <input type=\"file\" #fileInput accept=\".json\"\n class=\"block w-3/5 p-2 text-sm text-gray-400 border border-gray-700 rounded-lg bg-gray-800 focus:ring-blue-500 focus:border-blue-500\"\n (change)=\"onjsonFileSelected($event)\">\n <button (click)=\"submitView()\" class=\"{{commonService.btn_success_md}} mr-4\">Submit</button>\n\n </div>\n <textarea [(ngModel)]=\"jsonContent\"\n class=\"w-full h-100 p-2 border border-gray-700 rounded-lg bg-gray-800 text-gray-400\"></textarea>\n </div>\n</dx-popup>", styles: [""], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i8.DxoExportComponent, selector: "dxo-export", inputs: ["backgroundColor", "enabled", "fileName", "formats", "margin", "printingEnabled", "proxyUrl", "svgToCanvas", "allowExportSelectedData", "customizeExcelCell", "excelFilterEnabled", "excelWrapTextEnabled", "ignoreExcelErrors", "texts"] }, { kind: "component", type: i9.DxDataGridComponent, selector: "dx-data-grid", inputs: ["accessKey", "activeStateEnabled", "allowColumnReordering", "allowColumnResizing", "autoNavigateToFocusedRow", "cacheEnabled", "cellHintEnabled", "columnAutoWidth", "columnChooser", "columnFixing", "columnHidingEnabled", "columnMinWidth", "columnResizingMode", "columns", "columnWidth", "customizeColumns", "customizeExportData", "dataRowTemplate", "dataSource", "dateSerializationFormat", "disabled", "editing", "elementAttr", "errorRowEnabled", "export", "filterBuilder", "filterBuilderPopup", "filterPanel", "filterRow", "filterSyncEnabled", "filterValue", "focusedColumnIndex", "focusedRowEnabled", "focusedRowIndex", "focusedRowKey", "focusStateEnabled", "grouping", "groupPanel", "headerFilter", "height", "highlightChanges", "hint", "hoverStateEnabled", "keyboardNavigation", "keyExpr", "loadPanel", "masterDetail", "noDataText", "pager", "paging", "remoteOperations", "renderAsync", "repaintChangesOnly", "rowAlternationEnabled", "rowDragging", "rowTemplate", "rtlEnabled", "scrolling", "searchPanel", "selectedRowKeys", "selection", "selectionFilter", "showBorders", "showColumnHeaders", "showColumnLines", "showRowLines", "sortByGroupSummaryInfo", "sorting", "stateStoring", "summary", "syncLookupFilterValues", "tabIndex", "toolbar", "twoWayBindingEnabled", "visible", "width", "wordWrapEnabled"], outputs: ["onAdaptiveDetailRowPreparing", "onCellClick", "onCellDblClick", "onCellHoverChanged", "onCellPrepared", "onContentReady", "onContextMenuPreparing", "onDataErrorOccurred", "onDisposing", "onEditCanceled", "onEditCanceling", "onEditingStart", "onEditorPrepared", "onEditorPreparing", "onExported", "onExporting", "onFileSaving", "onFocusedCellChanged", "onFocusedCellChanging", "onFocusedRowChanged", "onFocusedRowChanging", "onInitialized", "onInitNewRow", "onKeyDown", "onOptionChanged", "onRowClick", "onRowCollapsed", "onRowCollapsing", "onRowDblClick", "onRowExpanded", "onRowExpanding", "onRowInserted", "onRowInserting", "onRowPrepared", "onRowRemoved", "onRowRemoving", "onRowUpdated", "onRowUpdating", "onRowValidating", "onSaved", "onSaving", "onSelectionChanged", "onToolbarPreparing", "accessKeyChange", "activeStateEnabledChange", "allowColumnReorderingChange", "allowColumnResizingChange", "autoNavigateToFocusedRowChange", "cacheEnabledChange", "cellHintEnabledChange", "columnAutoWidthChange", "columnChooserChange", "columnFixingChange", "columnHidingEnabledChange", "columnMinWidthChange", "columnResizingModeChange", "columnsChange", "columnWidthChange", "customizeColumnsChange", "customizeExportDataChange", "dataRowTemplateChange", "dataSourceChange", "dateSerializationFormatChange", "disabledChange", "editingChange", "elementAttrChange", "errorRowEnabledChange", "exportChange", "filterBuilderChange", "filterBuilderPopupChange", "filterPanelChange", "filterRowChange", "filterSyncEnabledChange", "filterValueChange", "focusedColumnIndexChange", "focusedRowEnabledChange", "focusedRowIndexChange", "focusedRowKeyChange", "focusStateEnabledChange", "groupingChange", "groupPanelChange", "headerFilterChange", "heightChange", "highlightChangesChange", "hintChange", "hoverStateEnabledChange", "keyboardNavigationChange", "keyExprChange", "loadPanelChange", "masterDetailChange", "noDataTextChange", "pagerChange", "pagingChange", "remoteOperationsChange", "renderAsyncChange", "repaintChangesOnlyChange", "rowAlternationEnabledChange", "rowDraggingChange", "rowTemplateChange", "rtlEnabledChange", "scrollingChange", "searchPanelChange", "selectedRowKeysChange", "selectionChange", "selectionFilterChange", "showBordersChange", "showColumnHeadersChange", "showColumnLinesChange", "showRowLinesChange", "sortByGroupSummaryInfoChange", "sortingChange", "stateStoringChange", "summaryChange", "syncLookupFilterValuesChange", "tabIndexChange", "toolbarChange", "twoWayBindingEnabledChange", "visibleChange", "widthChange", "wordWrapEnabledChange"] }, { kind: "component", type: i8.DxiColumnComponent, selector: "dxi-column", inputs: ["alignment", "allowEditing", "allowExporting", "allowFiltering", "allowFixing", "allowGrouping", "allowHeaderFiltering", "allowHiding", "allowReordering", "allowResizing", "allowSearch", "allowSorting", "autoExpandGroup", "buttons", "calculateCellValue", "calculateDisplayValue", "calculateFilterExpression", "calculateGroupValue", "calculateSortValue", "caption", "cellTemplate", "columns", "cssClass", "customizeText", "dataField", "dataType", "editCellTemplate", "editorOptions", "encodeHtml", "falseText", "filterOperations", "filterType", "filterValue", "filterValues", "fixed", "fixedPosition", "format", "formItem", "groupCellTemplate", "groupIndex", "headerCellTemplate", "headerFilter", "hidingPriority", "isBand", "lookup", "minWidth", "name", "ownerBand", "renderAsync", "selectedFilterOperation", "setCellValue", "showEditorAlways", "showInColumnChooser", "showWhenGrouped", "sortIndex", "sortingMethod", "sortOrder", "trueText", "type", "validationRules", "visible", "visibleIndex", "width"], outputs: ["filterValueChange", "filterValuesChange", "groupIndexChange", "selectedFilterOperationChange", "sortIndexChange", "sortOrderChange", "visibleChange", "visibleIndexChange"] }, { kind: "component", type: i8.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "component", type: i8.DxoSearchPanelComponent, selector: "dxo-search-panel", inputs: ["highlightCaseSensitive", "highlightSearchText", "placeholder", "searchVisibleColumnsOnly", "text", "visible", "width"], outputs: ["textChange"] }, { kind: "component", type: i10.DxPopupComponent, selector: "dx-popup", inputs: ["accessKey", "animation", "closeOnOutsideClick", "container", "contentTemplate", "copyRootClassesToWrapper", "deferRendering", "disabled", "dragAndResizeArea", "dragEnabled", "dragOutsideBoundary", "elementAttr", "focusStateEnabled", "fullScreen", "height", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "resizeEnabled", "restorePosition", "rtlEnabled", "shading", "shadingColor", "showCloseButton", "showTitle", "tabIndex", "title", "titleTemplate", "toolbarItems", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onResize", "onResizeEnd", "onResizeStart", "onShowing", "onShown", "onTitleRendered", "accessKeyChange", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "disabledChange", "dragAndResizeAreaChange", "dragEnabledChange", "dragOutsideBoundaryChange", "elementAttrChange", "focusStateEnabledChange", "fullScreenChange", "heightChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "resizeEnabledChange", "restorePositionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showCloseButtonChange", "showTitleChange", "tabIndexChange", "titleChange", "titleTemplateChange", "toolbarItemsChange", "visibleChange", "widthChange", "wrapperAttrChange"] }, { kind: "directive", type: i11.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: i11.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i11.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i12.LoaderComponent, selector: "app-loader" }, { kind: "component", type: i13.CommonHeaderComponent, selector: "lib-common-header", inputs: ["pageTitle"] }] });
|
|
191
|
+
ApplicationViewsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ApplicationViewsComponent, selector: "app-application-views", viewQueries: [{ propertyName: "scrollToElement", first: true, predicate: ["scrollToElement"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-col flex-auto min-w-0\">\n\n <lib-common-header [pageTitle]=\"'Application Views'\"></lib-common-header>\n\n <div class=\"p-4 w-full\">\n <div class=\"m-3 p-4 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <h6 class=\"mb-2 text-lg tracking-tight text-gray-900\n dark:text-white border-b pb-3 flex items-center\">\n <i class=\"fa fa-table mr-2\"></i> Manage Views\n <div class=\"ml-auto\">\n\n\n <button class=\"{{commonService.btnLightWhite}}\" (click)=\"backToPage()\" *ngIf=\"pageId\">\n Back To Page\n </button>\n <button (click)=\"importConfigPopup()\" class=\"{{commonService.btn_warning_md}}\">\n Import Config\n </button>\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"createNewComponentView()\">\n Add View\n </button>\n\n </div>\n </h6>\n <app-loader *ngIf=\"isLoader\"></app-loader>\n <dx-data-grid [columnAutoWidth]=\"true\" [dataSource]=\"componentViewTableDataSource\"\n [hoverStateEnabled]=\"true\" *ngIf=\"!isLoader\" [selectedRowKeys]=\"[]\" [showBorders]=\"true\"\n [showColumnLines]=\"true\" [showRowLines]=\"true\" id=\"gridContainer\">\n <dxo-paging [pageSize]=\"10\"></dxo-paging>\n <dxo-export [enabled]=\"true\"></dxo-export>\n <dxo-search-panel [highlightCaseSensitive]=\"true\" [visible]=\"true\">\n </dxo-search-panel>\n\n <dxi-column dataField=\"viewName\"></dxi-column>\n <!-- <dxi-column dataField=\"datasetName\"></dxi-column>-->\n <!-- <dxi-column dataField=\"viewLabel\"></dxi-column> -->\n <dxi-column dataField=\"kpiConfig.formate\"></dxi-column>\n <dxi-column dataField=\"kpiConfig.componentName\"></dxi-column>\n <dxi-column dataField=\"viewType\"></dxi-column>\n <dxi-column dataField=\"createdBy\"></dxi-column>\n <dxi-column dataField=\"creationDate\" sortOrder=\"desc\"></dxi-column>\n <dxi-column dataField=\"action\" cellTemplate=\"cellTemplate\" [fixed]=\"true\"\n fixedPosition=\"right\"></dxi-column>\n <div *dxTemplate=\"let data of 'cellTemplate'\">\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"editViews(data.data)\">\n Edit\n </button>\n <!-- <button class=\"{{commonService.btn_warning_md}}\" (click)=\"duplicateViews(data.data)\">\n Duplicate\n </button> -->\n <button class=\"{{commonService.btn_danger_md}}\" (click)=\"deleteDataset(data.data)\">\n Delete\n </button>\n\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"exportJsonFile(data.data)\"\n title=\"Export View\">\n <i class=\"fa fa-sign-out\"></i>\n\n </button>\n <button class=\"{{commonService.btn_warning_md}}\" (click)=\"copyJsonFile(data.data)\"\n title=\"Copy as Json\">\n <i class=\"fa fa-files-o\"></i>\n\n\n </button>\n </div>\n\n\n\n </dx-data-grid>\n </div>\n </div>\n\n</div>\n\n\n<dx-popup [(visible)]=\"isPopupVisible\" [dragEnabled]=\"false\" [closeOnOutsideClick]=\"false\" [showTitle]=\"true\"\n title=\"Model Editor\" [width]=\"1000\" [height]=\"620\">\n\n <div>\n <button (click)=\"hidePopup()\" class=\"btn btn-secondary\"></button>\n <div class=\"m-2 flex items-center justify-between\">\n <input type=\"file\" #fileInput accept=\".json\"\n class=\"block w-3/5 p-2 text-sm text-gray-400 border border-gray-700 rounded-lg bg-gray-800 focus:ring-blue-500 focus:border-blue-500\"\n (change)=\"onjsonFileSelected($event)\">\n <button (click)=\"submitView()\" class=\"{{commonService.btn_success_md}} mr-4\">Submit</button>\n\n </div>\n <textarea [(ngModel)]=\"jsonContent\"\n class=\"w-full h-100 p-2 border border-gray-700 rounded-lg bg-gray-800 text-gray-400\"></textarea>\n </div>\n</dx-popup>", styles: [""], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i8.DxoExportComponent, selector: "dxo-export", inputs: ["backgroundColor", "enabled", "fileName", "formats", "margin", "printingEnabled", "proxyUrl", "svgToCanvas", "allowExportSelectedData", "customizeExcelCell", "excelFilterEnabled", "excelWrapTextEnabled", "ignoreExcelErrors", "texts"] }, { kind: "component", type: i9.DxDataGridComponent, selector: "dx-data-grid", inputs: ["accessKey", "activeStateEnabled", "allowColumnReordering", "allowColumnResizing", "autoNavigateToFocusedRow", "cacheEnabled", "cellHintEnabled", "columnAutoWidth", "columnChooser", "columnFixing", "columnHidingEnabled", "columnMinWidth", "columnResizingMode", "columns", "columnWidth", "customizeColumns", "customizeExportData", "dataRowTemplate", "dataSource", "dateSerializationFormat", "disabled", "editing", "elementAttr", "errorRowEnabled", "export", "filterBuilder", "filterBuilderPopup", "filterPanel", "filterRow", "filterSyncEnabled", "filterValue", "focusedColumnIndex", "focusedRowEnabled", "focusedRowIndex", "focusedRowKey", "focusStateEnabled", "grouping", "groupPanel", "headerFilter", "height", "highlightChanges", "hint", "hoverStateEnabled", "keyboardNavigation", "keyExpr", "loadPanel", "masterDetail", "noDataText", "pager", "paging", "remoteOperations", "renderAsync", "repaintChangesOnly", "rowAlternationEnabled", "rowDragging", "rowTemplate", "rtlEnabled", "scrolling", "searchPanel", "selectedRowKeys", "selection", "selectionFilter", "showBorders", "showColumnHeaders", "showColumnLines", "showRowLines", "sortByGroupSummaryInfo", "sorting", "stateStoring", "summary", "syncLookupFilterValues", "tabIndex", "toolbar", "twoWayBindingEnabled", "visible", "width", "wordWrapEnabled"], outputs: ["onAdaptiveDetailRowPreparing", "onCellClick", "onCellDblClick", "onCellHoverChanged", "onCellPrepared", "onContentReady", "onContextMenuPreparing", "onDataErrorOccurred", "onDisposing", "onEditCanceled", "onEditCanceling", "onEditingStart", "onEditorPrepared", "onEditorPreparing", "onExported", "onExporting", "onFileSaving", "onFocusedCellChanged", "onFocusedCellChanging", "onFocusedRowChanged", "onFocusedRowChanging", "onInitialized", "onInitNewRow", "onKeyDown", "onOptionChanged", "onRowClick", "onRowCollapsed", "onRowCollapsing", "onRowDblClick", "onRowExpanded", "onRowExpanding", "onRowInserted", "onRowInserting", "onRowPrepared", "onRowRemoved", "onRowRemoving", "onRowUpdated", "onRowUpdating", "onRowValidating", "onSaved", "onSaving", "onSelectionChanged", "onToolbarPreparing", "accessKeyChange", "activeStateEnabledChange", "allowColumnReorderingChange", "allowColumnResizingChange", "autoNavigateToFocusedRowChange", "cacheEnabledChange", "cellHintEnabledChange", "columnAutoWidthChange", "columnChooserChange", "columnFixingChange", "columnHidingEnabledChange", "columnMinWidthChange", "columnResizingModeChange", "columnsChange", "columnWidthChange", "customizeColumnsChange", "customizeExportDataChange", "dataRowTemplateChange", "dataSourceChange", "dateSerializationFormatChange", "disabledChange", "editingChange", "elementAttrChange", "errorRowEnabledChange", "exportChange", "filterBuilderChange", "filterBuilderPopupChange", "filterPanelChange", "filterRowChange", "filterSyncEnabledChange", "filterValueChange", "focusedColumnIndexChange", "focusedRowEnabledChange", "focusedRowIndexChange", "focusedRowKeyChange", "focusStateEnabledChange", "groupingChange", "groupPanelChange", "headerFilterChange", "heightChange", "highlightChangesChange", "hintChange", "hoverStateEnabledChange", "keyboardNavigationChange", "keyExprChange", "loadPanelChange", "masterDetailChange", "noDataTextChange", "pagerChange", "pagingChange", "remoteOperationsChange", "renderAsyncChange", "repaintChangesOnlyChange", "rowAlternationEnabledChange", "rowDraggingChange", "rowTemplateChange", "rtlEnabledChange", "scrollingChange", "searchPanelChange", "selectedRowKeysChange", "selectionChange", "selectionFilterChange", "showBordersChange", "showColumnHeadersChange", "showColumnLinesChange", "showRowLinesChange", "sortByGroupSummaryInfoChange", "sortingChange", "stateStoringChange", "summaryChange", "syncLookupFilterValuesChange", "tabIndexChange", "toolbarChange", "twoWayBindingEnabledChange", "visibleChange", "widthChange", "wordWrapEnabledChange"] }, { kind: "component", type: i8.DxiColumnComponent, selector: "dxi-column", inputs: ["alignment", "allowEditing", "allowExporting", "allowFiltering", "allowFixing", "allowGrouping", "allowHeaderFiltering", "allowHiding", "allowReordering", "allowResizing", "allowSearch", "allowSorting", "autoExpandGroup", "buttons", "calculateCellValue", "calculateDisplayValue", "calculateFilterExpression", "calculateGroupValue", "calculateSortValue", "caption", "cellTemplate", "columns", "cssClass", "customizeText", "dataField", "dataType", "editCellTemplate", "editorOptions", "encodeHtml", "falseText", "filterOperations", "filterType", "filterValue", "filterValues", "fixed", "fixedPosition", "format", "formItem", "groupCellTemplate", "groupIndex", "headerCellTemplate", "headerFilter", "hidingPriority", "isBand", "lookup", "minWidth", "name", "ownerBand", "renderAsync", "selectedFilterOperation", "setCellValue", "showEditorAlways", "showInColumnChooser", "showWhenGrouped", "sortIndex", "sortingMethod", "sortOrder", "trueText", "type", "validationRules", "visible", "visibleIndex", "width"], outputs: ["filterValueChange", "filterValuesChange", "groupIndexChange", "selectedFilterOperationChange", "sortIndexChange", "sortOrderChange", "visibleChange", "visibleIndexChange"] }, { kind: "component", type: i8.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "component", type: i8.DxoSearchPanelComponent, selector: "dxo-search-panel", inputs: ["highlightCaseSensitive", "highlightSearchText", "placeholder", "searchVisibleColumnsOnly", "text", "visible", "width"], outputs: ["textChange"] }, { kind: "component", type: i10.DxPopupComponent, selector: "dx-popup", inputs: ["accessKey", "animation", "closeOnOutsideClick", "container", "contentTemplate", "copyRootClassesToWrapper", "deferRendering", "disabled", "dragAndResizeArea", "dragEnabled", "dragOutsideBoundary", "elementAttr", "focusStateEnabled", "fullScreen", "height", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "resizeEnabled", "restorePosition", "rtlEnabled", "shading", "shadingColor", "showCloseButton", "showTitle", "tabIndex", "title", "titleTemplate", "toolbarItems", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onResize", "onResizeEnd", "onResizeStart", "onShowing", "onShown", "onTitleRendered", "accessKeyChange", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "disabledChange", "dragAndResizeAreaChange", "dragEnabledChange", "dragOutsideBoundaryChange", "elementAttrChange", "focusStateEnabledChange", "fullScreenChange", "heightChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "resizeEnabledChange", "restorePositionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showCloseButtonChange", "showTitleChange", "tabIndexChange", "titleChange", "titleTemplateChange", "toolbarItemsChange", "visibleChange", "widthChange", "wrapperAttrChange"] }, { kind: "directive", type: i11.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: i11.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i11.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i12.LoaderComponent, selector: "app-loader" }, { kind: "component", type: i13.CommonHeaderComponent, selector: "lib-common-header", inputs: ["pageTitle"] }] });
|
|
192
192
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ApplicationViewsComponent, decorators: [{
|
|
193
193
|
type: Component,
|
|
194
|
-
args: [{ selector: 'app-application-views', template: "<div class=\"flex flex-col flex-auto min-w-0\">\n\n <lib-common-header [pageTitle]=\"'Application Views'\"></lib-common-header>\n\n <div class=\"p-4 w-full\">\n <div class=\"m-3 p-4 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <h6 class=\"mb-2 text-lg tracking-tight text-gray-900\n dark:text-white border-b pb-3 flex items-center\">\n <i class=\"fa fa-table mr-2\"></i> Manage Views\n <div class=\"ml-auto\">\n\n\n <button class=\"{{commonService.btnLightWhite}}\" (click)=\"backToPage()\" *ngIf=\"pageId\">\n Back To Page\n </button>\n <button (click)=\"importConfigPopup()\" class=\"{{commonService.btn_warning_md}}\">\n Import Config\n </button>\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"createNewComponentView()\">\n Add View\n </button>\n\n </div>\n </h6>\n <app-loader *ngIf=\"isLoader\"></app-loader>\n <dx-data-grid [columnAutoWidth]=\"true\" [dataSource]=\"componentViewTableDataSource\"\n [hoverStateEnabled]=\"true\" *ngIf=\"!isLoader\" [selectedRowKeys]=\"[]\" [showBorders]=\"true\"\n [showColumnLines]=\"true\" [showRowLines]=\"true\" id=\"gridContainer\">\n <dxo-paging [pageSize]=\"10\"></dxo-paging>\n <dxo-export [enabled]=\"true\"></dxo-export>\n <dxo-search-panel [highlightCaseSensitive]=\"true\" [visible]=\"true\">\n </dxo-search-panel>\n\n <dxi-column dataField=\"viewName\"></dxi-column>\n <!-- <dxi-column dataField=\"datasetName\"></dxi-column>-->\n <!-- <dxi-column dataField=\"viewLabel\"></dxi-column> -->\n <dxi-column dataField=\"kpiConfig.formate\"></dxi-column>\n <dxi-column dataField=\"kpiConfig.componentName\"></dxi-column>\n <dxi-column dataField=\"viewType\"></dxi-column>\n <dxi-column dataField=\"createdBy\"></dxi-column>\n <dxi-column dataField=\"creationDate\"></dxi-column>\n <dxi-column dataField=\"action\" cellTemplate=\"cellTemplate\" [fixed]=\"true\"\n fixedPosition=\"right\"></dxi-column>\n <div *dxTemplate=\"let data of 'cellTemplate'\">\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"editViews(data.data)\">\n Edit\n </button>\n <!-- <button class=\"{{commonService.btn_warning_md}}\" (click)=\"duplicateViews(data.data)\">\n Duplicate\n </button> -->\n <button class=\"{{commonService.btn_danger_md}}\" (click)=\"deleteDataset(data.data)\">\n Delete\n </button>\n\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"exportJsonFile(data.data)\"\n title=\"Export View\">\n <i class=\"fa fa-sign-out\"></i>\n\n </button>\n <button class=\"{{commonService.btn_warning_md}}\" (click)=\"copyJsonFile(data.data)\"\n title=\"Copy as Json\">\n <i class=\"fa fa-files-o\"></i>\n\n\n </button>\n </div>\n\n\n\n </dx-data-grid>\n </div>\n </div>\n\n</div>\n\n\n<dx-popup [(visible)]=\"isPopupVisible\" [dragEnabled]=\"false\" [closeOnOutsideClick]=\"false\" [showTitle]=\"true\"\n title=\"Model Editor\" [width]=\"1000\" [height]=\"620\">\n\n <div>\n <button (click)=\"hidePopup()\" class=\"btn btn-secondary\"></button>\n <div class=\"m-2 flex items-center justify-between\">\n <input type=\"file\" #fileInput accept=\".json\"\n class=\"block w-3/5 p-2 text-sm text-gray-400 border border-gray-700 rounded-lg bg-gray-800 focus:ring-blue-500 focus:border-blue-500\"\n (change)=\"onjsonFileSelected($event)\">\n <button (click)=\"submitView()\" class=\"{{commonService.btn_success_md}} mr-4\">Submit</button>\n\n </div>\n <textarea [(ngModel)]=\"jsonContent\"\n class=\"w-full h-100 p-2 border border-gray-700 rounded-lg bg-gray-800 text-gray-400\"></textarea>\n </div>\n</dx-popup>" }]
|
|
194
|
+
args: [{ selector: 'app-application-views', template: "<div class=\"flex flex-col flex-auto min-w-0\">\n\n <lib-common-header [pageTitle]=\"'Application Views'\"></lib-common-header>\n\n <div class=\"p-4 w-full\">\n <div class=\"m-3 p-4 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <h6 class=\"mb-2 text-lg tracking-tight text-gray-900\n dark:text-white border-b pb-3 flex items-center\">\n <i class=\"fa fa-table mr-2\"></i> Manage Views\n <div class=\"ml-auto\">\n\n\n <button class=\"{{commonService.btnLightWhite}}\" (click)=\"backToPage()\" *ngIf=\"pageId\">\n Back To Page\n </button>\n <button (click)=\"importConfigPopup()\" class=\"{{commonService.btn_warning_md}}\">\n Import Config\n </button>\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"createNewComponentView()\">\n Add View\n </button>\n\n </div>\n </h6>\n <app-loader *ngIf=\"isLoader\"></app-loader>\n <dx-data-grid [columnAutoWidth]=\"true\" [dataSource]=\"componentViewTableDataSource\"\n [hoverStateEnabled]=\"true\" *ngIf=\"!isLoader\" [selectedRowKeys]=\"[]\" [showBorders]=\"true\"\n [showColumnLines]=\"true\" [showRowLines]=\"true\" id=\"gridContainer\">\n <dxo-paging [pageSize]=\"10\"></dxo-paging>\n <dxo-export [enabled]=\"true\"></dxo-export>\n <dxo-search-panel [highlightCaseSensitive]=\"true\" [visible]=\"true\">\n </dxo-search-panel>\n\n <dxi-column dataField=\"viewName\"></dxi-column>\n <!-- <dxi-column dataField=\"datasetName\"></dxi-column>-->\n <!-- <dxi-column dataField=\"viewLabel\"></dxi-column> -->\n <dxi-column dataField=\"kpiConfig.formate\"></dxi-column>\n <dxi-column dataField=\"kpiConfig.componentName\"></dxi-column>\n <dxi-column dataField=\"viewType\"></dxi-column>\n <dxi-column dataField=\"createdBy\"></dxi-column>\n <dxi-column dataField=\"creationDate\" sortOrder=\"desc\"></dxi-column>\n <dxi-column dataField=\"action\" cellTemplate=\"cellTemplate\" [fixed]=\"true\"\n fixedPosition=\"right\"></dxi-column>\n <div *dxTemplate=\"let data of 'cellTemplate'\">\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"editViews(data.data)\">\n Edit\n </button>\n <!-- <button class=\"{{commonService.btn_warning_md}}\" (click)=\"duplicateViews(data.data)\">\n Duplicate\n </button> -->\n <button class=\"{{commonService.btn_danger_md}}\" (click)=\"deleteDataset(data.data)\">\n Delete\n </button>\n\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"exportJsonFile(data.data)\"\n title=\"Export View\">\n <i class=\"fa fa-sign-out\"></i>\n\n </button>\n <button class=\"{{commonService.btn_warning_md}}\" (click)=\"copyJsonFile(data.data)\"\n title=\"Copy as Json\">\n <i class=\"fa fa-files-o\"></i>\n\n\n </button>\n </div>\n\n\n\n </dx-data-grid>\n </div>\n </div>\n\n</div>\n\n\n<dx-popup [(visible)]=\"isPopupVisible\" [dragEnabled]=\"false\" [closeOnOutsideClick]=\"false\" [showTitle]=\"true\"\n title=\"Model Editor\" [width]=\"1000\" [height]=\"620\">\n\n <div>\n <button (click)=\"hidePopup()\" class=\"btn btn-secondary\"></button>\n <div class=\"m-2 flex items-center justify-between\">\n <input type=\"file\" #fileInput accept=\".json\"\n class=\"block w-3/5 p-2 text-sm text-gray-400 border border-gray-700 rounded-lg bg-gray-800 focus:ring-blue-500 focus:border-blue-500\"\n (change)=\"onjsonFileSelected($event)\">\n <button (click)=\"submitView()\" class=\"{{commonService.btn_success_md}} mr-4\">Submit</button>\n\n </div>\n <textarea [(ngModel)]=\"jsonContent\"\n class=\"w-full h-100 p-2 border border-gray-700 rounded-lg bg-gray-800 text-gray-400\"></textarea>\n </div>\n</dx-popup>" }]
|
|
195
195
|
}], ctorParameters: function () { return [{ type: i1.ApplicationContentService }, { type: i2.CommonService }, { type: i3.ToastrService }, { type: i4.Title }, { type: i5.ActivatedRoute }, { type: i5.Router }]; }, propDecorators: { scrollToElement: [{
|
|
196
196
|
type: ViewChild,
|
|
197
197
|
args: ['scrollToElement']
|
|
198
198
|
}] } });
|
|
199
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tdmlld3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLXZpZXctY29tcG9uZW50cy9hcHBsaWNhdGlvbi12aWV3cy9hcHBsaWNhdGlvbi12aWV3cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvYXBwbGljYXRpb24tdmlldy1jb21wb25lbnRzL2FwcGxpY2F0aW9uLXZpZXdzL2FwcGxpY2F0aW9uLXZpZXdzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXNCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd6RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQVcvQyxNQUFNLE9BQU8seUJBQXlCO0lBd0JwQyxZQUNVLE9BQWtDLEVBQ25DLGFBQTRCLEVBQzNCLE1BQXFCLEVBQ3JCLEtBQVksRUFDWixjQUE4QixFQUM5QixNQUFjO1FBTGQsWUFBTyxHQUFQLE9BQU8sQ0FBMkI7UUFDbkMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDM0IsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNyQixVQUFLLEdBQUwsS0FBSyxDQUFPO1FBQ1osbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLFdBQU0sR0FBTixNQUFNLENBQVE7UUEzQnhCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDN0IsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFDaEMsNkJBQXdCLEdBQVksS0FBSyxDQUFD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ZW50LCBFbGVtZW50UmVmLCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xuaW1wb3J0IHsgY29uZmlybSB9IGZyb20gJ2RldmV4dHJlbWUvdWkvZGlhbG9nJztcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRXh0cmFzLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQXBwbGljYXRpb25Db250ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL2FwcGxpY2F0aW9uLWNvbnRlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWFwcGxpY2F0aW9uLXZpZXdzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FwcGxpY2F0aW9uLXZpZXdzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXBwbGljYXRpb24tdmlld3MuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBBcHBsaWNhdGlvblZpZXdzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgY29tcG9uZW50Vmlld1RhYmxlRGF0YVNvdXJjZTogYW55O1xuICBkYXRhU2V0dGFibGVEYXRhU291cmNlOiBhbnk7XG4gIGlzTG9hZGVyOiBib29sZWFuID0gZmFsc2U7XG4gIGlzRWRpdENsaWNrOiBib29sZWFuID0gZmFsc2U7XG4gIGlzRmlsdGVySW5wdXRzOiBib29sZWFuID0gZmFsc2U7XG4gIGlzTmV3Q29tcG9uZW50Vmlld0NyZWF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBpc0R1cGxpZGF0ZVZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBpc0NyZWF0ZVZpZXdGcm9tS3BpOiBib29sZWFuO1xuICBpc0NyZWF0ZVZpZXdGcm9tS3BpTG9hZGVyOiBib29sZWFuO1xuICBpc0NyZWF0ZU5ld1ZpZXc6IGJvb2xlYW47XG4gIHRyZWVMaXN0Rm9yU2VhcmNoQm94OiBhbnkgPSBbXTtcbiAgc2VsZWN0ZWREYXRhU2V0OiBhbnkgPSB7fTtcbiAgdmlld0lkOiBhbnk7XG4gIHBhZ2VJZDogYW55O1xuICBjb21wb25lbnROYW1lc090aGVycyA9IFtcbiAgICB7IFwiY29tcE5hbWVcIjogXCJHYW1tYVRvZGF5UHJldmlvdXNDb21wb25lbnRcIiwgXCJpdGVtXCI6IFwiVG9kYXkgdnMgUHJldmlvdXMgRGF5IFwiIH0sXG4gICAgeyBcImNvbXBOYW1lXCI6IFwiR2FtbWFUYWJsZVdpdGhQZXJjZW50YWdlQ29tcG9uZW50XCIsIFwiaXRlbVwiOiBcIlRhYmxlIFZpZXcgd2l0aCBwZXJjZW50YWdlXCIgfSxcbiAgICB7IFwiY29tcE5hbWVcIjogXCJHYW1tU2luZ2xlTnVtYmVyQ2FyZENvbXBvbmVudFwiLCBcIml0ZW1cIjogXCJTaW5nbGUgTnVtYmVyIENhcmRcIiB9XG4gIF1cbiAgY29tcG9uZW50TmFtZTogYW55O1xuICBAVmlld0NoaWxkKCdzY3JvbGxUb0VsZW1lbnQnKSBzY3JvbGxUb0VsZW1lbnQhOiBFbGVtZW50UmVmO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2VydmljZTogQXBwbGljYXRpb25Db250ZW50U2VydmljZSxcbiAgICBwdWJsaWMgY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZSxcbiAgICBwcml2YXRlIHRvYXN0cjogVG9hc3RyU2VydmljZSxcbiAgICBwcml2YXRlIHRpdGxlOiBUaXRsZSxcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXG4gICkge1xuICAgIHRoaXMudGl0bGUuc2V0VGl0bGUoJ0FwcGxpY2F0aW9uIFZpZXdzJyk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBsZXQgY29udGVudFZpZXdJZCA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbJ3BhZ2VJZCddO1xuICAgIGlmIChjb250ZW50Vmlld0lkKSB7XG4gICAgICB0aGlzLnBhZ2VJZCA9IHRydWU7XG4gICAgfVxuXG5cbiAgICB0aGlzLmdldENvbXBvbmVudFZpZXdTZXQoKTtcbiAgfVxuXG4gIGNyZWF0ZU5ld0NvbXBvbmVudFZpZXcoKSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvYXBwcy9jb250cm9sUGFuZWwvYXBwbGljYXRpb25WaWV3cy92aWV3RWRpdG9yJ10pXG4gIH1cblxuXG4gIGdldENvbXBvbmVudFZpZXdTZXQoKSB7XG4gICAgdGhpcy5pc0xvYWRlciA9IHRydWU7XG4gICAgdGhpcy5zZXJ2aWNlLmdldEFwcFZpZXdDb25maWdzKCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5jb21wb25lbnRWaWV3VGFibGVEYXRhU291cmNlID0gZGF0YTtcbiAgICAgICAgdGhpcy5pc0xvYWRlciA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzTmV3Q29tcG9uZW50Vmlld0NyZWF0ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzRHVwbGlkYXRlVmlldyA9IGZhbHNlO1xuICAgICAgfSwgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcignVW5leHBlY3RlZCBTZXJ2ZXIgRXhjZXB0aW9uLiBQbGVhc2UgY29udGFjdCBTeXN0ZW0gQWRtaW4uJywgJ1ZpZXcgQ3JlYXRpb24nKVxuXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4gIGVkaXRWaWV3cyhkYXRhKSB7XG4gICAgbGV0IG5hdmlnYXRpb25FeHRyYTogTmF2aWdhdGlvbkV4dHJhcyA9IHtcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgIHZpZXdJZDogZGF0YS52aWV3SWQsXG4gICAgICAgIGNvbnRlbnRUeXBlOiBcImVkaXRcIlxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9hcHBzL2NvbnRyb2xQYW5lbC9hcHBsaWNhdGlvblZpZXdzL3ZpZXdFZGl0b3InXSwgbmF2aWdhdGlvbkV4dHJhKVxuXG4gIH1cblxuICBkdXBsaWNhdGVWaWV3cyhkYXRhKSB7XG4gICAgbGV0IG5hdmlnYXRpb25FeHRyYTogTmF2aWdhdGlvbkV4dHJhcyA9IHtcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgIHZpZXdJZDogZGF0YS52aWV3SWQsXG4gICAgICAgIGNvbnRlbnRUeXBlOiBcImNsb25lXCJcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvYXBwcy9jb250cm9sUGFuZWwvYXBwbGljYXRpb25WaWV3cy92aWV3RWRpdG9yJ10sIG5hdmlnYXRpb25FeHRyYSlcbiAgfVxuXG4gIGRlbGV0ZURhdGFzZXQoZGF0YSkge1xuICAgIGxldCByZXN1bHQgPSBjb25maXJtKFwiPGk+QXJlIFlvdSBTdXJlPzwvaT5cIiwgXCJEZWxldGUgRGF0YXNldFwiKTtcbiAgICByZXN1bHQudGhlbigoZGlhbG9nUmVzdWx0KSA9PiB7XG4gICAgICBpZiAoZGlhbG9nUmVzdWx0KSB7XG4gICAgICAgIHRoaXMuaXNMb2FkZXIgPSB0cnVlO1xuICAgICAgICB0aGlzLnNlcnZpY2UuZGVsZXRlQXBwVmlld0NvbmZpZyhkYXRhLnZpZXdJZCkuc3Vic2NyaWJlKCh2YWw6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuZ2V0Q29tcG9uZW50Vmlld1NldCgpO1xuICAgICAgICAgIHRoaXMuaXNMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmlzRWRpdENsaWNrID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcygnRGF0YXNldCBEZWxldGVkIFN1Y2Nlc3NmdWxseScpXG4gICAgICAgIH0sIGVyciA9PiB7XG4gICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcignVW5leHBlY3RlZCBTZXJ2ZXIgRXhjZXB0aW9uLiBQbGVhc2UgY29udGFjdCBTeXN0ZW0gQWRtaW4uJywgJ1J1bGUgTW9kdWxlJyk7XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuXG4gIGdldENhcGl0YWxpemUoaXRlbTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuY29tbW9uU2VydmljZS5jb252ZXJ0VG9TcGFjZVNlcGFyYXRlZENhcGl0YWxpemVkKGl0ZW0pXG4gIH1cblxuICBiYWNrVG9QYWdlKCkge1xuICAgIGxldCBjb250ZW50Vmlld0lkID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1sncGFnZUlkJ107XG4gICAgaWYgKGNvbnRlbnRWaWV3SWQpIHtcbiAgICAgIGxldCBuYXZpZ2F0aW9uOiBOYXZpZ2F0aW9uRXh0cmFzID0ge1xuICAgICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICAgICdwYWdlSWQnOiBjb250ZW50Vmlld0lkLFxuICAgICAgICAgIFwiY29udGVudFR5cGVcIjogJ2VkaXQnXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9hcHBzL2NvbnRyb2xQYW5lbC9wYWdlQ29uZmlnQ29udHJvbGxlciddLCBuYXZpZ2F0aW9uKTtcbiAgICB9XG4gIH1cblxuICBnb3RvRGF0YXNldCgpIHtcbiAgICBsZXQgY29udGVudFZpZXdJZCA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbJ3BhZ2VJZCddO1xuICAgIGlmIChjb250ZW50Vmlld0lkKSB7XG4gICAgICBsZXQgbmF2aWdhdGlvbjogTmF2aWdhdGlvbkV4dHJhcyA9IHtcbiAgICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgICAncGFnZUlkJzogY29udGVudFZpZXdJZCxcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2FwcHMvY29udHJvbFBhbmVsL2FwcGxpY2F0aW9uRGF0YXNldCddLCBuYXZpZ2F0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvYXBwcy9jb250cm9sUGFuZWwvYXBwbGljYXRpb25EYXRhc2V0J10pO1xuICAgIH1cbiAgfVxuXG5cblxuXG4gIGlzUG9wdXBWaXNpYmxlID0gZmFsc2U7XG4gIGpzb25Db250ZW50OiBzdHJpbmcgPSAnJztcblxuXG4gIGltcG9ydENvbmZpZ1BvcHVwKCk6IHZvaWQge1xuICAgIHRoaXMuaXNQb3B1cFZpc2libGUgPSB0cnVlO1xuXG4gIH1cblxuICBoaWRlUG9wdXAoKTogdm9pZCB7XG4gICAgdGhpcy5pc1BvcHVwVmlzaWJsZSA9IGZhbHNlO1xuICAgIHRoaXMuanNvbkNvbnRlbnQgPSAnJztcblxuICB9XG5cbiAgb25qc29uRmlsZVNlbGVjdGVkKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgaWYgKGlucHV0LmZpbGVzICYmIGlucHV0LmZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbGUgPSBpbnB1dC5maWxlc1swXTtcbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG5cbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoZTogUHJvZ3Jlc3NFdmVudDxGaWxlUmVhZGVyPikgPT4ge1xuICAgICAgICBpZiAoZS50YXJnZXQpIHtcbiAgICAgICAgICBjb25zdCBwYXJzZWRDb250ZW50ID0gSlNPTi5wYXJzZShlLnRhcmdldC5yZXN1bHQgYXMgc3RyaW5nKTtcblxuICAgICAgICAgIHBhcnNlZENvbnRlbnQudmlld0lkID0gJyc7XG4gICAgICAgICAgdGhpcy5qc29uQ29udGVudCA9IEpTT04uc3RyaW5naWZ5KHBhcnNlZENvbnRlbnQsIG51bGwsIDIpO1xuXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICByZWFkZXIucmVhZEFzVGV4dChmaWxlKTtcbiAgICB9XG4gIH1cblxuXG4gIHN1Ym1pdFZpZXcoKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2codGhpcy5qc29uQ29udGVudClcbiAgICB0aGlzLnNlcnZpY2UuY3JlYXRlQXBwVmlld0NvbmZpZyhKU09OLnBhcnNlKHRoaXMuanNvbkNvbnRlbnQpKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xuXG4gICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MoJ1ZpZXcgQ3JlYXRlZCBTdWNjZXNzZnVsbHknKVxuICAgICAgICB0aGlzLmdldENvbXBvbmVudFZpZXdTZXQoKTtcbiAgICAgICAgdGhpcy5pc0xvYWRlciA9IGZhbHNlO1xuICAgICAgICAvLyB0aGlzLmFkZE5ld1ZpZXcoKTtcblxuICAgICAgfSwgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcignVW5leHBlY3RlZCBTZXJ2ZXIgRXhjZXB0aW9uLiBQbGVhc2UgY29udGFjdCBTeXN0ZW0gQWRtaW4uJywgJ1ZpZXcgQ3JlYXRpb24nKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuXG4gIGV4cG9ydEpzb25GaWxlKGl0ZW06IGFueSk6IHZvaWQge1xuICAgIGlmICghaXRlbSkge1xuICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ05vIGRhdGEgYXZhaWxhYmxlIHRvIGV4cG9ydC4nLCAnRXhwb3J0IEVycm9yJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QganNvblN0ciA9IEpTT04uc3RyaW5naWZ5KGl0ZW0sIG51bGwsIDIpO1xuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbanNvblN0cl0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nIH0pO1xuICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgIGNvbnN0IGFuY2hvciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICBhbmNob3IuaHJlZiA9IHVybDtcbiAgICBhbmNob3IuZG93bmxvYWQgPSBgJHtpdGVtLnZpZXdOYW1lLnJlcGxhY2UoLyAvZywgJ18nKX0uanNvbmA7XG4gICAgYW5jaG9yLmNsaWNrKCk7XG4gICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcbiAgfVxuXG5cbiAgY29weUpzb25GaWxlKGl0ZW06IGFueSk6IHZvaWQge1xuICAgIGlmICghaXRlbSkge1xuICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ05vIGRhdGEgYXZhaWxhYmxlIHRvIGNvcHkuJywgJ0NvcHkgRXJyb3InKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QganNvblN0ciA9IEpTT04uc3RyaW5naWZ5KGl0ZW0sIG51bGwsIDIpO1xuXG4gICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoanNvblN0cikudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKCdEYXRhIGNvcGllZCB0byBjbGlwYm9hcmQuJywgJ1N1Y2Nlc3MnKTtcbiAgICB9KS5jYXRjaChlcnIgPT4ge1xuICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ0ZhaWxlZCB0byBjb3B5IGRhdGEuJywgJ0NvcHkgRXJyb3InKTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBjb3B5IHRleHQ6ICcsIGVycik7XG4gICAgfSk7XG4gIH1cblxuXG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGZsZXgtYXV0byBtaW4tdy0wXCI+XG5cbiAgICA8bGliLWNvbW1vbi1oZWFkZXIgW3BhZ2VUaXRsZV09XCInQXBwbGljYXRpb24gVmlld3MnXCI+PC9saWItY29tbW9uLWhlYWRlcj5cblxuICAgIDxkaXYgY2xhc3M9XCJwLTQgdy1mdWxsXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLTMgcC00IGJnLXdoaXRlIGJvcmRlciBib3JkZXItZ3JheS0yMDAgcm91bmRlZC1sZyBzaGFkb3ctbWQgZGFyazpiZy1ncmF5LTgwMCBkYXJrOmJvcmRlci1ncmF5LTcwMFwiPlxuICAgICAgICAgICAgPGg2IGNsYXNzPVwibWItMiB0ZXh0LWxnIHRyYWNraW5nLXRpZ2h0IHRleHQtZ3JheS05MDBcbiAgICAgICAgICAgICAgICBkYXJrOnRleHQtd2hpdGUgYm9yZGVyLWIgcGItMyBmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGFibGUgbXItMlwiPjwvaT4gTWFuYWdlIFZpZXdzXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1sLWF1dG9cIj5cblxuXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuTGlnaHRXaGl0ZX19XCIgKGNsaWNrKT1cImJhY2tUb1BhZ2UoKVwiICpuZ0lmPVwicGFnZUlkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBCYWNrIFRvIFBhZ2VcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImltcG9ydENvbmZpZ1BvcHVwKClcIiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fd2FybmluZ19tZH19XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBJbXBvcnQgQ29uZmlnXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9wcmltYXJ5X21kfX1cIiAoY2xpY2spPVwiY3JlYXRlTmV3Q29tcG9uZW50VmlldygpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBBZGQgVmlld1xuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9oNj5cbiAgICAgICAgICAgIDxhcHAtbG9hZGVyICpuZ0lmPVwiaXNMb2FkZXJcIj48L2FwcC1sb2FkZXI+XG4gICAgICAgICAgICA8ZHgtZGF0YS1ncmlkIFtjb2x1bW5BdXRvV2lkdGhdPVwidHJ1ZVwiIFtkYXRhU291cmNlXT1cImNvbXBvbmVudFZpZXdUYWJsZURhdGFTb3VyY2VcIlxuICAgICAgICAgICAgICAgIFtob3ZlclN0YXRlRW5hYmxlZF09XCJ0cnVlXCIgKm5nSWY9XCIhaXNMb2FkZXJcIiBbc2VsZWN0ZWRSb3dLZXlzXT1cIltdXCIgW3Nob3dCb3JkZXJzXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtzaG93Q29sdW1uTGluZXNdPVwidHJ1ZVwiIFtzaG93Um93TGluZXNdPVwidHJ1ZVwiIGlkPVwiZ3JpZENvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxkeG8tcGFnaW5nIFtwYWdlU2l6ZV09XCIxMFwiPjwvZHhvLXBhZ2luZz5cbiAgICAgICAgICAgICAgICA8ZHhvLWV4cG9ydCBbZW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tZXhwb3J0PlxuICAgICAgICAgICAgICAgIDxkeG8tc2VhcmNoLXBhbmVsIFtoaWdobGlnaHRDYXNlU2Vuc2l0aXZlXT1cInRydWVcIiBbdmlzaWJsZV09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgPC9keG8tc2VhcmNoLXBhbmVsPlxuXG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwidmlld05hbWVcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJkYXRhc2V0TmFtZVwiPjwvZHhpLWNvbHVtbj4tLT5cbiAgICAgICAgICAgICAgICA8IS0tIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInZpZXdMYWJlbFwiPjwvZHhpLWNvbHVtbj4gLS0+XG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwia3BpQ29uZmlnLmZvcm1hdGVcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwia3BpQ29uZmlnLmNvbXBvbmVudE5hbWVcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwidmlld1R5cGVcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiY3JlYXRlZEJ5XCI+PC9keGktY29sdW1uPlxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImNyZWF0aW9uRGF0ZVwiPjwvZHhpLWNvbHVtbj5cbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJhY3Rpb25cIiBjZWxsVGVtcGxhdGU9XCJjZWxsVGVtcGxhdGVcIiBbZml4ZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIGZpeGVkUG9zaXRpb249XCJyaWdodFwiPjwvZHhpLWNvbHVtbj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGRhdGEgb2YgJ2NlbGxUZW1wbGF0ZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fcHJpbWFyeV9tZH19XCIgKGNsaWNrKT1cImVkaXRWaWV3cyhkYXRhLmRhdGEpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBFZGl0XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3dhcm5pbmdfbWR9fVwiIChjbGljayk9XCJkdXBsaWNhdGVWaWV3cyhkYXRhLmRhdGEpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBEdXBsaWNhdGVcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+IC0tPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9kYW5nZXJfbWR9fVwiIChjbGljayk9XCJkZWxldGVEYXRhc2V0KGRhdGEuZGF0YSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIERlbGV0ZVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9wcmltYXJ5X21kfX1cIiAoY2xpY2spPVwiZXhwb3J0SnNvbkZpbGUoZGF0YS5kYXRhKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cIkV4cG9ydCBWaWV3XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXNpZ24tb3V0XCI+PC9pPlxuXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl93YXJuaW5nX21kfX1cIiAoY2xpY2spPVwiY29weUpzb25GaWxlKGRhdGEuZGF0YSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJDb3B5IGFzIEpzb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZmlsZXMtb1wiPjwvaT5cblxuXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG5cblxuICAgICAgICAgICAgPC9keC1kYXRhLWdyaWQ+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG48L2Rpdj5cblxuXG48ZHgtcG9wdXAgWyh2aXNpYmxlKV09XCJpc1BvcHVwVmlzaWJsZVwiIFtkcmFnRW5hYmxlZF09XCJmYWxzZVwiIFtjbG9zZU9uT3V0c2lkZUNsaWNrXT1cImZhbHNlXCIgW3Nob3dUaXRsZV09XCJ0cnVlXCJcbiAgICB0aXRsZT1cIk1vZGVsIEVkaXRvclwiIFt3aWR0aF09XCIxMDAwXCIgW2hlaWdodF09XCI2MjBcIj5cblxuICAgIDxkaXY+XG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cImhpZGVQb3B1cCgpXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiPjwvYnV0dG9uPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibS0yIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgI2ZpbGVJbnB1dCBhY2NlcHQ9XCIuanNvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJibG9jayB3LTMvNSBwLTIgdGV4dC1zbSB0ZXh0LWdyYXktNDAwIGJvcmRlciBib3JkZXItZ3JheS03MDAgcm91bmRlZC1sZyBiZy1ncmF5LTgwMCBmb2N1czpyaW5nLWJsdWUtNTAwIGZvY3VzOmJvcmRlci1ibHVlLTUwMFwiXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbmpzb25GaWxlU2VsZWN0ZWQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwic3VibWl0VmlldygpXCIgY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3N1Y2Nlc3NfbWR9fSBtci00XCI+U3VibWl0PC9idXR0b24+XG5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDx0ZXh0YXJlYSBbKG5nTW9kZWwpXT1cImpzb25Db250ZW50XCJcbiAgICAgICAgICAgIGNsYXNzPVwidy1mdWxsIGgtMTAwIHAtMiAgYm9yZGVyIGJvcmRlci1ncmF5LTcwMCByb3VuZGVkLWxnIGJnLWdyYXktODAwIHRleHQtZ3JheS00MDBcIj48L3RleHRhcmVhPlxuICAgIDwvZGl2PlxuPC9keC1wb3B1cD4iXX0=
|
|
199
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tdmlld3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLXZpZXctY29tcG9uZW50cy9hcHBsaWNhdGlvbi12aWV3cy9hcHBsaWNhdGlvbi12aWV3cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvYXBwbGljYXRpb24tdmlldy1jb21wb25lbnRzL2FwcGxpY2F0aW9uLXZpZXdzL2FwcGxpY2F0aW9uLXZpZXdzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXNCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd6RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQVcvQyxNQUFNLE9BQU8seUJBQXlCO0lBd0JwQyxZQUNVLE9BQWtDLEVBQ25DLGFBQTRCLEVBQzNCLE1BQXFCLEVBQ3JCLEtBQVksRUFDWixjQUE4QixFQUM5QixNQUFjO1FBTGQsWUFBTyxHQUFQLE9BQU8sQ0FBMkI7UUFDbkMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDM0IsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNyQixVQUFLLEdBQUwsS0FBSyxDQUFPO1FBQ1osbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLFdBQU0sR0FBTixNQUFNLENBQVE7UUEzQnhCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDN0IsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFDaEMsNkJBQXdCLEdBQVksS0FBSyxDQUFDO1FBQzFDLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBS2pDLHlCQUFvQixHQUFRLEVBQUUsQ0FBQztRQUMvQixvQkFBZSxHQUFRLEVBQUUsQ0FBQztRQUcxQix5QkFBb0IsR0FBRztZQUNyQixFQUFFLFVBQVUsRUFBRSw2QkFBNkIsRUFBRSxNQUFNLEVBQUUsd0JBQXdCLEVBQUU7WUFDL0UsRUFBRSxVQUFVLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxFQUFFLDRCQUE0QixFQUFFO1lBQ3pGLEVBQUUsVUFBVSxFQUFFLCtCQUErQixFQUFFLE1BQU0sRUFBRSxvQkFBb0IsRUFBRTtTQUM5RSxDQUFBO1FBbUlELG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBeEh2QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksYUFBYSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1NBQ3BCO1FBR0QsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELHNCQUFzQjtRQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGdEQUFnRCxDQUFDLENBQUMsQ0FBQTtJQUMxRSxDQUFDO0lBR0QsbUJBQW1CO1FBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxTQUFTLENBQUM7WUFDekMsSUFBSSxFQUFFLENBQUMsSUFBUyxFQUFFLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyw0QkFBNEIsR0FBRyxJQUFJLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO2dCQUN0QixJQUFJLENBQUMsd0JBQXdCLEdBQUcsS0FBSyxDQUFDO2dCQUN0QyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztZQUMvQixDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDJEQUEyRCxFQUFFLGVBQWUsQ0FBQyxDQUFBO1lBRWpHLENBQUM7U0FDRixDQUFDLENBQUE7SUFDSixDQUFDO0lBY0QsU0FBUyxDQUFDLElBQUk7UUFDWixJQUFJLGVBQWUsR0FBcUI7WUFDdEMsV0FBVyxFQUFFO2dCQUNYLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtnQkFDbkIsV0FBVyxFQUFFLE1BQU07YUFDcEI7U0FDRixDQUFBO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxnREFBZ0QsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxDQUFBO0lBRTNGLENBQUM7SUFFRCxjQUFjLENBQUMsSUFBSTtRQUNqQixJQUFJLGVBQWUsR0FBcUI7WUFDdEMsV0FBVyxFQUFFO2dCQUNYLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtnQkFDbkIsV0FBVyxFQUFFLE9BQU87YUFDckI7U0FDRixDQUFBO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxnREFBZ0QsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxDQUFBO0lBQzNGLENBQUM7SUFFRCxhQUFhLENBQUMsSUFBSTtRQUNoQixJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsc0JBQXNCLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUMvRCxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUU7WUFDM0IsSUFBSSxZQUFZLEVBQUU7Z0JBQ2hCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO2dCQUNyQixJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtvQkFDbkUsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7b0JBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO29CQUN0QixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztvQkFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsOEJBQThCLENBQUMsQ0FBQTtnQkFDckQsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFO29CQUNQLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDJEQUEyRCxFQUFFLGFBQWEsQ0FBQyxDQUFDO2dCQUNoRyxDQUFDLENBQUMsQ0FBQTthQUNIO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBR0QsYUFBYSxDQUFDLElBQVk7UUFDeEIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLGtDQUFrQyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3BFLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksYUFBYSxFQUFFO1lBQ2pCLElBQUksVUFBVSxHQUFxQjtnQkFDakMsV0FBVyxFQUFFO29CQUNYLFFBQVEsRUFBRSxhQUFhO29CQUN2QixhQUFhLEVBQUUsTUFBTTtpQkFDdEI7YUFDRixDQUFDO1lBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyx5Q0FBeUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1NBQy9FO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkUsSUFBSSxhQUFhLEVBQUU7WUFDakIsSUFBSSxVQUFVLEdBQXFCO2dCQUNqQyxXQUFXLEVBQUU7b0JBQ1gsUUFBUSxFQUFFLGFBQWE7aUJBQ3hCO2FBQ0YsQ0FBQztZQUNGLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsdUNBQXVDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztTQUM3RTthQUFNO1lBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDLENBQUM7U0FDakU7SUFDSCxDQUFDO0lBU0QsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFFN0IsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUV4QixDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBWTtRQUM3QixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBMEIsQ0FBQztRQUMvQyxJQUFJLEtBQUssQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3pDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUVoQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBNEIsRUFBRSxFQUFFO2dCQUMvQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUU7b0JBQ1osTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQWdCLENBQUMsQ0FBQztvQkFFNUQsYUFBYSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7b0JBQzFCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUUzRDtZQUNILENBQUMsQ0FBQztZQUNGLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBR0QsVUFBVTtRQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDdkUsSUFBSSxFQUFFLENBQUMsSUFBUyxFQUFFLEVBQUU7Z0JBRWxCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLDJCQUEyQixDQUFDLENBQUE7Z0JBQ2hELElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUd4QixDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDJEQUEyRCxFQUFFLGVBQWUsQ0FBQyxDQUFBO1lBQ2pHLENBQUM7U0FDRixDQUFDLENBQUE7SUFDSixDQUFDO0lBR0QsY0FBYyxDQUFDLElBQVM7UUFDdEIsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDhCQUE4QixFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBQ2xFLE9BQU87U0FDUjtRQUVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM5QyxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQztRQUMvRCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQ2xCLE1BQU0sQ0FBQyxRQUFRLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQztRQUM3RCxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDZixNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBR0QsWUFBWSxDQUFDLElBQVM7UUFDcEIsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDRCQUE0QixFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQzlELE9BQU87U0FDUjtRQUNELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUU5QyxTQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQy9DLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLDJCQUEyQixFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQzlELENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHNCQUFzQixFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQ3hELE9BQU8sQ0FBQyxLQUFLLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDOUMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztzSEF6T1UseUJBQXlCOzBHQUF6Qix5QkFBeUIsaUxDZHRDLGlnSkEyRlc7MkZEN0VFLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSx1QkFBdUI7OE9BMEJILGVBQWU7c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xuaW1wb3J0IHsgY29uZmlybSB9IGZyb20gJ2RldmV4dHJlbWUvdWkvZGlhbG9nJztcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRXh0cmFzLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQXBwbGljYXRpb25Db250ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL2FwcGxpY2F0aW9uLWNvbnRlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWFwcGxpY2F0aW9uLXZpZXdzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FwcGxpY2F0aW9uLXZpZXdzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXBwbGljYXRpb24tdmlld3MuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBBcHBsaWNhdGlvblZpZXdzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgY29tcG9uZW50Vmlld1RhYmxlRGF0YVNvdXJjZTogYW55O1xuICBkYXRhU2V0dGFibGVEYXRhU291cmNlOiBhbnk7XG4gIGlzTG9hZGVyOiBib29sZWFuID0gZmFsc2U7XG4gIGlzRWRpdENsaWNrOiBib29sZWFuID0gZmFsc2U7XG4gIGlzRmlsdGVySW5wdXRzOiBib29sZWFuID0gZmFsc2U7XG4gIGlzTmV3Q29tcG9uZW50Vmlld0NyZWF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBpc0R1cGxpZGF0ZVZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBpc0NyZWF0ZVZpZXdGcm9tS3BpOiBib29sZWFuO1xuICBpc0NyZWF0ZVZpZXdGcm9tS3BpTG9hZGVyOiBib29sZWFuO1xuICBpc0NyZWF0ZU5ld1ZpZXc6IGJvb2xlYW47XG4gIHRyZWVMaXN0Rm9yU2VhcmNoQm94OiBhbnkgPSBbXTtcbiAgc2VsZWN0ZWREYXRhU2V0OiBhbnkgPSB7fTtcbiAgdmlld0lkOiBhbnk7XG4gIHBhZ2VJZDogYW55O1xuICBjb21wb25lbnROYW1lc090aGVycyA9IFtcbiAgICB7IFwiY29tcE5hbWVcIjogXCJHYW1tYVRvZGF5UHJldmlvdXNDb21wb25lbnRcIiwgXCJpdGVtXCI6IFwiVG9kYXkgdnMgUHJldmlvdXMgRGF5IFwiIH0sXG4gICAgeyBcImNvbXBOYW1lXCI6IFwiR2FtbWFUYWJsZVdpdGhQZXJjZW50YWdlQ29tcG9uZW50XCIsIFwiaXRlbVwiOiBcIlRhYmxlIFZpZXcgd2l0aCBwZXJjZW50YWdlXCIgfSxcbiAgICB7IFwiY29tcE5hbWVcIjogXCJHYW1tU2luZ2xlTnVtYmVyQ2FyZENvbXBvbmVudFwiLCBcIml0ZW1cIjogXCJTaW5nbGUgTnVtYmVyIENhcmRcIiB9XG4gIF1cbiAgY29tcG9uZW50TmFtZTogYW55O1xuICBAVmlld0NoaWxkKCdzY3JvbGxUb0VsZW1lbnQnKSBzY3JvbGxUb0VsZW1lbnQhOiBFbGVtZW50UmVmO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2VydmljZTogQXBwbGljYXRpb25Db250ZW50U2VydmljZSxcbiAgICBwdWJsaWMgY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZSxcbiAgICBwcml2YXRlIHRvYXN0cjogVG9hc3RyU2VydmljZSxcbiAgICBwcml2YXRlIHRpdGxlOiBUaXRsZSxcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXG4gICkge1xuICAgIHRoaXMudGl0bGUuc2V0VGl0bGUoJ0FwcGxpY2F0aW9uIFZpZXdzJyk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBsZXQgY29udGVudFZpZXdJZCA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbJ3BhZ2VJZCddO1xuICAgIGlmIChjb250ZW50Vmlld0lkKSB7XG4gICAgICB0aGlzLnBhZ2VJZCA9IHRydWU7XG4gICAgfVxuXG5cbiAgICB0aGlzLmdldENvbXBvbmVudFZpZXdTZXQoKTtcbiAgfVxuXG4gIGNyZWF0ZU5ld0NvbXBvbmVudFZpZXcoKSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvYXBwcy9jb250cm9sUGFuZWwvYXBwbGljYXRpb25WaWV3cy92aWV3RWRpdG9yJ10pXG4gIH1cblxuXG4gIGdldENvbXBvbmVudFZpZXdTZXQoKSB7XG4gICAgdGhpcy5pc0xvYWRlciA9IHRydWU7XG4gICAgdGhpcy5zZXJ2aWNlLmdldEFwcFZpZXdDb25maWdzKCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5jb21wb25lbnRWaWV3VGFibGVEYXRhU291cmNlID0gZGF0YTtcbiAgICAgICAgdGhpcy5pc0xvYWRlciA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzTmV3Q29tcG9uZW50Vmlld0NyZWF0ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzRHVwbGlkYXRlVmlldyA9IGZhbHNlO1xuICAgICAgfSwgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcignVW5leHBlY3RlZCBTZXJ2ZXIgRXhjZXB0aW9uLiBQbGVhc2UgY29udGFjdCBTeXN0ZW0gQWRtaW4uJywgJ1ZpZXcgQ3JlYXRpb24nKVxuXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4gIGVkaXRWaWV3cyhkYXRhKSB7XG4gICAgbGV0IG5hdmlnYXRpb25FeHRyYTogTmF2aWdhdGlvbkV4dHJhcyA9IHtcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgIHZpZXdJZDogZGF0YS52aWV3SWQsXG4gICAgICAgIGNvbnRlbnRUeXBlOiBcImVkaXRcIlxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9hcHBzL2NvbnRyb2xQYW5lbC9hcHBsaWNhdGlvblZpZXdzL3ZpZXdFZGl0b3InXSwgbmF2aWdhdGlvbkV4dHJhKVxuXG4gIH1cblxuICBkdXBsaWNhdGVWaWV3cyhkYXRhKSB7XG4gICAgbGV0IG5hdmlnYXRpb25FeHRyYTogTmF2aWdhdGlvbkV4dHJhcyA9IHtcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgIHZpZXdJZDogZGF0YS52aWV3SWQsXG4gICAgICAgIGNvbnRlbnRUeXBlOiBcImNsb25lXCJcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvYXBwcy9jb250cm9sUGFuZWwvYXBwbGljYXRpb25WaWV3cy92aWV3RWRpdG9yJ10sIG5hdmlnYXRpb25FeHRyYSlcbiAgfVxuXG4gIGRlbGV0ZURhdGFzZXQoZGF0YSkge1xuICAgIGxldCByZXN1bHQgPSBjb25maXJtKFwiPGk+QXJlIFlvdSBTdXJlPzwvaT5cIiwgXCJEZWxldGUgRGF0YXNldFwiKTtcbiAgICByZXN1bHQudGhlbigoZGlhbG9nUmVzdWx0KSA9PiB7XG4gICAgICBpZiAoZGlhbG9nUmVzdWx0KSB7XG4gICAgICAgIHRoaXMuaXNMb2FkZXIgPSB0cnVlO1xuICAgICAgICB0aGlzLnNlcnZpY2UuZGVsZXRlQXBwVmlld0NvbmZpZyhkYXRhLnZpZXdJZCkuc3Vic2NyaWJlKCh2YWw6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuZ2V0Q29tcG9uZW50Vmlld1NldCgpO1xuICAgICAgICAgIHRoaXMuaXNMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmlzRWRpdENsaWNrID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcygnRGF0YXNldCBEZWxldGVkIFN1Y2Nlc3NmdWxseScpXG4gICAgICAgIH0sIGVyciA9PiB7XG4gICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcignVW5leHBlY3RlZCBTZXJ2ZXIgRXhjZXB0aW9uLiBQbGVhc2UgY29udGFjdCBTeXN0ZW0gQWRtaW4uJywgJ1J1bGUgTW9kdWxlJyk7XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuXG4gIGdldENhcGl0YWxpemUoaXRlbTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuY29tbW9uU2VydmljZS5jb252ZXJ0VG9TcGFjZVNlcGFyYXRlZENhcGl0YWxpemVkKGl0ZW0pXG4gIH1cblxuICBiYWNrVG9QYWdlKCkge1xuICAgIGxldCBjb250ZW50Vmlld0lkID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1sncGFnZUlkJ107XG4gICAgaWYgKGNvbnRlbnRWaWV3SWQpIHtcbiAgICAgIGxldCBuYXZpZ2F0aW9uOiBOYXZpZ2F0aW9uRXh0cmFzID0ge1xuICAgICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICAgICdwYWdlSWQnOiBjb250ZW50Vmlld0lkLFxuICAgICAgICAgIFwiY29udGVudFR5cGVcIjogJ2VkaXQnXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9hcHBzL2NvbnRyb2xQYW5lbC9wYWdlQ29uZmlnQ29udHJvbGxlciddLCBuYXZpZ2F0aW9uKTtcbiAgICB9XG4gIH1cblxuICBnb3RvRGF0YXNldCgpIHtcbiAgICBsZXQgY29udGVudFZpZXdJZCA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbJ3BhZ2VJZCddO1xuICAgIGlmIChjb250ZW50Vmlld0lkKSB7XG4gICAgICBsZXQgbmF2aWdhdGlvbjogTmF2aWdhdGlvbkV4dHJhcyA9IHtcbiAgICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgICAncGFnZUlkJzogY29udGVudFZpZXdJZCxcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2FwcHMvY29udHJvbFBhbmVsL2FwcGxpY2F0aW9uRGF0YXNldCddLCBuYXZpZ2F0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvYXBwcy9jb250cm9sUGFuZWwvYXBwbGljYXRpb25EYXRhc2V0J10pO1xuICAgIH1cbiAgfVxuXG5cblxuXG4gIGlzUG9wdXBWaXNpYmxlID0gZmFsc2U7XG4gIGpzb25Db250ZW50OiBzdHJpbmcgPSAnJztcblxuXG4gIGltcG9ydENvbmZpZ1BvcHVwKCk6IHZvaWQge1xuICAgIHRoaXMuaXNQb3B1cFZpc2libGUgPSB0cnVlO1xuXG4gIH1cblxuICBoaWRlUG9wdXAoKTogdm9pZCB7XG4gICAgdGhpcy5pc1BvcHVwVmlzaWJsZSA9IGZhbHNlO1xuICAgIHRoaXMuanNvbkNvbnRlbnQgPSAnJztcblxuICB9XG5cbiAgb25qc29uRmlsZVNlbGVjdGVkKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgaWYgKGlucHV0LmZpbGVzICYmIGlucHV0LmZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbGUgPSBpbnB1dC5maWxlc1swXTtcbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG5cbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoZTogUHJvZ3Jlc3NFdmVudDxGaWxlUmVhZGVyPikgPT4ge1xuICAgICAgICBpZiAoZS50YXJnZXQpIHtcbiAgICAgICAgICBjb25zdCBwYXJzZWRDb250ZW50ID0gSlNPTi5wYXJzZShlLnRhcmdldC5yZXN1bHQgYXMgc3RyaW5nKTtcblxuICAgICAgICAgIHBhcnNlZENvbnRlbnQudmlld0lkID0gJyc7XG4gICAgICAgICAgdGhpcy5qc29uQ29udGVudCA9IEpTT04uc3RyaW5naWZ5KHBhcnNlZENvbnRlbnQsIG51bGwsIDIpO1xuXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICByZWFkZXIucmVhZEFzVGV4dChmaWxlKTtcbiAgICB9XG4gIH1cblxuXG4gIHN1Ym1pdFZpZXcoKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2codGhpcy5qc29uQ29udGVudClcbiAgICB0aGlzLnNlcnZpY2UuY3JlYXRlQXBwVmlld0NvbmZpZyhKU09OLnBhcnNlKHRoaXMuanNvbkNvbnRlbnQpKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xuXG4gICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MoJ1ZpZXcgQ3JlYXRlZCBTdWNjZXNzZnVsbHknKVxuICAgICAgICB0aGlzLmdldENvbXBvbmVudFZpZXdTZXQoKTtcbiAgICAgICAgdGhpcy5pc0xvYWRlciA9IGZhbHNlO1xuICAgICAgICAvLyB0aGlzLmFkZE5ld1ZpZXcoKTtcblxuICAgICAgfSwgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcignVW5leHBlY3RlZCBTZXJ2ZXIgRXhjZXB0aW9uLiBQbGVhc2UgY29udGFjdCBTeXN0ZW0gQWRtaW4uJywgJ1ZpZXcgQ3JlYXRpb24nKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuXG4gIGV4cG9ydEpzb25GaWxlKGl0ZW06IGFueSk6IHZvaWQge1xuICAgIGlmICghaXRlbSkge1xuICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ05vIGRhdGEgYXZhaWxhYmxlIHRvIGV4cG9ydC4nLCAnRXhwb3J0IEVycm9yJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QganNvblN0ciA9IEpTT04uc3RyaW5naWZ5KGl0ZW0sIG51bGwsIDIpO1xuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbanNvblN0cl0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nIH0pO1xuICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgIGNvbnN0IGFuY2hvciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICBhbmNob3IuaHJlZiA9IHVybDtcbiAgICBhbmNob3IuZG93bmxvYWQgPSBgJHtpdGVtLnZpZXdOYW1lLnJlcGxhY2UoLyAvZywgJ18nKX0uanNvbmA7XG4gICAgYW5jaG9yLmNsaWNrKCk7XG4gICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcbiAgfVxuXG5cbiAgY29weUpzb25GaWxlKGl0ZW06IGFueSk6IHZvaWQge1xuICAgIGlmICghaXRlbSkge1xuICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ05vIGRhdGEgYXZhaWxhYmxlIHRvIGNvcHkuJywgJ0NvcHkgRXJyb3InKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QganNvblN0ciA9IEpTT04uc3RyaW5naWZ5KGl0ZW0sIG51bGwsIDIpO1xuXG4gICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoanNvblN0cikudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKCdEYXRhIGNvcGllZCB0byBjbGlwYm9hcmQuJywgJ1N1Y2Nlc3MnKTtcbiAgICB9KS5jYXRjaChlcnIgPT4ge1xuICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ0ZhaWxlZCB0byBjb3B5IGRhdGEuJywgJ0NvcHkgRXJyb3InKTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBjb3B5IHRleHQ6ICcsIGVycik7XG4gICAgfSk7XG4gIH1cblxuXG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGZsZXgtYXV0byBtaW4tdy0wXCI+XG5cbiAgICA8bGliLWNvbW1vbi1oZWFkZXIgW3BhZ2VUaXRsZV09XCInQXBwbGljYXRpb24gVmlld3MnXCI+PC9saWItY29tbW9uLWhlYWRlcj5cblxuICAgIDxkaXYgY2xhc3M9XCJwLTQgdy1mdWxsXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLTMgcC00IGJnLXdoaXRlIGJvcmRlciBib3JkZXItZ3JheS0yMDAgcm91bmRlZC1sZyBzaGFkb3ctbWQgZGFyazpiZy1ncmF5LTgwMCBkYXJrOmJvcmRlci1ncmF5LTcwMFwiPlxuICAgICAgICAgICAgPGg2IGNsYXNzPVwibWItMiB0ZXh0LWxnIHRyYWNraW5nLXRpZ2h0IHRleHQtZ3JheS05MDBcbiAgICAgICAgICAgICAgICBkYXJrOnRleHQtd2hpdGUgYm9yZGVyLWIgcGItMyBmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGFibGUgbXItMlwiPjwvaT4gTWFuYWdlIFZpZXdzXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1sLWF1dG9cIj5cblxuXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuTGlnaHRXaGl0ZX19XCIgKGNsaWNrKT1cImJhY2tUb1BhZ2UoKVwiICpuZ0lmPVwicGFnZUlkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBCYWNrIFRvIFBhZ2VcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImltcG9ydENvbmZpZ1BvcHVwKClcIiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fd2FybmluZ19tZH19XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBJbXBvcnQgQ29uZmlnXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9wcmltYXJ5X21kfX1cIiAoY2xpY2spPVwiY3JlYXRlTmV3Q29tcG9uZW50VmlldygpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBBZGQgVmlld1xuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9oNj5cbiAgICAgICAgICAgIDxhcHAtbG9hZGVyICpuZ0lmPVwiaXNMb2FkZXJcIj48L2FwcC1sb2FkZXI+XG4gICAgICAgICAgICA8ZHgtZGF0YS1ncmlkIFtjb2x1bW5BdXRvV2lkdGhdPVwidHJ1ZVwiIFtkYXRhU291cmNlXT1cImNvbXBvbmVudFZpZXdUYWJsZURhdGFTb3VyY2VcIlxuICAgICAgICAgICAgICAgIFtob3ZlclN0YXRlRW5hYmxlZF09XCJ0cnVlXCIgKm5nSWY9XCIhaXNMb2FkZXJcIiBbc2VsZWN0ZWRSb3dLZXlzXT1cIltdXCIgW3Nob3dCb3JkZXJzXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtzaG93Q29sdW1uTGluZXNdPVwidHJ1ZVwiIFtzaG93Um93TGluZXNdPVwidHJ1ZVwiIGlkPVwiZ3JpZENvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxkeG8tcGFnaW5nIFtwYWdlU2l6ZV09XCIxMFwiPjwvZHhvLXBhZ2luZz5cbiAgICAgICAgICAgICAgICA8ZHhvLWV4cG9ydCBbZW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tZXhwb3J0PlxuICAgICAgICAgICAgICAgIDxkeG8tc2VhcmNoLXBhbmVsIFtoaWdobGlnaHRDYXNlU2Vuc2l0aXZlXT1cInRydWVcIiBbdmlzaWJsZV09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgPC9keG8tc2VhcmNoLXBhbmVsPlxuXG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwidmlld05hbWVcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJkYXRhc2V0TmFtZVwiPjwvZHhpLWNvbHVtbj4tLT5cbiAgICAgICAgICAgICAgICA8IS0tIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInZpZXdMYWJlbFwiPjwvZHhpLWNvbHVtbj4gLS0+XG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwia3BpQ29uZmlnLmZvcm1hdGVcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwia3BpQ29uZmlnLmNvbXBvbmVudE5hbWVcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwidmlld1R5cGVcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiY3JlYXRlZEJ5XCI+PC9keGktY29sdW1uPlxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImNyZWF0aW9uRGF0ZVwiIHNvcnRPcmRlcj1cImRlc2NcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiYWN0aW9uXCIgY2VsbFRlbXBsYXRlPVwiY2VsbFRlbXBsYXRlXCIgW2ZpeGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBmaXhlZFBvc2l0aW9uPVwicmlnaHRcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBkYXRhIG9mICdjZWxsVGVtcGxhdGUnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3ByaW1hcnlfbWR9fVwiIChjbGljayk9XCJlZGl0Vmlld3MoZGF0YS5kYXRhKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgRWRpdFxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl93YXJuaW5nX21kfX1cIiAoY2xpY2spPVwiZHVwbGljYXRlVmlld3MoZGF0YS5kYXRhKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgRHVwbGljYXRlXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fZGFuZ2VyX21kfX1cIiAoY2xpY2spPVwiZGVsZXRlRGF0YXNldChkYXRhLmRhdGEpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBEZWxldGVcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fcHJpbWFyeV9tZH19XCIgKGNsaWNrKT1cImV4cG9ydEpzb25GaWxlKGRhdGEuZGF0YSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJFeHBvcnQgVmlld1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1zaWduLW91dFwiPjwvaT5cblxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fd2FybmluZ19tZH19XCIgKGNsaWNrKT1cImNvcHlKc29uRmlsZShkYXRhLmRhdGEpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwiQ29weSBhcyBKc29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWZpbGVzLW9cIj48L2k+XG5cblxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuXG5cbiAgICAgICAgICAgIDwvZHgtZGF0YS1ncmlkPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuPC9kaXY+XG5cblxuPGR4LXBvcHVwIFsodmlzaWJsZSldPVwiaXNQb3B1cFZpc2libGVcIiBbZHJhZ0VuYWJsZWRdPVwiZmFsc2VcIiBbY2xvc2VPbk91dHNpZGVDbGlja109XCJmYWxzZVwiIFtzaG93VGl0bGVdPVwidHJ1ZVwiXG4gICAgdGl0bGU9XCJNb2RlbCBFZGl0b3JcIiBbd2lkdGhdPVwiMTAwMFwiIFtoZWlnaHRdPVwiNjIwXCI+XG5cbiAgICA8ZGl2PlxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJoaWRlUG9wdXAoKVwiIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIj48L2J1dHRvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tMiBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiICNmaWxlSW5wdXQgYWNjZXB0PVwiLmpzb25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYmxvY2sgdy0zLzUgcC0yIHRleHQtc20gdGV4dC1ncmF5LTQwMCBib3JkZXIgYm9yZGVyLWdyYXktNzAwIHJvdW5kZWQtbGcgYmctZ3JheS04MDAgZm9jdXM6cmluZy1ibHVlLTUwMCBmb2N1czpib3JkZXItYmx1ZS01MDBcIlxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25qc29uRmlsZVNlbGVjdGVkKCRldmVudClcIj5cbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInN1Ym1pdFZpZXcoKVwiIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9zdWNjZXNzX21kfX0gbXItNFwiPlN1Ym1pdDwvYnV0dG9uPlxuXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8dGV4dGFyZWEgWyhuZ01vZGVsKV09XCJqc29uQ29udGVudFwiXG4gICAgICAgICAgICBjbGFzcz1cInctZnVsbCBoLTEwMCBwLTIgIGJvcmRlciBib3JkZXItZ3JheS03MDAgcm91bmRlZC1sZyBiZy1ncmF5LTgwMCB0ZXh0LWdyYXktNDAwXCI+PC90ZXh0YXJlYT5cbiAgICA8L2Rpdj5cbjwvZHgtcG9wdXA+Il19
|
|
@@ -21,13 +21,16 @@ export class CommonHeaderComponent {
|
|
|
21
21
|
gotoDataSets() {
|
|
22
22
|
this.router.navigate(['apps/controlPanel/applicationDataset']);
|
|
23
23
|
}
|
|
24
|
+
gotoMenuConfig() {
|
|
25
|
+
this.router.navigate(['apps/controlPanel/menuController']);
|
|
26
|
+
}
|
|
24
27
|
}
|
|
25
28
|
CommonHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CommonHeaderComponent, deps: [{ token: i1.CommonService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component });
|
|
26
|
-
CommonHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CommonHeaderComponent, selector: "lib-common-header", inputs: { pageTitle: "pageTitle" }, ngImport: i0, template: "<div class=\"flex justify-between border-b bg-card dark:bg-transparent\">\n <div class=\"flex-1 min-w-0\" *ngIf=\"pageTitle !== ''\">\n <div class=\"flex items-center py-3 pl-2 pr-6 float-start\">\n <div class=\"flex items-center overflow-hidden\">\n <mat-icon class=\"icon-size-2\" [svgIcon]=\"'heroicons_solid:template'\"></mat-icon>\n </div>\n <h2 class=\"text-3xl md:text-3xl py-2 font-extrabold items-center ml-2 tracking-tight leading-5 truncate\">\n {{pageTitle}}\n </h2>\n </div>\n </div>\n <div class=\"flex justify-between items-center p-0 m-0\" [ngClass]=\"{'border-l-2': pageTitle !== ''}\">\n <div class=\"mx-2\">\n <button class=\"{{commonService.btn_success_md}}\" (click)=\"gotoDataSets()\">\n All Dataset\n </button>\n </div>\n <div class=\"mx-2\">\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"gotoViews()\">\n All Views\n </button>\n </div>\n <div class=\"mx-2\">\n <button class=\"{{commonService.btn_warning_md}}\" (click)=\"gotoPages()\">\n All Pages\n </button>\n </div>\n <div class=\"mx-2\">\n <button class=\"{{commonService.btn_light_md}}\" (click)=\"gotoFilters()\">\n All Filters\n </button>\n </div>\n\n </div>\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
|
|
29
|
+
CommonHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CommonHeaderComponent, selector: "lib-common-header", inputs: { pageTitle: "pageTitle" }, ngImport: i0, template: "<div class=\"flex justify-between border-b bg-card dark:bg-transparent\">\n <div class=\"flex-1 min-w-0\" *ngIf=\"pageTitle !== ''\">\n <div class=\"flex items-center py-3 pl-2 pr-6 float-start\">\n <div class=\"flex items-center overflow-hidden\">\n <mat-icon class=\"icon-size-2\" [svgIcon]=\"'heroicons_solid:template'\"></mat-icon>\n </div>\n <h2 class=\"text-3xl md:text-3xl py-2 font-extrabold items-center ml-2 tracking-tight leading-5 truncate\">\n {{pageTitle}}\n </h2>\n </div>\n </div>\n <div class=\"flex justify-between items-center p-0 m-0\" [ngClass]=\"{'border-l-2': pageTitle !== ''}\">\n <div class=\"mx-2\">\n <button class=\"{{commonService.btn_success_md}}\" (click)=\"gotoDataSets()\">\n All Dataset\n </button>\n </div>\n <div class=\"mx-2\">\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"gotoViews()\">\n All Views\n </button>\n </div>\n <div class=\"mx-2\">\n <button class=\"{{commonService.btn_warning_md}}\" (click)=\"gotoPages()\">\n All Pages\n </button>\n </div>\n <div class=\"mx-2\">\n <button class=\"{{commonService.btn_light_md}}\" (click)=\"gotoFilters()\">\n All Filters\n </button>\n </div>\n <div class=\"mx-2\">\n <button class=\"{{commonService.btn_purple_md}}\" (click)=\"gotoMenuConfig()\">\n All Menu\n </button>\n </div>\n\n </div>\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
|
|
27
30
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CommonHeaderComponent, decorators: [{
|
|
28
31
|
type: Component,
|
|
29
|
-
args: [{ selector: 'lib-common-header', template: "<div class=\"flex justify-between border-b bg-card dark:bg-transparent\">\n <div class=\"flex-1 min-w-0\" *ngIf=\"pageTitle !== ''\">\n <div class=\"flex items-center py-3 pl-2 pr-6 float-start\">\n <div class=\"flex items-center overflow-hidden\">\n <mat-icon class=\"icon-size-2\" [svgIcon]=\"'heroicons_solid:template'\"></mat-icon>\n </div>\n <h2 class=\"text-3xl md:text-3xl py-2 font-extrabold items-center ml-2 tracking-tight leading-5 truncate\">\n {{pageTitle}}\n </h2>\n </div>\n </div>\n <div class=\"flex justify-between items-center p-0 m-0\" [ngClass]=\"{'border-l-2': pageTitle !== ''}\">\n <div class=\"mx-2\">\n <button class=\"{{commonService.btn_success_md}}\" (click)=\"gotoDataSets()\">\n All Dataset\n </button>\n </div>\n <div class=\"mx-2\">\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"gotoViews()\">\n All Views\n </button>\n </div>\n <div class=\"mx-2\">\n <button class=\"{{commonService.btn_warning_md}}\" (click)=\"gotoPages()\">\n All Pages\n </button>\n </div>\n <div class=\"mx-2\">\n <button class=\"{{commonService.btn_light_md}}\" (click)=\"gotoFilters()\">\n All Filters\n </button>\n </div>\n\n </div>\n</div>" }]
|
|
32
|
+
args: [{ selector: 'lib-common-header', template: "<div class=\"flex justify-between border-b bg-card dark:bg-transparent\">\n <div class=\"flex-1 min-w-0\" *ngIf=\"pageTitle !== ''\">\n <div class=\"flex items-center py-3 pl-2 pr-6 float-start\">\n <div class=\"flex items-center overflow-hidden\">\n <mat-icon class=\"icon-size-2\" [svgIcon]=\"'heroicons_solid:template'\"></mat-icon>\n </div>\n <h2 class=\"text-3xl md:text-3xl py-2 font-extrabold items-center ml-2 tracking-tight leading-5 truncate\">\n {{pageTitle}}\n </h2>\n </div>\n </div>\n <div class=\"flex justify-between items-center p-0 m-0\" [ngClass]=\"{'border-l-2': pageTitle !== ''}\">\n <div class=\"mx-2\">\n <button class=\"{{commonService.btn_success_md}}\" (click)=\"gotoDataSets()\">\n All Dataset\n </button>\n </div>\n <div class=\"mx-2\">\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"gotoViews()\">\n All Views\n </button>\n </div>\n <div class=\"mx-2\">\n <button class=\"{{commonService.btn_warning_md}}\" (click)=\"gotoPages()\">\n All Pages\n </button>\n </div>\n <div class=\"mx-2\">\n <button class=\"{{commonService.btn_light_md}}\" (click)=\"gotoFilters()\">\n All Filters\n </button>\n </div>\n <div class=\"mx-2\">\n <button class=\"{{commonService.btn_purple_md}}\" (click)=\"gotoMenuConfig()\">\n All Menu\n </button>\n </div>\n\n </div>\n</div>" }]
|
|
30
33
|
}], ctorParameters: function () { return [{ type: i1.CommonService }, { type: i2.Router }]; }, propDecorators: { pageTitle: [{
|
|
31
34
|
type: Input
|
|
32
35
|
}] } });
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvY29tbW9uLWhlYWRlci9jb21tb24taGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9jb21tb24taGVhZGVyL2NvbW1vbi1oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQVNqRCxNQUFNLE9BQU8scUJBQXFCO0lBR2hDLFlBQ1MsYUFBNEIsRUFDM0IsTUFBYztRQURmLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzNCLFdBQU0sR0FBTixNQUFNLENBQVE7SUFFeEIsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLG9DQUFvQyxDQUFDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBQ0QsU0FBUztRQUNQLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsd0NBQXdDLENBQUMsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUNELFlBQVk7UUFDVixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLHNDQUFzQyxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBQ0QsY0FBYztRQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsa0NBQWtDLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7O2tIQXZCVSxxQkFBcUI7c0dBQXJCLHFCQUFxQiw2RkNUbEMsNG5EQXVDTTsyRkQ5Qk8scUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLG1CQUFtQjt5SEFNcEIsU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWNvbW1vbi1oZWFkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vY29tbW9uLWhlYWRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbW1vbi1oZWFkZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDb21tb25IZWFkZXJDb21wb25lbnQge1xuXG4gIEBJbnB1dCgpIHBhZ2VUaXRsZTogYW55O1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXG4gICkge1xuICB9XG5cbiAgZ290b1ZpZXdzKCkge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnYXBwcy9jb250cm9sUGFuZWwvYXBwbGljYXRpb25WaWV3cyddKTtcbiAgfVxuICBnb3RvUGFnZXMoKSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydhcHBzL2NvbnRyb2xQYW5lbC9hcHBsaWNhdGlvbkRhc2hib2FyZCddKTtcbiAgfVxuICBnb3RvRmlsdGVycygpIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2FwcHMvY29udHJvbFBhbmVsL2FwcGxpY2F0aW9uRmlsdGVyJ10pO1xuICB9XG4gIGdvdG9EYXRhU2V0cygpIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2FwcHMvY29udHJvbFBhbmVsL2FwcGxpY2F0aW9uRGF0YXNldCddKTtcbiAgfVxuICBnb3RvTWVudUNvbmZpZygpIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2FwcHMvY29udHJvbFBhbmVsL21lbnVDb250cm9sbGVyJ10pO1xuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBib3JkZXItYiBiZy1jYXJkIGRhcms6YmctdHJhbnNwYXJlbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleC0xIG1pbi13LTBcIiAqbmdJZj1cInBhZ2VUaXRsZSAhPT0gJydcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHB5LTMgcGwtMiBwci02ICBmbG9hdC1zdGFydFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIG92ZXJmbG93LWhpZGRlblwiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24tc2l6ZS0yXCIgW3N2Z0ljb25dPVwiJ2hlcm9pY29uc19zb2xpZDp0ZW1wbGF0ZSdcIj48L21hdC1pY29uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8aDIgY2xhc3M9XCJ0ZXh0LTN4bCBtZDp0ZXh0LTN4bCBweS0yIGZvbnQtZXh0cmFib2xkIGl0ZW1zLWNlbnRlciBtbC0yIHRyYWNraW5nLXRpZ2h0IGxlYWRpbmctNSB0cnVuY2F0ZVwiPlxuICAgICAgICAgICAgICAgIHt7cGFnZVRpdGxlfX1cbiAgICAgICAgICAgIDwvaDI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgcC0wIG0tMFwiIFtuZ0NsYXNzXT1cInsnYm9yZGVyLWwtMic6IHBhZ2VUaXRsZSAhPT0gJyd9XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJteC0yXCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9zdWNjZXNzX21kfX1cIiAoY2xpY2spPVwiZ290b0RhdGFTZXRzKClcIj5cbiAgICAgICAgICAgICAgICBBbGwgRGF0YXNldFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMlwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fcHJpbWFyeV9tZH19XCIgKGNsaWNrKT1cImdvdG9WaWV3cygpXCI+XG4gICAgICAgICAgICAgICAgQWxsIFZpZXdzXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJteC0yXCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl93YXJuaW5nX21kfX1cIiAoY2xpY2spPVwiZ290b1BhZ2VzKClcIj5cbiAgICAgICAgICAgICAgICBBbGwgUGFnZXNcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm14LTJcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX2xpZ2h0X21kfX1cIiAoY2xpY2spPVwiZ290b0ZpbHRlcnMoKVwiPlxuICAgICAgICAgICAgICAgIEFsbCBGaWx0ZXJzXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJteC0yXCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9wdXJwbGVfbWR9fVwiIChjbGljayk9XCJnb3RvTWVudUNvbmZpZygpXCI+XG4gICAgICAgICAgICAgICAgQWxsIE1lbnVcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgIDwvZGl2PlxuPC9kaXY+Il19
|