single-scripture-rcl 3.4.7 → 3.4.8

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.
@@ -760,13 +760,13 @@ export default function ScriptureCard(_ref2) {
760
760
  readyForFetch: true,
761
761
  ref: userEditBranchName
762
762
  });
763
- delay(500).then(function () {
763
+ delay(100).then(function () {
764
764
  setCardsSaving(function (prevCardsSaving) {
765
765
  return prevCardsSaving.filter(function (cardId) {
766
766
  return cardId !== cardResourceId;
767
767
  });
768
768
  });
769
- scriptureConfig === null || scriptureConfig === void 0 ? void 0 : scriptureConfig.reloadResource(sha);
769
+ scriptureConfig === null || scriptureConfig === void 0 ? void 0 : scriptureConfig.reloadResource(sha, userEditBranchName);
770
770
  });
771
771
  } else {
772
772
  console.error('saveChangesToCloud() - saving changed scripture failed');
@@ -1561,4 +1561,4 @@ ScriptureCard.propTypes = {
1561
1561
  /** use method for using local storage specific for user */
1562
1562
  useUserLocalStorage: PropTypes.func.isRequired
1563
1563
  };
1564
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NjcmlwdHVyZUNhcmQvU2NyaXB0dXJlQ2FyZC50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJQcm9wVHlwZXMiLCJjb3JlIiwiU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciIsInVzZm1qcyIsInVzZUVkaXQiLCJJY29uQnV0dG9uIiwiUnhMaW5rMiIsIlJ4TGlua0JyZWFrMiIsIkNhcmQiLCJFcnJvckRpYWxvZyIsIkVSUk9SX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsIlVwZGF0ZUJyYW5jaEJ1dHRvbiIsInVzZUJyYW5jaE1lcmdlciIsInVzZUNhcmRTdGF0ZSIsInVzZUNvbnRlbnRVcGRhdGVQcm9wcyIsInVzZU1hc3Rlck1lcmdlUHJvcHMiLCJ1c2VVc2VyQnJhbmNoIiwiZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIiwiQWxpZ25tZW50SGVscGVycyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJpc0VxdWFsIiwiZ2V0VmVyc2VzIiwiU2NyaXB0dXJlUGFuZSIsIlNjcmlwdHVyZVNlbGVjdG9yIiwidXNlU2NyaXB0dXJlU2V0dGluZ3MiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwiZml4T2NjdXJyZW5jZSIsImdldEJvb2tOYW1lRnJvbVVzZm1GaWxlTmFtZSIsImdldFJlc291cmNlTGluayIsImdldFJlc291cmNlTWVzc2FnZSIsImdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyIsImlzT3JpZ2luYWxCaWJsZSIsImRlbGF5IiwiYXJlTWFwc1RoZVNhbWUiLCJUaXRsZSIsIk5UX09SSUdfTEFORyIsIk9SSUdJTkFMX1NPVVJDRSIsIk9UX09SSUdfTEFORyIsIlZlcnNlU2VsZWN0b3JQb3B1cCIsIktFWV9GT05UX1NJWkVfQkFTRSIsImxhYmVsIiwic3R5bGUiLCJtYXJnaW5Ub3AiLCJ3aWR0aCIsImNvbXBhcmVPYmplY3QiLCJ2ZXJzZVJlZiIsImNoYXB0ZXIiLCJ2ZXJzZSIsInZlcnNlRGF0YSIsInZlcnNlT2JqZWN0cyIsImxlbmd0aCIsIkpTT04iLCJzdHJpbmdpZnkiLCJhcmVWZXJzZXNTYW1lIiwidmVyc2VzRm9yUmVmMSIsInZlcnNlc0ZvclJlZjIiLCJhcmVTYW1lIiwiaSIsImwiLCJ2ZXJzZTEiLCJ2ZXJzZTIiLCJnZXRDdXJyZW50Qm9vayIsInNjcmlwdHVyZUNvbmZpZyIsImJvb2tJZCIsImxhdGVzdEJpYmxlIiwicmVzb3VyY2VTdGF0ZSIsInJlc291cmNlIiwicHJvamVjdElkIiwiZmlsZW5hbWUiLCJuYW1lIiwiaXNCb29rVmFsaWQiLCJib29rTmFtZSIsInRvTG93ZXJDYXNlIiwiaW5jbHVkZXMiLCJjb25zb2xlIiwid2FybiIsImJpYmxlVXNmbSIsImVycm9yIiwiU2NyaXB0dXJlQ2FyZCIsImFwcFJlZiIsImF1dGhlbnRpY2F0aW9uIiwiYm9va0luZGV4IiwiY2FyZE51bSIsImNsYXNzZXMiLCJkaXNhYmxlV29yZFBvcG92ZXIiLCJnZXRMYW5ndWFnZSIsImdldExleGljb25EYXRhIiwiZ3JlZWtSZXBvVXJsIiwiaGVicmV3UmVwb1VybCIsImh0dHBDb25maWciLCJpZCIsImlzTlQiLCJsb2dnZWRJblVzZXIiLCJvbk1pbmltaXplIiwib25SZXNvdXJjZUVycm9yIiwib3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyIsInJlZmVyZW5jZSIsIm93bmVyIiwibGFuZ3VhZ2VJZCIsInJlc291cmNlSWQiLCJvcmlnaW5hbExhbmd1YWdlT3duZXIiLCJyZXNvdXJjZUxpbmsiLCJzZWxlY3RlZFF1b3RlIiwic2VydmVyIiwic2V0Q2FyZHNMb2FkaW5nTWVyZ2UiLCJzZXRDYXJkc0xvYWRpbmdVcGRhdGUiLCJzZXRDYXJkc1NhdmluZyIsInNldFNhdmVkQ2hhbmdlcyIsInNldFdvcmRBbGlnbmVyU3RhdHVzIiwidHJhbnNsYXRlIiwidGl0bGUiLCJ1c2VVc2VyTG9jYWxTdG9yYWdlIiwidXBkYXRlTWVyZ2VTdGF0ZSIsInVzZVN0YXRlIiwiY2hlY2tGb3JFZGl0QnJhbmNoIiwiY3VycmVudFJlZmVyZW5jZSIsImVkaXRCcmFuY2hSZWFkeSIsImhhdmVVbnNhdmVkQ2hhbmdlcyIsImxhc3RTZWxlY3RlZFF1b3RlIiwicmVhZHlGb3JGZXRjaCIsInJlZiIsInNhdmVDbGlja2VkIiwic2F2ZUNvbnRlbnQiLCJzZWxlY3Rpb25zIiwiTWFwIiwic2hvd0FsaWdubWVudFBvcHVwIiwic3RhcnRTYXZlIiwidXJsRXJyb3IiLCJ1c2luZ1VzZXJCcmFuY2giLCJ1bnNhdmVkQ2hhbmdlc0xpc3QiLCJ2ZXJzZXNBbGlnbm1lbnRTdGF0dXMiLCJ2ZXJzZXNGb3JSZWYiLCJ2ZXJzZU9iamVjdHNNYXAiLCJ2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50Iiwic3RhdGUiLCJzZXRTdGF0ZV8iLCJmb250U2l6ZSIsInNldEZvbnRTaXplIiwiaXNOVF8iLCJzZXRTdGF0ZSIsIm5ld1N0YXRlIiwicHJldlN0YXRlIiwiY2FjaGUiLCJtYXhBZ2UiLCJub0NhY2hlIiwic2V0VXJsRXJyb3IiLCJ3aG9sZUJvb2siLCJpc05ld1Rlc3RhbWVudCIsInNldFNjcmlwdHVyZSIsInNjcmlwdHVyZVNldHRpbmdzIiwic2NyaXB0dXJlVmVyc2lvbkhpc3QiLCJmZXRjaGVkUmVzb3VyY2UiLCJyZXBvIiwicmVmZXJlbmNlXyIsImNhcmRSZXNvdXJjZUlkIiwicmVmXyIsImNhblVzZUVkaXRCcmFuY2giLCJjYXJkSWQiLCJicmFuY2hEZXRlcm1pbmVkIiwidXNlckVkaXRCcmFuY2hOYW1lIiwiX3VzaW5nVXNlckJyYW5jaCIsIndvcmtpbmdSZXNvdXJjZUJyYW5jaCIsImFjdGlvbnMiLCJzdGFydEVkaXRCcmFuY2giLCJzdGFydEVkaXQiLCJmaW5pc2hFZGl0IiwiX3VzZUJyYW5jaE1lcmdlciIsInVzZXJCcmFuY2giLCJ0b2tlbmlkIiwidG9rZW4iLCJzaGExIiwibWVyZ2VUb01hc3RlciIsIm1lcmdlU3RhdHVzIiwibWVyZ2VGcm9tTWFzdGVyIiwidXBkYXRlU3RhdHVzIiwidXBkYXRlQnV0dG9uUHJvcHMiLCJpc1NhdmluZyIsIm9uVXBkYXRlIiwidGhlbiIsInJlbG9hZFJlc291cmNlIiwiY2FsbFVwZGF0ZVVzZXJCcmFuY2giLCJpc0Vycm9yRGlhbG9nT3BlbiIsIm9uQ2xvc2VFcnJvckRpYWxvZyIsImlzVXBkYXRlTG9hZGluZyIsImlzTG9hZGluZyIsImRpYWxvZ01lc3NhZ2UiLCJkaWFsb2dUaXRsZSIsImRpYWxvZ0xpbmsiLCJkaWFsb2dMaW5rVG9vbHRpcCIsIm9uTWVyZ2UiLCJsb2ciLCJpc01lcmdlTG9hZGluZyIsImNhbGxNZXJnZVVzZXJCcmFuY2giLCJ1c2VFZmZlY3QiLCJwcmV2Q2FyZHNMb2FkaW5nIiwiZmlsdGVyIiwid29ya2luZ1JlZiIsInNjcmlwdHVyZVRpdGxlIiwicmVzb3VyY2VTdGF0dXMiLCJtZXNzYWdlIiwiaXNBY2Nlc3NFcnJvciIsInZlcnNpb24iLCJ1cGRhdGVUaXRsZSIsImdldFNjcmlwdHVyZVNlbGVjdG9yIiwic2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnIiwib25NZW51Q2xvc2UiLCJsYW5ndWFnZUlkXyIsImxhbmd1YWdlIiwiZGlyZWN0aW9uIiwiX3JlZmVyZW5jZSIsImlzSGVicmV3IiwiZm9udEZhY3RvciIsInNjYWxlZEZvbnRTaXplIiwiaXRlbXMiLCJoZWFkZXJzIiwiZmlsdGVycyIsIml0ZW1JbmRleCIsIm1hcmtkb3duVmlldyIsInNldEZpbHRlcnMiLCJzZXRJdGVtSW5kZXgiLCJzZXRNYXJrZG93blZpZXciLCJyZWZTdHlsZSIsInVzZU1lbW8iLCJmb250RmFtaWx5IiwiTWF0aCIsInJvdW5kIiwiY29udGVudFN0eWxlIiwic2NyaXB0dXJlTGFiZWwiLCJkaXNhYmxlV29yZFBvcG92ZXJfIiwidXNpbmdPcmlnaW5hbEJpYmxlIiwidW5kZWZpbmVkIiwiZW5hYmxlRWRpdCIsImVuYWJsZUFsaWdubWVudCIsIm9yaWdpbmFsUmVwb1VybCIsInNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWciLCJjdXJyZW50VmVyc2VSZWYiLCJfc2V0U2F2ZWRDaGFuZ2VzIiwic291cmNlTGFuZ3VhZ2UiLCJ0YXJnZXRMYW5ndWFnZSIsImN1cnJlbnRJbmRleCIsInNhdmVkIiwiZ2V0Q2hhbmdlcyIsImNsZWFyQ2hhbmdlcyIsIl91bnNhdmVkQ2hhbmdlc0xpc3QiLCJoYXNPd25Qcm9wZXJ0eSIsIl9oYXZlVW5zYXZlZENoYW5nZXMiLCJPYmplY3QiLCJrZXlzIiwiZmluZFJlZkluQXJyYXkiLCJmaW5kSXRlbSIsImNodW5rcyIsInJlZkxlbiIsImluZGV4IiwiZmluZEluZGV4IiwiY2h1bmsiLCJpZHgiLCJzdWJzdHJpbmciLCJuZXh0Q2hhciIsImdldEJvb2tOYW1lIiwiYm9va0NhcHMiLCJ0b1VwcGVyQ2FzZSIsImZpbGVwYXRoIiwic2hhIiwiY29udGVudCIsImNvbmZpZyIsImRvbnRDcmVhdGVCcmFuY2giLCJ0aW1lb3V0Iiwic2VydmVyVGltZU91dCIsImF1dGhvciIsImJyYW5jaCIsInNhdmVFcnJvciIsImlzU2F2ZUVycm9yIiwiaXNFcnJvciIsIm9uU2F2ZUVkaXQiLCJfc2F2ZUVkaXQiLCJpbmZvIiwic3VjY2VzcyIsInByZXZDYXJkc1NhdmluZyIsInVuc2F2ZWRDYXJkSW5kaWNlcyIsImNhcmRJbmRleCIsIm1lcmdlVmVyc2VPYmplY3RzSW50b0JpYmxlVXNmbSIsInVwZGF0ZWRWZXJzZU9iamVjdHMiLCJuZXdVc2ZtIiwiY2hhcHRlckNodW5rcyIsInNwbGl0IiwiY2hhcHRlckluZGV4IiwiY3VycmVudENoYXB0ZXIiLCJ2ZXJzZUNodW5rcyIsInZlcnNlSW5kZXgiLCJuZXdWZXJzZVVzZm0iLCJjb252ZXJ0VmVyc2VEYXRhVG9VU0ZNIiwib2xkVmVyc2UiLCJ2ZXJzZU51bUxlbiIsIm5ld0NoYXB0ZXIiLCJqb2luIiwiZ2V0UmVhZHlGb3JTYXZlIiwiY3JlYXRlRWRpdEJyYW5jaCIsIm1lcmdlRmFpbCIsInBhcnNlSW50IiwibmV3VmVyc2VUZXh0IiwidGFyZ2V0VmVyc2VPYmplY3RzXyIsInVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlIiwidGFyZ2V0VmVyc2VPYmplY3RzIiwibmV3Qm9va0pzb24iLCJ1cGRhdGVWZXJzZSIsInRvVVNGTSIsImZvcmNlZE5ld0xpbmVzIiwiX3ZlcnNlc0ZvclJlZiIsIm5ld1NlbGVjdGlvbnMiLCJ1cGRhdGVTZWxlY3Rpb25zIiwiX21hcCIsIm9yaWdpbmFsQm9va0lkIiwiYm9va1ZlcnNlT2JqZWN0IiwiY2hhcHRlcnMiLCJuZXdTZWxlY3RlZFF1b3RlIiwicXVvdGUiLCJvcmlnaW5hbFZlcnNlcyIsInN1YnN0aXR1dGUiLCJzdGFydFZlcnNlIiwibGFzdFZlcnNlIiwiX3ZlcnNlIiwidmVyc2VzIiwidmVyc2VJdGVtIiwidm8iLCJjb25jYXQiLCJzZXQiLCJzdWJSZWYiLCJxdW90ZU1hdGNoZXMiLCJib29rT2JqZWN0Iiwib2NjdXJyZW5jZSIsInNpemUiLCJmb3JFYWNoIiwid29yZHMiLCJrZXkiLCJfa2V5IiwibWFwIiwid29yZCIsInRleHQiLCJub3JtYWxpemVTdHJpbmciLCJib29rc05vdFNhbWUiLCJ1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXMiLCJhbGlnbmVkIiwicmVuZGVyZWRTY3JpcHR1cmVQYW5lcyIsIl9jdXJyZW50VmVyc2VEYXRhIiwiaW5pdGlhbFZlcnNlT2JqZWN0cyIsIl9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnIiwiaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50IiwiaGFuZGxlQWxpZ25CdXR0b25DbGljayIsIm9uUmVuZGVyVG9vbGJhciIsIm5ld0l0ZW1zIiwiYWxsVmVyc2VzQWxpZ25lZCIsInZhbHVlcyIsImV2ZXJ5IiwiYWxpZ25TdGF0dXMiLCJhbGlnbkljb24iLCJhbGlnbkJ1dHRvblRleHQiLCJwdXNoIiwiY3Vyc29yIiwicHJvcFR5cGVzIiwic3RyaW5nIiwiaXNSZXF1aXJlZCIsIm9iamVjdCIsIm51bWJlciIsImJvb2wiLCJmdW5jIiwic2hhcGUiLCJvbmVPZlR5cGUiLCJhbnkiLCJzZXRBcmVSZXNvdXJjZXNMb2FkaW5nIiwic2V0QXJlUmVzb3Vy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IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgeyBjb3JlLCBTZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyIH0gZnJvbSAnc2NyaXB0dXJlLXJlc291cmNlcy1yY2wnXG5pbXBvcnQgdXNmbWpzIGZyb20gJ3VzZm0tanMnXG5pbXBvcnQgeyB1c2VFZGl0IH0gZnJvbSAnZ2l0ZWEtcmVhY3QtdG9vbGtpdCdcbmltcG9ydCB7IEljb25CdXR0b24gfSBmcm9tICdAbXVpL21hdGVyaWFsJ1xuaW1wb3J0IHsgUnhMaW5rMiwgUnhMaW5rQnJlYWsyIH0gZnJvbSAncmVhY3QtaWNvbnMvcngnXG5pbXBvcnQge1xuICBDYXJkLFxuICBFcnJvckRpYWxvZyxcbiAgRVJST1JfU1RBVEUsXG4gIE1BTklGRVNUX05PVF9MT0FERURfRVJST1IsXG4gIFVwZGF0ZUJyYW5jaEJ1dHRvbixcbiAgdXNlQnJhbmNoTWVyZ2VyLFxuICB1c2VDYXJkU3RhdGUsXG4gIHVzZUNvbnRlbnRVcGRhdGVQcm9wcyxcbiAgdXNlTWFzdGVyTWVyZ2VQcm9wcyxcbiAgdXNlVXNlckJyYW5jaCxcbn0gZnJvbSAndHJhbnNsYXRpb24taGVscHMtcmNsJ1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIH0gZnJvbSAndXctcXVvdGUtaGVscGVycydcbmltcG9ydCB7IEFsaWdubWVudEhlbHBlcnMsIFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMgfSBmcm9tICd3b3JkLWFsaWduZXItcmNsJ1xuaW1wb3J0ICogYXMgaXNFcXVhbCBmcm9tICdkZWVwLWVxdWFsJ1xuaW1wb3J0IHsgZ2V0VmVyc2VzIH0gZnJvbSAnYmlibGUtcmVmZXJlbmNlLXJhbmdlJ1xuaW1wb3J0IHsgU2NyaXB0dXJlUGFuZSwgU2NyaXB0dXJlU2VsZWN0b3IgfSBmcm9tICcuLidcbmltcG9ydCB7IHVzZVNjcmlwdHVyZVNldHRpbmdzIH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlU2NyaXB0dXJlU2V0dGluZ3MnXG5pbXBvcnQge1xuICBjbGVhbnVwVmVyc2VPYmplY3RzLFxuICBmaXhPY2N1cnJlbmNlLFxuICBnZXRCb29rTmFtZUZyb21Vc2ZtRmlsZU5hbWUsXG4gIGdldFJlc291cmNlTGluayxcbiAgZ2V0UmVzb3VyY2VNZXNzYWdlLFxuICBnZXRTY3JpcHR1cmVWZXJzaW9uU2V0dGluZ3MsXG4gIGlzT3JpZ2luYWxCaWJsZSxcbn0gZnJvbSAnLi4vLi4vdXRpbHMvU2NyaXB0dXJlU2V0dGluZ3MnXG5pbXBvcnQgeyBkZWxheSB9IGZyb20gJy4uLy4uL3V0aWxzL2RlbGF5J1xuaW1wb3J0IHsgYXJlTWFwc1RoZVNhbWUgfSBmcm9tICcuLi8uLi91dGlscy9tYXBzJ1xuaW1wb3J0IHsgVGl0bGUgfSBmcm9tICcuLi9TY3JpcHR1cmVQYW5lL3N0eWxlZCdcbmltcG9ydCB7XG4gIE5UX09SSUdfTEFORyxcbiAgT1JJR0lOQUxfU09VUkNFLFxuICBPVF9PUklHX0xBTkcsXG59IGZyb20gJy4uLy4uL3V0aWxzJ1xuaW1wb3J0IHsgVmVyc2VTZWxlY3RvclBvcHVwIH0gZnJvbSAnLi4vVmVyc2VTZWxlY3RvclBvcHVwJ1xuXG5jb25zdCBLRVlfRk9OVF9TSVpFX0JBU0UgPSAnc2NyaXB0dXJlUGFuZUZvbnRTaXplXydcbmNvbnN0IGxhYmVsID0gJ1ZlcnNpb24nXG5jb25zdCBzdHlsZSA9IHsgbWFyZ2luVG9wOiAnMTZweCcsIHdpZHRoOiAnNTAwcHgnIH1cblxuLyoqXG4gKiBjcmVhdGUgYSBzaG9ydCBjb21wYXJpc29uIHZlcnNlIHJlZiBvYmplY3Qgd2l0aG91dCBhbGwgdGhlIHZlcnNlRGF0YVxuICogQHBhcmFtIHZlcnNlUmVmXG4gKi9cbmZ1bmN0aW9uIGNvbXBhcmVPYmplY3QodmVyc2VSZWYpIHtcbiAgY29uc3Qge1xuICAgIGNoYXB0ZXIsXG4gICAgdmVyc2UsXG4gICAgdmVyc2VEYXRhLFxuICB9ID0gdmVyc2VSZWYgfHwge31cbiAgY29uc3QgdmVyc2VPYmplY3RzID0gdmVyc2VEYXRhPy52ZXJzZU9iamVjdHM/Lmxlbmd0aCA/IEpTT04uc3RyaW5naWZ5KHZlcnNlRGF0YS52ZXJzZU9iamVjdHMpIDogJydcbiAgcmV0dXJuIHtcbiAgICBjaGFwdGVyLFxuICAgIHZlcnNlLFxuICAgIHZlcnNlT2JqZWN0cyxcbiAgfVxufVxuXG4vKipcbiAqIGNvbXBhcmUgdHdvIHZlcnNlIHJlZnMgdG8gc2VlIGlmIHRoZXkgYXJlIHN1YnN0YW50aWFsbHkgc2ltaWxhclxuICogQHBhcmFtIHZlcnNlc0ZvclJlZjFcbiAqIEBwYXJhbSB2ZXJzZXNGb3JSZWYyXG4gKi9cbmZ1bmN0aW9uIGFyZVZlcnNlc1NhbWUodmVyc2VzRm9yUmVmMTogYW55W10sIHZlcnNlc0ZvclJlZjI6IGFueVtdKSB7XG4gIHZlcnNlc0ZvclJlZjEgPSB2ZXJzZXNGb3JSZWYxIHx8IFtdXG4gIHZlcnNlc0ZvclJlZjIgPSB2ZXJzZXNGb3JSZWYyIHx8IFtdXG4gIGxldCBhcmVTYW1lID0gZmFsc2VcblxuICBpZiAodmVyc2VzRm9yUmVmMS5sZW5ndGggPT09IHZlcnNlc0ZvclJlZjIubGVuZ3RoKSB7XG4gICAgYXJlU2FtZSA9IHRydWVcblxuICAgIGZvciAobGV0IGkgPSAwLCBsPSB2ZXJzZXNGb3JSZWYxLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgY29uc3QgdmVyc2UxID0gY29tcGFyZU9iamVjdCh2ZXJzZXNGb3JSZWYxW2ldKVxuICAgICAgY29uc3QgdmVyc2UyID0gY29tcGFyZU9iamVjdCh2ZXJzZXNGb3JSZWYyW2ldKVxuICAgICAgYXJlU2FtZSA9IGlzRXF1YWwodmVyc2UxLCB2ZXJzZTIpXG5cbiAgICAgIGlmICghYXJlU2FtZSkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhcmVTYW1lXG59XG5cbi8qKlxuICogZ2V0IHRoZSBVU0ZNIGZvciBib29rSWQgZnJvbSBzY3JpcHR1cmVDb25maWcuXG4gKiBAcGFyYW0ge29iamVjdH0gc2NyaXB0dXJlQ29uZmlnXG4gKiBAcGFyYW0ge3N0cmluZ30gYm9va0lkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRDdXJyZW50Qm9vayA9IChzY3JpcHR1cmVDb25maWcsIGJvb2tJZCkgPT4ge1xuICBjb25zdCBsYXRlc3RCaWJsZSA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0ZT8ucmVzb3VyY2U/LnByb2plY3RJZFxuICBjb25zdCBmaWxlbmFtZSA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0ZT8ucmVzb3VyY2U/Lm5hbWUgLy8gTGlrZSBcIjU3LVRJVC51c2ZtXCJcbiAgbGV0IGlzQm9va1ZhbGlkID0gZmFsc2VcbiAgY29uc3QgYm9va05hbWUgPSBnZXRCb29rTmFtZUZyb21Vc2ZtRmlsZU5hbWUoZmlsZW5hbWUpXG4gIGlzQm9va1ZhbGlkID0gYm9va05hbWU/LnRvTG93ZXJDYXNlKCk/LmluY2x1ZGVzKGJvb2tJZClcbiAgaWYgKCFpc0Jvb2tWYWxpZCkge1xuICAgIGNvbnNvbGUud2FybihgQ3VycmVudCBib29rSWQgaXMgJHtib29rSWR9IGFuZCBVU0ZNIGZpbGUgaXMgJHtmaWxlbmFtZX1gKVxuICB9XG4gIGlmIChsYXRlc3RCaWJsZT8udG9Mb3dlckNhc2UoKSAhPT0gYm9va0lkKSB7XG4gICAgY29uc29sZS53YXJuKGBDdXJyZW50IGJvb2tJZCBpcyAke2Jvb2tJZH0gYnV0IGZldGNoZWQgcHJvamVjdElkIGlzICR7bGF0ZXN0QmlibGV9YClcbiAgICBpc0Jvb2tWYWxpZCA9IGZhbHNlXG4gIH1cbiAgaWYgKGlzQm9va1ZhbGlkKSB7XG4gICAgY29uc3QgYmlibGVVc2ZtID0gc2NyaXB0dXJlQ29uZmlnPy5iaWJsZVVzZm07XG4gICAgaWYgKGJpYmxlVXNmbSkge1xuICAgICAgcmV0dXJuIGJpYmxlVXNmbVxuICAgIH1cbiAgICBjb25zb2xlLmVycm9yKGBnZXRDdXJyZW50Qm9vaygpIC0gQmlibGUgVVNGTSBtaXNzaW5nYClcbiAgfVxuICBjb25zb2xlLmVycm9yKGBnZXRDdXJyZW50Qm9vaygpIC0gRXhwZWN0ZWQgJHtib29rSWR9IGJ1dCBnb3QgZmlsZSAke2ZpbGVuYW1lfWApXG4gIHJldHVybiBudWxsXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNjcmlwdHVyZUNhcmQoe1xuICBhcHBSZWYsXG4gIGF1dGhlbnRpY2F0aW9uLFxuICBib29rSW5kZXgsXG4gIGNhcmROdW0sXG4gIGNsYXNzZXMsXG4gIGRpc2FibGVXb3JkUG9wb3ZlcixcbiAgZ2V0TGFuZ3VhZ2UsXG4gIGdldExleGljb25EYXRhLFxuICBncmVla1JlcG9VcmwsXG4gIGhlYnJld1JlcG9VcmwsXG4gIGh0dHBDb25maWcsXG4gIGlkLFxuICBpc05ULFxuICBsb2dnZWRJblVzZXIsXG4gIG9uTWluaW1pemUsXG4gIG9uUmVzb3VyY2VFcnJvcixcbiAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyxcbiAgcmVmZXJlbmNlLFxuICByZXNvdXJjZToge1xuICAgIG93bmVyLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgcmVzb3VyY2VJZCxcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gIH0sXG4gIHJlc291cmNlTGluayxcbiAgc2VsZWN0ZWRRdW90ZSxcbiAgc2VydmVyLFxuICBzZXRDYXJkc0xvYWRpbmdNZXJnZSxcbiAgc2V0Q2FyZHNMb2FkaW5nVXBkYXRlLFxuICBzZXRDYXJkc1NhdmluZyxcbiAgc2V0U2F2ZWRDaGFuZ2VzLFxuICBzZXRXb3JkQWxpZ25lclN0YXR1cyxcbiAgdHJhbnNsYXRlLFxuICB0aXRsZSxcbiAgdXNlVXNlckxvY2FsU3RvcmFnZSxcbiAgdXBkYXRlTWVyZ2VTdGF0ZSxcbn0pIHtcbiAgY29uc3QgYm9va0lkID0gcmVmZXJlbmNlPy5wcm9qZWN0SWRcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV9dID0gUmVhY3QudXNlU3RhdGUoe1xuICAgIGNoZWNrRm9yRWRpdEJyYW5jaDogMCxcbiAgICBjdXJyZW50UmVmZXJlbmNlOiBudWxsLFxuICAgIGVkaXRCcmFuY2hSZWFkeTogZmFsc2UsXG4gICAgaGF2ZVVuc2F2ZWRDaGFuZ2VzOiBmYWxzZSxcbiAgICBsYXN0U2VsZWN0ZWRRdW90ZTogbnVsbCxcbiAgICByZWFkeUZvckZldGNoOiBmYWxzZSxcbiAgICByZWY6IGFwcFJlZixcbiAgICBzYXZlQ2xpY2tlZDogZmFsc2UsXG4gICAgc2F2ZUNvbnRlbnQ6IG51bGwsXG4gICAgc2VsZWN0aW9uczogbmV3IE1hcCgpLFxuICAgIHNob3dBbGlnbm1lbnRQb3B1cDogZmFsc2UsXG4gICAgc3RhcnRTYXZlOiBmYWxzZSxcbiAgICB1cmxFcnJvcjogbnVsbCxcbiAgICB1c2luZ1VzZXJCcmFuY2g6IGZhbHNlLFxuICAgIHVuc2F2ZWRDaGFuZ2VzTGlzdDoge30sXG4gICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzOiBudWxsLFxuICAgIHZlcnNlc0ZvclJlZjogbnVsbCxcbiAgICB2ZXJzZU9iamVjdHNNYXA6IG5ldyBNYXAoKSxcbiAgICB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiBudWxsLFxuICB9KVxuICBjb25zdCB7XG4gICAgY2hlY2tGb3JFZGl0QnJhbmNoLFxuICAgIGN1cnJlbnRSZWZlcmVuY2UsXG4gICAgZWRpdEJyYW5jaFJlYWR5LFxuICAgIGhhdmVVbnNhdmVkQ2hhbmdlcyxcbiAgICBsYXN0U2VsZWN0ZWRRdW90ZSxcbiAgICByZWFkeUZvckZldGNoLFxuICAgIHJlZixcbiAgICBzYXZlQ2xpY2tlZCxcbiAgICBzYXZlQ29udGVudCxcbiAgICBzZWxlY3Rpb25zLFxuICAgIHNob3dBbGlnbm1lbnRQb3B1cCxcbiAgICBzdGFydFNhdmUsXG4gICAgdXJsRXJyb3IsXG4gICAgdXNpbmdVc2VyQnJhbmNoLFxuICAgIHVuc2F2ZWRDaGFuZ2VzTGlzdCxcbiAgICB2ZXJzZU9iamVjdHNNYXAsXG4gICAgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCxcbiAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXMsXG4gICAgdmVyc2VzRm9yUmVmLFxuICB9ID0gc3RhdGVcblxuICBjb25zdCBbZm9udFNpemUsIHNldEZvbnRTaXplXSA9IHVzZVVzZXJMb2NhbFN0b3JhZ2UoS0VZX0ZPTlRfU0laRV9CQVNFICsgY2FyZE51bSwgMTAwKVxuICBjb25zdCBpc05UXyA9IGlzTlQoYm9va0lkKVxuXG4gIGZ1bmN0aW9uIHNldFN0YXRlKG5ld1N0YXRlKSB7XG4gICAgc2V0U3RhdGVfKHByZXZTdGF0ZSA9PiAoeyAuLi5wcmV2U3RhdGUsIC4uLm5ld1N0YXRlIH0pKVxuICB9XG5cbiAgaHR0cENvbmZpZyA9IHtcbiAgICAuLi5odHRwQ29uZmlnLFxuICAgIGNhY2hlOiB7IG1heEFnZTogMCB9LFxuICAgIG5vQ2FjaGU6IHRydWUsXG4gIH0gLy8gZGlzYWJsZSBodHRwIGNhY2hpbmdcblxuICBjb25zdCB7XG4gICAgaXNOZXdUZXN0YW1lbnQsXG4gICAgc2NyaXB0dXJlQ29uZmlnLFxuICAgIHNldFNjcmlwdHVyZSxcbiAgICBzY3JpcHR1cmVTZXR0aW5ncyxcbiAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdCxcbiAgfSA9IHVzZVNjcmlwdHVyZVNldHRpbmdzKHtcbiAgICBhcHBSZWY6IHJlZixcbiAgICBjYXJkTnVtLFxuICAgIGRpc2FibGVXb3JkUG9wb3ZlcixcbiAgICBncmVla1JlcG9VcmwsXG4gICAgaGVicmV3UmVwb1VybCxcbiAgICBodHRwQ29uZmlnLFxuICAgIGlzTlQsXG4gICAgbGFuZ3VhZ2VJZCxcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gICAgb3duZXIsXG4gICAgcmVhZHlGb3JGZXRjaCxcbiAgICByZWZlcmVuY2U6IGN1cnJlbnRSZWZlcmVuY2UgfHwgcmVmZXJlbmNlLFxuICAgIHJlc291cmNlSWQsXG4gICAgcmVzb3VyY2VMaW5rLFxuICAgIHNldFVybEVycm9yOiAoZXJyb3IpID0+IHNldFN0YXRlKHsgdXJsRXJyb3I6IGVycm9yIH0pLFxuICAgIHNlcnZlcixcbiAgICB0aXRsZSxcbiAgICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxuICAgIHdob2xlQm9vazogdHJ1ZSxcbiAgfSlcblxuICBjb25zdCBmZXRjaGVkUmVzb3VyY2UgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdGVcbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCByZXBvID0gYCR7c2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ubGFuZ3VhZ2VJZH1fJHtzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5wcm9qZWN0SWR9YFxuICBjb25zdCByZWZlcmVuY2VfID0gc2NyaXB0dXJlQ29uZmlnPy5yZWZlcmVuY2UgfHwgbnVsbFxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgY2FyZFJlc291cmNlSWQgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5wcm9qZWN0SWQgfHwgcmVzb3VyY2VJZFxuICAvLyBAdHMtaWdub3JlXG4gIGxldCByZWZfID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucmVmIHx8IGFwcFJlZlxuICBjb25zdCBjYW5Vc2VFZGl0QnJhbmNoID0gISEobG9nZ2VkSW5Vc2VyICYmIGF1dGhlbnRpY2F0aW9uICYmIChyZXNvdXJjZUlkICE9PSBPUklHSU5BTF9TT1VSQ0UpICYmIC8vIFRSSUNLWSBpZiBub3Qgb3JpZ2luYWwgbGFuZ3VhZ2UgYW5kIHdlIGhhdmUgbG9naW4gZGF0YSwgdGhlbiB3ZSBjYW4gdXNlIHRoZSBlZGl0IGJyYW5jaFxuICAgICgocmVmXyA9PT0gJ21hc3RlcicpIHx8IChyZWZfLmluY2x1ZGVzKGxvZ2dlZEluVXNlcikpKSkgLy8gYWxzbyBtYWtlIHN1cmUgbm90IGEgdmVyc2lvbiB0YWdcblxuICBjb25zdCB7XG4gICAgc3RhdGU6IHtcbiAgICAgIGJyYW5jaERldGVybWluZWQsXG4gICAgICB1c2VyRWRpdEJyYW5jaE5hbWUsXG4gICAgICB1c2luZ1VzZXJCcmFuY2g6IF91c2luZ1VzZXJCcmFuY2gsXG4gICAgICB3b3JraW5nUmVzb3VyY2VCcmFuY2gsXG4gICAgfSxcbiAgICBhY3Rpb25zOiB7XG4gICAgICBzdGFydEVkaXQ6IHN0YXJ0RWRpdEJyYW5jaCxcbiAgICAgIGZpbmlzaEVkaXQsXG4gICAgfSxcbiAgfSA9IHVzZVVzZXJCcmFuY2goe1xuICAgIGFwcFJlZixcbiAgICBhdXRoZW50aWNhdGlvbjogY2FuVXNlRWRpdEJyYW5jaCA/IGF1dGhlbnRpY2F0aW9uIDogbnVsbCxcbiAgICBib29rSWQsXG4gICAgY2FyZElkOiBpZCxcbiAgICBjYXJkUmVzb3VyY2VJZCxcbiAgICBjaGVja0ZvckVkaXRCcmFuY2gsXG4gICAgbGFuZ3VhZ2VJZCxcbiAgICBsb2dnZWRJblVzZXI6IGNhblVzZUVkaXRCcmFuY2ggPyBsb2dnZWRJblVzZXIgOiBudWxsLFxuICAgIG93bmVyLFxuICAgIG9uUmVzb3VyY2VFcnJvcixcbiAgICBzZXJ2ZXIsXG4gICAgdXNlVXNlckxvY2FsU3RvcmFnZSxcbiAgfSlcblxuICBjb25zdCBfdXNlQnJhbmNoTWVyZ2VyID0gdXNlQnJhbmNoTWVyZ2VyKHsgc2VydmVyLCBvd25lciwgcmVwbywgdXNlckJyYW5jaDogdXNlckVkaXRCcmFuY2hOYW1lLCB0b2tlbmlkOiBhdXRoZW50aWNhdGlvbj8udG9rZW4/LnNoYTEgfSlcbiAgY29uc3Qge1xuICAgIHN0YXRlOiB7XG4gICAgICBtZXJnZVN0YXR1czogbWVyZ2VUb01hc3RlcixcbiAgICAgIHVwZGF0ZVN0YXR1czogbWVyZ2VGcm9tTWFzdGVyLFxuICAgIH0sXG4gIH0gPSBfdXNlQnJhbmNoTWVyZ2VyXG5cbiAgY29uc3QgdXBkYXRlQnV0dG9uUHJvcHMgPSB1c2VDb250ZW50VXBkYXRlUHJvcHMoe1xuICAgIGlzU2F2aW5nOiBzdGFydFNhdmUsXG4gICAgdXNlQnJhbmNoTWVyZ2VyOiBfdXNlQnJhbmNoTWVyZ2VyLFxuICAgIG9uVXBkYXRlOiAoKSA9PiB7XG4gICAgICBkZWxheSg1MDApLnRoZW4oKCkgPT4gc2NyaXB0dXJlQ29uZmlnPy5yZWxvYWRSZXNvdXJjZSgpKVxuICAgIH0sXG4gIH0pXG5cbiAgY29uc3Qge1xuICAgIGNhbGxVcGRhdGVVc2VyQnJhbmNoLFxuICAgIGlzRXJyb3JEaWFsb2dPcGVuLFxuICAgIG9uQ2xvc2VFcnJvckRpYWxvZyxcbiAgICBpc0xvYWRpbmc6IGlzVXBkYXRlTG9hZGluZyxcbiAgICBkaWFsb2dNZXNzYWdlLFxuICAgIGRpYWxvZ1RpdGxlLFxuICAgIGRpYWxvZ0xpbmssXG4gICAgZGlhbG9nTGlua1Rvb2x0aXAsXG4gIH0gPSB1cGRhdGVCdXR0b25Qcm9wc1xuXG4gIGNvbnN0IG9uTWVyZ2UgPSAoKSA9PiB7XG4gICAgZmluaXNoRWRpdCgpXG4gICAgY29uc29sZS5sb2coYG9uTWVyZ2UoKSBzd2l0Y2hpbmcgYmFjayB0byBtYXN0ZXIgYWZ0ZXIgbWVyZ2UgYXBwUmVmOmAsIGFwcFJlZilcbiAgICBzZXRTdGF0ZSh7XG4gICAgICByZWFkeUZvckZldGNoOiBmYWxzZSxcbiAgICAgIHJlZjogYXBwUmVmLFxuICAgIH0pXG4gICAgZGVsYXkoNTAwKS50aGVuKCgpID0+IHtcbiAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgY2hlY2tGb3JFZGl0QnJhbmNoOiBjaGVja0ZvckVkaXRCcmFuY2ggKyAxLCAvLyB0cmlnZ2VyIHJlY2hlY2sgb2YgdXNlciBicmFuY2ggd2hpY2ggd2lsbCBzd2l0Y2ggdGhlIGJyYW5jaCBiYWNrIHRvIG1hc3RlclxuICAgICAgICByZWFkeUZvckZldGNoOiBmYWxzZSxcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHsgaXNMb2FkaW5nOiBpc01lcmdlTG9hZGluZywgY2FsbE1lcmdlVXNlckJyYW5jaCB9ID0gdXNlTWFzdGVyTWVyZ2VQcm9wcyh7XG4gICAgaXNTYXZpbmc6IHN0YXJ0U2F2ZSxcbiAgICB1c2VCcmFuY2hNZXJnZXI6IF91c2VCcmFuY2hNZXJnZXIsXG4gICAgb25NZXJnZSxcbiAgfSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjYXJkUmVzb3VyY2VJZCkge1xuICAgICAgdXBkYXRlTWVyZ2VTdGF0ZSAmJiB1cGRhdGVNZXJnZVN0YXRlKFxuICAgICAgICBjYXJkUmVzb3VyY2VJZCxcbiAgICAgICAgbWVyZ2VGcm9tTWFzdGVyLFxuICAgICAgICBtZXJnZVRvTWFzdGVyLFxuICAgICAgICBjYWxsVXBkYXRlVXNlckJyYW5jaCxcbiAgICAgICAgY2FsbE1lcmdlVXNlckJyYW5jaCxcbiAgICAgIClcbiAgICB9XG4gIH0sW2NhcmRSZXNvdXJjZUlkLCBtZXJnZUZyb21NYXN0ZXIsIG1lcmdlVG9NYXN0ZXJdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzVXBkYXRlTG9hZGluZykge1xuICAgICAgc2V0Q2FyZHNMb2FkaW5nVXBkYXRlPy4ocHJldkNhcmRzTG9hZGluZyA9PiBbLi4ucHJldkNhcmRzTG9hZGluZywgY2FyZFJlc291cmNlSWRdKVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRDYXJkc0xvYWRpbmdVcGRhdGU/LihwcmV2Q2FyZHNMb2FkaW5nID0+IHByZXZDYXJkc0xvYWRpbmcuZmlsdGVyKGNhcmRJZCA9PiBjYXJkSWQgIT09IGNhcmRSZXNvdXJjZUlkKSlcbiAgICB9XG4gIH0sIFtpc1VwZGF0ZUxvYWRpbmddKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzTWVyZ2VMb2FkaW5nKSB7XG4gICAgICBzZXRDYXJkc0xvYWRpbmdNZXJnZT8uKHByZXZDYXJkc0xvYWRpbmcgPT4gWy4uLnByZXZDYXJkc0xvYWRpbmcsIGNhcmRSZXNvdXJjZUlkXSlcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0Q2FyZHNMb2FkaW5nTWVyZ2U/LihwcmV2Q2FyZHNMb2FkaW5nID0+IHByZXZDYXJkc0xvYWRpbmcuZmlsdGVyKGNhcmRJZCA9PiBjYXJkSWQgIT09IGNhcmRSZXNvdXJjZUlkKSlcbiAgICB9XG4gIH0sIFtpc01lcmdlTG9hZGluZ10pXG5cbiAgY29uc3Qgd29ya2luZ1JlZiA9IGNhblVzZUVkaXRCcmFuY2ggPyB3b3JraW5nUmVzb3VyY2VCcmFuY2ggOiBhcHBSZWZcbiAgbGV0IHNjcmlwdHVyZVRpdGxlXG5cbiAgaWYgKCFjYW5Vc2VFZGl0QnJhbmNoICYmICFyZWFkeUZvckZldGNoKSB7IC8vIGlmIGJpYmxlIG5vdCBlbGlnaWJsZSBmb3IgdXNlciBicmFuY2gsIG1ha2Ugc3VyZSBpdCdzIHJlYWR5XG4gICAgc2V0U3RhdGUoeyByZWFkeUZvckZldGNoOiB0cnVlIH0pXG4gIH1cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVDYXJkIGJvb2sgY2hhbmdlZGAsIHsgYm9va0lkLCBvd25lciwgbGFuZ3VhZ2VJZCwgcmVzb3VyY2VJZCB9KVxuXG4gICAgaWYgKGNhblVzZUVkaXRCcmFuY2gpIHsgLy8gaWYgYmlibGUgZWxpZ2libGUgZm9yIHVzZXIgYnJhbmNoLCByZWZyZXNoIGl0XG4gICAgICBzZXRTdGF0ZSh7IHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLCBjaGVja0ZvckVkaXRCcmFuY2g6IGNoZWNrRm9yRWRpdEJyYW5jaCArIDEgfSlcbiAgICB9XG4gIH0sIFtib29rSWQsIG93bmVyLCBsYW5ndWFnZUlkLCByZXNvdXJjZUlkXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNFcXVhbChyZWZlcmVuY2UsIGN1cnJlbnRSZWZlcmVuY2UpKSB7XG4gICAgICAvLyBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZCByZWZlcmVuY2UgY2hhbmdlZGAsIHJlZmVyZW5jZSlcbiAgICAgIHNldFN0YXRlKHsgY3VycmVudFJlZmVyZW5jZTogcmVmZXJlbmNlIH0pXG4gICAgfVxuICB9LCBbcmVmZXJlbmNlXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB3YWl0aW5nIGZvciBicmFuY2ggZmV0Y2ggdG8gY29tcGxldGVcbiAgICBpZiAoIXJlYWR5Rm9yRmV0Y2ggJiYgYnJhbmNoRGV0ZXJtaW5lZCApIHtcbiAgICAgIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVDYXJkIGJyYW5jaERldGVybWluZWQgaXMgJHticmFuY2hEZXRlcm1pbmVkfSBhbmQgd29ya2luZ1JlZiBpcyAke3dvcmtpbmdSZWZ9YClcbiAgICAgIHNldFN0YXRlKHsgcmVhZHlGb3JGZXRjaDogdHJ1ZSwgcmVmOiB3b3JraW5nUmVmIH0pXG4gICAgfVxuICB9LCBbYnJhbmNoRGV0ZXJtaW5lZF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gc2VsZWN0IGNvcnJlY3Qgd29ya2luZyByZWYgLSBjb3VsZCBiZSBtYXN0ZXIsIHVzZXIgYnJhbmNoLCBvciByZWxlYXNlXG4gICAgaWYgKF91c2luZ1VzZXJCcmFuY2ggIT09IHVzaW5nVXNlckJyYW5jaCkge1xuICAgICAgc2V0U3RhdGUoeyB1c2luZ1VzZXJCcmFuY2g6IF91c2luZ1VzZXJCcmFuY2ggfSlcbiAgICB9XG4gIH0sIFtfdXNpbmdVc2VyQnJhbmNoLCB1c2luZ1VzZXJCcmFuY2hdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHVwZGF0ZSBkaXNwbGF5IHN0YXR1cyBpZiBlcnJvclxuICAgIGNvbnN0IGVycm9yID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXR1cz8uW0VSUk9SX1NUQVRFXVxuXG4gICAgaWYgKGVycm9yKSB7IC8vIGlmIGVycm9yIHdhcyBmb3VuZCBkbyBjYWxsYmFja1xuICAgICAgY29uc3QgcmVzb3VyY2VTdGF0dXMgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdHVzXG4gICAgICBjb25zdCByZXNvdXJjZUxpbmsgPSBnZXRSZXNvdXJjZUxpbmsoc2NyaXB0dXJlQ29uZmlnKVxuICAgICAgY29uc3QgbWVzc2FnZSA9IGdldFJlc291cmNlTWVzc2FnZShyZXNvdXJjZVN0YXR1cywgc2VydmVyLCByZXNvdXJjZUxpbmssIGlzTlRfKVxuICAgICAgY29uc3QgaXNBY2Nlc3NFcnJvciA9IHJlc291cmNlU3RhdHVzW01BTklGRVNUX05PVF9MT0FERURfRVJST1JdXG4gICAgICBvblJlc291cmNlRXJyb3IgJiYgb25SZXNvdXJjZUVycm9yKG1lc3NhZ2UsIGlzQWNjZXNzRXJyb3IsIHJlc291cmNlU3RhdHVzKVxuICAgIH1cbiAgfSwgW3NjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0dXM/LltFUlJPUl9TVEFURV1dKVxuXG4gIGlmIChzY3JpcHR1cmVDb25maWcudGl0bGUgJiYgc2NyaXB0dXJlQ29uZmlnLnZlcnNpb24pIHtcbiAgICBzY3JpcHR1cmVUaXRsZSA9IGAke3NjcmlwdHVyZUNvbmZpZy50aXRsZX0gdiR7c2NyaXB0dXJlQ29uZmlnLnZlcnNpb259YFxuICAgIHNjcmlwdHVyZVZlcnNpb25IaXN0LnVwZGF0ZVRpdGxlKHNjcmlwdHVyZUNvbmZpZy5yZXNvdXJjZUxpbmssIHNjcmlwdHVyZVRpdGxlKVxuICB9IGVsc2Uge1xuICAgIHNjcmlwdHVyZVRpdGxlID0gYFRpdGxlIG1pc3NpbmcgZnJvbSBwcm9qZWN0IG1hbmlmZXN0YFxuICB9XG5cbiAgLyoqIER5bmFtaWNhbGx5IGNyZWF0ZXMgdGhlIHNjcmlwdHVyZSBzZWxlY3Rpb24gZHJvcGRvd24gdG8gYmUgaW5zZXJ0ZWQgaW50byBjYXJkIHNldHRpbmdzICovXG4gIGZ1bmN0aW9uIGdldFNjcmlwdHVyZVNlbGVjdG9yKCkge1xuICAgIGNvbnN0IHNjcmlwdHVyZVNlbGVjdGlvbkNvbmZpZyA9IGdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyh7XG4gICAgICBsYWJlbCxcbiAgICAgIHJlc291cmNlTGluazogc2NyaXB0dXJlQ29uZmlnLnJlc291cmNlTGluayxcbiAgICAgIHNldFNjcmlwdHVyZSxcbiAgICAgIHNjcmlwdHVyZVZlcnNpb25IaXN0LFxuICAgIH0pXG5cbiAgICByZXR1cm4gPFNjcmlwdHVyZVNlbGVjdG9yIHsuLi5zY3JpcHR1cmVTZWxlY3Rpb25Db25maWd9IHN0eWxlPXtzdHlsZX0gZXJyb3JNZXNzYWdlPXt1cmxFcnJvcn0gLz5cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uTWVudUNsb3NlKCkge1xuICAgIC8vIGNvbnNvbGUubG9nKGBvbk1lbnVDbG9zZSgpYClcbiAgICBzZXRTdGF0ZSh7IHVybEVycm9yOiBudWxsIH0pXG4gIH1cblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IGxhbmd1YWdlSWRfID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ubGFuZ3VhZ2VJZFxuICBjb25zdCBsYW5ndWFnZSA9IGdldExhbmd1YWdlKHsgbGFuZ3VhZ2VJZDogbGFuZ3VhZ2VJZF8gfSlcbiAgY29uc3QgZGlyZWN0aW9uID0gKGxhbmd1YWdlPy5kaXJlY3Rpb24pIHx8ICdsdHInXG4gIGNvbnN0IF9yZWZlcmVuY2UgPSBjdXJyZW50UmVmZXJlbmNlIHx8IHJlZmVyZW5jZVxuXG4gIGNvbnN0IGlzSGVicmV3ID0gKGxhbmd1YWdlSWRfID09PSAnaGJvJylcbiAgY29uc3QgZm9udEZhY3RvciA9IGlzSGVicmV3ID8gMS40IDogMSAvLyB3ZSBhdXRvbWF0aWNhbGx5IHNjYWxlIHVwIGZvbnQgc2l6ZSBmb3IgSGVicmV3XG4gIGNvbnN0IHNjYWxlZEZvbnRTaXplID0gZm9udFNpemUgKiBmb250RmFjdG9yXG5cbiAgY29uc3QgaXRlbXMgPSBudWxsXG4gIGNvbnN0IHtcbiAgICBzdGF0ZToge1xuICAgICAgaGVhZGVycywgZmlsdGVycywgaXRlbUluZGV4LCBtYXJrZG93blZpZXcsXG4gICAgfSxcbiAgICBhY3Rpb25zOiB7XG4gICAgICBzZXRGaWx0ZXJzLCBzZXRJdGVtSW5kZXgsIHNldE1hcmtkb3duVmlldyxcbiAgICB9LFxuICB9ID0gdXNlQ2FyZFN0YXRlKHsgaXRlbXMgfSlcblxuICBjb25zdCByZWZTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgICBmb250U2l6ZTogYCR7TWF0aC5yb3VuZChzY2FsZWRGb250U2l6ZSAqIDAuOSl9JWAsXG4gIH0pLCBbc2NhbGVkRm9udFNpemVdKVxuXG4gIGNvbnN0IGNvbnRlbnRTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgICBmb250U2l6ZTogYCR7c2NhbGVkRm9udFNpemV9JWAsXG4gIH0pLCBbc2NhbGVkRm9udFNpemVdKVxuXG4gIGNvbnN0IHNjcmlwdHVyZUxhYmVsID0gPFRpdGxlPntzY3JpcHR1cmVUaXRsZX08L1RpdGxlPlxuICBsZXQgZGlzYWJsZVdvcmRQb3BvdmVyXyA9IGRpc2FibGVXb3JkUG9wb3ZlclxuICBjb25zdCB1c2luZ09yaWdpbmFsQmlibGUgPSBpc09yaWdpbmFsQmlibGUoc2NyaXB0dXJlQ29uZmlnWydyZXNvdXJjZSddPy5wcm9qZWN0SWQpXG5cbiAgaWYgKGRpc2FibGVXb3JkUG9wb3ZlciA9PT0gdW5kZWZpbmVkKSB7IC8vIGlmIG5vdCBzcGVjaWZpZWQsIHRoZW4gZGV0ZXJtaW5lIGlmIG9yaWdpbmFsIGxhbmd1YWdlIHJlc291cmNlXG4gICAgZGlzYWJsZVdvcmRQb3BvdmVyXyA9ICF1c2luZ09yaWdpbmFsQmlibGVcbiAgfVxuXG4gIGNvbnN0IGVuYWJsZUVkaXQgPSAhdXNpbmdPcmlnaW5hbEJpYmxlXG4gIGNvbnN0IGVuYWJsZUFsaWdubWVudCA9ICF1c2luZ09yaWdpbmFsQmlibGVcbiAgY29uc3Qgb3JpZ2luYWxSZXBvVXJsID0gaXNOZXdUZXN0YW1lbnQgPyBncmVla1JlcG9VcmwgOiBoZWJyZXdSZXBvVXJsXG4gIGNvbnN0IHNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcgPSB7XG4gICAgYXV0aGVudGljYXRpb246IGNhblVzZUVkaXRCcmFuY2ggPyBhdXRoZW50aWNhdGlvbiA6IG51bGwsXG4gICAgYm9va0luZGV4LFxuICAgIGN1cnJlbnRWZXJzZVJlZjogX3JlZmVyZW5jZSxcbiAgICBlbmFibGVFZGl0LFxuICAgIGVuYWJsZUFsaWdubWVudCxcbiAgICBodHRwQ29uZmlnLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpc05ld1Rlc3RhbWVudCxcbiAgICBsb2dnZWRJblVzZXI6IGNhblVzZUVkaXRCcmFuY2ggPyBsb2dnZWRJblVzZXIgOiBudWxsLFxuICAgIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcixcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgb3JpZ2luYWxSZXBvVXJsLFxuICAgIHNjcmlwdHVyZUNvbmZpZyxcbiAgICBzY3JpcHR1cmVTZXR0aW5ncyxcbiAgICBzdGFydEVkaXRCcmFuY2gsXG4gICAgc2V0U2F2ZWRDaGFuZ2VzOiBfc2V0U2F2ZWRDaGFuZ2VzLFxuICAgIHNvdXJjZUxhbmd1YWdlOiBpc05UXyA/IE5UX09SSUdfTEFORyA6IE9UX09SSUdfTEFORyxcbiAgICB0YXJnZXRMYW5ndWFnZTogbGFuZ3VhZ2UsXG4gICAgdGl0bGU6IHNjcmlwdHVyZVRpdGxlLFxuICAgIHdvcmtpbmdSZXNvdXJjZUJyYW5jaDogcmVmLFxuICB9XG5cbiAgLyoqXG4gICAqIHRoaXMgZ2V0cyBjYWxsZWQgd2hlbmV2ZXIgYSBzY3JpcHR1cmUgcGFuZSBoYXMgYSBjaGFuZ2UgaW4gc2F2ZSBzdGF0ZVxuICAgKiBAcGFyYW0ge251bWJlcn0gY3VycmVudEluZGV4XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc2F2ZWRcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gZ2V0Q2hhbmdlcyAtIHdpbGwgYmUgY2FsbGVkIHdoZW5ldmVyIHVzZXIgY2xpY2tzIHNhdmUgYnV0dG9uXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNsZWFyQ2hhbmdlcyAtIHdpbGwgYmUgY2FsbGVkIHdoZW5ldmVyIHNhdmUgaGFzIGNvbXBsZXRlZFxuICAgKiBAcGFyYW0ge29iamVjdH0gc3RhdGUgLSBjdXJyZW50IHN0YXRlIG9mIHdvcmQgYWxpZ25tZW50L2VkaXRcbiAgICovXG4gIGZ1bmN0aW9uIF9zZXRTYXZlZENoYW5nZXMoY3VycmVudEluZGV4LCBzYXZlZCwgeyBnZXRDaGFuZ2VzID0gbnVsbCwgY2xlYXJDaGFuZ2VzID0gbnVsbCwgc3RhdGUgPSBudWxsIH0pIHtcbiAgICBjb25zdCBfdW5zYXZlZENoYW5nZXNMaXN0ID0geyAuLi51bnNhdmVkQ2hhbmdlc0xpc3QgfVxuXG4gICAgaWYgKHNhdmVkKSB7XG4gICAgICBpZiAoX3Vuc2F2ZWRDaGFuZ2VzTGlzdC5oYXNPd25Qcm9wZXJ0eShjdXJyZW50SW5kZXgpKSB7XG4gICAgICAgIGRlbGV0ZSBfdW5zYXZlZENoYW5nZXNMaXN0W2N1cnJlbnRJbmRleF1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgX3Vuc2F2ZWRDaGFuZ2VzTGlzdFtjdXJyZW50SW5kZXhdID0geyBnZXRDaGFuZ2VzLCBjbGVhckNoYW5nZXMsIHN0YXRlIH0gLy8gdXBkYXRlIHdpdGggbGF0ZXN0XG4gICAgfVxuXG4gICAgY29uc3QgX2hhdmVVbnNhdmVkQ2hhbmdlcyA9ICEhT2JqZWN0LmtleXMoX3Vuc2F2ZWRDaGFuZ2VzTGlzdCkubGVuZ3RoXG5cbiAgICBpZiAoaGF2ZVVuc2F2ZWRDaGFuZ2VzICE9IF9oYXZlVW5zYXZlZENoYW5nZXMpIHtcbiAgICAgIHNldFNhdmVkQ2hhbmdlcyAmJiBzZXRTYXZlZENoYW5nZXMocmVzb3VyY2VJZCwgIV9oYXZlVW5zYXZlZENoYW5nZXMpXG4gICAgICBzZXRTdGF0ZSh7IGhhdmVVbnNhdmVkQ2hhbmdlczogX2hhdmVVbnNhdmVkQ2hhbmdlcyB9KVxuICAgIH1cblxuICAgIGlmICghaXNFcXVhbChfdW5zYXZlZENoYW5nZXNMaXN0LCB1bnNhdmVkQ2hhbmdlc0xpc3QpKSB7XG4gICAgICBzZXRTdGF0ZSh7IHVuc2F2ZWRDaGFuZ2VzTGlzdDogX3Vuc2F2ZWRDaGFuZ2VzTGlzdCB9KVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBzZWFyY2ggY2hhcHRlciBvciB2ZXJzZSBjaHVuayB0byBsaW5lIHRoYXQgc3RhcnRzIHdpdGggZmluZEl0ZW1cbiAgICogQHBhcmFtIHtudW1iZXJ8c3RyaW5nfSBmaW5kSXRlbVxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBjaHVua3NcbiAgICovXG4gIGZ1bmN0aW9uIGZpbmRSZWZJbkFycmF5KGZpbmRJdGVtLCBjaHVua3MpIHtcbiAgICBjb25zdCByZWZfID0gZmluZEl0ZW0gKyAnJ1xuICAgIGNvbnN0IHJlZkxlbiA9IHJlZl8ubGVuZ3RoXG4gICAgY29uc3QgaW5kZXggPSBjaHVua3MuZmluZEluZGV4KChjaHVuaywgaWR4KSA9PiB7XG4gICAgICBpZiAoaWR4ID4gMCkge1xuICAgICAgICBpZiAoY2h1bmsuc3Vic3RyaW5nKDAsIHJlZkxlbikgPT09IHJlZl8pIHtcbiAgICAgICAgICBjb25zdCBuZXh0Q2hhciA9IGNodW5rW3JlZkxlbl1cblxuICAgICAgICAgIGlmICgobmV4dENoYXIgPiAnOScpIHx8IChuZXh0Q2hhciA8ICcwJykpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9KVxuICAgIHJldHVybiBpbmRleFxuICB9XG5cbiAgZnVuY3Rpb24gZ2V0Qm9va05hbWUoKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IGJvb2tDYXBzID0gc2NyaXB0dXJlQ29uZmlnPy5yZWZlcmVuY2U/LnByb2plY3RJZCA/IHNjcmlwdHVyZUNvbmZpZy5yZWZlcmVuY2UucHJvamVjdElkLnRvVXBwZXJDYXNlKCkgOiAnJ1xuICAgIHJldHVybiBgJHtib29rSW5kZXh9LSR7Ym9va0NhcHN9LnVzZm1gXG4gIH1cblxuICBjb25zdCBmaWxlcGF0aCA9IGdldEJvb2tOYW1lKClcbiAgY29uc3Qgc2hhID0gZmV0Y2hlZFJlc291cmNlPy5zaGFcblxuICAvLyBrZWVwIHRyYWNrIG9mIHZlcnNlIGVkaXQgc3RhdGVcbiAgY29uc3Qge1xuICAgIGVycm9yOiBzYXZlRXJyb3IsXG4gICAgaXNFcnJvcjogaXNTYXZlRXJyb3IsXG4gICAgb25TYXZlRWRpdCxcbiAgfSA9IHVzZUVkaXQoe1xuICAgIHNoYSxcbiAgICBvd25lcixcbiAgICBjb250ZW50OiBzYXZlQ29udGVudCxcbiAgICBjb25maWc6IHtcbiAgICAgIGNhY2hlOiB7IG1heEFnZTogMCB9LFxuICAgICAgLi4uYXV0aGVudGljYXRpb24/LmNvbmZpZyxcbiAgICAgIGRvbnRDcmVhdGVCcmFuY2g6IHRydWUsXG4gICAgICB0b2tlbjogYXV0aGVudGljYXRpb24/LnRva2VuLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGltZW91dDogaHR0cENvbmZpZz8uc2VydmVyVGltZU91dCB8fCBodHRwQ29uZmlnPy50aW1lb3V0IHx8IDEwMDAwLFxuICAgICAgc2VydmVyLFxuICAgIH0sXG4gICAgYXV0aG9yOiBsb2dnZWRJblVzZXIsXG4gICAgdG9rZW46IGF1dGhlbnRpY2F0aW9uPy50b2tlbixcbiAgICBicmFuY2g6IHdvcmtpbmdSZXNvdXJjZUJyYW5jaCxcbiAgICBmaWxlcGF0aCxcbiAgICByZXBvLFxuICB9KVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHdoZW4gd2UgZ2V0IGEgc2F2ZSBzYXZlRXJyb3JcbiAgICBpZiAoc2F2ZUVycm9yICYmIGlzU2F2ZUVycm9yKSB7XG4gICAgICBjb25zb2xlLmxvZyhgc2F2ZSBlcnJvcmAsIHNhdmVFcnJvcilcbiAgICAgIG9uUmVzb3VyY2VFcnJvciAmJiBvblJlc291cmNlRXJyb3IobnVsbCwgZmFsc2UsIG51bGwsIGBFcnJvciBzYXZpbmcgJHtsYW5ndWFnZUlkX31fJHtyZXNvdXJjZUlkfSAke3NhdmVFcnJvcn1gLCB0cnVlKVxuICAgIH1cbiAgfSwgW3NhdmVFcnJvciwgaXNTYXZlRXJyb3JdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHdoZW4gc3RhcnRTYXZlIGdvZXMgdHJ1ZSwgc2F2ZSBlZGl0cyB0byB1c2VyIGJyYW5jaCBhbmQgdGhlbiBjbGVhciBzdGFydFNhdmVcbiAgICBjb25zdCBfc2F2ZUVkaXQgPSBhc3luYyAoKSA9PiB7IC8vIGJlZ2luIHVwbG9hZGluZyBuZXcgVVNGTVxuICAgICAgY29uc29sZS5pbmZvKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIFVzaW5nIHNoYTogJHtzaGF9YClcbiAgICAgIGF3YWl0IG9uU2F2ZUVkaXQodXNlckVkaXRCcmFuY2hOYW1lKS50aGVuKChzdWNjZXNzKSA9PiB7IC8vIHB1c2ggY2hhbmdlIHRvIHNlcnZlclxuICAgICAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmUgc2NyaXB0dXJlIGVkaXRzIHN1Y2Nlc3NgKVxuICAgICAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBwcmV2Q2FyZHNTYXZpbmcuZmlsdGVyKGNhcmRJZCA9PiBjYXJkSWQgIT09IGNhcmRSZXNvdXJjZUlkKSlcbiAgICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgICBzdGFydFNhdmU6IGZhbHNlLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBjb25zdCB1bnNhdmVkQ2FyZEluZGljZXMgPSBPYmplY3Qua2V5cyh1bnNhdmVkQ2hhbmdlc0xpc3QpXG5cbiAgICAgICAgICBpZiAodW5zYXZlZENhcmRJbmRpY2VzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY2FyZEluZGV4IG9mIHVuc2F2ZWRDYXJkSW5kaWNlcykge1xuICAgICAgICAgICAgICBjb25zdCB7IGNsZWFyQ2hhbmdlcyB9ID0gdW5zYXZlZENoYW5nZXNMaXN0W2NhcmRJbmRleF1cbiAgICAgICAgICAgICAgY2xlYXJDaGFuZ2VzICYmIGNsZWFyQ2hhbmdlcygpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc29sZS5pbmZvKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIFJlbG9hZGluZyByZXNvdXJjZScpXG4gICAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgICAgc3RhcnRTYXZlOiBmYWxzZSxcbiAgICAgICAgICAgIHJlYWR5Rm9yRmV0Y2g6IHRydWUsXG4gICAgICAgICAgICByZWY6IHVzZXJFZGl0QnJhbmNoTmFtZSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIGRlbGF5KDUwMCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBzZXRDYXJkc1NhdmluZyhwcmV2Q2FyZHNTYXZpbmcgPT4gcHJldkNhcmRzU2F2aW5nLmZpbHRlcihjYXJkSWQgPT4gY2FyZElkICE9PSBjYXJkUmVzb3VyY2VJZCkpXG4gICAgICAgICAgICBzY3JpcHR1cmVDb25maWc/LnJlbG9hZFJlc291cmNlKHNoYSlcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2aW5nIGNoYW5nZWQgc2NyaXB0dXJlIGZhaWxlZCcpXG4gICAgICAgICAgc2V0Q2FyZHNTYXZpbmcocHJldkNhcmRzU2F2aW5nID0+IHByZXZDYXJkc1NhdmluZy5maWx0ZXIoY2FyZElkID0+IGNhcmRJZCAhPT0gY2FyZFJlc291cmNlSWQpKVxuICAgICAgICAgIHNldFN0YXRlKHsgc3RhcnRTYXZlOiBmYWxzZSB9KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChzdGFydFNhdmUpIHtcbiAgICAgIGlmICghZWRpdEJyYW5jaFJlYWR5KSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBlZGl0IGJyYW5jaCBub3QgeWV0IGNyZWF0ZWRgKVxuICAgICAgfSBlbHNlIGlmICghc2hhKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBzYXZlIHNoYSBub3QgeWV0IHJlYWR5YClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBjYWxsaW5nIF9zYXZlRWRpdCgpYClcbiAgICAgICAgc2V0Q2FyZHNTYXZpbmcocHJldkNhcmRzU2F2aW5nID0+IFsuLi5wcmV2Q2FyZHNTYXZpbmcsIGNhcmRSZXNvdXJjZUlkXSlcbiAgICAgICAgX3NhdmVFZGl0KClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtzdGFydFNhdmUsIGVkaXRCcmFuY2hSZWFkeSwgc2hhXSlcblxuICAvKipcbiAgICogY29udmVydCB1cGRhdGVkVmVyc2VPYmplY3RzIHRvIFVTRk0gYW5kIG1lcmdlIGludG8gdGhlIGJpYmxlVXNmbVxuICAgKiBAcGFyYW0ge3N0cmluZ30gYmlibGVVc2ZtIC0gVVNGTSBvZiBiaWJsZVxuICAgKiBAcGFyYW0ge29iamVjdH0gcmVmIC0gcmVmZXJlbmNlIG9mIHZlcnNlIHRvIG1lcmdlIGluXG4gICAqIEBwYXJhbSB7b2JqZWN0W119IHVwZGF0ZWRWZXJzZU9iamVjdHMgLSBuZXcgdmVyc2UgaW4gdmVyc2VPYmplY3QgZm9ybWF0XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjYXJkTnVtXG4gICAqL1xuICBmdW5jdGlvbiBtZXJnZVZlcnNlT2JqZWN0c0ludG9CaWJsZVVzZm0oYmlibGVVc2ZtLCByZWYsIHVwZGF0ZWRWZXJzZU9iamVjdHMsIGNhcmROdW06IG51bWJlcikge1xuICAgIGxldCBuZXdVc2ZtXG4gICAgY29uc3QgY2hhcHRlckNodW5rcyA9IGJpYmxlVXNmbT8uc3BsaXQoJ1xcXFxjICcpXG4gICAgY29uc3QgY2hhcHRlckluZGV4ID0gZmluZFJlZkluQXJyYXkocmVmPy5jaGFwdGVyLCBjaGFwdGVyQ2h1bmtzKVxuXG4gICAgaWYgKGNoYXB0ZXJJbmRleCA+PSAwKSB7XG4gICAgICBjb25zdCBjdXJyZW50Q2hhcHRlciA9IGNoYXB0ZXJDaHVua3NbY2hhcHRlckluZGV4XVxuICAgICAgY29uc3QgdmVyc2VDaHVua3MgPSBjdXJyZW50Q2hhcHRlci5zcGxpdCgnXFxcXHYgJylcbiAgICAgIGNvbnN0IHZlcnNlSW5kZXggPSBmaW5kUmVmSW5BcnJheShyZWY/LnZlcnNlLCB2ZXJzZUNodW5rcylcblxuICAgICAgaWYgKHZlcnNlSW5kZXggPj0gMCkge1xuICAgICAgICBjb25zdCBuZXdWZXJzZVVzZm0gPSBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLmNvbnZlcnRWZXJzZURhdGFUb1VTRk0odXBkYXRlZFZlcnNlT2JqZWN0cylcbiAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgke2NhcmROdW19KSAtIG5ldyBVU0ZNIGZvciBjYXJkOn0gLSAke25ld1ZlcnNlVXNmbS5zdWJzdHJpbmcoMCwgMTAwKX1gKVxuICAgICAgICBjb25zdCBvbGRWZXJzZSA9IHZlcnNlQ2h1bmtzW3ZlcnNlSW5kZXhdXG4gICAgICAgIGNvbnN0IHZlcnNlTnVtTGVuID0gKHJlZj8udmVyc2UgKyAnJykubGVuZ3RoXG4gICAgICAgIHZlcnNlQ2h1bmtzW3ZlcnNlSW5kZXhdID0gb2xkVmVyc2Uuc3Vic3RyaW5nKDAsIHZlcnNlTnVtTGVuICsgMSkgKyBuZXdWZXJzZVVzZm1cbiAgICAgICAgY29uc3QgbmV3Q2hhcHRlciA9IHZlcnNlQ2h1bmtzLmpvaW4oJ1xcXFx2ICcpXG4gICAgICAgIGNoYXB0ZXJDaHVua3NbY2hhcHRlckluZGV4XSA9IG5ld0NoYXB0ZXJcbiAgICAgICAgbmV3VXNmbSA9IGNoYXB0ZXJDaHVua3Muam9pbignXFxcXGMgJylcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ld1VzZm1cbiAgfVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIGZvciBlYWNoIHVuc2F2ZWQgY2hhbmdlLCBjYWxsIGludG8gc2NyaXB0dXJlUGFuZSB0byBnZXQgbGF0ZXN0IGNoYW5nZXMgZm9yIHZlcnNlIHRvIHNhdmVcbiAgICBhc3luYyBmdW5jdGlvbiBnZXRSZWFkeUZvclNhdmUoKSB7XG4gICAgICBpZiAoc2F2ZUNsaWNrZWQpIHtcbiAgICAgICAgbGV0IGNyZWF0ZUVkaXRCcmFuY2ggPSAhX3VzaW5nVXNlckJyYW5jaFxuXG4gICAgICAgIGlmICghY3JlYXRlRWRpdEJyYW5jaCkgeyAvLyBpZiBhbHJlYWR5IHVzaW5nIHRoZSB1c2VyIGJyYW5jaFxuICAgICAgICAgIGlmICh3b3JraW5nUmVzb3VyY2VCcmFuY2ggIT09IHVzZXJFZGl0QnJhbmNoTmFtZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBzdGF0ZSBjb25mbGljdCAtIHNob3VsZCBiZSBpbiB1c2VyIGJyYW5jaCAke3VzZXJFZGl0QnJhbmNoTmFtZX0sIGJ1dCBhY3R1YWxseSB1c2luZyAke3dvcmtpbmdSZXNvdXJjZUJyYW5jaH1gKVxuICAgICAgICAgICAgY3JlYXRlRWRpdEJyYW5jaCA9IHRydWVcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGFscmVhZHkgdXNpbmcgZWRpdCBicmFuY2g6ICR7d29ya2luZ1Jlc291cmNlQnJhbmNofWApXG4gICAgICAgICAgICBzZXRTdGF0ZSh7IGVkaXRCcmFuY2hSZWFkeTogdHJ1ZSB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjcmVhdGVFZGl0QnJhbmNoKSB7IC8vIGlmIG5vdCB5ZXQgdXNpbmcgdGhlIHVzZXIgYnJhbmNoLCBjcmVhdGUgaXRcbiAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gY3JlYXRpbmcgZWRpdCBicmFuY2hgKVxuICAgICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICAgIGVkaXRCcmFuY2hSZWFkeTogZmFsc2UsXG4gICAgICAgICAgICByZWFkeUZvckZldGNoOiBmYWxzZSxcbiAgICAgICAgICAgIHNoYTogbnVsbCxcbiAgICAgICAgICB9KSAvLyB3ZSB3aWxsIG5lZWQgYSBuZXcgc2hhIGZvciBib29rL2JyYW5jaFxuXG4gICAgICAgICAgY29uc3QgYnJhbmNoID0gYXdhaXQgc3RhcnRFZGl0QnJhbmNoKClcblxuICAgICAgICAgIGlmIChicmFuY2gpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBlZGl0IGJyYW5jaCBjcmVhdGVkYClcbiAgICAgICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICAgICAgZWRpdEJyYW5jaFJlYWR5OiB0cnVlLFxuICAgICAgICAgICAgICByZWFkeUZvckZldGNoOiB0cnVlLFxuICAgICAgICAgICAgICByZWY6IGJyYW5jaCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gZXJyb3IgY3JlYXRpbmcgZWRpdCBicmFuY2gnKVxuICAgICAgICAgICAgb25SZXNvdXJjZUVycm9yICYmIG9uUmVzb3VyY2VFcnJvcihudWxsLCBmYWxzZSwgbnVsbCwgYEVycm9yIGNyZWF0aW5nIGVkaXQgYnJhbmNoICR7bGFuZ3VhZ2VJZF99XyR7cmVzb3VyY2VJZH1gLCB0cnVlKVxuICAgICAgICAgICAgc2V0U3RhdGUoeyBzYXZlQ2xpY2tlZDogZmFsc2UgfSlcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBnZXR0aW5nIHZlcnNlIGNoYW5nZXNgKVxuICAgICAgICBjb25zdCB1bnNhdmVkQ2FyZEluZGljZXMgPSBPYmplY3Qua2V5cyh1bnNhdmVkQ2hhbmdlc0xpc3QpXG5cbiAgICAgICAgaWYgKHVuc2F2ZWRDYXJkSW5kaWNlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgbGV0IGJpYmxlVXNmbSA9IGdldEN1cnJlbnRCb29rKHNjcmlwdHVyZUNvbmZpZywgYm9va0lkKVxuICAgICAgICAgIGxldCBtZXJnZUZhaWwgPSBmYWxzZVxuICAgICAgICAgIGlmIChiaWJsZVVzZm0pIHtcbiAgICAgICAgICAgIGxldCBjYXJkTnVtID0gMFxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNhcmRJbmRleCBvZiB1bnNhdmVkQ2FyZEluZGljZXMpIHtcbiAgICAgICAgICAgICAgY2FyZE51bSA9IHBhcnNlSW50KGNhcmRJbmRleClcbiAgICAgICAgICAgICAgY29uc3QgeyBnZXRDaGFuZ2VzLCBzdGF0ZSB9ID0gdW5zYXZlZENoYW5nZXNMaXN0W2NhcmROdW1dXG5cbiAgICAgICAgICAgICAgaWYgKGdldENoYW5nZXMpIHtcbiAgICAgICAgICAgICAgICBsZXQgbmV3VXNmbVxuICAgICAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgICAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHMsXG4gICAgICAgICAgICAgICAgfSA9IGdldENoYW5nZXMoc3RhdGUpXG5cbiAgICAgICAgICAgICAgICBpZiAodXBkYXRlZFZlcnNlT2JqZWN0cyAmJiBiaWJsZVVzZm0pIHsgLy8ganVzdCByZXBsYWNlIHZlcnNlXG4gICAgICAgICAgICAgICAgICBuZXdVc2ZtID0gbWVyZ2VWZXJzZU9iamVjdHNJbnRvQmlibGVVc2ZtKGJpYmxlVXNmbSwgcmVmLCB1cGRhdGVkVmVyc2VPYmplY3RzLCBjYXJkTnVtKVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChuZXdVc2ZtKSB7XG4gICAgICAgICAgICAgICAgICBiaWJsZVVzZm0gPSBuZXdVc2ZtXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIG1lcmdlRmFpbCA9IHRydWVcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG5cbiAgICAgICAgICBpZiAobWVyZ2VGYWlsKSB7IC8vIGlmIHdlIGZhaWxlZCB0byBtZXJnZSwgZmFsbGJhY2sgdG8gYnJ1dGUgZm9yY2UgdmVyc2Ugb2JqZWN0cyB0byBVU0ZNXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCR7Y2FyZE51bX0pIC0gdmVyc2Ugbm90IGZvdW5kLCBmYWxsaW5nIGJhY2sgdG8gaW5zZXJ0aW5nIHZlcnNlIG9iamVjdGApXG4gICAgICAgICAgICBsZXQgbmV3Qm9va0pzb25cblxuICAgICAgICAgICAgZm9yIChjb25zdCBjYXJkSW5kZXggb2YgdW5zYXZlZENhcmRJbmRpY2VzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNhcmROdW0gPSBwYXJzZUludChjYXJkSW5kZXgpXG4gICAgICAgICAgICAgIGNvbnN0IHsgZ2V0Q2hhbmdlcywgc3RhdGUgfSA9IHVuc2F2ZWRDaGFuZ2VzTGlzdFtjYXJkTnVtXVxuXG4gICAgICAgICAgICAgIGlmIChnZXRDaGFuZ2VzKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5ld1VzZm1cbiAgICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgICBuZXdWZXJzZVRleHQsXG4gICAgICAgICAgICAgICAgICByZWYsXG4gICAgICAgICAgICAgICAgICB1cGRhdGVkVmVyc2VPYmplY3RzLFxuICAgICAgICAgICAgICAgIH0gPSBnZXRDaGFuZ2VzKHN0YXRlKVxuXG4gICAgICAgICAgICAgICAgaWYgKHVwZGF0ZWRWZXJzZU9iamVjdHMgJiYgIW5ld1VzZm0pIHtcbiAgICAgICAgICAgICAgICAgIGxldCB0YXJnZXRWZXJzZU9iamVjdHNfID0gbnVsbFxuXG4gICAgICAgICAgICAgICAgICBpZiAocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXdWZXJzZVRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHRhcmdldFZlcnNlT2JqZWN0cyB9ID0gQWxpZ25tZW50SGVscGVycy51cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSh1cGRhdGVkVmVyc2VPYmplY3RzLCBuZXdWZXJzZVRleHQpXG4gICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VmVyc2VPYmplY3RzXyA9IHRhcmdldFZlcnNlT2JqZWN0c1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFZlcnNlT2JqZWN0c18gPSB1cGRhdGVkVmVyc2VPYmplY3RzXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbmV3Qm9va0pzb24gPSB0YXJnZXRWZXJzZU9iamVjdHNfICYmIHNjcmlwdHVyZUNvbmZpZz8udXBkYXRlVmVyc2UocmVmLmNoYXB0ZXIsIHJlZi52ZXJzZSwge3ZlcnNlT2JqZWN0czogdGFyZ2V0VmVyc2VPYmplY3RzX30pXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJpYmxlVXNmbSA9IHVzZm1qcy50b1VTRk0obmV3Qm9va0pzb24sIHsgZm9yY2VkTmV3TGluZXM6IHRydWUgfSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoYmlibGVVc2ZtKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZpbmcgbmV3IFVTRk06ICR7YmlibGVVc2ZtLnN1YnN0cmluZygwLCAxMDApfS4uLmApXG4gICAgICAgICAgICBzZXRDYXJkc1NhdmluZyhwcmV2Q2FyZHNTYXZpbmcgPT4gWy4uLnByZXZDYXJkc1NhdmluZywgY2FyZFJlc291cmNlSWRdKVxuICAgICAgICAgICAgc2V0U3RhdGUoe3NhdmVDb250ZW50OiBiaWJsZVVzZm0sIHN0YXJ0U2F2ZTogdHJ1ZSwgc2F2ZUNsaWNrZWQ6IGZhbHNlfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIEVycm9yIHJldHJpZXZpbmcgdGhlIGNvcnJlY3QgYm9vayBkYXRhOiBpbmNvcnJlY3QgYm9vayAke2xhbmd1YWdlSWRffV8ke3Jlc291cmNlSWR9YClcbiAgICAgICAgICAgICAgb25SZXNvdXJjZUVycm9yICYmIG9uUmVzb3VyY2VFcnJvcihudWxsLCBmYWxzZSwgbnVsbCwgYEVycm9yIHJldHJpZXZpbmcgdGhlIGNvcnJlY3QgYm9vayBkYXRhICR7bGFuZ3VhZ2VJZF99XyR7cmVzb3VyY2VJZH1gLCB0cnVlKVxuICAgICAgICAgICAgICBzZXRTdGF0ZSh7IHNhdmVDbGlja2VkOiBmYWxzZSB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGdldFJlYWR5Rm9yU2F2ZSgpXG4gIH0sIFtzYXZlQ2xpY2tlZF0pXG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCB7IGNoYXB0ZXIgfSA9IF9yZWZlcmVuY2UgfHwge31cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IF92ZXJzZXNGb3JSZWYgPSBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZlxuICAgIGxldCBuZXdTZWxlY3Rpb25zID0gbmV3IE1hcCgpXG4gICAgbGV0IHVwZGF0ZVNlbGVjdGlvbnMgPSBmYWxzZVxuICAgIGNvbnN0IF9tYXAgPSBuZXdTZWxlY3Rpb25zXG4gICAgY29uc3Qgb3JpZ2luYWxCb29rSWQgPSBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPy5ib29rSWRcbiAgICBjb25zdCBib29rVmVyc2VPYmplY3QgPSBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPy5jaGFwdGVyc1xuICAgIGxldCBuZXdTZWxlY3RlZFF1b3RlID0gbnVsbFxuXG4gICAgLy8gaWYgd2UgaGF2ZSBldmVyeXRoaW5nIHdlIG5lZWQgdG8gY2FsY3VsYXRlIHNlbGVjdGlvbnNcbiAgICBpZiAoX3ZlcnNlc0ZvclJlZj8ubGVuZ3RoICYmXG4gICAgICBib29rVmVyc2VPYmplY3QgJiZcbiAgICAgIChib29rSWQgPT09IG9yaWdpbmFsQm9va0lkKSAmJlxuICAgICAgYm9va1ZlcnNlT2JqZWN0W2NoYXB0ZXJdICYmIC8vIHdlIG5lZWQgdG8gaGF2ZSBkYXRhIGZvciBjaGFwdGVyXG4gICAgICBzZWxlY3RlZFF1b3RlPy5xdW90ZVxuICAgICkge1xuICAgICAgLy8gaWYgcXVvdGUgaXMgZGlmZmVyZW50IHRoYW4gbGFzdFxuICAgICAgaWYgKCFpc0VxdWFsKGxhc3RTZWxlY3RlZFF1b3RlLCBzZWxlY3RlZFF1b3RlKSB8fFxuICAgICAgICAhaXNFcXVhbCh2ZXJzZXNGb3JSZWYsIF92ZXJzZXNGb3JSZWYpKSB7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsVmVyc2VzID0ge31cbiAgICAgICAgY29uc3Qgc3Vic3RpdHV0ZSA9IHt9IC8vIGtlZXAgdHJhY2sgb2YgdmVyc2Ugc3Vic3RpdHV0aW9uc1xuICAgICAgICBsZXQgc3RhcnRWZXJzZSA9IF92ZXJzZXNGb3JSZWZbMF0udmVyc2VcblxuICAgICAgICBpZiAodHlwZW9mIHN0YXJ0VmVyc2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgc3RhcnRWZXJzZSA9IHBhcnNlSW50KHN0YXJ0VmVyc2UpXG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbGFzdFZlcnNlID0gc3RhcnRWZXJzZVxuXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsID0gX3ZlcnNlc0ZvclJlZi5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICBjb25zdCB2ZXJzZVJlZiA9IF92ZXJzZXNGb3JSZWZbaV1cbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBjaGFwdGVyLFxuICAgICAgICAgICAgdmVyc2UsXG4gICAgICAgICAgfSA9IHZlcnNlUmVmXG4gICAgICAgICAgLy8gVFJJQ0tZIC0gd2UgcmVtYXAgdmVyc2VzIGluIHJlZmVyZW5jZSByYW5nZSB0byBhIGxpbmVhciBzZXJpZXMgb2YgdmVyc2VzIHNvIHZlcnNlIHNwYW5zIGRvbid0IGNob2tlIGdldFF1b3RlTWF0Y2hlc0luQm9va1JlZlxuICAgICAgICAgIGxldCBfdmVyc2UgPSBzdGFydFZlcnNlICsgaVxuICAgICAgICAgIGxhc3RWZXJzZSA9IF92ZXJzZVxuICAgICAgICAgIHN1YnN0aXR1dGVbYCR7Y2hhcHRlcn06JHtfdmVyc2V9YF0gPSBgJHtjaGFwdGVyfToke3ZlcnNlfWBcblxuICAgICAgICAgIGlmICghb3JpZ2luYWxWZXJzZXNbY2hhcHRlcl0pIHtcbiAgICAgICAgICAgIG9yaWdpbmFsVmVyc2VzW2NoYXB0ZXJdID0ge31cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgdmVyc2VPYmplY3RzID0gW11cblxuICAgICAgICAgIGlmICgodHlwZW9mIHZlcnNlID09PSAnc3RyaW5nJykgJiYgKHZlcnNlLmluY2x1ZGVzKCctJykpKSB7XG4gICAgICAgICAgICBjb25zdCB2ZXJzZXMgPSBnZXRWZXJzZXMoYm9va1ZlcnNlT2JqZWN0LCBgJHtjaGFwdGVyfToke3ZlcnNlfWApXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgdmVyc2VJdGVtIG9mIHZlcnNlcykge1xuICAgICAgICAgICAgICBjb25zdCB2byA9IHZlcnNlSXRlbS52ZXJzZURhdGEudmVyc2VPYmplY3RzXG4gICAgICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IHZlcnNlT2JqZWN0cy5jb25jYXQodm8pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IGJvb2tWZXJzZU9iamVjdFtjaGFwdGVyXVt2ZXJzZV0/LnZlcnNlT2JqZWN0c1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh2ZXJzZU9iamVjdHMpIHtcbiAgICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IGNsZWFudXBWZXJzZU9iamVjdHModmVyc2VPYmplY3RzKVxuICAgICAgICAgICAgb3JpZ2luYWxWZXJzZXNbY2hhcHRlcl1bX3ZlcnNlXSA9IHsgdmVyc2VPYmplY3RzIH1cbiAgICAgICAgICAgIF9tYXAuc2V0KGAke2NoYXB0ZXJ9OiR7dmVyc2V9YCwgdmVyc2VPYmplY3RzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNyZWF0ZSBuZXcgcmVmZXJlbmNlIHJhbmdlIGZvciBuZXcgbGluZWFyIHZlcnNlIHJhbmdlXG4gICAgICAgIGNvbnN0IFtjaGFwdGVyXSA9IHNlbGVjdGVkUXVvdGU/LnJlZmVyZW5jZT8uc3BsaXQoJzonKVxuICAgICAgICBsZXQgc3ViUmVmID0gYCR7Y2hhcHRlcn06JHtzdGFydFZlcnNlfWBcblxuICAgICAgICBpZiAobGFzdFZlcnNlICE9IHN0YXJ0VmVyc2UpIHtcbiAgICAgICAgICBzdWJSZWYgKz0gYC0ke2xhc3RWZXJzZX1gXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBxdW90ZU1hdGNoZXMgPSBnZXRRdW90ZU1hdGNoZXNJbkJvb2tSZWYoe1xuICAgICAgICAgIGJvb2tPYmplY3Q6IG9yaWdpbmFsVmVyc2VzLFxuICAgICAgICAgIHJlZjogc3ViUmVmLFxuICAgICAgICAgIHF1b3RlOiBzZWxlY3RlZFF1b3RlPy5xdW90ZSxcbiAgICAgICAgICBvY2N1cnJlbmNlOiBzZWxlY3RlZFF1b3RlPy5vY2N1cnJlbmNlLFxuICAgICAgICB9KVxuXG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbnMgPSBuZXcgTWFwKClcblxuICAgICAgICBpZiAocXVvdGVNYXRjaGVzPy5zaXplKSB7XG4gICAgICAgICAgcXVvdGVNYXRjaGVzLmZvckVhY2goKHdvcmRzLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IF9rZXkgPSBzdWJzdGl0dXRlW2tleV1cblxuICAgICAgICAgICAgc2VsZWN0aW9ucy5zZXQoX2tleSwgd29yZHMubWFwKHdvcmQgPT4gKFxuICAgICAgICAgICAgICB7IC4uLndvcmQsIHRleHQ6IGNvcmUubm9ybWFsaXplU3RyaW5nKHdvcmQudGV4dCkgfVxuICAgICAgICAgICAgKSkpXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgICBuZXdTZWxlY3Rpb25zID0gc2VsZWN0aW9uc1xuICAgICAgICBuZXdTZWxlY3RlZFF1b3RlID0gc2VsZWN0ZWRRdW90ZVxuICAgICAgICB1cGRhdGVTZWxlY3Rpb25zID0gdHJ1ZVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG5ld1N0YXRlOiBhbnkgPSB7fVxuXG4gICAgLy8gdXBkYXRlIHN0YXRlcyB0aGF0IGhhdmUgY2hhbmdlZFxuICAgIGlmICghYXJlTWFwc1RoZVNhbWUodmVyc2VPYmplY3RzTWFwLCBfbWFwKSkge1xuICAgICAgbmV3U3RhdGUudmVyc2VPYmplY3RzTWFwID0gX21hcFxuICAgIH1cblxuICAgIGNvbnN0IGJvb2tzTm90U2FtZSA9IHJlZmVyZW5jZT8ucHJvamVjdElkICE9PSBjdXJyZW50UmVmZXJlbmNlPy5wcm9qZWN0SWRcblxuICAgIGlmIChib29rc05vdFNhbWUgfHwgIWFyZVZlcnNlc1NhbWUodmVyc2VzRm9yUmVmLCBfdmVyc2VzRm9yUmVmKSkge1xuICAgICAgbmV3U3RhdGUudmVyc2VzRm9yUmVmID0gX3ZlcnNlc0ZvclJlZlxuICAgICAgbmV3U3RhdGUubGFzdFNlbGVjdGVkUXVvdGUgPSBuZXdTZWxlY3RlZFF1b3RlXG4gICAgICBuZXdTdGF0ZS5zZWxlY3Rpb25zID0gbmV3U2VsZWN0aW9uc1xuICAgIH1cblxuICAgIGlmIChuZXdTZWxlY3RlZFF1b3RlKSB7XG4gICAgICBuZXdTdGF0ZS5sYXN0U2VsZWN0ZWRRdW90ZSA9IG5ld1NlbGVjdGVkUXVvdGVcbiAgICB9XG5cbiAgICBpZiAodXBkYXRlU2VsZWN0aW9ucykge1xuICAgICAgaWYgKCFhcmVNYXBzVGhlU2FtZShzZWxlY3Rpb25zIHx8IChuZXcgTWFwKCkpLCBuZXdTZWxlY3Rpb25zKSkge1xuICAgICAgICBuZXdTdGF0ZS5zZWxlY3Rpb25zID0gbmV3U2VsZWN0aW9uc1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChPYmplY3Qua2V5cyhuZXdTdGF0ZSkubGVuZ3RoKSB7XG4gICAgICBzZXRTdGF0ZShuZXdTdGF0ZSlcbiAgICB9XG4gIH0sIFtcbiAgICBvd25lcixcbiAgICByZXNvdXJjZUlkLFxuICAgIGJvb2tJZCxcbiAgICBsYW5ndWFnZUlkXyxcbiAgICBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZixcbiAgICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzLFxuICAgIHNlbGVjdGVkUXVvdGUsXG4gIF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gY2xlYXIgc2V0dGluZ3Mgb24gdmVyc2UgY2hhbmdlXG4gICAgc2V0U3RhdGUoe1xuICAgICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzOiBudWxsLFxuICAgICAgdW5zYXZlZENoYW5nZXNMaXN0OiB7fSxcbiAgICAgIGhhdmVVbnNhdmVkQ2hhbmdlczogZmFsc2UsXG4gICAgfSlcbiAgfSwgW19yZWZlcmVuY2VdKVxuXG4gIGNvbnN0IHVwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1cyA9IChyZWZlcmVuY2UsIGFsaWduZWQpID0+IHtcbiAgICBzZXRTdGF0ZV8ocHJldlN0YXRlID0+ICh7XG4gICAgICAuLi5wcmV2U3RhdGUsXG4gICAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXM6IHsgLi4ucHJldlN0YXRlLnZlcnNlc0FsaWdubWVudFN0YXR1cywgW2Ake3JlZmVyZW5jZS5jaGFwdGVyfToke3JlZmVyZW5jZS52ZXJzZX1gXTogYWxpZ25lZCB9LFxuICAgIH0pKVxuICB9XG5cbiAgbGV0IF92ZXJzZXNGb3JSZWYgPSBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZlxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKF92ZXJzZXNGb3JSZWY/Lmxlbmd0aCkge1xuICAgICAgY29uc3QgeyByZWZlcmVuY2UsIHJlc291cmNlTGluayB9ID0gc2NyaXB0dXJlQ29uZmlnIHx8IHt9XG4gICAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZC5fdmVyc2VzRm9yUmVmIGNoYW5nZWRgLCB7IHJlZmVyZW5jZSwgcmVzb3VyY2VMaW5rIH0pXG4gICAgfVxuICB9LCBbX3ZlcnNlc0ZvclJlZl0pXG5cbiAgaWYgKCFfdmVyc2VzRm9yUmVmPy5sZW5ndGgpIHsgLy8gaWYgZW1wdHkgb2YgcmVmZXJlbmNlcywgY3JlYXRlIHNpbmdsZSBlbXB0eSByZWZlcmVuY2VcbiAgICBfdmVyc2VzRm9yUmVmID0gW3sgLi4ucmVmZXJlbmNlIH1dXG4gIH1cblxuICBjb25zdCByZW5kZXJlZFNjcmlwdHVyZVBhbmVzID0gX3ZlcnNlc0ZvclJlZj8ubWFwKChfY3VycmVudFZlcnNlRGF0YSwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBpbml0aWFsVmVyc2VPYmplY3RzID0gX2N1cnJlbnRWZXJzZURhdGE/LnZlcnNlRGF0YT8udmVyc2VPYmplY3RzIHx8IFtdXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHsgY2hhcHRlciwgdmVyc2UgfSA9IF9jdXJyZW50VmVyc2VEYXRhIHx8IHt9XG4gICAgY29uc3QgcHJvamVjdElkID0gY3VycmVudFJlZmVyZW5jZT8ucHJvamVjdElkIHx8IHJlZmVyZW5jZT8ucHJvamVjdElkXG4gICAgY29uc3QgX3JlZmVyZW5jZSA9IHtcbiAgICAgIC4uLl92ZXJzZXNGb3JSZWYsXG4gICAgICBjaGFwdGVyLFxuICAgICAgcHJvamVjdElkLFxuICAgICAgdmVyc2UsXG4gICAgfVxuICAgIGNvbnN0IF9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnID0ge1xuICAgICAgLi4uc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyxcbiAgICAgIGN1cnJlbnRJbmRleDogaW5kZXgsXG4gICAgICBpbml0aWFsVmVyc2VPYmplY3RzLFxuICAgICAgcmVmZXJlbmNlOiBfcmVmZXJlbmNlLFxuICAgICAgaXNOZXdUZXN0YW1lbnQsXG4gICAgfVxuXG4gICAgbGV0IGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCA9IGZhbHNlXG5cbiAgICBpZiAodmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCkge1xuICAgICAgaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50ID0gdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudC5jaGFwdGVyID09IGNoYXB0ZXIgJiYgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudC52ZXJzZSA9PSB2ZXJzZVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8U2NyaXB0dXJlUGFuZVxuICAgICAgICB7Li4uc2NyaXB0dXJlQ29uZmlnfVxuICAgICAgICBjb250ZW50U3R5bGU9e2NvbnRlbnRTdHlsZX1cbiAgICAgICAgY3VycmVudEluZGV4PXtpbmRleH1cbiAgICAgICAgZGV0ZXJtaW5pbmdCcmFuY2g9eyFyZWFkeUZvckZldGNofVxuICAgICAgICBkaXJlY3Rpb249e2RpcmVjdGlvbn1cbiAgICAgICAgZGlzYWJsZVdvcmRQb3BvdmVyPXtkaXNhYmxlV29yZFBvcG92ZXJffVxuICAgICAgICBmb250U2l6ZT17Zm9udFNpemV9XG4gICAgICAgIGdldExleGljb25EYXRhPXtnZXRMZXhpY29uRGF0YX1cbiAgICAgICAgaXNOVD17aXNOVF99XG4gICAgICAgIGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudD17aXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50fVxuICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICBvbkFsaWdubWVudEZpbmlzaD17KCkgPT4gc2V0U3RhdGUoeyB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiBudWxsIH0pfVxuICAgICAgICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPXtvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzfVxuICAgICAgICByZWZTdHlsZT17cmVmU3R5bGV9XG4gICAgICAgIHJlZmVyZW5jZT17X3JlZmVyZW5jZX1cbiAgICAgICAgc2F2aW5nPXtzdGFydFNhdmV9XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZz17X3NjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWd9XG4gICAgICAgIHNldFdvcmRBbGlnbmVyU3RhdHVzPXtzZXRXb3JkQWxpZ25lclN0YXR1c31cbiAgICAgICAgc2VydmVyPXtzZXJ2ZXJ9XG4gICAgICAgIHRyYW5zbGF0ZT17dHJhbnNsYXRlfVxuICAgICAgICB1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXM9e3VwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1c31cbiAgICAgIC8+XG4gICAgKVxuICB9KVxuXG4gIGNvbnN0IGhhbmRsZUFsaWduQnV0dG9uQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKHZlcnNlc0ZvclJlZj8ubGVuZ3RoID4gMSkge1xuICAgICAgc2V0U3RhdGUoeyBzaG93QWxpZ25tZW50UG9wdXA6IHRydWUgfSlcbiAgICB9IGVsc2UgaWYgKHZlcnNlc0ZvclJlZj8ubGVuZ3RoID09PSAxKSB7XG4gICAgICBzZXRTdGF0ZSh7IHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ6IHZlcnNlc0ZvclJlZlswXSB9KVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG9uUmVuZGVyVG9vbGJhciA9ICh7IGl0ZW1zIH0pID0+IHtcbiAgICBjb25zdCBuZXdJdGVtcyA9IFsuLi5pdGVtc11cblxuICAgIGxldCBhbGxWZXJzZXNBbGlnbmVkID0gZmFsc2VcblxuICAgIC8vIENoZWNrIGlmIGFsbCB2YWx1ZXMgaW4gdmVyc2VzQWxpZ25tZW50U3RhdHVzIGFyZSB0cnVlXG4gICAgaWYgKHZlcnNlc0FsaWdubWVudFN0YXR1cykge1xuICAgICAgYWxsVmVyc2VzQWxpZ25lZCA9IE9iamVjdC52YWx1ZXModmVyc2VzQWxpZ25tZW50U3RhdHVzKS5ldmVyeShhbGlnblN0YXR1cyA9PiBhbGlnblN0YXR1cyA9PT0gdHJ1ZSlcbiAgICB9XG5cbiAgICBsZXQgYWxpZ25JY29uID0gbnVsbFxuICAgIGxldCBhbGlnbkJ1dHRvblRleHQgPSAnJ1xuXG4gICAgaWYgKGFsbFZlcnNlc0FsaWduZWQpIHtcbiAgICAgIGFsaWduSWNvbiA9IDxSeExpbmsyIGlkPXtgdmFsaWRfaWNvbl8ke3Jlc291cmNlSWR9YH0gY29sb3I9JyNCQkInIC8+XG4gICAgICBhbGlnbkJ1dHRvblRleHQgPSAnQWxpZ25tZW50IGlzIFZhbGlkJ1xuICAgIH0gZWxzZSB7XG4gICAgICBhbGlnbkljb24gPSA8UnhMaW5rQnJlYWsyIGlkPXtgaW52YWxpZF9hbGlnbm1lbnRfaWNvbl8ke3Jlc291cmNlSWR9YH0gY29sb3I9JyMwMDAnIC8+XG4gICAgICBhbGlnbkJ1dHRvblRleHQgPSAnQWxpZ25tZW50IGlzIEludmFsaWQnXG4gICAgfVxuXG4gICAgaWYgKHNldFdvcmRBbGlnbmVyU3RhdHVzICYmIHJlc291cmNlSWQgIT09ICdPUklHSU5BTF9TT1VSQ0UnKSB7XG4gICAgICBuZXdJdGVtcy5wdXNoKFxuICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgIGlkPXtgYWxpZ25tZW50X2ljb25fJHtyZXNvdXJjZUlkfWB9XG4gICAgICAgICAga2V5PSdjaGVja2luZy1idXR0b24nXG4gICAgICAgICAgb25DbGljaz17aGFuZGxlQWxpZ25CdXR0b25DbGlja31cbiAgICAgICAgICB0aXRsZT17YWxpZ25CdXR0b25UZXh0fVxuICAgICAgICAgIGFyaWEtbGFiZWw9e2FsaWduQnV0dG9uVGV4dH1cbiAgICAgICAgICBzdHlsZT17eyBjdXJzb3I6ICdwb2ludGVyJyB9fVxuICAgICAgICA+XG4gICAgICAgICAge2FsaWduSWNvbn1cbiAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgKVxuICAgIH1cblxuICAgIG5ld0l0ZW1zLnB1c2goXG4gICAgICA8PlxuICAgICAgICA8VXBkYXRlQnJhbmNoQnV0dG9uIHsuLi51cGRhdGVCdXR0b25Qcm9wc30gaXNMb2FkaW5nPXtpc1VwZGF0ZUxvYWRpbmcgfHwgc3RhcnRTYXZlfS8+XG4gICAgICAgIDxFcnJvckRpYWxvZyB0aXRsZT17ZGlhbG9nVGl0bGV9IGNvbnRlbnQ9e2RpYWxvZ01lc3NhZ2V9IG9wZW49e2lzRXJyb3JEaWFsb2dPcGVufSBvbkNsb3NlPXtvbkNsb3NlRXJyb3JEaWFsb2d9IGlzTG9hZGluZz17IGlzVXBkYXRlTG9hZGluZyB8fCBzdGFydFNhdmUgfSBsaW5rPXtkaWFsb2dMaW5rfSBsaW5rVG9vbHRpcD17ZGlhbG9nTGlua1Rvb2x0aXB9IC8+XG4gICAgICA8Lz5cbiAgICApXG5cbiAgICByZXR1cm4gbmV3SXRlbXNcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFNlbGVjdGlvbnNDb250ZXh0UHJvdmlkZXJcbiAgICAgIHNlbGVjdGlvbnM9e3NlbGVjdGlvbnN9XG4gICAgICBvblNlbGVjdGlvbnM9e25ld1NlbGVjdGlvbnMgPT4ge1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnb25TZWxlY3Rpb25zJywgbmV3U2VsZWN0aW9ucylcbiAgICAgIH19XG4gICAgICBxdW90ZT17c2VsZWN0ZWRRdW90ZT8ucXVvdGV9XG4gICAgICBvY2N1cnJlbmNlPXtmaXhPY2N1cnJlbmNlKHNlbGVjdGVkUXVvdGU/Lm9jY3VycmVuY2UpfVxuICAgICAgdmVyc2VPYmplY3RzTWFwPXt2ZXJzZU9iamVjdHNNYXB9XG4gICAgPlxuICAgICAgPENhcmRcbiAgICAgICAgaWQ9e2BzY3JpcHR1cmVfY2FyZF8ke2NhcmROdW19YH1cbiAgICAgICAgdGl0bGU9e3NjcmlwdHVyZUxhYmVsfVxuICAgICAgICBzZXR0aW5nc1RpdGxlPXtzY3JpcHR1cmVUaXRsZSArICcgU2V0dGluZ3MnfVxuICAgICAgICBpdGVtcz17aXRlbXN9XG4gICAgICAgIGNsYXNzZXM9e2NsYXNzZXN9XG4gICAgICAgIGhlYWRlcnM9e2hlYWRlcnN9XG4gICAgICAgIGZpbHRlcnM9e2ZpbHRlcnN9XG4gICAgICAgIGZvbnRTaXplPXtmb250U2l6ZX1cbiAgICAgICAgaXRlbUluZGV4PXtpdGVtSW5kZXh9XG4gICAgICAgIHNldEZpbHRlcnM9e3NldEZpbHRlcnN9XG4gICAgICAgIHNldEZvbnRTaXplPXtzZXRGb250U2l6ZX1cbiAgICAgICAgc2V0SXRlbUluZGV4PXtzZXRJdGVtSW5kZXh9XG4gICAgICAgIG1hcmtkb3duVmlldz17bWFya2Rvd25WaWV3fVxuICAgICAgICBzZXRNYXJrZG93blZpZXc9e3NldE1hcmtkb3duVmlld31cbiAgICAgICAgZ2V0Q3VzdG9tQ29tcG9uZW50PXtnZXRTY3JpcHR1cmVTZWxlY3Rvcn1cbiAgICAgICAgaGlkZU1hcmtkb3duVG9nZ2xlXG4gICAgICAgIG9uTWVudUNsb3NlPXtvbk1lbnVDbG9zZX1cbiAgICAgICAgb25NaW5pbWl6ZT17b25NaW5pbWl6ZSA/ICgpID0+IG9uTWluaW1pemUoaWQsIHNjcmlwdHVyZVRpdGxlKSA6IG51bGx9XG4gICAgICAgIGVkaXRhYmxlPXtlbmFibGVFZGl0IHx8IGVuYWJsZUFsaWdubWVudH1cbiAgICAgICAgc2F2ZWQ9e3N0YXJ0U2F2ZSB8fCAhaGF2ZVVuc2F2ZWRDaGFuZ2VzfVxuICAgICAgICBvblNhdmVFZGl0PXsoKSA9PiBzZXRTdGF0ZSh7IHNhdmVDbGlja2VkOiB0cnVlIH0pfVxuICAgICAgICBvblJlbmRlclRvb2xiYXI9e29uUmVuZGVyVG9vbGJhcn1cbiAgICAgID5cbiAgICAgICAgPGRpdiBpZD1cInNjcmlwdHVyZS1wYW5lLWxpc3RcIj5cbiAgICAgICAgICB7cmVuZGVyZWRTY3JpcHR1cmVQYW5lc31cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L0NhcmQ+XG4gICAgICA8VmVyc2VTZWxlY3RvclBvcHVwXG4gICAgICAgIHJlc291cmNlSWQ9e3Jlc291cmNlSWR9XG4gICAgICAgIG9wZW49e3Nob3dBbGlnbm1lbnRQb3B1cH1cbiAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U3RhdGUoeyBzaG93QWxpZ25tZW50UG9wdXA6IGZhbHNlIH0pfVxuICAgICAgICB2ZXJzZXNGb3JSZWY9e3ZlcnNlc0ZvclJlZn1cbiAgICAgICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzPXt2ZXJzZXNBbGlnbm1lbnRTdGF0dXN9XG4gICAgICAgIG9uVmVyc2VTZWxlY3Q9eyh2ZXJzZSkgPT4gc2V0U3RhdGUoe1xuICAgICAgICAgIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ6IHZlcnNlLFxuICAgICAgICAgIHNob3dBbGlnbm1lbnRQb3B1cDogZmFsc2UsXG4gICAgICAgIH0pfVxuICAgICAgLz5cbiAgICA8L1NlbGVjdGlvbnNDb250ZXh0UHJvdmlkZXI+XG4gIClcbn1cblxuU2NyaXB0dXJlQ2FyZC5wcm9wVHlwZXMgPSB7XG4gIC8qKiByZXBvIGJyYW5jaCBvciB0YWcgc3VjaCBhcyBtYXN0ZXIgKi9cbiAgYXBwUmVmOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIC8qKiBhdXRoZW50aWNhdGlvbiBpbmZvICovXG4gIGF1dGhlbnRpY2F0aW9uOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogaW5kZXggZm9yIGN1cnJlbnQgYm9vayAoZS5nLiAnMDEnIGZvciAnZ2VuJykqL1xuICBib29rSW5kZXg6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBzY3JpcHR1cmUgY2FyZCBudW1iZXIgKDAgdG8gMiBmb3IgZXhhbXBsZSkgKi9cbiAgY2FyZE51bTogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICAvKiogQ1NTIGNsYXNzZXMgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIGlmIHRydWUgdGhlbiB3b3JkIGRhdGEgaG92ZXIgaXMgc2hvd24gKi9cbiAgZGlzYWJsZVdvcmRQb3BvdmVyOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqIGdldCBsYW5ndWFnZSBkZXRhaWxzICovXG4gIGdldExhbmd1YWdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAvKiogZnVuY3Rpb24gdG8gZ2V0IGxhdGVzdCBsZXhpY29uIGRhdGEgKi9cbiAgZ2V0TGV4aWNvbkRhdGE6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogb3B0aW9uYWwgdXJsIGZvciBncmVlayByZXBvICovXG4gIGdyZWVrUmVwb1VybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIG9wdGlvbmFsIHVybCBmb3IgaGVicmV3IHJlcG8gKi9cbiAgaGVicmV3UmVwb1VybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIG9wdGlvbmFsIGh0dHAgdGltZW91dCBpbiBtaWxsaXNlY29uZHMgZm9yIGZldGNoaW5nIHJlc291cmNlcywgZGVmYXVsdCBpcyAwICh2ZXJ5IGxvbmcgd2FpdCkgKi9cbiAgaHR0cENvbmZpZzogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIGh0bWwgaWRlbnRpZmllciB0byB1c2UgZm9yIGNhcmQgKi9cbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBtZXRob2QgdG8gZGV0ZXJtaW5lIGlmIE5UIG9yIE9UICovXG4gIGlzTlQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIC8qKiB1c2VyLW5hbWUgKi9cbiAgbG9nZ2VkSW5Vc2VyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogZnVuY3Rpb24gdG8gbWluaW1pemUgdGhlIGNhcmQgKG9wdGlvbmFsKSAqL1xuICBvbk1pbmltaXplOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIG9wdGlvbmFsIGNhbGxiYWNrIGlmIGVycm9yIGxvYWRpbmcgcmVzb3VyY2UsIHBhcmFtZXRlciByZXR1cm5lZCBhcmU6XG4gICAqICAgICh7c3RyaW5nfSBlcnJvck1lc3NhZ2UsIHtib29sZWFufSBpc0FjY2Vzc0Vycm9yLCB7b2JqZWN0fSByZXNvdXJjZVN0YXR1cylcbiAgICogICAgICAtIGlzQWNjZXNzRXJyb3IgLSBpcyB0cnVlIGlmIHRoaXMgd2FzIGFuIGVycm9yIHRyeWluZyB0byBhY2Nlc3MgZmlsZVxuICAgKiAgICAgIC0gcmVzb3VyY2VTdGF0dXMgLSBpcyBvYmplY3QgY29udGFpbmluZyBkZXRhaWxzIGFib3V0IHByb2JsZW1zIGZldGNoaW5nIHJlc291cmNlICovXG4gIG9uUmVzb3VyY2VFcnJvcjogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiB0aGUgb3JpZ2luYWwgc2NyaXB0dXJlIGJvb2tPYmplY3RzIGZvciBjdXJyZW50IGJvb2sgKi9cbiAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0czogUHJvcFR5cGVzLm9iamVjdCxcbiAgcmVmZXJlbmNlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIC8qKiBwcm9qZWN0SWQgKGJvb2tJRCkgdG8gdXNlICovXG4gICAgcHJvamVjdElkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIGN1cnJlbnQgY2hhcHRlciBudW1iZXIgKi9cbiAgICBjaGFwdGVyOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc3RyaW5nXSkuaXNSZXF1aXJlZCxcbiAgICAvKiogY3VycmVudCB2ZXJzZSBudW1iZXIgKi9cbiAgICB2ZXJzZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLmlzUmVxdWlyZWQsXG4gIH0pLFxuICAvKiogcmVzb3VyY2Ugb2JqZWN0ICovXG4gIHJlc291cmNlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIC8qKiByZXNvdXJjZSBsYW5ndWFnZSB0byB1c2UgKi9cbiAgICBsYW5ndWFnZUlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIHJlcG8gb3duZXIgc3VjaCBhcyB1bmZvbGRpbmdXb3JkICovXG4gICAgb3duZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogcmVzb3VyY2VJZCB0byB1c2UgKGUuZy4gdWdudCkgKi9cbiAgICByZXNvdXJjZUlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIHJlcG8gb3duZXIgZm9yIG9yaWdpbmFsIGxhbmd1YWdlcyBzdWNoIGFzIHVuZm9sZGluZ1dvcmQgKi9cbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgfSksXG4gIC8qKiByZXNvdXJjZUxpbmsgKi9cbiAgcmVzb3VyY2VMaW5rOiBQcm9wVHlwZXMuYW55LFxuICAvKipUaGlzIGlzIGN1cnJlbnRseSBzZWxlY3RlZCBxdW90ZSAqL1xuICBzZWxlY3RlZFF1b3RlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogc2VydmVyIChlLmcuICdodHRwczovL2dpdC5kb29yNDMub3JnJykgKi9cbiAgc2VydmVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIC8qKiBjYWxsYmFjayB0byB1cGRhdGUgbG9hZGluZyBzdGF0ZSAqL1xuICBzZXRBcmVSZXNvdXJjZXNMb2FkaW5nOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHVwZGF0ZSBzYXZpbmcgc3RhdGUqL1xuICBzZXRBcmVSZXNvdXJjZXNTYXZpbmc6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogY2FsbGJhY2sgdG8gcmVwb3J0IGNhcmQgbWVyZ2Ugc3RhdHVzICovXG4gIHNldENhcmRzTG9hZGluZ01lcmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHJlcG9ydCBjYXJkIHVwZGF0ZSBzdGF0dXMgKi9cbiAgc2V0Q2FyZHNMb2FkaW5nVXBkYXRlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHJlcG9ydCBjYXJkIHNhdmluZyBzdGF0dXMgKi9cbiAgc2V0Q2FyZHNTYXZpbmc6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogZnVuY3Rpb24gdG8gc2V0IHN0YXRlIGluIGFwcCB0aGF0IHRoZXJlIGFyZSB1bnNhdmVkIGNoYW5nZXMgKi9cbiAgc2V0U2F2ZWRDaGFuZ2VzOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHVwZGF0ZSB3b3JkIGFsaWduZXIgc3RhdGUgKi9cbiAgc2V0V29yZEFsaWduZXJTdGF0dXM6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogdGl0bGUgZm9yIHNjcmlwdHVyZSBjYXJkICovXG4gIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIC8qKiBvcHRpb25hbCBmdW5jdGlvbiBmb3IgbG9jYWxpemF0aW9uICovXG4gIHRyYW5zbGF0ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byB1cGRhdGUgdGhlIGNhcmQncyBtZXJnZSBzdGF0ZSBpbiBhcHAgKi9cbiAgdXBkYXRlTWVyZ2VTdGF0ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiB1c2UgbWV0aG9kIGZvciB1c2luZyBsb2NhbCBzdG9yYWdlIHNwZWNpZmljIGZvciB1c2VyICovXG4gIHVzZVVzZXJMb2NhbFN0b3JhZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG59XG4iXX0=
1564
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NjcmlwdHVyZUNhcmQvU2NyaXB0dXJlQ2FyZC50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJQcm9wVHlwZXMiLCJjb3JlIiwiU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciIsInVzZm1qcyIsInVzZUVkaXQiLCJJY29uQnV0dG9uIiwiUnhMaW5rMiIsIlJ4TGlua0JyZWFrMiIsIkNhcmQiLCJFcnJvckRpYWxvZyIsIkVSUk9SX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsIlVwZGF0ZUJyYW5jaEJ1dHRvbiIsInVzZUJyYW5jaE1lcmdlciIsInVzZUNhcmRTdGF0ZSIsInVzZUNvbnRlbnRVcGRhdGVQcm9wcyIsInVzZU1hc3Rlck1lcmdlUHJvcHMiLCJ1c2VVc2VyQnJhbmNoIiwiZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIiwiQWxpZ25tZW50SGVscGVycyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJpc0VxdWFsIiwiZ2V0VmVyc2VzIiwiU2NyaXB0dXJlUGFuZSIsIlNjcmlwdHVyZVNlbGVjdG9yIiwidXNlU2NyaXB0dXJlU2V0dGluZ3MiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwiZml4T2NjdXJyZW5jZSIsImdldEJvb2tOYW1lRnJvbVVzZm1GaWxlTmFtZSIsImdldFJlc291cmNlTGluayIsImdldFJlc291cmNlTWVzc2FnZSIsImdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyIsImlzT3JpZ2luYWxCaWJsZSIsImRlbGF5IiwiYXJlTWFwc1RoZVNhbWUiLCJUaXRsZSIsIk5UX09SSUdfTEFORyIsIk9SSUdJTkFMX1NPVVJDRSIsIk9UX09SSUdfTEFORyIsIlZlcnNlU2VsZWN0b3JQb3B1cCIsIktFWV9GT05UX1NJWkVfQkFTRSIsImxhYmVsIiwic3R5bGUiLCJtYXJnaW5Ub3AiLCJ3aWR0aCIsImNvbXBhcmVPYmplY3QiLCJ2ZXJzZVJlZiIsImNoYXB0ZXIiLCJ2ZXJzZSIsInZlcnNlRGF0YSIsInZlcnNlT2JqZWN0cyIsImxlbmd0aCIsIkpTT04iLCJzdHJpbmdpZnkiLCJhcmVWZXJzZXNTYW1lIiwidmVyc2VzRm9yUmVmMSIsInZlcnNlc0ZvclJlZjIiLCJhcmVTYW1lIiwiaSIsImwiLCJ2ZXJzZTEiLCJ2ZXJzZTIiLCJnZXRDdXJyZW50Qm9vayIsInNjcmlwdHVyZUNvbmZpZyIsImJvb2tJZCIsImxhdGVzdEJpYmxlIiwicmVzb3VyY2VTdGF0ZSIsInJlc291cmNlIiwicHJvamVjdElkIiwiZmlsZW5hbWUiLCJuYW1lIiwiaXNCb29rVmFsaWQiLCJib29rTmFtZSIsInRvTG93ZXJDYXNlIiwiaW5jbHVkZXMiLCJjb25zb2xlIiwid2FybiIsImJpYmxlVXNmbSIsImVycm9yIiwiU2NyaXB0dXJlQ2FyZCIsImFwcFJlZiIsImF1dGhlbnRpY2F0aW9uIiwiYm9va0luZGV4IiwiY2FyZE51bSIsImNsYXNzZXMiLCJkaXNhYmxlV29yZFBvcG92ZXIiLCJnZXRMYW5ndWFnZSIsImdldExleGljb25EYXRhIiwiZ3JlZWtSZXBvVXJsIiwiaGVicmV3UmVwb1VybCIsImh0dHBDb25maWciLCJpZCIsImlzTlQiLCJsb2dnZWRJblVzZXIiLCJvbk1pbmltaXplIiwib25SZXNvdXJjZUVycm9yIiwib3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyIsInJlZmVyZW5jZSIsIm93bmVyIiwibGFuZ3VhZ2VJZCIsInJlc291cmNlSWQiLCJvcmlnaW5hbExhbmd1YWdlT3duZXIiLCJyZXNvdXJjZUxpbmsiLCJzZWxlY3RlZFF1b3RlIiwic2VydmVyIiwic2V0Q2FyZHNMb2FkaW5nTWVyZ2UiLCJzZXRDYXJkc0xvYWRpbmdVcGRhdGUiLCJzZXRDYXJkc1NhdmluZyIsInNldFNhdmVkQ2hhbmdlcyIsInNldFdvcmRBbGlnbmVyU3RhdHVzIiwidHJhbnNsYXRlIiwidGl0bGUiLCJ1c2VVc2VyTG9jYWxTdG9yYWdlIiwidXBkYXRlTWVyZ2VTdGF0ZSIsInVzZVN0YXRlIiwiY2hlY2tGb3JFZGl0QnJhbmNoIiwiY3VycmVudFJlZmVyZW5jZSIsImVkaXRCcmFuY2hSZWFkeSIsImhhdmVVbnNhdmVkQ2hhbmdlcyIsImxhc3RTZWxlY3RlZFF1b3RlIiwicmVhZHlGb3JGZXRjaCIsInJlZiIsInNhdmVDbGlja2VkIiwic2F2ZUNvbnRlbnQiLCJzZWxlY3Rpb25zIiwiTWFwIiwic2hvd0FsaWdubWVudFBvcHVwIiwic3RhcnRTYXZlIiwidXJsRXJyb3IiLCJ1c2luZ1VzZXJCcmFuY2giLCJ1bnNhdmVkQ2hhbmdlc0xpc3QiLCJ2ZXJzZXNBbGlnbm1lbnRTdGF0dXMiLCJ2ZXJzZXNGb3JSZWYiLCJ2ZXJzZU9iamVjdHNNYXAiLCJ2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50Iiwic3RhdGUiLCJzZXRTdGF0ZV8iLCJmb250U2l6ZSIsInNldEZvbnRTaXplIiwiaXNOVF8iLCJzZXRTdGF0ZSIsIm5ld1N0YXRlIiwicHJldlN0YXRlIiwiY2FjaGUiLCJtYXhBZ2UiLCJub0NhY2hlIiwic2V0VXJsRXJyb3IiLCJ3aG9sZUJvb2siLCJpc05ld1Rlc3RhbWVudCIsInNldFNjcmlwdHVyZSIsInNjcmlwdHVyZVNldHRpbmdzIiwic2NyaXB0dXJlVmVyc2lvbkhpc3QiLCJmZXRjaGVkUmVzb3VyY2UiLCJyZXBvIiwicmVmZXJlbmNlXyIsImNhcmRSZXNvdXJjZUlkIiwicmVmXyIsImNhblVzZUVkaXRCcmFuY2giLCJjYXJkSWQiLCJicmFuY2hEZXRlcm1pbmVkIiwidXNlckVkaXRCcmFuY2hOYW1lIiwiX3VzaW5nVXNlckJyYW5jaCIsIndvcmtpbmdSZXNvdXJjZUJyYW5jaCIsImFjdGlvbnMiLCJzdGFydEVkaXRCcmFuY2giLCJzdGFydEVkaXQiLCJmaW5pc2hFZGl0IiwiX3VzZUJyYW5jaE1lcmdlciIsInVzZXJCcmFuY2giLCJ0b2tlbmlkIiwidG9rZW4iLCJzaGExIiwibWVyZ2VUb01hc3RlciIsIm1lcmdlU3RhdHVzIiwibWVyZ2VGcm9tTWFzdGVyIiwidXBkYXRlU3RhdHVzIiwidXBkYXRlQnV0dG9uUHJvcHMiLCJpc1NhdmluZyIsIm9uVXBkYXRlIiwidGhlbiIsInJlbG9hZFJlc291cmNlIiwiY2FsbFVwZGF0ZVVzZXJCcmFuY2giLCJpc0Vycm9yRGlhbG9nT3BlbiIsIm9uQ2xvc2VFcnJvckRpYWxvZyIsImlzVXBkYXRlTG9hZGluZyIsImlzTG9hZGluZyIsImRpYWxvZ01lc3NhZ2UiLCJkaWFsb2dUaXRsZSIsImRpYWxvZ0xpbmsiLCJkaWFsb2dMaW5rVG9vbHRpcCIsIm9uTWVyZ2UiLCJsb2ciLCJpc01lcmdlTG9hZGluZyIsImNhbGxNZXJnZVVzZXJCcmFuY2giLCJ1c2VFZmZlY3QiLCJwcmV2Q2FyZHNMb2FkaW5nIiwiZmlsdGVyIiwid29ya2luZ1JlZiIsInNjcmlwdHVyZVRpdGxlIiwicmVzb3VyY2VTdGF0dXMiLCJtZXNzYWdlIiwiaXNBY2Nlc3NFcnJvciIsInZlcnNpb24iLCJ1cGRhdGVUaXRsZSIsImdldFNjcmlwdHVyZVNlbGVjdG9yIiwic2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnIiwib25NZW51Q2xvc2UiLCJsYW5ndWFnZUlkXyIsImxhbmd1YWdlIiwiZGlyZWN0aW9uIiwiX3JlZmVyZW5jZSIsImlzSGVicmV3IiwiZm9udEZhY3RvciIsInNjYWxlZEZvbnRTaXplIiwiaXRlbXMiLCJoZWFkZXJzIiwiZmlsdGVycyIsIml0ZW1JbmRleCIsIm1hcmtkb3duVmlldyIsInNldEZpbHRlcnMiLCJzZXRJdGVtSW5kZXgiLCJzZXRNYXJrZG93blZpZXciLCJyZWZTdHlsZSIsInVzZU1lbW8iLCJmb250RmFtaWx5IiwiTWF0aCIsInJvdW5kIiwiY29udGVudFN0eWxlIiwic2NyaXB0dXJlTGFiZWwiLCJkaXNhYmxlV29yZFBvcG92ZXJfIiwidXNpbmdPcmlnaW5hbEJpYmxlIiwidW5kZWZpbmVkIiwiZW5hYmxlRWRpdCIsImVuYWJsZUFsaWdubWVudCIsIm9yaWdpbmFsUmVwb1VybCIsInNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWciLCJjdXJyZW50VmVyc2VSZWYiLCJfc2V0U2F2ZWRDaGFuZ2VzIiwic291cmNlTGFuZ3VhZ2UiLCJ0YXJnZXRMYW5ndWFnZSIsImN1cnJlbnRJbmRleCIsInNhdmVkIiwiZ2V0Q2hhbmdlcyIsImNsZWFyQ2hhbmdlcyIsIl91bnNhdmVkQ2hhbmdlc0xpc3QiLCJoYXNPd25Qcm9wZXJ0eSIsIl9oYXZlVW5zYXZlZENoYW5nZXMiLCJPYmplY3QiLCJrZXlzIiwiZmluZFJlZkluQXJyYXkiLCJmaW5kSXRlbSIsImNodW5rcyIsInJlZkxlbiIsImluZGV4IiwiZmluZEluZGV4IiwiY2h1bmsiLCJpZHgiLCJzdWJzdHJpbmciLCJuZXh0Q2hhciIsImdldEJvb2tOYW1lIiwiYm9va0NhcHMiLCJ0b1VwcGVyQ2FzZSIsImZpbGVwYXRoIiwic2hhIiwiY29udGVudCIsImNvbmZpZyIsImRvbnRDcmVhdGVCcmFuY2giLCJ0aW1lb3V0Iiwic2VydmVyVGltZU91dCIsImF1dGhvciIsImJyYW5jaCIsInNhdmVFcnJvciIsImlzU2F2ZUVycm9yIiwiaXNFcnJvciIsIm9uU2F2ZUVkaXQiLCJfc2F2ZUVkaXQiLCJpbmZvIiwic3VjY2VzcyIsInByZXZDYXJkc1NhdmluZyIsInVuc2F2ZWRDYXJkSW5kaWNlcyIsImNhcmRJbmRleCIsIm1lcmdlVmVyc2VPYmplY3RzSW50b0JpYmxlVXNmbSIsInVwZGF0ZWRWZXJzZU9iamVjdHMiLCJuZXdVc2ZtIiwiY2hhcHRlckNodW5rcyIsInNwbGl0IiwiY2hhcHRlckluZGV4IiwiY3VycmVudENoYXB0ZXIiLCJ2ZXJzZUNodW5rcyIsInZlcnNlSW5kZXgiLCJuZXdWZXJzZVVzZm0iLCJjb252ZXJ0VmVyc2VEYXRhVG9VU0ZNIiwib2xkVmVyc2UiLCJ2ZXJzZU51bUxlbiIsIm5ld0NoYXB0ZXIiLCJqb2luIiwiZ2V0UmVhZHlGb3JTYXZlIiwiY3JlYXRlRWRpdEJyYW5jaCIsIm1lcmdlRmFpbCIsInBhcnNlSW50IiwibmV3VmVyc2VUZXh0IiwidGFyZ2V0VmVyc2VPYmplY3RzXyIsInVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlIiwidGFyZ2V0VmVyc2VPYmplY3RzIiwibmV3Qm9va0pzb24iLCJ1cGRhdGVWZXJzZSIsInRvVVNGTSIsImZvcmNlZE5ld0xpbmVzIiwiX3ZlcnNlc0ZvclJlZiIsIm5ld1NlbGVjdGlvbnMiLCJ1cGRhdGVTZWxlY3Rpb25zIiwiX21hcCIsIm9yaWdpbmFsQm9va0lkIiwiYm9va1ZlcnNlT2JqZWN0IiwiY2hhcHRlcnMiLCJuZXdTZWxlY3RlZFF1b3RlIiwicXVvdGUiLCJvcmlnaW5hbFZlcnNlcyIsInN1YnN0aXR1dGUiLCJzdGFydFZlcnNlIiwibGFzdFZlcnNlIiwiX3ZlcnNlIiwidmVyc2VzIiwidmVyc2VJdGVtIiwidm8iLCJjb25jYXQiLCJzZXQiLCJzdWJSZWYiLCJxdW90ZU1hdGNoZXMiLCJib29rT2JqZWN0Iiwib2NjdXJyZW5jZSIsInNpemUiLCJmb3JFYWNoIiwid29yZHMiLCJrZXkiLCJfa2V5IiwibWFwIiwid29yZCIsInRleHQiLCJub3JtYWxpemVTdHJpbmciLCJib29rc05vdFNhbWUiLCJ1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXMiLCJhbGlnbmVkIiwicmVuZGVyZWRTY3JpcHR1cmVQYW5lcyIsIl9jdXJyZW50VmVyc2VEYXRhIiwiaW5pdGlhbFZlcnNlT2JqZWN0cyIsIl9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnIiwiaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50IiwiaGFuZGxlQWxpZ25CdXR0b25DbGljayIsIm9uUmVuZGVyVG9vbGJhciIsIm5ld0l0ZW1zIiwiYWxsVmVyc2VzQWxpZ25lZCIsInZhbHVlcyIsImV2ZXJ5IiwiYWxpZ25TdGF0dXMiLCJhbGlnbkljb24iLCJhbGlnbkJ1dHRvblRleHQiLCJwdXNoIiwiY3Vyc29yIiwicHJvcFR5cGVzIiwic3RyaW5nIiwiaXNSZXF1aXJlZCIsIm9iamVjdCIsIm51bWJlciIsImJvb2wiLCJmdW5jIiwic2hhcGUiLCJvbmVPZlR5cGUiLCJhbnkiLCJzZXRBcmVSZXNvdXJjZXNMb2FkaW5nIiwic2V0QXJlUmVzb3VyY2VzU2F2aW5nIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxLQUFLQSxLQUFaLE1BQXVCLE9BQXZCO0FBQ0EsT0FBTyxLQUFLQyxTQUFaLE1BQTJCLFlBQTNCO0FBQ0EsU0FBU0MsSUFBVCxFQUFlQyx5QkFBZixRQUFnRCx5QkFBaEQ7QUFDQSxPQUFPQyxNQUFQLE1BQW1CLFNBQW5CO0FBQ0EsU0FBU0MsT0FBVCxRQUF3QixxQkFBeEI7QUFDQSxTQUFTQyxVQUFULFFBQTJCLGVBQTNCO0FBQ0EsU0FBU0MsT0FBVCxFQUFrQkMsWUFBbEIsUUFBc0MsZ0JBQXRDO0FBQ0EsU0FDRUMsSUFERixFQUVFQyxXQUZGLEVBR0VDLFdBSEYsRUFJRUMseUJBSkYsRUFLRUMsa0JBTEYsRUFNRUMsZUFORixFQU9FQyxZQVBGLEVBUUVDLHFCQVJGLEVBU0VDLG1CQVRGLEVBVUVDLGFBVkYsUUFXTyx1QkFYUCxDLENBWUE7O0FBQ0EsU0FBU0Msd0JBQVQsUUFBeUMsa0JBQXpDO0FBQ0EsU0FBU0MsZ0JBQVQsRUFBMkJDLHlCQUEzQixRQUE0RCxrQkFBNUQ7QUFDQSxPQUFPLEtBQUtDLE9BQVosTUFBeUIsWUFBekI7QUFDQSxTQUFTQyxTQUFULFFBQTBCLHVCQUExQjtBQUNBLFNBQVNDLGFBQVQsRUFBd0JDLGlCQUF4QixRQUFpRCxJQUFqRDtBQUNBLFNBQVNDLG9CQUFULFFBQXFDLGtDQUFyQztBQUNBLFNBQ0VDLG1CQURGLEVBRUVDLGFBRkYsRUFHRUMsMkJBSEYsRUFJRUMsZUFKRixFQUtFQyxrQkFMRixFQU1FQywyQkFORixFQU9FQyxlQVBGLFFBUU8sK0JBUlA7QUFTQSxTQUFTQyxLQUFULFFBQXNCLG1CQUF0QjtBQUNBLFNBQVNDLGNBQVQsUUFBK0Isa0JBQS9CO0FBQ0EsU0FBU0MsS0FBVCxRQUFzQix5QkFBdEI7QUFDQSxTQUNFQyxZQURGLEVBRUVDLGVBRkYsRUFHRUMsWUFIRixRQUlPLGFBSlA7QUFLQSxTQUFTQyxrQkFBVCxRQUFtQyx1QkFBbkM7QUFFQSxJQUFNQyxrQkFBa0IsR0FBRyx3QkFBM0I7QUFDQSxJQUFNQyxLQUFLLEdBQUcsU0FBZDtBQUNBLElBQU1DLEtBQUssR0FBRztBQUFFQyxFQUFBQSxTQUFTLEVBQUUsTUFBYjtBQUFxQkMsRUFBQUEsS0FBSyxFQUFFO0FBQTVCLENBQWQ7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxTQUFTQyxhQUFULENBQXVCQyxRQUF2QixFQUFpQztBQUFBOztBQUFBLGFBSzNCQSxRQUFRLElBQUksRUFMZTtBQUFBLE1BRTdCQyxPQUY2QixRQUU3QkEsT0FGNkI7QUFBQSxNQUc3QkMsS0FINkIsUUFHN0JBLEtBSDZCO0FBQUEsTUFJN0JDLFNBSjZCLFFBSTdCQSxTQUo2Qjs7QUFNL0IsTUFBTUMsWUFBWSxHQUFHRCxTQUFTLFNBQVQsSUFBQUEsU0FBUyxXQUFULDZCQUFBQSxTQUFTLENBQUVDLFlBQVgsd0VBQXlCQyxNQUF6QixHQUFrQ0MsSUFBSSxDQUFDQyxTQUFMLENBQWVKLFNBQVMsQ0FBQ0MsWUFBekIsQ0FBbEMsR0FBMkUsRUFBaEc7QUFDQSxTQUFPO0FBQ0xILElBQUFBLE9BQU8sRUFBUEEsT0FESztBQUVMQyxJQUFBQSxLQUFLLEVBQUxBLEtBRks7QUFHTEUsSUFBQUEsWUFBWSxFQUFaQTtBQUhLLEdBQVA7QUFLRDtBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBLFNBQVNJLGFBQVQsQ0FBdUJDLGFBQXZCLEVBQTZDQyxhQUE3QyxFQUFtRTtBQUNqRUQsRUFBQUEsYUFBYSxHQUFHQSxhQUFhLElBQUksRUFBakM7QUFDQUMsRUFBQUEsYUFBYSxHQUFHQSxhQUFhLElBQUksRUFBakM7QUFDQSxNQUFJQyxPQUFPLEdBQUcsS0FBZDs7QUFFQSxNQUFJRixhQUFhLENBQUNKLE1BQWQsS0FBeUJLLGFBQWEsQ0FBQ0wsTUFBM0MsRUFBbUQ7QUFDakRNLElBQUFBLE9BQU8sR0FBRyxJQUFWOztBQUVBLFNBQUssSUFBSUMsQ0FBQyxHQUFHLENBQVIsRUFBV0MsQ0FBQyxHQUFFSixhQUFhLENBQUNKLE1BQWpDLEVBQXlDTyxDQUFDLEdBQUdDLENBQTdDLEVBQWdERCxDQUFDLEVBQWpELEVBQXFEO0FBQ25ELFVBQU1FLE1BQU0sR0FBR2YsYUFBYSxDQUFDVSxhQUFhLENBQUNHLENBQUQsQ0FBZCxDQUE1QjtBQUNBLFVBQU1HLE1BQU0sR0FBR2hCLGFBQWEsQ0FBQ1csYUFBYSxDQUFDRSxDQUFELENBQWQsQ0FBNUI7QUFDQUQsTUFBQUEsT0FBTyxHQUFHcEMsT0FBTyxDQUFDdUMsTUFBRCxFQUFTQyxNQUFULENBQWpCOztBQUVBLFVBQUksQ0FBQ0osT0FBTCxFQUFjO0FBQ1o7QUFDRDtBQUNGO0FBQ0Y7O0FBRUQsU0FBT0EsT0FBUDtBQUNEO0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0EsT0FBTyxJQUFNSyxjQUFjLEdBQUcsU0FBakJBLGNBQWlCLENBQUNDLGVBQUQsRUFBa0JDLE1BQWxCLEVBQTZCO0FBQUE7O0FBQ3pELE1BQU1DLFdBQVcsR0FBR0YsZUFBSCxhQUFHQSxlQUFILGdEQUFHQSxlQUFlLENBQUVHLGFBQXBCLG9GQUFHLHNCQUFnQ0MsUUFBbkMsMkRBQUcsdUJBQTBDQyxTQUE5RDtBQUNBLE1BQU1DLFFBQVEsR0FBR04sZUFBSCxhQUFHQSxlQUFILGlEQUFHQSxlQUFlLENBQUVHLGFBQXBCLHFGQUFHLHVCQUFnQ0MsUUFBbkMsMkRBQUcsdUJBQTBDRyxJQUEzRCxDQUZ5RCxDQUVPOztBQUNoRSxNQUFJQyxXQUFXLEdBQUcsS0FBbEI7QUFDQSxNQUFNQyxRQUFRLEdBQUc1QywyQkFBMkIsQ0FBQ3lDLFFBQUQsQ0FBNUM7QUFDQUUsRUFBQUEsV0FBVyxHQUFHQyxRQUFILGFBQUdBLFFBQUgsZ0RBQUdBLFFBQVEsQ0FBRUMsV0FBVixFQUFILDBEQUFHLHNCQUF5QkMsUUFBekIsQ0FBa0NWLE1BQWxDLENBQWQ7O0FBQ0EsTUFBSSxDQUFDTyxXQUFMLEVBQWtCO0FBQ2hCSSxJQUFBQSxPQUFPLENBQUNDLElBQVIsNkJBQWtDWixNQUFsQywrQkFBNkRLLFFBQTdEO0FBQ0Q7O0FBQ0QsTUFBSSxDQUFBSixXQUFXLFNBQVgsSUFBQUEsV0FBVyxXQUFYLFlBQUFBLFdBQVcsQ0FBRVEsV0FBYixRQUErQlQsTUFBbkMsRUFBMkM7QUFDekNXLElBQUFBLE9BQU8sQ0FBQ0MsSUFBUiw2QkFBa0NaLE1BQWxDLHVDQUFxRUMsV0FBckU7QUFDQU0sSUFBQUEsV0FBVyxHQUFHLEtBQWQ7QUFDRDs7QUFDRCxNQUFJQSxXQUFKLEVBQWlCO0FBQ2YsUUFBTU0sU0FBUyxHQUFHZCxlQUFILGFBQUdBLGVBQUgsdUJBQUdBLGVBQWUsQ0FBRWMsU0FBbkM7O0FBQ0EsUUFBSUEsU0FBSixFQUFlO0FBQ2IsYUFBT0EsU0FBUDtBQUNEOztBQUNERixJQUFBQSxPQUFPLENBQUNHLEtBQVI7QUFDRDs7QUFDREgsRUFBQUEsT0FBTyxDQUFDRyxLQUFSLHVDQUE2Q2QsTUFBN0MsMkJBQW9FSyxRQUFwRTtBQUNBLFNBQU8sSUFBUDtBQUNELENBdEJNO0FBd0JQLGVBQWUsU0FBU1UsYUFBVCxRQXFDWjtBQUFBOztBQUFBLE1BcENEQyxNQW9DQyxTQXBDREEsTUFvQ0M7QUFBQSxNQW5DREMsY0FtQ0MsU0FuQ0RBLGNBbUNDO0FBQUEsTUFsQ0RDLFNBa0NDLFNBbENEQSxTQWtDQztBQUFBLE1BakNEQyxPQWlDQyxTQWpDREEsT0FpQ0M7QUFBQSxNQWhDREMsT0FnQ0MsU0FoQ0RBLE9BZ0NDO0FBQUEsTUEvQkRDLGtCQStCQyxTQS9CREEsa0JBK0JDO0FBQUEsTUE5QkRDLFdBOEJDLFNBOUJEQSxXQThCQztBQUFBLE1BN0JEQyxjQTZCQyxTQTdCREEsY0E2QkM7QUFBQSxNQTVCREMsWUE0QkMsU0E1QkRBLFlBNEJDO0FBQUEsTUEzQkRDLGFBMkJDLFNBM0JEQSxhQTJCQztBQUFBLE1BMUJEQyxVQTBCQyxTQTFCREEsVUEwQkM7QUFBQSxNQXpCREMsRUF5QkMsU0F6QkRBLEVBeUJDO0FBQUEsTUF4QkRDLElBd0JDLFNBeEJEQSxJQXdCQztBQUFBLE1BdkJEQyxZQXVCQyxTQXZCREEsWUF1QkM7QUFBQSxNQXRCREMsVUFzQkMsU0F0QkRBLFVBc0JDO0FBQUEsTUFyQkRDLGVBcUJDLFNBckJEQSxlQXFCQztBQUFBLE1BcEJEQyw0QkFvQkMsU0FwQkRBLDRCQW9CQztBQUFBLE1BbkJEQyxTQW1CQyxTQW5CREEsU0FtQkM7QUFBQSw2QkFsQkQ5QixRQWtCQztBQUFBLE1BakJDK0IsS0FpQkQsa0JBakJDQSxLQWlCRDtBQUFBLE1BaEJDQyxVQWdCRCxrQkFoQkNBLFVBZ0JEO0FBQUEsTUFmQ0MsVUFlRCxrQkFmQ0EsVUFlRDtBQUFBLE1BZENDLHFCQWNELGtCQWRDQSxxQkFjRDtBQUFBLE1BWkRDLFlBWUMsU0FaREEsWUFZQztBQUFBLE1BWERDLGFBV0MsU0FYREEsYUFXQztBQUFBLE1BVkRDLE1BVUMsU0FWREEsTUFVQztBQUFBLE1BVERDLG9CQVNDLFNBVERBLG9CQVNDO0FBQUEsTUFSREMscUJBUUMsU0FSREEscUJBUUM7QUFBQSxNQVBEQyxjQU9DLFNBUERBLGNBT0M7QUFBQSxNQU5EQyxlQU1DLFNBTkRBLGVBTUM7QUFBQSxNQUxEQyxvQkFLQyxTQUxEQSxvQkFLQztBQUFBLE1BSkRDLFNBSUMsU0FKREEsU0FJQztBQUFBLE1BSERDLEtBR0MsU0FIREEsS0FHQztBQUFBLE1BRkRDLG1CQUVDLFNBRkRBLG1CQUVDO0FBQUEsTUFEREMsZ0JBQ0MsU0FEREEsZ0JBQ0M7QUFDRCxNQUFNakQsTUFBTSxHQUFHaUMsU0FBSCxhQUFHQSxTQUFILHVCQUFHQSxTQUFTLENBQUU3QixTQUExQjs7QUFEQyx3QkFFMEJyRSxLQUFLLENBQUNtSCxRQUFOLENBQWU7QUFDeENDLElBQUFBLGtCQUFrQixFQUFFLENBRG9CO0FBRXhDQyxJQUFBQSxnQkFBZ0IsRUFBRSxJQUZzQjtBQUd4Q0MsSUFBQUEsZUFBZSxFQUFFLEtBSHVCO0FBSXhDQyxJQUFBQSxrQkFBa0IsRUFBRSxLQUpvQjtBQUt4Q0MsSUFBQUEsaUJBQWlCLEVBQUUsSUFMcUI7QUFNeENDLElBQUFBLGFBQWEsRUFBRSxLQU55QjtBQU94Q0MsSUFBQUEsR0FBRyxFQUFFekMsTUFQbUM7QUFReEMwQyxJQUFBQSxXQUFXLEVBQUUsS0FSMkI7QUFTeENDLElBQUFBLFdBQVcsRUFBRSxJQVQyQjtBQVV4Q0MsSUFBQUEsVUFBVSxFQUFFLElBQUlDLEdBQUosRUFWNEI7QUFXeENDLElBQUFBLGtCQUFrQixFQUFFLEtBWG9CO0FBWXhDQyxJQUFBQSxTQUFTLEVBQUUsS0FaNkI7QUFheENDLElBQUFBLFFBQVEsRUFBRSxJQWI4QjtBQWN4Q0MsSUFBQUEsZUFBZSxFQUFFLEtBZHVCO0FBZXhDQyxJQUFBQSxrQkFBa0IsRUFBRSxFQWZvQjtBQWdCeENDLElBQUFBLHFCQUFxQixFQUFFLElBaEJpQjtBQWlCeENDLElBQUFBLFlBQVksRUFBRSxJQWpCMEI7QUFrQnhDQyxJQUFBQSxlQUFlLEVBQUUsSUFBSVIsR0FBSixFQWxCdUI7QUFtQnhDUyxJQUFBQSx5QkFBeUIsRUFBRTtBQW5CYSxHQUFmLENBRjFCO0FBQUE7QUFBQSxNQUVNQyxLQUZOO0FBQUEsTUFFYUMsU0FGYjs7QUFBQSxNQXdCQ3JCLGtCQXhCRCxHQTJDR29CLEtBM0NILENBd0JDcEIsa0JBeEJEO0FBQUEsTUF5QkNDLGdCQXpCRCxHQTJDR21CLEtBM0NILENBeUJDbkIsZ0JBekJEO0FBQUEsTUEwQkNDLGVBMUJELEdBMkNHa0IsS0EzQ0gsQ0EwQkNsQixlQTFCRDtBQUFBLE1BMkJDQyxrQkEzQkQsR0EyQ0dpQixLQTNDSCxDQTJCQ2pCLGtCQTNCRDtBQUFBLE1BNEJDQyxpQkE1QkQsR0EyQ0dnQixLQTNDSCxDQTRCQ2hCLGlCQTVCRDtBQUFBLE1BNkJDQyxhQTdCRCxHQTJDR2UsS0EzQ0gsQ0E2QkNmLGFBN0JEO0FBQUEsTUE4QkNDLEdBOUJELEdBMkNHYyxLQTNDSCxDQThCQ2QsR0E5QkQ7QUFBQSxNQStCQ0MsV0EvQkQsR0EyQ0dhLEtBM0NILENBK0JDYixXQS9CRDtBQUFBLE1BZ0NDQyxXQWhDRCxHQTJDR1ksS0EzQ0gsQ0FnQ0NaLFdBaENEO0FBQUEsTUFpQ0NDLFVBakNELEdBMkNHVyxLQTNDSCxDQWlDQ1gsVUFqQ0Q7QUFBQSxNQWtDQ0Usa0JBbENELEdBMkNHUyxLQTNDSCxDQWtDQ1Qsa0JBbENEO0FBQUEsTUFtQ0NDLFNBbkNELEdBMkNHUSxLQTNDSCxDQW1DQ1IsU0FuQ0Q7QUFBQSxNQW9DQ0MsUUFwQ0QsR0EyQ0dPLEtBM0NILENBb0NDUCxRQXBDRDtBQUFBLE1BcUNDQyxlQXJDRCxHQTJDR00sS0EzQ0gsQ0FxQ0NOLGVBckNEO0FBQUEsTUFzQ0NDLGtCQXRDRCxHQTJDR0ssS0EzQ0gsQ0FzQ0NMLGtCQXRDRDtBQUFBLE1BdUNDRyxlQXZDRCxHQTJDR0UsS0EzQ0gsQ0F1Q0NGLGVBdkNEO0FBQUEsTUF3Q0NDLHlCQXhDRCxHQTJDR0MsS0EzQ0gsQ0F3Q0NELHlCQXhDRDtBQUFBLE1BeUNDSCxxQkF6Q0QsR0EyQ0dJLEtBM0NILENBeUNDSixxQkF6Q0Q7QUFBQSxNQTBDQ0MsWUExQ0QsR0EyQ0dHLEtBM0NILENBMENDSCxZQTFDRDs7QUFBQSw2QkE2QytCcEIsbUJBQW1CLENBQUN4RSxrQkFBa0IsR0FBRzJDLE9BQXRCLEVBQStCLEdBQS9CLENBN0NsRDtBQUFBO0FBQUEsTUE2Q01zRCxRQTdDTjtBQUFBLE1BNkNnQkMsV0E3Q2hCOztBQThDRCxNQUFNQyxLQUFLLEdBQUcvQyxJQUFJLENBQUM1QixNQUFELENBQWxCOztBQUVBLFdBQVM0RSxRQUFULENBQWtCQyxRQUFsQixFQUE0QjtBQUMxQkwsSUFBQUEsU0FBUyxDQUFDLFVBQUFNLFNBQVM7QUFBQSw2Q0FBVUEsU0FBVixHQUF3QkQsUUFBeEI7QUFBQSxLQUFWLENBQVQ7QUFDRDs7QUFFRG5ELEVBQUFBLFVBQVUsbUNBQ0xBLFVBREs7QUFFUnFELElBQUFBLEtBQUssRUFBRTtBQUFFQyxNQUFBQSxNQUFNLEVBQUU7QUFBVixLQUZDO0FBR1JDLElBQUFBLE9BQU8sRUFBRTtBQUhELElBQVYsQ0FwREMsQ0F3REM7O0FBeERELDhCQWdFR3hILG9CQUFvQixDQUFDO0FBQ3ZCdUQsSUFBQUEsTUFBTSxFQUFFeUMsR0FEZTtBQUV2QnRDLElBQUFBLE9BQU8sRUFBUEEsT0FGdUI7QUFHdkJFLElBQUFBLGtCQUFrQixFQUFsQkEsa0JBSHVCO0FBSXZCRyxJQUFBQSxZQUFZLEVBQVpBLFlBSnVCO0FBS3ZCQyxJQUFBQSxhQUFhLEVBQWJBLGFBTHVCO0FBTXZCQyxJQUFBQSxVQUFVLEVBQVZBLFVBTnVCO0FBT3ZCRSxJQUFBQSxJQUFJLEVBQUpBLElBUHVCO0FBUXZCTyxJQUFBQSxVQUFVLEVBQVZBLFVBUnVCO0FBU3ZCRSxJQUFBQSxxQkFBcUIsRUFBckJBLHFCQVR1QjtBQVV2QkgsSUFBQUEsS0FBSyxFQUFMQSxLQVZ1QjtBQVd2QnNCLElBQUFBLGFBQWEsRUFBYkEsYUFYdUI7QUFZdkJ2QixJQUFBQSxTQUFTLEVBQUVtQixnQkFBZ0IsSUFBSW5CLFNBWlI7QUFhdkJHLElBQUFBLFVBQVUsRUFBVkEsVUFidUI7QUFjdkJFLElBQUFBLFlBQVksRUFBWkEsWUFkdUI7QUFldkI0QyxJQUFBQSxXQUFXLEVBQUUscUJBQUNwRSxLQUFEO0FBQUEsYUFBVzhELFFBQVEsQ0FBQztBQUFFWixRQUFBQSxRQUFRLEVBQUVsRDtBQUFaLE9BQUQsQ0FBbkI7QUFBQSxLQWZVO0FBZ0J2QjBCLElBQUFBLE1BQU0sRUFBTkEsTUFoQnVCO0FBaUJ2Qk8sSUFBQUEsS0FBSyxFQUFMQSxLQWpCdUI7QUFrQnZCQyxJQUFBQSxtQkFBbUIsRUFBbkJBLG1CQWxCdUI7QUFtQnZCbUMsSUFBQUEsU0FBUyxFQUFFO0FBbkJZLEdBQUQsQ0FoRXZCO0FBQUEsTUEyRENDLGNBM0RELHlCQTJEQ0EsY0EzREQ7QUFBQSxNQTREQ3JGLGVBNURELHlCQTREQ0EsZUE1REQ7QUFBQSxNQTZEQ3NGLFlBN0RELHlCQTZEQ0EsWUE3REQ7QUFBQSxNQThEQ0MsaUJBOURELHlCQThEQ0EsaUJBOUREO0FBQUEsTUErRENDLG9CQS9ERCx5QkErRENBLG9CQS9ERDs7QUFzRkQsTUFBTUMsZUFBZSxHQUFHekYsZUFBSCxhQUFHQSxlQUFILHVCQUFHQSxlQUFlLENBQUVHLGFBQXpDLENBdEZDLENBdUZEOztBQUNBLE1BQU11RixJQUFJLGFBQU0xRixlQUFOLGFBQU1BLGVBQU4saURBQU1BLGVBQWUsQ0FBRUksUUFBdkIsMkRBQU0sdUJBQTJCZ0MsVUFBakMsY0FBK0NwQyxlQUEvQyxhQUErQ0EsZUFBL0MsaURBQStDQSxlQUFlLENBQUVJLFFBQWhFLDJEQUErQyx1QkFBMkJDLFNBQTFFLENBQVY7QUFDQSxNQUFNc0YsVUFBVSxHQUFHLENBQUEzRixlQUFlLFNBQWYsSUFBQUEsZUFBZSxXQUFmLFlBQUFBLGVBQWUsQ0FBRWtDLFNBQWpCLEtBQThCLElBQWpELENBekZDLENBMkZEOztBQUNBLE1BQU0wRCxjQUFjLEdBQUcsQ0FBQTVGLGVBQWUsU0FBZixJQUFBQSxlQUFlLFdBQWYsc0NBQUFBLGVBQWUsQ0FBRUksUUFBakIsa0ZBQTJCQyxTQUEzQixLQUF3Q2dDLFVBQS9ELENBNUZDLENBNkZEOztBQUNBLE1BQUl3RCxJQUFJLEdBQUcsQ0FBQTdGLGVBQWUsU0FBZixJQUFBQSxlQUFlLFdBQWYsc0NBQUFBLGVBQWUsQ0FBRUksUUFBakIsa0ZBQTJCc0QsR0FBM0IsS0FBa0N6QyxNQUE3QztBQUNBLE1BQU02RSxnQkFBZ0IsR0FBRyxDQUFDLEVBQUVoRSxZQUFZLElBQUlaLGNBQWhCLElBQW1DbUIsVUFBVSxLQUFLL0QsZUFBbEQsTUFBc0U7QUFDOUZ1SCxFQUFBQSxJQUFJLEtBQUssUUFBVixJQUF3QkEsSUFBSSxDQUFDbEYsUUFBTCxDQUFjbUIsWUFBZCxDQURDLENBQUYsQ0FBMUIsQ0EvRkMsQ0FnR3lEOztBQWhHekQsdUJBNkdHNUUsYUFBYSxDQUFDO0FBQ2hCK0QsSUFBQUEsTUFBTSxFQUFOQSxNQURnQjtBQUVoQkMsSUFBQUEsY0FBYyxFQUFFNEUsZ0JBQWdCLEdBQUc1RSxjQUFILEdBQW9CLElBRnBDO0FBR2hCakIsSUFBQUEsTUFBTSxFQUFOQSxNQUhnQjtBQUloQjhGLElBQUFBLE1BQU0sRUFBRW5FLEVBSlE7QUFLaEJnRSxJQUFBQSxjQUFjLEVBQWRBLGNBTGdCO0FBTWhCeEMsSUFBQUEsa0JBQWtCLEVBQWxCQSxrQkFOZ0I7QUFPaEJoQixJQUFBQSxVQUFVLEVBQVZBLFVBUGdCO0FBUWhCTixJQUFBQSxZQUFZLEVBQUVnRSxnQkFBZ0IsR0FBR2hFLFlBQUgsR0FBa0IsSUFSaEM7QUFTaEJLLElBQUFBLEtBQUssRUFBTEEsS0FUZ0I7QUFVaEJILElBQUFBLGVBQWUsRUFBZkEsZUFWZ0I7QUFXaEJTLElBQUFBLE1BQU0sRUFBTkEsTUFYZ0I7QUFZaEJRLElBQUFBLG1CQUFtQixFQUFuQkE7QUFaZ0IsR0FBRCxDQTdHaEI7QUFBQSw0Q0FtR0N1QixLQW5HRDtBQUFBLE1Bb0dHd0IsZ0JBcEdILHdCQW9HR0EsZ0JBcEdIO0FBQUEsTUFxR0dDLGtCQXJHSCx3QkFxR0dBLGtCQXJHSDtBQUFBLE1Bc0dvQkMsZ0JBdEdwQix3QkFzR0doQyxlQXRHSDtBQUFBLE1BdUdHaUMscUJBdkdILHdCQXVHR0EscUJBdkdIO0FBQUEsNkNBeUdDQyxPQXpHRDtBQUFBLE1BMEdjQyxlQTFHZCx5QkEwR0dDLFNBMUdIO0FBQUEsTUEyR0dDLFVBM0dILHlCQTJHR0EsVUEzR0g7O0FBNEhELE1BQU1DLGdCQUFnQixHQUFHMUosZUFBZSxDQUFDO0FBQUUyRixJQUFBQSxNQUFNLEVBQU5BLE1BQUY7QUFBVU4sSUFBQUEsS0FBSyxFQUFMQSxLQUFWO0FBQWlCdUQsSUFBQUEsSUFBSSxFQUFKQSxJQUFqQjtBQUF1QmUsSUFBQUEsVUFBVSxFQUFFUixrQkFBbkM7QUFBdURTLElBQUFBLE9BQU8sRUFBRXhGLGNBQUYsYUFBRUEsY0FBRixnREFBRUEsY0FBYyxDQUFFeUYsS0FBbEIsMERBQUUsc0JBQXVCQztBQUF2RixHQUFELENBQXhDOztBQTVIQyw4QkFrSUdKLGdCQWxJSCxDQThIQ2hDLEtBOUhEO0FBQUEsTUErSGdCcUMsYUEvSGhCLHlCQStIR0MsV0EvSEg7QUFBQSxNQWdJaUJDLGVBaElqQix5QkFnSUdDLFlBaElIO0FBb0lELE1BQU1DLGlCQUFpQixHQUFHaksscUJBQXFCLENBQUM7QUFDOUNrSyxJQUFBQSxRQUFRLEVBQUVsRCxTQURvQztBQUU5Q2xILElBQUFBLGVBQWUsRUFBRTBKLGdCQUY2QjtBQUc5Q1csSUFBQUEsUUFBUSxFQUFFLG9CQUFNO0FBQ2RqSixNQUFBQSxLQUFLLENBQUMsR0FBRCxDQUFMLENBQVdrSixJQUFYLENBQWdCO0FBQUEsZUFBTXBILGVBQU4sYUFBTUEsZUFBTix1QkFBTUEsZUFBZSxDQUFFcUgsY0FBakIsRUFBTjtBQUFBLE9BQWhCO0FBQ0Q7QUFMNkMsR0FBRCxDQUEvQztBQXBJQyxNQTZJQ0Msb0JBN0lELEdBcUpHTCxpQkFySkgsQ0E2SUNLLG9CQTdJRDtBQUFBLE1BOElDQyxpQkE5SUQsR0FxSkdOLGlCQXJKSCxDQThJQ00saUJBOUlEO0FBQUEsTUErSUNDLGtCQS9JRCxHQXFKR1AsaUJBckpILENBK0lDTyxrQkEvSUQ7QUFBQSxNQWdKWUMsZUFoSlosR0FxSkdSLGlCQXJKSCxDQWdKQ1MsU0FoSkQ7QUFBQSxNQWlKQ0MsYUFqSkQsR0FxSkdWLGlCQXJKSCxDQWlKQ1UsYUFqSkQ7QUFBQSxNQWtKQ0MsV0FsSkQsR0FxSkdYLGlCQXJKSCxDQWtKQ1csV0FsSkQ7QUFBQSxNQW1KQ0MsVUFuSkQsR0FxSkdaLGlCQXJKSCxDQW1KQ1ksVUFuSkQ7QUFBQSxNQW9KQ0MsaUJBcEpELEdBcUpHYixpQkFySkgsQ0FvSkNhLGlCQXBKRDs7QUF1SkQsTUFBTUMsT0FBTyxHQUFHLFNBQVZBLE9BQVUsR0FBTTtBQUNwQnhCLElBQUFBLFVBQVU7QUFDVjNGLElBQUFBLE9BQU8sQ0FBQ29ILEdBQVIsMkRBQXNFL0csTUFBdEU7QUFDQTRELElBQUFBLFFBQVEsQ0FBQztBQUNQcEIsTUFBQUEsYUFBYSxFQUFFLEtBRFI7QUFFUEMsTUFBQUEsR0FBRyxFQUFFekM7QUFGRSxLQUFELENBQVI7QUFJQS9DLElBQUFBLEtBQUssQ0FBQyxHQUFELENBQUwsQ0FBV2tKLElBQVgsQ0FBZ0IsWUFBTTtBQUNwQnZDLE1BQUFBLFFBQVEsQ0FBQztBQUNQekIsUUFBQUEsa0JBQWtCLEVBQUVBLGtCQUFrQixHQUFHLENBRGxDO0FBQ3FDO0FBQzVDSyxRQUFBQSxhQUFhLEVBQUU7QUFGUixPQUFELENBQVI7QUFJRCxLQUxEO0FBTUQsR0FiRDs7QUF2SkMsNkJBc0swRHhHLG1CQUFtQixDQUFDO0FBQzdFaUssSUFBQUEsUUFBUSxFQUFFbEQsU0FEbUU7QUFFN0VsSCxJQUFBQSxlQUFlLEVBQUUwSixnQkFGNEQ7QUFHN0V1QixJQUFBQSxPQUFPLEVBQVBBO0FBSDZFLEdBQUQsQ0F0SzdFO0FBQUEsTUFzS2tCRSxjQXRLbEIsd0JBc0tPUCxTQXRLUDtBQUFBLE1Bc0trQ1EsbUJBdEtsQyx3QkFzS2tDQSxtQkF0S2xDOztBQTRLRGxNLEVBQUFBLEtBQUssQ0FBQ21NLFNBQU4sQ0FBZ0IsWUFBTTtBQUNwQixRQUFJdkMsY0FBSixFQUFvQjtBQUNsQjFDLE1BQUFBLGdCQUFnQixJQUFJQSxnQkFBZ0IsQ0FDbEMwQyxjQURrQyxFQUVsQ21CLGVBRmtDLEVBR2xDRixhQUhrQyxFQUlsQ1Msb0JBSmtDLEVBS2xDWSxtQkFMa0MsQ0FBcEM7QUFPRDtBQUNGLEdBVkQsRUFVRSxDQUFDdEMsY0FBRCxFQUFpQm1CLGVBQWpCLEVBQWtDRixhQUFsQyxDQVZGO0FBWUE3SyxFQUFBQSxLQUFLLENBQUNtTSxTQUFOLENBQWdCLFlBQU07QUFDcEIsUUFBSVYsZUFBSixFQUFxQjtBQUNuQjlFLE1BQUFBLHFCQUFxQixTQUFyQixJQUFBQSxxQkFBcUIsV0FBckIsWUFBQUEscUJBQXFCLENBQUcsVUFBQXlGLGdCQUFnQjtBQUFBLDRDQUFRQSxnQkFBUixJQUEwQnhDLGNBQTFCO0FBQUEsT0FBbkIsQ0FBckI7QUFDRCxLQUZELE1BRU87QUFDTGpELE1BQUFBLHFCQUFxQixTQUFyQixJQUFBQSxxQkFBcUIsV0FBckIsWUFBQUEscUJBQXFCLENBQUcsVUFBQXlGLGdCQUFnQjtBQUFBLGVBQUlBLGdCQUFnQixDQUFDQyxNQUFqQixDQUF3QixVQUFBdEMsTUFBTTtBQUFBLGlCQUFJQSxNQUFNLEtBQUtILGNBQWY7QUFBQSxTQUE5QixDQUFKO0FBQUEsT0FBbkIsQ0FBckI7QUFDRDtBQUNGLEdBTkQsRUFNRyxDQUFDNkIsZUFBRCxDQU5IO0FBUUF6TCxFQUFBQSxLQUFLLENBQUNtTSxTQUFOLENBQWdCLFlBQU07QUFDcEIsUUFBSUYsY0FBSixFQUFvQjtBQUNsQnZGLE1BQUFBLG9CQUFvQixTQUFwQixJQUFBQSxvQkFBb0IsV0FBcEIsWUFBQUEsb0JBQW9CLENBQUcsVUFBQTBGLGdCQUFnQjtBQUFBLDRDQUFRQSxnQkFBUixJQUEwQnhDLGNBQTFCO0FBQUEsT0FBbkIsQ0FBcEI7QUFDRCxLQUZELE1BRU87QUFDTGxELE1BQUFBLG9CQUFvQixTQUFwQixJQUFBQSxvQkFBb0IsV0FBcEIsWUFBQUEsb0JBQW9CLENBQUcsVUFBQTBGLGdCQUFnQjtBQUFBLGVBQUlBLGdCQUFnQixDQUFDQyxNQUFqQixDQUF3QixVQUFBdEMsTUFBTTtBQUFBLGlCQUFJQSxNQUFNLEtBQUtILGNBQWY7QUFBQSxTQUE5QixDQUFKO0FBQUEsT0FBbkIsQ0FBcEI7QUFDRDtBQUNGLEdBTkQsRUFNRyxDQUFDcUMsY0FBRCxDQU5IO0FBUUEsTUFBTUssVUFBVSxHQUFHeEMsZ0JBQWdCLEdBQUdLLHFCQUFILEdBQTJCbEYsTUFBOUQ7QUFDQSxNQUFJc0gsY0FBSjs7QUFFQSxNQUFJLENBQUN6QyxnQkFBRCxJQUFxQixDQUFDckMsYUFBMUIsRUFBeUM7QUFBRTtBQUN6Q29CLElBQUFBLFFBQVEsQ0FBQztBQUFFcEIsTUFBQUEsYUFBYSxFQUFFO0FBQWpCLEtBQUQsQ0FBUjtBQUNEOztBQUVEekgsRUFBQUEsS0FBSyxDQUFDbU0sU0FBTixDQUFnQixZQUFNO0FBQ3BCdkgsSUFBQUEsT0FBTyxDQUFDb0gsR0FBUiwrQkFBMEM7QUFBRS9ILE1BQUFBLE1BQU0sRUFBTkEsTUFBRjtBQUFVa0MsTUFBQUEsS0FBSyxFQUFMQSxLQUFWO0FBQWlCQyxNQUFBQSxVQUFVLEVBQVZBLFVBQWpCO0FBQTZCQyxNQUFBQSxVQUFVLEVBQVZBO0FBQTdCLEtBQTFDOztBQUVBLFFBQUl5RCxnQkFBSixFQUFzQjtBQUFFO0FBQ3RCakIsTUFBQUEsUUFBUSxDQUFDO0FBQUVwQixRQUFBQSxhQUFhLEVBQUUsS0FBakI7QUFBd0JMLFFBQUFBLGtCQUFrQixFQUFFQSxrQkFBa0IsR0FBRztBQUFqRSxPQUFELENBQVI7QUFDRDtBQUNGLEdBTkQsRUFNRyxDQUFDbkQsTUFBRCxFQUFTa0MsS0FBVCxFQUFnQkMsVUFBaEIsRUFBNEJDLFVBQTVCLENBTkg7QUFRQXJHLEVBQUFBLEtBQUssQ0FBQ21NLFNBQU4sQ0FBZ0IsWUFBTTtBQUNwQixRQUFJLENBQUM3SyxPQUFPLENBQUM0RSxTQUFELEVBQVltQixnQkFBWixDQUFaLEVBQTJDO0FBQ3pDO0FBQ0F3QixNQUFBQSxRQUFRLENBQUM7QUFBRXhCLFFBQUFBLGdCQUFnQixFQUFFbkI7QUFBcEIsT0FBRCxDQUFSO0FBQ0Q7QUFDRixHQUxELEVBS0csQ0FBQ0EsU0FBRCxDQUxIO0FBT0FsRyxFQUFBQSxLQUFLLENBQUNtTSxTQUFOLENBQWdCLFlBQU07QUFBRTtBQUN0QixRQUFJLENBQUMxRSxhQUFELElBQWtCdUMsZ0JBQXRCLEVBQXlDO0FBQ3ZDcEYsTUFBQUEsT0FBTyxDQUFDb0gsR0FBUiw2Q0FBaURoQyxnQkFBakQsZ0NBQXVGc0MsVUFBdkY7QUFDQXpELE1BQUFBLFFBQVEsQ0FBQztBQUFFcEIsUUFBQUEsYUFBYSxFQUFFLElBQWpCO0FBQXVCQyxRQUFBQSxHQUFHLEVBQUU0RTtBQUE1QixPQUFELENBQVI7QUFDRDtBQUNGLEdBTEQsRUFLRyxDQUFDdEMsZ0JBQUQsQ0FMSDtBQU9BaEssRUFBQUEsS0FBSyxDQUFDbU0sU0FBTixDQUFnQixZQUFNO0FBQUU7QUFDdEIsUUFBSWpDLGdCQUFnQixLQUFLaEMsZUFBekIsRUFBMEM7QUFDeENXLE1BQUFBLFFBQVEsQ0FBQztBQUFFWCxRQUFBQSxlQUFlLEVBQUVnQztBQUFuQixPQUFELENBQVI7QUFDRDtBQUNGLEdBSkQsRUFJRyxDQUFDQSxnQkFBRCxFQUFtQmhDLGVBQW5CLENBSkg7QUFNQWxJLEVBQUFBLEtBQUssQ0FBQ21NLFNBQU4sQ0FBZ0IsWUFBTTtBQUFBOztBQUFFO0FBQ3RCLFFBQU1wSCxLQUFLLEdBQUdmLGVBQUgsYUFBR0EsZUFBSCxpREFBR0EsZUFBZSxDQUFFd0ksY0FBcEIsMkRBQUcsdUJBQWtDN0wsV0FBbEMsQ0FBZDs7QUFFQSxRQUFJb0UsS0FBSixFQUFXO0FBQUU7QUFDWCxVQUFNeUgsY0FBYyxHQUFHeEksZUFBSCxhQUFHQSxlQUFILHVCQUFHQSxlQUFlLENBQUV3SSxjQUF4Qzs7QUFDQSxVQUFNakcsYUFBWSxHQUFHekUsZUFBZSxDQUFDa0MsZUFBRCxDQUFwQzs7QUFDQSxVQUFNeUksT0FBTyxHQUFHMUssa0JBQWtCLENBQUN5SyxjQUFELEVBQWlCL0YsTUFBakIsRUFBeUJGLGFBQXpCLEVBQXVDcUMsS0FBdkMsQ0FBbEM7QUFDQSxVQUFNOEQsYUFBYSxHQUFHRixjQUFjLENBQUM1TCx5QkFBRCxDQUFwQztBQUNBb0YsTUFBQUEsZUFBZSxJQUFJQSxlQUFlLENBQUN5RyxPQUFELEVBQVVDLGFBQVYsRUFBeUJGLGNBQXpCLENBQWxDO0FBQ0Q7QUFDRixHQVZELEVBVUcsQ0FBQ3hJLGVBQUQsYUFBQ0EsZUFBRCxrREFBQ0EsZUFBZSxDQUFFd0ksY0FBbEIsNERBQUMsd0JBQWtDN0wsV0FBbEMsQ0FBRCxDQVZIOztBQVlBLE1BQUlxRCxlQUFlLENBQUNnRCxLQUFoQixJQUF5QmhELGVBQWUsQ0FBQzJJLE9BQTdDLEVBQXNEO0FBQ3BESixJQUFBQSxjQUFjLGFBQU12SSxlQUFlLENBQUNnRCxLQUF0QixlQUFnQ2hELGVBQWUsQ0FBQzJJLE9BQWhELENBQWQ7QUFDQW5ELElBQUFBLG9CQUFvQixDQUFDb0QsV0FBckIsQ0FBaUM1SSxlQUFlLENBQUN1QyxZQUFqRCxFQUErRGdHLGNBQS9EO0FBQ0QsR0FIRCxNQUdPO0FBQ0xBLElBQUFBLGNBQWMsd0NBQWQ7QUFDRDtBQUVEOzs7QUFDQSxXQUFTTSxvQkFBVCxHQUFnQztBQUM5QixRQUFNQyx3QkFBd0IsR0FBRzlLLDJCQUEyQixDQUFDO0FBQzNEVSxNQUFBQSxLQUFLLEVBQUxBLEtBRDJEO0FBRTNENkQsTUFBQUEsWUFBWSxFQUFFdkMsZUFBZSxDQUFDdUMsWUFGNkI7QUFHM0QrQyxNQUFBQSxZQUFZLEVBQVpBLFlBSDJEO0FBSTNERSxNQUFBQSxvQkFBb0IsRUFBcEJBO0FBSjJELEtBQUQsQ0FBNUQ7QUFPQSx3QkFBTyxvQkFBQyxpQkFBRCxlQUF1QnNELHdCQUF2QjtBQUFpRCxNQUFBLEtBQUssRUFBRW5LLEtBQXhEO0FBQStELE1BQUEsWUFBWSxFQUFFc0Y7QUFBN0UsT0FBUDtBQUNEOztBQUVELFdBQVM4RSxXQUFULEdBQXVCO0FBQ3JCO0FBQ0FsRSxJQUFBQSxRQUFRLENBQUM7QUFBRVosTUFBQUEsUUFBUSxFQUFFO0FBQVosS0FBRCxDQUFSO0FBQ0QsR0E3UUEsQ0ErUUQ7OztBQUNBLE1BQU0rRSxXQUFXLEdBQUdoSixlQUFILGFBQUdBLGVBQUgsa0RBQUdBLGVBQWUsQ0FBRUksUUFBcEIsNERBQUcsd0JBQTJCZ0MsVUFBL0M7QUFDQSxNQUFNNkcsUUFBUSxHQUFHMUgsV0FBVyxDQUFDO0FBQUVhLElBQUFBLFVBQVUsRUFBRTRHO0FBQWQsR0FBRCxDQUE1QjtBQUNBLE1BQU1FLFNBQVMsR0FBRyxDQUFDRCxRQUFELGFBQUNBLFFBQUQsdUJBQUNBLFFBQVEsQ0FBRUMsU0FBWCxLQUF5QixLQUEzQzs7QUFDQSxNQUFNQyxVQUFVLEdBQUc5RixnQkFBZ0IsSUFBSW5CLFNBQXZDOztBQUVBLE1BQU1rSCxRQUFRLEdBQUlKLFdBQVcsS0FBSyxLQUFsQztBQUNBLE1BQU1LLFVBQVUsR0FBR0QsUUFBUSxHQUFHLEdBQUgsR0FBUyxDQUFwQyxDQXRSQyxDQXNScUM7O0FBQ3RDLE1BQU1FLGNBQWMsR0FBRzVFLFFBQVEsR0FBRzJFLFVBQWxDO0FBRUEsTUFBTUUsS0FBSyxHQUFHLElBQWQ7O0FBelJDLHNCQWlTR3hNLFlBQVksQ0FBQztBQUFFd00sSUFBQUEsS0FBSyxFQUFMQTtBQUFGLEdBQUQsQ0FqU2Y7QUFBQSwwQ0EyUkMvRSxLQTNSRDtBQUFBLE1BNFJHZ0YsT0E1UkgsdUJBNFJHQSxPQTVSSDtBQUFBLE1BNFJZQyxPQTVSWix1QkE0UllBLE9BNVJaO0FBQUEsTUE0UnFCQyxTQTVSckIsdUJBNFJxQkEsU0E1UnJCO0FBQUEsTUE0UmdDQyxZQTVSaEMsdUJBNFJnQ0EsWUE1UmhDO0FBQUEsNENBOFJDdkQsT0E5UkQ7QUFBQSxNQStSR3dELFVBL1JILHlCQStSR0EsVUEvUkg7QUFBQSxNQStSZUMsWUEvUmYseUJBK1JlQSxZQS9SZjtBQUFBLE1BK1I2QkMsZUEvUjdCLHlCQStSNkJBLGVBL1I3Qjs7QUFtU0QsTUFBTUMsUUFBUSxHQUFHL04sS0FBSyxDQUFDZ08sT0FBTixDQUFjO0FBQUEsV0FBTztBQUNwQ0MsTUFBQUEsVUFBVSxFQUFFLFdBRHdCO0FBRXBDdkYsTUFBQUEsUUFBUSxZQUFLd0YsSUFBSSxDQUFDQyxLQUFMLENBQVdiLGNBQWMsR0FBRyxHQUE1QixDQUFMO0FBRjRCLEtBQVA7QUFBQSxHQUFkLEVBR2IsQ0FBQ0EsY0FBRCxDQUhhLENBQWpCO0FBS0EsTUFBTWMsWUFBWSxHQUFHcE8sS0FBSyxDQUFDZ08sT0FBTixDQUFjO0FBQUEsV0FBTztBQUN4Q0MsTUFBQUEsVUFBVSxFQUFFLFdBRDRCO0FBRXhDdkYsTUFBQUEsUUFBUSxZQUFLNEUsY0FBTDtBQUZnQyxLQUFQO0FBQUEsR0FBZCxFQUdqQixDQUFDQSxjQUFELENBSGlCLENBQXJCO0FBS0EsTUFBTWUsY0FBYyxnQkFBRyxvQkFBQyxLQUFELFFBQVE5QixjQUFSLENBQXZCO0FBQ0EsTUFBSStCLG1CQUFtQixHQUFHaEosa0JBQTFCO0FBQ0EsTUFBTWlKLGtCQUFrQixHQUFHdE0sZUFBZSw0QkFBQytCLGVBQWUsQ0FBQyxVQUFELENBQWhCLDREQUFDLHdCQUE2QkssU0FBOUIsQ0FBMUM7O0FBRUEsTUFBSWlCLGtCQUFrQixLQUFLa0osU0FBM0IsRUFBc0M7QUFBRTtBQUN0Q0YsSUFBQUEsbUJBQW1CLEdBQUcsQ0FBQ0Msa0JBQXZCO0FBQ0Q7O0FBRUQsTUFBTUUsVUFBVSxHQUFHLENBQUNGLGtCQUFwQjtBQUNBLE1BQU1HLGVBQWUsR0FBRyxDQUFDSCxrQkFBekI7QUFDQSxNQUFNSSxlQUFlLEdBQUd0RixjQUFjLEdBQUc1RCxZQUFILEdBQWtCQyxhQUF4RDtBQUNBLE1BQU1rSiw0QkFBNEIsR0FBRztBQUNuQzFKLElBQUFBLGNBQWMsRUFBRTRFLGdCQUFnQixHQUFHNUUsY0FBSCxHQUFvQixJQURqQjtBQUVuQ0MsSUFBQUEsU0FBUyxFQUFUQSxTQUZtQztBQUduQzBKLElBQUFBLGVBQWUsRUFBRTFCLFVBSGtCO0FBSW5Dc0IsSUFBQUEsVUFBVSxFQUFWQSxVQUptQztBQUtuQ0MsSUFBQUEsZUFBZSxFQUFmQSxlQUxtQztBQU1uQy9JLElBQUFBLFVBQVUsRUFBVkEsVUFObUM7QUFPbkM7QUFDQTBELElBQUFBLGNBQWMsRUFBZEEsY0FSbUM7QUFTbkN2RCxJQUFBQSxZQUFZLEVBQUVnRSxnQkFBZ0IsR0FBR2hFLFlBQUgsR0FBa0IsSUFUYjtBQVVuQ1EsSUFBQUEscUJBQXFCLEVBQXJCQSxxQkFWbUM7QUFXbkM7QUFDQXFJLElBQUFBLGVBQWUsRUFBZkEsZUFabUM7QUFhbkMzSyxJQUFBQSxlQUFlLEVBQWZBLGVBYm1DO0FBY25DdUYsSUFBQUEsaUJBQWlCLEVBQWpCQSxpQkFkbUM7QUFlbkNjLElBQUFBLGVBQWUsRUFBZkEsZUFmbUM7QUFnQm5DeEQsSUFBQUEsZUFBZSxFQUFFaUksZ0JBaEJrQjtBQWlCbkNDLElBQUFBLGNBQWMsRUFBRW5HLEtBQUssR0FBR3ZHLFlBQUgsR0FBa0JFLFlBakJKO0FBa0JuQ3lNLElBQUFBLGNBQWMsRUFBRS9CLFFBbEJtQjtBQW1CbkNqRyxJQUFBQSxLQUFLLEVBQUV1RixjQW5CNEI7QUFvQm5DcEMsSUFBQUEscUJBQXFCLEVBQUV6QztBQXBCWSxHQUFyQztBQXVCQTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNFLFdBQVNvSCxnQkFBVCxDQUEwQkcsWUFBMUIsRUFBd0NDLEtBQXhDLFNBQXlHO0FBQUEsaUNBQXhEQyxVQUF3RDtBQUFBLFFBQXhEQSxVQUF3RCxpQ0FBM0MsSUFBMkM7QUFBQSxtQ0FBckNDLFlBQXFDO0FBQUEsUUFBckNBLFlBQXFDLG1DQUF0QixJQUFzQjtBQUFBLDRCQUFoQjVHLEtBQWdCO0FBQUEsUUFBaEJBLEtBQWdCLDRCQUFSLElBQVE7O0FBQ3ZHLFFBQU02RyxtQkFBbUIscUJBQVFsSCxrQkFBUixDQUF6Qjs7QUFFQSxRQUFJK0csS0FBSixFQUFXO0FBQ1QsVUFBSUcsbUJBQW1CLENBQUNDLGNBQXBCLENBQW1DTCxZQUFuQyxDQUFKLEVBQXNEO0FBQ3BELGVBQU9JLG1CQUFtQixDQUFDSixZQUFELENBQTFCO0FBQ0Q7QUFDRixLQUpELE1BSU87QUFDTEksTUFBQUEsbUJBQW1CLENBQUNKLFlBQUQsQ0FBbkIsR0FBb0M7QUFBRUUsUUFBQUEsVUFBVSxFQUFWQSxVQUFGO0FBQWNDLFFBQUFBLFlBQVksRUFBWkEsWUFBZDtBQUE0QjVHLFFBQUFBLEtBQUssRUFBTEE7QUFBNUIsT0FBcEMsQ0FESyxDQUNtRTtBQUN6RTs7QUFFRCxRQUFNK0csbUJBQW1CLEdBQUcsQ0FBQyxDQUFDQyxNQUFNLENBQUNDLElBQVAsQ0FBWUosbUJBQVosRUFBaUNqTSxNQUEvRDs7QUFFQSxRQUFJbUUsa0JBQWtCLElBQUlnSSxtQkFBMUIsRUFBK0M7QUFDN0MxSSxNQUFBQSxlQUFlLElBQUlBLGVBQWUsQ0FBQ1IsVUFBRCxFQUFhLENBQUNrSixtQkFBZCxDQUFsQztBQUNBMUcsTUFBQUEsUUFBUSxDQUFDO0FBQUV0QixRQUFBQSxrQkFBa0IsRUFBRWdJO0FBQXRCLE9BQUQsQ0FBUjtBQUNEOztBQUVELFFBQUksQ0FBQ2pPLE9BQU8sQ0FBQytOLG1CQUFELEVBQXNCbEgsa0JBQXRCLENBQVosRUFBdUQ7QUFDckRVLE1BQUFBLFFBQVEsQ0FBQztBQUFFVixRQUFBQSxrQkFBa0IsRUFBRWtIO0FBQXRCLE9BQUQsQ0FBUjtBQUNEO0FBQ0Y7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBOzs7QUFDRSxXQUFTSyxjQUFULENBQXdCQyxRQUF4QixFQUFrQ0MsTUFBbEMsRUFBMEM7QUFDeEMsUUFBTS9GLElBQUksR0FBRzhGLFFBQVEsR0FBRyxFQUF4QjtBQUNBLFFBQU1FLE1BQU0sR0FBR2hHLElBQUksQ0FBQ3pHLE1BQXBCO0FBQ0EsUUFBTTBNLEtBQUssR0FBR0YsTUFBTSxDQUFDRyxTQUFQLENBQWlCLFVBQUNDLEtBQUQsRUFBUUMsR0FBUixFQUFnQjtBQUM3QyxVQUFJQSxHQUFHLEdBQUcsQ0FBVixFQUFhO0FBQ1gsWUFBSUQsS0FBSyxDQUFDRSxTQUFOLENBQWdCLENBQWhCLEVBQW1CTCxNQUFuQixNQUErQmhHLElBQW5DLEVBQXlDO0FBQ3ZDLGNBQU1zRyxRQUFRLEdBQUdILEtBQUssQ0FBQ0gsTUFBRCxDQUF0Qjs7QUFFQSxjQUFLTSxRQUFRLEdBQUcsR0FBWixJQUFxQkEsUUFBUSxHQUFHLEdBQXBDLEVBQTBDO0FBQ3hDLG1CQUFPLElBQVA7QUFDRDtBQUNGO0FBQ0Y7O0FBQ0QsYUFBTyxLQUFQO0FBQ0QsS0FYYSxDQUFkO0FBWUEsV0FBT0wsS0FBUDtBQUNEOztBQUVELFdBQVNNLFdBQVQsR0FBdUI7QUFBQTs7QUFDckI7QUFDQSxRQUFNQyxRQUFRLEdBQUdyTSxlQUFlLFNBQWYsSUFBQUEsZUFBZSxXQUFmLDZCQUFBQSxlQUFlLENBQUVrQyxTQUFqQix3RUFBNEI3QixTQUE1QixHQUF3Q0wsZUFBZSxDQUFDa0MsU0FBaEIsQ0FBMEI3QixTQUExQixDQUFvQ2lNLFdBQXBDLEVBQXhDLEdBQTRGLEVBQTdHO0FBQ0EscUJBQVVuTCxTQUFWLGNBQXVCa0wsUUFBdkI7QUFDRDs7QUFFRCxNQUFNRSxRQUFRLEdBQUdILFdBQVcsRUFBNUI7QUFDQSxNQUFNSSxHQUFHLEdBQUcvRyxlQUFILGFBQUdBLGVBQUgsdUJBQUdBLGVBQWUsQ0FBRStHLEdBQTdCLENBNVlDLENBOFlEOztBQTlZQyxpQkFtWkduUSxPQUFPLENBQUM7QUFDVm1RLElBQUFBLEdBQUcsRUFBSEEsR0FEVTtBQUVWckssSUFBQUEsS0FBSyxFQUFMQSxLQUZVO0FBR1ZzSyxJQUFBQSxPQUFPLEVBQUU3SSxXQUhDO0FBSVY4SSxJQUFBQSxNQUFNO0FBQ0oxSCxNQUFBQSxLQUFLLEVBQUU7QUFBRUMsUUFBQUEsTUFBTSxFQUFFO0FBQVY7QUFESCxPQUVEL0QsY0FGQyxhQUVEQSxjQUZDLHVCQUVEQSxjQUFjLENBQUV3TCxNQUZmO0FBR0pDLE1BQUFBLGdCQUFnQixFQUFFLElBSGQ7QUFJSmhHLE1BQUFBLEtBQUssRUFBRXpGLGNBQUYsYUFBRUEsY0FBRix1QkFBRUEsY0FBYyxDQUFFeUYsS0FKbkI7QUFLSjtBQUNBaUcsTUFBQUEsT0FBTyxFQUFFLGdCQUFBakwsVUFBVSxVQUFWLGtEQUFZa0wsYUFBWixzQkFBNkJsTCxVQUE3QixpREFBNkIsYUFBWWlMLE9BQXpDLEtBQW9ELEtBTnpEO0FBT0puSyxNQUFBQSxNQUFNLEVBQU5BO0FBUEksTUFKSTtBQWFWcUssSUFBQUEsTUFBTSxFQUFFaEwsWUFiRTtBQWNWNkUsSUFBQUEsS0FBSyxFQUFFekYsY0FBRixhQUFFQSxjQUFGLHVCQUFFQSxjQUFjLENBQUV5RixLQWRiO0FBZVZvRyxJQUFBQSxNQUFNLEVBQUU1RyxxQkFmRTtBQWdCVm9HLElBQUFBLFFBQVEsRUFBUkEsUUFoQlU7QUFpQlY3RyxJQUFBQSxJQUFJLEVBQUpBO0FBakJVLEdBQUQsQ0FuWlY7QUFBQSxNQWdaUXNILFNBaFpSLFlBZ1pDak0sS0FoWkQ7QUFBQSxNQWlaVWtNLFdBalpWLFlBaVpDQyxPQWpaRDtBQUFBLE1Ba1pDQyxVQWxaRCxZQWtaQ0EsVUFsWkQ7O0FBdWFEblIsRUFBQUEsS0FBSyxDQUFDbU0sU0FBTixDQUFnQixZQUFNO0FBQUU7QUFDdEIsUUFBSTZFLFNBQVMsSUFBSUMsV0FBakIsRUFBOEI7QUFDNUJyTSxNQUFBQSxPQUFPLENBQUNvSCxHQUFSLGVBQTBCZ0YsU0FBMUI7QUFDQWhMLE1BQUFBLGVBQWUsSUFBSUEsZUFBZSxDQUFDLElBQUQsRUFBTyxLQUFQLEVBQWMsSUFBZCx5QkFBb0NnSCxXQUFwQyxjQUFtRDNHLFVBQW5ELGNBQWlFMkssU0FBakUsR0FBOEUsSUFBOUUsQ0FBbEM7QUFDRDtBQUNGLEdBTEQsRUFLRyxDQUFDQSxTQUFELEVBQVlDLFdBQVosQ0FMSDtBQU9BalIsRUFBQUEsS0FBSyxDQUFDbU0sU0FBTixDQUFnQixZQUFNO0FBQUU7QUFDdEIsUUFBTWlGLFNBQVM7QUFBQSwwRUFBRztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWM7QUFDOUJ4TSxnQkFBQUEsT0FBTyxDQUFDeU0sSUFBUiw2Q0FBa0RiLEdBQWxEO0FBRGdCO0FBQUEsdUJBRVZXLFVBQVUsQ0FBQ2xILGtCQUFELENBQVYsQ0FBK0JtQixJQUEvQixDQUFvQyxVQUFDa0csT0FBRCxFQUFhO0FBQUU7QUFDdkQsc0JBQUlBLE9BQUosRUFBYTtBQUNYMU0sb0JBQUFBLE9BQU8sQ0FBQ29ILEdBQVI7QUFDQXBGLG9CQUFBQSxjQUFjLENBQUMsVUFBQTJLLGVBQWU7QUFBQSw2QkFBSUEsZUFBZSxDQUFDbEYsTUFBaEIsQ0FBdUIsVUFBQXRDLE1BQU07QUFBQSwrQkFBSUEsTUFBTSxLQUFLSCxjQUFmO0FBQUEsdUJBQTdCLENBQUo7QUFBQSxxQkFBaEIsQ0FBZDtBQUNBZixvQkFBQUEsUUFBUSxDQUFDO0FBQ1BiLHNCQUFBQSxTQUFTLEVBQUU7QUFESixxQkFBRCxDQUFSO0FBSUEsd0JBQU13SixrQkFBa0IsR0FBR2hDLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZdEgsa0JBQVosQ0FBM0I7O0FBRUEsd0JBQUlxSixrQkFBSixhQUFJQSxrQkFBSixlQUFJQSxrQkFBa0IsQ0FBRXBPLE1BQXhCLEVBQWdDO0FBQUEsaUVBQ05vTyxrQkFETTtBQUFBOztBQUFBO0FBQzlCLDRFQUE0QztBQUFBLDhCQUFqQ0MsU0FBaUM7QUFBQSw4QkFDbENyQyxZQURrQyxHQUNqQmpILGtCQUFrQixDQUFDc0osU0FBRCxDQURELENBQ2xDckMsWUFEa0M7QUFFMUNBLDBCQUFBQSxZQUFZLElBQUlBLFlBQVksRUFBNUI7QUFDRDtBQUo2QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSy9COztBQUVEeEssb0JBQUFBLE9BQU8sQ0FBQ3lNLElBQVIsQ0FBYSwyQ0FBYjtBQUNBeEksb0JBQUFBLFFBQVEsQ0FBQztBQUNQYixzQkFBQUEsU0FBUyxFQUFFLEtBREo7QUFFUFAsc0JBQUFBLGFBQWEsRUFBRSxJQUZSO0FBR1BDLHNCQUFBQSxHQUFHLEVBQUV1QztBQUhFLHFCQUFELENBQVI7QUFLQS9ILG9CQUFBQSxLQUFLLENBQUMsR0FBRCxDQUFMLENBQVdrSixJQUFYLENBQWdCLFlBQU07QUFDcEJ4RSxzQkFBQUEsY0FBYyxDQUFDLFVBQUEySyxlQUFlO0FBQUEsK0JBQUlBLGVBQWUsQ0FBQ2xGLE1BQWhCLENBQXVCLFVBQUF0QyxNQUFNO0FBQUEsaUNBQUlBLE1BQU0sS0FBS0gsY0FBZjtBQUFBLHlCQUE3QixDQUFKO0FBQUEsdUJBQWhCLENBQWQ7QUFDQTVGLHNCQUFBQSxlQUFlLFNBQWYsSUFBQUEsZUFBZSxXQUFmLFlBQUFBLGVBQWUsQ0FBRXFILGNBQWpCLENBQWdDbUYsR0FBaEMsRUFBcUN2RyxrQkFBckM7QUFDRCxxQkFIRDtBQUlELG1CQTFCRCxNQTBCTztBQUNMckYsb0JBQUFBLE9BQU8sQ0FBQ0csS0FBUixDQUFjLHdEQUFkO0FBQ0E2QixvQkFBQUEsY0FBYyxDQUFDLFVBQUEySyxlQUFlO0FBQUEsNkJBQUlBLGVBQWUsQ0FBQ2xGLE1BQWhCLENBQXVCLFVBQUF0QyxNQUFNO0FBQUEsK0JBQUlBLE1BQU0sS0FBS0gsY0FBZjtBQUFBLHVCQUE3QixDQUFKO0FBQUEscUJBQWhCLENBQWQ7QUFDQWYsb0JBQUFBLFFBQVEsQ0FBQztBQUFFYixzQkFBQUEsU0FBUyxFQUFFO0FBQWIscUJBQUQsQ0FBUjtBQUNEO0FBQ0YsaUJBaENLLENBRlU7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsT0FBSDs7QUFBQSxzQkFBVG9KLFNBQVM7QUFBQTtBQUFBO0FBQUEsT0FBZjs7QUFxQ0EsUUFBSXBKLFNBQUosRUFBZTtBQUNiLFVBQUksQ0FBQ1YsZUFBTCxFQUFzQixDQUNwQjtBQUNELE9BRkQsTUFFTyxJQUFJLENBQUNrSixHQUFMLEVBQVUsQ0FDZjtBQUNELE9BRk0sTUFFQTtBQUNMO0FBQ0E1SixRQUFBQSxjQUFjLENBQUMsVUFBQTJLLGVBQWU7QUFBQSw4Q0FBUUEsZUFBUixJQUF5QjNILGNBQXpCO0FBQUEsU0FBaEIsQ0FBZDs7QUFDQXdILFFBQUFBLFNBQVM7QUFDVjtBQUNGO0FBQ0YsR0FqREQsRUFpREcsQ0FBQ3BKLFNBQUQsRUFBWVYsZUFBWixFQUE2QmtKLEdBQTdCLENBakRIO0FBbURBO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNFLFdBQVNrQiw4QkFBVCxDQUF3QzVNLFNBQXhDLEVBQW1ENEMsR0FBbkQsRUFBd0RpSyxtQkFBeEQsRUFBNkV2TSxPQUE3RSxFQUE4RjtBQUM1RixRQUFJd00sT0FBSjtBQUNBLFFBQU1DLGFBQWEsR0FBRy9NLFNBQUgsYUFBR0EsU0FBSCx1QkFBR0EsU0FBUyxDQUFFZ04sS0FBWCxDQUFpQixNQUFqQixDQUF0QjtBQUNBLFFBQU1DLFlBQVksR0FBR3JDLGNBQWMsQ0FBQ2hJLEdBQUQsYUFBQ0EsR0FBRCx1QkFBQ0EsR0FBRyxDQUFFMUUsT0FBTixFQUFlNk8sYUFBZixDQUFuQzs7QUFFQSxRQUFJRSxZQUFZLElBQUksQ0FBcEIsRUFBdUI7QUFDckIsVUFBTUMsY0FBYyxHQUFHSCxhQUFhLENBQUNFLFlBQUQsQ0FBcEM7QUFDQSxVQUFNRSxXQUFXLEdBQUdELGNBQWMsQ0FBQ0YsS0FBZixDQUFxQixNQUFyQixDQUFwQjtBQUNBLFVBQU1JLFVBQVUsR0FBR3hDLGNBQWMsQ0FBQ2hJLEdBQUQsYUFBQ0EsR0FBRCx1QkFBQ0EsR0FBRyxDQUFFekUsS0FBTixFQUFhZ1AsV0FBYixDQUFqQzs7QUFFQSxVQUFJQyxVQUFVLElBQUksQ0FBbEIsRUFBcUI7QUFDbkIsWUFBTUMsWUFBWSxHQUFHOVEseUJBQXlCLENBQUMrUSxzQkFBMUIsQ0FBaURULG1CQUFqRCxDQUFyQjtBQUNBL00sUUFBQUEsT0FBTyxDQUFDb0gsR0FBUiw4QkFBa0M1RyxPQUFsQyx1Q0FBc0UrTSxZQUFZLENBQUNqQyxTQUFiLENBQXVCLENBQXZCLEVBQTBCLEdBQTFCLENBQXRFO0FBQ0EsWUFBTW1DLFFBQVEsR0FBR0osV0FBVyxDQUFDQyxVQUFELENBQTVCO0FBQ0EsWUFBTUksV0FBVyxHQUFHLENBQUMsQ0FBQTVLLEdBQUcsU0FBSCxJQUFBQSxHQUFHLFdBQUgsWUFBQUEsR0FBRyxDQUFFekUsS0FBTCxJQUFhLEVBQWQsRUFBa0JHLE1BQXRDO0FBQ0E2TyxRQUFBQSxXQUFXLENBQUNDLFVBQUQsQ0FBWCxHQUEwQkcsUUFBUSxDQUFDbkMsU0FBVCxDQUFtQixDQUFuQixFQUFzQm9DLFdBQVcsR0FBRyxDQUFwQyxJQUF5Q0gsWUFBbkU7QUFDQSxZQUFNSSxVQUFVLEdBQUdOLFdBQVcsQ0FBQ08sSUFBWixDQUFpQixNQUFqQixDQUFuQjtBQUNBWCxRQUFBQSxhQUFhLENBQUNFLFlBQUQsQ0FBYixHQUE4QlEsVUFBOUI7QUFDQVgsUUFBQUEsT0FBTyxHQUFHQyxhQUFhLENBQUNXLElBQWQsQ0FBbUIsTUFBbkIsQ0FBVjtBQUNEO0FBQ0Y7O0FBQ0QsV0FBT1osT0FBUDtBQUNEOztBQUVENVIsRUFBQUEsS0FBSyxDQUFDbU0sU0FBTixDQUFnQixZQUFNO0FBQUU7QUFBRixhQUNMc0csZUFESztBQUFBO0FBQUE7O0FBQUE7QUFBQSxpRkFDcEI7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHFCQUNNOUssV0FETjtBQUFBO0FBQUE7QUFBQTs7QUFFUStLLGdCQUFBQSxnQkFGUixHQUUyQixDQUFDeEksZ0JBRjVCOztBQUlJLG9CQUFJLENBQUN3SSxnQkFBTCxFQUF1QjtBQUFFO0FBQ3ZCLHNCQUFJdkkscUJBQXFCLEtBQUtGLGtCQUE5QixFQUFrRDtBQUNoRHJGLG9CQUFBQSxPQUFPLENBQUNDLElBQVIsMEVBQStFb0Ysa0JBQS9FLGtDQUF5SEUscUJBQXpIO0FBQ0F1SSxvQkFBQUEsZ0JBQWdCLEdBQUcsSUFBbkI7QUFDRCxtQkFIRCxNQUdPO0FBQ0w5TixvQkFBQUEsT0FBTyxDQUFDb0gsR0FBUiwyREFBK0Q3QixxQkFBL0Q7QUFDQXRCLG9CQUFBQSxRQUFRLENBQUM7QUFBRXZCLHNCQUFBQSxlQUFlLEVBQUU7QUFBbkIscUJBQUQsQ0FBUjtBQUNEO0FBQ0Y7O0FBWkwscUJBY1FvTCxnQkFkUjtBQUFBO0FBQUE7QUFBQTs7QUFjNEI7QUFDdEI5TixnQkFBQUEsT0FBTyxDQUFDb0gsR0FBUjtBQUNBbkQsZ0JBQUFBLFFBQVEsQ0FBQztBQUNQdkIsa0JBQUFBLGVBQWUsRUFBRSxLQURWO0FBRVBHLGtCQUFBQSxhQUFhLEVBQUUsS0FGUjtBQUdQK0ksa0JBQUFBLEdBQUcsRUFBRTtBQUhFLGlCQUFELENBQVIsQ0FoQk4sQ0FvQlM7O0FBcEJUO0FBQUEsdUJBc0IyQm5HLGVBQWUsRUF0QjFDOztBQUFBO0FBc0JZMEcsZ0JBQUFBLE1BdEJaOztBQUFBLHFCQXdCVUEsTUF4QlY7QUFBQTtBQUFBO0FBQUE7O0FBeUJRbk0sZ0JBQUFBLE9BQU8sQ0FBQ29ILEdBQVI7QUFDQW5ELGdCQUFBQSxRQUFRLENBQUM7QUFDUHZCLGtCQUFBQSxlQUFlLEVBQUUsSUFEVjtBQUVQRyxrQkFBQUEsYUFBYSxFQUFFLElBRlI7QUFHUEMsa0JBQUFBLEdBQUcsRUFBRXFKO0FBSEUsaUJBQUQsQ0FBUjtBQTFCUjtBQUFBOztBQUFBO0FBZ0NRbk0sZ0JBQUFBLE9BQU8sQ0FBQ0csS0FBUixDQUFjLG1EQUFkO0FBQ0FpQixnQkFBQUEsZUFBZSxJQUFJQSxlQUFlLENBQUMsSUFBRCxFQUFPLEtBQVAsRUFBYyxJQUFkLHVDQUFrRGdILFdBQWxELGNBQWlFM0csVUFBakUsR0FBK0UsSUFBL0UsQ0FBbEM7QUFDQXdDLGdCQUFBQSxRQUFRLENBQUM7QUFBRWxCLGtCQUFBQSxXQUFXLEVBQUU7QUFBZixpQkFBRCxDQUFSO0FBbENSOztBQUFBO0FBdUNJL0MsZ0JBQUFBLE9BQU8sQ0FBQ29ILEdBQVI7QUFDTXdGLGdCQUFBQSxrQkF4Q1YsR0F3QytCaEMsTUFBTSxDQUFDQyxJQUFQLENBQVl0SCxrQkFBWixDQXhDL0I7O0FBQUEsc0JBMENRcUosa0JBMUNSLGFBMENRQSxrQkExQ1IsZUEwQ1FBLGtCQUFrQixDQUFFcE8sTUExQzVCO0FBQUE7QUFBQTtBQUFBOztBQTJDVTBCLGdCQUFBQSxTQTNDVixHQTJDc0JmLGNBQWMsQ0FBQ0MsZUFBRCxFQUFrQkMsTUFBbEIsQ0EzQ3BDO0FBNENVME8sZ0JBQUFBLFNBNUNWLEdBNENzQixLQTVDdEI7O0FBQUEscUJBNkNVN04sU0E3Q1Y7QUFBQTtBQUFBO0FBQUE7O0FBOENZTSxnQkFBQUEsUUE5Q1osR0E4Q3NCLENBOUN0QjtBQUFBLHdEQWdEZ0NvTSxrQkFoRGhDO0FBQUE7O0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFnRG1CQyxnQkFBQUEsU0FoRG5CO0FBaURVck0sZ0JBQUFBLFFBQU8sR0FBR3dOLFFBQVEsQ0FBQ25CLFNBQUQsQ0FBbEI7QUFqRFYsd0NBa0R3Q3RKLGtCQUFrQixDQUFDL0MsUUFBRCxDQWxEMUQsRUFrRGtCK0osVUFsRGxCLHlCQWtEa0JBLFVBbERsQixFQWtEOEIzRyxNQWxEOUIseUJBa0Q4QkEsS0FsRDlCOztBQUFBLHFCQW9EYzJHLFVBcERkO0FBQUE7QUFBQTtBQUFBOztBQXFEZ0J5QyxnQkFBQUEsT0FyRGhCO0FBQUEsOEJBeURnQnpDLFVBQVUsQ0FBQzNHLE1BQUQsQ0F6RDFCLEVBdURjZCxLQXZEZCxlQXVEY0EsR0F2RGQsRUF3RGNpSyxtQkF4RGQsZUF3RGNBLG1CQXhEZDs7QUEyRFksb0JBQUlBLG1CQUFtQixJQUFJN00sU0FBM0IsRUFBc0M7QUFBRTtBQUN0QzhNLGtCQUFBQSxPQUFPLEdBQUdGLDhCQUE4QixDQUFDNU0sU0FBRCxFQUFZNEMsS0FBWixFQUFpQmlLLG1CQUFqQixFQUFzQ3ZNLFFBQXRDLENBQXhDO0FBQ0Q7O0FBN0RiLHFCQStEZ0J3TSxPQS9EaEI7QUFBQTtBQUFBO0FBQUE7O0FBZ0VjOU0sZ0JBQUFBLFNBQVMsR0FBRzhNLE9BQVo7QUFoRWQ7QUFBQTs7QUFBQTtBQWtFY2UsZ0JBQUFBLFNBQVMsR0FBRyxJQUFaO0FBbEVkOztBQUFBO0FBQUE7QUFBQTs7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQTtBQUFBOztBQUFBOztBQUFBO0FBQUE7O0FBQUE7O0FBQUE7O0FBQUE7QUEwRU0sb0JBQUlBLFNBQUosRUFBZTtBQUFFO0FBQ2YvTixrQkFBQUEsT0FBTyxDQUFDb0gsR0FBUiw4QkFBa0M1RyxPQUFsQztBQURhLDBEQUlXb00sa0JBSlg7O0FBQUE7QUFJYiwyRUFBNEM7QUFBakNDLHNCQUFBQSxVQUFpQztBQUNwQ3JNLHNCQUFBQSxTQURvQyxHQUMxQndOLFFBQVEsQ0FBQ25CLFVBQUQsQ0FEa0I7QUFBQSwrQ0FFWnRKLGtCQUFrQixDQUFDL0MsU0FBRCxDQUZOLEVBRWxDK0osWUFGa0MsMEJBRWxDQSxVQUZrQyxFQUV0QjNHLE9BRnNCLDBCQUV0QkEsS0FGc0I7O0FBSTFDLDBCQUFJMkcsWUFBSixFQUFnQjtBQUNWeUMsd0JBQUFBLFFBRFU7QUFBQSx1Q0FNVnpDLFlBQVUsQ0FBQzNHLE9BQUQsQ0FOQSxFQUdacUssWUFIWSxnQkFHWkEsWUFIWSxFQUlabkwsS0FKWSxnQkFJWkEsR0FKWSxFQUtaaUssb0JBTFksZ0JBS1pBLG1CQUxZOztBQVFkLDRCQUFJQSxvQkFBbUIsSUFBSSxDQUFDQyxRQUE1QixFQUFxQztBQUMvQmtCLDBCQUFBQSxtQkFEK0IsR0FDVCxJQURTOztBQUduQyw4QkFBSXBMLEtBQUosRUFBUztBQUNQLGdDQUFJbUwsWUFBSixFQUFrQjtBQUFBLHNEQUNlelIsZ0JBQWdCLENBQUMyUiw2QkFBakIsQ0FBK0NwQixvQkFBL0MsRUFBb0VrQixZQUFwRSxDQURmLEVBQ1JHLGtCQURRLHlCQUNSQSxrQkFEUTtBQUVoQkYsOEJBQUFBLG1CQUFtQixHQUFHRSxrQkFBdEI7QUFDRCw2QkFIRCxNQUdPO0FBQ0xGLDhCQUFBQSxtQkFBbUIsR0FBR25CLG9CQUF0QjtBQUNEOztBQUNEc0IsNEJBQUFBLFdBQVcsR0FBR0gsbUJBQW1CLEtBQUk5TyxlQUFKLGFBQUlBLGVBQUosdUJBQUlBLGVBQWUsQ0FBRWtQLFdBQWpCLENBQTZCeEwsS0FBRyxDQUFDMUUsT0FBakMsRUFBMEMwRSxLQUFHLENBQUN6RSxLQUE5QyxFQUFxRDtBQUFDRSw4QkFBQUEsWUFBWSxFQUFFMlA7QUFBZiw2QkFBckQsQ0FBSixDQUFqQztBQUNEO0FBQ0Y7QUFDRjtBQUNGO0FBOUJZO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBZ0NiaE8sa0JBQUFBLFNBQVMsR0FBRzFFLE1BQU0sQ0FBQytTLE1BQVAsQ0FBY0YsV0FBZCxFQUEyQjtBQUFFRyxvQkFBQUEsY0FBYyxFQUFFO0FBQWxCLG1CQUEzQixDQUFaO0FBQ0Q7O0FBRUQsb0JBQUl0TyxTQUFKLEVBQWU7QUFDYkYsa0JBQUFBLE9BQU8sQ0FBQ29ILEdBQVIsbURBQXVEbEgsU0FBUyxDQUFDb0wsU0FBVixDQUFvQixDQUFwQixFQUF1QixHQUF2QixDQUF2RDtBQUNBdEosa0JBQUFBLGNBQWMsQ0FBQyxVQUFBMkssZUFBZTtBQUFBLHdEQUFRQSxlQUFSLElBQXlCM0gsY0FBekI7QUFBQSxtQkFBaEIsQ0FBZDtBQUNBZixrQkFBQUEsUUFBUSxDQUFDO0FBQUNqQixvQkFBQUEsV0FBVyxFQUFFOUMsU0FBZDtBQUF5QmtELG9CQUFBQSxTQUFTLEVBQUUsSUFBcEM7QUFBMENMLG9CQUFBQSxXQUFXLEVBQUU7QUFBdkQsbUJBQUQsQ0FBUjtBQUNELGlCQUpELE1BSU87QUFDSC9DLGtCQUFBQSxPQUFPLENBQUNHLEtBQVIseUZBQStGaUksV0FBL0YsY0FBOEczRyxVQUE5RztBQUNBTCxrQkFBQUEsZUFBZSxJQUFJQSxlQUFlLENBQUMsSUFBRCxFQUFPLEtBQVAsRUFBYyxJQUFkLG1EQUE4RGdILFdBQTlELGNBQTZFM0csVUFBN0UsR0FBMkYsSUFBM0YsQ0FBbEM7QUFDQXdDLGtCQUFBQSxRQUFRLENBQUM7QUFBRWxCLG9CQUFBQSxXQUFXLEVBQUU7QUFBZixtQkFBRCxDQUFSO0FBQ0g7O0FBckhQO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE9BRG9CO0FBQUE7QUFBQTs7QUEySHBCOEssSUFBQUEsZUFBZTtBQUNoQixHQTVIRCxFQTRIRyxDQUFDOUssV0FBRCxDQTVISCxFQWhnQkMsQ0E4bkJEOztBQTluQkMsY0ErbkJtQndGLFVBQVUsSUFBSSxFQS9uQmpDO0FBQUEsTUErbkJPbkssT0EvbkJQLFNBK25CT0EsT0EvbkJQOztBQWlvQkRoRCxFQUFBQSxLQUFLLENBQUNtTSxTQUFOLENBQWdCLFlBQU07QUFDcEIsUUFBTWtILGFBQWEsR0FBR3JQLGVBQUgsYUFBR0EsZUFBSCx1QkFBR0EsZUFBZSxDQUFFcUUsWUFBdkM7O0FBQ0EsUUFBSWlMLGFBQWEsR0FBRyxJQUFJeEwsR0FBSixFQUFwQjtBQUNBLFFBQUl5TCxnQkFBZ0IsR0FBRyxLQUF2QjtBQUNBLFFBQU1DLElBQUksR0FBR0YsYUFBYjtBQUNBLFFBQU1HLGNBQWMsR0FBR3hOLDRCQUFILGFBQUdBLDRCQUFILHVCQUFHQSw0QkFBNEIsQ0FBRWhDLE1BQXJEO0FBQ0EsUUFBTXlQLGVBQWUsR0FBR3pOLDRCQUFILGFBQUdBLDRCQUFILHVCQUFHQSw0QkFBNEIsQ0FBRTBOLFFBQXREO0FBQ0EsUUFBSUMsZ0JBQWdCLEdBQUcsSUFBdkIsQ0FQb0IsQ0FTcEI7O0FBQ0EsUUFBSVAsYUFBYSxTQUFiLElBQUFBLGFBQWEsV0FBYixJQUFBQSxhQUFhLENBQUVqUSxNQUFmLElBQ0ZzUSxlQURFLElBRUR6UCxNQUFNLEtBQUt3UCxjQUZWLElBR0ZDLGVBQWUsQ0FBQzFRLE9BQUQsQ0FIYixJQUcwQjtBQUM1QndELElBQUFBLGFBSkUsYUFJRkEsYUFKRSxlQUlGQSxhQUFhLENBQUVxTixLQUpqQixFQUtFO0FBQ0E7QUFDQSxVQUFJLENBQUN2UyxPQUFPLENBQUNrRyxpQkFBRCxFQUFvQmhCLGFBQXBCLENBQVIsSUFDRixDQUFDbEYsT0FBTyxDQUFDK0csWUFBRCxFQUFlZ0wsYUFBZixDQURWLEVBQ3lDO0FBQUE7O0FBQ3ZDLFlBQU1TLGNBQWMsR0FBRyxFQUF2QjtBQUNBLFlBQU1DLFVBQVUsR0FBRyxFQUFuQixDQUZ1QyxDQUVqQjs7QUFDdEIsWUFBSUMsVUFBVSxHQUFHWCxhQUFhLENBQUMsQ0FBRCxDQUFiLENBQWlCcFEsS0FBbEM7O0FBRUEsWUFBSSxPQUFPK1EsVUFBUCxLQUFzQixRQUExQixFQUFvQztBQUNsQ0EsVUFBQUEsVUFBVSxHQUFHcEIsUUFBUSxDQUFDb0IsVUFBRCxDQUFyQjtBQUNEOztBQUVELFlBQUlDLFNBQVMsR0FBR0QsVUFBaEI7O0FBRUEsYUFBSyxJQUFJclEsQ0FBQyxHQUFHLENBQVIsRUFBV0MsQ0FBQyxHQUFHeVAsYUFBYSxDQUFDalEsTUFBbEMsRUFBMENPLENBQUMsR0FBR0MsQ0FBOUMsRUFBaURELENBQUMsRUFBbEQsRUFBc0Q7QUFDcEQsY0FBTVosUUFBUSxHQUFHc1EsYUFBYSxDQUFDMVAsQ0FBRCxDQUE5QjtBQURvRCxjQUdsRFgsU0FIa0QsR0FLaERELFFBTGdELENBR2xEQyxPQUhrRDtBQUFBLGNBSWxEQyxLQUprRCxHQUtoREYsUUFMZ0QsQ0FJbERFLEtBSmtELEVBTXBEOztBQUNBLGNBQUlpUixNQUFNLEdBQUdGLFVBQVUsR0FBR3JRLENBQTFCOztBQUNBc1EsVUFBQUEsU0FBUyxHQUFHQyxNQUFaO0FBQ0FILFVBQUFBLFVBQVUsV0FBSS9RLFNBQUosY0FBZWtSLE1BQWYsRUFBVixhQUF3Q2xSLFNBQXhDLGNBQW1EQyxLQUFuRDs7QUFFQSxjQUFJLENBQUM2USxjQUFjLENBQUM5USxTQUFELENBQW5CLEVBQThCO0FBQzVCOFEsWUFBQUEsY0FBYyxDQUFDOVEsU0FBRCxDQUFkLEdBQTBCLEVBQTFCO0FBQ0Q7O0FBRUQsY0FBSUcsWUFBWSxHQUFHLEVBQW5COztBQUVBLGNBQUssT0FBT0YsS0FBUCxLQUFpQixRQUFsQixJQUFnQ0EsS0FBSyxDQUFDMEIsUUFBTixDQUFlLEdBQWYsQ0FBcEMsRUFBMEQ7QUFDeEQsZ0JBQU13UCxNQUFNLEdBQUc1UyxTQUFTLENBQUNtUyxlQUFELFlBQXFCMVEsU0FBckIsY0FBZ0NDLEtBQWhDLEVBQXhCOztBQUR3RCx3REFHaENrUixNQUhnQztBQUFBOztBQUFBO0FBR3hELHFFQUFnQztBQUFBLG9CQUFyQkMsU0FBcUI7QUFDOUIsb0JBQU1DLEVBQUUsR0FBR0QsU0FBUyxDQUFDbFIsU0FBVixDQUFvQkMsWUFBL0I7QUFDQUEsZ0JBQUFBLFlBQVksR0FBR0EsWUFBWSxDQUFDbVIsTUFBYixDQUFvQkQsRUFBcEIsQ0FBZjtBQUNEO0FBTnVEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFPekQsV0FQRCxNQU9PO0FBQUE7O0FBQ0xsUixZQUFBQSxZQUFZLDRCQUFHdVEsZUFBZSxDQUFDMVEsU0FBRCxDQUFmLENBQXlCQyxLQUF6QixDQUFILDBEQUFHLHNCQUFpQ0UsWUFBaEQ7QUFDRDs7QUFFRCxjQUFJQSxZQUFKLEVBQWtCO0FBQ2hCQSxZQUFBQSxZQUFZLEdBQUd4QixtQkFBbUIsQ0FBQ3dCLFlBQUQsQ0FBbEM7QUFDQTJRLFlBQUFBLGNBQWMsQ0FBQzlRLFNBQUQsQ0FBZCxDQUF3QmtSLE1BQXhCLElBQWtDO0FBQUUvUSxjQUFBQSxZQUFZLEVBQVpBO0FBQUYsYUFBbEM7O0FBQ0FxUSxZQUFBQSxJQUFJLENBQUNlLEdBQUwsV0FBWXZSLFNBQVosY0FBdUJDLEtBQXZCLEdBQWdDRSxZQUFoQztBQUNEO0FBQ0YsU0E1Q3NDLENBOEN2Qzs7O0FBOUN1QyxvQ0ErQ3JCcUQsYUEvQ3FCLGFBK0NyQkEsYUEvQ3FCLGlEQStDckJBLGFBQWEsQ0FBRU4sU0EvQ00sMkRBK0NyQix1QkFBMEI0TCxLQUExQixDQUFnQyxHQUFoQyxDQS9DcUI7QUFBQTtBQUFBLFlBK0NoQzlPLFFBL0NnQzs7QUFnRHZDLFlBQUl3UixNQUFNLGFBQU14UixRQUFOLGNBQWlCZ1IsVUFBakIsQ0FBVjs7QUFFQSxZQUFJQyxTQUFTLElBQUlELFVBQWpCLEVBQTZCO0FBQzNCUSxVQUFBQSxNQUFNLGVBQVFQLFNBQVIsQ0FBTjtBQUNEOztBQUVELFlBQU1RLFlBQVksR0FBR3RULHdCQUF3QixDQUFDO0FBQzVDdVQsVUFBQUEsVUFBVSxFQUFFWixjQURnQztBQUU1Q3BNLFVBQUFBLEdBQUcsRUFBRThNLE1BRnVDO0FBRzVDWCxVQUFBQSxLQUFLLEVBQUVyTixhQUFGLGFBQUVBLGFBQUYsdUJBQUVBLGFBQWEsQ0FBRXFOLEtBSHNCO0FBSTVDYyxVQUFBQSxVQUFVLEVBQUVuTyxhQUFGLGFBQUVBLGFBQUYsdUJBQUVBLGFBQWEsQ0FBRW1PO0FBSmlCLFNBQUQsQ0FBN0M7O0FBT0EsWUFBTTlNLFdBQVUsR0FBRyxJQUFJQyxHQUFKLEVBQW5COztBQUVBLFlBQUkyTSxZQUFKLGFBQUlBLFlBQUosZUFBSUEsWUFBWSxDQUFFRyxJQUFsQixFQUF3QjtBQUN0QkgsVUFBQUEsWUFBWSxDQUFDSSxPQUFiLENBQXFCLFVBQUNDLEtBQUQsRUFBUUMsR0FBUixFQUFnQjtBQUNuQyxnQkFBTUMsSUFBSSxHQUFHakIsVUFBVSxDQUFDZ0IsR0FBRCxDQUF2Qjs7QUFFQWxOLFlBQUFBLFdBQVUsQ0FBQzBNLEdBQVgsQ0FBZVMsSUFBZixFQUFxQkYsS0FBSyxDQUFDRyxHQUFOLENBQVUsVUFBQUMsSUFBSTtBQUFBLHFEQUM1QkEsSUFENEI7QUFDdEJDLGdCQUFBQSxJQUFJLEVBQUVqVixJQUFJLENBQUNrVixlQUFMLENBQXFCRixJQUFJLENBQUNDLElBQTFCO0FBRGdCO0FBQUEsYUFBZCxDQUFyQjtBQUdELFdBTkQ7QUFPRDs7QUFDRDdCLFFBQUFBLGFBQWEsR0FBR3pMLFdBQWhCO0FBQ0ErTCxRQUFBQSxnQkFBZ0IsR0FBR3BOLGFBQW5CO0FBQ0ErTSxRQUFBQSxnQkFBZ0IsR0FBRyxJQUFuQjtBQUNEO0FBQ0Y7O0FBRUQsUUFBTXpLLFFBQWEsR0FBRyxFQUF0QixDQWhHb0IsQ0FrR3BCOztBQUNBLFFBQUksQ0FBQzNHLGNBQWMsQ0FBQ21HLGVBQUQsRUFBa0JrTCxJQUFsQixDQUFuQixFQUE0QztBQUMxQzFLLE1BQUFBLFFBQVEsQ0FBQ1IsZUFBVCxHQUEyQmtMLElBQTNCO0FBQ0Q7O0FBRUQsUUFBTTZCLFlBQVksR0FBRyxDQUFBblAsU0FBUyxTQUFULElBQUFBLFNBQVMsV0FBVCxZQUFBQSxTQUFTLENBQUU3QixTQUFYLE9BQXlCZ0QsZ0JBQXpCLGFBQXlCQSxnQkFBekIsdUJBQXlCQSxnQkFBZ0IsQ0FBRWhELFNBQTNDLENBQXJCOztBQUVBLFFBQUlnUixZQUFZLElBQUksQ0FBQzlSLGFBQWEsQ0FBQzhFLFlBQUQsRUFBZWdMLGFBQWYsQ0FBbEMsRUFBaUU7QUFDL0R2SyxNQUFBQSxRQUFRLENBQUNULFlBQVQsR0FBd0JnTCxhQUF4QjtBQUNBdkssTUFBQUEsUUFBUSxDQUFDdEIsaUJBQVQsR0FBNkJvTSxnQkFBN0I7QUFDQTlLLE1BQUFBLFFBQVEsQ0FBQ2pCLFVBQVQsR0FBc0J5TCxhQUF0QjtBQUNEOztBQUVELFFBQUlNLGdCQUFKLEVBQXNCO0FBQ3BCOUssTUFBQUEsUUFBUSxDQUFDdEIsaUJBQVQsR0FBNkJvTSxnQkFBN0I7QUFDRDs7QUFFRCxRQUFJTCxnQkFBSixFQUFzQjtBQUNwQixVQUFJLENBQUNwUixjQUFjLENBQUMwRixVQUFVLElBQUssSUFBSUMsR0FBSixFQUFoQixFQUE0QndMLGFBQTVCLENBQW5CLEVBQStEO0FBQzdEeEssUUFBQUEsUUFBUSxDQUFDakIsVUFBVCxHQUFzQnlMLGFBQXRCO0FBQ0Q7QUFDRjs7QUFFRCxRQUFJOUQsTUFBTSxDQUFDQyxJQUFQLENBQVkzRyxRQUFaLEVBQXNCMUYsTUFBMUIsRUFBa0M7QUFDaEN5RixNQUFBQSxRQUFRLENBQUNDLFFBQUQsQ0FBUjtBQUNEO0FBQ0YsR0E1SEQsRUE0SEcsQ0FDRDNDLEtBREMsRUFFREUsVUFGQyxFQUdEcEMsTUFIQyxFQUlEK0ksV0FKQyxFQUtEaEosZUFMQyxhQUtEQSxlQUxDLHVCQUtEQSxlQUFlLENBQUVxRSxZQUxoQixFQU1EcEMsNEJBTkMsRUFPRE8sYUFQQyxDQTVISDtBQXNJQXhHLEVBQUFBLEtBQUssQ0FBQ21NLFNBQU4sQ0FBZ0IsWUFBTTtBQUFFO0FBQ3RCdEQsSUFBQUEsUUFBUSxDQUFDO0FBQ1BULE1BQUFBLHFCQUFxQixFQUFFLElBRGhCO0FBRVBELE1BQUFBLGtCQUFrQixFQUFFLEVBRmI7QUFHUFosTUFBQUEsa0JBQWtCLEVBQUU7QUFIYixLQUFELENBQVI7QUFLRCxHQU5ELEVBTUcsQ0FBQzRGLFVBQUQsQ0FOSDs7QUFRQSxNQUFNbUksMkJBQTJCLEdBQUcsU0FBOUJBLDJCQUE4QixDQUFDcFAsU0FBRCxFQUFZcVAsT0FBWixFQUF3QjtBQUMxRDlNLElBQUFBLFNBQVMsQ0FBQyxVQUFBTSxTQUFTO0FBQUEsNkNBQ2RBLFNBRGM7QUFFakJYLFFBQUFBLHFCQUFxQixrQ0FBT1csU0FBUyxDQUFDWCxxQkFBakIscUNBQTRDbEMsU0FBUyxDQUFDbEQsT0FBdEQsY0FBaUVrRCxTQUFTLENBQUNqRCxLQUEzRSxHQUFxRnNTLE9BQXJGO0FBRko7QUFBQSxLQUFWLENBQVQ7QUFJRCxHQUxEOztBQU9BLE1BQUlsQyxhQUFhLEdBQUdyUCxlQUFILGFBQUdBLGVBQUgsdUJBQUdBLGVBQWUsQ0FBRXFFLFlBQXJDOztBQUVBckksRUFBQUEsS0FBSyxDQUFDbU0sU0FBTixDQUFnQixZQUFNO0FBQUE7O0FBQ3BCLDBCQUFJa0gsYUFBSiwyQ0FBSSxlQUFlalEsTUFBbkIsRUFBMkI7QUFBQSxrQkFDV1ksZUFBZSxJQUFJLEVBRDlCO0FBQUEsVUFDakJrQyxXQURpQixTQUNqQkEsU0FEaUI7QUFBQSxVQUNOSyxjQURNLFNBQ05BLFlBRE07O0FBRXpCM0IsTUFBQUEsT0FBTyxDQUFDb0gsR0FBUix3Q0FBbUQ7QUFBRTlGLFFBQUFBLFNBQVMsRUFBVEEsV0FBRjtBQUFhSyxRQUFBQSxZQUFZLEVBQVpBO0FBQWIsT0FBbkQ7QUFDRDtBQUNGLEdBTEQsRUFLRyxDQUFDOE0sYUFBRCxDQUxIOztBQU9BLE1BQUksb0JBQUNBLGFBQUQsMkNBQUMsZUFBZWpRLE1BQWhCLENBQUosRUFBNEI7QUFBRTtBQUM1QmlRLElBQUFBLGFBQWEsR0FBRyxtQkFBTW5OLFNBQU4sRUFBaEI7QUFDRDs7QUFFRCxNQUFNc1Asc0JBQXNCLHFCQUFHbkMsYUFBSCxtREFBRyxlQUFlNEIsR0FBZixDQUFtQixVQUFDUSxpQkFBRCxFQUFvQjNGLEtBQXBCLEVBQThCO0FBQUE7O0FBQzlFLFFBQU00RixtQkFBbUIsR0FBRyxDQUFBRCxpQkFBaUIsU0FBakIsSUFBQUEsaUJBQWlCLFdBQWpCLHFDQUFBQSxpQkFBaUIsQ0FBRXZTLFNBQW5CLGdGQUE4QkMsWUFBOUIsS0FBOEMsRUFBMUUsQ0FEOEUsQ0FFOUU7O0FBRjhFLGdCQUduRHNTLGlCQUFpQixJQUFJLEVBSDhCO0FBQUEsUUFHdEV6UyxPQUhzRSxTQUd0RUEsT0FIc0U7QUFBQSxRQUc3REMsS0FINkQsU0FHN0RBLEtBSDZEOztBQUk5RSxRQUFNb0IsU0FBUyxHQUFHLENBQUFnRCxnQkFBZ0IsU0FBaEIsSUFBQUEsZ0JBQWdCLFdBQWhCLFlBQUFBLGdCQUFnQixDQUFFaEQsU0FBbEIsTUFBK0I2QixTQUEvQixhQUErQkEsU0FBL0IsdUJBQStCQSxTQUFTLENBQUU3QixTQUExQyxDQUFsQjs7QUFDQSxRQUFNOEksVUFBVSxtQ0FDWGtHLGFBRFc7QUFFZHJRLE1BQUFBLE9BQU8sRUFBUEEsT0FGYztBQUdkcUIsTUFBQUEsU0FBUyxFQUFUQSxTQUhjO0FBSWRwQixNQUFBQSxLQUFLLEVBQUxBO0FBSmMsTUFBaEI7O0FBTUEsUUFBTTBTLDZCQUE2QixtQ0FDOUIvRyw0QkFEOEI7QUFFakNLLE1BQUFBLFlBQVksRUFBRWEsS0FGbUI7QUFHakM0RixNQUFBQSxtQkFBbUIsRUFBbkJBLG1CQUhpQztBQUlqQ3hQLE1BQUFBLFNBQVMsRUFBRWlILFVBSnNCO0FBS2pDOUQsTUFBQUEsY0FBYyxFQUFkQTtBQUxpQyxNQUFuQzs7QUFRQSxRQUFJdU0sMkJBQTJCLEdBQUcsS0FBbEM7O0FBRUEsUUFBSXJOLHlCQUFKLEVBQStCO0FBQzdCcU4sTUFBQUEsMkJBQTJCLEdBQUdyTix5QkFBeUIsQ0FBQ3ZGLE9BQTFCLElBQXFDQSxPQUFyQyxJQUFnRHVGLHlCQUF5QixDQUFDdEYsS0FBMUIsSUFBbUNBLEtBQWpIO0FBQ0Q7O0FBRUQsd0JBQ0Usb0JBQUMsYUFBRCxlQUNNZSxlQUROO0FBRUUsTUFBQSxZQUFZLEVBQUVvSyxZQUZoQjtBQUdFLE1BQUEsWUFBWSxFQUFFMEIsS0FIaEI7QUFJRSxNQUFBLGlCQUFpQixFQUFFLENBQUNySSxhQUp0QjtBQUtFLE1BQUEsU0FBUyxFQUFFeUYsU0FMYjtBQU1FLE1BQUEsa0JBQWtCLEVBQUVvQixtQkFOdEI7QUFPRSxNQUFBLFFBQVEsRUFBRTVGLFFBUFo7QUFRRSxNQUFBLGNBQWMsRUFBRWxELGNBUmxCO0FBU0UsTUFBQSxJQUFJLEVBQUVvRCxLQVRSO0FBVUUsTUFBQSwyQkFBMkIsRUFBRWdOLDJCQVYvQjtBQVdFLE1BQUEsR0FBRyxFQUFFOUYsS0FYUDtBQVlFLE1BQUEsaUJBQWlCLEVBQUU7QUFBQSxlQUFNakgsUUFBUSxDQUFDO0FBQUVOLFVBQUFBLHlCQUF5QixFQUFFO0FBQTdCLFNBQUQsQ0FBZDtBQUFBLE9BWnJCO0FBYUUsTUFBQSw0QkFBNEIsRUFBRXRDLDRCQWJoQztBQWNFLE1BQUEsUUFBUSxFQUFFOEgsUUFkWjtBQWVFLE1BQUEsU0FBUyxFQUFFWixVQWZiO0FBZ0JFLE1BQUEsTUFBTSxFQUFFbkYsU0FoQlYsQ0FpQkU7QUFqQkY7QUFrQkUsTUFBQSw0QkFBNEIsRUFBRTJOLDZCQWxCaEM7QUFtQkUsTUFBQSxvQkFBb0IsRUFBRTdPLG9CQW5CeEI7QUFvQkUsTUFBQSxNQUFNLEVBQUVMLE1BcEJWO0FBcUJFLE1BQUEsU0FBUyxFQUFFTSxTQXJCYjtBQXNCRSxNQUFBLDJCQUEyQixFQUFFdU87QUF0Qi9CLE9BREY7QUEwQkQsR0FuRDhCLENBQS9COztBQXFEQSxNQUFNTyxzQkFBc0IsR0FBRyxTQUF6QkEsc0JBQXlCLEdBQU07QUFDbkMsUUFBSSxDQUFBeE4sWUFBWSxTQUFaLElBQUFBLFlBQVksV0FBWixZQUFBQSxZQUFZLENBQUVqRixNQUFkLElBQXVCLENBQTNCLEVBQThCO0FBQzVCeUYsTUFBQUEsUUFBUSxDQUFDO0FBQUVkLFFBQUFBLGtCQUFrQixFQUFFO0FBQXRCLE9BQUQsQ0FBUjtBQUNELEtBRkQsTUFFTyxJQUFJLENBQUFNLFlBQVksU0FBWixJQUFBQSxZQUFZLFdBQVosWUFBQUEsWUFBWSxDQUFFakYsTUFBZCxNQUF5QixDQUE3QixFQUFnQztBQUNyQ3lGLE1BQUFBLFFBQVEsQ0FBQztBQUFFTixRQUFBQSx5QkFBeUIsRUFBRUYsWUFBWSxDQUFDLENBQUQ7QUFBekMsT0FBRCxDQUFSO0FBQ0Q7QUFDRixHQU5EOztBQVFBLE1BQU15TixlQUFlLEdBQUcsU0FBbEJBLGVBQWtCLFNBQWU7QUFBQSxRQUFadkksS0FBWSxVQUFaQSxLQUFZOztBQUNyQyxRQUFNd0ksUUFBUSxzQkFBT3hJLEtBQVAsQ0FBZDs7QUFFQSxRQUFJeUksZ0JBQWdCLEdBQUcsS0FBdkIsQ0FIcUMsQ0FLckM7O0FBQ0EsUUFBSTVOLHFCQUFKLEVBQTJCO0FBQ3pCNE4sTUFBQUEsZ0JBQWdCLEdBQUd4RyxNQUFNLENBQUN5RyxNQUFQLENBQWM3TixxQkFBZCxFQUFxQzhOLEtBQXJDLENBQTJDLFVBQUFDLFdBQVc7QUFBQSxlQUFJQSxXQUFXLEtBQUssSUFBcEI7QUFBQSxPQUF0RCxDQUFuQjtBQUNEOztBQUVELFFBQUlDLFNBQVMsR0FBRyxJQUFoQjtBQUNBLFFBQUlDLGVBQWUsR0FBRyxFQUF0Qjs7QUFFQSxRQUFJTCxnQkFBSixFQUFzQjtBQUNwQkksTUFBQUEsU0FBUyxnQkFBRyxvQkFBQyxPQUFEO0FBQVMsUUFBQSxFQUFFLHVCQUFnQi9QLFVBQWhCLENBQVg7QUFBeUMsUUFBQSxLQUFLLEVBQUM7QUFBL0MsUUFBWjtBQUNBZ1EsTUFBQUEsZUFBZSxHQUFHLG9CQUFsQjtBQUNELEtBSEQsTUFHTztBQUNMRCxNQUFBQSxTQUFTLGdCQUFHLG9CQUFDLFlBQUQ7QUFBYyxRQUFBLEVBQUUsbUNBQTRCL1AsVUFBNUIsQ0FBaEI7QUFBMEQsUUFBQSxLQUFLLEVBQUM7QUFBaEUsUUFBWjtBQUNBZ1EsTUFBQUEsZUFBZSxHQUFHLHNCQUFsQjtBQUNEOztBQUVELFFBQUl2UCxvQkFBb0IsSUFBSVQsVUFBVSxLQUFLLGlCQUEzQyxFQUE4RDtBQUM1RDBQLE1BQUFBLFFBQVEsQ0FBQ08sSUFBVCxlQUNFLG9CQUFDLFVBQUQ7QUFDRSxRQUFBLEVBQUUsMkJBQW9CalEsVUFBcEIsQ0FESjtBQUVFLFFBQUEsR0FBRyxFQUFDLGlCQUZOO0FBR0UsUUFBQSxPQUFPLEVBQUV3UCxzQkFIWDtBQUlFLFFBQUEsS0FBSyxFQUFFUSxlQUpUO0FBS0Usc0JBQVlBLGVBTGQ7QUFNRSxRQUFBLEtBQUssRUFBRTtBQUFFRSxVQUFBQSxNQUFNLEVBQUU7QUFBVjtBQU5ULFNBUUdILFNBUkgsQ0FERjtBQVlEOztBQUVETCxJQUFBQSxRQUFRLENBQUNPLElBQVQsZUFDRSx1REFDRSxvQkFBQyxrQkFBRCxlQUF3QnJMLGlCQUF4QjtBQUEyQyxNQUFBLFNBQVMsRUFBRVEsZUFBZSxJQUFJekQ7QUFBekUsT0FERixlQUVFLG9CQUFDLFdBQUQ7QUFBYSxNQUFBLEtBQUssRUFBRTRELFdBQXBCO0FBQWlDLE1BQUEsT0FBTyxFQUFFRCxhQUExQztBQUF5RCxNQUFBLElBQUksRUFBRUosaUJBQS9EO0FBQWtGLE1BQUEsT0FBTyxFQUFFQyxrQkFBM0Y7QUFBK0csTUFBQSxTQUFTLEVBQUdDLGVBQWUsSUFBSXpELFNBQTlJO0FBQTBKLE1BQUEsSUFBSSxFQUFFNkQsVUFBaEs7QUFBNEssTUFBQSxXQUFXLEVBQUVDO0FBQXpMLE1BRkYsQ0FERjtBQU9BLFdBQU9pSyxRQUFQO0FBQ0QsR0E1Q0Q7O0FBOENBLHNCQUNFLG9CQUFDLHlCQUFEO0FBQ0UsSUFBQSxVQUFVLEVBQUVsTyxVQURkO0FBRUUsSUFBQSxZQUFZLEVBQUUsc0JBQUF5TCxhQUFhLEVBQUksQ0FDN0I7QUFDRCxLQUpIO0FBS0UsSUFBQSxLQUFLLEVBQUU5TSxhQUFGLGFBQUVBLGFBQUYsdUJBQUVBLGFBQWEsQ0FBRXFOLEtBTHhCO0FBTUUsSUFBQSxVQUFVLEVBQUVqUyxhQUFhLENBQUM0RSxhQUFELGFBQUNBLGFBQUQsdUJBQUNBLGFBQWEsQ0FBRW1PLFVBQWhCLENBTjNCO0FBT0UsSUFBQSxlQUFlLEVBQUVyTTtBQVBuQixrQkFTRSxvQkFBQyxJQUFEO0FBQ0UsSUFBQSxFQUFFLDJCQUFvQmxELE9BQXBCLENBREo7QUFFRSxJQUFBLEtBQUssRUFBRWlKLGNBRlQ7QUFHRSxJQUFBLGFBQWEsRUFBRTlCLGNBQWMsR0FBRyxXQUhsQztBQUlFLElBQUEsS0FBSyxFQUFFZ0IsS0FKVDtBQUtFLElBQUEsT0FBTyxFQUFFbEksT0FMWDtBQU1FLElBQUEsT0FBTyxFQUFFbUksT0FOWDtBQU9FLElBQUEsT0FBTyxFQUFFQyxPQVBYO0FBUUUsSUFBQSxRQUFRLEVBQUUvRSxRQVJaO0FBU0UsSUFBQSxTQUFTLEVBQUVnRixTQVRiO0FBVUUsSUFBQSxVQUFVLEVBQUVFLFVBVmQ7QUFXRSxJQUFBLFdBQVcsRUFBRWpGLFdBWGY7QUFZRSxJQUFBLFlBQVksRUFBRWtGLFlBWmhCO0FBYUUsSUFBQSxZQUFZLEVBQUVGLFlBYmhCO0FBY0UsSUFBQSxlQUFlLEVBQUVHLGVBZG5CO0FBZUUsSUFBQSxrQkFBa0IsRUFBRWpCLG9CQWZ0QjtBQWdCRSxJQUFBLGtCQUFrQixNQWhCcEI7QUFpQkUsSUFBQSxXQUFXLEVBQUVFLFdBakJmO0FBa0JFLElBQUEsVUFBVSxFQUFFaEgsVUFBVSxHQUFHO0FBQUEsYUFBTUEsVUFBVSxDQUFDSCxFQUFELEVBQUsyRyxjQUFMLENBQWhCO0FBQUEsS0FBSCxHQUEwQyxJQWxCbEU7QUFtQkUsSUFBQSxRQUFRLEVBQUVrQyxVQUFVLElBQUlDLGVBbkIxQjtBQW9CRSxJQUFBLEtBQUssRUFBRTFHLFNBQVMsSUFBSSxDQUFDVCxrQkFwQnZCO0FBcUJFLElBQUEsVUFBVSxFQUFFO0FBQUEsYUFBTXNCLFFBQVEsQ0FBQztBQUFFbEIsUUFBQUEsV0FBVyxFQUFFO0FBQWYsT0FBRCxDQUFkO0FBQUEsS0FyQmQ7QUFzQkUsSUFBQSxlQUFlLEVBQUVtTztBQXRCbkIsa0JBd0JFO0FBQUssSUFBQSxFQUFFLEVBQUM7QUFBUixLQUNHTixzQkFESCxDQXhCRixDQVRGLGVBcUNFLG9CQUFDLGtCQUFEO0FBQ0UsSUFBQSxVQUFVLEVBQUVuUCxVQURkO0FBRUUsSUFBQSxJQUFJLEVBQUUwQixrQkFGUjtBQUdFLElBQUEsT0FBTyxFQUFFO0FBQUEsYUFBTWMsUUFBUSxDQUFDO0FBQUVkLFFBQUFBLGtCQUFrQixFQUFFO0FBQXRCLE9BQUQsQ0FBZDtBQUFBLEtBSFg7QUFJRSxJQUFBLFlBQVksRUFBRU0sWUFKaEI7QUFLRSxJQUFBLHFCQUFxQixFQUFFRCxxQkFMekI7QUFNRSxJQUFBLGFBQWEsRUFBRSx1QkFBQ25GLEtBQUQ7QUFBQSxhQUFXNEYsUUFBUSxDQUFDO0FBQ2pDTixRQUFBQSx5QkFBeUIsRUFBRXRGLEtBRE07QUFFakM4RSxRQUFBQSxrQkFBa0IsRUFBRTtBQUZhLE9BQUQsQ0FBbkI7QUFBQTtBQU5qQixJQXJDRixDQURGO0FBbUREO0FBRUQvQyxhQUFhLENBQUN3UixTQUFkLEdBQTBCO0FBQ3hCO0FBQ0F2UixFQUFBQSxNQUFNLEVBQUVoRixTQUFTLENBQUN3VyxNQUFWLENBQWlCQyxVQUZEOztBQUd4QjtBQUNBeFIsRUFBQUEsY0FBYyxFQUFFakYsU0FBUyxDQUFDMFcsTUFKRjs7QUFLeEI7QUFDQXhSLEVBQUFBLFNBQVMsRUFBRWxGLFNBQVMsQ0FBQ3dXLE1BTkc7O0FBT3hCO0FBQ0FyUixFQUFBQSxPQUFPLEVBQUVuRixTQUFTLENBQUMyVyxNQUFWLENBQWlCRixVQVJGOztBQVN4QjtBQUNBclIsRUFBQUEsT0FBTyxFQUFFcEYsU0FBUyxDQUFDMFcsTUFWSzs7QUFXeEI7QUFDQXJSLEVBQUFBLGtCQUFrQixFQUFFckYsU0FBUyxDQUFDNFcsSUFaTjs7QUFheEI7QUFDQXRSLEVBQUFBLFdBQVcsRUFBRXRGLFNBQVMsQ0FBQzZXLElBQVYsQ0FBZUosVUFkSjs7QUFleEI7QUFDQWxSLEVBQUFBLGNBQWMsRUFBRXZGLFNBQVMsQ0FBQzZXLElBaEJGOztBQWlCeEI7QUFDQXJSLEVBQUFBLFlBQVksRUFBRXhGLFNBQVMsQ0FBQ3dXLE1BbEJBOztBQW1CeEI7QUFDQS9RLEVBQUFBLGFBQWEsRUFBRXpGLFNBQVMsQ0FBQ3dXLE1BcEJEOztBQXFCeEI7QUFDQTlRLEVBQUFBLFVBQVUsRUFBRTFGLFNBQVMsQ0FBQzBXLE1BdEJFOztBQXVCeEI7QUFDQS9RLEVBQUFBLEVBQUUsRUFBRTNGLFNBQVMsQ0FBQ3dXLE1BeEJVOztBQXlCeEI7QUFDQTVRLEVBQUFBLElBQUksRUFBRTVGLFNBQVMsQ0FBQzZXLElBQVYsQ0FBZUosVUExQkc7O0FBMkJ4QjtBQUNBNVEsRUFBQUEsWUFBWSxFQUFFN0YsU0FBUyxDQUFDd1csTUE1QkE7O0FBNkJ4QjtBQUNBMVEsRUFBQUEsVUFBVSxFQUFFOUYsU0FBUyxDQUFDNlcsSUE5QkU7O0FBK0J4QjtBQUNGO0FBQ0E7QUFDQTtBQUNFOVEsRUFBQUEsZUFBZSxFQUFFL0YsU0FBUyxDQUFDNlcsSUFuQ0g7O0FBb0N4QjtBQUNBN1EsRUFBQUEsNEJBQTRCLEVBQUVoRyxTQUFTLENBQUMwVyxNQXJDaEI7QUFzQ3hCelEsRUFBQUEsU0FBUyxFQUFFakcsU0FBUyxDQUFDOFcsS0FBVixDQUFnQjtBQUN6QjtBQUNBMVMsSUFBQUEsU0FBUyxFQUFFcEUsU0FBUyxDQUFDd1csTUFBVixDQUFpQkMsVUFGSDs7QUFHekI7QUFDQTFULElBQUFBLE9BQU8sRUFBRS9DLFNBQVMsQ0FBQytXLFNBQVYsQ0FBb0IsQ0FBQy9XLFNBQVMsQ0FBQzJXLE1BQVgsRUFBbUIzVyxTQUFTLENBQUN3VyxNQUE3QixDQUFwQixFQUEwREMsVUFKMUM7O0FBS3pCO0FBQ0F6VCxJQUFBQSxLQUFLLEVBQUVoRCxTQUFTLENBQUMrVyxTQUFWLENBQW9CLENBQUMvVyxTQUFTLENBQUMyVyxNQUFYLEVBQW1CM1csU0FBUyxDQUFDd1csTUFBN0IsQ0FBcEIsRUFBMERDO0FBTnhDLEdBQWhCLENBdENhOztBQThDeEI7QUFDQXRTLEVBQUFBLFFBQVEsRUFBRW5FLFNBQVMsQ0FBQzhXLEtBQVYsQ0FBZ0I7QUFDeEI7QUFDQTNRLElBQUFBLFVBQVUsRUFBRW5HLFNBQVMsQ0FBQ3dXLE1BQVYsQ0FBaUJDLFVBRkw7O0FBR3hCO0FBQ0F2USxJQUFBQSxLQUFLLEVBQUVsRyxTQUFTLENBQUN3VyxNQUFWLENBQWlCQyxVQUpBOztBQUt4QjtBQUNBclEsSUFBQUEsVUFBVSxFQUFFcEcsU0FBUyxDQUFDd1csTUFBVixDQUFpQkMsVUFOTDs7QUFPeEI7QUFDQXBRLElBQUFBLHFCQUFxQixFQUFFckcsU0FBUyxDQUFDd1csTUFBVixDQUFpQkM7QUFSaEIsR0FBaEIsQ0EvQ2M7O0FBeUR4QjtBQUNBblEsRUFBQUEsWUFBWSxFQUFFdEcsU0FBUyxDQUFDZ1gsR0ExREE7O0FBMkR4QjtBQUNBelEsRUFBQUEsYUFBYSxFQUFFdkcsU0FBUyxDQUFDMFcsTUE1REQ7O0FBNkR4QjtBQUNBbFEsRUFBQUEsTUFBTSxFQUFFeEcsU0FBUyxDQUFDd1csTUFBVixDQUFpQkMsVUE5REQ7O0FBK0R4QjtBQUNBUSxFQUFBQSxzQkFBc0IsRUFBRWpYLFNBQVMsQ0FBQzZXLElBaEVWOztBQWlFeEI7QUFDQUssRUFBQUEscUJBQXFCLEVBQUVsWCxTQUFTLENBQUM2VyxJQWxFVDs7QUFtRXhCO0FBQ0FwUSxFQUFBQSxvQkFBb0IsRUFBRXpHLFNBQVMsQ0FBQzZXLElBcEVSOztBQXFFeEI7QUFDQW5RLEVBQUFBLHFCQUFxQixFQUFFMUcsU0FBUyxDQUFDNlcsSUF0RVQ7O0FBdUV4QjtBQUNBbFEsRUFBQUEsY0FBYyxFQUFFM0csU0FBUyxDQUFDNlcsSUF4RUY7O0FBeUV4QjtBQUNBalEsRUFBQUEsZUFBZSxFQUFFNUcsU0FBUyxDQUFDNlcsSUExRUg7O0FBMkV4QjtBQUNBaFEsRUFBQUEsb0JBQW9CLEVBQUU3RyxTQUFTLENBQUM2VyxJQTVFUjs7QUE2RXhCO0FBQ0E5UCxFQUFBQSxLQUFLLEVBQUUvRyxTQUFTLENBQUN3VyxNQUFWLENBQWlCQyxVQTlFQTs7QUErRXhCO0FBQ0EzUCxFQUFBQSxTQUFTLEVBQUU5RyxTQUFTLENBQUM2VyxJQWhGRzs7QUFpRnhCO0FBQ0E1UCxFQUFBQSxnQkFBZ0IsRUFBRWpILFNBQVMsQ0FBQzZXLElBbEZKOztBQW1GeEI7QUFDQTdQLEVBQUFBLG1CQUFtQixFQUFFaEgsU0FBUyxDQUFDNlcsSUFBVixDQUFlSjtBQXBGWixDQUExQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgeyBjb3JlLCBTZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyIH0gZnJvbSAnc2NyaXB0dXJlLXJlc291cmNlcy1yY2wnXG5pbXBvcnQgdXNmbWpzIGZyb20gJ3VzZm0tanMnXG5pbXBvcnQgeyB1c2VFZGl0IH0gZnJvbSAnZ2l0ZWEtcmVhY3QtdG9vbGtpdCdcbmltcG9ydCB7IEljb25CdXR0b24gfSBmcm9tICdAbXVpL21hdGVyaWFsJ1xuaW1wb3J0IHsgUnhMaW5rMiwgUnhMaW5rQnJlYWsyIH0gZnJvbSAncmVhY3QtaWNvbnMvcngnXG5pbXBvcnQge1xuICBDYXJkLFxuICBFcnJvckRpYWxvZyxcbiAgRVJST1JfU1RBVEUsXG4gIE1BTklGRVNUX05PVF9MT0FERURfRVJST1IsXG4gIFVwZGF0ZUJyYW5jaEJ1dHRvbixcbiAgdXNlQnJhbmNoTWVyZ2VyLFxuICB1c2VDYXJkU3RhdGUsXG4gIHVzZUNvbnRlbnRVcGRhdGVQcm9wcyxcbiAgdXNlTWFzdGVyTWVyZ2VQcm9wcyxcbiAgdXNlVXNlckJyYW5jaCxcbn0gZnJvbSAndHJhbnNsYXRpb24taGVscHMtcmNsJ1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIH0gZnJvbSAndXctcXVvdGUtaGVscGVycydcbmltcG9ydCB7IEFsaWdubWVudEhlbHBlcnMsIFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMgfSBmcm9tICd3b3JkLWFsaWduZXItcmNsJ1xuaW1wb3J0ICogYXMgaXNFcXVhbCBmcm9tICdkZWVwLWVxdWFsJ1xuaW1wb3J0IHsgZ2V0VmVyc2VzIH0gZnJvbSAnYmlibGUtcmVmZXJlbmNlLXJhbmdlJ1xuaW1wb3J0IHsgU2NyaXB0dXJlUGFuZSwgU2NyaXB0dXJlU2VsZWN0b3IgfSBmcm9tICcuLidcbmltcG9ydCB7IHVzZVNjcmlwdHVyZVNldHRpbmdzIH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlU2NyaXB0dXJlU2V0dGluZ3MnXG5pbXBvcnQge1xuICBjbGVhbnVwVmVyc2VPYmplY3RzLFxuICBmaXhPY2N1cnJlbmNlLFxuICBnZXRCb29rTmFtZUZyb21Vc2ZtRmlsZU5hbWUsXG4gIGdldFJlc291cmNlTGluayxcbiAgZ2V0UmVzb3VyY2VNZXNzYWdlLFxuICBnZXRTY3JpcHR1cmVWZXJzaW9uU2V0dGluZ3MsXG4gIGlzT3JpZ2luYWxCaWJsZSxcbn0gZnJvbSAnLi4vLi4vdXRpbHMvU2NyaXB0dXJlU2V0dGluZ3MnXG5pbXBvcnQgeyBkZWxheSB9IGZyb20gJy4uLy4uL3V0aWxzL2RlbGF5J1xuaW1wb3J0IHsgYXJlTWFwc1RoZVNhbWUgfSBmcm9tICcuLi8uLi91dGlscy9tYXBzJ1xuaW1wb3J0IHsgVGl0bGUgfSBmcm9tICcuLi9TY3JpcHR1cmVQYW5lL3N0eWxlZCdcbmltcG9ydCB7XG4gIE5UX09SSUdfTEFORyxcbiAgT1JJR0lOQUxfU09VUkNFLFxuICBPVF9PUklHX0xBTkcsXG59IGZyb20gJy4uLy4uL3V0aWxzJ1xuaW1wb3J0IHsgVmVyc2VTZWxlY3RvclBvcHVwIH0gZnJvbSAnLi4vVmVyc2VTZWxlY3RvclBvcHVwJ1xuXG5jb25zdCBLRVlfRk9OVF9TSVpFX0JBU0UgPSAnc2NyaXB0dXJlUGFuZUZvbnRTaXplXydcbmNvbnN0IGxhYmVsID0gJ1ZlcnNpb24nXG5jb25zdCBzdHlsZSA9IHsgbWFyZ2luVG9wOiAnMTZweCcsIHdpZHRoOiAnNTAwcHgnIH1cblxuLyoqXG4gKiBjcmVhdGUgYSBzaG9ydCBjb21wYXJpc29uIHZlcnNlIHJlZiBvYmplY3Qgd2l0aG91dCBhbGwgdGhlIHZlcnNlRGF0YVxuICogQHBhcmFtIHZlcnNlUmVmXG4gKi9cbmZ1bmN0aW9uIGNvbXBhcmVPYmplY3QodmVyc2VSZWYpIHtcbiAgY29uc3Qge1xuICAgIGNoYXB0ZXIsXG4gICAgdmVyc2UsXG4gICAgdmVyc2VEYXRhLFxuICB9ID0gdmVyc2VSZWYgfHwge31cbiAgY29uc3QgdmVyc2VPYmplY3RzID0gdmVyc2VEYXRhPy52ZXJzZU9iamVjdHM/Lmxlbmd0aCA/IEpTT04uc3RyaW5naWZ5KHZlcnNlRGF0YS52ZXJzZU9iamVjdHMpIDogJydcbiAgcmV0dXJuIHtcbiAgICBjaGFwdGVyLFxuICAgIHZlcnNlLFxuICAgIHZlcnNlT2JqZWN0cyxcbiAgfVxufVxuXG4vKipcbiAqIGNvbXBhcmUgdHdvIHZlcnNlIHJlZnMgdG8gc2VlIGlmIHRoZXkgYXJlIHN1YnN0YW50aWFsbHkgc2ltaWxhclxuICogQHBhcmFtIHZlcnNlc0ZvclJlZjFcbiAqIEBwYXJhbSB2ZXJzZXNGb3JSZWYyXG4gKi9cbmZ1bmN0aW9uIGFyZVZlcnNlc1NhbWUodmVyc2VzRm9yUmVmMTogYW55W10sIHZlcnNlc0ZvclJlZjI6IGFueVtdKSB7XG4gIHZlcnNlc0ZvclJlZjEgPSB2ZXJzZXNGb3JSZWYxIHx8IFtdXG4gIHZlcnNlc0ZvclJlZjIgPSB2ZXJzZXNGb3JSZWYyIHx8IFtdXG4gIGxldCBhcmVTYW1lID0gZmFsc2VcblxuICBpZiAodmVyc2VzRm9yUmVmMS5sZW5ndGggPT09IHZlcnNlc0ZvclJlZjIubGVuZ3RoKSB7XG4gICAgYXJlU2FtZSA9IHRydWVcblxuICAgIGZvciAobGV0IGkgPSAwLCBsPSB2ZXJzZXNGb3JSZWYxLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgY29uc3QgdmVyc2UxID0gY29tcGFyZU9iamVjdCh2ZXJzZXNGb3JSZWYxW2ldKVxuICAgICAgY29uc3QgdmVyc2UyID0gY29tcGFyZU9iamVjdCh2ZXJzZXNGb3JSZWYyW2ldKVxuICAgICAgYXJlU2FtZSA9IGlzRXF1YWwodmVyc2UxLCB2ZXJzZTIpXG5cbiAgICAgIGlmICghYXJlU2FtZSkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhcmVTYW1lXG59XG5cbi8qKlxuICogZ2V0IHRoZSBVU0ZNIGZvciBib29rSWQgZnJvbSBzY3JpcHR1cmVDb25maWcuXG4gKiBAcGFyYW0ge29iamVjdH0gc2NyaXB0dXJlQ29uZmlnXG4gKiBAcGFyYW0ge3N0cmluZ30gYm9va0lkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRDdXJyZW50Qm9vayA9IChzY3JpcHR1cmVDb25maWcsIGJvb2tJZCkgPT4ge1xuICBjb25zdCBsYXRlc3RCaWJsZSA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0ZT8ucmVzb3VyY2U/LnByb2plY3RJZFxuICBjb25zdCBmaWxlbmFtZSA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0ZT8ucmVzb3VyY2U/Lm5hbWUgLy8gTGlrZSBcIjU3LVRJVC51c2ZtXCJcbiAgbGV0IGlzQm9va1ZhbGlkID0gZmFsc2VcbiAgY29uc3QgYm9va05hbWUgPSBnZXRCb29rTmFtZUZyb21Vc2ZtRmlsZU5hbWUoZmlsZW5hbWUpXG4gIGlzQm9va1ZhbGlkID0gYm9va05hbWU/LnRvTG93ZXJDYXNlKCk/LmluY2x1ZGVzKGJvb2tJZClcbiAgaWYgKCFpc0Jvb2tWYWxpZCkge1xuICAgIGNvbnNvbGUud2FybihgQ3VycmVudCBib29rSWQgaXMgJHtib29rSWR9IGFuZCBVU0ZNIGZpbGUgaXMgJHtmaWxlbmFtZX1gKVxuICB9XG4gIGlmIChsYXRlc3RCaWJsZT8udG9Mb3dlckNhc2UoKSAhPT0gYm9va0lkKSB7XG4gICAgY29uc29sZS53YXJuKGBDdXJyZW50IGJvb2tJZCBpcyAke2Jvb2tJZH0gYnV0IGZldGNoZWQgcHJvamVjdElkIGlzICR7bGF0ZXN0QmlibGV9YClcbiAgICBpc0Jvb2tWYWxpZCA9IGZhbHNlXG4gIH1cbiAgaWYgKGlzQm9va1ZhbGlkKSB7XG4gICAgY29uc3QgYmlibGVVc2ZtID0gc2NyaXB0dXJlQ29uZmlnPy5iaWJsZVVzZm07XG4gICAgaWYgKGJpYmxlVXNmbSkge1xuICAgICAgcmV0dXJuIGJpYmxlVXNmbVxuICAgIH1cbiAgICBjb25zb2xlLmVycm9yKGBnZXRDdXJyZW50Qm9vaygpIC0gQmlibGUgVVNGTSBtaXNzaW5nYClcbiAgfVxuICBjb25zb2xlLmVycm9yKGBnZXRDdXJyZW50Qm9vaygpIC0gRXhwZWN0ZWQgJHtib29rSWR9IGJ1dCBnb3QgZmlsZSAke2ZpbGVuYW1lfWApXG4gIHJldHVybiBudWxsXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNjcmlwdHVyZUNhcmQoe1xuICBhcHBSZWYsXG4gIGF1dGhlbnRpY2F0aW9uLFxuICBib29rSW5kZXgsXG4gIGNhcmROdW0sXG4gIGNsYXNzZXMsXG4gIGRpc2FibGVXb3JkUG9wb3ZlcixcbiAgZ2V0TGFuZ3VhZ2UsXG4gIGdldExleGljb25EYXRhLFxuICBncmVla1JlcG9VcmwsXG4gIGhlYnJld1JlcG9VcmwsXG4gIGh0dHBDb25maWcsXG4gIGlkLFxuICBpc05ULFxuICBsb2dnZWRJblVzZXIsXG4gIG9uTWluaW1pemUsXG4gIG9uUmVzb3VyY2VFcnJvcixcbiAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyxcbiAgcmVmZXJlbmNlLFxuICByZXNvdXJjZToge1xuICAgIG93bmVyLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgcmVzb3VyY2VJZCxcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gIH0sXG4gIHJlc291cmNlTGluayxcbiAgc2VsZWN0ZWRRdW90ZSxcbiAgc2VydmVyLFxuICBzZXRDYXJkc0xvYWRpbmdNZXJnZSxcbiAgc2V0Q2FyZHNMb2FkaW5nVXBkYXRlLFxuICBzZXRDYXJkc1NhdmluZyxcbiAgc2V0U2F2ZWRDaGFuZ2VzLFxuICBzZXRXb3JkQWxpZ25lclN0YXR1cyxcbiAgdHJhbnNsYXRlLFxuICB0aXRsZSxcbiAgdXNlVXNlckxvY2FsU3RvcmFnZSxcbiAgdXBkYXRlTWVyZ2VTdGF0ZSxcbn0pIHtcbiAgY29uc3QgYm9va0lkID0gcmVmZXJlbmNlPy5wcm9qZWN0SWRcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV9dID0gUmVhY3QudXNlU3RhdGUoe1xuICAgIGNoZWNrRm9yRWRpdEJyYW5jaDogMCxcbiAgICBjdXJyZW50UmVmZXJlbmNlOiBudWxsLFxuICAgIGVkaXRCcmFuY2hSZWFkeTogZmFsc2UsXG4gICAgaGF2ZVVuc2F2ZWRDaGFuZ2VzOiBmYWxzZSxcbiAgICBsYXN0U2VsZWN0ZWRRdW90ZTogbnVsbCxcbiAgICByZWFkeUZvckZldGNoOiBmYWxzZSxcbiAgICByZWY6IGFwcFJlZixcbiAgICBzYXZlQ2xpY2tlZDogZmFsc2UsXG4gICAgc2F2ZUNvbnRlbnQ6IG51bGwsXG4gICAgc2VsZWN0aW9uczogbmV3IE1hcCgpLFxuICAgIHNob3dBbGlnbm1lbnRQb3B1cDogZmFsc2UsXG4gICAgc3RhcnRTYXZlOiBmYWxzZSxcbiAgICB1cmxFcnJvcjogbnVsbCxcbiAgICB1c2luZ1VzZXJCcmFuY2g6IGZhbHNlLFxuICAgIHVuc2F2ZWRDaGFuZ2VzTGlzdDoge30sXG4gICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzOiBudWxsLFxuICAgIHZlcnNlc0ZvclJlZjogbnVsbCxcbiAgICB2ZXJzZU9iamVjdHNNYXA6IG5ldyBNYXAoKSxcbiAgICB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiBudWxsLFxuICB9KVxuICBjb25zdCB7XG4gICAgY2hlY2tGb3JFZGl0QnJhbmNoLFxuICAgIGN1cnJlbnRSZWZlcmVuY2UsXG4gICAgZWRpdEJyYW5jaFJlYWR5LFxuICAgIGhhdmVVbnNhdmVkQ2hhbmdlcyxcbiAgICBsYXN0U2VsZWN0ZWRRdW90ZSxcbiAgICByZWFkeUZvckZldGNoLFxuICAgIHJlZixcbiAgICBzYXZlQ2xpY2tlZCxcbiAgICBzYXZlQ29udGVudCxcbiAgICBzZWxlY3Rpb25zLFxuICAgIHNob3dBbGlnbm1lbnRQb3B1cCxcbiAgICBzdGFydFNhdmUsXG4gICAgdXJsRXJyb3IsXG4gICAgdXNpbmdVc2VyQnJhbmNoLFxuICAgIHVuc2F2ZWRDaGFuZ2VzTGlzdCxcbiAgICB2ZXJzZU9iamVjdHNNYXAsXG4gICAgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCxcbiAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXMsXG4gICAgdmVyc2VzRm9yUmVmLFxuICB9ID0gc3RhdGVcblxuICBjb25zdCBbZm9udFNpemUsIHNldEZvbnRTaXplXSA9IHVzZVVzZXJMb2NhbFN0b3JhZ2UoS0VZX0ZPTlRfU0laRV9CQVNFICsgY2FyZE51bSwgMTAwKVxuICBjb25zdCBpc05UXyA9IGlzTlQoYm9va0lkKVxuXG4gIGZ1bmN0aW9uIHNldFN0YXRlKG5ld1N0YXRlKSB7XG4gICAgc2V0U3RhdGVfKHByZXZTdGF0ZSA9PiAoeyAuLi5wcmV2U3RhdGUsIC4uLm5ld1N0YXRlIH0pKVxuICB9XG5cbiAgaHR0cENvbmZpZyA9IHtcbiAgICAuLi5odHRwQ29uZmlnLFxuICAgIGNhY2hlOiB7IG1heEFnZTogMCB9LFxuICAgIG5vQ2FjaGU6IHRydWUsXG4gIH0gLy8gZGlzYWJsZSBodHRwIGNhY2hpbmdcblxuICBjb25zdCB7XG4gICAgaXNOZXdUZXN0YW1lbnQsXG4gICAgc2NyaXB0dXJlQ29uZmlnLFxuICAgIHNldFNjcmlwdHVyZSxcbiAgICBzY3JpcHR1cmVTZXR0aW5ncyxcbiAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdCxcbiAgfSA9IHVzZVNjcmlwdHVyZVNldHRpbmdzKHtcbiAgICBhcHBSZWY6IHJlZixcbiAgICBjYXJkTnVtLFxuICAgIGRpc2FibGVXb3JkUG9wb3ZlcixcbiAgICBncmVla1JlcG9VcmwsXG4gICAgaGVicmV3UmVwb1VybCxcbiAgICBodHRwQ29uZmlnLFxuICAgIGlzTlQsXG4gICAgbGFuZ3VhZ2VJZCxcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gICAgb3duZXIsXG4gICAgcmVhZHlGb3JGZXRjaCxcbiAgICByZWZlcmVuY2U6IGN1cnJlbnRSZWZlcmVuY2UgfHwgcmVmZXJlbmNlLFxuICAgIHJlc291cmNlSWQsXG4gICAgcmVzb3VyY2VMaW5rLFxuICAgIHNldFVybEVycm9yOiAoZXJyb3IpID0+IHNldFN0YXRlKHsgdXJsRXJyb3I6IGVycm9yIH0pLFxuICAgIHNlcnZlcixcbiAgICB0aXRsZSxcbiAgICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxuICAgIHdob2xlQm9vazogdHJ1ZSxcbiAgfSlcblxuICBjb25zdCBmZXRjaGVkUmVzb3VyY2UgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdGVcbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCByZXBvID0gYCR7c2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ubGFuZ3VhZ2VJZH1fJHtzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5wcm9qZWN0SWR9YFxuICBjb25zdCByZWZlcmVuY2VfID0gc2NyaXB0dXJlQ29uZmlnPy5yZWZlcmVuY2UgfHwgbnVsbFxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgY2FyZFJlc291cmNlSWQgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5wcm9qZWN0SWQgfHwgcmVzb3VyY2VJZFxuICAvLyBAdHMtaWdub3JlXG4gIGxldCByZWZfID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucmVmIHx8IGFwcFJlZlxuICBjb25zdCBjYW5Vc2VFZGl0QnJhbmNoID0gISEobG9nZ2VkSW5Vc2VyICYmIGF1dGhlbnRpY2F0aW9uICYmIChyZXNvdXJjZUlkICE9PSBPUklHSU5BTF9TT1VSQ0UpICYmIC8vIFRSSUNLWSBpZiBub3Qgb3JpZ2luYWwgbGFuZ3VhZ2UgYW5kIHdlIGhhdmUgbG9naW4gZGF0YSwgdGhlbiB3ZSBjYW4gdXNlIHRoZSBlZGl0IGJyYW5jaFxuICAgICgocmVmXyA9PT0gJ21hc3RlcicpIHx8IChyZWZfLmluY2x1ZGVzKGxvZ2dlZEluVXNlcikpKSkgLy8gYWxzbyBtYWtlIHN1cmUgbm90IGEgdmVyc2lvbiB0YWdcblxuICBjb25zdCB7XG4gICAgc3RhdGU6IHtcbiAgICAgIGJyYW5jaERldGVybWluZWQsXG4gICAgICB1c2VyRWRpdEJyYW5jaE5hbWUsXG4gICAgICB1c2luZ1VzZXJCcmFuY2g6IF91c2luZ1VzZXJCcmFuY2gsXG4gICAgICB3b3JraW5nUmVzb3VyY2VCcmFuY2gsXG4gICAgfSxcbiAgICBhY3Rpb25zOiB7XG4gICAgICBzdGFydEVkaXQ6IHN0YXJ0RWRpdEJyYW5jaCxcbiAgICAgIGZpbmlzaEVkaXQsXG4gICAgfSxcbiAgfSA9IHVzZVVzZXJCcmFuY2goe1xuICAgIGFwcFJlZixcbiAgICBhdXRoZW50aWNhdGlvbjogY2FuVXNlRWRpdEJyYW5jaCA/IGF1dGhlbnRpY2F0aW9uIDogbnVsbCxcbiAgICBib29rSWQsXG4gICAgY2FyZElkOiBpZCxcbiAgICBjYXJkUmVzb3VyY2VJZCxcbiAgICBjaGVja0ZvckVkaXRCcmFuY2gsXG4gICAgbGFuZ3VhZ2VJZCxcbiAgICBsb2dnZWRJblVzZXI6IGNhblVzZUVkaXRCcmFuY2ggPyBsb2dnZWRJblVzZXIgOiBudWxsLFxuICAgIG93bmVyLFxuICAgIG9uUmVzb3VyY2VFcnJvcixcbiAgICBzZXJ2ZXIsXG4gICAgdXNlVXNlckxvY2FsU3RvcmFnZSxcbiAgfSlcblxuICBjb25zdCBfdXNlQnJhbmNoTWVyZ2VyID0gdXNlQnJhbmNoTWVyZ2VyKHsgc2VydmVyLCBvd25lciwgcmVwbywgdXNlckJyYW5jaDogdXNlckVkaXRCcmFuY2hOYW1lLCB0b2tlbmlkOiBhdXRoZW50aWNhdGlvbj8udG9rZW4/LnNoYTEgfSlcbiAgY29uc3Qge1xuICAgIHN0YXRlOiB7XG4gICAgICBtZXJnZVN0YXR1czogbWVyZ2VUb01hc3RlcixcbiAgICAgIHVwZGF0ZVN0YXR1czogbWVyZ2VGcm9tTWFzdGVyLFxuICAgIH0sXG4gIH0gPSBfdXNlQnJhbmNoTWVyZ2VyXG5cbiAgY29uc3QgdXBkYXRlQnV0dG9uUHJvcHMgPSB1c2VDb250ZW50VXBkYXRlUHJvcHMoe1xuICAgIGlzU2F2aW5nOiBzdGFydFNhdmUsXG4gICAgdXNlQnJhbmNoTWVyZ2VyOiBfdXNlQnJhbmNoTWVyZ2VyLFxuICAgIG9uVXBkYXRlOiAoKSA9PiB7XG4gICAgICBkZWxheSg1MDApLnRoZW4oKCkgPT4gc2NyaXB0dXJlQ29uZmlnPy5yZWxvYWRSZXNvdXJjZSgpKVxuICAgIH0sXG4gIH0pXG5cbiAgY29uc3Qge1xuICAgIGNhbGxVcGRhdGVVc2VyQnJhbmNoLFxuICAgIGlzRXJyb3JEaWFsb2dPcGVuLFxuICAgIG9uQ2xvc2VFcnJvckRpYWxvZyxcbiAgICBpc0xvYWRpbmc6IGlzVXBkYXRlTG9hZGluZyxcbiAgICBkaWFsb2dNZXNzYWdlLFxuICAgIGRpYWxvZ1RpdGxlLFxuICAgIGRpYWxvZ0xpbmssXG4gICAgZGlhbG9nTGlua1Rvb2x0aXAsXG4gIH0gPSB1cGRhdGVCdXR0b25Qcm9wc1xuXG4gIGNvbnN0IG9uTWVyZ2UgPSAoKSA9PiB7XG4gICAgZmluaXNoRWRpdCgpXG4gICAgY29uc29sZS5sb2coYG9uTWVyZ2UoKSBzd2l0Y2hpbmcgYmFjayB0byBtYXN0ZXIgYWZ0ZXIgbWVyZ2UgYXBwUmVmOmAsIGFwcFJlZilcbiAgICBzZXRTdGF0ZSh7XG4gICAgICByZWFkeUZvckZldGNoOiBmYWxzZSxcbiAgICAgIHJlZjogYXBwUmVmLFxuICAgIH0pXG4gICAgZGVsYXkoNTAwKS50aGVuKCgpID0+IHtcbiAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgY2hlY2tGb3JFZGl0QnJhbmNoOiBjaGVja0ZvckVkaXRCcmFuY2ggKyAxLCAvLyB0cmlnZ2VyIHJlY2hlY2sgb2YgdXNlciBicmFuY2ggd2hpY2ggd2lsbCBzd2l0Y2ggdGhlIGJyYW5jaCBiYWNrIHRvIG1hc3RlclxuICAgICAgICByZWFkeUZvckZldGNoOiBmYWxzZSxcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHsgaXNMb2FkaW5nOiBpc01lcmdlTG9hZGluZywgY2FsbE1lcmdlVXNlckJyYW5jaCB9ID0gdXNlTWFzdGVyTWVyZ2VQcm9wcyh7XG4gICAgaXNTYXZpbmc6IHN0YXJ0U2F2ZSxcbiAgICB1c2VCcmFuY2hNZXJnZXI6IF91c2VCcmFuY2hNZXJnZXIsXG4gICAgb25NZXJnZSxcbiAgfSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjYXJkUmVzb3VyY2VJZCkge1xuICAgICAgdXBkYXRlTWVyZ2VTdGF0ZSAmJiB1cGRhdGVNZXJnZVN0YXRlKFxuICAgICAgICBjYXJkUmVzb3VyY2VJZCxcbiAgICAgICAgbWVyZ2VGcm9tTWFzdGVyLFxuICAgICAgICBtZXJnZVRvTWFzdGVyLFxuICAgICAgICBjYWxsVXBkYXRlVXNlckJyYW5jaCxcbiAgICAgICAgY2FsbE1lcmdlVXNlckJyYW5jaCxcbiAgICAgIClcbiAgICB9XG4gIH0sW2NhcmRSZXNvdXJjZUlkLCBtZXJnZUZyb21NYXN0ZXIsIG1lcmdlVG9NYXN0ZXJdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzVXBkYXRlTG9hZGluZykge1xuICAgICAgc2V0Q2FyZHNMb2FkaW5nVXBkYXRlPy4ocHJldkNhcmRzTG9hZGluZyA9PiBbLi4ucHJldkNhcmRzTG9hZGluZywgY2FyZFJlc291cmNlSWRdKVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRDYXJkc0xvYWRpbmdVcGRhdGU/LihwcmV2Q2FyZHNMb2FkaW5nID0+IHByZXZDYXJkc0xvYWRpbmcuZmlsdGVyKGNhcmRJZCA9PiBjYXJkSWQgIT09IGNhcmRSZXNvdXJjZUlkKSlcbiAgICB9XG4gIH0sIFtpc1VwZGF0ZUxvYWRpbmddKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzTWVyZ2VMb2FkaW5nKSB7XG4gICAgICBzZXRDYXJkc0xvYWRpbmdNZXJnZT8uKHByZXZDYXJkc0xvYWRpbmcgPT4gWy4uLnByZXZDYXJkc0xvYWRpbmcsIGNhcmRSZXNvdXJjZUlkXSlcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0Q2FyZHNMb2FkaW5nTWVyZ2U/LihwcmV2Q2FyZHNMb2FkaW5nID0+IHByZXZDYXJkc0xvYWRpbmcuZmlsdGVyKGNhcmRJZCA9PiBjYXJkSWQgIT09IGNhcmRSZXNvdXJjZUlkKSlcbiAgICB9XG4gIH0sIFtpc01lcmdlTG9hZGluZ10pXG5cbiAgY29uc3Qgd29ya2luZ1JlZiA9IGNhblVzZUVkaXRCcmFuY2ggPyB3b3JraW5nUmVzb3VyY2VCcmFuY2ggOiBhcHBSZWZcbiAgbGV0IHNjcmlwdHVyZVRpdGxlXG5cbiAgaWYgKCFjYW5Vc2VFZGl0QnJhbmNoICYmICFyZWFkeUZvckZldGNoKSB7IC8vIGlmIGJpYmxlIG5vdCBlbGlnaWJsZSBmb3IgdXNlciBicmFuY2gsIG1ha2Ugc3VyZSBpdCdzIHJlYWR5XG4gICAgc2V0U3RhdGUoeyByZWFkeUZvckZldGNoOiB0cnVlIH0pXG4gIH1cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVDYXJkIGJvb2sgY2hhbmdlZGAsIHsgYm9va0lkLCBvd25lciwgbGFuZ3VhZ2VJZCwgcmVzb3VyY2VJZCB9KVxuXG4gICAgaWYgKGNhblVzZUVkaXRCcmFuY2gpIHsgLy8gaWYgYmlibGUgZWxpZ2libGUgZm9yIHVzZXIgYnJhbmNoLCByZWZyZXNoIGl0XG4gICAgICBzZXRTdGF0ZSh7IHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLCBjaGVja0ZvckVkaXRCcmFuY2g6IGNoZWNrRm9yRWRpdEJyYW5jaCArIDEgfSlcbiAgICB9XG4gIH0sIFtib29rSWQsIG93bmVyLCBsYW5ndWFnZUlkLCByZXNvdXJjZUlkXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNFcXVhbChyZWZlcmVuY2UsIGN1cnJlbnRSZWZlcmVuY2UpKSB7XG4gICAgICAvLyBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZCByZWZlcmVuY2UgY2hhbmdlZGAsIHJlZmVyZW5jZSlcbiAgICAgIHNldFN0YXRlKHsgY3VycmVudFJlZmVyZW5jZTogcmVmZXJlbmNlIH0pXG4gICAgfVxuICB9LCBbcmVmZXJlbmNlXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB3YWl0aW5nIGZvciBicmFuY2ggZmV0Y2ggdG8gY29tcGxldGVcbiAgICBpZiAoIXJlYWR5Rm9yRmV0Y2ggJiYgYnJhbmNoRGV0ZXJtaW5lZCApIHtcbiAgICAgIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVDYXJkIGJyYW5jaERldGVybWluZWQgaXMgJHticmFuY2hEZXRlcm1pbmVkfSBhbmQgd29ya2luZ1JlZiBpcyAke3dvcmtpbmdSZWZ9YClcbiAgICAgIHNldFN0YXRlKHsgcmVhZHlGb3JGZXRjaDogdHJ1ZSwgcmVmOiB3b3JraW5nUmVmIH0pXG4gICAgfVxuICB9LCBbYnJhbmNoRGV0ZXJtaW5lZF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gc2VsZWN0IGNvcnJlY3Qgd29ya2luZyByZWYgLSBjb3VsZCBiZSBtYXN0ZXIsIHVzZXIgYnJhbmNoLCBvciByZWxlYXNlXG4gICAgaWYgKF91c2luZ1VzZXJCcmFuY2ggIT09IHVzaW5nVXNlckJyYW5jaCkge1xuICAgICAgc2V0U3RhdGUoeyB1c2luZ1VzZXJCcmFuY2g6IF91c2luZ1VzZXJCcmFuY2ggfSlcbiAgICB9XG4gIH0sIFtfdXNpbmdVc2VyQnJhbmNoLCB1c2luZ1VzZXJCcmFuY2hdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHVwZGF0ZSBkaXNwbGF5IHN0YXR1cyBpZiBlcnJvclxuICAgIGNvbnN0IGVycm9yID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXR1cz8uW0VSUk9SX1NUQVRFXVxuXG4gICAgaWYgKGVycm9yKSB7IC8vIGlmIGVycm9yIHdhcyBmb3VuZCBkbyBjYWxsYmFja1xuICAgICAgY29uc3QgcmVzb3VyY2VTdGF0dXMgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdHVzXG4gICAgICBjb25zdCByZXNvdXJjZUxpbmsgPSBnZXRSZXNvdXJjZUxpbmsoc2NyaXB0dXJlQ29uZmlnKVxuICAgICAgY29uc3QgbWVzc2FnZSA9IGdldFJlc291cmNlTWVzc2FnZShyZXNvdXJjZVN0YXR1cywgc2VydmVyLCByZXNvdXJjZUxpbmssIGlzTlRfKVxuICAgICAgY29uc3QgaXNBY2Nlc3NFcnJvciA9IHJlc291cmNlU3RhdHVzW01BTklGRVNUX05PVF9MT0FERURfRVJST1JdXG4gICAgICBvblJlc291cmNlRXJyb3IgJiYgb25SZXNvdXJjZUVycm9yKG1lc3NhZ2UsIGlzQWNjZXNzRXJyb3IsIHJlc291cmNlU3RhdHVzKVxuICAgIH1cbiAgfSwgW3NjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0dXM/LltFUlJPUl9TVEFURV1dKVxuXG4gIGlmIChzY3JpcHR1cmVDb25maWcudGl0bGUgJiYgc2NyaXB0dXJlQ29uZmlnLnZlcnNpb24pIHtcbiAgICBzY3JpcHR1cmVUaXRsZSA9IGAke3NjcmlwdHVyZUNvbmZpZy50aXRsZX0gdiR7c2NyaXB0dXJlQ29uZmlnLnZlcnNpb259YFxuICAgIHNjcmlwdHVyZVZlcnNpb25IaXN0LnVwZGF0ZVRpdGxlKHNjcmlwdHVyZUNvbmZpZy5yZXNvdXJjZUxpbmssIHNjcmlwdHVyZVRpdGxlKVxuICB9IGVsc2Uge1xuICAgIHNjcmlwdHVyZVRpdGxlID0gYFRpdGxlIG1pc3NpbmcgZnJvbSBwcm9qZWN0IG1hbmlmZXN0YFxuICB9XG5cbiAgLyoqIER5bmFtaWNhbGx5IGNyZWF0ZXMgdGhlIHNjcmlwdHVyZSBzZWxlY3Rpb24gZHJvcGRvd24gdG8gYmUgaW5zZXJ0ZWQgaW50byBjYXJkIHNldHRpbmdzICovXG4gIGZ1bmN0aW9uIGdldFNjcmlwdHVyZVNlbGVjdG9yKCkge1xuICAgIGNvbnN0IHNjcmlwdHVyZVNlbGVjdGlvbkNvbmZpZyA9IGdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyh7XG4gICAgICBsYWJlbCxcbiAgICAgIHJlc291cmNlTGluazogc2NyaXB0dXJlQ29uZmlnLnJlc291cmNlTGluayxcbiAgICAgIHNldFNjcmlwdHVyZSxcbiAgICAgIHNjcmlwdHVyZVZlcnNpb25IaXN0LFxuICAgIH0pXG5cbiAgICByZXR1cm4gPFNjcmlwdHVyZVNlbGVjdG9yIHsuLi5zY3JpcHR1cmVTZWxlY3Rpb25Db25maWd9IHN0eWxlPXtzdHlsZX0gZXJyb3JNZXNzYWdlPXt1cmxFcnJvcn0gLz5cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uTWVudUNsb3NlKCkge1xuICAgIC8vIGNvbnNvbGUubG9nKGBvbk1lbnVDbG9zZSgpYClcbiAgICBzZXRTdGF0ZSh7IHVybEVycm9yOiBudWxsIH0pXG4gIH1cblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IGxhbmd1YWdlSWRfID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ubGFuZ3VhZ2VJZFxuICBjb25zdCBsYW5ndWFnZSA9IGdldExhbmd1YWdlKHsgbGFuZ3VhZ2VJZDogbGFuZ3VhZ2VJZF8gfSlcbiAgY29uc3QgZGlyZWN0aW9uID0gKGxhbmd1YWdlPy5kaXJlY3Rpb24pIHx8ICdsdHInXG4gIGNvbnN0IF9yZWZlcmVuY2UgPSBjdXJyZW50UmVmZXJlbmNlIHx8IHJlZmVyZW5jZVxuXG4gIGNvbnN0IGlzSGVicmV3ID0gKGxhbmd1YWdlSWRfID09PSAnaGJvJylcbiAgY29uc3QgZm9udEZhY3RvciA9IGlzSGVicmV3ID8gMS40IDogMSAvLyB3ZSBhdXRvbWF0aWNhbGx5IHNjYWxlIHVwIGZvbnQgc2l6ZSBmb3IgSGVicmV3XG4gIGNvbnN0IHNjYWxlZEZvbnRTaXplID0gZm9udFNpemUgKiBmb250RmFjdG9yXG5cbiAgY29uc3QgaXRlbXMgPSBudWxsXG4gIGNvbnN0IHtcbiAgICBzdGF0ZToge1xuICAgICAgaGVhZGVycywgZmlsdGVycywgaXRlbUluZGV4LCBtYXJrZG93blZpZXcsXG4gICAgfSxcbiAgICBhY3Rpb25zOiB7XG4gICAgICBzZXRGaWx0ZXJzLCBzZXRJdGVtSW5kZXgsIHNldE1hcmtkb3duVmlldyxcbiAgICB9LFxuICB9ID0gdXNlQ2FyZFN0YXRlKHsgaXRlbXMgfSlcblxuICBjb25zdCByZWZTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgICBmb250U2l6ZTogYCR7TWF0aC5yb3VuZChzY2FsZWRGb250U2l6ZSAqIDAuOSl9JWAsXG4gIH0pLCBbc2NhbGVkRm9udFNpemVdKVxuXG4gIGNvbnN0IGNvbnRlbnRTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgICBmb250U2l6ZTogYCR7c2NhbGVkRm9udFNpemV9JWAsXG4gIH0pLCBbc2NhbGVkRm9udFNpemVdKVxuXG4gIGNvbnN0IHNjcmlwdHVyZUxhYmVsID0gPFRpdGxlPntzY3JpcHR1cmVUaXRsZX08L1RpdGxlPlxuICBsZXQgZGlzYWJsZVdvcmRQb3BvdmVyXyA9IGRpc2FibGVXb3JkUG9wb3ZlclxuICBjb25zdCB1c2luZ09yaWdpbmFsQmlibGUgPSBpc09yaWdpbmFsQmlibGUoc2NyaXB0dXJlQ29uZmlnWydyZXNvdXJjZSddPy5wcm9qZWN0SWQpXG5cbiAgaWYgKGRpc2FibGVXb3JkUG9wb3ZlciA9PT0gdW5kZWZpbmVkKSB7IC8vIGlmIG5vdCBzcGVjaWZpZWQsIHRoZW4gZGV0ZXJtaW5lIGlmIG9yaWdpbmFsIGxhbmd1YWdlIHJlc291cmNlXG4gICAgZGlzYWJsZVdvcmRQb3BvdmVyXyA9ICF1c2luZ09yaWdpbmFsQmlibGVcbiAgfVxuXG4gIGNvbnN0IGVuYWJsZUVkaXQgPSAhdXNpbmdPcmlnaW5hbEJpYmxlXG4gIGNvbnN0IGVuYWJsZUFsaWdubWVudCA9ICF1c2luZ09yaWdpbmFsQmlibGVcbiAgY29uc3Qgb3JpZ2luYWxSZXBvVXJsID0gaXNOZXdUZXN0YW1lbnQgPyBncmVla1JlcG9VcmwgOiBoZWJyZXdSZXBvVXJsXG4gIGNvbnN0IHNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcgPSB7XG4gICAgYXV0aGVudGljYXRpb246IGNhblVzZUVkaXRCcmFuY2ggPyBhdXRoZW50aWNhdGlvbiA6IG51bGwsXG4gICAgYm9va0luZGV4LFxuICAgIGN1cnJlbnRWZXJzZVJlZjogX3JlZmVyZW5jZSxcbiAgICBlbmFibGVFZGl0LFxuICAgIGVuYWJsZUFsaWdubWVudCxcbiAgICBodHRwQ29uZmlnLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpc05ld1Rlc3RhbWVudCxcbiAgICBsb2dnZWRJblVzZXI6IGNhblVzZUVkaXRCcmFuY2ggPyBsb2dnZWRJblVzZXIgOiBudWxsLFxuICAgIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcixcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgb3JpZ2luYWxSZXBvVXJsLFxuICAgIHNjcmlwdHVyZUNvbmZpZyxcbiAgICBzY3JpcHR1cmVTZXR0aW5ncyxcbiAgICBzdGFydEVkaXRCcmFuY2gsXG4gICAgc2V0U2F2ZWRDaGFuZ2VzOiBfc2V0U2F2ZWRDaGFuZ2VzLFxuICAgIHNvdXJjZUxhbmd1YWdlOiBpc05UXyA/IE5UX09SSUdfTEFORyA6IE9UX09SSUdfTEFORyxcbiAgICB0YXJnZXRMYW5ndWFnZTogbGFuZ3VhZ2UsXG4gICAgdGl0bGU6IHNjcmlwdHVyZVRpdGxlLFxuICAgIHdvcmtpbmdSZXNvdXJjZUJyYW5jaDogcmVmLFxuICB9XG5cbiAgLyoqXG4gICAqIHRoaXMgZ2V0cyBjYWxsZWQgd2hlbmV2ZXIgYSBzY3JpcHR1cmUgcGFuZSBoYXMgYSBjaGFuZ2UgaW4gc2F2ZSBzdGF0ZVxuICAgKiBAcGFyYW0ge251bWJlcn0gY3VycmVudEluZGV4XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc2F2ZWRcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gZ2V0Q2hhbmdlcyAtIHdpbGwgYmUgY2FsbGVkIHdoZW5ldmVyIHVzZXIgY2xpY2tzIHNhdmUgYnV0dG9uXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNsZWFyQ2hhbmdlcyAtIHdpbGwgYmUgY2FsbGVkIHdoZW5ldmVyIHNhdmUgaGFzIGNvbXBsZXRlZFxuICAgKiBAcGFyYW0ge29iamVjdH0gc3RhdGUgLSBjdXJyZW50IHN0YXRlIG9mIHdvcmQgYWxpZ25tZW50L2VkaXRcbiAgICovXG4gIGZ1bmN0aW9uIF9zZXRTYXZlZENoYW5nZXMoY3VycmVudEluZGV4LCBzYXZlZCwgeyBnZXRDaGFuZ2VzID0gbnVsbCwgY2xlYXJDaGFuZ2VzID0gbnVsbCwgc3RhdGUgPSBudWxsIH0pIHtcbiAgICBjb25zdCBfdW5zYXZlZENoYW5nZXNMaXN0ID0geyAuLi51bnNhdmVkQ2hhbmdlc0xpc3QgfVxuXG4gICAgaWYgKHNhdmVkKSB7XG4gICAgICBpZiAoX3Vuc2F2ZWRDaGFuZ2VzTGlzdC5oYXNPd25Qcm9wZXJ0eShjdXJyZW50SW5kZXgpKSB7XG4gICAgICAgIGRlbGV0ZSBfdW5zYXZlZENoYW5nZXNMaXN0W2N1cnJlbnRJbmRleF1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgX3Vuc2F2ZWRDaGFuZ2VzTGlzdFtjdXJyZW50SW5kZXhdID0geyBnZXRDaGFuZ2VzLCBjbGVhckNoYW5nZXMsIHN0YXRlIH0gLy8gdXBkYXRlIHdpdGggbGF0ZXN0XG4gICAgfVxuXG4gICAgY29uc3QgX2hhdmVVbnNhdmVkQ2hhbmdlcyA9ICEhT2JqZWN0LmtleXMoX3Vuc2F2ZWRDaGFuZ2VzTGlzdCkubGVuZ3RoXG5cbiAgICBpZiAoaGF2ZVVuc2F2ZWRDaGFuZ2VzICE9IF9oYXZlVW5zYXZlZENoYW5nZXMpIHtcbiAgICAgIHNldFNhdmVkQ2hhbmdlcyAmJiBzZXRTYXZlZENoYW5nZXMocmVzb3VyY2VJZCwgIV9oYXZlVW5zYXZlZENoYW5nZXMpXG4gICAgICBzZXRTdGF0ZSh7IGhhdmVVbnNhdmVkQ2hhbmdlczogX2hhdmVVbnNhdmVkQ2hhbmdlcyB9KVxuICAgIH1cblxuICAgIGlmICghaXNFcXVhbChfdW5zYXZlZENoYW5nZXNMaXN0LCB1bnNhdmVkQ2hhbmdlc0xpc3QpKSB7XG4gICAgICBzZXRTdGF0ZSh7IHVuc2F2ZWRDaGFuZ2VzTGlzdDogX3Vuc2F2ZWRDaGFuZ2VzTGlzdCB9KVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBzZWFyY2ggY2hhcHRlciBvciB2ZXJzZSBjaHVuayB0byBsaW5lIHRoYXQgc3RhcnRzIHdpdGggZmluZEl0ZW1cbiAgICogQHBhcmFtIHtudW1iZXJ8c3RyaW5nfSBmaW5kSXRlbVxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBjaHVua3NcbiAgICovXG4gIGZ1bmN0aW9uIGZpbmRSZWZJbkFycmF5KGZpbmRJdGVtLCBjaHVua3MpIHtcbiAgICBjb25zdCByZWZfID0gZmluZEl0ZW0gKyAnJ1xuICAgIGNvbnN0IHJlZkxlbiA9IHJlZl8ubGVuZ3RoXG4gICAgY29uc3QgaW5kZXggPSBjaHVua3MuZmluZEluZGV4KChjaHVuaywgaWR4KSA9PiB7XG4gICAgICBpZiAoaWR4ID4gMCkge1xuICAgICAgICBpZiAoY2h1bmsuc3Vic3RyaW5nKDAsIHJlZkxlbikgPT09IHJlZl8pIHtcbiAgICAgICAgICBjb25zdCBuZXh0Q2hhciA9IGNodW5rW3JlZkxlbl1cblxuICAgICAgICAgIGlmICgobmV4dENoYXIgPiAnOScpIHx8IChuZXh0Q2hhciA8ICcwJykpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9KVxuICAgIHJldHVybiBpbmRleFxuICB9XG5cbiAgZnVuY3Rpb24gZ2V0Qm9va05hbWUoKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IGJvb2tDYXBzID0gc2NyaXB0dXJlQ29uZmlnPy5yZWZlcmVuY2U/LnByb2plY3RJZCA/IHNjcmlwdHVyZUNvbmZpZy5yZWZlcmVuY2UucHJvamVjdElkLnRvVXBwZXJDYXNlKCkgOiAnJ1xuICAgIHJldHVybiBgJHtib29rSW5kZXh9LSR7Ym9va0NhcHN9LnVzZm1gXG4gIH1cblxuICBjb25zdCBmaWxlcGF0aCA9IGdldEJvb2tOYW1lKClcbiAgY29uc3Qgc2hhID0gZmV0Y2hlZFJlc291cmNlPy5zaGFcblxuICAvLyBrZWVwIHRyYWNrIG9mIHZlcnNlIGVkaXQgc3RhdGVcbiAgY29uc3Qge1xuICAgIGVycm9yOiBzYXZlRXJyb3IsXG4gICAgaXNFcnJvcjogaXNTYXZlRXJyb3IsXG4gICAgb25TYXZlRWRpdCxcbiAgfSA9IHVzZUVkaXQoe1xuICAgIHNoYSxcbiAgICBvd25lcixcbiAgICBjb250ZW50OiBzYXZlQ29udGVudCxcbiAgICBjb25maWc6IHtcbiAgICAgIGNhY2hlOiB7IG1heEFnZTogMCB9LFxuICAgICAgLi4uYXV0aGVudGljYXRpb24/LmNvbmZpZyxcbiAgICAgIGRvbnRDcmVhdGVCcmFuY2g6IHRydWUsXG4gICAgICB0b2tlbjogYXV0aGVudGljYXRpb24/LnRva2VuLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGltZW91dDogaHR0cENvbmZpZz8uc2VydmVyVGltZU91dCB8fCBodHRwQ29uZmlnPy50aW1lb3V0IHx8IDEwMDAwLFxuICAgICAgc2VydmVyLFxuICAgIH0sXG4gICAgYXV0aG9yOiBsb2dnZWRJblVzZXIsXG4gICAgdG9rZW46IGF1dGhlbnRpY2F0aW9uPy50b2tlbixcbiAgICBicmFuY2g6IHdvcmtpbmdSZXNvdXJjZUJyYW5jaCxcbiAgICBmaWxlcGF0aCxcbiAgICByZXBvLFxuICB9KVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHdoZW4gd2UgZ2V0IGEgc2F2ZSBzYXZlRXJyb3JcbiAgICBpZiAoc2F2ZUVycm9yICYmIGlzU2F2ZUVycm9yKSB7XG4gICAgICBjb25zb2xlLmxvZyhgc2F2ZSBlcnJvcmAsIHNhdmVFcnJvcilcbiAgICAgIG9uUmVzb3VyY2VFcnJvciAmJiBvblJlc291cmNlRXJyb3IobnVsbCwgZmFsc2UsIG51bGwsIGBFcnJvciBzYXZpbmcgJHtsYW5ndWFnZUlkX31fJHtyZXNvdXJjZUlkfSAke3NhdmVFcnJvcn1gLCB0cnVlKVxuICAgIH1cbiAgfSwgW3NhdmVFcnJvciwgaXNTYXZlRXJyb3JdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHdoZW4gc3RhcnRTYXZlIGdvZXMgdHJ1ZSwgc2F2ZSBlZGl0cyB0byB1c2VyIGJyYW5jaCBhbmQgdGhlbiBjbGVhciBzdGFydFNhdmVcbiAgICBjb25zdCBfc2F2ZUVkaXQgPSBhc3luYyAoKSA9PiB7IC8vIGJlZ2luIHVwbG9hZGluZyBuZXcgVVNGTVxuICAgICAgY29uc29sZS5pbmZvKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIFVzaW5nIHNoYTogJHtzaGF9YClcbiAgICAgIGF3YWl0IG9uU2F2ZUVkaXQodXNlckVkaXRCcmFuY2hOYW1lKS50aGVuKChzdWNjZXNzKSA9PiB7IC8vIHB1c2ggY2hhbmdlIHRvIHNlcnZlclxuICAgICAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmUgc2NyaXB0dXJlIGVkaXRzIHN1Y2Nlc3NgKVxuICAgICAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBwcmV2Q2FyZHNTYXZpbmcuZmlsdGVyKGNhcmRJZCA9PiBjYXJkSWQgIT09IGNhcmRSZXNvdXJjZUlkKSlcbiAgICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgICBzdGFydFNhdmU6IGZhbHNlLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBjb25zdCB1bnNhdmVkQ2FyZEluZGljZXMgPSBPYmplY3Qua2V5cyh1bnNhdmVkQ2hhbmdlc0xpc3QpXG5cbiAgICAgICAgICBpZiAodW5zYXZlZENhcmRJbmRpY2VzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY2FyZEluZGV4IG9mIHVuc2F2ZWRDYXJkSW5kaWNlcykge1xuICAgICAgICAgICAgICBjb25zdCB7IGNsZWFyQ2hhbmdlcyB9ID0gdW5zYXZlZENoYW5nZXNMaXN0W2NhcmRJbmRleF1cbiAgICAgICAgICAgICAgY2xlYXJDaGFuZ2VzICYmIGNsZWFyQ2hhbmdlcygpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc29sZS5pbmZvKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIFJlbG9hZGluZyByZXNvdXJjZScpXG4gICAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgICAgc3RhcnRTYXZlOiBmYWxzZSxcbiAgICAgICAgICAgIHJlYWR5Rm9yRmV0Y2g6IHRydWUsXG4gICAgICAgICAgICByZWY6IHVzZXJFZGl0QnJhbmNoTmFtZSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIGRlbGF5KDEwMCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBzZXRDYXJkc1NhdmluZyhwcmV2Q2FyZHNTYXZpbmcgPT4gcHJldkNhcmRzU2F2aW5nLmZpbHRlcihjYXJkSWQgPT4gY2FyZElkICE9PSBjYXJkUmVzb3VyY2VJZCkpXG4gICAgICAgICAgICBzY3JpcHR1cmVDb25maWc/LnJlbG9hZFJlc291cmNlKHNoYSwgdXNlckVkaXRCcmFuY2hOYW1lKVxuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZpbmcgY2hhbmdlZCBzY3JpcHR1cmUgZmFpbGVkJylcbiAgICAgICAgICBzZXRDYXJkc1NhdmluZyhwcmV2Q2FyZHNTYXZpbmcgPT4gcHJldkNhcmRzU2F2aW5nLmZpbHRlcihjYXJkSWQgPT4gY2FyZElkICE9PSBjYXJkUmVzb3VyY2VJZCkpXG4gICAgICAgICAgc2V0U3RhdGUoeyBzdGFydFNhdmU6IGZhbHNlIH0pXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKHN0YXJ0U2F2ZSkge1xuICAgICAgaWYgKCFlZGl0QnJhbmNoUmVhZHkpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGVkaXQgYnJhbmNoIG5vdCB5ZXQgY3JlYXRlZGApXG4gICAgICB9IGVsc2UgaWYgKCFzaGEpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIHNhdmUgc2hhIG5vdCB5ZXQgcmVhZHlgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGNhbGxpbmcgX3NhdmVFZGl0KClgKVxuICAgICAgICBzZXRDYXJkc1NhdmluZyhwcmV2Q2FyZHNTYXZpbmcgPT4gWy4uLnByZXZDYXJkc1NhdmluZywgY2FyZFJlc291cmNlSWRdKVxuICAgICAgICBfc2F2ZUVkaXQoKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW3N0YXJ0U2F2ZSwgZWRpdEJyYW5jaFJlYWR5LCBzaGFdKVxuXG4gIC8qKlxuICAgKiBjb252ZXJ0IHVwZGF0ZWRWZXJzZU9iamVjdHMgdG8gVVNGTSBhbmQgbWVyZ2UgaW50byB0aGUgYmlibGVVc2ZtXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBiaWJsZVVzZm0gLSBVU0ZNIG9mIGJpYmxlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSByZWYgLSByZWZlcmVuY2Ugb2YgdmVyc2UgdG8gbWVyZ2UgaW5cbiAgICogQHBhcmFtIHtvYmplY3RbXX0gdXBkYXRlZFZlcnNlT2JqZWN0cyAtIG5ldyB2ZXJzZSBpbiB2ZXJzZU9iamVjdCBmb3JtYXRcbiAgICogQHBhcmFtIHtudW1iZXJ9IGNhcmROdW1cbiAgICovXG4gIGZ1bmN0aW9uIG1lcmdlVmVyc2VPYmplY3RzSW50b0JpYmxlVXNmbShiaWJsZVVzZm0sIHJlZiwgdXBkYXRlZFZlcnNlT2JqZWN0cywgY2FyZE51bTogbnVtYmVyKSB7XG4gICAgbGV0IG5ld1VzZm1cbiAgICBjb25zdCBjaGFwdGVyQ2h1bmtzID0gYmlibGVVc2ZtPy5zcGxpdCgnXFxcXGMgJylcbiAgICBjb25zdCBjaGFwdGVySW5kZXggPSBmaW5kUmVmSW5BcnJheShyZWY/LmNoYXB0ZXIsIGNoYXB0ZXJDaHVua3MpXG5cbiAgICBpZiAoY2hhcHRlckluZGV4ID49IDApIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRDaGFwdGVyID0gY2hhcHRlckNodW5rc1tjaGFwdGVySW5kZXhdXG4gICAgICBjb25zdCB2ZXJzZUNodW5rcyA9IGN1cnJlbnRDaGFwdGVyLnNwbGl0KCdcXFxcdiAnKVxuICAgICAgY29uc3QgdmVyc2VJbmRleCA9IGZpbmRSZWZJbkFycmF5KHJlZj8udmVyc2UsIHZlcnNlQ2h1bmtzKVxuXG4gICAgICBpZiAodmVyc2VJbmRleCA+PSAwKSB7XG4gICAgICAgIGNvbnN0IG5ld1ZlcnNlVXNmbSA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuY29udmVydFZlcnNlRGF0YVRvVVNGTSh1cGRhdGVkVmVyc2VPYmplY3RzKVxuICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCR7Y2FyZE51bX0pIC0gbmV3IFVTRk0gZm9yIGNhcmQ6fSAtICR7bmV3VmVyc2VVc2ZtLnN1YnN0cmluZygwLCAxMDApfWApXG4gICAgICAgIGNvbnN0IG9sZFZlcnNlID0gdmVyc2VDaHVua3NbdmVyc2VJbmRleF1cbiAgICAgICAgY29uc3QgdmVyc2VOdW1MZW4gPSAocmVmPy52ZXJzZSArICcnKS5sZW5ndGhcbiAgICAgICAgdmVyc2VDaHVua3NbdmVyc2VJbmRleF0gPSBvbGRWZXJzZS5zdWJzdHJpbmcoMCwgdmVyc2VOdW1MZW4gKyAxKSArIG5ld1ZlcnNlVXNmbVxuICAgICAgICBjb25zdCBuZXdDaGFwdGVyID0gdmVyc2VDaHVua3Muam9pbignXFxcXHYgJylcbiAgICAgICAgY2hhcHRlckNodW5rc1tjaGFwdGVySW5kZXhdID0gbmV3Q2hhcHRlclxuICAgICAgICBuZXdVc2ZtID0gY2hhcHRlckNodW5rcy5qb2luKCdcXFxcYyAnKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3VXNmbVxuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gZm9yIGVhY2ggdW5zYXZlZCBjaGFuZ2UsIGNhbGwgaW50byBzY3JpcHR1cmVQYW5lIHRvIGdldCBsYXRlc3QgY2hhbmdlcyBmb3IgdmVyc2UgdG8gc2F2ZVxuICAgIGFzeW5jIGZ1bmN0aW9uIGdldFJlYWR5Rm9yU2F2ZSgpIHtcbiAgICAgIGlmIChzYXZlQ2xpY2tlZCkge1xuICAgICAgICBsZXQgY3JlYXRlRWRpdEJyYW5jaCA9ICFfdXNpbmdVc2VyQnJhbmNoXG5cbiAgICAgICAgaWYgKCFjcmVhdGVFZGl0QnJhbmNoKSB7IC8vIGlmIGFscmVhZHkgdXNpbmcgdGhlIHVzZXIgYnJhbmNoXG4gICAgICAgICAgaWYgKHdvcmtpbmdSZXNvdXJjZUJyYW5jaCAhPT0gdXNlckVkaXRCcmFuY2hOYW1lKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIHN0YXRlIGNvbmZsaWN0IC0gc2hvdWxkIGJlIGluIHVzZXIgYnJhbmNoICR7dXNlckVkaXRCcmFuY2hOYW1lfSwgYnV0IGFjdHVhbGx5IHVzaW5nICR7d29ya2luZ1Jlc291cmNlQnJhbmNofWApXG4gICAgICAgICAgICBjcmVhdGVFZGl0QnJhbmNoID0gdHJ1ZVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gYWxyZWFkeSB1c2luZyBlZGl0IGJyYW5jaDogJHt3b3JraW5nUmVzb3VyY2VCcmFuY2h9YClcbiAgICAgICAgICAgIHNldFN0YXRlKHsgZWRpdEJyYW5jaFJlYWR5OiB0cnVlIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNyZWF0ZUVkaXRCcmFuY2gpIHsgLy8gaWYgbm90IHlldCB1c2luZyB0aGUgdXNlciBicmFuY2gsIGNyZWF0ZSBpdFxuICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBjcmVhdGluZyBlZGl0IGJyYW5jaGApXG4gICAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgICAgZWRpdEJyYW5jaFJlYWR5OiBmYWxzZSxcbiAgICAgICAgICAgIHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLFxuICAgICAgICAgICAgc2hhOiBudWxsLFxuICAgICAgICAgIH0pIC8vIHdlIHdpbGwgbmVlZCBhIG5ldyBzaGEgZm9yIGJvb2svYnJhbmNoXG5cbiAgICAgICAgICBjb25zdCBicmFuY2ggPSBhd2FpdCBzdGFydEVkaXRCcmFuY2goKVxuXG4gICAgICAgICAgaWYgKGJyYW5jaCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGVkaXQgYnJhbmNoIGNyZWF0ZWRgKVxuICAgICAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgICAgICBlZGl0QnJhbmNoUmVhZHk6IHRydWUsXG4gICAgICAgICAgICAgIHJlYWR5Rm9yRmV0Y2g6IHRydWUsXG4gICAgICAgICAgICAgIHJlZjogYnJhbmNoLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBlcnJvciBjcmVhdGluZyBlZGl0IGJyYW5jaCcpXG4gICAgICAgICAgICBvblJlc291cmNlRXJyb3IgJiYgb25SZXNvdXJjZUVycm9yKG51bGwsIGZhbHNlLCBudWxsLCBgRXJyb3IgY3JlYXRpbmcgZWRpdCBicmFuY2ggJHtsYW5ndWFnZUlkX31fJHtyZXNvdXJjZUlkfWAsIHRydWUpXG4gICAgICAgICAgICBzZXRTdGF0ZSh7IHNhdmVDbGlja2VkOiBmYWxzZSB9KVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGdldHRpbmcgdmVyc2UgY2hhbmdlc2ApXG4gICAgICAgIGNvbnN0IHVuc2F2ZWRDYXJkSW5kaWNlcyA9IE9iamVjdC5rZXlzKHVuc2F2ZWRDaGFuZ2VzTGlzdClcblxuICAgICAgICBpZiAodW5zYXZlZENhcmRJbmRpY2VzPy5sZW5ndGgpIHtcbiAgICAgICAgICBsZXQgYmlibGVVc2ZtID0gZ2V0Q3VycmVudEJvb2soc2NyaXB0dXJlQ29uZmlnLCBib29rSWQpXG4gICAgICAgICAgbGV0IG1lcmdlRmFpbCA9IGZhbHNlXG4gICAgICAgICAgaWYgKGJpYmxlVXNmbSkge1xuICAgICAgICAgICAgbGV0IGNhcmROdW0gPSAwXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgY2FyZEluZGV4IG9mIHVuc2F2ZWRDYXJkSW5kaWNlcykge1xuICAgICAgICAgICAgICBjYXJkTnVtID0gcGFyc2VJbnQoY2FyZEluZGV4KVxuICAgICAgICAgICAgICBjb25zdCB7IGdldENoYW5nZXMsIHN0YXRlIH0gPSB1bnNhdmVkQ2hhbmdlc0xpc3RbY2FyZE51bV1cblxuICAgICAgICAgICAgICBpZiAoZ2V0Q2hhbmdlcykge1xuICAgICAgICAgICAgICAgIGxldCBuZXdVc2ZtXG4gICAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgICAgcmVmLFxuICAgICAgICAgICAgICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0cyxcbiAgICAgICAgICAgICAgICB9ID0gZ2V0Q2hhbmdlcyhzdGF0ZSlcblxuICAgICAgICAgICAgICAgIGlmICh1cGRhdGVkVmVyc2VPYmplY3RzICYmIGJpYmxlVXNmbSkgeyAvLyBqdXN0IHJlcGxhY2UgdmVyc2VcbiAgICAgICAgICAgICAgICAgIG5ld1VzZm0gPSBtZXJnZVZlcnNlT2JqZWN0c0ludG9CaWJsZVVzZm0oYmlibGVVc2ZtLCByZWYsIHVwZGF0ZWRWZXJzZU9iamVjdHMsIGNhcmROdW0pXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKG5ld1VzZm0pIHtcbiAgICAgICAgICAgICAgICAgIGJpYmxlVXNmbSA9IG5ld1VzZm1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgbWVyZ2VGYWlsID0gdHJ1ZVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cblxuICAgICAgICAgIGlmIChtZXJnZUZhaWwpIHsgLy8gaWYgd2UgZmFpbGVkIHRvIG1lcmdlLCBmYWxsYmFjayB0byBicnV0ZSBmb3JjZSB2ZXJzZSBvYmplY3RzIHRvIFVTRk1cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoJHtjYXJkTnVtfSkgLSB2ZXJzZSBub3QgZm91bmQsIGZhbGxpbmcgYmFjayB0byBpbnNlcnRpbmcgdmVyc2Ugb2JqZWN0YClcbiAgICAgICAgICAgIGxldCBuZXdCb29rSnNvblxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNhcmRJbmRleCBvZiB1bnNhdmVkQ2FyZEluZGljZXMpIHtcbiAgICAgICAgICAgICAgY29uc3QgY2FyZE51bSA9IHBhcnNlSW50KGNhcmRJbmRleClcbiAgICAgICAgICAgICAgY29uc3QgeyBnZXRDaGFuZ2VzLCBzdGF0ZSB9ID0gdW5zYXZlZENoYW5nZXNMaXN0W2NhcmROdW1dXG5cbiAgICAgICAgICAgICAgaWYgKGdldENoYW5nZXMpIHtcbiAgICAgICAgICAgICAgICBsZXQgbmV3VXNmbVxuICAgICAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICAgIG5ld1ZlcnNlVGV4dCxcbiAgICAgICAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgICAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHMsXG4gICAgICAgICAgICAgICAgfSA9IGdldENoYW5nZXMoc3RhdGUpXG5cbiAgICAgICAgICAgICAgICBpZiAodXBkYXRlZFZlcnNlT2JqZWN0cyAmJiAhbmV3VXNmbSkge1xuICAgICAgICAgICAgICAgICAgbGV0IHRhcmdldFZlcnNlT2JqZWN0c18gPSBudWxsXG5cbiAgICAgICAgICAgICAgICAgIGlmIChyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5ld1ZlcnNlVGV4dCkge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgdGFyZ2V0VmVyc2VPYmplY3RzIH0gPSBBbGlnbm1lbnRIZWxwZXJzLnVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlKHVwZGF0ZWRWZXJzZU9iamVjdHMsIG5ld1ZlcnNlVGV4dClcbiAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRWZXJzZU9iamVjdHNfID0gdGFyZ2V0VmVyc2VPYmplY3RzXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VmVyc2VPYmplY3RzXyA9IHVwZGF0ZWRWZXJzZU9iamVjdHNcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBuZXdCb29rSnNvbiA9IHRhcmdldFZlcnNlT2JqZWN0c18gJiYgc2NyaXB0dXJlQ29uZmlnPy51cGRhdGVWZXJzZShyZWYuY2hhcHRlciwgcmVmLnZlcnNlLCB7dmVyc2VPYmplY3RzOiB0YXJnZXRWZXJzZU9iamVjdHNffSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYmlibGVVc2ZtID0gdXNmbWpzLnRvVVNGTShuZXdCb29rSnNvbiwgeyBmb3JjZWROZXdMaW5lczogdHJ1ZSB9KVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChiaWJsZVVzZm0pIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmluZyBuZXcgVVNGTTogJHtiaWJsZVVzZm0uc3Vic3RyaW5nKDAsIDEwMCl9Li4uYClcbiAgICAgICAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBbLi4ucHJldkNhcmRzU2F2aW5nLCBjYXJkUmVzb3VyY2VJZF0pXG4gICAgICAgICAgICBzZXRTdGF0ZSh7c2F2ZUNvbnRlbnQ6IGJpYmxlVXNmbSwgc3RhcnRTYXZlOiB0cnVlLCBzYXZlQ2xpY2tlZDogZmFsc2V9KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gRXJyb3IgcmV0cmlldmluZyB0aGUgY29ycmVjdCBib29rIGRhdGE6IGluY29ycmVjdCBib29rICR7bGFuZ3VhZ2VJZF99XyR7cmVzb3VyY2VJZH1gKVxuICAgICAgICAgICAgICBvblJlc291cmNlRXJyb3IgJiYgb25SZXNvdXJjZUVycm9yKG51bGwsIGZhbHNlLCBudWxsLCBgRXJyb3IgcmV0cmlldmluZyB0aGUgY29ycmVjdCBib29rIGRhdGEgJHtsYW5ndWFnZUlkX31fJHtyZXNvdXJjZUlkfWAsIHRydWUpXG4gICAgICAgICAgICAgIHNldFN0YXRlKHsgc2F2ZUNsaWNrZWQ6IGZhbHNlIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZ2V0UmVhZHlGb3JTYXZlKClcbiAgfSwgW3NhdmVDbGlja2VkXSlcblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IHsgY2hhcHRlciB9ID0gX3JlZmVyZW5jZSB8fCB7fVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgX3ZlcnNlc0ZvclJlZiA9IHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmXG4gICAgbGV0IG5ld1NlbGVjdGlvbnMgPSBuZXcgTWFwKClcbiAgICBsZXQgdXBkYXRlU2VsZWN0aW9ucyA9IGZhbHNlXG4gICAgY29uc3QgX21hcCA9IG5ld1NlbGVjdGlvbnNcbiAgICBjb25zdCBvcmlnaW5hbEJvb2tJZCA9IG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM/LmJvb2tJZFxuICAgIGNvbnN0IGJvb2tWZXJzZU9iamVjdCA9IG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM/LmNoYXB0ZXJzXG4gICAgbGV0IG5ld1NlbGVjdGVkUXVvdGUgPSBudWxsXG5cbiAgICAvLyBpZiB3ZSBoYXZlIGV2ZXJ5dGhpbmcgd2UgbmVlZCB0byBjYWxjdWxhdGUgc2VsZWN0aW9uc1xuICAgIGlmIChfdmVyc2VzRm9yUmVmPy5sZW5ndGggJiZcbiAgICAgIGJvb2tWZXJzZU9iamVjdCAmJlxuICAgICAgKGJvb2tJZCA9PT0gb3JpZ2luYWxCb29rSWQpICYmXG4gICAgICBib29rVmVyc2VPYmplY3RbY2hhcHRlcl0gJiYgLy8gd2UgbmVlZCB0byBoYXZlIGRhdGEgZm9yIGNoYXB0ZXJcbiAgICAgIHNlbGVjdGVkUXVvdGU/LnF1b3RlXG4gICAgKSB7XG4gICAgICAvLyBpZiBxdW90ZSBpcyBkaWZmZXJlbnQgdGhhbiBsYXN0XG4gICAgICBpZiAoIWlzRXF1YWwobGFzdFNlbGVjdGVkUXVvdGUsIHNlbGVjdGVkUXVvdGUpIHx8XG4gICAgICAgICFpc0VxdWFsKHZlcnNlc0ZvclJlZiwgX3ZlcnNlc0ZvclJlZikpIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxWZXJzZXMgPSB7fVxuICAgICAgICBjb25zdCBzdWJzdGl0dXRlID0ge30gLy8ga2VlcCB0cmFjayBvZiB2ZXJzZSBzdWJzdGl0dXRpb25zXG4gICAgICAgIGxldCBzdGFydFZlcnNlID0gX3ZlcnNlc0ZvclJlZlswXS52ZXJzZVxuXG4gICAgICAgIGlmICh0eXBlb2Ygc3RhcnRWZXJzZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBzdGFydFZlcnNlID0gcGFyc2VJbnQoc3RhcnRWZXJzZSlcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBsYXN0VmVyc2UgPSBzdGFydFZlcnNlXG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBfdmVyc2VzRm9yUmVmLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgIGNvbnN0IHZlcnNlUmVmID0gX3ZlcnNlc0ZvclJlZltpXVxuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGNoYXB0ZXIsXG4gICAgICAgICAgICB2ZXJzZSxcbiAgICAgICAgICB9ID0gdmVyc2VSZWZcbiAgICAgICAgICAvLyBUUklDS1kgLSB3ZSByZW1hcCB2ZXJzZXMgaW4gcmVmZXJlbmNlIHJhbmdlIHRvIGEgbGluZWFyIHNlcmllcyBvZiB2ZXJzZXMgc28gdmVyc2Ugc3BhbnMgZG9uJ3QgY2hva2UgZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmXG4gICAgICAgICAgbGV0IF92ZXJzZSA9IHN0YXJ0VmVyc2UgKyBpXG4gICAgICAgICAgbGFzdFZlcnNlID0gX3ZlcnNlXG4gICAgICAgICAgc3Vic3RpdHV0ZVtgJHtjaGFwdGVyfToke192ZXJzZX1gXSA9IGAke2NoYXB0ZXJ9OiR7dmVyc2V9YFxuXG4gICAgICAgICAgaWYgKCFvcmlnaW5hbFZlcnNlc1tjaGFwdGVyXSkge1xuICAgICAgICAgICAgb3JpZ2luYWxWZXJzZXNbY2hhcHRlcl0gPSB7fVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGxldCB2ZXJzZU9iamVjdHMgPSBbXVxuXG4gICAgICAgICAgaWYgKCh0eXBlb2YgdmVyc2UgPT09ICdzdHJpbmcnKSAmJiAodmVyc2UuaW5jbHVkZXMoJy0nKSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHZlcnNlcyA9IGdldFZlcnNlcyhib29rVmVyc2VPYmplY3QsIGAke2NoYXB0ZXJ9OiR7dmVyc2V9YClcblxuICAgICAgICAgICAgZm9yIChjb25zdCB2ZXJzZUl0ZW0gb2YgdmVyc2VzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHZvID0gdmVyc2VJdGVtLnZlcnNlRGF0YS52ZXJzZU9iamVjdHNcbiAgICAgICAgICAgICAgdmVyc2VPYmplY3RzID0gdmVyc2VPYmplY3RzLmNvbmNhdCh2bylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmVyc2VPYmplY3RzID0gYm9va1ZlcnNlT2JqZWN0W2NoYXB0ZXJdW3ZlcnNlXT8udmVyc2VPYmplY3RzXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHZlcnNlT2JqZWN0cykge1xuICAgICAgICAgICAgdmVyc2VPYmplY3RzID0gY2xlYW51cFZlcnNlT2JqZWN0cyh2ZXJzZU9iamVjdHMpXG4gICAgICAgICAgICBvcmlnaW5hbFZlcnNlc1tjaGFwdGVyXVtfdmVyc2VdID0geyB2ZXJzZU9iamVjdHMgfVxuICAgICAgICAgICAgX21hcC5zZXQoYCR7Y2hhcHRlcn06JHt2ZXJzZX1gLCB2ZXJzZU9iamVjdHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gY3JlYXRlIG5ldyByZWZlcmVuY2UgcmFuZ2UgZm9yIG5ldyBsaW5lYXIgdmVyc2UgcmFuZ2VcbiAgICAgICAgY29uc3QgW2NoYXB0ZXJdID0gc2VsZWN0ZWRRdW90ZT8ucmVmZXJlbmNlPy5zcGxpdCgnOicpXG4gICAgICAgIGxldCBzdWJSZWYgPSBgJHtjaGFwdGVyfToke3N0YXJ0VmVyc2V9YFxuXG4gICAgICAgIGlmIChsYXN0VmVyc2UgIT0gc3RhcnRWZXJzZSkge1xuICAgICAgICAgIHN1YlJlZiArPSBgLSR7bGFzdFZlcnNlfWBcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHF1b3RlTWF0Y2hlcyA9IGdldFF1b3RlTWF0Y2hlc0luQm9va1JlZih7XG4gICAgICAgICAgYm9va09iamVjdDogb3JpZ2luYWxWZXJzZXMsXG4gICAgICAgICAgcmVmOiBzdWJSZWYsXG4gICAgICAgICAgcXVvdGU6IHNlbGVjdGVkUXVvdGU/LnF1b3RlLFxuICAgICAgICAgIG9jY3VycmVuY2U6IHNlbGVjdGVkUXVvdGU/Lm9jY3VycmVuY2UsXG4gICAgICAgIH0pXG5cbiAgICAgICAgY29uc3Qgc2VsZWN0aW9ucyA9IG5ldyBNYXAoKVxuXG4gICAgICAgIGlmIChxdW90ZU1hdGNoZXM/LnNpemUpIHtcbiAgICAgICAgICBxdW90ZU1hdGNoZXMuZm9yRWFjaCgod29yZHMsIGtleSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgX2tleSA9IHN1YnN0aXR1dGVba2V5XVxuXG4gICAgICAgICAgICBzZWxlY3Rpb25zLnNldChfa2V5LCB3b3Jkcy5tYXAod29yZCA9PiAoXG4gICAgICAgICAgICAgIHsgLi4ud29yZCwgdGV4dDogY29yZS5ub3JtYWxpemVTdHJpbmcod29yZC50ZXh0KSB9XG4gICAgICAgICAgICApKSlcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIG5ld1NlbGVjdGlvbnMgPSBzZWxlY3Rpb25zXG4gICAgICAgIG5ld1NlbGVjdGVkUXVvdGUgPSBzZWxlY3RlZFF1b3RlXG4gICAgICAgIHVwZGF0ZVNlbGVjdGlvbnMgPSB0cnVlXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgbmV3U3RhdGU6IGFueSA9IHt9XG5cbiAgICAvLyB1cGRhdGUgc3RhdGVzIHRoYXQgaGF2ZSBjaGFuZ2VkXG4gICAgaWYgKCFhcmVNYXBzVGhlU2FtZSh2ZXJzZU9iamVjdHNNYXAsIF9tYXApKSB7XG4gICAgICBuZXdTdGF0ZS52ZXJzZU9iamVjdHNNYXAgPSBfbWFwXG4gICAgfVxuXG4gICAgY29uc3QgYm9va3NOb3RTYW1lID0gcmVmZXJlbmNlPy5wcm9qZWN0SWQgIT09IGN1cnJlbnRSZWZlcmVuY2U/LnByb2plY3RJZFxuXG4gICAgaWYgKGJvb2tzTm90U2FtZSB8fCAhYXJlVmVyc2VzU2FtZSh2ZXJzZXNGb3JSZWYsIF92ZXJzZXNGb3JSZWYpKSB7XG4gICAgICBuZXdTdGF0ZS52ZXJzZXNGb3JSZWYgPSBfdmVyc2VzRm9yUmVmXG4gICAgICBuZXdTdGF0ZS5sYXN0U2VsZWN0ZWRRdW90ZSA9IG5ld1NlbGVjdGVkUXVvdGVcbiAgICAgIG5ld1N0YXRlLnNlbGVjdGlvbnMgPSBuZXdTZWxlY3Rpb25zXG4gICAgfVxuXG4gICAgaWYgKG5ld1NlbGVjdGVkUXVvdGUpIHtcbiAgICAgIG5ld1N0YXRlLmxhc3RTZWxlY3RlZFF1b3RlID0gbmV3U2VsZWN0ZWRRdW90ZVxuICAgIH1cblxuICAgIGlmICh1cGRhdGVTZWxlY3Rpb25zKSB7XG4gICAgICBpZiAoIWFyZU1hcHNUaGVTYW1lKHNlbGVjdGlvbnMgfHwgKG5ldyBNYXAoKSksIG5ld1NlbGVjdGlvbnMpKSB7XG4gICAgICAgIG5ld1N0YXRlLnNlbGVjdGlvbnMgPSBuZXdTZWxlY3Rpb25zXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKE9iamVjdC5rZXlzKG5ld1N0YXRlKS5sZW5ndGgpIHtcbiAgICAgIHNldFN0YXRlKG5ld1N0YXRlKVxuICAgIH1cbiAgfSwgW1xuICAgIG93bmVyLFxuICAgIHJlc291cmNlSWQsXG4gICAgYm9va0lkLFxuICAgIGxhbmd1YWdlSWRfLFxuICAgIHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmLFxuICAgIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMsXG4gICAgc2VsZWN0ZWRRdW90ZSxcbiAgXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBjbGVhciBzZXR0aW5ncyBvbiB2ZXJzZSBjaGFuZ2VcbiAgICBzZXRTdGF0ZSh7XG4gICAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXM6IG51bGwsXG4gICAgICB1bnNhdmVkQ2hhbmdlc0xpc3Q6IHt9LFxuICAgICAgaGF2ZVVuc2F2ZWRDaGFuZ2VzOiBmYWxzZSxcbiAgICB9KVxuICB9LCBbX3JlZmVyZW5jZV0pXG5cbiAgY29uc3QgdXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzID0gKHJlZmVyZW5jZSwgYWxpZ25lZCkgPT4ge1xuICAgIHNldFN0YXRlXyhwcmV2U3RhdGUgPT4gKHtcbiAgICAgIC4uLnByZXZTdGF0ZSxcbiAgICAgIHZlcnNlc0FsaWdubWVudFN0YXR1czogeyAuLi5wcmV2U3RhdGUudmVyc2VzQWxpZ25tZW50U3RhdHVzLCBbYCR7cmVmZXJlbmNlLmNoYXB0ZXJ9OiR7cmVmZXJlbmNlLnZlcnNlfWBdOiBhbGlnbmVkIH0sXG4gICAgfSkpXG4gIH1cblxuICBsZXQgX3ZlcnNlc0ZvclJlZiA9IHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoX3ZlcnNlc0ZvclJlZj8ubGVuZ3RoKSB7XG4gICAgICBjb25zdCB7IHJlZmVyZW5jZSwgcmVzb3VyY2VMaW5rIH0gPSBzY3JpcHR1cmVDb25maWcgfHwge31cbiAgICAgIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVDYXJkLl92ZXJzZXNGb3JSZWYgY2hhbmdlZGAsIHsgcmVmZXJlbmNlLCByZXNvdXJjZUxpbmsgfSlcbiAgICB9XG4gIH0sIFtfdmVyc2VzRm9yUmVmXSlcblxuICBpZiAoIV92ZXJzZXNGb3JSZWY/Lmxlbmd0aCkgeyAvLyBpZiBlbXB0eSBvZiByZWZlcmVuY2VzLCBjcmVhdGUgc2luZ2xlIGVtcHR5IHJlZmVyZW5jZVxuICAgIF92ZXJzZXNGb3JSZWYgPSBbeyAuLi5yZWZlcmVuY2UgfV1cbiAgfVxuXG4gIGNvbnN0IHJlbmRlcmVkU2NyaXB0dXJlUGFuZXMgPSBfdmVyc2VzRm9yUmVmPy5tYXAoKF9jdXJyZW50VmVyc2VEYXRhLCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IGluaXRpYWxWZXJzZU9iamVjdHMgPSBfY3VycmVudFZlcnNlRGF0YT8udmVyc2VEYXRhPy52ZXJzZU9iamVjdHMgfHwgW11cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgeyBjaGFwdGVyLCB2ZXJzZSB9ID0gX2N1cnJlbnRWZXJzZURhdGEgfHwge31cbiAgICBjb25zdCBwcm9qZWN0SWQgPSBjdXJyZW50UmVmZXJlbmNlPy5wcm9qZWN0SWQgfHwgcmVmZXJlbmNlPy5wcm9qZWN0SWRcbiAgICBjb25zdCBfcmVmZXJlbmNlID0ge1xuICAgICAgLi4uX3ZlcnNlc0ZvclJlZixcbiAgICAgIGNoYXB0ZXIsXG4gICAgICBwcm9qZWN0SWQsXG4gICAgICB2ZXJzZSxcbiAgICB9XG4gICAgY29uc3QgX3NjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcgPSB7XG4gICAgICAuLi5zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnLFxuICAgICAgY3VycmVudEluZGV4OiBpbmRleCxcbiAgICAgIGluaXRpYWxWZXJzZU9iamVjdHMsXG4gICAgICByZWZlcmVuY2U6IF9yZWZlcmVuY2UsXG4gICAgICBpc05ld1Rlc3RhbWVudCxcbiAgICB9XG5cbiAgICBsZXQgaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50ID0gZmFsc2VcblxuICAgIGlmICh2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50KSB7XG4gICAgICBpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQgPSB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50LmNoYXB0ZXIgPT0gY2hhcHRlciAmJiB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50LnZlcnNlID09IHZlcnNlXG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTY3JpcHR1cmVQYW5lXG4gICAgICAgIHsuLi5zY3JpcHR1cmVDb25maWd9XG4gICAgICAgIGNvbnRlbnRTdHlsZT17Y29udGVudFN0eWxlfVxuICAgICAgICBjdXJyZW50SW5kZXg9e2luZGV4fVxuICAgICAgICBkZXRlcm1pbmluZ0JyYW5jaD17IXJlYWR5Rm9yRmV0Y2h9XG4gICAgICAgIGRpcmVjdGlvbj17ZGlyZWN0aW9ufVxuICAgICAgICBkaXNhYmxlV29yZFBvcG92ZXI9e2Rpc2FibGVXb3JkUG9wb3Zlcl99XG4gICAgICAgIGZvbnRTaXplPXtmb250U2l6ZX1cbiAgICAgICAgZ2V0TGV4aWNvbkRhdGE9e2dldExleGljb25EYXRhfVxuICAgICAgICBpc05UPXtpc05UX31cbiAgICAgICAgaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50PXtpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnR9XG4gICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgIG9uQWxpZ25tZW50RmluaXNoPXsoKSA9PiBzZXRTdGF0ZSh7IHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ6IG51bGwgfSl9XG4gICAgICAgIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM9e29yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHN9XG4gICAgICAgIHJlZlN0eWxlPXtyZWZTdHlsZX1cbiAgICAgICAgcmVmZXJlbmNlPXtfcmVmZXJlbmNlfVxuICAgICAgICBzYXZpbmc9e3N0YXJ0U2F2ZX1cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnPXtfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZ31cbiAgICAgICAgc2V0V29yZEFsaWduZXJTdGF0dXM9e3NldFdvcmRBbGlnbmVyU3RhdHVzfVxuICAgICAgICBzZXJ2ZXI9e3NlcnZlcn1cbiAgICAgICAgdHJhbnNsYXRlPXt0cmFuc2xhdGV9XG4gICAgICAgIHVwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1cz17dXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzfVxuICAgICAgLz5cbiAgICApXG4gIH0pXG5cbiAgY29uc3QgaGFuZGxlQWxpZ25CdXR0b25DbGljayA9ICgpID0+IHtcbiAgICBpZiAodmVyc2VzRm9yUmVmPy5sZW5ndGggPiAxKSB7XG4gICAgICBzZXRTdGF0ZSh7IHNob3dBbGlnbm1lbnRQb3B1cDogdHJ1ZSB9KVxuICAgIH0gZWxzZSBpZiAodmVyc2VzRm9yUmVmPy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHNldFN0YXRlKHsgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogdmVyc2VzRm9yUmVmWzBdIH0pXG4gICAgfVxuICB9XG5cbiAgY29uc3Qgb25SZW5kZXJUb29sYmFyID0gKHsgaXRlbXMgfSkgPT4ge1xuICAgIGNvbnN0IG5ld0l0ZW1zID0gWy4uLml0ZW1zXVxuXG4gICAgbGV0IGFsbFZlcnNlc0FsaWduZWQgPSBmYWxzZVxuXG4gICAgLy8gQ2hlY2sgaWYgYWxsIHZhbHVlcyBpbiB2ZXJzZXNBbGlnbm1lbnRTdGF0dXMgYXJlIHRydWVcbiAgICBpZiAodmVyc2VzQWxpZ25tZW50U3RhdHVzKSB7XG4gICAgICBhbGxWZXJzZXNBbGlnbmVkID0gT2JqZWN0LnZhbHVlcyh2ZXJzZXNBbGlnbm1lbnRTdGF0dXMpLmV2ZXJ5KGFsaWduU3RhdHVzID0+IGFsaWduU3RhdHVzID09PSB0cnVlKVxuICAgIH1cblxuICAgIGxldCBhbGlnbkljb24gPSBudWxsXG4gICAgbGV0IGFsaWduQnV0dG9uVGV4dCA9ICcnXG5cbiAgICBpZiAoYWxsVmVyc2VzQWxpZ25lZCkge1xuICAgICAgYWxpZ25JY29uID0gPFJ4TGluazIgaWQ9e2B2YWxpZF9pY29uXyR7cmVzb3VyY2VJZH1gfSBjb2xvcj0nI0JCQicgLz5cbiAgICAgIGFsaWduQnV0dG9uVGV4dCA9ICdBbGlnbm1lbnQgaXMgVmFsaWQnXG4gICAgfSBlbHNlIHtcbiAgICAgIGFsaWduSWNvbiA9IDxSeExpbmtCcmVhazIgaWQ9e2BpbnZhbGlkX2FsaWdubWVudF9pY29uXyR7cmVzb3VyY2VJZH1gfSBjb2xvcj0nIzAwMCcgLz5cbiAgICAgIGFsaWduQnV0dG9uVGV4dCA9ICdBbGlnbm1lbnQgaXMgSW52YWxpZCdcbiAgICB9XG5cbiAgICBpZiAoc2V0V29yZEFsaWduZXJTdGF0dXMgJiYgcmVzb3VyY2VJZCAhPT0gJ09SSUdJTkFMX1NPVVJDRScpIHtcbiAgICAgIG5ld0l0ZW1zLnB1c2goXG4gICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgaWQ9e2BhbGlnbm1lbnRfaWNvbl8ke3Jlc291cmNlSWR9YH1cbiAgICAgICAgICBrZXk9J2NoZWNraW5nLWJ1dHRvbidcbiAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVBbGlnbkJ1dHRvbkNsaWNrfVxuICAgICAgICAgIHRpdGxlPXthbGlnbkJ1dHRvblRleHR9XG4gICAgICAgICAgYXJpYS1sYWJlbD17YWxpZ25CdXR0b25UZXh0fVxuICAgICAgICAgIHN0eWxlPXt7IGN1cnNvcjogJ3BvaW50ZXInIH19XG4gICAgICAgID5cbiAgICAgICAgICB7YWxpZ25JY29ufVxuICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICApXG4gICAgfVxuXG4gICAgbmV3SXRlbXMucHVzaChcbiAgICAgIDw+XG4gICAgICAgIDxVcGRhdGVCcmFuY2hCdXR0b24gey4uLnVwZGF0ZUJ1dHRvblByb3BzfSBpc0xvYWRpbmc9e2lzVXBkYXRlTG9hZGluZyB8fCBzdGFydFNhdmV9Lz5cbiAgICAgICAgPEVycm9yRGlhbG9nIHRpdGxlPXtkaWFsb2dUaXRsZX0gY29udGVudD17ZGlhbG9nTWVzc2FnZX0gb3Blbj17aXNFcnJvckRpYWxvZ09wZW59IG9uQ2xvc2U9e29uQ2xvc2VFcnJvckRpYWxvZ30gaXNMb2FkaW5nPXsgaXNVcGRhdGVMb2FkaW5nIHx8IHN0YXJ0U2F2ZSB9IGxpbms9e2RpYWxvZ0xpbmt9IGxpbmtUb29sdGlwPXtkaWFsb2dMaW5rVG9vbHRpcH0gLz5cbiAgICAgIDwvPlxuICAgIClcblxuICAgIHJldHVybiBuZXdJdGVtc1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U2VsZWN0aW9uc0NvbnRleHRQcm92aWRlclxuICAgICAgc2VsZWN0aW9ucz17c2VsZWN0aW9uc31cbiAgICAgIG9uU2VsZWN0aW9ucz17bmV3U2VsZWN0aW9ucyA9PiB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdvblNlbGVjdGlvbnMnLCBuZXdTZWxlY3Rpb25zKVxuICAgICAgfX1cbiAgICAgIHF1b3RlPXtzZWxlY3RlZFF1b3RlPy5xdW90ZX1cbiAgICAgIG9jY3VycmVuY2U9e2ZpeE9jY3VycmVuY2Uoc2VsZWN0ZWRRdW90ZT8ub2NjdXJyZW5jZSl9XG4gICAgICB2ZXJzZU9iamVjdHNNYXA9e3ZlcnNlT2JqZWN0c01hcH1cbiAgICA+XG4gICAgICA8Q2FyZFxuICAgICAgICBpZD17YHNjcmlwdHVyZV9jYXJkXyR7Y2FyZE51bX1gfVxuICAgICAgICB0aXRsZT17c2NyaXB0dXJlTGFiZWx9XG4gICAgICAgIHNldHRpbmdzVGl0bGU9e3NjcmlwdHVyZVRpdGxlICsgJyBTZXR0aW5ncyd9XG4gICAgICAgIGl0ZW1zPXtpdGVtc31cbiAgICAgICAgY2xhc3Nlcz17Y2xhc3Nlc31cbiAgICAgICAgaGVhZGVycz17aGVhZGVyc31cbiAgICAgICAgZmlsdGVycz17ZmlsdGVyc31cbiAgICAgICAgZm9udFNpemU9e2ZvbnRTaXplfVxuICAgICAgICBpdGVtSW5kZXg9e2l0ZW1JbmRleH1cbiAgICAgICAgc2V0RmlsdGVycz17c2V0RmlsdGVyc31cbiAgICAgICAgc2V0Rm9udFNpemU9e3NldEZvbnRTaXplfVxuICAgICAgICBzZXRJdGVtSW5kZXg9e3NldEl0ZW1JbmRleH1cbiAgICAgICAgbWFya2Rvd25WaWV3PXttYXJrZG93blZpZXd9XG4gICAgICAgIHNldE1hcmtkb3duVmlldz17c2V0TWFya2Rvd25WaWV3fVxuICAgICAgICBnZXRDdXN0b21Db21wb25lbnQ9e2dldFNjcmlwdHVyZVNlbGVjdG9yfVxuICAgICAgICBoaWRlTWFya2Rvd25Ub2dnbGVcbiAgICAgICAgb25NZW51Q2xvc2U9e29uTWVudUNsb3NlfVxuICAgICAgICBvbk1pbmltaXplPXtvbk1pbmltaXplID8gKCkgPT4gb25NaW5pbWl6ZShpZCwgc2NyaXB0dXJlVGl0bGUpIDogbnVsbH1cbiAgICAgICAgZWRpdGFibGU9e2VuYWJsZUVkaXQgfHwgZW5hYmxlQWxpZ25tZW50fVxuICAgICAgICBzYXZlZD17c3RhcnRTYXZlIHx8ICFoYXZlVW5zYXZlZENoYW5nZXN9XG4gICAgICAgIG9uU2F2ZUVkaXQ9eygpID0+IHNldFN0YXRlKHsgc2F2ZUNsaWNrZWQ6IHRydWUgfSl9XG4gICAgICAgIG9uUmVuZGVyVG9vbGJhcj17b25SZW5kZXJUb29sYmFyfVxuICAgICAgPlxuICAgICAgICA8ZGl2IGlkPVwic2NyaXB0dXJlLXBhbmUtbGlzdFwiPlxuICAgICAgICAgIHtyZW5kZXJlZFNjcmlwdHVyZVBhbmVzfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvQ2FyZD5cbiAgICAgIDxWZXJzZVNlbGVjdG9yUG9wdXBcbiAgICAgICAgcmVzb3VyY2VJZD17cmVzb3VyY2VJZH1cbiAgICAgICAgb3Blbj17c2hvd0FsaWdubWVudFBvcHVwfVxuICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTdGF0ZSh7IHNob3dBbGlnbm1lbnRQb3B1cDogZmFsc2UgfSl9XG4gICAgICAgIHZlcnNlc0ZvclJlZj17dmVyc2VzRm9yUmVmfVxuICAgICAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXM9e3ZlcnNlc0FsaWdubWVudFN0YXR1c31cbiAgICAgICAgb25WZXJzZVNlbGVjdD17KHZlcnNlKSA9PiBzZXRTdGF0ZSh7XG4gICAgICAgICAgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogdmVyc2UsXG4gICAgICAgICAgc2hvd0FsaWdubWVudFBvcHVwOiBmYWxzZSxcbiAgICAgICAgfSl9XG4gICAgICAvPlxuICAgIDwvU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlcj5cbiAgKVxufVxuXG5TY3JpcHR1cmVDYXJkLnByb3BUeXBlcyA9IHtcbiAgLyoqIHJlcG8gYnJhbmNoIG9yIHRhZyBzdWNoIGFzIG1hc3RlciAqL1xuICBhcHBSZWY6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgLyoqIGF1dGhlbnRpY2F0aW9uIGluZm8gKi9cbiAgYXV0aGVudGljYXRpb246IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBpbmRleCBmb3IgY3VycmVudCBib29rIChlLmcuICcwMScgZm9yICdnZW4nKSovXG4gIGJvb2tJbmRleDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIHNjcmlwdHVyZSBjYXJkIG51bWJlciAoMCB0byAyIGZvciBleGFtcGxlKSAqL1xuICBjYXJkTnVtOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIC8qKiBDU1MgY2xhc3NlcyAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogaWYgdHJ1ZSB0aGVuIHdvcmQgZGF0YSBob3ZlciBpcyBzaG93biAqL1xuICBkaXNhYmxlV29yZFBvcG92ZXI6IFByb3BUeXBlcy5ib29sLFxuICAvKiogZ2V0IGxhbmd1YWdlIGRldGFpbHMgKi9cbiAgZ2V0TGFuZ3VhZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIC8qKiBmdW5jdGlvbiB0byBnZXQgbGF0ZXN0IGxleGljb24gZGF0YSAqL1xuICBnZXRMZXhpY29uRGF0YTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBvcHRpb25hbCB1cmwgZm9yIGdyZWVrIHJlcG8gKi9cbiAgZ3JlZWtSZXBvVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogb3B0aW9uYWwgdXJsIGZvciBoZWJyZXcgcmVwbyAqL1xuICBoZWJyZXdSZXBvVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogb3B0aW9uYWwgaHR0cCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3IgZmV0Y2hpbmcgcmVzb3VyY2VzLCBkZWZhdWx0IGlzIDAgKHZlcnkgbG9uZyB3YWl0KSAqL1xuICBodHRwQ29uZmlnOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogaHRtbCBpZGVudGlmaWVyIHRvIHVzZSBmb3IgY2FyZCAqL1xuICBpZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIG1ldGhvZCB0byBkZXRlcm1pbmUgaWYgTlQgb3IgT1QgKi9cbiAgaXNOVDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgLyoqIHVzZXItbmFtZSAqL1xuICBsb2dnZWRJblVzZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBmdW5jdGlvbiB0byBtaW5pbWl6ZSB0aGUgY2FyZCAob3B0aW9uYWwpICovXG4gIG9uTWluaW1pemU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogb3B0aW9uYWwgY2FsbGJhY2sgaWYgZXJyb3IgbG9hZGluZyByZXNvdXJjZSwgcGFyYW1ldGVyIHJldHVybmVkIGFyZTpcbiAgICogICAgKHtzdHJpbmd9IGVycm9yTWVzc2FnZSwge2Jvb2xlYW59IGlzQWNjZXNzRXJyb3IsIHtvYmplY3R9IHJlc291cmNlU3RhdHVzKVxuICAgKiAgICAgIC0gaXNBY2Nlc3NFcnJvciAtIGlzIHRydWUgaWYgdGhpcyB3YXMgYW4gZXJyb3IgdHJ5aW5nIHRvIGFjY2VzcyBmaWxlXG4gICAqICAgICAgLSByZXNvdXJjZVN0YXR1cyAtIGlzIG9iamVjdCBjb250YWluaW5nIGRldGFpbHMgYWJvdXQgcHJvYmxlbXMgZmV0Y2hpbmcgcmVzb3VyY2UgKi9cbiAgb25SZXNvdXJjZUVycm9yOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIHRoZSBvcmlnaW5hbCBzY3JpcHR1cmUgYm9va09iamVjdHMgZm9yIGN1cnJlbnQgYm9vayAqL1xuICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzOiBQcm9wVHlwZXMub2JqZWN0LFxuICByZWZlcmVuY2U6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgLyoqIHByb2plY3RJZCAoYm9va0lEKSB0byB1c2UgKi9cbiAgICBwcm9qZWN0SWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogY3VycmVudCBjaGFwdGVyIG51bWJlciAqL1xuICAgIGNoYXB0ZXI6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKS5pc1JlcXVpcmVkLFxuICAgIC8qKiBjdXJyZW50IHZlcnNlIG51bWJlciAqL1xuICAgIHZlcnNlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc3RyaW5nXSkuaXNSZXF1aXJlZCxcbiAgfSksXG4gIC8qKiByZXNvdXJjZSBvYmplY3QgKi9cbiAgcmVzb3VyY2U6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgLyoqIHJlc291cmNlIGxhbmd1YWdlIHRvIHVzZSAqL1xuICAgIGxhbmd1YWdlSWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogcmVwbyBvd25lciBzdWNoIGFzIHVuZm9sZGluZ1dvcmQgKi9cbiAgICBvd25lcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiByZXNvdXJjZUlkIHRvIHVzZSAoZS5nLiB1Z250KSAqL1xuICAgIHJlc291cmNlSWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogcmVwbyBvd25lciBmb3Igb3JpZ2luYWwgbGFuZ3VhZ2VzIHN1Y2ggYXMgdW5mb2xkaW5nV29yZCAqL1xuICAgIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB9KSxcbiAgLyoqIHJlc291cmNlTGluayAqL1xuICByZXNvdXJjZUxpbms6IFByb3BUeXBlcy5hbnksXG4gIC8qKlRoaXMgaXMgY3VycmVudGx5IHNlbGVjdGVkIHF1b3RlICovXG4gIHNlbGVjdGVkUXVvdGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBzZXJ2ZXIgKGUuZy4gJ2h0dHBzOi8vZ2l0LmRvb3I0My5vcmcnKSAqL1xuICBzZXJ2ZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgLyoqIGNhbGxiYWNrIHRvIHVwZGF0ZSBsb2FkaW5nIHN0YXRlICovXG4gIHNldEFyZVJlc291cmNlc0xvYWRpbmc6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogY2FsbGJhY2sgdG8gdXBkYXRlIHNhdmluZyBzdGF0ZSovXG4gIHNldEFyZVJlc291cmNlc1NhdmluZzogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byByZXBvcnQgY2FyZCBtZXJnZSBzdGF0dXMgKi9cbiAgc2V0Q2FyZHNMb2FkaW5nTWVyZ2U6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogY2FsbGJhY2sgdG8gcmVwb3J0IGNhcmQgdXBkYXRlIHN0YXR1cyAqL1xuICBzZXRDYXJkc0xvYWRpbmdVcGRhdGU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogY2FsbGJhY2sgdG8gcmVwb3J0IGNhcmQgc2F2aW5nIHN0YXR1cyAqL1xuICBzZXRDYXJkc1NhdmluZzogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBmdW5jdGlvbiB0byBzZXQgc3RhdGUgaW4gYXBwIHRoYXQgdGhlcmUgYXJlIHVuc2F2ZWQgY2hhbmdlcyAqL1xuICBzZXRTYXZlZENoYW5nZXM6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogY2FsbGJhY2sgdG8gdXBkYXRlIHdvcmQgYWxpZ25lciBzdGF0ZSAqL1xuICBzZXRXb3JkQWxpZ25lclN0YXR1czogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiB0aXRsZSBmb3Igc2NyaXB0dXJlIGNhcmQgKi9cbiAgdGl0bGU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgLyoqIG9wdGlvbmFsIGZ1bmN0aW9uIGZvciBsb2NhbGl6YXRpb24gKi9cbiAgdHJhbnNsYXRlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHVwZGF0ZSB0aGUgY2FyZCdzIG1lcmdlIHN0YXRlIGluIGFwcCAqL1xuICB1cGRhdGVNZXJnZVN0YXRlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIHVzZSBtZXRob2QgZm9yIHVzaW5nIGxvY2FsIHN0b3JhZ2Ugc3BlY2lmaWMgZm9yIHVzZXIgKi9cbiAgdXNlVXNlckxvY2FsU3RvcmFnZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbn1cbiJdfQ==