nsc-react-component 2.6.7 → 2.7.0

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.
@@ -5,6 +5,22 @@ import _Upload from "antd/es/upload";
5
5
 
6
6
  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); }
7
7
 
8
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
9
+
10
+ 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."); }
11
+
12
+ 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); }
13
+
14
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
15
+
16
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
17
+
18
+ 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; }
19
+
20
+ 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; }
21
+
22
+ 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; }
23
+
8
24
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
9
25
 
10
26
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
@@ -35,7 +51,15 @@ import * as React from "react";
35
51
  import file from "nsc-file";
36
52
  import message from "../message";
37
53
  import withZhLocale from "../common/withZhLocale";
38
- var upload = file.upload;
54
+ import omit from "omit.js";
55
+ import { getLess } from "../../utils";
56
+ import styles from "./index.less";
57
+ import cls from "classnames";
58
+ import FileIcon from "../common/FileIcon";
59
+ import { DeleteOutlined, DownloadOutlined, EyeOutlined } from "@ant-design/icons";
60
+ var upload = file.upload,
61
+ download = file.download,
62
+ previewDocument = file.previewDocument;
39
63
 
40
64
  var NscUpload = /*#__PURE__*/function (_React$PureComponent) {
41
65
  _inherits(NscUpload, _React$PureComponent);
@@ -54,12 +78,13 @@ var NscUpload = /*#__PURE__*/function (_React$PureComponent) {
54
78
  _this = _super.call.apply(_super, [this].concat(args));
55
79
 
56
80
  _defineProperty(_assertThisInitialized(_this), "state", {
57
- fileList: []
81
+ fileList: [],
82
+ viewId: ""
58
83
  });
59
84
 
60
85
  _defineProperty(_assertThisInitialized(_this), "customRequest", /*#__PURE__*/function () {
61
86
  var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(options) {
62
- var file, _this$props, onComplete, onProcess, sliceSize, maxSize, size, onProgress, res, fileId;
87
+ var file, _this$props, onComplete, onProcess, sliceSize, onProgress, res, fileId;
63
88
 
64
89
  return regeneratorRuntime.wrap(function _callee$(_context) {
65
90
  while (1) {
@@ -67,49 +92,32 @@ var NscUpload = /*#__PURE__*/function (_React$PureComponent) {
67
92
  case 0:
68
93
  file = options.file;
69
94
  _this$props = _this.props, onComplete = _this$props.onComplete, onProcess = _this$props.onProcess, sliceSize = _this$props.sliceSize;
70
- maxSize = _this.props.maxSize;
71
-
72
- if (!maxSize) {
73
- _context.next = 10;
74
- break;
75
- }
76
-
77
- size = maxSize * 1024 * 1024;
78
-
79
- if (!(size < file.size)) {
80
- _context.next = 10;
81
- break;
82
- }
83
-
84
- message.error("".concat(file.name, "\u6587\u4EF6\u5927\u5C0F\u8D85\u8FC7").concat(maxSize, "M\uFF0C\u8BF7\u91CD\u65B0\u4E0A\u4F20\uFF01"));
85
- onComplete && onComplete({
86
- file: options.file,
87
- fileId: "",
88
- status: "error"
89
- });
90
- options.onError();
91
- return _context.abrupt("return", false);
92
95
 
93
- case 10:
94
96
  onProgress = function onProgress(totalProgress) {
95
97
  options.onProgress({
96
98
  percent: totalProgress
97
99
  }, file);
100
+
101
+ _this.onProcess({
102
+ percent: totalProgress,
103
+ file: file
104
+ });
105
+
98
106
  onProcess && onProcess({
99
107
  percent: totalProgress,
100
108
  file: file
101
109
  });
102
110
  };
103
111
 
104
- _context.prev = 11;
105
- _context.next = 14;
112
+ _context.prev = 3;
113
+ _context.next = 6;
106
114
  return upload({
107
115
  file: file,
108
116
  onProgress: onProgress,
109
117
  partSize: sliceSize
110
118
  });
111
119
 
112
- case 14:
120
+ case 6:
113
121
  res = _context.sent;
114
122
  fileId = null;
115
123
 
@@ -120,17 +128,30 @@ var NscUpload = /*#__PURE__*/function (_React$PureComponent) {
120
128
  options.onError();
121
129
  }
122
130
 
131
+ _this.onComplete({
132
+ file: options.file,
133
+ fileId: fileId,
134
+ status: res.code == 200 ? "success" : "error"
135
+ });
136
+
123
137
  onComplete && onComplete({
124
138
  file: options.file,
125
139
  fileId: fileId,
126
140
  status: res.code == 200 ? "success" : "error"
127
141
  });
128
- _context.next = 24;
142
+ _context.next = 18;
129
143
  break;
130
144
 
131
- case 20:
132
- _context.prev = 20;
133
- _context.t0 = _context["catch"](11);
145
+ case 13:
146
+ _context.prev = 13;
147
+ _context.t0 = _context["catch"](3);
148
+
149
+ _this.onComplete({
150
+ file: options.file,
151
+ fileId: "",
152
+ status: "error"
153
+ });
154
+
134
155
  onComplete && onComplete({
135
156
  file: options.file,
136
157
  fileId: "",
@@ -138,12 +159,12 @@ var NscUpload = /*#__PURE__*/function (_React$PureComponent) {
138
159
  });
139
160
  options.onError();
140
161
 
141
- case 24:
162
+ case 18:
142
163
  case "end":
143
164
  return _context.stop();
144
165
  }
145
166
  }
146
- }, _callee, null, [[11, 20]]);
167
+ }, _callee, null, [[3, 13]]);
147
168
  }));
148
169
 
149
170
  return function (_x) {
@@ -155,13 +176,275 @@ var NscUpload = /*#__PURE__*/function (_React$PureComponent) {
155
176
  }
156
177
 
157
178
  _createClass(NscUpload, [{
179
+ key: "componentDidMount",
180
+ value: function componentDidMount() {
181
+ if (this.props.fileList) {
182
+ this.convertFileList();
183
+ }
184
+ }
185
+ }, {
186
+ key: "convertFileList",
187
+ value: function convertFileList(list) {
188
+ var fileList = this.props.fileList;
189
+ var newFileList = [];
190
+ var oldList = list ? list : fileList;
191
+ oldList.map(function (item) {
192
+ var temp = _objectSpread({}, item);
193
+
194
+ if (!item.name) {
195
+ temp.name = item.fileName;
196
+ }
197
+
198
+ newFileList.push(temp);
199
+ });
200
+ this.setState({
201
+ fileList: newFileList
202
+ });
203
+ }
204
+ }, {
205
+ key: "componentDidUpdate",
206
+ value: function componentDidUpdate(preProps, preState) {
207
+ if (this.props.fileList) {
208
+ if (JSON.stringify(preState.fileList) !== JSON.stringify(this.props.fileList)) {
209
+ this.convertFileList();
210
+ }
211
+ }
212
+ }
213
+ }, {
214
+ key: "getFileList",
215
+ value: function getFileList() {
216
+ return this.state.fileList;
217
+ }
218
+ }, {
219
+ key: "setFileList",
220
+ value: function setFileList(fileList) {
221
+ this.convertFileList(fileList);
222
+ }
223
+ }, {
224
+ key: "beforeUpload",
225
+ value: function beforeUpload(file) {
226
+ var _this$props2 = this.props,
227
+ _this$props2$maxSize = _this$props2.maxSize,
228
+ maxSize = _this$props2$maxSize === void 0 ? 100 : _this$props2$maxSize,
229
+ allowFileSuffix = _this$props2.allowFileSuffix;
230
+
231
+ if (allowFileSuffix && !this.checkFileType(file)) {
232
+ message.error("".concat(file.name, "\u6587\u4EF6\u7C7B\u578B\u4E0D\u5141\u8BB8\u4E0A\u4F20\uFF0C\u8BF7\u4E0A\u4F20\u540E\u7F00\u4E3A").concat(allowFileSuffix, "\u7684\u7C7B\u578B\u6587\u4EF6\uFF01"));
233
+ return false;
234
+ }
235
+
236
+ if (maxSize !== false) {
237
+ if (maxSize === true) {
238
+ maxSize = 100;
239
+ }
240
+
241
+ var size = maxSize * 1024 * 1024;
242
+
243
+ if (size < file.size) {
244
+ message.error("".concat(file.name, "\u6587\u4EF6\u5927\u5C0F\u8D85\u8FC7").concat(maxSize, "M\uFF0C\u8BF7\u91CD\u65B0\u4E0A\u4F20\uFF01"));
245
+ return false;
246
+ }
247
+ }
248
+
249
+ var fileList = this.state.fileList;
250
+ var onListChange = this.props.onListChange;
251
+ var newList = [].concat(_toConsumableArray(fileList), [{
252
+ fileName: file.name,
253
+ percent: 0,
254
+ status: "uploading",
255
+ uid: file.uid,
256
+ name: file.name
257
+ }]);
258
+ this.setState({
259
+ fileList: newList
260
+ });
261
+ onListChange && onListChange(newList);
262
+ }
263
+ }, {
264
+ key: "checkFileType",
265
+ value: function checkFileType(file) {
266
+ var allowFileSuffix = this.props.allowFileSuffix;
267
+ var names = file.name.split(".");
268
+ var suffix = names[names.length - 1];
269
+
270
+ if (allowFileSuffix.indexOf(suffix) > -1) {
271
+ return true;
272
+ }
273
+
274
+ return false;
275
+ }
276
+ }, {
277
+ key: "onProcess",
278
+ value: function onProcess(_ref2) {
279
+ var percent = _ref2.percent,
280
+ file = _ref2.file;
281
+ var fileList = this.state.fileList;
282
+ var onListChange = this.props.onListChange;
283
+ var newList = [];
284
+ fileList.map(function (item) {
285
+ var newFile = _objectSpread({}, item);
286
+
287
+ if (file.uid == item.uid) {
288
+ newFile.percent = percent;
289
+ }
290
+
291
+ newList.push(newFile);
292
+ });
293
+ this.setState({
294
+ fileList: newList
295
+ });
296
+ onListChange && onListChange(newList);
297
+ }
298
+ }, {
299
+ key: "onComplete",
300
+ value: function onComplete(file) {
301
+ var fileList = this.state.fileList;
302
+ var onListChange = this.props.onListChange;
303
+ var newList = [];
304
+ fileList.map(function (item) {
305
+ var newFile = _objectSpread({}, item);
306
+
307
+ if (file.file.uid == item.uid) {
308
+ newFile.status = file.status == "success" ? "done" : file.status;
309
+ newFile.fileId = file.fileId;
310
+ }
311
+
312
+ newList.push(newFile);
313
+ });
314
+ this.setState({
315
+ fileList: newList
316
+ });
317
+ onListChange && onListChange(newList);
318
+ }
319
+ }, {
320
+ key: "onDelete",
321
+ value: function onDelete(file) {
322
+ var fileList = this.state.fileList;
323
+ var onListChange = this.props.onListChange;
324
+ var newList = [];
325
+ fileList.map(function (item) {
326
+ if (item.fileId !== file.fileId || item.uid !== file.uid) {
327
+ newList.push(item);
328
+ }
329
+ });
330
+ this.setState({
331
+ fileList: newList
332
+ });
333
+ onListChange && onListChange(newList);
334
+ }
335
+ }, {
158
336
  key: "render",
159
337
  value: function render() {
160
- return /*#__PURE__*/React.createElement(_Upload, _extends({
338
+ var _this2 = this;
339
+
340
+ var _this$props3 = this.props,
341
+ useDefaultList = _this$props3.useDefaultList,
342
+ fileList = _this$props3.fileList,
343
+ fileCard = _this$props3.fileCard,
344
+ _this$props3$showUplo = _this$props3.showUploadList,
345
+ showUploadList = _this$props3$showUplo === void 0 ? {
346
+ showDownloadIcon: true,
347
+ showPreviewIcon: false,
348
+ showRemoveIcon: true,
349
+ downloadIcon: null,
350
+ removeIcon: null,
351
+ previewIcon: null
352
+ } : _this$props3$showUplo;
353
+ var newFileList = this.state.fileList;
354
+
355
+ if (useDefaultList && fileList) {
356
+ newFileList = fileList;
357
+ }
358
+
359
+ var newprops = omit(this.props, ["sliceSize", "maxSize", "onComplete", "onProcess", "allowFileSuffix", "useDefaultList", "fileCard", "onListChange"]);
360
+ var defaultProps = {
161
361
  customRequest: this.customRequest.bind(this),
162
- multiple: true // fileList={this.state.fileList}
362
+ multiple: true,
363
+ beforeUpload: this.beforeUpload.bind(this)
364
+ };
163
365
 
164
- }, this.props));
366
+ if (fileCard) {
367
+ defaultProps = _objectSpread(_objectSpread({}, defaultProps), {}, {
368
+ itemRender: function itemRender(originNode, file, currFileList) {
369
+ var name = file.name || file.fileName;
370
+ var names = name === null || name === void 0 ? void 0 : name.split(".");
371
+ var suffix = names ? names[names.length - 1] : "";
372
+ return /*#__PURE__*/React.createElement("div", {
373
+ className: getLess(styles, "file-item")
374
+ }, /*#__PURE__*/React.createElement("div", {
375
+ className: cls(getLess(styles, "content"), _defineProperty({}, getLess(styles, "content_error"), file.status == "error"))
376
+ }, /*#__PURE__*/React.createElement("div", {
377
+ className: getLess(styles, "mark-picture")
378
+ }, /*#__PURE__*/React.createElement(FileIcon, {
379
+ suffix: suffix,
380
+ fileId: file.fileId
381
+ })), /*#__PURE__*/React.createElement("div", {
382
+ className: getLess(styles, "name")
383
+ }, file.name || file.fileName), /*#__PURE__*/React.createElement("div", {
384
+ className: getLess(styles, "icon")
385
+ }, showUploadList.showPreviewIcon && file.status == "done" && /*#__PURE__*/React.createElement("div", {
386
+ onClick: function onClick() {
387
+ if (_this2.props.onPreview) {
388
+ _this2.props.onPreview(file);
389
+ } else {
390
+ previewDocument(file.fileId);
391
+ }
392
+ },
393
+ style: {
394
+ cursor: "pointer"
395
+ }
396
+ }, showUploadList.downloadIcon ? showUploadList.downloadIcon : /*#__PURE__*/React.createElement(EyeOutlined, null)), showUploadList.showDownloadIcon && file.status == "done" && /*#__PURE__*/React.createElement("div", {
397
+ onClick: function onClick() {
398
+ if (_this2.props.onDownload) {
399
+ _this2.props.onDownload(file);
400
+ } else {
401
+ download(file.fileId);
402
+ }
403
+ },
404
+ style: {
405
+ cursor: "pointer"
406
+ }
407
+ }, showUploadList.downloadIcon ? showUploadList.downloadIcon : /*#__PURE__*/React.createElement(DownloadOutlined, null)), showUploadList.showRemoveIcon && /*#__PURE__*/React.createElement("div", {
408
+ onClick: function onClick() {
409
+ if (_this2.props.onRemove) {
410
+ _this2.props.onRemove(file);
411
+ } else {
412
+ _this2.onDelete(file);
413
+ }
414
+ },
415
+ style: {
416
+ cursor: "pointer"
417
+ }
418
+ }, showUploadList.downloadIcon ? showUploadList.downloadIcon : /*#__PURE__*/React.createElement(DeleteOutlined, null)))), file.status == "uploading" && /*#__PURE__*/React.createElement("div", {
419
+ className: getLess(styles, "process")
420
+ }, /*#__PURE__*/React.createElement("div", {
421
+ className: getLess(styles, "percent"),
422
+ style: {
423
+ width: file.percent + "%"
424
+ }
425
+ })));
426
+ }
427
+ });
428
+ } else {
429
+ defaultProps = _objectSpread(_objectSpread({}, defaultProps), {}, {
430
+ onDownload: function onDownload(file) {
431
+ download(file.fileId);
432
+ },
433
+ onRemove: function onRemove(file) {
434
+ _this2.onDelete(file);
435
+ },
436
+ onPreview: function onPreview(file) {
437
+ if (file !== null && file !== void 0 && file.fileId) {
438
+ previewDocument(file.fileId);
439
+ }
440
+ },
441
+ showUploadList: _objectSpread({}, showUploadList)
442
+ });
443
+ }
444
+
445
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_Upload, _extends({
446
+ fileList: this.state.fileList
447
+ }, defaultProps, newprops)));
165
448
  }
166
449
  }]);
