nsc-react-component 2.8.52 → 2.8.53

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.
@@ -8,6 +8,7 @@ export interface IFormProps extends FormProps {
8
8
  drawerProps?: DrawerProps & {
9
9
  onOk?: any;
10
10
  okButtonProps?: Object;
11
+ formExpand?: Object;
11
12
  };
12
13
  url?: string;
13
14
  encryptFields?: Array<String>;
@@ -384,7 +384,7 @@ var NscForm = /*#__PURE__*/function (_PureComponent) {
384
384
 
385
385
  var modalprops = _objectSpread({}, defaultprops);
386
386
 
387
- modalprops = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, newModalProps), newDrawerProps), defaultprops), {}, {
387
+ modalprops = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, defaultprops), newModalProps), newDrawerProps), {}, {
388
388
  onCancel: this.hide.bind(this) // onClose: this.hide.bind(this),
389
389
 
390
390
  });
@@ -472,4 +472,4 @@ var NscForm = /*#__PURE__*/function (_PureComponent) {
472
472
  }(PureComponent);
473
473
 
474
474
  export default NscForm;
475
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvZm9ybS9Gb3JtLnRzeCJdLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJNb2RhbCIsInJlcXVlc3QiLCJvbWl0IiwiU3BpbiIsIk5zY0Zvcm0iLCJwcm9wcyIsImNyZWF0ZVJlZiIsImZvcm1WaXNpYmxlIiwiZm9ybU1vZGFsUHJvcHMiLCJmb3JtRHJhd2VyUHJvcHMiLCJpc0NoYW5nZSIsImV4cGFuZCIsIm5hbWUiLCJmb3JtUmVmIiwiY3VycmVudCIsImdldEZpZWxkRXJyb3IiLCJnZXRGaWVsZEluc3RhbmNlIiwiZ2V0RmllbGRzRXJyb3IiLCJnZXRGaWVsZHNWYWx1ZSIsImdldEZpZWxkVmFsdWUiLCJpc0ZpZWxkc1RvdWNoZWQiLCJpc0ZpZWxkVG91Y2hlZCIsImlzRmllbGRWYWxpZGF0aW5nIiwicmVzZXRGaWVsZHMiLCJvcHRpb25zIiwic2Nyb2xsVG9GaWVsZCIsImZpbGRzIiwic2V0RmllbGRzIiwidmFsdWVzIiwic2V0RmllbGRzVmFsdWUiLCJzdWJtaXQiLCJ1cmwiLCJjYWxsYmFjayIsIm1zZyIsInByb3BzVXJsIiwiZW5jcnlwdEZpZWxkcyIsImVuY3J5cHRQcm9wcHMiLCJFcnJvciIsIm1ldGhvZCIsInJlcXVlc3RVcmwiLCJyZXF1ZXN0RGF0YSIsInJlcXVlc3RFbmNyeXB0IiwicmVxdWVzdFBhcmFtIiwiZGF0YSIsInBhcmFtcyIsInRvTG93ZXJDYXNlIiwidGhlbiIsInJlcyIsImNvZGUiLCJzdWNjZXNzIiwiZXJyb3IiLCJjYXRjaCIsImNvbnNvbGUiLCJsb2ciLCJ2YWxpZGF0ZUZpZWxkcyIsImUiLCJzaG93TW9kZWwiLCJtb2RhbFByb3BzIiwiZHJhd2VyUHJvcHMiLCJfdGhpcyIsIm9uQ2FuY2VsIiwib25DbG9zZSIsImhpZGVGb3JtIiwicmVzZXRWYWx1ZSIsInNldFN0YXRlIiwidmFsdWUiLCJpdGVtIiwiaW5kZXgiLCJrZXkiLCJjaGlsZHJlbiIsIkFycmF5IiwiaXNBcnJheSIsIkNoaWxkcmVuIiwibWFwIiwiY2hpbGQiLCJjbG9uZUVsZW1lbnQiLCJ2YWwiLCJhbGxWYWwiLCJvblZhbHVlc0NoYW5nZSIsIm5ld0NoaWxkcmVuIiwibG9hZGluZyIsImNoYW5nZVZhbGlkIiwic3RhdGUiLCJsYXlvdXQiLCJsYWJlbENvbCIsInNwYW4iLCJ3cmFwcGVyQ29sIiwibmV3TW9kYWxQcm9wcyIsIm5ld0RyYXdlclByb3BzIiwiZGVmYXVsdHByb3BzIiwibWFza0Nsb3NhYmxlIiwiZm9ybUV4cGFuZCIsInZhbGlkIiwiY2hhbmdlIiwidHlwZSIsIm1vZGFscHJvcHMiLCJoaWRlIiwiYmluZCIsInJlbmRlclBhbmVsIiwibmV4dFByb3BzIiwicHJldlN0YXRlIiwiT2JqZWN0IiwiaXMiLCJuZXdTdGF0ZSIsInZpc2libGUiLCJ1bmRlZmluZWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBT0EsS0FBUCxJQUFnQkMsYUFBaEIsUUFBcUMsT0FBckM7QUFFQSxPQUFPQyxLQUFQLE1BQWtCLFVBQWxCO0FBRUEsU0FBU0MsT0FBVCxRQUF3Qix1QkFBeEI7QUFDQSxPQUFPQyxJQUFQLE1BQWlCLFNBQWpCO0FBRUEsT0FBT0MsSUFBUCxNQUFpQixTQUFqQjs7SUFXTUMsTzs7Ozs7QUFVSixtQkFBWUMsS0FBWixFQUFtQjtBQUFBOztBQUFBOztBQUNqQiwrQkFBTUEsS0FBTjs7QUFEaUIsNEVBVFRQLEtBQUssQ0FBQ1EsU0FBTixFQVNTOztBQUFBLDZEQVJYO0FBQ05DLE1BQUFBLFdBQVcsRUFBRSxLQURQO0FBRU5DLE1BQUFBLGNBQWMsRUFBRSxFQUZWO0FBR05DLE1BQUFBLGVBQWUsRUFBRSxFQUhYO0FBSU5DLE1BQUFBLFFBQVEsRUFBRSxLQUpKO0FBS05DLE1BQUFBLE1BQU0sRUFBRTtBQUxGLEtBUVc7O0FBQUE7QUFFbEI7Ozs7V0Fr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LENBQUNDLEVBQVAsQ0FBVTdGLGVBQVYsRUFBMkJpRCxXQUEzQixDQUFMLEVBQThDO0FBQzVDLGNBQUk2QyxTQUFRLEdBQUc7QUFDYjlGLFlBQUFBLGVBQWUsRUFBRWlEO0FBREosV0FBZjs7QUFHQSxjQUNFLENBQUFBLFdBQVcsU0FBWCxJQUFBQSxXQUFXLFdBQVgsWUFBQUEsV0FBVyxDQUFFOEMsT0FBYixNQUF5QixJQUF6QixJQUNBLENBQUE5QyxXQUFXLFNBQVgsSUFBQUEsV0FBVyxXQUFYLFlBQUFBLFdBQVcsQ0FBRThDLE9BQWIsTUFBeUJDLFNBRjNCLEVBR0U7QUFDQUYsWUFBQUEsU0FBUSxDQUFDaEcsV0FBVCxHQUF1Qm1ELFdBQXZCLGFBQXVCQSxXQUF2Qix1QkFBdUJBLFdBQVcsQ0FBRThDLE9BQXBDO0FBQ0Q7O0FBQ0QsaUJBQU9ELFNBQVA7QUFDRDtBQUNGOztBQUNELGFBQU8sSUFBUDtBQUNEOzs7O0VBNUNtQnhHLGE7O0FBK1V0QixlQUFlSyxPQUFmIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQERlc2NyaXB0dGlvbjrooajljZXnu4Tku7ZcclxuICogQHZlcnNpb246XHJcbiAqIEBBdXRob3I6IHJ4emh1XHJcbiAqIEBEYXRlOiAyMDIxLTA0LTA5IDA5OjE4OjM0XHJcbiAqIEBMYXN0RWRpdG9yczogcnh6aHVcclxuICogQExhc3RFZGl0VGltZTogMjAyMS0wNC0yMyAxNToyMzo1NFxyXG4gKi9cclxuaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgRm9ybSwgRm9ybVByb3BzLCBEcmF3ZXIsIERyYXdlclByb3BzLCBtZXNzYWdlIH0gZnJvbSBcImFudGRcIjtcclxuaW1wb3J0IE1vZGFsIGZyb20gXCIuLi9tb2RhbFwiO1xyXG5pbXBvcnQgeyBGb3JtSW5zdGFuY2UgfSBmcm9tIFwiYW50ZC9saWIvZm9ybVwiO1xyXG5pbXBvcnQgeyByZXF1ZXN0IH0gZnJvbSBcIkBiai1uc2MvbXNuL2xpYi91dGlsc1wiO1xyXG5pbXBvcnQgb21pdCBmcm9tIFwib21pdC5qc1wiO1xyXG5pbXBvcnQgeyBOc2NNb2RhbFBvcnBzIH0gZnJvbSBcIi4uL21vZGFsXCI7XHJcbmltcG9ydCBTcGluIGZyb20gXCIuLi9zcGluXCI7XHJcbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1Qcm9wcyBleHRlbmRzIEZvcm1Qcm9wcyB7XHJcbiAgc2hvd01vZGVsPzogXCJtb2RhbFwiIHwgXCJkcmF3ZXJcIiB8IFwiYXV0b1wiO1xyXG4gIG1vZGFsUHJvcHM/OiBOc2NNb2RhbFBvcnBzO1xyXG4gIGRyYXdlclByb3BzPzogRHJhd2VyUHJvcHMgJiB7IG9uT2s/OiBhbnk7IG9rQnV0dG9uUHJvcHM/OiBPYmplY3QgfTtcclxuICB1cmw/OiBzdHJpbmc7XHJcbiAgZW5jcnlwdEZpZWxkcz86IEFycmF5PFN0cmluZz47XHJcbiAgY2hhbmdlVmFsaWQ/OiBib29sZWFuOyAvL+aVsOaNruS/ruaUueWFs+mXreagoemqjFxyXG4gIGxvYWRpbmc/OiBib29sZWFuOyAvL+ihqOWNleWKoOi9veeKtuaAgVxyXG59XHJcblxyXG5jbGFzcyBOc2NGb3JtIGV4dGVuZHMgUHVyZUNvbXBvbmVudDxJRm9ybVByb3BzPiB7XHJcbiAgZm9ybVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxGb3JtSW5zdGFuY2U+KCk7XHJcbiAgc3RhdGUgPSB7XHJcbiAgICBmb3JtVmlzaWJsZTogZmFsc2UsXHJcbiAgICBmb3JtTW9kYWxQcm9wczoge30sXHJcbiAgICBmb3JtRHJhd2VyUHJvcHM6IHt9LFxyXG4gICAgaXNDaGFuZ2U6IGZhbHNlLFxyXG4gICAgZXhwYW5kOiBmYWxzZSxcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgc3VwZXIocHJvcHMpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhuZXh0UHJvcHMsIHByZXZTdGF0ZSkge1xyXG4gICAgY29uc3QgeyBtb2RhbFByb3BzLCBkcmF3ZXJQcm9wcywgc2hvd01vZGVsIH0gPSBuZXh0UHJvcHM7XHJcbiAgICBjb25zdCB7IGZvcm1Nb2RhbFByb3BzLCBmb3JtRHJhd2VyUHJvcHMgfSA9IHByZXZTdGF0ZTtcclxuICAgIGlmIChzaG93TW9kZWwgPT0gXCJtb2RhbFwiKSB7XHJcbiAgICAgIC8vIEpTT04uc3RyaW5naWZ5KGZvcm1Nb2RhbFByb3BzKSAhPT0gSlNPTi5zdHJpbmdpZnkobW9kYWxQcm9wcylcclxuICAgICAgaWYgKCFPYmplY3QuaXMoZm9ybU1vZGFsUHJvcHMsIG1vZGFsUHJvcHMpKSB7XHJcbiAgICAgICAgbGV0IG5ld1N0YXRlID0ge1xyXG4gICAgICAgICAgZm9ybURyYXdlclByb3BzOiBtb2RhbFByb3BzLFxyXG4gICAgICAgIH0gYXMgYW55O1xyXG4gICAgICAgIGlmIChtb2RhbFByb3BzPy52aXNpYmxlICE9PSBudWxsICYmIG1vZGFsUHJvcHM/LnZpc2libGUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgbmV3U3RhdGUuZm9ybVZpc2libGUgPSBtb2RhbFByb3BzPy52aXNpYmxlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbmV3U3RhdGU7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoc2hvd01vZGVsID09IFwiZHJhd2VyXCIpIHtcclxuICAgICAgLy8gSlNPTi5zdHJpbmdpZnkoZm9ybURyYXdlclByb3BzKSAhPT0gSlNPTi5zdHJpbmdpZnkoZHJhd2VyUHJvcHMpXHJcbiAgICAgIGlmICghT2JqZWN0LmlzKGZvcm1EcmF3ZXJQcm9wcywgZHJhd2VyUHJvcHMpKSB7XHJcbiAgICAgICAgbGV0IG5ld1N0YXRlID0ge1xyXG4gICAgICAgICAgZm9ybURyYXdlclByb3BzOiBkcmF3ZXJQcm9wcyxcclxuICAgICAgICB9IGFzIGFueTtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBkcmF3ZXJQcm9wcz8udmlzaWJsZSAhPT0gbnVsbCAmJlxyXG4gICAgICAgICAgZHJhd2VyUHJvcHM/LnZpc2libGUgIT09IHVuZGVmaW5lZFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgbmV3U3RhdGUuZm9ybVZpc2libGUgPSBkcmF3ZXJQcm9wcz8udmlzaWJsZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5ld1N0YXRlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8v6I635Y+W5a+55bqU5a2X5q615ZCN55qE6ZSZ6K+v5L+h5oGvXHJcbiAgZ2V0RmllbGRFcnJvcihuYW1lKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmdldEZpZWxkRXJyb3IobmFtZSk7XHJcbiAgfVxyXG5cclxuICAvL+iOt+WPluWvueW6lOWtl+auteWunuS+i1xyXG4gIGdldEZpZWxkSW5zdGFuY2UobmFtZSkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5nZXRGaWVsZEluc3RhbmNlKG5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLy/ojrflj5bkuIDnu4TlrZfmrrXlkI3lr7nlupTnmoTplJnor6/kv6Hmga/vvIzov5Tlm57kuLrmlbDnu4TlvaLlvI9cclxuICBnZXRGaWVsZHNFcnJvcigpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1SZWYuY3VycmVudD8uZ2V0RmllbGRzRXJyb3IoKTtcclxuICB9XHJcblxyXG4gIC8v6I635Y+W5LiA57uE5a2X5q615ZCN5a+55bqU55qE5YC877yM5Lya5oyJ54Wn5a+55bqU57uT5p6E6L+U5ZueXHJcbiAgZ2V0RmllbGRzVmFsdWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmdldEZpZWxkc1ZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICAvL+iOt+WPluWvueW6lOWtl+auteWQjeeahOWAvFxyXG4gIGdldEZpZWxkVmFsdWUobmFtZSkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5nZXRGaWVsZFZhbHVlKG5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLy/mo4Dmn6XkuIDnu4TlrZfmrrXmmK/lkKbooqvnlKjmiLfmk43kvZzov4dcclxuICBpc0ZpZWxkc1RvdWNoZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmlzRmllbGRzVG91Y2hlZCgpO1xyXG4gIH1cclxuXHJcbiAgLy/mo4Dmn6Xlr7nlupTlrZfmrrXmmK/lkKbooqvnlKjmiLfmk43kvZzov4dcclxuICBpc0ZpZWxkVG91Y2hlZChuYW1lKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmlzRmllbGRUb3VjaGVkKG5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLy/mo4Dmn6XkuIDnu4TlrZfmrrXmmK/lkKbmraPlnKjmoKHpqoxcclxuICBpc0ZpZWxkVmFsaWRhdGluZyhuYW1lKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmlzRmllbGRWYWxpZGF0aW5nKG5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLy/ph43nva7kuIDnu4TlrZfmrrXliLBcclxuICByZXNldEZpZWxkcygpIHtcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5yZXNldEZpZWxkcygpO1xyXG4gIH1cclxuXHJcbiAgc2Nyb2xsVG9GaWVsZChuYW1lLCBvcHRpb25zKSB7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2Nyb2xsVG9GaWVsZChuYW1lLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIHNldEZpZWxkcyhmaWxkcykge1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnNldEZpZWxkcyhmaWxkcyk7XHJcbiAgfVxyXG5cclxuICBzZXRGaWVsZHNWYWx1ZSh2YWx1ZXMpIHtcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5zZXRGaWVsZHNWYWx1ZSh2YWx1ZXMpO1xyXG4gIH1cclxuXHJcbiAgc3VibWl0KCkge1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnN1Ym1pdCgpO1xyXG4gIH1cclxuXHJcbiAgb25TdWJtaXQoXHJcbiAgICB1cmw/OiBzdHJpbmcsXHJcbiAgICBvcHRpb25zPzogYW55LFxyXG4gICAgY2FsbGJhY2s/OiAocmVzPzogYW55KSA9PiB2b2lkLFxyXG4gICAgbXNnPzogYm9vbGVhblxyXG4gICkge1xyXG4gICAgY29uc3QgeyB1cmw6IHByb3BzVXJsLCBlbmNyeXB0RmllbGRzOiBlbmNyeXB0UHJvcHBzID0gW10gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIXVybCAmJiAhcHJvcHNVcmwpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwi5rKh5pyJ5LiK5Lyg55qEdXJsIVwiKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgbWV0aG9kID0gXCJwb3N0XCIgfSA9IG9wdGlvbnM7XHJcbiAgICBsZXQgcmVxdWVzdFVybCA9IHVybCA/IHVybCA6IHByb3BzVXJsO1xyXG4gICAgbGV0IHJlcXVlc3REYXRhID0gdGhpcy5mb3JtUmVmLmN1cnJlbnQuZ2V0RmllbGRzVmFsdWUoKTtcclxuICAgIGxldCByZXF1ZXN0RW5jcnlwdCA9IGVuY3J5cHRQcm9wcHM7XHJcbiAgICBsZXQgcmVxdWVzdFBhcmFtID0geyBtZXRob2Q6IG1ldGhvZCwgZGF0YTogcmVxdWVzdERhdGEgfSBhcyB7IGRhdGE6IGFueSB9O1xyXG4gICAgaWYgKG9wdGlvbnMpIHtcclxuICAgICAgY29uc3QgeyBkYXRhLCBlbmNyeXB0RmllbGRzLCAuLi5wYXJhbXMgfSA9IG9wdGlvbnM7XHJcbiAgICAgIHJlcXVlc3RQYXJhbSA9IHsgLi4ucmVxdWVzdFBhcmFtLCAuLi5wYXJhbXMgfTtcclxuICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICBkZWxldGUgcmVxdWVzdFBhcmFtLmRhdGE7XHJcbiAgICAgICAgaWYgKG1ldGhvZC50b0xvd2VyQ2FzZSgpID09IFwiZ2V0XCIpIHtcclxuICAgICAgICAgIHJlcXVlc3RQYXJhbSA9IHsgLi4ucmVxdWVzdFBhcmFtLCAuLi5wYXJhbXMsIHBhcmFtczogZGF0YSB9O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXF1ZXN0UGFyYW0gPSB7IC4uLnJlcXVlc3RQYXJhbSwgLi4ucGFyYW1zLCBkYXRhOiBkYXRhIH07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChlbmNyeXB0RmllbGRzKSB7XHJcbiAgICAgICAgcmVxdWVzdEVuY3J5cHQgPSBlbmNyeXB0RmllbGRzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmVxdWVzdChyZXF1ZXN0VXJsLCB7XHJcbiAgICAgIC4uLnJlcXVlc3RQYXJhbSxcclxuICAgICAgZW5jcnlwdEZpZWxkczogcmVxdWVzdEVuY3J5cHQsXHJcbiAgICB9KVxyXG4gICAgICAudGhlbihmdW5jdGlvbiAocmVzOiBhbnkpIHtcclxuICAgICAgICBjb25zdCB7IGNvZGUgfSA9IHJlcztcclxuICAgICAgICBpZiAobXNnKSB7XHJcbiAgICAgICAgICBpZiAoY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgIG1lc3NhZ2Uuc3VjY2VzcyhcIuaPkOS6pOaIkOWKn1wiKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG1lc3NhZ2UuZXJyb3IoXCLmj5DkuqTlpLHotKVcIik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhbGxiYWNrICYmIGNhbGxiYWNrKHJlcyk7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3I6IGFueSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIiwgZXJyb3IpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlRmllbGRzKG5hbWUpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1SZWYuY3VycmVudC52YWxpZGF0ZUZpZWxkcyhuYW1lKTtcclxuICB9XHJcblxyXG4gIGhpZGUoZSkge1xyXG4gICAgY29uc3QgeyBzaG93TW9kZWwsIG1vZGFsUHJvcHMgPSB7fSwgZHJhd2VyUHJvcHMgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBjb25zdCB7IG9uQ2FuY2VsIH0gPSBtb2RhbFByb3BzO1xyXG4gICAgY29uc3QgeyBvbkNsb3NlIH0gPSBkcmF3ZXJQcm9wcztcclxuICAgIGlmIChzaG93TW9kZWwgPT0gXCJkcmF3ZXJcIiAmJiBvbkNsb3NlKSB7XHJcbiAgICAgIG9uQ2xvc2UoZSk7XHJcbiAgICB9IGVsc2UgaWYgKHNob3dNb2RlbCA9PSBcIm1vZGFsXCIgJiYgb25DYW5jZWwpIHtcclxuICAgICAgb25DYW5jZWwoZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBfdGhpcy5oaWRlRm9ybSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGlkZUZvcm0ocmVzZXRWYWx1ZSA9IHRydWUpIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoXHJcbiAgICAgIHtcclxuICAgICAgICBmb3JtVmlzaWJsZTogZmFsc2UsXHJcbiAgICAgICAgaXNDaGFuZ2U6IGZhbHNlLFxyXG4gICAgICB9LFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc2V0VmFsdWUpIHtcclxuICAgICAgICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5yZXNldEZpZWxkcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHNob3dGb3JtKHZhbHVlPzogYW55LCByZXNldFZhbHVlID0gdHJ1ZSkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZShcclxuICAgICAge1xyXG4gICAgICAgIGZvcm1WaXNpYmxlOiB0cnVlLFxyXG4gICAgICAgIGlzQ2hhbmdlOiBmYWxzZSxcclxuICAgICAgfSxcclxuICAgICAgKCkgPT4ge1xyXG4gICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnNldEZpZWxkc1ZhbHVlKHZhbHVlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKHJlc2V0VmFsdWUpIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5yZXNldEZpZWxkcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGNsb25lRWxlbWVudChpdGVtLCBpbmRleCA9IDApIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBpZiAodHlwZW9mIGl0ZW0gPT0gXCJzdHJpbmdcIikgcmV0dXJuIGl0ZW07XHJcbiAgICBsZXQgcHJvcHMgPSB7fSBhcyB7IGtleTogbnVtYmVyOyBjaGlsZHJlbjogYW55IH07XHJcbiAgICBwcm9wcy5rZXkgPSBpbmRleDtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChpdGVtLnByb3BzICYmIGl0ZW0ucHJvcHMuY2hpbGRyZW4pIHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtLnByb3BzLmNoaWxkcmVuKSkge1xyXG4gICAgICAgICAgcHJvcHMuY2hpbGRyZW4gPSBSZWFjdC5DaGlsZHJlbi5tYXAoXHJcbiAgICAgICAgICAgIGl0ZW0ucHJvcHMuY2hpbGRyZW4sXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIChjaGlsZCwgaW5kZXgpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gX3RoaXMuY2xvbmVFbGVtZW50KGNoaWxkLCBpbmRleCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHByb3BzLmNoaWxkcmVuID0gdGhpcy5jbG9uZUVsZW1lbnQoaXRlbS5wcm9wcy5jaGlsZHJlbiwgMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBSZWFjdC5jbG9uZUVsZW1lbnQoaXRlbSwgcHJvcHMpO1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcbiAgb25WYWx1ZXNDaGFuZ2UodmFsLCBhbGxWYWwpIHtcclxuICAgIGNvbnN0IHsgb25WYWx1ZXNDaGFuZ2UgfSA9IHRoaXMucHJvcHM7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgaXNDaGFuZ2U6IHRydWUsXHJcbiAgICB9KTtcclxuICAgIG9uVmFsdWVzQ2hhbmdlICYmIG9uVmFsdWVzQ2hhbmdlKHZhbCwgYWxsVmFsKTtcclxuICB9XHJcbiAgcmVuZGVyUGFuZWwobmV3Q2hpbGRyZW4sIHByb3BzKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHNob3dNb2RlbCxcclxuICAgICAgZHJhd2VyUHJvcHMgPSB7fSxcclxuICAgICAgbW9kYWxQcm9wcyA9IHt9LFxyXG4gICAgICBsb2FkaW5nID0gZmFsc2UsXHJcbiAgICAgIGNoYW5nZVZhbGlkID0gdHJ1ZSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBmb3JtVmlzaWJsZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IGxheW91dCA9IHtcclxuICAgICAgbGFiZWxDb2w6IHsgc3BhbjogNCB9LFxyXG4gICAgICB3cmFwcGVyQ29sOiB7IHNwYW46IDIwIH0sXHJcbiAgICB9O1xyXG4gICAgaWYgKHNob3dNb2RlbCkge1xyXG4gICAgICBsZXQgbmV3TW9kYWxQcm9wcyA9IG9taXQobW9kYWxQcm9wcywgW1widmlzaWJsZVwiXSk7XHJcbiAgICAgIG5ld01vZGFsUHJvcHMgPSB7IC4uLm5ld01vZGFsUHJvcHMgfTtcclxuICAgICAgbGV0IG5ld0RyYXdlclByb3BzID0gb21pdChkcmF3ZXJQcm9wcywgW1widmlzaWJsZVwiXSk7XHJcbiAgICAgIGxldCBkZWZhdWx0cHJvcHMgPSB7XHJcbiAgICAgICAgbWFza0Nsb3NhYmxlOiAhdGhpcy5zdGF0ZS5pc0NoYW5nZSxcclxuICAgICAgICBmb3JtRXhwYW5kOiB7XHJcbiAgICAgICAgICBleHBhbmQ6IHRydWUsXHJcbiAgICAgICAgICB2YWxpZDogY2hhbmdlVmFsaWQsXHJcbiAgICAgICAgICBjaGFuZ2U6IHRoaXMuc3RhdGUuaXNDaGFuZ2UsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB0eXBlOiBzaG93TW9kZWwsXHJcbiAgICAgIH0gYXMgYW55O1xyXG4gICAgICBsZXQgbW9kYWxwcm9wcyA9IHsgLi4uZGVmYXVsdHByb3BzIH07XHJcbiAgICAgIG1vZGFscHJvcHMgPSB7XHJcbiAgICAgICAgLi4ubmV3TW9kYWxQcm9wcyxcclxuICAgICAgICAuLi5uZXdEcmF3ZXJQcm9wcyxcclxuICAgICAgICAuLi5kZWZhdWx0cHJvcHMsXHJcbiAgICAgICAgb25DYW5jZWw6IHRoaXMuaGlkZS5iaW5kKHRoaXMpLFxyXG4gICAgICAgIC8vIG9uQ2xvc2U6IHRoaXMuaGlkZS5iaW5kKHRoaXMpLFxyXG4gICAgICB9O1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIDxNb2RhbCB2aXNpYmxlPXtmb3JtVmlzaWJsZX0gey4uLm1vZGFscHJvcHN9PlxyXG4gICAgICAgICAge2xvYWRpbmcgPyAoXHJcbiAgICAgICAgICAgIDxTcGluIHNwaW5uaW5nPXtsb2FkaW5nfT5cclxuICAgICAgICAgICAgICA8Rm9ybVxyXG4gICAgICAgICAgICAgICAgcmVmPXt0aGlzLmZvcm1SZWZ9XHJcbiAgICAgICAgICAgICAgICB2YWxpZGF0ZVRyaWdnZXI9e1tcIm9uQmx1clwiLCBcIm9uQ2hhbmdlXCJdfVxyXG4gICAgICAgICAgICAgICAgey4uLmxheW91dH1cclxuICAgICAgICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICAgICAgICAgIG9uVmFsdWVzQ2hhbmdlPXt0aGlzLm9uVmFsdWVzQ2hhbmdlLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICBwcmVzZXJ2ZT17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9TcGluPlxyXG4gICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgPEZvcm1cclxuICAgICAgICAgICAgICByZWY9e3RoaXMuZm9ybVJlZn1cclxuICAgICAgICAgICAgICB2YWxpZGF0ZVRyaWdnZXI9e1tcIm9uQmx1clwiLCBcIm9uQ2hhbmdlXCJdfVxyXG4gICAgICAgICAgICAgIHsuLi5sYXlvdXR9XHJcbiAgICAgICAgICAgICAgey4uLnByb3BzfVxyXG4gICAgICAgICAgICAgIG9uVmFsdWVzQ2hhbmdlPXt0aGlzLm9uVmFsdWVzQ2hhbmdlLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgcHJlc2VydmU9e2ZhbHNlfVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICA8L01vZGFsPlxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8PlxyXG4gICAgICAgICAge2xvYWRpbmcgPyAoXHJcbiAgICAgICAgICAgIDxTcGluIHNwaW5uaW5nPXtsb2FkaW5nfT5cclxuICAgICAgICAgICAgICA8Rm9ybVxyXG4gICAgICAgICAgICAgICAgcmVmPXt0aGlzLmZvcm1SZWZ9XHJcbiAgICAgICAgICAgICAgICB2YWxpZGF0ZVRyaWdnZXI9e1tcIm9uQmx1clwiLCBcIm9uQ2hhbmdlXCJdfVxyXG4gICAgICAgICAgICAgICAgey4uLmxheW91dH1cclxuICAgICAgICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICAgICAgICAgIG9uVmFsdWVzQ2hhbmdlPXt0aGlzLm9uVmFsdWVzQ2hhbmdlLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9TcGluPlxyXG4gICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgPEZvcm1cclxuICAgICAgICAgICAgICByZWY9e3RoaXMuZm9ybVJlZn1cclxuICAgICAgICAgICAgICB2YWxpZGF0ZVRyaWdnZXI9e1tcIm9uQmx1clwiLCBcIm9uQ2hhbmdlXCJdfVxyXG4gICAgICAgICAgICAgIHsuLi5sYXlvdXR9XHJcbiAgICAgICAgICAgICAgey4uLnByb3BzfVxyXG4gICAgICAgICAgICAgIG9uVmFsdWVzQ2hhbmdlPXt0aGlzLm9uVmFsdWVzQ2hhbmdlLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgIDwvPlxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCBwcm9wcyA9IG9taXQodGhpcy5wcm9wcywgW1xyXG4gICAgICBcImZvcm1cIixcclxuICAgICAgXCJzaG93TW9kZWxcIixcclxuICAgICAgXCJtb2RhbFByb3BzXCIsXHJcbiAgICAgIFwiZHJhd2VyUHJvcHNcIixcclxuICAgICAgXCJ1cmxcIixcclxuICAgICAgXCJlbmNyeXB0RmllbGRzXCIsXHJcbiAgICAgIFwiY2hhbmdlVmFsaWRcIixcclxuICAgIF0pO1xyXG5cclxuICAgIHJldHVybiA8Pnt0aGlzLnJlbmRlclBhbmVsKHByb3BzLmNoaWxkcmVuLCBwcm9wcyl9PC8+O1xyXG4gIH1cclxufVxyXG5leHBvcnQgZGVmYXVsdCBOc2NGb3JtO1xyXG4iXX0=
475
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvZm9ybS9Gb3JtLnRzeCJdLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJNb2RhbCIsInJlcXVlc3QiLCJvbWl0IiwiU3BpbiIsIk5zY0Zvcm0iLCJwcm9wcyIsImNyZWF0ZVJlZiIsImZvcm1WaXNpYmxlIiwiZm9ybU1vZGFsUHJvcHMiLCJmb3JtRHJhd2VyUHJvcHMiLCJpc0NoYW5nZSIsImV4cGFuZCIsIm5hbWUiLCJmb3JtUmVmIiwiY3VycmVudCIsImdldEZpZWxkRXJyb3IiLCJnZXRGaWVsZEluc3RhbmNlIiwiZ2V0RmllbGRzRXJyb3IiLCJnZXRGaWVsZHNWYWx1ZSIsImdldEZpZWxkVmFsdWUiLCJpc0ZpZWxkc1RvdWNoZWQiLCJpc0ZpZWxkVG91Y2hlZCIsImlzRmllbGRWYWxpZGF0aW5nIiwicmVzZXRGaWVsZHMiLCJvcHRpb25zIiwic2Nyb2xsVG9GaWVsZCIsImZpbGRzIiwic2V0RmllbGRzIiwidmFsdWVzIiwic2V0RmllbGRzVmFsdWUiLCJzdWJtaXQiLCJ1cmwiLCJjYWxsYmFjayIsIm1zZyIsInByb3BzVXJsIiwiZW5jcnlwdEZpZWxkcyIsImVuY3J5cHRQcm9wcHMiLCJFcnJvciIsIm1ldGhvZCIsInJlcXVlc3RVcmwiLCJyZXF1ZXN0RGF0YSIsInJlcXVlc3RFbmNyeXB0IiwicmVxdWVzdFBhcmFtIiwiZGF0YSIsInBhcmFtcyIsInRvTG93ZXJDYXNlIiwidGhlbiIsInJlcyIsImNvZGUiLCJzdWNjZXNzIiwiZXJyb3IiLCJjYXRjaCIsImNvbnNvbGUiLCJsb2ciLCJ2YWxpZGF0ZUZpZWxkcyIsImUiLCJzaG93TW9kZWwiLCJtb2RhbFByb3BzIiwiZHJhd2VyUHJvcHMiLCJfdGhpcyIsIm9uQ2FuY2VsIiwib25DbG9zZSIsImhpZGVGb3JtIiwicmVzZXRWYWx1ZSIsInNldFN0YXRlIiwidmFsdWUiLCJpdGVtIiwiaW5kZXgiLCJrZXkiLCJjaGlsZHJlbiIsIkFycmF5IiwiaXNBcnJheSIsIkNoaWxkcmVuIiwibWFwIiwiY2hpbGQiLCJjbG9uZUVsZW1lbnQiLCJ2YWwiLCJhbGxWYWwiLCJvblZhbHVlc0NoYW5nZSIsIm5ld0NoaWxkcmVuIiwibG9hZGluZyIsImNoYW5nZVZhbGlkIiwic3RhdGUiLCJsYXlvdXQiLCJsYWJlbENvbCIsInNwYW4iLCJ3cmFwcGVyQ29sIiwibmV3TW9kYWxQcm9wcyIsIm5ld0RyYXdlclByb3BzIiwiZGVmYXVsdHByb3BzIiwibWFza0Nsb3NhYmxlIiwiZm9ybUV4cGFuZCIsInZhbGlkIiwiY2hhbmdlIiwidHlwZSIsIm1vZGFscHJvcHMiLCJoaWRlIiwiYmluZCIsInJlbmRlclBhbmVsIiwibmV4dFByb3BzIiwicHJldlN0YXRlIiwiT2JqZWN0IiwiaXMiLCJuZXdTdGF0ZSIsInZpc2libGUiLCJ1bmRlZmluZWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBT0EsS0FBUCxJQUFnQkMsYUFBaEIsUUFBcUMsT0FBckM7QUFFQSxPQUFPQyxLQUFQLE1BQWtCLFVBQWxCO0FBRUEsU0FBU0MsT0FBVCxRQUF3Qix1QkFBeEI7QUFDQSxPQUFPQyxJQUFQLE1BQWlCLFNBQWpCO0FBRUEsT0FBT0MsSUFBUCxNQUFpQixTQUFqQjs7SUFXTUMsTzs7Ozs7QUFVSixtQkFBWUMsS0FBWixFQUFtQjtBQUFBOztBQUFBOztBQUNqQiwrQkFBTUEsS0FBTjs7QUFEaUIsNEVBVFRQLEtBQUssQ0FBQ1EsU0FBTixFQVNTOztBQUFBLDZEQVJYO0FBQ05DLE1BQUFBLFdBQVcsRUFBRSxLQURQO0FBRU5DLE1BQUFBLGNBQWMsRUFBRSxFQUZWO0FBR05DLE1BQUFBLGVBQWUsRUFBRSxFQUhYO0FBSU5DLE1BQUFBLFFBQVEsRUFBRSxLQUpKO0FBS05DLE1BQUFBLE1BQU0sRUFBRTtBQUxGLEtBUVc7O0FBQUE7QUFFbEI7Ozs7V0Fr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LENBQUNDLEVBQVAsQ0FBVTdGLGVBQVYsRUFBMkJpRCxXQUEzQixDQUFMLEVBQThDO0FBQzVDLGNBQUk2QyxTQUFRLEdBQUc7QUFDYjlGLFlBQUFBLGVBQWUsRUFBRWlEO0FBREosV0FBZjs7QUFHQSxjQUNFLENBQUFBLFdBQVcsU0FBWCxJQUFBQSxXQUFXLFdBQVgsWUFBQUEsV0FBVyxDQUFFOEMsT0FBYixNQUF5QixJQUF6QixJQUNBLENBQUE5QyxXQUFXLFNBQVgsSUFBQUEsV0FBVyxXQUFYLFlBQUFBLFdBQVcsQ0FBRThDLE9BQWIsTUFBeUJDLFNBRjNCLEVBR0U7QUFDQUYsWUFBQUEsU0FBUSxDQUFDaEcsV0FBVCxHQUF1Qm1ELFdBQXZCLGFBQXVCQSxXQUF2Qix1QkFBdUJBLFdBQVcsQ0FBRThDLE9BQXBDO0FBQ0Q7O0FBQ0QsaUJBQU9ELFNBQVA7QUFDRDtBQUNGOztBQUNELGFBQU8sSUFBUDtBQUNEOzs7O0VBNUNtQnhHLGE7O0FBK1V0QixlQUFlSyxPQUFmIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQERlc2NyaXB0dGlvbjrooajljZXnu4Tku7ZcclxuICogQHZlcnNpb246XHJcbiAqIEBBdXRob3I6IHJ4emh1XHJcbiAqIEBEYXRlOiAyMDIxLTA0LTA5IDA5OjE4OjM0XHJcbiAqIEBMYXN0RWRpdG9yczogcnh6aHVcclxuICogQExhc3RFZGl0VGltZTogMjAyMS0wNC0yMyAxNToyMzo1NFxyXG4gKi9cclxuaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgRm9ybSwgRm9ybVByb3BzLCBEcmF3ZXIsIERyYXdlclByb3BzLCBtZXNzYWdlIH0gZnJvbSBcImFudGRcIjtcclxuaW1wb3J0IE1vZGFsIGZyb20gXCIuLi9tb2RhbFwiO1xyXG5pbXBvcnQgeyBGb3JtSW5zdGFuY2UgfSBmcm9tIFwiYW50ZC9saWIvZm9ybVwiO1xyXG5pbXBvcnQgeyByZXF1ZXN0IH0gZnJvbSBcIkBiai1uc2MvbXNuL2xpYi91dGlsc1wiO1xyXG5pbXBvcnQgb21pdCBmcm9tIFwib21pdC5qc1wiO1xyXG5pbXBvcnQgeyBOc2NNb2RhbFBvcnBzIH0gZnJvbSBcIi4uL21vZGFsXCI7XHJcbmltcG9ydCBTcGluIGZyb20gXCIuLi9zcGluXCI7XHJcbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1Qcm9wcyBleHRlbmRzIEZvcm1Qcm9wcyB7XHJcbiAgc2hvd01vZGVsPzogXCJtb2RhbFwiIHwgXCJkcmF3ZXJcIiB8IFwiYXV0b1wiO1xyXG4gIG1vZGFsUHJvcHM/OiBOc2NNb2RhbFBvcnBzO1xyXG4gIGRyYXdlclByb3BzPzogRHJhd2VyUHJvcHMgJiB7IG9uT2s/OiBhbnk7IG9rQnV0dG9uUHJvcHM/OiBPYmplY3Q7Zm9ybUV4cGFuZD86T2JqZWN0IH07XHJcbiAgdXJsPzogc3RyaW5nO1xyXG4gIGVuY3J5cHRGaWVsZHM/OiBBcnJheTxTdHJpbmc+O1xyXG4gIGNoYW5nZVZhbGlkPzogYm9vbGVhbjsgLy/mlbDmja7kv67mlLnlhbPpl63moKHpqoxcclxuICBsb2FkaW5nPzogYm9vbGVhbjsgLy/ooajljZXliqDovb3nirbmgIFcclxufVxyXG5cclxuY2xhc3MgTnNjRm9ybSBleHRlbmRzIFB1cmVDb21wb25lbnQ8SUZvcm1Qcm9wcz4ge1xyXG4gIGZvcm1SZWYgPSBSZWFjdC5jcmVhdGVSZWY8Rm9ybUluc3RhbmNlPigpO1xyXG4gIHN0YXRlID0ge1xyXG4gICAgZm9ybVZpc2libGU6IGZhbHNlLFxyXG4gICAgZm9ybU1vZGFsUHJvcHM6IHt9LFxyXG4gICAgZm9ybURyYXdlclByb3BzOiB7fSxcclxuICAgIGlzQ2hhbmdlOiBmYWxzZSxcclxuICAgIGV4cGFuZDogZmFsc2UsXHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgIHN1cGVyKHByb3BzKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMobmV4dFByb3BzLCBwcmV2U3RhdGUpIHtcclxuICAgIGNvbnN0IHsgbW9kYWxQcm9wcywgZHJhd2VyUHJvcHMsIHNob3dNb2RlbCB9ID0gbmV4dFByb3BzO1xyXG4gICAgY29uc3QgeyBmb3JtTW9kYWxQcm9wcywgZm9ybURyYXdlclByb3BzIH0gPSBwcmV2U3RhdGU7XHJcbiAgICBpZiAoc2hvd01vZGVsID09IFwibW9kYWxcIikge1xyXG4gICAgICAvLyBKU09OLnN0cmluZ2lmeShmb3JtTW9kYWxQcm9wcykgIT09IEpTT04uc3RyaW5naWZ5KG1vZGFsUHJvcHMpXHJcbiAgICAgIGlmICghT2JqZWN0LmlzKGZvcm1Nb2RhbFByb3BzLCBtb2RhbFByb3BzKSkge1xyXG4gICAgICAgIGxldCBuZXdTdGF0ZSA9IHtcclxuICAgICAgICAgIGZvcm1EcmF3ZXJQcm9wczogbW9kYWxQcm9wcyxcclxuICAgICAgICB9IGFzIGFueTtcclxuICAgICAgICBpZiAobW9kYWxQcm9wcz8udmlzaWJsZSAhPT0gbnVsbCAmJiBtb2RhbFByb3BzPy52aXNpYmxlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIG5ld1N0YXRlLmZvcm1WaXNpYmxlID0gbW9kYWxQcm9wcz8udmlzaWJsZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5ld1N0YXRlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHNob3dNb2RlbCA9PSBcImRyYXdlclwiKSB7XHJcbiAgICAgIC8vIEpTT04uc3RyaW5naWZ5KGZvcm1EcmF3ZXJQcm9wcykgIT09IEpTT04uc3RyaW5naWZ5KGRyYXdlclByb3BzKVxyXG4gICAgICBpZiAoIU9iamVjdC5pcyhmb3JtRHJhd2VyUHJvcHMsIGRyYXdlclByb3BzKSkge1xyXG4gICAgICAgIGxldCBuZXdTdGF0ZSA9IHtcclxuICAgICAgICAgIGZvcm1EcmF3ZXJQcm9wczogZHJhd2VyUHJvcHMsXHJcbiAgICAgICAgfSBhcyBhbnk7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgZHJhd2VyUHJvcHM/LnZpc2libGUgIT09IG51bGwgJiZcclxuICAgICAgICAgIGRyYXdlclByb3BzPy52aXNpYmxlICE9PSB1bmRlZmluZWRcclxuICAgICAgICApIHtcclxuICAgICAgICAgIG5ld1N0YXRlLmZvcm1WaXNpYmxlID0gZHJhd2VyUHJvcHM/LnZpc2libGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZXdTdGF0ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvL+iOt+WPluWvueW6lOWtl+auteWQjeeahOmUmeivr+S/oeaBr1xyXG4gIGdldEZpZWxkRXJyb3IobmFtZSkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5nZXRGaWVsZEVycm9yKG5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLy/ojrflj5blr7nlupTlrZfmrrXlrp7kvotcclxuICBnZXRGaWVsZEluc3RhbmNlKG5hbWUpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1SZWYuY3VycmVudD8uZ2V0RmllbGRJbnN0YW5jZShuYW1lKTtcclxuICB9XHJcblxyXG4gIC8v6I635Y+W5LiA57uE5a2X5q615ZCN5a+55bqU55qE6ZSZ6K+v5L+h5oGv77yM6L+U5Zue5Li65pWw57uE5b2i5byPXHJcbiAgZ2V0RmllbGRzRXJyb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmdldEZpZWxkc0Vycm9yKCk7XHJcbiAgfVxyXG5cclxuICAvL+iOt+WPluS4gOe7hOWtl+auteWQjeWvueW6lOeahOWAvO+8jOS8muaMieeFp+WvueW6lOe7k+aehOi/lOWbnlxyXG4gIGdldEZpZWxkc1ZhbHVlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5nZXRGaWVsZHNWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgLy/ojrflj5blr7nlupTlrZfmrrXlkI3nmoTlgLxcclxuICBnZXRGaWVsZFZhbHVlKG5hbWUpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1SZWYuY3VycmVudD8uZ2V0RmllbGRWYWx1ZShuYW1lKTtcclxuICB9XHJcblxyXG4gIC8v5qOA5p+l5LiA57uE5a2X5q615piv5ZCm6KKr55So5oi35pON5L2c6L+HXHJcbiAgaXNGaWVsZHNUb3VjaGVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5pc0ZpZWxkc1RvdWNoZWQoKTtcclxuICB9XHJcblxyXG4gIC8v5qOA5p+l5a+55bqU5a2X5q615piv5ZCm6KKr55So5oi35pON5L2c6L+HXHJcbiAgaXNGaWVsZFRvdWNoZWQobmFtZSkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5pc0ZpZWxkVG91Y2hlZChuYW1lKTtcclxuICB9XHJcblxyXG4gIC8v5qOA5p+l5LiA57uE5a2X5q615piv5ZCm5q2j5Zyo5qCh6aqMXHJcbiAgaXNGaWVsZFZhbGlkYXRpbmcobmFtZSkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5pc0ZpZWxkVmFsaWRhdGluZyhuYW1lKTtcclxuICB9XHJcblxyXG4gIC8v6YeN572u5LiA57uE5a2X5q615YiwXHJcbiAgcmVzZXRGaWVsZHMoKSB7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8ucmVzZXRGaWVsZHMoKTtcclxuICB9XHJcblxyXG4gIHNjcm9sbFRvRmllbGQobmFtZSwgb3B0aW9ucykge1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnNjcm9sbFRvRmllbGQobmFtZSwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBzZXRGaWVsZHMoZmlsZHMpIHtcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5zZXRGaWVsZHMoZmlsZHMpO1xyXG4gIH1cclxuXHJcbiAgc2V0RmllbGRzVmFsdWUodmFsdWVzKSB7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2V0RmllbGRzVmFsdWUodmFsdWVzKTtcclxuICB9XHJcblxyXG4gIHN1Ym1pdCgpIHtcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5zdWJtaXQoKTtcclxuICB9XHJcblxyXG4gIG9uU3VibWl0KFxyXG4gICAgdXJsPzogc3RyaW5nLFxyXG4gICAgb3B0aW9ucz86IGFueSxcclxuICAgIGNhbGxiYWNrPzogKHJlcz86IGFueSkgPT4gdm9pZCxcclxuICAgIG1zZz86IGJvb2xlYW5cclxuICApIHtcclxuICAgIGNvbnN0IHsgdXJsOiBwcm9wc1VybCwgZW5jcnlwdEZpZWxkczogZW5jcnlwdFByb3BwcyA9IFtdIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKCF1cmwgJiYgIXByb3BzVXJsKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIuayoeacieS4iuS8oOeahHVybCFcIik7XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IG1ldGhvZCA9IFwicG9zdFwiIH0gPSBvcHRpb25zO1xyXG4gICAgbGV0IHJlcXVlc3RVcmwgPSB1cmwgPyB1cmwgOiBwcm9wc1VybDtcclxuICAgIGxldCByZXF1ZXN0RGF0YSA9IHRoaXMuZm9ybVJlZi5jdXJyZW50LmdldEZpZWxkc1ZhbHVlKCk7XHJcbiAgICBsZXQgcmVxdWVzdEVuY3J5cHQgPSBlbmNyeXB0UHJvcHBzO1xyXG4gICAgbGV0IHJlcXVlc3RQYXJhbSA9IHsgbWV0aG9kOiBtZXRob2QsIGRhdGE6IHJlcXVlc3REYXRhIH0gYXMgeyBkYXRhOiBhbnkgfTtcclxuICAgIGlmIChvcHRpb25zKSB7XHJcbiAgICAgIGNvbnN0IHsgZGF0YSwgZW5jcnlwdEZpZWxkcywgLi4ucGFyYW1zIH0gPSBvcHRpb25zO1xyXG4gICAgICByZXF1ZXN0UGFyYW0gPSB7IC4uLnJlcXVlc3RQYXJhbSwgLi4ucGFyYW1zIH07XHJcbiAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgZGVsZXRlIHJlcXVlc3RQYXJhbS5kYXRhO1xyXG4gICAgICAgIGlmIChtZXRob2QudG9Mb3dlckNhc2UoKSA9PSBcImdldFwiKSB7XHJcbiAgICAgICAgICByZXF1ZXN0UGFyYW0gPSB7IC4uLnJlcXVlc3RQYXJhbSwgLi4ucGFyYW1zLCBwYXJhbXM6IGRhdGEgfTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVxdWVzdFBhcmFtID0geyAuLi5yZXF1ZXN0UGFyYW0sIC4uLnBhcmFtcywgZGF0YTogZGF0YSB9O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoZW5jcnlwdEZpZWxkcykge1xyXG4gICAgICAgIHJlcXVlc3RFbmNyeXB0ID0gZW5jcnlwdEZpZWxkcztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJlcXVlc3QocmVxdWVzdFVybCwge1xyXG4gICAgICAuLi5yZXF1ZXN0UGFyYW0sXHJcbiAgICAgIGVuY3J5cHRGaWVsZHM6IHJlcXVlc3RFbmNyeXB0LFxyXG4gICAgfSlcclxuICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlczogYW55KSB7XHJcbiAgICAgICAgY29uc3QgeyBjb2RlIH0gPSByZXM7XHJcbiAgICAgICAgaWYgKG1zZykge1xyXG4gICAgICAgICAgaWYgKGNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICBtZXNzYWdlLnN1Y2Nlc3MoXCLmj5DkuqTmiJDlip9cIik7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBtZXNzYWdlLmVycm9yKFwi5o+Q5Lqk5aSx6LSlXCIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjYWxsYmFjayAmJiBjYWxsYmFjayhyZXMpO1xyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yOiBhbnkpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yXCIsIGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZUZpZWxkcyhuYW1lKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtUmVmLmN1cnJlbnQudmFsaWRhdGVGaWVsZHMobmFtZSk7XHJcbiAgfVxyXG5cclxuICBoaWRlKGUpIHtcclxuICAgIGNvbnN0IHsgc2hvd01vZGVsLCBtb2RhbFByb3BzID0ge30sIGRyYXdlclByb3BzID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgY29uc3QgeyBvbkNhbmNlbCB9ID0gbW9kYWxQcm9wcztcclxuICAgIGNvbnN0IHsgb25DbG9zZSB9ID0gZHJhd2VyUHJvcHM7XHJcbiAgICBpZiAoc2hvd01vZGVsID09IFwiZHJhd2VyXCIgJiYgb25DbG9zZSkge1xyXG4gICAgICBvbkNsb3NlKGUpO1xyXG4gICAgfSBlbHNlIGlmIChzaG93TW9kZWwgPT0gXCJtb2RhbFwiICYmIG9uQ2FuY2VsKSB7XHJcbiAgICAgIG9uQ2FuY2VsKGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgX3RoaXMuaGlkZUZvcm0oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhpZGVGb3JtKHJlc2V0VmFsdWUgPSB0cnVlKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKFxyXG4gICAgICB7XHJcbiAgICAgICAgZm9ybVZpc2libGU6IGZhbHNlLFxyXG4gICAgICAgIGlzQ2hhbmdlOiBmYWxzZSxcclxuICAgICAgfSxcclxuICAgICAgKCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXNldFZhbHVlKSB7XHJcbiAgICAgICAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8ucmVzZXRGaWVsZHMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBzaG93Rm9ybSh2YWx1ZT86IGFueSwgcmVzZXRWYWx1ZSA9IHRydWUpIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoXHJcbiAgICAgIHtcclxuICAgICAgICBmb3JtVmlzaWJsZTogdHJ1ZSxcclxuICAgICAgICBpc0NoYW5nZTogZmFsc2UsXHJcbiAgICAgIH0sXHJcbiAgICAgICgpID0+IHtcclxuICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5zZXRGaWVsZHNWYWx1ZSh2YWx1ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChyZXNldFZhbHVlKSB0aGlzLmZvcm1SZWYuY3VycmVudD8ucmVzZXRGaWVsZHMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBjbG9uZUVsZW1lbnQoaXRlbSwgaW5kZXggPSAwKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgaWYgKHR5cGVvZiBpdGVtID09IFwic3RyaW5nXCIpIHJldHVybiBpdGVtO1xyXG4gICAgbGV0IHByb3BzID0ge30gYXMgeyBrZXk6IG51bWJlcjsgY2hpbGRyZW46IGFueSB9O1xyXG4gICAgcHJvcHMua2V5ID0gaW5kZXg7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoaXRlbS5wcm9wcyAmJiBpdGVtLnByb3BzLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbS5wcm9wcy5jaGlsZHJlbikpIHtcclxuICAgICAgICAgIHByb3BzLmNoaWxkcmVuID0gUmVhY3QuQ2hpbGRyZW4ubWFwKFxyXG4gICAgICAgICAgICBpdGVtLnByb3BzLmNoaWxkcmVuLFxyXG4gICAgICAgICAgICBmdW5jdGlvbiAoY2hpbGQsIGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLmNsb25lRWxlbWVudChjaGlsZCwgaW5kZXgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBwcm9wcy5jaGlsZHJlbiA9IHRoaXMuY2xvbmVFbGVtZW50KGl0ZW0ucHJvcHMuY2hpbGRyZW4sIDApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gUmVhY3QuY2xvbmVFbGVtZW50KGl0ZW0sIHByb3BzKTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9uVmFsdWVzQ2hhbmdlKHZhbCwgYWxsVmFsKSB7XHJcbiAgICBjb25zdCB7IG9uVmFsdWVzQ2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGlzQ2hhbmdlOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICBvblZhbHVlc0NoYW5nZSAmJiBvblZhbHVlc0NoYW5nZSh2YWwsIGFsbFZhbCk7XHJcbiAgfVxyXG4gIHJlbmRlclBhbmVsKG5ld0NoaWxkcmVuLCBwcm9wcykge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzaG93TW9kZWwsXHJcbiAgICAgIGRyYXdlclByb3BzID0ge30sXHJcbiAgICAgIG1vZGFsUHJvcHMgPSB7fSxcclxuICAgICAgbG9hZGluZyA9IGZhbHNlLFxyXG4gICAgICBjaGFuZ2VWYWxpZCA9IHRydWUsXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgZm9ybVZpc2libGUgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCBsYXlvdXQgPSB7XHJcbiAgICAgIGxhYmVsQ29sOiB7IHNwYW46IDQgfSxcclxuICAgICAgd3JhcHBlckNvbDogeyBzcGFuOiAyMCB9LFxyXG4gICAgfTtcclxuICAgIGlmIChzaG93TW9kZWwpIHtcclxuICAgICAgbGV0IG5ld01vZGFsUHJvcHMgPSBvbWl0KG1vZGFsUHJvcHMsIFtcInZpc2libGVcIl0pO1xyXG4gICAgICBuZXdNb2RhbFByb3BzID0geyAuLi5uZXdNb2RhbFByb3BzIH07XHJcbiAgICAgIGxldCBuZXdEcmF3ZXJQcm9wcyA9IG9taXQoZHJhd2VyUHJvcHMsIFtcInZpc2libGVcIl0pO1xyXG4gICAgICBsZXQgZGVmYXVsdHByb3BzID0ge1xyXG4gICAgICAgIG1hc2tDbG9zYWJsZTogIXRoaXMuc3RhdGUuaXNDaGFuZ2UsXHJcbiAgICAgICAgZm9ybUV4cGFuZDoge1xyXG4gICAgICAgICAgZXhwYW5kOiB0cnVlLFxyXG4gICAgICAgICAgdmFsaWQ6IGNoYW5nZVZhbGlkLFxyXG4gICAgICAgICAgY2hhbmdlOiB0aGlzLnN0YXRlLmlzQ2hhbmdlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHlwZTogc2hvd01vZGVsLFxyXG4gICAgICB9IGFzIGFueTtcclxuICAgICAgbGV0IG1vZGFscHJvcHMgPSB7IC4uLmRlZmF1bHRwcm9wcyB9O1xyXG4gICAgICBtb2RhbHByb3BzID0ge1xyXG4gICAgICAgIC4uLmRlZmF1bHRwcm9wcyxcclxuICAgICAgICAuLi5uZXdNb2RhbFByb3BzLFxyXG4gICAgICAgIC4uLm5ld0RyYXdlclByb3BzLFxyXG4gICAgICAgIG9uQ2FuY2VsOiB0aGlzLmhpZGUuYmluZCh0aGlzKSxcclxuICAgICAgICAvLyBvbkNsb3NlOiB0aGlzLmhpZGUuYmluZCh0aGlzKSxcclxuICAgICAgfTtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8TW9kYWwgdmlzaWJsZT17Zm9ybVZpc2libGV9IHsuLi5tb2RhbHByb3BzfT5cclxuICAgICAgICAgIHtsb2FkaW5nID8gKFxyXG4gICAgICAgICAgICA8U3BpbiBzcGlubmluZz17bG9hZGluZ30+XHJcbiAgICAgICAgICAgICAgPEZvcm1cclxuICAgICAgICAgICAgICAgIHJlZj17dGhpcy5mb3JtUmVmfVxyXG4gICAgICAgICAgICAgICAgdmFsaWRhdGVUcmlnZ2VyPXtbXCJvbkJsdXJcIiwgXCJvbkNoYW5nZVwiXX1cclxuICAgICAgICAgICAgICAgIHsuLi5sYXlvdXR9XHJcbiAgICAgICAgICAgICAgICB7Li4ucHJvcHN9XHJcbiAgICAgICAgICAgICAgICBvblZhbHVlc0NoYW5nZT17dGhpcy5vblZhbHVlc0NoYW5nZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgcHJlc2VydmU9e2ZhbHNlfVxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvU3Bpbj5cclxuICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgIDxGb3JtXHJcbiAgICAgICAgICAgICAgcmVmPXt0aGlzLmZvcm1SZWZ9XHJcbiAgICAgICAgICAgICAgdmFsaWRhdGVUcmlnZ2VyPXtbXCJvbkJsdXJcIiwgXCJvbkNoYW5nZVwiXX1cclxuICAgICAgICAgICAgICB7Li4ubGF5b3V0fVxyXG4gICAgICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICAgICAgICBvblZhbHVlc0NoYW5nZT17dGhpcy5vblZhbHVlc0NoYW5nZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgIHByZXNlcnZlPXtmYWxzZX1cclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgPC9Nb2RhbD5cclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPD5cclxuICAgICAgICAgIHtsb2FkaW5nID8gKFxyXG4gICAgICAgICAgICA8U3BpbiBzcGlubmluZz17bG9hZGluZ30+XHJcbiAgICAgICAgICAgICAgPEZvcm1cclxuICAgICAgICAgICAgICAgIHJlZj17dGhpcy5mb3JtUmVmfVxyXG4gICAgICAgICAgICAgICAgdmFsaWRhdGVUcmlnZ2VyPXtbXCJvbkJsdXJcIiwgXCJvbkNoYW5nZVwiXX1cclxuICAgICAgICAgICAgICAgIHsuLi5sYXlvdXR9XHJcbiAgICAgICAgICAgICAgICB7Li4ucHJvcHN9XHJcbiAgICAgICAgICAgICAgICBvblZhbHVlc0NoYW5nZT17dGhpcy5vblZhbHVlc0NoYW5nZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvU3Bpbj5cclxuICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgIDxGb3JtXHJcbiAgICAgICAgICAgICAgcmVmPXt0aGlzLmZvcm1SZWZ9XHJcbiAgICAgICAgICAgICAgdmFsaWRhdGVUcmlnZ2VyPXtbXCJvbkJsdXJcIiwgXCJvbkNoYW5nZVwiXX1cclxuICAgICAgICAgICAgICB7Li4ubGF5b3V0fVxyXG4gICAgICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICAgICAgICBvblZhbHVlc0NoYW5nZT17dGhpcy5vblZhbHVlc0NoYW5nZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICA8Lz5cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbiAgcmVuZGVyKCkge1xyXG4gICAgY29uc3QgcHJvcHMgPSBvbWl0KHRoaXMucHJvcHMsIFtcclxuICAgICAgXCJmb3JtXCIsXHJcbiAgICAgIFwic2hvd01vZGVsXCIsXHJcbiAgICAgIFwibW9kYWxQcm9wc1wiLFxyXG4gICAgICBcImRyYXdlclByb3BzXCIsXHJcbiAgICAgIFwidXJsXCIsXHJcbiAgICAgIFwiZW5jcnlwdEZpZWxkc1wiLFxyXG4gICAgICBcImNoYW5nZVZhbGlkXCIsXHJcbiAgICBdKTtcclxuXHJcbiAgICByZXR1cm4gPD57dGhpcy5yZW5kZXJQYW5lbChwcm9wcy5jaGlsZHJlbiwgcHJvcHMpfTwvPjtcclxuICB9XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgTnNjRm9ybTtcclxuIl19
@@ -331,6 +331,12 @@ var NSCTable = /*#__PURE__*/function (_React$Component) {
331
331
  this.resetColumn();
332
332
  }
333
333
 
334
+ if (this.props.columns !== prevProps.columns) {
335
+ this.setState({
336
+ cols: this.props.columns
337
+ });
338
+ }
339
+
334
340
  if (prevProps.size !== this.props.size) {
335
341
  this.setState({
336
342
  tableSize: this.props.size
@@ -558,6 +564,7 @@ var NSCTable = /*#__PURE__*/function (_React$Component) {
558
564
  columns = _this$state.columns,
559
565
  sortType = _this$state.sortType,
560
566
  sortInfo = _this$state.sortInfo;
567
+ console.log("columns", columns);
561
568
  var _this$props$sortField = this.props.sortFields,
562
569
  sortFields = _this$props$sortField === void 0 ? [] : _this$props$sortField;
563
570
  var defaultShowCols = columns.filter(function (cols) {
@@ -1015,4 +1022,4 @@ _defineProperty(NSCTable, "defaultProps", {
1015
1022
  });
1016
1023
 
1017
1024
  export default withZhLocale(NSCTable);
1018
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvdGFibGUvaW5kZXgudHN4Il0sIm5hbWVzIjpbIkFwcHN0b3JlT3V0bGluZWQiLCJDaGVja091dGxpbmVkIiwiQ29sdW1uSGVpZ2h0T3V0bGluZWQiLCJTZWFyY2hPdXRsaW5lZCIsIlNvcnRBc2NlbmRpbmdPdXRsaW5lZCIsIlNvcnREZXNjZW5kaW5nT3V0bGluZWQiLCJSZWRvT3V0bGluZWQiLCJpc0VtcHR5T2JqIiwiU3RvcmUiLCJQYWdlU3RvcmUiLCJ1dGlscyIsIlJlYWN0IiwiRG5kUHJvdmlkZXIiLCJCb2R5Um93IiwiRG5kQ29udGV4dFR5cGUiLCJJQm9keVJvd1Byb3BzIiwidHJlZVV0aWxzIiwic3R5bGVzIiwiQm9keVJvd0NvbXBvbmVudCIsIkhUTUw1QmFja2VuZCIsIndpdGhaaExvY2FsZSIsIlJlc2l6YWJsZSIsImdldExlc3MiLCJnZXROb2RlIiwiTm9EYXRhIiwiZ2V0U3RvcmFnZSIsImNvbmZpZyIsIlJlc2l6ZWFibGVUaXRsZSIsInByb3BzIiwib25SZXNpemUiLCJ3aWR0aCIsInJlc3RQcm9wcyIsImVuYWJsZVVzZXJTZWxlY3RIYWNrIiwiTlNDVGFibGUiLCJjcmVhdGVSZWYiLCJvbkJlZm9yZUxvYWQiLCJsb2FkIiwiaGVhZGVyIiwiY2VsbCIsImluZGV4IiwiZSIsInNpemUiLCJjb2xzIiwic3RhdGUiLCJuZXh0Q29sdW1ucyIsInNldFN0YXRlIiwiZXYiLCJkYXRhIiwiSlNPTiIsInBhcnNlIiwiX3RoaXMiLCJldmVudFR5cGUiLCJwYXlsb2FkIiwidGFibGVTaXplIiwiZHJhZ0luZGV4IiwiaG92ZXJJbmRleCIsImRyYWciLCJ0YXJnZXQiLCJkcmFnTm9kZSIsInJlY29yZCIsInRhcmdldE5vZGUiLCJtb3ZlQXJyYXkiLCJpZHMiLCJwYXJlbnROb2RlIiwiZ2V0Q2hpbGROb2RlSWRzIiwicGFyYW1zIiwiaWQiLCJwYXJlbnRJZCIsImF0dHJpYnV0ZSIsIm1vdmVSb3ciLCJzdG9yZSIsInJlbG9hZCIsIm1vZGFsIiwidHlwZSIsInN0b3JlUHJlZml4IiwiYXV0b1R5cGUiLCJjb250ZW50IiwiZGF0YVNvdXJjZSIsImNvbHVtbnMiLCJsb2FkaW5nIiwicGFnaW5hdGlvbiIsImFjdGl2ZUluZGV4Iiwic2VhcmNoVGV4dCIsImZpZWxkT3B0aW9uIiwic2VhcmNoQ29sb3IiLCJzb3J0cyIsImZpbHRlclBhcmFtcyIsInNvcnRUeXBlIiwic29ydGVyIiwic29ydEluZm8iLCJkZWZhdWx0U29ydCIsImNoZWNrQ29sdW1uIiwiZGVmYXVsdENoZWNrIiwibGlzdGVuZXJzIiwibGlzdGVuZXJzUHJvcHMiLCJyZXN0U3RvcmUiLCJzdG9yZVByb3BzIiwibW9kZWwiLCJjb21wb25lbnQiLCJvcHRpb25zIiwiY2FsbGJhY2siLCJkYXRhQ2hhbmdlZCIsIm1vZGVsRGF0YSIsInBhZ2luZyIsImdldFBhZ2luYXRpb24iLCJvbkVycm9yTG9hZCIsImVyciIsInJlc3BvbnNlIiwiYXV0b0xvYWQiLCJPYmplY3QiLCJhc3NpZ24iLCJjdXJyZW50IiwicmVzaXplQ29sdW1uIiwic2V0RGF0YSIsIndpbmRvdyIsImFkZEV2ZW50TGlzdGVuZXIiLCJsaXN0ZW5NZXNzYWdlIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInByZXZQcm9wcyIsInByZVN0YXRlIiwicmVzZXRDb2x1bW4iLCJuZXdDb2xzIiwiY29sc3MiLCJtYXAiLCJjb2wiLCJ0ZW1wIiwib25IZWFkZXJDZWxsIiwiY29sdW1uIiwiaGFuZGxlUmVzaXplIiwicHVzaCIsImZpbHRlcnMiLCJleHRyYSIsImF1dG9PbkNoYW5nZSIsImF1dG9Tb3J0IiwiYXV0b1BhZ2luYXRpb24iLCJvbkNoYW5nZSIsImlzTXVsdGlwbGUiLCJBcnJheSIsImlzQXJyYXkiLCJoYW5kbGVQYWdpbmF0aW9uIiwiZ2V0UGFnaW5hdGlvbkJ5U3RvcmUiLCJwIiwiY3VycmVudEtleSIsInBhZ2VTaXplS2V5IiwicGFnZVNpemUiLCJhc2NQYXJhbXMiLCJnZXRTb3J0UGFyYW0iLCJvbkNoYW5nZUZuIiwiZ2V0TW9kZWwiLCJ2YWwiLCJjaGVja2VkVmFsdWUiLCJsZW5ndGgiLCJ3YXJuaW5nIiwiZmlsdGVyQ29sdW1ucyIsIm5ld0NvbCIsImluY2x1ZGVzIiwiZGF0YUluZGV4IiwiaW5pdFNob3ciLCJzb3J0U3RhdGUiLCJzb3J0U2VhcmNoIiwib3JkZXJJdGVtcyIsImZpZWxkIiwiYXNjIiwib3JkZXIiLCJmb3JFYWNoIiwidiIsInN0cmluZ2lmeSIsInNvcnRGaWVsZHMiLCJkZWZhdWx0U2hvd0NvbHMiLCJmaWx0ZXIiLCJlbGxpcHNpcyIsInJlbmRlciIsInNob3dUaXRsZSIsInRleHQiLCJpbmRleE9mIiwic29ydE9yZGVyIiwibXVsdGlwbGUiLCJpdGVtIiwiZmlsdGVyUHJvcHMiLCJvYmoiLCJzZWFyY2hLZXkiLCJEaXYiLCJ0aXRsZSIsInBsYWNlaG9sZGVyIiwicmVmIiwidGFibGVTZWFyY2hSZWYiLCJmaWx0ZXJEcm9wZG93biIsInNldFNlbGVjdGVkS2V5cyIsInNlbGVjdGVkS2V5cyIsImNvbmZpcm0iLCJjbGVhckZpbHRlcnMiLCJuZXdGaWx0ZXJQYXJhbXMiLCJrZXkiLCJnZXRWYWx1ZSIsInNvcnRQYXJhbSIsImZpbHRlckljb24iLCJmaWx0ZXJDb2x1bW4iLCJjb2xMaXN0cyIsInRvb2xiYXIiLCJ0YWJsZVRvb2wiLCJ0b29scyIsInRvb2xzQ2xpY2siLCJvblRvb2xDbGljayIsInNpemVJdGVtIiwic29ydEl0ZW0iLCJzb3J0Q29udGVudCIsImN1cnNvciIsImNvbG9yIiwic2l6ZUNvbnRlbnQiLCJiaW5kIiwibGFiZWwiLCJ2YWx1ZSIsImRpc2FibGVkIiwiZm9udFNpemUiLCJtaW5XaWR0aCIsIm1heFdpZHRoIiwibWFyZ2luUmlnaHQiLCJvblJlZnJlc2giLCJvbWl0Iiwicm93S2V5IiwiY2xpY2tDaGFuZ2VDb2xvciIsInBvc2l0aW9uIiwic2hvd1NpemVDaGFuZ2VyIiwic2hvd1F1aWNrSnVtcGVyIiwic2hvd1RvdGFsIiwidG90YWwiLCJmcm9tIiwidG8iLCJvblJvd0ZuIiwib25Sb3ciLCJjdXN0b20iLCJvbkNsaWNrRm4iLCJvbkNsaWNrIiwiZXZlbnQiLCJyb3dDbGFzc05hbWUiLCJjbGlja1Jvd1N0eWxlIiwibmV3RGF0YVNvdXJjZSIsImdldFNlYXJjaE1lbnVEYXRhcyIsInRyZWVEYXRhcyIsImV4cGFuZGVkUm93S2V5cyIsIm9wZW5LZXlzIiwiZHJhZ2FibGUiLCJkcmFnYWJsZVByb3BzIiwiY29tcG9uZW50cyIsInJlc2l6ZVByb3BzIiwidG9vbEZsYWciLCJ0b29scHJvcHMiLCJzaG93IiwiRGVmYXVsdFRhYmxlIiwicmVuZGVyVG9vbEJhciIsImdldENvbHVtbnMiLCJlbXB0eVRleHQiLCJ4IiwiQ29tcG9uZW50IiwiZHJhZ1VybCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FDRUEsZ0JBREYsRUFFRUMsYUFGRixFQUdFQyxvQkFIRixFQUlFQyxjQUpGLEVBS0VDLHFCQUxGLEVBTUVDLHNCQU5GLEVBT0VDLFlBUEYsUUFRTyxtQkFSUDtBQVNBLFNBQVNDLFVBQVQsUUFBMkIsbUJBQTNCO0FBQ0EsT0FBT0MsS0FBUCxJQUFnQkMsU0FBaEIsUUFBNkMsYUFBN0M7QUFDQSxTQUFTQyxLQUFULFFBQXNCLHVCQUF0QjtBQWNBLE9BQU8sS0FBS0MsS0FBWixNQUF1QixPQUF2QjtBQUNBLFNBQVNDLFdBQVQsUUFBNEIsV0FBNUI7QUFDQSxPQUFPQyxPQUFQLElBQWtCQyxjQUFsQixFQUFrQ0MsYUFBbEMsUUFBdUQsbUJBQXZEO0FBQ0EsT0FBT0MsU0FBUCxNQUFzQixpQkFBdEI7QUFDQSxPQUFPQyxNQUFQLE1BQW1CLHFCQUFuQjtBQUNBLElBQVFDLGdCQUFSLEdBQTJDTCxPQUEzQyxDQUFRSyxnQkFBUjtBQUFBLElBQTBCQyxZQUExQixHQUEyQ04s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U0FBUyxFQUFFck8sT0FBTyxDQUFDTCxNQUFELEVBQVMsY0FBVDtBQUExQjtBQURMLFNBUFY7QUFVRSxRQUFBLE1BQU0sRUFBRTtBQUFFMk8sVUFBQUEsQ0FBQyxFQUFFO0FBQUw7QUFWVixTQVdNUixXQVhOLEVBWU14TixLQVpOLEVBYU1zTixhQWJOO0FBY0UsUUFBQSxJQUFJLEVBQUU3TDtBQWRSLFNBRkYsQ0FERjtBQXNCQSxhQUFPNEwsUUFBUSxLQUFLLElBQWIsZ0JBQ0wsb0JBQUMsV0FBRDtBQUFhLFFBQUEsT0FBTyxFQUFFOU47QUFBdEIsU0FBcUNxTyxZQUFyQyxDQURLLEdBR0xBLFlBSEY7QUFLRDs7OztFQW55Qm9CN08sS0FBSyxDQUFDa1AsUzs7Z0JBQXZCNU4sUSxrQkFDa0I7QUFDcEJnTixFQUFBQSxRQUFRLEVBQUUsS0FEVTtBQUVwQmpCLEVBQUFBLFNBQVMsRUFBRSxJQUZTO0FBR3BCNUIsRUFBQUEsWUFBWSxFQUFFLElBSE07QUFJcEIwRCxFQUFBQSxPQUFPLEVBQUUsRUFKVztBQUtwQnhILEVBQUFBLGNBQWMsRUFBRSxJQUxJO0FBTXBCRCxFQUFBQSxRQUFRLEVBQUUsSUFOVTtBQU9wQkQsRUFBQUEsWUFBWSxFQUFFLElBUE07QUFRcEJwQixFQUFBQSxZQUFZLEVBQUUsSUFSTTtBQVNwQnNGLEVBQUFBLE9BQU8sRUFBRTtBQUNQaUQsSUFBQUEsSUFBSSxFQUFFLElBREM7QUFFUDdDLElBQUFBLFdBQVcsRUFBRTtBQUZOO0FBVFcsQzs7QUFxeUJ4QixlQUFldEwsWUFBWSxDQUFDYSxRQUFELENBQTNCIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQERlc2NyaXB0dGlvbjpcclxuICogQHZlcnNpb246XHJcbiAqIEBBdXRob3I6IHJ4emh1XHJcbiAqIEBEYXRlOiAyMDIxLTAzLTIzIDA4OjQ2OjIwXHJcbiAqIEBMYXN0RWRpdG9yczogcnh6aHVcclxuICogQExhc3RFZGl0VGltZTogMjAyMS0wMy0yMyAxMDozMDo0MlxyXG4gKi9cclxuaW1wb3J0IHtcclxuICBBcHBzdG9yZU91dGxpbmVkLFxyXG4gIENoZWNrT3V0bGluZWQsXHJcbiAgQ29sdW1uSGVpZ2h0T3V0bGluZWQsXHJcbiAgU2VhcmNoT3V0bGluZWQsXHJcbiAgU29ydEFzY2VuZGluZ091dGxpbmVkLFxyXG4gIFNvcnREZXNjZW5kaW5nT3V0bGluZWQsXHJcbiAgUmVkb091dGxpbmVkLFxyXG59IGZyb20gXCJAYW50LWRlc2lnbi9pY29uc1wiO1xyXG5pbXBvcnQgeyBpc0VtcHR5T2JqIH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCBTdG9yZSwgeyBQYWdlU3RvcmUsIFN0b3JlUHJvcHMgfSBmcm9tIFwiQGJqLW5zYy9tc25cIjtcclxuaW1wb3J0IHsgdXRpbHMgfSBmcm9tIFwiQGJqLW5zYy9tc24vbGliL3V0aWxzXCI7XHJcbmltcG9ydCB7XHJcbiAgQnV0dG9uLFxyXG4gIENoZWNrYm94LFxyXG4gIENoZWNrYm94T3B0aW9uVHlwZSxcclxuICBNZW51LFxyXG4gIG1lc3NhZ2UsXHJcbiAgUG9wb3ZlcixcclxuICBTcGFjZSxcclxuICBUYWJsZSxcclxuICBUYWJsZVByb3BzLFxyXG4gIFRvb2x0aXAsXHJcbn0gZnJvbSBcImFudGRcIjtcclxuaW1wb3J0IHsgQ29sdW1uVHlwZSwgVGFibGVQYWdpbmF0aW9uQ29uZmlnIH0gZnJvbSBcImFudGQvbGliL3RhYmxlXCI7XHJcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBEbmRQcm92aWRlciB9IGZyb20gXCJyZWFjdC1kbmRcIjtcclxuaW1wb3J0IEJvZHlSb3csIHsgRG5kQ29udGV4dFR5cGUsIElCb2R5Um93UHJvcHMgfSBmcm9tIFwiLi4vY29tbW9uL0JvZHlSb3dcIjtcclxuaW1wb3J0IHRyZWVVdGlscyBmcm9tIFwiLi4vLi4vdHJlZVV0aWxzXCI7XHJcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vaW5kZXgubW9kdWxlLmxlc3NcIjtcclxuY29uc3QgeyBCb2R5Um93Q29tcG9uZW50LCBIVE1MNUJhY2tlbmQgfSA9IEJvZHlSb3c7XHJcbmltcG9ydCB3aXRoWmhMb2NhbGUgZnJvbSBcIi4uL2NvbW1vbi93aXRoWmhMb2NhbGVcIjtcclxuaW1wb3J0IHsgUmVzaXphYmxlIH0gZnJvbSBcInJlYWN0LXJlc2l6YWJsZVwiO1xyXG5pbXBvcnQgXCIuL3Jlc2l6ZS5tb2R1bGUubGVzc1wiO1xyXG5pbXBvcnQgeyBnZXRMZXNzLCBnZXROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmltcG9ydCBOb0RhdGEgZnJvbSBcIi4uLy4uL2Jhc2UvY29tbW9uL05vRGF0YVwiO1xyXG5pbXBvcnQgeyBnZXRTdG9yYWdlIH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCBjb25maWcgZnJvbSBcIi4uLy4uL2NvbmZpZ1wiO1xyXG5pbnRlcmZhY2UgSURyYWdQYXJhbXMge1xyXG4gIGlkOiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgaWRzOiBBcnJheTxzdHJpbmcgfCBudW1iZXI+O1xyXG4gIHBhcmVudElkOiBzdHJpbmcgfCBudW1iZXI7XHJcbn1cclxuLy8gaW50ZXJmYWNlIFN0b3JlUHJvcHMge31cclxuXHJcbmV4cG9ydCB0eXBlIFN0b3JlVHlwZSA9IFwiUGFnZVN0b3JlXCIgfCBcIlRyZWVTdG9yZVwiIHwgXCJCYXNlU3RvcmVcIjtcclxuXHJcbmludGVyZmFjZSBOU0NUYWJsZVBhZ2luYXRpb24gZXh0ZW5kcyBUYWJsZVBhZ2luYXRpb25Db25maWcge1xyXG4gIHRvdGFsS2V5Pzogc3RyaW5nO1xyXG4gIHBhZ2VTaXplS2V5Pzogc3RyaW5nO1xyXG4gIGN1cnJlbnRLZXk/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmludGVyZmFjZSBUb29sQmFyUHJvcHMge1xyXG4gIHNob3c6IGJvb2xlYW47XHJcbiAgdG9vbHM/OiBBcnJheTxzdHJpbmc+O1xyXG4gIG9uVG9vbENsaWNrPzogeyBvblJlZnJlc2g/OiBhbnk7IG9uU29ydD86IGFueSB9O1xyXG59XHJcbmludGVyZmFjZSBOU0NUYWJsZVByb3BzIGV4dGVuZHMgVGFibGVQcm9wczxhbnk+IHtcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgc2hvd1RvdGFsPzogYm9vbGVhbjsgLy8g5piv5ZCm5pi+56S65oC75p2h5pWw5L+h5oGv77yM6buY6K6kdHJ1ZVxyXG4gIGRyYWdhYmxlPzogYm9vbGVhbjsgLy8g5piv5ZCm5Y+v5ouW5YqoLCDpu5jorqRmYWxzZVxyXG4gIGZpbHRlckNvbHVtbj86IGJvb2xlYW47IC8vIOaYr+WQpuaUr+aMgei/h+a7pOaYvuekuuihqOagvOWIlywg6buY6K6kdHJ1ZVxyXG4gIG1vdmVSb3c/OiAocGFyYW1zOiBJRHJhZ1BhcmFtcykgPT4gdm9pZDsgLy8g5ouW5ou95a6M5oiQ5ZCO55qE5Zue6LCDXHJcbiAgZHJhZ1VybD86IHN0cmluZzsgLy8g5L+d5a2Y5ouW5ou95o6S5bqP55qE5o6l5Y+jXHJcbiAgcGFnaW5hdGlvbj86IGZhbHNlIHwgTlNDVGFibGVQYWdpbmF0aW9uO1xyXG4gIGF1dG9QYWdpbmF0aW9uPzogYm9vbGVhbjsgLy8g57uE5Lu25piv5ZCm6Ieq5Yqo5aSE55CG5YiG6aG1XHJcbiAgYXV0b1NvcnQ/OiBib29sZWFuOyAvL+e7hOS7tuaYr+WQpuiHquWKqOWkhOeQhuaOkuW6j1xyXG4gIGF1dG9PbkNoYW5nZT86IGJvb2xlYW47IC8vIOe7hOS7tuaYr+WQpuiHquWKqG9uQ2hhbmdlLCBmYWxzZeWImeS4jeWBmuS7u+S9leWkhOeQhuWFqOmDqOS6pOe7meiwg+eUqOaWuVxyXG4gIHJlc2l6ZUNvbHVtbj86IGJvb2xlYW47XHJcbiAgc29ydEZpZWxkcz86IEFycmF5PHN0cmluZz47IC8v6ZyA6KaB5o6S5bqP55qE5a2X5q61SW5kZXhcclxuICB0b29sYmFyPzogVG9vbEJhclByb3BzIHwgYm9vbGVhbjtcclxuICBhdXRvU2l6ZT86IGJvb2xlYW47XHJcbiAgc29ydFNlYXJjaD86IGJvb2xlYW47IC8v5piv5ZCm5re75Yqg5o6S5bqP5p+l6K+iLOm7mOiupHRydWVcclxuICAvLyB0YWJsZVNpemU/OiBcInNtYWxsXCIgfCBcIm1pZGRsZVwiIHwgXCJkZWZhdWx0XCIgfCBcImF1dG9cIjtcclxuICAvLyBzaXplPzogXCJzbWFsbFwiIHwgXCJtaWRkbGVcIiB8IFwiZGVmYXVsdFwiIHwgXCJhdXRvXCI7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIElOU0NUYWJsZVByb3BzID0gdHlwZW9mIE5TQ1RhYmxlLmRlZmF1bHRQcm9wcyAmIE5TQ1RhYmxlUHJvcHM7XHJcbmV4cG9ydCB7IERuZENvbnRleHRUeXBlLCBJQm9keVJvd1Byb3BzIH07XHJcblxyXG5jb25zdCBSZXNpemVhYmxlVGl0bGUgPSAocHJvcHM6IGFueSkgPT4ge1xyXG4gIGNvbnN0IHsgb25SZXNpemUsIHdpZHRoLCAuLi5yZXN0UHJvcHMgfSA9IHByb3BzO1xyXG4gIHJldHVybiAoXHJcbiAgICA8UmVzaXphYmxlXHJcbiAgICAgIHdpZHRoPXt3aWR0aCB8fCAxNTB9XHJcbiAgICAgIGhlaWdodD17MH1cclxuICAgICAgb25SZXNpemU9e29uUmVzaXplfVxyXG4gICAgICBkcmFnZ2FibGVPcHRzPXt7IGVuYWJsZVVzZXJTZWxlY3RIYWNrOiBmYWxzZSB9fVxyXG4gICAgPlxyXG4gICAgICA8dGggey4uLnJlc3RQcm9wc30gLz5cclxuICAgIDwvUmVzaXphYmxlPlxyXG4gICk7XHJcbn07XHJcbmNsYXNzIE5TQ1RhYmxlIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PElOU0NUYWJsZVByb3BzLCBhbnk+IHtcclxuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xyXG4gICAgZHJhZ2FibGU6IGZhbHNlLFxyXG4gICAgc2hvd1RvdGFsOiB0cnVlLFxyXG4gICAgZmlsdGVyQ29sdW1uOiB0cnVlLFxyXG4gICAgZHJhZ1VybDogXCJcIixcclxuICAgIGF1dG9QYWdpbmF0aW9uOiB0cnVlLFxyXG4gICAgYXV0b1NvcnQ6IHRydWUsXHJcbiAgICBhdXRvT25DaGFuZ2U6IHRydWUsXHJcbiAgICByZXNpemVDb2x1bW46IHRydWUsXHJcbiAgICB0b29sYmFyOiB7XHJcbiAgICAgIHNob3c6IHRydWUsXHJcbiAgICAgIG9uVG9vbENsaWNrOiB7fSBhcyBhbnksXHJcbiAgICB9IGFzIGFueSxcclxuICB9O1xyXG5cclxuICBzdG9yZSA9IHt9IGFzIFN0b3JlUHJvcHM7XHJcbiAgdGhJY29uUmVmID0gUmVhY3QuY3JlYXRlUmVmPEhUTUxEaXZFbGVtZW50PigpO1xyXG4gIHRhYmxlU2VhcmNoUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuXHJcbiAgbGlzdGVuZXJzID0ge1xyXG4gICAgb25CZWZvcmVMb2FkOiBudWxsLFxyXG4gICAgbG9hZDogbnVsbCxcclxuICB9O1xyXG5cclxuICBjb21wb25lbnRzID0ge1xyXG4gICAgaGVhZGVyOiB7XHJcbiAgICAgIGNlbGw6IFJlc2l6ZWFibGVUaXRsZSxcclxuICAgIH0sXHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgIHN1cGVyKHByb3BzKTtcclxuICAgIGxldCBtb2RhbCA9IHByb3BzLnR5cGUgfHwgXCJhdXRvXCI7XHJcbiAgICBsZXQgc3RvcmVQcmVmaXggPSBnZXRTdG9yYWdlKFwic3RvcmUtcHJlLWtleVwiKTtcclxuICAgIGxldCBhdXRvVHlwZSA9IGdldFN0b3JhZ2UoXHJcbiAgICAgIHN0b3JlUHJlZml4ID8gc3RvcmVQcmVmaXggKyBcInRhYmxlU2l6ZVwiIDogXCJ0YWJsZVNpemVcIlxyXG4gICAgKTtcclxuICAgIGF1dG9UeXBlID0gYXV0b1R5cGU/LmNvbnRlbnQ7XHJcbiAgICB0aGlzLnN0YXRlID0ge1xyXG4gICAgICBkYXRhU291cmNlOiBbXSxcclxuICAgICAgY29sdW1uczogW10sXHJcbiAgICAgIGxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICBwYWdpbmF0aW9uOiB7fSxcclxuICAgICAgYWN0aXZlSW5kZXg6IC0xLFxyXG4gICAgICAvL+aQnOe0ouaWh+acrFxyXG4gICAgICBzZWFyY2hUZXh0OiBudWxsLFxyXG4gICAgICBmaWVsZE9wdGlvbjogbnVsbCxcclxuICAgICAgc2VhcmNoQ29sb3I6IG51bGwsXHJcbiAgICAgIGNvbHM6IFtdLFxyXG4gICAgICBzb3J0czogW10sXHJcbiAgICAgIGZpbHRlclBhcmFtczoge30sXHJcbiAgICAgIHRhYmxlU2l6ZTogdGhpcy5wcm9wcy5zaXplIHx8IGF1dG9UeXBlIHx8IFwiZGVmYXVsdFwiLFxyXG4gICAgICBzb3J0VHlwZTogXCJzaW5nbGVcIixcclxuICAgICAgc29ydGVyOiBbXSwgLy/orrDlvZXlvZPliY3mjpLluo/lrZfmrrVcclxuICAgICAgc29ydEluZm86IHt9LFxyXG4gICAgICBkZWZhdWx0U29ydDogdHJ1ZSxcclxuICAgICAgY2hlY2tDb2x1bW46IFtdLFxyXG4gICAgICBkZWZhdWx0Q2hlY2s6IHRydWUsXHJcbiAgICB9O1xyXG4gICAgaWYgKHByb3BzLnN0b3JlIGluc3RhbmNlb2YgU3RvcmUpIHtcclxuICAgICAgdGhpcy5zdG9yZSA9IHByb3BzLnN0b3JlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgeyBsaXN0ZW5lcnM6IGxpc3RlbmVyc1Byb3BzID0ge30sIC4uLnJlc3RTdG9yZSB9ID1cclxuICAgICAgICBwcm9wcy5zdG9yZSB8fCB7fTtcclxuICAgICAgY29uc3Qgc3RvcmVQcm9wcyA9IHtcclxuICAgICAgICBtb2RlbDogXCJtb2RlbFwiLFxyXG4gICAgICAgIGNvbXBvbmVudDogdGhpcyxcclxuICAgICAgICBsaXN0ZW5lcnM6IHtcclxuICAgICAgICAgIG9uQmVmb3JlTG9hZDogKHN0b3JlLCBvcHRpb25zKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiB0cnVlIH0pO1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQcm9wcy5vbkJlZm9yZUxvYWQsIHRoaXMsIFtzdG9yZSwgb3B0aW9uc10pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGRhdGFDaGFuZ2VkOiAoZGF0YSwgbW9kZWxEYXRhLCBzdG9yZSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgcGFnaW5nID0gISh0aGlzLnByb3BzLnBhZ2luYXRpb24gPT09IGZhbHNlKTtcclxuICAgICAgICAgICAgaWYgKHBhZ2luZyAmJiAhdGhpcy5wcm9wcy5kYXRhU291cmNlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlOiBtb2RlbERhdGEsXHJcbiAgICAgICAgICAgICAgICBwYWdpbmF0aW9uOiBzdG9yZS5nZXRQYWdpbmF0aW9uKCksXHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGFjdGl2ZUluZGV4OiAtMSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgZGF0YVNvdXJjZTogbW9kZWxEYXRhLCBsb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUHJvcHMuZGF0YUNoYW5nZWQsIHRoaXMsIFtcclxuICAgICAgICAgICAgICBkYXRhLFxyXG4gICAgICAgICAgICAgIG1vZGVsRGF0YSxcclxuICAgICAgICAgICAgICBzdG9yZSxcclxuICAgICAgICAgICAgICBwYWdpbmcsXHJcbiAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGxvYWQ6IChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSA9PiB7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1Byb3BzLmxvYWQsIHRoaXMsIFtkYXRhLCBtb2RlbERhdGEsIHN0b3JlXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgb25FcnJvckxvYWQ6IChlcnIsIHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUHJvcHMub25FcnJvckxvYWQsIHRoaXMsIFtlcnIsIHJlc3BvbnNlXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZGF0YTogcmVzdFN0b3JlLmRhdGFcclxuICAgICAgICAgID8gcmVzdFN0b3JlLmRhdGFcclxuICAgICAgICAgIDogcHJvcHMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgPyBwcm9wcy5kYXRhU291cmNlXHJcbiAgICAgICAgICA6IG51bGwsXHJcbiAgICAgICAgLi4ucmVzdFN0b3JlLFxyXG4gICAgICAgIGF1dG9Mb2FkOiByZXN0U3RvcmUuYXV0b0xvYWQgPT09IGZhbHNlID8gZmFsc2UgOiB0cnVlLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLnN0b3JlID0gbmV3IFBhZ2VTdG9yZShcclxuICAgICAgICBPYmplY3QuYXNzaWduKHt9LCBzdG9yZVByb3BzLCB7XHJcbiAgICAgICAgICBwYWdpbmF0aW9uOiB7IGN1cnJlbnQ6IDEsIC4uLnRoaXMucHJvcHMucGFnaW5hdGlvbiB9LFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVSZXNpemUgPVxyXG4gICAgKGluZGV4OiBhbnkpID0+XHJcbiAgICAoZTogYW55LCB7IHNpemUgfTogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY29scyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgY29uc3QgbmV4dENvbHVtbnMgPSBbLi4uY29sc107XHJcbiAgICAgIG5leHRDb2x1bW5zW2luZGV4XSA9IHtcclxuICAgICAgICAuLi5uZXh0Q29sdW1uc1tpbmRleF0sXHJcbiAgICAgICAgd2lkdGg6IHNpemUud2lkdGgsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGNvbHM6IG5leHRDb2x1bW5zLFxyXG4gICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyByZXNpemVDb2x1bW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIXJlc2l6ZUNvbHVtbikge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHsgY29sdW1uczogWy4uLnRoaXMucHJvcHMuY29sdW1uc10gfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHsgY29sczogWy4uLnRoaXMucHJvcHMuY29sdW1uc10gfSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBzdG9yZSA9IHRoaXMucHJvcHMuc3RvcmU7XHJcbiAgICBpZiAoc3RvcmUgJiYgc3RvcmUuZGF0YSkge1xyXG4gICAgICB0aGlzLnN0b3JlLnNldERhdGEoc3RvcmUuZGF0YSk7XHJcbiAgICB9XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5saXN0ZW5NZXNzYWdlKTtcclxuICB9XHJcbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XHJcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5saXN0ZW5NZXNzYWdlKTtcclxuICB9XHJcbiAgbGlzdGVuTWVzc2FnZSA9IChldikgPT4ge1xyXG4gICAgY29uc3QgZGF0YSA9IHR5cGVvZiBldi5kYXRhID09PSBcInN0cmluZ1wiID8gSlNPTi5wYXJzZShldi5kYXRhKSA6IGV2LmRhdGE7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgaWYgKGRhdGEuZXZlbnRUeXBlID09IFwiY2hhbmdlVGFibGVTaXplXCIpIHtcclxuICAgICAgY29uc3QgeyBwYXlsb2FkIH0gPSBkYXRhO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgcGF5bG9hZC5zaXplID09IFwiZGVmYXVsdFwiIHx8XHJcbiAgICAgICAgcGF5bG9hZC5zaXplID09IFwic21hbGxcIiB8fFxyXG4gICAgICAgIHBheWxvYWQuc2l6ZSA9PSBcIm1pZGRsZVwiXHJcbiAgICAgICkge1xyXG4gICAgICAgIF90aGlzLnNldFN0YXRlKHsgdGFibGVTaXplOiBwYXlsb2FkLnNpemUgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG4gIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMsIHByZVN0YXRlKSB7XHJcbiAgICBjb25zdCB7IHJlc2l6ZUNvbHVtbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmICghcmVzaXplQ29sdW1uKSB7XHJcbiAgICAgIGlmICh0aGlzLnByb3BzLmNvbHVtbnMgIT09IHByZXZQcm9wcy5jb2x1bW5zKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGNvbHVtbnM6IHRoaXMucHJvcHMuY29sdW1ucyB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHByZVN0YXRlLmNvbHMgIT09IHRoaXMuc3RhdGUuY29scykge1xyXG4gICAgICAgIHRoaXMucmVzZXRDb2x1bW4oKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocHJldlByb3BzLnNpemUgIT09IHRoaXMucHJvcHMuc2l6ZSkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyB0YWJsZVNpemU6IHRoaXMucHJvcHMuc2l6ZSB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXRDb2x1bW4oKSB7XHJcbiAgICBjb25zdCB7IGNvbHMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCBuZXdDb2xzOiBhbnkgPSBbXTtcclxuICAgIGxldCBjb2xzcyA9IGNvbHMgfHwgW107XHJcbiAgICBjb2xzcy5tYXAoKGNvbDogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGxldCB0ZW1wID0ge1xyXG4gICAgICAgIC4uLmNvbCxcclxuICAgICAgICBvbkhlYWRlckNlbGw6IChjb2x1bW46IHsgd2lkdGg6IGFueSB9KSA9PiAoe1xyXG4gICAgICAgICAgd2lkdGg6IGNvbHVtbi53aWR0aCxcclxuICAgICAgICAgIG9uUmVzaXplOiB0aGlzLmhhbmRsZVJlc2l6ZShpbmRleCksXHJcbiAgICAgICAgfSksXHJcbiAgICAgIH07XHJcbiAgICAgIG5ld0NvbHMucHVzaCh0ZW1wKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGNvbHVtbnM6IG5ld0NvbHMsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOa4hemZpOmAieS4reminOiJslxyXG4gICAqL1xyXG4gIGNsZWFyU2VsZWN0Q29sb3IoKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHsgYWN0aXZlSW5kZXg6IC0xIH0pO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBnZXRQYWdpbmF0aW9uQnlTdG9yZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JlLmdldFBhZ2luYXRpb24oKTtcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlKHBhZ2luYXRpb24sIGZpbHRlcnMsIHNvcnRlciwgZXh0cmEpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgYXV0b09uQ2hhbmdlID0gdHJ1ZSxcclxuICAgICAgYXV0b1NvcnQsXHJcbiAgICAgIGF1dG9QYWdpbmF0aW9uLFxyXG4gICAgICBvbkNoYW5nZSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBmaWx0ZXJQYXJhbXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCBpc011bHRpcGxlID0gQXJyYXkuaXNBcnJheShzb3J0ZXIpO1xyXG4gICAgaWYgKGF1dG9PbkNoYW5nZSA9PT0gZmFsc2UpIHtcclxuICAgICAgb25DaGFuZ2UgJiYgb25DaGFuZ2UocGFnaW5hdGlvbiwgZmlsdGVycywgc29ydGVyLCBleHRyYSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGhhbmRsZVBhZ2luYXRpb24gPSAoKSA9PiB7XHJcbiAgICAgIGxldCBwYXJhbXMgPSB7fSBhcyB7XHJcbiAgICAgICAgc2l6ZT86IHN0cmluZztcclxuICAgICAgICBwYWdlU2l6ZT86IHN0cmluZztcclxuICAgICAgICBhc2NzPzogc3RyaW5nO1xyXG4gICAgICAgIGRlc2NzPzogc3RyaW5nO1xyXG4gICAgICAgIFtwcm9wTmFtZTogc3RyaW5nXTogc3RyaW5nO1xyXG4gICAgICB9O1xyXG4gICAgICBjb25zdCBwYWdpbmcgPSB0aGlzLmdldFBhZ2luYXRpb25CeVN0b3JlKCkgfHwge307XHJcbiAgICAgIGlmICghaXNFbXB0eU9iaihwYWdpbmF0aW9uKSkge1xyXG4gICAgICAgIGNvbnN0IHAgPSB7XHJcbiAgICAgICAgICBbcGFnaW5nLmN1cnJlbnRLZXkgfHwgXCJjdXJyZW50XCJdOiBwYWdpbmF0aW9uLmN1cnJlbnQsXHJcbiAgICAgICAgICBbcGFnaW5nLnBhZ2VTaXplS2V5IHx8IFwic2l6ZVwiXTogcGFnaW5hdGlvbi5wYWdlU2l6ZSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGFyYW1zLCBwKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgYXNjUGFyYW1zID0gdGhpcy5nZXRTb3J0UGFyYW0oc29ydGVyLCB0cnVlKTtcclxuICAgICAgaWYgKGlzTXVsdGlwbGUpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgc29ydGVyIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKCFpc011bHRpcGxlICYmICFpc0VtcHR5T2JqKHNvcnRlcikpIHtcclxuICAgICAgICBzb3J0ZXIuY29sdW1uICYmXHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgc29ydGVyOiBbc29ydGVyXSwgZGVmYXVsdFNvcnQ6IGZhbHNlIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBzb3J0ZXI6IFtdIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHBhcmFtcyA9IHsgLi4uZmlsdGVyUGFyYW1zLCAuLi5wYXJhbXMsIC4uLmFzY1BhcmFtcyB9O1xyXG4gICAgICBhdXRvU29ydCAmJiB0aGlzLnN0b3JlLnJlbG9hZCh7IHBhcmFtcyB9KTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3Qgb25DaGFuZ2VGbiA9IHRoaXMucHJvcHMub25DaGFuZ2U7XHJcblxyXG4gICAgYXV0b1BhZ2luYXRpb24gJiYgaGFuZGxlUGFnaW5hdGlvbigpO1xyXG4gICAgLy8g55So5oi35Lyg5LqGb25DaGFuZ2Xkv53nlZnnlKjmiLfoh6rkuLvlpITnkIbooajmoLzlj5jljJbnmoTmnYPliptcclxuICAgIGlmIChvbkNoYW5nZUZuKSB7XHJcbiAgICAgIHV0aWxzLmNhbGxiYWNrKG9uQ2hhbmdlRm4sIHRoaXMsIFtwYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRTdG9yZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6I635Y+W5pWw5o2u5qih5Z6L5a+56LGhXHJcbiAgICovXHJcbiAgZ2V0TW9kZWwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5nZXRNb2RlbCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6I+c5Y2V5pCc57Si6L+H5ruk5pi+56S6XHJcbiAgICogQHBhcmFtIHtTdHJpbmd9IHZhbFxyXG4gICAqL1xyXG4gIGhhbmRsZVNlYXJjaCh2YWwsIGZpZWxkT3B0aW9uLCBzZWFyY2hDb2xvcikge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlYXJjaFRleHQ6IHZhbCxcclxuICAgICAgZmllbGRPcHRpb246IGZpZWxkT3B0aW9uLFxyXG4gICAgICBzZWFyY2hDb2xvcjogc2VhcmNoQ29sb3IsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaooeWdl+WIl+ihqOenu+WKqOaOkuW6j1xyXG4gICAqL1xyXG4gIG1vdmVSb3cgPSAoZHJhZ0luZGV4LCBob3ZlckluZGV4LCBkcmFnLCB0YXJnZXQpID0+IHtcclxuICAgIGNvbnN0IF90aGlzID0gdGhpcztcclxuICAgIGxldCBkcmFnTm9kZSA9IGRyYWcucmVjb3JkO1xyXG4gICAgbGV0IHRhcmdldE5vZGUgPSB0YXJnZXQucmVjb3JkO1xyXG4gICAgZHJhZ05vZGUubW92ZUFycmF5KGRyYWdOb2RlLCB0YXJnZXROb2RlKTtcclxuICAgIGxldCBpZHMgPSBkcmFnTm9kZS5wYXJlbnROb2RlLmdldENoaWxkTm9kZUlkcygpO1xyXG4gICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgaWQ6IGRyYWdOb2RlLmlkLFxyXG4gICAgICBwYXJlbnRJZDogZHJhZ05vZGUuYXR0cmlidXRlLnBhcmVudElkLFxyXG4gICAgICBpZHM6IGlkcyxcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMucHJvcHMubW92ZVJvdykge1xyXG4gICAgICB0aGlzLnByb3BzLm1vdmVSb3cocGFyYW1zKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc3RvcmUucmVsb2FkKCk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgZmlsdGVyQ29sdW1uKGNoZWNrZWRWYWx1ZSkge1xyXG4gICAgaWYgKGNoZWNrZWRWYWx1ZS5sZW5ndGggPT0gMCkge1xyXG4gICAgICBtZXNzYWdlLndhcm5pbmcoXCLoh7PlsJHmmL7npLrkuIDliJfvvIFcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGZpbHRlckNvbHVtbnMgPSB0aGlzLnByb3BzLmNvbHVtbnMubWFwKChjb2w6IENvbHVtblR5cGU8e30+KSA9PiB7XHJcbiAgICAgIGNvbnN0IG5ld0NvbCA9IHsgLi4uY29sIH0gYXMgQ29sdW1uVHlwZTx7fT4gJiB7IGluaXRTaG93OiBib29sZWFuIH07XHJcbiAgICAgIGlmIChjaGVja2VkVmFsdWUuaW5jbHVkZXMoY29sLmRhdGFJbmRleCkpIHtcclxuICAgICAgICBuZXdDb2wuaW5pdFNob3cgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5ld0NvbC5pbml0U2hvdyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBuZXdDb2w7XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IHsgcmVzaXplQ29sdW1uIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKCFyZXNpemVDb2x1bW4pIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgY29sdW1uczogZmlsdGVyQ29sdW1ucyxcclxuICAgICAgICBjaGVja0NvbHVtbjogY2hlY2tlZFZhbHVlLFxyXG4gICAgICAgIGRlZmF1bHRDaGVjazogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgY29sczogZmlsdGVyQ29sdW1ucyxcclxuICAgICAgICBjaGVja0NvbHVtbjogY2hlY2tlZFZhbHVlLFxyXG4gICAgICAgIGRlZmF1bHRDaGVjazogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRTb3J0UGFyYW0oc29ydGVyLCBzb3J0U3RhdGUgPSBmYWxzZSkge1xyXG4gICAgY29uc3QgaXNNdWx0aXBsZSA9IEFycmF5LmlzQXJyYXkoc29ydGVyKTtcclxuICAgIGNvbnN0IHsgc29ydFNlYXJjaCA9IHRydWUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIXNvcnRTZWFyY2gpIHtcclxuICAgICAgcmV0dXJuIHt9O1xyXG4gICAgfVxyXG4gICAgbGV0IHNvcnRJbmZvID0ge307XHJcbiAgICBsZXQgb3JkZXJJdGVtcyA9IFtdO1xyXG4gICAgaWYgKCFpc0VtcHR5T2JqKHNvcnRlcikgJiYgIWlzTXVsdGlwbGUgJiYgc29ydGVyLmNvbHVtbikge1xyXG4gICAgICBvcmRlckl0ZW1zID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGNvbHVtbjogc29ydGVyLmNvbHVtbi5maWVsZCB8fCBzb3J0ZXIuY29sdW1uLmRhdGFJbmRleCxcclxuICAgICAgICAgIGFzYzogc29ydGVyLm9yZGVyID09IFwiYXNjZW5kXCIsXHJcbiAgICAgICAgfSxcclxuICAgICAgXTtcclxuICAgICAgaWYgKHNvcnRlci5jb2x1bW4pIHNvcnRJbmZvW3NvcnRlci5jb2x1bW4uZGF0YUluZGV4XSA9IHNvcnRlci5vcmRlcjtcclxuICAgIH0gZWxzZSBpZiAoaXNNdWx0aXBsZSkge1xyXG4gICAgICBzb3J0ZXIuZm9yRWFjaCgodikgPT4ge1xyXG4gICAgICAgIHNvcnRJbmZvW3YuY29sdW1uLmRhdGFJbmRleF0gPSB2Lm9yZGVyO1xyXG4gICAgICAgIGxldCBmaWVsZCA9IHYuY29sdW1uLmZpZWxkIHx8IHYuY29sdW1uLmRhdGFJbmRleDtcclxuICAgICAgICBvcmRlckl0ZW1zLnB1c2goe1xyXG4gICAgICAgICAgY29sdW1uOiBmaWVsZCxcclxuICAgICAgICAgIGFzYzogdi5vcmRlciA9PSBcImFzY2VuZFwiLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmIChzb3J0U3RhdGUpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgc29ydEluZm86IHNvcnRJbmZvLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB7IG9yZGVySXRlbXM6IEpTT04uc3RyaW5naWZ5KG9yZGVySXRlbXMpIH07XHJcbiAgfVxyXG4gIGdldENvbHVtbnMoKSB7XHJcbiAgICBjb25zdCB7IGNvbHVtbnMsIHNvcnRUeXBlLCBzb3J0SW5mbyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgc29ydEZpZWxkcyA9IFtdIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgZGVmYXVsdFNob3dDb2xzID0gY29sdW1ucy5maWx0ZXIoKGNvbHMpID0+IGNvbHMuaW5pdFNob3cgIT09IGZhbHNlKTtcclxuICAgIGNvbnN0IGNvbHMgPSBkZWZhdWx0U2hvd0NvbHMubWFwKChjb2wsIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmIChjb2wuZWxsaXBzaXMgJiYgIWNvbC5yZW5kZXIpIHtcclxuICAgICAgICBjb2wuZWxsaXBzaXMgPSB7XHJcbiAgICAgICAgICBzaG93VGl0bGU6IGZhbHNlLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29sLnJlbmRlciA9ICh0ZXh0KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8VG9vbHRpcCBwbGFjZW1lbnQ9XCJ0b3BMZWZ0XCIgdGl0bGU9e3RleHR9PlxyXG4gICAgICAgICAgICAgIHt0ZXh0fVxyXG4gICAgICAgICAgICA8L1Rvb2x0aXA+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChzb3J0RmllbGRzLmluZGV4T2YoY29sLmRhdGFJbmRleCkgPiAtMSkge1xyXG4gICAgICAgIGlmIChzb3J0VHlwZSA9PSBcInNpbmdsZVwiKSB7XHJcbiAgICAgICAgICBjb2wuc29ydGVyID0gdHJ1ZTtcclxuICAgICAgICAgIGNvbC5zb3J0T3JkZXIgPSBzb3J0SW5mb1tjb2wuZGF0YUluZGV4XVxyXG4gICAgICAgICAgICA/IHNvcnRJbmZvW2NvbC5kYXRhSW5kZXhdXHJcbiAgICAgICAgICAgIDogbnVsbDtcclxuICAgICAgICB9IGVsc2UgaWYgKHNvcnRUeXBlID09IFwibXVsdGlwbGVcIikge1xyXG4gICAgICAgICAgY29sLnNvcnRlciA9IHsgbXVsdGlwbGU6IGluZGV4IH07XHJcbiAgICAgICAgICBjb2wuc29ydE9yZGVyID0gc29ydEluZm9bY29sLmRhdGFJbmRleF1cclxuICAgICAgICAgICAgPyBzb3J0SW5mb1tjb2wuZGF0YUluZGV4XVxyXG4gICAgICAgICAgICA6IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBjb2w7XHJcbiAgICB9KTtcclxuICAgIGNvbHMubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICBpZiAoIWlzRW1wdHlPYmooaXRlbS5maWx0ZXJQcm9wcykpIHtcclxuICAgICAgICBsZXQgb2JqID0geyAuLi5pdGVtIH07XHJcbiAgICAgICAgY29uc3QgeyB0eXBlLCBwcm9wcywgc2VhcmNoS2V5IH0gPSBpdGVtLmZpbHRlclByb3BzO1xyXG4gICAgICAgIGxldCBEaXYgPSBudWxsO1xyXG4gICAgICAgIGxldCB0ZXh0ID0gaXRlbS50aXRsZTtcclxuICAgICAgICBEaXYgPSBnZXROb2RlKHR5cGUsIHtcclxuICAgICAgICAgIHBsYWNlaG9sZGVyOiBg5pCc57SiJHt0ZXh0fWAsXHJcbiAgICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICAgIHJlZjogdGhpcy50YWJsZVNlYXJjaFJlZixcclxuICAgICAgICB9KTtcclxuICAgICAgICBvYmogPSB7XHJcbiAgICAgICAgICBmaWx0ZXJEcm9wZG93bjogKHtcclxuICAgICAgICAgICAgc2V0U2VsZWN0ZWRLZXlzLFxyXG4gICAgICAgICAgICBzZWxlY3RlZEtleXMsXHJcbiAgICAgICAgICAgIGNvbmZpcm0sXHJcbiAgICAgICAgICAgIGNsZWFyRmlsdGVycyxcclxuICAgICAgICAgIH0pID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwic2VhcmNoXCIpfT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJzcGFjZVwiKX0+e0Rpdn08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxTcGFjZT5cclxuICAgICAgICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25maXJtKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGZpbHRlclBhcmFtcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdGaWx0ZXJQYXJhbXMgPSB7IC4uLmZpbHRlclBhcmFtcyB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGtleSA9IGl0ZW0uZmllbGQgfHwgaXRlbS5kYXRhSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICBuZXdGaWx0ZXJQYXJhbXNba2V5XSA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVTZWFyY2hSZWYuY3VycmVudD8uZ2V0VmFsdWUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJhbXM6IHsgLi4ubmV3RmlsdGVyUGFyYW1zIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNvcnRQYXJhbSA9IHRoaXMuZ2V0U29ydFBhcmFtKHRoaXMuc3RhdGUuc29ydGVyKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUubG9hZCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogeyAuLi5uZXdGaWx0ZXJQYXJhbXMsIC4uLnNvcnRQYXJhbSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiYnV0dG9uXCIpfVxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAg5p+l6K+iXHJcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9TcGFjZT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBmaWx0ZXJJY29uOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiA8U2VhcmNoT3V0bGluZWQgLz47XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4ub2JqLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29sc1tpbmRleF0gPSBvYmo7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGNvbHM7XHJcbiAgfVxyXG4gIHJlbmRlclRvb2xCYXIoKSB7XHJcbiAgICBsZXQgeyB0YWJsZVNpemUsIGNvbHVtbnMsIHNvcnRUeXBlIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IHsgZmlsdGVyQ29sdW1uLCBjb2x1bW5zOiBjb2xMaXN0cywgdG9vbGJhciB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgdGFibGVUb29sIH0gPSBjb25maWcoKTtcclxuICAgIGxldCB0b29scyA9IFtcInJlZnJlc2hcIiwgXCJzaXplXCIsIFwic29ydFwiLCBcImNvbHVtblwiXTtcclxuICAgIGxldCB0b29sc0NsaWNrID0ge30gYXMgYW55O1xyXG4gICAgaWYgKHRvb2xiYXIgPT0gdHJ1ZSkge1xyXG4gICAgICB0b29scyA9IHRvb2xiYXIub25Ub29sQ2xpY2tcclxuICAgICAgICA/IHRvb2xiYXIub25Ub29sQ2xpY2tcclxuICAgICAgICA6IFtcInJlZnJlc2hcIiwgXCJzaXplXCIsIFwic29ydFwiLCBcImNvbHVtblwiXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRvb2xzID0gdG9vbGJhci50b29sc1xyXG4gICAgICAgID8gdG9vbGJhci50b29sc1xyXG4gICAgICAgIDogdGFibGVUb29sLnRvb2xzXHJcbiAgICAgICAgPyB0YWJsZVRvb2wudG9vbHNcclxuICAgICAgICA6IHRvb2xzO1xyXG4gICAgICB0b29sc0NsaWNrID0gdG9vbGJhci5vblRvb2xDbGljayA/IHRvb2xiYXIub25Ub29sQ2xpY2sgOiB7fTtcclxuICAgIH1cclxuICAgIGNvbnN0IHNpemVJdGVtID0gW1xyXG4gICAgICB7IHRpdGxlOiBcIuWuveadvlwiLCBrZXk6IFwiZGVmYXVsdFwiIH0sXHJcbiAgICAgIHsgdGl0bGU6IFwi5Lit562JXCIsIGtleTogXCJtaWRkbGVcIiB9LFxyXG4gICAgICB7IHRpdGxlOiBcIue0p+WHkVwiLCBrZXk6IFwic21hbGxcIiB9LFxyXG4gICAgXTtcclxuICAgIGNvbnN0IHNvcnRJdGVtID0gW1xyXG4gICAgICB7IHRpdGxlOiBcIuWNleWtl+auteaOkuW6j1wiLCBrZXk6IFwic2luZ2xlXCIgfSxcclxuICAgICAgeyB0aXRsZTogXCLlpJrlrZfmrrXmjpLluo9cIiwga2V5OiBcIm11bHRpcGxlXCIgfSxcclxuICAgIF07XHJcbiAgICBjb25zdCBzb3J0Q29udGVudCA9IChcclxuICAgICAgPD5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImNvdGVudC10aXRsZVwiKX1cclxuICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgIGN1cnNvcjogdGhpcy5zdGF0ZS5kZWZhdWx0U29ydCA/IFwibm90LWFsbG93ZWRcIiA6IFwicG9pbnRlclwiLFxyXG4gICAgICAgICAgICBjb2xvcjogdGhpcy5zdGF0ZS5kZWZhdWx0U29ydCAmJiBcInJnYmEoMCwwLDAsLjQ1KVwiLFxyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc3RhdGUuZGVmYXVsdFNvcnQpIHtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHNvcnRlcjogW10sIHNvcnRJbmZvOiB7fSwgZGVmYXVsdFNvcnQ6IHRydWUgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHsgLi4udGhpcy5zdGF0ZS5maWx0ZXJQYXJhbXMgfTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5yZWxvYWQoeyBwYXJhbXMgfSk7XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgID5cclxuICAgICAgICAgIOaBouWkjem7mOiupOaOkuW6j1xyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIHtzb3J0SXRlbS5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAga2V5PXtpdGVtLmtleX1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgc29ydGVyOiBbXSxcclxuICAgICAgICAgICAgICAgICAgc29ydEluZm86IHt9LFxyXG4gICAgICAgICAgICAgICAgICBzb3J0VHlwZTogaXRlbS5rZXksXHJcbiAgICAgICAgICAgICAgICAgIGRlZmF1bHRTb3J0OiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0geyAuLi50aGlzLnN0YXRlLmZpbHRlclBhcmFtcyB9O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5yZWxvYWQoeyBwYXJhbXMgfSk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHtzb3J0VHlwZSA9PSBpdGVtLmtleSA/IChcclxuICAgICAgICAgICAgICAgIDxhPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiY29udGVudC10aWVtXCIpfT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAyMCB9fT5cclxuICAgICAgICAgICAgICAgICAgICAgIHtzb3J0VHlwZSA9PSBpdGVtLmtleSAmJiA8Q2hlY2tPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PiB7aXRlbS50aXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50LXRpZW1cIil9PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAyMCB9fT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj4ge2l0ZW0udGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSl9XHJcbiAgICAgICAge3RoaXMuc3RhdGUuc29ydGVyLmxlbmd0aCA+IDAgJiYgKFxyXG4gICAgICAgICAgPD5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiY290ZW50LXRpdGxlXCIpfVxyXG4gICAgICAgICAgICAgIHN0eWxlPXt7IGNvbG9yOiBcInJnYmEoMCwwLDAsLjQ1KVwiIH19XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICDlvZPliY3mjpLluo9cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIHt0aGlzLnN0YXRlLnNvcnRlci5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50LXRpZW1cIil9IGtleT17aW5kZXh9PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAyMCB9fT5cclxuICAgICAgICAgICAgICAgICAgICB7aXRlbS5vcmRlciA9PSBcImFzY2VuZFwiID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgPFNvcnRBc2NlbmRpbmdPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICA8U29ydERlc2NlbmRpbmdPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PiB7aXRlbS5jb2x1bW4udGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgIDwvPlxyXG4gICAgICAgICl9XHJcbiAgICAgIDwvPlxyXG4gICAgKTtcclxuICAgIGNvbnN0IHNpemVDb250ZW50ID0gKFxyXG4gICAgICA8PlxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJjb3RlbnQtdGl0bGVcIil9PuihqOagvOWvhuW6pjwvZGl2PlxyXG4gICAgICAgIHtzaXplSXRlbS5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAga2V5PXtpdGVtLmtleX1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgdGFibGVTaXplOiBpdGVtLmtleSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7dGFibGVTaXplID09IGl0ZW0ua2V5ID8gKFxyXG4gICAgICAgICAgICAgICAgPGE+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50LXRpZW1cIil9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgd2lkdGg6IDIwIH19PlxyXG4gICAgICAgICAgICAgICAgICAgICAge3RhYmxlU2l6ZSA9PSBpdGVtLmtleSAmJiA8Q2hlY2tPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PiB7aXRlbS50aXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50LXRpZW1cIil9PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAyMCB9fT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj4ge2l0ZW0udGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSl9XHJcbiAgICAgIDwvPlxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBkZWZhdWx0U2hvd0NvbHMgPSBjb2x1bW5zLmZpbHRlcigoY29scykgPT4gY29scy5pbml0U2hvdyAhPT0gZmFsc2UpO1xyXG5cclxuICAgIGNvbnN0IGNvbnRlbnQgPSAoXHJcbiAgICAgIDxDaGVja2JveC5Hcm91cFxyXG4gICAgICAgIG9uQ2hhbmdlPXt0aGlzLmZpbHRlckNvbHVtbi5iaW5kKHRoaXMpfVxyXG4gICAgICAgIG9wdGlvbnM9e2NvbExpc3RzLm1hcChcclxuICAgICAgICAgIChjb2w6IENvbHVtblR5cGU8e30+ICYgeyBmaWx0ZXJDb2x1bW46IGJvb2xlYW47IGRhdGFJbmRleDogYW55IH0pID0+IHtcclxuICAgICAgICAgICAgaWYgKCFjb2wuZGF0YUluZGV4KSB7XHJcbiAgICAgICAgICAgICAgY29sLmRhdGFJbmRleCA9IGNvbC50aXRsZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgIGxhYmVsOiBjb2wudGl0bGUsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IGNvbC5kYXRhSW5kZXgsXHJcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IGNvbC5maWx0ZXJDb2x1bW4gPT09IGZhbHNlLFxyXG4gICAgICAgICAgICB9IGFzIENoZWNrYm94T3B0aW9uVHlwZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApfVxyXG4gICAgICAgIC8vIGRlZmF1bHRWYWx1ZT17ZGVmYXVsdFNob3dDb2xzLm1hcCgoY29sKSA9PiBjb2wuZGF0YUluZGV4KX1cclxuICAgICAgICB2YWx1ZT17XHJcbiAgICAgICAgICB0aGlzLnN0YXRlLmRlZmF1bHRDaGVja1xyXG4gICAgICAgICAgICA/IGRlZmF1bHRTaG93Q29scy5tYXAoKGNvbCkgPT4gY29sLmRhdGFJbmRleClcclxuICAgICAgICAgICAgOiB0aGlzLnN0YXRlLmNoZWNrQ29sdW1uXHJcbiAgICAgICAgfVxyXG4gICAgICA+PC9DaGVja2JveC5Hcm91cD5cclxuICAgICk7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwidGFibGUtdG9vbC1iYXJcIil9PlxyXG4gICAgICAgIHt0b29scy5pbmRleE9mKFwiY29sdW1uXCIpID4gLTEgJiYgKFxyXG4gICAgICAgICAgPGRpdiBzdHlsZT17eyBmb250U2l6ZTogMTQgfX0+XHJcbiAgICAgICAgICAgIDxQb3BvdmVyXHJcbiAgICAgICAgICAgICAgdGl0bGU9XCLpgInmi6nmmL7npLrnmoTliJdcIlxyXG4gICAgICAgICAgICAgIGNvbnRlbnQ9e2NvbnRlbnR9XHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tUmlnaHRcIlxyXG4gICAgICAgICAgICAgIHRyaWdnZXI9XCJjbGlja1wiXHJcbiAgICAgICAgICAgICAgb3ZlcmxheVN0eWxlPXt7IG1pbldpZHRoOiA0MTAsIG1heFdpZHRoOiA0NTAgfX1cclxuICAgICAgICAgICAgICAvLyBnZXRQb3B1cENvbnRhaW5lcj17KCkgPT4gdGhpcy50aEljb25SZWYuY3VycmVudH1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxBcHBzdG9yZU91dGxpbmVkIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiYXBwLXN0b3JlLWljb25cIil9IC8+XHJcbiAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICl9XHJcbiAgICAgICAge3Rvb2xzLmluZGV4T2YoXCJzb3J0XCIpID4gLTEgJiYgKFxyXG4gICAgICAgICAgPGRpdiBzdHlsZT17eyBtYXJnaW5SaWdodDogOCwgZm9udFNpemU6IDE0IH19PlxyXG4gICAgICAgICAgICA8UG9wb3ZlciBwbGFjZW1lbnQ9XCJib3R0b21cIiBjb250ZW50PXtzb3J0Q29udGVudH0gdHJpZ2dlcj1cImNsaWNrXCI+XHJcbiAgICAgICAgICAgICAgPFNvcnRBc2NlbmRpbmdPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIHt0b29scy5pbmRleE9mKFwic2l6ZVwiKSA+IC0xICYmIChcclxuICAgICAgICAgIDxkaXYgc3R5bGU9e3sgbWFyZ2luUmlnaHQ6IDgsIGZvbnRTaXplOiAxNCB9fT5cclxuICAgICAgICAgICAgPFBvcG92ZXIgcGxhY2VtZW50PVwiYm90dG9tXCIgY29udGVudD17c2l6ZUNvbnRlbnR9IHRyaWdnZXI9XCJjbGlja1wiPlxyXG4gICAgICAgICAgICAgIDxDb2x1bW5IZWlnaHRPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIHt0b29scy5pbmRleE9mKFwicmVmcmVzaFwiKSA+IC0xICYmIChcclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgc3R5bGU9e3sgbWFyZ2luUmlnaHQ6IDgsIGZvbnRTaXplOiAxNCwgY3Vyc29yOiBcInBvaW50ZXJcIiB9fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0geyAuLi50aGlzLnN0YXRlLmZpbHRlclBhcmFtcyB9O1xyXG4gICAgICAgICAgICAgIGlmICh0b29sc0NsaWNrLm9uUmVmcmVzaCkge1xyXG4gICAgICAgICAgICAgICAgdG9vbHNDbGljay5vblJlZnJlc2goKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5sb2FkKHsgcGFyYW1zIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPFJlZG9PdXRsaW5lZCAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxuICByZW5kZXIoKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzLFxyXG4gICAgICB7XHJcbiAgICAgICAgbG9hZGluZyxcclxuICAgICAgICBkYXRhU291cmNlLFxyXG4gICAgICAgIHBhZ2luYXRpb24gPSB7fSxcclxuICAgICAgICBzZWFyY2hUZXh0LFxyXG4gICAgICAgIGZpZWxkT3B0aW9uLFxyXG4gICAgICAgIHNlYXJjaENvbG9yLFxyXG4gICAgICAgIHRhYmxlU2l6ZSxcclxuICAgICAgfSA9IHRoaXMuc3RhdGUsXHJcbiAgICAgIHByb3BzID0gdXRpbHMub21pdChcclxuICAgICAgICB0aGlzLnByb3BzLFxyXG4gICAgICAgIFtcclxuICAgICAgICAgIFwic3RvcmVcIixcclxuICAgICAgICAgIFwib25DaGFuZ2VcIixcclxuICAgICAgICAgIFwiY29sdW1uc1wiLFxyXG4gICAgICAgICAgXCJyZXNldENvbHVtblwiLFxyXG4gICAgICAgICAgXCJ0b29sYmFyXCIsXHJcbiAgICAgICAgICBcInNvcnRGaWVsZHNcIixcclxuICAgICAgICAgIFwiZmlsdGVyQ29sdW1uXCIsXHJcbiAgICAgICAgICBcInNvcnRTZWFyY2hcIlxyXG4gICAgICAgIF0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcm93S2V5OiBcImlkXCIsXHJcbiAgICAgICAgICBjbGlja0NoYW5nZUNvbG9yOiBmYWxzZSxcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICBpZiAocHJvcHMucGFnaW5hdGlvbiAhPT0gZmFsc2UpIHtcclxuICAgICAgcHJvcHMucGFnaW5hdGlvbiA9IHtcclxuICAgICAgICBwb3NpdGlvbjogW1wiYm90dG9tUmlnaHRcIl0sXHJcbiAgICAgICAgc2hvd1NpemVDaGFuZ2VyOiB0cnVlLFxyXG4gICAgICAgIHNob3dRdWlja0p1bXBlcjogdHJ1ZSxcclxuICAgICAgICAuLi5wcm9wcy5wYWdpbmF0aW9uLFxyXG4gICAgICAgIC4uLnBhZ2luYXRpb24sXHJcbiAgICAgIH07XHJcbiAgICAgIGlmIChwcm9wcy5zaG93VG90YWwgPT0gdHJ1ZSkge1xyXG4gICAgICAgIHByb3BzLnBhZ2luYXRpb24uc2hvd1RvdGFsID0gZnVuY3Rpb24gKHRvdGFsLCBbZnJvbSwgdG9dKSB7XHJcbiAgICAgICAgICAvLyByZXR1cm4gXCLmmL7npLogXCIgKyBmcm9tICsgXCIgLSBcIiArIHRvICsgXCLmnaHvvIzlhbEgXCIgKyB0b3RhbCArIFwiIOadoVwiO1xyXG4gICAgICAgICAgcmV0dXJuIFwi5YWxIFwiICsgdG90YWwgKyBcIiDmnaFcIjtcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBwcm9wcy5vbkNoYW5nZSA9IGZ1bmN0aW9uIChwYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhKSB7XHJcbiAgICAgIF90aGlzLm9uQ2hhbmdlKHBhZ2luYXRpb24sIGZpbHRlcnMsIHNvcnRlciwgZXh0cmEpO1xyXG4gICAgfTtcclxuICAgIGlmIChwcm9wcy5jbGlja0NoYW5nZUNvbG9yKSB7XHJcbiAgICAgIGNvbnN0IG9uUm93Rm4gPSBwcm9wcy5vblJvdztcclxuICAgICAgcHJvcHMub25Sb3cgPSBmdW5jdGlvbiAocmVjb3JkLCBpbmRleCkge1xyXG4gICAgICAgIHZhciBjdXN0b20gPSBvblJvd0ZuID8gb25Sb3dGbihyZWNvcmQsIGluZGV4KSA6IHt9O1xyXG4gICAgICAgIGNvbnN0IG9uQ2xpY2tGbiA9IGN1c3RvbS5vbkNsaWNrO1xyXG4gICAgICAgIGN1c3RvbS5vbkNsaWNrID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIGFjdGl2ZUluZGV4OiBpbmRleCwgLy/ojrflj5bngrnlh7vooYznmoTntKLlvJVcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdXRpbHMuY2FsbGJhY2sob25DbGlja0ZuLCBfdGhpcywgW2V2ZW50XSk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gY3VzdG9tO1xyXG4gICAgICB9O1xyXG4gICAgICBwcm9wcy5yb3dDbGFzc05hbWUgPSBmdW5jdGlvbiAocmVjb3JkLCBpbmRleCkge1xyXG4gICAgICAgIHJldHVybiBpbmRleCA9PT0gX3RoaXMuc3RhdGUuYWN0aXZlSW5kZXhcclxuICAgICAgICAgID8gYCR7c3R5bGVzLmNsaWNrUm93U3R5bGV9YFxyXG4gICAgICAgICAgOiBcIlwiO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgbGV0IG5ld0RhdGFTb3VyY2UgPSBbXTtcclxuICAgIGlmIChzZWFyY2hUZXh0KSB7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSB0cmVlVXRpbHMuZ2V0U2VhcmNoTWVudURhdGFzKFxyXG4gICAgICAgIHRoaXMsXHJcbiAgICAgICAgc2VhcmNoVGV4dCxcclxuICAgICAgICBmaWVsZE9wdGlvbixcclxuICAgICAgICBzZWFyY2hDb2xvclxyXG4gICAgICApO1xyXG4gICAgICBuZXdEYXRhU291cmNlID0gZGF0YS50cmVlRGF0YXM7XHJcbiAgICAgIHByb3BzLmV4cGFuZGVkUm93S2V5cyA9IGRhdGEub3BlbktleXM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBuZXdEYXRhU291cmNlID0gZGF0YVNvdXJjZTtcclxuICAgIH1cclxuICAgIHByb3BzLnN0b3JlID0gcHJvcHMuc3RvcmUgfHwge307XHJcbiAgICBwcm9wcy5zdG9yZS5hdXRvTG9hZCA9IHByb3BzLnN0b3JlLmF1dG9Mb2FkID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZTtcclxuICAgIGNvbnN0IHsgZHJhZ2FibGUgfSA9IF90aGlzLnByb3BzO1xyXG4gICAgY29uc3QgZHJhZ2FibGVQcm9wcyA9XHJcbiAgICAgIGRyYWdhYmxlID09PSB0cnVlXHJcbiAgICAgICAgPyB7XHJcbiAgICAgICAgICAgIGNvbXBvbmVudHM6IEJvZHlSb3dDb21wb25lbnQsXHJcbiAgICAgICAgICAgIG9uUm93OiAocmVjb3JkLCBpbmRleCkgPT4gKHtcclxuICAgICAgICAgICAgICBpbmRleCxcclxuICAgICAgICAgICAgICByZWNvcmQsXHJcbiAgICAgICAgICAgICAgbW92ZVJvdzogdGhpcy5tb3ZlUm93LFxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgIH1cclxuICAgICAgICA6IHt9O1xyXG4gICAgbGV0IHsgcmVzaXplQ29sdW1uIH0gPSB0aGlzLnByb3BzO1xyXG5cclxuICAgIGNvbnN0IHJlc2l6ZVByb3BzID1cclxuICAgICAgcmVzaXplQ29sdW1uID09PSB0cnVlID8geyBjb21wb25lbnRzOiB0aGlzLmNvbXBvbmVudHMgfSA6IG51bGw7XHJcbiAgICBjb25zdCB7IHRhYmxlVG9vbCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgdG9vbEZsYWcgPSB0cnVlO1xyXG4gICAgbGV0IHRvb2xwcm9wcyA9XHJcbiAgICAgIHRoaXMucHJvcHMudG9vbGJhciA9PT0gZmFsc2UgfHwgdGhpcy5wcm9wcy50b29sYmFyPy5zaG93ID09PSBmYWxzZVxyXG4gICAgICAgID8gZmFsc2VcclxuICAgICAgICA6IHRydWU7XHJcbiAgICBpZiAoIXRvb2xwcm9wcykge1xyXG4gICAgICB0b29sRmxhZyA9IHRvb2xwcm9wcztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRvb2xGbGFnID0gdGFibGVUb29sLnNob3cgPT09IGZhbHNlID8gZmFsc2UgOiB0cnVlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgRGVmYXVsdFRhYmxlID0gKFxyXG4gICAgICA8PlxyXG4gICAgICAgIHt0b29sRmxhZyAmJiB0aGlzLnJlbmRlclRvb2xCYXIoKX1cclxuICAgICAgICA8VGFibGVcclxuICAgICAgICAgIGNoaWxkcmVuQ29sdW1uTmFtZT1cImNoaWxkTm9kZXNcIlxyXG4gICAgICAgICAgc2hlaXRlbVxyXG4gICAgICAgICAgZGF0YVNvdXJjZT17bmV3RGF0YVNvdXJjZX1cclxuICAgICAgICAgIGNvbHVtbnM9e3RoaXMuZ2V0Q29sdW1ucygpfVxyXG4gICAgICAgICAgbG9hZGluZz17bG9hZGluZ31cclxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzW1wibnNjLXRhYmxlXCJdfVxyXG4gICAgICAgICAgbG9jYWxlPXt7XHJcbiAgICAgICAgICAgIGVtcHR5VGV4dDogPE5vRGF0YSBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInRhYmxlLW5vZGF0YVwiKX0gLz4sXHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgICAgc2Nyb2xsPXt7IHg6IFwibWF4LWNvbnRlbnRcIiB9fVxyXG4gICAgICAgICAgey4uLnJlc2l6ZVByb3BzfVxyXG4gICAgICAgICAgey4uLnByb3BzfVxyXG4gICAgICAgICAgey4uLmRyYWdhYmxlUHJvcHN9XHJcbiAgICAgICAgICBzaXplPXt0YWJsZVNpemV9XHJcbiAgICAgICAgLz5cclxuICAgICAgPC8+XHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiBkcmFnYWJsZSA9PT0gdHJ1ZSA/IChcclxuICAgICAgPERuZFByb3ZpZGVyIGJhY2tlbmQ9e0hUTUw1QmFja2VuZH0+e0RlZmF1bHRUYWJsZX08L0RuZFByb3ZpZGVyPlxyXG4gICAgKSA6IChcclxuICAgICAgRGVmYXVsdFRhYmxlXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgd2l0aFpoTG9jYWxlKE5TQ1RhYmxlKTtcclxuIl19
1025
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvdGFibGUvaW5kZXgudHN4Il0sIm5hbWVzIjpbIkFwcHN0b3JlT3V0bGluZWQiLCJDaGVja091dGxpbmVkIiwiQ29sdW1uSGVpZ2h0T3V0bGluZWQiLCJTZWFyY2hPdXRsaW5lZCIsIlNvcnRBc2NlbmRpbmdPdXRsaW5lZCIsIlNvcnREZXNjZW5kaW5nT3V0bGluZWQiLCJSZWRvT3V0bGluZWQiLCJpc0VtcHR5T2JqIiwiU3RvcmUiLCJQYWdlU3RvcmUiLCJ1dGlscyIsIlJlYWN0IiwiRG5kUHJvdmlkZXIiLCJCb2R5Um93IiwiRG5kQ29udGV4dFR5cGUiLCJJQm9keVJvd1Byb3BzIiwidHJlZVV0aWxzIiwic3R5bGVzIiwiQm9keVJvd0NvbXBvbmVudCIsIkhUTUw1QmFja2VuZCIsIndpdGhaaExvY2FsZSIsIlJlc2l6YWJsZSIsImdldExlc3MiLCJnZXROb2RlIiwiTm9EYXRhIiwiZ2V0U3RvcmFnZSIsImNvbmZpZyIsIlJlc2l6ZWFibGVUaXRsZSIsInByb3BzIiwib25SZXNpemUiLCJ3aWR0aCIsInJlc3RQcm9wcyIsImVuYWJsZVVzZXJTZWxlY3RIYWNrIiwiTlNDVGFibGUiLCJjcmVhdGVSZWYiLCJvbkJlZm9yZUxvYWQiLCJsb2FkIiwiaGVhZGVyIiwiY2VsbCIsImluZGV4IiwiZSIsInNpemUiLCJjb2xzIiwic3RhdGUiLCJuZXh0Q29sdW1ucyIsInNldFN0YXRlIiwiZXYiLCJkYXRhIiwiSlNPTiIsInBhcnNlIiwiX3RoaXMiLCJldmVudFR5cGUiLCJwYXlsb2FkIiwidGFibGVTaXplIiwiZHJhZ0luZGV4IiwiaG92ZXJJbmRleCIsImRyYWciLCJ0YXJnZXQiLCJkcmFnTm9kZSIsInJlY29yZCIsInRhcmdldE5vZGUiLCJtb3ZlQXJyYXkiLCJpZHMiLCJwYXJlbnROb2RlIiwiZ2V0Q2hpbGROb2RlSWRzIiwicGFyYW1zIiwiaWQiLCJwYXJlbnRJZCIsImF0dHJpYnV0ZSIsIm1vdmVSb3ciLCJzdG9yZSIsInJlbG9hZCIsIm1vZGFsIiwidHlwZSIsInN0b3JlUHJlZml4IiwiYXV0b1R5cGUiLCJjb250ZW50IiwiZGF0YVNvdXJjZSIsImNvbHVtbnMiLCJsb2FkaW5nIiwicGFnaW5hdGlvbiIsImFjdGl2ZUluZGV4Iiwic2VhcmNoVGV4dCIsImZpZWxkT3B0aW9uIiwic2VhcmNoQ29sb3IiLCJzb3J0cyIsImZpbHRlclBhcmFtcyIsInNvcnRUeXBlIiwic29ydGVyIiwic29ydEluZm8iLCJkZWZhdWx0U29ydCIsImNoZWNrQ29sdW1uIiwiZGVmYXVsdENoZWNrIiwibGlzdGVuZXJzIiwibGlzdGVuZXJzUHJvcHMiLCJyZXN0U3RvcmUiLCJzdG9yZVByb3BzIiwibW9kZWwiLCJjb21wb25lbnQiLCJvcHRpb25zIiwiY2FsbGJhY2siLCJkYXRhQ2hhbmdlZCIsIm1vZGVsRGF0YSIsInBhZ2luZyIsImdldFBhZ2luYXRpb24iLCJvbkVycm9yTG9hZCIsImVyciIsInJlc3BvbnNlIiwiYXV0b0xvYWQiLCJPYmplY3QiLCJhc3NpZ24iLCJjdXJyZW50IiwicmVzaXplQ29sdW1uIiwic2V0RGF0YSIsIndpbmRvdyIsImFkZEV2ZW50TGlzdGVuZXIiLCJsaXN0ZW5NZXNzYWdlIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInByZXZQcm9wcyIsInByZVN0YXRlIiwicmVzZXRDb2x1bW4iLCJuZXdDb2xzIiwiY29sc3MiLCJtYXAiLCJjb2wiLCJ0ZW1wIiwib25IZWFkZXJDZWxsIiwiY29sdW1uIiwiaGFuZGxlUmVzaXplIiwicHVzaCIsImZpbHRlcnMiLCJleHRyYSIsImF1dG9PbkNoYW5nZSIsImF1dG9Tb3J0IiwiYXV0b1BhZ2luYXRpb24iLCJvbkNoYW5nZSIsImlzTXVsdGlwbGUiLCJBcnJheSIsImlzQXJyYXkiLCJoYW5kbGVQYWdpbmF0aW9uIiwiZ2V0UGFnaW5hdGlvbkJ5U3RvcmUiLCJwIiwiY3VycmVudEtleSIsInBhZ2VTaXplS2V5IiwicGFnZVNpemUiLCJhc2NQYXJhbXMiLCJnZXRTb3J0UGFyYW0iLCJvbkNoYW5nZUZuIiwiZ2V0TW9kZWwiLCJ2YWwiLCJjaGVja2VkVmFsdWUiLCJsZW5ndGgiLCJ3YXJuaW5nIiwiZmlsdGVyQ29sdW1ucyIsIm5ld0NvbCIsImluY2x1ZGVzIiwiZGF0YUluZGV4IiwiaW5pdFNob3ciLCJzb3J0U3RhdGUiLCJzb3J0U2VhcmNoIiwib3JkZXJJdGVtcyIsImZpZWxkIiwiYXNjIiwib3JkZXIiLCJmb3JFYWNoIiwidiIsInN0cmluZ2lmeSIsImNvbnNvbGUiLCJsb2ciLCJzb3J0RmllbGRzIiwiZGVmYXVsdFNob3dDb2xzIiwiZmlsdGVyIiwiZWxsaXBzaXMiLCJyZW5kZXIiLCJzaG93VGl0bGUiLCJ0ZXh0IiwiaW5kZXhPZiIsInNvcnRPcmRlciIsIm11bHRpcGxlIiwiaXRlbSIsImZpbHRlclByb3BzIiwib2JqIiwic2VhcmNoS2V5IiwiRGl2IiwidGl0bGUiLCJwbGFjZWhvbGRlciIsInJlZiIsInRhYmxlU2VhcmNoUmVmIiwiZmlsdGVyRHJvcGRvd24iLCJzZXRTZWxlY3RlZEtleXMiLCJzZWxlY3RlZEtleXMiLCJjb25maXJtIiwiY2xlYXJGaWx0ZXJzIiwibmV3RmlsdGVyUGFyYW1zIiwia2V5IiwiZ2V0VmFsdWUiLCJzb3J0UGFyYW0iLCJmaWx0ZXJJY29uIiwiZmlsdGVyQ29sdW1uIiwiY29sTGlzdHMiLCJ0b29sYmFyIiwidGFibGVUb29sIiwidG9vbHMiLCJ0b29sc0NsaWNrIiwib25Ub29sQ2xpY2siLCJzaXplSXRlbSIsInNvcnRJdGVtIiwic29ydENvbnRlbnQiLCJjdXJzb3IiLCJjb2xvciIsInNpemVDb250ZW50IiwiYmluZCIsImxhYmVsIiwidmFsdWUiLCJkaXNhYmxlZCIsImZvbnRTaXplIiwibWluV2lkdGgiLCJtYXhXaWR0aCIsIm1hcmdpblJpZ2h0Iiwib25SZWZyZXNoIiwib21pdCIsInJvd0tleSIsImNsaWNrQ2hhbmdlQ29sb3IiLCJwb3NpdGlvbiIsInNob3dTaXplQ2hhbmdlciIsInNob3dRdWlja0p1bXBlciIsInNob3dUb3RhbCIsInRvdGFsIiwiZnJvbSIsInRvIiwib25Sb3dGbiIsIm9uUm93IiwiY3VzdG9tIiwib25DbGlja0ZuIiwib25DbGljayIsImV2ZW50Iiwicm93Q2xhc3NOYW1lIiwiY2xpY2tSb3dTdHlsZSIsIm5ld0RhdGFTb3VyY2UiLCJnZXRTZWFyY2hNZW51RGF0YXMiLCJ0cmVlRGF0YXMiLCJleHBhbmRlZFJvd0tleXMiLCJvcGVuS2V5cyIsImRyYWdhYmxlIiwiZHJhZ2FibGVQcm9wcyIsImNvbXBvbmVudHMiLCJyZXNpemVQcm9wcyIsInRvb2xGbGFnIiwidG9vbHByb3BzIiwic2hvdyIsIkRlZmF1bHRUYWJsZSIsInJlbmRlclRvb2xCYXIiLCJnZXRDb2x1bW5zIiwiZW1wdHlUZXh0IiwieCIsIkNvbXBvbmVudCIsImRyYWdVcmwiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQ0VBLGdCQURGLEVBRUVDLGFBRkYsRUFHRUMsb0JBSEYsRUFJRUMsY0FKRixFQUtFQyxxQkFMRixFQU1FQyxzQkFORixFQU9FQyxZQVBGLFFBUU8sbUJBUlA7QUFTQSxTQUFTQyxVQUFULFFBQTJCLG1CQUEzQjtBQUNBLE9BQU9DLEtBQVAsSUFBZ0JDLFNBQWhCLFFBQTZDLGFBQTdDO0FBQ0EsU0FBU0MsS0FBVCxRQUFzQix1QkFBdEI7QUFjQSxPQUFPLEtBQUtDLEtBQVosTUFBdUIsT0FBdkI7QUFDQSxTQUFTQyxXQUFULFFBQTRCLFdBQTVCO0FBQ0EsT0FBT0MsT0FBUCxJQUFrQkMsY0FBbEIsRUFBa0NDLGFBQWxDLFFBQXVELG1CQUF2RDtBQUNBLE9BQU9DLFNBQVAsTUFBc0IsaUJBQXRCO0FBQ0EsT0FBT0MsTUFBUCxNQUFtQixxQkFBbkI7QUFDQSxJQUFRQyxnQkFBUixHQUEyQ0wsT0FBM0MsQ0FBUUssZ0JBQVI7QUFBQSxJQUEw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Q0FBM0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBARGVzY3JpcHR0aW9uOlxyXG4gKiBAdmVyc2lvbjpcclxuICogQEF1dGhvcjogcnh6aHVcclxuICogQERhdGU6IDIwMjEtMDMtMjMgMDg6NDY6MjBcclxuICogQExhc3RFZGl0b3JzOiByeHpodVxyXG4gKiBATGFzdEVkaXRUaW1lOiAyMDIxLTAzLTIzIDEwOjMwOjQyXHJcbiAqL1xyXG5pbXBvcnQge1xyXG4gIEFwcHN0b3JlT3V0bGluZWQsXHJcbiAgQ2hlY2tPdXRsaW5lZCxcclxuICBDb2x1bW5IZWlnaHRPdXRsaW5lZCxcclxuICBTZWFyY2hPdXRsaW5lZCxcclxuICBTb3J0QXNjZW5kaW5nT3V0bGluZWQsXHJcbiAgU29ydERlc2NlbmRpbmdPdXRsaW5lZCxcclxuICBSZWRvT3V0bGluZWQsXHJcbn0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmltcG9ydCB7IGlzRW1wdHlPYmogfSBmcm9tIFwiQGJqLW5zYy9mdW5jdGlvbnNcIjtcclxuaW1wb3J0IFN0b3JlLCB7IFBhZ2VTdG9yZSwgU3RvcmVQcm9wcyB9IGZyb20gXCJAYmotbnNjL21zblwiO1xyXG5pbXBvcnQgeyB1dGlscyB9IGZyb20gXCJAYmotbnNjL21zbi9saWIvdXRpbHNcIjtcclxuaW1wb3J0IHtcclxuICBCdXR0b24sXHJcbiAgQ2hlY2tib3gsXHJcbiAgQ2hlY2tib3hPcHRpb25UeXBlLFxyXG4gIE1lbnUsXHJcbiAgbWVzc2FnZSxcclxuICBQb3BvdmVyLFxyXG4gIFNwYWNlLFxyXG4gIFRhYmxlLFxyXG4gIFRhYmxlUHJvcHMsXHJcbiAgVG9vbHRpcCxcclxufSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgeyBDb2x1bW5UeXBlLCBUYWJsZVBhZ2luYXRpb25Db25maWcgfSBmcm9tIFwiYW50ZC9saWIvdGFibGVcIjtcclxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IERuZFByb3ZpZGVyIH0gZnJvbSBcInJlYWN0LWRuZFwiO1xyXG5pbXBvcnQgQm9keVJvdywgeyBEbmRDb250ZXh0VHlwZSwgSUJvZHlSb3dQcm9wcyB9IGZyb20gXCIuLi9jb21tb24vQm9keVJvd1wiO1xyXG5pbXBvcnQgdHJlZVV0aWxzIGZyb20gXCIuLi8uLi90cmVlVXRpbHNcIjtcclxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9pbmRleC5tb2R1bGUubGVzc1wiO1xyXG5jb25zdCB7IEJvZHlSb3dDb21wb25lbnQsIEhUTUw1QmFja2VuZCB9ID0gQm9keVJvdztcclxuaW1wb3J0IHdpdGhaaExvY2FsZSBmcm9tIFwiLi4vY29tbW9uL3dpdGhaaExvY2FsZVwiO1xyXG5pbXBvcnQgeyBSZXNpemFibGUgfSBmcm9tIFwicmVhY3QtcmVzaXphYmxlXCI7XHJcbmltcG9ydCBcIi4vcmVzaXplLm1vZHVsZS5sZXNzXCI7XHJcbmltcG9ydCB7IGdldExlc3MsIGdldE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IE5vRGF0YSBmcm9tIFwiLi4vLi4vYmFzZS9jb21tb24vTm9EYXRhXCI7XHJcbmltcG9ydCB7IGdldFN0b3JhZ2UgfSBmcm9tIFwiQGJqLW5zYy9mdW5jdGlvbnNcIjtcclxuaW1wb3J0IGNvbmZpZyBmcm9tIFwiLi4vLi4vY29uZmlnXCI7XHJcbmludGVyZmFjZSBJRHJhZ1BhcmFtcyB7XHJcbiAgaWQ6IHN0cmluZyB8IG51bWJlcjtcclxuICBpZHM6IEFycmF5PHN0cmluZyB8IG51bWJlcj47XHJcbiAgcGFyZW50SWQ6IHN0cmluZyB8IG51bWJlcjtcclxufVxyXG4vLyBpbnRlcmZhY2UgU3RvcmVQcm9wcyB7fVxyXG5cclxuZXhwb3J0IHR5cGUgU3RvcmVUeXBlID0gXCJQYWdlU3RvcmVcIiB8IFwiVHJlZVN0b3JlXCIgfCBcIkJhc2VTdG9yZVwiO1xyXG5cclxuaW50ZXJmYWNlIE5TQ1RhYmxlUGFnaW5hdGlvbiBleHRlbmRzIFRhYmxlUGFnaW5hdGlvbkNvbmZpZyB7XHJcbiAgdG90YWxLZXk/OiBzdHJpbmc7XHJcbiAgcGFnZVNpemVLZXk/OiBzdHJpbmc7XHJcbiAgY3VycmVudEtleT86IHN0cmluZztcclxufVxyXG5cclxuaW50ZXJmYWNlIFRvb2xCYXJQcm9wcyB7XHJcbiAgc2hvdzogYm9vbGVhbjtcclxuICB0b29scz86IEFycmF5PHN0cmluZz47XHJcbiAgb25Ub29sQ2xpY2s/OiB7IG9uUmVmcmVzaD86IGFueTsgb25Tb3J0PzogYW55IH07XHJcbn1cclxuaW50ZXJmYWNlIE5TQ1RhYmxlUHJvcHMgZXh0ZW5kcyBUYWJsZVByb3BzPGFueT4ge1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBzaG93VG90YWw/OiBib29sZWFuOyAvLyDmmK/lkKbmmL7npLrmgLvmnaHmlbDkv6Hmga/vvIzpu5jorqR0cnVlXHJcbiAgZHJhZ2FibGU/OiBib29sZWFuOyAvLyDmmK/lkKblj6/mi5bliqgsIOm7mOiupGZhbHNlXHJcbiAgZmlsdGVyQ29sdW1uPzogYm9vbGVhbjsgLy8g5piv5ZCm5pSv5oyB6L+H5ruk5pi+56S66KGo5qC85YiXLCDpu5jorqR0cnVlXHJcbiAgbW92ZVJvdz86IChwYXJhbXM6IElEcmFnUGFyYW1zKSA9PiB2b2lkOyAvLyDmi5bmi73lrozmiJDlkI7nmoTlm57osINcclxuICBkcmFnVXJsPzogc3RyaW5nOyAvLyDkv53lrZjmi5bmi73mjpLluo/nmoTmjqXlj6NcclxuICBwYWdpbmF0aW9uPzogZmFsc2UgfCBOU0NUYWJsZVBhZ2luYXRpb247XHJcbiAgYXV0b1BhZ2luYXRpb24/OiBib29sZWFuOyAvLyDnu4Tku7bmmK/lkKboh6rliqjlpITnkIbliIbpobVcclxuICBhdXRvU29ydD86IGJvb2xlYW47IC8v57uE5Lu25piv5ZCm6Ieq5Yqo5aSE55CG5o6S5bqPXHJcbiAgYXV0b09uQ2hhbmdlPzogYm9vbGVhbjsgLy8g57uE5Lu25piv5ZCm6Ieq5Yqob25DaGFuZ2UsIGZhbHNl5YiZ5LiN5YGa5Lu75L2V5aSE55CG5YWo6YOo5Lqk57uZ6LCD55So5pa5XHJcbiAgcmVzaXplQ29sdW1uPzogYm9vbGVhbjtcclxuICBzb3J0RmllbGRzPzogQXJyYXk8c3RyaW5nPjsgLy/pnIDopoHmjpLluo/nmoTlrZfmrrVJbmRleFxyXG4gIHRvb2xiYXI/OiBUb29sQmFyUHJvcHMgfCBib29sZWFuO1xyXG4gIGF1dG9TaXplPzogYm9vbGVhbjtcclxuICBzb3J0U2VhcmNoPzogYm9vbGVhbjsgLy/mmK/lkKbmt7vliqDmjpLluo/mn6Xor6Is6buY6K6kdHJ1ZVxyXG4gIC8vIHRhYmxlU2l6ZT86IFwic21hbGxcIiB8IFwibWlkZGxlXCIgfCBcImRlZmF1bHRcIiB8IFwiYXV0b1wiO1xyXG4gIC8vIHNpemU/OiBcInNtYWxsXCIgfCBcIm1pZGRsZVwiIHwgXCJkZWZhdWx0XCIgfCBcImF1dG9cIjtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgSU5TQ1RhYmxlUHJvcHMgPSB0eXBlb2YgTlNDVGFibGUuZGVmYXVsdFByb3BzICYgTlNDVGFibGVQcm9wcztcclxuZXhwb3J0IHsgRG5kQ29udGV4dFR5cGUsIElCb2R5Um93UHJvcHMgfTtcclxuXHJcbmNvbnN0IFJlc2l6ZWFibGVUaXRsZSA9IChwcm9wczogYW55KSA9PiB7XHJcbiAgY29uc3QgeyBvblJlc2l6ZSwgd2lkdGgsIC4uLnJlc3RQcm9wcyB9ID0gcHJvcHM7XHJcbiAgcmV0dXJuIChcclxuICAgIDxSZXNpemFibGVcclxuICAgICAgd2lkdGg9e3dpZHRoIHx8IDE1MH1cclxuICAgICAgaGVpZ2h0PXswfVxyXG4gICAgICBvblJlc2l6ZT17b25SZXNpemV9XHJcbiAgICAgIGRyYWdnYWJsZU9wdHM9e3sgZW5hYmxlVXNlclNlbGVjdEhhY2s6IGZhbHNlIH19XHJcbiAgICA+XHJcbiAgICAgIDx0aCB7Li4ucmVzdFByb3BzfSAvPlxyXG4gICAgPC9SZXNpemFibGU+XHJcbiAgKTtcclxufTtcclxuY2xhc3MgTlNDVGFibGUgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8SU5TQ1RhYmxlUHJvcHMsIGFueT4ge1xyXG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XHJcbiAgICBkcmFnYWJsZTogZmFsc2UsXHJcbiAgICBzaG93VG90YWw6IHRydWUsXHJcbiAgICBmaWx0ZXJDb2x1bW46IHRydWUsXHJcbiAgICBkcmFnVXJsOiBcIlwiLFxyXG4gICAgYXV0b1BhZ2luYXRpb246IHRydWUsXHJcbiAgICBhdXRvU29ydDogdHJ1ZSxcclxuICAgIGF1dG9PbkNoYW5nZTogdHJ1ZSxcclxuICAgIHJlc2l6ZUNvbHVtbjogdHJ1ZSxcclxuICAgIHRvb2xiYXI6IHtcclxuICAgICAgc2hvdzogdHJ1ZSxcclxuICAgICAgb25Ub29sQ2xpY2s6IHt9IGFzIGFueSxcclxuICAgIH0gYXMgYW55LFxyXG4gIH07XHJcblxyXG4gIHN0b3JlID0ge30gYXMgU3RvcmVQcm9wcztcclxuICB0aEljb25SZWYgPSBSZWFjdC5jcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XHJcbiAgdGFibGVTZWFyY2hSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG5cclxuICBsaXN0ZW5lcnMgPSB7XHJcbiAgICBvbkJlZm9yZUxvYWQ6IG51bGwsXHJcbiAgICBsb2FkOiBudWxsLFxyXG4gIH07XHJcblxyXG4gIGNvbXBvbmVudHMgPSB7XHJcbiAgICBoZWFkZXI6IHtcclxuICAgICAgY2VsbDogUmVzaXplYWJsZVRpdGxlLFxyXG4gICAgfSxcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgc3VwZXIocHJvcHMpO1xyXG4gICAgbGV0IG1vZGFsID0gcHJvcHMudHlwZSB8fCBcImF1dG9cIjtcclxuICAgIGxldCBzdG9yZVByZWZpeCA9IGdldFN0b3JhZ2UoXCJzdG9yZS1wcmUta2V5XCIpO1xyXG4gICAgbGV0IGF1dG9UeXBlID0gZ2V0U3RvcmFnZShcclxuICAgICAgc3RvcmVQcmVmaXggPyBzdG9yZVByZWZpeCArIFwidGFibGVTaXplXCIgOiBcInRhYmxlU2l6ZVwiXHJcbiAgICApO1xyXG4gICAgYXV0b1R5cGUgPSBhdXRvVHlwZT8uY29udGVudDtcclxuICAgIHRoaXMuc3RhdGUgPSB7XHJcbiAgICAgIGRhdGFTb3VyY2U6IFtdLFxyXG4gICAgICBjb2x1bW5zOiBbXSxcclxuICAgICAgbG9hZGluZzogZmFsc2UsXHJcbiAgICAgIHBhZ2luYXRpb246IHt9LFxyXG4gICAgICBhY3RpdmVJbmRleDogLTEsXHJcbiAgICAgIC8v5pCc57Si5paH5pysXHJcbiAgICAgIHNlYXJjaFRleHQ6IG51bGwsXHJcbiAgICAgIGZpZWxkT3B0aW9uOiBudWxsLFxyXG4gICAgICBzZWFyY2hDb2xvcjogbnVsbCxcclxuICAgICAgY29sczogW10sXHJcbiAgICAgIHNvcnRzOiBbXSxcclxuICAgICAgZmlsdGVyUGFyYW1zOiB7fSxcclxuICAgICAgdGFibGVTaXplOiB0aGlzLnByb3BzLnNpemUgfHwgYXV0b1R5cGUgfHwgXCJkZWZhdWx0XCIsXHJcbiAgICAgIHNvcnRUeXBlOiBcInNpbmdsZVwiLFxyXG4gICAgICBzb3J0ZXI6IFtdLCAvL+iusOW9leW9k+WJjeaOkuW6j+Wtl+autVxyXG4gICAgICBzb3J0SW5mbzoge30sXHJcbiAgICAgIGRlZmF1bHRTb3J0OiB0cnVlLFxyXG4gICAgICBjaGVja0NvbHVtbjogW10sXHJcbiAgICAgIGRlZmF1bHRDaGVjazogdHJ1ZSxcclxuICAgIH07XHJcbiAgICBpZiAocHJvcHMuc3RvcmUgaW5zdGFuY2VvZiBTdG9yZSkge1xyXG4gICAgICB0aGlzLnN0b3JlID0gcHJvcHMuc3RvcmU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCB7IGxpc3RlbmVyczogbGlzdGVuZXJzUHJvcHMgPSB7fSwgLi4ucmVzdFN0b3JlIH0gPVxyXG4gICAgICAgIHByb3BzLnN0b3JlIHx8IHt9O1xyXG4gICAgICBjb25zdCBzdG9yZVByb3BzID0ge1xyXG4gICAgICAgIG1vZGVsOiBcIm1vZGVsXCIsXHJcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICAgIGxpc3RlbmVyczoge1xyXG4gICAgICAgICAgb25CZWZvcmVMb2FkOiAoc3RvcmUsIG9wdGlvbnMpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IHRydWUgfSk7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1Byb3BzLm9uQmVmb3JlTG9hZCwgdGhpcywgW3N0b3JlLCBvcHRpb25zXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZGF0YUNoYW5nZWQ6IChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBwYWdpbmcgPSAhKHRoaXMucHJvcHMucGFnaW5hdGlvbiA9PT0gZmFsc2UpO1xyXG4gICAgICAgICAgICBpZiAocGFnaW5nICYmICF0aGlzLnByb3BzLmRhdGFTb3VyY2UpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgIGRhdGFTb3VyY2U6IG1vZGVsRGF0YSxcclxuICAgICAgICAgICAgICAgIHBhZ2luYXRpb246IHN0b3JlLmdldFBhZ2luYXRpb24oKSxcclxuICAgICAgICAgICAgICAgIGxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgYWN0aXZlSW5kZXg6IC0xLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBkYXRhU291cmNlOiBtb2RlbERhdGEsIGxvYWRpbmc6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQcm9wcy5kYXRhQ2hhbmdlZCwgdGhpcywgW1xyXG4gICAgICAgICAgICAgIGRhdGEsXHJcbiAgICAgICAgICAgICAgbW9kZWxEYXRhLFxyXG4gICAgICAgICAgICAgIHN0b3JlLFxyXG4gICAgICAgICAgICAgIHBhZ2luZyxcclxuICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgbG9hZDogKGRhdGEsIG1vZGVsRGF0YSwgc3RvcmUpID0+IHtcclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUHJvcHMubG9hZCwgdGhpcywgW2RhdGEsIG1vZGVsRGF0YSwgc3RvcmVdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBvbkVycm9yTG9hZDogKGVyciwgcmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQcm9wcy5vbkVycm9yTG9hZCwgdGhpcywgW2VyciwgcmVzcG9uc2VdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICBkYXRhOiByZXN0U3RvcmUuZGF0YVxyXG4gICAgICAgICAgPyByZXN0U3RvcmUuZGF0YVxyXG4gICAgICAgICAgOiBwcm9wcy5kYXRhU291cmNlXHJcbiAgICAgICAgICA/IHByb3BzLmRhdGFTb3VyY2VcclxuICAgICAgICAgIDogbnVsbCxcclxuICAgICAgICAuLi5yZXN0U3RvcmUsXHJcbiAgICAgICAgYXV0b0xvYWQ6IHJlc3RTdG9yZS5hdXRvTG9hZCA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWUsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuc3RvcmUgPSBuZXcgUGFnZVN0b3JlKFxyXG4gICAgICAgIE9iamVjdC5hc3NpZ24oe30sIHN0b3JlUHJvcHMsIHtcclxuICAgICAgICAgIHBhZ2luYXRpb246IHsgY3VycmVudDogMSwgLi4udGhpcy5wcm9wcy5wYWdpbmF0aW9uIH0sXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZVJlc2l6ZSA9XHJcbiAgICAoaW5kZXg6IGFueSkgPT5cclxuICAgIChlOiBhbnksIHsgc2l6ZSB9OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjb2xzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICBjb25zdCBuZXh0Q29sdW1ucyA9IFsuLi5jb2xzXTtcclxuICAgICAgbmV4dENvbHVtbnNbaW5kZXhdID0ge1xyXG4gICAgICAgIC4uLm5leHRDb2x1bW5zW2luZGV4XSxcclxuICAgICAgICB3aWR0aDogc2l6ZS53aWR0aCxcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgY29sczogbmV4dENvbHVtbnMsXHJcbiAgICAgIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XHJcbiAgICBjb25zdCB7IHJlc2l6ZUNvbHVtbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmICghcmVzaXplQ29sdW1uKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBjb2x1bW5zOiBbLi4udGhpcy5wcm9wcy5jb2x1bW5zXSB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBjb2xzOiBbLi4udGhpcy5wcm9wcy5jb2x1bW5zXSB9KTtcclxuICAgIH1cclxuICAgIGNvbnN0IHN0b3JlID0gdGhpcy5wcm9wcy5zdG9yZTtcclxuICAgIGlmIChzdG9yZSAmJiBzdG9yZS5kYXRhKSB7XHJcbiAgICAgIHRoaXMuc3RvcmUuc2V0RGF0YShzdG9yZS5kYXRhKTtcclxuICAgIH1cclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCB0aGlzLmxpc3Rlbk1lc3NhZ2UpO1xyXG4gIH1cclxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcclxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCB0aGlzLmxpc3Rlbk1lc3NhZ2UpO1xyXG4gIH1cclxuICBsaXN0ZW5NZXNzYWdlID0gKGV2KSA9PiB7XHJcbiAgICBjb25zdCBkYXRhID0gdHlwZW9mIGV2LmRhdGEgPT09IFwic3RyaW5nXCIgPyBKU09OLnBhcnNlKGV2LmRhdGEpIDogZXYuZGF0YTtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBpZiAoZGF0YS5ldmVudFR5cGUgPT0gXCJjaGFuZ2VUYWJsZVNpemVcIikge1xyXG4gICAgICBjb25zdCB7IHBheWxvYWQgfSA9IGRhdGE7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBwYXlsb2FkLnNpemUgPT0gXCJkZWZhdWx0XCIgfHxcclxuICAgICAgICBwYXlsb2FkLnNpemUgPT0gXCJzbWFsbFwiIHx8XHJcbiAgICAgICAgcGF5bG9hZC5zaXplID09IFwibWlkZGxlXCJcclxuICAgICAgKSB7XHJcbiAgICAgICAgX3RoaXMuc2V0U3RhdGUoeyB0YWJsZVNpemU6IHBheWxvYWQuc2l6ZSB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcbiAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcywgcHJlU3RhdGUpIHtcclxuICAgIGNvbnN0IHsgcmVzaXplQ29sdW1uIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKCFyZXNpemVDb2x1bW4pIHtcclxuICAgICAgaWYgKHRoaXMucHJvcHMuY29sdW1ucyAhPT0gcHJldlByb3BzLmNvbHVtbnMpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgY29sdW1uczogdGhpcy5wcm9wcy5jb2x1bW5zIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAocHJlU3RhdGUuY29scyAhPT0gdGhpcy5zdGF0ZS5jb2xzKSB7XHJcbiAgICAgICAgdGhpcy5yZXNldENvbHVtbigpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnByb3BzLmNvbHVtbnMgIT09IHByZXZQcm9wcy5jb2x1bW5zKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGNvbHM6IHRoaXMucHJvcHMuY29sdW1ucyB9KTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocHJldlByb3BzLnNpemUgIT09IHRoaXMucHJvcHMuc2l6ZSkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyB0YWJsZVNpemU6IHRoaXMucHJvcHMuc2l6ZSB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXRDb2x1bW4oKSB7XHJcbiAgICBjb25zdCB7IGNvbHMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCBuZXdDb2xzOiBhbnkgPSBbXTtcclxuICAgIGxldCBjb2xzcyA9IGNvbHMgfHwgW107XHJcbiAgICBjb2xzcy5tYXAoKGNvbDogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGxldCB0ZW1wID0ge1xyXG4gICAgICAgIC4uLmNvbCxcclxuICAgICAgICBvbkhlYWRlckNlbGw6IChjb2x1bW46IHsgd2lkdGg6IGFueSB9KSA9PiAoe1xyXG4gICAgICAgICAgd2lkdGg6IGNvbHVtbi53aWR0aCxcclxuICAgICAgICAgIG9uUmVzaXplOiB0aGlzLmhhbmRsZVJlc2l6ZShpbmRleCksXHJcbiAgICAgICAgfSksXHJcbiAgICAgIH07XHJcbiAgICAgIG5ld0NvbHMucHVzaCh0ZW1wKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGNvbHVtbnM6IG5ld0NvbHMsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOa4hemZpOmAieS4reminOiJslxyXG4gICAqL1xyXG4gIGNsZWFyU2VsZWN0Q29sb3IoKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHsgYWN0aXZlSW5kZXg6IC0xIH0pO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBnZXRQYWdpbmF0aW9uQnlTdG9yZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JlLmdldFBhZ2luYXRpb24oKTtcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlKHBhZ2luYXRpb24sIGZpbHRlcnMsIHNvcnRlciwgZXh0cmEpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgYXV0b09uQ2hhbmdlID0gdHJ1ZSxcclxuICAgICAgYXV0b1NvcnQsXHJcbiAgICAgIGF1dG9QYWdpbmF0aW9uLFxyXG4gICAgICBvbkNoYW5nZSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBmaWx0ZXJQYXJhbXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCBpc011bHRpcGxlID0gQXJyYXkuaXNBcnJheShzb3J0ZXIpO1xyXG4gICAgaWYgKGF1dG9PbkNoYW5nZSA9PT0gZmFsc2UpIHtcclxuICAgICAgb25DaGFuZ2UgJiYgb25DaGFuZ2UocGFnaW5hdGlvbiwgZmlsdGVycywgc29ydGVyLCBleHRyYSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGhhbmRsZVBhZ2luYXRpb24gPSAoKSA9PiB7XHJcbiAgICAgIGxldCBwYXJhbXMgPSB7fSBhcyB7XHJcbiAgICAgICAgc2l6ZT86IHN0cmluZztcclxuICAgICAgICBwYWdlU2l6ZT86IHN0cmluZztcclxuICAgICAgICBhc2NzPzogc3RyaW5nO1xyXG4gICAgICAgIGRlc2NzPzogc3RyaW5nO1xyXG4gICAgICAgIFtwcm9wTmFtZTogc3RyaW5nXTogc3RyaW5nO1xyXG4gICAgICB9O1xyXG4gICAgICBjb25zdCBwYWdpbmcgPSB0aGlzLmdldFBhZ2luYXRpb25CeVN0b3JlKCkgfHwge307XHJcbiAgICAgIGlmICghaXNFbXB0eU9iaihwYWdpbmF0aW9uKSkge1xyXG4gICAgICAgIGNvbnN0IHAgPSB7XHJcbiAgICAgICAgICBbcGFnaW5nLmN1cnJlbnRLZXkgfHwgXCJjdXJyZW50XCJdOiBwYWdpbmF0aW9uLmN1cnJlbnQsXHJcbiAgICAgICAgICBbcGFnaW5nLnBhZ2VTaXplS2V5IHx8IFwic2l6ZVwiXTogcGFnaW5hdGlvbi5wYWdlU2l6ZSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGFyYW1zLCBwKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgYXNjUGFyYW1zID0gdGhpcy5nZXRTb3J0UGFyYW0oc29ydGVyLCB0cnVlKTtcclxuICAgICAgaWYgKGlzTXVsdGlwbGUpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgc29ydGVyIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKCFpc011bHRpcGxlICYmICFpc0VtcHR5T2JqKHNvcnRlcikpIHtcclxuICAgICAgICBzb3J0ZXIuY29sdW1uICYmXHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgc29ydGVyOiBbc29ydGVyXSwgZGVmYXVsdFNvcnQ6IGZhbHNlIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBzb3J0ZXI6IFtdIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHBhcmFtcyA9IHsgLi4uZmlsdGVyUGFyYW1zLCAuLi5wYXJhbXMsIC4uLmFzY1BhcmFtcyB9O1xyXG4gICAgICBhdXRvU29ydCAmJiB0aGlzLnN0b3JlLnJlbG9hZCh7IHBhcmFtcyB9KTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3Qgb25DaGFuZ2VGbiA9IHRoaXMucHJvcHMub25DaGFuZ2U7XHJcblxyXG4gICAgYXV0b1BhZ2luYXRpb24gJiYgaGFuZGxlUGFnaW5hdGlvbigpO1xyXG4gICAgLy8g55So5oi35Lyg5LqGb25DaGFuZ2Xkv53nlZnnlKjmiLfoh6rkuLvlpITnkIbooajmoLzlj5jljJbnmoTmnYPliptcclxuICAgIGlmIChvbkNoYW5nZUZuKSB7XHJcbiAgICAgIHV0aWxzLmNhbGxiYWNrKG9uQ2hhbmdlRm4sIHRoaXMsIFtwYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRTdG9yZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6I635Y+W5pWw5o2u5qih5Z6L5a+56LGhXHJcbiAgICovXHJcbiAgZ2V0TW9kZWwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5nZXRNb2RlbCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6I+c5Y2V5pCc57Si6L+H5ruk5pi+56S6XHJcbiAgICogQHBhcmFtIHtTdHJpbmd9IHZhbFxyXG4gICAqL1xyXG4gIGhhbmRsZVNlYXJjaCh2YWwsIGZpZWxkT3B0aW9uLCBzZWFyY2hDb2xvcikge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlYXJjaFRleHQ6IHZhbCxcclxuICAgICAgZmllbGRPcHRpb246IGZpZWxkT3B0aW9uLFxyXG4gICAgICBzZWFyY2hDb2xvcjogc2VhcmNoQ29sb3IsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaooeWdl+WIl+ihqOenu+WKqOaOkuW6j1xyXG4gICAqL1xyXG4gIG1vdmVSb3cgPSAoZHJhZ0luZGV4LCBob3ZlckluZGV4LCBkcmFnLCB0YXJnZXQpID0+IHtcclxuICAgIGNvbnN0IF90aGlzID0gdGhpcztcclxuICAgIGxldCBkcmFnTm9kZSA9IGRyYWcucmVjb3JkO1xyXG4gICAgbGV0IHRhcmdldE5vZGUgPSB0YXJnZXQucmVjb3JkO1xyXG4gICAgZHJhZ05vZGUubW92ZUFycmF5KGRyYWdOb2RlLCB0YXJnZXROb2RlKTtcclxuICAgIGxldCBpZHMgPSBkcmFnTm9kZS5wYXJlbnROb2RlLmdldENoaWxkTm9kZUlkcygpO1xyXG4gICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgaWQ6IGRyYWdOb2RlLmlkLFxyXG4gICAgICBwYXJlbnRJZDogZHJhZ05vZGUuYXR0cmlidXRlLnBhcmVudElkLFxyXG4gICAgICBpZHM6IGlkcyxcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMucHJvcHMubW92ZVJvdykge1xyXG4gICAgICB0aGlzLnByb3BzLm1vdmVSb3cocGFyYW1zKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc3RvcmUucmVsb2FkKCk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgZmlsdGVyQ29sdW1uKGNoZWNrZWRWYWx1ZSkge1xyXG4gICAgaWYgKGNoZWNrZWRWYWx1ZS5sZW5ndGggPT0gMCkge1xyXG4gICAgICBtZXNzYWdlLndhcm5pbmcoXCLoh7PlsJHmmL7npLrkuIDliJfvvIFcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGZpbHRlckNvbHVtbnMgPSB0aGlzLnByb3BzLmNvbHVtbnMubWFwKChjb2w6IENvbHVtblR5cGU8e30+KSA9PiB7XHJcbiAgICAgIGNvbnN0IG5ld0NvbCA9IHsgLi4uY29sIH0gYXMgQ29sdW1uVHlwZTx7fT4gJiB7IGluaXRTaG93OiBib29sZWFuIH07XHJcbiAgICAgIGlmIChjaGVja2VkVmFsdWUuaW5jbHVkZXMoY29sLmRhdGFJbmRleCkpIHtcclxuICAgICAgICBuZXdDb2wuaW5pdFNob3cgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5ld0NvbC5pbml0U2hvdyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBuZXdDb2w7XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IHsgcmVzaXplQ29sdW1uIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKCFyZXNpemVDb2x1bW4pIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgY29sdW1uczogZmlsdGVyQ29sdW1ucyxcclxuICAgICAgICBjaGVja0NvbHVtbjogY2hlY2tlZFZhbHVlLFxyXG4gICAgICAgIGRlZmF1bHRDaGVjazogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgY29sczogZmlsdGVyQ29sdW1ucyxcclxuICAgICAgICBjaGVja0NvbHVtbjogY2hlY2tlZFZhbHVlLFxyXG4gICAgICAgIGRlZmF1bHRDaGVjazogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRTb3J0UGFyYW0oc29ydGVyLCBzb3J0U3RhdGUgPSBmYWxzZSkge1xyXG4gICAgY29uc3QgaXNNdWx0aXBsZSA9IEFycmF5LmlzQXJyYXkoc29ydGVyKTtcclxuICAgIGNvbnN0IHsgc29ydFNlYXJjaCA9IHRydWUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIXNvcnRTZWFyY2gpIHtcclxuICAgICAgcmV0dXJuIHt9O1xyXG4gICAgfVxyXG4gICAgbGV0IHNvcnRJbmZvID0ge307XHJcbiAgICBsZXQgb3JkZXJJdGVtcyA9IFtdO1xyXG4gICAgaWYgKCFpc0VtcHR5T2JqKHNvcnRlcikgJiYgIWlzTXVsdGlwbGUgJiYgc29ydGVyLmNvbHVtbikge1xyXG4gICAgICBvcmRlckl0ZW1zID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGNvbHVtbjogc29ydGVyLmNvbHVtbi5maWVsZCB8fCBzb3J0ZXIuY29sdW1uLmRhdGFJbmRleCxcclxuICAgICAgICAgIGFzYzogc29ydGVyLm9yZGVyID09IFwiYXNjZW5kXCIsXHJcbiAgICAgICAgfSxcclxuICAgICAgXTtcclxuICAgICAgaWYgKHNvcnRlci5jb2x1bW4pIHNvcnRJbmZvW3NvcnRlci5jb2x1bW4uZGF0YUluZGV4XSA9IHNvcnRlci5vcmRlcjtcclxuICAgIH0gZWxzZSBpZiAoaXNNdWx0aXBsZSkge1xyXG4gICAgICBzb3J0ZXIuZm9yRWFjaCgodikgPT4ge1xyXG4gICAgICAgIHNvcnRJbmZvW3YuY29sdW1uLmRhdGFJbmRleF0gPSB2Lm9yZGVyO1xyXG4gICAgICAgIGxldCBmaWVsZCA9IHYuY29sdW1uLmZpZWxkIHx8IHYuY29sdW1uLmRhdGFJbmRleDtcclxuICAgICAgICBvcmRlckl0ZW1zLnB1c2goe1xyXG4gICAgICAgICAgY29sdW1uOiBmaWVsZCxcclxuICAgICAgICAgIGFzYzogdi5vcmRlciA9PSBcImFzY2VuZFwiLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmIChzb3J0U3RhdGUpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgc29ydEluZm86IHNvcnRJbmZvLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB7IG9yZGVySXRlbXM6IEpTT04uc3RyaW5naWZ5KG9yZGVySXRlbXMpIH07XHJcbiAgfVxyXG4gIGdldENvbHVtbnMoKSB7XHJcbiAgICBjb25zdCB7IGNvbHVtbnMsIHNvcnRUeXBlLCBzb3J0SW5mbyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnNvbGUubG9nKFwiY29sdW1uc1wiLCBjb2x1bW5zKTtcclxuICAgIGNvbnN0IHsgc29ydEZpZWxkcyA9IFtdIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgZGVmYXVsdFNob3dDb2xzID0gY29sdW1ucy5maWx0ZXIoKGNvbHMpID0+IGNvbHMuaW5pdFNob3cgIT09IGZhbHNlKTtcclxuICAgIGNvbnN0IGNvbHMgPSBkZWZhdWx0U2hvd0NvbHMubWFwKChjb2wsIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmIChjb2wuZWxsaXBzaXMgJiYgIWNvbC5yZW5kZXIpIHtcclxuICAgICAgICBjb2wuZWxsaXBzaXMgPSB7XHJcbiAgICAgICAgICBzaG93VGl0bGU6IGZhbHNlLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29sLnJlbmRlciA9ICh0ZXh0KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8VG9vbHRpcCBwbGFjZW1lbnQ9XCJ0b3BMZWZ0XCIgdGl0bGU9e3RleHR9PlxyXG4gICAgICAgICAgICAgIHt0ZXh0fVxyXG4gICAgICAgICAgICA8L1Rvb2x0aXA+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChzb3J0RmllbGRzLmluZGV4T2YoY29sLmRhdGFJbmRleCkgPiAtMSkge1xyXG4gICAgICAgIGlmIChzb3J0VHlwZSA9PSBcInNpbmdsZVwiKSB7XHJcbiAgICAgICAgICBjb2wuc29ydGVyID0gdHJ1ZTtcclxuICAgICAgICAgIGNvbC5zb3J0T3JkZXIgPSBzb3J0SW5mb1tjb2wuZGF0YUluZGV4XVxyXG4gICAgICAgICAgICA/IHNvcnRJbmZvW2NvbC5kYXRhSW5kZXhdXHJcbiAgICAgICAgICAgIDogbnVsbDtcclxuICAgICAgICB9IGVsc2UgaWYgKHNvcnRUeXBlID09IFwibXVsdGlwbGVcIikge1xyXG4gICAgICAgICAgY29sLnNvcnRlciA9IHsgbXVsdGlwbGU6IGluZGV4IH07XHJcbiAgICAgICAgICBjb2wuc29ydE9yZGVyID0gc29ydEluZm9bY29sLmRhdGFJbmRleF1cclxuICAgICAgICAgICAgPyBzb3J0SW5mb1tjb2wuZGF0YUluZGV4XVxyXG4gICAgICAgICAgICA6IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBjb2w7XHJcbiAgICB9KTtcclxuICAgIGNvbHMubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICBpZiAoIWlzRW1wdHlPYmooaXRlbS5maWx0ZXJQcm9wcykpIHtcclxuICAgICAgICBsZXQgb2JqID0geyAuLi5pdGVtIH07XHJcbiAgICAgICAgY29uc3QgeyB0eXBlLCBwcm9wcywgc2VhcmNoS2V5IH0gPSBpdGVtLmZpbHRlclByb3BzO1xyXG4gICAgICAgIGxldCBEaXYgPSBudWxsO1xyXG4gICAgICAgIGxldCB0ZXh0ID0gaXRlbS50aXRsZTtcclxuICAgICAgICBEaXYgPSBnZXROb2RlKHR5cGUsIHtcclxuICAgICAgICAgIHBsYWNlaG9sZGVyOiBg5pCc57SiJHt0ZXh0fWAsXHJcbiAgICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICAgIHJlZjogdGhpcy50YWJsZVNlYXJjaFJlZixcclxuICAgICAgICB9KTtcclxuICAgICAgICBvYmogPSB7XHJcbiAgICAgICAgICBmaWx0ZXJEcm9wZG93bjogKHtcclxuICAgICAgICAgICAgc2V0U2VsZWN0ZWRLZXlzLFxyXG4gICAgICAgICAgICBzZWxlY3RlZEtleXMsXHJcbiAgICAgICAgICAgIGNvbmZpcm0sXHJcbiAgICAgICAgICAgIGNsZWFyRmlsdGVycyxcclxuICAgICAgICAgIH0pID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwic2VhcmNoXCIpfT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJzcGFjZVwiKX0+e0Rpdn08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxTcGFjZT5cclxuICAgICAgICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25maXJtKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGZpbHRlclBhcmFtcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdGaWx0ZXJQYXJhbXMgPSB7IC4uLmZpbHRlclBhcmFtcyB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGtleSA9IGl0ZW0uZmllbGQgfHwgaXRlbS5kYXRhSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICBuZXdGaWx0ZXJQYXJhbXNba2V5XSA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVTZWFyY2hSZWYuY3VycmVudD8uZ2V0VmFsdWUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJhbXM6IHsgLi4ubmV3RmlsdGVyUGFyYW1zIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNvcnRQYXJhbSA9IHRoaXMuZ2V0U29ydFBhcmFtKHRoaXMuc3RhdGUuc29ydGVyKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUubG9hZCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogeyAuLi5uZXdGaWx0ZXJQYXJhbXMsIC4uLnNvcnRQYXJhbSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiYnV0dG9uXCIpfVxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAg5p+l6K+iXHJcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9TcGFjZT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBmaWx0ZXJJY29uOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiA8U2VhcmNoT3V0bGluZWQgLz47XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4ub2JqLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29sc1tpbmRleF0gPSBvYmo7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGNvbHM7XHJcbiAgfVxyXG4gIHJlbmRlclRvb2xCYXIoKSB7XHJcbiAgICBsZXQgeyB0YWJsZVNpemUsIGNvbHVtbnMsIHNvcnRUeXBlIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IHsgZmlsdGVyQ29sdW1uLCBjb2x1bW5zOiBjb2xMaXN0cywgdG9vbGJhciB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgdGFibGVUb29sIH0gPSBjb25maWcoKTtcclxuICAgIGxldCB0b29scyA9IFtcInJlZnJlc2hcIiwgXCJzaXplXCIsIFwic29ydFwiLCBcImNvbHVtblwiXTtcclxuICAgIGxldCB0b29sc0NsaWNrID0ge30gYXMgYW55O1xyXG4gICAgaWYgKHRvb2xiYXIgPT0gdHJ1ZSkge1xyXG4gICAgICB0b29scyA9IHRvb2xiYXIub25Ub29sQ2xpY2tcclxuICAgICAgICA/IHRvb2xiYXIub25Ub29sQ2xpY2tcclxuICAgICAgICA6IFtcInJlZnJlc2hcIiwgXCJzaXplXCIsIFwic29ydFwiLCBcImNvbHVtblwiXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRvb2xzID0gdG9vbGJhci50b29sc1xyXG4gICAgICAgID8gdG9vbGJhci50b29sc1xyXG4gICAgICAgIDogdGFibGVUb29sLnRvb2xzXHJcbiAgICAgICAgPyB0YWJsZVRvb2wudG9vbHNcclxuICAgICAgICA6IHRvb2xzO1xyXG4gICAgICB0b29sc0NsaWNrID0gdG9vbGJhci5vblRvb2xDbGljayA/IHRvb2xiYXIub25Ub29sQ2xpY2sgOiB7fTtcclxuICAgIH1cclxuICAgIGNvbnN0IHNpemVJdGVtID0gW1xyXG4gICAgICB7IHRpdGxlOiBcIuWuveadvlwiLCBrZXk6IFwiZGVmYXVsdFwiIH0sXHJcbiAgICAgIHsgdGl0bGU6IFwi5Lit562JXCIsIGtleTogXCJtaWRkbGVcIiB9LFxyXG4gICAgICB7IHRpdGxlOiBcIue0p+WHkVwiLCBrZXk6IFwic21hbGxcIiB9LFxyXG4gICAgXTtcclxuICAgIGNvbnN0IHNvcnRJdGVtID0gW1xyXG4gICAgICB7IHRpdGxlOiBcIuWNleWtl+auteaOkuW6j1wiLCBrZXk6IFwic2luZ2xlXCIgfSxcclxuICAgICAgeyB0aXRsZTogXCLlpJrlrZfmrrXmjpLluo9cIiwga2V5OiBcIm11bHRpcGxlXCIgfSxcclxuICAgIF07XHJcbiAgICBjb25zdCBzb3J0Q29udGVudCA9IChcclxuICAgICAgPD5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImNvdGVudC10aXRsZVwiKX1cclxuICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgIGN1cnNvcjogdGhpcy5zdGF0ZS5kZWZhdWx0U29ydCA/IFwibm90LWFsbG93ZWRcIiA6IFwicG9pbnRlclwiLFxyXG4gICAgICAgICAgICBjb2xvcjogdGhpcy5zdGF0ZS5kZWZhdWx0U29ydCAmJiBcInJnYmEoMCwwLDAsLjQ1KVwiLFxyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc3RhdGUuZGVmYXVsdFNvcnQpIHtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHNvcnRlcjogW10sIHNvcnRJbmZvOiB7fSwgZGVmYXVsdFNvcnQ6IHRydWUgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHsgLi4udGhpcy5zdGF0ZS5maWx0ZXJQYXJhbXMgfTtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5yZWxvYWQoeyBwYXJhbXMgfSk7XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgID5cclxuICAgICAgICAgIOaBouWkjem7mOiupOaOkuW6j1xyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIHtzb3J0SXRlbS5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAga2V5PXtpdGVtLmtleX1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgc29ydGVyOiBbXSxcclxuICAgICAgICAgICAgICAgICAgc29ydEluZm86IHt9LFxyXG4gICAgICAgICAgICAgICAgICBzb3J0VHlwZTogaXRlbS5rZXksXHJcbiAgICAgICAgICAgICAgICAgIGRlZmF1bHRTb3J0OiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0geyAuLi50aGlzLnN0YXRlLmZpbHRlclBhcmFtcyB9O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5yZWxvYWQoeyBwYXJhbXMgfSk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHtzb3J0VHlwZSA9PSBpdGVtLmtleSA/IChcclxuICAgICAgICAgICAgICAgIDxhPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiY29udGVudC10aWVtXCIpfT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAyMCB9fT5cclxuICAgICAgICAgICAgICAgICAgICAgIHtzb3J0VHlwZSA9PSBpdGVtLmtleSAmJiA8Q2hlY2tPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PiB7aXRlbS50aXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50LXRpZW1cIil9PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAyMCB9fT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj4ge2l0ZW0udGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSl9XHJcbiAgICAgICAge3RoaXMuc3RhdGUuc29ydGVyLmxlbmd0aCA+IDAgJiYgKFxyXG4gICAgICAgICAgPD5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiY290ZW50LXRpdGxlXCIpfVxyXG4gICAgICAgICAgICAgIHN0eWxlPXt7IGNvbG9yOiBcInJnYmEoMCwwLDAsLjQ1KVwiIH19XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICDlvZPliY3mjpLluo9cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIHt0aGlzLnN0YXRlLnNvcnRlci5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50LXRpZW1cIil9IGtleT17aW5kZXh9PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAyMCB9fT5cclxuICAgICAgICAgICAgICAgICAgICB7aXRlbS5vcmRlciA9PSBcImFzY2VuZFwiID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgPFNvcnRBc2NlbmRpbmdPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICA8U29ydERlc2NlbmRpbmdPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PiB7aXRlbS5jb2x1bW4udGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgIDwvPlxyXG4gICAgICAgICl9XHJcbiAgICAgIDwvPlxyXG4gICAgKTtcclxuICAgIGNvbnN0IHNpemVDb250ZW50ID0gKFxyXG4gICAgICA8PlxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJjb3RlbnQtdGl0bGVcIil9PuihqOagvOWvhuW6pjwvZGl2PlxyXG4gICAgICAgIHtzaXplSXRlbS5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAga2V5PXtpdGVtLmtleX1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgdGFibGVTaXplOiBpdGVtLmtleSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7dGFibGVTaXplID09IGl0ZW0ua2V5ID8gKFxyXG4gICAgICAgICAgICAgICAgPGE+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50LXRpZW1cIil9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgd2lkdGg6IDIwIH19PlxyXG4gICAgICAgICAgICAgICAgICAgICAge3RhYmxlU2l6ZSA9PSBpdGVtLmtleSAmJiA8Q2hlY2tPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PiB7aXRlbS50aXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50LXRpZW1cIil9PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAyMCB9fT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj4ge2l0ZW0udGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSl9XHJcbiAgICAgIDwvPlxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBkZWZhdWx0U2hvd0NvbHMgPSBjb2x1bW5zLmZpbHRlcigoY29scykgPT4gY29scy5pbml0U2hvdyAhPT0gZmFsc2UpO1xyXG5cclxuICAgIGNvbnN0IGNvbnRlbnQgPSAoXHJcbiAgICAgIDxDaGVja2JveC5Hcm91cFxyXG4gICAgICAgIG9uQ2hhbmdlPXt0aGlzLmZpbHRlckNvbHVtbi5iaW5kKHRoaXMpfVxyXG4gICAgICAgIG9wdGlvbnM9e2NvbExpc3RzLm1hcChcclxuICAgICAgICAgIChjb2w6IENvbHVtblR5cGU8e30+ICYgeyBmaWx0ZXJDb2x1bW46IGJvb2xlYW47IGRhdGFJbmRleDogYW55IH0pID0+IHtcclxuICAgICAgICAgICAgaWYgKCFjb2wuZGF0YUluZGV4KSB7XHJcbiAgICAgICAgICAgICAgY29sLmRhdGFJbmRleCA9IGNvbC50aXRsZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgIGxhYmVsOiBjb2wudGl0bGUsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IGNvbC5kYXRhSW5kZXgsXHJcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IGNvbC5maWx0ZXJDb2x1bW4gPT09IGZhbHNlLFxyXG4gICAgICAgICAgICB9IGFzIENoZWNrYm94T3B0aW9uVHlwZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApfVxyXG4gICAgICAgIC8vIGRlZmF1bHRWYWx1ZT17ZGVmYXVsdFNob3dDb2xzLm1hcCgoY29sKSA9PiBjb2wuZGF0YUluZGV4KX1cclxuICAgICAgICB2YWx1ZT17XHJcbiAgICAgICAgICB0aGlzLnN0YXRlLmRlZmF1bHRDaGVja1xyXG4gICAgICAgICAgICA/IGRlZmF1bHRTaG93Q29scy5tYXAoKGNvbCkgPT4gY29sLmRhdGFJbmRleClcclxuICAgICAgICAgICAgOiB0aGlzLnN0YXRlLmNoZWNrQ29sdW1uXHJcbiAgICAgICAgfVxyXG4gICAgICA+PC9DaGVja2JveC5Hcm91cD5cclxuICAgICk7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwidGFibGUtdG9vbC1iYXJcIil9PlxyXG4gICAgICAgIHt0b29scy5pbmRleE9mKFwiY29sdW1uXCIpID4gLTEgJiYgKFxyXG4gICAgICAgICAgPGRpdiBzdHlsZT17eyBmb250U2l6ZTogMTQgfX0+XHJcbiAgICAgICAgICAgIDxQb3BvdmVyXHJcbiAgICAgICAgICAgICAgdGl0bGU9XCLpgInmi6nmmL7npLrnmoTliJdcIlxyXG4gICAgICAgICAgICAgIGNvbnRlbnQ9e2NvbnRlbnR9XHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tUmlnaHRcIlxyXG4gICAgICAgICAgICAgIHRyaWdnZXI9XCJjbGlja1wiXHJcbiAgICAgICAgICAgICAgb3ZlcmxheVN0eWxlPXt7IG1pbldpZHRoOiA0MTAsIG1heFdpZHRoOiA0NTAgfX1cclxuICAgICAgICAgICAgICAvLyBnZXRQb3B1cENvbnRhaW5lcj17KCkgPT4gdGhpcy50aEljb25SZWYuY3VycmVudH1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxBcHBzdG9yZU91dGxpbmVkIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiYXBwLXN0b3JlLWljb25cIil9IC8+XHJcbiAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICl9XHJcbiAgICAgICAge3Rvb2xzLmluZGV4T2YoXCJzb3J0XCIpID4gLTEgJiYgKFxyXG4gICAgICAgICAgPGRpdiBzdHlsZT17eyBtYXJnaW5SaWdodDogOCwgZm9udFNpemU6IDE0IH19PlxyXG4gICAgICAgICAgICA8UG9wb3ZlciBwbGFjZW1lbnQ9XCJib3R0b21cIiBjb250ZW50PXtzb3J0Q29udGVudH0gdHJpZ2dlcj1cImNsaWNrXCI+XHJcbiAgICAgICAgICAgICAgPFNvcnRBc2NlbmRpbmdPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIHt0b29scy5pbmRleE9mKFwic2l6ZVwiKSA+IC0xICYmIChcclxuICAgICAgICAgIDxkaXYgc3R5bGU9e3sgbWFyZ2luUmlnaHQ6IDgsIGZvbnRTaXplOiAxNCB9fT5cclxuICAgICAgICAgICAgPFBvcG92ZXIgcGxhY2VtZW50PVwiYm90dG9tXCIgY29udGVudD17c2l6ZUNvbnRlbnR9IHRyaWdnZXI9XCJjbGlja1wiPlxyXG4gICAgICAgICAgICAgIDxDb2x1bW5IZWlnaHRPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIHt0b29scy5pbmRleE9mKFwicmVmcmVzaFwiKSA+IC0xICYmIChcclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgc3R5bGU9e3sgbWFyZ2luUmlnaHQ6IDgsIGZvbnRTaXplOiAxNCwgY3Vyc29yOiBcInBvaW50ZXJcIiB9fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0geyAuLi50aGlzLnN0YXRlLmZpbHRlclBhcmFtcyB9O1xyXG4gICAgICAgICAgICAgIGlmICh0b29sc0NsaWNrLm9uUmVmcmVzaCkge1xyXG4gICAgICAgICAgICAgICAgdG9vbHNDbGljay5vblJlZnJlc2goKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5sb2FkKHsgcGFyYW1zIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPFJlZG9PdXRsaW5lZCAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxuICByZW5kZXIoKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzLFxyXG4gICAgICB7XHJcbiAgICAgICAgbG9hZGluZyxcclxuICAgICAgICBkYXRhU291cmNlLFxyXG4gICAgICAgIHBhZ2luYXRpb24gPSB7fSxcclxuICAgICAgICBzZWFyY2hUZXh0LFxyXG4gICAgICAgIGZpZWxkT3B0aW9uLFxyXG4gICAgICAgIHNlYXJjaENvbG9yLFxyXG4gICAgICAgIHRhYmxlU2l6ZSxcclxuICAgICAgfSA9IHRoaXMuc3RhdGUsXHJcbiAgICAgIHByb3BzID0gdXRpbHMub21pdChcclxuICAgICAgICB0aGlzLnByb3BzLFxyXG4gICAgICAgIFtcclxuICAgICAgICAgIFwic3RvcmVcIixcclxuICAgICAgICAgIFwib25DaGFuZ2VcIixcclxuICAgICAgICAgIFwiY29sdW1uc1wiLFxyXG4gICAgICAgICAgXCJyZXNldENvbHVtblwiLFxyXG4gICAgICAgICAgXCJ0b29sYmFyXCIsXHJcbiAgICAgICAgICBcInNvcnRGaWVsZHNcIixcclxuICAgICAgICAgIFwiZmlsdGVyQ29sdW1uXCIsXHJcbiAgICAgICAgICBcInNvcnRTZWFyY2hcIixcclxuICAgICAgICBdLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHJvd0tleTogXCJpZFwiLFxyXG4gICAgICAgICAgY2xpY2tDaGFuZ2VDb2xvcjogZmFsc2UsXHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgaWYgKHByb3BzLnBhZ2luYXRpb24gIT09IGZhbHNlKSB7XHJcbiAgICAgIHByb3BzLnBhZ2luYXRpb24gPSB7XHJcbiAgICAgICAgcG9zaXRpb246IFtcImJvdHRvbVJpZ2h0XCJdLFxyXG4gICAgICAgIHNob3dTaXplQ2hhbmdlcjogdHJ1ZSxcclxuICAgICAgICBzaG93UXVpY2tKdW1wZXI6IHRydWUsXHJcbiAgICAgICAgLi4ucHJvcHMucGFnaW5hdGlvbixcclxuICAgICAgICAuLi5wYWdpbmF0aW9uLFxyXG4gICAgICB9O1xyXG4gICAgICBpZiAocHJvcHMuc2hvd1RvdGFsID09IHRydWUpIHtcclxuICAgICAgICBwcm9wcy5wYWdpbmF0aW9uLnNob3dUb3RhbCA9IGZ1bmN0aW9uICh0b3RhbCwgW2Zyb20sIHRvXSkge1xyXG4gICAgICAgICAgLy8gcmV0dXJuIFwi5pi+56S6IFwiICsgZnJvbSArIFwiIC0gXCIgKyB0byArIFwi5p2h77yM5YWxIFwiICsgdG90YWwgKyBcIiDmnaFcIjtcclxuICAgICAgICAgIHJldHVybiBcIuWFsSBcIiArIHRvdGFsICsgXCIg5p2hXCI7XHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcHJvcHMub25DaGFuZ2UgPSBmdW5jdGlvbiAocGFnaW5hdGlvbiwgZmlsdGVycywgc29ydGVyLCBleHRyYSkge1xyXG4gICAgICBfdGhpcy5vbkNoYW5nZShwYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhKTtcclxuICAgIH07XHJcbiAgICBpZiAocHJvcHMuY2xpY2tDaGFuZ2VDb2xvcikge1xyXG4gICAgICBjb25zdCBvblJvd0ZuID0gcHJvcHMub25Sb3c7XHJcbiAgICAgIHByb3BzLm9uUm93ID0gZnVuY3Rpb24gKHJlY29yZCwgaW5kZXgpIHtcclxuICAgICAgICB2YXIgY3VzdG9tID0gb25Sb3dGbiA/IG9uUm93Rm4ocmVjb3JkLCBpbmRleCkgOiB7fTtcclxuICAgICAgICBjb25zdCBvbkNsaWNrRm4gPSBjdXN0b20ub25DbGljaztcclxuICAgICAgICBjdXN0b20ub25DbGljayA9IChldmVudCkgPT4ge1xyXG4gICAgICAgICAgX3RoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICBhY3RpdmVJbmRleDogaW5kZXgsIC8v6I635Y+W54K55Ye76KGM55qE57Si5byVXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKG9uQ2xpY2tGbiwgX3RoaXMsIFtldmVudF0pO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIGN1c3RvbTtcclxuICAgICAgfTtcclxuICAgICAgcHJvcHMucm93Q2xhc3NOYW1lID0gZnVuY3Rpb24gKHJlY29yZCwgaW5kZXgpIHtcclxuICAgICAgICByZXR1cm4gaW5kZXggPT09IF90aGlzLnN0YXRlLmFjdGl2ZUluZGV4XHJcbiAgICAgICAgICA/IGAke3N0eWxlcy5jbGlja1Jvd1N0eWxlfWBcclxuICAgICAgICAgIDogXCJcIjtcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGxldCBuZXdEYXRhU291cmNlID0gW107XHJcbiAgICBpZiAoc2VhcmNoVGV4dCkge1xyXG4gICAgICBjb25zdCBkYXRhID0gdHJlZVV0aWxzLmdldFNlYXJjaE1lbnVEYXRhcyhcclxuICAgICAgICB0aGlzLFxyXG4gICAgICAgIHNlYXJjaFRleHQsXHJcbiAgICAgICAgZmllbGRPcHRpb24sXHJcbiAgICAgICAgc2VhcmNoQ29sb3JcclxuICAgICAgKTtcclxuICAgICAgbmV3RGF0YVNvdXJjZSA9IGRhdGEudHJlZURhdGFzO1xyXG4gICAgICBwcm9wcy5leHBhbmRlZFJvd0tleXMgPSBkYXRhLm9wZW5LZXlzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbmV3RGF0YVNvdXJjZSA9IGRhdGFTb3VyY2U7XHJcbiAgICB9XHJcbiAgICBwcm9wcy5zdG9yZSA9IHByb3BzLnN0b3JlIHx8IHt9O1xyXG4gICAgcHJvcHMuc3RvcmUuYXV0b0xvYWQgPSBwcm9wcy5zdG9yZS5hdXRvTG9hZCA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWU7XHJcbiAgICBjb25zdCB7IGRyYWdhYmxlIH0gPSBfdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGRyYWdhYmxlUHJvcHMgPVxyXG4gICAgICBkcmFnYWJsZSA9PT0gdHJ1ZVxyXG4gICAgICAgID8ge1xyXG4gICAgICAgICAgICBjb21wb25lbnRzOiBCb2R5Um93Q29tcG9uZW50LFxyXG4gICAgICAgICAgICBvblJvdzogKHJlY29yZCwgaW5kZXgpID0+ICh7XHJcbiAgICAgICAgICAgICAgaW5kZXgsXHJcbiAgICAgICAgICAgICAgcmVjb3JkLFxyXG4gICAgICAgICAgICAgIG1vdmVSb3c6IHRoaXMubW92ZVJvdyxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgOiB7fTtcclxuICAgIGxldCB7IHJlc2l6ZUNvbHVtbiB9ID0gdGhpcy5wcm9wcztcclxuXHJcbiAgICBjb25zdCByZXNpemVQcm9wcyA9XHJcbiAgICAgIHJlc2l6ZUNvbHVtbiA9PT0gdHJ1ZSA/IHsgY29tcG9uZW50czogdGhpcy5jb21wb25lbnRzIH0gOiBudWxsO1xyXG4gICAgY29uc3QgeyB0YWJsZVRvb2wgfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHRvb2xGbGFnID0gdHJ1ZTtcclxuICAgIGxldCB0b29scHJvcHMgPVxyXG4gICAgICB0aGlzLnByb3BzLnRvb2xiYXIgPT09IGZhbHNlIHx8IHRoaXMucHJvcHMudG9vbGJhcj8uc2hvdyA9PT0gZmFsc2VcclxuICAgICAgICA/IGZhbHNlXHJcbiAgICAgICAgOiB0cnVlO1xyXG4gICAgaWYgKCF0b29scHJvcHMpIHtcclxuICAgICAgdG9vbEZsYWcgPSB0b29scHJvcHM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0b29sRmxhZyA9IHRhYmxlVG9vbC5zaG93ID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZTtcclxuICAgIH1cclxuICAgIGNvbnN0IERlZmF1bHRUYWJsZSA9IChcclxuICAgICAgPD5cclxuICAgICAgICB7dG9vbEZsYWcgJiYgdGhpcy5yZW5kZXJUb29sQmFyKCl9XHJcbiAgICAgICAgPFRhYmxlXHJcbiAgICAgICAgICBjaGlsZHJlbkNvbHVtbk5hbWU9XCJjaGlsZE5vZGVzXCJcclxuICAgICAgICAgIHNoZWl0ZW1cclxuICAgICAgICAgIGRhdGFTb3VyY2U9e25ld0RhdGFTb3VyY2V9XHJcbiAgICAgICAgICBjb2x1bW5zPXt0aGlzLmdldENvbHVtbnMoKX1cclxuICAgICAgICAgIGxvYWRpbmc9e2xvYWRpbmd9XHJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1tcIm5zYy10YWJsZVwiXX1cclxuICAgICAgICAgIGxvY2FsZT17e1xyXG4gICAgICAgICAgICBlbXB0eVRleHQ6IDxOb0RhdGEgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJ0YWJsZS1ub2RhdGFcIil9IC8+LFxyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIHNjcm9sbD17eyB4OiBcIm1heC1jb250ZW50XCIgfX1cclxuICAgICAgICAgIHsuLi5yZXNpemVQcm9wc31cclxuICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICAgIHsuLi5kcmFnYWJsZVByb3BzfVxyXG4gICAgICAgICAgc2l6ZT17dGFibGVTaXplfVxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvPlxyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gZHJhZ2FibGUgPT09IHRydWUgPyAoXHJcbiAgICAgIDxEbmRQcm92aWRlciBiYWNrZW5kPXtIVE1MNUJhY2tlbmR9PntEZWZhdWx0VGFibGV9PC9EbmRQcm92aWRlcj5cclxuICAgICkgOiAoXHJcbiAgICAgIERlZmF1bHRUYWJsZVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IHdpdGhaaExvY2FsZShOU0NUYWJsZSk7XHJcbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nsc-react-component",
3
- "version": "2.8.52",
3
+ "version": "2.8.53",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {