gamma-app-controller 1.1.23 → 1.1.25
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-controller.module.mjs +1 -4
- package/esm2020/lib/template-module/cdrConfigModule/cdr-browser.service.mjs +133 -0
- package/esm2020/lib/template-module/cdrConfigModule/cdr-config.component.mjs +237 -0
- package/esm2020/lib/template-module/cdrConfigModule/cdrConfig.module.mjs +144 -0
- package/esm2020/lib/template-module/exceptionConfigModule/exception-operation.component.mjs +2 -2
- package/esm2020/lib/template-module/exceptionConfigModule/exception-service.mjs +2 -4
- package/esm2020/public-api.mjs +3 -2
- package/fesm2015/gamma-app-controller.mjs +518 -262
- package/fesm2015/gamma-app-controller.mjs.map +1 -1
- package/fesm2020/gamma-app-controller.mjs +519 -265
- package/fesm2020/gamma-app-controller.mjs.map +1 -1
- package/lib/application-controller/application-controller.module.d.ts +45 -46
- package/lib/template-module/cdrConfigModule/cdr-browser.service.d.ts +36 -0
- package/lib/{application-controller/page-templates/cdr-config → template-module/cdrConfigModule}/cdr-config.component.d.ts +3 -3
- package/lib/template-module/cdrConfigModule/cdrConfig.module.d.ts +16 -0
- package/package.json +1 -1
- package/public-api.d.ts +2 -1
- package/esm2020/lib/application-controller/page-templates/cdr-config/cdr-config.component.mjs +0 -237
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { confirm } from 'devextreme/ui/dialog';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "./cdr-browser.service";
|
|
5
|
+
import * as i2 from "ngx-toastr";
|
|
6
|
+
import * as i3 from "../../application-controller/common";
|
|
7
|
+
import * as i4 from "../../application-controller/shared/loading/loading.component";
|
|
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/check-box";
|
|
12
|
+
import * as i9 from "devextreme-angular/ui/data-grid";
|
|
13
|
+
import * as i10 from "devextreme-angular/ui/select-box";
|
|
14
|
+
import * as i11 from "devextreme-angular/ui/tag-box";
|
|
15
|
+
import * as i12 from "devextreme-angular/ui/text-box";
|
|
16
|
+
import * as i13 from "@angular/forms";
|
|
17
|
+
import * as i14 from "@angular/material/icon";
|
|
18
|
+
export class CdrConfigComponent {
|
|
19
|
+
constructor(service, toastr, commonService) {
|
|
20
|
+
this.service = service;
|
|
21
|
+
this.toastr = toastr;
|
|
22
|
+
this.commonService = commonService;
|
|
23
|
+
this.availableTableDatasource = [];
|
|
24
|
+
this.submitObject = {};
|
|
25
|
+
this.selectedColumnDatasource = [];
|
|
26
|
+
this.kpi_enrichment_name = [];
|
|
27
|
+
this.CdrBrowserAllowedDatasource = [];
|
|
28
|
+
this.selectedColumnName = [];
|
|
29
|
+
this.isCdrConfigCreate = false;
|
|
30
|
+
this.isEditDatasource = false;
|
|
31
|
+
this.filter_type = ['date', 'string', 'timestamp', 'int', 'double', 'boolean'];
|
|
32
|
+
}
|
|
33
|
+
ngOnInit() {
|
|
34
|
+
this.getAvailableTabeName();
|
|
35
|
+
this.getFilterDataSet();
|
|
36
|
+
this.getCdrBrowserAllowedOperation();
|
|
37
|
+
this.searchDatasourceDetails();
|
|
38
|
+
}
|
|
39
|
+
getFilterDataSet() {
|
|
40
|
+
this.kpi_enrichment_name = [];
|
|
41
|
+
this.service.getKPIReferenceEndPoints().subscribe({
|
|
42
|
+
next: (data) => {
|
|
43
|
+
data.forEach(element => {
|
|
44
|
+
this.kpi_enrichment_name.push(element);
|
|
45
|
+
});
|
|
46
|
+
}, error: (err) => {
|
|
47
|
+
this.toastr.error("Unexpected Server Exception. Please contact System Admin.", "CDR Config");
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
searchDatasourceDetails() {
|
|
52
|
+
this.cdrTableDataSource = {};
|
|
53
|
+
this.allTablsDropDownData = [];
|
|
54
|
+
this.service.getSearchDatasourceDetails().subscribe({
|
|
55
|
+
next: (data) => {
|
|
56
|
+
this.cdrTableDataSource = data;
|
|
57
|
+
this.allTablsDropDownData = Object.keys(data).map(key => ({
|
|
58
|
+
name: key,
|
|
59
|
+
...data[key]
|
|
60
|
+
}));
|
|
61
|
+
}, error: (err) => {
|
|
62
|
+
this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'CDR Config');
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
getCdrBrowserAllowedOperation() {
|
|
67
|
+
this.service.getCdrBrowserOperations().subscribe(data => {
|
|
68
|
+
this.CdrBrowserAllowedDatasource = data;
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
getAvailableTabeName() {
|
|
72
|
+
this.availableTableDatasource = [];
|
|
73
|
+
this.service.getAvailableTables().subscribe({
|
|
74
|
+
next: (data) => {
|
|
75
|
+
this.availableTableDatasource = data;
|
|
76
|
+
}, error: (err) => {
|
|
77
|
+
this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'CDR Config');
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
getSelectedTableMetaData(e) {
|
|
82
|
+
if (e.value) {
|
|
83
|
+
this.isProceed = false;
|
|
84
|
+
this.isTableSelected = false;
|
|
85
|
+
let tableName = e.value;
|
|
86
|
+
this.listOfColumns = [];
|
|
87
|
+
this.service.getTableMetadata(tableName).subscribe({
|
|
88
|
+
next: (data) => {
|
|
89
|
+
this.isTableSelected = true;
|
|
90
|
+
this.listOfColumns = data;
|
|
91
|
+
}, error: (err) => {
|
|
92
|
+
this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'CDR Config');
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
getSelectedColumnSource(e) {
|
|
98
|
+
this.selectedColumnDatasource = e.value;
|
|
99
|
+
}
|
|
100
|
+
getProcessForConfig() {
|
|
101
|
+
const filteredColumns = this.listOfColumns.filter(column => this.selectedColumnDatasource.includes(column.fieldName));
|
|
102
|
+
const columnDefList = [];
|
|
103
|
+
filteredColumns.forEach(element => {
|
|
104
|
+
const existingColumn = (this.submitObject['columnDefList']) ? this.submitObject['columnDefList'].find(col => col.columnName === element.fieldName) : false;
|
|
105
|
+
if (!existingColumn) {
|
|
106
|
+
let obj = {
|
|
107
|
+
"columnName": element.fieldName,
|
|
108
|
+
"containerType": "",
|
|
109
|
+
"datatype": "",
|
|
110
|
+
"allowedOperations": [],
|
|
111
|
+
"lookupName": ""
|
|
112
|
+
};
|
|
113
|
+
columnDefList.push(obj);
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
if (this.submitObject['columnDefList'] && this.submitObject['columnDefList'].length !== 0) {
|
|
117
|
+
this.submitObject['columnDefList'] = [...this.submitObject['columnDefList'], ...columnDefList];
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
this.submitObject['columnDefList'] = columnDefList;
|
|
121
|
+
}
|
|
122
|
+
this.isProceed = true;
|
|
123
|
+
}
|
|
124
|
+
submitDatasource() {
|
|
125
|
+
this.loadingModal = true;
|
|
126
|
+
this.service.saveDatasourceConfig(this.submitObject).subscribe({
|
|
127
|
+
next: (data) => {
|
|
128
|
+
this.submitObject['columnDefList'] = [];
|
|
129
|
+
this.submitObject['active'] = false;
|
|
130
|
+
this.submitObject['endDateFunction'] = "";
|
|
131
|
+
this.submitObject['startDateFunction'] = "";
|
|
132
|
+
this.submitObject['tableName'] = "";
|
|
133
|
+
this.isProceed = false;
|
|
134
|
+
this.loadingModal = false;
|
|
135
|
+
this.isTableSelected = false;
|
|
136
|
+
this.isEditDatasource = false;
|
|
137
|
+
this.isCdrConfigCreate = false;
|
|
138
|
+
this.searchDatasourceDetails();
|
|
139
|
+
this.toastr.success('Config Created Successfully');
|
|
140
|
+
}, error: (err) => {
|
|
141
|
+
this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'CDR Config');
|
|
142
|
+
this.loadingModal = false;
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
editCdrConfigConfig(data) {
|
|
147
|
+
this.isEditDatasource = true;
|
|
148
|
+
this.loadingModal = true;
|
|
149
|
+
this.isCdrConfigCreate = true;
|
|
150
|
+
this.submitObject = data;
|
|
151
|
+
this.service.getTableMetadata(this.submitObject.tableName).subscribe({
|
|
152
|
+
next: (colData) => {
|
|
153
|
+
this.isTableSelected = true;
|
|
154
|
+
this.listOfColumns = colData;
|
|
155
|
+
this.selectedColumnName = this.submitObject.columnDefList.map(item => item.columnName);
|
|
156
|
+
this.isProceed = true;
|
|
157
|
+
this.loadingModal = false;
|
|
158
|
+
}, error: (err) => {
|
|
159
|
+
this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'CDR Config');
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
updateDatasource() {
|
|
164
|
+
this.loadingModal = true;
|
|
165
|
+
this.service.editDatasourceConfig(this.submitObject).subscribe({
|
|
166
|
+
next: (data) => {
|
|
167
|
+
this.submitObject['columnDefList'] = [];
|
|
168
|
+
this.submitObject['active'] = false;
|
|
169
|
+
this.submitObject['endDateFunction'] = "";
|
|
170
|
+
this.submitObject['startDateFunction'] = "";
|
|
171
|
+
this.submitObject['tableName'] = "";
|
|
172
|
+
this.isProceed = false;
|
|
173
|
+
this.loadingModal = false;
|
|
174
|
+
this.isTableSelected = false;
|
|
175
|
+
this.isEditDatasource = false;
|
|
176
|
+
this.isCdrConfigCreate = false;
|
|
177
|
+
this.searchDatasourceDetails();
|
|
178
|
+
this.toastr.success('Config Update Successfully');
|
|
179
|
+
}, error: (err) => {
|
|
180
|
+
this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'CDR Config');
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
deleteCdrConfig(data) {
|
|
185
|
+
let result = confirm("<i>Are You Sure?</i>", "Delete Config");
|
|
186
|
+
result.then((dialogResult) => {
|
|
187
|
+
if (dialogResult) {
|
|
188
|
+
this.loadingModal = true;
|
|
189
|
+
this.service.deleteDatasourceConfig(data.tableName).subscribe({
|
|
190
|
+
next: (data) => {
|
|
191
|
+
this.searchDatasourceDetails();
|
|
192
|
+
this.toastr.success('Config Deleted Successfully');
|
|
193
|
+
this.loadingModal = false;
|
|
194
|
+
}, error: (err) => {
|
|
195
|
+
this.loadingModal = false;
|
|
196
|
+
this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'CDR Config Delete');
|
|
197
|
+
}
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
createCDRConfig() {
|
|
203
|
+
this.isCdrConfigCreate = true;
|
|
204
|
+
}
|
|
205
|
+
cancelCdrConfig() {
|
|
206
|
+
this.isCdrConfigCreate = false;
|
|
207
|
+
this.submitObject['columnDefList'] = [];
|
|
208
|
+
this.submitObject['active'] = false;
|
|
209
|
+
this.submitObject['endDateFunction'] = "";
|
|
210
|
+
this.submitObject['startDateFunction'] = "";
|
|
211
|
+
this.submitObject['tableName'] = "";
|
|
212
|
+
this.isProceed = false;
|
|
213
|
+
this.loadingModal = false;
|
|
214
|
+
this.isTableSelected = false;
|
|
215
|
+
this.isEditDatasource = false;
|
|
216
|
+
}
|
|
217
|
+
deleteColume(i) {
|
|
218
|
+
this.submitObject.columnDefList.splice(i, 1);
|
|
219
|
+
}
|
|
220
|
+
moveItemForColumns(index, direction) {
|
|
221
|
+
if (index < 0 || index >= this.submitObject.columnDefList.length)
|
|
222
|
+
return;
|
|
223
|
+
const newPosition = direction === 'up' ? index - 1 : index + 1;
|
|
224
|
+
if (newPosition < 0 || newPosition >= this.submitObject.columnDefList.length)
|
|
225
|
+
return;
|
|
226
|
+
const itemToMove = this.submitObject.columnDefList[index];
|
|
227
|
+
this.submitObject.columnDefList.splice(index, 1);
|
|
228
|
+
this.submitObject.columnDefList.splice(newPosition, 0, itemToMove);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
CdrConfigComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CdrConfigComponent, deps: [{ token: i1.CdrConfigService }, { token: i2.ToastrService }, { token: i3.CommonService }], target: i0.ɵɵFactoryTarget.Component });
|
|
232
|
+
CdrConfigComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CdrConfigComponent, selector: "app-cdr-config", ngImport: i0, template: "<app-loading *ngIf=\"loadingModal\"></app-loading>\n\n<div class=\"flex flex-col flex-auto min-w-0\">\n <!-- header start -->\n <div class=\"flex flex-col\">\n <div class=\"flex justify-between border-b dark:bg-transparent\">\n <div class=\"flex flex-col ml-1 py-2\">\n <div class=\"flex items-center 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\n class=\"text-2xl md:text-2xl py-2 font-extrabold items-center ml-2 tracking-tight leading-5 truncate\">\n CDR Config Creation\n </h2>\n </div>\n\n </div>\n <div class=\"flex justify-between items-center border-l-2 p-0 m-0\">\n\n\n <div class=\"w-1 h-full border-l-2\"></div>\n <div class=\"mx-2\">\n\n <div class=\"flex items-center p-1\">\n\n <div class=\"mx-2\">\n <button class=\"{{commonService.btn_primary_md}} cursor-pointer\"\n (click)=\"createCDRConfig()\">Create Config\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"m-2\">\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 font-bold text-lg tracking-tight text-gray-900 dark:text-white border-b pb-3\"><i\n class=\"fa fa-bar-chart-o mr-2\"></i> Table Configurations\n </h6>\n\n <dx-data-grid [columnAutoWidth]=\"true\" [dataSource]=\"allTablsDropDownData\" [selectedRowKeys]=\"[]\"\n [showBorders]=\"true\" [showRowLines]=\"true\" id=\"gridContainer\" [hoverStateEnabled]=\"true\">\n\n <dxo-search-panel [highlightCaseSensitive]=\"true\" [visible]=\"true\">\n </dxo-search-panel>\n <dxo-export [enabled]=\"true\" fileName=\"alert_data_by_status\"></dxo-export>\n <dxo-paging [pageSize]=\"10\"></dxo-paging>\n <dxo-pager [showInfo]=\"true\" [showPageSizeSelector]=\"true\" [allowedPageSizes]=\"[10,20,50,100]\">\n </dxo-pager>\n <dxi-column dataField=\"tableName\"></dxi-column>\n <dxi-column dataField=\"startDateFunction\"></dxi-column>\n <dxi-column dataField=\"endDateFunction\"></dxi-column>\n <dxi-column caption=\"Status\" dataField=\"active\" cellTemplate=\"cellTemplate1\"></dxi-column>\n\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.btnPrimaryBlue}}\" (click)=\"editCdrConfigConfig(data.data)\">\n Edit\n </button>\n\n <button class=\"{{commonService.btn_danger_md}}\" (click)=\"deleteCdrConfig(data.data)\">\n Delete\n </button>\n </div>\n <div *dxTemplate=\"let data of 'cellTemplate1'\">\n <button type=\"button\" *ngIf=\"data.data.active == true\"\n class=\"{{commonService.btnSuccessGreen}}\">Active</button>\n\n <button type=\"button\" *ngIf=\"data.data.active == false\"\n class=\"{{commonService.btnWarningYellow}}\">Inactive</button>\n\n\n </div>\n\n </dx-data-grid>\n\n </div>\n </div>\n <ng-container *ngIf=\"isCdrConfigCreate\">\n <div class=\"m-2 py-3 border-b border-t\">\n <div class=\"flex flex-row px-2 mb-3\">\n <div class=\"w-1/3 px-2\">\n <div class=\"text-md mb-2\">Select Table Name</div>\n <dx-select-box [items]=\"availableTableDatasource\" [(ngModel)]=\"submitObject.tableName\"\n (onValueChanged)=\"getSelectedTableMetaData($event)\"></dx-select-box>\n </div>\n <div class=\"w-1/3 px-2\" *ngIf=\"isTableSelected\">\n <div class=\"text-md mb-2\">Select Columns</div>\n\n <dx-tag-box [dataSource]=\"listOfColumns\" valueExpr=\"fieldName\" displayExpr=\"fieldName\"\n [multiline]=\"true\" [showSelectionControls]=\"true\" [(ngModel)]=\"selectedColumnName\"\n (onValueChanged)=\"getSelectedColumnSource($event)\" [searchEnabled]=\"true\">\n </dx-tag-box>\n </div>\n <div class=\"w-1/3 px-2\" *ngIf=\"isTableSelected\">\n <button class=\"{{commonService.btn_primary_md}} mt-6\" (click)=\"getProcessForConfig()\">\n Add Columns\n </button>\n <button class=\"{{commonService.btn_danger_md}} cursor-pointer mt-6\"\n (click)=\"cancelCdrConfig()\">Cancel\n </button>\n </div>\n </div>\n </div>\n <div class=\"m-2 border-b\" *ngIf=\"isProceed\">\n <ng-container *ngFor=\"let item of submitObject.columnDefList; let i = index;\">\n <div class=\"flex flex-row m-2\">\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\">Column Name</div>\n <dx-text-box [(ngModel)]=\"item.columnName\"></dx-text-box>\n </div>\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\"> Data Type</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"filter_type\"\n [(ngModel)]=\"item.datatype\"></dx-select-box>\n\n </div>\n\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\">Container Type</div>\n <dx-select-box [items]=\"['input','select','multiselect','date']\"\n [(ngModel)]=\"item.containerType\"></dx-select-box>\n </div>\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\">Allowed Operations</div>\n <dx-tag-box [dataSource]=\"CdrBrowserAllowedDatasource\" valueExpr=\"value\" displayExpr=\"name\"\n [maxDisplayedTags]=\"3\" [multiline]=\"true\" [showSelectionControls]=\"true\"\n [(ngModel)]=\"item.allowedOperations\" [searchEnabled]=\"true\">\n </dx-tag-box>\n </div>\n\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\">Lookup Name</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"kpi_enrichment_name\" valueExpr=\"apiUrl\"\n displayExpr=\"apiName\" [(ngModel)]=\"item.lookupName\"></dx-select-box>\n </div>\n <div class=\"mx-2\">\n <div class=\"flex flex-row\">\n <button *ngIf=\"i !== 0\" class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1 mt-8\"\n (click)=\"moveItemForColumns(i, 'up')\">\n <i class=\"fa fa-arrow-up\" aria-hidden=\"true\"></i>\n </button>\n\n <button *ngIf=\"i !== submitObject.columnDefList.length - 1\"\n class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1 mt-8\"\n (click)=\"moveItemForColumns(i, 'down')\">\n <i class=\"fa fa-arrow-down\" aria-hidden=\"true\"></i>\n </button>\n\n <button class=\"{{commonService.btn_danger_sm}} cursor-pointer mx-1 mt-8\" (click)=\"deleteColume(i)\"><i\n class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n\n \n </div>\n </ng-container>\n </div>\n <div class=\"m-2\" *ngIf=\"isProceed\">\n <div class=\"flex flex-row m-2\">\n <div class=\"mx-2 w-1/4\">\n <div class=\"text-md mb-2\">StartDate Function</div>\n <dx-select-box [items]=\"['subtract']\" [(ngModel)]=\"submitObject.startDateFunction\"></dx-select-box>\n </div>\n <div class=\"mx-2 w-1/4\">\n <div class=\"text-md mb-2\">EndDate Function</div>\n <dx-select-box [items]=\"['subtract']\" [(ngModel)]=\"submitObject.endDateFunction\"></dx-select-box>\n </div>\n <div class=\"mx-2 w-1/4\">\n <div class=\"mt-8\">\n <dx-check-box [(ngModel)]=\"submitObject.active\" text='Active'>\n </dx-check-box>\n </div>\n </div>\n <div class=\"mx-2 w-1/4\">\n <div class=\"flex flex-row justify-end\">\n <button class=\"{{commonService.btn_success_md}} cursor-pointer mt-6\" *ngIf=\"!isEditDatasource\"\n (click)=\"submitDatasource()\">Submit\n </button>\n <button class=\"{{commonService.btn_success_md}} cursor-pointer mt-6\" *ngIf=\"isEditDatasource\"\n (click)=\"updateDatasource()\">Update\n </button>\n\n </div>\n </div>\n </div>\n\n </div>\n </ng-container>\n\n</div>", dependencies: [{ kind: "component", type: i4.LoadingComponent, selector: "app-loading" }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { 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.DxCheckBoxComponent, selector: "dx-check-box", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "iconSize", "isValid", "name", "readOnly", "rtlEnabled", "tabIndex", "text", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "visible", "width"], outputs: ["onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconSizeChange", "isValidChange", "nameChange", "readOnlyChange", "rtlEnabledChange", "tabIndexChange", "textChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "visibleChange", "widthChange", "onBlur"] }, { 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: 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.DxoPagerComponent, selector: "dxo-pager", inputs: ["allowedPageSizes", "displayMode", "infoText", "showInfo", "showNavigationButtons", "showPageSizeSelector", "visible"] }, { 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: i10.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "component", type: i11.DxTagBoxComponent, selector: "dx-tag-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "applyValueMode", "buttons", "dataSource", "deferRendering", "disabled", "displayExpr", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hideSelectedItems", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxDisplayedTags", "maxFilterQueryLength", "maxLength", "minSearchLength", "multiline", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectAllMode", "selectAllText", "selectedItems", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showMultiTagOnly", "showSelectionControls", "stylingMode", "tabIndex", "tagTemplate", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCustomItemCreating", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onMultiTagPreparing", "onOpened", "onOptionChanged", "onSelectAllValueChanged", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "applyValueModeChange", "buttonsChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hideSelectedItemsChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxDisplayedTagsChange", "maxFilterQueryLengthChange", "maxLengthChange", "minSearchLengthChange", "multilineChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectAllModeChange", "selectAllTextChange", "selectedItemsChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showMultiTagOnlyChange", "showSelectionControlsChange", "stylingModeChange", "tabIndexChange", "tagTemplateChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "component", type: i12.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "directive", type: i13.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i13.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i14.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
|
|
233
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CdrConfigComponent, decorators: [{
|
|
234
|
+
type: Component,
|
|
235
|
+
args: [{ selector: 'app-cdr-config', template: "<app-loading *ngIf=\"loadingModal\"></app-loading>\n\n<div class=\"flex flex-col flex-auto min-w-0\">\n <!-- header start -->\n <div class=\"flex flex-col\">\n <div class=\"flex justify-between border-b dark:bg-transparent\">\n <div class=\"flex flex-col ml-1 py-2\">\n <div class=\"flex items-center 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\n class=\"text-2xl md:text-2xl py-2 font-extrabold items-center ml-2 tracking-tight leading-5 truncate\">\n CDR Config Creation\n </h2>\n </div>\n\n </div>\n <div class=\"flex justify-between items-center border-l-2 p-0 m-0\">\n\n\n <div class=\"w-1 h-full border-l-2\"></div>\n <div class=\"mx-2\">\n\n <div class=\"flex items-center p-1\">\n\n <div class=\"mx-2\">\n <button class=\"{{commonService.btn_primary_md}} cursor-pointer\"\n (click)=\"createCDRConfig()\">Create Config\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"m-2\">\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 font-bold text-lg tracking-tight text-gray-900 dark:text-white border-b pb-3\"><i\n class=\"fa fa-bar-chart-o mr-2\"></i> Table Configurations\n </h6>\n\n <dx-data-grid [columnAutoWidth]=\"true\" [dataSource]=\"allTablsDropDownData\" [selectedRowKeys]=\"[]\"\n [showBorders]=\"true\" [showRowLines]=\"true\" id=\"gridContainer\" [hoverStateEnabled]=\"true\">\n\n <dxo-search-panel [highlightCaseSensitive]=\"true\" [visible]=\"true\">\n </dxo-search-panel>\n <dxo-export [enabled]=\"true\" fileName=\"alert_data_by_status\"></dxo-export>\n <dxo-paging [pageSize]=\"10\"></dxo-paging>\n <dxo-pager [showInfo]=\"true\" [showPageSizeSelector]=\"true\" [allowedPageSizes]=\"[10,20,50,100]\">\n </dxo-pager>\n <dxi-column dataField=\"tableName\"></dxi-column>\n <dxi-column dataField=\"startDateFunction\"></dxi-column>\n <dxi-column dataField=\"endDateFunction\"></dxi-column>\n <dxi-column caption=\"Status\" dataField=\"active\" cellTemplate=\"cellTemplate1\"></dxi-column>\n\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.btnPrimaryBlue}}\" (click)=\"editCdrConfigConfig(data.data)\">\n Edit\n </button>\n\n <button class=\"{{commonService.btn_danger_md}}\" (click)=\"deleteCdrConfig(data.data)\">\n Delete\n </button>\n </div>\n <div *dxTemplate=\"let data of 'cellTemplate1'\">\n <button type=\"button\" *ngIf=\"data.data.active == true\"\n class=\"{{commonService.btnSuccessGreen}}\">Active</button>\n\n <button type=\"button\" *ngIf=\"data.data.active == false\"\n class=\"{{commonService.btnWarningYellow}}\">Inactive</button>\n\n\n </div>\n\n </dx-data-grid>\n\n </div>\n </div>\n <ng-container *ngIf=\"isCdrConfigCreate\">\n <div class=\"m-2 py-3 border-b border-t\">\n <div class=\"flex flex-row px-2 mb-3\">\n <div class=\"w-1/3 px-2\">\n <div class=\"text-md mb-2\">Select Table Name</div>\n <dx-select-box [items]=\"availableTableDatasource\" [(ngModel)]=\"submitObject.tableName\"\n (onValueChanged)=\"getSelectedTableMetaData($event)\"></dx-select-box>\n </div>\n <div class=\"w-1/3 px-2\" *ngIf=\"isTableSelected\">\n <div class=\"text-md mb-2\">Select Columns</div>\n\n <dx-tag-box [dataSource]=\"listOfColumns\" valueExpr=\"fieldName\" displayExpr=\"fieldName\"\n [multiline]=\"true\" [showSelectionControls]=\"true\" [(ngModel)]=\"selectedColumnName\"\n (onValueChanged)=\"getSelectedColumnSource($event)\" [searchEnabled]=\"true\">\n </dx-tag-box>\n </div>\n <div class=\"w-1/3 px-2\" *ngIf=\"isTableSelected\">\n <button class=\"{{commonService.btn_primary_md}} mt-6\" (click)=\"getProcessForConfig()\">\n Add Columns\n </button>\n <button class=\"{{commonService.btn_danger_md}} cursor-pointer mt-6\"\n (click)=\"cancelCdrConfig()\">Cancel\n </button>\n </div>\n </div>\n </div>\n <div class=\"m-2 border-b\" *ngIf=\"isProceed\">\n <ng-container *ngFor=\"let item of submitObject.columnDefList; let i = index;\">\n <div class=\"flex flex-row m-2\">\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\">Column Name</div>\n <dx-text-box [(ngModel)]=\"item.columnName\"></dx-text-box>\n </div>\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\"> Data Type</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"filter_type\"\n [(ngModel)]=\"item.datatype\"></dx-select-box>\n\n </div>\n\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\">Container Type</div>\n <dx-select-box [items]=\"['input','select','multiselect','date']\"\n [(ngModel)]=\"item.containerType\"></dx-select-box>\n </div>\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\">Allowed Operations</div>\n <dx-tag-box [dataSource]=\"CdrBrowserAllowedDatasource\" valueExpr=\"value\" displayExpr=\"name\"\n [maxDisplayedTags]=\"3\" [multiline]=\"true\" [showSelectionControls]=\"true\"\n [(ngModel)]=\"item.allowedOperations\" [searchEnabled]=\"true\">\n </dx-tag-box>\n </div>\n\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\">Lookup Name</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"kpi_enrichment_name\" valueExpr=\"apiUrl\"\n displayExpr=\"apiName\" [(ngModel)]=\"item.lookupName\"></dx-select-box>\n </div>\n <div class=\"mx-2\">\n <div class=\"flex flex-row\">\n <button *ngIf=\"i !== 0\" class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1 mt-8\"\n (click)=\"moveItemForColumns(i, 'up')\">\n <i class=\"fa fa-arrow-up\" aria-hidden=\"true\"></i>\n </button>\n\n <button *ngIf=\"i !== submitObject.columnDefList.length - 1\"\n class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1 mt-8\"\n (click)=\"moveItemForColumns(i, 'down')\">\n <i class=\"fa fa-arrow-down\" aria-hidden=\"true\"></i>\n </button>\n\n <button class=\"{{commonService.btn_danger_sm}} cursor-pointer mx-1 mt-8\" (click)=\"deleteColume(i)\"><i\n class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n\n \n </div>\n </ng-container>\n </div>\n <div class=\"m-2\" *ngIf=\"isProceed\">\n <div class=\"flex flex-row m-2\">\n <div class=\"mx-2 w-1/4\">\n <div class=\"text-md mb-2\">StartDate Function</div>\n <dx-select-box [items]=\"['subtract']\" [(ngModel)]=\"submitObject.startDateFunction\"></dx-select-box>\n </div>\n <div class=\"mx-2 w-1/4\">\n <div class=\"text-md mb-2\">EndDate Function</div>\n <dx-select-box [items]=\"['subtract']\" [(ngModel)]=\"submitObject.endDateFunction\"></dx-select-box>\n </div>\n <div class=\"mx-2 w-1/4\">\n <div class=\"mt-8\">\n <dx-check-box [(ngModel)]=\"submitObject.active\" text='Active'>\n </dx-check-box>\n </div>\n </div>\n <div class=\"mx-2 w-1/4\">\n <div class=\"flex flex-row justify-end\">\n <button class=\"{{commonService.btn_success_md}} cursor-pointer mt-6\" *ngIf=\"!isEditDatasource\"\n (click)=\"submitDatasource()\">Submit\n </button>\n <button class=\"{{commonService.btn_success_md}} cursor-pointer mt-6\" *ngIf=\"isEditDatasource\"\n (click)=\"updateDatasource()\">Update\n </button>\n\n </div>\n </div>\n </div>\n\n </div>\n </ng-container>\n\n</div>" }]
|
|
236
|
+
}], ctorParameters: function () { return [{ type: i1.CdrConfigService }, { type: i2.ToastrService }, { type: i3.CommonService }]; } });
|
|
237
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RyLWNvbmZpZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL3RlbXBsYXRlLW1vZHVsZS9jZHJDb25maWdNb2R1bGUvY2RyLWNvbmZpZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL3RlbXBsYXRlLW1vZHVsZS9jZHJDb25maWdNb2R1bGUvY2RyLWNvbmZpZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRWxELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQVEvQyxNQUFNLE9BQU8sa0JBQWtCO0lBcUI3QixZQUFvQixPQUF5QixFQUFVLE1BQXFCLEVBQVMsYUFBNEI7UUFBN0YsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQVMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFuQmpILDZCQUF3QixHQUFRLEVBQUUsQ0FBQztRQUtuQyxpQkFBWSxHQUFRLEVBQUUsQ0FBQztRQUN2Qiw2QkFBd0IsR0FBUSxFQUFFLENBQUM7UUFDbkMsd0JBQW1CLEdBQVEsRUFBRSxDQUFDO1FBQzlCLGdDQUEyQixHQUFRLEVBQUUsQ0FBQztRQUl0Qyx1QkFBa0IsR0FBUSxFQUFFLENBQUM7UUFFN0Isc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBQ25DLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUNsQyxnQkFBVyxHQUFHLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUsxRSxDQUFDO0lBR0QsUUFBUTtR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QUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDckUsQ0FBQzs7K0dBNVBVLGtCQUFrQjttR0FBbEIsa0JBQWtCLHNEQ1YvQiwyK1RBbU1NOzJGRHpMTyxrQkFBa0I7a0JBSjlCLFNBQVM7K0JBQ0UsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRvYXN0clNlcnZpY2UgfSBmcm9tICduZ3gtdG9hc3RyJztcbmltcG9ydCB7IGNvbmZpcm0gfSBmcm9tICdkZXZleHRyZW1lL3VpL2RpYWxvZyc7XG5pbXBvcnQgeyBDZHJDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9jZHItYnJvd3Nlci5zZXJ2aWNlJztcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuLi8uLi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jZHItY29uZmlnJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Nkci1jb25maWcuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBDZHJDb25maWdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBsb2FkaW5nTW9kYWw6IGJvb2xlYW47XG4gIGF2YWlsYWJsZVRhYmxlRGF0YXNvdXJjZTogYW55ID0gW107XG4gIHNlbGVjdGVkVGFibGVOYW1lOiBhbnk7XG4gIGlzVGFibGVTZWxlY3RlZDogYm9vbGVhbjtcbiAgaXNQcm9jZWVkOiBib29sZWFuO1xuICBsaXN0T2ZDb2x1bW5zOiBhbnk7XG4gIHN1Ym1pdE9iamVjdDogYW55ID0ge307XG4gIHNlbGVjdGVkQ29sdW1uRGF0YXNvdXJjZTogYW55ID0gW107XG4gIGtwaV9lbnJpY2htZW50X25hbWU6IGFueSA9IFtdO1xuICBDZHJCcm93c2VyQWxsb3dlZERhdGFzb3VyY2U6IGFueSA9IFtdO1xuXG4gIGNkclRhYmxlRGF0YVNvdXJjZTogYW55O1xuICBhbGxUYWJsc0Ryb3BEb3duRGF0YTogYW55O1xuICBzZWxlY3RlZENvbHVtbk5hbWU6IGFueSA9IFtdO1xuXG4gIGlzQ2RyQ29uZmlnQ3JlYXRlOiBib29sZWFuID0gZmFsc2U7XG4gIGlzRWRpdERhdGFzb3VyY2U6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZmlsdGVyX3R5cGUgPSBbJ2RhdGUnLCAnc3RyaW5nJywgJ3RpbWVzdGFtcCcsICdpbnQnLCAnZG91YmxlJywgJ2Jvb2xlYW4nXTtcblxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2VydmljZTogQ2RyQ29uZmlnU2VydmljZSwgcHJpdmF0ZSB0b2FzdHI6IFRvYXN0clNlcnZpY2UsIHB1YmxpYyBjb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlKSB7XG5cbiAgfVxuXG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG5cbiAgICB0aGlzLmdldEF2YWlsYWJsZVRhYmVOYW1lKCk7XG4gICAgdGhpcy5nZXRGaWx0ZXJEYXRhU2V0KCk7XG4gICAgdGhpcy5nZXRDZHJCcm93c2VyQWxsb3dlZE9wZXJhdGlvbigpO1xuICAgIHRoaXMuc2VhcmNoRGF0YXNvdXJjZURldGFpbHMoKTtcblxuICB9XG5cbiAgZ2V0RmlsdGVyRGF0YVNldCgpIHtcbiAgICB0aGlzLmtwaV9lbnJpY2htZW50X25hbWUgPSBbXTtcbiAgICB0aGlzLnNlcnZpY2UuZ2V0S1BJUmVmZXJlbmNlRW5kUG9pbnRzKCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgZGF0YS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgIHRoaXMua3BpX2VucmljaG1lbnRfbmFtZS5wdXNoKGVsZW1lbnQpO1xuICAgICAgICB9KTtcbiAgICAgIH0sIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoXCJVbmV4cGVjdGVkIFNlcnZlciBFeGNlcHRpb24uIFBsZWFzZSBjb250YWN0IFN5c3RlbSBBZG1pbi5cIiwgXCJDRFIgQ29uZmlnXCIpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG5cblxuICBzZWFyY2hEYXRhc291cmNlRGV0YWlscygpIHtcbiAgICB0aGlzLmNkclRhYmxlRGF0YVNvdXJjZSA9IHt9O1xuICAgIHRoaXMuYWxsVGFibHNEcm9wRG93bkRhdGEgPSBbXTtcbiAgICB0aGlzLnNlcnZpY2UuZ2V0U2VhcmNoRGF0YXNvdXJjZURldGFpbHMoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmNkclRhYmxlRGF0YVNvdXJjZSA9IGRhdGE7XG5cbiAgICAgICAgdGhpcy5hbGxUYWJsc0Ryb3BEb3duRGF0YSA9IE9iamVjdC5rZXlzKGRhdGEpLm1hcChrZXkgPT4gKHtcbiAgICAgICAgICBuYW1lOiBrZXksXG4gICAgICAgICAgLi4uZGF0YVtrZXldXG4gICAgICAgIH0pKTtcblxuICAgICAgfSwgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcignVW5leHBlY3RlZCBTZXJ2ZXIgRXhjZXB0aW9uLiBQbGVhc2UgY29udGFjdCBTeXN0ZW0gQWRtaW4uJywgJ0NEUiBDb25maWcnKTtcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cblxuXG4gIGdldENkckJyb3dzZXJBbGxvd2VkT3BlcmF0aW9uKCkge1xuXG4gICAgdGhpcy5zZXJ2aWNlLmdldENkckJyb3dzZXJPcGVyYXRpb25zKCkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgdGhpcy5DZHJCcm93c2VyQWxsb3dlZERhdGFzb3VyY2UgPSBkYXRhO1xuICAgIH0pXG4gIH1cblxuICBnZXRBdmFpbGFibGVUYWJlTmFtZSgpIHtcbiAgICB0aGlzLmF2YWlsYWJsZVRhYmxlRGF0YXNvdXJjZSA9IFtdO1xuICAgIHRoaXMuc2VydmljZS5nZXRBdmFpbGFibGVUYWJsZXMoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmF2YWlsYWJsZVRhYmxlRGF0YXNvdXJjZSA9IGRhdGE7XG4gICAgICB9LCBlcnJvcjogKGVycjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKCdVbmV4cGVjdGVkIFNlcnZlciBFeGNlcHRpb24uIFBsZWFzZSBjb250YWN0IFN5c3RlbSBBZG1pbi4nLCAnQ0RSIENvbmZpZycpO1xuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBnZXRTZWxlY3RlZFRhYmxlTWV0YURhdGEoZSkge1xuICAgIGlmIChlLnZhbHVlKSB7XG4gICAgICB0aGlzLmlzUHJvY2VlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pc1RhYmxlU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIGxldCB0YWJsZU5hbWUgPSBlLnZhbHVlO1xuICAgICAgdGhpcy5saXN0T2ZDb2x1bW5zID0gW107XG4gICAgICB0aGlzLnNlcnZpY2UuZ2V0VGFibGVNZXRhZGF0YSh0YWJsZU5hbWUpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmlzVGFibGVTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgdGhpcy5saXN0T2ZDb2x1bW5zID0gZGF0YTtcbiAgICAgICAgICAvLyB0aGlzLmF2YWlsYWJsZVRhYmxlRGF0YXNvdXJjZSA9IGRhdGE7XG4gICAgICAgIH0sIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcignVW5leHBlY3RlZCBTZXJ2ZXIgRXhjZXB0aW9uLiBQbGVhc2UgY29udGFjdCBTeXN0ZW0gQWRtaW4uJywgJ0NEUiBDb25maWcnKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBnZXRTZWxlY3RlZENvbHVtblNvdXJjZShlKSB7XG4gICAgdGhpcy5zZWxlY3RlZENvbHVtbkRhdGFzb3VyY2UgPSBlLnZhbHVlO1xuXG4gIH1cblxuICBnZXRQcm9jZXNzRm9yQ29uZmlnKCkge1xuICAgIGNvbnN0IGZpbHRlcmVkQ29sdW1ucyA9IHRoaXMubGlzdE9mQ29sdW1ucy5maWx0ZXIoY29sdW1uID0+IHRoaXMuc2VsZWN0ZWRDb2x1bW5EYXRhc291cmNlLmluY2x1ZGVzKGNvbHVtbi5maWVsZE5hbWUpKTtcbiAgICBjb25zdCBjb2x1bW5EZWZMaXN0ID0gW107XG5cbiAgICBmaWx0ZXJlZENvbHVtbnMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nQ29sdW1uID0gKHRoaXMuc3VibWl0T2JqZWN0Wydjb2x1bW5EZWZMaXN0J10pID8gdGhpcy5zdWJtaXRPYmplY3RbJ2NvbHVtbkRlZkxpc3QnXS5maW5kKGNvbCA9PiBjb2wuY29sdW1uTmFtZSA9PT0gZWxlbWVudC5maWVsZE5hbWUpIDogZmFsc2U7XG5cbiAgICAgIGlmICghZXhpc3RpbmdDb2x1bW4pIHtcbiAgICAgICAgbGV0IG9iaiA9IHtcbiAgICAgICAgICBcImNvbHVtbk5hbWVcIjogZWxlbWVudC5maWVsZE5hbWUsXG4gICAgICAgICAgXCJjb250YWluZXJUeXBlXCI6IFwiXCIsXG4gICAgICAgICAgXCJkYXRhdHlwZVwiOiBcIlwiLFxuICAgICAgICAgIFwiYWxsb3dlZE9wZXJhdGlvbnNcIjogW10sXG4gICAgICAgICAgXCJsb29rdXBOYW1lXCI6IFwiXCJcbiAgICAgICAgfTtcbiAgICAgICAgY29sdW1uRGVmTGlzdC5wdXNoKG9iaik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKHRoaXMuc3VibWl0T2JqZWN0Wydjb2x1bW5EZWZMaXN0J10gJiYgdGhpcy5zdWJtaXRPYmplY3RbJ2NvbHVtbkRlZkxpc3QnXS5sZW5ndGggIT09IDApIHtcbiAgICAgIHRoaXMuc3VibWl0T2JqZWN0Wydjb2x1bW5EZWZMaXN0J10gPSBbLi4udGhpcy5zdWJtaXRPYmplY3RbJ2NvbHVtbkRlZkxpc3QnXSwgLi4uY29sdW1uRGVmTGlzdF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3VibWl0T2JqZWN0Wydjb2x1bW5EZWZMaXN0J10gPSBjb2x1bW5EZWZMaXN0O1xuICAgIH1cblxuICAgIHRoaXMuaXNQcm9jZWVkID0gdHJ1ZTtcbiAgfVxuXG4gIHN1Ym1pdERhdGFzb3VyY2UoKSB7XG4gICAgdGhpcy5sb2FkaW5nTW9kYWwgPSB0cnVlO1xuICAgIHRoaXMuc2VydmljZS5zYXZlRGF0YXNvdXJjZUNvbmZpZyh0aGlzLnN1Ym1pdE9iamVjdCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5zdWJtaXRPYmplY3RbJ2NvbHVtbkRlZkxpc3QnXSA9IFtdO1xuICAgICAgICB0aGlzLnN1Ym1pdE9iamVjdFsnYWN0aXZlJ10gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdWJtaXRPYmplY3RbJ2VuZERhdGVGdW5jdGlvbiddID0gXCJcIjtcbiAgICAgICAgdGhpcy5zdWJtaXRPYmplY3RbJ3N0YXJ0RGF0ZUZ1bmN0aW9uJ10gPSBcIlwiO1xuICAgICAgICB0aGlzLnN1Ym1pdE9iamVjdFsndGFibGVOYW1lJ10gPSBcIlwiO1xuICAgICAgICB0aGlzLmlzUHJvY2VlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmxvYWRpbmdNb2RhbCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzVGFibGVTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzRWRpdERhdGFzb3VyY2UgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc0NkckNvbmZpZ0NyZWF0ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNlYXJjaERhdGFzb3VyY2VEZXRhaWxzKCk7XG4gICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MoJ0NvbmZpZyBDcmVhdGVkIFN1Y2Nlc3NmdWxseScpXG4gICAgICB9LCBlcnJvcjogKGVycjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKCdVbmV4cGVjdGVkIFNlcnZlciBFeGNlcHRpb24uIFBsZWFzZSBjb250YWN0IFN5c3RlbSBBZG1pbi4nLCAnQ0RSIENvbmZpZycpO1xuICAgICAgICB0aGlzLmxvYWRpbmdNb2RhbCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBlZGl0Q2RyQ29uZmlnQ29uZmlnKGRhdGEpIHtcbiAgICB0aGlzLmlzRWRpdERhdGFzb3VyY2UgPSB0cnVlO1xuICAgIHRoaXMubG9hZGluZ01vZGFsID0gdHJ1ZTtcbiAgICB0aGlzLmlzQ2RyQ29uZmlnQ3JlYXRlID0gdHJ1ZTtcbiAgICB0aGlzLnN1Ym1pdE9iamVjdCA9IGRhdGE7XG4gICAgdGhpcy5zZXJ2aWNlLmdldFRhYmxlTWV0YWRhdGEodGhpcy5zdWJtaXRPYmplY3QudGFibGVOYW1lKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGNvbERhdGE6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmlzVGFibGVTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgIHRoaXMubGlzdE9mQ29sdW1ucyA9IGNvbERhdGE7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5OYW1lID0gdGhpcy5zdWJtaXRPYmplY3QuY29sdW1uRGVmTGlzdC5tYXAoaXRlbSA9PiBpdGVtLmNvbHVtbk5hbWUpO1xuICAgICAgICB0aGlzLmlzUHJvY2VlZCA9IHRydWU7XG4gICAgICAgIHRoaXMubG9hZGluZ01vZGFsID0gZmFsc2U7XG4gICAgICB9LCBlcnJvcjogKGVycjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKCdVbmV4cGVjdGVkIFNlcnZlciBFeGNlcHRpb24uIFBsZWFzZSBjb250YWN0IFN5c3RlbSBBZG1pbi4nLCAnQ0RSIENvbmZpZycpO1xuICAgICAgfVxuICAgIH0pXG5cbiAgfVxuXG4gIHVwZGF0ZURhdGFzb3VyY2UoKSB7XG4gICAgdGhpcy5sb2FkaW5nTW9kYWwgPSB0cnVlO1xuICAgIHRoaXMuc2VydmljZS5lZGl0RGF0YXNvdXJjZUNvbmZpZyh0aGlzLnN1Ym1pdE9iamVjdCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5zdWJtaXRPYmplY3RbJ2NvbHVtbkRlZkxpc3QnXSA9IFtdO1xuICAgICAgICB0aGlzLnN1Ym1pdE9iamVjdFsnYWN0aXZlJ10gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdWJtaXRPYmplY3RbJ2VuZERhdGVGdW5jdGlvbiddID0gXCJcIjtcbiAgICAgICAgdGhpcy5zdWJtaXRPYmplY3RbJ3N0YXJ0RGF0ZUZ1bmN0aW9uJ10gPSBcIlwiO1xuICAgICAgICB0aGlzLnN1Ym1pdE9iamVjdFsndGFibGVOYW1lJ10gPSBcIlwiO1xuICAgICAgICB0aGlzLmlzUHJvY2VlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmxvYWRpbmdNb2RhbCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzVGFibGVTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzRWRpdERhdGFzb3VyY2UgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc0NkckNvbmZpZ0NyZWF0ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNlYXJjaERhdGFzb3VyY2VEZXRhaWxzKCk7XG4gICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MoJ0NvbmZpZyBVcGRhdGUgU3VjY2Vzc2Z1bGx5JylcbiAgICAgIH0sIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ1VuZXhwZWN0ZWQgU2VydmVyIEV4Y2VwdGlvbi4gUGxlYXNlIGNvbnRhY3QgU3lzdGVtIEFkbWluLicsICdDRFIgQ29uZmlnJyk7XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGRlbGV0ZUNkckNvbmZpZyhkYXRhKSB7XG4gICAgbGV0IHJlc3VsdCA9IGNvbmZpcm0oXCI8aT5BcmUgWW91IFN1cmU/PC9pPlwiLCBcIkRlbGV0ZSBDb25maWdcIik7XG4gICAgcmVzdWx0LnRoZW4oKGRpYWxvZ1Jlc3VsdCkgPT4ge1xuICAgICAgaWYgKGRpYWxvZ1Jlc3VsdCkge1xuICAgICAgICB0aGlzLmxvYWRpbmdNb2RhbCA9IHRydWVcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmRlbGV0ZURhdGFzb3VyY2VDb25maWcoZGF0YS50YWJsZU5hbWUpLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hEYXRhc291cmNlRGV0YWlscygpO1xuICAgICAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcygnQ29uZmlnIERlbGV0ZWQgU3VjY2Vzc2Z1bGx5JylcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ01vZGFsID0gZmFsc2U7XG4gICAgICAgICAgfSwgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nTW9kYWwgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKCdVbmV4cGVjdGVkIFNlcnZlciBFeGNlcHRpb24uIFBsZWFzZSBjb250YWN0IFN5c3RlbSBBZG1pbi4nLCAnQ0RSIENvbmZpZyBEZWxldGUnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjcmVhdGVDRFJDb25maWcoKSB7XG4gICAgdGhpcy5pc0NkckNvbmZpZ0NyZWF0ZSA9IHRydWU7XG4gIH1cblxuICBjYW5jZWxDZHJDb25maWcoKSB7XG4gICAgdGhpcy5pc0NkckNvbmZpZ0NyZWF0ZSA9IGZhbHNlO1xuICAgIHRoaXMuc3VibWl0T2JqZWN0Wydjb2x1bW5EZWZMaXN0J10gPSBbXTtcbiAgICB0aGlzLnN1Ym1pdE9iamVjdFsnYWN0aXZlJ10gPSBmYWxzZTtcbiAgICB0aGlzLnN1Ym1pdE9iamVjdFsnZW5kRGF0ZUZ1bmN0aW9uJ10gPSBcIlwiO1xuICAgIHRoaXMuc3VibWl0T2JqZWN0WydzdGFydERhdGVGdW5jdGlvbiddID0gXCJcIjtcbiAgICB0aGlzLnN1Ym1pdE9iamVjdFsndGFibGVOYW1lJ10gPSBcIlwiO1xuICAgIC8vIHRoaXMuc2VhcmNoRGF0YXNvdXJjZURldGFpbHMoKTtcbiAgICB0aGlzLmlzUHJvY2VlZCA9IGZhbHNlO1xuICAgIHRoaXMubG9hZGluZ01vZGFsID0gZmFsc2U7XG4gICAgdGhpcy5pc1RhYmxlU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLmlzRWRpdERhdGFzb3VyY2UgPSBmYWxzZTtcbiAgfVxuXG4gIGRlbGV0ZUNvbHVtZShpKSB7XG4gICAgdGhpcy5zdWJtaXRPYmplY3QuY29sdW1uRGVmTGlzdC5zcGxpY2UoaSwgMSlcbiAgfVxuXG5cbiAgIG1vdmVJdGVtRm9yQ29sdW1ucyhpbmRleDogbnVtYmVyLCBkaXJlY3Rpb246ICd1cCcgfCAnZG93bicpOiB2b2lkIHtcbiAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHRoaXMuc3VibWl0T2JqZWN0LmNvbHVtbkRlZkxpc3QubGVuZ3RoKSByZXR1cm47XG4gICAgY29uc3QgbmV3UG9zaXRpb24gPSBkaXJlY3Rpb24gPT09ICd1cCcgPyBpbmRleCAtIDEgOiBpbmRleCArIDE7XG4gICAgaWYgKG5ld1Bvc2l0aW9uIDwgMCB8fCBuZXdQb3NpdGlvbiA+PSB0aGlzLnN1Ym1pdE9iamVjdC5jb2x1bW5EZWZMaXN0Lmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgY29uc3QgaXRlbVRvTW92ZSA9IHRoaXMuc3VibWl0T2JqZWN0LmNvbHVtbkRlZkxpc3RbaW5kZXhdO1xuICAgIHRoaXMuc3VibWl0T2JqZWN0LmNvbHVtbkRlZkxpc3Quc3BsaWNlKGluZGV4LCAxKTsgXG4gICAgdGhpcy5zdWJtaXRPYmplY3QuY29sdW1uRGVmTGlzdC5zcGxpY2UobmV3UG9zaXRpb24sIDAsIGl0ZW1Ub01vdmUpOyBcbiAgfVxuXG59XG4iLCI8YXBwLWxvYWRpbmcgKm5nSWY9XCJsb2FkaW5nTW9kYWxcIj48L2FwcC1sb2FkaW5nPlxuXG48ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBmbGV4LWF1dG8gbWluLXctMFwiPlxuICAgIDwhLS0gaGVhZGVyIHN0YXJ0IC0tPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBib3JkZXItYiBkYXJrOmJnLXRyYW5zcGFyZW50XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBtbC0xIHB5LTJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZmxvYXQtc3RhcnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIG92ZXJmbG93LWhpZGRlblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbi1zaXplLTJcIiBbc3ZnSWNvbl09XCInaGVyb2ljb25zX3NvbGlkOnRlbXBsYXRlJ1wiPjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8aDJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC0yeGwgbWQ6dGV4dC0yeGwgcHktMiBmb250LWV4dHJhYm9sZCBpdGVtcy1jZW50ZXIgbWwtMiB0cmFja2luZy10aWdodCBsZWFkaW5nLTUgdHJ1bmNhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIENEUiBDb25maWcgQ3JlYXRpb25cbiAgICAgICAgICAgICAgICAgICAgPC9oMj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIGJvcmRlci1sLTIgcC0wIG0tMFwiPlxuXG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xIGgtZnVsbCBib3JkZXItbC0yXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTJcIj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgcC0xXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fcHJpbWFyeV9tZH19IGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNyZWF0ZUNEUkNvbmZpZygpXCI+Q3JlYXRlIENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cIm0tMlwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibS0zIHAtNCBiZy13aGl0ZSBib3JkZXIgYm9yZGVyLWdyYXktMjAwIHJvdW5kZWQtbGcgc2hhZG93LW1kIGRhcms6YmctZ3JheS04MDAgZGFyazpib3JkZXItZ3JheS03MDBcIj5cbiAgICAgICAgICAgIDxoNiBjbGFzcz1cIm1iLTIgZm9udC1ib2xkIHRleHQtbGcgdHJhY2tpbmctdGlnaHQgdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGUgYm9yZGVyLWIgcGItM1wiPjxpXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEgZmEtYmFyLWNoYXJ0LW8gbXItMlwiPjwvaT4gVGFibGUgQ29uZmlndXJhdGlvbnNcbiAgICAgICAgICAgIDwvaDY+XG5cbiAgICAgICAgICAgIDxkeC1kYXRhLWdyaWQgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCIgW2RhdGFTb3VyY2VdPVwiYWxsVGFibHNEcm9wRG93bkRhdGFcIiBbc2VsZWN0ZWRSb3dLZXlzXT1cIltdXCJcbiAgICAgICAgICAgICAgICBbc2hvd0JvcmRlcnNdPVwidHJ1ZVwiIFtzaG93Um93TGluZXNdPVwidHJ1ZVwiIGlkPVwiZ3JpZENvbnRhaW5lclwiIFtob3ZlclN0YXRlRW5hYmxlZF09XCJ0cnVlXCI+XG5cbiAgICAgICAgICAgICAgICA8ZHhvLXNlYXJjaC1wYW5lbCBbaGlnaGxpZ2h0Q2FzZVNlbnNpdGl2ZV09XCJ0cnVlXCIgW3Zpc2libGVdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIDwvZHhvLXNlYXJjaC1wYW5lbD5cbiAgICAgICAgICAgICAgICA8ZHhvLWV4cG9ydCBbZW5hYmxlZF09XCJ0cnVlXCIgZmlsZU5hbWU9XCJhbGVydF9kYXRhX2J5X3N0YXR1c1wiPjwvZHhvLWV4cG9ydD5cbiAgICAgICAgICAgICAgICA8ZHhvLXBhZ2luZyBbcGFnZVNpemVdPVwiMTBcIj48L2R4by1wYWdpbmc+XG4gICAgICAgICAgICAgICAgPGR4by1wYWdlciBbc2hvd0luZm9dPVwidHJ1ZVwiIFtzaG93UGFnZVNpemVTZWxlY3Rvcl09XCJ0cnVlXCIgW2FsbG93ZWRQYWdlU2l6ZXNdPVwiWzEwLDIwLDUwLDEwMF1cIj5cbiAgICAgICAgICAgICAgICA8L2R4by1wYWdlcj5cbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJ0YWJsZU5hbWVcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwic3RhcnREYXRlRnVuY3Rpb25cIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiZW5kRGF0ZUZ1bmN0aW9uXCI+PC9keGktY29sdW1uPlxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGNhcHRpb249XCJTdGF0dXNcIiBkYXRhRmllbGQ9XCJhY3RpdmVcIiBjZWxsVGVtcGxhdGU9XCJjZWxsVGVtcGxhdGUxXCI+PC9keGktY29sdW1uPlxuXG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiYWN0aW9uXCIgY2VsbFRlbXBsYXRlPVwiY2VsbFRlbXBsYXRlXCIgW2ZpeGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBmaXhlZFBvc2l0aW9uPVwicmlnaHRcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBkYXRhIG9mICdjZWxsVGVtcGxhdGUnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuUHJpbWFyeUJsdWV9fVwiIChjbGljayk9XCJlZGl0Q2RyQ29uZmlnQ29uZmlnKGRhdGEuZGF0YSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEVkaXRcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fZGFuZ2VyX21kfX1cIiAoY2xpY2spPVwiZGVsZXRlQ2RyQ29uZmlnKGRhdGEuZGF0YSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIERlbGV0ZVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGRhdGEgb2YgJ2NlbGxUZW1wbGF0ZTEnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiZGF0YS5kYXRhLmFjdGl2ZSA9PSB0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0blN1Y2Nlc3NHcmVlbn19XCI+QWN0aXZlPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJkYXRhLmRhdGEuYWN0aXZlID09IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bldhcm5pbmdZZWxsb3d9fVwiPkluYWN0aXZlPC9idXR0b24+XG5cblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8L2R4LWRhdGEtZ3JpZD5cblxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNDZHJDb25maWdDcmVhdGVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tMiBweS0zIGJvcmRlci1iIGJvcmRlci10XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBweC0yIG1iLTNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xLzMgcHgtMlwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+U2VsZWN0IFRhYmxlIE5hbWU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW2l0ZW1zXT1cImF2YWlsYWJsZVRhYmxlRGF0YXNvdXJjZVwiIFsobmdNb2RlbCldPVwic3VibWl0T2JqZWN0LnRhYmxlTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwiZ2V0U2VsZWN0ZWRUYWJsZU1ldGFEYXRhKCRldmVudClcIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMS8zIHB4LTJcIiAqbmdJZj1cImlzVGFibGVTZWxlY3RlZFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+U2VsZWN0IENvbHVtbnM8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZHgtdGFnLWJveCBbZGF0YVNvdXJjZV09XCJsaXN0T2ZDb2x1bW5zXCIgdmFsdWVFeHByPVwiZmllbGROYW1lXCIgZGlzcGxheUV4cHI9XCJmaWVsZE5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW211bHRpbGluZV09XCJ0cnVlXCIgW3Nob3dTZWxlY3Rpb25Db250cm9sc109XCJ0cnVlXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZENvbHVtbk5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cImdldFNlbGVjdGVkQ29sdW1uU291cmNlKCRldmVudClcIiBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvZHgtdGFnLWJveD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xLzMgcHgtMlwiICpuZ0lmPVwiaXNUYWJsZVNlbGVjdGVkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3ByaW1hcnlfbWR9fSBtdC02XCIgKGNsaWNrKT1cImdldFByb2Nlc3NGb3JDb25maWcoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQWRkIENvbHVtbnNcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX2Rhbmdlcl9tZH19IGN1cnNvci1wb2ludGVyIG10LTZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNhbmNlbENkckNvbmZpZygpXCI+Q2FuY2VsXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibS0yIGJvcmRlci1iXCIgKm5nSWY9XCJpc1Byb2NlZWRcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc3VibWl0T2JqZWN0LmNvbHVtbkRlZkxpc3Q7IGxldCBpID0gaW5kZXg7XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgbS0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteC0yIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPkNvbHVtbiBOYW1lPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJpdGVtLmNvbHVtbk5hbWVcIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IERhdGEgVHlwZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiIFtpdGVtc109XCJmaWx0ZXJfdHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLmRhdGF0eXBlXCI+PC9keC1zZWxlY3QtYm94PlxuXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteC0yIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPkNvbnRhaW5lciBUeXBlPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbaXRlbXNdPVwiWydpbnB1dCcsJ3NlbGVjdCcsJ211bHRpc2VsZWN0JywnZGF0ZSddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW0uY29udGFpbmVyVHlwZVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteC0yIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPkFsbG93ZWQgT3BlcmF0aW9uczwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRhZy1ib3ggW2RhdGFTb3VyY2VdPVwiQ2RyQnJvd3NlckFsbG93ZWREYXRhc291cmNlXCIgdmFsdWVFeHByPVwidmFsdWVcIiBkaXNwbGF5RXhwcj1cIm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhEaXNwbGF5ZWRUYWdzXT1cIjNcIiBbbXVsdGlsaW5lXT1cInRydWVcIiBbc2hvd1NlbGVjdGlvbkNvbnRyb2xzXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaXRlbS5hbGxvd2VkT3BlcmF0aW9uc1wiIFtzZWFyY2hFbmFibGVkXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZHgtdGFnLWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+TG9va3VwIE5hbWU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtzZWFyY2hFbmFibGVkXT1cInRydWVcIiBbaXRlbXNdPVwia3BpX2VucmljaG1lbnRfbmFtZVwiIHZhbHVlRXhwcj1cImFwaVVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUV4cHI9XCJhcGlOYW1lXCIgWyhuZ01vZGVsKV09XCJpdGVtLmxvb2t1cE5hbWVcIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiaSAhPT0gMFwiIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9saWdodF9zbX19IGN1cnNvci1wb2ludGVyIG14LTEgbXQtOFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZlSXRlbUZvckNvbHVtbnMoaSwgJ3VwJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1hcnJvdy11cFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJpICE9PSBzdWJtaXRPYmplY3QuY29sdW1uRGVmTGlzdC5sZW5ndGggLSAxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX2xpZ2h0X3NtfX0gY3Vyc29yLXBvaW50ZXIgbXgtMSBtdC04XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVJdGVtRm9yQ29sdW1ucyhpLCAnZG93bicpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctZG93blwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fZGFuZ2VyX3NtfX0gY3Vyc29yLXBvaW50ZXIgbXgtMSBtdC04XCIgKGNsaWNrKT1cImRlbGV0ZUNvbHVtZShpKVwiPjxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEgZmEtdHJhc2gtb1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLTJcIiAqbmdJZj1cImlzUHJvY2VlZFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgbS0yXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTIgdy0xLzRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPlN0YXJ0RGF0ZSBGdW5jdGlvbjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbaXRlbXNdPVwiWydzdWJ0cmFjdCddXCIgWyhuZ01vZGVsKV09XCJzdWJtaXRPYmplY3Quc3RhcnREYXRlRnVuY3Rpb25cIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTIgdy0xLzRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPkVuZERhdGUgRnVuY3Rpb248L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW2l0ZW1zXT1cIlsnc3VidHJhY3QnXVwiIFsobmdNb2RlbCldPVwic3VibWl0T2JqZWN0LmVuZERhdGVGdW5jdGlvblwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMiB3LTEvNFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtOFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LWNoZWNrLWJveCBbKG5nTW9kZWwpXT1cInN1Ym1pdE9iamVjdC5hY3RpdmVcIiB0ZXh0PSdBY3RpdmUnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9keC1jaGVjay1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteC0yIHctMS80XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9zdWNjZXNzX21kfX0gY3Vyc29yLXBvaW50ZXIgbXQtNlwiICpuZ0lmPVwiIWlzRWRpdERhdGFzb3VyY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzdWJtaXREYXRhc291cmNlKClcIj5TdWJtaXRcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fc3VjY2Vzc19tZH19IGN1cnNvci1wb2ludGVyIG10LTZcIiAqbmdJZj1cImlzRWRpdERhdGFzb3VyY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ1cGRhdGVEYXRhc291cmNlKClcIj5VcGRhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbjwvZGl2PiJdfQ==
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { DevExtremeModule, DxAccordionModule, DxButtonModule, DxCheckBoxModule, DxDataGridModule, DxDropDownBoxModule, DxFormModule, DxHtmlEditorModule, DxNumberBoxModule, DxPopupModule, DxSelectBoxModule, DxTagBoxModule, DxTextBoxModule, DxTreeViewModule, DxBulletModule, DxChartModule, DxDateBoxModule, DxLoadPanelModule, DxLookupModule, DxPivotGridModule, DxTemplateModule, DxTextAreaModule, DxValidationSummaryModule, DxValidatorModule, DxCalendarModule, DxTooltipModule, DxContextMenuModule, DxLoadIndicatorModule, DxPieChartModule, DxScrollViewModule } from "devextreme-angular";
|
|
4
|
+
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
5
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
6
|
+
import { MatDividerModule } from '@angular/material/divider';
|
|
7
|
+
import { MatMenuModule } from '@angular/material/menu';
|
|
8
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
9
|
+
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
10
|
+
import { LoadingModule } from '../../application-controller/shared/loading/loadingModule';
|
|
11
|
+
import { CdrConfigComponent } from './cdr-config.component';
|
|
12
|
+
import { CdrConfigService } from './cdr-browser.service';
|
|
13
|
+
import * as i0 from "@angular/core";
|
|
14
|
+
export class CdrConfigMoudule {
|
|
15
|
+
}
|
|
16
|
+
CdrConfigMoudule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CdrConfigMoudule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
17
|
+
CdrConfigMoudule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: CdrConfigMoudule, declarations: [CdrConfigComponent], imports: [LoadingModule,
|
|
18
|
+
CommonModule,
|
|
19
|
+
DevExtremeModule,
|
|
20
|
+
DxButtonModule,
|
|
21
|
+
DxCheckBoxModule,
|
|
22
|
+
DxNumberBoxModule,
|
|
23
|
+
DxDataGridModule,
|
|
24
|
+
DxDropDownBoxModule,
|
|
25
|
+
DxTreeViewModule,
|
|
26
|
+
DxScrollViewModule,
|
|
27
|
+
DxFormModule,
|
|
28
|
+
DxAccordionModule,
|
|
29
|
+
FormsModule,
|
|
30
|
+
DxTagBoxModule,
|
|
31
|
+
ReactiveFormsModule,
|
|
32
|
+
MatIconModule,
|
|
33
|
+
DxHtmlEditorModule,
|
|
34
|
+
DxBulletModule,
|
|
35
|
+
DxChartModule,
|
|
36
|
+
DxDateBoxModule,
|
|
37
|
+
DxLoadPanelModule,
|
|
38
|
+
DxLookupModule,
|
|
39
|
+
DxPivotGridModule,
|
|
40
|
+
DxTemplateModule,
|
|
41
|
+
DxTextAreaModule,
|
|
42
|
+
DxValidationSummaryModule,
|
|
43
|
+
DxValidatorModule,
|
|
44
|
+
DxCalendarModule,
|
|
45
|
+
DxTooltipModule,
|
|
46
|
+
DxContextMenuModule,
|
|
47
|
+
DxLoadIndicatorModule,
|
|
48
|
+
DxPieChartModule,
|
|
49
|
+
MatTooltipModule,
|
|
50
|
+
DxPopupModule, DxSelectBoxModule, DxTextBoxModule, DxTreeViewModule,
|
|
51
|
+
MatButtonModule,
|
|
52
|
+
MatDividerModule,
|
|
53
|
+
MatMenuModule,
|
|
54
|
+
MatIconModule,
|
|
55
|
+
LoadingModule], exports: [CdrConfigComponent] });
|
|
56
|
+
CdrConfigMoudule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CdrConfigMoudule, providers: [CdrConfigService], imports: [LoadingModule,
|
|
57
|
+
CommonModule,
|
|
58
|
+
DevExtremeModule,
|
|
59
|
+
DxButtonModule,
|
|
60
|
+
DxCheckBoxModule,
|
|
61
|
+
DxNumberBoxModule,
|
|
62
|
+
DxDataGridModule,
|
|
63
|
+
DxDropDownBoxModule,
|
|
64
|
+
DxTreeViewModule,
|
|
65
|
+
DxScrollViewModule,
|
|
66
|
+
DxFormModule,
|
|
67
|
+
DxAccordionModule,
|
|
68
|
+
FormsModule,
|
|
69
|
+
DxTagBoxModule,
|
|
70
|
+
ReactiveFormsModule,
|
|
71
|
+
MatIconModule,
|
|
72
|
+
DxHtmlEditorModule,
|
|
73
|
+
DxBulletModule,
|
|
74
|
+
DxChartModule,
|
|
75
|
+
DxDateBoxModule,
|
|
76
|
+
DxLoadPanelModule,
|
|
77
|
+
DxLookupModule,
|
|
78
|
+
DxPivotGridModule,
|
|
79
|
+
DxTemplateModule,
|
|
80
|
+
DxTextAreaModule,
|
|
81
|
+
DxValidationSummaryModule,
|
|
82
|
+
DxValidatorModule,
|
|
83
|
+
DxCalendarModule,
|
|
84
|
+
DxTooltipModule,
|
|
85
|
+
DxContextMenuModule,
|
|
86
|
+
DxLoadIndicatorModule,
|
|
87
|
+
DxPieChartModule,
|
|
88
|
+
MatTooltipModule,
|
|
89
|
+
DxPopupModule, DxSelectBoxModule, DxTextBoxModule, DxTreeViewModule,
|
|
90
|
+
MatButtonModule,
|
|
91
|
+
MatDividerModule,
|
|
92
|
+
MatMenuModule,
|
|
93
|
+
MatIconModule,
|
|
94
|
+
LoadingModule] });
|
|
95
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CdrConfigMoudule, decorators: [{
|
|
96
|
+
type: NgModule,
|
|
97
|
+
args: [{
|
|
98
|
+
declarations: [CdrConfigComponent],
|
|
99
|
+
imports: [
|
|
100
|
+
LoadingModule,
|
|
101
|
+
CommonModule,
|
|
102
|
+
DevExtremeModule,
|
|
103
|
+
DxButtonModule,
|
|
104
|
+
DxCheckBoxModule,
|
|
105
|
+
DxNumberBoxModule,
|
|
106
|
+
DxDataGridModule,
|
|
107
|
+
DxDropDownBoxModule,
|
|
108
|
+
DxTreeViewModule,
|
|
109
|
+
DxScrollViewModule,
|
|
110
|
+
DxFormModule,
|
|
111
|
+
DxAccordionModule,
|
|
112
|
+
FormsModule,
|
|
113
|
+
DxTagBoxModule,
|
|
114
|
+
ReactiveFormsModule,
|
|
115
|
+
MatIconModule,
|
|
116
|
+
DxHtmlEditorModule,
|
|
117
|
+
DxBulletModule,
|
|
118
|
+
DxChartModule,
|
|
119
|
+
DxDateBoxModule,
|
|
120
|
+
DxLoadPanelModule,
|
|
121
|
+
DxLookupModule,
|
|
122
|
+
DxPivotGridModule,
|
|
123
|
+
DxTemplateModule,
|
|
124
|
+
DxTextAreaModule,
|
|
125
|
+
DxValidationSummaryModule,
|
|
126
|
+
DxValidatorModule,
|
|
127
|
+
DxCalendarModule,
|
|
128
|
+
DxTooltipModule,
|
|
129
|
+
DxContextMenuModule,
|
|
130
|
+
DxLoadIndicatorModule,
|
|
131
|
+
DxPieChartModule,
|
|
132
|
+
MatTooltipModule,
|
|
133
|
+
DxPopupModule, DxSelectBoxModule, DxTextBoxModule, DxTreeViewModule,
|
|
134
|
+
MatButtonModule,
|
|
135
|
+
MatDividerModule,
|
|
136
|
+
MatMenuModule,
|
|
137
|
+
MatIconModule,
|
|
138
|
+
LoadingModule
|
|
139
|
+
],
|
|
140
|
+
exports: [CdrConfigComponent],
|
|
141
|
+
providers: [CdrConfigService],
|
|
142
|
+
}]
|
|
143
|
+
}] });
|
|
144
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RyQ29uZmlnLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvdGVtcGxhdGUtbW9kdWxlL2NkckNvbmZpZ01vZHVsZS9jZHJDb25maWcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRy9DLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLGNBQWMsRUFDZCxnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUNuQixZQUFZLEVBQ1osa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNqQixhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLGNBQWMsRUFDZCxlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZCxhQUFhLEVBQ2IsZUFBZSxFQUNmLGlCQUFpQixFQUNqQixjQUFjLEVBQ2QsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIseUJBQXlCLEVBQ3pCLGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDckIsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUVuQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FB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QixhQUFhLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLGdCQUFnQjt3QkFDbkUsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsYUFBYTt3QkFDYixhQUFhO3FCQUNkO29CQUNELE9BQU8sRUFBRSxDQUFDLGtCQUFrQixDQUFDO29CQUM3QixTQUFTLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztpQkFDOUIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBleGNlcHRpb24tb3BlcmF0aW9uLm1vZHVsZS50c1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cblxuaW1wb3J0IHtcbiAgRGV2RXh0cmVtZU1vZHVsZSxcbiAgRHhBY2NvcmRpb25Nb2R1bGUsXG4gIER4QnV0dG9uTW9kdWxlLFxuICBEeENoZWNrQm94TW9kdWxlLFxuICBEeERhdGFHcmlkTW9kdWxlLFxuICBEeERyb3BEb3duQm94TW9kdWxlLFxuICBEeEZvcm1Nb2R1bGUsXG4gIER4SHRtbEVkaXRvck1vZHVsZSxcbiAgRHhOdW1iZXJCb3hNb2R1bGUsXG4gIER4UG9wdXBNb2R1bGUsXG4gIER4U2VsZWN0Qm94TW9kdWxlLFxuICBEeFRhZ0JveE1vZHVsZSxcbiAgRHhUZXh0Qm94TW9kdWxlLFxuICBEeFRyZWVWaWV3TW9kdWxlLFxuICBEeEJ1bGxldE1vZHVsZSxcbiAgRHhDaGFydE1vZHVsZSxcbiAgRHhEYXRlQm94TW9kdWxlLFxuICBEeExvYWRQYW5lbE1vZHVsZSxcbiAgRHhMb29rdXBNb2R1bGUsXG4gIER4UGl2b3RHcmlkTW9kdWxlLFxuICBEeFRlbXBsYXRlTW9kdWxlLFxuICBEeFRleHRBcmVhTW9kdWxlLFxuICBEeFZhbGlkYXRpb25TdW1tYXJ5TW9kdWxlLFxuICBEeFZhbGlkYXRvck1vZHVsZSxcbiAgRHhDYWxlbmRhck1vZHVsZSxcbiAgRHhUb29sdGlwTW9kdWxlLFxuICBEeENvbnRleHRNZW51TW9kdWxlLFxuICBEeExvYWRJbmRpY2F0b3JNb2R1bGUsXG4gIER4UGllQ2hhcnRNb2R1bGUsXG4gIER4U2Nyb2xsVmlld01vZHVsZVxuXG59IGZyb20gXCJkZXZleHRyZW1lLWFuZ3VsYXJcIjtcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXREaXZpZGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGl2aWRlcic7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IExvYWRpbmdNb2R1bGUgfSBmcm9tICcuLi8uLi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3NoYXJlZC9sb2FkaW5nL2xvYWRpbmdNb2R1bGUnO1xuaW1wb3J0IHsgQ2RyQ29uZmlnQ29tcG9uZW50IH0gZnJvbSAnLi9jZHItY29uZmlnLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDZHJDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9jZHItYnJvd3Nlci5zZXJ2aWNlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbQ2RyQ29uZmlnQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW1xuICAgIExvYWRpbmdNb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIERldkV4dHJlbWVNb2R1bGUsXG4gICAgRHhCdXR0b25Nb2R1bGUsXG4gICAgRHhDaGVja0JveE1vZHVsZSxcbiAgICBEeE51bWJlckJveE1vZHVsZSxcbiAgICBEeERhdGFHcmlkTW9kdWxlLFxuICAgIER4RHJvcERvd25Cb3hNb2R1bGUsXG4gICAgRHhUcmVlVmlld01vZHVsZSxcbiAgICBEeFNjcm9sbFZpZXdNb2R1bGUsXG4gICAgRHhGb3JtTW9kdWxlLFxuICAgIER4QWNjb3JkaW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIER4VGFnQm94TW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBEeEh0bWxFZGl0b3JNb2R1bGUsXG4gICAgRHhCdWxsZXRNb2R1bGUsXG4gICAgRHhDaGFydE1vZHVsZSxcbiAgICBEeERhdGVCb3hNb2R1bGUsXG4gICAgRHhMb2FkUGFuZWxNb2R1bGUsXG4gICAgRHhMb29rdXBNb2R1bGUsXG4gICAgRHhQaXZvdEdyaWRNb2R1bGUsXG4gICAgRHhUZW1wbGF0ZU1vZHVsZSxcbiAgICBEeFRleHRBcmVhTW9kdWxlLFxuICAgIER4VmFsaWRhdGlvblN1bW1hcnlNb2R1bGUsXG4gICAgRHhWYWxpZGF0b3JNb2R1bGUsXG4gICAgRHhDYWxlbmRhck1vZHVsZSxcbiAgICBEeFRvb2x0aXBNb2R1bGUsXG4gICAgRHhDb250ZXh0TWVudU1vZHVsZSxcbiAgICBEeExvYWRJbmRpY2F0b3JNb2R1bGUsXG4gICAgRHhQaWVDaGFydE1vZHVsZSxcbiAgICAvLyBTdHJ1Y3R1cmVLcGlNb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBEeFBvcHVwTW9kdWxlLCBEeFNlbGVjdEJveE1vZHVsZSwgRHhUZXh0Qm94TW9kdWxlLCBEeFRyZWVWaWV3TW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXREaXZpZGVyTW9kdWxlLFxuICAgIE1hdE1lbnVNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBMb2FkaW5nTW9kdWxlXG4gIF0sXG4gIGV4cG9ydHM6IFtDZHJDb25maWdDb21wb25lbnRdLFxuICBwcm92aWRlcnM6IFtDZHJDb25maWdTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2RyQ29uZmlnTW91ZHVsZSB7fSJdfQ==
|