nsc-react-component 4.0.16 → 4.0.17

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.
@@ -940,6 +940,9 @@ class NSCTable extends React.Component {
940
940
  }, rowSelection)
941
941
  });
942
942
  }
943
+ const {
944
+ tableProps: configTableProps
945
+ } = config();
943
946
  const DefaultTable = /*#__PURE__*/React.createElement("div", {
944
947
  className: getLess(styles, "nsc-table")
945
948
  }, toolFlag && this.renderToolBar(), /*#__PURE__*/React.createElement(_Table, _extends({
@@ -957,7 +960,7 @@ class NSCTable extends React.Component {
957
960
  scroll: {
958
961
  x: "max-content"
959
962
  }
960
- }, resizeProps, props, dragableProps, {
963
+ }, configTableProps, resizeProps, props, dragableProps, {
961
964
  size: tableSize,
962
965
  pagination: false
963
966
  // style={{ height: 600 }}
@@ -1004,4 +1007,4 @@ _defineProperty(NSCTable, "defaultProps", {
1004
1007
  }
1005
1008
  });
1006
1009
  export default withZhLocale(NSCTable);
1007
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBcHBzdG9yZU91dGxpbmVkIiwiQ2hlY2tPdXRsaW5lZCIsIkNvbHVtbkhlaWdodE91dGxpbmVkIiwiU2VhcmNoT3V0bGluZWQiLCJTb3J0QXNjZW5kaW5nT3V0bGluZWQiLCJTb3J0RGVzY2VuZGluZ091dGxpbmVkIiwiUmVkb091dGxpbmVkIiwiaXNFbXB0eU9iaiIsIlN0b3JlIiwiUGFnZVN0b3JlIiwidXRpbHMiLCJSZWFjdCIsIkRuZFByb3ZpZGVyIiwiQm9keVJvdyIsIkRuZENvbnRleHRUeXBlIiwiSUJvZHlSb3dQcm9wcyIsInRyZWVVdGlscyIsIkJvZHlSb3dDb21wb25lbnQiLCJIVE1MNUJhY2tlbmQiLCJ3aXRoWmhMb2NhbGUiLCJSZXNpemFibGUiLCJnZXRMZXNzIiwiZ2V0Tm9kZSIsIk5vRGF0YSIsImdldFN0b3JhZ2UiLCJjb25maWciLCJjbHMiLCJzdHlsZXMiLCJSZXNpemVhYmxlVGl0bGUiLCJwcm9wcyIsIm9uUmVzaXplIiwid2lkdGgiLCJyZXN0UHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJjcmVhdGVFbGVtZW50IiwiaGVpZ2h0IiwiZHJhZ2dhYmxlT3B0cyIsImVuYWJsZVVzZXJTZWxlY3RIYWNrIiwiTlNDVGFibGUiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsIl9hdXRvVHlwZSIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsIm9uQmVmb3JlTG9hZCIsImxvYWQiLCJoZWFkZXIiLCJjZWxsIiwiaW5kZXgiLCJlIiwiX3JlZiIsInNpemUiLCJjb2xzIiwic3RhdGUiLCJuZXh0Q29sdW1ucyIsIl9vYmplY3RTcHJlYWQiLCJzZXRTdGF0ZSIsImV2IiwiZGF0YSIsIkpTT04iLCJwYXJzZSIsIl90aGlzIiwiZXZlbnRUeXBlIiwicGF5bG9hZCIsInRhYmxlU2l6ZSIsImRyYWdJbmRleCIsImhvdmVySW5kZXgiLCJkcmFnIiwidGFyZ2V0IiwiZHJhZ05vZGUiLCJyZWNvcmQiLCJ0YXJnZXROb2RlIiwibW92ZUFycmF5IiwiaWRzIiwicGFyZW50Tm9kZSIsImdldENoaWxkTm9kZUlkcyIsInBhcmFtcyIsImlkIiwicGFyZW50SWQiLCJhdHRyaWJ1dGUiLCJtb3ZlUm93Iiwic3RvcmUiLCJyZWxvYWQiLCJtb2RhbCIsInR5cGUiLCJzdG9yZVByZWZpeCIsImF1dG9UeXBlIiwiY29udGVudCIsImRhdGFTb3VyY2UiLCJjb2x1bW5zIiwibG9hZGluZyIsInBhZ2luYXRpb24iLCJhY3RpdmVJbmRleCIsInNlYXJjaFRleHQiLCJmaWVsZE9wdGlvbiIsInNlYXJjaENvbG9yIiwic29ydHMiLCJmaWx0ZXJQYXJhbXMiLCJzb3J0VHlwZSIsInNvcnRlciIsInNvcnRJbmZvIiwiZGVmYXVsdFNvcnQiLCJjaGVja0NvbHVtbiIsImRlZmF1bHRDaGVjayIsInNlbGVjdGVkUm93S2V5cyIsInNlbGVjdGVkUm93RGF0YXMiLCJmaWx0ZXIiLCJleHRyYSIsIl9yZWYyIiwibGlzdGVuZXJzIiwibGlzdGVuZXJzUHJvcHMiLCJyZXN0U3RvcmUiLCJfZXhjbHVkZWQyIiwic3RvcmVQcm9wcyIsIm1vZGVsIiwiY29tcG9uZW50Iiwib3B0aW9ucyIsImNhbGxiYWNrIiwiZGF0YUNoYW5nZWQiLCJtb2RlbERhdGEiLCJwYWdpbmciLCJnZXRQYWdpbmF0aW9uIiwib25FcnJvckxvYWQiLCJlcnIiLCJyZXNwb25zZSIsImF1dG9Mb2FkIiwiT2JqZWN0IiwiYXNzaWduIiwiY3VycmVudCIsImNvbXBvbmVudERpZE1vdW50IiwicmVzaXplQ29sdW1uIiwic2V0RGF0YSIsIndpbmRvdyIsImFkZEV2ZW50TGlzdGVuZXIiLCJsaXN0ZW5NZXNzYWdlIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiY29tcG9uZW50RGlkVXBkYXRlIiwicHJldlByb3BzIiwicHJlU3RhdGUiLCJyZXNldENvbHVtbiIsIm5ld0NvbHMiLCJjb2xzcyIsIm1hcCIsImNvbCIsInRlbXAiLCJvbkhlYWRlckNlbGwiLCJjb2x1bW4iLCJoYW5kbGVSZXNpemUiLCJwdXNoIiwiY2xlYXJTZWxlY3RDb2xvciIsImdldFBhZ2luYXRpb25CeVN0b3JlIiwib25DaGFuZ2UiLCJmaWx0ZXJzIiwiYXV0b09uQ2hhbmdlIiwiYXV0b1NvcnQiLCJhdXRvUGFnaW5hdGlvbiIsImlzTXVsdGlwbGUiLCJBcnJheSIsImlzQXJyYXkiLCJoYW5kbGVQYWdpbmF0aW9uIiwicCIsImN1cnJlbnRLZXkiLCJwYWdlU2l6ZUtleSIsInBhZ2VTaXplIiwiYXNjUGFyYW1zIiwiZ2V0U29ydFBhcmFtIiwib25DaGFuZ2VGbiIsImdldFN0b3JlIiwiZ2V0TW9kZWwiLCJoYW5kbGVTZWFyY2giLCJ2YWwiLCJmaWx0ZXJDb2x1bW4iLCJjaGVja2VkVmFsdWUiLCJsZW5ndGgiLCJfbWVzc2FnZSIsIndhcm5pbmciLCJmaWx0ZXJDb2x1bW5zIiwibmV3Q29sIiwiaW5jbHVkZXMiLCJkYXRhSW5kZXgiLCJpbml0U2hvdyIsInNvcnRTdGF0ZSIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsInNvcnRTZWFyY2giLCJvcmRlckl0ZW1zIiwiZmllbGQiLCJhc2MiLCJvcmRlciIsImZvckVhY2giLCJ2Iiwic3RyaW5naWZ5IiwiaXNCZXlvbmQiLCJldmVudCIsInRleHRSYW5nZSIsImVsIiwidGV4dENvbnRlbnQiLCJ0YXJnZXRXIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwicmFuZ2UiLCJkb2N1bWVudCIsImNyZWF0ZVJhbmdlIiwic2V0U3RhcnQiLCJzZXRFbmQiLCJjaGlsZE5vZGVzIiwicmFuZ2VXaWR0aCIsInNldFNlbGVjdGVkUm93S2V5cyIsInNldFNlbGVjdGVkUm93RGF0YXMiLCJnZXRDb2x1bW5zIiwic29ydEZpZWxkcyIsImRlZmF1bHRTaG93Q29scyIsImVsbGlwc2lzIiwicmVuZGVyIiwic2hvd1RpdGxlIiwidGV4dCIsInN0eWxlIiwiZGlzcGxheSIsInRpdGxlIiwiY2xhc3NOYW1lIiwiaW5kZXhPZiIsInNvcnRPcmRlciIsIm11bHRpcGxlIiwiaXRlbSIsImZpbHRlclByb3BzIiwib2JqIiwic2VhcmNoS2V5IiwiRGl2IiwicGxhY2Vob2xkZXIiLCJjb25jYXQiLCJyZWYiLCJ0YWJsZVNlYXJjaFJlZiIsImZpbHRlckRyb3Bkb3duIiwiX3JlZjMiLCJzZXRTZWxlY3RlZEtleXMiLCJzZWxlY3RlZEtleXMiLCJjb25maXJtIiwiY2xlYXJGaWx0ZXJzIiwiX1NwYWNlIiwiX0J1dHRvbiIsIm9uQ2xpY2siLCJfdGhpcyR0YWJsZVNlYXJjaFJlZiQiLCJuZXdGaWx0ZXJQYXJhbXMiLCJrZXkiLCJnZXRWYWx1ZSIsInNvcnRQYXJhbSIsImZpbHRlckljb24iLCJyZW5kZXJUb29sQmFyIiwiY29sTGlzdHMiLCJ0b29sYmFyIiwidGFibGVUb29sIiwic3RvcmVSZXF1ZXN0Q29uZmlnIiwidG9vbHMiLCJ0b29sc0NsaWNrIiwib25Ub29sQ2xpY2siLCJzaXplSXRlbSIsInNvcnRJdGVtIiwic29ydENvbnRlbnQiLCJGcmFnbWVudCIsImN1cnNvciIsImNvbG9yIiwic2l6ZUNvbnRlbnQiLCJfQ2hlY2tib3giLCJHcm91cCIsImJpbmQiLCJsYWJlbCIsInZhbHVlIiwiZGlzYWJsZWQiLCJmb250U2l6ZSIsIl9Qb3BvdmVyIiwicGxhY2VtZW50IiwidHJpZ2dlciIsIm92ZXJsYXlTdHlsZSIsIm1pbldpZHRoIiwibWF4V2lkdGgiLCJtYXJnaW5SaWdodCIsIm9uUmVmcmVzaCIsImdldFNlbGVjdGVkUm93S2V5cyIsImdldFNlbGVjdGVkUm93RGF0YXMiLCJyZXNldFNlbGVjdGVkUm93S2V5cyIsInJvd1NlbGVjdGlvbk9uU2VsZWN0Iiwic2VsZWN0ZWQiLCJyb3dLZXkiLCJuZXdTZWxlY3RlZFJvd0tleXMiLCJuZXdTZWxlY3RlZFJvd0RhdGFzIiwic3BsaWNlIiwicm93U2VsZWN0aW9uT25TZWxlY3RBbGwiLCJzZWxlY3RlZFJvd3MiLCJjaGFuZ2VSb3dzIiwibmV3aWRzIiwibmV3ZGF0YXMiLCJjaGFuZ2VJZHMiLCJfdGhpcyRwcm9wcyR0b29sYmFyIiwib21pdCIsImNsaWNrQ2hhbmdlQ29sb3IiLCJwb3NpdGlvbiIsInNob3dTaXplQ2hhbmdlciIsInNob3dRdWlja0p1bXBlciIsInNob3dUb3RhbCIsInRvdGFsIiwiX3JlZjQiLCJmcm9tIiwidG8iLCJvblJvd0ZuIiwib25Sb3ciLCJjdXN0b20iLCJvbkNsaWNrRm4iLCJyb3dDbGFzc05hbWUiLCJuZXdEYXRhU291cmNlIiwiZ2V0U2VhcmNoTWVudURhdGFzIiwidHJlZURhdGFzIiwiZXhwYW5kZWRSb3dLZXlzIiwib3BlbktleXMiLCJkcmFnYWJsZSIsImRyYWdhYmxlUHJvcHMiLCJjb21wb25lbnRzIiwicmVzaXplUHJvcHMiLCJ0b29sRmxhZyIsInRvb2xwcm9wcyIsInNob3ciLCJzaG93Um93U2VsZWN0aW9uIiwicm93U2VsZWN0aW9uIiwib25TZWxlY3QiLCJvblNlbGVjdEFsbCIsImNvbHVtbldpZHRoIiwiRGVmYXVsdFRhYmxlIiwiX1RhYmxlIiwiX2V4dGVuZHMiLCJjaGlsZHJlbkNvbHVtbk5hbWUiLCJzaGVpdGVtIiwibG9jYWxlIiwiZW1wdHlUZXh0Iiwic2Nyb2xsIiwieCIsIl9QYWdpbmF0aW9uIiwicGFnZSIsImFjdGlvbiIsIl9yZWY1IiwiYmFja2VuZCIsImRyYWdVcmwiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9iYXNlL3RhYmxlL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBARGVzY3JpcHR0aW9uOlxyXG4gKiBAdmVyc2lvbjpcclxuICogQEF1dGhvcjogcnh6aHVcclxuICogQERhdGU6IDIwMjEtMDMtMjMgMDg6NDY6MjBcclxuICogQExhc3RFZGl0b3JzOiByeHpodVxyXG4gKiBATGFzdEVkaXRUaW1lOiAyMDIxLTAzLTIzIDEwOjMwOjQyXHJcbiAqL1xyXG5pbXBvcnQge1xyXG4gIEFwcHN0b3JlT3V0bGluZWQsXHJcbiAgQ2hlY2tPdXRsaW5lZCxcclxuICBDb2x1bW5IZWlnaHRPdXRsaW5lZCxcclxuICBTZWFyY2hPdXRsaW5lZCxcclxuICBTb3J0QXNjZW5kaW5nT3V0bGluZWQsXHJcbiAgU29ydERlc2NlbmRpbmdPdXRsaW5lZCxcclxuICBSZWRvT3V0bGluZWQsXHJcbn0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmltcG9ydCB7IGlzRW1wdHlPYmogfSBmcm9tIFwiQGJqLW5zYy9mdW5jdGlvbnNcIjtcclxuaW1wb3J0IFN0b3JlLCB7IFBhZ2VTdG9yZSwgU3RvcmVQcm9wcyB9IGZyb20gXCJAYmotbnNjL21zblwiO1xyXG5pbXBvcnQgeyB1dGlscyB9IGZyb20gXCJAYmotbnNjL21zbi9saWIvdXRpbHNcIjtcclxuaW1wb3J0IHtcclxuICBCdXR0b24sXHJcbiAgQ2hlY2tib3gsXHJcbiAgQ2hlY2tib3hPcHRpb25UeXBlLFxyXG4gIE1lbnUsXHJcbiAgbWVzc2FnZSxcclxuICBQYWdpbmF0aW9uLFxyXG4gIFBvcG92ZXIsXHJcbiAgU3BhY2UsXHJcbiAgVGFibGUsXHJcbiAgVGFibGVQcm9wcyxcclxuICBUb29sdGlwLFxyXG59IGZyb20gXCJhbnRkXCI7XHJcbmltcG9ydCB7IENvbHVtblR5cGUsIFRhYmxlUGFnaW5hdGlvbkNvbmZpZyB9IGZyb20gXCJhbnRkL2xpYi90YWJsZVwiO1xyXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgRG5kUHJvdmlkZXIgfSBmcm9tIFwicmVhY3QtZG5kXCI7XHJcbmltcG9ydCBCb2R5Um93LCB7IERuZENvbnRleHRUeXBlLCBJQm9keVJvd1Byb3BzIH0gZnJvbSBcIi4uL2NvbW1vbi9Cb2R5Um93XCI7XHJcbmltcG9ydCB0cmVlVXRpbHMgZnJvbSBcIi4uLy4uL3RyZWVVdGlsc1wiO1xyXG5pbXBvcnQgXCIuL2luZGV4Lm1vZHVsZS5sZXNzXCI7XHJcbmNvbnN0IHsgQm9keVJvd0NvbXBvbmVudCwgSFRNTDVCYWNrZW5kIH0gPSBCb2R5Um93O1xyXG5pbXBvcnQgd2l0aFpoTG9jYWxlIGZyb20gXCIuLi9jb21tb24vd2l0aFpoTG9jYWxlXCI7XHJcbmltcG9ydCB7IFJlc2l6YWJsZSB9IGZyb20gXCJyZWFjdC1yZXNpemFibGVcIjtcclxuaW1wb3J0IFwiLi9yZXNpemUubW9kdWxlLmxlc3NcIjtcclxuaW1wb3J0IHsgZ2V0TGVzcywgZ2V0Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgTm9EYXRhIGZyb20gXCIuLi8uLi9iYXNlL2NvbW1vbi9Ob0RhdGFcIjtcclxuaW1wb3J0IHsgZ2V0U3RvcmFnZSB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgY29uZmlnIGZyb20gXCIuLi8uLi9jb25maWdcIjtcclxuaW1wb3J0IEVsbGlwc2VDZWxsIGZyb20gXCIuLi9jb21tb24vRWxsaXBzZUNlbGxcIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5jb25zdCBzdHlsZXMgPSBudWxsO1xyXG5pbnRlcmZhY2UgSURyYWdQYXJhbXMge1xyXG4gIGlkOiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgaWRzOiBBcnJheTxzdHJpbmcgfCBudW1iZXI+O1xyXG4gIHBhcmVudElkOiBzdHJpbmcgfCBudW1iZXI7XHJcbn1cclxuLy8gaW50ZXJmYWNlIFN0b3JlUHJvcHMge31cclxuXHJcbmV4cG9ydCB0eXBlIFN0b3JlVHlwZSA9IFwiUGFnZVN0b3JlXCIgfCBcIlRyZWVTdG9yZVwiIHwgXCJCYXNlU3RvcmVcIjtcclxuXHJcbmludGVyZmFjZSBOU0NUYWJsZVBhZ2luYXRpb24gZXh0ZW5kcyBUYWJsZVBhZ2luYXRpb25Db25maWcge1xyXG4gIHRvdGFsS2V5Pzogc3RyaW5nO1xyXG4gIHBhZ2VTaXplS2V5Pzogc3RyaW5nO1xyXG4gIGN1cnJlbnRLZXk/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmludGVyZmFjZSBUb29sQmFyUHJvcHMge1xyXG4gIHNob3c6IGJvb2xlYW47XHJcbiAgdG9vbHM/OiBBcnJheTxzdHJpbmc+O1xyXG4gIG9uVG9vbENsaWNrPzogeyBvblJlZnJlc2g/OiBhbnk7IG9uU29ydD86IGFueSB9O1xyXG59XHJcbmludGVyZmFjZSBOU0NUYWJsZVByb3BzIGV4dGVuZHMgVGFibGVQcm9wczxhbnk+IHtcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgc2hvd1RvdGFsPzogYm9vbGVhbjsgLy8g5piv5ZCm5pi+56S65oC75p2h5pWw5L+h5oGv77yM6buY6K6kdHJ1ZVxyXG4gIGRyYWdhYmxlPzogYm9vbGVhbjsgLy8g5piv5ZCm5Y+v5ouW5YqoLCDpu5jorqRmYWxzZVxyXG4gIGZpbHRlckNvbHVtbj86IGJvb2xlYW47IC8vIOaYr+WQpuaUr+aMgei/h+a7pOaYvuekuuihqOagvOWIlywg6buY6K6kdHJ1ZVxyXG4gIG1vdmVSb3c/OiAocGFyYW1zOiBJRHJhZ1BhcmFtcykgPT4gdm9pZDsgLy8g5ouW5ou95a6M5oiQ5ZCO55qE5Zue6LCDXHJcbiAgZHJhZ1VybD86IHN0cmluZzsgLy8g5L+d5a2Y5ouW5ou95o6S5bqP55qE5o6l5Y+jXHJcbiAgcGFnaW5hdGlvbj86IGZhbHNlIHwgTlNDVGFibGVQYWdpbmF0aW9uO1xyXG4gIGF1dG9QYWdpbmF0aW9uPzogYm9vbGVhbjsgLy8g57uE5Lu25piv5ZCm6Ieq5Yqo5aSE55CG5YiG6aG1XHJcbiAgYXV0b1NvcnQ/OiBib29sZWFuOyAvL+e7hOS7tuaYr+WQpuiHquWKqOWkhOeQhuaOkuW6j1xyXG4gIGF1dG9PbkNoYW5nZT86IGJvb2xlYW47IC8vIOe7hOS7tuaYr+WQpuiHquWKqG9uQ2hhbmdlLCBmYWxzZeWImeS4jeWBmuS7u+S9leWkhOeQhuWFqOmDqOS6pOe7meiwg+eUqOaWuVxyXG4gIHJlc2l6ZUNvbHVtbj86IGJvb2xlYW47XHJcbiAgc29ydEZpZWxkcz86IEFycmF5PHN0cmluZz47IC8v6ZyA6KaB5o6S5bqP55qE5a2X5q61SW5kZXhcclxuICB0b29sYmFyPzogVG9vbEJhclByb3BzIHwgYm9vbGVhbjtcclxuICBhdXRvU2l6ZT86IGJvb2xlYW47XHJcbiAgc29ydFNlYXJjaD86IGJvb2xlYW47IC8v5piv5ZCm5re75Yqg5o6S5bqP5p+l6K+iLOm7mOiupHRydWVcclxuICBzaG93Um93U2VsZWN0aW9uPzogYm9vbGVhbjtcclxuICByb3dLZXk/OiBzdHJpbmc7XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBJTlNDVGFibGVQcm9wcyA9IHR5cGVvZiBOU0NUYWJsZS5kZWZhdWx0UHJvcHMgJiBOU0NUYWJsZVByb3BzO1xyXG5leHBvcnQgeyBEbmRDb250ZXh0VHlwZSwgSUJvZHlSb3dQcm9wcyB9O1xyXG5cclxuY29uc3QgUmVzaXplYWJsZVRpdGxlID0gKHByb3BzOiBhbnkpID0+IHtcclxuICBjb25zdCB7IG9uUmVzaXplLCB3aWR0aCwgLi4ucmVzdFByb3BzIH0gPSBwcm9wcztcclxuICByZXR1cm4gKFxyXG4gICAgPFJlc2l6YWJsZVxyXG4gICAgICB3aWR0aD17d2lkdGggfHwgMTUwfVxyXG4gICAgICBoZWlnaHQ9ezB9XHJcbiAgICAgIG9uUmVzaXplPXtvblJlc2l6ZX1cclxuICAgICAgZHJhZ2dhYmxlT3B0cz17eyBlbmFibGVVc2VyU2VsZWN0SGFjazogZmFsc2UgfX1cclxuICAgID5cclxuICAgICAgPHRoIHsuLi5yZXN0UHJvcHN9IC8+XHJcbiAgICA8L1Jlc2l6YWJsZT5cclxuICApO1xyXG59O1xyXG5jbGFzcyBOU0NUYWJsZSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxJTlNDVGFibGVQcm9wcywgYW55PiB7XHJcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcclxuICAgIGRyYWdhYmxlOiBmYWxzZSxcclxuICAgIHNob3dUb3RhbDogdHJ1ZSxcclxuICAgIGZpbHRlckNvbHVtbjogdHJ1ZSxcclxuICAgIGRyYWdVcmw6IFwiXCIsXHJcbiAgICBhdXRvUGFnaW5hdGlvbjogdHJ1ZSxcclxuICAgIGF1dG9Tb3J0OiB0cnVlLFxyXG4gICAgYXV0b09uQ2hhbmdlOiB0cnVlLFxyXG4gICAgcmVzaXplQ29sdW1uOiB0cnVlLFxyXG4gICAgdG9vbGJhcjoge1xyXG4gICAgICBzaG93OiB0cnVlLFxyXG4gICAgICBvblRvb2xDbGljazoge30gYXMgYW55LFxyXG4gICAgfSBhcyBhbnksXHJcbiAgfTtcclxuXHJcbiAgc3RvcmUgPSB7fSBhcyBTdG9yZVByb3BzO1xyXG4gIHRoSWNvblJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxIVE1MRGl2RWxlbWVudD4oKTtcclxuICB0YWJsZVNlYXJjaFJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcblxyXG4gIGxpc3RlbmVycyA9IHtcclxuICAgIG9uQmVmb3JlTG9hZDogbnVsbCxcclxuICAgIGxvYWQ6IG51bGwsXHJcbiAgfTtcclxuXHJcbiAgY29tcG9uZW50cyA9IHtcclxuICAgIGhlYWRlcjoge1xyXG4gICAgICBjZWxsOiBSZXNpemVhYmxlVGl0bGUsXHJcbiAgICB9LFxyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgICBsZXQgbW9kYWwgPSBwcm9wcy50eXBlIHx8IFwiYXV0b1wiO1xyXG4gICAgbGV0IHN0b3JlUHJlZml4ID0gZ2V0U3RvcmFnZShcInN0b3JlLXByZS1rZXlcIik7XHJcbiAgICBsZXQgYXV0b1R5cGUgPSBnZXRTdG9yYWdlKFxyXG4gICAgICBzdG9yZVByZWZpeCA/IHN0b3JlUHJlZml4ICsgXCJ0YWJsZVNpemVcIiA6IFwidGFibGVTaXplXCJcclxuICAgICk7XHJcbiAgICBhdXRvVHlwZSA9IGF1dG9UeXBlPy5jb250ZW50O1xyXG4gICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgZGF0YVNvdXJjZTogW10sXHJcbiAgICAgIGNvbHVtbnM6IFtdLFxyXG4gICAgICBsb2FkaW5nOiBmYWxzZSxcclxuICAgICAgcGFnaW5hdGlvbjoge30sXHJcbiAgICAgIGFjdGl2ZUluZGV4OiAtMSxcclxuICAgICAgLy/mkJzntKLmlofmnKxcclxuICAgICAgc2VhcmNoVGV4dDogbnVsbCxcclxuICAgICAgZmllbGRPcHRpb246IG51bGwsXHJcbiAgICAgIHNlYXJjaENvbG9yOiBudWxsLFxyXG4gICAgICBjb2xzOiBbXSxcclxuICAgICAgc29ydHM6IFtdLFxyXG4gICAgICBmaWx0ZXJQYXJhbXM6IHt9LFxyXG4gICAgICB0YWJsZVNpemU6IHRoaXMucHJvcHMuc2l6ZSB8fCBhdXRvVHlwZSB8fCBcImRlZmF1bHRcIixcclxuICAgICAgc29ydFR5cGU6IFwic2luZ2xlXCIsXHJcbiAgICAgIHNvcnRlcjogW10sIC8v6K6w5b2V5b2T5YmN5o6S5bqP5a2X5q61XHJcbiAgICAgIHNvcnRJbmZvOiB7fSxcclxuICAgICAgZGVmYXVsdFNvcnQ6IHRydWUsXHJcbiAgICAgIGNoZWNrQ29sdW1uOiBbXSxcclxuICAgICAgZGVmYXVsdENoZWNrOiB0cnVlLFxyXG4gICAgICBzZWxlY3RlZFJvd0tleXM6IFtdLFxyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzOiBbXSxcclxuICAgICAgZmlsdGVyOiBbXSxcclxuICAgICAgZXh0cmE6IHt9LFxyXG4gICAgfTtcclxuICAgIGlmIChwcm9wcy5zdG9yZSBpbnN0YW5jZW9mIFN0b3JlKSB7XHJcbiAgICAgIHRoaXMuc3RvcmUgPSBwcm9wcy5zdG9yZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHsgbGlzdGVuZXJzOiBsaXN0ZW5lcnNQcm9wcyA9IHt9LCAuLi5yZXN0U3RvcmUgfSA9XHJcbiAgICAgICAgcHJvcHMuc3RvcmUgfHwge307XHJcbiAgICAgIGNvbnN0IHN0b3JlUHJvcHMgPSB7XHJcbiAgICAgICAgbW9kZWw6IFwibW9kZWxcIixcclxuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgICAgbGlzdGVuZXJzOiB7XHJcbiAgICAgICAgICBvbkJlZm9yZUxvYWQ6IChzdG9yZSwgb3B0aW9ucykgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUHJvcHMub25CZWZvcmVMb2FkLCB0aGlzLCBbc3RvcmUsIG9wdGlvbnNdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBkYXRhQ2hhbmdlZDogKGRhdGEsIG1vZGVsRGF0YSwgc3RvcmUpID0+IHtcclxuICAgICAgICAgICAgbGV0IHBhZ2luZyA9ICEodGhpcy5wcm9wcy5wYWdpbmF0aW9uID09PSBmYWxzZSk7XHJcbiAgICAgICAgICAgIGlmIChwYWdpbmcgJiYgIXRoaXMucHJvcHMuZGF0YVNvdXJjZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgZGF0YVNvdXJjZTogbW9kZWxEYXRhLFxyXG4gICAgICAgICAgICAgICAgcGFnaW5hdGlvbjogc3RvcmUuZ2V0UGFnaW5hdGlvbigpLFxyXG4gICAgICAgICAgICAgICAgbG9hZGluZzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBhY3RpdmVJbmRleDogLTEsXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGRhdGFTb3VyY2U6IG1vZGVsRGF0YSwgbG9hZGluZzogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1Byb3BzLmRhdGFDaGFuZ2VkLCB0aGlzLCBbXHJcbiAgICAgICAgICAgICAgZGF0YSxcclxuICAgICAgICAgICAgICBtb2RlbERhdGEsXHJcbiAgICAgICAgICAgICAgc3RvcmUsXHJcbiAgICAgICAgICAgICAgcGFnaW5nLFxyXG4gICAgICAgICAgICBdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBsb2FkOiAoZGF0YSwgbW9kZWxEYXRhLCBzdG9yZSkgPT4ge1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQcm9wcy5sb2FkLCB0aGlzLCBbZGF0YSwgbW9kZWxEYXRhLCBzdG9yZV0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIG9uRXJyb3JMb2FkOiAoZXJyLCByZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1Byb3BzLm9uRXJyb3JMb2FkLCB0aGlzLCBbZXJyLCByZXNwb25zZV0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGRhdGE6IHJlc3RTdG9yZS5kYXRhXHJcbiAgICAgICAgICA/IHJlc3RTdG9yZS5kYXRhXHJcbiAgICAgICAgICA6IHByb3BzLmRhdGFTb3VyY2VcclxuICAgICAgICAgICAgPyBwcm9wcy5kYXRhU291cmNlXHJcbiAgICAgICAgICAgIDogbnVsbCxcclxuICAgICAgICAuLi5yZXN0U3RvcmUsXHJcbiAgICAgICAgYXV0b0xvYWQ6IHJlc3RTdG9yZS5hdXRvTG9hZCA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWUsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuc3RvcmUgPSBuZXcgUGFnZVN0b3JlKFxyXG4gICAgICAgIE9iamVjdC5hc3NpZ24oe30sIHN0b3JlUHJvcHMsIHtcclxuICAgICAgICAgIHBhZ2luYXRpb246IHsgY3VycmVudDogMSwgLi4udGhpcy5wcm9wcy5wYWdpbmF0aW9uIH0sXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZVJlc2l6ZSA9XHJcbiAgICAoaW5kZXg6IGFueSkgPT5cclxuICAgICAgKGU6IGFueSwgeyBzaXplIH06IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsgY29scyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICBjb25zdCBuZXh0Q29sdW1ucyA9IFsuLi5jb2xzXTtcclxuICAgICAgICBuZXh0Q29sdW1uc1tpbmRleF0gPSB7XHJcbiAgICAgICAgICAuLi5uZXh0Q29sdW1uc1tpbmRleF0sXHJcbiAgICAgICAgICB3aWR0aDogc2l6ZS53aWR0aCxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgY29sczogbmV4dENvbHVtbnMsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH07XHJcblxyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyByZXNpemVDb2x1bW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIXJlc2l6ZUNvbHVtbikge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHsgY29sdW1uczogWy4uLnRoaXMucHJvcHMuY29sdW1uc10gfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHsgY29sczogWy4uLnRoaXMucHJvcHMuY29sdW1uc10gfSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBzdG9yZSA9IHRoaXMucHJvcHMuc3RvcmU7XHJcbiAgICBpZiAoc3RvcmUgJiYgc3RvcmUuZGF0YSkge1xyXG4gICAgICB0aGlzLnN0b3JlLnNldERhdGEoc3RvcmUuZGF0YSk7XHJcbiAgICB9XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5saXN0ZW5NZXNzYWdlKTtcclxuICB9XHJcbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XHJcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5saXN0ZW5NZXNzYWdlKTtcclxuICB9XHJcbiAgbGlzdGVuTWVzc2FnZSA9IChldikgPT4ge1xyXG4gICAgY29uc3QgZGF0YSA9IHR5cGVvZiBldi5kYXRhID09PSBcInN0cmluZ1wiID8gSlNPTi5wYXJzZShldi5kYXRhKSA6IGV2LmRhdGE7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgaWYgKGRhdGEuZXZlbnRUeXBlID09IFwiY2hhbmdlVGFibGVTaXplXCIpIHtcclxuICAgICAgY29uc3QgeyBwYXlsb2FkIH0gPSBkYXRhO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgcGF5bG9hZC5zaXplID09IFwiZGVmYXVsdFwiIHx8XHJcbiAgICAgICAgcGF5bG9hZC5zaXplID09IFwic21hbGxcIiB8fFxyXG4gICAgICAgIHBheWxvYWQuc2l6ZSA9PSBcIm1pZGRsZVwiXHJcbiAgICAgICkge1xyXG4gICAgICAgIF90aGlzLnNldFN0YXRlKHsgdGFibGVTaXplOiBwYXlsb2FkLnNpemUgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG4gIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMsIHByZVN0YXRlKSB7XHJcbiAgICBjb25zdCB7IHJlc2l6ZUNvbHVtbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmICghcmVzaXplQ29sdW1uKSB7XHJcbiAgICAgIGlmICh0aGlzLnByb3BzLmNvbHVtbnMgIT09IHByZXZQcm9wcy5jb2x1bW5zKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGNvbHVtbnM6IHRoaXMucHJvcHMuY29sdW1ucyB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHByZVN0YXRlLmNvbHMgIT09IHRoaXMuc3RhdGUuY29scykge1xyXG4gICAgICAgIHRoaXMucmVzZXRDb2x1bW4oKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5wcm9wcy5jb2x1bW5zICE9PSBwcmV2UHJvcHMuY29sdW1ucykge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBjb2xzOiB0aGlzLnByb3BzLmNvbHVtbnMgfSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHByZXZQcm9wcy5zaXplICE9PSB0aGlzLnByb3BzLnNpemUpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgdGFibGVTaXplOiB0aGlzLnByb3BzLnNpemUgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0Q29sdW1uKCkge1xyXG4gICAgY29uc3QgeyBjb2xzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgbmV3Q29sczogYW55ID0gW107XHJcbiAgICBsZXQgY29sc3MgPSBjb2xzIHx8IFtdO1xyXG4gICAgY29sc3MubWFwKChjb2w6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBsZXQgdGVtcCA9IHtcclxuICAgICAgICAuLi5jb2wsXHJcbiAgICAgICAgb25IZWFkZXJDZWxsOiAoY29sdW1uOiB7IHdpZHRoOiBhbnkgfSkgPT4gKHtcclxuICAgICAgICAgIHdpZHRoOiBjb2x1bW4ud2lkdGgsXHJcbiAgICAgICAgICBvblJlc2l6ZTogdGhpcy5oYW5kbGVSZXNpemUoaW5kZXgpLFxyXG4gICAgICAgIH0pLFxyXG4gICAgICB9O1xyXG4gICAgICBuZXdDb2xzLnB1c2godGVtcCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBjb2x1bW5zOiBuZXdDb2xzLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmuIXpmaTpgInkuK3popzoibJcclxuICAgKi9cclxuICBjbGVhclNlbGVjdENvbG9yKCkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGFjdGl2ZUluZGV4OiAtMSB9KTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGFnaW5hdGlvbkJ5U3RvcmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5nZXRQYWdpbmF0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZShwYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGF1dG9PbkNoYW5nZSA9IHRydWUsXHJcbiAgICAgIGF1dG9Tb3J0LFxyXG4gICAgICBhdXRvUGFnaW5hdGlvbixcclxuICAgICAgb25DaGFuZ2UsXHJcbiAgICAgIHN0b3JlLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGZpbHRlclBhcmFtcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IGlzTXVsdGlwbGUgPSBBcnJheS5pc0FycmF5KHNvcnRlcik7XHJcbiAgICBpZiAoYXV0b09uQ2hhbmdlID09PSBmYWxzZSB8fCAhc3RvcmUpIHtcclxuICAgICAgb25DaGFuZ2UgJiYgb25DaGFuZ2UocGFnaW5hdGlvbiwgZmlsdGVycywgc29ydGVyLCBleHRyYSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGhhbmRsZVBhZ2luYXRpb24gPSAoKSA9PiB7XHJcbiAgICAgIGxldCBwYXJhbXMgPSB7fSBhcyB7XHJcbiAgICAgICAgc2l6ZT86IHN0cmluZztcclxuICAgICAgICBwYWdlU2l6ZT86IHN0cmluZztcclxuICAgICAgICBhc2NzPzogc3RyaW5nO1xyXG4gICAgICAgIGRlc2NzPzogc3RyaW5nO1xyXG4gICAgICAgIFtwcm9wTmFtZTogc3RyaW5nXTogc3RyaW5nO1xyXG4gICAgICB9O1xyXG4gICAgICBjb25zdCBwYWdpbmcgPSB0aGlzLmdldFBhZ2luYXRpb25CeVN0b3JlKCkgfHwge307XHJcbiAgICAgIGlmICghaXNFbXB0eU9iaihwYWdpbmF0aW9uKSkge1xyXG4gICAgICAgIGNvbnN0IHAgPSB7XHJcbiAgICAgICAgICBbcGFnaW5nLmN1cnJlbnRLZXkgfHwgXCJjdXJyZW50XCJdOiBwYWdpbmF0aW9uLmN1cnJlbnQsXHJcbiAgICAgICAgICBbcGFnaW5nLnBhZ2VTaXplS2V5IHx8IFwic2l6ZVwiXTogcGFnaW5hdGlvbi5wYWdlU2l6ZSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGFyYW1zLCBwKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgYXNjUGFyYW1zID0gdGhpcy5nZXRTb3J0UGFyYW0oc29ydGVyLCB0cnVlKTtcclxuICAgICAgaWYgKGlzTXVsdGlwbGUpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgc29ydGVyIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKCFpc011bHRpcGxlICYmICFpc0VtcHR5T2JqKHNvcnRlcikpIHtcclxuICAgICAgICBzb3J0ZXIuY29sdW1uICYmXHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgc29ydGVyOiBbc29ydGVyXSwgZGVmYXVsdFNvcnQ6IGZhbHNlIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBzb3J0ZXI6IFtdIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGZpbHRlcnMsXHJcbiAgICAgICAgZXh0cmEsXHJcbiAgICAgIH0pO1xyXG4gICAgICBwYXJhbXMgPSB7IC4uLmZpbHRlclBhcmFtcywgLi4ucGFyYW1zLCAuLi5hc2NQYXJhbXMgfTtcclxuICAgICAgYXV0b1NvcnQgJiYgdGhpcy5zdG9yZS5yZWxvYWQoeyBwYXJhbXMgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IG9uQ2hhbmdlRm4gPSB0aGlzLnByb3BzLm9uQ2hhbmdlO1xyXG5cclxuICAgIGF1dG9QYWdpbmF0aW9uICYmIGhhbmRsZVBhZ2luYXRpb24oKTtcclxuICAgIC8vIOeUqOaIt+S8oOS6hm9uQ2hhbmdl5L+d55WZ55So5oi36Ieq5Li75aSE55CG6KGo5qC85Y+Y5YyW55qE5p2D5YqbXHJcbiAgICBpZiAob25DaGFuZ2VGbikge1xyXG4gICAgICB1dGlscy5jYWxsYmFjayhvbkNoYW5nZUZuLCB0aGlzLCBbcGFnaW5hdGlvbiwgZmlsdGVycywgc29ydGVyLCBleHRyYV0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0U3RvcmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOiOt+WPluaVsOaNruaooeWei+WvueixoVxyXG4gICAqL1xyXG4gIGdldE1vZGVsKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuZ2V0TW9kZWwoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOiPnOWNleaQnOe0oui/h+a7pOaYvuekulxyXG4gICAqIEBwYXJhbSB7U3RyaW5nfSB2YWxcclxuICAgKi9cclxuICBoYW5kbGVTZWFyY2godmFsLCBmaWVsZE9wdGlvbiwgc2VhcmNoQ29sb3IpIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWFyY2hUZXh0OiB2YWwsXHJcbiAgICAgIGZpZWxkT3B0aW9uOiBmaWVsZE9wdGlvbixcclxuICAgICAgc2VhcmNoQ29sb3I6IHNlYXJjaENvbG9yLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmqKHlnZfliJfooajnp7vliqjmjpLluo9cclxuICAgKi9cclxuICBtb3ZlUm93ID0gKGRyYWdJbmRleCwgaG92ZXJJbmRleCwgZHJhZywgdGFyZ2V0KSA9PiB7XHJcbiAgICBjb25zdCBfdGhpcyA9IHRoaXM7XHJcbiAgICBsZXQgZHJhZ05vZGUgPSBkcmFnLnJlY29yZDtcclxuICAgIGxldCB0YXJnZXROb2RlID0gdGFyZ2V0LnJlY29yZDtcclxuICAgIGRyYWdOb2RlLm1vdmVBcnJheShkcmFnTm9kZSwgdGFyZ2V0Tm9kZSk7XHJcbiAgICBsZXQgaWRzID0gZHJhZ05vZGUucGFyZW50Tm9kZS5nZXRDaGlsZE5vZGVJZHMoKTtcclxuICAgIGxldCBwYXJhbXMgPSB7XHJcbiAgICAgIGlkOiBkcmFnTm9kZS5pZCxcclxuICAgICAgcGFyZW50SWQ6IGRyYWdOb2RlLmF0dHJpYnV0ZS5wYXJlbnRJZCxcclxuICAgICAgaWRzOiBpZHMsXHJcbiAgICB9O1xyXG5cclxuICAgIGlmICh0aGlzLnByb3BzLm1vdmVSb3cpIHtcclxuICAgICAgdGhpcy5wcm9wcy5tb3ZlUm93KHBhcmFtcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnN0b3JlLnJlbG9hZCgpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGZpbHRlckNvbHVtbihjaGVja2VkVmFsdWUpIHtcclxuICAgIGlmIChjaGVja2VkVmFsdWUubGVuZ3RoID09IDApIHtcclxuICAgICAgbWVzc2FnZS53YXJuaW5nKFwi6Iez5bCR5pi+56S65LiA5YiX77yBXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBmaWx0ZXJDb2x1bW5zID0gdGhpcy5wcm9wcy5jb2x1bW5zLm1hcCgoY29sOiBDb2x1bW5UeXBlPHt9PikgPT4ge1xyXG4gICAgICBjb25zdCBuZXdDb2wgPSB7IC4uLmNvbCB9IGFzIENvbHVtblR5cGU8e30+ICYgeyBpbml0U2hvdzogYm9vbGVhbiB9O1xyXG4gICAgICBpZiAoY2hlY2tlZFZhbHVlLmluY2x1ZGVzKGNvbC5kYXRhSW5kZXgpKSB7XHJcbiAgICAgICAgbmV3Q29sLmluaXRTaG93ID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBuZXdDb2wuaW5pdFNob3cgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbmV3Q29sO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCB7IHJlc2l6ZUNvbHVtbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmICghcmVzaXplQ29sdW1uKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGNvbHVtbnM6IGZpbHRlckNvbHVtbnMsXHJcbiAgICAgICAgY2hlY2tDb2x1bW46IGNoZWNrZWRWYWx1ZSxcclxuICAgICAgICBkZWZhdWx0Q2hlY2s6IGZhbHNlLFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGNvbHM6IGZpbHRlckNvbHVtbnMsXHJcbiAgICAgICAgY2hlY2tDb2x1bW46IGNoZWNrZWRWYWx1ZSxcclxuICAgICAgICBkZWZhdWx0Q2hlY2s6IGZhbHNlLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0U29ydFBhcmFtKHNvcnRlciwgc29ydFN0YXRlID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IGlzTXVsdGlwbGUgPSBBcnJheS5pc0FycmF5KHNvcnRlcik7XHJcbiAgICBjb25zdCB7IHNvcnRTZWFyY2ggPSB0cnVlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKCFzb3J0U2VhcmNoKSB7XHJcbiAgICAgIHJldHVybiB7fTtcclxuICAgIH1cclxuICAgIGxldCBzb3J0SW5mbyA9IHt9O1xyXG4gICAgbGV0IG9yZGVySXRlbXMgPSBbXTtcclxuICAgIGlmICghaXNFbXB0eU9iaihzb3J0ZXIpICYmICFpc011bHRpcGxlICYmIHNvcnRlci5jb2x1bW4pIHtcclxuICAgICAgb3JkZXJJdGVtcyA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBjb2x1bW46IHNvcnRlci5jb2x1bW4uZmllbGQgfHwgc29ydGVyLmNvbHVtbi5kYXRhSW5kZXgsXHJcbiAgICAgICAgICBhc2M6IHNvcnRlci5vcmRlciA9PSBcImFzY2VuZFwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF07XHJcbiAgICAgIGlmIChzb3J0ZXIuY29sdW1uKSBzb3J0SW5mb1tzb3J0ZXIuY29sdW1uLmRhdGFJbmRleF0gPSBzb3J0ZXIub3JkZXI7XHJcbiAgICB9IGVsc2UgaWYgKGlzTXVsdGlwbGUpIHtcclxuICAgICAgc29ydGVyLmZvckVhY2goKHYpID0+IHtcclxuICAgICAgICBzb3J0SW5mb1t2LmNvbHVtbi5kYXRhSW5kZXhdID0gdi5vcmRlcjtcclxuICAgICAgICBsZXQgZmllbGQgPSB2LmNvbHVtbi5maWVsZCB8fCB2LmNvbHVtbi5kYXRhSW5kZXg7XHJcbiAgICAgICAgb3JkZXJJdGVtcy5wdXNoKHtcclxuICAgICAgICAgIGNvbHVtbjogZmllbGQsXHJcbiAgICAgICAgICBhc2M6IHYub3JkZXIgPT0gXCJhc2NlbmRcIixcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAoc29ydFN0YXRlKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIHNvcnRJbmZvOiBzb3J0SW5mbyxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4geyBvcmRlckl0ZW1zOiBKU09OLnN0cmluZ2lmeShvcmRlckl0ZW1zKSB9O1xyXG4gIH1cclxuICBpc0JleW9uZChlKSB7XHJcbiAgICBjb25zdCBldiA9IHdpbmRvdy5ldmVudCB8fCBlOyAvLyDmtY/op4jlmajlhbzlrrnvvIzmnIDlpb3lhpnkuIDkuItcclxuICAgIGNvbnN0IHRleHRSYW5nZSA9IChlbCkgPT4ge1xyXG4gICAgICBjb25zdCB0ZXh0Q29udGVudCA9IGVsO1xyXG4gICAgICBjb25zdCB0YXJnZXRXID0gdGV4dENvbnRlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XHJcbiAgICAgIGNvbnN0IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcclxuICAgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dENvbnRlbnQsIDApO1xyXG4gICAgICByYW5nZS5zZXRFbmQodGV4dENvbnRlbnQsIHRleHRDb250ZW50LmNoaWxkTm9kZXMubGVuZ3RoKTtcclxuICAgICAgY29uc3QgcmFuZ2VXaWR0aCA9IHJhbmdlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xyXG4gICAgICByZXR1cm4gcmFuZ2VXaWR0aCA+IHRhcmdldFc7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuICF0ZXh0UmFuZ2UoZXYudGFyZ2V0KTsgLy8gdGFyZ2V05Y+v5Lul5L+d6K+B5b2T5YmN5YiS6L+H55qEZG9t6IqC54K55LiA55u05L+d5oyB5pivOmVsLXRvb2x0aXBfX3RyaWdnZXJcclxuICB9XHJcbiAgc2V0U2VsZWN0ZWRSb3dLZXlzKGRhdGE6IEFycmF5PFN0cmluZyB8IE51bWJlcj4pIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWxlY3RlZFJvd0tleXM6IGRhdGEsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgc2V0U2VsZWN0ZWRSb3dEYXRhcyhkYXRhOiBBcnJheTxPYmplY3Q+KSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogZGF0YSxcclxuICAgIH0pO1xyXG4gIH1cclxuICBnZXRDb2x1bW5zKCkge1xyXG4gICAgY29uc3QgeyBjb2x1bW5zLCBzb3J0VHlwZSwgc29ydEluZm8gfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IHNvcnRGaWVsZHMgPSBbXSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGRlZmF1bHRTaG93Q29scyA9IGNvbHVtbnMuZmlsdGVyKChjb2xzKSA9PiBjb2xzLmluaXRTaG93ICE9PSBmYWxzZSk7XHJcbiAgICBjb25zdCBjb2xzID0gZGVmYXVsdFNob3dDb2xzLm1hcCgoY29sLCBpbmRleCkgPT4ge1xyXG4gICAgICBpZiAoY29sLmVsbGlwc2lzICYmICFjb2wucmVuZGVyKSB7XHJcbiAgICAgICAgY29sLmVsbGlwc2lzID0ge1xyXG4gICAgICAgICAgc2hvd1RpdGxlOiBmYWxzZSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbC5yZW5kZXIgPSAodGV4dCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiBcImlubGluZS10YWJsZVwiIH19PlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIHRpdGxlPXt0ZXh0fVxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtdGV4dFwiKX1cclxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IHdpZHRoOiBjb2wud2lkdGggfHwgXCIxMDAlXCIgfX1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7dGV4dH1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChzb3J0RmllbGRzLmluZGV4T2YoY29sLmRhdGFJbmRleCkgPiAtMSkge1xyXG4gICAgICAgIGlmIChzb3J0VHlwZSA9PSBcInNpbmdsZVwiKSB7XHJcbiAgICAgICAgICBjb2wuc29ydGVyID0gdHJ1ZTtcclxuICAgICAgICAgIGNvbC5zb3J0T3JkZXIgPSBzb3J0SW5mb1tjb2wuZGF0YUluZGV4XVxyXG4gICAgICAgICAgICA/IHNvcnRJbmZvW2NvbC5kYXRhSW5kZXhdXHJcbiAgICAgICAgICAgIDogbnVsbDtcclxuICAgICAgICB9IGVsc2UgaWYgKHNvcnRUeXBlID09IFwibXVsdGlwbGVcIikge1xyXG4gICAgICAgICAgY29sLnNvcnRlciA9IHsgbXVsdGlwbGU6IGluZGV4IH07XHJcbiAgICAgICAgICBjb2wuc29ydE9yZGVyID0gc29ydEluZm9bY29sLmRhdGFJbmRleF1cclxuICAgICAgICAgICAgPyBzb3J0SW5mb1tjb2wuZGF0YUluZGV4XVxyXG4gICAgICAgICAgICA6IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBjb2w7XHJcbiAgICB9KTtcclxuICAgIGNvbHMubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICBpZiAoIWlzRW1wdHlPYmooaXRlbS5maWx0ZXJQcm9wcykpIHtcclxuICAgICAgICBsZXQgb2JqID0geyAuLi5pdGVtIH07XHJcbiAgICAgICAgY29uc3QgeyB0eXBlLCBwcm9wcywgc2VhcmNoS2V5IH0gPSBpdGVtLmZpbHRlclByb3BzO1xyXG4gICAgICAgIGxldCBEaXYgPSBudWxsO1xyXG4gICAgICAgIGxldCB0ZXh0ID0gaXRlbS50aXRsZTtcclxuICAgICAgICBEaXYgPSBnZXROb2RlKHR5cGUsIHtcclxuICAgICAgICAgIHBsYWNlaG9sZGVyOiBg5pCc57SiJHt0ZXh0fWAsXHJcbiAgICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICAgIHJlZjogdGhpcy50YWJsZVNlYXJjaFJlZixcclxuICAgICAgICB9KTtcclxuICAgICAgICBvYmogPSB7XHJcbiAgICAgICAgICBmaWx0ZXJEcm9wZG93bjogKHtcclxuICAgICAgICAgICAgc2V0U2VsZWN0ZWRLZXlzLFxyXG4gICAgICAgICAgICBzZWxlY3RlZEtleXMsXHJcbiAgICAgICAgICAgIGNvbmZpcm0sXHJcbiAgICAgICAgICAgIGNsZWFyRmlsdGVycyxcclxuICAgICAgICAgIH0pID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLXNlYXJjaFwiKX0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLXNlYXJjaC1zcGFjZVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgIHtEaXZ9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxTcGFjZT5cclxuICAgICAgICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25maXJtKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGZpbHRlclBhcmFtcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdGaWx0ZXJQYXJhbXMgPSB7IC4uLmZpbHRlclBhcmFtcyB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGtleSA9IGl0ZW0uZmllbGQgfHwgaXRlbS5kYXRhSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICBuZXdGaWx0ZXJQYXJhbXNba2V5XSA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVTZWFyY2hSZWYuY3VycmVudD8uZ2V0VmFsdWUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJhbXM6IHsgLi4ubmV3RmlsdGVyUGFyYW1zIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNvcnRQYXJhbSA9IHRoaXMuZ2V0U29ydFBhcmFtKHRoaXMuc3RhdGUuc29ydGVyKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUubG9hZCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogeyAuLi5uZXdGaWx0ZXJQYXJhbXMsIC4uLnNvcnRQYXJhbSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLXNlYXJjaC1idXR0b25cIil9XHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICDmn6Xor6JcclxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L1NwYWNlPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGZpbHRlckljb246ICgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIDxTZWFyY2hPdXRsaW5lZCAvPjtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAuLi5vYmosXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb2xzW2luZGV4XSA9IG9iajtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gY29scztcclxuICB9XHJcbiAgcmVuZGVyVG9vbEJhcigpIHtcclxuICAgIGxldCB7IHRhYmxlU2l6ZSwgY29sdW1ucywgc29ydFR5cGUgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBsZXQgeyBmaWx0ZXJDb2x1bW4sIGNvbHVtbnM6IGNvbExpc3RzLCB0b29sYmFyIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyB0YWJsZVRvb2wsIHN0b3JlUmVxdWVzdENvbmZpZyA9IHt9IH0gPSBjb25maWcoKTtcclxuICAgIGxldCB0b29scyA9IFtcInJlZnJlc2hcIiwgXCJzaXplXCIsIFwic29ydFwiLCBcImNvbHVtblwiXTtcclxuICAgIGxldCB0b29sc0NsaWNrID0ge30gYXMgYW55O1xyXG4gICAgaWYgKHRvb2xiYXIgPT0gdHJ1ZSkge1xyXG4gICAgICB0b29scyA9IHRvb2xiYXIub25Ub29sQ2xpY2tcclxuICAgICAgICA/IHRvb2xiYXIub25Ub29sQ2xpY2tcclxuICAgICAgICA6IFtcInJlZnJlc2hcIiwgXCJzaXplXCIsIFwic29ydFwiLCBcImNvbHVtblwiXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRvb2xzID0gdG9vbGJhci50b29sc1xyXG4gICAgICAgID8gdG9vbGJhci50b29sc1xyXG4gICAgICAgIDogdGFibGVUb29sLnRvb2xzXHJcbiAgICAgICAgICA/IHRhYmxlVG9vbC50b29sc1xyXG4gICAgICAgICAgOiB0b29scztcclxuICAgICAgdG9vbHNDbGljayA9IHRvb2xiYXIub25Ub29sQ2xpY2sgPyB0b29sYmFyLm9uVG9vbENsaWNrIDoge307XHJcbiAgICB9XHJcbiAgICBjb25zdCBzaXplSXRlbSA9IFtcclxuICAgICAgeyB0aXRsZTogXCLlrr3mnb5cIiwga2V5OiBcImRlZmF1bHRcIiB9LFxyXG4gICAgICB7IHRpdGxlOiBcIuS4reetiVwiLCBrZXk6IFwibWlkZGxlXCIgfSxcclxuICAgICAgeyB0aXRsZTogXCLntKflh5FcIiwga2V5OiBcInNtYWxsXCIgfSxcclxuICAgIF07XHJcbiAgICBjb25zdCBzb3J0SXRlbSA9IFtcclxuICAgICAgeyB0aXRsZTogXCLljZXlrZfmrrXmjpLluo9cIiwga2V5OiBcInNpbmdsZVwiIH0sXHJcbiAgICAgIHsgdGl0bGU6IFwi5aSa5a2X5q615o6S5bqPXCIsIGtleTogXCJtdWx0aXBsZVwiIH0sXHJcbiAgICBdO1xyXG4gICAgY29uc3Qgc29ydENvbnRlbnQgPSAoXHJcbiAgICAgIDw+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtY290ZW50LXRpdGxlXCIpfVxyXG4gICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgY3Vyc29yOiB0aGlzLnN0YXRlLmRlZmF1bHRTb3J0ID8gXCJub3QtYWxsb3dlZFwiIDogXCJwb2ludGVyXCIsXHJcbiAgICAgICAgICAgIGNvbG9yOiB0aGlzLnN0YXRlLmRlZmF1bHRTb3J0ICYmIFwicmdiYSgwLDAsMCwuNDUpXCIsXHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zdGF0ZS5kZWZhdWx0U29ydCkge1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgc29ydGVyOiBbXSwgc29ydEluZm86IHt9LCBkZWZhdWx0U29ydDogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgY29uc3QgcGFyYW1zID0geyAuLi50aGlzLnN0YXRlLmZpbHRlclBhcmFtcyB9O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLnJlbG9hZCh7IHBhcmFtcyB9KTtcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAg5oGi5aSN6buY6K6k5o6S5bqPXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAge3NvcnRJdGVtLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBrZXk9e2l0ZW0ua2V5fVxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICBzb3J0ZXI6IFtdLFxyXG4gICAgICAgICAgICAgICAgICBzb3J0SW5mbzoge30sXHJcbiAgICAgICAgICAgICAgICAgIHNvcnRUeXBlOiBpdGVtLmtleSxcclxuICAgICAgICAgICAgICAgICAgZGVmYXVsdFNvcnQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7IC4uLnRoaXMuc3RhdGUuZmlsdGVyUGFyYW1zIH07XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLnJlbG9hZCh7IHBhcmFtcyB9KTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3NvcnRUeXBlID09IGl0ZW0ua2V5ID8gKFxyXG4gICAgICAgICAgICAgICAgPGE+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtY29udGVudC10aWVtXCIpfT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAyMCB9fT5cclxuICAgICAgICAgICAgICAgICAgICAgIHtzb3J0VHlwZSA9PSBpdGVtLmtleSAmJiA8Q2hlY2tPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PiB7aXRlbS50aXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtY29udGVudC10aWVtXCIpfT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyB3aWR0aDogMjAgfX0+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+IHtpdGVtLnRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0pfVxyXG4gICAgICAgIHt0aGlzLnN0YXRlLnNvcnRlci5sZW5ndGggPiAwICYmIChcclxuICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy10YWJsZS1jb3RlbnQtdGl0bGVcIil9XHJcbiAgICAgICAgICAgICAgc3R5bGU9e3sgY29sb3I6IFwicmdiYSgwLDAsMCwuNDUpXCIgfX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIOW9k+WJjeaOkuW6j1xyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAge3RoaXMuc3RhdGUuc29ydGVyLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy10YWJsZS1jb250ZW50LXRpZW1cIil9XHJcbiAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgd2lkdGg6IDIwIH19PlxyXG4gICAgICAgICAgICAgICAgICAgIHtpdGVtLm9yZGVyID09IFwiYXNjZW5kXCIgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICA8U29ydEFzY2VuZGluZ091dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgICAgIDxTb3J0RGVzY2VuZGluZ091dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+IHtpdGVtLmNvbHVtbi50aXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgPC8+XHJcbiAgICAgICAgKX1cclxuICAgICAgPC8+XHJcbiAgICApO1xyXG4gICAgY29uc3Qgc2l6ZUNvbnRlbnQgPSAoXHJcbiAgICAgIDw+XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy10YWJsZS1jb3RlbnQtdGl0bGVcIil9PlxyXG4gICAgICAgICAg6KGo5qC85a+G5bqmXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAge3NpemVJdGVtLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBrZXk9e2l0ZW0ua2V5fVxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICB0YWJsZVNpemU6IGl0ZW0ua2V5LFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt0YWJsZVNpemUgPT0gaXRlbS5rZXkgPyAoXHJcbiAgICAgICAgICAgICAgICA8YT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy10YWJsZS1jb250ZW50LXRpZW1cIil9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgd2lkdGg6IDIwIH19PlxyXG4gICAgICAgICAgICAgICAgICAgICAge3RhYmxlU2l6ZSA9PSBpdGVtLmtleSAmJiA8Q2hlY2tPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PiB7aXRlbS50aXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtY29udGVudC10aWVtXCIpfT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyB3aWR0aDogMjAgfX0+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+IHtpdGVtLnRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0pfVxyXG4gICAgICA8Lz5cclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgZGVmYXVsdFNob3dDb2xzID0gY29sdW1ucy5maWx0ZXIoKGNvbHMpID0+IGNvbHMuaW5pdFNob3cgIT09IGZhbHNlKTtcclxuXHJcbiAgICBjb25zdCBjb250ZW50ID0gKFxyXG4gICAgICA8Q2hlY2tib3guR3JvdXBcclxuICAgICAgICBvbkNoYW5nZT17dGhpcy5maWx0ZXJDb2x1bW4uYmluZCh0aGlzKX1cclxuICAgICAgICBvcHRpb25zPXtjb2xMaXN0cy5tYXAoXHJcbiAgICAgICAgICAoY29sOiBDb2x1bW5UeXBlPHt9PiAmIHsgZmlsdGVyQ29sdW1uOiBib29sZWFuOyBkYXRhSW5kZXg6IGFueSB9KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghY29sLmRhdGFJbmRleCkge1xyXG4gICAgICAgICAgICAgIGNvbC5kYXRhSW5kZXggPSBjb2wudGl0bGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICBsYWJlbDogY29sLnRpdGxlLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiBjb2wuZGF0YUluZGV4LFxyXG4gICAgICAgICAgICAgIGRpc2FibGVkOiBjb2wuZmlsdGVyQ29sdW1uID09PSBmYWxzZSxcclxuICAgICAgICAgICAgfSBhcyBDaGVja2JveE9wdGlvblR5cGU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKX1cclxuICAgICAgICAvLyBkZWZhdWx0VmFsdWU9e2RlZmF1bHRTaG93Q29scy5tYXAoKGNvbCkgPT4gY29sLmRhdGFJbmRleCl9XHJcbiAgICAgICAgdmFsdWU9e1xyXG4gICAgICAgICAgdGhpcy5zdGF0ZS5kZWZhdWx0Q2hlY2tcclxuICAgICAgICAgICAgPyBkZWZhdWx0U2hvd0NvbHMubWFwKChjb2wpID0+IGNvbC5kYXRhSW5kZXgpXHJcbiAgICAgICAgICAgIDogdGhpcy5zdGF0ZS5jaGVja0NvbHVtblxyXG4gICAgICAgIH1cclxuICAgICAgPjwvQ2hlY2tib3guR3JvdXA+XHJcbiAgICApO1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy10YWJsZS10b29sLWJhclwiKX0+XHJcbiAgICAgICAge3Rvb2xzLmluZGV4T2YoXCJjb2x1bW5cIikgPiAtMSAmJiAoXHJcbiAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGZvbnRTaXplOiAxNCB9fT5cclxuICAgICAgICAgICAgPFBvcG92ZXJcclxuICAgICAgICAgICAgICB0aXRsZT1cIumAieaLqeaYvuekuueahOWIl1wiXHJcbiAgICAgICAgICAgICAgY29udGVudD17Y29udGVudH1cclxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21SaWdodFwiXHJcbiAgICAgICAgICAgICAgdHJpZ2dlcj1cImNsaWNrXCJcclxuICAgICAgICAgICAgICBvdmVybGF5U3R5bGU9e3sgbWluV2lkdGg6IDQxMCwgbWF4V2lkdGg6IDQ1MCB9fVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPEFwcHN0b3JlT3V0bGluZWRcclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLXRoLWFwcC1zdG9yZS1pY29uXCIpfVxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICl9XHJcbiAgICAgICAge3Rvb2xzLmluZGV4T2YoXCJzb3J0XCIpID4gLTEgJiYgKFxyXG4gICAgICAgICAgPGRpdiBzdHlsZT17eyBtYXJnaW5SaWdodDogOCwgZm9udFNpemU6IDE0IH19PlxyXG4gICAgICAgICAgICA8UG9wb3ZlciBwbGFjZW1lbnQ9XCJib3R0b21cIiBjb250ZW50PXtzb3J0Q29udGVudH0gdHJpZ2dlcj1cImNsaWNrXCI+XHJcbiAgICAgICAgICAgICAgPFNvcnRBc2NlbmRpbmdPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIHt0b29scy5pbmRleE9mKFwic2l6ZVwiKSA+IC0xICYmIChcclxuICAgICAgICAgIDxkaXYgc3R5bGU9e3sgbWFyZ2luUmlnaHQ6IDgsIGZvbnRTaXplOiAxNCB9fT5cclxuICAgICAgICAgICAgPFBvcG92ZXIgcGxhY2VtZW50PVwiYm90dG9tXCIgY29udGVudD17c2l6ZUNvbnRlbnR9IHRyaWdnZXI9XCJjbGlja1wiPlxyXG4gICAgICAgICAgICAgIDxDb2x1bW5IZWlnaHRPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIHt0b29scy5pbmRleE9mKFwicmVmcmVzaFwiKSA+IC0xICYmIChcclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgc3R5bGU9e3sgbWFyZ2luUmlnaHQ6IDgsIGZvbnRTaXplOiAxNCwgY3Vyc29yOiBcInBvaW50ZXJcIiB9fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0geyAuLi50aGlzLnN0YXRlLmZpbHRlclBhcmFtcyB9O1xyXG4gICAgICAgICAgICAgIGlmICh0b29sc0NsaWNrLm9uUmVmcmVzaCkge1xyXG4gICAgICAgICAgICAgICAgdG9vbHNDbGljay5vblJlZnJlc2goKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5sb2FkKHsgcGFyYW1zIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPFJlZG9PdXRsaW5lZCAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0tleXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5zZWxlY3RlZFJvd0tleXM7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93RGF0YXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5zZWxlY3RlZFJvd0RhdGFzO1xyXG4gIH1cclxuICByZXNldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWxlY3RlZFJvd0tleXM6IFtdLFxyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzOiBbXSxcclxuICAgIH0pO1xyXG4gIH1cclxuICByb3dTZWxlY3Rpb25PblNlbGVjdChyZWNvcmQ6IGFueSwgc2VsZWN0ZWQ6IGFueSkge1xyXG4gICAgY29uc3QgeyBzZWxlY3RlZFJvd0tleXMsIHNlbGVjdGVkUm93RGF0YXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBsZXQgeyByb3dLZXkgPSBcImlkXCIgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgbmV3U2VsZWN0ZWRSb3dLZXlzID0gWy4uLnNlbGVjdGVkUm93S2V5c107XHJcbiAgICBsZXQgbmV3U2VsZWN0ZWRSb3dEYXRhcyA9IFsuLi5zZWxlY3RlZFJvd0RhdGFzXTtcclxuICAgIGlmIChzZWxlY3RlZCkge1xyXG4gICAgICBuZXdTZWxlY3RlZFJvd0tleXMgPSBbLi4ubmV3U2VsZWN0ZWRSb3dLZXlzLCByZWNvcmRbcm93S2V5XV07XHJcbiAgICAgIG5ld1NlbGVjdGVkUm93RGF0YXMgPSBbLi4ubmV3U2VsZWN0ZWRSb3dEYXRhcywgcmVjb3JkXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHNlbGVjdGVkUm93S2V5cy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChpdGVtID09PSByZWNvcmRbcm93S2V5XSkge1xyXG4gICAgICAgICAgbmV3U2VsZWN0ZWRSb3dLZXlzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhcy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChpdGVtW3Jvd0tleV0gPT09IHJlY29yZFtyb3dLZXldKSB7XHJcbiAgICAgICAgICBuZXdTZWxlY3RlZFJvd0RhdGFzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWxlY3RlZFJvd0tleXM6IG5ld1NlbGVjdGVkUm93S2V5cyxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogbmV3U2VsZWN0ZWRSb3dEYXRhcyxcclxuICAgIH0pO1xyXG4gIH1cclxuICByb3dTZWxlY3Rpb25PblNlbGVjdEFsbChzZWxlY3RlZDogYW55LCBzZWxlY3RlZFJvd3M6IGFueSwgY2hhbmdlUm93czogYW55KSB7XHJcbiAgICBjb25zdCB7IHNlbGVjdGVkUm93S2V5cywgc2VsZWN0ZWRSb3dEYXRhcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgcm93S2V5ID0gXCJpZFwiIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IG5ld2lkczogYW55ID0gW107XHJcbiAgICBsZXQgbmV3ZGF0YXM6IGFueSA9IFtdO1xyXG4gICAgaWYgKGNoYW5nZVJvd3MubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgY2hhbmdlSWRzID0gY2hhbmdlUm93cy5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbVtyb3dLZXldKTtcclxuICAgICAgaWYgKHNlbGVjdGVkKSB7XHJcbiAgICAgICAgbmV3aWRzID0gWy4uLnNlbGVjdGVkUm93S2V5cywgLi4uY2hhbmdlSWRzXTtcclxuICAgICAgICBuZXdkYXRhcyA9IFsuLi5zZWxlY3RlZFJvd0RhdGFzLCAuLi5jaGFuZ2VSb3dzXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzZWxlY3RlZFJvd0tleXMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChjaGFuZ2VJZHMuaW5kZXhPZihpdGVtKSA9PSAtMSkge1xyXG4gICAgICAgICAgICBuZXdpZHMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICBzZWxlY3RlZFJvd0RhdGFzLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoY2hhbmdlSWRzLmluZGV4T2YoaXRlbVtyb3dLZXldKSA9PSAtMSkge1xyXG4gICAgICAgICAgICBuZXdkYXRhcy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBuZXdpZHMgPSBbLi4uc2VsZWN0ZWRSb3dLZXlzXTtcclxuICAgICAgbmV3ZGF0YXMgPSBbLi4uc2VsZWN0ZWRSb3dEYXRhc107XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbLi4ubmV3aWRzXSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogWy4uLm5ld2RhdGFzXSxcclxuICAgIH0pO1xyXG4gIH1cclxuICByZW5kZXIoKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzLFxyXG4gICAgICB7XHJcbiAgICAgICAgbG9hZGluZyxcclxuICAgICAgICBkYXRhU291cmNlLFxyXG4gICAgICAgIHBhZ2luYXRpb24gPSB7fSxcclxuICAgICAgICBzZWFyY2hUZXh0LFxyXG4gICAgICAgIGZpZWxkT3B0aW9uLFxyXG4gICAgICAgIHNlYXJjaENvbG9yLFxyXG4gICAgICAgIHRhYmxlU2l6ZSxcclxuICAgICAgfSA9IHRoaXMuc3RhdGUsXHJcbiAgICAgIHByb3BzID0gdXRpbHMub21pdChcclxuICAgICAgICB0aGlzLnByb3BzLFxyXG4gICAgICAgIFtcclxuICAgICAgICAgIFwic3RvcmVcIixcclxuICAgICAgICAgIFwib25DaGFuZ2VcIixcclxuICAgICAgICAgIFwiY29sdW1uc1wiLFxyXG4gICAgICAgICAgXCJyZXNldENvbHVtblwiLFxyXG4gICAgICAgICAgXCJ0b29sYmFyXCIsXHJcbiAgICAgICAgICBcInNvcnRGaWVsZHNcIixcclxuICAgICAgICAgIFwiZmlsdGVyQ29sdW1uXCIsXHJcbiAgICAgICAgICBcInNvcnRTZWFyY2hcIixcclxuICAgICAgICAgIFwic2hvd1Jvd1NlbGVjdGlvblwiLFxyXG4gICAgICAgIF0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcm93S2V5OiBcImlkXCIsXHJcbiAgICAgICAgICBjbGlja0NoYW5nZUNvbG9yOiBmYWxzZSxcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICBpZiAocHJvcHMucGFnaW5hdGlvbiAhPT0gZmFsc2UpIHtcclxuICAgICAgcHJvcHMucGFnaW5hdGlvbiA9IHtcclxuICAgICAgICBwb3NpdGlvbjogW1wiYm90dG9tUmlnaHRcIl0sXHJcbiAgICAgICAgc2hvd1NpemVDaGFuZ2VyOiB0cnVlLFxyXG4gICAgICAgIHNob3dRdWlja0p1bXBlcjogdHJ1ZSxcclxuICAgICAgICAuLi5wYWdpbmF0aW9uLFxyXG4gICAgICAgIC4uLnByb3BzLnBhZ2luYXRpb24sXHJcbiAgICAgICBcclxuICAgICAgfTtcclxuICAgICAgaWYgKHByb3BzLnNob3dUb3RhbCA9PSB0cnVlKSB7XHJcbiAgICAgICAgcHJvcHMucGFnaW5hdGlvbi5zaG93VG90YWwgPSBmdW5jdGlvbiAodG90YWwsIFtmcm9tLCB0b10pIHtcclxuICAgICAgICAgIC8vIHJldHVybiBcIuaYvuekuiBcIiArIGZyb20gKyBcIiAtIFwiICsgdG8gKyBcIuadoe+8jOWFsSBcIiArIHRvdGFsICsgXCIg5p2hXCI7XHJcbiAgICAgICAgICByZXR1cm4gXCLlhbEgXCIgKyB0b3RhbCArIFwiIOadoVwiO1xyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHByb3BzLm9uQ2hhbmdlID0gZnVuY3Rpb24gKHBhZ2luYXRpb24sIGZpbHRlcnMsIHNvcnRlciwgZXh0cmEpIHtcclxuICAgICAgX3RoaXMub25DaGFuZ2UoX3RoaXMuc3RhdGUucGFnaW5hdGlvbiwgZmlsdGVycywgc29ydGVyLCBleHRyYSk7XHJcbiAgICB9O1xyXG4gICAgaWYgKHByb3BzLmNsaWNrQ2hhbmdlQ29sb3IpIHtcclxuICAgICAgY29uc3Qgb25Sb3dGbiA9IHByb3BzLm9uUm93O1xyXG4gICAgICBwcm9wcy5vblJvdyA9IGZ1bmN0aW9uIChyZWNvcmQsIGluZGV4KSB7XHJcbiAgICAgICAgdmFyIGN1c3RvbSA9IG9uUm93Rm4gPyBvblJvd0ZuKHJlY29yZCwgaW5kZXgpIDoge307XHJcbiAgICAgICAgY29uc3Qgb25DbGlja0ZuID0gY3VzdG9tLm9uQ2xpY2s7XHJcbiAgICAgICAgY3VzdG9tLm9uQ2xpY2sgPSAoZXZlbnQpID0+IHtcclxuICAgICAgICAgIF90aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgYWN0aXZlSW5kZXg6IGluZGV4LCAvL+iOt+WPlueCueWHu+ihjOeahOe0ouW8lVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB1dGlscy5jYWxsYmFjayhvbkNsaWNrRm4sIF90aGlzLCBbZXZlbnRdKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiBjdXN0b207XHJcbiAgICAgIH07XHJcbiAgICAgIHByb3BzLnJvd0NsYXNzTmFtZSA9IGZ1bmN0aW9uIChyZWNvcmQsIGluZGV4KSB7XHJcbiAgICAgICAgcmV0dXJuIGluZGV4ID09PSBfdGhpcy5zdGF0ZS5hY3RpdmVJbmRleFxyXG4gICAgICAgICAgPyBcIm5zYy10YWJsZS1jbGlja1Jvd1N0eWxlXCJcclxuICAgICAgICAgIDogXCJcIjtcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGxldCBuZXdEYXRhU291cmNlID0gW107XHJcbiAgICBpZiAoc2VhcmNoVGV4dCkge1xyXG4gICAgICBjb25zdCBkYXRhID0gdHJlZVV0aWxzLmdldFNlYXJjaE1lbnVEYXRhcyhcclxuICAgICAgICB0aGlzLFxyXG4gICAgICAgIHNlYXJjaFRleHQsXHJcbiAgICAgICAgZmllbGRPcHRpb24sXHJcbiAgICAgICAgc2VhcmNoQ29sb3JcclxuICAgICAgKTtcclxuICAgICAgbmV3RGF0YVNvdXJjZSA9IGRhdGEudHJlZURhdGFzO1xyXG4gICAgICBwcm9wcy5leHBhbmRlZFJvd0tleXMgPSBkYXRhLm9wZW5LZXlzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbmV3RGF0YVNvdXJjZSA9IGRhdGFTb3VyY2U7XHJcbiAgICB9XHJcbiAgICBwcm9wcy5zdG9yZSA9IHByb3BzLnN0b3JlIHx8IHt9O1xyXG4gICAgcHJvcHMuc3RvcmUuYXV0b0xvYWQgPSBwcm9wcy5zdG9yZS5hdXRvTG9hZCA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWU7XHJcbiAgICBjb25zdCB7IGRyYWdhYmxlIH0gPSBfdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGRyYWdhYmxlUHJvcHMgPVxyXG4gICAgICBkcmFnYWJsZSA9PT0gdHJ1ZVxyXG4gICAgICAgID8ge1xyXG4gICAgICAgICAgY29tcG9uZW50czogQm9keVJvd0NvbXBvbmVudCxcclxuICAgICAgICAgIG9uUm93OiAocmVjb3JkLCBpbmRleCkgPT4gKHtcclxuICAgICAgICAgICAgaW5kZXgsXHJcbiAgICAgICAgICAgIHJlY29yZCxcclxuICAgICAgICAgICAgbW92ZVJvdzogdGhpcy5tb3ZlUm93LFxyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgfVxyXG4gICAgICAgIDoge307XHJcbiAgICBsZXQgeyByZXNpemVDb2x1bW4gfSA9IHRoaXMucHJvcHM7XHJcblxyXG4gICAgY29uc3QgcmVzaXplUHJvcHMgPVxyXG4gICAgICByZXNpemVDb2x1bW4gPT09IHRydWUgPyB7IGNvbXBvbmVudHM6IHRoaXMuY29tcG9uZW50cyB9IDogbnVsbDtcclxuICAgIGNvbnN0IHsgdGFibGVUb29sIH0gPSBjb25maWcoKTtcclxuICAgIGxldCB0b29sRmxhZyA9IHRydWU7XHJcbiAgICBsZXQgdG9vbHByb3BzID1cclxuICAgICAgdGhpcy5wcm9wcy50b29sYmFyID09PSBmYWxzZSB8fCB0aGlzLnByb3BzLnRvb2xiYXI/LnNob3cgPT09IGZhbHNlXHJcbiAgICAgICAgPyBmYWxzZVxyXG4gICAgICAgIDogdHJ1ZTtcclxuICAgIGlmICghdG9vbHByb3BzKSB7XHJcbiAgICAgIHRvb2xGbGFnID0gdG9vbHByb3BzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdG9vbEZsYWcgPSB0YWJsZVRvb2wuc2hvdyA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5wcm9wcy5zaG93Um93U2VsZWN0aW9uKSB7XHJcbiAgICAgIGNvbnN0IHsgcm93U2VsZWN0aW9uID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgIHByb3BzID0ge1xyXG4gICAgICAgIC4uLnByb3BzLFxyXG4gICAgICAgIHJvd1NlbGVjdGlvbjoge1xyXG4gICAgICAgICAgc2VsZWN0ZWRSb3dLZXlzOiB0aGlzLnN0YXRlLnNlbGVjdGVkUm93S2V5cyxcclxuICAgICAgICAgIG9uU2VsZWN0OiB0aGlzLnJvd1NlbGVjdGlvbk9uU2VsZWN0LmJpbmQodGhpcyksXHJcbiAgICAgICAgICBvblNlbGVjdEFsbDogdGhpcy5yb3dTZWxlY3Rpb25PblNlbGVjdEFsbC5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgY29sdW1uV2lkdGg6IDQwLFxyXG4gICAgICAgICAgLi4ucm93U2VsZWN0aW9uLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBjb25zdCBEZWZhdWx0VGFibGUgPSAoXHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGVcIil9PlxyXG4gICAgICAgIHt0b29sRmxhZyAmJiB0aGlzLnJlbmRlclRvb2xCYXIoKX1cclxuICAgICAgICA8VGFibGVcclxuICAgICAgICAgIGNoaWxkcmVuQ29sdW1uTmFtZT1cImNoaWxkTm9kZXNcIlxyXG4gICAgICAgICAgc2hlaXRlbVxyXG4gICAgICAgICAgZGF0YVNvdXJjZT17bmV3RGF0YVNvdXJjZX1cclxuICAgICAgICAgIGNvbHVtbnM9e3RoaXMuZ2V0Q29sdW1ucygpfVxyXG4gICAgICAgICAgbG9hZGluZz17bG9hZGluZ31cclxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy10YWJsZS1jb250ZW50XCIpLCBwcm9wcy5jbGFzc05hbWUpfVxyXG4gICAgICAgICAgbG9jYWxlPXt7XHJcbiAgICAgICAgICAgIGVtcHR5VGV4dDogKFxyXG4gICAgICAgICAgICAgIDxOb0RhdGEgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtbm9kYXRhXCIpfSAvPlxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIHNjcm9sbD17eyB4OiBcIm1heC1jb250ZW50XCIgfX1cclxuICAgICAgICAgIHsuLi5yZXNpemVQcm9wc31cclxuICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICAgIHsuLi5kcmFnYWJsZVByb3BzfVxyXG4gICAgICAgICAgc2l6ZT17dGFibGVTaXplfVxyXG4gICAgICAgICAgcGFnaW5hdGlvbj17ZmFsc2V9XHJcbiAgICAgICAgLy8gc3R5bGU9e3sgaGVpZ2h0OiA2MDAgfX1cclxuICAgICAgICAvPlxyXG4gICAgICAgIHtwcm9wcy5wYWdpbmF0aW9uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLXBhZ2luYXRpb25cIil9PlxyXG4gICAgICAgICAgICA8UGFnaW5hdGlvblxyXG4gICAgICAgICAgICAgIHsuLi5wcm9wcy5wYWdpbmF0aW9ufVxyXG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsocGFnZSwgcGFnZVNpemUpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGV4dHJhID0gdGhpcy5zdGF0ZS5leHRyYTtcclxuICAgICAgICAgICAgICAgIGV4dHJhLmFjdGlvbiA9IFwicGFnaW5hdGVcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoKHsgcGFnaW5hdGlvbj17fSB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFnaW5hdGlvbjogeyAuLi5wYWdpbmF0aW9uLCBjdXJyZW50OiBwYWdlLCBwYWdlU2l6ZSB9LFxyXG4gICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKFxyXG4gICAgICAgICAgICAgICAgICB7IGN1cnJlbnQ6IHBhZ2UsIHBhZ2VTaXplIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuZmlsdGVyLFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLnNvcnRlcixcclxuICAgICAgICAgICAgICAgICAgZXh0cmFcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICl9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gZHJhZ2FibGUgPT09IHRydWUgPyAoXHJcbiAgICAgIDxEbmRQcm92aWRlciBiYWNrZW5kPXtIVE1MNUJhY2tlbmR9PntEZWZhdWx0VGFibGV9PC9EbmRQcm92aWRlcj5cclxuICAgICkgOiAoXHJcbiAgICAgIERlZmF1bHRUYWJsZVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IHdpdGhaaExvY2FsZShOU0NUYWJsZSk7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FDRUEsZ0JBQWdCLEVBQ2hCQyxhQUFhLEVBQ2JDLG9CQUFvQixFQUNwQkMsY0FBYyxFQUNkQyxxQkFBcUIsRUFDckJDLHNCQUFzQixFQUN0QkMsWUFBWSxRQUNQLG1CQUFtQjtBQUMxQixTQUFTQyxVQUFVLFFBQVEsbUJBQW1CO0FBQzlDLE9BQU9DLEtBQUssSUFBSUMsU0FBUyxRQUFvQixhQUFhO0FBQzFELFNBQVNDLEtBQUssUUFBUSx1QkFBdUI7QUFlN0MsT0FBTyxLQUFLQyxLQUFLLE1BQU0sT0FBTztBQUM5QixTQUFTQyxXQUFXLFFBQVEsV0FBVztBQUN2QyxPQUFPQyxPQUFP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
1010
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBcHBzdG9yZU91dGxpbmVkIiwiQ2hlY2tPdXRsaW5lZCIsIkNvbHVtbkhlaWdodE91dGxpbmVkIiwiU2VhcmNoT3V0bGluZWQiLCJTb3J0QXNjZW5kaW5nT3V0bGluZWQiLCJTb3J0RGVzY2VuZGluZ091dGxpbmVkIiwiUmVkb091dGxpbmVkIiwiaXNFbXB0eU9iaiIsIlN0b3JlIiwiUGFnZVN0b3JlIiwidXRpbHMiLCJSZWFjdCIsIkRuZFByb3ZpZGVyIiwiQm9keVJvdyIsIkRuZENvbnRleHRUeXBlIiwiSUJvZHlSb3dQcm9wcyIsInRyZWVVdGlscyIsIkJvZHlSb3dDb21wb25lbnQiLCJIVE1MNUJhY2tlbmQiLCJ3aXRoWmhMb2NhbGUiLCJSZXNpemFibGUiLCJnZXRMZXNzIiwiZ2V0Tm9kZSIsIk5vRGF0YSIsImdldFN0b3JhZ2UiLCJjb25maWciLCJjbHMiLCJzdHlsZXMiLCJSZXNpemVhYmxlVGl0bGUiLCJwcm9wcyIsIm9uUmVzaXplIiwid2lkdGgiLCJyZXN0UHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJjcmVhdGVFbGVtZW50IiwiaGVpZ2h0IiwiZHJhZ2dhYmxlT3B0cyIsImVuYWJsZVVzZXJTZWxlY3RIYWNrIiwiTlNDVGFibGUiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsIl9hdXRvVHlwZSIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsIm9uQmVmb3JlTG9hZCIsImxvYWQiLCJoZWFkZXIiLCJjZWxsIiwiaW5kZXgiLCJlIiwiX3JlZiIsInNpemUiLCJjb2xzIiwic3RhdGUiLCJuZXh0Q29sdW1ucyIsIl9vYmplY3RTcHJlYWQiLCJzZXRTdGF0ZSIsImV2IiwiZGF0YSIsIkpTT04iLCJwYXJzZSIsIl90aGlzIiwiZXZlbnRUeXBlIiwicGF5bG9hZCIsInRhYmxlU2l6ZSIsImRyYWdJbmRleCIsImhvdmVySW5kZXgiLCJkcmFnIiwidGFyZ2V0IiwiZHJhZ05vZGUiLCJyZWNvcmQiLCJ0YXJnZXROb2RlIiwibW92ZUFycmF5IiwiaWRzIiwicGFyZW50Tm9kZSIsImdldENoaWxkTm9kZUlkcyIsInBhcmFtcyIsImlkIiwicGFyZW50SWQiLCJhdHRyaWJ1dGUiLCJtb3ZlUm93Iiwic3RvcmUiLCJyZWxvYWQiLCJtb2RhbCIsInR5cGUiLCJzdG9yZVByZWZpeCIsImF1dG9UeXBlIiwiY29udGVudCIsImRhdGFTb3VyY2UiLCJjb2x1bW5zIiwibG9hZGluZyIsInBhZ2luYXRpb24iLCJhY3RpdmVJbmRleCIsInNlYXJjaFRleHQiLCJmaWVsZE9wdGlvbiIsInNlYXJjaENvbG9yIiwic29ydHMiLCJmaWx0ZXJQYXJhbXMiLCJzb3J0VHlwZSIsInNvcnRlciIsInNvcnRJbmZvIiwiZGVmYXVsdFNvcnQiLCJjaGVja0NvbHVtbiIsImRlZmF1bHRDaGVjayIsInNlbGVjdGVkUm93S2V5cyIsInNlbGVjdGVkUm93RGF0YXMiLCJmaWx0ZXIiLCJleHRyYSIsIl9yZWYyIiwibGlzdGVuZXJzIiwibGlzdGVuZXJzUHJvcHMiLCJyZXN0U3RvcmUiLCJfZXhjbHVkZWQyIiwic3RvcmVQcm9wcyIsIm1vZGVsIiwiY29tcG9uZW50Iiwib3B0aW9ucyIsImNhbGxiYWNrIiwiZGF0YUNoYW5nZWQiLCJtb2RlbERhdGEiLCJwYWdpbmciLCJnZXRQYWdpbmF0aW9uIiwib25FcnJvckxvYWQiLCJlcnIiLCJyZXNwb25zZSIsImF1dG9Mb2FkIiwiT2JqZWN0IiwiYXNzaWduIiwiY3VycmVudCIsImNvbXBvbmVudERpZE1vdW50IiwicmVzaXplQ29sdW1uIiwic2V0RGF0YSIsIndpbmRvdyIsImFkZEV2ZW50TGlzdGVuZXIiLCJsaXN0ZW5NZXNzYWdlIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiY29tcG9uZW50RGlkVXBkYXRlIiwicHJldlByb3BzIiwicHJlU3RhdGUiLCJyZXNldENvbHVtbiIsIm5ld0NvbHMiLCJjb2xzcyIsIm1hcCIsImNvbCIsInRlbXAiLCJvbkhlYWRlckNlbGwiLCJjb2x1bW4iLCJoYW5kbGVSZXNpemUiLCJwdXNoIiwiY2xlYXJTZWxlY3RDb2xvciIsImdldFBhZ2luYXRpb25CeVN0b3JlIiwib25DaGFuZ2UiLCJmaWx0ZXJzIiwiYXV0b09uQ2hhbmdlIiwiYXV0b1NvcnQiLCJhdXRvUGFnaW5hdGlvbiIsImlzTXVsdGlwbGUiLCJBcnJheSIsImlzQXJyYXkiLCJoYW5kbGVQYWdpbmF0aW9uIiwicCIsImN1cnJlbnRLZXkiLCJwYWdlU2l6ZUtleSIsInBhZ2VTaXplIiwiYXNjUGFyYW1zIiwiZ2V0U29ydFBhcmFtIiwib25DaGFuZ2VGbiIsImdldFN0b3JlIiwiZ2V0TW9kZWwiLCJoYW5kbGVTZWFyY2giLCJ2YWwiLCJmaWx0ZXJDb2x1bW4iLCJjaGVja2VkVmFsdWUiLCJsZW5ndGgiLCJfbWVzc2FnZSIsIndhcm5pbmciLCJmaWx0ZXJDb2x1bW5zIiwibmV3Q29sIiwiaW5jbHVkZXMiLCJkYXRhSW5kZXgiLCJpbml0U2hvdyIsInNvcnRTdGF0ZSIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsInNvcnRTZWFyY2giLCJvcmRlckl0ZW1zIiwiZmllbGQiLCJhc2MiLCJvcmRlciIsImZvckVhY2giLCJ2Iiwic3RyaW5naWZ5IiwiaXNCZXlvbmQiLCJldmVudCIsInRleHRSYW5nZSIsImVsIiwidGV4dENvbnRlbnQiLCJ0YXJnZXRXIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwicmFuZ2UiLCJkb2N1bWVudCIsImNyZWF0ZVJhbmdlIiwic2V0U3RhcnQiLCJzZXRFbmQiLCJjaGlsZE5vZGVzIiwicmFuZ2VXaWR0aCIsInNldFNlbGVjdGVkUm93S2V5cyIsInNldFNlbGVjdGVkUm93RGF0YXMiLCJnZXRDb2x1bW5zIiwic29ydEZpZWxkcyIsImRlZmF1bHRTaG93Q29scyIsImVsbGlwc2lzIiwicmVuZGVyIiwic2hvd1RpdGxlIiwidGV4dCIsInN0eWxlIiwiZGlzcGxheSIsInRpdGxlIiwiY2xhc3NOYW1lIiwiaW5kZXhPZiIsInNvcnRPcmRlciIsIm11bHRpcGxlIiwiaXRlbSIsImZpbHRlclByb3BzIiwib2JqIiwic2VhcmNoS2V5IiwiRGl2IiwicGxhY2Vob2xkZXIiLCJjb25jYXQiLCJyZWYiLCJ0YWJsZVNlYXJjaFJlZiIsImZpbHRlckRyb3Bkb3duIiwiX3JlZjMiLCJzZXRTZWxlY3RlZEtleXMiLCJzZWxlY3RlZEtleXMiLCJjb25maXJtIiwiY2xlYXJGaWx0ZXJzIiwiX1NwYWNlIiwiX0J1dHRvbiIsIm9uQ2xpY2siLCJfdGhpcyR0YWJsZVNlYXJjaFJlZiQiLCJuZXdGaWx0ZXJQYXJhbXMiLCJrZXkiLCJnZXRWYWx1ZSIsInNvcnRQYXJhbSIsImZpbHRlckljb24iLCJyZW5kZXJUb29sQmFyIiwiY29sTGlzdHMiLCJ0b29sYmFyIiwidGFibGVUb29sIiwic3RvcmVSZXF1ZXN0Q29uZmlnIiwidG9vbHMiLCJ0b29sc0NsaWNrIiwib25Ub29sQ2xpY2siLCJzaXplSXRlbSIsInNvcnRJdGVtIiwic29ydENvbnRlbnQiLCJGcmFnbWVudCIsImN1cnNvciIsImNvbG9yIiwic2l6ZUNvbnRlbnQiLCJfQ2hlY2tib3giLCJHcm91cCIsImJpbmQiLCJsYWJlbCIsInZhbHVlIiwiZGlzYWJsZWQiLCJmb250U2l6ZSIsIl9Qb3BvdmVyIiwicGxhY2VtZW50IiwidHJpZ2dlciIsIm92ZXJsYXlTdHlsZSIsIm1pbldpZHRoIiwibWF4V2lkdGgiLCJtYXJnaW5SaWdodCIsIm9uUmVmcmVzaCIsImdldFNlbGVjdGVkUm93S2V5cyIsImdldFNlbGVjdGVkUm93RGF0YXMiLCJyZXNldFNlbGVjdGVkUm93S2V5cyIsInJvd1NlbGVjdGlvbk9uU2VsZWN0Iiwic2VsZWN0ZWQiLCJyb3dLZXkiLCJuZXdTZWxlY3RlZFJvd0tleXMiLCJuZXdTZWxlY3RlZFJvd0RhdGFzIiwic3BsaWNlIiwicm93U2VsZWN0aW9uT25TZWxlY3RBbGwiLCJzZWxlY3RlZFJvd3MiLCJjaGFuZ2VSb3dzIiwibmV3aWRzIiwibmV3ZGF0YXMiLCJjaGFuZ2VJZHMiLCJfdGhpcyRwcm9wcyR0b29sYmFyIiwib21pdCIsImNsaWNrQ2hhbmdlQ29sb3IiLCJwb3NpdGlvbiIsInNob3dTaXplQ2hhbmdlciIsInNob3dRdWlja0p1bXBlciIsInNob3dUb3RhbCIsInRvdGFsIiwiX3JlZjQiLCJmcm9tIiwidG8iLCJvblJvd0ZuIiwib25Sb3ciLCJjdXN0b20iLCJvbkNsaWNrRm4iLCJyb3dDbGFzc05hbWUiLCJuZXdEYXRhU291cmNlIiwiZ2V0U2VhcmNoTWVudURhdGFzIiwidHJlZURhdGFzIiwiZXhwYW5kZWRSb3dLZXlzIiwib3BlbktleXMiLCJkcmFnYWJsZSIsImRyYWdhYmxlUHJvcHMiLCJjb21wb25lbnRzIiwicmVzaXplUHJvcHMiLCJ0b29sRmxhZyIsInRvb2xwcm9wcyIsInNob3ciLCJzaG93Um93U2VsZWN0aW9uIiwicm93U2VsZWN0aW9uIiwib25TZWxlY3QiLCJvblNlbGVjdEFsbCIsImNvbHVtbldpZHRoIiwidGFibGVQcm9wcyIsImNvbmZpZ1RhYmxlUHJvcHMiLCJEZWZhdWx0VGFibGUiLCJfVGFibGUiLCJfZXh0ZW5kcyIsImNoaWxkcmVuQ29sdW1uTmFtZSIsInNoZWl0ZW0iLCJsb2NhbGUiLCJlbXB0eVRleHQiLCJzY3JvbGwiLCJ4IiwiX1BhZ2luYXRpb24iLCJwYWdlIiwiYWN0aW9uIiwiX3JlZjUiLCJiYWNrZW5kIiwiZHJhZ1VybCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvdGFibGUvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIEBEZXNjcmlwdHRpb246XHJcbiAqIEB2ZXJzaW9uOlxyXG4gKiBAQXV0aG9yOiByeHpodVxyXG4gKiBARGF0ZTogMjAyMS0wMy0yMyAwODo0NjoyMFxyXG4gKiBATGFzdEVkaXRvcnM6IHJ4emh1XHJcbiAqIEBMYXN0RWRpdFRpbWU6IDIwMjEtMDMtMjMgMTA6MzA6NDJcclxuICovXHJcbmltcG9ydCB7XHJcbiAgQXBwc3RvcmVPdXRsaW5lZCxcclxuICBDaGVja091dGxpbmVkLFxyXG4gIENvbHVtbkhlaWdodE91dGxpbmVkLFxyXG4gIFNlYXJjaE91dGxpbmVkLFxyXG4gIFNvcnRBc2NlbmRpbmdPdXRsaW5lZCxcclxuICBTb3J0RGVzY2VuZGluZ091dGxpbmVkLFxyXG4gIFJlZG9PdXRsaW5lZCxcclxufSBmcm9tIFwiQGFudC1kZXNpZ24vaWNvbnNcIjtcclxuaW1wb3J0IHsgaXNFbXB0eU9iaiB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgU3RvcmUsIHsgUGFnZVN0b3JlLCBTdG9yZVByb3BzIH0gZnJvbSBcIkBiai1uc2MvbXNuXCI7XHJcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSBcIkBiai1uc2MvbXNuL2xpYi91dGlsc1wiO1xyXG5pbXBvcnQge1xyXG4gIEJ1dHRvbixcclxuICBDaGVja2JveCxcclxuICBDaGVja2JveE9wdGlvblR5cGUsXHJcbiAgTWVudSxcclxuICBtZXNzYWdlLFxyXG4gIFBhZ2luYXRpb24sXHJcbiAgUG9wb3ZlcixcclxuICBTcGFjZSxcclxuICBUYWJsZSxcclxuICBUYWJsZVByb3BzLFxyXG4gIFRvb2x0aXAsXHJcbn0gZnJvbSBcImFudGRcIjtcclxuaW1wb3J0IHsgQ29sdW1uVHlwZSwgVGFibGVQYWdpbmF0aW9uQ29uZmlnIH0gZnJvbSBcImFudGQvbGliL3RhYmxlXCI7XHJcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBEbmRQcm92aWRlciB9IGZyb20gXCJyZWFjdC1kbmRcIjtcclxuaW1wb3J0IEJvZHlSb3csIHsgRG5kQ29udGV4dFR5cGUsIElCb2R5Um93UHJvcHMgfSBmcm9tIFwiLi4vY29tbW9uL0JvZHlSb3dcIjtcclxuaW1wb3J0IHRyZWVVdGlscyBmcm9tIFwiLi4vLi4vdHJlZVV0aWxzXCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubW9kdWxlLmxlc3NcIjtcclxuY29uc3QgeyBCb2R5Um93Q29tcG9uZW50LCBIVE1MNUJhY2tlbmQgfSA9IEJvZHlSb3c7XHJcbmltcG9ydCB3aXRoWmhMb2NhbGUgZnJvbSBcIi4uL2NvbW1vbi93aXRoWmhMb2NhbGVcIjtcclxuaW1wb3J0IHsgUmVzaXphYmxlIH0gZnJvbSBcInJlYWN0LXJlc2l6YWJsZVwiO1xyXG5pbXBvcnQgXCIuL3Jlc2l6ZS5tb2R1bGUubGVzc1wiO1xyXG5pbXBvcnQgeyBnZXRMZXNzLCBnZXROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmltcG9ydCBOb0RhdGEgZnJvbSBcIi4uLy4uL2Jhc2UvY29tbW9uL05vRGF0YVwiO1xyXG5pbXBvcnQgeyBnZXRTdG9yYWdlIH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCBjb25maWcgZnJvbSBcIi4uLy4uL2NvbmZpZ1wiO1xyXG5pbXBvcnQgRWxsaXBzZUNlbGwgZnJvbSBcIi4uL2NvbW1vbi9FbGxpcHNlQ2VsbFwiO1xyXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XHJcbmNvbnN0IHN0eWxlcyA9IG51bGw7XHJcbmludGVyZmFjZSBJRHJhZ1BhcmFtcyB7XHJcbiAgaWQ6IHN0cmluZyB8IG51bWJlcjtcclxuICBpZHM6IEFycmF5PHN0cmluZyB8IG51bWJlcj47XHJcbiAgcGFyZW50SWQ6IHN0cmluZyB8IG51bWJlcjtcclxufVxyXG4vLyBpbnRlcmZhY2UgU3RvcmVQcm9wcyB7fVxyXG5cclxuZXhwb3J0IHR5cGUgU3RvcmVUeXBlID0gXCJQYWdlU3RvcmVcIiB8IFwiVHJlZVN0b3JlXCIgfCBcIkJhc2VTdG9yZVwiO1xyXG5cclxuaW50ZXJmYWNlIE5TQ1RhYmxlUGFnaW5hdGlvbiBleHRlbmRzIFRhYmxlUGFnaW5hdGlvbkNvbmZpZyB7XHJcbiAgdG90YWxLZXk/OiBzdHJpbmc7XHJcbiAgcGFnZVNpemVLZXk/OiBzdHJpbmc7XHJcbiAgY3VycmVudEtleT86IHN0cmluZztcclxufVxyXG5cclxuaW50ZXJmYWNlIFRvb2xCYXJQcm9wcyB7XHJcbiAgc2hvdzogYm9vbGVhbjtcclxuICB0b29scz86IEFycmF5PHN0cmluZz47XHJcbiAgb25Ub29sQ2xpY2s/OiB7IG9uUmVmcmVzaD86IGFueTsgb25Tb3J0PzogYW55IH07XHJcbn1cclxuaW50ZXJmYWNlIE5TQ1RhYmxlUHJvcHMgZXh0ZW5kcyBUYWJsZVByb3BzPGFueT4ge1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBzaG93VG90YWw/OiBib29sZWFuOyAvLyDmmK/lkKbmmL7npLrmgLvmnaHmlbDkv6Hmga/vvIzpu5jorqR0cnVlXHJcbiAgZHJhZ2FibGU/OiBib29sZWFuOyAvLyDmmK/lkKblj6/mi5bliqgsIOm7mOiupGZhbHNlXHJcbiAgZmlsdGVyQ29sdW1uPzogYm9vbGVhbjsgLy8g5piv5ZCm5pSv5oyB6L+H5ruk5pi+56S66KGo5qC85YiXLCDpu5jorqR0cnVlXHJcbiAgbW92ZVJvdz86IChwYXJhbXM6IElEcmFnUGFyYW1zKSA9PiB2b2lkOyAvLyDmi5bmi73lrozmiJDlkI7nmoTlm57osINcclxuICBkcmFnVXJsPzogc3RyaW5nOyAvLyDkv53lrZjmi5bmi73mjpLluo/nmoTmjqXlj6NcclxuICBwYWdpbmF0aW9uPzogZmFsc2UgfCBOU0NUYWJsZVBhZ2luYXRpb247XHJcbiAgYXV0b1BhZ2luYXRpb24/OiBib29sZWFuOyAvLyDnu4Tku7bmmK/lkKboh6rliqjlpITnkIbliIbpobVcclxuICBhdXRvU29ydD86IGJvb2xlYW47IC8v57uE5Lu25piv5ZCm6Ieq5Yqo5aSE55CG5o6S5bqPXHJcbiAgYXV0b09uQ2hhbmdlPzogYm9vbGVhbjsgLy8g57uE5Lu25piv5ZCm6Ieq5Yqob25DaGFuZ2UsIGZhbHNl5YiZ5LiN5YGa5Lu75L2V5aSE55CG5YWo6YOo5Lqk57uZ6LCD55So5pa5XHJcbiAgcmVzaXplQ29sdW1uPzogYm9vbGVhbjtcclxuICBzb3J0RmllbGRzPzogQXJyYXk8c3RyaW5nPjsgLy/pnIDopoHmjpLluo/nmoTlrZfmrrVJbmRleFxyXG4gIHRvb2xiYXI/OiBUb29sQmFyUHJvcHMgfCBib29sZWFuO1xyXG4gIGF1dG9TaXplPzogYm9vbGVhbjtcclxuICBzb3J0U2VhcmNoPzogYm9vbGVhbjsgLy/mmK/lkKbmt7vliqDmjpLluo/mn6Xor6Is6buY6K6kdHJ1ZVxyXG4gIHNob3dSb3dTZWxlY3Rpb24/OiBib29sZWFuO1xyXG4gIHJvd0tleT86IHN0cmluZztcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIElOU0NUYWJsZVByb3BzID0gdHlwZW9mIE5TQ1RhYmxlLmRlZmF1bHRQcm9wcyAmIE5TQ1RhYmxlUHJvcHM7XHJcbmV4cG9ydCB7IERuZENvbnRleHRUeXBlLCBJQm9keVJvd1Byb3BzIH07XHJcblxyXG5jb25zdCBSZXNpemVhYmxlVGl0bGUgPSAocHJvcHM6IGFueSkgPT4ge1xyXG4gIGNvbnN0IHsgb25SZXNpemUsIHdpZHRoLCAuLi5yZXN0UHJvcHMgfSA9IHByb3BzO1xyXG4gIHJldHVybiAoXHJcbiAgICA8UmVzaXphYmxlXHJcbiAgICAgIHdpZHRoPXt3aWR0aCB8fCAxNTB9XHJcbiAgICAgIGhlaWdodD17MH1cclxuICAgICAgb25SZXNpemU9e29uUmVzaXplfVxyXG4gICAgICBkcmFnZ2FibGVPcHRzPXt7IGVuYWJsZVVzZXJTZWxlY3RIYWNrOiBmYWxzZSB9fVxyXG4gICAgPlxyXG4gICAgICA8dGggey4uLnJlc3RQcm9wc30gLz5cclxuICAgIDwvUmVzaXphYmxlPlxyXG4gICk7XHJcbn07XHJcbmNsYXNzIE5TQ1RhYmxlIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PElOU0NUYWJsZVByb3BzLCBhbnk+IHtcclxuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xyXG4gICAgZHJhZ2FibGU6IGZhbHNlLFxyXG4gICAgc2hvd1RvdGFsOiB0cnVlLFxyXG4gICAgZmlsdGVyQ29sdW1uOiB0cnVlLFxyXG4gICAgZHJhZ1VybDogXCJcIixcclxuICAgIGF1dG9QYWdpbmF0aW9uOiB0cnVlLFxyXG4gICAgYXV0b1NvcnQ6IHRydWUsXHJcbiAgICBhdXRvT25DaGFuZ2U6IHRydWUsXHJcbiAgICByZXNpemVDb2x1bW46IHRydWUsXHJcbiAgICB0b29sYmFyOiB7XHJcbiAgICAgIHNob3c6IHRydWUsXHJcbiAgICAgIG9uVG9vbENsaWNrOiB7fSBhcyBhbnksXHJcbiAgICB9IGFzIGFueSxcclxuICB9O1xyXG5cclxuICBzdG9yZSA9IHt9IGFzIFN0b3JlUHJvcHM7XHJcbiAgdGhJY29uUmVmID0gUmVhY3QuY3JlYXRlUmVmPEhUTUxEaXZFbGVtZW50PigpO1xyXG4gIHRhYmxlU2VhcmNoUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuXHJcbiAgbGlzdGVuZXJzID0ge1xyXG4gICAgb25CZWZvcmVMb2FkOiBudWxsLFxyXG4gICAgbG9hZDogbnVsbCxcclxuICB9O1xyXG5cclxuICBjb21wb25lbnRzID0ge1xyXG4gICAgaGVhZGVyOiB7XHJcbiAgICAgIGNlbGw6IFJlc2l6ZWFibGVUaXRsZSxcclxuICAgIH0sXHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgIHN1cGVyKHByb3BzKTtcclxuICAgIGxldCBtb2RhbCA9IHByb3BzLnR5cGUgfHwgXCJhdXRvXCI7XHJcbiAgICBsZXQgc3RvcmVQcmVmaXggPSBnZXRTdG9yYWdlKFwic3RvcmUtcHJlLWtleVwiKTtcclxuICAgIGxldCBhdXRvVHlwZSA9IGdldFN0b3JhZ2UoXHJcbiAgICAgIHN0b3JlUHJlZml4ID8gc3RvcmVQcmVmaXggKyBcInRhYmxlU2l6ZVwiIDogXCJ0YWJsZVNpemVcIlxyXG4gICAgKTtcclxuICAgIGF1dG9UeXBlID0gYXV0b1R5cGU/LmNvbnRlbnQ7XHJcbiAgICB0aGlzLnN0YXRlID0ge1xyXG4gICAgICBkYXRhU291cmNlOiBbXSxcclxuICAgICAgY29sdW1uczogW10sXHJcbiAgICAgIGxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICBwYWdpbmF0aW9uOiB7fSxcclxuICAgICAgYWN0aXZlSW5kZXg6IC0xLFxyXG4gICAgICAvL+aQnOe0ouaWh+acrFxyXG4gICAgICBzZWFyY2hUZXh0OiBudWxsLFxyXG4gICAgICBmaWVsZE9wdGlvbjogbnVsbCxcclxuICAgICAgc2VhcmNoQ29sb3I6IG51bGwsXHJcbiAgICAgIGNvbHM6IFtdLFxyXG4gICAgICBzb3J0czogW10sXHJcbiAgICAgIGZpbHRlclBhcmFtczoge30sXHJcbiAgICAgIHRhYmxlU2l6ZTogdGhpcy5wcm9wcy5zaXplIHx8IGF1dG9UeXBlIHx8IFwiZGVmYXVsdFwiLFxyXG4gICAgICBzb3J0VHlwZTogXCJzaW5nbGVcIixcclxuICAgICAgc29ydGVyOiBbXSwgLy/orrDlvZXlvZPliY3mjpLluo/lrZfmrrVcclxuICAgICAgc29ydEluZm86IHt9LFxyXG4gICAgICBkZWZhdWx0U29ydDogdHJ1ZSxcclxuICAgICAgY2hlY2tDb2x1bW46IFtdLFxyXG4gICAgICBkZWZhdWx0Q2hlY2s6IHRydWUsXHJcbiAgICAgIHNlbGVjdGVkUm93S2V5czogW10sXHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXM6IFtdLFxyXG4gICAgICBmaWx0ZXI6IFtdLFxyXG4gICAgICBleHRyYToge30sXHJcbiAgICB9O1xyXG4gICAgaWYgKHByb3BzLnN0b3JlIGluc3RhbmNlb2YgU3RvcmUpIHtcclxuICAgICAgdGhpcy5zdG9yZSA9IHByb3BzLnN0b3JlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgeyBsaXN0ZW5lcnM6IGxpc3RlbmVyc1Byb3BzID0ge30sIC4uLnJlc3RTdG9yZSB9ID1cclxuICAgICAgICBwcm9wcy5zdG9yZSB8fCB7fTtcclxuICAgICAgY29uc3Qgc3RvcmVQcm9wcyA9IHtcclxuICAgICAgICBtb2RlbDogXCJtb2RlbFwiLFxyXG4gICAgICAgIGNvbXBvbmVudDogdGhpcyxcclxuICAgICAgICBsaXN0ZW5lcnM6IHtcclxuICAgICAgICAgIG9uQmVmb3JlTG9hZDogKHN0b3JlLCBvcHRpb25zKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiB0cnVlIH0pO1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQcm9wcy5vbkJlZm9yZUxvYWQsIHRoaXMsIFtzdG9yZSwgb3B0aW9uc10pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGRhdGFDaGFuZ2VkOiAoZGF0YSwgbW9kZWxEYXRhLCBzdG9yZSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgcGFnaW5nID0gISh0aGlzLnByb3BzLnBhZ2luYXRpb24gPT09IGZhbHNlKTtcclxuICAgICAgICAgICAgaWYgKHBhZ2luZyAmJiAhdGhpcy5wcm9wcy5kYXRhU291cmNlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlOiBtb2RlbERhdGEsXHJcbiAgICAgICAgICAgICAgICBwYWdpbmF0aW9uOiBzdG9yZS5nZXRQYWdpbmF0aW9uKCksXHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGFjdGl2ZUluZGV4OiAtMSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgZGF0YVNvdXJjZTogbW9kZWxEYXRhLCBsb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUHJvcHMuZGF0YUNoYW5nZWQsIHRoaXMsIFtcclxuICAgICAgICAgICAgICBkYXRhLFxyXG4gICAgICAgICAgICAgIG1vZGVsRGF0YSxcclxuICAgICAgICAgICAgICBzdG9yZSxcclxuICAgICAgICAgICAgICBwYWdpbmcsXHJcbiAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGxvYWQ6IChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSA9PiB7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1Byb3BzLmxvYWQsIHRoaXMsIFtkYXRhLCBtb2RlbERhdGEsIHN0b3JlXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgb25FcnJvckxvYWQ6IChlcnIsIHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUHJvcHMub25FcnJvckxvYWQsIHRoaXMsIFtlcnIsIHJlc3BvbnNlXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZGF0YTogcmVzdFN0b3JlLmRhdGFcclxuICAgICAgICAgID8gcmVzdFN0b3JlLmRhdGFcclxuICAgICAgICAgIDogcHJvcHMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgICA/IHByb3BzLmRhdGFTb3VyY2VcclxuICAgICAgICAgICAgOiBudWxsLFxyXG4gICAgICAgIC4uLnJlc3RTdG9yZSxcclxuICAgICAgICBhdXRvTG9hZDogcmVzdFN0b3JlLmF1dG9Mb2FkID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZSxcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5zdG9yZSA9IG5ldyBQYWdlU3RvcmUoXHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbih7fSwgc3RvcmVQcm9wcywge1xyXG4gICAgICAgICAgcGFnaW5hdGlvbjogeyBjdXJyZW50OiAxLCAuLi50aGlzLnByb3BzLnBhZ2luYXRpb24gfSxcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlUmVzaXplID1cclxuICAgIChpbmRleDogYW55KSA9PlxyXG4gICAgICAoZTogYW55LCB7IHNpemUgfTogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBjb2xzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICAgIGNvbnN0IG5leHRDb2x1bW5zID0gWy4uLmNvbHNdO1xyXG4gICAgICAgIG5leHRDb2x1bW5zW2luZGV4XSA9IHtcclxuICAgICAgICAgIC4uLm5leHRDb2x1bW5zW2luZGV4XSxcclxuICAgICAgICAgIHdpZHRoOiBzaXplLndpZHRoLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICBjb2xzOiBuZXh0Q29sdW1ucyxcclxuICAgICAgICB9KTtcclxuICAgICAgfTtcclxuXHJcbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XHJcbiAgICBjb25zdCB7IHJlc2l6ZUNvbHVtbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmICghcmVzaXplQ29sdW1uKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBjb2x1bW5zOiBbLi4udGhpcy5wcm9wcy5jb2x1bW5zXSB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBjb2xzOiBbLi4udGhpcy5wcm9wcy5jb2x1bW5zXSB9KTtcclxuICAgIH1cclxuICAgIGNvbnN0IHN0b3JlID0gdGhpcy5wcm9wcy5zdG9yZTtcclxuICAgIGlmIChzdG9yZSAmJiBzdG9yZS5kYXRhKSB7XHJcbiAgICAgIHRoaXMuc3RvcmUuc2V0RGF0YShzdG9yZS5kYXRhKTtcclxuICAgIH1cclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCB0aGlzLmxpc3Rlbk1lc3NhZ2UpO1xyXG4gIH1cclxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcclxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCB0aGlzLmxpc3Rlbk1lc3NhZ2UpO1xyXG4gIH1cclxuICBsaXN0ZW5NZXNzYWdlID0gKGV2KSA9PiB7XHJcbiAgICBjb25zdCBkYXRhID0gdHlwZW9mIGV2LmRhdGEgPT09IFwic3RyaW5nXCIgPyBKU09OLnBhcnNlKGV2LmRhdGEpIDogZXYuZGF0YTtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBpZiAoZGF0YS5ldmVudFR5cGUgPT0gXCJjaGFuZ2VUYWJsZVNpemVcIikge1xyXG4gICAgICBjb25zdCB7IHBheWxvYWQgfSA9IGRhdGE7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBwYXlsb2FkLnNpemUgPT0gXCJkZWZhdWx0XCIgfHxcclxuICAgICAgICBwYXlsb2FkLnNpemUgPT0gXCJzbWFsbFwiIHx8XHJcbiAgICAgICAgcGF5bG9hZC5zaXplID09IFwibWlkZGxlXCJcclxuICAgICAgKSB7XHJcbiAgICAgICAgX3RoaXMuc2V0U3RhdGUoeyB0YWJsZVNpemU6IHBheWxvYWQuc2l6ZSB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcbiAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcywgcHJlU3RhdGUpIHtcclxuICAgIGNvbnN0IHsgcmVzaXplQ29sdW1uIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKCFyZXNpemVDb2x1bW4pIHtcclxuICAgICAgaWYgKHRoaXMucHJvcHMuY29sdW1ucyAhPT0gcHJldlByb3BzLmNvbHVtbnMpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgY29sdW1uczogdGhpcy5wcm9wcy5jb2x1bW5zIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAocHJlU3RhdGUuY29scyAhPT0gdGhpcy5zdGF0ZS5jb2xzKSB7XHJcbiAgICAgICAgdGhpcy5yZXNldENvbHVtbigpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnByb3BzLmNvbHVtbnMgIT09IHByZXZQcm9wcy5jb2x1bW5zKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGNvbHM6IHRoaXMucHJvcHMuY29sdW1ucyB9KTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocHJldlByb3BzLnNpemUgIT09IHRoaXMucHJvcHMuc2l6ZSkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyB0YWJsZVNpemU6IHRoaXMucHJvcHMuc2l6ZSB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXRDb2x1bW4oKSB7XHJcbiAgICBjb25zdCB7IGNvbHMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCBuZXdDb2xzOiBhbnkgPSBbXTtcclxuICAgIGxldCBjb2xzcyA9IGNvbHMgfHwgW107XHJcbiAgICBjb2xzcy5tYXAoKGNvbDogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGxldCB0ZW1wID0ge1xyXG4gICAgICAgIC4uLmNvbCxcclxuICAgICAgICBvbkhlYWRlckNlbGw6IChjb2x1bW46IHsgd2lkdGg6IGFueSB9KSA9PiAoe1xyXG4gICAgICAgICAgd2lkdGg6IGNvbHVtbi53aWR0aCxcclxuICAgICAgICAgIG9uUmVzaXplOiB0aGlzLmhhbmRsZVJlc2l6ZShpbmRleCksXHJcbiAgICAgICAgfSksXHJcbiAgICAgIH07XHJcbiAgICAgIG5ld0NvbHMucHVzaCh0ZW1wKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGNvbHVtbnM6IG5ld0NvbHMsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOa4hemZpOmAieS4reminOiJslxyXG4gICAqL1xyXG4gIGNsZWFyU2VsZWN0Q29sb3IoKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHsgYWN0aXZlSW5kZXg6IC0xIH0pO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBnZXRQYWdpbmF0aW9uQnlTdG9yZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JlLmdldFBhZ2luYXRpb24oKTtcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlKHBhZ2luYXRpb24sIGZpbHRlcnMsIHNvcnRlciwgZXh0cmEpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgYXV0b09uQ2hhbmdlID0gdHJ1ZSxcclxuICAgICAgYXV0b1NvcnQsXHJcbiAgICAgIGF1dG9QYWdpbmF0aW9uLFxyXG4gICAgICBvbkNoYW5nZSxcclxuICAgICAgc3RvcmUsXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgZmlsdGVyUGFyYW1zIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgaXNNdWx0aXBsZSA9IEFycmF5LmlzQXJyYXkoc29ydGVyKTtcclxuICAgIGlmIChhdXRvT25DaGFuZ2UgPT09IGZhbHNlIHx8ICFzdG9yZSkge1xyXG4gICAgICBvbkNoYW5nZSAmJiBvbkNoYW5nZShwYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaGFuZGxlUGFnaW5hdGlvbiA9ICgpID0+IHtcclxuICAgICAgbGV0IHBhcmFtcyA9IHt9IGFzIHtcclxuICAgICAgICBzaXplPzogc3RyaW5nO1xyXG4gICAgICAgIHBhZ2VTaXplPzogc3RyaW5nO1xyXG4gICAgICAgIGFzY3M/OiBzdHJpbmc7XHJcbiAgICAgICAgZGVzY3M/OiBzdHJpbmc7XHJcbiAgICAgICAgW3Byb3BOYW1lOiBzdHJpbmddOiBzdHJpbmc7XHJcbiAgICAgIH07XHJcbiAgICAgIGNvbnN0IHBhZ2luZyA9IHRoaXMuZ2V0UGFnaW5hdGlvbkJ5U3RvcmUoKSB8fCB7fTtcclxuICAgICAgaWYgKCFpc0VtcHR5T2JqKHBhZ2luYXRpb24pKSB7XHJcbiAgICAgICAgY29uc3QgcCA9IHtcclxuICAgICAgICAgIFtwYWdpbmcuY3VycmVudEtleSB8fCBcImN1cnJlbnRcIl06IHBhZ2luYXRpb24uY3VycmVudCxcclxuICAgICAgICAgIFtwYWdpbmcucGFnZVNpemVLZXkgfHwgXCJzaXplXCJdOiBwYWdpbmF0aW9uLnBhZ2VTaXplLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbihwYXJhbXMsIHApO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBhc2NQYXJhbXMgPSB0aGlzLmdldFNvcnRQYXJhbShzb3J0ZXIsIHRydWUpO1xyXG4gICAgICBpZiAoaXNNdWx0aXBsZSkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBzb3J0ZXIgfSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoIWlzTXVsdGlwbGUgJiYgIWlzRW1wdHlPYmooc29ydGVyKSkge1xyXG4gICAgICAgIHNvcnRlci5jb2x1bW4gJiZcclxuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBzb3J0ZXI6IFtzb3J0ZXJdLCBkZWZhdWx0U29ydDogZmFsc2UgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHNvcnRlcjogW10gfSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgZmlsdGVycyxcclxuICAgICAgICBleHRyYSxcclxuICAgICAgfSk7XHJcbiAgICAgIHBhcmFtcyA9IHsgLi4uZmlsdGVyUGFyYW1zLCAuLi5wYXJhbXMsIC4uLmFzY1BhcmFtcyB9O1xyXG4gICAgICBhdXRvU29ydCAmJiB0aGlzLnN0b3JlLnJlbG9hZCh7IHBhcmFtcyB9KTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3Qgb25DaGFuZ2VGbiA9IHRoaXMucHJvcHMub25DaGFuZ2U7XHJcblxyXG4gICAgYXV0b1BhZ2luYXRpb24gJiYgaGFuZGxlUGFnaW5hdGlvbigpO1xyXG4gICAgLy8g55So5oi35Lyg5LqGb25DaGFuZ2Xkv53nlZnnlKjmiLfoh6rkuLvlpITnkIbooajmoLzlj5jljJbnmoTmnYPliptcclxuICAgIGlmIChvbkNoYW5nZUZuKSB7XHJcbiAgICAgIHV0aWxzLmNhbGxiYWNrKG9uQ2hhbmdlRm4sIHRoaXMsIFtwYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRTdG9yZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6I635Y+W5pWw5o2u5qih5Z6L5a+56LGhXHJcbiAgICovXHJcbiAgZ2V0TW9kZWwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5nZXRNb2RlbCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6I+c5Y2V5pCc57Si6L+H5ruk5pi+56S6XHJcbiAgICogQHBhcmFtIHtTdHJpbmd9IHZhbFxyXG4gICAqL1xyXG4gIGhhbmRsZVNlYXJjaCh2YWwsIGZpZWxkT3B0aW9uLCBzZWFyY2hDb2xvcikge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlYXJjaFRleHQ6IHZhbCxcclxuICAgICAgZmllbGRPcHRpb246IGZpZWxkT3B0aW9uLFxyXG4gICAgICBzZWFyY2hDb2xvcjogc2VhcmNoQ29sb3IsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaooeWdl+WIl+ihqOenu+WKqOaOkuW6j1xyXG4gICAqL1xyXG4gIG1vdmVSb3cgPSAoZHJhZ0luZGV4LCBob3ZlckluZGV4LCBkcmFnLCB0YXJnZXQpID0+IHtcclxuICAgIGNvbnN0IF90aGlzID0gdGhpcztcclxuICAgIGxldCBkcmFnTm9kZSA9IGRyYWcucmVjb3JkO1xyXG4gICAgbGV0IHRhcmdldE5vZGUgPSB0YXJnZXQucmVjb3JkO1xyXG4gICAgZHJhZ05vZGUubW92ZUFycmF5KGRyYWdOb2RlLCB0YXJnZXROb2RlKTtcclxuICAgIGxldCBpZHMgPSBkcmFnTm9kZS5wYXJlbnROb2RlLmdldENoaWxkTm9kZUlkcygpO1xyXG4gICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgaWQ6IGRyYWdOb2RlLmlkLFxyXG4gICAgICBwYXJlbnRJZDogZHJhZ05vZGUuYXR0cmlidXRlLnBhcmVudElkLFxyXG4gICAgICBpZHM6IGlkcyxcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMucHJvcHMubW92ZVJvdykge1xyXG4gICAgICB0aGlzLnByb3BzLm1vdmVSb3cocGFyYW1zKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc3RvcmUucmVsb2FkKCk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgZmlsdGVyQ29sdW1uKGNoZWNrZWRWYWx1ZSkge1xyXG4gICAgaWYgKGNoZWNrZWRWYWx1ZS5sZW5ndGggPT0gMCkge1xyXG4gICAgICBtZXNzYWdlLndhcm5pbmcoXCLoh7PlsJHmmL7npLrkuIDliJfvvIFcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGZpbHRlckNvbHVtbnMgPSB0aGlzLnByb3BzLmNvbHVtbnMubWFwKChjb2w6IENvbHVtblR5cGU8e30+KSA9PiB7XHJcbiAgICAgIGNvbnN0IG5ld0NvbCA9IHsgLi4uY29sIH0gYXMgQ29sdW1uVHlwZTx7fT4gJiB7IGluaXRTaG93OiBib29sZWFuIH07XHJcbiAgICAgIGlmIChjaGVja2VkVmFsdWUuaW5jbHVkZXMoY29sLmRhdGFJbmRleCkpIHtcclxuICAgICAgICBuZXdDb2wuaW5pdFNob3cgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5ld0NvbC5pbml0U2hvdyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBuZXdDb2w7XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IHsgcmVzaXplQ29sdW1uIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKCFyZXNpemVDb2x1bW4pIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgY29sdW1uczogZmlsdGVyQ29sdW1ucyxcclxuICAgICAgICBjaGVja0NvbHVtbjogY2hlY2tlZFZhbHVlLFxyXG4gICAgICAgIGRlZmF1bHRDaGVjazogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgY29sczogZmlsdGVyQ29sdW1ucyxcclxuICAgICAgICBjaGVja0NvbHVtbjogY2hlY2tlZFZhbHVlLFxyXG4gICAgICAgIGRlZmF1bHRDaGVjazogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRTb3J0UGFyYW0oc29ydGVyLCBzb3J0U3RhdGUgPSBmYWxzZSkge1xyXG4gICAgY29uc3QgaXNNdWx0aXBsZSA9IEFycmF5LmlzQXJyYXkoc29ydGVyKTtcclxuICAgIGNvbnN0IHsgc29ydFNlYXJjaCA9IHRydWUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIXNvcnRTZWFyY2gpIHtcclxuICAgICAgcmV0dXJuIHt9O1xyXG4gICAgfVxyXG4gICAgbGV0IHNvcnRJbmZvID0ge307XHJcbiAgICBsZXQgb3JkZXJJdGVtcyA9IFtdO1xyXG4gICAgaWYgKCFpc0VtcHR5T2JqKHNvcnRlcikgJiYgIWlzTXVsdGlwbGUgJiYgc29ydGVyLmNvbHVtbikge1xyXG4gICAgICBvcmRlckl0ZW1zID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGNvbHVtbjogc29ydGVyLmNvbHVtbi5maWVsZCB8fCBzb3J0ZXIuY29sdW1uLmRhdGFJbmRleCxcclxuICAgICAgICAgIGFzYzogc29ydGVyLm9yZGVyID09IFwiYXNjZW5kXCIsXHJcbiAgICAgICAgfSxcclxuICAgICAgXTtcclxuICAgICAgaWYgKHNvcnRlci5jb2x1bW4pIHNvcnRJbmZvW3NvcnRlci5jb2x1bW4uZGF0YUluZGV4XSA9IHNvcnRlci5vcmRlcjtcclxuICAgIH0gZWxzZSBpZiAoaXNNdWx0aXBsZSkge1xyXG4gICAgICBzb3J0ZXIuZm9yRWFjaCgodikgPT4ge1xyXG4gICAgICAgIHNvcnRJbmZvW3YuY29sdW1uLmRhdGFJbmRleF0gPSB2Lm9yZGVyO1xyXG4gICAgICAgIGxldCBmaWVsZCA9IHYuY29sdW1uLmZpZWxkIHx8IHYuY29sdW1uLmRhdGFJbmRleDtcclxuICAgICAgICBvcmRlckl0ZW1zLnB1c2goe1xyXG4gICAgICAgICAgY29sdW1uOiBmaWVsZCxcclxuICAgICAgICAgIGFzYzogdi5vcmRlciA9PSBcImFzY2VuZFwiLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmIChzb3J0U3RhdGUpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgc29ydEluZm86IHNvcnRJbmZvLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB7IG9yZGVySXRlbXM6IEpTT04uc3RyaW5naWZ5KG9yZGVySXRlbXMpIH07XHJcbiAgfVxyXG4gIGlzQmV5b25kKGUpIHtcclxuICAgIGNvbnN0IGV2ID0gd2luZG93LmV2ZW50IHx8IGU7IC8vIOa1j+iniOWZqOWFvOWuue+8jOacgOWlveWGmeS4gOS4i1xyXG4gICAgY29uc3QgdGV4dFJhbmdlID0gKGVsKSA9PiB7XHJcbiAgICAgIGNvbnN0IHRleHRDb250ZW50ID0gZWw7XHJcbiAgICAgIGNvbnN0IHRhcmdldFcgPSB0ZXh0Q29udGVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcclxuICAgICAgY29uc3QgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xyXG4gICAgICByYW5nZS5zZXRTdGFydCh0ZXh0Q29udGVudCwgMCk7XHJcbiAgICAgIHJhbmdlLnNldEVuZCh0ZXh0Q29udGVudCwgdGV4dENvbnRlbnQuY2hpbGROb2Rlcy5sZW5ndGgpO1xyXG4gICAgICBjb25zdCByYW5nZVdpZHRoID0gcmFuZ2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XHJcbiAgICAgIHJldHVybiByYW5nZVdpZHRoID4gdGFyZ2V0VztcclxuICAgIH07XHJcbiAgICByZXR1cm4gIXRleHRSYW5nZShldi50YXJnZXQpOyAvLyB0YXJnZXTlj6/ku6Xkv53or4HlvZPliY3liJLov4fnmoRkb23oioLngrnkuIDnm7Tkv53mjIHmmK86ZWwtdG9vbHRpcF9fdHJpZ2dlclxyXG4gIH1cclxuICBzZXRTZWxlY3RlZFJvd0tleXMoZGF0YTogQXJyYXk8U3RyaW5nIHwgTnVtYmVyPikge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlbGVjdGVkUm93S2V5czogZGF0YSxcclxuICAgIH0pO1xyXG4gIH1cclxuICBzZXRTZWxlY3RlZFJvd0RhdGFzKGRhdGE6IEFycmF5PE9iamVjdD4pIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzOiBkYXRhLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGdldENvbHVtbnMoKSB7XHJcbiAgICBjb25zdCB7IGNvbHVtbnMsIHNvcnRUeXBlLCBzb3J0SW5mbyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgc29ydEZpZWxkcyA9IFtdIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgZGVmYXVsdFNob3dDb2xzID0gY29sdW1ucy5maWx0ZXIoKGNvbHMpID0+IGNvbHMuaW5pdFNob3cgIT09IGZhbHNlKTtcclxuICAgIGNvbnN0IGNvbHMgPSBkZWZhdWx0U2hvd0NvbHMubWFwKChjb2wsIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmIChjb2wuZWxsaXBzaXMgJiYgIWNvbC5yZW5kZXIpIHtcclxuICAgICAgICBjb2wuZWxsaXBzaXMgPSB7XHJcbiAgICAgICAgICBzaG93VGl0bGU6IGZhbHNlLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29sLnJlbmRlciA9ICh0ZXh0KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6IFwiaW5saW5lLXRhYmxlXCIgfX0+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgdGl0bGU9e3RleHR9XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy10YWJsZS10ZXh0XCIpfVxyXG4gICAgICAgICAgICAgICAgc3R5bGU9e3sgd2lkdGg6IGNvbC53aWR0aCB8fCBcIjEwMCVcIiB9fVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt0ZXh0fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHNvcnRGaWVsZHMuaW5kZXhPZihjb2wuZGF0YUluZGV4KSA+IC0xKSB7XHJcbiAgICAgICAgaWYgKHNvcnRUeXBlID09IFwic2luZ2xlXCIpIHtcclxuICAgICAgICAgIGNvbC5zb3J0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgY29sLnNvcnRPcmRlciA9IHNvcnRJbmZvW2NvbC5kYXRhSW5kZXhdXHJcbiAgICAgICAgICAgID8gc29ydEluZm9bY29sLmRhdGFJbmRleF1cclxuICAgICAgICAgICAgOiBudWxsO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoc29ydFR5cGUgPT0gXCJtdWx0aXBsZVwiKSB7XHJcbiAgICAgICAgICBjb2wuc29ydGVyID0geyBtdWx0aXBsZTogaW5kZXggfTtcclxuICAgICAgICAgIGNvbC5zb3J0T3JkZXIgPSBzb3J0SW5mb1tjb2wuZGF0YUluZGV4XVxyXG4gICAgICAgICAgICA/IHNvcnRJbmZvW2NvbC5kYXRhSW5kZXhdXHJcbiAgICAgICAgICAgIDogbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGNvbDtcclxuICAgIH0pO1xyXG4gICAgY29scy5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmICghaXNFbXB0eU9iaihpdGVtLmZpbHRlclByb3BzKSkge1xyXG4gICAgICAgIGxldCBvYmogPSB7IC4uLml0ZW0gfTtcclxuICAgICAgICBjb25zdCB7IHR5cGUsIHByb3BzLCBzZWFyY2hLZXkgfSA9IGl0ZW0uZmlsdGVyUHJvcHM7XHJcbiAgICAgICAgbGV0IERpdiA9IG51bGw7XHJcbiAgICAgICAgbGV0IHRleHQgPSBpdGVtLnRpdGxlO1xyXG4gICAgICAgIERpdiA9IGdldE5vZGUodHlwZSwge1xyXG4gICAgICAgICAgcGxhY2Vob2xkZXI6IGDmkJzntKIke3RleHR9YCxcclxuICAgICAgICAgIC4uLnByb3BzLFxyXG4gICAgICAgICAgcmVmOiB0aGlzLnRhYmxlU2VhcmNoUmVmLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIG9iaiA9IHtcclxuICAgICAgICAgIGZpbHRlckRyb3Bkb3duOiAoe1xyXG4gICAgICAgICAgICBzZXRTZWxlY3RlZEtleXMsXHJcbiAgICAgICAgICAgIHNlbGVjdGVkS2V5cyxcclxuICAgICAgICAgICAgY29uZmlybSxcclxuICAgICAgICAgICAgY2xlYXJGaWx0ZXJzLFxyXG4gICAgICAgICAgfSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtc2VhcmNoXCIpfT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtc2VhcmNoLXNwYWNlXCIpfT5cclxuICAgICAgICAgICAgICAgICAge0Rpdn1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPFNwYWNlPlxyXG4gICAgICAgICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbmZpcm0oKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZmlsdGVyUGFyYW1zIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IG5ld0ZpbHRlclBhcmFtcyA9IHsgLi4uZmlsdGVyUGFyYW1zIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQga2V5ID0gaXRlbS5maWVsZCB8fCBpdGVtLmRhdGFJbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAgIG5ld0ZpbHRlclBhcmFtc1trZXldID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZVNlYXJjaFJlZi5jdXJyZW50Py5nZXRWYWx1ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmFtczogeyAuLi5uZXdGaWx0ZXJQYXJhbXMgfSxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc29ydFBhcmFtID0gdGhpcy5nZXRTb3J0UGFyYW0odGhpcy5zdGF0ZS5zb3J0ZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5sb2FkKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7IC4uLm5ld0ZpbHRlclBhcmFtcywgLi4uc29ydFBhcmFtIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtc2VhcmNoLWJ1dHRvblwiKX1cclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIOafpeivolxyXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvU3BhY2U+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZmlsdGVySWNvbjogKCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gPFNlYXJjaE91dGxpbmVkIC8+O1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLm9iaixcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbHNbaW5kZXhdID0gb2JqO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBjb2xzO1xyXG4gIH1cclxuICByZW5kZXJUb29sQmFyKCkge1xyXG4gICAgbGV0IHsgdGFibGVTaXplLCBjb2x1bW5zLCBzb3J0VHlwZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGxldCB7IGZpbHRlckNvbHVtbiwgY29sdW1uczogY29sTGlzdHMsIHRvb2xiYXIgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHRhYmxlVG9vbCwgc3RvcmVSZXF1ZXN0Q29uZmlnID0ge30gfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHRvb2xzID0gW1wicmVmcmVzaFwiLCBcInNpemVcIiwgXCJzb3J0XCIsIFwiY29sdW1uXCJdO1xyXG4gICAgbGV0IHRvb2xzQ2xpY2sgPSB7fSBhcyBhbnk7XHJcbiAgICBpZiAodG9vbGJhciA9PSB0cnVlKSB7XHJcbiAgICAgIHRvb2xzID0gdG9vbGJhci5vblRvb2xDbGlja1xyXG4gICAgICAgID8gdG9vbGJhci5vblRvb2xDbGlja1xyXG4gICAgICAgIDogW1wicmVmcmVzaFwiLCBcInNpemVcIiwgXCJzb3J0XCIsIFwiY29sdW1uXCJdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdG9vbHMgPSB0b29sYmFyLnRvb2xzXHJcbiAgICAgICAgPyB0b29sYmFyLnRvb2xzXHJcbiAgICAgICAgOiB0YWJsZVRvb2wudG9vbHNcclxuICAgICAgICAgID8gdGFibGVUb29sLnRvb2xzXHJcbiAgICAgICAgICA6IHRvb2xzO1xyXG4gICAgICB0b29sc0NsaWNrID0gdG9vbGJhci5vblRvb2xDbGljayA/IHRvb2xiYXIub25Ub29sQ2xpY2sgOiB7fTtcclxuICAgIH1cclxuICAgIGNvbnN0IHNpemVJdGVtID0gW1xyXG4gICAgICB7IHRpdGxlOiBcIuWuveadvlwiLCBrZXk6IFwiZGVmYXVsdFwiIH0sXHJcbiAgICAgIHsgdGl0bGU6IFwi5Lit562JXCIsIGtleTogXCJtaWRkbGVcIiB9LFxyXG4gICAgICB7IHRpdGxlOiBcIue0p+WHkVwiLCBrZXk6IFwic21hbGxcIiB9LFxyXG4gICAgXTtcclxuICAgIGNvbnN0IHNvcnRJdGVtID0gW1xyXG4gICAgICB7IHRpdGxlOiBcIuWNleWtl+auteaOkuW6j1wiLCBrZXk6IFwic2luZ2xlXCIgfSxcclxuICAgICAgeyB0aXRsZTogXCLlpJrlrZfmrrXmjpLluo9cIiwga2V5OiBcIm11bHRpcGxlXCIgfSxcclxuICAgIF07XHJcbiAgICBjb25zdCBzb3J0Q29udGVudCA9IChcclxuICAgICAgPD5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy10YWJsZS1jb3RlbnQtdGl0bGVcIil9XHJcbiAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICBjdXJzb3I6IHRoaXMuc3RhdGUuZGVmYXVsdFNvcnQgPyBcIm5vdC1hbGxvd2VkXCIgOiBcInBvaW50ZXJcIixcclxuICAgICAgICAgICAgY29sb3I6IHRoaXMuc3RhdGUuZGVmYXVsdFNvcnQgJiYgXCJyZ2JhKDAsMCwwLC40NSlcIixcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnN0YXRlLmRlZmF1bHRTb3J0KSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBzb3J0ZXI6IFtdLCBzb3J0SW5mbzoge30sIGRlZmF1bHRTb3J0OiB0cnVlIH0pO1xyXG4gICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7IC4uLnRoaXMuc3RhdGUuZmlsdGVyUGFyYW1zIH07XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUucmVsb2FkKHsgcGFyYW1zIH0pO1xyXG4gICAgICAgICAgfX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICDmgaLlpI3pu5jorqTmjpLluo9cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB7c29ydEl0ZW0ubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGtleT17aXRlbS5rZXl9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgIHNvcnRlcjogW10sXHJcbiAgICAgICAgICAgICAgICAgIHNvcnRJbmZvOiB7fSxcclxuICAgICAgICAgICAgICAgICAgc29ydFR5cGU6IGl0ZW0ua2V5LFxyXG4gICAgICAgICAgICAgICAgICBkZWZhdWx0U29ydDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHsgLi4udGhpcy5zdGF0ZS5maWx0ZXJQYXJhbXMgfTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUucmVsb2FkKHsgcGFyYW1zIH0pO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7c29ydFR5cGUgPT0gaXRlbS5rZXkgPyAoXHJcbiAgICAgICAgICAgICAgICA8YT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy10YWJsZS1jb250ZW50LXRpZW1cIil9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgd2lkdGg6IDIwIH19PlxyXG4gICAgICAgICAgICAgICAgICAgICAge3NvcnRUeXBlID09IGl0ZW0ua2V5ICYmIDxDaGVja091dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+IHtpdGVtLnRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy10YWJsZS1jb250ZW50LXRpZW1cIil9PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAyMCB9fT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj4ge2l0ZW0udGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSl9XHJcbiAgICAgICAge3RoaXMuc3RhdGUuc29ydGVyLmxlbmd0aCA+IDAgJiYgKFxyXG4gICAgICAgICAgPD5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLWNvdGVudC10aXRsZVwiKX1cclxuICAgICAgICAgICAgICBzdHlsZT17eyBjb2xvcjogXCJyZ2JhKDAsMCwwLC40NSlcIiB9fVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAg5b2T5YmN5o6S5bqPXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB7dGhpcy5zdGF0ZS5zb3J0ZXIubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLWNvbnRlbnQtdGllbVwiKX1cclxuICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyB3aWR0aDogMjAgfX0+XHJcbiAgICAgICAgICAgICAgICAgICAge2l0ZW0ub3JkZXIgPT0gXCJhc2NlbmRcIiA/IChcclxuICAgICAgICAgICAgICAgICAgICAgIDxTb3J0QXNjZW5kaW5nT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgPFNvcnREZXNjZW5kaW5nT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj4ge2l0ZW0uY29sdW1uLnRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICA8Lz5cclxuICAgICAgICApfVxyXG4gICAgICA8Lz5cclxuICAgICk7XHJcbiAgICBjb25zdCBzaXplQ29udGVudCA9IChcclxuICAgICAgPD5cclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLWNvdGVudC10aXRsZVwiKX0+XHJcbiAgICAgICAgICDooajmoLzlr4bluqZcclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB7c2l6ZUl0ZW0ubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGtleT17aXRlbS5rZXl9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgIHRhYmxlU2l6ZTogaXRlbS5rZXksXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3RhYmxlU2l6ZSA9PSBpdGVtLmtleSA/IChcclxuICAgICAgICAgICAgICAgIDxhPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLWNvbnRlbnQtdGllbVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyB3aWR0aDogMjAgfX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7dGFibGVTaXplID09IGl0ZW0ua2V5ICYmIDxDaGVja091dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+IHtpdGVtLnRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy10YWJsZS1jb250ZW50LXRpZW1cIil9PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAyMCB9fT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj4ge2l0ZW0udGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSl9XHJcbiAgICAgIDwvPlxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBkZWZhdWx0U2hvd0NvbHMgPSBjb2x1bW5zLmZpbHRlcigoY29scykgPT4gY29scy5pbml0U2hvdyAhPT0gZmFsc2UpO1xyXG5cclxuICAgIGNvbnN0IGNvbnRlbnQgPSAoXHJcbiAgICAgIDxDaGVja2JveC5Hcm91cFxyXG4gICAgICAgIG9uQ2hhbmdlPXt0aGlzLmZpbHRlckNvbHVtbi5iaW5kKHRoaXMpfVxyXG4gICAgICAgIG9wdGlvbnM9e2NvbExpc3RzLm1hcChcclxuICAgICAgICAgIChjb2w6IENvbHVtblR5cGU8e30+ICYgeyBmaWx0ZXJDb2x1bW46IGJvb2xlYW47IGRhdGFJbmRleDogYW55IH0pID0+IHtcclxuICAgICAgICAgICAgaWYgKCFjb2wuZGF0YUluZGV4KSB7XHJcbiAgICAgICAgICAgICAgY29sLmRhdGFJbmRleCA9IGNvbC50aXRsZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgIGxhYmVsOiBjb2wudGl0bGUsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IGNvbC5kYXRhSW5kZXgsXHJcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IGNvbC5maWx0ZXJDb2x1bW4gPT09IGZhbHNlLFxyXG4gICAgICAgICAgICB9IGFzIENoZWNrYm94T3B0aW9uVHlwZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApfVxyXG4gICAgICAgIC8vIGRlZmF1bHRWYWx1ZT17ZGVmYXVsdFNob3dDb2xzLm1hcCgoY29sKSA9PiBjb2wuZGF0YUluZGV4KX1cclxuICAgICAgICB2YWx1ZT17XHJcbiAgICAgICAgICB0aGlzLnN0YXRlLmRlZmF1bHRDaGVja1xyXG4gICAgICAgICAgICA/IGRlZmF1bHRTaG93Q29scy5tYXAoKGNvbCkgPT4gY29sLmRhdGFJbmRleClcclxuICAgICAgICAgICAgOiB0aGlzLnN0YXRlLmNoZWNrQ29sdW1uXHJcbiAgICAgICAgfVxyXG4gICAgICA+PC9DaGVja2JveC5Hcm91cD5cclxuICAgICk7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLXRvb2wtYmFyXCIpfT5cclxuICAgICAgICB7dG9vbHMuaW5kZXhPZihcImNvbHVtblwiKSA+IC0xICYmIChcclxuICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZm9udFNpemU6IDE0IH19PlxyXG4gICAgICAgICAgICA8UG9wb3ZlclxyXG4gICAgICAgICAgICAgIHRpdGxlPVwi6YCJ5oup5pi+56S655qE5YiXXCJcclxuICAgICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVJpZ2h0XCJcclxuICAgICAgICAgICAgICB0cmlnZ2VyPVwiY2xpY2tcIlxyXG4gICAgICAgICAgICAgIG92ZXJsYXlTdHlsZT17eyBtaW5XaWR0aDogNDEwLCBtYXhXaWR0aDogNDUwIH19XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8QXBwc3RvcmVPdXRsaW5lZFxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtdGgtYXBwLXN0b3JlLWljb25cIil9XHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9Qb3BvdmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgICB7dG9vbHMuaW5kZXhPZihcInNvcnRcIikgPiAtMSAmJiAoXHJcbiAgICAgICAgICA8ZGl2IHN0eWxlPXt7IG1hcmdpblJpZ2h0OiA4LCBmb250U2l6ZTogMTQgfX0+XHJcbiAgICAgICAgICAgIDxQb3BvdmVyIHBsYWNlbWVudD1cImJvdHRvbVwiIGNvbnRlbnQ9e3NvcnRDb250ZW50fSB0cmlnZ2VyPVwiY2xpY2tcIj5cclxuICAgICAgICAgICAgICA8U29ydEFzY2VuZGluZ091dGxpbmVkIC8+XHJcbiAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICl9XHJcbiAgICAgICAge3Rvb2xzLmluZGV4T2YoXCJzaXplXCIpID4gLTEgJiYgKFxyXG4gICAgICAgICAgPGRpdiBzdHlsZT17eyBtYXJnaW5SaWdodDogOCwgZm9udFNpemU6IDE0IH19PlxyXG4gICAgICAgICAgICA8UG9wb3ZlciBwbGFjZW1lbnQ9XCJib3R0b21cIiBjb250ZW50PXtzaXplQ29udGVudH0gdHJpZ2dlcj1cImNsaWNrXCI+XHJcbiAgICAgICAgICAgICAgPENvbHVtbkhlaWdodE91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICl9XHJcbiAgICAgICAge3Rvb2xzLmluZGV4T2YoXCJyZWZyZXNoXCIpID4gLTEgJiYgKFxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBzdHlsZT17eyBtYXJnaW5SaWdodDogOCwgZm9udFNpemU6IDE0LCBjdXJzb3I6IFwicG9pbnRlclwiIH19XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7IC4uLnRoaXMuc3RhdGUuZmlsdGVyUGFyYW1zIH07XHJcbiAgICAgICAgICAgICAgaWYgKHRvb2xzQ2xpY2sub25SZWZyZXNoKSB7XHJcbiAgICAgICAgICAgICAgICB0b29sc0NsaWNrLm9uUmVmcmVzaCgpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLmxvYWQoeyBwYXJhbXMgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8UmVkb091dGxpbmVkIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXRlLnNlbGVjdGVkUm93S2V5cztcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRSb3dEYXRhcygpIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXRlLnNlbGVjdGVkUm93RGF0YXM7XHJcbiAgfVxyXG4gIHJlc2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlbGVjdGVkUm93S2V5czogW10sXHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXM6IFtdLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJvd1NlbGVjdGlvbk9uU2VsZWN0KHJlY29yZDogYW55LCBzZWxlY3RlZDogYW55KSB7XHJcbiAgICBjb25zdCB7IHNlbGVjdGVkUm93S2V5cywgc2VsZWN0ZWRSb3dEYXRhcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGxldCB7IHJvd0tleSA9IFwiaWRcIiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBuZXdTZWxlY3RlZFJvd0tleXMgPSBbLi4uc2VsZWN0ZWRSb3dLZXlzXTtcclxuICAgIGxldCBuZXdTZWxlY3RlZFJvd0RhdGFzID0gWy4uLnNlbGVjdGVkUm93RGF0YXNdO1xyXG4gICAgaWYgKHNlbGVjdGVkKSB7XHJcbiAgICAgIG5ld1NlbGVjdGVkUm93S2V5cyA9IFsuLi5uZXdTZWxlY3RlZFJvd0tleXMsIHJlY29yZFtyb3dLZXldXTtcclxuICAgICAgbmV3U2VsZWN0ZWRSb3dEYXRhcyA9IFsuLi5uZXdTZWxlY3RlZFJvd0RhdGFzLCByZWNvcmRdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0gPT09IHJlY29yZFtyb3dLZXldKSB7XHJcbiAgICAgICAgICBuZXdTZWxlY3RlZFJvd0tleXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW1bcm93S2V5XSA9PT0gcmVjb3JkW3Jvd0tleV0pIHtcclxuICAgICAgICAgIG5ld1NlbGVjdGVkUm93RGF0YXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlbGVjdGVkUm93S2V5czogbmV3U2VsZWN0ZWRSb3dLZXlzLFxyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzOiBuZXdTZWxlY3RlZFJvd0RhdGFzLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJvd1NlbGVjdGlvbk9uU2VsZWN0QWxsKHNlbGVjdGVkOiBhbnksIHNlbGVjdGVkUm93czogYW55LCBjaGFuZ2VSb3dzOiBhbnkpIHtcclxuICAgIGNvbnN0IHsgc2VsZWN0ZWRSb3dLZXlzLCBzZWxlY3RlZFJvd0RhdGFzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgeyByb3dLZXkgPSBcImlkXCIgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgbmV3aWRzOiBhbnkgPSBbXTtcclxuICAgIGxldCBuZXdkYXRhczogYW55ID0gW107XHJcbiAgICBpZiAoY2hhbmdlUm93cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBjaGFuZ2VJZHMgPSBjaGFuZ2VSb3dzLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtW3Jvd0tleV0pO1xyXG4gICAgICBpZiAoc2VsZWN0ZWQpIHtcclxuICAgICAgICBuZXdpZHMgPSBbLi4uc2VsZWN0ZWRSb3dLZXlzLCAuLi5jaGFuZ2VJZHNdO1xyXG4gICAgICAgIG5ld2RhdGFzID0gWy4uLnNlbGVjdGVkUm93RGF0YXMsIC4uLmNoYW5nZVJvd3NdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHNlbGVjdGVkUm93S2V5cy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGNoYW5nZUlkcy5pbmRleE9mKGl0ZW0pID09IC0xKSB7XHJcbiAgICAgICAgICAgIG5ld2lkcy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHNlbGVjdGVkUm93RGF0YXMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChjaGFuZ2VJZHMuaW5kZXhPZihpdGVtW3Jvd0tleV0pID09IC0xKSB7XHJcbiAgICAgICAgICAgIG5ld2RhdGFzLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG5ld2lkcyA9IFsuLi5zZWxlY3RlZFJvd0tleXNdO1xyXG4gICAgICBuZXdkYXRhcyA9IFsuLi5zZWxlY3RlZFJvd0RhdGFzXTtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWxlY3RlZFJvd0tleXM6IFsuLi5uZXdpZHNdLFxyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzOiBbLi4ubmV3ZGF0YXNdLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJlbmRlcigpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXMsXHJcbiAgICAgIHtcclxuICAgICAgICBsb2FkaW5nLFxyXG4gICAgICAgIGRhdGFTb3VyY2UsXHJcbiAgICAgICAgcGFnaW5hdGlvbiA9IHt9LFxyXG4gICAgICAgIHNlYXJjaFRleHQsXHJcbiAgICAgICAgZmllbGRPcHRpb24sXHJcbiAgICAgICAgc2VhcmNoQ29sb3IsXHJcbiAgICAgICAgdGFibGVTaXplLFxyXG4gICAgICB9ID0gdGhpcy5zdGF0ZSxcclxuICAgICAgcHJvcHMgPSB1dGlscy5vbWl0KFxyXG4gICAgICAgIHRoaXMucHJvcHMsXHJcbiAgICAgICAgW1xyXG4gICAgICAgICAgXCJzdG9yZVwiLFxyXG4gICAgICAgICAgXCJvbkNoYW5nZVwiLFxyXG4gICAgICAgICAgXCJjb2x1bW5zXCIsXHJcbiAgICAgICAgICBcInJlc2V0Q29sdW1uXCIsXHJcbiAgICAgICAgICBcInRvb2xiYXJcIixcclxuICAgICAgICAgIFwic29ydEZpZWxkc1wiLFxyXG4gICAgICAgICAgXCJmaWx0ZXJDb2x1bW5cIixcclxuICAgICAgICAgIFwic29ydFNlYXJjaFwiLFxyXG4gICAgICAgICAgXCJzaG93Um93U2VsZWN0aW9uXCIsXHJcbiAgICAgICAgXSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICByb3dLZXk6IFwiaWRcIixcclxuICAgICAgICAgIGNsaWNrQ2hhbmdlQ29sb3I6IGZhbHNlLFxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIGlmIChwcm9wcy5wYWdpbmF0aW9uICE9PSBmYWxzZSkge1xyXG4gICAgICBwcm9wcy5wYWdpbmF0aW9uID0ge1xyXG4gICAgICAgIHBvc2l0aW9uOiBbXCJib3R0b21SaWdodFwiXSxcclxuICAgICAgICBzaG93U2l6ZUNoYW5nZXI6IHRydWUsXHJcbiAgICAgICAgc2hvd1F1aWNrSnVtcGVyOiB0cnVlLFxyXG4gICAgICAgIC4uLnBhZ2luYXRpb24sXHJcbiAgICAgICAgLi4ucHJvcHMucGFnaW5hdGlvbixcclxuICAgICAgIFxyXG4gICAgICB9O1xyXG4gICAgICBpZiAocHJvcHMuc2hvd1RvdGFsID09IHRydWUpIHtcclxuICAgICAgICBwcm9wcy5wYWdpbmF0aW9uLnNob3dUb3RhbCA9IGZ1bmN0aW9uICh0b3RhbCwgW2Zyb20sIHRvXSkge1xyXG4gICAgICAgICAgLy8gcmV0dXJuIFwi5pi+56S6IFwiICsgZnJvbSArIFwiIC0gXCIgKyB0byArIFwi5p2h77yM5YWxIFwiICsgdG90YWwgKyBcIiDmnaFcIjtcclxuICAgICAgICAgIHJldHVybiBcIuWFsSBcIiArIHRvdGFsICsgXCIg5p2hXCI7XHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcHJvcHMub25DaGFuZ2UgPSBmdW5jdGlvbiAocGFnaW5hdGlvbiwgZmlsdGVycywgc29ydGVyLCBleHRyYSkge1xyXG4gICAgICBfdGhpcy5vbkNoYW5nZShfdGhpcy5zdGF0ZS5wYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhKTtcclxuICAgIH07XHJcbiAgICBpZiAocHJvcHMuY2xpY2tDaGFuZ2VDb2xvcikge1xyXG4gICAgICBjb25zdCBvblJvd0ZuID0gcHJvcHMub25Sb3c7XHJcbiAgICAgIHByb3BzLm9uUm93ID0gZnVuY3Rpb24gKHJlY29yZCwgaW5kZXgpIHtcclxuICAgICAgICB2YXIgY3VzdG9tID0gb25Sb3dGbiA/IG9uUm93Rm4ocmVjb3JkLCBpbmRleCkgOiB7fTtcclxuICAgICAgICBjb25zdCBvbkNsaWNrRm4gPSBjdXN0b20ub25DbGljaztcclxuICAgICAgICBjdXN0b20ub25DbGljayA9IChldmVudCkgPT4ge1xyXG4gICAgICAgICAgX3RoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICBhY3RpdmVJbmRleDogaW5kZXgsIC8v6I635Y+W54K55Ye76KGM55qE57Si5byVXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKG9uQ2xpY2tGbiwgX3RoaXMsIFtldmVudF0pO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIGN1c3RvbTtcclxuICAgICAgfTtcclxuICAgICAgcHJvcHMucm93Q2xhc3NOYW1lID0gZnVuY3Rpb24gKHJlY29yZCwgaW5kZXgpIHtcclxuICAgICAgICByZXR1cm4gaW5kZXggPT09IF90aGlzLnN0YXRlLmFjdGl2ZUluZGV4XHJcbiAgICAgICAgICA/IFwibnNjLXRhYmxlLWNsaWNrUm93U3R5bGVcIlxyXG4gICAgICAgICAgOiBcIlwiO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgbGV0IG5ld0RhdGFTb3VyY2UgPSBbXTtcclxuICAgIGlmIChzZWFyY2hUZXh0KSB7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSB0cmVlVXRpbHMuZ2V0U2VhcmNoTWVudURhdGFzKFxyXG4gICAgICAgIHRoaXMsXHJcbiAgICAgICAgc2VhcmNoVGV4dCxcclxuICAgICAgICBmaWVsZE9wdGlvbixcclxuICAgICAgICBzZWFyY2hDb2xvclxyXG4gICAgICApO1xyXG4gICAgICBuZXdEYXRhU291cmNlID0gZGF0YS50cmVlRGF0YXM7XHJcbiAgICAgIHByb3BzLmV4cGFuZGVkUm93S2V5cyA9IGRhdGEub3BlbktleXM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBuZXdEYXRhU291cmNlID0gZGF0YVNvdXJjZTtcclxuICAgIH1cclxuICAgIHByb3BzLnN0b3JlID0gcHJvcHMuc3RvcmUgfHwge307XHJcbiAgICBwcm9wcy5zdG9yZS5hdXRvTG9hZCA9IHByb3BzLnN0b3JlLmF1dG9Mb2FkID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZTtcclxuICAgIGNvbnN0IHsgZHJhZ2FibGUgfSA9IF90aGlzLnByb3BzO1xyXG4gICAgY29uc3QgZHJhZ2FibGVQcm9wcyA9XHJcbiAgICAgIGRyYWdhYmxlID09PSB0cnVlXHJcbiAgICAgICAgPyB7XHJcbiAgICAgICAgICBjb21wb25lbnRzOiBCb2R5Um93Q29tcG9uZW50LFxyXG4gICAgICAgICAgb25Sb3c6IChyZWNvcmQsIGluZGV4KSA9PiAoe1xyXG4gICAgICAgICAgICBpbmRleCxcclxuICAgICAgICAgICAgcmVjb3JkLFxyXG4gICAgICAgICAgICBtb3ZlUm93OiB0aGlzLm1vdmVSb3csXHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICB9XHJcbiAgICAgICAgOiB7fTtcclxuICAgIGxldCB7IHJlc2l6ZUNvbHVtbiB9ID0gdGhpcy5wcm9wcztcclxuXHJcbiAgICBjb25zdCByZXNpemVQcm9wcyA9XHJcbiAgICAgIHJlc2l6ZUNvbHVtbiA9PT0gdHJ1ZSA/IHsgY29tcG9uZW50czogdGhpcy5jb21wb25lbnRzIH0gOiBudWxsO1xyXG4gICAgY29uc3QgeyB0YWJsZVRvb2wgfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHRvb2xGbGFnID0gdHJ1ZTtcclxuICAgIGxldCB0b29scHJvcHMgPVxyXG4gICAgICB0aGlzLnByb3BzLnRvb2xiYXIgPT09IGZhbHNlIHx8IHRoaXMucHJvcHMudG9vbGJhcj8uc2hvdyA9PT0gZmFsc2VcclxuICAgICAgICA/IGZhbHNlXHJcbiAgICAgICAgOiB0cnVlO1xyXG4gICAgaWYgKCF0b29scHJvcHMpIHtcclxuICAgICAgdG9vbEZsYWcgPSB0b29scHJvcHM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0b29sRmxhZyA9IHRhYmxlVG9vbC5zaG93ID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnByb3BzLnNob3dSb3dTZWxlY3Rpb24pIHtcclxuICAgICAgY29uc3QgeyByb3dTZWxlY3Rpb24gPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgcHJvcHMgPSB7XHJcbiAgICAgICAgLi4ucHJvcHMsXHJcbiAgICAgICAgcm93U2VsZWN0aW9uOiB7XHJcbiAgICAgICAgICBzZWxlY3RlZFJvd0tleXM6IHRoaXMuc3RhdGUuc2VsZWN0ZWRSb3dLZXlzLFxyXG4gICAgICAgICAgb25TZWxlY3Q6IHRoaXMucm93U2VsZWN0aW9uT25TZWxlY3QuYmluZCh0aGlzKSxcclxuICAgICAgICAgIG9uU2VsZWN0QWxsOiB0aGlzLnJvd1NlbGVjdGlvbk9uU2VsZWN0QWxsLmJpbmQodGhpcyksXHJcbiAgICAgICAgICBjb2x1bW5XaWR0aDogNDAsXHJcbiAgICAgICAgICAuLi5yb3dTZWxlY3Rpb24sXHJcbiAgICAgICAgfSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgdGFibGVQcm9wczogY29uZmlnVGFibGVQcm9wcyB9ID0gY29uZmlnKCk7XHJcbiAgICBjb25zdCBEZWZhdWx0VGFibGUgPSAoXHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGVcIil9PlxyXG4gICAgICAgIHt0b29sRmxhZyAmJiB0aGlzLnJlbmRlclRvb2xCYXIoKX1cclxuICAgICAgICA8VGFibGVcclxuICAgICAgICAgIGNoaWxkcmVuQ29sdW1uTmFtZT1cImNoaWxkTm9kZXNcIlxyXG4gICAgICAgICAgc2hlaXRlbVxyXG4gICAgICAgICAgZGF0YVNvdXJjZT17bmV3RGF0YVNvdXJjZX1cclxuICAgICAgICAgIGNvbHVtbnM9e3RoaXMuZ2V0Q29sdW1ucygpfVxyXG4gICAgICAgICAgbG9hZGluZz17bG9hZGluZ31cclxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy10YWJsZS1jb250ZW50XCIpLCBwcm9wcy5jbGFzc05hbWUpfVxyXG4gICAgICAgICAgbG9jYWxlPXt7XHJcbiAgICAgICAgICAgIGVtcHR5VGV4dDogKFxyXG4gICAgICAgICAgICAgIDxOb0RhdGEgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtbm9kYXRhXCIpfSAvPlxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIHNjcm9sbD17eyB4OiBcIm1heC1jb250ZW50XCIgfX1cclxuICAgICAgICAgIHsuLi5jb25maWdUYWJsZVByb3BzfVxyXG4gICAgICAgICAgey4uLnJlc2l6ZVByb3BzfVxyXG4gICAgICAgICAgey4uLnByb3BzfVxyXG4gICAgICAgICAgey4uLmRyYWdhYmxlUHJvcHN9XHJcbiAgICAgICAgICBzaXplPXt0YWJsZVNpemV9XHJcbiAgICAgICAgICBwYWdpbmF0aW9uPXtmYWxzZX1cclxuICAgICAgICAvLyBzdHlsZT17eyBoZWlnaHQ6IDYwMCB9fVxyXG4gICAgICAgIC8+XHJcbiAgICAgICAge3Byb3BzLnBhZ2luYXRpb24gIT09IGZhbHNlICYmIChcclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtcGFnaW5hdGlvblwiKX0+XHJcbiAgICAgICAgICAgIDxQYWdpbmF0aW9uXHJcbiAgICAgICAgICAgICAgey4uLnByb3BzLnBhZ2luYXRpb259XHJcbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhwYWdlLCBwYWdlU2l6ZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZXh0cmEgPSB0aGlzLnN0YXRlLmV4dHJhO1xyXG4gICAgICAgICAgICAgICAgZXh0cmEuYWN0aW9uID0gXCJwYWdpbmF0ZVwiO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSgoeyBwYWdpbmF0aW9uPXt9IH0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICBwYWdpbmF0aW9uOiB7IC4uLnBhZ2luYXRpb24sIGN1cnJlbnQ6IHBhZ2UsIHBhZ2VTaXplIH0sXHJcbiAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMub25DaGFuZ2UoXHJcbiAgICAgICAgICAgICAgICAgIHsgY3VycmVudDogcGFnZSwgcGFnZVNpemUgfSxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5maWx0ZXIsXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuc29ydGVyLFxyXG4gICAgICAgICAgICAgICAgICBleHRyYVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiBkcmFnYWJsZSA9PT0gdHJ1ZSA/IChcclxuICAgICAgPERuZFByb3ZpZGVyIGJhY2tlbmQ9e0hUTUw1QmFja2VuZH0+e0RlZmF1bHRUYWJsZX08L0RuZFByb3ZpZGVyPlxyXG4gICAgKSA6IChcclxuICAgICAgRGVmYXVsdFRhYmxlXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgd2l0aFpoTG9jYWxlKE5TQ1RhYmxlKTtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUNFQSxnQkFBZ0IsRUFDaEJDLGFBQWEsRUFDYkMsb0JBQW9CLEVBQ3BCQyxjQUFjLEVBQ2RDLHFCQUFxQixFQUNyQkMsc0JBQXNCLEVBQ3RCQyxZQUFZLFFBQ1AsbUJBQW1CO0FBQzFCLFNBQVNDLFVBQVUsUUFBUSxtQkFBbUI7QUFDOUMsT0FBT0MsS0FBSyxJ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
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["AppstoreOutlined","CheckOutlined","ColumnHeightOutlined","SearchOutlined","SortAscendingOutlined","SortDescendingOutlined","RedoOutlined","isEmptyObj","Store","PageStore","utils","React","DndProvider","BodyRow","DndContextType","IBodyRowProps","treeUtils","BodyRowComponent","HTML5Backend","withZhLocale","Resizable","getLess","getNode","NoData","getStorage","config","cls","styles","ResizeableTitle","props","onResize","width","restProps","_objectWithoutProperties","_excluded","createElement","height","draggableOpts","enableUserSelectHack","NSCTable","Component","constructor","_autoType","_defineProperty","createRef","onBeforeLoad","load","header","cell","index","e","_ref","size","cols","state","nextColumns","_objectSpread","setState","ev","data","JSON","parse","_this","eventType","payload","tableSize","dragIndex","hoverIndex","drag","target","dragNode","record","targetNode","moveArray","ids","parentNode","getChildNodeIds","params","id","parentId","attribute","moveRow","store","reload","modal","type","storePrefix","autoType","content","dataSource","columns","loading","pagination","activeIndex","searchText","fieldOption","searchColor","sorts","filterParams","sortType","sorter","sortInfo","defaultSort","checkColumn","defaultCheck","selectedRowKeys","selectedRowDatas","filter","extra","_ref2","listeners","listenersProps","restStore","_excluded2","storeProps","model","component","options","callback","dataChanged","modelData","paging","getPagination","onErrorLoad","err","response","autoLoad","Object","assign","current","componentDidMount","resizeColumn","setData","window","addEventListener","listenMessage","componentWillUnmount","removeEventListener","componentDidUpdate","prevProps","preState","resetColumn","newCols","colss","map","col","temp","onHeaderCell","column","handleResize","push","clearSelectColor","getPaginationByStore","onChange","filters","autoOnChange","autoSort","autoPagination","isMultiple","Array","isArray","handlePagination","p","currentKey","pageSizeKey","pageSize","ascParams","getSortParam","onChangeFn","getStore","getModel","handleSearch","val","filterColumn","checkedValue","length","_message","warning","filterColumns","newCol","includes","dataIndex","initShow","sortState","arguments","undefined","sortSearch","orderItems","field","asc","order","forEach","v","stringify","isBeyond","event","textRange","el","textContent","targetW","getBoundingClientRect","range","document","createRange","setStart","setEnd","childNodes","rangeWidth","setSelectedRowKeys","setSelectedRowDatas","getColumns","sortFields","defaultShowCols","ellipsis","render","showTitle","text","style","display","title","className","indexOf","sortOrder","multiple","item","filterProps","obj","searchKey","Div","placeholder","concat","ref","tableSearchRef","filterDropdown","_ref3","setSelectedKeys","selectedKeys","confirm","clearFilters","_Space","_Button","onClick","_this$tableSearchRef$","newFilterParams","key","getValue","sortParam","filterIcon","renderToolBar","colLists","toolbar","tableTool","storeRequestConfig","tools","toolsClick","onToolClick","sizeItem","sortItem","sortContent","Fragment","cursor","color","sizeContent","_Checkbox","Group","bind","label","value","disabled","fontSize","_Popover","placement","trigger","overlayStyle","minWidth","maxWidth","marginRight","onRefresh","getSelectedRowKeys","getSelectedRowDatas","resetSelectedRowKeys","rowSelectionOnSelect","selected","rowKey","newSelectedRowKeys","newSelectedRowDatas","splice","rowSelectionOnSelectAll","selectedRows","changeRows","newids","newdatas","changeIds","_this$props$toolbar","omit","clickChangeColor","position","showSizeChanger","showQuickJumper","showTotal","total","_ref4","from","to","onRowFn","onRow","custom","onClickFn","rowClassName","newDataSource","getSearchMenuDatas","treeDatas","expandedRowKeys","openKeys","dragable","dragableProps","components","resizeProps","toolFlag","toolprops","show","showRowSelection","rowSelection","onSelect","onSelectAll","columnWidth","DefaultTable","_Table","_extends","childrenColumnName","sheitem","locale","emptyText","scroll","x","_Pagination","page","action","_ref5","backend","dragUrl"],"sources":["../../../src/components/base/table/index.tsx"],"sourcesContent":["/*\r\n * @Descripttion:\r\n * @version:\r\n * @Author: rxzhu\r\n * @Date: 2021-03-23 08:46:20\r\n * @LastEditors: rxzhu\r\n * @LastEditTime: 2021-03-23 10:30:42\r\n */\r\nimport {\r\n AppstoreOutlined,\r\n CheckOutlined,\r\n ColumnHeightOutlined,\r\n SearchOutlined,\r\n SortAscendingOutlined,\r\n SortDescendingOutlined,\r\n RedoOutlined,\r\n} from \"@ant-design/icons\";\r\nimport { isEmptyObj } from \"@bj-nsc/functions\";\r\nimport Store, { PageStore, StoreProps } from \"@bj-nsc/msn\";\r\nimport { utils } from \"@bj-nsc/msn/lib/utils\";\r\nimport {\r\n Button,\r\n Checkbox,\r\n CheckboxOptionType,\r\n Menu,\r\n message,\r\n Pagination,\r\n Popover,\r\n Space,\r\n Table,\r\n TableProps,\r\n Tooltip,\r\n} from \"antd\";\r\nimport { ColumnType, TablePaginationConfig } from \"antd/lib/table\";\r\nimport * as React from \"react\";\r\nimport { DndProvider } from \"react-dnd\";\r\nimport BodyRow, { DndContextType, IBodyRowProps } from \"../common/BodyRow\";\r\nimport treeUtils from \"../../treeUtils\";\r\nimport \"./index.module.less\";\r\nconst { BodyRowComponent, HTML5Backend } = BodyRow;\r\nimport withZhLocale from \"../common/withZhLocale\";\r\nimport { Resizable } from \"react-resizable\";\r\nimport \"./resize.module.less\";\r\nimport { getLess, getNode } from \"../../utils\";\r\nimport NoData from \"../../base/common/NoData\";\r\nimport { getStorage } from \"@bj-nsc/functions\";\r\nimport config from \"../../config\";\r\nimport EllipseCell from \"../common/EllipseCell\";\r\nimport cls from \"classnames\";\r\nconst styles = null;\r\ninterface IDragParams {\r\n id: string | number;\r\n ids: Array<string | number>;\r\n parentId: string | number;\r\n}\r\n// interface StoreProps {}\r\n\r\nexport type StoreType = \"PageStore\" | \"TreeStore\" | \"BaseStore\";\r\n\r\ninterface NSCTablePagination extends TablePaginationConfig {\r\n totalKey?: string;\r\n pageSizeKey?: string;\r\n currentKey?: string;\r\n}\r\n\r\ninterface ToolBarProps {\r\n show: boolean;\r\n tools?: Array<string>;\r\n onToolClick?: { onRefresh?: any; onSort?: any };\r\n}\r\ninterface NSCTableProps extends TableProps<any> {\r\n store?: StoreProps;\r\n showTotal?: boolean; // 是否显示总条数信息,默认true\r\n dragable?: boolean; // 是否可拖动, 默认false\r\n filterColumn?: boolean; // 是否支持过滤显示表格列, 默认true\r\n moveRow?: (params: IDragParams) => void; // 拖拽完成后的回调\r\n dragUrl?: string; // 保存拖拽排序的接口\r\n pagination?: false | NSCTablePagination;\r\n autoPagination?: boolean; // 组件是否自动处理分页\r\n autoSort?: boolean; //组件是否自动处理排序\r\n autoOnChange?: boolean; // 组件是否自动onChange, false则不做任何处理全部交给调用方\r\n resizeColumn?: boolean;\r\n sortFields?: Array<string>; //需要排序的字段Index\r\n toolbar?: ToolBarProps | boolean;\r\n autoSize?: boolean;\r\n sortSearch?: boolean; //是否添加排序查询,默认true\r\n showRowSelection?: boolean;\r\n rowKey?: string;\r\n [propsName: string]: any;\r\n}\r\n\r\nexport type INSCTableProps = typeof NSCTable.defaultProps & NSCTableProps;\r\nexport { DndContextType, IBodyRowProps };\r\n\r\nconst ResizeableTitle = (props: any) => {\r\n const { onResize, width, ...restProps } = props;\r\n return (\r\n <Resizable\r\n width={width || 150}\r\n height={0}\r\n onResize={onResize}\r\n draggableOpts={{ enableUserSelectHack: false }}\r\n >\r\n <th {...restProps} />\r\n </Resizable>\r\n );\r\n};\r\nclass NSCTable extends React.Component<INSCTableProps, any> {\r\n static defaultProps = {\r\n dragable: false,\r\n showTotal: true,\r\n filterColumn: true,\r\n dragUrl: \"\",\r\n autoPagination: true,\r\n autoSort: true,\r\n autoOnChange: true,\r\n resizeColumn: true,\r\n toolbar: {\r\n show: true,\r\n onToolClick: {} as any,\r\n } as any,\r\n };\r\n\r\n store = {} as StoreProps;\r\n thIconRef = React.createRef<HTMLDivElement>();\r\n tableSearchRef = React.createRef<any>();\r\n\r\n listeners = {\r\n onBeforeLoad: null,\r\n load: null,\r\n };\r\n\r\n components = {\r\n header: {\r\n cell: ResizeableTitle,\r\n },\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n let modal = props.type || \"auto\";\r\n let storePrefix = getStorage(\"store-pre-key\");\r\n let autoType = getStorage(\r\n storePrefix ? storePrefix + \"tableSize\" : \"tableSize\"\r\n );\r\n autoType = autoType?.content;\r\n this.state = {\r\n dataSource: [],\r\n columns: [],\r\n loading: false,\r\n pagination: {},\r\n activeIndex: -1,\r\n //搜索文本\r\n searchText: null,\r\n fieldOption: null,\r\n searchColor: null,\r\n cols: [],\r\n sorts: [],\r\n filterParams: {},\r\n tableSize: this.props.size || autoType || \"default\",\r\n sortType: \"single\",\r\n sorter: [], //记录当前排序字段\r\n sortInfo: {},\r\n defaultSort: true,\r\n checkColumn: [],\r\n defaultCheck: true,\r\n selectedRowKeys: [],\r\n selectedRowDatas: [],\r\n filter: [],\r\n extra: {},\r\n };\r\n if (props.store instanceof Store) {\r\n this.store = props.store;\r\n } else {\r\n const { listeners: listenersProps = {}, ...restStore } =\r\n props.store || {};\r\n const storeProps = {\r\n model: \"model\",\r\n component: this,\r\n listeners: {\r\n onBeforeLoad: (store, options) => {\r\n this.setState({ loading: true });\r\n utils.callback(listenersProps.onBeforeLoad, this, [store, options]);\r\n },\r\n dataChanged: (data, modelData, store) => {\r\n let paging = !(this.props.pagination === false);\r\n if (paging && !this.props.dataSource) {\r\n this.setState({\r\n dataSource: modelData,\r\n pagination: store.getPagination(),\r\n loading: false,\r\n activeIndex: -1,\r\n });\r\n } else {\r\n this.setState({ dataSource: modelData, loading: false });\r\n }\r\n\r\n utils.callback(listenersProps.dataChanged, this, [\r\n data,\r\n modelData,\r\n store,\r\n paging,\r\n ]);\r\n },\r\n load: (data, modelData, store) => {\r\n utils.callback(listenersProps.load, this, [data, modelData, store]);\r\n },\r\n onErrorLoad: (err, response) => {\r\n this.setState({ loading: false });\r\n utils.callback(listenersProps.onErrorLoad, this, [err, response]);\r\n },\r\n },\r\n data: restStore.data\r\n ? restStore.data\r\n : props.dataSource\r\n ? props.dataSource\r\n : null,\r\n ...restStore,\r\n autoLoad: restStore.autoLoad === false ? false : true,\r\n };\r\n this.store = new PageStore(\r\n Object.assign({}, storeProps, {\r\n pagination: { current: 1, ...this.props.pagination },\r\n })\r\n );\r\n }\r\n }\r\n\r\n handleResize =\r\n (index: any) =>\r\n (e: any, { size }: any) => {\r\n const { cols } = this.state;\r\n const nextColumns = [...cols];\r\n nextColumns[index] = {\r\n ...nextColumns[index],\r\n width: size.width,\r\n };\r\n this.setState({\r\n cols: nextColumns,\r\n });\r\n };\r\n\r\n componentDidMount() {\r\n const { resizeColumn } = this.props;\r\n if (!resizeColumn) {\r\n this.setState({ columns: [...this.props.columns] });\r\n } else {\r\n this.setState({ cols: [...this.props.columns] });\r\n }\r\n const store = this.props.store;\r\n if (store && store.data) {\r\n this.store.setData(store.data);\r\n }\r\n window.addEventListener(\"message\", this.listenMessage);\r\n }\r\n componentWillUnmount() {\r\n window.removeEventListener(\"message\", this.listenMessage);\r\n }\r\n listenMessage = (ev) => {\r\n const data = typeof ev.data === \"string\" ? JSON.parse(ev.data) : ev.data;\r\n let _this = this;\r\n if (data.eventType == \"changeTableSize\") {\r\n const { payload } = data;\r\n if (\r\n payload.size == \"default\" ||\r\n payload.size == \"small\" ||\r\n payload.size == \"middle\"\r\n ) {\r\n _this.setState({ tableSize: payload.size });\r\n }\r\n }\r\n };\r\n componentDidUpdate(prevProps, preState) {\r\n const { resizeColumn } = this.props;\r\n if (!resizeColumn) {\r\n if (this.props.columns !== prevProps.columns) {\r\n this.setState({ columns: this.props.columns });\r\n }\r\n } else {\r\n if (preState.cols !== this.state.cols) {\r\n this.resetColumn();\r\n }\r\n if (this.props.columns !== prevProps.columns) {\r\n this.setState({ cols: this.props.columns });\r\n }\r\n if (prevProps.size !== this.props.size) {\r\n this.setState({ tableSize: this.props.size });\r\n }\r\n }\r\n }\r\n\r\n resetColumn() {\r\n const { cols } = this.state;\r\n const newCols: any = [];\r\n let colss = cols || [];\r\n colss.map((col: any, index: any) => {\r\n let temp = {\r\n ...col,\r\n onHeaderCell: (column: { width: any }) => ({\r\n width: column.width,\r\n onResize: this.handleResize(index),\r\n }),\r\n };\r\n newCols.push(temp);\r\n });\r\n this.setState({\r\n columns: newCols,\r\n });\r\n }\r\n\r\n /**\r\n * 清除选中颜色\r\n */\r\n clearSelectColor() {\r\n this.setState({ activeIndex: -1 });\r\n return this;\r\n }\r\n\r\n getPaginationByStore() {\r\n return this.store.getPagination();\r\n }\r\n\r\n onChange(pagination, filters, sorter, extra) {\r\n const {\r\n autoOnChange = true,\r\n autoSort,\r\n autoPagination,\r\n onChange,\r\n store,\r\n } = this.props;\r\n const { filterParams } = this.state;\r\n const isMultiple = Array.isArray(sorter);\r\n if (autoOnChange === false || !store) {\r\n onChange && onChange(pagination, filters, sorter, extra);\r\n return;\r\n }\r\n const handlePagination = () => {\r\n let params = {} as {\r\n size?: string;\r\n pageSize?: string;\r\n ascs?: string;\r\n descs?: string;\r\n [propName: string]: string;\r\n };\r\n const paging = this.getPaginationByStore() || {};\r\n if (!isEmptyObj(pagination)) {\r\n const p = {\r\n [paging.currentKey || \"current\"]: pagination.current,\r\n [paging.pageSizeKey || \"size\"]: pagination.pageSize,\r\n };\r\n Object.assign(params, p);\r\n }\r\n let ascParams = this.getSortParam(sorter, true);\r\n if (isMultiple) {\r\n this.setState({ sorter });\r\n } else if (!isMultiple && !isEmptyObj(sorter)) {\r\n sorter.column &&\r\n this.setState({ sorter: [sorter], defaultSort: false });\r\n } else {\r\n this.setState({ sorter: [] });\r\n }\r\n this.setState({\r\n filters,\r\n extra,\r\n });\r\n params = { ...filterParams, ...params, ...ascParams };\r\n autoSort && this.store.reload({ params });\r\n };\r\n\r\n const onChangeFn = this.props.onChange;\r\n\r\n autoPagination && handlePagination();\r\n // 用户传了onChange保留用户自主处理表格变化的权力\r\n if (onChangeFn) {\r\n utils.callback(onChangeFn, this, [pagination, filters, sorter, extra]);\r\n }\r\n }\r\n\r\n getStore() {\r\n return this.store;\r\n }\r\n\r\n /**\r\n * 获取数据模型对象\r\n */\r\n getModel() {\r\n return this.store.getModel();\r\n }\r\n\r\n /**\r\n * 菜单搜索过滤显示\r\n * @param {String} val\r\n */\r\n handleSearch(val, fieldOption, searchColor) {\r\n this.setState({\r\n searchText: val,\r\n fieldOption: fieldOption,\r\n searchColor: searchColor,\r\n });\r\n }\r\n\r\n /**\r\n * 模块列表移动排序\r\n */\r\n moveRow = (dragIndex, hoverIndex, drag, target) => {\r\n const _this = this;\r\n let dragNode = drag.record;\r\n let targetNode = target.record;\r\n dragNode.moveArray(dragNode, targetNode);\r\n let ids = dragNode.parentNode.getChildNodeIds();\r\n let params = {\r\n id: dragNode.id,\r\n parentId: dragNode.attribute.parentId,\r\n ids: ids,\r\n };\r\n\r\n if (this.props.moveRow) {\r\n this.props.moveRow(params);\r\n } else {\r\n this.store.reload();\r\n }\r\n };\r\n\r\n filterColumn(checkedValue) {\r\n if (checkedValue.length == 0) {\r\n message.warning(\"至少显示一列!\");\r\n return;\r\n }\r\n const filterColumns = this.props.columns.map((col: ColumnType<{}>) => {\r\n const newCol = { ...col } as ColumnType<{}> & { initShow: boolean };\r\n if (checkedValue.includes(col.dataIndex)) {\r\n newCol.initShow = true;\r\n } else {\r\n newCol.initShow = false;\r\n }\r\n return newCol;\r\n });\r\n const { resizeColumn } = this.props;\r\n if (!resizeColumn) {\r\n this.setState({\r\n columns: filterColumns,\r\n checkColumn: checkedValue,\r\n defaultCheck: false,\r\n });\r\n } else {\r\n this.setState({\r\n cols: filterColumns,\r\n checkColumn: checkedValue,\r\n defaultCheck: false,\r\n });\r\n }\r\n }\r\n getSortParam(sorter, sortState = false) {\r\n const isMultiple = Array.isArray(sorter);\r\n const { sortSearch = true } = this.props;\r\n if (!sortSearch) {\r\n return {};\r\n }\r\n let sortInfo = {};\r\n let orderItems = [];\r\n if (!isEmptyObj(sorter) && !isMultiple && sorter.column) {\r\n orderItems = [\r\n {\r\n column: sorter.column.field || sorter.column.dataIndex,\r\n asc: sorter.order == \"ascend\",\r\n },\r\n ];\r\n if (sorter.column) sortInfo[sorter.column.dataIndex] = sorter.order;\r\n } else if (isMultiple) {\r\n sorter.forEach((v) => {\r\n sortInfo[v.column.dataIndex] = v.order;\r\n let field = v.column.field || v.column.dataIndex;\r\n orderItems.push({\r\n column: field,\r\n asc: v.order == \"ascend\",\r\n });\r\n });\r\n }\r\n if (sortState) {\r\n this.setState({\r\n sortInfo: sortInfo,\r\n });\r\n }\r\n return { orderItems: JSON.stringify(orderItems) };\r\n }\r\n isBeyond(e) {\r\n const ev = window.event || e; // 浏览器兼容,最好写一下\r\n const textRange = (el) => {\r\n const textContent = el;\r\n const targetW = textContent.getBoundingClientRect().width;\r\n const range = document.createRange();\r\n range.setStart(textContent, 0);\r\n range.setEnd(textContent, textContent.childNodes.length);\r\n const rangeWidth = range.getBoundingClientRect().width;\r\n return rangeWidth > targetW;\r\n };\r\n return !textRange(ev.target); // target可以保证当前划过的dom节点一直保持是:el-tooltip__trigger\r\n }\r\n setSelectedRowKeys(data: Array<String | Number>) {\r\n this.setState({\r\n selectedRowKeys: data,\r\n });\r\n }\r\n setSelectedRowDatas(data: Array<Object>) {\r\n this.setState({\r\n selectedRowDatas: data,\r\n });\r\n }\r\n getColumns() {\r\n const { columns, sortType, sortInfo } = this.state;\r\n const { sortFields = [] } = this.props;\r\n const defaultShowCols = columns.filter((cols) => cols.initShow !== false);\r\n const cols = defaultShowCols.map((col, index) => {\r\n if (col.ellipsis && !col.render) {\r\n col.ellipsis = {\r\n showTitle: false,\r\n };\r\n col.render = (text) => {\r\n return (\r\n <div style={{ display: \"inline-table\" }}>\r\n <div\r\n title={text}\r\n className={getLess(styles, \"nsc-table-text\")}\r\n style={{ width: col.width || \"100%\" }}\r\n >\r\n {text}\r\n </div>\r\n </div>\r\n );\r\n };\r\n }\r\n\r\n if (sortFields.indexOf(col.dataIndex) > -1) {\r\n if (sortType == \"single\") {\r\n col.sorter = true;\r\n col.sortOrder = sortInfo[col.dataIndex]\r\n ? sortInfo[col.dataIndex]\r\n : null;\r\n } else if (sortType == \"multiple\") {\r\n col.sorter = { multiple: index };\r\n col.sortOrder = sortInfo[col.dataIndex]\r\n ? sortInfo[col.dataIndex]\r\n : null;\r\n }\r\n }\r\n return col;\r\n });\r\n cols.map((item, index) => {\r\n if (!isEmptyObj(item.filterProps)) {\r\n let obj = { ...item };\r\n const { type, props, searchKey } = item.filterProps;\r\n let Div = null;\r\n let text = item.title;\r\n Div = getNode(type, {\r\n placeholder: `搜索${text}`,\r\n ...props,\r\n ref: this.tableSearchRef,\r\n });\r\n obj = {\r\n filterDropdown: ({\r\n setSelectedKeys,\r\n selectedKeys,\r\n confirm,\r\n clearFilters,\r\n }) => {\r\n return (\r\n <div className={getLess(styles, \"nsc-table-search\")}>\r\n <div className={getLess(styles, \"nsc-table-search-space\")}>\r\n {Div}\r\n </div>\r\n <Space>\r\n <Button\r\n type=\"primary\"\r\n onClick={() => {\r\n confirm();\r\n const { filterParams } = this.state;\r\n let newFilterParams = { ...filterParams };\r\n let key = item.field || item.dataIndex;\r\n newFilterParams[key] =\r\n this.tableSearchRef.current?.getValue();\r\n this.setState({\r\n filterParams: { ...newFilterParams },\r\n });\r\n const sortParam = this.getSortParam(this.state.sorter);\r\n this.store.load({\r\n params: { ...newFilterParams, ...sortParam },\r\n });\r\n }}\r\n size=\"small\"\r\n className={getLess(styles, \"nsc-table-search-button\")}\r\n >\r\n 查询\r\n </Button>\r\n </Space>\r\n </div>\r\n );\r\n },\r\n filterIcon: () => {\r\n return <SearchOutlined />;\r\n },\r\n ...obj,\r\n };\r\n cols[index] = obj;\r\n }\r\n });\r\n return cols;\r\n }\r\n renderToolBar() {\r\n let { tableSize, columns, sortType } = this.state;\r\n let { filterColumn, columns: colLists, toolbar } = this.props;\r\n const { tableTool, storeRequestConfig = {} } = config();\r\n let tools = [\"refresh\", \"size\", \"sort\", \"column\"];\r\n let toolsClick = {} as any;\r\n if (toolbar == true) {\r\n tools = toolbar.onToolClick\r\n ? toolbar.onToolClick\r\n : [\"refresh\", \"size\", \"sort\", \"column\"];\r\n } else {\r\n tools = toolbar.tools\r\n ? toolbar.tools\r\n : tableTool.tools\r\n ? tableTool.tools\r\n : tools;\r\n toolsClick = toolbar.onToolClick ? toolbar.onToolClick : {};\r\n }\r\n const sizeItem = [\r\n { title: \"宽松\", key: \"default\" },\r\n { title: \"中等\", key: \"middle\" },\r\n { title: \"紧凑\", key: \"small\" },\r\n ];\r\n const sortItem = [\r\n { title: \"单字段排序\", key: \"single\" },\r\n { title: \"多字段排序\", key: \"multiple\" },\r\n ];\r\n const sortContent = (\r\n <>\r\n <div\r\n className={getLess(styles, \"nsc-table-cotent-title\")}\r\n style={{\r\n cursor: this.state.defaultSort ? \"not-allowed\" : \"pointer\",\r\n color: this.state.defaultSort && \"rgba(0,0,0,.45)\",\r\n }}\r\n onClick={() => {\r\n if (this.state.defaultSort) {\r\n return;\r\n }\r\n this.setState({ sorter: [], sortInfo: {}, defaultSort: true });\r\n const params = { ...this.state.filterParams };\r\n this.store.reload({ params });\r\n }}\r\n >\r\n 恢复默认排序\r\n </div>\r\n {sortItem.map((item, index) => {\r\n return (\r\n <div\r\n key={item.key}\r\n onClick={() => {\r\n this.setState({\r\n sorter: [],\r\n sortInfo: {},\r\n sortType: item.key,\r\n defaultSort: false,\r\n });\r\n const params = { ...this.state.filterParams };\r\n this.store.reload({ params });\r\n }}\r\n >\r\n {sortType == item.key ? (\r\n <a>\r\n <div className={getLess(styles, \"nsc-table-content-tiem\")}>\r\n <div style={{ width: 20 }}>\r\n {sortType == item.key && <CheckOutlined />}\r\n </div>\r\n <div> {item.title}</div>\r\n </div>\r\n </a>\r\n ) : (\r\n <div className={getLess(styles, \"nsc-table-content-tiem\")}>\r\n <div style={{ width: 20 }}></div>\r\n <div> {item.title}</div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n })}\r\n {this.state.sorter.length > 0 && (\r\n <>\r\n <div\r\n className={getLess(styles, \"nsc-table-cotent-title\")}\r\n style={{ color: \"rgba(0,0,0,.45)\" }}\r\n >\r\n 当前排序\r\n </div>\r\n {this.state.sorter.map((item, index) => {\r\n return (\r\n <div\r\n className={getLess(styles, \"nsc-table-content-tiem\")}\r\n key={index}\r\n >\r\n <div style={{ width: 20 }}>\r\n {item.order == \"ascend\" ? (\r\n <SortAscendingOutlined />\r\n ) : (\r\n <SortDescendingOutlined />\r\n )}\r\n </div>\r\n <div> {item.column.title}</div>\r\n </div>\r\n );\r\n })}\r\n </>\r\n )}\r\n </>\r\n );\r\n const sizeContent = (\r\n <>\r\n <div className={getLess(styles, \"nsc-table-cotent-title\")}>\r\n 表格密度\r\n </div>\r\n {sizeItem.map((item, index) => {\r\n return (\r\n <div\r\n key={item.key}\r\n onClick={() => {\r\n this.setState({\r\n tableSize: item.key,\r\n });\r\n }}\r\n >\r\n {tableSize == item.key ? (\r\n <a>\r\n <div className={getLess(styles, \"nsc-table-content-tiem\")}>\r\n <div style={{ width: 20 }}>\r\n {tableSize == item.key && <CheckOutlined />}\r\n </div>\r\n <div> {item.title}</div>\r\n </div>\r\n </a>\r\n ) : (\r\n <div className={getLess(styles, \"nsc-table-content-tiem\")}>\r\n <div style={{ width: 20 }}></div>\r\n <div> {item.title}</div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n })}\r\n </>\r\n );\r\n\r\n const defaultShowCols = columns.filter((cols) => cols.initShow !== false);\r\n\r\n const content = (\r\n <Checkbox.Group\r\n onChange={this.filterColumn.bind(this)}\r\n options={colLists.map(\r\n (col: ColumnType<{}> & { filterColumn: boolean; dataIndex: any }) => {\r\n if (!col.dataIndex) {\r\n col.dataIndex = col.title;\r\n }\r\n return {\r\n label: col.title,\r\n value: col.dataIndex,\r\n disabled: col.filterColumn === false,\r\n } as CheckboxOptionType;\r\n }\r\n )}\r\n // defaultValue={defaultShowCols.map((col) => col.dataIndex)}\r\n value={\r\n this.state.defaultCheck\r\n ? defaultShowCols.map((col) => col.dataIndex)\r\n : this.state.checkColumn\r\n }\r\n ></Checkbox.Group>\r\n );\r\n return (\r\n <div className={getLess(styles, \"nsc-table-tool-bar\")}>\r\n {tools.indexOf(\"column\") > -1 && (\r\n <div style={{ fontSize: 14 }}>\r\n <Popover\r\n title=\"选择显示的列\"\r\n content={content}\r\n placement=\"bottomRight\"\r\n trigger=\"click\"\r\n overlayStyle={{ minWidth: 410, maxWidth: 450 }}\r\n >\r\n <AppstoreOutlined\r\n className={getLess(styles, \"nsc-table-th-app-store-icon\")}\r\n />\r\n </Popover>\r\n </div>\r\n )}\r\n {tools.indexOf(\"sort\") > -1 && (\r\n <div style={{ marginRight: 8, fontSize: 14 }}>\r\n <Popover placement=\"bottom\" content={sortContent} trigger=\"click\">\r\n <SortAscendingOutlined />\r\n </Popover>\r\n </div>\r\n )}\r\n {tools.indexOf(\"size\") > -1 && (\r\n <div style={{ marginRight: 8, fontSize: 14 }}>\r\n <Popover placement=\"bottom\" content={sizeContent} trigger=\"click\">\r\n <ColumnHeightOutlined />\r\n </Popover>\r\n </div>\r\n )}\r\n {tools.indexOf(\"refresh\") > -1 && (\r\n <div\r\n style={{ marginRight: 8, fontSize: 14, cursor: \"pointer\" }}\r\n onClick={() => {\r\n const params = { ...this.state.filterParams };\r\n if (toolsClick.onRefresh) {\r\n toolsClick.onRefresh();\r\n } else {\r\n this.store.load({ params });\r\n }\r\n }}\r\n >\r\n <RedoOutlined />\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }\r\n getSelectedRowKeys() {\r\n return this.state.selectedRowKeys;\r\n }\r\n getSelectedRowDatas() {\r\n return this.state.selectedRowDatas;\r\n }\r\n resetSelectedRowKeys() {\r\n this.setState({\r\n selectedRowKeys: [],\r\n selectedRowDatas: [],\r\n });\r\n }\r\n rowSelectionOnSelect(record: any, selected: any) {\r\n const { selectedRowKeys, selectedRowDatas } = this.state;\r\n let { rowKey = \"id\" } = this.props;\r\n let newSelectedRowKeys = [...selectedRowKeys];\r\n let newSelectedRowDatas = [...selectedRowDatas];\r\n if (selected) {\r\n newSelectedRowKeys = [...newSelectedRowKeys, record[rowKey]];\r\n newSelectedRowDatas = [...newSelectedRowDatas, record];\r\n } else {\r\n selectedRowKeys.map((item: any, index: any) => {\r\n if (item === record[rowKey]) {\r\n newSelectedRowKeys.splice(index, 1);\r\n }\r\n });\r\n selectedRowDatas.map((item: any, index: any) => {\r\n if (item[rowKey] === record[rowKey]) {\r\n newSelectedRowDatas.splice(index, 1);\r\n }\r\n });\r\n }\r\n this.setState({\r\n selectedRowKeys: newSelectedRowKeys,\r\n selectedRowDatas: newSelectedRowDatas,\r\n });\r\n }\r\n rowSelectionOnSelectAll(selected: any, selectedRows: any, changeRows: any) {\r\n const { selectedRowKeys, selectedRowDatas } = this.state;\r\n const { rowKey = \"id\" } = this.props;\r\n let newids: any = [];\r\n let newdatas: any = [];\r\n if (changeRows.length > 0) {\r\n let changeIds = changeRows.map((item: any) => item[rowKey]);\r\n if (selected) {\r\n newids = [...selectedRowKeys, ...changeIds];\r\n newdatas = [...selectedRowDatas, ...changeRows];\r\n } else {\r\n selectedRowKeys.map((item: any, index: any) => {\r\n if (changeIds.indexOf(item) == -1) {\r\n newids.push(item);\r\n }\r\n });\r\n selectedRowDatas.map((item: any, index: any) => {\r\n if (changeIds.indexOf(item[rowKey]) == -1) {\r\n newdatas.push(item);\r\n }\r\n });\r\n }\r\n } else {\r\n newids = [...selectedRowKeys];\r\n newdatas = [...selectedRowDatas];\r\n }\r\n this.setState({\r\n selectedRowKeys: [...newids],\r\n selectedRowDatas: [...newdatas],\r\n });\r\n }\r\n render() {\r\n let _this = this,\r\n {\r\n loading,\r\n dataSource,\r\n pagination = {},\r\n searchText,\r\n fieldOption,\r\n searchColor,\r\n tableSize,\r\n } = this.state,\r\n props = utils.omit(\r\n this.props,\r\n [\r\n \"store\",\r\n \"onChange\",\r\n \"columns\",\r\n \"resetColumn\",\r\n \"toolbar\",\r\n \"sortFields\",\r\n \"filterColumn\",\r\n \"sortSearch\",\r\n \"showRowSelection\",\r\n ],\r\n {\r\n rowKey: \"id\",\r\n clickChangeColor: false,\r\n }\r\n );\r\n if (props.pagination !== false) {\r\n props.pagination = {\r\n position: [\"bottomRight\"],\r\n showSizeChanger: true,\r\n showQuickJumper: true,\r\n ...pagination,\r\n ...props.pagination,\r\n \r\n };\r\n if (props.showTotal == true) {\r\n props.pagination.showTotal = function (total, [from, to]) {\r\n // return \"显示 \" + from + \" - \" + to + \"条,共 \" + total + \" 条\";\r\n return \"共 \" + total + \" 条\";\r\n };\r\n }\r\n }\r\n props.onChange = function (pagination, filters, sorter, extra) {\r\n _this.onChange(_this.state.pagination, filters, sorter, extra);\r\n };\r\n if (props.clickChangeColor) {\r\n const onRowFn = props.onRow;\r\n props.onRow = function (record, index) {\r\n var custom = onRowFn ? onRowFn(record, index) : {};\r\n const onClickFn = custom.onClick;\r\n custom.onClick = (event) => {\r\n _this.setState({\r\n activeIndex: index, //获取点击行的索引\r\n });\r\n utils.callback(onClickFn, _this, [event]);\r\n };\r\n return custom;\r\n };\r\n props.rowClassName = function (record, index) {\r\n return index === _this.state.activeIndex\r\n ? \"nsc-table-clickRowStyle\"\r\n : \"\";\r\n };\r\n }\r\n let newDataSource = [];\r\n if (searchText) {\r\n const data = treeUtils.getSearchMenuDatas(\r\n this,\r\n searchText,\r\n fieldOption,\r\n searchColor\r\n );\r\n newDataSource = data.treeDatas;\r\n props.expandedRowKeys = data.openKeys;\r\n } else {\r\n newDataSource = dataSource;\r\n }\r\n props.store = props.store || {};\r\n props.store.autoLoad = props.store.autoLoad === false ? false : true;\r\n const { dragable } = _this.props;\r\n const dragableProps =\r\n dragable === true\r\n ? {\r\n components: BodyRowComponent,\r\n onRow: (record, index) => ({\r\n index,\r\n record,\r\n moveRow: this.moveRow,\r\n }),\r\n }\r\n : {};\r\n let { resizeColumn } = this.props;\r\n\r\n const resizeProps =\r\n resizeColumn === true ? { components: this.components } : null;\r\n const { tableTool } = config();\r\n let toolFlag = true;\r\n let toolprops =\r\n this.props.toolbar === false || this.props.toolbar?.show === false\r\n ? false\r\n : true;\r\n if (!toolprops) {\r\n toolFlag = toolprops;\r\n } else {\r\n toolFlag = tableTool.show === false ? false : true;\r\n }\r\n if (this.props.showRowSelection) {\r\n const { rowSelection = {} } = this.props;\r\n props = {\r\n ...props,\r\n rowSelection: {\r\n selectedRowKeys: this.state.selectedRowKeys,\r\n onSelect: this.rowSelectionOnSelect.bind(this),\r\n onSelectAll: this.rowSelectionOnSelectAll.bind(this),\r\n columnWidth: 40,\r\n ...rowSelection,\r\n },\r\n };\r\n }\r\n const DefaultTable = (\r\n <div className={getLess(styles, \"nsc-table\")}>\r\n {toolFlag && this.renderToolBar()}\r\n <Table\r\n childrenColumnName=\"childNodes\"\r\n sheitem\r\n dataSource={newDataSource}\r\n columns={this.getColumns()}\r\n loading={loading}\r\n className={cls(getLess(styles, \"nsc-table-content\"), props.className)}\r\n locale={{\r\n emptyText: (\r\n <NoData className={getLess(styles, \"nsc-table-nodata\")} />\r\n ),\r\n }}\r\n scroll={{ x: \"max-content\" }}\r\n {...resizeProps}\r\n {...props}\r\n {...dragableProps}\r\n size={tableSize}\r\n pagination={false}\r\n // style={{ height: 600 }}\r\n />\r\n {props.pagination !== false && (\r\n <div className={getLess(styles, \"nsc-table-pagination\")}>\r\n <Pagination\r\n {...props.pagination}\r\n onChange={(page, pageSize) => {\r\n const extra = this.state.extra;\r\n extra.action = \"paginate\";\r\n this.setState(({ pagination={} }) => {\r\n return {\r\n pagination: { ...pagination, current: page, pageSize },\r\n };\r\n });\r\n this.onChange(\r\n { current: page, pageSize },\r\n this.state.filter,\r\n this.state.sorter,\r\n extra\r\n );\r\n }}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n );\r\n\r\n return dragable === true ? (\r\n <DndProvider backend={HTML5Backend}>{DefaultTable}</DndProvider>\r\n ) : (\r\n DefaultTable\r\n );\r\n }\r\n}\r\n\r\nexport default withZhLocale(NSCTable);\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["AppstoreOutlined","CheckOutlined","ColumnHeightOutlined","SearchOutlined","SortAscendingOutlined","SortDescendingOutlined","RedoOutlined","isEmptyObj","Store","PageStore","utils","React","DndProvider","BodyRow","DndContextType","IBodyRowProps","treeUtils","BodyRowComponent","HTML5Backend","withZhLocale","Resizable","getLess","getNode","NoData","getStorage","config","cls","styles","ResizeableTitle","props","onResize","width","restProps","_objectWithoutProperties","_excluded","createElement","height","draggableOpts","enableUserSelectHack","NSCTable","Component","constructor","_autoType","_defineProperty","createRef","onBeforeLoad","load","header","cell","index","e","_ref","size","cols","state","nextColumns","_objectSpread","setState","ev","data","JSON","parse","_this","eventType","payload","tableSize","dragIndex","hoverIndex","drag","target","dragNode","record","targetNode","moveArray","ids","parentNode","getChildNodeIds","params","id","parentId","attribute","moveRow","store","reload","modal","type","storePrefix","autoType","content","dataSource","columns","loading","pagination","activeIndex","searchText","fieldOption","searchColor","sorts","filterParams","sortType","sorter","sortInfo","defaultSort","checkColumn","defaultCheck","selectedRowKeys","selectedRowDatas","filter","extra","_ref2","listeners","listenersProps","restStore","_excluded2","storeProps","model","component","options","callback","dataChanged","modelData","paging","getPagination","onErrorLoad","err","response","autoLoad","Object","assign","current","componentDidMount","resizeColumn","setData","window","addEventListener","listenMessage","componentWillUnmount","removeEventListener","componentDidUpdate","prevProps","preState","resetColumn","newCols","colss","map","col","temp","onHeaderCell","column","handleResize","push","clearSelectColor","getPaginationByStore","onChange","filters","autoOnChange","autoSort","autoPagination","isMultiple","Array","isArray","handlePagination","p","currentKey","pageSizeKey","pageSize","ascParams","getSortParam","onChangeFn","getStore","getModel","handleSearch","val","filterColumn","checkedValue","length","_message","warning","filterColumns","newCol","includes","dataIndex","initShow","sortState","arguments","undefined","sortSearch","orderItems","field","asc","order","forEach","v","stringify","isBeyond","event","textRange","el","textContent","targetW","getBoundingClientRect","range","document","createRange","setStart","setEnd","childNodes","rangeWidth","setSelectedRowKeys","setSelectedRowDatas","getColumns","sortFields","defaultShowCols","ellipsis","render","showTitle","text","style","display","title","className","indexOf","sortOrder","multiple","item","filterProps","obj","searchKey","Div","placeholder","concat","ref","tableSearchRef","filterDropdown","_ref3","setSelectedKeys","selectedKeys","confirm","clearFilters","_Space","_Button","onClick","_this$tableSearchRef$","newFilterParams","key","getValue","sortParam","filterIcon","renderToolBar","colLists","toolbar","tableTool","storeRequestConfig","tools","toolsClick","onToolClick","sizeItem","sortItem","sortContent","Fragment","cursor","color","sizeContent","_Checkbox","Group","bind","label","value","disabled","fontSize","_Popover","placement","trigger","overlayStyle","minWidth","maxWidth","marginRight","onRefresh","getSelectedRowKeys","getSelectedRowDatas","resetSelectedRowKeys","rowSelectionOnSelect","selected","rowKey","newSelectedRowKeys","newSelectedRowDatas","splice","rowSelectionOnSelectAll","selectedRows","changeRows","newids","newdatas","changeIds","_this$props$toolbar","omit","clickChangeColor","position","showSizeChanger","showQuickJumper","showTotal","total","_ref4","from","to","onRowFn","onRow","custom","onClickFn","rowClassName","newDataSource","getSearchMenuDatas","treeDatas","expandedRowKeys","openKeys","dragable","dragableProps","components","resizeProps","toolFlag","toolprops","show","showRowSelection","rowSelection","onSelect","onSelectAll","columnWidth","tableProps","configTableProps","DefaultTable","_Table","_extends","childrenColumnName","sheitem","locale","emptyText","scroll","x","_Pagination","page","action","_ref5","backend","dragUrl"],"sources":["../../../src/components/base/table/index.tsx"],"sourcesContent":["/*\r\n * @Descripttion:\r\n * @version:\r\n * @Author: rxzhu\r\n * @Date: 2021-03-23 08:46:20\r\n * @LastEditors: rxzhu\r\n * @LastEditTime: 2021-03-23 10:30:42\r\n */\r\nimport {\r\n AppstoreOutlined,\r\n CheckOutlined,\r\n ColumnHeightOutlined,\r\n SearchOutlined,\r\n SortAscendingOutlined,\r\n SortDescendingOutlined,\r\n RedoOutlined,\r\n} from \"@ant-design/icons\";\r\nimport { isEmptyObj } from \"@bj-nsc/functions\";\r\nimport Store, { PageStore, StoreProps } from \"@bj-nsc/msn\";\r\nimport { utils } from \"@bj-nsc/msn/lib/utils\";\r\nimport {\r\n Button,\r\n Checkbox,\r\n CheckboxOptionType,\r\n Menu,\r\n message,\r\n Pagination,\r\n Popover,\r\n Space,\r\n Table,\r\n TableProps,\r\n Tooltip,\r\n} from \"antd\";\r\nimport { ColumnType, TablePaginationConfig } from \"antd/lib/table\";\r\nimport * as React from \"react\";\r\nimport { DndProvider } from \"react-dnd\";\r\nimport BodyRow, { DndContextType, IBodyRowProps } from \"../common/BodyRow\";\r\nimport treeUtils from \"../../treeUtils\";\r\nimport \"./index.module.less\";\r\nconst { BodyRowComponent, HTML5Backend } = BodyRow;\r\nimport withZhLocale from \"../common/withZhLocale\";\r\nimport { Resizable } from \"react-resizable\";\r\nimport \"./resize.module.less\";\r\nimport { getLess, getNode } from \"../../utils\";\r\nimport NoData from \"../../base/common/NoData\";\r\nimport { getStorage } from \"@bj-nsc/functions\";\r\nimport config from \"../../config\";\r\nimport EllipseCell from \"../common/EllipseCell\";\r\nimport cls from \"classnames\";\r\nconst styles = null;\r\ninterface IDragParams {\r\n id: string | number;\r\n ids: Array<string | number>;\r\n parentId: string | number;\r\n}\r\n// interface StoreProps {}\r\n\r\nexport type StoreType = \"PageStore\" | \"TreeStore\" | \"BaseStore\";\r\n\r\ninterface NSCTablePagination extends TablePaginationConfig {\r\n totalKey?: string;\r\n pageSizeKey?: string;\r\n currentKey?: string;\r\n}\r\n\r\ninterface ToolBarProps {\r\n show: boolean;\r\n tools?: Array<string>;\r\n onToolClick?: { onRefresh?: any; onSort?: any };\r\n}\r\ninterface NSCTableProps extends TableProps<any> {\r\n store?: StoreProps;\r\n showTotal?: boolean; // 是否显示总条数信息,默认true\r\n dragable?: boolean; // 是否可拖动, 默认false\r\n filterColumn?: boolean; // 是否支持过滤显示表格列, 默认true\r\n moveRow?: (params: IDragParams) => void; // 拖拽完成后的回调\r\n dragUrl?: string; // 保存拖拽排序的接口\r\n pagination?: false | NSCTablePagination;\r\n autoPagination?: boolean; // 组件是否自动处理分页\r\n autoSort?: boolean; //组件是否自动处理排序\r\n autoOnChange?: boolean; // 组件是否自动onChange, false则不做任何处理全部交给调用方\r\n resizeColumn?: boolean;\r\n sortFields?: Array<string>; //需要排序的字段Index\r\n toolbar?: ToolBarProps | boolean;\r\n autoSize?: boolean;\r\n sortSearch?: boolean; //是否添加排序查询,默认true\r\n showRowSelection?: boolean;\r\n rowKey?: string;\r\n [propsName: string]: any;\r\n}\r\n\r\nexport type INSCTableProps = typeof NSCTable.defaultProps & NSCTableProps;\r\nexport { DndContextType, IBodyRowProps };\r\n\r\nconst ResizeableTitle = (props: any) => {\r\n const { onResize, width, ...restProps } = props;\r\n return (\r\n <Resizable\r\n width={width || 150}\r\n height={0}\r\n onResize={onResize}\r\n draggableOpts={{ enableUserSelectHack: false }}\r\n >\r\n <th {...restProps} />\r\n </Resizable>\r\n );\r\n};\r\nclass NSCTable extends React.Component<INSCTableProps, any> {\r\n static defaultProps = {\r\n dragable: false,\r\n showTotal: true,\r\n filterColumn: true,\r\n dragUrl: \"\",\r\n autoPagination: true,\r\n autoSort: true,\r\n autoOnChange: true,\r\n resizeColumn: true,\r\n toolbar: {\r\n show: true,\r\n onToolClick: {} as any,\r\n } as any,\r\n };\r\n\r\n store = {} as StoreProps;\r\n thIconRef = React.createRef<HTMLDivElement>();\r\n tableSearchRef = React.createRef<any>();\r\n\r\n listeners = {\r\n onBeforeLoad: null,\r\n load: null,\r\n };\r\n\r\n components = {\r\n header: {\r\n cell: ResizeableTitle,\r\n },\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n let modal = props.type || \"auto\";\r\n let storePrefix = getStorage(\"store-pre-key\");\r\n let autoType = getStorage(\r\n storePrefix ? storePrefix + \"tableSize\" : \"tableSize\"\r\n );\r\n autoType = autoType?.content;\r\n this.state = {\r\n dataSource: [],\r\n columns: [],\r\n loading: false,\r\n pagination: {},\r\n activeIndex: -1,\r\n //搜索文本\r\n searchText: null,\r\n fieldOption: null,\r\n searchColor: null,\r\n cols: [],\r\n sorts: [],\r\n filterParams: {},\r\n tableSize: this.props.size || autoType || \"default\",\r\n sortType: \"single\",\r\n sorter: [], //记录当前排序字段\r\n sortInfo: {},\r\n defaultSort: true,\r\n checkColumn: [],\r\n defaultCheck: true,\r\n selectedRowKeys: [],\r\n selectedRowDatas: [],\r\n filter: [],\r\n extra: {},\r\n };\r\n if (props.store instanceof Store) {\r\n this.store = props.store;\r\n } else {\r\n const { listeners: listenersProps = {}, ...restStore } =\r\n props.store || {};\r\n const storeProps = {\r\n model: \"model\",\r\n component: this,\r\n listeners: {\r\n onBeforeLoad: (store, options) => {\r\n this.setState({ loading: true });\r\n utils.callback(listenersProps.onBeforeLoad, this, [store, options]);\r\n },\r\n dataChanged: (data, modelData, store) => {\r\n let paging = !(this.props.pagination === false);\r\n if (paging && !this.props.dataSource) {\r\n this.setState({\r\n dataSource: modelData,\r\n pagination: store.getPagination(),\r\n loading: false,\r\n activeIndex: -1,\r\n });\r\n } else {\r\n this.setState({ dataSource: modelData, loading: false });\r\n }\r\n\r\n utils.callback(listenersProps.dataChanged, this, [\r\n data,\r\n modelData,\r\n store,\r\n paging,\r\n ]);\r\n },\r\n load: (data, modelData, store) => {\r\n utils.callback(listenersProps.load, this, [data, modelData, store]);\r\n },\r\n onErrorLoad: (err, response) => {\r\n this.setState({ loading: false });\r\n utils.callback(listenersProps.onErrorLoad, this, [err, response]);\r\n },\r\n },\r\n data: restStore.data\r\n ? restStore.data\r\n : props.dataSource\r\n ? props.dataSource\r\n : null,\r\n ...restStore,\r\n autoLoad: restStore.autoLoad === false ? false : true,\r\n };\r\n this.store = new PageStore(\r\n Object.assign({}, storeProps, {\r\n pagination: { current: 1, ...this.props.pagination },\r\n })\r\n );\r\n }\r\n }\r\n\r\n handleResize =\r\n (index: any) =>\r\n (e: any, { size }: any) => {\r\n const { cols } = this.state;\r\n const nextColumns = [...cols];\r\n nextColumns[index] = {\r\n ...nextColumns[index],\r\n width: size.width,\r\n };\r\n this.setState({\r\n cols: nextColumns,\r\n });\r\n };\r\n\r\n componentDidMount() {\r\n const { resizeColumn } = this.props;\r\n if (!resizeColumn) {\r\n this.setState({ columns: [...this.props.columns] });\r\n } else {\r\n this.setState({ cols: [...this.props.columns] });\r\n }\r\n const store = this.props.store;\r\n if (store && store.data) {\r\n this.store.setData(store.data);\r\n }\r\n window.addEventListener(\"message\", this.listenMessage);\r\n }\r\n componentWillUnmount() {\r\n window.removeEventListener(\"message\", this.listenMessage);\r\n }\r\n listenMessage = (ev) => {\r\n const data = typeof ev.data === \"string\" ? JSON.parse(ev.data) : ev.data;\r\n let _this = this;\r\n if (data.eventType == \"changeTableSize\") {\r\n const { payload } = data;\r\n if (\r\n payload.size == \"default\" ||\r\n payload.size == \"small\" ||\r\n payload.size == \"middle\"\r\n ) {\r\n _this.setState({ tableSize: payload.size });\r\n }\r\n }\r\n };\r\n componentDidUpdate(prevProps, preState) {\r\n const { resizeColumn } = this.props;\r\n if (!resizeColumn) {\r\n if (this.props.columns !== prevProps.columns) {\r\n this.setState({ columns: this.props.columns });\r\n }\r\n } else {\r\n if (preState.cols !== this.state.cols) {\r\n this.resetColumn();\r\n }\r\n if (this.props.columns !== prevProps.columns) {\r\n this.setState({ cols: this.props.columns });\r\n }\r\n if (prevProps.size !== this.props.size) {\r\n this.setState({ tableSize: this.props.size });\r\n }\r\n }\r\n }\r\n\r\n resetColumn() {\r\n const { cols } = this.state;\r\n const newCols: any = [];\r\n let colss = cols || [];\r\n colss.map((col: any, index: any) => {\r\n let temp = {\r\n ...col,\r\n onHeaderCell: (column: { width: any }) => ({\r\n width: column.width,\r\n onResize: this.handleResize(index),\r\n }),\r\n };\r\n newCols.push(temp);\r\n });\r\n this.setState({\r\n columns: newCols,\r\n });\r\n }\r\n\r\n /**\r\n * 清除选中颜色\r\n */\r\n clearSelectColor() {\r\n this.setState({ activeIndex: -1 });\r\n return this;\r\n }\r\n\r\n getPaginationByStore() {\r\n return this.store.getPagination();\r\n }\r\n\r\n onChange(pagination, filters, sorter, extra) {\r\n const {\r\n autoOnChange = true,\r\n autoSort,\r\n autoPagination,\r\n onChange,\r\n store,\r\n } = this.props;\r\n const { filterParams } = this.state;\r\n const isMultiple = Array.isArray(sorter);\r\n if (autoOnChange === false || !store) {\r\n onChange && onChange(pagination, filters, sorter, extra);\r\n return;\r\n }\r\n const handlePagination = () => {\r\n let params = {} as {\r\n size?: string;\r\n pageSize?: string;\r\n ascs?: string;\r\n descs?: string;\r\n [propName: string]: string;\r\n };\r\n const paging = this.getPaginationByStore() || {};\r\n if (!isEmptyObj(pagination)) {\r\n const p = {\r\n [paging.currentKey || \"current\"]: pagination.current,\r\n [paging.pageSizeKey || \"size\"]: pagination.pageSize,\r\n };\r\n Object.assign(params, p);\r\n }\r\n let ascParams = this.getSortParam(sorter, true);\r\n if (isMultiple) {\r\n this.setState({ sorter });\r\n } else if (!isMultiple && !isEmptyObj(sorter)) {\r\n sorter.column &&\r\n this.setState({ sorter: [sorter], defaultSort: false });\r\n } else {\r\n this.setState({ sorter: [] });\r\n }\r\n this.setState({\r\n filters,\r\n extra,\r\n });\r\n params = { ...filterParams, ...params, ...ascParams };\r\n autoSort && this.store.reload({ params });\r\n };\r\n\r\n const onChangeFn = this.props.onChange;\r\n\r\n autoPagination && handlePagination();\r\n // 用户传了onChange保留用户自主处理表格变化的权力\r\n if (onChangeFn) {\r\n utils.callback(onChangeFn, this, [pagination, filters, sorter, extra]);\r\n }\r\n }\r\n\r\n getStore() {\r\n return this.store;\r\n }\r\n\r\n /**\r\n * 获取数据模型对象\r\n */\r\n getModel() {\r\n return this.store.getModel();\r\n }\r\n\r\n /**\r\n * 菜单搜索过滤显示\r\n * @param {String} val\r\n */\r\n handleSearch(val, fieldOption, searchColor) {\r\n this.setState({\r\n searchText: val,\r\n fieldOption: fieldOption,\r\n searchColor: searchColor,\r\n });\r\n }\r\n\r\n /**\r\n * 模块列表移动排序\r\n */\r\n moveRow = (dragIndex, hoverIndex, drag, target) => {\r\n const _this = this;\r\n let dragNode = drag.record;\r\n let targetNode = target.record;\r\n dragNode.moveArray(dragNode, targetNode);\r\n let ids = dragNode.parentNode.getChildNodeIds();\r\n let params = {\r\n id: dragNode.id,\r\n parentId: dragNode.attribute.parentId,\r\n ids: ids,\r\n };\r\n\r\n if (this.props.moveRow) {\r\n this.props.moveRow(params);\r\n } else {\r\n this.store.reload();\r\n }\r\n };\r\n\r\n filterColumn(checkedValue) {\r\n if (checkedValue.length == 0) {\r\n message.warning(\"至少显示一列!\");\r\n return;\r\n }\r\n const filterColumns = this.props.columns.map((col: ColumnType<{}>) => {\r\n const newCol = { ...col } as ColumnType<{}> & { initShow: boolean };\r\n if (checkedValue.includes(col.dataIndex)) {\r\n newCol.initShow = true;\r\n } else {\r\n newCol.initShow = false;\r\n }\r\n return newCol;\r\n });\r\n const { resizeColumn } = this.props;\r\n if (!resizeColumn) {\r\n this.setState({\r\n columns: filterColumns,\r\n checkColumn: checkedValue,\r\n defaultCheck: false,\r\n });\r\n } else {\r\n this.setState({\r\n cols: filterColumns,\r\n checkColumn: checkedValue,\r\n defaultCheck: false,\r\n });\r\n }\r\n }\r\n getSortParam(sorter, sortState = false) {\r\n const isMultiple = Array.isArray(sorter);\r\n const { sortSearch = true } = this.props;\r\n if (!sortSearch) {\r\n return {};\r\n }\r\n let sortInfo = {};\r\n let orderItems = [];\r\n if (!isEmptyObj(sorter) && !isMultiple && sorter.column) {\r\n orderItems = [\r\n {\r\n column: sorter.column.field || sorter.column.dataIndex,\r\n asc: sorter.order == \"ascend\",\r\n },\r\n ];\r\n if (sorter.column) sortInfo[sorter.column.dataIndex] = sorter.order;\r\n } else if (isMultiple) {\r\n sorter.forEach((v) => {\r\n sortInfo[v.column.dataIndex] = v.order;\r\n let field = v.column.field || v.column.dataIndex;\r\n orderItems.push({\r\n column: field,\r\n asc: v.order == \"ascend\",\r\n });\r\n });\r\n }\r\n if (sortState) {\r\n this.setState({\r\n sortInfo: sortInfo,\r\n });\r\n }\r\n return { orderItems: JSON.stringify(orderItems) };\r\n }\r\n isBeyond(e) {\r\n const ev = window.event || e; // 浏览器兼容,最好写一下\r\n const textRange = (el) => {\r\n const textContent = el;\r\n const targetW = textContent.getBoundingClientRect().width;\r\n const range = document.createRange();\r\n range.setStart(textContent, 0);\r\n range.setEnd(textContent, textContent.childNodes.length);\r\n const rangeWidth = range.getBoundingClientRect().width;\r\n return rangeWidth > targetW;\r\n };\r\n return !textRange(ev.target); // target可以保证当前划过的dom节点一直保持是:el-tooltip__trigger\r\n }\r\n setSelectedRowKeys(data: Array<String | Number>) {\r\n this.setState({\r\n selectedRowKeys: data,\r\n });\r\n }\r\n setSelectedRowDatas(data: Array<Object>) {\r\n this.setState({\r\n selectedRowDatas: data,\r\n });\r\n }\r\n getColumns() {\r\n const { columns, sortType, sortInfo } = this.state;\r\n const { sortFields = [] } = this.props;\r\n const defaultShowCols = columns.filter((cols) => cols.initShow !== false);\r\n const cols = defaultShowCols.map((col, index) => {\r\n if (col.ellipsis && !col.render) {\r\n col.ellipsis = {\r\n showTitle: false,\r\n };\r\n col.render = (text) => {\r\n return (\r\n <div style={{ display: \"inline-table\" }}>\r\n <div\r\n title={text}\r\n className={getLess(styles, \"nsc-table-text\")}\r\n style={{ width: col.width || \"100%\" }}\r\n >\r\n {text}\r\n </div>\r\n </div>\r\n );\r\n };\r\n }\r\n\r\n if (sortFields.indexOf(col.dataIndex) > -1) {\r\n if (sortType == \"single\") {\r\n col.sorter = true;\r\n col.sortOrder = sortInfo[col.dataIndex]\r\n ? sortInfo[col.dataIndex]\r\n : null;\r\n } else if (sortType == \"multiple\") {\r\n col.sorter = { multiple: index };\r\n col.sortOrder = sortInfo[col.dataIndex]\r\n ? sortInfo[col.dataIndex]\r\n : null;\r\n }\r\n }\r\n return col;\r\n });\r\n cols.map((item, index) => {\r\n if (!isEmptyObj(item.filterProps)) {\r\n let obj = { ...item };\r\n const { type, props, searchKey } = item.filterProps;\r\n let Div = null;\r\n let text = item.title;\r\n Div = getNode(type, {\r\n placeholder: `搜索${text}`,\r\n ...props,\r\n ref: this.tableSearchRef,\r\n });\r\n obj = {\r\n filterDropdown: ({\r\n setSelectedKeys,\r\n selectedKeys,\r\n confirm,\r\n clearFilters,\r\n }) => {\r\n return (\r\n <div className={getLess(styles, \"nsc-table-search\")}>\r\n <div className={getLess(styles, \"nsc-table-search-space\")}>\r\n {Div}\r\n </div>\r\n <Space>\r\n <Button\r\n type=\"primary\"\r\n onClick={() => {\r\n confirm();\r\n const { filterParams } = this.state;\r\n let newFilterParams = { ...filterParams };\r\n let key = item.field || item.dataIndex;\r\n newFilterParams[key] =\r\n this.tableSearchRef.current?.getValue();\r\n this.setState({\r\n filterParams: { ...newFilterParams },\r\n });\r\n const sortParam = this.getSortParam(this.state.sorter);\r\n this.store.load({\r\n params: { ...newFilterParams, ...sortParam },\r\n });\r\n }}\r\n size=\"small\"\r\n className={getLess(styles, \"nsc-table-search-button\")}\r\n >\r\n 查询\r\n </Button>\r\n </Space>\r\n </div>\r\n );\r\n },\r\n filterIcon: () => {\r\n return <SearchOutlined />;\r\n },\r\n ...obj,\r\n };\r\n cols[index] = obj;\r\n }\r\n });\r\n return cols;\r\n }\r\n renderToolBar() {\r\n let { tableSize, columns, sortType } = this.state;\r\n let { filterColumn, columns: colLists, toolbar } = this.props;\r\n const { tableTool, storeRequestConfig = {} } = config();\r\n let tools = [\"refresh\", \"size\", \"sort\", \"column\"];\r\n let toolsClick = {} as any;\r\n if (toolbar == true) {\r\n tools = toolbar.onToolClick\r\n ? toolbar.onToolClick\r\n : [\"refresh\", \"size\", \"sort\", \"column\"];\r\n } else {\r\n tools = toolbar.tools\r\n ? toolbar.tools\r\n : tableTool.tools\r\n ? tableTool.tools\r\n : tools;\r\n toolsClick = toolbar.onToolClick ? toolbar.onToolClick : {};\r\n }\r\n const sizeItem = [\r\n { title: \"宽松\", key: \"default\" },\r\n { title: \"中等\", key: \"middle\" },\r\n { title: \"紧凑\", key: \"small\" },\r\n ];\r\n const sortItem = [\r\n { title: \"单字段排序\", key: \"single\" },\r\n { title: \"多字段排序\", key: \"multiple\" },\r\n ];\r\n const sortContent = (\r\n <>\r\n <div\r\n className={getLess(styles, \"nsc-table-cotent-title\")}\r\n style={{\r\n cursor: this.state.defaultSort ? \"not-allowed\" : \"pointer\",\r\n color: this.state.defaultSort && \"rgba(0,0,0,.45)\",\r\n }}\r\n onClick={() => {\r\n if (this.state.defaultSort) {\r\n return;\r\n }\r\n this.setState({ sorter: [], sortInfo: {}, defaultSort: true });\r\n const params = { ...this.state.filterParams };\r\n this.store.reload({ params });\r\n }}\r\n >\r\n 恢复默认排序\r\n </div>\r\n {sortItem.map((item, index) => {\r\n return (\r\n <div\r\n key={item.key}\r\n onClick={() => {\r\n this.setState({\r\n sorter: [],\r\n sortInfo: {},\r\n sortType: item.key,\r\n defaultSort: false,\r\n });\r\n const params = { ...this.state.filterParams };\r\n this.store.reload({ params });\r\n }}\r\n >\r\n {sortType == item.key ? (\r\n <a>\r\n <div className={getLess(styles, \"nsc-table-content-tiem\")}>\r\n <div style={{ width: 20 }}>\r\n {sortType == item.key && <CheckOutlined />}\r\n </div>\r\n <div> {item.title}</div>\r\n </div>\r\n </a>\r\n ) : (\r\n <div className={getLess(styles, \"nsc-table-content-tiem\")}>\r\n <div style={{ width: 20 }}></div>\r\n <div> {item.title}</div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n })}\r\n {this.state.sorter.length > 0 && (\r\n <>\r\n <div\r\n className={getLess(styles, \"nsc-table-cotent-title\")}\r\n style={{ color: \"rgba(0,0,0,.45)\" }}\r\n >\r\n 当前排序\r\n </div>\r\n {this.state.sorter.map((item, index) => {\r\n return (\r\n <div\r\n className={getLess(styles, \"nsc-table-content-tiem\")}\r\n key={index}\r\n >\r\n <div style={{ width: 20 }}>\r\n {item.order == \"ascend\" ? (\r\n <SortAscendingOutlined />\r\n ) : (\r\n <SortDescendingOutlined />\r\n )}\r\n </div>\r\n <div> {item.column.title}</div>\r\n </div>\r\n );\r\n })}\r\n </>\r\n )}\r\n </>\r\n );\r\n const sizeContent = (\r\n <>\r\n <div className={getLess(styles, \"nsc-table-cotent-title\")}>\r\n 表格密度\r\n </div>\r\n {sizeItem.map((item, index) => {\r\n return (\r\n <div\r\n key={item.key}\r\n onClick={() => {\r\n this.setState({\r\n tableSize: item.key,\r\n });\r\n }}\r\n >\r\n {tableSize == item.key ? (\r\n <a>\r\n <div className={getLess(styles, \"nsc-table-content-tiem\")}>\r\n <div style={{ width: 20 }}>\r\n {tableSize == item.key && <CheckOutlined />}\r\n </div>\r\n <div> {item.title}</div>\r\n </div>\r\n </a>\r\n ) : (\r\n <div className={getLess(styles, \"nsc-table-content-tiem\")}>\r\n <div style={{ width: 20 }}></div>\r\n <div> {item.title}</div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n })}\r\n </>\r\n );\r\n\r\n const defaultShowCols = columns.filter((cols) => cols.initShow !== false);\r\n\r\n const content = (\r\n <Checkbox.Group\r\n onChange={this.filterColumn.bind(this)}\r\n options={colLists.map(\r\n (col: ColumnType<{}> & { filterColumn: boolean; dataIndex: any }) => {\r\n if (!col.dataIndex) {\r\n col.dataIndex = col.title;\r\n }\r\n return {\r\n label: col.title,\r\n value: col.dataIndex,\r\n disabled: col.filterColumn === false,\r\n } as CheckboxOptionType;\r\n }\r\n )}\r\n // defaultValue={defaultShowCols.map((col) => col.dataIndex)}\r\n value={\r\n this.state.defaultCheck\r\n ? defaultShowCols.map((col) => col.dataIndex)\r\n : this.state.checkColumn\r\n }\r\n ></Checkbox.Group>\r\n );\r\n return (\r\n <div className={getLess(styles, \"nsc-table-tool-bar\")}>\r\n {tools.indexOf(\"column\") > -1 && (\r\n <div style={{ fontSize: 14 }}>\r\n <Popover\r\n title=\"选择显示的列\"\r\n content={content}\r\n placement=\"bottomRight\"\r\n trigger=\"click\"\r\n overlayStyle={{ minWidth: 410, maxWidth: 450 }}\r\n >\r\n <AppstoreOutlined\r\n className={getLess(styles, \"nsc-table-th-app-store-icon\")}\r\n />\r\n </Popover>\r\n </div>\r\n )}\r\n {tools.indexOf(\"sort\") > -1 && (\r\n <div style={{ marginRight: 8, fontSize: 14 }}>\r\n <Popover placement=\"bottom\" content={sortContent} trigger=\"click\">\r\n <SortAscendingOutlined />\r\n </Popover>\r\n </div>\r\n )}\r\n {tools.indexOf(\"size\") > -1 && (\r\n <div style={{ marginRight: 8, fontSize: 14 }}>\r\n <Popover placement=\"bottom\" content={sizeContent} trigger=\"click\">\r\n <ColumnHeightOutlined />\r\n </Popover>\r\n </div>\r\n )}\r\n {tools.indexOf(\"refresh\") > -1 && (\r\n <div\r\n style={{ marginRight: 8, fontSize: 14, cursor: \"pointer\" }}\r\n onClick={() => {\r\n const params = { ...this.state.filterParams };\r\n if (toolsClick.onRefresh) {\r\n toolsClick.onRefresh();\r\n } else {\r\n this.store.load({ params });\r\n }\r\n }}\r\n >\r\n <RedoOutlined />\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }\r\n getSelectedRowKeys() {\r\n return this.state.selectedRowKeys;\r\n }\r\n getSelectedRowDatas() {\r\n return this.state.selectedRowDatas;\r\n }\r\n resetSelectedRowKeys() {\r\n this.setState({\r\n selectedRowKeys: [],\r\n selectedRowDatas: [],\r\n });\r\n }\r\n rowSelectionOnSelect(record: any, selected: any) {\r\n const { selectedRowKeys, selectedRowDatas } = this.state;\r\n let { rowKey = \"id\" } = this.props;\r\n let newSelectedRowKeys = [...selectedRowKeys];\r\n let newSelectedRowDatas = [...selectedRowDatas];\r\n if (selected) {\r\n newSelectedRowKeys = [...newSelectedRowKeys, record[rowKey]];\r\n newSelectedRowDatas = [...newSelectedRowDatas, record];\r\n } else {\r\n selectedRowKeys.map((item: any, index: any) => {\r\n if (item === record[rowKey]) {\r\n newSelectedRowKeys.splice(index, 1);\r\n }\r\n });\r\n selectedRowDatas.map((item: any, index: any) => {\r\n if (item[rowKey] === record[rowKey]) {\r\n newSelectedRowDatas.splice(index, 1);\r\n }\r\n });\r\n }\r\n this.setState({\r\n selectedRowKeys: newSelectedRowKeys,\r\n selectedRowDatas: newSelectedRowDatas,\r\n });\r\n }\r\n rowSelectionOnSelectAll(selected: any, selectedRows: any, changeRows: any) {\r\n const { selectedRowKeys, selectedRowDatas } = this.state;\r\n const { rowKey = \"id\" } = this.props;\r\n let newids: any = [];\r\n let newdatas: any = [];\r\n if (changeRows.length > 0) {\r\n let changeIds = changeRows.map((item: any) => item[rowKey]);\r\n if (selected) {\r\n newids = [...selectedRowKeys, ...changeIds];\r\n newdatas = [...selectedRowDatas, ...changeRows];\r\n } else {\r\n selectedRowKeys.map((item: any, index: any) => {\r\n if (changeIds.indexOf(item) == -1) {\r\n newids.push(item);\r\n }\r\n });\r\n selectedRowDatas.map((item: any, index: any) => {\r\n if (changeIds.indexOf(item[rowKey]) == -1) {\r\n newdatas.push(item);\r\n }\r\n });\r\n }\r\n } else {\r\n newids = [...selectedRowKeys];\r\n newdatas = [...selectedRowDatas];\r\n }\r\n this.setState({\r\n selectedRowKeys: [...newids],\r\n selectedRowDatas: [...newdatas],\r\n });\r\n }\r\n render() {\r\n let _this = this,\r\n {\r\n loading,\r\n dataSource,\r\n pagination = {},\r\n searchText,\r\n fieldOption,\r\n searchColor,\r\n tableSize,\r\n } = this.state,\r\n props = utils.omit(\r\n this.props,\r\n [\r\n \"store\",\r\n \"onChange\",\r\n \"columns\",\r\n \"resetColumn\",\r\n \"toolbar\",\r\n \"sortFields\",\r\n \"filterColumn\",\r\n \"sortSearch\",\r\n \"showRowSelection\",\r\n ],\r\n {\r\n rowKey: \"id\",\r\n clickChangeColor: false,\r\n }\r\n );\r\n if (props.pagination !== false) {\r\n props.pagination = {\r\n position: [\"bottomRight\"],\r\n showSizeChanger: true,\r\n showQuickJumper: true,\r\n ...pagination,\r\n ...props.pagination,\r\n \r\n };\r\n if (props.showTotal == true) {\r\n props.pagination.showTotal = function (total, [from, to]) {\r\n // return \"显示 \" + from + \" - \" + to + \"条,共 \" + total + \" 条\";\r\n return \"共 \" + total + \" 条\";\r\n };\r\n }\r\n }\r\n props.onChange = function (pagination, filters, sorter, extra) {\r\n _this.onChange(_this.state.pagination, filters, sorter, extra);\r\n };\r\n if (props.clickChangeColor) {\r\n const onRowFn = props.onRow;\r\n props.onRow = function (record, index) {\r\n var custom = onRowFn ? onRowFn(record, index) : {};\r\n const onClickFn = custom.onClick;\r\n custom.onClick = (event) => {\r\n _this.setState({\r\n activeIndex: index, //获取点击行的索引\r\n });\r\n utils.callback(onClickFn, _this, [event]);\r\n };\r\n return custom;\r\n };\r\n props.rowClassName = function (record, index) {\r\n return index === _this.state.activeIndex\r\n ? \"nsc-table-clickRowStyle\"\r\n : \"\";\r\n };\r\n }\r\n let newDataSource = [];\r\n if (searchText) {\r\n const data = treeUtils.getSearchMenuDatas(\r\n this,\r\n searchText,\r\n fieldOption,\r\n searchColor\r\n );\r\n newDataSource = data.treeDatas;\r\n props.expandedRowKeys = data.openKeys;\r\n } else {\r\n newDataSource = dataSource;\r\n }\r\n props.store = props.store || {};\r\n props.store.autoLoad = props.store.autoLoad === false ? false : true;\r\n const { dragable } = _this.props;\r\n const dragableProps =\r\n dragable === true\r\n ? {\r\n components: BodyRowComponent,\r\n onRow: (record, index) => ({\r\n index,\r\n record,\r\n moveRow: this.moveRow,\r\n }),\r\n }\r\n : {};\r\n let { resizeColumn } = this.props;\r\n\r\n const resizeProps =\r\n resizeColumn === true ? { components: this.components } : null;\r\n const { tableTool } = config();\r\n let toolFlag = true;\r\n let toolprops =\r\n this.props.toolbar === false || this.props.toolbar?.show === false\r\n ? false\r\n : true;\r\n if (!toolprops) {\r\n toolFlag = toolprops;\r\n } else {\r\n toolFlag = tableTool.show === false ? false : true;\r\n }\r\n if (this.props.showRowSelection) {\r\n const { rowSelection = {} } = this.props;\r\n props = {\r\n ...props,\r\n rowSelection: {\r\n selectedRowKeys: this.state.selectedRowKeys,\r\n onSelect: this.rowSelectionOnSelect.bind(this),\r\n onSelectAll: this.rowSelectionOnSelectAll.bind(this),\r\n columnWidth: 40,\r\n ...rowSelection,\r\n },\r\n };\r\n }\r\n const { tableProps: configTableProps } = config();\r\n const DefaultTable = (\r\n <div className={getLess(styles, \"nsc-table\")}>\r\n {toolFlag && this.renderToolBar()}\r\n <Table\r\n childrenColumnName=\"childNodes\"\r\n sheitem\r\n dataSource={newDataSource}\r\n columns={this.getColumns()}\r\n loading={loading}\r\n className={cls(getLess(styles, \"nsc-table-content\"), props.className)}\r\n locale={{\r\n emptyText: (\r\n <NoData className={getLess(styles, \"nsc-table-nodata\")} />\r\n ),\r\n }}\r\n scroll={{ x: \"max-content\" }}\r\n {...configTableProps}\r\n {...resizeProps}\r\n {...props}\r\n {...dragableProps}\r\n size={tableSize}\r\n pagination={false}\r\n // style={{ height: 600 }}\r\n />\r\n {props.pagination !== false && (\r\n <div className={getLess(styles, \"nsc-table-pagination\")}>\r\n <Pagination\r\n {...props.pagination}\r\n onChange={(page, pageSize) => {\r\n const extra = this.state.extra;\r\n extra.action = \"paginate\";\r\n this.setState(({ pagination={} }) => {\r\n return {\r\n pagination: { ...pagination, current: page, pageSize },\r\n };\r\n });\r\n this.onChange(\r\n { current: page, pageSize },\r\n this.state.filter,\r\n this.state.sorter,\r\n extra\r\n );\r\n }}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n );\r\n\r\n return dragable === true ? (\r\n <DndProvider backend={HTML5Backend}>{DefaultTable}</DndProvider>\r\n ) : (\r\n DefaultTable\r\n );\r\n }\r\n}\r\n\r\nexport default withZhLocale(NSCTable);\r\n"],"mappings":"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"}
package/lib/config.d.ts CHANGED
@@ -38,6 +38,9 @@ interface IComponentConfig {
38
38
  showCount?: boolean;
39
39
  maxLength?: number | boolean;
40
40
  };
41
+ tableProps?: {
42
+ bordered?: boolean;
43
+ };
41
44
  }
42
45
  export declare const setConfig: (config: IComponentConfig) => {
43
46
  loginProjectName: string;
@@ -71,6 +74,7 @@ export declare const setConfig: (config: IComponentConfig) => {
71
74
  };
72
75
  storeRequestConfig: {};
73
76
  inputProps: {};
77
+ tableProps: {};
74
78
  } & IComponentConfig;
75
79
  declare const _default: () => IComponentConfig;
76
80
  export default _default;
package/lib/config.js CHANGED
@@ -53,8 +53,9 @@ let configData = {
53
53
  buttonNumber: 3
54
54
  },
55
55
  storeRequestConfig: {},
56
- inputProps: {}
56
+ inputProps: {},
57
+ tableProps: {}
57
58
  };
58
59
  export const setConfig = config => Object.assign(configData, config);
59
60
  export default (() => configData);
60
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb25maWdEYXRhIiwibG9naW5Qcm9qZWN0TmFtZSIsImF1dGhvcml6YXRpb24iLCJsb2dpblBhdGgiLCJleGNlcHRpb241MDUiLCJleGNlcHRpb240MDMiLCJpY29uZm9udFVybCIsInZpZXdVcmwiLCJ2aWV3Qml6VXJsIiwiYW50ZFN0eWxlIiwiYWxsb3dDaGFycyIsInN0b3JlUHJlZml4IiwibW91bnRFbGVtZW50SWQiLCJpY29uUHJlZml4IiwidGFibGVUb29sIiwibW9kYWxCdXR0b24iLCJva0J1dHRvblByb3BzIiwiY2FuY2xlQnV0dG9uUHJvcHMiLCJjb25maXJtSWNvbiIsImNsb3NlSWNvbiIsImltZ2FlcyIsIm5vRGF0YSIsImJhc2VBY3Rpb25Db2x1bW4iLCJ0ZXh0QWxpZ24iLCJzaG93SWNvbiIsIndpZHRoIiwiYnV0dG9uTnVtYmVyIiwic3RvcmVSZXF1ZXN0Q29uZmlnIiwiaW5wdXRQcm9wcyIsInNldENvbmZpZyIsImNvbmZpZyIsIk9iamVjdCIsImFzc2lnbiJdLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21wb25lbnRzL2NvbmZpZy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XHJcblxyXG4vKlxyXG4gKiBARGVzY3JpcHR0aW9uOlxyXG4gKiBAdmVyc2lvbjpcclxuICogQEF1dGhvcjogcnh6aHVcclxuICogQERhdGU6IDIwMjEtMDMtMjUgMTA6MzQ6NTNcclxuICogQExhc3RFZGl0b3JzOiByeHpodVxyXG4gKiBATGFzdEVkaXRUaW1lOiAyMDIxLTA0LTIzIDE2OjQ1OjAzXHJcbiAqL1xyXG5pbnRlcmZhY2UgSUNvbXBvbmVudENvbmZpZyB7XHJcbiAgbG9naW5Qcm9qZWN0TmFtZT86IHN0cmluZztcclxuICBhdXRob3JpemF0aW9uPzogc3RyaW5nO1xyXG4gIGxvZ2luUGF0aD86IHN0cmluZztcclxuICBleGNlcHRpb241MDU/OiBzdHJpbmc7XHJcbiAgZXhjZXB0aW9uNDAzPzogc3RyaW5nO1xyXG4gIGljb25mb250VXJsPzogc3RyaW5nO1xyXG4gIHZpZXdVcmw/OiBzdHJpbmc7XHJcbiAgdmlld0JpelVybD86IHN0cmluZztcclxuICBhbnRkU3R5bGU/OiBib29sZWFuO1xyXG4gIGFsbG93Q2hhcnM/OiBib29sZWFuO1xyXG4gIHN0b3JlUHJlZml4Pzogc3RyaW5nO1xyXG4gIG1vdW50RWxlbWVudElkPzogc3RyaW5nO1xyXG4gIGljb25QcmVmaXg/OiBzdHJpbmc7XHJcbiAgdGFibGVUb29sPzogeyBzaG93OiBib29sZWFuOyB0b29scz86IEFycmF5PHN0cmluZz4gfTtcclxuICBtb2RhbEJ1dHRvbj86IHtcclxuICAgIG9rQnV0dG9uUHJvcHM/OiBvYmplY3Q7XHJcbiAgICBjYW5jbGVCdXR0b25Qcm9wcz86IG9iamVjdDtcclxuICAgIGNvbmZpcm1JY29uPzogUmVhY3ROb2RlO1xyXG4gICAgY2xvc2VJY29uPzogUmVhY3ROb2RlO1xyXG4gIH07XHJcbiAgYmFzZUFjdGlvbkNvbHVtbj86IHtcclxuICAgIHRleHRBbGlnbjogc3RyaW5nO1xyXG4gICAgc2hvd0ljb24/OiBib29sZWFuO1xyXG4gICAgd2lkdGg/OiBudW1iZXI7XHJcbiAgICBidXR0b25OdW1iZXI/OiBudW1iZXIgfCBcImFsbFwiO1xyXG4gIH07XHJcbiAgaW1hZ2VzPzogeyBub0RhdGE/OiBhbnkgfTtcclxuICBzdG9yZVJlcXVlc3RDb25maWc/OiB7fTtcclxuICBpbnB1dFByb3BzPzoge1xyXG4gICAgYWxsb3dDaGFycz86IGJvb2xlYW47XHJcbiAgICBzaG93Q291bnQ/OiBib29sZWFuO1xyXG4gICAgbWF4TGVuZ3RoPzogbnVtYmVyIHwgYm9vbGVhbjtcclxuICB9O1xyXG59XHJcblxyXG5sZXQgY29uZmlnRGF0YSA9IHtcclxuICAvL+eZu+W9leeVjOmdoumhueebruWQjeensFxyXG4gIGxvZ2luUHJvamVjdE5hbWU6IFwiTlNDIEZyYW1ld29ya1wiLFxyXG4gIC8v57O757uf5oyH57q577yM55m75b2V5pe25YCZ6ZyA6KaB5Lyg6YCSXHJcbiAgYXV0aG9yaXphdGlvbjogXCJCYXNpYyBibk5qT201ell3PT1cIixcclxuICAvL+eZu+mZhueVjOmdolVSTFxyXG4gIGxvZ2luUGF0aDogXCIvbG9naW5cIixcclxuICAvLzUwNemUmeivr1VSTFxyXG4gIGV4Y2VwdGlvbjUwNTogXCIvZXhjZXB0aW9uLzUwMFwiLFxyXG4gIC8vNDAz6ZSZ6K+vVVJMXHJcbiAgZXhjZXB0aW9uNDAzOiBcIi9leGNlcHRpb24vNDAzXCIsXHJcbiAgLy/pmL/ph4zlm77moIflupNVUkxcclxuICBpY29uZm9udFVybDogXCJcIixcclxuICAvL+WQjuWPsOezu+e7n+inhuWbvuiOt+WPluWcsOWdgFxyXG4gIHZpZXdVcmw6IFwiL2pxdWljay1zeXN0ZW0vZGljdC9kaWN0aW9uYXJ5P2NvZGU9XCIsXHJcbiAgLy/lkI7lj7DkuJrliqHop4blm77ojrflj5blnLDlnYBcclxuICB2aWV3Qml6VXJsOiBcIi9qcXVpY2stc3lzdGVtL2RpY3QtYml6L2RpY3Rpb25hcnk/Y29kZT1cIixcclxuICAvL+m7mOiupGFudGTmoLflvI9cclxuICBhbnRkU3R5bGU6IHRydWUsXHJcbiAgLy9pbnB1dOeJueauiuWtl+espuWFqOWxgOWPmOmHj1xyXG4gIGFsbG93Q2hhcnM6IGZhbHNlLFxyXG4gIC8vbG9jYWxzdG9yZeWJjee8gFxyXG4gIHN0b3JlUHJlZml4OiBcIlwiLFxyXG4gIC8vYXBwLWlkXHJcbiAgbW91bnRFbGVtZW50SWQ6IFwiXCIsXHJcbiAgLy9pY29u5YmN57yAXHJcbiAgaWNvblByZWZpeDogXCJpY29uXCIsXHJcbiAgLy90YWJsZeW3peWFt+agj1xyXG4gIHRhYmxlVG9vbDoge30gYXMgYW55LFxyXG4gIC8vbW9kYWzmjInpkq5cclxuICBtb2RhbEJ1dHRvbjoge1xyXG4gICAgb2tCdXR0b25Qcm9wczoge30sXHJcbiAgICBjYW5jbGVCdXR0b25Qcm9wczoge30sXHJcbiAgICBjb25maXJtSWNvbjogbnVsbCxcclxuICAgIGNsb3NlSWNvbjogbnVsbCxcclxuICB9LFxyXG4gIGltZ2Flczoge1xyXG4gICAgbm9EYXRhOiBudWxsLFxyXG4gIH0sXHJcbiAgYmFzZUFjdGlvbkNvbHVtbjoge1xyXG4gICAgdGV4dEFsaWduOiBcImxlZnRcIixcclxuICAgIHNob3dJY29uOiBmYWxzZSxcclxuICAgIHdpZHRoOiAxODAsXHJcbiAgICBidXR0b25OdW1iZXI6IDMsXHJcbiAgfSxcclxuICBzdG9yZVJlcXVlc3RDb25maWc6IHt9LFxyXG4gIGlucHV0UHJvcHM6IHt9LFxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHNldENvbmZpZyA9IChjb25maWc6IElDb21wb25lbnRDb25maWcpID0+XHJcbiAgT2JqZWN0LmFzc2lnbihjb25maWdEYXRhLCBjb25maWcpO1xyXG5leHBvcnQgZGVmYXVsdCAoKTogSUNvbXBvbmVudENvbmZpZyA9PiBjb25maWdEYXRhO1xyXG4iXSwibWFwcGluZ3MiOiJBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBcUNBLElBQUlBLFVBQVUsR0FBRztFQUNmO0VBQ0FDLGdCQUFnQixFQUFFLGVBQWU7RUFDakM7RUFDQUMsYUFBYSxFQUFFLG9CQUFvQjtFQUNuQztFQUNBQyxTQUFTLEVBQUUsUUFBUTtFQUNuQjtFQUNBQyxZQUFZLEVBQUUsZ0JBQWdCO0VBQzlCO0VBQ0FDLFlBQVksRUFBRSxnQkFBZ0I7RUFDOUI7RUFDQUMsV0FBVyxFQUFFLEVBQUU7RUFDZjtFQUNBQyxPQUFPLEVBQUUsc0NBQXNDO0VBQy9DO0VBQ0FDLFVBQVUsRUFBRSwwQ0FBMEM7RUFDdEQ7RUFDQUMsU0FBUyxFQUFFLElBQUk7RUFDZjtFQUNBQyxVQUFVLEVBQUUsS0FBSztFQUNqQjtFQUNBQyxXQUFXLEVBQUUsRUFBRTtFQUNmO0VBQ0FDLGNBQWMsRUFBRSxFQUFFO0VBQ2xCO0VBQ0FDLFVBQVUsRUFBRSxNQUFNO0VBQ2xCO0VBQ0FDLFNBQVMsRUFBRSxDQUFDLENBQVE7RUFDcEI7RUFDQUMsV0FBVyxFQUFFO0lBQ1hDLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFDakJDLGlCQUFpQixFQUFFLENBQUMsQ0FBQztJQUNyQkMsV0FBVyxFQUFFLElBQUk7SUFDakJDLFNBQVMsRUFBRTtFQUNiLENBQUM7RUFDREMsTUFBTSxFQUFFO0lBQ05DLE1BQU0sRUFBRTtFQUNWLENBQUM7RUFDREMsZ0JBQWdCLEVBQUU7SUFDaEJDLFNBQVMsRUFBRSxNQUFNO0lBQ2pCQyxRQUFRLEVBQUUsS0FBSztJQUNmQyxLQUFLLEVBQUUsR0FBRztJQUNWQyxZQUFZLEVBQUU7RUFDaEIsQ0FBQztFQUNEQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7RUFDdEJDLFVBQVUsRUFBRSxDQUFDO0FBQ2YsQ0FBQztBQUVELE9BQU8sTUFBTUMsU0FBUyxHQUFJQyxNQUF3QixJQUNoREMsTUFBTSxDQUFDQyxNQUFNLENBQUNoQyxVQUFVLEVBQUU4QixNQUFNLENBQUM7QUFDbkMsZ0JBQWUsTUFBd0I5QixVQUFVIn0=
61
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb25maWdEYXRhIiwibG9naW5Qcm9qZWN0TmFtZSIsImF1dGhvcml6YXRpb24iLCJsb2dpblBhdGgiLCJleGNlcHRpb241MDUiLCJleGNlcHRpb240MDMiLCJpY29uZm9udFVybCIsInZpZXdVcmwiLCJ2aWV3Qml6VXJsIiwiYW50ZFN0eWxlIiwiYWxsb3dDaGFycyIsInN0b3JlUHJlZml4IiwibW91bnRFbGVtZW50SWQiLCJpY29uUHJlZml4IiwidGFibGVUb29sIiwibW9kYWxCdXR0b24iLCJva0J1dHRvblByb3BzIiwiY2FuY2xlQnV0dG9uUHJvcHMiLCJjb25maXJtSWNvbiIsImNsb3NlSWNvbiIsImltZ2FlcyIsIm5vRGF0YSIsImJhc2VBY3Rpb25Db2x1bW4iLCJ0ZXh0QWxpZ24iLCJzaG93SWNvbiIsIndpZHRoIiwiYnV0dG9uTnVtYmVyIiwic3RvcmVSZXF1ZXN0Q29uZmlnIiwiaW5wdXRQcm9wcyIsInRhYmxlUHJvcHMiLCJzZXRDb25maWciLCJjb25maWciLCJPYmplY3QiLCJhc3NpZ24iXSwic291cmNlcyI6WyIuLi9zcmMvY29tcG9uZW50cy9jb25maWcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5cclxuLypcclxuICogQERlc2NyaXB0dGlvbjpcclxuICogQHZlcnNpb246XHJcbiAqIEBBdXRob3I6IHJ4emh1XHJcbiAqIEBEYXRlOiAyMDIxLTAzLTI1IDEwOjM0OjUzXHJcbiAqIEBMYXN0RWRpdG9yczogcnh6aHVcclxuICogQExhc3RFZGl0VGltZTogMjAyMS0wNC0yMyAxNjo0NTowM1xyXG4gKi9cclxuaW50ZXJmYWNlIElDb21wb25lbnRDb25maWcge1xyXG4gIGxvZ2luUHJvamVjdE5hbWU/OiBzdHJpbmc7XHJcbiAgYXV0aG9yaXphdGlvbj86IHN0cmluZztcclxuICBsb2dpblBhdGg/OiBzdHJpbmc7XHJcbiAgZXhjZXB0aW9uNTA1Pzogc3RyaW5nO1xyXG4gIGV4Y2VwdGlvbjQwMz86IHN0cmluZztcclxuICBpY29uZm9udFVybD86IHN0cmluZztcclxuICB2aWV3VXJsPzogc3RyaW5nO1xyXG4gIHZpZXdCaXpVcmw/OiBzdHJpbmc7XHJcbiAgYW50ZFN0eWxlPzogYm9vbGVhbjtcclxuICBhbGxvd0NoYXJzPzogYm9vbGVhbjtcclxuICBzdG9yZVByZWZpeD86IHN0cmluZztcclxuICBtb3VudEVsZW1lbnRJZD86IHN0cmluZztcclxuICBpY29uUHJlZml4Pzogc3RyaW5nO1xyXG4gIHRhYmxlVG9vbD86IHsgc2hvdzogYm9vbGVhbjsgdG9vbHM/OiBBcnJheTxzdHJpbmc+IH07XHJcbiAgbW9kYWxCdXR0b24/OiB7XHJcbiAgICBva0J1dHRvblByb3BzPzogb2JqZWN0O1xyXG4gICAgY2FuY2xlQnV0dG9uUHJvcHM/OiBvYmplY3Q7XHJcbiAgICBjb25maXJtSWNvbj86IFJlYWN0Tm9kZTtcclxuICAgIGNsb3NlSWNvbj86IFJlYWN0Tm9kZTtcclxuICB9O1xyXG4gIGJhc2VBY3Rpb25Db2x1bW4/OiB7XHJcbiAgICB0ZXh0QWxpZ246IHN0cmluZztcclxuICAgIHNob3dJY29uPzogYm9vbGVhbjtcclxuICAgIHdpZHRoPzogbnVtYmVyO1xyXG4gICAgYnV0dG9uTnVtYmVyPzogbnVtYmVyIHwgXCJhbGxcIjtcclxuICB9O1xyXG4gIGltYWdlcz86IHsgbm9EYXRhPzogYW55IH07XHJcbiAgc3RvcmVSZXF1ZXN0Q29uZmlnPzoge307XHJcbiAgaW5wdXRQcm9wcz86IHtcclxuICAgIGFsbG93Q2hhcnM/OiBib29sZWFuO1xyXG4gICAgc2hvd0NvdW50PzogYm9vbGVhbjtcclxuICAgIG1heExlbmd0aD86IG51bWJlciB8IGJvb2xlYW47XHJcbiAgfTtcclxuICB0YWJsZVByb3BzPzoge1xyXG4gICAgYm9yZGVyZWQ/OiBib29sZWFuO1xyXG4gIH07XHJcbn1cclxuXHJcbmxldCBjb25maWdEYXRhID0ge1xyXG4gIC8v55m75b2V55WM6Z2i6aG555uu5ZCN56ewXHJcbiAgbG9naW5Qcm9qZWN0TmFtZTogXCJOU0MgRnJhbWV3b3JrXCIsXHJcbiAgLy/ns7vnu5/mjIfnurnvvIznmbvlvZXml7blgJnpnIDopoHkvKDpgJJcclxuICBhdXRob3JpemF0aW9uOiBcIkJhc2ljIGJuTmpPbTV6WXc9PVwiLFxyXG4gIC8v55m76ZmG55WM6Z2iVVJMXHJcbiAgbG9naW5QYXRoOiBcIi9sb2dpblwiLFxyXG4gIC8vNTA16ZSZ6K+vVVJMXHJcbiAgZXhjZXB0aW9uNTA1OiBcIi9leGNlcHRpb24vNTAwXCIsXHJcbiAgLy80MDPplJnor69VUkxcclxuICBleGNlcHRpb240MDM6IFwiL2V4Y2VwdGlvbi80MDNcIixcclxuICAvL+mYv+mHjOWbvuagh+W6k1VSTFxyXG4gIGljb25mb250VXJsOiBcIlwiLFxyXG4gIC8v5ZCO5Y+w57O757uf6KeG5Zu+6I635Y+W5Zyw5Z2AXHJcbiAgdmlld1VybDogXCIvanF1aWNrLXN5c3RlbS9kaWN0L2RpY3Rpb25hcnk/Y29kZT1cIixcclxuICAvL+WQjuWPsOS4muWKoeinhuWbvuiOt+WPluWcsOWdgFxyXG4gIHZpZXdCaXpVcmw6IFwiL2pxdWljay1zeXN0ZW0vZGljdC1iaXovZGljdGlvbmFyeT9jb2RlPVwiLFxyXG4gIC8v6buY6K6kYW50ZOagt+W8j1xyXG4gIGFudGRTdHlsZTogdHJ1ZSxcclxuICAvL2lucHV054m55q6K5a2X56ym5YWo5bGA5Y+Y6YePXHJcbiAgYWxsb3dDaGFyczogZmFsc2UsXHJcbiAgLy9sb2NhbHN0b3Jl5YmN57yAXHJcbiAgc3RvcmVQcmVmaXg6IFwiXCIsXHJcbiAgLy9hcHAtaWRcclxuICBtb3VudEVsZW1lbnRJZDogXCJcIixcclxuICAvL2ljb27liY3nvIBcclxuICBpY29uUHJlZml4OiBcImljb25cIixcclxuICAvL3RhYmxl5bel5YW35qCPXHJcbiAgdGFibGVUb29sOiB7fSBhcyBhbnksXHJcbiAgLy9tb2RhbOaMiemSrlxyXG4gIG1vZGFsQnV0dG9uOiB7XHJcbiAgICBva0J1dHRvblByb3BzOiB7fSxcclxuICAgIGNhbmNsZUJ1dHRvblByb3BzOiB7fSxcclxuICAgIGNvbmZpcm1JY29uOiBudWxsLFxyXG4gICAgY2xvc2VJY29uOiBudWxsLFxyXG4gIH0sXHJcbiAgaW1nYWVzOiB7XHJcbiAgICBub0RhdGE6IG51bGwsXHJcbiAgfSxcclxuICBiYXNlQWN0aW9uQ29sdW1uOiB7XHJcbiAgICB0ZXh0QWxpZ246IFwibGVmdFwiLFxyXG4gICAgc2hvd0ljb246IGZhbHNlLFxyXG4gICAgd2lkdGg6IDE4MCxcclxuICAgIGJ1dHRvbk51bWJlcjogMyxcclxuICB9LFxyXG4gIHN0b3JlUmVxdWVzdENvbmZpZzoge30sXHJcbiAgaW5wdXRQcm9wczoge30sXHJcbiAgdGFibGVQcm9wczoge30sXHJcbn07XHJcblxyXG5leHBvcnQgY29uc3Qgc2V0Q29uZmlnID0gKGNvbmZpZzogSUNvbXBvbmVudENvbmZpZykgPT5cclxuICBPYmplY3QuYXNzaWduKGNvbmZpZ0RhdGEsIGNvbmZpZyk7XHJcbmV4cG9ydCBkZWZhdWx0ICgpOiBJQ29tcG9uZW50Q29uZmlnID0+IGNvbmZpZ0RhdGE7XHJcbiJdLCJtYXBwaW5ncyI6IkFBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUF3Q0EsSUFBSUEsVUFBVSxHQUFHO0VBQ2Y7RUFDQUMsZ0JBQWdCLEVBQUUsZUFBZTtFQUNqQztFQUNBQyxhQUFhLEVBQUUsb0JBQW9CO0VBQ25DO0VBQ0FDLFNBQVMsRUFBRSxRQUFRO0VBQ25CO0VBQ0FDLFlBQVksRUFBRSxnQkFBZ0I7RUFDOUI7RUFDQUMsWUFBWSxFQUFFLGdCQUFnQjtFQUM5QjtFQUNBQyxXQUFXLEVBQUUsRUFBRTtFQUNmO0VBQ0FDLE9BQU8sRUFBRSxzQ0FBc0M7RUFDL0M7RUFDQUMsVUFBVSxFQUFFLDBDQUEwQztFQUN0RDtFQUNBQyxTQUFTLEVBQUUsSUFBSTtFQUNmO0VBQ0FDLFVBQVUsRUFBRSxLQUFLO0VBQ2pCO0VBQ0FDLFdBQVcsRUFBRSxFQUFFO0VBQ2Y7RUFDQUMsY0FBYyxFQUFFLEVBQUU7RUFDbEI7RUFDQUMsVUFBVSxFQUFFLE1BQU07RUFDbEI7RUFDQUMsU0FBUyxFQUFFLENBQUMsQ0FBUTtFQUNwQjtFQUNBQyxXQUFXLEVBQUU7SUFDWEMsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUNqQkMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO0lBQ3JCQyxXQUFXLEVBQUUsSUFBSTtJQUNqQkMsU0FBUyxFQUFFO0VBQ2IsQ0FBQztFQUNEQyxNQUFNLEVBQUU7SUFDTkMsTUFBTSxFQUFFO0VBQ1YsQ0FBQztFQUNEQyxnQkFBZ0IsRUFBRTtJQUNoQkMsU0FBUyxFQUFFLE1BQU07SUFDakJDLFFBQVEsRUFBRSxLQUFLO0lBQ2ZDLEtBQUssRUFBRSxHQUFHO0lBQ1ZDLFlBQVksRUFBRTtFQUNoQixDQUFDO0VBQ0RDLGtCQUFrQixFQUFFLENBQUMsQ0FBQztFQUN0QkMsVUFBVSxFQUFFLENBQUMsQ0FBQztFQUNkQyxVQUFVLEVBQUUsQ0FBQztBQUNmLENBQUM7QUFFRCxPQUFPLE1BQU1DLFNBQVMsR0FBSUMsTUFBd0IsSUFDaERDLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDakMsVUFBVSxFQUFFK0IsTUFBTSxDQUFDO0FBQ25DLGdCQUFlLE1BQXdCL0IsVUFBVSJ9
package/lib/config.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","names":["configData","loginProjectName","authorization","loginPath","exception505","exception403","iconfontUrl","viewUrl","viewBizUrl","antdStyle","allowChars","storePrefix","mountElementId","iconPrefix","tableTool","modalButton","okButtonProps","cancleButtonProps","confirmIcon","closeIcon","imgaes","noData","baseActionColumn","textAlign","showIcon","width","buttonNumber","storeRequestConfig","inputProps","setConfig","config","Object","assign"],"sources":["../src/components/config.ts"],"sourcesContent":["import React, { ReactNode } from \"react\";\r\n\r\n/*\r\n * @Descripttion:\r\n * @version:\r\n * @Author: rxzhu\r\n * @Date: 2021-03-25 10:34:53\r\n * @LastEditors: rxzhu\r\n * @LastEditTime: 2021-04-23 16:45:03\r\n */\r\ninterface IComponentConfig {\r\n loginProjectName?: string;\r\n authorization?: string;\r\n loginPath?: string;\r\n exception505?: string;\r\n exception403?: string;\r\n iconfontUrl?: string;\r\n viewUrl?: string;\r\n viewBizUrl?: string;\r\n antdStyle?: boolean;\r\n allowChars?: boolean;\r\n storePrefix?: string;\r\n mountElementId?: string;\r\n iconPrefix?: string;\r\n tableTool?: { show: boolean; tools?: Array<string> };\r\n modalButton?: {\r\n okButtonProps?: object;\r\n cancleButtonProps?: object;\r\n confirmIcon?: ReactNode;\r\n closeIcon?: ReactNode;\r\n };\r\n baseActionColumn?: {\r\n textAlign: string;\r\n showIcon?: boolean;\r\n width?: number;\r\n buttonNumber?: number | \"all\";\r\n };\r\n images?: { noData?: any };\r\n storeRequestConfig?: {};\r\n inputProps?: {\r\n allowChars?: boolean;\r\n showCount?: boolean;\r\n maxLength?: number | boolean;\r\n };\r\n}\r\n\r\nlet configData = {\r\n //登录界面项目名称\r\n loginProjectName: \"NSC Framework\",\r\n //系统指纹,登录时候需要传递\r\n authorization: \"Basic bnNjOm5zYw==\",\r\n //登陆界面URL\r\n loginPath: \"/login\",\r\n //505错误URL\r\n exception505: \"/exception/500\",\r\n //403错误URL\r\n exception403: \"/exception/403\",\r\n //阿里图标库URL\r\n iconfontUrl: \"\",\r\n //后台系统视图获取地址\r\n viewUrl: \"/jquick-system/dict/dictionary?code=\",\r\n //后台业务视图获取地址\r\n viewBizUrl: \"/jquick-system/dict-biz/dictionary?code=\",\r\n //默认antd样式\r\n antdStyle: true,\r\n //input特殊字符全局变量\r\n allowChars: false,\r\n //localstore前缀\r\n storePrefix: \"\",\r\n //app-id\r\n mountElementId: \"\",\r\n //icon前缀\r\n iconPrefix: \"icon\",\r\n //table工具栏\r\n tableTool: {} as any,\r\n //modal按钮\r\n modalButton: {\r\n okButtonProps: {},\r\n cancleButtonProps: {},\r\n confirmIcon: null,\r\n closeIcon: null,\r\n },\r\n imgaes: {\r\n noData: null,\r\n },\r\n baseActionColumn: {\r\n textAlign: \"left\",\r\n showIcon: false,\r\n width: 180,\r\n buttonNumber: 3,\r\n },\r\n storeRequestConfig: {},\r\n inputProps: {},\r\n};\r\n\r\nexport const setConfig = (config: IComponentConfig) =>\r\n Object.assign(configData, config);\r\nexport default (): IComponentConfig => configData;\r\n"],"mappings":"AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAqCA,IAAIA,UAAU,GAAG;EACf;EACAC,gBAAgB,EAAE,eAAe;EACjC;EACAC,aAAa,EAAE,oBAAoB;EACnC;EACAC,SAAS,EAAE,QAAQ;EACnB;EACAC,YAAY,EAAE,gBAAgB;EAC9B;EACAC,YAAY,EAAE,gBAAgB;EAC9B;EACAC,WAAW,EAAE,EAAE;EACf;EACAC,OAAO,EAAE,sCAAsC;EAC/C;EACAC,UAAU,EAAE,0CAA0C;EACtD;EACAC,SAAS,EAAE,IAAI;EACf;EACAC,UAAU,EAAE,KAAK;EACjB;EACAC,WAAW,EAAE,EAAE;EACf;EACAC,cAAc,EAAE,EAAE;EAClB;EACAC,UAAU,EAAE,MAAM;EAClB;EACAC,SAAS,EAAE,CAAC,CAAQ;EACpB;EACAC,WAAW,EAAE;IACXC,aAAa,EAAE,CAAC,CAAC;IACjBC,iBAAiB,EAAE,CAAC,CAAC;IACrBC,WAAW,EAAE,IAAI;IACjBC,SAAS,EAAE;EACb,CAAC;EACDC,MAAM,EAAE;IACNC,MAAM,EAAE;EACV,CAAC;EACDC,gBAAgB,EAAE;IAChBC,SAAS,EAAE,MAAM;IACjBC,QAAQ,EAAE,KAAK;IACfC,KAAK,EAAE,GAAG;IACVC,YAAY,EAAE;EAChB,CAAC;EACDC,kBAAkB,EAAE,CAAC,CAAC;EACtBC,UAAU,EAAE,CAAC;AACf,CAAC;AAED,OAAO,MAAMC,SAAS,GAAIC,MAAwB,IAChDC,MAAM,CAACC,MAAM,CAAChC,UAAU,EAAE8B,MAAM,CAAC;AACnC,gBAAe,MAAwB9B,UAAU"}
1
+ {"version":3,"file":"config.js","names":["configData","loginProjectName","authorization","loginPath","exception505","exception403","iconfontUrl","viewUrl","viewBizUrl","antdStyle","allowChars","storePrefix","mountElementId","iconPrefix","tableTool","modalButton","okButtonProps","cancleButtonProps","confirmIcon","closeIcon","imgaes","noData","baseActionColumn","textAlign","showIcon","width","buttonNumber","storeRequestConfig","inputProps","tableProps","setConfig","config","Object","assign"],"sources":["../src/components/config.ts"],"sourcesContent":["import React, { ReactNode } from \"react\";\r\n\r\n/*\r\n * @Descripttion:\r\n * @version:\r\n * @Author: rxzhu\r\n * @Date: 2021-03-25 10:34:53\r\n * @LastEditors: rxzhu\r\n * @LastEditTime: 2021-04-23 16:45:03\r\n */\r\ninterface IComponentConfig {\r\n loginProjectName?: string;\r\n authorization?: string;\r\n loginPath?: string;\r\n exception505?: string;\r\n exception403?: string;\r\n iconfontUrl?: string;\r\n viewUrl?: string;\r\n viewBizUrl?: string;\r\n antdStyle?: boolean;\r\n allowChars?: boolean;\r\n storePrefix?: string;\r\n mountElementId?: string;\r\n iconPrefix?: string;\r\n tableTool?: { show: boolean; tools?: Array<string> };\r\n modalButton?: {\r\n okButtonProps?: object;\r\n cancleButtonProps?: object;\r\n confirmIcon?: ReactNode;\r\n closeIcon?: ReactNode;\r\n };\r\n baseActionColumn?: {\r\n textAlign: string;\r\n showIcon?: boolean;\r\n width?: number;\r\n buttonNumber?: number | \"all\";\r\n };\r\n images?: { noData?: any };\r\n storeRequestConfig?: {};\r\n inputProps?: {\r\n allowChars?: boolean;\r\n showCount?: boolean;\r\n maxLength?: number | boolean;\r\n };\r\n tableProps?: {\r\n bordered?: boolean;\r\n };\r\n}\r\n\r\nlet configData = {\r\n //登录界面项目名称\r\n loginProjectName: \"NSC Framework\",\r\n //系统指纹,登录时候需要传递\r\n authorization: \"Basic bnNjOm5zYw==\",\r\n //登陆界面URL\r\n loginPath: \"/login\",\r\n //505错误URL\r\n exception505: \"/exception/500\",\r\n //403错误URL\r\n exception403: \"/exception/403\",\r\n //阿里图标库URL\r\n iconfontUrl: \"\",\r\n //后台系统视图获取地址\r\n viewUrl: \"/jquick-system/dict/dictionary?code=\",\r\n //后台业务视图获取地址\r\n viewBizUrl: \"/jquick-system/dict-biz/dictionary?code=\",\r\n //默认antd样式\r\n antdStyle: true,\r\n //input特殊字符全局变量\r\n allowChars: false,\r\n //localstore前缀\r\n storePrefix: \"\",\r\n //app-id\r\n mountElementId: \"\",\r\n //icon前缀\r\n iconPrefix: \"icon\",\r\n //table工具栏\r\n tableTool: {} as any,\r\n //modal按钮\r\n modalButton: {\r\n okButtonProps: {},\r\n cancleButtonProps: {},\r\n confirmIcon: null,\r\n closeIcon: null,\r\n },\r\n imgaes: {\r\n noData: null,\r\n },\r\n baseActionColumn: {\r\n textAlign: \"left\",\r\n showIcon: false,\r\n width: 180,\r\n buttonNumber: 3,\r\n },\r\n storeRequestConfig: {},\r\n inputProps: {},\r\n tableProps: {},\r\n};\r\n\r\nexport const setConfig = (config: IComponentConfig) =>\r\n Object.assign(configData, config);\r\nexport default (): IComponentConfig => configData;\r\n"],"mappings":"AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAwCA,IAAIA,UAAU,GAAG;EACf;EACAC,gBAAgB,EAAE,eAAe;EACjC;EACAC,aAAa,EAAE,oBAAoB;EACnC;EACAC,SAAS,EAAE,QAAQ;EACnB;EACAC,YAAY,EAAE,gBAAgB;EAC9B;EACAC,YAAY,EAAE,gBAAgB;EAC9B;EACAC,WAAW,EAAE,EAAE;EACf;EACAC,OAAO,EAAE,sCAAsC;EAC/C;EACAC,UAAU,EAAE,0CAA0C;EACtD;EACAC,SAAS,EAAE,IAAI;EACf;EACAC,UAAU,EAAE,KAAK;EACjB;EACAC,WAAW,EAAE,EAAE;EACf;EACAC,cAAc,EAAE,EAAE;EAClB;EACAC,UAAU,EAAE,MAAM;EAClB;EACAC,SAAS,EAAE,CAAC,CAAQ;EACpB;EACAC,WAAW,EAAE;IACXC,aAAa,EAAE,CAAC,CAAC;IACjBC,iBAAiB,EAAE,CAAC,CAAC;IACrBC,WAAW,EAAE,IAAI;IACjBC,SAAS,EAAE;EACb,CAAC;EACDC,MAAM,EAAE;IACNC,MAAM,EAAE;EACV,CAAC;EACDC,gBAAgB,EAAE;IAChBC,SAAS,EAAE,MAAM;IACjBC,QAAQ,EAAE,KAAK;IACfC,KAAK,EAAE,GAAG;IACVC,YAAY,EAAE;EAChB,CAAC;EACDC,kBAAkB,EAAE,CAAC,CAAC;EACtBC,UAAU,EAAE,CAAC,CAAC;EACdC,UAAU,EAAE,CAAC;AACf,CAAC;AAED,OAAO,MAAMC,SAAS,GAAIC,MAAwB,IAChDC,MAAM,CAACC,MAAM,CAACjC,UAAU,EAAE+B,MAAM,CAAC;AACnC,gBAAe,MAAwB/B,UAAU"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nsc-react-component",
3
- "version": "4.0.16",
3
+ "version": "4.0.17",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {