sidesys-generic-ui 2.4.3 → 2.4.6
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/esm2022/lib/avatar/components/profile-group/s-profile-group.component.mjs +13 -13
- package/esm2022/lib/avatar/s-avatar.component.mjs +19 -15
- package/esm2022/lib/badge/s-badge.component.mjs +1 -1
- package/esm2022/lib/breadcrum/s-breadcrum.component.mjs +1 -1
- package/esm2022/lib/card/s-card.component.mjs +3 -3
- package/esm2022/lib/collapse/s-collapse.component.mjs +3 -3
- package/esm2022/lib/empty/empty.component.mjs +1 -1
- package/esm2022/lib/grid-multi-inputs/grid-multi-inputs.component.mjs +1 -1
- package/esm2022/lib/icon-material/s-icon-material.component.mjs +6 -8
- package/esm2022/lib/icon-material/s-icon-material.model.mjs +1 -1
- package/esm2022/lib/input/components/calendar/s-calendar.component.mjs +1 -1
- package/esm2022/lib/input/components/color/s-color.component.mjs +1 -1
- package/esm2022/lib/input/components/error-control/s-error-control.component.mjs +1 -1
- package/esm2022/lib/input/components/input/s-input-model.mjs +3 -1
- package/esm2022/lib/input/components/input/s-input.component.mjs +16 -23
- package/esm2022/lib/input/components/input-number/s-input-number.component.mjs +1 -1
- package/esm2022/lib/input/components/time/s-time.component.mjs +1 -1
- package/esm2022/lib/list/s-list.component.mjs +1 -1
- package/esm2022/lib/list-simple/s-list-simple.component.mjs +2 -2
- package/esm2022/lib/modal/modal-confirm/modal-confirm.component.mjs +4 -4
- package/esm2022/lib/modal/modal-confirm/models/modal-confirm.interface.mjs +1 -1
- package/esm2022/lib/navbar/components/icon-menu/components/s-notificaction.component.mjs +1 -1
- package/esm2022/lib/navbar/components/icon-menu/s-icon-menu.component.mjs +1 -1
- package/esm2022/lib/navbar/components/menu-main/s-menu-main.component.mjs +1 -1
- package/esm2022/lib/navbar/s-navbar.component.mjs +3 -3
- package/esm2022/lib/pagination/s-pagination.component.mjs +1 -1
- package/esm2022/lib/popup/s-popup.component.mjs +1 -1
- package/esm2022/lib/precode/s-precode.component.mjs +1 -1
- package/esm2022/lib/progressbar/s-progressbar.component.mjs +1 -1
- package/esm2022/lib/select/select/s-select.component.mjs +10 -9
- package/esm2022/lib/select/select-multiple/s-select-multiple.component.mjs +3 -3
- package/esm2022/lib/select/select-multiple-old/s-select-multiple-old.component.mjs +3 -3
- package/esm2022/lib/select/select-simple/s-select-simple.component.mjs +3 -3
- package/esm2022/lib/sidebar/s-sidebar.component.mjs +3 -3
- package/esm2022/lib/sub-menu/s-sub-menu.component.mjs +3 -3
- package/esm2022/lib/table-complete/table-complete.component.mjs +14 -5
- package/esm2022/lib/table-double/table-double.component.mjs +188 -63
- package/esm2022/lib/table-double/table-double.model.mjs +1 -1
- package/esm2022/lib/table-double-complete/index.mjs +3 -0
- package/esm2022/lib/table-double-complete/table-double-complete.component.mjs +270 -0
- package/esm2022/lib/table-double-complete/table-double-complete.model.mjs +2 -0
- package/esm2022/lib/table-t/s-tablet-model.mjs +1 -1
- package/esm2022/lib/table-t/s-tablet.component.mjs +7 -4
- package/esm2022/lib/table-t/table-actions-buttons/table-actions-buttons.component.mjs +3 -3
- package/esm2022/lib/tabs/s-tabs.component.mjs +2 -2
- package/esm2022/lib/timeline/s-timeline.component.mjs +3 -3
- package/esm2022/lib/toast/s-toast.component.mjs +1 -1
- package/esm2022/lib/toggle-switch/s-toggle-switch.component.mjs +3 -3
- package/esm2022/lib/toggle-switch/toggle-switch-form/toggle-switch-form.component.mjs +1 -1
- package/esm2022/lib/toolbar-top/toolbar-top.component.mjs +4 -6
- package/esm2022/lib/tree-list/s-tree-list.component.mjs +1 -1
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/sidesys-generic-ui.mjs +574 -184
- package/fesm2022/sidesys-generic-ui.mjs.map +1 -1
- package/lib/avatar/components/profile-group/s-profile-group.component.d.ts +1 -1
- package/lib/avatar/s-avatar.component.d.ts +1 -3
- package/lib/icon-material/s-icon-material.component.d.ts +1 -2
- package/lib/icon-material/s-icon-material.model.d.ts +1 -2
- package/lib/input/components/input/s-input-model.d.ts +2 -0
- package/lib/input/components/input/s-input.component.d.ts +2 -2
- package/lib/modal/modal-confirm/models/modal-confirm.interface.d.ts +1 -1
- package/lib/table-complete/table-complete.component.d.ts +4 -0
- package/lib/table-double/table-double.component.d.ts +42 -25
- package/lib/table-double/table-double.model.d.ts +23 -4
- package/lib/table-double-complete/index.d.ts +2 -0
- package/lib/table-double-complete/table-double-complete.component.d.ts +41 -0
- package/lib/table-double-complete/table-double-complete.model.d.ts +39 -0
- package/lib/table-t/s-tablet-model.d.ts +2 -0
- package/lib/table-t/s-tablet.component.d.ts +2 -1
- package/lib/toolbar-top/toolbar-top.component.d.ts +2 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZG91YmxlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2lkZXN5cy1nZW5lcmljLXVpL3NyYy9saWIvdGFibGUtZG91YmxlL3RhYmxlLWRvdWJsZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU29ydFRhYmxlLCBTVGFibGVDb21wbGV0ZSB9IGZyb20gJy4uLy4uL3B1YmxpYy1hcGknO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNUYWJsZURvdWJsZSB7XG4gIGRyYWdBbmREcm9wPzogYm9vbGVhbjtcbiAgdGFibGVMZWZ0Q29uZmlnOiBTVGFibGVDb21wbGV0ZTtcbiAgdGFibGVSaWdodENvbmZpZzogU1RhYmxlQ29tcGxldGU7XG4gIHRhYmxlTGVmdEl0ZW1zOiBTVGFibGVEb3VibGVJdGVtW107XG4gIHRhYmxlUmlnaHRJdGVtczogU1RhYmxlRG91YmxlSXRlbVtdO1xuICBhZGRpdGlvbkJ1dHRvbj86IGJvb2xlYW47XG4gIGlzVHJlZU1vZGU/OiBib29sZWFuO1xuICBkaXNhYmxlTGVmdFJvd1NlbGVjdGlvbj86IGJvb2xlYW47XG4gIHNob3dPcmRlckJ1dHRvbnM/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNUYWJsZURvdWJsZUl0ZW0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGlkOiBzdHJpbmc7XG4gIGNoZWNrZWQ6IGJvb2xlYW47XG4gIHNlbGVjdGVkPzogYm9vbGVhbjtcbiAgaWNvbkFjdGlvbj86IHN0cmluZztcbiAgbGV2ZWw/OiBudW1iZXI7XG4gIGV4cGFuZGVkPzogYm9vbGVhbjtcbiAgaGFzQ2hpbGRyZW4/OiBib29sZWFuO1xuICBwYXJlbnRJZD86IHN0cmluZyB8IG51bGw7XG4gIF9faXNGaXJzdFNpYmxpbmc/OiBib29sZWFuO1xuICBfX2lzTGFzdFNpYmxpbmc/OiBib29sZWFuO1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU1RhYmxlc0RhdGEge1xuICB0YWJsZUxlZnRJdGVtczogU1RhYmxlRG91YmxlSXRlbVtdO1xuICB0YWJsZVJpZ2h0SXRlbXM6IFNUYWJsZURvdWJsZUl0ZW1bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTVGFibGVEb3VibGVFdmVudDxUPiB7XG4gIGlzTGVmdFRhYmxlOiBib29sZWFuO1xuICB2YWx1ZTogVDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTVGFibGVEb3VibGVBY3Rpb25FdmVudCB7XG4gIGlzTGVmdFRhYmxlOiBib29sZWFuO1xuICBpZDogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBTVGFibGVEb3VibGVCb29sZWFuRXZlbnQgPSBTVGFibGVEb3VibGVFdmVudDxib29sZWFuPjtcbmV4cG9ydCB0eXBlIFNUYWJsZURvdWJsZVN0cmluZ0V2ZW50ID0gU1RhYmxlRG91YmxlRXZlbnQ8c3RyaW5nPjtcbmV4cG9ydCB0eXBlIFNUYWJsZURvdWJsZVN0cmluZ0FycmF5RXZlbnQgPSBTVGFibGVEb3VibGVFdmVudDxzdHJpbmdbXT47XG5leHBvcnQgdHlwZSBTVGFibGVEb3VibGVOdW1iZXJFdmVudCA9IFNUYWJsZURvdWJsZUV2ZW50PG51bWJlcj47XG5leHBvcnQgdHlwZSBTVGFibGVEb3VibGVTb3J0RXZlbnQgPSBTVGFibGVEb3VibGVFdmVudDxTb3J0VGFibGU+O1xuXG5leHBvcnQgdHlwZSBSZW9yZGVyRGlyZWN0aW9uID0gJ3RvcCcgfCAndXAnIHwgJ2Rvd24nIHwgJ2JvdHRvbSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU1RhYmxlRG91YmxlUmVvcmRlckV2ZW50IHtcbiAgaXRlbUlkOiBzdHJpbmc7XG4gIGRpcmVjdGlvbjogUmVvcmRlckRpcmVjdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTVGFibGVEb3VibGVTd2l0Y2hFdmVudCBleHRlbmRzIFNUYWJsZURvdWJsZUV2ZW50PGJvb2xlYW4+IHtcbiAgaXRlbUlkOiBzdHJpbmc7XG4gIGNvbHVtbklkOiBzdHJpbmc7XG59XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './table-double-complete.component';
|
|
2
|
+
export * from './table-double-complete.model';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaWRlc3lzLWdlbmVyaWMtdWkvc3JjL2xpYi90YWJsZS1kb3VibGUtY29tcGxldGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLCtCQUErQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90YWJsZS1kb3VibGUtY29tcGxldGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGUtZG91YmxlLWNvbXBsZXRlLm1vZGVsJztcbiJdfQ==
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewEncapsulation, signal, inject, } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { STabsModule } from '../tabs';
|
|
4
|
+
import { STableDoubleComponent } from '../table-double/table-double.component';
|
|
5
|
+
import { STranslateService } from '../services/translate/translate.service';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "../tabs/s-tabs.component";
|
|
8
|
+
export class STableDoubleCompleteComponent {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.updateEvent = new EventEmitter();
|
|
11
|
+
this.actionPositionEvent = new EventEmitter();
|
|
12
|
+
this.bottomStatusBarPositionEvent = new EventEmitter();
|
|
13
|
+
this.checkAllPositionEvent = new EventEmitter();
|
|
14
|
+
this.deletePositionEvent = new EventEmitter();
|
|
15
|
+
this.emptyPositionEvent = new EventEmitter();
|
|
16
|
+
this.filterPositionEvent = new EventEmitter();
|
|
17
|
+
this.multiSelectPositionEvent = new EventEmitter();
|
|
18
|
+
this.orderByPositionEvent = new EventEmitter();
|
|
19
|
+
this.pillButtonPositionEvent = new EventEmitter();
|
|
20
|
+
this.scrollPositionEvent = new EventEmitter();
|
|
21
|
+
this.selectPositionEvent = new EventEmitter();
|
|
22
|
+
this.switchChangeEvent = new EventEmitter();
|
|
23
|
+
this.rightTableState = [];
|
|
24
|
+
this.expandedNodes = new Map();
|
|
25
|
+
this._sTranslateService = inject(STranslateService);
|
|
26
|
+
}
|
|
27
|
+
ngOnInit() {
|
|
28
|
+
this.rightTableState = [...(this.config.tableConfig.tableRightItems ?? [])];
|
|
29
|
+
const selectedTab = this.config.tabs.find(t => t.selected);
|
|
30
|
+
if (selectedTab) {
|
|
31
|
+
this.setActiveTab(selectedTab);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
onTabSelect(tab) {
|
|
35
|
+
this.setActiveTab(tab);
|
|
36
|
+
}
|
|
37
|
+
setActiveTab(tab) {
|
|
38
|
+
this.activeTabKey = String(tab.value ?? tab.text);
|
|
39
|
+
const leftItems = this.config.itemsByTab[this.activeTabKey] ?? [];
|
|
40
|
+
const tableLeftItems = this.mapToTableDoubleItems(leftItems);
|
|
41
|
+
let tableRightItems = this.mapToTableDoubleItems(this.rightTableState);
|
|
42
|
+
if (this.config.treeMode) {
|
|
43
|
+
tableRightItems = this.flattenTree(this.buildTree(this.rightTableState));
|
|
44
|
+
}
|
|
45
|
+
this.tableDoubleAdapter = this.buildTableDoubleAdapter(tableLeftItems, tableRightItems);
|
|
46
|
+
}
|
|
47
|
+
onUpdateTables(event) {
|
|
48
|
+
const prevRightIds = new Set(this.rightTableState.map(i => i.id));
|
|
49
|
+
const sourceLeft = this.config.itemsByTab[this.activeTabKey] ?? [];
|
|
50
|
+
const selectedRightItems = event.tableRightItems.filter(i => i.selected);
|
|
51
|
+
const parentId = this.config.treeMode && selectedRightItems.length === 1 ? selectedRightItems[0].id : null;
|
|
52
|
+
const nextRight = event.tableRightItems.map(item => {
|
|
53
|
+
const prev = this.rightTableState.find(r => r.id === item.id);
|
|
54
|
+
const fromLeft = sourceLeft.find(l => l.id === item.id);
|
|
55
|
+
return {
|
|
56
|
+
...(prev ?? fromLeft ?? {}),
|
|
57
|
+
id: item.id,
|
|
58
|
+
name: item.name,
|
|
59
|
+
checked: !!item.checked,
|
|
60
|
+
parentId: prev?.parentId ?? null,
|
|
61
|
+
};
|
|
62
|
+
});
|
|
63
|
+
const addedItems = nextRight.filter(i => !prevRightIds.has(i.id));
|
|
64
|
+
if (this.config.treeMode && parentId) {
|
|
65
|
+
addedItems.forEach(item => {
|
|
66
|
+
item.parentId = parentId;
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
this.rightTableState = nextRight;
|
|
70
|
+
this.resetSelections();
|
|
71
|
+
this.refreshTables();
|
|
72
|
+
}
|
|
73
|
+
refreshTables() {
|
|
74
|
+
const leftItems = this.config.itemsByTab[this.activeTabKey] ?? [];
|
|
75
|
+
const tableLeftItems = this.mapToTableDoubleItems(leftItems);
|
|
76
|
+
let tableRightItems = this.mapToTableDoubleItems(this.rightTableState);
|
|
77
|
+
if (this.config.treeMode) {
|
|
78
|
+
tableRightItems = this.flattenTree(this.buildTree(this.rightTableState));
|
|
79
|
+
tableLeftItems;
|
|
80
|
+
}
|
|
81
|
+
this.tableDoubleAdapter = this.buildTableDoubleAdapter(tableLeftItems, tableRightItems);
|
|
82
|
+
this.updateEvent.emit({
|
|
83
|
+
tabKey: this.activeTabKey,
|
|
84
|
+
tableLeftItems,
|
|
85
|
+
tableRightItems,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
buildTableDoubleAdapter(leftItems, rightItems) {
|
|
89
|
+
const rightColumns = [...this.config.tableConfig.tableRightConfig.columns];
|
|
90
|
+
if (this.config.showOrderButtons && !rightColumns.some(c => c.id === 'actions')) {
|
|
91
|
+
rightColumns.push({ id: 'actions', title: this._sTranslateService.instant('ui.generic.actions') });
|
|
92
|
+
}
|
|
93
|
+
return {
|
|
94
|
+
additionButton: true,
|
|
95
|
+
isTreeMode: !!this.config.treeMode,
|
|
96
|
+
showOrderButtons: !!this.config.showOrderButtons,
|
|
97
|
+
disableLeftRowSelection: true,
|
|
98
|
+
tableLeftConfig: {
|
|
99
|
+
...this.config.tableConfig.tableLeftConfig,
|
|
100
|
+
totalItems: leftItems.length,
|
|
101
|
+
isTreeMode: false,
|
|
102
|
+
configBottomStatusBar: signal({
|
|
103
|
+
counter: leftItems.filter(i => i.checked).length,
|
|
104
|
+
total: leftItems.length,
|
|
105
|
+
disabled: leftItems.length === 0,
|
|
106
|
+
}),
|
|
107
|
+
},
|
|
108
|
+
tableRightConfig: {
|
|
109
|
+
...this.config.tableConfig.tableRightConfig,
|
|
110
|
+
columns: rightColumns,
|
|
111
|
+
totalItems: rightItems.length,
|
|
112
|
+
isTreeMode: !!this.config.treeMode,
|
|
113
|
+
configBottomStatusBar: signal({
|
|
114
|
+
counter: rightItems.filter(i => i.checked).length,
|
|
115
|
+
total: rightItems.length,
|
|
116
|
+
disabled: rightItems.length === 0,
|
|
117
|
+
}),
|
|
118
|
+
},
|
|
119
|
+
tableLeftItems: leftItems,
|
|
120
|
+
tableRightItems: rightItems,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
mapToTableDoubleItems(items) {
|
|
124
|
+
return items.map((item, index) => ({
|
|
125
|
+
...item,
|
|
126
|
+
name: item.name ?? '',
|
|
127
|
+
checked: item.checked ?? false,
|
|
128
|
+
}));
|
|
129
|
+
}
|
|
130
|
+
buildTree(items) {
|
|
131
|
+
const map = new Map();
|
|
132
|
+
const roots = [];
|
|
133
|
+
items.forEach(item => {
|
|
134
|
+
map.set(item.id, { ...item, children: [] });
|
|
135
|
+
});
|
|
136
|
+
map.forEach(item => {
|
|
137
|
+
if (item.parentId) {
|
|
138
|
+
const parent = map.get(item.parentId);
|
|
139
|
+
if (parent)
|
|
140
|
+
parent.children.push(item);
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
roots.push(item);
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
return roots;
|
|
147
|
+
}
|
|
148
|
+
flattenTree(nodes, level = 0) {
|
|
149
|
+
let result = [];
|
|
150
|
+
for (let i = 0; i < nodes.length; i++) {
|
|
151
|
+
const node = nodes[i];
|
|
152
|
+
const hasChildren = !!node.children?.length;
|
|
153
|
+
const isExpanded = this.expandedNodes.get(node.id) ?? true;
|
|
154
|
+
result.push({
|
|
155
|
+
...node,
|
|
156
|
+
name: node.name ?? '',
|
|
157
|
+
checked: !!node.checked,
|
|
158
|
+
parentId: node.parentId ?? null,
|
|
159
|
+
level: level,
|
|
160
|
+
expanded: isExpanded,
|
|
161
|
+
hasChildren: hasChildren,
|
|
162
|
+
});
|
|
163
|
+
if (hasChildren && isExpanded && node.children) {
|
|
164
|
+
result = result.concat(this.flattenTree(node.children, level + 1));
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return result;
|
|
168
|
+
}
|
|
169
|
+
resetSelections() {
|
|
170
|
+
const leftItems = this.config.itemsByTab[this.activeTabKey] ?? [];
|
|
171
|
+
leftItems.forEach(i => {
|
|
172
|
+
i.checked = false;
|
|
173
|
+
i.selected = false;
|
|
174
|
+
});
|
|
175
|
+
this.rightTableState.forEach(i => {
|
|
176
|
+
i.checked = false;
|
|
177
|
+
i.selected = false;
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
onSwitchChange(event) {
|
|
181
|
+
if (event.isLeftTable) {
|
|
182
|
+
const leftItems = this.config.itemsByTab[this.activeTabKey] ?? [];
|
|
183
|
+
const item = leftItems.find(i => i.id === event.itemId);
|
|
184
|
+
if (item)
|
|
185
|
+
item[event.columnId] = event.value;
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
const item = this.rightTableState.find(i => i.id === event.itemId);
|
|
189
|
+
if (item)
|
|
190
|
+
item[event.columnId] = event.value;
|
|
191
|
+
}
|
|
192
|
+
this.switchChangeEvent.emit(event);
|
|
193
|
+
}
|
|
194
|
+
toggleNodeExpansion(nodeId) {
|
|
195
|
+
const currentState = this.expandedNodes.get(nodeId) ?? true;
|
|
196
|
+
this.expandedNodes.set(nodeId, !currentState);
|
|
197
|
+
this.refreshTables();
|
|
198
|
+
}
|
|
199
|
+
onReorderItem(event) {
|
|
200
|
+
const { itemId, direction } = event;
|
|
201
|
+
const item = this.rightTableState.find(i => i.id === itemId);
|
|
202
|
+
if (!item)
|
|
203
|
+
return;
|
|
204
|
+
const parentId = item.parentId ?? null;
|
|
205
|
+
const siblings = this.rightTableState.filter(i => (i.parentId ?? null) === parentId);
|
|
206
|
+
const siblingIndex = siblings.findIndex(i => i.id === itemId);
|
|
207
|
+
if (siblingIndex === -1)
|
|
208
|
+
return;
|
|
209
|
+
let targetIndex;
|
|
210
|
+
switch (direction) {
|
|
211
|
+
case 'top':
|
|
212
|
+
targetIndex = 0;
|
|
213
|
+
break;
|
|
214
|
+
case 'up':
|
|
215
|
+
targetIndex = siblingIndex - 1;
|
|
216
|
+
break;
|
|
217
|
+
case 'down':
|
|
218
|
+
targetIndex = siblingIndex + 1;
|
|
219
|
+
break;
|
|
220
|
+
case 'bottom':
|
|
221
|
+
targetIndex = siblings.length - 1;
|
|
222
|
+
break;
|
|
223
|
+
default:
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
if (targetIndex < 0 || targetIndex >= siblings.length || targetIndex === siblingIndex)
|
|
227
|
+
return;
|
|
228
|
+
siblings.splice(siblingIndex, 1);
|
|
229
|
+
siblings.splice(targetIndex, 0, item);
|
|
230
|
+
this.rightTableState = this.rightTableState.filter(i => (i.parentId ?? null) !== parentId);
|
|
231
|
+
const insertRef = parentId ? this.rightTableState.findIndex(i => i.id === parentId) + 1 : 0;
|
|
232
|
+
this.rightTableState.splice(insertRef, 0, ...siblings);
|
|
233
|
+
this.refreshTables();
|
|
234
|
+
}
|
|
235
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: STableDoubleCompleteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
236
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: STableDoubleCompleteComponent, isStandalone: true, selector: "s-table-double-complete", inputs: { config: "config" }, outputs: { updateEvent: "updateEvent", actionPositionEvent: "actionPositionEvent", bottomStatusBarPositionEvent: "bottomStatusBarPositionEvent", checkAllPositionEvent: "checkAllPositionEvent", deletePositionEvent: "deletePositionEvent", emptyPositionEvent: "emptyPositionEvent", filterPositionEvent: "filterPositionEvent", multiSelectPositionEvent: "multiSelectPositionEvent", orderByPositionEvent: "orderByPositionEvent", pillButtonPositionEvent: "pillButtonPositionEvent", scrollPositionEvent: "scrollPositionEvent", selectPositionEvent: "selectPositionEvent", switchChangeEvent: "switchChangeEvent" }, ngImport: i0, template: "<div class=\"s-table-double-complete\">\n <s-tabs\n [tabs]=\"config.tabs\"\n [configTabs]=\"config.configTabs\"\n (eventSelect)=\"onTabSelect($event)\">\n </s-tabs>\n\n <s-table-double\n [config]=\"tableDoubleAdapter\"\n (eventUpdateTables)=\"onUpdateTables($event)\"\n (actionPositionEvent)=\"actionPositionEvent.emit($event)\"\n (bottomStatusBarPositionEvent)=\"bottomStatusBarPositionEvent.emit($event)\"\n (checkAllPositionEvent)=\"checkAllPositionEvent.emit($event)\"\n (deletePositionEvent)=\"deletePositionEvent.emit($event)\"\n (emptyPositionEvent)=\"emptyPositionEvent.emit($event)\"\n (filterPositionEvent)=\"filterPositionEvent.emit($event)\"\n (multiSelectPositionEvent)=\"multiSelectPositionEvent.emit($event)\"\n (orderByPositionEvent)=\"orderByPositionEvent.emit($event)\"\n (pillButtonPositionEvent)=\"pillButtonPositionEvent.emit($event)\"\n (scrollPositionEvent)=\"scrollPositionEvent.emit($event)\"\n (toggleExpandEvent)=\"toggleNodeExpansion($event)\"\n (reorderItemEvent)=\"onReorderItem($event)\"\n (switchChangeEvent)=\"onSwitchChange($event)\">\n</s-table-double>\n</div>\n", styles: [".s-table-double-complete{display:flex;flex-direction:row;gap:.5rem}s-table-double{width:100%}s-tabs{width:15%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: STabsModule }, { kind: "component", type: i1.STabsComponent, selector: "s-tabs", inputs: ["tabs", "configTabs"], outputs: ["eventSelect"] }, { kind: "component", type: STableDoubleComponent, selector: "s-table-double", inputs: ["config"], outputs: ["actionPositionEvent", "bottomStatusBarPositionEvent", "checkAllPositionEvent", "deletePositionEvent", "emptyPositionEvent", "eventUpdateTables", "filterPositionEvent", "multiSelectPositionEvent", "orderByPositionEvent", "pagePositionEvent", "paginationPositionEvent", "pillButtonPositionEvent", "scrollPositionEvent", "selectPositionEvent", "rowSelectPositionEvent", "actionEvent", "toggleExpandEvent", "reorderItemEvent", "switchChangeEvent"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
237
|
+
}
|
|
238
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: STableDoubleCompleteComponent, decorators: [{
|
|
239
|
+
type: Component,
|
|
240
|
+
args: [{ selector: 's-table-double-complete', standalone: true, imports: [CommonModule, STabsModule, STableDoubleComponent], encapsulation: ViewEncapsulation.None, template: "<div class=\"s-table-double-complete\">\n <s-tabs\n [tabs]=\"config.tabs\"\n [configTabs]=\"config.configTabs\"\n (eventSelect)=\"onTabSelect($event)\">\n </s-tabs>\n\n <s-table-double\n [config]=\"tableDoubleAdapter\"\n (eventUpdateTables)=\"onUpdateTables($event)\"\n (actionPositionEvent)=\"actionPositionEvent.emit($event)\"\n (bottomStatusBarPositionEvent)=\"bottomStatusBarPositionEvent.emit($event)\"\n (checkAllPositionEvent)=\"checkAllPositionEvent.emit($event)\"\n (deletePositionEvent)=\"deletePositionEvent.emit($event)\"\n (emptyPositionEvent)=\"emptyPositionEvent.emit($event)\"\n (filterPositionEvent)=\"filterPositionEvent.emit($event)\"\n (multiSelectPositionEvent)=\"multiSelectPositionEvent.emit($event)\"\n (orderByPositionEvent)=\"orderByPositionEvent.emit($event)\"\n (pillButtonPositionEvent)=\"pillButtonPositionEvent.emit($event)\"\n (scrollPositionEvent)=\"scrollPositionEvent.emit($event)\"\n (toggleExpandEvent)=\"toggleNodeExpansion($event)\"\n (reorderItemEvent)=\"onReorderItem($event)\"\n (switchChangeEvent)=\"onSwitchChange($event)\">\n</s-table-double>\n</div>\n", styles: [".s-table-double-complete{display:flex;flex-direction:row;gap:.5rem}s-table-double{width:100%}s-tabs{width:15%}\n"] }]
|
|
241
|
+
}], propDecorators: { config: [{
|
|
242
|
+
type: Input
|
|
243
|
+
}], updateEvent: [{
|
|
244
|
+
type: Output
|
|
245
|
+
}], actionPositionEvent: [{
|
|
246
|
+
type: Output
|
|
247
|
+
}], bottomStatusBarPositionEvent: [{
|
|
248
|
+
type: Output
|
|
249
|
+
}], checkAllPositionEvent: [{
|
|
250
|
+
type: Output
|
|
251
|
+
}], deletePositionEvent: [{
|
|
252
|
+
type: Output
|
|
253
|
+
}], emptyPositionEvent: [{
|
|
254
|
+
type: Output
|
|
255
|
+
}], filterPositionEvent: [{
|
|
256
|
+
type: Output
|
|
257
|
+
}], multiSelectPositionEvent: [{
|
|
258
|
+
type: Output
|
|
259
|
+
}], orderByPositionEvent: [{
|
|
260
|
+
type: Output
|
|
261
|
+
}], pillButtonPositionEvent: [{
|
|
262
|
+
type: Output
|
|
263
|
+
}], scrollPositionEvent: [{
|
|
264
|
+
type: Output
|
|
265
|
+
}], selectPositionEvent: [{
|
|
266
|
+
type: Output
|
|
267
|
+
}], switchChangeEvent: [{
|
|
268
|
+
type: Output
|
|
269
|
+
}] } });
|
|
270
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZG91YmxlLWNvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpZGVzeXMtZ2VuZXJpYy11aS9zcmMvbGliL3RhYmxlLWRvdWJsZS1jb21wbGV0ZS90YWJsZS1kb3VibGUtY29tcGxldGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2lkZXN5cy1nZW5lcmljLXVpL3NyYy9saWIvdGFibGUtZG91YmxlLWNvbXBsZXRlL3RhYmxlLWRvdWJsZS1jb21wbGV0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLGlCQUFpQixFQUVqQixNQUFNLEVBQ04sTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBb0IvRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7O0FBVTVFLE1BQU0sT0FBTyw2QkFBNkI7SUFSMUM7UUFXWSxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFtQyxDQUFDO1FBQ2xFLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDbEQsaUNBQTRCLEdBQUcsSUFBSSxZQUFZLEVBQTRCLENBQUM7UUFDNUUsMEJBQXFCLEdBQUcsSUFBSSxZQUFZLEVBQTRCLENBQUM7UUFDckUsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUNsRCx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ2pELHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFn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OzhCQUc1QixNQUFNO3NCQUFkLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0csNEJBQTRCO3NCQUFyQyxNQUFNO2dCQUNHLHFCQUFxQjtzQkFBOUIsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyx3QkFBd0I7c0JBQWpDLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNO2dCQUNHLHVCQUF1QjtzQkFBaEMsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgT25Jbml0LFxuICBzaWduYWwsXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQgeyBTVGFic01vZHVsZSB9IGZyb20gJy4uL3RhYnMnO1xuaW1wb3J0IHsgU1RhYmxlRG91YmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vdGFibGUtZG91YmxlL3RhYmxlLWRvdWJsZS5jb21wb25lbnQnO1xuXG5pbXBvcnQge1xuICBTVGFibGVEb3VibGVDb21wbGV0ZUNvbmZpZyxcbiAgU1RhYmxlRG91YmxlQ29tcGxldGVVcGRhdGVFdmVudCxcbiAgU1RhYmxlRG91YmxlQ29tcGxldGVJdGVtLFxufSBmcm9tICcuL3RhYmxlLWRvdWJsZS1jb21wbGV0ZS5tb2RlbCc7XG5cbmltcG9ydCB7IElUYWIgfSBmcm9tICcuLi90YWJzL21vZGVscyc7XG5pbXBvcnQge1xuICBTVGFibGVEb3VibGUsXG4gIFNUYWJsZXNEYXRhLFxuICBTVGFibGVEb3VibGVJdGVtLFxuICBTVGFibGVEb3VibGVCb29sZWFuRXZlbnQsXG4gIFNUYWJsZURvdWJsZVJlb3JkZXJFdmVudCxcbiAgU1RhYmxlRG91YmxlU3RyaW5nQXJyYXlFdmVudCxcbiAgU1RhYmxlRG91YmxlU29ydEV2ZW50LFxuICBTVGFibGVEb3VibGVTdHJpbmdFdmVudCxcbiAgU1RhYmxlRG91YmxlU3dpdGNoRXZlbnQsXG59IGZyb20gJy4uL3RhYmxlLWRvdWJsZS90YWJsZS1kb3VibGUubW9kZWwnO1xuaW1wb3J0IHsgU1RyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90cmFuc2xhdGUvdHJhbnNsYXRlLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzLXRhYmxlLWRvdWJsZS1jb21wbGV0ZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFNUYWJzTW9kdWxlLCBTVGFibGVEb3VibGVDb21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUtZG91YmxlLWNvbXBsZXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3RhYmxlLWRvdWJsZS1jb21wbGV0ZS5jb21wb25lbnQuc2NzcycsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFNUYWJsZURvdWJsZUNvbXBsZXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgY29uZmlnITogU1RhYmxlRG91YmxlQ29tcGxldGVDb25maWc7XG5cbiAgQE91dHB1dCgpIHVwZGF0ZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxTVGFibGVEb3VibGVDb21wbGV0ZVVwZGF0ZUV2ZW50PigpO1xuICBAT3V0cHV0KCkgYWN0aW9uUG9zaXRpb25FdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIGJvdHRvbVN0YXR1c0JhclBvc2l0aW9uRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPFNUYWJsZURvdWJsZUJvb2xlYW5FdmVudD4oKTtcbiAgQE91dHB1dCgpIGNoZWNrQWxsUG9zaXRpb25FdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8U1RhYmxlRG91YmxlQm9vbGVhbkV2ZW50PigpO1xuICBAT3V0cHV0KCkgZGVsZXRlUG9zaXRpb25FdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIGVtcHR5UG9zaXRpb25FdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIGZpbHRlclBvc2l0aW9uRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPFNUYWJsZURvdWJsZVN0cmluZ0FycmF5RXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBtdWx0aVNlbGVjdFBvc2l0aW9uRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPFNUYWJsZURvdWJsZVN0cmluZ0FycmF5RXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBvcmRlckJ5UG9zaXRpb25FdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8U1RhYmxlRG91YmxlU29ydEV2ZW50PigpO1xuICBAT3V0cHV0KCkgcGlsbEJ1dHRvblBvc2l0aW9uRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBzY3JvbGxQb3NpdGlvbkV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgc2VsZWN0UG9zaXRpb25FdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8U1RhYmxlRG91YmxlU3RyaW5nRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBzd2l0Y2hDaGFuZ2VFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8U1RhYmxlRG91YmxlU3dpdGNoRXZlbnQ+KCk7XG5cbiAgcHJpdmF0ZSBhY3RpdmVUYWJLZXkhOiBzdHJpbmc7XG4gIHByaXZhdGUgcmlnaHRUYWJsZVN0YXRlOiBTVGFibGVEb3VibGVDb21wbGV0ZUl0ZW1bXSA9IFtdO1xuICBwcml2YXRlIGV4cGFuZGVkTm9kZXMgPSBuZXcgTWFwPHN0cmluZywgYm9vbGVhbj4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc1RyYW5zbGF0ZVNlcnZpY2UgPSBpbmplY3QoU1RyYW5zbGF0ZVNlcnZpY2UpO1xuICBcbiAgdGFibGVEb3VibGVBZGFwdGVyITogU1RhYmxlRG91YmxlO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucmlnaHRUYWJsZVN0YXRlID0gWy4uLih0aGlzLmNvbmZpZy50YWJsZUNvbmZpZy50YWJsZVJpZ2h0SXRlbXMgPz8gW10pXTtcblxuICAgIGNvbnN0IHNlbGVjdGVkVGFiID0gdGhpcy5jb25maWcudGFicy5maW5kKHQgPT4gdC5zZWxlY3RlZCk7XG4gICAgaWYgKHNlbGVjdGVkVGFiKSB7XG4gICAgICB0aGlzLnNldEFjdGl2ZVRhYihzZWxlY3RlZFRhYik7XG4gICAgfVxuICB9XG5cbiAgb25UYWJTZWxlY3QodGFiOiBJVGFiKTogdm9pZCB7XG4gICAgdGhpcy5zZXRBY3RpdmVUYWIodGFiKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0QWN0aXZlVGFiKHRhYjogSVRhYik6IHZvaWQge1xuICAgIHRoaXMuYWN0aXZlVGFiS2V5ID0gU3RyaW5nKHRhYi52YWx1ZSA/PyB0YWIudGV4dCk7XG5cbiAgICBjb25zdCBsZWZ0SXRlbXMgPSB0aGlzLmNvbmZpZy5pdGVtc0J5VGFiW3RoaXMuYWN0aXZlVGFiS2V5XSA/PyBbXTtcbiAgICBjb25zdCB0YWJsZUxlZnRJdGVtcyA9IHRoaXMubWFwVG9UYWJsZURvdWJsZUl0ZW1zKGxlZnRJdGVtcyk7XG5cbiAgICBsZXQgdGFibGVSaWdodEl0ZW1zID0gdGhpcy5tYXBUb1RhYmxlRG91YmxlSXRlbXModGhpcy5yaWdodFRhYmxlU3RhdGUpO1xuXG4gICAgaWYgKHRoaXMuY29uZmlnLnRyZWVNb2RlKSB7XG4gICAgICB0YWJsZVJpZ2h0SXRlbXMgPSB0aGlzLmZsYXR0ZW5UcmVlKHRoaXMuYnVpbGRUcmVlKHRoaXMucmlnaHRUYWJsZVN0YXRlKSk7XG4gICAgfVxuXG4gICAgdGhpcy50YWJsZURvdWJsZUFkYXB0ZXIgPSB0aGlzLmJ1aWxkVGFibGVEb3VibGVBZGFwdGVyKHRhYmxlTGVmdEl0ZW1zLCB0YWJsZVJpZ2h0SXRlbXMpO1xuICB9XG5cbiAgb25VcGRhdGVUYWJsZXMoZXZlbnQ6IFNUYWJsZXNEYXRhKTogdm9pZCB7XG4gICAgY29uc3QgcHJldlJpZ2h0SWRzID0gbmV3IFNldCh0aGlzLnJpZ2h0VGFibGVTdGF0ZS5tYXAoaSA9PiBpLmlkKSk7XG4gICAgY29uc3Qgc291cmNlTGVmdCA9IHRoaXMuY29uZmlnLml0ZW1zQnlUYWJbdGhpcy5hY3RpdmVUYWJLZXldID8/IFtdO1xuICAgIGNvbnN0IHNlbGVjdGVkUmlnaHRJdGVtcyA9IGV2ZW50LnRhYmxlUmlnaHRJdGVtcy5maWx0ZXIoaSA9PiBpLnNlbGVjdGVkKTtcbiAgICBjb25zdCBwYXJlbnRJZCA9IHRoaXMuY29uZmlnLnRyZWVNb2RlICYmIHNlbGVjdGVkUmlnaHRJdGVtcy5sZW5ndGggPT09IDEgPyBzZWxlY3RlZFJpZ2h0SXRlbXNbMF0uaWQgOiBudWxsO1xuXG4gICAgY29uc3QgbmV4dFJpZ2h0OiBTVGFibGVEb3VibGVDb21wbGV0ZUl0ZW1bXSA9IGV2ZW50LnRhYmxlUmlnaHRJdGVtcy5tYXAoaXRlbSA9PiB7XG4gICAgICBjb25zdCBwcmV2ID0gdGhpcy5yaWdodFRhYmxlU3RhdGUuZmluZChyID0+IHIuaWQgPT09IGl0ZW0uaWQpO1xuICAgICAgY29uc3QgZnJvbUxlZnQgPSBzb3VyY2VMZWZ0LmZpbmQobCA9PiBsLmlkID09PSBpdGVtLmlkKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLihwcmV2ID8/IGZyb21MZWZ0ID8/IHt9KSxcbiAgICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICAgIG5hbWU6IGl0ZW0ubmFtZSxcbiAgICAgICAgY2hlY2tlZDogISFpdGVtLmNoZWNrZWQsXG4gICAgICAgIHBhcmVudElkOiBwcmV2Py5wYXJlbnRJZCA/PyBudWxsLFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGFkZGVkSXRlbXMgPSBuZXh0UmlnaHQuZmlsdGVyKGkgPT4gIXByZXZSaWdodElkcy5oYXMoaS5pZCkpO1xuXG4gICAgaWYgKHRoaXMuY29uZmlnLnRyZWVNb2RlICYmIHBhcmVudElkKSB7XG4gICAgICBhZGRlZEl0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGl0ZW0ucGFyZW50SWQgPSBwYXJlbnRJZDtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMucmlnaHRUYWJsZVN0YXRlID0gbmV4dFJpZ2h0O1xuICAgIHRoaXMucmVzZXRTZWxlY3Rpb25zKCk7XG4gICAgdGhpcy5yZWZyZXNoVGFibGVzKCk7XG4gIH1cblxuICBwcml2YXRlIHJlZnJlc2hUYWJsZXMoKTogdm9pZCB7XG4gICAgY29uc3QgbGVmdEl0ZW1zID0gdGhpcy5jb25maWcuaXRlbXNCeVRhYlt0aGlzLmFjdGl2ZVRhYktleV0gPz8gW107XG4gICAgY29uc3QgdGFibGVMZWZ0SXRlbXMgPSB0aGlzLm1hcFRvVGFibGVEb3VibGVJdGVtcyhsZWZ0SXRlbXMpO1xuXG4gICAgbGV0IHRhYmxlUmlnaHRJdGVtcyA9IHRoaXMubWFwVG9UYWJsZURvdWJsZUl0ZW1zKHRoaXMucmlnaHRUYWJsZVN0YXRlKTtcblxuICAgIGlmICh0aGlzLmNvbmZpZy50cmVlTW9kZSkge1xuICAgICAgdGFibGVSaWdodEl0ZW1zID0gdGhpcy5mbGF0dGVuVHJlZSh0aGlzLmJ1aWxkVHJlZSh0aGlzLnJpZ2h0VGFibGVTdGF0ZSkpO1xuICAgICAgdGFibGVMZWZ0SXRlbXM7XG4gICAgfVxuXG4gICAgdGhpcy50YWJsZURvdWJsZUFkYXB0ZXIgPSB0aGlzLmJ1aWxkVGFibGVEb3VibGVBZGFwdGVyKHRhYmxlTGVmdEl0ZW1zLCB0YWJsZVJpZ2h0SXRlbXMpO1xuXG4gICAgdGhpcy51cGRhdGVFdmVudC5lbWl0KHtcbiAgICAgIHRhYktleTogdGhpcy5hY3RpdmVUYWJLZXksXG4gICAgICB0YWJsZUxlZnRJdGVtcyxcbiAgICAgIHRhYmxlUmlnaHRJdGVtcyxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRUYWJsZURvdWJsZUFkYXB0ZXIobGVmdEl0ZW1zOiBTVGFibGVEb3VibGVJdGVtW10sIHJpZ2h0SXRlbXM6IFNUYWJsZURvdWJsZUl0ZW1bXSk6IFNUYWJsZURvdWJsZSB7XG4gICAgY29uc3QgcmlnaHRDb2x1bW5zID0gWy4uLnRoaXMuY29uZmlnLnRhYmxlQ29uZmlnLnRhYmxlUmlnaHRDb25maWcuY29sdW1uc107XG4gICAgaWYgKHRoaXMuY29uZmlnLnNob3dPcmRlckJ1dHRvbnMgJiYgIXJpZ2h0Q29sdW1ucy5zb21lKGMgPT4gYy5pZCA9PT0gJ2FjdGlvbnMnKSkge1xuICAgICAgcmlnaHRDb2x1bW5zLnB1c2goeyBpZDogJ2FjdGlvbnMnLCB0aXRsZTogdGhpcy5fc1RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgndWkuZ2VuZXJpYy5hY3Rpb25zJykgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFkZGl0aW9uQnV0dG9uOiB0cnVlLFxuICAgICAgaXNUcmVlTW9kZTogISF0aGlzLmNvbmZpZy50cmVlTW9kZSxcbiAgICAgIHNob3dPcmRlckJ1dHRvbnM6ICEhdGhpcy5jb25maWcuc2hvd09yZGVyQnV0dG9ucyxcbiAgICAgIGRpc2FibGVMZWZ0Um93U2VsZWN0aW9uOiB0cnVlLFxuICAgICAgdGFibGVMZWZ0Q29uZmlnOiB7XG4gICAgICAgIC4uLnRoaXMuY29uZmlnLnRhYmxlQ29uZmlnLnRhYmxlTGVmdENvbmZpZyxcbiAgICAgICAgdG90YWxJdGVtczogbGVmdEl0ZW1zLmxlbmd0aCxcbiAgICAgICAgaXNUcmVlTW9kZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ0JvdHRvbVN0YXR1c0Jhcjogc2lnbmFsKHtcbiAgICAgICAgICBjb3VudGVyOiBsZWZ0SXRlbXMuZmlsdGVyKGkgPT4gaS5jaGVja2VkKS5sZW5ndGgsXG4gICAgICAgICAgdG90YWw6IGxlZnRJdGVtcy5sZW5ndGgsXG4gICAgICAgICAgZGlzYWJsZWQ6IGxlZnRJdGVtcy5sZW5ndGggPT09IDAsXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICAgIHRhYmxlUmlnaHRDb25maWc6IHtcbiAgICAgICAgLi4udGhpcy5jb25maWcudGFibGVDb25maWcudGFibGVSaWdodENvbmZpZyxcbiAgICAgICAgY29sdW1uczogcmlnaHRDb2x1bW5zLFxuICAgICAgICB0b3RhbEl0ZW1zOiByaWdodEl0ZW1zLmxlbmd0aCxcbiAgICAgICAgaXNUcmVlTW9kZTogISF0aGlzLmNvbmZpZy50cmVlTW9kZSxcbiAgICAgICAgY29uZmlnQm90dG9tU3RhdHVzQmFyOiBzaWduYWwoe1xuICAgICAgICAgIGNvdW50ZXI6IHJpZ2h0SXRlbXMuZmlsdGVyKGkgPT4gaS5jaGVja2VkKS5sZW5ndGgsXG4gICAgICAgICAgdG90YWw6IHJpZ2h0SXRlbXMubGVuZ3RoLFxuICAgICAgICAgIGRpc2FibGVkOiByaWdodEl0ZW1zLmxlbmd0aCA9PT0gMCxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgICAgdGFibGVMZWZ0SXRlbXM6IGxlZnRJdGVtcyxcbiAgICAgIHRhYmxlUmlnaHRJdGVtczogcmlnaHRJdGVtcyxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBUb1RhYmxlRG91YmxlSXRlbXMoaXRlbXM6IFNUYWJsZURvdWJsZUNvbXBsZXRlSXRlbVtdKTogU1RhYmxlRG91YmxlSXRlbVtdIHtcbiAgICByZXR1cm4gaXRlbXMubWFwKChpdGVtLCBpbmRleCkgPT4gKHtcbiAgICAgIC4uLml0ZW0sXG4gICAgICBuYW1lOiBpdGVtLm5hbWUgPz8gJycsXG4gICAgICBjaGVja2VkOiBpdGVtLmNoZWNrZWQgPz8gZmFsc2UsXG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFRyZWUoaXRlbXM6IFNUYWJsZURvdWJsZUNvbXBsZXRlSXRlbVtdKTogU1RhYmxlRG91YmxlQ29tcGxldGVJdGVtW10ge1xuICAgIGNvbnN0IG1hcCA9IG5ldyBNYXA8c3RyaW5nLCBTVGFibGVEb3VibGVDb21wbGV0ZUl0ZW0gJiB7IGNoaWxkcmVuOiBTVGFibGVEb3VibGVDb21wbGV0ZUl0ZW1bXSB9PigpO1xuICAgIGNvbnN0IHJvb3RzOiBTVGFibGVEb3VibGVDb21wbGV0ZUl0ZW1bXSA9IFtdO1xuXG4gICAgaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIG1hcC5zZXQoaXRlbS5pZCwgeyAuLi5pdGVtLCBjaGlsZHJlbjogW10gfSk7XG4gICAgfSk7XG5cbiAgICBtYXAuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGlmIChpdGVtLnBhcmVudElkKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudCA9IG1hcC5nZXQoaXRlbS5wYXJlbnRJZCk7XG4gICAgICAgIGlmIChwYXJlbnQpIHBhcmVudC5jaGlsZHJlbi5wdXNoKGl0ZW0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcm9vdHMucHVzaChpdGVtKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiByb290cztcbiAgfVxuXG4gIHByaXZhdGUgZmxhdHRlblRyZWUobm9kZXM6IFNUYWJsZURvdWJsZUNvbXBsZXRlSXRlbVtdLCBsZXZlbDogbnVtYmVyID0gMCk6IFNUYWJsZURvdWJsZUl0ZW1bXSB7XG4gICAgbGV0IHJlc3VsdDogU1RhYmxlRG91YmxlSXRlbVtdID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBub2RlID0gbm9kZXNbaV07XG4gICAgICBjb25zdCBoYXNDaGlsZHJlbiA9ICEhbm9kZS5jaGlsZHJlbj8ubGVuZ3RoO1xuICAgICAgY29uc3QgaXNFeHBhbmRlZCA9IHRoaXMuZXhwYW5kZWROb2Rlcy5nZXQobm9kZS5pZCkgPz8gdHJ1ZTtcblxuICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAuLi5ub2RlLFxuICAgICAgICBuYW1lOiBub2RlLm5hbWUgPz8gJycsXG4gICAgICAgIGNoZWNrZWQ6ICEhbm9kZS5jaGVja2VkLFxuICAgICAgICBwYXJlbnRJZDogbm9kZS5wYXJlbnRJZCA/PyBudWxsLFxuICAgICAgICBsZXZlbDogbGV2ZWwsXG4gICAgICAgIGV4cGFuZGVkOiBpc0V4cGFuZGVkLFxuICAgICAgICBoYXNDaGlsZHJlbjogaGFzQ2hpbGRyZW4sXG4gICAgICB9IGFzIFNUYWJsZURvdWJsZUl0ZW0pO1xuXG4gICAgICBpZiAoaGFzQ2hpbGRyZW4gJiYgaXNFeHBhbmRlZCAmJiBub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQodGhpcy5mbGF0dGVuVHJlZShub2RlLmNoaWxkcmVuLCBsZXZlbCArIDEpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRTZWxlY3Rpb25zKCk6IHZvaWQge1xuICAgIGNvbnN0IGxlZnRJdGVtcyA9IHRoaXMuY29uZmlnLml0ZW1zQnlUYWJbdGhpcy5hY3RpdmVUYWJLZXldID8/IFtdO1xuICAgIGxlZnRJdGVtcy5mb3JFYWNoKGkgPT4ge1xuICAgICAgaS5jaGVja2VkID0gZmFsc2U7XG4gICAgICBpLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgfSk7XG4gICAgdGhpcy5yaWdodFRhYmxlU3RhdGUuZm9yRWFjaChpID0+IHtcbiAgICAgIGkuY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgaS5zZWxlY3RlZCA9IGZhbHNlO1xuICAgIH0pO1xuICB9XG5cbiAgb25Td2l0Y2hDaGFuZ2UoZXZlbnQ6IFNUYWJsZURvdWJsZVN3aXRjaEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmlzTGVmdFRhYmxlKSB7XG4gICAgICBjb25zdCBsZWZ0SXRlbXMgPSB0aGlzLmNvbmZpZy5pdGVtc0J5VGFiW3RoaXMuYWN0aXZlVGFiS2V5XSA/PyBbXTtcbiAgICAgIGNvbnN0IGl0ZW0gPSBsZWZ0SXRlbXMuZmluZChpID0+IGkuaWQgPT09IGV2ZW50Lml0ZW1JZCk7XG4gICAgICBpZiAoaXRlbSkgaXRlbVtldmVudC5jb2x1bW5JZF0gPSBldmVudC52YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaXRlbSA9IHRoaXMucmlnaHRUYWJsZVN0YXRlLmZpbmQoaSA9PiBpLmlkID09PSBldmVudC5pdGVtSWQpO1xuICAgICAgaWYgKGl0ZW0pIGl0ZW1bZXZlbnQuY29sdW1uSWRdID0gZXZlbnQudmFsdWU7XG4gICAgfVxuICAgIHRoaXMuc3dpdGNoQ2hhbmdlRXZlbnQuZW1pdChldmVudCk7XG4gIH1cblxuICB0b2dnbGVOb2RlRXhwYW5zaW9uKG5vZGVJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFN0YXRlID0gdGhpcy5leHBhbmRlZE5vZGVzLmdldChub2RlSWQpID8/IHRydWU7XG4gICAgdGhpcy5leHBhbmRlZE5vZGVzLnNldChub2RlSWQsICFjdXJyZW50U3RhdGUpO1xuICAgIHRoaXMucmVmcmVzaFRhYmxlcygpO1xuICB9XG5cbiAgb25SZW9yZGVySXRlbShldmVudDogU1RhYmxlRG91YmxlUmVvcmRlckV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgeyBpdGVtSWQsIGRpcmVjdGlvbiB9ID0gZXZlbnQ7XG4gICAgY29uc3QgaXRlbSA9IHRoaXMucmlnaHRUYWJsZVN0YXRlLmZpbmQoaSA9PiBpLmlkID09PSBpdGVtSWQpO1xuICAgIGlmICghaXRlbSkgcmV0dXJuO1xuXG4gICAgY29uc3QgcGFyZW50SWQgPSBpdGVtLnBhcmVudElkID8/IG51bGw7XG4gICAgY29uc3Qgc2libGluZ3MgPSB0aGlzLnJpZ2h0VGFibGVTdGF0ZS5maWx0ZXIoaSA9PiAoaS5wYXJlbnRJZCA/PyBudWxsKSA9PT0gcGFyZW50SWQpO1xuICAgIGNvbnN0IHNpYmxpbmdJbmRleCA9IHNpYmxpbmdzLmZpbmRJbmRleChpID0+IGkuaWQgPT09IGl0ZW1JZCk7XG4gICAgaWYgKHNpYmxpbmdJbmRleCA9PT0gLTEpIHJldHVybjtcblxuICAgIGxldCB0YXJnZXRJbmRleDogbnVtYmVyO1xuICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XG4gICAgICBjYXNlICd0b3AnOlxuICAgICAgICB0YXJnZXRJbmRleCA9IDA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndXAnOlxuICAgICAgICB0YXJnZXRJbmRleCA9IHNpYmxpbmdJbmRleCAtIDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZG93bic6XG4gICAgICAgIHRhcmdldEluZGV4ID0gc2libGluZ0luZGV4ICsgMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICB0YXJnZXRJbmRleCA9IHNpYmxpbmdzLmxlbmd0aCAtIDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0YXJnZXRJbmRleCA8IDAgfHwgdGFyZ2V0SW5kZXggPj0gc2libGluZ3MubGVuZ3RoIHx8IHRhcmdldEluZGV4ID09PSBzaWJsaW5nSW5kZXgpIHJldHVybjtcblxuICAgIHNpYmxpbmdzLnNwbGljZShzaWJsaW5nSW5kZXgsIDEpO1xuICAgIHNpYmxpbmdzLnNwbGljZSh0YXJnZXRJbmRleCwgMCwgaXRlbSk7XG5cbiAgICB0aGlzLnJpZ2h0VGFibGVTdGF0ZSA9IHRoaXMucmlnaHRUYWJsZVN0YXRlLmZpbHRlcihpID0+IChpLnBhcmVudElkID8/IG51bGwpICE9PSBwYXJlbnRJZCk7XG4gICAgY29uc3QgaW5zZXJ0UmVmID0gcGFyZW50SWQgPyB0aGlzLnJpZ2h0VGFibGVTdGF0ZS5maW5kSW5kZXgoaSA9PiBpLmlkID09PSBwYXJlbnRJZCkgKyAxIDogMDtcbiAgICB0aGlzLnJpZ2h0VGFibGVTdGF0ZS5zcGxpY2UoaW5zZXJ0UmVmLCAwLCAuLi5zaWJsaW5ncyk7XG5cbiAgICB0aGlzLnJlZnJlc2hUYWJsZXMoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInMtdGFibGUtZG91YmxlLWNvbXBsZXRlXCI+XG4gIDxzLXRhYnNcbiAgICBbdGFic109XCJjb25maWcudGFic1wiXG4gICAgW2NvbmZpZ1RhYnNdPVwiY29uZmlnLmNvbmZpZ1RhYnNcIlxuICAgIChldmVudFNlbGVjdCk9XCJvblRhYlNlbGVjdCgkZXZlbnQpXCI+XG4gIDwvcy10YWJzPlxuXG4gIDxzLXRhYmxlLWRvdWJsZVxuICBbY29uZmlnXT1cInRhYmxlRG91YmxlQWRhcHRlclwiXG4gIChldmVudFVwZGF0ZVRhYmxlcyk9XCJvblVwZGF0ZVRhYmxlcygkZXZlbnQpXCJcbiAgKGFjdGlvblBvc2l0aW9uRXZlbnQpPVwiYWN0aW9uUG9zaXRpb25FdmVudC5lbWl0KCRldmVudClcIlxuICAoYm90dG9tU3RhdHVzQmFyUG9zaXRpb25FdmVudCk9XCJib3R0b21TdGF0dXNCYXJQb3NpdGlvbkV2ZW50LmVtaXQoJGV2ZW50KVwiXG4gIChjaGVja0FsbFBvc2l0aW9uRXZlbnQpPVwiY2hlY2tBbGxQb3NpdGlvbkV2ZW50LmVtaXQoJGV2ZW50KVwiXG4gIChkZWxldGVQb3NpdGlvbkV2ZW50KT1cImRlbGV0ZVBvc2l0aW9uRXZlbnQuZW1pdCgkZXZlbnQpXCJcbiAgKGVtcHR5UG9zaXRpb25FdmVudCk9XCJlbXB0eVBvc2l0aW9uRXZlbnQuZW1pdCgkZXZlbnQpXCJcbiAgKGZpbHRlclBvc2l0aW9uRXZlbnQpPVwiZmlsdGVyUG9zaXRpb25FdmVudC5lbWl0KCRldmVudClcIlxuICAobXVsdGlTZWxlY3RQb3NpdGlvbkV2ZW50KT1cIm11bHRpU2VsZWN0UG9zaXRpb25FdmVudC5lbWl0KCRldmVudClcIlxuICAob3JkZXJCeVBvc2l0aW9uRXZlbnQpPVwib3JkZXJCeVBvc2l0aW9uRXZlbnQuZW1pdCgkZXZlbnQpXCJcbiAgKHBpbGxCdXR0b25Qb3NpdGlvbkV2ZW50KT1cInBpbGxCdXR0b25Qb3NpdGlvbkV2ZW50LmVtaXQoJGV2ZW50KVwiXG4gIChzY3JvbGxQb3NpdGlvbkV2ZW50KT1cInNjcm9sbFBvc2l0aW9uRXZlbnQuZW1pdCgkZXZlbnQpXCJcbiAgKHRvZ2dsZUV4cGFuZEV2ZW50KT1cInRvZ2dsZU5vZGVFeHBhbnNpb24oJGV2ZW50KVwiXG4gIChyZW9yZGVySXRlbUV2ZW50KT1cIm9uUmVvcmRlckl0ZW0oJGV2ZW50KVwiXG4gIChzd2l0Y2hDaGFuZ2VFdmVudCk9XCJvblN3aXRjaENoYW5nZSgkZXZlbnQpXCI+XG48L3MtdGFibGUtZG91YmxlPlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZG91YmxlLWNvbXBsZXRlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2lkZXN5cy1nZW5lcmljLXVpL3NyYy9saWIvdGFibGUtZG91YmxlLWNvbXBsZXRlL3RhYmxlLWRvdWJsZS1jb21wbGV0ZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVRhYiwgSUNvbmZpZ1RhYnMgfSBmcm9tICcuLi90YWJzL21vZGVscyc7XG5pbXBvcnQgeyBTb3J0VGFibGUsIFNUYWJsZUNvbXBsZXRlLCBTVGFibGVzRGF0YSB9IGZyb20gJy4uLy4uL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgU1RhYmxlRG91YmxlU3dpdGNoRXZlbnQgfSBmcm9tICcuLi90YWJsZS1kb3VibGUvdGFibGUtZG91YmxlLm1vZGVsJztcblxuZXhwb3J0IGludGVyZmFjZSBTVGFibGVEb3VibGVDb21wbGV0ZUl0ZW0ge1xuICBpZDogc3RyaW5nO1xuICBzZWxlY3RlZENoZWNrYm94PzogYm9vbGVhbjtcbiAgbmFtZT86IHN0cmluZztcbiAgW2tleTogc3RyaW5nXTogYW55O1xuICBwYXJlbnRJZD86IHN0cmluZyB8IG51bGw7XG4gIGNoaWxkcmVuPzogU1RhYmxlRG91YmxlQ29tcGxldGVJdGVtW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU1RhYmxlRG91YmxlQ29tcGxldGVUYWJsZSB7XG4gIHRhYmxlTGVmdENvbmZpZzogU1RhYmxlQ29tcGxldGU7XG4gIHRhYmxlUmlnaHRDb25maWc6IFNUYWJsZUNvbXBsZXRlO1xuICB0YWJsZUxlZnRJdGVtczogU1RhYmxlRG91YmxlQ29tcGxldGVJdGVtW107XG4gIHRhYmxlUmlnaHRJdGVtczogU1RhYmxlRG91YmxlQ29tcGxldGVJdGVtW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU1RhYmxlRG91YmxlQ29tcGxldGVDb25maWcge1xuICB0YWJzOiBJVGFiW107XG4gIGNvbmZpZ1RhYnM/OiBJQ29uZmlnVGFicztcbiAgdGFibGVDb25maWc6IFNUYWJsZURvdWJsZUNvbXBsZXRlVGFibGU7XG4gIGl0ZW1zQnlUYWI6IFJlY29yZDxzdHJpbmcsIFNUYWJsZURvdWJsZUNvbXBsZXRlSXRlbVtdPjtcbiAgdHJlZU1vZGU/OiBib29sZWFuO1xuICBzaG93T3JkZXJCdXR0b25zPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgU1RhYmxlc0RvdWJsZUNvbXBsZXRlRGF0YSA9IFNUYWJsZXNEYXRhO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNUYWJsZURvdWJsZUNvbXBsZXRlVXBkYXRlRXZlbnRcbiAgZXh0ZW5kcyBTVGFibGVzRGF0YSB7XG4gIHRhYktleTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNUYWJsZURvdWJsZUNvbXBsZXRlRXZlbnQ8VD4ge1xuICBpc0xlZnRUYWJsZTogYm9vbGVhbjtcbiAgdmFsdWU6IFQ7XG59XG5cbmV4cG9ydCB0eXBlIFNUYWJsZURvdWJsZUNvbXBsZXRlQm9vbGVhbkV2ZW50ID1cbiAgU1RhYmxlRG91YmxlQ29tcGxldGVFdmVudDxib29sZWFuPjtcblxuZXhwb3J0IHR5cGUgU1RhYmxlRG91YmxlQ29tcGxldGVTdHJpbmdFdmVudCA9XG4gIFNUYWJsZURvdWJsZUNvbXBsZXRlRXZlbnQ8c3RyaW5nPjtcblxuZXhwb3J0IHR5cGUgU1RhYmxlRG91YmxlQ29tcGxldGVTdHJpbmdBcnJheUV2ZW50ID1cbiAgU1RhYmxlRG91YmxlQ29tcGxldGVFdmVudDxzdHJpbmdbXT47XG5cbmV4cG9ydCB0eXBlIFNUYWJsZURvdWJsZUNvbXBsZXRlTnVtYmVyRXZlbnQgPVxuICBTVGFibGVEb3VibGVDb21wbGV0ZUV2ZW50PG51bWJlcj47XG5cbmV4cG9ydCB0eXBlIFNUYWJsZURvdWJsZUNvbXBsZXRlU29ydEV2ZW50ID1cbiAgU1RhYmxlRG91YmxlQ29tcGxldGVFdmVudDxTb3J0VGFibGU+O1xuXG5leHBvcnQgdHlwZSBTVGFibGVEb3VibGVDb21wbGV0ZVN3aXRjaEV2ZW50ID0gU1RhYmxlRG91YmxlU3dpdGNoRXZlbnQ7XG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicy10YWJsZXQtbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaWRlc3lzLWdlbmVyaWMtdWkvc3JjL2xpYi90YWJsZS10L3MtdGFibGV0LW1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTU3dpdGNoIH0gZnJvbSAnLi4vdG9nZ2xlLXN3aXRjaC90b2dnbGUtc3dpdGNoLWZvcm0vdG9nZ2xlLXN3aXRjaC1mb3JtLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlnQ29sdW1uIHtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgY2hlY2tib3g/OiBib29sZWFuO1xuICAgIGNoZWNrYm94VmFsdWU/OiBib29sZWFuO1xuICAgIGlkPzogc3RyaW5nO1xuICAgIHdpZHRoPzogc3RyaW5nO1xuICAgIGFsaWduPzogXCJsZWZ0XCIgfCBcInJpZ2h0XCIgfCBcImNlbnRlclwiO1xuICAgIHNvcnRhYmxlPzogYm9vbGVhbjtcbiAgICBzd2l0Y2hDb25maWc/OiBTU3dpdGNoO1xufVxuICBcbmV4cG9ydCBpbnRlcmZhY2UgU29ydFRhYmxlIHtcbiAgICBTb3J0QXNjOiBib29sZWFuO1xuICAgIFNvcnRGaWVsZDogc3RyaW5nO1xufSJdfQ==
|
|
@@ -8,6 +8,7 @@ import * as i5 from "../spinner/s-spinner.component";
|
|
|
8
8
|
export class STabletComponent {
|
|
9
9
|
constructor() {
|
|
10
10
|
this.loading = false;
|
|
11
|
+
this.isTreeMode = false;
|
|
11
12
|
this.loadingScroll = input(false);
|
|
12
13
|
this.updateDataEvent = new EventEmitter();
|
|
13
14
|
this.ordenByEvent = new EventEmitter();
|
|
@@ -21,7 +22,7 @@ export class STabletComponent {
|
|
|
21
22
|
this.initData = this.data;
|
|
22
23
|
}
|
|
23
24
|
orderBy(column) {
|
|
24
|
-
if (column.sortable !== false && !column.disabled) {
|
|
25
|
+
if (column.sortable !== false && !column.disabled && !column.checkbox) {
|
|
25
26
|
if (column.id) {
|
|
26
27
|
//column.id es el campo a ordenar.
|
|
27
28
|
const sortAsc = this.fieldSelect && this.fieldSelect.SortField === column.id && this.fieldSelect.SortAsc === true
|
|
@@ -52,11 +53,11 @@ export class STabletComponent {
|
|
|
52
53
|
}
|
|
53
54
|
}
|
|
54
55
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: STabletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
55
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: STabletComponent, selector: "s-tablet", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: false, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: false, isRequired: false, transformFunction: null }, caption: { classPropertyName: "caption", publicName: "caption", isSignal: false, isRequired: false, transformFunction: null }, header: { classPropertyName: "header", publicName: "header", isSignal: false, isRequired: false, transformFunction: null }, bodyloading: { classPropertyName: "bodyloading", publicName: "bodyloading", isSignal: false, isRequired: false, transformFunction: null }, body: { classPropertyName: "body", publicName: "body", isSignal: false, isRequired: false, transformFunction: null }, configColumn: { classPropertyName: "configColumn", publicName: "configColumn", isSignal: false, isRequired: false, transformFunction: null }, loadingScroll: { classPropertyName: "loadingScroll", publicName: "loadingScroll", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { updateDataEvent: "updateDataEvent", ordenByEvent: "ordenByEvent", checkAllEvent: "checkAllEvent", scrollEvent: "scrollEvent" }, ngImport: i0, template: "<ng-container *ngTemplateOutlet=\"caption\"></ng-container>\n<div class=\"pre-s-tablet s-scroll\" (scroll)=\"onScroll($event)\">\n <table class=\"s-tablet\">\n <thead>\n <ng-container *ngTemplateOutlet=\"header\"></ng-container>\n <tr *ngIf=\"configColumn && configColumn.length > 0 && !loading\">\n <th\n *ngFor=\"let column of configColumn\"\n [width]=\"column.width\"\n tabindex=\"0\"\n (keydown.enter)=\"orderBy(column)\"\n (click)=\"orderBy(column)\">\n <div\n class=\"s-tablet__header\"\n [ngClass]=\"{\n 's-tablet__header--align-center': column.align === 'center',\n 's-tablet__header--align-right': column.align === 'right',\n 's-tablet__header--align-left': column.align === 'left' || !column.align,\n cursor: column.sortable !== false,\n 's-tablet__disabled': loading,\n }\">\n <
|
|
56
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: STabletComponent, selector: "s-tablet", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: false, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: false, isRequired: false, transformFunction: null }, caption: { classPropertyName: "caption", publicName: "caption", isSignal: false, isRequired: false, transformFunction: null }, header: { classPropertyName: "header", publicName: "header", isSignal: false, isRequired: false, transformFunction: null }, bodyloading: { classPropertyName: "bodyloading", publicName: "bodyloading", isSignal: false, isRequired: false, transformFunction: null }, body: { classPropertyName: "body", publicName: "body", isSignal: false, isRequired: false, transformFunction: null }, configColumn: { classPropertyName: "configColumn", publicName: "configColumn", isSignal: false, isRequired: false, transformFunction: null }, isTreeMode: { classPropertyName: "isTreeMode", publicName: "isTreeMode", isSignal: false, isRequired: false, transformFunction: null }, loadingScroll: { classPropertyName: "loadingScroll", publicName: "loadingScroll", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { updateDataEvent: "updateDataEvent", ordenByEvent: "ordenByEvent", checkAllEvent: "checkAllEvent", scrollEvent: "scrollEvent" }, ngImport: i0, template: "<ng-container *ngTemplateOutlet=\"caption\"></ng-container>\n<div class=\"pre-s-tablet s-scroll\" (scroll)=\"onScroll($event)\">\n <table class=\"s-tablet\">\n <thead>\n <ng-container *ngTemplateOutlet=\"header\"></ng-container>\n <tr *ngIf=\"configColumn && configColumn.length > 0 && !loading\">\n <th\n *ngFor=\"let column of configColumn\"\n [width]=\"column.width\"\n tabindex=\"0\"\n (keydown.enter)=\"orderBy(column)\"\n (click)=\"orderBy(column)\">\n <div\n class=\"s-tablet__header\"\n [ngClass]=\"{\n 's-tablet__header--align-center': column.align === 'center',\n 's-tablet__header--align-right': column.align === 'right',\n 's-tablet__header--align-left': column.align === 'left' || !column.align,\n cursor: column.sortable !== false,\n 's-tablet__disabled': loading,\n }\">\n <ng-container *ngIf=\"column.checkbox\">\n <span *ngIf=\"isTreeMode\" class=\"s-table-double__tree-spacer\"></span>\n <s-checkbox\n [ngClass]=\"{ 'mr-2': column.title }\"\n [config]=\"checkboxConfig\"\n [(ngModel)]=\"column.checkboxValue\"\n (ngModelChange)=\"checkAll($event)\">\n </s-checkbox>\n </ng-container>\n <div\n class=\"s-tablet__header__label\"\n [ngClass]=\"{\n 's-tablet__header__select': fieldSelect && fieldSelect.SortField === column.id,\n }\">\n {{ column.title }}\n </div>\n <span *ngIf=\"fieldSelect && fieldSelect.SortField === column.id\" class=\"s-tablet__header__icon\">\n <s-icon-mat [type]=\"'symbol'\" size=\"sm\" class=\"icon cursor\">{{\n fieldSelect.SortAsc ? 'keyboard_arrow_up' : 'keyboard_arrow_down'\n }}</s-icon-mat>\n </span>\n <span\n *ngIf=\"column.sortable !== false && column.title && fieldSelect && fieldSelect.SortField !== column.id\">\n <s-icon-mat [type]=\"'symbol'\" size=\"sm\" class=\"icon cursor\" class=\"s-tablet__header__icon--standard\"\n >keyboard_arrow_down</s-icon-mat\n >\n </span>\n <span\n *ngIf=\"!fieldSelect && column.sortable !== false && column.title\"\n class=\"s-tablet__header__icon--standard\">\n <s-icon-mat [type]=\"'symbol'\" size=\"sm\" class=\"icon cursor\" class=\"s-tablet__header__icon--standard\"\n >keyboard_arrow_down</s-icon-mat\n >\n </span>\n </div>\n </th>\n </tr>\n </thead>\n <tbody [ngClass]=\"loading ? 's-tablet__empty' : 's-tablet__body'\">\n <ng-container *ngIf=\"loading; else body\">\n <ng-template #body>\n <ng-content></ng-content>\n </ng-template>\n <ng-template #loading *ngTemplateOutlet=\"bodyloading\"></ng-template>\n </ng-container>\n </tbody>\n @if (loadingScroll()) {\n <tbody class=\"s-tablet__body\">\n <tr>\n <td [attr.colspan]=\"configColumn.length || 1\" class=\"s-table-complete__loading\">\n <s-spinner size=\"sm\"></s-spinner>\n </td>\n </tr>\n </tbody>\n }\n </table>\n</div>\n", styles: [".pre-s-tablet{max-width:100%;overflow-x:auto}.pre-s-tablet .s-tablet{background-color:var(--primary-100);border-collapse:collapse;width:100%}.pre-s-tablet .s-tablet thead{background-color:var(--neutrals-1200);font-weight:700}.pre-s-tablet .s-tablet thead th{vertical-align:middle;color:var(--secondary-600);font-size:.875rem;line-height:1.375rem;letter-spacing:.016rem;font-weight:700!important;text-align:left}.pre-s-tablet .s-tablet thead th:last-of-type{text-align:center}.pre-s-tablet .s-tablet__body{background-color:var(--neutrals-1200);color:var(--secondary-600)}.pre-s-tablet .s-tablet__disabled{color:var(--neutrals-700);pointer-events:none}.pre-s-tablet .s-tablet__empty{display:table-caption;caption-side:bottom;width:100%}.pre-s-tablet .s-tablet tbody tr td,.pre-s-tablet .s-tablet thead tr th{padding:.875rem;height:3.5rem;vertical-align:middle;font-size:.875rem}.pre-s-tablet .s-tablet th,.pre-s-tablet .s-tablet td{box-sizing:border-box;border:none;box-shadow:inset 0 -.063rem 0 var(--neutrals-900)}.pre-s-tablet .s-tablet td,.pre-s-tablet .s-tablet thead tr{height:3.5rem}.pre-s-tablet .s-tablet thead tr th{position:sticky;top:0;background-color:var(--neutrals-1200)}.pre-s-tablet .s-tablet__header{display:flex;gap:.5rem;align-items:center}.pre-s-tablet .s-tablet__header__icon{color:var(--primary-600)}.pre-s-tablet .s-tablet__header__icon--standard .s-icon-mat span{color:var(--neutrals-800)}.pre-s-tablet .s-tablet__header--align-left{justify-content:flex-start}.pre-s-tablet .s-tablet__header--align-center{justify-content:center}.pre-s-tablet .s-tablet__header--align-right{justify-content:flex-end}.pre-s-tablet .s-tablet__header__label{color:var(--secondary-500);font-weight:600}.pre-s-tablet .s-tablet__header__select{color:var(--secondary-600);font-weight:700}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.SIconMaterialComponent, selector: "s-icon-mat", inputs: ["name", "size", "fill", "weight", "grade", "style", "type"] }, { kind: "component", type: i3.SCheckboxComponent, selector: "s-checkbox", inputs: ["config"], outputs: ["blur", "focus"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.SSpinnerComponent, selector: "s-spinner", inputs: ["size", "animation"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
56
57
|
}
|
|
57
58
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: STabletComponent, decorators: [{
|
|
58
59
|
type: Component,
|
|
59
|
-
args: [{ selector: 's-tablet', encapsulation: ViewEncapsulation.None, template: "<ng-container *ngTemplateOutlet=\"caption\"></ng-container>\n<div class=\"pre-s-tablet s-scroll\" (scroll)=\"onScroll($event)\">\n <table class=\"s-tablet\">\n <thead>\n <ng-container *ngTemplateOutlet=\"header\"></ng-container>\n <tr *ngIf=\"configColumn && configColumn.length > 0 && !loading\">\n <th\n *ngFor=\"let column of configColumn\"\n [width]=\"column.width\"\n tabindex=\"0\"\n (keydown.enter)=\"orderBy(column)\"\n (click)=\"orderBy(column)\">\n <div\n class=\"s-tablet__header\"\n [ngClass]=\"{\n 's-tablet__header--align-center': column.align === 'center',\n 's-tablet__header--align-right': column.align === 'right',\n 's-tablet__header--align-left': column.align === 'left' || !column.align,\n cursor: column.sortable !== false,\n 's-tablet__disabled': loading,\n }\">\n <
|
|
60
|
+
args: [{ selector: 's-tablet', encapsulation: ViewEncapsulation.None, template: "<ng-container *ngTemplateOutlet=\"caption\"></ng-container>\n<div class=\"pre-s-tablet s-scroll\" (scroll)=\"onScroll($event)\">\n <table class=\"s-tablet\">\n <thead>\n <ng-container *ngTemplateOutlet=\"header\"></ng-container>\n <tr *ngIf=\"configColumn && configColumn.length > 0 && !loading\">\n <th\n *ngFor=\"let column of configColumn\"\n [width]=\"column.width\"\n tabindex=\"0\"\n (keydown.enter)=\"orderBy(column)\"\n (click)=\"orderBy(column)\">\n <div\n class=\"s-tablet__header\"\n [ngClass]=\"{\n 's-tablet__header--align-center': column.align === 'center',\n 's-tablet__header--align-right': column.align === 'right',\n 's-tablet__header--align-left': column.align === 'left' || !column.align,\n cursor: column.sortable !== false,\n 's-tablet__disabled': loading,\n }\">\n <ng-container *ngIf=\"column.checkbox\">\n <span *ngIf=\"isTreeMode\" class=\"s-table-double__tree-spacer\"></span>\n <s-checkbox\n [ngClass]=\"{ 'mr-2': column.title }\"\n [config]=\"checkboxConfig\"\n [(ngModel)]=\"column.checkboxValue\"\n (ngModelChange)=\"checkAll($event)\">\n </s-checkbox>\n </ng-container>\n <div\n class=\"s-tablet__header__label\"\n [ngClass]=\"{\n 's-tablet__header__select': fieldSelect && fieldSelect.SortField === column.id,\n }\">\n {{ column.title }}\n </div>\n <span *ngIf=\"fieldSelect && fieldSelect.SortField === column.id\" class=\"s-tablet__header__icon\">\n <s-icon-mat [type]=\"'symbol'\" size=\"sm\" class=\"icon cursor\">{{\n fieldSelect.SortAsc ? 'keyboard_arrow_up' : 'keyboard_arrow_down'\n }}</s-icon-mat>\n </span>\n <span\n *ngIf=\"column.sortable !== false && column.title && fieldSelect && fieldSelect.SortField !== column.id\">\n <s-icon-mat [type]=\"'symbol'\" size=\"sm\" class=\"icon cursor\" class=\"s-tablet__header__icon--standard\"\n >keyboard_arrow_down</s-icon-mat\n >\n </span>\n <span\n *ngIf=\"!fieldSelect && column.sortable !== false && column.title\"\n class=\"s-tablet__header__icon--standard\">\n <s-icon-mat [type]=\"'symbol'\" size=\"sm\" class=\"icon cursor\" class=\"s-tablet__header__icon--standard\"\n >keyboard_arrow_down</s-icon-mat\n >\n </span>\n </div>\n </th>\n </tr>\n </thead>\n <tbody [ngClass]=\"loading ? 's-tablet__empty' : 's-tablet__body'\">\n <ng-container *ngIf=\"loading; else body\">\n <ng-template #body>\n <ng-content></ng-content>\n </ng-template>\n <ng-template #loading *ngTemplateOutlet=\"bodyloading\"></ng-template>\n </ng-container>\n </tbody>\n @if (loadingScroll()) {\n <tbody class=\"s-tablet__body\">\n <tr>\n <td [attr.colspan]=\"configColumn.length || 1\" class=\"s-table-complete__loading\">\n <s-spinner size=\"sm\"></s-spinner>\n </td>\n </tr>\n </tbody>\n }\n </table>\n</div>\n", styles: [".pre-s-tablet{max-width:100%;overflow-x:auto}.pre-s-tablet .s-tablet{background-color:var(--primary-100);border-collapse:collapse;width:100%}.pre-s-tablet .s-tablet thead{background-color:var(--neutrals-1200);font-weight:700}.pre-s-tablet .s-tablet thead th{vertical-align:middle;color:var(--secondary-600);font-size:.875rem;line-height:1.375rem;letter-spacing:.016rem;font-weight:700!important;text-align:left}.pre-s-tablet .s-tablet thead th:last-of-type{text-align:center}.pre-s-tablet .s-tablet__body{background-color:var(--neutrals-1200);color:var(--secondary-600)}.pre-s-tablet .s-tablet__disabled{color:var(--neutrals-700);pointer-events:none}.pre-s-tablet .s-tablet__empty{display:table-caption;caption-side:bottom;width:100%}.pre-s-tablet .s-tablet tbody tr td,.pre-s-tablet .s-tablet thead tr th{padding:.875rem;height:3.5rem;vertical-align:middle;font-size:.875rem}.pre-s-tablet .s-tablet th,.pre-s-tablet .s-tablet td{box-sizing:border-box;border:none;box-shadow:inset 0 -.063rem 0 var(--neutrals-900)}.pre-s-tablet .s-tablet td,.pre-s-tablet .s-tablet thead tr{height:3.5rem}.pre-s-tablet .s-tablet thead tr th{position:sticky;top:0;background-color:var(--neutrals-1200)}.pre-s-tablet .s-tablet__header{display:flex;gap:.5rem;align-items:center}.pre-s-tablet .s-tablet__header__icon{color:var(--primary-600)}.pre-s-tablet .s-tablet__header__icon--standard .s-icon-mat span{color:var(--neutrals-800)}.pre-s-tablet .s-tablet__header--align-left{justify-content:flex-start}.pre-s-tablet .s-tablet__header--align-center{justify-content:center}.pre-s-tablet .s-tablet__header--align-right{justify-content:flex-end}.pre-s-tablet .s-tablet__header__label{color:var(--secondary-500);font-weight:600}.pre-s-tablet .s-tablet__header__select{color:var(--secondary-600);font-weight:700}\n"] }]
|
|
60
61
|
}], propDecorators: { data: [{
|
|
61
62
|
type: Input
|
|
62
63
|
}], loading: [{
|
|
@@ -71,6 +72,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
71
72
|
type: Input
|
|
72
73
|
}], configColumn: [{
|
|
73
74
|
type: Input
|
|
75
|
+
}], isTreeMode: [{
|
|
76
|
+
type: Input
|
|
74
77
|
}], updateDataEvent: [{
|
|
75
78
|
type: Output
|
|
76
79
|
}], ordenByEvent: [{
|
|
@@ -229,4 +232,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
229
232
|
type: Input,
|
|
230
233
|
args: ['STemplate']
|
|
231
234
|
}] } });
|
|
232
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicy10YWJsZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2lkZXN5cy1nZW5lcmljLXVpL3NyYy9saWIvdGFibGUtdC9zLXRhYmxldC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaWRlc3lzLWdlbmVyaWMtdWkvc3JjL2xpYi90YWJsZS10L3MtdGFibGV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUNMLEtBQUssRUFFTCxNQUFNLEVBRU4saUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0FBU3ZCLE1BQU0sT0FBTyxnQkFBZ0I7SUFON0I7UUFRVyxZQUFPLEdBQVksS0FBSyxDQUFDO1FBTWxDLGtCQUFhLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBRTVCLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUMxQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFhLENBQUM7UUFDN0Msa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQzVDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUlqRCxtQkFBYyxHQUFHO1lBQ2YsY0FBYyxFQUFFLEtBQUs7U0FDdEIsQ0FBQztLQTJDSDtJQXpDQyxRQUFRO1FBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQzVCLENBQUM7SUFFRCxPQUFPLENBQUMsTUFBb0I7UUFDMUIsSUFBSSxNQUFNLENBQUMsUUFBUSxLQUFLLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsRCxJQUFJLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDZCxrQ0FBa0M7Z0JBQ2xDLE1BQU0sT0FBTyxHQUNYLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEtBQUssTUFBTSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sS0FBSyxJQUFJO29CQUMvRixDQUFDLENBQUMsS0FBSztvQkFDUCxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNYLElBQUksQ0FBQyxXQUFXLEdBQUc7b0JBQ2pCLE9BQU8sRUFBRSxPQUFPO29CQUNoQixTQUFTLEVBQUUsTUFBTSxDQUFDLEVBQUU7aUJBQ3JCLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzNDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxTQUFlO1FBQ3hCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBVTtRQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQVk7UUFDbkIsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE1BQXFCLENBQUM7UUFDNUMsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsQ0FBQywwQ0FBMEM7UUFFMUosSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7K0dBN0RVLGdCQUFnQjttR0FBaEIsZ0JBQWdCLHN0Q0NyQjdCLDhzR0E0RUE7OzRGRHZEYSxnQkFBZ0I7a0JBTjVCLFNBQVM7K0JBQ0UsVUFBVSxpQkFHTCxpQkFBaUIsQ0FBQyxJQUFJOzhCQUc1QixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFHSSxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNOztBQTJEVCxNQUFNLE9BQU8sY0FBYztJQVF6QixZQUFtQixJQUFzQjtRQUF0QixTQUFJLEdBQUosSUFBSSxDQUFrQjtRQU5oQyw0QkFBdUIsR0FBWSxLQUFLLENBQUM7UUFHbEQsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUl0QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxhQUFhLENBQUMsR0FBUSxFQUFFLEtBQUssR0FBRyxLQUFLO1FBQ25DLE9BQU8sU0FBUyxTQUFTLENBQ3ZCLENBQTJELEVBQzNELENBQTJEO1lBRTNELElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNyRCwwQ0FBMEM7Z0JBQzFDLE9BQU8sQ0FBQyxDQUFDO1lBQ1gsQ0FBQztZQUVELE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDeEUsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUV4RSxJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7WUFDbkIsSUFBSSxJQUFJLEdBQUcsSUFBSSxFQUFFLENBQUM7Z0JBQ2hCLFVBQVUsR0FBRyxDQUFDLENBQUM7WUFDakIsQ0FBQztpQkFBTSxJQUFJLElBQUksR0FBRyxJQUFJLEVBQUUsQ0FBQztnQkFDdkIsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ2xCLENBQUM7WUFDRCxPQUFPLEtBQUssS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO1FBQ3pELENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxDQUFDLE1BQU07WUFDVCxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzVELENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBR0QsT0FBTztRQUNMLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3pCLENBQUM7SUFDSCxDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixLQUFLLElBQUksQ0FBQztJQUMvQyxDQUFDOytHQW5EVSxjQUFjO21HQUFkLGNBQWM7OzRGQUFkLGNBQWM7a0JBUjFCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsSUFBSSxFQUFFO3dCQUNKLEtBQUssRUFBRSxXQUFXO3dCQUNsQiwyQkFBMkIsRUFBRSxhQUFhO3dCQUMxQyxrQkFBa0IsRUFBRSxXQUFXO3FCQUNoQztpQkFDRjtrRkFFNEIsS0FBSztzQkFBL0IsS0FBSzt1QkFBQyxrQkFBa0I7Z0JBQ2hCLHVCQUF1QjtzQkFBL0IsS0FBSztnQkF5Q04sT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQzs7QUFrQm5DLE1BQU0sT0FBTyxXQUFXO0lBT3RCLFlBQW9CLElBQXNCO1FBQXRCLFNBQUksR0FBSixJQUFJLENBQWtCO1FBQ3hDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQVU7UUFDcEIsSUFBSSxPQUFPLEdBQUc7WUFDWixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO2dCQUNyQyxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ3RDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3JDLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsRSxDQUFDLENBQUM7U0FDSCxDQUFDO1FBQ0YsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUM7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFHRCxVQUFVLENBQUMsQ0FBTTtRQUNmLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbEMsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUM1QixHQUFHLEVBQUU7WUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixDQUFDLEVBQ0QsSUFBSSxFQUNKLElBQUksQ0FDTCxDQUFDO1FBRUYsSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7SUFHRCxNQUFNLENBQUMsQ0FBTTtRQUNYLElBQUksQ0FBQyxDQUFDLEtBQUssS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDOytHQTlDVSxXQUFXO21HQUFYLFdBQVc7OzRGQUFYLFdBQVc7a0JBTnZCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsSUFBSSxFQUFFO3dCQUNKLEtBQUssRUFBRSxrQkFBa0I7cUJBQzFCO2lCQUNGO2tGQUV3QixNQUFNO3NCQUE1QixLQUFLO3VCQUFDLGNBQWM7Z0JBdUJyQixVQUFVO3NCQURULFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsZUFBZSxDQUFDO2dCQW1CeEMsTUFBTTtzQkFETCxZQUFZO3VCQUFDLFFBQVEsRUFBRSxDQUFDLGVBQWUsQ0FBQzs7QUFXM0MsTUFBTSxPQUFPLFNBQVM7SUFHcEIsWUFDVSxPQUF5QixFQUMxQixLQUF1QjtRQUR0QixZQUFPLEdBQVAsT0FBTyxDQUFrQjtRQUMxQixVQUFLLEdBQUwsS0FBSyxDQUFrQjtJQUM3QixDQUFDO0lBRUosa0JBQWtCO1FBQ2hCLFFBQVEsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ25CLEtBQUssU0FBUztnQkFDWixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO2dCQUNsQyxNQUFNO1lBQ1IsS0FBSyxRQUFRO2dCQUNYLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQ2pDLE1BQU07WUFDUixLQUFLLE1BQU07Z0JBQ1QsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztnQkFDL0IsTUFBTTtZQUNSLEtBQUssYUFBYTtnQkFDaEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztnQkFDdEMsTUFBTTtZQUNSO2dCQUNFLE1BQU07UUFDVixDQUFDO0lBQ0gsQ0FBQzsrR0F6QlUsU0FBUzttR0FBVCxTQUFTOzs0RkFBVCxTQUFTO2tCQUhyQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxhQUFhO2lCQUN4Qjs0R0FFcUIsS0FBSztzQkFBeEIsS0FBSzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ29tcG9uZW50LFxuICBEaXJlY3RpdmUsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBpbnB1dCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29uZmlnQ29sdW1uLCBTb3J0VGFibGUgfSBmcm9tICcuL3MtdGFibGV0LW1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncy10YWJsZXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vcy10YWJsZXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zLXRhYmxldC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBTVGFibGV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgZGF0YTogYW55O1xuICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNhcHRpb24hOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBASW5wdXQoKSBoZWFkZXIhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBASW5wdXQoKSBib2R5bG9hZGluZyE6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBJbnB1dCgpIGJvZHkhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBASW5wdXQoKSBjb25maWdDb2x1bW4hOiBDb25maWdDb2x1bW5bXTtcbiAgbG9hZGluZ1Njcm9sbCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBAT3V0cHV0KCkgdXBkYXRlRGF0YUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBvcmRlbkJ5RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPFNvcnRUYWJsZT4oKTtcbiAgQE91dHB1dCgpIGNoZWNrQWxsRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBzY3JvbGxFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBpbml0RGF0YTogYW55O1xuICBmaWVsZFNlbGVjdCE6IFNvcnRUYWJsZTtcbiAgY2hlY2tib3hDb25maWcgPSB7XG4gICAgdXNlRm9ybUNvbnRyb2w6IGZhbHNlLFxuICB9O1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdERhdGEgPSB0aGlzLmRhdGE7XG4gIH1cblxuICBvcmRlckJ5KGNvbHVtbjogQ29uZmlnQ29sdW1uKSB7XG4gICAgaWYgKGNvbHVtbi5zb3J0YWJsZSAhPT0gZmFsc2UgJiYgIWNvbHVtbi5kaXNhYmxlZCkge1xuICAgICAgaWYgKGNvbHVtbi5pZCkge1xuICAgICAgICAvL2NvbHVtbi5pZCBlcyBlbCBjYW1wbyBhIG9yZGVuYXIuXG4gICAgICAgIGNvbnN0IHNvcnRBc2MgPVxuICAgICAgICAgIHRoaXMuZmllbGRTZWxlY3QgJiYgdGhpcy5maWVsZFNlbGVjdC5Tb3J0RmllbGQgPT09IGNvbHVtbi5pZCAmJiB0aGlzLmZpZWxkU2VsZWN0LlNvcnRBc2MgPT09IHRydWVcbiAgICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICAgIDogdHJ1ZTtcbiAgICAgICAgdGhpcy5maWVsZFNlbGVjdCA9IHtcbiAgICAgICAgICBTb3J0QXNjOiBzb3J0QXNjLFxuICAgICAgICAgIFNvcnRGaWVsZDogY29sdW1uLmlkLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLm9yZGVuQnlFdmVudC5lbWl0KHRoaXMuZmllbGRTZWxlY3QpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZURhdGEoX2RhdGFTb3J0PzogYW55KTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVEYXRhRXZlbnQubmV4dChfZGF0YVNvcnQpO1xuICB9XG5cbiAgcmVzdGFydERhdGEoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVEYXRhRXZlbnQubmV4dCh0aGlzLmluaXREYXRhKTtcbiAgfVxuXG4gIGNoZWNrQWxsKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmNoZWNrQWxsRXZlbnQuZW1pdChldmVudCk7XG4gIH1cblxuICBvblNjcm9sbChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBlbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IGF0Qm90dG9tID0gZWxlbWVudC5zY3JvbGxIZWlnaHQgLSBlbGVtZW50LnNjcm9sbFRvcCA8PSBlbGVtZW50LmNsaWVudEhlaWdodCArIGVsZW1lbnQuc2Nyb2xsSGVpZ2h0ICogMC4xOyAvLyBhbnRlcyBkZWwgZmluYWwgcGFyYSBkaXNwYXJhciBlbCBldmVudG9cblxuICAgIGlmIChhdEJvdHRvbSkge1xuICAgICAgdGhpcy5zY3JvbGxFdmVudC5lbWl0KCk7XG4gICAgfVxuICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tTU29ydGVhYmxlQ29sdW1uXScsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ3AtZWxlbWVudCcsXG4gICAgJ1tjbGFzcy5wLXNvcnRhYmxlLWNvbHVtbl0nOiAnaXNFbmFibGVkKCknLFxuICAgICdbYXR0ci5hcmlhLXNvcnRdJzogJ3NvcnRPcmRlcicsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIFNvcnRhYmxlQ29sdW1uIHtcbiAgQElucHV0KCdTU29ydGVhYmxlQ29sdW1uJykgZmllbGQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHBTb3J0YWJsZUNvbHVtbkRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgX2RhdGFTb3J0OiBhbnk7XG4gIHNvcnRlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBzb3J0T3JkZXIhOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGRhdGE6IFNUYWJsZXRDb21wb25lbnQpIHtcbiAgICB0aGlzLl9kYXRhU29ydCA9IHRoaXMuZGF0YS5kYXRhO1xuICB9XG5cbiAgY29tcGFyZVZhbHVlcyhrZXk6IGFueSwgb3JkZXIgPSAnYXNjJykge1xuICAgIHJldHVybiBmdW5jdGlvbiBpbm5lclNvcnQoXG4gICAgICBhOiB7IFt4OiBzdHJpbmddOiBhbnk7IGhhc093blByb3BlcnR5OiAoYXJnMDogYW55KSA9PiBhbnkgfSxcbiAgICAgIGI6IHsgW3g6IHN0cmluZ106IGFueTsgaGFzT3duUHJvcGVydHk6IChhcmcwOiBhbnkpID0+IGFueSB9XG4gICAgKSB7XG4gICAgICBpZiAoIWEuaGFzT3duUHJvcGVydHkoa2V5KSB8fCAhYi5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIC8vIHByb3BlcnR5IGRvZXNuJ3QgZXhpc3Qgb24gZWl0aGVyIG9iamVjdFxuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdmFyQSA9IHR5cGVvZiBhW2tleV0gPT09ICdzdHJpbmcnID8gYVtrZXldLnRvVXBwZXJDYXNlKCkgOiBhW2tleV07XG4gICAgICBjb25zdCB2YXJCID0gdHlwZW9mIGJba2V5XSA9PT0gJ3N0cmluZycgPyBiW2tleV0udG9VcHBlckNhc2UoKSA6IGJba2V5XTtcblxuICAgICAgbGV0IGNvbXBhcmlzb24gPSAwO1xuICAgICAgaWYgKHZhckEgPiB2YXJCKSB7XG4gICAgICAgIGNvbXBhcmlzb24gPSAxO1xuICAgICAgfSBlbHNlIGlmICh2YXJBIDwgdmFyQikge1xuICAgICAgICBjb21wYXJpc29uID0gLTE7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3JkZXIgPT09ICdkZXNjJyA/IGNvbXBhcmlzb24gKiAtMSA6IGNvbXBhcmlzb247XG4gICAgfTtcbiAgfVxuXG4gIHVwZGF0ZVNvcnRTdGF0ZSgpIHtcbiAgICB0aGlzLnNvcnRlZCA9ICF0aGlzLnNvcnRlZDtcbiAgICB0aGlzLnNvcnRlZFxuICAgICAgPyB0aGlzLl9kYXRhU29ydC5zb3J0KHRoaXMuY29tcGFyZVZhbHVlcyh0aGlzLmZpZWxkLCAnYXNjJykpXG4gICAgICA6IHRoaXMuX2RhdGFTb3J0LnNvcnQodGhpcy5jb21wYXJlVmFsdWVzKHRoaXMuZmllbGQsICdkZXNjJykpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICBvbkNsaWNrKCkge1xuICAgIGlmICh0aGlzLmlzRW5hYmxlZCgpKSB7XG4gICAgICB0aGlzLnVwZGF0ZVNvcnRTdGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIGlzRW5hYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5wU29ydGFibGVDb2x1bW5EaXNhYmxlZCAhPT0gdHJ1ZTtcbiAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbU0lucHV0U2VhcmNoXScsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ3MtZWxlbWVudC1zZWFyY2gnLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBJbnB1dFNlYXJjaCB7XG4gIEBJbnB1dCgnU0lucHV0U2VhcmNoJykgZmllbGRzITogc3RyaW5nO1xuXG4gIF9kYXRhRmlsdGVyOiBhbnk7XG4gIGlucHV0VGltZW91dD86IGFueTtcbiAgZGF0YUJlZm9yZVNlYXJjaDogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0YTogU1RhYmxldENvbXBvbmVudCkge1xuICAgIHRoaXMuX2RhdGFGaWx0ZXIgPSBkYXRhLmRhdGE7XG4gIH1cblxuICBmaWx0ZXJJdGVtcyhxdWVyeTogYW55KSB7XG4gICAgbGV0IHJlc3VsdHMgPSBbXG4gICAgICAuLi50aGlzLmRhdGEuZGF0YS5maWx0ZXIoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKHF1ZXJ5LCAnaScpO1xuICAgICAgICBjb25zdCBwcm9wZXJ0aWVzID0gT2JqZWN0LmtleXMoaXRlbSk7XG4gICAgICAgIHJldHVybiBwcm9wZXJ0aWVzLnNvbWUocHJvcGVydHkgPT4gcmVnZXhwLnRlc3QoaXRlbVtwcm9wZXJ0eV0pKTtcbiAgICAgIH0pLFxuICAgIF07XG4gICAgdGhpcy5fZGF0YUZpbHRlciA9IHJlc3VsdHM7XG4gICAgdGhpcy5kYXRhLnVwZGF0ZURhdGEodGhpcy5fZGF0YUZpbHRlcik7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXl1cCcsIFsnJGV2ZW50LnRhcmdldCddKVxuICBvbkVudGVyS2V5KGU6IGFueSkge1xuICAgIGlmICh0aGlzLmlucHV0VGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuaW5wdXRUaW1lb3V0KTtcbiAgICB9XG4gICAgdGhpcy5pbnB1dFRpbWVvdXQgPSBzZXRUaW1lb3V0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLmZpbHRlckl0ZW1zKGUudmFsdWUpO1xuICAgICAgfSxcbiAgICAgIDEwMDAsXG4gICAgICBudWxsXG4gICAgKTtcblxuICAgIGlmIChlLnZhbHVlID09PSAnJykge1xuICAgICAgdGhpcy5kYXRhLnJlc3RhcnREYXRhKCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignc2VhcmNoJywgWyckZXZlbnQudGFyZ2V0J10pXG4gIHNlYXJjaChlOiBhbnkpIHtcbiAgICBpZiAoZS52YWx1ZSA9PT0gJycpIHtcbiAgICAgIHRoaXMuZGF0YS5yZXN0YXJ0RGF0YSgpO1xuICAgIH1cbiAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbU1RlbXBsYXRlXScsXG59KVxuZXhwb3J0IGNsYXNzIFNUZW1wbGF0ZSBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuICBASW5wdXQoJ1NUZW1wbGF0ZScpIGZpZWxkITogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudDogVGVtcGxhdGVSZWY8YW55PixcbiAgICBwdWJsaWMgdGFibGU6IFNUYWJsZXRDb21wb25lbnRcbiAgKSB7fVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKHRoaXMuZmllbGQpIHtcbiAgICAgIGNhc2UgJ2NhcHRpb24nOlxuICAgICAgICB0aGlzLnRhYmxlLmNhcHRpb24gPSB0aGlzLmVsZW1lbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaGVhZGVyJzpcbiAgICAgICAgdGhpcy50YWJsZS5oZWFkZXIgPSB0aGlzLmVsZW1lbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYm9keSc6XG4gICAgICAgIHRoaXMudGFibGUuYm9keSA9IHRoaXMuZWxlbWVudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdib2R5bG9hZGluZyc6XG4gICAgICAgIHRoaXMudGFibGUuYm9keWxvYWRpbmcgPSB0aGlzLmVsZW1lbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2FwdGlvblwiPjwvbmctY29udGFpbmVyPlxuPGRpdiBjbGFzcz1cInByZS1zLXRhYmxldCBzLXNjcm9sbFwiIChzY3JvbGwpPVwib25TY3JvbGwoJGV2ZW50KVwiPlxuICA8dGFibGUgY2xhc3M9XCJzLXRhYmxldFwiPlxuICAgIDx0aGVhZD5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDx0ciAqbmdJZj1cImNvbmZpZ0NvbHVtbiAmJiBjb25maWdDb2x1bW4ubGVuZ3RoID4gMCAmJiAhbG9hZGluZ1wiPlxuICAgICAgICA8dGhcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbmZpZ0NvbHVtblwiXG4gICAgICAgICAgW3dpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvcmRlckJ5KGNvbHVtbilcIlxuICAgICAgICAgIChjbGljayk9XCJvcmRlckJ5KGNvbHVtbilcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInMtdGFibGV0X19oZWFkZXJcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAncy10YWJsZXRfX2hlYWRlci0tYWxpZ24tY2VudGVyJzogY29sdW1uLmFsaWduID09PSAnY2VudGVyJyxcbiAgICAgICAgICAgICAgJ3MtdGFibGV0X19oZWFkZXItLWFsaWduLXJpZ2h0JzogY29sdW1uLmFsaWduID09PSAncmlnaHQnLFxuICAgICAgICAgICAgICAncy10YWJsZXRfX2hlYWRlci0tYWxpZ24tbGVmdCc6IGNvbHVtbi5hbGlnbiA9PT0gJ2xlZnQnIHx8ICFjb2x1bW4uYWxpZ24sXG4gICAgICAgICAgICAgIGN1cnNvcjogY29sdW1uLnNvcnRhYmxlICE9PSBmYWxzZSxcbiAgICAgICAgICAgICAgJ3MtdGFibGV0X19kaXNhYmxlZCc6IGxvYWRpbmcsXG4gICAgICAgICAgICB9XCI+XG4gICAgICAgICAgICA8cy1jaGVja2JveFxuICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbi5jaGVja2JveFwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ21yLTInOiBjb2x1bW4udGl0bGUgfVwiXG4gICAgICAgICAgICAgIFtjb25maWddPVwiY2hlY2tib3hDb25maWdcIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbHVtbi5jaGVja2JveFZhbHVlXCJcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hlY2tBbGwoJGV2ZW50KVwiPlxuICAgICAgICAgICAgPC9zLWNoZWNrYm94PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInMtdGFibGV0X19oZWFkZXJfX2xhYmVsXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICdzLXRhYmxldF9faGVhZGVyX19zZWxlY3QnOiBmaWVsZFNlbGVjdCAmJiBmaWVsZFNlbGVjdC5Tb3J0RmllbGQgPT09IGNvbHVtbi5pZCxcbiAgICAgICAgICAgICAgfVwiPlxuICAgICAgICAgICAgICB7eyBjb2x1bW4udGl0bGUgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJmaWVsZFNlbGVjdCAmJiBmaWVsZFNlbGVjdC5Tb3J0RmllbGQgPT09IGNvbHVtbi5pZFwiIGNsYXNzPVwicy10YWJsZXRfX2hlYWRlcl9faWNvblwiPlxuICAgICAgICAgICAgICA8cy1pY29uLW1hdCBbdHlwZV09XCInc3ltYm9sJ1wiIHNpemU9XCIxOFwiIGNsYXNzPVwiaWNvbiBjdXJzb3JcIj57e1xuICAgICAgICAgICAgICAgIGZpZWxkU2VsZWN0LlNvcnRBc2MgPyAna2V5Ym9hcmRfYXJyb3dfdXAnIDogJ2tleWJvYXJkX2Fycm93X2Rvd24nXG4gICAgICAgICAgICAgIH19PC9zLWljb24tbWF0PlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4uc29ydGFibGUgIT09IGZhbHNlICYmIGNvbHVtbi50aXRsZSAmJiBmaWVsZFNlbGVjdCAmJiBmaWVsZFNlbGVjdC5Tb3J0RmllbGQgIT09IGNvbHVtbi5pZFwiPlxuICAgICAgICAgICAgICA8cy1pY29uLW1hdCBbdHlwZV09XCInc3ltYm9sJ1wiIHNpemU9XCIxOFwiIGNsYXNzPVwiaWNvbiBjdXJzb3JcIiBjbGFzcz1cInMtdGFibGV0X19oZWFkZXJfX2ljb24tLXN0YW5kYXJkXCJcbiAgICAgICAgICAgICAgICA+a2V5Ym9hcmRfYXJyb3dfZG93bjwvcy1pY29uLW1hdFxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAqbmdJZj1cIiFmaWVsZFNlbGVjdCAmJiBjb2x1bW4uc29ydGFibGUgIT09IGZhbHNlICYmIGNvbHVtbi50aXRsZVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicy10YWJsZXRfX2hlYWRlcl9faWNvbi0tc3RhbmRhcmRcIj5cbiAgICAgICAgICAgICAgPHMtaWNvbi1tYXQgW3R5cGVdPVwiJ3N5bWJvbCdcIiBzaXplPVwiMThcIiBjbGFzcz1cImljb24gY3Vyc29yXCIgY2xhc3M9XCJzLXRhYmxldF9faGVhZGVyX19pY29uLS1zdGFuZGFyZFwiXG4gICAgICAgICAgICAgICAgPmtleWJvYXJkX2Fycm93X2Rvd248L3MtaWNvbi1tYXRcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RoPlxuICAgICAgPC90cj5cbiAgICA8L3RoZWFkPlxuICAgIDx0Ym9keSBbbmdDbGFzc109XCJsb2FkaW5nID8gJ3MtdGFibGV0X19lbXB0eScgOiAncy10YWJsZXRfX2JvZHknXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9hZGluZzsgZWxzZSBib2R5XCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjYm9keT5cbiAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbG9hZGluZyAqbmdUZW1wbGF0ZU91dGxldD1cImJvZHlsb2FkaW5nXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdGJvZHk+XG4gICAgQGlmIChsb2FkaW5nU2Nyb2xsKCkpIHtcbiAgICAgIDx0Ym9keSBjbGFzcz1cInMtdGFibGV0X19ib2R5XCI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQgW2F0dHIuY29sc3Bhbl09XCJjb25maWdDb2x1bW4ubGVuZ3RoIHx8IDFcIiBjbGFzcz1cInMtdGFibGUtY29tcGxldGVfX2xvYWRpbmdcIj5cbiAgICAgICAgICAgIDxzLXNwaW5uZXIgc2l6ZT1cInNtXCI+PC9zLXNwaW5uZXI+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGJvZHk+XG4gICAgfVxuICA8L3RhYmxlPlxuPC9kaXY+XG4iXX0=
|
|
235
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicy10YWJsZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2lkZXN5cy1nZW5lcmljLXVpL3NyYy9saWIvdGFibGUtdC9zLXRhYmxldC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaWRlc3lzLWdlbmVyaWMtdWkvc3JjL2xpYi90YWJsZS10L3MtdGFibGV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUNMLEtBQUssRUFFTCxNQUFNLEVBRU4saUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0FBU3ZCLE1BQU0sT0FBTyxnQkFBZ0I7SUFON0I7UUFRVyxZQUFPLEdBQVksS0FBSyxDQUFDO1FBTXpCLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFDckMsa0JBQWEsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFFNUIsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQzFDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQWEsQ0FBQztRQUM3QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDNUMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBSWpELG1CQUFjLEdBQUc7WUFDZixjQUFjLEVBQUUsS0FBSztTQUN0QixDQUFDO0tBMkNIO0lBekNDLFFBQVE7UUFDTixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDNUIsQ0FBQztJQUVELE9BQU8sQ0FBQyxNQUFvQjtRQUMxQixJQUFJLE1BQU0sQ0FBQyxRQUFRLEtBQUssS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN0RSxJQUFJ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O0lBQzdCLENBQUM7SUFFSixrQkFBa0I7UUFDaEIsUUFBUSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbkIsS0FBSyxTQUFTO2dCQUNaLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQ2xDLE1BQU07WUFDUixLQUFLLFFBQVE7Z0JBQ1gsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztnQkFDakMsTUFBTTtZQUNSLEtBQUssTUFBTTtnQkFDVCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO2dCQUMvQixNQUFNO1lBQ1IsS0FBSyxhQUFhO2dCQUNoQixJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO2dCQUN0QyxNQUFNO1lBQ1I7Z0JBQ0UsTUFBTTtRQUNWLENBQUM7SUFDSCxDQUFDOytHQXpCVSxTQUFTO21HQUFULFNBQVM7OzRGQUFULFNBQVM7a0JBSHJCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGFBQWE7aUJBQ3hCOzRHQUVxQixLQUFLO3NCQUF4QixLQUFLO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDb21wb25lbnQsXG4gIERpcmVjdGl2ZSxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIGlucHV0LFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb25maWdDb2x1bW4sIFNvcnRUYWJsZSB9IGZyb20gJy4vcy10YWJsZXQtbW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzLXRhYmxldCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zLXRhYmxldC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3MtdGFibGV0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFNUYWJsZXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBkYXRhOiBhbnk7XG4gIEBJbnB1dCgpIGxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgY2FwdGlvbiE6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBJbnB1dCgpIGhlYWRlciE6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBJbnB1dCgpIGJvZHlsb2FkaW5nITogVGVtcGxhdGVSZWY8YW55PjtcbiAgQElucHV0KCkgYm9keSE6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBJbnB1dCgpIGNvbmZpZ0NvbHVtbiE6IENvbmZpZ0NvbHVtbltdO1xuICBASW5wdXQoKSBpc1RyZWVNb2RlOiBib29sZWFuID0gZmFsc2U7XG4gIGxvYWRpbmdTY3JvbGwgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgQE91dHB1dCgpIHVwZGF0ZURhdGFFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgb3JkZW5CeUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxTb3J0VGFibGU+KCk7XG4gIEBPdXRwdXQoKSBjaGVja0FsbEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgc2Nyb2xsRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgaW5pdERhdGE6IGFueTtcbiAgZmllbGRTZWxlY3QhOiBTb3J0VGFibGU7XG4gIGNoZWNrYm94Q29uZmlnID0ge1xuICAgIHVzZUZvcm1Db250cm9sOiBmYWxzZSxcbiAgfTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXREYXRhID0gdGhpcy5kYXRhO1xuICB9XG5cbiAgb3JkZXJCeShjb2x1bW46IENvbmZpZ0NvbHVtbikge1xuICAgIGlmIChjb2x1bW4uc29ydGFibGUgIT09IGZhbHNlICYmICFjb2x1bW4uZGlzYWJsZWQgJiYgIWNvbHVtbi5jaGVja2JveCkge1xuICAgICAgaWYgKGNvbHVtbi5pZCkge1xuICAgICAgICAvL2NvbHVtbi5pZCBlcyBlbCBjYW1wbyBhIG9yZGVuYXIuXG4gICAgICAgIGNvbnN0IHNvcnRBc2MgPVxuICAgICAgICAgIHRoaXMuZmllbGRTZWxlY3QgJiYgdGhpcy5maWVsZFNlbGVjdC5Tb3J0RmllbGQgPT09IGNvbHVtbi5pZCAmJiB0aGlzLmZpZWxkU2VsZWN0LlNvcnRBc2MgPT09IHRydWVcbiAgICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICAgIDogdHJ1ZTtcbiAgICAgICAgdGhpcy5maWVsZFNlbGVjdCA9IHtcbiAgICAgICAgICBTb3J0QXNjOiBzb3J0QXNjLFxuICAgICAgICAgIFNvcnRGaWVsZDogY29sdW1uLmlkLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLm9yZGVuQnlFdmVudC5lbWl0KHRoaXMuZmllbGRTZWxlY3QpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZURhdGEoX2RhdGFTb3J0PzogYW55KTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVEYXRhRXZlbnQubmV4dChfZGF0YVNvcnQpO1xuICB9XG5cbiAgcmVzdGFydERhdGEoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVEYXRhRXZlbnQubmV4dCh0aGlzLmluaXREYXRhKTtcbiAgfVxuXG4gIGNoZWNrQWxsKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmNoZWNrQWxsRXZlbnQuZW1pdChldmVudCk7XG4gIH1cblxuICBvblNjcm9sbChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBlbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IGF0Qm90dG9tID0gZWxlbWVudC5zY3JvbGxIZWlnaHQgLSBlbGVtZW50LnNjcm9sbFRvcCA8PSBlbGVtZW50LmNsaWVudEhlaWdodCArIGVsZW1lbnQuc2Nyb2xsSGVpZ2h0ICogMC4xOyAvLyBhbnRlcyBkZWwgZmluYWwgcGFyYSBkaXNwYXJhciBlbCBldmVudG9cblxuICAgIGlmIChhdEJvdHRvbSkge1xuICAgICAgdGhpcy5zY3JvbGxFdmVudC5lbWl0KCk7XG4gICAgfVxuICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tTU29ydGVhYmxlQ29sdW1uXScsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ3AtZWxlbWVudCcsXG4gICAgJ1tjbGFzcy5wLXNvcnRhYmxlLWNvbHVtbl0nOiAnaXNFbmFibGVkKCknLFxuICAgICdbYXR0ci5hcmlhLXNvcnRdJzogJ3NvcnRPcmRlcicsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIFNvcnRhYmxlQ29sdW1uIHtcbiAgQElucHV0KCdTU29ydGVhYmxlQ29sdW1uJykgZmllbGQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHBTb3J0YWJsZUNvbHVtbkRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgX2RhdGFTb3J0OiBhbnk7XG4gIHNvcnRlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBzb3J0T3JkZXIhOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGRhdGE6IFNUYWJsZXRDb21wb25lbnQpIHtcbiAgICB0aGlzLl9kYXRhU29ydCA9IHRoaXMuZGF0YS5kYXRhO1xuICB9XG5cbiAgY29tcGFyZVZhbHVlcyhrZXk6IGFueSwgb3JkZXIgPSAnYXNjJykge1xuICAgIHJldHVybiBmdW5jdGlvbiBpbm5lclNvcnQoXG4gICAgICBhOiB7IFt4OiBzdHJpbmddOiBhbnk7IGhhc093blByb3BlcnR5OiAoYXJnMDogYW55KSA9PiBhbnkgfSxcbiAgICAgIGI6IHsgW3g6IHN0cmluZ106IGFueTsgaGFzT3duUHJvcGVydHk6IChhcmcwOiBhbnkpID0+IGFueSB9XG4gICAgKSB7XG4gICAgICBpZiAoIWEuaGFzT3duUHJvcGVydHkoa2V5KSB8fCAhYi5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIC8vIHByb3BlcnR5IGRvZXNuJ3QgZXhpc3Qgb24gZWl0aGVyIG9iamVjdFxuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdmFyQSA9IHR5cGVvZiBhW2tleV0gPT09ICdzdHJpbmcnID8gYVtrZXldLnRvVXBwZXJDYXNlKCkgOiBhW2tleV07XG4gICAgICBjb25zdCB2YXJCID0gdHlwZW9mIGJba2V5XSA9PT0gJ3N0cmluZycgPyBiW2tleV0udG9VcHBlckNhc2UoKSA6IGJba2V5XTtcblxuICAgICAgbGV0IGNvbXBhcmlzb24gPSAwO1xuICAgICAgaWYgKHZhckEgPiB2YXJCKSB7XG4gICAgICAgIGNvbXBhcmlzb24gPSAxO1xuICAgICAgfSBlbHNlIGlmICh2YXJBIDwgdmFyQikge1xuICAgICAgICBjb21wYXJpc29uID0gLTE7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3JkZXIgPT09ICdkZXNjJyA/IGNvbXBhcmlzb24gKiAtMSA6IGNvbXBhcmlzb247XG4gICAgfTtcbiAgfVxuXG4gIHVwZGF0ZVNvcnRTdGF0ZSgpIHtcbiAgICB0aGlzLnNvcnRlZCA9ICF0aGlzLnNvcnRlZDtcbiAgICB0aGlzLnNvcnRlZFxuICAgICAgPyB0aGlzLl9kYXRhU29ydC5zb3J0KHRoaXMuY29tcGFyZVZhbHVlcyh0aGlzLmZpZWxkLCAnYXNjJykpXG4gICAgICA6IHRoaXMuX2RhdGFTb3J0LnNvcnQodGhpcy5jb21wYXJlVmFsdWVzKHRoaXMuZmllbGQsICdkZXNjJykpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICBvbkNsaWNrKCkge1xuICAgIGlmICh0aGlzLmlzRW5hYmxlZCgpKSB7XG4gICAgICB0aGlzLnVwZGF0ZVNvcnRTdGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIGlzRW5hYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5wU29ydGFibGVDb2x1bW5EaXNhYmxlZCAhPT0gdHJ1ZTtcbiAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbU0lucHV0U2VhcmNoXScsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ3MtZWxlbWVudC1zZWFyY2gnLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBJbnB1dFNlYXJjaCB7XG4gIEBJbnB1dCgnU0lucHV0U2VhcmNoJykgZmllbGRzITogc3RyaW5nO1xuXG4gIF9kYXRhRmlsdGVyOiBhbnk7XG4gIGlucHV0VGltZW91dD86IGFueTtcbiAgZGF0YUJlZm9yZVNlYXJjaDogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0YTogU1RhYmxldENvbXBvbmVudCkge1xuICAgIHRoaXMuX2RhdGFGaWx0ZXIgPSBkYXRhLmRhdGE7XG4gIH1cblxuICBmaWx0ZXJJdGVtcyhxdWVyeTogYW55KSB7XG4gICAgbGV0IHJlc3VsdHMgPSBbXG4gICAgICAuLi50aGlzLmRhdGEuZGF0YS5maWx0ZXIoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICBjb25zdCByZWdleHAgPSBuZXcgUmVnRXhwKHF1ZXJ5LCAnaScpO1xuICAgICAgICBjb25zdCBwcm9wZXJ0aWVzID0gT2JqZWN0LmtleXMoaXRlbSk7XG4gICAgICAgIHJldHVybiBwcm9wZXJ0aWVzLnNvbWUocHJvcGVydHkgPT4gcmVnZXhwLnRlc3QoaXRlbVtwcm9wZXJ0eV0pKTtcbiAgICAgIH0pLFxuICAgIF07XG4gICAgdGhpcy5fZGF0YUZpbHRlciA9IHJlc3VsdHM7XG4gICAgdGhpcy5kYXRhLnVwZGF0ZURhdGEodGhpcy5fZGF0YUZpbHRlcik7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXl1cCcsIFsnJGV2ZW50LnRhcmdldCddKVxuICBvbkVudGVyS2V5KGU6IGFueSkge1xuICAgIGlmICh0aGlzLmlucHV0VGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuaW5wdXRUaW1lb3V0KTtcbiAgICB9XG4gICAgdGhpcy5pbnB1dFRpbWVvdXQgPSBzZXRUaW1lb3V0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLmZpbHRlckl0ZW1zKGUudmFsdWUpO1xuICAgICAgfSxcbiAgICAgIDEwMDAsXG4gICAgICBudWxsXG4gICAgKTtcblxuICAgIGlmIChlLnZhbHVlID09PSAnJykge1xuICAgICAgdGhpcy5kYXRhLnJlc3RhcnREYXRhKCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignc2VhcmNoJywgWyckZXZlbnQudGFyZ2V0J10pXG4gIHNlYXJjaChlOiBhbnkpIHtcbiAgICBpZiAoZS52YWx1ZSA9PT0gJycpIHtcbiAgICAgIHRoaXMuZGF0YS5yZXN0YXJ0RGF0YSgpO1xuICAgIH1cbiAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbU1RlbXBsYXRlXScsXG59KVxuZXhwb3J0IGNsYXNzIFNUZW1wbGF0ZSBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuICBASW5wdXQoJ1NUZW1wbGF0ZScpIGZpZWxkITogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudDogVGVtcGxhdGVSZWY8YW55PixcbiAgICBwdWJsaWMgdGFibGU6IFNUYWJsZXRDb21wb25lbnRcbiAgKSB7fVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKHRoaXMuZmllbGQpIHtcbiAgICAgIGNhc2UgJ2NhcHRpb24nOlxuICAgICAgICB0aGlzLnRhYmxlLmNhcHRpb24gPSB0aGlzLmVsZW1lbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaGVhZGVyJzpcbiAgICAgICAgdGhpcy50YWJsZS5oZWFkZXIgPSB0aGlzLmVsZW1lbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYm9keSc6XG4gICAgICAgIHRoaXMudGFibGUuYm9keSA9IHRoaXMuZWxlbWVudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdib2R5bG9hZGluZyc6XG4gICAgICAgIHRoaXMudGFibGUuYm9keWxvYWRpbmcgPSB0aGlzLmVsZW1lbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2FwdGlvblwiPjwvbmctY29udGFpbmVyPlxuPGRpdiBjbGFzcz1cInByZS1zLXRhYmxldCBzLXNjcm9sbFwiIChzY3JvbGwpPVwib25TY3JvbGwoJGV2ZW50KVwiPlxuICA8dGFibGUgY2xhc3M9XCJzLXRhYmxldFwiPlxuICAgIDx0aGVhZD5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDx0ciAqbmdJZj1cImNvbmZpZ0NvbHVtbiAmJiBjb25maWdDb2x1bW4ubGVuZ3RoID4gMCAmJiAhbG9hZGluZ1wiPlxuICAgICAgICA8dGhcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbmZpZ0NvbHVtblwiXG4gICAgICAgICAgW3dpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvcmRlckJ5KGNvbHVtbilcIlxuICAgICAgICAgIChjbGljayk9XCJvcmRlckJ5KGNvbHVtbilcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInMtdGFibGV0X19oZWFkZXJcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAncy10YWJsZXRfX2hlYWRlci0tYWxpZ24tY2VudGVyJzogY29sdW1uLmFsaWduID09PSAnY2VudGVyJyxcbiAgICAgICAgICAgICAgJ3MtdGFibGV0X19oZWFkZXItLWFsaWduLXJpZ2h0JzogY29sdW1uLmFsaWduID09PSAncmlnaHQnLFxuICAgICAgICAgICAgICAncy10YWJsZXRfX2hlYWRlci0tYWxpZ24tbGVmdCc6IGNvbHVtbi5hbGlnbiA9PT0gJ2xlZnQnIHx8ICFjb2x1bW4uYWxpZ24sXG4gICAgICAgICAgICAgIGN1cnNvcjogY29sdW1uLnNvcnRhYmxlICE9PSBmYWxzZSxcbiAgICAgICAgICAgICAgJ3MtdGFibGV0X19kaXNhYmxlZCc6IGxvYWRpbmcsXG4gICAgICAgICAgICB9XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLmNoZWNrYm94XCI+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaXNUcmVlTW9kZVwiIGNsYXNzPVwicy10YWJsZS1kb3VibGVfX3RyZWUtc3BhY2VyXCI+PC9zcGFuPlxuICAgICAgICAgICAgICA8cy1jaGVja2JveFxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ21yLTInOiBjb2x1bW4udGl0bGUgfVwiXG4gICAgICAgICAgICAgICAgW2NvbmZpZ109XCJjaGVja2JveENvbmZpZ1wiXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2x1bW4uY2hlY2tib3hWYWx1ZVwiXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hlY2tBbGwoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICA8L3MtY2hlY2tib3g+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJzLXRhYmxldF9faGVhZGVyX19sYWJlbFwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAncy10YWJsZXRfX2hlYWRlcl9fc2VsZWN0JzogZmllbGRTZWxlY3QgJiYgZmllbGRTZWxlY3QuU29ydEZpZWxkID09PSBjb2x1bW4uaWQsXG4gICAgICAgICAgICAgIH1cIj5cbiAgICAgICAgICAgICAge3sgY29sdW1uLnRpdGxlIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmllbGRTZWxlY3QgJiYgZmllbGRTZWxlY3QuU29ydEZpZWxkID09PSBjb2x1bW4uaWRcIiBjbGFzcz1cInMtdGFibGV0X19oZWFkZXJfX2ljb25cIj5cbiAgICAgICAgICAgICAgPHMtaWNvbi1tYXQgW3R5cGVdPVwiJ3N5bWJvbCdcIiBzaXplPVwic21cIiBjbGFzcz1cImljb24gY3Vyc29yXCI+e3tcbiAgICAgICAgICAgICAgICBmaWVsZFNlbGVjdC5Tb3J0QXNjID8gJ2tleWJvYXJkX2Fycm93X3VwJyA6ICdrZXlib2FyZF9hcnJvd19kb3duJ1xuICAgICAgICAgICAgICB9fTwvcy1pY29uLW1hdD5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29sdW1uLnNvcnRhYmxlICE9PSBmYWxzZSAmJiBjb2x1bW4udGl0bGUgJiYgZmllbGRTZWxlY3QgJiYgZmllbGRTZWxlY3QuU29ydEZpZWxkICE9PSBjb2x1bW4uaWRcIj5cbiAgICAgICAgICAgICAgPHMtaWNvbi1tYXQgW3R5cGVdPVwiJ3N5bWJvbCdcIiBzaXplPVwic21cIiBjbGFzcz1cImljb24gY3Vyc29yXCIgY2xhc3M9XCJzLXRhYmxldF9faGVhZGVyX19pY29uLS1zdGFuZGFyZFwiXG4gICAgICAgICAgICAgICAgPmtleWJvYXJkX2Fycm93X2Rvd248L3MtaWNvbi1tYXRcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgKm5nSWY9XCIhZmllbGRTZWxlY3QgJiYgY29sdW1uLnNvcnRhYmxlICE9PSBmYWxzZSAmJiBjb2x1bW4udGl0bGVcIlxuICAgICAgICAgICAgICBjbGFzcz1cInMtdGFibGV0X19oZWFkZXJfX2ljb24tLXN0YW5kYXJkXCI+XG4gICAgICAgICAgICAgIDxzLWljb24tbWF0IFt0eXBlXT1cIidzeW1ib2wnXCIgc2l6ZT1cInNtXCIgY2xhc3M9XCJpY29uIGN1cnNvclwiIGNsYXNzPVwicy10YWJsZXRfX2hlYWRlcl9faWNvbi0tc3RhbmRhcmRcIlxuICAgICAgICAgICAgICAgID5rZXlib2FyZF9hcnJvd19kb3duPC9zLWljb24tbWF0XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90aD5cbiAgICAgIDwvdHI+XG4gICAgPC90aGVhZD5cbiAgICA8dGJvZHkgW25nQ2xhc3NdPVwibG9hZGluZyA/ICdzLXRhYmxldF9fZW1wdHknIDogJ3MtdGFibGV0X19ib2R5J1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRpbmc7IGVsc2UgYm9keVwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2JvZHk+XG4gICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2xvYWRpbmcgKm5nVGVtcGxhdGVPdXRsZXQ9XCJib2R5bG9hZGluZ1wiPjwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3Rib2R5PlxuICAgIEBpZiAobG9hZGluZ1Njcm9sbCgpKSB7XG4gICAgICA8dGJvZHkgY2xhc3M9XCJzLXRhYmxldF9fYm9keVwiPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkIFthdHRyLmNvbHNwYW5dPVwiY29uZmlnQ29sdW1uLmxlbmd0aCB8fCAxXCIgY2xhc3M9XCJzLXRhYmxlLWNvbXBsZXRlX19sb2FkaW5nXCI+XG4gICAgICAgICAgICA8cy1zcGlubmVyIHNpemU9XCJzbVwiPjwvcy1zcGlubmVyPlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L3Rib2R5PlxuICAgIH1cbiAgPC90YWJsZT5cbjwvZGl2PlxuIl19
|