167
450
 
@@ -169,4 +452,4 @@ var NscUpload = /*#__PURE__*/function (_React$PureComponent) {
169
452
  }(React.PureComponent);
170
453
 
171
454
  export default withZhLocale(NscUpload);
172
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvdXBsb2FkL2luZGV4LnRzeCJdLCJuYW1lcyI6WyJSZWFjdCIsImZpbGUiLCJtZXNzYWdlIiwid2l0aFpoTG9jYWxlIiwidXBsb2FkIiwiTnNjVXBsb2FkIiwiZmlsZUxpc3QiLCJvcHRpb25zIiwicHJvcHMiLCJvbkNvbXBsZXRlIiwib25Qcm9jZXNzIiwic2xpY2VTaXplIiwibWF4U2l6ZSIsInNpemUiLCJlcnJvciIsIm5hbWUiLCJmaWxlSWQiLCJzdGF0dXMiLCJvbkVycm9yIiwib25Qcm9ncmVzcyIsInRvdGFsUHJvZ3Jlc3MiLCJwZXJjZW50IiwicGFydFNpemUiLCJyZXMiLCJjb2RlIiwiZGF0YSIsImF0dGFjaElkIiwib25TdWNjZXNzIiwiY3VzdG9tUmVxdWVzdCIsImJpbmQiLCJQdXJlQ29tcG9uZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEtBQUtBLEtBQVosTUFBdUIsT0FBdkI7QUFFQSxPQUFPQyxJQUFQLE1BQWlCLFVBQWpCO0FBQ0EsT0FBT0MsT0FBUCxNQUFvQixZQUFwQjtBQUNBLE9BQU9DLFlBQVAsTUFBeUIsd0JBQXpCO0FBQ0EsSUFBUUMsTUFBUixHQUFtQkgsSUFBbkIsQ0FBUUcsTUFBUjs7SUFRTUMsUzs7Ozs7Ozs7Ozs7Ozs7Ozs0REFDSTtBQUFFQyxNQUFBQSxRQUFRLEVBQUU7QUFBWixLOzs7eUVBRVEsaUJBQU9DLE9BQVA7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNSTixnQkFBQUEsSUFEUSxHQUNETSxPQUFPLENBQUNOLElBRFA7QUFBQSw4QkFFK0IsTUFBS08sS0FGcEMsRUFFTkMsVUFGTSxlQUVOQSxVQUZNLEVBRU1DLFNBRk4sZUFFTUEsU0FGTixFQUVpQkMsU0FGakIsZUFFaUJBLFNBRmpCO0FBR05DLGdCQUFBQSxPQUhNLEdBR00sTUFBS0osS0FIWCxDQUdOSSxPQUhNOztBQUFBLHFCQUlWQSxPQUpVO0FBQUE7QUFBQTtBQUFBOztBQUtOQyxnQkFBQUEsSUFMTSxHQUtDRCxPQUFPLEdBQUcsSUFBVixHQUFpQixJQUxsQjs7QUFBQSxzQkFNUkMsSUFBSSxHQUFHWixJQUFJLENBQUNZLElBTko7QUFBQTtBQUFBO0FBQUE7O0FBT1ZYLGdCQUFBQSxPQUFPLENBQUNZLEtBQVIsV0FBaUJiLElBQUksQ0FBQ2MsSUFBdEIsaURBQW1DSCxPQUFuQztBQUNBSCxnQkFBQUEsVUFBVSxJQUNSQSxVQUFVLENBQUM7QUFBRVIsa0JBQUFBLElBQUksRUFBRU0sT0FBTyxDQUFDTixJQUFoQjtBQUFzQmUsa0JBQUFBLE1BQU0sRUFBRSxFQUE5QjtBQUFrQ0Msa0JBQUFBLE1BQU0sRUFBRTtBQUExQyxpQkFBRCxDQURaO0FBRUFWLGdCQUFBQSxPQUFPLENBQUNXLE9BQVI7QUFWVSxpREFXSCxLQVhHOztBQUFBO0FBZVJDLGdCQUFBQSxVQWZRLEdBZUssU0FBYkEsVUFBYSxDQUFDQyxhQUFELEVBQXdCO0FBQ3pDYixrQkFBQUEsT0FBTyxDQUFDWSxVQUFSLENBQW1CO0FBQUVFLG9CQUFBQSxPQUFPLEVBQUVEO0FBQVgsbUJBQW5CLEVBQStDbkIsSUFBL0M7QUFDQVMsa0JBQUFBLFNBQVMsSUFBSUEsU0FBUyxDQUFDO0FBQUVXLG9CQUFBQSxPQUFPLEVBQUVELGFBQVg7QUFBMEJuQixvQkFBQUEsSUFBSSxFQUFFQTtBQUFoQyxtQkFBRCxDQUF0QjtBQUNELGlCQWxCYTs7QUFBQTtBQUFBO0FBQUEsdUJBb0JXRyxNQUFNLENBQUM7QUFDNUJILGtCQUFBQSxJQUFJLEVBQUVBLElBRHNCO0FBRTVCa0Isa0JBQUFBLFVBQVUsRUFBRUEsVUFGZ0I7QUFHNUJHLGtCQUFBQSxRQUFRLEVBQUVYO0FBSGtCLGlCQUFELENBcEJqQjs7QUFBQTtBQW9CTlksZ0JBQUFBLEdBcEJNO0FBeUJSUCxnQkFBQUEsTUF6QlEsR0F5QkMsSUF6QkQ7O0FBMEJaLG9CQUFJTyxHQUFHLENBQUNDLElBQUosSUFBWSxHQUFoQixFQUFxQjtBQUNuQlIsa0JBQUFBLE1BQU0sR0FBR08sR0FBRyxDQUFDRSxJQUFKLENBQVNDLFFBQWxCO0FBQ0FuQixrQkFBQUEsT0FBTyxDQUFDb0IsU0FBUjtBQUNELGlCQUhELE1BR087QUFDTHBCLGtCQUFBQSxPQUFPLENBQUNXLE9BQVI7QUFDRDs7QUFDRFQsZ0JBQUFBLFVBQVUsSUFDUkEsVUFBVSxDQUFDO0FBQ1RSLGtCQUFBQSxJQUFJLEVBQUVNLE9BQU8sQ0FBQ04sSUFETDtBQUVUZSxrQkFBQUEsTUFBTSxFQUFFQSxNQUZDO0FBR1RDLGtCQUFBQSxNQUFNLEVBQUVNLEdBQUcsQ0FBQ0MsSUFBSixJQUFZLEdBQVosR0FBa0IsU0FBbEIsR0FBOEI7QUFIN0IsaUJBQUQsQ0FEWjtBQWhDWTtBQUFBOztBQUFBO0FBQUE7QUFBQTtBQXVDWmYsZ0JBQUFBLFVBQVUsSUFDUkEsVUFBVSxDQUFDO0FBQUVSLGtCQUFBQSxJQUFJLEVBQUVNLE9BQU8sQ0FBQ04sSUFBaEI7QUFBc0JlLGtCQUFBQSxNQUFNLEVBQUUsRUFBOUI7QUFBa0NDLGtCQUFBQSxNQUFNLEVBQUU7QUFBMUMsaUJBQUQsQ0FEWjtBQUVBVixnQkFBQUEsT0FBTyxDQUFDVyxPQUFSOztBQXpDWTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxPOzs7Ozs7Ozs7Ozs7V0E2Q2hCLGtCQUEwQjtBQUN4QiwwQkFDRTtBQUNFLFFBQUEsYUFBYSxFQUFFLEtBQUtVLGFBQUwsQ0FBbUJDLElBQW5CLENBQXdCLElBQXhCLENBRGpCO0FBRUUsUUFBQSxRQUFRLE1BRlYsQ0FHRTs7QUFIRixTQUlNLEtBQUtyQixLQUpYLEVBREY7QUFRRDs7OztFQXpEcUJSLEtBQUssQ0FBQzhCLGE7O0FBMkQ5QixlQUFlM0IsWUFBWSxDQUFDRSxTQUFELENBQTNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IFVwbG9hZCwgVXBsb2FkUHJvcHMgfSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgZmlsZSBmcm9tIFwibnNjLWZpbGVcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uL21lc3NhZ2VcIjtcclxuaW1wb3J0IHdpdGhaaExvY2FsZSBmcm9tIFwiLi4vY29tbW9uL3dpdGhaaExvY2FsZVwiO1xyXG5jb25zdCB7IHVwbG9hZCB9ID0gZmlsZTtcclxuXHJcbmludGVyZmFjZSBJVXBsb2FkUHJvcHMgZXh0ZW5kcyBVcGxvYWRQcm9wcyB7XHJcbiAgc2xpY2VTaXplPzogbnVtYmVyO1xyXG4gIG1heFNpemU/OiBudW1iZXI7XHJcbiAgb25Qcm9jZXNzPzogKHByb2Nlc3MpID0+IHZvaWQ7XHJcbiAgb25Db21wbGV0ZT86ICh7IGZpbGUsIGZpbGVJZCwgc3RhdHVzIH0pID0+IHZvaWQ7XHJcbn1cclxuY2xhc3MgTnNjVXBsb2FkIGV4dGVuZHMgUmVhY3QuUHVyZUNvbXBvbmVudDxJVXBsb2FkUHJvcHMsIGFueT4ge1xyXG4gIHN0YXRlID0geyBmaWxlTGlzdDogW10gfTtcclxuXHJcbiAgY3VzdG9tUmVxdWVzdCA9IGFzeW5jIChvcHRpb25zKSA9PiB7XHJcbiAgICBjb25zdCBmaWxlID0gb3B0aW9ucy5maWxlO1xyXG4gICAgY29uc3QgeyBvbkNvbXBsZXRlLCBvblByb2Nlc3MsIHNsaWNlU2l6ZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgbWF4U2l6ZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmIChtYXhTaXplKSB7XHJcbiAgICAgIGNvbnN0IHNpemUgPSBtYXhTaXplICogMTAyNCAqIDEwMjQ7XHJcbiAgICAgIGlmIChzaXplIDwgZmlsZS5zaXplKSB7XHJcbiAgICAgICAgbWVzc2FnZS5lcnJvcihgJHtmaWxlLm5hbWV95paH5Lu25aSn5bCP6LaF6L+HJHttYXhTaXplfU3vvIzor7fph43mlrDkuIrkvKDvvIFgKTtcclxuICAgICAgICBvbkNvbXBsZXRlICYmXHJcbiAgICAgICAgICBvbkNvbXBsZXRlKHsgZmlsZTogb3B0aW9ucy5maWxlLCBmaWxlSWQ6IFwiXCIsIHN0YXR1czogXCJlcnJvclwiIH0pO1xyXG4gICAgICAgIG9wdGlvbnMub25FcnJvcigpO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG9uUHJvZ3Jlc3MgPSAodG90YWxQcm9ncmVzczogYW55KSA9PiB7XHJcbiAgICAgIG9wdGlvbnMub25Qcm9ncmVzcyh7IHBlcmNlbnQ6IHRvdGFsUHJvZ3Jlc3MgfSwgZmlsZSk7XHJcbiAgICAgIG9uUHJvY2VzcyAmJiBvblByb2Nlc3MoeyBwZXJjZW50OiB0b3RhbFByb2dyZXNzLCBmaWxlOiBmaWxlIH0pO1xyXG4gICAgfTtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHJlczogYW55ID0gYXdhaXQgdXBsb2FkKHtcclxuICAgICAgICBmaWxlOiBmaWxlLFxyXG4gICAgICAgIG9uUHJvZ3Jlc3M6IG9uUHJvZ3Jlc3MsXHJcbiAgICAgICAgcGFydFNpemU6IHNsaWNlU2l6ZSxcclxuICAgICAgfSk7XHJcbiAgICAgIGxldCBmaWxlSWQgPSBudWxsO1xyXG4gICAgICBpZiAocmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgZmlsZUlkID0gcmVzLmRhdGEuYXR0YWNoSWQ7XHJcbiAgICAgICAgb3B0aW9ucy5vblN1Y2Nlc3MoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBvcHRpb25zLm9uRXJyb3IoKTtcclxuICAgICAgfVxyXG4gICAgICBvbkNvbXBsZXRlICYmXHJcbiAgICAgICAgb25Db21wbGV0ZSh7XHJcbiAgICAgICAgICBmaWxlOiBvcHRpb25zLmZpbGUsXHJcbiAgICAgICAgICBmaWxlSWQ6IGZpbGVJZCxcclxuICAgICAgICAgIHN0YXR1czogcmVzLmNvZGUgPT0gMjAwID8gXCJzdWNjZXNzXCIgOiBcImVycm9yXCIsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIG9uQ29tcGxldGUgJiZcclxuICAgICAgICBvbkNvbXBsZXRlKHsgZmlsZTogb3B0aW9ucy5maWxlLCBmaWxlSWQ6IFwiXCIsIHN0YXR1czogXCJlcnJvclwiIH0pO1xyXG4gICAgICBvcHRpb25zLm9uRXJyb3IoKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICByZW5kZXIoKTogUmVhY3QuUmVhY3ROb2RlIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxVcGxvYWRcclxuICAgICAgICBjdXN0b21SZXF1ZXN0PXt0aGlzLmN1c3RvbVJlcXVlc3QuYmluZCh0aGlzKX1cclxuICAgICAgICBtdWx0aXBsZVxyXG4gICAgICAgIC8vIGZpbGVMaXN0PXt0aGlzLnN0YXRlLmZpbGVMaXN0fVxyXG4gICAgICAgIHsuLi50aGlzLnByb3BzfVxyXG4gICAgICAvPlxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgd2l0aFpoTG9jYWxlKE5zY1VwbG9hZCk7XHJcbiJdfQ==
455
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvdXBsb2FkL2luZGV4LnRzeCJdLCJuYW1lcyI6WyJSZWFjdCIsImZpbGUiLCJtZXNzYWdlIiwid2l0aFpoTG9jYWxlIiwib21pdCIsImdldExlc3MiLCJzdHlsZXMiLCJjbHMiLCJGaWxlSWNvbiIsIkRlbGV0ZU91dGxpbmVkIiwiRG93bmxvYWRPdXRsaW5lZCIsIkV5ZU91dGxpbmVkIiwidXBsb2FkIiwiZG93bmxvYWQiLCJwcmV2aWV3RG9jdW1lbnQiLCJOc2NVcGxvYWQiLCJmaWxlTGlzdCIsInZpZXdJZCIsIm9wdGlvbnMiLCJwcm9wcyIsIm9uQ29tcGxldGUiLCJvblByb2Nlc3MiLCJzbGljZVNpemUiLCJvblByb2dyZXNzIiwidG90YWxQcm9ncmVzcyIsInBlcmNlbnQiLCJwYXJ0U2l6ZSIsInJlcyIsImZpbGVJZCIsImNvZGUiLCJkYXRhIiwiYXR0YWNoSWQiLCJvblN1Y2Nlc3MiLCJvbkVycm9yIiwic3RhdHVzIiwiY29udmVydEZpbGVMaXN0IiwibGlzdCIsIm5ld0ZpbGVMaXN0Iiwib2xkTGlzdCIsIm1hcCIsIml0ZW0iLCJ0ZW1wIiwibmFtZSIsImZpbGVOYW1lIiwicHVzaCIsInNldFN0YXRlIiwicHJlUHJvcHMiLCJwcmVTdGF0ZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdGF0ZSIsIm1heFNpemUiLCJhbGxvd0ZpbGVTdWZmaXgiLCJjaGVja0ZpbGVUeXBlIiwiZXJyb3IiLCJzaXplIiwib25MaXN0Q2hhbmdlIiwibmV3TGlzdCIsInVpZCIsIm5hbWVzIiwic3BsaXQiLCJzdWZmaXgiLCJsZW5ndGgiLCJpbmRleE9mIiwibmV3RmlsZSIsInVzZURlZmF1bHRMaXN0IiwiZmlsZUNhcmQiLCJzaG93VXBsb2FkTGlzdCIsInNob3dEb3dubG9hZEljb24iLCJzaG93UHJldmlld0ljb24iLCJzaG93UmVtb3ZlSWNvbiIsImRvd25sb2FkSWNvbiIsInJlbW92ZUljb24iLCJwcmV2aWV3SWNvbiIsIm5ld3Byb3BzIiwiZGVmYXVsdFByb3BzIiwiY3VzdG9tUmVxdWVzdCIsImJpbmQiLCJtdWx0aXBsZSIsImJlZm9yZVVwbG9hZCIsIml0ZW1SZW5kZXIiLCJvcmlnaW5Ob2RlIiwiY3VyckZpbGVMaXN0Iiwib25QcmV2aWV3IiwiY3Vyc29yIiwib25Eb3dubG9hZCIsIm9uUmVtb3ZlIiwib25EZWxldGUiLCJ3aWR0aCIsIlB1cmVDb21wb25lbnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEtBQUtBLEtBQVosTUFBdUIsT0FBdkI7QUFFQSxPQUFPQyxJQUFQLE1BQWlCLFVBQWpCO0FBQ0EsT0FBT0MsT0FBUCxNQUFvQixZQUFwQjtBQUNBLE9BQU9DLFlBQVAsTUFBeUIsd0JBQXpCO0FBQ0EsT0FBT0MsSUFBUCxNQUFpQixTQUFqQjtBQUNBLFNBQVNDLE9BQVQsUUFBd0IsYUFBeEI7QUFDQSxPQUFPQyxNQUFQLE1BQW1CLGNBQW5CO0FBQ0EsT0FBT0MsR0FBUCxNQUFnQixZQUFoQjtBQUNBLE9BQU9DLFFBQVAsTUFBcUIsb0JBQXJCO0FBQ0EsU0FDRUMsY0FERixFQUVFQyxnQkFGRixFQUdFQyxXQUhGLFFBSU8sbUJBSlA7QUFNQSxJQUFRQyxNQUFSLEdBQThDWCxJQUE5QyxDQUFRVyxNQUFSO0FBQUEsSUFBZ0JDLFFBQWhCLEdBQThDWixJQUE5QyxDQUFnQlksUUFBaEI7QUFBQSxJQUEwQkMsZUFBMUIsR0FBOENiLElBQTlDLENBQTBCYSxlQUExQjs7SUFZTUMsUzs7Ozs7Ozs7Ozs7Ozs7Ozs0REFDSTtBQUFFQyxNQUFBQSxRQUFRLEVBQUUsRUFBWjtBQUFnQkMsTUFBQUEsTUFBTSxFQUFFO0FBQXhCLEs7Ozt5RUFnSFEsaUJBQU9DLE9BQVA7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNSakIsZ0JBQUFBLElBRFEsR0FDRGlCLE9BQU8sQ0FBQ2pCLElBRFA7QUFBQSw4QkFFK0IsTUFBS2tCLEtBRnBDLEVB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TCxDQUFXbEM7QUFEdkIsU0FFTTJELFlBRk4sRUFHTUQsUUFITixFQURGLENBREY7QUFTRDs7OztFQTlUcUIxRSxLQUFLLENBQUN5RixhOztBQWdVOUIsZUFBZXRGLFlBQVksQ0FBQ1ksU0FBRCxDQUEzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBVcGxvYWQsIFVwbG9hZFByb3BzIH0gZnJvbSBcImFudGRcIjtcclxuaW1wb3J0IGZpbGUgZnJvbSBcIm5zYy1maWxlXCI7XHJcbmltcG9ydCBtZXNzYWdlIGZyb20gXCIuLi9tZXNzYWdlXCI7XHJcbmltcG9ydCB3aXRoWmhMb2NhbGUgZnJvbSBcIi4uL2NvbW1vbi93aXRoWmhMb2NhbGVcIjtcclxuaW1wb3J0IG9taXQgZnJvbSBcIm9taXQuanNcIjtcclxuaW1wb3J0IHsgZ2V0TGVzcyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL2luZGV4Lmxlc3NcIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5pbXBvcnQgRmlsZUljb24gZnJvbSBcIi4uL2NvbW1vbi9GaWxlSWNvblwiO1xyXG5pbXBvcnQge1xyXG4gIERlbGV0ZU91dGxpbmVkLFxyXG4gIERvd25sb2FkT3V0bGluZWQsXHJcbiAgRXllT3V0bGluZWQsXHJcbn0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmltcG9ydCBQZGZWaWV3ZXIgZnJvbSBcIi4uL3BkZnZpd2VyXCI7XHJcbmNvbnN0IHsgdXBsb2FkLCBkb3dubG9hZCwgcHJldmlld0RvY3VtZW50IH0gPSBmaWxlO1xyXG5cclxuaW50ZXJmYWNlIElVcGxvYWRQcm9wcyBleHRlbmRzIFVwbG9hZFByb3BzIHtcclxuICBzbGljZVNpemU/OiBudW1iZXI7XHJcbiAgbWF4U2l6ZT86IG51bWJlciB8IGJvb2xlYW47XHJcbiAgb25Qcm9jZXNzPzogKHByb2Nlc3MpID0+IHZvaWQ7XHJcbiAgb25Db21wbGV0ZT86ICh7IGZpbGUsIGZpbGVJZCwgc3RhdHVzIH0pID0+IHZvaWQ7XHJcbiAgYWxsb3dGaWxlU3VmZml4PzogQXJyYXk8U3RyaW5nPjsgLy/lhYHorrjkuIrkvKDmianlsZXlkI0s5LiN5bimLlxyXG4gIHVzZURlZmF1bHRMaXN0PzogYm9vbGVhbjsgLy/mmK/lkKbkvb/nlKjpu5jorqTnmoRmaWxlTGlzdFxyXG4gIGZpbGVDYXJkPzogYm9vbGVhbjtcclxuICBvbkxpc3RDaGFuZ2U/OiBhbnk7XHJcbn1cclxuY2xhc3MgTnNjVXBsb2FkIGV4dGVuZHMgUmVhY3QuUHVyZUNvbXBvbmVudDxJVXBsb2FkUHJvcHMsIGFueT4ge1xyXG4gIHN0YXRlID0geyBmaWxlTGlzdDogW10sIHZpZXdJZDogXCJcIiB9O1xyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgaWYgKHRoaXMucHJvcHMuZmlsZUxpc3QpIHtcclxuICAgICAgdGhpcy5jb252ZXJ0RmlsZUxpc3QoKTtcclxuICAgIH1cclxuICB9XHJcbiAgY29udmVydEZpbGVMaXN0KGxpc3Q/OiBBcnJheTxPYmplY3Q+KSB7XHJcbiAgICBjb25zdCB7IGZpbGVMaXN0IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgbmV3RmlsZUxpc3QgPSBbXTtcclxuICAgIGxldCBvbGRMaXN0ID0gbGlzdCA/IGxpc3QgOiBmaWxlTGlzdDtcclxuICAgIG9sZExpc3QubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgbGV0IHRlbXAgPSB7IC4uLml0ZW0gfTtcclxuICAgICAgaWYgKCFpdGVtLm5hbWUpIHtcclxuICAgICAgICB0ZW1wLm5hbWUgPSBpdGVtLmZpbGVOYW1lO1xyXG4gICAgICB9XHJcbiAgICAgIG5ld0ZpbGVMaXN0LnB1c2godGVtcCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBmaWxlTGlzdDogbmV3RmlsZUxpc3QsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgY29tcG9uZW50RGlkVXBkYXRlKHByZVByb3BzLCBwcmVTdGF0ZSkge1xyXG4gICAgaWYgKHRoaXMucHJvcHMuZmlsZUxpc3QpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHByZVN0YXRlLmZpbGVMaXN0KSAhPT1cclxuICAgICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLnByb3BzLmZpbGVMaXN0KVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmNvbnZlcnRGaWxlTGlzdCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldEZpbGVMaXN0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuZmlsZUxpc3Q7XHJcbiAgfVxyXG4gIHNldEZpbGVMaXN0KGZpbGVMaXN0OiBBcnJheTxPYmplY3Q+KSB7XHJcbiAgICB0aGlzLmNvbnZlcnRGaWxlTGlzdChmaWxlTGlzdCk7XHJcbiAgfVxyXG4gIGJlZm9yZVVwbG9hZChmaWxlKSB7XHJcbiAgICBsZXQgeyBtYXhTaXplID0gMTAwLCBhbGxvd0ZpbGVTdWZmaXggfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoYWxsb3dGaWxlU3VmZml4ICYmICF0aGlzLmNoZWNrRmlsZVR5cGUoZmlsZSkpIHtcclxuICAgICAgbWVzc2FnZS5lcnJvcihcclxuICAgICAgICBgJHtmaWxlLm5hbWV95paH5Lu257G75Z6L5LiN5YWB6K645LiK5Lyg77yM6K+35LiK5Lyg5ZCO57yA5Li6JHthbGxvd0ZpbGVTdWZmaXh955qE57G75Z6L5paH5Lu277yBYFxyXG4gICAgICApO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAobWF4U2l6ZSAhPT0gZmFsc2UpIHtcclxuICAgICAgaWYgKG1heFNpemUgPT09IHRydWUpIHtcclxuICAgICAgICBtYXhTaXplID0gMTAwO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHNpemUgPSBtYXhTaXplICogMTAyNCAqIDEwMjQ7XHJcbiAgICAgIGlmIChzaXplIDwgZmlsZS5zaXplKSB7XHJcbiAgICAgICAgbWVzc2FnZS5lcnJvcihgJHtmaWxlLm5hbWV95paH5Lu25aSn5bCP6LaF6L+HJHttYXhTaXplfU3vvIzor7fph43mlrDkuIrkvKDvvIFgKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IHsgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IG9uTGlzdENoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IG5ld0xpc3QgPSBbXHJcbiAgICAgIC4uLmZpbGVMaXN0LFxyXG4gICAgICB7XHJcbiAgICAgICAgZmlsZU5hbWU6IGZpbGUubmFtZSxcclxuICAgICAgICBwZXJjZW50OiAwLFxyXG4gICAgICAgIHN0YXR1czogXCJ1cGxvYWRpbmdcIixcclxuICAgICAgICB1aWQ6IGZpbGUudWlkLFxyXG4gICAgICAgIG5hbWU6IGZpbGUubmFtZSxcclxuICAgICAgfSxcclxuICAgIF07XHJcbiAgICB0aGlzLnNldFN0YXRlKHsgZmlsZUxpc3Q6IG5ld0xpc3QgfSk7XHJcbiAgICBvbkxpc3RDaGFuZ2UgJiYgb25MaXN0Q2hhbmdlKG5ld0xpc3QpO1xyXG4gIH1cclxuICBjaGVja0ZpbGVUeXBlKGZpbGUpIHtcclxuICAgIGNvbnN0IHsgYWxsb3dGaWxlU3VmZml4IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgbmFtZXMgPSBmaWxlLm5hbWUuc3BsaXQoXCIuXCIpO1xyXG4gICAgY29uc3Qgc3VmZml4ID0gbmFtZXNbbmFtZXMubGVuZ3RoIC0gMV07XHJcbiAgICBpZiAoYWxsb3dGaWxlU3VmZml4LmluZGV4T2Yoc3VmZml4KSA+IC0xKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICBvblByb2Nlc3MoeyBwZXJjZW50LCBmaWxlIH06IGFueSkge1xyXG4gICAgY29uc3QgeyBmaWxlTGlzdCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgb25MaXN0Q2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgbmV3TGlzdDogYW55ID0gW107XHJcbiAgICBmaWxlTGlzdC5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBuZXdGaWxlID0geyAuLi5pdGVtIH07XHJcbiAgICAgIGlmIChmaWxlLnVpZCA9PSBpdGVtLnVpZCkge1xyXG4gICAgICAgIG5ld0ZpbGUucGVyY2VudCA9IHBlcmNlbnQ7XHJcbiAgICAgIH1cclxuICAgICAgbmV3TGlzdC5wdXNoKG5ld0ZpbGUpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgZmlsZUxpc3Q6IG5ld0xpc3QsXHJcbiAgICB9KTtcclxuICAgIG9uTGlzdENoYW5nZSAmJiBvbkxpc3RDaGFuZ2UobmV3TGlzdCk7XHJcbiAgfVxyXG4gIG9uQ29tcGxldGUoZmlsZSkge1xyXG4gICAgY29uc3QgeyBmaWxlTGlzdCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgb25MaXN0Q2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgbmV3TGlzdDogYW55ID0gW107XHJcbiAgICBmaWxlTGlzdC5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBuZXdGaWxlID0geyAuLi5pdGVtIH07XHJcbiAgICAgIGlmIChmaWxlLmZpbGUudWlkID09IGl0ZW0udWlkKSB7XHJcbiAgICAgICAgbmV3RmlsZS5zdGF0dXMgPSBmaWxlLnN0YXR1cyA9PSBcInN1Y2Nlc3NcIiA/IFwiZG9uZVwiIDogZmlsZS5zdGF0dXM7XHJcbiAgICAgICAgbmV3RmlsZS5maWxlSWQgPSBmaWxlLmZpbGVJZDtcclxuICAgICAgfVxyXG4gICAgICBuZXdMaXN0LnB1c2gobmV3RmlsZSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBmaWxlTGlzdDogbmV3TGlzdCxcclxuICAgIH0pO1xyXG4gICAgb25MaXN0Q2hhbmdlICYmIG9uTGlzdENoYW5nZShuZXdMaXN0KTtcclxuICB9XHJcbiAgY3VzdG9tUmVxdWVzdCA9IGFzeW5jIChvcHRpb25zKSA9PiB7XHJcbiAgICBjb25zdCBmaWxlID0gb3B0aW9ucy5maWxlO1xyXG4gICAgY29uc3QgeyBvbkNvbXBsZXRlLCBvblByb2Nlc3MsIHNsaWNlU2l6ZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IG9uUHJvZ3Jlc3MgPSAodG90YWxQcm9ncmVzczogYW55KSA9PiB7XHJcbiAgICAgIG9wdGlvbnMub25Qcm9ncmVzcyh7IHBlcmNlbnQ6IHRvdGFsUHJvZ3Jlc3MgfSwgZmlsZSk7XHJcbiAgICAgIHRoaXMub25Qcm9jZXNzKHsgcGVyY2VudDogdG90YWxQcm9ncmVzcywgZmlsZTogZmlsZSB9KTtcclxuICAgICAgb25Qcm9jZXNzICYmIG9uUHJvY2Vzcyh7IHBlcmNlbnQ6IHRvdGFsUHJvZ3Jlc3MsIGZpbGU6IGZpbGUgfSk7XHJcbiAgICB9O1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgcmVzOiBhbnkgPSBhd2FpdCB1cGxvYWQoe1xyXG4gICAgICAgIGZpbGU6IGZpbGUsXHJcbiAgICAgICAgb25Qcm9ncmVzczogb25Qcm9ncmVzcyxcclxuICAgICAgICBwYXJ0U2l6ZTogc2xpY2VTaXplLFxyXG4gICAgICB9KTtcclxuICAgICAgbGV0IGZpbGVJZCA9IG51bGw7XHJcbiAgICAgIGlmIChyZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICBmaWxlSWQgPSByZXMuZGF0YS5hdHRhY2hJZDtcclxuICAgICAgICBvcHRpb25zLm9uU3VjY2VzcygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG9wdGlvbnMub25FcnJvcigpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMub25Db21wbGV0ZSh7XHJcbiAgICAgICAgZmlsZTogb3B0aW9ucy5maWxlLFxyXG4gICAgICAgIGZpbGVJZDogZmlsZUlkLFxyXG4gICAgICAgIHN0YXR1czogcmVzLmNvZGUgPT0gMjAwID8gXCJzdWNjZXNzXCIgOiBcImVycm9yXCIsXHJcbiAgICAgIH0pO1xyXG4gICAgICBvbkNvbXBsZXRlICYmXHJcbiAgICAgICAgb25Db21wbGV0ZSh7XHJcbiAgICAgICAgICBmaWxlOiBvcHRpb25zLmZpbGUsXHJcbiAgICAgICAgICBmaWxlSWQ6IGZpbGVJZCxcclxuICAgICAgICAgIHN0YXR1czogcmVzLmNvZGUgPT0gMjAwID8gXCJzdWNjZXNzXCIgOiBcImVycm9yXCIsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIHRoaXMub25Db21wbGV0ZSh7XHJcbiAgICAgICAgZmlsZTogb3B0aW9ucy5maWxlLFxyXG4gICAgICAgIGZpbGVJZDogXCJcIixcclxuICAgICAgICBzdGF0dXM6IFwiZXJyb3JcIixcclxuICAgICAgfSk7XHJcbiAgICAgIG9uQ29tcGxldGUgJiZcclxuICAgICAgICBvbkNvbXBsZXRlKHsgZmlsZTogb3B0aW9ucy5maWxlLCBmaWxlSWQ6IFwiXCIsIHN0YXR1czogXCJlcnJvclwiIH0pO1xyXG4gICAgICBvcHRpb25zLm9uRXJyb3IoKTtcclxuICAgIH1cclxuICB9O1xyXG4gIG9uRGVsZXRlKGZpbGUpIHtcclxuICAgIGNvbnN0IHsgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IG9uTGlzdENoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IG5ld0xpc3Q6IGFueSA9IFtdO1xyXG4gICAgZmlsZUxpc3QubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGl0ZW0uZmlsZUlkICE9PSBmaWxlLmZpbGVJZCB8fCBpdGVtLnVpZCAhPT0gZmlsZS51aWQpIHtcclxuICAgICAgICBuZXdMaXN0LnB1c2goaXRlbSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGZpbGVMaXN0OiBuZXdMaXN0LFxyXG4gICAgfSk7XHJcbiAgICBvbkxpc3RDaGFuZ2UgJiYgb25MaXN0Q2hhbmdlKG5ld0xpc3QpO1xyXG4gIH1cclxuICByZW5kZXIoKTogUmVhY3QuUmVhY3ROb2RlIHtcclxuICAgIGxldCB7XHJcbiAgICAgIHVzZURlZmF1bHRMaXN0LFxyXG4gICAgICBmaWxlTGlzdCxcclxuICAgICAgZmlsZUNhcmQsXHJcbiAgICAgIHNob3dVcGxvYWRMaXN0ID0ge1xyXG4gICAgICAgIHNob3dEb3dubG9hZEljb246IHRydWUsXHJcbiAgICAgICAgc2hvd1ByZXZpZXdJY29uOiBmYWxzZSxcclxuICAgICAgICBzaG93UmVtb3ZlSWNvbjogdHJ1ZSxcclxuICAgICAgICBkb3dubG9hZEljb246IG51bGwsXHJcbiAgICAgICAgcmVtb3ZlSWNvbjogbnVsbCxcclxuICAgICAgICBwcmV2aWV3SWNvbjogbnVsbCxcclxuICAgICAgfSBhcyBhbnksXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBuZXdGaWxlTGlzdCA9IHRoaXMuc3RhdGUuZmlsZUxpc3Q7XHJcbiAgICBpZiAodXNlRGVmYXVsdExpc3QgJiYgZmlsZUxpc3QpIHtcclxuICAgICAgbmV3RmlsZUxpc3QgPSBmaWxlTGlzdDtcclxuICAgIH1cclxuICAgIGNvbnN0IG5ld3Byb3BzID0gb21pdCh0aGlzLnByb3BzLCBbXHJcbiAgICAgIFwic2xpY2VTaXplXCIsXHJcbiAgICAgIFwibWF4U2l6ZVwiLFxyXG4gICAgICBcIm9uQ29tcGxldGVcIixcclxuICAgICAgXCJvblByb2Nlc3NcIixcclxuICAgICAgXCJhbGxvd0ZpbGVTdWZmaXhcIixcclxuICAgICAgXCJ1c2VEZWZhdWx0TGlzdFwiLFxyXG4gICAgICBcImZpbGVDYXJkXCIsXHJcbiAgICAgIFwib25MaXN0Q2hhbmdlXCIsXHJcbiAgICBdKTtcclxuICAgIGxldCBkZWZhdWx0UHJvcHMgPSB7XHJcbiAgICAgIGN1c3RvbVJlcXVlc3Q6IHRoaXMuY3VzdG9tUmVxdWVzdC5iaW5kKHRoaXMpLFxyXG4gICAgICBtdWx0aXBsZTogdHJ1ZSxcclxuICAgICAgYmVmb3JlVXBsb2FkOiB0aGlzLmJlZm9yZVVwbG9hZC5iaW5kKHRoaXMpLFxyXG4gICAgfSBhcyBJVXBsb2FkUHJvcHM7XHJcbiAgICBpZiAoZmlsZUNhcmQpIHtcclxuICAgICAgZGVmYXVsdFByb3BzID0ge1xyXG4gICAgICAgIC4uLmRlZmF1bHRQcm9wcyxcclxuICAgICAgICBpdGVtUmVuZGVyOiAob3JpZ2luTm9kZSwgZmlsZTogYW55LCBjdXJyRmlsZUxpc3QpID0+IHtcclxuICAgICAgICAgIGNvbnN0IG5hbWUgPSBmaWxlLm5hbWUgfHwgZmlsZS5maWxlTmFtZTtcclxuICAgICAgICAgIGNvbnN0IG5hbWVzID0gbmFtZT8uc3BsaXQoXCIuXCIpO1xyXG4gICAgICAgICAgY29uc3Qgc3VmZml4ID0gbmFtZXMgPyBuYW1lc1tuYW1lcy5sZW5ndGggLSAxXSA6IFwiXCI7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiZmlsZS1pdGVtXCIpfT5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50XCIpLCB7XHJcbiAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50X2Vycm9yXCIpXTogZmlsZS5zdGF0dXMgPT0gXCJlcnJvclwiLFxyXG4gICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm1hcmstcGljdHVyZVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgIDxGaWxlSWNvbiBzdWZmaXg9e3N1ZmZpeH0gZmlsZUlkPXtmaWxlLmZpbGVJZH0gLz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5hbWVcIil9PlxyXG4gICAgICAgICAgICAgICAgICB7ZmlsZS5uYW1lIHx8IGZpbGUuZmlsZU5hbWV9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJpY29uXCIpfT5cclxuICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LnNob3dQcmV2aWV3SWNvbiAmJiBmaWxlLnN0YXR1cyA9PSBcImRvbmVcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblByZXZpZXcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uUHJldmlldyhmaWxlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aWV3RG9jdW1lbnQoZmlsZS5maWxlSWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgY3Vyc29yOiBcInBvaW50ZXJcIiB9fVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIHtzaG93VXBsb2FkTGlzdC5kb3dubG9hZEljb24gPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPEV5ZU91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3Quc2hvd0Rvd25sb2FkSWNvbiAmJiBmaWxlLnN0YXR1cyA9PSBcImRvbmVcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkRvd25sb2FkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkRvd25sb2FkKGZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkKGZpbGUuZmlsZUlkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGN1cnNvcjogXCJwb2ludGVyXCIgfX1cclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3QuZG93bmxvYWRJY29uID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93VXBsb2FkTGlzdC5kb3dubG9hZEljb25cclxuICAgICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxEb3dubG9hZE91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3Quc2hvd1JlbW92ZUljb24gJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMub25SZW1vdmUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uUmVtb3ZlKGZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25EZWxldGUoZmlsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBjdXJzb3I6IFwicG9pbnRlclwiIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvbiA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1VwbG9hZExpc3QuZG93bmxvYWRJY29uXHJcbiAgICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8RGVsZXRlT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICB7ZmlsZS5zdGF0dXMgPT0gXCJ1cGxvYWRpbmdcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwicHJvY2Vzc1wiKX0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInBlcmNlbnRcIil9XHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgd2lkdGg6IGZpbGUucGVyY2VudCArIFwiJVwiIH19XHJcbiAgICAgICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZGVmYXVsdFByb3BzID0ge1xyXG4gICAgICAgIC4uLmRlZmF1bHRQcm9wcyxcclxuICAgICAgICBvbkRvd25sb2FkOiAoZmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBkb3dubG9hZChmaWxlLmZpbGVJZCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBvblJlbW92ZTogKGZpbGUpID0+IHtcclxuICAgICAgICAgIHRoaXMub25EZWxldGUoZmlsZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBvblByZXZpZXc6IChmaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChmaWxlPy5maWxlSWQpIHtcclxuICAgICAgICAgICAgcHJldmlld0RvY3VtZW50KGZpbGUuZmlsZUlkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHNob3dVcGxvYWRMaXN0OiB7IC4uLnNob3dVcGxvYWRMaXN0IH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8PlxyXG4gICAgICAgIDxVcGxvYWRcclxuICAgICAgICAgIGZpbGVMaXN0PXt0aGlzLnN0YXRlLmZpbGVMaXN0fVxyXG4gICAgICAgICAgey4uLmRlZmF1bHRQcm9wc31cclxuICAgICAgICAgIHsuLi5uZXdwcm9wc31cclxuICAgICAgICAvPlxyXG4gICAgICA8Lz5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IHdpdGhaaExvY2FsZShOc2NVcGxvYWQpO1xyXG4iXX0=
package/lib/config.d.ts CHANGED
@@ -12,6 +12,14 @@ interface IComponentConfig {
12
12
  storePrefix?: string;
13
13
  mountElementId?: string;
14
14
  iconPrefix?: string;
15
+ tableTool?: {
16
+ show: boolean;
17
+ tools?: Array<string>;
18
+ };
19
+ modalButton?: {
20
+ okButtonProps?: object;
21
+ cancleButtonProps?: object;
22
+ };
15
23
  }
