nsc-react-component 4.2.3 → 4.2.4

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.
@@ -570,6 +570,7 @@ class FormPage extends PureComponent {
570
570
  let newFormsObj = {};
571
571
  let formGroups = [];
572
572
  let otherGrups = [];
573
+ let defalutValue = {};
573
574
  //处理表单数据
574
575
  forms.map(item => {
575
576
  if (item.groupName && formGroups.indexOf(item.groupName) < 0) {
@@ -650,4 +651,4 @@ class FormPage extends PureComponent {
650
651
  }
651
652
  }
652
653
  export default FormPage;
653
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJGb3JtIiwiZ2V0Tm9kZSIsIm1lc3NhZ2UiLCJDb2wiLCJSb3ciLCJpc0VtcHR5T2JqIiwiZ2V0TG9jYWxTdG9yZSIsImRheWpzIiwibG9kYXNoIiwiQnV0dG9uIiwiVXBsb2FkIiwiY2xzIiwiTnNjUmVxdWVzdCIsIkZvcm1QYWdlIiwiY29uc3RydWN0b3IiLCJhcmd1bWVudHMiLCJfZGVmaW5lUHJvcGVydHkiLCJjcmVhdGVSZWYiLCJsb2FkaW5nIiwibGFiZWwiLCJwcm9wcyIsImVkaXRUeXBlIiwiZWRpdG9yRmxhZyIsInZhbHVlIiwiZGljdE5hbWVzIiwiZmlsZUxpc3QiLCJ3aWR0aCIsImVkaXRJZCIsImV2IiwiZGF0YSIsIkpTT04iLCJwYXJzZSIsIl90aGlzIiwiZXZlbnRUeXBlIiwicGF5bG9hZCIsImNsb3NlIiwic2V0U3RhdGUiLCJjb21wb25lbnREaWRNb3VudCIsIndpbmRvdyIsImFkZEV2ZW50TGlzdGVuZXIiLCJsaXN0ZW5NZXNzYWdlIiwiZm9ybVR5cGUiLCJyZXF1ZXN0T2JqZWN0IiwiZGV0YWlsVXJsIiwiZ2V0IiwicGFyYW1zIiwiaWQiLCJzdGF0ZSIsInhzc0ZpbHRlciIsInRoZW4iLCJyZXMiLCJjb2RlIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50IiwiZm9ybVJlZiIsImN1cnJlbnQiLCJzZXRGaWVsZHNWYWx1ZSIsIl9vYmplY3RTcHJlYWQiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQyIiwiZGVmYXVsdFZhbHUiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJzaG93Iiwib3JnVmFsdWUiLCJlZGl0b3JmbGFnIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiY2FsbEJhY2siLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQzIiwiY29udmVydFZhbHVlIiwic2hvd0Zvcm0iLCJhZnRlclJlbmRlciIsIl90aGlzJGZvcm1SZWYkY3VycmVudDQiLCJkZWZhdWx0VmFsdWUiLCJoaWRlIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50NSIsIm9uSGlkZUZvcm0iLCJoaWRlRm9ybSIsIl90aGlzJGZvcm1SZWYkY3VycmVudDYiLCJzZXRMb2FkaW5nIiwic2V0RWRpdFR5cGUiLCJ0eXBlIiwic2V0RWRpdElkIiwiZ2V0Rm9ybVZhbHVlIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50NyIsImZvcm1WYWx1ZSIsImdldEZpZWxkc1ZhbHVlIiwiZmlsZUZvcm1hdCIsIm5ld0ZpbGVMaXN0IiwibWFwIiwiaXRlbSIsImdldEZpbGVMaXN0Iiwic3VibWl0RmxhZyIsImVycm9yIiwiZGF0ZVZhbHVlRm9ybWF0Iiwia2V5Iiwib2xkZGF0YSIsIkFycmF5IiwiaXNBcnJheSIsImZvcm1hdCIsInJhbmdlckRhdGUiLCJkYXRlRm9ybWF0IiwiZSIsInZhbHVlcyIsImNsb25lRGVlcCIsInZhbHVlMSIsInZhbHVlMiIsInNldEZvcm1WYWx1ZSIsIl90aGlzJGZvcm1SZWYkY3VycmVudDgiLCJuZXdWYWx1ZSIsImRvU3VibWl0IiwiZm9ybWRhdGEiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ5Iiwic3VibWl0VXJsIiwic3VibWl0UGFyYW1zIiwicmVxdWVzdENvbmZpZyIsImFkZFVybCIsImVkaXRvclVybCIsImFkZFBhcmFtcyIsImVkaXRvclBhcmFtcyIsInVybCIsIlV0aWxzIiwiZnVuYyIsIkZ1bmN0aW9uIiwiY29udmVyUGFyYW1zIiwiY29uc29sZSIsIm90aGVyUGFyYW1zIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwib25TdWJtaXQiLCJub1VuZGVmaW5lZCIsInN1Y2Nlc3MiLCJzZXRUaW1lb3V0Iiwib2JqIiwiZmlsZUlkIiwiZmlsZU5hbWUiLCJzdGF0dXMiLCJwdXNoIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50MTAiLCJ2YWxpZCIsInZhbGlkYXRlRmllbGRzIiwiY2F0Y2giLCJlcnJvckluZm8iLCJ2YWx1ZUNoYW5nZSIsIl9yZWYiLCJ2YWx1ZU9wdGlvbiIsImRpY3ROYW1lIiwibmV3TmFtZXMiLCJvbkNoYW5nZSIsImV2ZW50T3B0aW9uIiwiZnVuY3MiLCJyZWZzIiwicmVmTGlzdCIsInZhbHVlU3RyIiwic2VsZkZ1bmMiLCJyZW5kZXJGb3JtIiwiZm9ybXMiLCJuZXdWYWxpZCIsImNyZWF0ZUVsZW1lbnQiLCJndXR0ZXIiLCJpbmRleCIsIl9pdGVtJHByb3BzIiwiaXRlbVByb3BzIiwidmFsdWVGb3JtYXQiLCJuYW1lIiwic3BsaXQiLCJhbGxvd0NoYXJzIiwicGxhY2Vob2xkZXIiLCJjb25jYXQiLCJiaW5kIiwiZGF0YVR5cGUiLCJkaXNhYmxlZCIsInJ1bGVzIiwicmVxdWlyZWQiLCJpdGVtUmVmIiwiX2l0ZW0kcHJvcHMyIiwic3BhbiIsInN0eWxlIiwiZGlzcGxheSIsIkl0ZW0iLCJjb21wb25lbnROYW1lIiwibm9TdHlsZSIsImZvcm1SZW5kZXIiLCJyZWYiLCJfaXRlbSRwcm9wczMiLCJfaXRlbSRwcm9wczQiLCJfaXRlbSRwcm9wczUiLCJfZXh0ZW5kcyIsIm9uTGlzdENoYW5nZSIsImxpc3QiLCJzaG93VXBsb2FkTGlzdCIsInNob3dEb3dubG9hZEljb24iLCJzaG93UmVtb3ZlSWNvbiIsImNoaWxkcmVuIiwicmVuZGVyIiwiZm9vdGVyIiwidGl0bGUiLCJzZWxmQnV0dG9ucyIsIm1vZGFsUHJvcHMiLCJvbk9rIiwib25DYW5jZWwiLCJva0J1dHRvblByb3BzIiwiY2VudGVyZWQiLCJmb290ZXJCdXR0b24iLCJkcmF3ZXJQcm9wcyIsIm9uQ2xvc2UiLCJuZXdGb3Jtc09iaiIsImZvcm1Hcm91cHMiLCJvdGhlckdydXBzIiwiZ3JvdXBOYW1lIiwiaW5kZXhPZiIsImdyb3VwRm9ybXMiLCJmb3JtIiwic2hvd01vZGVsIiwib25WYWx1ZXNDaGFuZ2UiLCJjaGFuZ2VkVmFsdWVzIiwiYWxsVmFsdWVzIiwib25Gb3JtQ2hhbmdlIiwiY2hhbmdlVmFsaWQiLCJjbGFzc05hbWUiLCJPYmplY3QiLCJrZXlzIiwiZm9vdGVyQ2xhc3NOYW1lIiwiY2FuY2VsQnV0dG9uUHJvcHMiLCJvbkNsaWNrIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcGFnZS9Gb3JtUGFnZS9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgRm9ybSBmcm9tIFwiLi4vLi4vYmFzZS9mb3JtXCI7XHJcbmltcG9ydCB7IGdldExlc3MsIGdldE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uLy4uL2Jhc2UvbWVzc2FnZVwiO1xyXG5pbXBvcnQgQ29sIGZyb20gXCIuLi8uLi9iYXNlL2dyaWQvQ29sXCI7XHJcbmltcG9ydCBSb3cgZnJvbSBcIi4uLy4uL2Jhc2UvZ3JpZC9Sb3dcIjtcclxuaW1wb3J0IHsgaXNFbXB0eU9iaiwgZ2V0TG9jYWxTdG9yZSB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgZGF5anMgZnJvbSBcImRheWpzXCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubW9kdWxlLmxlc3NcIjtcclxuaW1wb3J0IGxvZGFzaCBmcm9tIFwibG9kYXNoXCI7XHJcbmltcG9ydCBCdXR0b24gZnJvbSBcIi4uLy4uL2Jhc2UvYnV0dG9uXCI7XHJcbmltcG9ydCBVcGxvYWQgZnJvbSBcIi4uLy4uL2Jhc2UvdXBsb2FkXCI7XHJcbmltcG9ydCBjbHMgZnJvbSBcImNsYXNzbmFtZXNcIjtcclxuaW1wb3J0IHsgSUZvcm1Qcm9wcyB9IGZyb20gXCJzcmMvY29tcG9uZW50cy9iYXNlL2Zvcm0vRm9ybVwiO1xyXG5pbXBvcnQgTnNjUmVxdWVzdCBmcm9tIFwibnNjLXJlcXVlc3RcIjtcclxuZXhwb3J0IGludGVyZmFjZSBGb3JtUGFnZVByb3BzIHtcclxuICBmb3Jtcz86IEFycmF5PGFueT47IC8v5piv5ZCm5pi+56S65pON5L2c5YiXXHJcbiAgc3VibWl0VXJsPzogc3RyaW5nO1xyXG4gIG9uU3VibWl0PzogKHZhbHVlPzogYW55LCBsYWJlbD86IGFueSkgPT4gdm9pZDtcclxuICBmb290ZXJDbGFzc05hbWU/OiBhbnk7XHJcbiAgb2tCdXR0b25Qcm9wcz86IGFueTtcclxuICBjYW5jZWxCdXR0b25Qcm9wcz86IGFueTtcclxuICBmb290ZXI/OiBSZWFjdE5vZGUgfCBib29sZWFuO1xyXG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xyXG4gIG9uRm9ybUNoYW5nZT86ICh2YWx1ZT86IGFueSwgYWxsVmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgc3VibWl0UGFyYW1zPzogYW55OyAvL+a3u+WKoOWPguaVsO+8jOm7mOiupG1vdGhvZDpwb3N077yMIOWPguaVsOmAmui/h2RhdGHkvKDpgJJcclxuICBmdW5jcz86IGFueTtcclxuICBwcm9wcz86IElGb3JtUHJvcHM7XHJcbiAgcmVxdWVzdE9iamVjdD86IHtcclxuICAgIGFkZFVybD86IHN0cmluZztcclxuICAgIGVkaXRvclVybD86IHN0cmluZztcclxuICAgIGFkZFBhcmFtcz86IGFueTtcclxuICAgIGVkaXRvclBhcmFtcz86IGFueTtcclxuICAgIGRldGFpbFVybD86IHN0cmluZztcclxuICB9O1xyXG4gIHJlcXVlc3RDb25maWc/OiBhbnk7XHJcbiAgZm9vdGVyV2lkdGg/OiBib29sZWFuO1xyXG4gIGVkaXRUeXBlPzogXCLmlrDlop5cIiB8IFwi57yW6L6RXCIgfCBcIuafpeeci1wiO1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIGVkaXRJZD86IHN0cmluZztcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuY2xhc3MgRm9ybVBhZ2UgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PEZvcm1QYWdlUHJvcHMsIGFueT4ge1xyXG4gIGZvcm1SZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHN0YXRlID0ge1xyXG4gICAgbG9hZGluZzogZmFsc2UsXHJcbiAgICBsYWJlbDogdGhpcy5wcm9wcy5lZGl0VHlwZSB8fCBcIlwiLFxyXG4gICAgZWRpdG9yRmxhZzogdHJ1ZSxcclxuICAgIHZhbHVlOiB7fSBhcyBhbnksXHJcbiAgICBkaWN0TmFtZXM6IHt9IGFzIGFueSxcclxuICAgIGZpbGVMaXN0OiB7fSBhcyBhbnksXHJcbiAgICB3aWR0aDogZ2V0TG9jYWxTdG9yZShcIm5zYy1ob21lLW1lbnVDb2xsc2FwZVwiKSB8fCBmYWxzZSxcclxuICAgIGVkaXRJZDogdGhpcy5wcm9wcy5lZGl0SWQgfHwgXCJcIixcclxuICB9O1xyXG4gIHZhbGlkOiBhbnkgPSBbXTtcclxuICBkYXRlVmFsdWVGb3JtYXQgPSB7fSBhcyBhbnk7XHJcbiAgZGF0ZUZvcm1hdCA9IHt9IGFzIGFueTtcclxuICBmaWxlRm9ybWF0ID0gW10gYXMgYW55O1xyXG4gIHJhbmdlckRhdGUgPSB7fSBhcyBhbnk7XHJcbiAgcmVmTGlzdCA9IHt9IGFzIGFueTtcclxuICBzdWJtaXRGbGFnID0gdHJ1ZTtcclxuICBjb21wb25lbnREaWRNb3VudCgpOiB2b2lkIHtcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCB0aGlzLmxpc3Rlbk1lc3NhZ2UpO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBmb3JtVHlwZSA9IFwicGFnZVwiLFxyXG4gICAgICByZXF1ZXN0T2JqZWN0ID0ge30sXHJcbiAgICAgIGVkaXRUeXBlID0gXCLmlrDlop5cIixcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKGZvcm1UeXBlID09IFwicGFnZVwiKSB7XHJcbiAgICAgIGlmIChyZXF1ZXN0T2JqZWN0LmRldGFpbFVybCAmJiBlZGl0VHlwZSAhPT0gXCLmlrDlop5cIikge1xyXG4gICAgICAgIE5zY1JlcXVlc3QuZ2V0KHJlcXVlc3RPYmplY3QuZGV0YWlsVXJsLCB7XHJcbiAgICAgICAgICBwYXJhbXM6IHsgaWQ6IHRoaXMuc3RhdGUuZWRpdElkIH0sXHJcbiAgICAgICAgICB4c3NGaWx0ZXI6IGZhbHNlLFxyXG4gICAgICAgIH0pLnRoZW4oKHJlcykgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2V0RmllbGRzVmFsdWUoeyAuLi5yZXMuZGF0YSB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIGlmIChlZGl0VHlwZSA9PSBcIuaWsOWinlwiKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnNldEZpZWxkc1ZhbHVlKHRoaXMucHJvcHMuZGVmYXVsdFZhbHUgfHwge30pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xyXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIHRoaXMubGlzdGVuTWVzc2FnZSk7XHJcbiAgfVxyXG4gIGxpc3Rlbk1lc3NhZ2UgPSAoZXYpID0+IHtcclxuICAgIGNvbnN0IGRhdGEgPSB0eXBlb2YgZXYuZGF0YSA9PT0gXCJzdHJpbmdcIiA/IEpTT04ucGFyc2UoZXYuZGF0YSkgOiBldi5kYXRhO1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGlmIChkYXRhLmV2ZW50VHlwZSA9PSBcIm1lbnVDb2xsc2FwZVwiKSB7XHJcbiAgICAgIGNvbnN0IHsgcGF5bG9hZCB9ID0gZGF0YTtcclxuICAgICAgaWYgKHBheWxvYWQuY2xvc2UgPT09IHRydWUgfHwgcGF5bG9hZC5jbG9zZSA9PT0gZmFsc2UpIHtcclxuICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7IHdpZHRoOiBwYXlsb2FkLmNsb3NlIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfTtcclxuICAvL+ihqOWNleaYvuekulxyXG4gIHNob3cob3JnVmFsdWU/OiBhbnksIGVkaXRvcmZsYWcgPSBcImFkZFwiLCBjYWxsQmFjaz86IGFueSkge1xyXG4gICAgbGV0IGxhYmVsID0gXCLmlrDlop5cIjtcclxuICAgIGlmIChvcmdWYWx1ZSAmJiBlZGl0b3JmbGFnID09IFwiZWRpdG9yXCIpIHtcclxuICAgICAgbGFiZWwgPSBcIue8lui+kVwiO1xyXG4gICAgfSBlbHNlIGlmIChvcmdWYWx1ZSAmJiAoZWRpdG9yZmxhZyA9PSBcImRldGFpbFwiIHx8IGVkaXRvcmZsYWcgPT0gXCJzZWFyY2hcIikpIHtcclxuICAgICAgbGFiZWwgPSBcIuafpeeci1wiO1xyXG4gICAgfVxyXG4gICAgaWYgKG9yZ1ZhbHVlKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6IGxhYmVsLFxyXG4gICAgICAgICAgdmFsdWU6IG9yZ1ZhbHVlLFxyXG4gICAgICAgICAgZWRpdElkOiBvcmdWYWx1ZS5pZCxcclxuICAgICAgICB9LFxyXG4gICAgICAgICgpID0+IHtcclxuICAgICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuY29udmVydFZhbHVlKG9yZ1ZhbHVlLCBsYWJlbCk7XHJcbiAgICAgICAgICAvL+WkhOeQhuaWh+S7tuaVsOaNrlxyXG4gICAgICAgICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnNob3dGb3JtKHZhbHVlLCB7XHJcbiAgICAgICAgICAgIGFmdGVyUmVuZGVyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgY2FsbEJhY2sgJiYgY2FsbEJhY2soKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6IGxhYmVsLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnNob3dGb3JtKHRoaXMucHJvcHMuZGVmYXVsdFZhbHVlLCB7XHJcbiAgICAgICAgICAgIGFmdGVyUmVuZGVyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgY2FsbEJhY2sgJiYgY2FsbEJhY2soKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbiAgaGlkZShoaWRlID0gdHJ1ZSkge1xyXG4gICAgY29uc3QgeyBvbkhpZGVGb3JtIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKG9uSGlkZUZvcm0pIHtcclxuICAgICAgb25IaWRlRm9ybSAmJiBvbkhpZGVGb3JtKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSwgZmlsZUxpc3Q6IHt9IH0pO1xyXG4gICAgaGlkZSAmJiB0aGlzLmZvcm1SZWYuY3VycmVudD8uaGlkZUZvcm0oKTtcclxuICB9XHJcbiAgaGlkZUZvcm0oKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogZmFsc2UsIGZpbGVMaXN0OiB7fSB9KTtcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5oaWRlRm9ybSgpO1xyXG4gIH1cclxuICBzaG93Rm9ybShvcmdWYWx1ZT86IGFueSwgZWRpdG9yZmxhZyA9IFwiYWRkXCIsIGNhbGxCYWNrPzogYW55KSB7XHJcbiAgICB0aGlzLnNob3cob3JnVmFsdWUsIGVkaXRvcmZsYWcsIGNhbGxCYWNrKTtcclxuICB9XHJcbiAgc2V0TG9hZGluZyhsb2FkaW5nOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogbG9hZGluZyB9KTtcclxuICB9XHJcbiAgc2V0RWRpdFR5cGUodHlwZSkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGxhYmVsOiB0eXBlLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHNldEVkaXRJZChpZCkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGVkaXRJZDogaWQsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgZ2V0Rm9ybVZhbHVlKCkge1xyXG4gICAgY29uc3QgeyBsYWJlbCwgdmFsdWUsIGRpY3ROYW1lcywgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLmZvcm1SZWYuY3VycmVudD8uZ2V0RmllbGRzVmFsdWUoKTtcclxuICAgIGxldCBkYXRhID0geyAuLi5mb3JtVmFsdWUsIC4uLmRpY3ROYW1lcyB9O1xyXG4gICAgaWYgKHRoaXMuZmlsZUZvcm1hdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBuZXdGaWxlTGlzdCA9IHt9IGFzIGFueTtcclxuICAgICAgdGhpcy5maWxlRm9ybWF0Lm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIGlmIChmaWxlTGlzdFtpdGVtXS5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgbmV3RmlsZUxpc3RbaXRlbV0gPSBudWxsO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoIWZvcm1WYWx1ZVtpdGVtXSkge1xyXG4gICAgICAgICAgICBuZXdGaWxlTGlzdFtpdGVtXSA9IHRoaXMuZ2V0RmlsZUxpc3QoZmlsZUxpc3RbaXRlbV0gfHwgW10pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGRhdGEgPSB7IC4uLmRhdGEsIC4uLm5ld0ZpbGVMaXN0IH07XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuc3VibWl0RmxhZykge1xyXG4gICAgICBtZXNzYWdlLmVycm9yKFwi6K+3562J5b6F5omA5pyJ5paH5Lu25LiK5Lyg5a6M5oiQ77yBXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoIWlzRW1wdHlPYmoodGhpcy5kYXRlVmFsdWVGb3JtYXQpKSB7XHJcbiAgICAgIGZvciAobGV0IGtleSBpbiB0aGlzLmRhdGVWYWx1ZUZvcm1hdCkge1xyXG4gICAgICAgIGxldCBvbGRkYXRhID0gZGF0YVtrZXldO1xyXG4gICAgICAgIGlmIChvbGRkYXRhKSB7XHJcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvbGRkYXRhKSkge1xyXG4gICAgICAgICAgICBkYXRhW2tleV0gPSBbXHJcbiAgICAgICAgICAgICAgZGF5anMob2xkZGF0YVswXSkuZm9ybWF0KHRoaXMuZGF0ZVZhbHVlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICAgIGRheWpzKG9sZGRhdGFbMV0pLmZvcm1hdCh0aGlzLmRhdGVWYWx1ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgaWYgKHRoaXMucmFuZ2VyRGF0ZVtrZXldKSB7XHJcbiAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGRhdGFbdGhpcy5yYW5nZXJEYXRlW2tleV1bMF1dID0gZGF5anMob2xkZGF0YVswXSkuZm9ybWF0KFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmRhdGVGb3JtYXRba2V5XVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGRhdGFbdGhpcy5yYW5nZXJEYXRlW2tleV1bMV1dID0gZGF5anMob2xkZGF0YVsxXSkuZm9ybWF0KFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmRhdGVGb3JtYXRba2V5XVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZSBkYXRhW2tleV07XHJcbiAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge31cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZGF0YVtrZXldID0gZGF5anMob2xkZGF0YSkuZm9ybWF0KHRoaXMuZGF0ZVZhbHVlRm9ybWF0W2tleV0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGxhYmVsID09IFwi57yW6L6RXCIpIHtcclxuICAgICAgZGF0YSA9IHsgLi4uZGF0YSwgaWQ6IHZhbHVlPy5pZCB8fCB0aGlzLnN0YXRlLmVkaXRJZCB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfVxyXG4gIGNvbnZlcnRWYWx1ZSh2YWx1ZSwgdHlwZSkge1xyXG4gICAgbGV0IHZhbHVlcyA9IGxvZGFzaC5jbG9uZURlZXAodmFsdWUpO1xyXG4gICAgaWYgKHRoaXMuZmlsZUZvcm1hdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBmaWxlTGlzdCA9IHt9IGFzIGFueTtcclxuICAgICAgdGhpcy5maWxlRm9ybWF0Lm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIGxldCBvbGRkYXRhID0gdmFsdWVzW2l0ZW1dO1xyXG4gICAgICAgIGlmIChvbGRkYXRhICYmIEFycmF5LmlzQXJyYXkob2xkZGF0YSkpIHtcclxuICAgICAgICAgIGZpbGVMaXN0W2l0ZW1dID0gdGhpcy5nZXRGaWxlTGlzdChvbGRkYXRhIHx8IFtdLCB0eXBlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZmlsZUxpc3RbaXRlbV0gPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHsgZmlsZUxpc3Q6IGZpbGVMaXN0IH0pO1xyXG4gICAgfVxyXG4gICAgLy/lpITnkIbml6XmnJ/moLzlvI/mlbDmja5cclxuICAgIGlmICghaXNFbXB0eU9iaih0aGlzLmRhdGVGb3JtYXQpKSB7XHJcbiAgICAgIGZvciAobGV0IGtleSBpbiB0aGlzLmRhdGVGb3JtYXQpIHtcclxuICAgICAgICBsZXQgb2xkZGF0YSA9IHZhbHVlc1trZXldO1xyXG4gICAgICAgIGlmIChvbGRkYXRhKSB7XHJcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvbGRkYXRhKSkge1xyXG4gICAgICAgICAgICB2YWx1ZXNba2V5XSA9IFtcclxuICAgICAgICAgICAgICBkYXlqcyhvbGRkYXRhWzBdLCB0aGlzLmRhdGVGb3JtYXRba2V5XSksXHJcbiAgICAgICAgICAgICAgZGF5anMob2xkZGF0YVsxXSwgdGhpcy5kYXRlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdmFsdWVzW2tleV0gPSBkYXlqcyhvbGRkYXRhLCB0aGlzLmRhdGVGb3JtYXRba2V5XSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmICh0aGlzLnJhbmdlckRhdGVba2V5XSkge1xyXG4gICAgICAgICAgICBsZXQgdmFsdWUxID0gdmFsdWVzW3RoaXMucmFuZ2VyRGF0ZVtrZXldWzBdXTtcclxuICAgICAgICAgICAgbGV0IHZhbHVlMiA9IHZhbHVlc1t0aGlzLnJhbmdlckRhdGVba2V5XVsxXV07XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZTEgJiYgdmFsdWUyKSB7XHJcbiAgICAgICAgICAgICAgdmFsdWVzW2tleV0gPSBbXHJcbiAgICAgICAgICAgICAgICBkYXlqcyh2YWx1ZTEsIHRoaXMuZGF0ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgICAgIGRheWpzKHZhbHVlMiwgdGhpcy5kYXRlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZXM7XHJcbiAgfVxyXG4gIHNldEZvcm1WYWx1ZSh2YWx1ZSwgdHlwZSkge1xyXG4gICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmNvbnZlcnRWYWx1ZSh2YWx1ZSwgdHlwZSk7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2V0RmllbGRzVmFsdWUobmV3VmFsdWUpO1xyXG4gIH1cclxuICBkb1N1Ym1pdChmb3JtZGF0YSwgbGFiZWwpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgc3VibWl0VXJsLFxyXG4gICAgICBzdWJtaXRQYXJhbXMgPSB7fSxcclxuICAgICAgY2FsbEJhY2ssXHJcbiAgICAgIHJlcXVlc3RPYmplY3QgPSB7fSxcclxuICAgICAgcmVxdWVzdENvbmZpZyA9IHt9LFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGFkZFVybCwgZWRpdG9yVXJsLCBhZGRQYXJhbXMsIGVkaXRvclBhcmFtcyB9ID0gcmVxdWVzdE9iamVjdDtcclxuICAgIGxldCB1cmwgPSBzdWJtaXRVcmw7XHJcbiAgICBsZXQgcGFyYW1zOiBhbnkgPSB7fTtcclxuICAgIGlmIChsYWJlbCA9PSBcIuaWsOWinlwiKSB7XHJcbiAgICAgIHVybCA9IGFkZFVybCA/IGFkZFVybCA6IHN1Ym1pdFVybDtcclxuICAgICAgaWYgKGFkZFBhcmFtcyAmJiB0eXBlb2YgYWRkUGFyYW1zID09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICBjb25zdCBVdGlscyA9IHRoaXMucHJvcHMuVXRpbHMgfHwge307XHJcbiAgICAgICAgbGV0IGZ1bmMgPSBuZXcgRnVuY3Rpb24oXCJVdGlsc1wiLCBhZGRQYXJhbXMpO1xyXG4gICAgICAgIGxldCBjb252ZXJQYXJhbXMgPSBmdW5jKFV0aWxzKTtcclxuICAgICAgICBwYXJhbXMgPSBjb252ZXJQYXJhbXM7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcGFyYW1zID0gYWRkUGFyYW1zID8gYWRkUGFyYW1zIDogc3VibWl0UGFyYW1zO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKGxhYmVsID09IFwi57yW6L6RXCIpIHtcclxuICAgICAgdXJsID0gZWRpdG9yVXJsID8gZWRpdG9yVXJsIDogc3VibWl0VXJsO1xyXG4gICAgICBpZiAoZWRpdG9yUGFyYW1zICYmIHR5cGVvZiBlZGl0b3JQYXJhbXMgPT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgIGNvbnN0IFV0aWxzID0gdGhpcy5wcm9wcy5VdGlscyB8fCB7fTtcclxuICAgICAgICBsZXQgZnVuYyA9IG5ldyBGdW5jdGlvbihcIlV0aWxzXCIsIGVkaXRvclBhcmFtcyk7XHJcbiAgICAgICAgbGV0IGNvbnZlclBhcmFtcyA9IGZ1bmMoVXRpbHMpO1xyXG4gICAgICAgIHBhcmFtcyA9IGNvbnZlclBhcmFtcztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBwYXJhbXMgPSBlZGl0b3JQYXJhbXMgPyBlZGl0b3JQYXJhbXMgOiBzdWJtaXRQYXJhbXM7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghdXJsKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCLphY3nva5VcmzkuI3og73kuLrnqbrvvIFcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgZGF0YSA9IHt9LCAuLi5vdGhlclBhcmFtcyB9ID0gcGFyYW1zO1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/Lm9uU3VibWl0KFxyXG4gICAgICB1cmwsXHJcbiAgICAgIHtcclxuICAgICAgICBkYXRhOiB7IC4uLmZvcm1kYXRhLCAuLi5kYXRhIH0sXHJcbiAgICAgICAgbm9VbmRlZmluZWQ6IGxhYmVsID09IFwi57yW6L6RXCIsXHJcbiAgICAgICAgLi4ucmVxdWVzdENvbmZpZyxcclxuICAgICAgICAuLi5vdGhlclBhcmFtcyxcclxuICAgICAgfSxcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBjb2RlIH0gPSByZXM7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlIH0pO1xyXG4gICAgICAgIGlmIChjb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIG1lc3NhZ2Uuc3VjY2VzcyhsYWJlbCArIFwi5oiQ5YqfXCIpO1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaGlkZSh0cnVlKTtcclxuICAgICAgICAgICAgY2FsbEJhY2sgJiYgY2FsbEJhY2soKTtcclxuICAgICAgICAgIH0sIDUwMCk7XHJcblxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmhpZGUoZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuICBnZXRGaWxlTGlzdChkYXRhLCBsYWJlbCA9IFwi5paw5aKeXCIpIHtcclxuICAgIHRoaXMuc3VibWl0RmxhZyA9IHRydWU7XHJcbiAgICBsZXQgZmlsZUxpc3QgPSBbXSBhcyBhbnk7XHJcbiAgICBpZiAoZGF0YSAmJiBkYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgZGF0YS5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICBsZXQgb2JqID0ge1xyXG4gICAgICAgICAgZmlsZUlkOiBpdGVtLmZpbGVJZCxcclxuICAgICAgICAgIGZpbGVOYW1lOiBpdGVtLmZpbGVOYW1lLFxyXG4gICAgICAgIH0gYXMgYW55O1xyXG4gICAgICAgIGlmIChsYWJlbCA9PSBcIuafpeeci1wiKSB7XHJcbiAgICAgICAgICBvYmouc3RhdHVzID0gXCJkb25lXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChsYWJlbCAhPT0gXCLmn6XnnItcIiAmJiBpdGVtLnN0YXR1cyAhPT0gXCJkb25lXCIpIHtcclxuICAgICAgICAgIHRoaXMuc3VibWl0RmxhZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaWxlTGlzdC5wdXNoKG9iaik7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZpbGVMaXN0O1xyXG4gIH1cclxuXHJcbiAgb25TdWJtaXQoKSB7XHJcbiAgICBjb25zdCB7IG9uU3VibWl0IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBsYWJlbCwgdmFsdWUsIGRpY3ROYW1lcywgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBsZXQgdmFsaWQgPSB0aGlzLnZhbGlkO1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnRcclxuICAgICAgPy52YWxpZGF0ZUZpZWxkcygpXHJcbiAgICAgIC50aGVuKCgpID0+IHtcclxuICAgICAgICBsZXQgZGF0YSA9IHRoaXMuZ2V0Rm9ybVZhbHVlKCk7XHJcbiAgICAgICAgLy8gaWYgKCF0aGlzLnN1Ym1pdEZsYWcpIHtcclxuICAgICAgICAvLyAgIG1lc3NhZ2UuZXJyb3IoJ+ivt+etieW+heaJgOacieaWh+S7tuS4iuS8oOWujOaIkO+8gScpXHJcbiAgICAgICAgLy8gICByZXR1cm47XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiB0cnVlIH0pO1xyXG4gICAgICAgIGlmIChvblN1Ym1pdCkge1xyXG4gICAgICAgICAgb25TdWJtaXQgJiYgb25TdWJtaXQoZGF0YSwgbGFiZWwpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRvU3VibWl0KGRhdGEsIGxhYmVsKTtcclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlcnJvckluZm86IGFueSkgPT4ge30pO1xyXG4gIH1cclxuICB2YWx1ZUNoYW5nZSh7IHR5cGUsIGRpY3ROYW1lIH0sIHByb3BzLCB2YWx1ZSwgdmFsdWVPcHRpb24sIGRhdGEpIHtcclxuICAgIGlmICh2YWx1ZU9wdGlvbikge1xyXG4gICAgICBpZiAoZGljdE5hbWUpIHtcclxuICAgICAgICBjb25zdCB7IGRpY3ROYW1lcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICBjb25zdCBuZXdOYW1lcyA9IHsgLi4uZGljdE5hbWVzIH0gYXMgYW55O1xyXG4gICAgICAgIG5ld05hbWVzW2RpY3ROYW1lXSA9IHZhbHVlT3B0aW9uLmxhYmVsO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgZGljdE5hbWVzOiBuZXdOYW1lcyxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHByb3BzLm9uQ2hhbmdlKSB7XHJcbiAgICAgIGlmICh0eXBlb2YgcHJvcHMub25DaGFuZ2UgPT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgcHJvcHMub25DaGFuZ2UodmFsdWUsIHZhbHVlT3B0aW9uLCBkYXRhKTtcclxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcHJvcHMub25DaGFuZ2UgPT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgIGNvbnN0IGV2ZW50T3B0aW9uID0ge1xyXG4gICAgICAgICAgdmFsdWUsXHJcbiAgICAgICAgICBkYXRhLFxyXG4gICAgICAgICAgZm9ybVJlZjogdGhpcy5mb3JtUmVmLFxyXG4gICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MgfHwge30sXHJcbiAgICAgICAgICByZWZzOiB0aGlzLnJlZkxpc3QsXHJcbiAgICAgICAgfSBhcyBhbnk7XHJcbiAgICAgICAgY29uc3QgVXRpbHMgPSB0aGlzLnByb3BzLlV0aWxzIHx8IHt9O1xyXG4gICAgICAgIGlmICh0eXBlID09IFwiU2VsZWN0XCIpIHtcclxuICAgICAgICAgIGV2ZW50T3B0aW9uLnZhbHVlT3B0aW9uID0gdmFsdWVPcHRpb247XHJcbiAgICAgICAgICBldmVudE9wdGlvbi5kYXRhID0gZGF0YTtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gXCJEYXRlUGlja2VyXCIgfHwgdHlwZSA9PSBcIlJhbmdlUGlja2VyXCIpIHtcclxuICAgICAgICAgIGV2ZW50T3B0aW9uLnZhbHVlU3RyID0gdmFsdWVPcHRpb247XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHNlbGZGdW5jID0gbmV3IEZ1bmN0aW9uKFwiZXZlbnRPcHRpb25cIiwgXCJVdGlsc1wiLCBwcm9wcy5vbkNoYW5nZSk7XHJcbiAgICAgICAgc2VsZkZ1bmMoZXZlbnRPcHRpb24sIFV0aWxzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVuZGVyRm9ybShmb3JtcywgbGFiZWwpIHtcclxuICAgIGNvbnN0IG5ld1ZhbGlkOiBhbnlbXSA9IFtdO1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgPFJvdyBndXR0ZXI9ezI0fT5cclxuICAgICAgICB7Zm9ybXMubWFwKChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGl0ZW1Qcm9wcyA9IGl0ZW0ucHJvcHMgfHwge307XHJcbiAgICAgICAgICBpZiAoaXRlbVByb3BzLmZvcm1hdCB8fCBpdGVtUHJvcHMudmFsdWVGb3JtYXQpIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRlVmFsdWVGb3JtYXRbaXRlbS5uYW1lXSA9XHJcbiAgICAgICAgICAgICAgaXRlbVByb3BzLmZvcm1hdCB8fCBpdGVtUHJvcHMudmFsdWVGb3JtYXQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoaXRlbVByb3BzLmZvcm1hdCkge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGVGb3JtYXRbaXRlbS5uYW1lXSA9IGl0ZW1Qcm9wcy5mb3JtYXQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoaXRlbS50eXBlID09IFwiUmFuZ2VQaWNrZXJcIiAmJiBpdGVtLm5hbWUuc3BsaXQoXCIsXCIpLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgdGhpcy5yYW5nZXJEYXRlW2l0ZW0ubmFtZV0gPSBpdGVtLm5hbWUuc3BsaXQoXCIsXCIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IGFsbG93Q2hhcnMgPSBpdGVtLnByb3BzPy5hbGxvd0NoYXJzIHx8IGZhbHNlO1xyXG4gICAgICAgICAgbGV0IHByb3BzID0ge1xyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogYOivt+i+k+WFpSR7aXRlbS5sYWJlbH1gLFxyXG4gICAgICAgICAgICAuLi5pdGVtLnByb3BzLFxyXG4gICAgICAgICAgICBvbkNoYW5nZTogdGhpcy52YWx1ZUNoYW5nZS5iaW5kKFxyXG4gICAgICAgICAgICAgIHRoaXMsXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdHlwZTogaXRlbS50eXBlLFxyXG4gICAgICAgICAgICAgICAgZGljdE5hbWU6IGl0ZW0uZGljdE5hbWUsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB7IC4uLml0ZW0ucHJvcHMgfVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIGlmICghaXRlbS50eXBlIHx8IGl0ZW0udHlwZSA9PSBcIklucHV0XCIpIHtcclxuICAgICAgICAgICAgcHJvcHMuYWxsb3dDaGFycyA9IHRydWU7IC8vZm9ybS5pdGVtIOS9v+eUqGlucHV057uE5Lu2YWxsb3dDaGFyc+W/hemhu+m7mOiupHRydWUs5LiN54S26L6T5YWl54m55q6K5a2X56ym5ou/5Yiw55qE5YC85LiN5a+5XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBkZWxldGUgcHJvcHMudmFsdWVGb3JtYXQ7XHJcbiAgICAgICAgICBkZWxldGUgcHJvcHMuZm9ybWF0O1xyXG4gICAgICAgICAgZGVsZXRlIHByb3BzLmRhdGFUeXBlO1xyXG4gICAgICAgICAgaWYgKGxhYmVsID09IFwi5p+l55yLXCIpIHtcclxuICAgICAgICAgICAgcHJvcHMuZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICBwcm9wcy5wbGFjZWhvbGRlciA9IFwiXCI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoKGl0ZW0ucnVsZXMgJiYgaXRlbS5ydWxlcy5sZW5ndGggPiAwKSB8fCBpdGVtLnJlcXVpcmVkID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIG5ld1ZhbGlkLnB1c2goaXRlbS5uYW1lKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChpbmRleCArIDEgPT09IGZvcm1zLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLnZhbGlkID0gbmV3VmFsaWQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBpdGVtUmVmOiBhbnkgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gICAgICAgICAgdGhpcy5yZWZMaXN0W2l0ZW0ubmFtZV0gPSBpdGVtUmVmO1xyXG4gICAgICAgICAgaWYgKGl0ZW0udHlwZSAhPT0gXCJVcGxvYWRcIikge1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgIDxDb2xcclxuICAgICAgICAgICAgICAgIHNwYW49e2l0ZW0uc3BhbiB8fCAxMn1cclxuICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICBzdHlsZT17eyBkaXNwbGF5OiBpdGVtLmhpZGUgPyBcIm5vbmVcIiA6IFwiYmxvY2tcIiB9fVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxGb3JtLkl0ZW1cclxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2l0ZW0ubGFiZWx9XHJcbiAgICAgICAgICAgICAgICAgIG5hbWU9e2l0ZW0ubmFtZX1cclxuICAgICAgICAgICAgICAgICAgcnVsZXM9e2l0ZW0ucnVsZXN9XHJcbiAgICAgICAgICAgICAgICAgIGFsbG93Q2hhcnM9e2FsbG93Q2hhcnN9XHJcbiAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE5hbWU9e2l0ZW0udHlwZSA/IGl0ZW0udHlwZSA6IFwiSW5wdXRcIn1cclxuICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ9e2l0ZW0ucmVxdWlyZWR9XHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9e2l0ZW0ucHJvcHM/LnR5cGV9XHJcbiAgICAgICAgICAgICAgICAgIG5vU3R5bGU9e2l0ZW0ubm9TdHlsZSB8fCBmYWxzZX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAge2l0ZW0uZm9ybVJlbmRlclxyXG4gICAgICAgICAgICAgICAgICAgID8gaXRlbS5mb3JtUmVuZGVyKHByb3BzKVxyXG4gICAgICAgICAgICAgICAgICAgIDogZ2V0Tm9kZShpdGVtLnR5cGUsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiBpdGVtUmVmLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgICAgPC9Gb3JtLkl0ZW0+XHJcbiAgICAgICAgICAgICAgPC9Db2w+XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmZpbGVGb3JtYXQucHVzaChpdGVtLm5hbWUpO1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgIDxDb2xcclxuICAgICAgICAgICAgICAgIHNwYW49e2l0ZW0uc3BhbiB8fCAxMn1cclxuICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICBzdHlsZT17eyBkaXNwbGF5OiBpdGVtLmhpZGUgPyBcIm5vbmVcIiA6IFwiYmxvY2tcIiB9fVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxGb3JtLkl0ZW1cclxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2l0ZW0ubGFiZWx9XHJcbiAgICAgICAgICAgICAgICAgIG5hbWU9e2l0ZW0ubmFtZX1cclxuICAgICAgICAgICAgICAgICAgcnVsZXM9e2l0ZW0ucnVsZXN9XHJcbiAgICAgICAgICAgICAgICAgIGFsbG93Q2hhcnM9e2FsbG93Q2hhcnN9XHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9e2l0ZW0ucHJvcHM/LnR5cGV9XHJcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkPXtpdGVtLnJlcXVpcmVkfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8VXBsb2FkXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsZUxpc3Q9e3RoaXMuc3RhdGUuZmlsZUxpc3RbaXRlbS5uYW1lXSB8fCBbXX1cclxuICAgICAgICAgICAgICAgICAgICBvbkxpc3RDaGFuZ2U9eyhsaXN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVMaXN0OiB7IC4uLmZpbGVMaXN0LCBbaXRlbS5uYW1lXTogbGlzdCB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICBzaG93VXBsb2FkTGlzdD17e1xyXG4gICAgICAgICAgICAgICAgICAgICAgc2hvd0Rvd25sb2FkSWNvbjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgIHNob3dSZW1vdmVJY29uOiBsYWJlbCAhPT0gXCLmn6XnnItcIixcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgIHJlZj17aXRlbVJlZn1cclxuICAgICAgICAgICAgICAgICAgICB7Li4ucHJvcHN9XHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICB7aXRlbS5wcm9wcz8uY2hpbGRyZW5cclxuICAgICAgICAgICAgICAgICAgICAgID8gaXRlbS5wcm9wcz8uY2hpbGRyZW5cclxuICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWwgIT09IFwi5p+l55yLXCIgJiYgPEJ1dHRvbj7kuIrkvKDmlofku7Y8L0J1dHRvbj59XHJcbiAgICAgICAgICAgICAgICAgIDwvVXBsb2FkPlxyXG4gICAgICAgICAgICAgICAgPC9Gb3JtLkl0ZW0+XHJcbiAgICAgICAgICAgICAgPC9Db2w+XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSl9XHJcbiAgICAgIDwvUm93PlxyXG4gICAgKTtcclxuICB9XHJcbiAgcmVuZGVyKCkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBmb3JtcyA9IFtdLFxyXG4gICAgICBwcm9wcyA9IHt9LFxyXG4gICAgICBmb290ZXIgPSB0cnVlLFxyXG4gICAgICBjaGlsZHJlbixcclxuICAgICAgZm9ybVR5cGUgPSBcInBhZ2VcIixcclxuICAgICAgdGl0bGUgPSBcIlwiLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGxvYWRpbmcsIGxhYmVsIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IHNlbGZCdXR0b25zID0gW10gYXMgYW55O1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgdHlwZW9mIGl0ZW0gPT0gXCJvYmplY3RcIiAmJiBzZWxmQnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgdHlwZW9mIGNoaWxkcmVuID09IFwib2JqZWN0XCIgJiYgc2VsZkJ1dHRvbnMucHVzaChjaGlsZHJlbik7XHJcbiAgICB9XHJcbiAgICBsZXQgbW9kYWxQcm9wcyA9IHtcclxuICAgICAgdGl0bGU6IGxhYmVsICsgdGl0bGUsXHJcbiAgICAgIG9uT2s6IHRoaXMub25TdWJtaXQuYmluZCh0aGlzKSxcclxuICAgICAgb25DYW5jZWw6IHRoaXMuaGlkZS5iaW5kKHRoaXMpLFxyXG4gICAgICBva0J1dHRvblByb3BzOiB7IGxvYWRpbmc6IGxvYWRpbmcgfSxcclxuICAgICAgY2VudGVyZWQ6IHRydWUsXHJcbiAgICAgIHdpZHRoOiBcIjUwdndcIixcclxuICAgICAgZm9vdGVyQnV0dG9uOiBzZWxmQnV0dG9ucyxcclxuICAgIH0gYXMgYW55O1xyXG5cclxuICAgIGxldCBkcmF3ZXJQcm9wcyA9IHtcclxuICAgICAgdGl0bGU6IGxhYmVsLFxyXG4gICAgICBvbk9rOiB0aGlzLm9uU3VibWl0LmJpbmQodGhpcyksXHJcbiAgICAgIG9uQ2xvc2U6IHRoaXMuaGlkZS5iaW5kKHRoaXMpLFxyXG4gICAgICB3aWR0aDogXCI1MHZ3XCIsXHJcbiAgICAgIGZvb3RlckJ1dHRvbjogc2VsZkJ1dHRvbnMsXHJcbiAgICB9IGFzIGFueTtcclxuICAgIGlmIChsYWJlbCA9PSBcIuafpeeci1wiKSB7XHJcbiAgICAgIG1vZGFsUHJvcHMuZm9vdGVyID0gbnVsbDtcclxuICAgICAgZHJhd2VyUHJvcHMuZm9vdGVyID0gbnVsbDtcclxuICAgIH1cclxuICAgIHRoaXMuZGF0ZVZhbHVlRm9ybWF0ID0ge307XHJcbiAgICB0aGlzLmRhdGVGb3JtYXQgPSB7fTtcclxuICAgIHRoaXMuZmlsZUZvcm1hdCA9IFtdO1xyXG4gICAgbGV0IG5ld0Zvcm1zT2JqID0ge30gYXMgYW55O1xyXG4gICAgbGV0IGZvcm1Hcm91cHMgPSBbXSBhcyBhbnk7XHJcbiAgICBsZXQgb3RoZXJHcnVwcyA9IFtdIGFzIGFueTtcclxuICAgIC8v5aSE55CG6KGo5Y2V5pWw5o2uXHJcbiAgICBmb3Jtcy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBpZiAoaXRlbS5ncm91cE5hbWUgJiYgZm9ybUdyb3Vwcy5pbmRleE9mKGl0ZW0uZ3JvdXBOYW1lKSA8IDApIHtcclxuICAgICAgICBmb3JtR3JvdXBzLnB1c2goaXRlbS5ncm91cE5hbWUpO1xyXG4gICAgICB9IGVsc2UgaWYgKCFpdGVtLmdyb3VwTmFtZSkge1xyXG4gICAgICAgIG90aGVyR3J1cHMucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAoZm9ybUdyb3Vwcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvcm1Hcm91cHMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBsZXQgZ3JvdXBGb3JtcyA9IFtdIGFzIGFueTtcclxuICAgICAgICBmb3Jtcy5tYXAoKGZvcm06IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZvcm0uZ3JvdXBOYW1lID09IGl0ZW0pIHtcclxuICAgICAgICAgICAgZ3JvdXBGb3Jtcy5wdXNoKGZvcm0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIG5ld0Zvcm1zT2JqW2l0ZW1dID0gZ3JvdXBGb3JtcztcclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChvdGhlckdydXBzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBuZXdGb3Jtc09ialtcIm5vR3JvdXBOYW1lXCJdID0gb3RoZXJHcnVwcztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy/oh6rlrprkuYnmjInpkq5cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxGb3JtXHJcbiAgICAgICAgcmVmPXt0aGlzLmZvcm1SZWZ9XHJcbiAgICAgICAgc2hvd01vZGVsPXt0aGlzLnByb3BzLmZvcm1UeXBlID09IFwicGFnZVwiID8gbnVsbCA6IHRoaXMucHJvcHMuZm9ybVR5cGV9XHJcbiAgICAgICAgbW9kYWxQcm9wcz17eyAuLi5tb2RhbFByb3BzIH19XHJcbiAgICAgICAgZHJhd2VyUHJvcHM9e3sgLi4uZHJhd2VyUHJvcHMgfX1cclxuICAgICAgICAvLyBsYWJlbENvbD17eyBmbGV4OiBcIjEwMHB4XCIgfX1cclxuICAgICAgICAvLyB3cmFwcGVyQ29sPXt7IGZsZXg6IFwiMTV2d1wiIH19XHJcbiAgICAgICAgb25WYWx1ZXNDaGFuZ2U9eyhjaGFuZ2VkVmFsdWVzLCBhbGxWYWx1ZXMpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHsgb25Gb3JtQ2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgICAgb25Gb3JtQ2hhbmdlICYmIG9uRm9ybUNoYW5nZShjaGFuZ2VkVmFsdWVzLCBhbGxWYWx1ZXMpO1xyXG4gICAgICAgIH19XHJcbiAgICAgICAgY2hhbmdlVmFsaWQ9e3RoaXMucHJvcHMuY2hhbmdlVmFsaWR9XHJcbiAgICAgICAgey4uLnByb3BzfVxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJuc2MtZm9ybS1wYWdlXCI+XHJcbiAgICAgICAgICB7Zm9ybUdyb3Vwcy5sZW5ndGggPT0gMCA/IChcclxuICAgICAgICAgICAgdGhpcy5wcm9wcy5mb3JtVHlwZSAhPT0gXCJwYWdlXCIgPyAoXHJcbiAgICAgICAgICAgICAgdGhpcy5yZW5kZXJGb3JtKGZvcm1zLCBsYWJlbClcclxuICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5zYy1mb3JtLXBhbmVcIj5cclxuICAgICAgICAgICAgICAgIHt0aGlzLnJlbmRlckZvcm0oZm9ybXMsIGxhYmVsKX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgT2JqZWN0LmtleXMobmV3Rm9ybXNPYmopLm1hcCgoa2V5KSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIDxkaXYga2V5PXtrZXl9IGNsYXNzTmFtZT1cIm5zYy1mb3JtLXBhbmVcIj5cclxuICAgICAgICAgICAgICAgICAge2tleSAhPSBcIm5vR3JvdXBOYW1lXCIgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibnNjLWZvcm0tdGl0bGVcIj57a2V5fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5zYy1mb3JtLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICB7dGhpcy5yZW5kZXJGb3JtKG5ld0Zvcm1zT2JqW2tleV0sIGxhYmVsKX1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKX1cclxuICAgICAgICAgIHtmb3JtVHlwZSA9PT0gXCJwYWdlXCIgJiYgZm9vdGVyID09IHRydWUgJiYgKFxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoXHJcbiAgICAgICAgICAgICAgICBcIm5zYy1mb3JtLXBhZ2UtZm9vdGVyXCIsXHJcbiAgICAgICAgICAgICAgICBbdGhpcy5zdGF0ZS53aWR0aCA/IFwibnNjLWZvcm0tcGFnZS1mb290ZXItd2lkdGhcIiA6IFwiXCJdLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5mb290ZXJDbGFzc05hbWVcclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgey4uLnRoaXMucHJvcHMuY2FuY2VsQnV0dG9uUHJvcHN9XHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uQ2FuY2VsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbmNlbCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIOWPlua2iFxyXG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICAgIHR5cGU9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgIHsuLi50aGlzLnByb3BzLm9rQnV0dG9uUHJvcHN9XHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMub25TdWJtaXQoKTtcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nPXt0aGlzLnN0YXRlLmxvYWRpbmd9XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e1wibnNjLWZvcm0tcGFnZS1mb290ZXItYnRuXCJ9XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAg5L+d5a2YXHJcbiAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAge3NlbGZCdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17XCJuc2MtZm9ybS1wYWdlLWZvb3Rlci1idG5cIn0ga2V5PXtpbmRleH0+XHJcbiAgICAgICAgICAgICAgICAgICAge2l0ZW19XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgICAge2Zvcm1UeXBlID09PSBcInBhZ2VcIiAmJiBmb290ZXIgIT09IHRydWUgJiYgdGhpcy5wcm9wcy5mb290ZXJ9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvRm9ybT5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBGb3JtUGFnZTtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFLLElBQUlDLGFBQWEsUUFBbUIsT0FBTztBQUN2RCxPQUFPQyxJQUFJLE1BQU0saUJBQWlCO0FBQ2xDLFNBQWtCQyxPQUFPLFFBQVEsYUFBYTtBQUM5QyxPQUFPQyxPQUFPLE1BQU0sb0JBQW9CO0FBQ3hDLE9BQU9DLEdBQUcsTUFBTSxxQkFBcUI7QUFDckMsT0FBT0MsR0FBRyxNQUFNLHFCQUFxQjtBQUNyQyxTQUFTQyxVQUFVLEVBQUVDLGFBQWEsUUFBUSxtQkFBbUI7QUFDN0QsT0FBT0MsS0FBSyxNQUFNLE9BQU87QUFDekIsT0FBTyxxQkFBcUI7QUFDNUIsT0FBT0MsTUFBTSxNQUFNLFFBQVE7QUFDM0IsT0FBT0MsTUFBTSxNQUFNLG1CQUFtQjtBQUN0QyxPQUFPQyxNQUFNLE1BQU0sbUJBQW1CO0FBQ3RDLE9BQU9DLEdBQUcsTUFBTSxZQUFZO0FB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
654
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJGb3JtIiwiZ2V0Tm9kZSIsIm1lc3NhZ2UiLCJDb2wiLCJSb3ciLCJpc0VtcHR5T2JqIiwiZ2V0TG9jYWxTdG9yZSIsImRheWpzIiwibG9kYXNoIiwiQnV0dG9uIiwiVXBsb2FkIiwiY2xzIiwiTnNjUmVxdWVzdCIsIkZvcm1QYWdlIiwiY29uc3RydWN0b3IiLCJhcmd1bWVudHMiLCJfZGVmaW5lUHJvcGVydHkiLCJjcmVhdGVSZWYiLCJsb2FkaW5nIiwibGFiZWwiLCJwcm9wcyIsImVkaXRUeXBlIiwiZWRpdG9yRmxhZyIsInZhbHVlIiwiZGljdE5hbWVzIiwiZmlsZUxpc3QiLCJ3aWR0aCIsImVkaXRJZCIsImV2IiwiZGF0YSIsIkpTT04iLCJwYXJzZSIsIl90aGlzIiwiZXZlbnRUeXBlIiwicGF5bG9hZCIsImNsb3NlIiwic2V0U3RhdGUiLCJjb21wb25lbnREaWRNb3VudCIsIndpbmRvdyIsImFkZEV2ZW50TGlzdGVuZXIiLCJsaXN0ZW5NZXNzYWdlIiwiZm9ybVR5cGUiLCJyZXF1ZXN0T2JqZWN0IiwiZGV0YWlsVXJsIiwiZ2V0IiwicGFyYW1zIiwiaWQiLCJzdGF0ZSIsInhzc0ZpbHRlciIsInRoZW4iLCJyZXMiLCJjb2RlIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50IiwiZm9ybVJlZiIsImN1cnJlbnQiLCJzZXRGaWVsZHNWYWx1ZSIsIl9vYmplY3RTcHJlYWQiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQyIiwiZGVmYXVsdFZhbHUiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJzaG93Iiwib3JnVmFsdWUiLCJlZGl0b3JmbGFnIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiY2FsbEJhY2siLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQzIiwiY29udmVydFZhbHVlIiwic2hvd0Zvcm0iLCJhZnRlclJlbmRlciIsIl90aGlzJGZvcm1SZWYkY3VycmVudDQiLCJkZWZhdWx0VmFsdWUiLCJoaWRlIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50NSIsIm9uSGlkZUZvcm0iLCJoaWRlRm9ybSIsIl90aGlzJGZvcm1SZWYkY3VycmVudDYiLCJzZXRMb2FkaW5nIiwic2V0RWRpdFR5cGUiLCJ0eXBlIiwic2V0RWRpdElkIiwiZ2V0Rm9ybVZhbHVlIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50NyIsImZvcm1WYWx1ZSIsImdldEZpZWxkc1ZhbHVlIiwiZmlsZUZvcm1hdCIsIm5ld0ZpbGVMaXN0IiwibWFwIiwiaXRlbSIsImdldEZpbGVMaXN0Iiwic3VibWl0RmxhZyIsImVycm9yIiwiZGF0ZVZhbHVlRm9ybWF0Iiwia2V5Iiwib2xkZGF0YSIsIkFycmF5IiwiaXNBcnJheSIsImZvcm1hdCIsInJhbmdlckRhdGUiLCJkYXRlRm9ybWF0IiwiZSIsInZhbHVlcyIsImNsb25lRGVlcCIsInZhbHVlMSIsInZhbHVlMiIsInNldEZvcm1WYWx1ZSIsIl90aGlzJGZvcm1SZWYkY3VycmVudDgiLCJuZXdWYWx1ZSIsImRvU3VibWl0IiwiZm9ybWRhdGEiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ5Iiwic3VibWl0VXJsIiwic3VibWl0UGFyYW1zIiwicmVxdWVzdENvbmZpZyIsImFkZFVybCIsImVkaXRvclVybCIsImFkZFBhcmFtcyIsImVkaXRvclBhcmFtcyIsInVybCIsIlV0aWxzIiwiZnVuYyIsIkZ1bmN0aW9uIiwiY29udmVyUGFyYW1zIiwiY29uc29sZSIsIm90aGVyUGFyYW1zIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwib25TdWJtaXQiLCJub1VuZGVmaW5lZCIsInN1Y2Nlc3MiLCJzZXRUaW1lb3V0Iiwib2JqIiwiZmlsZUlkIiwiZmlsZU5hbWUiLCJzdGF0dXMiLCJwdXNoIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50MTAiLCJ2YWxpZCIsInZhbGlkYXRlRmllbGRzIiwiY2F0Y2giLCJlcnJvckluZm8iLCJ2YWx1ZUNoYW5nZSIsIl9yZWYiLCJ2YWx1ZU9wdGlvbiIsImRpY3ROYW1lIiwibmV3TmFtZXMiLCJvbkNoYW5nZSIsImV2ZW50T3B0aW9uIiwiZnVuY3MiLCJyZWZzIiwicmVmTGlzdCIsInZhbHVlU3RyIiwic2VsZkZ1bmMiLCJyZW5kZXJGb3JtIiwiZm9ybXMiLCJuZXdWYWxpZCIsImNyZWF0ZUVsZW1lbnQiLCJndXR0ZXIiLCJpbmRleCIsIl9pdGVtJHByb3BzIiwiaXRlbVByb3BzIiwidmFsdWVGb3JtYXQiLCJuYW1lIiwic3BsaXQiLCJhbGxvd0NoYXJzIiwicGxhY2Vob2xkZXIiLCJjb25jYXQiLCJiaW5kIiwiZGF0YVR5cGUiLCJkaXNhYmxlZCIsInJ1bGVzIiwicmVxdWlyZWQiLCJpdGVtUmVmIiwiX2l0ZW0kcHJvcHMyIiwic3BhbiIsInN0eWxlIiwiZGlzcGxheSIsIkl0ZW0iLCJjb21wb25lbnROYW1lIiwibm9TdHlsZSIsImZvcm1SZW5kZXIiLCJyZWYiLCJfaXRlbSRwcm9wczMiLCJfaXRlbSRwcm9wczQiLCJfaXRlbSRwcm9wczUiLCJfZXh0ZW5kcyIsIm9uTGlzdENoYW5nZSIsImxpc3QiLCJzaG93VXBsb2FkTGlzdCIsInNob3dEb3dubG9hZEljb24iLCJzaG93UmVtb3ZlSWNvbiIsImNoaWxkcmVuIiwicmVuZGVyIiwiZm9vdGVyIiwidGl0bGUiLCJzZWxmQnV0dG9ucyIsIm1vZGFsUHJvcHMiLCJvbk9rIiwib25DYW5jZWwiLCJva0J1dHRvblByb3BzIiwiY2VudGVyZWQiLCJmb290ZXJCdXR0b24iLCJkcmF3ZXJQcm9wcyIsIm9uQ2xvc2UiLCJuZXdGb3Jtc09iaiIsImZvcm1Hcm91cHMiLCJvdGhlckdydXBzIiwiZGVmYWx1dFZhbHVlIiwiZ3JvdXBOYW1lIiwiaW5kZXhPZiIsImdyb3VwRm9ybXMiLCJmb3JtIiwic2hvd01vZGVsIiwib25WYWx1ZXNDaGFuZ2UiLCJjaGFuZ2VkVmFsdWVzIiwiYWxsVmFsdWVzIiwib25Gb3JtQ2hhbmdlIiwiY2hhbmdlVmFsaWQiLCJjbGFzc05hbWUiLCJPYmplY3QiLCJrZXlzIiwiZm9vdGVyQ2xhc3NOYW1lIiwiY2FuY2VsQnV0dG9uUHJvcHMiLCJvbkNsaWNrIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcGFnZS9Gb3JtUGFnZS9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgRm9ybSBmcm9tIFwiLi4vLi4vYmFzZS9mb3JtXCI7XHJcbmltcG9ydCB7IGdldExlc3MsIGdldE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uLy4uL2Jhc2UvbWVzc2FnZVwiO1xyXG5pbXBvcnQgQ29sIGZyb20gXCIuLi8uLi9iYXNlL2dyaWQvQ29sXCI7XHJcbmltcG9ydCBSb3cgZnJvbSBcIi4uLy4uL2Jhc2UvZ3JpZC9Sb3dcIjtcclxuaW1wb3J0IHsgaXNFbXB0eU9iaiwgZ2V0TG9jYWxTdG9yZSB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgZGF5anMgZnJvbSBcImRheWpzXCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubW9kdWxlLmxlc3NcIjtcclxuaW1wb3J0IGxvZGFzaCBmcm9tIFwibG9kYXNoXCI7XHJcbmltcG9ydCBCdXR0b24gZnJvbSBcIi4uLy4uL2Jhc2UvYnV0dG9uXCI7XHJcbmltcG9ydCBVcGxvYWQgZnJvbSBcIi4uLy4uL2Jhc2UvdXBsb2FkXCI7XHJcbmltcG9ydCBjbHMgZnJvbSBcImNsYXNzbmFtZXNcIjtcclxuaW1wb3J0IHsgSUZvcm1Qcm9wcyB9IGZyb20gXCJzcmMvY29tcG9uZW50cy9iYXNlL2Zvcm0vRm9ybVwiO1xyXG5pbXBvcnQgTnNjUmVxdWVzdCBmcm9tIFwibnNjLXJlcXVlc3RcIjtcclxuZXhwb3J0IGludGVyZmFjZSBGb3JtUGFnZVByb3BzIHtcclxuICBmb3Jtcz86IEFycmF5PGFueT47IC8v5piv5ZCm5pi+56S65pON5L2c5YiXXHJcbiAgc3VibWl0VXJsPzogc3RyaW5nO1xyXG4gIG9uU3VibWl0PzogKHZhbHVlPzogYW55LCBsYWJlbD86IGFueSkgPT4gdm9pZDtcclxuICBmb290ZXJDbGFzc05hbWU/OiBhbnk7XHJcbiAgb2tCdXR0b25Qcm9wcz86IGFueTtcclxuICBjYW5jZWxCdXR0b25Qcm9wcz86IGFueTtcclxuICBmb290ZXI/OiBSZWFjdE5vZGUgfCBib29sZWFuO1xyXG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xyXG4gIG9uRm9ybUNoYW5nZT86ICh2YWx1ZT86IGFueSwgYWxsVmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgc3VibWl0UGFyYW1zPzogYW55OyAvL+a3u+WKoOWPguaVsO+8jOm7mOiupG1vdGhvZDpwb3N077yMIOWPguaVsOmAmui/h2RhdGHkvKDpgJJcclxuICBmdW5jcz86IGFueTtcclxuICBwcm9wcz86IElGb3JtUHJvcHM7XHJcbiAgcmVxdWVzdE9iamVjdD86IHtcclxuICAgIGFkZFVybD86IHN0cmluZztcclxuICAgIGVkaXRvclVybD86IHN0cmluZztcclxuICAgIGFkZFBhcmFtcz86IGFueTtcclxuICAgIGVkaXRvclBhcmFtcz86IGFueTtcclxuICAgIGRldGFpbFVybD86IHN0cmluZztcclxuICB9O1xyXG4gIHJlcXVlc3RDb25maWc/OiBhbnk7XHJcbiAgZm9vdGVyV2lkdGg/OiBib29sZWFuO1xyXG4gIGVkaXRUeXBlPzogXCLmlrDlop5cIiB8IFwi57yW6L6RXCIgfCBcIuafpeeci1wiO1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIGVkaXRJZD86IHN0cmluZztcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuY2xhc3MgRm9ybVBhZ2UgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PEZvcm1QYWdlUHJvcHMsIGFueT4ge1xyXG4gIGZvcm1SZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHN0YXRlID0ge1xyXG4gICAgbG9hZGluZzogZmFsc2UsXHJcbiAgICBsYWJlbDogdGhpcy5wcm9wcy5lZGl0VHlwZSB8fCBcIlwiLFxyXG4gICAgZWRpdG9yRmxhZzogdHJ1ZSxcclxuICAgIHZhbHVlOiB7fSBhcyBhbnksXHJcbiAgICBkaWN0TmFtZXM6IHt9IGFzIGFueSxcclxuICAgIGZpbGVMaXN0OiB7fSBhcyBhbnksXHJcbiAgICB3aWR0aDogZ2V0TG9jYWxTdG9yZShcIm5zYy1ob21lLW1lbnVDb2xsc2FwZVwiKSB8fCBmYWxzZSxcclxuICAgIGVkaXRJZDogdGhpcy5wcm9wcy5lZGl0SWQgfHwgXCJcIixcclxuICB9O1xyXG4gIHZhbGlkOiBhbnkgPSBbXTtcclxuICBkYXRlVmFsdWVGb3JtYXQgPSB7fSBhcyBhbnk7XHJcbiAgZGF0ZUZvcm1hdCA9IHt9IGFzIGFueTtcclxuICBmaWxlRm9ybWF0ID0gW10gYXMgYW55O1xyXG4gIHJhbmdlckRhdGUgPSB7fSBhcyBhbnk7XHJcbiAgcmVmTGlzdCA9IHt9IGFzIGFueTtcclxuICBzdWJtaXRGbGFnID0gdHJ1ZTtcclxuICBjb21wb25lbnREaWRNb3VudCgpOiB2b2lkIHtcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCB0aGlzLmxpc3Rlbk1lc3NhZ2UpO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBmb3JtVHlwZSA9IFwicGFnZVwiLFxyXG4gICAgICByZXF1ZXN0T2JqZWN0ID0ge30sXHJcbiAgICAgIGVkaXRUeXBlID0gXCLmlrDlop5cIixcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKGZvcm1UeXBlID09IFwicGFnZVwiKSB7XHJcbiAgICAgIGlmIChyZXF1ZXN0T2JqZWN0LmRldGFpbFVybCAmJiBlZGl0VHlwZSAhPT0gXCLmlrDlop5cIikge1xyXG4gICAgICAgIE5zY1JlcXVlc3QuZ2V0KHJlcXVlc3RPYmplY3QuZGV0YWlsVXJsLCB7XHJcbiAgICAgICAgICBwYXJhbXM6IHsgaWQ6IHRoaXMuc3RhdGUuZWRpdElkIH0sXHJcbiAgICAgICAgICB4c3NGaWx0ZXI6IGZhbHNlLFxyXG4gICAgICAgIH0pLnRoZW4oKHJlcykgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2V0RmllbGRzVmFsdWUoeyAuLi5yZXMuZGF0YSB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIGlmIChlZGl0VHlwZSA9PSBcIuaWsOWinlwiKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnNldEZpZWxkc1ZhbHVlKHRoaXMucHJvcHMuZGVmYXVsdFZhbHUgfHwge30pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xyXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIHRoaXMubGlzdGVuTWVzc2FnZSk7XHJcbiAgfVxyXG4gIGxpc3Rlbk1lc3NhZ2UgPSAoZXYpID0+IHtcclxuICAgIGNvbnN0IGRhdGEgPSB0eXBlb2YgZXYuZGF0YSA9PT0gXCJzdHJpbmdcIiA/IEpTT04ucGFyc2UoZXYuZGF0YSkgOiBldi5kYXRhO1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGlmIChkYXRhLmV2ZW50VHlwZSA9PSBcIm1lbnVDb2xsc2FwZVwiKSB7XHJcbiAgICAgIGNvbnN0IHsgcGF5bG9hZCB9ID0gZGF0YTtcclxuICAgICAgaWYgKHBheWxvYWQuY2xvc2UgPT09IHRydWUgfHwgcGF5bG9hZC5jbG9zZSA9PT0gZmFsc2UpIHtcclxuICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7IHdpZHRoOiBwYXlsb2FkLmNsb3NlIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfTtcclxuICAvL+ihqOWNleaYvuekulxyXG4gIHNob3cob3JnVmFsdWU/OiBhbnksIGVkaXRvcmZsYWcgPSBcImFkZFwiLCBjYWxsQmFjaz86IGFueSkge1xyXG4gICAgbGV0IGxhYmVsID0gXCLmlrDlop5cIjtcclxuICAgIGlmIChvcmdWYWx1ZSAmJiBlZGl0b3JmbGFnID09IFwiZWRpdG9yXCIpIHtcclxuICAgICAgbGFiZWwgPSBcIue8lui+kVwiO1xyXG4gICAgfSBlbHNlIGlmIChvcmdWYWx1ZSAmJiAoZWRpdG9yZmxhZyA9PSBcImRldGFpbFwiIHx8IGVkaXRvcmZsYWcgPT0gXCJzZWFyY2hcIikpIHtcclxuICAgICAgbGFiZWwgPSBcIuafpeeci1wiO1xyXG4gICAgfVxyXG4gICAgaWYgKG9yZ1ZhbHVlKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6IGxhYmVsLFxyXG4gICAgICAgICAgdmFsdWU6IG9yZ1ZhbHVlLFxyXG4gICAgICAgICAgZWRpdElkOiBvcmdWYWx1ZS5pZCxcclxuICAgICAgICB9LFxyXG4gICAgICAgICgpID0+IHtcclxuICAgICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuY29udmVydFZhbHVlKG9yZ1ZhbHVlLCBsYWJlbCk7XHJcbiAgICAgICAgICAvL+WkhOeQhuaWh+S7tuaVsOaNrlxyXG4gICAgICAgICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnNob3dGb3JtKHZhbHVlLCB7XHJcbiAgICAgICAgICAgIGFmdGVyUmVuZGVyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgY2FsbEJhY2sgJiYgY2FsbEJhY2soKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6IGxhYmVsLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnNob3dGb3JtKHRoaXMucHJvcHMuZGVmYXVsdFZhbHVlLCB7XHJcbiAgICAgICAgICAgIGFmdGVyUmVuZGVyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgY2FsbEJhY2sgJiYgY2FsbEJhY2soKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbiAgaGlkZShoaWRlID0gdHJ1ZSkge1xyXG4gICAgY29uc3QgeyBvbkhpZGVGb3JtIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKG9uSGlkZUZvcm0pIHtcclxuICAgICAgb25IaWRlRm9ybSAmJiBvbkhpZGVGb3JtKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSwgZmlsZUxpc3Q6IHt9IH0pO1xyXG4gICAgaGlkZSAmJiB0aGlzLmZvcm1SZWYuY3VycmVudD8uaGlkZUZvcm0oKTtcclxuICB9XHJcbiAgaGlkZUZvcm0oKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogZmFsc2UsIGZpbGVMaXN0OiB7fSB9KTtcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5oaWRlRm9ybSgpO1xyXG4gIH1cclxuICBzaG93Rm9ybShvcmdWYWx1ZT86IGFueSwgZWRpdG9yZmxhZyA9IFwiYWRkXCIsIGNhbGxCYWNrPzogYW55KSB7XHJcbiAgICB0aGlzLnNob3cob3JnVmFsdWUsIGVkaXRvcmZsYWcsIGNhbGxCYWNrKTtcclxuICB9XHJcbiAgc2V0TG9hZGluZyhsb2FkaW5nOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogbG9hZGluZyB9KTtcclxuICB9XHJcbiAgc2V0RWRpdFR5cGUodHlwZSkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGxhYmVsOiB0eXBlLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHNldEVkaXRJZChpZCkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGVkaXRJZDogaWQsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgZ2V0Rm9ybVZhbHVlKCkge1xyXG4gICAgY29uc3QgeyBsYWJlbCwgdmFsdWUsIGRpY3ROYW1lcywgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLmZvcm1SZWYuY3VycmVudD8uZ2V0RmllbGRzVmFsdWUoKTtcclxuICAgIGxldCBkYXRhID0geyAuLi5mb3JtVmFsdWUsIC4uLmRpY3ROYW1lcyB9O1xyXG4gICAgaWYgKHRoaXMuZmlsZUZvcm1hdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBuZXdGaWxlTGlzdCA9IHt9IGFzIGFueTtcclxuICAgICAgdGhpcy5maWxlRm9ybWF0Lm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIGlmIChmaWxlTGlzdFtpdGVtXS5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgbmV3RmlsZUxpc3RbaXRlbV0gPSBudWxsO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoIWZvcm1WYWx1ZVtpdGVtXSkge1xyXG4gICAgICAgICAgICBuZXdGaWxlTGlzdFtpdGVtXSA9IHRoaXMuZ2V0RmlsZUxpc3QoZmlsZUxpc3RbaXRlbV0gfHwgW10pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGRhdGEgPSB7IC4uLmRhdGEsIC4uLm5ld0ZpbGVMaXN0IH07XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuc3VibWl0RmxhZykge1xyXG4gICAgICBtZXNzYWdlLmVycm9yKFwi6K+3562J5b6F5omA5pyJ5paH5Lu25LiK5Lyg5a6M5oiQ77yBXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoIWlzRW1wdHlPYmoodGhpcy5kYXRlVmFsdWVGb3JtYXQpKSB7XHJcbiAgICAgIGZvciAobGV0IGtleSBpbiB0aGlzLmRhdGVWYWx1ZUZvcm1hdCkge1xyXG4gICAgICAgIGxldCBvbGRkYXRhID0gZGF0YVtrZXldO1xyXG4gICAgICAgIGlmIChvbGRkYXRhKSB7XHJcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvbGRkYXRhKSkge1xyXG4gICAgICAgICAgICBkYXRhW2tleV0gPSBbXHJcbiAgICAgICAgICAgICAgZGF5anMob2xkZGF0YVswXSkuZm9ybWF0KHRoaXMuZGF0ZVZhbHVlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICAgIGRheWpzKG9sZGRhdGFbMV0pLmZvcm1hdCh0aGlzLmRhdGVWYWx1ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgaWYgKHRoaXMucmFuZ2VyRGF0ZVtrZXldKSB7XHJcbiAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGRhdGFbdGhpcy5yYW5nZXJEYXRlW2tleV1bMF1dID0gZGF5anMob2xkZGF0YVswXSkuZm9ybWF0KFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmRhdGVGb3JtYXRba2V5XVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGRhdGFbdGhpcy5yYW5nZXJEYXRlW2tleV1bMV1dID0gZGF5anMob2xkZGF0YVsxXSkuZm9ybWF0KFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmRhdGVGb3JtYXRba2V5XVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZSBkYXRhW2tleV07XHJcbiAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge31cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZGF0YVtrZXldID0gZGF5anMob2xkZGF0YSkuZm9ybWF0KHRoaXMuZGF0ZVZhbHVlRm9ybWF0W2tleV0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGxhYmVsID09IFwi57yW6L6RXCIpIHtcclxuICAgICAgZGF0YSA9IHsgLi4uZGF0YSwgaWQ6IHZhbHVlPy5pZCB8fCB0aGlzLnN0YXRlLmVkaXRJZCB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfVxyXG4gIGNvbnZlcnRWYWx1ZSh2YWx1ZSwgdHlwZSkge1xyXG4gICAgbGV0IHZhbHVlcyA9IGxvZGFzaC5jbG9uZURlZXAodmFsdWUpO1xyXG4gICAgaWYgKHRoaXMuZmlsZUZvcm1hdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBmaWxlTGlzdCA9IHt9IGFzIGFueTtcclxuICAgICAgdGhpcy5maWxlRm9ybWF0Lm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIGxldCBvbGRkYXRhID0gdmFsdWVzW2l0ZW1dO1xyXG4gICAgICAgIGlmIChvbGRkYXRhICYmIEFycmF5LmlzQXJyYXkob2xkZGF0YSkpIHtcclxuICAgICAgICAgIGZpbGVMaXN0W2l0ZW1dID0gdGhpcy5nZXRGaWxlTGlzdChvbGRkYXRhIHx8IFtdLCB0eXBlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZmlsZUxpc3RbaXRlbV0gPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHsgZmlsZUxpc3Q6IGZpbGVMaXN0IH0pO1xyXG4gICAgfVxyXG4gICAgLy/lpITnkIbml6XmnJ/moLzlvI/mlbDmja5cclxuICAgIGlmICghaXNFbXB0eU9iaih0aGlzLmRhdGVGb3JtYXQpKSB7XHJcbiAgICAgIGZvciAobGV0IGtleSBpbiB0aGlzLmRhdGVGb3JtYXQpIHtcclxuICAgICAgICBsZXQgb2xkZGF0YSA9IHZhbHVlc1trZXldO1xyXG4gICAgICAgIGlmIChvbGRkYXRhKSB7XHJcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvbGRkYXRhKSkge1xyXG4gICAgICAgICAgICB2YWx1ZXNba2V5XSA9IFtcclxuICAgICAgICAgICAgICBkYXlqcyhvbGRkYXRhWzBdLCB0aGlzLmRhdGVGb3JtYXRba2V5XSksXHJcbiAgICAgICAgICAgICAgZGF5anMob2xkZGF0YVsxXSwgdGhpcy5kYXRlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdmFsdWVzW2tleV0gPSBkYXlqcyhvbGRkYXRhLCB0aGlzLmRhdGVGb3JtYXRba2V5XSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmICh0aGlzLnJhbmdlckRhdGVba2V5XSkge1xyXG4gICAgICAgICAgICBsZXQgdmFsdWUxID0gdmFsdWVzW3RoaXMucmFuZ2VyRGF0ZVtrZXldWzBdXTtcclxuICAgICAgICAgICAgbGV0IHZhbHVlMiA9IHZhbHVlc1t0aGlzLnJhbmdlckRhdGVba2V5XVsxXV07XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZTEgJiYgdmFsdWUyKSB7XHJcbiAgICAgICAgICAgICAgdmFsdWVzW2tleV0gPSBbXHJcbiAgICAgICAgICAgICAgICBkYXlqcyh2YWx1ZTEsIHRoaXMuZGF0ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgICAgIGRheWpzKHZhbHVlMiwgdGhpcy5kYXRlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZXM7XHJcbiAgfVxyXG4gIHNldEZvcm1WYWx1ZSh2YWx1ZSwgdHlwZSkge1xyXG4gICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmNvbnZlcnRWYWx1ZSh2YWx1ZSwgdHlwZSk7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2V0RmllbGRzVmFsdWUobmV3VmFsdWUpO1xyXG4gIH1cclxuICBkb1N1Ym1pdChmb3JtZGF0YSwgbGFiZWwpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgc3VibWl0VXJsLFxyXG4gICAgICBzdWJtaXRQYXJhbXMgPSB7fSxcclxuICAgICAgY2FsbEJhY2ssXHJcbiAgICAgIHJlcXVlc3RPYmplY3QgPSB7fSxcclxuICAgICAgcmVxdWVzdENvbmZpZyA9IHt9LFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGFkZFVybCwgZWRpdG9yVXJsLCBhZGRQYXJhbXMsIGVkaXRvclBhcmFtcyB9ID0gcmVxdWVzdE9iamVjdDtcclxuICAgIGxldCB1cmwgPSBzdWJtaXRVcmw7XHJcbiAgICBsZXQgcGFyYW1zOiBhbnkgPSB7fTtcclxuICAgIGlmIChsYWJlbCA9PSBcIuaWsOWinlwiKSB7XHJcbiAgICAgIHVybCA9IGFkZFVybCA/IGFkZFVybCA6IHN1Ym1pdFVybDtcclxuICAgICAgaWYgKGFkZFBhcmFtcyAmJiB0eXBlb2YgYWRkUGFyYW1zID09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICBjb25zdCBVdGlscyA9IHRoaXMucHJvcHMuVXRpbHMgfHwge307XHJcbiAgICAgICAgbGV0IGZ1bmMgPSBuZXcgRnVuY3Rpb24oXCJVdGlsc1wiLCBhZGRQYXJhbXMpO1xyXG4gICAgICAgIGxldCBjb252ZXJQYXJhbXMgPSBmdW5jKFV0aWxzKTtcclxuICAgICAgICBwYXJhbXMgPSBjb252ZXJQYXJhbXM7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcGFyYW1zID0gYWRkUGFyYW1zID8gYWRkUGFyYW1zIDogc3VibWl0UGFyYW1zO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKGxhYmVsID09IFwi57yW6L6RXCIpIHtcclxuICAgICAgdXJsID0gZWRpdG9yVXJsID8gZWRpdG9yVXJsIDogc3VibWl0VXJsO1xyXG4gICAgICBpZiAoZWRpdG9yUGFyYW1zICYmIHR5cGVvZiBlZGl0b3JQYXJhbXMgPT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgIGNvbnN0IFV0aWxzID0gdGhpcy5wcm9wcy5VdGlscyB8fCB7fTtcclxuICAgICAgICBsZXQgZnVuYyA9IG5ldyBGdW5jdGlvbihcIlV0aWxzXCIsIGVkaXRvclBhcmFtcyk7XHJcbiAgICAgICAgbGV0IGNvbnZlclBhcmFtcyA9IGZ1bmMoVXRpbHMpO1xyXG4gICAgICAgIHBhcmFtcyA9IGNvbnZlclBhcmFtcztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBwYXJhbXMgPSBlZGl0b3JQYXJhbXMgPyBlZGl0b3JQYXJhbXMgOiBzdWJtaXRQYXJhbXM7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghdXJsKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCLphY3nva5VcmzkuI3og73kuLrnqbrvvIFcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgZGF0YSA9IHt9LCAuLi5vdGhlclBhcmFtcyB9ID0gcGFyYW1zO1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/Lm9uU3VibWl0KFxyXG4gICAgICB1cmwsXHJcbiAgICAgIHtcclxuICAgICAgICBkYXRhOiB7IC4uLmZvcm1kYXRhLCAuLi5kYXRhIH0sXHJcbiAgICAgICAgbm9VbmRlZmluZWQ6IGxhYmVsID09IFwi57yW6L6RXCIsXHJcbiAgICAgICAgLi4ucmVxdWVzdENvbmZpZyxcclxuICAgICAgICAuLi5vdGhlclBhcmFtcyxcclxuICAgICAgfSxcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBjb2RlIH0gPSByZXM7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlIH0pO1xyXG4gICAgICAgIGlmIChjb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIG1lc3NhZ2Uuc3VjY2VzcyhsYWJlbCArIFwi5oiQ5YqfXCIpO1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaGlkZSh0cnVlKTtcclxuICAgICAgICAgICAgY2FsbEJhY2sgJiYgY2FsbEJhY2soKTtcclxuICAgICAgICAgIH0sIDUwMCk7XHJcblxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmhpZGUoZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuICBnZXRGaWxlTGlzdChkYXRhLCBsYWJlbCA9IFwi5paw5aKeXCIpIHtcclxuICAgIHRoaXMuc3VibWl0RmxhZyA9IHRydWU7XHJcbiAgICBsZXQgZmlsZUxpc3QgPSBbXSBhcyBhbnk7XHJcbiAgICBpZiAoZGF0YSAmJiBkYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgZGF0YS5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICBsZXQgb2JqID0ge1xyXG4gICAgICAgICAgZmlsZUlkOiBpdGVtLmZpbGVJZCxcclxuICAgICAgICAgIGZpbGVOYW1lOiBpdGVtLmZpbGVOYW1lLFxyXG4gICAgICAgIH0gYXMgYW55O1xyXG4gICAgICAgIGlmIChsYWJlbCA9PSBcIuafpeeci1wiKSB7XHJcbiAgICAgICAgICBvYmouc3RhdHVzID0gXCJkb25lXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChsYWJlbCAhPT0gXCLmn6XnnItcIiAmJiBpdGVtLnN0YXR1cyAhPT0gXCJkb25lXCIpIHtcclxuICAgICAgICAgIHRoaXMuc3VibWl0RmxhZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaWxlTGlzdC5wdXNoKG9iaik7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZpbGVMaXN0O1xyXG4gIH1cclxuXHJcbiAgb25TdWJtaXQoKSB7XHJcbiAgICBjb25zdCB7IG9uU3VibWl0IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBsYWJlbCwgdmFsdWUsIGRpY3ROYW1lcywgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBsZXQgdmFsaWQgPSB0aGlzLnZhbGlkO1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnRcclxuICAgICAgPy52YWxpZGF0ZUZpZWxkcygpXHJcbiAgICAgIC50aGVuKCgpID0+IHtcclxuICAgICAgICBsZXQgZGF0YSA9IHRoaXMuZ2V0Rm9ybVZhbHVlKCk7XHJcbiAgICAgICAgLy8gaWYgKCF0aGlzLnN1Ym1pdEZsYWcpIHtcclxuICAgICAgICAvLyAgIG1lc3NhZ2UuZXJyb3IoJ+ivt+etieW+heaJgOacieaWh+S7tuS4iuS8oOWujOaIkO+8gScpXHJcbiAgICAgICAgLy8gICByZXR1cm47XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiB0cnVlIH0pO1xyXG4gICAgICAgIGlmIChvblN1Ym1pdCkge1xyXG4gICAgICAgICAgb25TdWJtaXQgJiYgb25TdWJtaXQoZGF0YSwgbGFiZWwpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRvU3VibWl0KGRhdGEsIGxhYmVsKTtcclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlcnJvckluZm86IGFueSkgPT4ge30pO1xyXG4gIH1cclxuICB2YWx1ZUNoYW5nZSh7IHR5cGUsIGRpY3ROYW1lIH0sIHByb3BzLCB2YWx1ZSwgdmFsdWVPcHRpb24sIGRhdGEpIHtcclxuICAgIGlmICh2YWx1ZU9wdGlvbikge1xyXG4gICAgICBpZiAoZGljdE5hbWUpIHtcclxuICAgICAgICBjb25zdCB7IGRpY3ROYW1lcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICBjb25zdCBuZXdOYW1lcyA9IHsgLi4uZGljdE5hbWVzIH0gYXMgYW55O1xyXG4gICAgICAgIG5ld05hbWVzW2RpY3ROYW1lXSA9IHZhbHVlT3B0aW9uLmxhYmVsO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgZGljdE5hbWVzOiBuZXdOYW1lcyxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHByb3BzLm9uQ2hhbmdlKSB7XHJcbiAgICAgIGlmICh0eXBlb2YgcHJvcHMub25DaGFuZ2UgPT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgcHJvcHMub25DaGFuZ2UodmFsdWUsIHZhbHVlT3B0aW9uLCBkYXRhKTtcclxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcHJvcHMub25DaGFuZ2UgPT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgIGNvbnN0IGV2ZW50T3B0aW9uID0ge1xyXG4gICAgICAgICAgdmFsdWUsXHJcbiAgICAgICAgICBkYXRhLFxyXG4gICAgICAgICAgZm9ybVJlZjogdGhpcy5mb3JtUmVmLFxyXG4gICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MgfHwge30sXHJcbiAgICAgICAgICByZWZzOiB0aGlzLnJlZkxpc3QsXHJcbiAgICAgICAgfSBhcyBhbnk7XHJcbiAgICAgICAgY29uc3QgVXRpbHMgPSB0aGlzLnByb3BzLlV0aWxzIHx8IHt9O1xyXG4gICAgICAgIGlmICh0eXBlID09IFwiU2VsZWN0XCIpIHtcclxuICAgICAgICAgIGV2ZW50T3B0aW9uLnZhbHVlT3B0aW9uID0gdmFsdWVPcHRpb247XHJcbiAgICAgICAgICBldmVudE9wdGlvbi5kYXRhID0gZGF0YTtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gXCJEYXRlUGlja2VyXCIgfHwgdHlwZSA9PSBcIlJhbmdlUGlja2VyXCIpIHtcclxuICAgICAgICAgIGV2ZW50T3B0aW9uLnZhbHVlU3RyID0gdmFsdWVPcHRpb247XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHNlbGZGdW5jID0gbmV3IEZ1bmN0aW9uKFwiZXZlbnRPcHRpb25cIiwgXCJVdGlsc1wiLCBwcm9wcy5vbkNoYW5nZSk7XHJcbiAgICAgICAgc2VsZkZ1bmMoZXZlbnRPcHRpb24sIFV0aWxzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVuZGVyRm9ybShmb3JtcywgbGFiZWwpIHtcclxuICAgIGNvbnN0IG5ld1ZhbGlkOiBhbnlbXSA9IFtdO1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgPFJvdyBndXR0ZXI9ezI0fT5cclxuICAgICAgICB7Zm9ybXMubWFwKChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGl0ZW1Qcm9wcyA9IGl0ZW0ucHJvcHMgfHwge307XHJcbiAgICAgICAgICBpZiAoaXRlbVByb3BzLmZvcm1hdCB8fCBpdGVtUHJvcHMudmFsdWVGb3JtYXQpIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRlVmFsdWVGb3JtYXRbaXRlbS5uYW1lXSA9XHJcbiAgICAgICAgICAgICAgaXRlbVByb3BzLmZvcm1hdCB8fCBpdGVtUHJvcHMudmFsdWVGb3JtYXQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoaXRlbVByb3BzLmZvcm1hdCkge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGVGb3JtYXRbaXRlbS5uYW1lXSA9IGl0ZW1Qcm9wcy5mb3JtYXQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoaXRlbS50eXBlID09IFwiUmFuZ2VQaWNrZXJcIiAmJiBpdGVtLm5hbWUuc3BsaXQoXCIsXCIpLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgdGhpcy5yYW5nZXJEYXRlW2l0ZW0ubmFtZV0gPSBpdGVtLm5hbWUuc3BsaXQoXCIsXCIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IGFsbG93Q2hhcnMgPSBpdGVtLnByb3BzPy5hbGxvd0NoYXJzIHx8IGZhbHNlO1xyXG4gICAgICAgICAgbGV0IHByb3BzID0ge1xyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogYOivt+i+k+WFpSR7aXRlbS5sYWJlbH1gLFxyXG4gICAgICAgICAgICAuLi5pdGVtLnByb3BzLFxyXG4gICAgICAgICAgICBvbkNoYW5nZTogdGhpcy52YWx1ZUNoYW5nZS5iaW5kKFxyXG4gICAgICAgICAgICAgIHRoaXMsXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdHlwZTogaXRlbS50eXBlLFxyXG4gICAgICAgICAgICAgICAgZGljdE5hbWU6IGl0ZW0uZGljdE5hbWUsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB7IC4uLml0ZW0ucHJvcHMgfVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIGlmICghaXRlbS50eXBlIHx8IGl0ZW0udHlwZSA9PSBcIklucHV0XCIpIHtcclxuICAgICAgICAgICAgcHJvcHMuYWxsb3dDaGFycyA9IHRydWU7IC8vZm9ybS5pdGVtIOS9v+eUqGlucHV057uE5Lu2YWxsb3dDaGFyc+W/hemhu+m7mOiupHRydWUs5LiN54S26L6T5YWl54m55q6K5a2X56ym5ou/5Yiw55qE5YC85LiN5a+5XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBkZWxldGUgcHJvcHMudmFsdWVGb3JtYXQ7XHJcbiAgICAgICAgICBkZWxldGUgcHJvcHMuZm9ybWF0O1xyXG4gICAgICAgICAgZGVsZXRlIHByb3BzLmRhdGFUeXBlO1xyXG4gICAgICAgICAgaWYgKGxhYmVsID09IFwi5p+l55yLXCIpIHtcclxuICAgICAgICAgICAgcHJvcHMuZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICBwcm9wcy5wbGFjZWhvbGRlciA9IFwiXCI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoKGl0ZW0ucnVsZXMgJiYgaXRlbS5ydWxlcy5sZW5ndGggPiAwKSB8fCBpdGVtLnJlcXVpcmVkID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIG5ld1ZhbGlkLnB1c2goaXRlbS5uYW1lKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChpbmRleCArIDEgPT09IGZvcm1zLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLnZhbGlkID0gbmV3VmFsaWQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBpdGVtUmVmOiBhbnkgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gICAgICAgICAgdGhpcy5yZWZMaXN0W2l0ZW0ubmFtZV0gPSBpdGVtUmVmO1xyXG4gICAgICAgICAgaWYgKGl0ZW0udHlwZSAhPT0gXCJVcGxvYWRcIikge1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgIDxDb2xcclxuICAgICAgICAgICAgICAgIHNwYW49e2l0ZW0uc3BhbiB8fCAxMn1cclxuICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICBzdHlsZT17eyBkaXNwbGF5OiBpdGVtLmhpZGUgPyBcIm5vbmVcIiA6IFwiYmxvY2tcIiB9fVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxGb3JtLkl0ZW1cclxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2l0ZW0ubGFiZWx9XHJcbiAgICAgICAgICAgICAgICAgIG5hbWU9e2l0ZW0ubmFtZX1cclxuICAgICAgICAgICAgICAgICAgcnVsZXM9e2l0ZW0ucnVsZXN9XHJcbiAgICAgICAgICAgICAgICAgIGFsbG93Q2hhcnM9e2FsbG93Q2hhcnN9XHJcbiAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE5hbWU9e2l0ZW0udHlwZSA/IGl0ZW0udHlwZSA6IFwiSW5wdXRcIn1cclxuICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ9e2l0ZW0ucmVxdWlyZWR9XHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9e2l0ZW0ucHJvcHM/LnR5cGV9XHJcbiAgICAgICAgICAgICAgICAgIG5vU3R5bGU9e2l0ZW0ubm9TdHlsZSB8fCBmYWxzZX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAge2l0ZW0uZm9ybVJlbmRlclxyXG4gICAgICAgICAgICAgICAgICAgID8gaXRlbS5mb3JtUmVuZGVyKHByb3BzKVxyXG4gICAgICAgICAgICAgICAgICAgIDogZ2V0Tm9kZShpdGVtLnR5cGUsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiBpdGVtUmVmLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgICAgPC9Gb3JtLkl0ZW0+XHJcbiAgICAgICAgICAgICAgPC9Db2w+XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmZpbGVGb3JtYXQucHVzaChpdGVtLm5hbWUpO1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgIDxDb2xcclxuICAgICAgICAgICAgICAgIHNwYW49e2l0ZW0uc3BhbiB8fCAxMn1cclxuICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICBzdHlsZT17eyBkaXNwbGF5OiBpdGVtLmhpZGUgPyBcIm5vbmVcIiA6IFwiYmxvY2tcIiB9fVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxGb3JtLkl0ZW1cclxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2l0ZW0ubGFiZWx9XHJcbiAgICAgICAgICAgICAgICAgIG5hbWU9e2l0ZW0ubmFtZX1cclxuICAgICAgICAgICAgICAgICAgcnVsZXM9e2l0ZW0ucnVsZXN9XHJcbiAgICAgICAgICAgICAgICAgIGFsbG93Q2hhcnM9e2FsbG93Q2hhcnN9XHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9e2l0ZW0ucHJvcHM/LnR5cGV9XHJcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkPXtpdGVtLnJlcXVpcmVkfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8VXBsb2FkXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsZUxpc3Q9e3RoaXMuc3RhdGUuZmlsZUxpc3RbaXRlbS5uYW1lXSB8fCBbXX1cclxuICAgICAgICAgICAgICAgICAgICBvbkxpc3RDaGFuZ2U9eyhsaXN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVMaXN0OiB7IC4uLmZpbGVMaXN0LCBbaXRlbS5uYW1lXTogbGlzdCB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICBzaG93VXBsb2FkTGlzdD17e1xyXG4gICAgICAgICAgICAgICAgICAgICAgc2hvd0Rvd25sb2FkSWNvbjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgIHNob3dSZW1vdmVJY29uOiBsYWJlbCAhPT0gXCLmn6XnnItcIixcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgIHJlZj17aXRlbVJlZn1cclxuICAgICAgICAgICAgICAgICAgICB7Li4ucHJvcHN9XHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICB7aXRlbS5wcm9wcz8uY2hpbGRyZW5cclxuICAgICAgICAgICAgICAgICAgICAgID8gaXRlbS5wcm9wcz8uY2hpbGRyZW5cclxuICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWwgIT09IFwi5p+l55yLXCIgJiYgPEJ1dHRvbj7kuIrkvKDmlofku7Y8L0J1dHRvbj59XHJcbiAgICAgICAgICAgICAgICAgIDwvVXBsb2FkPlxyXG4gICAgICAgICAgICAgICAgPC9Gb3JtLkl0ZW0+XHJcbiAgICAgICAgICAgICAgPC9Db2w+XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSl9XHJcbiAgICAgIDwvUm93PlxyXG4gICAgKTtcclxuICB9XHJcbiAgcmVuZGVyKCkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBmb3JtcyA9IFtdLFxyXG4gICAgICBwcm9wcyA9IHt9LFxyXG4gICAgICBmb290ZXIgPSB0cnVlLFxyXG4gICAgICBjaGlsZHJlbixcclxuICAgICAgZm9ybVR5cGUgPSBcInBhZ2VcIixcclxuICAgICAgdGl0bGUgPSBcIlwiLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGxvYWRpbmcsIGxhYmVsIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IHNlbGZCdXR0b25zID0gW10gYXMgYW55O1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgdHlwZW9mIGl0ZW0gPT0gXCJvYmplY3RcIiAmJiBzZWxmQnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgdHlwZW9mIGNoaWxkcmVuID09IFwib2JqZWN0XCIgJiYgc2VsZkJ1dHRvbnMucHVzaChjaGlsZHJlbik7XHJcbiAgICB9XHJcbiAgICBsZXQgbW9kYWxQcm9wcyA9IHtcclxuICAgICAgdGl0bGU6IGxhYmVsICsgdGl0bGUsXHJcbiAgICAgIG9uT2s6IHRoaXMub25TdWJtaXQuYmluZCh0aGlzKSxcclxuICAgICAgb25DYW5jZWw6IHRoaXMuaGlkZS5iaW5kKHRoaXMpLFxyXG4gICAgICBva0J1dHRvblByb3BzOiB7IGxvYWRpbmc6IGxvYWRpbmcgfSxcclxuICAgICAgY2VudGVyZWQ6IHRydWUsXHJcbiAgICAgIHdpZHRoOiBcIjUwdndcIixcclxuICAgICAgZm9vdGVyQnV0dG9uOiBzZWxmQnV0dG9ucyxcclxuICAgIH0gYXMgYW55O1xyXG5cclxuICAgIGxldCBkcmF3ZXJQcm9wcyA9IHtcclxuICAgICAgdGl0bGU6IGxhYmVsLFxyXG4gICAgICBvbk9rOiB0aGlzLm9uU3VibWl0LmJpbmQodGhpcyksXHJcbiAgICAgIG9uQ2xvc2U6IHRoaXMuaGlkZS5iaW5kKHRoaXMpLFxyXG4gICAgICB3aWR0aDogXCI1MHZ3XCIsXHJcbiAgICAgIGZvb3RlckJ1dHRvbjogc2VsZkJ1dHRvbnMsXHJcbiAgICB9IGFzIGFueTtcclxuICAgIGlmIChsYWJlbCA9PSBcIuafpeeci1wiKSB7XHJcbiAgICAgIG1vZGFsUHJvcHMuZm9vdGVyID0gbnVsbDtcclxuICAgICAgZHJhd2VyUHJvcHMuZm9vdGVyID0gbnVsbDtcclxuICAgIH1cclxuICAgIHRoaXMuZGF0ZVZhbHVlRm9ybWF0ID0ge307XHJcbiAgICB0aGlzLmRhdGVGb3JtYXQgPSB7fTtcclxuICAgIHRoaXMuZmlsZUZvcm1hdCA9IFtdO1xyXG4gICAgbGV0IG5ld0Zvcm1zT2JqID0ge30gYXMgYW55O1xyXG4gICAgbGV0IGZvcm1Hcm91cHMgPSBbXSBhcyBhbnk7XHJcbiAgICBsZXQgb3RoZXJHcnVwcyA9IFtdIGFzIGFueTtcclxuICAgIGxldCBkZWZhbHV0VmFsdWUgPSB7fSBhcyBhbnlcclxuICAgIC8v5aSE55CG6KGo5Y2V5pWw5o2uXHJcbiAgICBmb3Jtcy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBpZiAoaXRlbS5ncm91cE5hbWUgJiYgZm9ybUdyb3Vwcy5pbmRleE9mKGl0ZW0uZ3JvdXBOYW1lKSA8IDApIHtcclxuICAgICAgICBmb3JtR3JvdXBzLnB1c2goaXRlbS5ncm91cE5hbWUpO1xyXG4gICAgICB9IGVsc2UgaWYgKCFpdGVtLmdyb3VwTmFtZSkge1xyXG4gICAgICAgIG90aGVyR3J1cHMucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAoZm9ybUdyb3Vwcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvcm1Hcm91cHMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBsZXQgZ3JvdXBGb3JtcyA9IFtdIGFzIGFueTtcclxuICAgICAgICBmb3Jtcy5tYXAoKGZvcm06IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZvcm0uZ3JvdXBOYW1lID09IGl0ZW0pIHtcclxuICAgICAgICAgICAgZ3JvdXBGb3Jtcy5wdXNoKGZvcm0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIG5ld0Zvcm1zT2JqW2l0ZW1dID0gZ3JvdXBGb3JtcztcclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChvdGhlckdydXBzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBuZXdGb3Jtc09ialtcIm5vR3JvdXBOYW1lXCJdID0gb3RoZXJHcnVwcztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy/oh6rlrprkuYnmjInpkq5cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxGb3JtXHJcbiAgICAgICAgcmVmPXt0aGlzLmZvcm1SZWZ9XHJcbiAgICAgICAgc2hvd01vZGVsPXt0aGlzLnByb3BzLmZvcm1UeXBlID09IFwicGFnZVwiID8gbnVsbCA6IHRoaXMucHJvcHMuZm9ybVR5cGV9XHJcbiAgICAgICAgbW9kYWxQcm9wcz17eyAuLi5tb2RhbFByb3BzIH19XHJcbiAgICAgICAgZHJhd2VyUHJvcHM9e3sgLi4uZHJhd2VyUHJvcHMgfX1cclxuICAgICAgICAvLyBsYWJlbENvbD17eyBmbGV4OiBcIjEwMHB4XCIgfX1cclxuICAgICAgICAvLyB3cmFwcGVyQ29sPXt7IGZsZXg6IFwiMTV2d1wiIH19XHJcbiAgICAgICAgb25WYWx1ZXNDaGFuZ2U9eyhjaGFuZ2VkVmFsdWVzLCBhbGxWYWx1ZXMpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHsgb25Gb3JtQ2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgICAgb25Gb3JtQ2hhbmdlICYmIG9uRm9ybUNoYW5nZShjaGFuZ2VkVmFsdWVzLCBhbGxWYWx1ZXMpO1xyXG4gICAgICAgIH19XHJcbiAgICAgICAgY2hhbmdlVmFsaWQ9e3RoaXMucHJvcHMuY2hhbmdlVmFsaWR9XHJcbiAgICAgICAgey4uLnByb3BzfVxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJuc2MtZm9ybS1wYWdlXCI+XHJcbiAgICAgICAgICB7Zm9ybUdyb3Vwcy5sZW5ndGggPT0gMCA/IChcclxuICAgICAgICAgICAgdGhpcy5wcm9wcy5mb3JtVHlwZSAhPT0gXCJwYWdlXCIgPyAoXHJcbiAgICAgICAgICAgICAgdGhpcy5yZW5kZXJGb3JtKGZvcm1zLCBsYWJlbClcclxuICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5zYy1mb3JtLXBhbmVcIj5cclxuICAgICAgICAgICAgICAgIHt0aGlzLnJlbmRlckZvcm0oZm9ybXMsIGxhYmVsKX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgT2JqZWN0LmtleXMobmV3Rm9ybXNPYmopLm1hcCgoa2V5KSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIDxkaXYga2V5PXtrZXl9IGNsYXNzTmFtZT1cIm5zYy1mb3JtLXBhbmVcIj5cclxuICAgICAgICAgICAgICAgICAge2tleSAhPSBcIm5vR3JvdXBOYW1lXCIgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibnNjLWZvcm0tdGl0bGVcIj57a2V5fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5zYy1mb3JtLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICB7dGhpcy5yZW5kZXJGb3JtKG5ld0Zvcm1zT2JqW2tleV0sIGxhYmVsKX1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKX1cclxuICAgICAgICAgIHtmb3JtVHlwZSA9PT0gXCJwYWdlXCIgJiYgZm9vdGVyID09IHRydWUgJiYgKFxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoXHJcbiAgICAgICAgICAgICAgICBcIm5zYy1mb3JtLXBhZ2UtZm9vdGVyXCIsXHJcbiAgICAgICAgICAgICAgICBbdGhpcy5zdGF0ZS53aWR0aCA/IFwibnNjLWZvcm0tcGFnZS1mb290ZXItd2lkdGhcIiA6IFwiXCJdLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5mb290ZXJDbGFzc05hbWVcclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgey4uLnRoaXMucHJvcHMuY2FuY2VsQnV0dG9uUHJvcHN9XHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uQ2FuY2VsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbmNlbCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIOWPlua2iFxyXG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICAgIHR5cGU9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgIHsuLi50aGlzLnByb3BzLm9rQnV0dG9uUHJvcHN9XHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMub25TdWJtaXQoKTtcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nPXt0aGlzLnN0YXRlLmxvYWRpbmd9XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e1wibnNjLWZvcm0tcGFnZS1mb290ZXItYnRuXCJ9XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAg5L+d5a2YXHJcbiAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAge3NlbGZCdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17XCJuc2MtZm9ybS1wYWdlLWZvb3Rlci1idG5cIn0ga2V5PXtpbmRleH0+XHJcbiAgICAgICAgICAgICAgICAgICAge2l0ZW19XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgICAge2Zvcm1UeXBlID09PSBcInBhZ2VcIiAmJiBmb290ZXIgIT09IHRydWUgJiYgdGhpcy5wcm9wcy5mb290ZXJ9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvRm9ybT5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBGb3JtUGFnZTtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFLLElBQUlDLGFBQWEsUUFBbUIsT0FBTztBQUN2RCxPQUFPQyxJQUFJLE1BQU0saUJBQWlCO0FBQ2xDLFNBQWtCQyxPQUFPLFFBQVEsYUFBYTtBQUM5QyxPQUFPQyxPQUFPLE1BQU0sb0JBQW9CO0FBQ3hDLE9BQU9DLEdBQUcsTUFBTSxxQkFBcUI7QUFDckMsT0FBT0MsR0FBRyxNQUFNLHFCQUFxQjtBQUNyQyxTQUFTQyxVQUFVLEVBQUVDLGFBQWEsUUFBUSxtQkFBbUI7QUFDN0QsT0FBT0MsS0FBSyxNQUFNLE9BQU87QUFDekIsT0FBTyxxQkFBcUI7QUFDNUIsT0FBT0MsTUFBTSxNQUFNLFFBQVE7QUFDM0IsT0FBT0MsTUFBTSxNQUFNLG1CQUFtQjtBQUN0QyxP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
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","PureComponent","Form","getNode","message","Col","Row","isEmptyObj","getLocalStore","dayjs","lodash","Button","Upload","cls","NscRequest","FormPage","constructor","arguments","_defineProperty","createRef","loading","label","props","editType","editorFlag","value","dictNames","fileList","width","editId","ev","data","JSON","parse","_this","eventType","payload","close","setState","componentDidMount","window","addEventListener","listenMessage","formType","requestObject","detailUrl","get","params","id","state","xssFilter","then","res","code","_this$formRef$current","formRef","current","setFieldsValue","_objectSpread","_this$formRef$current2","defaultValu","componentWillUnmount","removeEventListener","show","orgValue","editorflag","length","undefined","callBack","_this$formRef$current3","convertValue","showForm","afterRender","_this$formRef$current4","defaultValue","hide","_this$formRef$current5","onHideForm","hideForm","_this$formRef$current6","setLoading","setEditType","type","setEditId","getFormValue","_this$formRef$current7","formValue","getFieldsValue","fileFormat","newFileList","map","item","getFileList","submitFlag","error","dateValueFormat","key","olddata","Array","isArray","format","rangerDate","dateFormat","e","values","cloneDeep","value1","value2","setFormValue","_this$formRef$current8","newValue","doSubmit","formdata","_this$formRef$current9","submitUrl","submitParams","requestConfig","addUrl","editorUrl","addParams","editorParams","url","Utils","func","Function","converParams","console","otherParams","_objectWithoutProperties","_excluded","onSubmit","noUndefined","success","setTimeout","obj","fileId","fileName","status","push","_this$formRef$current10","valid","validateFields","catch","errorInfo","valueChange","_ref","valueOption","dictName","newNames","onChange","eventOption","funcs","refs","refList","valueStr","selfFunc","renderForm","forms","newValid","createElement","gutter","index","_item$props","itemProps","valueFormat","name","split","allowChars","placeholder","concat","bind","dataType","disabled","rules","required","itemRef","_item$props2","span","style","display","Item","componentName","noStyle","formRender","ref","_item$props3","_item$props4","_item$props5","_extends","onListChange","list","showUploadList","showDownloadIcon","showRemoveIcon","children","render","footer","title","selfButtons","modalProps","onOk","onCancel","okButtonProps","centered","footerButton","drawerProps","onClose","newFormsObj","formGroups","otherGrups","groupName","indexOf","groupForms","form","showModel","onValuesChange","changedValues","allValues","onFormChange","changeValid","className","Object","keys","footerClassName","cancelButtonProps","onClick"],"sources":["../../../src/components/page/FormPage/index.tsx"],"sourcesContent":["import React, { PureComponent, ReactNode } from \"react\";\r\nimport Form from \"../../base/form\";\r\nimport { getLess, getNode } from \"../../utils\";\r\nimport message from \"../../base/message\";\r\nimport Col from \"../../base/grid/Col\";\r\nimport Row from \"../../base/grid/Row\";\r\nimport { isEmptyObj, getLocalStore } from \"@bj-nsc/functions\";\r\nimport dayjs from \"dayjs\";\r\nimport \"./index.module.less\";\r\nimport lodash from \"lodash\";\r\nimport Button from \"../../base/button\";\r\nimport Upload from \"../../base/upload\";\r\nimport cls from \"classnames\";\r\nimport { IFormProps } from \"src/components/base/form/Form\";\r\nimport NscRequest from \"nsc-request\";\r\nexport interface FormPageProps {\r\n forms?: Array<any>; //是否显示操作列\r\n submitUrl?: string;\r\n onSubmit?: (value?: any, label?: any) => void;\r\n footerClassName?: any;\r\n okButtonProps?: any;\r\n cancelButtonProps?: any;\r\n footer?: ReactNode | boolean;\r\n children?: React.ReactNode;\r\n onFormChange?: (value?: any, allValue?: any) => void;\r\n submitParams?: any; //添加参数,默认mothod:post, 参数通过data传递\r\n funcs?: any;\r\n props?: IFormProps;\r\n requestObject?: {\r\n addUrl?: string;\r\n editorUrl?: string;\r\n addParams?: any;\r\n editorParams?: any;\r\n detailUrl?: string;\r\n };\r\n requestConfig?: any;\r\n footerWidth?: boolean;\r\n editType?: \"新增\" | \"编辑\" | \"查看\";\r\n title?: string;\r\n editId?: string;\r\n [propsName: string]: any;\r\n}\r\nclass FormPage extends PureComponent<FormPageProps, any> {\r\n formRef = React.createRef<any>();\r\n state = {\r\n loading: false,\r\n label: this.props.editType || \"\",\r\n editorFlag: true,\r\n value: {} as any,\r\n dictNames: {} as any,\r\n fileList: {} as any,\r\n width: getLocalStore(\"nsc-home-menuCollsape\") || false,\r\n editId: this.props.editId || \"\",\r\n };\r\n valid: any = [];\r\n dateValueFormat = {} as any;\r\n dateFormat = {} as any;\r\n fileFormat = [] as any;\r\n rangerDate = {} as any;\r\n refList = {} as any;\r\n submitFlag = true;\r\n componentDidMount(): void {\r\n window.addEventListener(\"message\", this.listenMessage);\r\n const {\r\n formType = \"page\",\r\n requestObject = {},\r\n editType = \"新增\",\r\n } = this.props;\r\n if (formType == \"page\") {\r\n if (requestObject.detailUrl && editType !== \"新增\") {\r\n NscRequest.get(requestObject.detailUrl, {\r\n params: { id: this.state.editId },\r\n xssFilter: false,\r\n }).then((res) => {\r\n if (res.code == 200) {\r\n this.formRef.current?.setFieldsValue({ ...res.data });\r\n }\r\n });\r\n } else if (editType == \"新增\") {\r\n this.formRef.current?.setFieldsValue(this.props.defaultValu || {});\r\n }\r\n }\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 == \"menuCollsape\") {\r\n const { payload } = data;\r\n if (payload.close === true || payload.close === false) {\r\n _this.setState({ width: payload.close });\r\n }\r\n }\r\n };\r\n //表单显示\r\n show(orgValue?: any, editorflag = \"add\", callBack?: any) {\r\n let label = \"新增\";\r\n if (orgValue && editorflag == \"editor\") {\r\n label = \"编辑\";\r\n } else if (orgValue && (editorflag == \"detail\" || editorflag == \"search\")) {\r\n label = \"查看\";\r\n }\r\n if (orgValue) {\r\n this.setState(\r\n {\r\n label: label,\r\n value: orgValue,\r\n editId: orgValue.id,\r\n },\r\n () => {\r\n let value = this.convertValue(orgValue, label);\r\n //处理文件数据\r\n this.formRef.current?.showForm(value, {\r\n afterRender: () => {\r\n callBack && callBack();\r\n },\r\n });\r\n }\r\n );\r\n } else {\r\n this.setState(\r\n {\r\n label: label,\r\n },\r\n () => {\r\n this.formRef.current?.showForm(this.props.defaultValue, {\r\n afterRender: () => {\r\n callBack && callBack();\r\n },\r\n });\r\n }\r\n );\r\n }\r\n }\r\n hide(hide = true) {\r\n const { onHideForm } = this.props;\r\n if (onHideForm) {\r\n onHideForm && onHideForm();\r\n return;\r\n }\r\n this.setState({ loading: false, fileList: {} });\r\n hide && this.formRef.current?.hideForm();\r\n }\r\n hideForm() {\r\n this.setState({ loading: false, fileList: {} });\r\n this.formRef.current?.hideForm();\r\n }\r\n showForm(orgValue?: any, editorflag = \"add\", callBack?: any) {\r\n this.show(orgValue, editorflag, callBack);\r\n }\r\n setLoading(loading: boolean) {\r\n this.setState({ loading: loading });\r\n }\r\n setEditType(type) {\r\n this.setState({\r\n label: type,\r\n });\r\n }\r\n setEditId(id) {\r\n this.setState({\r\n editId: id,\r\n });\r\n }\r\n getFormValue() {\r\n const { label, value, dictNames, fileList } = this.state;\r\n const formValue = this.formRef.current?.getFieldsValue();\r\n let data = { ...formValue, ...dictNames };\r\n if (this.fileFormat.length > 0) {\r\n let newFileList = {} as any;\r\n this.fileFormat.map((item) => {\r\n if (fileList[item].length == 0) {\r\n newFileList[item] = null;\r\n } else {\r\n if (!formValue[item]) {\r\n newFileList[item] = this.getFileList(fileList[item] || []);\r\n }\r\n }\r\n });\r\n data = { ...data, ...newFileList };\r\n }\r\n if (!this.submitFlag) {\r\n message.error(\"请等待所有文件上传完成!\");\r\n return;\r\n }\r\n if (!isEmptyObj(this.dateValueFormat)) {\r\n for (let key in this.dateValueFormat) {\r\n let olddata = data[key];\r\n if (olddata) {\r\n if (Array.isArray(olddata)) {\r\n data[key] = [\r\n dayjs(olddata[0]).format(this.dateValueFormat[key]),\r\n dayjs(olddata[1]).format(this.dateValueFormat[key]),\r\n ];\r\n if (this.rangerDate[key]) {\r\n try {\r\n data[this.rangerDate[key][0]] = dayjs(olddata[0]).format(\r\n this.dateFormat[key]\r\n );\r\n data[this.rangerDate[key][1]] = dayjs(olddata[1]).format(\r\n this.dateFormat[key]\r\n );\r\n delete data[key];\r\n } catch (e) {}\r\n }\r\n } else {\r\n data[key] = dayjs(olddata).format(this.dateValueFormat[key]);\r\n }\r\n }\r\n }\r\n }\r\n if (label == \"编辑\") {\r\n data = { ...data, id: value?.id || this.state.editId };\r\n }\r\n return data;\r\n }\r\n convertValue(value, type) {\r\n let values = lodash.cloneDeep(value);\r\n if (this.fileFormat.length > 0) {\r\n let fileList = {} as any;\r\n this.fileFormat.map((item) => {\r\n let olddata = values[item];\r\n if (olddata && Array.isArray(olddata)) {\r\n fileList[item] = this.getFileList(olddata || [], type);\r\n } else {\r\n fileList[item] = [];\r\n }\r\n });\r\n this.setState({ fileList: fileList });\r\n }\r\n //处理日期格式数据\r\n if (!isEmptyObj(this.dateFormat)) {\r\n for (let key in this.dateFormat) {\r\n let olddata = values[key];\r\n if (olddata) {\r\n if (Array.isArray(olddata)) {\r\n values[key] = [\r\n dayjs(olddata[0], this.dateFormat[key]),\r\n dayjs(olddata[1], this.dateFormat[key]),\r\n ];\r\n } else {\r\n values[key] = dayjs(olddata, this.dateFormat[key]);\r\n }\r\n } else {\r\n if (this.rangerDate[key]) {\r\n let value1 = values[this.rangerDate[key][0]];\r\n let value2 = values[this.rangerDate[key][1]];\r\n if (value1 && value2) {\r\n values[key] = [\r\n dayjs(value1, this.dateFormat[key]),\r\n dayjs(value2, this.dateFormat[key]),\r\n ];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return values;\r\n }\r\n setFormValue(value, type) {\r\n const newValue = this.convertValue(value, type);\r\n this.formRef.current?.setFieldsValue(newValue);\r\n }\r\n doSubmit(formdata, label) {\r\n const {\r\n submitUrl,\r\n submitParams = {},\r\n callBack,\r\n requestObject = {},\r\n requestConfig = {},\r\n } = this.props;\r\n const { addUrl, editorUrl, addParams, editorParams } = requestObject;\r\n let url = submitUrl;\r\n let params: any = {};\r\n if (label == \"新增\") {\r\n url = addUrl ? addUrl : submitUrl;\r\n if (addParams && typeof addParams == \"string\") {\r\n const Utils = this.props.Utils || {};\r\n let func = new Function(\"Utils\", addParams);\r\n let converParams = func(Utils);\r\n params = converParams;\r\n } else {\r\n params = addParams ? addParams : submitParams;\r\n }\r\n } else if (label == \"编辑\") {\r\n url = editorUrl ? editorUrl : submitUrl;\r\n if (editorParams && typeof editorParams == \"string\") {\r\n const Utils = this.props.Utils || {};\r\n let func = new Function(\"Utils\", editorParams);\r\n let converParams = func(Utils);\r\n params = converParams;\r\n } else {\r\n params = editorParams ? editorParams : submitParams;\r\n }\r\n }\r\n if (!url) {\r\n console.error(\"配置Url不能为空!\");\r\n return;\r\n }\r\n const { data = {}, ...otherParams } = params;\r\n this.formRef.current?.onSubmit(\r\n url,\r\n {\r\n data: { ...formdata, ...data },\r\n noUndefined: label == \"编辑\",\r\n ...requestConfig,\r\n ...otherParams,\r\n },\r\n (res: any) => {\r\n const { code } = res;\r\n this.setState({ loading: false });\r\n if (code === 200) {\r\n message.success(label + \"成功\");\r\n setTimeout(() => {\r\n this.hide(true);\r\n callBack && callBack();\r\n }, 500);\r\n\r\n return;\r\n }\r\n this.hide(false);\r\n }\r\n );\r\n }\r\n getFileList(data, label = \"新增\") {\r\n this.submitFlag = true;\r\n let fileList = [] as any;\r\n if (data && data.length > 0) {\r\n data.map((item) => {\r\n let obj = {\r\n fileId: item.fileId,\r\n fileName: item.fileName,\r\n } as any;\r\n if (label == \"查看\") {\r\n obj.status = \"done\";\r\n }\r\n if (label !== \"查看\" && item.status !== \"done\") {\r\n this.submitFlag = false;\r\n }\r\n fileList.push(obj);\r\n });\r\n }\r\n return fileList;\r\n }\r\n\r\n onSubmit() {\r\n const { onSubmit } = this.props;\r\n const { label, value, dictNames, fileList } = this.state;\r\n let valid = this.valid;\r\n this.formRef.current\r\n ?.validateFields()\r\n .then(() => {\r\n let data = this.getFormValue();\r\n // if (!this.submitFlag) {\r\n // message.error('请等待所有文件上传完成!')\r\n // return;\r\n // }\r\n this.setState({ loading: true });\r\n if (onSubmit) {\r\n onSubmit && onSubmit(data, label);\r\n return;\r\n }\r\n this.doSubmit(data, label);\r\n })\r\n .catch((errorInfo: any) => {});\r\n }\r\n valueChange({ type, dictName }, props, value, valueOption, data) {\r\n if (valueOption) {\r\n if (dictName) {\r\n const { dictNames } = this.state;\r\n const newNames = { ...dictNames } as any;\r\n newNames[dictName] = valueOption.label;\r\n this.setState({\r\n dictNames: newNames,\r\n });\r\n }\r\n }\r\n if (props.onChange) {\r\n if (typeof props.onChange == \"function\") {\r\n props.onChange(value, valueOption, data);\r\n } else if (typeof props.onChange == \"string\") {\r\n const eventOption = {\r\n value,\r\n data,\r\n formRef: this.formRef,\r\n funcs: this.props.funcs || {},\r\n refs: this.refList,\r\n } as any;\r\n const Utils = this.props.Utils || {};\r\n if (type == \"Select\") {\r\n eventOption.valueOption = valueOption;\r\n eventOption.data = data;\r\n } else if (type == \"DatePicker\" || type == \"RangePicker\") {\r\n eventOption.valueStr = valueOption;\r\n }\r\n const selfFunc = new Function(\"eventOption\", \"Utils\", props.onChange);\r\n selfFunc(eventOption, Utils);\r\n }\r\n }\r\n }\r\n\r\n renderForm(forms, label) {\r\n const newValid: any[] = [];\r\n return (\r\n <Row gutter={24}>\r\n {forms.map((item: any, index: number) => {\r\n const itemProps = item.props || {};\r\n if (itemProps.format || itemProps.valueFormat) {\r\n this.dateValueFormat[item.name] =\r\n itemProps.format || itemProps.valueFormat;\r\n }\r\n if (itemProps.format) {\r\n this.dateFormat[item.name] = itemProps.format;\r\n }\r\n if (item.type == \"RangePicker\" && item.name.split(\",\").length > 1) {\r\n this.rangerDate[item.name] = item.name.split(\",\");\r\n }\r\n let allowChars = item.props?.allowChars || false;\r\n let props = {\r\n placeholder: `请输入${item.label}`,\r\n ...item.props,\r\n onChange: this.valueChange.bind(\r\n this,\r\n {\r\n type: item.type,\r\n dictName: item.dictName,\r\n },\r\n { ...item.props }\r\n ),\r\n };\r\n if (!item.type || item.type == \"Input\") {\r\n props.allowChars = true; //form.item 使用input组件allowChars必须默认true,不然输入特殊字符拿到的值不对\r\n }\r\n delete props.valueFormat;\r\n delete props.format;\r\n delete props.dataType;\r\n if (label == \"查看\") {\r\n props.disabled = true;\r\n props.placeholder = \"\";\r\n }\r\n if ((item.rules && item.rules.length > 0) || item.required === true) {\r\n newValid.push(item.name);\r\n }\r\n if (index + 1 === forms.length) {\r\n this.valid = newValid;\r\n }\r\n const itemRef: any = React.createRef<any>();\r\n this.refList[item.name] = itemRef;\r\n if (item.type !== \"Upload\") {\r\n return (\r\n <Col\r\n span={item.span || 12}\r\n key={index}\r\n style={{ display: item.hide ? \"none\" : \"block\" }}\r\n >\r\n <Form.Item\r\n label={item.label}\r\n name={item.name}\r\n rules={item.rules}\r\n allowChars={allowChars}\r\n componentName={item.type ? item.type : \"Input\"}\r\n required={item.required}\r\n type={item.props?.type}\r\n noStyle={item.noStyle || false}\r\n >\r\n {item.formRender\r\n ? item.formRender(props)\r\n : getNode(item.type, {\r\n ref: itemRef,\r\n ...props,\r\n })}\r\n </Form.Item>\r\n </Col>\r\n );\r\n } else {\r\n this.fileFormat.push(item.name);\r\n return (\r\n <Col\r\n span={item.span || 12}\r\n key={index}\r\n style={{ display: item.hide ? \"none\" : \"block\" }}\r\n >\r\n <Form.Item\r\n label={item.label}\r\n name={item.name}\r\n rules={item.rules}\r\n allowChars={allowChars}\r\n type={item.props?.type}\r\n required={item.required}\r\n >\r\n <Upload\r\n fileList={this.state.fileList[item.name] || []}\r\n onListChange={(list) => {\r\n const { fileList } = this.state;\r\n this.setState({\r\n fileList: { ...fileList, [item.name]: list },\r\n });\r\n }}\r\n showUploadList={{\r\n showDownloadIcon: true,\r\n showRemoveIcon: label !== \"查看\",\r\n }}\r\n ref={itemRef}\r\n {...props}\r\n >\r\n {item.props?.children\r\n ? item.props?.children\r\n : label !== \"查看\" && <Button>上传文件</Button>}\r\n </Upload>\r\n </Form.Item>\r\n </Col>\r\n );\r\n }\r\n })}\r\n </Row>\r\n );\r\n }\r\n render() {\r\n const {\r\n forms = [],\r\n props = {},\r\n footer = true,\r\n children,\r\n formType = \"page\",\r\n title = \"\",\r\n } = this.props;\r\n const { loading, label } = this.state;\r\n let selfButtons = [] as any;\r\n if (Array.isArray(children)) {\r\n children.map((item: any) => {\r\n typeof item == \"object\" && selfButtons.push(item);\r\n });\r\n } else if (children) {\r\n typeof children == \"object\" && selfButtons.push(children);\r\n }\r\n let modalProps = {\r\n title: label + title,\r\n onOk: this.onSubmit.bind(this),\r\n onCancel: this.hide.bind(this),\r\n okButtonProps: { loading: loading },\r\n centered: true,\r\n width: \"50vw\",\r\n footerButton: selfButtons,\r\n } as any;\r\n\r\n let drawerProps = {\r\n title: label,\r\n onOk: this.onSubmit.bind(this),\r\n onClose: this.hide.bind(this),\r\n width: \"50vw\",\r\n footerButton: selfButtons,\r\n } as any;\r\n if (label == \"查看\") {\r\n modalProps.footer = null;\r\n drawerProps.footer = null;\r\n }\r\n this.dateValueFormat = {};\r\n this.dateFormat = {};\r\n this.fileFormat = [];\r\n let newFormsObj = {} as any;\r\n let formGroups = [] as any;\r\n let otherGrups = [] as any;\r\n //处理表单数据\r\n forms.map((item: any) => {\r\n if (item.groupName && formGroups.indexOf(item.groupName) < 0) {\r\n formGroups.push(item.groupName);\r\n } else if (!item.groupName) {\r\n otherGrups.push(item);\r\n }\r\n });\r\n if (formGroups.length > 0) {\r\n formGroups.map((item: any) => {\r\n let groupForms = [] as any;\r\n forms.map((form: any) => {\r\n if (form.groupName == item) {\r\n groupForms.push(form);\r\n }\r\n });\r\n newFormsObj[item] = groupForms;\r\n });\r\n if (otherGrups.length > 0) {\r\n newFormsObj[\"noGroupName\"] = otherGrups;\r\n }\r\n }\r\n //自定义按钮\r\n return (\r\n <Form\r\n ref={this.formRef}\r\n showModel={this.props.formType == \"page\" ? null : this.props.formType}\r\n modalProps={{ ...modalProps }}\r\n drawerProps={{ ...drawerProps }}\r\n // labelCol={{ flex: \"100px\" }}\r\n // wrapperCol={{ flex: \"15vw\" }}\r\n onValuesChange={(changedValues, allValues) => {\r\n const { onFormChange } = this.props;\r\n onFormChange && onFormChange(changedValues, allValues);\r\n }}\r\n changeValid={this.props.changeValid}\r\n {...props}\r\n >\r\n <div className=\"nsc-form-page\">\r\n {formGroups.length == 0 ? (\r\n this.props.formType !== \"page\" ? (\r\n this.renderForm(forms, label)\r\n ) : (\r\n <div className=\"nsc-form-pane\">\r\n {this.renderForm(forms, label)}\r\n </div>\r\n )\r\n ) : (\r\n Object.keys(newFormsObj).map((key) => {\r\n return (\r\n <div key={key} className=\"nsc-form-pane\">\r\n {key != \"noGroupName\" && (\r\n <div className=\"nsc-form-title\">{key}</div>\r\n )}\r\n <div className=\"nsc-form-content\">\r\n {this.renderForm(newFormsObj[key], label)}\r\n </div>\r\n </div>\r\n );\r\n })\r\n )}\r\n {formType === \"page\" && footer == true && (\r\n <div\r\n className={cls(\r\n \"nsc-form-page-footer\",\r\n [this.state.width ? \"nsc-form-page-footer-width\" : \"\"],\r\n this.props.footerClassName\r\n )}\r\n >\r\n <Button\r\n {...this.props.cancelButtonProps}\r\n onClick={() => {\r\n if (this.props.onCancel) {\r\n this.props.onCancel();\r\n return;\r\n }\r\n this.setState({ loading: false });\r\n }}\r\n >\r\n 取消\r\n </Button>\r\n <Button\r\n type=\"primary\"\r\n {...this.props.okButtonProps}\r\n onClick={() => {\r\n this.onSubmit();\r\n }}\r\n loading={this.state.loading}\r\n className={\"nsc-form-page-footer-btn\"}\r\n >\r\n 保存\r\n </Button>\r\n {selfButtons.map((item: any, index: any) => {\r\n return (\r\n <div className={\"nsc-form-page-footer-btn\"} key={index}>\r\n {item}\r\n </div>\r\n );\r\n })}\r\n </div>\r\n )}\r\n {formType === \"page\" && footer !== true && this.props.footer}\r\n </div>\r\n </Form>\r\n );\r\n }\r\n}\r\n\r\nexport default FormPage;\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["React","PureComponent","Form","getNode","message","Col","Row","isEmptyObj","getLocalStore","dayjs","lodash","Button","Upload","cls","NscRequest","FormPage","constructor","arguments","_defineProperty","createRef","loading","label","props","editType","editorFlag","value","dictNames","fileList","width","editId","ev","data","JSON","parse","_this","eventType","payload","close","setState","componentDidMount","window","addEventListener","listenMessage","formType","requestObject","detailUrl","get","params","id","state","xssFilter","then","res","code","_this$formRef$current","formRef","current","setFieldsValue","_objectSpread","_this$formRef$current2","defaultValu","componentWillUnmount","removeEventListener","show","orgValue","editorflag","length","undefined","callBack","_this$formRef$current3","convertValue","showForm","afterRender","_this$formRef$current4","defaultValue","hide","_this$formRef$current5","onHideForm","hideForm","_this$formRef$current6","setLoading","setEditType","type","setEditId","getFormValue","_this$formRef$current7","formValue","getFieldsValue","fileFormat","newFileList","map","item","getFileList","submitFlag","error","dateValueFormat","key","olddata","Array","isArray","format","rangerDate","dateFormat","e","values","cloneDeep","value1","value2","setFormValue","_this$formRef$current8","newValue","doSubmit","formdata","_this$formRef$current9","submitUrl","submitParams","requestConfig","addUrl","editorUrl","addParams","editorParams","url","Utils","func","Function","converParams","console","otherParams","_objectWithoutProperties","_excluded","onSubmit","noUndefined","success","setTimeout","obj","fileId","fileName","status","push","_this$formRef$current10","valid","validateFields","catch","errorInfo","valueChange","_ref","valueOption","dictName","newNames","onChange","eventOption","funcs","refs","refList","valueStr","selfFunc","renderForm","forms","newValid","createElement","gutter","index","_item$props","itemProps","valueFormat","name","split","allowChars","placeholder","concat","bind","dataType","disabled","rules","required","itemRef","_item$props2","span","style","display","Item","componentName","noStyle","formRender","ref","_item$props3","_item$props4","_item$props5","_extends","onListChange","list","showUploadList","showDownloadIcon","showRemoveIcon","children","render","footer","title","selfButtons","modalProps","onOk","onCancel","okButtonProps","centered","footerButton","drawerProps","onClose","newFormsObj","formGroups","otherGrups","defalutValue","groupName","indexOf","groupForms","form","showModel","onValuesChange","changedValues","allValues","onFormChange","changeValid","className","Object","keys","footerClassName","cancelButtonProps","onClick"],"sources":["../../../src/components/page/FormPage/index.tsx"],"sourcesContent":["import React, { PureComponent, ReactNode } from \"react\";\r\nimport Form from \"../../base/form\";\r\nimport { getLess, getNode } from \"../../utils\";\r\nimport message from \"../../base/message\";\r\nimport Col from \"../../base/grid/Col\";\r\nimport Row from \"../../base/grid/Row\";\r\nimport { isEmptyObj, getLocalStore } from \"@bj-nsc/functions\";\r\nimport dayjs from \"dayjs\";\r\nimport \"./index.module.less\";\r\nimport lodash from \"lodash\";\r\nimport Button from \"../../base/button\";\r\nimport Upload from \"../../base/upload\";\r\nimport cls from \"classnames\";\r\nimport { IFormProps } from \"src/components/base/form/Form\";\r\nimport NscRequest from \"nsc-request\";\r\nexport interface FormPageProps {\r\n forms?: Array<any>; //是否显示操作列\r\n submitUrl?: string;\r\n onSubmit?: (value?: any, label?: any) => void;\r\n footerClassName?: any;\r\n okButtonProps?: any;\r\n cancelButtonProps?: any;\r\n footer?: ReactNode | boolean;\r\n children?: React.ReactNode;\r\n onFormChange?: (value?: any, allValue?: any) => void;\r\n submitParams?: any; //添加参数,默认mothod:post, 参数通过data传递\r\n funcs?: any;\r\n props?: IFormProps;\r\n requestObject?: {\r\n addUrl?: string;\r\n editorUrl?: string;\r\n addParams?: any;\r\n editorParams?: any;\r\n detailUrl?: string;\r\n };\r\n requestConfig?: any;\r\n footerWidth?: boolean;\r\n editType?: \"新增\" | \"编辑\" | \"查看\";\r\n title?: string;\r\n editId?: string;\r\n [propsName: string]: any;\r\n}\r\nclass FormPage extends PureComponent<FormPageProps, any> {\r\n formRef = React.createRef<any>();\r\n state = {\r\n loading: false,\r\n label: this.props.editType || \"\",\r\n editorFlag: true,\r\n value: {} as any,\r\n dictNames: {} as any,\r\n fileList: {} as any,\r\n width: getLocalStore(\"nsc-home-menuCollsape\") || false,\r\n editId: this.props.editId || \"\",\r\n };\r\n valid: any = [];\r\n dateValueFormat = {} as any;\r\n dateFormat = {} as any;\r\n fileFormat = [] as any;\r\n rangerDate = {} as any;\r\n refList = {} as any;\r\n submitFlag = true;\r\n componentDidMount(): void {\r\n window.addEventListener(\"message\", this.listenMessage);\r\n const {\r\n formType = \"page\",\r\n requestObject = {},\r\n editType = \"新增\",\r\n } = this.props;\r\n if (formType == \"page\") {\r\n if (requestObject.detailUrl && editType !== \"新增\") {\r\n NscRequest.get(requestObject.detailUrl, {\r\n params: { id: this.state.editId },\r\n xssFilter: false,\r\n }).then((res) => {\r\n if (res.code == 200) {\r\n this.formRef.current?.setFieldsValue({ ...res.data });\r\n }\r\n });\r\n } else if (editType == \"新增\") {\r\n this.formRef.current?.setFieldsValue(this.props.defaultValu || {});\r\n }\r\n }\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 == \"menuCollsape\") {\r\n const { payload } = data;\r\n if (payload.close === true || payload.close === false) {\r\n _this.setState({ width: payload.close });\r\n }\r\n }\r\n };\r\n //表单显示\r\n show(orgValue?: any, editorflag = \"add\", callBack?: any) {\r\n let label = \"新增\";\r\n if (orgValue && editorflag == \"editor\") {\r\n label = \"编辑\";\r\n } else if (orgValue && (editorflag == \"detail\" || editorflag == \"search\")) {\r\n label = \"查看\";\r\n }\r\n if (orgValue) {\r\n this.setState(\r\n {\r\n label: label,\r\n value: orgValue,\r\n editId: orgValue.id,\r\n },\r\n () => {\r\n let value = this.convertValue(orgValue, label);\r\n //处理文件数据\r\n this.formRef.current?.showForm(value, {\r\n afterRender: () => {\r\n callBack && callBack();\r\n },\r\n });\r\n }\r\n );\r\n } else {\r\n this.setState(\r\n {\r\n label: label,\r\n },\r\n () => {\r\n this.formRef.current?.showForm(this.props.defaultValue, {\r\n afterRender: () => {\r\n callBack && callBack();\r\n },\r\n });\r\n }\r\n );\r\n }\r\n }\r\n hide(hide = true) {\r\n const { onHideForm } = this.props;\r\n if (onHideForm) {\r\n onHideForm && onHideForm();\r\n return;\r\n }\r\n this.setState({ loading: false, fileList: {} });\r\n hide && this.formRef.current?.hideForm();\r\n }\r\n hideForm() {\r\n this.setState({ loading: false, fileList: {} });\r\n this.formRef.current?.hideForm();\r\n }\r\n showForm(orgValue?: any, editorflag = \"add\", callBack?: any) {\r\n this.show(orgValue, editorflag, callBack);\r\n }\r\n setLoading(loading: boolean) {\r\n this.setState({ loading: loading });\r\n }\r\n setEditType(type) {\r\n this.setState({\r\n label: type,\r\n });\r\n }\r\n setEditId(id) {\r\n this.setState({\r\n editId: id,\r\n });\r\n }\r\n getFormValue() {\r\n const { label, value, dictNames, fileList } = this.state;\r\n const formValue = this.formRef.current?.getFieldsValue();\r\n let data = { ...formValue, ...dictNames };\r\n if (this.fileFormat.length > 0) {\r\n let newFileList = {} as any;\r\n this.fileFormat.map((item) => {\r\n if (fileList[item].length == 0) {\r\n newFileList[item] = null;\r\n } else {\r\n if (!formValue[item]) {\r\n newFileList[item] = this.getFileList(fileList[item] || []);\r\n }\r\n }\r\n });\r\n data = { ...data, ...newFileList };\r\n }\r\n if (!this.submitFlag) {\r\n message.error(\"请等待所有文件上传完成!\");\r\n return;\r\n }\r\n if (!isEmptyObj(this.dateValueFormat)) {\r\n for (let key in this.dateValueFormat) {\r\n let olddata = data[key];\r\n if (olddata) {\r\n if (Array.isArray(olddata)) {\r\n data[key] = [\r\n dayjs(olddata[0]).format(this.dateValueFormat[key]),\r\n dayjs(olddata[1]).format(this.dateValueFormat[key]),\r\n ];\r\n if (this.rangerDate[key]) {\r\n try {\r\n data[this.rangerDate[key][0]] = dayjs(olddata[0]).format(\r\n this.dateFormat[key]\r\n );\r\n data[this.rangerDate[key][1]] = dayjs(olddata[1]).format(\r\n this.dateFormat[key]\r\n );\r\n delete data[key];\r\n } catch (e) {}\r\n }\r\n } else {\r\n data[key] = dayjs(olddata).format(this.dateValueFormat[key]);\r\n }\r\n }\r\n }\r\n }\r\n if (label == \"编辑\") {\r\n data = { ...data, id: value?.id || this.state.editId };\r\n }\r\n return data;\r\n }\r\n convertValue(value, type) {\r\n let values = lodash.cloneDeep(value);\r\n if (this.fileFormat.length > 0) {\r\n let fileList = {} as any;\r\n this.fileFormat.map((item) => {\r\n let olddata = values[item];\r\n if (olddata && Array.isArray(olddata)) {\r\n fileList[item] = this.getFileList(olddata || [], type);\r\n } else {\r\n fileList[item] = [];\r\n }\r\n });\r\n this.setState({ fileList: fileList });\r\n }\r\n //处理日期格式数据\r\n if (!isEmptyObj(this.dateFormat)) {\r\n for (let key in this.dateFormat) {\r\n let olddata = values[key];\r\n if (olddata) {\r\n if (Array.isArray(olddata)) {\r\n values[key] = [\r\n dayjs(olddata[0], this.dateFormat[key]),\r\n dayjs(olddata[1], this.dateFormat[key]),\r\n ];\r\n } else {\r\n values[key] = dayjs(olddata, this.dateFormat[key]);\r\n }\r\n } else {\r\n if (this.rangerDate[key]) {\r\n let value1 = values[this.rangerDate[key][0]];\r\n let value2 = values[this.rangerDate[key][1]];\r\n if (value1 && value2) {\r\n values[key] = [\r\n dayjs(value1, this.dateFormat[key]),\r\n dayjs(value2, this.dateFormat[key]),\r\n ];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return values;\r\n }\r\n setFormValue(value, type) {\r\n const newValue = this.convertValue(value, type);\r\n this.formRef.current?.setFieldsValue(newValue);\r\n }\r\n doSubmit(formdata, label) {\r\n const {\r\n submitUrl,\r\n submitParams = {},\r\n callBack,\r\n requestObject = {},\r\n requestConfig = {},\r\n } = this.props;\r\n const { addUrl, editorUrl, addParams, editorParams } = requestObject;\r\n let url = submitUrl;\r\n let params: any = {};\r\n if (label == \"新增\") {\r\n url = addUrl ? addUrl : submitUrl;\r\n if (addParams && typeof addParams == \"string\") {\r\n const Utils = this.props.Utils || {};\r\n let func = new Function(\"Utils\", addParams);\r\n let converParams = func(Utils);\r\n params = converParams;\r\n } else {\r\n params = addParams ? addParams : submitParams;\r\n }\r\n } else if (label == \"编辑\") {\r\n url = editorUrl ? editorUrl : submitUrl;\r\n if (editorParams && typeof editorParams == \"string\") {\r\n const Utils = this.props.Utils || {};\r\n let func = new Function(\"Utils\", editorParams);\r\n let converParams = func(Utils);\r\n params = converParams;\r\n } else {\r\n params = editorParams ? editorParams : submitParams;\r\n }\r\n }\r\n if (!url) {\r\n console.error(\"配置Url不能为空!\");\r\n return;\r\n }\r\n const { data = {}, ...otherParams } = params;\r\n this.formRef.current?.onSubmit(\r\n url,\r\n {\r\n data: { ...formdata, ...data },\r\n noUndefined: label == \"编辑\",\r\n ...requestConfig,\r\n ...otherParams,\r\n },\r\n (res: any) => {\r\n const { code } = res;\r\n this.setState({ loading: false });\r\n if (code === 200) {\r\n message.success(label + \"成功\");\r\n setTimeout(() => {\r\n this.hide(true);\r\n callBack && callBack();\r\n }, 500);\r\n\r\n return;\r\n }\r\n this.hide(false);\r\n }\r\n );\r\n }\r\n getFileList(data, label = \"新增\") {\r\n this.submitFlag = true;\r\n let fileList = [] as any;\r\n if (data && data.length > 0) {\r\n data.map((item) => {\r\n let obj = {\r\n fileId: item.fileId,\r\n fileName: item.fileName,\r\n } as any;\r\n if (label == \"查看\") {\r\n obj.status = \"done\";\r\n }\r\n if (label !== \"查看\" && item.status !== \"done\") {\r\n this.submitFlag = false;\r\n }\r\n fileList.push(obj);\r\n });\r\n }\r\n return fileList;\r\n }\r\n\r\n onSubmit() {\r\n const { onSubmit } = this.props;\r\n const { label, value, dictNames, fileList } = this.state;\r\n let valid = this.valid;\r\n this.formRef.current\r\n ?.validateFields()\r\n .then(() => {\r\n let data = this.getFormValue();\r\n // if (!this.submitFlag) {\r\n // message.error('请等待所有文件上传完成!')\r\n // return;\r\n // }\r\n this.setState({ loading: true });\r\n if (onSubmit) {\r\n onSubmit && onSubmit(data, label);\r\n return;\r\n }\r\n this.doSubmit(data, label);\r\n })\r\n .catch((errorInfo: any) => {});\r\n }\r\n valueChange({ type, dictName }, props, value, valueOption, data) {\r\n if (valueOption) {\r\n if (dictName) {\r\n const { dictNames } = this.state;\r\n const newNames = { ...dictNames } as any;\r\n newNames[dictName] = valueOption.label;\r\n this.setState({\r\n dictNames: newNames,\r\n });\r\n }\r\n }\r\n if (props.onChange) {\r\n if (typeof props.onChange == \"function\") {\r\n props.onChange(value, valueOption, data);\r\n } else if (typeof props.onChange == \"string\") {\r\n const eventOption = {\r\n value,\r\n data,\r\n formRef: this.formRef,\r\n funcs: this.props.funcs || {},\r\n refs: this.refList,\r\n } as any;\r\n const Utils = this.props.Utils || {};\r\n if (type == \"Select\") {\r\n eventOption.valueOption = valueOption;\r\n eventOption.data = data;\r\n } else if (type == \"DatePicker\" || type == \"RangePicker\") {\r\n eventOption.valueStr = valueOption;\r\n }\r\n const selfFunc = new Function(\"eventOption\", \"Utils\", props.onChange);\r\n selfFunc(eventOption, Utils);\r\n }\r\n }\r\n }\r\n\r\n renderForm(forms, label) {\r\n const newValid: any[] = [];\r\n return (\r\n <Row gutter={24}>\r\n {forms.map((item: any, index: number) => {\r\n const itemProps = item.props || {};\r\n if (itemProps.format || itemProps.valueFormat) {\r\n this.dateValueFormat[item.name] =\r\n itemProps.format || itemProps.valueFormat;\r\n }\r\n if (itemProps.format) {\r\n this.dateFormat[item.name] = itemProps.format;\r\n }\r\n if (item.type == \"RangePicker\" && item.name.split(\",\").length > 1) {\r\n this.rangerDate[item.name] = item.name.split(\",\");\r\n }\r\n let allowChars = item.props?.allowChars || false;\r\n let props = {\r\n placeholder: `请输入${item.label}`,\r\n ...item.props,\r\n onChange: this.valueChange.bind(\r\n this,\r\n {\r\n type: item.type,\r\n dictName: item.dictName,\r\n },\r\n { ...item.props }\r\n ),\r\n };\r\n if (!item.type || item.type == \"Input\") {\r\n props.allowChars = true; //form.item 使用input组件allowChars必须默认true,不然输入特殊字符拿到的值不对\r\n }\r\n delete props.valueFormat;\r\n delete props.format;\r\n delete props.dataType;\r\n if (label == \"查看\") {\r\n props.disabled = true;\r\n props.placeholder = \"\";\r\n }\r\n if ((item.rules && item.rules.length > 0) || item.required === true) {\r\n newValid.push(item.name);\r\n }\r\n if (index + 1 === forms.length) {\r\n this.valid = newValid;\r\n }\r\n const itemRef: any = React.createRef<any>();\r\n this.refList[item.name] = itemRef;\r\n if (item.type !== \"Upload\") {\r\n return (\r\n <Col\r\n span={item.span || 12}\r\n key={index}\r\n style={{ display: item.hide ? \"none\" : \"block\" }}\r\n >\r\n <Form.Item\r\n label={item.label}\r\n name={item.name}\r\n rules={item.rules}\r\n allowChars={allowChars}\r\n componentName={item.type ? item.type : \"Input\"}\r\n required={item.required}\r\n type={item.props?.type}\r\n noStyle={item.noStyle || false}\r\n >\r\n {item.formRender\r\n ? item.formRender(props)\r\n : getNode(item.type, {\r\n ref: itemRef,\r\n ...props,\r\n })}\r\n </Form.Item>\r\n </Col>\r\n );\r\n } else {\r\n this.fileFormat.push(item.name);\r\n return (\r\n <Col\r\n span={item.span || 12}\r\n key={index}\r\n style={{ display: item.hide ? \"none\" : \"block\" }}\r\n >\r\n <Form.Item\r\n label={item.label}\r\n name={item.name}\r\n rules={item.rules}\r\n allowChars={allowChars}\r\n type={item.props?.type}\r\n required={item.required}\r\n >\r\n <Upload\r\n fileList={this.state.fileList[item.name] || []}\r\n onListChange={(list) => {\r\n const { fileList } = this.state;\r\n this.setState({\r\n fileList: { ...fileList, [item.name]: list },\r\n });\r\n }}\r\n showUploadList={{\r\n showDownloadIcon: true,\r\n showRemoveIcon: label !== \"查看\",\r\n }}\r\n ref={itemRef}\r\n {...props}\r\n >\r\n {item.props?.children\r\n ? item.props?.children\r\n : label !== \"查看\" && <Button>上传文件</Button>}\r\n </Upload>\r\n </Form.Item>\r\n </Col>\r\n );\r\n }\r\n })}\r\n </Row>\r\n );\r\n }\r\n render() {\r\n const {\r\n forms = [],\r\n props = {},\r\n footer = true,\r\n children,\r\n formType = \"page\",\r\n title = \"\",\r\n } = this.props;\r\n const { loading, label } = this.state;\r\n let selfButtons = [] as any;\r\n if (Array.isArray(children)) {\r\n children.map((item: any) => {\r\n typeof item == \"object\" && selfButtons.push(item);\r\n });\r\n } else if (children) {\r\n typeof children == \"object\" && selfButtons.push(children);\r\n }\r\n let modalProps = {\r\n title: label + title,\r\n onOk: this.onSubmit.bind(this),\r\n onCancel: this.hide.bind(this),\r\n okButtonProps: { loading: loading },\r\n centered: true,\r\n width: \"50vw\",\r\n footerButton: selfButtons,\r\n } as any;\r\n\r\n let drawerProps = {\r\n title: label,\r\n onOk: this.onSubmit.bind(this),\r\n onClose: this.hide.bind(this),\r\n width: \"50vw\",\r\n footerButton: selfButtons,\r\n } as any;\r\n if (label == \"查看\") {\r\n modalProps.footer = null;\r\n drawerProps.footer = null;\r\n }\r\n this.dateValueFormat = {};\r\n this.dateFormat = {};\r\n this.fileFormat = [];\r\n let newFormsObj = {} as any;\r\n let formGroups = [] as any;\r\n let otherGrups = [] as any;\r\n let defalutValue = {} as any\r\n //处理表单数据\r\n forms.map((item: any) => {\r\n if (item.groupName && formGroups.indexOf(item.groupName) < 0) {\r\n formGroups.push(item.groupName);\r\n } else if (!item.groupName) {\r\n otherGrups.push(item);\r\n }\r\n });\r\n if (formGroups.length > 0) {\r\n formGroups.map((item: any) => {\r\n let groupForms = [] as any;\r\n forms.map((form: any) => {\r\n if (form.groupName == item) {\r\n groupForms.push(form);\r\n }\r\n });\r\n newFormsObj[item] = groupForms;\r\n });\r\n if (otherGrups.length > 0) {\r\n newFormsObj[\"noGroupName\"] = otherGrups;\r\n }\r\n }\r\n //自定义按钮\r\n return (\r\n <Form\r\n ref={this.formRef}\r\n showModel={this.props.formType == \"page\" ? null : this.props.formType}\r\n modalProps={{ ...modalProps }}\r\n drawerProps={{ ...drawerProps }}\r\n // labelCol={{ flex: \"100px\" }}\r\n // wrapperCol={{ flex: \"15vw\" }}\r\n onValuesChange={(changedValues, allValues) => {\r\n const { onFormChange } = this.props;\r\n onFormChange && onFormChange(changedValues, allValues);\r\n }}\r\n changeValid={this.props.changeValid}\r\n {...props}\r\n >\r\n <div className=\"nsc-form-page\">\r\n {formGroups.length == 0 ? (\r\n this.props.formType !== \"page\" ? (\r\n this.renderForm(forms, label)\r\n ) : (\r\n <div className=\"nsc-form-pane\">\r\n {this.renderForm(forms, label)}\r\n </div>\r\n )\r\n ) : (\r\n Object.keys(newFormsObj).map((key) => {\r\n return (\r\n <div key={key} className=\"nsc-form-pane\">\r\n {key != \"noGroupName\" && (\r\n <div className=\"nsc-form-title\">{key}</div>\r\n )}\r\n <div className=\"nsc-form-content\">\r\n {this.renderForm(newFormsObj[key], label)}\r\n </div>\r\n </div>\r\n );\r\n })\r\n )}\r\n {formType === \"page\" && footer == true && (\r\n <div\r\n className={cls(\r\n \"nsc-form-page-footer\",\r\n [this.state.width ? \"nsc-form-page-footer-width\" : \"\"],\r\n this.props.footerClassName\r\n )}\r\n >\r\n <Button\r\n {...this.props.cancelButtonProps}\r\n onClick={() => {\r\n if (this.props.onCancel) {\r\n this.props.onCancel();\r\n return;\r\n }\r\n this.setState({ loading: false });\r\n }}\r\n >\r\n 取消\r\n </Button>\r\n <Button\r\n type=\"primary\"\r\n {...this.props.okButtonProps}\r\n onClick={() => {\r\n this.onSubmit();\r\n }}\r\n loading={this.state.loading}\r\n className={\"nsc-form-page-footer-btn\"}\r\n >\r\n 保存\r\n </Button>\r\n {selfButtons.map((item: any, index: any) => {\r\n return (\r\n <div className={\"nsc-form-page-footer-btn\"} key={index}>\r\n {item}\r\n </div>\r\n );\r\n })}\r\n </div>\r\n )}\r\n {formType === \"page\" && footer !== true && this.props.footer}\r\n </div>\r\n </Form>\r\n );\r\n }\r\n}\r\n\r\nexport default FormPage;\r\n"],"mappings":"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"}