nsc-react-component 4.3.4 → 4.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/base/form/filed/FormItem.js +7 -3
- package/lib/base/form/filed/FormItem.js.map +1 -1
- package/lib/base/form/filed/Item.js +7 -3
- package/lib/base/form/filed/Item.js.map +1 -1
- package/lib/base/modal/Confirm.js +10 -2
- package/lib/base/modal/Confirm.js.map +1 -1
- package/lib/base/modal/index.d.ts +2 -0
- package/lib/base/modal/index.js +16 -2
- package/lib/base/modal/index.js.map +1 -1
- package/lib/base/select/index.js +11 -9
- package/lib/base/select/index.js.map +1 -1
- package/lib/base/table/index.js +11 -11
- package/lib/base/table/index.js.map +1 -1
- package/lib/base/tree/index.js +11 -8
- package/lib/base/tree/index.js.map +1 -1
- package/lib/page/BasePage/index.d.ts +1 -0
- package/lib/page/BasePage/index.js +4 -3
- package/lib/page/BasePage/index.js.map +1 -1
- package/lib/page/BasePage/index.module.less +1 -1
- package/lib/page/BasePage/utils.js +14 -13
- package/lib/page/BasePage/utils.js.map +1 -1
- package/lib/page/FormPage/index.js +1 -2
- package/lib/page/FormPage/index.js.map +1 -1
- package/lib/page/HeaderSearch/index.js +1 -1
- package/lib/page/HeaderSearch/index.js.map +1 -1
- package/lib/page/SettingTable/index.js +8 -5
- package/lib/page/SettingTable/index.js.map +1 -1
- package/lib/utils.d.ts +1 -0
- package/lib/utils.js +41 -1
- package/lib/utils.js.map +1 -1
- package/package.json +1 -1
|
@@ -16,6 +16,7 @@ import React from "react";
|
|
|
16
16
|
import NscRequest from "nsc-request";
|
|
17
17
|
import cls from "classnames";
|
|
18
18
|
import { defaultComFuncs, defaultUtil, ModalForm, renderSelfColumnButton, renderSelfToolButton, ModalManager } from "../SettingUtil/utils";
|
|
19
|
+
import { deepMerge } from "../../utils";
|
|
19
20
|
const getPageData = params => {
|
|
20
21
|
return NscRequest.get("/jquick-setting/setting/table/info/", {
|
|
21
22
|
params,
|
|
@@ -380,6 +381,8 @@ export default class SettingTable extends React.Component {
|
|
|
380
381
|
codeFormButtons.push(children);
|
|
381
382
|
}
|
|
382
383
|
}
|
|
384
|
+
let newTableProps = deepMerge(_objectSpread({}, tableProps), _objectSpread({}, settingTableProps));
|
|
385
|
+
let newTreeProps = deepMerge(_objectSpread({}, treeProps), _objectSpread({}, settingTreeProps));
|
|
383
386
|
return /*#__PURE__*/React.createElement("div", {
|
|
384
387
|
className: cls("nsc-framework-tablepage", className)
|
|
385
388
|
}, pageLoading ? /*#__PURE__*/React.createElement("div", {
|
|
@@ -390,8 +393,8 @@ export default class SettingTable extends React.Component {
|
|
|
390
393
|
}, /*#__PURE__*/React.createElement(Spin, {
|
|
391
394
|
spinning: pageLoading
|
|
392
395
|
})) : /*#__PURE__*/React.createElement(BasePage, _extends({}, pageProps, {
|
|
393
|
-
treeProps: _objectSpread(
|
|
394
|
-
tableProps: _objectSpread(
|
|
396
|
+
treeProps: _objectSpread({}, newTreeProps),
|
|
397
|
+
tableProps: _objectSpread({}, newTableProps),
|
|
395
398
|
formProps: {},
|
|
396
399
|
Utils: _objectSpread({}, defaultUtil),
|
|
397
400
|
ref: this.pageRef,
|
|
@@ -407,10 +410,10 @@ export default class SettingTable extends React.Component {
|
|
|
407
410
|
},
|
|
408
411
|
funcs: _objectSpread(_objectSpread({}, deaultFuncs), funcs),
|
|
409
412
|
initData: this.initData,
|
|
410
|
-
formPageProps: {
|
|
413
|
+
formPageProps: _objectSpread({
|
|
411
414
|
formType: formPageProps.formType || "modal",
|
|
412
415
|
props: formPageProps === null || formPageProps === void 0 ? void 0 : formPageProps.props
|
|
413
|
-
},
|
|
416
|
+
}, formPageProps === null || formPageProps === void 0 ? void 0 : formPageProps.otherProps),
|
|
414
417
|
tableCode: this.props.tableCode
|
|
415
418
|
}, otherProps), renderSelfToolButton({
|
|
416
419
|
selfButton: selfToolButton,
|
|
@@ -438,4 +441,4 @@ export default class SettingTable extends React.Component {
|
|
|
438
441
|
}));
|
|
439
442
|
}
|
|
440
443
|
}
|
|
441
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCYXNlUGFnZSIsIlNwaW4iLCJSZWFjdCIsIk5zY1JlcXVlc3QiLCJjbHMiLCJkZWZhdWx0Q29tRnVuY3MiLCJkZWZhdWx0VXRpbCIsIk1vZGFsRm9ybSIsInJlbmRlclNlbGZDb2x1bW5CdXR0b24iLCJyZW5kZXJTZWxmVG9vbEJ1dHRvbiIsIk1vZGFsTWFuYWdlciIsImdldFBhZ2VEYXRhIiwicGFyYW1zIiwiZ2V0IiwieHNzRmlsdGVyIiwiYXV0b1ByZWZpeCIsInNldEZpZWxkRGlzYWJsZWQiLCJkYXRhIiwia2V5IiwiZGlzYWJsZWQiLCJjb2x1bW5zIiwibmV3Q29sdW1ucyIsIm1hcCIsIml0ZW0iLCJvYmoiLCJfb2JqZWN0U3ByZWFkIiwiZGF0YUluZGV4IiwiaW5kZXhPZiIsInByb3BzIiwicHVzaCIsInNldEZpZWxkVmlzaWJsZSIsInZpc2libGUiLCJlZGl0b3IiLCJzZXRGaWVsZFByb3BzRGF0YSIsInByb3BzRGF0YSIsImRlZmF1bHRTdGF0ZVZhbHVlIiwicGFnZVByb3BzIiwidHJlZVByb3BzIiwic3RvcmUiLCJ1cmwiLCJhdXRvTG9hZCIsInRhYmxlUHJvcHMiLCJzZWxmVG9vbEJ1dHRvbiIsInNlbGZDb2x1bW5CdXR0b24iLCJzZWxmRm9ybUJ1dHRvbiIsInBhZ2VMb2FkaW5nIiwiZGVmYXVsdENvbHVtbnMiLCJvdGhlclByb3BzIiwiYnV0dG9uTG9hZGluZyIsImZvcm1QYWdlUHJvcHMiLCJTZXR0aW5nVGFibGUiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsImFyZ3VtZW50cyIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsInJlcyIsInN0YXRlIiwic2hvd1NlYXJjaCIsImRlZmF1bHRTZWFyY2giLCJ0YWJsZURhdGFSZXNvdXJjZSIsImZ1bmMiLCJGdW5jdGlvbiIsInBhZ2VSZWYiLCJzZXRUaW1lb3V0IiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50IiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50MiIsImN1cnJlbnQiLCJ0YWJsZUxvYWQiLCJzZXRTZWFyY2hQYXJhbXMiLCJjb21wb25lbnREaWRNb3VudCIsImdldERhdGEiLCJyZWdpc3RlciIsIm1vZGFsUmVmIiwiY29tcG9uZW50RGlkVXBkYXRlIiwicHJldlByb3BzIiwicHJldlN0YXRlIiwic25hcHNob3QiLCJ0YWJsZUNvZGUiLCJzZXRTdGF0ZSIsInB1Ymxpc2hlZCIsIm1lbnVDb2RlIiwidGFiUGFyYW1zIiwiY29kZSIsImlzUHVibGlzaGVkIiwidGhlbiIsIl9wYWdlX3Byb3BzJHBlcm1pc3NpbyIsInRhYmxlX3Byb3BzIiwiSlNPTiIsInBhcnNlIiwidHJlZV9wcm9wcyIsInBhZ2VfcHJvcHMiLCJvdGhlcl9wcm9wcyIsIm90aGVyUGFyYW1zIiwiZm9ybV9wcm9wcyIsImZvcm1Qcm9wcyIsInBlcm1pc3Npb24iLCJoYXMiLCJVdGlscyIsInBhcmFtRnVuYyIsImNvbnZlclRhYlBhcmFtcyIsInJlcXVlc3RQYXJhbXMiLCJuZXdSZXF1ZXN0UGFyYW1zIiwicXVlcnlQYXJhbXMiLCJhZGRQYXJhbXMiLCJlZGl0b3JQYXJhbXMiLCJjb252ZXJQYXJhbXMiLCJvdGhlciIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsIm5ld1BhcmFtcyIsImNvbHVtbkJ1dHRvbnMiLCJ0b29sQnV0dG9ucyIsInNlbGZCdXR0b24iLCJfbWVzc2FnZSIsImVycm9yIiwiZ2V0U2VhcmNoVmFsdWVzIiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50MyIsInZhbHVlIiwiY2FsbEJhY2siLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQ0IiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50NSIsInJlcXVlc3RDb25maWciLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJ0YWJsZVJlbG9hZCIsIl90aGlzJHBhZ2VSZWYkY3VycmVudDYiLCJnZXRTZWxlY3RlZFJvd0tleXMiLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQ3IiwiZ2V0U2VsZWN0ZWRSb3dEYXRhcyIsIl90aGlzJHBhZ2VSZWYkY3VycmVudDgiLCJyZXNldFNlbGVjdGVkUm93S2V5cyIsIl90aGlzJHBhZ2VSZWYkY3VycmVudDkiLCJyZW5kZXIiLCJjbGFzc05hbWUiLCJmdW5jcyIsImJhc2VQcm9wcyIsInNldHRpbmdUcmVlUHJvcHMiLCJzZXR0aW5nVGFibGVQcm9wcyIsIl9leGNsdWRlZDIiLCJfdGhpcyIsImRlYXVsdEZ1bmNzIiwibmV3RGF0YSIsInNldEJ1dHRvbkxvYWRpbmciLCJsb2FkaW5nIiwib3BlbkZvcm1Nb2RhbCIsInNob3dNb2RhbCIsImNoaWxkcmVuIiwiY29kZVNlbGZCdXR0b25zIiwiY29kZWNvbHVtbkJ1dHRvbnMiLCJjb2RlRm9ybUJ1dHRvbnMiLCJBcnJheSIsImlzQXJyYXkiLCJjaGlsZCIsIl9jaGlsZCRwcm9wcyIsIl9jaGlsZCRwcm9wczIiLCJfY2hpbGQkcHJvcHMzIiwicGFnZVR5cGUiLCJfaXRlbSRwcm9wcyIsIl9pdGVtJHByb3BzMiIsIl9pdGVtJHByb3BzMyIsImNyZWF0ZUVsZW1lbnQiLCJzdHlsZSIsIndpZHRoIiwiaGVpZ2h0Iiwic3Bpbm5pbmciLCJfZXh0ZW5kcyIsInJlZiIsIm9uSGlkZUZvcm0iLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQxMCIsImhpZGVGb3JtIiwiaW5pdERhdGEiLCJmb3JtVHlwZSIsInR5cGUiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9wYWdlL1NldHRpbmdUYWJsZS9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZm9yd2FyZFJlZiwgdXNlRWZmZWN0LCB1c2VJbXBlcmF0aXZlSGFuZGxlLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgQmFzZVBhZ2UsIHsgTlNDQmFzZUJhZ2VQcm9wcyB9IGZyb20gXCIuLi9CYXNlUGFnZVwiO1xyXG5pbXBvcnQgU3BpbiBmcm9tIFwiLi4vLi4vYmFzZS9zcGluXCI7XHJcbmltcG9ydCBCdXR0b24gZnJvbSBcIi4uLy4uL2Jhc2UvYnV0dG9uXCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubGVzc1wiO1xyXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBOc2NSZXF1ZXN0IGZyb20gXCJuc2MtcmVxdWVzdFwiO1xyXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XHJcbmltcG9ydCB7IG1lc3NhZ2UgfSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQge1xyXG4gIGRlZmF1bHRDb21GdW5jcyxcclxuICBkZWZhdWx0VXRpbCxcclxuICBNb2RhbEZvcm0sXHJcbiAgcmVuZGVyU2VsZkNvbHVtbkJ1dHRvbixcclxuICByZW5kZXJTZWxmVG9vbEJ1dHRvbixcclxuICBNb2RhbE1hbmFnZXIsXHJcbiAgT3BlblBhcm1zLFxyXG59IGZyb20gXCIuLi9TZXR0aW5nVXRpbC91dGlsc1wiO1xyXG5cclxuY29uc3QgZ2V0UGFnZURhdGEgPSAocGFyYW1zOiBhbnkpID0+IHtcclxuICByZXR1cm4gTnNjUmVxdWVzdC5nZXQoYC9qcXVpY2stc2V0dGluZy9zZXR0aW5nL3RhYmxlL2luZm8vYCwge1xyXG4gICAgcGFyYW1zLFxyXG4gICAgeHNzRmlsdGVyOiBmYWxzZSxcclxuICAgIGF1dG9QcmVmaXg6IHRydWUsXHJcbiAgfSk7XHJcbn07XHJcblxyXG4vL+iuvue9ruihqOWNleWtl+auteWPquivu1xyXG5jb25zdCBzZXRGaWVsZERpc2FibGVkID0gKGRhdGE6IEFycmF5PGFueT4sIGtleSwgZGlzYWJsZWQpID0+IHtcclxuICBjb25zdCBjb2x1bW5zID0gWy4uLmRhdGFdO1xyXG4gIGxldCBuZXdDb2x1bW5zID0gW10gYXMgYW55O1xyXG4gIGNvbHVtbnMubWFwKChpdGVtKSA9PiB7XHJcbiAgICBsZXQgb2JqID0geyAuLi5pdGVtIH07XHJcbiAgICBpZiAoaXRlbS5kYXRhSW5kZXggPT0ga2V5IHx8IGtleS5pbmRleE9mKGl0ZW0uZGF0YUluZGV4KSA+IC0xKSB7XHJcbiAgICAgIGxldCBwcm9wcyA9IG9iai5wcm9wcyA/IHsgLi4ub2JqLnByb3BzIH0gOiB7fTtcclxuICAgICAgcHJvcHMuZGlzYWJsZWQgPSBkaXNhYmxlZDtcclxuICAgICAgb2JqLnByb3BzID0gcHJvcHM7XHJcbiAgICB9XHJcbiAgICBuZXdDb2x1bW5zLnB1c2gob2JqKTtcclxuICB9KTtcclxuICByZXR1cm4gbmV3Q29sdW1ucztcclxufTtcclxuLy/orr7nva7ooajljZXlrZfmrrXpmpDol49cclxuY29uc3Qgc2V0RmllbGRWaXNpYmxlID0gKGRhdGE6IEFycmF5PGFueT4sIGtleSwgdmlzaWJsZSkgPT4ge1xyXG4gIGNvbnN0IGNvbHVtbnMgPSBbLi4uZGF0YV07XHJcbiAgbGV0IG5ld0NvbHVtbnMgPSBbXSBhcyBhbnk7XHJcbiAgY29sdW1ucy5tYXAoKGl0ZW0pID0+IHtcclxuICAgIGxldCBvYmogPSB7IC4uLml0ZW0gfTtcclxuICAgIGlmIChpdGVtLmRhdGFJbmRleCA9PSBrZXkgfHwga2V5LmluZGV4T2YoaXRlbS5kYXRhSW5kZXgpID4gLTEpIHtcclxuICAgICAgb2JqLmVkaXRvciA9IHZpc2libGU7XHJcbiAgICB9XHJcbiAgICBuZXdDb2x1bW5zLnB1c2gob2JqKTtcclxuICB9KTtcclxuICByZXR1cm4gbmV3Q29sdW1ucztcclxufTtcclxuXHJcbmNvbnN0IHNldEZpZWxkUHJvcHNEYXRhID0gKGRhdGE6IEFycmF5PGFueT4sIGtleSwgcHJvcHNEYXRhKSA9PiB7XHJcbiAgY29uc3QgY29sdW1ucyA9IFsuLi5kYXRhXTtcclxuICBsZXQgbmV3Q29sdW1ucyA9IFtdIGFzIGFueTtcclxuICBjb2x1bW5zLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgbGV0IG9iaiA9IHsgLi4uaXRlbSB9O1xyXG4gICAgaWYgKGl0ZW0uZGF0YUluZGV4ID09IGtleSkge1xyXG4gICAgICBsZXQgcHJvcHMgPSBvYmoucHJvcHMgPyB7IC4uLm9iai5wcm9wcyB9IDoge307XHJcbiAgICAgIHByb3BzLmRhdGEgPSBwcm9wc0RhdGE7XHJcbiAgICAgIG9iai5wcm9wcyA9IHByb3BzO1xyXG4gICAgfVxyXG4gICAgbmV3Q29sdW1ucy5wdXNoKG9iaik7XHJcbiAgfSk7XHJcbiAgcmV0dXJuIG5ld0NvbHVtbnM7XHJcbn07XHJcbmludGVyZmFjZSBJUHJvcHMge1xyXG4gIHRhYmxlQ29kZTogc3RyaW5nO1xyXG4gIGNsYXNzTmFtZT86IGFueTtcclxuICBtZW51Q29kZT86IHN0cmluZztcclxuICBmdW5jcz86IGFueTtcclxuICBwdWJsaXNoZWQ/OiBib29sZWFuO1xyXG4gIGluc3RhbmNlUmVmPzogYW55O1xyXG4gIHRhYlBhcmFtcz86IGFueTtcclxuICBvbkNhbGxCYWNrcz86IHtcclxuICAgIHRyZWVTZWxlY3RDYWxsQmFjaz86IGFueTsgLy/moJHngrnlh7vmn6Xor6LlkI7lm57osINcclxuICAgIG9uUXVlcnlDYWxsQmFjaz86IGFueTsgLy/mn6Xor6Llm57osIPvvIzmn6Xor6LmlbDmja7lkI7lm57osINcclxuICAgIG9uU3VtYml0Q2FsbEJhY2s/OiBhbnk7IC8v5L+d5a2Y5Zue6LCD77yM5L+d5a2Y5pWw5o2u5oiQ5Yqf5ZCO5Zue6LCDXHJcbiAgICBvbkRlbGV0ZUNhbGxCYWNrPzogYW55OyAvL+WIoOmZpOaMiemSruWbnuiwg++8jOWIoOmZpOaVsOaNruWQjuaJp+ihjFxyXG4gICAgb25FZGl0b3JDYWxsQmFjaz86IGFueTsgLy/nvJbovpHmjInpkq7lm57osIPvvIzmiZPlvIDlvLnmoYblkI7miafooYxcclxuICAgIG9uQWRkQ2FsbEJhY2s/OiBhbnk7IC8v5re75Yqg5oyJ6ZKu5Zue6LCD77yM5omT5byA5by55qGG5ZCO5omn6KGMXHJcbiAgICBvblNlYXJjaENhbGxCYWNrPzogYW55OyAvL+WIl+ihqOafpeivouaMiemSruWbnuiwg++8jOaJk+W8gOW8ueahhuWQjuaJp+ihjFxyXG4gIH07XHJcbiAgYmFzZVByb3BzPzogTlNDQmFzZUJhZ2VQcm9wcztcclxuICBhdXRvTG9hZD86IGJvb2xlYW47XHJcbn1cclxuXHJcbmNvbnN0IGRlZmF1bHRTdGF0ZVZhbHVlID0ge1xyXG4gIHBhZ2VQcm9wczoge30gYXMgYW55LFxyXG4gIHRyZWVQcm9wczogeyBzdG9yZTogeyB1cmw6IFwiXCIsIGF1dG9Mb2FkOiBmYWxzZSB9IH0gYXMgYW55LFxyXG4gIHRhYmxlUHJvcHM6IHt9IGFzIGFueSxcclxuICBzZWxmVG9vbEJ1dHRvbjogW10gYXMgYW55LFxyXG4gIHNlbGZDb2x1bW5CdXR0b246IFtdIGFzIGFueSxcclxuICBzZWxmRm9ybUJ1dHRvbjogW10gYXMgYW55LFxyXG4gIHBhZ2VMb2FkaW5nOiB0cnVlLFxyXG4gIGRlZmF1bHRDb2x1bW5zOiBbXSBhcyBhbnksXHJcbiAgb3RoZXJQcm9wczoge30gYXMgYW55LFxyXG4gIGJ1dHRvbkxvYWRpbmc6IHt9IGFzIGFueSxcclxuICBmb3JtUGFnZVByb3BzOiB7fSBhcyBhbnksXHJcbn07XHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNldHRpbmdUYWJsZSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxJUHJvcHMsIGFueT4ge1xyXG4gIHN0YXRlID0ge1xyXG4gICAgLi4uZGVmYXVsdFN0YXRlVmFsdWUsXHJcbiAgfTtcclxuICBwYWdlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBtb2RhbFJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcblxyXG4gIGNvbXBvbmVudERpZE1vdW50KCk6IHZvaWQge1xyXG4gICAgdGhpcy5nZXREYXRhKCk7XHJcbiAgICBNb2RhbE1hbmFnZXIucmVnaXN0ZXIodGhpcy5tb2RhbFJlZik7XHJcbiAgfVxyXG5cclxuICBjb21wb25lbnREaWRVcGRhdGUoXHJcbiAgICBwcmV2UHJvcHM6IFJlYWRvbmx5PElQcm9wcz4sXHJcbiAgICBwcmV2U3RhdGU6IFJlYWRvbmx5PGFueT4sXHJcbiAgICBzbmFwc2hvdD86IGFueVxyXG4gICk6IHZvaWQge1xyXG4gICAgaWYgKHByZXZQcm9wcy50YWJsZUNvZGUgIT0gdGhpcy5wcm9wcy50YWJsZUNvZGUpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZShcclxuICAgICAgICB7XHJcbiAgICAgICAgICAuLi5kZWZhdWx0U3RhdGVWYWx1ZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluaXREYXRhID0gKHJlczogYW55KSA9PiB7XHJcbiAgICBjb25zdCB7IG90aGVyUHJvcHMsIHBhZ2VQcm9wcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGlmIChcclxuICAgICAgcGFnZVByb3BzLnNob3dTZWFyY2ggIT09IGZhbHNlICYmXHJcbiAgICAgIG90aGVyUHJvcHMuZGVmYXVsdFNlYXJjaCAmJlxyXG4gICAgICBvdGhlclByb3BzLnRhYmxlRGF0YVJlc291cmNlID09IFwidXJsXCJcclxuICAgICkge1xyXG4gICAgICBsZXQgZnVuYyA9IG5ldyBGdW5jdGlvbihcIlV0aWxzLGV2ZW50T3B0aW9uXCIsIG90aGVyUHJvcHMuZGVmYXVsdFNlYXJjaCk7XHJcbiAgICAgIGNvbnN0IHBhcmFtcyA9IGZ1bmMoZGVmYXVsdFV0aWwsIHsgcGFnZVJlZjogdGhpcy5wYWdlUmVmIH0pO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLnBhZ2VSZWYuY3VycmVudD8udGFibGVMb2FkKHsgLi4ucGFyYW1zIH0pO1xyXG4gICAgICAgIHRoaXMucGFnZVJlZi5jdXJyZW50Py5zZXRTZWFyY2hQYXJhbXMoeyAuLi5wYXJhbXMgfSk7XHJcbiAgICAgIH0sIDUwKTsgLy/nm7TmjqXorr7nva7vvIxwYWdlUmVm5rKh57uR5a6a77yM5pqC5pe26YCa6L+H5bu26L+f5Ye95pWw6L+b6KGM6Kej5YazXHJcbiAgICB9XHJcbiAgfTtcclxuICAvLyDojrflj5bmlbDmja5cclxuICBnZXREYXRhKCkge1xyXG4gICAgLy8g5LuOcHJvcHPkuK3ojrflj5Z0YWJsZUNvZGXjgIFwdWJsaXNoZWTjgIFtZW51Q29kZVxyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHBhZ2VMb2FkaW5nOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICBjb25zdCB7IHRhYmxlQ29kZSwgcHVibGlzaGVkID0gdHJ1ZSwgbWVudUNvZGUsIHRhYlBhcmFtcyB9ID0gdGhpcy5wcm9wcztcclxuICAgIC8vIOWmguaenHRhYmxlQ29kZeWtmOWcqFxyXG4gICAgaWYgKHRhYmxlQ29kZSkge1xyXG4gICAgICAvLyDlrprkuYnlj4LmlbBcclxuICAgICAgbGV0IHBhcmFtcyA9IHsgY29kZTogdGFibGVDb2RlIH0gYXMgYW55O1xyXG4gICAgICAvLyDlpoLmnpxwdWJsaXNoZWTkuLp0cnVlXHJcbiAgICAgIGlmIChwdWJsaXNoZWQpIHtcclxuICAgICAgICAvLyDorr7nva7lj4LmlbBpc1B1Ymxpc2hlZOS4ujFcclxuICAgICAgICBwYXJhbXMuaXNQdWJsaXNoZWQgPSAxO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIOiwg+eUqGdldFBhZ2VEYXRh5pa55rOV6I635Y+W5pWw5o2uXHJcbiAgICAgIGdldFBhZ2VEYXRhKHsgLi4ucGFyYW1zIH0pLnRoZW4oKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcy5jb2RlID09IDIwMCAmJiByZXMuZGF0YSkge1xyXG4gICAgICAgICAgbGV0IHRhYmxlX3Byb3BzID0gSlNPTi5wYXJzZShyZXMuZGF0YS50YWJsZVByb3BzIHx8IFwie31cIikgfHwge307XHJcbiAgICAgICAgICBsZXQgdHJlZV9wcm9wcyA9IEpTT04ucGFyc2UocmVzLmRhdGEudHJlZVByb3BzIHx8IFwie31cIikgfHwge307XHJcbiAgICAgICAgICBsZXQgcGFnZV9wcm9wcyA9IEpTT04ucGFyc2UocmVzLmRhdGEucGFnZVByb3BzIHx8IFwie31cIikgfHwge307XHJcbiAgICAgICAgICBsZXQgb3RoZXJfcHJvcHMgPSBKU09OLnBhcnNlKHJlcy5kYXRhLm90aGVyUGFyYW1zIHx8IFwie31cIikgfHwge307XHJcbiAgICAgICAgICBsZXQgZm9ybV9wcm9wcyA9IEpTT04ucGFyc2UocmVzLmRhdGEuZm9ybVByb3BzIHx8IFwie31cIikgfHwge307XHJcbiAgICAgICAgICBpZiAocGFnZV9wcm9wcy5wZXJtaXNzaW9uPy5oYXMgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICBwYWdlX3Byb3BzLnBlcm1pc3Npb24ubWVudUNvZGUgPSBtZW51Q29kZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChwdWJsaXNoZWQgPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgcGFnZV9wcm9wcy5wZXJtaXNzaW9uID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIChwYWdlX3Byb3BzLnNob3dTZWFyY2ggIT09IGZhbHNlICYmXHJcbiAgICAgICAgICAgICAgb3RoZXJfcHJvcHMuZGVmYXVsdFNlYXJjaCAmJlxyXG4gICAgICAgICAgICAgIG90aGVyX3Byb3BzPy50YWJsZURhdGFSZXNvdXJjZSA9PSBcInVybFwiKSB8fFxyXG4gICAgICAgICAgICB0aGlzLnByb3BzLmF1dG9Mb2FkID09PSBmYWxzZVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRhYmxlX3Byb3BzLnN0b3JlLmF1dG9Mb2FkID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGFiUGFyYW1zKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IFV0aWxzID0gZGVmYXVsdFV0aWwgfHwge307XHJcbiAgICAgICAgICAgIGxldCBwYXJhbUZ1bmMgPSBuZXcgRnVuY3Rpb24oXCJVdGlsc1wiLCB0YWJQYXJhbXMpO1xyXG4gICAgICAgICAgICBsZXQgY29udmVyVGFiUGFyYW1zID0gcGFyYW1GdW5jKFV0aWxzKTtcclxuICAgICAgICAgICAgaWYgKHBhZ2VfcHJvcHMucmVxdWVzdFBhcmFtcykge1xyXG4gICAgICAgICAgICAgIGxldCB7IHJlcXVlc3RQYXJhbXMgPSB7fSB9ID0gcGFnZV9wcm9wcztcclxuICAgICAgICAgICAgICBsZXQgbmV3UmVxdWVzdFBhcmFtcyA9IHtcclxuICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgYWRkUGFyYW1zOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgZWRpdG9yUGFyYW1zOiBudWxsLFxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgZm9yIChsZXQga2V5IGluIG5ld1JlcXVlc3RQYXJhbXMpIHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXF1ZXN0UGFyYW1zW2tleV0pIHtcclxuICAgICAgICAgICAgICAgICAgbGV0IGZ1bmMgPSBuZXcgRnVuY3Rpb24oXCJVdGlsc1wiLCByZXF1ZXN0UGFyYW1zW2tleV0pO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgY29udmVyUGFyYW1zID0gZnVuYyhVdGlscyk7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZGF0YSwgLi4ub3RoZXIgfSA9IGNvbnZlclBhcmFtcztcclxuICAgICAgICAgICAgICAgICAgbGV0IG5ld1BhcmFtcyA9IHtcclxuICAgICAgICAgICAgICAgICAgICBkYXRhOiB7IC4uLmNvbnZlclRhYlBhcmFtcywgLi4uZGF0YSB9LFxyXG4gICAgICAgICAgICAgICAgICAgIC4uLm90aGVyLFxyXG4gICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICBuZXdSZXF1ZXN0UGFyYW1zW2tleV0gPSBuZXdQYXJhbXM7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICBuZXdSZXF1ZXN0UGFyYW1zW2tleV0gPSB7IGRhdGE6IHsgLi4uY29udmVyVGFiUGFyYW1zIH0gfTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgcGFnZV9wcm9wcy5yZXF1ZXN0UGFyYW1zID0geyAuLi5uZXdSZXF1ZXN0UGFyYW1zIH07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcGFnZV9wcm9wcy5yZXF1ZXN0UGFyYW1zID0ge1xyXG4gICAgICAgICAgICAgICAgcXVlcnlQYXJhbXM6IHsgZGF0YTogeyAuLi5jb252ZXJUYWJQYXJhbXMgfSB9LFxyXG4gICAgICAgICAgICAgICAgYWRkUGFyYW1zOiB7IGRhdGE6IHsgLi4uY29udmVyVGFiUGFyYW1zIH0gfSxcclxuICAgICAgICAgICAgICAgIGVkaXRvclBhcmFtczogeyBkYXRhOiB7IC4uLmNvbnZlclRhYlBhcmFtcyB9IH0sXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZShcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHBhZ2VQcm9wczoge1xyXG4gICAgICAgICAgICAgICAgLi4ucGFnZV9wcm9wcyxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHRyZWVQcm9wczoge1xyXG4gICAgICAgICAgICAgICAgLi4udHJlZV9wcm9wcyxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHRhYmxlUHJvcHM6IHtcclxuICAgICAgICAgICAgICAgIC4uLnRhYmxlX3Byb3BzLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgb3RoZXJQcm9wczogeyAuLi5vdGhlcl9wcm9wcyB9LFxyXG4gICAgICAgICAgICAgIHNlbGZDb2x1bW5CdXR0b246IEpTT04ucGFyc2UocmVzLmRhdGEuY29sdW1uQnV0dG9ucykgfHwgW10sXHJcbiAgICAgICAgICAgICAgc2VsZlRvb2xCdXR0b246IEpTT04ucGFyc2UocmVzLmRhdGEudG9vbEJ1dHRvbnMpIHx8IFtdLFxyXG4gICAgICAgICAgICAgIGRlZmF1bHRDb2x1bW5zOiBwYWdlX3Byb3BzLmNvbHVtbnMsXHJcbiAgICAgICAgICAgICAgZm9ybVBhZ2VQcm9wczogZm9ybV9wcm9wcyxcclxuICAgICAgICAgICAgICBzZWxmRm9ybUJ1dHRvbjogZm9ybV9wcm9wcz8uc2VsZkJ1dHRvbiB8fCBbXSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgcGFnZUxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSBpZiAocmVzLmNvZGUgPT0gMjAwICYmIHJlcy5kYXRhID09IG51bGwpIHtcclxuICAgICAgICAgIG1lc3NhZ2UuZXJyb3IoXCLmnKrmib7liLDphY3nva7kv6Hmga/vvIFcIik7XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgcGFnZUxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICBwYWdlTG9hZGluZzogZmFsc2UsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgcGFnZUxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8gb25TZWFyY2goKSB7fVxyXG4gIGdldFNlYXJjaFZhbHVlcygpIHtcclxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxuICBzZXRTZWFyY2hQYXJhbXMocGFyYW1zLCBjYWxsQmFjaykge1xyXG4gICAgdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LnNldFNlYXJjaFBhcmFtcyhwYXJhbXMpO1xyXG4gIH1cclxuICB0YWJsZUxvYWQocGFyYW1zOiBhbnksIHJlcXVlc3RDb25maWcgPSB7fSkge1xyXG4gICAgdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LnRhYmxlTG9hZChwYXJhbXMsIHJlcXVlc3RDb25maWcpO1xyXG4gIH1cclxuICB0YWJsZVJlbG9hZChwYXJhbXMgPSB7fSwgYXV0b0xvYWQgPSB0cnVlKSB7XHJcbiAgICB0aGlzLnBhZ2VSZWYuY3VycmVudD8udGFibGVSZWxvYWQocGFyYW1zLCBhdXRvTG9hZCk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLnBhZ2VSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dLZXlzKCk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93RGF0YXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93RGF0YXMoKTtcclxuICB9XHJcblxyXG4gIHJlc2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucGFnZVJlZi5jdXJyZW50Py5yZXNldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gIH1cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGNsYXNzTmFtZSxcclxuICAgICAgZnVuY3MgPSB7fSxcclxuICAgICAgYmFzZVByb3BzID0ge30gYXMgTlNDQmFzZUJhZ2VQcm9wcyxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBwYWdlUHJvcHMsXHJcbiAgICAgIHRyZWVQcm9wcyxcclxuICAgICAgdGFibGVQcm9wcyxcclxuICAgICAgc2VsZlRvb2xCdXR0b24sXHJcbiAgICAgIHNlbGZDb2x1bW5CdXR0b24sXHJcbiAgICAgIHBhZ2VMb2FkaW5nLFxyXG4gICAgICBkZWZhdWx0Q29sdW1ucyxcclxuICAgICAgYnV0dG9uTG9hZGluZyA9IHt9LFxyXG4gICAgICBmb3JtUGFnZVByb3BzID0ge30sXHJcbiAgICAgIHNlbGZGb3JtQnV0dG9uLFxyXG4gICAgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHRyZWVQcm9wczogc2V0dGluZ1RyZWVQcm9wcyA9IHt9LFxyXG4gICAgICB0YWJsZVByb3BzOiBzZXR0aW5nVGFibGVQcm9wcyA9IHt9LFxyXG4gICAgICAuLi5vdGhlclByb3BzXHJcbiAgICB9ID0gYmFzZVByb3BzO1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGNvbnN0IGRlYXVsdEZ1bmNzID0ge1xyXG4gICAgICBzZXRGaWVsZERpc2FibGVkOiAoa2V5LCBkaXNhYmxlZCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IG5ld0RhdGEgPSBzZXRGaWVsZERpc2FibGVkKHBhZ2VQcm9wcy5jb2x1bW5zLCBrZXksIGRpc2FibGVkKTtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIHBhZ2VQcm9wczogeyAuLi5wYWdlUHJvcHMsIGNvbHVtbnM6IG5ld0RhdGEgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgICAgc2V0RmllbGRWaXNpYmxlOiAoa2V5LCBkaXNhYmxlZCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IG5ld0RhdGEgPSBzZXRGaWVsZFZpc2libGUocGFnZVByb3BzLmNvbHVtbnMsIGtleSwgZGlzYWJsZWQpO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgcGFnZVByb3BzOiB7IC4uLnBhZ2VQcm9wcywgY29sdW1uczogbmV3RGF0YSB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9LFxyXG4gICAgICBzZXRGaWVsZFByb3BzRGF0YTogKGtleSwgZGF0YSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IG5ld0RhdGEgPSBzZXRGaWVsZFByb3BzRGF0YShwYWdlUHJvcHMuY29sdW1ucywga2V5LCBkYXRhKTtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIHBhZ2VQcm9wczogeyAuLi5wYWdlUHJvcHMsIGNvbHVtbnM6IG5ld0RhdGEgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgICAgLy8gaGlzdG9yeTogKHBhcmFtcywgdHlwZSkgPT4ge1xyXG4gICAgICAvLyAgIGp1bXBQYWdlKHBhcmFtcywgdHlwZSk7XHJcbiAgICAgIC8vIH0sXHJcbiAgICAgIHNldEJ1dHRvbkxvYWRpbmc6IChjb2RlLCBsb2FkaW5nKSA9PiB7XHJcbiAgICAgICAgX3RoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgYnV0dG9uTG9hZGluZzogeyAuLi5idXR0b25Mb2FkaW5nLCBbY29kZV06IGxvYWRpbmcgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgICAgLi4uZGVmYXVsdENvbUZ1bmNzLFxyXG4gICAgICBvcGVuRm9ybU1vZGFsOiAocGFyYW1zOk9wZW5QYXJtcykgPT4ge1xyXG4gICAgICAgIE1vZGFsTWFuYWdlci5zaG93TW9kYWwocGFyYW1zKTtcclxuICAgICAgfSxcclxuICAgICAgLy8gZ2V0Q3VycmVudFByb2plY3Q6ICgpID0+IHtcclxuICAgICAgLy8gICByZXR1cm4gZ2V0UHJvamVjdCgpO1xyXG4gICAgICAvLyB9LFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHsgY2hpbGRyZW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgY29kZVNlbGZCdXR0b25zID0gW107XHJcbiAgICBsZXQgY29kZWNvbHVtbkJ1dHRvbnMgPSBbXTtcclxuICAgIGxldCBjb2RlRm9ybUJ1dHRvbnMgPSBbXTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW0pKSB7XHJcbiAgICAgICAgICBpdGVtLm1hcCgoY2hpbGQpID0+IHtcclxuICAgICAgICAgICAgaWYgKGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIpIHtcclxuICAgICAgICAgICAgICBjb2RlU2VsZkJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNvbHVtbkJ1dHRvblwiKSB7XHJcbiAgICAgICAgICAgICAgY29kZWNvbHVtbkJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcImZvcm1CdXR0b25cIikge1xyXG4gICAgICAgICAgICAgIGNvZGVGb3JtQnV0dG9ucy5wdXNoKGNoaWxkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChpdGVtPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIpIHtcclxuICAgICAgICAgICAgY29kZVNlbGZCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNvbHVtbkJ1dHRvblwiKSB7XHJcbiAgICAgICAgICAgIGNvZGVjb2x1bW5CdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcImZvcm1CdXR0b25cIikge1xyXG4gICAgICAgICAgICBjb2RlRm9ybUJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChjaGlsZHJlbikge1xyXG4gICAgICBjb25zdCB7IHByb3BzIH06IGFueSA9IGNoaWxkcmVuO1xyXG4gICAgICBpZiAocHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiKSB7XHJcbiAgICAgICAgY29kZVNlbGZCdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9IGVsc2UgaWYgKHByb3BzPy5wYWdlVHlwZSA9PSBcImNvbHVtbkJ1dHRvblwiKSB7XHJcbiAgICAgICAgY29kZWNvbHVtbkJ1dHRvbnMucHVzaChjaGlsZHJlbik7XHJcbiAgICAgIH0gZWxzZSBpZiAocHJvcHM/LnBhZ2VUeXBlID09IFwiZm9ybUJ1dHRvblwiKSB7XHJcbiAgICAgICAgY29kZUZvcm1CdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xzKFwibnNjLWZyYW1ld29yay10YWJsZXBhZ2VcIiwgY2xhc3NOYW1lKX0+XHJcbiAgICAgICAge3BhZ2VMb2FkaW5nID8gKFxyXG4gICAgICAgICAgPGRpdiBzdHlsZT17eyB3aWR0aDogXCIxMDAlXCIsIGhlaWdodDogXCIxMDAlXCIgfX0+XHJcbiAgICAgICAgICAgIDxTcGluIHNwaW5uaW5nPXtwYWdlTG9hZGluZ30+PC9TcGluPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKSA6IChcclxuICAgICAgICAgIDxCYXNlUGFnZVxyXG4gICAgICAgICAgICB7Li4ucGFnZVByb3BzfVxyXG4gICAgICAgICAgICB0cmVlUHJvcHM9e3sgLi4udHJlZVByb3BzLCAuLi5zZXR0aW5nVHJlZVByb3BzIH19XHJcbiAgICAgICAgICAgIHRhYmxlUHJvcHM9e3sgLi4udGFibGVQcm9wcywgLi4uc2V0dGluZ1RhYmxlUHJvcHMgfX1cclxuICAgICAgICAgICAgZm9ybVByb3BzPXt7fX1cclxuICAgICAgICAgICAgVXRpbHM9e3sgLi4uZGVmYXVsdFV0aWwgfX1cclxuICAgICAgICAgICAgcmVmPXt0aGlzLnBhZ2VSZWZ9XHJcbiAgICAgICAgICAgIHBhZ2VSZWY9e3RoaXMucGFnZVJlZn1cclxuICAgICAgICAgICAgb25IaWRlRm9ybT17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgcGFnZVByb3BzOiB7IC4uLnBhZ2VQcm9wcywgY29sdW1uczogZGVmYXVsdENvbHVtbnMgfSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB0aGlzLnBhZ2VSZWYuY3VycmVudD8uaGlkZUZvcm0oKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgZnVuY3M9e3sgLi4uZGVhdWx0RnVuY3MsIC4uLmZ1bmNzIH19XHJcbiAgICAgICAgICAgIGluaXREYXRhPXt0aGlzLmluaXREYXRhfVxyXG4gICAgICAgICAgICBmb3JtUGFnZVByb3BzPXt7XHJcbiAgICAgICAgICAgICAgZm9ybVR5cGU6IGZvcm1QYWdlUHJvcHMuZm9ybVR5cGUgfHwgXCJtb2RhbFwiLFxyXG4gICAgICAgICAgICAgIHByb3BzOiBmb3JtUGFnZVByb3BzPy5wcm9wcyxcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgdGFibGVDb2RlPXt0aGlzLnByb3BzLnRhYmxlQ29kZX1cclxuICAgICAgICAgICAgey4uLm90aGVyUHJvcHN9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtyZW5kZXJTZWxmVG9vbEJ1dHRvbih7XHJcbiAgICAgICAgICAgICAgc2VsZkJ1dHRvbjogc2VsZlRvb2xCdXR0b24sXHJcbiAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgIGZ1bmNzOiB7IC4uLmRlYXVsdEZ1bmNzLCAuLi5mdW5jcyB9LFxyXG4gICAgICAgICAgICAgIGxvYWRpbmc6IHRoaXMuc3RhdGUuYnV0dG9uTG9hZGluZyxcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgIHtjb2RlU2VsZkJ1dHRvbnMubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICB7cmVuZGVyU2VsZkNvbHVtbkJ1dHRvbih7XHJcbiAgICAgICAgICAgICAgc2VsZkNvbHVtbkJ1dHRvbixcclxuICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgZnVuY3M6IHsgLi4uZGVhdWx0RnVuY3MsIC4uLmZ1bmNzIH0sXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICB7Y29kZWNvbHVtbkJ1dHRvbnMubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICB7cmVuZGVyU2VsZlRvb2xCdXR0b24oe1xyXG4gICAgICAgICAgICAgIHNlbGZCdXR0b246IHNlbGZGb3JtQnV0dG9uLFxyXG4gICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucGFnZVJlZixcclxuICAgICAgICAgICAgICBmdW5jczogeyAuLi5kZWF1bHRGdW5jcywgLi4uZnVuY3MgfSxcclxuICAgICAgICAgICAgICBsb2FkaW5nOiB0aGlzLnN0YXRlLmJ1dHRvbkxvYWRpbmcsXHJcbiAgICAgICAgICAgICAgdHlwZTogXCJmb3JtQnV0dG9uXCIsXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICB7Y29kZUZvcm1CdXR0b25zLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiBpdGVtO1xyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgIDwvQmFzZVBhZ2U+XHJcbiAgICAgICAgKX1cclxuICAgICAgICA8TW9kYWxGb3JtIHJlZj17dGhpcy5tb2RhbFJlZn0gLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQ0EsT0FBT0EsUUFBUSxNQUE0QixhQUFhO0FBQ3hELE9BQU9DLElBQUksTUFBTSxpQkFBaUI7QUFFbEMsT0FBTyxjQUFjO0FBQ3JCLE9BQU9DLEtBQUssTUFBTSxPQUFPO0FBQ3pCLE9BQU9DLFVBQVUsTUFBTSxhQUFhO0FBQ3BDLE9B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
|
|
444
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCYXNlUGFnZSIsIlNwaW4iLCJSZWFjdCIsIk5zY1JlcXVlc3QiLCJjbHMiLCJkZWZhdWx0Q29tRnVuY3MiLCJkZWZhdWx0VXRpbCIsIk1vZGFsRm9ybSIsInJlbmRlclNlbGZDb2x1bW5CdXR0b24iLCJyZW5kZXJTZWxmVG9vbEJ1dHRvbiIsIk1vZGFsTWFuYWdlciIsImRlZXBNZXJnZSIsImdldFBhZ2VEYXRhIiwicGFyYW1zIiwiZ2V0IiwieHNzRmlsdGVyIiwiYXV0b1ByZWZpeCIsInNldEZpZWxkRGlzYWJsZWQiLCJkYXRhIiwia2V5IiwiZGlzYWJsZWQiLCJjb2x1bW5zIiwibmV3Q29sdW1ucyIsIm1hcCIsIml0ZW0iLCJvYmoiLCJfb2JqZWN0U3ByZWFkIiwiZGF0YUluZGV4IiwiaW5kZXhPZiIsInByb3BzIiwicHVzaCIsInNldEZpZWxkVmlzaWJsZSIsInZpc2libGUiLCJlZGl0b3IiLCJzZXRGaWVsZFByb3BzRGF0YSIsInByb3BzRGF0YSIsImRlZmF1bHRTdGF0ZVZhbHVlIiwicGFnZVByb3BzIiwidHJlZVByb3BzIiwic3RvcmUiLCJ1cmwiLCJhdXRvTG9hZCIsInRhYmxlUHJvcHMiLCJzZWxmVG9vbEJ1dHRvbiIsInNlbGZDb2x1bW5CdXR0b24iLCJzZWxmRm9ybUJ1dHRvbiIsInBhZ2VMb2FkaW5nIiwiZGVmYXVsdENvbHVtbnMiLCJvdGhlclByb3BzIiwiYnV0dG9uTG9hZGluZyIsImZvcm1QYWdlUHJvcHMiLCJTZXR0aW5nVGFibGUiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsImFyZ3VtZW50cyIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsInJlcyIsInN0YXRlIiwic2hvd1NlYXJjaCIsImRlZmF1bHRTZWFyY2giLCJ0YWJsZURhdGFSZXNvdXJjZSIsImZ1bmMiLCJGdW5jdGlvbiIsInBhZ2VSZWYiLCJzZXRUaW1lb3V0IiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50IiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50MiIsImN1cnJlbnQiLCJ0YWJsZUxvYWQiLCJzZXRTZWFyY2hQYXJhbXMiLCJjb21wb25lbnREaWRNb3VudCIsImdldERhdGEiLCJyZWdpc3RlciIsIm1vZGFsUmVmIiwiY29tcG9uZW50RGlkVXBkYXRlIiwicHJldlByb3BzIiwicHJldlN0YXRlIiwic25hcHNob3QiLCJ0YWJsZUNvZGUiLCJzZXRTdGF0ZSIsInB1Ymxpc2hlZCIsIm1lbnVDb2RlIiwidGFiUGFyYW1zIiwiY29kZSIsImlzUHVibGlzaGVkIiwidGhlbiIsIl9wYWdlX3Byb3BzJHBlcm1pc3NpbyIsInRhYmxlX3Byb3BzIiwiSlNPTiIsInBhcnNlIiwidHJlZV9wcm9wcyIsInBhZ2VfcHJvcHMiLCJvdGhlcl9wcm9wcyIsIm90aGVyUGFyYW1zIiwiZm9ybV9wcm9wcyIsImZvcm1Qcm9wcyIsInBlcm1pc3Npb24iLCJoYXMiLCJVdGlscyIsInBhcmFtRnVuYyIsImNvbnZlclRhYlBhcmFtcyIsInJlcXVlc3RQYXJhbXMiLCJuZXdSZXF1ZXN0UGFyYW1zIiwicXVlcnlQYXJhbXMiLCJhZGRQYXJhbXMiLCJlZGl0b3JQYXJhbXMiLCJjb252ZXJQYXJhbXMiLCJvdGhlciIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsIm5ld1BhcmFtcyIsImNvbHVtbkJ1dHRvbnMiLCJ0b29sQnV0dG9ucyIsInNlbGZCdXR0b24iLCJfbWVzc2FnZSIsImVycm9yIiwiZ2V0U2VhcmNoVmFsdWVzIiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50MyIsInZhbHVlIiwiY2FsbEJhY2siLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQ0IiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50NSIsInJlcXVlc3RDb25maWciLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJ0YWJsZVJlbG9hZCIsIl90aGlzJHBhZ2VSZWYkY3VycmVudDYiLCJnZXRTZWxlY3RlZFJvd0tleXMiLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQ3IiwiZ2V0U2VsZWN0ZWRSb3dEYXRhcyIsIl90aGlzJHBhZ2VSZWYkY3VycmVudDgiLCJyZXNldFNlbGVjdGVkUm93S2V5cyIsIl90aGlzJHBhZ2VSZWYkY3VycmVudDkiLCJyZW5kZXIiLCJjbGFzc05hbWUiLCJmdW5jcyIsImJhc2VQcm9wcyIsInNldHRpbmdUcmVlUHJvcHMiLCJzZXR0aW5nVGFibGVQcm9wcyIsIl9leGNsdWRlZDIiLCJfdGhpcyIsImRlYXVsdEZ1bmNzIiwibmV3RGF0YSIsInNldEJ1dHRvbkxvYWRpbmciLCJsb2FkaW5nIiwib3BlbkZvcm1Nb2RhbCIsInNob3dNb2RhbCIsImNoaWxkcmVuIiwiY29kZVNlbGZCdXR0b25zIiwiY29kZWNvbHVtbkJ1dHRvbnMiLCJjb2RlRm9ybUJ1dHRvbnMiLCJBcnJheSIsImlzQXJyYXkiLCJjaGlsZCIsIl9jaGlsZCRwcm9wcyIsIl9jaGlsZCRwcm9wczIiLCJfY2hpbGQkcHJvcHMzIiwicGFnZVR5cGUiLCJfaXRlbSRwcm9wcyIsIl9pdGVtJHByb3BzMiIsIl9pdGVtJHByb3BzMyIsIm5ld1RhYmxlUHJvcHMiLCJuZXdUcmVlUHJvcHMiLCJjcmVhdGVFbGVtZW50Iiwic3R5bGUiLCJ3aWR0aCIsImhlaWdodCIsInNwaW5uaW5nIiwiX2V4dGVuZHMiLCJyZWYiLCJvbkhpZGVGb3JtIiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50MTAiLCJoaWRlRm9ybSIsImluaXREYXRhIiwiZm9ybVR5cGUiLCJ0eXBlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcGFnZS9TZXR0aW5nVGFibGUvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZvcndhcmRSZWYsIHVzZUVmZmVjdCwgdXNlSW1wZXJhdGl2ZUhhbmRsZSwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IEJhc2VQYWdlLCB7IE5TQ0Jhc2VCYWdlUHJvcHMgfSBmcm9tIFwiLi4vQmFzZVBhZ2VcIjtcclxuaW1wb3J0IFNwaW4gZnJvbSBcIi4uLy4uL2Jhc2Uvc3BpblwiO1xyXG5pbXBvcnQgQnV0dG9uIGZyb20gXCIuLi8uLi9iYXNlL2J1dHRvblwiO1xyXG5pbXBvcnQgXCIuL2luZGV4Lmxlc3NcIjtcclxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgTnNjUmVxdWVzdCBmcm9tIFwibnNjLXJlcXVlc3RcIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5pbXBvcnQgeyBtZXNzYWdlIH0gZnJvbSBcImFudGRcIjtcclxuaW1wb3J0IHtcclxuICBkZWZhdWx0Q29tRnVuY3MsXHJcbiAgZGVmYXVsdFV0aWwsXHJcbiAgTW9kYWxGb3JtLFxyXG4gIHJlbmRlclNlbGZDb2x1bW5CdXR0b24sXHJcbiAgcmVuZGVyU2VsZlRvb2xCdXR0b24sXHJcbiAgTW9kYWxNYW5hZ2VyLFxyXG4gIE9wZW5QYXJtcyxcclxufSBmcm9tIFwiLi4vU2V0dGluZ1V0aWwvdXRpbHNcIjtcclxuaW1wb3J0IHsgZGVlcE1lcmdlIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcblxyXG5jb25zdCBnZXRQYWdlRGF0YSA9IChwYXJhbXM6IGFueSkgPT4ge1xyXG4gIHJldHVybiBOc2NSZXF1ZXN0LmdldChgL2pxdWljay1zZXR0aW5nL3NldHRpbmcvdGFibGUvaW5mby9gLCB7XHJcbiAgICBwYXJhbXMsXHJcbiAgICB4c3NGaWx0ZXI6IGZhbHNlLFxyXG4gICAgYXV0b1ByZWZpeDogdHJ1ZSxcclxuICB9KTtcclxufTtcclxuXHJcbi8v6K6+572u6KGo5Y2V5a2X5q615Y+q6K+7XHJcbmNvbnN0IHNldEZpZWxkRGlzYWJsZWQgPSAoZGF0YTogQXJyYXk8YW55Piwga2V5LCBkaXNhYmxlZCkgPT4ge1xyXG4gIGNvbnN0IGNvbHVtbnMgPSBbLi4uZGF0YV07XHJcbiAgbGV0IG5ld0NvbHVtbnMgPSBbXSBhcyBhbnk7XHJcbiAgY29sdW1ucy5tYXAoKGl0ZW0pID0+IHtcclxuICAgIGxldCBvYmogPSB7IC4uLml0ZW0gfTtcclxuICAgIGlmIChpdGVtLmRhdGFJbmRleCA9PSBrZXkgfHwga2V5LmluZGV4T2YoaXRlbS5kYXRhSW5kZXgpID4gLTEpIHtcclxuICAgICAgbGV0IHByb3BzID0gb2JqLnByb3BzID8geyAuLi5vYmoucHJvcHMgfSA6IHt9O1xyXG4gICAgICBwcm9wcy5kaXNhYmxlZCA9IGRpc2FibGVkO1xyXG4gICAgICBvYmoucHJvcHMgPSBwcm9wcztcclxuICAgIH1cclxuICAgIG5ld0NvbHVtbnMucHVzaChvYmopO1xyXG4gIH0pO1xyXG4gIHJldHVybiBuZXdDb2x1bW5zO1xyXG59O1xyXG4vL+iuvue9ruihqOWNleWtl+autemakOiXj1xyXG5jb25zdCBzZXRGaWVsZFZpc2libGUgPSAoZGF0YTogQXJyYXk8YW55Piwga2V5LCB2aXNpYmxlKSA9PiB7XHJcbiAgY29uc3QgY29sdW1ucyA9IFsuLi5kYXRhXTtcclxuICBsZXQgbmV3Q29sdW1ucyA9IFtdIGFzIGFueTtcclxuICBjb2x1bW5zLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgbGV0IG9iaiA9IHsgLi4uaXRlbSB9O1xyXG4gICAgaWYgKGl0ZW0uZGF0YUluZGV4ID09IGtleSB8fCBrZXkuaW5kZXhPZihpdGVtLmRhdGFJbmRleCkgPiAtMSkge1xyXG4gICAgICBvYmouZWRpdG9yID0gdmlzaWJsZTtcclxuICAgIH1cclxuICAgIG5ld0NvbHVtbnMucHVzaChvYmopO1xyXG4gIH0pO1xyXG4gIHJldHVybiBuZXdDb2x1bW5zO1xyXG59O1xyXG5cclxuY29uc3Qgc2V0RmllbGRQcm9wc0RhdGEgPSAoZGF0YTogQXJyYXk8YW55Piwga2V5LCBwcm9wc0RhdGEpID0+IHtcclxuICBjb25zdCBjb2x1bW5zID0gWy4uLmRhdGFdO1xyXG4gIGxldCBuZXdDb2x1bW5zID0gW10gYXMgYW55O1xyXG4gIGNvbHVtbnMubWFwKChpdGVtKSA9PiB7XHJcbiAgICBsZXQgb2JqID0geyAuLi5pdGVtIH07XHJcbiAgICBpZiAoaXRlbS5kYXRhSW5kZXggPT0ga2V5KSB7XHJcbiAgICAgIGxldCBwcm9wcyA9IG9iai5wcm9wcyA/IHsgLi4ub2JqLnByb3BzIH0gOiB7fTtcclxuICAgICAgcHJvcHMuZGF0YSA9IHByb3BzRGF0YTtcclxuICAgICAgb2JqLnByb3BzID0gcHJvcHM7XHJcbiAgICB9XHJcbiAgICBuZXdDb2x1bW5zLnB1c2gob2JqKTtcclxuICB9KTtcclxuICByZXR1cm4gbmV3Q29sdW1ucztcclxufTtcclxuaW50ZXJmYWNlIElQcm9wcyB7XHJcbiAgdGFibGVDb2RlOiBzdHJpbmc7XHJcbiAgY2xhc3NOYW1lPzogYW55O1xyXG4gIG1lbnVDb2RlPzogc3RyaW5nO1xyXG4gIGZ1bmNzPzogYW55O1xyXG4gIHB1Ymxpc2hlZD86IGJvb2xlYW47XHJcbiAgaW5zdGFuY2VSZWY/OiBhbnk7XHJcbiAgdGFiUGFyYW1zPzogYW55O1xyXG4gIG9uQ2FsbEJhY2tzPzoge1xyXG4gICAgdHJlZVNlbGVjdENhbGxCYWNrPzogYW55OyAvL+agkeeCueWHu+afpeivouWQjuWbnuiwg1xyXG4gICAgb25RdWVyeUNhbGxCYWNrPzogYW55OyAvL+afpeivouWbnuiwg++8jOafpeivouaVsOaNruWQjuWbnuiwg1xyXG4gICAgb25TdW1iaXRDYWxsQmFjaz86IGFueTsgLy/kv53lrZjlm57osIPvvIzkv53lrZjmlbDmja7miJDlip/lkI7lm57osINcclxuICAgIG9uRGVsZXRlQ2FsbEJhY2s/OiBhbnk7IC8v5Yig6Zmk5oyJ6ZKu5Zue6LCD77yM5Yig6Zmk5pWw5o2u5ZCO5omn6KGMXHJcbiAgICBvbkVkaXRvckNhbGxCYWNrPzogYW55OyAvL+e8lui+keaMiemSruWbnuiwg++8jOaJk+W8gOW8ueahhuWQjuaJp+ihjFxyXG4gICAgb25BZGRDYWxsQmFjaz86IGFueTsgLy/mt7vliqDmjInpkq7lm57osIPvvIzmiZPlvIDlvLnmoYblkI7miafooYxcclxuICAgIG9uU2VhcmNoQ2FsbEJhY2s/OiBhbnk7IC8v5YiX6KGo5p+l6K+i5oyJ6ZKu5Zue6LCD77yM5omT5byA5by55qGG5ZCO5omn6KGMXHJcbiAgfTtcclxuICBiYXNlUHJvcHM/OiBOU0NCYXNlQmFnZVByb3BzO1xyXG4gIGF1dG9Mb2FkPzogYm9vbGVhbjtcclxufVxyXG5cclxuY29uc3QgZGVmYXVsdFN0YXRlVmFsdWUgPSB7XHJcbiAgcGFnZVByb3BzOiB7fSBhcyBhbnksXHJcbiAgdHJlZVByb3BzOiB7IHN0b3JlOiB7IHVybDogXCJcIiwgYXV0b0xvYWQ6IGZhbHNlIH0gfSBhcyBhbnksXHJcbiAgdGFibGVQcm9wczoge30gYXMgYW55LFxyXG4gIHNlbGZUb29sQnV0dG9uOiBbXSBhcyBhbnksXHJcbiAgc2VsZkNvbHVtbkJ1dHRvbjogW10gYXMgYW55LFxyXG4gIHNlbGZGb3JtQnV0dG9uOiBbXSBhcyBhbnksXHJcbiAgcGFnZUxvYWRpbmc6IHRydWUsXHJcbiAgZGVmYXVsdENvbHVtbnM6IFtdIGFzIGFueSxcclxuICBvdGhlclByb3BzOiB7fSBhcyBhbnksXHJcbiAgYnV0dG9uTG9hZGluZzoge30gYXMgYW55LFxyXG4gIGZvcm1QYWdlUHJvcHM6IHt9IGFzIGFueSxcclxufTtcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2V0dGluZ1RhYmxlIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PElQcm9wcywgYW55PiB7XHJcbiAgc3RhdGUgPSB7XHJcbiAgICAuLi5kZWZhdWx0U3RhdGVWYWx1ZSxcclxuICB9O1xyXG4gIHBhZ2VSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIG1vZGFsUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuXHJcbiAgY29tcG9uZW50RGlkTW91bnQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdldERhdGEoKTtcclxuICAgIE1vZGFsTWFuYWdlci5yZWdpc3Rlcih0aGlzLm1vZGFsUmVmKTtcclxuICB9XHJcblxyXG4gIGNvbXBvbmVudERpZFVwZGF0ZShcclxuICAgIHByZXZQcm9wczogUmVhZG9ubHk8SVByb3BzPixcclxuICAgIHByZXZTdGF0ZTogUmVhZG9ubHk8YW55PixcclxuICAgIHNuYXBzaG90PzogYW55XHJcbiAgKTogdm9pZCB7XHJcbiAgICBpZiAocHJldlByb3BzLnRhYmxlQ29kZSAhPSB0aGlzLnByb3BzLnRhYmxlQ29kZSkge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIC4uLmRlZmF1bHRTdGF0ZVZhbHVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5nZXREYXRhKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5pdERhdGEgPSAocmVzOiBhbnkpID0+IHtcclxuICAgIGNvbnN0IHsgb3RoZXJQcm9wcywgcGFnZVByb3BzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgaWYgKFxyXG4gICAgICBwYWdlUHJvcHMuc2hvd1NlYXJjaCAhPT0gZmFsc2UgJiZcclxuICAgICAgb3RoZXJQcm9wcy5kZWZhdWx0U2VhcmNoICYmXHJcbiAgICAgIG90aGVyUHJvcHMudGFibGVEYXRhUmVzb3VyY2UgPT0gXCJ1cmxcIlxyXG4gICAgKSB7XHJcbiAgICAgIGxldCBmdW5jID0gbmV3IEZ1bmN0aW9uKFwiVXRpbHMsZXZlbnRPcHRpb25cIiwgb3RoZXJQcm9wcy5kZWZhdWx0U2VhcmNoKTtcclxuICAgICAgY29uc3QgcGFyYW1zID0gZnVuYyhkZWZhdWx0VXRpbCwgeyBwYWdlUmVmOiB0aGlzLnBhZ2VSZWYgfSk7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucGFnZVJlZi5jdXJyZW50Py50YWJsZUxvYWQoeyAuLi5wYXJhbXMgfSk7XHJcbiAgICAgICAgdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LnNldFNlYXJjaFBhcmFtcyh7IC4uLnBhcmFtcyB9KTtcclxuICAgICAgfSwgNTApOyAvL+ebtOaOpeiuvue9ru+8jHBhZ2VSZWbmsqHnu5HlrprvvIzmmoLml7bpgJrov4flu7bov5/lh73mlbDov5vooYzop6PlhrNcclxuICAgIH1cclxuICB9O1xyXG4gIC8vIOiOt+WPluaVsOaNrlxyXG4gIGdldERhdGEoKSB7XHJcbiAgICAvLyDku45wcm9wc+S4reiOt+WPlnRhYmxlQ29kZeOAgXB1Ymxpc2hlZOOAgW1lbnVDb2RlXHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgcGFnZUxvYWRpbmc6IHRydWUsXHJcbiAgICB9KTtcclxuICAgIGNvbnN0IHsgdGFibGVDb2RlLCBwdWJsaXNoZWQgPSB0cnVlLCBtZW51Q29kZSwgdGFiUGFyYW1zIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgLy8g5aaC5p6cdGFibGVDb2Rl5a2Y5ZyoXHJcbiAgICBpZiAodGFibGVDb2RlKSB7XHJcbiAgICAgIC8vIOWumuS5ieWPguaVsFxyXG4gICAgICBsZXQgcGFyYW1zID0geyBjb2RlOiB0YWJsZUNvZGUgfSBhcyBhbnk7XHJcbiAgICAgIC8vIOWmguaenHB1Ymxpc2hlZOS4unRydWVcclxuICAgICAgaWYgKHB1Ymxpc2hlZCkge1xyXG4gICAgICAgIC8vIOiuvue9ruWPguaVsGlzUHVibGlzaGVk5Li6MVxyXG4gICAgICAgIHBhcmFtcy5pc1B1Ymxpc2hlZCA9IDE7XHJcbiAgICAgIH1cclxuICAgICAgLy8g6LCD55SoZ2V0UGFnZURhdGHmlrnms5Xojrflj5bmlbDmja5cclxuICAgICAgZ2V0UGFnZURhdGEoeyAuLi5wYXJhbXMgfSkudGhlbigocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzLmNvZGUgPT0gMjAwICYmIHJlcy5kYXRhKSB7XHJcbiAgICAgICAgICBsZXQgdGFibGVfcHJvcHMgPSBKU09OLnBhcnNlKHJlcy5kYXRhLnRhYmxlUHJvcHMgfHwgXCJ7fVwiKSB8fCB7fTtcclxuICAgICAgICAgIGxldCB0cmVlX3Byb3BzID0gSlNPTi5wYXJzZShyZXMuZGF0YS50cmVlUHJvcHMgfHwgXCJ7fVwiKSB8fCB7fTtcclxuICAgICAgICAgIGxldCBwYWdlX3Byb3BzID0gSlNPTi5wYXJzZShyZXMuZGF0YS5wYWdlUHJvcHMgfHwgXCJ7fVwiKSB8fCB7fTtcclxuICAgICAgICAgIGxldCBvdGhlcl9wcm9wcyA9IEpTT04ucGFyc2UocmVzLmRhdGEub3RoZXJQYXJhbXMgfHwgXCJ7fVwiKSB8fCB7fTtcclxuICAgICAgICAgIGxldCBmb3JtX3Byb3BzID0gSlNPTi5wYXJzZShyZXMuZGF0YS5mb3JtUHJvcHMgfHwgXCJ7fVwiKSB8fCB7fTtcclxuICAgICAgICAgIGlmIChwYWdlX3Byb3BzLnBlcm1pc3Npb24/LmhhcyA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIHBhZ2VfcHJvcHMucGVybWlzc2lvbi5tZW51Q29kZSA9IG1lbnVDb2RlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHB1Ymxpc2hlZCA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICBwYWdlX3Byb3BzLnBlcm1pc3Npb24gPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgKHBhZ2VfcHJvcHMuc2hvd1NlYXJjaCAhPT0gZmFsc2UgJiZcclxuICAgICAgICAgICAgICBvdGhlcl9wcm9wcy5kZWZhdWx0U2VhcmNoICYmXHJcbiAgICAgICAgICAgICAgb3RoZXJfcHJvcHM/LnRhYmxlRGF0YVJlc291cmNlID09IFwidXJsXCIpIHx8XHJcbiAgICAgICAgICAgIHRoaXMucHJvcHMuYXV0b0xvYWQgPT09IGZhbHNlXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgdGFibGVfcHJvcHMuc3RvcmUuYXV0b0xvYWQgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0YWJQYXJhbXMpIHtcclxuICAgICAgICAgICAgY29uc3QgVXRpbHMgPSBkZWZhdWx0VXRpbCB8fCB7fTtcclxuICAgICAgICAgICAgbGV0IHBhcmFtRnVuYyA9IG5ldyBGdW5jdGlvbihcIlV0aWxzXCIsIHRhYlBhcmFtcyk7XHJcbiAgICAgICAgICAgIGxldCBjb252ZXJUYWJQYXJhbXMgPSBwYXJhbUZ1bmMoVXRpbHMpO1xyXG4gICAgICAgICAgICBpZiAocGFnZV9wcm9wcy5yZXF1ZXN0UGFyYW1zKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHsgcmVxdWVzdFBhcmFtcyA9IHt9IH0gPSBwYWdlX3Byb3BzO1xyXG4gICAgICAgICAgICAgIGxldCBuZXdSZXF1ZXN0UGFyYW1zID0ge1xyXG4gICAgICAgICAgICAgICAgcXVlcnlQYXJhbXM6IG51bGwsXHJcbiAgICAgICAgICAgICAgICBhZGRQYXJhbXM6IG51bGwsXHJcbiAgICAgICAgICAgICAgICBlZGl0b3JQYXJhbXM6IG51bGwsXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICBmb3IgKGxldCBrZXkgaW4gbmV3UmVxdWVzdFBhcmFtcykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlcXVlc3RQYXJhbXNba2V5XSkge1xyXG4gICAgICAgICAgICAgICAgICBsZXQgZnVuYyA9IG5ldyBGdW5jdGlvbihcIlV0aWxzXCIsIHJlcXVlc3RQYXJhbXNba2V5XSk7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBjb252ZXJQYXJhbXMgPSBmdW5jKFV0aWxzKTtcclxuICAgICAgICAgICAgICAgICAgY29uc3QgeyBkYXRhLCAuLi5vdGhlciB9ID0gY29udmVyUGFyYW1zO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgbmV3UGFyYW1zID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IHsgLi4uY29udmVyVGFiUGFyYW1zLCAuLi5kYXRhIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgLi4ub3RoZXIsXHJcbiAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgIG5ld1JlcXVlc3RQYXJhbXNba2V5XSA9IG5ld1BhcmFtcztcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIG5ld1JlcXVlc3RQYXJhbXNba2V5XSA9IHsgZGF0YTogeyAuLi5jb252ZXJUYWJQYXJhbXMgfSB9O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBwYWdlX3Byb3BzLnJlcXVlc3RQYXJhbXMgPSB7IC4uLm5ld1JlcXVlc3RQYXJhbXMgfTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBwYWdlX3Byb3BzLnJlcXVlc3RQYXJhbXMgPSB7XHJcbiAgICAgICAgICAgICAgICBxdWVyeVBhcmFtczogeyBkYXRhOiB7IC4uLmNvbnZlclRhYlBhcmFtcyB9IH0sXHJcbiAgICAgICAgICAgICAgICBhZGRQYXJhbXM6IHsgZGF0YTogeyAuLi5jb252ZXJUYWJQYXJhbXMgfSB9LFxyXG4gICAgICAgICAgICAgICAgZWRpdG9yUGFyYW1zOiB7IGRhdGE6IHsgLi4uY29udmVyVGFiUGFyYW1zIH0gfSxcclxuICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgcGFnZVByb3BzOiB7XHJcbiAgICAgICAgICAgICAgICAuLi5wYWdlX3Byb3BzLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgdHJlZVByb3BzOiB7XHJcbiAgICAgICAgICAgICAgICAuLi50cmVlX3Byb3BzLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgdGFibGVQcm9wczoge1xyXG4gICAgICAgICAgICAgICAgLi4udGFibGVfcHJvcHMsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBvdGhlclByb3BzOiB7IC4uLm90aGVyX3Byb3BzIH0sXHJcbiAgICAgICAgICAgICAgc2VsZkNvbHVtbkJ1dHRvbjogSlNPTi5wYXJzZShyZXMuZGF0YS5jb2x1bW5CdXR0b25zKSB8fCBbXSxcclxuICAgICAgICAgICAgICBzZWxmVG9vbEJ1dHRvbjogSlNPTi5wYXJzZShyZXMuZGF0YS50b29sQnV0dG9ucykgfHwgW10sXHJcbiAgICAgICAgICAgICAgZGVmYXVsdENvbHVtbnM6IHBhZ2VfcHJvcHMuY29sdW1ucyxcclxuICAgICAgICAgICAgICBmb3JtUGFnZVByb3BzOiBmb3JtX3Byb3BzLFxyXG4gICAgICAgICAgICAgIHNlbGZGb3JtQnV0dG9uOiBmb3JtX3Byb3BzPy5zZWxmQnV0dG9uIHx8IFtdLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICBwYWdlTG9hZGluZzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChyZXMuY29kZSA9PSAyMDAgJiYgcmVzLmRhdGEgPT0gbnVsbCkge1xyXG4gICAgICAgICAgbWVzc2FnZS5lcnJvcihcIuacquaJvuWIsOmFjee9ruS/oeaBr++8gVwiKTtcclxuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICBwYWdlTG9hZGluZzogZmFsc2UsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIHBhZ2VMb2FkaW5nOiBmYWxzZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICBwYWdlTG9hZGluZzogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyBvblNlYXJjaCgpIHt9XHJcbiAgZ2V0U2VhcmNoVmFsdWVzKCkge1xyXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLnBhZ2VSZWYuY3VycmVudD8uZ2V0U2VhcmNoVmFsdWVzKCk7XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG4gIHNldFNlYXJjaFBhcmFtcyhwYXJhbXMsIGNhbGxCYWNrKSB7XHJcbiAgICB0aGlzLnBhZ2VSZWYuY3VycmVudD8uc2V0U2VhcmNoUGFyYW1zKHBhcmFtcyk7XHJcbiAgfVxyXG4gIHRhYmxlTG9hZChwYXJhbXM6IGFueSwgcmVxdWVzdENvbmZpZyA9IHt9KSB7XHJcbiAgICB0aGlzLnBhZ2VSZWYuY3VycmVudD8udGFibGVMb2FkKHBhcmFtcywgcmVxdWVzdENvbmZpZyk7XHJcbiAgfVxyXG4gIHRhYmxlUmVsb2FkKHBhcmFtcyA9IHt9LCBhdXRvTG9hZCA9IHRydWUpIHtcclxuICAgIHRoaXMucGFnZVJlZi5jdXJyZW50Py50YWJsZVJlbG9hZChwYXJhbXMsIGF1dG9Mb2FkKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucGFnZVJlZi5jdXJyZW50Py5nZXRTZWxlY3RlZFJvd0tleXMoKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRSb3dEYXRhcygpIHtcclxuICAgIHJldHVybiB0aGlzLnBhZ2VSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dEYXRhcygpO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRTZWxlY3RlZFJvd0tleXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LnJlc2V0U2VsZWN0ZWRSb3dLZXlzKCk7XHJcbiAgfVxyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgY2xhc3NOYW1lLFxyXG4gICAgICBmdW5jcyA9IHt9LFxyXG4gICAgICBiYXNlUHJvcHMgPSB7fSBhcyBOU0NCYXNlQmFnZVByb3BzLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHBhZ2VQcm9wcyxcclxuICAgICAgdHJlZVByb3BzLFxyXG4gICAgICB0YWJsZVByb3BzLFxyXG4gICAgICBzZWxmVG9vbEJ1dHRvbixcclxuICAgICAgc2VsZkNvbHVtbkJ1dHRvbixcclxuICAgICAgcGFnZUxvYWRpbmcsXHJcbiAgICAgIGRlZmF1bHRDb2x1bW5zLFxyXG4gICAgICBidXR0b25Mb2FkaW5nID0ge30sXHJcbiAgICAgIGZvcm1QYWdlUHJvcHMgPSB7fSxcclxuICAgICAgc2VsZkZvcm1CdXR0b24sXHJcbiAgICB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHtcclxuICAgICAgdHJlZVByb3BzOiBzZXR0aW5nVHJlZVByb3BzID0ge30sXHJcbiAgICAgIHRhYmxlUHJvcHM6IHNldHRpbmdUYWJsZVByb3BzID0ge30sXHJcbiAgICAgIC4uLm90aGVyUHJvcHNcclxuICAgIH0gPSBiYXNlUHJvcHM7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgY29uc3QgZGVhdWx0RnVuY3MgPSB7XHJcbiAgICAgIHNldEZpZWxkRGlzYWJsZWQ6IChrZXksIGRpc2FibGVkKSA9PiB7XHJcbiAgICAgICAgY29uc3QgbmV3RGF0YSA9IHNldEZpZWxkRGlzYWJsZWQocGFnZVByb3BzLmNvbHVtbnMsIGtleSwgZGlzYWJsZWQpO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgcGFnZVByb3BzOiB7IC4uLnBhZ2VQcm9wcywgY29sdW1uczogbmV3RGF0YSB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9LFxyXG4gICAgICBzZXRGaWVsZFZpc2libGU6IChrZXksIGRpc2FibGVkKSA9PiB7XHJcbiAgICAgICAgY29uc3QgbmV3RGF0YSA9IHNldEZpZWxkVmlzaWJsZShwYWdlUHJvcHMuY29sdW1ucywga2V5LCBkaXNhYmxlZCk7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICBwYWdlUHJvcHM6IHsgLi4ucGFnZVByb3BzLCBjb2x1bW5zOiBuZXdEYXRhIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIHNldEZpZWxkUHJvcHNEYXRhOiAoa2V5LCBkYXRhKSA9PiB7XHJcbiAgICAgICAgY29uc3QgbmV3RGF0YSA9IHNldEZpZWxkUHJvcHNEYXRhKHBhZ2VQcm9wcy5jb2x1bW5zLCBrZXksIGRhdGEpO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgcGFnZVByb3BzOiB7IC4uLnBhZ2VQcm9wcywgY29sdW1uczogbmV3RGF0YSB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9LFxyXG4gICAgICAvLyBoaXN0b3J5OiAocGFyYW1zLCB0eXBlKSA9PiB7XHJcbiAgICAgIC8vICAganVtcFBhZ2UocGFyYW1zLCB0eXBlKTtcclxuICAgICAgLy8gfSxcclxuICAgICAgc2V0QnV0dG9uTG9hZGluZzogKGNvZGUsIGxvYWRpbmcpID0+IHtcclxuICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICBidXR0b25Mb2FkaW5nOiB7IC4uLmJ1dHRvbkxvYWRpbmcsIFtjb2RlXTogbG9hZGluZyB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9LFxyXG4gICAgICAuLi5kZWZhdWx0Q29tRnVuY3MsXHJcbiAgICAgIG9wZW5Gb3JtTW9kYWw6IChwYXJhbXM6IE9wZW5QYXJtcykgPT4ge1xyXG4gICAgICAgIE1vZGFsTWFuYWdlci5zaG93TW9kYWwocGFyYW1zKTtcclxuICAgICAgfSxcclxuICAgICAgLy8gZ2V0Q3VycmVudFByb2plY3Q6ICgpID0+IHtcclxuICAgICAgLy8gICByZXR1cm4gZ2V0UHJvamVjdCgpO1xyXG4gICAgICAvLyB9LFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHsgY2hpbGRyZW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgY29kZVNlbGZCdXR0b25zID0gW107XHJcbiAgICBsZXQgY29kZWNvbHVtbkJ1dHRvbnMgPSBbXTtcclxuICAgIGxldCBjb2RlRm9ybUJ1dHRvbnMgPSBbXTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW0pKSB7XHJcbiAgICAgICAgICBpdGVtLm1hcCgoY2hpbGQpID0+IHtcclxuICAgICAgICAgICAgaWYgKGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIpIHtcclxuICAgICAgICAgICAgICBjb2RlU2VsZkJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNvbHVtbkJ1dHRvblwiKSB7XHJcbiAgICAgICAgICAgICAgY29kZWNvbHVtbkJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcImZvcm1CdXR0b25cIikge1xyXG4gICAgICAgICAgICAgIGNvZGVGb3JtQnV0dG9ucy5wdXNoKGNoaWxkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChpdGVtPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIpIHtcclxuICAgICAgICAgICAgY29kZVNlbGZCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNvbHVtbkJ1dHRvblwiKSB7XHJcbiAgICAgICAgICAgIGNvZGVjb2x1bW5CdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcImZvcm1CdXR0b25cIikge1xyXG4gICAgICAgICAgICBjb2RlRm9ybUJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChjaGlsZHJlbikge1xyXG4gICAgICBjb25zdCB7IHByb3BzIH06IGFueSA9IGNoaWxkcmVuO1xyXG4gICAgICBpZiAocHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiKSB7XHJcbiAgICAgICAgY29kZVNlbGZCdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9IGVsc2UgaWYgKHByb3BzPy5wYWdlVHlwZSA9PSBcImNvbHVtbkJ1dHRvblwiKSB7XHJcbiAgICAgICAgY29kZWNvbHVtbkJ1dHRvbnMucHVzaChjaGlsZHJlbik7XHJcbiAgICAgIH0gZWxzZSBpZiAocHJvcHM/LnBhZ2VUeXBlID09IFwiZm9ybUJ1dHRvblwiKSB7XHJcbiAgICAgICAgY29kZUZvcm1CdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgbmV3VGFibGVQcm9wcyA9IGRlZXBNZXJnZSh7IC4uLnRhYmxlUHJvcHMgfSwgeyAuLi5zZXR0aW5nVGFibGVQcm9wcyB9KTtcclxuICAgIGxldCBuZXdUcmVlUHJvcHMgPSBkZWVwTWVyZ2UoeyAuLi50cmVlUHJvcHMgfSwgeyAuLi5zZXR0aW5nVHJlZVByb3BzIH0pO1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NscyhcIm5zYy1mcmFtZXdvcmstdGFibGVwYWdlXCIsIGNsYXNzTmFtZSl9PlxyXG4gICAgICAgIHtwYWdlTG9hZGluZyA/IChcclxuICAgICAgICAgIDxkaXYgc3R5bGU9e3sgd2lkdGg6IFwiMTAwJVwiLCBoZWlnaHQ6IFwiMTAwJVwiIH19PlxyXG4gICAgICAgICAgICA8U3BpbiBzcGlubmluZz17cGFnZUxvYWRpbmd9PjwvU3Bpbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICkgOiAoXHJcbiAgICAgICAgICA8QmFzZVBhZ2VcclxuICAgICAgICAgICAgey4uLnBhZ2VQcm9wc31cclxuICAgICAgICAgICAgdHJlZVByb3BzPXt7IC4uLm5ld1RyZWVQcm9wcyB9fVxyXG4gICAgICAgICAgICB0YWJsZVByb3BzPXt7IC4uLm5ld1RhYmxlUHJvcHMgfX1cclxuICAgICAgICAgICAgZm9ybVByb3BzPXt7fX1cclxuICAgICAgICAgICAgVXRpbHM9e3sgLi4uZGVmYXVsdFV0aWwgfX1cclxuICAgICAgICAgICAgcmVmPXt0aGlzLnBhZ2VSZWZ9XHJcbiAgICAgICAgICAgIHBhZ2VSZWY9e3RoaXMucGFnZVJlZn1cclxuICAgICAgICAgICAgb25IaWRlRm9ybT17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgcGFnZVByb3BzOiB7IC4uLnBhZ2VQcm9wcywgY29sdW1uczogZGVmYXVsdENvbHVtbnMgfSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB0aGlzLnBhZ2VSZWYuY3VycmVudD8uaGlkZUZvcm0oKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgZnVuY3M9e3sgLi4uZGVhdWx0RnVuY3MsIC4uLmZ1bmNzIH19XHJcbiAgICAgICAgICAgIGluaXREYXRhPXt0aGlzLmluaXREYXRhfVxyXG4gICAgICAgICAgICBmb3JtUGFnZVByb3BzPXt7XHJcbiAgICAgICAgICAgICAgZm9ybVR5cGU6IGZvcm1QYWdlUHJvcHMuZm9ybVR5cGUgfHwgXCJtb2RhbFwiLFxyXG4gICAgICAgICAgICAgIHByb3BzOiBmb3JtUGFnZVByb3BzPy5wcm9wcyxcclxuICAgICAgICAgICAgICAuLi5mb3JtUGFnZVByb3BzPy5vdGhlclByb3BzLFxyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICB0YWJsZUNvZGU9e3RoaXMucHJvcHMudGFibGVDb2RlfVxyXG4gICAgICAgICAgICB7Li4ub3RoZXJQcm9wc31cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3JlbmRlclNlbGZUb29sQnV0dG9uKHtcclxuICAgICAgICAgICAgICBzZWxmQnV0dG9uOiBzZWxmVG9vbEJ1dHRvbixcclxuICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgZnVuY3M6IHsgLi4uZGVhdWx0RnVuY3MsIC4uLmZ1bmNzIH0sXHJcbiAgICAgICAgICAgICAgbG9hZGluZzogdGhpcy5zdGF0ZS5idXR0b25Mb2FkaW5nLFxyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAge2NvZGVTZWxmQnV0dG9ucy5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4gaXRlbTtcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgIHtyZW5kZXJTZWxmQ29sdW1uQnV0dG9uKHtcclxuICAgICAgICAgICAgICBzZWxmQ29sdW1uQnV0dG9uLFxyXG4gICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucGFnZVJlZixcclxuICAgICAgICAgICAgICBmdW5jczogeyAuLi5kZWF1bHRGdW5jcywgLi4uZnVuY3MgfSxcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgIHtjb2RlY29sdW1uQnV0dG9ucy5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4gaXRlbTtcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgIHtyZW5kZXJTZWxmVG9vbEJ1dHRvbih7XHJcbiAgICAgICAgICAgICAgc2VsZkJ1dHRvbjogc2VsZkZvcm1CdXR0b24sXHJcbiAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgIGZ1bmNzOiB7IC4uLmRlYXVsdEZ1bmNzLCAuLi5mdW5jcyB9LFxyXG4gICAgICAgICAgICAgIGxvYWRpbmc6IHRoaXMuc3RhdGUuYnV0dG9uTG9hZGluZyxcclxuICAgICAgICAgICAgICB0eXBlOiBcImZvcm1CdXR0b25cIixcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgIHtjb2RlRm9ybUJ1dHRvbnMubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgPC9CYXNlUGFnZT5cclxuICAgICAgICApfVxyXG4gICAgICAgIDxNb2RhbEZvcm0gcmVmPXt0aGlzLm1vZGFsUmVmfSAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFDQSxPQUFPQSxRQUFRLE1BQTRCLGFBQWE7QUFDeEQsT0FBT0MsSUFBSSxNQUFNLGlCQUFpQjtBQUVsQyxPQUFPLGNBQWM7QUFDckIsT0FBT0MsS0FBSyxNQUFNLE9BQU87QUFDekIsT0FBT0MsVUFBVSxNQUFNLGFBQWE7QUFDcEMsT0FBT0MsR0FBRyxNQUFNLFlBQVk7QUFFNUIsU0FDRUMsZUFBZSxFQUNmQyxXQUFXLEVBQ1hDLFNBQVMsRUFDVEMsc0JBQXNCLEVBQ3RCQyxvQkFBb0IsRUFDcEJDLFlBQVksUUFFUCxzQkFBc0I7QUFDN0IsU0FBU0MsU0FBUyxRQUFRLGFBQWE7QUFFdkMsTUFBTUMsV0FBVyxHQUFJQyxNQUFXLElBQUs7RUFDbkMsT0FBT1YsVUFBVSxDQUFDVyxHQUFHLHdDQUF3QztJQUMzREQsTUFBTTtJQUNORSxTQUFTLEVBQUUsS0FBSztJQUNoQkMsVUFBVSxFQUFFO0VBQ2QsQ0FBQyxDQUFDO0FBQ0osQ0FBQzs7QUFFRDtBQUNBLE1BQU1DLGdCQUFnQixHQUFHQSxDQUFDQyxJQUFnQixFQUFFQyxHQUFHLEVBQUVDLFFBQVEsS0FBSztFQUM1RCxNQUFNQyxPQUFPLEdBQUcsQ0FBQyxHQUFHSCxJQUFJLENBQUM7RUFDekIsSUFBSUksVUFBVSxHQUFHLEVBQVM7RUFDMUJELE9BQU8sQ0FBQ0UsR0FBRyxDQUFFQyxJQUFJLElBQUs7SUFDcEIsSUFBSUMsR0FBRyxHQUFBQyxhQUFBLEtBQVFGLElBQUksQ0FBRTtJQUNyQixJQUFJQSxJQUFJLENBQUNHLFNBQVMsSUFBSVIsR0FBRyxJQUFJQSxHQUFHLENBQUNTLE9BQU8sQ0FBQ0osSUFBSSxDQUFDRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtNQUM3RCxJQUFJRSxLQUFLLEdBQUdKLEdBQUcs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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["BasePage","Spin","React","NscRequest","cls","defaultComFuncs","defaultUtil","ModalForm","renderSelfColumnButton","renderSelfToolButton","ModalManager","getPageData","params","get","xssFilter","autoPrefix","setFieldDisabled","data","key","disabled","columns","newColumns","map","item","obj","_objectSpread","dataIndex","indexOf","props","push","setFieldVisible","visible","editor","setFieldPropsData","propsData","defaultStateValue","pageProps","treeProps","store","url","autoLoad","tableProps","selfToolButton","selfColumnButton","selfFormButton","pageLoading","defaultColumns","otherProps","buttonLoading","formPageProps","SettingTable","Component","constructor","arguments","_defineProperty","createRef","res","state","showSearch","defaultSearch","tableDataResource","func","Function","pageRef","setTimeout","_this$pageRef$current","_this$pageRef$current2","current","tableLoad","setSearchParams","componentDidMount","getData","register","modalRef","componentDidUpdate","prevProps","prevState","snapshot","tableCode","setState","published","menuCode","tabParams","code","isPublished","then","_page_props$permissio","table_props","JSON","parse","tree_props","page_props","other_props","otherParams","form_props","formProps","permission","has","Utils","paramFunc","converTabParams","requestParams","newRequestParams","queryParams","addParams","editorParams","converParams","other","_objectWithoutProperties","_excluded","newParams","columnButtons","toolButtons","selfButton","_message","error","getSearchValues","_this$pageRef$current3","value","callBack","_this$pageRef$current4","_this$pageRef$current5","requestConfig","length","undefined","tableReload","_this$pageRef$current6","getSelectedRowKeys","_this$pageRef$current7","getSelectedRowDatas","_this$pageRef$current8","resetSelectedRowKeys","_this$pageRef$current9","render","className","funcs","baseProps","settingTreeProps","settingTableProps","_excluded2","_this","deaultFuncs","newData","setButtonLoading","loading","openFormModal","showModal","children","codeSelfButtons","codecolumnButtons","codeFormButtons","Array","isArray","child","_child$props","_child$props2","_child$props3","pageType","_item$props","_item$props2","_item$props3","createElement","style","width","height","spinning","_extends","ref","onHideForm","_this$pageRef$current10","hideForm","initData","formType","type"],"sources":["../../../src/components/page/SettingTable/index.tsx"],"sourcesContent":["import { forwardRef, useEffect, useImperativeHandle, useState } from \"react\";\r\nimport BasePage, { NSCBaseBageProps } from \"../BasePage\";\r\nimport Spin from \"../../base/spin\";\r\nimport Button from \"../../base/button\";\r\nimport \"./index.less\";\r\nimport React from \"react\";\r\nimport NscRequest from \"nsc-request\";\r\nimport cls from \"classnames\";\r\nimport { message } from \"antd\";\r\nimport {\r\n defaultComFuncs,\r\n defaultUtil,\r\n ModalForm,\r\n renderSelfColumnButton,\r\n renderSelfToolButton,\r\n ModalManager,\r\n OpenParms,\r\n} from \"../SettingUtil/utils\";\r\n\r\nconst getPageData = (params: any) => {\r\n return NscRequest.get(`/jquick-setting/setting/table/info/`, {\r\n params,\r\n xssFilter: false,\r\n autoPrefix: true,\r\n });\r\n};\r\n\r\n//设置表单字段只读\r\nconst setFieldDisabled = (data: Array<any>, key, disabled) => {\r\n const columns = [...data];\r\n let newColumns = [] as any;\r\n columns.map((item) => {\r\n let obj = { ...item };\r\n if (item.dataIndex == key || key.indexOf(item.dataIndex) > -1) {\r\n let props = obj.props ? { ...obj.props } : {};\r\n props.disabled = disabled;\r\n obj.props = props;\r\n }\r\n newColumns.push(obj);\r\n });\r\n return newColumns;\r\n};\r\n//设置表单字段隐藏\r\nconst setFieldVisible = (data: Array<any>, key, visible) => {\r\n const columns = [...data];\r\n let newColumns = [] as any;\r\n columns.map((item) => {\r\n let obj = { ...item };\r\n if (item.dataIndex == key || key.indexOf(item.dataIndex) > -1) {\r\n obj.editor = visible;\r\n }\r\n newColumns.push(obj);\r\n });\r\n return newColumns;\r\n};\r\n\r\nconst setFieldPropsData = (data: Array<any>, key, propsData) => {\r\n const columns = [...data];\r\n let newColumns = [] as any;\r\n columns.map((item) => {\r\n let obj = { ...item };\r\n if (item.dataIndex == key) {\r\n let props = obj.props ? { ...obj.props } : {};\r\n props.data = propsData;\r\n obj.props = props;\r\n }\r\n newColumns.push(obj);\r\n });\r\n return newColumns;\r\n};\r\ninterface IProps {\r\n tableCode: string;\r\n className?: any;\r\n menuCode?: string;\r\n funcs?: any;\r\n published?: boolean;\r\n instanceRef?: any;\r\n tabParams?: any;\r\n onCallBacks?: {\r\n treeSelectCallBack?: any; //树点击查询后回调\r\n onQueryCallBack?: any; //查询回调,查询数据后回调\r\n onSumbitCallBack?: any; //保存回调,保存数据成功后回调\r\n onDeleteCallBack?: any; //删除按钮回调,删除数据后执行\r\n onEditorCallBack?: any; //编辑按钮回调,打开弹框后执行\r\n onAddCallBack?: any; //添加按钮回调,打开弹框后执行\r\n onSearchCallBack?: any; //列表查询按钮回调,打开弹框后执行\r\n };\r\n baseProps?: NSCBaseBageProps;\r\n autoLoad?: boolean;\r\n}\r\n\r\nconst defaultStateValue = {\r\n pageProps: {} as any,\r\n treeProps: { store: { url: \"\", autoLoad: false } } as any,\r\n tableProps: {} as any,\r\n selfToolButton: [] as any,\r\n selfColumnButton: [] as any,\r\n selfFormButton: [] as any,\r\n pageLoading: true,\r\n defaultColumns: [] as any,\r\n otherProps: {} as any,\r\n buttonLoading: {} as any,\r\n formPageProps: {} as any,\r\n};\r\nexport default class SettingTable extends React.Component<IProps, any> {\r\n state = {\r\n ...defaultStateValue,\r\n };\r\n pageRef = React.createRef<any>();\r\n modalRef = React.createRef<any>();\r\n\r\n componentDidMount(): void {\r\n this.getData();\r\n ModalManager.register(this.modalRef);\r\n }\r\n\r\n componentDidUpdate(\r\n prevProps: Readonly<IProps>,\r\n prevState: Readonly<any>,\r\n snapshot?: any\r\n ): void {\r\n if (prevProps.tableCode != this.props.tableCode) {\r\n this.setState(\r\n {\r\n ...defaultStateValue,\r\n },\r\n () => {\r\n this.getData();\r\n }\r\n );\r\n }\r\n }\r\n\r\n initData = (res: any) => {\r\n const { otherProps, pageProps } = this.state;\r\n if (\r\n pageProps.showSearch !== false &&\r\n otherProps.defaultSearch &&\r\n otherProps.tableDataResource == \"url\"\r\n ) {\r\n let func = new Function(\"Utils,eventOption\", otherProps.defaultSearch);\r\n const params = func(defaultUtil, { pageRef: this.pageRef });\r\n setTimeout(() => {\r\n this.pageRef.current?.tableLoad({ ...params });\r\n this.pageRef.current?.setSearchParams({ ...params });\r\n }, 50); //直接设置,pageRef没绑定,暂时通过延迟函数进行解决\r\n }\r\n };\r\n // 获取数据\r\n getData() {\r\n // 从props中获取tableCode、published、menuCode\r\n this.setState({\r\n pageLoading: true,\r\n });\r\n const { tableCode, published = true, menuCode, tabParams } = this.props;\r\n // 如果tableCode存在\r\n if (tableCode) {\r\n // 定义参数\r\n let params = { code: tableCode } as any;\r\n // 如果published为true\r\n if (published) {\r\n // 设置参数isPublished为1\r\n params.isPublished = 1;\r\n }\r\n // 调用getPageData方法获取数据\r\n getPageData({ ...params }).then((res: any) => {\r\n if (res.code == 200 && res.data) {\r\n let table_props = JSON.parse(res.data.tableProps || \"{}\") || {};\r\n let tree_props = JSON.parse(res.data.treeProps || \"{}\") || {};\r\n let page_props = JSON.parse(res.data.pageProps || \"{}\") || {};\r\n let other_props = JSON.parse(res.data.otherParams || \"{}\") || {};\r\n let form_props = JSON.parse(res.data.formProps || \"{}\") || {};\r\n if (page_props.permission?.has == true) {\r\n page_props.permission.menuCode = menuCode;\r\n }\r\n if (published == false) {\r\n page_props.permission = false;\r\n }\r\n if (\r\n (page_props.showSearch !== false &&\r\n other_props.defaultSearch &&\r\n other_props?.tableDataResource == \"url\") ||\r\n this.props.autoLoad === false\r\n ) {\r\n table_props.store.autoLoad = false;\r\n }\r\n if (tabParams) {\r\n const Utils = defaultUtil || {};\r\n let paramFunc = new Function(\"Utils\", tabParams);\r\n let converTabParams = paramFunc(Utils);\r\n if (page_props.requestParams) {\r\n let { requestParams = {} } = page_props;\r\n let newRequestParams = {\r\n queryParams: null,\r\n addParams: null,\r\n editorParams: null,\r\n };\r\n for (let key in newRequestParams) {\r\n if (requestParams[key]) {\r\n let func = new Function(\"Utils\", requestParams[key]);\r\n let converParams = func(Utils);\r\n const { data, ...other } = converParams;\r\n let newParams = {\r\n data: { ...converTabParams, ...data },\r\n ...other,\r\n };\r\n newRequestParams[key] = newParams;\r\n } else {\r\n newRequestParams[key] = { data: { ...converTabParams } };\r\n }\r\n }\r\n page_props.requestParams = { ...newRequestParams };\r\n } else {\r\n page_props.requestParams = {\r\n queryParams: { data: { ...converTabParams } },\r\n addParams: { data: { ...converTabParams } },\r\n editorParams: { data: { ...converTabParams } },\r\n };\r\n }\r\n }\r\n this.setState(\r\n {\r\n pageProps: {\r\n ...page_props,\r\n },\r\n treeProps: {\r\n ...tree_props,\r\n },\r\n tableProps: {\r\n ...table_props,\r\n },\r\n otherProps: { ...other_props },\r\n selfColumnButton: JSON.parse(res.data.columnButtons) || [],\r\n selfToolButton: JSON.parse(res.data.toolButtons) || [],\r\n defaultColumns: page_props.columns,\r\n formPageProps: form_props,\r\n selfFormButton: form_props?.selfButton || [],\r\n },\r\n () => {\r\n this.setState({\r\n pageLoading: false,\r\n });\r\n }\r\n );\r\n } else if (res.code == 200 && res.data == null) {\r\n message.error(\"未找到配置信息!\");\r\n this.setState({\r\n pageLoading: false,\r\n });\r\n } else {\r\n this.setState({\r\n pageLoading: false,\r\n });\r\n }\r\n });\r\n } else {\r\n this.setState({\r\n pageLoading: false,\r\n });\r\n }\r\n }\r\n // onSearch() {}\r\n getSearchValues() {\r\n const value = this.pageRef.current?.getSearchValues();\r\n return value;\r\n }\r\n setSearchParams(params, callBack) {\r\n this.pageRef.current?.setSearchParams(params);\r\n }\r\n tableLoad(params: any, requestConfig = {}) {\r\n this.pageRef.current?.tableLoad(params, requestConfig);\r\n }\r\n tableReload(params = {}, autoLoad = true) {\r\n this.pageRef.current?.tableReload(params, autoLoad);\r\n }\r\n getSelectedRowKeys() {\r\n return this.pageRef.current?.getSelectedRowKeys();\r\n }\r\n getSelectedRowDatas() {\r\n return this.pageRef.current?.getSelectedRowDatas();\r\n }\r\n\r\n resetSelectedRowKeys() {\r\n return this.pageRef.current?.resetSelectedRowKeys();\r\n }\r\n render() {\r\n const {\r\n className,\r\n funcs = {},\r\n baseProps = {} as NSCBaseBageProps,\r\n } = this.props;\r\n const {\r\n pageProps,\r\n treeProps,\r\n tableProps,\r\n selfToolButton,\r\n selfColumnButton,\r\n pageLoading,\r\n defaultColumns,\r\n buttonLoading = {},\r\n formPageProps = {},\r\n selfFormButton,\r\n } = this.state;\r\n const {\r\n treeProps: settingTreeProps = {},\r\n tableProps: settingTableProps = {},\r\n ...otherProps\r\n } = baseProps;\r\n let _this = this;\r\n const deaultFuncs = {\r\n setFieldDisabled: (key, disabled) => {\r\n const newData = setFieldDisabled(pageProps.columns, key, disabled);\r\n this.setState({\r\n pageProps: { ...pageProps, columns: newData },\r\n });\r\n },\r\n setFieldVisible: (key, disabled) => {\r\n const newData = setFieldVisible(pageProps.columns, key, disabled);\r\n this.setState({\r\n pageProps: { ...pageProps, columns: newData },\r\n });\r\n },\r\n setFieldPropsData: (key, data) => {\r\n const newData = setFieldPropsData(pageProps.columns, key, data);\r\n this.setState({\r\n pageProps: { ...pageProps, columns: newData },\r\n });\r\n },\r\n // history: (params, type) => {\r\n // jumpPage(params, type);\r\n // },\r\n setButtonLoading: (code, loading) => {\r\n _this.setState({\r\n buttonLoading: { ...buttonLoading, [code]: loading },\r\n });\r\n },\r\n ...defaultComFuncs,\r\n openFormModal: (params:OpenParms) => {\r\n ModalManager.showModal(params);\r\n },\r\n // getCurrentProject: () => {\r\n // return getProject();\r\n // },\r\n };\r\n const { children } = this.props;\r\n let codeSelfButtons = [];\r\n let codecolumnButtons = [];\r\n let codeFormButtons = [];\r\n if (Array.isArray(children)) {\r\n children.map((item: any) => {\r\n if (Array.isArray(item)) {\r\n item.map((child) => {\r\n if (child?.props?.pageType == \"toolButton\") {\r\n codeSelfButtons.push(child);\r\n } else if (child?.props?.pageType == \"columnButton\") {\r\n codecolumnButtons.push(child);\r\n } else if (child?.props?.pageType == \"formButton\") {\r\n codeFormButtons.push(child);\r\n }\r\n });\r\n } else {\r\n if (item?.props?.pageType == \"toolButton\") {\r\n codeSelfButtons.push(item);\r\n } else if (item?.props?.pageType == \"columnButton\") {\r\n codecolumnButtons.push(item);\r\n } else if (item?.props?.pageType == \"formButton\") {\r\n codeFormButtons.push(item);\r\n }\r\n }\r\n });\r\n } else if (children) {\r\n const { props }: any = children;\r\n if (props?.pageType == \"toolButton\") {\r\n codeSelfButtons.push(children);\r\n } else if (props?.pageType == \"columnButton\") {\r\n codecolumnButtons.push(children);\r\n } else if (props?.pageType == \"formButton\") {\r\n codeFormButtons.push(children);\r\n }\r\n }\r\n return (\r\n <div className={cls(\"nsc-framework-tablepage\", className)}>\r\n {pageLoading ? (\r\n <div style={{ width: \"100%\", height: \"100%\" }}>\r\n <Spin spinning={pageLoading}></Spin>\r\n </div>\r\n ) : (\r\n <BasePage\r\n {...pageProps}\r\n treeProps={{ ...treeProps, ...settingTreeProps }}\r\n tableProps={{ ...tableProps, ...settingTableProps }}\r\n formProps={{}}\r\n Utils={{ ...defaultUtil }}\r\n ref={this.pageRef}\r\n pageRef={this.pageRef}\r\n onHideForm={() => {\r\n this.setState({\r\n pageProps: { ...pageProps, columns: defaultColumns },\r\n });\r\n this.pageRef.current?.hideForm();\r\n }}\r\n funcs={{ ...deaultFuncs, ...funcs }}\r\n initData={this.initData}\r\n formPageProps={{\r\n formType: formPageProps.formType || \"modal\",\r\n props: formPageProps?.props,\r\n }}\r\n tableCode={this.props.tableCode}\r\n {...otherProps}\r\n >\r\n {renderSelfToolButton({\r\n selfButton: selfToolButton,\r\n pageRef: this.pageRef,\r\n funcs: { ...deaultFuncs, ...funcs },\r\n loading: this.state.buttonLoading,\r\n })}\r\n {codeSelfButtons.map((item) => {\r\n return item;\r\n })}\r\n {renderSelfColumnButton({\r\n selfColumnButton,\r\n pageRef: this.pageRef,\r\n funcs: { ...deaultFuncs, ...funcs },\r\n })}\r\n {codecolumnButtons.map((item) => {\r\n return item;\r\n })}\r\n {renderSelfToolButton({\r\n selfButton: selfFormButton,\r\n pageRef: this.pageRef,\r\n funcs: { ...deaultFuncs, ...funcs },\r\n loading: this.state.buttonLoading,\r\n type: \"formButton\",\r\n })}\r\n {codeFormButtons.map((item) => {\r\n return item;\r\n })}\r\n </BasePage>\r\n )}\r\n <ModalForm ref={this.modalRef} />\r\n </div>\r\n );\r\n }\r\n}\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["BasePage","Spin","React","NscRequest","cls","defaultComFuncs","defaultUtil","ModalForm","renderSelfColumnButton","renderSelfToolButton","ModalManager","deepMerge","getPageData","params","get","xssFilter","autoPrefix","setFieldDisabled","data","key","disabled","columns","newColumns","map","item","obj","_objectSpread","dataIndex","indexOf","props","push","setFieldVisible","visible","editor","setFieldPropsData","propsData","defaultStateValue","pageProps","treeProps","store","url","autoLoad","tableProps","selfToolButton","selfColumnButton","selfFormButton","pageLoading","defaultColumns","otherProps","buttonLoading","formPageProps","SettingTable","Component","constructor","arguments","_defineProperty","createRef","res","state","showSearch","defaultSearch","tableDataResource","func","Function","pageRef","setTimeout","_this$pageRef$current","_this$pageRef$current2","current","tableLoad","setSearchParams","componentDidMount","getData","register","modalRef","componentDidUpdate","prevProps","prevState","snapshot","tableCode","setState","published","menuCode","tabParams","code","isPublished","then","_page_props$permissio","table_props","JSON","parse","tree_props","page_props","other_props","otherParams","form_props","formProps","permission","has","Utils","paramFunc","converTabParams","requestParams","newRequestParams","queryParams","addParams","editorParams","converParams","other","_objectWithoutProperties","_excluded","newParams","columnButtons","toolButtons","selfButton","_message","error","getSearchValues","_this$pageRef$current3","value","callBack","_this$pageRef$current4","_this$pageRef$current5","requestConfig","length","undefined","tableReload","_this$pageRef$current6","getSelectedRowKeys","_this$pageRef$current7","getSelectedRowDatas","_this$pageRef$current8","resetSelectedRowKeys","_this$pageRef$current9","render","className","funcs","baseProps","settingTreeProps","settingTableProps","_excluded2","_this","deaultFuncs","newData","setButtonLoading","loading","openFormModal","showModal","children","codeSelfButtons","codecolumnButtons","codeFormButtons","Array","isArray","child","_child$props","_child$props2","_child$props3","pageType","_item$props","_item$props2","_item$props3","newTableProps","newTreeProps","createElement","style","width","height","spinning","_extends","ref","onHideForm","_this$pageRef$current10","hideForm","initData","formType","type"],"sources":["../../../src/components/page/SettingTable/index.tsx"],"sourcesContent":["import { forwardRef, useEffect, useImperativeHandle, useState } from \"react\";\r\nimport BasePage, { NSCBaseBageProps } from \"../BasePage\";\r\nimport Spin from \"../../base/spin\";\r\nimport Button from \"../../base/button\";\r\nimport \"./index.less\";\r\nimport React from \"react\";\r\nimport NscRequest from \"nsc-request\";\r\nimport cls from \"classnames\";\r\nimport { message } from \"antd\";\r\nimport {\r\n defaultComFuncs,\r\n defaultUtil,\r\n ModalForm,\r\n renderSelfColumnButton,\r\n renderSelfToolButton,\r\n ModalManager,\r\n OpenParms,\r\n} from \"../SettingUtil/utils\";\r\nimport { deepMerge } from \"../../utils\";\r\n\r\nconst getPageData = (params: any) => {\r\n return NscRequest.get(`/jquick-setting/setting/table/info/`, {\r\n params,\r\n xssFilter: false,\r\n autoPrefix: true,\r\n });\r\n};\r\n\r\n//设置表单字段只读\r\nconst setFieldDisabled = (data: Array<any>, key, disabled) => {\r\n const columns = [...data];\r\n let newColumns = [] as any;\r\n columns.map((item) => {\r\n let obj = { ...item };\r\n if (item.dataIndex == key || key.indexOf(item.dataIndex) > -1) {\r\n let props = obj.props ? { ...obj.props } : {};\r\n props.disabled = disabled;\r\n obj.props = props;\r\n }\r\n newColumns.push(obj);\r\n });\r\n return newColumns;\r\n};\r\n//设置表单字段隐藏\r\nconst setFieldVisible = (data: Array<any>, key, visible) => {\r\n const columns = [...data];\r\n let newColumns = [] as any;\r\n columns.map((item) => {\r\n let obj = { ...item };\r\n if (item.dataIndex == key || key.indexOf(item.dataIndex) > -1) {\r\n obj.editor = visible;\r\n }\r\n newColumns.push(obj);\r\n });\r\n return newColumns;\r\n};\r\n\r\nconst setFieldPropsData = (data: Array<any>, key, propsData) => {\r\n const columns = [...data];\r\n let newColumns = [] as any;\r\n columns.map((item) => {\r\n let obj = { ...item };\r\n if (item.dataIndex == key) {\r\n let props = obj.props ? { ...obj.props } : {};\r\n props.data = propsData;\r\n obj.props = props;\r\n }\r\n newColumns.push(obj);\r\n });\r\n return newColumns;\r\n};\r\ninterface IProps {\r\n tableCode: string;\r\n className?: any;\r\n menuCode?: string;\r\n funcs?: any;\r\n published?: boolean;\r\n instanceRef?: any;\r\n tabParams?: any;\r\n onCallBacks?: {\r\n treeSelectCallBack?: any; //树点击查询后回调\r\n onQueryCallBack?: any; //查询回调,查询数据后回调\r\n onSumbitCallBack?: any; //保存回调,保存数据成功后回调\r\n onDeleteCallBack?: any; //删除按钮回调,删除数据后执行\r\n onEditorCallBack?: any; //编辑按钮回调,打开弹框后执行\r\n onAddCallBack?: any; //添加按钮回调,打开弹框后执行\r\n onSearchCallBack?: any; //列表查询按钮回调,打开弹框后执行\r\n };\r\n baseProps?: NSCBaseBageProps;\r\n autoLoad?: boolean;\r\n}\r\n\r\nconst defaultStateValue = {\r\n pageProps: {} as any,\r\n treeProps: { store: { url: \"\", autoLoad: false } } as any,\r\n tableProps: {} as any,\r\n selfToolButton: [] as any,\r\n selfColumnButton: [] as any,\r\n selfFormButton: [] as any,\r\n pageLoading: true,\r\n defaultColumns: [] as any,\r\n otherProps: {} as any,\r\n buttonLoading: {} as any,\r\n formPageProps: {} as any,\r\n};\r\nexport default class SettingTable extends React.Component<IProps, any> {\r\n state = {\r\n ...defaultStateValue,\r\n };\r\n pageRef = React.createRef<any>();\r\n modalRef = React.createRef<any>();\r\n\r\n componentDidMount(): void {\r\n this.getData();\r\n ModalManager.register(this.modalRef);\r\n }\r\n\r\n componentDidUpdate(\r\n prevProps: Readonly<IProps>,\r\n prevState: Readonly<any>,\r\n snapshot?: any\r\n ): void {\r\n if (prevProps.tableCode != this.props.tableCode) {\r\n this.setState(\r\n {\r\n ...defaultStateValue,\r\n },\r\n () => {\r\n this.getData();\r\n }\r\n );\r\n }\r\n }\r\n\r\n initData = (res: any) => {\r\n const { otherProps, pageProps } = this.state;\r\n if (\r\n pageProps.showSearch !== false &&\r\n otherProps.defaultSearch &&\r\n otherProps.tableDataResource == \"url\"\r\n ) {\r\n let func = new Function(\"Utils,eventOption\", otherProps.defaultSearch);\r\n const params = func(defaultUtil, { pageRef: this.pageRef });\r\n setTimeout(() => {\r\n this.pageRef.current?.tableLoad({ ...params });\r\n this.pageRef.current?.setSearchParams({ ...params });\r\n }, 50); //直接设置,pageRef没绑定,暂时通过延迟函数进行解决\r\n }\r\n };\r\n // 获取数据\r\n getData() {\r\n // 从props中获取tableCode、published、menuCode\r\n this.setState({\r\n pageLoading: true,\r\n });\r\n const { tableCode, published = true, menuCode, tabParams } = this.props;\r\n // 如果tableCode存在\r\n if (tableCode) {\r\n // 定义参数\r\n let params = { code: tableCode } as any;\r\n // 如果published为true\r\n if (published) {\r\n // 设置参数isPublished为1\r\n params.isPublished = 1;\r\n }\r\n // 调用getPageData方法获取数据\r\n getPageData({ ...params }).then((res: any) => {\r\n if (res.code == 200 && res.data) {\r\n let table_props = JSON.parse(res.data.tableProps || \"{}\") || {};\r\n let tree_props = JSON.parse(res.data.treeProps || \"{}\") || {};\r\n let page_props = JSON.parse(res.data.pageProps || \"{}\") || {};\r\n let other_props = JSON.parse(res.data.otherParams || \"{}\") || {};\r\n let form_props = JSON.parse(res.data.formProps || \"{}\") || {};\r\n if (page_props.permission?.has == true) {\r\n page_props.permission.menuCode = menuCode;\r\n }\r\n if (published == false) {\r\n page_props.permission = false;\r\n }\r\n if (\r\n (page_props.showSearch !== false &&\r\n other_props.defaultSearch &&\r\n other_props?.tableDataResource == \"url\") ||\r\n this.props.autoLoad === false\r\n ) {\r\n table_props.store.autoLoad = false;\r\n }\r\n if (tabParams) {\r\n const Utils = defaultUtil || {};\r\n let paramFunc = new Function(\"Utils\", tabParams);\r\n let converTabParams = paramFunc(Utils);\r\n if (page_props.requestParams) {\r\n let { requestParams = {} } = page_props;\r\n let newRequestParams = {\r\n queryParams: null,\r\n addParams: null,\r\n editorParams: null,\r\n };\r\n for (let key in newRequestParams) {\r\n if (requestParams[key]) {\r\n let func = new Function(\"Utils\", requestParams[key]);\r\n let converParams = func(Utils);\r\n const { data, ...other } = converParams;\r\n let newParams = {\r\n data: { ...converTabParams, ...data },\r\n ...other,\r\n };\r\n newRequestParams[key] = newParams;\r\n } else {\r\n newRequestParams[key] = { data: { ...converTabParams } };\r\n }\r\n }\r\n page_props.requestParams = { ...newRequestParams };\r\n } else {\r\n page_props.requestParams = {\r\n queryParams: { data: { ...converTabParams } },\r\n addParams: { data: { ...converTabParams } },\r\n editorParams: { data: { ...converTabParams } },\r\n };\r\n }\r\n }\r\n this.setState(\r\n {\r\n pageProps: {\r\n ...page_props,\r\n },\r\n treeProps: {\r\n ...tree_props,\r\n },\r\n tableProps: {\r\n ...table_props,\r\n },\r\n otherProps: { ...other_props },\r\n selfColumnButton: JSON.parse(res.data.columnButtons) || [],\r\n selfToolButton: JSON.parse(res.data.toolButtons) || [],\r\n defaultColumns: page_props.columns,\r\n formPageProps: form_props,\r\n selfFormButton: form_props?.selfButton || [],\r\n },\r\n () => {\r\n this.setState({\r\n pageLoading: false,\r\n });\r\n }\r\n );\r\n } else if (res.code == 200 && res.data == null) {\r\n message.error(\"未找到配置信息!\");\r\n this.setState({\r\n pageLoading: false,\r\n });\r\n } else {\r\n this.setState({\r\n pageLoading: false,\r\n });\r\n }\r\n });\r\n } else {\r\n this.setState({\r\n pageLoading: false,\r\n });\r\n }\r\n }\r\n // onSearch() {}\r\n getSearchValues() {\r\n const value = this.pageRef.current?.getSearchValues();\r\n return value;\r\n }\r\n setSearchParams(params, callBack) {\r\n this.pageRef.current?.setSearchParams(params);\r\n }\r\n tableLoad(params: any, requestConfig = {}) {\r\n this.pageRef.current?.tableLoad(params, requestConfig);\r\n }\r\n tableReload(params = {}, autoLoad = true) {\r\n this.pageRef.current?.tableReload(params, autoLoad);\r\n }\r\n getSelectedRowKeys() {\r\n return this.pageRef.current?.getSelectedRowKeys();\r\n }\r\n getSelectedRowDatas() {\r\n return this.pageRef.current?.getSelectedRowDatas();\r\n }\r\n\r\n resetSelectedRowKeys() {\r\n return this.pageRef.current?.resetSelectedRowKeys();\r\n }\r\n render() {\r\n const {\r\n className,\r\n funcs = {},\r\n baseProps = {} as NSCBaseBageProps,\r\n } = this.props;\r\n const {\r\n pageProps,\r\n treeProps,\r\n tableProps,\r\n selfToolButton,\r\n selfColumnButton,\r\n pageLoading,\r\n defaultColumns,\r\n buttonLoading = {},\r\n formPageProps = {},\r\n selfFormButton,\r\n } = this.state;\r\n const {\r\n treeProps: settingTreeProps = {},\r\n tableProps: settingTableProps = {},\r\n ...otherProps\r\n } = baseProps;\r\n let _this = this;\r\n const deaultFuncs = {\r\n setFieldDisabled: (key, disabled) => {\r\n const newData = setFieldDisabled(pageProps.columns, key, disabled);\r\n this.setState({\r\n pageProps: { ...pageProps, columns: newData },\r\n });\r\n },\r\n setFieldVisible: (key, disabled) => {\r\n const newData = setFieldVisible(pageProps.columns, key, disabled);\r\n this.setState({\r\n pageProps: { ...pageProps, columns: newData },\r\n });\r\n },\r\n setFieldPropsData: (key, data) => {\r\n const newData = setFieldPropsData(pageProps.columns, key, data);\r\n this.setState({\r\n pageProps: { ...pageProps, columns: newData },\r\n });\r\n },\r\n // history: (params, type) => {\r\n // jumpPage(params, type);\r\n // },\r\n setButtonLoading: (code, loading) => {\r\n _this.setState({\r\n buttonLoading: { ...buttonLoading, [code]: loading },\r\n });\r\n },\r\n ...defaultComFuncs,\r\n openFormModal: (params: OpenParms) => {\r\n ModalManager.showModal(params);\r\n },\r\n // getCurrentProject: () => {\r\n // return getProject();\r\n // },\r\n };\r\n const { children } = this.props;\r\n let codeSelfButtons = [];\r\n let codecolumnButtons = [];\r\n let codeFormButtons = [];\r\n if (Array.isArray(children)) {\r\n children.map((item: any) => {\r\n if (Array.isArray(item)) {\r\n item.map((child) => {\r\n if (child?.props?.pageType == \"toolButton\") {\r\n codeSelfButtons.push(child);\r\n } else if (child?.props?.pageType == \"columnButton\") {\r\n codecolumnButtons.push(child);\r\n } else if (child?.props?.pageType == \"formButton\") {\r\n codeFormButtons.push(child);\r\n }\r\n });\r\n } else {\r\n if (item?.props?.pageType == \"toolButton\") {\r\n codeSelfButtons.push(item);\r\n } else if (item?.props?.pageType == \"columnButton\") {\r\n codecolumnButtons.push(item);\r\n } else if (item?.props?.pageType == \"formButton\") {\r\n codeFormButtons.push(item);\r\n }\r\n }\r\n });\r\n } else if (children) {\r\n const { props }: any = children;\r\n if (props?.pageType == \"toolButton\") {\r\n codeSelfButtons.push(children);\r\n } else if (props?.pageType == \"columnButton\") {\r\n codecolumnButtons.push(children);\r\n } else if (props?.pageType == \"formButton\") {\r\n codeFormButtons.push(children);\r\n }\r\n }\r\n let newTableProps = deepMerge({ ...tableProps }, { ...settingTableProps });\r\n let newTreeProps = deepMerge({ ...treeProps }, { ...settingTreeProps });\r\n return (\r\n <div className={cls(\"nsc-framework-tablepage\", className)}>\r\n {pageLoading ? (\r\n <div style={{ width: \"100%\", height: \"100%\" }}>\r\n <Spin spinning={pageLoading}></Spin>\r\n </div>\r\n ) : (\r\n <BasePage\r\n {...pageProps}\r\n treeProps={{ ...newTreeProps }}\r\n tableProps={{ ...newTableProps }}\r\n formProps={{}}\r\n Utils={{ ...defaultUtil }}\r\n ref={this.pageRef}\r\n pageRef={this.pageRef}\r\n onHideForm={() => {\r\n this.setState({\r\n pageProps: { ...pageProps, columns: defaultColumns },\r\n });\r\n this.pageRef.current?.hideForm();\r\n }}\r\n funcs={{ ...deaultFuncs, ...funcs }}\r\n initData={this.initData}\r\n formPageProps={{\r\n formType: formPageProps.formType || \"modal\",\r\n props: formPageProps?.props,\r\n ...formPageProps?.otherProps,\r\n }}\r\n tableCode={this.props.tableCode}\r\n {...otherProps}\r\n >\r\n {renderSelfToolButton({\r\n selfButton: selfToolButton,\r\n pageRef: this.pageRef,\r\n funcs: { ...deaultFuncs, ...funcs },\r\n loading: this.state.buttonLoading,\r\n })}\r\n {codeSelfButtons.map((item) => {\r\n return item;\r\n })}\r\n {renderSelfColumnButton({\r\n selfColumnButton,\r\n pageRef: this.pageRef,\r\n funcs: { ...deaultFuncs, ...funcs },\r\n })}\r\n {codecolumnButtons.map((item) => {\r\n return item;\r\n })}\r\n {renderSelfToolButton({\r\n selfButton: selfFormButton,\r\n pageRef: this.pageRef,\r\n funcs: { ...deaultFuncs, ...funcs },\r\n loading: this.state.buttonLoading,\r\n type: \"formButton\",\r\n })}\r\n {codeFormButtons.map((item) => {\r\n return item;\r\n })}\r\n </BasePage>\r\n )}\r\n <ModalForm ref={this.modalRef} />\r\n </div>\r\n );\r\n }\r\n}\r\n"],"mappings":"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"}
|
package/lib/utils.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ export declare const getLess: (styles: Object, name: string) => any;
|
|
|
14
14
|
export declare const converFunction: (func: any, eventOption?: any, Utils?: any) => void;
|
|
15
15
|
export declare function simplifyObject(obj: any): {};
|
|
16
16
|
export declare function simplifyColumns(columns: any): any;
|
|
17
|
+
export declare function deepMerge(...sources: any[]): any;
|
|
17
18
|
declare const _default: {
|
|
18
19
|
encryptValue: typeof encryptValue;
|
|
19
20
|
checkModel: typeof checkModel;
|
package/lib/utils.js
CHANGED
|
@@ -18,6 +18,7 @@ import InputNumber from "./base/input/Number";
|
|
|
18
18
|
import getConfig from "./config";
|
|
19
19
|
import AntIcon from "@ant-design/icons";
|
|
20
20
|
import * as icons from "@ant-design/icons";
|
|
21
|
+
import lodash from "lodash";
|
|
21
22
|
export function encryptValue(encrypt, value) {
|
|
22
23
|
let encryptValue = value;
|
|
23
24
|
if (encrypt && typeof encrypt === "object") {
|
|
@@ -201,6 +202,45 @@ export function simplifyObject(obj) {
|
|
|
201
202
|
export function simplifyColumns(columns) {
|
|
202
203
|
return columns.map(col => simplifyObject(col));
|
|
203
204
|
}
|
|
205
|
+
|
|
206
|
+
//对象深度合并
|
|
207
|
+
// export function deepMerge(...sources) {
|
|
208
|
+
// if (sources.length === 0) return {};
|
|
209
|
+
// if (sources.length === 1) return lodash.cloneDeep(sources[0]);
|
|
210
|
+
// const result = lodash.cloneDeep(sources[0]);
|
|
211
|
+
// for (let i = 1; i < sources.length; i++) {
|
|
212
|
+
// const source = sources[i];
|
|
213
|
+
// for (const [key, value] of Object.entries(source)) {
|
|
214
|
+
// if (Array.isArray(value)) {
|
|
215
|
+
// result[key] = lodash.cloneDeep(value);
|
|
216
|
+
// } else if (lodash.isPlainObject(value) && lodash.isPlainObject(result[key])) {
|
|
217
|
+
// result[key] = deepMerge(result[key], value);
|
|
218
|
+
// } else {
|
|
219
|
+
// result[key] = value;
|
|
220
|
+
// }
|
|
221
|
+
// }
|
|
222
|
+
// }
|
|
223
|
+
|
|
224
|
+
// return result;
|
|
225
|
+
// }
|
|
226
|
+
export function deepMerge() {
|
|
227
|
+
if (arguments.length === 0) return {};
|
|
228
|
+
if (arguments.length === 1) return lodash.cloneDeep(arguments.length <= 0 ? undefined : arguments[0]);
|
|
229
|
+
const result = lodash.cloneDeep(arguments.length <= 0 ? undefined : arguments[0]);
|
|
230
|
+
for (let i = 1; i < arguments.length; i++) {
|
|
231
|
+
const source = i < 0 || arguments.length <= i ? undefined : arguments[i];
|
|
232
|
+
for (const [key, value] of Object.entries(source)) {
|
|
233
|
+
if (lodash.isPlainObject(value) && lodash.isPlainObject(result[key])) {
|
|
234
|
+
result[key] = deepMerge(result[key], value);
|
|
235
|
+
} else if (Array.isArray(value) && Array.isArray(result[key])) {
|
|
236
|
+
result[key] = lodash.cloneDeep(value);
|
|
237
|
+
} else {
|
|
238
|
+
result[key] = lodash.cloneDeep(value);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
return result;
|
|
243
|
+
}
|
|
204
244
|
export default {
|
|
205
245
|
encryptValue,
|
|
206
246
|
checkModel,
|
|
@@ -209,4 +249,4 @@ export default {
|
|
|
209
249
|
checkChars,
|
|
210
250
|
px2vw
|
|
211
251
|
};
|
|
212
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzbTJFbmNyeXB0VmFsdWUiLCJzbTRFbmNyeXB0IiwiYmFzZTY0RW5jcnlwdCIsIm1kNUVuY3J5cHQiLCJjaGVja1ZhbHVlIiwic20yRGVjcnlwdFZhbHVlIiwic200RGVjcnlwdCIsImJhc2U2NERlY3J5cHQiLCJpc0VtcHR5T2JqIiwiaXNFbXB0eSIsIkljb25Gb250IiwiUmVhY3QiLCJSYWRpbyIsIklucHV0IiwiU2VsZWN0IiwiQ2FzY2FkZXIiLCJDaGVja2JveCIsIkRhdGVQaWNrZXIiLCJSYW5nZVBpY2tlciIsIlN3aXRjaCIsIlVwbG9hZCIsIlBhc3N3b3JkIiwiVGV4dEFyZWEiLCJJbnB1dE51bWJlciIsImdldENvbmZpZyIsIkFudEljb24iLCJpY29ucyIsImVuY3J5cHRWYWx1ZSIsImVuY3J5cHQiLCJ2YWx1ZSIsInR5cGUiLCJrZXkiLCJkZWNyeXB0VmFsdWUiLCJkZWNyeXB0IiwiY2hlY2tNb2RlbCIsImNoZWNrdHlwZSIsImdldENhY2hlS2V5Iiwic290cmUiLCJ2aWV3bmFtZSIsInJlcXVlc3RDb25maWciLCJ1cmwiLCJKU09OIiwic3RyaW5naWZ5IiwiY2hlY2tDaGFycyIsInJlZyIsInRlc3QiLCJweDJ2dyIsInB4VmFsdWUiLCJiYXNlVmFsdWUiLCJiYXNlV2lkdGgiLCJ0b0ZpeGVkIiwiZ2V0SWNvbiIsImljb24iLCJkZWZhdWx0SWNvbiIsImljb25QcmVmaXgiLCJzaG93SWNvbiIsInN0YXJ0c1dpdGgiLCJjcmVhdGVFbGVtZW50IiwiY29tcG9uZW50IiwiZ2V0Tm9kZSIsInByb3BzIiwiRElWIiwiR3JvdXAiLCJkZWJvdW5jZSIsImZuIiwibXMiLCJ0aW1lcklkIiwiY2xlYXJUaW1lb3V0Iiwic2V0VGltZW91dCIsImFwcGx5IiwiYXJndW1lbnRzIiwidGhyb3R0bGUiLCJnZXRMZXNzIiwic3R5bGVzIiwibmFtZSIsImNvbnZlckZ1bmN0aW9uIiwiZnVuYyIsImV2ZW50T3B0aW9uIiwiVXRpbHMiLCJzZWxmRnVuYyIsIkZ1bmN0aW9uIiwic2ltcGxpZnlPYmplY3QiLCJvYmoiLCJyZXN1bHQiLCJ2YWwiLCJzaW1wbGlmeUNvbHVtbnMiLCJjb2x1bW5zIiwibWFwIiwiY29sIl0sInNvdXJjZXMiOlsiLi4vc3JjL2NvbXBvbmVudHMvdXRpbHMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIEBEZXNjcmlwdHRpb246XHJcbiAqIEB2ZXJzaW9uOlxyXG4gKiBAQXV0aG9yOiByeHpodVxyXG4gKiBARGF0ZTogMjAyMS0wNC0xMiAxNzozMjo1M1xyXG4gKiBATGFzdEVkaXRvcnM6IHJ4emh1XHJcbiAqIEBMYXN0RWRpdFRpbWU6IDIwMjEtMDQtMjIgMTc6MTQ6MDRcclxuICovXHJcbmltcG9ydCB7XHJcbiAgc20yRW5jcnlwdFZhbHVlLFxyXG4gIHNtNEVuY3J5cHQsXHJcbiAgYmFzZTY0RW5jcnlwdCxcclxuICBtZDVFbmNyeXB0LFxyXG4gIGNoZWNrVmFsdWUsXHJcbiAgc20yRGVjcnlwdFZhbHVlLFxyXG4gIHNtNERlY3J5cHQsXHJcbiAgYmFzZTY0RGVjcnlwdCxcclxuICBpc0VtcHR5T2JqLFxyXG59IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgeyBlbmNyeXB0IH0gZnJvbSBcIi4vSW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwibG9kYXNoXCI7XHJcbmltcG9ydCBJY29uRm9udCBmcm9tIFwiLi9iYXNlL2NvbW1vbi9JY29uRm9udFwiO1xyXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7XHJcbiAgUmFkaW8sXHJcbiAgSW5wdXQsXHJcbiAgU2VsZWN0LFxyXG4gIENhc2NhZGVyLFxyXG4gIENoZWNrYm94LFxyXG4gIERhdGVQaWNrZXIsXHJcbiAgUmFuZ2VQaWNrZXIsXHJcbiAgU3dpdGNoLFxyXG4gIFVwbG9hZCxcclxufSBmcm9tIFwiLlwiO1xyXG5pbXBvcnQgUGFzc3dvcmQgZnJvbSBcIi4vYmFzZS9pbnB1dC9QYXNzd29yZFwiO1xyXG5pbXBvcnQgVGV4dEFyZWEgZnJvbSBcIi4vYmFzZS9pbnB1dC9UZXh0QXJlYVwiO1xyXG5pbXBvcnQgSW5wdXROdW1iZXIgZnJvbSBcIi4vYmFzZS9pbnB1dC9OdW1iZXJcIjtcclxuLy8gaW1wb3J0IHsgVXBsb2FkIH0gZnJvbSBcImFudGRcIjtcclxuaW1wb3J0IGdldENvbmZpZyBmcm9tIFwiLi9jb25maWdcIjtcclxuaW1wb3J0IEFudEljb24gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmltcG9ydCAqIGFzIGljb25zIGZyb20gXCJAYW50LWRlc2lnbi9pY29uc1wiO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGVuY3J5cHRWYWx1ZShlbmNyeXB0OiBlbmNyeXB0IHwgYm9vbGVhbiwgdmFsdWUpIHtcclxuICBsZXQgZW5jcnlwdFZhbHVlID0gdmFsdWU7XHJcbiAgaWYgKGVuY3J5cHQgJiYgdHlwZW9mIGVuY3J5cHQgPT09IFwib2JqZWN0XCIpIHtcclxuICAgIGNvbnN0IHsgdHlwZSwga2V5IH0gPSBlbmNyeXB0O1xyXG4gICAgaWYgKHR5cGUgPT0gXCJzbTJcIikge1xyXG4gICAgICBlbmNyeXB0VmFsdWUgPSBrZXkgPyBzbTJFbmNyeXB0VmFsdWUodmFsdWUsIGtleSkgOiBzbTJFbmNyeXB0VmFsdWUodmFsdWUpO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlID09IFwic200XCIpIHtcclxuICAgICAgZW5jcnlwdFZhbHVlID0gc200RW5jcnlwdCh2YWx1ZSk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT0gXCJiYXNlNjRcIikge1xyXG4gICAgICBlbmNyeXB0VmFsdWUgPSBiYXNlNjRFbmNyeXB0KHZhbHVlKTtcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PSBcIm1kNVwiKSB7XHJcbiAgICAgIGVuY3J5cHRWYWx1ZSA9IG1kNUVuY3J5cHQodmFsdWUpO1xyXG4gICAgfVxyXG4gIH0gZWxzZSBpZiAoZW5jcnlwdCAmJiB0eXBlb2YgZW5jcnlwdCA9PT0gXCJib29sZWFuXCIpIHtcclxuICAgIGVuY3J5cHRWYWx1ZSA9IHNtMkVuY3J5cHRWYWx1ZSh2YWx1ZSk7XHJcbiAgfVxyXG4gIHJldHVybiBlbmNyeXB0VmFsdWU7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIGRlY3J5cHRWYWx1ZShkZWNyeXB0OiBlbmNyeXB0IHwgYm9vbGVhbiwgdmFsdWUpIHtcclxuICBsZXQgZGVjcnlwdFZhbHVlID0gdmFsdWU7XHJcbiAgaWYgKGRlY3J5cHQgJiYgdHlwZW9mIGRlY3J5cHQgPT09IFwib2JqZWN0XCIpIHtcclxuICAgIGNvbnN0IHsgdHlwZSwga2V5IH0gPSBkZWNyeXB0O1xyXG4gICAgaWYgKHR5cGUgPT0gXCJzbTJcIikge1xyXG4gICAgICBkZWNyeXB0VmFsdWUgPSBrZXkgPyBzbTJEZWNyeXB0VmFsdWUodmFsdWUsIGtleSkgOiBzbTJEZWNyeXB0VmFsdWUodmFsdWUpO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlID09IFwic200XCIpIHtcclxuICAgICAgZGVjcnlwdFZhbHVlID0gc200RGVjcnlwdCh2YWx1ZSk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT0gXCJiYXNlNjRcIikge1xyXG4gICAgICBkZWNyeXB0VmFsdWUgPSBiYXNlNjREZWNyeXB0KHZhbHVlKTtcclxuICAgIH1cclxuICB9IGVsc2UgaWYgKGRlY3J5cHQgJiYgdHlwZW9mIGRlY3J5cHQgPT09IFwiYm9vbGVhblwiKSB7XHJcbiAgICBkZWNyeXB0VmFsdWUgPSBzbTJEZWNyeXB0VmFsdWUodmFsdWUpO1xyXG4gIH1cclxuICByZXR1cm4gZGVjcnlwdFZhbHVlO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBjaGVja01vZGVsKGNoZWNrdHlwZSwgdmFsdWUpIHtcclxuICByZXR1cm4gY2hlY2tWYWx1ZSh2YWx1ZSwgY2hlY2t0eXBlKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldENhY2hlS2V5KHNvdHJlKSB7XHJcbiAgY29uc3QgeyB2aWV3bmFtZSwgcmVxdWVzdENvbmZpZywgdXJsIH0gPSBzb3RyZTtcclxuICBsZXQga2V5O1xyXG4gIGlmICh2aWV3bmFtZSkge1xyXG4gICAga2V5ID0gdmlld25hbWU7XHJcbiAgfSBlbHNlIHtcclxuICAgIGtleSA9IHJlcXVlc3RDb25maWcgPyB1cmwgKyBKU09OLnN0cmluZ2lmeShyZXF1ZXN0Q29uZmlnKSA6IHVybDtcclxuICB9XHJcbiAgcmV0dXJuIGtleTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrQ2hhcnModmFsdWU6IHN0cmluZykge1xyXG4gIGNvbnN0IHJlZyA9IC9eWzAtOWEtekEtWlxcdTRFMDAtXFx1OUZBNVxcdUY5MDAtXFx1RkEyRF0qJC87XHJcbiAgcmV0dXJuIHJlZy50ZXN0KHZhbHVlKTtcclxufVxyXG5cclxuLy8g6L2s5o2icHjliLB2d1xyXG5leHBvcnQgZnVuY3Rpb24gcHgydncocHhWYWx1ZTogbnVtYmVyLCBiYXNlVmFsdWU/OiBudW1iZXIpOiBzdHJpbmcge1xyXG4gIGNvbnN0IGJhc2VXaWR0aCA9IGJhc2VWYWx1ZSB8fCAxOTIwO1xyXG4gIHJldHVybiAoKHB4VmFsdWUgKiAxMDApIC8gYmFzZVdpZHRoKS50b0ZpeGVkKDQpICsgXCJ2d1wiO1xyXG59XHJcblxyXG4vL+iOt+WPlkljb25cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEljb24oaWNvbiwgZGVmYXVsdEljb24/OiBhbnkpIHtcclxuICBjb25zdCB7IGljb25QcmVmaXggfSA9IGdldENvbmZpZygpO1xyXG4gIGlmICghaXNFbXB0eShpY29uKSAmJiB0eXBlb2YgaWNvbiA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgY29uc3Qgc2hvd0ljb24gPSBpY29uLnN0YXJ0c1dpdGgoaWNvblByZWZpeCkgPyAoXHJcbiAgICAgIDxJY29uRm9udCB0eXBlPXtpY29ufSAvPlxyXG4gICAgKSA6IChcclxuICAgICAgPEFudEljb24gY29tcG9uZW50PXtpY29uc1tpY29uXX0gLz5cclxuICAgICk7XHJcbiAgICByZXR1cm4gc2hvd0ljb247XHJcbiAgfSBlbHNlIGlmIChkZWZhdWx0SWNvbikge1xyXG4gICAgcmV0dXJuIDxJY29uRm9udCB0eXBlPXtcImljb254aWFuZ211c2hlem9uZ2d1YW5saVwifSAvPjtcclxuICB9XHJcbiAgcmV0dXJuIGljb247XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIGdldE5vZGUodHlwZSwgcHJvcHMpIHtcclxuICBsZXQgRElWID0gPElucHV0IHsuLi5wcm9wc30gLz47XHJcbiAgaWYgKHR5cGUgPT0gXCJJbnB1dFwiKSB7XHJcbiAgICBESVYgPSA8SW5wdXQgey4uLnByb3BzfSAvPjtcclxuICB9IGVsc2UgaWYgKHR5cGUgPT0gXCJTZWxlY3RcIikge1xyXG4gICAgRElWID0gPFNlbGVjdCB7Li4ucHJvcHN9IC8+O1xyXG4gIH0gZWxzZSBpZiAodHlwZSA9PSBcIlJhZGlvXCIpIHtcclxuICAgIERJViA9IDxSYWRpby5Hcm91cCB7Li4ucHJvcHN9IC8+O1xyXG4gIH0gZWxzZSBpZiAodHlwZSA9PSBcIkNhc2NhZGVyXCIpIHtcclxuICAgIERJViA9IDxDYXNjYWRlciB7Li4ucHJvcHN9IC8+O1xyXG4gIH0gZWxzZSBpZiAodHlwZSA9PSBcIlBhc3N3b3JkXCIpIHtcclxuICAgIERJViA9IDxQYXNzd29yZCB7Li4ucHJvcHN9IC8+O1xyXG4gIH0gZWxzZSBpZiAodHlwZSA9PSBcIlRleHRBcmVhXCIpIHtcclxuICAgIERJViA9IDxUZXh0QXJlYSB7Li4ucHJvcHN9IC8+O1xyXG4gIH0gZWxzZSBpZiAodHlwZSA9PSBcIkNoZWNrYm94XCIpIHtcclxuICAgIERJViA9IDxDaGVja2JveC5Hcm91cCB7Li4ucHJvcHN9IC8+O1xyXG4gIH0gZWxzZSBpZiAodHlwZSA9PSBcIkRhdGVQaWNrZXJcIikge1xyXG4gICAgRElWID0gPERhdGVQaWNrZXIgey4uLnByb3BzfSAvPjtcclxuICB9IGVsc2UgaWYgKHR5cGUgPT0gXCJOdW1iZXJcIikge1xyXG4gICAgRElWID0gPElucHV0TnVtYmVyIHsuLi5wcm9wc30gLz47XHJcbiAgfSBlbHNlIGlmICh0eXBlID09IFwiVXBsb2FkXCIpIHtcclxuICAgIERJViA9IDxVcGxvYWQgey4uLnByb3BzfSAvPjtcclxuICB9IGVsc2UgaWYgKHR5cGUgPT0gXCJSYW5nZVBpY2tlclwiKSB7XHJcbiAgICBESVYgPSA8UmFuZ2VQaWNrZXIgey4uLnByb3BzfSAvPjtcclxuICB9XHJcbiAgaWYgKHR5cGUgPT0gXCJTd2l0Y2hcIikge1xyXG4gICAgRElWID0gPFN3aXRjaCB7Li4ucHJvcHN9IC8+O1xyXG4gIH1cclxuICByZXR1cm4gRElWO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZGVib3VuY2UoZm4sIG1zKSB7XHJcbiAgLy9mbjropoHpmLLmipbnmoTlh73mlbAgbXM65pe26Ze0XHJcbiAgbGV0IHRpbWVySWQ7IC8vIOWIm+W7uuS4gOS4quagh+iusOeUqOadpeWtmOaUvuWumuaXtuWZqOeahOi/lOWbnuWAvFxyXG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XHJcbiAgICB0aW1lcklkICYmIGNsZWFyVGltZW91dCh0aW1lcklkKTsgLy8g5q+P5b2T55So5oi36L6T5YWl55qE5pe25YCZ5oqK5YmN5LiA5LiqIHNldFRpbWVvdXQgY2xlYXIg5o6JXHJcbiAgICAvLyDnhLblkI7lj4jliJvlu7rkuIDkuKrmlrDnmoQgc2V0VGltZW91dCwg6L+Z5qC35bCx6IO95L+d6K+B6L6T5YWl5a2X56ym5ZCO55qEIGludGVydmFsIOmXtOmalOWGheWmguaenOi/mOacieWtl+espui+k+WFpeeahOivne+8jOWwseS4jeS8muaJp+ihjCBmbiDlh73mlbBcclxuICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxuICAgIH0sIG1zKTtcclxuICB9O1xyXG5cclxuICAvLyB2YXIgdGltZXIgPSBudWxsO1xyXG4gIC8vIHJldHVybiBmdW5jdGlvbiAoKSB7XHJcbiAgLy8gICB2YXIgYXJncyA9IGFyZ3VtZW50czsgLy/lj4LmlbDpm4blkIhcclxuICAvLyAgIGNvbnNvbGUubG9nKCdhcmdzJyxhcmdzKVxyXG4gIC8vICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcclxuICAvLyAgIHRpbWVyID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XHJcbiAgLy8gICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3MpO1xyXG4gIC8vICAgfSwgbXMpO1xyXG4gIC8vIH07XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIHRocm90dGxlKGZuLCBtcykge1xyXG4gIGxldCB0aW1lcklkOyAvLyDliJvlu7rkuIDkuKrmoIforrDnlKjmnaXlrZjmlL7lrprml7blmajnmoRpZFxyXG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XHJcbiAgICAvLyDmsqHmnInlrprml7blmajnrYnlvoXmiafooYzvvIzliJnooajnpLrlj6/ku6XliJvlu7rmlrDnmoTlrprml7blmajmnaXmiafooYzlh73mlbBcclxuICAgIGlmICghdGltZXJJZCkge1xyXG4gICAgICB0aW1lcklkID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgLy8g5a6a5pe25ZmoaWTmuIXnqbrvvIzooajnpLrlj6/ku6XmiafooYzkuIvkuIDmrKHosIPnlKjkuoZcclxuICAgICAgICB0aW1lcklkID0gbnVsbDtcclxuICAgICAgICBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG4gICAgICB9LCBtcyk7XHJcbiAgICB9XHJcbiAgfTtcclxufVxyXG5leHBvcnQgY29uc3QgZ2V0TGVzcyA9IChzdHlsZXM6IE9iamVjdCwgbmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgaWYgKGlzRW1wdHlPYmooc3R5bGVzKSkge1xyXG4gICAgcmV0dXJuIG5hbWU7XHJcbiAgfSBlbHNlIHtcclxuICAgIHJldHVybiBzdHlsZXNbbmFtZV07XHJcbiAgfVxyXG59O1xyXG5leHBvcnQgY29uc3QgY29udmVyRnVuY3Rpb24gPSAoZnVuYywgZXZlbnRPcHRpb24/OiBhbnksIFV0aWxzPzogYW55KSA9PiB7XHJcbiAgaWYgKHR5cGVvZiBmdW5jID09IFwic3RyaW5nXCIpIHtcclxuICAgIGNvbnN0IHNlbGZGdW5jID0gbmV3IEZ1bmN0aW9uKFwiZXZlbnRPcHRpb25cIiwgXCJVdGlsc1wiLCBmdW5jKTtcclxuICAgIHNlbGZGdW5jKGV2ZW50T3B0aW9uLCBVdGlscyk7XHJcbiAgfSBlbHNlIHtcclxuICAgIGZ1bmMoZXZlbnRPcHRpb24sIFV0aWxzKTtcclxuICB9XHJcbn07XHJcblxyXG4vLyDkv53nlZnljp/lr7nosaHkuK3miYDmnInigJzln7rnoYDnsbvlnovigJ3nmoTlrZfmrrVcclxuZXhwb3J0IGZ1bmN0aW9uIHNpbXBsaWZ5T2JqZWN0KG9iaikge1xyXG4gIGNvbnN0IHJlc3VsdCA9IHt9O1xyXG4gIGZvciAoY29uc3Qga2V5IGluIG9iaikge1xyXG4gICAgY29uc3QgdmFsID0gb2JqW2tleV07XHJcbiAgICBpZiAoXHJcbiAgICAgIHZhbCA9PT0gbnVsbCB8fFxyXG4gICAgICB0eXBlb2YgdmFsID09PSAnc3RyaW5nJyB8fFxyXG4gICAgICB0eXBlb2YgdmFsID09PSAnbnVtYmVyJyB8fFxyXG4gICAgICB0eXBlb2YgdmFsID09PSAnYm9vbGVhbidcclxuICAgICkge1xyXG4gICAgICByZXN1bHRba2V5XSA9IHZhbDtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuLy8g566A5YyW5pW05LiqIGNvbHVtbnMg5pWw57uEXHJcbmV4cG9ydCBmdW5jdGlvbiBzaW1wbGlmeUNvbHVtbnMoY29sdW1ucykge1xyXG4gIHJldHVybiBjb2x1bW5zLm1hcChjb2wgPT4gc2ltcGxpZnlPYmplY3QoY29sKSk7XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuICBlbmNyeXB0VmFsdWUsXHJcbiAgY2hlY2tNb2RlbCxcclxuICBkZWNyeXB0VmFsdWUsXHJcbiAgZ2V0Q2FjaGVLZXksXHJcbiAgY2hlY2tDaGFycyxcclxuICBweDJ2dyxcclxufTtcclxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FDRUEsZUFBZSxFQUNmQyxVQUFVLEVBQ1ZDLGFBQWEsRUFDYkMsVUFBVSxFQUNWQyxVQUFVLEVBQ1ZDLGVBQWUsRUFDZkMsVUFBVSxFQUNWQyxhQUFhLEVBQ2JDLFVBQVUsUUFDTCxtQkFBbUI7QUFFMUIsU0FBU0MsT0FBTyxRQUFRLFFBQVE7QUFDaEMsT0FBT0MsUUFBUSxNQUFNLHdCQUF3QjtBQUM3QyxPQUFPQyxLQUFLLE1BQU0sT0FBTztBQUN6QixTQUNFQyxLQUFLLEVBQ0xDLEtBQUssRUFDTEMsTUFBTSxFQUNOQyxRQUFRLEVBQ1JDLFFBQVEsRUFDUkMsVUFBVSxFQUNWQyxXQUFXLEVBQ1hDLE1BQU0sRUFDTkMsTUFBTSxRQUNELEdBQUc7QUFDVixPQUFPQyxRQUFRLE1BQU0sdUJBQXVCO0FBQzVDLE9BQU9DLFFBQVEsTUFBTSx1QkFBdUI7QUFDNUMsT0FBT0MsV0FBVyxNQUFNLHFCQUFxQjtBQUM3QztBQUNBLE9BQU9DLFNBQVMsTUFBTSxVQUFVO0FBQ2hDLE9BQU9DLE9BQU8sTUFBTSxtQkFBbUI7QUFDdkMsT0FBTyxLQUFLQyxLQUFLLE1BQU0sbUJBQW1CO0FBRTFDLE9BQU8sU0FBU0MsWUFBWUEsQ0FBQ0MsT0FBMEIsRUFBRUMsS0FBSyxFQUFFO0VBQzlELElBQUlGLFlBQVksR0FBR0UsS0FBSztFQUN4QixJQUFJRCxPQUFPLElBQUksT0FBT0EsT0FBTyxLQUFLLFFBQVEsRUFBRTtJQUMxQyxNQUFNO01BQUVFLElBQUk7TUFBRUM7SUFBSSxDQUFDLEdBQUdILE9BQU87SUFDN0IsSUFBSUUsSUFBSSxJQUFJLEtBQUssRUFBRTtNQUNqQkgsWUFBWSxHQUFHSSxHQUFHLEdBQUcvQixlQUFlLENBQUM2QixLQUFLLEVBQUVFLEdBQUcsQ0FBQyxHQUFHL0IsZUFBZSxDQUFDNkIsS0FBSyxDQUFDO0lBQzNFLENBQUMsTUFBTSxJQUFJQyxJQUFJLElBQUksS0FBSyxFQUFFO01BQ3hCSCxZQUFZLEdBQUcxQixVQUFVLENBQUM0QixLQUFLLENBQUM7SUFDbEMsQ0FBQyxNQUFNLElBQUlDLElBQUksSUFBSSxRQUFRLEVBQUU7TUFDM0JILFlBQVksR0FBR3pCLGFBQWEsQ0FBQzJCLEtBQUssQ0FBQztJQUNyQyxDQUFDLE1BQU0sSUFBSUMsSUFBSSxJQUFJLEtBQUssRUFBRTtNQUN4QkgsWUFBWSxHQUFHeEIsVUFBVSxDQUFDMEIsS0FBSyxDQUFDO0lBQ2xDO0VBQ0YsQ0FBQyxNQUFNLElBQUlELE9BQU8sSUFBSSxPQUFPQSxPQUFPLEtBQUssU0FBUyxFQUFFO0lBQ2xERCxZQUFZLEdBQUczQixlQUFlLENBQUM2QixLQUFLLENBQUM7RUFDdkM7RUFDQSxPQUFPRixZQUFZO0FBQ3JCO0FBQ0EsT0FBTyxTQUFTSyxZQUFZQSxDQUFDQyxPQUEwQixFQUFFSixLQUFLLEVBQUU7RUFDOUQsSUFBSUcsWUFBWSxHQUFHSCxLQUFLO0VBQ3hCLElBQUlJLE9BQU8sSUFBSSxPQUFPQSxPQUFPLEtBQUssUUFBUSxFQUFFO0lBQzFDLE1BQU07TUFBRUgsSUFBSTtNQUFFQztJQUFJLENBQUMsR0FBR0UsT0FBTztJQUM3QixJQUFJSCxJQUFJLElBQUksS0FBSyxFQUFFO01BQ2pCRSxZQUFZLEdBQUdELEdBQUcsR0FBRzFCLGVBQWUsQ0FBQ3dCLEtBQUssRUFBRUUsR0FBRyxDQUFDLEdBQUcxQixlQUFlLENBQUN3QixLQUFLLENBQUM7SUFDM0UsQ0FBQyxNQUFNLElBQUlDLElBQUksSUFBSSxLQUFLLEVBQUU7TUFDeEJFLFlBQVksR0FBRzFCLFVBQVUsQ0FBQ3VCLEtBQUssQ0FBQztJQUNsQyxDQUFDLE1BQU0sSUFBSUMsSUFBSSxJQUFJLFFBQVEsRUFBRTtNQUMzQkUsWUFBWSxHQUFHekIsYUFBYSxDQUFDc0IsS0FBSyxDQUFDO0lBQ3JDO0VBQ0YsQ0FBQyxNQUFNLElBQUlJLE9BQU8sSUFBSSxPQUFPQSxPQUFPLEtBQUssU0FBUyxFQUFFO0lBQ2xERCxZQUFZLEdBQUczQixlQUFlLENBQUN3QixLQUFLLENBQUM7RUFDdkM7RUFDQSxPQUFPRyxZQUFZO0FBQ3JCO0FBQ0EsT0FBTyxTQUFTRSxVQUFVQSxDQUFDQyxTQUFTLEVBQUVOLEtBQUssRUFBRTtFQUMzQyxPQUFPekIsVUFBVSxDQUFDeUIsS0FBSyxFQUFFTSxTQUFTLENBQUM7QUFDckM7QUFFQSxPQUFPLFNBQVNDLFdBQVdBLENBQUNDLEtBQUssRUFBRTtFQUNqQyxNQUFNO0lBQUVDLFFBQVE7SUFBRUMsYUFBYTtJQUFFQztFQUFJLENBQUMsR0FBR0gsS0FBSztFQUM5QyxJQUFJTixHQUFHO0VBQ1AsSUFBSU8sUUFBUSxFQUFFO0lBQ1pQLEdBQUcsR0FBR08sUUFBUTtFQUNoQixDQUFDLE1BQU07SUFDTFAsR0FBRyxHQUFHUSxhQUFhLEdBQUdDLEdBQUcsR0FBR0MsSUFBSSxDQUFDQyxTQUFTLENBQUNILGFBQWEsQ0FBQyxHQUFHQyxHQUFHO0VBQ2pFO0VBQ0EsT0FBT1QsR0FBRztBQUNaO0FBRUEsT0FBTyxTQUFTWSxVQUFVQSxDQUFDZCxLQUFhLEVBQUU7RUFDeEMsTUFBTWUsR0FBRyxHQUFHLDBDQUEwQztFQUN0RCxPQUFPQSxHQUFHLENBQUNDLElBQUksQ0FBQ2hCLEtBQUssQ0FBQztBQUN4Qjs7QUFFQTtBQUNBLE9BQU8sU0FBU2lCLEtBQUtBLENBQUNDLE9BQWUsRUFBRUMsU0FBa0IsRUFBVTtFQUNqRSxNQUFNQyxTQUFTLEdBQUdELFNBQVMsSUFBSSxJQUFJO0VBQ25DLE9BQU8sQ0FBRUQsT0FBTyxHQUFHLEdBQUcsR0FBSUUsU0FBUyxFQUFFQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSTtBQUN4RDs7QUFFQTtBQUNBLE9BQU8sU0FBU0MsT0FBT0EsQ0FBQ0MsSUFBSSxFQUFFQyxXQUFpQixFQUFFO0VBQy9DLE1BQU07SUFBRUM7RUFBVyxDQUFDLEdBQUc5QixTQUFTLENBQUMsQ0FBQztFQUNsQyxJQUFJLENBQUNmLE9BQU8sQ0FBQzJDLElBQUksQ0FBQyxJQUFJLE9BQU9BLElBQUksS0FBSyxRQUFRLEVBQUU7SUFDOUMsTUFBTUcsUUFBUSxHQUFHSCxJQUFJLENBQUNJLFVBQVUsQ0FBQ0YsVUFBVSxDQUFDLGdCQUMxQzNDLEtBQUEsQ0FBQThDLGFBQUEsQ0FBQy9DLFFBQVE7TUFBQ29CLElBQUksRUFBRXNCO0lBQUssQ0FBRSxDQUFDLGdCQUV4QnpDLEtBQUEsQ0FBQThDLGFBQUEsQ0FBQ2hDLE9BQU87TUFBQ2lDLFNBQVMsRUFBRWhDLEtBQUssQ0FBQzBCLElBQUk7SUFBRSxDQUFFLENBQ25DO0lBQ0QsT0FBT0csUUFBUTtFQUNqQixDQUFDLE1BQU0sSUFBSUYsV0FBVyxFQUFFO0lBQ3RCLG9CQUFPMUMsS0FBQSxDQUFBOEMsYUFBQSxDQUFDL0MsUUFBUTtNQUFDb0IsSUFBSSxFQUFFO0lBQTJCLENBQUUsQ0FBQztFQUN2RDtFQUNBLE9BQU9zQixJQUFJO0FBQ2I7QUFDQSxPQUFPLFNBQVNPLE9BQU9BLENBQUM3QixJQUFJLEVBQUU4QixLQUFLLEVBQUU7RUFDbkMsSUFBSUMsR0FBRyxnQkFBR2xELEtBQUEsQ0FBQThDLGFBQUEsQ0FBQzVDLEtBQUssRUFBSytDLEtBQVEsQ0FBQztFQUM5QixJQUFJOUIsSUFBSSxJQUFJLE9BQU8sRUFBRTtJQUNuQitCLEdBQUcsZ0JBQUdsRCxLQUFBLENBQUE4QyxhQUFBLENBQUM1QyxLQUFLLEVBQUsrQyxLQUFRLENBQUM7RUFDNUIsQ0FBQyxNQUFNLElBQUk5QixJQUFJLElBQUksUUFBUSxFQUFFO0lBQzNCK0IsR0FBRyxnQkFBR2xELEtBQUEsQ0FBQThDLGFBQUEsQ0FBQzNDLE1BQU0sRUFBSzhDLEtBQVEsQ0FBQztFQUM3QixDQUFDLE1BQU0sSUFBSTlCLElBQUksSUFBSSxPQUFPLEVBQUU7SUFDMUIrQixHQUFHLGdCQUFHbEQsS0FBQSxDQUFBOEMsYUFBQSxDQUFDN0MsS0FBSyxDQUFDa0QsS0FBSyxFQUFLRixLQUFRLENBQUM7RUFDbEMsQ0FBQyxNQUFNLElBQUk5QixJQUFJLElBQUksVUFBVSxFQUFFO0lBQzdCK0IsR0FBRyxnQkFBR2xELEtBQUEsQ0FBQThDLGFBQUEsQ0FBQzFDLFFBQVEsRUFBSzZDLEtBQVEsQ0FBQztFQUMvQixDQUFDLE1BQU0sSUFBSTlCLElBQUksSUFBSSxVQUFVLEVBQUU7SUFDN0IrQixHQUFHLGdCQUFHbEQsS0FBQSxDQUFBOEMsYUFBQSxDQUFDcEMsUUFBUSxFQUFLdUMsS0FBUSxDQUFDO0VBQy9CLENBQUMsTUFBTSxJQUFJOUIsSUFBSSxJQUFJLFVBQVUsRUFBRTtJQUM3QitCLEdBQUcsZ0JBQUdsRCxLQUFBLENBQUE4QyxhQUFBLENBQUNuQyxRQUFRLEVBQUtzQyxLQUFRLENBQUM7RUFDL0IsQ0FBQyxNQUFNLElBQUk5QixJQUFJLElBQUksVUFBVSxFQUFFO0lBQzdCK0IsR0FBRyxnQkFBR2xELEtBQUEsQ0FBQThDLGFBQUEsQ0FBQ3pDLFFBQVEsQ0FBQzhDLEtBQUssRUFBS0YsS0FBUSxDQUFDO0VBQ3JDLENBQUMsTUFBTSxJQUFJOUIsSUFBSSxJQUFJLFlBQVksRUFBRTtJQUMvQitCLEdBQUcsZ0JBQUdsRCxLQUFBLENBQUE4QyxhQUFBLENBQUN4QyxVQUFVLEVBQUsyQyxLQUFRLENBQUM7RUFDakMsQ0FBQyxNQUFNLElBQUk5QixJQUFJLElBQUksUUFBUSxFQUFFO0lBQzNCK0IsR0FBRyxnQkFBR2xELEtBQUEsQ0FBQThDLGFBQUEsQ0FBQ2xDLFdBQVcsRUFBS3FDLEtBQVEsQ0FBQztFQUNsQyxDQUFDLE1BQU0sSUFBSTlCLElBQUksSUFBSSxRQUFRLEVBQUU7SUFDM0IrQixHQUFHLGdCQUFHbEQsS0FBQSxDQUFBOEMsYUFBQSxDQUFDckMsTUFBTSxFQUFLd0MsS0FBUSxDQUFDO0VBQzdCLENBQUMsTUFBTSxJQUFJOUIsSUFBSSxJQUFJLGFBQWEsRUFBRTtJQUNoQytCLEdBQUcsZ0JBQUdsRCxLQUFBLENBQUE4QyxhQUFBLENBQUN2QyxXQUFXLEVBQUswQyxLQUFRLENBQUM7RUFDbEM7RUFDQSxJQUFJOUIsSUFBSSxJQUFJLFFBQVEsRUFBRTtJQUNwQitCLEdBQUcsZ0JBQUdsRCxLQUFBLENBQUE4QyxhQUFBLENBQUN0QyxNQUFNLEVBQUt5QyxLQUFRLENBQUM7RUFDN0I7RUFDQSxPQUFPQyxHQUFHO0FBQ1o7QUFFQSxPQUFPLFNBQVNFLFFBQVFBLENBQUNDLEVBQUUsRUFBRUMsRUFBRSxFQUFFO0VBQy9CO0VBQ0EsSUFBSUMsT0FBTyxDQUFDLENBQUM7RUFDYixPQUFPLFlBQVk7SUFDakJBLE9BQU8sSUFBSUMsWUFBWSxDQUFDRCxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ2xDO0lBQ0FBLE9BQU8sR0FBR0UsVUFBVSxDQUFDLE1BQU07TUFDekJKLEVBQUUsQ0FBQ0ssS0FBSyxDQUFDLElBQUksRUFBRUMsU0FBUyxDQUFDO0lBQzNCLENBQUMsRUFBRUwsRUFBRSxDQUFDO0VBQ1IsQ0FBQzs7RUFFRDtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDRjtBQUNBLE9BQU8sU0FBU00sUUFBUUEsQ0FBQ1AsRUFBRSxFQUFFQyxFQUFFLEVBQUU7RUFDL0IsSUFBSUMsT0FBTyxDQUFDLENBQUM7RUFDYixPQUFPLFlBQVk7SUFDakI7SUFDQSxJQUFJLENBQUNBLE9BQU8sRUFBRTtNQUNaQSxPQUFPLEdBQUdFLFVBQVUsQ0FBQyxNQUFNO1FBQ3pCO1FBQ0FGLE9BQU8sR0FBRyxJQUFJO1FBQ2RGLEVBQUUsQ0FBQ0ssS0FBSyxDQUFDLElBQUksRUFBRUMsU0FBUyxDQUFDO01BQzNCLENBQUMsRUFBRUwsRUFBRSxDQUFDO0lBQ1I7RUFDRixDQUFDO0FBQ0g7QUFDQSxPQUFPLE1BQU1PLE9BQU8sR0FBR0EsQ0FBQ0MsTUFBYyxFQUFFQyxJQUFZLEtBQUs7RUFDdkQsSUFBSWxFLFVBQVUsQ0FBQ2lFLE1BQU0sQ0FBQyxFQUFFO0lBQ3RCLE9BQU9DLElBQUk7RUFDYixDQUFDLE1BQU07SUFDTCxPQUFPRCxNQUFNLENBQUNDLElBQUksQ0FBQztFQUNyQjtBQUNGLENBQUM7QUFDRCxPQUFPLE1BQU1DLGNBQWMsR0FBR0EsQ0FBQ0MsSUFBSSxFQUFFQyxXQUFpQixFQUFFQyxLQUFXLEtBQUs7RUFDdEUsSUFBSSxPQUFPRixJQUFJLElBQUksUUFBUSxFQUFFO0lBQzNCLE1BQU1HLFFBQVEsR0FBRyxJQUFJQyxRQUFRLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRUosSUFBSSxDQUFDO0lBQzNERyxRQUFRLENBQUNGLFdBQVcsRUFBRUMsS0FBSyxDQUFDO0VBQzlCLENBQUMsTUFBTTtJQUNMRixJQUFJLENBQUNDLFdBQVcsRUFBRUMsS0FBSyxDQUFDO0VBQzFCO0FBQ0YsQ0FBQzs7QUFFRDtBQUNBLE9BQU8sU0FBU0csY0FBY0EsQ0FBQ0MsR0FBRyxFQUFFO0VBQ2xDLE1BQU1DLE1BQU0sR0FBRyxDQUFDLENBQUM7RUFDakIsS0FBSyxNQUFNcEQsR0FBRyxJQUFJbUQsR0FBRyxFQUFFO0lBQ3JCLE1BQU1FLEdBQUcsR0FBR0YsR0FBRyxDQUFDbkQsR0FBRyxDQUFDO0lBQ3BCLElBQ0VxRCxHQUFHLEtBQUssSUFBSSxJQUNaLE9BQU9BLEdBQUcsS0FBSyxRQUFRLElBQ3ZCLE9BQU9BLEdBQUcsS0FBSyxRQUFRLElBQ3ZCLE9BQU9BLEdBQUcsS0FBSyxTQUFTLEVBQ3hCO01BQ0FELE1BQU0sQ0FBQ3BELEdBQUcsQ0FBQyxHQUFHcUQsR0FBRztJQUNuQjtFQUNGO0VBQ0EsT0FBT0QsTUFBTTtBQUNmOztBQUVBO0FBQ0EsT0FBTyxTQUFTRSxlQUFlQSxDQUFDQyxPQUFPLEVBQUU7RUFDdkMsT0FBT0EsT0FBTyxDQUFDQyxHQUFHLENBQUNDLEdBQUcsSUFBSVAsY0FBYyxDQUFDTyxHQUFHLENBQUMsQ0FBQztBQUNoRDtBQUVBLGVBQWU7RUFDYjdELFlBQVk7RUFDWk8sVUFBVTtFQUNWRixZQUFZO0VBQ1pJLFdBQVc7RUFDWE8sVUFBVTtFQUNWRztBQUNGLENBQUMifQ==
|
|
252
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzbTJFbmNyeXB0VmFsdWUiLCJzbTRFbmNyeXB0IiwiYmFzZTY0RW5jcnlwdCIsIm1kNUVuY3J5cHQiLCJjaGVja1ZhbHVlIiwic20yRGVjcnlwdFZhbHVlIiwic200RGVjcnlwdCIsImJhc2U2NERlY3J5cHQiLCJpc0VtcHR5T2JqIiwiaXNFbXB0eSIsIkljb25Gb250IiwiUmVhY3QiLCJSYWRpbyIsIklucHV0IiwiU2VsZWN0IiwiQ2FzY2FkZXIiLCJDaGVja2JveCIsIkRhdGVQaWNrZXIiLCJSYW5nZVBpY2tlciIsIlN3aXRjaCIsIlVwbG9hZCIsIlBhc3N3b3JkIiwiVGV4dEFyZWEiLCJJbnB1dE51bWJlciIsImdldENvbmZpZyIsIkFudEljb24iLCJpY29ucyIsImxvZGFzaCIsImVuY3J5cHRWYWx1ZSIsImVuY3J5cHQiLCJ2YWx1ZSIsInR5cGUiLCJrZXkiLCJkZWNyeXB0VmFsdWUiLCJkZWNyeXB0IiwiY2hlY2tNb2RlbCIsImNoZWNrdHlwZSIsImdldENhY2hlS2V5Iiwic290cmUiLCJ2aWV3bmFtZSIsInJlcXVlc3RDb25maWciLCJ1cmwiLCJKU09OIiwic3RyaW5naWZ5IiwiY2hlY2tDaGFycyIsInJlZyIsInRlc3QiLCJweDJ2dyIsInB4VmFsdWUiLCJiYXNlVmFsdWUiLCJiYXNlV2lkdGgiLCJ0b0ZpeGVkIiwiZ2V0SWNvbiIsImljb24iLCJkZWZhdWx0SWNvbiIsImljb25QcmVmaXgiLCJzaG93SWNvbiIsInN0YXJ0c1dpdGgiLCJjcmVhdGVFbGVtZW50IiwiY29tcG9uZW50IiwiZ2V0Tm9kZSIsInByb3BzIiwiRElWIiwiR3JvdXAiLCJkZWJvdW5jZSIsImZuIiwibXMiLCJ0aW1lcklkIiwiY2xlYXJUaW1lb3V0Iiwic2V0VGltZW91dCIsImFwcGx5IiwiYXJndW1lbnRzIiwidGhyb3R0bGUiLCJnZXRMZXNzIiwic3R5bGVzIiwibmFtZSIsImNvbnZlckZ1bmN0aW9uIiwiZnVuYyIsImV2ZW50T3B0aW9uIiwiVXRpbHMiLCJzZWxmRnVuYyIsIkZ1bmN0aW9uIiwic2ltcGxpZnlPYmplY3QiLCJvYmoiLCJyZXN1bHQiLCJ2YWwiLCJzaW1wbGlmeUNvbHVtbnMiLCJjb2x1bW5zIiwibWFwIiwiY29sIiwiZGVlcE1lcmdlIiwibGVuZ3RoIiwiY2xvbmVEZWVwIiwidW5kZWZpbmVkIiwiaSIsInNvdXJjZSIsIk9iamVjdCIsImVudHJpZXMiLCJpc1BsYWluT2JqZWN0IiwiQXJyYXkiLCJpc0FycmF5Il0sInNvdXJjZXMiOlsiLi4vc3JjL2NvbXBvbmVudHMvdXRpbHMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIEBEZXNjcmlwdHRpb246XHJcbiAqIEB2ZXJzaW9uOlxyXG4gKiBAQXV0aG9yOiByeHpodVxyXG4gKiBARGF0ZTogMjAyMS0wNC0xMiAxNzozMjo1M1xyXG4gKiBATGFzdEVkaXRvcnM6IHJ4emh1XHJcbiAqIEBMYXN0RWRpdFRpbWU6IDIwMjEtMDQtMjIgMTc6MTQ6MDRcclxuICovXHJcbmltcG9ydCB7XHJcbiAgc20yRW5jcnlwdFZhbHVlLFxyXG4gIHNtNEVuY3J5cHQsXHJcbiAgYmFzZTY0RW5jcnlwdCxcclxuICBtZDVFbmNyeXB0LFxyXG4gIGNoZWNrVmFsdWUsXHJcbiAgc20yRGVjcnlwdFZhbHVlLFxyXG4gIHNtNERlY3J5cHQsXHJcbiAgYmFzZTY0RGVjcnlwdCxcclxuICBpc0VtcHR5T2JqLFxyXG59IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgeyBlbmNyeXB0IH0gZnJvbSBcIi4vSW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tIFwibG9kYXNoXCI7XHJcbmltcG9ydCBJY29uRm9udCBmcm9tIFwiLi9iYXNlL2NvbW1vbi9JY29uRm9udFwiO1xyXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7XHJcbiAgUmFkaW8sXHJcbiAgSW5wdXQsXHJcbiAgU2VsZWN0LFxyXG4gIENhc2NhZGVyLFxyXG4gIENoZWNrYm94LFxyXG4gIERhdGVQaWNrZXIsXHJcbiAgUmFuZ2VQaWNrZXIsXHJcbiAgU3dpdGNoLFxyXG4gIFVwbG9hZCxcclxufSBmcm9tIFwiLlwiO1xyXG5pbXBvcnQgUGFzc3dvcmQgZnJvbSBcIi4vYmFzZS9pbnB1dC9QYXNzd29yZFwiO1xyXG5pbXBvcnQgVGV4dEFyZWEgZnJvbSBcIi4vYmFzZS9pbnB1dC9UZXh0QXJlYVwiO1xyXG5pbXBvcnQgSW5wdXROdW1iZXIgZnJvbSBcIi4vYmFzZS9pbnB1dC9OdW1iZXJcIjtcclxuLy8gaW1wb3J0IHsgVXBsb2FkIH0gZnJvbSBcImFudGRcIjtcclxuaW1wb3J0IGdldENvbmZpZyBmcm9tIFwiLi9jb25maWdcIjtcclxuaW1wb3J0IEFudEljb24gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmltcG9ydCAqIGFzIGljb25zIGZyb20gXCJAYW50LWRlc2lnbi9pY29uc1wiO1xyXG5pbXBvcnQgbG9kYXNoIGZyb20gXCJsb2Rhc2hcIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBlbmNyeXB0VmFsdWUoZW5jcnlwdDogZW5jcnlwdCB8IGJvb2xlYW4sIHZhbHVlKSB7XHJcbiAgbGV0IGVuY3J5cHRWYWx1ZSA9IHZhbHVlO1xyXG4gIGlmIChlbmNyeXB0ICYmIHR5cGVvZiBlbmNyeXB0ID09PSBcIm9iamVjdFwiKSB7XHJcbiAgICBjb25zdCB7IHR5cGUsIGtleSB9ID0gZW5jcnlwdDtcclxuICAgIGlmICh0eXBlID09IFwic20yXCIpIHtcclxuICAgICAgZW5jcnlwdFZhbHVlID0ga2V5ID8gc20yRW5jcnlwdFZhbHVlKHZhbHVlLCBrZXkpIDogc20yRW5jcnlwdFZhbHVlKHZhbHVlKTtcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PSBcInNtNFwiKSB7XHJcbiAgICAgIGVuY3J5cHRWYWx1ZSA9IHNtNEVuY3J5cHQodmFsdWUpO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlID09IFwiYmFzZTY0XCIpIHtcclxuICAgICAgZW5jcnlwdFZhbHVlID0gYmFzZTY0RW5jcnlwdCh2YWx1ZSk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT0gXCJtZDVcIikge1xyXG4gICAgICBlbmNyeXB0VmFsdWUgPSBtZDVFbmNyeXB0KHZhbHVlKTtcclxuICAgIH1cclxuICB9IGVsc2UgaWYgKGVuY3J5cHQgJiYgdHlwZW9mIGVuY3J5cHQgPT09IFwiYm9vbGVhblwiKSB7XHJcbiAgICBlbmNyeXB0VmFsdWUgPSBzbTJFbmNyeXB0VmFsdWUodmFsdWUpO1xyXG4gIH1cclxuICByZXR1cm4gZW5jcnlwdFZhbHVlO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBkZWNyeXB0VmFsdWUoZGVjcnlwdDogZW5jcnlwdCB8IGJvb2xlYW4sIHZhbHVlKSB7XHJcbiAgbGV0IGRlY3J5cHRWYWx1ZSA9IHZhbHVlO1xyXG4gIGlmIChkZWNyeXB0ICYmIHR5cGVvZiBkZWNyeXB0ID09PSBcIm9iamVjdFwiKSB7XHJcbiAgICBjb25zdCB7IHR5cGUsIGtleSB9ID0gZGVjcnlwdDtcclxuICAgIGlmICh0eXBlID09IFwic20yXCIpIHtcclxuICAgICAgZGVjcnlwdFZhbHVlID0ga2V5ID8gc20yRGVjcnlwdFZhbHVlKHZhbHVlLCBrZXkpIDogc20yRGVjcnlwdFZhbHVlKHZhbHVlKTtcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PSBcInNtNFwiKSB7XHJcbiAgICAgIGRlY3J5cHRWYWx1ZSA9IHNtNERlY3J5cHQodmFsdWUpO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlID09IFwiYmFzZTY0XCIpIHtcclxuICAgICAgZGVjcnlwdFZhbHVlID0gYmFzZTY0RGVjcnlwdCh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgfSBlbHNlIGlmIChkZWNyeXB0ICYmIHR5cGVvZiBkZWNyeXB0ID09PSBcImJvb2xlYW5cIikge1xyXG4gICAgZGVjcnlwdFZhbHVlID0gc20yRGVjcnlwdFZhbHVlKHZhbHVlKTtcclxuICB9XHJcbiAgcmV0dXJuIGRlY3J5cHRWYWx1ZTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tNb2RlbChjaGVja3R5cGUsIHZhbHVlKSB7XHJcbiAgcmV0dXJuIGNoZWNrVmFsdWUodmFsdWUsIGNoZWNrdHlwZSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRDYWNoZUtleShzb3RyZSkge1xyXG4gIGNvbnN0IHsgdmlld25hbWUsIHJlcXVlc3RDb25maWcsIHVybCB9ID0gc290cmU7XHJcbiAgbGV0IGtleTtcclxuICBpZiAodmlld25hbWUpIHtcclxuICAgIGtleSA9IHZpZXduYW1lO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBrZXkgPSByZXF1ZXN0Q29uZmlnID8gdXJsICsgSlNPTi5zdHJpbmdpZnkocmVxdWVzdENvbmZpZykgOiB1cmw7XHJcbiAgfVxyXG4gIHJldHVybiBrZXk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjaGVja0NoYXJzKHZhbHVlOiBzdHJpbmcpIHtcclxuICBjb25zdCByZWcgPSAvXlswLTlhLXpBLVpcXHU0RTAwLVxcdTlGQTVcXHVGOTAwLVxcdUZBMkRdKiQvO1xyXG4gIHJldHVybiByZWcudGVzdCh2YWx1ZSk7XHJcbn1cclxuXHJcbi8vIOi9rOaNonB45YiwdndcclxuZXhwb3J0IGZ1bmN0aW9uIHB4MnZ3KHB4VmFsdWU6IG51bWJlciwgYmFzZVZhbHVlPzogbnVtYmVyKTogc3RyaW5nIHtcclxuICBjb25zdCBiYXNlV2lkdGggPSBiYXNlVmFsdWUgfHwgMTkyMDtcclxuICByZXR1cm4gKChweFZhbHVlICogMTAwKSAvIGJhc2VXaWR0aCkudG9GaXhlZCg0KSArIFwidndcIjtcclxufVxyXG5cclxuLy/ojrflj5ZJY29uXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRJY29uKGljb24sIGRlZmF1bHRJY29uPzogYW55KSB7XHJcbiAgY29uc3QgeyBpY29uUHJlZml4IH0gPSBnZXRDb25maWcoKTtcclxuICBpZiAoIWlzRW1wdHkoaWNvbikgJiYgdHlwZW9mIGljb24gPT09IFwic3RyaW5nXCIpIHtcclxuICAgIGNvbnN0IHNob3dJY29uID0gaWNvbi5zdGFydHNXaXRoKGljb25QcmVmaXgpID8gKFxyXG4gICAgICA8SWNvbkZvbnQgdHlwZT17aWNvbn0gLz5cclxuICAgICkgOiAoXHJcbiAgICAgIDxBbnRJY29uIGNvbXBvbmVudD17aWNvbnNbaWNvbl19IC8+XHJcbiAgICApO1xyXG4gICAgcmV0dXJuIHNob3dJY29uO1xyXG4gIH0gZWxzZSBpZiAoZGVmYXVsdEljb24pIHtcclxuICAgIHJldHVybiA8SWNvbkZvbnQgdHlwZT17XCJpY29ueGlhbmdtdXNoZXpvbmdndWFubGlcIn0gLz47XHJcbiAgfVxyXG4gIHJldHVybiBpY29uO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBnZXROb2RlKHR5cGUsIHByb3BzKSB7XHJcbiAgbGV0IERJViA9IDxJbnB1dCB7Li4ucHJvcHN9IC8+O1xyXG4gIGlmICh0eXBlID09IFwiSW5wdXRcIikge1xyXG4gICAgRElWID0gPElucHV0IHsuLi5wcm9wc30gLz47XHJcbiAgfSBlbHNlIGlmICh0eXBlID09IFwiU2VsZWN0XCIpIHtcclxuICAgIERJViA9IDxTZWxlY3Qgey4uLnByb3BzfSAvPjtcclxuICB9IGVsc2UgaWYgKHR5cGUgPT0gXCJSYWRpb1wiKSB7XHJcbiAgICBESVYgPSA8UmFkaW8uR3JvdXAgey4uLnByb3BzfSAvPjtcclxuICB9IGVsc2UgaWYgKHR5cGUgPT0gXCJDYXNjYWRlclwiKSB7XHJcbiAgICBESVYgPSA8Q2FzY2FkZXIgey4uLnByb3BzfSAvPjtcclxuICB9IGVsc2UgaWYgKHR5cGUgPT0gXCJQYXNzd29yZFwiKSB7XHJcbiAgICBESVYgPSA8UGFzc3dvcmQgey4uLnByb3BzfSAvPjtcclxuICB9IGVsc2UgaWYgKHR5cGUgPT0gXCJUZXh0QXJlYVwiKSB7XHJcbiAgICBESVYgPSA8VGV4dEFyZWEgey4uLnByb3BzfSAvPjtcclxuICB9IGVsc2UgaWYgKHR5cGUgPT0gXCJDaGVja2JveFwiKSB7XHJcbiAgICBESVYgPSA8Q2hlY2tib3guR3JvdXAgey4uLnByb3BzfSAvPjtcclxuICB9IGVsc2UgaWYgKHR5cGUgPT0gXCJEYXRlUGlja2VyXCIpIHtcclxuICAgIERJViA9IDxEYXRlUGlja2VyIHsuLi5wcm9wc30gLz47XHJcbiAgfSBlbHNlIGlmICh0eXBlID09IFwiTnVtYmVyXCIpIHtcclxuICAgIERJViA9IDxJbnB1dE51bWJlciB7Li4ucHJvcHN9IC8+O1xyXG4gIH0gZWxzZSBpZiAodHlwZSA9PSBcIlVwbG9hZFwiKSB7XHJcbiAgICBESVYgPSA8VXBsb2FkIHsuLi5wcm9wc30gLz47XHJcbiAgfSBlbHNlIGlmICh0eXBlID09IFwiUmFuZ2VQaWNrZXJcIikge1xyXG4gICAgRElWID0gPFJhbmdlUGlja2VyIHsuLi5wcm9wc30gLz47XHJcbiAgfVxyXG4gIGlmICh0eXBlID09IFwiU3dpdGNoXCIpIHtcclxuICAgIERJViA9IDxTd2l0Y2ggey4uLnByb3BzfSAvPjtcclxuICB9XHJcbiAgcmV0dXJuIERJVjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGRlYm91bmNlKGZuLCBtcykge1xyXG4gIC8vZm466KaB6Ziy5oqW55qE5Ye95pWwIG1zOuaXtumXtFxyXG4gIGxldCB0aW1lcklkOyAvLyDliJvlu7rkuIDkuKrmoIforrDnlKjmnaXlrZjmlL7lrprml7blmajnmoTov5Tlm57lgLxcclxuICByZXR1cm4gZnVuY3Rpb24gKCkge1xyXG4gICAgdGltZXJJZCAmJiBjbGVhclRpbWVvdXQodGltZXJJZCk7IC8vIOavj+W9k+eUqOaIt+i+k+WFpeeahOaXtuWAmeaKiuWJjeS4gOS4qiBzZXRUaW1lb3V0IGNsZWFyIOaOiVxyXG4gICAgLy8g54S25ZCO5Y+I5Yib5bu65LiA5Liq5paw55qEIHNldFRpbWVvdXQsIOi/meagt+WwseiDveS/neivgei+k+WFpeWtl+espuWQjueahCBpbnRlcnZhbCDpl7TpmpTlhoXlpoLmnpzov5jmnInlrZfnrKbovpPlhaXnmoTor53vvIzlsLHkuI3kvJrmiafooYwgZm4g5Ye95pWwXHJcbiAgICB0aW1lcklkID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XHJcbiAgICB9LCBtcyk7XHJcbiAgfTtcclxuXHJcbiAgLy8gdmFyIHRpbWVyID0gbnVsbDtcclxuICAvLyByZXR1cm4gZnVuY3Rpb24gKCkge1xyXG4gIC8vICAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7IC8v5Y+C5pWw6ZuG5ZCIXHJcbiAgLy8gICBjb25zb2xlLmxvZygnYXJncycsYXJncylcclxuICAvLyAgIGNsZWFyVGltZW91dCh0aW1lcik7XHJcbiAgLy8gICB0aW1lciA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xyXG4gIC8vICAgICBmbi5hcHBseSh0aGlzLCBhcmdzKTtcclxuICAvLyAgIH0sIG1zKTtcclxuICAvLyB9O1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiB0aHJvdHRsZShmbiwgbXMpIHtcclxuICBsZXQgdGltZXJJZDsgLy8g5Yib5bu65LiA5Liq5qCH6K6w55So5p2l5a2Y5pS+5a6a5pe25Zmo55qEaWRcclxuICByZXR1cm4gZnVuY3Rpb24gKCkge1xyXG4gICAgLy8g5rKh5pyJ5a6a5pe25Zmo562J5b6F5omn6KGM77yM5YiZ6KGo56S65Y+v5Lul5Yib5bu65paw55qE5a6a5pe25Zmo5p2l5omn6KGM5Ye95pWwXHJcbiAgICBpZiAoIXRpbWVySWQpIHtcclxuICAgICAgdGltZXJJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIC8vIOWumuaXtuWZqGlk5riF56m677yM6KGo56S65Y+v5Lul5omn6KGM5LiL5LiA5qyh6LCD55So5LqGXHJcbiAgICAgICAgdGltZXJJZCA9IG51bGw7XHJcbiAgICAgICAgZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxuICAgICAgfSwgbXMpO1xyXG4gICAgfVxyXG4gIH07XHJcbn1cclxuZXhwb3J0IGNvbnN0IGdldExlc3MgPSAoc3R5bGVzOiBPYmplY3QsIG5hbWU6IHN0cmluZykgPT4ge1xyXG4gIGlmIChpc0VtcHR5T2JqKHN0eWxlcykpIHtcclxuICAgIHJldHVybiBuYW1lO1xyXG4gIH0gZWxzZSB7XHJcbiAgICByZXR1cm4gc3R5bGVzW25hbWVdO1xyXG4gIH1cclxufTtcclxuZXhwb3J0IGNvbnN0IGNvbnZlckZ1bmN0aW9uID0gKGZ1bmMsIGV2ZW50T3B0aW9uPzogYW55LCBVdGlscz86IGFueSkgPT4ge1xyXG4gIGlmICh0eXBlb2YgZnVuYyA9PSBcInN0cmluZ1wiKSB7XHJcbiAgICBjb25zdCBzZWxmRnVuYyA9IG5ldyBGdW5jdGlvbihcImV2ZW50T3B0aW9uXCIsIFwiVXRpbHNcIiwgZnVuYyk7XHJcbiAgICBzZWxmRnVuYyhldmVudE9wdGlvbiwgVXRpbHMpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBmdW5jKGV2ZW50T3B0aW9uLCBVdGlscyk7XHJcbiAgfVxyXG59O1xyXG5cclxuLy8g5L+d55WZ5Y6f5a+56LGh5Lit5omA5pyJ4oCc5Z+656GA57G75Z6L4oCd55qE5a2X5q61XHJcbmV4cG9ydCBmdW5jdGlvbiBzaW1wbGlmeU9iamVjdChvYmopIHtcclxuICBjb25zdCByZXN1bHQgPSB7fTtcclxuICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcclxuICAgIGNvbnN0IHZhbCA9IG9ialtrZXldO1xyXG4gICAgaWYgKFxyXG4gICAgICB2YWwgPT09IG51bGwgfHxcclxuICAgICAgdHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgfHxcclxuICAgICAgdHlwZW9mIHZhbCA9PT0gJ251bWJlcicgfHxcclxuICAgICAgdHlwZW9mIHZhbCA9PT0gJ2Jvb2xlYW4nXHJcbiAgICApIHtcclxuICAgICAgcmVzdWx0W2tleV0gPSB2YWw7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbi8vIOeugOWMluaVtOS4qiBjb2x1bW5zIOaVsOe7hFxyXG5leHBvcnQgZnVuY3Rpb24gc2ltcGxpZnlDb2x1bW5zKGNvbHVtbnMpIHtcclxuICByZXR1cm4gY29sdW1ucy5tYXAoY29sID0+IHNpbXBsaWZ5T2JqZWN0KGNvbCkpO1xyXG59XHJcblxyXG4vL+Wvueixoea3seW6puWQiOW5tlxyXG4vLyBleHBvcnQgZnVuY3Rpb24gZGVlcE1lcmdlKC4uLnNvdXJjZXMpIHtcclxuLy8gICBpZiAoc291cmNlcy5sZW5ndGggPT09IDApIHJldHVybiB7fTtcclxuLy8gICBpZiAoc291cmNlcy5sZW5ndGggPT09IDEpIHJldHVybiBsb2Rhc2guY2xvbmVEZWVwKHNvdXJjZXNbMF0pO1xyXG4vLyAgIGNvbnN0IHJlc3VsdCA9IGxvZGFzaC5jbG9uZURlZXAoc291cmNlc1swXSk7XHJcbi8vICAgZm9yIChsZXQgaSA9IDE7IGkgPCBzb3VyY2VzLmxlbmd0aDsgaSsrKSB7XHJcbi8vICAgICBjb25zdCBzb3VyY2UgPSBzb3VyY2VzW2ldO1xyXG4vLyAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoc291cmNlKSkge1xyXG4vLyAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuLy8gICAgICAgICByZXN1bHRba2V5XSA9IGxvZGFzaC5jbG9uZURlZXAodmFsdWUpO1xyXG4vLyAgICAgICB9IGVsc2UgaWYgKGxvZGFzaC5pc1BsYWluT2JqZWN0KHZhbHVlKSAmJiBsb2Rhc2guaXNQbGFpbk9iamVjdChyZXN1bHRba2V5XSkpIHtcclxuLy8gICAgICAgICByZXN1bHRba2V5XSA9IGRlZXBNZXJnZShyZXN1bHRba2V5XSwgdmFsdWUpO1xyXG4vLyAgICAgICB9IGVsc2Uge1xyXG4vLyAgICAgICAgIHJlc3VsdFtrZXldID0gdmFsdWU7XHJcbi8vICAgICAgIH1cclxuLy8gICAgIH1cclxuLy8gICB9XHJcbiAgXHJcbi8vICAgcmV0dXJuIHJlc3VsdDtcclxuLy8gfVxyXG5leHBvcnQgZnVuY3Rpb24gZGVlcE1lcmdlKC4uLnNvdXJjZXMpIHtcclxuICBpZiAoc291cmNlcy5sZW5ndGggPT09IDApIHJldHVybiB7fTtcclxuICBpZiAoc291cmNlcy5sZW5ndGggPT09IDEpIHJldHVybiBsb2Rhc2guY2xvbmVEZWVwKHNvdXJjZXNbMF0pO1xyXG4gIGNvbnN0IHJlc3VsdCA9IGxvZGFzaC5jbG9uZURlZXAoc291cmNlc1swXSk7XHJcbiAgZm9yIChsZXQgaSA9IDE7IGkgPCBzb3VyY2VzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBjb25zdCBzb3VyY2UgPSBzb3VyY2VzW2ldO1xyXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoc291cmNlKSkge1xyXG4gICAgICBpZiAobG9kYXNoLmlzUGxhaW5PYmplY3QodmFsdWUpICYmIGxvZGFzaC5pc1BsYWluT2JqZWN0KHJlc3VsdFtrZXldKSkge1xyXG4gICAgICAgIHJlc3VsdFtrZXldID0gZGVlcE1lcmdlKHJlc3VsdFtrZXldLCB2YWx1ZSk7XHJcbiAgICAgIH0gXHJcbiAgICAgIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIEFycmF5LmlzQXJyYXkocmVzdWx0W2tleV0pKSB7ICBcclxuICAgICAgICByZXN1bHRba2V5XSA9IGxvZGFzaC5jbG9uZURlZXAodmFsdWUpO1xyXG4gICAgICB9IFxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICByZXN1bHRba2V5XSA9IGxvZGFzaC5jbG9uZURlZXAodmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG4gIHJldHVybiByZXN1bHQ7XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQge1xyXG4gIGVuY3J5cHRWYWx1ZSxcclxuICBjaGVja01vZGVsLFxyXG4gIGRlY3J5cHRWYWx1ZSxcclxuICBnZXRDYWNoZUtleSxcclxuICBjaGVja0NoYXJzLFxyXG4gIHB4MnZ3LFxyXG59O1xyXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUNFQSxlQUFlLEVBQ2ZDLFVBQVUsRUFDVkMsYUFBYSxFQUNiQyxVQUFVLEVBQ1ZDLFVBQVUsRUFDVkMsZUFBZSxFQUNmQyxVQUFVLEVBQ1ZDLGFBQWEsRUFDYkMsVUFBVSxR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
|