nsc-react-component 1.2.4 → 1.2.5
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/lib/table/index.d.ts +52 -1
- package/lib/table/index.js +575 -16
- package/package.json +1 -1
- package/lib/table/NormalTabl.d.ts +0 -87
- package/lib/table/NormalTabl.js +0 -548
- package/lib/table/ResizeColumn.d.ts +0 -16
- package/lib/table/ResizeColumn.js +0 -166
- package/lib/table/index copy.d.ts +0 -47
- package/lib/table/index copy.js +0 -87
package/lib/table/index.js
CHANGED
|
@@ -1,10 +1,41 @@
|
|
|
1
1
|
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import "antd/es/table/style/css";
|
|
4
|
+
import _Table from "antd/es/table";
|
|
5
|
+
import "antd/es/popover/style/css";
|
|
6
|
+
import _Popover from "antd/es/popover";
|
|
7
|
+
import "antd/es/tooltip/style/css";
|
|
8
|
+
import _Tooltip from "antd/es/tooltip";
|
|
9
|
+
import "antd/es/checkbox/style/css";
|
|
10
|
+
import _Checkbox from "antd/es/checkbox";
|
|
11
|
+
var _excluded = ["onResize", "width"],
|
|
12
|
+
_excluded2 = ["listeners"];
|
|
4
13
|
|
|
5
|
-
function
|
|
14
|
+
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
6
15
|
|
|
7
|
-
function
|
|
16
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
17
|
+
|
|
18
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
19
|
+
|
|
20
|
+
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
21
|
+
|
|
22
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
23
|
+
|
|
24
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
25
|
+
|
|
26
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
27
|
+
|
|
28
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
29
|
+
|
|
30
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
31
|
+
|
|
32
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
33
|
+
|
|
34
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
35
|
+
|
|
36
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
37
|
+
|
|
38
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
8
39
|
|
|
9
40
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
10
41
|
|
|
@@ -28,6 +59,10 @@ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.g
|
|
|
28
59
|
|
|
29
60
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
30
61
|
|
|
62
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
63
|
+
|
|
64
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
65
|
+
|
|
31
66
|
/*
|
|
32
67
|
* @Descripttion:
|
|
33
68
|
* @version:
|
|
@@ -36,36 +71,559 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
|
|
|
36
71
|
* @LastEditors: rxzhu
|
|
37
72
|
* @LastEditTime: 2021-03-23 10:30:42
|
|
38
73
|
*/
|
|
74
|
+
import { AppstoreOutlined } from "@ant-design/icons";
|
|
75
|
+
import { isEmptyObj } from "@bj-nsc/functions";
|
|
76
|
+
import Store, { PageStore } from "@bj-nsc/msn";
|
|
77
|
+
import { utils } from "@bj-nsc/msn/lib/utils";
|
|
39
78
|
import * as React from "react";
|
|
40
|
-
import {
|
|
79
|
+
import { DndProvider } from "react-dnd";
|
|
80
|
+
import BodyRow, { DndContextType, IBodyRowProps } from "../common/BodyRow";
|
|
81
|
+
import treeUtils from "../treeUtils";
|
|
82
|
+
import styles from "./index.less";
|
|
83
|
+
var BodyRowComponent = BodyRow.BodyRowComponent,
|
|
84
|
+
HTML5Backend = BodyRow.HTML5Backend;
|
|
41
85
|
import withZhLocale from "../common/withZhLocale";
|
|
42
|
-
import
|
|
43
|
-
import
|
|
86
|
+
import { NoData } from "..";
|
|
87
|
+
import { Resizable } from "react-resizable";
|
|
88
|
+
import "./resize.less";
|
|
44
89
|
export { DndContextType, IBodyRowProps };
|
|
45
90
|
|
|
91
|
+
var ResizeableTitle = function ResizeableTitle(props) {
|
|
92
|
+
var onResize = props.onResize,
|
|
93
|
+
width = props.width,
|
|
94
|
+
restProps = _objectWithoutProperties(props, _excluded);
|
|
95
|
+
|
|
96
|
+
return /*#__PURE__*/React.createElement(Resizable, {
|
|
97
|
+
width: width || 150,
|
|
98
|
+
height: 0,
|
|
99
|
+
onResize: onResize,
|
|
100
|
+
draggableOpts: {
|
|
101
|
+
enableUserSelectHack: false
|
|
102
|
+
}
|
|
103
|
+
}, /*#__PURE__*/React.createElement("th", restProps));
|
|
104
|
+
};
|
|
105
|
+
|
|
46
106
|
var NSCTable = /*#__PURE__*/function (_React$Component) {
|
|
47
107
|
_inherits(NSCTable, _React$Component);
|
|
48
108
|
|
|
49
109
|
var _super = _createSuper(NSCTable);
|
|
50
110
|
|
|
51
|
-
function NSCTable() {
|
|
111
|
+
function NSCTable(props) {
|
|
112
|
+
var _this2;
|
|
113
|
+
|
|
52
114
|
_classCallCheck(this, NSCTable);
|
|
53
115
|
|
|
54
|
-
|
|
116
|
+
_this2 = _super.call(this, props);
|
|
117
|
+
|
|
118
|
+
_defineProperty(_assertThisInitialized(_this2), "store", {});
|
|
119
|
+
|
|
120
|
+
_defineProperty(_assertThisInitialized(_this2), "thIconRef", /*#__PURE__*/React.createRef());
|
|
121
|
+
|
|
122
|
+
_defineProperty(_assertThisInitialized(_this2), "state", {
|
|
123
|
+
dataSource: [],
|
|
124
|
+
columns: [],
|
|
125
|
+
loading: false,
|
|
126
|
+
pagination: {},
|
|
127
|
+
activeIndex: -1,
|
|
128
|
+
//搜索文本
|
|
129
|
+
searchText: null,
|
|
130
|
+
fieldOption: null,
|
|
131
|
+
searchColor: null,
|
|
132
|
+
cols: []
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
_defineProperty(_assertThisInitialized(_this2), "listeners", {
|
|
136
|
+
onBeforeLoad: null,
|
|
137
|
+
load: null
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
_defineProperty(_assertThisInitialized(_this2), "components", {
|
|
141
|
+
header: {
|
|
142
|
+
cell: ResizeableTitle
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
_defineProperty(_assertThisInitialized(_this2), "handleResize", function (index) {
|
|
147
|
+
return function (e, _ref) {
|
|
148
|
+
var size = _ref.size;
|
|
149
|
+
var cols = _this2.state.cols;
|
|
150
|
+
console.log("handleResize", cols);
|
|
151
|
+
|
|
152
|
+
var nextColumns = _toConsumableArray(cols);
|
|
153
|
+
|
|
154
|
+
nextColumns[index] = _objectSpread(_objectSpread({}, nextColumns[index]), {}, {
|
|
155
|
+
width: size.width
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
_this2.setState({
|
|
159
|
+
cols: nextColumns
|
|
160
|
+
});
|
|
161
|
+
};
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
_defineProperty(_assertThisInitialized(_this2), "moveRow", function (dragIndex, hoverIndex, drag, target) {
|
|
165
|
+
var _this = _assertThisInitialized(_this2);
|
|
166
|
+
|
|
167
|
+
var dragNode = drag.record;
|
|
168
|
+
var targetNode = target.record;
|
|
169
|
+
dragNode.moveArray(dragNode, targetNode);
|
|
170
|
+
var ids = dragNode.parentNode.getChildNodeIds();
|
|
171
|
+
var params = {
|
|
172
|
+
id: dragNode.id,
|
|
173
|
+
parentId: dragNode.attribute.parentId,
|
|
174
|
+
ids: ids
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
if (_this2.props.moveRow) {
|
|
178
|
+
_this2.props.moveRow(params);
|
|
179
|
+
} else {
|
|
180
|
+
_this2.store.reload();
|
|
181
|
+
} // request("http://demo.javasvn.com/api/admin/menus/drag", {
|
|
182
|
+
// method: "PATCH",
|
|
183
|
+
// data: params,
|
|
184
|
+
// callback: function (data) {
|
|
185
|
+
// this.store.reload();
|
|
186
|
+
// },
|
|
187
|
+
// });
|
|
188
|
+
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
if (props.store instanceof Store) {
|
|
192
|
+
_this2.store = props.store;
|
|
193
|
+
} else {
|
|
194
|
+
var _ref2 = props.store || {},
|
|
195
|
+
_ref2$listeners = _ref2.listeners,
|
|
196
|
+
listenersProps = _ref2$listeners === void 0 ? {} : _ref2$listeners,
|
|
197
|
+
restStore = _objectWithoutProperties(_ref2, _excluded2);
|
|
198
|
+
|
|
199
|
+
var storeProps = _objectSpread(_objectSpread({
|
|
200
|
+
model: "model",
|
|
201
|
+
component: _assertThisInitialized(_this2),
|
|
202
|
+
listeners: {
|
|
203
|
+
onBeforeLoad: function onBeforeLoad(store, options) {
|
|
204
|
+
_this2.setState({
|
|
205
|
+
loading: true
|
|
206
|
+
});
|
|
207
|
+
|
|
208
|
+
utils.callback(listenersProps.onBeforeLoad, _assertThisInitialized(_this2), [store, options]);
|
|
209
|
+
},
|
|
210
|
+
dataChanged: function dataChanged(data, modelData, store) {
|
|
211
|
+
var paging = !(_this2.props.pagination === false);
|
|
212
|
+
|
|
213
|
+
if (paging && !_this2.props.dataSource) {
|
|
214
|
+
_this2.setState({
|
|
215
|
+
dataSource: modelData,
|
|
216
|
+
pagination: store.getPagination(),
|
|
217
|
+
loading: false,
|
|
218
|
+
activeIndex: -1
|
|
219
|
+
});
|
|
220
|
+
} else {
|
|
221
|
+
_this2.setState({
|
|
222
|
+
dataSource: modelData,
|
|
223
|
+
loading: false
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
utils.callback(listenersProps.dataChanged, _assertThisInitialized(_this2), [data, modelData, store, paging]);
|
|
228
|
+
},
|
|
229
|
+
load: function load(data, modelData, store) {
|
|
230
|
+
utils.callback(listenersProps.load, _assertThisInitialized(_this2), [data, modelData, store]);
|
|
231
|
+
},
|
|
232
|
+
onErrorLoad: function onErrorLoad(err, response) {
|
|
233
|
+
_this2.setState({
|
|
234
|
+
loading: false
|
|
235
|
+
});
|
|
236
|
+
|
|
237
|
+
utils.callback(listenersProps.onErrorLoad, _assertThisInitialized(_this2), [err, response]);
|
|
238
|
+
}
|
|
239
|
+
},
|
|
240
|
+
data: restStore.data ? restStore.data : props.dataSource ? props.dataSource : null
|
|
241
|
+
}, restStore), {}, {
|
|
242
|
+
autoLoad: restStore.autoLoad === false ? false : true
|
|
243
|
+
});
|
|
244
|
+
|
|
245
|
+
_this2.store = new PageStore(Object.assign({}, storeProps, {
|
|
246
|
+
pagination: _this2.props.pagination
|
|
247
|
+
}));
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
return _this2;
|
|
55
251
|
}
|
|
56
252
|
|
|
57
253
|
_createClass(NSCTable, [{
|
|
254
|
+
key: "componentDidMount",
|
|
255
|
+
value: function componentDidMount() {
|
|
256
|
+
var resizeColumn = this.props.resizeColumn;
|
|
257
|
+
|
|
258
|
+
if (!resizeColumn) {
|
|
259
|
+
this.setState({
|
|
260
|
+
columns: _toConsumableArray(this.props.columns)
|
|
261
|
+
});
|
|
262
|
+
} else {
|
|
263
|
+
this.setState({
|
|
264
|
+
cols: _toConsumableArray(this.props.columns)
|
|
265
|
+
}); // this.resetColumn();
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
var store = this.props.store;
|
|
269
|
+
|
|
270
|
+
if (store && store.data) {
|
|
271
|
+
this.store.setData(store.data);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}, {
|
|
275
|
+
key: "componentDidUpdate",
|
|
276
|
+
value: function componentDidUpdate(prevProps, preState) {
|
|
277
|
+
var resizeColumn = this.props.resizeColumn;
|
|
278
|
+
|
|
279
|
+
if (!resizeColumn) {
|
|
280
|
+
if (this.props.columns !== prevProps.columns) {
|
|
281
|
+
this.setState({
|
|
282
|
+
columns: this.props.columns
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
} else {
|
|
286
|
+
if (preState.cols !== this.state.cols) {
|
|
287
|
+
this.resetColumn();
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
}, {
|
|
292
|
+
key: "resetColumn",
|
|
293
|
+
value: function resetColumn() {
|
|
294
|
+
var _this3 = this;
|
|
295
|
+
|
|
296
|
+
var cols = this.state.cols;
|
|
297
|
+
var newCols = [];
|
|
298
|
+
var colss = cols || [];
|
|
299
|
+
colss.map(function (col, index) {
|
|
300
|
+
var temp = _objectSpread(_objectSpread({}, col), {}, {
|
|
301
|
+
onHeaderCell: function onHeaderCell(column) {
|
|
302
|
+
return {
|
|
303
|
+
width: column.width,
|
|
304
|
+
onResize: _this3.handleResize(index)
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
});
|
|
308
|
+
|
|
309
|
+
newCols.push(temp);
|
|
310
|
+
});
|
|
311
|
+
this.setState({
|
|
312
|
+
columns: newCols
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* 清除选中颜色
|
|
317
|
+
*/
|
|
318
|
+
|
|
319
|
+
}, {
|
|
320
|
+
key: "clearSelectColor",
|
|
321
|
+
value: function clearSelectColor() {
|
|
322
|
+
this.setState({
|
|
323
|
+
activeIndex: -1
|
|
324
|
+
});
|
|
325
|
+
return this;
|
|
326
|
+
}
|
|
327
|
+
}, {
|
|
328
|
+
key: "getPaginationByStore",
|
|
329
|
+
value: function getPaginationByStore() {
|
|
330
|
+
return this.store.getPagination();
|
|
331
|
+
}
|
|
332
|
+
}, {
|
|
333
|
+
key: "onChange",
|
|
334
|
+
value: function onChange(pagination, filters, sorter, extra) {
|
|
335
|
+
var _this4 = this;
|
|
336
|
+
|
|
337
|
+
var _this$props = this.props,
|
|
338
|
+
autoOnChange = _this$props.autoOnChange,
|
|
339
|
+
autoSort = _this$props.autoSort,
|
|
340
|
+
autoPagination = _this$props.autoPagination,
|
|
341
|
+
onChange = _this$props.onChange;
|
|
342
|
+
|
|
343
|
+
if (autoOnChange === false) {
|
|
344
|
+
onChange && onChange(pagination, filters, sorter, extra);
|
|
345
|
+
return;
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
var handlePagination = function handlePagination() {
|
|
349
|
+
var params = {};
|
|
350
|
+
var paging = _this4.getPaginationByStore() || {};
|
|
351
|
+
|
|
352
|
+
if (!isEmptyObj(pagination)) {
|
|
353
|
+
var _p;
|
|
354
|
+
|
|
355
|
+
var p = (_p = {}, _defineProperty(_p, paging.currentKey || "current", pagination.current), _defineProperty(_p, paging.pageSizeKey || "size", pagination.pageSize), _p);
|
|
356
|
+
Object.assign(params, p);
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
if (autoSort === true && !isEmptyObj(sorter)) {
|
|
360
|
+
if (sorter.order == "ascend") {
|
|
361
|
+
params.ascs = sorter.column.sortField || sorter.column.field || sorter.field;
|
|
362
|
+
params.descs = "";
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
if (sorter.order == "descend") {
|
|
366
|
+
params.descs = sorter.column.sortField || sorter.column.field || sorter.field;
|
|
367
|
+
params.ascs = "";
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
_this4.store.reload({
|
|
372
|
+
params: params
|
|
373
|
+
});
|
|
374
|
+
};
|
|
375
|
+
|
|
376
|
+
var onChangeFn = this.props.onChange; // 用户传了onChange保留用户自主处理表格变化的权力
|
|
377
|
+
|
|
378
|
+
if (onChangeFn) {
|
|
379
|
+
utils.callback(onChangeFn, this, [pagination, filters, sorter, extra]);
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
if (this.props.autoPagination) {
|
|
383
|
+
handlePagination();
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
}, {
|
|
387
|
+
key: "getStore",
|
|
388
|
+
value: function getStore() {
|
|
389
|
+
return this.store;
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* 获取数据模型对象
|
|
393
|
+
*/
|
|
394
|
+
|
|
395
|
+
}, {
|
|
396
|
+
key: "getModel",
|
|
397
|
+
value: function getModel() {
|
|
398
|
+
return this.store.getModel();
|
|
399
|
+
}
|
|
400
|
+
/**
|
|
401
|
+
* 菜单搜索过滤显示
|
|
402
|
+
* @param {String} val
|
|
403
|
+
*/
|
|
404
|
+
|
|
405
|
+
}, {
|
|
406
|
+
key: "handleSearch",
|
|
407
|
+
value: function handleSearch(val, fieldOption, searchColor) {
|
|
408
|
+
this.setState({
|
|
409
|
+
searchText: val,
|
|
410
|
+
fieldOption: fieldOption,
|
|
411
|
+
searchColor: searchColor
|
|
412
|
+
});
|
|
413
|
+
}
|
|
414
|
+
/**
|
|
415
|
+
* 模块列表移动排序
|
|
416
|
+
*/
|
|
417
|
+
|
|
418
|
+
}, {
|
|
419
|
+
key: "filterColumn",
|
|
420
|
+
value: function filterColumn(checkedValue) {
|
|
421
|
+
var filterColumns = this.props.columns.map(function (col) {
|
|
422
|
+
var newCol = _objectSpread({}, col);
|
|
423
|
+
|
|
424
|
+
if (checkedValue.includes(col.dataIndex)) {
|
|
425
|
+
newCol.initShow = true;
|
|
426
|
+
} else {
|
|
427
|
+
newCol.initShow = false;
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
return newCol;
|
|
431
|
+
}); // this.setState({ columns: filterColumns });
|
|
432
|
+
|
|
433
|
+
var resizeColumn = this.props.resizeColumn;
|
|
434
|
+
|
|
435
|
+
if (!resizeColumn) {
|
|
436
|
+
this.setState({
|
|
437
|
+
columns: filterColumns
|
|
438
|
+
});
|
|
439
|
+
} else {
|
|
440
|
+
this.setState({
|
|
441
|
+
cols: filterColumns
|
|
442
|
+
});
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
}, {
|
|
446
|
+
key: "getColumns",
|
|
447
|
+
value: function getColumns() {
|
|
448
|
+
var _this5 = this;
|
|
449
|
+
|
|
450
|
+
var columns = this.state.columns;
|
|
451
|
+
var _this$props2 = this.props,
|
|
452
|
+
disableColumns = _this$props2.disableColumns,
|
|
453
|
+
colLists = _this$props2.columns;
|
|
454
|
+
var defaultShowCols = columns.filter(function (cols) {
|
|
455
|
+
return cols.initShow !== false;
|
|
456
|
+
});
|
|
457
|
+
var defaultHideCols = columns.filter(function (cols) {
|
|
458
|
+
return cols.initShow === false;
|
|
459
|
+
});
|
|
460
|
+
var content = /*#__PURE__*/React.createElement(_Checkbox.Group, {
|
|
461
|
+
onChange: this.filterColumn.bind(this),
|
|
462
|
+
options: colLists.map(function (col) {
|
|
463
|
+
return {
|
|
464
|
+
label: col.title,
|
|
465
|
+
value: col.dataIndex
|
|
466
|
+
};
|
|
467
|
+
}),
|
|
468
|
+
defaultValue: defaultShowCols.map(function (col) {
|
|
469
|
+
return col.dataIndex;
|
|
470
|
+
})
|
|
471
|
+
});
|
|
472
|
+
var cols = defaultShowCols.map(function (col) {
|
|
473
|
+
if (col.ellipsis && !col.render) {
|
|
474
|
+
col.ellipsis = {
|
|
475
|
+
showTitle: false
|
|
476
|
+
};
|
|
477
|
+
|
|
478
|
+
col.render = function (text) {
|
|
479
|
+
return /*#__PURE__*/React.createElement(_Tooltip, {
|
|
480
|
+
placement: "topLeft",
|
|
481
|
+
title: text
|
|
482
|
+
}, text);
|
|
483
|
+
};
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
return col;
|
|
487
|
+
});
|
|
488
|
+
var IconAction = {
|
|
489
|
+
title: /*#__PURE__*/React.createElement("div", {
|
|
490
|
+
className: styles["th-icon"],
|
|
491
|
+
ref: this.thIconRef
|
|
492
|
+
}, /*#__PURE__*/React.createElement(_Popover, {
|
|
493
|
+
title: "\u9009\u62E9\u663E\u793A\u7684\u5217",
|
|
494
|
+
content: content,
|
|
495
|
+
placement: "bottomRight",
|
|
496
|
+
trigger: "click",
|
|
497
|
+
overlayStyle: {
|
|
498
|
+
minWidth: 410,
|
|
499
|
+
maxWidth: 450
|
|
500
|
+
},
|
|
501
|
+
getPopupContainer: function getPopupContainer() {
|
|
502
|
+
return _this5.thIconRef.current;
|
|
503
|
+
}
|
|
504
|
+
}, /*#__PURE__*/React.createElement(AppstoreOutlined, {
|
|
505
|
+
size: 24,
|
|
506
|
+
className: styles["app-store-icon"]
|
|
507
|
+
}))),
|
|
508
|
+
dataIndex: "icon-menu",
|
|
509
|
+
key: "icon-menu",
|
|
510
|
+
width: 50,
|
|
511
|
+
align: "center" // fixed: "right",
|
|
512
|
+
|
|
513
|
+
};
|
|
514
|
+
|
|
515
|
+
if (this.props.filterColumn) {
|
|
516
|
+
cols.push(IconAction);
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
return cols;
|
|
520
|
+
}
|
|
521
|
+
}, {
|
|
58
522
|
key: "render",
|
|
59
523
|
value: function render() {
|
|
60
|
-
var
|
|
61
|
-
|
|
62
|
-
|
|
524
|
+
var _this6 = this;
|
|
525
|
+
|
|
526
|
+
var _this = this,
|
|
527
|
+
_this$state = this.state,
|
|
528
|
+
loading = _this$state.loading,
|
|
529
|
+
dataSource = _this$state.dataSource,
|
|
530
|
+
_this$state$paginatio = _this$state.pagination,
|
|
531
|
+
pagination = _this$state$paginatio === void 0 ? {} : _this$state$paginatio,
|
|
532
|
+
searchText = _this$state.searchText,
|
|
533
|
+
fieldOption = _this$state.fieldOption,
|
|
534
|
+
searchColor = _this$state.searchColor,
|
|
535
|
+
props = utils.omit(this.props, ["store", "onChange", "columns", "resetColumn"], {
|
|
536
|
+
rowKey: "id",
|
|
537
|
+
clickChangeColor: false
|
|
538
|
+
});
|
|
539
|
+
|
|
540
|
+
if (props.pagination !== false) {
|
|
541
|
+
props.pagination = _objectSpread(_objectSpread({
|
|
542
|
+
position: ["bottomRight"],
|
|
543
|
+
showSizeChanger: true,
|
|
544
|
+
showQuickJumper: true
|
|
545
|
+
}, props.pagination), pagination);
|
|
63
546
|
|
|
64
|
-
|
|
65
|
-
|
|
547
|
+
if (props.showTotal == true) {
|
|
548
|
+
props.pagination.showTotal = function (total, _ref3) {
|
|
549
|
+
var _ref4 = _slicedToArray(_ref3, 2),
|
|
550
|
+
from = _ref4[0],
|
|
551
|
+
to = _ref4[1];
|
|
552
|
+
|
|
553
|
+
// return "显示 " + from + " - " + to + "条,共 " + total + " 条";
|
|
554
|
+
return "共 " + total + " 条";
|
|
555
|
+
};
|
|
556
|
+
}
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
props.onChange = function (pagination, filters, sorter, extra) {
|
|
560
|
+
_this.onChange(pagination, filters, sorter, extra);
|
|
561
|
+
};
|
|
562
|
+
|
|
563
|
+
if (props.clickChangeColor) {
|
|
564
|
+
var onRowFn = props.onRow;
|
|
565
|
+
|
|
566
|
+
props.onRow = function (record, index) {
|
|
567
|
+
var custom = onRowFn ? onRowFn(record, index) : {};
|
|
568
|
+
var onClickFn = custom.onClick;
|
|
569
|
+
|
|
570
|
+
custom.onClick = function (event) {
|
|
571
|
+
_this.setState({
|
|
572
|
+
activeIndex: index //获取点击行的索引
|
|
573
|
+
|
|
574
|
+
});
|
|
575
|
+
|
|
576
|
+
utils.callback(onClickFn, _this, [event]);
|
|
577
|
+
};
|
|
578
|
+
|
|
579
|
+
return custom;
|
|
580
|
+
};
|
|
581
|
+
|
|
582
|
+
props.rowClassName = function (record, index) {
|
|
583
|
+
return index === _this.state.activeIndex ? "".concat(styles.clickRowStyle) : "";
|
|
584
|
+
};
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
var newDataSource = [];
|
|
588
|
+
|
|
589
|
+
if (searchText) {
|
|
590
|
+
var data = treeUtils.getSearchMenuDatas(this, searchText, fieldOption, searchColor);
|
|
591
|
+
newDataSource = data.treeDatas;
|
|
592
|
+
props.expandedRowKeys = data.openKeys;
|
|
66
593
|
} else {
|
|
67
|
-
|
|
594
|
+
newDataSource = dataSource;
|
|
68
595
|
}
|
|
596
|
+
|
|
597
|
+
props.store = props.store || {};
|
|
598
|
+
props.store.autoLoad = props.store.autoLoad === false ? false : true;
|
|
599
|
+
var dragable = _this.props.dragable;
|
|
600
|
+
var dragableProps = dragable === true ? {
|
|
601
|
+
components: BodyRowComponent,
|
|
602
|
+
onRow: function onRow(record, index) {
|
|
603
|
+
return {
|
|
604
|
+
index: index,
|
|
605
|
+
record: record,
|
|
606
|
+
moveRow: _this6.moveRow
|
|
607
|
+
};
|
|
608
|
+
}
|
|
609
|
+
} : {};
|
|
610
|
+
var resizeColumn = this.props.resizeColumn;
|
|
611
|
+
var resizeProps = resizeColumn === true ? {
|
|
612
|
+
components: this.components
|
|
613
|
+
} : null;
|
|
614
|
+
var DefaultTable = /*#__PURE__*/React.createElement(_Table, _extends({
|
|
615
|
+
childrenColumnName: "childNodes",
|
|
616
|
+
dataSource: newDataSource,
|
|
617
|
+
columns: this.getColumns(),
|
|
618
|
+
loading: loading,
|
|
619
|
+
className: styles["nsc-table"],
|
|
620
|
+
locale: {
|
|
621
|
+
emptyText: /*#__PURE__*/React.createElement(NoData, null)
|
|
622
|
+
}
|
|
623
|
+
}, resizeProps, props, dragableProps));
|
|
624
|
+
return dragable === true ? /*#__PURE__*/React.createElement(DndProvider, {
|
|
625
|
+
backend: HTML5Backend
|
|
626
|
+
}, DefaultTable) : DefaultTable;
|
|
69
627
|
}
|
|
70
628
|
}]);
|
|
71
629
|
|
|
@@ -80,8 +638,9 @@ _defineProperty(NSCTable, "defaultProps", {
|
|
|
80
638
|
dragUrl: "",
|
|
81
639
|
autoPagination: true,
|
|
82
640
|
autoSort: true,
|
|
83
|
-
autoOnChange: true
|
|
641
|
+
autoOnChange: true,
|
|
642
|
+
resizeColumn: false
|
|
84
643
|
});
|
|
85
644
|
|
|
86
645
|
export default withZhLocale(NSCTable);
|
|
87
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL3RhYmxlL2luZGV4LnRzeCJdLCJuYW1lcyI6WyJSZWFjdCIsIkRuZENvbnRleHRUeXBlIiwiSUJvZHlSb3dQcm9wcyIsIndpdGhaaExvY2FsZSIsIlJlc2l6ZVRhYmxlIiwiTm9ybWFsVGFibGUiLCJOU0NUYWJsZSIsInByb3BzIiwicmVzaXplQ29sdW1uIiwicGFyYW1zIiwiQ29tcG9uZW50IiwiZGlzYWJsZUNvbHVtbnMiLCJkcmFnYWJsZSIsInNob3dUb3RhbCIsImZpbHRlckNvbHVtbiIsImRyYWdVcmwiLCJhdXRvUGFnaW5hdGlvbiIsImF1dG9Tb3J0IiwiYXV0b09uQ2hhbmdlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBY0EsT0FBTyxLQUFLQSxLQUFaLE1BQXVCLE9BQXZCO0FBQ0EsU0FBa0JDLGNBQWxCLEVBQWtDQyxhQUFsQyxRQUF1RCxtQkFBdkQ7QUFFQSxPQUFPQyxZQUFQLE1BQXlCLHdCQUF6QjtBQUNBLE9BQU9DLFdBQVAsTUFBd0IsZ0JBQXhCO0FBQ0EsT0FBT0MsV0FBUCxNQUF3QixjQUF4QjtBQWlDQSxTQUFTSixjQUFULEVBQXlCQyxhQUF6Qjs7SUFDTUksUTs7Ozs7Ozs7Ozs7OztXQVdKLGtCQUFTO0FBQ1Asd0JBQW9DLEtBQUtDLEtBQXpDO0FBQUEsVUFBUUMsWUFBUixlQUFRQSxZQUFSO0FBQUEsVUFBeUJDLE1BQXpCOztBQUNBLFVBQUlELFlBQUosRUFBa0I7QUFDaEIsNEJBQU8sb0JBQUMsV0FBRCxFQUFpQkMsTUFBakIsQ0FBUDtBQUNELE9BRkQsTUFFTztBQUNMLDRCQUFPLG9CQUFDLFdBQUQsRUFBaUJBLE1BQWpCLENBQVA7QUFDRDtBQUNGOzs7O0VBbEJvQlQsS0FBSyxDQUFDVSxTOztnQkFBdkJKLFEsa0JBQ2tCO0FBQ3BCSyxFQUFBQSxjQUFjLEVBQUUsRUFESTtBQUVwQkMsRUFBQUEsUUFBUSxFQUFFLEtBRlU7QUFHcEJDLEVBQUFBLFNBQVMsRUFBRSxJQUhTO0FBSXBCQyxFQUFBQSxZQUFZLEVBQUUsSUFKTTtBQUtwQkMsRUFBQUEsT0FBTyxFQUFFLEVBTFc7QUFNcEJDLEVBQUFBLGNBQWMsRUFBRSxJQU5JO0FBT3BCQyxFQUFBQSxRQUFRLEVBQUUsSUFQVTtBQVFwQkMsRUFBQUEsWUFBWSxFQUFFO0FBUk0sQzs7QUFvQnhCLGVBQWVmLFlBQVksQ0FBQ0csUUFBRCxDQUEzQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIEBEZXNjcmlwdHRpb246XHJcbiAqIEB2ZXJzaW9uOlxyXG4gKiBAQXV0aG9yOiByeHpodVxyXG4gKiBARGF0ZTogMjAyMS0wMy0yMyAwODo0NjoyMFxyXG4gKiBATGFzdEVkaXRvcnM6IHJ4emh1XHJcbiAqIEBMYXN0RWRpdFRpbWU6IDIwMjEtMDMtMjMgMTA6MzA6NDJcclxuICovXHJcbmltcG9ydCB7IEFwcHN0b3JlT3V0bGluZWQgfSBmcm9tIFwiQGFudC1kZXNpZ24vaWNvbnNcIjtcclxuaW1wb3J0IHsgaXNFbXB0eU9iaiB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgU3RvcmUsIHsgUGFnZVN0b3JlLCBTdG9yZVByb3BzIH0gZnJvbSBcIkBiai1uc2MvbXNuXCI7XHJcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSBcIkBiai1uc2MvbXNuL2xpYi91dGlsc1wiO1xyXG5pbXBvcnQge1xyXG4gIENoZWNrYm94LFxyXG4gIENoZWNrYm94T3B0aW9uVHlwZSxcclxuICBQb3BvdmVyLFxyXG4gIFRhYmxlLFxyXG4gIFRhYmxlUHJvcHMsXHJcbiAgVG9vbHRpcCxcclxufSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgeyBDb2x1bW5UeXBlLCBUYWJsZVBhZ2luYXRpb25Db25maWcgfSBmcm9tIFwiYW50ZC9saWIvdGFibGVcIjtcclxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBCb2R5Um93LCB7IERuZENvbnRleHRUeXBlLCBJQm9keVJvd1Byb3BzIH0gZnJvbSBcIi4uL2NvbW1vbi9Cb2R5Um93XCI7XHJcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vaW5kZXgubGVzc1wiO1xyXG5pbXBvcnQgd2l0aFpoTG9jYWxlIGZyb20gXCIuLi9jb21tb24vd2l0aFpoTG9jYWxlXCI7XHJcbmltcG9ydCBSZXNpemVUYWJsZSBmcm9tIFwiLi9SZXNpemVDb2x1bW5cIjtcclxuaW1wb3J0IE5vcm1hbFRhYmxlIGZyb20gXCIuL05vcm1hbFRhYmxcIjtcclxuXHJcbmludGVyZmFjZSBJRHJhZ1BhcmFtcyB7XHJcbiAgaWQ6IHN0cmluZyB8IG51bWJlcjtcclxuICBpZHM6IEFycmF5PHN0cmluZyB8IG51bWJlcj47XHJcbiAgcGFyZW50SWQ6IHN0cmluZyB8IG51bWJlcjtcclxufVxyXG4vLyBpbnRlcmZhY2UgU3RvcmVQcm9wcyB7fVxyXG5cclxuZXhwb3J0IHR5cGUgU3RvcmVUeXBlID0gXCJQYWdlU3RvcmVcIiB8IFwiVHJlZVN0b3JlXCIgfCBcIkJhc2VTdG9yZVwiO1xyXG5cclxuaW50ZXJmYWNlIE5TQ1RhYmxlUGFnaW5hdGlvbiBleHRlbmRzIFRhYmxlUGFnaW5hdGlvbkNvbmZpZyB7XHJcbiAgdG90YWxLZXk/OiBzdHJpbmc7XHJcbiAgcGFnZVNpemVLZXk/OiBzdHJpbmc7XHJcbiAgY3VycmVudEtleT86IHN0cmluZztcclxufVxyXG5cclxuaW50ZXJmYWNlIE5TQ1RhYmxlUHJvcHMgZXh0ZW5kcyBUYWJsZVByb3BzPGFueT4ge1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBzaG93VG90YWw/OiBib29sZWFuOyAvLyDmmK/lkKbmmL7npLrmgLvmnaHmlbDkv6Hmga/vvIzpu5jorqR0cnVlXHJcbiAgZGlzYWJsZUNvbHVtbnM/OiBzdHJpbmdbXTsgLy8g5LiN5Y+v6ZqQ6JeP5b+F6aG75pi+56S655qE5YiXXHJcbiAgZHJhZ2FibGU/OiBib29sZWFuOyAvLyDmmK/lkKblj6/mi5bliqgsIOm7mOiupGZhbHNlXHJcbiAgZmlsdGVyQ29sdW1uPzogYm9vbGVhbjsgLy8g5piv5ZCm5pSv5oyB6L+H5ruk5pi+56S66KGo5qC85YiXLCDpu5jorqR0cnVlXHJcbiAgbW92ZVJvdz86IChwYXJhbXM6IElEcmFnUGFyYW1zKSA9PiB2b2lkOyAvLyDmi5bmi73lrozmiJDlkI7nmoTlm57osINcclxuICBkcmFnVXJsPzogc3RyaW5nOyAvLyDkv53lrZjmi5bmi73mjpLluo/nmoTmjqXlj6NcclxuICBwYWdpbmF0aW9uPzogZmFsc2UgfCBOU0NUYWJsZVBhZ2luYXRpb247XHJcbiAgYXV0b1BhZ2luYXRpb24/OiBib29sZWFuOyAvLyDnu4Tku7bmmK/lkKboh6rliqjlpITnkIbliIbpobVcclxuICBhdXRvU29ydD86IGJvb2xlYW47IC8v57uE5Lu25piv5ZCm6Ieq5Yqo5aSE55CG5o6S5bqPXHJcbiAgYXV0b09uQ2hhbmdlPzogYm9vbGVhbjsgLy8g57uE5Lu25piv5ZCm6Ieq5Yqob25DaGFuZ2UsIGZhbHNl5YiZ5LiN5YGa5Lu75L2V5aSE55CG5YWo6YOo5Lqk57uZ6LCD55So5pa5XHJcbiAgcmVzaXplQ29sdW1uPzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgSU5TQ1RhYmxlUHJvcHMgPSB0eXBlb2YgTlNDVGFibGUuZGVmYXVsdFByb3BzICYgTlNDVGFibGVQcm9wcztcclxuZXhwb3J0IHsgRG5kQ29udGV4dFR5cGUsIElCb2R5Um93UHJvcHMgfTtcclxuY2xhc3MgTlNDVGFibGUgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8SU5TQ1RhYmxlUHJvcHM+IHtcclxuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xyXG4gICAgZGlzYWJsZUNvbHVtbnM6IFtdLFxyXG4gICAgZHJhZ2FibGU6IGZhbHNlLFxyXG4gICAgc2hvd1RvdGFsOiB0cnVlLFxyXG4gICAgZmlsdGVyQ29sdW1uOiB0cnVlLFxyXG4gICAgZHJhZ1VybDogXCJcIixcclxuICAgIGF1dG9QYWdpbmF0aW9uOiB0cnVlLFxyXG4gICAgYXV0b1NvcnQ6IHRydWUsXHJcbiAgICBhdXRvT25DaGFuZ2U6IHRydWUsXHJcbiAgfTtcclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7IHJlc2l6ZUNvbHVtbiwgLi4ucGFyYW1zIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKHJlc2l6ZUNvbHVtbikge1xyXG4gICAgICByZXR1cm4gPFJlc2l6ZVRhYmxlIHsuLi5wYXJhbXN9IC8+O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIDxOb3JtYWxUYWJsZSB7Li4ucGFyYW1zfSAvPjtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IHdpdGhaaExvY2FsZShOU0NUYWJsZSk7XHJcbiJdfQ==
|
|
646
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL3RhYmxlL2luZGV4LnRzeCJdLCJuYW1lcyI6WyJBcHBzdG9yZU91dGxpbmVkIiwiaXNFbXB0eU9iaiIsIlN0b3JlIiwiUGFnZVN0b3JlIiwidXRpbHMiLCJSZWFjdCIsIkRuZFByb3ZpZGVyIiwiQm9keVJvdyIsIkRuZENvbnRleHRUeXBlIiwiSUJvZHlSb3dQcm9wcyIsInRyZWVVdGlscyIsInN0eWxlcyIsIkJvZHlSb3dDb21wb25lbnQiLCJIVE1MNUJhY2tlbmQiLCJ3aXRoWmhMb2NhbGUiLCJOb0RhdGEiLCJSZXNpemFibGUiLCJSZXNpemVhYmxlVGl0bGUiLCJwcm9wcyIsIm9uUmVzaXplIiwid2lkdGgiLCJyZXN0UHJvcHMiLCJlbmFibGVVc2VyU2VsZWN0SGFjayIsIk5TQ1RhYmxlIiwiY3JlYXRlUmVmIiwiZGF0YVNvdXJjZSIsImNvbHVtbnMiLCJsb2FkaW5nIiwicGFnaW5hdGlvbiIsImFjdGl2ZUluZGV4Iiwic2VhcmNoVGV4dCIsImZpZWxkT3B0aW9uIiwic2VhcmNoQ29sb3IiLCJjb2xzIiwib25CZWZvcmVMb2FkIiwibG9hZCIsImhlYWRlciIsImNlbGwiLCJpbmRleCIsImUiLCJzaXplIiwic3RhdGUiLCJjb25zb2xlIiwibG9nIiwibmV4dENvbHVtbnMiLCJzZXRTdGF0ZSIsImRyYWdJbmRleCIsImhvdmVySW5kZXgiLCJkcmFnIiwidGFyZ2V0IiwiX3RoaXMiLCJkcmFnTm9kZSIsInJlY29yZCIsInRhcmdldE5vZGUiLCJtb3ZlQXJyYXkiLCJpZHMiLCJwYXJlbnROb2RlIiwiZ2V0Q2hpbGROb2RlSWRzIiwicGFyYW1zIiwiaWQiLCJwYXJlbnRJZCIsImF0dHJpYnV0ZSIsIm1vdmVSb3ciLCJzdG9yZSIsInJlbG9hZCIsImxpc3RlbmVycyIsImxpc3RlbmVyc1Byb3BzIiwicmVzdFN0b3JlIiwic3RvcmVQcm9wcyIsIm1vZGVsIiwiY29tcG9uZW50Iiwib3B0aW9ucyIsImNhbGxiYWNrIiwiZGF0YUNoYW5nZWQiLCJkYXRhIiwibW9kZWxEYXRhIiwicGFnaW5nIiwiZ2V0UGFnaW5hdGlvbiIsIm9uRXJyb3JMb2FkIiwiZXJyIiwicmVzcG9uc2UiLCJhdXRvTG9hZCIsIk9iamVjdCIsImFzc2lnbiIsInJlc2l6ZUNvbHVtbiIsInNldERhdGEiLCJwcmV2UHJvcHMiLCJwcmVTdGF0ZSIsInJlc2V0Q29sdW1uIiwibmV3Q29scyIsImNvbHNzIiwibWFwIiwiY29sIiwidGVtcCIsIm9uSGVhZGVyQ2VsbCIsImNvbHVtbiIsImhhbmRsZVJlc2l6ZSIsInB1c2giLCJmaWx0ZXJzIiwic29ydGVyIiwiZXh0cmEiLCJhdXRvT25DaGFuZ2UiLCJhdXRvU29ydCIsImF1dG9QYWdpbmF0aW9uIiwib25DaGFuZ2UiLCJoYW5kbGVQYWdpbmF0aW9uIiwiZ2V0UGFnaW5hdGlvbkJ5U3RvcmUiLCJwIiwiY3VycmVudEtleSIsImN1cnJlbnQiLCJwYWdlU2l6ZUtleSIsInBhZ2VTaXplIiwib3JkZXIiLCJhc2NzIiwic29ydEZpZWxkIiwiZmllbGQiLCJkZXNjcyIsIm9uQ2hhbmdlRm4iLCJnZXRNb2RlbCIsInZhbCIsImNoZWNrZWRWYWx1ZSIsImZpbHRlckNvbHVtbnMiLCJuZXdDb2wiLCJpbmNsdWRlcyIsImRhdGFJbmRleCIsImluaXRTaG93IiwiZGlzYWJsZUNvbHVtbnMiLCJjb2xMaXN0cyIsImRlZmF1bHRTaG93Q29scyIsImZpbHRlciIsImRlZmF1bHRIaWRlQ29scyIsImNvbnRlbnQiLCJmaWx0ZXJDb2x1bW4iLCJiaW5kIiwibGFiZWwiLCJ0aXRsZSIsInZhbHVlIiwiZWxsaXBzaXMiLCJyZW5kZXIiLCJzaG93VGl0bGUiLCJ0ZXh0IiwiSWNvbkFjdGlvbiIsInRoSWNvblJlZiIsIm1pbldpZHRoIiwibWF4V2lkdGgiLCJrZXkiLCJhbGlnbiIsIm9taXQiLCJyb3dLZXkiLCJjbGlja0NoYW5nZUNvbG9yIiwicG9zaXRpb24iLCJzaG93U2l6ZUNoYW5nZXIiLCJzaG93UXVpY2tKdW1wZXIiLCJzaG93VG90YWwiLCJ0b3RhbCIsImZyb20iLCJ0byIsIm9uUm93Rm4iLCJvblJvdyIsImN1c3RvbSIsIm9uQ2xpY2tGbiIsIm9uQ2xpY2siLCJldmVudCIsInJvd0NsYXNzTmFtZSIsImNsaWNrUm93U3R5bGUiLCJuZXdEYXRhU291cmNlIiwiZ2V0U2VhcmNoTWVudURhdGFzIiwidHJlZURhdGFzIiwiZXhwYW5kZWRSb3dLZXlzIiwib3BlbktleXMiLCJkcmFnYWJsZSIsImRyYWdhYmxlUHJvcHMiLCJjb21wb25lbnRzIiwicmVzaXplUHJvcHMiLCJEZWZhdWx0VGFibGUiLCJnZXRDb2x1bW5zIiwiZW1wdHlUZXh0IiwiQ29tcG9uZW50IiwiZHJhZ1VybCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsZ0JBQVQsUUFBaUMsbUJBQWpDO0FBQ0EsU0FBU0MsVUFBVCxRQUEyQixtQkFBM0I7QUFDQSxPQUFPQyxLQUFQLElBQWdCQyxTQUFoQixRQUE2QyxhQUE3QztBQUNBLFNBQVNDLEtBQVQsUUFBc0IsdUJBQXRCO0FBVUEsT0FBTyxLQUFLQyxLQUFaLE1BQXVCLE9BQXZCO0FBQ0EsU0FBU0MsV0FBVCxRQUE0QixXQUE1QjtBQUNBLE9BQU9DLE9BQVAsSUFBa0JDLGNBQWxCLEVBQWtDQyxhQUFsQyxRQUF1RCxtQkFBdkQ7QUFDQSxPQUFPQyxTQUFQLE1BQXNCLGNBQXRCO0FBQ0EsT0FBT0MsTUFBUCxNQUFtQixjQUFuQjtBQUNBLElBQVFDLGdCQUFSLEdBQTJDTCxPQUEzQyxDQUFRSyxnQkFBUjtBQUFBLElBQTBCQyxZQUExQixHQUEyQ04sT0FBM0MsQ0FBMEJNLFlBQTFCO0FBQ0EsT0FBT0MsWUFBUCxNQUF5Qix3QkFBekI7QUFDQSxTQUFTQyxNQUFULFFBQXVCLElBQXZCO0FBQ0EsU0FBU0MsU0FBVCxRQUEwQixpQkFBMUI7QUFD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QUFFcUssVUFBQUEsU0FBUyxlQUFFLG9CQUFDLE1BQUQ7QUFBYjtBQU5WLFNBT01ILFdBUE4sRUFRTTNKLEtBUk4sRUFTTXlKLGFBVE4sRUFERjtBQWNBLGFBQU9ELFFBQVEsS0FBSyxJQUFiLGdCQUNMLG9CQUFDLFdBQUQ7QUFBYSxRQUFBLE9BQU8sRUFBRTdKO0FBQXRCLFNBQXFDaUssWUFBckMsQ0FESyxHQUdMQSxZQUhGO0FBS0Q7Ozs7RUFwZG9CekssS0FBSyxDQUFDNEssUzs7Z0JBQXZCMUosUSxrQkFDa0I7QUFDcEJ1RyxFQUFBQSxjQUFjLEVBQUUsRUFESTtBQUVwQjRDLEVBQUFBLFFBQVEsRUFBRSxLQUZVO0FBR3BCakIsRUFBQUEsU0FBUyxFQUFFLElBSFM7QUFJcEJyQixFQUFBQSxZQUFZLEVBQUUsSUFKTTtBQUtwQjhDLEVBQUFBLE9BQU8sRUFBRSxFQUxXO0FBTXBCM0UsRUFBQUEsY0FBYyxFQUFFLElBTkk7QUFPcEJELEVBQUFBLFFBQVEsRUFBRSxJQVBVO0FBUXBCRCxFQUFBQSxZQUFZLEVBQUUsSUFSTTtBQVNwQmpCLEVBQUFBLFlBQVksRUFBRTtBQVRNLEM7O0FBc2R4QixlQUFldEUsWUFBWSxDQUFDUyxRQUFELENBQTNCIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQERlc2NyaXB0dGlvbjpcclxuICogQHZlcnNpb246XHJcbiAqIEBBdXRob3I6IHJ4emh1XHJcbiAqIEBEYXRlOiAyMDIxLTAzLTIzIDA4OjQ2OjIwXHJcbiAqIEBMYXN0RWRpdG9yczogcnh6aHVcclxuICogQExhc3RFZGl0VGltZTogMjAyMS0wMy0yMyAxMDozMDo0MlxyXG4gKi9cclxuaW1wb3J0IHsgQXBwc3RvcmVPdXRsaW5lZCB9IGZyb20gXCJAYW50LWRlc2lnbi9pY29uc1wiO1xyXG5pbXBvcnQgeyBpc0VtcHR5T2JqIH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCBTdG9yZSwgeyBQYWdlU3RvcmUsIFN0b3JlUHJvcHMgfSBmcm9tIFwiQGJqLW5zYy9tc25cIjtcclxuaW1wb3J0IHsgdXRpbHMgfSBmcm9tIFwiQGJqLW5zYy9tc24vbGliL3V0aWxzXCI7XHJcbmltcG9ydCB7XHJcbiAgQ2hlY2tib3gsXHJcbiAgQ2hlY2tib3hPcHRpb25UeXBlLFxyXG4gIFBvcG92ZXIsXHJcbiAgVGFibGUsXHJcbiAgVGFibGVQcm9wcyxcclxuICBUb29sdGlwLFxyXG59IGZyb20gXCJhbnRkXCI7XHJcbmltcG9ydCB7IENvbHVtblR5cGUsIFRhYmxlUGFnaW5hdGlvbkNvbmZpZyB9IGZyb20gXCJhbnRkL2xpYi90YWJsZVwiO1xyXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgRG5kUHJvdmlkZXIgfSBmcm9tIFwicmVhY3QtZG5kXCI7XHJcbmltcG9ydCBCb2R5Um93LCB7IERuZENvbnRleHRUeXBlLCBJQm9keVJvd1Byb3BzIH0gZnJvbSBcIi4uL2NvbW1vbi9Cb2R5Um93XCI7XHJcbmltcG9ydCB0cmVlVXRpbHMgZnJvbSBcIi4uL3RyZWVVdGlsc1wiO1xyXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL2luZGV4Lmxlc3NcIjtcclxuY29uc3QgeyBCb2R5Um93Q29tcG9uZW50LCBIVE1MNUJhY2tlbmQgfSA9IEJvZHlSb3c7XHJcbmltcG9ydCB3aXRoWmhMb2NhbGUgZnJvbSBcIi4uL2NvbW1vbi93aXRoWmhMb2NhbGVcIjtcclxuaW1wb3J0IHsgTm9EYXRhIH0gZnJvbSBcIi4uXCI7XHJcbmltcG9ydCB7IFJlc2l6YWJsZSB9IGZyb20gXCJyZWFjdC1yZXNpemFibGVcIjtcclxuaW1wb3J0IFwiLi9yZXNpemUubGVzc1wiO1xyXG5cclxuaW50ZXJmYWNlIElEcmFnUGFyYW1zIHtcclxuICBpZDogc3RyaW5nIHwgbnVtYmVyO1xyXG4gIGlkczogQXJyYXk8c3RyaW5nIHwgbnVtYmVyPjtcclxuICBwYXJlbnRJZDogc3RyaW5nIHwgbnVtYmVyO1xyXG59XHJcbi8vIGludGVyZmFjZSBTdG9yZVByb3BzIHt9XHJcblxyXG5leHBvcnQgdHlwZSBTdG9yZVR5cGUgPSBcIlBhZ2VTdG9yZVwiIHwgXCJUcmVlU3RvcmVcIiB8IFwiQmFzZVN0b3JlXCI7XHJcblxyXG5pbnRlcmZhY2UgTlNDVGFibGVQYWdpbmF0aW9uIGV4dGVuZHMgVGFibGVQYWdpbmF0aW9uQ29uZmlnIHtcclxuICB0b3RhbEtleT86IHN0cmluZztcclxuICBwYWdlU2l6ZUtleT86IHN0cmluZztcclxuICBjdXJyZW50S2V5Pzogc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgTlNDVGFibGVQcm9wcyBleHRlbmRzIFRhYmxlUHJvcHM8YW55PiB7XHJcbiAgc3RvcmU/OiBTdG9yZVByb3BzO1xyXG4gIHNob3dUb3RhbD86IGJvb2xlYW47IC8vIOaYr+WQpuaYvuekuuaAu+adoeaVsOS/oeaBr++8jOm7mOiupHRydWVcclxuICBkaXNhYmxlQ29sdW1ucz86IHN0cmluZ1tdOyAvLyDkuI3lj6/pmpDol4/lv4XpobvmmL7npLrnmoTliJdcclxuICBkcmFnYWJsZT86IGJvb2xlYW47IC8vIOaYr+WQpuWPr+aLluWKqCwg6buY6K6kZmFsc2VcclxuICBmaWx0ZXJDb2x1bW4/OiBib29sZWFuOyAvLyDmmK/lkKbmlK/mjIHov4fmu6TmmL7npLrooajmoLzliJcsIOm7mOiupHRydWVcclxuICBtb3ZlUm93PzogKHBhcmFtczogSURyYWdQYXJhbXMpID0+IHZvaWQ7IC8vIOaLluaLveWujOaIkOWQjueahOWbnuiwg1xyXG4gIGRyYWdVcmw/OiBzdHJpbmc7IC8vIOS/neWtmOaLluaLveaOkuW6j+eahOaOpeWPo1xyXG4gIHBhZ2luYXRpb24/OiBmYWxzZSB8IE5TQ1RhYmxlUGFnaW5hdGlvbjtcclxuICBhdXRvUGFnaW5hdGlvbj86IGJvb2xlYW47IC8vIOe7hOS7tuaYr+WQpuiHquWKqOWkhOeQhuWIhumhtVxyXG4gIGF1dG9Tb3J0PzogYm9vbGVhbjsgLy/nu4Tku7bmmK/lkKboh6rliqjlpITnkIbmjpLluo9cclxuICBhdXRvT25DaGFuZ2U/OiBib29sZWFuOyAvLyDnu4Tku7bmmK/lkKboh6rliqhvbkNoYW5nZSwgZmFsc2XliJnkuI3lgZrku7vkvZXlpITnkIblhajpg6jkuqTnu5nosIPnlKjmlrlcclxuICByZXNpemVDb2x1bW4/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBJTlNDVGFibGVQcm9wcyA9IHR5cGVvZiBOU0NUYWJsZS5kZWZhdWx0UHJvcHMgJiBOU0NUYWJsZVByb3BzO1xyXG5leHBvcnQgeyBEbmRDb250ZXh0VHlwZSwgSUJvZHlSb3dQcm9wcyB9O1xyXG5cclxuY29uc3QgUmVzaXplYWJsZVRpdGxlID0gKHByb3BzOiBhbnkpID0+IHtcclxuICBjb25zdCB7IG9uUmVzaXplLCB3aWR0aCwgLi4ucmVzdFByb3BzIH0gPSBwcm9wcztcclxuICByZXR1cm4gKFxyXG4gICAgPFJlc2l6YWJsZVxyXG4gICAgICB3aWR0aD17d2lkdGggfHwgMTUwfVxyXG4gICAgICBoZWlnaHQ9ezB9XHJcbiAgICAgIG9uUmVzaXplPXtvblJlc2l6ZX1cclxuICAgICAgZHJhZ2dhYmxlT3B0cz17eyBlbmFibGVVc2VyU2VsZWN0SGFjazogZmFsc2UgfX1cclxuICAgID5cclxuICAgICAgPHRoIHsuLi5yZXN0UHJvcHN9IC8+XHJcbiAgICA8L1Jlc2l6YWJsZT5cclxuICApO1xyXG59O1xyXG5jbGFzcyBOU0NUYWJsZSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxJTlNDVGFibGVQcm9wcz4ge1xyXG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XHJcbiAgICBkaXNhYmxlQ29sdW1uczogW10sXHJcbiAgICBkcmFnYWJsZTogZmFsc2UsXHJcbiAgICBzaG93VG90YWw6IHRydWUsXHJcbiAgICBmaWx0ZXJDb2x1bW46IHRydWUsXHJcbiAgICBkcmFnVXJsOiBcIlwiLFxyXG4gICAgYXV0b1BhZ2luYXRpb246IHRydWUsXHJcbiAgICBhdXRvU29ydDogdHJ1ZSxcclxuICAgIGF1dG9PbkNoYW5nZTogdHJ1ZSxcclxuICAgIHJlc2l6ZUNvbHVtbjogZmFsc2UsXHJcbiAgfTtcclxuXHJcbiAgc3RvcmUgPSB7fSBhcyBTdG9yZVByb3BzO1xyXG4gIHRoSWNvblJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxIVE1MRGl2RWxlbWVudD4oKTtcclxuXHJcbiAgc3RhdGUgPSB7XHJcbiAgICBkYXRhU291cmNlOiBbXSxcclxuICAgIGNvbHVtbnM6IFtdLFxyXG4gICAgbG9hZGluZzogZmFsc2UsXHJcbiAgICBwYWdpbmF0aW9uOiB7fSxcclxuICAgIGFjdGl2ZUluZGV4OiAtMSxcclxuICAgIC8v5pCc57Si5paH5pysXHJcbiAgICBzZWFyY2hUZXh0OiBudWxsLFxyXG4gICAgZmllbGRPcHRpb246IG51bGwsXHJcbiAgICBzZWFyY2hDb2xvcjogbnVsbCxcclxuICAgIGNvbHM6IFtdLFxyXG4gIH07XHJcblxyXG4gIGxpc3RlbmVycyA9IHtcclxuICAgIG9uQmVmb3JlTG9hZDogbnVsbCxcclxuICAgIGxvYWQ6IG51bGwsXHJcbiAgfTtcclxuXHJcbiAgY29tcG9uZW50cyA9IHtcclxuICAgIGhlYWRlcjoge1xyXG4gICAgICBjZWxsOiBSZXNpemVhYmxlVGl0bGUsXHJcbiAgICB9LFxyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgICBpZiAocHJvcHMuc3RvcmUgaW5zdGFuY2VvZiBTdG9yZSkge1xyXG4gICAgICB0aGlzLnN0b3JlID0gcHJvcHMuc3RvcmU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCB7IGxpc3RlbmVyczogbGlzdGVuZXJzUHJvcHMgPSB7fSwgLi4ucmVzdFN0b3JlIH0gPVxyXG4gICAgICAgIHByb3BzLnN0b3JlIHx8IHt9O1xyXG4gICAgICBjb25zdCBzdG9yZVByb3BzID0ge1xyXG4gICAgICAgIG1vZGVsOiBcIm1vZGVsXCIsXHJcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICAgIGxpc3RlbmVyczoge1xyXG4gICAgICAgICAgb25CZWZvcmVMb2FkOiAoc3RvcmUsIG9wdGlvbnMpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IHRydWUgfSk7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1Byb3BzLm9uQmVmb3JlTG9hZCwgdGhpcywgW3N0b3JlLCBvcHRpb25zXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZGF0YUNoYW5nZWQ6IChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBwYWdpbmcgPSAhKHRoaXMucHJvcHMucGFnaW5hdGlvbiA9PT0gZmFsc2UpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHBhZ2luZyAmJiAhdGhpcy5wcm9wcy5kYXRhU291cmNlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlOiBtb2RlbERhdGEsXHJcbiAgICAgICAgICAgICAgICBwYWdpbmF0aW9uOiBzdG9yZS5nZXRQYWdpbmF0aW9uKCksXHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGFjdGl2ZUluZGV4OiAtMSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgZGF0YVNvdXJjZTogbW9kZWxEYXRhLCBsb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUHJvcHMuZGF0YUNoYW5nZWQsIHRoaXMsIFtcclxuICAgICAgICAgICAgICBkYXRhLFxyXG4gICAgICAgICAgICAgIG1vZGVsRGF0YSxcclxuICAgICAgICAgICAgICBzdG9yZSxcclxuICAgICAgICAgICAgICBwYWdpbmcsXHJcbiAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGxvYWQ6IChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSA9PiB7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1Byb3BzLmxvYWQsIHRoaXMsIFtkYXRhLCBtb2RlbERhdGEsIHN0b3JlXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgb25FcnJvckxvYWQ6IChlcnIsIHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUHJvcHMub25FcnJvckxvYWQsIHRoaXMsIFtlcnIsIHJlc3BvbnNlXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZGF0YTogcmVzdFN0b3JlLmRhdGFcclxuICAgICAgICAgID8gcmVzdFN0b3JlLmRhdGFcclxuICAgICAgICAgIDogcHJvcHMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgPyBwcm9wcy5kYXRhU291cmNlXHJcbiAgICAgICAgICA6IG51bGwsXHJcbiAgICAgICAgLi4ucmVzdFN0b3JlLFxyXG4gICAgICAgIGF1dG9Mb2FkOiByZXN0U3RvcmUuYXV0b0xvYWQgPT09IGZhbHNlID8gZmFsc2UgOiB0cnVlLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgdGhpcy5zdG9yZSA9IG5ldyBQYWdlU3RvcmUoXHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbih7fSwgc3RvcmVQcm9wcywge1xyXG4gICAgICAgICAgcGFnaW5hdGlvbjogdGhpcy5wcm9wcy5wYWdpbmF0aW9uLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVSZXNpemUgPVxyXG4gICAgKGluZGV4OiBhbnkpID0+XHJcbiAgICAoZTogYW55LCB7IHNpemUgfTogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY29scyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgY29uc29sZS5sb2coXCJoYW5kbGVSZXNpemVcIiwgY29scyk7XHJcbiAgICAgIGNvbnN0IG5leHRDb2x1bW5zID0gWy4uLmNvbHNdO1xyXG4gICAgICBuZXh0Q29sdW1uc1tpbmRleF0gPSB7XHJcbiAgICAgICAgLi4ubmV4dENvbHVtbnNbaW5kZXhdLFxyXG4gICAgICAgIHdpZHRoOiBzaXplLndpZHRoLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICBjb2xzOiBuZXh0Q29sdW1ucyxcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG5cclxuICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgIGNvbnN0IHsgcmVzaXplQ29sdW1uIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKCFyZXNpemVDb2x1bW4pIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGNvbHVtbnM6IFsuLi50aGlzLnByb3BzLmNvbHVtbnNdIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGNvbHM6IFsuLi50aGlzLnByb3BzLmNvbHVtbnNdIH0pO1xyXG4gICAgICAvLyB0aGlzLnJlc2V0Q29sdW1uKCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBzdG9yZSA9IHRoaXMucHJvcHMuc3RvcmU7XHJcbiAgICBpZiAoc3RvcmUgJiYgc3RvcmUuZGF0YSkge1xyXG4gICAgICB0aGlzLnN0b3JlLnNldERhdGEoc3RvcmUuZGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzLCBwcmVTdGF0ZSkge1xyXG4gICAgY29uc3QgeyByZXNpemVDb2x1bW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIXJlc2l6ZUNvbHVtbikge1xyXG4gICAgICBpZiAodGhpcy5wcm9wcy5jb2x1bW5zICE9PSBwcmV2UHJvcHMuY29sdW1ucykge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBjb2x1bW5zOiB0aGlzLnByb3BzLmNvbHVtbnMgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChwcmVTdGF0ZS5jb2xzICE9PSB0aGlzLnN0YXRlLmNvbHMpIHtcclxuICAgICAgICB0aGlzLnJlc2V0Q29sdW1uKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0Q29sdW1uKCkge1xyXG4gICAgY29uc3QgeyBjb2xzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgbmV3Q29sczogYW55ID0gW107XHJcbiAgICBsZXQgY29sc3MgPSBjb2xzIHx8IFtdO1xyXG4gICAgY29sc3MubWFwKChjb2w6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBsZXQgdGVtcCA9IHtcclxuICAgICAgICAuLi5jb2wsXHJcbiAgICAgICAgb25IZWFkZXJDZWxsOiAoY29sdW1uOiB7IHdpZHRoOiBhbnkgfSkgPT4gKHtcclxuICAgICAgICAgIHdpZHRoOiBjb2x1bW4ud2lkdGgsXHJcbiAgICAgICAgICBvblJlc2l6ZTogdGhpcy5oYW5kbGVSZXNpemUoaW5kZXgpLFxyXG4gICAgICAgIH0pLFxyXG4gICAgICB9O1xyXG4gICAgICBuZXdDb2xzLnB1c2godGVtcCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBjb2x1bW5zOiBuZXdDb2xzLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmuIXpmaTpgInkuK3popzoibJcclxuICAgKi9cclxuICBjbGVhclNlbGVjdENvbG9yKCkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGFjdGl2ZUluZGV4OiAtMSB9KTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGFnaW5hdGlvbkJ5U3RvcmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5nZXRQYWdpbmF0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZShwYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhKSB7XHJcbiAgICBjb25zdCB7IGF1dG9PbkNoYW5nZSwgYXV0b1NvcnQsIGF1dG9QYWdpbmF0aW9uLCBvbkNoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmIChhdXRvT25DaGFuZ2UgPT09IGZhbHNlKSB7XHJcbiAgICAgIG9uQ2hhbmdlICYmIG9uQ2hhbmdlKHBhZ2luYXRpb24sIGZpbHRlcnMsIHNvcnRlciwgZXh0cmEpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaGFuZGxlUGFnaW5hdGlvbiA9ICgpID0+IHtcclxuICAgICAgbGV0IHBhcmFtcyA9IHt9IGFzIHtcclxuICAgICAgICBzaXplPzogc3RyaW5nO1xyXG4gICAgICAgIHBhZ2VTaXplPzogc3RyaW5nO1xyXG4gICAgICAgIGFzY3M/OiBzdHJpbmc7XHJcbiAgICAgICAgZGVzY3M/OiBzdHJpbmc7XHJcbiAgICAgICAgW3Byb3BOYW1lOiBzdHJpbmddOiBzdHJpbmc7XHJcbiAgICAgIH07XHJcblxyXG4gICAgICBjb25zdCBwYWdpbmcgPSB0aGlzLmdldFBhZ2luYXRpb25CeVN0b3JlKCkgfHwge307XHJcblxyXG4gICAgICBpZiAoIWlzRW1wdHlPYmoocGFnaW5hdGlvbikpIHtcclxuICAgICAgICBjb25zdCBwID0ge1xyXG4gICAgICAgICAgW3BhZ2luZy5jdXJyZW50S2V5IHx8IFwiY3VycmVudFwiXTogcGFnaW5hdGlvbi5jdXJyZW50LFxyXG4gICAgICAgICAgW3BhZ2luZy5wYWdlU2l6ZUtleSB8fCBcInNpemVcIl06IHBhZ2luYXRpb24ucGFnZVNpemUsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBPYmplY3QuYXNzaWduKHBhcmFtcywgcCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChhdXRvU29ydCA9PT0gdHJ1ZSAmJiAhaXNFbXB0eU9iaihzb3J0ZXIpKSB7XHJcbiAgICAgICAgaWYgKHNvcnRlci5vcmRlciA9PSBcImFzY2VuZFwiKSB7XHJcbiAgICAgICAgICBwYXJhbXMuYXNjcyA9XHJcbiAgICAgICAgICAgIHNvcnRlci5jb2x1bW4uc29ydEZpZWxkIHx8IHNvcnRlci5jb2x1bW4uZmllbGQgfHwgc29ydGVyLmZpZWxkO1xyXG4gICAgICAgICAgcGFyYW1zLmRlc2NzID0gXCJcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHNvcnRlci5vcmRlciA9PSBcImRlc2NlbmRcIikge1xyXG4gICAgICAgICAgcGFyYW1zLmRlc2NzID1cclxuICAgICAgICAgICAgc29ydGVyLmNvbHVtbi5zb3J0RmllbGQgfHwgc29ydGVyLmNvbHVtbi5maWVsZCB8fCBzb3J0ZXIuZmllbGQ7XHJcbiAgICAgICAgICBwYXJhbXMuYXNjcyA9IFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc3RvcmUucmVsb2FkKHsgcGFyYW1zIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBvbkNoYW5nZUZuID0gdGhpcy5wcm9wcy5vbkNoYW5nZTtcclxuICAgIC8vIOeUqOaIt+S8oOS6hm9uQ2hhbmdl5L+d55WZ55So5oi36Ieq5Li75aSE55CG6KGo5qC85Y+Y5YyW55qE5p2D5YqbXHJcbiAgICBpZiAob25DaGFuZ2VGbikge1xyXG4gICAgICB1dGlscy5jYWxsYmFjayhvbkNoYW5nZUZuLCB0aGlzLCBbcGFnaW5hdGlvbiwgZmlsdGVycywgc29ydGVyLCBleHRyYV0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucHJvcHMuYXV0b1BhZ2luYXRpb24pIHtcclxuICAgICAgaGFuZGxlUGFnaW5hdGlvbigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0U3RvcmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOiOt+WPluaVsOaNruaooeWei+WvueixoVxyXG4gICAqL1xyXG4gIGdldE1vZGVsKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuZ2V0TW9kZWwoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOiPnOWNleaQnOe0oui/h+a7pOaYvuekulxyXG4gICAqIEBwYXJhbSB7U3RyaW5nfSB2YWxcclxuICAgKi9cclxuICBoYW5kbGVTZWFyY2godmFsLCBmaWVsZE9wdGlvbiwgc2VhcmNoQ29sb3IpIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWFyY2hUZXh0OiB2YWwsXHJcbiAgICAgIGZpZWxkT3B0aW9uOiBmaWVsZE9wdGlvbixcclxuICAgICAgc2VhcmNoQ29sb3I6IHNlYXJjaENvbG9yLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmqKHlnZfliJfooajnp7vliqjmjpLluo9cclxuICAgKi9cclxuICBtb3ZlUm93ID0gKGRyYWdJbmRleCwgaG92ZXJJbmRleCwgZHJhZywgdGFyZ2V0KSA9PiB7XHJcbiAgICBjb25zdCBfdGhpcyA9IHRoaXM7XHJcbiAgICBsZXQgZHJhZ05vZGUgPSBkcmFnLnJlY29yZDtcclxuICAgIGxldCB0YXJnZXROb2RlID0gdGFyZ2V0LnJlY29yZDtcclxuICAgIGRyYWdOb2RlLm1vdmVBcnJheShkcmFnTm9kZSwgdGFyZ2V0Tm9kZSk7XHJcbiAgICBsZXQgaWRzID0gZHJhZ05vZGUucGFyZW50Tm9kZS5nZXRDaGlsZE5vZGVJZHMoKTtcclxuICAgIGxldCBwYXJhbXMgPSB7XHJcbiAgICAgIGlkOiBkcmFnTm9kZS5pZCxcclxuICAgICAgcGFyZW50SWQ6IGRyYWdOb2RlLmF0dHJpYnV0ZS5wYXJlbnRJZCxcclxuICAgICAgaWRzOiBpZHMsXHJcbiAgICB9O1xyXG5cclxuICAgIGlmICh0aGlzLnByb3BzLm1vdmVSb3cpIHtcclxuICAgICAgdGhpcy5wcm9wcy5tb3ZlUm93KHBhcmFtcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnN0b3JlLnJlbG9hZCgpO1xyXG4gICAgfVxyXG4gICAgLy8gcmVxdWVzdChcImh0dHA6Ly9kZW1vLmphdmFzdm4uY29tL2FwaS9hZG1pbi9tZW51cy9kcmFnXCIsIHtcclxuICAgIC8vICAgbWV0aG9kOiBcIlBBVENIXCIsXHJcbiAgICAvLyAgIGRhdGE6IHBhcmFtcyxcclxuICAgIC8vICAgY2FsbGJhY2s6IGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAvLyAgICAgdGhpcy5zdG9yZS5yZWxvYWQoKTtcclxuICAgIC8vICAgfSxcclxuICAgIC8vIH0pO1xyXG4gIH07XHJcblxyXG4gIGZpbHRlckNvbHVtbihjaGVja2VkVmFsdWUpIHtcclxuICAgIGNvbnN0IGZpbHRlckNvbHVtbnMgPSB0aGlzLnByb3BzLmNvbHVtbnMubWFwKChjb2w6IENvbHVtblR5cGU8e30+KSA9PiB7XHJcbiAgICAgIGNvbnN0IG5ld0NvbCA9IHsgLi4uY29sIH0gYXMgQ29sdW1uVHlwZTx7fT4gJiB7IGluaXRTaG93OiBib29sZWFuIH07XHJcbiAgICAgIGlmIChjaGVja2VkVmFsdWUuaW5jbHVkZXMoY29sLmRhdGFJbmRleCkpIHtcclxuICAgICAgICBuZXdDb2wuaW5pdFNob3cgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5ld0NvbC5pbml0U2hvdyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBuZXdDb2w7XHJcbiAgICB9KTtcclxuICAgIC8vIHRoaXMuc2V0U3RhdGUoeyBjb2x1bW5zOiBmaWx0ZXJDb2x1bW5zIH0pO1xyXG4gICAgY29uc3QgeyByZXNpemVDb2x1bW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIXJlc2l6ZUNvbHVtbikge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHsgY29sdW1uczogZmlsdGVyQ29sdW1ucyB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBjb2xzOiBmaWx0ZXJDb2x1bW5zIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Q29sdW1ucygpIHtcclxuICAgIGNvbnN0IHsgY29sdW1ucyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgZGlzYWJsZUNvbHVtbnMsIGNvbHVtbnM6IGNvbExpc3RzIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgZGVmYXVsdFNob3dDb2xzID0gY29sdW1ucy5maWx0ZXIoKGNvbHMpID0+IGNvbHMuaW5pdFNob3cgIT09IGZhbHNlKTtcclxuICAgIGNvbnN0IGRlZmF1bHRIaWRlQ29scyA9IGNvbHVtbnMuZmlsdGVyKChjb2xzKSA9PiBjb2xzLmluaXRTaG93ID09PSBmYWxzZSk7XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IChcclxuICAgICAgPENoZWNrYm94Lkdyb3VwXHJcbiAgICAgICAgb25DaGFuZ2U9e3RoaXMuZmlsdGVyQ29sdW1uLmJpbmQodGhpcyl9XHJcbiAgICAgICAgb3B0aW9ucz17Y29sTGlzdHMubWFwKFxyXG4gICAgICAgICAgKGNvbDogQ29sdW1uVHlwZTx7fT4pID0+XHJcbiAgICAgICAgICAgICh7XHJcbiAgICAgICAgICAgICAgbGFiZWw6IGNvbC50aXRsZSxcclxuICAgICAgICAgICAgICB2YWx1ZTogY29sLmRhdGFJbmRleCxcclxuICAgICAgICAgICAgfSBhcyBDaGVja2JveE9wdGlvblR5cGUpXHJcbiAgICAgICAgKX1cclxuICAgICAgICBkZWZhdWx0VmFsdWU9e2RlZmF1bHRTaG93Q29scy5tYXAoKGNvbCkgPT4gY29sLmRhdGFJbmRleCl9XHJcbiAgICAgID48L0NoZWNrYm94Lkdyb3VwPlxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBjb2xzID0gZGVmYXVsdFNob3dDb2xzLm1hcCgoY29sKSA9PiB7XHJcbiAgICAgIGlmIChjb2wuZWxsaXBzaXMgJiYgIWNvbC5yZW5kZXIpIHtcclxuICAgICAgICBjb2wuZWxsaXBzaXMgPSB7XHJcbiAgICAgICAgICBzaG93VGl0bGU6IGZhbHNlLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29sLnJlbmRlciA9ICh0ZXh0KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8VG9vbHRpcCBwbGFjZW1lbnQ9XCJ0b3BMZWZ0XCIgdGl0bGU9e3RleHR9PlxyXG4gICAgICAgICAgICAgIHt0ZXh0fVxyXG4gICAgICAgICAgICA8L1Rvb2x0aXA+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGNvbDtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IEljb25BY3Rpb246IENvbHVtblR5cGU8e30+ID0ge1xyXG4gICAgICB0aXRsZTogKFxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbXCJ0aC1pY29uXCJdfSByZWY9e3RoaXMudGhJY29uUmVmfT5cclxuICAgICAgICAgIDxQb3BvdmVyXHJcbiAgICAgICAgICAgIHRpdGxlPVwi6YCJ5oup5pi+56S655qE5YiXXCJcclxuICAgICAgICAgICAgY29udGVudD17Y29udGVudH1cclxuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tUmlnaHRcIlxyXG4gICAgICAgICAgICB0cmlnZ2VyPVwiY2xpY2tcIlxyXG4gICAgICAgICAgICBvdmVybGF5U3R5bGU9e3sgbWluV2lkdGg6IDQxMCwgbWF4V2lkdGg6IDQ1MCB9fVxyXG4gICAgICAgICAgICBnZXRQb3B1cENvbnRhaW5lcj17KCkgPT4gdGhpcy50aEljb25SZWYuY3VycmVudH1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPEFwcHN0b3JlT3V0bGluZWQgc2l6ZT17MjR9IGNsYXNzTmFtZT17c3R5bGVzW1wiYXBwLXN0b3JlLWljb25cIl19IC8+XHJcbiAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICksXHJcbiAgICAgIGRhdGFJbmRleDogXCJpY29uLW1lbnVcIixcclxuICAgICAga2V5OiBcImljb24tbWVudVwiLFxyXG4gICAgICB3aWR0aDogNTAsXHJcbiAgICAgIGFsaWduOiBcImNlbnRlclwiLFxyXG4gICAgICAvLyBmaXhlZDogXCJyaWdodFwiLFxyXG4gICAgfTtcclxuICAgIGlmICh0aGlzLnByb3BzLmZpbHRlckNvbHVtbikge1xyXG4gICAgICBjb2xzLnB1c2goSWNvbkFjdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNvbHM7XHJcbiAgfVxyXG5cclxuICByZW5kZXIoKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzLFxyXG4gICAgICB7XHJcbiAgICAgICAgbG9hZGluZyxcclxuICAgICAgICBkYXRhU291cmNlLFxyXG4gICAgICAgIHBhZ2luYXRpb24gPSB7fSxcclxuICAgICAgICBzZWFyY2hUZXh0LFxyXG4gICAgICAgIGZpZWxkT3B0aW9uLFxyXG4gICAgICAgIHNlYXJjaENvbG9yLFxyXG4gICAgICB9ID0gdGhpcy5zdGF0ZSxcclxuICAgICAgcHJvcHMgPSB1dGlscy5vbWl0KFxyXG4gICAgICAgIHRoaXMucHJvcHMsXHJcbiAgICAgICAgW1wic3RvcmVcIiwgXCJvbkNoYW5nZVwiLCBcImNvbHVtbnNcIiwgXCJyZXNldENvbHVtblwiXSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICByb3dLZXk6IFwiaWRcIixcclxuICAgICAgICAgIGNsaWNrQ2hhbmdlQ29sb3I6IGZhbHNlLFxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuXHJcbiAgICBpZiAocHJvcHMucGFnaW5hdGlvbiAhPT0gZmFsc2UpIHtcclxuICAgICAgcHJvcHMucGFnaW5hdGlvbiA9IHtcclxuICAgICAgICBwb3NpdGlvbjogW1wiYm90dG9tUmlnaHRcIl0sXHJcbiAgICAgICAgc2hvd1NpemVDaGFuZ2VyOiB0cnVlLFxyXG4gICAgICAgIHNob3dRdWlja0p1bXBlcjogdHJ1ZSxcclxuICAgICAgICAuLi5wcm9wcy5wYWdpbmF0aW9uLFxyXG4gICAgICAgIC4uLnBhZ2luYXRpb24sXHJcbiAgICAgIH07XHJcbiAgICAgIGlmIChwcm9wcy5zaG93VG90YWwgPT0gdHJ1ZSkge1xyXG4gICAgICAgIHByb3BzLnBhZ2luYXRpb24uc2hvd1RvdGFsID0gZnVuY3Rpb24gKHRvdGFsLCBbZnJvbSwgdG9dKSB7XHJcbiAgICAgICAgICAvLyByZXR1cm4gXCLmmL7npLogXCIgKyBmcm9tICsgXCIgLSBcIiArIHRvICsgXCLmnaHvvIzlhbEgXCIgKyB0b3RhbCArIFwiIOadoVwiO1xyXG4gICAgICAgICAgcmV0dXJuIFwi5YWxIFwiICsgdG90YWwgKyBcIiDmnaFcIjtcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJvcHMub25DaGFuZ2UgPSBmdW5jdGlvbiAocGFnaW5hdGlvbiwgZmlsdGVycywgc29ydGVyLCBleHRyYSkge1xyXG4gICAgICBfdGhpcy5vbkNoYW5nZShwYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhKTtcclxuICAgIH07XHJcbiAgICBpZiAocHJvcHMuY2xpY2tDaGFuZ2VDb2xvcikge1xyXG4gICAgICBjb25zdCBvblJvd0ZuID0gcHJvcHMub25Sb3c7XHJcbiAgICAgIHByb3BzLm9uUm93ID0gZnVuY3Rpb24gKHJlY29yZCwgaW5kZXgpIHtcclxuICAgICAgICB2YXIgY3VzdG9tID0gb25Sb3dGbiA/IG9uUm93Rm4ocmVjb3JkLCBpbmRleCkgOiB7fTtcclxuICAgICAgICBjb25zdCBvbkNsaWNrRm4gPSBjdXN0b20ub25DbGljaztcclxuICAgICAgICBjdXN0b20ub25DbGljayA9IChldmVudCkgPT4ge1xyXG4gICAgICAgICAgX3RoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICBhY3RpdmVJbmRleDogaW5kZXgsIC8v6I635Y+W54K55Ye76KGM55qE57Si5byVXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKG9uQ2xpY2tGbiwgX3RoaXMsIFtldmVudF0pO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIGN1c3RvbTtcclxuICAgICAgfTtcclxuICAgICAgcHJvcHMucm93Q2xhc3NOYW1lID0gZnVuY3Rpb24gKHJlY29yZCwgaW5kZXgpIHtcclxuICAgICAgICByZXR1cm4gaW5kZXggPT09IF90aGlzLnN0YXRlLmFjdGl2ZUluZGV4XHJcbiAgICAgICAgICA/IGAke3N0eWxlcy5jbGlja1Jvd1N0eWxlfWBcclxuICAgICAgICAgIDogXCJcIjtcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGxldCBuZXdEYXRhU291cmNlID0gW107XHJcbiAgICBpZiAoc2VhcmNoVGV4dCkge1xyXG4gICAgICBjb25zdCBkYXRhID0gdHJlZVV0aWxzLmdldFNlYXJjaE1lbnVEYXRhcyhcclxuICAgICAgICB0aGlzLFxyXG4gICAgICAgIHNlYXJjaFRleHQsXHJcbiAgICAgICAgZmllbGRPcHRpb24sXHJcbiAgICAgICAgc2VhcmNoQ29sb3JcclxuICAgICAgKTtcclxuICAgICAgbmV3RGF0YVNvdXJjZSA9IGRhdGEudHJlZURhdGFzO1xyXG4gICAgICBwcm9wcy5leHBhbmRlZFJvd0tleXMgPSBkYXRhLm9wZW5LZXlzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbmV3RGF0YVNvdXJjZSA9IGRhdGFTb3VyY2U7XHJcbiAgICB9XHJcbiAgICBwcm9wcy5zdG9yZSA9IHByb3BzLnN0b3JlIHx8IHt9O1xyXG4gICAgcHJvcHMuc3RvcmUuYXV0b0xvYWQgPSBwcm9wcy5zdG9yZS5hdXRvTG9hZCA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWU7XHJcbiAgICBjb25zdCB7IGRyYWdhYmxlIH0gPSBfdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGRyYWdhYmxlUHJvcHMgPVxyXG4gICAgICBkcmFnYWJsZSA9PT0gdHJ1ZVxyXG4gICAgICAgID8ge1xyXG4gICAgICAgICAgICBjb21wb25lbnRzOiBCb2R5Um93Q29tcG9uZW50LFxyXG4gICAgICAgICAgICBvblJvdzogKHJlY29yZCwgaW5kZXgpID0+ICh7XHJcbiAgICAgICAgICAgICAgaW5kZXgsXHJcbiAgICAgICAgICAgICAgcmVjb3JkLFxyXG4gICAgICAgICAgICAgIG1vdmVSb3c6IHRoaXMubW92ZVJvdyxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgOiB7fTtcclxuICAgIGxldCB7IHJlc2l6ZUNvbHVtbiB9ID0gdGhpcy5wcm9wcztcclxuXHJcbiAgICBjb25zdCByZXNpemVQcm9wcyA9XHJcbiAgICAgIHJlc2l6ZUNvbHVtbiA9PT0gdHJ1ZSA/IHsgY29tcG9uZW50czogdGhpcy5jb21wb25lbnRzIH0gOiBudWxsO1xyXG5cclxuICAgIGNvbnN0IERlZmF1bHRUYWJsZSA9IChcclxuICAgICAgPFRhYmxlXHJcbiAgICAgICAgY2hpbGRyZW5Db2x1bW5OYW1lPVwiY2hpbGROb2Rlc1wiXHJcbiAgICAgICAgZGF0YVNvdXJjZT17bmV3RGF0YVNvdXJjZX1cclxuICAgICAgICBjb2x1bW5zPXt0aGlzLmdldENvbHVtbnMoKX1cclxuICAgICAgICBsb2FkaW5nPXtsb2FkaW5nfVxyXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzW1wibnNjLXRhYmxlXCJdfVxyXG4gICAgICAgIGxvY2FsZT17eyBlbXB0eVRleHQ6IDxOb0RhdGEgLz4gfX1cclxuICAgICAgICB7Li4ucmVzaXplUHJvcHN9XHJcbiAgICAgICAgey4uLnByb3BzfVxyXG4gICAgICAgIHsuLi5kcmFnYWJsZVByb3BzfVxyXG4gICAgICAvPlxyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gZHJhZ2FibGUgPT09IHRydWUgPyAoXHJcbiAgICAgIDxEbmRQcm92aWRlciBiYWNrZW5kPXtIVE1MNUJhY2tlbmR9PntEZWZhdWx0VGFibGV9PC9EbmRQcm92aWRlcj5cclxuICAgICkgOiAoXHJcbiAgICAgIERlZmF1bHRUYWJsZVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IHdpdGhaaExvY2FsZShOU0NUYWJsZSk7XHJcbiJdfQ==
|