16
24
  export declare const setConfig: (config: IComponentConfig) => {
17
25
  loginProjectName: string;
@@ -27,6 +35,11 @@ export declare const setConfig: (config: IComponentConfig) => {
27
35
  storePrefix: string;
28
36
  mountElementId: string;
29
37
  iconPrefix: string;
38
+ tableTool: any;
39
+ modalButton: {
40
+ okButtonProps: {};
41
+ cancleButtonProps: {};
42
+ };
30
43
  } & IComponentConfig;
31
44
  declare const _default: () => IComponentConfig;
32
45
  export default _default;
package/lib/config.js CHANGED
@@ -27,9 +27,19 @@ var configData = {
27
27
  antdStyle: true,
28
28
  //input特殊字符全局变量
29
29
  allowChars: false,
30
+ //store前缀
30
31
  storePrefix: "",
32
+ //app-id
31
33
  mountElementId: "",
32
- iconPrefix: 'icon'
34
+ //icon前缀
35
+ iconPrefix: "icon",
36
+ //table工具栏
37
+ tableTool: {},
38
+ //modal按钮
39
+ modalButton: {
40
+ okButtonProps: {},
41
+ cancleButtonProps: {}
42
+ }
33
43
  };
34
44
  export var setConfig = function setConfig(config) {
35
45
  return Object.assign(configData, config);
@@ -37,4 +47,4 @@ export var setConfig = function setConfig(config) {
37
47
  export default (function () {
38
48
  return configData;
39
49
  });
40
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21wb25lbnRzL2NvbmZpZy50cyJdLCJuYW1lcyI6WyJjb25maWdEYXRhIiwibG9naW5Qcm9qZWN0TmFtZSIsImF1dGhvcml6YXRpb24iLCJsb2dpblBhdGgiLCJleGNlcHRpb241MDUiLCJleGNlcHRpb240MDMiLCJpY29uZm9udFVybCIsInZpZXdVcmwiLCJ2aWV3Qml6VXJsIiwiYW50ZFN0eWxlIiwiYWxsb3dDaGFycyIsInN0b3JlUHJlZml4IiwibW91bnRFbGVtZW50SWQiLCJpY29uUHJlZml4Iiwic2V0Q29uZmlnIiwiY29uZmlnIiwiT2JqZWN0IiwiYXNzaWduIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBaUJBLElBQUlBLFVBQVUsR0FBRztBQUNmO0FBQ0FDLEVBQUFBLGdCQUFnQixFQUFFLGVBRkg7QUFHZjtBQUNBQyxFQUFBQSxhQUFhLEVBQUUsb0JBSkE7QUFLZjtBQUNBQyxFQUFBQSxTQUFTLEVBQUUsUUFOSTtBQU9mO0FBQ0FDLEVBQUFBLFlBQVksRUFBRSxnQkFSQztBQVNmO0FBQ0FDLEVBQUFBLFlBQVksRUFBRSxnQkFWQztBQVdmO0FBQ0FDLEVBQUFBLFdBQVcsRUFBRSxFQVpFO0FBYWY7QUFDQUMsRUFBQUEsT0FBTyxFQUFFLHNDQWRNO0FBZWY7QUFDQUMsRUFBQUEsVUFBVSxFQUFFLDBDQWhCRztBQWlCZjtBQUNBQyxFQUFBQSxTQUFTLEVBQUUsSUFsQkk7QUFtQmY7QUFDQUMsRUFBQUEsVUFBVSxFQUFFLEtBcEJHO0FBcUJmQyxFQUFBQSxXQUFXLEVBQUUsRUFyQkU7QUFzQmZDLEVBQUFBLGNBQWMsRUFBRSxFQXRCRDtBQXVCZkMsRUFBQUEsVUFBVSxFQUFDO0FBdkJJLENBQWpCO0FBMEJBLE9BQU8sSUFBTUMsU0FBUyxHQUFHLFNBQVpBLFNBQVksQ0FBQ0MsTUFBRDtBQUFBLFNBQ3ZCQyxNQUFNLENBQUNDLE1BQVAsQ0FBY2pCLFVBQWQsRUFBMEJlLE1BQTFCLENBRHVCO0FBQUEsQ0FBbEI7QUFFUCxnQkFBZTtBQUFBLFNBQXdCZixVQUF4QjtBQUFBLENBQWYiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBARGVzY3JpcHR0aW9uOlxyXG4gKiBAdmVyc2lvbjpcclxuICogQEF1dGhvcjogcnh6aHVcclxuICogQERhdGU6IDIwMjEtMDMtMjUgMTA6MzQ6NTNcclxuICogQExhc3RFZGl0b3JzOiByeHpodVxyXG4gKiBATGFzdEVkaXRUaW1lOiAyMDIxLTA0LTIzIDE2OjQ1OjAzXHJcbiAqL1xyXG5pbnRlcmZhY2UgSUNvbXBvbmVudENvbmZpZyB7XHJcbiAgbG9naW5Qcm9qZWN0TmFtZT86IHN0cmluZztcclxuICBhdXRob3JpemF0aW9uPzogc3RyaW5nO1xyXG4gIGxvZ2luUGF0aD86IHN0cmluZztcclxuICBleGNlcHRpb241MDU/OiBzdHJpbmc7XHJcbiAgZXhjZXB0aW9uNDAzPzogc3RyaW5nO1xyXG4gIGljb25mb250VXJsPzogc3RyaW5nO1xyXG4gIHZpZXdVcmw/OiBzdHJpbmc7XHJcbiAgdmlld0JpelVybD86IHN0cmluZztcclxuICBhbnRkU3R5bGU/OiBib29sZWFuO1xyXG4gIGFsbG93Q2hhcnM/OiBib29sZWFuO1xyXG4gIHN0b3JlUHJlZml4Pzogc3RyaW5nO1xyXG4gIG1vdW50RWxlbWVudElkPzogc3RyaW5nO1xyXG4gIGljb25QcmVmaXg/OnN0cmluZ1xyXG59XHJcblxyXG5sZXQgY29uZmlnRGF0YSA9IHtcclxuICAvL+eZu+W9leeVjOmdoumhueebruWQjeensFxyXG4gIGxvZ2luUHJvamVjdE5hbWU6IFwiTlNDIEZyYW1ld29ya1wiLFxyXG4gIC8v57O757uf5oyH57q577yM55m75b2V5pe25YCZ6ZyA6KaB5Lyg6YCSXHJcbiAgYXV0aG9yaXphdGlvbjogXCJCYXNpYyBibk5qT201ell3PT1cIixcclxuICAvL+eZu+mZhueVjOmdolVSTFxyXG4gIGxvZ2luUGF0aDogXCIvbG9naW5cIixcclxuICAvLzUwNemUmeivr1VSTFxyXG4gIGV4Y2VwdGlvbjUwNTogXCIvZXhjZXB0aW9uLzUwMFwiLFxyXG4gIC8vNDAz6ZSZ6K+vVVJMXHJcbiAgZXhjZXB0aW9uNDAzOiBcIi9leGNlcHRpb24vNDAzXCIsXHJcbiAgLy/pmL/ph4zlm77moIflupNVUkxcclxuICBpY29uZm9udFVybDogXCJcIixcclxuICAvL+WQjuWPsOezu+e7n+inhuWbvuiOt+WPluWcsOWdgFxyXG4gIHZpZXdVcmw6IFwiL2pxdWljay1zeXN0ZW0vZGljdC9kaWN0aW9uYXJ5P2NvZGU9XCIsXHJcbiAgLy/lkI7lj7DkuJrliqHop4blm77ojrflj5blnLDlnYBcclxuICB2aWV3Qml6VXJsOiBcIi9qcXVpY2stc3lzdGVtL2RpY3QtYml6L2RpY3Rpb25hcnk/Y29kZT1cIixcclxuICAvL+m7mOiupGFudGTmoLflvI9cclxuICBhbnRkU3R5bGU6IHRydWUsXHJcbiAgLy9pbnB1dOeJueauiuWtl+espuWFqOWxgOWPmOmHj1xyXG4gIGFsbG93Q2hhcnM6IGZhbHNlLFxyXG4gIHN0b3JlUHJlZml4OiBcIlwiLFxyXG4gIG1vdW50RWxlbWVudElkOiBcIlwiLFxyXG4gIGljb25QcmVmaXg6J2ljb24nXHJcbn07XHJcblxyXG5leHBvcnQgY29uc3Qgc2V0Q29uZmlnID0gKGNvbmZpZzogSUNvbXBvbmVudENvbmZpZykgPT5cclxuICBPYmplY3QuYXNzaWduKGNvbmZpZ0RhdGEsIGNvbmZpZyk7XHJcbmV4cG9ydCBkZWZhdWx0ICgpOiBJQ29tcG9uZW50Q29uZmlnID0+IGNvbmZpZ0RhdGE7XHJcbiJdfQ==
50
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21wb25lbnRzL2NvbmZpZy50cyJdLCJuYW1lcyI6WyJjb25maWdEYXRhIiwibG9naW5Qcm9qZWN0TmFtZSIsImF1dGhvcml6YXRpb24iLCJsb2dpblBhdGgiLCJleGNlcHRpb241MDUiLCJleGNlcHRpb240MDMiLCJpY29uZm9udFVybCIsInZpZXdVcmwiLCJ2aWV3Qml6VXJsIiwiYW50ZFN0eWxlIiwiYWxsb3dDaGFycyIsInN0b3JlUHJlZml4IiwibW91bnRFbGVtZW50SWQiLCJpY29uUHJlZml4IiwidGFibGVUb29sIiwibW9kYWxCdXR0b24iLCJva0J1dHRvblByb3BzIiwiY2FuY2xlQnV0dG9uUHJvcHMiLCJzZXRDb25maWciLCJjb25maWciLCJPYmplY3QiLCJhc3NpZ24iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFtQkEsSUFBSUEsVUFBVSxHQUFHO0FBQ2Y7QUFDQUMsRUFBQUEsZ0JBQWdCLEVBQUUsZUFGSDtBQUdmO0FBQ0FDLEVBQUFBLGFBQWEsRUFBRSxvQkFKQTtBQUtmO0FBQ0FDLEVBQUFBLFNBQVMsRUFBRSxRQU5JO0FBT2Y7QUFDQUMsRUFBQUEsWUFBWSxFQUFFLGdCQVJDO0FBU2Y7QUFDQUMsRUFBQUEsWUFBWSxFQUFFLGdCQVZDO0FBV2Y7QUFDQUMsRUFBQUEsV0FBVyxFQUFFLEVBWkU7QUFhZjtBQUNBQyxFQUFBQSxPQUFPLEVBQUUsc0NBZE07QUFlZjtBQUNBQyxFQUFBQSxVQUFVLEVBQUUsMENBaEJHO0FBaUJmO0FBQ0FDLEVBQUFBLFNBQVMsRUFBRSxJQWxCSTtBQW1CZjtBQUNBQyxFQUFBQSxVQUFVLEVBQUUsS0FwQkc7QUFxQmY7QUFDQUMsRUFBQUEsV0FBVyxFQUFFLEVBdEJFO0FBdUJmO0FBQ0FDLEVBQUFBLGNBQWMsRUFBRSxFQXhCRDtBQXlCZjtBQUNBQyxFQUFBQSxVQUFVLEVBQUUsTUExQkc7QUEyQmY7QUFDQUMsRUFBQUEsU0FBUyxFQUFFLEVBNUJJO0FBNkJmO0FBQ0FDLEVBQUFBLFdBQVcsRUFBRTtBQUFFQyxJQUFBQSxhQUFhLEVBQUUsRUFBakI7QUFBcUJDLElBQUFBLGlCQUFpQixFQUFFO0FBQXhDO0FBOUJFLENBQWpCO0FBaUNBLE9BQU8sSUFBTUMsU0FBUyxHQUFHLFNBQVpBLFNBQVksQ0FBQ0MsTUFBRDtBQUFBLFNBQ3ZCQyxNQUFNLENBQUNDLE1BQVAsQ0FBY3JCLFVBQWQsRUFBMEJtQixNQUExQixDQUR1QjtBQUFBLENBQWxCO0FBRVAsZ0JBQWU7QUFBQSxTQUF3Qm5CLFVBQXhCO0FBQUEsQ0FBZiIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIEBEZXNjcmlwdHRpb246XHJcbiAqIEB2ZXJzaW9uOlxyXG4gKiBAQXV0aG9yOiByeHpodVxyXG4gKiBARGF0ZTogMjAyMS0wMy0yNSAxMDozNDo1M1xyXG4gKiBATGFzdEVkaXRvcnM6IHJ4emh1XHJcbiAqIEBMYXN0RWRpdFRpbWU6IDIwMjEtMDQtMjMgMTY6NDU6MDNcclxuICovXHJcbmludGVyZmFjZSBJQ29tcG9uZW50Q29uZmlnIHtcclxuICBsb2dpblByb2plY3ROYW1lPzogc3RyaW5nO1xyXG4gIGF1dGhvcml6YXRpb24/OiBzdHJpbmc7XHJcbiAgbG9naW5QYXRoPzogc3RyaW5nO1xyXG4gIGV4Y2VwdGlvbjUwNT86IHN0cmluZztcclxuICBleGNlcHRpb240MDM/OiBzdHJpbmc7XHJcbiAgaWNvbmZvbnRVcmw/OiBzdHJpbmc7XHJcbiAgdmlld1VybD86IHN0cmluZztcclxuICB2aWV3Qml6VXJsPzogc3RyaW5nO1xyXG4gIGFudGRTdHlsZT86IGJvb2xlYW47XHJcbiAgYWxsb3dDaGFycz86IGJvb2xlYW47XHJcbiAgc3RvcmVQcmVmaXg/OiBzdHJpbmc7XHJcbiAgbW91bnRFbGVtZW50SWQ/OiBzdHJpbmc7XHJcbiAgaWNvblByZWZpeD86IHN0cmluZztcclxuICB0YWJsZVRvb2w/OiB7IHNob3c6IGJvb2xlYW47IHRvb2xzPzogQXJyYXk8c3RyaW5nPiB9O1xyXG4gIG1vZGFsQnV0dG9uPzogeyBva0J1dHRvblByb3BzPzogb2JqZWN0OyBjYW5jbGVCdXR0b25Qcm9wcz86IG9iamVjdCB9O1xyXG59XHJcblxyXG5sZXQgY29uZmlnRGF0YSA9IHtcclxuICAvL+eZu+W9leeVjOmdoumhueebruWQjeensFxyXG4gIGxvZ2luUHJvamVjdE5hbWU6IFwiTlNDIEZyYW1ld29ya1wiLFxyXG4gIC8v57O757uf5oyH57q577yM55m75b2V5pe25YCZ6ZyA6KaB5Lyg6YCSXHJcbiAgYXV0aG9yaXphdGlvbjogXCJCYXNpYyBibk5qT201ell3PT1cIixcclxuICAvL+eZu+mZhueVjOmdolVSTFxyXG4gIGxvZ2luUGF0aDogXCIvbG9naW5cIixcclxuICAvLzUwNemUmeivr1VSTFxyXG4gIGV4Y2VwdGlvbjUwNTogXCIvZXhjZXB0aW9uLzUwMFwiLFxyXG4gIC8vNDAz6ZSZ6K+vVVJMXHJcbiAgZXhjZXB0aW9uNDAzOiBcIi9leGNlcHRpb24vNDAzXCIsXHJcbiAgLy/pmL/ph4zlm77moIflupNVUkxcclxuICBpY29uZm9udFVybDogXCJcIixcclxuICAvL+WQjuWPsOezu+e7n+inhuWbvuiOt+WPluWcsOWdgFxyXG4gIHZpZXdVcmw6IFwiL2pxdWljay1zeXN0ZW0vZGljdC9kaWN0aW9uYXJ5P2NvZGU9XCIsXHJcbiAgLy/lkI7lj7DkuJrliqHop4blm77ojrflj5blnLDlnYBcclxuICB2aWV3Qml6VXJsOiBcIi9qcXVpY2stc3lzdGVtL2RpY3QtYml6L2RpY3Rpb25hcnk/Y29kZT1cIixcclxuICAvL+m7mOiupGFudGTmoLflvI9cclxuICBhbnRkU3R5bGU6IHRydWUsXHJcbiAgLy9pbnB1dOeJueauiuWtl+espuWFqOWxgOWPmOmHj1xyXG4gIGFsbG93Q2hhcnM6IGZhbHNlLFxyXG4gIC8vc3RvcmXliY3nvIBcclxuICBzdG9yZVByZWZpeDogXCJcIixcclxuICAvL2FwcC1pZFxyXG4gIG1vdW50RWxlbWVudElkOiBcIlwiLFxyXG4gIC8vaWNvbuWJjee8gFxyXG4gIGljb25QcmVmaXg6IFwiaWNvblwiLFxyXG4gIC8vdGFibGXlt6XlhbfmoI9cclxuICB0YWJsZVRvb2w6IHt9IGFzIGFueSxcclxuICAvL21vZGFs5oyJ6ZKuXHJcbiAgbW9kYWxCdXR0b246IHsgb2tCdXR0b25Qcm9wczoge30sIGNhbmNsZUJ1dHRvblByb3BzOiB7fSB9LFxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHNldENvbmZpZyA9IChjb25maWc6IElDb21wb25lbnRDb25maWcpID0+XHJcbiAgT2JqZWN0LmFzc2lnbihjb25maWdEYXRhLCBjb25maWcpO1xyXG5leHBvcnQgZGVmYXVsdCAoKTogSUNvbXBvbmVudENvbmZpZyA9PiBjb25maWdEYXRhO1xyXG4iXX0=