nsc-react-component 2.7.10 → 2.7.11

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.
@@ -74,7 +74,6 @@ import request from "nsc-request";
74
74
  import omit from "omit.js";
75
75
  import config from "../../config";
76
76
  import { getStorage } from "@bj-nsc/functions";
77
- import { px2vw } from "@bj-nsc/functions";
78
77
 
79
78
  var BasePage = /*#__PURE__*/function (_PureComponent) {
80
79
  _inherits(BasePage, _PureComponent);
@@ -932,12 +931,12 @@ var BasePage = /*#__PURE__*/function (_PureComponent) {
932
931
  tableHeight = tableHeight - 42;
933
932
  }
934
933
 
935
- tableHeight = tableHeight - 55 - 60; //减去表头和分頁高度
934
+ tableHeight = tableHeight - 55 - 75; //减去表头和分頁高度
936
935
 
937
936
  tableParams = _objectSpread({
938
937
  scroll: {
939
938
  x: "max-content",
940
- y: px2vw(tableHeight)
939
+ y: tableHeight
941
940
  }
942
941
  }, tableParams);
943
942
  }
@@ -1136,4 +1135,4 @@ var BasePage = /*#__PURE__*/function (_PureComponent) {
1136
1135
  }(PureComponent);
1137
1136
 
1138
1137
  export default BasePage;
1139
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BhZ2UvQmFzZVBhZ2UvaW5kZXgudHN4Il0sIm5hbWVzIjpbIlJlYWN0IiwiUHVyZUNvbXBvbmVudCIsIlRhYmxlIiwiVHJlZSIsIkZvcm0iLCJCdXR0b24iLCJNb2RhbCIsIlBvcG92ZXIiLCJtZXNzYWdlIiwiSWNvbiIsImljb25UeXBlIiwiRWRpdG9yRm9ybSIsImNscyIsInN0eWxlcyIsIkNvbCIsIlJvdyIsIm1vbWVudCIsImlzRW1wdHlPYmoiLCJEb3duT3V0bGluZWQiLCJVcE91dGxpbmVkIiwiRXllT3V0bGluZWQiLCJFZGl0T3V0bGluZWQiLCJSaWdodE91dGxpbmVkIiwiUGx1c091dGxpbmVkIiwiUmVsb2FkT3V0bGluZWQiLCJTZWFyY2hPdXRsaW5lZCIsImdldExlc3MiLCJnZXROb2RlIiwicmVxdWVzdCIsIm9taXQiLCJjb25maWciLCJnZXRTdG9yYWdlIiwicHgydnciLCJCYXNlUGFnZSIsInByb3BzIiwiY3JlYXRlUmVmIiwiY2hlY2tlZFRyZWVLZXlzIiwic3RhdGUiLCJuYW1lIiwidXNlclR5cGUiLCJhY2NvdW50IiwidmFsdWUiLCJkZXB0SWQiLCJ0YWJsZUxvYWQiLCJzZWxlY3RlZCIsInJlcyIsImtleSIsImtleXMiLCJsZW5ndGgiLCJzdG9yZVByZWZpeCIsInR5cGUiLCJjb250ZW50Iiwic2l6ZSIsInNlbGVjdGVkUm93S2V5cyIsInNlbGVjdGVkUm93RGF0YXMiLCJ0cmVlU2VsZWN0ZWRLZXkiLCJleHBhbmQiLCJmb3JtVHlwZSIsInRhYmxlU2l6ZSIsInNlbGVjdGVkUm93S2V5c1N0b3JlIiwic2VsZWN0ZWRSb3dEYXRhc1N0b3JlIiwiY3VycmVudFBhZ2UiLCJpbml0RGF0YSIsInBhcmFtcyIsImNhbGxCYWNrIiwic2VhcmNoUmVmIiwiY3VycmVudCIsInNldEZpZWxkc1ZhbHVlIiwiZWRpdG9yZmxhZyIsImVkaXRvclJlZiIsInNob3ciLCJoaWRlRm9ybSIsImxvYWRpbmciLCJzZXRMb2FkaW5nIiwiZGVsZXRlVXJsIiwib25EZWxldGUiLCJkZWxldGVQYXJhbXMiLCJ3YXJuaW5nIiwiRXJyb3IiLCJjb25maXJtIiwidGl0bGUiLCJva1RleHQiLCJjYW5jZWxUZXh0Iiwib25PayIsImRlZmF1bHRQYXJhbXMiLCJtZXRob2QiLCJpZHMiLCJqb2luIiwicmVxdWVzdFBhcmFtcyIsInRoZW4iLCJjb2RlIiwic3VjY2VzcyIsImVycm9yIiwiY2F0Y2giLCJjb25zb2xlIiwibG9nIiwidGFibGVSZWYiLCJzdG9yZSIsImxvYWQiLCJvblNlYXJjaCIsImZyb21WYWx1ZSIsImdldEZpZWxkc1ZhbHVlIiwiZGF0ZUZvcm1hdCIsIm9sZGRhdGEiLCJBcnJheSIsImlzQXJyYXkiLCJmb3JtYXQiLCJhdXRvTG9hZCIsInJlbG9hZCIsImNhbGxiYWNrIiwiZGF0YSIsInJlY29yZHMiLCJzZXRTdGF0ZSIsInRhYmxlUHJvcHMiLCJyb3dLZXkiLCJyZXNLZXkiLCJjaGlsZE5vZGVzIiwiY2hpbGRyZW4iLCJtYXAiLCJpdGVtIiwiaW5kZXgiLCJnZXRDaGlsZHJlbkRhdGEiLCJ0b29sYnV0dG9ucyIsIm1hcmdpbmZsYWciLCJmbGFnIiwic2hvd1NlYXJjaCIsInBhZ2VUeXBlIiwib25DbGljayIsImljb24iLCJtYXJnaW5MZWZ0IiwiY29sdW1uQnV0dG9ucyIsInJlY29yZCIsImVkaXRvckZvcm0iLCJidXR0b25zIiwiYWN0aW9uUG9ycHMiLCJiYXNlQWN0aW9uQ29sdW1uIiwibmV3QnV0dG9ucyIsInNob3dJY29uIiwicmVjb3JkU2hvdyIsImV2YWwiLCJwdXNoIiwic2VsZWN0ZWRLZXlzIiwic2VsZWN0ZWROb2RlcyIsImtleXdvcmQiLCJ0cmVlUHJvcHMiLCJzZWFyY2hLZXkiLCJzZWFyY2hGaWVsZCIsImlzTGVhZiIsImRhdGFyZWYiLCJhdHRyaWJ1dGUiLCJyZXNldEZpZWxkcyIsInRleHQiLCJuZXdUZXh0IiwiaSIsImxhYmVsIiwic2V0RGF0YSIsInRyZWVSZWYiLCJjb2x1bW5zIiwic3VibWl0VXJsIiwiZm9ybVByb3BzIiwic2hvd0xlZnQiLCJzdWJtaXRQYXJhbXMiLCJzaG93VG9vbEJ1dHRvbiIsIm9uU2hvd0Zvcm0iLCJmb3JtQ2hhbmdlVmFsaWQiLCJjbGFzc05hbWUiLCJ0b29sQnV0dG9uUG9zaXRpb24iLCJmaWx0ZXJDb2x1bW4iLCJhY3Rpb25Db2x1bW4iLCJzaG93Um93U2VsZWN0aW9uIiwiY29sdW1uT3JkZXIiLCJyb3dTZWxlY3Rpb24iLCJleHBhbmRhYmxlIiwib3RoZXJ0YWJsZVBhcmFtcyIsInRyZWVTdG9yZSIsInRyZWVTZWFyY2giLCJ0aXRsZUFsaWFzIiwib3RoZXJ0cmVlUGFyYW1zIiwidGFibGVQYXJhbXMiLCJvbkNoYW5nZSIsInNlbGVjdGVkUm93cyIsIm5ld1Jvd0tleXNTdG9yZSIsIm5ld1Jvd0RhdGFzU3RvcmUiLCJnZXRTZWxlY3RlZEtleSIsImNvbHVtbldpZHRoIiwiY2hlY2tTdHJpY3RseSIsInRhYmxlQ29sdW1uIiwic2VhcmNoRm9ybXMiLCJlZGl0b3JGb3JtcyIsImRlZmF1bHRWYWx1ZSIsInRlbXAiLCJzZWFyY2giLCJmaWVsZCIsImRhdGFJbmRleCIsImVkaXRvciIsInJ1bGVzIiwic3BhbiIsImRpY3ROYW1lIiwidW5kZWZpbmVkIiwiY29sdW1uU2VhcmNoIiwiZmlsdGVyUHJvcHMiLCJ0ZW1wUHJvcCIsInN0eWxlIiwicmVuZGVyIiwiZ2V0VGV4dCIsImVsbGlwc2lzIiwiY29sdW1uU2hvdyIsInNlbGZCdXR0b25zIiwiaW5kZXhPZiIsInNob3dGb3JtIiwiYmluZCIsImRlbGV0ZTMiLCJhbGlnbiIsInRleHRBbGlnbiIsIndpZHRoIiwiZml4ZWQiLCJyZW5kZXJDbG91bW5CdXR0b24iLCJoZWFkZXJDb3VudCIsImhlYWRlclJvdXQiLCJjb2xTcGFuIiwicmVhY29yZCIsInBhZ2luYXRpb24iLCJ0YWJsZUhlaWdodCIsImRvY3VtZW50IiwiYm9keSIsInNjcm9sbEhlaWdodCIsInBhZ2VUaXRsZSIsInNjcm9sbCIsIngiLCJ5IiwiZGlzcGxheSIsInRyZWVTZWxlY3QiLCJpdGVtUHJvcHMiLCJ2YWx1ZUZvcm1hdCIsImFsbG93Q2hhcnMiLCJwYWRkaW5nUmlnaHQiLCJwbGFjZWhvbGRlciIsIm1hcmdpblRvcCIsInJlc2V0U2VhcmNoIiwicmVuZGVyVG9vbEJ1dHRvbnMiLCJleHBhbmRJY29uIiwiZXhwYW5kZWQiLCJvbkV4cGFuZCIsImUiLCJvblRvb2xDbGljayIsIm9uUmVmcmVzaCIsImdldFNlYXJjaFZhbHVlcyIsInRvb2xiYXIiLCJ0YWJsZVJlbG9hZCIsIm9uU3VibWl0Iiwib25IaWRlRm9ybSIsIm9uRm9ybUNoYW5nZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFQLElBQWdCQyxhQUFoQixRQUFnRCxPQUFoRDtBQUNBLE9BQU9DLEtBQVAsTUFBa0Isa0JBQWxCO0FBQ0EsT0FBT0MsSUFBUCxNQUFpQixpQkFBakI7QUFDQSxPQUFPQyxJQUFQLE1BQWlCLGlCQUFqQjtBQUNBLE9BQU9DLE1BQVAsTUFBbUIsbUJBQW5CO0FBQ0EsT0FBT0MsS0FBUCxNQUFrQixrQkFBbEI7QUFDQSxPQUFPQyxPQUFQLE1BQW9CLG9CQUFwQjtBQUNBLE9BQU9DLE9BQVAsTUFBb0Isb0JBQXBCO0FBQ0EsT0FBT0MsSUFBUCxNQUFpQiw0QkFBakI7QUFDQSxTQUFTQyxRQUFULFFBQXlCLGlCQUF6QjtBQUNBLE9BQU9DLFVBQVAsTUFBdUIsUUFBdkI7QUFDQSxPQUFPQyxHQUFQLE1BQWdCLFlBQWhCO0FBQ0EsT0FBT0MsTUFBUCxNQUFtQixxQkFBbkI7QUFFQSxPQUFPQyxHQUFQLE1BQWdCLHFCQUFoQjtBQUNBLE9BQU9DLEdBQVAsTUFBZ0IscUJBQWhCO0FBQ0EsT0FBT0MsTUFBUCxNQUFtQixRQUFuQjtBQUNBLFNBQVNDLFVBQVQsUUFBMkIsbUJBQTNCO0FBQ0EsU0FDRUMsWUFERixFQUVFQyxVQUZGLEVBR0VDLFdBSEYsRUFJRUMsWUFKRixFQUtFQyxhQUxGLEVBTUVDLFlBTkYsRUFPRUMsY0FQRixFQVFFQyxjQVJGLFFBU08sbUJBVFA7QUFVQSxTQUFTQyxPQUFULEVBQWtCQyxPQUFsQixRQUFpQyxhQUFqQztBQUNBLE9BQU9DLE9BQVAsTUFBb0IsYUFBcEI7QUFDQSxPQUFPQyxJQUFQLE1BQWlCLFNBQWpCO0FBQ0EsT0FBT0MsTUFBUCxNQUFtQixjQUFuQjtBQUNBLFNBQVNDLFVBQVQsUUFBMkIsbUJBQTNCO0FBR0EsU0FBU0MsS0FBVCxRQUFzQixtQkFBdEI7O0lBa0RNQyxROzs7OztBQU1KLG9CQUFZQyxLQUFaLEVBQXdCO0FBQUE7O0FBQUE7O0FBQUE7O0FBQ3RCLDhCQUFNQSxLQUFOOztBQURzQiw0RUFMYmxDLEtBQUssQ0FBQ21DLFNBQU4sRUFLYTs7QUFBQSwyRUFKZG5DLEtBQUssQ0FBQ21DLFNBQU4sRUFJYzs7QUFBQSw2RUFIWm5DLEtBQUssQ0FBQ21DLFNBQU4sRUFHWTs7QUFBQSw2RUFGWm5DLEtBQUssQ0FBQ21DLFNBQU4sRUFFWTs7QUFBQSxpRUFEWCxFQUNXOztBQUFBLCtEQWtDYixVQUFDQyxlQUFELEVBQTBCO0FBQ25DLHdCQUFvQyxNQUFLQyxLQUF6QztBQUFBLFVBQVFDLElBQVIsZUFBUUEsSUFBUjtBQUFBLFVBQWNDLFFBQWQsZUFBY0EsUUFBZDtBQUFBLFVBQXdCQyxPQUF4QixlQUF3QkEsT0FBeEI7QUFDQSxVQUFNQyxLQUFLLEdBQUc7QUFBRUgsUUFBQUEsSUFBSSxFQUFKQSxJQUFGO0FBQVFDLFFBQUFBLFFBQVEsRUFBUkEsUUFBUjtBQUFrQkMsUUFBQUEsT0FBTyxFQUFQQSxPQUFsQjtBQUEyQkUsUUFBQUEsTUFBTSxFQUFFTixlQUFlLENBQUMsQ0FBRDtBQUFsRCxPQUFkOztBQUNBLFlBQUtPLFNBQUwsQ0FBZUYsS0FBZjtBQUNELEtBdEN1Qjs7QUFBQSxxRUEwWlAsVUFBQ0csUUFBRCxFQUFjO0FBQzdCLFVBQUlDLEdBQUcsR0FBRyxFQUFWOztBQUNBLFdBQUssSUFBSUMsR0FBVCxJQUFnQkYsUUFBaEIsRUFBMEI7QUFDeEIsWUFBTUcsSUFBSSxHQUFHSCxRQUFRLENBQUNFLEdBQUQsQ0FBckI7O0FBQ0EsWUFBSUMsSUFBSSxDQUFDQyxNQUFMLEdBQWMsQ0FBbEIsRUFBcUI7QUFDbkJILFVBQUFBLEdBQUcsZ0NBQU9BLEdBQVAsc0JBQWVFLElBQWYsRUFBSDtBQUNEO0FBQ0Y7O0FBQ0QsYUFBT0YsR0FBUDtBQUNELEtBbmF1Qjs7QUFFdEIsa0JBQXNCZixNQUFNLEVBQTVCO0FBQUEsUUFBTW1CLFdBQU4sV0FBTUEsV0FBTjs7QUFDQSxRQUFJQyxJQUFJLEdBQUduQixVQUFVLENBQ25Ca0IsV0FBVyxHQUFHQSxXQUFXLEdBQUcsR0FBZCxHQUFvQixVQUF2QixHQUFvQyxVQUQ1QixDQUFyQjtBQUdBQyxJQUFBQSxJQUFJLFlBQUdBLElBQUgsMENBQUcsTUFBTUMsT0FBYjtBQUNBLFFBQUlDLElBQUksR0FBR3JCLFVBQVUsQ0FDbkJrQixXQUFXLEdBQUdBLFdBQVcsR0FBRyxHQUFkLEdBQW9CLFdBQXZCLEdBQXFDLFdBRDdCLENBQXJCO0FBR0FHLElBQUFBLElBQUksWUFBR0EsSUFBSCwwQ0FBRyxNQUFNRCxPQUFiO0FBQ0EsVUFBS2QsS0FBTCxHQUFhO0FBQ1hhLE1BQUFBLElBQUksRUFBRSxLQURLO0FBRVhHLE1BQUFBLGVBQWUsRUFBRSxFQUZOO0FBR1hDLE1BQUFBLGdCQUFnQixFQUFFLEVBSFA7QUFJWEMsTUFBQUEsZUFBZSxFQUFFLEVBSk47QUFLWEMsTUFBQUEsTUFBTSxFQUFFLEtBTEc7QUFNWEMsTUFBQUEsUUFBUSxFQUFFUCxJQUFJLElBQUksT0FOUDtBQU9YUSxNQUFBQSxTQUFTLEVBQUVOLElBQUksSUFBSSxTQVBSO0FBUVhPLE1BQUFBLG9CQUFvQixFQUFFLEVBUlg7QUFTWEMsTUFBQUEscUJBQXFCLEVBQUUsRUFUWjtBQVVYQyxNQUFBQSxXQUFXLEVBQUU7QUFWRixLQUFiO0FBWHNCO0FBdUJ2Qjs7OztXQUNELDZCQUFvQjtBQUNsQixVQUFRQyxRQUFSLEdBQXFCLEtBQUs1QixLQUExQixDQUFRNEIsUUFBUjtBQUNBQSxNQUFBQSxRQUFRLElBQUlBLFFBQVEsRUFBcEI7QUFDRDs7O1dBRUQseUJBQWdCQyxNQUFoQixFQUF3QkMsUUFBeEIsRUFBa0M7QUFBQTs7QUFDaEMsb0NBQUtDLFNBQUwsQ0FBZUMsT0FBZixnRkFBd0JDLGNBQXhCLENBQXVDSixNQUF2QztBQUNBQyxNQUFBQSxRQUFRLElBQUlBLFFBQVEsQ0FBQ0QsTUFBRCxDQUFwQjtBQUNEOzs7V0FRRDtBQUNBLHNCQUFTdEIsS0FBVCxFQUEwQztBQUFBOztBQUFBLFVBQXBCMkIsVUFBb0IsdUVBQVAsS0FBTztBQUN4QyxvQ0FBS0MsU0FBTCxDQUFlSCxPQUFmLGdGQUF3QkksSUFBeEIsQ0FBNkI3QixLQUE3QixFQUFvQzJCLFVBQXBDO0FBQ0QsSyxDQUVEOzs7O1dBQ0Esb0JBQVc7QUFBQTs7QUFDVCxxQ0FBS0MsU0FBTCxDQUFlSCxPQUFmLGtGQUF3QkssUUFBeEI7QUFDRDs7O1dBRUQsb0JBQVdDLE9BQVgsRUFBNkI7QUFBQTs7QUFDM0IscUNBQUtILFNBQUwsQ0FBZUgsT0FBZixrRkFBd0JPLFVBQXhCLENBQW1DRCxPQUFuQztBQUNELEssQ0FFRDs7OztXQUNBLG9CQUFXO0FBQ1Qsd0JBQThDLEtBQUt0QyxLQUFuRDtBQUFBLFVBQVF3QyxTQUFSLGVBQVFBLFNBQVI7QUFBQSxVQUFtQkMsUUFBbkIsZUFBbUJBLFFBQW5CO0FBQUEsVUFBNkJDLFlBQTdCLGVBQTZCQSxZQUE3QjtBQUNBLFVBQVF2QixlQUFSLEdBQTRCLEtBQUtoQixLQUFqQyxDQUFRZ0IsZUFBUjs7QUFDQSxVQUFJQSxlQUFlLENBQUNMLE1BQWhCLElBQTBCLENBQTlCLEVBQWlDO0FBQy9CeEMsUUFBQUEsT0FBTyxDQUFDcUUsT0FBUixDQUFnQixZQUFoQjtBQUNBO0FBQ0Q7O0FBQ0QsVUFBSUYsUUFBSixFQUFjO0FBQ1pBLFFBQUFBLFFBQVEsSUFBSUEsUUFBUSxDQUFDdEIsZUFBRCxDQUFwQjtBQUNBO0FBQ0Q7O0FBQ0QsVUFBSSxDQUFDcUIsU0FBTCxFQUFnQjtBQUNkLGNBQU0sSUFBSUksS0FBSixDQUFVLFVBQVYsQ0FBTjtBQUNEOztBQUNEeEUsTUFBQUEsS0FBSyxDQUFDeUUsT0FBTixDQUFjO0FBQ1pDLFFBQUFBLEtBQUssRUFBRSxZQURLO0FBRVpDLFFBQUFBLE1BQU0sRUFBRSxJQUZJO0FBR1pDLFFBQUFBLFVBQVUsRUFBRSxJQUhBO0FBSVpDLFFBQUFBLElBQUksRUFBRSxnQkFBTTtBQUNWLGNBQU1DLGFBQWEsR0FBRztBQUNwQkMsWUFBQUEsTUFBTSxFQUFFLE1BRFk7QUFFcEJ0QixZQUFBQSxNQUFNLEVBQUU7QUFBRXVCLGNBQUFBLEdBQUcsRUFBRWpDLGVBQWUsQ0FBQ2tDLElBQWhCO0FBQVA7QUFGWSxXQUF0QjtBQUlBLGNBQUlDLGFBQWEsR0FBRyxFQUFwQjs7QUFDQSxjQUFJSixhQUFKLEVBQW1CO0FBQ2pCSSxZQUFBQSxhQUFhLHFCQUFRWixZQUFSLENBQWI7QUFDRDs7QUFDRFksVUFBQUEsYUFBYSxxQkFBUUosYUFBUixDQUFiO0FBQ0F4RCxVQUFBQSxPQUFPLENBQUM4QyxTQUFELG9CQUNGYyxhQURFLEVBQVAsQ0FHR0MsSUFISCxDQUdRLFVBQVU1QyxHQUFWLEVBQW9CO0FBQ3hCLGdCQUFRNkMsSUFBUixHQUFpQjdDLEdBQWpCLENBQVE2QyxJQUFSOztBQUNBLGdCQUFJQSxJQUFJLEtBQUssR0FBYixFQUFrQjtBQUNoQmxGLGNBQUFBLE9BQU8sQ0FBQ21GLE9BQVIsQ0FBZ0IsT0FBaEI7QUFDRCxhQUZELE1BRU87QUFDTG5GLGNBQUFBLE9BQU8sQ0FBQ29GLEtBQVIsQ0FBYyxPQUFkO0FBQ0Q7QUFDRixXQVZILEVBV0dDLEtBWEgsQ0FXUyxVQUFVRCxLQUFWLEVBQXNCO0FBQzNCRSxZQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBWSxPQUFaLEVBQXFCSCxLQUFyQjtBQUNELFdBYkg7QUFjRDtBQTVCVyxPQUFkO0FBOEJEOzs7V0FDRCxtQkFBVTdCLE1BQVYsRUFBdUI7QUFBQTs7QUFDckIsb0NBQUtpQyxRQUFMLENBQWM5QixPQUFkLGdGQUF1QitCLEtBQXZCLENBQTZCQyxJQUE3QixDQUFrQztBQUNoQ25DLFFBQUFBLE1BQU0sRUFBRUE7QUFEd0IsT0FBbEM7QUFHRCxLLENBQ0Q7Ozs7V0FDQSxvQkFBVztBQUFBOztBQUNULFVBQVFvQyxRQUFSLEdBQXFCLEtBQUtqRSxLQUExQixDQUFRaUUsUUFBUjtBQUNBLFVBQU1DLFNBQVMsNkJBQUcsS0FBS25DLFNBQUwsQ0FBZUMsT0FBbEIsMkRBQUcsdUJBQXdCbUMsY0FBeEIsRUFBbEI7O0FBQ0EsVUFBSUYsUUFBSixFQUFjO0FBQ1pBLFFBQUFBLFFBQVEsQ0FBQ0MsU0FBRCxDQUFSO0FBQ0E7QUFDRDs7QUFDRCxVQUFJLENBQUNuRixVQUFVLENBQUMsS0FBS3FGLFVBQU4sQ0FBZixFQUFrQztBQUNoQyxhQUFLLElBQUl4RCxHQUFULElBQWdCLEtBQUt3RCxVQUFyQixFQUFpQztBQUMvQixjQUFJQyxPQUFPLEdBQUdILFNBQVMsQ0FBQ3RELEdBQUQsQ0FBdkI7O0FBQ0EsY0FBSTBELEtBQUssQ0FBQ0MsT0FBTixDQUFjRixPQUFkLENBQUosRUFBNEI7QUFDMUJILFlBQUFBLFNBQVMsQ0FBQ3RELEdBQUQsQ0FBVCxHQUFpQixDQUNmOUIsTUFBTSxDQUFDdUYsT0FBTyxDQUFDLENBQUQsQ0FBUixDQUFOLENBQW1CRyxNQUFuQixDQUEwQixLQUFLSixVQUFMLENBQWdCeEQsR0FBaEIsQ0FBMUIsQ0FEZSxFQUVmOUIsTUFBTSxDQUFDdUYsT0FBTyxDQUFDLENBQUQsQ0FBUixDQUFOLENBQW1CRyxNQUFuQixDQUEwQixLQUFLSixVQUFMLENBQWdCeEQsR0FBaEIsQ0FBMUIsQ0FGZSxDQUFqQjtBQUlELFdBTEQsTUFLTztBQUNMc0QsWUFBQUEsU0FBUyxDQUFDdEQsR0FBRCxDQUFULEdBQWlCOUIsTUFBTSxDQUFDdUYsT0FBRCxDQUFOLENBQWdCRyxNQUFoQixDQUF1QixLQUFLSixVQUFMLENBQWdCeEQsR0FBaEIsQ0FBdkIsQ0FBakI7QUFDRDtBQUNGO0FBQ0Y7O0FBQ0QsV0FBS0gsU0FBTCxDQUFleUQsU0FBZjtBQUNELEssQ0FDRDs7OztXQUNBLHVCQUEwQztBQUFBO0FBQUE7O0FBQUEsVUFBOUJyQyxNQUE4Qix1RUFBckIsRUFBcUI7QUFBQSxVQUFqQjRDLFFBQWlCLHVFQUFOLElBQU07QUFDeEMscUNBQUtYLFFBQUwsQ0FBYzlCLE9BQWQsa0ZBQXVCK0IsS0FBdkIsQ0FBNkJXLE1BQTdCLENBQW9DO0FBQ2xDQyxRQUFBQSxRQUFRLEVBQUUsa0JBQUNoRSxHQUFELEVBQVM7QUFBQTs7QUFDakIsY0FDRThELFFBQVEsSUFDUixDQUFBOUQsR0FBRyxTQUFILElBQUFBLEdBQUcsV0FBSCx5QkFBQUEsR0FBRyxDQUFFaUUsSUFBTCw2RUFBV0MsT0FBWCx3RUFBb0IvRCxNQUFwQixLQUE4QixDQUQ5QixJQUVBLE1BQUksQ0FBQ1gsS0FBTCxDQUFXd0IsV0FBWCxLQUEyQixDQUg3QixFQUlFO0FBQUE7O0FBQ0EscUNBQUEsTUFBSSxDQUFDbUMsUUFBTCxDQUFjOUIsT0FBZCxnRkFBdUIrQixLQUF2QixDQUE2QlcsTUFBN0IsQ0FBb0M7QUFDbEM3QyxjQUFBQSxNQUFNO0FBQUlHLGdCQUFBQSxPQUFPLEVBQUU7QUFBYixpQkFBbUJILE1BQW5CO0FBRDRCLGFBQXBDO0FBR0Q7QUFDRjtBQVhpQyxPQUFwQztBQWFEOzs7V0FDRCw4QkFBcUI7QUFDbkIsYUFBTyxLQUFLMUIsS0FBTCxDQUFXZ0IsZUFBbEI7QUFDRDs7O1dBQ0QsK0JBQXNCO0FBQ3BCLGFBQU8sS0FBS2hCLEtBQUwsQ0FBV2lCLGdCQUFsQjtBQUNEOzs7V0FDRCxnQ0FBdUI7QUFDckIsV0FBSzBELFFBQUwsQ0FBYztBQUNaM0QsUUFBQUEsZUFBZSxFQUFFLEVBREw7QUFFWkMsUUFBQUEsZ0JBQWdCLEVBQUUsRUFGTjtBQUdaSyxRQUFBQSxvQkFBb0IsRUFBRSxFQUhWO0FBSVpDLFFBQUFBLHFCQUFxQixFQUFFLEVBSlg7QUFLWkMsUUFBQUEsV0FBVyxFQUFFO0FBTEQsT0FBZDtBQU9EOzs7V0FDRCw0QkFBbUJpRCxJQUFuQixFQUF5QjtBQUN2QixVQUFRakQsV0FBUixHQUF3QixLQUFLeEIsS0FBN0IsQ0FBUXdCLFdBQVI7QUFDQSxXQUFLbUQsUUFBTCxDQUFjO0FBQ1ozRCxRQUFBQSxlQUFlLEVBQUV5RCxJQURMO0FBRVpuRCxRQUFBQSxvQkFBb0Isc0JBQUtFLFdBQUwsRUFBbUJpRCxJQUFuQjtBQUZSLE9BQWQ7QUFJRDs7O1dBQ0QsNkJBQW9CQSxJQUFwQixFQUEwQjtBQUN4QixVQUFRakQsV0FBUixHQUF3QixLQUFLeEIsS0FBN0IsQ0FBUXdCLFdBQVI7QUFDQSxXQUFLbUQsUUFBTCxDQUFjO0FBQ1oxRCxRQUFBQSxnQkFBZ0IsRUFBRXdELElBRE47QUFFWmxELFFBQUFBLHFCQUFxQixzQkFBS0MsV0FBTCxFQUFtQmlELElBQW5CO0FBRlQsT0FBZDtBQUlEOzs7V0FDRCwyQkFBa0I7QUFBQTs7QUFDaEIsVUFBTVYsU0FBUyw2QkFBRyxLQUFLbkMsU0FBTCxDQUFlQyxPQUFsQiwyREFBRyx1QkFBd0JtQyxjQUF4QixFQUFsQjtBQUNBLGFBQU9ELFNBQVA7QUFDRDs7O1dBRUQseUJBQWdCVSxJQUFoQixFQUFpQztBQUFBOztBQUFBLFVBQVgvRCxJQUFXLHVFQUFKLEVBQUk7QUFDL0IsVUFBUWtFLFVBQVIsR0FBdUIsS0FBSy9FLEtBQTVCLENBQVErRSxVQUFSO0FBQ0EsK0JBQTBCQSxVQUExQixDQUFRQyxNQUFSO0FBQUEsVUFBUUEsTUFBUixtQ0FBaUIsSUFBakI7QUFDQSxVQUFJQyxNQUFNLEdBQUcsRUFBYjs7QUFDQSxVQUFJTCxJQUFJLENBQUNNLFVBQVQsRUFBcUI7QUFDbkIsWUFBTUMsUUFBUSxHQUFHUCxJQUFJLENBQUNNLFVBQXRCO0FBQ0FDLFFBQUFBLFFBQVEsQ0FBQ0MsR0FBVCxDQUFhLFVBQUNDLElBQUQsRUFBT0MsS0FBUCxFQUFpQjtBQUM1QixjQUFJRCxJQUFJLENBQUNILFVBQVQsRUFBcUI7QUFDbkIsWUFBQSxNQUFJLENBQUNLLGVBQUwsQ0FBcUJGLElBQUksQ0FBQ0gsVUFBMUIsRUFBc0NyRSxJQUF0QztBQUNELFdBRkQsTUFFTztBQUNMb0UsWUFBQUEsTUFBTSxnQ0FBT3BFLElBQVAsSUFBYXdFLElBQUksQ0FBQ0wsTUFBRCxDQUFqQixFQUFOO0FBQ0Q7QUFDRixTQU5EO0FBT0QsT0FURCxNQVNPO0FBQ0xDLFFBQUFBLE1BQU0sZ0NBQU9wRSxJQUFQLElBQWErRCxJQUFJLENBQUNJLE1BQUQsQ0FBakIsRUFBTjtBQUNEOztBQUNELGFBQU9DLE1BQVA7QUFDRDs7O1dBRUQsMkJBQWtCTyxXQUFsQixFQUF3RDtBQUFBLFVBQXBCQyxVQUFvQix1RUFBUCxLQUFPO0FBQ3RELFVBQU1DLElBQUksR0FBR0YsV0FBVyxDQUFDMUUsTUFBWixHQUFxQixDQUFsQztBQUNBLGtDQUE4QixLQUFLZCxLQUFuQyxDQUFRMkYsVUFBUjtBQUFBLFVBQVFBLFVBQVIsc0NBQXFCLElBQXJCO0FBQ0EsVUFBTTFFLE9BQU8sR0FBR3VFLFdBQVcsQ0FBQ0osR0FBWixDQUFnQixVQUFDQyxJQUFELEVBQVlDLEtBQVosRUFBMkI7QUFDekQsMEJBQStERCxJQUFJLENBQUNyRixLQUFwRTtBQUFBLFlBQVFtRixRQUFSLGVBQVFBLFFBQVI7QUFBQSxZQUFrQlMsUUFBbEIsZUFBa0JBLFFBQWxCO0FBQUEsWUFBNEJDLFFBQTVCLGVBQTRCQSxPQUE1QjtBQUFBLFlBQXFDQyxJQUFyQyxlQUFxQ0EsSUFBckM7QUFBQSxZQUEyQzFELElBQTNDLGVBQTJDQSxJQUEzQztBQUFBLFlBQW9EUCxNQUFwRDs7QUFDQSxZQUFJeUQsS0FBSyxHQUFHLENBQVosRUFBZTtBQUNiLDhCQUNFO0FBQ0UsWUFBQSxTQUFTLEVBQUU1RyxHQUFHLENBQ1pjLE9BQU8sQ0FBQ2IsTUFBRCxFQUFTLFFBQVQsQ0FESyxFQUVaYSxPQUFPLENBQUNiLE1BQUQsRUFBUyxjQUFULENBRkssQ0FEaEI7QUFLRSxZQUFBLEdBQUcsRUFBRTJHLEtBTFA7QUFNRSxZQUFBLE9BQU8sRUFBRSxtQkFBTTtBQUNiTyxjQUFBQSxRQUFPLElBQUlBLFFBQU8sRUFBbEI7QUFDRDtBQVJILGFBU01oRSxNQVROLGdCQVdFO0FBQU0sWUFBQSxTQUFTLEVBQUVyQyxPQUFPLENBQUNiLE1BQUQsRUFBUyxNQUFUO0FBQXhCLGFBQTJDbUgsSUFBM0MsQ0FYRixlQVlFO0FBQU0sWUFBQSxTQUFTLEVBQUV0RyxPQUFPLENBQUNiLE1BQUQsRUFBUyxNQUFUO0FBQXhCLGFBQTJDd0csUUFBM0MsQ0FaRixDQURGO0FBZ0JEO0FBQ0YsT0FwQmUsQ0FBaEI7QUFxQkEsMEJBQ0U7QUFDRSxRQUFBLFNBQVMsRUFBRXpHLEdBQUcsQ0FBQ2MsT0FBTyxDQUFDYixNQUFELEVBQVMsY0FBVCxDQUFSLHNCQUNYYSxPQUFPLENBQUNiLE1BQUQsRUFBUyxxQkFBVCxDQURJLEVBQzhCLENBQUNnSCxVQUFELElBQWVGLFVBRDdDLEVBRGhCO0FBSUUsUUFBQSxLQUFLLEVBQUU7QUFBRU0sVUFBQUEsVUFBVSxFQUFFO0FBQWQ7QUFKVCxTQU1HUCxXQUFXLENBQUNKLEdBQVosQ0FBZ0IsVUFBQ0MsSUFBRCxFQUFZQyxLQUFaLEVBQTJCO0FBQzFDLFlBQUlJLElBQUosRUFBVTtBQUNSLGNBQUlKLEtBQUssR0FBRyxDQUFaLEVBQWU7QUFDYixnQ0FBTztBQUFLLGNBQUEsR0FBRyxFQUFFQTtBQUFWLGVBQWtCRCxJQUFsQixDQUFQO0FBQ0QsV0FGRCxNQUVPLElBQUlDLEtBQUssSUFBSSxDQUFiLEVBQWdCO0FBQ3JCLGdDQUNFLG9CQUFDLE9BQUQ7QUFDRSxjQUFBLE9BQU8sRUFBRXJFLE9BRFg7QUFFRSxjQUFBLEtBQUssRUFBRSxJQUZUO0FBR0UsY0FBQSxTQUFTLEVBQUMsUUFIWjtBQUlFLGNBQUEsT0FBTyxFQUFFLENBQUMsT0FBRCxDQUpYO0FBS0UsY0FBQSxHQUFHLEVBQUVxRSxLQUxQLENBTUU7O0FBTkYsNEJBUUUsb0JBQUMsTUFBRDtBQUFRLGNBQUEsSUFBSSxFQUFDO0FBQWIsNkNBQ0ssb0JBQUMsWUFBRCxPQURMLENBUkYsQ0FERjtBQWNELFdBZk0sTUFlQTtBQUNMLG1CQUFPLElBQVA7QUFDRDtBQUNGLFNBckJELE1BcUJPO0FBQ0wsOEJBQU87QUFBSyxZQUFBLEdBQUcsRUFBRUE7QUFBVixhQUFrQkQsSUFBbEIsQ0FBUDtBQUNEO0FBQ0YsT0F6QkEsQ0FOSCxDQURGO0FBbUNEOzs7V0FDRCw0QkFBbUJXLGFBQW5CLEVBQXVDQyxNQUF2QyxFQUFvRDtBQUNsRCx5QkFBeUQsS0FBS2pHLEtBQTlEO0FBQUEsK0NBQVFrRyxVQUFSO0FBQUEsVUFBUUEsVUFBUixzQ0FBcUIsSUFBckI7QUFBQSw4Q0FBMkJDLE9BQTNCO0FBQUEsVUFBMkJBLE9BQTNCLHFDQUFxQyxFQUFyQztBQUFBLFVBQXlDQyxXQUF6QyxnQkFBeUNBLFdBQXpDOztBQUNBLHFCQUE2QnhHLE1BQU0sRUFBbkM7QUFBQSxVQUFReUcsZ0JBQVIsWUFBUUEsZ0JBQVI7O0FBQ0EsVUFBTUMsVUFBVSxHQUFHLEVBQW5CO0FBQ0EsVUFBSUMsUUFBUSxHQUFHLElBQWY7QUFDQSxVQUFJLENBQUFILFdBQVcsU0FBWCxJQUFBQSxXQUFXLFdBQVgsWUFBQUEsV0FBVyxDQUFFRyxRQUFiLE1BQTBCLEtBQTlCLEVBQXFDQSxRQUFRLEdBQUcsS0FBWCxDQUFyQyxLQUNLLElBQUlGLGdCQUFnQixDQUFDRSxRQUFqQixLQUE4QixLQUFsQyxFQUF5Q0EsUUFBUSxHQUFHLEtBQVg7QUFDOUNQLE1BQUFBLGFBQWEsQ0FBQ1osR0FBZCxDQUFrQixVQUFDQyxJQUFELEVBQVlDLEtBQVosRUFBMkI7QUFDM0MsMkJBQ0VELElBQUksQ0FBQ3JGLEtBRFA7QUFBQSxZQUFRbUYsUUFBUixnQkFBUUEsUUFBUjtBQUFBLFlBQWtCUyxRQUFsQixnQkFBa0JBLFFBQWxCO0FBQUEsWUFBNEJDLE9BQTVCLGdCQUE0QkEsT0FBNUI7QUFBQSxZQUFxQ0MsSUFBckMsZ0JBQXFDQSxJQUFyQztBQUFBLFlBQTJDVSxVQUEzQyxnQkFBMkNBLFVBQTNDO0FBQUEsWUFBMEQzRSxNQUExRDs7QUFFQSxZQUFJMkUsVUFBSixFQUFnQjtBQUNkLGNBQUlDLElBQUksQ0FBQ0QsVUFBRCxDQUFSLEVBQXNCO0FBQ3BCRixZQUFBQSxVQUFVLENBQUNJLElBQVgsQ0FBZ0JyQixJQUFoQjtBQUNEO0FBQ0YsU0FKRCxNQUlPO0FBQ0xpQixVQUFBQSxVQUFVLENBQUNJLElBQVgsQ0FBZ0JyQixJQUFoQjtBQUNEO0FBQ0YsT0FWRDtBQVdBLFVBQU1LLElBQUksR0FBR1ksVUFBVSxDQUFDeEYsTUFBWCxHQUFvQixDQUFqQztBQUVBLFVBQU1HLE9BQU8sR0FBR3FGLFVBQVUsQ0FBQ2xCLEdBQVgsQ0FBZSxVQUFDQyxJQUFELEVBQVlDLEtBQVosRUFBMkI7QUFDeEQsMkJBQ0VELElBQUksQ0FBQ3JGLEtBRFA7QUFBQSxZQUFRbUYsUUFBUixnQkFBUUEsUUFBUjtBQUFBLFlBQWtCUyxRQUFsQixnQkFBa0JBLFFBQWxCO0FBQUEsWUFBNEJDLFNBQTVCLGdCQUE0QkEsT0FBNUI7QUFBQSxZQUFxQ1csVUFBckMsZ0JBQXFDQSxVQUFyQztBQUFBLFlBQWlEVixJQUFqRCxnQkFBaURBLElBQWpEO0FBQUEsWUFBdUQxRCxJQUF2RCxnQkFBdURBLElBQXZEO0FBQUEsWUFBZ0VQLE1BQWhFOztBQUVBLFlBQUl5RCxLQUFLLEdBQUcsQ0FBWixFQUFlO0FBQ2IsOEJBQ0U7QUFDRSxZQUFBLFNBQVMsRUFBRTVHLEdBQUcsQ0FDWmMsT0FBTyxDQUFDYixNQUFELEVBQVMsUUFBVCxDQURLLEVBRVphLE9BQU8sQ0FBQ2IsTUFBRCxFQUFTLGNBQVQsQ0FGSyxDQURoQjtBQUtFLFlBQUEsR0FBRyxFQUFFMkcsS0FMUDtBQU1FLFlBQUEsT0FBTyxFQUFFLG1CQUFNO0FBQ2JPLGNBQUFBLFNBQU8sSUFBSUEsU0FBTyxDQUFDSSxNQUFELENBQWxCO0FBQ0Q7QUFSSCxhQVNNcEUsTUFUTixHQVdHMEUsUUFBUSxLQUFLLEtBQWIsaUJBQ0M7QUFBTSxZQUFBLFNBQVMsRUFBRS9HLE9BQU8sQ0FBQ2IsTUFBRCxFQUFTLE1BQVQ7QUFBeEIsYUFBMkNtSCxJQUEzQyxDQVpKLGVBY0U7QUFBTSxZQUFBLFNBQVMsRUFBRXRHLE9BQU8sQ0FBQ2IsTUFBRCxFQUFTLE1BQVQ7QUFBeEIsYUFBMkN3RyxRQUEzQyxDQWRGLENBREY7QUFrQkQ7QUFDRixPQXZCZSxDQUFoQjtBQXlCQSxhQUFPbUIsVUFBVSxDQUFDbEIsR0FBWCxDQUFlLFVBQUNDLElBQUQsRUFBWUMsS0FBWixFQUEyQjtBQUMvQywyQkFDRUQsSUFBSSxDQUFDckYsS0FEUDtBQUFBLFlBQVFtRixRQUFSLGdCQUFRQSxRQUFSO0FBQUEsWUFBa0JTLFFBQWxCLGdCQUFrQkEsUUFBbEI7QUFBQSxZQUE0QkMsU0FBNUIsZ0JBQTRCQSxPQUE1QjtBQUFBLFlBQXFDVyxVQUFyQyxnQkFBcUNBLFVBQXJDO0FBQUEsWUFBaURWLElBQWpELGdCQUFpREEsSUFBakQ7QUFBQSxZQUEwRGpFLE1BQTFEOztBQUVBLFlBQUk2RCxJQUFKLEVBQVU7QUFDUixjQUFJSixLQUFLLEdBQUcsQ0FBWixFQUFlO0FBQ2IsZ0NBQ0U7QUFDRSxjQUFBLFNBQVMsRUFBRTVHLEdBQUcsQ0FBQ2MsT0FBTyxDQUFDYixNQUFELEVBQVMsUUFBVCxDQUFSLHNCQUNYYSxPQUFPLENBQUNiLE1BQUQsRUFBUyxjQUFULENBREksRUFDdUIyRyxLQUFLLEtBQUssQ0FEakMsRUFEaEI7QUFJRSxjQUFBLEdBQUcsRUFBRUEsS0FKUDtBQUtFLGNBQUEsT0FBTyxFQUFFLG1CQUFNO0FBQ2JPLGdCQUFBQSxTQUFPLElBQUlBLFNBQU8sQ0FBQ0ksTUFBRCxDQUFsQjtBQUNEO0FBUEgsZUFRTXBFLE1BUk4sR0FVRzBFLFFBQVEsS0FBSyxLQUFiLGlCQUNDO0FBQU0sY0FBQSxTQUFTLEVBQUUvRyxPQUFPLENBQUNiLE1BQUQsRUFBUyxNQUFUO0FBQXhCLGVBQTJDbUgsSUFBM0MsQ0FYSixlQWFFO0FBQU0sY0FBQSxTQUFTLEVBQUV0RyxPQUFPLENBQUNiLE1BQUQsRUFBUyxNQUFUO0FBQXhCLGVBQTJDd0csUUFBM0MsQ0FiRixDQURGO0FBaUJELFdBbEJELE1Ba0JPLElBQUlHLEtBQUssSUFBSSxDQUFiLEVBQWdCO0FBQ3JCLGdDQUNFLG9CQUFDLE9BQUQ7QUFDRSxjQUFBLFNBQVMsRUFBQyxRQURaO0FBRUUsY0FBQSxLQUFLLEVBQUUsSUFGVDtBQUdFLGNBQUEsT0FBTyxFQUFFckUsT0FIWDtBQUlFLGNBQUEsT0FBTyxFQUFFLENBQUMsT0FBRCxDQUpYO0FBS0UsY0FBQSxHQUFHLEVBQUVxRSxLQUxQLENBTUU7O0FBTkYsNEJBUUU7QUFBSyxjQUFBLFNBQVMsRUFBRTlGLE9BQU8sQ0FBQ2IsTUFBRCxFQUFTLFFBQVQ7QUFBdkIsaURBRUU7QUFBTSxjQUFBLFNBQVMsRUFBRWEsT0FBTyxDQUFDYixNQUFELEVBQVMsTUFBVDtBQUF4Qiw0QkFDRSxvQkFBQyxZQUFELE9BREYsQ0FGRixDQVJGLENBREY7QUFpQkQsV0FsQk0sTUFrQkE7QUFDTCxtQkFBTyxJQUFQO0FBQ0Q7QUFDRixTQXhDRCxNQXdDTztBQUNMLDhCQUNFO0FBQ0UsWUFBQSxTQUFTLEVBQUVELEdBQUcsQ0FBQ2MsT0FBTyxDQUFDYixNQUFELEVBQVMsUUFBVCxDQUFSLHNCQUNYYSxPQUFPLENBQUNiLE1BQUQsRUFBUyxjQUFULENBREksRUFDdUIyRyxLQUFLLEtBQUssQ0FEakMsRUFEaEI7QUFJRSxZQUFBLEdBQUcsRUFBRUEsS0FKUDtBQUtFLFlBQUEsT0FBTyxFQUFFLG1CQUFNO0FBQ2JPLGNBQUFBLFNBQU8sSUFBSUEsU0FBTyxDQUFDSSxNQUFELENBQWxCO0FBQ0Q7QUFQSCxhQVFNcEUsTUFSTixHQVVHMEUsUUFBUSxLQUFLLEtBQWIsaUJBQ0M7QUFBTSxZQUFBLFNBQVMsRUFBRS9HLE9BQU8sQ0FBQ2IsTUFBRCxFQUFTLE1BQVQ7QUFBeEIsYUFBMkNtSCxJQUEzQyxDQVhKLGVBYUU7QUFBTSxZQUFBLFNBQVMsRUFBRXRHLE9BQU8sQ0FBQ2IsTUFBRCxFQUFTLE1BQVQ7QUFBeEIsYUFBMkN3RyxRQUEzQyxDQWJGLENBREY7QUFpQkQ7QUFDRixPQTlETSxDQUFQLENBN0NrRCxDQTRHbEQ7QUFDRCxLLENBQ0Q7Ozs7V0FDQSxvQkFBV3dCLFlBQVgsUUFBZ0U7QUFBQTs7QUFBQSxVQUFoQ2pHLFFBQWdDLFFBQWhDQSxRQUFnQztBQUFBLFVBQXRCa0csYUFBc0IsUUFBdEJBLGFBQXNCO0FBQzlELFVBQUlDLE9BQU8sR0FBRyxFQUFkO0FBQ0Esa0NBQWdELEtBQUs3RyxLQUFMLENBQVc4RyxTQUEzRDtBQUFBLHlEQUFRQyxTQUFSO0FBQUEsVUFBUUEsU0FBUix1Q0FBb0IsS0FBcEI7QUFBQSx5REFBMkJDLFdBQTNCO0FBQUEsVUFBMkJBLFdBQTNCLHVDQUF5QyxFQUF6QztBQUNBLFVBQVEzRixlQUFSLEdBQTRCLEtBQUtsQixLQUFqQyxDQUFRa0IsZUFBUjs7QUFDQSxVQUFJWCxRQUFKLEVBQWM7QUFDWixZQUFJa0csYUFBYSxDQUFDLENBQUQsQ0FBYixDQUFpQkssTUFBakIsSUFBMkIsQ0FBQ0wsYUFBYSxDQUFDLENBQUQsQ0FBYixDQUFpQnpCLFFBQWpELEVBQTJEO0FBQ3pELGNBQUl3QixZQUFZLENBQUMsQ0FBRCxDQUFaLEtBQW9CdEYsZUFBeEIsRUFBeUM7QUFDdkN3RixZQUFBQSxPQUFPLEdBQUdELGFBQWEsQ0FBQyxDQUFELENBQWIsQ0FBaUJNLE9BQWpCLENBQXlCQyxTQUF6QixDQUFtQ0osU0FBbkMsQ0FBVjtBQUNBLGlCQUFLakMsUUFBTCxDQUFjO0FBQ1p6RCxjQUFBQSxlQUFlLEVBQUVzRixZQUFZLENBQUMsQ0FBRDtBQURqQixhQUFkO0FBR0Q7QUFDRjtBQUNGLE9BVEQsTUFTTztBQUNMLGFBQUs3QixRQUFMLENBQWM7QUFDWnpELFVBQUFBLGVBQWUsRUFBRXdGO0FBREwsU0FBZDtBQUdEOztBQUNELFVBQU0zQyxTQUFTLDZCQUFHLEtBQUtuQyxTQUFMLENBQWVDLE9BQWxCLDJEQUFHLHVCQUF3Qm1DLGNBQXhCLEVBQWxCO0FBQ0E2QyxNQUFBQSxXQUFXLElBQUksS0FBS3ZHLFNBQUwsaUNBQW9CeUQsU0FBcEIsMkJBQWdDOEMsV0FBaEMsRUFBOENILE9BQTlDLEdBQWY7QUFDRDs7O1dBQ0QsdUJBQWM7QUFBQTs7QUFDWixxQ0FBSzlFLFNBQUwsQ0FBZUMsT0FBZixrRkFBd0JvRixXQUF4QjtBQUNEOzs7V0FDRCxpQkFBUXBILEtBQVIsRUFBZXFILElBQWYsRUFBcUI7QUFBQTs7QUFDbkIsVUFBSUMsT0FBTyxHQUFHRCxJQUFkOztBQUNBLFVBQUlySCxLQUFLLFNBQUwsSUFBQUEsS0FBSyxXQUFMLElBQUFBLEtBQUssQ0FBRTRFLElBQVAsSUFBZSxDQUFBNUUsS0FBSyxTQUFMLElBQUFBLEtBQUssV0FBTCwyQkFBQUEsS0FBSyxDQUFFNEUsSUFBUCw0REFBYTlELE1BQWIsSUFBc0IsQ0FBekMsRUFBNEM7QUFDMUMsWUFBSThELElBQUksR0FBRzVFLEtBQUssQ0FBQzRFLElBQWpCOztBQUNBLGFBQUssSUFBSTJDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLElBQUczQyxJQUFILGFBQUdBLElBQUgsdUJBQUdBLElBQUksQ0FBRTlELE1BQVQsQ0FBakIsRUFBa0N5RyxDQUFDLEVBQW5DLEVBQXVDO0FBQ3JDLGNBQUkzQyxJQUFJLENBQUMyQyxDQUFELENBQUosQ0FBUWhILEtBQVIsSUFBaUI4RyxJQUFyQixFQUEyQjtBQUN6QkMsWUFBQUEsT0FBTyxHQUFHMUMsSUFBSSxDQUFDMkMsQ0FBRCxDQUFKLENBQVFDLEtBQWxCO0FBQ0Q7QUFDRjtBQUNGOztBQUNELGFBQU9GLE9BQVA7QUFDRDs7O1dBQ0Qsc0JBQWExQyxJQUFiLEVBQW1CO0FBQUE7O0FBQ2pCLHFDQUFLZCxRQUFMLENBQWM5QixPQUFkLGtGQUF1QitCLEtBQXZCLENBQTZCMEQsT0FBN0IsQ0FBcUM3QyxJQUFyQztBQUNEOzs7V0FDRCxxQkFBWUEsSUFBWixFQUFrQjtBQUFBOztBQUNoQixvQ0FBSzhDLE9BQUwsQ0FBYTFGLE9BQWIsZ0ZBQXNCK0IsS0FBdEIsQ0FBNEIwRCxPQUE1QixDQUFvQzdDLElBQXBDO0FBQ0Q7OztXQVdELGtCQUFTO0FBQUE7O0FBQ1AsVUFBUXpELGVBQVIsR0FBNEIsS0FBS2hCLEtBQWpDLENBQVFnQixlQUFSO0FBQ0EseUJBa0JJLEtBQUtuQixLQWxCVDtBQUFBLDhDQUNFMkgsT0FERjtBQUFBLFVBQ0VBLE9BREYscUNBQ1ksRUFEWjtBQUFBLCtDQUVFaEMsVUFGRjtBQUFBLFVBRUVBLFVBRkYsc0NBRWUsSUFGZjtBQUFBLFVBR0VSLFFBSEYsZ0JBR0VBLFFBSEY7QUFBQSwrQ0FJRXlDLFNBSkY7QUFBQSxVQUlFQSxTQUpGLHNDQUljLEVBSmQ7QUFBQSwrQ0FLRTdDLFVBTEY7QUFBQSxVQUtFQSxVQUxGLHNDQUtlLEVBTGY7QUFBQSwrQ0FNRStCLFNBTkY7QUFBQSxVQU1FQSxTQU5GLHNDQU1jLEVBTmQ7QUFBQSwrQ0FPRWUsU0FQRjtBQUFBLFVBT0VBLFNBUEYsc0NBT2MsRUFQZDtBQUFBLCtDQVFFQyxRQVJGO0FBQUEsVUFRRUEsUUFSRixzQ0FRYSxLQVJiO0FBQUEsK0NBU0VDLFlBVEY7QUFBQSxVQVNFQSxZQVRGLHNDQVNpQixFQVRqQjtBQUFBLCtDQVVFQyxjQVZGO0FBQUEsVUFVRUEsY0FWRixzQ0FVbUIsSUFWbkI7QUFBQSw4Q0FXRTdCLE9BWEY7QUFBQSxVQVdFQSxPQVhGLHFDQVdZLEVBWFo7QUFBQSwrQ0FZRUQsVUFaRjtBQUFBLFVBWUVBLFVBWkYsc0NBWWUsSUFaZjtBQUFBLFVBYUUrQixVQWJGLGdCQWFFQSxVQWJGO0FBQUEsK0NBY0VDLGVBZEY7QUFBQSxVQWNFQSxlQWRGLHNDQWNvQixJQWRwQjtBQUFBLFVBZUVDLFNBZkYsZ0JBZUVBLFNBZkY7QUFBQSwrQ0FnQkVDLGtCQWhCRjtBQUFBLFVBZ0JFQSxrQkFoQkYsc0NBZ0J1QixRQWhCdkI7QUFBQSxVQWlCRWhDLFdBakJGLGdCQWlCRUEsV0FqQkY7O0FBbUJBLDhCQVNJckIsVUFUSixDQUNFaEIsS0FERjtBQUFBLFVBQ0VBLEtBREYsa0NBQ1UsRUFEVjtBQUFBLGtDQVNJZ0IsVUFUSixDQUVFc0QsWUFGRjtBQUFBLFVBRUVBLFlBRkYsc0NBRWlCLElBRmpCO0FBQUEsa0NBU0l0RCxVQVRKLENBR0V1RCxZQUhGO0FBQUEsVUFHRUEsWUFIRixzQ0FHaUIsSUFIakI7QUFBQSxrQ0FTSXZELFVBVEosQ0FJRXdELGdCQUpGO0FBQUEsVUFJRUEsZ0JBSkYsc0NBSXFCLElBSnJCO0FBQUEsa0NBU0l4RCxVQVRKLENBS0V5RCxXQUxGO0FBQUEsVUFLRUEsV0FMRixzQ0FLZ0IsSUFMaEI7QUFBQSxrQ0FTSXpELFVBVEosQ0FNRTBELFlBTkY7QUFBQSxVQU1FQSxZQU5GLHNDQU1pQixFQU5qQjtBQUFBLGtDQVNJMUQsVUFUSixDQU9FMkQsVUFQRjtBQUFBLFVBT0VBLFVBUEYsc0NBT2UsRUFQZjtBQUFBLFVBUUtDLGdCQVJMLDRCQVNJNUQsVUFUSjs7QUFXQSw2QkFLSStCLFNBTEosQ0FDRS9DLEtBREY7QUFBQSxVQUNTNkUsU0FEVCxpQ0FDcUIsRUFEckI7QUFBQSxrQ0FLSTlCLFNBTEosQ0FFRW5CLFVBRkY7QUFBQSxVQUVja0QsVUFGZCxzQ0FFMkIsSUFGM0I7QUFBQSxrQ0FLSS9CLFNBTEosQ0FHRWdDLFVBSEY7QUFBQSxVQUdFQSxVQUhGLHNDQUdlLE9BSGY7QUFBQSxVQUlLQyxlQUpMLDRCQUtJakMsU0FMSjs7QUFPQSxVQUFJa0MsV0FBVztBQUFLWCxRQUFBQSxZQUFZLEVBQVpBLFlBQUw7QUFBbUJ0RSxRQUFBQSxLQUFLLEVBQUxBO0FBQW5CLFNBQTZCNEUsZ0JBQTdCLENBQWY7O0FBQ0EsVUFBSUosZ0JBQUosRUFBc0I7QUFDcEJTLFFBQUFBLFdBQVcsbUNBQ05BLFdBRE07QUFFVFAsVUFBQUEsWUFBWTtBQUNWdEgsWUFBQUEsZUFBZSxFQUFFLEtBQUtoQixLQUFMLENBQVdnQixlQURsQjtBQUVWOEgsWUFBQUEsUUFBUSxFQUFFLGtCQUFDOUgsZUFBRCxFQUFrQitILFlBQWxCLEVBQW1DO0FBQzNDLGlDQUNFLE1BQUksQ0FBQy9JLEtBRFA7QUFBQSxrQkFBUXNCLG9CQUFSLGdCQUFRQSxvQkFBUjtBQUFBLGtCQUE4QkMscUJBQTlCLGdCQUE4QkEscUJBQTlCO0FBQUEsa0JBQXFEQyxXQUFyRCxnQkFBcURBLFdBQXJEOztBQUVBLGtCQUFNd0gsZUFBZSxtQ0FDaEIxSCxvQkFEZ0IsMkJBRWxCRSxXQUZrQixFQUVKUixlQUZJLEVBQXJCOztBQUlBLGtCQUFNaUksZ0JBQWdCLG1DQUNqQjFILHFCQURpQiwyQkFFbkJDLFdBRm1CLEVBRUx1SCxZQUZLLEVBQXRCOztBQUlBLGNBQUEsTUFBSSxDQUFDcEUsUUFBTCxDQUFjO0FBQ1ozRCxnQkFBQUEsZUFBZSxFQUFFLE1BQUksQ0FBQ2tJLGNBQUwsQ0FBb0JGLGVBQXBCLENBREw7QUFFWi9ILGdCQUFBQSxnQkFBZ0IsRUFBRSxNQUFJLENBQUNpSSxjQUFMLENBQW9CRCxnQkFBcEIsQ0FGTjtBQUdaM0gsZ0JBQUFBLG9CQUFvQixvQkFDZjBILGVBRGUsQ0FIUjtBQU1aekgsZ0JBQUFBLHFCQUFxQixvQkFDaEIwSCxnQkFEZ0I7QUFOVCxlQUFkO0FBVUQsYUF2QlM7QUF5QlZFLFlBQUFBLFdBQVcsRUFBRSxFQXpCSDtBQTBCVkMsWUFBQUEsYUFBYSxFQUFFO0FBMUJMLGFBMkJQZCxZQTNCTztBQUZILFVBQVg7QUFnQ0Q7O0FBQ0QsVUFBSWUsV0FBa0IsR0FBRyxFQUF6QjtBQUNBLFVBQU1DLFdBQWdCLEdBQUcsRUFBekI7QUFDQSxVQUFNQyxXQUFnQixHQUFHLEVBQXpCO0FBQ0EsVUFBTUMsWUFBaUIsR0FBRyxFQUExQjtBQUNBLFVBQU0zRCxhQUFrQixHQUFHLEVBQTNCO0FBQ0EyQixNQUFBQSxPQUFPLENBQUN2QyxHQUFSLENBQVksVUFBQ0MsSUFBRCxFQUFlO0FBQUE7O0FBQ3pCLFlBQUl1RSxJQUFJLHFCQUFRdkUsSUFBUixDQUFSOztBQUNBLFlBQUl1RSxJQUFJLENBQUNDLE1BQVQsRUFBaUI7QUFDZkosVUFBQUEsV0FBVyxDQUFDL0MsSUFBWixDQUFpQjtBQUNmdEcsWUFBQUEsSUFBSSxFQUFFd0osSUFBSSxDQUFDRSxLQUFMLElBQWNGLElBQUksQ0FBQ0csU0FEVjtBQUVmdkMsWUFBQUEsS0FBSyxFQUFFb0MsSUFBSSxDQUFDOUcsS0FGRztBQUdmOUIsWUFBQUEsSUFBSSxFQUFFNEksSUFBSSxDQUFDNUksSUFISTtBQUlmaEIsWUFBQUEsS0FBSyxFQUFFNEosSUFBSSxDQUFDNUo7QUFKRyxXQUFqQjtBQU1EOztBQUNELGVBQU80SixJQUFJLENBQUNDLE1BQVo7QUFDQUQsUUFBQUEsSUFBSSxDQUFDSSxNQUFMLEtBQWdCLEtBQWhCLElBQ0VOLFdBQVcsQ0FBQ2hELElBQVosQ0FBaUI7QUFDZnRHLFVBQUFBLElBQUksRUFBRXdKLElBQUksQ0FBQ0UsS0FBTCxJQUFjRixJQUFJLENBQUNHLFNBRFY7QUFFZnZDLFVBQUFBLEtBQUssRUFBRW9DLElBQUksQ0FBQzlHLEtBRkc7QUFHZm1ILFVBQUFBLEtBQUssRUFBRUwsSUFBSSxDQUFDSyxLQUFMLEdBQWFMLElBQUksQ0FBQ0ssS0FBbEIsR0FBMEIsRUFIbEI7QUFJZmpKLFVBQUFBLElBQUksRUFBRTRJLElBQUksQ0FBQzVJLElBSkk7QUFLZmtKLFVBQUFBLElBQUksRUFBRU4sSUFBSSxDQUFDTSxJQUxJO0FBTWZDLFVBQUFBLFFBQVEsRUFBRVAsSUFBSSxDQUFDTyxRQU5BO0FBT2ZuSyxVQUFBQSxLQUFLLEVBQUVMLElBQUksbUJBQU1pSyxJQUFJLENBQUM1SixLQUFYLEdBQW9CLENBQUMsY0FBRCxFQUFpQixPQUFqQixDQUFwQjtBQVBJLFNBQWpCLENBREY7O0FBVUEsWUFDRSxnQkFBQTRKLElBQUksQ0FBQzVKLEtBQUwsNERBQVkySixZQUFaLE1BQTZCUyxTQUE3QixJQUNBLGlCQUFBUixJQUFJLENBQUM1SixLQUFMLDhEQUFZMkosWUFBWixNQUE2QixJQUYvQixFQUdFO0FBQUE7O0FBQ0EsY0FBTXZKLElBQUksR0FBR3dKLElBQUksQ0FBQ0UsS0FBTCxJQUFjRixJQUFJLENBQUNHLFNBQWhDO0FBQ0FKLFVBQUFBLFlBQVksQ0FBQ3ZKLElBQUQsQ0FBWixtQkFBcUJ3SixJQUFJLENBQUM1SixLQUExQixpREFBcUIsYUFBWTJKLFlBQWpDO0FBQ0Q7O0FBQ0QsZUFBT0MsSUFBSSxDQUFDSyxLQUFaO0FBQ0EsZUFBT0wsSUFBSSxDQUFDTSxJQUFaOztBQUNBLFlBQUlOLElBQUksQ0FBQ1MsWUFBVCxFQUF1QjtBQUNyQlQsVUFBQUEsSUFBSSxDQUFDVSxXQUFMLEdBQW1CO0FBQ2pCdEosWUFBQUEsSUFBSSxFQUFFNEksSUFBSSxDQUFDNUksSUFETTtBQUVqQmhCLFlBQUFBLEtBQUssRUFBRTRKLElBQUksQ0FBQzVKO0FBRkssV0FBbkI7QUFJRDs7QUFDRCxlQUFPNEosSUFBSSxDQUFDNUksSUFBWjs7QUFDQSxZQUFJdUosUUFBUSxxQkFBUVgsSUFBSSxDQUFDNUosS0FBYixDQUFaOztBQUNBLFlBQUk0SixJQUFJLENBQUNZLEtBQVQsRUFBZ0I7QUFDZFosVUFBQUEsSUFBSTtBQUNGYSxZQUFBQSxNQUFNLEVBQUUsZ0JBQUNwRCxJQUFELEVBQWU7QUFDckIsa0NBQ0UsMENBQ0dBLElBQUksS0FBSyxFQUFULElBQWVBLElBQUksS0FBSyxJQUF4QixJQUFnQ0EsSUFBSSxLQUFLK0MsU0FBekMsaUJBQ0M7QUFBTSxnQkFBQSxTQUFTLEVBQUU1SyxPQUFPLENBQUNiLE1BQUQsRUFBUyxVQUFUO0FBQXhCLDhCQUNFO0FBQU0sZ0JBQUEsU0FBUyxFQUFFYSxPQUFPLENBQUNiLE1BQUQsRUFBUyxVQUFUO0FBQXhCLGlCQUNHLE1BQUksQ0FBQytMLE9BQUwsQ0FBYUgsUUFBYixFQUF1QmxELElBQXZCLENBREgsQ0FERixDQUZKLENBREY7QUFXRCxhQWJDO0FBY0ZzRCxZQUFBQSxRQUFRLEVBQUU7QUFkUixhQWVDZixJQWZELENBQUo7QUFpQkQsU0FsQkQsTUFrQk87QUFDTEEsVUFBQUEsSUFBSTtBQUNGYSxZQUFBQSxNQUFNLEVBQUUsZ0JBQUNwRCxJQUFELEVBQWU7QUFDckIsa0NBQU8sMENBQUcsTUFBSSxDQUFDcUQsT0FBTCxDQUFhSCxRQUFiLEVBQXVCbEQsSUFBdkIsQ0FBSCxDQUFQO0FBQ0Q7QUFIQyxhQUlDdUMsSUFKRCxDQUFKO0FBTUQ7O0FBQ0QsZUFBT0EsSUFBSSxDQUFDNUosS0FBWjtBQUNBLFlBQUksVUFBQTRKLElBQUksVUFBSixzQ0FBTWdCLFVBQU4sTUFBcUIsS0FBekIsRUFBZ0NwQixXQUFXLENBQUM5QyxJQUFaLENBQWlCa0QsSUFBakI7QUFDakMsT0FsRUQ7QUFtRUEsVUFBTWlCLFdBQWdCLEdBQUcsRUFBekI7O0FBQ0EscUJBQTZCakwsTUFBTSxFQUFuQztBQUFBLFVBQVF5RyxnQkFBUixZQUFRQSxnQkFBUjs7QUFDQSxVQUFJRSxRQUFRLEdBQUcsSUFBZjtBQUNBLFVBQUksQ0FBQUgsV0FBVyxTQUFYLElBQUFBLFdBQVcsV0FBWCxZQUFBQSxXQUFXLENBQUVHLFFBQWIsTUFBMEIsS0FBOUIsRUFBcUNBLFFBQVEsR0FBRyxLQUFYLENBQXJDLEtBQ0ssSUFBSUYsZ0JBQWdCLENBQUNFLFFBQWpCLEtBQThCLEtBQWxDLEVBQXlDQSxRQUFRLEdBQUcsS0FBWDs7QUFDOUMsVUFBSUwsVUFBVSxJQUFJLElBQWxCLEVBQXdCO0FBQ3RCLFlBQUlDLE9BQU8sQ0FBQzJFLE9BQVIsQ0FBZ0IsUUFBaEIsSUFBNEIsQ0FBQyxDQUFqQyxFQUFvQztBQUNsQzlFLFVBQUFBLGFBQWEsQ0FBQ1UsSUFBZCxlQUNFLG9CQUFDLE1BQUQ7QUFDRSxZQUFBLE9BQU8sRUFBRSxpQkFBQ1QsTUFBRCxFQUFpQjtBQUN4QixrQkFBSWdDLFVBQUosRUFBZ0I7QUFDZEEsZ0JBQUFBLFVBQVUsQ0FBQ2hDLE1BQU0sQ0FBQ2tCLFNBQVAsSUFBb0JsQixNQUFyQixFQUE2QixRQUE3QixDQUFWO0FBQ0E7QUFDRDs7QUFDRCxjQUFBLE1BQUksQ0FBQzhFLFFBQUwsQ0FBYzlFLE1BQU0sQ0FBQ2tCLFNBQVAsSUFBb0JsQixNQUFsQyxFQUEwQyxRQUExQztBQUNELGFBUEg7QUFRRSxZQUFBLElBQUksZUFBRSxvQkFBQyxXQUFEO0FBUlIsNEJBREY7QUFjRDs7QUFDRCxZQUFJRSxPQUFPLENBQUMyRSxPQUFSLENBQWdCLFFBQWhCLElBQTRCLENBQUMsQ0FBakMsRUFBb0M7QUFDbEM5RSxVQUFBQSxhQUFhLENBQUNVLElBQWQsZUFDRSxvQkFBQyxNQUFEO0FBQ0UsWUFBQSxPQUFPLEVBQUUsaUJBQUNULE1BQUQsRUFBaUI7QUFDeEIsa0JBQUlnQyxVQUFKLEVBQWdCO0FBQ2RBLGdCQUFBQSxVQUFVLENBQUNoQyxNQUFNLENBQUNrQixTQUFQLElBQW9CbEIsTUFBckIsRUFBNkIsUUFBN0IsQ0FBVjtBQUNBO0FBQ0Q7O0FBQ0QsY0FBQSxNQUFJLENBQUM4RSxRQUFMLENBQWM5RSxNQUFNLENBQUNrQixTQUFQLElBQW9CbEIsTUFBbEMsRUFBMEMsUUFBMUM7QUFDRCxhQVBIO0FBUUUsWUFBQSxJQUFJLGVBQUUsb0JBQUMsWUFBRDtBQVJSLDRCQURGO0FBY0Q7QUFDRjs7QUFDRCxVQUFJRSxPQUFPLENBQUMyRSxPQUFSLENBQWdCLEtBQWhCLElBQXlCLENBQUMsQ0FBOUIsRUFBaUM7QUFDL0JELFFBQUFBLFdBQVcsQ0FBQ25FLElBQVosZUFDRSxvQkFBQyxNQUFEO0FBQ0UsVUFBQSxJQUFJLEVBQUUsU0FEUjtBQUVFLFVBQUEsT0FBTyxFQUFFLG1CQUFNO0FBQ2IsZ0JBQVF1QixVQUFSLEdBQXVCLE1BQUksQ0FBQ2pJLEtBQTVCLENBQVFpSSxVQUFSOztBQUNBLGdCQUFJQSxVQUFKLEVBQWdCO0FBQ2RBLGNBQUFBLFVBQVU7QUFDVjtBQUNEOztBQUNELFlBQUEsTUFBSSxDQUFDOEMsUUFBTDtBQUNELFdBVEg7QUFVRSxVQUFBLElBQUksZUFBRSxvQkFBQyxZQUFEO0FBVlIsMEJBREY7QUFnQkQ7O0FBQ0QsVUFBSTVFLE9BQU8sQ0FBQzJFLE9BQVIsQ0FBZ0IsUUFBaEIsSUFBNEIsQ0FBQyxDQUFqQyxFQUFvQztBQUNsQ0QsUUFBQUEsV0FBVyxDQUFDbkUsSUFBWixlQUNFLG9CQUFDLE1BQUQsQ0FDRTtBQURGO0FBRUUsVUFBQSxPQUFPLEVBQUUsS0FBS2pFLFFBQUwsQ0FBY3VJLElBQWQsQ0FBbUIsSUFBbkIsQ0FGWDtBQUdFLFVBQUEsSUFBSSxlQUFFLG9CQUFDLElBQUQ7QUFBTSxZQUFBLElBQUksRUFBRXhNLFFBQVEsQ0FBQ3lNO0FBQXJCLFlBSFI7QUFJRSxVQUFBLE1BQU07QUFKUiwwQkFERjtBQVVEOztBQUNELFVBQUkzRyxLQUFLLENBQUNDLE9BQU4sQ0FBY1ksUUFBZCxDQUFKLEVBQTZCO0FBQzNCQSxRQUFBQSxRQUFRLENBQUNDLEdBQVQsQ0FBYSxVQUFDQyxJQUFELEVBQWU7QUFBQTs7QUFDMUIsY0FBSSxDQUFBQSxJQUFJLFNBQUosSUFBQUEsSUFBSSxXQUFKLDRCQUFBQSxJQUFJLENBQUVyRixLQUFOLDhEQUFhNEYsUUFBYixLQUF5QixZQUE3QixFQUEyQztBQUN6Q2lGLFlBQUFBLFdBQVcsQ0FBQ25FLElBQVosQ0FBaUJyQixJQUFqQjtBQUNELFdBRkQsTUFFTyxJQUFJLENBQUFBLElBQUksU0FBSixJQUFBQSxJQUFJLFdBQUosNEJBQUFBLElBQUksQ0FBRXJGLEtBQU4sOERBQWE0RixRQUFiLEtBQXlCLGNBQTdCLEVBQTZDO0FBQ2xESSxZQUFBQSxhQUFhLENBQUNVLElBQWQsQ0FBbUJyQixJQUFuQjtBQUNEO0FBQ0YsU0FORDtBQU9ELE9BUkQsTUFRTyxJQUFJRixRQUFKLEVBQWM7QUFDbkIsWUFBUW5GLEtBQVIsR0FBdUJtRixRQUF2QixDQUFRbkYsS0FBUjs7QUFDQSxZQUFJLENBQUFBLEtBQUssU0FBTCxJQUFBQSxLQUFLLFdBQUwsWUFBQUEsS0FBSyxDQUFFNEYsUUFBUCxLQUFtQixZQUF2QixFQUFxQztBQUNuQ2lGLFVBQUFBLFdBQVcsQ0FBQ25FLElBQVosQ0FBaUJ2QixRQUFqQjtBQUNELFNBRkQsTUFFTyxJQUFJLENBQUFuRixLQUFLLFNBQUwsSUFBQUEsS0FBSyxXQUFMLFlBQUFBLEtBQUssQ0FBRTRGLFFBQVAsS0FBbUIsY0FBdkIsRUFBdUM7QUFDNUNJLFVBQUFBLGFBQWEsQ0FBQ1UsSUFBZCxDQUFtQnZCLFFBQW5CO0FBQ0Q7QUFDRjs7QUFDRG1ELE1BQUFBLFlBQVksSUFDVmtCLFdBQVcsQ0FBQzlDLElBQVosQ0FBaUI7QUFDZjVELFFBQUFBLEtBQUssRUFBRSxJQURRO0FBRWZpSCxRQUFBQSxTQUFTLEVBQUUsUUFGSTtBQUdmbUIsUUFBQUEsS0FBSyxFQUFFOUUsV0FBVyxTQUFYLElBQUFBLFdBQVcsV0FBWCxJQUFBQSxXQUFXLENBQUUrRSxTQUFiLEdBQ0gvRSxXQURHLGFBQ0hBLFdBREcsdUJBQ0hBLFdBQVcsQ0FBRStFLFNBRFYsR0FFSDlFLGdCQUFnQixDQUFDOEUsU0FBakIsR0FDQTlFLGdCQUFnQixDQUFDOEUsU0FEakIsR0FFQSxRQVBXO0FBUWZDLFFBQUFBLEtBQUssRUFBRWhGLFdBQVcsU0FBWCxJQUFBQSxXQUFXLFdBQVgsSUFBQUEsV0FBVyxDQUFFZ0YsS0FBYixHQUNIaEYsV0FERyxhQUNIQSxXQURHLHVCQUNIQSxXQUFXLENBQUVnRixLQURWLEdBRUgvRSxnQkFBZ0IsQ0FBQytFLEtBQWpCLEdBQ0EvRSxnQkFBZ0IsQ0FBQytFLEtBRGpCLEdBRUEsR0FaVztBQWFmQyxRQUFBQSxLQUFLLEVBQUUsT0FiUTtBQWNmVixRQUFBQSxRQUFRLEVBQUUsSUFkSztBQWVmRixRQUFBQSxNQUFNLEVBQUUsZ0JBQUNwRCxJQUFELEVBQVlwQixNQUFaLEVBQTRCO0FBQ2xDLDhCQUNFO0FBQUssWUFBQSxTQUFTLEVBQUV6RyxPQUFPLENBQUNiLE1BQUQsRUFBUyxRQUFUO0FBQXZCLGFBQ0csTUFBSSxDQUFDMk0sa0JBQUwsQ0FBd0J0RixhQUF4QixFQUF1Q0MsTUFBdkMsQ0FESCxDQURGO0FBS0Q7QUFyQmMsT0FBakIsQ0FERjtBQXdCQSxVQUFNc0YsV0FBVyxHQUFHbkQsa0JBQWtCLElBQUksT0FBdEIsR0FBZ0MsQ0FBaEMsR0FBb0MsQ0FBeEQ7QUFDQSxVQUFNb0QsVUFBVSxHQUFHL0IsV0FBVyxDQUFDM0ksTUFBWixHQUFxQixDQUF4QztBQUNBLFVBQUkySyxPQUFPLEdBQUcsQ0FBZDs7QUFDQSxVQUFJRCxVQUFVLElBQUksQ0FBbEIsRUFBcUI7QUFDbkJDLFFBQUFBLE9BQU8sR0FBRyxFQUFWO0FBQ0QsT0FGRCxNQUVPLElBQUlELFVBQVUsSUFBSSxDQUFsQixFQUFxQjtBQUMxQkMsUUFBQUEsT0FBTyxHQUFHLEVBQVY7QUFDRCxPQUZNLE1BRUEsSUFBSUQsVUFBVSxJQUFJLENBQWxCLEVBQXFCO0FBQzFCQyxRQUFBQSxPQUFPLEdBQUcsQ0FBVjtBQUNEOztBQUNELFVBQUlqRCxXQUFKLEVBQ0VnQixXQUFXLElBQ1Q7QUFDRTFHLFFBQUFBLEtBQUssRUFBRSxJQURUO0FBRUVzSSxRQUFBQSxLQUFLLEVBQUUsRUFGVDtBQUdFRixRQUFBQSxLQUFLLEVBQUUsUUFIVDtBQUlFVCxRQUFBQSxNQUFNLEVBQUUsZ0JBQUNwRCxJQUFELEVBQU9xRSxPQUFQLEVBQWdCcEcsS0FBaEIsRUFBMEI7QUFDaEMsOEJBQU8sMENBQUdBLEtBQUssR0FBRyxDQUFYLENBQVA7QUFDRDtBQU5ILE9BRFMsNEJBU05rRSxXQVRNLEVBQVg7O0FBWUYsVUFBSXpFLFVBQVUsQ0FBQzRHLFVBQVgsS0FBMEIsS0FBOUIsRUFBcUM7QUFDbkM7QUFDQTtBQUNBLFlBQUlDLFdBQVcsR0FBR0MsUUFBUSxDQUFDQyxJQUFULENBQWNDLFlBQWQsR0FBNkIsR0FBL0MsQ0FIbUMsQ0FHaUI7O0FBQ3BELFlBQUksS0FBSy9MLEtBQUwsQ0FBV2dNLFNBQWYsRUFBMEI7QUFDeEJKLFVBQUFBLFdBQVcsR0FBR0EsV0FBVyxHQUFHLEVBQTVCLENBRHdCLENBQ1E7QUFDakM7O0FBQ0QsWUFBSWpHLFVBQUosRUFBZ0I7QUFDZGlHLFVBQUFBLFdBQVcsR0FBR0EsV0FBVyxHQUFHLEVBQTVCLENBRGMsQ0FDa0I7QUFDakM7O0FBQ0QsWUFBSSxLQUFLNUwsS0FBTCxDQUFXZ0ksY0FBZixFQUErQjtBQUM3QjtBQUNBNEQsVUFBQUEsV0FBVyxHQUFHQSxXQUFXLEdBQUcsRUFBNUI7QUFDRDs7QUFDREEsUUFBQUEsV0FBVyxHQUFHQSxXQUFXLEdBQUcsRUFBZCxHQUFtQixFQUFqQyxDQWRtQyxDQWNFOztBQUNyQzVDLFFBQUFBLFdBQVc7QUFDVGlELFVBQUFBLE1BQU0sRUFBRTtBQUFFQyxZQUFBQSxDQUFDLEVBQUUsYUFBTDtBQUFvQkMsWUFBQUEsQ0FBQyxFQUFFck0sS0FBSyxDQUFDOEwsV0FBRDtBQUE1QjtBQURDLFdBRU41QyxXQUZNLENBQVg7QUFJRDs7QUFDRCwwQkFDRTtBQUFLLFFBQUEsU0FBUyxFQUFFdEssR0FBRyxDQUFDYyxPQUFPLENBQUNiLE1BQUQsRUFBUyxNQUFULENBQVIsRUFBMEJ3SixTQUExQjtBQUFuQixTQUNHLEtBQUtuSSxLQUFMLENBQVdnTSxTQUFYLGlCQUNDO0FBQUssUUFBQSxTQUFTLEVBQUV0TixHQUFHLENBQUNjLE9BQU8sQ0FBQ2IsTUFBRCxFQUFTLFlBQVQsQ0FBUjtBQUFuQixTQUNHLEtBQUtxQixLQUFMLENBQVdnTSxTQURkLENBRkosZUFNRTtBQUNFLFFBQUEsU0FBUyxFQUFFdE4sR0FBRyxDQUFDYyxPQUFPLENBQUNiLE1BQUQsRUFBUyxXQUFULENBQVIsQ0FEaEI7QUFFRSxRQUFBLEtBQUssRUFBRTtBQUFFeU4sVUFBQUEsT0FBTyxFQUFFO0FBQVg7QUFGVCxTQUlHdEUsUUFBUSxpQkFDUDtBQUFLLFFBQUEsU0FBUyxFQUFFdEksT0FBTyxDQUFDYixNQUFELEVBQVMsTUFBVDtBQUF2QixzQkFDRSxvQkFBQyxJQUFEO0FBQ0UsUUFBQSxLQUFLLG9CQUFPaUssU0FBUCxDQURQO0FBRUUsUUFBQSxRQUFRLEVBQUUsS0FGWjtBQUdFLFFBQUEsU0FBUyxFQUFFLEtBSGI7QUFJRSxRQUFBLFVBQVUsRUFBRUMsVUFKZDtBQUtFLFFBQUEsUUFBUSxFQUFFLEtBQUt3RCxVQUFMLENBQWdCckIsSUFBaEIsQ0FBcUIsSUFBckIsQ0FMWjtBQU1FLFFBQUEsWUFBWSxFQUFFLENBQUMsS0FBSzdLLEtBQUwsQ0FBV2tCLGVBQVosQ0FOaEI7QUFPRSxRQUFBLFVBQVUsRUFBRXlIO0FBUGQsU0FRTUMsZUFSTixFQURGLENBTEosZUFrQkU7QUFDRSxRQUFBLFNBQVMsRUFBRXJLLEdBQUcsQ0FBQ2MsT0FBTyxDQUFDYixNQUFELEVBQVMsT0FBVCxDQUFSLHNCQUNYYSxPQUFPLENBQUNiLE1BQUQsRUFBUyxlQUFULENBREksRUFDd0IsQ0FBQ21KLFFBRHpCO0FBRGhCLFNBS0duQyxVQUFVLGlCQUNULG9CQUFDLEdBQUQ7QUFBSyxRQUFBLE1BQU0sRUFBRSxFQUFiO0FBQWlCLFFBQUEsSUFBSTtBQUFyQixzQkFDRTtBQUFLLFFBQUEsU0FBUyxFQUFFbkcsT0FBTyxDQUFDYixNQUFELEVBQVMsUUFBVDtBQUF2QixzQkFDRTtBQUFLLFFBQUEsU0FBUyxFQUFFRCxHQUFHLENBQUNjLE9BQU8sQ0FBQ2IsTUFBRCxFQUFTLE1BQVQsQ0FBUjtBQUFuQixzQkFFRSxvQkFBQyxJQUFEO0FBQ0UsUUFBQSxHQUFHLEVBQUUsS0FBS29ELFNBRFo7QUFFRSxRQUFBLFFBQVEsRUFBRSxFQUZaO0FBR0UsUUFBQSxVQUFVLEVBQUUsRUFIZDtBQUlFLFFBQUEsTUFBTSxFQUFDLFFBSlQ7QUFLRSxRQUFBLEtBQUssRUFBRTtBQUFFcUosVUFBQUEsS0FBSyxFQUFFO0FBQVQ7QUFMVCxTQU9HM0IsV0FBVyxDQUFDckUsR0FBWixDQUFnQixVQUFDQyxJQUFELEVBQVlDLEtBQVosRUFBMkI7QUFBQTs7QUFDMUMsWUFBTWdILFNBQVMsR0FBR2pILElBQUksQ0FBQ3JGLEtBQUwsSUFBYyxFQUFoQzs7QUFDQSxZQUFJc00sU0FBUyxDQUFDQyxXQUFkLEVBQTJCO0FBQ3pCLFVBQUEsTUFBSSxDQUFDbkksVUFBTCxDQUFnQmlCLElBQUksQ0FBQ2pGLElBQXJCLElBQTZCa00sU0FBUyxDQUFDQyxXQUF2QztBQUNEOztBQUNELFlBQUlqSCxLQUFLLEdBQUdpRyxXQUFSLElBQXVCLENBQUMsTUFBSSxDQUFDcEwsS0FBTCxDQUFXbUIsTUFBdkMsRUFBK0M7QUFDN0M7QUFDRDs7QUFDRCxZQUFJa0wsVUFBVSxHQUFHLENBQUFuSCxJQUFJLFNBQUosSUFBQUEsSUFBSSxXQUFKLDRCQUFBQSxJQUFJLENBQUVyRixLQUFOLDhEQUFhd00sVUFBYixLQUEyQixLQUE1Qzs7QUFDQSxZQUFJeE0sS0FBSyxxQkFBUXNNLFNBQVIsQ0FBVDs7QUFDQSxZQUFJLENBQUNqSCxJQUFJLENBQUNyRSxJQUFOLElBQWNxRSxJQUFJLENBQUNyRSxJQUFMLElBQWEsT0FBL0IsRUFBd0M7QUFDdENoQixVQUFBQSxLQUFLLENBQUN3TSxVQUFOLEdBQW1CLElBQW5CO0FBQ0Q7O0FBQ0QsNEJBQ0Usb0JBQUMsR0FBRDtBQUNFLFVBQUEsRUFBRSxFQUFFO0FBQUV0QyxZQUFBQSxJQUFJLEVBQUU7QUFBUixXQUROO0FBRUUsVUFBQSxFQUFFLEVBQUU7QUFBRUEsWUFBQUEsSUFBSSxFQUFFO0FBQVIsV0FGTjtBQUdFLFVBQUEsRUFBRSxFQUFFO0FBQUVBLFlBQUFBLElBQUksRUFBRTtBQUFSLFdBSE47QUFJRSxVQUFBLEdBQUcsRUFBRTVFLEtBSlA7QUFLRSxVQUFBLEtBQUssRUFBRTtBQUFFbUgsWUFBQUEsWUFBWSxFQUFFO0FBQWhCO0FBTFQsd0JBT0Usb0JBQUMsSUFBRCxDQUFNLElBQU47QUFDRSxVQUFBLEtBQUssRUFBRXBILElBQUksQ0FBQ21DLEtBRGQ7QUFFRSxVQUFBLElBQUksRUFBRW5DLElBQUksQ0FBQ2pGLElBRmI7QUFHRSxVQUFBLFVBQVUsRUFBRW9NO0FBSGQsV0FLRy9NLE9BQU8sQ0FBQzRGLElBQUksQ0FBQ3JFLElBQU47QUFDTjBMLFVBQUFBLFdBQVcsOEJBQVFySCxJQUFJLENBQUNtQyxLQUFiO0FBREwsV0FFSHhILEtBRkcsRUFMVixDQVBGLENBREY7QUFvQkQsT0FqQ0EsQ0FQSCxFQXlDRyxLQUFLRyxLQUFMLENBQVdtQixNQUFYLElBQXFCbUssT0FBTyxHQUFHLENBQS9CLGlCQUNDLG9CQUFDLEdBQUQ7QUFDRSxRQUFBLEVBQUUsRUFBRTtBQUFFdkIsVUFBQUEsSUFBSSxFQUFFO0FBQVIsU0FETjtBQUVFLFFBQUEsRUFBRSxFQUFFO0FBQUVBLFVBQUFBLElBQUksRUFBRTtBQUFSLFNBRk47QUFHRSxRQUFBLEVBQUUsRUFBRTtBQUFFQSxVQUFBQSxJQUFJLEVBQUV1QjtBQUFSLFNBSE47QUFJRSxRQUFBLEtBQUssRUFBRTtBQUFFZ0IsVUFBQUEsWUFBWSxFQUFFO0FBQWhCO0FBSlQsUUExQ0osZUFpREUsb0JBQUMsR0FBRDtBQUNFLFFBQUEsRUFBRSxFQUFFO0FBQUV2QyxVQUFBQSxJQUFJLEVBQUU7QUFBUixTQUROO0FBRUUsUUFBQSxFQUFFLEVBQUU7QUFBRUEsVUFBQUEsSUFBSSxFQUFFO0FBQVIsU0FGTjtBQUdFLFFBQUEsRUFBRSxFQUFFO0FBQUVBLFVBQUFBLElBQUksRUFBRTlCLGtCQUFrQixJQUFJLE9BQXRCLEdBQWdDLEVBQWhDLEdBQXFDO0FBQTdDLFNBSE47QUFJRSxRQUFBLEtBQUssRUFBRTtBQUFFcUUsVUFBQUEsWUFBWSxFQUFFO0FBQWhCO0FBSlQsc0JBTUU7QUFDRSxRQUFBLFNBQVMsRUFBRWpOLE9BQU8sQ0FBQ2IsTUFBRCxFQUFTLGdCQUFULENBRHBCO0FBRUUsUUFBQSxLQUFLLEVBQUU7QUFBRWdPLFVBQUFBLFNBQVMsRUFBRTtBQUFiO0FBRlQsc0JBSUUsb0JBQUMsTUFBRDtBQUNFLFFBQUEsSUFBSSxFQUFFLFNBRFI7QUFFRSxRQUFBLE9BQU8sRUFBRSxLQUFLMUksUUFBTCxDQUFjK0csSUFBZCxDQUFtQixJQUFuQixDQUZYO0FBR0UsUUFBQSxJQUFJLGVBQUUsb0JBQUMsY0FBRCxPQUhSO0FBSUUsUUFBQSxLQUFLLEVBQUU7QUFBRWpGLFVBQUFBLFVBQVUsRUFBRTtBQUFkO0FBSlQsd0JBSkYsZUFZRSxvQkFBQyxNQUFELENBQ0U7QUFERjtBQUVFLFFBQUEsT0FBTyxFQUFFLEtBQUs2RyxXQUFMLENBQWlCNUIsSUFBakIsQ0FBc0IsSUFBdEIsQ0FGWDtBQUdFLFFBQUEsSUFBSSxlQUFFLG9CQUFDLGNBQUQ7QUFIUix3QkFaRixFQW1CR2hELGNBQWMsSUFDYkksa0JBQWtCLElBQUksT0FEdkIsSUFFQyxLQUFLeUUsaUJBQUwsQ0FBdUJoQyxXQUF2QixDQXJCSixFQXNCR3BCLFdBQVcsQ0FBQzNJLE1BQVosR0FBcUIsQ0FBckIsaUJBQ0M7QUFDRSxRQUFBLFNBQVMsRUFBRXRCLE9BQU8sQ0FBQ2IsTUFBRCxFQUFTLFNBQVQsQ0FEcEI7QUFFRSxRQUFBLE9BQU8sRUFBRSxtQkFBTTtBQUNiLGNBQVEyQyxNQUFSLEdBQW1CLE1BQUksQ0FBQ25CLEtBQXhCLENBQVFtQixNQUFSOztBQUNBLFVBQUEsTUFBSSxDQUFDd0QsUUFBTCxDQUFjO0FBQ1p4RCxZQUFBQSxNQUFNLEVBQUUsQ0FBQ0E7QUFERyxXQUFkO0FBR0Q7QUFQSCxTQVNHLEtBQUtuQixLQUFMLENBQVdtQixNQUFYLEdBQW9CLElBQXBCLEdBQTJCLElBVDlCLEVBVUcsS0FBS25CLEtBQUwsQ0FBV21CLE1BQVgsZ0JBQ0Msb0JBQUMsVUFBRCxPQURELGdCQUdDLG9CQUFDLFlBQUQsT0FiSixDQXZCSixDQU5GLENBakRGLENBRkYsQ0FERixDQURGLENBTkosRUFrSEcwRyxjQUFjLElBQ2JJLGtCQUFrQixJQUFJLFFBRHZCLElBRUMsS0FBS3lFLGlCQUFMLENBQXVCaEMsV0FBdkIsRUFBb0NwQixXQUFXLENBQUMzSSxNQUFaLElBQXNCLENBQTFELENBcEhKLGVBcUhFO0FBQUssUUFBQSxTQUFTLEVBQUVwQyxHQUFHLENBQUNjLE9BQU8sQ0FBQ2IsTUFBRCxFQUFTLE9BQVQsQ0FBUjtBQUFuQixzQkFDRSxvQkFBQyxLQUFEO0FBQ0UsUUFBQSxHQUFHLEVBQUUsS0FBS21GLFFBRFo7QUFFRSxRQUFBLE9BQU8sRUFBRTBGLFdBRlg7QUFHRSxRQUFBLFVBQVU7QUFDUnNELFVBQUFBLFVBQVUsRUFBRSwyQkFBb0M7QUFBQSxnQkFBakNDLFFBQWlDLFNBQWpDQSxRQUFpQztBQUFBLGdCQUF2QkMsUUFBdUIsU0FBdkJBLFFBQXVCO0FBQUEsZ0JBQWIvRyxNQUFhLFNBQWJBLE1BQWE7QUFDOUMsZ0NBQ0UsMENBQ0c4RyxRQUFRLGdCQUNQLG9CQUFDLFlBQUQ7QUFDRSxjQUFBLE9BQU8sRUFBRSxpQkFBQ0UsQ0FBRDtBQUFBLHVCQUFPRCxRQUFRLENBQUMvRyxNQUFELEVBQVNnSCxDQUFULENBQWY7QUFBQSxlQURYO0FBRUUsY0FBQSxTQUFTLEVBQUV6TixPQUFPLENBQUNiLE1BQUQsRUFBUyxhQUFUO0FBRnBCLGNBRE8sR0FNUHNILE1BQU0sQ0FBQ2YsVUFBUCxpQkFDRSxvQkFBQyxhQUFEO0FBQ0UsY0FBQSxPQUFPLEVBQUUsaUJBQUMrSCxDQUFEO0FBQUEsdUJBQU9ELFFBQVEsQ0FBQy9HLE1BQUQsRUFBU2dILENBQVQsQ0FBZjtBQUFBLGVBRFg7QUFFRSxjQUFBLFNBQVMsRUFBRXpOLE9BQU8sQ0FBQ2IsTUFBRCxFQUFTLGFBQVQ7QUFGcEIsY0FSTixDQURGO0FBaUJEO0FBbkJPLFdBb0JMK0osVUFwQkssQ0FIWjtBQXlCRSxRQUFBLFdBQVcsRUFBRSxJQXpCZjtBQTBCRSxRQUFBLFFBQVEsRUFBRSxJQTFCWixDQTJCRTtBQTNCRjtBQTRCRSxRQUFBLFFBQVEsRUFBRSxrQkFBQ2lELFVBQUQsRUFBZ0I7QUFDeEIsY0FBUWhLLFdBQVIsR0FBd0IsTUFBSSxDQUFDeEIsS0FBN0IsQ0FBUXdCLFdBQVI7O0FBQ0EsY0FBSUEsV0FBVyxLQUFLZ0ssVUFBVSxDQUFDM0osT0FBL0IsRUFBd0M7QUFDdEMsWUFBQSxNQUFJLENBQUM4QyxRQUFMLENBQWM7QUFDWm5ELGNBQUFBLFdBQVcsRUFBRWdLLFVBQVUsQ0FBQzNKO0FBRFosYUFBZDtBQUdEO0FBQ0YsU0FuQ0g7QUFvQ0UsUUFBQSxPQUFPO0FBQ0xrTCxVQUFBQSxXQUFXLEVBQUU7QUFDWEMsWUFBQUEsU0FBUyxFQUFFLHFCQUFNO0FBQ2Ysa0JBQU10TCxNQUFNLEdBQUcsTUFBSSxDQUFDdUwsZUFBTCxFQUFmOztBQUNBLGNBQUEsTUFBSSxDQUFDM00sU0FBTCxDQUFlb0IsTUFBZjtBQUNEO0FBSlU7QUFEUixXQU9Ga0QsVUFBVSxDQUFDc0ksT0FQVDtBQXBDVCxTQTZDTXJFLFdBN0NOLEVBREYsQ0FySEYsQ0FsQkYsRUF5TEc5QyxVQUFVLGlCQUNULG9CQUFDLFVBQUQ7QUFDRSxRQUFBLEdBQUcsRUFBRSxLQUFLL0QsU0FEWjtBQUVFLFFBQUEsUUFBUSxFQUFFLEtBQUttTCxXQUFMLENBQWlCdEMsSUFBakIsQ0FBc0IsSUFBdEIsQ0FGWjtBQUdFLFFBQUEsU0FBUyxFQUFFdEIsV0FIYjtBQUlFLFFBQUEsU0FBUyxFQUFFOUIsU0FKYjtBQUtFLFFBQUEsWUFBWSxFQUFFRyxZQUxoQjtBQU1FLFFBQUEsUUFBUSxFQUFFLEtBQUsvSCxLQUFMLENBQVd1TixRQU52QjtBQU9FLFFBQUEsWUFBWSxFQUFFNUQsWUFQaEI7QUFRRSxRQUFBLFVBQVUsRUFBRSxLQUFLM0osS0FBTCxDQUFXd04sVUFSekI7QUFTRSxRQUFBLFlBQVksRUFBRSxLQUFLeE4sS0FBTCxDQUFXeU4sWUFUM0I7QUFVRSxRQUFBLFFBQVEsRUFBRSxLQUFLek4sS0FBTCxDQUFXdUIsUUFBWCxJQUF1QixNQVZuQztBQVdFLFFBQUEsV0FBVyxFQUFFMkcsZUFYZjtBQVlFLFFBQUEsVUFBVSxvQkFBT0wsU0FBUDtBQVpaLFFBMUxKLENBTkYsQ0FERjtBQW1ORDs7OztFQXY2Qm9COUosYTs7QUF5NkJ2QixlQUFlZ0MsUUFBZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50LCBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IFRhYmxlIGZyb20gXCIuLi8uLi9iYXNlL3RhYmxlXCI7XHJcbmltcG9ydCBUcmVlIGZyb20gXCIuLi8uLi9iYXNlL3RyZWVcIjtcclxuaW1wb3J0IEZvcm0gZnJvbSBcIi4uLy4uL2Jhc2UvZm9ybVwiO1xyXG5pbXBvcnQgQnV0dG9uIGZyb20gXCIuLi8uLi9iYXNlL2J1dHRvblwiO1xyXG5pbXBvcnQgTW9kYWwgZnJvbSBcIi4uLy4uL2Jhc2UvbW9kYWxcIjtcclxuaW1wb3J0IFBvcG92ZXIgZnJvbSBcIi4uLy4uL2Jhc2UvcG9wb3ZlclwiO1xyXG5pbXBvcnQgbWVzc2FnZSBmcm9tIFwiLi4vLi4vYmFzZS9tZXNzYWdlXCI7XHJcbmltcG9ydCBJY29uIGZyb20gXCIuLi8uLi9iYXNlL2NvbW1vbi9JY29uRm9udFwiO1xyXG5pbXBvcnQgeyBpY29uVHlwZSB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcclxuaW1wb3J0IEVkaXRvckZvcm0gZnJvbSBcIi4vRm9ybVwiO1xyXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XHJcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vaW5kZXgubW9kdWxlLmxlc3NcIjtcclxuaW1wb3J0IFN0b3JlLCB7IFBhZ2VTdG9yZSwgU3RvcmVQcm9wcyB9IGZyb20gXCJAYmotbnNjL21zblwiO1xyXG5pbXBvcnQgQ29sIGZyb20gXCIuLi8uLi9iYXNlL2dyaWQvQ29sXCI7XHJcbmltcG9ydCBSb3cgZnJvbSBcIi4uLy4uL2Jhc2UvZ3JpZC9Sb3dcIjtcclxuaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50XCI7XHJcbmltcG9ydCB7IGlzRW1wdHlPYmogfSBmcm9tIFwiQGJqLW5zYy9mdW5jdGlvbnNcIjtcclxuaW1wb3J0IHtcclxuICBEb3duT3V0bGluZWQsXHJcbiAgVXBPdXRsaW5lZCxcclxuICBFeWVPdXRsaW5lZCxcclxuICBFZGl0T3V0bGluZWQsXHJcbiAgUmlnaHRPdXRsaW5lZCxcclxuICBQbHVzT3V0bGluZWQsXHJcbiAgUmVsb2FkT3V0bGluZWQsXHJcbiAgU2VhcmNoT3V0bGluZWQsXHJcbn0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmltcG9ydCB7IGdldExlc3MsIGdldE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IHJlcXVlc3QgZnJvbSBcIm5zYy1yZXF1ZXN0XCI7XHJcbmltcG9ydCBvbWl0IGZyb20gXCJvbWl0LmpzXCI7XHJcbmltcG9ydCBjb25maWcgZnJvbSBcIi4uLy4uL2NvbmZpZ1wiO1xyXG5pbXBvcnQgeyBnZXRTdG9yYWdlIH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCB7IElGb3JtUHJvcHMgfSBmcm9tIFwiLi4vLi4vYmFzZS9mb3JtL0Zvcm1cIjtcclxuaW1wb3J0IHsgdXNlRm9ybSB9IGZyb20gXCJhbnRkL2VzL2Zvcm0vRm9ybVwiO1xyXG5pbXBvcnQgeyBweDJ2dyB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbnRlcmZhY2UgVGFibGVQcm9wcyB7XHJcbiAgYWN0aW9uQ29sdW1uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmk43kvZzliJdcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgZmlsdGVyQ29sdW1uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrov4fmu6TmjInpkq5cclxuICBzaG93Um93U2VsZWN0aW9uPzogYm9vbGVhbjsgLy/mmK/lkKbooajmoLzli77pgInliJdcclxuICBwYWdpbmF0aW9uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrliIbpobVcclxuICBjb2x1bW5PcmRlcj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S66KGo5qC85bqP5YiXXHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmludGVyZmFjZSBUcmVlUHJvcHMge1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBzaG93U2VhcmNoPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmkJzntKLmoYZcclxuICBzZWFyY2hLZXk/OiBzdHJpbmc7IC8v5pCc57SidmFsdWXlr7nlupTnmoRrZXlcclxuICBzZWFyY2hGaWVsZD86IHN0cmluZzsgLy/mn6Xor6Llr7nlupTnmoRrZXlcclxuICB0aXRsZUFsaWFzPzogc3RyaW5nOyAvL+agkXRpdGxl5a+55bqU55qEa2V5LOm7mOiupHRpdGxlXHJcbiAgbm9kZVBvcnBzPzogb2JqZWN0O1xyXG4gIFtwcm9wc05hbWU6IHN0cmluZ106IGFueTtcclxufVxyXG5pbnRlcmZhY2UgRm9ybVByb3BzIGV4dGVuZHMgSUZvcm1Qcm9wcyB7fVxyXG5pbnRlcmZhY2UgTlNDQmFzZUJhZ2VQcm9wcyB7XHJcbiAgc2hvd1NlYXJjaD86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65aS06YOo5pCc57Si5qCPXHJcbiAgdGFibGVQcm9wcz86IFRhYmxlUHJvcHM7IC8v6KGo5qC85Y+C5pWwXHJcbiAgdHJlZVByb3BzPzogVHJlZVByb3BzOyAvL+W3puS+p+agkeWPguaVsFxyXG4gIHN1Ym1pdFBhcmFtcz86IE9iamVjdDsgLy/mt7vliqDlj4LmlbDvvIzpu5jorqRtb3Rob2Q6cG9zdO+8jCDlj4LmlbDpgJrov4dkYXRh5Lyg6YCSXHJcbiAgc3VibWl0VXJsPzogc3RyaW5nO1xyXG4gIG9uU3VibWl0PzogKHZhbHVlPzogYW55LCBsYWJlbD86IGFueSkgPT4gdm9pZDtcclxuICBjb2x1bW5zOiBBcnJheTxPYmplY3Q+O1xyXG4gIHNob3dMZWZ0PzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrlt6bkvqfnm67lvZXmoJFcclxuICBzaG93VG9vbEJ1dHRvbj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65oyJ6ZKu5qCPXHJcbiAgZWRpdG9yRm9ybT86IGJvb2xlYW47IC8v5piv5ZCm6ZyA6KaB6KGo5Y2V5Yqf6IO9ICwg5Li6ZmFsc2Ug57yW6L6R77yM5p+l55yL77yM5paw5aKe5Yqf6IO95Z2H5LiN5Y+v55SoXHJcbiAgZGVsZXRlVXJsPzogc3RyaW5nOyAvL+WIoOmZpHVybFxyXG4gIG9uRGVsZXRlPzogKHNlbGVjdGVkS2V5cz86IEFycmF5PGFueT4pID0+IHZvaWQ7IC8v5Yig6Zmk5Y+C5pWw77yM6buY6K6kbW90aG9kOnBvc3TvvIwg5Y+C5pWw6YCa6L+HaWRz5ou85o6l5Lyg6YCS57uZ5ZCO5Y+wXHJcbiAgZGVsZXRlUGFyYW1zPzogT2JqZWN0O1xyXG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xyXG4gIG9uU2VhcmNoPzogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xyXG4gIGluaXREYXRhPzogYW55OyAvL+WIneWni+WMluWbnuiwg+WHveaVsO+8jOWcqGNvbXBvbmVudERpZE1vdW505Lit6LCD55SoXHJcbiAgYnV0dG9ucz86IEFycmF5PHN0cmluZz47IC8v5oyJ6ZKu6ZuG5ZCIICBbJ2FkZCcsJ2RlbGV0ZScsJ3NlYXJjaCcsJ2VkaXRvciddXHJcbiAgb25TaG93Rm9ybT86ICh2YWx1ZT86IGFueSwgZWRpdG9yRmxhZz86IHN0cmluZykgPT4gdm9pZDsgLy/miZPlvIDooajljZXlm57osINcclxuICBvbkhpZGVGb3JtPzogKCkgPT4gdm9pZDsgLy/miZPlvIDooajljZXlm57osINcclxuICBvbkZvcm1DaGFuZ2U/OiAoY2hhbmdlZFZhbHVlcz86IGFueSwgYWxsVmFsdWVzPzogYW55KSA9PiB2b2lkOyAvL+ihqOWNlW9uQ2hhbmdl5Zue6LCDXHJcbiAgZm9ybVR5cGU/OiBcIm1vZGFsXCIgfCBcImRyYXdlclwiO1xyXG4gIGZvcm1DaGFuZ2VWYWxpZD86IGJvb2xlYW47IC8v6KGo5Y2V5qCh6aqMXHJcbiAgY2xhc3NOYW1lPzogYW55O1xyXG4gIHRvb2xCdXR0b25Qb3NpdGlvbj86IFwicmlnaHRcIiB8IFwiYnV0dG9tXCI7XHJcbiAgcGFnZVRpdGxlPzogc3RyaW5nIHwgUmVhY3ROb2RlO1xyXG4gIGZvcm1Qcm9wcz86IEZvcm1Qcm9wcztcclxuICBhY3Rpb25Qb3Jwcz86IHsgdGV4dEFsaWduPzogc3RyaW5nOyBzaG93SWNvbj86IGJvb2xlYW47IHdpZHRoPzogbnVtYmVyIH07XHJcbn1cclxuXHJcbmNsYXNzIEJhc2VQYWdlIGV4dGVuZHMgUHVyZUNvbXBvbmVudDxOU0NCYXNlQmFnZVByb3BzLCBhbnk+IHtcclxuICB0YWJsZVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgdHJlZVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgc2VhcmNoUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBlZGl0b3JSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIGRhdGVGb3JtYXQgPSB7fSBhcyBhbnk7XHJcbiAgY29uc3RydWN0b3IocHJvcHM6IGFueSkge1xyXG4gICAgc3VwZXIocHJvcHMpO1xyXG4gICAgbGV0IHsgc3RvcmVQcmVmaXggfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHR5cGUgPSBnZXRTdG9yYWdlKFxyXG4gICAgICBzdG9yZVByZWZpeCA/IHN0b3JlUHJlZml4ICsgXCItXCIgKyBcImZvcm1UeXBlXCIgOiBcImZvcm1UeXBlXCJcclxuICAgICk7XHJcbiAgICB0eXBlID0gdHlwZT8uY29udGVudDtcclxuICAgIGxldCBzaXplID0gZ2V0U3RvcmFnZShcclxuICAgICAgc3RvcmVQcmVmaXggPyBzdG9yZVByZWZpeCArIFwiLVwiICsgXCJ0YWJsZVNpemVcIiA6IFwidGFibGVTaXplXCJcclxuICAgICk7XHJcbiAgICBzaXplID0gc2l6ZT8uY29udGVudDtcclxuICAgIHRoaXMuc3RhdGUgPSB7XHJcbiAgICAgIHR5cGU6IFwiYWRkXCIsXHJcbiAgICAgIHNlbGVjdGVkUm93S2V5czogW10sXHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXM6IFtdLFxyXG4gICAgICB0cmVlU2VsZWN0ZWRLZXk6IFwiXCIsXHJcbiAgICAgIGV4cGFuZDogZmFsc2UsXHJcbiAgICAgIGZvcm1UeXBlOiB0eXBlIHx8IFwibW9kYWxcIixcclxuICAgICAgdGFibGVTaXplOiBzaXplIHx8IFwiZGVmYXVsdFwiLFxyXG4gICAgICBzZWxlY3RlZFJvd0tleXNTdG9yZToge30sXHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXNTdG9yZToge30sXHJcbiAgICAgIGN1cnJlbnRQYWdlOiAxLFxyXG4gICAgfTtcclxuICB9XHJcbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XHJcbiAgICBjb25zdCB7IGluaXREYXRhIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaW5pdERhdGEgJiYgaW5pdERhdGEoKTtcclxuICB9XHJcblxyXG4gIHNldFNlYXJjaFBhcmFtcyhwYXJhbXMsIGNhbGxCYWNrKSB7XHJcbiAgICB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5zZXRGaWVsZHNWYWx1ZShwYXJhbXMpO1xyXG4gICAgY2FsbEJhY2sgJiYgY2FsbEJhY2socGFyYW1zKTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0ID0gKGNoZWNrZWRUcmVlS2V5czogYW55KSA9PiB7XHJcbiAgICBjb25zdCB7IG5hbWUsIHVzZXJUeXBlLCBhY2NvdW50IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgdmFsdWUgPSB7IG5hbWUsIHVzZXJUeXBlLCBhY2NvdW50LCBkZXB0SWQ6IGNoZWNrZWRUcmVlS2V5c1swXSB9O1xyXG4gICAgdGhpcy50YWJsZUxvYWQodmFsdWUpO1xyXG4gIH07XHJcblxyXG4gIC8v5pi+56S66KGo5Y2VXHJcbiAgc2hvd0Zvcm0odmFsdWU/OiBhbnksIGVkaXRvcmZsYWcgPSBcImFkZFwiKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5zaG93KHZhbHVlLCBlZGl0b3JmbGFnKTtcclxuICB9XHJcblxyXG4gIC8v5YWz6Zet6KGo5Y2VXHJcbiAgaGlkZUZvcm0oKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5oaWRlRm9ybSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0TG9hZGluZyhsb2FkaW5nOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5zZXRMb2FkaW5nKGxvYWRpbmcpO1xyXG4gIH1cclxuXHJcbiAgLy/mibnph4/liKDpmaRcclxuICBvbkRlbGV0ZSgpIHtcclxuICAgIGNvbnN0IHsgZGVsZXRlVXJsLCBvbkRlbGV0ZSwgZGVsZXRlUGFyYW1zIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBzZWxlY3RlZFJvd0tleXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBpZiAoc2VsZWN0ZWRSb3dLZXlzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIG1lc3NhZ2Uud2FybmluZyhcIuivt+mAieaLqeimgeWIoOmZpOeahOaVsOaNru+8gVwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKG9uRGVsZXRlKSB7XHJcbiAgICAgIG9uRGVsZXRlICYmIG9uRGVsZXRlKHNlbGVjdGVkUm93S2V5cyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICghZGVsZXRlVXJsKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcInVybOS4jeiDveS4uuepuu+8gVwiKTtcclxuICAgIH1cclxuICAgIE1vZGFsLmNvbmZpcm0oe1xyXG4gICAgICB0aXRsZTogXCLmmK/lkKbnoa7orqTliKDpmaTmiYDpgInpobnvvJ9cIixcclxuICAgICAgb2tUZXh0OiBcIuehruiupFwiLFxyXG4gICAgICBjYW5jZWxUZXh0OiBcIuWPlua2iFwiLFxyXG4gICAgICBvbk9rOiAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZGVmYXVsdFBhcmFtcyA9IHtcclxuICAgICAgICAgIG1ldGhvZDogXCJwb3N0XCIsXHJcbiAgICAgICAgICBwYXJhbXM6IHsgaWRzOiBzZWxlY3RlZFJvd0tleXMuam9pbigpIH0sXHJcbiAgICAgICAgfTtcclxuICAgICAgICBsZXQgcmVxdWVzdFBhcmFtcyA9IHt9IGFzIGFueTtcclxuICAgICAgICBpZiAoZGVmYXVsdFBhcmFtcykge1xyXG4gICAgICAgICAgcmVxdWVzdFBhcmFtcyA9IHsgLi4uZGVsZXRlUGFyYW1zIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlcXVlc3RQYXJhbXMgPSB7IC4uLmRlZmF1bHRQYXJhbXMgfTtcclxuICAgICAgICByZXF1ZXN0KGRlbGV0ZVVybCwge1xyXG4gICAgICAgICAgLi4ucmVxdWVzdFBhcmFtcyxcclxuICAgICAgICB9KVxyXG4gICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgY29kZSB9ID0gcmVzO1xyXG4gICAgICAgICAgICBpZiAoY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgbWVzc2FnZS5zdWNjZXNzKFwi5Yig6Zmk5oiQ5Yqf77yBXCIpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIG1lc3NhZ2UuZXJyb3IoXCLliKDpmaTlpLHotKXvvIFcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yOiBhbnkpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlcnJvcik7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICB0YWJsZUxvYWQocGFyYW1zOiBhbnkpIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmUubG9hZCh7XHJcbiAgICAgIHBhcmFtczogcGFyYW1zLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8v5p+l6K+iXHJcbiAgb25TZWFyY2goKSB7XHJcbiAgICBjb25zdCB7IG9uU2VhcmNoIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgZnJvbVZhbHVlID0gdGhpcy5zZWFyY2hSZWYuY3VycmVudD8uZ2V0RmllbGRzVmFsdWUoKTtcclxuICAgIGlmIChvblNlYXJjaCkge1xyXG4gICAgICBvblNlYXJjaChmcm9tVmFsdWUpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoIWlzRW1wdHlPYmoodGhpcy5kYXRlRm9ybWF0KSkge1xyXG4gICAgICBmb3IgKGxldCBrZXkgaW4gdGhpcy5kYXRlRm9ybWF0KSB7XHJcbiAgICAgICAgbGV0IG9sZGRhdGEgPSBmcm9tVmFsdWVba2V5XTtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvbGRkYXRhKSkge1xyXG4gICAgICAgICAgZnJvbVZhbHVlW2tleV0gPSBbXHJcbiAgICAgICAgICAgIG1vbWVudChvbGRkYXRhWzBdKS5mb3JtYXQodGhpcy5kYXRlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICBtb21lbnQob2xkZGF0YVsxXSkuZm9ybWF0KHRoaXMuZGF0ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgIF07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGZyb21WYWx1ZVtrZXldID0gbW9tZW50KG9sZGRhdGEpLmZvcm1hdCh0aGlzLmRhdGVGb3JtYXRba2V5XSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnRhYmxlTG9hZChmcm9tVmFsdWUpO1xyXG4gIH1cclxuICAvL+ihqOagvOmHjeaWsOWKoOi9vVxyXG4gIHRhYmxlUmVsb2FkKHBhcmFtcyA9IHt9LCBhdXRvTG9hZCA9IHRydWUpIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmUucmVsb2FkKHtcclxuICAgICAgY2FsbGJhY2s6IChyZXMpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBhdXRvTG9hZCAmJlxyXG4gICAgICAgICAgcmVzPy5kYXRhPy5yZWNvcmRzPy5sZW5ndGggPT0gMCAmJlxyXG4gICAgICAgICAgdGhpcy5zdGF0ZS5jdXJyZW50UGFnZSAhPT0gMVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZS5yZWxvYWQoe1xyXG4gICAgICAgICAgICBwYXJhbXM6IHsgY3VycmVudDogMSwgLi4ucGFyYW1zIH0sXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuc2VsZWN0ZWRSb3dLZXlzO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0RhdGFzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuc2VsZWN0ZWRSb3dEYXRhcztcclxuICB9XHJcbiAgcmVzZXRTZWxlY3RlZFJvd0tleXMoKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbXSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogW10sXHJcbiAgICAgIHNlbGVjdGVkUm93S2V5c1N0b3JlOiB7fSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhc1N0b3JlOiB7fSxcclxuICAgICAgY3VycmVudFBhZ2U6IDEsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgc2V0U2VsZWN0ZWRSb3dLZXlzKGRhdGEpIHtcclxuICAgIGNvbnN0IHsgY3VycmVudFBhZ2UgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBkYXRhLFxyXG4gICAgICBzZWxlY3RlZFJvd0tleXNTdG9yZTogeyBbY3VycmVudFBhZ2VdOiBkYXRhIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgc2V0U2VsZWN0ZWRSb3dEYXRhcyhkYXRhKSB7XHJcbiAgICBjb25zdCB7IGN1cnJlbnRQYWdlIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXM6IGRhdGEsXHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXNTdG9yZTogeyBbY3VycmVudFBhZ2VdOiBkYXRhIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgZ2V0U2VhcmNoVmFsdWVzKCkge1xyXG4gICAgY29uc3QgZnJvbVZhbHVlID0gdGhpcy5zZWFyY2hSZWYuY3VycmVudD8uZ2V0RmllbGRzVmFsdWUoKTtcclxuICAgIHJldHVybiBmcm9tVmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXRDaGlsZHJlbkRhdGEoZGF0YSwga2V5cyA9IFtdKSB7XHJcbiAgICBjb25zdCB7IHRhYmxlUHJvcHMgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHJvd0tleSA9IFwiaWRcIiB9ID0gdGFibGVQcm9wcztcclxuICAgIGxldCByZXNLZXkgPSBbXTtcclxuICAgIGlmIChkYXRhLmNoaWxkTm9kZXMpIHtcclxuICAgICAgY29uc3QgY2hpbGRyZW4gPSBkYXRhLmNoaWxkTm9kZXM7XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICBpZiAoaXRlbS5jaGlsZE5vZGVzKSB7XHJcbiAgICAgICAgICB0aGlzLmdldENoaWxkcmVuRGF0YShpdGVtLmNoaWxkTm9kZXMsIGtleXMpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXNLZXkgPSBbLi4ua2V5cywgaXRlbVtyb3dLZXldXTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmVzS2V5ID0gWy4uLmtleXMsIGRhdGFbcm93S2V5XV07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzS2V5O1xyXG4gIH1cclxuXHJcbiAgcmVuZGVyVG9vbEJ1dHRvbnModG9vbGJ1dHRvbnM6IGFueSwgbWFyZ2luZmxhZyA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCBmbGFnID0gdG9vbGJ1dHRvbnMubGVuZ3RoID4gNTtcclxuICAgIGNvbnN0IHsgc2hvd1NlYXJjaCA9IHRydWUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBjb250ZW50ID0gdG9vbGJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIGljb24sIHNob3csIC4uLnBhcmFtcyB9ID0gaXRlbS5wcm9wcztcclxuICAgICAgaWYgKGluZGV4ID4gNCkge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcImVkaXRvclwiKSxcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50LWl0ZW1cIilcclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljaygpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImljb25cIil9PntpY29ufTwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJ0ZXh0XCIpfT57Y2hpbGRyZW59PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwidG9vbC1idXR0b25zXCIpLCB7XHJcbiAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwidG9vbC1idXR0b25zLW1hcmdpblwiKV06ICFzaG93U2VhcmNoIHx8IG1hcmdpbmZsYWcsXHJcbiAgICAgICAgfSl9XHJcbiAgICAgICAgc3R5bGU9e3sgbWFyZ2luTGVmdDogMCB9fVxyXG4gICAgICA+XHJcbiAgICAgICAge3Rvb2xidXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZmxhZykge1xyXG4gICAgICAgICAgICBpZiAoaW5kZXggPCA0KSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIDxkaXYga2V5PXtpbmRleH0+e2l0ZW19PC9kaXY+O1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID09IDQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPFBvcG92ZXJcclxuICAgICAgICAgICAgICAgICAgY29udGVudD17Y29udGVudH1cclxuICAgICAgICAgICAgICAgICAgdGl0bGU9e251bGx9XHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgICAgIHRyaWdnZXI9e1tcImNsaWNrXCJdfVxyXG4gICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgICAvLyBvdmVybGF5Q2xhc3NOYW1lPXtzdHlsZXNbJ3BvcC1ib3gnXX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPEJ1dHRvbiB0eXBlPVwicHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIOabtOWkmiA8RG93bk91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9Qb3BvdmVyPlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiA8ZGl2IGtleT17aW5kZXh9PntpdGVtfTwvZGl2PjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KX1cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxuICByZW5kZXJDbG91bW5CdXR0b24oY29sdW1uQnV0dG9uczogYW55LCByZWNvcmQ6IGFueSkge1xyXG4gICAgY29uc3QgeyBlZGl0b3JGb3JtID0gdHJ1ZSwgYnV0dG9ucyA9IFtdLCBhY3Rpb25Qb3JwcyB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgYmFzZUFjdGlvbkNvbHVtbiB9ID0gY29uZmlnKCk7XHJcbiAgICBjb25zdCBuZXdCdXR0b25zID0gW107XHJcbiAgICBsZXQgc2hvd0ljb24gPSB0cnVlO1xyXG4gICAgaWYgKGFjdGlvblBvcnBzPy5zaG93SWNvbiA9PT0gZmFsc2UpIHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBlbHNlIGlmIChiYXNlQWN0aW9uQ29sdW1uLnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGNvbHVtbkJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIGljb24sIHJlY29yZFNob3csIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAocmVjb3JkU2hvdykge1xyXG4gICAgICAgIGlmIChldmFsKHJlY29yZFNob3cpKSB7XHJcbiAgICAgICAgICBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBjb25zdCBmbGFnID0gbmV3QnV0dG9ucy5sZW5ndGggPiAzO1xyXG5cclxuICAgIGNvbnN0IGNvbnRlbnQgPSBuZXdCdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCByZWNvcmRTaG93LCBpY29uLCBzaG93LCAuLi5wYXJhbXMgfSA9XHJcbiAgICAgICAgaXRlbS5wcm9wcztcclxuICAgICAgaWYgKGluZGV4ID4gMSkge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcImVkaXRvclwiKSxcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50LWl0ZW1cIilcclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyZWNvcmQpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd0ljb24gIT09IGZhbHNlICYmIChcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImljb25cIil9PntpY29ufTwvc3Bhbj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJ0ZXh0XCIpfT57Y2hpbGRyZW59PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIG5ld0J1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIHJlY29yZFNob3csIGljb24sIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoZmxhZykge1xyXG4gICAgICAgIGlmIChpbmRleCA8IDIpIHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJlZGl0b3JcIiksIHtcclxuICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJlZGl0b3JfZmlyc3RcIildOiBpbmRleCA9PT0gMCxcclxuICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyZWNvcmQpO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJpY29uXCIpfT57aWNvbn08L3NwYW4+XHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInRleHRcIil9PntjaGlsZHJlbn08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID09IDIpIHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxQb3BvdmVyXHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICB0aXRsZT17bnVsbH1cclxuICAgICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICAgIHRyaWdnZXI9e1tcImNsaWNrXCJdfVxyXG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgLy8gb3ZlcmxheUNsYXNzTmFtZT17c3R5bGVzWydwb3AnXX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJlZGl0b3JcIil9PlxyXG4gICAgICAgICAgICAgICAgJm5ic3A7IOabtOWkmlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJpY29uXCIpfT5cclxuICAgICAgICAgICAgICAgICAgPERvd25PdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwiZWRpdG9yXCIpLCB7XHJcbiAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcImVkaXRvcl9maXJzdFwiKV06IGluZGV4ID09PSAwLFxyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyZWNvcmQpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd0ljb24gIT09IGZhbHNlICYmIChcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImljb25cIil9PntpY29ufTwvc3Bhbj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJ0ZXh0XCIpfT57Y2hpbGRyZW59PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG4gIC8v5qCR54K55Ye75LqL5Lu2XHJcbiAgdHJlZVNlbGVjdChzZWxlY3RlZEtleXM6IGFueSwgeyBzZWxlY3RlZCwgc2VsZWN0ZWROb2RlcyB9OiBhbnkpIHtcclxuICAgIGxldCBrZXl3b3JkID0gXCJcIjtcclxuICAgIGNvbnN0IHsgc2VhcmNoS2V5ID0gXCJrZXlcIiwgc2VhcmNoRmllbGQgPSBcIlwiIH0gPSB0aGlzLnByb3BzLnRyZWVQcm9wcztcclxuICAgIGNvbnN0IHsgdHJlZVNlbGVjdGVkS2V5IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgaWYgKHNlbGVjdGVkKSB7XHJcbiAgICAgIGlmIChzZWxlY3RlZE5vZGVzWzBdLmlzTGVhZiB8fCAhc2VsZWN0ZWROb2Rlc1swXS5jaGlsZHJlbikge1xyXG4gICAgICAgIGlmIChzZWxlY3RlZEtleXNbMF0gIT09IHRyZWVTZWxlY3RlZEtleSkge1xyXG4gICAgICAgICAga2V5d29yZCA9IHNlbGVjdGVkTm9kZXNbMF0uZGF0YXJlZi5hdHRyaWJ1dGVbc2VhcmNoS2V5XTtcclxuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IHNlbGVjdGVkS2V5c1swXSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgdHJlZVNlbGVjdGVkS2V5OiBrZXl3b3JkLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGNvbnN0IGZyb21WYWx1ZSA9IHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LmdldEZpZWxkc1ZhbHVlKCk7XHJcbiAgICBzZWFyY2hGaWVsZCAmJiB0aGlzLnRhYmxlTG9hZCh7IC4uLmZyb21WYWx1ZSwgW3NlYXJjaEZpZWxkXToga2V5d29yZCB9KTtcclxuICB9XHJcbiAgcmVzZXRTZWFyY2goKSB7XHJcbiAgICB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5yZXNldEZpZWxkcygpO1xyXG4gIH1cclxuICBnZXRUZXh0KHByb3BzLCB0ZXh0KSB7XHJcbiAgICBsZXQgbmV3VGV4dCA9IHRleHQ7XHJcbiAgICBpZiAocHJvcHM/LmRhdGEgJiYgcHJvcHM/LmRhdGE/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IGRhdGEgPSBwcm9wcy5kYXRhO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGE/Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGRhdGFbaV0udmFsdWUgPT0gdGV4dCkge1xyXG4gICAgICAgICAgbmV3VGV4dCA9IGRhdGFbaV0ubGFiZWw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3VGV4dDtcclxuICB9XHJcbiAgc2V0VGFibGVEYXRhKGRhdGEpIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmUuc2V0RGF0YShkYXRhKTtcclxuICB9XHJcbiAgc2V0VHJlZURhdGEoZGF0YSkge1xyXG4gICAgdGhpcy50cmVlUmVmLmN1cnJlbnQ/LnN0b3JlLnNldERhdGEoZGF0YSk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkS2V5ID0gKHNlbGVjdGVkKSA9PiB7XHJcbiAgICBsZXQgcmVzID0gW107XHJcbiAgICBmb3IgKGxldCBrZXkgaW4gc2VsZWN0ZWQpIHtcclxuICAgICAgY29uc3Qga2V5cyA9IHNlbGVjdGVkW2tleV07XHJcbiAgICAgIGlmIChrZXlzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICByZXMgPSBbLi4ucmVzLCAuLi5rZXlzXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcztcclxuICB9O1xyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IHsgc2VsZWN0ZWRSb3dLZXlzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBjb2x1bW5zID0gW10sXHJcbiAgICAgIHNob3dTZWFyY2ggPSB0cnVlLFxyXG4gICAgICBjaGlsZHJlbixcclxuICAgICAgc3VibWl0VXJsID0gXCJcIixcclxuICAgICAgdGFibGVQcm9wcyA9IHt9LFxyXG4gICAgICB0cmVlUHJvcHMgPSB7fSxcclxuICAgICAgZm9ybVByb3BzID0ge30sXHJcbiAgICAgIHNob3dMZWZ0ID0gZmFsc2UsXHJcbiAgICAgIHN1Ym1pdFBhcmFtcyA9IHt9LFxyXG4gICAgICBzaG93VG9vbEJ1dHRvbiA9IHRydWUsXHJcbiAgICAgIGJ1dHRvbnMgPSBbXSxcclxuICAgICAgZWRpdG9yRm9ybSA9IHRydWUsXHJcbiAgICAgIG9uU2hvd0Zvcm0sXHJcbiAgICAgIGZvcm1DaGFuZ2VWYWxpZCA9IHRydWUsXHJcbiAgICAgIGNsYXNzTmFtZSxcclxuICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uID0gXCJidXR0b21cIixcclxuICAgICAgYWN0aW9uUG9ycHMsXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHtcclxuICAgICAgc3RvcmUgPSB7fSxcclxuICAgICAgZmlsdGVyQ29sdW1uID0gdHJ1ZSxcclxuICAgICAgYWN0aW9uQ29sdW1uID0gdHJ1ZSxcclxuICAgICAgc2hvd1Jvd1NlbGVjdGlvbiA9IHRydWUsXHJcbiAgICAgIGNvbHVtbk9yZGVyID0gdHJ1ZSxcclxuICAgICAgcm93U2VsZWN0aW9uID0ge30sXHJcbiAgICAgIGV4cGFuZGFibGUgPSB7fSxcclxuICAgICAgLi4ub3RoZXJ0YWJsZVBhcmFtc1xyXG4gICAgfSA9IHRhYmxlUHJvcHM7XHJcblxyXG4gICAgY29uc3Qge1xyXG4gICAgICBzdG9yZTogdHJlZVN0b3JlID0ge30sXHJcbiAgICAgIHNob3dTZWFyY2g6IHRyZWVTZWFyY2ggPSB0cnVlLFxyXG4gICAgICB0aXRsZUFsaWFzID0gXCJ0aXRsZVwiLFxyXG4gICAgICAuLi5vdGhlcnRyZWVQYXJhbXNcclxuICAgIH0gPSB0cmVlUHJvcHM7XHJcblxyXG4gICAgbGV0IHRhYmxlUGFyYW1zID0geyBmaWx0ZXJDb2x1bW4sIHN0b3JlLCAuLi5vdGhlcnRhYmxlUGFyYW1zIH0gYXMgYW55O1xyXG4gICAgaWYgKHNob3dSb3dTZWxlY3Rpb24pIHtcclxuICAgICAgdGFibGVQYXJhbXMgPSB7XHJcbiAgICAgICAgLi4udGFibGVQYXJhbXMsXHJcbiAgICAgICAgcm93U2VsZWN0aW9uOiB7XHJcbiAgICAgICAgICBzZWxlY3RlZFJvd0tleXM6IHRoaXMuc3RhdGUuc2VsZWN0ZWRSb3dLZXlzLFxyXG4gICAgICAgICAgb25DaGFuZ2U6IChzZWxlY3RlZFJvd0tleXMsIHNlbGVjdGVkUm93cykgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB7IHNlbGVjdGVkUm93S2V5c1N0b3JlLCBzZWxlY3RlZFJvd0RhdGFzU3RvcmUsIGN1cnJlbnRQYWdlIH0gPVxyXG4gICAgICAgICAgICAgIHRoaXMuc3RhdGU7XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld1Jvd0tleXNTdG9yZSA9IHtcclxuICAgICAgICAgICAgICAuLi5zZWxlY3RlZFJvd0tleXNTdG9yZSxcclxuICAgICAgICAgICAgICBbY3VycmVudFBhZ2VdOiBzZWxlY3RlZFJvd0tleXMsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld1Jvd0RhdGFzU3RvcmUgPSB7XHJcbiAgICAgICAgICAgICAgLi4uc2VsZWN0ZWRSb3dEYXRhc1N0b3JlLFxyXG4gICAgICAgICAgICAgIFtjdXJyZW50UGFnZV06IHNlbGVjdGVkUm93cyxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRSb3dLZXlzOiB0aGlzLmdldFNlbGVjdGVkS2V5KG5ld1Jvd0tleXNTdG9yZSksXHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRSb3dEYXRhczogdGhpcy5nZXRTZWxlY3RlZEtleShuZXdSb3dEYXRhc1N0b3JlKSxcclxuICAgICAgICAgICAgICBzZWxlY3RlZFJvd0tleXNTdG9yZToge1xyXG4gICAgICAgICAgICAgICAgLi4ubmV3Um93S2V5c1N0b3JlLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRSb3dEYXRhc1N0b3JlOiB7XHJcbiAgICAgICAgICAgICAgICAuLi5uZXdSb3dEYXRhc1N0b3JlLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICBjb2x1bW5XaWR0aDogNDAsXHJcbiAgICAgICAgICBjaGVja1N0cmljdGx5OiBmYWxzZSxcclxuICAgICAgICAgIC4uLnJvd1NlbGVjdGlvbixcclxuICAgICAgICB9LFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgbGV0IHRhYmxlQ29sdW1uOiBhbnlbXSA9IFtdO1xyXG4gICAgY29uc3Qgc2VhcmNoRm9ybXM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgZWRpdG9yRm9ybXM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgZGVmYXVsdFZhbHVlOiBhbnkgPSB7fTtcclxuICAgIGNvbnN0IGNvbHVtbkJ1dHRvbnM6IGFueSA9IFtdO1xyXG4gICAgY29sdW1ucy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBsZXQgdGVtcCA9IHsgLi4uaXRlbSB9O1xyXG4gICAgICBpZiAodGVtcC5zZWFyY2gpIHtcclxuICAgICAgICBzZWFyY2hGb3Jtcy5wdXNoKHtcclxuICAgICAgICAgIG5hbWU6IHRlbXAuZmllbGQgfHwgdGVtcC5kYXRhSW5kZXgsXHJcbiAgICAgICAgICBsYWJlbDogdGVtcC50aXRsZSxcclxuICAgICAgICAgIHR5cGU6IHRlbXAudHlwZSxcclxuICAgICAgICAgIHByb3BzOiB0ZW1wLnByb3BzLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnNlYXJjaDtcclxuICAgICAgdGVtcC5lZGl0b3IgIT09IGZhbHNlICYmXHJcbiAgICAgICAgZWRpdG9yRm9ybXMucHVzaCh7XHJcbiAgICAgICAgICBuYW1lOiB0ZW1wLmZpZWxkIHx8IHRlbXAuZGF0YUluZGV4LFxyXG4gICAgICAgICAgbGFiZWw6IHRlbXAudGl0bGUsXHJcbiAgICAgICAgICBydWxlczogdGVtcC5ydWxlcyA/IHRlbXAucnVsZXMgOiBbXSxcclxuICAgICAgICAgIHR5cGU6IHRlbXAudHlwZSxcclxuICAgICAgICAgIHNwYW46IHRlbXAuc3BhbixcclxuICAgICAgICAgIGRpY3ROYW1lOiB0ZW1wLmRpY3ROYW1lLFxyXG4gICAgICAgICAgcHJvcHM6IG9taXQoeyAuLi50ZW1wLnByb3BzIH0sIFtcImRlZmF1bHRWYWx1ZVwiLCBcInZhbHVlXCJdKSxcclxuICAgICAgICB9KTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRlbXAucHJvcHM/LmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkICYmXHJcbiAgICAgICAgdGVtcC5wcm9wcz8uZGVmYXVsdFZhbHVlICE9PSBudWxsXHJcbiAgICAgICkge1xyXG4gICAgICAgIGNvbnN0IG5hbWUgPSB0ZW1wLmZpZWxkIHx8IHRlbXAuZGF0YUluZGV4O1xyXG4gICAgICAgIGRlZmF1bHRWYWx1ZVtuYW1lXSA9IHRlbXAucHJvcHM/LmRlZmF1bHRWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgICBkZWxldGUgdGVtcC5ydWxlcztcclxuICAgICAgZGVsZXRlIHRlbXAuc3BhbjtcclxuICAgICAgaWYgKHRlbXAuY29sdW1uU2VhcmNoKSB7XHJcbiAgICAgICAgdGVtcC5maWx0ZXJQcm9wcyA9IHtcclxuICAgICAgICAgIHR5cGU6IHRlbXAudHlwZSxcclxuICAgICAgICAgIHByb3BzOiB0ZW1wLnByb3BzLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgICAgZGVsZXRlIHRlbXAudHlwZTtcclxuICAgICAgbGV0IHRlbXBQcm9wID0geyAuLi50ZW1wLnByb3BzIH07XHJcbiAgICAgIGlmICh0ZW1wLnN0eWxlKSB7XHJcbiAgICAgICAgdGVtcCA9IHtcclxuICAgICAgICAgIHJlbmRlcjogKHRleHQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgICAgICB7dGV4dCAhPT0gXCJcIiAmJiB0ZXh0ICE9PSBudWxsICYmIHRleHQgIT09IHVuZGVmaW5lZCAmJiAoXHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiY29sLWJhY2tcIil9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiY29sLXRleHRcIil9PlxyXG4gICAgICAgICAgICAgICAgICAgICAge3RoaXMuZ2V0VGV4dCh0ZW1wUHJvcCwgdGV4dCl9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVsbGlwc2lzOiB0cnVlLFxyXG4gICAgICAgICAgLi4udGVtcCxcclxuICAgICAgICB9O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRlbXAgPSB7XHJcbiAgICAgICAgICByZW5kZXI6ICh0ZXh0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIDw+e3RoaXMuZ2V0VGV4dCh0ZW1wUHJvcCwgdGV4dCl9PC8+O1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLnRlbXAsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICBkZWxldGUgdGVtcC5wcm9wcztcclxuICAgICAgaWYgKHRlbXA/LmNvbHVtblNob3cgIT09IGZhbHNlKSB0YWJsZUNvbHVtbi5wdXNoKHRlbXApO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBzZWxmQnV0dG9uczogYW55ID0gW107XHJcbiAgICBjb25zdCB7IGJhc2VBY3Rpb25Db2x1bW4gfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHNob3dJY29uID0gdHJ1ZTtcclxuICAgIGlmIChhY3Rpb25Qb3Jwcz8uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgZWxzZSBpZiAoYmFzZUFjdGlvbkNvbHVtbi5zaG93SWNvbiA9PT0gZmFsc2UpIHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBpZiAoZWRpdG9yRm9ybSA9PSB0cnVlKSB7XHJcbiAgICAgIGlmIChidXR0b25zLmluZGV4T2YoXCJzZWFyY2hcIikgPiAtMSkge1xyXG4gICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgb25DbGljaz17KHJlY29yZDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKG9uU2hvd0Zvcm0pIHtcclxuICAgICAgICAgICAgICAgIG9uU2hvd0Zvcm0ocmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsIFwiZGV0YWlsXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnNob3dGb3JtKHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLCBcImRldGFpbFwiKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgaWNvbj17PEV5ZU91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICDmn6XnnItcclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGJ1dHRvbnMuaW5kZXhPZihcImVkaXRvclwiKSA+IC0xKSB7XHJcbiAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICBvbkNsaWNrPXsocmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAob25TaG93Rm9ybSkge1xyXG4gICAgICAgICAgICAgICAgb25TaG93Rm9ybShyZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCwgXCJlZGl0b3JcIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0Zvcm0ocmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsIFwiZWRpdG9yXCIpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICBpY29uPXs8RWRpdE91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICDnvJbovpFcclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChidXR0b25zLmluZGV4T2YoXCJhZGRcIikgPiAtMSkge1xyXG4gICAgICBzZWxmQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgIDxCdXR0b25cclxuICAgICAgICAgIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB7IG9uU2hvd0Zvcm0gfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgICAgICAgIGlmIChvblNob3dGb3JtKSB7XHJcbiAgICAgICAgICAgICAgb25TaG93Rm9ybSgpO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnNob3dGb3JtKCk7XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgICAgaWNvbj17PFBsdXNPdXRsaW5lZCAvPn1cclxuICAgICAgICA+XHJcbiAgICAgICAgICDmt7vliqBcclxuICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmIChidXR0b25zLmluZGV4T2YoXCJkZWxldGVcIikgPiAtMSkge1xyXG4gICAgICBzZWxmQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgIDxCdXR0b25cclxuICAgICAgICAgIC8vIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgb25DbGljaz17dGhpcy5vbkRlbGV0ZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgaWNvbj17PEljb24gdHlwZT17aWNvblR5cGUuZGVsZXRlM30gLz59XHJcbiAgICAgICAgICBkYW5nZXJcclxuICAgICAgICA+XHJcbiAgICAgICAgICDliKDpmaRcclxuICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChpdGVtPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIpIHtcclxuICAgICAgICAgIHNlbGZCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjbG91bW5CdXR0b25cIikge1xyXG4gICAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgIGNvbnN0IHsgcHJvcHMgfTogYW55ID0gY2hpbGRyZW47XHJcbiAgICAgIGlmIChwcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIpIHtcclxuICAgICAgICBzZWxmQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgICAgfSBlbHNlIGlmIChwcm9wcz8ucGFnZVR5cGUgPT0gXCJjbG91bW5CdXR0b25cIikge1xyXG4gICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChjaGlsZHJlbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGFjdGlvbkNvbHVtbiAmJlxyXG4gICAgICB0YWJsZUNvbHVtbi5wdXNoKHtcclxuICAgICAgICB0aXRsZTogXCLmk43kvZxcIixcclxuICAgICAgICBkYXRhSW5kZXg6IFwiYWN0aW9uXCIsXHJcbiAgICAgICAgYWxpZ246IGFjdGlvblBvcnBzPy50ZXh0QWxpZ25cclxuICAgICAgICAgID8gYWN0aW9uUG9ycHM/LnRleHRBbGlnblxyXG4gICAgICAgICAgOiBiYXNlQWN0aW9uQ29sdW1uLnRleHRBbGlnblxyXG4gICAgICAgICAgPyBiYXNlQWN0aW9uQ29sdW1uLnRleHRBbGlnblxyXG4gICAgICAgICAgOiBcImNlbnRlclwiLFxyXG4gICAgICAgIHdpZHRoOiBhY3Rpb25Qb3Jwcz8ud2lkdGhcclxuICAgICAgICAgID8gYWN0aW9uUG9ycHM/LndpZHRoXHJcbiAgICAgICAgICA6IGJhc2VBY3Rpb25Db2x1bW4ud2lkdGhcclxuICAgICAgICAgID8gYmFzZUFjdGlvbkNvbHVtbi53aWR0aFxyXG4gICAgICAgICAgOiAyMDAsXHJcbiAgICAgICAgZml4ZWQ6IFwicmlnaHRcIixcclxuICAgICAgICBlbGxpcHNpczogdHJ1ZSxcclxuICAgICAgICByZW5kZXI6ICh0ZXh0OiBhbnksIHJlY29yZDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiYWN0aW9uXCIpfT5cclxuICAgICAgICAgICAgICB7dGhpcy5yZW5kZXJDbG91bW5CdXR0b24oY29sdW1uQnV0dG9ucywgcmVjb3JkKX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgY29uc3QgaGVhZGVyQ291bnQgPSB0b29sQnV0dG9uUG9zaXRpb24gPT0gXCJyaWdodFwiID8gMSA6IDI7XHJcbiAgICBjb25zdCBoZWFkZXJSb3V0ID0gc2VhcmNoRm9ybXMubGVuZ3RoICUgNDtcclxuICAgIGxldCBjb2xTcGFuID0gMDtcclxuICAgIGlmIChoZWFkZXJSb3V0ID09IDApIHtcclxuICAgICAgY29sU3BhbiA9IDE4O1xyXG4gICAgfSBlbHNlIGlmIChoZWFkZXJSb3V0ID09IDEpIHtcclxuICAgICAgY29sU3BhbiA9IDEyO1xyXG4gICAgfSBlbHNlIGlmIChoZWFkZXJSb3V0ID09IDIpIHtcclxuICAgICAgY29sU3BhbiA9IDY7XHJcbiAgICB9XHJcbiAgICBpZiAoY29sdW1uT3JkZXIpXHJcbiAgICAgIHRhYmxlQ29sdW1uID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRpdGxlOiBcIuW6j+WPt1wiLFxyXG4gICAgICAgICAgd2lkdGg6IDgwLFxyXG4gICAgICAgICAgYWxpZ246IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICByZW5kZXI6ICh0ZXh0LCByZWFjb3JkLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gPD57aW5kZXggKyAxfTwvPjtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi50YWJsZUNvbHVtbixcclxuICAgICAgXTtcclxuXHJcbiAgICBpZiAodGFibGVQcm9wcy5wYWdpbmF0aW9uICE9PSBmYWxzZSkge1xyXG4gICAgICAvLyBzY3JvbGw9e3sgeDogXCJtYXgtY29udGVudFwiLCB5OiBcIjI1dndcIiB9fVxyXG4gICAgICAvL+iuoeeul+ihqOagvOmrmOW6plxyXG4gICAgICBsZXQgdGFibGVIZWlnaHQgPSBkb2N1bWVudC5ib2R5LnNjcm9sbEhlaWdodCAtIDE2MDsgLy/mlbTkvZPpobXpnaLpq5jluqYsbGF5b3V05aS06YOo77yMcGFkZGluZ1xyXG4gICAgICBpZiAodGhpcy5wcm9wcy5wYWdlVGl0bGUpIHtcclxuICAgICAgICB0YWJsZUhlaWdodCA9IHRhYmxlSGVpZ2h0IC0gNTg7IC8v5YeP5Y676aG16Z2i5qCH6aKY6auY5bqmXHJcbiAgICAgIH1cclxuICAgICAgaWYgKHNob3dTZWFyY2gpIHtcclxuICAgICAgICB0YWJsZUhlaWdodCA9IHRhYmxlSGVpZ2h0IC0gNjg7IC8v5YeP5Y675pCc57Si5qCP6auY5bqmXHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMucHJvcHMuc2hvd1Rvb2xCdXR0b24pIHtcclxuICAgICAgICAvL+WHj+WOu+W3peWFt+agj+mrmOW6plxyXG4gICAgICAgIHRhYmxlSGVpZ2h0ID0gdGFibGVIZWlnaHQgLSA0MjtcclxuICAgICAgfVxyXG4gICAgICB0YWJsZUhlaWdodCA9IHRhYmxlSGVpZ2h0IC0gNTUgLSA2MDsgLy/lh4/ljrvooajlpLTlkozliIbpoIHpq5jluqZcclxuICAgICAgdGFibGVQYXJhbXMgPSB7XHJcbiAgICAgICAgc2Nyb2xsOiB7IHg6IFwibWF4LWNvbnRlbnRcIiwgeTogcHgydncodGFibGVIZWlnaHQpIH0sXHJcbiAgICAgICAgLi4udGFibGVQYXJhbXMsXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcInBhZ2VcIiksIGNsYXNzTmFtZSl9PlxyXG4gICAgICAgIHt0aGlzLnByb3BzLnBhZ2VUaXRsZSAmJiAoXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcInBhZ2UtdGl0bGVcIikpfT5cclxuICAgICAgICAgICAge3RoaXMucHJvcHMucGFnZVRpdGxlfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJwYWdlLXBhbmVcIikpfVxyXG4gICAgICAgICAgc3R5bGU9e3sgZGlzcGxheTogXCJmbGV4XCIgfX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICB7c2hvd0xlZnQgJiYgKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibGVmdFwiKX0+XHJcbiAgICAgICAgICAgICAgPFRyZWVcclxuICAgICAgICAgICAgICAgIHN0b3JlPXt7IC4uLnRyZWVTdG9yZSB9fVxyXG4gICAgICAgICAgICAgICAgc2hvd0ljb249e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgY2hlY2thYmxlPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgIHNlYXJjaGFibGU9e3RyZWVTZWFyY2h9XHJcbiAgICAgICAgICAgICAgICBvblNlbGVjdD17dGhpcy50cmVlU2VsZWN0LmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEtleXM9e1t0aGlzLnN0YXRlLnRyZWVTZWxlY3RlZEtleV19XHJcbiAgICAgICAgICAgICAgICB0aXRsZUFsaWFzPXt0aXRsZUFsaWFzfVxyXG4gICAgICAgICAgICAgICAgey4uLm90aGVydHJlZVBhcmFtc31cclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcInJpZ2h0XCIpLCB7XHJcbiAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5vLWxlZnQtcmlnaHRcIildOiAhc2hvd0xlZnQsXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd1NlYXJjaCAmJiAoXHJcbiAgICAgICAgICAgICAgPFJvdyBndXR0ZXI9ezI0fSB3cmFwPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImhlYWRlclwiKX0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwiZm9ybVwiKSl9PlxyXG4gICAgICAgICAgICAgICAgICAgIHsvKiA8Um93IGd1dHRlcj17MjR9IHdyYXAgc3R5bGU9e3ttYXJnaW46MH19PiAqL31cclxuICAgICAgICAgICAgICAgICAgICA8Rm9ybVxyXG4gICAgICAgICAgICAgICAgICAgICAgcmVmPXt0aGlzLnNlYXJjaFJlZn1cclxuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsQ29sPXt7fX1cclxuICAgICAgICAgICAgICAgICAgICAgIHdyYXBwZXJDb2w9e3t9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgbGF5b3V0PVwiaW5saW5lXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IHdpZHRoOiBcIjEwMCVcIiB9fVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIHtzZWFyY2hGb3Jtcy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtUHJvcHMgPSBpdGVtLnByb3BzIHx8IHt9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbVByb3BzLnZhbHVlRm9ybWF0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlRm9ybWF0W2l0ZW0ubmFtZV0gPSBpdGVtUHJvcHMudmFsdWVGb3JtYXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gaGVhZGVyQ291bnQgJiYgIXRoaXMuc3RhdGUuZXhwYW5kKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhbGxvd0NoYXJzID0gaXRlbT8ucHJvcHM/LmFsbG93Q2hhcnMgfHwgZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwcm9wcyA9IHsgLi4uaXRlbVByb3BzIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXRlbS50eXBlIHx8IGl0ZW0udHlwZSA9PSBcIklucHV0XCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5hbGxvd0NoYXJzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxDb2xcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1kPXt7IHNwYW46IDEyIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbT17eyBzcGFuOiAyNCB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGc9e3sgc3BhbjogNiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IHBhZGRpbmdSaWdodDogMCB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtLkl0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e2l0ZW0ubGFiZWx9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9e2l0ZW0ubmFtZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dDaGFycz17YWxsb3dDaGFyc31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2dldE5vZGUoaXRlbS50eXBlLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IGDor7fovpPlhaUke2l0ZW0ubGFiZWx9YCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Zvcm0uSXRlbT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L0NvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgICAgICAgICAge3RoaXMuc3RhdGUuZXhwYW5kICYmIGNvbFNwYW4gPiAwICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPENvbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1kPXt7IHNwYW46IDAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzbT17eyBzcGFuOiAwIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGc9e3sgc3BhbjogY29sU3BhbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IHBhZGRpbmdSaWdodDogMCB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9Db2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgPENvbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZD17eyBzcGFuOiAxMiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzbT17eyBzcGFuOiAyNCB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZz17eyBzcGFuOiB0b29sQnV0dG9uUG9zaXRpb24gPT0gXCJyaWdodFwiID8gMTIgOiA2IH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IHBhZGRpbmdSaWdodDogMCB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJzZWFyY2gtYnV0dG9uc1wiKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBtYXJnaW5Ub3A6IDAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17dGhpcy5vblNlYXJjaC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj17PFNlYXJjaE91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgbWFyZ2luTGVmdDogMCB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIOafpeivolxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17dGhpcy5yZXNldFNlYXJjaC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj17PFJlbG9hZE91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIOmHjee9rlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtzaG93VG9vbEJ1dHRvbiAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uID09IFwicmlnaHRcIiAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJUb29sQnV0dG9ucyhzZWxmQnV0dG9ucyl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3NlYXJjaEZvcm1zLmxlbmd0aCA+IDMgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImFfc3R5bGVcIil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGV4cGFuZCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFuZDogIWV4cGFuZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3RoaXMuc3RhdGUuZXhwYW5kID8gXCLmlLbotbdcIiA6IFwi5bGV5byAXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLnN0YXRlLmV4cGFuZCA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VXBPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEb3duT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9Db2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9Gb3JtPlxyXG4gICAgICAgICAgICAgICAgICAgIHsvKiA8L1Jvdz4gKi99XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9Sb3c+XHJcbiAgICAgICAgICAgICl9XHJcblxyXG4gICAgICAgICAgICB7c2hvd1Rvb2xCdXR0b24gJiZcclxuICAgICAgICAgICAgICB0b29sQnV0dG9uUG9zaXRpb24gPT0gXCJidXR0b21cIiAmJlxyXG4gICAgICAgICAgICAgIHRoaXMucmVuZGVyVG9vbEJ1dHRvbnMoc2VsZkJ1dHRvbnMsIHNlYXJjaEZvcm1zLmxlbmd0aCA9PSAwKX1cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJ0YWJsZVwiKSl9PlxyXG4gICAgICAgICAgICAgIDxUYWJsZVxyXG4gICAgICAgICAgICAgICAgcmVmPXt0aGlzLnRhYmxlUmVmfVxyXG4gICAgICAgICAgICAgICAgY29sdW1ucz17dGFibGVDb2x1bW59XHJcbiAgICAgICAgICAgICAgICBleHBhbmRhYmxlPXt7XHJcbiAgICAgICAgICAgICAgICAgIGV4cGFuZEljb246ICh7IGV4cGFuZGVkLCBvbkV4cGFuZCwgcmVjb3JkIH0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgICAgICAgICAge2V4cGFuZGVkID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxEb3duT3V0bGluZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiBvbkV4cGFuZChyZWNvcmQsIGUpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJleHBhbmQtaWNvblwiKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5jaGlsZE5vZGVzICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWdodE91dGxpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiBvbkV4cGFuZChyZWNvcmQsIGUpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImV4cGFuZC1pY29uXCIpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICA8Lz5cclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAuLi5leHBhbmRhYmxlLFxyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgIGNvbHVtbk9yZGVyPXt0cnVlfVxyXG4gICAgICAgICAgICAgICAgYm9yZGVyZWQ9e3RydWV9XHJcbiAgICAgICAgICAgICAgICAvLyBzaXplPXt0aGlzLnN0YXRlLnRhYmxlU2l6ZX1cclxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsocGFnaW5hdGlvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCB7IGN1cnJlbnRQYWdlIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFBhZ2UgIT09IHBhZ2luYXRpb24uY3VycmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgY3VycmVudFBhZ2U6IHBhZ2luYXRpb24uY3VycmVudCxcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgIHRvb2xiYXI9e3tcclxuICAgICAgICAgICAgICAgICAgb25Ub29sQ2xpY2s6IHtcclxuICAgICAgICAgICAgICAgICAgICBvblJlZnJlc2g6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMuZ2V0U2VhcmNoVmFsdWVzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlTG9hZChwYXJhbXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIC4uLnRhYmxlUHJvcHMudG9vbGJhcixcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICB7Li4udGFibGVQYXJhbXN9XHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIHtlZGl0b3JGb3JtICYmIChcclxuICAgICAgICAgICAgPEVkaXRvckZvcm1cclxuICAgICAgICAgICAgICByZWY9e3RoaXMuZWRpdG9yUmVmfVxyXG4gICAgICAgICAgICAgIGNhbGxCYWNrPXt0aGlzLnRhYmxlUmVsb2FkLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgZm9ybVByb3BzPXtlZGl0b3JGb3Jtc31cclxuICAgICAgICAgICAgICBzdWJtaXRVcmw9e3N1Ym1pdFVybH1cclxuICAgICAgICAgICAgICBzdWJtaXRQYXJhbXM9e3N1Ym1pdFBhcmFtc31cclxuICAgICAgICAgICAgICBvblN1Ym1pdD17dGhpcy5wcm9wcy5vblN1Ym1pdH1cclxuICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU9e2RlZmF1bHRWYWx1ZX1cclxuICAgICAgICAgICAgICBvbkhpZGVGb3JtPXt0aGlzLnByb3BzLm9uSGlkZUZvcm19XHJcbiAgICAgICAgICAgICAgb25Gb3JtQ2hhbmdlPXt0aGlzLnByb3BzLm9uRm9ybUNoYW5nZX1cclxuICAgICAgICAgICAgICBmb3JtVHlwZT17dGhpcy5wcm9wcy5mb3JtVHlwZSB8fCBcImF1dG9cIn1cclxuICAgICAgICAgICAgICBjaGFuZ2VWYWxpZD17Zm9ybUNoYW5nZVZhbGlkfVxyXG4gICAgICAgICAgICAgIG90aGVyUHJvcHM9e3sgLi4uZm9ybVByb3BzIH19XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IEJhc2VQYWdlO1xyXG4iXX0=
1138
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BhZ2UvQmFzZVBhZ2UvaW5kZXgudHN4Il0sIm5hbWVzIjpbIlJlYWN0IiwiUHVyZUNvbXBvbmVudCIsIlRhYmxlIiwiVHJlZSIsIkZvcm0iLCJCdXR0b24iLCJNb2RhbCIsIlBvcG92ZXIiLCJtZXNzYWdlIiwiSWNvbiIsImljb25UeXBlIiwiRWRpdG9yRm9ybSIsImNscyIsInN0eWxlcyIsIkNvbCIsIlJvdyIsIm1vbWVudCIsImlzRW1wdHlPYmoiLCJEb3duT3V0bGluZWQiLCJVcE91dGxpbmVkIiwiRXllT3V0bGluZWQiLCJFZGl0T3V0bGluZWQiLCJSaWdodE91dGxpbmVkIiwiUGx1c091dGxpbmVkIiwiUmVsb2FkT3V0bGluZWQiLCJTZWFyY2hPdXRsaW5lZCIsImdldExlc3MiLCJnZXROb2RlIiwicmVxdWVzdCIsIm9taXQiLCJjb25maWciLCJnZXRTdG9yYWdlIiwiQmFzZVBhZ2UiLCJwcm9wcyIsImNyZWF0ZVJlZiIsImNoZWNrZWRUcmVlS2V5cyIsInN0YXRlIiwibmFtZSIsInVzZXJUeXBlIiwiYWNjb3VudCIsInZhbHVlIiwiZGVwdElkIiwidGFibGVMb2FkIiwic2VsZWN0ZWQiLCJyZXMiLCJrZXkiLCJrZXlzIiwibGVuZ3RoIiwic3RvcmVQcmVmaXgiLCJ0eXBlIiwiY29udGVudCIsInNpemUiLCJzZWxlY3RlZFJvd0tleXMiLCJzZWxlY3RlZFJvd0RhdGFzIiwidHJlZVNlbGVjdGVkS2V5IiwiZXhwYW5kIiwiZm9ybVR5cGUiLCJ0YWJsZVNpemUiLCJzZWxlY3RlZFJvd0tleXNTdG9yZSIsInNlbGVjdGVkUm93RGF0YXNTdG9yZSIsImN1cnJlbnRQYWdlIiwiaW5pdERhdGEiLCJwYXJhbXMiLCJjYWxsQmFjayIsInNlYXJjaFJlZiIsImN1cnJlbnQiLCJzZXRGaWVsZHNWYWx1ZSIsImVkaXRvcmZsYWciLCJlZGl0b3JSZWYiLCJzaG93IiwiaGlkZUZvcm0iLCJsb2FkaW5nIiwic2V0TG9hZGluZyIsImRlbGV0ZVVybCIsIm9uRGVsZXRlIiwiZGVsZXRlUGFyYW1zIiwid2FybmluZyIsIkVycm9yIiwiY29uZmlybSIsInRpdGxlIiwib2tUZXh0IiwiY2FuY2VsVGV4dCIsIm9uT2siLCJkZWZhdWx0UGFyYW1zIiwibWV0aG9kIiwiaWRzIiwiam9pbiIsInJlcXVlc3RQYXJhbXMiLCJ0aGVuIiwiY29kZSIsInN1Y2Nlc3MiLCJlcnJvciIsImNhdGNoIiwiY29uc29sZSIsImxvZyIsInRhYmxlUmVmIiwic3RvcmUiLCJsb2FkIiwib25TZWFyY2giLCJmcm9tVmFsdWUiLCJnZXRGaWVsZHNWYWx1ZSIsImRhdGVGb3JtYXQiLCJvbGRkYXRhIiwiQXJyYXkiLCJpc0FycmF5IiwiZm9ybWF0IiwiYXV0b0xvYWQiLCJyZWxvYWQiLCJjYWxsYmFjayIsImRhdGEiLCJyZWNvcmRzIiwic2V0U3RhdGUiLCJ0YWJsZVByb3BzIiwicm93S2V5IiwicmVzS2V5IiwiY2hpbGROb2RlcyIsImNoaWxkcmVuIiwibWFwIiwiaXRlbSIsImluZGV4IiwiZ2V0Q2hpbGRyZW5EYXRhIiwidG9vbGJ1dHRvbnMiLCJtYXJnaW5mbGFnIiwiZmxhZyIsInNob3dTZWFyY2giLCJwYWdlVHlwZSIsIm9uQ2xpY2siLCJpY29uIiwibWFyZ2luTGVmdCIsImNvbHVtbkJ1dHRvbnMiLCJyZWNvcmQiLCJlZGl0b3JGb3JtIiwiYnV0dG9ucyIsImFjdGlvblBvcnBzIiwiYmFzZUFjdGlvbkNvbHVtbiIsIm5ld0J1dHRvbnMiLCJzaG93SWNvbiIsInJlY29yZFNob3ciLCJldmFsIiwicHVzaCIsInNlbGVjdGVkS2V5cyIsInNlbGVjdGVkTm9kZXMiLCJrZXl3b3JkIiwidHJlZVByb3BzIiwic2VhcmNoS2V5Iiwic2VhcmNoRmllbGQiLCJpc0xlYWYiLCJkYXRhcmVmIiwiYXR0cmlidXRlIiwicmVzZXRGaWVsZHMiLCJ0ZXh0IiwibmV3VGV4dCIsImkiLCJsYWJlbCIsInNldERhdGEiLCJ0cmVlUmVmIiwiY29sdW1ucyIsInN1Ym1pdFVybCIsImZvcm1Qcm9wcyIsInNob3dMZWZ0Iiwic3VibWl0UGFyYW1zIiwic2hvd1Rvb2xCdXR0b24iLCJvblNob3dGb3JtIiwiZm9ybUNoYW5nZVZhbGlkIiwiY2xhc3NOYW1lIiwidG9vbEJ1dHRvblBvc2l0aW9uIiwiZmlsdGVyQ29sdW1uIiwiYWN0aW9uQ29sdW1uIiwic2hvd1Jvd1NlbGVjdGlvbiIsImNvbHVtbk9yZGVyIiwicm93U2VsZWN0aW9uIiwiZXhwYW5kYWJsZSIsIm90aGVydGFibGVQYXJhbXMiLCJ0cmVlU3RvcmUiLCJ0cmVlU2VhcmNoIiwidGl0bGVBbGlhcyIsIm90aGVydHJlZVBhcmFtcyIsInRhYmxlUGFyYW1zIiwib25DaGFuZ2UiLCJzZWxlY3RlZFJvd3MiLCJuZXdSb3dLZXlzU3RvcmUiLCJuZXdSb3dEYXRhc1N0b3JlIiwiZ2V0U2VsZWN0ZWRLZXkiLCJjb2x1bW5XaWR0aCIsImNoZWNrU3RyaWN0bHkiLCJ0YWJsZUNvbHVtbiIsInNlYXJjaEZvcm1zIiwiZWRpdG9yRm9ybXMiLCJkZWZhdWx0VmFsdWUiLCJ0ZW1wIiwic2VhcmNoIiwiZmllbGQiLCJkYXRhSW5kZXgiLCJlZGl0b3IiLCJydWxlcyIsInNwYW4iLCJkaWN0TmFtZSIsInVuZGVmaW5lZCIsImNvbHVtblNlYXJjaCIsImZpbHRlclByb3BzIiwidGVtcFByb3AiLCJzdHlsZSIsInJlbmRlciIsImdldFRleHQiLCJlbGxpcHNpcyIsImNvbHVtblNob3ciLCJzZWxmQnV0dG9ucyIsImluZGV4T2YiLCJzaG93Rm9ybSIsImJpbmQiLCJkZWxldGUzIiwiYWxpZ24iLCJ0ZXh0QWxpZ24iLCJ3aWR0aCIsImZpeGVkIiwicmVuZGVyQ2xvdW1uQnV0dG9uIiwiaGVhZGVyQ291bnQiLCJoZWFkZXJSb3V0IiwiY29sU3BhbiIsInJlYWNvcmQiLCJwYWdpbmF0aW9uIiwidGFibGVIZWlnaHQiLCJkb2N1bWVudCIsImJvZHkiLCJzY3JvbGxIZWlnaHQiLCJwYWdlVGl0bGUiLCJzY3JvbGwiLCJ4IiwieSIsImRpc3BsYXkiLCJ0cmVlU2VsZWN0IiwiaXRlbVByb3BzIiwidmFsdWVGb3JtYXQiLCJhbGxvd0NoYXJzIiwicGFkZGluZ1JpZ2h0IiwicGxhY2Vob2xkZXIiLCJtYXJnaW5Ub3AiLCJyZXNldFNlYXJjaCIsInJlbmRlclRvb2xCdXR0b25zIiwiZXhwYW5kSWNvbiIsImV4cGFuZGVkIiwib25FeHBhbmQiLCJlIiwib25Ub29sQ2xpY2siLCJvblJlZnJlc2giLCJnZXRTZWFyY2hWYWx1ZXMiLCJ0b29sYmFyIiwidGFibGVSZWxvYWQiLCJvblN1Ym1pdCIsIm9uSGlkZUZvcm0iLCJvbkZvcm1DaGFuZ2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBT0EsS0FBUCxJQUFnQkMsYUFBaEIsUUFBZ0QsT0FBaEQ7QUFDQSxPQUFPQyxLQUFQLE1BQWtCLGtCQUFsQjtBQUNBLE9BQU9DLElBQVAsTUFBaUIsaUJBQWpCO0FBQ0EsT0FBT0MsSUFBUCxNQUFpQixpQkFBakI7QUFDQSxPQUFPQyxNQUFQLE1BQW1CLG1CQUFuQjtBQUNBLE9BQU9DLEtBQVAsTUFBa0Isa0JBQWxCO0FBQ0EsT0FBT0MsT0FBUCxNQUFvQixvQkFBcEI7QUFDQSxPQUFPQyxPQUFQLE1BQW9CLG9CQUFwQjtBQUNBLE9BQU9DLElBQVAsTUFBaUIsNEJBQWpCO0FBQ0EsU0FBU0MsUUFBVCxRQUF5QixpQkFBekI7QUFDQSxPQUFPQyxVQUFQLE1BQXVCLFFBQXZCO0FBQ0EsT0FBT0MsR0FBUCxNQUFnQixZQUFoQjtBQUNBLE9BQU9DLE1BQVAsTUFBbUIscUJBQW5CO0FBRUEsT0FBT0MsR0FBUCxNQUFnQixxQkFBaEI7QUFDQSxPQUFPQyxHQUFQLE1BQWdCLHFCQUFoQjtBQUNBLE9BQU9DLE1BQVAsTUFBbUIsUUFBbkI7QUFDQSxTQUFTQyxVQUFULFFBQTJCLG1CQUEzQjtBQUNBLFNBQ0VDLFlBREYsRUFFRUMsVUFGRixFQUdFQyxXQUhGLEVBSUVDLFlBSkYsRUFLRUMsYUFMRixFQU1F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QUEsVUFBVSxFQUFFLEtBQUszSixLQUFMLENBQVd3TixVQVJ6QjtBQVNFLFFBQUEsWUFBWSxFQUFFLEtBQUt4TixLQUFMLENBQVd5TixZQVQzQjtBQVVFLFFBQUEsUUFBUSxFQUFFLEtBQUt6TixLQUFMLENBQVd1QixRQUFYLElBQXVCLE1BVm5DO0FBV0UsUUFBQSxXQUFXLEVBQUUyRyxlQVhmO0FBWUUsUUFBQSxVQUFVLG9CQUFPTCxTQUFQO0FBWlosUUExTEosQ0FORixDQURGO0FBbU5EOzs7O0VBdjZCb0I3SixhOztBQXk2QnZCLGVBQWUrQixRQUFmIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgVGFibGUgZnJvbSBcIi4uLy4uL2Jhc2UvdGFibGVcIjtcclxuaW1wb3J0IFRyZWUgZnJvbSBcIi4uLy4uL2Jhc2UvdHJlZVwiO1xyXG5pbXBvcnQgRm9ybSBmcm9tIFwiLi4vLi4vYmFzZS9mb3JtXCI7XHJcbmltcG9ydCBCdXR0b24gZnJvbSBcIi4uLy4uL2Jhc2UvYnV0dG9uXCI7XHJcbmltcG9ydCBNb2RhbCBmcm9tIFwiLi4vLi4vYmFzZS9tb2RhbFwiO1xyXG5pbXBvcnQgUG9wb3ZlciBmcm9tIFwiLi4vLi4vYmFzZS9wb3BvdmVyXCI7XHJcbmltcG9ydCBtZXNzYWdlIGZyb20gXCIuLi8uLi9iYXNlL21lc3NhZ2VcIjtcclxuaW1wb3J0IEljb24gZnJvbSBcIi4uLy4uL2Jhc2UvY29tbW9uL0ljb25Gb250XCI7XHJcbmltcG9ydCB7IGljb25UeXBlIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgRWRpdG9yRm9ybSBmcm9tIFwiLi9Gb3JtXCI7XHJcbmltcG9ydCBjbHMgZnJvbSBcImNsYXNzbmFtZXNcIjtcclxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9pbmRleC5tb2R1bGUubGVzc1wiO1xyXG5pbXBvcnQgU3RvcmUsIHsgUGFnZVN0b3JlLCBTdG9yZVByb3BzIH0gZnJvbSBcIkBiai1uc2MvbXNuXCI7XHJcbmltcG9ydCBDb2wgZnJvbSBcIi4uLy4uL2Jhc2UvZ3JpZC9Db2xcIjtcclxuaW1wb3J0IFJvdyBmcm9tIFwiLi4vLi4vYmFzZS9ncmlkL1Jvd1wiO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcclxuaW1wb3J0IHsgaXNFbXB0eU9iaiB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQge1xyXG4gIERvd25PdXRsaW5lZCxcclxuICBVcE91dGxpbmVkLFxyXG4gIEV5ZU91dGxpbmVkLFxyXG4gIEVkaXRPdXRsaW5lZCxcclxuICBSaWdodE91dGxpbmVkLFxyXG4gIFBsdXNPdXRsaW5lZCxcclxuICBSZWxvYWRPdXRsaW5lZCxcclxuICBTZWFyY2hPdXRsaW5lZCxcclxufSBmcm9tIFwiQGFudC1kZXNpZ24vaWNvbnNcIjtcclxuaW1wb3J0IHsgZ2V0TGVzcywgZ2V0Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgcmVxdWVzdCBmcm9tIFwibnNjLXJlcXVlc3RcIjtcclxuaW1wb3J0IG9taXQgZnJvbSBcIm9taXQuanNcIjtcclxuaW1wb3J0IGNvbmZpZyBmcm9tIFwiLi4vLi4vY29uZmlnXCI7XHJcbmltcG9ydCB7IGdldFN0b3JhZ2UgfSBmcm9tIFwiQGJqLW5zYy9mdW5jdGlvbnNcIjtcclxuaW1wb3J0IHsgSUZvcm1Qcm9wcyB9IGZyb20gXCIuLi8uLi9iYXNlL2Zvcm0vRm9ybVwiO1xyXG5pbXBvcnQgeyB1c2VGb3JtIH0gZnJvbSBcImFudGQvZXMvZm9ybS9Gb3JtXCI7XHJcbmltcG9ydCB7IHB4MnZ3IH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmludGVyZmFjZSBUYWJsZVByb3BzIHtcclxuICBhY3Rpb25Db2x1bW4/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuaTjeS9nOWIl1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBmaWx0ZXJDb2x1bW4/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuui/h+a7pOaMiemSrlxyXG4gIHNob3dSb3dTZWxlY3Rpb24/OiBib29sZWFuOyAvL+aYr+WQpuihqOagvOWLvumAieWIl1xyXG4gIHBhZ2luYXRpb24/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuWIhumhtVxyXG4gIGNvbHVtbk9yZGVyPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrooajmoLzluo/liJdcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuaW50ZXJmYWNlIFRyZWVQcm9wcyB7XHJcbiAgc3RvcmU/OiBTdG9yZVByb3BzO1xyXG4gIHNob3dTZWFyY2g/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuaQnOe0ouahhlxyXG4gIHNlYXJjaEtleT86IHN0cmluZzsgLy/mkJzntKJ2YWx1ZeWvueW6lOeahGtleVxyXG4gIHNlYXJjaEZpZWxkPzogc3RyaW5nOyAvL+afpeivouWvueW6lOeahGtleVxyXG4gIHRpdGxlQWxpYXM/OiBzdHJpbmc7IC8v5qCRdGl0bGXlr7nlupTnmoRrZXks6buY6K6kdGl0bGVcclxuICBub2RlUG9ycHM/OiBvYmplY3Q7XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmludGVyZmFjZSBGb3JtUHJvcHMgZXh0ZW5kcyBJRm9ybVByb3BzIHt9XHJcbmludGVyZmFjZSBOU0NCYXNlQmFnZVByb3BzIHtcclxuICBzaG93U2VhcmNoPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrlpLTpg6jmkJzntKLmoI9cclxuICB0YWJsZVByb3BzPzogVGFibGVQcm9wczsgLy/ooajmoLzlj4LmlbBcclxuICB0cmVlUHJvcHM/OiBUcmVlUHJvcHM7IC8v5bem5L6n5qCR5Y+C5pWwXHJcbiAgc3VibWl0UGFyYW1zPzogT2JqZWN0OyAvL+a3u+WKoOWPguaVsO+8jOm7mOiupG1vdGhvZDpwb3N077yMIOWPguaVsOmAmui/h2RhdGHkvKDpgJJcclxuICBzdWJtaXRVcmw/OiBzdHJpbmc7XHJcbiAgb25TdWJtaXQ/OiAodmFsdWU/OiBhbnksIGxhYmVsPzogYW55KSA9PiB2b2lkO1xyXG4gIGNvbHVtbnM6IEFycmF5PE9iamVjdD47XHJcbiAgc2hvd0xlZnQ/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuW3puS+p+ebruW9leagkVxyXG4gIHNob3dUb29sQnV0dG9uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmjInpkq7moI9cclxuICBlZGl0b3JGb3JtPzogYm9vbGVhbjsgLy/mmK/lkKbpnIDopoHooajljZXlip/og70gLCDkuLpmYWxzZSDnvJbovpHvvIzmn6XnnIvvvIzmlrDlop7lip/og73lnYfkuI3lj6/nlKhcclxuICBkZWxldGVVcmw/OiBzdHJpbmc7IC8v5Yig6ZmkdXJsXHJcbiAgb25EZWxldGU/OiAoc2VsZWN0ZWRLZXlzPzogQXJyYXk8YW55PikgPT4gdm9pZDsgLy/liKDpmaTlj4LmlbDvvIzpu5jorqRtb3Rob2Q6cG9zdO+8jCDlj4LmlbDpgJrov4dpZHPmi7zmjqXkvKDpgJLnu5nlkI7lj7BcclxuICBkZWxldGVQYXJhbXM/OiBPYmplY3Q7XHJcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XHJcbiAgb25TZWFyY2g/OiAodmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgaW5pdERhdGE/OiBhbnk7IC8v5Yid5aeL5YyW5Zue6LCD5Ye95pWw77yM5ZyoY29tcG9uZW50RGlkTW91bnTkuK3osIPnlKhcclxuICBidXR0b25zPzogQXJyYXk8c3RyaW5nPjsgLy/mjInpkq7pm4blkIggIFsnYWRkJywnZGVsZXRlJywnc2VhcmNoJywnZWRpdG9yJ11cclxuICBvblNob3dGb3JtPzogKHZhbHVlPzogYW55LCBlZGl0b3JGbGFnPzogc3RyaW5nKSA9PiB2b2lkOyAvL+aJk+W8gOihqOWNleWbnuiwg1xyXG4gIG9uSGlkZUZvcm0/OiAoKSA9PiB2b2lkOyAvL+aJk+W8gOihqOWNleWbnuiwg1xyXG4gIG9uRm9ybUNoYW5nZT86IChjaGFuZ2VkVmFsdWVzPzogYW55LCBhbGxWYWx1ZXM/OiBhbnkpID0+IHZvaWQ7IC8v6KGo5Y2Vb25DaGFuZ2Xlm57osINcclxuICBmb3JtVHlwZT86IFwibW9kYWxcIiB8IFwiZHJhd2VyXCI7XHJcbiAgZm9ybUNoYW5nZVZhbGlkPzogYm9vbGVhbjsgLy/ooajljZXmoKHpqoxcclxuICBjbGFzc05hbWU/OiBhbnk7XHJcbiAgdG9vbEJ1dHRvblBvc2l0aW9uPzogXCJyaWdodFwiIHwgXCJidXR0b21cIjtcclxuICBwYWdlVGl0bGU/OiBzdHJpbmcgfCBSZWFjdE5vZGU7XHJcbiAgZm9ybVByb3BzPzogRm9ybVByb3BzO1xyXG4gIGFjdGlvblBvcnBzPzogeyB0ZXh0QWxpZ24/OiBzdHJpbmc7IHNob3dJY29uPzogYm9vbGVhbjsgd2lkdGg/OiBudW1iZXIgfTtcclxufVxyXG5cclxuY2xhc3MgQmFzZVBhZ2UgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PE5TQ0Jhc2VCYWdlUHJvcHMsIGFueT4ge1xyXG4gIHRhYmxlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICB0cmVlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBzZWFyY2hSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIGVkaXRvclJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZGF0ZUZvcm1hdCA9IHt9IGFzIGFueTtcclxuICBjb25zdHJ1Y3Rvcihwcm9wczogYW55KSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgICBsZXQgeyBzdG9yZVByZWZpeCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgdHlwZSA9IGdldFN0b3JhZ2UoXHJcbiAgICAgIHN0b3JlUHJlZml4ID8gc3RvcmVQcmVmaXggKyBcIi1cIiArIFwiZm9ybVR5cGVcIiA6IFwiZm9ybVR5cGVcIlxyXG4gICAgKTtcclxuICAgIHR5cGUgPSB0eXBlPy5jb250ZW50O1xyXG4gICAgbGV0IHNpemUgPSBnZXRTdG9yYWdlKFxyXG4gICAgICBzdG9yZVByZWZpeCA/IHN0b3JlUHJlZml4ICsgXCItXCIgKyBcInRhYmxlU2l6ZVwiIDogXCJ0YWJsZVNpemVcIlxyXG4gICAgKTtcclxuICAgIHNpemUgPSBzaXplPy5jb250ZW50O1xyXG4gICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgdHlwZTogXCJhZGRcIixcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbXSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogW10sXHJcbiAgICAgIHRyZWVTZWxlY3RlZEtleTogXCJcIixcclxuICAgICAgZXhwYW5kOiBmYWxzZSxcclxuICAgICAgZm9ybVR5cGU6IHR5cGUgfHwgXCJtb2RhbFwiLFxyXG4gICAgICB0YWJsZVNpemU6IHNpemUgfHwgXCJkZWZhdWx0XCIsXHJcbiAgICAgIHNlbGVjdGVkUm93S2V5c1N0b3JlOiB7fSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhc1N0b3JlOiB7fSxcclxuICAgICAgY3VycmVudFBhZ2U6IDEsXHJcbiAgICB9O1xyXG4gIH1cclxuICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgIGNvbnN0IHsgaW5pdERhdGEgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpbml0RGF0YSAmJiBpbml0RGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0U2VhcmNoUGFyYW1zKHBhcmFtcywgY2FsbEJhY2spIHtcclxuICAgIHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LnNldEZpZWxkc1ZhbHVlKHBhcmFtcyk7XHJcbiAgICBjYWxsQmFjayAmJiBjYWxsQmFjayhwYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgb25TZWxlY3QgPSAoY2hlY2tlZFRyZWVLZXlzOiBhbnkpID0+IHtcclxuICAgIGNvbnN0IHsgbmFtZSwgdXNlclR5cGUsIGFjY291bnQgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHsgbmFtZSwgdXNlclR5cGUsIGFjY291bnQsIGRlcHRJZDogY2hlY2tlZFRyZWVLZXlzWzBdIH07XHJcbiAgICB0aGlzLnRhYmxlTG9hZCh2YWx1ZSk7XHJcbiAgfTtcclxuXHJcbiAgLy/mmL7npLrooajljZVcclxuICBzaG93Rm9ybSh2YWx1ZT86IGFueSwgZWRpdG9yZmxhZyA9IFwiYWRkXCIpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LnNob3codmFsdWUsIGVkaXRvcmZsYWcpO1xyXG4gIH1cclxuXHJcbiAgLy/lhbPpl63ooajljZVcclxuICBoaWRlRm9ybSgpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LmhpZGVGb3JtKCk7XHJcbiAgfVxyXG5cclxuICBzZXRMb2FkaW5nKGxvYWRpbmc6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LnNldExvYWRpbmcobG9hZGluZyk7XHJcbiAgfVxyXG5cclxuICAvL+aJuemHj+WIoOmZpFxyXG4gIG9uRGVsZXRlKCkge1xyXG4gICAgY29uc3QgeyBkZWxldGVVcmwsIG9uRGVsZXRlLCBkZWxldGVQYXJhbXMgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHNlbGVjdGVkUm93S2V5cyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGlmIChzZWxlY3RlZFJvd0tleXMubGVuZ3RoID09IDApIHtcclxuICAgICAgbWVzc2FnZS53YXJuaW5nKFwi6K+36YCJ5oup6KaB5Yig6Zmk55qE5pWw5o2u77yBXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAob25EZWxldGUpIHtcclxuICAgICAgb25EZWxldGUgJiYgb25EZWxldGUoc2VsZWN0ZWRSb3dLZXlzKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKCFkZWxldGVVcmwpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwidXJs5LiN6IO95Li656m677yBXCIpO1xyXG4gICAgfVxyXG4gICAgTW9kYWwuY29uZmlybSh7XHJcbiAgICAgIHRpdGxlOiBcIuaYr+WQpuehruiupOWIoOmZpOaJgOmAiemhue+8n1wiLFxyXG4gICAgICBva1RleHQ6IFwi56Gu6K6kXCIsXHJcbiAgICAgIGNhbmNlbFRleHQ6IFwi5Y+W5raIXCIsXHJcbiAgICAgIG9uT2s6ICgpID0+IHtcclxuICAgICAgICBjb25zdCBkZWZhdWx0UGFyYW1zID0ge1xyXG4gICAgICAgICAgbWV0aG9kOiBcInBvc3RcIixcclxuICAgICAgICAgIHBhcmFtczogeyBpZHM6IHNlbGVjdGVkUm93S2V5cy5qb2luKCkgfSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGxldCByZXF1ZXN0UGFyYW1zID0ge30gYXMgYW55O1xyXG4gICAgICAgIGlmIChkZWZhdWx0UGFyYW1zKSB7XHJcbiAgICAgICAgICByZXF1ZXN0UGFyYW1zID0geyAuLi5kZWxldGVQYXJhbXMgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVxdWVzdFBhcmFtcyA9IHsgLi4uZGVmYXVsdFBhcmFtcyB9O1xyXG4gICAgICAgIHJlcXVlc3QoZGVsZXRlVXJsLCB7XHJcbiAgICAgICAgICAuLi5yZXF1ZXN0UGFyYW1zLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzOiBhbnkpIHtcclxuICAgICAgICAgICAgY29uc3QgeyBjb2RlIH0gPSByZXM7XHJcbiAgICAgICAgICAgIGlmIChjb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICBtZXNzYWdlLnN1Y2Nlc3MoXCLliKDpmaTmiJDlip/vvIFcIik7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgbWVzc2FnZS5lcnJvcihcIuWIoOmZpOWksei0pe+8gVwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3I6IGFueSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yXCIsIGVycm9yKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHRhYmxlTG9hZChwYXJhbXM6IGFueSkge1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZS5sb2FkKHtcclxuICAgICAgcGFyYW1zOiBwYXJhbXMsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLy/mn6Xor6JcclxuICBvblNlYXJjaCgpIHtcclxuICAgIGNvbnN0IHsgb25TZWFyY2ggfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBmcm9tVmFsdWUgPSB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5nZXRGaWVsZHNWYWx1ZSgpO1xyXG4gICAgaWYgKG9uU2VhcmNoKSB7XHJcbiAgICAgIG9uU2VhcmNoKGZyb21WYWx1ZSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICghaXNFbXB0eU9iaih0aGlzLmRhdGVGb3JtYXQpKSB7XHJcbiAgICAgIGZvciAobGV0IGtleSBpbiB0aGlzLmRhdGVGb3JtYXQpIHtcclxuICAgICAgICBsZXQgb2xkZGF0YSA9IGZyb21WYWx1ZVtrZXldO1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9sZGRhdGEpKSB7XHJcbiAgICAgICAgICBmcm9tVmFsdWVba2V5XSA9IFtcclxuICAgICAgICAgICAgbW9tZW50KG9sZGRhdGFbMF0pLmZvcm1hdCh0aGlzLmRhdGVGb3JtYXRba2V5XSksXHJcbiAgICAgICAgICAgIG1vbWVudChvbGRkYXRhWzFdKS5mb3JtYXQodGhpcy5kYXRlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZnJvbVZhbHVlW2tleV0gPSBtb21lbnQob2xkZGF0YSkuZm9ybWF0KHRoaXMuZGF0ZUZvcm1hdFtrZXldKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMudGFibGVMb2FkKGZyb21WYWx1ZSk7XHJcbiAgfVxyXG4gIC8v6KGo5qC86YeN5paw5Yqg6L29XHJcbiAgdGFibGVSZWxvYWQocGFyYW1zID0ge30sIGF1dG9Mb2FkID0gdHJ1ZSkge1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZS5yZWxvYWQoe1xyXG4gICAgICBjYWxsYmFjazogKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGF1dG9Mb2FkICYmXHJcbiAgICAgICAgICByZXM/LmRhdGE/LnJlY29yZHM/Lmxlbmd0aCA9PSAwICYmXHJcbiAgICAgICAgICB0aGlzLnN0YXRlLmN1cnJlbnRQYWdlICE9PSAxXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlLnJlbG9hZCh7XHJcbiAgICAgICAgICAgIHBhcmFtczogeyBjdXJyZW50OiAxLCAuLi5wYXJhbXMgfSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0tleXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5zZWxlY3RlZFJvd0tleXM7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93RGF0YXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5zZWxlY3RlZFJvd0RhdGFzO1xyXG4gIH1cclxuICByZXNldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWxlY3RlZFJvd0tleXM6IFtdLFxyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzOiBbXSxcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzU3RvcmU6IHt9LFxyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzU3RvcmU6IHt9LFxyXG4gICAgICBjdXJyZW50UGFnZTogMSxcclxuICAgIH0pO1xyXG4gIH1cclxuICBzZXRTZWxlY3RlZFJvd0tleXMoZGF0YSkge1xyXG4gICAgY29uc3QgeyBjdXJyZW50UGFnZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWxlY3RlZFJvd0tleXM6IGRhdGEsXHJcbiAgICAgIHNlbGVjdGVkUm93S2V5c1N0b3JlOiB7IFtjdXJyZW50UGFnZV06IGRhdGEgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICBzZXRTZWxlY3RlZFJvd0RhdGFzKGRhdGEpIHtcclxuICAgIGNvbnN0IHsgY3VycmVudFBhZ2UgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogZGF0YSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhc1N0b3JlOiB7IFtjdXJyZW50UGFnZV06IGRhdGEgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICBnZXRTZWFyY2hWYWx1ZXMoKSB7XHJcbiAgICBjb25zdCBmcm9tVmFsdWUgPSB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5nZXRGaWVsZHNWYWx1ZSgpO1xyXG4gICAgcmV0dXJuIGZyb21WYWx1ZTtcclxuICB9XHJcblxyXG4gIGdldENoaWxkcmVuRGF0YShkYXRhLCBrZXlzID0gW10pIHtcclxuICAgIGNvbnN0IHsgdGFibGVQcm9wcyB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgcm93S2V5ID0gXCJpZFwiIH0gPSB0YWJsZVByb3BzO1xyXG4gICAgbGV0IHJlc0tleSA9IFtdO1xyXG4gICAgaWYgKGRhdGEuY2hpbGROb2Rlcykge1xyXG4gICAgICBjb25zdCBjaGlsZHJlbiA9IGRhdGEuY2hpbGROb2RlcztcclxuICAgICAgY2hpbGRyZW4ubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGlmIChpdGVtLmNoaWxkTm9kZXMpIHtcclxuICAgICAgICAgIHRoaXMuZ2V0Q2hpbGRyZW5EYXRhKGl0ZW0uY2hpbGROb2Rlcywga2V5cyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlc0tleSA9IFsuLi5rZXlzLCBpdGVtW3Jvd0tleV1dO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXNLZXkgPSBbLi4ua2V5cywgZGF0YVtyb3dLZXldXTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXNLZXk7XHJcbiAgfVxyXG5cclxuICByZW5kZXJUb29sQnV0dG9ucyh0b29sYnV0dG9uczogYW55LCBtYXJnaW5mbGFnID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IGZsYWcgPSB0b29sYnV0dG9ucy5sZW5ndGggPiA1O1xyXG4gICAgY29uc3QgeyBzaG93U2VhcmNoID0gdHJ1ZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0b29sYnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgaWNvbiwgc2hvdywgLi4ucGFyYW1zIH0gPSBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoaW5kZXggPiA0KSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwiZWRpdG9yXCIpLFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcImNvbnRlbnQtaXRlbVwiKVxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiaWNvblwiKX0+e2ljb259PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInRleHRcIil9PntjaGlsZHJlbn08L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJ0b29sLWJ1dHRvbnNcIiksIHtcclxuICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJ0b29sLWJ1dHRvbnMtbWFyZ2luXCIpXTogIXNob3dTZWFyY2ggfHwgbWFyZ2luZmxhZyxcclxuICAgICAgICB9KX1cclxuICAgICAgICBzdHlsZT17eyBtYXJnaW5MZWZ0OiAwIH19XHJcbiAgICAgID5cclxuICAgICAgICB7dG9vbGJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChmbGFnKSB7XHJcbiAgICAgICAgICAgIGlmIChpbmRleCA8IDQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gPGRpdiBrZXk9e2luZGV4fT57aXRlbX08L2Rpdj47XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT0gNCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8UG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICAgICAgICB0aXRsZT17bnVsbH1cclxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAgdHJpZ2dlcj17W1wiY2xpY2tcIl19XHJcbiAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICAgIC8vIG92ZXJsYXlDbGFzc05hbWU9e3N0eWxlc1sncG9wLWJveCddfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHR5cGU9XCJwcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAg5pu05aSaIDxEb3duT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIDxkaXYga2V5PXtpbmRleH0+e2l0ZW19PC9kaXY+O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG4gIHJlbmRlckNsb3VtbkJ1dHRvbihjb2x1bW5CdXR0b25zOiBhbnksIHJlY29yZDogYW55KSB7XHJcbiAgICBjb25zdCB7IGVkaXRvckZvcm0gPSB0cnVlLCBidXR0b25zID0gW10sIGFjdGlvblBvcnBzIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBiYXNlQWN0aW9uQ29sdW1uIH0gPSBjb25maWcoKTtcclxuICAgIGNvbnN0IG5ld0J1dHRvbnMgPSBbXTtcclxuICAgIGxldCBzaG93SWNvbiA9IHRydWU7XHJcbiAgICBpZiAoYWN0aW9uUG9ycHM/LnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGVsc2UgaWYgKGJhc2VBY3Rpb25Db2x1bW4uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgY29sdW1uQnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgaWNvbiwgcmVjb3JkU2hvdywgLi4ucGFyYW1zIH0gPVxyXG4gICAgICAgIGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChyZWNvcmRTaG93KSB7XHJcbiAgICAgICAgaWYgKGV2YWwocmVjb3JkU2hvdykpIHtcclxuICAgICAgICAgIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IGZsYWcgPSBuZXdCdXR0b25zLmxlbmd0aCA+IDM7XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IG5ld0J1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIHJlY29yZFNob3csIGljb24sIHNob3csIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoaW5kZXggPiAxKSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwiZWRpdG9yXCIpLFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcImNvbnRlbnQtaXRlbVwiKVxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJlY29yZCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiaWNvblwiKX0+e2ljb259PC9zcGFuPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInRleHRcIil9PntjaGlsZHJlbn08L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gbmV3QnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgcmVjb3JkU2hvdywgaWNvbiwgLi4ucGFyYW1zIH0gPVxyXG4gICAgICAgIGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChmbGFnKSB7XHJcbiAgICAgICAgaWYgKGluZGV4IDwgMikge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcImVkaXRvclwiKSwge1xyXG4gICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcImVkaXRvcl9maXJzdFwiKV06IGluZGV4ID09PSAwLFxyXG4gICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJlY29yZCk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImljb25cIil9PntpY29ufTwvc3Bhbj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwidGV4dFwiKX0+e2NoaWxkcmVufTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT0gMikge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPFBvcG92ZXJcclxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgIHRpdGxlPXtudWxsfVxyXG4gICAgICAgICAgICAgIGNvbnRlbnQ9e2NvbnRlbnR9XHJcbiAgICAgICAgICAgICAgdHJpZ2dlcj17W1wiY2xpY2tcIl19XHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAvLyBvdmVybGF5Q2xhc3NOYW1lPXtzdHlsZXNbJ3BvcCddfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImVkaXRvclwiKX0+XHJcbiAgICAgICAgICAgICAgICAmbmJzcDsg5pu05aSaXHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImljb25cIil9PlxyXG4gICAgICAgICAgICAgICAgICA8RG93bk91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJlZGl0b3JcIiksIHtcclxuICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwiZWRpdG9yX2ZpcnN0XCIpXTogaW5kZXggPT09IDAsXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJlY29yZCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiaWNvblwiKX0+e2ljb259PC9zcGFuPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInRleHRcIil9PntjaGlsZHJlbn08L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIC8vIH1cclxuICB9XHJcbiAgLy/moJHngrnlh7vkuovku7ZcclxuICB0cmVlU2VsZWN0KHNlbGVjdGVkS2V5czogYW55LCB7IHNlbGVjdGVkLCBzZWxlY3RlZE5vZGVzIH06IGFueSkge1xyXG4gICAgbGV0IGtleXdvcmQgPSBcIlwiO1xyXG4gICAgY29uc3QgeyBzZWFyY2hLZXkgPSBcImtleVwiLCBzZWFyY2hGaWVsZCA9IFwiXCIgfSA9IHRoaXMucHJvcHMudHJlZVByb3BzO1xyXG4gICAgY29uc3QgeyB0cmVlU2VsZWN0ZWRLZXkgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBpZiAoc2VsZWN0ZWQpIHtcclxuICAgICAgaWYgKHNlbGVjdGVkTm9kZXNbMF0uaXNMZWFmIHx8ICFzZWxlY3RlZE5vZGVzWzBdLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgaWYgKHNlbGVjdGVkS2V5c1swXSAhPT0gdHJlZVNlbGVjdGVkS2V5KSB7XHJcbiAgICAgICAgICBrZXl3b3JkID0gc2VsZWN0ZWROb2Rlc1swXS5kYXRhcmVmLmF0dHJpYnV0ZVtzZWFyY2hLZXldO1xyXG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIHRyZWVTZWxlY3RlZEtleTogc2VsZWN0ZWRLZXlzWzBdLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IGtleXdvcmQsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZnJvbVZhbHVlID0gdGhpcy5zZWFyY2hSZWYuY3VycmVudD8uZ2V0RmllbGRzVmFsdWUoKTtcclxuICAgIHNlYXJjaEZpZWxkICYmIHRoaXMudGFibGVMb2FkKHsgLi4uZnJvbVZhbHVlLCBbc2VhcmNoRmllbGRdOiBrZXl3b3JkIH0pO1xyXG4gIH1cclxuICByZXNldFNlYXJjaCgpIHtcclxuICAgIHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LnJlc2V0RmllbGRzKCk7XHJcbiAgfVxyXG4gIGdldFRleHQocHJvcHMsIHRleHQpIHtcclxuICAgIGxldCBuZXdUZXh0ID0gdGV4dDtcclxuICAgIGlmIChwcm9wcz8uZGF0YSAmJiBwcm9wcz8uZGF0YT8ubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgZGF0YSA9IHByb3BzLmRhdGE7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YT8ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoZGF0YVtpXS52YWx1ZSA9PSB0ZXh0KSB7XHJcbiAgICAgICAgICBuZXdUZXh0ID0gZGF0YVtpXS5sYWJlbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBuZXdUZXh0O1xyXG4gIH1cclxuICBzZXRUYWJsZURhdGEoZGF0YSkge1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZS5zZXREYXRhKGRhdGEpO1xyXG4gIH1cclxuICBzZXRUcmVlRGF0YShkYXRhKSB7XHJcbiAgICB0aGlzLnRyZWVSZWYuY3VycmVudD8uc3RvcmUuc2V0RGF0YShkYXRhKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRLZXkgPSAoc2VsZWN0ZWQpID0+IHtcclxuICAgIGxldCByZXMgPSBbXTtcclxuICAgIGZvciAobGV0IGtleSBpbiBzZWxlY3RlZCkge1xyXG4gICAgICBjb25zdCBrZXlzID0gc2VsZWN0ZWRba2V5XTtcclxuICAgICAgaWYgKGtleXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHJlcyA9IFsuLi5yZXMsIC4uLmtleXNdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzO1xyXG4gIH07XHJcbiAgcmVuZGVyKCkge1xyXG4gICAgY29uc3QgeyBzZWxlY3RlZFJvd0tleXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGNvbHVtbnMgPSBbXSxcclxuICAgICAgc2hvd1NlYXJjaCA9IHRydWUsXHJcbiAgICAgIGNoaWxkcmVuLFxyXG4gICAgICBzdWJtaXRVcmwgPSBcIlwiLFxyXG4gICAgICB0YWJsZVByb3BzID0ge30sXHJcbiAgICAgIHRyZWVQcm9wcyA9IHt9LFxyXG4gICAgICBmb3JtUHJvcHMgPSB7fSxcclxuICAgICAgc2hvd0xlZnQgPSBmYWxzZSxcclxuICAgICAgc3VibWl0UGFyYW1zID0ge30sXHJcbiAgICAgIHNob3dUb29sQnV0dG9uID0gdHJ1ZSxcclxuICAgICAgYnV0dG9ucyA9IFtdLFxyXG4gICAgICBlZGl0b3JGb3JtID0gdHJ1ZSxcclxuICAgICAgb25TaG93Rm9ybSxcclxuICAgICAgZm9ybUNoYW5nZVZhbGlkID0gdHJ1ZSxcclxuICAgICAgY2xhc3NOYW1lLFxyXG4gICAgICB0b29sQnV0dG9uUG9zaXRpb24gPSBcImJ1dHRvbVwiLFxyXG4gICAgICBhY3Rpb25Qb3JwcyxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzdG9yZSA9IHt9LFxyXG4gICAgICBmaWx0ZXJDb2x1bW4gPSB0cnVlLFxyXG4gICAgICBhY3Rpb25Db2x1bW4gPSB0cnVlLFxyXG4gICAgICBzaG93Um93U2VsZWN0aW9uID0gdHJ1ZSxcclxuICAgICAgY29sdW1uT3JkZXIgPSB0cnVlLFxyXG4gICAgICByb3dTZWxlY3Rpb24gPSB7fSxcclxuICAgICAgZXhwYW5kYWJsZSA9IHt9LFxyXG4gICAgICAuLi5vdGhlcnRhYmxlUGFyYW1zXHJcbiAgICB9ID0gdGFibGVQcm9wcztcclxuXHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN0b3JlOiB0cmVlU3RvcmUgPSB7fSxcclxuICAgICAgc2hvd1NlYXJjaDogdHJlZVNlYXJjaCA9IHRydWUsXHJcbiAgICAgIHRpdGxlQWxpYXMgPSBcInRpdGxlXCIsXHJcbiAgICAgIC4uLm90aGVydHJlZVBhcmFtc1xyXG4gICAgfSA9IHRyZWVQcm9wcztcclxuXHJcbiAgICBsZXQgdGFibGVQYXJhbXMgPSB7IGZpbHRlckNvbHVtbiwgc3RvcmUsIC4uLm90aGVydGFibGVQYXJhbXMgfSBhcyBhbnk7XHJcbiAgICBpZiAoc2hvd1Jvd1NlbGVjdGlvbikge1xyXG4gICAgICB0YWJsZVBhcmFtcyA9IHtcclxuICAgICAgICAuLi50YWJsZVBhcmFtcyxcclxuICAgICAgICByb3dTZWxlY3Rpb246IHtcclxuICAgICAgICAgIHNlbGVjdGVkUm93S2V5czogdGhpcy5zdGF0ZS5zZWxlY3RlZFJvd0tleXMsXHJcbiAgICAgICAgICBvbkNoYW5nZTogKHNlbGVjdGVkUm93S2V5cywgc2VsZWN0ZWRSb3dzKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgc2VsZWN0ZWRSb3dLZXlzU3RvcmUsIHNlbGVjdGVkUm93RGF0YXNTdG9yZSwgY3VycmVudFBhZ2UgfSA9XHJcbiAgICAgICAgICAgICAgdGhpcy5zdGF0ZTtcclxuICAgICAgICAgICAgY29uc3QgbmV3Um93S2V5c1N0b3JlID0ge1xyXG4gICAgICAgICAgICAgIC4uLnNlbGVjdGVkUm93S2V5c1N0b3JlLFxyXG4gICAgICAgICAgICAgIFtjdXJyZW50UGFnZV06IHNlbGVjdGVkUm93S2V5cyxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgY29uc3QgbmV3Um93RGF0YXNTdG9yZSA9IHtcclxuICAgICAgICAgICAgICAuLi5zZWxlY3RlZFJvd0RhdGFzU3RvcmUsXHJcbiAgICAgICAgICAgICAgW2N1cnJlbnRQYWdlXTogc2VsZWN0ZWRSb3dzLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICBzZWxlY3RlZFJvd0tleXM6IHRoaXMuZ2V0U2VsZWN0ZWRLZXkobmV3Um93S2V5c1N0b3JlKSxcclxuICAgICAgICAgICAgICBzZWxlY3RlZFJvd0RhdGFzOiB0aGlzLmdldFNlbGVjdGVkS2V5KG5ld1Jvd0RhdGFzU3RvcmUpLFxyXG4gICAgICAgICAgICAgIHNlbGVjdGVkUm93S2V5c1N0b3JlOiB7XHJcbiAgICAgICAgICAgICAgICAuLi5uZXdSb3dLZXlzU3RvcmUsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBzZWxlY3RlZFJvd0RhdGFzU3RvcmU6IHtcclxuICAgICAgICAgICAgICAgIC4uLm5ld1Jvd0RhdGFzU3RvcmUsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgIGNvbHVtbldpZHRoOiA0MCxcclxuICAgICAgICAgIGNoZWNrU3RyaWN0bHk6IGZhbHNlLFxyXG4gICAgICAgICAgLi4ucm93U2VsZWN0aW9uLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBsZXQgdGFibGVDb2x1bW46IGFueVtdID0gW107XHJcbiAgICBjb25zdCBzZWFyY2hGb3JtczogYW55ID0gW107XHJcbiAgICBjb25zdCBlZGl0b3JGb3JtczogYW55ID0gW107XHJcbiAgICBjb25zdCBkZWZhdWx0VmFsdWU6IGFueSA9IHt9O1xyXG4gICAgY29uc3QgY29sdW1uQnV0dG9uczogYW55ID0gW107XHJcbiAgICBjb2x1bW5zLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGxldCB0ZW1wID0geyAuLi5pdGVtIH07XHJcbiAgICAgIGlmICh0ZW1wLnNlYXJjaCkge1xyXG4gICAgICAgIHNlYXJjaEZvcm1zLnB1c2goe1xyXG4gICAgICAgICAgbmFtZTogdGVtcC5maWVsZCB8fCB0ZW1wLmRhdGFJbmRleCxcclxuICAgICAgICAgIGxhYmVsOiB0ZW1wLnRpdGxlLFxyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgcHJvcHM6IHRlbXAucHJvcHMsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgZGVsZXRlIHRlbXAuc2VhcmNoO1xyXG4gICAgICB0ZW1wLmVkaXRvciAhPT0gZmFsc2UgJiZcclxuICAgICAgICBlZGl0b3JGb3Jtcy5wdXNoKHtcclxuICAgICAgICAgIG5hbWU6IHRlbXAuZmllbGQgfHwgdGVtcC5kYXRhSW5kZXgsXHJcbiAgICAgICAgICBsYWJlbDogdGVtcC50aXRsZSxcclxuICAgICAgICAgIHJ1bGVzOiB0ZW1wLnJ1bGVzID8gdGVtcC5ydWxlcyA6IFtdLFxyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgc3BhbjogdGVtcC5zcGFuLFxyXG4gICAgICAgICAgZGljdE5hbWU6IHRlbXAuZGljdE5hbWUsXHJcbiAgICAgICAgICBwcm9wczogb21pdCh7IC4uLnRlbXAucHJvcHMgfSwgW1wiZGVmYXVsdFZhbHVlXCIsIFwidmFsdWVcIl0pLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGVtcC5wcm9wcz8uZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQgJiZcclxuICAgICAgICB0ZW1wLnByb3BzPy5kZWZhdWx0VmFsdWUgIT09IG51bGxcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29uc3QgbmFtZSA9IHRlbXAuZmllbGQgfHwgdGVtcC5kYXRhSW5kZXg7XHJcbiAgICAgICAgZGVmYXVsdFZhbHVlW25hbWVdID0gdGVtcC5wcm9wcz8uZGVmYXVsdFZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnJ1bGVzO1xyXG4gICAgICBkZWxldGUgdGVtcC5zcGFuO1xyXG4gICAgICBpZiAodGVtcC5jb2x1bW5TZWFyY2gpIHtcclxuICAgICAgICB0ZW1wLmZpbHRlclByb3BzID0ge1xyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgcHJvcHM6IHRlbXAucHJvcHMsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICBkZWxldGUgdGVtcC50eXBlO1xyXG4gICAgICBsZXQgdGVtcFByb3AgPSB7IC4uLnRlbXAucHJvcHMgfTtcclxuICAgICAgaWYgKHRlbXAuc3R5bGUpIHtcclxuICAgICAgICB0ZW1wID0ge1xyXG4gICAgICAgICAgcmVuZGVyOiAodGV4dDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgIHt0ZXh0ICE9PSBcIlwiICYmIHRleHQgIT09IG51bGwgJiYgdGV4dCAhPT0gdW5kZWZpbmVkICYmIChcclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJjb2wtYmFja1wiKX0+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJjb2wtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5nZXRUZXh0KHRlbXBQcm9wLCB0ZXh0KX1cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZWxsaXBzaXM6IHRydWUsXHJcbiAgICAgICAgICAuLi50ZW1wLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGVtcCA9IHtcclxuICAgICAgICAgIHJlbmRlcjogKHRleHQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gPD57dGhpcy5nZXRUZXh0KHRlbXBQcm9wLCB0ZXh0KX08Lz47XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4udGVtcCxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnByb3BzO1xyXG4gICAgICBpZiAodGVtcD8uY29sdW1uU2hvdyAhPT0gZmFsc2UpIHRhYmxlQ29sdW1uLnB1c2godGVtcCk7XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IHNlbGZCdXR0b25zOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IHsgYmFzZUFjdGlvbkNvbHVtbiB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgc2hvd0ljb24gPSB0cnVlO1xyXG4gICAgaWYgKGFjdGlvblBvcnBzPy5zaG93SWNvbiA9PT0gZmFsc2UpIHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBlbHNlIGlmIChiYXNlQWN0aW9uQ29sdW1uLnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGlmIChlZGl0b3JGb3JtID09IHRydWUpIHtcclxuICAgICAgaWYgKGJ1dHRvbnMuaW5kZXhPZihcInNlYXJjaFwiKSA+IC0xKSB7XHJcbiAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICBvbkNsaWNrPXsocmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAob25TaG93Rm9ybSkge1xyXG4gICAgICAgICAgICAgICAgb25TaG93Rm9ybShyZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCwgXCJkZXRhaWxcIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0Zvcm0ocmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsIFwiZGV0YWlsXCIpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICBpY29uPXs8RXllT3V0bGluZWQgLz59XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIOafpeeci1xyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoYnV0dG9ucy5pbmRleE9mKFwiZWRpdG9yXCIpID4gLTEpIHtcclxuICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eyhyZWNvcmQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChvblNob3dGb3JtKSB7XHJcbiAgICAgICAgICAgICAgICBvblNob3dGb3JtKHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLCBcImVkaXRvclwiKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5zaG93Rm9ybShyZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCwgXCJlZGl0b3JcIik7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIGljb249ezxFZGl0T3V0bGluZWQgLz59XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIOe8lui+kVxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGJ1dHRvbnMuaW5kZXhPZihcImFkZFwiKSA+IC0xKSB7XHJcbiAgICAgIHNlbGZCdXR0b25zLnB1c2goXHJcbiAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgb25TaG93Rm9ybSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICAgICAgaWYgKG9uU2hvd0Zvcm0pIHtcclxuICAgICAgICAgICAgICBvblNob3dGb3JtKCk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0Zvcm0oKTtcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgICBpY29uPXs8UGx1c091dGxpbmVkIC8+fVxyXG4gICAgICAgID5cclxuICAgICAgICAgIOa3u+WKoFxyXG4gICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgaWYgKGJ1dHRvbnMuaW5kZXhPZihcImRlbGV0ZVwiKSA+IC0xKSB7XHJcbiAgICAgIHNlbGZCdXR0b25zLnB1c2goXHJcbiAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgLy8gdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICBvbkNsaWNrPXt0aGlzLm9uRGVsZXRlLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICBpY29uPXs8SWNvbiB0eXBlPXtpY29uVHlwZS5kZWxldGUzfSAvPn1cclxuICAgICAgICAgIGRhbmdlclxyXG4gICAgICAgID5cclxuICAgICAgICAgIOWIoOmZpFxyXG4gICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIikge1xyXG4gICAgICAgICAgc2VsZkJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNsb3VtbkJ1dHRvblwiKSB7XHJcbiAgICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgY29uc3QgeyBwcm9wcyB9OiBhbnkgPSBjaGlsZHJlbjtcclxuICAgICAgaWYgKHByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIikge1xyXG4gICAgICAgIHNlbGZCdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9IGVsc2UgaWYgKHByb3BzPy5wYWdlVHlwZSA9PSBcImNsb3VtbkJ1dHRvblwiKSB7XHJcbiAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgYWN0aW9uQ29sdW1uICYmXHJcbiAgICAgIHRhYmxlQ29sdW1uLnB1c2goe1xyXG4gICAgICAgIHRpdGxlOiBcIuaTjeS9nFwiLFxyXG4gICAgICAgIGRhdGFJbmRleDogXCJhY3Rpb25cIixcclxuICAgICAgICBhbGlnbjogYWN0aW9uUG9ycHM/LnRleHRBbGlnblxyXG4gICAgICAgICAgPyBhY3Rpb25Qb3Jwcz8udGV4dEFsaWduXHJcbiAgICAgICAgICA6IGJhc2VBY3Rpb25Db2x1bW4udGV4dEFsaWduXHJcbiAgICAgICAgICA/IGJhc2VBY3Rpb25Db2x1bW4udGV4dEFsaWduXHJcbiAgICAgICAgICA6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgd2lkdGg6IGFjdGlvblBvcnBzPy53aWR0aFxyXG4gICAgICAgICAgPyBhY3Rpb25Qb3Jwcz8ud2lkdGhcclxuICAgICAgICAgIDogYmFzZUFjdGlvbkNvbHVtbi53aWR0aFxyXG4gICAgICAgICAgPyBiYXNlQWN0aW9uQ29sdW1uLndpZHRoXHJcbiAgICAgICAgICA6IDIwMCxcclxuICAgICAgICBmaXhlZDogXCJyaWdodFwiLFxyXG4gICAgICAgIGVsbGlwc2lzOiB0cnVlLFxyXG4gICAgICAgIHJlbmRlcjogKHRleHQ6IGFueSwgcmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJhY3Rpb25cIil9PlxyXG4gICAgICAgICAgICAgIHt0aGlzLnJlbmRlckNsb3VtbkJ1dHRvbihjb2x1bW5CdXR0b25zLCByZWNvcmQpfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICBjb25zdCBoZWFkZXJDb3VudCA9IHRvb2xCdXR0b25Qb3NpdGlvbiA9PSBcInJpZ2h0XCIgPyAxIDogMjtcclxuICAgIGNvbnN0IGhlYWRlclJvdXQgPSBzZWFyY2hGb3Jtcy5sZW5ndGggJSA0O1xyXG4gICAgbGV0IGNvbFNwYW4gPSAwO1xyXG4gICAgaWYgKGhlYWRlclJvdXQgPT0gMCkge1xyXG4gICAgICBjb2xTcGFuID0gMTg7XHJcbiAgICB9IGVsc2UgaWYgKGhlYWRlclJvdXQgPT0gMSkge1xyXG4gICAgICBjb2xTcGFuID0gMTI7XHJcbiAgICB9IGVsc2UgaWYgKGhlYWRlclJvdXQgPT0gMikge1xyXG4gICAgICBjb2xTcGFuID0gNjtcclxuICAgIH1cclxuICAgIGlmIChjb2x1bW5PcmRlcilcclxuICAgICAgdGFibGVDb2x1bW4gPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGl0bGU6IFwi5bqP5Y+3XCIsXHJcbiAgICAgICAgICB3aWR0aDogODAsXHJcbiAgICAgICAgICBhbGlnbjogXCJjZW50ZXJcIixcclxuICAgICAgICAgIHJlbmRlcjogKHRleHQsIHJlYWNvcmQsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiA8PntpbmRleCArIDF9PC8+O1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLnRhYmxlQ29sdW1uLFxyXG4gICAgICBdO1xyXG5cclxuICAgIGlmICh0YWJsZVByb3BzLnBhZ2luYXRpb24gIT09IGZhbHNlKSB7XHJcbiAgICAgIC8vIHNjcm9sbD17eyB4OiBcIm1heC1jb250ZW50XCIsIHk6IFwiMjV2d1wiIH19XHJcbiAgICAgIC8v6K6h566X6KGo5qC86auY5bqmXHJcbiAgICAgIGxldCB0YWJsZUhlaWdodCA9IGRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0IC0gMTYwOyAvL+aVtOS9k+mhtemdoumrmOW6pixsYXlvdXTlpLTpg6jvvIxwYWRkaW5nXHJcbiAgICAgIGlmICh0aGlzLnByb3BzLnBhZ2VUaXRsZSkge1xyXG4gICAgICAgIHRhYmxlSGVpZ2h0ID0gdGFibGVIZWlnaHQgLSA1ODsgLy/lh4/ljrvpobXpnaLmoIfpopjpq5jluqZcclxuICAgICAgfVxyXG4gICAgICBpZiAoc2hvd1NlYXJjaCkge1xyXG4gICAgICAgIHRhYmxlSGVpZ2h0ID0gdGFibGVIZWlnaHQgLSA2ODsgLy/lh4/ljrvmkJzntKLmoI/pq5jluqZcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5wcm9wcy5zaG93VG9vbEJ1dHRvbikge1xyXG4gICAgICAgIC8v5YeP5Y675bel5YW35qCP6auY5bqmXHJcbiAgICAgICAgdGFibGVIZWlnaHQgPSB0YWJsZUhlaWdodCAtIDQyO1xyXG4gICAgICB9XHJcbiAgICAgIHRhYmxlSGVpZ2h0ID0gdGFibGVIZWlnaHQgLSA1NSAtIDc1OyAvL+WHj+WOu+ihqOWktOWSjOWIhumggemrmOW6plxyXG4gICAgICB0YWJsZVBhcmFtcyA9IHtcclxuICAgICAgICBzY3JvbGw6IHsgeDogXCJtYXgtY29udGVudFwiLCB5OiB0YWJsZUhlaWdodCB9LFxyXG4gICAgICAgIC4uLnRhYmxlUGFyYW1zLFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJwYWdlXCIpLCBjbGFzc05hbWUpfT5cclxuICAgICAgICB7dGhpcy5wcm9wcy5wYWdlVGl0bGUgJiYgKFxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJwYWdlLXRpdGxlXCIpKX0+XHJcbiAgICAgICAgICAgIHt0aGlzLnByb3BzLnBhZ2VUaXRsZX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICl9XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwicGFnZS1wYW5lXCIpKX1cclxuICAgICAgICAgIHN0eWxlPXt7IGRpc3BsYXk6IFwiZmxleFwiIH19XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3Nob3dMZWZ0ICYmIChcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImxlZnRcIil9PlxyXG4gICAgICAgICAgICAgIDxUcmVlXHJcbiAgICAgICAgICAgICAgICBzdG9yZT17eyAuLi50cmVlU3RvcmUgfX1cclxuICAgICAgICAgICAgICAgIHNob3dJY29uPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgIGNoZWNrYWJsZT17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICBzZWFyY2hhYmxlPXt0cmVlU2VhcmNofVxyXG4gICAgICAgICAgICAgICAgb25TZWxlY3Q9e3RoaXMudHJlZVNlbGVjdC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRLZXlzPXtbdGhpcy5zdGF0ZS50cmVlU2VsZWN0ZWRLZXldfVxyXG4gICAgICAgICAgICAgICAgdGl0bGVBbGlhcz17dGl0bGVBbGlhc31cclxuICAgICAgICAgICAgICAgIHsuLi5vdGhlcnRyZWVQYXJhbXN9XHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJyaWdodFwiKSwge1xyXG4gICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuby1sZWZ0LXJpZ2h0XCIpXTogIXNob3dMZWZ0LFxyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3Nob3dTZWFyY2ggJiYgKFxyXG4gICAgICAgICAgICAgIDxSb3cgZ3V0dGVyPXsyNH0gd3JhcD5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJoZWFkZXJcIil9PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcImZvcm1cIikpfT5cclxuICAgICAgICAgICAgICAgICAgICB7LyogPFJvdyBndXR0ZXI9ezI0fSB3cmFwIHN0eWxlPXt7bWFyZ2luOjB9fT4gKi99XHJcbiAgICAgICAgICAgICAgICAgICAgPEZvcm1cclxuICAgICAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy5zZWFyY2hSZWZ9XHJcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbENvbD17e319XHJcbiAgICAgICAgICAgICAgICAgICAgICB3cmFwcGVyQ29sPXt7fX1cclxuICAgICAgICAgICAgICAgICAgICAgIGxheW91dD1cImlubGluZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyB3aWR0aDogXCIxMDAlXCIgfX1cclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7c2VhcmNoRm9ybXMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbVByb3BzID0gaXRlbS5wcm9wcyB8fCB7fTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1Qcm9wcy52YWx1ZUZvcm1hdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUZvcm1hdFtpdGVtLm5hbWVdID0gaXRlbVByb3BzLnZhbHVlRm9ybWF0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA+IGhlYWRlckNvdW50ICYmICF0aGlzLnN0YXRlLmV4cGFuZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYWxsb3dDaGFycyA9IGl0ZW0/LnByb3BzPy5hbGxvd0NoYXJzIHx8IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHJvcHMgPSB7IC4uLml0ZW1Qcm9wcyB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWl0ZW0udHlwZSB8fCBpdGVtLnR5cGUgPT0gXCJJbnB1dFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuYWxsb3dDaGFycyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Q29sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZD17eyBzcGFuOiAxMiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc209e3sgc3BhbjogMjQgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxnPXt7IHNwYW46IDYgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBwYWRkaW5nUmlnaHQ6IDAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybS5JdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtpdGVtLmxhYmVsfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPXtpdGVtLm5hbWV9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93Q2hhcnM9e2FsbG93Q2hhcnN9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtnZXROb2RlKGl0ZW0udHlwZSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBg6K+36L6T5YWlJHtpdGVtLmxhYmVsfWAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHJvcHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Gb3JtLkl0ZW0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Db2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLnN0YXRlLmV4cGFuZCAmJiBjb2xTcGFuID4gMCAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxDb2xcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBtZD17eyBzcGFuOiAwIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc209e3sgc3BhbjogMCB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxnPXt7IHNwYW46IGNvbFNwYW4gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBwYWRkaW5nUmlnaHQ6IDAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvQ29sPlxyXG4gICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgIDxDb2xcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWQ9e3sgc3BhbjogMTIgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgc209e3sgc3BhbjogMjQgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgbGc9e3sgc3BhbjogdG9vbEJ1dHRvblBvc2l0aW9uID09IFwicmlnaHRcIiA/IDEyIDogNiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBwYWRkaW5nUmlnaHQ6IDAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwic2VhcmNoLWJ1dHRvbnNcIil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgbWFyZ2luVG9wOiAwIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMub25TZWFyY2guYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249ezxTZWFyY2hPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IG1hcmdpbkxlZnQ6IDAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICDmn6Xor6JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMucmVzZXRTZWFyY2guYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249ezxSZWxvYWRPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICDph43nva5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7c2hvd1Rvb2xCdXR0b24gJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbiA9PSBcInJpZ2h0XCIgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyVG9vbEJ1dHRvbnMoc2VsZkJ1dHRvbnMpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtzZWFyY2hGb3Jtcy5sZW5ndGggPiAzICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJhX3N0eWxlXCIpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBleHBhbmQgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBhbmQ6ICFleHBhbmQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLnN0YXRlLmV4cGFuZCA/IFwi5pS26LW3XCIgOiBcIuWxleW8gFwifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5zdGF0ZS5leHBhbmQgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFVwT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RG93bk91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvQ29sPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvRm9ybT5cclxuICAgICAgICAgICAgICAgICAgICB7LyogPC9Sb3c+ICovfVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvUm93PlxyXG4gICAgICAgICAgICApfVxyXG5cclxuICAgICAgICAgICAge3Nob3dUb29sQnV0dG9uICYmXHJcbiAgICAgICAgICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uID09IFwiYnV0dG9tXCIgJiZcclxuICAgICAgICAgICAgICB0aGlzLnJlbmRlclRvb2xCdXR0b25zKHNlbGZCdXR0b25zLCBzZWFyY2hGb3Jtcy5sZW5ndGggPT0gMCl9XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwidGFibGVcIikpfT5cclxuICAgICAgICAgICAgICA8VGFibGVcclxuICAgICAgICAgICAgICAgIHJlZj17dGhpcy50YWJsZVJlZn1cclxuICAgICAgICAgICAgICAgIGNvbHVtbnM9e3RhYmxlQ29sdW1ufVxyXG4gICAgICAgICAgICAgICAgZXhwYW5kYWJsZT17e1xyXG4gICAgICAgICAgICAgICAgICBleHBhbmRJY29uOiAoeyBleHBhbmRlZCwgb25FeHBhbmQsIHJlY29yZCB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtleHBhbmRlZCA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8RG93bk91dGxpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4gb25FeHBhbmQocmVjb3JkLCBlKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiZXhwYW5kLWljb25cIil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuY2hpbGROb2RlcyAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmlnaHRPdXRsaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4gb25FeHBhbmQocmVjb3JkLCBlKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJleHBhbmQtaWNvblwiKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgLi4uZXhwYW5kYWJsZSxcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICBjb2x1bW5PcmRlcj17dHJ1ZX1cclxuICAgICAgICAgICAgICAgIGJvcmRlcmVkPXt0cnVlfVxyXG4gICAgICAgICAgICAgICAgLy8gc2l6ZT17dGhpcy5zdGF0ZS50YWJsZVNpemV9XHJcbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHBhZ2luYXRpb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgY29uc3QgeyBjdXJyZW50UGFnZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRQYWdlICE9PSBwYWdpbmF0aW9uLmN1cnJlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQYWdlOiBwYWdpbmF0aW9uLmN1cnJlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICB0b29sYmFyPXt7XHJcbiAgICAgICAgICAgICAgICAgIG9uVG9vbENsaWNrOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgb25SZWZyZXNoOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB0aGlzLmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUxvYWQocGFyYW1zKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAuLi50YWJsZVByb3BzLnRvb2xiYXIsXHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgey4uLnRhYmxlUGFyYW1zfVxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICB7ZWRpdG9yRm9ybSAmJiAoXHJcbiAgICAgICAgICAgIDxFZGl0b3JGb3JtXHJcbiAgICAgICAgICAgICAgcmVmPXt0aGlzLmVkaXRvclJlZn1cclxuICAgICAgICAgICAgICBjYWxsQmFjaz17dGhpcy50YWJsZVJlbG9hZC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgIGZvcm1Qcm9wcz17ZWRpdG9yRm9ybXN9XHJcbiAgICAgICAgICAgICAgc3VibWl0VXJsPXtzdWJtaXRVcmx9XHJcbiAgICAgICAgICAgICAgc3VibWl0UGFyYW1zPXtzdWJtaXRQYXJhbXN9XHJcbiAgICAgICAgICAgICAgb25TdWJtaXQ9e3RoaXMucHJvcHMub25TdWJtaXR9XHJcbiAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlPXtkZWZhdWx0VmFsdWV9XHJcbiAgICAgICAgICAgICAgb25IaWRlRm9ybT17dGhpcy5wcm9wcy5vbkhpZGVGb3JtfVxyXG4gICAgICAgICAgICAgIG9uRm9ybUNoYW5nZT17dGhpcy5wcm9wcy5vbkZvcm1DaGFuZ2V9XHJcbiAgICAgICAgICAgICAgZm9ybVR5cGU9e3RoaXMucHJvcHMuZm9ybVR5cGUgfHwgXCJhdXRvXCJ9XHJcbiAgICAgICAgICAgICAgY2hhbmdlVmFsaWQ9e2Zvcm1DaGFuZ2VWYWxpZH1cclxuICAgICAgICAgICAgICBvdGhlclByb3BzPXt7IC4uLmZvcm1Qcm9wcyB9fVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG5leHBvcnQgZGVmYXVsdCBCYXNlUGFnZTtcclxuIl19
@@ -5,7 +5,7 @@
5
5
  border-radius: 10px;
6
6
  .page-title {
7
7
  padding: 20px 20px 0px 20px;
8
- font-size: 24px;
8
+ font-size: 20px;
9
9
  font-family: PingFangSC-Semibold, PingFang SC;
10
10
  font-weight: 600;
11
11
  color: #333333;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nsc-react-component",
3
- "version": "2.7.10",
3
+ "version": "2.7.11",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {