nsc-react-component 2.0.18 → 2.1.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.
@@ -97,7 +97,8 @@ var NSCCheckboxGroup = /*#__PURE__*/function (_PureComponent) {
97
97
  _props$viewtype = props.viewtype,
98
98
  viewtype = _props$viewtype === void 0 ? "system" : _props$viewtype;
99
99
  var viewname = store.viewname;
100
- var valueField = viewname ? "dictKey" : "value";
100
+ var valueField = props.valueField;
101
+ valueField = valueField ? valueField : viewname ? "dictKey" : "value";
101
102
 
102
103
  var _config = config(),
103
104
  viewUrl = _config.viewUrl,
@@ -207,11 +208,14 @@ var NSCCheckboxGroup = /*#__PURE__*/function (_PureComponent) {
207
208
  _createClass(NSCCheckboxGroup, [{
208
209
  key: "convertData",
209
210
  value: function convertData(data) {
210
- var _this$props$store = this.props.store,
211
- store = _this$props$store === void 0 ? {} : _this$props$store;
211
+ var _this$props = this.props,
212
+ _this$props$store = _this$props.store,
213
+ store = _this$props$store === void 0 ? {} : _this$props$store,
214
+ valueField = _this$props.valueField,
215
+ labelField = _this$props.labelField;
212
216
  var viewname = store.viewname;
213
- var valueField = viewname ? "dictKey" : "value";
214
- var labelField = viewname ? "dictValue" : "label";
217
+ valueField = valueField ? valueField : viewname ? "dictKey" : "value";
218
+ labelField = labelField ? labelField : viewname ? "dictValue" : "label";
215
219
  var dataSoure = [];
216
220
 
217
221
  var _loop = function _loop(i) {
@@ -286,10 +290,10 @@ var NSCCheckboxGroup = /*#__PURE__*/function (_PureComponent) {
286
290
  }, {
287
291
  key: "componentDidMount",
288
292
  value: function componentDidMount() {
289
- var _this$props = this.props,
290
- data = _this$props.data,
291
- options = _this$props.options,
292
- children = _this$props.children;
293
+ var _this$props2 = this.props,
294
+ data = _this$props2.data,
295
+ options = _this$props2.options,
296
+ children = _this$props2.children;
293
297
 
294
298
  if (!children && (data || options)) {
295
299
  this.setState({
@@ -302,9 +306,9 @@ var NSCCheckboxGroup = /*#__PURE__*/function (_PureComponent) {
302
306
  key: "componentDidUpdate",
303
307
  value: function componentDidUpdate() {
304
308
  var dataStore = this.state.dataStore;
305
- var _this$props2 = this.props,
306
- data = _this$props2.data,
307
- options = _this$props2.options;
309
+ var _this$props3 = this.props,
310
+ data = _this$props3.data,
311
+ options = _this$props3.options;
308
312
  var newData = data ? data : options;
309
313
 
310
314
  if (data || options) {
@@ -319,10 +323,10 @@ var NSCCheckboxGroup = /*#__PURE__*/function (_PureComponent) {
319
323
  }, {
320
324
  key: "render",
321
325
  value: function render() {
322
- var _this$props3 = this.props,
323
- data = _this$props3.data,
324
- options = _this$props3.options,
325
- params = _objectWithoutProperties(_this$props3, _excluded2);
326
+ var _this$props4 = this.props,
327
+ data = _this$props4.data,
328
+ options = _this$props4.options,
329
+ params = _objectWithoutProperties(_this$props4, _excluded2);
326
330
 
327
331
  var CheckBoxProps = omit(_objectSpread({}, params), ["store", "valueField", "labelField", "data", "onChange", "addData", "deleteData"]);
328
332
  return /*#__PURE__*/React.createElement(_Checkbox.Group, _extends({
@@ -337,4 +341,4 @@ var NSCCheckboxGroup = /*#__PURE__*/function (_PureComponent) {
337
341
  }(PureComponent);
338
342
 
339
343
  export default NSCCheckboxGroup;
340
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvY2hlY2tib3gvQ2hlY2tib3hHcm91cC50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJQdXJlQ29tcG9uZW50IiwiU3RvcmUiLCJ1dGlscyIsIm9taXQiLCJjb25maWciLCJOU0NDaGVja2JveEdyb3VwIiwicHJvcHMiLCJkYXRhU291cmNlIiwiZGF0YVN0b3JlIiwidmFsdWUiLCJfdGhpcyIsInN0b3JlIiwib3B0aW9ucyIsImRhdGEiLCJjaGlsZHJlbiIsImFkZERhdGEiLCJkZWxldGVEYXRhIiwidmlld3R5cGUiLCJ2aWV3bmFtZSIsInZhbHVlRmllbGQiLCJ2aWV3VXJsIiwidmlld0JpelVybCIsInJlcXVlc3RWaWV3VXJsIiwidXJsIiwibGlzdGVuZXJzIiwibGlzdGVuZXJzUG9wcyIsImNhY2hlZCIsImNhY2hlS2V5Iiwic3RvcmVzIiwiRXJyb3IiLCJnZXRBbGxEYXRhIiwiQXJyYXkiLCJpc0FycmF5IiwibmV3RGF0YSIsImxlbmd0aCIsInZhbHVlRmllbGRzIiwic3BsaXQiLCJtYXAiLCJpdGVtIiwiaSIsInYiLCJpbmRleCIsImluZGV4T2YiLCJzcGxpY2UiLCJzdG9yZVByb3BzIiwibW9kZWwiLCJjb21wb25lbnQiLCJvbkJlZm9yZUxvYWQiLCJjYWxsYmFjayIsImxvYWQiLCJtb2RlbERhdGEiLCJjb252ZXJ0RGF0YSIsInNldFN0YXRlIiwiZGF0YUNoYW5nZWQiLCJpc0NhY2hlZCIsImlzQ2FjaGVLZXkiLCJhdXRvTG9hZCIsImxhYmVsRmllbGQiLCJkYXRhU291cmUiLCJvYmoiLCJsYWJlbCIsImxhYmVsRmllbGRzIiwibCIsImRpc2FibGVkIiwicHVzaCIsImNoZWNrZWRWYWx1ZSIsIm9uQ2hhbmdlIiwic3RhdGUiLCJKU09OIiwic3RyaW5naWZ5IiwicGFyYW1zIiwiQ2hlY2tCb3hQcm9wcyIsImJpbmQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QSxVQUEwQjBELE1BQTFCOztBQUNBLFVBQU1DLGFBQWEsR0FBR3BFLElBQUksbUJBQU1tRSxNQUFOLEdBQWdCLENBQ3hDLE9BRHdDLEVBRXhDLFlBRndDLEVBR3hDLFlBSHdDLEVBSXhDLE1BSndDLEVBS3hDLFVBTHdDLEVBTXhDLFNBTndDLEVBT3hDLFlBUHdDLENBQWhCLENBQTFCO0FBU0EsMEJBQ0UsOEJBQVUsS0FBVjtBQUNFLFFBQUEsS0FBSyxFQUFFLEtBQUtILEtBQUwsQ0FBVzFELEtBRHBCO0FBRUUsUUFBQSxPQUFPLEVBQUUsS0FBSzBELEtBQUwsQ0FBVzVELFVBRnRCO0FBR0UsUUFBQSxRQUFRLEVBQUUsS0FBSzJELFFBQUwsQ0FBY00sSUFBZCxDQUFtQixJQUFuQjtBQUhaLFNBSU1ELGFBSk4sRUFERjtBQVFEOzs7O0VBak40QnZFLGE7O0FBb04vQixlQUFlSyxnQkFBZiIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIEBEZXNjcmlwdHRpb246XHJcbiAqIEB2ZXJzaW9uOlxyXG4gKiBAQXV0aG9yOiByeHpodVxyXG4gKiBARGF0ZTogMjAyMS0wNC0xNCAwODo1OToxOVxyXG4gKiBATGFzdEVkaXRvcnM6IHJ4emh1XHJcbiAqIEBMYXN0RWRpdFRpbWU6IDIwMjEtMDQtMjMgMTY6NDY6MzNcclxuICovXHJcbmltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50IH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IENoZWNrYm94LCBDaGVja2JveFByb3BzIH0gZnJvbSBcImFudGRcIjtcclxuaW1wb3J0IFN0b3JlLCB7IFN0b3JlUHJvcHMgfSBmcm9tIFwiQGJqLW5zYy9tc25cIjtcclxuaW1wb3J0IHsgdXRpbHMgfSBmcm9tIFwiQGJqLW5zYy9tc24vbGliL3V0aWxzXCI7XHJcbmltcG9ydCBvbWl0IGZyb20gXCJvbWl0LmpzXCI7XHJcbmltcG9ydCBjb25maWcgZnJvbSBcIi4uLy4uL2NvbmZpZ1wiO1xyXG5cclxuaW50ZXJmYWNlIElDaGVja2JveEdyb3VwUHJvcHMgZXh0ZW5kcyBDaGVja2JveFByb3BzIHtcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgZGF0YT86IEFycmF5PHN0cmluZyB8IE9iamVjdD47IC8v6buY6K6k5pWw5o2uXHJcbiAgbGFiZWxGaWVsZD86IHN0cmluZztcclxuICB2YWx1ZUZpZWxkPzogc3RyaW5nO1xyXG4gIGFkZERhdGE/OiBBcnJheTxzdHJpbmcgfCBPYmplY3Q+O1xyXG4gIGRlbGV0ZURhdGE/OiBBcnJheTxzdHJpbmc+O1xyXG4gIFtwcm9wTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5jbGFzcyBOU0NDaGVja2JveEdyb3VwIGV4dGVuZHMgUHVyZUNvbXBvbmVudDxJQ2hlY2tib3hHcm91cFByb3BzPiB7XHJcbiAgc3RhdGUgPSB7XHJcbiAgICBkYXRhU291cmNlOiBbXSxcclxuICAgIGRhdGFTdG9yZTogW10sXHJcbiAgICB2YWx1ZTogW10sXHJcbiAgfTtcclxuICBzdG9yZSA9IHt9IGFzIFN0b3JlUHJvcHM7XHJcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgIHN1cGVyKHByb3BzKTtcclxuICAgIGNvbnN0IF90aGlzID0gdGhpcztcclxuICAgIGNvbnN0IHtcclxuICAgICAgc3RvcmUgPSB7fSxcclxuICAgICAgb3B0aW9ucyxcclxuICAgICAgZGF0YSxcclxuICAgICAgY2hpbGRyZW4sXHJcbiAgICAgIGFkZERhdGEgPSBbXSxcclxuICAgICAgZGVsZXRlRGF0YSA9IFtdLFxyXG4gICAgICB2aWV3dHlwZSA9IFwic3lzdGVtXCIsXHJcbiAgICB9ID0gcHJvcHM7XHJcbiAgICBjb25zdCB7IHZpZXduYW1lIH0gPSBzdG9yZTtcclxuICAgIGNvbnN0IHZhbHVlRmllbGQgPSB2aWV3bmFtZSA/IFwiZGljdEtleVwiIDogXCJ2YWx1ZVwiO1xyXG4gICAgbGV0IHsgdmlld1VybCwgdmlld0JpelVybCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgcmVxdWVzdFZpZXdVcmwgPSB2aWV3dHlwZSA9PSBcInN5c3RlbVwiID8gdmlld1VybCA6IHZpZXdCaXpVcmw7XHJcbiAgICBpZiAoIWNoaWxkcmVuKSB7XHJcbiAgICAgIGNvbnN0IHtcclxuICAgICAgICB1cmwsXHJcbiAgICAgICAgbGlzdGVuZXJzOiBsaXN0ZW5lcnNQb3BzID0ge30sXHJcbiAgICAgICAgdmlld25hbWUsXHJcbiAgICAgICAgY2FjaGVkLFxyXG4gICAgICAgIGNhY2hlS2V5LFxyXG5cclxuICAgICAgICAuLi5zdG9yZXNcclxuICAgICAgfSA9IHN0b3JlO1xyXG4gICAgICBpZiAoIXVybCAmJiAhb3B0aW9ucyAmJiAhZGF0YSAmJiAhdmlld25hbWUpXHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidXJs44CBdmlld25hbWXjgIFkYXRh5ZKMb3B0aW9uc+S4jeiDvemDveS4uuepuu+8gVwiKTtcclxuICAgICAgY29uc3QgZ2V0QWxsRGF0YSA9IChkYXRhKSA9PiB7XHJcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGRhdGEpKSB7XHJcbiAgICAgICAgICByZXR1cm4gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBuZXdEYXRhID0gWy4uLmRhdGFdO1xyXG4gICAgICAgIGlmIChhZGREYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIG5ld0RhdGEgPSBbLi4uYWRkRGF0YSwgLi4ubmV3RGF0YV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkZWxldGVEYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIGNvbnN0IHZhbHVlRmllbGRzOiBhbnkgPSB2YWx1ZUZpZWxkLnNwbGl0KFwiLFwiKTtcclxuICAgICAgICAgIG5ld0RhdGEubWFwKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gXCJvYmplY3RcIikge1xyXG4gICAgICAgICAgICAgIGxldCB2YWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgdmFsdWVGaWVsZHMubWFwKCh2LCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdmFsdWUgPSBpbmRleCA9PSAwID8gdmFsdWUgKyBpdGVtW3ZdIDogdmFsdWUgKyBcIixcIiArIGl0ZW1bdl07XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgaWYgKGRlbGV0ZURhdGEuaW5kZXhPZih2YWx1ZSkgPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgbmV3RGF0YS5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBpdGVtID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGRlbGV0ZURhdGEuaW5kZXhPZihpdGVtKSA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICBuZXdEYXRhLnNwbGljZShpLCAxKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbmV3RGF0YTtcclxuICAgICAgfTtcclxuICAgICAgdmFyIHN0b3JlUHJvcHMgPSB7XHJcbiAgICAgICAgbW9kZWw6IFwibW9kZWxcIixcclxuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgICAgbGlzdGVuZXJzOiB7XHJcbiAgICAgICAgICBvbkJlZm9yZUxvYWQ6IGZ1bmN0aW9uIChzdG9yZSwgb3B0aW9ucykge1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQb3BzLm9uQmVmb3JlTG9hZCwgX3RoaXMsIFtzdG9yZSwgb3B0aW9uc10pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGxvYWQ6IGZ1bmN0aW9uIChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSB7XHJcbiAgICAgICAgICAgIGxldCBkYXRhU291cmNlID0gX3RoaXMuY29udmVydERhdGEoZ2V0QWxsRGF0YShkYXRhKSk7XHJcbiAgICAgICAgICAgIF90aGlzLnNldFN0YXRlKHsgZGF0YVNvdXJjZTogZGF0YVNvdXJjZSB9KTtcclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUG9wcy5sb2FkLCBfdGhpcywgW2RhdGEsIG1vZGVsRGF0YSwgc3RvcmVdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBkYXRhQ2hhbmdlZDogZnVuY3Rpb24gKGRhdGEsIG1vZGVsRGF0YSwgc3RvcmUpIHtcclxuICAgICAgICAgICAgX3RoaXMuc2V0U3RhdGUoeyBkYXRhU291cmNlOiBfdGhpcy5jb252ZXJ0RGF0YShnZXRBbGxEYXRhKGRhdGEpKSB9KTtcclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUG9wcy5kYXRhQ2hhbmdlZCwgX3RoaXMsIFtcclxuICAgICAgICAgICAgICBkYXRhLFxyXG4gICAgICAgICAgICAgIG1vZGVsRGF0YSxcclxuICAgICAgICAgICAgICBzdG9yZSxcclxuICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4uc3RvcmVzLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLnN0b3JlID0gbmV3IFN0b3JlKHN0b3JlUHJvcHMpO1xyXG4gICAgICBpZiAoKHZpZXduYW1lIHx8IHVybCkgJiYgZGF0YSA9PSBudWxsICYmIG9wdGlvbnMgPT0gbnVsbCkge1xyXG4gICAgICAgIGxldCBpc0NhY2hlZCA9IGNhY2hlZDtcclxuICAgICAgICBsZXQgaXNDYWNoZUtleSA9IGNhY2hlS2V5O1xyXG4gICAgICAgIGlmICh2aWV3bmFtZSkge1xyXG4gICAgICAgICAgaWYgKHR5cGVvZiBjYWNoZWQgIT09IFwiYm9vbGVhblwiKSB7XHJcbiAgICAgICAgICAgIGlzQ2FjaGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgaXNDYWNoZUtleSA9IGlzQ2FjaGVLZXkgPyBpc0NhY2hlS2V5IDogdmlld25hbWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHN0b3JlUHJvcHMgPSB7XHJcbiAgICAgICAgICAuLi57XHJcbiAgICAgICAgICAgIGF1dG9Mb2FkOiB0cnVlLFxyXG4gICAgICAgICAgICB1cmw6IHVybCB8fCByZXF1ZXN0Vmlld1VybCArIHZpZXduYW1lLCAvL+ivu+Wtl+WFuO+8jHVybOWbuuWumu+8jHZpZXduYW1lXHJcbiAgICAgICAgICAgIGNhY2hlZDogaXNDYWNoZWQsXHJcbiAgICAgICAgICAgIGNhY2hlS2V5OiBpc0NhY2hlS2V5LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLnN0b3JlUHJvcHMsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN0b3JlID0gbmV3IFN0b3JlKHN0b3JlUHJvcHMpO1xyXG4gICAgfVxyXG4gIH1cclxuICBjb252ZXJ0RGF0YShkYXRhKSB7XHJcbiAgICBsZXQgeyBzdG9yZSA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyB2aWV3bmFtZSB9ID0gc3RvcmU7XHJcbiAgICBsZXQgdmFsdWVGaWVsZCA9IHZpZXduYW1lID8gXCJkaWN0S2V5XCIgOiBcInZhbHVlXCI7XHJcbiAgICBsZXQgbGFiZWxGaWVsZCA9IHZpZXduYW1lID8gXCJkaWN0VmFsdWVcIiA6IFwibGFiZWxcIjtcclxuICAgIGxldCBkYXRhU291cmUgPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAodHlwZW9mIGRhdGFbaV0gPT09IFwib2JqZWN0XCIpIHtcclxuICAgICAgICBsZXQgb2JqID0geyAuLi5kYXRhW2ldIH07XHJcbiAgICAgICAgbGV0IHZhbHVlID0gXCJcIjtcclxuICAgICAgICBpZiAodmFsdWVGaWVsZC5zcGxpdChcIixcIikubGVuZ3RoID09IDEpIHtcclxuICAgICAgICAgIHZhbHVlID0gZGF0YVtpXVt2YWx1ZUZpZWxkXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgdmFsdWVGaWVsZHM6IGFueSA9IHZhbHVlRmllbGQuc3BsaXQoXCIsXCIpO1xyXG4gICAgICAgICAgdmFsdWVGaWVsZHMubWFwKCh2LCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IGluZGV4ID09IDAgPyB2YWx1ZSArIGRhdGFbaV1bdl0gOiB2YWx1ZSArIFwiLFwiICsgZGF0YVtpXVt2XTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgbGFiZWwgPSBcIlwiO1xyXG4gICAgICAgIGlmIChsYWJlbEZpZWxkLnNwbGl0KFwiLFwiKS5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgbGFiZWwgPSBkYXRhW2ldW2xhYmVsRmllbGRdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBsYWJlbEZpZWxkczogYW55ID0gbGFiZWxGaWVsZC5zcGxpdChcIixcIik7XHJcbiAgICAgICAgICBsYWJlbEZpZWxkcy5tYXAoKGwsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIGxhYmVsID0gaW5kZXggPT0gMCA/IGxhYmVsICsgZGF0YVtpXVtsXSA6IGxhYmVsICsgXCItXCIgKyBkYXRhW2ldW2xdO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG9iai5sYWJlbCA9IGxhYmVsO1xyXG4gICAgICAgIG9iai52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgIG9iai5kaXNhYmxlZCA9IGRhdGFbaV0uZGlzYWJsZWQgPyBkYXRhW2ldLmRpc2FibGVkIDogZmFsc2U7XHJcbiAgICAgICAgZGF0YVNvdXJlLnB1c2gob2JqKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBsZXQgb2JqID0ge30gYXMgeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogYW55OyBkaXNhYmxlZD86IGJvb2xlYW4gfTtcclxuICAgICAgICBvYmoubGFiZWwgPSBkYXRhW2ldO1xyXG4gICAgICAgIG9iai52YWx1ZSA9IGRhdGFbaV07XHJcbiAgICAgICAgb2JqLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgZGF0YVNvdXJlLnB1c2gob2JqKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRhdGFTb3VyZTtcclxuICB9XHJcbiAgb25DaGFuZ2UoY2hlY2tlZFZhbHVlKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgdmFsdWU6IGNoZWNrZWRWYWx1ZSxcclxuICAgIH0pO1xyXG4gICAgY29uc3QgeyBvbkNoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmIChvbkNoYW5nZSkge1xyXG4gICAgICBvbkNoYW5nZShjaGVja2VkVmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRWYWx1ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXRlLnZhbHVlO1xyXG4gIH1cclxuICBzZXRWYWx1ZSh2YWx1ZSkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHZhbHVlOiB2YWx1ZSxcclxuICAgIH0pO1xyXG4gIH1cclxuICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgIGNvbnN0IHsgZGF0YSwgb3B0aW9ucywgY2hpbGRyZW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIWNoaWxkcmVuICYmIChkYXRhIHx8IG9wdGlvbnMpKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGRhdGFTb3VyY2U6IHRoaXMuY29udmVydERhdGEoZGF0YSA/IGRhdGEgOiBvcHRpb25zKSxcclxuICAgICAgICBkYXRhU3RvcmU6IGRhdGEgPyBkYXRhIDogb3B0aW9ucyxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNvbXBvbmVudERpZFVwZGF0ZSgpIHtcclxuICAgIGNvbnN0IHsgZGF0YVN0b3JlIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgeyBkYXRhLCBvcHRpb25zIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgbmV3RGF0YSA9IGRhdGEgPyBkYXRhIDogb3B0aW9ucztcclxuICAgIGlmIChkYXRhIHx8IG9wdGlvbnMpIHtcclxuICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KGRhdGFTdG9yZSkgIT09IEpTT04uc3RyaW5naWZ5KG5ld0RhdGEpKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICBkYXRhU291cmNlOiB0aGlzLmNvbnZlcnREYXRhKG5ld0RhdGEpLFxyXG4gICAgICAgICAgZGF0YVN0b3JlOiBuZXdEYXRhLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7IGRhdGEsIG9wdGlvbnMsIC4uLnBhcmFtcyB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IENoZWNrQm94UHJvcHMgPSBvbWl0KHsgLi4ucGFyYW1zIH0sIFtcclxuICAgICAgXCJzdG9yZVwiLFxyXG4gICAgICBcInZhbHVlRmllbGRcIixcclxuICAgICAgXCJsYWJlbEZpZWxkXCIsXHJcbiAgICAgIFwiZGF0YVwiLFxyXG4gICAgICBcIm9uQ2hhbmdlXCIsXHJcbiAgICAgIFwiYWRkRGF0YVwiLFxyXG4gICAgICBcImRlbGV0ZURhdGFcIixcclxuICAgIF0pO1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgPENoZWNrYm94Lkdyb3VwXHJcbiAgICAgICAgdmFsdWU9e3RoaXMuc3RhdGUudmFsdWV9XHJcbiAgICAgICAgb3B0aW9ucz17dGhpcy5zdGF0ZS5kYXRhU291cmNlfVxyXG4gICAgICAgIG9uQ2hhbmdlPXt0aGlzLm9uQ2hhbmdlLmJpbmQodGhpcyl9XHJcbiAgICAgICAgey4uLkNoZWNrQm94UHJvcHN9XHJcbiAgICAgIC8+XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgTlNDQ2hlY2tib3hHcm91cDtcclxuIl19
344
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvY2hlY2tib3gvQ2hlY2tib3hHcm91cC50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJQdXJlQ29tcG9uZW50IiwiU3RvcmUiLCJ1dGlscyIsIm9taXQiLCJjb25maWciLCJOU0NDaGVja2JveEdyb3VwIiwicHJvcHMiLCJkYXRhU291cmNlIiwiZGF0YVN0b3JlIiwidmFsdWUiLCJfdGhpcyIsInN0b3JlIiwib3B0aW9ucyIsImRhdGEiLCJjaGlsZHJlbiIsImFkZERhdGEiLCJkZWxldGVEYXRhIiwidmlld3R5cGUiLCJ2aWV3bmFtZSIsInZhbHVlRmllbGQiLCJ2aWV3VXJsIiwidmlld0JpelVybCIsInJlcXVlc3RWaWV3VXJsIiwidXJsIiwibGlzdGVuZXJzIiwibGlzdGVuZXJzUG9wcyIsImNhY2hlZCIsImNhY2hlS2V5Iiwic3RvcmVzIiwiRXJyb3IiLCJnZXRBbGxEYXRhIiwiQXJyYXkiLCJpc0FycmF5IiwibmV3RGF0YSIsImxlbmd0aCIsInZhbHVlRmllbGRzIiwic3BsaXQiLCJtYXAiLCJpdGVtIiwiaSIsInYiLCJpbmRleCIsImluZGV4T2YiLCJzcGxpY2UiLCJzdG9yZVByb3BzIiwibW9kZWwiLCJjb21wb25lbnQiLCJvbkJlZm9yZUxvYWQiLCJjYWxsYmFjayIsImxvYWQiLCJtb2RlbERhdGEiLCJjb252ZXJ0RGF0YSIsInNldFN0YXRlIiwiZGF0YUNoYW5nZWQiLCJpc0NhY2hlZCIsImlzQ2FjaGVLZXkiLCJhdXRvTG9hZCIsImxhYmVsRmllbGQiLCJkYXRhU291cmUiLCJvYmoiLCJsYWJlbCIsImxhYmVsRmllbGRzIiwibCIsImRpc2FibGVkIiwicHVzaCIsImNoZWNrZWRWYWx1ZSIsIm9uQ2hhbmdlIiwic3RhdGUiLCJKU09OIiwic3RyaW5naWZ5IiwicGFyYW1zIiwiQ2hlY2tCb3hQcm9wcyIsImJpbmQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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VSxFQUFFLEtBQUs0QyxXQUFMLENBQWlCbEIsT0FBakIsQ0FEQTtBQUVaekIsWUFBQUEsU0FBUyxFQUFFeUI7QUFGQyxXQUFkO0FBSUQ7QUFDRjtBQUNGOzs7V0FFRCxrQkFBUztBQUNQLHlCQUFxQyxLQUFLM0IsS0FBMUM7QUFBQSxVQUFRTyxJQUFSLGdCQUFRQSxJQUFSO0FBQUEsVUFBY0QsT0FBZCxnQkFBY0EsT0FBZDtBQUFBLFVBQTBCMEQsTUFBMUI7O0FBQ0EsVUFBTUMsYUFBYSxHQUFHcEUsSUFBSSxtQkFBTW1FLE1BQU4sR0FBZ0IsQ0FDeEMsT0FEd0MsRUFFeEMsWUFGd0MsRUFHeEMsWUFId0MsRUFJeEMsTUFKd0MsRUFLeEMsVUFMd0MsRUFNeEMsU0FOd0MsRUFPeEMsWUFQd0MsQ0FBaEIsQ0FBMUI7QUFTQSwwQkFDRSw4QkFBVSxLQUFWO0FBQ0UsUUFBQSxLQUFLLEVBQUUsS0FBS0gsS0FBTCxDQUFXMUQsS0FEcEI7QUFFRSxRQUFBLE9BQU8sRUFBRSxLQUFLMEQsS0FBTCxDQUFXNUQsVUFGdEI7QUFHRSxRQUFBLFFBQVEsRUFBRSxLQUFLMkQsUUFBTCxDQUFjTSxJQUFkLENBQW1CLElBQW5CO0FBSFosU0FJTUQsYUFKTixFQURGO0FBUUQ7Ozs7RUFsTjRCdkUsYTs7QUFxTi9CLGVBQWVLLGdCQUFmIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQERlc2NyaXB0dGlvbjpcclxuICogQHZlcnNpb246XHJcbiAqIEBBdXRob3I6IHJ4emh1XHJcbiAqIEBEYXRlOiAyMDIxLTA0LTE0IDA4OjU5OjE5XHJcbiAqIEBMYXN0RWRpdG9yczogcnh6aHVcclxuICogQExhc3RFZGl0VGltZTogMjAyMS0wNC0yMyAxNjo0NjozM1xyXG4gKi9cclxuaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgQ2hlY2tib3gsIENoZWNrYm94UHJvcHMgfSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgU3RvcmUsIHsgU3RvcmVQcm9wcyB9IGZyb20gXCJAYmotbnNjL21zblwiO1xyXG5pbXBvcnQgeyB1dGlscyB9IGZyb20gXCJAYmotbnNjL21zbi9saWIvdXRpbHNcIjtcclxuaW1wb3J0IG9taXQgZnJvbSBcIm9taXQuanNcIjtcclxuaW1wb3J0IGNvbmZpZyBmcm9tIFwiLi4vLi4vY29uZmlnXCI7XHJcblxyXG5pbnRlcmZhY2UgSUNoZWNrYm94R3JvdXBQcm9wcyBleHRlbmRzIENoZWNrYm94UHJvcHMge1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBkYXRhPzogQXJyYXk8c3RyaW5nIHwgT2JqZWN0PjsgLy/pu5jorqTmlbDmja5cclxuICBsYWJlbEZpZWxkPzogc3RyaW5nO1xyXG4gIHZhbHVlRmllbGQ/OiBzdHJpbmc7XHJcbiAgYWRkRGF0YT86IEFycmF5PHN0cmluZyB8IE9iamVjdD47XHJcbiAgZGVsZXRlRGF0YT86IEFycmF5PHN0cmluZz47XHJcbiAgW3Byb3BOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbmNsYXNzIE5TQ0NoZWNrYm94R3JvdXAgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PElDaGVja2JveEdyb3VwUHJvcHM+IHtcclxuICBzdGF0ZSA9IHtcclxuICAgIGRhdGFTb3VyY2U6IFtdLFxyXG4gICAgZGF0YVN0b3JlOiBbXSxcclxuICAgIHZhbHVlOiBbXSxcclxuICB9O1xyXG4gIHN0b3JlID0ge30gYXMgU3RvcmVQcm9wcztcclxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgc3VwZXIocHJvcHMpO1xyXG4gICAgY29uc3QgX3RoaXMgPSB0aGlzO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzdG9yZSA9IHt9LFxyXG4gICAgICBvcHRpb25zLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBjaGlsZHJlbixcclxuICAgICAgYWRkRGF0YSA9IFtdLFxyXG4gICAgICBkZWxldGVEYXRhID0gW10sXHJcbiAgICAgIHZpZXd0eXBlID0gXCJzeXN0ZW1cIixcclxuICAgIH0gPSBwcm9wcztcclxuICAgIGNvbnN0IHsgdmlld25hbWUgfSA9IHN0b3JlO1xyXG4gICAgbGV0IHsgdmFsdWVGaWVsZCB9ID0gcHJvcHM7XHJcbiAgICB2YWx1ZUZpZWxkID0gdmFsdWVGaWVsZCA/IHZhbHVlRmllbGQgOiB2aWV3bmFtZSA/IFwiZGljdEtleVwiIDogXCJ2YWx1ZVwiO1xyXG4gICAgbGV0IHsgdmlld1VybCwgdmlld0JpelVybCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgcmVxdWVzdFZpZXdVcmwgPSB2aWV3dHlwZSA9PSBcInN5c3RlbVwiID8gdmlld1VybCA6IHZpZXdCaXpVcmw7XHJcbiAgICBpZiAoIWNoaWxkcmVuKSB7XHJcbiAgICAgIGNvbnN0IHtcclxuICAgICAgICB1cmwsXHJcbiAgICAgICAgbGlzdGVuZXJzOiBsaXN0ZW5lcnNQb3BzID0ge30sXHJcbiAgICAgICAgdmlld25hbWUsXHJcbiAgICAgICAgY2FjaGVkLFxyXG4gICAgICAgIGNhY2hlS2V5LFxyXG5cclxuICAgICAgICAuLi5zdG9yZXNcclxuICAgICAgfSA9IHN0b3JlO1xyXG4gICAgICBpZiAoIXVybCAmJiAhb3B0aW9ucyAmJiAhZGF0YSAmJiAhdmlld25hbWUpXHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidXJs44CBdmlld25hbWXjgIFkYXRh5ZKMb3B0aW9uc+S4jeiDvemDveS4uuepuu+8gVwiKTtcclxuICAgICAgY29uc3QgZ2V0QWxsRGF0YSA9IChkYXRhKSA9PiB7XHJcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGRhdGEpKSB7XHJcbiAgICAgICAgICByZXR1cm4gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBuZXdEYXRhID0gWy4uLmRhdGFdO1xyXG4gICAgICAgIGlmIChhZGREYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIG5ld0RhdGEgPSBbLi4uYWRkRGF0YSwgLi4ubmV3RGF0YV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkZWxldGVEYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIGNvbnN0IHZhbHVlRmllbGRzOiBhbnkgPSB2YWx1ZUZpZWxkLnNwbGl0KFwiLFwiKTtcclxuICAgICAgICAgIG5ld0RhdGEubWFwKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gXCJvYmplY3RcIikge1xyXG4gICAgICAgICAgICAgIGxldCB2YWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgdmFsdWVGaWVsZHMubWFwKCh2LCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdmFsdWUgPSBpbmRleCA9PSAwID8gdmFsdWUgKyBpdGVtW3ZdIDogdmFsdWUgKyBcIixcIiArIGl0ZW1bdl07XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgaWYgKGRlbGV0ZURhdGEuaW5kZXhPZih2YWx1ZSkgPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgbmV3RGF0YS5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBpdGVtID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGRlbGV0ZURhdGEuaW5kZXhPZihpdGVtKSA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICBuZXdEYXRhLnNwbGljZShpLCAxKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbmV3RGF0YTtcclxuICAgICAgfTtcclxuICAgICAgdmFyIHN0b3JlUHJvcHMgPSB7XHJcbiAgICAgICAgbW9kZWw6IFwibW9kZWxcIixcclxuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgICAgbGlzdGVuZXJzOiB7XHJcbiAgICAgICAgICBvbkJlZm9yZUxvYWQ6IGZ1bmN0aW9uIChzdG9yZSwgb3B0aW9ucykge1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQb3BzLm9uQmVmb3JlTG9hZCwgX3RoaXMsIFtzdG9yZSwgb3B0aW9uc10pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGxvYWQ6IGZ1bmN0aW9uIChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSB7XHJcbiAgICAgICAgICAgIGxldCBkYXRhU291cmNlID0gX3RoaXMuY29udmVydERhdGEoZ2V0QWxsRGF0YShkYXRhKSk7XHJcbiAgICAgICAgICAgIF90aGlzLnNldFN0YXRlKHsgZGF0YVNvdXJjZTogZGF0YVNvdXJjZSB9KTtcclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUG9wcy5sb2FkLCBfdGhpcywgW2RhdGEsIG1vZGVsRGF0YSwgc3RvcmVdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBkYXRhQ2hhbmdlZDogZnVuY3Rpb24gKGRhdGEsIG1vZGVsRGF0YSwgc3RvcmUpIHtcclxuICAgICAgICAgICAgX3RoaXMuc2V0U3RhdGUoeyBkYXRhU291cmNlOiBfdGhpcy5jb252ZXJ0RGF0YShnZXRBbGxEYXRhKGRhdGEpKSB9KTtcclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUG9wcy5kYXRhQ2hhbmdlZCwgX3RoaXMsIFtcclxuICAgICAgICAgICAgICBkYXRhLFxyXG4gICAgICAgICAgICAgIG1vZGVsRGF0YSxcclxuICAgICAgICAgICAgICBzdG9yZSxcclxuICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4uc3RvcmVzLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLnN0b3JlID0gbmV3IFN0b3JlKHN0b3JlUHJvcHMpO1xyXG4gICAgICBpZiAoKHZpZXduYW1lIHx8IHVybCkgJiYgZGF0YSA9PSBudWxsICYmIG9wdGlvbnMgPT0gbnVsbCkge1xyXG4gICAgICAgIGxldCBpc0NhY2hlZCA9IGNhY2hlZDtcclxuICAgICAgICBsZXQgaXNDYWNoZUtleSA9IGNhY2hlS2V5O1xyXG4gICAgICAgIGlmICh2aWV3bmFtZSkge1xyXG4gICAgICAgICAgaWYgKHR5cGVvZiBjYWNoZWQgIT09IFwiYm9vbGVhblwiKSB7XHJcbiAgICAgICAgICAgIGlzQ2FjaGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgaXNDYWNoZUtleSA9IGlzQ2FjaGVLZXkgPyBpc0NhY2hlS2V5IDogdmlld25hbWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHN0b3JlUHJvcHMgPSB7XHJcbiAgICAgICAgICAuLi57XHJcbiAgICAgICAgICAgIGF1dG9Mb2FkOiB0cnVlLFxyXG4gICAgICAgICAgICB1cmw6IHVybCB8fCByZXF1ZXN0Vmlld1VybCArIHZpZXduYW1lLCAvL+ivu+Wtl+WFuO+8jHVybOWbuuWumu+8jHZpZXduYW1lXHJcbiAgICAgICAgICAgIGNhY2hlZDogaXNDYWNoZWQsXHJcbiAgICAgICAgICAgIGNhY2hlS2V5OiBpc0NhY2hlS2V5LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLnN0b3JlUHJvcHMsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN0b3JlID0gbmV3IFN0b3JlKHN0b3JlUHJvcHMpO1xyXG4gICAgfVxyXG4gIH1cclxuICBjb252ZXJ0RGF0YShkYXRhKSB7XHJcbiAgICBsZXQgeyBzdG9yZSA9IHt9LCB2YWx1ZUZpZWxkLCBsYWJlbEZpZWxkIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyB2aWV3bmFtZSB9ID0gc3RvcmU7XHJcbiAgICB2YWx1ZUZpZWxkID0gdmFsdWVGaWVsZCA/IHZhbHVlRmllbGQgOiB2aWV3bmFtZSA/IFwiZGljdEtleVwiIDogXCJ2YWx1ZVwiO1xyXG4gICAgbGFiZWxGaWVsZCA9IGxhYmVsRmllbGQgPyBsYWJlbEZpZWxkIDogdmlld25hbWUgPyBcImRpY3RWYWx1ZVwiIDogXCJsYWJlbFwiO1xyXG4gICAgbGV0IGRhdGFTb3VyZSA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmICh0eXBlb2YgZGF0YVtpXSA9PT0gXCJvYmplY3RcIikge1xyXG4gICAgICAgIGxldCBvYmogPSB7IC4uLmRhdGFbaV0gfTtcclxuICAgICAgICBsZXQgdmFsdWUgPSBcIlwiO1xyXG4gICAgICAgIGlmICh2YWx1ZUZpZWxkLnNwbGl0KFwiLFwiKS5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgdmFsdWUgPSBkYXRhW2ldW3ZhbHVlRmllbGRdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCB2YWx1ZUZpZWxkczogYW55ID0gdmFsdWVGaWVsZC5zcGxpdChcIixcIik7XHJcbiAgICAgICAgICB2YWx1ZUZpZWxkcy5tYXAoKHYsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIHZhbHVlID0gaW5kZXggPT0gMCA/IHZhbHVlICsgZGF0YVtpXVt2XSA6IHZhbHVlICsgXCIsXCIgKyBkYXRhW2ldW3ZdO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBsYWJlbCA9IFwiXCI7XHJcbiAgICAgICAgaWYgKGxhYmVsRmllbGQuc3BsaXQoXCIsXCIpLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgICBsYWJlbCA9IGRhdGFbaV1bbGFiZWxGaWVsZF07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IGxhYmVsRmllbGRzOiBhbnkgPSBsYWJlbEZpZWxkLnNwbGl0KFwiLFwiKTtcclxuICAgICAgICAgIGxhYmVsRmllbGRzLm1hcCgobCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgbGFiZWwgPSBpbmRleCA9PSAwID8gbGFiZWwgKyBkYXRhW2ldW2xdIDogbGFiZWwgKyBcIi1cIiArIGRhdGFbaV1bbF07XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgb2JqLmxhYmVsID0gbGFiZWw7XHJcbiAgICAgICAgb2JqLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgb2JqLmRpc2FibGVkID0gZGF0YVtpXS5kaXNhYmxlZCA/IGRhdGFbaV0uZGlzYWJsZWQgOiBmYWxzZTtcclxuICAgICAgICBkYXRhU291cmUucHVzaChvYmopO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGxldCBvYmogPSB7fSBhcyB7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBhbnk7IGRpc2FibGVkPzogYm9vbGVhbiB9O1xyXG4gICAgICAgIG9iai5sYWJlbCA9IGRhdGFbaV07XHJcbiAgICAgICAgb2JqLnZhbHVlID0gZGF0YVtpXTtcclxuICAgICAgICBvYmouZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICBkYXRhU291cmUucHVzaChvYmopO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGF0YVNvdXJlO1xyXG4gIH1cclxuICBvbkNoYW5nZShjaGVja2VkVmFsdWUpIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICB2YWx1ZTogY2hlY2tlZFZhbHVlLFxyXG4gICAgfSk7XHJcbiAgICBjb25zdCB7IG9uQ2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKG9uQ2hhbmdlKSB7XHJcbiAgICAgIG9uQ2hhbmdlKGNoZWNrZWRWYWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldFZhbHVlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdGUudmFsdWU7XHJcbiAgfVxyXG4gIHNldFZhbHVlKHZhbHVlKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgdmFsdWU6IHZhbHVlLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyBkYXRhLCBvcHRpb25zLCBjaGlsZHJlbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmICghY2hpbGRyZW4gJiYgKGRhdGEgfHwgb3B0aW9ucykpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgZGF0YVNvdXJjZTogdGhpcy5jb252ZXJ0RGF0YShkYXRhID8gZGF0YSA6IG9wdGlvbnMpLFxyXG4gICAgICAgIGRhdGFTdG9yZTogZGF0YSA/IGRhdGEgOiBvcHRpb25zLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgY29tcG9uZW50RGlkVXBkYXRlKCkge1xyXG4gICAgY29uc3QgeyBkYXRhU3RvcmUgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IGRhdGEsIG9wdGlvbnMgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBuZXdEYXRhID0gZGF0YSA/IGRhdGEgOiBvcHRpb25zO1xyXG4gICAgaWYgKGRhdGEgfHwgb3B0aW9ucykge1xyXG4gICAgICBpZiAoSlNPTi5zdHJpbmdpZnkoZGF0YVN0b3JlKSAhPT0gSlNPTi5zdHJpbmdpZnkobmV3RGF0YSkpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIGRhdGFTb3VyY2U6IHRoaXMuY29udmVydERhdGEobmV3RGF0YSksXHJcbiAgICAgICAgICBkYXRhU3RvcmU6IG5ld0RhdGEsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IHsgZGF0YSwgb3B0aW9ucywgLi4ucGFyYW1zIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgQ2hlY2tCb3hQcm9wcyA9IG9taXQoeyAuLi5wYXJhbXMgfSwgW1xyXG4gICAgICBcInN0b3JlXCIsXHJcbiAgICAgIFwidmFsdWVGaWVsZFwiLFxyXG4gICAgICBcImxhYmVsRmllbGRcIixcclxuICAgICAgXCJkYXRhXCIsXHJcbiAgICAgIFwib25DaGFuZ2VcIixcclxuICAgICAgXCJhZGREYXRhXCIsXHJcbiAgICAgIFwiZGVsZXRlRGF0YVwiLFxyXG4gICAgXSk7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8Q2hlY2tib3guR3JvdXBcclxuICAgICAgICB2YWx1ZT17dGhpcy5zdGF0ZS52YWx1ZX1cclxuICAgICAgICBvcHRpb25zPXt0aGlzLnN0YXRlLmRhdGFTb3VyY2V9XHJcbiAgICAgICAgb25DaGFuZ2U9e3RoaXMub25DaGFuZ2UuYmluZCh0aGlzKX1cclxuICAgICAgICB7Li4uQ2hlY2tCb3hQcm9wc31cclxuICAgICAgLz5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBOU0NDaGVja2JveEdyb3VwO1xyXG4iXX0=
@@ -0,0 +1,12 @@
1
+ import React, { Component } from "react";
2
+ interface ErrorProps {
3
+ autoLogSerice?: boolean;
4
+ serviceName?: string;
5
+ terminal?: string;
6
+ }
7
+ export default class ErrorBoundary extends Component<ErrorProps, any> {
8
+ constructor(props: any);
9
+ componentDidCatch(error: any, errorInfo: any): void;
10
+ render(): React.ReactNode;
11
+ }
12
+ export {};
@@ -0,0 +1,69 @@
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
+
3
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
4
+
5
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
6
+
7
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
8
+
9
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
10
+
11
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
12
+
13
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
14
+
15
+ function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
16
+
17
+ function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
18
+
19
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
20
+
21
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
22
+
23
+ import React, { Component } from "react";
24
+
25
+ var ErrorBoundary = /*#__PURE__*/function (_Component) {
26
+ _inherits(ErrorBoundary, _Component);
27
+
28
+ var _super = _createSuper(ErrorBoundary);
29
+
30
+ function ErrorBoundary(props) {
31
+ var _this;
32
+
33
+ _classCallCheck(this, ErrorBoundary);
34
+
35
+ _this = _super.call(this, props);
36
+ _this.state = {
37
+ hasError: false
38
+ };
39
+ return _this;
40
+ }
41
+
42
+ _createClass(ErrorBoundary, [{
43
+ key: "componentDidCatch",
44
+ value: function componentDidCatch(error, errorInfo) {
45
+ // 上传至服务器
46
+ console.log("".concat(this.props.serviceName, "ErrorBoundary"), error);
47
+ this.setState({
48
+ hasError: true
49
+ });
50
+
51
+ if (this.props.autoLogSerice) {}
52
+ }
53
+ }, {
54
+ key: "render",
55
+ value: function render() {
56
+ if (this.state.hasError) {
57
+ // 自定义降级后的 UI 并渲染
58
+ return /*#__PURE__*/React.createElement("h1", null, "\u9875\u9762\u51FA\u9519\u5566\uFF01\uFF01\uFF01");
59
+ }
60
+
61
+ return this.props.children;
62
+ }
63
+ }]);
64
+
65
+ return ErrorBoundary;
66
+ }(Component);
67
+
68
+ export { ErrorBoundary as default };
69
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvZXJyb3Jib3VuZGFyeS9pbmRleC50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJDb21wb25lbnQiLCJFcnJvckJvdW5kYXJ5IiwicHJvcHMiLCJzdGF0ZSIsImhhc0Vycm9yIiwiZXJyb3IiLCJlcnJvckluZm8iLCJjb25zb2xlIiwibG9nIiwic2VydmljZU5hbWUiLCJzZXRTdGF0ZSIsImF1dG9Mb2dTZXJpY2UiLCJjaGlsZHJlbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU9BLEtBQVAsSUFBZ0JDLFNBQWhCLFFBQWlDLE9BQWpDOztJQU1xQkMsYTs7Ozs7QUFDbkIseUJBQVlDLEtBQVosRUFBd0I7QUFBQTs7QUFBQTs7QUFDdEIsOEJBQU1BLEtBQU47QUFDQSxVQUFLQyxLQUFMLEdBQWE7QUFBRUMsTUFBQUEsUUFBUSxFQUFFO0FBQVosS0FBYjtBQUZzQjtBQUd2Qjs7OztXQUNELDJCQUFrQkMsS0FBbEIsRUFBOEJDLFNBQTlCLEVBQThDO0FBQzVDO0FBQ0FDLE1BQUFBLE9BQU8sQ0FBQ0MsR0FBUixXQUFlLEtBQUtOLEtBQUwsQ0FBV08sV0FBMUIsb0JBQXNESixLQUF0RDtBQUNBLFdBQUtLLFFBQUwsQ0FBYztBQUNaTixRQUFBQSxRQUFRLEVBQUU7QUFERSxPQUFkOztBQUdBLFVBQUksS0FBS0YsS0FBTCxDQUFXUyxhQUFmLEVBQThCLENBQzdCO0FBQ0Y7OztXQUVELGtCQUFTO0FBQ1AsVUFBSSxLQUFLUixLQUFMLENBQVdDLFFBQWYsRUFBeUI7QUFDdkI7QUFDQSw0QkFBTyxtRkFBUDtBQUNEOztBQUNELGFBQU8sS0FBS0YsS0FBTCxDQUFXVSxRQUFsQjtBQUNEOzs7O0VBckJ3Q1osUzs7U0FBdEJDLGEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgQ29tcG9uZW50IH0gZnJvbSBcInJlYWN0XCI7XHJcbmludGVyZmFjZSBFcnJvclByb3BzIHtcclxuICBhdXRvTG9nU2VyaWNlPzogYm9vbGVhbjsgLy/mmK/lkKboh6rliqjkuIrkvKDmnI3liqHlmahcclxuICBzZXJ2aWNlTmFtZT86IHN0cmluZzsgLy/mnI3liqHlkI3np7BcclxuICB0ZXJtaW5hbD86IHN0cmluZzsgLy/liY3nq6/nu4jnq6/nsbvlnotcclxufVxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFcnJvckJvdW5kYXJ5IGV4dGVuZHMgQ29tcG9uZW50PEVycm9yUHJvcHMsIGFueT4ge1xyXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBhbnkpIHtcclxuICAgIHN1cGVyKHByb3BzKTtcclxuICAgIHRoaXMuc3RhdGUgPSB7IGhhc0Vycm9yOiBmYWxzZSB9O1xyXG4gIH1cclxuICBjb21wb25lbnREaWRDYXRjaChlcnJvcjogYW55LCBlcnJvckluZm86IGFueSkge1xyXG4gICAgLy8g5LiK5Lyg6Iez5pyN5Yqh5ZmoXHJcbiAgICBjb25zb2xlLmxvZyhgJHt0aGlzLnByb3BzLnNlcnZpY2VOYW1lfUVycm9yQm91bmRhcnlgLCBlcnJvcik7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgaGFzRXJyb3I6IHRydWUsXHJcbiAgICB9KTtcclxuICAgIGlmICh0aGlzLnByb3BzLmF1dG9Mb2dTZXJpY2UpIHtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbmRlcigpIHtcclxuICAgIGlmICh0aGlzLnN0YXRlLmhhc0Vycm9yKSB7XHJcbiAgICAgIC8vIOiHquWumuS5iemZjee6p+WQjueahCBVSSDlubbmuLLmn5NcclxuICAgICAgcmV0dXJuIDxoMT7pobXpnaLlh7rplJnllabvvIHvvIHvvIE8L2gxPjtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnByb3BzLmNoaWxkcmVuO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -96,8 +96,9 @@ var RadioGroup = /*#__PURE__*/function (_Component) {
96
96
  deleteData = _props$deleteData === void 0 ? [] : _props$deleteData,
97
97
  _props$viewtype = props.viewtype,
98
98
  viewtype = _props$viewtype === void 0 ? "system" : _props$viewtype;
99
+ var valueField = props.valueField;
99
100
  var viewname = store.viewname;
100
- var valueField = viewname ? "dictKey" : "value";
101
+ valueField = valueField ? valueField : viewname ? "dictKey" : "value";
101
102
 
102
103
  var _config = config(),
103
104
  viewUrl = _config.viewUrl,
@@ -236,11 +237,14 @@ var RadioGroup = /*#__PURE__*/function (_Component) {
236
237
  }, {
237
238
  key: "convertData",
238
239
  value: function convertData(data) {
239
- var _this$props$store = this.props.store,
240
- store = _this$props$store === void 0 ? {} : _this$props$store;
240
+ var _this$props2 = this.props,
241
+ _this$props2$store = _this$props2.store,
242
+ store = _this$props2$store === void 0 ? {} : _this$props2$store,
243
+ valueField = _this$props2.valueField,
244
+ labelField = _this$props2.labelField;
241
245
  var viewname = store.viewname;
242
- var valueField = viewname ? "dictKey" : "value";
243
- var labelField = viewname ? "dictValue" : "label";
246
+ valueField = valueField ? valueField : viewname ? "dictKey" : "value";
247
+ labelField = labelField ? labelField : viewname ? "dictValue" : "label";
244
248
  var dataSoure = [];
245
249
 
246
250
  var _loop = function _loop(i) {
@@ -291,10 +295,10 @@ var RadioGroup = /*#__PURE__*/function (_Component) {
291
295
  }, {
292
296
  key: "componentDidMount",
293
297
  value: function componentDidMount() {
294
- var _this$props2 = this.props,
295
- data = _this$props2.data,
296
- options = _this$props2.options,
297
- children = _this$props2.children;
298
+ var _this$props3 = this.props,
299
+ data = _this$props3.data,
300
+ options = _this$props3.options,
301
+ children = _this$props3.children;
298
302
 
299
303
  if (!children && (data || options)) {
300
304
  this.setState({
@@ -307,9 +311,9 @@ var RadioGroup = /*#__PURE__*/function (_Component) {
307
311
  key: "componentDidUpdate",
308
312
  value: function componentDidUpdate() {
309
313
  var dataStore = this.state.dataStore;
310
- var _this$props3 = this.props,
311
- data = _this$props3.data,
312
- options = _this$props3.options;
314
+ var _this$props4 = this.props,
315
+ data = _this$props4.data,
316
+ options = _this$props4.options;
313
317
  var newData = data ? data : options;
314
318
 
315
319
  if (data || options) {
@@ -326,10 +330,10 @@ var RadioGroup = /*#__PURE__*/function (_Component) {
326
330
  value: function render() {
327
331
  var _this3 = this;
328
332
 
329
- var _this$props4 = this.props,
330
- children = _this$props4.children,
331
- _this$props4$customiz = _this$props4.customize,
332
- customize = _this$props4$customiz === void 0 ? false : _this$props4$customiz;
333
+ var _this$props5 = this.props,
334
+ children = _this$props5.children,
335
+ _this$props5$customiz = _this$props5.customize,
336
+ customize = _this$props5$customiz === void 0 ? false : _this$props5$customiz;
333
337
  var radios;
334
338
  radios = children;
335
339
  var isArray = Array.isArray(children);
@@ -356,10 +360,10 @@ var RadioGroup = /*#__PURE__*/function (_Component) {
356
360
  });
357
361
  }
358
362
  } else {
359
- var _this$props5 = this.props,
360
- data = _this$props5.data,
361
- options = _this$props5.options,
362
- params = _objectWithoutProperties(_this$props5, _excluded2);
363
+ var _this$props6 = this.props,
364
+ data = _this$props6.data,
365
+ options = _this$props6.options,
366
+ params = _objectWithoutProperties(_this$props6, _excluded2);
363
367
 
364
368
  var RadioProps = omit(_objectSpread({}, params), ["store", "labelField", "valueField", "customize", "onChange", "addData", "deleteData"]);
365
369
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_Radio.Group, _extends({
@@ -375,4 +379,4 @@ var RadioGroup = /*#__PURE__*/function (_Component) {
375
379
  }(Component);
376
380
 
377
381
  export { RadioGroup as default };
378
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvcmFkaW8vUmFkaW9Hcm91cC50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJDb21wb25lbnQiLCJvbWl0IiwiU3RvcmUiLCJ1dGlscyIsImNvbmZpZyIsIlJhZGlvR3JvdXAiLCJwcm9wcyIsImRhdGFTb3VyY2UiLCJkYXRhU3RvcmUiLCJ2YWx1ZSIsIl90aGlzIiwic3RvcmUiLCJvcHRpb25zIiwiZGF0YSIsImNoaWxkcmVuIiwiYWRkRGF0YSIsImRlbGV0ZURhdGEiLCJ2aWV3dHlwZSIsInZpZXduYW1lIiwidmFsdWVGaWVsZCIsInZpZXdVcmwiLCJ2aWV3Qml6VXJsIiwicmVxdWVzdFZpZXdVcmwiLCJ1cmwiLCJsaXN0ZW5lcnMiLCJsaXN0ZW5lcnNQb3BzIiwiY2FjaGVkIiwiY2FjaGVLZXkiLCJzdG9yZXMiLCJFcnJvciIsImdldEFsbERhdGEiLCJBcnJheSIsImlzQXJyYXkiLCJuZXdEYXRhIiwibGVuZ3RoIiwidmFsdWVGaWVsZHMiLCJzcGxpdCIsIm1hcCIsIml0ZW0iLCJpIiwidiIsImluZGV4IiwiaW5kZXhPZiIsInNwbGljZSIsInN0b3JlUHJvcHMiLCJtb2RlbCIsImNvbXBvbmVudCIsIm9uQmVmb3JlTG9hZCIsImNhbGxiYWNrIiwibG9hZCIsIm1vZGVsRGF0YSIsImNvbnZlcnREYXRhIiwic2V0U3RhdGUiLCJkYXRhQ2hhbmdlZCIsImlzQ2FjaGVkIiwiaXNDYWNoZUtleSIsImF1dG9Mb2FkIiwiZSIsImN1c3RvbWl6ZSIsIm9uQ2hhbmdlIiwidGFyZ2V0Iiwic3RhdGUiLCJsYWJlbEZpZWxkIiwiZGF0YVNvdXJlIiwib2JqIiwibGFiZWwiLCJsYWJlbEZpZWxkcyIsImwiLCJkaXNhYmxlZCIsInB1c2giLCJKU09OIiwic3RyaW5naWZ5IiwicmFkaW9zIiwiY2hpbGQiLCJpc0FjdGl2ZSIsImNsb25lRWxlbWVudCIsImFjdGl2ZSIsIm9uQ2xpY2siLCJoYW5kbGVBY3RpdmVDaGFuZ2UiLCJi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QkFBTCxDQUF3QkMsSUFBeEIsQ0FBNkIsSUFBN0I7QUFIWixXQUlNRyxVQUpOLEVBREYsQ0FERjtBQVVEO0FBQ0Y7Ozs7RUFyUHFDbEYsUzs7U0FBbkJLLFUiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBARGVzY3JpcHR0aW9uOlxyXG4gKiBAdmVyc2lvbjpcclxuICogQEF1dGhvcjogcnh6aHVcclxuICogQERhdGU6IDIwMjEtMDMtMjQgMTQ6MzM6MzVcclxuICogQExhc3RFZGl0b3JzOiByeHpodVxyXG4gKiBATGFzdEVkaXRUaW1lOiAyMDIxLTA0LTIzIDE2OjQ2OjE3XHJcbiAqL1xyXG5pbXBvcnQgUmVhY3QsIHsgQ29tcG9uZW50IH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IFJhZGlvLCBSYWRpb0dyb3VwUHJvcHMgfSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgb21pdCBmcm9tIFwib21pdC5qc1wiO1xyXG5pbXBvcnQgU3RvcmUsIHsgU3RvcmVQcm9wcyB9IGZyb20gXCJAYmotbnNjL21zblwiO1xyXG5pbXBvcnQgeyB1dGlscyB9IGZyb20gXCJAYmotbnNjL21zbi9saWIvdXRpbHNcIjtcclxuaW1wb3J0IGNvbmZpZyBmcm9tIFwiLi4vLi4vY29uZmlnXCI7XHJcblxyXG5pbnRlcmZhY2UgSVJhZGlvR3JvdXBQcm9wcyBleHRlbmRzIFJhZGlvR3JvdXBQcm9wcyB7XHJcbiAgY3VzdG9taXplPzogYm9vbGVhbjtcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgZGF0YT86IEFycmF5PHN0cmluZyB8IE9iamVjdD47IC8v6buY6K6k5pWw5o2uXHJcbiAgbGFiZWxGaWVsZD86IHN0cmluZztcclxuICB2YWx1ZUZpZWxkPzogc3RyaW5nO1xyXG4gIGFkZERhdGE/OiBBcnJheTxzdHJpbmcgfCBPYmplY3Q+OyAvL+S4jnN0b3Jl5LiA6LW355SoXHJcbiAgZGVsZXRlRGF0YT86IEFycmF5PHN0cmluZz47XHJcbiAgb25DaGFuZ2U/OiAodmFsdWU6IGFueSwgZT86IGFueSkgPT4gdm9pZDtcclxufVxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSYWRpb0dyb3VwIGV4dGVuZHMgQ29tcG9uZW50PElSYWRpb0dyb3VwUHJvcHM+IHtcclxuICBzdGF0ZSA9IHtcclxuICAgIGRhdGFTb3VyY2U6IFtdLFxyXG4gICAgZGF0YVN0b3JlOiBbXSxcclxuICAgIHZhbHVlOiBcIlwiLFxyXG4gIH07XHJcbiAgc3RvcmUgPSB7fSBhcyBTdG9yZVByb3BzO1xyXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgICBjb25zdCBfdGhpcyA9IHRoaXM7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN0b3JlID0ge30sXHJcbiAgICAgIG9wdGlvbnMsXHJcbiAgICAgIGRhdGEsXHJcbiAgICAgIGNoaWxkcmVuLFxyXG4gICAgICBhZGREYXRhID0gW10sXHJcbiAgICAgIGRlbGV0ZURhdGEgPSBbXSxcclxuICAgICAgdmlld3R5cGUgPSBcInN5c3RlbVwiLFxyXG4gICAgfSA9IHByb3BzO1xyXG4gICAgY29uc3QgeyB2aWV3bmFtZSB9ID0gc3RvcmU7XHJcbiAgICBsZXQgdmFsdWVGaWVsZCA9IHZpZXduYW1lID8gXCJkaWN0S2V5XCIgOiBcInZhbHVlXCI7XHJcbiAgICBsZXQgeyB2aWV3VXJsLCB2aWV3Qml6VXJsIH0gPSBjb25maWcoKTtcclxuICAgIGxldCByZXF1ZXN0Vmlld1VybCA9IHZpZXd0eXBlID09IFwic3lzdGVtXCIgPyB2aWV3VXJsIDogdmlld0JpelVybDtcclxuICAgIGlmICghY2hpbGRyZW4pIHtcclxuICAgICAgY29uc3Qge1xyXG4gICAgICAgIHVybCxcclxuICAgICAgICBsaXN0ZW5lcnM6IGxpc3RlbmVyc1BvcHMgPSB7fSxcclxuICAgICAgICB2aWV3bmFtZSxcclxuICAgICAgICBjYWNoZWQsXHJcbiAgICAgICAgY2FjaGVLZXksXHJcbiAgICAgICAgLi4uc3RvcmVzXHJcbiAgICAgIH0gPSBzdG9yZTtcclxuICAgICAgaWYgKCF1cmwgJiYgIW9wdGlvbnMgJiYgIWRhdGEgJiYgIXZpZXduYW1lKVxyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInVybOOAgXZpZXduYW1l44CBZGF0YeWSjG9wdGlvbnPkuI3og73pg73kuLrnqbrvvIFcIik7XHJcbiAgICAgIGNvbnN0IGdldEFsbERhdGEgPSAoZGF0YSkgPT4ge1xyXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShkYXRhKSkge1xyXG4gICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgbmV3RGF0YSA9IFsuLi5kYXRhXTtcclxuICAgICAgICBpZiAoYWRkRGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBuZXdEYXRhID0gWy4uLmFkZERhdGEsIC4uLm5ld0RhdGFdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZGVsZXRlRGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBjb25zdCB2YWx1ZUZpZWxkczogYW55ID0gdmFsdWVGaWVsZC5zcGxpdChcIixcIik7XHJcbiAgICAgICAgICBuZXdEYXRhLm1hcCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIGl0ZW0gPT09IFwib2JqZWN0XCIpIHtcclxuICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBcIlwiO1xyXG4gICAgICAgICAgICAgIHZhbHVlRmllbGRzLm1hcCgodiwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlID0gaW5kZXggPT0gMCA/IHZhbHVlICsgaXRlbVt2XSA6IHZhbHVlICsgXCIsXCIgKyBpdGVtW3ZdO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIGlmIChkZWxldGVEYXRhLmluZGV4T2YodmFsdWUpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgIG5ld0RhdGEuc3BsaWNlKGksIDEpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaXRlbSA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgICAgICAgIGlmIChkZWxldGVEYXRhLmluZGV4T2YoaXRlbSkgPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgbmV3RGF0YS5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5ld0RhdGE7XHJcbiAgICAgIH07XHJcbiAgICAgIHZhciBzdG9yZVByb3BzID0ge1xyXG4gICAgICAgIG1vZGVsOiBcIm1vZGVsXCIsXHJcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICAgIGxpc3RlbmVyczoge1xyXG4gICAgICAgICAgb25CZWZvcmVMb2FkOiBmdW5jdGlvbiAoc3RvcmUsIG9wdGlvbnMpIHtcclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUG9wcy5vbkJlZm9yZUxvYWQsIF90aGlzLCBbc3RvcmUsIG9wdGlvbnNdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBsb2FkOiBmdW5jdGlvbiAoZGF0YSwgbW9kZWxEYXRhLCBzdG9yZSkge1xyXG4gICAgICAgICAgICBsZXQgZGF0YVNvdXJjZSA9IF90aGlzLmNvbnZlcnREYXRhKGdldEFsbERhdGEoZGF0YSkpO1xyXG4gICAgICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7IGRhdGFTb3VyY2U6IGRhdGFTb3VyY2UgfSk7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1BvcHMubG9hZCwgX3RoaXMsIFtkYXRhLCBtb2RlbERhdGEsIHN0b3JlXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZGF0YUNoYW5nZWQ6IGZ1bmN0aW9uIChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSB7XHJcbiAgICAgICAgICAgIF90aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICBkYXRhU291cmNlOiBfdGhpcy5jb252ZXJ0RGF0YShnZXRBbGxEYXRhKGRhdGEpKSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1BvcHMuZGF0YUNoYW5nZWQsIF90aGlzLCBbXHJcbiAgICAgICAgICAgICAgZGF0YSxcclxuICAgICAgICAgICAgICBtb2RlbERhdGEsXHJcbiAgICAgICAgICAgICAgc3RvcmUsXHJcbiAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLnN0b3JlcyxcclxuICAgICAgfTtcclxuICAgICAgaWYgKCh2aWV3bmFtZSB8fCB1cmwpICYmIGRhdGEgPT0gbnVsbCAmJiBvcHRpb25zID09IG51bGwpIHtcclxuICAgICAgICBsZXQgaXNDYWNoZWQgPSBjYWNoZWQ7XHJcbiAgICAgICAgbGV0IGlzQ2FjaGVLZXkgPSBjYWNoZUtleTtcclxuICAgICAgICBpZiAodmlld25hbWUpIHtcclxuICAgICAgICAgIGlmICh0eXBlb2YgY2FjaGVkICE9PSBcImJvb2xlYW5cIikge1xyXG4gICAgICAgICAgICBpc0NhY2hlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIGlzQ2FjaGVLZXkgPSBpc0NhY2hlS2V5ID8gaXNDYWNoZUtleSA6IHZpZXduYW1lO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBzdG9yZVByb3BzID0ge1xyXG4gICAgICAgICAgLi4ue1xyXG4gICAgICAgICAgICBhdXRvTG9hZDogdHJ1ZSxcclxuICAgICAgICAgICAgdXJsOiB1cmwgPyB1cmwgOiByZXF1ZXN0Vmlld1VybCArIHZpZXduYW1lLCAvL+ivu+Wtl+WFuO+8jHVybOWbuuWumu+8jHZpZXduYW1lXHJcbiAgICAgICAgICAgIGNhY2hlZDogaXNDYWNoZWQsXHJcbiAgICAgICAgICAgIGNhY2hlS2V5OiBpc0NhY2hlS2V5LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLnN0b3JlUHJvcHMsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN0b3JlID0gbmV3IFN0b3JlKHN0b3JlUHJvcHMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlQWN0aXZlQ2hhbmdlKGUpIHtcclxuICAgIGNvbnN0IHsgY3VzdG9taXplLCBvbkNoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmIChjdXN0b21pemUpIHtcclxuICAgICAgb25DaGFuZ2UgJiYgb25DaGFuZ2UoZSk7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIHZhbHVlOiBlLFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIHZhbHVlOiBlLnRhcmdldC52YWx1ZSxcclxuICAgICAgfSk7XHJcbiAgICAgIG9uQ2hhbmdlICYmIG9uQ2hhbmdlKGUudGFyZ2V0LnZhbHVlLCBlKTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0VmFsdWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS52YWx1ZTtcclxuICB9XHJcbiAgc2V0VmFsdWUodmFsdWUpIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICB2YWx1ZTogdmFsdWUsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgY29udmVydERhdGEoZGF0YSkge1xyXG4gICAgbGV0IHsgc3RvcmUgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgdmlld25hbWUgfSA9IHN0b3JlO1xyXG4gICAgbGV0IHZhbHVlRmllbGQgPSB2aWV3bmFtZSA/IFwiZGljdEtleVwiIDogXCJ2YWx1ZVwiO1xyXG4gICAgbGV0IGxhYmVsRmllbGQgPSB2aWV3bmFtZSA/IFwiZGljdFZhbHVlXCIgOiBcImxhYmVsXCI7XHJcbiAgICBsZXQgZGF0YVNvdXJlID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKHR5cGVvZiBkYXRhW2ldID09PSBcIm9iamVjdFwiKSB7XHJcbiAgICAgICAgbGV0IG9iaiA9IHsgLi4uZGF0YVtpXSB9O1xyXG4gICAgICAgIGxldCB2YWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgaWYgKHZhbHVlRmllbGQuc3BsaXQoXCIsXCIpLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IGRhdGFbaV1bdmFsdWVGaWVsZF07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IHZhbHVlRmllbGRzOiBhbnkgPSB2YWx1ZUZpZWxkLnNwbGl0KFwiLFwiKTtcclxuICAgICAgICAgIHZhbHVlRmllbGRzLm1hcCgodiwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgdmFsdWUgPSBpbmRleCA9PSAwID8gdmFsdWUgKyBkYXRhW2ldW3ZdIDogdmFsdWUgKyBcIixcIiArIGRhdGFbaV1bdl07XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGxhYmVsID0gXCJcIjtcclxuICAgICAgICBpZiAobGFiZWxGaWVsZC5zcGxpdChcIixcIikubGVuZ3RoID09IDEpIHtcclxuICAgICAgICAgIGxhYmVsID0gZGF0YVtpXVtsYWJlbEZpZWxkXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgbGFiZWxGaWVsZHM6IGFueSA9IGxhYmVsRmllbGQuc3BsaXQoXCIsXCIpO1xyXG4gICAgICAgICAgbGFiZWxGaWVsZHMubWFwKChsLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICBsYWJlbCA9IGluZGV4ID09IDAgPyBsYWJlbCArIGRhdGFbaV1bbF0gOiBsYWJlbCArIFwiLVwiICsgZGF0YVtpXVtsXTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBvYmoubGFiZWwgPSBsYWJlbDtcclxuICAgICAgICBvYmoudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICBvYmouZGlzYWJsZWQgPSBkYXRhW2ldLmRpc2FibGVkID8gZGF0YVtpXS5kaXNhYmxlZCA6IGZhbHNlO1xyXG4gICAgICAgIGRhdGFTb3VyZS5wdXNoKG9iaik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbGV0IG9iaiA9IHt9IGFzIHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IGFueTsgZGlzYWJsZWQ/OiBib29sZWFuIH07XHJcbiAgICAgICAgb2JqLmxhYmVsID0gZGF0YVtpXTtcclxuICAgICAgICBvYmoudmFsdWUgPSBkYXRhW2ldO1xyXG4gICAgICAgIG9iai5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgIGRhdGFTb3VyZS5wdXNoKG9iaik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBkYXRhU291cmU7XHJcbiAgfVxyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyBkYXRhLCBvcHRpb25zLCBjaGlsZHJlbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmICghY2hpbGRyZW4gJiYgKGRhdGEgfHwgb3B0aW9ucykpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgZGF0YVNvdXJjZTogdGhpcy5jb252ZXJ0RGF0YShkYXRhID8gZGF0YSA6IG9wdGlvbnMpLFxyXG4gICAgICAgIGRhdGFTdG9yZTogZGF0YSA/IGRhdGEgOiBvcHRpb25zLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbXBvbmVudERpZFVwZGF0ZSgpIHtcclxuICAgIGNvbnN0IHsgZGF0YVN0b3JlIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgeyBkYXRhLCBvcHRpb25zIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgbmV3RGF0YSA9IGRhdGEgPyBkYXRhIDogb3B0aW9ucztcclxuICAgIGlmIChkYXRhIHx8IG9wdGlvbnMpIHtcclxuICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KGRhdGFTdG9yZSkgIT09IEpTT04uc3RyaW5naWZ5KG5ld0RhdGEpKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICBkYXRhU291cmNlOiB0aGlzLmNvbnZlcnREYXRhKG5ld0RhdGEpLFxyXG4gICAgICAgICAgZGF0YVN0b3JlOiBuZXdEYXRhLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7IGNoaWxkcmVuLCBjdXN0b21pemUgPSBmYWxzZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCByYWRpb3M6IGFueTtcclxuICAgIHJhZGlvcyA9IGNoaWxkcmVuO1xyXG4gICAgY29uc3QgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pO1xyXG4gICAgaWYgKGN1c3RvbWl6ZSkge1xyXG4gICAgICBpZiAoaXNBcnJheSkge1xyXG4gICAgICAgIHJldHVybiByYWRpb3MubWFwKChjaGlsZCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgIGxldCBpc0FjdGl2ZSA9IHRoaXMucHJvcHMudmFsdWUgPT09IGNoaWxkLnByb3BzLnZhbHVlID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICAgICAgcmV0dXJuIFJlYWN0LmNsb25lRWxlbWVudChjaGlsZCwge1xyXG4gICAgICAgICAgICBsYWJlbDogY2hpbGQucHJvcHMuY2hpbGRyZW4sXHJcbiAgICAgICAgICAgIHZhbHVlOiBjaGlsZC5wcm9wcy52YWx1ZSxcclxuICAgICAgICAgICAgYWN0aXZlOiBpc0FjdGl2ZSxcclxuICAgICAgICAgICAgb25DbGljazogdGhpcy5oYW5kbGVBY3RpdmVDaGFuZ2UuYmluZCh0aGlzLCBjaGlsZC5wcm9wcy52YWx1ZSksXHJcbiAgICAgICAgICAgIGtleTogaW5kZXgsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBsZXQgaXNBY3RpdmUgPSB0aGlzLnByb3BzLnZhbHVlID09PSByYWRpb3MucHJvcHMudmFsdWUgPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNsb25lRWxlbWVudChyYWRpb3MsIHtcclxuICAgICAgICAgIGxhYmVsOiByYWRpb3MucHJvcHMuY2hpbGRyZW4sXHJcbiAgICAgICAgICB2YWx1ZTogcmFkaW9zLnByb3BzLnZhbHVlLFxyXG4gICAgICAgICAgYWN0aXZlOiBpc0FjdGl2ZSxcclxuICAgICAgICAgIG9uQ2xpY2s6IHRoaXMuaGFuZGxlQWN0aXZlQ2hhbmdlLmJpbmQodGhpcywgcmFkaW9zLnByb3BzLnZhbHVlKSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgeyBkYXRhLCBvcHRpb25zLCAuLi5wYXJhbXMgfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgIGNvbnN0IFJhZGlvUHJvcHMgPSBvbWl0KHsgLi4ucGFyYW1zIH0sIFtcclxuICAgICAgICBcInN0b3JlXCIsXHJcbiAgICAgICAgXCJsYWJlbEZpZWxkXCIsXHJcbiAgICAgICAgXCJ2YWx1ZUZpZWxkXCIsXHJcbiAgICAgICAgXCJjdXN0b21pemVcIixcclxuICAgICAgICBcIm9uQ2hhbmdlXCIsXHJcbiAgICAgICAgXCJhZGREYXRhXCIsXHJcbiAgICAgICAgXCJkZWxldGVEYXRhXCIsXHJcbiAgICAgIF0pO1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIDw+XHJcbiAgICAgICAgICA8UmFkaW8uR3JvdXBcclxuICAgICAgICAgICAgdmFsdWU9e3RoaXMuc3RhdGUudmFsdWV9XHJcbiAgICAgICAgICAgIG9wdGlvbnM9e3RoaXMuc3RhdGUuZGF0YVNvdXJjZX1cclxuICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMuaGFuZGxlQWN0aXZlQ2hhbmdlLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgIHsuLi5SYWRpb1Byb3BzfVxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8Lz5cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
382
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvcmFkaW8vUmFkaW9Hcm91cC50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJDb21wb25lbnQiLCJvbWl0IiwiU3RvcmUiLCJ1dGlscyIsImNvbmZpZyIsIlJhZGlvR3JvdXAiLCJwcm9wcyIsImRhdGFTb3VyY2UiLCJkYXRhU3RvcmUiLCJ2YWx1ZSIsIl90aGlzIiwic3RvcmUiLCJvcHRpb25zIiwiZGF0YSIsImNoaWxkcmVuIiwiYWRkRGF0YSIsImRlbGV0ZURhdGEiLCJ2aWV3dHlwZSIsInZhbHVlRmllbGQiLCJ2aWV3bmFtZSIsInZpZXdVcmwiLCJ2aWV3Qml6VXJsIiwicmVxdWVzdFZpZXdVcmwiLCJ1cmwiLCJsaXN0ZW5lcnMiLCJsaXN0ZW5lcnNQb3BzIiwiY2FjaGVkIiwiY2FjaGVLZXkiLCJzdG9yZXMiLCJFcnJvciIsImdldEFsbERhdGEiLCJBcnJheSIsImlzQXJyYXkiLCJuZXdEYXRhIiwibGVuZ3RoIiwidmFsdWVGaWVsZHMiLCJzcGxpdCIsIm1hcCIsIml0ZW0iLCJpIiwidiIsImluZGV4IiwiaW5kZXhPZiIsInNwbGljZSIsInN0b3JlUHJvcHMiLCJtb2RlbCIsImNvbXBvbmVudCIsIm9uQmVmb3JlTG9hZCIsImNhbGxiYWNrIiwibG9hZCIsIm1vZGVsRGF0YSIsImNvbnZlcnREYXRhIiwic2V0U3RhdGUiLCJkYXRhQ2hhbmdlZCIsImlzQ2FjaGVkIiwiaXNDYWNoZUtleSIsImF1dG9Mb2FkIiwiZSIsImN1c3RvbWl6ZSIsIm9uQ2hhbmdlIiwidGFyZ2V0Iiwic3RhdGUiLCJsYWJlbEZpZWxkIiwiZGF0YVNvdXJlIiwib2JqIiwibGFiZWwiLCJsYWJlbEZpZWxkcyIsImwiLCJkaXNhYmxlZCIsInB1c2giLCJKU09OIiwic3RyaW5naWZ5IiwicmFkaW9zIiwiY2hpbGQiLCJpc0FjdGl2ZSIsImNsb25lRWxlbWVudCIsImFjdGl2ZSIsIm9uQ2xpY2siLCJoYW5kbGVBY3RpdmVDaGFuZ2UiLCJi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QyxFQU1yQyxTQU5xQyxFQU9yQyxZQVBxQyxDQUFoQixDQUF2QjtBQVNBLDRCQUNFLHVEQUNFLDJCQUFPLEtBQVA7QUFDRSxVQUFBLEtBQUssRUFBRSxLQUFLcEIsS0FBTCxDQUFXcEQsS0FEcEI7QUFFRSxVQUFBLE9BQU8sRUFBRSxLQUFLb0QsS0FBTCxDQUFXdEQsVUFGdEI7QUFHRSxVQUFBLFFBQVEsRUFBRSxLQUFLdUUsa0JBQUwsQ0FBd0JDLElBQXhCLENBQTZCLElBQTdCO0FBSFosV0FJTUcsVUFKTixFQURGLENBREY7QUFVRDtBQUNGOzs7O0VBdlBxQ2xGLFM7O1NBQW5CSyxVIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQERlc2NyaXB0dGlvbjpcclxuICogQHZlcnNpb246XHJcbiAqIEBBdXRob3I6IHJ4emh1XHJcbiAqIEBEYXRlOiAyMDIxLTAzLTI0IDE0OjMzOjM1XHJcbiAqIEBMYXN0RWRpdG9yczogcnh6aHVcclxuICogQExhc3RFZGl0VGltZTogMjAyMS0wNC0yMyAxNjo0NjoxN1xyXG4gKi9cclxuaW1wb3J0IFJlYWN0LCB7IENvbXBvbmVudCB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBSYWRpbywgUmFkaW9Hcm91cFByb3BzIH0gZnJvbSBcImFudGRcIjtcclxuaW1wb3J0IG9taXQgZnJvbSBcIm9taXQuanNcIjtcclxuaW1wb3J0IFN0b3JlLCB7IFN0b3JlUHJvcHMgfSBmcm9tIFwiQGJqLW5zYy9tc25cIjtcclxuaW1wb3J0IHsgdXRpbHMgfSBmcm9tIFwiQGJqLW5zYy9tc24vbGliL3V0aWxzXCI7XHJcbmltcG9ydCBjb25maWcgZnJvbSBcIi4uLy4uL2NvbmZpZ1wiO1xyXG5cclxuaW50ZXJmYWNlIElSYWRpb0dyb3VwUHJvcHMgZXh0ZW5kcyBSYWRpb0dyb3VwUHJvcHMge1xyXG4gIGN1c3RvbWl6ZT86IGJvb2xlYW47XHJcbiAgc3RvcmU/OiBTdG9yZVByb3BzO1xyXG4gIGRhdGE/OiBBcnJheTxzdHJpbmcgfCBPYmplY3Q+OyAvL+m7mOiupOaVsOaNrlxyXG4gIGxhYmVsRmllbGQ/OiBzdHJpbmc7XHJcbiAgdmFsdWVGaWVsZD86IHN0cmluZztcclxuICBhZGREYXRhPzogQXJyYXk8c3RyaW5nIHwgT2JqZWN0PjsgLy/kuI5zdG9yZeS4gOi1t+eUqFxyXG4gIGRlbGV0ZURhdGE/OiBBcnJheTxzdHJpbmc+O1xyXG4gIG9uQ2hhbmdlPzogKHZhbHVlOiBhbnksIGU/OiBhbnkpID0+IHZvaWQ7XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmFkaW9Hcm91cCBleHRlbmRzIENvbXBvbmVudDxJUmFkaW9Hcm91cFByb3BzPiB7XHJcbiAgc3RhdGUgPSB7XHJcbiAgICBkYXRhU291cmNlOiBbXSxcclxuICAgIGRhdGFTdG9yZTogW10sXHJcbiAgICB2YWx1ZTogXCJcIixcclxuICB9O1xyXG4gIHN0b3JlID0ge30gYXMgU3RvcmVQcm9wcztcclxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgc3VwZXIocHJvcHMpO1xyXG4gICAgY29uc3QgX3RoaXMgPSB0aGlzO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzdG9yZSA9IHt9LFxyXG4gICAgICBvcHRpb25zLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBjaGlsZHJlbixcclxuICAgICAgYWRkRGF0YSA9IFtdLFxyXG4gICAgICBkZWxldGVEYXRhID0gW10sXHJcbiAgICAgIHZpZXd0eXBlID0gXCJzeXN0ZW1cIixcclxuICAgIH0gPSBwcm9wcztcclxuICAgIGxldCB7IHZhbHVlRmllbGQgfSA9IHByb3BzO1xyXG4gICAgY29uc3QgeyB2aWV3bmFtZSB9ID0gc3RvcmU7XHJcbiAgICB2YWx1ZUZpZWxkID0gdmFsdWVGaWVsZCA/IHZhbHVlRmllbGQgOiB2aWV3bmFtZSA/IFwiZGljdEtleVwiIDogXCJ2YWx1ZVwiO1xyXG4gICAgbGV0IHsgdmlld1VybCwgdmlld0JpelVybCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgcmVxdWVzdFZpZXdVcmwgPSB2aWV3dHlwZSA9PSBcInN5c3RlbVwiID8gdmlld1VybCA6IHZpZXdCaXpVcmw7XHJcbiAgICBpZiAoIWNoaWxkcmVuKSB7XHJcbiAgICAgIGNvbnN0IHtcclxuICAgICAgICB1cmwsXHJcbiAgICAgICAgbGlzdGVuZXJzOiBsaXN0ZW5lcnNQb3BzID0ge30sXHJcbiAgICAgICAgdmlld25hbWUsXHJcbiAgICAgICAgY2FjaGVkLFxyXG4gICAgICAgIGNhY2hlS2V5LFxyXG4gICAgICAgIC4uLnN0b3Jlc1xyXG4gICAgICB9ID0gc3RvcmU7XHJcbiAgICAgIGlmICghdXJsICYmICFvcHRpb25zICYmICFkYXRhICYmICF2aWV3bmFtZSlcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1cmzjgIF2aWV3bmFtZeOAgWRhdGHlkoxvcHRpb25z5LiN6IO96YO95Li656m677yBXCIpO1xyXG4gICAgICBjb25zdCBnZXRBbGxEYXRhID0gKGRhdGEpID0+IHtcclxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZGF0YSkpIHtcclxuICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IG5ld0RhdGEgPSBbLi4uZGF0YV07XHJcbiAgICAgICAgaWYgKGFkZERhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgbmV3RGF0YSA9IFsuLi5hZGREYXRhLCAuLi5uZXdEYXRhXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRlbGV0ZURhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgY29uc3QgdmFsdWVGaWVsZHM6IGFueSA9IHZhbHVlRmllbGQuc3BsaXQoXCIsXCIpO1xyXG4gICAgICAgICAgbmV3RGF0YS5tYXAoKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSBcIm9iamVjdFwiKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHZhbHVlID0gXCJcIjtcclxuICAgICAgICAgICAgICB2YWx1ZUZpZWxkcy5tYXAoKHYsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IGluZGV4ID09IDAgPyB2YWx1ZSArIGl0ZW1bdl0gOiB2YWx1ZSArIFwiLFwiICsgaXRlbVt2XTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBpZiAoZGVsZXRlRGF0YS5pbmRleE9mKHZhbHVlKSA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICBuZXdEYXRhLnNwbGljZShpLCAxKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGl0ZW0gPT09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICAgICAgICBpZiAoZGVsZXRlRGF0YS5pbmRleE9mKGl0ZW0pID4gLTEpIHtcclxuICAgICAgICAgICAgICAgIG5ld0RhdGEuc3BsaWNlKGksIDEpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZXdEYXRhO1xyXG4gICAgICB9O1xyXG4gICAgICB2YXIgc3RvcmVQcm9wcyA9IHtcclxuICAgICAgICBtb2RlbDogXCJtb2RlbFwiLFxyXG4gICAgICAgIGNvbXBvbmVudDogdGhpcyxcclxuICAgICAgICBsaXN0ZW5lcnM6IHtcclxuICAgICAgICAgIG9uQmVmb3JlTG9hZDogZnVuY3Rpb24gKHN0b3JlLCBvcHRpb25zKSB7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1BvcHMub25CZWZvcmVMb2FkLCBfdGhpcywgW3N0b3JlLCBvcHRpb25zXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgbG9hZDogZnVuY3Rpb24gKGRhdGEsIG1vZGVsRGF0YSwgc3RvcmUpIHtcclxuICAgICAgICAgICAgbGV0IGRhdGFTb3VyY2UgPSBfdGhpcy5jb252ZXJ0RGF0YShnZXRBbGxEYXRhKGRhdGEpKTtcclxuICAgICAgICAgICAgX3RoaXMuc2V0U3RhdGUoeyBkYXRhU291cmNlOiBkYXRhU291cmNlIH0pO1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQb3BzLmxvYWQsIF90aGlzLCBbZGF0YSwgbW9kZWxEYXRhLCBzdG9yZV0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGRhdGFDaGFuZ2VkOiBmdW5jdGlvbiAoZGF0YSwgbW9kZWxEYXRhLCBzdG9yZSkge1xyXG4gICAgICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgZGF0YVNvdXJjZTogX3RoaXMuY29udmVydERhdGEoZ2V0QWxsRGF0YShkYXRhKSksXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQb3BzLmRhdGFDaGFuZ2VkLCBfdGhpcywgW1xyXG4gICAgICAgICAgICAgIGRhdGEsXHJcbiAgICAgICAgICAgICAgbW9kZWxEYXRhLFxyXG4gICAgICAgICAgICAgIHN0b3JlLFxyXG4gICAgICAgICAgICBdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi5zdG9yZXMsXHJcbiAgICAgIH07XHJcbiAgICAgIGlmICgodmlld25hbWUgfHwgdXJsKSAmJiBkYXRhID09IG51bGwgJiYgb3B0aW9ucyA9PSBudWxsKSB7XHJcbiAgICAgICAgbGV0IGlzQ2FjaGVkID0gY2FjaGVkO1xyXG4gICAgICAgIGxldCBpc0NhY2hlS2V5ID0gY2FjaGVLZXk7XHJcbiAgICAgICAgaWYgKHZpZXduYW1lKSB7XHJcbiAgICAgICAgICBpZiAodHlwZW9mIGNhY2hlZCAhPT0gXCJib29sZWFuXCIpIHtcclxuICAgICAgICAgICAgaXNDYWNoZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICBpc0NhY2hlS2V5ID0gaXNDYWNoZUtleSA/IGlzQ2FjaGVLZXkgOiB2aWV3bmFtZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgc3RvcmVQcm9wcyA9IHtcclxuICAgICAgICAgIC4uLntcclxuICAgICAgICAgICAgYXV0b0xvYWQ6IHRydWUsXHJcbiAgICAgICAgICAgIHVybDogdXJsID8gdXJsIDogcmVxdWVzdFZpZXdVcmwgKyB2aWV3bmFtZSwgLy/or7vlrZflhbjvvIx1cmzlm7rlrprvvIx2aWV3bmFtZVxyXG4gICAgICAgICAgICBjYWNoZWQ6IGlzQ2FjaGVkLFxyXG4gICAgICAgICAgICBjYWNoZUtleTogaXNDYWNoZUtleSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAuLi5zdG9yZVByb3BzLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zdG9yZSA9IG5ldyBTdG9yZShzdG9yZVByb3BzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUFjdGl2ZUNoYW5nZShlKSB7XHJcbiAgICBjb25zdCB7IGN1c3RvbWl6ZSwgb25DaGFuZ2UgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoY3VzdG9taXplKSB7XHJcbiAgICAgIG9uQ2hhbmdlICYmIG9uQ2hhbmdlKGUpO1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICB2YWx1ZTogZSxcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICB2YWx1ZTogZS50YXJnZXQudmFsdWUsXHJcbiAgICAgIH0pO1xyXG4gICAgICBvbkNoYW5nZSAmJiBvbkNoYW5nZShlLnRhcmdldC52YWx1ZSwgZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldFZhbHVlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdGUudmFsdWU7XHJcbiAgfVxyXG4gIHNldFZhbHVlKHZhbHVlKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgdmFsdWU6IHZhbHVlLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGNvbnZlcnREYXRhKGRhdGEpIHtcclxuICAgIGxldCB7IHN0b3JlID0ge30sIHZhbHVlRmllbGQsIGxhYmVsRmllbGQgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHZpZXduYW1lIH0gPSBzdG9yZTtcclxuXHJcbiAgICB2YWx1ZUZpZWxkID0gdmFsdWVGaWVsZCA/IHZhbHVlRmllbGQgOiB2aWV3bmFtZSA/IFwiZGljdEtleVwiIDogXCJ2YWx1ZVwiO1xyXG4gICAgbGFiZWxGaWVsZCA9IGxhYmVsRmllbGQgPyBsYWJlbEZpZWxkIDogdmlld25hbWUgPyBcImRpY3RWYWx1ZVwiIDogXCJsYWJlbFwiO1xyXG4gICAgbGV0IGRhdGFTb3VyZSA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmICh0eXBlb2YgZGF0YVtpXSA9PT0gXCJvYmplY3RcIikge1xyXG4gICAgICAgIGxldCBvYmogPSB7IC4uLmRhdGFbaV0gfTtcclxuICAgICAgICBsZXQgdmFsdWUgPSBcIlwiO1xyXG4gICAgICAgIGlmICh2YWx1ZUZpZWxkLnNwbGl0KFwiLFwiKS5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgdmFsdWUgPSBkYXRhW2ldW3ZhbHVlRmllbGRdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCB2YWx1ZUZpZWxkczogYW55ID0gdmFsdWVGaWVsZC5zcGxpdChcIixcIik7XHJcbiAgICAgICAgICB2YWx1ZUZpZWxkcy5tYXAoKHYsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIHZhbHVlID0gaW5kZXggPT0gMCA/IHZhbHVlICsgZGF0YVtpXVt2XSA6IHZhbHVlICsgXCIsXCIgKyBkYXRhW2ldW3ZdO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBsYWJlbCA9IFwiXCI7XHJcbiAgICAgICAgaWYgKGxhYmVsRmllbGQuc3BsaXQoXCIsXCIpLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgICBsYWJlbCA9IGRhdGFbaV1bbGFiZWxGaWVsZF07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IGxhYmVsRmllbGRzOiBhbnkgPSBsYWJlbEZpZWxkLnNwbGl0KFwiLFwiKTtcclxuICAgICAgICAgIGxhYmVsRmllbGRzLm1hcCgobCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgbGFiZWwgPSBpbmRleCA9PSAwID8gbGFiZWwgKyBkYXRhW2ldW2xdIDogbGFiZWwgKyBcIi1cIiArIGRhdGFbaV1bbF07XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgb2JqLmxhYmVsID0gbGFiZWw7XHJcbiAgICAgICAgb2JqLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgb2JqLmRpc2FibGVkID0gZGF0YVtpXS5kaXNhYmxlZCA/IGRhdGFbaV0uZGlzYWJsZWQgOiBmYWxzZTtcclxuICAgICAgICBkYXRhU291cmUucHVzaChvYmopO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGxldCBvYmogPSB7fSBhcyB7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBhbnk7IGRpc2FibGVkPzogYm9vbGVhbiB9O1xyXG4gICAgICAgIG9iai5sYWJlbCA9IGRhdGFbaV07XHJcbiAgICAgICAgb2JqLnZhbHVlID0gZGF0YVtpXTtcclxuICAgICAgICBvYmouZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICBkYXRhU291cmUucHVzaChvYmopO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGF0YVNvdXJlO1xyXG4gIH1cclxuICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgIGNvbnN0IHsgZGF0YSwgb3B0aW9ucywgY2hpbGRyZW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIWNoaWxkcmVuICYmIChkYXRhIHx8IG9wdGlvbnMpKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGRhdGFTb3VyY2U6IHRoaXMuY29udmVydERhdGEoZGF0YSA/IGRhdGEgOiBvcHRpb25zKSxcclxuICAgICAgICBkYXRhU3RvcmU6IGRhdGEgPyBkYXRhIDogb3B0aW9ucyxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb21wb25lbnREaWRVcGRhdGUoKSB7XHJcbiAgICBjb25zdCB7IGRhdGFTdG9yZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgZGF0YSwgb3B0aW9ucyB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IG5ld0RhdGEgPSBkYXRhID8gZGF0YSA6IG9wdGlvbnM7XHJcbiAgICBpZiAoZGF0YSB8fCBvcHRpb25zKSB7XHJcbiAgICAgIGlmIChKU09OLnN0cmluZ2lmeShkYXRhU3RvcmUpICE9PSBKU09OLnN0cmluZ2lmeShuZXdEYXRhKSkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgZGF0YVNvdXJjZTogdGhpcy5jb252ZXJ0RGF0YShuZXdEYXRhKSxcclxuICAgICAgICAgIGRhdGFTdG9yZTogbmV3RGF0YSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVuZGVyKCkge1xyXG4gICAgY29uc3QgeyBjaGlsZHJlbiwgY3VzdG9taXplID0gZmFsc2UgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgcmFkaW9zOiBhbnk7XHJcbiAgICByYWRpb3MgPSBjaGlsZHJlbjtcclxuICAgIGNvbnN0IGlzQXJyYXkgPSBBcnJheS5pc0FycmF5KGNoaWxkcmVuKTtcclxuICAgIGlmIChjdXN0b21pemUpIHtcclxuICAgICAgaWYgKGlzQXJyYXkpIHtcclxuICAgICAgICByZXR1cm4gcmFkaW9zLm1hcCgoY2hpbGQsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICBsZXQgaXNBY3RpdmUgPSB0aGlzLnByb3BzLnZhbHVlID09PSBjaGlsZC5wcm9wcy52YWx1ZSA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICAgIHJldHVybiBSZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGQsIHtcclxuICAgICAgICAgICAgbGFiZWw6IGNoaWxkLnByb3BzLmNoaWxkcmVuLFxyXG4gICAgICAgICAgICB2YWx1ZTogY2hpbGQucHJvcHMudmFsdWUsXHJcbiAgICAgICAgICAgIGFjdGl2ZTogaXNBY3RpdmUsXHJcbiAgICAgICAgICAgIG9uQ2xpY2s6IHRoaXMuaGFuZGxlQWN0aXZlQ2hhbmdlLmJpbmQodGhpcywgY2hpbGQucHJvcHMudmFsdWUpLFxyXG4gICAgICAgICAgICBrZXk6IGluZGV4LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbGV0IGlzQWN0aXZlID0gdGhpcy5wcm9wcy52YWx1ZSA9PT0gcmFkaW9zLnByb3BzLnZhbHVlID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICAgIHJldHVybiBSZWFjdC5jbG9uZUVsZW1lbnQocmFkaW9zLCB7XHJcbiAgICAgICAgICBsYWJlbDogcmFkaW9zLnByb3BzLmNoaWxkcmVuLFxyXG4gICAgICAgICAgdmFsdWU6IHJhZGlvcy5wcm9wcy52YWx1ZSxcclxuICAgICAgICAgIGFjdGl2ZTogaXNBY3RpdmUsXHJcbiAgICAgICAgICBvbkNsaWNrOiB0aGlzLmhhbmRsZUFjdGl2ZUNoYW5nZS5iaW5kKHRoaXMsIHJhZGlvcy5wcm9wcy52YWx1ZSksXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHsgZGF0YSwgb3B0aW9ucywgLi4ucGFyYW1zIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICBjb25zdCBSYWRpb1Byb3BzID0gb21pdCh7IC4uLnBhcmFtcyB9LCBbXHJcbiAgICAgICAgXCJzdG9yZVwiLFxyXG4gICAgICAgIFwibGFiZWxGaWVsZFwiLFxyXG4gICAgICAgIFwidmFsdWVGaWVsZFwiLFxyXG4gICAgICAgIFwiY3VzdG9taXplXCIsXHJcbiAgICAgICAgXCJvbkNoYW5nZVwiLFxyXG4gICAgICAgIFwiYWRkRGF0YVwiLFxyXG4gICAgICAgIFwiZGVsZXRlRGF0YVwiLFxyXG4gICAgICBdKTtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8PlxyXG4gICAgICAgICAgPFJhZGlvLkdyb3VwXHJcbiAgICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlLnZhbHVlfVxyXG4gICAgICAgICAgICBvcHRpb25zPXt0aGlzLnN0YXRlLmRhdGFTb3VyY2V9XHJcbiAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLmhhbmRsZUFjdGl2ZUNoYW5nZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICB7Li4uUmFkaW9Qcm9wc31cclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC8+XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==