single-scripture-rcl 3.4.5 → 3.4.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -365,7 +365,7 @@ export default function ScriptureCard(_ref2) {
365
365
  useBranchMerger: _useBranchMerger,
366
366
  onUpdate: function onUpdate() {
367
367
  delay(500).then(function () {
368
- return scriptureConfig === null || scriptureConfig === void 0 ? void 0 : scriptureConfig.reloadResource(sha);
368
+ return scriptureConfig === null || scriptureConfig === void 0 ? void 0 : scriptureConfig.reloadResource();
369
369
  });
370
370
  }
371
371
  });
@@ -1564,4 +1564,4 @@ ScriptureCard.propTypes = {
1564
1564
  /** use method for using local storage specific for user */
1565
1565
  useUserLocalStorage: PropTypes.func.isRequired
1566
1566
  };
1567
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NjcmlwdHVyZUNhcmQvU2NyaXB0dXJlQ2FyZC50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJQcm9wVHlwZXMiLCJjb3JlIiwiU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciIsInVzZm1qcyIsInVzZUVkaXQiLCJJY29uQnV0dG9uIiwiUnhMaW5rMiIsIlJ4TGlua0JyZWFrMiIsIkNhcmQiLCJFcnJvckRpYWxvZyIsIkVSUk9SX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsIlVwZGF0ZUJyYW5jaEJ1dHRvbiIsInVzZUJyYW5jaE1lcmdlciIsInVzZUNhcmRTdGF0ZSIsInVzZUNvbnRlbnRVcGRhdGVQcm9wcyIsInVzZU1hc3Rlck1lcmdlUHJvcHMiLCJ1c2VVc2VyQnJhbmNoIiwiZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIiwiQWxpZ25tZW50SGVscGVycyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJpc0VxdWFsIiwiZ2V0VmVyc2VzIiwiU2NyaXB0dXJlUGFuZSIsIlNjcmlwdHVyZVNlbGVjdG9yIiwidXNlU2NyaXB0dXJlU2V0dGluZ3MiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwiZml4T2NjdXJyZW5jZSIsImdldFJlc291cmNlTGluayIsImdldFJlc291cmNlTWVzc2FnZSIsImdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyIsImlzT3JpZ2luYWxCaWJsZSIsImRlbGF5IiwiYXJlTWFwc1RoZVNhbWUiLCJUaXRsZSIsIk5UX09SSUdfTEFORyIsIk9SSUdJTkFMX1NPVVJDRSIsIk9UX09SSUdfTEFORyIsIlZlcnNlU2VsZWN0b3JQb3B1cCIsIktFWV9GT05UX1NJWkVfQkFTRSIsImxhYmVsIiwic3R5bGUiLCJtYXJnaW5Ub3AiLCJ3aWR0aCIsImNvbXBhcmVPYmplY3QiLCJ2ZXJzZVJlZiIsImNoYXB0ZXIiLCJ2ZXJzZSIsInZlcnNlRGF0YSIsInZlcnNlT2JqZWN0cyIsImxlbmd0aCIsIkpTT04iLCJzdHJpbmdpZnkiLCJhcmVWZXJzZXNTYW1lIiwidmVyc2VzRm9yUmVmMSIsInZlcnNlc0ZvclJlZjIiLCJhcmVTYW1lIiwiaSIsImwiLCJ2ZXJzZTEiLCJ2ZXJzZTIiLCJnZXRDdXJyZW50Qm9vayIsInNjcmlwdHVyZUNvbmZpZyIsImJvb2tJZCIsImxhdGVzdEJpYmxlIiwiYm9va09iamVjdHMiLCJmaWxlbmFtZSIsIm5hbWUiLCJyZWdleCIsImlzQm9va1ZhbGlkIiwiYm9va05hbWUiLCJtYXRjaCIsInRvTG93ZXJDYXNlIiwiaW5jbHVkZXMiLCJiaWJsZVVzZm0iLCJjb25zb2xlIiwiZXJyb3IiLCJTY3JpcHR1cmVDYXJkIiwiYXBwUmVmIiwiYXV0aGVudGljYXRpb24iLCJib29rSW5kZXgiLCJjYXJkTnVtIiwiY2xhc3NlcyIsImRpc2FibGVXb3JkUG9wb3ZlciIsImdldExhbmd1YWdlIiwiZ2V0TGV4aWNvbkRhdGEiLCJncmVla1JlcG9VcmwiLCJoZWJyZXdSZXBvVXJsIiwiaHR0cENvbmZpZyIsImlkIiwiaXNOVCIsImxvZ2dlZEluVXNlciIsIm9uTWluaW1pemUiLCJvblJlc291cmNlRXJyb3IiLCJvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzIiwicmVmZXJlbmNlIiwicmVzb3VyY2UiLCJvd25lciIsImxhbmd1YWdlSWQiLCJyZXNvdXJjZUlkIiwib3JpZ2luYWxMYW5ndWFnZU93bmVyIiwicmVzb3VyY2VMaW5rIiwic2VsZWN0ZWRRdW90ZSIsInNlcnZlciIsInNldENhcmRzTG9hZGluZ01lcmdlIiwic2V0Q2FyZHNMb2FkaW5nVXBkYXRlIiwic2V0Q2FyZHNTYXZpbmciLCJzZXRTYXZlZENoYW5nZXMiLCJzZXRXb3JkQWxpZ25lclN0YXR1cyIsInRyYW5zbGF0ZSIsInRpdGxlIiwidXNlVXNlckxvY2FsU3RvcmFnZSIsInVwZGF0ZU1lcmdlU3RhdGUiLCJwcm9qZWN0SWQiLCJ1c2VTdGF0ZSIsImNoZWNrRm9yRWRpdEJyYW5jaCIsImN1cnJlbnRSZWZlcmVuY2UiLCJlZGl0QnJhbmNoUmVhZHkiLCJoYXZlVW5zYXZlZENoYW5nZXMiLCJsYXN0U2VsZWN0ZWRRdW90ZSIsInJlYWR5Rm9yRmV0Y2giLCJyZWYiLCJzYXZlQ2xpY2tlZCIsInNhdmVDb250ZW50Iiwic2VsZWN0aW9ucyIsIk1hcCIsInNoYSIsInNob3dBbGlnbm1lbnRQb3B1cCIsInN0YXJ0U2F2ZSIsInVybEVycm9yIiwidXNpbmdVc2VyQnJhbmNoIiwidW5zYXZlZENoYW5nZXNMaXN0IiwidmVyc2VzQWxpZ25tZW50U3RhdHVzIiwidmVyc2VzRm9yUmVmIiwidmVyc2VPYmplY3RzTWFwIiwidmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCIsInN0YXRlIiwic2V0U3RhdGVfIiwiZm9udFNpemUiLCJzZXRGb250U2l6ZSIsImlzTlRfIiwic2V0U3RhdGUiLCJuZXdTdGF0ZSIsInByZXZTdGF0ZSIsImNhY2hlIiwibWF4QWdlIiwibm9DYWNoZSIsInNldFVybEVycm9yIiwid2hvbGVCb29rIiwiaXNOZXdUZXN0YW1lbnQiLCJzZXRTY3JpcHR1cmUiLCJzY3JpcHR1cmVTZXR0aW5ncyIsInNjcmlwdHVyZVZlcnNpb25IaXN0IiwiZmV0Y2hSZXNwXyIsImZldGNoUmVzcG9uc2UiLCJyZXBvIiwicmVmZXJlbmNlXyIsInVzZUVmZmVjdCIsIl9zaGEiLCJkYXRhIiwidXJsIiwiZG93bmxvYWRfdXJsIiwidmFsaWRCcmFuY2giLCJwYXJ0cyIsInNwbGl0IiwiZmV0Y2hCcmFuY2giLCJsb2ciLCJjYXJkUmVzb3VyY2VJZCIsInJlZl8iLCJjYW5Vc2VFZGl0QnJhbmNoIiwiY2FyZElkIiwiYnJhbmNoRGV0ZXJtaW5lZCIsInVzZXJFZGl0QnJhbmNoTmFtZSIsIl91c2luZ1VzZXJCcmFuY2giLCJ3b3JraW5nUmVzb3VyY2VCcmFuY2giLCJhY3Rpb25zIiwic3RhcnRFZGl0QnJhbmNoIiwic3RhcnRFZGl0IiwiZmluaXNoRWRpdCIsIl91c2VCcmFuY2hNZXJnZXIiLCJ1c2VyQnJhbmNoIiwidG9rZW5pZCIsInRva2VuIiwic2hhMSIsIm1lcmdlVG9NYXN0ZXIiLCJtZXJnZVN0YXR1cyIsIm1lcmdlRnJvbU1hc3RlciIsInVwZGF0ZVN0YXR1cyIsInVwZGF0ZUJ1dHRvblByb3BzIiwiaXNTYXZpbmciLCJvblVwZGF0ZSIsInRoZW4iLCJyZWxvYWRSZXNvdXJjZSIsImNhbGxVcGRhdGVVc2VyQnJhbmNoIiwiaXNFcnJvckRpYWxvZ09wZW4iLCJvbkNsb3NlRXJyb3JEaWFsb2ciLCJpc1VwZGF0ZUxvYWRpbmciLCJpc0xvYWRpbmciLCJkaWFsb2dNZXNzYWdlIiwiZGlhbG9nVGl0bGUiLCJkaWFsb2dMaW5rIiwiZGlhbG9nTGlua1Rvb2x0aXAiLCJvbk1lcmdlIiwiaXNNZXJnZUxvYWRpbmciLCJjYWxsTWVyZ2VVc2VyQnJhbmNoIiwicHJldkNhcmRzTG9hZGluZyIsImZpbHRlciIsIndvcmtpbmdSZWYiLCJzY3JpcHR1cmVUaXRsZSIsInJlc291cmNlU3RhdHVzIiwibWVzc2FnZSIsImlzQWNjZXNzRXJyb3IiLCJ2ZXJzaW9uIiwidXBkYXRlVGl0bGUiLCJnZXRTY3JpcHR1cmVTZWxlY3RvciIsInNjcmlwdHVyZVNlbGVjdGlvbkNvbmZpZyIsIm9uTWVudUNsb3NlIiwibGFuZ3VhZ2VJZF8iLCJsYW5ndWFnZSIsImRpcmVjdGlvbiIsIl9yZWZlcmVuY2UiLCJpc0hlYnJldyIsImZvbnRGYWN0b3IiLCJzY2FsZWRGb250U2l6ZSIsIml0ZW1zIiwiaGVhZGVycyIsImZpbHRlcnMiLCJpdGVtSW5kZXgiLCJtYXJrZG93blZpZXciLCJzZXRGaWx0ZXJzIiwic2V0SXRlbUluZGV4Iiwic2V0TWFya2Rvd25WaWV3IiwicmVmU3R5bGUiLCJ1c2VNZW1vIiwiZm9udEZhbWlseSIsIk1hdGgiLCJyb3VuZCIsImNvbnRlbnRTdHlsZSIsInNjcmlwdHVyZUxhYmVsIiwiZGlzYWJsZVdvcmRQb3BvdmVyXyIsInVzaW5nT3JpZ2luYWxCaWJsZSIsInVuZGVmaW5lZCIsImVuYWJsZUVkaXQiLCJlbmFibGVBbGlnbm1lbnQiLCJvcmlnaW5hbFJlcG9VcmwiLCJzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnIiwiY3VycmVudFZlcnNlUmVmIiwiX3NldFNhdmVkQ2hhbmdlcyIsInNvdXJjZUxhbmd1YWdlIiwidGFyZ2V0TGFuZ3VhZ2UiLCJjdXJyZW50SW5kZXgiLCJzYXZlZCIsImdldENoYW5nZXMiLCJjbGVhckNoYW5nZXMiLCJfdW5zYXZlZENoYW5nZXNMaXN0IiwiaGFzT3duUHJvcGVydHkiLCJfaGF2ZVVuc2F2ZWRDaGFuZ2VzIiwiT2JqZWN0Iiwia2V5cyIsImZpbmRSZWZJbkFycmF5IiwiZmluZEl0ZW0iLCJjaHVua3MiLCJyZWZMZW4iLCJpbmRleCIsImZpbmRJbmRleCIsImNodW5rIiwiaWR4Iiwic3Vic3RyaW5nIiwibmV4dENoYXIiLCJnZXRCb29rTmFtZSIsImJvb2tDYXBzIiwidG9VcHBlckNhc2UiLCJmaWxlcGF0aCIsImNvbnRlbnQiLCJjb25maWciLCJkb250Q3JlYXRlQnJhbmNoIiwidGltZW91dCIsInNlcnZlclRpbWVPdXQiLCJhdXRob3IiLCJicmFuY2giLCJzYXZlRXJyb3IiLCJpc1NhdmVFcnJvciIsImlzRXJyb3IiLCJvblNhdmVFZGl0IiwiX3NhdmVFZGl0IiwiaW5mbyIsInN1Y2Nlc3MiLCJwcmV2Q2FyZHNTYXZpbmciLCJ1bnNhdmVkQ2FyZEluZGljZXMiLCJjYXJkSW5kZXgiLCJtZXJnZVZlcnNlT2JqZWN0c0ludG9CaWJsZVVzZm0iLCJ1cGRhdGVkVmVyc2VPYmplY3RzIiwibmV3VXNmbSIsImNoYXB0ZXJDaHVua3MiLCJjaGFwdGVySW5kZXgiLCJjdXJyZW50Q2hhcHRlciIsInZlcnNlQ2h1bmtzIiwidmVyc2VJbmRleCIsIm5ld1ZlcnNlVXNmbSIsImNvbnZlcnRWZXJzZURhdGFUb1VTRk0iLCJvbGRWZXJzZSIsInZlcnNlTnVtTGVuIiwibmV3Q2hhcHRlciIsImpvaW4iLCJnZXRSZWFkeUZvclNhdmUiLCJjcmVhdGVFZGl0QnJhbmNoIiwid2FybiIsIm1lcmdlRmFpbCIsInBhcnNlSW50IiwibmV3VmVyc2VUZXh0IiwidGFyZ2V0VmVyc2VPYmplY3RzXyIsInVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlIiwidGFyZ2V0VmVyc2VPYmplY3RzIiwibmV3Qm9va0pzb24iLCJ1cGRhdGVWZXJzZSIsInRvVVNGTSIsImZvcmNlZE5ld0xpbmVzIiwiX3ZlcnNlc0ZvclJlZiIsIm5ld1NlbGVjdGlvbnMiLCJ1cGRhdGVTZWxlY3Rpb25zIiwiX21hcCIsIm9yaWdpbmFsQm9va0lkIiwiYm9va1ZlcnNlT2JqZWN0IiwiY2hhcHRlcnMiLCJuZXdTZWxlY3RlZFF1b3RlIiwicXVvdGUiLCJvcmlnaW5hbFZlcnNlcyIsInN1YnN0aXR1dGUiLCJzdGFydFZlcnNlIiwibGFzdFZlcnNlIiwiX3ZlcnNlIiwidmVyc2VzIiwidmVyc2VJdGVtIiwidm8iLCJjb25jYXQiLCJzZXQiLCJzdWJSZWYiLCJxdW90ZU1hdGNoZXMiLCJib29rT2JqZWN0Iiwib2NjdXJyZW5jZSIsInNpemUiLCJmb3JFYWNoIiwid29yZHMiLCJrZXkiLCJfa2V5IiwibWFwIiwid29yZCIsInRleHQiLCJub3JtYWxpemVTdHJpbmciLCJib29rc05vdFNhbWUiLCJ1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXMiLCJhbGlnbmVkIiwicmVuZGVyZWRTY3JpcHR1cmVQYW5lcyIsIl9jdXJyZW50VmVyc2VEYXRhIiwiaW5pdGlhbFZlcnNlT2JqZWN0cyIsIl9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnIiwiaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50IiwiaGFuZGxlQWxpZ25CdXR0b25DbGljayIsIm9uUmVuZGVyVG9vbGJhciIsIm5ld0l0ZW1zIiwiYWxsVmVyc2VzQWxpZ25lZCIsInZhbHVlcyIsImV2ZXJ5IiwiYWxpZ25TdGF0dXMiLCJhbGlnbkljb24iLCJhbGlnbkJ1dHRvblRleHQiLCJwdXNoIiwiY3Vyc29yIiwicHJvcFR5cGVzIiwic3RyaW5nIiwiaXNSZXF1aXJlZCIsIm9iamVjdCIsIm51bWJlciIsImJvb2wiLCJmdW5jIiwic2hhcGUiLCJvbmVPZlR5cGUiLCJhbnkiLCJzZXRBcmVSZXNvdXJjZXNMb2FkaW5nIiwic2V0QXJlUmVzb3VyY2VzU2F2aW5nIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBS0EsS0FBWixNQUF1QixPQUF2QjtBQUNBLE9BQU8sS0FBS0MsU0FBWixNQUEyQixZQUEzQjtBQUNBLFNBQVNDLElBQVQsRUFBZUMseUJBQWYsUUFBZ0QseUJBQWhEO0FBQ0EsT0FBT0MsTUFBUCxNQUFtQixTQUFuQjtBQUNBLFNBQVNDLE9BQVQsUUFBd0IscUJBQXhCO0FBQ0EsU0FBU0MsVUFBVCxRQUEyQixlQUEzQjtBQUNBLFNBQVNDLE9BQVQsRUFBa0JDLFlBQWxCLFFBQXNDLGdCQUF0QztBQUNBLFNBQ0VDLElBREYsRUFFRUMsV0FGRixFQUdFQyxXQUhGLEVBSUVDLHlCQUpGLEVBS0VDLGtCQUxGLEVBTUVDLGVBTkYsRUFPRUMsWUFQRixFQVFFQyxxQkFSRixFQVNFQyxtQkFURixFQVVFQyxhQVZGLFFBV08sdUJBWFAsQyxDQVlBOztBQUNBLFNBQVNDLHdCQUFULFFBQXlDLGtCQUF6QztBQUNBLFNBQVNDLGdCQUFULEVBQTJCQyx5QkFBM0IsUUFBNEQsa0JBQTVEO0FBQ0EsT0FBTyxLQUFLQyxPQUFaLE1BQXlCLFlBQXpCO0FBQ0EsU0FBU0MsU0FBVCxRQUEwQix1QkFBMUI7QUFDQSxTQUFTQyxhQUFULEVBQXdCQyxpQkFBeEIsUUFBaUQsSUFBakQ7QUFDQSxTQUFTQyxvQkFBVCxRQUFxQyxrQ0FBckM7QUFDQSxTQUNFQyxtQkFERixFQUVFQyxhQUZGLEVBR0VDLGVBSEYsRUFJRUMsa0JBSkYsRUFLRUMsMkJBTEYsRUFNRUMsZUFORixRQU9PLCtCQVBQO0FBUUEsU0FBU0MsS0FBVCxRQUFzQixtQkFBdEI7QUFDQSxTQUFTQyxjQUFULFFBQStCLGtCQUEvQjtBQUNBLFNBQVNDLEtBQVQsUUFBc0IseUJBQXRCO0FBQ0EsU0FDRUMsWUFERixFQUVFQyxlQUZGLEVBR0VDLFlBSEYsUUFJTyxhQUpQO0FBS0EsU0FBU0Msa0JBQVQsUUFBbUMsdUJBQW5DO0FBRUEsSUFBTUMsa0JBQWtCLEdBQUcsd0JBQTNCO0FBQ0EsSUFBTUMsS0FBSyxHQUFHLFNBQWQ7QUFDQSxJQUFNQyxLQUFLLEdBQUc7QUFBRUMsRUFBQUEsU0FBUyxFQUFFLE1BQWI7QUFBcUJDLEVBQUFBLEtBQUssRUFBRTtBQUE1QixDQUFkO0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsU0FBU0MsYUFBVCxDQUF1QkMsUUFBdkIsRUFBaUM7QUFBQTs7QUFBQSxhQUszQkEsUUFBUSxJQUFJLEVBTGU7QUFBQSxNQUU3QkMsT0FGNkIsUUFFN0JBLE9BRjZCO0FBQUEsTUFHN0JDLEtBSDZCLFFBRzdCQSxLQUg2QjtBQUFBLE1BSTdCQyxTQUo2QixRQUk3QkEsU0FKNkI7O0FBTS9CLE1BQU1DLFlBQVksR0FBR0QsU0FBUyxTQUFULElBQUFBLFNBQVMsV0FBVCw2QkFBQUEsU0FBUyxDQUFFQyxZQUFYLHdFQUF5QkMsTUFBekIsR0FBa0NDLElBQUksQ0FBQ0MsU0FBTCxDQUFlSixTQUFTLENBQUNDLFlBQXpCLENBQWxDLEdBQTJFLEVBQWhHO0FBQ0EsU0FBTztBQUNMSCxJQUFBQSxPQUFPLEVBQVBBLE9BREs7QUFFTEMsSUFBQUEsS0FBSyxFQUFMQSxLQUZLO0FBR0xFLElBQUFBLFlBQVksRUFBWkE7QUFISyxHQUFQO0FBS0Q7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQSxTQUFTSSxhQUFULENBQXVCQyxhQUF2QixFQUE2Q0MsYUFBN0MsRUFBbUU7QUFDakVELEVBQUFBLGFBQWEsR0FBR0EsYUFBYSxJQUFJLEVBQWpDO0FBQ0FDLEVBQUFBLGFBQWEsR0FBR0EsYUFBYSxJQUFJLEVBQWpDO0FBQ0EsTUFBSUMsT0FBTyxHQUFHLEtBQWQ7O0FBRUEsTUFBSUYsYUFBYSxDQUFDSixNQUFkLEtBQXlCSyxhQUFhLENBQUNMLE1BQTNDLEVBQW1EO0FBQ2pETSxJQUFBQSxPQUFPLEdBQUcsSUFBVjs7QUFFQSxTQUFLLElBQUlDLENBQUMsR0FBRyxDQUFSLEVBQVdDLENBQUMsR0FBRUosYUFBYSxDQUFDSixNQUFqQyxFQUF5Q08sQ0FBQyxHQUFHQyxDQUE3QyxFQUFnREQsQ0FBQyxFQUFqRCxFQUFxRDtBQUNuRCxVQUFNRSxNQUFNLEdBQUdmLGFBQWEsQ0FBQ1UsYUFBYSxDQUFDRyxDQUFELENBQWQsQ0FBNUI7QUFDQSxVQUFNRyxNQUFNLEdBQUdoQixhQUFhLENBQUNXLGFBQWEsQ0FBQ0UsQ0FBRCxDQUFkLENBQTVCO0FBQ0FELE1BQUFBLE9BQU8sR0FBR25DLE9BQU8sQ0FBQ3NDLE1BQUQsRUFBU0MsTUFBVCxDQUFqQjs7QUFFQSxVQUFJLENBQUNKLE9BQUwsRUFBYztBQUNaO0FBQ0Q7QUFDRjtBQUNGOztBQUVELFNBQU9BLE9BQVA7QUFDRDs7QUFFRCxPQUFPLElBQU1LLGNBQWMsR0FBRyxTQUFqQkEsY0FBaUIsQ0FBQ0MsZUFBRCxFQUFrQkMsTUFBbEIsRUFBNkI7QUFDekQsTUFBTUMsV0FBVyxHQUFHRixlQUFILGFBQUdBLGVBQUgsdUJBQUdBLGVBQWUsQ0FBRUcsV0FBckM7QUFDQSxNQUFNQyxRQUFRLEdBQUdGLFdBQUgsYUFBR0EsV0FBSCx1QkFBR0EsV0FBVyxDQUFFRyxJQUE5QixDQUZ5RCxDQUV0Qjs7QUFDbkMsTUFBTUMsS0FBSyxHQUFHLGNBQWQ7QUFDQSxNQUFJQyxXQUFXLEdBQUcsS0FBbEI7O0FBQ0EsTUFBSUgsUUFBSixFQUFjO0FBQUE7O0FBQ1osUUFBTUksUUFBUSxzQkFBR0osUUFBUSxDQUFDSyxLQUFULENBQWVILEtBQWYsQ0FBSCx3RUFBRyxnQkFBd0IsQ0FBeEIsQ0FBSCxxREFBRyxpQkFBNEJJLFdBQTVCLEVBQWpCO0FBQ0FILElBQUFBLFdBQVcsR0FBR0MsUUFBSCxhQUFHQSxRQUFILHVCQUFHQSxRQUFRLENBQUVHLFFBQVYsQ0FBbUJWLE1BQW5CLENBQWQ7QUFDRDs7QUFDRCxNQUFJTSxXQUFKLEVBQWlCO0FBQ2YsV0FBT1AsZUFBUCxhQUFPQSxlQUFQLHVCQUFPQSxlQUFlLENBQUVZLFNBQXhCO0FBQ0Q7O0FBQ0RDLEVBQUFBLE9BQU8sQ0FBQ0MsS0FBUixvQkFBMEJiLE1BQTFCLHNCQUE0Q0csUUFBNUM7QUFDQSxTQUFPLElBQVA7QUFDRCxDQWRNO0FBZ0JQLGVBQWUsU0FBU1csYUFBVCxRQXFDWjtBQUFBOztBQUFBLE1BcENEQyxNQW9DQyxTQXBDREEsTUFvQ0M7QUFBQSxNQW5DREMsY0FtQ0MsU0FuQ0RBLGNBbUNDO0FBQUEsTUFsQ0RDLFNBa0NDLFNBbENEQSxTQWtDQztBQUFBLE1BakNEQyxPQWlDQyxTQWpDREEsT0FpQ0M7QUFBQSxNQWhDREMsT0FnQ0MsU0FoQ0RBLE9BZ0NDO0FBQUEsTUEvQkRDLGtCQStCQyxTQS9CREEsa0JBK0JDO0FBQUEsTUE5QkRDLFdBOEJDLFNBOUJEQSxXQThCQztBQUFBLE1BN0JEQyxjQTZCQyxTQTdCREEsY0E2QkM7QUFBQSxNQTVCREMsWUE0QkMsU0E1QkRBLFlBNEJDO0FBQUEsTUEzQkRDLGFBMkJDLFNBM0JEQSxhQTJCQztBQUFBLE1BMUJEQyxVQTBCQyxTQTFCREEsVUEwQkM7QUFBQSxNQXpCREMsRUF5QkMsU0F6QkRBLEVBeUJDO0FBQUEsTUF4QkRDLElBd0JDLFNBeEJEQSxJQXdCQztBQUFBLE1BdkJEQyxZQXVCQyxTQXZCREEsWUF1QkM7QUFBQSxNQXRCREMsVUFzQkMsU0F0QkRBLFVBc0JDO0FBQUEsTUFyQkRDLGVBcUJDLFNBckJEQSxlQXFCQztBQUFBLE1BcEJEQyw0QkFvQkMsU0FwQkRBLDRCQW9CQztBQUFBLE1BbkJEQyxTQW1CQyxTQW5CREEsU0FtQkM7QUFBQSw2QkFsQkRDLFFBa0JDO0FBQUEsTUFqQkNDLEtBaUJELGtCQWpCQ0EsS0FpQkQ7QUFBQSxNQWhCQ0MsVUFnQkQsa0JBaEJDQSxVQWdCRDtBQUFBLE1BZkNDLFVBZUQsa0JBZkNBLFVBZUQ7QUFBQSxNQWRDQyxxQkFjRCxrQkFkQ0EscUJBY0Q7QUFBQSxNQVpEQyxZQVlDLFNBWkRBLFlBWUM7QUFBQSxNQVhEQyxhQVdDLFNBWERBLGFBV0M7QUFBQSxNQVZEQyxNQVVDLFNBVkRBLE1BVUM7QUFBQSxNQVREQyxvQkFTQyxTQVREQSxvQkFTQztBQUFBLE1BUkRDLHFCQVFDLFNBUkRBLHFCQVFDO0FBQUEsTUFQREMsY0FPQyxTQVBEQSxjQU9DO0FBQUEsTUFOREMsZUFNQyxTQU5EQSxlQU1DO0FBQUEsTUFMREMsb0JBS0MsU0FMREEsb0JBS0M7QUFBQSxNQUpEQyxTQUlDLFNBSkRBLFNBSUM7QUFBQSxNQUhEQyxLQUdDLFNBSERBLEtBR0M7QUFBQSxNQUZEQyxtQkFFQyxTQUZEQSxtQkFFQztBQUFBLE1BRERDLGdCQUNDLFNBRERBLGdCQUNDO0FBQ0QsTUFBTWpELE1BQU0sR0FBR2dDLFNBQUgsYUFBR0EsU0FBSCx1QkFBR0EsU0FBUyxDQUFFa0IsU0FBMUI7O0FBREMsd0JBRTBCbEgsS0FBSyxDQUFDbUgsUUFBTixDQUFlO0FBQ3hDQyxJQUFBQSxrQkFBa0IsRUFBRSxDQURvQjtBQUV4Q0MsSUFBQUEsZ0JBQWdCLEVBQUUsSUFGc0I7QUFHeENDLElBQUFBLGVBQWUsRUFBRSxLQUh1QjtBQUl4Q0MsSUFBQUEsa0JBQWtCLEVBQUUsS0FKb0I7QUFLeENDLElBQUFBLGlCQUFpQixFQUFFLElBTHFCO0FBTXhDQyxJQUFBQSxhQUFhLEVBQUUsS0FOeUI7QUFPeENDLElBQUFBLEdBQUcsRUFBRTNDLE1BUG1DO0FBUXhDNEMsSUFBQUEsV0FBVyxFQUFFLEtBUjJCO0FBU3hDQyxJQUFBQSxXQUFXLEVBQUUsSUFUMkI7QUFVeENDLElBQUFBLFVBQVUsRUFBRSxJQUFJQyxHQUFKLEVBVjRCO0FBV3hDQyxJQUFBQSxHQUFHLEVBQUUsSUFYbUM7QUFZeENDLElBQUFBLGtCQUFrQixFQUFFLEtBWm9CO0FBYXhDQyxJQUFBQSxTQUFTLEVBQUUsS0FiNkI7QUFjeENDLElBQUFBLFFBQVEsRUFBRSxJQWQ4QjtBQWV4Q0MsSUFBQUEsZUFBZSxFQUFFLEtBZnVCO0FBZ0J4Q0MsSUFBQUEsa0JBQWtCLEVBQUUsRUFoQm9CO0FBaUJ4Q0MsSUFBQUEscUJBQXFCLEVBQUUsSUFqQmlCO0FBa0J4Q0MsSUFBQUEsWUFBWSxFQUFFLElBbEIwQjtBQW1CeENDLElBQUFBLGVBQWUsRUFBRSxJQUFJVCxHQUFKLEVBbkJ1QjtBQW9CeENVLElBQUFBLHlCQUF5QixFQUFFO0FBcEJhLEdBQWYsQ0FGMUI7QUFBQTtBQUFBLE1BRU1DLEtBRk47QUFBQSxNQUVhQyxTQUZiOztBQUFBLE1BeUJDdEIsa0JBekJELEdBNkNHcUIsS0E3Q0gsQ0F5QkNyQixrQkF6QkQ7QUFBQSxNQTBCQ0MsZ0JBMUJELEdBNkNHb0IsS0E3Q0gsQ0EwQkNwQixnQkExQkQ7QUFBQSxNQTJCQ0MsZUEzQkQsR0E2Q0dtQixLQTdDSCxDQTJCQ25CLGVBM0JEO0FBQUEsTUE0QkNDLGtCQTVCRCxHQTZDR2tCLEtBN0NILENBNEJDbEIsa0JBNUJEO0FBQUEsTUE2QkNDLGlCQTdCRCxHQTZDR2lCLEtBN0NILENBNkJDakIsaUJBN0JEO0FBQUEsTUE4QkNDLGFBOUJELEdBNkNHZ0IsS0E3Q0gsQ0E4QkNoQixhQTlCRDtBQUFBLE1BK0JDQyxHQS9CRCxHQTZDR2UsS0E3Q0gsQ0ErQkNmLEdBL0JEO0FBQUEsTUFnQ0NDLFdBaENELEdBNkNHYyxLQTdDSCxDQWdDQ2QsV0FoQ0Q7QUFBQSxNQWlDQ0MsV0FqQ0QsR0E2Q0dhLEtBN0NILENBaUNDYixXQWpDRDtBQUFBLE1Ba0NDQyxVQWxDRCxHQTZDR1ksS0E3Q0gsQ0FrQ0NaLFVBbENEO0FBQUEsTUFtQ0NFLEdBbkNELEdBNkNHVSxLQTdDSCxDQW1DQ1YsR0FuQ0Q7QUFBQSxNQW9DQ0Msa0JBcENELEdBNkNHUyxLQTdDSCxDQW9DQ1Qsa0JBcENEO0FBQUEsTUFxQ0NDLFNBckNELEdBNkNHUSxLQTdDSCxDQXFDQ1IsU0FyQ0Q7QUFBQSxNQXNDQ0MsUUF0Q0QsR0E2Q0dPLEtBN0NILENBc0NDUCxRQXRDRDtBQUFBLE1BdUNDQyxlQXZDRCxHQTZDR00sS0E3Q0gsQ0F1Q0NOLGVBdkNEO0FBQUEsTUF3Q0NDLGtCQXhDRCxHQTZDR0ssS0E3Q0gsQ0F3Q0NMLGtCQXhDRDtBQUFBLE1BeUNDRyxlQXpDRCxHQTZDR0UsS0E3Q0gsQ0F5Q0NGLGVBekNEO0FBQUEsTUEwQ0NDLHlCQTFDRCxHQTZDR0MsS0E3Q0gsQ0EwQ0NELHlCQTFDRDtBQUFBLE1BMkNDSCxxQkEzQ0QsR0E2Q0dJLEtBN0NILENBMkNDSixxQkEzQ0Q7QUFBQSxNQTRDQ0MsWUE1Q0QsR0E2Q0dHLEtBN0NILENBNENDSCxZQTVDRDs7QUFBQSw2QkErQytCdEIsbUJBQW1CLENBQUN4RSxrQkFBa0IsR0FBRzBDLE9BQXRCLEVBQStCLEdBQS9CLENBL0NsRDtBQUFBO0FBQUEsTUErQ015RCxRQS9DTjtBQUFBLE1BK0NnQkMsV0EvQ2hCOztBQWdERCxNQUFNQyxLQUFLLEdBQUdsRCxJQUFJLENBQUMzQixNQUFELENBQWxCOztBQUVBLFdBQVM4RSxRQUFULENBQWtCQyxRQUFsQixFQUE0QjtBQUMxQkwsSUFBQUEsU0FBUyxDQUFDLFVBQUFNLFNBQVM7QUFBQSw2Q0FBVUEsU0FBVixHQUF3QkQsUUFBeEI7QUFBQSxLQUFWLENBQVQ7QUFDRDs7QUFFRHRELEVBQUFBLFVBQVUsbUNBQ0xBLFVBREs7QUFFUndELElBQUFBLEtBQUssRUFBRTtBQUFFQyxNQUFBQSxNQUFNLEVBQUU7QUFBVixLQUZDO0FBR1JDLElBQUFBLE9BQU8sRUFBRTtBQUhELElBQVYsQ0F0REMsQ0EwREM7O0FBMURELDhCQWtFR3pILG9CQUFvQixDQUFDO0FBQ3ZCcUQsSUFBQUEsTUFBTSxFQUFFMkMsR0FEZTtBQUV2QnhDLElBQUFBLE9BQU8sRUFBUEEsT0FGdUI7QUFHdkJFLElBQUFBLGtCQUFrQixFQUFsQkEsa0JBSHVCO0FBSXZCRyxJQUFBQSxZQUFZLEVBQVpBLFlBSnVCO0FBS3ZCQyxJQUFBQSxhQUFhLEVBQWJBLGFBTHVCO0FBTXZCQyxJQUFBQSxVQUFVLEVBQVZBLFVBTnVCO0FBT3ZCRSxJQUFBQSxJQUFJLEVBQUpBLElBUHVCO0FBUXZCUSxJQUFBQSxVQUFVLEVBQVZBLFVBUnVCO0FBU3ZCRSxJQUFBQSxxQkFBcUIsRUFBckJBLHFCQVR1QjtBQVV2QkgsSUFBQUEsS0FBSyxFQUFMQSxLQVZ1QjtBQVd2QnVCLElBQUFBLGFBQWEsRUFBYkEsYUFYdUI7QUFZdkJ6QixJQUFBQSxTQUFTLEVBQUVxQixnQkFBZ0IsSUFBSXJCLFNBWlI7QUFhdkJJLElBQUFBLFVBQVUsRUFBVkEsVUFidUI7QUFjdkJFLElBQUFBLFlBQVksRUFBWkEsWUFkdUI7QUFldkI4QyxJQUFBQSxXQUFXLEVBQUUscUJBQUN2RSxLQUFEO0FBQUEsYUFBV2lFLFFBQVEsQ0FBQztBQUFFWixRQUFBQSxRQUFRLEVBQUVyRDtBQUFaLE9BQUQsQ0FBbkI7QUFBQSxLQWZVO0FBZ0J2QjJCLElBQUFBLE1BQU0sRUFBTkEsTUFoQnVCO0FBaUJ2Qk8sSUFBQUEsS0FBSyxFQUFMQSxLQWpCdUI7QUFrQnZCQyxJQUFBQSxtQkFBbUIsRUFBbkJBLG1CQWxCdUI7QUFtQnZCcUMsSUFBQUEsU0FBUyxFQUFFO0FBbkJZLEdBQUQsQ0FsRXZCO0FBQUEsTUE2RENDLGNBN0RELHlCQTZEQ0EsY0E3REQ7QUFBQSxNQThEQ3ZGLGVBOURELHlCQThEQ0EsZUE5REQ7QUFBQSxNQStEQ3dGLFlBL0RELHlCQStEQ0EsWUEvREQ7QUFBQSxNQWdFQ0MsaUJBaEVELHlCQWdFQ0EsaUJBaEVEO0FBQUEsTUFpRUNDLG9CQWpFRCx5QkFpRUNBLG9CQWpFRDs7QUF3RkQsTUFBTUMsVUFBVSxHQUFHM0YsZUFBSCxhQUFHQSxlQUFILHVCQUFHQSxlQUFlLENBQUU0RixhQUFwQyxDQXhGQyxDQXlGRDs7QUFDQSxNQUFNQyxJQUFJLGFBQU03RixlQUFOLGFBQU1BLGVBQU4sZ0RBQU1BLGVBQWUsQ0FBRWtDLFFBQXZCLDBEQUFNLHNCQUEyQkUsVUFBakMsY0FBK0NwQyxlQUEvQyxhQUErQ0EsZUFBL0MsaURBQStDQSxlQUFlLENBQUVrQyxRQUFoRSwyREFBK0MsdUJBQTJCaUIsU0FBMUUsQ0FBVjtBQUNBLE1BQU0yQyxVQUFVLEdBQUcsQ0FBQTlGLGVBQWUsU0FBZixJQUFBQSxlQUFlLFdBQWYsWUFBQUEsZUFBZSxDQUFFaUMsU0FBakIsS0FBOEIsSUFBakQ7QUFFQWhHLEVBQUFBLEtBQUssQ0FBQzhKLFNBQU4sQ0FBZ0IsWUFBTTtBQUFBOztBQUFFO0FBQ3RCLFFBQU1DLElBQUksR0FBRyxDQUFBTCxVQUFVLFNBQVYsSUFBQUEsVUFBVSxXQUFWLGdDQUFBQSxVQUFVLENBQUVNLElBQVosc0VBQWtCakMsR0FBbEIsS0FBeUIsSUFBdEM7O0FBQ0EsUUFBTWtDLEdBQUcsR0FBRyxDQUFBUCxVQUFVLFNBQVYsSUFBQUEsVUFBVSxXQUFWLGlDQUFBQSxVQUFVLENBQUVNLElBQVosd0VBQWtCRSxZQUFsQixLQUFrQyxJQUE5QztBQUNBLFFBQUlDLFdBQVcsR0FBRyxJQUFsQjs7QUFFQSxRQUFJSixJQUFKLEVBQVU7QUFBRTtBQUNWLFVBQU1LLEtBQUssR0FBRyxDQUFDSCxHQUFHLElBQUksRUFBUixFQUFZSSxLQUFaLENBQWtCLEdBQWxCLENBQWQ7QUFDQSxVQUFNQyxXQUFXLEdBQUdGLEtBQUssQ0FBQ2pILE1BQU4sR0FBZSxDQUFmLEdBQW1CaUgsS0FBSyxDQUFDLENBQUQsQ0FBeEIsR0FBOEIsRUFBbEQ7QUFDQUQsTUFBQUEsV0FBVyxHQUFHRyxXQUFXLEtBQUs1QyxHQUE5QjtBQUNEOztBQUVELFFBQUl5QyxXQUFXLElBQUlKLElBQUksS0FBS2hDLEdBQTVCLEVBQWlDO0FBQy9CbkQsTUFBQUEsT0FBTyxDQUFDMkYsR0FBUiw4QkFBa0NOLEdBQWxDLGNBQXlDN0csSUFBSSxDQUFDQyxTQUFMLENBQWV3RyxVQUFmLENBQXpDLHlCQUFrRkUsSUFBbEY7QUFDQWpCLE1BQUFBLFFBQVEsQ0FBQztBQUFFZixRQUFBQSxHQUFHLEVBQUVnQztBQUFQLE9BQUQsQ0FBUjtBQUNEO0FBQ0YsR0FmRCxFQWVHLENBQUNMLFVBQUQsQ0FmSCxFQTdGQyxDQThHRDs7QUFDQSxNQUFNYyxjQUFjLEdBQUcsQ0FBQXpHLGVBQWUsU0FBZixJQUFBQSxlQUFlLFdBQWYsc0NBQUFBLGVBQWUsQ0FBRWtDLFFBQWpCLGtGQUEyQmlCLFNBQTNCLEtBQXdDZCxVQUEvRCxDQS9HQyxDQWdIRDs7QUFDQSxNQUFJcUUsSUFBSSxHQUFHLENBQUExRyxlQUFlLFNBQWYsSUFBQUEsZUFBZSxXQUFmLHNDQUFBQSxlQUFlLENBQUVrQyxRQUFqQixrRkFBMkJ5QixHQUEzQixLQUFrQzNDLE1BQTdDO0FBQ0EsTUFBTTJGLGdCQUFnQixHQUFHLENBQUMsRUFBRTlFLFlBQVksSUFBSVosY0FBaEIsSUFBbUNvQixVQUFVLEtBQUsvRCxlQUFsRCxNQUFzRTtBQUM5Rm9JLEVBQUFBLElBQUksS0FBSyxRQUFWLElBQXdCQSxJQUFJLENBQUMvRixRQUFMLENBQWNrQixZQUFkLENBREMsQ0FBRixDQUExQixDQWxIQyxDQW1IeUQ7O0FBbkh6RCx1QkFnSUcxRSxhQUFhLENBQUM7QUFDaEI2RCxJQUFBQSxNQUFNLEVBQU5BLE1BRGdCO0FBRWhCQyxJQUFBQSxjQUFjLEVBQUUwRixnQkFBZ0IsR0FBRzFGLGNBQUgsR0FBb0IsSUFGcEM7QUFHaEJoQixJQUFBQSxNQUFNLEVBQU5BLE1BSGdCO0FBSWhCMkcsSUFBQUEsTUFBTSxFQUFFakYsRUFKUTtBQUtoQjhFLElBQUFBLGNBQWMsRUFBZEEsY0FMZ0I7QUFNaEJwRCxJQUFBQSxrQkFBa0IsRUFBbEJBLGtCQU5nQjtBQU9oQmpCLElBQUFBLFVBQVUsRUFBVkEsVUFQZ0I7QUFRaEJQLElBQUFBLFlBQVksRUFBRThFLGdCQUFnQixHQUFHOUUsWUFBSCxHQUFrQixJQVJoQztBQVNoQk0sSUFBQUEsS0FBSyxFQUFMQSxLQVRnQjtBQVVoQkosSUFBQUEsZUFBZSxFQUFmQSxlQVZnQjtBQVdoQlUsSUFBQUEsTUFBTSxFQUFOQSxNQVhnQjtBQVloQlEsSUFBQUEsbUJBQW1CLEVBQW5CQTtBQVpnQixHQUFELENBaEloQjtBQUFBLDRDQXNIQ3lCLEtBdEhEO0FBQUEsTUF1SEdtQyxnQkF2SEgsd0JBdUhHQSxnQkF2SEg7QUFBQSxNQXdIR0Msa0JBeEhILHdCQXdIR0Esa0JBeEhIO0FBQUEsTUF5SG9CQyxnQkF6SHBCLHdCQXlIRzNDLGVBekhIO0FBQUEsTUEwSEc0QyxxQkExSEgsd0JBMEhHQSxxQkExSEg7QUFBQSw2Q0E0SENDLE9BNUhEO0FBQUEsTUE2SGNDLGVBN0hkLHlCQTZIR0MsU0E3SEg7QUFBQSxNQThIR0MsVUE5SEgseUJBOEhHQSxVQTlISDs7QUErSUQsTUFBTUMsZ0JBQWdCLEdBQUd0SyxlQUFlLENBQUM7QUFBRTBGLElBQUFBLE1BQU0sRUFBTkEsTUFBRjtBQUFVTixJQUFBQSxLQUFLLEVBQUxBLEtBQVY7QUFBaUIwRCxJQUFBQSxJQUFJLEVBQUpBLElBQWpCO0FBQXVCeUIsSUFBQUEsVUFBVSxFQUFFUixrQkFBbkM7QUFBdURTLElBQUFBLE9BQU8sRUFBRXRHLGNBQUYsYUFBRUEsY0FBRixnREFBRUEsY0FBYyxDQUFFdUcsS0FBbEIsMERBQUUsc0JBQXVCQztBQUF2RixHQUFELENBQXhDOztBQS9JQyw4QkFxSkdKLGdCQXJKSCxDQWlKQzNDLEtBakpEO0FBQUEsTUFrSmdCZ0QsYUFsSmhCLHlCQWtKR0MsV0FsSkg7QUFBQSxNQW1KaUJDLGVBbkpqQix5QkFtSkdDLFlBbkpIO0FBdUpELE1BQU1DLGlCQUFpQixHQUFHN0sscUJBQXFCLENBQUM7QUFDOUM4SyxJQUFBQSxRQUFRLEVBQUU3RCxTQURvQztBQUU5Q25ILElBQUFBLGVBQWUsRUFBRXNLLGdCQUY2QjtBQUc5Q1csSUFBQUEsUUFBUSxFQUFFLG9CQUFNO0FBQ2Q5SixNQUFBQSxLQUFLLENBQUMsR0FBRCxDQUFMLENBQVcrSixJQUFYLENBQWdCO0FBQUEsZUFBTWpJLGVBQU4sYUFBTUEsZUFBTix1QkFBTUEsZUFBZSxDQUFFa0ksY0FBakIsQ0FBZ0NsRSxHQUFoQyxDQUFOO0FBQUEsT0FBaEI7QUFDRDtBQUw2QyxHQUFELENBQS9DO0FBdkpDLE1BZ0tDbUUsb0JBaEtELEdBd0tHTCxpQkF4S0gsQ0FnS0NLLG9CQWhLRDtBQUFBLE1BaUtDQyxpQkFqS0QsR0F3S0dOLGlCQXhLSCxDQWlLQ00saUJBaktEO0FBQUEsTUFrS0NDLGtCQWxLRCxHQXdLR1AsaUJBeEtILENBa0tDTyxrQkFsS0Q7QUFBQSxNQW1LWUMsZUFuS1osR0F3S0dSLGlCQXhLSCxDQW1LQ1MsU0FuS0Q7QUFBQSxNQW9LQ0MsYUFwS0QsR0F3S0dWLGlCQXhLSCxDQW9LQ1UsYUFwS0Q7QUFBQSxNQXFLQ0MsV0FyS0QsR0F3S0dYLGlCQXhLSCxDQXFLQ1csV0FyS0Q7QUFBQSxNQXNLQ0MsVUF0S0QsR0F3S0daLGlCQXhLSCxDQXNLQ1ksVUF0S0Q7QUFBQSxNQXVLQ0MsaUJBdktELEdBd0tHYixpQkF4S0gsQ0F1S0NhLGlCQXZLRDs7QUEwS0QsTUFBTUMsT0FBTyxHQUFHLFNBQVZBLE9BQVUsR0FBTTtBQUNwQnhCLElBQUFBLFVBQVU7QUFDVnJDLElBQUFBLFFBQVEsQ0FBQztBQUFFcEIsTUFBQUEsR0FBRyxFQUFFM0M7QUFBUCxLQUFELENBQVI7QUFDQTlDLElBQUFBLEtBQUssQ0FBQyxHQUFELENBQUwsQ0FBVytKLElBQVgsQ0FBZ0IsWUFBTTtBQUNwQmpJLE1BQUFBLGVBQWUsU0FBZixJQUFBQSxlQUFlLFdBQWYsWUFBQUEsZUFBZSxDQUFFa0ksY0FBakI7QUFDRCxLQUZEO0FBR0QsR0FORDs7QUExS0MsNkJBa0wwRGhMLG1CQUFtQixDQUFDO0FBQzdFNkssSUFBQUEsUUFBUSxFQUFFN0QsU0FEbUU7QUFFN0VuSCxJQUFBQSxlQUFlLEVBQUVzSyxnQkFGNEQ7QUFHN0V1QixJQUFBQSxPQUFPLEVBQVBBO0FBSDZFLEdBQUQsQ0FsTDdFO0FBQUEsTUFrTGtCQyxjQWxMbEIsd0JBa0xPTixTQWxMUDtBQUFBLE1Ba0xrQ08sbUJBbExsQyx3QkFrTGtDQSxtQkFsTGxDOztBQXdMRDdNLEVBQUFBLEtBQUssQ0FBQzhKLFNBQU4sQ0FBZ0IsWUFBTTtBQUNwQixRQUFJVSxjQUFKLEVBQW9CO0FBQ2xCdkQsTUFBQUEsZ0JBQWdCLElBQUlBLGdCQUFnQixDQUNsQ3VELGNBRGtDLEVBRWxDbUIsZUFGa0MsRUFHbENGLGFBSGtDLEVBSWxDUyxvQkFKa0MsRUFLbENXLG1CQUxrQyxDQUFwQztBQU9EO0FBQ0YsR0FWRCxFQVVFLENBQUNyQyxjQUFELEVBQWlCbUIsZUFBakIsRUFBa0NGLGFBQWxDLENBVkY7QUFZQXpMLEVBQUFBLEtBQUssQ0FBQzhKLFNBQU4sQ0FBZ0IsWUFBTTtBQUNwQixRQUFJdUMsZUFBSixFQUFxQjtBQUNuQjNGLE1BQUFBLHFCQUFxQixTQUFyQixJQUFBQSxxQkFBcUIsV0FBckIsWUFBQUEscUJBQXFCLENBQUcsVUFBQW9HLGdCQUFnQjtBQUFBLDRDQUFRQSxnQkFBUixJQUEwQnRDLGNBQTFCO0FBQUEsT0FBbkIsQ0FBckI7QUFDRCxLQUZELE1BRU87QUFDTDlELE1BQUFBLHFCQUFxQixTQUFyQixJQUFBQSxxQkFBcUIsV0FBckIsWUFBQUEscUJBQXFCLENBQUcsVUFBQW9HLGdCQUFnQjtBQUFBLGVBQUlBLGdCQUFnQixDQUFDQyxNQUFqQixDQUF3QixVQUFBcEMsTUFBTTtBQUFBLGlCQUFJQSxNQUFNLEtBQUtILGNBQWY7QUFBQSxTQUE5QixDQUFKO0FBQUEsT0FBbkIsQ0FBckI7QUFDRDtBQUNGLEdBTkQsRUFNRyxDQUFDNkIsZUFBRCxDQU5IO0FBUUFyTSxFQUFBQSxLQUFLLENBQUM4SixTQUFOLENBQWdCLFlBQU07QUFDcEIsUUFBSThDLGNBQUosRUFBb0I7QUFDbEJuRyxNQUFBQSxvQkFBb0IsU0FBcEIsSUFBQUEsb0JBQW9CLFdBQXBCLFlBQUFBLG9CQUFvQixDQUFHLFVBQUFxRyxnQkFBZ0I7QUFBQSw0Q0FBUUEsZ0JBQVIsSUFBMEJ0QyxjQUExQjtBQUFBLE9BQW5CLENBQXBCO0FBQ0QsS0FGRCxNQUVPO0FBQ0wvRCxNQUFBQSxvQkFBb0IsU0FBcEIsSUFBQUEsb0JBQW9CLFdBQXBCLFlBQUFBLG9CQUFvQixDQUFHLFVBQUFxRyxnQkFBZ0I7QUFBQSxlQUFJQSxnQkFBZ0IsQ0FBQ0MsTUFBakIsQ0FBd0IsVUFBQXBDLE1BQU07QUFBQSxpQkFBSUEsTUFBTSxLQUFLSCxjQUFmO0FBQUEsU0FBOUIsQ0FBSjtBQUFBLE9BQW5CLENBQXBCO0FBQ0Q7QUFDRixHQU5ELEVBTUcsQ0FBQ29DLGNBQUQsQ0FOSDtBQVFBLE1BQU1JLFVBQVUsR0FBR3RDLGdCQUFnQixHQUFHSyxxQkFBSCxHQUEyQmhHLE1BQTlEO0FBQ0EsTUFBSWtJLGNBQUo7O0FBRUEsTUFBSSxDQUFDdkMsZ0JBQUQsSUFBcUIsQ0FBQ2pELGFBQTFCLEVBQXlDO0FBQUU7QUFDekNxQixJQUFBQSxRQUFRLENBQUM7QUFBRXJCLE1BQUFBLGFBQWEsRUFBRTtBQUFqQixLQUFELENBQVI7QUFDRDs7QUFFRHpILEVBQUFBLEtBQUssQ0FBQzhKLFNBQU4sQ0FBZ0IsWUFBTTtBQUNwQmxGLElBQUFBLE9BQU8sQ0FBQzJGLEdBQVIsK0JBQTBDO0FBQUV2RyxNQUFBQSxNQUFNLEVBQU5BLE1BQUY7QUFBVWtDLE1BQUFBLEtBQUssRUFBTEEsS0FBVjtBQUFpQkMsTUFBQUEsVUFBVSxFQUFWQSxVQUFqQjtBQUE2QkMsTUFBQUEsVUFBVSxFQUFWQTtBQUE3QixLQUExQzs7QUFFQSxRQUFJc0UsZ0JBQUosRUFBc0I7QUFBRTtBQUN0QjVCLE1BQUFBLFFBQVEsQ0FBQztBQUFFckIsUUFBQUEsYUFBYSxFQUFFLEtBQWpCO0FBQXdCTCxRQUFBQSxrQkFBa0IsRUFBRUEsa0JBQWtCLEdBQUc7QUFBakUsT0FBRCxDQUFSO0FBQ0Q7QUFDRixHQU5ELEVBTUcsQ0FBQ3BELE1BQUQsRUFBU2tDLEtBQVQsRUFBZ0JDLFVBQWhCLEVBQTRCQyxVQUE1QixDQU5IO0FBUUFwRyxFQUFBQSxLQUFLLENBQUM4SixTQUFOLENBQWdCLFlBQU07QUFDcEIsUUFBSSxDQUFDeEksT0FBTyxDQUFDMEUsU0FBRCxFQUFZcUIsZ0JBQVosQ0FBWixFQUEyQztBQUN6QztBQUNBeUIsTUFBQUEsUUFBUSxDQUFDO0FBQUV6QixRQUFBQSxnQkFBZ0IsRUFBRXJCO0FBQXBCLE9BQUQsQ0FBUjtBQUNEO0FBQ0YsR0FMRCxFQUtHLENBQUNBLFNBQUQsQ0FMSDtBQU9BaEcsRUFBQUEsS0FBSyxDQUFDOEosU0FBTixDQUFnQixZQUFNO0FBQUU7QUFDdEJsRixJQUFBQSxPQUFPLENBQUMyRixHQUFSLDZDQUFpREssZ0JBQWpELGdDQUF1Rm9DLFVBQXZGLG1DQUEwSHZGLGFBQTFIOztBQUVBLFFBQUksQ0FBQ0EsYUFBRCxJQUFrQm1ELGdCQUF0QixFQUF5QztBQUN2QzlCLE1BQUFBLFFBQVEsQ0FBQztBQUFFckIsUUFBQUEsYUFBYSxFQUFFLElBQWpCO0FBQXVCQyxRQUFBQSxHQUFHLEVBQUVzRjtBQUE1QixPQUFELENBQVI7QUFDRDtBQUNGLEdBTkQsRUFNRyxDQUFDcEMsZ0JBQUQsQ0FOSDtBQVFBNUssRUFBQUEsS0FBSyxDQUFDOEosU0FBTixDQUFnQixZQUFNO0FBQUU7QUFDdEIsUUFBSWdCLGdCQUFnQixLQUFLM0MsZUFBekIsRUFBMEM7QUFDeENXLE1BQUFBLFFBQVEsQ0FBQztBQUFFWCxRQUFBQSxlQUFlLEVBQUUyQztBQUFuQixPQUFELENBQVI7QUFDRDtBQUNGLEdBSkQsRUFJRyxDQUFDQSxnQkFBRCxFQUFtQjNDLGVBQW5CLENBSkg7QUFNQW5JLEVBQUFBLEtBQUssQ0FBQzhKLFNBQU4sQ0FBZ0IsWUFBTTtBQUFBOztBQUFFO0FBQ3RCLFFBQU1qRixLQUFLLEdBQUdkLGVBQUgsYUFBR0EsZUFBSCxpREFBR0EsZUFBZSxDQUFFbUosY0FBcEIsMkRBQUcsdUJBQWtDdk0sV0FBbEMsQ0FBZDs7QUFFQSxRQUFJa0UsS0FBSixFQUFXO0FBQUU7QUFDWCxVQUFNcUksY0FBYyxHQUFHbkosZUFBSCxhQUFHQSxlQUFILHVCQUFHQSxlQUFlLENBQUVtSixjQUF4Qzs7QUFDQSxVQUFNNUcsYUFBWSxHQUFHekUsZUFBZSxDQUFDa0MsZUFBRCxDQUFwQzs7QUFDQSxVQUFNb0osT0FBTyxHQUFHckwsa0JBQWtCLENBQUNvTCxjQUFELEVBQWlCMUcsTUFBakIsRUFBeUJGLGFBQXpCLEVBQXVDdUMsS0FBdkMsQ0FBbEM7QUFDQSxVQUFNdUUsYUFBYSxHQUFHRixjQUFjLENBQUN0TSx5QkFBRCxDQUFwQztBQUNBa0YsTUFBQUEsZUFBZSxJQUFJQSxlQUFlLENBQUNxSCxPQUFELEVBQVVDLGFBQVYsRUFBeUJGLGNBQXpCLENBQWxDO0FBQ0Q7QUFDRixHQVZELEVBVUcsQ0FBQ25KLGVBQUQsYUFBQ0EsZUFBRCxpREFBQ0EsZUFBZSxDQUFFbUosY0FBbEIsMkRBQUMsdUJBQWtDdk0sV0FBbEMsQ0FBRCxDQVZIOztBQVlBLE1BQUlvRCxlQUFlLENBQUNnRCxLQUFoQixJQUF5QmhELGVBQWUsQ0FBQ3NKLE9BQTdDLEVBQXNEO0FBQ3BESixJQUFBQSxjQUFjLGFBQU1sSixlQUFlLENBQUNnRCxLQUF0QixlQUFnQ2hELGVBQWUsQ0FBQ3NKLE9BQWhELENBQWQ7QUFDQTVELElBQUFBLG9CQUFvQixDQUFDNkQsV0FBckIsQ0FBaUN2SixlQUFlLENBQUN1QyxZQUFqRCxFQUErRDJHLGNBQS9EO0FBQ0QsR0FIRCxNQUdPO0FBQ0xBLElBQUFBLGNBQWMsd0NBQWQ7QUFDRDtBQUVEOzs7QUFDQSxXQUFTTSxvQkFBVCxHQUFnQztBQUM5QixRQUFNQyx3QkFBd0IsR0FBR3pMLDJCQUEyQixDQUFDO0FBQzNEVSxNQUFBQSxLQUFLLEVBQUxBLEtBRDJEO0FBRTNENkQsTUFBQUEsWUFBWSxFQUFFdkMsZUFBZSxDQUFDdUMsWUFGNkI7QUFHM0RpRCxNQUFBQSxZQUFZLEVBQVpBLFlBSDJEO0FBSTNERSxNQUFBQSxvQkFBb0IsRUFBcEJBO0FBSjJELEtBQUQsQ0FBNUQ7QUFPQSx3QkFBTyxvQkFBQyxpQkFBRCxlQUF1QitELHdCQUF2QjtBQUFpRCxNQUFBLEtBQUssRUFBRTlLLEtBQXhEO0FBQStELE1BQUEsWUFBWSxFQUFFd0Y7QUFBN0UsT0FBUDtBQUNEOztBQUVELFdBQVN1RixXQUFULEdBQXVCO0FBQ3JCO0FBQ0EzRSxJQUFBQSxRQUFRLENBQUM7QUFBRVosTUFBQUEsUUFBUSxFQUFFO0FBQVosS0FBRCxDQUFSO0FBQ0QsR0ExUkEsQ0E0UkQ7OztBQUNBLE1BQU13RixXQUFXLEdBQUczSixlQUFILGFBQUdBLGVBQUgsaURBQUdBLGVBQWUsQ0FBRWtDLFFBQXBCLDJEQUFHLHVCQUEyQkUsVUFBL0M7QUFDQSxNQUFNd0gsUUFBUSxHQUFHdEksV0FBVyxDQUFDO0FBQUVjLElBQUFBLFVBQVUsRUFBRXVIO0FBQWQsR0FBRCxDQUE1QjtBQUNBLE1BQU1FLFNBQVMsR0FBRyxDQUFDRCxRQUFELGFBQUNBLFFBQUQsdUJBQUNBLFFBQVEsQ0FBRUMsU0FBWCxLQUF5QixLQUEzQzs7QUFDQSxNQUFNQyxVQUFVLEdBQUd4RyxnQkFBZ0IsSUFBSXJCLFNBQXZDOztBQUVBLE1BQU04SCxRQUFRLEdBQUlKLFdBQVcsS0FBSyxLQUFsQztBQUNBLE1BQU1LLFVBQVUsR0FBR0QsUUFBUSxHQUFHLEdBQUgsR0FBUyxDQUFwQyxDQW5TQyxDQW1TcUM7O0FBQ3RDLE1BQU1FLGNBQWMsR0FBR3JGLFFBQVEsR0FBR29GLFVBQWxDO0FBRUEsTUFBTUUsS0FBSyxHQUFHLElBQWQ7O0FBdFNDLHNCQThTR2xOLFlBQVksQ0FBQztBQUFFa04sSUFBQUEsS0FBSyxFQUFMQTtBQUFGLEdBQUQsQ0E5U2Y7QUFBQSwwQ0F3U0N4RixLQXhTRDtBQUFBLE1BeVNHeUYsT0F6U0gsdUJBeVNHQSxPQXpTSDtBQUFBLE1BeVNZQyxPQXpTWix1QkF5U1lBLE9BelNaO0FBQUEsTUF5U3FCQyxTQXpTckIsdUJBeVNxQkEsU0F6U3JCO0FBQUEsTUF5U2dDQyxZQXpTaEMsdUJBeVNnQ0EsWUF6U2hDO0FBQUEsNENBMlNDckQsT0EzU0Q7QUFBQSxNQTRTR3NELFVBNVNILHlCQTRTR0EsVUE1U0g7QUFBQSxNQTRTZUMsWUE1U2YseUJBNFNlQSxZQTVTZjtBQUFBLE1BNFM2QkMsZUE1UzdCLHlCQTRTNkJBLGVBNVM3Qjs7QUFnVEQsTUFBTUMsUUFBUSxHQUFHek8sS0FBSyxDQUFDME8sT0FBTixDQUFjO0FBQUEsV0FBTztBQUNwQ0MsTUFBQUEsVUFBVSxFQUFFLFdBRHdCO0FBRXBDaEcsTUFBQUEsUUFBUSxZQUFLaUcsSUFBSSxDQUFDQyxLQUFMLENBQVdiLGNBQWMsR0FBRyxHQUE1QixDQUFMO0FBRjRCLEtBQVA7QUFBQSxHQUFkLEVBR2IsQ0FBQ0EsY0FBRCxDQUhhLENBQWpCO0FBS0EsTUFBTWMsWUFBWSxHQUFHOU8sS0FBSyxDQUFDME8sT0FBTixDQUFjO0FBQUEsV0FBTztBQUN4Q0MsTUFBQUEsVUFBVSxFQUFFLFdBRDRCO0FBRXhDaEcsTUFBQUEsUUFBUSxZQUFLcUYsY0FBTDtBQUZnQyxLQUFQO0FBQUEsR0FBZCxFQUdqQixDQUFDQSxjQUFELENBSGlCLENBQXJCO0FBS0EsTUFBTWUsY0FBYyxnQkFBRyxvQkFBQyxLQUFELFFBQVE5QixjQUFSLENBQXZCO0FBQ0EsTUFBSStCLG1CQUFtQixHQUFHNUosa0JBQTFCO0FBQ0EsTUFBTTZKLGtCQUFrQixHQUFHak4sZUFBZSwyQkFBQytCLGVBQWUsQ0FBQyxVQUFELENBQWhCLDJEQUFDLHVCQUE2Qm1ELFNBQTlCLENBQTFDOztBQUVBLE1BQUk5QixrQkFBa0IsS0FBSzhKLFNBQTNCLEVBQXNDO0FBQUU7QUFDdENGLElBQUFBLG1CQUFtQixHQUFHLENBQUNDLGtCQUF2QjtBQUNEOztBQUVELE1BQU1FLFVBQVUsR0FBRyxDQUFDRixrQkFBcEI7QUFDQSxNQUFNRyxlQUFlLEdBQUcsQ0FBQ0gsa0JBQXpCO0FBQ0EsTUFBTUksZUFBZSxHQUFHL0YsY0FBYyxHQUFHL0QsWUFBSCxHQUFrQkMsYUFBeEQ7QUFDQSxNQUFNOEosNEJBQTRCLEdBQUc7QUFDbkN0SyxJQUFBQSxjQUFjLEVBQUUwRixnQkFBZ0IsR0FBRzFGLGNBQUgsR0FBb0IsSUFEakI7QUFFbkNDLElBQUFBLFNBQVMsRUFBVEEsU0FGbUM7QUFHbkNzSyxJQUFBQSxlQUFlLEVBQUUxQixVQUhrQjtBQUluQ3NCLElBQUFBLFVBQVUsRUFBVkEsVUFKbUM7QUFLbkNDLElBQUFBLGVBQWUsRUFBZkEsZUFMbUM7QUFNbkMzSixJQUFBQSxVQUFVLEVBQVZBLFVBTm1DO0FBT25DO0FBQ0E2RCxJQUFBQSxjQUFjLEVBQWRBLGNBUm1DO0FBU25DMUQsSUFBQUEsWUFBWSxFQUFFOEUsZ0JBQWdCLEdBQUc5RSxZQUFILEdBQWtCLElBVGI7QUFVbkNTLElBQUFBLHFCQUFxQixFQUFyQkEscUJBVm1DO0FBV25DO0FBQ0FnSixJQUFBQSxlQUFlLEVBQWZBLGVBWm1DO0FBYW5DdEwsSUFBQUEsZUFBZSxFQUFmQSxlQWJtQztBQWNuQ3lGLElBQUFBLGlCQUFpQixFQUFqQkEsaUJBZG1DO0FBZW5DeUIsSUFBQUEsZUFBZSxFQUFmQSxlQWZtQztBQWdCbkNyRSxJQUFBQSxlQUFlLEVBQUU0SSxnQkFoQmtCO0FBaUJuQ0MsSUFBQUEsY0FBYyxFQUFFNUcsS0FBSyxHQUFHekcsWUFBSCxHQUFrQkUsWUFqQko7QUFrQm5Db04sSUFBQUEsY0FBYyxFQUFFL0IsUUFsQm1CO0FBbUJuQzVHLElBQUFBLEtBQUssRUFBRWtHLGNBbkI0QjtBQW9CbkNsQyxJQUFBQSxxQkFBcUIsRUFBRXJEO0FBcEJZLEdBQXJDO0FBdUJBO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0UsV0FBUzhILGdCQUFULENBQTBCRyxZQUExQixFQUF3Q0MsS0FBeEMsU0FBeUc7QUFBQSxpQ0FBeERDLFVBQXdEO0FBQUEsUUFBeERBLFVBQXdELGlDQUEzQyxJQUEyQztBQUFBLG1DQUFyQ0MsWUFBcUM7QUFBQSxRQUFyQ0EsWUFBcUMsbUNBQXRCLElBQXNCO0FBQUEsNEJBQWhCckgsS0FBZ0I7QUFBQSxRQUFoQkEsS0FBZ0IsNEJBQVIsSUFBUTs7QUFDdkcsUUFBTXNILG1CQUFtQixxQkFBUTNILGtCQUFSLENBQXpCOztBQUVBLFFBQUl3SCxLQUFKLEVBQVc7QUFDVCxVQUFJRyxtQkFBbUIsQ0FBQ0MsY0FBcEIsQ0FBbUNMLFlBQW5DLENBQUosRUFBc0Q7QUFDcEQsZUFBT0ksbUJBQW1CLENBQUNKLFlBQUQsQ0FBMUI7QUFDRDtBQUNGLEtBSkQsTUFJTztBQUNMSSxNQUFBQSxtQkFBbUIsQ0FBQ0osWUFBRCxDQUFuQixHQUFvQztBQUFFRSxRQUFBQSxVQUFVLEVBQVZBLFVBQUY7QUFBY0MsUUFBQUEsWUFBWSxFQUFaQSxZQUFkO0FBQTRCckgsUUFBQUEsS0FBSyxFQUFMQTtBQUE1QixPQUFwQyxDQURLLENBQ21FO0FBQ3pFOztBQUVELFFBQU13SCxtQkFBbUIsR0FBRyxDQUFDLENBQUNDLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZSixtQkFBWixFQUFpQzVNLE1BQS9EOztBQUVBLFFBQUlvRSxrQkFBa0IsSUFBSTBJLG1CQUExQixFQUErQztBQUM3Q3JKLE1BQUFBLGVBQWUsSUFBSUEsZUFBZSxDQUFDUixVQUFELEVBQWEsQ0FBQzZKLG1CQUFkLENBQWxDO0FBQ0FuSCxNQUFBQSxRQUFRLENBQUM7QUFBRXZCLFFBQUFBLGtCQUFrQixFQUFFMEk7QUFBdEIsT0FBRCxDQUFSO0FBQ0Q7O0FBRUQsUUFBSSxDQUFDM08sT0FBTyxDQUFDeU8sbUJBQUQsRUFBc0IzSCxrQkFBdEIsQ0FBWixFQUF1RDtBQUNyRFUsTUFBQUEsUUFBUSxDQUFDO0FBQUVWLFFBQUFBLGtCQUFrQixFQUFFMkg7QUFBdEIsT0FBRCxDQUFSO0FBQ0Q7QUFDRjtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7OztBQUNFLFdBQVNLLGNBQVQsQ0FBd0JDLFFBQXhCLEVBQWtDQyxNQUFsQyxFQUEwQztBQUN4QyxRQUFNN0YsSUFBSSxHQUFHNEYsUUFBUSxHQUFHLEVBQXhCO0FBQ0EsUUFBTUUsTUFBTSxHQUFHOUYsSUFBSSxDQUFDdEgsTUFBcEI7QUFDQSxRQUFNcU4sS0FBSyxHQUFHRixNQUFNLENBQUNHLFNBQVAsQ0FBaUIsVUFBQ0MsS0FBRCxFQUFRQyxHQUFSLEVBQWdCO0FBQzdDLFVBQUlBLEdBQUcsR0FBRyxDQUFWLEVBQWE7QUFDWCxZQUFJRCxLQUFLLENBQUNFLFNBQU4sQ0FBZ0IsQ0FBaEIsRUFBbUJMLE1BQW5CLE1BQStCOUYsSUFBbkMsRUFBeUM7QUFDdkMsY0FBTW9HLFFBQVEsR0FBR0gsS0FBSyxDQUFDSCxNQUFELENBQXRCOztBQUVBLGNBQUtNLFFBQVEsR0FBRyxHQUFaLElBQXFCQSxRQUFRLEdBQUcsR0FBcEMsRUFBMEM7QUFDeEMsbUJBQU8sSUFBUDtBQUNEO0FBQ0Y7QUFDRjs7QUFDRCxhQUFPLEtBQVA7QUFDRCxLQVhhLENBQWQ7QUFZQSxXQUFPTCxLQUFQO0FBQ0Q7O0FBRUQsV0FBU00sV0FBVCxHQUF1QjtBQUFBOztBQUNyQjtBQUNBLFFBQU1DLFFBQVEsR0FBR2hOLGVBQWUsU0FBZixJQUFBQSxlQUFlLFdBQWYsNkJBQUFBLGVBQWUsQ0FBRWlDLFNBQWpCLHdFQUE0QmtCLFNBQTVCLEdBQXdDbkQsZUFBZSxDQUFDaUMsU0FBaEIsQ0FBMEJrQixTQUExQixDQUFvQzhKLFdBQXBDLEVBQXhDLEdBQTRGLEVBQTdHO0FBQ0EscUJBQVUvTCxTQUFWLGNBQXVCOEwsUUFBdkI7QUFDRDs7QUFFRCxNQUFNRSxRQUFRLEdBQUdILFdBQVcsRUFBNUIsQ0F4WkMsQ0EwWkQ7O0FBMVpDLGlCQStaR3pRLE9BQU8sQ0FBQztBQUNWMEgsSUFBQUEsR0FBRyxFQUFIQSxHQURVO0FBRVY3QixJQUFBQSxLQUFLLEVBQUxBLEtBRlU7QUFHVmdMLElBQUFBLE9BQU8sRUFBRXRKLFdBSEM7QUFJVnVKLElBQUFBLE1BQU07QUFDSmxJLE1BQUFBLEtBQUssRUFBRTtBQUFFQyxRQUFBQSxNQUFNLEVBQUU7QUFBVjtBQURILE9BRURsRSxjQUZDLGFBRURBLGNBRkMsdUJBRURBLGNBQWMsQ0FBRW1NLE1BRmY7QUFHSkMsTUFBQUEsZ0JBQWdCLEVBQUUsSUFIZDtBQUlKN0YsTUFBQUEsS0FBSyxFQUFFdkcsY0FBRixhQUFFQSxjQUFGLHVCQUFFQSxjQUFjLENBQUV1RyxLQUpuQjtBQUtKO0FBQ0E4RixNQUFBQSxPQUFPLEVBQUUsZ0JBQUE1TCxVQUFVLFVBQVYsa0RBQVk2TCxhQUFaLHNCQUE2QjdMLFVBQTdCLGlEQUE2QixhQUFZNEwsT0FBekMsS0FBb0QsS0FOekQ7QUFPSjdLLE1BQUFBLE1BQU0sRUFBTkE7QUFQSSxNQUpJO0FBYVYrSyxJQUFBQSxNQUFNLEVBQUUzTCxZQWJFO0FBY1YyRixJQUFBQSxLQUFLLEVBQUV2RyxjQUFGLGFBQUVBLGNBQUYsdUJBQUVBLGNBQWMsQ0FBRXVHLEtBZGI7QUFlVmlHLElBQUFBLE1BQU0sRUFBRXpHLHFCQWZFO0FBZ0JWa0csSUFBQUEsUUFBUSxFQUFSQSxRQWhCVTtBQWlCVnJILElBQUFBLElBQUksRUFBSkE7QUFqQlUsR0FBRCxDQS9aVjtBQUFBLE1BNFpRNkgsU0E1WlIsWUE0WkM1TSxLQTVaRDtBQUFBLE1BNlpVNk0sV0E3WlYsWUE2WkNDLE9BN1pEO0FBQUEsTUE4WkNDLFVBOVpELFlBOFpDQSxVQTlaRDs7QUFtYkQ1UixFQUFBQSxLQUFLLENBQUM4SixTQUFOLENBQWdCLFlBQU07QUFBRTtBQUN0QixRQUFJMkgsU0FBUyxJQUFJQyxXQUFqQixFQUE4QjtBQUM1QjlNLE1BQUFBLE9BQU8sQ0FBQzJGLEdBQVIsZUFBMEJrSCxTQUExQjtBQUNBM0wsTUFBQUEsZUFBZSxJQUFJQSxlQUFlLENBQUMsSUFBRCxFQUFPLEtBQVAsRUFBYyxJQUFkLHlCQUFvQzRILFdBQXBDLGNBQW1EdEgsVUFBbkQsY0FBaUVxTCxTQUFqRSxHQUE4RSxJQUE5RSxDQUFsQztBQUNEO0FBQ0YsR0FMRCxFQUtHLENBQUNBLFNBQUQsRUFBWUMsV0FBWixDQUxIO0FBT0ExUixFQUFBQSxLQUFLLENBQUM4SixTQUFOLENBQWdCLFlBQU07QUFBRTtBQUN0QixRQUFNK0gsU0FBUztBQUFBLDBFQUFHO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBYztBQUM5QmpOLGdCQUFBQSxPQUFPLENBQUNrTixJQUFSLDZDQUFrRC9KLEdBQWxEO0FBRGdCO0FBQUEsdUJBRVY2SixVQUFVLENBQUMvRyxrQkFBRCxDQUFWLENBQStCbUIsSUFBL0IsQ0FBb0MsVUFBQytGLE9BQUQsRUFBYTtBQUFFO0FBQ3ZELHNCQUFJQSxPQUFKLEVBQWE7QUFDWG5OLG9CQUFBQSxPQUFPLENBQUMyRixHQUFSO0FBQ0E1RCxvQkFBQUEsY0FBYyxDQUFDLFVBQUFxTCxlQUFlO0FBQUEsNkJBQUlBLGVBQWUsQ0FBQ2pGLE1BQWhCLENBQXVCLFVBQUFwQyxNQUFNO0FBQUEsK0JBQUlBLE1BQU0sS0FBS0gsY0FBZjtBQUFBLHVCQUE3QixDQUFKO0FBQUEscUJBQWhCLENBQWQ7QUFDQTFCLG9CQUFBQSxRQUFRLENBQUM7QUFDUGIsc0JBQUFBLFNBQVMsRUFBRTtBQURKLHFCQUFELENBQVI7QUFJQSx3QkFBTWdLLGtCQUFrQixHQUFHL0IsTUFBTSxDQUFDQyxJQUFQLENBQVkvSCxrQkFBWixDQUEzQjs7QUFFQSx3QkFBSTZKLGtCQUFKLGFBQUlBLGtCQUFKLGVBQUlBLGtCQUFrQixDQUFFOU8sTUFBeEIsRUFBZ0M7QUFBQSxpRUFDTjhPLGtCQURNO0FBQUE7O0FBQUE7QUFDOUIsNEVBQTRDO0FBQUEsOEJBQWpDQyxTQUFpQztBQUFBLDhCQUNsQ3BDLFlBRGtDLEdBQ2pCMUgsa0JBQWtCLENBQUM4SixTQUFELENBREQsQ0FDbENwQyxZQURrQztBQUUxQ0EsMEJBQUFBLFlBQVksSUFBSUEsWUFBWSxFQUE1QjtBQUNEO0FBSjZCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFLL0I7O0FBRURsTCxvQkFBQUEsT0FBTyxDQUFDa04sSUFBUixDQUFhLDJDQUFiO0FBQ0FoSixvQkFBQUEsUUFBUSxDQUFDO0FBQ1BiLHNCQUFBQSxTQUFTLEVBQUUsS0FESjtBQUVQUixzQkFBQUEsYUFBYSxFQUFFLElBRlI7QUFHUEMsc0JBQUFBLEdBQUcsRUFBRW1EO0FBSEUscUJBQUQsQ0FBUjtBQUtBNUksb0JBQUFBLEtBQUssQ0FBQyxHQUFELENBQUwsQ0FBVytKLElBQVgsQ0FBZ0IsWUFBTTtBQUNwQnJGLHNCQUFBQSxjQUFjLENBQUMsVUFBQXFMLGVBQWU7QUFBQSwrQkFBSUEsZUFBZSxDQUFDakYsTUFBaEIsQ0FBdUIsVUFBQXBDLE1BQU07QUFBQSxpQ0FBSUEsTUFBTSxLQUFLSCxjQUFmO0FBQUEseUJBQTdCLENBQUo7QUFBQSx1QkFBaEIsQ0FBZDtBQUNBekcsc0JBQUFBLGVBQWUsU0FBZixJQUFBQSxlQUFlLFdBQWYsWUFBQUEsZUFBZSxDQUFFa0ksY0FBakIsQ0FBZ0NsRSxHQUFoQztBQUNELHFCQUhEO0FBSUQsbUJBMUJELE1BMEJPO0FBQ0xuRCxvQkFBQUEsT0FBTyxDQUFDQyxLQUFSLENBQWMsd0RBQWQ7QUFDQThCLG9CQUFBQSxjQUFjLENBQUMsVUFBQXFMLGVBQWU7QUFBQSw2QkFBSUEsZUFBZSxDQUFDakYsTUFBaEIsQ0FBdUIsVUFBQXBDLE1BQU07QUFBQSwrQkFBSUEsTUFBTSxLQUFLSCxjQUFmO0FBQUEsdUJBQTdCLENBQUo7QUFBQSxxQkFBaEIsQ0FBZDtBQUNBMUIsb0JBQUFBLFFBQVEsQ0FBQztBQUFFYixzQkFBQUEsU0FBUyxFQUFFO0FBQWIscUJBQUQsQ0FBUjtBQUNEO0FBQ0YsaUJBaENLLENBRlU7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsT0FBSDs7QUFBQSxzQkFBVDRKLFNBQVM7QUFBQTtBQUFBO0FBQUEsT0FBZjs7QUFxQ0EsUUFBSTVKLFNBQUosRUFBZTtBQUNiLFVBQUksQ0FBQ1gsZUFBTCxFQUFzQixDQUNwQjtBQUNELE9BRkQsTUFFTyxJQUFJLENBQUNTLEdBQUwsRUFBVSxDQUNmO0FBQ0QsT0FGTSxNQUVBO0FBQ0w7QUFDQXBCLFFBQUFBLGNBQWMsQ0FBQyxVQUFBcUwsZUFBZTtBQUFBLDhDQUFRQSxlQUFSLElBQXlCeEgsY0FBekI7QUFBQSxTQUFoQixDQUFkOztBQUNBcUgsUUFBQUEsU0FBUztBQUNWO0FBQ0Y7QUFDRixHQWpERCxFQWlERyxDQUFDNUosU0FBRCxFQUFZWCxlQUFaLEVBQTZCUyxHQUE3QixDQWpESDtBQW1EQTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDRSxXQUFTb0ssOEJBQVQsQ0FBd0N4TixTQUF4QyxFQUFtRCtDLEdBQW5ELEVBQXdEMEssbUJBQXhELEVBQTZFbE4sT0FBN0UsRUFBOEY7QUFDNUYsUUFBSW1OLE9BQUo7QUFDQSxRQUFNQyxhQUFhLEdBQUczTixTQUFILGFBQUdBLFNBQUgsdUJBQUdBLFNBQVMsQ0FBRTBGLEtBQVgsQ0FBaUIsTUFBakIsQ0FBdEI7QUFDQSxRQUFNa0ksWUFBWSxHQUFHbkMsY0FBYyxDQUFDMUksR0FBRCxhQUFDQSxHQUFELHVCQUFDQSxHQUFHLENBQUUzRSxPQUFOLEVBQWV1UCxhQUFmLENBQW5DOztBQUVBLFFBQUlDLFlBQVksSUFBSSxDQUFwQixFQUF1QjtBQUNyQixVQUFNQyxjQUFjLEdBQUdGLGFBQWEsQ0FBQ0MsWUFBRCxDQUFwQztBQUNBLFVBQU1FLFdBQVcsR0FBR0QsY0FBYyxDQUFDbkksS0FBZixDQUFxQixNQUFyQixDQUFwQjtBQUNBLFVBQU1xSSxVQUFVLEdBQUd0QyxjQUFjLENBQUMxSSxHQUFELGFBQUNBLEdBQUQsdUJBQUNBLEdBQUcsQ0FBRTFFLEtBQU4sRUFBYXlQLFdBQWIsQ0FBakM7O0FBRUEsVUFBSUMsVUFBVSxJQUFJLENBQWxCLEVBQXFCO0FBQ25CLFlBQU1DLFlBQVksR0FBR3RSLHlCQUF5QixDQUFDdVIsc0JBQTFCLENBQWlEUixtQkFBakQsQ0FBckI7QUFDQXhOLFFBQUFBLE9BQU8sQ0FBQzJGLEdBQVIsOEJBQWtDckYsT0FBbEMsdUNBQXNFeU4sWUFBWSxDQUFDL0IsU0FBYixDQUF1QixDQUF2QixFQUEwQixHQUExQixDQUF0RTtBQUNBLFlBQU1pQyxRQUFRLEdBQUdKLFdBQVcsQ0FBQ0MsVUFBRCxDQUE1QjtBQUNBLFlBQU1JLFdBQVcsR0FBRyxDQUFDLENBQUFwTCxHQUFHLFNBQUgsSUFBQUEsR0FBRyxXQUFILFlBQUFBLEdBQUcsQ0FBRTFFLEtBQUwsSUFBYSxFQUFkLEVBQWtCRyxNQUF0QztBQUNBc1AsUUFBQUEsV0FBVyxDQUFDQyxVQUFELENBQVgsR0FBMEJHLFFBQVEsQ0FBQ2pDLFNBQVQsQ0FBbUIsQ0FBbkIsRUFBc0JrQyxXQUFXLEdBQUcsQ0FBcEMsSUFBeUNILFlBQW5FO0FBQ0EsWUFBTUksVUFBVSxHQUFHTixXQUFXLENBQUNPLElBQVosQ0FBaUIsTUFBakIsQ0FBbkI7QUFDQVYsUUFBQUEsYUFBYSxDQUFDQyxZQUFELENBQWIsR0FBOEJRLFVBQTlCO0FBQ0FWLFFBQUFBLE9BQU8sR0FBR0MsYUFBYSxDQUFDVSxJQUFkLENBQW1CLE1BQW5CLENBQVY7QUFDRDtBQUNGOztBQUNELFdBQU9YLE9BQVA7QUFDRDs7QUFFRHJTLEVBQUFBLEtBQUssQ0FBQzhKLFNBQU4sQ0FBZ0IsWUFBTTtBQUFFO0FBQUYsYUFDTG1KLGVBREs7QUFBQTtBQUFBOztBQUFBO0FBQUEsaUZBQ3BCO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxxQkFDTXRMLFdBRE47QUFBQTtBQUFBO0FBQUE7O0FBRVF1TCxnQkFBQUEsZ0JBRlIsR0FFMkIsQ0FBQ3BJLGdCQUY1Qjs7QUFJSSxvQkFBSSxDQUFDb0ksZ0JBQUwsRUFBdUI7QUFBRTtBQUN2QixzQkFBSW5JLHFCQUFxQixLQUFLRixrQkFBOUIsRUFBa0Q7QUFDaERqRyxvQkFBQUEsT0FBTyxDQUFDdU8sSUFBUiwwRUFBK0V0SSxrQkFBL0Usa0NBQXlIRSxxQkFBekg7QUFDQW1JLG9CQUFBQSxnQkFBZ0IsR0FBRyxJQUFuQjtBQUNELG1CQUhELE1BR087QUFDTHRPLG9CQUFBQSxPQUFPLENBQUMyRixHQUFSLDJEQUErRFEscUJBQS9EO0FBQ0FqQyxvQkFBQUEsUUFBUSxDQUFDO0FBQUV4QixzQkFBQUEsZUFBZSxFQUFFO0FBQW5CLHFCQUFELENBQVI7QUFDRDtBQUNGOztBQVpMLHFCQWNRNEwsZ0JBZFI7QUFBQTtBQUFBO0FBQUE7O0FBYzRCO0FBQ3RCdE8sZ0JBQUFBLE9BQU8sQ0FBQzJGLEdBQVI7QUFDQXpCLGdCQUFBQSxRQUFRLENBQUM7QUFDUHhCLGtCQUFBQSxlQUFlLEVBQUUsS0FEVjtBQUVQRyxrQkFBQUEsYUFBYSxFQUFFLEtBRlI7QUFHUE0sa0JBQUFBLEdBQUcsRUFBRTtBQUhFLGlCQUFELENBQVIsQ0FoQk4sQ0FvQlM7O0FBcEJUO0FBQUEsdUJBc0IyQmtELGVBQWUsRUF0QjFDOztBQUFBO0FBc0JZdUcsZ0JBQUFBLE1BdEJaOztBQUFBLHFCQXdCVUEsTUF4QlY7QUFBQTtBQUFBO0FBQUE7O0FBeUJRNU0sZ0JBQUFBLE9BQU8sQ0FBQzJGLEdBQVI7QUFDQXpCLGdCQUFBQSxRQUFRLENBQUM7QUFDUHhCLGtCQUFBQSxlQUFlLEVBQUUsSUFEVjtBQUVQRyxrQkFBQUEsYUFBYSxFQUFFLElBRlI7QUFHUEMsa0JBQUFBLEdBQUcsRUFBRThKO0FBSEUsaUJBQUQsQ0FBUjtBQTFCUjtBQUFBOztBQUFBO0FBZ0NRNU0sZ0JBQUFBLE9BQU8sQ0FBQ0MsS0FBUixDQUFjLG1EQUFkO0FBQ0FpQixnQkFBQUEsZUFBZSxJQUFJQSxlQUFlLENBQUMsSUFBRCxFQUFPLEtBQVAsRUFBYyxJQUFkLHVDQUFrRDRILFdBQWxELGNBQWlFdEgsVUFBakUsR0FBK0UsSUFBL0UsQ0FBbEM7QUFDQTBDLGdCQUFBQSxRQUFRLENBQUM7QUFBRW5CLGtCQUFBQSxXQUFXLEVBQUU7QUFBZixpQkFBRCxDQUFSO0FBbENSOztBQUFBO0FBdUNJL0MsZ0JBQUFBLE9BQU8sQ0FBQzJGLEdBQVI7QUFDTTBILGdCQUFBQSxrQkF4Q1YsR0F3QytCL0IsTUFBTSxDQUFDQyxJQUFQLENBQVkvSCxrQkFBWixDQXhDL0I7O0FBQUEsc0JBMENRNkosa0JBMUNSLGFBMENRQSxrQkExQ1IsZUEwQ1FBLGtCQUFrQixDQUFFOU8sTUExQzVCO0FBQUE7QUFBQTtBQUFBOztBQTJDVXdCLGdCQUFBQSxTQTNDVixHQTJDc0JiLGNBQWMsQ0FBQ0MsZUFBRCxFQUFrQkMsTUFBbEIsQ0EzQ3BDO0FBNENVb1AsZ0JBQUFBLFNBNUNWLEdBNENzQixLQTVDdEI7O0FBQUEscUJBNkNVek8sU0E3Q1Y7QUFBQTtBQUFBO0FBQUE7O0FBOENZTyxnQkFBQUEsUUE5Q1osR0E4Q3NCLENBOUN0QjtBQUFBLHdEQWdEZ0MrTSxrQkFoRGhDO0FBQUE7O0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFnRG1CQyxnQkFBQUEsU0FoRG5CO0FBaURVaE4sZ0JBQUFBLFFBQU8sR0FBR21PLFFBQVEsQ0FBQ25CLFNBQUQsQ0FBbEI7QUFqRFYsd0NBa0R3QzlKLGtCQUFrQixDQUFDbEQsUUFBRCxDQWxEMUQsRUFrRGtCMkssVUFsRGxCLHlCQWtEa0JBLFVBbERsQixFQWtEOEJwSCxNQWxEOUIseUJBa0Q4QkEsS0FsRDlCOztBQUFBLHFCQW9EY29ILFVBcERkO0FBQUE7QUFBQTtBQUFBOztBQXFEZ0J3QyxnQkFBQUEsT0FyRGhCO0FBQUEsOEJBeURnQnhDLFVBQVUsQ0FBQ3BILE1BQUQsQ0F6RDFCLEVBdURjZixLQXZEZCxlQXVEY0EsR0F2RGQsRUF3RGMwSyxtQkF4RGQsZUF3RGNBLG1CQXhEZDs7QUEyRFksb0JBQUlBLG1CQUFtQixJQUFJek4sU0FBM0IsRUFBc0M7QUFBRTtBQUN0QzBOLGtCQUFBQSxPQUFPLEdBQUdGLDhCQUE4QixDQUFDeE4sU0FBRCxFQUFZK0MsS0FBWixFQUFpQjBLLG1CQUFqQixFQUFzQ2xOLFFBQXRDLENBQXhDO0FBQ0Q7O0FBN0RiLHFCQStEZ0JtTixPQS9EaEI7QUFBQTtBQUFBO0FBQUE7O0FBZ0VjMU4sZ0JBQUFBLFNBQVMsR0FBRzBOLE9BQVo7QUFoRWQ7QUFBQTs7QUFBQTtBQWtFY2UsZ0JBQUFBLFNBQVMsR0FBRyxJQUFaO0FBbEVkOztBQUFBO0FBQUE7QUFBQTs7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQTtBQUFBOztBQUFBOztBQUFBO0FBQUE7O0FBQUE7O0FBQUE7O0FBQUE7QUEwRU0sb0JBQUlBLFNBQUosRUFBZTtBQUFFO0FBQ2Z4TyxrQkFBQUEsT0FBTyxDQUFDMkYsR0FBUiw4QkFBa0NyRixPQUFsQztBQURhLDBEQUlXK00sa0JBSlg7O0FBQUE7QUFJYiwyRUFBNEM7QUFBakNDLHNCQUFBQSxVQUFpQztBQUNwQ2hOLHNCQUFBQSxTQURvQyxHQUMxQm1PLFFBQVEsQ0FBQ25CLFVBQUQsQ0FEa0I7QUFBQSwrQ0FFWjlKLGtCQUFrQixDQUFDbEQsU0FBRCxDQUZOLEVBRWxDMkssWUFGa0MsMEJBRWxDQSxVQUZrQyxFQUV0QnBILE9BRnNCLDBCQUV0QkEsS0FGc0I7O0FBSTFDLDBCQUFJb0gsWUFBSixFQUFnQjtBQUNWd0Msd0JBQUFBLFFBRFU7QUFBQSx1Q0FNVnhDLFlBQVUsQ0FBQ3BILE9BQUQsQ0FOQSxFQUdaNkssWUFIWSxnQkFHWkEsWUFIWSxFQUlaNUwsS0FKWSxnQkFJWkEsR0FKWSxFQUtaMEssb0JBTFksZ0JBS1pBLG1CQUxZOztBQVFkLDRCQUFJQSxvQkFBbUIsSUFBSSxDQUFDQyxRQUE1QixFQUFxQztBQUMvQmtCLDBCQUFBQSxtQkFEK0IsR0FDVCxJQURTOztBQUduQyw4QkFBSTdMLEtBQUosRUFBUztBQUNQLGdDQUFJNEwsWUFBSixFQUFrQjtBQUFBLHNEQUNlbFMsZ0JBQWdCLENBQUNvUyw2QkFBakIsQ0FBK0NwQixvQkFBL0MsRUFBb0VrQixZQUFwRSxDQURmLEVBQ1JHLGtCQURRLHlCQUNSQSxrQkFEUTtBQUVoQkYsOEJBQUFBLG1CQUFtQixHQUFHRSxrQkFBdEI7QUFDRCw2QkFIRCxNQUdPO0FBQ0xGLDhCQUFBQSxtQkFBbUIsR0FBR25CLG9CQUF0QjtBQUNEOztBQUNEc0IsNEJBQUFBLFdBQVcsR0FBR0gsbUJBQW1CLEtBQUl4UCxlQUFKLGFBQUlBLGVBQUosdUJBQUlBLGVBQWUsQ0FBRTRQLFdBQWpCLENBQTZCak0sS0FBRyxDQUFDM0UsT0FBakMsRUFBMEMyRSxLQUFHLENBQUMxRSxLQUE5QyxFQUFxRDtBQUFDRSw4QkFBQUEsWUFBWSxFQUFFcVE7QUFBZiw2QkFBckQsQ0FBSixDQUFqQztBQUNEO0FBQ0Y7QUFDRjtBQUNGO0FBOUJZO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBZ0NiNU8sa0JBQUFBLFNBQVMsR0FBR3ZFLE1BQU0sQ0FBQ3dULE1BQVAsQ0FBY0YsV0FBZCxFQUEyQjtBQUFFRyxvQkFBQUEsY0FBYyxFQUFFO0FBQWxCLG1CQUEzQixDQUFaO0FBQ0Q7O0FBRUQsb0JBQUlsUCxTQUFKLEVBQWU7QUFDYkMsa0JBQUFBLE9BQU8sQ0FBQzJGLEdBQVIsbURBQXVENUYsU0FBUyxDQUFDaU0sU0FBVixDQUFvQixDQUFwQixFQUF1QixHQUF2QixDQUF2RDtBQUNBakssa0JBQUFBLGNBQWMsQ0FBQyxVQUFBcUwsZUFBZTtBQUFBLHdEQUFRQSxlQUFSLElBQXlCeEgsY0FBekI7QUFBQSxtQkFBaEIsQ0FBZDtBQUNBMUIsa0JBQUFBLFFBQVEsQ0FBQztBQUFDbEIsb0JBQUFBLFdBQVcsRUFBRWpELFNBQWQ7QUFBeUJzRCxvQkFBQUEsU0FBUyxFQUFFLElBQXBDO0FBQTBDTixvQkFBQUEsV0FBVyxFQUFFO0FBQXZELG1CQUFELENBQVI7QUFDRCxpQkFKRCxNQUlPO0FBQ0gvQyxrQkFBQUEsT0FBTyxDQUFDQyxLQUFSLHlGQUErRjZJLFdBQS9GLGNBQThHdEgsVUFBOUc7QUFDQU4sa0JBQUFBLGVBQWUsSUFBSUEsZUFBZSxDQUFDLElBQUQsRUFBTyxLQUFQLEVBQWMsSUFBZCxtREFBOEQ0SCxXQUE5RCxjQUE2RXRILFVBQTdFLEdBQTJGLElBQTNGLENBQWxDO0FBQ0EwQyxrQkFBQUEsUUFBUSxDQUFDO0FBQUVuQixvQkFBQUEsV0FBVyxFQUFFO0FBQWYsbUJBQUQsQ0FBUjtBQUNIOztBQXJIUDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxPQURvQjtBQUFBO0FBQUE7O0FBMkhwQnNMLElBQUFBLGVBQWU7QUFDaEIsR0E1SEQsRUE0SEcsQ0FBQ3RMLFdBQUQsQ0E1SEgsRUE1Z0JDLENBMG9CRDs7QUExb0JDLGNBMm9CbUJrRyxVQUFVLElBQUksRUEzb0JqQztBQUFBLE1BMm9CTzlLLE9BM29CUCxTQTJvQk9BLE9BM29CUDs7QUE2b0JEL0MsRUFBQUEsS0FBSyxDQUFDOEosU0FBTixDQUFnQixZQUFNO0FBQ3BCLFFBQU1nSyxhQUFhLEdBQUcvUCxlQUFILGFBQUdBLGVBQUgsdUJBQUdBLGVBQWUsQ0FBRXVFLFlBQXZDOztBQUNBLFFBQUl5TCxhQUFhLEdBQUcsSUFBSWpNLEdBQUosRUFBcEI7QUFDQSxRQUFJa00sZ0JBQWdCLEdBQUcsS0FBdkI7QUFDQSxRQUFNQyxJQUFJLEdBQUdGLGFBQWI7QUFDQSxRQUFNRyxjQUFjLEdBQUduTyw0QkFBSCxhQUFHQSw0QkFBSCx1QkFBR0EsNEJBQTRCLENBQUUvQixNQUFyRDtBQUNBLFFBQU1tUSxlQUFlLEdBQUdwTyw0QkFBSCxhQUFHQSw0QkFBSCx1QkFBR0EsNEJBQTRCLENBQUVxTyxRQUF0RDtBQUNBLFFBQUlDLGdCQUFnQixHQUFHLElBQXZCLENBUG9CLENBU3BCOztBQUNBLFFBQUlQLGFBQWEsU0FBYixJQUFBQSxhQUFhLFdBQWIsSUFBQUEsYUFBYSxDQUFFM1EsTUFBZixJQUNGZ1IsZUFERSxJQUVEblEsTUFBTSxLQUFLa1EsY0FGVixJQUdGQyxlQUFlLENBQUNwUixPQUFELENBSGIsSUFHMEI7QUFDNUJ3RCxJQUFBQSxhQUpFLGFBSUZBLGFBSkUsZUFJRkEsYUFBYSxDQUFFK04sS0FKakIsRUFLRTtBQUNBO0FBQ0EsVUFBSSxDQUFDaFQsT0FBTyxDQUFDa0csaUJBQUQsRUFBb0JqQixhQUFwQixDQUFSLElBQ0YsQ0FBQ2pGLE9BQU8sQ0FBQ2dILFlBQUQsRUFBZXdMLGFBQWYsQ0FEVixFQUN5QztBQUFBOztBQUN2QyxZQUFNUyxjQUFjLEdBQUcsRUFBdkI7QUFDQSxZQUFNQyxVQUFVLEdBQUcsRUFBbkIsQ0FGdUMsQ0FFakI7O0FBQ3RCLFlBQUlDLFVBQVUsR0FBR1gsYUFBYSxDQUFDLENBQUQsQ0FBYixDQUFpQjlRLEtBQWxDOztBQUVBLFlBQUksT0FBT3lSLFVBQVAsS0FBc0IsUUFBMUIsRUFBb0M7QUFDbENBLFVBQUFBLFVBQVUsR0FBR3BCLFFBQVEsQ0FBQ29CLFVBQUQsQ0FBckI7QUFDRDs7QUFFRCxZQUFJQyxTQUFTLEdBQUdELFVBQWhCOztBQUVBLGFBQUssSUFBSS9RLENBQUMsR0FBRyxDQUFSLEVBQVdDLENBQUMsR0FBR21RLGFBQWEsQ0FBQzNRLE1BQWxDLEVBQTBDTyxDQUFDLEdBQUdDLENBQTlDLEVBQWlERCxDQUFDLEVBQWxELEVBQXNEO0FBQ3BELGNBQU1aLFFBQVEsR0FBR2dSLGFBQWEsQ0FBQ3BRLENBQUQsQ0FBOUI7QUFEb0QsY0FHbERYLFNBSGtELEdBS2hERCxRQUxnRCxDQUdsREMsT0FIa0Q7QUFBQSxjQUlsREMsS0FKa0QsR0FLaERGLFFBTGdELENBSWxERSxLQUprRCxFQU1wRDs7QUFDQSxjQUFJMlIsTUFBTSxHQUFHRixVQUFVLEdBQUcvUSxDQUExQjs7QUFDQWdSLFVBQUFBLFNBQVMsR0FBR0MsTUFBWjtBQUNBSCxVQUFBQSxVQUFVLFdBQUl6UixTQUFKLGNBQWU0UixNQUFmLEVBQVYsYUFBd0M1UixTQUF4QyxjQUFtREMsS0FBbkQ7O0FBRUEsY0FBSSxDQUFDdVIsY0FBYyxDQUFDeFIsU0FBRCxDQUFuQixFQUE4QjtBQUM1QndSLFlBQUFBLGNBQWMsQ0FBQ3hSLFNBQUQsQ0FBZCxHQUEwQixFQUExQjtBQUNEOztBQUVELGNBQUlHLFlBQVksR0FBRyxFQUFuQjs7QUFFQSxjQUFLLE9BQU9GLEtBQVAsS0FBaUIsUUFBbEIsSUFBZ0NBLEtBQUssQ0FBQzBCLFFBQU4sQ0FBZSxHQUFmLENBQXBDLEVBQTBEO0FBQ3hELGdCQUFNa1EsTUFBTSxHQUFHclQsU0FBUyxDQUFDNFMsZUFBRCxZQUFxQnBSLFNBQXJCLGNBQWdDQyxLQUFoQyxFQUF4Qjs7QUFEd0Qsd0RBR2hDNFIsTUFIZ0M7QUFBQTs7QUFBQTtBQUd4RCxxRUFBZ0M7QUFBQSxvQkFBckJDLFNBQXFCO0FBQzlCLG9CQUFNQyxFQUFFLEdBQUdELFNBQVMsQ0FBQzVSLFNBQVYsQ0FBb0JDLFlBQS9CO0FBQ0FBLGdCQUFBQSxZQUFZLEdBQUdBLFlBQVksQ0FBQzZSLE1BQWIsQ0FBb0JELEVBQXBCLENBQWY7QUFDRDtBQU51RDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBT3pELFdBUEQsTUFPTztBQUFBOztBQUNMNVIsWUFBQUEsWUFBWSw0QkFBR2lSLGVBQWUsQ0FBQ3BSLFNBQUQsQ0FBZixDQUF5QkMsS0FBekIsQ0FBSCwwREFBRyxzQkFBaUNFLFlBQWhEO0FBQ0Q7O0FBRUQsY0FBSUEsWUFBSixFQUFrQjtBQUNoQkEsWUFBQUEsWUFBWSxHQUFHdkIsbUJBQW1CLENBQUN1QixZQUFELENBQWxDO0FBQ0FxUixZQUFBQSxjQUFjLENBQUN4UixTQUFELENBQWQsQ0FBd0I0UixNQUF4QixJQUFrQztBQUFFelIsY0FBQUEsWUFBWSxFQUFaQTtBQUFGLGFBQWxDOztBQUNBK1EsWUFBQUEsSUFBSSxDQUFDZSxHQUFMLFdBQVlqUyxTQUFaLGNBQXVCQyxLQUF2QixHQUFnQ0UsWUFBaEM7QUFDRDtBQUNGLFNBNUNzQyxDQThDdkM7OztBQTlDdUMsb0NBK0NyQnFELGFBL0NxQixhQStDckJBLGFBL0NxQixpREErQ3JCQSxhQUFhLENBQUVQLFNBL0NNLDJEQStDckIsdUJBQTBCcUUsS0FBMUIsQ0FBZ0MsR0FBaEMsQ0EvQ3FCO0FBQUE7QUFBQSxZQStDaEN0SCxRQS9DZ0M7O0FBZ0R2QyxZQUFJa1MsTUFBTSxhQUFNbFMsUUFBTixjQUFpQjBSLFVBQWpCLENBQVY7O0FBRUEsWUFBSUMsU0FBUyxJQUFJRCxVQUFqQixFQUE2QjtBQUMzQlEsVUFBQUEsTUFBTSxlQUFRUCxTQUFSLENBQU47QUFDRDs7QUFFRCxZQUFNUSxZQUFZLEdBQUcvVCx3QkFBd0IsQ0FBQztBQUM1Q2dVLFVBQUFBLFVBQVUsRUFBRVosY0FEZ0M7QUFFNUM3TSxVQUFBQSxHQUFHLEVBQUV1TixNQUZ1QztBQUc1Q1gsVUFBQUEsS0FBSyxFQUFFL04sYUFBRixhQUFFQSxhQUFGLHVCQUFFQSxhQUFhLENBQUUrTixLQUhzQjtBQUk1Q2MsVUFBQUEsVUFBVSxFQUFFN08sYUFBRixhQUFFQSxhQUFGLHVCQUFFQSxhQUFhLENBQUU2TztBQUppQixTQUFELENBQTdDOztBQU9BLFlBQU12TixXQUFVLEdBQUcsSUFBSUMsR0FBSixFQUFuQjs7QUFFQSxZQUFJb04sWUFBSixhQUFJQSxZQUFKLGVBQUlBLFlBQVksQ0FBRUcsSUFBbEIsRUFBd0I7QUFDdEJILFVBQUFBLFlBQVksQ0FBQ0ksT0FBYixDQUFxQixVQUFDQyxLQUFELEVBQVFDLEdBQVIsRUFBZ0I7QUFDbkMsZ0JBQU1DLElBQUksR0FBR2pCLFVBQVUsQ0FBQ2dCLEdBQUQsQ0FBdkI7O0FBRUEzTixZQUFBQSxXQUFVLENBQUNtTixHQUFYLENBQWVTLElBQWYsRUFBcUJGLEtBQUssQ0FBQ0csR0FBTixDQUFVLFVBQUFDLElBQUk7QUFBQSxxREFDNUJBLElBRDRCO0FBQ3RCQyxnQkFBQUEsSUFBSSxFQUFFMVYsSUFBSSxDQUFDMlYsZUFBTCxDQUFxQkYsSUFBSSxDQUFDQyxJQUExQjtBQURnQjtBQUFBLGFBQWQsQ0FBckI7QUFHRCxXQU5EO0FBT0Q7O0FBQ0Q3QixRQUFBQSxhQUFhLEdBQUdsTSxXQUFoQjtBQUNBd00sUUFBQUEsZ0JBQWdCLEdBQUc5TixhQUFuQjtBQUNBeU4sUUFBQUEsZ0JBQWdCLEdBQUcsSUFBbkI7QUFDRDtBQUNGOztBQUVELFFBQU1qTCxRQUFhLEdBQUcsRUFBdEIsQ0FoR29CLENBa0dwQjs7QUFDQSxRQUFJLENBQUM3RyxjQUFjLENBQUNxRyxlQUFELEVBQWtCMEwsSUFBbEIsQ0FBbkIsRUFBNEM7QUFDMUNsTCxNQUFBQSxRQUFRLENBQUNSLGVBQVQsR0FBMkIwTCxJQUEzQjtBQUNEOztBQUVELFFBQU02QixZQUFZLEdBQUcsQ0FBQTlQLFNBQVMsU0FBVCxJQUFBQSxTQUFTLFdBQVQsWUFBQUEsU0FBUyxDQUFFa0IsU0FBWCxPQUF5QkcsZ0JBQXpCLGFBQXlCQSxnQkFBekIsdUJBQXlCQSxnQkFBZ0IsQ0FBRUgsU0FBM0MsQ0FBckI7O0FBRUEsUUFBSTRPLFlBQVksSUFBSSxDQUFDeFMsYUFBYSxDQUFDZ0YsWUFBRCxFQUFld0wsYUFBZixDQUFsQyxFQUFpRTtBQUMvRC9LLE1BQUFBLFFBQVEsQ0FBQ1QsWUFBVCxHQUF3QndMLGFBQXhCO0FBQ0EvSyxNQUFBQSxRQUFRLENBQUN2QixpQkFBVCxHQUE2QjZNLGdCQUE3QjtBQUNBdEwsTUFBQUEsUUFBUSxDQUFDbEIsVUFBVCxHQUFzQmtNLGFBQXRCO0FBQ0Q7O0FBRUQsUUFBSU0sZ0JBQUosRUFBc0I7QUFDcEJ0TCxNQUFBQSxRQUFRLENBQUN2QixpQkFBVCxHQUE2QjZNLGdCQUE3QjtBQUNEOztBQUVELFFBQUlMLGdCQUFKLEVBQXNCO0FBQ3BCLFVBQUksQ0FBQzlSLGNBQWMsQ0FBQzJGLFVBQVUsSUFBSyxJQUFJQyxHQUFKLEVBQWhCLEVBQTRCaU0sYUFBNUIsQ0FBbkIsRUFBK0Q7QUFDN0RoTCxRQUFBQSxRQUFRLENBQUNsQixVQUFULEdBQXNCa00sYUFBdEI7QUFDRDtBQUNGOztBQUVELFFBQUk3RCxNQUFNLENBQUNDLElBQVAsQ0FBWXBILFFBQVosRUFBc0I1RixNQUExQixFQUFrQztBQUNoQzJGLE1BQUFBLFFBQVEsQ0FBQ0MsUUFBRCxDQUFSO0FBQ0Q7QUFDRixHQTVIRCxFQTRIRyxDQUNEN0MsS0FEQyxFQUVERSxVQUZDLEVBR0RwQyxNQUhDLEVBSUQwSixXQUpDLEVBS0QzSixlQUxDLGFBS0RBLGVBTEMsdUJBS0RBLGVBQWUsQ0FBRXVFLFlBTGhCLEVBTUR2Qyw0QkFOQyxFQU9EUSxhQVBDLENBNUhIO0FBc0lBdkcsRUFBQUEsS0FBSyxDQUFDOEosU0FBTixDQUFnQixZQUFNO0FBQUU7QUFDdEJoQixJQUFBQSxRQUFRLENBQUM7QUFDUFQsTUFBQUEscUJBQXFCLEVBQUUsSUFEaEI7QUFFUEQsTUFBQUEsa0JBQWtCLEVBQUUsRUFGYjtBQUdQYixNQUFBQSxrQkFBa0IsRUFBRTtBQUhiLEtBQUQsQ0FBUjtBQUtELEdBTkQsRUFNRyxDQUFDc0csVUFBRCxDQU5IOztBQVFBLE1BQU1rSSwyQkFBMkIsR0FBRyxTQUE5QkEsMkJBQThCLENBQUMvUCxTQUFELEVBQVlnUSxPQUFaLEVBQXdCO0FBQzFEdE4sSUFBQUEsU0FBUyxDQUFDLFVBQUFNLFNBQVM7QUFBQSw2Q0FDZEEsU0FEYztBQUVqQlgsUUFBQUEscUJBQXFCLGtDQUFPVyxTQUFTLENBQUNYLHFCQUFqQixxQ0FBNENyQyxTQUFTLENBQUNqRCxPQUF0RCxjQUFpRWlELFNBQVMsQ0FBQ2hELEtBQTNFLEdBQXFGZ1QsT0FBckY7QUFGSjtBQUFBLEtBQVYsQ0FBVDtBQUlELEdBTEQ7O0FBT0EsTUFBSWxDLGFBQWEsR0FBRy9QLGVBQUgsYUFBR0EsZUFBSCx1QkFBR0EsZUFBZSxDQUFFdUUsWUFBckM7O0FBRUF0SSxFQUFBQSxLQUFLLENBQUM4SixTQUFOLENBQWdCLFlBQU07QUFBQTs7QUFDcEIsMEJBQUlnSyxhQUFKLDJDQUFJLGVBQWUzUSxNQUFuQixFQUEyQjtBQUFBLGtCQUNXWSxlQUFlLElBQUksRUFEOUI7QUFBQSxVQUNqQmlDLFdBRGlCLFNBQ2pCQSxTQURpQjtBQUFBLFVBQ05NLGNBRE0sU0FDTkEsWUFETTs7QUFFekIxQixNQUFBQSxPQUFPLENBQUMyRixHQUFSLHdDQUFtRDtBQUFFdkUsUUFBQUEsU0FBUyxFQUFUQSxXQUFGO0FBQWFNLFFBQUFBLFlBQVksRUFBWkE7QUFBYixPQUFuRDtBQUNEO0FBQ0YsR0FMRCxFQUtHLENBQUN3TixhQUFELENBTEg7O0FBT0EsTUFBSSxvQkFBQ0EsYUFBRCwyQ0FBQyxlQUFlM1EsTUFBaEIsQ0FBSixFQUE0QjtBQUFFO0FBQzVCMlEsSUFBQUEsYUFBYSxHQUFHLG1CQUFNOU4sU0FBTixFQUFoQjtBQUNEOztBQUVELE1BQU1pUSxzQkFBc0IscUJBQUduQyxhQUFILG1EQUFHLGVBQWU0QixHQUFmLENBQW1CLFVBQUNRLGlCQUFELEVBQW9CMUYsS0FBcEIsRUFBOEI7QUFBQTs7QUFDOUUsUUFBTTJGLG1CQUFtQixHQUFHLENBQUFELGlCQUFpQixTQUFqQixJQUFBQSxpQkFBaUIsV0FBakIscUNBQUFBLGlCQUFpQixDQUFFalQsU0FBbkIsZ0ZBQThCQyxZQUE5QixLQUE4QyxFQUExRSxDQUQ4RSxDQUU5RTs7QUFGOEUsZ0JBR25EZ1QsaUJBQWlCLElBQUksRUFIOEI7QUFBQSxRQUd0RW5ULE9BSHNFLFNBR3RFQSxPQUhzRTtBQUFBLFFBRzdEQyxLQUg2RCxTQUc3REEsS0FINkQ7O0FBSTlFLFFBQU1rRSxTQUFTLEdBQUcsQ0FBQUcsZ0JBQWdCLFNBQWhCLElBQUFBLGdCQUFnQixXQUFoQixZQUFBQSxnQkFBZ0IsQ0FBRUgsU0FBbEIsTUFBK0JsQixTQUEvQixhQUErQkEsU0FBL0IsdUJBQStCQSxTQUFTLENBQUVrQixTQUExQyxDQUFsQjs7QUFDQSxRQUFNMkcsVUFBVSxtQ0FDWGlHLGFBRFc7QUFFZC9RLE1BQUFBLE9BQU8sRUFBUEEsT0FGYztBQUdkbUUsTUFBQUEsU0FBUyxFQUFUQSxTQUhjO0FBSWRsRSxNQUFBQSxLQUFLLEVBQUxBO0FBSmMsTUFBaEI7O0FBTUEsUUFBTW9ULDZCQUE2QixtQ0FDOUI5Ryw0QkFEOEI7QUFFakNLLE1BQUFBLFlBQVksRUFBRWEsS0FGbUI7QUFHakMyRixNQUFBQSxtQkFBbUIsRUFBbkJBLG1CQUhpQztBQUlqQ25RLE1BQUFBLFNBQVMsRUFBRTZILFVBSnNCO0FBS2pDdkUsTUFBQUEsY0FBYyxFQUFkQTtBQUxpQyxNQUFuQzs7QUFRQSxRQUFJK00sMkJBQTJCLEdBQUcsS0FBbEM7O0FBRUEsUUFBSTdOLHlCQUFKLEVBQStCO0FBQzdCNk4sTUFBQUEsMkJBQTJCLEdBQUc3Tix5QkFBeUIsQ0FBQ3pGLE9BQTFCLElBQXFDQSxPQUFyQyxJQUFnRHlGLHlCQUF5QixDQUFDeEYsS0FBMUIsSUFBbUNBLEtBQWpIO0FBQ0Q7O0FBRUQsd0JBQ0Usb0JBQUMsYUFBRCxlQUNNZSxlQUROO0FBRUUsTUFBQSxZQUFZLEVBQUUrSyxZQUZoQjtBQUdFLE1BQUEsWUFBWSxFQUFFMEIsS0FIaEI7QUFJRSxNQUFBLGlCQUFpQixFQUFFLENBQUMvSSxhQUp0QjtBQUtFLE1BQUEsU0FBUyxFQUFFbUcsU0FMYjtBQU1FLE1BQUEsa0JBQWtCLEVBQUVvQixtQkFOdEI7QUFPRSxNQUFBLFFBQVEsRUFBRXJHLFFBUFo7QUFRRSxNQUFBLGNBQWMsRUFBRXJELGNBUmxCO0FBU0UsTUFBQSxJQUFJLEVBQUV1RCxLQVRSO0FBVUUsTUFBQSwyQkFBMkIsRUFBRXdOLDJCQVYvQjtBQVdFLE1BQUEsR0FBRyxFQUFFN0YsS0FYUDtBQVlFLE1BQUEsaUJBQWlCLEVBQUU7QUFBQSxlQUFNMUgsUUFBUSxDQUFDO0FBQUVOLFVBQUFBLHlCQUF5QixFQUFFO0FBQTdCLFNBQUQsQ0FBZDtBQUFBLE9BWnJCO0FBYUUsTUFBQSw0QkFBNEIsRUFBRXpDLDRCQWJoQztBQWNFLE1BQUEsUUFBUSxFQUFFMEksUUFkWjtBQWVFLE1BQUEsU0FBUyxFQUFFWixVQWZiO0FBZ0JFLE1BQUEsTUFBTSxFQUFFNUYsU0FoQlYsQ0FpQkU7QUFqQkY7QUFrQkUsTUFBQSw0QkFBNEIsRUFBRW1PLDZCQWxCaEM7QUFtQkUsTUFBQSxvQkFBb0IsRUFBRXZQLG9CQW5CeEI7QUFvQkUsTUFBQSxNQUFNLEVBQUVMLE1BcEJWO0FBcUJFLE1BQUEsU0FBUyxFQUFFTSxTQXJCYjtBQXNCRSxNQUFBLDJCQUEyQixFQUFFaVA7QUF0Qi9CLE9BREY7QUEwQkQsR0FuRDhCLENBQS9COztBQXFEQSxNQUFNTyxzQkFBc0IsR0FBRyxTQUF6QkEsc0JBQXlCLEdBQU07QUFDbkMsUUFBSSxDQUFBaE8sWUFBWSxTQUFaLElBQUFBLFlBQVksV0FBWixZQUFBQSxZQUFZLENBQUVuRixNQUFkLElBQXVCLENBQTNCLEVBQThCO0FBQzVCMkYsTUFBQUEsUUFBUSxDQUFDO0FBQUVkLFFBQUFBLGtCQUFrQixFQUFFO0FBQXRCLE9BQUQsQ0FBUjtBQUNELEtBRkQsTUFFTyxJQUFJLENBQUFNLFlBQVksU0FBWixJQUFBQSxZQUFZLFdBQVosWUFBQUEsWUFBWSxDQUFFbkYsTUFBZCxNQUF5QixDQUE3QixFQUFnQztBQUNyQzJGLE1BQUFBLFFBQVEsQ0FBQztBQUFFTixRQUFBQSx5QkFBeUIsRUFBRUYsWUFBWSxDQUFDLENBQUQ7QUFBekMsT0FBRCxDQUFSO0FBQ0Q7QUFDRixHQU5EOztBQVFBLE1BQU1pTyxlQUFlLEdBQUcsU0FBbEJBLGVBQWtCLFNBQWU7QUFBQSxRQUFadEksS0FBWSxVQUFaQSxLQUFZOztBQUNyQyxRQUFNdUksUUFBUSxzQkFBT3ZJLEtBQVAsQ0FBZDs7QUFFQSxRQUFJd0ksZ0JBQWdCLEdBQUcsS0FBdkIsQ0FIcUMsQ0FLckM7O0FBQ0EsUUFBSXBPLHFCQUFKLEVBQTJCO0FBQ3pCb08sTUFBQUEsZ0JBQWdCLEdBQUd2RyxNQUFNLENBQUN3RyxNQUFQLENBQWNyTyxxQkFBZCxFQUFxQ3NPLEtBQXJDLENBQTJDLFVBQUFDLFdBQVc7QUFBQSxlQUFJQSxXQUFXLEtBQUssSUFBcEI7QUFBQSxPQUF0RCxDQUFuQjtBQUNEOztBQUVELFFBQUlDLFNBQVMsR0FBRyxJQUFoQjtBQUNBLFFBQUlDLGVBQWUsR0FBRyxFQUF0Qjs7QUFFQSxRQUFJTCxnQkFBSixFQUFzQjtBQUNwQkksTUFBQUEsU0FBUyxnQkFBRyxvQkFBQyxPQUFEO0FBQVMsUUFBQSxFQUFFLHVCQUFnQnpRLFVBQWhCLENBQVg7QUFBeUMsUUFBQSxLQUFLLEVBQUM7QUFBL0MsUUFBWjtBQUNBMFEsTUFBQUEsZUFBZSxHQUFHLG9CQUFsQjtBQUNELEtBSEQsTUFHTztBQUNMRCxNQUFBQSxTQUFTLGdCQUFHLG9CQUFDLFlBQUQ7QUFBYyxRQUFBLEVBQUUsbUNBQTRCelEsVUFBNUIsQ0FBaEI7QUFBMEQsUUFBQSxLQUFLLEVBQUM7QUFBaEUsUUFBWjtBQUNBMFEsTUFBQUEsZUFBZSxHQUFHLHNCQUFsQjtBQUNEOztBQUVELFFBQUlqUSxvQkFBb0IsSUFBSVQsVUFBVSxLQUFLLGlCQUEzQyxFQUE4RDtBQUM1RG9RLE1BQUFBLFFBQVEsQ0FBQ08sSUFBVCxlQUNFLG9CQUFDLFVBQUQ7QUFDRSxRQUFBLEVBQUUsMkJBQW9CM1EsVUFBcEIsQ0FESjtBQUVFLFFBQUEsR0FBRyxFQUFDLGlCQUZOO0FBR0UsUUFBQSxPQUFPLEVBQUVrUSxzQkFIWDtBQUlFLFFBQUEsS0FBSyxFQUFFUSxlQUpUO0FBS0Usc0JBQVlBLGVBTGQ7QUFNRSxRQUFBLEtBQUssRUFBRTtBQUFFRSxVQUFBQSxNQUFNLEVBQUU7QUFBVjtBQU5ULFNBUUdILFNBUkgsQ0FERjtBQVlEOztBQUVETCxJQUFBQSxRQUFRLENBQUNPLElBQVQsZUFDRSx1REFDRSxvQkFBQyxrQkFBRCxlQUF3QmxMLGlCQUF4QjtBQUEyQyxNQUFBLFNBQVMsRUFBRVEsZUFBZSxJQUFJcEU7QUFBekUsT0FERixlQUVFLG9CQUFDLFdBQUQ7QUFBYSxNQUFBLEtBQUssRUFBRXVFLFdBQXBCO0FBQWlDLE1BQUEsT0FBTyxFQUFFRCxhQUExQztBQUF5RCxNQUFBLElBQUksRUFBRUosaUJBQS9EO0FBQWtGLE1BQUEsT0FBTyxFQUFFQyxrQkFBM0Y7QUFBK0csTUFBQSxTQUFTLEVBQUdDLGVBQWUsSUFBSXBFLFNBQTlJO0FBQTBKLE1BQUEsSUFBSSxFQUFFd0UsVUFBaEs7QUFBNEssTUFBQSxXQUFXLEVBQUVDO0FBQXpMLE1BRkYsQ0FERjtBQU9BLFdBQU84SixRQUFQO0FBQ0QsR0E1Q0Q7O0FBOENBLHNCQUNFLG9CQUFDLHlCQUFEO0FBQ0UsSUFBQSxVQUFVLEVBQUUzTyxVQURkO0FBRUUsSUFBQSxZQUFZLEVBQUUsc0JBQUFrTSxhQUFhLEVBQUksQ0FDN0I7QUFDRCxLQUpIO0FBS0UsSUFBQSxLQUFLLEVBQUV4TixhQUFGLGFBQUVBLGFBQUYsdUJBQUVBLGFBQWEsQ0FBRStOLEtBTHhCO0FBTUUsSUFBQSxVQUFVLEVBQUUxUyxhQUFhLENBQUMyRSxhQUFELGFBQUNBLGFBQUQsdUJBQUNBLGFBQWEsQ0FBRTZPLFVBQWhCLENBTjNCO0FBT0UsSUFBQSxlQUFlLEVBQUU3TTtBQVBuQixrQkFTRSxvQkFBQyxJQUFEO0FBQ0UsSUFBQSxFQUFFLDJCQUFvQnJELE9BQXBCLENBREo7QUFFRSxJQUFBLEtBQUssRUFBRTZKLGNBRlQ7QUFHRSxJQUFBLGFBQWEsRUFBRTlCLGNBQWMsR0FBRyxXQUhsQztBQUlFLElBQUEsS0FBSyxFQUFFZ0IsS0FKVDtBQUtFLElBQUEsT0FBTyxFQUFFOUksT0FMWDtBQU1FLElBQUEsT0FBTyxFQUFFK0ksT0FOWDtBQU9FLElBQUEsT0FBTyxFQUFFQyxPQVBYO0FBUUUsSUFBQSxRQUFRLEVBQUV4RixRQVJaO0FBU0UsSUFBQSxTQUFTLEVBQUV5RixTQVRiO0FBVUUsSUFBQSxVQUFVLEVBQUVFLFVBVmQ7QUFXRSxJQUFBLFdBQVcsRUFBRTFGLFdBWGY7QUFZRSxJQUFBLFlBQVksRUFBRTJGLFlBWmhCO0FBYUUsSUFBQSxZQUFZLEVBQUVGLFlBYmhCO0FBY0UsSUFBQSxlQUFlLEVBQUVHLGVBZG5CO0FBZUUsSUFBQSxrQkFBa0IsRUFBRWpCLG9CQWZ0QjtBQWdCRSxJQUFBLGtCQUFrQixNQWhCcEI7QUFpQkUsSUFBQSxXQUFXLEVBQUVFLFdBakJmO0FBa0JFLElBQUEsVUFBVSxFQUFFNUgsVUFBVSxHQUFHO0FBQUEsYUFBTUEsVUFBVSxDQUFDSCxFQUFELEVBQUt1SCxjQUFMLENBQWhCO0FBQUEsS0FBSCxHQUEwQyxJQWxCbEU7QUFtQkUsSUFBQSxRQUFRLEVBQUVrQyxVQUFVLElBQUlDLGVBbkIxQjtBQW9CRSxJQUFBLEtBQUssRUFBRW5ILFNBQVMsSUFBSSxDQUFDVixrQkFwQnZCO0FBcUJFLElBQUEsVUFBVSxFQUFFO0FBQUEsYUFBTXVCLFFBQVEsQ0FBQztBQUFFbkIsUUFBQUEsV0FBVyxFQUFFO0FBQWYsT0FBRCxDQUFkO0FBQUEsS0FyQmQ7QUFzQkUsSUFBQSxlQUFlLEVBQUU0TztBQXRCbkIsa0JBd0JFO0FBQUssSUFBQSxFQUFFLEVBQUM7QUFBUixLQUNHTixzQkFESCxDQXhCRixDQVRGLGVBcUNFLG9CQUFDLGtCQUFEO0FBQ0UsSUFBQSxVQUFVLEVBQUU3UCxVQURkO0FBRUUsSUFBQSxJQUFJLEVBQUU0QixrQkFGUjtBQUdFLElBQUEsT0FBTyxFQUFFO0FBQUEsYUFBTWMsUUFBUSxDQUFDO0FBQUVkLFFBQUFBLGtCQUFrQixFQUFFO0FBQXRCLE9BQUQsQ0FBZDtBQUFBLEtBSFg7QUFJRSxJQUFBLFlBQVksRUFBRU0sWUFKaEI7QUFLRSxJQUFBLHFCQUFxQixFQUFFRCxxQkFMekI7QUFNRSxJQUFBLGFBQWEsRUFBRSx1QkFBQ3JGLEtBQUQ7QUFBQSxhQUFXOEYsUUFBUSxDQUFDO0FBQ2pDTixRQUFBQSx5QkFBeUIsRUFBRXhGLEtBRE07QUFFakNnRixRQUFBQSxrQkFBa0IsRUFBRTtBQUZhLE9BQUQsQ0FBbkI7QUFBQTtBQU5qQixJQXJDRixDQURGO0FBbUREO0FBRURsRCxhQUFhLENBQUNtUyxTQUFkLEdBQTBCO0FBQ3hCO0FBQ0FsUyxFQUFBQSxNQUFNLEVBQUU5RSxTQUFTLENBQUNpWCxNQUFWLENBQWlCQyxVQUZEOztBQUd4QjtBQUNBblMsRUFBQUEsY0FBYyxFQUFFL0UsU0FBUyxDQUFDbVgsTUFKRjs7QUFLeEI7QUFDQW5TLEVBQUFBLFNBQVMsRUFBRWhGLFNBQVMsQ0FBQ2lYLE1BTkc7O0FBT3hCO0FBQ0FoUyxFQUFBQSxPQUFPLEVBQUVqRixTQUFTLENBQUNvWCxNQUFWLENBQWlCRixVQVJGOztBQVN4QjtBQUNBaFMsRUFBQUEsT0FBTyxFQUFFbEYsU0FBUyxDQUFDbVgsTUFWSzs7QUFXeEI7QUFDQWhTLEVBQUFBLGtCQUFrQixFQUFFbkYsU0FBUyxDQUFDcVgsSUFaTjs7QUFheEI7QUFDQWpTLEVBQUFBLFdBQVcsRUFBRXBGLFNBQVMsQ0FBQ3NYLElBQVYsQ0FBZUosVUFkSjs7QUFleEI7QUFDQTdSLEVBQUFBLGNBQWMsRUFBRXJGLFNBQVMsQ0FBQ3NYLElBaEJGOztBQWlCeEI7QUFDQWhTLEVBQUFBLFlBQVksRUFBRXRGLFNBQVMsQ0FBQ2lYLE1BbEJBOztBQW1CeEI7QUFDQTFSLEVBQUFBLGFBQWEsRUFBRXZGLFNBQVMsQ0FBQ2lYLE1BcEJEOztBQXFCeEI7QUFDQXpSLEVBQUFBLFVBQVUsRUFBRXhGLFNBQVMsQ0FBQ21YLE1BdEJFOztBQXVCeEI7QUFDQTFSLEVBQUFBLEVBQUUsRUFBRXpGLFNBQVMsQ0FBQ2lYLE1BeEJVOztBQXlCeEI7QUFDQXZSLEVBQUFBLElBQUksRUFBRTFGLFNBQVMsQ0FBQ3NYLElBQVYsQ0FBZUosVUExQkc7O0FBMkJ4QjtBQUNBdlIsRUFBQUEsWUFBWSxFQUFFM0YsU0FBUyxDQUFDaVgsTUE1QkE7O0FBNkJ4QjtBQUNBclIsRUFBQUEsVUFBVSxFQUFFNUYsU0FBUyxDQUFDc1gsSUE5QkU7O0FBK0J4QjtBQUNGO0FBQ0E7QUFDQTtBQUNFelIsRUFBQUEsZUFBZSxFQUFFN0YsU0FBUyxDQUFDc1gsSUFuQ0g7O0FBb0N4QjtBQUNBeFIsRUFBQUEsNEJBQTRCLEVBQUU5RixTQUFTLENBQUNtWCxNQXJDaEI7QUFzQ3hCcFIsRUFBQUEsU0FBUyxFQUFFL0YsU0FBUyxDQUFDdVgsS0FBVixDQUFnQjtBQUN6QjtBQUNBdFEsSUFBQUEsU0FBUyxFQUFFakgsU0FBUyxDQUFDaVgsTUFBVixDQUFpQkMsVUFGSDs7QUFHekI7QUFDQXBVLElBQUFBLE9BQU8sRUFBRTlDLFNBQVMsQ0FBQ3dYLFNBQVYsQ0FBb0IsQ0FBQ3hYLFNBQVMsQ0FBQ29YLE1BQVgsRUFBbUJwWCxTQUFTLENBQUNpWCxNQUE3QixDQUFwQixFQUEwREMsVUFKMUM7O0FBS3pCO0FBQ0FuVSxJQUFBQSxLQUFLLEVBQUUvQyxTQUFTLENBQUN3WCxTQUFWLENBQW9CLENBQUN4WCxTQUFTLENBQUNvWCxNQUFYLEVBQW1CcFgsU0FBUyxDQUFDaVgsTUFBN0IsQ0FBcEIsRUFBMERDO0FBTnhDLEdBQWhCLENBdENhOztBQThDeEI7QUFDQWxSLEVBQUFBLFFBQVEsRUFBRWhHLFNBQVMsQ0FBQ3VYLEtBQVYsQ0FBZ0I7QUFDeEI7QUFDQXJSLElBQUFBLFVBQVUsRUFBRWxHLFNBQVMsQ0FBQ2lYLE1BQVYsQ0FBaUJDLFVBRkw7O0FBR3hCO0FBQ0FqUixJQUFBQSxLQUFLLEVBQUVqRyxTQUFTLENBQUNpWCxNQUFWLENBQWlCQyxVQUpBOztBQUt4QjtBQUNBL1EsSUFBQUEsVUFBVSxFQUFFbkcsU0FBUyxDQUFDaVgsTUFBVixDQUFpQkMsVUFOTDs7QUFPeEI7QUFDQTlRLElBQUFBLHFCQUFxQixFQUFFcEcsU0FBUyxDQUFDaVgsTUFBVixDQUFpQkM7QUFSaEIsR0FBaEIsQ0EvQ2M7O0FBeUR4QjtBQUNBN1EsRUFBQUEsWUFBWSxFQUFFckcsU0FBUyxDQUFDeVgsR0ExREE7O0FBMkR4QjtBQUNBblIsRUFBQUEsYUFBYSxFQUFFdEcsU0FBUyxDQUFDbVgsTUE1REQ7O0FBNkR4QjtBQUNBNVEsRUFBQUEsTUFBTSxFQUFFdkcsU0FBUyxDQUFDaVgsTUFBVixDQUFpQkMsVUE5REQ7O0FBK0R4QjtBQUNBUSxFQUFBQSxzQkFBc0IsRUFBRTFYLFNBQVMsQ0FBQ3NYLElBaEVWOztBQWlFeEI7QUFDQUssRUFBQUEscUJBQXFCLEVBQUUzWCxTQUFTLENBQUNzWCxJQWxFVDs7QUFtRXhCO0FBQ0E5USxFQUFBQSxvQkFBb0IsRUFBRXhHLFNBQVMsQ0FBQ3NYLElBcEVSOztBQXFFeEI7QUFDQTdRLEVBQUFBLHFCQUFxQixFQUFFekcsU0FBUyxDQUFDc1gsSUF0RVQ7O0FBdUV4QjtBQUNBNVEsRUFBQUEsY0FBYyxFQUFFMUcsU0FBUyxDQUFDc1gsSUF4RUY7O0FBeUV4QjtBQUNBM1EsRUFBQUEsZUFBZSxFQUFFM0csU0FBUyxDQUFDc1gsSUExRUg7O0FBMkV4QjtBQUNBMVEsRUFBQUEsb0JBQW9CLEVBQUU1RyxTQUFTLENBQUNzWCxJQTVFUjs7QUE2RXhCO0FBQ0F4USxFQUFBQSxLQUFLLEVBQUU5RyxTQUFTLENBQUNpWCxNQUFWLENBQWlCQyxVQTlFQTs7QUErRXhCO0FBQ0FyUSxFQUFBQSxTQUFTLEVBQUU3RyxTQUFTLENBQUNzWCxJQWhGRzs7QUFpRnhCO0FBQ0F0USxFQUFBQSxnQkFBZ0IsRUFBRWhILFNBQVMsQ0FBQ3NYLElBbEZKOztBQW1GeEI7QUFDQXZRLEVBQUFBLG1CQUFtQixFQUFFL0csU0FBUyxDQUFDc1gsSUFBVixDQUFlSjtBQXBGWixDQUExQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgeyBjb3JlLCBTZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyIH0gZnJvbSAnc2NyaXB0dXJlLXJlc291cmNlcy1yY2wnXG5pbXBvcnQgdXNmbWpzIGZyb20gJ3VzZm0tanMnXG5pbXBvcnQgeyB1c2VFZGl0IH0gZnJvbSAnZ2l0ZWEtcmVhY3QtdG9vbGtpdCdcbmltcG9ydCB7IEljb25CdXR0b24gfSBmcm9tICdAbXVpL21hdGVyaWFsJ1xuaW1wb3J0IHsgUnhMaW5rMiwgUnhMaW5rQnJlYWsyIH0gZnJvbSAncmVhY3QtaWNvbnMvcngnXG5pbXBvcnQge1xuICBDYXJkLFxuICBFcnJvckRpYWxvZyxcbiAgRVJST1JfU1RBVEUsXG4gIE1BTklGRVNUX05PVF9MT0FERURfRVJST1IsXG4gIFVwZGF0ZUJyYW5jaEJ1dHRvbixcbiAgdXNlQnJhbmNoTWVyZ2VyLFxuICB1c2VDYXJkU3RhdGUsXG4gIHVzZUNvbnRlbnRVcGRhdGVQcm9wcyxcbiAgdXNlTWFzdGVyTWVyZ2VQcm9wcyxcbiAgdXNlVXNlckJyYW5jaCxcbn0gZnJvbSAndHJhbnNsYXRpb24taGVscHMtcmNsJ1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIH0gZnJvbSAndXctcXVvdGUtaGVscGVycydcbmltcG9ydCB7IEFsaWdubWVudEhlbHBlcnMsIFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMgfSBmcm9tICd3b3JkLWFsaWduZXItcmNsJ1xuaW1wb3J0ICogYXMgaXNFcXVhbCBmcm9tICdkZWVwLWVxdWFsJ1xuaW1wb3J0IHsgZ2V0VmVyc2VzIH0gZnJvbSAnYmlibGUtcmVmZXJlbmNlLXJhbmdlJ1xuaW1wb3J0IHsgU2NyaXB0dXJlUGFuZSwgU2NyaXB0dXJlU2VsZWN0b3IgfSBmcm9tICcuLidcbmltcG9ydCB7IHVzZVNjcmlwdHVyZVNldHRpbmdzIH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlU2NyaXB0dXJlU2V0dGluZ3MnXG5pbXBvcnQge1xuICBjbGVhbnVwVmVyc2VPYmplY3RzLFxuICBmaXhPY2N1cnJlbmNlLFxuICBnZXRSZXNvdXJjZUxpbmssXG4gIGdldFJlc291cmNlTWVzc2FnZSxcbiAgZ2V0U2NyaXB0dXJlVmVyc2lvblNldHRpbmdzLFxuICBpc09yaWdpbmFsQmlibGUsXG59IGZyb20gJy4uLy4uL3V0aWxzL1NjcmlwdHVyZVNldHRpbmdzJ1xuaW1wb3J0IHsgZGVsYXkgfSBmcm9tICcuLi8uLi91dGlscy9kZWxheSdcbmltcG9ydCB7IGFyZU1hcHNUaGVTYW1lIH0gZnJvbSAnLi4vLi4vdXRpbHMvbWFwcydcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSAnLi4vU2NyaXB0dXJlUGFuZS9zdHlsZWQnXG5pbXBvcnQge1xuICBOVF9PUklHX0xBTkcsXG4gIE9SSUdJTkFMX1NPVVJDRSxcbiAgT1RfT1JJR19MQU5HLFxufSBmcm9tICcuLi8uLi91dGlscydcbmltcG9ydCB7IFZlcnNlU2VsZWN0b3JQb3B1cCB9IGZyb20gJy4uL1ZlcnNlU2VsZWN0b3JQb3B1cCdcblxuY29uc3QgS0VZX0ZPTlRfU0laRV9CQVNFID0gJ3NjcmlwdHVyZVBhbmVGb250U2l6ZV8nXG5jb25zdCBsYWJlbCA9ICdWZXJzaW9uJ1xuY29uc3Qgc3R5bGUgPSB7IG1hcmdpblRvcDogJzE2cHgnLCB3aWR0aDogJzUwMHB4JyB9XG5cbi8qKlxuICogY3JlYXRlIGEgc2hvcnQgY29tcGFyaXNvbiB2ZXJzZSByZWYgb2JqZWN0IHdpdGhvdXQgYWxsIHRoZSB2ZXJzZURhdGFcbiAqIEBwYXJhbSB2ZXJzZVJlZlxuICovXG5mdW5jdGlvbiBjb21wYXJlT2JqZWN0KHZlcnNlUmVmKSB7XG4gIGNvbnN0IHtcbiAgICBjaGFwdGVyLFxuICAgIHZlcnNlLFxuICAgIHZlcnNlRGF0YSxcbiAgfSA9IHZlcnNlUmVmIHx8IHt9XG4gIGNvbnN0IHZlcnNlT2JqZWN0cyA9IHZlcnNlRGF0YT8udmVyc2VPYmplY3RzPy5sZW5ndGggPyBKU09OLnN0cmluZ2lmeSh2ZXJzZURhdGEudmVyc2VPYmplY3RzKSA6ICcnXG4gIHJldHVybiB7XG4gICAgY2hhcHRlcixcbiAgICB2ZXJzZSxcbiAgICB2ZXJzZU9iamVjdHMsXG4gIH1cbn1cblxuLyoqXG4gKiBjb21wYXJlIHR3byB2ZXJzZSByZWZzIHRvIHNlZSBpZiB0aGV5IGFyZSBzdWJzdGFudGlhbGx5IHNpbWlsYXJcbiAqIEBwYXJhbSB2ZXJzZXNGb3JSZWYxXG4gKiBAcGFyYW0gdmVyc2VzRm9yUmVmMlxuICovXG5mdW5jdGlvbiBhcmVWZXJzZXNTYW1lKHZlcnNlc0ZvclJlZjE6IGFueVtdLCB2ZXJzZXNGb3JSZWYyOiBhbnlbXSkge1xuICB2ZXJzZXNGb3JSZWYxID0gdmVyc2VzRm9yUmVmMSB8fCBbXVxuICB2ZXJzZXNGb3JSZWYyID0gdmVyc2VzRm9yUmVmMiB8fCBbXVxuICBsZXQgYXJlU2FtZSA9IGZhbHNlXG5cbiAgaWYgKHZlcnNlc0ZvclJlZjEubGVuZ3RoID09PSB2ZXJzZXNGb3JSZWYyLmxlbmd0aCkge1xuICAgIGFyZVNhbWUgPSB0cnVlXG5cbiAgICBmb3IgKGxldCBpID0gMCwgbD0gdmVyc2VzRm9yUmVmMS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGNvbnN0IHZlcnNlMSA9IGNvbXBhcmVPYmplY3QodmVyc2VzRm9yUmVmMVtpXSlcbiAgICAgIGNvbnN0IHZlcnNlMiA9IGNvbXBhcmVPYmplY3QodmVyc2VzRm9yUmVmMltpXSlcbiAgICAgIGFyZVNhbWUgPSBpc0VxdWFsKHZlcnNlMSwgdmVyc2UyKVxuXG4gICAgICBpZiAoIWFyZVNhbWUpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gYXJlU2FtZVxufVxuXG5leHBvcnQgY29uc3QgZ2V0Q3VycmVudEJvb2sgPSAoc2NyaXB0dXJlQ29uZmlnLCBib29rSWQpID0+IHtcbiAgY29uc3QgbGF0ZXN0QmlibGUgPSBzY3JpcHR1cmVDb25maWc/LmJvb2tPYmplY3RzXG4gIGNvbnN0IGZpbGVuYW1lID0gbGF0ZXN0QmlibGU/Lm5hbWUgLy8gTGlrZSBcIjU3LVRJVC51c2ZtXCJcbiAgY29uc3QgcmVnZXggPSAvXiguKj8pXFwudXNmbS87XG4gIGxldCBpc0Jvb2tWYWxpZCA9IGZhbHNlXG4gIGlmIChmaWxlbmFtZSkge1xuICAgIGNvbnN0IGJvb2tOYW1lID0gZmlsZW5hbWUubWF0Y2gocmVnZXgpPy5bMV0/LnRvTG93ZXJDYXNlKClcbiAgICBpc0Jvb2tWYWxpZCA9IGJvb2tOYW1lPy5pbmNsdWRlcyhib29rSWQpXG4gIH1cbiAgaWYgKGlzQm9va1ZhbGlkKSB7XG4gICAgcmV0dXJuIHNjcmlwdHVyZUNvbmZpZz8uYmlibGVVc2ZtXG4gIH1cbiAgY29uc29sZS5lcnJvcihgRXhwZWN0ZWQgJHtib29rSWR9IGJ1dCBnb3QgJHtmaWxlbmFtZX1gKVxuICByZXR1cm4gbnVsbFxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTY3JpcHR1cmVDYXJkKHtcbiAgYXBwUmVmLFxuICBhdXRoZW50aWNhdGlvbixcbiAgYm9va0luZGV4LFxuICBjYXJkTnVtLFxuICBjbGFzc2VzLFxuICBkaXNhYmxlV29yZFBvcG92ZXIsXG4gIGdldExhbmd1YWdlLFxuICBnZXRMZXhpY29uRGF0YSxcbiAgZ3JlZWtSZXBvVXJsLFxuICBoZWJyZXdSZXBvVXJsLFxuICBodHRwQ29uZmlnLFxuICBpZCxcbiAgaXNOVCxcbiAgbG9nZ2VkSW5Vc2VyLFxuICBvbk1pbmltaXplLFxuICBvblJlc291cmNlRXJyb3IsXG4gIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMsXG4gIHJlZmVyZW5jZSxcbiAgcmVzb3VyY2U6IHtcbiAgICBvd25lcixcbiAgICBsYW5ndWFnZUlkLFxuICAgIHJlc291cmNlSWQsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICB9LFxuICByZXNvdXJjZUxpbmssXG4gIHNlbGVjdGVkUXVvdGUsXG4gIHNlcnZlcixcbiAgc2V0Q2FyZHNMb2FkaW5nTWVyZ2UsXG4gIHNldENhcmRzTG9hZGluZ1VwZGF0ZSxcbiAgc2V0Q2FyZHNTYXZpbmcsXG4gIHNldFNhdmVkQ2hhbmdlcyxcbiAgc2V0V29yZEFsaWduZXJTdGF0dXMsXG4gIHRyYW5zbGF0ZSxcbiAgdGl0bGUsXG4gIHVzZVVzZXJMb2NhbFN0b3JhZ2UsXG4gIHVwZGF0ZU1lcmdlU3RhdGUsXG59KSB7XG4gIGNvbnN0IGJvb2tJZCA9IHJlZmVyZW5jZT8ucHJvamVjdElkXG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVfXSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICBjaGVja0ZvckVkaXRCcmFuY2g6IDAsXG4gICAgY3VycmVudFJlZmVyZW5jZTogbnVsbCxcbiAgICBlZGl0QnJhbmNoUmVhZHk6IGZhbHNlLFxuICAgIGhhdmVVbnNhdmVkQ2hhbmdlczogZmFsc2UsXG4gICAgbGFzdFNlbGVjdGVkUXVvdGU6IG51bGwsXG4gICAgcmVhZHlGb3JGZXRjaDogZmFsc2UsXG4gICAgcmVmOiBhcHBSZWYsXG4gICAgc2F2ZUNsaWNrZWQ6IGZhbHNlLFxuICAgIHNhdmVDb250ZW50OiBudWxsLFxuICAgIHNlbGVjdGlvbnM6IG5ldyBNYXAoKSxcbiAgICBzaGE6IG51bGwsXG4gICAgc2hvd0FsaWdubWVudFBvcHVwOiBmYWxzZSxcbiAgICBzdGFydFNhdmU6IGZhbHNlLFxuICAgIHVybEVycm9yOiBudWxsLFxuICAgIHVzaW5nVXNlckJyYW5jaDogZmFsc2UsXG4gICAgdW5zYXZlZENoYW5nZXNMaXN0OiB7fSxcbiAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXM6IG51bGwsXG4gICAgdmVyc2VzRm9yUmVmOiBudWxsLFxuICAgIHZlcnNlT2JqZWN0c01hcDogbmV3IE1hcCgpLFxuICAgIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ6IG51bGwsXG4gIH0pXG4gIGNvbnN0IHtcbiAgICBjaGVja0ZvckVkaXRCcmFuY2gsXG4gICAgY3VycmVudFJlZmVyZW5jZSxcbiAgICBlZGl0QnJhbmNoUmVhZHksXG4gICAgaGF2ZVVuc2F2ZWRDaGFuZ2VzLFxuICAgIGxhc3RTZWxlY3RlZFF1b3RlLFxuICAgIHJlYWR5Rm9yRmV0Y2gsXG4gICAgcmVmLFxuICAgIHNhdmVDbGlja2VkLFxuICAgIHNhdmVDb250ZW50LFxuICAgIHNlbGVjdGlvbnMsXG4gICAgc2hhLFxuICAgIHNob3dBbGlnbm1lbnRQb3B1cCxcbiAgICBzdGFydFNhdmUsXG4gICAgdXJsRXJyb3IsXG4gICAgdXNpbmdVc2VyQnJhbmNoLFxuICAgIHVuc2F2ZWRDaGFuZ2VzTGlzdCxcbiAgICB2ZXJzZU9iamVjdHNNYXAsXG4gICAgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCxcbiAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXMsXG4gICAgdmVyc2VzRm9yUmVmLFxuICB9ID0gc3RhdGVcblxuICBjb25zdCBbZm9udFNpemUsIHNldEZvbnRTaXplXSA9IHVzZVVzZXJMb2NhbFN0b3JhZ2UoS0VZX0ZPTlRfU0laRV9CQVNFICsgY2FyZE51bSwgMTAwKVxuICBjb25zdCBpc05UXyA9IGlzTlQoYm9va0lkKVxuXG4gIGZ1bmN0aW9uIHNldFN0YXRlKG5ld1N0YXRlKSB7XG4gICAgc2V0U3RhdGVfKHByZXZTdGF0ZSA9PiAoeyAuLi5wcmV2U3RhdGUsIC4uLm5ld1N0YXRlIH0pKVxuICB9XG5cbiAgaHR0cENvbmZpZyA9IHtcbiAgICAuLi5odHRwQ29uZmlnLFxuICAgIGNhY2hlOiB7IG1heEFnZTogMCB9LFxuICAgIG5vQ2FjaGU6IHRydWUsXG4gIH0gLy8gZGlzYWJsZSBodHRwIGNhY2hpbmdcblxuICBjb25zdCB7XG4gICAgaXNOZXdUZXN0YW1lbnQsXG4gICAgc2NyaXB0dXJlQ29uZmlnLFxuICAgIHNldFNjcmlwdHVyZSxcbiAgICBzY3JpcHR1cmVTZXR0aW5ncyxcbiAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdCxcbiAgfSA9IHVzZVNjcmlwdHVyZVNldHRpbmdzKHtcbiAgICBhcHBSZWY6IHJlZixcbiAgICBjYXJkTnVtLFxuICAgIGRpc2FibGVXb3JkUG9wb3ZlcixcbiAgICBncmVla1JlcG9VcmwsXG4gICAgaGVicmV3UmVwb1VybCxcbiAgICBodHRwQ29uZmlnLFxuICAgIGlzTlQsXG4gICAgbGFuZ3VhZ2VJZCxcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gICAgb3duZXIsXG4gICAgcmVhZHlGb3JGZXRjaCxcbiAgICByZWZlcmVuY2U6IGN1cnJlbnRSZWZlcmVuY2UgfHwgcmVmZXJlbmNlLFxuICAgIHJlc291cmNlSWQsXG4gICAgcmVzb3VyY2VMaW5rLFxuICAgIHNldFVybEVycm9yOiAoZXJyb3IpID0+IHNldFN0YXRlKHsgdXJsRXJyb3I6IGVycm9yIH0pLFxuICAgIHNlcnZlcixcbiAgICB0aXRsZSxcbiAgICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxuICAgIHdob2xlQm9vazogdHJ1ZSxcbiAgfSlcblxuICBjb25zdCBmZXRjaFJlc3BfID0gc2NyaXB0dXJlQ29uZmlnPy5mZXRjaFJlc3BvbnNlXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgcmVwbyA9IGAke3NjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/Lmxhbmd1YWdlSWR9XyR7c2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucHJvamVjdElkfWBcbiAgY29uc3QgcmVmZXJlbmNlXyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVmZXJlbmNlIHx8IG51bGxcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBnZXQgdGhlIF9zaGEgZnJvbSBsYXN0IHNjcmlwdHVyZSBkb3dubG9hZFxuICAgIGNvbnN0IF9zaGEgPSBmZXRjaFJlc3BfPy5kYXRhPy5zaGEgfHwgbnVsbFxuICAgIGNvbnN0IHVybCA9IGZldGNoUmVzcF8/LmRhdGE/LmRvd25sb2FkX3VybCB8fCBudWxsXG4gICAgbGV0IHZhbGlkQnJhbmNoID0gdHJ1ZVxuXG4gICAgaWYgKF9zaGEpIHsgLy8gVFJJQ0tZOiBzaW5jZSB0aGlzIGZldGNoIG1heSBiZSBkZWxheWVkIC0gbWFrZSBzdXJlIGl0IHdhcyBmb3IgdGhlIGN1cnJlbnQgYnJhbmNoIGJlZm9yZSB1c2luZyB0aGUgc2hhXG4gICAgICBjb25zdCBwYXJ0cyA9ICh1cmwgfHwgJycpLnNwbGl0KCcvJylcbiAgICAgIGNvbnN0IGZldGNoQnJhbmNoID0gcGFydHMubGVuZ3RoID4gNyA/IHBhcnRzWzddIDogJydcbiAgICAgIHZhbGlkQnJhbmNoID0gZmV0Y2hCcmFuY2ggPT09IHJlZlxuICAgIH1cblxuICAgIGlmICh2YWxpZEJyYW5jaCAmJiBfc2hhICE9PSBzaGEpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVDYXJkOiBmb3IgJHt1cmx9ICR7SlNPTi5zdHJpbmdpZnkocmVmZXJlbmNlXyl9IG5ldyBzaGEgaXMgJHtfc2hhfWApXG4gICAgICBzZXRTdGF0ZSh7IHNoYTogX3NoYSB9KVxuICAgIH1cbiAgfSwgW2ZldGNoUmVzcF9dKVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgY2FyZFJlc291cmNlSWQgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5wcm9qZWN0SWQgfHwgcmVzb3VyY2VJZFxuICAvLyBAdHMtaWdub3JlXG4gIGxldCByZWZfID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucmVmIHx8IGFwcFJlZlxuICBjb25zdCBjYW5Vc2VFZGl0QnJhbmNoID0gISEobG9nZ2VkSW5Vc2VyICYmIGF1dGhlbnRpY2F0aW9uICYmIChyZXNvdXJjZUlkICE9PSBPUklHSU5BTF9TT1VSQ0UpICYmIC8vIFRSSUNLWSBpZiBub3Qgb3JpZ2luYWwgbGFuZ3VhZ2UgYW5kIHdlIGhhdmUgbG9naW4gZGF0YSwgdGhlbiB3ZSBjYW4gdXNlIHRoZSBlZGl0IGJyYW5jaFxuICAgICgocmVmXyA9PT0gJ21hc3RlcicpIHx8IChyZWZfLmluY2x1ZGVzKGxvZ2dlZEluVXNlcikpKSkgLy8gYWxzbyBtYWtlIHN1cmUgbm90IGEgdmVyc2lvbiB0YWdcblxuICBjb25zdCB7XG4gICAgc3RhdGU6IHtcbiAgICAgIGJyYW5jaERldGVybWluZWQsXG4gICAgICB1c2VyRWRpdEJyYW5jaE5hbWUsXG4gICAgICB1c2luZ1VzZXJCcmFuY2g6IF91c2luZ1VzZXJCcmFuY2gsXG4gICAgICB3b3JraW5nUmVzb3VyY2VCcmFuY2gsXG4gICAgfSxcbiAgICBhY3Rpb25zOiB7XG4gICAgICBzdGFydEVkaXQ6IHN0YXJ0RWRpdEJyYW5jaCxcbiAgICAgIGZpbmlzaEVkaXQsXG4gICAgfSxcbiAgfSA9IHVzZVVzZXJCcmFuY2goe1xuICAgIGFwcFJlZixcbiAgICBhdXRoZW50aWNhdGlvbjogY2FuVXNlRWRpdEJyYW5jaCA/IGF1dGhlbnRpY2F0aW9uIDogbnVsbCxcbiAgICBib29rSWQsXG4gICAgY2FyZElkOiBpZCxcbiAgICBjYXJkUmVzb3VyY2VJZCxcbiAgICBjaGVja0ZvckVkaXRCcmFuY2gsXG4gICAgbGFuZ3VhZ2VJZCxcbiAgICBsb2dnZWRJblVzZXI6IGNhblVzZUVkaXRCcmFuY2ggPyBsb2dnZWRJblVzZXIgOiBudWxsLFxuICAgIG93bmVyLFxuICAgIG9uUmVzb3VyY2VFcnJvcixcbiAgICBzZXJ2ZXIsXG4gICAgdXNlVXNlckxvY2FsU3RvcmFnZSxcbiAgfSlcblxuICBjb25zdCBfdXNlQnJhbmNoTWVyZ2VyID0gdXNlQnJhbmNoTWVyZ2VyKHsgc2VydmVyLCBvd25lciwgcmVwbywgdXNlckJyYW5jaDogdXNlckVkaXRCcmFuY2hOYW1lLCB0b2tlbmlkOiBhdXRoZW50aWNhdGlvbj8udG9rZW4/LnNoYTEgfSlcbiAgY29uc3Qge1xuICAgIHN0YXRlOiB7XG4gICAgICBtZXJnZVN0YXR1czogbWVyZ2VUb01hc3RlcixcbiAgICAgIHVwZGF0ZVN0YXR1czogbWVyZ2VGcm9tTWFzdGVyLFxuICAgIH0sXG4gIH0gPSBfdXNlQnJhbmNoTWVyZ2VyXG5cbiAgY29uc3QgdXBkYXRlQnV0dG9uUHJvcHMgPSB1c2VDb250ZW50VXBkYXRlUHJvcHMoe1xuICAgIGlzU2F2aW5nOiBzdGFydFNhdmUsXG4gICAgdXNlQnJhbmNoTWVyZ2VyOiBfdXNlQnJhbmNoTWVyZ2VyLFxuICAgIG9uVXBkYXRlOiAoKSA9PiB7XG4gICAgICBkZWxheSg1MDApLnRoZW4oKCkgPT4gc2NyaXB0dXJlQ29uZmlnPy5yZWxvYWRSZXNvdXJjZShzaGEpKVxuICAgIH0sXG4gIH0pXG5cbiAgY29uc3Qge1xuICAgIGNhbGxVcGRhdGVVc2VyQnJhbmNoLFxuICAgIGlzRXJyb3JEaWFsb2dPcGVuLFxuICAgIG9uQ2xvc2VFcnJvckRpYWxvZyxcbiAgICBpc0xvYWRpbmc6IGlzVXBkYXRlTG9hZGluZyxcbiAgICBkaWFsb2dNZXNzYWdlLFxuICAgIGRpYWxvZ1RpdGxlLFxuICAgIGRpYWxvZ0xpbmssXG4gICAgZGlhbG9nTGlua1Rvb2x0aXAsXG4gIH0gPSB1cGRhdGVCdXR0b25Qcm9wc1xuXG4gIGNvbnN0IG9uTWVyZ2UgPSAoKSA9PiB7XG4gICAgZmluaXNoRWRpdCgpXG4gICAgc2V0U3RhdGUoeyByZWY6IGFwcFJlZiB9KVxuICAgIGRlbGF5KDUwMCkudGhlbigoKSA9PiB7XG4gICAgICBzY3JpcHR1cmVDb25maWc/LnJlbG9hZFJlc291cmNlKClcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgeyBpc0xvYWRpbmc6IGlzTWVyZ2VMb2FkaW5nLCBjYWxsTWVyZ2VVc2VyQnJhbmNoIH0gPSB1c2VNYXN0ZXJNZXJnZVByb3BzKHtcbiAgICBpc1NhdmluZzogc3RhcnRTYXZlLFxuICAgIHVzZUJyYW5jaE1lcmdlcjogX3VzZUJyYW5jaE1lcmdlcixcbiAgICBvbk1lcmdlLFxuICB9KVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNhcmRSZXNvdXJjZUlkKSB7XG4gICAgICB1cGRhdGVNZXJnZVN0YXRlICYmIHVwZGF0ZU1lcmdlU3RhdGUoXG4gICAgICAgIGNhcmRSZXNvdXJjZUlkLFxuICAgICAgICBtZXJnZUZyb21NYXN0ZXIsXG4gICAgICAgIG1lcmdlVG9NYXN0ZXIsXG4gICAgICAgIGNhbGxVcGRhdGVVc2VyQnJhbmNoLFxuICAgICAgICBjYWxsTWVyZ2VVc2VyQnJhbmNoLFxuICAgICAgKVxuICAgIH1cbiAgfSxbY2FyZFJlc291cmNlSWQsIG1lcmdlRnJvbU1hc3RlciwgbWVyZ2VUb01hc3Rlcl0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNVcGRhdGVMb2FkaW5nKSB7XG4gICAgICBzZXRDYXJkc0xvYWRpbmdVcGRhdGU/LihwcmV2Q2FyZHNMb2FkaW5nID0+IFsuLi5wcmV2Q2FyZHNMb2FkaW5nLCBjYXJkUmVzb3VyY2VJZF0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHNldENhcmRzTG9hZGluZ1VwZGF0ZT8uKHByZXZDYXJkc0xvYWRpbmcgPT4gcHJldkNhcmRzTG9hZGluZy5maWx0ZXIoY2FyZElkID0+IGNhcmRJZCAhPT0gY2FyZFJlc291cmNlSWQpKVxuICAgIH1cbiAgfSwgW2lzVXBkYXRlTG9hZGluZ10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNNZXJnZUxvYWRpbmcpIHtcbiAgICAgIHNldENhcmRzTG9hZGluZ01lcmdlPy4ocHJldkNhcmRzTG9hZGluZyA9PiBbLi4ucHJldkNhcmRzTG9hZGluZywgY2FyZFJlc291cmNlSWRdKVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRDYXJkc0xvYWRpbmdNZXJnZT8uKHByZXZDYXJkc0xvYWRpbmcgPT4gcHJldkNhcmRzTG9hZGluZy5maWx0ZXIoY2FyZElkID0+IGNhcmRJZCAhPT0gY2FyZFJlc291cmNlSWQpKVxuICAgIH1cbiAgfSwgW2lzTWVyZ2VMb2FkaW5nXSlcblxuICBjb25zdCB3b3JraW5nUmVmID0gY2FuVXNlRWRpdEJyYW5jaCA/IHdvcmtpbmdSZXNvdXJjZUJyYW5jaCA6IGFwcFJlZlxuICBsZXQgc2NyaXB0dXJlVGl0bGVcblxuICBpZiAoIWNhblVzZUVkaXRCcmFuY2ggJiYgIXJlYWR5Rm9yRmV0Y2gpIHsgLy8gaWYgYmlibGUgbm90IGVsaWdpYmxlIGZvciB1c2VyIGJyYW5jaCwgbWFrZSBzdXJlIGl0J3MgcmVhZHlcbiAgICBzZXRTdGF0ZSh7IHJlYWR5Rm9yRmV0Y2g6IHRydWUgfSlcbiAgfVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYFNjcmlwdHVyZUNhcmQgYm9vayBjaGFuZ2VkYCwgeyBib29rSWQsIG93bmVyLCBsYW5ndWFnZUlkLCByZXNvdXJjZUlkIH0pXG5cbiAgICBpZiAoY2FuVXNlRWRpdEJyYW5jaCkgeyAvLyBpZiBiaWJsZSBlbGlnaWJsZSBmb3IgdXNlciBicmFuY2gsIHJlZnJlc2ggaXRcbiAgICAgIHNldFN0YXRlKHsgcmVhZHlGb3JGZXRjaDogZmFsc2UsIGNoZWNrRm9yRWRpdEJyYW5jaDogY2hlY2tGb3JFZGl0QnJhbmNoICsgMSB9KVxuICAgIH1cbiAgfSwgW2Jvb2tJZCwgb3duZXIsIGxhbmd1YWdlSWQsIHJlc291cmNlSWRdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc0VxdWFsKHJlZmVyZW5jZSwgY3VycmVudFJlZmVyZW5jZSkpIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVDYXJkIHJlZmVyZW5jZSBjaGFuZ2VkYCwgcmVmZXJlbmNlKVxuICAgICAgc2V0U3RhdGUoeyBjdXJyZW50UmVmZXJlbmNlOiByZWZlcmVuY2UgfSlcbiAgICB9XG4gIH0sIFtyZWZlcmVuY2VdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHdhaXRpbmcgZm9yIGJyYW5jaCBmZXRjaCB0byBjb21wbGV0ZVxuICAgIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVDYXJkIGJyYW5jaERldGVybWluZWQgaXMgJHticmFuY2hEZXRlcm1pbmVkfSBhbmQgd29ya2luZ1JlZiBpcyAke3dvcmtpbmdSZWZ9IGFuZCByZWFkeUZvckZldGNoIGlzICR7cmVhZHlGb3JGZXRjaH1gKVxuXG4gICAgaWYgKCFyZWFkeUZvckZldGNoICYmIGJyYW5jaERldGVybWluZWQgKSB7XG4gICAgICBzZXRTdGF0ZSh7IHJlYWR5Rm9yRmV0Y2g6IHRydWUsIHJlZjogd29ya2luZ1JlZiB9KVxuICAgIH1cbiAgfSwgW2JyYW5jaERldGVybWluZWRdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHNlbGVjdCBjb3JyZWN0IHdvcmtpbmcgcmVmIC0gY291bGQgYmUgbWFzdGVyLCB1c2VyIGJyYW5jaCwgb3IgcmVsZWFzZVxuICAgIGlmIChfdXNpbmdVc2VyQnJhbmNoICE9PSB1c2luZ1VzZXJCcmFuY2gpIHtcbiAgICAgIHNldFN0YXRlKHsgdXNpbmdVc2VyQnJhbmNoOiBfdXNpbmdVc2VyQnJhbmNoIH0pXG4gICAgfVxuICB9LCBbX3VzaW5nVXNlckJyYW5jaCwgdXNpbmdVc2VyQnJhbmNoXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB1cGRhdGUgZGlzcGxheSBzdGF0dXMgaWYgZXJyb3JcbiAgICBjb25zdCBlcnJvciA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0dXM/LltFUlJPUl9TVEFURV1cblxuICAgIGlmIChlcnJvcikgeyAvLyBpZiBlcnJvciB3YXMgZm91bmQgZG8gY2FsbGJhY2tcbiAgICAgIGNvbnN0IHJlc291cmNlU3RhdHVzID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXR1c1xuICAgICAgY29uc3QgcmVzb3VyY2VMaW5rID0gZ2V0UmVzb3VyY2VMaW5rKHNjcmlwdHVyZUNvbmZpZylcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBnZXRSZXNvdXJjZU1lc3NhZ2UocmVzb3VyY2VTdGF0dXMsIHNlcnZlciwgcmVzb3VyY2VMaW5rLCBpc05UXylcbiAgICAgIGNvbnN0IGlzQWNjZXNzRXJyb3IgPSByZXNvdXJjZVN0YXR1c1tNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SXVxuICAgICAgb25SZXNvdXJjZUVycm9yICYmIG9uUmVzb3VyY2VFcnJvcihtZXNzYWdlLCBpc0FjY2Vzc0Vycm9yLCByZXNvdXJjZVN0YXR1cylcbiAgICB9XG4gIH0sIFtzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdHVzPy5bRVJST1JfU1RBVEVdXSlcblxuICBpZiAoc2NyaXB0dXJlQ29uZmlnLnRpdGxlICYmIHNjcmlwdHVyZUNvbmZpZy52ZXJzaW9uKSB7XG4gICAgc2NyaXB0dXJlVGl0bGUgPSBgJHtzY3JpcHR1cmVDb25maWcudGl0bGV9IHYke3NjcmlwdHVyZUNvbmZpZy52ZXJzaW9ufWBcbiAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdC51cGRhdGVUaXRsZShzY3JpcHR1cmVDb25maWcucmVzb3VyY2VMaW5rLCBzY3JpcHR1cmVUaXRsZSlcbiAgfSBlbHNlIHtcbiAgICBzY3JpcHR1cmVUaXRsZSA9IGBUaXRsZSBtaXNzaW5nIGZyb20gcHJvamVjdCBtYW5pZmVzdGBcbiAgfVxuXG4gIC8qKiBEeW5hbWljYWxseSBjcmVhdGVzIHRoZSBzY3JpcHR1cmUgc2VsZWN0aW9uIGRyb3Bkb3duIHRvIGJlIGluc2VydGVkIGludG8gY2FyZCBzZXR0aW5ncyAqL1xuICBmdW5jdGlvbiBnZXRTY3JpcHR1cmVTZWxlY3RvcigpIHtcbiAgICBjb25zdCBzY3JpcHR1cmVTZWxlY3Rpb25Db25maWcgPSBnZXRTY3JpcHR1cmVWZXJzaW9uU2V0dGluZ3Moe1xuICAgICAgbGFiZWwsXG4gICAgICByZXNvdXJjZUxpbms6IHNjcmlwdHVyZUNvbmZpZy5yZXNvdXJjZUxpbmssXG4gICAgICBzZXRTY3JpcHR1cmUsXG4gICAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdCxcbiAgICB9KVxuXG4gICAgcmV0dXJuIDxTY3JpcHR1cmVTZWxlY3RvciB7Li4uc2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnfSBzdHlsZT17c3R5bGV9IGVycm9yTWVzc2FnZT17dXJsRXJyb3J9IC8+XG4gIH1cblxuICBmdW5jdGlvbiBvbk1lbnVDbG9zZSgpIHtcbiAgICAvLyBjb25zb2xlLmxvZyhgb25NZW51Q2xvc2UoKWApXG4gICAgc2V0U3RhdGUoeyB1cmxFcnJvcjogbnVsbCB9KVxuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBsYW5ndWFnZUlkXyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/Lmxhbmd1YWdlSWRcbiAgY29uc3QgbGFuZ3VhZ2UgPSBnZXRMYW5ndWFnZSh7IGxhbmd1YWdlSWQ6IGxhbmd1YWdlSWRfIH0pXG4gIGNvbnN0IGRpcmVjdGlvbiA9IChsYW5ndWFnZT8uZGlyZWN0aW9uKSB8fCAnbHRyJ1xuICBjb25zdCBfcmVmZXJlbmNlID0gY3VycmVudFJlZmVyZW5jZSB8fCByZWZlcmVuY2VcblxuICBjb25zdCBpc0hlYnJldyA9IChsYW5ndWFnZUlkXyA9PT0gJ2hibycpXG4gIGNvbnN0IGZvbnRGYWN0b3IgPSBpc0hlYnJldyA/IDEuNCA6IDEgLy8gd2UgYXV0b21hdGljYWxseSBzY2FsZSB1cCBmb250IHNpemUgZm9yIEhlYnJld1xuICBjb25zdCBzY2FsZWRGb250U2l6ZSA9IGZvbnRTaXplICogZm9udEZhY3RvclxuXG4gIGNvbnN0IGl0ZW1zID0gbnVsbFxuICBjb25zdCB7XG4gICAgc3RhdGU6IHtcbiAgICAgIGhlYWRlcnMsIGZpbHRlcnMsIGl0ZW1JbmRleCwgbWFya2Rvd25WaWV3LFxuICAgIH0sXG4gICAgYWN0aW9uczoge1xuICAgICAgc2V0RmlsdGVycywgc2V0SXRlbUluZGV4LCBzZXRNYXJrZG93blZpZXcsXG4gICAgfSxcbiAgfSA9IHVzZUNhcmRTdGF0ZSh7IGl0ZW1zIH0pXG5cbiAgY29uc3QgcmVmU3R5bGUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgZm9udEZhbWlseTogJ05vdG8gU2FucycsXG4gICAgZm9udFNpemU6IGAke01hdGgucm91bmQoc2NhbGVkRm9udFNpemUgKiAwLjkpfSVgLFxuICB9KSwgW3NjYWxlZEZvbnRTaXplXSlcblxuICBjb25zdCBjb250ZW50U3R5bGUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgZm9udEZhbWlseTogJ05vdG8gU2FucycsXG4gICAgZm9udFNpemU6IGAke3NjYWxlZEZvbnRTaXplfSVgLFxuICB9KSwgW3NjYWxlZEZvbnRTaXplXSlcblxuICBjb25zdCBzY3JpcHR1cmVMYWJlbCA9IDxUaXRsZT57c2NyaXB0dXJlVGl0bGV9PC9UaXRsZT5cbiAgbGV0IGRpc2FibGVXb3JkUG9wb3Zlcl8gPSBkaXNhYmxlV29yZFBvcG92ZXJcbiAgY29uc3QgdXNpbmdPcmlnaW5hbEJpYmxlID0gaXNPcmlnaW5hbEJpYmxlKHNjcmlwdHVyZUNvbmZpZ1sncmVzb3VyY2UnXT8ucHJvamVjdElkKVxuXG4gIGlmIChkaXNhYmxlV29yZFBvcG92ZXIgPT09IHVuZGVmaW5lZCkgeyAvLyBpZiBub3Qgc3BlY2lmaWVkLCB0aGVuIGRldGVybWluZSBpZiBvcmlnaW5hbCBsYW5ndWFnZSByZXNvdXJjZVxuICAgIGRpc2FibGVXb3JkUG9wb3Zlcl8gPSAhdXNpbmdPcmlnaW5hbEJpYmxlXG4gIH1cblxuICBjb25zdCBlbmFibGVFZGl0ID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxuICBjb25zdCBlbmFibGVBbGlnbm1lbnQgPSAhdXNpbmdPcmlnaW5hbEJpYmxlXG4gIGNvbnN0IG9yaWdpbmFsUmVwb1VybCA9IGlzTmV3VGVzdGFtZW50ID8gZ3JlZWtSZXBvVXJsIDogaGVicmV3UmVwb1VybFxuICBjb25zdCBzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnID0ge1xuICAgIGF1dGhlbnRpY2F0aW9uOiBjYW5Vc2VFZGl0QnJhbmNoID8gYXV0aGVudGljYXRpb24gOiBudWxsLFxuICAgIGJvb2tJbmRleCxcbiAgICBjdXJyZW50VmVyc2VSZWY6IF9yZWZlcmVuY2UsXG4gICAgZW5hYmxlRWRpdCxcbiAgICBlbmFibGVBbGlnbm1lbnQsXG4gICAgaHR0cENvbmZpZyxcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaXNOZXdUZXN0YW1lbnQsXG4gICAgbG9nZ2VkSW5Vc2VyOiBjYW5Vc2VFZGl0QnJhbmNoID8gbG9nZ2VkSW5Vc2VyIDogbnVsbCxcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIG9yaWdpbmFsUmVwb1VybCxcbiAgICBzY3JpcHR1cmVDb25maWcsXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MsXG4gICAgc3RhcnRFZGl0QnJhbmNoLFxuICAgIHNldFNhdmVkQ2hhbmdlczogX3NldFNhdmVkQ2hhbmdlcyxcbiAgICBzb3VyY2VMYW5ndWFnZTogaXNOVF8gPyBOVF9PUklHX0xBTkcgOiBPVF9PUklHX0xBTkcsXG4gICAgdGFyZ2V0TGFuZ3VhZ2U6IGxhbmd1YWdlLFxuICAgIHRpdGxlOiBzY3JpcHR1cmVUaXRsZSxcbiAgICB3b3JraW5nUmVzb3VyY2VCcmFuY2g6IHJlZixcbiAgfVxuXG4gIC8qKlxuICAgKiB0aGlzIGdldHMgY2FsbGVkIHdoZW5ldmVyIGEgc2NyaXB0dXJlIHBhbmUgaGFzIGEgY2hhbmdlIGluIHNhdmUgc3RhdGVcbiAgICogQHBhcmFtIHtudW1iZXJ9IGN1cnJlbnRJbmRleFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHNhdmVkXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGdldENoYW5nZXMgLSB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciB1c2VyIGNsaWNrcyBzYXZlIGJ1dHRvblxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjbGVhckNoYW5nZXMgLSB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciBzYXZlIGhhcyBjb21wbGV0ZWRcbiAgICogQHBhcmFtIHtvYmplY3R9IHN0YXRlIC0gY3VycmVudCBzdGF0ZSBvZiB3b3JkIGFsaWdubWVudC9lZGl0XG4gICAqL1xuICBmdW5jdGlvbiBfc2V0U2F2ZWRDaGFuZ2VzKGN1cnJlbnRJbmRleCwgc2F2ZWQsIHsgZ2V0Q2hhbmdlcyA9IG51bGwsIGNsZWFyQ2hhbmdlcyA9IG51bGwsIHN0YXRlID0gbnVsbCB9KSB7XG4gICAgY29uc3QgX3Vuc2F2ZWRDaGFuZ2VzTGlzdCA9IHsgLi4udW5zYXZlZENoYW5nZXNMaXN0IH1cblxuICAgIGlmIChzYXZlZCkge1xuICAgICAgaWYgKF91bnNhdmVkQ2hhbmdlc0xpc3QuaGFzT3duUHJvcGVydHkoY3VycmVudEluZGV4KSkge1xuICAgICAgICBkZWxldGUgX3Vuc2F2ZWRDaGFuZ2VzTGlzdFtjdXJyZW50SW5kZXhdXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIF91bnNhdmVkQ2hhbmdlc0xpc3RbY3VycmVudEluZGV4XSA9IHsgZ2V0Q2hhbmdlcywgY2xlYXJDaGFuZ2VzLCBzdGF0ZSB9IC8vIHVwZGF0ZSB3aXRoIGxhdGVzdFxuICAgIH1cblxuICAgIGNvbnN0IF9oYXZlVW5zYXZlZENoYW5nZXMgPSAhIU9iamVjdC5rZXlzKF91bnNhdmVkQ2hhbmdlc0xpc3QpLmxlbmd0aFxuXG4gICAgaWYgKGhhdmVVbnNhdmVkQ2hhbmdlcyAhPSBfaGF2ZVVuc2F2ZWRDaGFuZ2VzKSB7XG4gICAgICBzZXRTYXZlZENoYW5nZXMgJiYgc2V0U2F2ZWRDaGFuZ2VzKHJlc291cmNlSWQsICFfaGF2ZVVuc2F2ZWRDaGFuZ2VzKVxuICAgICAgc2V0U3RhdGUoeyBoYXZlVW5zYXZlZENoYW5nZXM6IF9oYXZlVW5zYXZlZENoYW5nZXMgfSlcbiAgICB9XG5cbiAgICBpZiAoIWlzRXF1YWwoX3Vuc2F2ZWRDaGFuZ2VzTGlzdCwgdW5zYXZlZENoYW5nZXNMaXN0KSkge1xuICAgICAgc2V0U3RhdGUoeyB1bnNhdmVkQ2hhbmdlc0xpc3Q6IF91bnNhdmVkQ2hhbmdlc0xpc3QgfSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogc2VhcmNoIGNoYXB0ZXIgb3IgdmVyc2UgY2h1bmsgdG8gbGluZSB0aGF0IHN0YXJ0cyB3aXRoIGZpbmRJdGVtXG4gICAqIEBwYXJhbSB7bnVtYmVyfHN0cmluZ30gZmluZEl0ZW1cbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gY2h1bmtzXG4gICAqL1xuICBmdW5jdGlvbiBmaW5kUmVmSW5BcnJheShmaW5kSXRlbSwgY2h1bmtzKSB7XG4gICAgY29uc3QgcmVmXyA9IGZpbmRJdGVtICsgJydcbiAgICBjb25zdCByZWZMZW4gPSByZWZfLmxlbmd0aFxuICAgIGNvbnN0IGluZGV4ID0gY2h1bmtzLmZpbmRJbmRleCgoY2h1bmssIGlkeCkgPT4ge1xuICAgICAgaWYgKGlkeCA+IDApIHtcbiAgICAgICAgaWYgKGNodW5rLnN1YnN0cmluZygwLCByZWZMZW4pID09PSByZWZfKSB7XG4gICAgICAgICAgY29uc3QgbmV4dENoYXIgPSBjaHVua1tyZWZMZW5dXG5cbiAgICAgICAgICBpZiAoKG5leHRDaGFyID4gJzknKSB8fCAobmV4dENoYXIgPCAnMCcpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSlcbiAgICByZXR1cm4gaW5kZXhcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEJvb2tOYW1lKCkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBib29rQ2FwcyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVmZXJlbmNlPy5wcm9qZWN0SWQgPyBzY3JpcHR1cmVDb25maWcucmVmZXJlbmNlLnByb2plY3RJZC50b1VwcGVyQ2FzZSgpIDogJydcbiAgICByZXR1cm4gYCR7Ym9va0luZGV4fS0ke2Jvb2tDYXBzfS51c2ZtYFxuICB9XG5cbiAgY29uc3QgZmlsZXBhdGggPSBnZXRCb29rTmFtZSgpXG5cbiAgLy8ga2VlcCB0cmFjayBvZiB2ZXJzZSBlZGl0IHN0YXRlXG4gIGNvbnN0IHtcbiAgICBlcnJvcjogc2F2ZUVycm9yLFxuICAgIGlzRXJyb3I6IGlzU2F2ZUVycm9yLFxuICAgIG9uU2F2ZUVkaXQsXG4gIH0gPSB1c2VFZGl0KHtcbiAgICBzaGEsXG4gICAgb3duZXIsXG4gICAgY29udGVudDogc2F2ZUNvbnRlbnQsXG4gICAgY29uZmlnOiB7XG4gICAgICBjYWNoZTogeyBtYXhBZ2U6IDAgfSxcbiAgICAgIC4uLmF1dGhlbnRpY2F0aW9uPy5jb25maWcsXG4gICAgICBkb250Q3JlYXRlQnJhbmNoOiB0cnVlLFxuICAgICAgdG9rZW46IGF1dGhlbnRpY2F0aW9uPy50b2tlbixcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRpbWVvdXQ6IGh0dHBDb25maWc/LnNlcnZlclRpbWVPdXQgfHwgaHR0cENvbmZpZz8udGltZW91dCB8fCAxMDAwMCxcbiAgICAgIHNlcnZlcixcbiAgICB9LFxuICAgIGF1dGhvcjogbG9nZ2VkSW5Vc2VyLFxuICAgIHRva2VuOiBhdXRoZW50aWNhdGlvbj8udG9rZW4sXG4gICAgYnJhbmNoOiB3b3JraW5nUmVzb3VyY2VCcmFuY2gsXG4gICAgZmlsZXBhdGgsXG4gICAgcmVwbyxcbiAgfSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB3aGVuIHdlIGdldCBhIHNhdmUgc2F2ZUVycm9yXG4gICAgaWYgKHNhdmVFcnJvciAmJiBpc1NhdmVFcnJvcikge1xuICAgICAgY29uc29sZS5sb2coYHNhdmUgZXJyb3JgLCBzYXZlRXJyb3IpXG4gICAgICBvblJlc291cmNlRXJyb3IgJiYgb25SZXNvdXJjZUVycm9yKG51bGwsIGZhbHNlLCBudWxsLCBgRXJyb3Igc2F2aW5nICR7bGFuZ3VhZ2VJZF99XyR7cmVzb3VyY2VJZH0gJHtzYXZlRXJyb3J9YCwgdHJ1ZSlcbiAgICB9XG4gIH0sIFtzYXZlRXJyb3IsIGlzU2F2ZUVycm9yXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB3aGVuIHN0YXJ0U2F2ZSBnb2VzIHRydWUsIHNhdmUgZWRpdHMgdG8gdXNlciBicmFuY2ggYW5kIHRoZW4gY2xlYXIgc3RhcnRTYXZlXG4gICAgY29uc3QgX3NhdmVFZGl0ID0gYXN5bmMgKCkgPT4geyAvLyBiZWdpbiB1cGxvYWRpbmcgbmV3IFVTRk1cbiAgICAgIGNvbnNvbGUuaW5mbyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBVc2luZyBzaGE6ICR7c2hhfWApXG4gICAgICBhd2FpdCBvblNhdmVFZGl0KHVzZXJFZGl0QnJhbmNoTmFtZSkudGhlbigoc3VjY2VzcykgPT4geyAvLyBwdXNoIGNoYW5nZSB0byBzZXJ2ZXJcbiAgICAgICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZlIHNjcmlwdHVyZSBlZGl0cyBzdWNjZXNzYClcbiAgICAgICAgICBzZXRDYXJkc1NhdmluZyhwcmV2Q2FyZHNTYXZpbmcgPT4gcHJldkNhcmRzU2F2aW5nLmZpbHRlcihjYXJkSWQgPT4gY2FyZElkICE9PSBjYXJkUmVzb3VyY2VJZCkpXG4gICAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgICAgc3RhcnRTYXZlOiBmYWxzZSxcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgY29uc3QgdW5zYXZlZENhcmRJbmRpY2VzID0gT2JqZWN0LmtleXModW5zYXZlZENoYW5nZXNMaXN0KVxuXG4gICAgICAgICAgaWYgKHVuc2F2ZWRDYXJkSW5kaWNlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNhcmRJbmRleCBvZiB1bnNhdmVkQ2FyZEluZGljZXMpIHtcbiAgICAgICAgICAgICAgY29uc3QgeyBjbGVhckNoYW5nZXMgfSA9IHVuc2F2ZWRDaGFuZ2VzTGlzdFtjYXJkSW5kZXhdXG4gICAgICAgICAgICAgIGNsZWFyQ2hhbmdlcyAmJiBjbGVhckNoYW5nZXMoKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnNvbGUuaW5mbygnc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBSZWxvYWRpbmcgcmVzb3VyY2UnKVxuICAgICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICAgIHN0YXJ0U2F2ZTogZmFsc2UsXG4gICAgICAgICAgICByZWFkeUZvckZldGNoOiB0cnVlLFxuICAgICAgICAgICAgcmVmOiB1c2VyRWRpdEJyYW5jaE5hbWUsXG4gICAgICAgICAgfSlcbiAgICAgICAgICBkZWxheSg1MDApLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgc2V0Q2FyZHNTYXZpbmcocHJldkNhcmRzU2F2aW5nID0+IHByZXZDYXJkc1NhdmluZy5maWx0ZXIoY2FyZElkID0+IGNhcmRJZCAhPT0gY2FyZFJlc291cmNlSWQpKVxuICAgICAgICAgICAgc2NyaXB0dXJlQ29uZmlnPy5yZWxvYWRSZXNvdXJjZShzaGEpXG4gICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmluZyBjaGFuZ2VkIHNjcmlwdHVyZSBmYWlsZWQnKVxuICAgICAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBwcmV2Q2FyZHNTYXZpbmcuZmlsdGVyKGNhcmRJZCA9PiBjYXJkSWQgIT09IGNhcmRSZXNvdXJjZUlkKSlcbiAgICAgICAgICBzZXRTdGF0ZSh7IHN0YXJ0U2F2ZTogZmFsc2UgfSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAoc3RhcnRTYXZlKSB7XG4gICAgICBpZiAoIWVkaXRCcmFuY2hSZWFkeSkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gZWRpdCBicmFuY2ggbm90IHlldCBjcmVhdGVkYClcbiAgICAgIH0gZWxzZSBpZiAoIXNoYSkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gc2F2ZSBzaGEgbm90IHlldCByZWFkeWApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gY2FsbGluZyBfc2F2ZUVkaXQoKWApXG4gICAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBbLi4ucHJldkNhcmRzU2F2aW5nLCBjYXJkUmVzb3VyY2VJZF0pXG4gICAgICAgIF9zYXZlRWRpdCgpXG4gICAgICB9XG4gICAgfVxuICB9LCBbc3RhcnRTYXZlLCBlZGl0QnJhbmNoUmVhZHksIHNoYV0pXG5cbiAgLyoqXG4gICAqIGNvbnZlcnQgdXBkYXRlZFZlcnNlT2JqZWN0cyB0byBVU0ZNIGFuZCBtZXJnZSBpbnRvIHRoZSBiaWJsZVVzZm1cbiAgICogQHBhcmFtIHtzdHJpbmd9IGJpYmxlVXNmbSAtIFVTRk0gb2YgYmlibGVcbiAgICogQHBhcmFtIHtvYmplY3R9IHJlZiAtIHJlZmVyZW5jZSBvZiB2ZXJzZSB0byBtZXJnZSBpblxuICAgKiBAcGFyYW0ge29iamVjdFtdfSB1cGRhdGVkVmVyc2VPYmplY3RzIC0gbmV3IHZlcnNlIGluIHZlcnNlT2JqZWN0IGZvcm1hdFxuICAgKiBAcGFyYW0ge251bWJlcn0gY2FyZE51bVxuICAgKi9cbiAgZnVuY3Rpb24gbWVyZ2VWZXJzZU9iamVjdHNJbnRvQmlibGVVc2ZtKGJpYmxlVXNmbSwgcmVmLCB1cGRhdGVkVmVyc2VPYmplY3RzLCBjYXJkTnVtOiBudW1iZXIpIHtcbiAgICBsZXQgbmV3VXNmbVxuICAgIGNvbnN0IGNoYXB0ZXJDaHVua3MgPSBiaWJsZVVzZm0/LnNwbGl0KCdcXFxcYyAnKVxuICAgIGNvbnN0IGNoYXB0ZXJJbmRleCA9IGZpbmRSZWZJbkFycmF5KHJlZj8uY2hhcHRlciwgY2hhcHRlckNodW5rcylcblxuICAgIGlmIChjaGFwdGVySW5kZXggPj0gMCkge1xuICAgICAgY29uc3QgY3VycmVudENoYXB0ZXIgPSBjaGFwdGVyQ2h1bmtzW2NoYXB0ZXJJbmRleF1cbiAgICAgIGNvbnN0IHZlcnNlQ2h1bmtzID0gY3VycmVudENoYXB0ZXIuc3BsaXQoJ1xcXFx2ICcpXG4gICAgICBjb25zdCB2ZXJzZUluZGV4ID0gZmluZFJlZkluQXJyYXkocmVmPy52ZXJzZSwgdmVyc2VDaHVua3MpXG5cbiAgICAgIGlmICh2ZXJzZUluZGV4ID49IDApIHtcbiAgICAgICAgY29uc3QgbmV3VmVyc2VVc2ZtID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5jb252ZXJ0VmVyc2VEYXRhVG9VU0ZNKHVwZGF0ZWRWZXJzZU9iamVjdHMpXG4gICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoJHtjYXJkTnVtfSkgLSBuZXcgVVNGTSBmb3IgY2FyZDp9IC0gJHtuZXdWZXJzZVVzZm0uc3Vic3RyaW5nKDAsIDEwMCl9YClcbiAgICAgICAgY29uc3Qgb2xkVmVyc2UgPSB2ZXJzZUNodW5rc1t2ZXJzZUluZGV4XVxuICAgICAgICBjb25zdCB2ZXJzZU51bUxlbiA9IChyZWY/LnZlcnNlICsgJycpLmxlbmd0aFxuICAgICAgICB2ZXJzZUNodW5rc1t2ZXJzZUluZGV4XSA9IG9sZFZlcnNlLnN1YnN0cmluZygwLCB2ZXJzZU51bUxlbiArIDEpICsgbmV3VmVyc2VVc2ZtXG4gICAgICAgIGNvbnN0IG5ld0NoYXB0ZXIgPSB2ZXJzZUNodW5rcy5qb2luKCdcXFxcdiAnKVxuICAgICAgICBjaGFwdGVyQ2h1bmtzW2NoYXB0ZXJJbmRleF0gPSBuZXdDaGFwdGVyXG4gICAgICAgIG5ld1VzZm0gPSBjaGFwdGVyQ2h1bmtzLmpvaW4oJ1xcXFxjICcpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXdVc2ZtXG4gIH1cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBmb3IgZWFjaCB1bnNhdmVkIGNoYW5nZSwgY2FsbCBpbnRvIHNjcmlwdHVyZVBhbmUgdG8gZ2V0IGxhdGVzdCBjaGFuZ2VzIGZvciB2ZXJzZSB0byBzYXZlXG4gICAgYXN5bmMgZnVuY3Rpb24gZ2V0UmVhZHlGb3JTYXZlKCkge1xuICAgICAgaWYgKHNhdmVDbGlja2VkKSB7XG4gICAgICAgIGxldCBjcmVhdGVFZGl0QnJhbmNoID0gIV91c2luZ1VzZXJCcmFuY2hcblxuICAgICAgICBpZiAoIWNyZWF0ZUVkaXRCcmFuY2gpIHsgLy8gaWYgYWxyZWFkeSB1c2luZyB0aGUgdXNlciBicmFuY2hcbiAgICAgICAgICBpZiAod29ya2luZ1Jlc291cmNlQnJhbmNoICE9PSB1c2VyRWRpdEJyYW5jaE5hbWUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2Fybihgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gc3RhdGUgY29uZmxpY3QgLSBzaG91bGQgYmUgaW4gdXNlciBicmFuY2ggJHt1c2VyRWRpdEJyYW5jaE5hbWV9LCBidXQgYWN0dWFsbHkgdXNpbmcgJHt3b3JraW5nUmVzb3VyY2VCcmFuY2h9YClcbiAgICAgICAgICAgIGNyZWF0ZUVkaXRCcmFuY2ggPSB0cnVlXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBhbHJlYWR5IHVzaW5nIGVkaXQgYnJhbmNoOiAke3dvcmtpbmdSZXNvdXJjZUJyYW5jaH1gKVxuICAgICAgICAgICAgc2V0U3RhdGUoeyBlZGl0QnJhbmNoUmVhZHk6IHRydWUgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY3JlYXRlRWRpdEJyYW5jaCkgeyAvLyBpZiBub3QgeWV0IHVzaW5nIHRoZSB1c2VyIGJyYW5jaCwgY3JlYXRlIGl0XG4gICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGNyZWF0aW5nIGVkaXQgYnJhbmNoYClcbiAgICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgICBlZGl0QnJhbmNoUmVhZHk6IGZhbHNlLFxuICAgICAgICAgICAgcmVhZHlGb3JGZXRjaDogZmFsc2UsXG4gICAgICAgICAgICBzaGE6IG51bGwsXG4gICAgICAgICAgfSkgLy8gd2Ugd2lsbCBuZWVkIGEgbmV3IHNoYSBmb3IgYm9vay9icmFuY2hcblxuICAgICAgICAgIGNvbnN0IGJyYW5jaCA9IGF3YWl0IHN0YXJ0RWRpdEJyYW5jaCgpXG5cbiAgICAgICAgICBpZiAoYnJhbmNoKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gZWRpdCBicmFuY2ggY3JlYXRlZGApXG4gICAgICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgICAgIGVkaXRCcmFuY2hSZWFkeTogdHJ1ZSxcbiAgICAgICAgICAgICAgcmVhZHlGb3JGZXRjaDogdHJ1ZSxcbiAgICAgICAgICAgICAgcmVmOiBicmFuY2gsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIGVycm9yIGNyZWF0aW5nIGVkaXQgYnJhbmNoJylcbiAgICAgICAgICAgIG9uUmVzb3VyY2VFcnJvciAmJiBvblJlc291cmNlRXJyb3IobnVsbCwgZmFsc2UsIG51bGwsIGBFcnJvciBjcmVhdGluZyBlZGl0IGJyYW5jaCAke2xhbmd1YWdlSWRffV8ke3Jlc291cmNlSWR9YCwgdHJ1ZSlcbiAgICAgICAgICAgIHNldFN0YXRlKHsgc2F2ZUNsaWNrZWQ6IGZhbHNlIH0pXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gZ2V0dGluZyB2ZXJzZSBjaGFuZ2VzYClcbiAgICAgICAgY29uc3QgdW5zYXZlZENhcmRJbmRpY2VzID0gT2JqZWN0LmtleXModW5zYXZlZENoYW5nZXNMaXN0KVxuXG4gICAgICAgIGlmICh1bnNhdmVkQ2FyZEluZGljZXM/Lmxlbmd0aCkge1xuICAgICAgICAgIGxldCBiaWJsZVVzZm0gPSBnZXRDdXJyZW50Qm9vayhzY3JpcHR1cmVDb25maWcsIGJvb2tJZClcbiAgICAgICAgICBsZXQgbWVyZ2VGYWlsID0gZmFsc2VcbiAgICAgICAgICBpZiAoYmlibGVVc2ZtKSB7XG4gICAgICAgICAgICBsZXQgY2FyZE51bSA9IDBcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjYXJkSW5kZXggb2YgdW5zYXZlZENhcmRJbmRpY2VzKSB7XG4gICAgICAgICAgICAgIGNhcmROdW0gPSBwYXJzZUludChjYXJkSW5kZXgpXG4gICAgICAgICAgICAgIGNvbnN0IHsgZ2V0Q2hhbmdlcywgc3RhdGUgfSA9IHVuc2F2ZWRDaGFuZ2VzTGlzdFtjYXJkTnVtXVxuXG4gICAgICAgICAgICAgIGlmIChnZXRDaGFuZ2VzKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5ld1VzZm1cbiAgICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgICByZWYsXG4gICAgICAgICAgICAgICAgICB1cGRhdGVkVmVyc2VPYmplY3RzLFxuICAgICAgICAgICAgICAgIH0gPSBnZXRDaGFuZ2VzKHN0YXRlKVxuXG4gICAgICAgICAgICAgICAgaWYgKHVwZGF0ZWRWZXJzZU9iamVjdHMgJiYgYmlibGVVc2ZtKSB7IC8vIGp1c3QgcmVwbGFjZSB2ZXJzZVxuICAgICAgICAgICAgICAgICAgbmV3VXNmbSA9IG1lcmdlVmVyc2VPYmplY3RzSW50b0JpYmxlVXNmbShiaWJsZVVzZm0sIHJlZiwgdXBkYXRlZFZlcnNlT2JqZWN0cywgY2FyZE51bSlcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAobmV3VXNmbSkge1xuICAgICAgICAgICAgICAgICAgYmlibGVVc2ZtID0gbmV3VXNmbVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBtZXJnZUZhaWwgPSB0cnVlXG4gICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuXG4gICAgICAgICAgaWYgKG1lcmdlRmFpbCkgeyAvLyBpZiB3ZSBmYWlsZWQgdG8gbWVyZ2UsIGZhbGxiYWNrIHRvIGJydXRlIGZvcmNlIHZlcnNlIG9iamVjdHMgdG8gVVNGTVxuICAgICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgke2NhcmROdW19KSAtIHZlcnNlIG5vdCBmb3VuZCwgZmFsbGluZyBiYWNrIHRvIGluc2VydGluZyB2ZXJzZSBvYmplY3RgKVxuICAgICAgICAgICAgbGV0IG5ld0Jvb2tKc29uXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgY2FyZEluZGV4IG9mIHVuc2F2ZWRDYXJkSW5kaWNlcykge1xuICAgICAgICAgICAgICBjb25zdCBjYXJkTnVtID0gcGFyc2VJbnQoY2FyZEluZGV4KVxuICAgICAgICAgICAgICBjb25zdCB7IGdldENoYW5nZXMsIHN0YXRlIH0gPSB1bnNhdmVkQ2hhbmdlc0xpc3RbY2FyZE51bV1cblxuICAgICAgICAgICAgICBpZiAoZ2V0Q2hhbmdlcykge1xuICAgICAgICAgICAgICAgIGxldCBuZXdVc2ZtXG4gICAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgICAgbmV3VmVyc2VUZXh0LFxuICAgICAgICAgICAgICAgICAgcmVmLFxuICAgICAgICAgICAgICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0cyxcbiAgICAgICAgICAgICAgICB9ID0gZ2V0Q2hhbmdlcyhzdGF0ZSlcblxuICAgICAgICAgICAgICAgIGlmICh1cGRhdGVkVmVyc2VPYmplY3RzICYmICFuZXdVc2ZtKSB7XG4gICAgICAgICAgICAgICAgICBsZXQgdGFyZ2V0VmVyc2VPYmplY3RzXyA9IG51bGxcblxuICAgICAgICAgICAgICAgICAgaWYgKHJlZikge1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV3VmVyc2VUZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB0YXJnZXRWZXJzZU9iamVjdHMgfSA9IEFsaWdubWVudEhlbHBlcnMudXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UodXBkYXRlZFZlcnNlT2JqZWN0cywgbmV3VmVyc2VUZXh0KVxuICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFZlcnNlT2JqZWN0c18gPSB0YXJnZXRWZXJzZU9iamVjdHNcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRWZXJzZU9iamVjdHNfID0gdXBkYXRlZFZlcnNlT2JqZWN0c1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG5ld0Jvb2tKc29uID0gdGFyZ2V0VmVyc2VPYmplY3RzXyAmJiBzY3JpcHR1cmVDb25maWc/LnVwZGF0ZVZlcnNlKHJlZi5jaGFwdGVyLCByZWYudmVyc2UsIHt2ZXJzZU9iamVjdHM6IHRhcmdldFZlcnNlT2JqZWN0c199KVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBiaWJsZVVzZm0gPSB1c2ZtanMudG9VU0ZNKG5ld0Jvb2tKc29uLCB7IGZvcmNlZE5ld0xpbmVzOiB0cnVlIH0pXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGJpYmxlVXNmbSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2aW5nIG5ldyBVU0ZNOiAke2JpYmxlVXNmbS5zdWJzdHJpbmcoMCwgMTAwKX0uLi5gKVxuICAgICAgICAgICAgc2V0Q2FyZHNTYXZpbmcocHJldkNhcmRzU2F2aW5nID0+IFsuLi5wcmV2Q2FyZHNTYXZpbmcsIGNhcmRSZXNvdXJjZUlkXSlcbiAgICAgICAgICAgIHNldFN0YXRlKHtzYXZlQ29udGVudDogYmlibGVVc2ZtLCBzdGFydFNhdmU6IHRydWUsIHNhdmVDbGlja2VkOiBmYWxzZX0pXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBFcnJvciByZXRyaWV2aW5nIHRoZSBjb3JyZWN0IGJvb2sgZGF0YTogaW5jb3JyZWN0IGJvb2sgJHtsYW5ndWFnZUlkX31fJHtyZXNvdXJjZUlkfWApXG4gICAgICAgICAgICAgIG9uUmVzb3VyY2VFcnJvciAmJiBvblJlc291cmNlRXJyb3IobnVsbCwgZmFsc2UsIG51bGwsIGBFcnJvciByZXRyaWV2aW5nIHRoZSBjb3JyZWN0IGJvb2sgZGF0YSAke2xhbmd1YWdlSWRffV8ke3Jlc291cmNlSWR9YCwgdHJ1ZSlcbiAgICAgICAgICAgICAgc2V0U3RhdGUoeyBzYXZlQ2xpY2tlZDogZmFsc2UgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRSZWFkeUZvclNhdmUoKVxuICB9LCBbc2F2ZUNsaWNrZWRdKVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgeyBjaGFwdGVyIH0gPSBfcmVmZXJlbmNlIHx8IHt9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBfdmVyc2VzRm9yUmVmID0gc2NyaXB0dXJlQ29uZmlnPy52ZXJzZXNGb3JSZWZcbiAgICBsZXQgbmV3U2VsZWN0aW9ucyA9IG5ldyBNYXAoKVxuICAgIGxldCB1cGRhdGVTZWxlY3Rpb25zID0gZmFsc2VcbiAgICBjb25zdCBfbWFwID0gbmV3U2VsZWN0aW9uc1xuICAgIGNvbnN0IG9yaWdpbmFsQm9va0lkID0gb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cz8uYm9va0lkXG4gICAgY29uc3QgYm9va1ZlcnNlT2JqZWN0ID0gb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cz8uY2hhcHRlcnNcbiAgICBsZXQgbmV3U2VsZWN0ZWRRdW90ZSA9IG51bGxcblxuICAgIC8vIGlmIHdlIGhhdmUgZXZlcnl0aGluZyB3ZSBuZWVkIHRvIGNhbGN1bGF0ZSBzZWxlY3Rpb25zXG4gICAgaWYgKF92ZXJzZXNGb3JSZWY/Lmxlbmd0aCAmJlxuICAgICAgYm9va1ZlcnNlT2JqZWN0ICYmXG4gICAgICAoYm9va0lkID09PSBvcmlnaW5hbEJvb2tJZCkgJiZcbiAgICAgIGJvb2tWZXJzZU9iamVjdFtjaGFwdGVyXSAmJiAvLyB3ZSBuZWVkIHRvIGhhdmUgZGF0YSBmb3IgY2hhcHRlclxuICAgICAgc2VsZWN0ZWRRdW90ZT8ucXVvdGVcbiAgICApIHtcbiAgICAgIC8vIGlmIHF1b3RlIGlzIGRpZmZlcmVudCB0aGFuIGxhc3RcbiAgICAgIGlmICghaXNFcXVhbChsYXN0U2VsZWN0ZWRRdW90ZSwgc2VsZWN0ZWRRdW90ZSkgfHxcbiAgICAgICAgIWlzRXF1YWwodmVyc2VzRm9yUmVmLCBfdmVyc2VzRm9yUmVmKSkge1xuICAgICAgICBjb25zdCBvcmlnaW5hbFZlcnNlcyA9IHt9XG4gICAgICAgIGNvbnN0IHN1YnN0aXR1dGUgPSB7fSAvLyBrZWVwIHRyYWNrIG9mIHZlcnNlIHN1YnN0aXR1dGlvbnNcbiAgICAgICAgbGV0IHN0YXJ0VmVyc2UgPSBfdmVyc2VzRm9yUmVmWzBdLnZlcnNlXG5cbiAgICAgICAgaWYgKHR5cGVvZiBzdGFydFZlcnNlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHN0YXJ0VmVyc2UgPSBwYXJzZUludChzdGFydFZlcnNlKVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGxhc3RWZXJzZSA9IHN0YXJ0VmVyc2VcblxuICAgICAgICBmb3IgKGxldCBpID0gMCwgbCA9IF92ZXJzZXNGb3JSZWYubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgY29uc3QgdmVyc2VSZWYgPSBfdmVyc2VzRm9yUmVmW2ldXG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgY2hhcHRlcixcbiAgICAgICAgICAgIHZlcnNlLFxuICAgICAgICAgIH0gPSB2ZXJzZVJlZlxuICAgICAgICAgIC8vIFRSSUNLWSAtIHdlIHJlbWFwIHZlcnNlcyBpbiByZWZlcmVuY2UgcmFuZ2UgdG8gYSBsaW5lYXIgc2VyaWVzIG9mIHZlcnNlcyBzbyB2ZXJzZSBzcGFucyBkb24ndCBjaG9rZSBnZXRRdW90ZU1hdGNoZXNJbkJvb2tSZWZcbiAgICAgICAgICBsZXQgX3ZlcnNlID0gc3RhcnRWZXJzZSArIGlcbiAgICAgICAgICBsYXN0VmVyc2UgPSBfdmVyc2VcbiAgICAgICAgICBzdWJzdGl0dXRlW2Ake2NoYXB0ZXJ9OiR7X3ZlcnNlfWBdID0gYCR7Y2hhcHRlcn06JHt2ZXJzZX1gXG5cbiAgICAgICAgICBpZiAoIW9yaWdpbmFsVmVyc2VzW2NoYXB0ZXJdKSB7XG4gICAgICAgICAgICBvcmlnaW5hbFZlcnNlc1tjaGFwdGVyXSA9IHt9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGV0IHZlcnNlT2JqZWN0cyA9IFtdXG5cbiAgICAgICAgICBpZiAoKHR5cGVvZiB2ZXJzZSA9PT0gJ3N0cmluZycpICYmICh2ZXJzZS5pbmNsdWRlcygnLScpKSkge1xuICAgICAgICAgICAgY29uc3QgdmVyc2VzID0gZ2V0VmVyc2VzKGJvb2tWZXJzZU9iamVjdCwgYCR7Y2hhcHRlcn06JHt2ZXJzZX1gKVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHZlcnNlSXRlbSBvZiB2ZXJzZXMpIHtcbiAgICAgICAgICAgICAgY29uc3Qgdm8gPSB2ZXJzZUl0ZW0udmVyc2VEYXRhLnZlcnNlT2JqZWN0c1xuICAgICAgICAgICAgICB2ZXJzZU9iamVjdHMgPSB2ZXJzZU9iamVjdHMuY29uY2F0KHZvKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2ZXJzZU9iamVjdHMgPSBib29rVmVyc2VPYmplY3RbY2hhcHRlcl1bdmVyc2VdPy52ZXJzZU9iamVjdHNcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodmVyc2VPYmplY3RzKSB7XG4gICAgICAgICAgICB2ZXJzZU9iamVjdHMgPSBjbGVhbnVwVmVyc2VPYmplY3RzKHZlcnNlT2JqZWN0cylcbiAgICAgICAgICAgIG9yaWdpbmFsVmVyc2VzW2NoYXB0ZXJdW192ZXJzZV0gPSB7IHZlcnNlT2JqZWN0cyB9XG4gICAgICAgICAgICBfbWFwLnNldChgJHtjaGFwdGVyfToke3ZlcnNlfWAsIHZlcnNlT2JqZWN0cylcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjcmVhdGUgbmV3IHJlZmVyZW5jZSByYW5nZSBmb3IgbmV3IGxpbmVhciB2ZXJzZSByYW5nZVxuICAgICAgICBjb25zdCBbY2hhcHRlcl0gPSBzZWxlY3RlZFF1b3RlPy5yZWZlcmVuY2U/LnNwbGl0KCc6JylcbiAgICAgICAgbGV0IHN1YlJlZiA9IGAke2NoYXB0ZXJ9OiR7c3RhcnRWZXJzZX1gXG5cbiAgICAgICAgaWYgKGxhc3RWZXJzZSAhPSBzdGFydFZlcnNlKSB7XG4gICAgICAgICAgc3ViUmVmICs9IGAtJHtsYXN0VmVyc2V9YFxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcXVvdGVNYXRjaGVzID0gZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmKHtcbiAgICAgICAgICBib29rT2JqZWN0OiBvcmlnaW5hbFZlcnNlcyxcbiAgICAgICAgICByZWY6IHN1YlJlZixcbiAgICAgICAgICBxdW90ZTogc2VsZWN0ZWRRdW90ZT8ucXVvdGUsXG4gICAgICAgICAgb2NjdXJyZW5jZTogc2VsZWN0ZWRRdW90ZT8ub2NjdXJyZW5jZSxcbiAgICAgICAgfSlcblxuICAgICAgICBjb25zdCBzZWxlY3Rpb25zID0gbmV3IE1hcCgpXG5cbiAgICAgICAgaWYgKHF1b3RlTWF0Y2hlcz8uc2l6ZSkge1xuICAgICAgICAgIHF1b3RlTWF0Y2hlcy5mb3JFYWNoKCh3b3Jkcywga2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBfa2V5ID0gc3Vic3RpdHV0ZVtrZXldXG5cbiAgICAgICAgICAgIHNlbGVjdGlvbnMuc2V0KF9rZXksIHdvcmRzLm1hcCh3b3JkID0+IChcbiAgICAgICAgICAgICAgeyAuLi53b3JkLCB0ZXh0OiBjb3JlLm5vcm1hbGl6ZVN0cmluZyh3b3JkLnRleHQpIH1cbiAgICAgICAgICAgICkpKVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgbmV3U2VsZWN0aW9ucyA9IHNlbGVjdGlvbnNcbiAgICAgICAgbmV3U2VsZWN0ZWRRdW90ZSA9IHNlbGVjdGVkUXVvdGVcbiAgICAgICAgdXBkYXRlU2VsZWN0aW9ucyA9IHRydWVcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBuZXdTdGF0ZTogYW55ID0ge31cblxuICAgIC8vIHVwZGF0ZSBzdGF0ZXMgdGhhdCBoYXZlIGNoYW5nZWRcbiAgICBpZiAoIWFyZU1hcHNUaGVTYW1lKHZlcnNlT2JqZWN0c01hcCwgX21hcCkpIHtcbiAgICAgIG5ld1N0YXRlLnZlcnNlT2JqZWN0c01hcCA9IF9tYXBcbiAgICB9XG5cbiAgICBjb25zdCBib29rc05vdFNhbWUgPSByZWZlcmVuY2U/LnByb2plY3RJZCAhPT0gY3VycmVudFJlZmVyZW5jZT8ucHJvamVjdElkXG5cbiAgICBpZiAoYm9va3NOb3RTYW1lIHx8ICFhcmVWZXJzZXNTYW1lKHZlcnNlc0ZvclJlZiwgX3ZlcnNlc0ZvclJlZikpIHtcbiAgICAgIG5ld1N0YXRlLnZlcnNlc0ZvclJlZiA9IF92ZXJzZXNGb3JSZWZcbiAgICAgIG5ld1N0YXRlLmxhc3RTZWxlY3RlZFF1b3RlID0gbmV3U2VsZWN0ZWRRdW90ZVxuICAgICAgbmV3U3RhdGUuc2VsZWN0aW9ucyA9IG5ld1NlbGVjdGlvbnNcbiAgICB9XG5cbiAgICBpZiAobmV3U2VsZWN0ZWRRdW90ZSkge1xuICAgICAgbmV3U3RhdGUubGFzdFNlbGVjdGVkUXVvdGUgPSBuZXdTZWxlY3RlZFF1b3RlXG4gICAgfVxuXG4gICAgaWYgKHVwZGF0ZVNlbGVjdGlvbnMpIHtcbiAgICAgIGlmICghYXJlTWFwc1RoZVNhbWUoc2VsZWN0aW9ucyB8fCAobmV3IE1hcCgpKSwgbmV3U2VsZWN0aW9ucykpIHtcbiAgICAgICAgbmV3U3RhdGUuc2VsZWN0aW9ucyA9IG5ld1NlbGVjdGlvbnNcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoT2JqZWN0LmtleXMobmV3U3RhdGUpLmxlbmd0aCkge1xuICAgICAgc2V0U3RhdGUobmV3U3RhdGUpXG4gICAgfVxuICB9LCBbXG4gICAgb3duZXIsXG4gICAgcmVzb3VyY2VJZCxcbiAgICBib29rSWQsXG4gICAgbGFuZ3VhZ2VJZF8sXG4gICAgc2NyaXB0dXJlQ29uZmlnPy52ZXJzZXNGb3JSZWYsXG4gICAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyxcbiAgICBzZWxlY3RlZFF1b3RlLFxuICBdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIGNsZWFyIHNldHRpbmdzIG9uIHZlcnNlIGNoYW5nZVxuICAgIHNldFN0YXRlKHtcbiAgICAgIHZlcnNlc0FsaWdubWVudFN0YXR1czogbnVsbCxcbiAgICAgIHVuc2F2ZWRDaGFuZ2VzTGlzdDoge30sXG4gICAgICBoYXZlVW5zYXZlZENoYW5nZXM6IGZhbHNlLFxuICAgIH0pXG4gIH0sIFtfcmVmZXJlbmNlXSlcblxuICBjb25zdCB1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXMgPSAocmVmZXJlbmNlLCBhbGlnbmVkKSA9PiB7XG4gICAgc2V0U3RhdGVfKHByZXZTdGF0ZSA9PiAoe1xuICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzOiB7IC4uLnByZXZTdGF0ZS52ZXJzZXNBbGlnbm1lbnRTdGF0dXMsIFtgJHtyZWZlcmVuY2UuY2hhcHRlcn06JHtyZWZlcmVuY2UudmVyc2V9YF06IGFsaWduZWQgfSxcbiAgICB9KSlcbiAgfVxuXG4gIGxldCBfdmVyc2VzRm9yUmVmID0gc2NyaXB0dXJlQ29uZmlnPy52ZXJzZXNGb3JSZWZcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChfdmVyc2VzRm9yUmVmPy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHsgcmVmZXJlbmNlLCByZXNvdXJjZUxpbmsgfSA9IHNjcmlwdHVyZUNvbmZpZyB8fCB7fVxuICAgICAgY29uc29sZS5sb2coYFNjcmlwdHVyZUNhcmQuX3ZlcnNlc0ZvclJlZiBjaGFuZ2VkYCwgeyByZWZlcmVuY2UsIHJlc291cmNlTGluayB9KVxuICAgIH1cbiAgfSwgW192ZXJzZXNGb3JSZWZdKVxuXG4gIGlmICghX3ZlcnNlc0ZvclJlZj8ubGVuZ3RoKSB7IC8vIGlmIGVtcHR5IG9mIHJlZmVyZW5jZXMsIGNyZWF0ZSBzaW5nbGUgZW1wdHkgcmVmZXJlbmNlXG4gICAgX3ZlcnNlc0ZvclJlZiA9IFt7IC4uLnJlZmVyZW5jZSB9XVxuICB9XG5cbiAgY29uc3QgcmVuZGVyZWRTY3JpcHR1cmVQYW5lcyA9IF92ZXJzZXNGb3JSZWY/Lm1hcCgoX2N1cnJlbnRWZXJzZURhdGEsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgaW5pdGlhbFZlcnNlT2JqZWN0cyA9IF9jdXJyZW50VmVyc2VEYXRhPy52ZXJzZURhdGE/LnZlcnNlT2JqZWN0cyB8fCBbXVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCB7IGNoYXB0ZXIsIHZlcnNlIH0gPSBfY3VycmVudFZlcnNlRGF0YSB8fCB7fVxuICAgIGNvbnN0IHByb2plY3RJZCA9IGN1cnJlbnRSZWZlcmVuY2U/LnByb2plY3RJZCB8fCByZWZlcmVuY2U/LnByb2plY3RJZFxuICAgIGNvbnN0IF9yZWZlcmVuY2UgPSB7XG4gICAgICAuLi5fdmVyc2VzRm9yUmVmLFxuICAgICAgY2hhcHRlcixcbiAgICAgIHByb2plY3RJZCxcbiAgICAgIHZlcnNlLFxuICAgIH1cbiAgICBjb25zdCBfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyA9IHtcbiAgICAgIC4uLnNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcsXG4gICAgICBjdXJyZW50SW5kZXg6IGluZGV4LFxuICAgICAgaW5pdGlhbFZlcnNlT2JqZWN0cyxcbiAgICAgIHJlZmVyZW5jZTogX3JlZmVyZW5jZSxcbiAgICAgIGlzTmV3VGVzdGFtZW50LFxuICAgIH1cblxuICAgIGxldCBpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQgPSBmYWxzZVxuXG4gICAgaWYgKHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQpIHtcbiAgICAgIGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCA9IHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQuY2hhcHRlciA9PSBjaGFwdGVyICYmIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQudmVyc2UgPT0gdmVyc2VcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFNjcmlwdHVyZVBhbmVcbiAgICAgICAgey4uLnNjcmlwdHVyZUNvbmZpZ31cbiAgICAgICAgY29udGVudFN0eWxlPXtjb250ZW50U3R5bGV9XG4gICAgICAgIGN1cnJlbnRJbmRleD17aW5kZXh9XG4gICAgICAgIGRldGVybWluaW5nQnJhbmNoPXshcmVhZHlGb3JGZXRjaH1cbiAgICAgICAgZGlyZWN0aW9uPXtkaXJlY3Rpb259XG4gICAgICAgIGRpc2FibGVXb3JkUG9wb3Zlcj17ZGlzYWJsZVdvcmRQb3BvdmVyX31cbiAgICAgICAgZm9udFNpemU9e2ZvbnRTaXplfVxuICAgICAgICBnZXRMZXhpY29uRGF0YT17Z2V0TGV4aWNvbkRhdGF9XG4gICAgICAgIGlzTlQ9e2lzTlRffVxuICAgICAgICBpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ9e2lzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudH1cbiAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgb25BbGlnbm1lbnRGaW5pc2g9eygpID0+IHNldFN0YXRlKHsgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogbnVsbCB9KX1cbiAgICAgICAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cz17b3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0c31cbiAgICAgICAgcmVmU3R5bGU9e3JlZlN0eWxlfVxuICAgICAgICByZWZlcmVuY2U9e19yZWZlcmVuY2V9XG4gICAgICAgIHNhdmluZz17c3RhcnRTYXZlfVxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWc9e19zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnfVxuICAgICAgICBzZXRXb3JkQWxpZ25lclN0YXR1cz17c2V0V29yZEFsaWduZXJTdGF0dXN9XG4gICAgICAgIHNlcnZlcj17c2VydmVyfVxuICAgICAgICB0cmFuc2xhdGU9e3RyYW5zbGF0ZX1cbiAgICAgICAgdXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzPXt1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXN9XG4gICAgICAvPlxuICAgIClcbiAgfSlcblxuICBjb25zdCBoYW5kbGVBbGlnbkJ1dHRvbkNsaWNrID0gKCkgPT4ge1xuICAgIGlmICh2ZXJzZXNGb3JSZWY/Lmxlbmd0aCA+IDEpIHtcbiAgICAgIHNldFN0YXRlKHsgc2hvd0FsaWdubWVudFBvcHVwOiB0cnVlIH0pXG4gICAgfSBlbHNlIGlmICh2ZXJzZXNGb3JSZWY/Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgc2V0U3RhdGUoeyB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiB2ZXJzZXNGb3JSZWZbMF0gfSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBvblJlbmRlclRvb2xiYXIgPSAoeyBpdGVtcyB9KSA9PiB7XG4gICAgY29uc3QgbmV3SXRlbXMgPSBbLi4uaXRlbXNdXG5cbiAgICBsZXQgYWxsVmVyc2VzQWxpZ25lZCA9IGZhbHNlXG5cbiAgICAvLyBDaGVjayBpZiBhbGwgdmFsdWVzIGluIHZlcnNlc0FsaWdubWVudFN0YXR1cyBhcmUgdHJ1ZVxuICAgIGlmICh2ZXJzZXNBbGlnbm1lbnRTdGF0dXMpIHtcbiAgICAgIGFsbFZlcnNlc0FsaWduZWQgPSBPYmplY3QudmFsdWVzKHZlcnNlc0FsaWdubWVudFN0YXR1cykuZXZlcnkoYWxpZ25TdGF0dXMgPT4gYWxpZ25TdGF0dXMgPT09IHRydWUpXG4gICAgfVxuXG4gICAgbGV0IGFsaWduSWNvbiA9IG51bGxcbiAgICBsZXQgYWxpZ25CdXR0b25UZXh0ID0gJydcblxuICAgIGlmIChhbGxWZXJzZXNBbGlnbmVkKSB7XG4gICAgICBhbGlnbkljb24gPSA8UnhMaW5rMiBpZD17YHZhbGlkX2ljb25fJHtyZXNvdXJjZUlkfWB9IGNvbG9yPScjQkJCJyAvPlxuICAgICAgYWxpZ25CdXR0b25UZXh0ID0gJ0FsaWdubWVudCBpcyBWYWxpZCdcbiAgICB9IGVsc2Uge1xuICAgICAgYWxpZ25JY29uID0gPFJ4TGlua0JyZWFrMiBpZD17YGludmFsaWRfYWxpZ25tZW50X2ljb25fJHtyZXNvdXJjZUlkfWB9IGNvbG9yPScjMDAwJyAvPlxuICAgICAgYWxpZ25CdXR0b25UZXh0ID0gJ0FsaWdubWVudCBpcyBJbnZhbGlkJ1xuICAgIH1cblxuICAgIGlmIChzZXRXb3JkQWxpZ25lclN0YXR1cyAmJiByZXNvdXJjZUlkICE9PSAnT1JJR0lOQUxfU09VUkNFJykge1xuICAgICAgbmV3SXRlbXMucHVzaChcbiAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICBpZD17YGFsaWdubWVudF9pY29uXyR7cmVzb3VyY2VJZH1gfVxuICAgICAgICAgIGtleT0nY2hlY2tpbmctYnV0dG9uJ1xuICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUFsaWduQnV0dG9uQ2xpY2t9XG4gICAgICAgICAgdGl0bGU9e2FsaWduQnV0dG9uVGV4dH1cbiAgICAgICAgICBhcmlhLWxhYmVsPXthbGlnbkJ1dHRvblRleHR9XG4gICAgICAgICAgc3R5bGU9e3sgY3Vyc29yOiAncG9pbnRlcicgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHthbGlnbkljb259XG4gICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgIClcbiAgICB9XG5cbiAgICBuZXdJdGVtcy5wdXNoKFxuICAgICAgPD5cbiAgICAgICAgPFVwZGF0ZUJyYW5jaEJ1dHRvbiB7Li4udXBkYXRlQnV0dG9uUHJvcHN9IGlzTG9hZGluZz17aXNVcGRhdGVMb2FkaW5nIHx8IHN0YXJ0U2F2ZX0vPlxuICAgICAgICA8RXJyb3JEaWFsb2cgdGl0bGU9e2RpYWxvZ1RpdGxlfSBjb250ZW50PXtkaWFsb2dNZXNzYWdlfSBvcGVuPXtpc0Vycm9yRGlhbG9nT3Blbn0gb25DbG9zZT17b25DbG9zZUVycm9yRGlhbG9nfSBpc0xvYWRpbmc9eyBpc1VwZGF0ZUxvYWRpbmcgfHwgc3RhcnRTYXZlIH0gbGluaz17ZGlhbG9nTGlua30gbGlua1Rvb2x0aXA9e2RpYWxvZ0xpbmtUb29sdGlwfSAvPlxuICAgICAgPC8+XG4gICAgKVxuXG4gICAgcmV0dXJuIG5ld0l0ZW1zXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyXG4gICAgICBzZWxlY3Rpb25zPXtzZWxlY3Rpb25zfVxuICAgICAgb25TZWxlY3Rpb25zPXtuZXdTZWxlY3Rpb25zID0+IHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ29uU2VsZWN0aW9ucycsIG5ld1NlbGVjdGlvbnMpXG4gICAgICB9fVxuICAgICAgcXVvdGU9e3NlbGVjdGVkUXVvdGU/LnF1b3RlfVxuICAgICAgb2NjdXJyZW5jZT17Zml4T2NjdXJyZW5jZShzZWxlY3RlZFF1b3RlPy5vY2N1cnJlbmNlKX1cbiAgICAgIHZlcnNlT2JqZWN0c01hcD17dmVyc2VPYmplY3RzTWFwfVxuICAgID5cbiAgICAgIDxDYXJkXG4gICAgICAgIGlkPXtgc2NyaXB0dXJlX2NhcmRfJHtjYXJkTnVtfWB9XG4gICAgICAgIHRpdGxlPXtzY3JpcHR1cmVMYWJlbH1cbiAgICAgICAgc2V0dGluZ3NUaXRsZT17c2NyaXB0dXJlVGl0bGUgKyAnIFNldHRpbmdzJ31cbiAgICAgICAgaXRlbXM9e2l0ZW1zfVxuICAgICAgICBjbGFzc2VzPXtjbGFzc2VzfVxuICAgICAgICBoZWFkZXJzPXtoZWFkZXJzfVxuICAgICAgICBmaWx0ZXJzPXtmaWx0ZXJzfVxuICAgICAgICBmb250U2l6ZT17Zm9udFNpemV9XG4gICAgICAgIGl0ZW1JbmRleD17aXRlbUluZGV4fVxuICAgICAgICBzZXRGaWx0ZXJzPXtzZXRGaWx0ZXJzfVxuICAgICAgICBzZXRGb250U2l6ZT17c2V0Rm9udFNpemV9XG4gICAgICAgIHNldEl0ZW1JbmRleD17c2V0SXRlbUluZGV4fVxuICAgICAgICBtYXJrZG93blZpZXc9e21hcmtkb3duVmlld31cbiAgICAgICAgc2V0TWFya2Rvd25WaWV3PXtzZXRNYXJrZG93blZpZXd9XG4gICAgICAgIGdldEN1c3RvbUNvbXBvbmVudD17Z2V0U2NyaXB0dXJlU2VsZWN0b3J9XG4gICAgICAgIGhpZGVNYXJrZG93blRvZ2dsZVxuICAgICAgICBvbk1lbnVDbG9zZT17b25NZW51Q2xvc2V9XG4gICAgICAgIG9uTWluaW1pemU9e29uTWluaW1pemUgPyAoKSA9PiBvbk1pbmltaXplKGlkLCBzY3JpcHR1cmVUaXRsZSkgOiBudWxsfVxuICAgICAgICBlZGl0YWJsZT17ZW5hYmxlRWRpdCB8fCBlbmFibGVBbGlnbm1lbnR9XG4gICAgICAgIHNhdmVkPXtzdGFydFNhdmUgfHwgIWhhdmVVbnNhdmVkQ2hhbmdlc31cbiAgICAgICAgb25TYXZlRWRpdD17KCkgPT4gc2V0U3RhdGUoeyBzYXZlQ2xpY2tlZDogdHJ1ZSB9KX1cbiAgICAgICAgb25SZW5kZXJUb29sYmFyPXtvblJlbmRlclRvb2xiYXJ9XG4gICAgICA+XG4gICAgICAgIDxkaXYgaWQ9XCJzY3JpcHR1cmUtcGFuZS1saXN0XCI+XG4gICAgICAgICAge3JlbmRlcmVkU2NyaXB0dXJlUGFuZXN9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9DYXJkPlxuICAgICAgPFZlcnNlU2VsZWN0b3JQb3B1cFxuICAgICAgICByZXNvdXJjZUlkPXtyZXNvdXJjZUlkfVxuICAgICAgICBvcGVuPXtzaG93QWxpZ25tZW50UG9wdXB9XG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFN0YXRlKHsgc2hvd0FsaWdubWVudFBvcHVwOiBmYWxzZSB9KX1cbiAgICAgICAgdmVyc2VzRm9yUmVmPXt2ZXJzZXNGb3JSZWZ9XG4gICAgICAgIHZlcnNlc0FsaWdubWVudFN0YXR1cz17dmVyc2VzQWxpZ25tZW50U3RhdHVzfVxuICAgICAgICBvblZlcnNlU2VsZWN0PXsodmVyc2UpID0+IHNldFN0YXRlKHtcbiAgICAgICAgICB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiB2ZXJzZSxcbiAgICAgICAgICBzaG93QWxpZ25tZW50UG9wdXA6IGZhbHNlLFxuICAgICAgICB9KX1cbiAgICAgIC8+XG4gICAgPC9TZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyPlxuICApXG59XG5cblNjcmlwdHVyZUNhcmQucHJvcFR5cGVzID0ge1xuICAvKiogcmVwbyBicmFuY2ggb3IgdGFnIHN1Y2ggYXMgbWFzdGVyICovXG4gIGFwcFJlZjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogYXV0aGVudGljYXRpb24gaW5mbyAqL1xuICBhdXRoZW50aWNhdGlvbjogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIGluZGV4IGZvciBjdXJyZW50IGJvb2sgKGUuZy4gJzAxJyBmb3IgJ2dlbicpKi9cbiAgYm9va0luZGV4OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogc2NyaXB0dXJlIGNhcmQgbnVtYmVyICgwIHRvIDIgZm9yIGV4YW1wbGUpICovXG4gIGNhcmROdW06IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgLyoqIENTUyBjbGFzc2VzICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBpZiB0cnVlIHRoZW4gd29yZCBkYXRhIGhvdmVyIGlzIHNob3duICovXG4gIGRpc2FibGVXb3JkUG9wb3ZlcjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKiBnZXQgbGFuZ3VhZ2UgZGV0YWlscyAqL1xuICBnZXRMYW5ndWFnZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgLyoqIGZ1bmN0aW9uIHRvIGdldCBsYXRlc3QgbGV4aWNvbiBkYXRhICovXG4gIGdldExleGljb25EYXRhOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIG9wdGlvbmFsIHVybCBmb3IgZ3JlZWsgcmVwbyAqL1xuICBncmVla1JlcG9Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBvcHRpb25hbCB1cmwgZm9yIGhlYnJldyByZXBvICovXG4gIGhlYnJld1JlcG9Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBvcHRpb25hbCBodHRwIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciBmZXRjaGluZyByZXNvdXJjZXMsIGRlZmF1bHQgaXMgMCAodmVyeSBsb25nIHdhaXQpICovXG4gIGh0dHBDb25maWc6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBodG1sIGlkZW50aWZpZXIgdG8gdXNlIGZvciBjYXJkICovXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogbWV0aG9kIHRvIGRldGVybWluZSBpZiBOVCBvciBPVCAqL1xuICBpc05UOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAvKiogdXNlci1uYW1lICovXG4gIGxvZ2dlZEluVXNlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIGZ1bmN0aW9uIHRvIG1pbmltaXplIHRoZSBjYXJkIChvcHRpb25hbCkgKi9cbiAgb25NaW5pbWl6ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBvcHRpb25hbCBjYWxsYmFjayBpZiBlcnJvciBsb2FkaW5nIHJlc291cmNlLCBwYXJhbWV0ZXIgcmV0dXJuZWQgYXJlOlxuICAgKiAgICAoe3N0cmluZ30gZXJyb3JNZXNzYWdlLCB7Ym9vbGVhbn0gaXNBY2Nlc3NFcnJvciwge29iamVjdH0gcmVzb3VyY2VTdGF0dXMpXG4gICAqICAgICAgLSBpc0FjY2Vzc0Vycm9yIC0gaXMgdHJ1ZSBpZiB0aGlzIHdhcyBhbiBlcnJvciB0cnlpbmcgdG8gYWNjZXNzIGZpbGVcbiAgICogICAgICAtIHJlc291cmNlU3RhdHVzIC0gaXMgb2JqZWN0IGNvbnRhaW5pbmcgZGV0YWlscyBhYm91dCBwcm9ibGVtcyBmZXRjaGluZyByZXNvdXJjZSAqL1xuICBvblJlc291cmNlRXJyb3I6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogdGhlIG9yaWdpbmFsIHNjcmlwdHVyZSBib29rT2JqZWN0cyBmb3IgY3VycmVudCBib29rICovXG4gIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM6IFByb3BUeXBlcy5vYmplY3QsXG4gIHJlZmVyZW5jZTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAvKiogcHJvamVjdElkIChib29rSUQpIHRvIHVzZSAqL1xuICAgIHByb2plY3RJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiBjdXJyZW50IGNoYXB0ZXIgbnVtYmVyICovXG4gICAgY2hhcHRlcjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLmlzUmVxdWlyZWQsXG4gICAgLyoqIGN1cnJlbnQgdmVyc2UgbnVtYmVyICovXG4gICAgdmVyc2U6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKS5pc1JlcXVpcmVkLFxuICB9KSxcbiAgLyoqIHJlc291cmNlIG9iamVjdCAqL1xuICByZXNvdXJjZTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAvKiogcmVzb3VyY2UgbGFuZ3VhZ2UgdG8gdXNlICovXG4gICAgbGFuZ3VhZ2VJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiByZXBvIG93bmVyIHN1Y2ggYXMgdW5mb2xkaW5nV29yZCAqL1xuICAgIG93bmVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIHJlc291cmNlSWQgdG8gdXNlIChlLmcuIHVnbnQpICovXG4gICAgcmVzb3VyY2VJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiByZXBvIG93bmVyIGZvciBvcmlnaW5hbCBsYW5ndWFnZXMgc3VjaCBhcyB1bmZvbGRpbmdXb3JkICovXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIH0pLFxuICAvKiogcmVzb3VyY2VMaW5rICovXG4gIHJlc291cmNlTGluazogUHJvcFR5cGVzLmFueSxcbiAgLyoqVGhpcyBpcyBjdXJyZW50bHkgc2VsZWN0ZWQgcXVvdGUgKi9cbiAgc2VsZWN0ZWRRdW90ZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIHNlcnZlciAoZS5nLiAnaHR0cHM6Ly9naXQuZG9vcjQzLm9yZycpICovXG4gIHNlcnZlcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogY2FsbGJhY2sgdG8gdXBkYXRlIGxvYWRpbmcgc3RhdGUgKi9cbiAgc2V0QXJlUmVzb3VyY2VzTG9hZGluZzogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byB1cGRhdGUgc2F2aW5nIHN0YXRlKi9cbiAgc2V0QXJlUmVzb3VyY2VzU2F2aW5nOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHJlcG9ydCBjYXJkIG1lcmdlIHN0YXR1cyAqL1xuICBzZXRDYXJkc0xvYWRpbmdNZXJnZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byByZXBvcnQgY2FyZCB1cGRhdGUgc3RhdHVzICovXG4gIHNldENhcmRzTG9hZGluZ1VwZGF0ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byByZXBvcnQgY2FyZCBzYXZpbmcgc3RhdHVzICovXG4gIHNldENhcmRzU2F2aW5nOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGZ1bmN0aW9uIHRvIHNldCBzdGF0ZSBpbiBhcHAgdGhhdCB0aGVyZSBhcmUgdW5zYXZlZCBjaGFuZ2VzICovXG4gIHNldFNhdmVkQ2hhbmdlczogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byB1cGRhdGUgd29yZCBhbGlnbmVyIHN0YXRlICovXG4gIHNldFdvcmRBbGlnbmVyU3RhdHVzOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIHRpdGxlIGZvciBzY3JpcHR1cmUgY2FyZCAqL1xuICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogb3B0aW9uYWwgZnVuY3Rpb24gZm9yIGxvY2FsaXphdGlvbiAqL1xuICB0cmFuc2xhdGU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogY2FsbGJhY2sgdG8gdXBkYXRlIHRoZSBjYXJkJ3MgbWVyZ2Ugc3RhdGUgaW4gYXBwICovXG4gIHVwZGF0ZU1lcmdlU3RhdGU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogdXNlIG1ldGhvZCBmb3IgdXNpbmcgbG9jYWwgc3RvcmFnZSBzcGVjaWZpYyBmb3IgdXNlciAqL1xuICB1c2VVc2VyTG9jYWxTdG9yYWdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxufVxuIl19
1567
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NjcmlwdHVyZUNhcmQvU2NyaXB0dXJlQ2FyZC50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJQcm9wVHlwZXMiLCJjb3JlIiwiU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciIsInVzZm1qcyIsInVzZUVkaXQiLCJJY29uQnV0dG9uIiwiUnhMaW5rMiIsIlJ4TGlua0JyZWFrMiIsIkNhcmQiLCJFcnJvckRpYWxvZyIsIkVSUk9SX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsIlVwZGF0ZUJyYW5jaEJ1dHRvbiIsInVzZUJyYW5jaE1lcmdlciIsInVzZUNhcmRTdGF0ZSIsInVzZUNvbnRlbnRVcGRhdGVQcm9wcyIsInVzZU1hc3Rlck1lcmdlUHJvcHMiLCJ1c2VVc2VyQnJhbmNoIiwiZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIiwiQWxpZ25tZW50SGVscGVycyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJpc0VxdWFsIiwiZ2V0VmVyc2VzIiwiU2NyaXB0dXJlUGFuZSIsIlNjcmlwdHVyZVNlbGVjdG9yIiwidXNlU2NyaXB0dXJlU2V0dGluZ3MiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwiZml4T2NjdXJyZW5jZSIsImdldFJlc291cmNlTGluayIsImdldFJlc291cmNlTWVzc2FnZSIsImdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyIsImlzT3JpZ2luYWxCaWJsZSIsImRlbGF5IiwiYXJlTWFwc1RoZVNhbWUiLCJUaXRsZSIsIk5UX09SSUdfTEFORyIsIk9SSUdJTkFMX1NPVVJDRSIsIk9UX09SSUdfTEFORyIsIlZlcnNlU2VsZWN0b3JQb3B1cCIsIktFWV9GT05UX1NJWkVfQkFTRSIsImxhYmVsIiwic3R5bGUiLCJtYXJnaW5Ub3AiLCJ3aWR0aCIsImNvbXBhcmVPYmplY3QiLCJ2ZXJzZVJlZiIsImNoYXB0ZXIiLCJ2ZXJzZSIsInZlcnNlRGF0YSIsInZlcnNlT2JqZWN0cyIsImxlbmd0aCIsIkpTT04iLCJzdHJpbmdpZnkiLCJhcmVWZXJzZXNTYW1lIiwidmVyc2VzRm9yUmVmMSIsInZlcnNlc0ZvclJlZjIiLCJhcmVTYW1lIiwiaSIsImwiLCJ2ZXJzZTEiLCJ2ZXJzZTIiLCJnZXRDdXJyZW50Qm9vayIsInNjcmlwdHVyZUNvbmZpZyIsImJvb2tJZCIsImxhdGVzdEJpYmxlIiwiYm9va09iamVjdHMiLCJmaWxlbmFtZSIsIm5hbWUiLCJyZWdleCIsImlzQm9va1ZhbGlkIiwiYm9va05hbWUiLCJtYXRjaCIsInRvTG93ZXJDYXNlIiwiaW5jbHVkZXMiLCJiaWJsZVVzZm0iLCJjb25zb2xlIiwiZXJyb3IiLCJTY3JpcHR1cmVDYXJkIiwiYXBwUmVmIiwiYXV0aGVudGljYXRpb24iLCJib29rSW5kZXgiLCJjYXJkTnVtIiwiY2xhc3NlcyIsImRpc2FibGVXb3JkUG9wb3ZlciIsImdldExhbmd1YWdlIiwiZ2V0TGV4aWNvbkRhdGEiLCJncmVla1JlcG9VcmwiLCJoZWJyZXdSZXBvVXJsIiwiaHR0cENvbmZpZyIsImlkIiwiaXNOVCIsImxvZ2dlZEluVXNlciIsIm9uTWluaW1pemUiLCJvblJlc291cmNlRXJyb3IiLCJvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzIiwicmVmZXJlbmNlIiwicmVzb3VyY2UiLCJvd25lciIsImxhbmd1YWdlSWQiLCJyZXNvdXJjZUlkIiwib3JpZ2luYWxMYW5ndWFnZU93bmVyIiwicmVzb3VyY2VMaW5rIiwic2VsZWN0ZWRRdW90ZSIsInNlcnZlciIsInNldENhcmRzTG9hZGluZ01lcmdlIiwic2V0Q2FyZHNMb2FkaW5nVXBkYXRlIiwic2V0Q2FyZHNTYXZpbmciLCJzZXRTYXZlZENoYW5nZXMiLCJzZXRXb3JkQWxpZ25lclN0YXR1cyIsInRyYW5zbGF0ZSIsInRpdGxlIiwidXNlVXNlckxvY2FsU3RvcmFnZSIsInVwZGF0ZU1lcmdlU3RhdGUiLCJwcm9qZWN0SWQiLCJ1c2VTdGF0ZSIsImNoZWNrRm9yRWRpdEJyYW5jaCIsImN1cnJlbnRSZWZlcmVuY2UiLCJlZGl0QnJhbmNoUmVhZHkiLCJoYXZlVW5zYXZlZENoYW5nZXMiLCJsYXN0U2VsZWN0ZWRRdW90ZSIsInJlYWR5Rm9yRmV0Y2giLCJyZWYiLCJzYXZlQ2xpY2tlZCIsInNhdmVDb250ZW50Iiwic2VsZWN0aW9ucyIsIk1hcCIsInNoYSIsInNob3dBbGlnbm1lbnRQb3B1cCIsInN0YXJ0U2F2ZSIsInVybEVycm9yIiwidXNpbmdVc2VyQnJhbmNoIiwidW5zYXZlZENoYW5nZXNMaXN0IiwidmVyc2VzQWxpZ25tZW50U3RhdHVzIiwidmVyc2VzRm9yUmVmIiwidmVyc2VPYmplY3RzTWFwIiwidmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCIsInN0YXRlIiwic2V0U3RhdGVfIiwiZm9udFNpemUiLCJzZXRGb250U2l6ZSIsImlzTlRfIiwic2V0U3RhdGUiLCJuZXdTdGF0ZSIsInByZXZTdGF0ZSIsImNhY2hlIiwibWF4QWdlIiwibm9DYWNoZSIsInNldFVybEVycm9yIiwid2hvbGVCb29rIiwiaXNOZXdUZXN0YW1lbnQiLCJzZXRTY3JpcHR1cmUiLCJzY3JpcHR1cmVTZXR0aW5ncyIsInNjcmlwdHVyZVZlcnNpb25IaXN0IiwiZmV0Y2hSZXNwXyIsImZldGNoUmVzcG9uc2UiLCJyZXBvIiwicmVmZXJlbmNlXyIsInVzZUVmZmVjdCIsIl9zaGEiLCJkYXRhIiwidXJsIiwiZG93bmxvYWRfdXJsIiwidmFsaWRCcmFuY2giLCJwYXJ0cyIsInNwbGl0IiwiZmV0Y2hCcmFuY2giLCJsb2ciLCJjYXJkUmVzb3VyY2VJZCIsInJlZl8iLCJjYW5Vc2VFZGl0QnJhbmNoIiwiY2FyZElkIiwiYnJhbmNoRGV0ZXJtaW5lZCIsInVzZXJFZGl0QnJhbmNoTmFtZSIsIl91c2luZ1VzZXJCcmFuY2giLCJ3b3JraW5nUmVzb3VyY2VCcmFuY2giLCJhY3Rpb25zIiwic3RhcnRFZGl0QnJhbmNoIiwic3RhcnRFZGl0IiwiZmluaXNoRWRpdCIsIl91c2VCcmFuY2hNZXJnZXIiLCJ1c2VyQnJhbmNoIiwidG9rZW5pZCIsInRva2VuIiwic2hhMSIsIm1lcmdlVG9NYXN0ZXIiLCJtZXJnZVN0YXR1cyIsIm1lcmdlRnJvbU1hc3RlciIsInVwZGF0ZVN0YXR1cyIsInVwZGF0ZUJ1dHRvblByb3BzIiwiaXNTYXZpbmciLCJvblVwZGF0ZSIsInRoZW4iLCJyZWxvYWRSZXNvdXJjZSIsImNhbGxVcGRhdGVVc2VyQnJhbmNoIiwiaXNFcnJvckRpYWxvZ09wZW4iLCJvbkNsb3NlRXJyb3JEaWFsb2ciLCJpc1VwZGF0ZUxvYWRpbmciLCJpc0xvYWRpbmciLCJkaWFsb2dNZXNzYWdlIiwiZGlhbG9nVGl0bGUiLCJkaWFsb2dMaW5rIiwiZGlhbG9nTGlua1Rvb2x0aXAiLCJvbk1lcmdlIiwiaXNNZXJnZUxvYWRpbmciLCJjYWxsTWVyZ2VVc2VyQnJhbmNoIiwicHJldkNhcmRzTG9hZGluZyIsImZpbHRlciIsIndvcmtpbmdSZWYiLCJzY3JpcHR1cmVUaXRsZSIsInJlc291cmNlU3RhdHVzIiwibWVzc2FnZSIsImlzQWNjZXNzRXJyb3IiLCJ2ZXJzaW9uIiwidXBkYXRlVGl0bGUiLCJnZXRTY3JpcHR1cmVTZWxlY3RvciIsInNjcmlwdHVyZVNlbGVjdGlvbkNvbmZpZyIsIm9uTWVudUNsb3NlIiwibGFuZ3VhZ2VJZF8iLCJsYW5ndWFnZSIsImRpcmVjdGlvbiIsIl9yZWZlcmVuY2UiLCJpc0hlYnJldyIsImZvbnRGYWN0b3IiLCJzY2FsZWRGb250U2l6ZSIsIml0ZW1zIiwiaGVhZGVycyIsImZpbHRlcnMiLCJpdGVtSW5kZXgiLCJtYXJrZG93blZpZXciLCJzZXRGaWx0ZXJzIiwic2V0SXRlbUluZGV4Iiwic2V0TWFya2Rvd25WaWV3IiwicmVmU3R5bGUiLCJ1c2VNZW1vIiwiZm9udEZhbWlseSIsIk1hdGgiLCJyb3VuZCIsImNvbnRlbnRTdHlsZSIsInNjcmlwdHVyZUxhYmVsIiwiZGlzYWJsZVdvcmRQb3BvdmVyXyIsInVzaW5nT3JpZ2luYWxCaWJsZSIsInVuZGVmaW5lZCIsImVuYWJsZUVkaXQiLCJlbmFibGVBbGlnbm1lbnQiLCJvcmlnaW5hbFJlcG9VcmwiLCJzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnIiwiY3VycmVudFZlcnNlUmVmIiwiX3NldFNhdmVkQ2hhbmdlcyIsInNvdXJjZUxhbmd1YWdlIiwidGFyZ2V0TGFuZ3VhZ2UiLCJjdXJyZW50SW5kZXgiLCJzYXZlZCIsImdldENoYW5nZXMiLCJjbGVhckNoYW5nZXMiLCJfdW5zYXZlZENoYW5nZXNMaXN0IiwiaGFzT3duUHJvcGVydHkiLCJfaGF2ZVVuc2F2ZWRDaGFuZ2VzIiwiT2JqZWN0Iiwia2V5cyIsImZpbmRSZWZJbkFycmF5IiwiZmluZEl0ZW0iLCJjaHVua3MiLCJyZWZMZW4iLCJpbmRleCIsImZpbmRJbmRleCIsImNodW5rIiwiaWR4Iiwic3Vic3RyaW5nIiwibmV4dENoYXIiLCJnZXRCb29rTmFtZSIsImJvb2tDYXBzIiwidG9VcHBlckNhc2UiLCJmaWxlcGF0aCIsImNvbnRlbnQiLCJjb25maWciLCJkb250Q3JlYXRlQnJhbmNoIiwidGltZW91dCIsInNlcnZlclRpbWVPdXQiLCJhdXRob3IiLCJicmFuY2giLCJzYXZlRXJyb3IiLCJpc1NhdmVFcnJvciIsImlzRXJyb3IiLCJvblNhdmVFZGl0IiwiX3NhdmVFZGl0IiwiaW5mbyIsInN1Y2Nlc3MiLCJwcmV2Q2FyZHNTYXZpbmciLCJ1bnNhdmVkQ2FyZEluZGljZXMiLCJjYXJkSW5kZXgiLCJtZXJnZVZlcnNlT2JqZWN0c0ludG9CaWJsZVVzZm0iLCJ1cGRhdGVkVmVyc2VPYmplY3RzIiwibmV3VXNmbSIsImNoYXB0ZXJDaHVua3MiLCJjaGFwdGVySW5kZXgiLCJjdXJyZW50Q2hhcHRlciIsInZlcnNlQ2h1bmtzIiwidmVyc2VJbmRleCIsIm5ld1ZlcnNlVXNmbSIsImNvbnZlcnRWZXJzZURhdGFUb1VTRk0iLCJvbGRWZXJzZSIsInZlcnNlTnVtTGVuIiwibmV3Q2hhcHRlciIsImpvaW4iLCJnZXRSZWFkeUZvclNhdmUiLCJjcmVhdGVFZGl0QnJhbmNoIiwid2FybiIsIm1lcmdlRmFpbCIsInBhcnNlSW50IiwibmV3VmVyc2VUZXh0IiwidGFyZ2V0VmVyc2VPYmplY3RzXyIsInVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlIiwidGFyZ2V0VmVyc2VPYmplY3RzIiwibmV3Qm9va0pzb24iLCJ1cGRhdGVWZXJzZSIsInRvVVNGTSIsImZvcmNlZE5ld0xpbmVzIiwiX3ZlcnNlc0ZvclJlZiIsIm5ld1NlbGVjdGlvbnMiLCJ1cGRhdGVTZWxlY3Rpb25zIiwiX21hcCIsIm9yaWdpbmFsQm9va0lkIiwiYm9va1ZlcnNlT2JqZWN0IiwiY2hhcHRlcnMiLCJuZXdTZWxlY3RlZFF1b3RlIiwicXVvdGUiLCJvcmlnaW5hbFZlcnNlcyIsInN1YnN0aXR1dGUiLCJzdGFydFZlcnNlIiwibGFzdFZlcnNlIiwiX3ZlcnNlIiwidmVyc2VzIiwidmVyc2VJdGVtIiwidm8iLCJjb25jYXQiLCJzZXQiLCJzdWJSZWYiLCJxdW90ZU1hdGNoZXMiLCJib29rT2JqZWN0Iiwib2NjdXJyZW5jZSIsInNpemUiLCJmb3JFYWNoIiwid29yZHMiLCJrZXkiLCJfa2V5IiwibWFwIiwid29yZCIsInRleHQiLCJub3JtYWxpemVTdHJpbmciLCJib29rc05vdFNhbWUiLCJ1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXMiLCJhbGlnbmVkIiwicmVuZGVyZWRTY3JpcHR1cmVQYW5lcyIsIl9jdXJyZW50VmVyc2VEYXRhIiwiaW5pdGlhbFZlcnNlT2JqZWN0cyIsIl9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnIiwiaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50IiwiaGFuZGxlQWxpZ25CdXR0b25DbGljayIsIm9uUmVuZGVyVG9vbGJhciIsIm5ld0l0ZW1zIiwiYWxsVmVyc2VzQWxpZ25lZCIsInZhbHVlcyIsImV2ZXJ5IiwiYWxpZ25TdGF0dXMiLCJhbGlnbkljb24iLCJhbGlnbkJ1dHRvblRleHQiLCJwdXNoIiwiY3Vyc29yIiwicHJvcFR5cGVzIiwic3RyaW5nIiwiaXNSZXF1aXJlZCIsIm9iamVjdCIsIm51bWJlciIsImJvb2wiLCJmdW5jIiwic2hhcGUiLCJvbmVPZlR5cGUiLCJhbnkiLCJzZXRBcmVSZXNvdXJjZXNMb2FkaW5nIiwic2V0QXJlUmVzb3VyY2VzU2F2aW5nIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBS0EsS0FBWixNQUF1QixPQUF2QjtBQUNBLE9BQU8sS0FBS0MsU0FBWixNQUEyQixZQUEzQjtBQUNBLFNBQVNDLElBQVQsRUFBZUMseUJBQWYsUUFBZ0QseUJBQWhEO0FBQ0EsT0FBT0MsTUFBUCxNQUFtQixTQUFuQjtBQUNBLFNBQVNDLE9BQVQsUUFBd0IscUJBQXhCO0FBQ0EsU0FBU0MsVUFBVCxRQUEyQixlQUEzQjtBQUNBLFNBQVNDLE9BQVQsRUFBa0JDLFlBQWxCLFFBQXNDLGdCQUF0QztBQUNBLFNBQ0VDLElBREYsRUFFRUMsV0FGRixFQUdFQyxXQUhGLEVBSUVDLHlCQUpGLEVBS0VDLGtCQUxGLEVBTUVDLGVBTkYsRUFPRUMsWUFQRixFQVFFQyxxQkFSRixFQVNFQyxtQkFURixFQVVFQyxhQVZGLFFBV08sdUJBWFAsQyxDQVlBOztBQUNBLFNBQVNDLHdCQUFULFFBQXlDLGtCQUF6QztBQUNBLFNBQVNDLGdCQUFULEVBQTJCQyx5QkFBM0IsUUFBNEQsa0JBQTVEO0FBQ0EsT0FBTyxLQUFLQyxPQUFaLE1BQXlCLFlBQXpCO0FBQ0EsU0FBU0MsU0FBVCxRQUEwQix1QkFBMUI7QUFDQSxTQUFTQyxhQUFULEVBQXdCQyxpQkFBeEIsUUFBaUQsSUFBakQ7QUFDQSxTQUFTQyxvQkFBVCxRQUFxQyxrQ0FBckM7QUFDQSxTQUNFQyxtQkFERixFQUVFQyxhQUZGLEVBR0VDLGVBSEYsRUFJRUMsa0JBSkYsRUFLRUMsMkJBTEYsRUFNRUMsZUFORixRQU9PLCtCQVBQO0FBUUEsU0FBU0MsS0FBVCxRQUFzQixtQkFBdEI7QUFDQSxTQUFTQyxjQUFULFFBQStCLGtCQUEvQjtBQUNBLFNBQVNDLEtBQVQsUUFBc0IseUJBQXRC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QUFDc1gsSUF4RUY7O0FBeUV4QjtBQUNBM1EsRUFBQUEsZUFBZSxFQUFFM0csU0FBUyxDQUFDc1gsSUExRUg7O0FBMkV4QjtBQUNBMVEsRUFBQUEsb0JBQW9CLEVBQUU1RyxTQUFTLENBQUNzWCxJQTVFUjs7QUE2RXhCO0FBQ0F4USxFQUFBQSxLQUFLLEVBQUU5RyxTQUFTLENBQUNpWCxNQUFWLENBQWlCQyxVQTlFQTs7QUErRXhCO0FBQ0FyUSxFQUFBQSxTQUFTLEVBQUU3RyxTQUFTLENBQUNzWCxJQWhGRzs7QUFpRnhCO0FBQ0F0USxFQUFBQSxnQkFBZ0IsRUFBRWhILFNBQVMsQ0FBQ3NYLElBbEZKOztBQW1GeEI7QUFDQXZRLEVBQUFBLG1CQUFtQixFQUFFL0csU0FBUyxDQUFDc1gsSUFBVixDQUFlSjtBQXBGWixDQUExQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgeyBjb3JlLCBTZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyIH0gZnJvbSAnc2NyaXB0dXJlLXJlc291cmNlcy1yY2wnXG5pbXBvcnQgdXNmbWpzIGZyb20gJ3VzZm0tanMnXG5pbXBvcnQgeyB1c2VFZGl0IH0gZnJvbSAnZ2l0ZWEtcmVhY3QtdG9vbGtpdCdcbmltcG9ydCB7IEljb25CdXR0b24gfSBmcm9tICdAbXVpL21hdGVyaWFsJ1xuaW1wb3J0IHsgUnhMaW5rMiwgUnhMaW5rQnJlYWsyIH0gZnJvbSAncmVhY3QtaWNvbnMvcngnXG5pbXBvcnQge1xuICBDYXJkLFxuICBFcnJvckRpYWxvZyxcbiAgRVJST1JfU1RBVEUsXG4gIE1BTklGRVNUX05PVF9MT0FERURfRVJST1IsXG4gIFVwZGF0ZUJyYW5jaEJ1dHRvbixcbiAgdXNlQnJhbmNoTWVyZ2VyLFxuICB1c2VDYXJkU3RhdGUsXG4gIHVzZUNvbnRlbnRVcGRhdGVQcm9wcyxcbiAgdXNlTWFzdGVyTWVyZ2VQcm9wcyxcbiAgdXNlVXNlckJyYW5jaCxcbn0gZnJvbSAndHJhbnNsYXRpb24taGVscHMtcmNsJ1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIH0gZnJvbSAndXctcXVvdGUtaGVscGVycydcbmltcG9ydCB7IEFsaWdubWVudEhlbHBlcnMsIFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMgfSBmcm9tICd3b3JkLWFsaWduZXItcmNsJ1xuaW1wb3J0ICogYXMgaXNFcXVhbCBmcm9tICdkZWVwLWVxdWFsJ1xuaW1wb3J0IHsgZ2V0VmVyc2VzIH0gZnJvbSAnYmlibGUtcmVmZXJlbmNlLXJhbmdlJ1xuaW1wb3J0IHsgU2NyaXB0dXJlUGFuZSwgU2NyaXB0dXJlU2VsZWN0b3IgfSBmcm9tICcuLidcbmltcG9ydCB7IHVzZVNjcmlwdHVyZVNldHRpbmdzIH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlU2NyaXB0dXJlU2V0dGluZ3MnXG5pbXBvcnQge1xuICBjbGVhbnVwVmVyc2VPYmplY3RzLFxuICBmaXhPY2N1cnJlbmNlLFxuICBnZXRSZXNvdXJjZUxpbmssXG4gIGdldFJlc291cmNlTWVzc2FnZSxcbiAgZ2V0U2NyaXB0dXJlVmVyc2lvblNldHRpbmdzLFxuICBpc09yaWdpbmFsQmlibGUsXG59IGZyb20gJy4uLy4uL3V0aWxzL1NjcmlwdHVyZVNldHRpbmdzJ1xuaW1wb3J0IHsgZGVsYXkgfSBmcm9tICcuLi8uLi91dGlscy9kZWxheSdcbmltcG9ydCB7IGFyZU1hcHNUaGVTYW1lIH0gZnJvbSAnLi4vLi4vdXRpbHMvbWFwcydcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSAnLi4vU2NyaXB0dXJlUGFuZS9zdHlsZWQnXG5pbXBvcnQge1xuICBOVF9PUklHX0xBTkcsXG4gIE9SSUdJTkFMX1NPVVJDRSxcbiAgT1RfT1JJR19MQU5HLFxufSBmcm9tICcuLi8uLi91dGlscydcbmltcG9ydCB7IFZlcnNlU2VsZWN0b3JQb3B1cCB9IGZyb20gJy4uL1ZlcnNlU2VsZWN0b3JQb3B1cCdcblxuY29uc3QgS0VZX0ZPTlRfU0laRV9CQVNFID0gJ3NjcmlwdHVyZVBhbmVGb250U2l6ZV8nXG5jb25zdCBsYWJlbCA9ICdWZXJzaW9uJ1xuY29uc3Qgc3R5bGUgPSB7IG1hcmdpblRvcDogJzE2cHgnLCB3aWR0aDogJzUwMHB4JyB9XG5cbi8qKlxuICogY3JlYXRlIGEgc2hvcnQgY29tcGFyaXNvbiB2ZXJzZSByZWYgb2JqZWN0IHdpdGhvdXQgYWxsIHRoZSB2ZXJzZURhdGFcbiAqIEBwYXJhbSB2ZXJzZVJlZlxuICovXG5mdW5jdGlvbiBjb21wYXJlT2JqZWN0KHZlcnNlUmVmKSB7XG4gIGNvbnN0IHtcbiAgICBjaGFwdGVyLFxuICAgIHZlcnNlLFxuICAgIHZlcnNlRGF0YSxcbiAgfSA9IHZlcnNlUmVmIHx8IHt9XG4gIGNvbnN0IHZlcnNlT2JqZWN0cyA9IHZlcnNlRGF0YT8udmVyc2VPYmplY3RzPy5sZW5ndGggPyBKU09OLnN0cmluZ2lmeSh2ZXJzZURhdGEudmVyc2VPYmplY3RzKSA6ICcnXG4gIHJldHVybiB7XG4gICAgY2hhcHRlcixcbiAgICB2ZXJzZSxcbiAgICB2ZXJzZU9iamVjdHMsXG4gIH1cbn1cblxuLyoqXG4gKiBjb21wYXJlIHR3byB2ZXJzZSByZWZzIHRvIHNlZSBpZiB0aGV5IGFyZSBzdWJzdGFudGlhbGx5IHNpbWlsYXJcbiAqIEBwYXJhbSB2ZXJzZXNGb3JSZWYxXG4gKiBAcGFyYW0gdmVyc2VzRm9yUmVmMlxuICovXG5mdW5jdGlvbiBhcmVWZXJzZXNTYW1lKHZlcnNlc0ZvclJlZjE6IGFueVtdLCB2ZXJzZXNGb3JSZWYyOiBhbnlbXSkge1xuICB2ZXJzZXNGb3JSZWYxID0gdmVyc2VzRm9yUmVmMSB8fCBbXVxuICB2ZXJzZXNGb3JSZWYyID0gdmVyc2VzRm9yUmVmMiB8fCBbXVxuICBsZXQgYXJlU2FtZSA9IGZhbHNlXG5cbiAgaWYgKHZlcnNlc0ZvclJlZjEubGVuZ3RoID09PSB2ZXJzZXNGb3JSZWYyLmxlbmd0aCkge1xuICAgIGFyZVNhbWUgPSB0cnVlXG5cbiAgICBmb3IgKGxldCBpID0gMCwgbD0gdmVyc2VzRm9yUmVmMS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGNvbnN0IHZlcnNlMSA9IGNvbXBhcmVPYmplY3QodmVyc2VzRm9yUmVmMVtpXSlcbiAgICAgIGNvbnN0IHZlcnNlMiA9IGNvbXBhcmVPYmplY3QodmVyc2VzRm9yUmVmMltpXSlcbiAgICAgIGFyZVNhbWUgPSBpc0VxdWFsKHZlcnNlMSwgdmVyc2UyKVxuXG4gICAgICBpZiAoIWFyZVNhbWUpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gYXJlU2FtZVxufVxuXG5leHBvcnQgY29uc3QgZ2V0Q3VycmVudEJvb2sgPSAoc2NyaXB0dXJlQ29uZmlnLCBib29rSWQpID0+IHtcbiAgY29uc3QgbGF0ZXN0QmlibGUgPSBzY3JpcHR1cmVDb25maWc/LmJvb2tPYmplY3RzXG4gIGNvbnN0IGZpbGVuYW1lID0gbGF0ZXN0QmlibGU/Lm5hbWUgLy8gTGlrZSBcIjU3LVRJVC51c2ZtXCJcbiAgY29uc3QgcmVnZXggPSAvXiguKj8pXFwudXNmbS87XG4gIGxldCBpc0Jvb2tWYWxpZCA9IGZhbHNlXG4gIGlmIChmaWxlbmFtZSkge1xuICAgIGNvbnN0IGJvb2tOYW1lID0gZmlsZW5hbWUubWF0Y2gocmVnZXgpPy5bMV0/LnRvTG93ZXJDYXNlKClcbiAgICBpc0Jvb2tWYWxpZCA9IGJvb2tOYW1lPy5pbmNsdWRlcyhib29rSWQpXG4gIH1cbiAgaWYgKGlzQm9va1ZhbGlkKSB7XG4gICAgcmV0dXJuIHNjcmlwdHVyZUNvbmZpZz8uYmlibGVVc2ZtXG4gIH1cbiAgY29uc29sZS5lcnJvcihgRXhwZWN0ZWQgJHtib29rSWR9IGJ1dCBnb3QgJHtmaWxlbmFtZX1gKVxuICByZXR1cm4gbnVsbFxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTY3JpcHR1cmVDYXJkKHtcbiAgYXBwUmVmLFxuICBhdXRoZW50aWNhdGlvbixcbiAgYm9va0luZGV4LFxuICBjYXJkTnVtLFxuICBjbGFzc2VzLFxuICBkaXNhYmxlV29yZFBvcG92ZXIsXG4gIGdldExhbmd1YWdlLFxuICBnZXRMZXhpY29uRGF0YSxcbiAgZ3JlZWtSZXBvVXJsLFxuICBoZWJyZXdSZXBvVXJsLFxuICBodHRwQ29uZmlnLFxuICBpZCxcbiAgaXNOVCxcbiAgbG9nZ2VkSW5Vc2VyLFxuICBvbk1pbmltaXplLFxuICBvblJlc291cmNlRXJyb3IsXG4gIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMsXG4gIHJlZmVyZW5jZSxcbiAgcmVzb3VyY2U6IHtcbiAgICBvd25lcixcbiAgICBsYW5ndWFnZUlkLFxuICAgIHJlc291cmNlSWQsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICB9LFxuICByZXNvdXJjZUxpbmssXG4gIHNlbGVjdGVkUXVvdGUsXG4gIHNlcnZlcixcbiAgc2V0Q2FyZHNMb2FkaW5nTWVyZ2UsXG4gIHNldENhcmRzTG9hZGluZ1VwZGF0ZSxcbiAgc2V0Q2FyZHNTYXZpbmcsXG4gIHNldFNhdmVkQ2hhbmdlcyxcbiAgc2V0V29yZEFsaWduZXJTdGF0dXMsXG4gIHRyYW5zbGF0ZSxcbiAgdGl0bGUsXG4gIHVzZVVzZXJMb2NhbFN0b3JhZ2UsXG4gIHVwZGF0ZU1lcmdlU3RhdGUsXG59KSB7XG4gIGNvbnN0IGJvb2tJZCA9IHJlZmVyZW5jZT8ucHJvamVjdElkXG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVfXSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICBjaGVja0ZvckVkaXRCcmFuY2g6IDAsXG4gICAgY3VycmVudFJlZmVyZW5jZTogbnVsbCxcbiAgICBlZGl0QnJhbmNoUmVhZHk6IGZhbHNlLFxuICAgIGhhdmVVbnNhdmVkQ2hhbmdlczogZmFsc2UsXG4gICAgbGFzdFNlbGVjdGVkUXVvdGU6IG51bGwsXG4gICAgcmVhZHlGb3JGZXRjaDogZmFsc2UsXG4gICAgcmVmOiBhcHBSZWYsXG4gICAgc2F2ZUNsaWNrZWQ6IGZhbHNlLFxuICAgIHNhdmVDb250ZW50OiBudWxsLFxuICAgIHNlbGVjdGlvbnM6IG5ldyBNYXAoKSxcbiAgICBzaGE6IG51bGwsXG4gICAgc2hvd0FsaWdubWVudFBvcHVwOiBmYWxzZSxcbiAgICBzdGFydFNhdmU6IGZhbHNlLFxuICAgIHVybEVycm9yOiBudWxsLFxuICAgIHVzaW5nVXNlckJyYW5jaDogZmFsc2UsXG4gICAgdW5zYXZlZENoYW5nZXNMaXN0OiB7fSxcbiAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXM6IG51bGwsXG4gICAgdmVyc2VzRm9yUmVmOiBudWxsLFxuICAgIHZlcnNlT2JqZWN0c01hcDogbmV3IE1hcCgpLFxuICAgIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ6IG51bGwsXG4gIH0pXG4gIGNvbnN0IHtcbiAgICBjaGVja0ZvckVkaXRCcmFuY2gsXG4gICAgY3VycmVudFJlZmVyZW5jZSxcbiAgICBlZGl0QnJhbmNoUmVhZHksXG4gICAgaGF2ZVVuc2F2ZWRDaGFuZ2VzLFxuICAgIGxhc3RTZWxlY3RlZFF1b3RlLFxuICAgIHJlYWR5Rm9yRmV0Y2gsXG4gICAgcmVmLFxuICAgIHNhdmVDbGlja2VkLFxuICAgIHNhdmVDb250ZW50LFxuICAgIHNlbGVjdGlvbnMsXG4gICAgc2hhLFxuICAgIHNob3dBbGlnbm1lbnRQb3B1cCxcbiAgICBzdGFydFNhdmUsXG4gICAgdXJsRXJyb3IsXG4gICAgdXNpbmdVc2VyQnJhbmNoLFxuICAgIHVuc2F2ZWRDaGFuZ2VzTGlzdCxcbiAgICB2ZXJzZU9iamVjdHNNYXAsXG4gICAgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCxcbiAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXMsXG4gICAgdmVyc2VzRm9yUmVmLFxuICB9ID0gc3RhdGVcblxuICBjb25zdCBbZm9udFNpemUsIHNldEZvbnRTaXplXSA9IHVzZVVzZXJMb2NhbFN0b3JhZ2UoS0VZX0ZPTlRfU0laRV9CQVNFICsgY2FyZE51bSwgMTAwKVxuICBjb25zdCBpc05UXyA9IGlzTlQoYm9va0lkKVxuXG4gIGZ1bmN0aW9uIHNldFN0YXRlKG5ld1N0YXRlKSB7XG4gICAgc2V0U3RhdGVfKHByZXZTdGF0ZSA9PiAoeyAuLi5wcmV2U3RhdGUsIC4uLm5ld1N0YXRlIH0pKVxuICB9XG5cbiAgaHR0cENvbmZpZyA9IHtcbiAgICAuLi5odHRwQ29uZmlnLFxuICAgIGNhY2hlOiB7IG1heEFnZTogMCB9LFxuICAgIG5vQ2FjaGU6IHRydWUsXG4gIH0gLy8gZGlzYWJsZSBodHRwIGNhY2hpbmdcblxuICBjb25zdCB7XG4gICAgaXNOZXdUZXN0YW1lbnQsXG4gICAgc2NyaXB0dXJlQ29uZmlnLFxuICAgIHNldFNjcmlwdHVyZSxcbiAgICBzY3JpcHR1cmVTZXR0aW5ncyxcbiAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdCxcbiAgfSA9IHVzZVNjcmlwdHVyZVNldHRpbmdzKHtcbiAgICBhcHBSZWY6IHJlZixcbiAgICBjYXJkTnVtLFxuICAgIGRpc2FibGVXb3JkUG9wb3ZlcixcbiAgICBncmVla1JlcG9VcmwsXG4gICAgaGVicmV3UmVwb1VybCxcbiAgICBodHRwQ29uZmlnLFxuICAgIGlzTlQsXG4gICAgbGFuZ3VhZ2VJZCxcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gICAgb3duZXIsXG4gICAgcmVhZHlGb3JGZXRjaCxcbiAgICByZWZlcmVuY2U6IGN1cnJlbnRSZWZlcmVuY2UgfHwgcmVmZXJlbmNlLFxuICAgIHJlc291cmNlSWQsXG4gICAgcmVzb3VyY2VMaW5rLFxuICAgIHNldFVybEVycm9yOiAoZXJyb3IpID0+IHNldFN0YXRlKHsgdXJsRXJyb3I6IGVycm9yIH0pLFxuICAgIHNlcnZlcixcbiAgICB0aXRsZSxcbiAgICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxuICAgIHdob2xlQm9vazogdHJ1ZSxcbiAgfSlcblxuICBjb25zdCBmZXRjaFJlc3BfID0gc2NyaXB0dXJlQ29uZmlnPy5mZXRjaFJlc3BvbnNlXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgcmVwbyA9IGAke3NjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/Lmxhbmd1YWdlSWR9XyR7c2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucHJvamVjdElkfWBcbiAgY29uc3QgcmVmZXJlbmNlXyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVmZXJlbmNlIHx8IG51bGxcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBnZXQgdGhlIF9zaGEgZnJvbSBsYXN0IHNjcmlwdHVyZSBkb3dubG9hZFxuICAgIGNvbnN0IF9zaGEgPSBmZXRjaFJlc3BfPy5kYXRhPy5zaGEgfHwgbnVsbFxuICAgIGNvbnN0IHVybCA9IGZldGNoUmVzcF8/LmRhdGE/LmRvd25sb2FkX3VybCB8fCBudWxsXG4gICAgbGV0IHZhbGlkQnJhbmNoID0gdHJ1ZVxuXG4gICAgaWYgKF9zaGEpIHsgLy8gVFJJQ0tZOiBzaW5jZSB0aGlzIGZldGNoIG1heSBiZSBkZWxheWVkIC0gbWFrZSBzdXJlIGl0IHdhcyBmb3IgdGhlIGN1cnJlbnQgYnJhbmNoIGJlZm9yZSB1c2luZyB0aGUgc2hhXG4gICAgICBjb25zdCBwYXJ0cyA9ICh1cmwgfHwgJycpLnNwbGl0KCcvJylcbiAgICAgIGNvbnN0IGZldGNoQnJhbmNoID0gcGFydHMubGVuZ3RoID4gNyA/IHBhcnRzWzddIDogJydcbiAgICAgIHZhbGlkQnJhbmNoID0gZmV0Y2hCcmFuY2ggPT09IHJlZlxuICAgIH1cblxuICAgIGlmICh2YWxpZEJyYW5jaCAmJiBfc2hhICE9PSBzaGEpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVDYXJkOiBmb3IgJHt1cmx9ICR7SlNPTi5zdHJpbmdpZnkocmVmZXJlbmNlXyl9IG5ldyBzaGEgaXMgJHtfc2hhfWApXG4gICAgICBzZXRTdGF0ZSh7IHNoYTogX3NoYSB9KVxuICAgIH1cbiAgfSwgW2ZldGNoUmVzcF9dKVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgY2FyZFJlc291cmNlSWQgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5wcm9qZWN0SWQgfHwgcmVzb3VyY2VJZFxuICAvLyBAdHMtaWdub3JlXG4gIGxldCByZWZfID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucmVmIHx8IGFwcFJlZlxuICBjb25zdCBjYW5Vc2VFZGl0QnJhbmNoID0gISEobG9nZ2VkSW5Vc2VyICYmIGF1dGhlbnRpY2F0aW9uICYmIChyZXNvdXJjZUlkICE9PSBPUklHSU5BTF9TT1VSQ0UpICYmIC8vIFRSSUNLWSBpZiBub3Qgb3JpZ2luYWwgbGFuZ3VhZ2UgYW5kIHdlIGhhdmUgbG9naW4gZGF0YSwgdGhlbiB3ZSBjYW4gdXNlIHRoZSBlZGl0IGJyYW5jaFxuICAgICgocmVmXyA9PT0gJ21hc3RlcicpIHx8IChyZWZfLmluY2x1ZGVzKGxvZ2dlZEluVXNlcikpKSkgLy8gYWxzbyBtYWtlIHN1cmUgbm90IGEgdmVyc2lvbiB0YWdcblxuICBjb25zdCB7XG4gICAgc3RhdGU6IHtcbiAgICAgIGJyYW5jaERldGVybWluZWQsXG4gICAgICB1c2VyRWRpdEJyYW5jaE5hbWUsXG4gICAgICB1c2luZ1VzZXJCcmFuY2g6IF91c2luZ1VzZXJCcmFuY2gsXG4gICAgICB3b3JraW5nUmVzb3VyY2VCcmFuY2gsXG4gICAgfSxcbiAgICBhY3Rpb25zOiB7XG4gICAgICBzdGFydEVkaXQ6IHN0YXJ0RWRpdEJyYW5jaCxcbiAgICAgIGZpbmlzaEVkaXQsXG4gICAgfSxcbiAgfSA9IHVzZVVzZXJCcmFuY2goe1xuICAgIGFwcFJlZixcbiAgICBhdXRoZW50aWNhdGlvbjogY2FuVXNlRWRpdEJyYW5jaCA/IGF1dGhlbnRpY2F0aW9uIDogbnVsbCxcbiAgICBib29rSWQsXG4gICAgY2FyZElkOiBpZCxcbiAgICBjYXJkUmVzb3VyY2VJZCxcbiAgICBjaGVja0ZvckVkaXRCcmFuY2gsXG4gICAgbGFuZ3VhZ2VJZCxcbiAgICBsb2dnZWRJblVzZXI6IGNhblVzZUVkaXRCcmFuY2ggPyBsb2dnZWRJblVzZXIgOiBudWxsLFxuICAgIG93bmVyLFxuICAgIG9uUmVzb3VyY2VFcnJvcixcbiAgICBzZXJ2ZXIsXG4gICAgdXNlVXNlckxvY2FsU3RvcmFnZSxcbiAgfSlcblxuICBjb25zdCBfdXNlQnJhbmNoTWVyZ2VyID0gdXNlQnJhbmNoTWVyZ2VyKHsgc2VydmVyLCBvd25lciwgcmVwbywgdXNlckJyYW5jaDogdXNlckVkaXRCcmFuY2hOYW1lLCB0b2tlbmlkOiBhdXRoZW50aWNhdGlvbj8udG9rZW4/LnNoYTEgfSlcbiAgY29uc3Qge1xuICAgIHN0YXRlOiB7XG4gICAgICBtZXJnZVN0YXR1czogbWVyZ2VUb01hc3RlcixcbiAgICAgIHVwZGF0ZVN0YXR1czogbWVyZ2VGcm9tTWFzdGVyLFxuICAgIH0sXG4gIH0gPSBfdXNlQnJhbmNoTWVyZ2VyXG5cbiAgY29uc3QgdXBkYXRlQnV0dG9uUHJvcHMgPSB1c2VDb250ZW50VXBkYXRlUHJvcHMoe1xuICAgIGlzU2F2aW5nOiBzdGFydFNhdmUsXG4gICAgdXNlQnJhbmNoTWVyZ2VyOiBfdXNlQnJhbmNoTWVyZ2VyLFxuICAgIG9uVXBkYXRlOiAoKSA9PiB7XG4gICAgICBkZWxheSg1MDApLnRoZW4oKCkgPT4gc2NyaXB0dXJlQ29uZmlnPy5yZWxvYWRSZXNvdXJjZSgpKVxuICAgIH0sXG4gIH0pXG5cbiAgY29uc3Qge1xuICAgIGNhbGxVcGRhdGVVc2VyQnJhbmNoLFxuICAgIGlzRXJyb3JEaWFsb2dPcGVuLFxuICAgIG9uQ2xvc2VFcnJvckRpYWxvZyxcbiAgICBpc0xvYWRpbmc6IGlzVXBkYXRlTG9hZGluZyxcbiAgICBkaWFsb2dNZXNzYWdlLFxuICAgIGRpYWxvZ1RpdGxlLFxuICAgIGRpYWxvZ0xpbmssXG4gICAgZGlhbG9nTGlua1Rvb2x0aXAsXG4gIH0gPSB1cGRhdGVCdXR0b25Qcm9wc1xuXG4gIGNvbnN0IG9uTWVyZ2UgPSAoKSA9PiB7XG4gICAgZmluaXNoRWRpdCgpXG4gICAgc2V0U3RhdGUoeyByZWY6IGFwcFJlZiB9KVxuICAgIGRlbGF5KDUwMCkudGhlbigoKSA9PiB7XG4gICAgICBzY3JpcHR1cmVDb25maWc/LnJlbG9hZFJlc291cmNlKClcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgeyBpc0xvYWRpbmc6IGlzTWVyZ2VMb2FkaW5nLCBjYWxsTWVyZ2VVc2VyQnJhbmNoIH0gPSB1c2VNYXN0ZXJNZXJnZVByb3BzKHtcbiAgICBpc1NhdmluZzogc3RhcnRTYXZlLFxuICAgIHVzZUJyYW5jaE1lcmdlcjogX3VzZUJyYW5jaE1lcmdlcixcbiAgICBvbk1lcmdlLFxuICB9KVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNhcmRSZXNvdXJjZUlkKSB7XG4gICAgICB1cGRhdGVNZXJnZVN0YXRlICYmIHVwZGF0ZU1lcmdlU3RhdGUoXG4gICAgICAgIGNhcmRSZXNvdXJjZUlkLFxuICAgICAgICBtZXJnZUZyb21NYXN0ZXIsXG4gICAgICAgIG1lcmdlVG9NYXN0ZXIsXG4gICAgICAgIGNhbGxVcGRhdGVVc2VyQnJhbmNoLFxuICAgICAgICBjYWxsTWVyZ2VVc2VyQnJhbmNoLFxuICAgICAgKVxuICAgIH1cbiAgfSxbY2FyZFJlc291cmNlSWQsIG1lcmdlRnJvbU1hc3RlciwgbWVyZ2VUb01hc3Rlcl0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNVcGRhdGVMb2FkaW5nKSB7XG4gICAgICBzZXRDYXJkc0xvYWRpbmdVcGRhdGU/LihwcmV2Q2FyZHNMb2FkaW5nID0+IFsuLi5wcmV2Q2FyZHNMb2FkaW5nLCBjYXJkUmVzb3VyY2VJZF0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHNldENhcmRzTG9hZGluZ1VwZGF0ZT8uKHByZXZDYXJkc0xvYWRpbmcgPT4gcHJldkNhcmRzTG9hZGluZy5maWx0ZXIoY2FyZElkID0+IGNhcmRJZCAhPT0gY2FyZFJlc291cmNlSWQpKVxuICAgIH1cbiAgfSwgW2lzVXBkYXRlTG9hZGluZ10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNNZXJnZUxvYWRpbmcpIHtcbiAgICAgIHNldENhcmRzTG9hZGluZ01lcmdlPy4ocHJldkNhcmRzTG9hZGluZyA9PiBbLi4ucHJldkNhcmRzTG9hZGluZywgY2FyZFJlc291cmNlSWRdKVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRDYXJkc0xvYWRpbmdNZXJnZT8uKHByZXZDYXJkc0xvYWRpbmcgPT4gcHJldkNhcmRzTG9hZGluZy5maWx0ZXIoY2FyZElkID0+IGNhcmRJZCAhPT0gY2FyZFJlc291cmNlSWQpKVxuICAgIH1cbiAgfSwgW2lzTWVyZ2VMb2FkaW5nXSlcblxuICBjb25zdCB3b3JraW5nUmVmID0gY2FuVXNlRWRpdEJyYW5jaCA/IHdvcmtpbmdSZXNvdXJjZUJyYW5jaCA6IGFwcFJlZlxuICBsZXQgc2NyaXB0dXJlVGl0bGVcblxuICBpZiAoIWNhblVzZUVkaXRCcmFuY2ggJiYgIXJlYWR5Rm9yRmV0Y2gpIHsgLy8gaWYgYmlibGUgbm90IGVsaWdpYmxlIGZvciB1c2VyIGJyYW5jaCwgbWFrZSBzdXJlIGl0J3MgcmVhZHlcbiAgICBzZXRTdGF0ZSh7IHJlYWR5Rm9yRmV0Y2g6IHRydWUgfSlcbiAgfVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYFNjcmlwdHVyZUNhcmQgYm9vayBjaGFuZ2VkYCwgeyBib29rSWQsIG93bmVyLCBsYW5ndWFnZUlkLCByZXNvdXJjZUlkIH0pXG5cbiAgICBpZiAoY2FuVXNlRWRpdEJyYW5jaCkgeyAvLyBpZiBiaWJsZSBlbGlnaWJsZSBmb3IgdXNlciBicmFuY2gsIHJlZnJlc2ggaXRcbiAgICAgIHNldFN0YXRlKHsgcmVhZHlGb3JGZXRjaDogZmFsc2UsIGNoZWNrRm9yRWRpdEJyYW5jaDogY2hlY2tGb3JFZGl0QnJhbmNoICsgMSB9KVxuICAgIH1cbiAgfSwgW2Jvb2tJZCwgb3duZXIsIGxhbmd1YWdlSWQsIHJlc291cmNlSWRdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc0VxdWFsKHJlZmVyZW5jZSwgY3VycmVudFJlZmVyZW5jZSkpIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVDYXJkIHJlZmVyZW5jZSBjaGFuZ2VkYCwgcmVmZXJlbmNlKVxuICAgICAgc2V0U3RhdGUoeyBjdXJyZW50UmVmZXJlbmNlOiByZWZlcmVuY2UgfSlcbiAgICB9XG4gIH0sIFtyZWZlcmVuY2VdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHdhaXRpbmcgZm9yIGJyYW5jaCBmZXRjaCB0byBjb21wbGV0ZVxuICAgIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVDYXJkIGJyYW5jaERldGVybWluZWQgaXMgJHticmFuY2hEZXRlcm1pbmVkfSBhbmQgd29ya2luZ1JlZiBpcyAke3dvcmtpbmdSZWZ9IGFuZCByZWFkeUZvckZldGNoIGlzICR7cmVhZHlGb3JGZXRjaH1gKVxuXG4gICAgaWYgKCFyZWFkeUZvckZldGNoICYmIGJyYW5jaERldGVybWluZWQgKSB7XG4gICAgICBzZXRTdGF0ZSh7IHJlYWR5Rm9yRmV0Y2g6IHRydWUsIHJlZjogd29ya2luZ1JlZiB9KVxuICAgIH1cbiAgfSwgW2JyYW5jaERldGVybWluZWRdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHNlbGVjdCBjb3JyZWN0IHdvcmtpbmcgcmVmIC0gY291bGQgYmUgbWFzdGVyLCB1c2VyIGJyYW5jaCwgb3IgcmVsZWFzZVxuICAgIGlmIChfdXNpbmdVc2VyQnJhbmNoICE9PSB1c2luZ1VzZXJCcmFuY2gpIHtcbiAgICAgIHNldFN0YXRlKHsgdXNpbmdVc2VyQnJhbmNoOiBfdXNpbmdVc2VyQnJhbmNoIH0pXG4gICAgfVxuICB9LCBbX3VzaW5nVXNlckJyYW5jaCwgdXNpbmdVc2VyQnJhbmNoXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB1cGRhdGUgZGlzcGxheSBzdGF0dXMgaWYgZXJyb3JcbiAgICBjb25zdCBlcnJvciA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0dXM/LltFUlJPUl9TVEFURV1cblxuICAgIGlmIChlcnJvcikgeyAvLyBpZiBlcnJvciB3YXMgZm91bmQgZG8gY2FsbGJhY2tcbiAgICAgIGNvbnN0IHJlc291cmNlU3RhdHVzID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXR1c1xuICAgICAgY29uc3QgcmVzb3VyY2VMaW5rID0gZ2V0UmVzb3VyY2VMaW5rKHNjcmlwdHVyZUNvbmZpZylcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBnZXRSZXNvdXJjZU1lc3NhZ2UocmVzb3VyY2VTdGF0dXMsIHNlcnZlciwgcmVzb3VyY2VMaW5rLCBpc05UXylcbiAgICAgIGNvbnN0IGlzQWNjZXNzRXJyb3IgPSByZXNvdXJjZVN0YXR1c1tNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SXVxuICAgICAgb25SZXNvdXJjZUVycm9yICYmIG9uUmVzb3VyY2VFcnJvcihtZXNzYWdlLCBpc0FjY2Vzc0Vycm9yLCByZXNvdXJjZVN0YXR1cylcbiAgICB9XG4gIH0sIFtzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdHVzPy5bRVJST1JfU1RBVEVdXSlcblxuICBpZiAoc2NyaXB0dXJlQ29uZmlnLnRpdGxlICYmIHNjcmlwdHVyZUNvbmZpZy52ZXJzaW9uKSB7XG4gICAgc2NyaXB0dXJlVGl0bGUgPSBgJHtzY3JpcHR1cmVDb25maWcudGl0bGV9IHYke3NjcmlwdHVyZUNvbmZpZy52ZXJzaW9ufWBcbiAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdC51cGRhdGVUaXRsZShzY3JpcHR1cmVDb25maWcucmVzb3VyY2VMaW5rLCBzY3JpcHR1cmVUaXRsZSlcbiAgfSBlbHNlIHtcbiAgICBzY3JpcHR1cmVUaXRsZSA9IGBUaXRsZSBtaXNzaW5nIGZyb20gcHJvamVjdCBtYW5pZmVzdGBcbiAgfVxuXG4gIC8qKiBEeW5hbWljYWxseSBjcmVhdGVzIHRoZSBzY3JpcHR1cmUgc2VsZWN0aW9uIGRyb3Bkb3duIHRvIGJlIGluc2VydGVkIGludG8gY2FyZCBzZXR0aW5ncyAqL1xuICBmdW5jdGlvbiBnZXRTY3JpcHR1cmVTZWxlY3RvcigpIHtcbiAgICBjb25zdCBzY3JpcHR1cmVTZWxlY3Rpb25Db25maWcgPSBnZXRTY3JpcHR1cmVWZXJzaW9uU2V0dGluZ3Moe1xuICAgICAgbGFiZWwsXG4gICAgICByZXNvdXJjZUxpbms6IHNjcmlwdHVyZUNvbmZpZy5yZXNvdXJjZUxpbmssXG4gICAgICBzZXRTY3JpcHR1cmUsXG4gICAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdCxcbiAgICB9KVxuXG4gICAgcmV0dXJuIDxTY3JpcHR1cmVTZWxlY3RvciB7Li4uc2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnfSBzdHlsZT17c3R5bGV9IGVycm9yTWVzc2FnZT17dXJsRXJyb3J9IC8+XG4gIH1cblxuICBmdW5jdGlvbiBvbk1lbnVDbG9zZSgpIHtcbiAgICAvLyBjb25zb2xlLmxvZyhgb25NZW51Q2xvc2UoKWApXG4gICAgc2V0U3RhdGUoeyB1cmxFcnJvcjogbnVsbCB9KVxuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBsYW5ndWFnZUlkXyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/Lmxhbmd1YWdlSWRcbiAgY29uc3QgbGFuZ3VhZ2UgPSBnZXRMYW5ndWFnZSh7IGxhbmd1YWdlSWQ6IGxhbmd1YWdlSWRfIH0pXG4gIGNvbnN0IGRpcmVjdGlvbiA9IChsYW5ndWFnZT8uZGlyZWN0aW9uKSB8fCAnbHRyJ1xuICBjb25zdCBfcmVmZXJlbmNlID0gY3VycmVudFJlZmVyZW5jZSB8fCByZWZlcmVuY2VcblxuICBjb25zdCBpc0hlYnJldyA9IChsYW5ndWFnZUlkXyA9PT0gJ2hibycpXG4gIGNvbnN0IGZvbnRGYWN0b3IgPSBpc0hlYnJldyA/IDEuNCA6IDEgLy8gd2UgYXV0b21hdGljYWxseSBzY2FsZSB1cCBmb250IHNpemUgZm9yIEhlYnJld1xuICBjb25zdCBzY2FsZWRGb250U2l6ZSA9IGZvbnRTaXplICogZm9udEZhY3RvclxuXG4gIGNvbnN0IGl0ZW1zID0gbnVsbFxuICBjb25zdCB7XG4gICAgc3RhdGU6IHtcbiAgICAgIGhlYWRlcnMsIGZpbHRlcnMsIGl0ZW1JbmRleCwgbWFya2Rvd25WaWV3LFxuICAgIH0sXG4gICAgYWN0aW9uczoge1xuICAgICAgc2V0RmlsdGVycywgc2V0SXRlbUluZGV4LCBzZXRNYXJrZG93blZpZXcsXG4gICAgfSxcbiAgfSA9IHVzZUNhcmRTdGF0ZSh7IGl0ZW1zIH0pXG5cbiAgY29uc3QgcmVmU3R5bGUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgZm9udEZhbWlseTogJ05vdG8gU2FucycsXG4gICAgZm9udFNpemU6IGAke01hdGgucm91bmQoc2NhbGVkRm9udFNpemUgKiAwLjkpfSVgLFxuICB9KSwgW3NjYWxlZEZvbnRTaXplXSlcblxuICBjb25zdCBjb250ZW50U3R5bGUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgZm9udEZhbWlseTogJ05vdG8gU2FucycsXG4gICAgZm9udFNpemU6IGAke3NjYWxlZEZvbnRTaXplfSVgLFxuICB9KSwgW3NjYWxlZEZvbnRTaXplXSlcblxuICBjb25zdCBzY3JpcHR1cmVMYWJlbCA9IDxUaXRsZT57c2NyaXB0dXJlVGl0bGV9PC9UaXRsZT5cbiAgbGV0IGRpc2FibGVXb3JkUG9wb3Zlcl8gPSBkaXNhYmxlV29yZFBvcG92ZXJcbiAgY29uc3QgdXNpbmdPcmlnaW5hbEJpYmxlID0gaXNPcmlnaW5hbEJpYmxlKHNjcmlwdHVyZUNvbmZpZ1sncmVzb3VyY2UnXT8ucHJvamVjdElkKVxuXG4gIGlmIChkaXNhYmxlV29yZFBvcG92ZXIgPT09IHVuZGVmaW5lZCkgeyAvLyBpZiBub3Qgc3BlY2lmaWVkLCB0aGVuIGRldGVybWluZSBpZiBvcmlnaW5hbCBsYW5ndWFnZSByZXNvdXJjZVxuICAgIGRpc2FibGVXb3JkUG9wb3Zlcl8gPSAhdXNpbmdPcmlnaW5hbEJpYmxlXG4gIH1cblxuICBjb25zdCBlbmFibGVFZGl0ID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxuICBjb25zdCBlbmFibGVBbGlnbm1lbnQgPSAhdXNpbmdPcmlnaW5hbEJpYmxlXG4gIGNvbnN0IG9yaWdpbmFsUmVwb1VybCA9IGlzTmV3VGVzdGFtZW50ID8gZ3JlZWtSZXBvVXJsIDogaGVicmV3UmVwb1VybFxuICBjb25zdCBzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnID0ge1xuICAgIGF1dGhlbnRpY2F0aW9uOiBjYW5Vc2VFZGl0QnJhbmNoID8gYXV0aGVudGljYXRpb24gOiBudWxsLFxuICAgIGJvb2tJbmRleCxcbiAgICBjdXJyZW50VmVyc2VSZWY6IF9yZWZlcmVuY2UsXG4gICAgZW5hYmxlRWRpdCxcbiAgICBlbmFibGVBbGlnbm1lbnQsXG4gICAgaHR0cENvbmZpZyxcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaXNOZXdUZXN0YW1lbnQsXG4gICAgbG9nZ2VkSW5Vc2VyOiBjYW5Vc2VFZGl0QnJhbmNoID8gbG9nZ2VkSW5Vc2VyIDogbnVsbCxcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIG9yaWdpbmFsUmVwb1VybCxcbiAgICBzY3JpcHR1cmVDb25maWcsXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MsXG4gICAgc3RhcnRFZGl0QnJhbmNoLFxuICAgIHNldFNhdmVkQ2hhbmdlczogX3NldFNhdmVkQ2hhbmdlcyxcbiAgICBzb3VyY2VMYW5ndWFnZTogaXNOVF8gPyBOVF9PUklHX0xBTkcgOiBPVF9PUklHX0xBTkcsXG4gICAgdGFyZ2V0TGFuZ3VhZ2U6IGxhbmd1YWdlLFxuICAgIHRpdGxlOiBzY3JpcHR1cmVUaXRsZSxcbiAgICB3b3JraW5nUmVzb3VyY2VCcmFuY2g6IHJlZixcbiAgfVxuXG4gIC8qKlxuICAgKiB0aGlzIGdldHMgY2FsbGVkIHdoZW5ldmVyIGEgc2NyaXB0dXJlIHBhbmUgaGFzIGEgY2hhbmdlIGluIHNhdmUgc3RhdGVcbiAgICogQHBhcmFtIHtudW1iZXJ9IGN1cnJlbnRJbmRleFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHNhdmVkXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGdldENoYW5nZXMgLSB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciB1c2VyIGNsaWNrcyBzYXZlIGJ1dHRvblxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjbGVhckNoYW5nZXMgLSB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciBzYXZlIGhhcyBjb21wbGV0ZWRcbiAgICogQHBhcmFtIHtvYmplY3R9IHN0YXRlIC0gY3VycmVudCBzdGF0ZSBvZiB3b3JkIGFsaWdubWVudC9lZGl0XG4gICAqL1xuICBmdW5jdGlvbiBfc2V0U2F2ZWRDaGFuZ2VzKGN1cnJlbnRJbmRleCwgc2F2ZWQsIHsgZ2V0Q2hhbmdlcyA9IG51bGwsIGNsZWFyQ2hhbmdlcyA9IG51bGwsIHN0YXRlID0gbnVsbCB9KSB7XG4gICAgY29uc3QgX3Vuc2F2ZWRDaGFuZ2VzTGlzdCA9IHsgLi4udW5zYXZlZENoYW5nZXNMaXN0IH1cblxuICAgIGlmIChzYXZlZCkge1xuICAgICAgaWYgKF91bnNhdmVkQ2hhbmdlc0xpc3QuaGFzT3duUHJvcGVydHkoY3VycmVudEluZGV4KSkge1xuICAgICAgICBkZWxldGUgX3Vuc2F2ZWRDaGFuZ2VzTGlzdFtjdXJyZW50SW5kZXhdXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIF91bnNhdmVkQ2hhbmdlc0xpc3RbY3VycmVudEluZGV4XSA9IHsgZ2V0Q2hhbmdlcywgY2xlYXJDaGFuZ2VzLCBzdGF0ZSB9IC8vIHVwZGF0ZSB3aXRoIGxhdGVzdFxuICAgIH1cblxuICAgIGNvbnN0IF9oYXZlVW5zYXZlZENoYW5nZXMgPSAhIU9iamVjdC5rZXlzKF91bnNhdmVkQ2hhbmdlc0xpc3QpLmxlbmd0aFxuXG4gICAgaWYgKGhhdmVVbnNhdmVkQ2hhbmdlcyAhPSBfaGF2ZVVuc2F2ZWRDaGFuZ2VzKSB7XG4gICAgICBzZXRTYXZlZENoYW5nZXMgJiYgc2V0U2F2ZWRDaGFuZ2VzKHJlc291cmNlSWQsICFfaGF2ZVVuc2F2ZWRDaGFuZ2VzKVxuICAgICAgc2V0U3RhdGUoeyBoYXZlVW5zYXZlZENoYW5nZXM6IF9oYXZlVW5zYXZlZENoYW5nZXMgfSlcbiAgICB9XG5cbiAgICBpZiAoIWlzRXF1YWwoX3Vuc2F2ZWRDaGFuZ2VzTGlzdCwgdW5zYXZlZENoYW5nZXNMaXN0KSkge1xuICAgICAgc2V0U3RhdGUoeyB1bnNhdmVkQ2hhbmdlc0xpc3Q6IF91bnNhdmVkQ2hhbmdlc0xpc3QgfSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogc2VhcmNoIGNoYXB0ZXIgb3IgdmVyc2UgY2h1bmsgdG8gbGluZSB0aGF0IHN0YXJ0cyB3aXRoIGZpbmRJdGVtXG4gICAqIEBwYXJhbSB7bnVtYmVyfHN0cmluZ30gZmluZEl0ZW1cbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gY2h1bmtzXG4gICAqL1xuICBmdW5jdGlvbiBmaW5kUmVmSW5BcnJheShmaW5kSXRlbSwgY2h1bmtzKSB7XG4gICAgY29uc3QgcmVmXyA9IGZpbmRJdGVtICsgJydcbiAgICBjb25zdCByZWZMZW4gPSByZWZfLmxlbmd0aFxuICAgIGNvbnN0IGluZGV4ID0gY2h1bmtzLmZpbmRJbmRleCgoY2h1bmssIGlkeCkgPT4ge1xuICAgICAgaWYgKGlkeCA+IDApIHtcbiAgICAgICAgaWYgKGNodW5rLnN1YnN0cmluZygwLCByZWZMZW4pID09PSByZWZfKSB7XG4gICAgICAgICAgY29uc3QgbmV4dENoYXIgPSBjaHVua1tyZWZMZW5dXG5cbiAgICAgICAgICBpZiAoKG5leHRDaGFyID4gJzknKSB8fCAobmV4dENoYXIgPCAnMCcpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSlcbiAgICByZXR1cm4gaW5kZXhcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEJvb2tOYW1lKCkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBib29rQ2FwcyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVmZXJlbmNlPy5wcm9qZWN0SWQgPyBzY3JpcHR1cmVDb25maWcucmVmZXJlbmNlLnByb2plY3RJZC50b1VwcGVyQ2FzZSgpIDogJydcbiAgICByZXR1cm4gYCR7Ym9va0luZGV4fS0ke2Jvb2tDYXBzfS51c2ZtYFxuICB9XG5cbiAgY29uc3QgZmlsZXBhdGggPSBnZXRCb29rTmFtZSgpXG5cbiAgLy8ga2VlcCB0cmFjayBvZiB2ZXJzZSBlZGl0IHN0YXRlXG4gIGNvbnN0IHtcbiAgICBlcnJvcjogc2F2ZUVycm9yLFxuICAgIGlzRXJyb3I6IGlzU2F2ZUVycm9yLFxuICAgIG9uU2F2ZUVkaXQsXG4gIH0gPSB1c2VFZGl0KHtcbiAgICBzaGEsXG4gICAgb3duZXIsXG4gICAgY29udGVudDogc2F2ZUNvbnRlbnQsXG4gICAgY29uZmlnOiB7XG4gICAgICBjYWNoZTogeyBtYXhBZ2U6IDAgfSxcbiAgICAgIC4uLmF1dGhlbnRpY2F0aW9uPy5jb25maWcsXG4gICAgICBkb250Q3JlYXRlQnJhbmNoOiB0cnVlLFxuICAgICAgdG9rZW46IGF1dGhlbnRpY2F0aW9uPy50b2tlbixcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRpbWVvdXQ6IGh0dHBDb25maWc/LnNlcnZlclRpbWVPdXQgfHwgaHR0cENvbmZpZz8udGltZW91dCB8fCAxMDAwMCxcbiAgICAgIHNlcnZlcixcbiAgICB9LFxuICAgIGF1dGhvcjogbG9nZ2VkSW5Vc2VyLFxuICAgIHRva2VuOiBhdXRoZW50aWNhdGlvbj8udG9rZW4sXG4gICAgYnJhbmNoOiB3b3JraW5nUmVzb3VyY2VCcmFuY2gsXG4gICAgZmlsZXBhdGgsXG4gICAgcmVwbyxcbiAgfSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB3aGVuIHdlIGdldCBhIHNhdmUgc2F2ZUVycm9yXG4gICAgaWYgKHNhdmVFcnJvciAmJiBpc1NhdmVFcnJvcikge1xuICAgICAgY29uc29sZS5sb2coYHNhdmUgZXJyb3JgLCBzYXZlRXJyb3IpXG4gICAgICBvblJlc291cmNlRXJyb3IgJiYgb25SZXNvdXJjZUVycm9yKG51bGwsIGZhbHNlLCBudWxsLCBgRXJyb3Igc2F2aW5nICR7bGFuZ3VhZ2VJZF99XyR7cmVzb3VyY2VJZH0gJHtzYXZlRXJyb3J9YCwgdHJ1ZSlcbiAgICB9XG4gIH0sIFtzYXZlRXJyb3IsIGlzU2F2ZUVycm9yXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB3aGVuIHN0YXJ0U2F2ZSBnb2VzIHRydWUsIHNhdmUgZWRpdHMgdG8gdXNlciBicmFuY2ggYW5kIHRoZW4gY2xlYXIgc3RhcnRTYXZlXG4gICAgY29uc3QgX3NhdmVFZGl0ID0gYXN5bmMgKCkgPT4geyAvLyBiZWdpbiB1cGxvYWRpbmcgbmV3IFVTRk1cbiAgICAgIGNvbnNvbGUuaW5mbyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBVc2luZyBzaGE6ICR7c2hhfWApXG4gICAgICBhd2FpdCBvblNhdmVFZGl0KHVzZXJFZGl0QnJhbmNoTmFtZSkudGhlbigoc3VjY2VzcykgPT4geyAvLyBwdXNoIGNoYW5nZSB0byBzZXJ2ZXJcbiAgICAgICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZlIHNjcmlwdHVyZSBlZGl0cyBzdWNjZXNzYClcbiAgICAgICAgICBzZXRDYXJkc1NhdmluZyhwcmV2Q2FyZHNTYXZpbmcgPT4gcHJldkNhcmRzU2F2aW5nLmZpbHRlcihjYXJkSWQgPT4gY2FyZElkICE9PSBjYXJkUmVzb3VyY2VJZCkpXG4gICAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgICAgc3RhcnRTYXZlOiBmYWxzZSxcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgY29uc3QgdW5zYXZlZENhcmRJbmRpY2VzID0gT2JqZWN0LmtleXModW5zYXZlZENoYW5nZXNMaXN0KVxuXG4gICAgICAgICAgaWYgKHVuc2F2ZWRDYXJkSW5kaWNlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNhcmRJbmRleCBvZiB1bnNhdmVkQ2FyZEluZGljZXMpIHtcbiAgICAgICAgICAgICAgY29uc3QgeyBjbGVhckNoYW5nZXMgfSA9IHVuc2F2ZWRDaGFuZ2VzTGlzdFtjYXJkSW5kZXhdXG4gICAgICAgICAgICAgIGNsZWFyQ2hhbmdlcyAmJiBjbGVhckNoYW5nZXMoKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnNvbGUuaW5mbygnc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBSZWxvYWRpbmcgcmVzb3VyY2UnKVxuICAgICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICAgIHN0YXJ0U2F2ZTogZmFsc2UsXG4gICAgICAgICAgICByZWFkeUZvckZldGNoOiB0cnVlLFxuICAgICAgICAgICAgcmVmOiB1c2VyRWRpdEJyYW5jaE5hbWUsXG4gICAgICAgICAgfSlcbiAgICAgICAgICBkZWxheSg1MDApLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgc2V0Q2FyZHNTYXZpbmcocHJldkNhcmRzU2F2aW5nID0+IHByZXZDYXJkc1NhdmluZy5maWx0ZXIoY2FyZElkID0+IGNhcmRJZCAhPT0gY2FyZFJlc291cmNlSWQpKVxuICAgICAgICAgICAgc2NyaXB0dXJlQ29uZmlnPy5yZWxvYWRSZXNvdXJjZShzaGEpXG4gICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmluZyBjaGFuZ2VkIHNjcmlwdHVyZSBmYWlsZWQnKVxuICAgICAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBwcmV2Q2FyZHNTYXZpbmcuZmlsdGVyKGNhcmRJZCA9PiBjYXJkSWQgIT09IGNhcmRSZXNvdXJjZUlkKSlcbiAgICAgICAgICBzZXRTdGF0ZSh7IHN0YXJ0U2F2ZTogZmFsc2UgfSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAoc3RhcnRTYXZlKSB7XG4gICAgICBpZiAoIWVkaXRCcmFuY2hSZWFkeSkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gZWRpdCBicmFuY2ggbm90IHlldCBjcmVhdGVkYClcbiAgICAgIH0gZWxzZSBpZiAoIXNoYSkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gc2F2ZSBzaGEgbm90IHlldCByZWFkeWApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gY2FsbGluZyBfc2F2ZUVkaXQoKWApXG4gICAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBbLi4ucHJldkNhcmRzU2F2aW5nLCBjYXJkUmVzb3VyY2VJZF0pXG4gICAgICAgIF9zYXZlRWRpdCgpXG4gICAgICB9XG4gICAgfVxuICB9LCBbc3RhcnRTYXZlLCBlZGl0QnJhbmNoUmVhZHksIHNoYV0pXG5cbiAgLyoqXG4gICAqIGNvbnZlcnQgdXBkYXRlZFZlcnNlT2JqZWN0cyB0byBVU0ZNIGFuZCBtZXJnZSBpbnRvIHRoZSBiaWJsZVVzZm1cbiAgICogQHBhcmFtIHtzdHJpbmd9IGJpYmxlVXNmbSAtIFVTRk0gb2YgYmlibGVcbiAgICogQHBhcmFtIHtvYmplY3R9IHJlZiAtIHJlZmVyZW5jZSBvZiB2ZXJzZSB0byBtZXJnZSBpblxuICAgKiBAcGFyYW0ge29iamVjdFtdfSB1cGRhdGVkVmVyc2VPYmplY3RzIC0gbmV3IHZlcnNlIGluIHZlcnNlT2JqZWN0IGZvcm1hdFxuICAgKiBAcGFyYW0ge251bWJlcn0gY2FyZE51bVxuICAgKi9cbiAgZnVuY3Rpb24gbWVyZ2VWZXJzZU9iamVjdHNJbnRvQmlibGVVc2ZtKGJpYmxlVXNmbSwgcmVmLCB1cGRhdGVkVmVyc2VPYmplY3RzLCBjYXJkTnVtOiBudW1iZXIpIHtcbiAgICBsZXQgbmV3VXNmbVxuICAgIGNvbnN0IGNoYXB0ZXJDaHVua3MgPSBiaWJsZVVzZm0/LnNwbGl0KCdcXFxcYyAnKVxuICAgIGNvbnN0IGNoYXB0ZXJJbmRleCA9IGZpbmRSZWZJbkFycmF5KHJlZj8uY2hhcHRlciwgY2hhcHRlckNodW5rcylcblxuICAgIGlmIChjaGFwdGVySW5kZXggPj0gMCkge1xuICAgICAgY29uc3QgY3VycmVudENoYXB0ZXIgPSBjaGFwdGVyQ2h1bmtzW2NoYXB0ZXJJbmRleF1cbiAgICAgIGNvbnN0IHZlcnNlQ2h1bmtzID0gY3VycmVudENoYXB0ZXIuc3BsaXQoJ1xcXFx2ICcpXG4gICAgICBjb25zdCB2ZXJzZUluZGV4ID0gZmluZFJlZkluQXJyYXkocmVmPy52ZXJzZSwgdmVyc2VDaHVua3MpXG5cbiAgICAgIGlmICh2ZXJzZUluZGV4ID49IDApIHtcbiAgICAgICAgY29uc3QgbmV3VmVyc2VVc2ZtID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5jb252ZXJ0VmVyc2VEYXRhVG9VU0ZNKHVwZGF0ZWRWZXJzZU9iamVjdHMpXG4gICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoJHtjYXJkTnVtfSkgLSBuZXcgVVNGTSBmb3IgY2FyZDp9IC0gJHtuZXdWZXJzZVVzZm0uc3Vic3RyaW5nKDAsIDEwMCl9YClcbiAgICAgICAgY29uc3Qgb2xkVmVyc2UgPSB2ZXJzZUNodW5rc1t2ZXJzZUluZGV4XVxuICAgICAgICBjb25zdCB2ZXJzZU51bUxlbiA9IChyZWY/LnZlcnNlICsgJycpLmxlbmd0aFxuICAgICAgICB2ZXJzZUNodW5rc1t2ZXJzZUluZGV4XSA9IG9sZFZlcnNlLnN1YnN0cmluZygwLCB2ZXJzZU51bUxlbiArIDEpICsgbmV3VmVyc2VVc2ZtXG4gICAgICAgIGNvbnN0IG5ld0NoYXB0ZXIgPSB2ZXJzZUNodW5rcy5qb2luKCdcXFxcdiAnKVxuICAgICAgICBjaGFwdGVyQ2h1bmtzW2NoYXB0ZXJJbmRleF0gPSBuZXdDaGFwdGVyXG4gICAgICAgIG5ld1VzZm0gPSBjaGFwdGVyQ2h1bmtzLmpvaW4oJ1xcXFxjICcpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXdVc2ZtXG4gIH1cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBmb3IgZWFjaCB1bnNhdmVkIGNoYW5nZSwgY2FsbCBpbnRvIHNjcmlwdHVyZVBhbmUgdG8gZ2V0IGxhdGVzdCBjaGFuZ2VzIGZvciB2ZXJzZSB0byBzYXZlXG4gICAgYXN5bmMgZnVuY3Rpb24gZ2V0UmVhZHlGb3JTYXZlKCkge1xuICAgICAgaWYgKHNhdmVDbGlja2VkKSB7XG4gICAgICAgIGxldCBjcmVhdGVFZGl0QnJhbmNoID0gIV91c2luZ1VzZXJCcmFuY2hcblxuICAgICAgICBpZiAoIWNyZWF0ZUVkaXRCcmFuY2gpIHsgLy8gaWYgYWxyZWFkeSB1c2luZyB0aGUgdXNlciBicmFuY2hcbiAgICAgICAgICBpZiAod29ya2luZ1Jlc291cmNlQnJhbmNoICE9PSB1c2VyRWRpdEJyYW5jaE5hbWUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2Fybihgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gc3RhdGUgY29uZmxpY3QgLSBzaG91bGQgYmUgaW4gdXNlciBicmFuY2ggJHt1c2VyRWRpdEJyYW5jaE5hbWV9LCBidXQgYWN0dWFsbHkgdXNpbmcgJHt3b3JraW5nUmVzb3VyY2VCcmFuY2h9YClcbiAgICAgICAgICAgIGNyZWF0ZUVkaXRCcmFuY2ggPSB0cnVlXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBhbHJlYWR5IHVzaW5nIGVkaXQgYnJhbmNoOiAke3dvcmtpbmdSZXNvdXJjZUJyYW5jaH1gKVxuICAgICAgICAgICAgc2V0U3RhdGUoeyBlZGl0QnJhbmNoUmVhZHk6IHRydWUgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY3JlYXRlRWRpdEJyYW5jaCkgeyAvLyBpZiBub3QgeWV0IHVzaW5nIHRoZSB1c2VyIGJyYW5jaCwgY3JlYXRlIGl0XG4gICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGNyZWF0aW5nIGVkaXQgYnJhbmNoYClcbiAgICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgICBlZGl0QnJhbmNoUmVhZHk6IGZhbHNlLFxuICAgICAgICAgICAgcmVhZHlGb3JGZXRjaDogZmFsc2UsXG4gICAgICAgICAgICBzaGE6IG51bGwsXG4gICAgICAgICAgfSkgLy8gd2Ugd2lsbCBuZWVkIGEgbmV3IHNoYSBmb3IgYm9vay9icmFuY2hcblxuICAgICAgICAgIGNvbnN0IGJyYW5jaCA9IGF3YWl0IHN0YXJ0RWRpdEJyYW5jaCgpXG5cbiAgICAgICAgICBpZiAoYnJhbmNoKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gZWRpdCBicmFuY2ggY3JlYXRlZGApXG4gICAgICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgICAgIGVkaXRCcmFuY2hSZWFkeTogdHJ1ZSxcbiAgICAgICAgICAgICAgcmVhZHlGb3JGZXRjaDogdHJ1ZSxcbiAgICAgICAgICAgICAgcmVmOiBicmFuY2gsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIGVycm9yIGNyZWF0aW5nIGVkaXQgYnJhbmNoJylcbiAgICAgICAgICAgIG9uUmVzb3VyY2VFcnJvciAmJiBvblJlc291cmNlRXJyb3IobnVsbCwgZmFsc2UsIG51bGwsIGBFcnJvciBjcmVhdGluZyBlZGl0IGJyYW5jaCAke2xhbmd1YWdlSWRffV8ke3Jlc291cmNlSWR9YCwgdHJ1ZSlcbiAgICAgICAgICAgIHNldFN0YXRlKHsgc2F2ZUNsaWNrZWQ6IGZhbHNlIH0pXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gZ2V0dGluZyB2ZXJzZSBjaGFuZ2VzYClcbiAgICAgICAgY29uc3QgdW5zYXZlZENhcmRJbmRpY2VzID0gT2JqZWN0LmtleXModW5zYXZlZENoYW5nZXNMaXN0KVxuXG4gICAgICAgIGlmICh1bnNhdmVkQ2FyZEluZGljZXM/Lmxlbmd0aCkge1xuICAgICAgICAgIGxldCBiaWJsZVVzZm0gPSBnZXRDdXJyZW50Qm9vayhzY3JpcHR1cmVDb25maWcsIGJvb2tJZClcbiAgICAgICAgICBsZXQgbWVyZ2VGYWlsID0gZmFsc2VcbiAgICAgICAgICBpZiAoYmlibGVVc2ZtKSB7XG4gICAgICAgICAgICBsZXQgY2FyZE51bSA9IDBcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjYXJkSW5kZXggb2YgdW5zYXZlZENhcmRJbmRpY2VzKSB7XG4gICAgICAgICAgICAgIGNhcmROdW0gPSBwYXJzZUludChjYXJkSW5kZXgpXG4gICAgICAgICAgICAgIGNvbnN0IHsgZ2V0Q2hhbmdlcywgc3RhdGUgfSA9IHVuc2F2ZWRDaGFuZ2VzTGlzdFtjYXJkTnVtXVxuXG4gICAgICAgICAgICAgIGlmIChnZXRDaGFuZ2VzKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5ld1VzZm1cbiAgICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgICByZWYsXG4gICAgICAgICAgICAgICAgICB1cGRhdGVkVmVyc2VPYmplY3RzLFxuICAgICAgICAgICAgICAgIH0gPSBnZXRDaGFuZ2VzKHN0YXRlKVxuXG4gICAgICAgICAgICAgICAgaWYgKHVwZGF0ZWRWZXJzZU9iamVjdHMgJiYgYmlibGVVc2ZtKSB7IC8vIGp1c3QgcmVwbGFjZSB2ZXJzZVxuICAgICAgICAgICAgICAgICAgbmV3VXNmbSA9IG1lcmdlVmVyc2VPYmplY3RzSW50b0JpYmxlVXNmbShiaWJsZVVzZm0sIHJlZiwgdXBkYXRlZFZlcnNlT2JqZWN0cywgY2FyZE51bSlcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAobmV3VXNmbSkge1xuICAgICAgICAgICAgICAgICAgYmlibGVVc2ZtID0gbmV3VXNmbVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBtZXJnZUZhaWwgPSB0cnVlXG4gICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuXG4gICAgICAgICAgaWYgKG1lcmdlRmFpbCkgeyAvLyBpZiB3ZSBmYWlsZWQgdG8gbWVyZ2UsIGZhbGxiYWNrIHRvIGJydXRlIGZvcmNlIHZlcnNlIG9iamVjdHMgdG8gVVNGTVxuICAgICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgke2NhcmROdW19KSAtIHZlcnNlIG5vdCBmb3VuZCwgZmFsbGluZyBiYWNrIHRvIGluc2VydGluZyB2ZXJzZSBvYmplY3RgKVxuICAgICAgICAgICAgbGV0IG5ld0Jvb2tKc29uXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgY2FyZEluZGV4IG9mIHVuc2F2ZWRDYXJkSW5kaWNlcykge1xuICAgICAgICAgICAgICBjb25zdCBjYXJkTnVtID0gcGFyc2VJbnQoY2FyZEluZGV4KVxuICAgICAgICAgICAgICBjb25zdCB7IGdldENoYW5nZXMsIHN0YXRlIH0gPSB1bnNhdmVkQ2hhbmdlc0xpc3RbY2FyZE51bV1cblxuICAgICAgICAgICAgICBpZiAoZ2V0Q2hhbmdlcykge1xuICAgICAgICAgICAgICAgIGxldCBuZXdVc2ZtXG4gICAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgICAgbmV3VmVyc2VUZXh0LFxuICAgICAgICAgICAgICAgICAgcmVmLFxuICAgICAgICAgICAgICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0cyxcbiAgICAgICAgICAgICAgICB9ID0gZ2V0Q2hhbmdlcyhzdGF0ZSlcblxuICAgICAgICAgICAgICAgIGlmICh1cGRhdGVkVmVyc2VPYmplY3RzICYmICFuZXdVc2ZtKSB7XG4gICAgICAgICAgICAgICAgICBsZXQgdGFyZ2V0VmVyc2VPYmplY3RzXyA9IG51bGxcblxuICAgICAgICAgICAgICAgICAgaWYgKHJlZikge1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV3VmVyc2VUZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB0YXJnZXRWZXJzZU9iamVjdHMgfSA9IEFsaWdubWVudEhlbHBlcnMudXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UodXBkYXRlZFZlcnNlT2JqZWN0cywgbmV3VmVyc2VUZXh0KVxuICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFZlcnNlT2JqZWN0c18gPSB0YXJnZXRWZXJzZU9iamVjdHNcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRWZXJzZU9iamVjdHNfID0gdXBkYXRlZFZlcnNlT2JqZWN0c1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG5ld0Jvb2tKc29uID0gdGFyZ2V0VmVyc2VPYmplY3RzXyAmJiBzY3JpcHR1cmVDb25maWc/LnVwZGF0ZVZlcnNlKHJlZi5jaGFwdGVyLCByZWYudmVyc2UsIHt2ZXJzZU9iamVjdHM6IHRhcmdldFZlcnNlT2JqZWN0c199KVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBiaWJsZVVzZm0gPSB1c2ZtanMudG9VU0ZNKG5ld0Jvb2tKc29uLCB7IGZvcmNlZE5ld0xpbmVzOiB0cnVlIH0pXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGJpYmxlVXNmbSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2aW5nIG5ldyBVU0ZNOiAke2JpYmxlVXNmbS5zdWJzdHJpbmcoMCwgMTAwKX0uLi5gKVxuICAgICAgICAgICAgc2V0Q2FyZHNTYXZpbmcocHJldkNhcmRzU2F2aW5nID0+IFsuLi5wcmV2Q2FyZHNTYXZpbmcsIGNhcmRSZXNvdXJjZUlkXSlcbiAgICAgICAgICAgIHNldFN0YXRlKHtzYXZlQ29udGVudDogYmlibGVVc2ZtLCBzdGFydFNhdmU6IHRydWUsIHNhdmVDbGlja2VkOiBmYWxzZX0pXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBFcnJvciByZXRyaWV2aW5nIHRoZSBjb3JyZWN0IGJvb2sgZGF0YTogaW5jb3JyZWN0IGJvb2sgJHtsYW5ndWFnZUlkX31fJHtyZXNvdXJjZUlkfWApXG4gICAgICAgICAgICAgIG9uUmVzb3VyY2VFcnJvciAmJiBvblJlc291cmNlRXJyb3IobnVsbCwgZmFsc2UsIG51bGwsIGBFcnJvciByZXRyaWV2aW5nIHRoZSBjb3JyZWN0IGJvb2sgZGF0YSAke2xhbmd1YWdlSWRffV8ke3Jlc291cmNlSWR9YCwgdHJ1ZSlcbiAgICAgICAgICAgICAgc2V0U3RhdGUoeyBzYXZlQ2xpY2tlZDogZmFsc2UgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRSZWFkeUZvclNhdmUoKVxuICB9LCBbc2F2ZUNsaWNrZWRdKVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgeyBjaGFwdGVyIH0gPSBfcmVmZXJlbmNlIHx8IHt9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBfdmVyc2VzRm9yUmVmID0gc2NyaXB0dXJlQ29uZmlnPy52ZXJzZXNGb3JSZWZcbiAgICBsZXQgbmV3U2VsZWN0aW9ucyA9IG5ldyBNYXAoKVxuICAgIGxldCB1cGRhdGVTZWxlY3Rpb25zID0gZmFsc2VcbiAgICBjb25zdCBfbWFwID0gbmV3U2VsZWN0aW9uc1xuICAgIGNvbnN0IG9yaWdpbmFsQm9va0lkID0gb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cz8uYm9va0lkXG4gICAgY29uc3QgYm9va1ZlcnNlT2JqZWN0ID0gb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cz8uY2hhcHRlcnNcbiAgICBsZXQgbmV3U2VsZWN0ZWRRdW90ZSA9IG51bGxcblxuICAgIC8vIGlmIHdlIGhhdmUgZXZlcnl0aGluZyB3ZSBuZWVkIHRvIGNhbGN1bGF0ZSBzZWxlY3Rpb25zXG4gICAgaWYgKF92ZXJzZXNGb3JSZWY/Lmxlbmd0aCAmJlxuICAgICAgYm9va1ZlcnNlT2JqZWN0ICYmXG4gICAgICAoYm9va0lkID09PSBvcmlnaW5hbEJvb2tJZCkgJiZcbiAgICAgIGJvb2tWZXJzZU9iamVjdFtjaGFwdGVyXSAmJiAvLyB3ZSBuZWVkIHRvIGhhdmUgZGF0YSBmb3IgY2hhcHRlclxuICAgICAgc2VsZWN0ZWRRdW90ZT8ucXVvdGVcbiAgICApIHtcbiAgICAgIC8vIGlmIHF1b3RlIGlzIGRpZmZlcmVudCB0aGFuIGxhc3RcbiAgICAgIGlmICghaXNFcXVhbChsYXN0U2VsZWN0ZWRRdW90ZSwgc2VsZWN0ZWRRdW90ZSkgfHxcbiAgICAgICAgIWlzRXF1YWwodmVyc2VzRm9yUmVmLCBfdmVyc2VzRm9yUmVmKSkge1xuICAgICAgICBjb25zdCBvcmlnaW5hbFZlcnNlcyA9IHt9XG4gICAgICAgIGNvbnN0IHN1YnN0aXR1dGUgPSB7fSAvLyBrZWVwIHRyYWNrIG9mIHZlcnNlIHN1YnN0aXR1dGlvbnNcbiAgICAgICAgbGV0IHN0YXJ0VmVyc2UgPSBfdmVyc2VzRm9yUmVmWzBdLnZlcnNlXG5cbiAgICAgICAgaWYgKHR5cGVvZiBzdGFydFZlcnNlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHN0YXJ0VmVyc2UgPSBwYXJzZUludChzdGFydFZlcnNlKVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGxhc3RWZXJzZSA9IHN0YXJ0VmVyc2VcblxuICAgICAgICBmb3IgKGxldCBpID0gMCwgbCA9IF92ZXJzZXNGb3JSZWYubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgY29uc3QgdmVyc2VSZWYgPSBfdmVyc2VzRm9yUmVmW2ldXG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgY2hhcHRlcixcbiAgICAgICAgICAgIHZlcnNlLFxuICAgICAgICAgIH0gPSB2ZXJzZVJlZlxuICAgICAgICAgIC8vIFRSSUNLWSAtIHdlIHJlbWFwIHZlcnNlcyBpbiByZWZlcmVuY2UgcmFuZ2UgdG8gYSBsaW5lYXIgc2VyaWVzIG9mIHZlcnNlcyBzbyB2ZXJzZSBzcGFucyBkb24ndCBjaG9rZSBnZXRRdW90ZU1hdGNoZXNJbkJvb2tSZWZcbiAgICAgICAgICBsZXQgX3ZlcnNlID0gc3RhcnRWZXJzZSArIGlcbiAgICAgICAgICBsYXN0VmVyc2UgPSBfdmVyc2VcbiAgICAgICAgICBzdWJzdGl0dXRlW2Ake2NoYXB0ZXJ9OiR7X3ZlcnNlfWBdID0gYCR7Y2hhcHRlcn06JHt2ZXJzZX1gXG5cbiAgICAgICAgICBpZiAoIW9yaWdpbmFsVmVyc2VzW2NoYXB0ZXJdKSB7XG4gICAgICAgICAgICBvcmlnaW5hbFZlcnNlc1tjaGFwdGVyXSA9IHt9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGV0IHZlcnNlT2JqZWN0cyA9IFtdXG5cbiAgICAgICAgICBpZiAoKHR5cGVvZiB2ZXJzZSA9PT0gJ3N0cmluZycpICYmICh2ZXJzZS5pbmNsdWRlcygnLScpKSkge1xuICAgICAgICAgICAgY29uc3QgdmVyc2VzID0gZ2V0VmVyc2VzKGJvb2tWZXJzZU9iamVjdCwgYCR7Y2hhcHRlcn06JHt2ZXJzZX1gKVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHZlcnNlSXRlbSBvZiB2ZXJzZXMpIHtcbiAgICAgICAgICAgICAgY29uc3Qgdm8gPSB2ZXJzZUl0ZW0udmVyc2VEYXRhLnZlcnNlT2JqZWN0c1xuICAgICAgICAgICAgICB2ZXJzZU9iamVjdHMgPSB2ZXJzZU9iamVjdHMuY29uY2F0KHZvKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2ZXJzZU9iamVjdHMgPSBib29rVmVyc2VPYmplY3RbY2hhcHRlcl1bdmVyc2VdPy52ZXJzZU9iamVjdHNcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodmVyc2VPYmplY3RzKSB7XG4gICAgICAgICAgICB2ZXJzZU9iamVjdHMgPSBjbGVhbnVwVmVyc2VPYmplY3RzKHZlcnNlT2JqZWN0cylcbiAgICAgICAgICAgIG9yaWdpbmFsVmVyc2VzW2NoYXB0ZXJdW192ZXJzZV0gPSB7IHZlcnNlT2JqZWN0cyB9XG4gICAgICAgICAgICBfbWFwLnNldChgJHtjaGFwdGVyfToke3ZlcnNlfWAsIHZlcnNlT2JqZWN0cylcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjcmVhdGUgbmV3IHJlZmVyZW5jZSByYW5nZSBmb3IgbmV3IGxpbmVhciB2ZXJzZSByYW5nZVxuICAgICAgICBjb25zdCBbY2hhcHRlcl0gPSBzZWxlY3RlZFF1b3RlPy5yZWZlcmVuY2U/LnNwbGl0KCc6JylcbiAgICAgICAgbGV0IHN1YlJlZiA9IGAke2NoYXB0ZXJ9OiR7c3RhcnRWZXJzZX1gXG5cbiAgICAgICAgaWYgKGxhc3RWZXJzZSAhPSBzdGFydFZlcnNlKSB7XG4gICAgICAgICAgc3ViUmVmICs9IGAtJHtsYXN0VmVyc2V9YFxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcXVvdGVNYXRjaGVzID0gZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmKHtcbiAgICAgICAgICBib29rT2JqZWN0OiBvcmlnaW5hbFZlcnNlcyxcbiAgICAgICAgICByZWY6IHN1YlJlZixcbiAgICAgICAgICBxdW90ZTogc2VsZWN0ZWRRdW90ZT8ucXVvdGUsXG4gICAgICAgICAgb2NjdXJyZW5jZTogc2VsZWN0ZWRRdW90ZT8ub2NjdXJyZW5jZSxcbiAgICAgICAgfSlcblxuICAgICAgICBjb25zdCBzZWxlY3Rpb25zID0gbmV3IE1hcCgpXG5cbiAgICAgICAgaWYgKHF1b3RlTWF0Y2hlcz8uc2l6ZSkge1xuICAgICAgICAgIHF1b3RlTWF0Y2hlcy5mb3JFYWNoKCh3b3Jkcywga2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBfa2V5ID0gc3Vic3RpdHV0ZVtrZXldXG5cbiAgICAgICAgICAgIHNlbGVjdGlvbnMuc2V0KF9rZXksIHdvcmRzLm1hcCh3b3JkID0+IChcbiAgICAgICAgICAgICAgeyAuLi53b3JkLCB0ZXh0OiBjb3JlLm5vcm1hbGl6ZVN0cmluZyh3b3JkLnRleHQpIH1cbiAgICAgICAgICAgICkpKVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgbmV3U2VsZWN0aW9ucyA9IHNlbGVjdGlvbnNcbiAgICAgICAgbmV3U2VsZWN0ZWRRdW90ZSA9IHNlbGVjdGVkUXVvdGVcbiAgICAgICAgdXBkYXRlU2VsZWN0aW9ucyA9IHRydWVcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBuZXdTdGF0ZTogYW55ID0ge31cblxuICAgIC8vIHVwZGF0ZSBzdGF0ZXMgdGhhdCBoYXZlIGNoYW5nZWRcbiAgICBpZiAoIWFyZU1hcHNUaGVTYW1lKHZlcnNlT2JqZWN0c01hcCwgX21hcCkpIHtcbiAgICAgIG5ld1N0YXRlLnZlcnNlT2JqZWN0c01hcCA9IF9tYXBcbiAgICB9XG5cbiAgICBjb25zdCBib29rc05vdFNhbWUgPSByZWZlcmVuY2U/LnByb2plY3RJZCAhPT0gY3VycmVudFJlZmVyZW5jZT8ucHJvamVjdElkXG5cbiAgICBpZiAoYm9va3NOb3RTYW1lIHx8ICFhcmVWZXJzZXNTYW1lKHZlcnNlc0ZvclJlZiwgX3ZlcnNlc0ZvclJlZikpIHtcbiAgICAgIG5ld1N0YXRlLnZlcnNlc0ZvclJlZiA9IF92ZXJzZXNGb3JSZWZcbiAgICAgIG5ld1N0YXRlLmxhc3RTZWxlY3RlZFF1b3RlID0gbmV3U2VsZWN0ZWRRdW90ZVxuICAgICAgbmV3U3RhdGUuc2VsZWN0aW9ucyA9IG5ld1NlbGVjdGlvbnNcbiAgICB9XG5cbiAgICBpZiAobmV3U2VsZWN0ZWRRdW90ZSkge1xuICAgICAgbmV3U3RhdGUubGFzdFNlbGVjdGVkUXVvdGUgPSBuZXdTZWxlY3RlZFF1b3RlXG4gICAgfVxuXG4gICAgaWYgKHVwZGF0ZVNlbGVjdGlvbnMpIHtcbiAgICAgIGlmICghYXJlTWFwc1RoZVNhbWUoc2VsZWN0aW9ucyB8fCAobmV3IE1hcCgpKSwgbmV3U2VsZWN0aW9ucykpIHtcbiAgICAgICAgbmV3U3RhdGUuc2VsZWN0aW9ucyA9IG5ld1NlbGVjdGlvbnNcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoT2JqZWN0LmtleXMobmV3U3RhdGUpLmxlbmd0aCkge1xuICAgICAgc2V0U3RhdGUobmV3U3RhdGUpXG4gICAgfVxuICB9LCBbXG4gICAgb3duZXIsXG4gICAgcmVzb3VyY2VJZCxcbiAgICBib29rSWQsXG4gICAgbGFuZ3VhZ2VJZF8sXG4gICAgc2NyaXB0dXJlQ29uZmlnPy52ZXJzZXNGb3JSZWYsXG4gICAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyxcbiAgICBzZWxlY3RlZFF1b3RlLFxuICBdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIGNsZWFyIHNldHRpbmdzIG9uIHZlcnNlIGNoYW5nZVxuICAgIHNldFN0YXRlKHtcbiAgICAgIHZlcnNlc0FsaWdubWVudFN0YXR1czogbnVsbCxcbiAgICAgIHVuc2F2ZWRDaGFuZ2VzTGlzdDoge30sXG4gICAgICBoYXZlVW5zYXZlZENoYW5nZXM6IGZhbHNlLFxuICAgIH0pXG4gIH0sIFtfcmVmZXJlbmNlXSlcblxuICBjb25zdCB1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXMgPSAocmVmZXJlbmNlLCBhbGlnbmVkKSA9PiB7XG4gICAgc2V0U3RhdGVfKHByZXZTdGF0ZSA9PiAoe1xuICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzOiB7IC4uLnByZXZTdGF0ZS52ZXJzZXNBbGlnbm1lbnRTdGF0dXMsIFtgJHtyZWZlcmVuY2UuY2hhcHRlcn06JHtyZWZlcmVuY2UudmVyc2V9YF06IGFsaWduZWQgfSxcbiAgICB9KSlcbiAgfVxuXG4gIGxldCBfdmVyc2VzRm9yUmVmID0gc2NyaXB0dXJlQ29uZmlnPy52ZXJzZXNGb3JSZWZcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChfdmVyc2VzRm9yUmVmPy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHsgcmVmZXJlbmNlLCByZXNvdXJjZUxpbmsgfSA9IHNjcmlwdHVyZUNvbmZpZyB8fCB7fVxuICAgICAgY29uc29sZS5sb2coYFNjcmlwdHVyZUNhcmQuX3ZlcnNlc0ZvclJlZiBjaGFuZ2VkYCwgeyByZWZlcmVuY2UsIHJlc291cmNlTGluayB9KVxuICAgIH1cbiAgfSwgW192ZXJzZXNGb3JSZWZdKVxuXG4gIGlmICghX3ZlcnNlc0ZvclJlZj8ubGVuZ3RoKSB7IC8vIGlmIGVtcHR5IG9mIHJlZmVyZW5jZXMsIGNyZWF0ZSBzaW5nbGUgZW1wdHkgcmVmZXJlbmNlXG4gICAgX3ZlcnNlc0ZvclJlZiA9IFt7IC4uLnJlZmVyZW5jZSB9XVxuICB9XG5cbiAgY29uc3QgcmVuZGVyZWRTY3JpcHR1cmVQYW5lcyA9IF92ZXJzZXNGb3JSZWY/Lm1hcCgoX2N1cnJlbnRWZXJzZURhdGEsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgaW5pdGlhbFZlcnNlT2JqZWN0cyA9IF9jdXJyZW50VmVyc2VEYXRhPy52ZXJzZURhdGE/LnZlcnNlT2JqZWN0cyB8fCBbXVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCB7IGNoYXB0ZXIsIHZlcnNlIH0gPSBfY3VycmVudFZlcnNlRGF0YSB8fCB7fVxuICAgIGNvbnN0IHByb2plY3RJZCA9IGN1cnJlbnRSZWZlcmVuY2U/LnByb2plY3RJZCB8fCByZWZlcmVuY2U/LnByb2plY3RJZFxuICAgIGNvbnN0IF9yZWZlcmVuY2UgPSB7XG4gICAgICAuLi5fdmVyc2VzRm9yUmVmLFxuICAgICAgY2hhcHRlcixcbiAgICAgIHByb2plY3RJZCxcbiAgICAgIHZlcnNlLFxuICAgIH1cbiAgICBjb25zdCBfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyA9IHtcbiAgICAgIC4uLnNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcsXG4gICAgICBjdXJyZW50SW5kZXg6IGluZGV4LFxuICAgICAgaW5pdGlhbFZlcnNlT2JqZWN0cyxcbiAgICAgIHJlZmVyZW5jZTogX3JlZmVyZW5jZSxcbiAgICAgIGlzTmV3VGVzdGFtZW50LFxuICAgIH1cblxuICAgIGxldCBpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQgPSBmYWxzZVxuXG4gICAgaWYgKHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQpIHtcbiAgICAgIGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCA9IHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQuY2hhcHRlciA9PSBjaGFwdGVyICYmIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQudmVyc2UgPT0gdmVyc2VcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFNjcmlwdHVyZVBhbmVcbiAgICAgICAgey4uLnNjcmlwdHVyZUNvbmZpZ31cbiAgICAgICAgY29udGVudFN0eWxlPXtjb250ZW50U3R5bGV9XG4gICAgICAgIGN1cnJlbnRJbmRleD17aW5kZXh9XG4gICAgICAgIGRldGVybWluaW5nQnJhbmNoPXshcmVhZHlGb3JGZXRjaH1cbiAgICAgICAgZGlyZWN0aW9uPXtkaXJlY3Rpb259XG4gICAgICAgIGRpc2FibGVXb3JkUG9wb3Zlcj17ZGlzYWJsZVdvcmRQb3BvdmVyX31cbiAgICAgICAgZm9udFNpemU9e2ZvbnRTaXplfVxuICAgICAgICBnZXRMZXhpY29uRGF0YT17Z2V0TGV4aWNvbkRhdGF9XG4gICAgICAgIGlzTlQ9e2lzTlRffVxuICAgICAgICBpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ9e2lzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudH1cbiAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgb25BbGlnbm1lbnRGaW5pc2g9eygpID0+IHNldFN0YXRlKHsgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogbnVsbCB9KX1cbiAgICAgICAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cz17b3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0c31cbiAgICAgICAgcmVmU3R5bGU9e3JlZlN0eWxlfVxuICAgICAgICByZWZlcmVuY2U9e19yZWZlcmVuY2V9XG4gICAgICAgIHNhdmluZz17c3RhcnRTYXZlfVxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWc9e19zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnfVxuICAgICAgICBzZXRXb3JkQWxpZ25lclN0YXR1cz17c2V0V29yZEFsaWduZXJTdGF0dXN9XG4gICAgICAgIHNlcnZlcj17c2VydmVyfVxuICAgICAgICB0cmFuc2xhdGU9e3RyYW5zbGF0ZX1cbiAgICAgICAgdXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzPXt1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXN9XG4gICAgICAvPlxuICAgIClcbiAgfSlcblxuICBjb25zdCBoYW5kbGVBbGlnbkJ1dHRvbkNsaWNrID0gKCkgPT4ge1xuICAgIGlmICh2ZXJzZXNGb3JSZWY/Lmxlbmd0aCA+IDEpIHtcbiAgICAgIHNldFN0YXRlKHsgc2hvd0FsaWdubWVudFBvcHVwOiB0cnVlIH0pXG4gICAgfSBlbHNlIGlmICh2ZXJzZXNGb3JSZWY/Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgc2V0U3RhdGUoeyB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiB2ZXJzZXNGb3JSZWZbMF0gfSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBvblJlbmRlclRvb2xiYXIgPSAoeyBpdGVtcyB9KSA9PiB7XG4gICAgY29uc3QgbmV3SXRlbXMgPSBbLi4uaXRlbXNdXG5cbiAgICBsZXQgYWxsVmVyc2VzQWxpZ25lZCA9IGZhbHNlXG5cbiAgICAvLyBDaGVjayBpZiBhbGwgdmFsdWVzIGluIHZlcnNlc0FsaWdubWVudFN0YXR1cyBhcmUgdHJ1ZVxuICAgIGlmICh2ZXJzZXNBbGlnbm1lbnRTdGF0dXMpIHtcbiAgICAgIGFsbFZlcnNlc0FsaWduZWQgPSBPYmplY3QudmFsdWVzKHZlcnNlc0FsaWdubWVudFN0YXR1cykuZXZlcnkoYWxpZ25TdGF0dXMgPT4gYWxpZ25TdGF0dXMgPT09IHRydWUpXG4gICAgfVxuXG4gICAgbGV0IGFsaWduSWNvbiA9IG51bGxcbiAgICBsZXQgYWxpZ25CdXR0b25UZXh0ID0gJydcblxuICAgIGlmIChhbGxWZXJzZXNBbGlnbmVkKSB7XG4gICAgICBhbGlnbkljb24gPSA8UnhMaW5rMiBpZD17YHZhbGlkX2ljb25fJHtyZXNvdXJjZUlkfWB9IGNvbG9yPScjQkJCJyAvPlxuICAgICAgYWxpZ25CdXR0b25UZXh0ID0gJ0FsaWdubWVudCBpcyBWYWxpZCdcbiAgICB9IGVsc2Uge1xuICAgICAgYWxpZ25JY29uID0gPFJ4TGlua0JyZWFrMiBpZD17YGludmFsaWRfYWxpZ25tZW50X2ljb25fJHtyZXNvdXJjZUlkfWB9IGNvbG9yPScjMDAwJyAvPlxuICAgICAgYWxpZ25CdXR0b25UZXh0ID0gJ0FsaWdubWVudCBpcyBJbnZhbGlkJ1xuICAgIH1cblxuICAgIGlmIChzZXRXb3JkQWxpZ25lclN0YXR1cyAmJiByZXNvdXJjZUlkICE9PSAnT1JJR0lOQUxfU09VUkNFJykge1xuICAgICAgbmV3SXRlbXMucHVzaChcbiAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICBpZD17YGFsaWdubWVudF9pY29uXyR7cmVzb3VyY2VJZH1gfVxuICAgICAgICAgIGtleT0nY2hlY2tpbmctYnV0dG9uJ1xuICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUFsaWduQnV0dG9uQ2xpY2t9XG4gICAgICAgICAgdGl0bGU9e2FsaWduQnV0dG9uVGV4dH1cbiAgICAgICAgICBhcmlhLWxhYmVsPXthbGlnbkJ1dHRvblRleHR9XG4gICAgICAgICAgc3R5bGU9e3sgY3Vyc29yOiAncG9pbnRlcicgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHthbGlnbkljb259XG4gICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgIClcbiAgICB9XG5cbiAgICBuZXdJdGVtcy5wdXNoKFxuICAgICAgPD5cbiAgICAgICAgPFVwZGF0ZUJyYW5jaEJ1dHRvbiB7Li4udXBkYXRlQnV0dG9uUHJvcHN9IGlzTG9hZGluZz17aXNVcGRhdGVMb2FkaW5nIHx8IHN0YXJ0U2F2ZX0vPlxuICAgICAgICA8RXJyb3JEaWFsb2cgdGl0bGU9e2RpYWxvZ1RpdGxlfSBjb250ZW50PXtkaWFsb2dNZXNzYWdlfSBvcGVuPXtpc0Vycm9yRGlhbG9nT3Blbn0gb25DbG9zZT17b25DbG9zZUVycm9yRGlhbG9nfSBpc0xvYWRpbmc9eyBpc1VwZGF0ZUxvYWRpbmcgfHwgc3RhcnRTYXZlIH0gbGluaz17ZGlhbG9nTGlua30gbGlua1Rvb2x0aXA9e2RpYWxvZ0xpbmtUb29sdGlwfSAvPlxuICAgICAgPC8+XG4gICAgKVxuXG4gICAgcmV0dXJuIG5ld0l0ZW1zXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyXG4gICAgICBzZWxlY3Rpb25zPXtzZWxlY3Rpb25zfVxuICAgICAgb25TZWxlY3Rpb25zPXtuZXdTZWxlY3Rpb25zID0+IHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ29uU2VsZWN0aW9ucycsIG5ld1NlbGVjdGlvbnMpXG4gICAgICB9fVxuICAgICAgcXVvdGU9e3NlbGVjdGVkUXVvdGU/LnF1b3RlfVxuICAgICAgb2NjdXJyZW5jZT17Zml4T2NjdXJyZW5jZShzZWxlY3RlZFF1b3RlPy5vY2N1cnJlbmNlKX1cbiAgICAgIHZlcnNlT2JqZWN0c01hcD17dmVyc2VPYmplY3RzTWFwfVxuICAgID5cbiAgICAgIDxDYXJkXG4gICAgICAgIGlkPXtgc2NyaXB0dXJlX2NhcmRfJHtjYXJkTnVtfWB9XG4gICAgICAgIHRpdGxlPXtzY3JpcHR1cmVMYWJlbH1cbiAgICAgICAgc2V0dGluZ3NUaXRsZT17c2NyaXB0dXJlVGl0bGUgKyAnIFNldHRpbmdzJ31cbiAgICAgICAgaXRlbXM9e2l0ZW1zfVxuICAgICAgICBjbGFzc2VzPXtjbGFzc2VzfVxuICAgICAgICBoZWFkZXJzPXtoZWFkZXJzfVxuICAgICAgICBmaWx0ZXJzPXtmaWx0ZXJzfVxuICAgICAgICBmb250U2l6ZT17Zm9udFNpemV9XG4gICAgICAgIGl0ZW1JbmRleD17aXRlbUluZGV4fVxuICAgICAgICBzZXRGaWx0ZXJzPXtzZXRGaWx0ZXJzfVxuICAgICAgICBzZXRGb250U2l6ZT17c2V0Rm9udFNpemV9XG4gICAgICAgIHNldEl0ZW1JbmRleD17c2V0SXRlbUluZGV4fVxuICAgICAgICBtYXJrZG93blZpZXc9e21hcmtkb3duVmlld31cbiAgICAgICAgc2V0TWFya2Rvd25WaWV3PXtzZXRNYXJrZG93blZpZXd9XG4gICAgICAgIGdldEN1c3RvbUNvbXBvbmVudD17Z2V0U2NyaXB0dXJlU2VsZWN0b3J9XG4gICAgICAgIGhpZGVNYXJrZG93blRvZ2dsZVxuICAgICAgICBvbk1lbnVDbG9zZT17b25NZW51Q2xvc2V9XG4gICAgICAgIG9uTWluaW1pemU9e29uTWluaW1pemUgPyAoKSA9PiBvbk1pbmltaXplKGlkLCBzY3JpcHR1cmVUaXRsZSkgOiBudWxsfVxuICAgICAgICBlZGl0YWJsZT17ZW5hYmxlRWRpdCB8fCBlbmFibGVBbGlnbm1lbnR9XG4gICAgICAgIHNhdmVkPXtzdGFydFNhdmUgfHwgIWhhdmVVbnNhdmVkQ2hhbmdlc31cbiAgICAgICAgb25TYXZlRWRpdD17KCkgPT4gc2V0U3RhdGUoeyBzYXZlQ2xpY2tlZDogdHJ1ZSB9KX1cbiAgICAgICAgb25SZW5kZXJUb29sYmFyPXtvblJlbmRlclRvb2xiYXJ9XG4gICAgICA+XG4gICAgICAgIDxkaXYgaWQ9XCJzY3JpcHR1cmUtcGFuZS1saXN0XCI+XG4gICAgICAgICAge3JlbmRlcmVkU2NyaXB0dXJlUGFuZXN9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9DYXJkPlxuICAgICAgPFZlcnNlU2VsZWN0b3JQb3B1cFxuICAgICAgICByZXNvdXJjZUlkPXtyZXNvdXJjZUlkfVxuICAgICAgICBvcGVuPXtzaG93QWxpZ25tZW50UG9wdXB9XG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFN0YXRlKHsgc2hvd0FsaWdubWVudFBvcHVwOiBmYWxzZSB9KX1cbiAgICAgICAgdmVyc2VzRm9yUmVmPXt2ZXJzZXNGb3JSZWZ9XG4gICAgICAgIHZlcnNlc0FsaWdubWVudFN0YXR1cz17dmVyc2VzQWxpZ25tZW50U3RhdHVzfVxuICAgICAgICBvblZlcnNlU2VsZWN0PXsodmVyc2UpID0+IHNldFN0YXRlKHtcbiAgICAgICAgICB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiB2ZXJzZSxcbiAgICAgICAgICBzaG93QWxpZ25tZW50UG9wdXA6IGZhbHNlLFxuICAgICAgICB9KX1cbiAgICAgIC8+XG4gICAgPC9TZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyPlxuICApXG59XG5cblNjcmlwdHVyZUNhcmQucHJvcFR5cGVzID0ge1xuICAvKiogcmVwbyBicmFuY2ggb3IgdGFnIHN1Y2ggYXMgbWFzdGVyICovXG4gIGFwcFJlZjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogYXV0aGVudGljYXRpb24gaW5mbyAqL1xuICBhdXRoZW50aWNhdGlvbjogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIGluZGV4IGZvciBjdXJyZW50IGJvb2sgKGUuZy4gJzAxJyBmb3IgJ2dlbicpKi9cbiAgYm9va0luZGV4OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogc2NyaXB0dXJlIGNhcmQgbnVtYmVyICgwIHRvIDIgZm9yIGV4YW1wbGUpICovXG4gIGNhcmROdW06IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgLyoqIENTUyBjbGFzc2VzICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBpZiB0cnVlIHRoZW4gd29yZCBkYXRhIGhvdmVyIGlzIHNob3duICovXG4gIGRpc2FibGVXb3JkUG9wb3ZlcjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKiBnZXQgbGFuZ3VhZ2UgZGV0YWlscyAqL1xuICBnZXRMYW5ndWFnZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgLyoqIGZ1bmN0aW9uIHRvIGdldCBsYXRlc3QgbGV4aWNvbiBkYXRhICovXG4gIGdldExleGljb25EYXRhOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIG9wdGlvbmFsIHVybCBmb3IgZ3JlZWsgcmVwbyAqL1xuICBncmVla1JlcG9Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBvcHRpb25hbCB1cmwgZm9yIGhlYnJldyByZXBvICovXG4gIGhlYnJld1JlcG9Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBvcHRpb25hbCBodHRwIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciBmZXRjaGluZyByZXNvdXJjZXMsIGRlZmF1bHQgaXMgMCAodmVyeSBsb25nIHdhaXQpICovXG4gIGh0dHBDb25maWc6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBodG1sIGlkZW50aWZpZXIgdG8gdXNlIGZvciBjYXJkICovXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogbWV0aG9kIHRvIGRldGVybWluZSBpZiBOVCBvciBPVCAqL1xuICBpc05UOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAvKiogdXNlci1uYW1lICovXG4gIGxvZ2dlZEluVXNlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIGZ1bmN0aW9uIHRvIG1pbmltaXplIHRoZSBjYXJkIChvcHRpb25hbCkgKi9cbiAgb25NaW5pbWl6ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBvcHRpb25hbCBjYWxsYmFjayBpZiBlcnJvciBsb2FkaW5nIHJlc291cmNlLCBwYXJhbWV0ZXIgcmV0dXJuZWQgYXJlOlxuICAgKiAgICAoe3N0cmluZ30gZXJyb3JNZXNzYWdlLCB7Ym9vbGVhbn0gaXNBY2Nlc3NFcnJvciwge29iamVjdH0gcmVzb3VyY2VTdGF0dXMpXG4gICAqICAgICAgLSBpc0FjY2Vzc0Vycm9yIC0gaXMgdHJ1ZSBpZiB0aGlzIHdhcyBhbiBlcnJvciB0cnlpbmcgdG8gYWNjZXNzIGZpbGVcbiAgICogICAgICAtIHJlc291cmNlU3RhdHVzIC0gaXMgb2JqZWN0IGNvbnRhaW5pbmcgZGV0YWlscyBhYm91dCBwcm9ibGVtcyBmZXRjaGluZyByZXNvdXJjZSAqL1xuICBvblJlc291cmNlRXJyb3I6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogdGhlIG9yaWdpbmFsIHNjcmlwdHVyZSBib29rT2JqZWN0cyBmb3IgY3VycmVudCBib29rICovXG4gIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM6IFByb3BUeXBlcy5vYmplY3QsXG4gIHJlZmVyZW5jZTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAvKiogcHJvamVjdElkIChib29rSUQpIHRvIHVzZSAqL1xuICAgIHByb2plY3RJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiBjdXJyZW50IGNoYXB0ZXIgbnVtYmVyICovXG4gICAgY2hhcHRlcjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLmlzUmVxdWlyZWQsXG4gICAgLyoqIGN1cnJlbnQgdmVyc2UgbnVtYmVyICovXG4gICAgdmVyc2U6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKS5pc1JlcXVpcmVkLFxuICB9KSxcbiAgLyoqIHJlc291cmNlIG9iamVjdCAqL1xuICByZXNvdXJjZTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAvKiogcmVzb3VyY2UgbGFuZ3VhZ2UgdG8gdXNlICovXG4gICAgbGFuZ3VhZ2VJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiByZXBvIG93bmVyIHN1Y2ggYXMgdW5mb2xkaW5nV29yZCAqL1xuICAgIG93bmVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIHJlc291cmNlSWQgdG8gdXNlIChlLmcuIHVnbnQpICovXG4gICAgcmVzb3VyY2VJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiByZXBvIG93bmVyIGZvciBvcmlnaW5hbCBsYW5ndWFnZXMgc3VjaCBhcyB1bmZvbGRpbmdXb3JkICovXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIH0pLFxuICAvKiogcmVzb3VyY2VMaW5rICovXG4gIHJlc291cmNlTGluazogUHJvcFR5cGVzLmFueSxcbiAgLyoqVGhpcyBpcyBjdXJyZW50bHkgc2VsZWN0ZWQgcXVvdGUgKi9cbiAgc2VsZWN0ZWRRdW90ZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIHNlcnZlciAoZS5nLiAnaHR0cHM6Ly9naXQuZG9vcjQzLm9yZycpICovXG4gIHNlcnZlcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogY2FsbGJhY2sgdG8gdXBkYXRlIGxvYWRpbmcgc3RhdGUgKi9cbiAgc2V0QXJlUmVzb3VyY2VzTG9hZGluZzogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byB1cGRhdGUgc2F2aW5nIHN0YXRlKi9cbiAgc2V0QXJlUmVzb3VyY2VzU2F2aW5nOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHJlcG9ydCBjYXJkIG1lcmdlIHN0YXR1cyAqL1xuICBzZXRDYXJkc0xvYWRpbmdNZXJnZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byByZXBvcnQgY2FyZCB1cGRhdGUgc3RhdHVzICovXG4gIHNldENhcmRzTG9hZGluZ1VwZGF0ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byByZXBvcnQgY2FyZCBzYXZpbmcgc3RhdHVzICovXG4gIHNldENhcmRzU2F2aW5nOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGZ1bmN0aW9uIHRvIHNldCBzdGF0ZSBpbiBhcHAgdGhhdCB0aGVyZSBhcmUgdW5zYXZlZCBjaGFuZ2VzICovXG4gIHNldFNhdmVkQ2hhbmdlczogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byB1cGRhdGUgd29yZCBhbGlnbmVyIHN0YXRlICovXG4gIHNldFdvcmRBbGlnbmVyU3RhdHVzOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIHRpdGxlIGZvciBzY3JpcHR1cmUgY2FyZCAqL1xuICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogb3B0aW9uYWwgZnVuY3Rpb24gZm9yIGxvY2FsaXphdGlvbiAqL1xuICB0cmFuc2xhdGU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogY2FsbGJhY2sgdG8gdXBkYXRlIHRoZSBjYXJkJ3MgbWVyZ2Ugc3RhdGUgaW4gYXBwICovXG4gIHVwZGF0ZU1lcmdlU3RhdGU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogdXNlIG1ldGhvZCBmb3IgdXNpbmcgbG9jYWwgc3RvcmFnZSBzcGVjaWZpYyBmb3IgdXNlciAqL1xuICB1c2VVc2VyTG9jYWxTdG9yYWdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxufVxuIl19
@@ -29,6 +29,7 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
29
29
  import { useEffect, useState } from 'react';
30
30
  import { core, useRsrc } from 'scripture-resources-rcl';
31
31
  import { CONTENT_NOT_FOUND_ERROR, ERROR_STATE, INITIALIZED_STATE, INVALID_MANIFEST_ERROR, LOADING_STATE, MANIFEST_NOT_LOADED_ERROR, SCRIPTURE_NOT_LOADED_ERROR } from 'translation-helps-rcl';
32
+ import useDeepCompareEffect from 'use-deep-compare-effect';
32
33
  import { getVerses } from 'bible-reference-range';
33
34
  import * as isEqual from 'deep-equal';
34
35
  import { cleanupVerseObjects, getResourceLink } from '../utils/ScriptureSettings';
@@ -232,7 +233,7 @@ export function useScripture(_ref) {
232
233
  loadingContent = resourceState.loadingContent,
233
234
  matchedVerse = resourceState.matchedVerse,
234
235
  resource = resourceState.resource;
235
- useEffect(function () {
236
+ useDeepCompareEffect(function () {
236
237
  // validate response to make sure from latest request
237
238
  if (readyForFetch) {
238
239
  var currentResourceState = _resourceResults === null || _resourceResults === void 0 ? void 0 : _resourceResults.state;
@@ -496,4 +497,4 @@ export function useScripture(_ref) {
496
497
  versesForRef: versesForRef
497
498
  };
498
499
  }
499
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VTY3JpcHR1cmUudHN4Il0sIm5hbWVzIjpbInVzZUVmZmVjdCIsInVzZVN0YXRlIiwiY29yZSIsInVzZVJzcmMiLCJDT05URU5UX05PVF9GT1VORF9FUlJPUiIsIkVSUk9SX1NUQVRFIiwiSU5JVElBTElaRURfU1RBVEUiLCJJTlZBTElEX01BTklGRVNUX0VSUk9SIiwiTE9BRElOR19TVEFURSIsIk1BTklGRVNUX05PVF9MT0FERURfRVJST1IiLCJTQ1JJUFRVUkVfTk9UX0xPQURFRF9FUlJPUiIsImdldFZlcnNlcyIsImlzRXF1YWwiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwiZ2V0UmVzb3VyY2VMaW5rIiwiU2VydmVyQ29uZmlnIiwiU2NyaXB0dXJlUmVzb3VyY2UiLCJTY3JpcHR1cmVSZWZlcmVuY2UiLCJwYXJzZVJlc291cmNlTWFuaWZlc3QiLCJnZXRCcmFuY2hOYW1lIiwicmVzb3VyY2VMaW5rIiwiYnJhbmNoIiwicGFydHMiLCJzcGxpdCIsImxlbmd0aCIsIl9wYXJ0cyIsImdldFZlcnNlc0ZvclJlZlN0ciIsInJlZlN0ciIsImJvb2tPYmplY3RzIiwibGFuZ3VhZ2VJZCIsInZlcnNlcyIsImNoYXB0ZXJzIiwibWFwIiwidmVyc2UiLCJ2ZXJzZURhdGEiLCJ2ZXJzZU9iamVjdHMiLCJ2ZXJzZU9iamVjdHNfIiwib2NjdXJyZW5jZUluamVjdFZlcnNlT2JqZWN0cyIsImdldFZlcnNlc0ZvclJlZiIsInJlZmVyZW5jZSIsImNoYXB0ZXIiLCJ1c2VTY3JpcHR1cmUiLCJjb25maWciLCJyZWFkeUZvckZldGNoIiwicmVzb3VyY2VfIiwicmVzb3VyY2UiLCJyZXNvdXJjZUxpbmtfIiwid2hvbGVCb29rIiwiYmlibGVVc2ZtIiwiZmV0Y2hlZEJvb2siLCJmZXRjaFBhcmFtcyIsImlnbm9yZVNoYSIsImluaXRpYWxpemVkIiwiZmV0Y2hlZCIsInJlc291cmNlU3RhdGUiLCJiaWJsZUpzb24iLCJtYXRjaGVkVmVyc2UiLCJjb250ZW50IiwibG9hZGluZ1Jlc291cmNlIiwibG9hZGluZ0NvbnRlbnQiLCJmZXRjaFJlc3BvbnNlIiwidmVyc2VzRm9yUmVmIiwic3RhdGUiLCJzZXRTdGF0ZV8iLCJfYm9va0lkIiwicHJvamVjdElkIiwic2V0U3RhdGUiLCJuZXdTdGF0ZSIsInByZXZTdGF0ZSIsImNvbnNvbGUiLCJsb2ciLCJvd25lciIsInJlZiIsInJlZl8iLCJyZXNvdXJjZUlkIiwiYm9va1JlZiIsIm5ld0ZldGNoUGFyYW1zIiwib3B0aW9ucyIsImdldEJpYmxlSnNvbiIsIl9yZXNvdXJjZVJlc3VsdHMiLCJjdXJyZW50UmVzb3VyY2VTdGF0ZSIsInNhbWVCb29rIiwiZXhwZWN0ZWRCb29rSWQiLCJuYW1lIiwiZXh0IiwidG9Mb3dlckNhc2UiLCJpbmNsdWRlcyIsInNoYSIsImRhdGEiLCJ1cmwiLCJmZXRjaGVkQnJhbmNoIiwiZmV0Y2hpbmdCcmFuY2giLCJnZXRSZXNwb25zZURhdGEiLCJ1cGRhdGVWZXJzZXNGb3JSZWYiLCJ0aXRsZSIsInZlcnNpb24iLCJsb2FkaW5nIiwiY29udGVudE5vdEZvdW5kRXJyb3IiLCJzY3JpcHR1cmVOb3RMb2FkZWRFcnJvciIsIm1hbmlmZXN0Tm90Rm91bmRFcnJvciIsIm1hbmlmZXN0IiwiaW52YWxpZE1hbmlmZXN0RXJyb3IiLCJlcnJvciIsInJlc291cmNlU3RhdHVzIiwiaW50aWFsaXplZCIsIl9nZXRWZXJzZXNGb3JSZWYiLCJjb250ZW50XyIsInVwZGF0ZVZlcnNlIiwiYm9va09iamVjdHNfIiwiX2Jvb2tPYmplY3RzIiwibmV3VmVyc2VzRm9yUmVmIiwicmVsb2FkUmVzb3VyY2UiLCJfcmVsb2FkUmVzb3VyY2UiLCJhY3Rpb25zIiwiY3VycmVudEJvb2tSZWYiLCJmZXRjaGVkQm9va1NhbWUiLCJfdmVyc2VzRm9yUmVmIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBLFNBQ0VBLFNBREYsRUFFRUMsUUFGRixRQUdPLE9BSFA7QUFJQSxT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QUFMLEVBQXNCLENBQ3BCO0FBQ0E7QUFDQTtBQUNELEtBSkQsTUFJTztBQUNMLFVBQU1OLFlBQVksR0FBR00sZUFBZSxHQUFHdkYsV0FBSCxHQUFpQixJQUFyRDs7QUFDQXdGLE1BQUFBLGFBQWEsR0FBR3ZCLGtCQUFrQixDQUFDZ0IsWUFBRCxDQUFsQyxDQUZLLENBR0w7QUFDRDs7QUFFRCxRQUFJLENBQUNqRyxPQUFPLENBQUN3RyxhQUFELEVBQWdCdkQsWUFBaEIsQ0FBWixFQUEyQztBQUN6Q0ssTUFBQUEsUUFBUSxDQUFDO0FBQUVMLFFBQUFBLFlBQVksRUFBRXVEO0FBQWhCLE9BQUQsQ0FBUjtBQUNEO0FBQ0YsR0FsQlEsRUFrQk4sQ0FBQzdFLFNBQUQsQ0FsQk0sQ0FBVDtBQW9CQSxTQUFPO0FBQ0xTLElBQUFBLFNBQVMsRUFBVEEsU0FESztBQUVMcEIsSUFBQUEsV0FBVyxFQUFYQSxXQUZLO0FBR0xnQyxJQUFBQSxhQUFhLEVBQWJBLGFBSEs7QUFJTHRCLElBQUFBLGVBQWUsRUFBRW1FLGdCQUpaO0FBS0xqRCxJQUFBQSxZQUFZLEVBQVpBLFlBTEs7QUFNTGpCLElBQUFBLFNBQVMsRUFBRVcsV0FBRixhQUFFQSxXQUFGLHVCQUFFQSxXQUFXLENBQUVYLFNBTm5CO0FBT0x3RSxJQUFBQSxjQUFjLEVBQWRBLGNBUEs7QUFRTDNGLElBQUFBLFlBQVksRUFBRThCLFdBQUYsYUFBRUEsV0FBRix1QkFBRUEsV0FBVyxDQUFFOUIsWUFSdEI7QUFTTG1GLElBQUFBLGNBQWMsRUFBZEEsY0FUSztBQVVMVCxJQUFBQSxLQUFLLEVBQUxBLEtBVks7QUFXTGEsSUFBQUEsV0FBVyxFQUFYQSxXQVhLO0FBWUxaLElBQUFBLE9BQU8sRUFBUEEsT0FaSztBQWFMbEMsSUFBQUEsWUFBWSxFQUFaQTtBQWJLLEdBQVA7QUFlRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7XG4gIHVzZUVmZmVjdCxcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtcbiAgY29yZSxcbiAgdXNlUnNyYyxcbn0gZnJvbSAnc2NyaXB0dXJlLXJlc291cmNlcy1yY2wnXG5pbXBvcnQge1xuICBDT05URU5UX05PVF9GT1VORF9FUlJPUixcbiAgRVJST1JfU1RBVEUsXG4gIElOSVRJQUxJWkVEX1NUQVRFLFxuICBJTlZBTElEX01BTklGRVNUX0VSUk9SLFxuICBMT0FESU5HX1NUQVRFLFxuICBNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SLFxuICBTQ1JJUFRVUkVfTk9UX0xPQURFRF9FUlJPUixcbn0gZnJvbSAndHJhbnNsYXRpb24taGVscHMtcmNsJ1xuaW1wb3J0IHsgZ2V0VmVyc2VzIH0gZnJvbSAnYmlibGUtcmVmZXJlbmNlLXJhbmdlJ1xuaW1wb3J0ICogYXMgaXNFcXVhbCBmcm9tICdkZWVwLWVxdWFsJ1xuaW1wb3J0IHsgY2xlYW51cFZlcnNlT2JqZWN0cywgZ2V0UmVzb3VyY2VMaW5rIH0gZnJvbSAnLi4vdXRpbHMvU2NyaXB0dXJlU2V0dGluZ3MnXG5pbXBvcnQge1xuICBTZXJ2ZXJDb25maWcsXG4gIFNjcmlwdHVyZVJlc291cmNlLFxuICBTY3JpcHR1cmVSZWZlcmVuY2UsXG59IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgcGFyc2VSZXNvdXJjZU1hbmlmZXN0IH0gZnJvbSAnLi9wYXJzZVJlc291cmNlTWFuaWZlc3QnXG5cbmludGVyZmFjZSBQcm9wcyB7XG4gIC8qKiByZWZlcmVuY2UgZm9yIHNjcmlwdHVyZSAqKi9cbiAgcmVmZXJlbmNlOiBTY3JpcHR1cmVSZWZlcmVuY2U7XG4gIC8qKiB3aGVyZSB0byBnZXQgZGF0YSAqKi9cbiAgY29uZmlnOiBTZXJ2ZXJDb25maWc7XG4gIC8qKiBvcHRpb25hbCBkaXJlY3QgcGF0aCB0byBiaWJsZSByZXNvdXJjZSwgaW4gZm9ybWF0ICR7b3duZXJ9LyR7bGFuZ3VhZ2VJZH0vJHtwcm9qZWN0SWR9LyR7YnJhbmNofSAqKi9cbiAgcmVzb3VyY2VMaW5rOiBzdHJpbmd8dW5kZWZpbmVkO1xuICAvKiogb3B0aW9uYWwgcmVzb3VyY2Ugb2JqZWN0IHRvIHVzZSB0byBidWlsZCByZXNvdXJjZUxpbmsgKiovXG4gIHJlc291cmNlOiBTY3JpcHR1cmVSZXNvdXJjZXx1bmRlZmluZWQ7XG4gIC8qKiBpZiB0cnVlIHRoZW4gZmV0Y2ggdGhlIGVudGlyZSBib29rICovXG4gIHdob2xlQm9vazogYm9vbGVhbjtcbiAgLyoqIGlmIHRydWUgdGhlbiBzZXR0aW5ncyBhcmUgcmVhZHkgZm9yIGZldGNoaW5nIGRhdGEgKi9cbiAgcmVhZHlGb3JGZXRjaDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBleHRyYWN0IGJyYW5jaCBmcm9tIHJlc291cmNlIGxpbmtcbiAqIEBwYXJhbSByZXNvdXJjZUxpbmtcbiAqL1xuZnVuY3Rpb24gZ2V0QnJhbmNoTmFtZShyZXNvdXJjZUxpbms6IHN0cmluZykge1xuICBsZXQgYnJhbmNoID0gbnVsbFxuICByZXNvdXJjZUxpbmsgPSByZXNvdXJjZUxpbmsgfHwgJydcbiAgY29uc3QgcGFydHMgPSByZXNvdXJjZUxpbmsuc3BsaXQoJz9yZWY9JylcblxuICBpZiAocGFydHMubGVuZ3RoID4gMSkgeyAvLyBpZiByZWYgcGFyYW1ldGVyIGZvdW5kLCBnZXQgYnJhbmNoIG5hbWUgYWZ0ZXJcbiAgICBicmFuY2ggPSBwYXJ0cz8uWzFdXG4gIH0gZWxzZSB7IC8vIGZhbGwgYmFjayB0byB1c2luZyB1c2VSc3JjIGZvcm1hdCBzdWNoIGFzIFwidW5mb2xkaW5nV29yZC9lbi91c3QvbWFzdGVyXCJcbiAgICBjb25zdCBfcGFydHMgPSByZXNvdXJjZUxpbmsuc3BsaXQoJy8nKVxuICAgIGJyYW5jaCA9IF9wYXJ0cz8uWzNdXG4gIH1cbiAgcmV0dXJuIGJyYW5jaFxufVxuXG4vKipcbiAqIGdldCB0aGUgdmVyc2Ugb2JqZWN0cyBmb3IgdGhlIHJlZmVyZW5jZSBzdHJpbmdcbiAqIEBwYXJhbSB7c3RyaW5nfSByZWZTdHIgLSBpbiBmb3JtYXQgPGNoYXB0ZXI+Ojx2ZXJzZT5cbiAqIEBwYXJhbSB7b2JqZWN0fSBib29rT2JqZWN0cyAtIHBhcnNlZCB1c2ZtIGZvciBib29rXG4gKiBAcGFyYW0ge3N0cmluZ30gbGFuZ3VhZ2VJZFxuICogQHJldHVybiB7YXJyYXl8bnVsbH0gLSBvZiB2ZXJzZU9iamVjdHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZlcnNlc0ZvclJlZlN0cihyZWZTdHIsIGJvb2tPYmplY3RzLCBsYW5ndWFnZUlkKSB7XG4gIGlmIChib29rT2JqZWN0cykge1xuICAgIGxldCB2ZXJzZXMgPSBnZXRWZXJzZXMoYm9va09iamVjdHMuY2hhcHRlcnMsIHJlZlN0cilcblxuICAgIGlmIChsYW5ndWFnZUlkID09PSAnZWwteC1rb2luZScgfHwgbGFuZ3VhZ2VJZCA9PT0gJ2hibycpIHtcbiAgICAgIHZlcnNlcyA9IHZlcnNlcy5tYXAodmVyc2UgPT4ge1xuICAgICAgICBpZiAoIHZlcnNlPy52ZXJzZURhdGE/LnZlcnNlT2JqZWN0cykge1xuICAgICAgICAgIGxldCB2ZXJzZU9iamVjdHNfID0gY29yZS5vY2N1cnJlbmNlSW5qZWN0VmVyc2VPYmplY3RzKCB2ZXJzZS52ZXJzZURhdGEudmVyc2VPYmplY3RzKVxuICAgICAgICAgIHZlcnNlT2JqZWN0c18gPSBjbGVhbnVwVmVyc2VPYmplY3RzKHZlcnNlT2JqZWN0c18pXG4gICAgICAgICAgdmVyc2UudmVyc2VEYXRhLnZlcnNlT2JqZWN0cyA9IHZlcnNlT2JqZWN0c19cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmVyc2VcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHZlcnNlc1xuICB9XG4gIHJldHVybiBudWxsXG59XG5cbi8qKlxuICogZ2V0IHRoZSB2ZXJzZSBvYmplY3RzIGZvciB0aGUgcmVmZXJlbmNlIG9iamVjdFxuICogQHBhcmFtIHtvYmplY3R9IHJlZmVyZW5jZVxuICogQHBhcmFtIHtvYmplY3R9IGJvb2tPYmplY3RzIC0gcGFyc2VkIHVzZm0gZm9yIGJvb2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBsYW5ndWFnZUlkXG4gKiBAcmV0dXJuIHthcnJheXxudWxsfSAtIG9mIHZlcnNlT2JqZWN0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmVyc2VzRm9yUmVmKHJlZmVyZW5jZSwgYm9va09iamVjdHMsIGxhbmd1YWdlSWQpIHtcbiAgY29uc3QgcmVmU3RyID0gYCR7cmVmZXJlbmNlLmNoYXB0ZXJ9OiR7cmVmZXJlbmNlLnZlcnNlfWBcbiAgcmV0dXJuIGdldFZlcnNlc0ZvclJlZlN0cihyZWZTdHIsIGJvb2tPYmplY3RzLCBsYW5ndWFnZUlkKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlU2NyaXB0dXJlKHsgLy8gaG9vayBmb3IgZmV0Y2hpbmcgc2NyaXB0dXJlXG4gIGNvbmZpZyxcbiAgcmVhZHlGb3JGZXRjaCxcbiAgcmVmZXJlbmNlLFxuICByZXNvdXJjZTogcmVzb3VyY2VfLFxuICByZXNvdXJjZUxpbms6IHJlc291cmNlTGlua18sXG4gIHdob2xlQm9vayA9IGZhbHNlLFxufSA6IFByb3BzKSB7XG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVfXSA9IHVzZVN0YXRlKHtcbiAgICBiaWJsZVVzZm06IG51bGwsXG4gICAgYm9va09iamVjdHM6IG51bGwsXG4gICAgZmV0Y2hlZEJvb2s6ICcnLFxuICAgIGZldGNoUGFyYW1zOiB7XG4gICAgICByZXNvdXJjZUxpbms6ICcnLFxuICAgICAgcmVmZXJlbmNlOiB7fSxcbiAgICAgIGNvbmZpZzoge30sXG4gICAgfSxcbiAgICBpZ25vcmVTaGE6IG51bGwsXG4gICAgaW5pdGlhbGl6ZWQ6IGZhbHNlLFxuICAgIGZldGNoZWQ6IGZhbHNlLFxuICAgIHJlc291cmNlU3RhdGU6IHtcbiAgICAgIGJpYmxlSnNvbjogbnVsbCxcbiAgICAgIG1hdGNoZWRWZXJzZTogbnVsbCxcbiAgICAgIHJlc291cmNlOiBudWxsLFxuICAgICAgY29udGVudDogbnVsbCxcbiAgICAgIGxvYWRpbmdSZXNvdXJjZTogZmFsc2UsXG4gICAgICBsb2FkaW5nQ29udGVudDogZmFsc2UsXG4gICAgICBmZXRjaFJlc3BvbnNlOiBudWxsLFxuICAgIH0sXG4gICAgdmVyc2VzRm9yUmVmOiBbXSxcbiAgfSlcblxuICBjb25zdCB7XG4gICAgYmlibGVVc2ZtLFxuICAgIGJvb2tPYmplY3RzLFxuICAgIGZldGNoZWRCb29rLFxuICAgIGZldGNoUGFyYW1zLFxuICAgIGZldGNoZWQsXG4gICAgaWdub3JlU2hhLFxuICAgIGluaXRpYWxpemVkLFxuICAgIHJlc291cmNlU3RhdGUsXG4gICAgdmVyc2VzRm9yUmVmLFxuICB9ID0gc3RhdGVcbiAgY29uc3QgX2Jvb2tJZCA9IHJlZmVyZW5jZT8ucHJvamVjdElkXG5cbiAgZnVuY3Rpb24gc2V0U3RhdGUobmV3U3RhdGUpIHtcbiAgICBzZXRTdGF0ZV8ocHJldlN0YXRlID0+ICh7IC4uLnByZXZTdGF0ZSwgLi4ubmV3U3RhdGUgfSkpXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZWFkeUZvckZldGNoKSB7XG4gICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIC0gcmVhZHlGb3JGZXRjaCB0cnVlLCBpbml0aWFsaXppbmdgKVxuICAgICAgbGV0IHJlc291cmNlTGluayA9IHJlYWR5Rm9yRmV0Y2ggJiYgcmVzb3VyY2VMaW5rX1xuXG4gICAgICBpZiAoIXJlc291cmNlTGlua18gJiYgcmVzb3VyY2VfKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBvd25lcixcbiAgICAgICAgICBsYW5ndWFnZUlkLFxuICAgICAgICAgIHByb2plY3RJZCxcbiAgICAgICAgICBicmFuY2ggPSAnbWFzdGVyJyxcbiAgICAgICAgICByZWYgPSBudWxsLFxuICAgICAgICB9ID0gcmVzb3VyY2VfIHx8IHt9XG4gICAgICAgIGNvbnN0IHJlZl8gPSByZWYgfHwgYnJhbmNoXG5cbiAgICAgICAgcmVzb3VyY2VMaW5rID0gZ2V0UmVzb3VyY2VMaW5rKHtcbiAgICAgICAgICBvd25lcixcbiAgICAgICAgICBsYW5ndWFnZUlkLFxuICAgICAgICAgIHJlc291cmNlSWQ6IHByb2plY3RJZCxcbiAgICAgICAgICByZWY6IHJlZl8sXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGJvb2tSZWYgPSB7IC4uLnJlZmVyZW5jZSB9XG5cbiAgICAgIGlmICh3aG9sZUJvb2spIHtcbiAgICAgICAgZGVsZXRlIGJvb2tSZWYuY2hhcHRlciAvLyByZW1vdmUgdGhlIGNoYXB0ZXIgYW5kIHZlcnNlIHNvIHRoZSB3aG9sZSBib29rIGlzIGZldGNoZWRcbiAgICAgICAgZGVsZXRlIGJvb2tSZWYudmVyc2VcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc291cmNlTGluayAhPT0gZmV0Y2hQYXJhbXM/LnJlc291cmNlTGluaykge1xuICAgICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIC0gZm9yICR7cmVzb3VyY2VfPy5wcm9qZWN0SWR9IHJlc291cmNlTGluayBpcyBub3cgJHtyZXNvdXJjZUxpbmt9IGFuZCByZXNvdXJjZUxpbmtfPSR7cmVzb3VyY2VMaW5rX31gKVxuICAgICAgfSBlbHNlIGlmIChib29rUmVmICE9PSBmZXRjaFBhcmFtcz8ucmVmZXJlbmNlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgLSBib29rIGNoYW5nZWQgdG8gJHtyZXNvdXJjZV8/LnByb2plY3RJZH0gcmVzb3VyY2VMaW5rIGlzIG5vdyAke3Jlc291cmNlTGlua31gKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXdGZXRjaFBhcmFtcyA9IHtcbiAgICAgICAgcmVzb3VyY2VMaW5rLFxuICAgICAgICByZWZlcmVuY2U6IGJvb2tSZWYsXG4gICAgICAgIGNvbmZpZyxcbiAgICAgIH1cblxuICAgICAgaWYgKCFpc0VxdWFsKG5ld0ZldGNoUGFyYW1zLCBmZXRjaFBhcmFtcykpIHtcbiAgICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSAtIEZFVENISU5HIG5ldyBwYXJhbXMgJHtyZXNvdXJjZV8/LnByb2plY3RJZH0gcmVzb3VyY2VMaW5rIGlzIG5vdyAke3Jlc291cmNlTGlua30gYW5kIHJlc291cmNlTGlua189JHtyZXNvdXJjZUxpbmtffWAsIG5ld0ZldGNoUGFyYW1zKVxuICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgZmV0Y2hQYXJhbXM6IG5ld0ZldGNoUGFyYW1zLFxuICAgICAgICAgIGZldGNoZWQ6IGZhbHNlLFxuICAgICAgICAgIGlnbm9yZVNoYTogbnVsbCxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtyZWFkeUZvckZldGNoLCBfYm9va0lkLCByZXNvdXJjZUxpbmtfXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgLSBmb3IgJHtyZXNvdXJjZV8/LnByb2plY3RJZH0gcmVhZHlGb3JGZXRjaCBpcyBub3cgJHtyZWFkeUZvckZldGNofWApXG4gIH0sIFtyZWFkeUZvckZldGNoXSlcblxuICBjb25zdCBvcHRpb25zID0geyBnZXRCaWJsZUpzb246IHRydWUgfVxuXG4gIGNvbnN0IF9yZXNvdXJjZVJlc3VsdHMgPSB1c2VSc3JjKHtcbiAgICBjb25maWc6IGZldGNoUGFyYW1zPy5jb25maWcsXG4gICAgcmVmZXJlbmNlOiBmZXRjaFBhcmFtcz8ucmVmZXJlbmNlLFxuICAgIHJlc291cmNlTGluazogZmV0Y2hQYXJhbXM/LnJlc291cmNlTGluayxcbiAgICBvcHRpb25zLFxuICB9KVxuXG4gIC8vIG9ubHkgdXNlIHRoZSByZXN1bHRzIGlmIHJlYWR5VG9GZXRjaFxuICBjb25zdCB7XG4gICAgYmlibGVKc29uLFxuICAgIGNvbnRlbnQsXG4gICAgZmV0Y2hSZXNwb25zZSxcbiAgICBsb2FkaW5nUmVzb3VyY2UsXG4gICAgbG9hZGluZ0NvbnRlbnQsXG4gICAgbWF0Y2hlZFZlcnNlLFxuICAgIHJlc291cmNlLFxuICB9ID0gcmVzb3VyY2VTdGF0ZVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7IC8vIHZhbGlkYXRlIHJlc3BvbnNlIHRvIG1ha2Ugc3VyZSBmcm9tIGxhdGVzdCByZXF1ZXN0XG4gICAgaWYgKHJlYWR5Rm9yRmV0Y2gpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRSZXNvdXJjZVN0YXRlID0gX3Jlc291cmNlUmVzdWx0cz8uc3RhdGVcblxuICAgICAgaWYgKCFmZXRjaGVkICYmICFpc0VxdWFsKGN1cnJlbnRSZXNvdXJjZVN0YXRlLCByZXNvdXJjZVN0YXRlKSkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgY29udGVudCxcbiAgICAgICAgICBmZXRjaFJlc3BvbnNlLFxuICAgICAgICAgIGxvYWRpbmdDb250ZW50LFxuICAgICAgICAgIGxvYWRpbmdSZXNvdXJjZSxcbiAgICAgICAgfSA9IGN1cnJlbnRSZXNvdXJjZVN0YXRlXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgcmVzb3VyY2VzIGNoYW5nZWRgLCB7IGNvbnRlbnQsIGZldGNoUGFyYW1zLCBmZXRjaFJlc3BvbnNlIH0pXG5cbiAgICAgICAgaWYgKCFsb2FkaW5nQ29udGVudCAmJiAhbG9hZGluZ1Jlc291cmNlICYmIGNvbnRlbnQgJiYgZmV0Y2hSZXNwb25zZSkge1xuICAgICAgICAgIGNvbnN0IG5ld1N0YXRlID0geyByZXNvdXJjZVN0YXRlOiBjdXJyZW50UmVzb3VyY2VTdGF0ZSB9XG5cbiAgICAgICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIGNvbnRlbnQgY2hhbmdlZGAsIHtcbiAgICAgICAgICAgIGNvbnRlbnQsXG4gICAgICAgICAgICBmZXRjaFBhcmFtcyxcbiAgICAgICAgICAgIGZldGNoUmVzcG9uc2UsXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIC8vIFRSSUNLWSAtIHJlc3BvbnNlcyBmcm9tIHNlcnZlciBjYW4gY29tZSBiYWNrIGZyb20gcHJldmlvdXMgcmVxdWVzdHMuICBTbyB3ZSBtYWtlIHN1cmUgdGhpcyByZXNwb25zZSBpcyBmb3IgdGhlIGN1cnJlbnQgcmVxdWVzdGVkIGJvb2tcbiAgICAgICAgICBsZXQgc2FtZUJvb2sgPSBmYWxzZVxuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBjb25zdCBleHBlY3RlZEJvb2tJZCA9IF9ib29rSWQgfHwgJydcbiAgICAgICAgICBjb25zdCBmZXRjaGVkQm9vayA9IGNvbnRlbnQubmFtZVxuXG4gICAgICAgICAgaWYgKGZldGNoZWRCb29rICYmIGV4cGVjdGVkQm9va0lkKSB7XG4gICAgICAgICAgICBjb25zdCBbbmFtZSwgZXh0XSA9IGZldGNoZWRCb29rLnNwbGl0KCcuJylcblxuICAgICAgICAgICAgaWYgKGV4dC50b0xvd2VyQ2FzZSgpID09PSAndXNmbScpIHtcbiAgICAgICAgICAgICAgc2FtZUJvb2sgPSBuYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZXhwZWN0ZWRCb29rSWQudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBzaGEgPSBmZXRjaFJlc3BvbnNlPy5kYXRhPy5zaGEgfHwgbnVsbFxuICAgICAgICAgIGNvbnN0IHVybCA9IGZldGNoUmVzcG9uc2U/LmRhdGE/LnVybCB8fCBudWxsXG5cbiAgICAgICAgICBpZiAoc2FtZUJvb2spIHsgLy8gYWxzbyBtYWtlIHN1cmUgaXQgaXMgdGhlIHNhbWUgYnJhbmNoXG4gICAgICAgICAgICBjb25zdCBmZXRjaGVkQnJhbmNoID0gZ2V0QnJhbmNoTmFtZSh1cmwpXG4gICAgICAgICAgICBjb25zdCBmZXRjaGluZ0JyYW5jaCA9IGdldEJyYW5jaE5hbWUoZmV0Y2hQYXJhbXM/LnJlc291cmNlTGluaylcblxuICAgICAgICAgICAgaWYgKGZldGNoZWRCcmFuY2ggIT09IGZldGNoaW5nQnJhbmNoKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgaW52YWxpZCBicmFuY2gsIGV4cGVjdGVkIGJyYW5jaCBpcyAke2ZldGNoaW5nQnJhbmNofSwgYnV0IGZldGNoZWRCcmFuY2ggaXMgJHtmZXRjaGVkQnJhbmNofWAsIHsgc2hhLCB1cmwgfSlcbiAgICAgICAgICAgICAgc2FtZUJvb2sgPSBmYWxzZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChpZ25vcmVTaGEgPT09IHNoYSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSAtIHRoZSBzaGEgaXMgdGhlIHNhbWUgYXMgdGhlIGlnbm9yZSBzaGEgJHtzaGF9YCwgeyBzaGEsIHVybCB9KVxuICAgICAgICAgICAgc2FtZUJvb2sgPSBmYWxzZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghc2FtZUJvb2spIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgaW52YWxpZCBib29rLCBleHBlY3RlZEJvb2tJZCBpcyAke2V4cGVjdGVkQm9va0lkfSwgYnV0IHJlY2VpdmVkIGJvb2sgbmFtZSAke2ZldGNoZWRCb29rfWAsIHsgc2hhLCB1cmwgfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3U3RhdGVbJ2JpYmxlVXNmbSddID0gY29yZS5nZXRSZXNwb25zZURhdGEoZmV0Y2hSZXNwb25zZSlcbiAgICAgICAgICAgIG5ld1N0YXRlWydib29rT2JqZWN0cyddID0gY29udGVudFxuICAgICAgICAgICAgbmV3U3RhdGVbJ3ZlcnNlc0ZvclJlZiddID0gdXBkYXRlVmVyc2VzRm9yUmVmKGNvbnRlbnQpXG4gICAgICAgICAgICBuZXdTdGF0ZVsnZmV0Y2hlZEJvb2snXSA9IGV4cGVjdGVkQm9va0lkXG5cbiAgICAgICAgICAgIGlmICghaXNFcXVhbChuZXdTdGF0ZSwge1xuICAgICAgICAgICAgICBiaWJsZVVzZm0sXG4gICAgICAgICAgICAgIGJvb2tPYmplY3RzLFxuICAgICAgICAgICAgICB2ZXJzZXNGb3JSZWYsXG4gICAgICAgICAgICAgIGZldGNoZWRCb29rOiBleHBlY3RlZEJvb2tJZCxcbiAgICAgICAgICAgICAgcmVzb3VyY2VTdGF0ZSxcbiAgICAgICAgICAgIH0pKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgY29ycmVjdCBib29rLCBleHBlY3RlZEJvb2tJZCBpcyAke2V4cGVjdGVkQm9va0lkfWAsIHsgc2hhLCB1cmwgfSlcbiAgICAgICAgICAgICAgbmV3U3RhdGVbJ2ZldGNoZWQnXSA9IHRydWVcbiAgICAgICAgICAgICAgbmV3U3RhdGVbJ2lnbm9yZVNoYSddID0gbnVsbFxuICAgICAgICAgICAgICBzZXRTdGF0ZShuZXdTdGF0ZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKCFpc0VxdWFsKGN1cnJlbnRSZXNvdXJjZVN0YXRlLCByZXNvdXJjZVN0YXRlKSkge1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSBzdGF0ZSBjaGFuZ2VkLCBidXQgbm8gY29udGVudGAsIGN1cnJlbnRSZXNvdXJjZVN0YXRlKVxuICAgICAgICAgICAgc2V0U3RhdGUoeyByZXNvdXJjZVN0YXRlOiBjdXJyZW50UmVzb3VyY2VTdGF0ZSB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSwgW3JlYWR5Rm9yRmV0Y2gsIF9yZXNvdXJjZVJlc3VsdHM/LnN0YXRlXSlcblxuICBjb25zdCB7IHRpdGxlLCB2ZXJzaW9uIH0gPSBwYXJzZVJlc291cmNlTWFuaWZlc3QocmVzb3VyY2UpXG4gIGNvbnN0IHsgbGFuZ3VhZ2VJZCB9ID0gcmVzb3VyY2VfIHx8IHt9XG4gIGNvbnN0IGxvYWRpbmcgPSBsb2FkaW5nUmVzb3VyY2UgfHwgbG9hZGluZ0NvbnRlbnQgfHwgIXJlYWR5Rm9yRmV0Y2hcbiAgY29uc3QgY29udGVudE5vdEZvdW5kRXJyb3IgPSAhY29udGVudFxuICBjb25zdCBzY3JpcHR1cmVOb3RMb2FkZWRFcnJvciA9ICFiaWJsZUpzb25cbiAgY29uc3QgbWFuaWZlc3ROb3RGb3VuZEVycm9yID0gIXJlc291cmNlPy5tYW5pZmVzdFxuICBjb25zdCBpbnZhbGlkTWFuaWZlc3RFcnJvciA9ICF0aXRsZSB8fCAhdmVyc2lvbiB8fCAhbGFuZ3VhZ2VJZFxuICBjb25zdCBlcnJvciA9IHJlYWR5Rm9yRmV0Y2ggJiYgaW5pdGlhbGl6ZWQgJiYgIWxvYWRpbmcgJiZcbiAgICAoY29udGVudE5vdEZvdW5kRXJyb3IgfHwgc2NyaXB0dXJlTm90TG9hZGVkRXJyb3IgfHwgbWFuaWZlc3ROb3RGb3VuZEVycm9yIHx8IGludmFsaWRNYW5pZmVzdEVycm9yKVxuICBjb25zdCByZXNvdXJjZVN0YXR1cyA9IHtcbiAgICBbTE9BRElOR19TVEFURV06IGxvYWRpbmcsXG4gICAgW0NPTlRFTlRfTk9UX0ZPVU5EX0VSUk9SXTogY29udGVudE5vdEZvdW5kRXJyb3IsXG4gICAgW1NDUklQVFVSRV9OT1RfTE9BREVEX0VSUk9SXTogc2NyaXB0dXJlTm90TG9hZGVkRXJyb3IsXG4gICAgW01BTklGRVNUX05PVF9MT0FERURfRVJST1JdOiBtYW5pZmVzdE5vdEZvdW5kRXJyb3IsXG4gICAgW0lOVkFMSURfTUFOSUZFU1RfRVJST1JdOiBpbnZhbGlkTWFuaWZlc3RFcnJvcixcbiAgICBbRVJST1JfU1RBVEVdOiBlcnJvcixcbiAgICBbSU5JVElBTElaRURfU1RBVEVdOiBpbml0aWFsaXplZCxcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFyZWFkeUZvckZldGNoKSB7XG4gICAgICBpZiAoaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgc2V0U3RhdGUoeyBpbnRpYWxpemVkOiBmYWxzZSB9KVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIWluaXRpYWxpemVkKSB7XG4gICAgICBpZiAobG9hZGluZykgeyAvLyBvbmNlIGZpcnN0IGxvYWQgaGFzIGJlZ3VuLCB3ZSBhcmUgaW5pdGlhbGl6ZWRcbiAgICAgICAgc2V0U3RhdGUoeyBpbnRpYWxpemVkOiB0cnVlIH0pXG4gICAgICB9XG4gICAgfVxuICB9LCBbbG9hZGluZywgcmVhZHlGb3JGZXRjaF0pXG5cbiAgLyoqXG4gICAqIGdldCB2ZXJzZXMgZm9yIHJlZlxuICAgKiBAcGFyYW0gcmVmU3RyXG4gICAqIEBwYXJhbSBjb250ZW50X1xuICAgKi9cbiAgZnVuY3Rpb24gX2dldFZlcnNlc0ZvclJlZihyZWZTdHIsIGNvbnRlbnRfID0gYm9va09iamVjdHMpIHtcbiAgICBpZiAoY29udGVudF8pIHtcbiAgICAgIHJldHVybiBnZXRWZXJzZXNGb3JSZWZTdHIocmVmU3RyLCBjb250ZW50XywgbGFuZ3VhZ2VJZClcbiAgICB9XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZVZlcnNlKGNoYXB0ZXIsIHZlcnNlLCB2ZXJzZURhdGEpIHtcbiAgICBpZiAoYm9va09iamVjdHMpIHtcbiAgICAgIGNvbnN0IGJvb2tPYmplY3RzXyA9IHsgLi4uYm9va09iamVjdHMgfSAvLyBzaGFsbG93IGNvcHlcblxuICAgICAgaWYgKGJvb2tPYmplY3RzXz8uY2hhcHRlcnMpIHtcbiAgICAgICAgYm9va09iamVjdHNfLmNoYXB0ZXJzID0geyAuLi5ib29rT2JqZWN0c18uY2hhcHRlcnMgfSAvLyBzaGFsbG93IGNvcHkgY2hhcHRlcnNcblxuICAgICAgICBpZiAoYm9va09iamVjdHNfLmNoYXB0ZXJzW2NoYXB0ZXJdKSB7XG4gICAgICAgICAgYm9va09iamVjdHNfLmNoYXB0ZXJzW2NoYXB0ZXJdID0geyAuLi5ib29rT2JqZWN0c18uY2hhcHRlcnNbY2hhcHRlcl0gfSAvLyBzaGFsbG93IGNvcHkgdmVyc2VzXG4gICAgICAgICAgYm9va09iamVjdHNfLmNoYXB0ZXJzW2NoYXB0ZXJdW3ZlcnNlXSA9IHZlcnNlRGF0YVxuICAgICAgICAgIHNldFN0YXRlKHsgYm9va09iamVjdHM6IGJvb2tPYmplY3RzXyB9KVxuICAgICAgICAgIHJldHVybiBib29rT2JqZWN0c19cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgZnVuY3Rpb24gdXBkYXRlVmVyc2VzRm9yUmVmKF9ib29rT2JqZWN0cyA9IGJvb2tPYmplY3RzKSB7XG4gICAgbGV0IG5ld1ZlcnNlc0ZvclJlZiA9IFtdXG5cbiAgICBpZiAoX2Jvb2tPYmplY3RzKSB7XG4gICAgICBuZXdWZXJzZXNGb3JSZWYgPSBnZXRWZXJzZXNGb3JSZWYocmVmZXJlbmNlLCBfYm9va09iamVjdHMsIGxhbmd1YWdlSWQpXG4gICAgICByZXR1cm4gbmV3VmVyc2VzRm9yUmVmXG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIC8qKlxuICAgKiBmb3JjZSByZWxvYWQgb2YgY3VycmVudCByZXNvdXJjZVxuICAgKiBAcGFyYW0ge3N0cmluZ3x1bmRlZmluZWR9IGlnbm9yZVNoYSAtIG9wdGlvbmFsIHNoYSB0byBpZ25vcmVcbiAgICovXG4gIGZ1bmN0aW9uIHJlbG9hZFJlc291cmNlKGlnbm9yZVNoYSA9IG51bGwpIHtcbiAgICBjb25zdCBfcmVsb2FkUmVzb3VyY2UgPSBfcmVzb3VyY2VSZXN1bHRzPy5hY3Rpb25zLnJlbG9hZFJlc291cmNlXG5cbiAgICBpZiAoX3JlbG9hZFJlc291cmNlKSB7XG4gICAgICBjb25zdCBuZXdTdGF0ZSA9IHsgZmV0Y2hlZDogZmFsc2UgfVxuXG4gICAgICBpZiAoaWdub3JlU2hhKSB7IC8vIFRSSUNLWSAtIGlmIHRoZSByZXNwb25zZSB3YXMgZm9yIHRoaXMgc2hhICh3aGljaCB3YXMgdGhlIHByZXZpb3VzIHNoYSkgdGhlbiB3ZSBuZWVkIHRvIGlnbm9yZSBpdFxuICAgICAgICBuZXdTdGF0ZVsnaWdub3JlU2hhJ10gPSBpZ25vcmVTaGFcbiAgICAgIH1cbiAgICAgIHNldFN0YXRlKCBuZXdTdGF0ZSlcbiAgICAgIF9yZWxvYWRSZXNvdXJjZSgpXG4gICAgfVxuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBjdXJyZW50Qm9va1JlZiA9IGZldGNoUGFyYW1zPy5yZWZlcmVuY2U/LnByb2plY3RJZFxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGN1cnJlbnRCb29rUmVmKSB7XG4gICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIGZldGNoZWQgYm9vayBjaGFuZ2VkIHRvICR7Y3VycmVudEJvb2tSZWZ9LCAke3Jlc291cmNlTGlua199YCwgeyBjb250ZW50LCBmZXRjaFBhcmFtcyB9KVxuICAgICAgc2V0U3RhdGUoeyBib29rT2JqZWN0czogbnVsbCB9KVxuICAgIH1cbiAgICAvLyBAdHMtaWdub3JlXG4gIH0sIFtjdXJyZW50Qm9va1JlZl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIGJvb2sgcmVmIGNoYW5nZWQgdG8gJHtfYm9va0lkfSwgJHtyZXNvdXJjZUxpbmtffWApXG4gICAgLy8gQHRzLWlnbm9yZVxuICB9LCBbX2Jvb2tJZF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBleHBlY3RlZEJvb2tJZCA9IF9ib29rSWQgfHwgJydcbiAgICBjb25zdCBmZXRjaGVkQm9va1NhbWUgPSBmZXRjaGVkQm9vayAmJiAoZmV0Y2hlZEJvb2sgPT09IGV4cGVjdGVkQm9va0lkKVxuICAgIGxldCBfdmVyc2VzRm9yUmVmID0gW11cblxuICAgIGlmICghZmV0Y2hlZEJvb2tTYW1lKSB7XG4gICAgICAvLyBpZiAoZXhwZWN0ZWRCb29rSWQgJiYgZmV0Y2hlZEJvb2spIHtcbiAgICAgIC8vICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSBleHBlY3RlZCBib29rICR7ZXhwZWN0ZWRCb29rSWR9IGJ1dCBmZXRjaGVkIGJvb2sgd2FzICR7ZmV0Y2hlZEJvb2t9IC0gY2xlYXJpbmdgKVxuICAgICAgLy8gfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBfYm9va09iamVjdHMgPSBmZXRjaGVkQm9va1NhbWUgPyBib29rT2JqZWN0cyA6IG51bGxcbiAgICAgIF92ZXJzZXNGb3JSZWYgPSB1cGRhdGVWZXJzZXNGb3JSZWYoX2Jvb2tPYmplY3RzKVxuICAgICAgLy8gY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSBfYm9va09iamVjdHMgaXMgJHshIV9ib29rT2JqZWN0c30gYW5kIGJvb2tzIGFyZSB0aGUgc2FtZSAke2ZldGNoZWRCb29rfWAsIHsgY29udGVudCwgZmV0Y2hQYXJhbXMgfSlcbiAgICB9XG5cbiAgICBpZiAoIWlzRXF1YWwoX3ZlcnNlc0ZvclJlZiwgdmVyc2VzRm9yUmVmKSkge1xuICAgICAgc2V0U3RhdGUoeyB2ZXJzZXNGb3JSZWY6IF92ZXJzZXNGb3JSZWYgfSlcbiAgICB9XG4gIH0sIFtyZWZlcmVuY2VdKVxuXG4gIHJldHVybiB7XG4gICAgYmlibGVVc2ZtLFxuICAgIGJvb2tPYmplY3RzLFxuICAgIGZldGNoUmVzcG9uc2UsXG4gICAgZ2V0VmVyc2VzRm9yUmVmOiBfZ2V0VmVyc2VzRm9yUmVmLFxuICAgIG1hdGNoZWRWZXJzZSxcbiAgICByZWZlcmVuY2U6IGZldGNoUGFyYW1zPy5yZWZlcmVuY2UsXG4gICAgcmVsb2FkUmVzb3VyY2UsXG4gICAgcmVzb3VyY2VMaW5rOiBmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rLFxuICAgIHJlc291cmNlU3RhdHVzLFxuICAgIHRpdGxlLFxuICAgIHVwZGF0ZVZlcnNlLFxuICAgIHZlcnNpb24sXG4gICAgdmVyc2VzRm9yUmVmLFxuICB9XG59XG4iXX0=
500
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VTY3JpcHR1cmUudHN4Il0sIm5hbWVzIjpbInVzZUVmZmVjdCIsInVzZVN0YXRlIiwiY29yZSIsInVzZVJzcmMiLCJDT05URU5UX05PVF9GT1VORF9FUlJPUiIsIkVSUk9SX1NUQVRFIiwiSU5JVElBTElaRURfU1RBVEUiLCJJTlZBTElEX01BTklGRVNUX0VSUk9SIiwiTE9BRElOR19TVEFURSIsIk1BTklGRVNUX05PVF9MT0FERURfRVJST1IiLCJTQ1JJUFRVUkVfTk9UX0xPQURFRF9FUlJPUiIsInVzZURlZXBDb21wYXJlRWZmZWN0IiwiZ2V0VmVyc2VzIiwiaXNFcXVhbCIsImNsZWFudXBWZXJzZU9iamVjdHMiLCJnZXRSZXNvdXJjZUxpbmsiLCJTZXJ2ZXJDb25maWciLCJTY3JpcHR1cmVSZXNvdXJjZSIsIlNjcmlwdHVyZVJlZmVyZW5jZSIsInBhcnNlUmVzb3VyY2VNYW5pZmVzdCIsImdldEJyYW5jaE5hbWUiLCJyZXNvdXJjZUxpbmsiLCJicmFuY2giLCJwYXJ0cyIsInNwbGl0IiwibGVuZ3RoIiwiX3BhcnRzIiwiZ2V0VmVyc2VzRm9yUmVmU3RyIiwicmVmU3RyIiwiYm9va09iamVjdHMiLCJsYW5ndWFnZUlkIiwidmVyc2VzIiwiY2hhcHRlcnMiLCJtYXAiLCJ2ZXJzZSIsInZlcnNlRGF0YSIsInZlcnNlT2JqZWN0cyIsInZlcnNlT2JqZWN0c18iLCJvY2N1cnJlbmNlSW5qZWN0VmVyc2VPYmplY3RzIiwiZ2V0VmVyc2VzRm9yUmVmIiwicmVmZXJlbmNlIiwiY2hhcHRlciIsInVzZVNjcmlwdHVyZSIsImNvbmZpZyIsInJlYWR5Rm9yRmV0Y2giLCJyZXNvdXJjZV8iLCJyZXNvdXJjZSIsInJlc291cmNlTGlua18iLCJ3aG9sZUJvb2siLCJiaWJsZVVzZm0iLCJmZXRjaGVkQm9vayIsImZldGNoUGFyYW1zIiwiaWdub3JlU2hhIiwiaW5pdGlhbGl6ZWQiLCJmZXRjaGVkIiwicmVzb3VyY2VTdGF0ZSIsImJpYmxlSnNvbiIsIm1hdGNoZWRWZXJzZSIsImNvbnRlbnQiLCJsb2FkaW5nUmVzb3VyY2UiLCJsb2FkaW5nQ29udGVudCIsImZldGNoUmVzcG9uc2UiLCJ2ZXJzZXNGb3JSZWYiLCJzdGF0ZSIsInNldFN0YXRlXyIsIl9ib29rSWQiLCJwcm9qZWN0SWQiLCJzZXRTdGF0ZSIsIm5ld1N0YXRlIiwicHJldlN0YXRlIiwiY29uc29sZSIsImxvZyIsIm93bmVyIiwicmVmIiwicmVmXyIsInJlc291cmNlSWQiLCJib29rUmVmIiwibmV3RmV0Y2hQYXJhbXMiLCJvcHRpb25zIiwiZ2V0QmlibGVKc29uIiwiX3Jlc291cmNlUmVzdWx0cyIsImN1cnJlbnRSZXNvdXJjZVN0YXRlIiwic2FtZUJvb2siLCJleHBlY3RlZEJvb2tJZCIsIm5hbWUiLCJleHQiLCJ0b0xvd2VyQ2FzZSIsImluY2x1ZGVzIiwic2hhIiwiZGF0YSIsInVybCIsImZldGNoZWRCcmFuY2giLCJmZXRjaGluZ0JyYW5jaCIsImdldFJlc3BvbnNlRGF0YSIsInVwZGF0ZVZlcnNlc0ZvclJlZiIsInRpdGxlIiwidmVyc2lvbiIsImxvYWRpbmciLCJjb250ZW50Tm90Rm91bmRFcnJvciIsInNjcmlwdHVyZU5vdExvYWRlZEVycm9yIiwibWFuaWZlc3ROb3RGb3VuZEVycm9yIiwibWFuaWZlc3QiLCJpbnZhbGlkTWFuaWZlc3RFcnJvciIsImVycm9yIiwicmVzb3VyY2VTdGF0dXMiLCJpbnRpYWxpemVkIiwiX2dldFZlcnNlc0ZvclJlZiIsImNvbnRlbnRfIiwidXBkYXRlVmVyc2UiLCJib29rT2JqZWN0c18iLCJfYm9va09iamVjdHMiLCJuZXdWZXJzZXNGb3JSZWYiLCJyZWxvYWRSZXNvdXJjZSIsIl9yZWxvYWRSZXNvdXJjZSIsImFjdGlvbnMiLCJjdXJyZW50Qm9va1JlZiIsImZldGNoZWRCb29rU2FtZSIsIl92ZXJzZXNGb3JSZWYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0EsU0FDRUEsU0FERixFQUVF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dXNlRWZmZWN0LFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnXG5pbXBvcnQge1xuICBjb3JlLFxuICB1c2VSc3JjLFxufSBmcm9tICdzY3JpcHR1cmUtcmVzb3VyY2VzLXJjbCdcbmltcG9ydCB7XG4gIENPTlRFTlRfTk9UX0ZPVU5EX0VSUk9SLFxuICBFUlJPUl9TVEFURSxcbiAgSU5JVElBTElaRURfU1RBVEUsXG4gIElOVkFMSURfTUFOSUZFU1RfRVJST1IsXG4gIExPQURJTkdfU1RBVEUsXG4gIE1BTklGRVNUX05PVF9MT0FERURfRVJST1IsXG4gIFNDUklQVFVSRV9OT1RfTE9BREVEX0VSUk9SLFxufSBmcm9tICd0cmFuc2xhdGlvbi1oZWxwcy1yY2wnXG5pbXBvcnQgdXNlRGVlcENvbXBhcmVFZmZlY3QgZnJvbSAndXNlLWRlZXAtY29tcGFyZS1lZmZlY3QnXG5pbXBvcnQgeyBnZXRWZXJzZXMgfSBmcm9tICdiaWJsZS1yZWZlcmVuY2UtcmFuZ2UnXG5pbXBvcnQgKiBhcyBpc0VxdWFsIGZyb20gJ2RlZXAtZXF1YWwnXG5pbXBvcnQgeyBjbGVhbnVwVmVyc2VPYmplY3RzLCBnZXRSZXNvdXJjZUxpbmsgfSBmcm9tICcuLi91dGlscy9TY3JpcHR1cmVTZXR0aW5ncydcbmltcG9ydCB7XG4gIFNlcnZlckNvbmZpZyxcbiAgU2NyaXB0dXJlUmVzb3VyY2UsXG4gIFNjcmlwdHVyZVJlZmVyZW5jZSxcbn0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgeyBwYXJzZVJlc291cmNlTWFuaWZlc3QgfSBmcm9tICcuL3BhcnNlUmVzb3VyY2VNYW5pZmVzdCdcblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgLyoqIHJlZmVyZW5jZSBmb3Igc2NyaXB0dXJlICoqL1xuICByZWZlcmVuY2U6IFNjcmlwdHVyZVJlZmVyZW5jZTtcbiAgLyoqIHdoZXJlIHRvIGdldCBkYXRhICoqL1xuICBjb25maWc6IFNlcnZlckNvbmZpZztcbiAgLyoqIG9wdGlvbmFsIGRpcmVjdCBwYXRoIHRvIGJpYmxlIHJlc291cmNlLCBpbiBmb3JtYXQgJHtvd25lcn0vJHtsYW5ndWFnZUlkfS8ke3Byb2plY3RJZH0vJHticmFuY2h9ICoqL1xuICByZXNvdXJjZUxpbms6IHN0cmluZ3x1bmRlZmluZWQ7XG4gIC8qKiBvcHRpb25hbCByZXNvdXJjZSBvYmplY3QgdG8gdXNlIHRvIGJ1aWxkIHJlc291cmNlTGluayAqKi9cbiAgcmVzb3VyY2U6IFNjcmlwdHVyZVJlc291cmNlfHVuZGVmaW5lZDtcbiAgLyoqIGlmIHRydWUgdGhlbiBmZXRjaCB0aGUgZW50aXJlIGJvb2sgKi9cbiAgd2hvbGVCb29rOiBib29sZWFuO1xuICAvKiogaWYgdHJ1ZSB0aGVuIHNldHRpbmdzIGFyZSByZWFkeSBmb3IgZmV0Y2hpbmcgZGF0YSAqL1xuICByZWFkeUZvckZldGNoOiBib29sZWFuO1xufVxuXG4vKipcbiAqIGV4dHJhY3QgYnJhbmNoIGZyb20gcmVzb3VyY2UgbGlua1xuICogQHBhcmFtIHJlc291cmNlTGlua1xuICovXG5mdW5jdGlvbiBnZXRCcmFuY2hOYW1lKHJlc291cmNlTGluazogc3RyaW5nKSB7XG4gIGxldCBicmFuY2ggPSBudWxsXG4gIHJlc291cmNlTGluayA9IHJlc291cmNlTGluayB8fCAnJ1xuICBjb25zdCBwYXJ0cyA9IHJlc291cmNlTGluay5zcGxpdCgnP3JlZj0nKVxuXG4gIGlmIChwYXJ0cy5sZW5ndGggPiAxKSB7IC8vIGlmIHJlZiBwYXJhbWV0ZXIgZm91bmQsIGdldCBicmFuY2ggbmFtZSBhZnRlclxuICAgIGJyYW5jaCA9IHBhcnRzPy5bMV1cbiAgfSBlbHNlIHsgLy8gZmFsbCBiYWNrIHRvIHVzaW5nIHVzZVJzcmMgZm9ybWF0IHN1Y2ggYXMgXCJ1bmZvbGRpbmdXb3JkL2VuL3VzdC9tYXN0ZXJcIlxuICAgIGNvbnN0IF9wYXJ0cyA9IHJlc291cmNlTGluay5zcGxpdCgnLycpXG4gICAgYnJhbmNoID0gX3BhcnRzPy5bM11cbiAgfVxuICByZXR1cm4gYnJhbmNoXG59XG5cbi8qKlxuICogZ2V0IHRoZSB2ZXJzZSBvYmplY3RzIGZvciB0aGUgcmVmZXJlbmNlIHN0cmluZ1xuICogQHBhcmFtIHtzdHJpbmd9IHJlZlN0ciAtIGluIGZvcm1hdCA8Y2hhcHRlcj46PHZlcnNlPlxuICogQHBhcmFtIHtvYmplY3R9IGJvb2tPYmplY3RzIC0gcGFyc2VkIHVzZm0gZm9yIGJvb2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBsYW5ndWFnZUlkXG4gKiBAcmV0dXJuIHthcnJheXxudWxsfSAtIG9mIHZlcnNlT2JqZWN0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmVyc2VzRm9yUmVmU3RyKHJlZlN0ciwgYm9va09iamVjdHMsIGxhbmd1YWdlSWQpIHtcbiAgaWYgKGJvb2tPYmplY3RzKSB7XG4gICAgbGV0IHZlcnNlcyA9IGdldFZlcnNlcyhib29rT2JqZWN0cy5jaGFwdGVycywgcmVmU3RyKVxuXG4gICAgaWYgKGxhbmd1YWdlSWQgPT09ICdlbC14LWtvaW5lJyB8fCBsYW5ndWFnZUlkID09PSAnaGJvJykge1xuICAgICAgdmVyc2VzID0gdmVyc2VzLm1hcCh2ZXJzZSA9PiB7XG4gICAgICAgIGlmICggdmVyc2U/LnZlcnNlRGF0YT8udmVyc2VPYmplY3RzKSB7XG4gICAgICAgICAgbGV0IHZlcnNlT2JqZWN0c18gPSBjb3JlLm9jY3VycmVuY2VJbmplY3RWZXJzZU9iamVjdHMoIHZlcnNlLnZlcnNlRGF0YS52ZXJzZU9iamVjdHMpXG4gICAgICAgICAgdmVyc2VPYmplY3RzXyA9IGNsZWFudXBWZXJzZU9iamVjdHModmVyc2VPYmplY3RzXylcbiAgICAgICAgICB2ZXJzZS52ZXJzZURhdGEudmVyc2VPYmplY3RzID0gdmVyc2VPYmplY3RzX1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2ZXJzZVxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyc2VzXG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuLyoqXG4gKiBnZXQgdGhlIHZlcnNlIG9iamVjdHMgZm9yIHRoZSByZWZlcmVuY2Ugb2JqZWN0XG4gKiBAcGFyYW0ge29iamVjdH0gcmVmZXJlbmNlXG4gKiBAcGFyYW0ge29iamVjdH0gYm9va09iamVjdHMgLSBwYXJzZWQgdXNmbSBmb3IgYm9va1xuICogQHBhcmFtIHtzdHJpbmd9IGxhbmd1YWdlSWRcbiAqIEByZXR1cm4ge2FycmF5fG51bGx9IC0gb2YgdmVyc2VPYmplY3RzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWZXJzZXNGb3JSZWYocmVmZXJlbmNlLCBib29rT2JqZWN0cywgbGFuZ3VhZ2VJZCkge1xuICBjb25zdCByZWZTdHIgPSBgJHtyZWZlcmVuY2UuY2hhcHRlcn06JHtyZWZlcmVuY2UudmVyc2V9YFxuICByZXR1cm4gZ2V0VmVyc2VzRm9yUmVmU3RyKHJlZlN0ciwgYm9va09iamVjdHMsIGxhbmd1YWdlSWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VTY3JpcHR1cmUoeyAvLyBob29rIGZvciBmZXRjaGluZyBzY3JpcHR1cmVcbiAgY29uZmlnLFxuICByZWFkeUZvckZldGNoLFxuICByZWZlcmVuY2UsXG4gIHJlc291cmNlOiByZXNvdXJjZV8sXG4gIHJlc291cmNlTGluazogcmVzb3VyY2VMaW5rXyxcbiAgd2hvbGVCb29rID0gZmFsc2UsXG59IDogUHJvcHMpIHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV9dID0gdXNlU3RhdGUoe1xuICAgIGJpYmxlVXNmbTogbnVsbCxcbiAgICBib29rT2JqZWN0czogbnVsbCxcbiAgICBmZXRjaGVkQm9vazogJycsXG4gICAgZmV0Y2hQYXJhbXM6IHtcbiAgICAgIHJlc291cmNlTGluazogJycsXG4gICAgICByZWZlcmVuY2U6IHt9LFxuICAgICAgY29uZmlnOiB7fSxcbiAgICB9LFxuICAgIGlnbm9yZVNoYTogbnVsbCxcbiAgICBpbml0aWFsaXplZDogZmFsc2UsXG4gICAgZmV0Y2hlZDogZmFsc2UsXG4gICAgcmVzb3VyY2VTdGF0ZToge1xuICAgICAgYmlibGVKc29uOiBudWxsLFxuICAgICAgbWF0Y2hlZFZlcnNlOiBudWxsLFxuICAgICAgcmVzb3VyY2U6IG51bGwsXG4gICAgICBjb250ZW50OiBudWxsLFxuICAgICAgbG9hZGluZ1Jlc291cmNlOiBmYWxzZSxcbiAgICAgIGxvYWRpbmdDb250ZW50OiBmYWxzZSxcbiAgICAgIGZldGNoUmVzcG9uc2U6IG51bGwsXG4gICAgfSxcbiAgICB2ZXJzZXNGb3JSZWY6IFtdLFxuICB9KVxuXG4gIGNvbnN0IHtcbiAgICBiaWJsZVVzZm0sXG4gICAgYm9va09iamVjdHMsXG4gICAgZmV0Y2hlZEJvb2ssXG4gICAgZmV0Y2hQYXJhbXMsXG4gICAgZmV0Y2hlZCxcbiAgICBpZ25vcmVTaGEsXG4gICAgaW5pdGlhbGl6ZWQsXG4gICAgcmVzb3VyY2VTdGF0ZSxcbiAgICB2ZXJzZXNGb3JSZWYsXG4gIH0gPSBzdGF0ZVxuICBjb25zdCBfYm9va0lkID0gcmVmZXJlbmNlPy5wcm9qZWN0SWRcblxuICBmdW5jdGlvbiBzZXRTdGF0ZShuZXdTdGF0ZSkge1xuICAgIHNldFN0YXRlXyhwcmV2U3RhdGUgPT4gKHsgLi4ucHJldlN0YXRlLCAuLi5uZXdTdGF0ZSB9KSlcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlYWR5Rm9yRmV0Y2gpIHtcbiAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgLSByZWFkeUZvckZldGNoIHRydWUsIGluaXRpYWxpemluZ2ApXG4gICAgICBsZXQgcmVzb3VyY2VMaW5rID0gcmVhZHlGb3JGZXRjaCAmJiByZXNvdXJjZUxpbmtfXG5cbiAgICAgIGlmICghcmVzb3VyY2VMaW5rXyAmJiByZXNvdXJjZV8pIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIG93bmVyLFxuICAgICAgICAgIGxhbmd1YWdlSWQsXG4gICAgICAgICAgcHJvamVjdElkLFxuICAgICAgICAgIGJyYW5jaCA9ICdtYXN0ZXInLFxuICAgICAgICAgIHJlZiA9IG51bGwsXG4gICAgICAgIH0gPSByZXNvdXJjZV8gfHwge31cbiAgICAgICAgY29uc3QgcmVmXyA9IHJlZiB8fCBicmFuY2hcblxuICAgICAgICByZXNvdXJjZUxpbmsgPSBnZXRSZXNvdXJjZUxpbmsoe1xuICAgICAgICAgIG93bmVyLFxuICAgICAgICAgIGxhbmd1YWdlSWQsXG4gICAgICAgICAgcmVzb3VyY2VJZDogcHJvamVjdElkLFxuICAgICAgICAgIHJlZjogcmVmXyxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgYm9va1JlZiA9IHsgLi4ucmVmZXJlbmNlIH1cblxuICAgICAgaWYgKHdob2xlQm9vaykge1xuICAgICAgICBkZWxldGUgYm9va1JlZi5jaGFwdGVyIC8vIHJlbW92ZSB0aGUgY2hhcHRlciBhbmQgdmVyc2Ugc28gdGhlIHdob2xlIGJvb2sgaXMgZmV0Y2hlZFxuICAgICAgICBkZWxldGUgYm9va1JlZi52ZXJzZVxuICAgICAgfVxuXG4gICAgICBpZiAocmVzb3VyY2VMaW5rICE9PSBmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgLSBmb3IgJHtyZXNvdXJjZV8/LnByb2plY3RJZH0gcmVzb3VyY2VMaW5rIGlzIG5vdyAke3Jlc291cmNlTGlua30gYW5kIHJlc291cmNlTGlua189JHtyZXNvdXJjZUxpbmtffWApXG4gICAgICB9IGVsc2UgaWYgKGJvb2tSZWYgIT09IGZldGNoUGFyYW1zPy5yZWZlcmVuY2UpIHtcbiAgICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSAtIGJvb2sgY2hhbmdlZCB0byAke3Jlc291cmNlXz8ucHJvamVjdElkfSByZXNvdXJjZUxpbmsgaXMgbm93ICR7cmVzb3VyY2VMaW5rfWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5ld0ZldGNoUGFyYW1zID0ge1xuICAgICAgICByZXNvdXJjZUxpbmssXG4gICAgICAgIHJlZmVyZW5jZTogYm9va1JlZixcbiAgICAgICAgY29uZmlnLFxuICAgICAgfVxuXG4gICAgICBpZiAoIWlzRXF1YWwobmV3RmV0Y2hQYXJhbXMsIGZldGNoUGFyYW1zKSkge1xuICAgICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIC0gRkVUQ0hJTkcgbmV3IHBhcmFtcyAke3Jlc291cmNlXz8ucHJvamVjdElkfSByZXNvdXJjZUxpbmsgaXMgbm93ICR7cmVzb3VyY2VMaW5rfSBhbmQgcmVzb3VyY2VMaW5rXz0ke3Jlc291cmNlTGlua199YCwgbmV3RmV0Y2hQYXJhbXMpXG4gICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICBmZXRjaFBhcmFtczogbmV3RmV0Y2hQYXJhbXMsXG4gICAgICAgICAgZmV0Y2hlZDogZmFsc2UsXG4gICAgICAgICAgaWdub3JlU2hhOiBudWxsLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgfSwgW3JlYWR5Rm9yRmV0Y2gsIF9ib29rSWQsIHJlc291cmNlTGlua19dKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSAtIGZvciAke3Jlc291cmNlXz8ucHJvamVjdElkfSByZWFkeUZvckZldGNoIGlzIG5vdyAke3JlYWR5Rm9yRmV0Y2h9YClcbiAgfSwgW3JlYWR5Rm9yRmV0Y2hdKVxuXG4gIGNvbnN0IG9wdGlvbnMgPSB7IGdldEJpYmxlSnNvbjogdHJ1ZSB9XG5cbiAgY29uc3QgX3Jlc291cmNlUmVzdWx0cyA9IHVzZVJzcmMoe1xuICAgIGNvbmZpZzogZmV0Y2hQYXJhbXM/LmNvbmZpZyxcbiAgICByZWZlcmVuY2U6IGZldGNoUGFyYW1zPy5yZWZlcmVuY2UsXG4gICAgcmVzb3VyY2VMaW5rOiBmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rLFxuICAgIG9wdGlvbnMsXG4gIH0pXG5cbiAgLy8gb25seSB1c2UgdGhlIHJlc3VsdHMgaWYgcmVhZHlUb0ZldGNoXG4gIGNvbnN0IHtcbiAgICBiaWJsZUpzb24sXG4gICAgY29udGVudCxcbiAgICBmZXRjaFJlc3BvbnNlLFxuICAgIGxvYWRpbmdSZXNvdXJjZSxcbiAgICBsb2FkaW5nQ29udGVudCxcbiAgICBtYXRjaGVkVmVyc2UsXG4gICAgcmVzb3VyY2UsXG4gIH0gPSByZXNvdXJjZVN0YXRlXG5cbiAgdXNlRGVlcENvbXBhcmVFZmZlY3QoKCkgPT4geyAvLyB2YWxpZGF0ZSByZXNwb25zZSB0byBtYWtlIHN1cmUgZnJvbSBsYXRlc3QgcmVxdWVzdFxuICAgIGlmIChyZWFkeUZvckZldGNoKSB7XG4gICAgICBjb25zdCBjdXJyZW50UmVzb3VyY2VTdGF0ZSA9IF9yZXNvdXJjZVJlc3VsdHM/LnN0YXRlXG5cbiAgICAgIGlmICghZmV0Y2hlZCAmJiAhaXNFcXVhbChjdXJyZW50UmVzb3VyY2VTdGF0ZSwgcmVzb3VyY2VTdGF0ZSkpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGNvbnRlbnQsXG4gICAgICAgICAgZmV0Y2hSZXNwb25zZSxcbiAgICAgICAgICBsb2FkaW5nQ29udGVudCxcbiAgICAgICAgICBsb2FkaW5nUmVzb3VyY2UsXG4gICAgICAgIH0gPSBjdXJyZW50UmVzb3VyY2VTdGF0ZVxuICAgICAgICAvLyBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIHJlc291cmNlcyBjaGFuZ2VkYCwgeyBjb250ZW50LCBmZXRjaFBhcmFtcywgZmV0Y2hSZXNwb25zZSB9KVxuXG4gICAgICAgIGlmICghbG9hZGluZ0NvbnRlbnQgJiYgIWxvYWRpbmdSZXNvdXJjZSAmJiBjb250ZW50ICYmIGZldGNoUmVzcG9uc2UpIHtcbiAgICAgICAgICBjb25zdCBuZXdTdGF0ZSA9IHsgcmVzb3VyY2VTdGF0ZTogY3VycmVudFJlc291cmNlU3RhdGUgfVxuXG4gICAgICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSBjb250ZW50IGNoYW5nZWRgLCB7XG4gICAgICAgICAgICBjb250ZW50LFxuICAgICAgICAgICAgZmV0Y2hQYXJhbXMsXG4gICAgICAgICAgICBmZXRjaFJlc3BvbnNlLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICAvLyBUUklDS1kgLSByZXNwb25zZXMgZnJvbSBzZXJ2ZXIgY2FuIGNvbWUgYmFjayBmcm9tIHByZXZpb3VzIHJlcXVlc3RzLiAgU28gd2UgbWFrZSBzdXJlIHRoaXMgcmVzcG9uc2UgaXMgZm9yIHRoZSBjdXJyZW50IHJlcXVlc3RlZCBib29rXG4gICAgICAgICAgbGV0IHNhbWVCb29rID0gZmFsc2VcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgY29uc3QgZXhwZWN0ZWRCb29rSWQgPSBfYm9va0lkIHx8ICcnXG4gICAgICAgICAgY29uc3QgZmV0Y2hlZEJvb2sgPSBjb250ZW50Lm5hbWVcblxuICAgICAgICAgIGlmIChmZXRjaGVkQm9vayAmJiBleHBlY3RlZEJvb2tJZCkge1xuICAgICAgICAgICAgY29uc3QgW25hbWUsIGV4dF0gPSBmZXRjaGVkQm9vay5zcGxpdCgnLicpXG5cbiAgICAgICAgICAgIGlmIChleHQudG9Mb3dlckNhc2UoKSA9PT0gJ3VzZm0nKSB7XG4gICAgICAgICAgICAgIHNhbWVCb29rID0gbmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGV4cGVjdGVkQm9va0lkLnRvTG93ZXJDYXNlKCkpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3Qgc2hhID0gZmV0Y2hSZXNwb25zZT8uZGF0YT8uc2hhIHx8IG51bGxcbiAgICAgICAgICBjb25zdCB1cmwgPSBmZXRjaFJlc3BvbnNlPy5kYXRhPy51cmwgfHwgbnVsbFxuXG4gICAgICAgICAgaWYgKHNhbWVCb29rKSB7IC8vIGFsc28gbWFrZSBzdXJlIGl0IGlzIHRoZSBzYW1lIGJyYW5jaFxuICAgICAgICAgICAgY29uc3QgZmV0Y2hlZEJyYW5jaCA9IGdldEJyYW5jaE5hbWUodXJsKVxuICAgICAgICAgICAgY29uc3QgZmV0Y2hpbmdCcmFuY2ggPSBnZXRCcmFuY2hOYW1lKGZldGNoUGFyYW1zPy5yZXNvdXJjZUxpbmspXG5cbiAgICAgICAgICAgIGlmIChmZXRjaGVkQnJhbmNoICE9PSBmZXRjaGluZ0JyYW5jaCkge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIGludmFsaWQgYnJhbmNoLCBleHBlY3RlZCBicmFuY2ggaXMgJHtmZXRjaGluZ0JyYW5jaH0sIGJ1dCBmZXRjaGVkQnJhbmNoIGlzICR7ZmV0Y2hlZEJyYW5jaH1gLCB7IHNoYSwgdXJsIH0pXG4gICAgICAgICAgICAgIHNhbWVCb29rID0gZmFsc2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoaWdub3JlU2hhID09PSBzaGEpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgLSB0aGUgc2hhIGlzIHRoZSBzYW1lIGFzIHRoZSBpZ25vcmUgc2hhICR7c2hhfWAsIHsgc2hhLCB1cmwgfSlcbiAgICAgICAgICAgIHNhbWVCb29rID0gZmFsc2VcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIXNhbWVCb29rKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIGludmFsaWQgYm9vaywgZXhwZWN0ZWRCb29rSWQgaXMgJHtleHBlY3RlZEJvb2tJZH0sIGJ1dCByZWNlaXZlZCBib29rIG5hbWUgJHtmZXRjaGVkQm9va31gLCB7IHNoYSwgdXJsIH0pXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5ld1N0YXRlWydiaWJsZVVzZm0nXSA9IGNvcmUuZ2V0UmVzcG9uc2VEYXRhKGZldGNoUmVzcG9uc2UpXG4gICAgICAgICAgICBuZXdTdGF0ZVsnYm9va09iamVjdHMnXSA9IGNvbnRlbnRcbiAgICAgICAgICAgIG5ld1N0YXRlWyd2ZXJzZXNGb3JSZWYnXSA9IHVwZGF0ZVZlcnNlc0ZvclJlZihjb250ZW50KVxuICAgICAgICAgICAgbmV3U3RhdGVbJ2ZldGNoZWRCb29rJ10gPSBleHBlY3RlZEJvb2tJZFxuXG4gICAgICAgICAgICBpZiAoIWlzRXF1YWwobmV3U3RhdGUsIHtcbiAgICAgICAgICAgICAgYmlibGVVc2ZtLFxuICAgICAgICAgICAgICBib29rT2JqZWN0cyxcbiAgICAgICAgICAgICAgdmVyc2VzRm9yUmVmLFxuICAgICAgICAgICAgICBmZXRjaGVkQm9vazogZXhwZWN0ZWRCb29rSWQsXG4gICAgICAgICAgICAgIHJlc291cmNlU3RhdGUsXG4gICAgICAgICAgICB9KSkge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIGNvcnJlY3QgYm9vaywgZXhwZWN0ZWRCb29rSWQgaXMgJHtleHBlY3RlZEJvb2tJZH1gLCB7IHNoYSwgdXJsIH0pXG4gICAgICAgICAgICAgIG5ld1N0YXRlWydmZXRjaGVkJ10gPSB0cnVlXG4gICAgICAgICAgICAgIG5ld1N0YXRlWydpZ25vcmVTaGEnXSA9IG51bGxcbiAgICAgICAgICAgICAgc2V0U3RhdGUobmV3U3RhdGUpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICghaXNFcXVhbChjdXJyZW50UmVzb3VyY2VTdGF0ZSwgcmVzb3VyY2VTdGF0ZSkpIHtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgc3RhdGUgY2hhbmdlZCwgYnV0IG5vIGNvbnRlbnRgLCBjdXJyZW50UmVzb3VyY2VTdGF0ZSlcbiAgICAgICAgICAgIHNldFN0YXRlKHsgcmVzb3VyY2VTdGF0ZTogY3VycmVudFJlc291cmNlU3RhdGUgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sIFtyZWFkeUZvckZldGNoLCBfcmVzb3VyY2VSZXN1bHRzPy5zdGF0ZV0pXG5cbiAgY29uc3QgeyB0aXRsZSwgdmVyc2lvbiB9ID0gcGFyc2VSZXNvdXJjZU1hbmlmZXN0KHJlc291cmNlKVxuICBjb25zdCB7IGxhbmd1YWdlSWQgfSA9IHJlc291cmNlXyB8fCB7fVxuICBjb25zdCBsb2FkaW5nID0gbG9hZGluZ1Jlc291cmNlIHx8IGxvYWRpbmdDb250ZW50IHx8ICFyZWFkeUZvckZldGNoXG4gIGNvbnN0IGNvbnRlbnROb3RGb3VuZEVycm9yID0gIWNvbnRlbnRcbiAgY29uc3Qgc2NyaXB0dXJlTm90TG9hZGVkRXJyb3IgPSAhYmlibGVKc29uXG4gIGNvbnN0IG1hbmlmZXN0Tm90Rm91bmRFcnJvciA9ICFyZXNvdXJjZT8ubWFuaWZlc3RcbiAgY29uc3QgaW52YWxpZE1hbmlmZXN0RXJyb3IgPSAhdGl0bGUgfHwgIXZlcnNpb24gfHwgIWxhbmd1YWdlSWRcbiAgY29uc3QgZXJyb3IgPSByZWFkeUZvckZldGNoICYmIGluaXRpYWxpemVkICYmICFsb2FkaW5nICYmXG4gICAgKGNvbnRlbnROb3RGb3VuZEVycm9yIHx8IHNjcmlwdHVyZU5vdExvYWRlZEVycm9yIHx8IG1hbmlmZXN0Tm90Rm91bmRFcnJvciB8fCBpbnZhbGlkTWFuaWZlc3RFcnJvcilcbiAgY29uc3QgcmVzb3VyY2VTdGF0dXMgPSB7XG4gICAgW0xPQURJTkdfU1RBVEVdOiBsb2FkaW5nLFxuICAgIFtDT05URU5UX05PVF9GT1VORF9FUlJPUl06IGNvbnRlbnROb3RGb3VuZEVycm9yLFxuICAgIFtTQ1JJUFRVUkVfTk9UX0xPQURFRF9FUlJPUl06IHNjcmlwdHVyZU5vdExvYWRlZEVycm9yLFxuICAgIFtNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SXTogbWFuaWZlc3ROb3RGb3VuZEVycm9yLFxuICAgIFtJTlZBTElEX01BTklGRVNUX0VSUk9SXTogaW52YWxpZE1hbmlmZXN0RXJyb3IsXG4gICAgW0VSUk9SX1NUQVRFXTogZXJyb3IsXG4gICAgW0lOSVRJQUxJWkVEX1NUQVRFXTogaW5pdGlhbGl6ZWQsXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghcmVhZHlGb3JGZXRjaCkge1xuICAgICAgaWYgKGluaXRpYWxpemVkKSB7XG4gICAgICAgIHNldFN0YXRlKHsgaW50aWFsaXplZDogZmFsc2UgfSlcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCFpbml0aWFsaXplZCkge1xuICAgICAgaWYgKGxvYWRpbmcpIHsgLy8gb25jZSBmaXJzdCBsb2FkIGhhcyBiZWd1biwgd2UgYXJlIGluaXRpYWxpemVkXG4gICAgICAgIHNldFN0YXRlKHsgaW50aWFsaXplZDogdHJ1ZSB9KVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2xvYWRpbmcsIHJlYWR5Rm9yRmV0Y2hdKVxuXG4gIC8qKlxuICAgKiBnZXQgdmVyc2VzIGZvciByZWZcbiAgICogQHBhcmFtIHJlZlN0clxuICAgKiBAcGFyYW0gY29udGVudF9cbiAgICovXG4gIGZ1bmN0aW9uIF9nZXRWZXJzZXNGb3JSZWYocmVmU3RyLCBjb250ZW50XyA9IGJvb2tPYmplY3RzKSB7XG4gICAgaWYgKGNvbnRlbnRfKSB7XG4gICAgICByZXR1cm4gZ2V0VmVyc2VzRm9yUmVmU3RyKHJlZlN0ciwgY29udGVudF8sIGxhbmd1YWdlSWQpXG4gICAgfVxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBmdW5jdGlvbiB1cGRhdGVWZXJzZShjaGFwdGVyLCB2ZXJzZSwgdmVyc2VEYXRhKSB7XG4gICAgaWYgKGJvb2tPYmplY3RzKSB7XG4gICAgICBjb25zdCBib29rT2JqZWN0c18gPSB7IC4uLmJvb2tPYmplY3RzIH0gLy8gc2hhbGxvdyBjb3B5XG5cbiAgICAgIGlmIChib29rT2JqZWN0c18/LmNoYXB0ZXJzKSB7XG4gICAgICAgIGJvb2tPYmplY3RzXy5jaGFwdGVycyA9IHsgLi4uYm9va09iamVjdHNfLmNoYXB0ZXJzIH0gLy8gc2hhbGxvdyBjb3B5IGNoYXB0ZXJzXG5cbiAgICAgICAgaWYgKGJvb2tPYmplY3RzXy5jaGFwdGVyc1tjaGFwdGVyXSkge1xuICAgICAgICAgIGJvb2tPYmplY3RzXy5jaGFwdGVyc1tjaGFwdGVyXSA9IHsgLi4uYm9va09iamVjdHNfLmNoYXB0ZXJzW2NoYXB0ZXJdIH0gLy8gc2hhbGxvdyBjb3B5IHZlcnNlc1xuICAgICAgICAgIGJvb2tPYmplY3RzXy5jaGFwdGVyc1tjaGFwdGVyXVt2ZXJzZV0gPSB2ZXJzZURhdGFcbiAgICAgICAgICBzZXRTdGF0ZSh7IGJvb2tPYmplY3RzOiBib29rT2JqZWN0c18gfSlcbiAgICAgICAgICByZXR1cm4gYm9va09iamVjdHNfXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZVZlcnNlc0ZvclJlZihfYm9va09iamVjdHMgPSBib29rT2JqZWN0cykge1xuICAgIGxldCBuZXdWZXJzZXNGb3JSZWYgPSBbXVxuXG4gICAgaWYgKF9ib29rT2JqZWN0cykge1xuICAgICAgbmV3VmVyc2VzRm9yUmVmID0gZ2V0VmVyc2VzRm9yUmVmKHJlZmVyZW5jZSwgX2Jvb2tPYmplY3RzLCBsYW5ndWFnZUlkKVxuICAgICAgcmV0dXJuIG5ld1ZlcnNlc0ZvclJlZlxuICAgIH1cblxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICAvKipcbiAgICogZm9yY2UgcmVsb2FkIG9mIGN1cnJlbnQgcmVzb3VyY2VcbiAgICogQHBhcmFtIHtzdHJpbmd8dW5kZWZpbmVkfSBpZ25vcmVTaGEgLSBvcHRpb25hbCBzaGEgdG8gaWdub3JlXG4gICAqL1xuICBmdW5jdGlvbiByZWxvYWRSZXNvdXJjZShpZ25vcmVTaGEgPSBudWxsKSB7XG4gICAgY29uc3QgX3JlbG9hZFJlc291cmNlID0gX3Jlc291cmNlUmVzdWx0cz8uYWN0aW9ucy5yZWxvYWRSZXNvdXJjZVxuXG4gICAgaWYgKF9yZWxvYWRSZXNvdXJjZSkge1xuICAgICAgY29uc3QgbmV3U3RhdGUgPSB7IGZldGNoZWQ6IGZhbHNlIH1cblxuICAgICAgaWYgKGlnbm9yZVNoYSkgeyAvLyBUUklDS1kgLSBpZiB0aGUgcmVzcG9uc2Ugd2FzIGZvciB0aGlzIHNoYSAod2hpY2ggd2FzIHRoZSBwcmV2aW91cyBzaGEpIHRoZW4gd2UgbmVlZCB0byBpZ25vcmUgaXRcbiAgICAgICAgbmV3U3RhdGVbJ2lnbm9yZVNoYSddID0gaWdub3JlU2hhXG4gICAgICB9XG4gICAgICBzZXRTdGF0ZSggbmV3U3RhdGUpXG4gICAgICBfcmVsb2FkUmVzb3VyY2UoKVxuICAgIH1cbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgY3VycmVudEJvb2tSZWYgPSBmZXRjaFBhcmFtcz8ucmVmZXJlbmNlPy5wcm9qZWN0SWRcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjdXJyZW50Qm9va1JlZikge1xuICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSBmZXRjaGVkIGJvb2sgY2hhbmdlZCB0byAke2N1cnJlbnRCb29rUmVmfSwgJHtyZXNvdXJjZUxpbmtffWAsIHsgY29udGVudCwgZmV0Y2hQYXJhbXMgfSlcbiAgICAgIHNldFN0YXRlKHsgYm9va09iamVjdHM6IG51bGwgfSlcbiAgICB9XG4gICAgLy8gQHRzLWlnbm9yZVxuICB9LCBbY3VycmVudEJvb2tSZWZdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSBib29rIHJlZiBjaGFuZ2VkIHRvICR7X2Jvb2tJZH0sICR7cmVzb3VyY2VMaW5rX31gKVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgfSwgW19ib29rSWRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZXhwZWN0ZWRCb29rSWQgPSBfYm9va0lkIHx8ICcnXG4gICAgY29uc3QgZmV0Y2hlZEJvb2tTYW1lID0gZmV0Y2hlZEJvb2sgJiYgKGZldGNoZWRCb29rID09PSBleHBlY3RlZEJvb2tJZClcbiAgICBsZXQgX3ZlcnNlc0ZvclJlZiA9IFtdXG5cbiAgICBpZiAoIWZldGNoZWRCb29rU2FtZSkge1xuICAgICAgLy8gaWYgKGV4cGVjdGVkQm9va0lkICYmIGZldGNoZWRCb29rKSB7XG4gICAgICAvLyAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgZXhwZWN0ZWQgYm9vayAke2V4cGVjdGVkQm9va0lkfSBidXQgZmV0Y2hlZCBib29rIHdhcyAke2ZldGNoZWRCb29rfSAtIGNsZWFyaW5nYClcbiAgICAgIC8vIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgX2Jvb2tPYmplY3RzID0gZmV0Y2hlZEJvb2tTYW1lID8gYm9va09iamVjdHMgOiBudWxsXG4gICAgICBfdmVyc2VzRm9yUmVmID0gdXBkYXRlVmVyc2VzRm9yUmVmKF9ib29rT2JqZWN0cylcbiAgICAgIC8vIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgX2Jvb2tPYmplY3RzIGlzICR7ISFfYm9va09iamVjdHN9IGFuZCBib29rcyBhcmUgdGhlIHNhbWUgJHtmZXRjaGVkQm9va31gLCB7IGNvbnRlbnQsIGZldGNoUGFyYW1zIH0pXG4gICAgfVxuXG4gICAgaWYgKCFpc0VxdWFsKF92ZXJzZXNGb3JSZWYsIHZlcnNlc0ZvclJlZikpIHtcbiAgICAgIHNldFN0YXRlKHsgdmVyc2VzRm9yUmVmOiBfdmVyc2VzRm9yUmVmIH0pXG4gICAgfVxuICB9LCBbcmVmZXJlbmNlXSlcblxuICByZXR1cm4ge1xuICAgIGJpYmxlVXNmbSxcbiAgICBib29rT2JqZWN0cyxcbiAgICBmZXRjaFJlc3BvbnNlLFxuICAgIGdldFZlcnNlc0ZvclJlZjogX2dldFZlcnNlc0ZvclJlZixcbiAgICBtYXRjaGVkVmVyc2UsXG4gICAgcmVmZXJlbmNlOiBmZXRjaFBhcmFtcz8ucmVmZXJlbmNlLFxuICAgIHJlbG9hZFJlc291cmNlLFxuICAgIHJlc291cmNlTGluazogZmV0Y2hQYXJhbXM/LnJlc291cmNlTGluayxcbiAgICByZXNvdXJjZVN0YXR1cyxcbiAgICB0aXRsZSxcbiAgICB1cGRhdGVWZXJzZSxcbiAgICB2ZXJzaW9uLFxuICAgIHZlcnNlc0ZvclJlZixcbiAgfVxufVxuIl19
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "single-scripture-rcl",
3
3
  "description": "A React Component Library for Rendering a Single Scripture Resource.",
4
- "version": "3.4.5",
4
+ "version": "3.4.6",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/unfoldingWord/single-scripture-rcl.git"
@@ -11,13 +11,6 @@
11
11
  "files": [
12
12
  "dist/*"
13
13
  ],
14
- "scripts": {
15
- "test": "jest",
16
- "start": "styleguidist server NODE_OPTIONS=--max_old_space_size=4096",
17
- "build": "styleguidist build",
18
- "prepublishOnly": "rm -fr ./dist && babel ./src --out-dir ./dist -s inline --extensions \".ts,.tsx,.js\"",
19
- "pack-next": "yarn version --prerelease && yarn && yarn run prepublishOnly && yarn pack"
20
- },
21
14
  "peerDependencies": {
22
15
  "@material-ui/core": "4.11.0",
23
16
  "@material-ui/icons": "^4.9.1",
@@ -101,5 +94,11 @@
101
94
  "ts-loader": "^8.0.12",
102
95
  "typescript": "^5.2.2",
103
96
  "uw-quote-helpers": "0.0.1-beta.15"
97
+ },
98
+ "scripts": {
99
+ "test": "jest",
100
+ "start": "styleguidist server NODE_OPTIONS=--max_old_space_size=4096",
101
+ "build": "styleguidist build",
102
+ "pack-next": "yarn version --prerelease && yarn && yarn run prepublishOnly && yarn pack"
104
103
  }
105
- }
104
+ }