nsc-react-component 2.0.2 → 2.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/lib/affix/index.d.ts +5 -0
  2. package/lib/affix/index.js +50 -0
  3. package/lib/alert/index.d.ts +5 -0
  4. package/lib/alert/index.js +50 -0
  5. package/lib/anchor/index.d.ts +6 -0
  6. package/lib/anchor/index.js +54 -0
  7. package/lib/avatar/index.d.ts +6 -0
  8. package/lib/avatar/index.js +54 -0
  9. package/lib/backTop/index.d.ts +5 -0
  10. package/lib/backTop/index.js +50 -0
  11. package/lib/badge/index.d.ts +6 -0
  12. package/lib/badge/index.js +54 -0
  13. package/lib/breadcrumb/index.d.ts +5 -0
  14. package/lib/breadcrumb/index.js +50 -0
  15. package/lib/calendar/index.d.ts +5 -0
  16. package/lib/calendar/index.js +50 -0
  17. package/lib/card/index.d.ts +7 -0
  18. package/lib/card/index.js +56 -0
  19. package/lib/carousel/index.d.ts +5 -0
  20. package/lib/carousel/index.js +50 -0
  21. package/lib/collapse/index.d.ts +6 -0
  22. package/lib/collapse/index.js +54 -0
  23. package/lib/comment/index.d.ts +5 -0
  24. package/lib/comment/index.js +50 -0
  25. package/lib/configProvider/index.d.ts +5 -0
  26. package/lib/configProvider/index.js +54 -0
  27. package/lib/descriptions/index.d.ts +6 -0
  28. package/lib/descriptions/index.js +54 -0
  29. package/lib/divider/index.d.ts +5 -0
  30. package/lib/divider/index.js +50 -0
  31. package/lib/drawer/index.d.ts +5 -0
  32. package/lib/drawer/index.js +50 -0
  33. package/lib/dropdown/index.d.ts +5 -0
  34. package/lib/dropdown/index.js +50 -0
  35. package/lib/grid/Col.d.ts +5 -0
  36. package/lib/grid/Col.js +50 -0
  37. package/lib/grid/Row.d.ts +5 -0
  38. package/lib/grid/Row.js +50 -0
  39. package/lib/grid/index.d.ts +1 -0
  40. package/lib/grid/index.js +2 -0
  41. package/lib/image/index.d.ts +9 -0
  42. package/lib/image/index.js +73 -0
  43. package/lib/index.d.ts +36 -1
  44. package/lib/index.js +36 -1
  45. package/lib/layout/index.d.ts +9 -0
  46. package/lib/layout/index.js +64 -0
  47. package/lib/list/index.d.ts +6 -0
  48. package/lib/list/index.js +54 -0
  49. package/lib/message/index.d.ts +13 -0
  50. package/lib/message/index.js +59 -0
  51. package/lib/modal/index.d.ts +5 -0
  52. package/lib/modal/index.js +13 -3
  53. package/lib/notification/index.d.ts +12 -0
  54. package/lib/notification/index.js +59 -0
  55. package/lib/pageComponents/BasePage/Form.js +14 -14
  56. package/lib/pageComponents/BasePage/index.d.ts +5 -0
  57. package/lib/pageComponents/BasePage/index.js +96 -25
  58. package/lib/pageComponents/BasePage/index.less +39 -33
  59. package/lib/pageHeader/index.d.ts +5 -0
  60. package/lib/pageHeader/index.js +50 -0
  61. package/lib/pagination/index.d.ts +5 -0
  62. package/lib/pagination/index.js +50 -0
  63. package/lib/popconfirm/index.d.ts +5 -0
  64. package/lib/popconfirm/index.js +50 -0
  65. package/lib/popover/index.d.ts +5 -0
  66. package/lib/popover/index.js +50 -0
  67. package/lib/progress/index.d.ts +5 -0
  68. package/lib/progress/index.js +50 -0
  69. package/lib/result/index.d.ts +5 -0
  70. package/lib/result/index.js +50 -0
  71. package/lib/skeleton/index.d.ts +5 -0
  72. package/lib/skeleton/index.js +50 -0
  73. package/lib/space/index.d.ts +5 -0
  74. package/lib/space/index.js +50 -0
  75. package/lib/spin/index.d.ts +5 -0
  76. package/lib/spin/index.js +50 -0
  77. package/lib/statistic/index.d.ts +6 -0
  78. package/lib/statistic/index.js +54 -0
  79. package/lib/steps/index.d.ts +5 -0
  80. package/lib/steps/index.js +50 -0
  81. package/lib/table/index.less +2 -2
  82. package/lib/timeline/index.d.ts +6 -0
  83. package/lib/timeline/index.js +54 -0
  84. package/lib/tooltip/index.d.ts +5 -0
  85. package/lib/tooltip/index.js +50 -0
  86. package/lib/typography/index.d.ts +5 -0
  87. package/lib/typography/index.js +50 -0
  88. package/package.json +1 -1
@@ -1,12 +1,5 @@
1
1
  function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
2
2
 
3
- import "antd/es/row/style/css";
4
- import _Row from "antd/es/row";
5
- import "antd/es/col/style/css";
6
- import _Col from "antd/es/col";
7
- import "antd/es/message/style/css";
8
- import _message from "antd/es/message";
9
-
10
3
  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; }
11
4
 
12
5
  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; }
@@ -36,6 +29,9 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
36
29
  import React, { PureComponent } from "react";
37
30
  import Form from "../../form";
38
31
  import { getNode } from "../../utils";
32
+ import message from "../../message";
33
+ import Col from "../../grid/Col";
34
+ import Row from "../../grid/Row";
39
35
 
40
36
  var EditorForm = /*#__PURE__*/function (_PureComponent) {
41
37
  _inherits(EditorForm, _PureComponent);
@@ -89,7 +85,7 @@ var EditorForm = /*#__PURE__*/function (_PureComponent) {
89
85
  });
90
86
  }
91
87
 
92
- (_this$formRef$current = this.formRef.current) === null || _this$formRef$current === void 0 ? void 0 : _this$formRef$current.showForm(value.attribute);
88
+ (_this$formRef$current = this.formRef.current) === null || _this$formRef$current === void 0 ? void 0 : _this$formRef$current.showForm(value === null || value === void 0 ? void 0 : value.attribute);
93
89
  }
94
90
  }, {
95
91
  key: "onSubmit",
@@ -130,6 +126,10 @@ var EditorForm = /*#__PURE__*/function (_PureComponent) {
130
126
  });
131
127
  }
132
128
 
129
+ if (!submitUrl) {
130
+ throw new Error("url不能为空!");
131
+ }
132
+
133
133
  (_this2$formRef$curren = _this2.formRef.current) === null || _this2$formRef$curren === void 0 ? void 0 : _this2$formRef$curren.onSubmit(submitUrl, {
134
134
  data: _objectSpread({}, formValue),
135
135
  noUndefined: label == "编辑",
@@ -142,8 +142,7 @@ var EditorForm = /*#__PURE__*/function (_PureComponent) {
142
142
  });
143
143
 
144
144
  if (code === 200) {
145
- _message.success(label + "成功");
146
-
145
+ message.success(label + "成功");
147
146
  callBack && callBack();
148
147
  }
149
148
  });
