ngx-rs-ant 0.9.1 → 0.9.2
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/data-grid/data-grid.component.d.ts +0 -1
- package/data-grid/data-grid.service.d.ts +5 -0
- package/esm2020/data-grid/data-grid.component.mjs +99 -21
- package/esm2020/data-grid/data-grid.service.mjs +82 -1
- package/fesm2015/ngx-rs-ant.mjs +180 -20
- package/fesm2015/ngx-rs-ant.mjs.map +1 -1
- package/fesm2020/ngx-rs-ant.mjs +180 -20
- package/fesm2020/ngx-rs-ant.mjs.map +1 -1
- package/package.json +3 -3
|
@@ -21,7 +21,6 @@ export declare class DataGridComponent implements OnInit {
|
|
|
21
21
|
ngOnInit(): void;
|
|
22
22
|
reload(): void;
|
|
23
23
|
refresh(callback?: any): void;
|
|
24
|
-
getSelectedRowKeys(): any[] & Promise<any[]>;
|
|
25
24
|
static ɵfac: i0.ɵɵFactoryDeclaration<DataGridComponent, never>;
|
|
26
25
|
static ɵcmp: i0.ɵɵComponentDeclaration<DataGridComponent, "rs-data-grid", never, { "tenant": "tenant"; "className": "className"; "view": "view"; "filter": "filter"; "enableMasterDetail": "enableMasterDetail"; "customColumnFn": "customColumnFn"; }, {}, ["masterDetailTemplate"], never, false, never>;
|
|
27
26
|
}
|
|
@@ -9,6 +9,11 @@ export declare class DataGridService {
|
|
|
9
9
|
data: any;
|
|
10
10
|
totalCount: any;
|
|
11
11
|
}>;
|
|
12
|
+
getConstraintEntries(name: string): import("rxjs").Observable<any>;
|
|
13
|
+
getUserColumnDataSource(className: any, view: any, field: any): import("rxjs").Observable<any>;
|
|
14
|
+
getUnitColumnDataSource(className: any, view: any, field: any): import("rxjs").Observable<any>;
|
|
15
|
+
getConstraintColumnDataSource(className: any, view: any, field: any, constraintName: any): import("rxjs").Observable<any>;
|
|
16
|
+
getColumnDataSource(className: any, view: any, field: any): import("rxjs").Observable<any>;
|
|
12
17
|
static ɵfac: i0.ɵɵFactoryDeclaration<DataGridService, never>;
|
|
13
18
|
static ɵprov: i0.ɵɵInjectableDeclaration<DataGridService>;
|
|
14
19
|
}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { Component, ContentChild, Inject, Input, LOCALE_ID, ViewChild } from '@angular/core';
|
|
2
|
-
import CustomStore from "devextreme/data/custom_store";
|
|
3
2
|
import { lastValueFrom } from "rxjs";
|
|
4
3
|
import { DxDataGridComponent } from "devextreme-angular";
|
|
5
4
|
import { DataGridService } from "./data-grid.service";
|
|
6
5
|
import { MasterDetailTemplateDirective } from "./master-detail-template.directive";
|
|
7
|
-
import
|
|
6
|
+
import CustomStore from 'devextreme/data/custom_store';
|
|
8
7
|
import * as i0 from "@angular/core";
|
|
9
8
|
import * as i1 from "./data-grid.service";
|
|
10
9
|
import * as i2 from "@angular/common";
|
|
@@ -66,6 +65,7 @@ export class DataGridComponent {
|
|
|
66
65
|
caption: field.caption,
|
|
67
66
|
dataType: 'string',
|
|
68
67
|
alignment: 'left',
|
|
68
|
+
allowHeaderFiltering: false,
|
|
69
69
|
filterOperations: [],
|
|
70
70
|
visible: field.visible
|
|
71
71
|
});
|
|
@@ -76,6 +76,10 @@ export class DataGridComponent {
|
|
|
76
76
|
caption: field.caption,
|
|
77
77
|
dataType: this.typeMap[field.dataType].dataType,
|
|
78
78
|
alignment: 'left',
|
|
79
|
+
allowHeaderFiltering: true,
|
|
80
|
+
headerFilter: {
|
|
81
|
+
allowSelectAll: false
|
|
82
|
+
},
|
|
79
83
|
filterOperations: this.typeMap[field.dataType].filterOperations,
|
|
80
84
|
format: this.typeMap[field.dataType].format,
|
|
81
85
|
visible: field.visible
|
|
@@ -83,31 +87,72 @@ export class DataGridComponent {
|
|
|
83
87
|
this.columns.push(column);
|
|
84
88
|
switch (field.dataType) {
|
|
85
89
|
case 'BOOLEAN':
|
|
90
|
+
column.allowHeaderFiltering = false;
|
|
86
91
|
column.alignment = 'center';
|
|
87
92
|
column.trueText = '是';
|
|
88
93
|
column.falseText = '否';
|
|
89
94
|
break;
|
|
90
95
|
case 'DATE':
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
96
|
+
case 'DATETIME':
|
|
97
|
+
column.headerFilter.dataSource = (options) => {
|
|
98
|
+
console.log(options);
|
|
99
|
+
options.dataSource.group.length = 3;
|
|
100
|
+
options.dataSource.postProcess = (data) => {
|
|
101
|
+
data.forEach((year) => {
|
|
102
|
+
year.text = year.key + '年';
|
|
103
|
+
year.items.forEach((month) => {
|
|
104
|
+
month.text = month.key + '月';
|
|
105
|
+
month.items.forEach((day) => {
|
|
106
|
+
day.text = day.key + '日';
|
|
107
|
+
day.items = [];
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
data.unshift({
|
|
112
|
+
key: '',
|
|
113
|
+
value: null,
|
|
114
|
+
text: '(空白)'
|
|
115
|
+
});
|
|
116
|
+
};
|
|
100
117
|
};
|
|
101
118
|
break;
|
|
102
|
-
case 'DATETIME':
|
|
103
119
|
case 'DOUBLE':
|
|
104
120
|
case 'INTEGER':
|
|
121
|
+
column.headerFilter.dataSource = (options) => {
|
|
122
|
+
options.dataSource.postProcess = (data) => {
|
|
123
|
+
data.unshift({
|
|
124
|
+
key: '',
|
|
125
|
+
value: null,
|
|
126
|
+
text: '(空白)'
|
|
127
|
+
});
|
|
128
|
+
data.push({
|
|
129
|
+
key: '__',
|
|
130
|
+
value: '__',
|
|
131
|
+
text: '__',
|
|
132
|
+
visible: false
|
|
133
|
+
});
|
|
134
|
+
};
|
|
135
|
+
};
|
|
105
136
|
break;
|
|
106
137
|
case 'STRING':
|
|
107
138
|
switch (field.config.constraint.type) {
|
|
108
139
|
case 'USER':
|
|
109
140
|
column.dataField = '__' + field.name + '\u0001User_displayName';
|
|
110
|
-
column.
|
|
141
|
+
column.headerFilter.dataSource = {
|
|
142
|
+
store: new CustomStore({
|
|
143
|
+
load: () => {
|
|
144
|
+
return lastValueFrom(this.service.getUserColumnDataSource(this.className, this.view, field.name));
|
|
145
|
+
}
|
|
146
|
+
}),
|
|
147
|
+
paginate: true
|
|
148
|
+
};
|
|
149
|
+
column.calculateFilterExpression = function (filterValue, selectedFilterOperation, target) {
|
|
150
|
+
if (target === 'headerFilter') {
|
|
151
|
+
if (this.defaultCalculateFilterExpression) {
|
|
152
|
+
this.dataField = '__' + field.name + '\u0001User_username';
|
|
153
|
+
return this.defaultCalculateFilterExpression.apply(this, [filterValue, selectedFilterOperation, target]);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
111
156
|
return [
|
|
112
157
|
[column.name, selectedFilterOperation, filterValue],
|
|
113
158
|
'or',
|
|
@@ -117,7 +162,21 @@ export class DataGridComponent {
|
|
|
117
162
|
break;
|
|
118
163
|
case 'UNIT':
|
|
119
164
|
column.dataField = '__' + field.name + '\u0001Role_displayName';
|
|
120
|
-
column.
|
|
165
|
+
column.headerFilter.dataSource = {
|
|
166
|
+
store: new CustomStore({
|
|
167
|
+
load: () => {
|
|
168
|
+
return lastValueFrom(this.service.getUnitColumnDataSource(this.className, this.view, field.name));
|
|
169
|
+
}
|
|
170
|
+
}),
|
|
171
|
+
paginate: true
|
|
172
|
+
};
|
|
173
|
+
column.calculateFilterExpression = function (filterValue, selectedFilterOperation, target) {
|
|
174
|
+
if (target === 'headerFilter') {
|
|
175
|
+
if (this.defaultCalculateFilterExpression) {
|
|
176
|
+
this.dataField = '__' + field.name + '\u0001Role_name';
|
|
177
|
+
return this.defaultCalculateFilterExpression.apply(this, [filterValue, selectedFilterOperation, target]);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
121
180
|
return [
|
|
122
181
|
[column.name, selectedFilterOperation, filterValue],
|
|
123
182
|
'or',
|
|
@@ -126,8 +185,24 @@ export class DataGridComponent {
|
|
|
126
185
|
};
|
|
127
186
|
break;
|
|
128
187
|
case 'CUSTOM':
|
|
188
|
+
column.headerFilter.dataSource = {
|
|
189
|
+
store: new CustomStore({
|
|
190
|
+
load: () => {
|
|
191
|
+
return lastValueFrom(this.service.getConstraintColumnDataSource(this.className, this.view, field.name, field.config.constraint.name));
|
|
192
|
+
}
|
|
193
|
+
}),
|
|
194
|
+
paginate: true
|
|
195
|
+
};
|
|
196
|
+
column.filterOperations = ['='];
|
|
129
197
|
column.lookup = {
|
|
130
|
-
dataSource:
|
|
198
|
+
dataSource: {
|
|
199
|
+
store: new CustomStore({
|
|
200
|
+
load: () => {
|
|
201
|
+
return lastValueFrom(this.service.getConstraintEntries(field.config.constraint.name));
|
|
202
|
+
}
|
|
203
|
+
}),
|
|
204
|
+
paginate: true
|
|
205
|
+
},
|
|
131
206
|
valueExpr: 'store',
|
|
132
207
|
displayExpr: 'display'
|
|
133
208
|
};
|
|
@@ -145,6 +220,7 @@ export class DataGridComponent {
|
|
|
145
220
|
caption: field.caption,
|
|
146
221
|
dataType: 'string',
|
|
147
222
|
alignment: 'left',
|
|
223
|
+
allowHeaderFiltering: false,
|
|
148
224
|
filterOperations: ['='],
|
|
149
225
|
visible: field.visible
|
|
150
226
|
});
|
|
@@ -160,6 +236,11 @@ export class DataGridComponent {
|
|
|
160
236
|
return lastValueFrom(this.service.getOne(this.tenant, this.className, key));
|
|
161
237
|
},
|
|
162
238
|
load: (loadOptions) => {
|
|
239
|
+
if (loadOptions.dataField) {
|
|
240
|
+
// 未重写headerFilter的dataSource时,headerFilter会调用load方法加载筛选树,重写该方法查询该表所有数据
|
|
241
|
+
// 该方式存在风险,无法识别一定是通过headerFilter过滤才存在dataField参数
|
|
242
|
+
return lastValueFrom(this.service.getColumnDataSource(this.className, this.view, loadOptions.dataField));
|
|
243
|
+
}
|
|
163
244
|
let params = '?';
|
|
164
245
|
if (loadOptions.skip || loadOptions.take) {
|
|
165
246
|
params += 'offset=' + loadOptions.skip;
|
|
@@ -209,15 +290,12 @@ export class DataGridComponent {
|
|
|
209
290
|
}
|
|
210
291
|
});
|
|
211
292
|
}
|
|
212
|
-
getSelectedRowKeys() {
|
|
213
|
-
return this.dxDataGrid.instance.getSelectedRowKeys();
|
|
214
|
-
}
|
|
215
293
|
}
|
|
216
294
|
DataGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DataGridComponent, deps: [{ token: i1.DataGridService }, { token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Component });
|
|
217
|
-
DataGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DataGridComponent, selector: "rs-data-grid", inputs: { tenant: "tenant", className: "className", view: "view", filter: "filter", enableMasterDetail: "enableMasterDetail", customColumnFn: "customColumnFn" }, providers: [DataGridService], queries: [{ propertyName: "masterDetailTemplate", first: true, predicate: MasterDetailTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "dxDataGrid", first: true, predicate: DxDataGridComponent, descendants: true, static: true }], ngImport: i0, template: "<dx-data-grid [dataSource]=\"dataSource\"\n [columns]=\"columns\"\n [showBorders]=\"true\"\n [showColumnLines]=\"true\"\n [showRowLines]=\"true\"\n [hoverStateEnabled]=\"true\"\n [rowAlternationEnabled]=\"true\"\n [columnAutoWidth]=\"true\"\n [allowColumnResizing]=\"true\"\n columnResizingMode=\"widget\"\n dateSerializationFormat=\"yyyy/MM/dd HH:mm:ss\"\n (onRowExpanding)=\"$event.component.collapseAll(-1)\"\n>\n <dxo-sorting mode=\"multiple\"></dxo-sorting>\n <dxo-selection mode=\"multiple\" selectAllMode=\"page\"></dxo-selection>\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\n <dxo-remote-operations [filtering]=\"true\"\n [sorting]=\"true\"\n [paging]=\"true\">\n </dxo-remote-operations>\n <dxo-master-detail [enabled]=\"enableMasterDetail\" template=\"masterDetailTemplate\"></dxo-master-detail>\n <dxo-paging [pageSize]=\"15\"></dxo-paging>\n <dxo-pager [visible]=\"true\"\n [showInfo]=\"true\"\n infoText=\"\u7B2C{0}\u9875\uFF0C\u5171{1}\u9875\uFF08\u5171{2}\u4E2A\u9879\u76EE\uFF09\"\n [showPageSizeSelector]=\"true\"\n [allowedPageSizes]=\"[15, 30, 50]\"\n ></dxo-pager>\n <dxo-scrolling showScrollbar=\"always\"></dxo-scrolling>\n <dxo-export [allowExportSelectedData]=\"true\"\n [fileName]=\"className\"></dxo-export>\n <div *dxTemplate=\"let rowInfo of 'masterDetailTemplate'\">\n <ng-container [ngTemplateOutlet]=\"masterDetailTemplate.templateRef\"\n [ngTemplateOutletContext]=\"{$implicit: rowInfo}\"></ng-container>\n </div>\n <div *dxTemplate=\"let cellInfo of 'rowIndexTemplate'\">\n {{cellInfo.rowIndex + 1}}\n </div>\n <div *dxTemplate=\"let cellInfo of 'textCellTemplate'\">\n <div dPopover #textDiv\n [content]=\"cellInfo.value\"\n [controlled]=\"textDiv.clientWidth < textDiv.scrollWidth\"\n [popMaxWidth]=\"240\"\n [popoverStyle]=\"{ backgroundColor: '#fff', color: 'rgb(51, 51, 51)' }\"\n style=\"max-width: 240px; text-overflow: ellipsis; overflow: hidden;\"\n [ngStyle]=\"{ cursor: textDiv.clientWidth < textDiv.scrollWidth ? 'pointer': 'default'}\">{{cellInfo.value}}</div>\n </div>\n</dx-data-grid>\n", styles: [":host{display:flex;flex-flow:column nowrap}:host dx-data-grid{flex:auto;height:0}\n"], dependencies: [{ kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i3.DxDataGridComponent, selector: "dx-data-grid", inputs: ["accessKey", "activeStateEnabled", "allowColumnReordering", "allowColumnResizing", "autoNavigateToFocusedRow", "cacheEnabled", "cellHintEnabled", "columnAutoWidth", "columnChooser", "columnFixing", "columnHidingEnabled", "columnMinWidth", "columnResizingMode", "columns", "columnWidth", "customizeColumns", "dataRowTemplate", "dataSource", "dateSerializationFormat", "disabled", "editing", "elementAttr", "errorRowEnabled", "export", "filterBuilder", "filterBuilderPopup", "filterPanel", "filterRow", "filterSyncEnabled", "filterValue", "focusedColumnIndex", "focusedRowEnabled", "focusedRowIndex", "focusedRowKey", "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", "onExporting", "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", "dataRowTemplateChange", "dataSourceChange", "dateSerializationFormatChange", "disabledChange", "editingChange", "elementAttrChange", "errorRowEnabledChange", "exportChange", "filterBuilderChange", "filterBuilderPopupChange", "filterPanelChange", "filterRowChange", "filterSyncEnabledChange", "filterValueChange", "focusedColumnIndexChange", "focusedRowEnabledChange", "focusedRowIndexChange", "focusedRowKeyChange", "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: i4.DxoExportComponent, selector: "dxo-export", inputs: ["backgroundColor", "enabled", "fileName", "formats", "margin", "printingEnabled", "svgToCanvas", "allowExportSelectedData", "texts"] }, { kind: "component", type: i4.DxoFilterRowComponent, selector: "dxo-filter-row", inputs: ["applyFilter", "applyFilterText", "betweenEndText", "betweenStartText", "operationDescriptions", "resetOperationText", "showAllText", "showOperationChooser", "visible"] }, { kind: "component", type: i4.DxoMasterDetailComponent, selector: "dxo-master-detail", inputs: ["autoExpandAll", "enabled", "template"] }, { kind: "component", type: i4.DxoPagerComponent, selector: "dxo-pager", inputs: ["allowedPageSizes", "displayMode", "infoText", "label", "showInfo", "showNavigationButtons", "showPageSizeSelector", "visible"] }, { kind: "component", type: i4.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "component", type: i4.DxoRemoteOperationsComponent, selector: "dxo-remote-operations", inputs: ["filtering", "grouping", "groupPaging", "paging", "sorting", "summary"] }, { kind: "component", type: i4.DxoScrollingComponent, selector: "dxo-scrolling", inputs: ["columnRenderingMode", "mode", "preloadEnabled", "renderAsync", "rowRenderingMode", "scrollByContent", "scrollByThumb", "showScrollbar", "useNative"] }, { kind: "component", type: i4.DxoSelectionComponent, selector: "dxo-selection", inputs: ["allowSelectAll", "deferred", "mode", "selectAllMode", "showCheckBoxesMode", "recursive"] }, { kind: "component", type: i4.DxoSortingComponent, selector: "dxo-sorting", inputs: ["ascendingText", "clearText", "descendingText", "mode", "showSortIndexes"] }, { kind: "directive", type: i5.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "directive", type: i6.PopoverDirective, selector: "[dPopover]", inputs: ["content", "controlled", "position", "showAnimation", "showAnimate", "scrollElement", "appendToBody", "zIndex", "popType", "popMaxWidth", "trigger", "hoverToContent", "hoverDelayTime", "popoverStyle", "mouseEnterDelay", "mouseLeaveDelay", "visible"], exportAs: ["dPopover"] }] });
|
|
295
|
+
DataGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DataGridComponent, selector: "rs-data-grid", inputs: { tenant: "tenant", className: "className", view: "view", filter: "filter", enableMasterDetail: "enableMasterDetail", customColumnFn: "customColumnFn" }, providers: [DataGridService], queries: [{ propertyName: "masterDetailTemplate", first: true, predicate: MasterDetailTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "dxDataGrid", first: true, predicate: DxDataGridComponent, descendants: true, static: true }], ngImport: i0, template: "<dx-data-grid [dataSource]=\"dataSource\"\n [columns]=\"columns\"\n [syncLookupFilterValues]=\"false\"\n [showBorders]=\"true\"\n [showColumnLines]=\"true\"\n [showRowLines]=\"true\"\n [hoverStateEnabled]=\"true\"\n [rowAlternationEnabled]=\"true\"\n [columnAutoWidth]=\"true\"\n [allowColumnResizing]=\"true\"\n columnResizingMode=\"widget\"\n dateSerializationFormat=\"yyyy/MM/dd HH:mm:ss\"\n (onRowExpanding)=\"$event.component.collapseAll(-1)\"\n>\n <dxo-sorting mode=\"multiple\"></dxo-sorting>\n <dxo-selection mode=\"multiple\" selectAllMode=\"page\"></dxo-selection>\n <dxo-header-filter [visible]=\"true\">\n <dxo-search [enabled]=\"true\"></dxo-search>\n <dxo-texts [ok]=\"'\u786E\u5B9A'\"></dxo-texts>\n </dxo-header-filter>\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\n <dxo-remote-operations [filtering]=\"true\"\n [sorting]=\"true\"\n [paging]=\"true\">\n </dxo-remote-operations>\n <dxo-master-detail [enabled]=\"enableMasterDetail\" template=\"masterDetailTemplate\"></dxo-master-detail>\n <dxo-paging [pageSize]=\"15\"></dxo-paging>\n <dxo-pager [visible]=\"true\"\n [showInfo]=\"true\"\n infoText=\"\u7B2C{0}\u9875\uFF0C\u5171{1}\u9875\uFF08\u5171{2}\u4E2A\u9879\u76EE\uFF09\"\n [showPageSizeSelector]=\"true\"\n [allowedPageSizes]=\"[15, 30, 50]\"\n ></dxo-pager>\n <dxo-scrolling showScrollbar=\"always\"></dxo-scrolling>\n <dxo-export [allowExportSelectedData]=\"true\"\n [fileName]=\"className\"></dxo-export>\n <div *dxTemplate=\"let rowInfo of 'masterDetailTemplate'\">\n <ng-container [ngTemplateOutlet]=\"masterDetailTemplate.templateRef\"\n [ngTemplateOutletContext]=\"{$implicit: rowInfo}\"></ng-container>\n </div>\n <div *dxTemplate=\"let cellInfo of 'rowIndexTemplate'\">\n {{cellInfo.rowIndex + 1}}\n </div>\n <div *dxTemplate=\"let cellInfo of 'textCellTemplate'\">\n <div dPopover #textDiv\n [content]=\"cellInfo.value\"\n [controlled]=\"textDiv.clientWidth < textDiv.scrollWidth\"\n [popMaxWidth]=\"240\"\n [popoverStyle]=\"{ backgroundColor: '#fff', color: 'rgb(51, 51, 51)' }\"\n style=\"max-width: 240px; text-overflow: ellipsis; overflow: hidden;\"\n [ngStyle]=\"{ cursor: textDiv.clientWidth < textDiv.scrollWidth ? 'pointer': 'default'}\">{{cellInfo.value}}</div>\n </div>\n</dx-data-grid>\n", styles: [":host{display:flex;flex-flow:column nowrap}:host dx-data-grid{flex:auto;height:0}\n"], dependencies: [{ kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i3.DxDataGridComponent, selector: "dx-data-grid", inputs: ["accessKey", "activeStateEnabled", "allowColumnReordering", "allowColumnResizing", "autoNavigateToFocusedRow", "cacheEnabled", "cellHintEnabled", "columnAutoWidth", "columnChooser", "columnFixing", "columnHidingEnabled", "columnMinWidth", "columnResizingMode", "columns", "columnWidth", "customizeColumns", "dataRowTemplate", "dataSource", "dateSerializationFormat", "disabled", "editing", "elementAttr", "errorRowEnabled", "export", "filterBuilder", "filterBuilderPopup", "filterPanel", "filterRow", "filterSyncEnabled", "filterValue", "focusedColumnIndex", "focusedRowEnabled", "focusedRowIndex", "focusedRowKey", "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", "onExporting", "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", "dataRowTemplateChange", "dataSourceChange", "dateSerializationFormatChange", "disabledChange", "editingChange", "elementAttrChange", "errorRowEnabledChange", "exportChange", "filterBuilderChange", "filterBuilderPopupChange", "filterPanelChange", "filterRowChange", "filterSyncEnabledChange", "filterValueChange", "focusedColumnIndexChange", "focusedRowEnabledChange", "focusedRowIndexChange", "focusedRowKeyChange", "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: i4.DxoSearchComponent, selector: "dxo-search", inputs: ["editorOptions", "enabled", "timeout", "mode", "searchExpr"] }, { kind: "component", type: i4.DxoSelectionComponent, selector: "dxo-selection", inputs: ["allowSelectAll", "recursive", "selectByClick", "deferred", "mode", "selectAllMode", "showCheckBoxesMode"] }, { kind: "component", type: i4.DxoTextsComponent, selector: "dxo-texts", inputs: ["fix", "leftPosition", "rightPosition", "unfix", "addRow", "cancelAllChanges", "cancelRowChanges", "confirmDeleteMessage", "confirmDeleteTitle", "deleteRow", "editRow", "saveAllChanges", "saveRowChanges", "undeleteRow", "validationCancelChanges", "exportAll", "exportSelectedRows", "exportTo", "clearFilter", "createFilter", "filterEnabledHint", "groupByThisColumn", "groupContinuedMessage", "groupContinuesMessage", "ungroup", "ungroupAll", "cancel", "emptyValue", "ok", "avg", "avgOtherColumn", "count", "max", "maxOtherColumn", "min", "minOtherColumn", "sum", "sumOtherColumn", "allFields", "columnFields", "dataFields", "filterFields", "rowFields", "columnFieldArea", "dataFieldArea", "filterFieldArea", "rowFieldArea", "collapseAll", "dataNotAvailable", "expandAll", "exportToExcel", "grandTotal", "noData", "removeAllSorting", "showFieldChooser", "sortColumnBySummary", "sortRowBySummary", "total", "addRowToNode"] }, { kind: "component", type: i4.DxoHeaderFilterComponent, selector: "dxo-header-filter", inputs: ["allowSearch", "allowSelectAll", "dataSource", "groupInterval", "height", "search", "searchMode", "width", "searchTimeout", "texts", "visible", "showRelevantValues"] }, { kind: "component", type: i4.DxoExportComponent, selector: "dxo-export", inputs: ["backgroundColor", "enabled", "fileName", "formats", "margin", "printingEnabled", "svgToCanvas", "allowExportSelectedData", "texts"] }, { kind: "component", type: i4.DxoFilterRowComponent, selector: "dxo-filter-row", inputs: ["applyFilter", "applyFilterText", "betweenEndText", "betweenStartText", "operationDescriptions", "resetOperationText", "showAllText", "showOperationChooser", "visible"] }, { kind: "component", type: i4.DxoMasterDetailComponent, selector: "dxo-master-detail", inputs: ["autoExpandAll", "enabled", "template"] }, { kind: "component", type: i4.DxoPagerComponent, selector: "dxo-pager", inputs: ["allowedPageSizes", "displayMode", "infoText", "label", "showInfo", "showNavigationButtons", "showPageSizeSelector", "visible"] }, { kind: "component", type: i4.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "component", type: i4.DxoRemoteOperationsComponent, selector: "dxo-remote-operations", inputs: ["filtering", "grouping", "groupPaging", "paging", "sorting", "summary"] }, { kind: "component", type: i4.DxoScrollingComponent, selector: "dxo-scrolling", inputs: ["columnRenderingMode", "mode", "preloadEnabled", "renderAsync", "rowRenderingMode", "scrollByContent", "scrollByThumb", "showScrollbar", "useNative"] }, { kind: "component", type: i4.DxoSortingComponent, selector: "dxo-sorting", inputs: ["ascendingText", "clearText", "descendingText", "mode", "showSortIndexes"] }, { kind: "directive", type: i5.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "directive", type: i6.PopoverDirective, selector: "[dPopover]", inputs: ["content", "controlled", "position", "showAnimation", "showAnimate", "scrollElement", "appendToBody", "zIndex", "popType", "popMaxWidth", "trigger", "hoverToContent", "hoverDelayTime", "popoverStyle", "mouseEnterDelay", "mouseLeaveDelay", "visible"], exportAs: ["dPopover"] }] });
|
|
218
296
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DataGridComponent, decorators: [{
|
|
219
297
|
type: Component,
|
|
220
|
-
args: [{ selector: 'rs-data-grid', providers: [DataGridService], template: "<dx-data-grid [dataSource]=\"dataSource\"\n [columns]=\"columns\"\n [showBorders]=\"true\"\n [showColumnLines]=\"true\"\n [showRowLines]=\"true\"\n [hoverStateEnabled]=\"true\"\n [rowAlternationEnabled]=\"true\"\n [columnAutoWidth]=\"true\"\n [allowColumnResizing]=\"true\"\n columnResizingMode=\"widget\"\n dateSerializationFormat=\"yyyy/MM/dd HH:mm:ss\"\n (onRowExpanding)=\"$event.component.collapseAll(-1)\"\n>\n <dxo-sorting mode=\"multiple\"></dxo-sorting>\n <dxo-selection mode=\"multiple\" selectAllMode=\"page\"></dxo-selection>\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\n <dxo-remote-operations [filtering]=\"true\"\n [sorting]=\"true\"\n [paging]=\"true\">\n </dxo-remote-operations>\n <dxo-master-detail [enabled]=\"enableMasterDetail\" template=\"masterDetailTemplate\"></dxo-master-detail>\n <dxo-paging [pageSize]=\"15\"></dxo-paging>\n <dxo-pager [visible]=\"true\"\n [showInfo]=\"true\"\n infoText=\"\u7B2C{0}\u9875\uFF0C\u5171{1}\u9875\uFF08\u5171{2}\u4E2A\u9879\u76EE\uFF09\"\n [showPageSizeSelector]=\"true\"\n [allowedPageSizes]=\"[15, 30, 50]\"\n ></dxo-pager>\n <dxo-scrolling showScrollbar=\"always\"></dxo-scrolling>\n <dxo-export [allowExportSelectedData]=\"true\"\n [fileName]=\"className\"></dxo-export>\n <div *dxTemplate=\"let rowInfo of 'masterDetailTemplate'\">\n <ng-container [ngTemplateOutlet]=\"masterDetailTemplate.templateRef\"\n [ngTemplateOutletContext]=\"{$implicit: rowInfo}\"></ng-container>\n </div>\n <div *dxTemplate=\"let cellInfo of 'rowIndexTemplate'\">\n {{cellInfo.rowIndex + 1}}\n </div>\n <div *dxTemplate=\"let cellInfo of 'textCellTemplate'\">\n <div dPopover #textDiv\n [content]=\"cellInfo.value\"\n [controlled]=\"textDiv.clientWidth < textDiv.scrollWidth\"\n [popMaxWidth]=\"240\"\n [popoverStyle]=\"{ backgroundColor: '#fff', color: 'rgb(51, 51, 51)' }\"\n style=\"max-width: 240px; text-overflow: ellipsis; overflow: hidden;\"\n [ngStyle]=\"{ cursor: textDiv.clientWidth < textDiv.scrollWidth ? 'pointer': 'default'}\">{{cellInfo.value}}</div>\n </div>\n</dx-data-grid>\n", styles: [":host{display:flex;flex-flow:column nowrap}:host dx-data-grid{flex:auto;height:0}\n"] }]
|
|
298
|
+
args: [{ selector: 'rs-data-grid', providers: [DataGridService], template: "<dx-data-grid [dataSource]=\"dataSource\"\n [columns]=\"columns\"\n [syncLookupFilterValues]=\"false\"\n [showBorders]=\"true\"\n [showColumnLines]=\"true\"\n [showRowLines]=\"true\"\n [hoverStateEnabled]=\"true\"\n [rowAlternationEnabled]=\"true\"\n [columnAutoWidth]=\"true\"\n [allowColumnResizing]=\"true\"\n columnResizingMode=\"widget\"\n dateSerializationFormat=\"yyyy/MM/dd HH:mm:ss\"\n (onRowExpanding)=\"$event.component.collapseAll(-1)\"\n>\n <dxo-sorting mode=\"multiple\"></dxo-sorting>\n <dxo-selection mode=\"multiple\" selectAllMode=\"page\"></dxo-selection>\n <dxo-header-filter [visible]=\"true\">\n <dxo-search [enabled]=\"true\"></dxo-search>\n <dxo-texts [ok]=\"'\u786E\u5B9A'\"></dxo-texts>\n </dxo-header-filter>\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\n <dxo-remote-operations [filtering]=\"true\"\n [sorting]=\"true\"\n [paging]=\"true\">\n </dxo-remote-operations>\n <dxo-master-detail [enabled]=\"enableMasterDetail\" template=\"masterDetailTemplate\"></dxo-master-detail>\n <dxo-paging [pageSize]=\"15\"></dxo-paging>\n <dxo-pager [visible]=\"true\"\n [showInfo]=\"true\"\n infoText=\"\u7B2C{0}\u9875\uFF0C\u5171{1}\u9875\uFF08\u5171{2}\u4E2A\u9879\u76EE\uFF09\"\n [showPageSizeSelector]=\"true\"\n [allowedPageSizes]=\"[15, 30, 50]\"\n ></dxo-pager>\n <dxo-scrolling showScrollbar=\"always\"></dxo-scrolling>\n <dxo-export [allowExportSelectedData]=\"true\"\n [fileName]=\"className\"></dxo-export>\n <div *dxTemplate=\"let rowInfo of 'masterDetailTemplate'\">\n <ng-container [ngTemplateOutlet]=\"masterDetailTemplate.templateRef\"\n [ngTemplateOutletContext]=\"{$implicit: rowInfo}\"></ng-container>\n </div>\n <div *dxTemplate=\"let cellInfo of 'rowIndexTemplate'\">\n {{cellInfo.rowIndex + 1}}\n </div>\n <div *dxTemplate=\"let cellInfo of 'textCellTemplate'\">\n <div dPopover #textDiv\n [content]=\"cellInfo.value\"\n [controlled]=\"textDiv.clientWidth < textDiv.scrollWidth\"\n [popMaxWidth]=\"240\"\n [popoverStyle]=\"{ backgroundColor: '#fff', color: 'rgb(51, 51, 51)' }\"\n style=\"max-width: 240px; text-overflow: ellipsis; overflow: hidden;\"\n [ngStyle]=\"{ cursor: textDiv.clientWidth < textDiv.scrollWidth ? 'pointer': 'default'}\">{{cellInfo.value}}</div>\n </div>\n</dx-data-grid>\n", styles: [":host{display:flex;flex-flow:column nowrap}:host dx-data-grid{flex:auto;height:0}\n"] }]
|
|
221
299
|
}], ctorParameters: function () { return [{ type: i1.DataGridService }, { type: undefined, decorators: [{
|
|
222
300
|
type: Inject,
|
|
223
301
|
args: [LOCALE_ID]
|
|
@@ -240,4 +318,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
240
318
|
type: ContentChild,
|
|
241
319
|
args: [MasterDetailTemplateDirective]
|
|
242
320
|
}] } });
|
|
243
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1ncmlkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ycy1hbnQvc3JjL2RhdGEtZ3JpZC9kYXRhLWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJzLWFudC9zcmMvZGF0YS1ncmlkL2RhdGEtZ3JpZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxXQUFXLE1BQU0sOEJBQThCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNuQyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDakYsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7OztBQVEzQyxNQUFNLE9BQU8saUJBQWlCO0lBa0Q1QixZQUFvQixPQUF3QixFQUE2QixNQUFjO1FBQW5FLFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBQTZCLFdBQU0sR0FBTixNQUFNLENBQVE7UUF4Q3ZGLHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQUczQixlQUFVLEdBQVEsRUFBRSxDQUFDO1FBQ3JCLFlBQU8sR0FBVSxFQUFFLENBQUM7UUFDcEIsWUFBTyxHQUFRO1lBQ2IsTUFBTSxFQUFFO2dCQUNOLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixnQkFBZ0IsRUFBRSxDQUFDLFVBQVUsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUM7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QUFDO0lBRUQsT0FBTyxDQUFDLFFBQWM7UUFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUMzQyxJQUFJLFFBQVEsRUFBRTtnQkFDWixRQUFRLEVBQUUsQ0FBQzthQUNaO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUN2RCxDQUFDOzs4R0FqTlUsaUJBQWlCLGlEQWtEMEIsU0FBUztrR0FsRHBELGlCQUFpQix5TUFGakIsQ0FBQyxlQUFlLENBQUMsNEVBa0RkLDZCQUE2Qiw0RkFEaEMsbUJBQW1CLDhEQzdEaEMsczFFQWdEQTsyRkRsQ2EsaUJBQWlCO2tCQU43QixTQUFTOytCQUNFLGNBQWMsYUFHYixDQUFDLGVBQWUsQ0FBQzs7MEJBb0RtQixNQUFNOzJCQUFDLFNBQVM7NENBaEQvRCxNQUFNO3NCQURMLEtBQUs7Z0JBR04sU0FBUztzQkFEUixLQUFLO2dCQUdOLElBQUk7c0JBREgsS0FBSztnQkFHTixNQUFNO3NCQURMLEtBQUs7Z0JBR04sa0JBQWtCO3NCQURqQixLQUFLO2dCQUdOLGNBQWM7c0JBRGIsS0FBSztnQkFvQzBDLFVBQVU7c0JBQXpELFNBQVM7dUJBQUMsbUJBQW1CLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDO2dCQUNELG9CQUFvQjtzQkFBaEUsWUFBWTt1QkFBQyw2QkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgQ29udGVudENoaWxkLCBJbmplY3QsIElucHV0LCBMT0NBTEVfSUQsIE9uSW5pdCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBDdXN0b21TdG9yZSBmcm9tIFwiZGV2ZXh0cmVtZS9kYXRhL2N1c3RvbV9zdG9yZVwiO1xuaW1wb3J0IHtsYXN0VmFsdWVGcm9tfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtEeERhdGFHcmlkQ29tcG9uZW50fSBmcm9tIFwiZGV2ZXh0cmVtZS1hbmd1bGFyXCI7XG5pbXBvcnQge0RhdGFHcmlkU2VydmljZX0gZnJvbSBcIi4vZGF0YS1ncmlkLnNlcnZpY2VcIjtcbmltcG9ydCB7TWFzdGVyRGV0YWlsVGVtcGxhdGVEaXJlY3RpdmV9IGZyb20gXCIuL21hc3Rlci1kZXRhaWwtdGVtcGxhdGUuZGlyZWN0aXZlXCI7XG5pbXBvcnQge2Zvcm1hdERhdGV9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncnMtZGF0YS1ncmlkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGEtZ3JpZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGEtZ3JpZC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtEYXRhR3JpZFNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIERhdGFHcmlkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KClcbiAgdGVuYW50ITogYW55O1xuICBASW5wdXQoKVxuICBjbGFzc05hbWUhOiBhbnk7XG4gIEBJbnB1dCgpXG4gIHZpZXc/OiBhbnk7XG4gIEBJbnB1dCgpXG4gIGZpbHRlcj86IGFueTtcbiAgQElucHV0KClcbiAgZW5hYmxlTWFzdGVyRGV0YWlsID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIGN1c3RvbUNvbHVtbkZuPzogKGNvbHVtbnM6IGFueVtdKSA9PiB2b2lkO1xuICBkYXRhU291cmNlOiBhbnkgPSB7fTtcbiAgY29sdW1uczogYW55W10gPSBbXTtcbiAgdHlwZU1hcDogYW55ID0ge1xuICAgIFNUUklORzoge1xuICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxuICAgICAgZmlsdGVyT3BlcmF0aW9uczogWydjb250YWlucycsICdzdGFydHN3aXRoJywgJ2VuZHN3aXRoJywgJz0nLCAnPD4nXVxuICAgIH0sXG4gICAgVEVYVDoge1xuICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxuICAgICAgZmlsdGVyT3BlcmF0aW9uczogWydjb250YWlucycsICdzdGFydHN3aXRoJywgJ2VuZHN3aXRoJywgJz0nLCAnPD4nXVxuICAgIH0sXG4gICAgQk9PTEVBTjoge1xuICAgICAgZGF0YVR5cGU6ICdib29sZWFuJyxcbiAgICAgIGZpbHRlck9wZXJhdGlvbnM6IFtdXG4gICAgfSxcbiAgICBJTlRFR0VSOiB7XG4gICAgICBkYXRhVHlwZTogJ251bWJlcicsXG4gICAgICBmaWx0ZXJPcGVyYXRpb25zOiBbJz0nLCAnPD4nLCAnPicsICc+PScsICc8JywgJzw9JywgJ2JldHdlZW4nXVxuICAgIH0sXG4gICAgRE9VQkxFOiB7XG4gICAgICBkYXRhVHlwZTogJ251bWJlcicsXG4gICAgICBmaWx0ZXJPcGVyYXRpb25zOiBbJz0nLCAnPD4nLCAnPicsICc+PScsICc8JywgJzw9JywgJ2JldHdlZW4nXVxuICAgIH0sXG4gICAgREFURToge1xuICAgICAgZGF0YVR5cGU6ICdkYXRlJyxcbiAgICAgIGZpbHRlck9wZXJhdGlvbnM6IFsnPScsICc8PicsICc+JywgJz49JywgJzwnLCAnPD0nLCAnYmV0d2VlbiddLFxuICAgICAgZm9ybWF0OiAneXl5eS9NTS9kZCdcbiAgICB9LFxuICAgIERBVEVUSU1FOiB7XG4gICAgICBkYXRhVHlwZTogJ2RhdGV0aW1lJyxcbiAgICAgIGZpbHRlck9wZXJhdGlvbnM6IFsnPicsICc8JywgJ2JldHdlZW4nXSxcbiAgICAgIGZvcm1hdDogJ3l5eXkvTU0vZGQgSEg6bW06c3MnXG4gICAgfVxuICB9O1xuICBAVmlld0NoaWxkKER4RGF0YUdyaWRDb21wb25lbnQsIHtzdGF0aWM6IHRydWV9KSBkeERhdGFHcmlkITogRHhEYXRhR3JpZENvbXBvbmVudDtcbiAgQENvbnRlbnRDaGlsZChNYXN0ZXJEZXRhaWxUZW1wbGF0ZURpcmVjdGl2ZSkgbWFzdGVyRGV0YWlsVGVtcGxhdGUhOiBNYXN0ZXJEZXRhaWxUZW1wbGF0ZURpcmVjdGl2ZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNlcnZpY2U6IERhdGFHcmlkU2VydmljZSwgQEluamVjdChMT0NBTEVfSUQpIHByaXZhdGUgbG9jYWxlOiBzdHJpbmcpIHtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucmVsb2FkKCk7XG4gIH1cblxuICByZWxvYWQoKSB7XG4gICAgdGhpcy5keERhdGFHcmlkLmluc3RhbmNlPy5zdGF0ZShudWxsKTtcbiAgICB0aGlzLnNlcnZpY2UuZ2V0TWV0YWRhdGFCeVZpZXcodGhpcy50ZW5hbnQsIHRoaXMuY2xhc3NOYW1lLCB0aGlzLnZpZXcgfHwgJycpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgdGhpcy5jb2x1bW5zID0gW107XG4gICAgICBmb3IgKGxldCBmaWVsZCBvZiByZXNwb25zZS5kYXRhLmNvbHVtbnMpIHtcbiAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdGSUxFJykge1xuICAgICAgICAgIHRoaXMuY29sdW1ucy5wdXNoKHtcbiAgICAgICAgICAgIGRhdGFGaWVsZDogZmllbGQubmFtZSxcbiAgICAgICAgICAgIGNhcHRpb246IGZpZWxkLmNhcHRpb24sXG4gICAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBhbGlnbm1lbnQ6ICdsZWZ0JyxcbiAgICAgICAgICAgIGZpbHRlck9wZXJhdGlvbnM6IFtdLFxuICAgICAgICAgICAgdmlzaWJsZTogZmllbGQudmlzaWJsZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKGZpZWxkLnR5cGUgPT09ICdOT1JNQUwnKSB7XG4gICAgICAgICAgY29uc3QgY29sdW1uOiBhbnkgPSB7XG4gICAgICAgICAgICBkYXRhRmllbGQ6IGZpZWxkLm5hbWUsXG4gICAgICAgICAgICBjYXB0aW9uOiBmaWVsZC5jYXB0aW9uLFxuICAgICAgICAgICAgZGF0YVR5cGU6IHRoaXMudHlwZU1hcFtmaWVsZC5kYXRhVHlwZV0uZGF0YVR5cGUsXG4gICAgICAgICAgICBhbGlnbm1lbnQ6ICdsZWZ0JyxcbiAgICAgICAgICAgIGZpbHRlck9wZXJhdGlvbnM6IHRoaXMudHlwZU1hcFtmaWVsZC5kYXRhVHlwZV0uZmlsdGVyT3BlcmF0aW9ucyxcbiAgICAgICAgICAgIGZvcm1hdDogdGhpcy50eXBlTWFwW2ZpZWxkLmRhdGFUeXBlXS5mb3JtYXQsXG4gICAgICAgICAgICB2aXNpYmxlOiBmaWVsZC52aXNpYmxlXG4gICAgICAgICAgfTtcbiAgICAgICAgICB0aGlzLmNvbHVtbnMucHVzaChjb2x1bW4pO1xuICAgICAgICAgIHN3aXRjaCAoZmllbGQuZGF0YVR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ0JPT0xFQU4nOlxuICAgICAgICAgICAgICBjb2x1bW4uYWxpZ25tZW50ID0gJ2NlbnRlcic7XG4gICAgICAgICAgICAgIGNvbHVtbi50cnVlVGV4dCA9ICfmmK8nO1xuICAgICAgICAgICAgICBjb2x1bW4uZmFsc2VUZXh0ID0gJ+WQpic7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnREFURSc6XG4gICAgICAgICAgICAgIGNvbHVtbi5jYWxjdWxhdGVGaWx0ZXJFeHByZXNzaW9uID0gKGZpbHRlclZhbHVlOiBhbnksIHNlbGVjdGVkRmlsdGVyT3BlcmF0aW9uOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRGaWx0ZXJPcGVyYXRpb24gPT09ICdiZXR3ZWVuJyAmJiBBcnJheS5pc0FycmF5KGZpbHRlclZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgW2NvbHVtbi5uYW1lLCAnPj0nLCBmb3JtYXREYXRlKGZpbHRlclZhbHVlWzBdLCAneXl5eS9NTS9kZCcsIHRoaXMubG9jYWxlLCAnR01UKzgnKV0sXG4gICAgICAgICAgICAgICAgICAgICdhbmQnLFxuICAgICAgICAgICAgICAgICAgICBbY29sdW1uLm5hbWUsICc8JywgZm9ybWF0RGF0ZShmaWx0ZXJWYWx1ZVsxXSwgJ3l5eXkvTU0vZGQnLCB0aGlzLmxvY2FsZSwgJ0dNVCs4JyldXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtjb2x1bW4ubmFtZSwgc2VsZWN0ZWRGaWx0ZXJPcGVyYXRpb24sIGZvcm1hdERhdGUoZmlsdGVyVmFsdWUsICd5eXl5L01NL2RkJywgdGhpcy5sb2NhbGUsICdHTVQrOCcpXTtcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdEQVRFVElNRSc6XG4gICAgICAgICAgICBjYXNlICdET1VCTEUnOlxuICAgICAgICAgICAgY2FzZSAnSU5URUdFUic6XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnU1RSSU5HJzpcbiAgICAgICAgICAgICAgc3dpdGNoIChmaWVsZC5jb25maWcuY29uc3RyYWludC50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnVVNFUic6XG4gICAgICAgICAgICAgICAgICBjb2x1bW4uZGF0YUZpZWxkID0gJ19fJyArIGZpZWxkLm5hbWUgKyAnXFx1MDAwMVVzZXJfZGlzcGxheU5hbWUnO1xuICAgICAgICAgICAgICAgICAgY29sdW1uLmNhbGN1bGF0ZUZpbHRlckV4cHJlc3Npb24gPSAoZmlsdGVyVmFsdWU6IGFueSwgc2VsZWN0ZWRGaWx0ZXJPcGVyYXRpb246IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICAgIFtjb2x1bW4ubmFtZSwgc2VsZWN0ZWRGaWx0ZXJPcGVyYXRpb24sIGZpbHRlclZhbHVlXSxcbiAgICAgICAgICAgICAgICAgICAgICAnb3InLFxuICAgICAgICAgICAgICAgICAgICAgIFsnX18nICsgZmllbGQubmFtZSArICdcXHUwMDAxVXNlcl91c2VybmFtZScsIHNlbGVjdGVkRmlsdGVyT3BlcmF0aW9uLCBmaWx0ZXJWYWx1ZV1cbiAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdVTklUJzpcbiAgICAgICAgICAgICAgICAgIGNvbHVtbi5kYXRhRmllbGQgPSAnX18nICsgZmllbGQubmFtZSArICdcXHUwMDAxUm9sZV9kaXNwbGF5TmFtZSc7XG4gICAgICAgICAgICAgICAgICBjb2x1bW4uY2FsY3VsYXRlRmlsdGVyRXhwcmVzc2lvbiA9IChmaWx0ZXJWYWx1ZTogYW55LCBzZWxlY3RlZEZpbHRlck9wZXJhdGlvbjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgICAgW2NvbHVtbi5uYW1lLCBzZWxlY3RlZEZpbHRlck9wZXJhdGlvbiwgZmlsdGVyVmFsdWVdLFxuICAgICAgICAgICAgICAgICAgICAgICdvcicsXG4gICAgICAgICAgICAgICAgICAgICAgWydfXycgKyBmaWVsZC5uYW1lICsgJ1xcdTAwMDFSb2xlX25hbWUnLCBzZWxlY3RlZEZpbHRlck9wZXJhdGlvbiwgZmlsdGVyVmFsdWVdXG4gICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnQ1VTVE9NJzpcbiAgICAgICAgICAgICAgICAgIGNvbHVtbi5sb29rdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2U6ICcnLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZUV4cHI6ICdzdG9yZScsXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlFeHByOiAnZGlzcGxheSdcbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1RFWFQnOlxuICAgICAgICAgICAgICBjb2x1bW4uY2VsbFRlbXBsYXRlID0gJ3RleHRDZWxsVGVtcGxhdGUnO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZmllbGQudHlwZSA9PT0gJ1JFTEFUSU9OJykge1xuICAgICAgICAgIHRoaXMuY29sdW1ucy5wdXNoKHtcbiAgICAgICAgICAgIGRhdGFGaWVsZDogZmllbGQubmFtZSxcbiAgICAgICAgICAgIGNhcHRpb246IGZpZWxkLmNhcHRpb24sXG4gICAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBhbGlnbm1lbnQ6ICdsZWZ0JyxcbiAgICAgICAgICAgIGZpbHRlck9wZXJhdGlvbnM6IFsnPSddLFxuICAgICAgICAgICAgdmlzaWJsZTogZmllbGQudmlzaWJsZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5jdXN0b21Db2x1bW5Gbikge1xuICAgICAgICB0aGlzLmN1c3RvbUNvbHVtbkZuKHRoaXMuY29sdW1ucyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5kYXRhU291cmNlID0gbmV3IEN1c3RvbVN0b3JlKHtcbiAgICAgIGtleTogJ29pZCcsXG4gICAgICBieUtleTogKGtleSkgPT4ge1xuICAgICAgICByZXR1cm4gbGFzdFZhbHVlRnJvbSh0aGlzLnNlcnZpY2UuZ2V0T25lKHRoaXMudGVuYW50LCB0aGlzLmNsYXNzTmFtZSwga2V5KSk7XG4gICAgICB9LFxuICAgICAgbG9hZDogKGxvYWRPcHRpb25zOiBhbnkpID0+IHtcbiAgICAgICAgbGV0IHBhcmFtcyA9ICc/JztcbiAgICAgICAgaWYgKGxvYWRPcHRpb25zLnNraXAgfHwgbG9hZE9wdGlvbnMudGFrZSkge1xuICAgICAgICAgIHBhcmFtcyArPSAnb2Zmc2V0PScgKyBsb2FkT3B0aW9ucy5za2lwO1xuICAgICAgICAgIHBhcmFtcyArPSAnJmxpbWl0PScgKyBsb2FkT3B0aW9ucy50YWtlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBhcmFtcyArPSAnbGltaXQ9MCc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxvYWRPcHRpb25zLnNvcnQpIHtcbiAgICAgICAgICBsZXQgZmlyc3QgPSB0cnVlO1xuICAgICAgICAgIGZvciAoY29uc3QgdGhpc1NvcnQgb2YgbG9hZE9wdGlvbnMuc29ydCkge1xuICAgICAgICAgICAgaWYgKGZpcnN0KSB7XG4gICAgICAgICAgICAgIHBhcmFtcyArPSAnJm9yZGVyQnk9JyArIHRoaXNTb3J0LnNlbGVjdG9yO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGFyYW1zICs9ICcsJyArIHRoaXNTb3J0LnNlbGVjdG9yO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXNTb3J0LmRlc2MpIHtcbiAgICAgICAgICAgICAgcGFyYW1zICs9ICcgZGVzYyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaXJzdCA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgZmlsdGVyO1xuICAgICAgICBpZiAobG9hZE9wdGlvbnMuZmlsdGVyKSB7XG4gICAgICAgICAgZmlsdGVyID0gbG9hZE9wdGlvbnMuZmlsdGVyO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmZpbHRlcikge1xuICAgICAgICAgIGlmIChmaWx0ZXIpIHtcbiAgICAgICAgICAgIGZpbHRlciA9IFtmaWx0ZXIsICdhbmQnLCB0aGlzLmZpbHRlcl07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZpbHRlciA9IHRoaXMuZmlsdGVyO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsdGVyKSB7XG4gICAgICAgICAgcGFyYW1zICs9ICcmZmlsdGVyPScgKyBlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoZmlsdGVyKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxhc3RWYWx1ZUZyb20odGhpcy5zZXJ2aWNlLmdldE1hbnkodGhpcy50ZW5hbnQsIHRoaXMuY2xhc3NOYW1lLCBwYXJhbXMgKyAnJnZpZXc9JyArICh0aGlzLnZpZXcgfHwgJycpKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZWZyZXNoKGNhbGxiYWNrPzogYW55KSB7XG4gICAgdGhpcy5keERhdGFHcmlkLmluc3RhbmNlLnJlZnJlc2goKS50aGVuKCgpID0+IHtcbiAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xuICAgIHJldHVybiB0aGlzLmR4RGF0YUdyaWQuaW5zdGFuY2UuZ2V0U2VsZWN0ZWRSb3dLZXlzKCk7XG4gIH1cbn1cbiIsIjxkeC1kYXRhLWdyaWQgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZVwiXG4gICAgICAgICAgICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxuICAgICAgICAgICAgICBbc2hvd0JvcmRlcnNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtzaG93Q29sdW1uTGluZXNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtzaG93Um93TGluZXNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtob3ZlclN0YXRlRW5hYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW3Jvd0FsdGVybmF0aW9uRW5hYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW2FsbG93Q29sdW1uUmVzaXppbmddPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIGNvbHVtblJlc2l6aW5nTW9kZT1cIndpZGdldFwiXG4gICAgICAgICAgICAgIGRhdGVTZXJpYWxpemF0aW9uRm9ybWF0PVwieXl5eS9NTS9kZCBISDptbTpzc1wiXG4gICAgICAgICAgICAgIChvblJvd0V4cGFuZGluZyk9XCIkZXZlbnQuY29tcG9uZW50LmNvbGxhcHNlQWxsKC0xKVwiXG4+XG4gIDxkeG8tc29ydGluZyBtb2RlPVwibXVsdGlwbGVcIj48L2R4by1zb3J0aW5nPlxuICA8ZHhvLXNlbGVjdGlvbiBtb2RlPVwibXVsdGlwbGVcIiBzZWxlY3RBbGxNb2RlPVwicGFnZVwiPjwvZHhvLXNlbGVjdGlvbj5cbiAgPGR4by1maWx0ZXItcm93IFt2aXNpYmxlXT1cInRydWVcIj48L2R4by1maWx0ZXItcm93PlxuICA8ZHhvLXJlbW90ZS1vcGVyYXRpb25zIFtmaWx0ZXJpbmddPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3NvcnRpbmddPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3BhZ2luZ109XCJ0cnVlXCI+XG4gIDwvZHhvLXJlbW90ZS1vcGVyYXRpb25zPlxuICA8ZHhvLW1hc3Rlci1kZXRhaWwgW2VuYWJsZWRdPVwiZW5hYmxlTWFzdGVyRGV0YWlsXCIgdGVtcGxhdGU9XCJtYXN0ZXJEZXRhaWxUZW1wbGF0ZVwiPjwvZHhvLW1hc3Rlci1kZXRhaWw+XG4gIDxkeG8tcGFnaW5nIFtwYWdlU2l6ZV09XCIxNVwiPjwvZHhvLXBhZ2luZz5cbiAgPGR4by1wYWdlciBbdmlzaWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICBbc2hvd0luZm9dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgaW5mb1RleHQ9XCLnrKx7MH3pobXvvIzlhbF7MX3pobXvvIjlhbF7Mn3kuKrpobnnm67vvIlcIlxuICAgICAgICAgICAgIFtzaG93UGFnZVNpemVTZWxlY3Rvcl09XCJ0cnVlXCJcbiAgICAgICAgICAgICBbYWxsb3dlZFBhZ2VTaXplc109XCJbMTUsIDMwLCA1MF1cIlxuICA+PC9keG8tcGFnZXI+XG4gIDxkeG8tc2Nyb2xsaW5nIHNob3dTY3JvbGxiYXI9XCJhbHdheXNcIj48L2R4by1zY3JvbGxpbmc+XG4gIDxkeG8tZXhwb3J0IFthbGxvd0V4cG9ydFNlbGVjdGVkRGF0YV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW2ZpbGVOYW1lXT1cImNsYXNzTmFtZVwiPjwvZHhvLWV4cG9ydD5cbiAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCByb3dJbmZvIG9mICdtYXN0ZXJEZXRhaWxUZW1wbGF0ZSdcIj5cbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm1hc3RlckRldGFpbFRlbXBsYXRlLnRlbXBsYXRlUmVmXCJcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0OiByb3dJbmZvfVwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbiAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBjZWxsSW5mbyBvZiAncm93SW5kZXhUZW1wbGF0ZSdcIj5cbiAgICB7e2NlbGxJbmZvLnJvd0luZGV4ICsgMX19XG4gIDwvZGl2PlxuICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGNlbGxJbmZvIG9mICd0ZXh0Q2VsbFRlbXBsYXRlJ1wiPlxuICAgIDxkaXYgZFBvcG92ZXIgI3RleHREaXZcbiAgICAgICAgIFtjb250ZW50XT1cImNlbGxJbmZvLnZhbHVlXCJcbiAgICAgICAgIFtjb250cm9sbGVkXT1cInRleHREaXYuY2xpZW50V2lkdGggPCB0ZXh0RGl2LnNjcm9sbFdpZHRoXCJcbiAgICAgICAgIFtwb3BNYXhXaWR0aF09XCIyNDBcIlxuICAgICAgICAgW3BvcG92ZXJTdHlsZV09XCJ7IGJhY2tncm91bmRDb2xvcjogJyNmZmYnLCBjb2xvcjogJ3JnYig1MSwgNTEsIDUxKScgfVwiXG4gICAgICAgICBzdHlsZT1cIm1heC13aWR0aDogMjQwcHg7IHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOyBvdmVyZmxvdzogaGlkZGVuO1wiXG4gICAgICAgICBbbmdTdHlsZV09XCJ7IGN1cnNvcjogdGV4dERpdi5jbGllbnRXaWR0aCA8IHRleHREaXYuc2Nyb2xsV2lkdGggPyAncG9pbnRlcic6ICdkZWZhdWx0J31cIj57e2NlbGxJbmZvLnZhbHVlfX08L2Rpdj5cbiAgPC9kaXY+XG48L2R4LWRhdGEtZ3JpZD5cbiJdfQ==
|
|
321
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1ncmlkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ycy1hbnQvc3JjL2RhdGEtZ3JpZC9kYXRhLWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJzLWFudC9zcmMvZGF0YS1ncmlkL2RhdGEtZ3JpZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNuQyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDakYsT0FBTyxXQUFXLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7O0FBU3ZELE1BQU0sT0FBTyxpQkFBaUI7SUFrRDVCLFlBQW9CLE9BQXdCLEVBQTZCLE1BQWM7UUFBbkUsWUFBTyxHQUFQLE9BQU8sQ0FBaUI7UUFBNkIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQXhDdkYsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBRzNCLGVBQVUsR0FBUSxFQUFFLENBQUM7UUFDckIsWUFBTyxHQUFVLEVBQUUsQ0FBQztRQUNwQixZQUFPLEdBQVE7WUFDYixNQUFNLEVBQUU7Z0JBQ04sUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLGdCQUFnQixFQUFFLENBQUMsVUFBVSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQzthQUNwRTtZQUNELElBQUksRUFBRTtnQkFDSixRQUFRLEVBQUUsUUFBUTtn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alNVLGlCQUFpQixpREFrRDBCLFNBQVM7a0dBbERwRCxpQkFBaUIseU1BRmpCLENBQUMsZUFBZSxDQUFDLDRFQWtEZCw2QkFBNkIsNEZBRGhDLG1CQUFtQiw4REM3RGhDLGlqRkFxREE7MkZEdkNhLGlCQUFpQjtrQkFON0IsU0FBUzsrQkFDRSxjQUFjLGFBR2IsQ0FBQyxlQUFlLENBQUM7OzBCQW9EbUIsTUFBTTsyQkFBQyxTQUFTOzRDQWhEL0QsTUFBTTtzQkFETCxLQUFLO2dCQUdOLFNBQVM7c0JBRFIsS0FBSztnQkFHTixJQUFJO3NCQURILEtBQUs7Z0JBR04sTUFBTTtzQkFETCxLQUFLO2dCQUdOLGtCQUFrQjtzQkFEakIsS0FBSztnQkFHTixjQUFjO3NCQURiLEtBQUs7Z0JBb0MwQyxVQUFVO3NCQUF6RCxTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFDRCxvQkFBb0I7c0JBQWhFLFlBQVk7dUJBQUMsNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgSW5qZWN0LCBJbnB1dCwgTE9DQUxFX0lELCBPbkluaXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2xhc3RWYWx1ZUZyb219IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge0R4RGF0YUdyaWRDb21wb25lbnR9IGZyb20gXCJkZXZleHRyZW1lLWFuZ3VsYXJcIjtcbmltcG9ydCB7RGF0YUdyaWRTZXJ2aWNlfSBmcm9tIFwiLi9kYXRhLWdyaWQuc2VydmljZVwiO1xuaW1wb3J0IHtNYXN0ZXJEZXRhaWxUZW1wbGF0ZURpcmVjdGl2ZX0gZnJvbSBcIi4vbWFzdGVyLWRldGFpbC10ZW1wbGF0ZS5kaXJlY3RpdmVcIjtcbmltcG9ydCBDdXN0b21TdG9yZSBmcm9tICdkZXZleHRyZW1lL2RhdGEvY3VzdG9tX3N0b3JlJztcbmltcG9ydCB7Q29sdW1ufSBmcm9tIFwiZGV2ZXh0cmVtZS91aS9kYXRhX2dyaWRcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncnMtZGF0YS1ncmlkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGEtZ3JpZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGEtZ3JpZC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtEYXRhR3JpZFNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIERhdGFHcmlkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KClcbiAgdGVuYW50ITogYW55O1xuICBASW5wdXQoKVxuICBjbGFzc05hbWUhOiBhbnk7XG4gIEBJbnB1dCgpXG4gIHZpZXc/OiBhbnk7XG4gIEBJbnB1dCgpXG4gIGZpbHRlcj86IGFueTtcbiAgQElucHV0KClcbiAgZW5hYmxlTWFzdGVyRGV0YWlsID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIGN1c3RvbUNvbHVtbkZuPzogKGNvbHVtbnM6IGFueVtdKSA9PiB2b2lkO1xuICBkYXRhU291cmNlOiBhbnkgPSB7fTtcbiAgY29sdW1uczogYW55W10gPSBbXTtcbiAgdHlwZU1hcDogYW55ID0ge1xuICAgIFNUUklORzoge1xuICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxuICAgICAgZmlsdGVyT3BlcmF0aW9uczogWydjb250YWlucycsICdzdGFydHN3aXRoJywgJ2VuZHN3aXRoJywgJz0nLCAnPD4nXVxuICAgIH0sXG4gICAgVEVYVDoge1xuICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxuICAgICAgZmlsdGVyT3BlcmF0aW9uczogWydjb250YWlucycsICdzdGFydHN3aXRoJywgJ2VuZHN3aXRoJywgJz0nLCAnPD4nXVxuICAgIH0sXG4gICAgQk9PTEVBTjoge1xuICAgICAgZGF0YVR5cGU6ICdib29sZWFuJyxcbiAgICAgIGZpbHRlck9wZXJhdGlvbnM6IFtdXG4gICAgfSxcbiAgICBJTlRFR0VSOiB7XG4gICAgICBkYXRhVHlwZTogJ251bWJlcicsXG4gICAgICBmaWx0ZXJPcGVyYXRpb25zOiBbJz0nLCAnPD4nLCAnPicsICc+PScsICc8JywgJzw9JywgJ2JldHdlZW4nXVxuICAgIH0sXG4gICAgRE9VQkxFOiB7XG4gICAgICBkYXRhVHlwZTogJ251bWJlcicsXG4gICAgICBmaWx0ZXJPcGVyYXRpb25zOiBbJz0nLCAnPD4nLCAnPicsICc+PScsICc8JywgJzw9JywgJ2JldHdlZW4nXVxuICAgIH0sXG4gICAgREFURToge1xuICAgICAgZGF0YVR5cGU6ICdkYXRlJyxcbiAgICAgIGZpbHRlck9wZXJhdGlvbnM6IFsnPScsICc8PicsICc+JywgJz49JywgJzwnLCAnPD0nLCAnYmV0d2VlbiddLFxuICAgICAgZm9ybWF0OiAneXl5eS9NTS9kZCdcbiAgICB9LFxuICAgIERBVEVUSU1FOiB7XG4gICAgICBkYXRhVHlwZTogJ2RhdGV0aW1lJyxcbiAgICAgIGZpbHRlck9wZXJhdGlvbnM6IFsnPicsICc8JywgJ2JldHdlZW4nXSxcbiAgICAgIGZvcm1hdDogJ3l5eXkvTU0vZGQgSEg6bW06c3MnXG4gICAgfVxuICB9O1xuICBAVmlld0NoaWxkKER4RGF0YUdyaWRDb21wb25lbnQsIHtzdGF0aWM6IHRydWV9KSBkeERhdGFHcmlkITogRHhEYXRhR3JpZENvbXBvbmVudDtcbiAgQENvbnRlbnRDaGlsZChNYXN0ZXJEZXRhaWxUZW1wbGF0ZURpcmVjdGl2ZSkgbWFzdGVyRGV0YWlsVGVtcGxhdGUhOiBNYXN0ZXJEZXRhaWxUZW1wbGF0ZURpcmVjdGl2ZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNlcnZpY2U6IERhdGFHcmlkU2VydmljZSwgQEluamVjdChMT0NBTEVfSUQpIHByaXZhdGUgbG9jYWxlOiBzdHJpbmcpIHtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucmVsb2FkKCk7XG4gIH1cblxuICByZWxvYWQoKSB7XG4gICAgdGhpcy5keERhdGFHcmlkLmluc3RhbmNlPy5zdGF0ZShudWxsKTtcbiAgICB0aGlzLnNlcnZpY2UuZ2V0TWV0YWRhdGFCeVZpZXcodGhpcy50ZW5hbnQsIHRoaXMuY2xhc3NOYW1lLCB0aGlzLnZpZXcgfHwgJycpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgdGhpcy5jb2x1bW5zID0gW107XG4gICAgICBmb3IgKGxldCBmaWVsZCBvZiByZXNwb25zZS5kYXRhLmNvbHVtbnMpIHtcbiAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdGSUxFJykge1xuICAgICAgICAgIHRoaXMuY29sdW1ucy5wdXNoKHtcbiAgICAgICAgICAgIGRhdGFGaWVsZDogZmllbGQubmFtZSxcbiAgICAgICAgICAgIGNhcHRpb246IGZpZWxkLmNhcHRpb24sXG4gICAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBhbGlnbm1lbnQ6ICdsZWZ0JyxcbiAgICAgICAgICAgIGFsbG93SGVhZGVyRmlsdGVyaW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGZpbHRlck9wZXJhdGlvbnM6IFtdLFxuICAgICAgICAgICAgdmlzaWJsZTogZmllbGQudmlzaWJsZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKGZpZWxkLnR5cGUgPT09ICdOT1JNQUwnKSB7XG4gICAgICAgICAgY29uc3QgY29sdW1uOiBhbnkgPSB7XG4gICAgICAgICAgICBkYXRhRmllbGQ6IGZpZWxkLm5hbWUsXG4gICAgICAgICAgICBjYXB0aW9uOiBmaWVsZC5jYXB0aW9uLFxuICAgICAgICAgICAgZGF0YVR5cGU6IHRoaXMudHlwZU1hcFtmaWVsZC5kYXRhVHlwZV0uZGF0YVR5cGUsXG4gICAgICAgICAgICBhbGlnbm1lbnQ6ICdsZWZ0JyxcbiAgICAgICAgICAgIGFsbG93SGVhZGVyRmlsdGVyaW5nOiB0cnVlLFxuICAgICAgICAgICAgaGVhZGVyRmlsdGVyOiB7XG4gICAgICAgICAgICAgIGFsbG93U2VsZWN0QWxsOiBmYWxzZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZpbHRlck9wZXJhdGlvbnM6IHRoaXMudHlwZU1hcFtmaWVsZC5kYXRhVHlwZV0uZmlsdGVyT3BlcmF0aW9ucyxcbiAgICAgICAgICAgIGZvcm1hdDogdGhpcy50eXBlTWFwW2ZpZWxkLmRhdGFUeXBlXS5mb3JtYXQsXG4gICAgICAgICAgICB2aXNpYmxlOiBmaWVsZC52aXNpYmxlXG4gICAgICAgICAgfTtcbiAgICAgICAgICB0aGlzLmNvbHVtbnMucHVzaChjb2x1bW4pO1xuICAgICAgICAgIHN3aXRjaCAoZmllbGQuZGF0YVR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ0JPT0xFQU4nOlxuICAgICAgICAgICAgICBjb2x1bW4uYWxsb3dIZWFkZXJGaWx0ZXJpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgY29sdW1uLmFsaWdubWVudCA9ICdjZW50ZXInO1xuICAgICAgICAgICAgICBjb2x1bW4udHJ1ZVRleHQgPSAn5pivJztcbiAgICAgICAgICAgICAgY29sdW1uLmZhbHNlVGV4dCA9ICflkKYnO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0RBVEUnOlxuICAgICAgICAgICAgY2FzZSAnREFURVRJTUUnOlxuICAgICAgICAgICAgICBjb2x1bW4uaGVhZGVyRmlsdGVyLmRhdGFTb3VyY2UgPSAob3B0aW9uczogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2cob3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5kYXRhU291cmNlLmdyb3VwLmxlbmd0aCA9IDM7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5kYXRhU291cmNlLnBvc3RQcm9jZXNzID0gKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgZGF0YS5mb3JFYWNoKCh5ZWFyOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgeWVhci50ZXh0ID0geWVhci5rZXkgKyAn5bm0JztcbiAgICAgICAgICAgICAgICAgICAgeWVhci5pdGVtcy5mb3JFYWNoKChtb250aDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgbW9udGgudGV4dCA9IG1vbnRoLmtleSArICfmnIgnO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbnRoLml0ZW1zLmZvckVhY2goKGRheTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXkudGV4dCA9IGRheS5rZXkgKyAn5pelJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGRheS5pdGVtcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgZGF0YS51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6ICco56m655m9KSdcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnRE9VQkxFJzpcbiAgICAgICAgICAgIGNhc2UgJ0lOVEVHRVInOlxuICAgICAgICAgICAgICBjb2x1bW4uaGVhZGVyRmlsdGVyLmRhdGFTb3VyY2UgPSAob3B0aW9uczogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5kYXRhU291cmNlLnBvc3RQcm9jZXNzID0gKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgZGF0YS51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6ICco56m655m9KSdcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgZGF0YS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiAnX18nLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJ19fJyxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogJ19fJyxcbiAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2VcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnU1RSSU5HJzpcbiAgICAgICAgICAgICAgc3dpdGNoIChmaWVsZC5jb25maWcuY29uc3RyYWludC50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnVVNFUic6XG4gICAgICAgICAgICAgICAgICBjb2x1bW4uZGF0YUZpZWxkID0gJ19fJyArIGZpZWxkLm5hbWUgKyAnXFx1MDAwMVVzZXJfZGlzcGxheU5hbWUnO1xuICAgICAgICAgICAgICAgICAgY29sdW1uLmhlYWRlckZpbHRlci5kYXRhU291cmNlID0ge1xuICAgICAgICAgICAgICAgICAgICBzdG9yZTogbmV3IEN1c3RvbVN0b3JlKHtcbiAgICAgICAgICAgICAgICAgICAgICBsb2FkOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGFzdFZhbHVlRnJvbSh0aGlzLnNlcnZpY2UuZ2V0VXNlckNvbHVtbkRhdGFTb3VyY2UodGhpcy5jbGFzc05hbWUsIHRoaXMudmlldywgZmllbGQubmFtZSkpO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIHBhZ2luYXRlOiB0cnVlXG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgY29sdW1uLmNhbGN1bGF0ZUZpbHRlckV4cHJlc3Npb24gPSBmdW5jdGlvbiAodGhpczogYW55LCBmaWx0ZXJWYWx1ZTogYW55LCBzZWxlY3RlZEZpbHRlck9wZXJhdGlvbjogYW55LCB0YXJnZXQ6IHN0cmluZykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ID09PSAnaGVhZGVyRmlsdGVyJykge1xuICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRlZmF1bHRDYWxjdWxhdGVGaWx0ZXJFeHByZXNzaW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZCA9ICdfXycgKyBmaWVsZC5uYW1lICsgJ1xcdTAwMDFVc2VyX3VzZXJuYW1lJztcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRDYWxjdWxhdGVGaWx0ZXJFeHByZXNzaW9uLmFwcGx5KHRoaXMsIFtmaWx0ZXJWYWx1ZSwgc2VsZWN0ZWRGaWx0ZXJPcGVyYXRpb24sIHRhcmdldF0pO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICAgIFtjb2x1bW4ubmFtZSwgc2VsZWN0ZWRGaWx0ZXJPcGVyYXRpb24sIGZpbHRlclZhbHVlXSxcbiAgICAgICAgICAgICAgICAgICAgICAnb3InLFxuICAgICAgICAgICAgICAgICAgICAgIFsnX18nICsgZmllbGQubmFtZSArICdcXHUwMDAxVXNlcl91c2VybmFtZScsIHNlbGVjdGVkRmlsdGVyT3BlcmF0aW9uLCBmaWx0ZXJWYWx1ZV1cbiAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdVTklUJzpcbiAgICAgICAgICAgICAgICAgIGNvbHVtbi5kYXRhRmllbGQgPSAnX18nICsgZmllbGQubmFtZSArICdcXHUwMDAxUm9sZV9kaXNwbGF5TmFtZSc7XG4gICAgICAgICAgICAgICAgICBjb2x1bW4uaGVhZGVyRmlsdGVyLmRhdGFTb3VyY2UgPSB7XG4gICAgICAgICAgICAgICAgICAgIHN0b3JlOiBuZXcgQ3VzdG9tU3RvcmUoe1xuICAgICAgICAgICAgICAgICAgICAgIGxvYWQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsYXN0VmFsdWVGcm9tKHRoaXMuc2VydmljZS5nZXRVbml0Q29sdW1uRGF0YVNvdXJjZSh0aGlzLmNsYXNzTmFtZSwgdGhpcy52aWV3LCBmaWVsZC5uYW1lKSk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgcGFnaW5hdGU6IHRydWVcbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBjb2x1bW4uY2FsY3VsYXRlRmlsdGVyRXhwcmVzc2lvbiA9IGZ1bmN0aW9uICh0aGlzOiBDb2x1bW4sIGZpbHRlclZhbHVlOiBhbnksIHNlbGVjdGVkRmlsdGVyT3BlcmF0aW9uOiBhbnksIHRhcmdldDogc3RyaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgPT09ICdoZWFkZXJGaWx0ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZGVmYXVsdENhbGN1bGF0ZUZpbHRlckV4cHJlc3Npb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkID0gJ19fJyArIGZpZWxkLm5hbWUgKyAnXFx1MDAwMVJvbGVfbmFtZSc7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0Q2FsY3VsYXRlRmlsdGVyRXhwcmVzc2lvbi5hcHBseSh0aGlzLCBbZmlsdGVyVmFsdWUsIHNlbGVjdGVkRmlsdGVyT3BlcmF0aW9uLCB0YXJnZXRdKTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgICBbY29sdW1uLm5hbWUsIHNlbGVjdGVkRmlsdGVyT3BlcmF0aW9uLCBmaWx0ZXJWYWx1ZV0sXG4gICAgICAgICAgICAgICAgICAgICAgJ29yJyxcbiAgICAgICAgICAgICAgICAgICAgICBbJ19fJyArIGZpZWxkLm5hbWUgKyAnXFx1MDAwMVJvbGVfbmFtZScsIHNlbGVjdGVkRmlsdGVyT3BlcmF0aW9uLCBmaWx0ZXJWYWx1ZV1cbiAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdDVVNUT00nOlxuICAgICAgICAgICAgICAgICAgY29sdW1uLmhlYWRlckZpbHRlci5kYXRhU291cmNlID0ge1xuICAgICAgICAgICAgICAgICAgICBzdG9yZTogbmV3IEN1c3RvbVN0b3JlKHtcbiAgICAgICAgICAgICAgICAgICAgICBsb2FkOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGFzdFZhbHVlRnJvbSh0aGlzLnNlcnZpY2UuZ2V0Q29uc3RyYWludENvbHVtbkRhdGFTb3VyY2UodGhpcy5jbGFzc05hbWUsIHRoaXMudmlldywgZmllbGQubmFtZSwgZmllbGQuY29uZmlnLmNvbnN0cmFpbnQubmFtZSkpO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIHBhZ2luYXRlOiB0cnVlXG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgY29sdW1uLmZpbHRlck9wZXJhdGlvbnMgPSBbJz0nXTtcbiAgICAgICAgICAgICAgICAgIGNvbHVtbi5sb29rdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2U6IHtcbiAgICAgICAgICAgICAgICAgICAgICBzdG9yZTogbmV3IEN1c3RvbVN0b3JlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvYWQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxhc3RWYWx1ZUZyb20odGhpcy5zZXJ2aWNlLmdldENvbnN0cmFpbnRFbnRyaWVzKGZpZWxkLmNvbmZpZy5jb25zdHJhaW50Lm5hbWUpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICBwYWdpbmF0ZTogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZUV4cHI6ICdzdG9yZScsXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlFeHByOiAnZGlzcGxheSdcbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1RFWFQnOlxuXG4gICAgICAgICAgICAgIGNvbHVtbi5jZWxsVGVtcGxhdGUgPSAndGV4dENlbGxUZW1wbGF0ZSc7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChmaWVsZC50eXBlID09PSAnUkVMQVRJT04nKSB7XG4gICAgICAgICAgdGhpcy5jb2x1bW5zLnB1c2goe1xuICAgICAgICAgICAgZGF0YUZpZWxkOiBmaWVsZC5uYW1lLFxuICAgICAgICAgICAgY2FwdGlvbjogZmllbGQuY2FwdGlvbixcbiAgICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGFsaWdubWVudDogJ2xlZnQnLFxuICAgICAgICAgICAgYWxsb3dIZWFkZXJGaWx0ZXJpbmc6IGZhbHNlLFxuICAgICAgICAgICAgZmlsdGVyT3BlcmF0aW9uczogWyc9J10sXG4gICAgICAgICAgICB2aXNpYmxlOiBmaWVsZC52aXNpYmxlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmN1c3RvbUNvbHVtbkZuKSB7XG4gICAgICAgIHRoaXMuY3VzdG9tQ29sdW1uRm4odGhpcy5jb2x1bW5zKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgQ3VzdG9tU3RvcmUoe1xuICAgICAga2V5OiAnb2lkJyxcbiAgICAgIGJ5S2V5OiAoa2V5OiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIGxhc3RWYWx1ZUZyb20odGhpcy5zZXJ2aWNlLmdldE9uZSh0aGlzLnRlbmFudCwgdGhpcy5jbGFzc05hbWUsIGtleSkpO1xuICAgICAgfSxcbiAgICAgIGxvYWQ6IChsb2FkT3B0aW9uczogYW55KSA9PiB7XG4gICAgICAgIGlmIChsb2FkT3B0aW9ucy5kYXRhRmllbGQpIHtcbiAgICAgICAgICAvLyDmnKrph43lhploZWFkZXJGaWx0ZXLnmoRkYXRhU291cmNl5pe277yMaGVhZGVyRmlsdGVy5Lya6LCD55SobG9hZOaWueazleWKoOi9veetm+mAieagke+8jOmHjeWGmeivpeaWueazleafpeivouivpeihqOaJgOacieaVsOaNrlxuICAgICAgICAgIC8vIOivpeaWueW8j+WtmOWcqOmjjumZqe+8jOaXoOazleivhuWIq+S4gOWumuaYr+mAmui/h2hlYWRlckZpbHRlcui/h+a7pOaJjeWtmOWcqGRhdGFGaWVsZOWPguaVsFxuICAgICAgICAgIHJldHVybiBsYXN0VmFsdWVGcm9tKHRoaXMuc2VydmljZS5nZXRDb2x1bW5EYXRhU291cmNlKHRoaXMuY2xhc3NOYW1lLCB0aGlzLnZpZXcsIGxvYWRPcHRpb25zLmRhdGFGaWVsZCkpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBwYXJhbXMgPSAnPyc7XG4gICAgICAgIGlmIChsb2FkT3B0aW9ucy5za2lwIHx8IGxvYWRPcHRpb25zLnRha2UpIHtcbiAgICAgICAgICBwYXJhbXMgKz0gJ29mZnNldD0nICsgbG9hZE9wdGlvbnMuc2tpcDtcbiAgICAgICAgICBwYXJhbXMgKz0gJyZsaW1pdD0nICsgbG9hZE9wdGlvbnMudGFrZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwYXJhbXMgKz0gJ2xpbWl0PTAnO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsb2FkT3B0aW9ucy5zb3J0KSB7XG4gICAgICAgICAgbGV0IGZpcnN0ID0gdHJ1ZTtcbiAgICAgICAgICBmb3IgKGNvbnN0IHRoaXNTb3J0IG9mIGxvYWRPcHRpb25zLnNvcnQpIHtcbiAgICAgICAgICAgIGlmIChmaXJzdCkge1xuICAgICAgICAgICAgICBwYXJhbXMgKz0gJyZvcmRlckJ5PScgKyB0aGlzU29ydC5zZWxlY3RvcjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBhcmFtcyArPSAnLCcgKyB0aGlzU29ydC5zZWxlY3RvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzU29ydC5kZXNjKSB7XG4gICAgICAgICAgICAgIHBhcmFtcyArPSAnIGRlc2MnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmlyc3QgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGZpbHRlcjtcbiAgICAgICAgaWYgKGxvYWRPcHRpb25zLmZpbHRlcikge1xuICAgICAgICAgIGZpbHRlciA9IGxvYWRPcHRpb25zLmZpbHRlcjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgICBpZiAoZmlsdGVyKSB7XG4gICAgICAgICAgICBmaWx0ZXIgPSBbZmlsdGVyLCAnYW5kJywgdGhpcy5maWx0ZXJdO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmaWx0ZXIgPSB0aGlzLmZpbHRlcjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpbHRlcikge1xuICAgICAgICAgIHBhcmFtcyArPSAnJmZpbHRlcj0nICsgZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGZpbHRlcikpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsYXN0VmFsdWVGcm9tKHRoaXMuc2VydmljZS5nZXRNYW55KHRoaXMudGVuYW50LCB0aGlzLmNsYXNzTmFtZSwgcGFyYW1zICsgJyZ2aWV3PScgKyAodGhpcy52aWV3IHx8ICcnKSkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmVmcmVzaChjYWxsYmFjaz86IGFueSkge1xuICAgIHRoaXMuZHhEYXRhR3JpZC5pbnN0YW5jZS5yZWZyZXNoKCkudGhlbigoKSA9PiB7XG4gICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIiwiPGR4LWRhdGEtZ3JpZCBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCJcbiAgICAgICAgICAgICAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXG4gICAgICAgICAgICAgIFtzeW5jTG9va3VwRmlsdGVyVmFsdWVzXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgW3Nob3dCb3JkZXJzXT1cInRydWVcIlxuICAgICAgICAgICAgICBbc2hvd0NvbHVtbkxpbmVzXT1cInRydWVcIlxuICAgICAgICAgICAgICBbc2hvd1Jvd0xpbmVzXT1cInRydWVcIlxuICAgICAgICAgICAgICBbaG92ZXJTdGF0ZUVuYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtyb3dBbHRlcm5hdGlvbkVuYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtjb2x1bW5BdXRvV2lkdGhdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFthbGxvd0NvbHVtblJlc2l6aW5nXT1cInRydWVcIlxuICAgICAgICAgICAgICBjb2x1bW5SZXNpemluZ01vZGU9XCJ3aWRnZXRcIlxuICAgICAgICAgICAgICBkYXRlU2VyaWFsaXphdGlvbkZvcm1hdD1cInl5eXkvTU0vZGQgSEg6bW06c3NcIlxuICAgICAgICAgICAgICAob25Sb3dFeHBhbmRpbmcpPVwiJGV2ZW50LmNvbXBvbmVudC5jb2xsYXBzZUFsbCgtMSlcIlxuPlxuICA8ZHhvLXNvcnRpbmcgbW9kZT1cIm11bHRpcGxlXCI+PC9keG8tc29ydGluZz5cbiAgPGR4by1zZWxlY3Rpb24gbW9kZT1cIm11bHRpcGxlXCIgc2VsZWN0QWxsTW9kZT1cInBhZ2VcIj48L2R4by1zZWxlY3Rpb24+XG4gIDxkeG8taGVhZGVyLWZpbHRlciBbdmlzaWJsZV09XCJ0cnVlXCI+XG4gICAgPGR4by1zZWFyY2ggW2VuYWJsZWRdPVwidHJ1ZVwiPjwvZHhvLXNlYXJjaD5cbiAgICA8ZHhvLXRleHRzIFtva109XCIn56Gu5a6aJ1wiPjwvZHhvLXRleHRzPlxuICA8L2R4by1oZWFkZXItZmlsdGVyPlxuICA8ZHhvLWZpbHRlci1yb3cgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWZpbHRlci1yb3c+XG4gIDxkeG8tcmVtb3RlLW9wZXJhdGlvbnMgW2ZpbHRlcmluZ109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbc29ydGluZ109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbcGFnaW5nXT1cInRydWVcIj5cbiAgPC9keG8tcmVtb3RlLW9wZXJhdGlvbnM+XG4gIDxkeG8tbWFzdGVyLWRldGFpbCBbZW5hYmxlZF09XCJlbmFibGVNYXN0ZXJEZXRhaWxcIiB0ZW1wbGF0ZT1cIm1hc3RlckRldGFpbFRlbXBsYXRlXCI+PC9keG8tbWFzdGVyLWRldGFpbD5cbiAgPGR4by1wYWdpbmcgW3BhZ2VTaXplXT1cIjE1XCI+PC9keG8tcGFnaW5nPlxuICA8ZHhvLXBhZ2VyIFt2aXNpYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgIFtzaG93SW5mb109XCJ0cnVlXCJcbiAgICAgICAgICAgICBpbmZvVGV4dD1cIuesrHswfemhte+8jOWFsXsxfemhte+8iOWFsXsyfeS4qumhueebru+8iVwiXG4gICAgICAgICAgICAgW3Nob3dQYWdlU2l6ZVNlbGVjdG9yXT1cInRydWVcIlxuICAgICAgICAgICAgIFthbGxvd2VkUGFnZVNpemVzXT1cIlsxNSwgMzAsIDUwXVwiXG4gID48L2R4by1wYWdlcj5cbiAgPGR4by1zY3JvbGxpbmcgc2hvd1Njcm9sbGJhcj1cImFsd2F5c1wiPjwvZHhvLXNjcm9sbGluZz5cbiAgPGR4by1leHBvcnQgW2FsbG93RXhwb3J0U2VsZWN0ZWREYXRhXT1cInRydWVcIlxuICAgICAgICAgICAgICBbZmlsZU5hbWVdPVwiY2xhc3NOYW1lXCI+PC9keG8tZXhwb3J0PlxuICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IHJvd0luZm8gb2YgJ21hc3RlckRldGFpbFRlbXBsYXRlJ1wiPlxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwibWFzdGVyRGV0YWlsVGVtcGxhdGUudGVtcGxhdGVSZWZcIlxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInskaW1wbGljaXQ6IHJvd0luZm99XCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGNlbGxJbmZvIG9mICdyb3dJbmRleFRlbXBsYXRlJ1wiPlxuICAgIHt7Y2VsbEluZm8ucm93SW5kZXggKyAxfX1cbiAgPC9kaXY+XG4gIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgY2VsbEluZm8gb2YgJ3RleHRDZWxsVGVtcGxhdGUnXCI+XG4gICAgPGRpdiBkUG9wb3ZlciAjdGV4dERpdlxuICAgICAgICAgW2NvbnRlbnRdPVwiY2VsbEluZm8udmFsdWVcIlxuICAgICAgICAgW2NvbnRyb2xsZWRdPVwidGV4dERpdi5jbGllbnRXaWR0aCA8IHRleHREaXYuc2Nyb2xsV2lkdGhcIlxuICAgICAgICAgW3BvcE1heFdpZHRoXT1cIjI0MFwiXG4gICAgICAgICBbcG9wb3ZlclN0eWxlXT1cInsgYmFja2dyb3VuZENvbG9yOiAnI2ZmZicsIGNvbG9yOiAncmdiKDUxLCA1MSwgNTEpJyB9XCJcbiAgICAgICAgIHN0eWxlPVwibWF4LXdpZHRoOiAyNDBweDsgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7IG92ZXJmbG93OiBoaWRkZW47XCJcbiAgICAgICAgIFtuZ1N0eWxlXT1cInsgY3Vyc29yOiB0ZXh0RGl2LmNsaWVudFdpZHRoIDwgdGV4dERpdi5zY3JvbGxXaWR0aCA/ICdwb2ludGVyJzogJ2RlZmF1bHQnfVwiPnt7Y2VsbEluZm8udmFsdWV9fTwvZGl2PlxuICA8L2Rpdj5cbjwvZHgtZGF0YS1ncmlkPlxuIl19
|
|
@@ -36,10 +36,91 @@ export class DataGridService {
|
|
|
36
36
|
};
|
|
37
37
|
}));
|
|
38
38
|
}
|
|
39
|
+
getConstraintEntries(name) {
|
|
40
|
+
return this.http.get('api/metadata/constraint/' + name).pipe(map(response => {
|
|
41
|
+
return response.data;
|
|
42
|
+
}));
|
|
43
|
+
}
|
|
44
|
+
getUserColumnDataSource(className, view, field) {
|
|
45
|
+
return this.http.get('api/data/custom', {
|
|
46
|
+
params: {
|
|
47
|
+
executor: 'com.cs.system.data.grid.header.filter.GetUserColumnDataSource',
|
|
48
|
+
className,
|
|
49
|
+
view: view || '',
|
|
50
|
+
field
|
|
51
|
+
}
|
|
52
|
+
}).pipe(map(response => {
|
|
53
|
+
response.data.list.unshift({
|
|
54
|
+
value: '',
|
|
55
|
+
text: '(空白)'
|
|
56
|
+
});
|
|
57
|
+
response.data.list.push({
|
|
58
|
+
value: '__',
|
|
59
|
+
text: '',
|
|
60
|
+
visible: false
|
|
61
|
+
});
|
|
62
|
+
return response.data.list;
|
|
63
|
+
}));
|
|
64
|
+
}
|
|
65
|
+
getUnitColumnDataSource(className, view, field) {
|
|
66
|
+
return this.http.get('api/data/custom', {
|
|
67
|
+
params: {
|
|
68
|
+
executor: 'com.cs.system.data.grid.header.filter.GetUnitColumnDataSource',
|
|
69
|
+
className,
|
|
70
|
+
view: view || '',
|
|
71
|
+
field
|
|
72
|
+
}
|
|
73
|
+
}).pipe(map(response => {
|
|
74
|
+
response.data.list.unshift({
|
|
75
|
+
value: '',
|
|
76
|
+
text: '(空白)'
|
|
77
|
+
});
|
|
78
|
+
response.data.list.push({
|
|
79
|
+
value: '__',
|
|
80
|
+
text: '',
|
|
81
|
+
visible: false
|
|
82
|
+
});
|
|
83
|
+
return response.data.list;
|
|
84
|
+
}));
|
|
85
|
+
}
|
|
86
|
+
getConstraintColumnDataSource(className, view, field, constraintName) {
|
|
87
|
+
return this.http.get('api/data/custom', {
|
|
88
|
+
params: {
|
|
89
|
+
executor: 'com.cs.system.data.grid.header.filter.GetConstraintColumnDataSource',
|
|
90
|
+
className,
|
|
91
|
+
view: view || '',
|
|
92
|
+
field,
|
|
93
|
+
constraintName
|
|
94
|
+
}
|
|
95
|
+
}).pipe(map(response => {
|
|
96
|
+
response.data.list.unshift({
|
|
97
|
+
value: '',
|
|
98
|
+
text: '(空白)'
|
|
99
|
+
});
|
|
100
|
+
response.data.list.push({
|
|
101
|
+
value: '__',
|
|
102
|
+
text: '',
|
|
103
|
+
visible: false
|
|
104
|
+
});
|
|
105
|
+
return response.data.list;
|
|
106
|
+
}));
|
|
107
|
+
}
|
|
108
|
+
getColumnDataSource(className, view, field) {
|
|
109
|
+
return this.http.get('api/data/custom', {
|
|
110
|
+
params: {
|
|
111
|
+
executor: 'com.cs.system.data.grid.header.filter.GetColumnDataSource',
|
|
112
|
+
className,
|
|
113
|
+
view: view || '',
|
|
114
|
+
field
|
|
115
|
+
}
|
|
116
|
+
}).pipe(map(response => {
|
|
117
|
+
return response.data.list;
|
|
118
|
+
}));
|
|
119
|
+
}
|
|
39
120
|
}
|
|
40
121
|
DataGridService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DataGridService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
41
122
|
DataGridService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DataGridService });
|
|
42
123
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DataGridService, decorators: [{
|
|
43
124
|
type: Injectable
|
|
44
125
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
126
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1ncmlkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcnMtYW50L3NyYy9kYXRhLWdyaWQvZGF0YS1ncmlkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7QUFHekIsTUFBTSxPQUFPLGVBQWU7SUFDMUIsWUFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUNwQyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsTUFBVyxFQUFFLFNBQWMsRUFBRSxJQUFVO1FBQ3ZELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQU0sb0JBQW9CLEdBQUcsU0FBUyxFQUFFO1lBQzFELE1BQU0sRUFBRTtnQkFDTixNQUFNO2dCQUNOLElBQUksRUFBRSxJQUFJLElBQUksRUFBRTthQUNqQjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBVyxFQUFFLFNBQWMsRUFBRSxHQUFRLEVBQUUsUUFBYztRQUMxRCxJQUFJLEdBQUcsR0FBRyxXQUFXLEdBQUcsU0FBUyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDOUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBTSxHQUFHLEVBQUU7WUFDN0IsTUFBTSxFQUFFO2dCQUNOLE1BQU07Z0JBQ04sUUFBUSxFQUFFLFFBQVEsSUFBSSxFQUFFO2FBQ3pCO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sQ0FBQyxNQUFXLEVBQUUsU0FBYyxFQUFFLE1BQVc7UUFDOUMsTUFBTSxHQUFHLEdBQUcsV0FBVyxHQUFHLFNBQVMsQ0FBQztRQUNwQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFNLEdBQUcsR0FBRyxN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SSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQ3pCLEtBQUssRUFBRSxFQUFFO2dCQUNULElBQUksRUFBRSxNQUFNO2FBQ2IsQ0FBQyxDQUFDO1lBQ0gsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUN0QixLQUFLLEVBQUUsSUFBSTtnQkFDWCxJQUFJLEVBQUUsRUFBRTtnQkFDUixPQUFPLEVBQUUsS0FBSzthQUNmLENBQUMsQ0FBQztZQUNILE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxTQUFjLEVBQUUsSUFBUyxFQUFFLEtBQVU7UUFDdkQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBTSxpQkFBaUIsRUFBRTtZQUMzQyxNQUFNLEVBQUU7Z0JBQ04sUUFBUSxFQUFFLDJEQUEyRDtnQkFDckUsU0FBUztnQkFDVCxJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUU7Z0JBQ2hCLEtBQUs7YUFDTjtTQUNGLENBQUMsQ0FBQyxJQUFJLENBQ0wsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2IsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs7NEdBcklVLGVBQWU7Z0hBQWYsZUFBZTsyRkFBZixlQUFlO2tCQUQzQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7SHR0cENsaWVudH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5pbXBvcnQge21hcH0gZnJvbSBcInJ4anNcIjtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERhdGFHcmlkU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge1xuICB9XG5cbiAgZ2V0TWV0YWRhdGFCeVZpZXcodGVuYW50OiBhbnksIGNsYXNzTmFtZTogYW55LCB2aWV3PzogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PignYXBpL21ldGFkYXRhL3ZpZXcvJyArIGNsYXNzTmFtZSwge1xuICAgICAgcGFyYW1zOiB7XG4gICAgICAgIHRlbmFudCxcbiAgICAgICAgdmlldzogdmlldyB8fCAnJ1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0T25lKHRlbmFudDogYW55LCBjbGFzc05hbWU6IGFueSwgb2lkOiBhbnksIHRlbXBsYXRlPzogYW55KSB7XG4gICAgbGV0IGFwaSA9ICdhcGkvZGF0YS8nICsgY2xhc3NOYW1lICsgJy8nICsgb2lkO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oYXBpLCB7XG4gICAgICBwYXJhbXM6IHtcbiAgICAgICAgdGVuYW50LFxuICAgICAgICB0ZW1wbGF0ZTogdGVtcGxhdGUgfHwgJydcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldE1hbnkodGVuYW50OiBhbnksIGNsYXNzTmFtZTogYW55LCBwYXJhbXM6IGFueSkge1xuICAgIGNvbnN0IGFwaSA9ICdhcGkvZGF0YS8nICsgY2xhc3NOYW1lO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oYXBpICsgcGFyYW1zLCB7XG4gICAgICBwYXJhbXM6IHtcbiAgICAgICAgdGVuYW50XG4gICAgICB9XG4gICAgfSkucGlwZShcbiAgICAgIG1hcChyZXNwb25zZSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGF0YTogcmVzcG9uc2UuZGF0YS5saXN0LFxuICAgICAgICAgIHRvdGFsQ291bnQ6IHJlc3BvbnNlLmRhdGEuY291bnRcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZ2V0Q29uc3RyYWludEVudHJpZXMobmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PignYXBpL21ldGFkYXRhL2NvbnN0cmFpbnQvJyArIG5hbWUpLnBpcGUoXG4gICAgICBtYXAocmVzcG9uc2UgPT4ge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGdldFVzZXJDb2x1bW5EYXRhU291cmNlKGNsYXNzTmFtZTogYW55LCB2aWV3OiBhbnksIGZpZWxkOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KCdhcGkvZGF0YS9jdXN0b20nLCB7XG4gICAgICBwYXJhbXM6IHtcbiAgICAgICAgZXhlY3V0b3I6ICdjb20uY3Muc3lzdGVtLmRhdGEuZ3JpZC5oZWFkZXIuZmlsdGVyLkdldFVzZXJDb2x1bW5EYXRhU291cmNlJyxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICB2aWV3OiB2aWV3IHx8ICcnLFxuICAgICAgICBmaWVsZFxuICAgICAgfVxuICAgIH0pLnBpcGUoXG4gICAgICBtYXAocmVzcG9uc2UgPT4ge1xuICAgICAgICByZXNwb25zZS5kYXRhLmxpc3QudW5zaGlmdCh7XG4gICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgIHRleHQ6ICco56m655m9KSdcbiAgICAgICAgfSk7XG4gICAgICAgIHJlc3BvbnNlLmRhdGEubGlzdC5wdXNoKHtcbiAgICAgICAgICB2YWx1ZTogJ19fJyxcbiAgICAgICAgICB0ZXh0OiAnJyxcbiAgICAgICAgICB2aXNpYmxlOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGEubGlzdDtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGdldFVuaXRDb2x1bW5EYXRhU291cmNlKGNsYXNzTmFtZTogYW55LCB2aWV3OiBhbnksIGZpZWxkOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KCdhcGkvZGF0YS9jdXN0b20nLCB7XG4gICAgICBwYXJhbXM6IHtcbiAgICAgICAgZXhlY3V0b3I6ICdjb20uY3Muc3lzdGVtLmRhdGEuZ3JpZC5oZWFkZXIuZmlsdGVyLkdldFVuaXRDb2x1bW5EYXRhU291cmNlJyxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICB2aWV3OiB2aWV3IHx8ICcnLFxuICAgICAgICBmaWVsZFxuICAgICAgfVxuICAgIH0pLnBpcGUoXG4gICAgICBtYXAocmVzcG9uc2UgPT4ge1xuICAgICAgICByZXNwb25zZS5kYXRhLmxpc3QudW5zaGlmdCh7XG4gICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgIHRleHQ6ICco56m655m9KSdcbiAgICAgICAgfSk7XG4gICAgICAgIHJlc3BvbnNlLmRhdGEubGlzdC5wdXNoKHtcbiAgICAgICAgICB2YWx1ZTogJ19fJyxcbiAgICAgICAgICB0ZXh0OiAnJyxcbiAgICAgICAgICB2aXNpYmxlOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGEubGlzdDtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGdldENvbnN0cmFpbnRDb2x1bW5EYXRhU291cmNlKGNsYXNzTmFtZTogYW55LCB2aWV3OiBhbnksIGZpZWxkOiBhbnksIGNvbnN0cmFpbnROYW1lOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KCdhcGkvZGF0YS9jdXN0b20nLCB7XG4gICAgICBwYXJhbXM6IHtcbiAgICAgICAgZXhlY3V0b3I6ICdjb20uY3Muc3lzdGVtLmRhdGEuZ3JpZC5oZWFkZXIuZmlsdGVyLkdldENvbnN0cmFpbnRDb2x1bW5EYXRhU291cmNlJyxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICB2aWV3OiB2aWV3IHx8ICcnLFxuICAgICAgICBmaWVsZCxcbiAgICAgICAgY29uc3RyYWludE5hbWVcbiAgICAgIH1cbiAgICB9KS5waXBlKFxuICAgICAgbWFwKHJlc3BvbnNlID0+IHtcbiAgICAgICAgcmVzcG9uc2UuZGF0YS5saXN0LnVuc2hpZnQoe1xuICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICB0ZXh0OiAnKOepuueZvSknXG4gICAgICAgIH0pO1xuICAgICAgICByZXNwb25zZS5kYXRhLmxpc3QucHVzaCh7XG4gICAgICAgICAgdmFsdWU6ICdfXycsXG4gICAgICAgICAgdGV4dDogJycsXG4gICAgICAgICAgdmlzaWJsZTogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXNwb25zZS5kYXRhLmxpc3Q7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBnZXRDb2x1bW5EYXRhU291cmNlKGNsYXNzTmFtZTogYW55LCB2aWV3OiBhbnksIGZpZWxkOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KCdhcGkvZGF0YS9jdXN0b20nLCB7XG4gICAgICBwYXJhbXM6IHtcbiAgICAgICAgZXhlY3V0b3I6ICdjb20uY3Muc3lzdGVtLmRhdGEuZ3JpZC5oZWFkZXIuZmlsdGVyLkdldENvbHVtbkRhdGFTb3VyY2UnLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgIHZpZXc6IHZpZXcgfHwgJycsXG4gICAgICAgIGZpZWxkXG4gICAgICB9XG4gICAgfSkucGlwZShcbiAgICAgIG1hcChyZXNwb25zZSA9PiB7XG4gICAgICAgIHJldHVybiByZXNwb25zZS5kYXRhLmxpc3Q7XG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|