@@ -183,7 +182,7 @@ var EditorForm = /*#__PURE__*/function (_PureComponent) {
183
182
  wrapperCol: {
184
183
  flex: "15vw"
185
184
  }
186
- }, /*#__PURE__*/React.createElement(_Row, {
185
+ }, /*#__PURE__*/React.createElement(Row, {
187
186
  gutter: 24
188
187
  }, formProps.map(function (item, index) {
189
188
  var props = _objectSpread({}, item.props);
@@ -196,12 +195,13 @@ var EditorForm = /*#__PURE__*/function (_PureComponent) {
196
195
  _this3.valid = newValid;
197
196
  }
198
197
 
199
- return /*#__PURE__*/React.createElement(_Col, {
198
+ return /*#__PURE__*/React.createElement(Col, {
200
199
  span: item.span || 12,
201
200
  key: index
202
201
  }, /*#__PURE__*/React.createElement(Form.Item, {
203
202
  label: item.label,
204
- name: item.name
203
+ name: item.name,
204
+ rules: item.rules
205
205
  }, getNode(item.type, _objectSpread(_objectSpread({}, item.props), {}, {
206
206
  placeholder: "\u8BF7\u8F93\u5165".concat(item.label)
207
207
  }))));
@@ -213,4 +213,4 @@ var EditorForm = /*#__PURE__*/function (_PureComponent) {
213
213
  }(PureComponent);
214
214
 
215
215
  export default EditorForm;
216
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BhZ2VDb21wb25lbnRzL0Jhc2VQYWdlL0Zvcm0udHN4Il0sIm5hbWVzIjpbIlJlYWN0IiwiUHVyZUNvbXBvbmVudCIsIkZvcm0iLCJnZXROb2RlIiwiRWRpdG9yRm9ybSIsImNyZWF0ZVJlZiIsImxvYWRpbmciLCJsYWJlbCIsImVkaXRvckZsYWciLCJ2YWx1ZSIsImZsYWciLCJzZXRTdGF0ZSIsImZvcm1SZWYiLCJjdXJyZW50Iiwic2hvd0Zvcm0iLCJhdHRyaWJ1dGUiLCJwcm9wcyIsImF1dG9TdWJtaXQiLCJzdWJtaXRVcmwiLCJzdWJtaXRQYXJhbXMiLCJvblN1Ym1pdCIsImNhbGxCYWNrIiwic3RhdGUiLCJmb3JtVmFsdWUiLCJnZXRGaWVsZHNWYWx1ZSIsInZhbGlkIiwidmFsaWRhdGVGaWVsZHMiLCJ0aGVuIiwiZGF0YSIsImlkIiwibm9VbmRlZmluZWQiLCJyZXMiLCJjb2RlIiwic3VjY2VzcyIsImNhdGNoIiwiZXJyb3JJbmZvIiwiZm9ybVByb3BzIiwibW9kYWxQcm9wcyIsInRpdGxlIiwib2tUZXh0IiwiY2FuY2VsVGV4dCIsIm9uT2siLCJiaW5kIiwib2tCdXR0b25Qcm9wcyIsImNlbnRlcmVkIiwid2lkdGgiLCJuZXdWYWxpZCIsImZsZXgiLCJtYXAiLCJpdGVtIiwiaW5kZXgiLCJydWxlcyIsImxlbmd0aCIsInB1c2giLCJuYW1lIiwic3BhbiIsInR5cGUiLCJwbGFjZWhvbGRlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFQLElBQWdCQyxhQUFoQixRQUFxQyxPQUFyQztBQUNBLE9BQU9DLElBQVAsTUFBaUIsWUFBakI7QUFFQSxTQUFTQyxPQUFULFFBQXdCLGFBQXhCOztJQUNNQyxVOzs7Ozs7Ozs7Ozs7Ozs7OzJFQUNNSixLQUFLLENBQUNLLFNBQU4sRTs7NERBQ0Y7QUFDTkMsTUFBQUEsT0FBTyxFQUFFLEtBREg7QUFF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QVg7O0FBQ0EsWUFBSWlDLElBQUksQ0FBQ0UsS0FBTCxJQUFjRixJQUFJLENBQUNFLEtBQUwsQ0FBV0MsTUFBWCxHQUFvQixDQUF0QyxFQUF5QztBQUN2Q04sVUFBQUEsUUFBUSxDQUFDTyxJQUFULENBQWNKLElBQUksQ0FBQ0ssSUFBbkI7QUFDRDs7QUFDRCxZQUFJSixLQUFLLEdBQUcsQ0FBUixLQUFjZCxTQUFTLENBQUNnQixNQUE1QixFQUFvQztBQUNsQyxVQUFBLE1BQUksQ0FBQzNCLEtBQUwsR0FBYXFCLFFBQWI7QUFDRDs7QUFDRCw0QkFDRTtBQUFLLFVBQUEsSUFBSSxFQUFFRyxJQUFJLENBQUNNLElBQUwsSUFBYSxFQUF4QjtBQUE0QixVQUFBLEdBQUcsRUFBRUw7QUFBakMsd0JBQ0Usb0JBQUMsSUFBRCxDQUFNLElBQU47QUFBVyxVQUFBLEtBQUssRUFBRUQsSUFBSSxDQUFDMUMsS0FBdkI7QUFBOEIsVUFBQSxJQUFJLEVBQUUwQyxJQUFJLENBQUNLO0FBQXpDLFdBQ0duRCxPQUFPLENBQUM4QyxJQUFJLENBQUNPLElBQU4sa0NBQ0hQLElBQUksQ0FBQ2pDLEtBREY7QUFFTnlDLFVBQUFBLFdBQVcsOEJBQVFSLElBQUksQ0FBQzFDLEtBQWI7QUFGTCxXQURWLENBREYsQ0FERjtBQVVELE9BbEJBLENBREgsQ0FQRixDQURGO0FBK0JEOzs7O0VBL0dzQk4sYTs7QUFrSHpCLGVBQWVHLFVBQWYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IEZvcm0gZnJvbSBcIi4uLy4uL2Zvcm1cIjtcbmltcG9ydCB7IENvbCwgbWVzc2FnZSwgUm93IH0gZnJvbSBcImFudGRcIjtcbmltcG9ydCB7IGdldE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmNsYXNzIEVkaXRvckZvcm0gZXh0ZW5kcyBQdXJlQ29tcG9uZW50PGFueT4ge1xuICBmb3JtUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcbiAgc3RhdGUgPSB7XG4gICAgbG9hZGluZzogZmFsc2UsXG4gICAgbGFiZWw6IFwiXCIsXG4gICAgZWRpdG9yRmxhZzogdHJ1ZSxcbiAgICB2YWx1ZToge30gYXMgYW55LFxuICB9O1xuICB2YWxpZDogYW55ID0gW107XG4gIHNob3codmFsdWU/OiBhbnksIGZsYWcgPSB0cnVlKSB7XG4gICAgbGV0IGxhYmVsID0gXCLmlrDlop5cIjtcbiAgICBpZiAodmFsdWUgJiYgZmxhZykge1xuICAgICAgbGFiZWwgPSBcIue8lui+kVwiO1xuICAgIH0gZWxzZSBpZiAoIWZsYWcpIHtcbiAgICAgIGxhYmVsID0gXCLmn6XnnItcIjtcbiAgICB9XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgbGFiZWw6IGxhYmVsLFxuICAgICAgICBlZGl0b3JGbGFnOiAhZmxhZyxcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5zaG93Rm9ybSh2YWx1ZS5hdHRyaWJ1dGUpO1xuICB9XG4gIG9uU3VibWl0KCkge1xuICAgIGNvbnN0IHtcbiAgICAgIGF1dG9TdWJtaXQgPSB0cnVlLFxuICAgICAgc3VibWl0VXJsID0gXCJcIixcbiAgICAgIHN1Ym1pdFBhcmFtcyA9IHt9LFxuICAgICAgb25TdWJtaXQsXG4gICAgICBjYWxsQmFjayxcbiAgICB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB7IGxhYmVsLCB2YWx1ZSB9ID0gdGhpcy5zdGF0ZTtcbiAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLmZvcm1SZWYuY3VycmVudD8uZ2V0RmllbGRzVmFsdWUoKTtcbiAgICBsZXQgdmFsaWQgPSB0aGlzLnZhbGlkO1xuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50XG4gICAgICA/LnZhbGlkYXRlRmllbGRzKHZhbGlkKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBvblN1Ym1pdCAmJiBvblN1Ym1pdChmb3JtVmFsdWUpO1xuICAgICAgICBpZiAoYXV0b1N1Ym1pdCkge1xuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiB0cnVlIH0pO1xuICAgICAgICAgIGxldCBkYXRhID0geyAuLi5mb3JtVmFsdWUgfTtcbiAgICAgICAgICBpZiAobGFiZWwgPT0gXCLnvJbovpFcIikge1xuICAgICAgICAgICAgZGF0YSA9IHsgLi4uZGF0YSwgaWQ6IHZhbHVlPy5pZCB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8ub25TdWJtaXQoXG4gICAgICAgICAgICBzdWJtaXRVcmwsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGRhdGE6IHsgLi4uZm9ybVZhbHVlIH0sXG4gICAgICAgICAgICAgIG5vVW5kZWZpbmVkOiBsYWJlbCA9PSBcIue8lui+kVwiLFxuICAgICAgICAgICAgICBzdWJtaXRQYXJhbXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHsgY29kZSB9ID0gcmVzO1xuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogZmFsc2UgfSk7XG4gICAgICAgICAgICAgIGlmIChjb2RlID09PSAyMDApIHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlLnN1Y2Nlc3MobGFiZWwgKyBcIuaIkOWKn1wiKTtcbiAgICAgICAgICAgICAgICBjYWxsQmFjayAmJiBjYWxsQmFjaygpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3JJbmZvOiBhbnkpID0+IHt9KTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IGZvcm1Qcm9wcyA9IFtdIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHsgbG9hZGluZywgbGFiZWwsIGVkaXRvckZsYWcgfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3QgbW9kYWxQcm9wcyA9IHtcbiAgICAgIHRpdGxlOiBsYWJlbCxcbiAgICAgIG9rVGV4dDogXCLnoa7lrppcIixcbiAgICAgIGNhbmNlbFRleHQ6IFwi5Y+W5raIXCIsXG4gICAgICBvbk9rOiB0aGlzLm9uU3VibWl0LmJpbmQodGhpcyksXG4gICAgICBva0J1dHRvblByb3BzOiB7IGxvYWRpbmc6IGxvYWRpbmcgfSxcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxuICAgICAgd2lkdGg6IFwiNTB2d1wiLFxuICAgIH07XG4gICAgY29uc3QgbmV3VmFsaWQ6IGFueVtdID0gW107XG4gICAgcmV0dXJuIChcbiAgICAgIDxGb3JtXG4gICAgICAgIHJlZj17dGhpcy5mb3JtUmVmfVxuICAgICAgICBzaG93TW9kZWw9e1wibW9kYWxcIn1cbiAgICAgICAgbW9kYWxQcm9wcz17eyAuLi5tb2RhbFByb3BzIH19XG4gICAgICAgIGxhYmVsQ29sPXt7IGZsZXg6IFwiMTAwcHhcIiB9fVxuICAgICAgICB3cmFwcGVyQ29sPXt7IGZsZXg6IFwiMTV2d1wiIH19XG4gICAgICA+XG4gICAgICAgIDxSb3cgZ3V0dGVyPXsyNH0+XG4gICAgICAgICAge2Zvcm1Qcm9wcy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgY29uc3QgcHJvcHMgPSB7IC4uLml0ZW0ucHJvcHMgfTtcbiAgICAgICAgICAgIGlmIChpdGVtLnJ1bGVzICYmIGl0ZW0ucnVsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICBuZXdWYWxpZC5wdXNoKGl0ZW0ubmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaW5kZXggKyAxID09PSBmb3JtUHJvcHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHRoaXMudmFsaWQgPSBuZXdWYWxpZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxDb2wgc3Bhbj17aXRlbS5zcGFuIHx8IDEyfSBrZXk9e2luZGV4fT5cbiAgICAgICAgICAgICAgICA8Rm9ybS5JdGVtIGxhYmVsPXtpdGVtLmxhYmVsfSBuYW1lPXtpdGVtLm5hbWV9PlxuICAgICAgICAgICAgICAgICAge2dldE5vZGUoaXRlbS50eXBlLCB7XG4gICAgICAgICAgICAgICAgICAgIC4uLml0ZW0ucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBg6K+36L6T5YWlJHtpdGVtLmxhYmVsfWAsXG4gICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICA8L0Zvcm0uSXRlbT5cbiAgICAgICAgICAgICAgPC9Db2w+XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pfVxuICAgICAgICA8L1Jvdz5cbiAgICAgIDwvRm9ybT5cbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEVkaXRvckZvcm07XG4iXX0=
216
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BhZ2VDb21wb25lbnRzL0Jhc2VQYWdlL0Zvcm0udHN4Il0sIm5hbWVzIjpbIlJlYWN0IiwiUHVyZUNvbXBvbmVudCIsIkZvcm0iLCJnZXROb2RlIiwibWVzc2FnZSIsIkNvbCIsIlJvdyIsIkVkaXRvckZvcm0iLCJjcmVhdGVSZWYiLCJsb2FkaW5nIiwibGFiZWwiLCJlZGl0b3JGbGFnIiwidmFsdWUiLCJmbGFnIiwic2V0U3RhdGUiLCJmb3JtUmVmIiwiY3VycmVudCIsInNob3dGb3JtIiwiYXR0cmlidXRlIiwicHJvcHMiLCJhdXRvU3VibWl0Iiwic3VibWl0VXJsIiwic3VibWl0UGFyYW1zIiwib25TdWJtaXQiLCJjYWxsQmFjayIsInN0YXRlIiwiZm9ybVZhbHVlIiwiZ2V0RmllbGRzVmFsdWUiLCJ2YWxpZCIsInZhbGlkYXRlRmllbGRzIiwidGhlbiIsImRhdGEiLCJpZCIsIkVycm9yIiwibm9VbmRlZmluZWQiLCJyZXMiLCJjb2RlIiwic3VjY2VzcyIsImNhdGNoIiwiZXJyb3JJbmZvIiwiZm9ybVByb3BzIiwibW9kYWxQcm9wcyIsInRpdGxlIiwib2tUZXh0IiwiY2FuY2VsVGV4dCIsIm9uT2siLCJiaW5kIiwib2tCdXR0b25Qcm9wcyIsImNlbnRlcmVkIiwid2lkdGgiLCJuZXdWYWxpZCIsImZsZXgiLCJtYXAiLCJpdGVtIiwiaW5kZXgiLCJydWxlcyIsImxlbmd0aCIsInB1c2giLCJuYW1lIiwic3BhbiIsInR5cGUiLCJwbGFjZWhvbGRlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU9BLEtBQVAsSUFBZ0JDLGFBQWhCLFFBQXFDLE9BQXJDO0FBQ0EsT0FBT0MsSUFBUCxNQUFpQixZQUFqQjtBQUNBLFNBQVNDLE9BQVQsUUFBd0IsYUFBeEI7QUFDQSxPQUFPQyxPQUFQLE1BQW9CLGVBQXBCO0FBQ0EsT0FBT0MsR0FBUCxNQUFnQixnQkFBaEI7QUFDQSxP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cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBGb3JtIGZyb20gXCIuLi8uLi9mb3JtXCI7XG5pbXBvcnQgeyBnZXROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgbWVzc2FnZSBmcm9tIFwiLi4vLi4vbWVzc2FnZVwiO1xuaW1wb3J0IENvbCBmcm9tIFwiLi4vLi4vZ3JpZC9Db2xcIjtcbmltcG9ydCBSb3cgZnJvbSBcIi4uLy4uL2dyaWQvUm93XCI7XG5jbGFzcyBFZGl0b3JGb3JtIGV4dGVuZHMgUHVyZUNvbXBvbmVudDxhbnk+IHtcbiAgZm9ybVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XG4gIHN0YXRlID0ge1xuICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgIGxhYmVsOiBcIlwiLFxuICAgIGVkaXRvckZsYWc6IHRydWUsXG4gICAgdmFsdWU6IHt9IGFzIGFueSxcbiAgfTtcbiAgdmFsaWQ6IGFueSA9IFtdO1xuICBzaG93KHZhbHVlPzogYW55LCBmbGFnID0gdHJ1ZSkge1xuICAgIGxldCBsYWJlbCA9IFwi5paw5aKeXCI7XG4gICAgaWYgKHZhbHVlICYmIGZsYWcpIHtcbiAgICAgIGxhYmVsID0gXCLnvJbovpFcIjtcbiAgICB9IGVsc2UgaWYgKCFmbGFnKSB7XG4gICAgICBsYWJlbCA9IFwi5p+l55yLXCI7XG4gICAgfVxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGxhYmVsOiBsYWJlbCxcbiAgICAgICAgZWRpdG9yRmxhZzogIWZsYWcsXG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2hvd0Zvcm0odmFsdWU/LmF0dHJpYnV0ZSk7XG4gIH1cbiAgb25TdWJtaXQoKSB7XG4gICAgY29uc3Qge1xuICAgICAgYXV0b1N1Ym1pdCA9IHRydWUsXG4gICAgICBzdWJtaXRVcmwgPSBcIlwiLFxuICAgICAgc3VibWl0UGFyYW1zID0ge30sXG4gICAgICBvblN1Ym1pdCxcbiAgICAgIGNhbGxCYWNrLFxuICAgIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHsgbGFiZWwsIHZhbHVlIH0gPSB0aGlzLnN0YXRlO1xuICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuZm9ybVJlZi5jdXJyZW50Py5nZXRGaWVsZHNWYWx1ZSgpO1xuICAgIGxldCB2YWxpZCA9IHRoaXMudmFsaWQ7XG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnRcbiAgICAgID8udmFsaWRhdGVGaWVsZHModmFsaWQpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIG9uU3VibWl0ICYmIG9uU3VibWl0KGZvcm1WYWx1ZSk7XG4gICAgICAgIGlmIChhdXRvU3VibWl0KSB7XG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IHRydWUgfSk7XG4gICAgICAgICAgbGV0IGRhdGEgPSB7IC4uLmZvcm1WYWx1ZSB9O1xuICAgICAgICAgIGlmIChsYWJlbCA9PSBcIue8lui+kVwiKSB7XG4gICAgICAgICAgICBkYXRhID0geyAuLi5kYXRhLCBpZDogdmFsdWU/LmlkIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghc3VibWl0VXJsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1cmzkuI3og73kuLrnqbrvvIFcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5vblN1Ym1pdChcbiAgICAgICAgICAgIHN1Ym1pdFVybCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZGF0YTogeyAuLi5mb3JtVmFsdWUgfSxcbiAgICAgICAgICAgICAgbm9VbmRlZmluZWQ6IGxhYmVsID09IFwi57yW6L6RXCIsXG4gICAgICAgICAgICAgIHN1Ym1pdFBhcmFtcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgeyBjb2RlIH0gPSByZXM7XG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSB9KTtcbiAgICAgICAgICAgICAgaWYgKGNvZGUgPT09IDIwMCkge1xuICAgICAgICAgICAgICAgIG1lc3NhZ2Uuc3VjY2VzcyhsYWJlbCArIFwi5oiQ5YqfXCIpO1xuICAgICAgICAgICAgICAgIGNhbGxCYWNrICYmIGNhbGxCYWNrKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvckluZm86IGFueSkgPT4ge30pO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgZm9ybVByb3BzID0gW10gfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgeyBsb2FkaW5nLCBsYWJlbCwgZWRpdG9yRmxhZyB9ID0gdGhpcy5zdGF0ZTtcbiAgICBjb25zdCBtb2RhbFByb3BzID0ge1xuICAgICAgdGl0bGU6IGxhYmVsLFxuICAgICAgb2tUZXh0OiBcIuehruWumlwiLFxuICAgICAgY2FuY2VsVGV4dDogXCLlj5bmtohcIixcbiAgICAgIG9uT2s6IHRoaXMub25TdWJtaXQuYmluZCh0aGlzKSxcbiAgICAgIG9rQnV0dG9uUHJvcHM6IHsgbG9hZGluZzogbG9hZGluZyB9LFxuICAgICAgY2VudGVyZWQ6IHRydWUsXG4gICAgICB3aWR0aDogXCI1MHZ3XCIsXG4gICAgfTtcbiAgICBjb25zdCBuZXdWYWxpZDogYW55W10gPSBbXTtcbiAgICByZXR1cm4gKFxuICAgICAgPEZvcm1cbiAgICAgICAgcmVmPXt0aGlzLmZvcm1SZWZ9XG4gICAgICAgIHNob3dNb2RlbD17XCJtb2RhbFwifVxuICAgICAgICBtb2RhbFByb3BzPXt7IC4uLm1vZGFsUHJvcHMgfX1cbiAgICAgICAgbGFiZWxDb2w9e3sgZmxleDogXCIxMDBweFwiIH19XG4gICAgICAgIHdyYXBwZXJDb2w9e3sgZmxleDogXCIxNXZ3XCIgfX1cbiAgICAgID5cbiAgICAgICAgPFJvdyBndXR0ZXI9ezI0fT5cbiAgICAgICAgICB7Zm9ybVByb3BzLm1hcCgoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwcm9wcyA9IHsgLi4uaXRlbS5wcm9wcyB9O1xuICAgICAgICAgICAgaWYgKGl0ZW0ucnVsZXMgJiYgaXRlbS5ydWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIG5ld1ZhbGlkLnB1c2goaXRlbS5uYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpbmRleCArIDEgPT09IGZvcm1Qcm9wcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgdGhpcy52YWxpZCA9IG5ld1ZhbGlkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPENvbCBzcGFuPXtpdGVtLnNwYW4gfHwgMTJ9IGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgIDxGb3JtLkl0ZW1cbiAgICAgICAgICAgICAgICAgIGxhYmVsPXtpdGVtLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgbmFtZT17aXRlbS5uYW1lfVxuICAgICAgICAgICAgICAgICAgcnVsZXM9e2l0ZW0ucnVsZXN9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge2dldE5vZGUoaXRlbS50eXBlLCB7XG4gICAgICAgICAgICAgICAgICAgIC4uLml0ZW0ucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBg6K+36L6T5YWlJHtpdGVtLmxhYmVsfWAsXG4gICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICA8L0Zvcm0uSXRlbT5cbiAgICAgICAgICAgICAgPC9Db2w+XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pfVxuICAgICAgICA8L1Jvdz5cbiAgICAgIDwvRm9ybT5cbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEVkaXRvckZvcm07XG4iXX0=
@@ -12,6 +12,8 @@ interface TreeProps {
12
12
  showSearch?: boolean;
13
13
  searchKey?: string;
14
14
  searchField?: string;
15
+ titleAlias?: string;
16
+ nodePorps?: object;
15
17
  }
16
18
  interface NSCBaseBageProps {
17
19
  showSearch?: boolean;
@@ -25,6 +27,8 @@ interface NSCBaseBageProps {
25
27
  showToolButton?: boolean;
26
28
  showAddButton?: boolean;
27
29
  editorForm?: boolean;
30
+ showDeleteButton?: boolean;
31
+ deleteUrl?: string;
28
32
  }
29
33
  declare class BasePage extends PureComponent<NSCBaseBageProps, any> {
30
34
  tableRef: React.RefObject<any>;
@@ -34,6 +38,7 @@ declare class BasePage extends PureComponent<NSCBaseBageProps, any> {
34
38
  constructor(props: any);
35
39
  onSelect: (checkedTreeKeys: any) => void;
36
40
  showForm(value?: any, flag?: boolean): void;
41
+ onDelete(): void;
37
42
  tableLoad(params: any): void;
38
43
  onSearch(): void;
39
44
  tableReload(): void;
@@ -1,13 +1,7 @@
1
1
  function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
2
2
 
3
- import "antd/es/popover/style/css";
4
- import _Popover from "antd/es/popover";
5
3
  var _excluded = ["children", "pageType", "onClick"],
6
- _excluded2 = ["children", "pageType", "onClick"];
7
-
8
- 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; }
9
-
10
- 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; }
4
+ _excluded2 = ["children", "pageType", "onClick", "Icon"];
11
5
 
12
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); }
13
7
 
@@ -27,6 +21,10 @@ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToAr
27
21
 
28
22
  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; }
29
23
 
24
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
25
+
26
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
27
+
30
28
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
31
29
 
32
30
  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); } }
@@ -54,12 +52,16 @@ import Table from "../../table";
54
52
  import Tree from "../../tree";
55
53
  import Form from "../../form";
56
54
  import Button from "../../button";
55
+ import Modal from "../../modal";
56
+ import Popover from "../../popover";
57
+ import message from "../../message";
57
58
  import Icon from "../../common/IconFont";
58
59
  import { iconType } from "../../constants";
59
60
  import EditorForm from "./Form";
60
61
  import cls from "classnames";
61
62
  import styles from "./index.less";
62
- import { DownOutlined } from "@ant-design/icons";
63
+ import { DownOutlined, UpOutlined } from "@ant-design/icons";
64
+ import request from "nsc-request";
63
65
 
64
66
  var BasePage = /*#__PURE__*/function (_PureComponent) {
65
67
  _inherits(BasePage, _PureComponent);
@@ -99,7 +101,8 @@ var BasePage = /*#__PURE__*/function (_PureComponent) {
99
101
  _this.state = {
100
102
  type: "add",
101
103
  selectedRowKeys: [],
102
- treeSelectedKey: ""
104
+ treeSelectedKey: "",
105
+ expand: false
103
106
  };
104
107
  return _this;
105
108
  }
@@ -112,6 +115,48 @@ var BasePage = /*#__PURE__*/function (_PureComponent) {
112
115
 
113
116
  var flag = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
114
117
  (_this$editorRef$curre = this.editorRef.current) === null || _this$editorRef$curre === void 0 ? void 0 : _this$editorRef$curre.show(value, flag);
118
+ } //批量删除
119
+
120
+ }, {
121
+ key: "onDelete",
122
+ value: function onDelete() {
123
+ var deleteUrl = this.props.deleteUrl;
124
+ var selectedRowKeys = this.state.selectedRowKeys;
125
+
126
+ if (selectedRowKeys.length == 0) {
127
+ message.warning("请选择要删除的数据!");
128
+ return;
129
+ }
130
+
131
+ if (!deleteUrl) {
132
+ throw new Error("url不能为空!");
133
+ }
134
+
135
+ Modal.confirm({
136
+ title: "是否确认删除所选项?",
137
+ // icon: <Icon type={'icontishi-3'} />,
138
+ okText: "确认",
139
+ cancelText: "取消",
140
+ onOk: function onOk() {
141
+ var requestParam = {
142
+ method: "post",
143
+ data: {
144
+ ids: selectedRowKeys
145
+ }
146
+ };
147
+ request(deleteUrl, _objectSpread({}, requestParam)).then(function (res) {
148
+ var code = res.code;
149
+
150
+ if (code === 200) {
151
+ message.success("删除成功!");
152
+ } else {
153
+ message.error("删除失败!");
154
+ }
155
+ }).catch(function (error) {
156
+ console.log("error", error);
157
+ });
158
+ }
159
+ });
115
160
  }
116
161
  }, {
117
162
  key: "tableLoad",
@@ -232,7 +277,7 @@ var BasePage = /*#__PURE__*/function (_PureComponent) {
232
277
  if (!actionButton) num = 3;
233
278
 
234
279
  if (columnButtons.length > num) {
235
- return /*#__PURE__*/React.createElement(_Popover, {
280
+ return /*#__PURE__*/React.createElement(Popover, {
236
281
  placement: "bottom",
237
282
  title: null,
238
283
  content: content,
@@ -240,13 +285,16 @@ var BasePage = /*#__PURE__*/function (_PureComponent) {
240
285
 
241
286
  }, /*#__PURE__*/React.createElement("div", {
242
287
  className: styles["editor"]
243
- }, "\u66F4\u591A ", /*#__PURE__*/React.createElement(DownOutlined, null)));
288
+ }, "\u66F4\u591A", /*#__PURE__*/React.createElement("span", {
289
+ className: styles["icon"]
290
+ }, /*#__PURE__*/React.createElement(DownOutlined, null))));
244
291
  } else {
245
292
  return columnButtons.map(function (item, index) {
246
293
  var _item$props2 = item.props,
247
294
  children = _item$props2.children,
248
295
  pageType = _item$props2.pageType,
249
296
  _onClick2 = _item$props2.onClick,
297
+ Icon = _item$props2.Icon,
250
298
  params = _objectWithoutProperties(_item$props2, _excluded2);
251
299
 
252
300
  return /*#__PURE__*/React.createElement("div", _extends({
@@ -255,7 +303,7 @@ var BasePage = /*#__PURE__*/function (_PureComponent) {
255
303
  onClick: function onClick() {
256
304
  _onClick2 && _onClick2(record);
257
305
  }
258
- }, params), children);
306
+ }, params), Icon, " ", children);
259
307
  });
260
308
  }
261
309
  } //树点击事件
@@ -322,6 +370,8 @@ var BasePage = /*#__PURE__*/function (_PureComponent) {
322
370
  showToolButton = _this$props$showToolB === void 0 ? true : _this$props$showToolB,
323
371
  _this$props$showAddBu = _this$props.showAddButton,
324
372
  showAddButton = _this$props$showAddBu === void 0 ? true : _this$props$showAddBu,
373
+ _this$props$showDelet = _this$props.showDeleteButton,
374
+ showDeleteButton = _this$props$showDelet === void 0 ? true : _this$props$showDelet,
325
375
  _this$props$editorFor = _this$props.editorForm,
326
376
  editorForm = _this$props$editorFor === void 0 ? true : _this$props$editorFor;
327
377
  var _tableProps$store = tableProps.store,
@@ -337,7 +387,9 @@ var BasePage = /*#__PURE__*/function (_PureComponent) {
337
387
  var _treeProps$store = treeProps.store,
338
388
  treeStore = _treeProps$store === void 0 ? {} : _treeProps$store,
339
389
  _treeProps$showSearch = treeProps.showSearch,
340
- treeSearch = _treeProps$showSearch === void 0 ? true : _treeProps$showSearch;
390
+ treeSearch = _treeProps$showSearch === void 0 ? true : _treeProps$showSearch,
391
+ _treeProps$titleAlias = treeProps.titleAlias,
392
+ titleAlias = _treeProps$titleAlias === void 0 ? "title" : _treeProps$titleAlias;
341
393
  var tableParams = {
342
394
  filterColumn: filterColumn,
343
395
  store: store
@@ -370,7 +422,7 @@ var BasePage = /*#__PURE__*/function (_PureComponent) {
370
422
  }
371
423
 
372
424
  delete temp.search;
373
- editorForms.push({
425
+ temp.editor !== false && editorForms.push({
374
426
  name: temp.field || temp.dataIndex,
375
427
  label: temp.title,
376
428
  rules: temp.rules,
@@ -421,7 +473,7 @@ var BasePage = /*#__PURE__*/function (_PureComponent) {
421
473
  render: function render(text, record) {
422
474
  return /*#__PURE__*/React.createElement("div", {
423
475
  className: styles["action"]
424
- }, actionButton && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
476
+ }, actionButton && editorForm == true && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
425
477
  className: styles["editor"],
426
478
  onClick: _this2.showForm.bind(_this2, record, false)
427
479
  }, "\u67E5\u770B"), /*#__PURE__*/React.createElement("div", {
@@ -431,21 +483,20 @@ var BasePage = /*#__PURE__*/function (_PureComponent) {
431
483
  }
432
484
  });
433
485
  return /*#__PURE__*/React.createElement("div", {
434
- className: styles["page"]
435
- }, /*#__PURE__*/React.createElement("div", {
436
- className: styles["pane"],
486
+ className: styles["page"],
437
487
  style: {
438
488
  display: "flex"
439
489
  }
440
490
  }, showLeft && /*#__PURE__*/React.createElement("div", {
441
- className: "left"
491
+ className: styles["left"]
442
492
  }, /*#__PURE__*/React.createElement(Tree, {
443
493
  store: _objectSpread({}, treeStore),
444
494
  showIcon: false,
445
495
  checkable: false,
446
496
  searchable: treeSearch,
447
497
  onSelect: this.treeSelect.bind(this),
448
- selectedKeys: [this.state.treeSelectedKey]
498
+ selectedKeys: [this.state.treeSelectedKey],
499
+ titleAlias: titleAlias
449
500
  })), /*#__PURE__*/React.createElement("div", {
450
501
  className: styles["right"]
451
502
  }, showSearch && /*#__PURE__*/React.createElement("div", {
@@ -456,6 +507,10 @@ var BasePage = /*#__PURE__*/function (_PureComponent) {
456
507
  wrapperCol: {},
457
508
  layout: "inline"
458
509
  }, searchForms.map(function (item, index) {
510
+ if (index > 2 && !_this2.state.expand) {
511
+ return;
512
+ }
513
+
459
514
  if (!item.type) {
460
515
  return /*#__PURE__*/React.createElement(Form.Input, {
461
516
  label: item.label,
@@ -493,18 +548,34 @@ var BasePage = /*#__PURE__*/function (_PureComponent) {
493
548
  icon: /*#__PURE__*/React.createElement(Icon, {
494
549
  type: iconType.refresh
495
550
  })
496
- }, "\u91CD\u7F6E"))), showToolButton && /*#__PURE__*/React.createElement("div", {
551
+ }, "\u91CD\u7F6E"), searchForms.length > 3 && /*#__PURE__*/React.createElement("a", {
552
+ className: styles.trigger,
553
+ onClick: function onClick() {
554
+ var expand = _this2.state.expand;
555
+
556
+ _this2.setState({
557
+ expand: !expand
558
+ });
559
+ }
560
+ }, this.state.expand ? "收起" : "展开", this.state.expand ? /*#__PURE__*/React.createElement(UpOutlined, null) : /*#__PURE__*/React.createElement(DownOutlined, null)))), showToolButton && /*#__PURE__*/React.createElement("div", {
497
561
  className: styles["buttons"],
498
562
  style: {
499
563
  marginLeft: 0
500
564
  }
501
- }, showAddButton && /*#__PURE__*/React.createElement(Button, {
565
+ }, showAddButton && editorForm == true && /*#__PURE__*/React.createElement(Button, {
502
566
  type: "primary",
503
567
  onClick: this.showForm.bind(this),
504
568
  icon: /*#__PURE__*/React.createElement(Icon, {
505
569
  type: iconType.add
506
570
  })
507
- }, "\u6DFB\u52A0"), Buttons.map(function (item, index) {
571
+ }, "\u6DFB\u52A0"), showDeleteButton && editorForm == true && /*#__PURE__*/React.createElement(Button // type={"primary"}
572
+ , {
573
+ onClick: this.onDelete.bind(this),
574
+ icon: /*#__PURE__*/React.createElement(Icon, {
575
+ type: iconType.delete3
576
+ }),
577
+ danger: true
578
+ }, "\u5220\u9664"), Buttons.map(function (item, index) {
508
579
  return /*#__PURE__*/React.createElement("div", {
509
580
  key: index
510
581
  }, item);
@@ -513,7 +584,7 @@ var BasePage = /*#__PURE__*/function (_PureComponent) {
513
584
  }, /*#__PURE__*/React.createElement(Table, _extends({
514
585
  ref: this.tableRef,
515
586
  columns: tableColumn
516
- }, tableParams))))), editorForm && /*#__PURE__*/React.createElement(EditorForm, {
587
+ }, tableParams)))), editorForm && /*#__PURE__*/React.createElement(EditorForm, {
517
588
  ref: this.editorRef,
518
589
  onCancel: this.showForm.bind(this),
519
590
  callBack: this.tableReload.bind(this),
@@ -529,4 +600,4 @@ var BasePage = /*#__PURE__*/function (_PureComponent) {
529
600
  }(PureComponent);
530
601
 
531
602
  export default BasePage;
532
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BhZ2VDb21wb25lbnRzL0Jhc2VQYWdlL2luZGV4LnRzeCJdLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJUYWJsZSIsIlRyZWUiLCJGb3JtIiwiQnV0dG9uIiwiSWNvbiIsImljb25UeXBlIiwiRWRpdG9yRm9ybSIsImNscyIsInN0eWxlcyIsIkRvd25PdXRsaW5lZCIsIkJhc2VQYWdlIiwicHJvcHMiLCJjcmVhdGVSZWYiLCJjaGVja2VkVHJlZUtleXMiLCJzdGF0ZSIsIm5hbWUiLCJ1c2VyVHlwZSIsImFjY291bnQiLCJ2YWx1ZSIsImRlcHRJZCIsInRhYmxlTG9hZCIsInR5cGUiLCJzZWxlY3RlZFJvd0tleXMiLCJ0cmVlU2VsZWN0ZWRLZXkiLCJmbGFnIiwiZWRpdG9yUmVmIiwiY3VycmVudCIsInNob3ciLCJwYXJhbXMiLCJ0YWJsZVJlZiIsInN0b3JlIiwibG9hZCIsImZyb21WYWx1ZSIsInNlYXJjaFJlZiIsImdldEZpZWxkc1ZhbHVlIiwicmVsb2FkIiwicmVjb3JkIiwic2VsZWN0ZWQiLCJuZXdTZWxlY3RlZFJvd0tleXMiLCJpZCIsIm1hcCIsIml0ZW0iLCJpbmRleCIsInNwbGljZSIsInNldFN0YXRlIiwic2VsZWN0ZWRSb3dzIiwiY2hhbmdlUm93cyIsIm5ld2lkcyIsImxlbmd0aCIsImNoYW5nZUlkcyIsImluZGV4T2YiLCJwdXNoIiwiY29sdW1uQnV0dG9ucyIsImFjdGlvbkJ1dHRvbiIsImNvbnRlbnQiLCJjaGlsZHJlbiIsInBhZ2VUeXBlIiwib25DbGljayIsIm51bSIsInNlbGVjdGVkS2V5cyIsInNlbGVjdGVkTm9kZXMiLCJrZXl3b3JkIiwidHJlZVByb3BzIiwic2VhcmNoS2V5Iiwic2VhcmNoRmllbGQiLCJpc0xlYWYiLCJkYXRhcmVmIiwiYXR0cmlidXRlIiwiY29sdW1ucyIsInNob3dTZWFyY2giLCJhdXRvU3VibWl0Iiwic3VibWl0VXJsIiwidGFibGVQcm9wcyIsInNob3dMZWZ0Iiwic3VibWl0UGFyYW1zIiwic2hvd1Rvb2xCdXR0b24iLCJzaG93QWRkQnV0dG9uIiwiZWRpdG9yRm9ybSIsImZpbHRlckNvbHVtbiIsImFjdGlvbkNvbHVtbiIsInNob3dSb3dTZWxlY3Rpb24iLCJ0cmVlU3RvcmUiLCJ0cmVlU2VhcmNoIiwidGFibGVQYXJhbXMiLCJyb3dTZWxlY3Rpb24iLCJvblNlbGVjdCIsInJvd1NlbGVjdGlvbk9uU2VsZWN0IiwiYmluZCIsIm9uU2VsZWN0QWxsIiwicm93U2VsZWN0aW9uT25TZWxlY3RBbGwiLCJjb2x1bW5XaWR0aCIsInRhYmxlQ29sdW1uIiwic2VhcmNoRm9ybXMiLCJlZGl0b3JGb3JtcyIsInRlbXAiLCJzZWFyY2giLCJmaWVsZCIsImRhdGFJbmRleCIsImxhYmVsIiwidGl0bGUiLCJydWxlcyIsInNwYW4iLCJjb2x1bW5TZWFyY2giLCJmaWx0ZXJQcm9wcyIsIkJ1dHRvbnMiLCJBcnJheSIsImlzQXJyYXkiLCJhbGlnbiIsIndpZHRoIiwicmVuZGVyIiwidGV4dCIsInNob3dGb3JtIiwicmVuZGVyQ2xvdW1uQnV0dG9uIiwiZGlzcGxheSIsInRyZWVTZWxlY3QiLCJtYXJnaW5Ub3AiLCJvblNlYXJjaCIsInJlc2V0RmllbGRzIiwicmVmcmVzaCIsIm1hcmdpbkxlZnQiLCJhZGQiLCJ0YWJsZVJlbG9hZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBT0EsS0FBUCxJQUFnQkMsYUFBaEIsUUFBcUMsT0FBckM7QUFFQSxPQUFPQyxLQUFQLE1BQWtCLGFBQWxCO0FBQ0EsT0FBT0MsSUFBUCxNQUFpQixZQUFqQjtBQUNBLE9BQU9DLElBQVAsTUFBaUIsWUFBakI7QUFDQSxPQUFPQyxNQUFQLE1BQW1CLGNBQW5CO0FBQ0EsT0FBT0MsSUFBUCxNQUFpQix1QkFBakI7QUFDQSxTQUFTQyxRQUFULFFBQXlCLGlCQUF6QjtBQUNBLE9BQU9DLFVBQVAsTUFBdUIs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QUNELE9BRkEsQ0FWSCxDQXBESixlQW1FRTtBQUFLLFFBQUEsU0FBUyxFQUFFakMsTUFBTSxDQUFDLE9BQUQ7QUFBdEIsc0JBQ0Usb0JBQUMsS0FBRDtBQUNFLFFBQUEsR0FBRyxFQUFFLEtBQUtxQixRQURaO0FBRUUsUUFBQSxPQUFPLEVBQUU4RDtBQUZYLFNBR01SLFdBSE4sRUFERixDQW5FRixDQWJGLENBREYsRUEwRkdOLFVBQVUsaUJBQ1Qsb0JBQUMsVUFBRDtBQUNFLFFBQUEsR0FBRyxFQUFFLEtBQUtwRCxTQURaO0FBRUUsUUFBQSxRQUFRLEVBQUUsS0FBS3NGLFFBQUwsQ0FBY3hCLElBQWQsQ0FBbUIsSUFBbkIsQ0FGWjtBQUdFLFFBQUEsUUFBUSxFQUFFLEtBQUtrQyxXQUFMLENBQWlCbEMsSUFBakIsQ0FBc0IsSUFBdEIsQ0FIWjtBQUlFLFFBQUEsU0FBUyxFQUFFTSxXQUpiO0FBS0UsUUFBQSxVQUFVLEVBQUV2QixVQUxkO0FBTUUsUUFBQSxTQUFTLEVBQUVDLFNBTmI7QUFPRSxRQUFBLFlBQVksRUFBRUc7QUFQaEIsUUEzRkosQ0FERjtBQXdHRDs7OztFQTlYb0IzRSxhOztBQWdZdkIsZUFBZVcsUUFBZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50IH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IFN3aXRjaCwgUG9wY29uZmlybSwgbWVzc2FnZSwgTW9kYWwsIFJvdywgQ29sLCBQb3BvdmVyIH0gZnJvbSBcImFudGRcIjtcclxuaW1wb3J0IFRhYmxlIGZyb20gXCIuLi8uLi90YWJsZVwiO1xyXG5pbXBvcnQgVHJlZSBmcm9tIFwiLi4vLi4vdHJlZVwiO1xyXG5pbXBvcnQgRm9ybSBmcm9tIFwiLi4vLi4vZm9ybVwiO1xyXG5pbXBvcnQgQnV0dG9uIGZyb20gXCIuLi8uLi9idXR0b25cIjtcclxuaW1wb3J0IEljb24gZnJvbSBcIi4uLy4uL2NvbW1vbi9JY29uRm9udFwiO1xyXG5pbXBvcnQgeyBpY29uVHlwZSB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcclxuaW1wb3J0IEVkaXRvckZvcm0gZnJvbSBcIi4vRm9ybVwiO1xyXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XHJcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vaW5kZXgubGVzc1wiO1xyXG5pbXBvcnQgU3RvcmUsIHsgUGFnZVN0b3JlLCBTdG9yZVByb3BzIH0gZnJvbSBcIkBiai1uc2MvbXNuXCI7XHJcbmltcG9ydCB7IERvd25PdXRsaW5lZCB9IGZyb20gXCJAYW50LWRlc2lnbi9pY29uc1wiO1xyXG5pbnRlcmZhY2UgVGFibGVQcm9wcyB7XHJcbiAgYWN0aW9uQ29sdW1uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmk43kvZzliJdcclxuICBhY3Rpb25CdXR0b24/OiBib29sZWFuOyAvL+aYr+WQpum7mOiupOaYvuekuuaWsOWinu+8jOe8lui+kem7mOiupOaMiemSrlxyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBmaWx0ZXJDb2x1bW4/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuui/h+a7pOaMiemSrlxyXG4gIHNob3dSb3dTZWxlY3Rpb24/OiBib29sZWFuOyAvL+aYr+WQpuihqOagvOWLvumAieWIl1xyXG59XHJcbmludGVyZmFjZSBUcmVlUHJvcHMge1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBzaG93U2VhcmNoPzogYm9vbGVhbjtcclxuICBzZWFyY2hLZXk/OiBzdHJpbmc7XHJcbiAgc2VhcmNoRmllbGQ/OiBzdHJpbmc7XHJcbn1cclxuaW50ZXJmYWNlIE5TQ0Jhc2VCYWdlUHJvcHMge1xyXG4gIHNob3dTZWFyY2g/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuWktOmDqOaQnOe0ouagj1xyXG4gIHRhYmxlUHJvcHM/OiBUYWJsZVByb3BzOyAvL+ihqOagvOWPguaVsFxyXG4gIHRyZWVQcm9wcz86IFRyZWVQcm9wczsgLy/lt6bkvqfmoJHlj4LmlbBcclxuICBzdWJtaXRQYXJhbXM/OiBPYmplY3Q7XHJcbiAgc3VibWl0VXJsPzogc3RyaW5nO1xyXG4gIGF1dG9TdWJtaXQ/OiBib29sZWFuO1xyXG4gIGNvbHVtbnM6IEFycmF5PE9iamVjdD47XHJcbiAgc2hvd0xlZnQ/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuW3puS+p+ebruW9leagkVxyXG4gIHNob3dUb29sQnV0dG9uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmjInpkq7moI9cclxuICBzaG93QWRkQnV0dG9uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmt7vliqDmjInpkq5cclxuICBlZGl0b3JGb3JtPzogYm9vbGVhbjsgLy/mmK/lkKbpnIDopoHooajljZXlip/og71cclxufVxyXG5cclxuY2xhc3MgQmFzZVBhZ2UgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PE5TQ0Jhc2VCYWdlUHJvcHMsIGFueT4ge1xyXG4gIHRhYmxlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICB0cmVlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBzZWFyY2hSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIGVkaXRvclJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgY29uc3RydWN0b3IocHJvcHM6IGFueSkge1xyXG4gICAgc3VwZXIocHJvcHMpO1xyXG4gICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgdHlwZTogXCJhZGRcIixcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbXSxcclxuICAgICAgdHJlZVNlbGVjdGVkS2V5OiBcIlwiLFxyXG4gICAgfTtcclxuICB9XHJcbiAgb25TZWxlY3QgPSAoY2hlY2tlZFRyZWVLZXlzOiBhbnkpID0+IHtcclxuICAgIGNvbnN0IHsgbmFtZSwgdXNlclR5cGUsIGFjY291bnQgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHsgbmFtZSwgdXNlclR5cGUsIGFjY291bnQsIGRlcHRJZDogY2hlY2tlZFRyZWVLZXlzWzBdIH07XHJcbiAgICB0aGlzLnRhYmxlTG9hZCh2YWx1ZSk7XHJcbiAgfTtcclxuXHJcbiAgLy/mmL7npLrooajljZVcclxuICBzaG93Rm9ybSh2YWx1ZT86IGFueSwgZmxhZyA9IHRydWUpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LnNob3codmFsdWUsIGZsYWcpO1xyXG4gIH1cclxuICB0YWJsZUxvYWQocGFyYW1zOiBhbnkpIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmUubG9hZCh7XHJcbiAgICAgIHBhcmFtczogcGFyYW1zLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8v5p+l6K+iXHJcbiAgb25TZWFyY2goKSB7XHJcbiAgICBjb25zdCBmcm9tVmFsdWUgPSB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5nZXRGaWVsZHNWYWx1ZSgpO1xyXG4gICAgdGhpcy5sb2FkKGZyb21WYWx1ZSk7XHJcbiAgfVxyXG4gIC8v6KGo5qC86YeN5paw5Yqg6L29XHJcbiAgdGFibGVSZWxvYWQoKSB7XHJcbiAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlLnJlbG9hZCgpO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0tleXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5zZWxlY3RlZFJvd0tleXM7XHJcbiAgfVxyXG4gIGdldFNlYXJjaFZhbHVlcygpIHtcclxuICAgIGNvbnN0IGZyb21WYWx1ZSA9IHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LmdldEZpZWxkc1ZhbHVlKCk7XHJcbiAgICByZXR1cm4gZnJvbVZhbHVlO1xyXG4gIH1cclxuICByb3dTZWxlY3Rpb25PblNlbGVjdChyZWNvcmQ6IGFueSwgc2VsZWN0ZWQ6IGFueSkge1xyXG4gICAgY29uc3QgeyBzZWxlY3RlZFJvd0tleXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBsZXQgbmV3U2VsZWN0ZWRSb3dLZXlzID0gWy4uLnNlbGVjdGVkUm93S2V5c107XHJcbiAgICBpZiAoc2VsZWN0ZWQpIHtcclxuICAgICAgbmV3U2VsZWN0ZWRSb3dLZXlzID0gWy4uLm5ld1NlbGVjdGVkUm93S2V5cywgcmVjb3JkLmlkXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHNlbGVjdGVkUm93S2V5cy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChpdGVtID09PSByZWNvcmQuaWQpIHtcclxuICAgICAgICAgIG5ld1NlbGVjdGVkUm93S2V5cy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBuZXdTZWxlY3RlZFJvd0tleXMsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgcm93U2VsZWN0aW9uT25TZWxlY3RBbGwoc2VsZWN0ZWQ6IGFueSwgc2VsZWN0ZWRSb3dzOiBhbnksIGNoYW5nZVJvd3M6IGFueSkge1xyXG4gICAgY29uc3QgeyBzZWxlY3RlZFJvd0tleXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBsZXQgbmV3aWRzOiBhbnkgPSBbXTtcclxuICAgIGlmIChjaGFuZ2VSb3dzLmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IGNoYW5nZUlkcyA9IGNoYW5nZVJvd3MubWFwKChpdGVtOiBhbnkpID0+IGl0ZW0uaWQpO1xyXG4gICAgICBpZiAoc2VsZWN0ZWQpIHtcclxuICAgICAgICBuZXdpZHMgPSBbLi4uc2VsZWN0ZWRSb3dLZXlzLCAuLi5jaGFuZ2VJZHNdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHNlbGVjdGVkUm93S2V5cy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGNoYW5nZUlkcy5pbmRleE9mKGl0ZW0pID09IC0xKSB7XHJcbiAgICAgICAgICAgIG5ld2lkcy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBuZXdpZHMgPSBbLi4uc2VsZWN0ZWRSb3dLZXlzXTtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWxlY3RlZFJvd0tleXM6IFsuLi5uZXdpZHNdLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGxvYWQocGFyYW1zOiBhbnkpIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmUubG9hZCh7IHBhcmFtcyB9KTtcclxuICB9XHJcbiAgcmVuZGVyQ2xvdW1uQnV0dG9uKGNvbHVtbkJ1dHRvbnM6IGFueSwgcmVjb3JkOiBhbnksIGFjdGlvbkJ1dHRvbj86IGJvb2xlYW4pIHtcclxuICAgIGNvbnN0IGNvbnRlbnQgPSBjb2x1bW5CdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCAuLi5wYXJhbXMgfSA9IGl0ZW0ucHJvcHM7XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3NOYW1lPXtjbHMoc3R5bGVzW1wiZWRpdG9yXCJdLCBzdHlsZXNbXCJjb250ZW50LWl0ZW1cIl0pfVxyXG4gICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJlY29yZCk7XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICA+XHJcbiAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuICAgIGxldCBudW0gPSAxO1xyXG4gICAgaWYgKCFhY3Rpb25CdXR0b24pIG51bSA9IDM7XHJcbiAgICBpZiAoY29sdW1uQnV0dG9ucy5sZW5ndGggPiBudW0pIHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8UG9wb3ZlclxyXG4gICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgIHRpdGxlPXtudWxsfVxyXG4gICAgICAgICAgY29udGVudD17Y29udGVudH1cclxuICAgICAgICAgIHRyaWdnZXI9XCJjbGlja1wiXHJcbiAgICAgICAgICAvLyBvdmVybGF5Q2xhc3NOYW1lPXtzdHlsZXNbJ3BvcCddfVxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbXCJlZGl0b3JcIl19PlxyXG4gICAgICAgICAgICDmm7TlpJogPERvd25PdXRsaW5lZCAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9Qb3BvdmVyPlxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGNvbHVtbkJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgLi4ucGFyYW1zIH0gPSBpdGVtLnByb3BzO1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzW1wiZWRpdG9yXCJdfVxyXG4gICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJlY29yZCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICAvL+agkeeCueWHu+S6i+S7tlxyXG4gIHRyZWVTZWxlY3Qoc2VsZWN0ZWRLZXlzOiBhbnksIHsgc2VsZWN0ZWQsIHNlbGVjdGVkTm9kZXMgfTogYW55KSB7XHJcbiAgICBsZXQga2V5d29yZCA9IFwiXCI7XHJcbiAgICBjb25zdCB7IHNlYXJjaEtleSA9IFwia2V5XCIsIHNlYXJjaEZpZWxkID0gXCJcIiB9ID0gdGhpcy5wcm9wcy50cmVlUHJvcHM7XHJcbiAgICBjb25zdCB7IHRyZWVTZWxlY3RlZEtleSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGlmIChzZWxlY3RlZCkge1xyXG4gICAgICBpZiAoc2VsZWN0ZWROb2Rlc1swXS5pc0xlYWYgfHwgIXNlbGVjdGVkTm9kZXNbMF0uY2hpbGRyZW4pIHtcclxuICAgICAgICBpZiAoc2VsZWN0ZWRLZXlzWzBdICE9PSB0cmVlU2VsZWN0ZWRLZXkpIHtcclxuICAgICAgICAgIC8vIGxldCBtYXBEYXRhID0gdGhpcy50cmVlUmVmLmN1cnJlbnQ/LnN0b3JlLmdldEZsYXR0ZW5EYXRhKCk7XHJcbiAgICAgICAgICBrZXl3b3JkID0gc2VsZWN0ZWROb2Rlc1swXS5kYXRhcmVmLmF0dHJpYnV0ZVtzZWFyY2hLZXldO1xyXG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIHRyZWVTZWxlY3RlZEtleTogc2VsZWN0ZWRLZXlzWzBdLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IGtleXdvcmQsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZnJvbVZhbHVlID0gdGhpcy5zZWFyY2hSZWYuY3VycmVudD8uZ2V0RmllbGRzVmFsdWUoKTtcclxuICAgIHNlYXJjaEZpZWxkICYmIHRoaXMubG9hZCh7IC4uLmZyb21WYWx1ZSwgW3NlYXJjaEZpZWxkXToga2V5d29yZCB9KTtcclxuICB9XHJcbiAgcmVuZGVyKCkge1xyXG4gICAgY29uc3QgeyBzZWxlY3RlZFJvd0tleXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGNvbHVtbnMgPSBbXSxcclxuICAgICAgc2hvd1NlYXJjaCA9IHRydWUsXHJcbiAgICAgIGNoaWxkcmVuLFxyXG4gICAgICBhdXRvU3VibWl0ID0gdHJ1ZSxcclxuICAgICAgc3VibWl0VXJsID0gXCJcIixcclxuICAgICAgdGFibGVQcm9wcyA9IHt9LFxyXG4gICAgICB0cmVlUHJvcHMgPSB7fSxcclxuICAgICAgc2hvd0xlZnQgPSBmYWxzZSxcclxuICAgICAgc3VibWl0UGFyYW1zID0ge30sXHJcbiAgICAgIHNob3dUb29sQnV0dG9uID0gdHJ1ZSxcclxuICAgICAgc2hvd0FkZEJ1dHRvbiA9IHRydWUsXHJcbiAgICAgIGVkaXRvckZvcm0gPSB0cnVlLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN0b3JlID0ge30sXHJcbiAgICAgIGZpbHRlckNvbHVtbiA9IHRydWUsXHJcbiAgICAgIGFjdGlvbkJ1dHRvbiA9IHRydWUsXHJcbiAgICAgIGFjdGlvbkNvbHVtbiA9IHRydWUsXHJcbiAgICAgIHNob3dSb3dTZWxlY3Rpb24gPSB0cnVlLFxyXG4gICAgfSA9IHRhYmxlUHJvcHM7XHJcblxyXG4gICAgY29uc3QgeyBzdG9yZTogdHJlZVN0b3JlID0ge30sIHNob3dTZWFyY2g6IHRyZWVTZWFyY2ggPSB0cnVlIH0gPSB0cmVlUHJvcHM7XHJcblxyXG4gICAgbGV0IHRhYmxlUGFyYW1zID0geyBmaWx0ZXJDb2x1bW4sIHN0b3JlIH0gYXMgYW55O1xyXG4gICAgaWYgKHNob3dSb3dTZWxlY3Rpb24pIHtcclxuICAgICAgdGFibGVQYXJhbXMgPSB7XHJcbiAgICAgICAgLi4udGFibGVQYXJhbXMsXHJcbiAgICAgICAgcm93U2VsZWN0aW9uOiB7XHJcbiAgICAgICAgICBzZWxlY3RlZFJvd0tleXM6IHNlbGVjdGVkUm93S2V5cyxcclxuICAgICAgICAgIG9uU2VsZWN0OiB0aGlzLnJvd1NlbGVjdGlvbk9uU2VsZWN0LmJpbmQodGhpcyksXHJcbiAgICAgICAgICBvblNlbGVjdEFsbDogdGhpcy5yb3dTZWxlY3Rpb25PblNlbGVjdEFsbC5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgY29sdW1uV2lkdGg6IDQwLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBjb25zdCB0YWJsZUNvbHVtbjogYW55W10gPSBbXTtcclxuICAgIGNvbnN0IHNlYXJjaEZvcm1zOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IGVkaXRvckZvcm1zOiBhbnkgPSBbXTtcclxuICAgIGNvbHVtbnMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgbGV0IHRlbXAgPSB7IC4uLml0ZW0gfTtcclxuICAgICAgaWYgKHRlbXAuc2VhcmNoKSB7XHJcbiAgICAgICAgc2VhcmNoRm9ybXMucHVzaCh7XHJcbiAgICAgICAgICBuYW1lOiB0ZW1wLmZpZWxkIHx8IHRlbXAuZGF0YUluZGV4LFxyXG4gICAgICAgICAgbGFiZWw6IHRlbXAudGl0bGUsXHJcbiAgICAgICAgICB0eXBlOiB0ZW1wLnR5cGUsXHJcbiAgICAgICAgICBwcm9wczogdGVtcC5wcm9wcyxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBkZWxldGUgdGVtcC5zZWFyY2g7XHJcbiAgICAgIGVkaXRvckZvcm1zLnB1c2goe1xyXG4gICAgICAgIG5hbWU6IHRlbXAuZmllbGQgfHwgdGVtcC5kYXRhSW5kZXgsXHJcbiAgICAgICAgbGFiZWw6IHRlbXAudGl0bGUsXHJcbiAgICAgICAgcnVsZXM6IHRlbXAucnVsZXMsXHJcbiAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgIHByb3BzOiB0ZW1wLnByb3BzLFxyXG4gICAgICAgIHNwYW46IHRlbXAuc3BhbixcclxuICAgICAgfSk7XHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnJ1bGVzO1xyXG4gICAgICBkZWxldGUgdGVtcC5zcGFuO1xyXG4gICAgICBpZiAodGVtcC5jb2x1bW5TZWFyY2gpIHtcclxuICAgICAgICB0ZW1wLmZpbHRlclByb3BzID0ge1xyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgcHJvcHM6IHRlbXAucHJvcHMsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICBkZWxldGUgdGVtcC50eXBlO1xyXG4gICAgICBkZWxldGUgdGVtcC5wcm9wcztcclxuICAgICAgdGFibGVDb2x1bW4ucHVzaCh0ZW1wKTtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgQnV0dG9uczogYW55ID0gW107XHJcbiAgICBjb25zdCBjb2x1bW5CdXR0b25zOiBhbnkgPSBbXTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChpdGVtLnByb3BzLnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiKSB7XHJcbiAgICAgICAgICBCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtLnByb3BzLnBhZ2VUeXBlID09IFwiY2xvdW1uQnV0dG9uXCIpIHtcclxuICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChjaGlsZHJlbikge1xyXG4gICAgICBjb25zdCB7IHByb3BzIH06IGFueSA9IGNoaWxkcmVuO1xyXG4gICAgICBpZiAocHJvcHMucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIpIHtcclxuICAgICAgICBCdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9IGVsc2UgaWYgKHByb3BzLnBhZ2VUeXBlID09IFwiY2xvdW1uQnV0dG9uXCIpIHtcclxuICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBhY3Rpb25Db2x1bW4gJiZcclxuICAgICAgdGFibGVDb2x1bW4ucHVzaCh7XHJcbiAgICAgICAgdGl0bGU6IFwi5pON5L2cXCIsXHJcbiAgICAgICAgZGF0YUluZGV4OiBcImFjdGlvblwiLFxyXG4gICAgICAgIGFsaWduOiBcImNlbnRlclwiLFxyXG4gICAgICAgIHdpZHRoOiAxNTAsXHJcbiAgICAgICAgcmVuZGVyOiAodGV4dDogYW55LCByZWNvcmQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1tcImFjdGlvblwiXX0+XHJcbiAgICAgICAgICAgICAge2FjdGlvbkJ1dHRvbiAmJiAoXHJcbiAgICAgICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbXCJlZGl0b3JcIl19XHJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17dGhpcy5zaG93Rm9ybS5iaW5kKHRoaXMsIHJlY29yZCwgZmFsc2UpfVxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAg5p+l55yLXHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbXCJlZGl0b3JcIl19XHJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17dGhpcy5zaG93Rm9ybS5iaW5kKHRoaXMsIHJlY29yZCwgdHJ1ZSl9XHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICDnvJbovpFcclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8Lz5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIHt0aGlzLnJlbmRlckNsb3VtbkJ1dHRvbihjb2x1bW5CdXR0b25zLCByZWNvcmQsIGFjdGlvbkJ1dHRvbil9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzW1wicGFnZVwiXX0+XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1tcInBhbmVcIl19IHN0eWxlPXt7IGRpc3BsYXk6IFwiZmxleFwiIH19PlxyXG4gICAgICAgICAge3Nob3dMZWZ0ICYmIChcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsZWZ0XCI+XHJcbiAgICAgICAgICAgICAgPFRyZWVcclxuICAgICAgICAgICAgICAgIHN0b3JlPXt7IC4uLnRyZWVTdG9yZSB9fVxyXG4gICAgICAgICAgICAgICAgc2hvd0ljb249e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgY2hlY2thYmxlPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgIHNlYXJjaGFibGU9e3RyZWVTZWFyY2h9XHJcbiAgICAgICAgICAgICAgICBvblNlbGVjdD17dGhpcy50cmVlU2VsZWN0LmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEtleXM9e1t0aGlzLnN0YXRlLnRyZWVTZWxlY3RlZEtleV19XHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1tcInJpZ2h0XCJdfT5cclxuICAgICAgICAgICAge3Nob3dTZWFyY2ggJiYgKFxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbXCJoZWFkZXJcIl19PlxyXG4gICAgICAgICAgICAgICAgPEZvcm1cclxuICAgICAgICAgICAgICAgICAgcmVmPXt0aGlzLnNlYXJjaFJlZn1cclxuICAgICAgICAgICAgICAgICAgbGFiZWxDb2w9e3t9fVxyXG4gICAgICAgICAgICAgICAgICB3cmFwcGVyQ29sPXt7fX1cclxuICAgICAgICAgICAgICAgICAgbGF5b3V0PVwiaW5saW5lXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAge3NlYXJjaEZvcm1zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpdGVtLnR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtLklucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e2l0ZW0ubGFiZWx9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT17aXRlbS5uYW1lfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcm9wcyA9IHsgLi4uaXRlbS5wcm9wcyB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm0uU2VsZWN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e2l0ZW0ubGFiZWx9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT17aXRlbS5uYW1lfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgICAgPC9Gb3JtPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1tcImJ1dHRvbnNcIl19IHN0eWxlPXt7IG1hcmdpblRvcDogMCB9fT5cclxuICAgICAgICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMub25TZWFyY2guYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICAgICAgICBpY29uPXs8SWNvbiB0eXBlPXtpY29uVHlwZS5zZWFyY2h9IC8+fVxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAg5p+l6K+iXHJcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8ucmVzZXRGaWVsZHMoKTtcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgIGljb249ezxJY29uIHR5cGU9e2ljb25UeXBlLnJlZnJlc2h9IC8+fVxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAg6YeN572uXHJcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIHtzaG93VG9vbEJ1dHRvbiAmJiAoXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1tcImJ1dHRvbnNcIl19IHN0eWxlPXt7IG1hcmdpbkxlZnQ6IDAgfX0+XHJcbiAgICAgICAgICAgICAgICB7c2hvd0FkZEJ1dHRvbiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICAgICAgICB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLnNob3dGb3JtLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICAgICAgaWNvbj17PEljb24gdHlwZT17aWNvblR5cGUuYWRkfSAvPn1cclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIOa3u+WKoFxyXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICB7QnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gPGRpdiBrZXk9e2luZGV4fT57aXRlbX08L2Rpdj47XHJcbiAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1tcInRhYmxlXCJdfT5cclxuICAgICAgICAgICAgICA8VGFibGVcclxuICAgICAgICAgICAgICAgIHJlZj17dGhpcy50YWJsZVJlZn1cclxuICAgICAgICAgICAgICAgIGNvbHVtbnM9e3RhYmxlQ29sdW1ufVxyXG4gICAgICAgICAgICAgICAgey4uLnRhYmxlUGFyYW1zfVxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAge2VkaXRvckZvcm0gJiYgKFxyXG4gICAgICAgICAgPEVkaXRvckZvcm1cclxuICAgICAgICAgICAgcmVmPXt0aGlzLmVkaXRvclJlZn1cclxuICAgICAgICAgICAgb25DYW5jZWw9e3RoaXMuc2hvd0Zvcm0uYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgY2FsbEJhY2s9e3RoaXMudGFibGVSZWxvYWQuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgZm9ybVByb3BzPXtlZGl0b3JGb3Jtc31cclxuICAgICAgICAgICAgYXV0b1N1Ym1pdD17YXV0b1N1Ym1pdH1cclxuICAgICAgICAgICAgc3VibWl0VXJsPXtzdWJtaXRVcmx9XHJcbiAgICAgICAgICAgIHN1Ym1pdFBhcmFtcz17c3VibWl0UGFyYW1zfVxyXG4gICAgICAgICAgLz5cclxuICAgICAgICApfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IEJhc2VQYWdlO1xyXG4iXX0=
603
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BhZ2VDb21wb25lbnRzL0Jhc2VQYWdlL2luZGV4LnRzeCJdLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJUYWJsZSIsIlRyZWUiLCJGb3JtIiwiQnV0dG9uIiwiTW9kYWwiLCJQb3BvdmVyIiwibWVzc2FnZSIsIkljb24iLCJpY29uVHlwZSIsIkVkaXRvckZvcm0iLCJjbHMiLCJzdHlsZXMiLCJEb3duT3V0bGluZWQiLCJVcE91dGxpbmVkIiwicmVxdWVzdCIsIkJhc2VQYWdlIiwicHJvcHMiLCJjcmVhdGVSZWYiLCJjaGVja2VkVHJlZUtleXMiLCJzdGF0ZSIsIm5hbWUiLCJ1c2VyVHlwZSIsImFjY291bnQiLCJ2YWx1ZSIsImRlcHRJZCIsInRhYmxlTG9hZCIsInR5cGUiLCJzZWxlY3RlZFJvd0tleXMiLCJ0cmVlU2VsZWN0ZWRLZXkiLCJleHBhbmQiLCJmbGFnIiwiZWRpdG9yUmVmIiwiY3VycmVudCIsInNob3ciLCJkZWxldGVVcmwiLCJsZW5ndGgiLCJ3YXJuaW5nIiwiRXJyb3IiLCJjb25maXJtIiwidGl0bGUiLCJva1RleHQiLCJjYW5jZWxUZXh0Iiwib25PayIsInJlcXVlc3RQYXJhbSIsIm1ldGhvZCIsImRhdGEiLCJpZHMiLCJ0aGVuIiwicmVzIiwiY29kZSIsInN1Y2Nlc3MiLCJlcnJvciIsImNhdGNoIiwiY29uc29sZSIsImxvZyIsInBhcmFtcyIsInRhYmxlUmVmIiwic3RvcmUiLCJsb2FkIiwiZnJvbVZhbHVlIiwic2VhcmNoUmVmIiwiZ2V0RmllbGRzVmFsdWUiLCJyZWxvYWQiLCJyZWNvcmQiLCJzZWxlY3RlZCIsIm5ld1NlbGVjdGVkUm93S2V5cyIsImlkIiwibWFwIiwiaXRlbSIsImluZGV4Iiwic3BsaWNlIiwic2V0U3RhdGUiLCJzZWxlY3RlZFJvd3MiLCJjaGFuZ2VSb3dzIiwibmV3aWRzIiwiY2hhbmdlSWRzIiwiaW5kZXhPZiIsInB1c2giLCJjb2x1bW5CdXR0b25zIiwiYWN0aW9uQnV0dG9uIiwiY29udGVudCIsImNoaWxkcmVuIiwicGFnZVR5cGUiLCJvbkNsaWNrIiwibnVtIiwic2VsZWN0ZWRLZXlzIiwic2VsZWN0ZWROb2RlcyIsImtleXdvcmQiLCJ0cmVlUHJvcHMiLCJzZWFyY2hLZXkiLCJzZWFyY2hGaWVsZCIsImlzTGVhZiIsImRhdGFyZWYiLCJhdHRyaWJ1dGUiLCJjb2x1bW5zIiwic2hvd1NlYXJjaCIsImF1dG9TdWJtaXQiLCJzdWJtaXRVcmwiLCJ0YWJsZVByb3BzIiwic2hvd0xlZnQiLCJzdWJtaXRQYXJhbXMiLCJzaG93VG9vbEJ1dHRvbiIsInNob3dBZGRCdXR0b24iLCJzaG93RGVsZXRlQnV0dG9uIiwiZWRpdG9yRm9ybSIsImZpbHRlckNvbHVtbiIsImFjdGlvbkNvbHVtbiIsInNob3dSb3dTZWxlY3Rpb24iLCJ0cmVlU3RvcmUiLCJ0cmVlU2VhcmNoIiwidGl0bGVBbGlhcyIsInRhYmxlUGFyYW1zIiwicm93U2VsZWN0aW9uIiwib25TZWxlY3QiLCJyb3dTZWxlY3Rpb25PblNlbGVjdCIsImJpbmQiLCJvblNlbGVjdEFsbCIsInJvd1NlbGVjdGlvbk9uU2VsZWN0QWxsIiwiY29sdW1uV2lkdGgiLCJ0YWJsZUNvbHVtbiIsInNlYXJjaEZvcm1zIiwiZWRpdG9yRm9ybXMiLCJ0ZW1wIiwic2VhcmNoIiwiZmllbGQiLCJkYXRhSW5kZXgiLCJsYWJlbCIsImVkaXRvciIsInJ1bGVzIiwic3BhbiIsImNvbHVtblNlYXJjaCIsImZpbHRlclByb3BzIiwiQnV0dG9ucyIsIkFycmF5IiwiaXNBcnJheSIsImFsaWduIiwid2lkdGgiLCJyZW5kZXIiLCJ0ZXh0Iiwic2hvd0Zvcm0iLCJyZW5kZXJDbG91bW5CdXR0b24iLCJkaXNwbGF5IiwidHJlZVNlbGVjdCIsIm1hcmdpblRvcCIsIm9uU2VhcmNoIiwicmVzZXRGaWVsZHMiLCJyZWZyZXNoIiwidHJpZ2dlciIsIm1hcmdpbkxlZnQiLCJhZGQiLCJvbkRlbGV0ZSIsImRlbGV0ZTMiLCJ0YWJsZVJlbG9hZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU9BLEtBQVAsSUFBZ0JDLGFBQWhCLFFBQXFDLE9BQXJDO0FBQ0EsT0FBT0MsS0FBUCxNQUFrQixhQUFsQjtBQUNBLE9BQU9DLElBQVAsTUFBaUIsWUFBakI7QUFDQSxPQUFPQyxJQUFQLE1BQWlCLFlBQWpCO0FBQ0EsT0FBT0MsTUFBUCxNQUFtQixjQUFuQjtBQUNBLE9BQU9DLEtBQVAsTUFBa0IsYUFBbEI7QUFDQSxPQUFPQyxPQUFQLE1BQW9CLGVBQXBCO0FBQ0EsT0FBT0MsT0FBUCxNQUFvQixlQUFwQjtBQUNBLE9BQU9DLElBQVAsTUFBaUIsdUJBQWpCO0FBQ0EsU0FBU0MsUUFBVCxRQUF5QixpQkFBekI7QUFDQSxPQUFPQyxVQUFQLE1BQXVCLFFBQXZCO0FBQ0EsT0FBT0MsR0FBUCxNQUFnQixZQUFoQjtBQUNBLE9BQU9DLE1BQVAsTUFBbUIsY0FBbkI7QUFFQSxTQUFTQyxZQUFULEVBQXVCQyxVQUF2QixRQUF5QyxtQkFBekM7QUFDQSxPQUFPQyxPQUFQLE1BQW9CLGFBQXBCOztJQWdDTUMsUTs7Ozs7QUFLSixvQkFBWUMsS0FBWixFQUF3QjtBQUFBOztBQUFBOztBQUN0Qiw4QkFBTUEsS0FBTjs7QUFEc0IsNEVBSmJsQixLQUFLLENBQUNtQixTQUFOLEVBSWE7O0FBQUEsMkVBSGRuQixLQUFLLENBQUNtQixTQUFOLEVBR2M7O0FBQUEsNkVBRlpuQixLQUFLLENBQUNtQixTQUFOLEVBRVk7O0FBQUEsNkVBRFpuQixLQUFLLENBQUNtQixTQUFOLEVBQ1k7O0FBQUEsK0RBU2IsVUFBQ0MsZUFBRCxFQUEwQjtBQUNuQyx3QkFBb0MsTUFBS0MsS0FBekM7QUFBQSxVQUFRQyxJQUFSLGVBQVFBLElBQVI7QUFBQSxVQUFjQyxRQUFkLGVBQWNBLFFBQWQ7QUFBQSxVQUF3QkMsT0FBeEIsZUFBd0JBLE9BQXhCO0FBQ0EsVUFBTUMsS0FBSyxHQUFHO0FBQUVILFFBQUFBLElBQUksRUFBSkEsSUFBRjtBQUFRQyxRQUFBQSxRQUFRLEVBQVJBLFFBQVI7QUFBa0JDLFFBQUFBLE9BQU8sRUFBUEEsT0FBbEI7QUFBMkJFLFFBQUFBLE1BQU0sRUFBRU4sZUFBZSxDQUFDLENBQUQ7QUFBbEQsT0FBZDs7QUFDQSxZQUFLTyxTQUFMLENBQWVGLEtBQWY7QUFDRCxLQWJ1Qjs7QUFFdEIsVUFBS0osS0FBTCxHQUFhO0FBQ1hPLE1BQUFBLElBQUksRUFBRSxLQURLO0FBRVhDLE1BQUFBLGVBQWUsRUFBRSxFQUZOO0FBR1hDLE1BQUFBLGVBQWUsRUFBRSxFQUhOO0FBSVhDLE1BQUFBLE1BQU0sRUFBRTtBQUpHLEtBQWI7QUFGc0I7QUFRdkI7Ozs7V0FPRDtBQUNBLHNCQUFTTixLQUFULEVBQW1DO0FBQUE7O0FBQUEsVUFBYk8sSUFBYSx1RUFBTixJQUFNO0FBQ2pDLG9DQUFLQyxTQUFMLENBQWVDLE9BQWYsZ0ZBQXdCQyxJQUF4QixDQUE2QlYsS0FBN0IsRUFBb0NPLElBQXBDO0FBQ0QsSyxDQUNEOzs7O1dBQ0Esb0JBQVc7QUFDVCxVQUFRSSxTQUFSLEdBQXNCLEtBQUtsQixLQUEzQixDQUFRa0IsU0FBUjtBQUNBLFVBQVFQLGVBQVIsR0FBNEIsS0FBS1IsS0FBakMsQ0FBUVEsZUFBUjs7QUFDQSxVQUFJQSxlQUFlLENBQUNRLE1BQWhCLElBQTBCLENBQTlCLEVBQWlDO0FBQy9CN0IsUUFBQUEsT0FBTyxDQUFDOEIsT0FBUixDQUFnQixZQUFoQjtBQUNBO0FBQ0Q7O0FBQ0QsVUFBSSxDQUFDRixTQUFMLEVBQWdCO0FBQ2QsY0FBTSxJQUFJRyxLQUFKLENBQVUsVUFBVixDQUFOO0FBQ0Q7O0FBQ0RqQyxNQUFBQSxLQUFLLENBQUNrQyxPQUFOLENBQWM7QUFDWkMsUUFBQUEsS0FBSyxFQUFFLFlBREs7QUFFWjtBQUNBQyxRQUFBQSxNQUFNLEVBQUUsSUFISTtBQUlaQyxRQUFBQSxVQUFVLEVBQUUsSUFKQTtBQUtaQyxRQUFBQSxJQUFJLEVBQUUsZ0JBQU07QUFDVixjQUFNQyxZQUFZLEdBQUc7QUFBRUMsWUFBQUEsTUFBTSxFQUFFLE1BQVY7QUFBa0JDLFlBQUFBLElBQUksRUFBRTtBQUFFQyxjQUFBQSxHQUFHLEVBQUVuQjtBQUFQO0FBQXhCLFdBQXJCO0FBQ0FiLFVBQUFBLE9BQU8sQ0FBQ29CLFNBQUQsb0JBQ0ZTLFlBREUsRUFBUCxDQUdHSSxJQUhILENBR1EsVUFBVUMsR0FBVixFQUFvQjtBQUN4QixnQkFBUUMsSUFBUixHQUFpQkQsR0FBakIsQ0FBUUMsSUFBUjs7QUFDQSxnQkFBSUEsSUFBSSxLQUFLLEdBQWIsRUFBa0I7QUFDaEIzQyxjQUFBQSxPQUFPLENBQUM0QyxPQUFSLENBQWdCLE9BQWhCO0FBQ0QsYUFGRCxNQUVPO0FBQ0w1QyxjQUFBQSxPQUFPLENBQUM2QyxLQUFSLENBQWMsT0FBZDtBQUNEO0FBQ0YsV0FWSCxFQVdHQyxLQVhILENBV1MsVUFBVUQsS0FBVixFQUFzQjtBQUMzQkUsWUFBQUEsT0FBTyxDQUFDQyxHQUFSLENBQVksT0FBWixFQUFxQkgsS0FBckI7QUFDRCxXQWJIO0FBY0Q7QUFyQlcsT0FBZDtBQXVCRDs7O1dBQ0QsbUJBQVVJLE1BQVYsRUFBdUI7QUFBQTs7QUFDckIsb0NBQUtDLFFBQUwsQ0FBY3hCLE9BQWQsZ0ZBQXVCeUIsS0FBdkIsQ0FBNkJDLElBQTdCLENBQWtDO0FBQ2hDSCxRQUFBQSxNQUFNLEVBQUVBO0FBRHdCLE9BQWxDO0FBR0QsSyxDQUNEOzs7O1dBQ0Esb0JBQVc7QUFBQTs7QUFDVCxVQUFNSSxTQUFTLDRCQUFHLEtBQUtDLFNBQUwsQ0FBZTVCLE9BQWxCLDBEQUFHLHNCQUF3QjZCLGNBQXhCLEVBQWxCO0FBQ0EsV0FBS0gsSUFBTCxDQUFVQyxTQUFWO0FBQ0QsSyxDQUNEOzs7O1dBQ0EsdUJBQWM7QUFBQTs7QUFDWixxQ0FBS0gsUUFBTCxDQUFjeEIsT0FBZCxrRkFBdUJ5QixLQUF2QixDQUE2QkssTUFBN0I7QUFDRDs7O1dBQ0QsOEJBQXFCO0FBQ25CLGFBQU8sS0FBSzNDLEtBQUwsQ0FBV1EsZUFBbEI7QUFDRDs7O1dBQ0QsMkJBQWtCO0FBQUE7O0FBQ2hCLFVBQU1nQyxTQUFTLDZCQUFHLEtBQUtDLFNBQUwsQ0FBZTVCLE9BQWxCLDJEQUFHLHVCQUF3QjZCLGNBQXhCLEVBQWxCO0FBQ0EsYUFBT0YsU0FBUDtBQUNEOzs7V0FDRCw4QkFBcUJJLE1BQXJCLEVBQWtDQyxRQUFsQyxFQUFpRDtBQUMvQyxVQUFRckMsZUFBUixHQUE0QixLQUFLUixLQUFqQyxDQUFRUSxlQUFSOztBQUNBLFVBQUlzQyxrQkFBa0Isc0JBQU90QyxlQUFQLENBQXRCOztBQUNBLFVBQUlxQyxRQUFKLEVBQWM7QUFDWkMsUUFBQUEsa0JBQWtCLGdDQUFPQSxrQkFBUCxJQUEyQkYsTUFBTSxDQUFDRyxFQUFsQyxFQUFsQjtBQUNELE9BRkQsTUFFTztBQUNMdkMsUUFBQUEsZUFBZSxDQUFDd0MsR0FBaEIsQ0FBb0IsVUFBQ0MsSUFBRCxFQUFZQyxLQUFaLEVBQTJCO0FBQzdDLGNBQUlELElBQUksS0FBS0wsTUFBTSxDQUFDRyxFQUFwQixFQUF3QjtBQUN0QkQsWUFBQUEsa0JBQWtCLENBQUNLLE1BQW5CLENBQTBCRCxLQUExQixFQUFpQyxDQUFqQztBQUNEO0FBQ0YsU0FKRDtBQUtEOztBQUNELFdBQUtFLFFBQUwsQ0FBYztBQUNaNUMsUUFBQUEsZUFBZSxFQUFFc0M7QUFETCxPQUFkO0FBR0Q7OztXQUNELGlDQUF3QkQsUUFBeEIsRUFBdUNRLFlBQXZDLEVBQTBEQyxVQUExRCxFQUEyRTtBQUN6RSxVQUFROUMsZUFBUixHQUE0QixLQUFLUixLQUFqQyxDQUFRUSxlQUFSO0FBQ0EsVUFBSStDLE1BQVcsR0FBRyxFQUFsQjs7QUFDQSxVQUFJRCxVQUFVLENBQUN0QyxNQUFYLEdBQW9CLENBQXhCLEVBQTJCO0FBQ3pCLFlBQUl3QyxTQUFTLEdBQUdGLFVBQVUsQ0FBQ04sR0FBWCxDQUFlLFVBQUNDLElBQUQ7QUFBQSxpQkFBZUEsSUFBSSxDQUFDRixFQUFwQjtBQUFBLFNBQWYsQ0FBaEI7O0FBQ0EsWUFBSUYsUUFBSixFQUFjO0FBQ1pVLFVBQUFBLE1BQU0sZ0NBQU8vQyxlQUFQLHNCQUEyQmdELFNBQTNCLEVBQU47QUFDRCxTQUZELE1BRU87QUFDTGhELFVBQUFBLGVBQWUsQ0FBQ3dDLEdBQWhCLENBQW9CLFVBQUNDLElBQUQsRUFBWUMsS0FBWixFQUEyQjtBQUM3QyxnQkFBSU0sU0FBUyxDQUFDQyxPQUFWLENBQWtCUixJQUFsQixLQUEyQixDQUFDLENBQWhDLEVBQW1DO0FBQ2pDTSxjQUFBQSxNQUFNLENBQUNHLElBQVAsQ0FBWVQsSUFBWjtBQUNEO0FBQ0YsV0FKRDtBQUtEO0FBQ0YsT0FYRCxNQVdPO0FBQ0xNLFFBQUFBLE1BQU0sc0JBQU8vQyxlQUFQLENBQU47QUFDRDs7QUFDRCxXQUFLNEMsUUFBTCxDQUFjO0FBQ1o1QyxRQUFBQSxlQUFlLHFCQUFNK0MsTUFBTjtBQURILE9BQWQ7QUFHRDs7O1dBQ0QsY0FBS25CLE1BQUwsRUFBa0I7QUFBQTs7QUFDaEIscUNBQUtDLFFBQUwsQ0FBY3hCLE9BQWQsa0ZBQXVCeUIsS0FBdkIsQ0FBNkJDLElBQTdCLENBQWtDO0FBQUVILFFBQUFBLE1BQU0sRUFBTkE7QUFBRixPQUFsQztBQUNEOzs7V0FDRCw0QkFBbUJ1QixhQUFuQixFQUF1Q2YsTUFBdkMsRUFBb0RnQixZQUFwRCxFQUE0RTtBQUMxRSxVQUFNQyxPQUFPLEdBQUdGLGFBQWEsQ0FBQ1gsR0FBZCxDQUFrQixVQUFDQyxJQUFELEVBQVlDLEtBQVosRUFBMkI7QUFDM0QsMEJBQW1ERCxJQUFJLENBQUNwRCxLQUF4RDtBQUFBLFlBQVFpRSxRQUFSLGVBQVFBLFFBQVI7QUFBQSxZQUFrQkMsUUFBbEIsZUFBa0JBLFFBQWxCO0FBQUEsWUFBNEJDLFFBQTVCLGVBQTRCQSxPQUE1QjtBQUFBLFlBQXdDNUIsTUFBeEM7O0FBQ0EsNEJBQ0U7QUFDRSxVQUFBLFNBQVMsRUFBRTdDLEdBQUcsQ0FBQ0MsTUFBTSxDQUFDLFFBQUQsQ0FBUCxFQUFtQkEsTUFBTSxDQUFDLGNBQUQsQ0FBekIsQ0FEaEI7QUFFRSxVQUFBLEdBQUcsRUFBRTBELEtBRlA7QUFHRSxVQUFBLE9BQU8sRUFBRSxtQkFBTTtBQUNiYyxZQUFBQSxRQUFPLElBQUlBLFFBQU8sQ0FBQ3BCLE1BQUQsQ0FBbEI7QUFDRDtBQUxILFdBTU1SLE1BTk4sR0FRRzBCLFFBUkgsQ0FERjtBQVlELE9BZGUsQ0FBaEI7QUFlQSxVQUFJRyxHQUFHLEdBQUcsQ0FBVjtBQUNBLFVBQUksQ0FBQ0wsWUFBTCxFQUFtQkssR0FBRyxHQUFHLENBQU47O0FBQ25CLFVBQUlOLGFBQWEsQ0FBQzNDLE1BQWQsR0FBdUJpRCxHQUEzQixFQUFnQztBQUM5Qiw0QkFDRSxvQkFBQyxPQUFEO0FBQ0UsVUFBQSxTQUFTLEVBQUMsUUFEWjtBQUVFLFVBQUEsS0FBSyxFQUFFLElBRlQ7QUFHRSxVQUFBLE9BQU8sRUFBRUosT0FIWDtBQUlFLFVBQUEsT0FBTyxFQUFDLE9BSlYsQ0FLRTs7QUFMRix3QkFPRTtBQUFLLFVBQUEsU0FBUyxFQUFFckUsTUFBTSxDQUFDLFFBQUQ7QUFBdEIsd0NBRUU7QUFBTSxVQUFBLFNBQVMsRUFBRUEsTUFBTSxDQUFDLE1BQUQ7QUFBdkIsd0JBQ0Usb0JBQUMsWUFBRCxPQURGLENBRkYsQ0FQRixDQURGO0FBZ0JELE9BakJELE1BaUJPO0FBQ0wsZUFBT21FLGFBQWEsQ0FBQ1gsR0FBZCxDQUFrQixVQUFDQyxJQUFELEVBQVlDLEtBQVosRUFBMkI7QUFDbEQsNkJBQXlERCxJQUFJLENBQUNwRCxLQUE5RDtBQUFBLGNBQVFpRSxRQUFSLGdCQUFRQSxRQUFSO0FBQUEsY0FBa0JDLFFBQWxCLGdCQUFrQkEsUUFBbEI7QUFBQSxjQUE0QkMsU0FBNUIsZ0JBQTRCQSxPQUE1QjtBQUFBLGNBQXFDNUUsSUFBckMsZ0JBQXFDQSxJQUFyQztBQUFBLGNBQThDZ0QsTUFBOUM7O0FBQ0EsOEJBQ0U7QUFDRSxZQUFBLFNBQVMsRUFBRTVDLE1BQU0sQ0FBQyxRQUFELENBRG5CO0FBRUUsWUFBQSxHQUFHLEVBQUUwRCxLQUZQO0FBR0UsWUFBQSxPQUFPLEVBQUUsbUJBQU07QUFDYmMsY0FBQUEsU0FBTyxJQUFJQSxTQUFPLENBQUNwQixNQUFELENBQWxCO0FBQ0Q7QUFMSCxhQU1NUixNQU5OLEdBUUdoRCxJQVJILE9BUVUwRSxRQVJWLENBREY7QUFZRCxTQWRNLENBQVA7QUFlRDtBQUNGLEssQ0FDRDs7OztXQUNBLG9CQUFXSSxZQUFYLFFBQWdFO0FBQUE7O0FBQUEsVUFBaENyQixRQUFnQyxRQUFoQ0EsUUFBZ0M7QUFBQSxVQUF0QnNCLGFBQXNCLFFBQXRCQSxhQUFzQjtBQUM5RCxVQUFJQyxPQUFPLEdBQUcsRUFBZDtBQUNBLGtDQUFnRCxLQUFLdkUsS0FBTCxDQUFXd0UsU0FBM0Q7QUFBQSx5REFBUUMsU0FBUjtBQUFBLFVBQVFBLFNBQVIsdUNBQW9CLEtBQXBCO0FBQUEseURBQTJCQyxXQUEzQjtBQUFBLFVBQTJCQSxXQUEzQix1Q0FBeUMsRUFBekM7QUFDQSxVQUFROUQsZUFBUixHQUE0QixLQUFLVCxLQUFqQyxDQUFRUyxlQUFSOztBQUNBLFVBQUlvQyxRQUFKLEVBQWM7QUFDWixZQUFJc0IsYUFBYSxDQUFDLENBQUQsQ0FBYixDQUFpQkssTUFBakIsSUFBMkIsQ0FBQ0wsYUFBYSxDQUFDLENBQUQsQ0FBYixDQUFpQkwsUUFBakQsRUFBMkQ7QUFDekQsY0FBSUksWUFBWSxDQUFDLENBQUQsQ0FBWixLQUFvQnpELGVBQXhCLEVBQXlDO0FBQ3ZDO0FBQ0EyRCxZQUFBQSxPQUFPLEdBQUdELGFBQWEsQ0FBQyxDQUFELENBQWIsQ0FBaUJNLE9BQWpCLENBQXlCQyxTQUF6QixDQUFtQ0osU0FBbkMsQ0FBVjtBQUNBLGlCQUFLbEIsUUFBTCxDQUFjO0FBQ1ozQyxjQUFBQSxlQUFlLEVBQUV5RCxZQUFZLENBQUMsQ0FBRDtBQURqQixhQUFkO0FBR0Q7QUFDRjtBQUNGLE9BVkQsTUFVTztBQUNMLGFBQUtkLFFBQUwsQ0FBYztBQUNaM0MsVUFBQUEsZUFBZSxFQUFFMkQ7QUFETCxTQUFkO0FBR0Q7O0FBQ0QsVUFBTTVCLFNBQVMsNkJBQUcsS0FBS0MsU0FBTCxDQUFlNUIsT0FBbEIsMkRBQUcsdUJBQXdCNkIsY0FBeEIsRUFBbEI7QUFDQTZCLE1BQUFBLFdBQVcsSUFBSSxLQUFLaEMsSUFBTCxpQ0FBZUMsU0FBZiwyQkFBMkIrQixXQUEzQixFQUF5Q0gsT0FBekMsR0FBZjtBQUNEOzs7V0FDRCxrQkFBUztBQUFBOztBQUNQLFVBQVE1RCxlQUFSLEdBQTRCLEtBQUtSLEtBQWpDLENBQVFRLGVBQVI7QUFDQSx3QkFjSSxLQUFLWCxLQWRUO0FBQUEsNENBQ0U4RSxPQURGO0FBQUEsVUFDRUEsT0FERixvQ0FDWSxFQURaO0FBQUEsOENBRUVDLFVBRkY7QUFBQSxVQUVFQSxVQUZGLHNDQUVlLElBRmY7QUFBQSxVQUdFZCxRQUhGLGVBR0VBLFFBSEY7QUFBQSw4Q0FJRWUsVUFKRjtBQUFBLFVBSUVBLFVBSkYsc0NBSWUsSUFKZjtBQUFBLDhDQUtFQyxTQUxGO0FBQUEsVUFLRUEsU0FMRixzQ0FLYyxFQUxkO0FBQUEsOENBTUVDLFVBTkY7QUFBQSxVQU1FQSxVQU5GLHNDQU1lLEVBTmY7QUFBQSwrQ0FPRVYsU0FQRjtBQUFBLFVBT0VBLFNBUEYsdUNBT2MsRUFQZDtBQUFBLDZDQVFFVyxRQVJGO0FBQUEsVUFRRUEsUUFSRixxQ0FRYSxLQVJiO0FBQUEsOENBU0VDLFlBVEY7QUFBQSxVQVNFQSxZQVRGLHNDQVNpQixFQVRqQjtBQUFBLDhDQVVFQyxjQVZGO0FBQUEsVUFVRUEsY0FWRixzQ0FVbUIsSUFWbkI7QUFBQSw4Q0FXRUMsYUFYRjtBQUFBLFVBV0VBLGFBWEYsc0NBV2tCLElBWGxCO0FBQUEsOENBWUVDLGdCQVpGO0FBQUEsVUFZRUEsZ0JBWkYsc0NBWXFCLElBWnJCO0FBQUEsOENBYUVDLFVBYkY7QUFBQSxVQWFFQSxVQWJGLHNDQWFlLElBYmY7QUFlQSw4QkFNSU4sVUFOSixDQUNFekMsS0FERjtBQUFBLFVBQ0VBLEtBREYsa0NBQ1UsRUFEVjtBQUFBLGtDQU1JeUMsVUFOSixDQUVFTyxZQUZGO0FBQUEsVUFFRUEsWUFGRixzQ0FFaUIsSUFGakI7QUFBQSxrQ0FNSVAsVUFOSixDQUdFbkIsWUFIRjtBQUFBLFVBR0VBLFlBSEYsc0NBR2lCLElBSGpCO0FBQUEsa0NBTUltQixVQU5KLENBSUVRLFlBSkY7QUFBQSxVQUlFQSxZQUpGLHNDQUlpQixJQUpqQjtBQUFBLGtDQU1JUixVQU5KLENBS0VTLGdCQUxGO0FBQUEsVUFLRUEsZ0JBTEYsc0NBS3FCLElBTHJCO0FBUUEsNkJBSUluQixTQUpKLENBQ0UvQixLQURGO0FBQUEsVUFDU21ELFNBRFQsaUNBQ3FCLEVBRHJCO0FBQUEsa0NBSUlwQixTQUpKLENBRUVPLFVBRkY7QUFBQSxVQUVjYyxVQUZkLHNDQUUyQixJQUYzQjtBQUFBLGtDQUlJckIsU0FKSixDQUdFc0IsVUFIRjtBQUFBLFVBR0VBLFVBSEYsc0NBR2UsT0FIZjtBQU1BLFVBQUlDLFdBQVcsR0FBRztBQUFFTixRQUFBQSxZQUFZLEVBQVpBLFlBQUY7QUFBZ0JoRCxRQUFBQSxLQUFLLEVBQUxBO0FBQWhCLE9BQWxCOztBQUVBLFVBQUlrRCxnQkFBSixFQUFzQjtBQUNwQkksUUFBQUEsV0FBVyxtQ0FDTkEsV0FETTtBQUVUQyxVQUFBQSxZQUFZLEVBQUU7QUFDWnJGLFlBQUFBLGVBQWUsRUFBRUEsZUFETDtBQUVac0YsWUFBQUEsUUFBUSxFQUFFLEtBQUtDLG9CQUFMLENBQTBCQyxJQUExQixDQUErQixJQUEvQixDQUZFO0FBR1pDLFlBQUFBLFdBQVcsRUFBRSxLQUFLQyx1QkFBTCxDQUE2QkYsSUFBN0IsQ0FBa0MsSUFBbEMsQ0FIRDtBQUlaRyxZQUFBQSxXQUFXLEVBQUU7QUFKRDtBQUZMLFVBQVg7QUFTRDs7QUFDRCxVQUFNQyxXQUFrQixHQUFHLEVBQTNCO0FBQ0EsVUFBTUMsV0FBZ0IsR0FBRyxFQUF6QjtBQUNBLFVBQU1DLFdBQWdCLEdBQUcsRUFBekI7QUFDQTNCLE1BQUFBLE9BQU8sQ0FBQzNCLEdBQVIsQ0FBWSxVQUFDQyxJQUFELEVBQWU7QUFDekIsWUFBSXNELElBQUkscUJBQVF0RCxJQUFSLENBQVI7O0FBQ0EsWUFBSXNELElBQUksQ0FBQ0MsTUFBVCxFQUFpQjtBQUNmSCxVQUFBQSxXQUFXLENBQUMzQyxJQUFaLENBQWlCO0FBQ2Z6RCxZQUFBQSxJQUFJLEVBQUVzRyxJQUFJLENBQUNFLEtBQUwsSUFBY0YsSUFBSSxDQUFDRyxTQURWO0FBRWZDLFlBQUFBLEtBQUssRUFBRUosSUFBSSxDQUFDbkYsS0FGRztBQUdmYixZQUFBQSxJQUFJLEVBQUVnRyxJQUFJLENBQUNoRyxJQUhJO0FBSWZWLFlBQUFBLEtBQUssRUFBRTBHLElBQUksQ0FBQzFHO0FBSkcsV0FBakI7QUFNRDs7QUFDRCxlQUFPMEcsSUFBSSxDQUFDQyxNQUFaO0FBQ0FELFFBQUFBLElBQUksQ0FBQ0ssTUFBTCxLQUFnQixLQUFoQixJQUNFTixXQUFXLENBQUM1QyxJQUFaLENBQWlCO0FBQ2Z6RCxVQUFBQSxJQUFJLEVBQUVzRyxJQUFJLENBQUNFLEtBQUwsSUFBY0YsSUFBSSxDQUFDRyxTQURWO0FBRWZDLFVBQUFBLEtBQUssRUFBRUosSUFBSSxDQUFDbkYsS0FGRztBQUdmeUYsVUFBQUEsS0FBSyxFQUFFTixJQUFJLENBQUNNLEtBSEc7QUFJZnRHLFVBQUFBLElBQUksRUFBRWdHLElBQUksQ0FBQ2hHLElBSkk7QUFLZlYsVUFBQUEsS0FBSyxFQUFFMEcsSUFBSSxDQUFDMUcsS0FMRztBQU1maUgsVUFBQUEsSUFBSSxFQUFFUCxJQUFJLENBQUNPO0FBTkksU0FBakIsQ0FERjtBQVNBLGVBQU9QLElBQUksQ0FBQ00sS0FBWjtBQUNBLGVBQU9OLElBQUksQ0FBQ08sSUFBWjs7QUFDQSxZQUFJUCxJQUFJLENBQUNRLFlBQVQsRUFBdUI7QUFDckJSLFVBQUFBLElBQUksQ0FBQ1MsV0FBTCxHQUFtQjtBQUNqQnpHLFlBQUFBLElBQUksRUFBRWdHLElBQUksQ0FBQ2hHLElBRE07QUFFakJWLFlBQUFBLEtBQUssRUFBRTBHLElBQUksQ0FBQzFHO0FBRkssV0FBbkI7QUFJRDs7QUFDRCxlQUFPMEcsSUFBSSxDQUFDaEcsSUFBWjtBQUNBLGVBQU9nRyxJQUFJLENBQUMxRyxLQUFaO0FBQ0F1RyxRQUFBQSxXQUFXLENBQUMxQyxJQUFaLENBQWlCNkMsSUFBakI7QUFDRCxPQS9CRDtBQWdDQSxVQUFNVSxPQUFZLEdBQUcsRUFBckI7QUFDQSxVQUFNdEQsYUFBa0IsR0FBRyxFQUEzQjs7QUFDQSxVQUFJdUQsS0FBSyxDQUFDQyxPQUFOLENBQWNyRCxRQUFkLENBQUosRUFBNkI7QUFDM0JBLFFBQUFBLFFBQVEsQ0FBQ2QsR0FBVCxDQUFhLFVBQUNDLElBQUQsRUFBZTtBQUMxQixjQUFJQSxJQUFJLENBQUNwRCxLQUFMLENBQVdrRSxRQUFYLElBQXVCLFlBQTNCLEVBQXlDO0FBQ3ZDa0QsWUFBQUEsT0FBTyxDQUFDdkQsSUFBUixDQUFhVCxJQUFiO0FBQ0QsV0FGRCxNQUVPLElBQUlBLElBQUksQ0FBQ3BELEtBQUwsQ0FBV2tFLFFBQVgsSUFBdUIsY0FBM0IsRUFBMkM7QUFDaERKLFlBQUFBLGFBQWEsQ0FBQ0QsSUFBZCxDQUFtQlQsSUFBbkI7QUFDRDtBQUNGLFNBTkQ7QUFPRCxPQVJELE1BUU8sSUFBSWEsUUFBSixFQUFjO0FBQ25CLFlBQVFqRSxLQUFSLEdBQXVCaUUsUUFBdkIsQ0FBUWpFLEtBQVI7O0FBQ0EsWUFBSUEsS0FBSyxDQUFDa0UsUUFBTixJQUFrQixZQUF0QixFQUFvQztBQUNsQ2tELFVBQUFBLE9BQU8sQ0FBQ3ZELElBQVIsQ0FBYUksUUFBYjtBQUNELFNBRkQsTUFFTyxJQUFJakUsS0FBSyxDQUFDa0UsUUFBTixJQUFrQixjQUF0QixFQUFzQztBQUMzQ0osVUFBQUEsYUFBYSxDQUFDRCxJQUFkLENBQW1CSSxRQUFuQjtBQUNEO0FBQ0Y7O0FBQ0R5QixNQUFBQSxZQUFZLElBQ1ZhLFdBQVcsQ0FBQzFDLElBQVosQ0FBaUI7QUFDZnRDLFFBQUFBLEtBQUssRUFBRSxJQURRO0FBRWZzRixRQUFBQSxTQUFTLEVBQUUsUUFGSTtBQUdmVSxRQUFBQSxLQUFLLEVBQUUsUUFIUTtBQUlmQyxRQUFBQSxLQUFLLEVBQUUsR0FKUTtBQUtmQyxRQUFBQSxNQUFNLEVBQUUsZ0JBQUNDLElBQUQsRUFBWTNFLE1BQVosRUFBNEI7QUFDbEMsOEJBQ0U7QUFBSyxZQUFBLFNBQVMsRUFBRXBELE1BQU0sQ0FBQyxRQUFEO0FBQXRCLGFBQ0dvRSxZQUFZLElBQUl5QixVQUFVLElBQUksSUFBOUIsaUJBQ0MsdURBQ0U7QUFDRSxZQUFBLFNBQVMsRUFBRTdGLE1BQU0sQ0FBQyxRQUFELENBRG5CO0FBRUUsWUFBQSxPQUFPLEVBQUUsTUFBSSxDQUFDZ0ksUUFBTCxDQUFjeEIsSUFBZCxDQUFtQixNQUFuQixFQUF5QnBELE1BQXpCLEVBQWlDLEtBQWpDO0FBRlgsNEJBREYsZUFPRTtBQUNFLFlBQUEsU0FBUyxFQUFFcEQsTUFBTSxDQUFDLFFBQUQsQ0FEbkI7QUFFRSxZQUFBLE9BQU8sRUFBRSxNQUFJLENBQUNnSSxRQUFMLENBQWN4QixJQUFkLENBQW1CLE1BQW5CLEVBQXlCcEQsTUFBekIsRUFBaUMsSUFBakM7QUFGWCw0QkFQRixDQUZKLEVBaUJHLE1BQUksQ0FBQzZFLGtCQUFMLENBQXdCOUQsYUFBeEIsRUFBdUNmLE1BQXZDLEVBQStDZ0IsWUFBL0MsQ0FqQkgsQ0FERjtBQXFCRDtBQTNCYyxPQUFqQixDQURGO0FBK0JBLDBCQUNFO0FBQUssUUFBQSxTQUFTLEVBQUVwRSxNQUFNLENBQUMsTUFBRCxDQUF0QjtBQUFnQyxRQUFBLEtBQUssRUFBRTtBQUFFa0ksVUFBQUEsT0FBTyxFQUFFO0FBQVg7QUFBdkMsU0FDRzFDLFFBQVEsaUJBQ1A7QUFBSyxRQUFBLFNBQVMsRUFBRXhGLE1BQU0sQ0FBQyxNQUFEO0FBQXRCLHNCQUNFLG9CQUFDLElBQUQ7QUFDRSxRQUFBLEtBQUssb0JBQU9pRyxTQUFQLENBRFA7QUFFRSxRQUFBLFFBQVEsRUFBRSxLQUZaO0FBR0UsUUFBQSxTQUFTLEVBQUUsS0FIYjtBQUlFLFFBQUEsVUFBVSxFQUFFQyxVQUpkO0FBS0UsUUFBQSxRQUFRLEVBQUUsS0FBS2lDLFVBQUwsQ0FBZ0IzQixJQUFoQixDQUFxQixJQUFyQixDQUxaO0FBTUUsUUFBQSxZQUFZLEVBQUUsQ0FBQyxLQUFLaEcsS0FBTCxDQUFXUyxlQUFaLENBTmhCO0FBT0UsUUFBQSxVQUFVLEVBQUVrRjtBQVBkLFFBREYsQ0FGSixlQWNFO0FBQUssUUFBQSxTQUFTLEVBQUVuRyxNQUFNLENBQUMsT0FBRDtBQUF0QixTQUNHb0YsVUFBVSxpQkFDVDtBQUFLLFFBQUEsU0FBUyxFQUFFcEYsTUFBTSxDQUFDLFFBQUQ7QUFBdEIsc0JBQ0Usb0JBQUMsSUFBRDtBQUNFLFFBQUEsR0FBRyxFQUFFLEtBQUtpRCxTQURaO0FBRUUsUUFBQSxRQUFRLEVBQUUsRUFGWjtBQUdFLFFBQUEsVUFBVSxFQUFFLEVBSGQ7QUFJRSxRQUFBLE1BQU0sRUFBQztBQUpULFNBTUc0RCxXQUFXLENBQUNyRCxHQUFaLENBQWdCLFVBQUNDLElBQUQsRUFBWUMsS0FBWixFQUEyQjtBQUMxQyxZQUFJQSxLQUFLLEdBQUcsQ0FBUixJQUFhLENBQUMsTUFBSSxDQUFDbEQsS0FBTCxDQUFXVSxNQUE3QixFQUFxQztBQUNuQztBQUNEOztBQUNELFlBQUksQ0FBQ3VDLElBQUksQ0FBQzFDLElBQVYsRUFBZ0I7QUFDZCw4QkFDRSxvQkFBQyxJQUFELENBQU0sS0FBTjtBQUNFLFlBQUEsS0FBSyxFQUFFMEMsSUFBSSxDQUFDMEQsS0FEZDtBQUVFLFlBQUEsSUFBSSxFQUFFMUQsSUFBSSxDQUFDaEQsSUFGYjtBQUdFLFlBQUEsR0FBRyxFQUFFaUQ7QUFIUCxZQURGO0FBT0QsU0FSRCxNQVFPO0FBQ0wsY0FBTXJELE1BQUsscUJBQVFvRCxJQUFJLENBQUNwRCxLQUFiLENBQVg7O0FBQ0EsOEJBQ0Usb0JBQUMsSUFBRCxDQUFNLE1BQU47QUFDRSxZQUFBLEtBQUssRUFBRW9ELElBQUksQ0FBQzBELEtBRGQ7QUFFRSxZQUFBLElBQUksRUFBRTFELElBQUksQ0FBQ2hEO0FBRmIsYUFHTUosTUFITjtBQUlFLFlBQUEsR0FBRyxFQUFFcUQ7QUFKUCxhQURGO0FBUUQ7QUFDRixPQXZCQSxDQU5ILENBREYsZUFnQ0U7QUFBSyxRQUFBLFNBQVMsRUFBRTFELE1BQU0sQ0FBQyxTQUFELENBQXRCO0FBQW1DLFFBQUEsS0FBSyxFQUFFO0FBQUVvSSxVQUFBQSxTQUFTLEVBQUU7QUFBYjtBQUExQyxzQkFDRSxvQkFBQyxNQUFEO0FBQ0UsUUFBQSxJQUFJLEVBQUUsU0FEUjtBQUVFLFFBQUEsT0FBTyxFQUFFLEtBQUtDLFFBQUwsQ0FBYzdCLElBQWQsQ0FBbUIsSUFBbkIsQ0FGWDtBQUdFLFFBQUEsSUFBSSxlQUFFLG9CQUFDLElBQUQ7QUFBTSxVQUFBLElBQUksRUFBRTNHLFFBQVEsQ0FBQ21IO0FBQXJCO0FBSFIsd0JBREYsZUFRRSxvQkFBQyxNQUFEO0FBQ0UsUUFBQSxJQUFJLEVBQUUsU0FEUjtBQUVFLFFBQUEsT0FBTyxFQUFFLG1CQUFNO0FBQUE7O0FBQ2IsbUNBQUEsTUFBSSxDQUFDL0QsU0FBTCxDQUFlNUIsT0FBZixnRkFBd0JpSCxXQUF4QjtBQUNELFNBSkg7QUFLRSxRQUFBLElBQUksZUFBRSxvQkFBQyxJQUFEO0FBQU0sVUFBQSxJQUFJLEVBQUV6SSxRQUFRLENBQUMwSTtBQUFyQjtBQUxSLHdCQVJGLEVBaUJHMUIsV0FBVyxDQUFDckYsTUFBWixHQUFxQixDQUFyQixpQkFDQztBQUNFLFFBQUEsU0FBUyxFQUFFeEIsTUFBTSxDQUFDd0ksT0FEcEI7QUFFRSxRQUFBLE9BQU8sRUFBRSxtQkFBTTtBQUNiLGNBQVF0SCxNQUFSLEdBQW1CLE1BQUksQ0FBQ1YsS0FBeEIsQ0FBUVUsTUFBUjs7QUFDQSxVQUFBLE1BQUksQ0FBQzBDLFFBQUwsQ0FBYztBQUNaMUMsWUFBQUEsTUFBTSxFQUFFLENBQUNBO0FBREcsV0FBZDtBQUdEO0FBUEgsU0FTRyxLQUFLVixLQUFMLENBQVdVLE1BQVgsR0FBb0IsSUFBcEIsR0FBMkIsSUFUOUIsRUFVRyxLQUFLVixLQUFMLENBQVdVLE1BQVgsZ0JBQW9CLG9CQUFDLFVBQUQsT0FBcEIsZ0JBQXFDLG9CQUFDLFlBQUQsT0FWeEMsQ0FsQkosQ0FoQ0YsQ0FGSixFQW9FR3dFLGNBQWMsaUJBQ2I7QUFBSyxRQUFBLFNBQVMsRUFBRTFGLE1BQU0sQ0FBQyxTQUFELENBQXRCO0FBQW1DLFFBQUEsS0FBSyxFQUFFO0FBQUV5SSxVQUFBQSxVQUFVLEVBQUU7QUFBZDtBQUExQyxTQUNHOUMsYUFBYSxJQUFJRSxVQUFVLElBQUksSUFBL0IsaUJBQ0Msb0JBQUMsTUFBRDtBQUNFLFFBQUEsSUFBSSxFQUFFLFNBRFI7QUFFRSxRQUFBLE9BQU8sRUFBRSxLQUFLbUMsUUFBTCxDQUFjeEIsSUFBZCxDQUFtQixJQUFuQixDQUZYO0FBR0UsUUFBQSxJQUFJLGVBQUUsb0JBQUMsSUFBRDtBQUFNLFVBQUEsSUFBSSxFQUFFM0csUUFBUSxDQUFDNkk7QUFBckI7QUFIUix3QkFGSixFQVVHOUMsZ0JBQWdCLElBQUlDLFVBQVUsSUFBSSxJQUFsQyxpQkFDQyxvQkFBQyxNQUFELENBQ0U7QUFERjtBQUVFLFFBQUEsT0FBTyxFQUFFLEtBQUs4QyxRQUFMLENBQWNuQyxJQUFkLENBQW1CLElBQW5CLENBRlg7QUFHRSxRQUFBLElBQUksZUFBRSxvQkFBQyxJQUFEO0FBQU0sVUFBQSxJQUFJLEVBQUUzRyxRQUFRLENBQUMrSTtBQUFyQixVQUhSO0FBSUUsUUFBQSxNQUFNO0FBSlIsd0JBWEosRUFvQkduQixPQUFPLENBQUNqRSxHQUFSLENBQVksVUFBQ0MsSUFBRCxFQUFZQyxLQUFaLEVBQTJCO0FBQ3RDLDRCQUFPO0FBQUssVUFBQSxHQUFHLEVBQUVBO0FBQVYsV0FBa0JELElBQWxCLENBQVA7QUFDRCxPQUZBLENBcEJILENBckVKLGVBOEZFO0FBQUssUUFBQSxTQUFTLEVBQUV6RCxNQUFNLENBQUMsT0FBRDtBQUF0QixzQkFDRSxvQkFBQyxLQUFEO0FBQU8sUUFBQSxHQUFHLEVBQUUsS0FBSzZDLFFBQWpCO0FBQTJCLFFBQUEsT0FBTyxFQUFFK0Q7QUFBcEMsU0FBcURSLFdBQXJELEVBREYsQ0E5RkYsQ0FkRixFQWdIR1AsVUFBVSxpQkFDVCxvQkFBQyxVQUFEO0FBQ0UsUUFBQSxHQUFHLEVBQUUsS0FBS3pFLFNBRFo7QUFFRSxRQUFBLFFBQVEsRUFBRSxLQUFLNEcsUUFBTCxDQUFjeEIsSUFBZCxDQUFtQixJQUFuQixDQUZaO0FBR0UsUUFBQSxRQUFRLEVBQUUsS0FBS3FDLFdBQUwsQ0FBaUJyQyxJQUFqQixDQUFzQixJQUF0QixDQUhaO0FBSUUsUUFBQSxTQUFTLEVBQUVNLFdBSmI7QUFLRSxRQUFBLFVBQVUsRUFBRXpCLFVBTGQ7QUFNRSxRQUFBLFNBQVMsRUFBRUMsU0FOYjtBQU9FLFFBQUEsWUFBWSxFQUFFRztBQVBoQixRQWpISixDQURGO0FBOEhEOzs7O0VBbGNvQnJHLGE7O0FBb2N2QixlQUFlZ0IsUUFBZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50IH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBUYWJsZSBmcm9tIFwiLi4vLi4vdGFibGVcIjtcclxuaW1wb3J0IFRyZWUgZnJvbSBcIi4uLy4uL3RyZWVcIjtcclxuaW1wb3J0IEZvcm0gZnJvbSBcIi4uLy4uL2Zvcm1cIjtcclxuaW1wb3J0IEJ1dHRvbiBmcm9tIFwiLi4vLi4vYnV0dG9uXCI7XHJcbmltcG9ydCBNb2RhbCBmcm9tIFwiLi4vLi4vbW9kYWxcIjtcclxuaW1wb3J0IFBvcG92ZXIgZnJvbSBcIi4uLy4uL3BvcG92ZXJcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uLy4uL21lc3NhZ2VcIjtcclxuaW1wb3J0IEljb24gZnJvbSBcIi4uLy4uL2NvbW1vbi9JY29uRm9udFwiO1xyXG5pbXBvcnQgeyBpY29uVHlwZSB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcclxuaW1wb3J0IEVkaXRvckZvcm0gZnJvbSBcIi4vRm9ybVwiO1xyXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XHJcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vaW5kZXgubGVzc1wiO1xyXG5pbXBvcnQgU3RvcmUsIHsgUGFnZVN0b3JlLCBTdG9yZVByb3BzIH0gZnJvbSBcIkBiai1uc2MvbXNuXCI7XHJcbmltcG9ydCB7IERvd25PdXRsaW5lZCwgVXBPdXRsaW5lZCB9IGZyb20gXCJAYW50LWRlc2lnbi9pY29uc1wiO1xyXG5pbXBvcnQgcmVxdWVzdCBmcm9tIFwibnNjLXJlcXVlc3RcIjtcclxuaW50ZXJmYWNlIFRhYmxlUHJvcHMge1xyXG4gIGFjdGlvbkNvbHVtbj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65pON5L2c5YiXXHJcbiAgYWN0aW9uQnV0dG9uPzogYm9vbGVhbjsgLy/mmK/lkKbpu5jorqTmmL7npLrmlrDlop7vvIznvJbovpHpu5jorqTmjInpkq5cclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgZmlsdGVyQ29sdW1uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrov4fmu6TmjInpkq5cclxuICBzaG93Um93U2VsZWN0aW9uPzogYm9vbGVhbjsgLy/mmK/lkKbooajmoLzli77pgInliJdcclxufVxyXG5pbnRlcmZhY2UgVHJlZVByb3BzIHtcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgc2hvd1NlYXJjaD86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65pCc57Si5qGGXHJcbiAgc2VhcmNoS2V5Pzogc3RyaW5nOyAvL+aQnOe0onZhbHVl5a+55bqU55qEa2V5XHJcbiAgc2VhcmNoRmllbGQ/OiBzdHJpbmc7IC8v5p+l6K+i5a+55bqU55qEa2V5XHJcbiAgdGl0bGVBbGlhcz86IHN0cmluZzsgLy/moJF0aXRsZeWvueW6lOeahGtleSzpu5jorqR0aXRsZVxyXG4gIG5vZGVQb3Jwcz86IG9iamVjdDtcclxufVxyXG5pbnRlcmZhY2UgTlNDQmFzZUJhZ2VQcm9wcyB7XHJcbiAgc2hvd1NlYXJjaD86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65aS06YOo5pCc57Si5qCPXHJcbiAgdGFibGVQcm9wcz86IFRhYmxlUHJvcHM7IC8v6KGo5qC85Y+C5pWwXHJcbiAgdHJlZVByb3BzPzogVHJlZVByb3BzOyAvL+W3puS+p+agkeWPguaVsFxyXG4gIHN1Ym1pdFBhcmFtcz86IE9iamVjdDtcclxuICBzdWJtaXRVcmw/OiBzdHJpbmc7XHJcbiAgYXV0b1N1Ym1pdD86IGJvb2xlYW47XHJcbiAgY29sdW1uczogQXJyYXk8T2JqZWN0PjtcclxuICBzaG93TGVmdD86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65bem5L6n55uu5b2V5qCRXHJcbiAgc2hvd1Rvb2xCdXR0b24/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuaMiemSruagj1xyXG4gIHNob3dBZGRCdXR0b24/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuua3u+WKoOaMiemSrlxyXG4gIGVkaXRvckZvcm0/OiBib29sZWFuOyAvL+aYr+WQpumcgOimgeihqOWNleWKn+iDvSAsIOS4umZhbHNlIOe8lui+ke+8jOafpeeci++8jOaWsOWinuWKn+iDveWdh+S4jeWPr+eUqFxyXG4gIHNob3dEZWxldGVCdXR0b24/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuWIoOmZpOaMiemSrlxyXG4gIGRlbGV0ZVVybD86IHN0cmluZzsgLy/liKDpmaR1cmxcclxufVxyXG5cclxuY2xhc3MgQmFzZVBhZ2UgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PE5TQ0Jhc2VCYWdlUHJvcHMsIGFueT4ge1xyXG4gIHRhYmxlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICB0cmVlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBzZWFyY2hSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIGVkaXRvclJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgY29uc3RydWN0b3IocHJvcHM6IGFueSkge1xyXG4gICAgc3VwZXIocHJvcHMpO1xyXG4gICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgdHlwZTogXCJhZGRcIixcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbXSxcclxuICAgICAgdHJlZVNlbGVjdGVkS2V5OiBcIlwiLFxyXG4gICAgICBleHBhbmQ6IGZhbHNlLFxyXG4gICAgfTtcclxuICB9XHJcbiAgb25TZWxlY3QgPSAoY2hlY2tlZFRyZWVLZXlzOiBhbnkpID0+IHtcclxuICAgIGNvbnN0IHsgbmFtZSwgdXNlclR5cGUsIGFjY291bnQgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHsgbmFtZSwgdXNlclR5cGUsIGFjY291bnQsIGRlcHRJZDogY2hlY2tlZFRyZWVLZXlzWzBdIH07XHJcbiAgICB0aGlzLnRhYmxlTG9hZCh2YWx1ZSk7XHJcbiAgfTtcclxuXHJcbiAgLy/mmL7npLrooajljZVcclxuICBzaG93Rm9ybSh2YWx1ZT86IGFueSwgZmxhZyA9IHRydWUpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LnNob3codmFsdWUsIGZsYWcpO1xyXG4gIH1cclxuICAvL+aJuemHj+WIoOmZpFxyXG4gIG9uRGVsZXRlKCkge1xyXG4gICAgY29uc3QgeyBkZWxldGVVcmwgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHNlbGVjdGVkUm93S2V5cyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGlmIChzZWxlY3RlZFJvd0tleXMubGVuZ3RoID09IDApIHtcclxuICAgICAgbWVzc2FnZS53YXJuaW5nKFwi6K+36YCJ5oup6KaB5Yig6Zmk55qE5pWw5o2u77yBXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoIWRlbGV0ZVVybCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1cmzkuI3og73kuLrnqbrvvIFcIik7XHJcbiAgICB9XHJcbiAgICBNb2RhbC5jb25maXJtKHtcclxuICAgICAgdGl0bGU6IFwi5piv5ZCm56Gu6K6k5Yig6Zmk5omA6YCJ6aG577yfXCIsXHJcbiAgICAgIC8vIGljb246IDxJY29uIHR5cGU9eydpY29udGlzaGktMyd9IC8+LFxyXG4gICAgICBva1RleHQ6IFwi56Gu6K6kXCIsXHJcbiAgICAgIGNhbmNlbFRleHQ6IFwi5Y+W5raIXCIsXHJcbiAgICAgIG9uT2s6ICgpID0+IHtcclxuICAgICAgICBjb25zdCByZXF1ZXN0UGFyYW0gPSB7IG1ldGhvZDogXCJwb3N0XCIsIGRhdGE6IHsgaWRzOiBzZWxlY3RlZFJvd0tleXMgfSB9O1xyXG4gICAgICAgIHJlcXVlc3QoZGVsZXRlVXJsLCB7XHJcbiAgICAgICAgICAuLi5yZXF1ZXN0UGFyYW0sXHJcbiAgICAgICAgfSlcclxuICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXM6IGFueSkge1xyXG4gICAgICAgICAgICBjb25zdCB7IGNvZGUgfSA9IHJlcztcclxuICAgICAgICAgICAgaWYgKGNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgIG1lc3NhZ2Uuc3VjY2VzcyhcIuWIoOmZpOaIkOWKn++8gVwiKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBtZXNzYWdlLmVycm9yKFwi5Yig6Zmk5aSx6LSl77yBXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcjogYW55KSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIiwgZXJyb3IpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgdGFibGVMb2FkKHBhcmFtczogYW55KSB7XHJcbiAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlLmxvYWQoe1xyXG4gICAgICBwYXJhbXM6IHBhcmFtcyxcclxuICAgIH0pO1xyXG4gIH1cclxuICAvL+afpeivolxyXG4gIG9uU2VhcmNoKCkge1xyXG4gICAgY29uc3QgZnJvbVZhbHVlID0gdGhpcy5zZWFyY2hSZWYuY3VycmVudD8uZ2V0RmllbGRzVmFsdWUoKTtcclxuICAgIHRoaXMubG9hZChmcm9tVmFsdWUpO1xyXG4gIH1cclxuICAvL+ihqOagvOmHjeaWsOWKoOi9vVxyXG4gIHRhYmxlUmVsb2FkKCkge1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZS5yZWxvYWQoKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuc2VsZWN0ZWRSb3dLZXlzO1xyXG4gIH1cclxuICBnZXRTZWFyY2hWYWx1ZXMoKSB7XHJcbiAgICBjb25zdCBmcm9tVmFsdWUgPSB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5nZXRGaWVsZHNWYWx1ZSgpO1xyXG4gICAgcmV0dXJuIGZyb21WYWx1ZTtcclxuICB9XHJcbiAgcm93U2VsZWN0aW9uT25TZWxlY3QocmVjb3JkOiBhbnksIHNlbGVjdGVkOiBhbnkpIHtcclxuICAgIGNvbnN0IHsgc2VsZWN0ZWRSb3dLZXlzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IG5ld1NlbGVjdGVkUm93S2V5cyA9IFsuLi5zZWxlY3RlZFJvd0tleXNdO1xyXG4gICAgaWYgKHNlbGVjdGVkKSB7XHJcbiAgICAgIG5ld1NlbGVjdGVkUm93S2V5cyA9IFsuLi5uZXdTZWxlY3RlZFJvd0tleXMsIHJlY29yZC5pZF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzZWxlY3RlZFJvd0tleXMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoaXRlbSA9PT0gcmVjb3JkLmlkKSB7XHJcbiAgICAgICAgICBuZXdTZWxlY3RlZFJvd0tleXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlbGVjdGVkUm93S2V5czogbmV3U2VsZWN0ZWRSb3dLZXlzLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJvd1NlbGVjdGlvbk9uU2VsZWN0QWxsKHNlbGVjdGVkOiBhbnksIHNlbGVjdGVkUm93czogYW55LCBjaGFuZ2VSb3dzOiBhbnkpIHtcclxuICAgIGNvbnN0IHsgc2VsZWN0ZWRSb3dLZXlzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IG5ld2lkczogYW55ID0gW107XHJcbiAgICBpZiAoY2hhbmdlUm93cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBjaGFuZ2VJZHMgPSBjaGFuZ2VSb3dzLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtLmlkKTtcclxuICAgICAgaWYgKHNlbGVjdGVkKSB7XHJcbiAgICAgICAgbmV3aWRzID0gWy4uLnNlbGVjdGVkUm93S2V5cywgLi4uY2hhbmdlSWRzXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzZWxlY3RlZFJvd0tleXMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChjaGFuZ2VJZHMuaW5kZXhPZihpdGVtKSA9PSAtMSkge1xyXG4gICAgICAgICAgICBuZXdpZHMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbmV3aWRzID0gWy4uLnNlbGVjdGVkUm93S2V5c107XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbLi4ubmV3aWRzXSxcclxuICAgIH0pO1xyXG4gIH1cclxuICBsb2FkKHBhcmFtczogYW55KSB7XHJcbiAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlLmxvYWQoeyBwYXJhbXMgfSk7XHJcbiAgfVxyXG4gIHJlbmRlckNsb3VtbkJ1dHRvbihjb2x1bW5CdXR0b25zOiBhbnksIHJlY29yZDogYW55LCBhY3Rpb25CdXR0b24/OiBib29sZWFuKSB7XHJcbiAgICBjb25zdCBjb250ZW50ID0gY29sdW1uQnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgLi4ucGFyYW1zIH0gPSBpdGVtLnByb3BzO1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKHN0eWxlc1tcImVkaXRvclwiXSwgc3R5bGVzW1wiY29udGVudC1pdGVtXCJdKX1cclxuICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyZWNvcmQpO1xyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge2NoaWxkcmVufVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICApO1xyXG4gICAgfSk7XHJcbiAgICBsZXQgbnVtID0gMTtcclxuICAgIGlmICghYWN0aW9uQnV0dG9uKSBudW0gPSAzO1xyXG4gICAgaWYgKGNvbHVtbkJ1dHRvbnMubGVuZ3RoID4gbnVtKSB7XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPFBvcG92ZXJcclxuICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICB0aXRsZT17bnVsbH1cclxuICAgICAgICAgIGNvbnRlbnQ9e2NvbnRlbnR9XHJcbiAgICAgICAgICB0cmlnZ2VyPVwiY2xpY2tcIlxyXG4gICAgICAgICAgLy8gb3ZlcmxheUNsYXNzTmFtZT17c3R5bGVzWydwb3AnXX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzW1wiZWRpdG9yXCJdfT5cclxuICAgICAgICAgICAg5pu05aSaXHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzW1wiaWNvblwiXX0+XHJcbiAgICAgICAgICAgICAgPERvd25PdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gY29sdW1uQnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCBJY29uLCAuLi5wYXJhbXMgfSA9IGl0ZW0ucHJvcHM7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbXCJlZGl0b3JcIl19XHJcbiAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socmVjb3JkKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge0ljb259IHtjaGlsZHJlbn1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICAvL+agkeeCueWHu+S6i+S7tlxyXG4gIHRyZWVTZWxlY3Qoc2VsZWN0ZWRLZXlzOiBhbnksIHsgc2VsZWN0ZWQsIHNlbGVjdGVkTm9kZXMgfTogYW55KSB7XHJcbiAgICBsZXQga2V5d29yZCA9IFwiXCI7XHJcbiAgICBjb25zdCB7IHNlYXJjaEtleSA9IFwia2V5XCIsIHNlYXJjaEZpZWxkID0gXCJcIiB9ID0gdGhpcy5wcm9wcy50cmVlUHJvcHM7XHJcbiAgICBjb25zdCB7IHRyZWVTZWxlY3RlZEtleSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGlmIChzZWxlY3RlZCkge1xyXG4gICAgICBpZiAoc2VsZWN0ZWROb2Rlc1swXS5pc0xlYWYgfHwgIXNlbGVjdGVkTm9kZXNbMF0uY2hpbGRyZW4pIHtcclxuICAgICAgICBpZiAoc2VsZWN0ZWRLZXlzWzBdICE9PSB0cmVlU2VsZWN0ZWRLZXkpIHtcclxuICAgICAgICAgIC8vIGxldCBtYXBEYXRhID0gdGhpcy50cmVlUmVmLmN1cnJlbnQ/LnN0b3JlLmdldEZsYXR0ZW5EYXRhKCk7XHJcbiAgICAgICAgICBrZXl3b3JkID0gc2VsZWN0ZWROb2Rlc1swXS5kYXRhcmVmLmF0dHJpYnV0ZVtzZWFyY2hLZXldO1xyXG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIHRyZWVTZWxlY3RlZEtleTogc2VsZWN0ZWRLZXlzWzBdLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IGtleXdvcmQsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZnJvbVZhbHVlID0gdGhpcy5zZWFyY2hSZWYuY3VycmVudD8uZ2V0RmllbGRzVmFsdWUoKTtcclxuICAgIHNlYXJjaEZpZWxkICYmIHRoaXMubG9hZCh7IC4uLmZyb21WYWx1ZSwgW3NlYXJjaEZpZWxkXToga2V5d29yZCB9KTtcclxuICB9XHJcbiAgcmVuZGVyKCkge1xyXG4gICAgY29uc3QgeyBzZWxlY3RlZFJvd0tleXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGNvbHVtbnMgPSBbXSxcclxuICAgICAgc2hvd1NlYXJjaCA9IHRydWUsXHJcbiAgICAgIGNoaWxkcmVuLFxyXG4gICAgICBhdXRvU3VibWl0ID0gdHJ1ZSxcclxuICAgICAgc3VibWl0VXJsID0gXCJcIixcclxuICAgICAgdGFibGVQcm9wcyA9IHt9LFxyXG4gICAgICB0cmVlUHJvcHMgPSB7fSxcclxuICAgICAgc2hvd0xlZnQgPSBmYWxzZSxcclxuICAgICAgc3VibWl0UGFyYW1zID0ge30sXHJcbiAgICAgIHNob3dUb29sQnV0dG9uID0gdHJ1ZSxcclxuICAgICAgc2hvd0FkZEJ1dHRvbiA9IHRydWUsXHJcbiAgICAgIHNob3dEZWxldGVCdXR0b24gPSB0cnVlLFxyXG4gICAgICBlZGl0b3JGb3JtID0gdHJ1ZSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzdG9yZSA9IHt9LFxyXG4gICAgICBmaWx0ZXJDb2x1bW4gPSB0cnVlLFxyXG4gICAgICBhY3Rpb25CdXR0b24gPSB0cnVlLFxyXG4gICAgICBhY3Rpb25Db2x1bW4gPSB0cnVlLFxyXG4gICAgICBzaG93Um93U2VsZWN0aW9uID0gdHJ1ZSxcclxuICAgIH0gPSB0YWJsZVByb3BzO1xyXG5cclxuICAgIGNvbnN0IHtcclxuICAgICAgc3RvcmU6IHRyZWVTdG9yZSA9IHt9LFxyXG4gICAgICBzaG93U2VhcmNoOiB0cmVlU2VhcmNoID0gdHJ1ZSxcclxuICAgICAgdGl0bGVBbGlhcyA9IFwidGl0bGVcIixcclxuICAgIH0gPSB0cmVlUHJvcHM7XHJcblxyXG4gICAgbGV0IHRhYmxlUGFyYW1zID0geyBmaWx0ZXJDb2x1bW4sIHN0b3JlIH0gYXMgYW55O1xyXG5cclxuICAgIGlmIChzaG93Um93U2VsZWN0aW9uKSB7XHJcbiAgICAgIHRhYmxlUGFyYW1zID0ge1xyXG4gICAgICAgIC4uLnRhYmxlUGFyYW1zLFxyXG4gICAgICAgIHJvd1NlbGVjdGlvbjoge1xyXG4gICAgICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBzZWxlY3RlZFJvd0tleXMsXHJcbiAgICAgICAgICBvblNlbGVjdDogdGhpcy5yb3dTZWxlY3Rpb25PblNlbGVjdC5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgb25TZWxlY3RBbGw6IHRoaXMucm93U2VsZWN0aW9uT25TZWxlY3RBbGwuYmluZCh0aGlzKSxcclxuICAgICAgICAgIGNvbHVtbldpZHRoOiA0MCxcclxuICAgICAgICB9LFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgY29uc3QgdGFibGVDb2x1bW46IGFueVtdID0gW107XHJcbiAgICBjb25zdCBzZWFyY2hGb3JtczogYW55ID0gW107XHJcbiAgICBjb25zdCBlZGl0b3JGb3JtczogYW55ID0gW107XHJcbiAgICBjb2x1bW5zLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGxldCB0ZW1wID0geyAuLi5pdGVtIH07XHJcbiAgICAgIGlmICh0ZW1wLnNlYXJjaCkge1xyXG4gICAgICAgIHNlYXJjaEZvcm1zLnB1c2goe1xyXG4gICAgICAgICAgbmFtZTogdGVtcC5maWVsZCB8fCB0ZW1wLmRhdGFJbmRleCxcclxuICAgICAgICAgIGxhYmVsOiB0ZW1wLnRpdGxlLFxyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgcHJvcHM6IHRlbXAucHJvcHMsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgZGVsZXRlIHRlbXAuc2VhcmNoO1xyXG4gICAgICB0ZW1wLmVkaXRvciAhPT0gZmFsc2UgJiZcclxuICAgICAgICBlZGl0b3JGb3Jtcy5wdXNoKHtcclxuICAgICAgICAgIG5hbWU6IHRlbXAuZmllbGQgfHwgdGVtcC5kYXRhSW5kZXgsXHJcbiAgICAgICAgICBsYWJlbDogdGVtcC50aXRsZSxcclxuICAgICAgICAgIHJ1bGVzOiB0ZW1wLnJ1bGVzLFxyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgcHJvcHM6IHRlbXAucHJvcHMsXHJcbiAgICAgICAgICBzcGFuOiB0ZW1wLnNwYW4sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnJ1bGVzO1xyXG4gICAgICBkZWxldGUgdGVtcC5zcGFuO1xyXG4gICAgICBpZiAodGVtcC5jb2x1bW5TZWFyY2gpIHtcclxuICAgICAgICB0ZW1wLmZpbHRlclByb3BzID0ge1xyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgcHJvcHM6IHRlbXAucHJvcHMsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICBkZWxldGUgdGVtcC50eXBlO1xyXG4gICAgICBkZWxldGUgdGVtcC5wcm9wcztcclxuICAgICAgdGFibGVDb2x1bW4ucHVzaCh0ZW1wKTtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgQnV0dG9uczogYW55ID0gW107XHJcbiAgICBjb25zdCBjb2x1bW5CdXR0b25zOiBhbnkgPSBbXTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChpdGVtLnByb3BzLnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiKSB7XHJcbiAgICAgICAgICBCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtLnByb3BzLnBhZ2VUeXBlID09IFwiY2xvdW1uQnV0dG9uXCIpIHtcclxuICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChjaGlsZHJlbikge1xyXG4gICAgICBjb25zdCB7IHByb3BzIH06IGFueSA9IGNoaWxkcmVuO1xyXG4gICAgICBpZiAocHJvcHMucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIpIHtcclxuICAgICAgICBCdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9IGVsc2UgaWYgKHByb3BzLnBhZ2VUeXBlID09IFwiY2xvdW1uQnV0dG9uXCIpIHtcclxuICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBhY3Rpb25Db2x1bW4gJiZcclxuICAgICAgdGFibGVDb2x1bW4ucHVzaCh7XHJcbiAgICAgICAgdGl0bGU6IFwi5pON5L2cXCIsXHJcbiAgICAgICAgZGF0YUluZGV4OiBcImFjdGlvblwiLFxyXG4gICAgICAgIGFsaWduOiBcImNlbnRlclwiLFxyXG4gICAgICAgIHdpZHRoOiAxNTAsXHJcbiAgICAgICAgcmVuZGVyOiAodGV4dDogYW55LCByZWNvcmQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1tcImFjdGlvblwiXX0+XHJcbiAgICAgICAgICAgICAge2FjdGlvbkJ1dHRvbiAmJiBlZGl0b3JGb3JtID09IHRydWUgJiYgKFxyXG4gICAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzW1wiZWRpdG9yXCJdfVxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMuc2hvd0Zvcm0uYmluZCh0aGlzLCByZWNvcmQsIGZhbHNlKX1cclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIOafpeeci1xyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzW1wiZWRpdG9yXCJdfVxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMuc2hvd0Zvcm0uYmluZCh0aGlzLCByZWNvcmQsIHRydWUpfVxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAg57yW6L6RXHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICB7dGhpcy5yZW5kZXJDbG91bW5CdXR0b24oY29sdW1uQnV0dG9ucywgcmVjb3JkLCBhY3Rpb25CdXR0b24pfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1tcInBhZ2VcIl19IHN0eWxlPXt7IGRpc3BsYXk6IFwiZmxleFwiIH19PlxyXG4gICAgICAgIHtzaG93TGVmdCAmJiAoXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzW1wibGVmdFwiXX0+XHJcbiAgICAgICAgICAgIDxUcmVlXHJcbiAgICAgICAgICAgICAgc3RvcmU9e3sgLi4udHJlZVN0b3JlIH19XHJcbiAgICAgICAgICAgICAgc2hvd0ljb249e2ZhbHNlfVxyXG4gICAgICAgICAgICAgIGNoZWNrYWJsZT17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgc2VhcmNoYWJsZT17dHJlZVNlYXJjaH1cclxuICAgICAgICAgICAgICBvblNlbGVjdD17dGhpcy50cmVlU2VsZWN0LmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRLZXlzPXtbdGhpcy5zdGF0ZS50cmVlU2VsZWN0ZWRLZXldfVxyXG4gICAgICAgICAgICAgIHRpdGxlQWxpYXM9e3RpdGxlQWxpYXN9XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbXCJyaWdodFwiXX0+XHJcbiAgICAgICAgICB7c2hvd1NlYXJjaCAmJiAoXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbXCJoZWFkZXJcIl19PlxyXG4gICAgICAgICAgICAgIDxGb3JtXHJcbiAgICAgICAgICAgICAgICByZWY9e3RoaXMuc2VhcmNoUmVmfVxyXG4gICAgICAgICAgICAgICAgbGFiZWxDb2w9e3t9fVxyXG4gICAgICAgICAgICAgICAgd3JhcHBlckNvbD17e319XHJcbiAgICAgICAgICAgICAgICBsYXlvdXQ9XCJpbmxpbmVcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHtzZWFyY2hGb3Jtcy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPiAyICYmICF0aGlzLnN0YXRlLmV4cGFuZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBpZiAoIWl0ZW0udHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICA8Rm9ybS5JbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17aXRlbS5sYWJlbH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT17aXRlbS5uYW1lfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb3BzID0geyAuLi5pdGVtLnByb3BzIH07XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICAgIDxGb3JtLlNlbGVjdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17aXRlbS5sYWJlbH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT17aXRlbS5uYW1lfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7Li4ucHJvcHN9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgIDwvRm9ybT5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzW1wiYnV0dG9uc1wiXX0gc3R5bGU9e3sgbWFyZ2luVG9wOiAwIH19PlxyXG4gICAgICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgICAgICAgICAgb25DbGljaz17dGhpcy5vblNlYXJjaC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgICBpY29uPXs8SWNvbiB0eXBlPXtpY29uVHlwZS5zZWFyY2h9IC8+fVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICDmn6Xor6JcclxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LnJlc2V0RmllbGRzKCk7XHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIGljb249ezxJY29uIHR5cGU9e2ljb25UeXBlLnJlZnJlc2h9IC8+fVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICDph43nva5cclxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAge3NlYXJjaEZvcm1zLmxlbmd0aCA+IDMgJiYgKFxyXG4gICAgICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRyaWdnZXJ9XHJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBleHBhbmQgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kOiAhZXhwYW5kLFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHt0aGlzLnN0YXRlLmV4cGFuZCA/IFwi5pS26LW3XCIgOiBcIuWxleW8gFwifVxyXG4gICAgICAgICAgICAgICAgICAgIHt0aGlzLnN0YXRlLmV4cGFuZCA/IDxVcE91dGxpbmVkIC8+IDogPERvd25PdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgICAge3Nob3dUb29sQnV0dG9uICYmIChcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1tcImJ1dHRvbnNcIl19IHN0eWxlPXt7IG1hcmdpbkxlZnQ6IDAgfX0+XHJcbiAgICAgICAgICAgICAge3Nob3dBZGRCdXR0b24gJiYgZWRpdG9yRm9ybSA9PSB0cnVlICYmIChcclxuICAgICAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICAgICAgdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMuc2hvd0Zvcm0uYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICAgICAgaWNvbj17PEljb24gdHlwZT17aWNvblR5cGUuYWRkfSAvPn1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAg5re75YqgXHJcbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIHtzaG93RGVsZXRlQnV0dG9uICYmIGVkaXRvckZvcm0gPT0gdHJ1ZSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIC8vIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLm9uRGVsZXRlLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICAgIGljb249ezxJY29uIHR5cGU9e2ljb25UeXBlLmRlbGV0ZTN9IC8+fVxyXG4gICAgICAgICAgICAgICAgICBkYW5nZXJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAg5Yig6ZmkXHJcbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIHtCdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gPGRpdiBrZXk9e2luZGV4fT57aXRlbX08L2Rpdj47XHJcbiAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbXCJ0YWJsZVwiXX0+XHJcbiAgICAgICAgICAgIDxUYWJsZSByZWY9e3RoaXMudGFibGVSZWZ9IGNvbHVtbnM9e3RhYmxlQ29sdW1ufSB7Li4udGFibGVQYXJhbXN9IC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB7ZWRpdG9yRm9ybSAmJiAoXHJcbiAgICAgICAgICA8RWRpdG9yRm9ybVxyXG4gICAgICAgICAgICByZWY9e3RoaXMuZWRpdG9yUmVmfVxyXG4gICAgICAgICAgICBvbkNhbmNlbD17dGhpcy5zaG93Rm9ybS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICBjYWxsQmFjaz17dGhpcy50YWJsZVJlbG9hZC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICBmb3JtUHJvcHM9e2VkaXRvckZvcm1zfVxyXG4gICAgICAgICAgICBhdXRvU3VibWl0PXthdXRvU3VibWl0fVxyXG4gICAgICAgICAgICBzdWJtaXRVcmw9e3N1Ym1pdFVybH1cclxuICAgICAgICAgICAgc3VibWl0UGFyYW1zPXtzdWJtaXRQYXJhbXN9XHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICl9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgQmFzZVBhZ2U7XHJcbiJdfQ==