@appium/base-driver 8.5.2 → 8.5.3

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.
Files changed (66) hide show
  1. package/build/lib/basedriver/capabilities.js +1 -1
  2. package/build/lib/basedriver/commands/event.js +1 -1
  3. package/build/lib/basedriver/commands/find.js +1 -1
  4. package/build/lib/basedriver/commands/index.js +1 -1
  5. package/build/lib/basedriver/commands/log.js +1 -1
  6. package/build/lib/basedriver/commands/session.js +1 -1
  7. package/build/lib/basedriver/commands/settings.js +1 -1
  8. package/build/lib/basedriver/commands/timeout.js +1 -1
  9. package/build/lib/basedriver/core.js +1 -1
  10. package/build/lib/basedriver/desired-caps.js +1 -1
  11. package/build/lib/basedriver/device-settings.js +1 -1
  12. package/build/lib/basedriver/driver.js +1 -1
  13. package/build/lib/basedriver/helpers.js +1 -1
  14. package/build/lib/basedriver/logger.js +1 -1
  15. package/build/lib/constants.js +1 -1
  16. package/build/lib/express/crash.js +1 -1
  17. package/build/lib/express/express-logging.js +1 -1
  18. package/build/lib/express/idempotency.js +1 -1
  19. package/build/lib/express/logger.js +1 -1
  20. package/build/lib/express/middleware.js +1 -1
  21. package/build/lib/express/server.js +1 -1
  22. package/build/lib/express/static.js +1 -1
  23. package/build/lib/express/websocket.js +1 -1
  24. package/build/lib/helpers/capabilities.js +1 -1
  25. package/build/lib/index.js +1 -1
  26. package/build/lib/jsonwp-proxy/protocol-converter.js +1 -1
  27. package/build/lib/jsonwp-proxy/proxy.js +1 -1
  28. package/build/lib/jsonwp-status/status.js +1 -1
  29. package/build/lib/protocol/errors.js +1 -1
  30. package/build/lib/protocol/helpers.js +1 -1
  31. package/build/lib/protocol/index.js +1 -1
  32. package/build/lib/protocol/protocol.js +1 -1
  33. package/build/lib/protocol/routes.js +1 -1
  34. package/build/lib/protocol/validators.js +1 -1
  35. package/build/test/basedriver/driver-e2e-tests.js +1 -1
  36. package/build/test/basedriver/driver-tests.js +1 -1
  37. package/build/test/basedriver/index.js +1 -1
  38. package/build/test/e2e/basedriver/driver.e2e.spec.js +1 -1
  39. package/build/test/e2e/basedriver/helpers.e2e.spec.js +1 -1
  40. package/build/test/e2e/basedriver/websockets.e2e.spec.js +1 -1
  41. package/build/test/e2e/express/server.e2e.spec.js +1 -1
  42. package/build/test/e2e/jsonwp-proxy/proxy.e2e.spec.js +1 -1
  43. package/build/test/e2e/protocol/fake-driver.js +1 -1
  44. package/build/test/e2e/protocol/helpers.js +1 -1
  45. package/build/test/e2e/protocol/protocol.e2e.spec.js +1 -1
  46. package/build/test/helpers.js +1 -1
  47. package/build/test/unit/basedriver/capabilities.spec.js +1 -1
  48. package/build/test/unit/basedriver/capability.spec.js +1 -1
  49. package/build/test/unit/basedriver/commands/event.spec.js +1 -1
  50. package/build/test/unit/basedriver/commands/log.spec.js +1 -1
  51. package/build/test/unit/basedriver/device-settings.spec.js +1 -1
  52. package/build/test/unit/basedriver/driver.spec.js +1 -1
  53. package/build/test/unit/basedriver/helpers.spec.js +1 -1
  54. package/build/test/unit/basedriver/timeout.spec.js +1 -1
  55. package/build/test/unit/express/server.spec.js +1 -1
  56. package/build/test/unit/express/static.spec.js +1 -1
  57. package/build/test/unit/jsonwp-proxy/mock-request.js +1 -1
  58. package/build/test/unit/jsonwp-proxy/protocol-converter.spec.js +1 -1
  59. package/build/test/unit/jsonwp-proxy/proxy.spec.js +1 -1
  60. package/build/test/unit/jsonwp-proxy/url.spec.js +1 -1
  61. package/build/test/unit/jsonwp-status/status.spec.js +1 -1
  62. package/build/test/unit/protocol/errors.spec.js +1 -1
  63. package/build/test/unit/protocol/routes.spec.js +1 -1
  64. package/build/test/unit/protocol/validator.spec.js +1 -1
  65. package/build/tsconfig.tsbuildinfo +1 -1
  66. package/package.json +5 -8
@@ -235,4 +235,4 @@ class BaseDriver extends (0, _commands.createBaseDriverClass)(BaseDriverCore) {}
235
235
  exports.BaseDriver = BaseDriver;
236
236
  var _default = BaseDriver;
237
237
  exports.default = _default;
238
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9iYXNlZHJpdmVyL2RyaXZlci5qcyJdLCJuYW1lcyI6WyJFVkVOVF9TRVNTSU9OX0lOSVQiLCJFVkVOVF9TRVNTSU9OX1NUQVJUIiwiRVZFTlRfU0VTU0lPTl9RVUlUX1NUQVJUIiwiRVZFTlRfU0VTU0lPTl9RVUlUX0RPTkUiLCJPTl9VTkVYUEVDVEVEX1NIVVRET1dOX0VWRU5UIiwiQmFzZURyaXZlckNvcmUiLCJEcml2ZXJDb3JlIiwiY2xpQXJncyIsImV4ZWN1dGVDb21tYW5kIiwiY21kIiwiYXJncyIsInN0YXJ0VGltZSIsIkRhdGUiLCJub3ciLCJwcm90b2NvbCIsImxvZ0V2ZW50IiwiREVMRVRFX1NFU1NJT05fQ09NTUFORCIsImNsZWFyTmV3Q29tbWFuZFRpbWVvdXQiLCJzaHV0ZG93blVuZXhwZWN0ZWRseSIsImVycm9ycyIsIk5vU3VjaERyaXZlckVycm9yIiwiTm90WWV0SW1wbGVtZW50ZWRFcnJvciIsInVuZXhwZWN0ZWRTaHV0ZG93bkxpc3RlbmVyIiwiY29tbWFuZEV4ZWN1dG9yIiwiQiIsInJhY2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiZXZlbnRFbWl0dGVyIiwib24iLCJmaW5hbGx5IiwicmVtb3ZlTGlzdGVuZXIiLCJyZXMiLCJpc0NvbW1hbmRzUXVldWVFbmFibGVkIiwiY29tbWFuZHNRdWV1ZUd1YXJkIiwiYWNxdWlyZSIsIkJhc2VEcml2ZXIiLCJuYW1lIiwic3RhcnROZXdDb21tYW5kVGltZW91dCIsImVuZFRpbWUiLCJfZXZlbnRIaXN0b3J5IiwiY29tbWFuZHMiLCJwdXNoIiwic3RhcnRVbmV4cGVjdGVkU2h1dGRvd24iLCJlcnIiLCJlbWl0Iiwic2Vzc2lvbklkIiwiZGVsZXRlU2Vzc2lvbiIsIm5ld0NvbW1hbmRUaW1lb3V0TXMiLCJub0NvbW1hbmRUaW1lciIsInNldFRpbWVvdXQiLCJsb2ciLCJ3YXJuIiwiZXJyb3JNZXNzYWdlIiwiRXJyb3IiLCJhc3NpZ25TZXJ2ZXIiLCJzZXJ2ZXIiLCJob3N0IiwicG9ydCIsInBhdGgiLCJzZXJ2ZXJIb3N0Iiwic2VydmVyUG9ydCIsInNlcnZlclBhdGgiLCJyZXNldCIsImRlYnVnIiwiY3VycmVudENvbmZpZyIsInByb3BlcnR5IiwicmVzZXRPblVuZXhwZWN0ZWRTaHV0ZG93biIsImNyZWF0ZVNlc3Npb24iLCJvcmlnaW5hbENhcHMiLCJrZXkiLCJ2YWx1ZSIsIl8iLCJ0b1BhaXJzIiwidzNjQ2FwYWJpbGl0aWVzMSIsInczY0NhcGFiaWxpdGllczIiLCJ3M2NDYXBhYmlsaXRpZXMiLCJkcml2ZXJEYXRhIiwiU2Vzc2lvbk5vdENyZWF0ZWRFcnJvciIsImNsb25lRGVlcCIsImZpbmQiLCJpc1czY0NhcHMiLCJzZXRQcm90b2NvbFczQyIsIkpTT04iLCJzdHJpbmdpZnkiLCJjYXBzIiwiZGVzaXJlZENhcENvbnN0cmFpbnRzIiwic2hvdWxkVmFsaWRhdGVDYXBzIiwiQVBQSVVNX09QVFNfQ0FQIiwiUFJFRklYRURfQVBQSVVNX09QVFNfQ0FQIiwiZSIsIm1lc3NhZ2UiLCJ2YWxpZGF0ZURlc2lyZWRDYXBzIiwidXRpbCIsInV1aWRWNCIsIm9wdHMiLCJpbml0aWFsT3B0cyIsIk9iamVjdCIsImFzc2lnbiIsIm5vUmVzZXQiLCJmdWxsUmVzZXQiLCJmYXN0UmVzZXQiLCJza2lwVW5pbnN0YWxsIiwiYXBwIiwidHJpbSIsImlzVW5kZWZpbmVkIiwibmV3Q29tbWFuZFRpbWVvdXQiLCJfbG9nIiwicHJlZml4IiwiaGVscGVycyIsImdlbmVyYXRlRHJpdmVyTG9nUHJlZml4IiwiaW5mbyIsImlzQnVzeSIsImtleXMiLCJxdWV1ZXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBSUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBTUE7O0FBQ0E7O0FBRUEsTUFBTUEsa0JBQWtCLEdBQUcscUJBQTNCO0FBQ0EsTUFBTUMsbUJBQW1CLEdBQUcsbUJBQTVCO0FBQ0EsTUFBTUMsd0JBQXdCLEdBQUcsc0JBQWpDO0FBQ0EsTUFBTUMsdUJBQXVCLEdBQUcscUJBQWhDO0FBQ0EsTUFBTUMsNEJBQTRCLEdBQUcsc0JBQXJDOztBQU1PLE1BQU1DLGNBQU4sU0FBNkJDLGdCQUE3QixDQUF3QztBQUc3Q0MsRUFBQUEsT0FBTzs7QUFXYSxRQUFkQyxjQUFjLENBQUVDLEdBQUYsRUFBTyxHQUFHQyxJQUFWLEVBQWdCO0FBRWxDLFFBQUlDLFNBQVMsR0FBR0MsSUFBSSxDQUFDQyxHQUFMLEVBQWhCOztBQUVBLFFBQUlKLEdBQUcsS0FBSyxlQUFaLEVBQTZCO0FBRTNCLFdBQUtLLFFBQUwsR0FBZ0IsaUNBQWtCSixJQUFsQixDQUFoQjtBQUNBLFdBQUtLLFFBQUwsQ0FBY2Ysa0JBQWQ7QUFDRCxLQUpELE1BSU8sSUFBSVMsR0FBRyxLQUFLTyxnQ0FBWixFQUFvQztBQUN6QyxXQUFLRCxRQUFMLENBQWNiLHdCQUFkO0FBQ0Q7O0FBSUQsVUFBTSxLQUFLZSxzQkFBTCxFQUFOOztBQUVBLFFBQUksS0FBS0Msb0JBQVQsRUFBK0I7QUFDN0IsWUFBTSxJQUFJQyxpQkFBT0MsaUJBQVgsQ0FDRix3Q0FERSxDQUFOO0FBR0Q7O0FBR0QsUUFBSSxDQUFDLEtBQUtYLEdBQUwsQ0FBTCxFQUFnQjtBQUNkLFlBQU0sSUFBSVUsaUJBQU9FLHNCQUFYLEVBQU47QUFDRDs7QUFFRCxRQUFJQywwQkFBSjs7QUFDQSxVQUFNQyxlQUFlLEdBQUcsWUFDdEIsTUFBTUMsa0JBQUVDLElBQUYsQ0FBTyxDQUNYLEtBQUtoQixHQUFMLEVBQVUsR0FBR0MsSUFBYixDQURXLEVBRVgsSUFBSWMsaUJBQUosQ0FBTSxDQUFDRSxPQUFELEVBQVVDLE1BQVYsS0FBcUI7QUFDekJMLE1BQUFBLDBCQUEwQixHQUFHSyxNQUE3QjtBQUNBLFdBQUtDLFlBQUwsQ0FBa0JDLEVBQWxCLENBQ0l6Qiw0QkFESixFQUVJa0IsMEJBRko7QUFJRCxLQU5ELENBRlcsQ0FBUCxFQVNIUSxPQVRHLENBU0ssTUFBTTtBQUNmLFVBQUlSLDBCQUFKLEVBQWdDO0FBRTlCLGFBQUtNLFlBQUwsQ0FBa0JHLGNBQWxCLENBQ0kzQiw0QkFESixFQUVJa0IsMEJBRko7QUFJQUEsUUFBQUEsMEJBQTBCLEdBQUcsSUFBN0I7QUFDRDtBQUNGLEtBbEJLLENBRFI7O0FBb0JBLFVBQU1VLEdBQUcsR0FBRyxLQUFLQyxzQkFBTCxHQUNSLE1BQU0sS0FBS0Msa0JBQUwsQ0FBd0JDLE9BQXhCLENBQWdDQyxVQUFVLENBQUNDLElBQTNDLEVBQWlEZCxlQUFqRCxDQURFLEdBRVIsTUFBTUEsZUFBZSxFQUZ6Qjs7QUFVQSxRQUFJLEtBQUtVLHNCQUFMLElBQStCeEIsR0FBRyxLQUFLTyxnQ0FBM0MsRUFBbUU7QUFFakUsWUFBTSxLQUFLc0Isc0JBQUwsRUFBTjtBQUNEOztBQUdELFVBQU1DLE9BQU8sR0FBRzNCLElBQUksQ0FBQ0MsR0FBTCxFQUFoQjs7QUFDQSxTQUFLMkIsYUFBTCxDQUFtQkMsUUFBbkIsQ0FBNEJDLElBQTVCLENBQWlDO0FBQUNqQyxNQUFBQSxHQUFEO0FBQU1FLE1BQUFBLFNBQU47QUFBaUI0QixNQUFBQTtBQUFqQixLQUFqQzs7QUFDQSxRQUFJOUIsR0FBRyxLQUFLLGVBQVosRUFBNkI7QUFDM0IsV0FBS00sUUFBTCxDQUFjZCxtQkFBZDtBQUNELEtBRkQsTUFFTyxJQUFJUSxHQUFHLEtBQUtPLGdDQUFaLEVBQW9DO0FBQ3pDLFdBQUtELFFBQUwsQ0FBY1osdUJBQWQ7QUFDRDs7QUFFRCxXQUFPNkIsR0FBUDtBQUNEOztBQU00QixRQUF2QlcsdUJBQXVCLENBQzNCQyxHQUFHLEdBQUcsSUFBSXpCLGlCQUFPQyxpQkFBWCxDQUNGLHdDQURFLENBRHFCLEVBSTNCO0FBQ0EsU0FBS1EsWUFBTCxDQUFrQmlCLElBQWxCLENBQXVCekMsNEJBQXZCLEVBQXFEd0MsR0FBckQ7QUFDQSxTQUFLMUIsb0JBQUwsR0FBNEIsSUFBNUI7O0FBQ0EsUUFBSTtBQUNGLFVBQUksS0FBSzRCLFNBQUwsS0FBbUIsSUFBdkIsRUFBNkI7QUFDM0IsY0FBTSxLQUFLQyxhQUFMLENBQW1CLEtBQUtELFNBQXhCLENBQU47QUFDRDtBQUNGLEtBSkQsU0FJVTtBQUNSLFdBQUs1QixvQkFBTCxHQUE0QixLQUE1QjtBQUNEO0FBQ0Y7O0FBRTJCLFFBQXRCb0Isc0JBQXNCLEdBQUk7QUFFOUIsVUFBTSxLQUFLckIsc0JBQUwsRUFBTjtBQUdBLFFBQUksQ0FBQyxLQUFLK0IsbUJBQVYsRUFBK0I7QUFFL0IsU0FBS0MsY0FBTCxHQUFzQkMsVUFBVSxDQUFDLFlBQVk7QUFDM0MsV0FBS0MsR0FBTCxDQUFTQyxJQUFULENBQ0csa0NBQUQsR0FDRyxHQUFFLEtBQUtKLG1CQUFMLEdBQTJCLE1BQU8sd0JBRnpDO0FBSUEsWUFBTUssWUFBWSxHQUNmLHlCQUFELEdBQ0MsR0FBRSxLQUFLTCxtQkFBTCxHQUEyQixNQUFPLFdBRHJDLEdBRUMsaURBRkQsR0FHQyx3Q0FKSDtBQUtBLFlBQU0sS0FBS0wsdUJBQUwsQ0FBNkIsSUFBSVcsS0FBSixDQUFVRCxZQUFWLENBQTdCLENBQU47QUFDRCxLQVgrQixFQVc3QixLQUFLTCxtQkFYd0IsQ0FBaEM7QUFZRDs7QUFTRE8sRUFBQUEsWUFBWSxDQUFFQyxNQUFGLEVBQVVDLElBQVYsRUFBZ0JDLElBQWhCLEVBQXNCQyxJQUF0QixFQUE0QjtBQUN0QyxTQUFLSCxNQUFMLEdBQWNBLE1BQWQ7QUFDQSxTQUFLSSxVQUFMLEdBQWtCSCxJQUFsQjtBQUNBLFNBQUtJLFVBQUwsR0FBa0JILElBQWxCO0FBQ0EsU0FBS0ksVUFBTCxHQUFrQkgsSUFBbEI7QUFDRDs7QUFNVSxRQUFMSSxLQUFLLEdBQUk7QUFDYixTQUFLWixHQUFMLENBQVNhLEtBQVQsQ0FBZSwyQkFBZjtBQUNBLFNBQUtiLEdBQUwsQ0FBU2EsS0FBVCxDQUFlLDRCQUFmO0FBR0EsUUFBSUMsYUFBYSxHQUFHLEVBQXBCOztBQUNBLFNBQUssSUFBSUMsUUFBVCxJQUFxQixDQUNuQixnQkFEbUIsRUFFbkIscUJBRm1CLEVBR25CLFdBSG1CLEVBSW5CLDJCQUptQixDQUFyQixFQUtHO0FBQ0RELE1BQUFBLGFBQWEsQ0FBQ0MsUUFBRCxDQUFiLEdBQTBCLEtBQUtBLFFBQUwsQ0FBMUI7QUFDRDs7QUFHRCxTQUFLQyx5QkFBTCxHQUFpQyxNQUFNLENBQUUsQ0FBekM7O0FBRUEsUUFBSTtBQUNGLFVBQUksS0FBS3JCLFNBQUwsS0FBbUIsSUFBdkIsRUFBNkI7QUFDM0IsY0FBTSxLQUFLQyxhQUFMLENBQW1CLEtBQUtELFNBQXhCLENBQU47QUFDRDs7QUFDRCxXQUFLSyxHQUFMLENBQVNhLEtBQVQsQ0FBZSxnQkFBZjtBQUNBLFlBQU0sS0FBS0ksYUFBTCxDQUFtQixLQUFLQyxZQUF4QixDQUFOO0FBQ0QsS0FORCxTQU1VO0FBRVIsV0FBSyxJQUFJLENBQUNDLEdBQUQsRUFBTUMsS0FBTixDQUFULElBQXlCQyxnQkFBRUMsT0FBRixDQUFVUixhQUFWLENBQXpCLEVBQW1EO0FBQ2pELGFBQUtLLEdBQUwsSUFBWUMsS0FBWjtBQUNEO0FBQ0Y7O0FBQ0QsVUFBTSxLQUFLdEQsc0JBQUwsRUFBTjtBQUNEOztBQWNrQixRQUFibUQsYUFBYSxDQUNqQk0sZ0JBRGlCLEVBRWpCQyxnQkFGaUIsRUFHakJDLGVBSGlCLEVBSWpCQyxVQUppQixFQUtqQjtBQUNBLFFBQUksS0FBSy9CLFNBQUwsS0FBbUIsSUFBdkIsRUFBNkI7QUFDM0IsWUFBTSxJQUFJM0IsaUJBQU8yRCxzQkFBWCxDQUNELHNEQURDLENBQU47QUFHRDs7QUFFRCxTQUFLM0IsR0FBTCxDQUFTYSxLQUFUOztBQUVBLFVBQU1LLFlBQVksR0FBR0csZ0JBQUVPLFNBQUYsQ0FBWSxDQUMvQkgsZUFEK0IsRUFFL0JGLGdCQUYrQixFQUcvQkMsZ0JBSCtCLEVBSS9CSyxJQUorQixDQUkxQkMsdUJBSjBCLENBQVosQ0FBckI7O0FBS0EsUUFBSSxDQUFDWixZQUFMLEVBQW1CO0FBQ2pCLFlBQU0sSUFBSWxELGlCQUFPMkQsc0JBQVgsQ0FDRCx3REFDRSx5RkFGRCxDQUFOO0FBSUQ7O0FBRUQsU0FBS0ksY0FBTDtBQUVBLFNBQUtiLFlBQUwsR0FBb0JHLGdCQUFFTyxTQUFGLENBQVlWLFlBQVosQ0FBcEI7QUFDQSxTQUFLbEIsR0FBTCxDQUFTYSxLQUFULENBQ0csMkNBQTBDbUIsSUFBSSxDQUFDQyxTQUFMLENBQ3pDZixZQUR5QyxFQUV6QyxJQUZ5QyxFQUd6QyxDQUh5QyxDQUl6QyxFQUxKO0FBUUEsUUFBSWdCLElBQUo7O0FBQ0EsUUFBSTtBQUNGQSxNQUFBQSxJQUFJLEdBQUcsd0NBQ0ZoQixZQURFLEVBRUYsS0FBS2lCLHFCQUZILEVBR0YsS0FBS0Msa0JBSEgsQ0FBUDs7QUFLQSxVQUFJRixJQUFJLENBQUNHLDhCQUFELENBQVIsRUFBMkI7QUFDekIsYUFBS3JDLEdBQUwsQ0FBU2EsS0FBVCxDQUNNLFNBQVF5Qix1Q0FBeUIsd0RBRHZDO0FBR0FKLFFBQUFBLElBQUksR0FBRyx5Q0FBcUJBLElBQXJCLENBQVA7QUFDRDs7QUFDREEsTUFBQUEsSUFBSSxHQUFHLDJCQUFRQSxJQUFSLEVBQWMsS0FBS0MscUJBQW5CLEVBQTBDLEtBQUtuQyxHQUEvQyxDQUFQO0FBQ0QsS0FiRCxDQWFFLE9BQU91QyxDQUFQLEVBQVU7QUFDVixZQUFNLElBQUl2RSxpQkFBTzJELHNCQUFYLENBQWtDWSxDQUFDLENBQUNDLE9BQXBDLENBQU47QUFDRDs7QUFFRCxTQUFLQyxtQkFBTCxDQUF5QlAsSUFBekI7QUFFQSxTQUFLdkMsU0FBTCxHQUFpQitDLGNBQUtDLE1BQUwsRUFBakI7QUFDQSxTQUFLVCxJQUFMLEdBQVlBLElBQVo7QUFDQSxTQUFLVSxJQUFMLEdBQVl2QixnQkFBRU8sU0FBRixDQUFZLEtBQUtpQixXQUFqQixDQUFaO0FBR0FDLElBQUFBLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLEtBQUtILElBQW5CLEVBQXlCLEtBQUtWLElBQTlCOztBQUtBLFFBQUksS0FBS1UsSUFBTCxDQUFVSSxPQUFWLElBQXFCLEtBQUtKLElBQUwsQ0FBVUssU0FBbkMsRUFBOEM7QUFDNUMsWUFBTSxJQUFJOUMsS0FBSixDQUNELDZEQUNFLG9EQURGLEdBRUUsbURBSEQsQ0FBTjtBQUtEOztBQUNELFFBQUksS0FBS3lDLElBQUwsQ0FBVUksT0FBVixLQUFzQixJQUExQixFQUFnQztBQUM5QixXQUFLSixJQUFMLENBQVVLLFNBQVYsR0FBc0IsS0FBdEI7QUFDRDs7QUFDRCxRQUFJLEtBQUtMLElBQUwsQ0FBVUssU0FBVixLQUF3QixJQUE1QixFQUFrQztBQUNoQyxXQUFLTCxJQUFMLENBQVVJLE9BQVYsR0FBb0IsS0FBcEI7QUFDRDs7QUFDRCxTQUFLSixJQUFMLENBQVVNLFNBQVYsR0FBc0IsQ0FBQyxLQUFLTixJQUFMLENBQVVLLFNBQVgsSUFBd0IsQ0FBQyxLQUFLTCxJQUFMLENBQVVJLE9BQXpEO0FBQ0EsU0FBS0osSUFBTCxDQUFVTyxhQUFWLEdBQTBCLEtBQUtQLElBQUwsQ0FBVU0sU0FBVixJQUF1QixLQUFLTixJQUFMLENBQVVJLE9BQTNEOztBQUdBLFFBQUksT0FBTyxLQUFLSixJQUFMLENBQVVRLEdBQWpCLEtBQXlCLFFBQXpCLElBQXFDLEtBQUtSLElBQUwsQ0FBVVEsR0FBVixDQUFjQyxJQUFkLE9BQXlCLEVBQWxFLEVBQXNFO0FBQ3BFLGFBQU8sS0FBS1QsSUFBTCxDQUFVUSxHQUFqQjtBQUNEOztBQUVELFFBQUksQ0FBQy9CLGdCQUFFaUMsV0FBRixDQUFjLEtBQUtwQixJQUFMLENBQVVxQixpQkFBeEIsQ0FBTCxFQUFpRDtBQUMvQyxXQUFLMUQsbUJBQUwsR0FBMkIsS0FBS3FDLElBQUwsQ0FBVXFCLGlCQUFWLEdBQThCLElBQXpEO0FBQ0Q7O0FBRUQsU0FBS0MsSUFBTCxDQUFVQyxNQUFWLEdBQW1CQyxpQkFBUUMsdUJBQVIsQ0FBZ0MsSUFBaEMsRUFBc0MsS0FBS2hFLFNBQTNDLENBQW5CO0FBRUEsU0FBS0ssR0FBTCxDQUFTNEQsSUFBVCxDQUFlLG9DQUFtQyxLQUFLakUsU0FBVSxFQUFqRTtBQUVBLFdBQU8sQ0FBQyxLQUFLQSxTQUFOLEVBQWlCdUMsSUFBakIsQ0FBUDtBQUNEOztBQVFrQixRQUFidEMsYUFBYSxDQUFFRCxTQUFGLEVBQWErQixVQUFiLEVBQXlCO0FBQzFDLFVBQU0sS0FBSzVELHNCQUFMLEVBQU47O0FBQ0EsUUFBSSxLQUFLZ0Isc0JBQUwsSUFBK0IsS0FBS0Msa0JBQUwsQ0FBd0I4RSxNQUF4QixFQUFuQyxFQUFxRTtBQUduRSxXQUFLLE1BQU0xQyxHQUFYLElBQWtCRSxnQkFBRXlDLElBQUYsQ0FBTyxLQUFLL0Usa0JBQUwsQ0FBd0JnRixNQUEvQixDQUFsQixFQUEwRDtBQUV4RCxhQUFLaEYsa0JBQUwsQ0FBd0JnRixNQUF4QixDQUErQjVDLEdBQS9CLElBQXNDLEVBQXRDO0FBQ0Q7QUFDRjs7QUFDRCxTQUFLeEIsU0FBTCxHQUFpQixJQUFqQjtBQUNBLFNBQUs2RCxJQUFMLENBQVVDLE1BQVYsR0FBbUJDLGlCQUFRQyx1QkFBUixDQUFnQyxJQUFoQyxDQUFuQjtBQUNEOztBQXRUNEM7Ozs7QUE2VC9DLE1BQU0xRSxVQUFOLFNBQXlCLHFDQUFzQi9CLGNBQXRCLENBQXpCLENBQStEOzs7ZUFFaEQrQixVIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG4vKiBlc2xpbnQtZGlzYWJsZSByZXF1aXJlLWF3YWl0ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuXG5pbXBvcnQgeyBEcml2ZXJDb3JlIH0gZnJvbSAnLi9jb3JlJztcbmltcG9ydCB7IHV0aWwgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGZpeENhcHMsIGlzVzNjQ2FwcyB9IGZyb20gJy4uL2hlbHBlcnMvY2FwYWJpbGl0aWVzJztcbmltcG9ydCB7IERFTEVURV9TRVNTSU9OX0NPTU1BTkQsIGRldGVybWluZVByb3RvY29sLCBlcnJvcnMgfSBmcm9tICcuLi9wcm90b2NvbCc7XG5pbXBvcnQge1xuICBBUFBJVU1fT1BUU19DQVAsXG4gIFBSRUZJWEVEX0FQUElVTV9PUFRTX0NBUCxcbiAgcHJvY2Vzc0NhcGFiaWxpdGllcyxcbiAgcHJvbW90ZUFwcGl1bU9wdGlvbnNcbn0gZnJvbSAnLi9jYXBhYmlsaXRpZXMnO1xuaW1wb3J0IHsgY3JlYXRlQmFzZURyaXZlckNsYXNzIH0gZnJvbSAnLi9jb21tYW5kcyc7XG5pbXBvcnQgaGVscGVycyBmcm9tICcuL2hlbHBlcnMnO1xuXG5jb25zdCBFVkVOVF9TRVNTSU9OX0lOSVQgPSAnbmV3U2Vzc2lvblJlcXVlc3RlZCc7XG5jb25zdCBFVkVOVF9TRVNTSU9OX1NUQVJUID0gJ25ld1Nlc3Npb25TdGFydGVkJztcbmNvbnN0IEVWRU5UX1NFU1NJT05fUVVJVF9TVEFSVCA9ICdxdWl0U2Vzc2lvblJlcXVlc3RlZCc7XG5jb25zdCBFVkVOVF9TRVNTSU9OX1FVSVRfRE9ORSA9ICdxdWl0U2Vzc2lvbkZpbmlzaGVkJztcbmNvbnN0IE9OX1VORVhQRUNURURfU0hVVERPV05fRVZFTlQgPSAnb25VbmV4cGVjdGVkU2h1dGRvd24nO1xuXG5cbi8qKlxuICogQGltcGxlbWVudHMge1Nlc3Npb25IYW5kbGVyfVxuICovXG5leHBvcnQgY2xhc3MgQmFzZURyaXZlckNvcmUgZXh0ZW5kcyBEcml2ZXJDb3JlIHtcblxuICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsYW55Pnx1bmRlZmluZWR9ICovXG4gIGNsaUFyZ3M7XG5cbiAgLy8gVGhpcyBpcyB0aGUgbWFpbiBjb21tYW5kIGhhbmRsZXIgZm9yIHRoZSBkcml2ZXIuIEl0IHdyYXBzIGNvbW1hbmRcbiAgLy8gZXhlY3V0aW9uIHdpdGggdGltZW91dCBsb2dpYywgY2hlY2tpbmcgdGhhdCB3ZSBoYXZlIGEgdmFsaWQgc2Vzc2lvbixcbiAgLy8gYW5kIGVuc3VyaW5nIHRoYXQgd2UgZXhlY3V0ZSBjb21tYW5kcyBvbmUgYXQgYSB0aW1lLiBUaGlzIG1ldGhvZCBpcyBjYWxsZWRcbiAgLy8gYnkgTUpTT05XUCdzIGV4cHJlc3Mgcm91dGVyLlxuICAvKipcbiAgICAqIEBwYXJhbSB7c3RyaW5nfSBjbWRcbiAgICAqIEBwYXJhbSAgey4uLmFueVtdfSBhcmdzXG4gICAgKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fVxuICAgICovXG4gIGFzeW5jIGV4ZWN1dGVDb21tYW5kIChjbWQsIC4uLmFyZ3MpIHtcbiAgICAvLyBnZXQgc3RhcnQgdGltZSBmb3IgdGhpcyBjb21tYW5kLCBhbmQgbG9nIGluIHNwZWNpYWwgY2FzZXNcbiAgICBsZXQgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcblxuICAgIGlmIChjbWQgPT09ICdjcmVhdGVTZXNzaW9uJykge1xuICAgICAgLy8gSWYgY3JlYXRpbmcgYSBzZXNzaW9uIGRldGVybWluZSBpZiBXM0Mgb3IgTUpTT05XUCBwcm90b2NvbCB3YXMgcmVxdWVzdGVkIGFuZCByZW1lbWJlciB0aGUgY2hvaWNlXG4gICAgICB0aGlzLnByb3RvY29sID0gZGV0ZXJtaW5lUHJvdG9jb2woYXJncyk7XG4gICAgICB0aGlzLmxvZ0V2ZW50KEVWRU5UX1NFU1NJT05fSU5JVCk7XG4gICAgfSBlbHNlIGlmIChjbWQgPT09IERFTEVURV9TRVNTSU9OX0NPTU1BTkQpIHtcbiAgICAgIHRoaXMubG9nRXZlbnQoRVZFTlRfU0VTU0lPTl9RVUlUX1NUQVJUKTtcbiAgICB9XG5cbiAgICAvLyBpZiB3ZSBoYWQgYSBjb21tYW5kIHRpbWVyIHJ1bm5pbmcsIGNsZWFyIGl0IG5vdyB0aGF0IHdlJ3JlIHN0YXJ0aW5nXG4gICAgLy8gYSBuZXcgY29tbWFuZCBhbmQgc28gZG9uJ3Qgd2FudCB0byB0aW1lIG91dFxuICAgIGF3YWl0IHRoaXMuY2xlYXJOZXdDb21tYW5kVGltZW91dCgpO1xuXG4gICAgaWYgKHRoaXMuc2h1dGRvd25VbmV4cGVjdGVkbHkpIHtcbiAgICAgIHRocm93IG5ldyBlcnJvcnMuTm9TdWNoRHJpdmVyRXJyb3IoXG4gICAgICAgICAgJ1RoZSBkcml2ZXIgd2FzIHVuZXhwZWN0ZWRseSBzaHV0IGRvd24hJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSB0aGlzIGNvbW1hbmQsIGl0IG11c3Qgbm90IGJlIGltcGxlbWVudGVkXG4gICAgaWYgKCF0aGlzW2NtZF0pIHtcbiAgICAgIHRocm93IG5ldyBlcnJvcnMuTm90WWV0SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIGxldCB1bmV4cGVjdGVkU2h1dGRvd25MaXN0ZW5lcjtcbiAgICBjb25zdCBjb21tYW5kRXhlY3V0b3IgPSBhc3luYyAoKSA9PlxuICAgICAgYXdhaXQgQi5yYWNlKFtcbiAgICAgICAgdGhpc1tjbWRdKC4uLmFyZ3MpLFxuICAgICAgICBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgdW5leHBlY3RlZFNodXRkb3duTGlzdGVuZXIgPSByZWplY3Q7XG4gICAgICAgICAgdGhpcy5ldmVudEVtaXR0ZXIub24oXG4gICAgICAgICAgICAgIE9OX1VORVhQRUNURURfU0hVVERPV05fRVZFTlQsXG4gICAgICAgICAgICAgIHVuZXhwZWN0ZWRTaHV0ZG93bkxpc3RlbmVyLFxuICAgICAgICAgICk7XG4gICAgICAgIH0pLFxuICAgICAgXSkuZmluYWxseSgoKSA9PiB7XG4gICAgICAgIGlmICh1bmV4cGVjdGVkU2h1dGRvd25MaXN0ZW5lcikge1xuICAgICAgICAgIC8vIFRoaXMgaXMgbmVlZGVkIHRvIHByZXZlbnQgbWVtb3J5IGxlYWtzXG4gICAgICAgICAgdGhpcy5ldmVudEVtaXR0ZXIucmVtb3ZlTGlzdGVuZXIoXG4gICAgICAgICAgICAgIE9OX1VORVhQRUNURURfU0hVVERPV05fRVZFTlQsXG4gICAgICAgICAgICAgIHVuZXhwZWN0ZWRTaHV0ZG93bkxpc3RlbmVyLFxuICAgICAgICAgICk7XG4gICAgICAgICAgdW5leHBlY3RlZFNodXRkb3duTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICBjb25zdCByZXMgPSB0aGlzLmlzQ29tbWFuZHNRdWV1ZUVuYWJsZWRcbiAgICAgID8gYXdhaXQgdGhpcy5jb21tYW5kc1F1ZXVlR3VhcmQuYWNxdWlyZShCYXNlRHJpdmVyLm5hbWUsIGNvbW1hbmRFeGVjdXRvcilcbiAgICAgIDogYXdhaXQgY29tbWFuZEV4ZWN1dG9yKCk7XG5cbiAgICAvLyBpZiB3ZSBoYXZlIHNldCBhIG5ldyBjb21tYW5kIHRpbWVvdXQgKHdoaWNoIGlzIHRoZSBkZWZhdWx0KSwgc3RhcnQgYVxuICAgIC8vIHRpbWVyIG9uY2Ugd2UndmUgZmluaXNoZWQgZXhlY3V0aW5nIHRoaXMgY29tbWFuZC4gSWYgd2UgZG9uJ3QgY2xlYXJcbiAgICAvLyB0aGUgdGltZXIgKHdoaWNoIGlzIGRvbmUgd2hlbiBhIG5ldyBjb21tYW5kIGNvbWVzIGluKSwgd2Ugd2lsbCB0cmlnZ2VyXG4gICAgLy8gYXV0b21hdGljIHNlc3Npb24gZGVsZXRpb24gaW4gdGhpcy5vbkNvbW1hbmRUaW1lb3V0LiBPZiBjb3Vyc2Ugd2UgZG9uJ3RcbiAgICAvLyB3YW50IHRvIHRyaWdnZXIgdGhlIHRpbWVyIHdoZW4gdGhlIHVzZXIgaXMgc2h1dHRpbmcgZG93biB0aGUgc2Vzc2lvblxuICAgIC8vIGludGVudGlvbmFsbHlcbiAgICBpZiAodGhpcy5pc0NvbW1hbmRzUXVldWVFbmFibGVkICYmIGNtZCAhPT0gREVMRVRFX1NFU1NJT05fQ09NTUFORCkge1xuICAgICAgLy8gcmVzZXR0aW5nIGV4aXN0aW5nIHRpbWVvdXRcbiAgICAgIGF3YWl0IHRoaXMuc3RhcnROZXdDb21tYW5kVGltZW91dCgpO1xuICAgIH1cblxuICAgIC8vIGxvZyB0aW1pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBjb21tYW5kXG4gICAgY29uc3QgZW5kVGltZSA9IERhdGUubm93KCk7XG4gICAgdGhpcy5fZXZlbnRIaXN0b3J5LmNvbW1hbmRzLnB1c2goe2NtZCwgc3RhcnRUaW1lLCBlbmRUaW1lfSk7XG4gICAgaWYgKGNtZCA9PT0gJ2NyZWF0ZVNlc3Npb24nKSB7XG4gICAgICB0aGlzLmxvZ0V2ZW50KEVWRU5UX1NFU1NJT05fU1RBUlQpO1xuICAgIH0gZWxzZSBpZiAoY21kID09PSBERUxFVEVfU0VTU0lPTl9DT01NQU5EKSB7XG4gICAgICB0aGlzLmxvZ0V2ZW50KEVWRU5UX1NFU1NJT05fUVVJVF9ET05FKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHtFcnJvcn0gZXJyXG4gICAgKi9cbiAgYXN5bmMgc3RhcnRVbmV4cGVjdGVkU2h1dGRvd24gKFxuICAgIGVyciA9IG5ldyBlcnJvcnMuTm9TdWNoRHJpdmVyRXJyb3IoXG4gICAgICAgICdUaGUgZHJpdmVyIHdhcyB1bmV4cGVjdGVkbHkgc2h1dCBkb3duIScsXG4gICAgKSxcbiAgKSB7XG4gICAgdGhpcy5ldmVudEVtaXR0ZXIuZW1pdChPTl9VTkVYUEVDVEVEX1NIVVRET1dOX0VWRU5ULCBlcnIpOyAvLyBhbGxvdyBvdGhlcnMgdG8gbGlzdGVuIGZvciB0aGlzXG4gICAgdGhpcy5zaHV0ZG93blVuZXhwZWN0ZWRseSA9IHRydWU7XG4gICAgdHJ5IHtcbiAgICAgIGlmICh0aGlzLnNlc3Npb25JZCAhPT0gbnVsbCkge1xuICAgICAgICBhd2FpdCB0aGlzLmRlbGV0ZVNlc3Npb24odGhpcy5zZXNzaW9uSWQpO1xuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnNodXRkb3duVW5leHBlY3RlZGx5ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc3RhcnROZXdDb21tYW5kVGltZW91dCAoKSB7XG4gICAgLy8gbWFrZSBzdXJlIHRoZXJlIGFyZSBubyByb2d1ZSB0aW1lb3V0c1xuICAgIGF3YWl0IHRoaXMuY2xlYXJOZXdDb21tYW5kVGltZW91dCgpO1xuXG4gICAgLy8gaWYgY29tbWFuZCB0aW1lb3V0IGlzIDAsIGl0IGlzIGRpc2FibGVkXG4gICAgaWYgKCF0aGlzLm5ld0NvbW1hbmRUaW1lb3V0TXMpIHJldHVybjsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBjdXJseVxuXG4gICAgdGhpcy5ub0NvbW1hbmRUaW1lciA9IHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgdGhpcy5sb2cud2FybihcbiAgICAgICAgYFNodXR0aW5nIGRvd24gYmVjYXVzZSB3ZSB3YWl0ZWQgYCArXG4gICAgICAgICAgYCR7dGhpcy5uZXdDb21tYW5kVGltZW91dE1zIC8gMTAwMC4wfSBzZWNvbmRzIGZvciBhIGNvbW1hbmRgLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9XG4gICAgICAgIGBOZXcgQ29tbWFuZCBUaW1lb3V0IG9mIGAgK1xuICAgICAgICBgJHt0aGlzLm5ld0NvbW1hbmRUaW1lb3V0TXMgLyAxMDAwLjB9IHNlY29uZHMgYCArXG4gICAgICAgIGBleHBpcmVkLiBUcnkgY3VzdG9taXppbmcgdGhlIHRpbWVvdXQgdXNpbmcgdGhlIGAgK1xuICAgICAgICBgJ25ld0NvbW1hbmRUaW1lb3V0JyBkZXNpcmVkIGNhcGFiaWxpdHlgO1xuICAgICAgYXdhaXQgdGhpcy5zdGFydFVuZXhwZWN0ZWRTaHV0ZG93bihuZXcgRXJyb3IoZXJyb3JNZXNzYWdlKSk7XG4gICAgfSwgdGhpcy5uZXdDb21tYW5kVGltZW91dE1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0ge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkFwcGl1bVNlcnZlcn0gc2VydmVyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBob3N0XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBwb3J0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoXG4gICAqL1xuICBhc3NpZ25TZXJ2ZXIgKHNlcnZlciwgaG9zdCwgcG9ydCwgcGF0aCkge1xuICAgIHRoaXMuc2VydmVyID0gc2VydmVyO1xuICAgIHRoaXMuc2VydmVySG9zdCA9IGhvc3Q7XG4gICAgdGhpcy5zZXJ2ZXJQb3J0ID0gcG9ydDtcbiAgICB0aGlzLnNlcnZlclBhdGggPSBwYXRoO1xuICB9XG5cbiAgLypcbiAgICAqIFJlc3RhcnQgdGhlIHNlc3Npb24gd2l0aCB0aGUgb3JpZ2luYWwgY2FwcyxcbiAgICAqIHByZXNlcnZpbmcgdGhlIHRpbWVvdXQgY29uZmlnLlxuICAgICovXG4gIGFzeW5jIHJlc2V0ICgpIHtcbiAgICB0aGlzLmxvZy5kZWJ1ZygnUmVzZXR0aW5nIGFwcCBtaWQtc2Vzc2lvbicpO1xuICAgIHRoaXMubG9nLmRlYnVnKCdSdW5uaW5nIGdlbmVyaWMgZnVsbCByZXNldCcpO1xuXG4gICAgLy8gcHJlc2VydmluZyBzdGF0ZVxuICAgIGxldCBjdXJyZW50Q29uZmlnID0ge307XG4gICAgZm9yIChsZXQgcHJvcGVydHkgb2YgW1xuICAgICAgJ2ltcGxpY2l0V2FpdE1zJyxcbiAgICAgICduZXdDb21tYW5kVGltZW91dE1zJyxcbiAgICAgICdzZXNzaW9uSWQnLFxuICAgICAgJ3Jlc2V0T25VbmV4cGVjdGVkU2h1dGRvd24nLFxuICAgIF0pIHtcbiAgICAgIGN1cnJlbnRDb25maWdbcHJvcGVydHldID0gdGhpc1twcm9wZXJ0eV07XG4gICAgfVxuXG4gICAgLy8gV2UgYWxzbyBuZWVkIHRvIHByZXNlcnZlIHRoZSB1bmV4cGVjdGVkIHNodXRkb3duLCBhbmQgbWFrZSBzdXJlIGl0IGlzIG5vdCBjYW5jZWxsZWQgZHVyaW5nIHJlc2V0LlxuICAgIHRoaXMucmVzZXRPblVuZXhwZWN0ZWRTaHV0ZG93biA9ICgpID0+IHt9O1xuXG4gICAgdHJ5IHtcbiAgICAgIGlmICh0aGlzLnNlc3Npb25JZCAhPT0gbnVsbCkge1xuICAgICAgICBhd2FpdCB0aGlzLmRlbGV0ZVNlc3Npb24odGhpcy5zZXNzaW9uSWQpO1xuICAgICAgfVxuICAgICAgdGhpcy5sb2cuZGVidWcoJ1Jlc3RhcnRpbmcgYXBwJyk7XG4gICAgICBhd2FpdCB0aGlzLmNyZWF0ZVNlc3Npb24odGhpcy5vcmlnaW5hbENhcHMpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICAvLyBhbHdheXMgcmVzdG9yZSBzdGF0ZS5cbiAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBfLnRvUGFpcnMoY3VycmVudENvbmZpZykpIHtcbiAgICAgICAgdGhpc1trZXldID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIGF3YWl0IHRoaXMuY2xlYXJOZXdDb21tYW5kVGltZW91dCgpO1xuICB9XG5cbiAgLyoqXG4gICAgICpcbiAgICAgKiBIaXN0b3JpY2FsbHkgdGhlIGZpcnN0IHR3byBhcmd1bWVudHMgd2VyZSByZXNlcnZlZCBmb3IgSlNPTldQIGNhcGFiaWxpdGllcy5cbiAgICAgKiBBcHBpdW0gMiBoYXMgZHJvcHBlZCB0aGUgc3VwcG9ydCBvZiB0aGVzZSwgc28gbm93IHdlIG9ubHkgYWNjZXB0IGNhcGFiaWxpdHlcbiAgICAgKiBvYmplY3RzIGluIFczQyBmb3JtYXQgYW5kIHRodXMgYWxsb3cgYW55IG9mIHRoZSB0aHJlZSBhcmd1bWVudHMgdG8gcmVwcmVzZW50XG4gICAgICogdGhlIGxhdHRlci5cbiAgICAgKiBAcGFyYW0ge1czQ0NhcGFiaWxpdGllc30gdzNjQ2FwYWJpbGl0aWVzMVxuICAgICAqIEBwYXJhbSB7VzNDQ2FwYWJpbGl0aWVzfSBbdzNjQ2FwYWJpbGl0aWVzMl1cbiAgICAgKiBAcGFyYW0ge1czQ0NhcGFiaWxpdGllc30gW3czY0NhcGFiaWxpdGllc11cbiAgICAgKiBAcGFyYW0ge0RyaXZlckRhdGFbXX0gW2RyaXZlckRhdGFdXG4gICAgICogQHJldHVybnMge1Byb21pc2U8W3N0cmluZyxvYmplY3RdPn1cbiAgICAgKi9cbiAgYXN5bmMgY3JlYXRlU2Vzc2lvbiAoXG4gICAgdzNjQ2FwYWJpbGl0aWVzMSxcbiAgICB3M2NDYXBhYmlsaXRpZXMyLFxuICAgIHczY0NhcGFiaWxpdGllcyxcbiAgICBkcml2ZXJEYXRhLFxuICApIHtcbiAgICBpZiAodGhpcy5zZXNzaW9uSWQgIT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBlcnJvcnMuU2Vzc2lvbk5vdENyZWF0ZWRFcnJvcihcbiAgICAgICAgICAgJ0Nhbm5vdCBjcmVhdGUgYSBuZXcgc2Vzc2lvbiB3aGlsZSBvbmUgaXMgaW4gcHJvZ3Jlc3MnLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmxvZy5kZWJ1ZygpO1xuXG4gICAgY29uc3Qgb3JpZ2luYWxDYXBzID0gXy5jbG9uZURlZXAoW1xuICAgICAgdzNjQ2FwYWJpbGl0aWVzLFxuICAgICAgdzNjQ2FwYWJpbGl0aWVzMSxcbiAgICAgIHczY0NhcGFiaWxpdGllczIsXG4gICAgXS5maW5kKGlzVzNjQ2FwcykpO1xuICAgIGlmICghb3JpZ2luYWxDYXBzKSB7XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLlNlc3Npb25Ob3RDcmVhdGVkRXJyb3IoXG4gICAgICAgICAgICdBcHBpdW0gb25seSBzdXBwb3J0cyBXM0Mtc3R5bGUgY2FwYWJpbGl0eSBvYmplY3RzLiAnICtcbiAgICAgICAgICAgICAnWW91ciBjbGllbnQgaXMgc2VuZGluZyBhbiBvbGRlciBjYXBhYmlsaXRpZXMgZm9ybWF0LiBQbGVhc2UgdXBkYXRlIHlvdXIgY2xpZW50IGxpYnJhcnkuJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRQcm90b2NvbFczQygpO1xuXG4gICAgdGhpcy5vcmlnaW5hbENhcHMgPSBfLmNsb25lRGVlcChvcmlnaW5hbENhcHMpO1xuICAgIHRoaXMubG9nLmRlYnVnKFxuICAgICAgYENyZWF0aW5nIHNlc3Npb24gd2l0aCBXM0MgY2FwYWJpbGl0aWVzOiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICBvcmlnaW5hbENhcHMsXG4gICAgICAgIG51bGwsXG4gICAgICAgIDIsXG4gICAgICApfWAsXG4gICAgKTtcblxuICAgIGxldCBjYXBzO1xuICAgIHRyeSB7XG4gICAgICBjYXBzID0gcHJvY2Vzc0NhcGFiaWxpdGllcyhcbiAgICAgICAgICAgb3JpZ2luYWxDYXBzLFxuICAgICAgICAgICB0aGlzLmRlc2lyZWRDYXBDb25zdHJhaW50cyxcbiAgICAgICAgICAgdGhpcy5zaG91bGRWYWxpZGF0ZUNhcHMsXG4gICAgICApO1xuICAgICAgaWYgKGNhcHNbQVBQSVVNX09QVFNfQ0FQXSkge1xuICAgICAgICB0aGlzLmxvZy5kZWJ1ZyhcbiAgICAgICAgICAgICBgRm91bmQgJHtQUkVGSVhFRF9BUFBJVU1fT1BUU19DQVB9IGNhcGFiaWxpdHkgcHJlc2VudDsgd2lsbCBwcm9tb3RlIGl0ZW1zIGluc2lkZSB0byBjYXBzYCxcbiAgICAgICAgKTtcbiAgICAgICAgY2FwcyA9IHByb21vdGVBcHBpdW1PcHRpb25zKGNhcHMpO1xuICAgICAgfVxuICAgICAgY2FwcyA9IGZpeENhcHMoY2FwcywgdGhpcy5kZXNpcmVkQ2FwQ29uc3RyYWludHMsIHRoaXMubG9nKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLlNlc3Npb25Ob3RDcmVhdGVkRXJyb3IoZS5tZXNzYWdlKTtcbiAgICB9XG5cbiAgICB0aGlzLnZhbGlkYXRlRGVzaXJlZENhcHMoY2Fwcyk7XG5cbiAgICB0aGlzLnNlc3Npb25JZCA9IHV0aWwudXVpZFY0KCk7XG4gICAgdGhpcy5jYXBzID0gY2FwcztcbiAgICB0aGlzLm9wdHMgPSBfLmNsb25lRGVlcCh0aGlzLmluaXRpYWxPcHRzKTtcblxuICAgIC8vIG1lcmdlIGNhcHMgb250byBvcHRzIHNvIHdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgd2hhdCdzIHdoZXJlXG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLm9wdHMsIHRoaXMuY2Fwcyk7XG5cbiAgICAvLyBkZWFsIHdpdGggcmVzZXRzXG4gICAgLy8gc29tZSBwZW9wbGUgbGlrZSB0byBkbyB3ZWlyZCB0aGluZ3MgYnkgc2V0dGluZyBub1Jlc2V0IGFuZCBmdWxsUmVzZXRcbiAgICAvLyBib3RoIHRvIHRydWUsIGJ1dCB0aGlzIGlzIG1pc2d1aWRlZCBhbmQgc3RyYW5nZSwgc28gZXJyb3IgaGVyZSBpbnN0ZWFkXG4gICAgaWYgKHRoaXMub3B0cy5ub1Jlc2V0ICYmIHRoaXMub3B0cy5mdWxsUmVzZXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgXCJUaGUgJ25vUmVzZXQnIGFuZCAnZnVsbFJlc2V0JyBjYXBhYmlsaXRpZXMgYXJlIG11dHVhbGx5IFwiICtcbiAgICAgICAgICAgICAnZXhjbHVzaXZlIGFuZCBzaG91bGQgbm90IGJvdGggYmUgc2V0IHRvIHRydWUuIFlvdSAnICtcbiAgICAgICAgICAgICBcInByb2JhYmx5IG1lYW50IHRvIGp1c3QgdXNlICdmdWxsUmVzZXQnIG9uIGl0cyBvd25cIixcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdHMubm9SZXNldCA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy5vcHRzLmZ1bGxSZXNldCA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhpcy5vcHRzLmZ1bGxSZXNldCA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy5vcHRzLm5vUmVzZXQgPSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5vcHRzLmZhc3RSZXNldCA9ICF0aGlzLm9wdHMuZnVsbFJlc2V0ICYmICF0aGlzLm9wdHMubm9SZXNldDtcbiAgICB0aGlzLm9wdHMuc2tpcFVuaW5zdGFsbCA9IHRoaXMub3B0cy5mYXN0UmVzZXQgfHwgdGhpcy5vcHRzLm5vUmVzZXQ7XG5cbiAgICAvLyBQcmV2ZW50cyBlbXB0eSBzdHJpbmcgY2FwcyBzbyB3ZSBkb24ndCBuZWVkIHRvIHRlc3QgaXQgZXZlcnl3aGVyZVxuICAgIGlmICh0eXBlb2YgdGhpcy5vcHRzLmFwcCA9PT0gJ3N0cmluZycgJiYgdGhpcy5vcHRzLmFwcC50cmltKCkgPT09ICcnKSB7XG4gICAgICBkZWxldGUgdGhpcy5vcHRzLmFwcDtcbiAgICB9XG5cbiAgICBpZiAoIV8uaXNVbmRlZmluZWQodGhpcy5jYXBzLm5ld0NvbW1hbmRUaW1lb3V0KSkge1xuICAgICAgdGhpcy5uZXdDb21tYW5kVGltZW91dE1zID0gdGhpcy5jYXBzLm5ld0NvbW1hbmRUaW1lb3V0ICogMTAwMDtcbiAgICB9XG5cbiAgICB0aGlzLl9sb2cucHJlZml4ID0gaGVscGVycy5nZW5lcmF0ZURyaXZlckxvZ1ByZWZpeCh0aGlzLCB0aGlzLnNlc3Npb25JZCk7XG5cbiAgICB0aGlzLmxvZy5pbmZvKGBTZXNzaW9uIGNyZWF0ZWQgd2l0aCBzZXNzaW9uIGlkOiAke3RoaXMuc2Vzc2lvbklkfWApO1xuXG4gICAgcmV0dXJuIFt0aGlzLnNlc3Npb25JZCwgY2Fwc107XG4gIH1cblxuICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0ge3N0cmluZ30gW3Nlc3Npb25JZF1cbiAgICAqIEBwYXJhbSB7RHJpdmVyRGF0YVtdfSBbZHJpdmVyRGF0YV1cbiAgICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgICovXG4gIGFzeW5jIGRlbGV0ZVNlc3Npb24gKHNlc3Npb25JZCwgZHJpdmVyRGF0YSkge1xuICAgIGF3YWl0IHRoaXMuY2xlYXJOZXdDb21tYW5kVGltZW91dCgpO1xuICAgIGlmICh0aGlzLmlzQ29tbWFuZHNRdWV1ZUVuYWJsZWQgJiYgdGhpcy5jb21tYW5kc1F1ZXVlR3VhcmQuaXNCdXN5KCkpIHtcbiAgICAgIC8vIHNpbXBsZSBoYWNrIHRvIHJlbGVhc2UgcGVuZGluZyBjb21tYW5kcyBpZiB0aGV5IGV4aXN0XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBfLmtleXModGhpcy5jb21tYW5kc1F1ZXVlR3VhcmQucXVldWVzKSkge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHRoaXMuY29tbWFuZHNRdWV1ZUd1YXJkLnF1ZXVlc1trZXldID0gW107XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuc2Vzc2lvbklkID0gbnVsbDtcbiAgICB0aGlzLl9sb2cucHJlZml4ID0gaGVscGVycy5nZW5lcmF0ZURyaXZlckxvZ1ByZWZpeCh0aGlzKTtcbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgZW5zdXJlcyB0aGF0IGFsbCBvZiB0aGUgbWl4aW5zIGNvcnJlY3RseSBpbXBsZW1lbnQgdGhlIGludGVyZmFjZSBkZXNjcmliZWQgaW4ge0BsaW5rY29kZSBEcml2ZXJ9LlxuICogQGltcGxlbWVudHMge0RyaXZlcn1cbiAqL1xuY2xhc3MgQmFzZURyaXZlciBleHRlbmRzIGNyZWF0ZUJhc2VEcml2ZXJDbGFzcyhCYXNlRHJpdmVyQ29yZSkge31cbmV4cG9ydCB7IEJhc2VEcml2ZXIgfTtcbmV4cG9ydCBkZWZhdWx0IEJhc2VEcml2ZXI7XG5cbi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkhUVFBNZXRob2R9IEhUVFBNZXRob2RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5Ecml2ZXJ9IERyaXZlclxuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkV4dGVybmFsRHJpdmVyfSBFeHRlcm5hbERyaXZlclxuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkNhcGFiaWxpdGllc30gQ2FwYWJpbGl0aWVzXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuVzNDQ2FwYWJpbGl0aWVzfSBXM0NDYXBhYmlsaXRpZXNcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5Ecml2ZXJEYXRhfSBEcml2ZXJEYXRhXG4gKi9cblxuXG4vKipcbiAqIEBjYWxsYmFjayBVcGRhdGVTZXJ2ZXJDYWxsYmFja1xuICogQHBhcmFtIHtpbXBvcnQoJ2V4cHJlc3MnKS5FeHByZXNzfSBhcHAgLSBFeHByZXNzIGFwcFxuICogQHBhcmFtIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5BcHBpdW1TZXJ2ZXJ9IGh0dHBTZXJ2ZXIgLSBIVFRQIHNlcnZlclxuICogQHJldHVybnMge2ltcG9ydCgndHlwZS1mZXN0JykuUHJvbWlzYWJsZTx2b2lkPn1cbiAqL1xuXG4vKipcbiAqIFRoaXMgaXMgdXNlZCB0byBleHRlbmQge0BsaW5rY29kZSBCYXNlRHJpdmVyQ29yZX0gYnkgdGhlIG1peGlucyBhbmQgYWxzbyBleHRlcm5hbCBkcml2ZXJzLlxuICogQHRlbXBsYXRlIFtQcm90bz17fV1cbiAqIEB0ZW1wbGF0ZSBbU3RhdGljPXt9XVxuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkNsYXNzPEJhc2VEcml2ZXJDb3JlICYgUHJvdG8sQmFzZURyaXZlclN0YXRpYyAmIFN0YXRpYz59IEJhc2VEcml2ZXJCYXNlXG4gKi9cblxuLyoqXG4gKiBTdGF0aWMgcHJvcGVydGllcyBvZiBgQmFzZURyaXZlcmAgYW5kIG9wdGlvbmFsIHByb3BlcnRpZXMgZm9yIHN1YmNsYXNzZXMuXG4gKiBAdGVtcGxhdGUge0V4dGVybmFsRHJpdmVyfSBbVD1FeHRlcm5hbERyaXZlcl1cbiAqIEB0eXBlZGVmIEJhc2VEcml2ZXJTdGF0aWNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBiYXNlVmVyc2lvblxuICogQHByb3BlcnR5IHtVcGRhdGVTZXJ2ZXJDYWxsYmFja30gW3VwZGF0ZVNlcnZlcl1cbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuTWV0aG9kTWFwPFQ+fSBbbmV3TWV0aG9kTWFwXVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLlNlc3Npb25IYW5kbGVyPFtzdHJpbmcsIG9iamVjdF0sdm9pZD59IFNlc3Npb25IYW5kbGVyXG4gKi9cbiJdfQ==
238
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFVkVOVF9TRVNTSU9OX0lOSVQiLCJFVkVOVF9TRVNTSU9OX1NUQVJUIiwiRVZFTlRfU0VTU0lPTl9RVUlUX1NUQVJUIiwiRVZFTlRfU0VTU0lPTl9RVUlUX0RPTkUiLCJPTl9VTkVYUEVDVEVEX1NIVVRET1dOX0VWRU5UIiwiQmFzZURyaXZlckNvcmUiLCJEcml2ZXJDb3JlIiwiY2xpQXJncyIsImV4ZWN1dGVDb21tYW5kIiwiY21kIiwiYXJncyIsInN0YXJ0VGltZSIsIkRhdGUiLCJub3ciLCJwcm90b2NvbCIsImxvZ0V2ZW50IiwiREVMRVRFX1NFU1NJT05fQ09NTUFORCIsImNsZWFyTmV3Q29tbWFuZFRpbWVvdXQiLCJzaHV0ZG93blVuZXhwZWN0ZWRseSIsImVycm9ycyIsIk5vU3VjaERyaXZlckVycm9yIiwiTm90WWV0SW1wbGVtZW50ZWRFcnJvciIsInVuZXhwZWN0ZWRTaHV0ZG93bkxpc3RlbmVyIiwiY29tbWFuZEV4ZWN1dG9yIiwiQiIsInJhY2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiZXZlbnRFbWl0dGVyIiwib24iLCJmaW5hbGx5IiwicmVtb3ZlTGlzdGVuZXIiLCJyZXMiLCJpc0NvbW1hbmRzUXVldWVFbmFibGVkIiwiY29tbWFuZHNRdWV1ZUd1YXJkIiwiYWNxdWlyZSIsIkJhc2VEcml2ZXIiLCJuYW1lIiwic3RhcnROZXdDb21tYW5kVGltZW91dCIsImVuZFRpbWUiLCJfZXZlbnRIaXN0b3J5IiwiY29tbWFuZHMiLCJwdXNoIiwic3RhcnRVbmV4cGVjdGVkU2h1dGRvd24iLCJlcnIiLCJlbWl0Iiwic2Vzc2lvbklkIiwiZGVsZXRlU2Vzc2lvbiIsIm5ld0NvbW1hbmRUaW1lb3V0TXMiLCJub0NvbW1hbmRUaW1lciIsInNldFRpbWVvdXQiLCJsb2ciLCJ3YXJuIiwiZXJyb3JNZXNzYWdlIiwiRXJyb3IiLCJhc3NpZ25TZXJ2ZXIiLCJzZXJ2ZXIiLCJob3N0IiwicG9ydCIsInBhdGgiLCJzZXJ2ZXJIb3N0Iiwic2VydmVyUG9ydCIsInNlcnZlclBhdGgiLCJyZXNldCIsImRlYnVnIiwiY3VycmVudENvbmZpZyIsInByb3BlcnR5IiwicmVzZXRPblVuZXhwZWN0ZWRTaHV0ZG93biIsImNyZWF0ZVNlc3Npb24iLCJvcmlnaW5hbENhcHMiLCJrZXkiLCJ2YWx1ZSIsIl8iLCJ0b1BhaXJzIiwidzNjQ2FwYWJpbGl0aWVzMSIsInczY0NhcGFiaWxpdGllczIiLCJ3M2NDYXBhYmlsaXRpZXMiLCJkcml2ZXJEYXRhIiwiU2Vzc2lvbk5vdENyZWF0ZWRFcnJvciIsImNsb25lRGVlcCIsImZpbmQiLCJpc1czY0NhcHMiLCJzZXRQcm90b2NvbFczQyIsIkpTT04iLCJzdHJpbmdpZnkiLCJjYXBzIiwiZGVzaXJlZENhcENvbnN0cmFpbnRzIiwic2hvdWxkVmFsaWRhdGVDYXBzIiwiQVBQSVVNX09QVFNfQ0FQIiwiUFJFRklYRURfQVBQSVVNX09QVFNfQ0FQIiwiZSIsIm1lc3NhZ2UiLCJ2YWxpZGF0ZURlc2lyZWRDYXBzIiwidXRpbCIsInV1aWRWNCIsIm9wdHMiLCJpbml0aWFsT3B0cyIsIk9iamVjdCIsImFzc2lnbiIsIm5vUmVzZXQiLCJmdWxsUmVzZXQiLCJmYXN0UmVzZXQiLCJza2lwVW5pbnN0YWxsIiwiYXBwIiwidHJpbSIsImlzVW5kZWZpbmVkIiwibmV3Q29tbWFuZFRpbWVvdXQiLCJfbG9nIiwicHJlZml4IiwiaGVscGVycyIsImdlbmVyYXRlRHJpdmVyTG9nUHJlZml4IiwiaW5mbyIsImlzQnVzeSIsImtleXMiLCJxdWV1ZXMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvYmFzZWRyaXZlci9kcml2ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG4vKiBlc2xpbnQtZGlzYWJsZSByZXF1aXJlLWF3YWl0ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuXG5pbXBvcnQgeyBEcml2ZXJDb3JlIH0gZnJvbSAnLi9jb3JlJztcbmltcG9ydCB7IHV0aWwgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGZpeENhcHMsIGlzVzNjQ2FwcyB9IGZyb20gJy4uL2hlbHBlcnMvY2FwYWJpbGl0aWVzJztcbmltcG9ydCB7IERFTEVURV9TRVNTSU9OX0NPTU1BTkQsIGRldGVybWluZVByb3RvY29sLCBlcnJvcnMgfSBmcm9tICcuLi9wcm90b2NvbCc7XG5pbXBvcnQge1xuICBBUFBJVU1fT1BUU19DQVAsXG4gIFBSRUZJWEVEX0FQUElVTV9PUFRTX0NBUCxcbiAgcHJvY2Vzc0NhcGFiaWxpdGllcyxcbiAgcHJvbW90ZUFwcGl1bU9wdGlvbnNcbn0gZnJvbSAnLi9jYXBhYmlsaXRpZXMnO1xuaW1wb3J0IHsgY3JlYXRlQmFzZURyaXZlckNsYXNzIH0gZnJvbSAnLi9jb21tYW5kcyc7XG5pbXBvcnQgaGVscGVycyBmcm9tICcuL2hlbHBlcnMnO1xuXG5jb25zdCBFVkVOVF9TRVNTSU9OX0lOSVQgPSAnbmV3U2Vzc2lvblJlcXVlc3RlZCc7XG5jb25zdCBFVkVOVF9TRVNTSU9OX1NUQVJUID0gJ25ld1Nlc3Npb25TdGFydGVkJztcbmNvbnN0IEVWRU5UX1NFU1NJT05fUVVJVF9TVEFSVCA9ICdxdWl0U2Vzc2lvblJlcXVlc3RlZCc7XG5jb25zdCBFVkVOVF9TRVNTSU9OX1FVSVRfRE9ORSA9ICdxdWl0U2Vzc2lvbkZpbmlzaGVkJztcbmNvbnN0IE9OX1VORVhQRUNURURfU0hVVERPV05fRVZFTlQgPSAnb25VbmV4cGVjdGVkU2h1dGRvd24nO1xuXG5cbi8qKlxuICogQGltcGxlbWVudHMge1Nlc3Npb25IYW5kbGVyfVxuICovXG5leHBvcnQgY2xhc3MgQmFzZURyaXZlckNvcmUgZXh0ZW5kcyBEcml2ZXJDb3JlIHtcblxuICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsYW55Pnx1bmRlZmluZWR9ICovXG4gIGNsaUFyZ3M7XG5cbiAgLy8gVGhpcyBpcyB0aGUgbWFpbiBjb21tYW5kIGhhbmRsZXIgZm9yIHRoZSBkcml2ZXIuIEl0IHdyYXBzIGNvbW1hbmRcbiAgLy8gZXhlY3V0aW9uIHdpdGggdGltZW91dCBsb2dpYywgY2hlY2tpbmcgdGhhdCB3ZSBoYXZlIGEgdmFsaWQgc2Vzc2lvbixcbiAgLy8gYW5kIGVuc3VyaW5nIHRoYXQgd2UgZXhlY3V0ZSBjb21tYW5kcyBvbmUgYXQgYSB0aW1lLiBUaGlzIG1ldGhvZCBpcyBjYWxsZWRcbiAgLy8gYnkgTUpTT05XUCdzIGV4cHJlc3Mgcm91dGVyLlxuICAvKipcbiAgICAqIEBwYXJhbSB7c3RyaW5nfSBjbWRcbiAgICAqIEBwYXJhbSAgey4uLmFueVtdfSBhcmdzXG4gICAgKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fVxuICAgICovXG4gIGFzeW5jIGV4ZWN1dGVDb21tYW5kIChjbWQsIC4uLmFyZ3MpIHtcbiAgICAvLyBnZXQgc3RhcnQgdGltZSBmb3IgdGhpcyBjb21tYW5kLCBhbmQgbG9nIGluIHNwZWNpYWwgY2FzZXNcbiAgICBsZXQgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcblxuICAgIGlmIChjbWQgPT09ICdjcmVhdGVTZXNzaW9uJykge1xuICAgICAgLy8gSWYgY3JlYXRpbmcgYSBzZXNzaW9uIGRldGVybWluZSBpZiBXM0Mgb3IgTUpTT05XUCBwcm90b2NvbCB3YXMgcmVxdWVzdGVkIGFuZCByZW1lbWJlciB0aGUgY2hvaWNlXG4gICAgICB0aGlzLnByb3RvY29sID0gZGV0ZXJtaW5lUHJvdG9jb2woYXJncyk7XG4gICAgICB0aGlzLmxvZ0V2ZW50KEVWRU5UX1NFU1NJT05fSU5JVCk7XG4gICAgfSBlbHNlIGlmIChjbWQgPT09IERFTEVURV9TRVNTSU9OX0NPTU1BTkQpIHtcbiAgICAgIHRoaXMubG9nRXZlbnQoRVZFTlRfU0VTU0lPTl9RVUlUX1NUQVJUKTtcbiAgICB9XG5cbiAgICAvLyBpZiB3ZSBoYWQgYSBjb21tYW5kIHRpbWVyIHJ1bm5pbmcsIGNsZWFyIGl0IG5vdyB0aGF0IHdlJ3JlIHN0YXJ0aW5nXG4gICAgLy8gYSBuZXcgY29tbWFuZCBhbmQgc28gZG9uJ3Qgd2FudCB0byB0aW1lIG91dFxuICAgIGF3YWl0IHRoaXMuY2xlYXJOZXdDb21tYW5kVGltZW91dCgpO1xuXG4gICAgaWYgKHRoaXMuc2h1dGRvd25VbmV4cGVjdGVkbHkpIHtcbiAgICAgIHRocm93IG5ldyBlcnJvcnMuTm9TdWNoRHJpdmVyRXJyb3IoXG4gICAgICAgICAgJ1RoZSBkcml2ZXIgd2FzIHVuZXhwZWN0ZWRseSBzaHV0IGRvd24hJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSB0aGlzIGNvbW1hbmQsIGl0IG11c3Qgbm90IGJlIGltcGxlbWVudGVkXG4gICAgaWYgKCF0aGlzW2NtZF0pIHtcbiAgICAgIHRocm93IG5ldyBlcnJvcnMuTm90WWV0SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIGxldCB1bmV4cGVjdGVkU2h1dGRvd25MaXN0ZW5lcjtcbiAgICBjb25zdCBjb21tYW5kRXhlY3V0b3IgPSBhc3luYyAoKSA9PlxuICAgICAgYXdhaXQgQi5yYWNlKFtcbiAgICAgICAgdGhpc1tjbWRdKC4uLmFyZ3MpLFxuICAgICAgICBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgdW5leHBlY3RlZFNodXRkb3duTGlzdGVuZXIgPSByZWplY3Q7XG4gICAgICAgICAgdGhpcy5ldmVudEVtaXR0ZXIub24oXG4gICAgICAgICAgICAgIE9OX1VORVhQRUNURURfU0hVVERPV05fRVZFTlQsXG4gICAgICAgICAgICAgIHVuZXhwZWN0ZWRTaHV0ZG93bkxpc3RlbmVyLFxuICAgICAgICAgICk7XG4gICAgICAgIH0pLFxuICAgICAgXSkuZmluYWxseSgoKSA9PiB7XG4gICAgICAgIGlmICh1bmV4cGVjdGVkU2h1dGRvd25MaXN0ZW5lcikge1xuICAgICAgICAgIC8vIFRoaXMgaXMgbmVlZGVkIHRvIHByZXZlbnQgbWVtb3J5IGxlYWtzXG4gICAgICAgICAgdGhpcy5ldmVudEVtaXR0ZXIucmVtb3ZlTGlzdGVuZXIoXG4gICAgICAgICAgICAgIE9OX1VORVhQRUNURURfU0hVVERPV05fRVZFTlQsXG4gICAgICAgICAgICAgIHVuZXhwZWN0ZWRTaHV0ZG93bkxpc3RlbmVyLFxuICAgICAgICAgICk7XG4gICAgICAgICAgdW5leHBlY3RlZFNodXRkb3duTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICBjb25zdCByZXMgPSB0aGlzLmlzQ29tbWFuZHNRdWV1ZUVuYWJsZWRcbiAgICAgID8gYXdhaXQgdGhpcy5jb21tYW5kc1F1ZXVlR3VhcmQuYWNxdWlyZShCYXNlRHJpdmVyLm5hbWUsIGNvbW1hbmRFeGVjdXRvcilcbiAgICAgIDogYXdhaXQgY29tbWFuZEV4ZWN1dG9yKCk7XG5cbiAgICAvLyBpZiB3ZSBoYXZlIHNldCBhIG5ldyBjb21tYW5kIHRpbWVvdXQgKHdoaWNoIGlzIHRoZSBkZWZhdWx0KSwgc3RhcnQgYVxuICAgIC8vIHRpbWVyIG9uY2Ugd2UndmUgZmluaXNoZWQgZXhlY3V0aW5nIHRoaXMgY29tbWFuZC4gSWYgd2UgZG9uJ3QgY2xlYXJcbiAgICAvLyB0aGUgdGltZXIgKHdoaWNoIGlzIGRvbmUgd2hlbiBhIG5ldyBjb21tYW5kIGNvbWVzIGluKSwgd2Ugd2lsbCB0cmlnZ2VyXG4gICAgLy8gYXV0b21hdGljIHNlc3Npb24gZGVsZXRpb24gaW4gdGhpcy5vbkNvbW1hbmRUaW1lb3V0LiBPZiBjb3Vyc2Ugd2UgZG9uJ3RcbiAgICAvLyB3YW50IHRvIHRyaWdnZXIgdGhlIHRpbWVyIHdoZW4gdGhlIHVzZXIgaXMgc2h1dHRpbmcgZG93biB0aGUgc2Vzc2lvblxuICAgIC8vIGludGVudGlvbmFsbHlcbiAgICBpZiAodGhpcy5pc0NvbW1hbmRzUXVldWVFbmFibGVkICYmIGNtZCAhPT0gREVMRVRFX1NFU1NJT05fQ09NTUFORCkge1xuICAgICAgLy8gcmVzZXR0aW5nIGV4aXN0aW5nIHRpbWVvdXRcbiAgICAgIGF3YWl0IHRoaXMuc3RhcnROZXdDb21tYW5kVGltZW91dCgpO1xuICAgIH1cblxuICAgIC8vIGxvZyB0aW1pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBjb21tYW5kXG4gICAgY29uc3QgZW5kVGltZSA9IERhdGUubm93KCk7XG4gICAgdGhpcy5fZXZlbnRIaXN0b3J5LmNvbW1hbmRzLnB1c2goe2NtZCwgc3RhcnRUaW1lLCBlbmRUaW1lfSk7XG4gICAgaWYgKGNtZCA9PT0gJ2NyZWF0ZVNlc3Npb24nKSB7XG4gICAgICB0aGlzLmxvZ0V2ZW50KEVWRU5UX1NFU1NJT05fU1RBUlQpO1xuICAgIH0gZWxzZSBpZiAoY21kID09PSBERUxFVEVfU0VTU0lPTl9DT01NQU5EKSB7XG4gICAgICB0aGlzLmxvZ0V2ZW50KEVWRU5UX1NFU1NJT05fUVVJVF9ET05FKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHtFcnJvcn0gZXJyXG4gICAgKi9cbiAgYXN5bmMgc3RhcnRVbmV4cGVjdGVkU2h1dGRvd24gKFxuICAgIGVyciA9IG5ldyBlcnJvcnMuTm9TdWNoRHJpdmVyRXJyb3IoXG4gICAgICAgICdUaGUgZHJpdmVyIHdhcyB1bmV4cGVjdGVkbHkgc2h1dCBkb3duIScsXG4gICAgKSxcbiAgKSB7XG4gICAgdGhpcy5ldmVudEVtaXR0ZXIuZW1pdChPTl9VTkVYUEVDVEVEX1NIVVRET1dOX0VWRU5ULCBlcnIpOyAvLyBhbGxvdyBvdGhlcnMgdG8gbGlzdGVuIGZvciB0aGlzXG4gICAgdGhpcy5zaHV0ZG93blVuZXhwZWN0ZWRseSA9IHRydWU7XG4gICAgdHJ5IHtcbiAgICAgIGlmICh0aGlzLnNlc3Npb25JZCAhPT0gbnVsbCkge1xuICAgICAgICBhd2FpdCB0aGlzLmRlbGV0ZVNlc3Npb24odGhpcy5zZXNzaW9uSWQpO1xuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnNodXRkb3duVW5leHBlY3RlZGx5ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc3RhcnROZXdDb21tYW5kVGltZW91dCAoKSB7XG4gICAgLy8gbWFrZSBzdXJlIHRoZXJlIGFyZSBubyByb2d1ZSB0aW1lb3V0c1xuICAgIGF3YWl0IHRoaXMuY2xlYXJOZXdDb21tYW5kVGltZW91dCgpO1xuXG4gICAgLy8gaWYgY29tbWFuZCB0aW1lb3V0IGlzIDAsIGl0IGlzIGRpc2FibGVkXG4gICAgaWYgKCF0aGlzLm5ld0NvbW1hbmRUaW1lb3V0TXMpIHJldHVybjsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBjdXJseVxuXG4gICAgdGhpcy5ub0NvbW1hbmRUaW1lciA9IHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgdGhpcy5sb2cud2FybihcbiAgICAgICAgYFNodXR0aW5nIGRvd24gYmVjYXVzZSB3ZSB3YWl0ZWQgYCArXG4gICAgICAgICAgYCR7dGhpcy5uZXdDb21tYW5kVGltZW91dE1zIC8gMTAwMC4wfSBzZWNvbmRzIGZvciBhIGNvbW1hbmRgLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9XG4gICAgICAgIGBOZXcgQ29tbWFuZCBUaW1lb3V0IG9mIGAgK1xuICAgICAgICBgJHt0aGlzLm5ld0NvbW1hbmRUaW1lb3V0TXMgLyAxMDAwLjB9IHNlY29uZHMgYCArXG4gICAgICAgIGBleHBpcmVkLiBUcnkgY3VzdG9taXppbmcgdGhlIHRpbWVvdXQgdXNpbmcgdGhlIGAgK1xuICAgICAgICBgJ25ld0NvbW1hbmRUaW1lb3V0JyBkZXNpcmVkIGNhcGFiaWxpdHlgO1xuICAgICAgYXdhaXQgdGhpcy5zdGFydFVuZXhwZWN0ZWRTaHV0ZG93bihuZXcgRXJyb3IoZXJyb3JNZXNzYWdlKSk7XG4gICAgfSwgdGhpcy5uZXdDb21tYW5kVGltZW91dE1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0ge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkFwcGl1bVNlcnZlcn0gc2VydmVyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBob3N0XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBwb3J0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoXG4gICAqL1xuICBhc3NpZ25TZXJ2ZXIgKHNlcnZlciwgaG9zdCwgcG9ydCwgcGF0aCkge1xuICAgIHRoaXMuc2VydmVyID0gc2VydmVyO1xuICAgIHRoaXMuc2VydmVySG9zdCA9IGhvc3Q7XG4gICAgdGhpcy5zZXJ2ZXJQb3J0ID0gcG9ydDtcbiAgICB0aGlzLnNlcnZlclBhdGggPSBwYXRoO1xuICB9XG5cbiAgLypcbiAgICAqIFJlc3RhcnQgdGhlIHNlc3Npb24gd2l0aCB0aGUgb3JpZ2luYWwgY2FwcyxcbiAgICAqIHByZXNlcnZpbmcgdGhlIHRpbWVvdXQgY29uZmlnLlxuICAgICovXG4gIGFzeW5jIHJlc2V0ICgpIHtcbiAgICB0aGlzLmxvZy5kZWJ1ZygnUmVzZXR0aW5nIGFwcCBtaWQtc2Vzc2lvbicpO1xuICAgIHRoaXMubG9nLmRlYnVnKCdSdW5uaW5nIGdlbmVyaWMgZnVsbCByZXNldCcpO1xuXG4gICAgLy8gcHJlc2VydmluZyBzdGF0ZVxuICAgIGxldCBjdXJyZW50Q29uZmlnID0ge307XG4gICAgZm9yIChsZXQgcHJvcGVydHkgb2YgW1xuICAgICAgJ2ltcGxpY2l0V2FpdE1zJyxcbiAgICAgICduZXdDb21tYW5kVGltZW91dE1zJyxcbiAgICAgICdzZXNzaW9uSWQnLFxuICAgICAgJ3Jlc2V0T25VbmV4cGVjdGVkU2h1dGRvd24nLFxuICAgIF0pIHtcbiAgICAgIGN1cnJlbnRDb25maWdbcHJvcGVydHldID0gdGhpc1twcm9wZXJ0eV07XG4gICAgfVxuXG4gICAgLy8gV2UgYWxzbyBuZWVkIHRvIHByZXNlcnZlIHRoZSB1bmV4cGVjdGVkIHNodXRkb3duLCBhbmQgbWFrZSBzdXJlIGl0IGlzIG5vdCBjYW5jZWxsZWQgZHVyaW5nIHJlc2V0LlxuICAgIHRoaXMucmVzZXRPblVuZXhwZWN0ZWRTaHV0ZG93biA9ICgpID0+IHt9O1xuXG4gICAgdHJ5IHtcbiAgICAgIGlmICh0aGlzLnNlc3Npb25JZCAhPT0gbnVsbCkge1xuICAgICAgICBhd2FpdCB0aGlzLmRlbGV0ZVNlc3Npb24odGhpcy5zZXNzaW9uSWQpO1xuICAgICAgfVxuICAgICAgdGhpcy5sb2cuZGVidWcoJ1Jlc3RhcnRpbmcgYXBwJyk7XG4gICAgICBhd2FpdCB0aGlzLmNyZWF0ZVNlc3Npb24odGhpcy5vcmlnaW5hbENhcHMpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICAvLyBhbHdheXMgcmVzdG9yZSBzdGF0ZS5cbiAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBfLnRvUGFpcnMoY3VycmVudENvbmZpZykpIHtcbiAgICAgICAgdGhpc1trZXldID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIGF3YWl0IHRoaXMuY2xlYXJOZXdDb21tYW5kVGltZW91dCgpO1xuICB9XG5cbiAgLyoqXG4gICAgICpcbiAgICAgKiBIaXN0b3JpY2FsbHkgdGhlIGZpcnN0IHR3byBhcmd1bWVudHMgd2VyZSByZXNlcnZlZCBmb3IgSlNPTldQIGNhcGFiaWxpdGllcy5cbiAgICAgKiBBcHBpdW0gMiBoYXMgZHJvcHBlZCB0aGUgc3VwcG9ydCBvZiB0aGVzZSwgc28gbm93IHdlIG9ubHkgYWNjZXB0IGNhcGFiaWxpdHlcbiAgICAgKiBvYmplY3RzIGluIFczQyBmb3JtYXQgYW5kIHRodXMgYWxsb3cgYW55IG9mIHRoZSB0aHJlZSBhcmd1bWVudHMgdG8gcmVwcmVzZW50XG4gICAgICogdGhlIGxhdHRlci5cbiAgICAgKiBAcGFyYW0ge1czQ0NhcGFiaWxpdGllc30gdzNjQ2FwYWJpbGl0aWVzMVxuICAgICAqIEBwYXJhbSB7VzNDQ2FwYWJpbGl0aWVzfSBbdzNjQ2FwYWJpbGl0aWVzMl1cbiAgICAgKiBAcGFyYW0ge1czQ0NhcGFiaWxpdGllc30gW3czY0NhcGFiaWxpdGllc11cbiAgICAgKiBAcGFyYW0ge0RyaXZlckRhdGFbXX0gW2RyaXZlckRhdGFdXG4gICAgICogQHJldHVybnMge1Byb21pc2U8W3N0cmluZyxvYmplY3RdPn1cbiAgICAgKi9cbiAgYXN5bmMgY3JlYXRlU2Vzc2lvbiAoXG4gICAgdzNjQ2FwYWJpbGl0aWVzMSxcbiAgICB3M2NDYXBhYmlsaXRpZXMyLFxuICAgIHczY0NhcGFiaWxpdGllcyxcbiAgICBkcml2ZXJEYXRhLFxuICApIHtcbiAgICBpZiAodGhpcy5zZXNzaW9uSWQgIT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBlcnJvcnMuU2Vzc2lvbk5vdENyZWF0ZWRFcnJvcihcbiAgICAgICAgICAgJ0Nhbm5vdCBjcmVhdGUgYSBuZXcgc2Vzc2lvbiB3aGlsZSBvbmUgaXMgaW4gcHJvZ3Jlc3MnLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmxvZy5kZWJ1ZygpO1xuXG4gICAgY29uc3Qgb3JpZ2luYWxDYXBzID0gXy5jbG9uZURlZXAoW1xuICAgICAgdzNjQ2FwYWJpbGl0aWVzLFxuICAgICAgdzNjQ2FwYWJpbGl0aWVzMSxcbiAgICAgIHczY0NhcGFiaWxpdGllczIsXG4gICAgXS5maW5kKGlzVzNjQ2FwcykpO1xuICAgIGlmICghb3JpZ2luYWxDYXBzKSB7XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLlNlc3Npb25Ob3RDcmVhdGVkRXJyb3IoXG4gICAgICAgICAgICdBcHBpdW0gb25seSBzdXBwb3J0cyBXM0Mtc3R5bGUgY2FwYWJpbGl0eSBvYmplY3RzLiAnICtcbiAgICAgICAgICAgICAnWW91ciBjbGllbnQgaXMgc2VuZGluZyBhbiBvbGRlciBjYXBhYmlsaXRpZXMgZm9ybWF0LiBQbGVhc2UgdXBkYXRlIHlvdXIgY2xpZW50IGxpYnJhcnkuJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRQcm90b2NvbFczQygpO1xuXG4gICAgdGhpcy5vcmlnaW5hbENhcHMgPSBfLmNsb25lRGVlcChvcmlnaW5hbENhcHMpO1xuICAgIHRoaXMubG9nLmRlYnVnKFxuICAgICAgYENyZWF0aW5nIHNlc3Npb24gd2l0aCBXM0MgY2FwYWJpbGl0aWVzOiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICBvcmlnaW5hbENhcHMsXG4gICAgICAgIG51bGwsXG4gICAgICAgIDIsXG4gICAgICApfWAsXG4gICAgKTtcblxuICAgIGxldCBjYXBzO1xuICAgIHRyeSB7XG4gICAgICBjYXBzID0gcHJvY2Vzc0NhcGFiaWxpdGllcyhcbiAgICAgICAgICAgb3JpZ2luYWxDYXBzLFxuICAgICAgICAgICB0aGlzLmRlc2lyZWRDYXBDb25zdHJhaW50cyxcbiAgICAgICAgICAgdGhpcy5zaG91bGRWYWxpZGF0ZUNhcHMsXG4gICAgICApO1xuICAgICAgaWYgKGNhcHNbQVBQSVVNX09QVFNfQ0FQXSkge1xuICAgICAgICB0aGlzLmxvZy5kZWJ1ZyhcbiAgICAgICAgICAgICBgRm91bmQgJHtQUkVGSVhFRF9BUFBJVU1fT1BUU19DQVB9IGNhcGFiaWxpdHkgcHJlc2VudDsgd2lsbCBwcm9tb3RlIGl0ZW1zIGluc2lkZSB0byBjYXBzYCxcbiAgICAgICAgKTtcbiAgICAgICAgY2FwcyA9IHByb21vdGVBcHBpdW1PcHRpb25zKGNhcHMpO1xuICAgICAgfVxuICAgICAgY2FwcyA9IGZpeENhcHMoY2FwcywgdGhpcy5kZXNpcmVkQ2FwQ29uc3RyYWludHMsIHRoaXMubG9nKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLlNlc3Npb25Ob3RDcmVhdGVkRXJyb3IoZS5tZXNzYWdlKTtcbiAgICB9XG5cbiAgICB0aGlzLnZhbGlkYXRlRGVzaXJlZENhcHMoY2Fwcyk7XG5cbiAgICB0aGlzLnNlc3Npb25JZCA9IHV0aWwudXVpZFY0KCk7XG4gICAgdGhpcy5jYXBzID0gY2FwcztcbiAgICB0aGlzLm9wdHMgPSBfLmNsb25lRGVlcCh0aGlzLmluaXRpYWxPcHRzKTtcblxuICAgIC8vIG1lcmdlIGNhcHMgb250byBvcHRzIHNvIHdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgd2hhdCdzIHdoZXJlXG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLm9wdHMsIHRoaXMuY2Fwcyk7XG5cbiAgICAvLyBkZWFsIHdpdGggcmVzZXRzXG4gICAgLy8gc29tZSBwZW9wbGUgbGlrZSB0byBkbyB3ZWlyZCB0aGluZ3MgYnkgc2V0dGluZyBub1Jlc2V0IGFuZCBmdWxsUmVzZXRcbiAgICAvLyBib3RoIHRvIHRydWUsIGJ1dCB0aGlzIGlzIG1pc2d1aWRlZCBhbmQgc3RyYW5nZSwgc28gZXJyb3IgaGVyZSBpbnN0ZWFkXG4gICAgaWYgKHRoaXMub3B0cy5ub1Jlc2V0ICYmIHRoaXMub3B0cy5mdWxsUmVzZXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgXCJUaGUgJ25vUmVzZXQnIGFuZCAnZnVsbFJlc2V0JyBjYXBhYmlsaXRpZXMgYXJlIG11dHVhbGx5IFwiICtcbiAgICAgICAgICAgICAnZXhjbHVzaXZlIGFuZCBzaG91bGQgbm90IGJvdGggYmUgc2V0IHRvIHRydWUuIFlvdSAnICtcbiAgICAgICAgICAgICBcInByb2JhYmx5IG1lYW50IHRvIGp1c3QgdXNlICdmdWxsUmVzZXQnIG9uIGl0cyBvd25cIixcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdHMubm9SZXNldCA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy5vcHRzLmZ1bGxSZXNldCA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhpcy5vcHRzLmZ1bGxSZXNldCA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy5vcHRzLm5vUmVzZXQgPSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5vcHRzLmZhc3RSZXNldCA9ICF0aGlzLm9wdHMuZnVsbFJlc2V0ICYmICF0aGlzLm9wdHMubm9SZXNldDtcbiAgICB0aGlzLm9wdHMuc2tpcFVuaW5zdGFsbCA9IHRoaXMub3B0cy5mYXN0UmVzZXQgfHwgdGhpcy5vcHRzLm5vUmVzZXQ7XG5cbiAgICAvLyBQcmV2ZW50cyBlbXB0eSBzdHJpbmcgY2FwcyBzbyB3ZSBkb24ndCBuZWVkIHRvIHRlc3QgaXQgZXZlcnl3aGVyZVxuICAgIGlmICh0eXBlb2YgdGhpcy5vcHRzLmFwcCA9PT0gJ3N0cmluZycgJiYgdGhpcy5vcHRzLmFwcC50cmltKCkgPT09ICcnKSB7XG4gICAgICBkZWxldGUgdGhpcy5vcHRzLmFwcDtcbiAgICB9XG5cbiAgICBpZiAoIV8uaXNVbmRlZmluZWQodGhpcy5jYXBzLm5ld0NvbW1hbmRUaW1lb3V0KSkge1xuICAgICAgdGhpcy5uZXdDb21tYW5kVGltZW91dE1zID0gdGhpcy5jYXBzLm5ld0NvbW1hbmRUaW1lb3V0ICogMTAwMDtcbiAgICB9XG5cbiAgICB0aGlzLl9sb2cucHJlZml4ID0gaGVscGVycy5nZW5lcmF0ZURyaXZlckxvZ1ByZWZpeCh0aGlzLCB0aGlzLnNlc3Npb25JZCk7XG5cbiAgICB0aGlzLmxvZy5pbmZvKGBTZXNzaW9uIGNyZWF0ZWQgd2l0aCBzZXNzaW9uIGlkOiAke3RoaXMuc2Vzc2lvbklkfWApO1xuXG4gICAgcmV0dXJuIFt0aGlzLnNlc3Npb25JZCwgY2Fwc107XG4gIH1cblxuICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0ge3N0cmluZ30gW3Nlc3Npb25JZF1cbiAgICAqIEBwYXJhbSB7RHJpdmVyRGF0YVtdfSBbZHJpdmVyRGF0YV1cbiAgICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgICovXG4gIGFzeW5jIGRlbGV0ZVNlc3Npb24gKHNlc3Npb25JZCwgZHJpdmVyRGF0YSkge1xuICAgIGF3YWl0IHRoaXMuY2xlYXJOZXdDb21tYW5kVGltZW91dCgpO1xuICAgIGlmICh0aGlzLmlzQ29tbWFuZHNRdWV1ZUVuYWJsZWQgJiYgdGhpcy5jb21tYW5kc1F1ZXVlR3VhcmQuaXNCdXN5KCkpIHtcbiAgICAgIC8vIHNpbXBsZSBoYWNrIHRvIHJlbGVhc2UgcGVuZGluZyBjb21tYW5kcyBpZiB0aGV5IGV4aXN0XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBfLmtleXModGhpcy5jb21tYW5kc1F1ZXVlR3VhcmQucXVldWVzKSkge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHRoaXMuY29tbWFuZHNRdWV1ZUd1YXJkLnF1ZXVlc1trZXldID0gW107XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuc2Vzc2lvbklkID0gbnVsbDtcbiAgICB0aGlzLl9sb2cucHJlZml4ID0gaGVscGVycy5nZW5lcmF0ZURyaXZlckxvZ1ByZWZpeCh0aGlzKTtcbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgZW5zdXJlcyB0aGF0IGFsbCBvZiB0aGUgbWl4aW5zIGNvcnJlY3RseSBpbXBsZW1lbnQgdGhlIGludGVyZmFjZSBkZXNjcmliZWQgaW4ge0BsaW5rY29kZSBEcml2ZXJ9LlxuICogQGltcGxlbWVudHMge0RyaXZlcn1cbiAqL1xuY2xhc3MgQmFzZURyaXZlciBleHRlbmRzIGNyZWF0ZUJhc2VEcml2ZXJDbGFzcyhCYXNlRHJpdmVyQ29yZSkge31cbmV4cG9ydCB7IEJhc2VEcml2ZXIgfTtcbmV4cG9ydCBkZWZhdWx0IEJhc2VEcml2ZXI7XG5cbi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkhUVFBNZXRob2R9IEhUVFBNZXRob2RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5Ecml2ZXJ9IERyaXZlclxuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkV4dGVybmFsRHJpdmVyfSBFeHRlcm5hbERyaXZlclxuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkNhcGFiaWxpdGllc30gQ2FwYWJpbGl0aWVzXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuVzNDQ2FwYWJpbGl0aWVzfSBXM0NDYXBhYmlsaXRpZXNcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5Ecml2ZXJEYXRhfSBEcml2ZXJEYXRhXG4gKi9cblxuXG4vKipcbiAqIEBjYWxsYmFjayBVcGRhdGVTZXJ2ZXJDYWxsYmFja1xuICogQHBhcmFtIHtpbXBvcnQoJ2V4cHJlc3MnKS5FeHByZXNzfSBhcHAgLSBFeHByZXNzIGFwcFxuICogQHBhcmFtIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5BcHBpdW1TZXJ2ZXJ9IGh0dHBTZXJ2ZXIgLSBIVFRQIHNlcnZlclxuICogQHJldHVybnMge2ltcG9ydCgndHlwZS1mZXN0JykuUHJvbWlzYWJsZTx2b2lkPn1cbiAqL1xuXG4vKipcbiAqIFRoaXMgaXMgdXNlZCB0byBleHRlbmQge0BsaW5rY29kZSBCYXNlRHJpdmVyQ29yZX0gYnkgdGhlIG1peGlucyBhbmQgYWxzbyBleHRlcm5hbCBkcml2ZXJzLlxuICogQHRlbXBsYXRlIFtQcm90bz17fV1cbiAqIEB0ZW1wbGF0ZSBbU3RhdGljPXt9XVxuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkNsYXNzPEJhc2VEcml2ZXJDb3JlICYgUHJvdG8sQmFzZURyaXZlclN0YXRpYyAmIFN0YXRpYz59IEJhc2VEcml2ZXJCYXNlXG4gKi9cblxuLyoqXG4gKiBTdGF0aWMgcHJvcGVydGllcyBvZiBgQmFzZURyaXZlcmAgYW5kIG9wdGlvbmFsIHByb3BlcnRpZXMgZm9yIHN1YmNsYXNzZXMuXG4gKiBAdGVtcGxhdGUge0V4dGVybmFsRHJpdmVyfSBbVD1FeHRlcm5hbERyaXZlcl1cbiAqIEB0eXBlZGVmIEJhc2VEcml2ZXJTdGF0aWNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBiYXNlVmVyc2lvblxuICogQHByb3BlcnR5IHtVcGRhdGVTZXJ2ZXJDYWxsYmFja30gW3VwZGF0ZVNlcnZlcl1cbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuTWV0aG9kTWFwPFQ+fSBbbmV3TWV0aG9kTWFwXVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLlNlc3Npb25IYW5kbGVyPFtzdHJpbmcsIG9iamVjdF0sdm9pZD59IFNlc3Npb25IYW5kbGVyXG4gKi9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFJQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFNQTs7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
@@ -545,4 +545,4 @@ var _default = {
545
545
  generateDriverLogPrefix
546
546
  };
547
547
  exports.default = _default;
548
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9iYXNlZHJpdmVyL2hlbHBlcnMuanMiXSwibmFtZXMiOlsiSVBBX0VYVCIsIlpJUF9FWFRTIiwiWklQX01JTUVfVFlQRVMiLCJDQUNIRURfQVBQU19NQVhfQUdFIiwiTUFYX0NBQ0hFRF9BUFBTIiwiQVBQTElDQVRJT05TX0NBQ0hFIiwiTFJVIiwibWF4IiwidHRsIiwidXBkYXRlQWdlT25HZXQiLCJkaXNwb3NlIiwiYXBwIiwiZnVsbFBhdGgiLCJsb2dnZXIiLCJpbmZvIiwiZnMiLCJyaW1yYWYiLCJub0Rpc3Bvc2VPblNldCIsIkFQUExJQ0FUSU9OU19DQUNIRV9HVUFSRCIsIkFzeW5jTG9jayIsIlNBTklUSVpFX1JFUExBQ0VNRU5UIiwiREVGQVVMVF9CQVNFTkFNRSIsIkFQUF9ET1dOTE9BRF9USU1FT1VUX01TIiwicHJvY2VzcyIsIm9uIiwic2l6ZSIsImFwcFBhdGhzIiwidmFsdWVzIiwibWFwIiwiZGVidWciLCJsZW5ndGgiLCJ1dGlsIiwicGx1cmFsaXplIiwiYXBwUGF0aCIsInJpbXJhZlN5bmMiLCJlIiwid2FybiIsIm1lc3NhZ2UiLCJyZXRyaWV2ZUhlYWRlcnMiLCJsaW5rIiwidXJsIiwibWV0aG9kIiwidGltZW91dCIsImhlYWRlcnMiLCJnZXRDYWNoZWRBcHBsaWNhdGlvblBhdGgiLCJjdXJyZW50QXBwUHJvcHMiLCJjYWNoZWRBcHBJbmZvIiwicmVmcmVzaCIsIl8iLCJpc1BsYWluT2JqZWN0IiwibGFzdE1vZGlmaWVkIiwiY3VycmVudE1vZGlmaWVkIiwiaW1tdXRhYmxlIiwiY3VycmVudEltbXV0YWJsZSIsIm1heEFnZSIsImN1cnJlbnRNYXhBZ2UiLCJ0aW1lc3RhbXAiLCJnZXRUaW1lIiwibXNMZWZ0IiwiRGF0ZSIsIm5vdyIsInBhdGgiLCJiYXNlbmFtZSIsInZlcmlmeUFwcEV4dGVuc2lvbiIsInN1cHBvcnRlZEFwcEV4dGVuc2lvbnMiLCJ0b0xvd2VyIiwiaW5jbHVkZXMiLCJleHRuYW1lIiwiRXJyb3IiLCJjYWxjdWxhdGVGb2xkZXJJbnRlZ3JpdHkiLCJmb2xkZXJQYXRoIiwiZ2xvYiIsImN3ZCIsInN0cmljdCIsIm5vc29ydCIsImNhbGN1bGF0ZUZpbGVJbnRlZ3JpdHkiLCJmaWxlUGF0aCIsImhhc2giLCJpc0FwcEludGVncml0eU9rIiwiY3VycmVudFBhdGgiLCJleHBlY3RlZEludGVncml0eSIsImV4aXN0cyIsInN0YXQiLCJpc0RpcmVjdG9yeSIsImZvbGRlciIsImZpbGUiLCJjb25maWd1cmVBcHAiLCJvcHRpb25zIiwiaXNTdHJpbmciLCJvblBvc3RQcm9jZXNzIiwiaXNBcnJheSIsInN1cHBvcnRlZEV4dGVuc2lvbnMiLCJpc0VtcHR5IiwibmV3QXBwIiwic2hvdWxkVW56aXBBcHAiLCJwYWNrYWdlSGFzaCIsInJlbW90ZUFwcFByb3BzIiwicHJvdG9jb2wiLCJwYXRobmFtZSIsInBhcnNlIiwiaXNVcmwiLCJnZXQiLCJhY3F1aXJlIiwidGVzdCIsIm1heEFnZU1hdGNoIiwiZXhlYyIsInBhcnNlSW50IiwiY2FjaGVkUGF0aCIsImludGVncml0eSIsImRlbGV0ZSIsImZpbGVOYW1lIiwic2FuaXRpemVOYW1lIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwicmVwbGFjZW1lbnQiLCJjdCIsInNvbWUiLCJtaW1lVHlwZSIsIlJlZ0V4cCIsImVzY2FwZVJlZ0V4cCIsIm1hdGNoIiwicmVzdWx0aW5nTmFtZSIsInN1YnN0cmluZyIsInJlc3VsdGluZ0V4dCIsImZpcnN0IiwidGFyZ2V0UGF0aCIsInRlbXBEaXIiLCJwcmVmaXgiLCJzdWZmaXgiLCJkb3dubG9hZEFwcCIsImVycm9yTWVzc2FnZSIsImlzUGFja2FnZUFGaWxlIiwiaXNGaWxlIiwiaXNGdW5jdGlvbiIsImFyY2hpdmVQYXRoIiwidG1wUm9vdCIsIm9wZW5EaXIiLCJ1bnppcEFwcCIsImlzQWJzb2x1dGUiLCJyZXNvbHZlIiwic3RvcmVBcHBJbkNhY2hlIiwiYXBwUGF0aFRvQ2FjaGUiLCJjYWNoZWRGdWxsUGF0aCIsInNldCIsInJlc3VsdCIsImNsb25lIiwiQm9vbGVhbiIsImhyZWYiLCJuZXQiLCJkb3dubG9hZEZpbGUiLCJlcnIiLCJ6aXBQYXRoIiwiZHN0Um9vdCIsInppcCIsImFzc2VydFZhbGlkWmlwIiwidGltZXIiLCJ0aW1pbmciLCJUaW1lciIsInN0YXJ0IiwidXNlU3lzdGVtVW56aXBFbnYiLCJlbnYiLCJBUFBJVU1fUFJFRkVSX1NZU1RFTV9VTlpJUCIsInVzZVN5c3RlbVVuemlwIiwiZXh0cmFjdGlvbk9wdHMiLCJmaWxlTmFtZXNFbmNvZGluZyIsImV4dHJhY3RBbGxUbyIsImdsb2JQYXR0ZXJuIiwiZXh0IiwicmVwbGFjZSIsImpvaW4iLCJzb3J0ZWRCdW5kbGVJdGVtcyIsInNvcnQiLCJhIiwiYiIsInNwbGl0Iiwic2VwIiwiZXJyb3JBbmRUaHJvdyIsIk1hdGgiLCJyb3VuZCIsImdldER1cmF0aW9uIiwiYXNNaWxsaVNlY29uZHMiLCJtYXRjaGVkQnVuZGxlIiwiZHN0UGF0aCIsIm12IiwibWtkaXJwIiwiaXNQYWNrYWdlT3JCdW5kbGUiLCJkdXBsaWNhdGVLZXlzIiwiaW5wdXQiLCJmaXJzdEtleSIsInNlY29uZEtleSIsIml0ZW0iLCJyZXN1bHRPYmoiLCJrZXkiLCJ2YWx1ZSIsInRvUGFpcnMiLCJyZWN1cnNpdmVseUNhbGxlZFZhbHVlIiwicGFyc2VDYXBzQXJyYXkiLCJjYXAiLCJwYXJzZWRDYXBzIiwiSlNPTiIsImlnbiIsImdlbmVyYXRlRHJpdmVyTG9nUHJlZml4Iiwib2JqIiwic2Vzc2lvbklkIiwiaW5zdGFuY2VOYW1lIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibm9kZSIsImdldE9iamVjdElkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsT0FBTyxHQUFHLE1BQWhCO0FBQ0EsTUFBTUMsUUFBUSxHQUFHLENBQUMsTUFBRCxFQUFTRCxPQUFULENBQWpCO0FBQ0EsTUFBTUUsY0FBYyxHQUFH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YnJILEVBQUFBLFlBRGE7QUFDQ2tHLEVBQUFBLGlCQUREO0FBQ29CQyxFQUFBQSxhQURwQjtBQUNtQ1UsRUFBQUEsY0FEbkM7QUFDbURLLEVBQUFBO0FBRG5ELEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgdXJsIGZyb20gJ3VybCc7XG5pbXBvcnQgbG9nZ2VyIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7IHRlbXBEaXIsIGZzLCB1dGlsLCB6aXAsIG5ldCwgdGltaW5nLCBub2RlIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBMUlUgZnJvbSAnbHJ1LWNhY2hlJztcbmltcG9ydCBBc3luY0xvY2sgZnJvbSAnYXN5bmMtbG9jayc7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuXG5jb25zdCBJUEFfRVhUID0gJy5pcGEnO1xuY29uc3QgWklQX0VYVFMgPSBbJy56aXAnLCBJUEFfRVhUXTtcbmNvbnN0IFpJUF9NSU1FX1RZUEVTID0gW1xuICAnYXBwbGljYXRpb24vemlwJyxcbiAgJ2FwcGxpY2F0aW9uL3gtemlwLWNvbXByZXNzZWQnLFxuICAnbXVsdGlwYXJ0L3gtemlwJyxcbl07XG5jb25zdCBDQUNIRURfQVBQU19NQVhfQUdFID0gMTAwMCAqIDYwICogNjAgKiAyNDsgLy8gbXNcbmNvbnN0IE1BWF9DQUNIRURfQVBQUyA9IDEwMjQ7XG5jb25zdCBBUFBMSUNBVElPTlNfQ0FDSEUgPSBuZXcgTFJVKHtcbiAgbWF4OiBNQVhfQ0FDSEVEX0FQUFMsXG4gIHR0bDogQ0FDSEVEX0FQUFNfTUFYX0FHRSwgLy8gZXhwaXJlIGFmdGVyIDI0IGhvdXJzXG4gIHVwZGF0ZUFnZU9uR2V0OiB0cnVlLFxuICBkaXNwb3NlOiAoYXBwLCB7ZnVsbFBhdGh9KSA9PiB7XG4gICAgbG9nZ2VyLmluZm8oYFRoZSBhcHBsaWNhdGlvbiAnJHthcHB9JyBjYWNoZWQgYXQgJyR7ZnVsbFBhdGh9JyBoYXMgYCArXG4gICAgICBgZXhwaXJlZCBhZnRlciAke0NBQ0hFRF9BUFBTX01BWF9BR0V9bXNgKTtcbiAgICBpZiAoZnVsbFBhdGgpIHtcbiAgICAgIGZzLnJpbXJhZihmdWxsUGF0aCk7XG4gICAgfVxuICB9LFxuICBub0Rpc3Bvc2VPblNldDogdHJ1ZSxcbn0pO1xuY29uc3QgQVBQTElDQVRJT05TX0NBQ0hFX0dVQVJEID0gbmV3IEFzeW5jTG9jaygpO1xuY29uc3QgU0FOSVRJWkVfUkVQTEFDRU1FTlQgPSAnLSc7XG5jb25zdCBERUZBVUxUX0JBU0VOQU1FID0gJ2FwcGl1bS1hcHAnO1xuY29uc3QgQVBQX0RPV05MT0FEX1RJTUVPVVRfTVMgPSAxMjAgKiAxMDAwO1xuXG5wcm9jZXNzLm9uKCdleGl0JywgKCkgPT4ge1xuICBpZiAoQVBQTElDQVRJT05TX0NBQ0hFLnNpemUgPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBhcHBQYXRocyA9IFsuLi5BUFBMSUNBVElPTlNfQ0FDSEUudmFsdWVzKCldXG4gICAgLm1hcCgoe2Z1bGxQYXRofSkgPT4gZnVsbFBhdGgpO1xuICBsb2dnZXIuZGVidWcoYFBlcmZvcm1pbmcgY2xlYW51cCBvZiAke2FwcFBhdGhzLmxlbmd0aH0gY2FjaGVkIGAgK1xuICAgIHV0aWwucGx1cmFsaXplKCdhcHBsaWNhdGlvbicsIGFwcFBhdGhzLmxlbmd0aCkpO1xuICBmb3IgKGNvbnN0IGFwcFBhdGggb2YgYXBwUGF0aHMpIHtcbiAgICB0cnkge1xuICAgICAgLy8gQXN5bmNocm9ub3VzIGNhbGxzIGFyZSBub3Qgc3VwcG9ydGVkIGluIG9uRXhpdCBoYW5kbGVyXG4gICAgICBmcy5yaW1yYWZTeW5jKGFwcFBhdGgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGxvZ2dlci53YXJuKGUubWVzc2FnZSk7XG4gICAgfVxuICB9XG59KTtcblxuXG5hc3luYyBmdW5jdGlvbiByZXRyaWV2ZUhlYWRlcnMgKGxpbmspIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gKGF3YWl0IGF4aW9zKHtcbiAgICAgIHVybDogbGluayxcbiAgICAgIG1ldGhvZDogJ0hFQUQnLFxuICAgICAgdGltZW91dDogNTAwMCxcbiAgICB9KSkuaGVhZGVycztcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxvZ2dlci5pbmZvKGBDYW5ub3Qgc2VuZCBIRUFEIHJlcXVlc3QgdG8gJyR7bGlua30nLiBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCk7XG4gIH1cbiAgcmV0dXJuIHt9O1xufVxuXG5mdW5jdGlvbiBnZXRDYWNoZWRBcHBsaWNhdGlvblBhdGggKGxpbmssIGN1cnJlbnRBcHBQcm9wcyA9IHt9LCBjYWNoZWRBcHBJbmZvID0ge30pIHtcbiAgY29uc3QgcmVmcmVzaCA9ICgpID0+IHtcbiAgICBsb2dnZXIuZGVidWcoYEEgZnJlc2ggY29weSBvZiB0aGUgYXBwbGljYXRpb24gaXMgZ29pbmcgdG8gYmUgZG93bmxvYWRlZCBmcm9tICR7bGlua31gKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcblxuICBpZiAoIV8uaXNQbGFpbk9iamVjdChjYWNoZWRBcHBJbmZvKSB8fCAhXy5pc1BsYWluT2JqZWN0KGN1cnJlbnRBcHBQcm9wcykpIHtcbiAgICAvLyBpZiBhbiBpbnZhbGlkIGFyZyBpcyBwYXNzZWQgdGhlbiBhc3N1bWUgY2FjaGUgbWlzc1xuICAgIHJldHVybiByZWZyZXNoKCk7XG4gIH1cblxuICBjb25zdCB7XG4gICAgbGFzdE1vZGlmaWVkOiBjdXJyZW50TW9kaWZpZWQsXG4gICAgaW1tdXRhYmxlOiBjdXJyZW50SW1tdXRhYmxlLFxuICAgIC8vIG1heEFnZSBpcyBpbiBzZWNvbmRzXG4gICAgbWF4QWdlOiBjdXJyZW50TWF4QWdlLFxuICB9ID0gY3VycmVudEFwcFByb3BzO1xuICBjb25zdCB7XG4gICAgLy8gRGF0ZSBpbnN0YW5jZVxuICAgIGxhc3RNb2RpZmllZCxcbiAgICAvLyBib29sZWFuXG4gICAgaW1tdXRhYmxlLFxuICAgIC8vIFVuaXggdGltZSBpbiBtaWxsaXNlY29uZHNcbiAgICB0aW1lc3RhbXAsXG4gICAgZnVsbFBhdGgsXG4gIH0gPSBjYWNoZWRBcHBJbmZvO1xuICBpZiAobGFzdE1vZGlmaWVkICYmIGN1cnJlbnRNb2RpZmllZCkge1xuICAgIGlmIChjdXJyZW50TW9kaWZpZWQuZ2V0VGltZSgpIDw9IGxhc3RNb2RpZmllZC5nZXRUaW1lKCkpIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhgVGhlIGFwcGxpY2F0aW9uIGF0ICR7bGlua30gaGFzIG5vdCBiZWVuIG1vZGlmaWVkIHNpbmNlICR7bGFzdE1vZGlmaWVkfWApO1xuICAgICAgcmV0dXJuIGZ1bGxQYXRoO1xuICAgIH1cbiAgICBsb2dnZXIuZGVidWcoYFRoZSBhcHBsaWNhdGlvbiBhdCAke2xpbmt9IGhhcyBiZWVuIG1vZGlmaWVkIHNpbmNlICR7bGFzdE1vZGlmaWVkfWApO1xuICAgIHJldHVybiByZWZyZXNoKCk7XG4gIH1cbiAgaWYgKGltbXV0YWJsZSAmJiBjdXJyZW50SW1tdXRhYmxlKSB7XG4gICAgbG9nZ2VyLmRlYnVnKGBUaGUgYXBwbGljYXRpb24gYXQgJHtsaW5rfSBpcyBpbW11dGFibGVgKTtcbiAgICByZXR1cm4gZnVsbFBhdGg7XG4gIH1cbiAgaWYgKGN1cnJlbnRNYXhBZ2UgJiYgdGltZXN0YW1wKSB7XG4gICAgY29uc3QgbXNMZWZ0ID0gdGltZXN0YW1wICsgY3VycmVudE1heEFnZSAqIDEwMDAgLSBEYXRlLm5vdygpO1xuICAgIGlmIChtc0xlZnQgPiAwKSB7XG4gICAgICBsb2dnZXIuZGVidWcoYFRoZSBjYWNoZWQgYXBwbGljYXRpb24gJyR7cGF0aC5iYXNlbmFtZShmdWxsUGF0aCl9JyB3aWxsIGV4cGlyZSBpbiAke21zTGVmdCAvIDEwMDB9c2ApO1xuICAgICAgcmV0dXJuIGZ1bGxQYXRoO1xuICAgIH1cbiAgICBsb2dnZXIuZGVidWcoYFRoZSBjYWNoZWQgYXBwbGljYXRpb24gJyR7cGF0aC5iYXNlbmFtZShmdWxsUGF0aCl9JyBoYXMgZXhwaXJlZGApO1xuICB9XG4gIHJldHVybiByZWZyZXNoKCk7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeUFwcEV4dGVuc2lvbiAoYXBwLCBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zKSB7XG4gIGlmIChzdXBwb3J0ZWRBcHBFeHRlbnNpb25zLm1hcChfLnRvTG93ZXIpLmluY2x1ZGVzKF8udG9Mb3dlcihwYXRoLmV4dG5hbWUoYXBwKSkpKSB7XG4gICAgcmV0dXJuIGFwcDtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYE5ldyBhcHAgcGF0aCAnJHthcHB9JyBkaWQgbm90IGhhdmUgYCArXG4gICAgYCR7dXRpbC5wbHVyYWxpemUoJ2V4dGVuc2lvbicsIHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMubGVuZ3RoLCBmYWxzZSl9OiBgICtcbiAgICBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY2FsY3VsYXRlRm9sZGVySW50ZWdyaXR5IChmb2xkZXJQYXRoKSB7XG4gIHJldHVybiAoYXdhaXQgZnMuZ2xvYignKiovKicsIHtjd2Q6IGZvbGRlclBhdGgsIHN0cmljdDogZmFsc2UsIG5vc29ydDogdHJ1ZX0pKS5sZW5ndGg7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNhbGN1bGF0ZUZpbGVJbnRlZ3JpdHkgKGZpbGVQYXRoKSB7XG4gIHJldHVybiBhd2FpdCBmcy5oYXNoKGZpbGVQYXRoKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaXNBcHBJbnRlZ3JpdHlPayAoY3VycmVudFBhdGgsIGV4cGVjdGVkSW50ZWdyaXR5ID0ge30pIHtcbiAgaWYgKCFhd2FpdCBmcy5leGlzdHMoY3VycmVudFBhdGgpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gRm9sZGVyIGludGVncml0eSBjaGVjayBpcyBzaW1wbGU6XG4gIC8vIFZlcmlmeSB0aGUgcHJldmlvdXMgYW1vdW50IG9mIGZpbGVzIGlzIG5vdCBncmVhdGVyIHRoYW4gdGhlIGN1cnJlbnQgb25lLlxuICAvLyBXZSBkb24ndCB3YW50IHRvIHVzZSBlcXVhbGl0eSBjb21wYXJpc29uIGJlY2F1c2Ugb2YgYW4gYXNzdW1wdGlvbiB0aGF0IHRoZSBPUyBtaWdodFxuICAvLyBjcmVhdGUgc29tZSB1bndhbnRlZCBzZXJ2aWNlIGZpbGVzL2NhY2hlZCBpbnNpZGUgb2YgdGhhdCBmb2xkZXIgb3IgaXRzIHN1YmZvbGRlcnMuXG4gIC8vIE9mYywgdmFsaWRhdGluZyB0aGUgaGFzaCBzdW0gb2YgZWFjaCBmaWxlIChvciBhdCBsZWFzdCBvZiBmaWxlIHBhdGgpIHdvdWxkIGJlIG11Y2hcbiAgLy8gbW9yZSBwcmVjaXNlLCBidXQgd2UgZG9uJ3QgbmVlZCB0byBiZSB2ZXJ5IHByZWNpc2UgaGVyZSBhbmQgYWxzbyBkb24ndCB3YW50IHRvXG4gIC8vIG92ZXJ1c2UgUkFNIGFuZCBoYXZlIGEgcGVyZm9ybWFuY2UgZHJvcC5cbiAgcmV0dXJuIChhd2FpdCBmcy5zdGF0KGN1cnJlbnRQYXRoKSkuaXNEaXJlY3RvcnkoKVxuICAgID8gYXdhaXQgY2FsY3VsYXRlRm9sZGVySW50ZWdyaXR5KGN1cnJlbnRQYXRoKSA+PSBleHBlY3RlZEludGVncml0eT8uZm9sZGVyXG4gICAgOiBhd2FpdCBjYWxjdWxhdGVGaWxlSW50ZWdyaXR5KGN1cnJlbnRQYXRoKSA9PT0gZXhwZWN0ZWRJbnRlZ3JpdHk/LmZpbGU7XG59XG5cbi8qKlxuICogQHR5cGVkZWYgUG9zdFByb2Nlc3NPcHRpb25zXG4gKiBAcHJvcGVydHkgez9PYmplY3R9IGNhY2hlZEFwcEluZm8gVGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwcmV2aW91c2x5IGNhY2hlZCBhcHAgaW5zdGFuY2UgKGlmIGV4aXN0cyk6XG4gKiAgICAtIHBhY2thZ2VIYXNoOiBTSEExIGhhc2ggb2YgdGhlIHBhY2thZ2UgaWYgaXQgaXMgYSBmaWxlIGFuZCBub3QgYSBmb2xkZXJcbiAqICAgIC0gbGFzdE1vZGlmaWVkOiBPcHRpb25hbCBEYXRlIGluc3RhbmNlLCB0aGUgdmFsdWUgb2YgZmlsZSdzIGBMYXN0LU1vZGlmaWVkYCBoZWFkZXJcbiAqICAgIC0gaW1tdXRhYmxlOiBPcHRpb25hbCBib29sZWFuIHZhbHVlLiBDb250YWlucyB0cnVlIGlmIHRoZSBmaWxlIGhhcyBhbiBgaW1tdXRhYmxlYCBtYXJrXG4gKiAgICAgICAgICAgICAgICAgaW4gYENhY2hlLWNvbnRyb2xgIGhlYWRlclxuICogICAgLSBtYXhBZ2U6IE9wdGlvbmFsIGludGVnZXIgcmVwcmVzZW50YXRpb24gb2YgYG1heEFnZWAgcGFyYW1ldGVyIGluIGBDYWNoZS1jb250cm9sYCBoZWFkZXJcbiAqICAgIC0gdGltZXN0YW1wOiBUaGUgdGltZXN0YW1wIHRoaXMgaXRlbSBoYXMgYmVlbiBhZGRlZCB0byB0aGUgY2FjaGUgKG1lYXN1cmVkIGluIFVuaXggZXBvY2hcbiAqICAgICAgICAgICAgICAgICBtaWxsaXNlY29uZHMpXG4gKiAgICAtIGludGVncml0eTogQW4gb2JqZWN0IGNvbnRhaW5pbmcgZWl0aGVyIGBmaWxlYCBwcm9wZXJ0eSB3aXRoIFNIQTEgaGFzaCBvZiB0aGUgZmlsZVxuICogICAgICAgICAgICAgICAgIG9yIGBmb2xkZXJgIHByb3BlcnR5IHdpdGggdG90YWwgYW1vdW50IG9mIGNhY2hlZCBmaWxlcyBhbmQgc3ViZm9sZGVyc1xuICogICAgLSBmdWxsUGF0aDogdGhlIGZ1bGwgcGF0aCB0byB0aGUgY2FjaGVkIGFwcFxuICogQHByb3BlcnR5IHtib29sZWFufSBpc1VybCBXaGV0aGVyIHRoZSBhcHAgaGFzIGJlZW4gZG93bmxvYWRlZCBmcm9tIGEgcmVtb3RlIFVSTFxuICogQHByb3BlcnR5IHs/T2JqZWN0fSBoZWFkZXJzIE9wdGlvbmFsIGhlYWRlcnMgb2JqZWN0LiBPbmx5IHByZXNlbnQgaWYgYGlzVXJsYCBpcyB0cnVlIGFuZCBpZiB0aGUgc2VydmVyXG4gKiByZXNwb25kcyB0byBIRUFEIHJlcXVlc3RzLiBBbGwgaGVhZGVyIG5hbWVzIGFyZSBub3JtYWxpemVkIHRvIGxvd2VyY2FzZS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhcHBQYXRoIEEgc3RyaW5nIGNvbnRhaW5pbmcgZnVsbCBwYXRoIHRvIHRoZSBwcmVwcm9jZXNzZWQgYXBwbGljYXRpb24gcGFja2FnZSAoZWl0aGVyXG4gKiBkb3dubG9hZGVkIG9yIGEgbG9jYWwgb25lKVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYgUG9zdFByb2Nlc3NSZXN1bHRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhcHBQYXRoIFRoZSBmdWxsIHBhc3QgdG8gdGhlIHBvc3QtcHJvY2Vzc2VkIGFwcGxpY2F0aW9uIHBhY2thZ2Ugb24gdGhlXG4gKiBsb2NhbCBmaWxlIHN5c3RlbSAobWlnaHQgYmUgYSBmaWxlIG9yIGEgZm9sZGVyIHBhdGgpXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiBDb25maWd1cmVBcHBPcHRpb25zXG4gKiBAcHJvcGVydHkgeyhvYmo6IFBvc3RQcm9jZXNzT3B0aW9ucykgPT4gKFByb21pc2U8UG9zdFByb2Nlc3NSZXN1bHR8dW5kZWZpbmVkPnxQb3N0UHJvY2Vzc1Jlc3VsdHx1bmRlZmluZWQpfSBvblBvc3RQcm9jZXNzXG4gKiBPcHRpb25hbCBmdW5jdGlvbiwgd2hpY2ggc2hvdWxkIGJlIGFwcGxpZWRcbiAqIHRvIHRoZSBhcHBsaWNhdGlvbiBhZnRlciBpdCBpcyBkb3dubG9hZGVkL3ByZXByb2Nlc3NlZC4gVGhpcyBmdW5jdGlvbiBtYXkgYmUgYXN5bmNcbiAqIGFuZCBpcyBleHBlY3RlZCB0byBhY2NlcHQgc2luZ2xlIG9iamVjdCBwYXJhbWV0ZXIuXG4gKiBUaGUgZnVuY3Rpb24gaXMgZXhwZWN0ZWQgdG8gZWl0aGVyIHJldHVybiBhIGZhbHN5IHZhbHVlLCB3aGljaCBtZWFucyB0aGUgYXBwIG11c3Qgbm90IGJlXG4gKiBjYWNoZWQgYW5kIGEgZnJlc2ggY29weSBvZiBpdCBpcyBkb3dubG9hZGVkIGVhY2ggdGltZS4gSWYgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGFuIG9iamVjdFxuICogY29udGFpbmluZyBgYXBwUGF0aGAgcHJvcGVydHkgdGhlbiB0aGUgaW50ZWdyaXR5IG9mIGl0IHdpbGwgYmUgdmVyaWZpZWQgYW5kIHN0b3JlZCBpbnRvXG4gKiB0aGUgY2FjaGUuXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdfSBzdXBwb3J0ZWRFeHRlbnNpb25zIExpc3Qgb2Ygc3VwcG9ydGVkIGFwcGxpY2F0aW9uIGV4dGVuc2lvbnMgKFxuICogaW5jbHVkaW5nIHN0YXJ0aW5nIGRvdHMpLiBUaGlzIHByb3BlcnR5IGlzIG1hbmRhdG9yeSBhbmQgbXVzdCBub3QgYmUgZW1wdHkuXG4gKi9cblxuLyoqXG4gKiBQcmVwYXJlcyBhbiBhcHAgdG8gYmUgdXNlZCBpbiBhbiBhdXRvbWF0ZWQgdGVzdC4gVGhlIGFwcCBnZXRzIGNhY2hlZCBhdXRvbWF0aWNhbGx5XG4gKiBpZiBpdCBpcyBhbiBhcmNoaXZlIG9yIGlmIGl0IGlzIGRvd25sb2FkZWQgZnJvbSBhbiBVUkwuXG4gKiBJZiB0aGUgZG93bmxvYWRlZCBhcHAgaGFzIGAuemlwYCBleHRlbnNpb24sIHRoaXMgbWV0aG9kIHdpbGwgdW56aXAgaXQuXG4gKiBUaGUgdW56aXAgZG9lcyBub3Qgd29yayB3aGVuIGBvblBvc3RQcm9jZXNzYCBpcyBwcm92aWRlZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXBwIEVpdGhlciBhIGZ1bGwgcGF0aCB0byB0aGUgYXBwIG9yIGEgcmVtb3RlIFVSTFxuICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW118Q29uZmlndXJlQXBwT3B0aW9uc30gb3B0aW9uc1xuICogQHJldHVybnMgVGhlIGZ1bGwgcGF0aCB0byB0aGUgcmVzdWx0aW5nIGFwcGxpY2F0aW9uIGJ1bmRsZVxuICovXG5hc3luYyBmdW5jdGlvbiBjb25maWd1cmVBcHAgKGFwcCwgb3B0aW9ucyA9IHt9KSB7XG4gIGlmICghXy5pc1N0cmluZyhhcHApKSB7XG4gICAgLy8gaW1tZWRpYXRlbHkgc2hvcnRjaXJjdWl0IGlmIG5vdCBnaXZlbiBhbiBhcHBcbiAgICByZXR1cm47XG4gIH1cblxuICBsZXQgc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucztcbiAgY29uc3Qge1xuICAgIG9uUG9zdFByb2Nlc3MsXG4gIH0gPSBfLmlzUGxhaW5PYmplY3Qob3B0aW9ucykgPyBvcHRpb25zIDoge307XG4gIGlmIChfLmlzU3RyaW5nKG9wdGlvbnMpKSB7XG4gICAgc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucyA9IFtvcHRpb25zXTtcbiAgfSBlbHNlIGlmIChfLmlzQXJyYXkob3B0aW9ucykpIHtcbiAgICBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zID0gb3B0aW9ucztcbiAgfSBlbHNlIGlmIChfLmlzUGxhaW5PYmplY3Qob3B0aW9ucykpIHtcbiAgICBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zID0gb3B0aW9ucy5zdXBwb3J0ZWRFeHRlbnNpb25zO1xuICB9XG4gIGlmIChfLmlzRW1wdHkoc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE9uZSBvciBtb3JlIHN1cHBvcnRlZCBhcHAgZXh0ZW5zaW9ucyBtdXN0IGJlIHByb3ZpZGVkYCk7XG4gIH1cblxuICBsZXQgbmV3QXBwID0gYXBwO1xuICBsZXQgc2hvdWxkVW56aXBBcHAgPSBmYWxzZTtcbiAgbGV0IHBhY2thZ2VIYXNoID0gbnVsbDtcbiAgbGV0IGhlYWRlcnMgPSBudWxsO1xuICBjb25zdCByZW1vdGVBcHBQcm9wcyA9IHtcbiAgICBsYXN0TW9kaWZpZWQ6IG51bGwsXG4gICAgaW1tdXRhYmxlOiBmYWxzZSxcbiAgICBtYXhBZ2U6IG51bGwsXG4gIH07XG4gIGNvbnN0IHtwcm90b2NvbCwgcGF0aG5hbWV9ID0gdXJsLnBhcnNlKG5ld0FwcCk7XG4gIGNvbnN0IGlzVXJsID0gWydodHRwOicsICdodHRwczonXS5pbmNsdWRlcyhwcm90b2NvbCk7XG5cbiAgY29uc3QgY2FjaGVkQXBwSW5mbyA9IEFQUExJQ0FUSU9OU19DQUNIRS5nZXQoYXBwKTtcblxuICByZXR1cm4gYXdhaXQgQVBQTElDQVRJT05TX0NBQ0hFX0dVQVJELmFjcXVpcmUoYXBwLCBhc3luYyAoKSA9PiB7XG4gICAgaWYgKGlzVXJsKSB7XG4gICAgICAvLyBVc2UgdGhlIGFwcCBmcm9tIHJlbW90ZSBVUkxcbiAgICAgIGxvZ2dlci5pbmZvKGBVc2luZyBkb3dubG9hZGFibGUgYXBwICcke25ld0FwcH0nYCk7XG4gICAgICBoZWFkZXJzID0gYXdhaXQgcmV0cmlldmVIZWFkZXJzKG5ld0FwcCk7XG4gICAgICBpZiAoIV8uaXNFbXB0eShoZWFkZXJzKSkge1xuICAgICAgICBpZiAoaGVhZGVyc1snbGFzdC1tb2RpZmllZCddKSB7XG4gICAgICAgICAgcmVtb3RlQXBwUHJvcHMubGFzdE1vZGlmaWVkID0gbmV3IERhdGUoaGVhZGVyc1snbGFzdC1tb2RpZmllZCddKTtcbiAgICAgICAgfVxuICAgICAgICBsb2dnZXIuZGVidWcoYExhc3QtTW9kaWZpZWQ6ICR7aGVhZGVyc1snbGFzdC1tb2RpZmllZCddfWApO1xuICAgICAgICBpZiAoaGVhZGVyc1snY2FjaGUtY29udHJvbCddKSB7XG4gICAgICAgICAgcmVtb3RlQXBwUHJvcHMuaW1tdXRhYmxlID0gL1xcYmltbXV0YWJsZVxcYi9pLnRlc3QoaGVhZGVyc1snY2FjaGUtY29udHJvbCddKTtcbiAgICAgICAgICBjb25zdCBtYXhBZ2VNYXRjaCA9IC9cXGJtYXgtYWdlPShcXGQrKVxcYi9pLmV4ZWMoaGVhZGVyc1snY2FjaGUtY29udHJvbCddKTtcbiAgICAgICAgICBpZiAobWF4QWdlTWF0Y2gpIHtcbiAgICAgICAgICAgIHJlbW90ZUFwcFByb3BzLm1heEFnZSA9IHBhcnNlSW50KG1heEFnZU1hdGNoWzFdLCAxMCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhgQ2FjaGUtQ29udHJvbDogJHtoZWFkZXJzWydjYWNoZS1jb250cm9sJ119YCk7XG4gICAgICB9XG4gICAgICBjb25zdCBjYWNoZWRQYXRoID0gZ2V0Q2FjaGVkQXBwbGljYXRpb25QYXRoKGFwcCwgcmVtb3RlQXBwUHJvcHMsIGNhY2hlZEFwcEluZm8pO1xuICAgICAgaWYgKGNhY2hlZFBhdGgpIHtcbiAgICAgICAgaWYgKGF3YWl0IGlzQXBwSW50ZWdyaXR5T2soY2FjaGVkUGF0aCwgY2FjaGVkQXBwSW5mbz8uaW50ZWdyaXR5KSkge1xuICAgICAgICAgIGxvZ2dlci5pbmZvKGBSZXVzaW5nIHByZXZpb3VzbHkgZG93bmxvYWRlZCBhcHBsaWNhdGlvbiBhdCAnJHtjYWNoZWRQYXRofSdgKTtcbiAgICAgICAgICByZXR1cm4gdmVyaWZ5QXBwRXh0ZW5zaW9uKGNhY2hlZFBhdGgsIHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMpO1xuICAgICAgICB9XG4gICAgICAgIGxvZ2dlci5pbmZvKGBUaGUgYXBwbGljYXRpb24gYXQgJyR7Y2FjaGVkUGF0aH0nIGRvZXMgbm90IGV4aXN0IGFueW1vcmUgYCArXG4gICAgICAgICAgYG9yIGl0cyBpbnRlZ3JpdHkgaGFzIGJlZW4gZGFtYWdlZC4gRGVsZXRpbmcgaXQgZnJvbSB0aGUgaW50ZXJuYWwgY2FjaGVgKTtcbiAgICAgICAgQVBQTElDQVRJT05TX0NBQ0hFLmRlbGV0ZShhcHApO1xuICAgICAgfVxuXG4gICAgICBsZXQgZmlsZU5hbWUgPSBudWxsO1xuICAgICAgY29uc3QgYmFzZW5hbWUgPSBmcy5zYW5pdGl6ZU5hbWUocGF0aC5iYXNlbmFtZShkZWNvZGVVUklDb21wb25lbnQocGF0aG5hbWUpKSwge1xuICAgICAgICByZXBsYWNlbWVudDogU0FOSVRJWkVfUkVQTEFDRU1FTlRcbiAgICAgIH0pO1xuICAgICAgY29uc3QgZXh0bmFtZSA9IHBhdGguZXh0bmFtZShiYXNlbmFtZSk7XG4gICAgICAvLyB0byBkZXRlcm1pbmUgaWYgd2UgbmVlZCB0byB1bnppcCB0aGUgYXBwLCB3ZSBoYXZlIGEgbnVtYmVyIG9mIHBsYWNlc1xuICAgICAgLy8gdG8gbG9vazogY29udGVudCB0eXBlLCBjb250ZW50IGRpc3Bvc2l0aW9uLCBvciB0aGUgZmlsZSBleHRlbnNpb25cbiAgICAgIGlmIChaSVBfRVhUUy5pbmNsdWRlcyhleHRuYW1lKSkge1xuICAgICAgICBmaWxlTmFtZSA9IGJhc2VuYW1lO1xuICAgICAgICBzaG91bGRVbnppcEFwcCA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoaGVhZGVyc1snY29udGVudC10eXBlJ10pIHtcbiAgICAgICAgY29uc3QgY3QgPSBoZWFkZXJzWydjb250ZW50LXR5cGUnXTtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKGBDb250ZW50LVR5cGU6ICR7Y3R9YCk7XG4gICAgICAgIC8vIHRoZSBmaWxldHlwZSBtYXkgbm90IGJlIG9idmlvdXMgZm9yIGNlcnRhaW4gdXJscywgc28gY2hlY2sgdGhlIG1pbWUgdHlwZSB0b29cbiAgICAgICAgaWYgKFpJUF9NSU1FX1RZUEVTLnNvbWUoKG1pbWVUeXBlKSA9PiBuZXcgUmVnRXhwKGBcXFxcYiR7Xy5lc2NhcGVSZWdFeHAobWltZVR5cGUpfVxcXFxiYCkudGVzdChjdCkpKSB7XG4gICAgICAgICAgaWYgKCFmaWxlTmFtZSkge1xuICAgICAgICAgICAgZmlsZU5hbWUgPSBgJHtERUZBVUxUX0JBU0VOQU1FfS56aXBgO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzaG91bGRVbnppcEFwcCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChoZWFkZXJzWydjb250ZW50LWRpc3Bvc2l0aW9uJ10gJiYgL15hdHRhY2htZW50L2kudGVzdChoZWFkZXJzWydjb250ZW50LWRpc3Bvc2l0aW9uJ10pKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhgQ29udGVudC1EaXNwb3NpdGlvbjogJHtoZWFkZXJzWydjb250ZW50LWRpc3Bvc2l0aW9uJ119YCk7XG4gICAgICAgIGNvbnN0IG1hdGNoID0gL2ZpbGVuYW1lPVwiKFteXCJdKykvaS5leGVjKGhlYWRlcnNbJ2NvbnRlbnQtZGlzcG9zaXRpb24nXSk7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgIGZpbGVOYW1lID0gZnMuc2FuaXRpemVOYW1lKG1hdGNoWzFdLCB7XG4gICAgICAgICAgICByZXBsYWNlbWVudDogU0FOSVRJWkVfUkVQTEFDRU1FTlRcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBzaG91bGRVbnppcEFwcCA9IHNob3VsZFVuemlwQXBwIHx8IFpJUF9FWFRTLmluY2x1ZGVzKHBhdGguZXh0bmFtZShmaWxlTmFtZSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIWZpbGVOYW1lKSB7XG4gICAgICAgIC8vIGFzc2lnbiB0aGUgZGVmYXVsdCBmaWxlIG5hbWUgYW5kIHRoZSBleHRlbnNpb24gaWYgbm9uZSBoYXMgYmVlbiBkZXRlY3RlZFxuICAgICAgICBjb25zdCByZXN1bHRpbmdOYW1lID0gYmFzZW5hbWVcbiAgICAgICAgICA/IGJhc2VuYW1lLnN1YnN0cmluZygwLCBiYXNlbmFtZS5sZW5ndGggLSBleHRuYW1lLmxlbmd0aClcbiAgICAgICAgICA6IERFRkFVTFRfQkFTRU5BTUU7XG4gICAgICAgIGxldCByZXN1bHRpbmdFeHQgPSBleHRuYW1lO1xuICAgICAgICBpZiAoIXN1cHBvcnRlZEFwcEV4dGVuc2lvbnMuaW5jbHVkZXMocmVzdWx0aW5nRXh0KSkge1xuICAgICAgICAgIGxvZ2dlci5pbmZvKGBUaGUgY3VycmVudCBmaWxlIGV4dGVuc2lvbiAnJHtyZXN1bHRpbmdFeHR9JyBpcyBub3Qgc3VwcG9ydGVkLiBgICtcbiAgICAgICAgICAgIGBEZWZhdWx0aW5nIHRvICcke18uZmlyc3Qoc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucyl9J2ApO1xuICAgICAgICAgIHJlc3VsdGluZ0V4dCA9IF8uZmlyc3Qoc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgZmlsZU5hbWUgPSBgJHtyZXN1bHRpbmdOYW1lfSR7cmVzdWx0aW5nRXh0fWA7XG4gICAgICB9XG4gICAgICBjb25zdCB0YXJnZXRQYXRoID0gYXdhaXQgdGVtcERpci5wYXRoKHtcbiAgICAgICAgcHJlZml4OiBmaWxlTmFtZSxcbiAgICAgICAgc3VmZml4OiAnJyxcbiAgICAgIH0pO1xuICAgICAgbmV3QXBwID0gYXdhaXQgZG93bmxvYWRBcHAobmV3QXBwLCB0YXJnZXRQYXRoKTtcbiAgICB9IGVsc2UgaWYgKGF3YWl0IGZzLmV4aXN0cyhuZXdBcHApKSB7XG4gICAgICAvLyBVc2UgdGhlIGxvY2FsIGFwcFxuICAgICAgbG9nZ2VyLmluZm8oYFVzaW5nIGxvY2FsIGFwcCAnJHtuZXdBcHB9J2ApO1xuICAgICAgc2hvdWxkVW56aXBBcHAgPSBaSVBfRVhUUy5pbmNsdWRlcyhwYXRoLmV4dG5hbWUobmV3QXBwKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBlcnJvck1lc3NhZ2UgPSBgVGhlIGFwcGxpY2F0aW9uIGF0ICcke25ld0FwcH0nIGRvZXMgbm90IGV4aXN0IG9yIGlzIG5vdCBhY2Nlc3NpYmxlYDtcbiAgICAgIC8vIHByb3RvY29sIHZhbHVlIGZvciAnQzpcXFxcdGVtcCcgaXMgJ2M6Jywgc28gd2UgY2hlY2sgdGhlIGxlbmd0aCBhcyB3ZWxsXG4gICAgICBpZiAoXy5pc1N0cmluZyhwcm90b2NvbCkgJiYgcHJvdG9jb2wubGVuZ3RoID4gMikge1xuICAgICAgICBlcnJvck1lc3NhZ2UgPSBgVGhlIHByb3RvY29sICcke3Byb3RvY29sfScgdXNlZCBpbiAnJHtuZXdBcHB9JyBpcyBub3Qgc3VwcG9ydGVkLiBgICtcbiAgICAgICAgICBgT25seSBodHRwOiBhbmQgaHR0cHM6IHByb3RvY29scyBhcmUgc3VwcG9ydGVkYDtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvck1lc3NhZ2UpO1xuICAgIH1cblxuICAgIGNvbnN0IGlzUGFja2FnZUFGaWxlID0gKGF3YWl0IGZzLnN0YXQobmV3QXBwKSkuaXNGaWxlKCk7XG4gICAgaWYgKGlzUGFja2FnZUFGaWxlKSB7XG4gICAgICBwYWNrYWdlSGFzaCA9IGF3YWl0IGNhbGN1bGF0ZUZpbGVJbnRlZ3JpdHkobmV3QXBwKTtcbiAgICB9XG5cbiAgICBpZiAoaXNQYWNrYWdlQUZpbGUgJiYgc2hvdWxkVW56aXBBcHAgJiYgIV8uaXNGdW5jdGlvbihvblBvc3RQcm9jZXNzKSkge1xuICAgICAgY29uc3QgYXJjaGl2ZVBhdGggPSBuZXdBcHA7XG4gICAgICBpZiAocGFja2FnZUhhc2ggPT09IGNhY2hlZEFwcEluZm8/LnBhY2thZ2VIYXNoKSB7XG4gICAgICAgIGNvbnN0IHtmdWxsUGF0aH0gPSBjYWNoZWRBcHBJbmZvO1xuICAgICAgICBpZiAoYXdhaXQgaXNBcHBJbnRlZ3JpdHlPayhmdWxsUGF0aCwgY2FjaGVkQXBwSW5mbz8uaW50ZWdyaXR5KSkge1xuICAgICAgICAgIGlmIChhcmNoaXZlUGF0aCAhPT0gYXBwKSB7XG4gICAgICAgICAgICBhd2FpdCBmcy5yaW1yYWYoYXJjaGl2ZVBhdGgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsb2dnZXIuaW5mbyhgV2lsbCByZXVzZSBwcmV2aW91c2x5IGNhY2hlZCBhcHBsaWNhdGlvbiBhdCAnJHtmdWxsUGF0aH0nYCk7XG4gICAgICAgICAgcmV0dXJuIHZlcmlmeUFwcEV4dGVuc2lvbihmdWxsUGF0aCwgc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgbG9nZ2VyLmluZm8oYFRoZSBhcHBsaWNhdGlvbiBhdCAnJHtmdWxsUGF0aH0nIGRvZXMgbm90IGV4aXN0IGFueW1vcmUgYCArXG4gICAgICAgICAgYG9yIGl0cyBpbnRlZ3JpdHkgaGFzIGJlZW4gZGFtYWdlZC4gRGVsZXRpbmcgaXQgZnJvbSB0aGUgY2FjaGVgKTtcbiAgICAgICAgQVBQTElDQVRJT05TX0NBQ0hFLmRlbGV0ZShhcHApO1xuICAgICAgfVxuICAgICAgY29uc3QgdG1wUm9vdCA9IGF3YWl0IHRlbXBEaXIub3BlbkRpcigpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgbmV3QXBwID0gYXdhaXQgdW56aXBBcHAoYXJjaGl2ZVBhdGgsIHRtcFJvb3QsIHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaWYgKG5ld0FwcCAhPT0gYXJjaGl2ZVBhdGggJiYgYXJjaGl2ZVBhdGggIT09IGFwcCkge1xuICAgICAgICAgIGF3YWl0IGZzLnJpbXJhZihhcmNoaXZlUGF0aCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGxvZ2dlci5pbmZvKGBVbnppcHBlZCBsb2NhbCBhcHAgdG8gJyR7bmV3QXBwfSdgKTtcbiAgICB9IGVsc2UgaWYgKCFwYXRoLmlzQWJzb2x1dGUobmV3QXBwKSkge1xuICAgICAgbmV3QXBwID0gcGF0aC5yZXNvbHZlKHByb2Nlc3MuY3dkKCksIG5ld0FwcCk7XG4gICAgICBsb2dnZXIud2FybihgVGhlIGN1cnJlbnQgYXBwbGljYXRpb24gcGF0aCAnJHthcHB9JyBpcyBub3QgYWJzb2x1dGUgYCArXG4gICAgICAgIGBhbmQgaGFzIGJlZW4gcmV3cml0dGVuIHRvICcke25ld0FwcH0nLiBDb25zaWRlciB1c2luZyBhYnNvbHV0ZSBwYXRocyByYXRoZXIgdGhhbiByZWxhdGl2ZWApO1xuICAgICAgYXBwID0gbmV3QXBwO1xuICAgIH1cblxuICAgIGNvbnN0IHN0b3JlQXBwSW5DYWNoZSA9IGFzeW5jIChhcHBQYXRoVG9DYWNoZSkgPT4ge1xuICAgICAgY29uc3QgY2FjaGVkRnVsbFBhdGggPSBjYWNoZWRBcHBJbmZvPy5mdWxsUGF0aDtcbiAgICAgIGlmIChjYWNoZWRGdWxsUGF0aCAmJiBjYWNoZWRGdWxsUGF0aCAhPT0gYXBwUGF0aFRvQ2FjaGUpIHtcbiAgICAgICAgYXdhaXQgZnMucmltcmFmKGNhY2hlZEZ1bGxQYXRoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGludGVncml0eSA9IHt9O1xuICAgICAgaWYgKChhd2FpdCBmcy5zdGF0KGFwcFBhdGhUb0NhY2hlKSkuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICBpbnRlZ3JpdHkuZm9sZGVyID0gYXdhaXQgY2FsY3VsYXRlRm9sZGVySW50ZWdyaXR5KGFwcFBhdGhUb0NhY2hlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGludGVncml0eS5maWxlID0gYXdhaXQgY2FsY3VsYXRlRmlsZUludGVncml0eShhcHBQYXRoVG9DYWNoZSk7XG4gICAgICB9XG4gICAgICBBUFBMSUNBVElPTlNfQ0FDSEUuc2V0KGFwcCwge1xuICAgICAgICAuLi5yZW1vdGVBcHBQcm9wcyxcbiAgICAgICAgdGltZXN0YW1wOiBEYXRlLm5vdygpLFxuICAgICAgICBwYWNrYWdlSGFzaCxcbiAgICAgICAgaW50ZWdyaXR5LFxuICAgICAgICBmdWxsUGF0aDogYXBwUGF0aFRvQ2FjaGUsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBhcHBQYXRoVG9DYWNoZTtcbiAgICB9O1xuXG4gICAgaWYgKF8uaXNGdW5jdGlvbihvblBvc3RQcm9jZXNzKSkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgb25Qb3N0UHJvY2Vzcyh7XG4gICAgICAgIGNhY2hlZEFwcEluZm86IF8uY2xvbmUoY2FjaGVkQXBwSW5mbyksXG4gICAgICAgIGlzVXJsLFxuICAgICAgICBoZWFkZXJzOiBfLmNsb25lKGhlYWRlcnMpLFxuICAgICAgICBhcHBQYXRoOiBuZXdBcHAsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiAoIXJlc3VsdD8uYXBwUGF0aCB8fCBhcHAgPT09IHJlc3VsdD8uYXBwUGF0aCB8fCAhYXdhaXQgZnMuZXhpc3RzKHJlc3VsdD8uYXBwUGF0aCkpXG4gICAgICAgID8gbmV3QXBwXG4gICAgICAgIDogYXdhaXQgc3RvcmVBcHBJbkNhY2hlKHJlc3VsdC5hcHBQYXRoKTtcbiAgICB9XG5cbiAgICB2ZXJpZnlBcHBFeHRlbnNpb24obmV3QXBwLCBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zKTtcbiAgICByZXR1cm4gKGFwcCAhPT0gbmV3QXBwICYmIChwYWNrYWdlSGFzaCB8fCBfLnZhbHVlcyhyZW1vdGVBcHBQcm9wcykuc29tZShCb29sZWFuKSkpXG4gICAgICA/IGF3YWl0IHN0b3JlQXBwSW5DYWNoZShuZXdBcHApXG4gICAgICA6IG5ld0FwcDtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGRvd25sb2FkQXBwIChhcHAsIHRhcmdldFBhdGgpIHtcbiAgY29uc3Qge2hyZWZ9ID0gdXJsLnBhcnNlKGFwcCk7XG4gIHRyeSB7XG4gICAgYXdhaXQgbmV0LmRvd25sb2FkRmlsZShocmVmLCB0YXJnZXRQYXRoLCB7XG4gICAgICB0aW1lb3V0OiBBUFBfRE9XTkxPQURfVElNRU9VVF9NUyxcbiAgICB9KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gZG93bmxvYWQgdGhlIGFwcDogJHtlcnIubWVzc2FnZX1gKTtcbiAgfVxuICByZXR1cm4gdGFyZ2V0UGF0aDtcbn1cblxuLyoqXG4gKiBFeHRyYWN0cyB0aGUgYnVuZGxlIGZyb20gYW4gYXJjaGl2ZSBpbnRvIHRoZSBnaXZlbiBmb2xkZXJcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gemlwUGF0aCBGdWxsIHBhdGggdG8gdGhlIGFyY2hpdmUgY29udGFpbmluZyB0aGUgYnVuZGxlXG4gKiBAcGFyYW0ge3N0cmluZ30gZHN0Um9vdCBGdWxsIHBhdGggdG8gdGhlIGZvbGRlciB3aGVyZSB0aGUgZXh0cmFjdGVkIGJ1bmRsZVxuICogc2hvdWxkIGJlIHBsYWNlZFxuICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fHN0cmluZ30gc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucyBUaGUgbGlzdCBvZiBleHRlbnNpb25zXG4gKiB0aGUgdGFyZ2V0IGFwcGxpY2F0aW9uIGJ1bmRsZSBzdXBwb3J0cywgZm9yIGV4YW1wbGUgWycuYXBrJywgJy5hcGtzJ10gZm9yXG4gKiBBbmRyb2lkIHBhY2thZ2VzXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBGdWxsIHBhdGggdG8gdGhlIGJ1bmRsZSBpbiB0aGUgZGVzdGluYXRpb24gZm9sZGVyXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGdpdmVuIGFyY2hpdmUgaXMgaW52YWxpZCBvciBubyBhcHBsaWNhdGlvbiBidW5kbGVzXG4gKiBoYXZlIGJlZW4gZm91bmQgaW5zaWRlXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHVuemlwQXBwICh6aXBQYXRoLCBkc3RSb290LCBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zKSB7XG4gIGF3YWl0IHppcC5hc3NlcnRWYWxpZFppcCh6aXBQYXRoKTtcblxuICBpZiAoIV8uaXNBcnJheShzdXBwb3J0ZWRBcHBFeHRlbnNpb25zKSkge1xuICAgIHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMgPSBbc3VwcG9ydGVkQXBwRXh0ZW5zaW9uc107XG4gIH1cblxuICBjb25zdCB0bXBSb290ID0gYXdhaXQgdGVtcERpci5vcGVuRGlyKCk7XG4gIHRyeSB7XG4gICAgbG9nZ2VyLmRlYnVnKGBVbnppcHBpbmcgJyR7emlwUGF0aH0nYCk7XG4gICAgY29uc3QgdGltZXIgPSBuZXcgdGltaW5nLlRpbWVyKCkuc3RhcnQoKTtcbiAgICBjb25zdCB1c2VTeXN0ZW1VbnppcEVudiA9IHByb2Nlc3MuZW52LkFQUElVTV9QUkVGRVJfU1lTVEVNX1VOWklQO1xuICAgIGNvbnN0IHVzZVN5c3RlbVVuemlwID0gXy5pc0VtcHR5KHVzZVN5c3RlbVVuemlwRW52KVxuICAgICAgfHwgIVsnMCcsICdmYWxzZSddLmluY2x1ZGVzKF8udG9Mb3dlcih1c2VTeXN0ZW1VbnppcEVudikpO1xuICAgIC8qKlxuICAgICAqIEF0dGVtcHQgdG8gdXNlIHVzZSB0aGUgc3lzdGVtIGB1bnppcGAgKGUuZy4sIGAvdXNyL2Jpbi91bnppcGApIGR1ZVxuICAgICAqIHRvIHRoZSBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudCBpdCBwcm92aWRlcyBvdmVyIHRoZSBuYXRpdmVcbiAgICAgKiBKUyBcInVuemlwXCIgaW1wbGVtZW50YXRpb24uXG4gICAgICogQHR5cGUge2ltcG9ydCgnQGFwcGl1bS9zdXBwb3J0L2xpYi96aXAnKS5FeHRyYWN0QWxsT3B0aW9uc31cbiAgICAgKi9cbiAgICBjb25zdCBleHRyYWN0aW9uT3B0cyA9IHt1c2VTeXN0ZW1VbnppcH07XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FwcGl1bS9hcHBpdW0vaXNzdWVzLzE0MTAwXG4gICAgaWYgKHBhdGguZXh0bmFtZSh6aXBQYXRoKSA9PT0gSVBBX0VYVCkge1xuICAgICAgbG9nZ2VyLmRlYnVnKGBFbmZvcmNpbmcgVVRGLTggZW5jb2Rpbmcgb24gdGhlIGV4dHJhY3RlZCBmaWxlIG5hbWVzIGZvciAnJHtwYXRoLmJhc2VuYW1lKHppcFBhdGgpfSdgKTtcbiAgICAgIGV4dHJhY3Rpb25PcHRzLmZpbGVOYW1lc0VuY29kaW5nID0gJ3V0ZjgnO1xuICAgIH1cbiAgICBhd2FpdCB6aXAuZXh0cmFjdEFsbFRvKHppcFBhdGgsIHRtcFJvb3QsIGV4dHJhY3Rpb25PcHRzKTtcbiAgICBjb25zdCBnbG9iUGF0dGVybiA9IGAqKi8qLisoJHtzdXBwb3J0ZWRBcHBFeHRlbnNpb25zLm1hcCgoZXh0KSA9PiBleHQucmVwbGFjZSgvXlxcLi8sICcnKSkuam9pbignfCcpfSlgO1xuICAgIGNvbnN0IHNvcnRlZEJ1bmRsZUl0ZW1zID0gKGF3YWl0IGZzLmdsb2IoZ2xvYlBhdHRlcm4sIHtcbiAgICAgIGN3ZDogdG1wUm9vdCxcbiAgICAgIHN0cmljdDogZmFsc2UsXG4gICAgLy8gR2V0IHRoZSB0b3AgbGV2ZWwgbWF0Y2hcbiAgICB9KSkuc29ydCgoYSwgYikgPT4gYS5zcGxpdChwYXRoLnNlcCkubGVuZ3RoIC0gYi5zcGxpdChwYXRoLnNlcCkubGVuZ3RoKTtcbiAgICBpZiAoXy5pc0VtcHR5KHNvcnRlZEJ1bmRsZUl0ZW1zKSkge1xuICAgICAgbG9nZ2VyLmVycm9yQW5kVGhyb3coYEFwcCB1bnppcHBlZCBPSywgYnV0IHdlIGNvdWxkIG5vdCBmaW5kIGFueSAnJHtzdXBwb3J0ZWRBcHBFeHRlbnNpb25zfScgYCArXG4gICAgICAgIHV0aWwucGx1cmFsaXplKCdidW5kbGUnLCBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zLmxlbmd0aCwgZmFsc2UpICtcbiAgICAgICAgYCBpbiBpdC4gTWFrZSBzdXJlIHlvdXIgYXJjaGl2ZSBjb250YWlucyBhdCBsZWFzdCBvbmUgcGFja2FnZSBoYXZpbmcgYCArXG4gICAgICAgIGAnJHtzdXBwb3J0ZWRBcHBFeHRlbnNpb25zfScgJHt1dGlsLnBsdXJhbGl6ZSgnZXh0ZW5zaW9uJywgc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucy5sZW5ndGgsIGZhbHNlKX1gKTtcbiAgICB9XG4gICAgbG9nZ2VyLmRlYnVnKGBFeHRyYWN0ZWQgJHt1dGlsLnBsdXJhbGl6ZSgnYnVuZGxlIGl0ZW0nLCBzb3J0ZWRCdW5kbGVJdGVtcy5sZW5ndGgsIHRydWUpfSBgICtcbiAgICAgIGBmcm9tICcke3ppcFBhdGh9JyBpbiAke01hdGgucm91bmQodGltZXIuZ2V0RHVyYXRpb24oKS5hc01pbGxpU2Vjb25kcyl9bXM6ICR7c29ydGVkQnVuZGxlSXRlbXN9YCk7XG4gICAgY29uc3QgbWF0Y2hlZEJ1bmRsZSA9IF8uZmlyc3Qoc29ydGVkQnVuZGxlSXRlbXMpO1xuICAgIGxvZ2dlci5pbmZvKGBBc3N1bWluZyAnJHttYXRjaGVkQnVuZGxlfScgaXMgdGhlIGNvcnJlY3QgYnVuZGxlYCk7XG4gICAgY29uc3QgZHN0UGF0aCA9IHBhdGgucmVzb2x2ZShkc3RSb290LCBwYXRoLmJhc2VuYW1lKG1hdGNoZWRCdW5kbGUpKTtcbiAgICBhd2FpdCBmcy5tdihwYXRoLnJlc29sdmUodG1wUm9vdCwgbWF0Y2hlZEJ1bmRsZSksIGRzdFBhdGgsIHtta2RpcnA6IHRydWV9KTtcbiAgICByZXR1cm4gZHN0UGF0aDtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBmcy5yaW1yYWYodG1wUm9vdCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNQYWNrYWdlT3JCdW5kbGUgKGFwcCkge1xuICByZXR1cm4gKC9eKFthLXpBLVowLTlcXC1fXStcXC5bYS16QS1aMC05XFwtX10rKSskLykudGVzdChhcHApO1xufVxuXG4vKipcbiAqIEZpbmRzIGFsbCBpbnN0YW5jZXMgJ2ZpcnN0S2V5JyBhbmQgY3JlYXRlIGEgZHVwbGljYXRlIHdpdGggdGhlIGtleSAnc2Vjb25kS2V5JyxcbiAqIERvIHRoZSBzYW1lIHRoaW5nIGluIHJldmVyc2UuIElmIHdlIGZpbmQgJ3NlY29uZEtleScsIGNyZWF0ZSBhIGR1cGxpY2F0ZSB3aXRoIHRoZSBrZXkgJ2ZpcnN0S2V5Jy5cbiAqXG4gKiBUaGlzIHdpbGwgY2F1c2Uga2V5cyB0byBiZSBvdmVyd3JpdHRlbiBpZiB0aGUgb2JqZWN0IGNvbnRhaW5zICdmaXJzdEtleScgYW5kICdzZWNvbmRLZXknLlxuXG4gKiBAcGFyYW0geyp9IGlucHV0IEFueSB0eXBlIG9mIGlucHV0XG4gKiBAcGFyYW0ge1N0cmluZ30gZmlyc3RLZXkgVGhlIGZpcnN0IGtleSB0byBkdXBsaWNhdGVcbiAqIEBwYXJhbSB7U3RyaW5nfSBzZWNvbmRLZXkgVGhlIHNlY29uZCBrZXkgdG8gZHVwbGljYXRlXG4gKi9cbmZ1bmN0aW9uIGR1cGxpY2F0ZUtleXMgKGlucHV0LCBmaXJzdEtleSwgc2Vjb25kS2V5KSB7XG4gIC8vIElmIGFycmF5IHByb3ZpZGVkLCByZWN1cnNpdmVseSBjYWxsIG9uIGFsbCBlbGVtZW50c1xuICBpZiAoXy5pc0FycmF5KGlucHV0KSkge1xuICAgIHJldHVybiBpbnB1dC5tYXAoKGl0ZW0pID0+IGR1cGxpY2F0ZUtleXMoaXRlbSwgZmlyc3RLZXksIHNlY29uZEtleSkpO1xuICB9XG5cbiAgLy8gSWYgb2JqZWN0LCBjcmVhdGUgZHVwbGljYXRlcyBmb3Iga2V5cyBhbmQgdGhlbiByZWN1cnNpdmVseSBjYWxsIG9uIHZhbHVlc1xuICBpZiAoXy5pc1BsYWluT2JqZWN0KGlucHV0KSkge1xuICAgIGNvbnN0IHJlc3VsdE9iaiA9IHt9O1xuICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBfLnRvUGFpcnMoaW5wdXQpKSB7XG4gICAgICBjb25zdCByZWN1cnNpdmVseUNhbGxlZFZhbHVlID0gZHVwbGljYXRlS2V5cyh2YWx1ZSwgZmlyc3RLZXksIHNlY29uZEtleSk7XG4gICAgICBpZiAoa2V5ID09PSBmaXJzdEtleSkge1xuICAgICAgICByZXN1bHRPYmpbc2Vjb25kS2V5XSA9IHJlY3Vyc2l2ZWx5Q2FsbGVkVmFsdWU7XG4gICAgICB9IGVsc2UgaWYgKGtleSA9PT0gc2Vjb25kS2V5KSB7XG4gICAgICAgIHJlc3VsdE9ialtmaXJzdEtleV0gPSByZWN1cnNpdmVseUNhbGxlZFZhbHVlO1xuICAgICAgfVxuICAgICAgcmVzdWx0T2JqW2tleV0gPSByZWN1cnNpdmVseUNhbGxlZFZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0T2JqO1xuICB9XG5cbiAgLy8gQmFzZSBjYXNlLiBSZXR1cm4gcHJpbWl0aXZlcyB3aXRob3V0IGRvaW5nIGFueXRoaW5nLlxuICByZXR1cm4gaW5wdXQ7XG59XG5cbi8qKlxuICogVGFrZXMgYSBkZXNpcmVkIGNhcGFiaWxpdHkgYW5kIHRyaWVzIHRvIEpTT04ucGFyc2UgaXQgYXMgYW4gYXJyYXksXG4gKiBhbmQgZWl0aGVyIHJldHVybnMgdGhlIHBhcnNlZCBhcnJheSBvciBhIHNpbmdsZXRvbiBhcnJheS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3xBcnJheTxTdHJpbmc+fSBjYXAgQSBkZXNpcmVkIGNhcGFiaWxpdHlcbiAqL1xuZnVuY3Rpb24gcGFyc2VDYXBzQXJyYXkgKGNhcCkge1xuICBpZiAoXy5pc0FycmF5KGNhcCkpIHtcbiAgICByZXR1cm4gY2FwO1xuICB9XG5cbiAgbGV0IHBhcnNlZENhcHM7XG4gIHRyeSB7XG4gICAgcGFyc2VkQ2FwcyA9IEpTT04ucGFyc2UoY2FwKTtcbiAgICBpZiAoXy5pc0FycmF5KHBhcnNlZENhcHMpKSB7XG4gICAgICByZXR1cm4gcGFyc2VkQ2FwcztcbiAgICB9XG4gIH0gY2F0Y2ggKGlnbikge1xuICAgIGxvZ2dlci53YXJuKGBGYWlsZWQgdG8gcGFyc2UgY2FwYWJpbGl0eSBhcyBKU09OIGFycmF5YCk7XG4gIH1cbiAgaWYgKF8uaXNTdHJpbmcoY2FwKSkge1xuICAgIHJldHVybiBbY2FwXTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYG11c3QgcHJvdmlkZSBhIHN0cmluZyBvciBKU09OIEFycmF5OyByZWNlaXZlZCAke2NhcH1gKTtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBhIHN0cmluZyB0aGF0IHVuaXF1ZWx5IGRlc2NyaWJlcyBkcml2ZXIgaW5zdGFuY2VcbiAqXG4gKiBAcGFyYW0ge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkNvcmV9IG9iaiBkcml2ZXIgaW5zdGFuY2VcbiAqIEBwYXJhbSB7c3RyaW5nP30gc2Vzc2lvbklkIHNlc3Npb24gaWRlbnRpZmllciAoaWYgZXhpc3RzKVxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gZ2VuZXJhdGVEcml2ZXJMb2dQcmVmaXggKG9iaiwgc2Vzc2lvbklkID0gbnVsbCkge1xuICBjb25zdCBpbnN0YW5jZU5hbWUgPSBgJHtvYmouY29uc3RydWN0b3IubmFtZX1AJHtub2RlLmdldE9iamVjdElkKG9iaikuc3Vic3RyaW5nKDAsIDQpfWA7XG4gIHJldHVybiBzZXNzaW9uSWQgPyBgJHtpbnN0YW5jZU5hbWV9ICgke3Nlc3Npb25JZC5zdWJzdHJpbmcoMCwgOCl9KWAgOiBpbnN0YW5jZU5hbWU7XG59XG5cbi8qKiBAdHlwZSB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuRHJpdmVySGVscGVyc30gKi9cbmV4cG9ydCBkZWZhdWx0IHtcbiAgY29uZmlndXJlQXBwLCBpc1BhY2thZ2VPckJ1bmRsZSwgZHVwbGljYXRlS2V5cywgcGFyc2VDYXBzQXJyYXksIGdlbmVyYXRlRHJpdmVyTG9nUHJlZml4XG59O1xuZXhwb3J0IHtcbiAgY29uZmlndXJlQXBwLCBpc1BhY2thZ2VPckJ1bmRsZSwgZHVwbGljYXRlS2V5cywgcGFyc2VDYXBzQXJyYXksIGdlbmVyYXRlRHJpdmVyTG9nUHJlZml4XG59O1xuIl19
548
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJUEFfRVhUIiwiWklQX0VYVFMiLCJaSVBfTUlNRV9UWVBFUyIsIkNBQ0hFRF9BUFBTX01BWF9BR0UiLCJNQVhfQ0FDSEVEX0FQUFMiLCJBUFBMSUNBVElPTlNfQ0FDSEUiLCJMUlUiLCJtYXgiLCJ0dGwiLCJ1cGRhdGVBZ2VPbkdldCIsImRpc3Bvc2UiLCJhcHAiLCJmdWxsUGF0aCIsImxvZ2dlciIsImluZm8iLCJmcyIsInJpbXJhZiIsIm5vRGlzcG9zZU9uU2V0IiwiQVBQTElDQVRJT05TX0NBQ0hFX0dVQVJEIiwiQXN5bmNMb2NrIiwiU0FOSVRJWkVfUkVQTEFDRU1FTlQiLCJERUZBVUxUX0JBU0VOQU1FIiwiQVBQX0RPV05MT0FEX1RJTUVPVVRfTVMiLCJwcm9jZXNzIiwib24iLCJzaXplIiwiYXBwUGF0aHMiLCJ2YWx1ZXMiLCJtYXAiLCJkZWJ1ZyIsImxlbmd0aCIsInV0aWwiLCJwbHVyYWxpemUiLCJhcHBQYXRoIiwicmltcmFmU3luYyIsImUiLCJ3YXJuIiwibWVzc2FnZSIsInJldHJpZXZlSGVhZGVycyIsImxpbmsiLCJ1cmwiLCJtZXRob2QiLCJ0aW1lb3V0IiwiaGVhZGVycyIsImdldENhY2hlZEFwcGxpY2F0aW9uUGF0aCIsImN1cnJlbnRBcHBQcm9wcyIsImNhY2hlZEFwcEluZm8iLCJyZWZyZXNoIiwiXyIsImlzUGxhaW5PYmplY3QiLCJsYXN0TW9kaWZpZWQiLCJjdXJyZW50TW9kaWZpZWQiLCJpbW11dGFibGUiLCJjdXJyZW50SW1tdXRhYmxlIiwibWF4QWdlIiwiY3VycmVudE1heEFnZSIsInRpbWVzdGFtcCIsImdldFRpbWUiLCJtc0xlZnQiLCJEYXRlIiwibm93IiwicGF0aCIsImJhc2VuYW1lIiwidmVyaWZ5QXBwRXh0ZW5zaW9uIiwic3VwcG9ydGVkQXBwRXh0ZW5zaW9ucyIsInRvTG93ZXIiLCJpbmNsdWRlcyIsImV4dG5hbWUiLCJFcnJvciIsImNhbGN1bGF0ZUZvbGRlckludGVncml0eSIsImZvbGRlclBhdGgiLCJnbG9iIiwiY3dkIiwic3RyaWN0Iiwibm9zb3J0IiwiY2FsY3VsYXRlRmlsZUludGVncml0eSIsImZpbGVQYXRoIiwiaGFzaCIsImlzQXBwSW50ZWdyaXR5T2siLCJjdXJyZW50UGF0aCIsImV4cGVjdGVkSW50ZWdyaXR5IiwiZXhpc3RzIiwic3RhdCIsImlzRGlyZWN0b3J5IiwiZm9sZGVyIiwiZmlsZSIsImNvbmZpZ3VyZUFwcCIsIm9wdGlvbnMiLCJpc1N0cmluZyIsIm9uUG9zdFByb2Nlc3MiLCJpc0FycmF5Iiwic3VwcG9ydGVkRXh0ZW5zaW9ucyIsImlzRW1wdHkiLCJuZXdBcHAiLCJzaG91bGRVbnppcEFwcCIsInBhY2thZ2VIYXNoIiwicmVtb3RlQXBwUHJvcHMiLCJwcm90b2NvbCIsInBhdGhuYW1lIiwicGFyc2UiLCJpc1VybCIsImdldCIsImFjcXVpcmUiLCJ0ZXN0IiwibWF4QWdlTWF0Y2giLCJleGVjIiwicGFyc2VJbnQiLCJjYWNoZWRQYXRoIiwiaW50ZWdyaXR5IiwiZGVsZXRlIiwiZmlsZU5hbWUiLCJzYW5pdGl6ZU5hbWUiLCJkZWNvZGVVUklDb21wb25lbnQiLCJyZXBsYWNlbWVudCIsImN0Iiwic29tZSIsIm1pbWVUeXBlIiwiUmVnRXhwIiwiZXNjYXBlUmVnRXhwIiwibWF0Y2giLCJyZXN1bHRpbmdOYW1lIiwic3Vic3RyaW5nIiwicmVzdWx0aW5nRXh0IiwiZmlyc3QiLCJ0YXJnZXRQYXRoIiwidGVtcERpciIsInByZWZpeCIsInN1ZmZpeCIsImRvd25sb2FkQXBwIiwiZXJyb3JNZXNzYWdlIiwiaXNQYWNrYWdlQUZpbGUiLCJpc0ZpbGUiLCJpc0Z1bmN0aW9uIiwiYXJjaGl2ZVBhdGgiLCJ0bXBSb290Iiwib3BlbkRpciIsInVuemlwQXBwIiwiaXNBYnNvbHV0ZSIsInJlc29sdmUiLCJzdG9yZUFwcEluQ2FjaGUiLCJhcHBQYXRoVG9DYWNoZSIsImNhY2hlZEZ1bGxQYXRoIiwic2V0IiwicmVzdWx0IiwiY2xvbmUiLCJCb29sZWFuIiwiaHJlZiIsIm5ldCIsImRvd25sb2FkRmlsZSIsImVyciIsInppcFBhdGgiLCJkc3RSb290IiwiemlwIiwiYXNzZXJ0VmFsaWRaaXAiLCJ0aW1lciIsInRpbWluZyIsIlRpbWVyIiwic3RhcnQiLCJ1c2VTeXN0ZW1VbnppcEVudiIsImVudiIsIkFQUElVTV9QUkVGRVJfU1lTVEVNX1VOWklQIiwidXNlU3lzdGVtVW56aXAiLCJleHRyYWN0aW9uT3B0cyIsImZpbGVOYW1lc0VuY29kaW5nIiwiZXh0cmFjdEFsbFRvIiwiZ2xvYlBhdHRlcm4iLCJleHQiLCJyZXBsYWNlIiwiam9pbiIsInNvcnRlZEJ1bmRsZUl0ZW1zIiwic29ydCIsImEiLCJiIiwic3BsaXQiLCJzZXAiLCJlcnJvckFuZFRocm93IiwiTWF0aCIsInJvdW5kIiwiZ2V0RHVyYXRpb24iLCJhc01pbGxpU2Vjb25kcyIsIm1hdGNoZWRCdW5kbGUiLCJkc3RQYXRoIiwibXYiLCJta2RpcnAiLCJpc1BhY2thZ2VPckJ1bmRsZSIsImR1cGxpY2F0ZUtleXMiLCJpbnB1dCIsImZpcnN0S2V5Iiwic2Vjb25kS2V5IiwiaXRlbSIsInJlc3VsdE9iaiIsImtleSIsInZhbHVlIiwidG9QYWlycyIsInJlY3Vyc2l2ZWx5Q2FsbGVkVmFsdWUiLCJwYXJzZUNhcHNBcnJheSIsImNhcCIsInBhcnNlZENhcHMiLCJKU09OIiwiaWduIiwiZ2VuZXJhdGVEcml2ZXJMb2dQcmVmaXgiLCJvYmoiLCJzZXNzaW9uSWQiLCJpbnN0YW5jZU5hbWUiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJub2RlIiwiZ2V0T2JqZWN0SWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvYmFzZWRyaXZlci9oZWxwZXJzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB1cmwgZnJvbSAndXJsJztcbmltcG9ydCBsb2dnZXIgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IHsgdGVtcERpciwgZnMsIHV0aWwsIHppcCwgbmV0LCB0aW1pbmcsIG5vZGUgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IExSVSBmcm9tICdscnUtY2FjaGUnO1xuaW1wb3J0IEFzeW5jTG9jayBmcm9tICdhc3luYy1sb2NrJztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5cbmNvbnN0IElQQV9FWFQgPSAnLmlwYSc7XG5jb25zdCBaSVBfRVhUUyA9IFsnLnppcCcsIElQQV9FWFRdO1xuY29uc3QgWklQX01JTUVfVFlQRVMgPSBbXG4gICdhcHBsaWNhdGlvbi96aXAnLFxuICAnYXBwbGljYXRpb24veC16aXAtY29tcHJlc3NlZCcsXG4gICdtdWx0aXBhcnQveC16aXAnLFxuXTtcbmNvbnN0IENBQ0hFRF9BUFBTX01BWF9BR0UgPSAxMDAwICogNjAgKiA2MCAqIDI0OyAvLyBtc1xuY29uc3QgTUFYX0NBQ0hFRF9BUFBTID0gMTAyNDtcbmNvbnN0IEFQUExJQ0FUSU9OU19DQUNIRSA9IG5ldyBMUlUoe1xuICBtYXg6IE1BWF9DQUNIRURfQVBQUyxcbiAgdHRsOiBDQUNIRURfQVBQU19NQVhfQUdFLCAvLyBleHBpcmUgYWZ0ZXIgMjQgaG91cnNcbiAgdXBkYXRlQWdlT25HZXQ6IHRydWUsXG4gIGRpc3Bvc2U6IChhcHAsIHtmdWxsUGF0aH0pID0+IHtcbiAgICBsb2dnZXIuaW5mbyhgVGhlIGFwcGxpY2F0aW9uICcke2FwcH0nIGNhY2hlZCBhdCAnJHtmdWxsUGF0aH0nIGhhcyBgICtcbiAgICAgIGBleHBpcmVkIGFmdGVyICR7Q0FDSEVEX0FQUFNfTUFYX0FHRX1tc2ApO1xuICAgIGlmIChmdWxsUGF0aCkge1xuICAgICAgZnMucmltcmFmKGZ1bGxQYXRoKTtcbiAgICB9XG4gIH0sXG4gIG5vRGlzcG9zZU9uU2V0OiB0cnVlLFxufSk7XG5jb25zdCBBUFBMSUNBVElPTlNfQ0FDSEVfR1VBUkQgPSBuZXcgQXN5bmNMb2NrKCk7XG5jb25zdCBTQU5JVElaRV9SRVBMQUNFTUVOVCA9ICctJztcbmNvbnN0IERFRkFVTFRfQkFTRU5BTUUgPSAnYXBwaXVtLWFwcCc7XG5jb25zdCBBUFBfRE9XTkxPQURfVElNRU9VVF9NUyA9IDEyMCAqIDEwMDA7XG5cbnByb2Nlc3Mub24oJ2V4aXQnLCAoKSA9PiB7XG4gIGlmIChBUFBMSUNBVElPTlNfQ0FDSEUuc2l6ZSA9PT0gMCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGFwcFBhdGhzID0gWy4uLkFQUExJQ0FUSU9OU19DQUNIRS52YWx1ZXMoKV1cbiAgICAubWFwKCh7ZnVsbFBhdGh9KSA9PiBmdWxsUGF0aCk7XG4gIGxvZ2dlci5kZWJ1ZyhgUGVyZm9ybWluZyBjbGVhbnVwIG9mICR7YXBwUGF0aHMubGVuZ3RofSBjYWNoZWQgYCArXG4gICAgdXRpbC5wbHVyYWxpemUoJ2FwcGxpY2F0aW9uJywgYXBwUGF0aHMubGVuZ3RoKSk7XG4gIGZvciAoY29uc3QgYXBwUGF0aCBvZiBhcHBQYXRocykge1xuICAgIHRyeSB7XG4gICAgICAvLyBBc3luY2hyb25vdXMgY2FsbHMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gb25FeGl0IGhhbmRsZXJcbiAgICAgIGZzLnJpbXJhZlN5bmMoYXBwUGF0aCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgbG9nZ2VyLndhcm4oZS5tZXNzYWdlKTtcbiAgICB9XG4gIH1cbn0pO1xuXG5cbmFzeW5jIGZ1bmN0aW9uIHJldHJpZXZlSGVhZGVycyAobGluaykge1xuICB0cnkge1xuICAgIHJldHVybiAoYXdhaXQgYXhpb3Moe1xuICAgICAgdXJsOiBsaW5rLFxuICAgICAgbWV0aG9kOiAnSEVBRCcsXG4gICAgICB0aW1lb3V0OiA1MDAwLFxuICAgIH0pKS5oZWFkZXJzO1xuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nZ2VyLmluZm8oYENhbm5vdCBzZW5kIEhFQUQgcmVxdWVzdCB0byAnJHtsaW5rfScuIE9yaWdpbmFsIGVycm9yOiAke2UubWVzc2FnZX1gKTtcbiAgfVxuICByZXR1cm4ge307XG59XG5cbmZ1bmN0aW9uIGdldENhY2hlZEFwcGxpY2F0aW9uUGF0aCAobGluaywgY3VycmVudEFwcFByb3BzID0ge30sIGNhY2hlZEFwcEluZm8gPSB7fSkge1xuICBjb25zdCByZWZyZXNoID0gKCkgPT4ge1xuICAgIGxvZ2dlci5kZWJ1ZyhgQSBmcmVzaCBjb3B5IG9mIHRoZSBhcHBsaWNhdGlvbiBpcyBnb2luZyB0byBiZSBkb3dubG9hZGVkIGZyb20gJHtsaW5rfWApO1xuICAgIHJldHVybiBudWxsO1xuICB9O1xuXG4gIGlmICghXy5pc1BsYWluT2JqZWN0KGNhY2hlZEFwcEluZm8pIHx8ICFfLmlzUGxhaW5PYmplY3QoY3VycmVudEFwcFByb3BzKSkge1xuICAgIC8vIGlmIGFuIGludmFsaWQgYXJnIGlzIHBhc3NlZCB0aGVuIGFzc3VtZSBjYWNoZSBtaXNzXG4gICAgcmV0dXJuIHJlZnJlc2goKTtcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICBsYXN0TW9kaWZpZWQ6IGN1cnJlbnRNb2RpZmllZCxcbiAgICBpbW11dGFibGU6IGN1cnJlbnRJbW11dGFibGUsXG4gICAgLy8gbWF4QWdlIGlzIGluIHNlY29uZHNcbiAgICBtYXhBZ2U6IGN1cnJlbnRNYXhBZ2UsXG4gIH0gPSBjdXJyZW50QXBwUHJvcHM7XG4gIGNvbnN0IHtcbiAgICAvLyBEYXRlIGluc3RhbmNlXG4gICAgbGFzdE1vZGlmaWVkLFxuICAgIC8vIGJvb2xlYW5cbiAgICBpbW11dGFibGUsXG4gICAgLy8gVW5peCB0aW1lIGluIG1pbGxpc2Vjb25kc1xuICAgIHRpbWVzdGFtcCxcbiAgICBmdWxsUGF0aCxcbiAgfSA9IGNhY2hlZEFwcEluZm87XG4gIGlmIChsYXN0TW9kaWZpZWQgJiYgY3VycmVudE1vZGlmaWVkKSB7XG4gICAgaWYgKGN1cnJlbnRNb2RpZmllZC5nZXRUaW1lKCkgPD0gbGFzdE1vZGlmaWVkLmdldFRpbWUoKSkge1xuICAgICAgbG9nZ2VyLmRlYnVnKGBUaGUgYXBwbGljYXRpb24gYXQgJHtsaW5rfSBoYXMgbm90IGJlZW4gbW9kaWZpZWQgc2luY2UgJHtsYXN0TW9kaWZpZWR9YCk7XG4gICAgICByZXR1cm4gZnVsbFBhdGg7XG4gICAgfVxuICAgIGxvZ2dlci5kZWJ1ZyhgVGhlIGFwcGxpY2F0aW9uIGF0ICR7bGlua30gaGFzIGJlZW4gbW9kaWZpZWQgc2luY2UgJHtsYXN0TW9kaWZpZWR9YCk7XG4gICAgcmV0dXJuIHJlZnJlc2goKTtcbiAgfVxuICBpZiAoaW1tdXRhYmxlICYmIGN1cnJlbnRJbW11dGFibGUpIHtcbiAgICBsb2dnZXIuZGVidWcoYFRoZSBhcHBsaWNhdGlvbiBhdCAke2xpbmt9IGlzIGltbXV0YWJsZWApO1xuICAgIHJldHVybiBmdWxsUGF0aDtcbiAgfVxuICBpZiAoY3VycmVudE1heEFnZSAmJiB0aW1lc3RhbXApIHtcbiAgICBjb25zdCBtc0xlZnQgPSB0aW1lc3RhbXAgKyBjdXJyZW50TWF4QWdlICogMTAwMCAtIERhdGUubm93KCk7XG4gICAgaWYgKG1zTGVmdCA+IDApIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhgVGhlIGNhY2hlZCBhcHBsaWNhdGlvbiAnJHtwYXRoLmJhc2VuYW1lKGZ1bGxQYXRoKX0nIHdpbGwgZXhwaXJlIGluICR7bXNMZWZ0IC8gMTAwMH1zYCk7XG4gICAgICByZXR1cm4gZnVsbFBhdGg7XG4gICAgfVxuICAgIGxvZ2dlci5kZWJ1ZyhgVGhlIGNhY2hlZCBhcHBsaWNhdGlvbiAnJHtwYXRoLmJhc2VuYW1lKGZ1bGxQYXRoKX0nIGhhcyBleHBpcmVkYCk7XG4gIH1cbiAgcmV0dXJuIHJlZnJlc2goKTtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5QXBwRXh0ZW5zaW9uIChhcHAsIHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMpIHtcbiAgaWYgKHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMubWFwKF8udG9Mb3dlcikuaW5jbHVkZXMoXy50b0xvd2VyKHBhdGguZXh0bmFtZShhcHApKSkpIHtcbiAgICByZXR1cm4gYXBwO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgTmV3IGFwcCBwYXRoICcke2FwcH0nIGRpZCBub3QgaGF2ZSBgICtcbiAgICBgJHt1dGlsLnBsdXJhbGl6ZSgnZXh0ZW5zaW9uJywgc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucy5sZW5ndGgsIGZhbHNlKX06IGAgK1xuICAgIHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBjYWxjdWxhdGVGb2xkZXJJbnRlZ3JpdHkgKGZvbGRlclBhdGgpIHtcbiAgcmV0dXJuIChhd2FpdCBmcy5nbG9iKCcqKi8qJywge2N3ZDogZm9sZGVyUGF0aCwgc3RyaWN0OiBmYWxzZSwgbm9zb3J0OiB0cnVlfSkpLmxlbmd0aDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY2FsY3VsYXRlRmlsZUludGVncml0eSAoZmlsZVBhdGgpIHtcbiAgcmV0dXJuIGF3YWl0IGZzLmhhc2goZmlsZVBhdGgpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBpc0FwcEludGVncml0eU9rIChjdXJyZW50UGF0aCwgZXhwZWN0ZWRJbnRlZ3JpdHkgPSB7fSkge1xuICBpZiAoIWF3YWl0IGZzLmV4aXN0cyhjdXJyZW50UGF0aCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBGb2xkZXIgaW50ZWdyaXR5IGNoZWNrIGlzIHNpbXBsZTpcbiAgLy8gVmVyaWZ5IHRoZSBwcmV2aW91cyBhbW91bnQgb2YgZmlsZXMgaXMgbm90IGdyZWF0ZXIgdGhhbiB0aGUgY3VycmVudCBvbmUuXG4gIC8vIFdlIGRvbid0IHdhbnQgdG8gdXNlIGVxdWFsaXR5IGNvbXBhcmlzb24gYmVjYXVzZSBvZiBhbiBhc3N1bXB0aW9uIHRoYXQgdGhlIE9TIG1pZ2h0XG4gIC8vIGNyZWF0ZSBzb21lIHVud2FudGVkIHNlcnZpY2UgZmlsZXMvY2FjaGVkIGluc2lkZSBvZiB0aGF0IGZvbGRlciBvciBpdHMgc3ViZm9sZGVycy5cbiAgLy8gT2ZjLCB2YWxpZGF0aW5nIHRoZSBoYXNoIHN1bSBvZiBlYWNoIGZpbGUgKG9yIGF0IGxlYXN0IG9mIGZpbGUgcGF0aCkgd291bGQgYmUgbXVjaFxuICAvLyBtb3JlIHByZWNpc2UsIGJ1dCB3ZSBkb24ndCBuZWVkIHRvIGJlIHZlcnkgcHJlY2lzZSBoZXJlIGFuZCBhbHNvIGRvbid0IHdhbnQgdG9cbiAgLy8gb3ZlcnVzZSBSQU0gYW5kIGhhdmUgYSBwZXJmb3JtYW5jZSBkcm9wLlxuICByZXR1cm4gKGF3YWl0IGZzLnN0YXQoY3VycmVudFBhdGgpKS5pc0RpcmVjdG9yeSgpXG4gICAgPyBhd2FpdCBjYWxjdWxhdGVGb2xkZXJJbnRlZ3JpdHkoY3VycmVudFBhdGgpID49IGV4cGVjdGVkSW50ZWdyaXR5Py5mb2xkZXJcbiAgICA6IGF3YWl0IGNhbGN1bGF0ZUZpbGVJbnRlZ3JpdHkoY3VycmVudFBhdGgpID09PSBleHBlY3RlZEludGVncml0eT8uZmlsZTtcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiBQb3N0UHJvY2Vzc09wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7P09iamVjdH0gY2FjaGVkQXBwSW5mbyBUaGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHByZXZpb3VzbHkgY2FjaGVkIGFwcCBpbnN0YW5jZSAoaWYgZXhpc3RzKTpcbiAqICAgIC0gcGFja2FnZUhhc2g6IFNIQTEgaGFzaCBvZiB0aGUgcGFja2FnZSBpZiBpdCBpcyBhIGZpbGUgYW5kIG5vdCBhIGZvbGRlclxuICogICAgLSBsYXN0TW9kaWZpZWQ6IE9wdGlvbmFsIERhdGUgaW5zdGFuY2UsIHRoZSB2YWx1ZSBvZiBmaWxlJ3MgYExhc3QtTW9kaWZpZWRgIGhlYWRlclxuICogICAgLSBpbW11dGFibGU6IE9wdGlvbmFsIGJvb2xlYW4gdmFsdWUuIENvbnRhaW5zIHRydWUgaWYgdGhlIGZpbGUgaGFzIGFuIGBpbW11dGFibGVgIG1hcmtcbiAqICAgICAgICAgICAgICAgICBpbiBgQ2FjaGUtY29udHJvbGAgaGVhZGVyXG4gKiAgICAtIG1heEFnZTogT3B0aW9uYWwgaW50ZWdlciByZXByZXNlbnRhdGlvbiBvZiBgbWF4QWdlYCBwYXJhbWV0ZXIgaW4gYENhY2hlLWNvbnRyb2xgIGhlYWRlclxuICogICAgLSB0aW1lc3RhbXA6IFRoZSB0aW1lc3RhbXAgdGhpcyBpdGVtIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBjYWNoZSAobWVhc3VyZWQgaW4gVW5peCBlcG9jaFxuICogICAgICAgICAgICAgICAgIG1pbGxpc2Vjb25kcylcbiAqICAgIC0gaW50ZWdyaXR5OiBBbiBvYmplY3QgY29udGFpbmluZyBlaXRoZXIgYGZpbGVgIHByb3BlcnR5IHdpdGggU0hBMSBoYXNoIG9mIHRoZSBmaWxlXG4gKiAgICAgICAgICAgICAgICAgb3IgYGZvbGRlcmAgcHJvcGVydHkgd2l0aCB0b3RhbCBhbW91bnQgb2YgY2FjaGVkIGZpbGVzIGFuZCBzdWJmb2xkZXJzXG4gKiAgICAtIGZ1bGxQYXRoOiB0aGUgZnVsbCBwYXRoIHRvIHRoZSBjYWNoZWQgYXBwXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGlzVXJsIFdoZXRoZXIgdGhlIGFwcCBoYXMgYmVlbiBkb3dubG9hZGVkIGZyb20gYSByZW1vdGUgVVJMXG4gKiBAcHJvcGVydHkgez9PYmplY3R9IGhlYWRlcnMgT3B0aW9uYWwgaGVhZGVycyBvYmplY3QuIE9ubHkgcHJlc2VudCBpZiBgaXNVcmxgIGlzIHRydWUgYW5kIGlmIHRoZSBzZXJ2ZXJcbiAqIHJlc3BvbmRzIHRvIEhFQUQgcmVxdWVzdHMuIEFsbCBoZWFkZXIgbmFtZXMgYXJlIG5vcm1hbGl6ZWQgdG8gbG93ZXJjYXNlLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGFwcFBhdGggQSBzdHJpbmcgY29udGFpbmluZyBmdWxsIHBhdGggdG8gdGhlIHByZXByb2Nlc3NlZCBhcHBsaWNhdGlvbiBwYWNrYWdlIChlaXRoZXJcbiAqIGRvd25sb2FkZWQgb3IgYSBsb2NhbCBvbmUpXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiBQb3N0UHJvY2Vzc1Jlc3VsdFxuICogQHByb3BlcnR5IHtzdHJpbmd9IGFwcFBhdGggVGhlIGZ1bGwgcGFzdCB0byB0aGUgcG9zdC1wcm9jZXNzZWQgYXBwbGljYXRpb24gcGFja2FnZSBvbiB0aGVcbiAqIGxvY2FsIGZpbGUgc3lzdGVtIChtaWdodCBiZSBhIGZpbGUgb3IgYSBmb2xkZXIgcGF0aClcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIENvbmZpZ3VyZUFwcE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7KG9iajogUG9zdFByb2Nlc3NPcHRpb25zKSA9PiAoUHJvbWlzZTxQb3N0UHJvY2Vzc1Jlc3VsdHx1bmRlZmluZWQ+fFBvc3RQcm9jZXNzUmVzdWx0fHVuZGVmaW5lZCl9IG9uUG9zdFByb2Nlc3NcbiAqIE9wdGlvbmFsIGZ1bmN0aW9uLCB3aGljaCBzaG91bGQgYmUgYXBwbGllZFxuICogdG8gdGhlIGFwcGxpY2F0aW9uIGFmdGVyIGl0IGlzIGRvd25sb2FkZWQvcHJlcHJvY2Vzc2VkLiBUaGlzIGZ1bmN0aW9uIG1heSBiZSBhc3luY1xuICogYW5kIGlzIGV4cGVjdGVkIHRvIGFjY2VwdCBzaW5nbGUgb2JqZWN0IHBhcmFtZXRlci5cbiAqIFRoZSBmdW5jdGlvbiBpcyBleHBlY3RlZCB0byBlaXRoZXIgcmV0dXJuIGEgZmFsc3kgdmFsdWUsIHdoaWNoIG1lYW5zIHRoZSBhcHAgbXVzdCBub3QgYmVcbiAqIGNhY2hlZCBhbmQgYSBmcmVzaCBjb3B5IG9mIGl0IGlzIGRvd25sb2FkZWQgZWFjaCB0aW1lLiBJZiB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYW4gb2JqZWN0XG4gKiBjb250YWluaW5nIGBhcHBQYXRoYCBwcm9wZXJ0eSB0aGVuIHRoZSBpbnRlZ3JpdHkgb2YgaXQgd2lsbCBiZSB2ZXJpZmllZCBhbmQgc3RvcmVkIGludG9cbiAqIHRoZSBjYWNoZS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IHN1cHBvcnRlZEV4dGVuc2lvbnMgTGlzdCBvZiBzdXBwb3J0ZWQgYXBwbGljYXRpb24gZXh0ZW5zaW9ucyAoXG4gKiBpbmNsdWRpbmcgc3RhcnRpbmcgZG90cykuIFRoaXMgcHJvcGVydHkgaXMgbWFuZGF0b3J5IGFuZCBtdXN0IG5vdCBiZSBlbXB0eS5cbiAqL1xuXG4vKipcbiAqIFByZXBhcmVzIGFuIGFwcCB0byBiZSB1c2VkIGluIGFuIGF1dG9tYXRlZCB0ZXN0LiBUaGUgYXBwIGdldHMgY2FjaGVkIGF1dG9tYXRpY2FsbHlcbiAqIGlmIGl0IGlzIGFuIGFyY2hpdmUgb3IgaWYgaXQgaXMgZG93bmxvYWRlZCBmcm9tIGFuIFVSTC5cbiAqIElmIHRoZSBkb3dubG9hZGVkIGFwcCBoYXMgYC56aXBgIGV4dGVuc2lvbiwgdGhpcyBtZXRob2Qgd2lsbCB1bnppcCBpdC5cbiAqIFRoZSB1bnppcCBkb2VzIG5vdCB3b3JrIHdoZW4gYG9uUG9zdFByb2Nlc3NgIGlzIHByb3ZpZGVkLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcHAgRWl0aGVyIGEgZnVsbCBwYXRoIHRvIHRoZSBhcHAgb3IgYSByZW1vdGUgVVJMXG4gKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXXxDb25maWd1cmVBcHBPcHRpb25zfSBvcHRpb25zXG4gKiBAcmV0dXJucyBUaGUgZnVsbCBwYXRoIHRvIHRoZSByZXN1bHRpbmcgYXBwbGljYXRpb24gYnVuZGxlXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGNvbmZpZ3VyZUFwcCAoYXBwLCBvcHRpb25zID0ge30pIHtcbiAgaWYgKCFfLmlzU3RyaW5nKGFwcCkpIHtcbiAgICAvLyBpbW1lZGlhdGVseSBzaG9ydGNpcmN1aXQgaWYgbm90IGdpdmVuIGFuIGFwcFxuICAgIHJldHVybjtcbiAgfVxuXG4gIGxldCBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zO1xuICBjb25zdCB7XG4gICAgb25Qb3N0UHJvY2VzcyxcbiAgfSA9IF8uaXNQbGFpbk9iamVjdChvcHRpb25zKSA/IG9wdGlvbnMgOiB7fTtcbiAgaWYgKF8uaXNTdHJpbmcob3B0aW9ucykpIHtcbiAgICBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zID0gW29wdGlvbnNdO1xuICB9IGVsc2UgaWYgKF8uaXNBcnJheShvcHRpb25zKSkge1xuICAgIHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMgPSBvcHRpb25zO1xuICB9IGVsc2UgaWYgKF8uaXNQbGFpbk9iamVjdChvcHRpb25zKSkge1xuICAgIHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMgPSBvcHRpb25zLnN1cHBvcnRlZEV4dGVuc2lvbnM7XG4gIH1cbiAgaWYgKF8uaXNFbXB0eShzdXBwb3J0ZWRBcHBFeHRlbnNpb25zKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgT25lIG9yIG1vcmUgc3VwcG9ydGVkIGFwcCBleHRlbnNpb25zIG11c3QgYmUgcHJvdmlkZWRgKTtcbiAgfVxuXG4gIGxldCBuZXdBcHAgPSBhcHA7XG4gIGxldCBzaG91bGRVbnppcEFwcCA9IGZhbHNlO1xuICBsZXQgcGFja2FnZUhhc2ggPSBudWxsO1xuICBsZXQgaGVhZGVycyA9IG51bGw7XG4gIGNvbnN0IHJlbW90ZUFwcFByb3BzID0ge1xuICAgIGxhc3RNb2RpZmllZDogbnVsbCxcbiAgICBpbW11dGFibGU6IGZhbHNlLFxuICAgIG1heEFnZTogbnVsbCxcbiAgfTtcbiAgY29uc3Qge3Byb3RvY29sLCBwYXRobmFtZX0gPSB1cmwucGFyc2UobmV3QXBwKTtcbiAgY29uc3QgaXNVcmwgPSBbJ2h0dHA6JywgJ2h0dHBzOiddLmluY2x1ZGVzKHByb3RvY29sKTtcblxuICBjb25zdCBjYWNoZWRBcHBJbmZvID0gQVBQTElDQVRJT05TX0NBQ0hFLmdldChhcHApO1xuXG4gIHJldHVybiBhd2FpdCBBUFBMSUNBVElPTlNfQ0FDSEVfR1VBUkQuYWNxdWlyZShhcHAsIGFzeW5jICgpID0+IHtcbiAgICBpZiAoaXNVcmwpIHtcbiAgICAgIC8vIFVzZSB0aGUgYXBwIGZyb20gcmVtb3RlIFVSTFxuICAgICAgbG9nZ2VyLmluZm8oYFVzaW5nIGRvd25sb2FkYWJsZSBhcHAgJyR7bmV3QXBwfSdgKTtcbiAgICAgIGhlYWRlcnMgPSBhd2FpdCByZXRyaWV2ZUhlYWRlcnMobmV3QXBwKTtcbiAgICAgIGlmICghXy5pc0VtcHR5KGhlYWRlcnMpKSB7XG4gICAgICAgIGlmIChoZWFkZXJzWydsYXN0LW1vZGlmaWVkJ10pIHtcbiAgICAgICAgICByZW1vdGVBcHBQcm9wcy5sYXN0TW9kaWZpZWQgPSBuZXcgRGF0ZShoZWFkZXJzWydsYXN0LW1vZGlmaWVkJ10pO1xuICAgICAgICB9XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhgTGFzdC1Nb2RpZmllZDogJHtoZWFkZXJzWydsYXN0LW1vZGlmaWVkJ119YCk7XG4gICAgICAgIGlmIChoZWFkZXJzWydjYWNoZS1jb250cm9sJ10pIHtcbiAgICAgICAgICByZW1vdGVBcHBQcm9wcy5pbW11dGFibGUgPSAvXFxiaW1tdXRhYmxlXFxiL2kudGVzdChoZWFkZXJzWydjYWNoZS1jb250cm9sJ10pO1xuICAgICAgICAgIGNvbnN0IG1heEFnZU1hdGNoID0gL1xcYm1heC1hZ2U9KFxcZCspXFxiL2kuZXhlYyhoZWFkZXJzWydjYWNoZS1jb250cm9sJ10pO1xuICAgICAgICAgIGlmIChtYXhBZ2VNYXRjaCkge1xuICAgICAgICAgICAgcmVtb3RlQXBwUHJvcHMubWF4QWdlID0gcGFyc2VJbnQobWF4QWdlTWF0Y2hbMV0sIDEwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbG9nZ2VyLmRlYnVnKGBDYWNoZS1Db250cm9sOiAke2hlYWRlcnNbJ2NhY2hlLWNvbnRyb2wnXX1gKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNhY2hlZFBhdGggPSBnZXRDYWNoZWRBcHBsaWNhdGlvblBhdGgoYXBwLCByZW1vdGVBcHBQcm9wcywgY2FjaGVkQXBwSW5mbyk7XG4gICAgICBpZiAoY2FjaGVkUGF0aCkge1xuICAgICAgICBpZiAoYXdhaXQgaXNBcHBJbnRlZ3JpdHlPayhjYWNoZWRQYXRoLCBjYWNoZWRBcHBJbmZvPy5pbnRlZ3JpdHkpKSB7XG4gICAgICAgICAgbG9nZ2VyLmluZm8oYFJldXNpbmcgcHJldmlvdXNseSBkb3dubG9hZGVkIGFwcGxpY2F0aW9uIGF0ICcke2NhY2hlZFBhdGh9J2ApO1xuICAgICAgICAgIHJldHVybiB2ZXJpZnlBcHBFeHRlbnNpb24oY2FjaGVkUGF0aCwgc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgbG9nZ2VyLmluZm8oYFRoZSBhcHBsaWNhdGlvbiBhdCAnJHtjYWNoZWRQYXRofScgZG9lcyBub3QgZXhpc3QgYW55bW9yZSBgICtcbiAgICAgICAgICBgb3IgaXRzIGludGVncml0eSBoYXMgYmVlbiBkYW1hZ2VkLiBEZWxldGluZyBpdCBmcm9tIHRoZSBpbnRlcm5hbCBjYWNoZWApO1xuICAgICAgICBBUFBMSUNBVElPTlNfQ0FDSEUuZGVsZXRlKGFwcCk7XG4gICAgICB9XG5cbiAgICAgIGxldCBmaWxlTmFtZSA9IG51bGw7XG4gICAgICBjb25zdCBiYXNlbmFtZSA9IGZzLnNhbml0aXplTmFtZShwYXRoLmJhc2VuYW1lKGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSkpLCB7XG4gICAgICAgIHJlcGxhY2VtZW50OiBTQU5JVElaRV9SRVBMQUNFTUVOVFxuICAgICAgfSk7XG4gICAgICBjb25zdCBleHRuYW1lID0gcGF0aC5leHRuYW1lKGJhc2VuYW1lKTtcbiAgICAgIC8vIHRvIGRldGVybWluZSBpZiB3ZSBuZWVkIHRvIHVuemlwIHRoZSBhcHAsIHdlIGhhdmUgYSBudW1iZXIgb2YgcGxhY2VzXG4gICAgICAvLyB0byBsb29rOiBjb250ZW50IHR5cGUsIGNvbnRlbnQgZGlzcG9zaXRpb24sIG9yIHRoZSBmaWxlIGV4dGVuc2lvblxuICAgICAgaWYgKFpJUF9FWFRTLmluY2x1ZGVzKGV4dG5hbWUpKSB7XG4gICAgICAgIGZpbGVOYW1lID0gYmFzZW5hbWU7XG4gICAgICAgIHNob3VsZFVuemlwQXBwID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChoZWFkZXJzWydjb250ZW50LXR5cGUnXSkge1xuICAgICAgICBjb25zdCBjdCA9IGhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddO1xuICAgICAgICBsb2dnZXIuZGVidWcoYENvbnRlbnQtVHlwZTogJHtjdH1gKTtcbiAgICAgICAgLy8gdGhlIGZpbGV0eXBlIG1heSBub3QgYmUgb2J2aW91cyBmb3IgY2VydGFpbiB1cmxzLCBzbyBjaGVjayB0aGUgbWltZSB0eXBlIHRvb1xuICAgICAgICBpZiAoWklQX01JTUVfVFlQRVMuc29tZSgobWltZVR5cGUpID0+IG5ldyBSZWdFeHAoYFxcXFxiJHtfLmVzY2FwZVJlZ0V4cChtaW1lVHlwZSl9XFxcXGJgKS50ZXN0KGN0KSkpIHtcbiAgICAgICAgICBpZiAoIWZpbGVOYW1lKSB7XG4gICAgICAgICAgICBmaWxlTmFtZSA9IGAke0RFRkFVTFRfQkFTRU5BTUV9LnppcGA7XG4gICAgICAgICAgfVxuICAgICAgICAgIHNob3VsZFVuemlwQXBwID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGhlYWRlcnNbJ2NvbnRlbnQtZGlzcG9zaXRpb24nXSAmJiAvXmF0dGFjaG1lbnQvaS50ZXN0KGhlYWRlcnNbJ2NvbnRlbnQtZGlzcG9zaXRpb24nXSkpIHtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKGBDb250ZW50LURpc3Bvc2l0aW9uOiAke2hlYWRlcnNbJ2NvbnRlbnQtZGlzcG9zaXRpb24nXX1gKTtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSAvZmlsZW5hbWU9XCIoW15cIl0rKS9pLmV4ZWMoaGVhZGVyc1snY29udGVudC1kaXNwb3NpdGlvbiddKTtcbiAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgZmlsZU5hbWUgPSBmcy5zYW5pdGl6ZU5hbWUobWF0Y2hbMV0sIHtcbiAgICAgICAgICAgIHJlcGxhY2VtZW50OiBTQU5JVElaRV9SRVBMQUNFTUVOVFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHNob3VsZFVuemlwQXBwID0gc2hvdWxkVW56aXBBcHAgfHwgWklQX0VYVFMuaW5jbHVkZXMocGF0aC5leHRuYW1lKGZpbGVOYW1lKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghZmlsZU5hbWUpIHtcbiAgICAgICAgLy8gYXNzaWduIHRoZSBkZWZhdWx0IGZpbGUgbmFtZSBhbmQgdGhlIGV4dGVuc2lvbiBpZiBub25lIGhhcyBiZWVuIGRldGVjdGVkXG4gICAgICAgIGNvbnN0IHJlc3VsdGluZ05hbWUgPSBiYXNlbmFtZVxuICAgICAgICAgID8gYmFzZW5hbWUuc3Vic3RyaW5nKDAsIGJhc2VuYW1lLmxlbmd0aCAtIGV4dG5hbWUubGVuZ3RoKVxuICAgICAgICAgIDogREVGQVVMVF9CQVNFTkFNRTtcbiAgICAgICAgbGV0IHJlc3VsdGluZ0V4dCA9IGV4dG5hbWU7XG4gICAgICAgIGlmICghc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucy5pbmNsdWRlcyhyZXN1bHRpbmdFeHQpKSB7XG4gICAgICAgICAgbG9nZ2VyLmluZm8oYFRoZSBjdXJyZW50IGZpbGUgZXh0ZW5zaW9uICcke3Jlc3VsdGluZ0V4dH0nIGlzIG5vdCBzdXBwb3J0ZWQuIGAgK1xuICAgICAgICAgICAgYERlZmF1bHRpbmcgdG8gJyR7Xy5maXJzdChzdXBwb3J0ZWRBcHBFeHRlbnNpb25zKX0nYCk7XG4gICAgICAgICAgcmVzdWx0aW5nRXh0ID0gXy5maXJzdChzdXBwb3J0ZWRBcHBFeHRlbnNpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBmaWxlTmFtZSA9IGAke3Jlc3VsdGluZ05hbWV9JHtyZXN1bHRpbmdFeHR9YDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHRhcmdldFBhdGggPSBhd2FpdCB0ZW1wRGlyLnBhdGgoe1xuICAgICAgICBwcmVmaXg6IGZpbGVOYW1lLFxuICAgICAgICBzdWZmaXg6ICcnLFxuICAgICAgfSk7XG4gICAgICBuZXdBcHAgPSBhd2FpdCBkb3dubG9hZEFwcChuZXdBcHAsIHRhcmdldFBhdGgpO1xuICAgIH0gZWxzZSBpZiAoYXdhaXQgZnMuZXhpc3RzKG5ld0FwcCkpIHtcbiAgICAgIC8vIFVzZSB0aGUgbG9jYWwgYXBwXG4gICAgICBsb2dnZXIuaW5mbyhgVXNpbmcgbG9jYWwgYXBwICcke25ld0FwcH0nYCk7XG4gICAgICBzaG91bGRVbnppcEFwcCA9IFpJUF9FWFRTLmluY2x1ZGVzKHBhdGguZXh0bmFtZShuZXdBcHApKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGVycm9yTWVzc2FnZSA9IGBUaGUgYXBwbGljYXRpb24gYXQgJyR7bmV3QXBwfScgZG9lcyBub3QgZXhpc3Qgb3IgaXMgbm90IGFjY2Vzc2libGVgO1xuICAgICAgLy8gcHJvdG9jb2wgdmFsdWUgZm9yICdDOlxcXFx0ZW1wJyBpcyAnYzonLCBzbyB3ZSBjaGVjayB0aGUgbGVuZ3RoIGFzIHdlbGxcbiAgICAgIGlmIChfLmlzU3RyaW5nKHByb3RvY29sKSAmJiBwcm90b2NvbC5sZW5ndGggPiAyKSB7XG4gICAgICAgIGVycm9yTWVzc2FnZSA9IGBUaGUgcHJvdG9jb2wgJyR7cHJvdG9jb2x9JyB1c2VkIGluICcke25ld0FwcH0nIGlzIG5vdCBzdXBwb3J0ZWQuIGAgK1xuICAgICAgICAgIGBPbmx5IGh0dHA6IGFuZCBodHRwczogcHJvdG9jb2xzIGFyZSBzdXBwb3J0ZWRgO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yTWVzc2FnZSk7XG4gICAgfVxuXG4gICAgY29uc3QgaXNQYWNrYWdlQUZpbGUgPSAoYXdhaXQgZnMuc3RhdChuZXdBcHApKS5pc0ZpbGUoKTtcbiAgICBpZiAoaXNQYWNrYWdlQUZpbGUpIHtcbiAgICAgIHBhY2thZ2VIYXNoID0gYXdhaXQgY2FsY3VsYXRlRmlsZUludGVncml0eShuZXdBcHApO1xuICAgIH1cblxuICAgIGlmIChpc1BhY2thZ2VBRmlsZSAmJiBzaG91bGRVbnppcEFwcCAmJiAhXy5pc0Z1bmN0aW9uKG9uUG9zdFByb2Nlc3MpKSB7XG4gICAgICBjb25zdCBhcmNoaXZlUGF0aCA9IG5ld0FwcDtcbiAgICAgIGlmIChwYWNrYWdlSGFzaCA9PT0gY2FjaGVkQXBwSW5mbz8ucGFja2FnZUhhc2gpIHtcbiAgICAgICAgY29uc3Qge2Z1bGxQYXRofSA9IGNhY2hlZEFwcEluZm87XG4gICAgICAgIGlmIChhd2FpdCBpc0FwcEludGVncml0eU9rKGZ1bGxQYXRoLCBjYWNoZWRBcHBJbmZvPy5pbnRlZ3JpdHkpKSB7XG4gICAgICAgICAgaWYgKGFyY2hpdmVQYXRoICE9PSBhcHApIHtcbiAgICAgICAgICAgIGF3YWl0IGZzLnJpbXJhZihhcmNoaXZlUGF0aCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxvZ2dlci5pbmZvKGBXaWxsIHJldXNlIHByZXZpb3VzbHkgY2FjaGVkIGFwcGxpY2F0aW9uIGF0ICcke2Z1bGxQYXRofSdgKTtcbiAgICAgICAgICByZXR1cm4gdmVyaWZ5QXBwRXh0ZW5zaW9uKGZ1bGxQYXRoLCBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBsb2dnZXIuaW5mbyhgVGhlIGFwcGxpY2F0aW9uIGF0ICcke2Z1bGxQYXRofScgZG9lcyBub3QgZXhpc3QgYW55bW9yZSBgICtcbiAgICAgICAgICBgb3IgaXRzIGludGVncml0eSBoYXMgYmVlbiBkYW1hZ2VkLiBEZWxldGluZyBpdCBmcm9tIHRoZSBjYWNoZWApO1xuICAgICAgICBBUFBMSUNBVElPTlNfQ0FDSEUuZGVsZXRlKGFwcCk7XG4gICAgICB9XG4gICAgICBjb25zdCB0bXBSb290ID0gYXdhaXQgdGVtcERpci5vcGVuRGlyKCk7XG4gICAgICB0cnkge1xuICAgICAgICBuZXdBcHAgPSBhd2FpdCB1bnppcEFwcChhcmNoaXZlUGF0aCwgdG1wUm9vdCwgc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucyk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpZiAobmV3QXBwICE9PSBhcmNoaXZlUGF0aCAmJiBhcmNoaXZlUGF0aCAhPT0gYXBwKSB7XG4gICAgICAgICAgYXdhaXQgZnMucmltcmFmKGFyY2hpdmVQYXRoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbG9nZ2VyLmluZm8oYFVuemlwcGVkIGxvY2FsIGFwcCB0byAnJHtuZXdBcHB9J2ApO1xuICAgIH0gZWxzZSBpZiAoIXBhdGguaXNBYnNvbHV0ZShuZXdBcHApKSB7XG4gICAgICBuZXdBcHAgPSBwYXRoLnJlc29sdmUocHJvY2Vzcy5jd2QoKSwgbmV3QXBwKTtcbiAgICAgIGxvZ2dlci53YXJuKGBUaGUgY3VycmVudCBhcHBsaWNhdGlvbiBwYXRoICcke2FwcH0nIGlzIG5vdCBhYnNvbHV0ZSBgICtcbiAgICAgICAgYGFuZCBoYXMgYmVlbiByZXdyaXR0ZW4gdG8gJyR7bmV3QXBwfScuIENvbnNpZGVyIHVzaW5nIGFic29sdXRlIHBhdGhzIHJhdGhlciB0aGFuIHJlbGF0aXZlYCk7XG4gICAgICBhcHAgPSBuZXdBcHA7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RvcmVBcHBJbkNhY2hlID0gYXN5bmMgKGFwcFBhdGhUb0NhY2hlKSA9PiB7XG4gICAgICBjb25zdCBjYWNoZWRGdWxsUGF0aCA9IGNhY2hlZEFwcEluZm8/LmZ1bGxQYXRoO1xuICAgICAgaWYgKGNhY2hlZEZ1bGxQYXRoICYmIGNhY2hlZEZ1bGxQYXRoICE9PSBhcHBQYXRoVG9DYWNoZSkge1xuICAgICAgICBhd2FpdCBmcy5yaW1yYWYoY2FjaGVkRnVsbFBhdGgpO1xuICAgICAgfVxuICAgICAgY29uc3QgaW50ZWdyaXR5ID0ge307XG4gICAgICBpZiAoKGF3YWl0IGZzLnN0YXQoYXBwUGF0aFRvQ2FjaGUpKS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgIGludGVncml0eS5mb2xkZXIgPSBhd2FpdCBjYWxjdWxhdGVGb2xkZXJJbnRlZ3JpdHkoYXBwUGF0aFRvQ2FjaGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW50ZWdyaXR5LmZpbGUgPSBhd2FpdCBjYWxjdWxhdGVGaWxlSW50ZWdyaXR5KGFwcFBhdGhUb0NhY2hlKTtcbiAgICAgIH1cbiAgICAgIEFQUExJQ0FUSU9OU19DQUNIRS5zZXQoYXBwLCB7XG4gICAgICAgIC4uLnJlbW90ZUFwcFByb3BzLFxuICAgICAgICB0aW1lc3RhbXA6IERhdGUubm93KCksXG4gICAgICAgIHBhY2thZ2VIYXNoLFxuICAgICAgICBpbnRlZ3JpdHksXG4gICAgICAgIGZ1bGxQYXRoOiBhcHBQYXRoVG9DYWNoZSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGFwcFBhdGhUb0NhY2hlO1xuICAgIH07XG5cbiAgICBpZiAoXy5pc0Z1bmN0aW9uKG9uUG9zdFByb2Nlc3MpKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBvblBvc3RQcm9jZXNzKHtcbiAgICAgICAgY2FjaGVkQXBwSW5mbzogXy5jbG9uZShjYWNoZWRBcHBJbmZvKSxcbiAgICAgICAgaXNVcmwsXG4gICAgICAgIGhlYWRlcnM6IF8uY2xvbmUoaGVhZGVycyksXG4gICAgICAgIGFwcFBhdGg6IG5ld0FwcCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuICghcmVzdWx0Py5hcHBQYXRoIHx8IGFwcCA9PT0gcmVzdWx0Py5hcHBQYXRoIHx8ICFhd2FpdCBmcy5leGlzdHMocmVzdWx0Py5hcHBQYXRoKSlcbiAgICAgICAgPyBuZXdBcHBcbiAgICAgICAgOiBhd2FpdCBzdG9yZUFwcEluQ2FjaGUocmVzdWx0LmFwcFBhdGgpO1xuICAgIH1cblxuICAgIHZlcmlmeUFwcEV4dGVuc2lvbihuZXdBcHAsIHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMpO1xuICAgIHJldHVybiAoYXBwICE9PSBuZXdBcHAgJiYgKHBhY2thZ2VIYXNoIHx8IF8udmFsdWVzKHJlbW90ZUFwcFByb3BzKS5zb21lKEJvb2xlYW4pKSlcbiAgICAgID8gYXdhaXQgc3RvcmVBcHBJbkNhY2hlKG5ld0FwcClcbiAgICAgIDogbmV3QXBwO1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZG93bmxvYWRBcHAgKGFwcCwgdGFyZ2V0UGF0aCkge1xuICBjb25zdCB7aHJlZn0gPSB1cmwucGFyc2UoYXBwKTtcbiAgdHJ5IHtcbiAgICBhd2FpdCBuZXQuZG93bmxvYWRGaWxlKGhyZWYsIHRhcmdldFBhdGgsIHtcbiAgICAgIHRpbWVvdXQ6IEFQUF9ET1dOTE9BRF9USU1FT1VUX01TLFxuICAgIH0pO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBkb3dubG9hZCB0aGUgYXBwOiAke2Vyci5tZXNzYWdlfWApO1xuICB9XG4gIHJldHVybiB0YXJnZXRQYXRoO1xufVxuXG4vKipcbiAqIEV4dHJhY3RzIHRoZSBidW5kbGUgZnJvbSBhbiBhcmNoaXZlIGludG8gdGhlIGdpdmVuIGZvbGRlclxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB6aXBQYXRoIEZ1bGwgcGF0aCB0byB0aGUgYXJjaGl2ZSBjb250YWluaW5nIHRoZSBidW5kbGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBkc3RSb290IEZ1bGwgcGF0aCB0byB0aGUgZm9sZGVyIHdoZXJlIHRoZSBleHRyYWN0ZWQgYnVuZGxlXG4gKiBzaG91bGQgYmUgcGxhY2VkXG4gKiBAcGFyYW0ge0FycmF5PHN0cmluZz58c3RyaW5nfSBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zIFRoZSBsaXN0IG9mIGV4dGVuc2lvbnNcbiAqIHRoZSB0YXJnZXQgYXBwbGljYXRpb24gYnVuZGxlIHN1cHBvcnRzLCBmb3IgZXhhbXBsZSBbJy5hcGsnLCAnLmFwa3MnXSBmb3JcbiAqIEFuZHJvaWQgcGFja2FnZXNcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEZ1bGwgcGF0aCB0byB0aGUgYnVuZGxlIGluIHRoZSBkZXN0aW5hdGlvbiBmb2xkZXJcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgZ2l2ZW4gYXJjaGl2ZSBpcyBpbnZhbGlkIG9yIG5vIGFwcGxpY2F0aW9uIGJ1bmRsZXNcbiAqIGhhdmUgYmVlbiBmb3VuZCBpbnNpZGVcbiAqL1xuYXN5bmMgZnVuY3Rpb24gdW56aXBBcHAgKHppcFBhdGgsIGRzdFJvb3QsIHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMpIHtcbiAgYXdhaXQgemlwLmFzc2VydFZhbGlkWmlwKHppcFBhdGgpO1xuXG4gIGlmICghXy5pc0FycmF5KHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMpKSB7XG4gICAgc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucyA9IFtzdXBwb3J0ZWRBcHBFeHRlbnNpb25zXTtcbiAgfVxuXG4gIGNvbnN0IHRtcFJvb3QgPSBhd2FpdCB0ZW1wRGlyLm9wZW5EaXIoKTtcbiAgdHJ5IHtcbiAgICBsb2dnZXIuZGVidWcoYFVuemlwcGluZyAnJHt6aXBQYXRofSdgKTtcbiAgICBjb25zdCB0aW1lciA9IG5ldyB0aW1pbmcuVGltZXIoKS5zdGFydCgpO1xuICAgIGNvbnN0IHVzZVN5c3RlbVVuemlwRW52ID0gcHJvY2Vzcy5lbnYuQVBQSVVNX1BSRUZFUl9TWVNURU1fVU5aSVA7XG4gICAgY29uc3QgdXNlU3lzdGVtVW56aXAgPSBfLmlzRW1wdHkodXNlU3lzdGVtVW56aXBFbnYpXG4gICAgICB8fCAhWycwJywgJ2ZhbHNlJ10uaW5jbHVkZXMoXy50b0xvd2VyKHVzZVN5c3RlbVVuemlwRW52KSk7XG4gICAgLyoqXG4gICAgICogQXR0ZW1wdCB0byB1c2UgdXNlIHRoZSBzeXN0ZW0gYHVuemlwYCAoZS5nLiwgYC91c3IvYmluL3VuemlwYCkgZHVlXG4gICAgICogdG8gdGhlIHNpZ25pZmljYW50IHBlcmZvcm1hbmNlIGltcHJvdmVtZW50IGl0IHByb3ZpZGVzIG92ZXIgdGhlIG5hdGl2ZVxuICAgICAqIEpTIFwidW56aXBcIiBpbXBsZW1lbnRhdGlvbi5cbiAgICAgKiBAdHlwZSB7aW1wb3J0KCdAYXBwaXVtL3N1cHBvcnQvbGliL3ppcCcpLkV4dHJhY3RBbGxPcHRpb25zfVxuICAgICAqL1xuICAgIGNvbnN0IGV4dHJhY3Rpb25PcHRzID0ge3VzZVN5c3RlbVVuemlwfTtcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYXBwaXVtL2FwcGl1bS9pc3N1ZXMvMTQxMDBcbiAgICBpZiAocGF0aC5leHRuYW1lKHppcFBhdGgpID09PSBJUEFfRVhUKSB7XG4gICAgICBsb2dnZXIuZGVidWcoYEVuZm9yY2luZyBVVEYtOCBlbmNvZGluZyBvbiB0aGUgZXh0cmFjdGVkIGZpbGUgbmFtZXMgZm9yICcke3BhdGguYmFzZW5hbWUoemlwUGF0aCl9J2ApO1xuICAgICAgZXh0cmFjdGlvbk9wdHMuZmlsZU5hbWVzRW5jb2RpbmcgPSAndXRmOCc7XG4gICAgfVxuICAgIGF3YWl0IHppcC5leHRyYWN0QWxsVG8oemlwUGF0aCwgdG1wUm9vdCwgZXh0cmFjdGlvbk9wdHMpO1xuICAgIGNvbnN0IGdsb2JQYXR0ZXJuID0gYCoqLyouKygke3N1cHBvcnRlZEFwcEV4dGVuc2lvbnMubWFwKChleHQpID0+IGV4dC5yZXBsYWNlKC9eXFwuLywgJycpKS5qb2luKCd8Jyl9KWA7XG4gICAgY29uc3Qgc29ydGVkQnVuZGxlSXRlbXMgPSAoYXdhaXQgZnMuZ2xvYihnbG9iUGF0dGVybiwge1xuICAgICAgY3dkOiB0bXBSb290LFxuICAgICAgc3RyaWN0OiBmYWxzZSxcbiAgICAvLyBHZXQgdGhlIHRvcCBsZXZlbCBtYXRjaFxuICAgIH0pKS5zb3J0KChhLCBiKSA9PiBhLnNwbGl0KHBhdGguc2VwKS5sZW5ndGggLSBiLnNwbGl0KHBhdGguc2VwKS5sZW5ndGgpO1xuICAgIGlmIChfLmlzRW1wdHkoc29ydGVkQnVuZGxlSXRlbXMpKSB7XG4gICAgICBsb2dnZXIuZXJyb3JBbmRUaHJvdyhgQXBwIHVuemlwcGVkIE9LLCBidXQgd2UgY291bGQgbm90IGZpbmQgYW55ICcke3N1cHBvcnRlZEFwcEV4dGVuc2lvbnN9JyBgICtcbiAgICAgICAgdXRpbC5wbHVyYWxpemUoJ2J1bmRsZScsIHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMubGVuZ3RoLCBmYWxzZSkgK1xuICAgICAgICBgIGluIGl0LiBNYWtlIHN1cmUgeW91ciBhcmNoaXZlIGNvbnRhaW5zIGF0IGxlYXN0IG9uZSBwYWNrYWdlIGhhdmluZyBgICtcbiAgICAgICAgYCcke3N1cHBvcnRlZEFwcEV4dGVuc2lvbnN9JyAke3V0aWwucGx1cmFsaXplKCdleHRlbnNpb24nLCBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zLmxlbmd0aCwgZmFsc2UpfWApO1xuICAgIH1cbiAgICBsb2dnZXIuZGVidWcoYEV4dHJhY3RlZCAke3V0aWwucGx1cmFsaXplKCdidW5kbGUgaXRlbScsIHNvcnRlZEJ1bmRsZUl0ZW1zLmxlbmd0aCwgdHJ1ZSl9IGAgK1xuICAgICAgYGZyb20gJyR7emlwUGF0aH0nIGluICR7TWF0aC5yb3VuZCh0aW1lci5nZXREdXJhdGlvbigpLmFzTWlsbGlTZWNvbmRzKX1tczogJHtzb3J0ZWRCdW5kbGVJdGVtc31gKTtcbiAgICBjb25zdCBtYXRjaGVkQnVuZGxlID0gXy5maXJzdChzb3J0ZWRCdW5kbGVJdGVtcyk7XG4gICAgbG9nZ2VyLmluZm8oYEFzc3VtaW5nICcke21hdGNoZWRCdW5kbGV9JyBpcyB0aGUgY29ycmVjdCBidW5kbGVgKTtcbiAgICBjb25zdCBkc3RQYXRoID0gcGF0aC5yZXNvbHZlKGRzdFJvb3QsIHBhdGguYmFzZW5hbWUobWF0Y2hlZEJ1bmRsZSkpO1xuICAgIGF3YWl0IGZzLm12KHBhdGgucmVzb2x2ZSh0bXBSb290LCBtYXRjaGVkQnVuZGxlKSwgZHN0UGF0aCwge21rZGlycDogdHJ1ZX0pO1xuICAgIHJldHVybiBkc3RQYXRoO1xuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IGZzLnJpbXJhZih0bXBSb290KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc1BhY2thZ2VPckJ1bmRsZSAoYXBwKSB7XG4gIHJldHVybiAoL14oW2EtekEtWjAtOVxcLV9dK1xcLlthLXpBLVowLTlcXC1fXSspKyQvKS50ZXN0KGFwcCk7XG59XG5cbi8qKlxuICogRmluZHMgYWxsIGluc3RhbmNlcyAnZmlyc3RLZXknIGFuZCBjcmVhdGUgYSBkdXBsaWNhdGUgd2l0aCB0aGUga2V5ICdzZWNvbmRLZXknLFxuICogRG8gdGhlIHNhbWUgdGhpbmcgaW4gcmV2ZXJzZS4gSWYgd2UgZmluZCAnc2Vjb25kS2V5JywgY3JlYXRlIGEgZHVwbGljYXRlIHdpdGggdGhlIGtleSAnZmlyc3RLZXknLlxuICpcbiAqIFRoaXMgd2lsbCBjYXVzZSBrZXlzIHRvIGJlIG92ZXJ3cml0dGVuIGlmIHRoZSBvYmplY3QgY29udGFpbnMgJ2ZpcnN0S2V5JyBhbmQgJ3NlY29uZEtleScuXG5cbiAqIEBwYXJhbSB7Kn0gaW5wdXQgQW55IHR5cGUgb2YgaW5wdXRcbiAqIEBwYXJhbSB7U3RyaW5nfSBmaXJzdEtleSBUaGUgZmlyc3Qga2V5IHRvIGR1cGxpY2F0ZVxuICogQHBhcmFtIHtTdHJpbmd9IHNlY29uZEtleSBUaGUgc2Vjb25kIGtleSB0byBkdXBsaWNhdGVcbiAqL1xuZnVuY3Rpb24gZHVwbGljYXRlS2V5cyAoaW5wdXQsIGZpcnN0S2V5LCBzZWNvbmRLZXkpIHtcbiAgLy8gSWYgYXJyYXkgcHJvdmlkZWQsIHJlY3Vyc2l2ZWx5IGNhbGwgb24gYWxsIGVsZW1lbnRzXG4gIGlmIChfLmlzQXJyYXkoaW5wdXQpKSB7XG4gICAgcmV0dXJuIGlucHV0Lm1hcCgoaXRlbSkgPT4gZHVwbGljYXRlS2V5cyhpdGVtLCBmaXJzdEtleSwgc2Vjb25kS2V5KSk7XG4gIH1cblxuICAvLyBJZiBvYmplY3QsIGNyZWF0ZSBkdXBsaWNhdGVzIGZvciBrZXlzIGFuZCB0aGVuIHJlY3Vyc2l2ZWx5IGNhbGwgb24gdmFsdWVzXG4gIGlmIChfLmlzUGxhaW5PYmplY3QoaW5wdXQpKSB7XG4gICAgY29uc3QgcmVzdWx0T2JqID0ge307XG4gICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIF8udG9QYWlycyhpbnB1dCkpIHtcbiAgICAgIGNvbnN0IHJlY3Vyc2l2ZWx5Q2FsbGVkVmFsdWUgPSBkdXBsaWNhdGVLZXlzKHZhbHVlLCBmaXJzdEtleSwgc2Vjb25kS2V5KTtcbiAgICAgIGlmIChrZXkgPT09IGZpcnN0S2V5KSB7XG4gICAgICAgIHJlc3VsdE9ialtzZWNvbmRLZXldID0gcmVjdXJzaXZlbHlDYWxsZWRWYWx1ZTtcbiAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSBzZWNvbmRLZXkpIHtcbiAgICAgICAgcmVzdWx0T2JqW2ZpcnN0S2V5XSA9IHJlY3Vyc2l2ZWx5Q2FsbGVkVmFsdWU7XG4gICAgICB9XG4gICAgICByZXN1bHRPYmpba2V5XSA9IHJlY3Vyc2l2ZWx5Q2FsbGVkVmFsdWU7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRPYmo7XG4gIH1cblxuICAvLyBCYXNlIGNhc2UuIFJldHVybiBwcmltaXRpdmVzIHdpdGhvdXQgZG9pbmcgYW55dGhpbmcuXG4gIHJldHVybiBpbnB1dDtcbn1cblxuLyoqXG4gKiBUYWtlcyBhIGRlc2lyZWQgY2FwYWJpbGl0eSBhbmQgdHJpZXMgdG8gSlNPTi5wYXJzZSBpdCBhcyBhbiBhcnJheSxcbiAqIGFuZCBlaXRoZXIgcmV0dXJucyB0aGUgcGFyc2VkIGFycmF5IG9yIGEgc2luZ2xldG9uIGFycmF5LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfEFycmF5PFN0cmluZz59IGNhcCBBIGRlc2lyZWQgY2FwYWJpbGl0eVxuICovXG5mdW5jdGlvbiBwYXJzZUNhcHNBcnJheSAoY2FwKSB7XG4gIGlmIChfLmlzQXJyYXkoY2FwKSkge1xuICAgIHJldHVybiBjYXA7XG4gIH1cblxuICBsZXQgcGFyc2VkQ2FwcztcbiAgdHJ5IHtcbiAgICBwYXJzZWRDYXBzID0gSlNPTi5wYXJzZShjYXApO1xuICAgIGlmIChfLmlzQXJyYXkocGFyc2VkQ2FwcykpIHtcbiAgICAgIHJldHVybiBwYXJzZWRDYXBzO1xuICAgIH1cbiAgfSBjYXRjaCAoaWduKSB7XG4gICAgbG9nZ2VyLndhcm4oYEZhaWxlZCB0byBwYXJzZSBjYXBhYmlsaXR5IGFzIEpTT04gYXJyYXlgKTtcbiAgfVxuICBpZiAoXy5pc1N0cmluZyhjYXApKSB7XG4gICAgcmV0dXJuIFtjYXBdO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgbXVzdCBwcm92aWRlIGEgc3RyaW5nIG9yIEpTT04gQXJyYXk7IHJlY2VpdmVkICR7Y2FwfWApO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEgc3RyaW5nIHRoYXQgdW5pcXVlbHkgZGVzY3JpYmVzIGRyaXZlciBpbnN0YW5jZVxuICpcbiAqIEBwYXJhbSB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuQ29yZX0gb2JqIGRyaXZlciBpbnN0YW5jZVxuICogQHBhcmFtIHtzdHJpbmc/fSBzZXNzaW9uSWQgc2Vzc2lvbiBpZGVudGlmaWVyIChpZiBleGlzdHMpXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZURyaXZlckxvZ1ByZWZpeCAob2JqLCBzZXNzaW9uSWQgPSBudWxsKSB7XG4gIGNvbnN0IGluc3RhbmNlTmFtZSA9IGAke29iai5jb25zdHJ1Y3Rvci5uYW1lfUAke25vZGUuZ2V0T2JqZWN0SWQob2JqKS5zdWJzdHJpbmcoMCwgNCl9YDtcbiAgcmV0dXJuIHNlc3Npb25JZCA/IGAke2luc3RhbmNlTmFtZX0gKCR7c2Vzc2lvbklkLnN1YnN0cmluZygwLCA4KX0pYCA6IGluc3RhbmNlTmFtZTtcbn1cblxuLyoqIEB0eXBlIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5Ecml2ZXJIZWxwZXJzfSAqL1xuZXhwb3J0IGRlZmF1bHQge1xuICBjb25maWd1cmVBcHAsIGlzUGFja2FnZU9yQnVuZGxlLCBkdXBsaWNhdGVLZXlzLCBwYXJzZUNhcHNBcnJheSwgZ2VuZXJhdGVEcml2ZXJMb2dQcmVmaXhcbn07XG5leHBvcnQge1xuICBjb25maWd1cmVBcHAsIGlzUGFja2FnZU9yQnVuZGxlLCBkdXBsaWNhdGVLZXlzLCBwYXJzZUNhcHNBcnJheSwgZ2VuZXJhdGVEcml2ZXJMb2dQcmVmaXhcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxPQUFPLEdBQUcsTUFBaEI7QUFDQSxNQUFNQyxRQUFRLEdBQUcsQ0FBQyxNQUFELEVBQVNELE9BQVQsQ0FBakI7QUFDQSxNQUFNRSxjQUFjLEdBQUcsQ0FDckIsaUJBRHFCLEVBRXJCLDhCQUZxQixFQUdyQixpQkFIcUIsQ0FBdkI7QUFLQSxNQUFNQyxtQkFBbUIsR0FBRyxPQUFPLEVBQVAsR0FBWSxFQUFaLEdBQWlCLEVBQTdDO0FBQ0EsTUFBTUMsZUFBZSxHQUFHLElBQXhCO0FBQ0EsTUFBTUMsa0JBQWtCLEdBQUcsSUFBSUMsaUJBQUosQ0FBUTtFQUNqQ0MsR0FBRyxFQUFFSCxlQUQ0QjtF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
@@ -13,4 +13,4 @@ const log = _support.logger.getLogger('BaseDriver');
13
13
 
14
14
  var _default = log;
15
15
  exports.default = _default;
16
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9iYXNlZHJpdmVyL2xvZ2dlci5qcyJdLCJuYW1lcyI6WyJsb2ciLCJsb2dnZXIiLCJnZXRMb2dnZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUVBLE1BQU1BLEdBQUcsR0FBR0MsZ0JBQU9DLFNBQVAsQ0FBaUIsWUFBakIsQ0FBWjs7ZUFDZUYsRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGxvZ2dlciB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5cbmNvbnN0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ0Jhc2VEcml2ZXInKTtcbmV4cG9ydCBkZWZhdWx0IGxvZztcbiJdfQ==
16
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2ciLCJsb2dnZXIiLCJnZXRMb2dnZXIiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvYmFzZWRyaXZlci9sb2dnZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcblxuY29uc3QgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignQmFzZURyaXZlcicpO1xuZXhwb3J0IGRlZmF1bHQgbG9nO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFFQSxNQUFNQSxHQUFHLEdBQUdDLGdCQUFPQyxTQUFQLENBQWlCLFlBQWpCLENBQVo7O2VBQ2VGLEcifQ==
@@ -22,4 +22,4 @@ const PROTOCOLS = {
22
22
  exports.PROTOCOLS = PROTOCOLS;
23
23
  const DEFAULT_BASE_PATH = '';
24
24
  exports.DEFAULT_BASE_PATH = DEFAULT_BASE_PATH;
25
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9jb25zdGFudHMuanMiXSwibmFtZXMiOlsiTUFYX0xPR19CT0RZX0xFTkdUSCIsIk1KU09OV1BfRUxFTUVOVF9LRVkiLCJXM0NfRUxFTUVOVF9LRVkiLCJ1dGlsIiwiVzNDX1dFQl9FTEVNRU5UX0lERU5USUZJRVIiLCJQUk9UT0NPTFMiLCJXM0MiLCJNSlNPTldQIiwiREVGQVVMVF9CQVNFX1BBVEgiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQVFBLE1BQU1BLG1CQUFtQixHQUFHLElBQTVCOztBQUNBLE1BQU1DLG1CQUFtQixHQUFHLFNBQTVCOztBQUNBLE1BQU1DLGVBQWUsR0FBR0MsY0FBS0MsMEJBQTdCOztBQUNBLE1BQU1DLFNBQVMsR0FBRztBQUNoQkMsRUFBQUEsR0FBRyxFQUFFLEtBRFc7QUFFaEJDLEVBQUFBLE9BQU8sRUFBRTtBQUZPLENBQWxCOztBQU1BLE1BQU1DLGlCQUFpQixHQUFHLEVBQTFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5cbi8vIFRoZSBkZWZhdWx0IG1heGltdW0gbGVuZ3RoIG9mIGEgc2luZ2xlIGxvZyByZWNvcmRcbi8vIGNvbnRhaW5pbmcgaHR0cCByZXF1ZXN0L3Jlc3BvbnNlIGJvZHlcbi8vIFRoaXMgdmFsdWUgY291bGQgYmUgZ2xvYmFsbHkgY3VzdG9taXplZCB1c2luZyB0aGUgLS1sb2ctZmlsdGVyc1xuLy8gc2VydmVyIGZlYXR1cmUuIEV4YW1wbGUgcnVsZTpcbi8vIFx0e1wicGF0dGVyblwiOiBcIiguezEsMTUwfSkuKlwiLCBcImZsYWdzXCI6IFwic1wiLCBcInJlcGxhY2VyXCI6IFwiJDFcIn1cbi8vIF4gY3V0cyBhbGwgbG9nIHJlY29yZHMgdG8gbWF4aW11bSAxNTAgY2hhcnNcbmNvbnN0IE1BWF9MT0dfQk9EWV9MRU5HVEggPSAxMDI0O1xuY29uc3QgTUpTT05XUF9FTEVNRU5UX0tFWSA9ICdFTEVNRU5UJztcbmNvbnN0IFczQ19FTEVNRU5UX0tFWSA9IHV0aWwuVzNDX1dFQl9FTEVNRU5UX0lERU5USUZJRVI7XG5jb25zdCBQUk9UT0NPTFMgPSB7XG4gIFczQzogJ1czQycsXG4gIE1KU09OV1A6ICdNSlNPTldQJyxcbn07XG5cbi8vIEJlZm9yZSBBcHBpdW0gMi4wLCB0aGlzIGRlZmF1bHQgdmFsdWUgd2FzICcvd2QvaHViJyBieSBoaXN0b3JpY2FsIHJlYXNvbnMuXG5jb25zdCBERUZBVUxUX0JBU0VfUEFUSCA9ICcnO1xuXG5cbmV4cG9ydCB7XG4gIE1BWF9MT0dfQk9EWV9MRU5HVEgsIE1KU09OV1BfRUxFTUVOVF9LRVksIFczQ19FTEVNRU5UX0tFWSxcbiAgUFJPVE9DT0xTLCBERUZBVUxUX0JBU0VfUEFUSFxufTtcbiJdfQ==
25
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNQVhfTE9HX0JPRFlfTEVOR1RIIiwiTUpTT05XUF9FTEVNRU5UX0tFWSIsIlczQ19FTEVNRU5UX0tFWSIsInV0aWwiLCJXM0NfV0VCX0VMRU1FTlRfSURFTlRJRklFUiIsIlBST1RPQ09MUyIsIlczQyIsIk1KU09OV1AiLCJERUZBVUxUX0JBU0VfUEFUSCJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9jb25zdGFudHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5cbi8vIFRoZSBkZWZhdWx0IG1heGltdW0gbGVuZ3RoIG9mIGEgc2luZ2xlIGxvZyByZWNvcmRcbi8vIGNvbnRhaW5pbmcgaHR0cCByZXF1ZXN0L3Jlc3BvbnNlIGJvZHlcbi8vIFRoaXMgdmFsdWUgY291bGQgYmUgZ2xvYmFsbHkgY3VzdG9taXplZCB1c2luZyB0aGUgLS1sb2ctZmlsdGVyc1xuLy8gc2VydmVyIGZlYXR1cmUuIEV4YW1wbGUgcnVsZTpcbi8vIFx0e1wicGF0dGVyblwiOiBcIiguezEsMTUwfSkuKlwiLCBcImZsYWdzXCI6IFwic1wiLCBcInJlcGxhY2VyXCI6IFwiJDFcIn1cbi8vIF4gY3V0cyBhbGwgbG9nIHJlY29yZHMgdG8gbWF4aW11bSAxNTAgY2hhcnNcbmNvbnN0IE1BWF9MT0dfQk9EWV9MRU5HVEggPSAxMDI0O1xuY29uc3QgTUpTT05XUF9FTEVNRU5UX0tFWSA9ICdFTEVNRU5UJztcbmNvbnN0IFczQ19FTEVNRU5UX0tFWSA9IHV0aWwuVzNDX1dFQl9FTEVNRU5UX0lERU5USUZJRVI7XG5jb25zdCBQUk9UT0NPTFMgPSB7XG4gIFczQzogJ1czQycsXG4gIE1KU09OV1A6ICdNSlNPTldQJyxcbn07XG5cbi8vIEJlZm9yZSBBcHBpdW0gMi4wLCB0aGlzIGRlZmF1bHQgdmFsdWUgd2FzICcvd2QvaHViJyBieSBoaXN0b3JpY2FsIHJlYXNvbnMuXG5jb25zdCBERUZBVUxUX0JBU0VfUEFUSCA9ICcnO1xuXG5cbmV4cG9ydCB7XG4gIE1BWF9MT0dfQk9EWV9MRU5HVEgsIE1KU09OV1BfRUxFTUVOVF9LRVksIFczQ19FTEVNRU5UX0tFWSxcbiAgUFJPVE9DT0xTLCBERUZBVUxUX0JBU0VfUEFUSFxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBUUEsTUFBTUEsbUJBQW1CLEdBQUcsSUFBNUI7O0FBQ0EsTUFBTUMsbUJBQW1CLEdBQUcsU0FBNUI7O0FBQ0EsTUFBTUMsZUFBZSxHQUFHQyxjQUFLQywwQkFBN0I7O0FBQ0EsTUFBTUMsU0FBUyxHQUFHO0VBQ2hCQyxHQUFHLEVBQUUsS0FEVztFQUVoQkMsT0FBTyxFQUFFO0FBRk8sQ0FBbEI7O0FBTUEsTUFBTUMsaUJBQWlCLEdBQUcsRUFBMUIifQ==
@@ -17,4 +17,4 @@ function produceError() {
17
17
  function produceCrash() {
18
18
  throw new Error('We just tried to crash Appium!');
19
19
  }
20
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9leHByZXNzL2NyYXNoLmpzIl0sIm5hbWVzIjpbInByb2R1Y2VFcnJvciIsImVycm9ycyIsIlVua25vd25Db21tYW5kRXJyb3IiLCJwcm9kdWNlQ3Jhc2giLCJFcnJvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBOztBQUdBLFNBQVNBLFlBQVQsR0FBeUI7QUFDdkIsUUFBTSxJQUFJQyxpQkFBT0MsbUJBQVgsQ0FBK0Isb0NBQS9CLENBQU47QUFDRDs7QUFFRCxTQUFTQyxZQUFULEdBQXlCO0FBQ3ZCLFFBQU0sSUFBSUMsS0FBSixDQUFVLGdDQUFWLENBQU47QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVycm9ycyB9IGZyb20gJy4uL3Byb3RvY29sJztcblxuXG5mdW5jdGlvbiBwcm9kdWNlRXJyb3IgKCkge1xuICB0aHJvdyBuZXcgZXJyb3JzLlVua25vd25Db21tYW5kRXJyb3IoJ1Byb2R1Y2VkIGdlbmVyaWMgZXJyb3IgZm9yIHRlc3RpbmcnKTtcbn1cblxuZnVuY3Rpb24gcHJvZHVjZUNyYXNoICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdXZSBqdXN0IHRyaWVkIHRvIGNyYXNoIEFwcGl1bSEnKTtcbn1cblxuXG5leHBvcnQgeyBwcm9kdWNlRXJyb3IsIHByb2R1Y2VDcmFzaCB9O1xuIl19
20
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwcm9kdWNlRXJyb3IiLCJlcnJvcnMiLCJVbmtub3duQ29tbWFuZEVycm9yIiwicHJvZHVjZUNyYXNoIiwiRXJyb3IiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZXhwcmVzcy9jcmFzaC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlcnJvcnMgfSBmcm9tICcuLi9wcm90b2NvbCc7XG5cblxuZnVuY3Rpb24gcHJvZHVjZUVycm9yICgpIHtcbiAgdGhyb3cgbmV3IGVycm9ycy5Vbmtub3duQ29tbWFuZEVycm9yKCdQcm9kdWNlZCBnZW5lcmljIGVycm9yIGZvciB0ZXN0aW5nJyk7XG59XG5cbmZ1bmN0aW9uIHByb2R1Y2VDcmFzaCAoKSB7XG4gIHRocm93IG5ldyBFcnJvcignV2UganVzdCB0cmllZCB0byBjcmFzaCBBcHBpdW0hJyk7XG59XG5cblxuZXhwb3J0IHsgcHJvZHVjZUVycm9yLCBwcm9kdWNlQ3Jhc2ggfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBOztBQUdBLFNBQVNBLFlBQVQsR0FBeUI7RUFDdkIsTUFBTSxJQUFJQyxpQkFBT0MsbUJBQVgsQ0FBK0Isb0NBQS9CLENBQU47QUFDRDs7QUFFRCxTQUFTQyxZQUFULEdBQXlCO0VBQ3ZCLE1BQU0sSUFBSUMsS0FBSixDQUFVLGdDQUFWLENBQU47QUFDRCJ9
@@ -67,4 +67,4 @@ const startLogFormatter = (0, _morgan.default)((tokens, req, res) => {
67
67
  immediate: true
68
68
  });
69
69
  exports.startLogFormatter = startLogFormatter;
70
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9leHByZXNzL2V4cHJlc3MtbG9nZ2luZy5qcyJdLCJuYW1lcyI6WyJjb21waWxlIiwiZm10IiwicmVwbGFjZSIsIl8iLCJuYW1lIiwiYXJnIiwianMiLCJGdW5jdGlvbiIsInJlcXVlc3RFbmRMb2dnaW5nRm9ybWF0IiwidG9rZW5zIiwicmVxIiwicmVzIiwic3RhdHVzIiwic3RhdHVzQ29kZSIsInN0YXR1c1N0ciIsInJlZCIsInllbGxvdyIsImN5YW4iLCJncmVlbiIsImZuIiwid2hpdGUiLCJncmV5IiwiZW5kTG9nRm9ybWF0dGVyIiwibG9nIiwiaW5mbyIsImpzb25SZXNwIiwicmVxdWVzdFN0YXJ0TG9nZ2luZ0Zvcm1hdCIsInN0YXJ0TG9nRm9ybWF0dGVyIiwicmVxQm9keSIsImJvZHkiLCJ0cnVuY2F0ZSIsImlzU3RyaW5nIiwiSlNPTiIsInN0cmluZ2lmeSIsImxlbmd0aCIsIk1BWF9MT0dfQk9EWV9MRU5HVEgiLCJpZ24iLCJpbW1lZGlhdGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBS0EsU0FBU0EsT0FBVCxDQUFrQkMsR0FBbEIsRUFBdUI7QUFFckJBLEVBQUFBLEdBQUcsR0FBR0EsR0FBRyxDQUFDQyxPQUFKLENBQVksSUFBWixFQUFrQixLQUFsQixDQUFOO0FBQ0FELEVBQUFBLEdBQUcsR0FBR0EsR0FBRyxDQUFDQyxPQUFKLENBQVksZ0NBQVosRUFDSixTQUFTQSxPQUFULENBQWtCQyxDQUFsQixFQUFxQkMsSUFBckIsRUFBMkJDLEdBQTNCLEVBQWdDO0FBQzlCLFdBQVEscUJBQW9CRCxJQUFLLGlCQUFnQkMsR0FBSSxnQkFBckQ7QUFDRCxHQUhHLENBQU47QUFJQSxNQUFJQyxFQUFFLEdBQUksYUFBWUwsR0FBSSxJQUExQjtBQUNBLFNBQU8sSUFBSU0sUUFBSixDQUFhLGtCQUFiLEVBQWlDRCxFQUFqQyxDQUFQO0FBQ0Q7O0FBRUQsU0FBU0UsdUJBQVQsQ0FBa0NDLE1BQWxDLEVBQTBDQyxHQUExQyxFQUErQ0MsR0FBL0MsRUFBb0Q7QUFDbEQsTUFBSUMsTUFBTSxHQUFHRCxHQUFHLENBQUNFLFVBQWpCO0FBQ0EsTUFBSUMsU0FBUyxHQUFHLFNBQWhCOztBQUNBLE1BQUlGLE1BQU0sSUFBSSxHQUFkLEVBQW1CO0FBQ2pCRSxJQUFBQSxTQUFTLEdBQUdBLFNBQVMsQ0FBQ0MsR0FBdEI7QUFDRCxHQUZELE1BRU8sSUFBSUgsTUFBTSxJQUFJLEdBQWQsRUFBbUI7QUFDeEJFLElBQUFBLFNBQVMsR0FBR0EsU0FBUyxDQUFDRSxNQUF0QjtBQUNELEdBRk0sTUFFQSxJQUFJSixNQUFNLElBQUksR0FBZCxFQUFtQjtBQUN4QkUsSUFBQUEsU0FBUyxHQUFHQSxTQUFTLENBQUNHLElBQXRCO0FBQ0QsR0FGTSxNQUVBO0FBQ0xILElBQUFBLFNBQVMsR0FBR0EsU0FBUyxDQUFDSSxLQUF0QjtBQUNEOztBQUNELE1BQUlDLEVBQUUsR0FBR25CLE9BQU8sQ0FBRSxHQUFFLG9CQUFvQm9CLEtBQU0sR0FBRU4sU0FBVSxJQUFHLDJDQUEyQ08sSUFBSyxFQUE3RixDQUFoQjtBQUNBLFNBQU9GLEVBQUUsQ0FBQ1YsTUFBRCxFQUFTQyxHQUFULEVBQWNDLEdBQWQsQ0FBVDtBQUNEOztBQUVELE1BQU1XLGVBQWUsR0FBRyxxQkFBTyxDQUFDYixNQUFELEVBQVNDLEdBQVQsRUFBY0MsR0FBZCxLQUFzQjtBQUNuRFksa0JBQUlDLElBQUosQ0FBU2hCLHVCQUF1QixDQUFDQyxNQUFELEVBQVNDLEdBQVQsRUFBY0MsR0FBZCxDQUFoQyxFQUNFLENBQUNBLEdBQUcsQ0FBQ2MsUUFBSixJQUFnQixFQUFqQixFQUFxQkosSUFEdkI7QUFFRCxDQUh1QixDQUF4Qjs7QUFLQSxNQUFNSyx5QkFBeUIsR0FBRzFCLE9BQU8sQ0FBRSxHQUFFLE1BQU1vQixLQUFNLElBQUcsVUFBVUEsS0FBTSxJQUFHLE9BQU9BLEtBQU0sRUFBbkQsQ0FBekM7QUFFQSxNQUFNTyxpQkFBaUIsR0FBRyxxQkFBTyxDQUFDbEIsTUFBRCxFQUFTQyxHQUFULEVBQWNDLEdBQWQsS0FBc0I7QUFFckQsTUFBSWlCLE9BQU8sR0FBRyxFQUFkOztBQUNBLE1BQUlsQixHQUFHLENBQUNtQixJQUFSLEVBQWM7QUFDWixRQUFJO0FBQ0ZELE1BQUFBLE9BQU8sR0FBR3pCLGdCQUFFMkIsUUFBRixDQUFXM0IsZ0JBQUU0QixRQUFGLENBQVdyQixHQUFHLENBQUNtQixJQUFmLElBQXVCbkIsR0FBRyxDQUFDbUIsSUFBM0IsR0FBa0NHLElBQUksQ0FBQ0MsU0FBTCxDQUFldkIsR0FBRyxDQUFDbUIsSUFBbkIsQ0FBN0MsRUFBdUU7QUFDL0VLLFFBQUFBLE1BQU0sRUFBRUM7QUFEdUUsT0FBdkUsQ0FBVjtBQUdELEtBSkQsQ0FJRSxPQUFPQyxHQUFQLEVBQVksQ0FBRTtBQUNqQjs7QUFDRGIsa0JBQUlDLElBQUosQ0FBU0UseUJBQXlCLENBQUNqQixNQUFELEVBQVNDLEdBQVQsRUFBY0MsR0FBZCxDQUFsQyxFQUFzRGlCLE9BQU8sQ0FBQ1AsSUFBOUQ7QUFDRCxDQVh5QixFQVd2QjtBQUFDZ0IsRUFBQUEsU0FBUyxFQUFFO0FBQVosQ0FYdUIsQ0FBMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0ICdAY29sb3JzL2NvbG9ycyc7XG5pbXBvcnQgbW9yZ2FuIGZyb20gJ21vcmdhbic7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7IE1BWF9MT0dfQk9EWV9MRU5HVEggfSBmcm9tICcuLi9jb25zdGFudHMnO1xuXG5cbi8vIENvcGllZCB0aGUgbW9yZ2FuIGNvbXBpbGUgZnVuY3Rpb24gb3ZlciBzbyB0aGF0IGNvb2xlciBmb3JtYXRzXG4vLyBtYXkgYmUgY29uZmlndXJlZFxuZnVuY3Rpb24gY29tcGlsZSAoZm10KSB7XG4gIC8vIGVzY2FwZSBxdW90ZXNcbiAgZm10ID0gZm10LnJlcGxhY2UoL1wiL2csICdcXFxcXCInKTtcbiAgZm10ID0gZm10LnJlcGxhY2UoLzooWy1cXHddezIsfSkoPzpcXFsoW15cXF1dKylcXF0pPy9nLFxuICAgIGZ1bmN0aW9uIHJlcGxhY2UgKF8sIG5hbWUsIGFyZykge1xuICAgICAgcmV0dXJuIGBcIlxcbiAgICArICh0b2tlbnNbXCIke25hbWV9XCJdKHJlcSwgcmVzLCBcIiR7YXJnfVwiKSB8fCBcIi1cIikgKyBcImA7XG4gICAgfSk7XG4gIGxldCBqcyA9IGAgIHJldHVybiBcIiR7Zm10fVwiO2A7XG4gIHJldHVybiBuZXcgRnVuY3Rpb24oJ3Rva2VucywgcmVxLCByZXMnLCBqcyk7XG59XG5cbmZ1bmN0aW9uIHJlcXVlc3RFbmRMb2dnaW5nRm9ybWF0ICh0b2tlbnMsIHJlcSwgcmVzKSB7XG4gIGxldCBzdGF0dXMgPSByZXMuc3RhdHVzQ29kZTtcbiAgbGV0IHN0YXR1c1N0ciA9ICc6c3RhdHVzJztcbiAgaWYgKHN0YXR1cyA+PSA1MDApIHtcbiAgICBzdGF0dXNTdHIgPSBzdGF0dXNTdHIucmVkO1xuICB9IGVsc2UgaWYgKHN0YXR1cyA+PSA0MDApIHtcbiAgICBzdGF0dXNTdHIgPSBzdGF0dXNTdHIueWVsbG93O1xuICB9IGVsc2UgaWYgKHN0YXR1cyA+PSAzMDApIHtcbiAgICBzdGF0dXNTdHIgPSBzdGF0dXNTdHIuY3lhbjtcbiAgfSBlbHNlIHtcbiAgICBzdGF0dXNTdHIgPSBzdGF0dXNTdHIuZ3JlZW47XG4gIH1cbiAgbGV0IGZuID0gY29tcGlsZShgJHsnPC0tIDptZXRob2QgOnVybCAnLndoaXRlfSR7c3RhdHVzU3RyfSAkeyc6cmVzcG9uc2UtdGltZSBtcyAtIDpyZXNbY29udGVudC1sZW5ndGhdJy5ncmV5fWApO1xuICByZXR1cm4gZm4odG9rZW5zLCByZXEsIHJlcyk7XG59XG5cbmNvbnN0IGVuZExvZ0Zvcm1hdHRlciA9IG1vcmdhbigodG9rZW5zLCByZXEsIHJlcykgPT4ge1xuICBsb2cuaW5mbyhyZXF1ZXN0RW5kTG9nZ2luZ0Zvcm1hdCh0b2tlbnMsIHJlcSwgcmVzKSxcbiAgICAocmVzLmpzb25SZXNwIHx8ICcnKS5ncmV5KTtcbn0pO1xuXG5jb25zdCByZXF1ZXN0U3RhcnRMb2dnaW5nRm9ybWF0ID0gY29tcGlsZShgJHsnLS0+Jy53aGl0ZX0gJHsnOm1ldGhvZCcud2hpdGV9ICR7Jzp1cmwnLndoaXRlfWApO1xuXG5jb25zdCBzdGFydExvZ0Zvcm1hdHRlciA9IG1vcmdhbigodG9rZW5zLCByZXEsIHJlcykgPT4ge1xuICAvLyBtb3JnYW4gb3V0cHV0IGlzIHJlZGlyZWN0ZWQgc3RyYWlnaHQgdG8gd2luc3RvblxuICBsZXQgcmVxQm9keSA9ICcnO1xuICBpZiAocmVxLmJvZHkpIHtcbiAgICB0cnkge1xuICAgICAgcmVxQm9keSA9IF8udHJ1bmNhdGUoXy5pc1N0cmluZyhyZXEuYm9keSkgPyByZXEuYm9keSA6IEpTT04uc3RyaW5naWZ5KHJlcS5ib2R5KSwge1xuICAgICAgICBsZW5ndGg6IE1BWF9MT0dfQk9EWV9MRU5HVEgsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChpZ24pIHt9XG4gIH1cbiAgbG9nLmluZm8ocmVxdWVzdFN0YXJ0TG9nZ2luZ0Zvcm1hdCh0b2tlbnMsIHJlcSwgcmVzKSwgcmVxQm9keS5ncmV5KTtcbn0sIHtpbW1lZGlhdGU6IHRydWV9KTtcblxuZXhwb3J0IHsgZW5kTG9nRm9ybWF0dGVyLCBzdGFydExvZ0Zvcm1hdHRlciB9O1xuIl19
70
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21waWxlIiwiZm10IiwicmVwbGFjZSIsIl8iLCJuYW1lIiwiYXJnIiwianMiLCJGdW5jdGlvbiIsInJlcXVlc3RFbmRMb2dnaW5nRm9ybWF0IiwidG9rZW5zIiwicmVxIiwicmVzIiwic3RhdHVzIiwic3RhdHVzQ29kZSIsInN0YXR1c1N0ciIsInJlZCIsInllbGxvdyIsImN5YW4iLCJncmVlbiIsImZuIiwid2hpdGUiLCJncmV5IiwiZW5kTG9nRm9ybWF0dGVyIiwibG9nIiwiaW5mbyIsImpzb25SZXNwIiwicmVxdWVzdFN0YXJ0TG9nZ2luZ0Zvcm1hdCIsInN0YXJ0TG9nRm9ybWF0dGVyIiwicmVxQm9keSIsImJvZHkiLCJ0cnVuY2F0ZSIsImlzU3RyaW5nIiwiSlNPTiIsInN0cmluZ2lmeSIsImxlbmd0aCIsIk1BWF9MT0dfQk9EWV9MRU5HVEgiLCJpZ24iLCJpbW1lZGlhdGUiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZXhwcmVzcy9leHByZXNzLWxvZ2dpbmcuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCAnQGNvbG9ycy9jb2xvcnMnO1xuaW1wb3J0IG1vcmdhbiBmcm9tICdtb3JnYW4nO1xuaW1wb3J0IGxvZyBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgeyBNQVhfTE9HX0JPRFlfTEVOR1RIIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuXG4vLyBDb3BpZWQgdGhlIG1vcmdhbiBjb21waWxlIGZ1bmN0aW9uIG92ZXIgc28gdGhhdCBjb29sZXIgZm9ybWF0c1xuLy8gbWF5IGJlIGNvbmZpZ3VyZWRcbmZ1bmN0aW9uIGNvbXBpbGUgKGZtdCkge1xuICAvLyBlc2NhcGUgcXVvdGVzXG4gIGZtdCA9IGZtdC5yZXBsYWNlKC9cIi9nLCAnXFxcXFwiJyk7XG4gIGZtdCA9IGZtdC5yZXBsYWNlKC86KFstXFx3XXsyLH0pKD86XFxbKFteXFxdXSspXFxdKT8vZyxcbiAgICBmdW5jdGlvbiByZXBsYWNlIChfLCBuYW1lLCBhcmcpIHtcbiAgICAgIHJldHVybiBgXCJcXG4gICAgKyAodG9rZW5zW1wiJHtuYW1lfVwiXShyZXEsIHJlcywgXCIke2FyZ31cIikgfHwgXCItXCIpICsgXCJgO1xuICAgIH0pO1xuICBsZXQganMgPSBgICByZXR1cm4gXCIke2ZtdH1cIjtgO1xuICByZXR1cm4gbmV3IEZ1bmN0aW9uKCd0b2tlbnMsIHJlcSwgcmVzJywganMpO1xufVxuXG5mdW5jdGlvbiByZXF1ZXN0RW5kTG9nZ2luZ0Zvcm1hdCAodG9rZW5zLCByZXEsIHJlcykge1xuICBsZXQgc3RhdHVzID0gcmVzLnN0YXR1c0NvZGU7XG4gIGxldCBzdGF0dXNTdHIgPSAnOnN0YXR1cyc7XG4gIGlmIChzdGF0dXMgPj0gNTAwKSB7XG4gICAgc3RhdHVzU3RyID0gc3RhdHVzU3RyLnJlZDtcbiAgfSBlbHNlIGlmIChzdGF0dXMgPj0gNDAwKSB7XG4gICAgc3RhdHVzU3RyID0gc3RhdHVzU3RyLnllbGxvdztcbiAgfSBlbHNlIGlmIChzdGF0dXMgPj0gMzAwKSB7XG4gICAgc3RhdHVzU3RyID0gc3RhdHVzU3RyLmN5YW47XG4gIH0gZWxzZSB7XG4gICAgc3RhdHVzU3RyID0gc3RhdHVzU3RyLmdyZWVuO1xuICB9XG4gIGxldCBmbiA9IGNvbXBpbGUoYCR7JzwtLSA6bWV0aG9kIDp1cmwgJy53aGl0ZX0ke3N0YXR1c1N0cn0gJHsnOnJlc3BvbnNlLXRpbWUgbXMgLSA6cmVzW2NvbnRlbnQtbGVuZ3RoXScuZ3JleX1gKTtcbiAgcmV0dXJuIGZuKHRva2VucywgcmVxLCByZXMpO1xufVxuXG5jb25zdCBlbmRMb2dGb3JtYXR0ZXIgPSBtb3JnYW4oKHRva2VucywgcmVxLCByZXMpID0+IHtcbiAgbG9nLmluZm8ocmVxdWVzdEVuZExvZ2dpbmdGb3JtYXQodG9rZW5zLCByZXEsIHJlcyksXG4gICAgKHJlcy5qc29uUmVzcCB8fCAnJykuZ3JleSk7XG59KTtcblxuY29uc3QgcmVxdWVzdFN0YXJ0TG9nZ2luZ0Zvcm1hdCA9IGNvbXBpbGUoYCR7Jy0tPicud2hpdGV9ICR7JzptZXRob2QnLndoaXRlfSAkeyc6dXJsJy53aGl0ZX1gKTtcblxuY29uc3Qgc3RhcnRMb2dGb3JtYXR0ZXIgPSBtb3JnYW4oKHRva2VucywgcmVxLCByZXMpID0+IHtcbiAgLy8gbW9yZ2FuIG91dHB1dCBpcyByZWRpcmVjdGVkIHN0cmFpZ2h0IHRvIHdpbnN0b25cbiAgbGV0IHJlcUJvZHkgPSAnJztcbiAgaWYgKHJlcS5ib2R5KSB7XG4gICAgdHJ5IHtcbiAgICAgIHJlcUJvZHkgPSBfLnRydW5jYXRlKF8uaXNTdHJpbmcocmVxLmJvZHkpID8gcmVxLmJvZHkgOiBKU09OLnN0cmluZ2lmeShyZXEuYm9keSksIHtcbiAgICAgICAgbGVuZ3RoOiBNQVhfTE9HX0JPRFlfTEVOR1RILFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoaWduKSB7fVxuICB9XG4gIGxvZy5pbmZvKHJlcXVlc3RTdGFydExvZ2dpbmdGb3JtYXQodG9rZW5zLCByZXEsIHJlcyksIHJlcUJvZHkuZ3JleSk7XG59LCB7aW1tZWRpYXRlOiB0cnVlfSk7XG5cbmV4cG9ydCB7IGVuZExvZ0Zvcm1hdHRlciwgc3RhcnRMb2dGb3JtYXR0ZXIgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFLQSxTQUFTQSxPQUFULENBQWtCQyxHQUFsQixFQUF1QjtFQUVyQkEsR0FBRyxHQUFHQSxHQUFHLENBQUNDLE9BQUosQ0FBWSxJQUFaLEVBQWtCLEtBQWxCLENBQU47RUFDQUQsR0FBRyxHQUFHQSxHQUFHLENBQUNDLE9BQUosQ0FBWSxnQ0FBWixFQUNKLFNBQVNBLE9BQVQsQ0FBa0JDLENBQWxCLEVBQXFCQyxJQUFyQixFQUEyQkMsR0FBM0IsRUFBZ0M7SUFDOUIsT0FBUSxxQkFBb0JELElBQUssaUJBQWdCQyxHQUFJLGdCQUFyRDtFQUNELENBSEcsQ0FBTjtFQUlBLElBQUlDLEVBQUUsR0FBSSxhQUFZTCxHQUFJLElBQTFCO0VBQ0EsT0FBTyxJQUFJTSxRQUFKLENBQWEsa0JBQWIsRUFBaUNELEVBQWpDLENBQVA7QUFDRDs7QUFFRCxTQUFTRSx1QkFBVCxDQUFrQ0MsTUFBbEMsRUFBMENDLEdBQTFDLEVBQStDQyxHQUEvQyxFQUFvRDtFQUNsRCxJQUFJQyxNQUFNLEdBQUdELEdBQUcsQ0FBQ0UsVUFBakI7RUFDQSxJQUFJQyxTQUFTLEdBQUcsU0FBaEI7O0VBQ0EsSUFBSUYsTUFBTSxJQUFJLEdBQWQsRUFBbUI7SUFDakJFLFNBQVMsR0FBR0EsU0FBUyxDQUFDQyxHQUF0QjtFQUNELENBRkQsTUFFTyxJQUFJSCxNQUFNLElBQUksR0FBZCxFQUFtQjtJQUN4QkUsU0FBUyxHQUFHQSxTQUFTLENBQUNFLE1BQXRCO0VBQ0QsQ0FGTSxNQUVBLElBQUlKLE1BQU0sSUFBSSxHQUFkLEVBQW1CO0lBQ3hCRSxTQUFTLEdBQUdBLFNBQVMsQ0FBQ0csSUFBdEI7RUFDRCxDQUZNLE1BRUE7SUFDTEgsU0FBUyxHQUFHQSxTQUFTLENBQUNJLEtBQXRCO0VBQ0Q7O0VBQ0QsSUFBSUMsRUFBRSxHQUFHbkIsT0FBTyxDQUFFLEdBQUUsb0JBQW9Cb0IsS0FBTSxHQUFFTixTQUFVLElBQUcsMkNBQTJDTyxJQUFLLEVBQTdGLENBQWhCO0VBQ0EsT0FBT0YsRUFBRSxDQUFDVixNQUFELEVBQVNDLEdBQVQsRUFBY0MsR0FBZCxDQUFUO0FBQ0Q7O0FBRUQsTUFBTVcsZUFBZSxHQUFHLHFCQUFPLENBQUNiLE1BQUQsRUFBU0MsR0FBVCxFQUFjQyxHQUFkLEtBQXNCO0VBQ25EWSxnQkFBSUMsSUFBSixDQUFTaEIsdUJBQXVCLENBQUNDLE1BQUQsRUFBU0MsR0FBVCxFQUFjQyxHQUFkLENBQWhDLEVBQ0UsQ0FBQ0EsR0FBRyxDQUFDYyxRQUFKLElBQWdCLEVBQWpCLEVBQXFCSixJQUR2QjtBQUVELENBSHVCLENBQXhCOztBQUtBLE1BQU1LLHlCQUF5QixHQUFHMUIsT0FBTyxDQUFFLEdBQUUsTUFBTW9CLEtBQU0sSUFBRyxVQUFVQSxLQUFNLElBQUcsT0FBT0EsS0FBTSxFQUFuRCxDQUF6QztBQUVBLE1BQU1PLGlCQUFpQixHQUFHLHFCQUFPLENBQUNsQixNQUFELEVBQVNDLEdBQVQsRUFBY0MsR0FBZCxLQUFzQjtFQUVyRCxJQUFJaUIsT0FBTyxHQUFHLEVBQWQ7O0VBQ0EsSUFBSWxCLEdBQUcsQ0FBQ21CLElBQVIsRUFBYztJQUNaLElBQUk7TUFDRkQsT0FBTyxHQUFHekIsZ0JBQUUyQixRQUFGLENBQVczQixnQkFBRTRCLFFBQUYsQ0FBV3JCLEdBQUcsQ0FBQ21CLElBQWYsSUFBdUJuQixHQUFHLENBQUNtQixJQUEzQixHQUFrQ0csSUFBSSxDQUFDQyxTQUFMLENBQWV2QixHQUFHLENBQUNtQixJQUFuQixDQUE3QyxFQUF1RTtRQUMvRUssTUFBTSxFQUFFQztNQUR1RSxDQUF2RSxDQUFWO0lBR0QsQ0FKRCxDQUlFLE9BQU9DLEdBQVAsRUFBWSxDQUFFO0VBQ2pCOztFQUNEYixnQkFBSUMsSUFBSixDQUFTRSx5QkFBeUIsQ0FBQ2pCLE1BQUQsRUFBU0MsR0FBVCxFQUFjQyxHQUFkLENBQWxDLEVBQXNEaUIsT0FBTyxDQUFDUCxJQUE5RDtBQUNELENBWHlCLEVBV3ZCO0VBQUNnQixTQUFTLEVBQUU7QUFBWixDQVh1QixDQUExQiJ9
@@ -190,4 +190,4 @@ async function handleIdempotency(req, res, next) {
190
190
  });
191
191
  }
192
192
  }
193
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9leHByZXNzL2lkZW1wb3RlbmN5LmpzIl0sIm5hbWVzIjpbIkNBQ0hFX1NJWkUiLCJJREVNUE9URU5UX1JFU1BPTlNFUyIsIkxSVSIsIm1heCIsInVwZGF0ZUFnZU9uR2V0IiwiZGlzcG9zZSIsImtleSIsInJlc3BvbnNlIiwiZnMiLCJyaW1yYWZTeW5jIiwiTU9OSVRPUkVEX01FVEhPRFMiLCJJREVNUE9URU5DWV9LRVlfSEVBREVSIiwicHJvY2VzcyIsIm9uIiwicmVzUGF0aHMiLCJ2YWx1ZXMiLCJtYXAiLCJmaWx0ZXIiLCJCb29sZWFuIiwicmVzUGF0aCIsImlnbiIsImNhY2hlUmVzcG9uc2UiLCJyZXEiLCJyZXMiLCJyZXNwb25zZVN0YXRlTGlzdGVuZXIiLCJFdmVudEVtaXR0ZXIiLCJzZXQiLCJtZXRob2QiLCJwYXRoIiwidG1wRmlsZSIsInJlc29sdmUiLCJvcyIsInRtcGRpciIsInV0aWwiLCJ1dWlkVjQiLCJyZXNwb25zZUxpc3RlbmVyIiwiY3JlYXRlV3JpdGVTdHJlYW0iLCJlbWl0Q2xvc2UiLCJvcmlnaW5hbFNvY2tldFdyaXRlciIsInNvY2tldCIsIndyaXRlIiwiYmluZCIsInBhdGNoZWRXcml0ZXIiLCJjaHVuayIsImVuY29kaW5nIiwibmV4dCIsIndyaXRhYmxlIiwid3JpdGVFcnJvciIsImlzUmVzcG9uc2VGdWxseVNlbnQiLCJvbmNlIiwiZSIsImVuZCIsImhhcyIsImxvZyIsImluZm8iLCJlbWl0IiwibWVzc2FnZSIsImRlbGV0ZSIsImdldCIsImhhbmRsZUlkZW1wb3RlbmN5IiwiaGVhZGVycyIsImluY2x1ZGVzIiwiZGVidWciLCJzdG9yZWRNZXRob2QiLCJzdG9yZWRQYXRoIiwid2FybiIsInJlcm91dGVDYWNoZWRSZXNwb25zZSIsImNhY2hlZFJlc1BhdGgiLCJleGlzdHMiLCJjcmVhdGVSZWFkU3RyZWFtIiwicGlwZSIsImNhY2hlZFJlc3BvbnNlUGF0aCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7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ZXNDb250ZW50IjpbImltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IExSVSBmcm9tICdscnUtY2FjaGUnO1xuaW1wb3J0IHsgZnMsIHV0aWwgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IG9zIGZyb20gJ29zJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuXG5jb25zdCBDQUNIRV9TSVpFID0gMTAyNDtcbmNvbnN0IElERU1QT1RFTlRfUkVTUE9OU0VTID0gbmV3IExSVSh7XG4gIG1heDogQ0FDSEVfU0laRSxcbiAgdXBkYXRlQWdlT25HZXQ6IHRydWUsXG4gIGRpc3Bvc2UgKGtleSwge3Jlc3BvbnNlfSkge1xuICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgZnMucmltcmFmU3luYyhyZXNwb25zZSk7XG4gICAgfVxuICB9LFxufSk7XG5jb25zdCBNT05JVE9SRURfTUVUSE9EUyA9IFsnUE9TVCcsICdQQVRDSCddO1xuY29uc3QgSURFTVBPVEVOQ1lfS0VZX0hFQURFUiA9ICd4LWlkZW1wb3RlbmN5LWtleSc7XG5cbnByb2Nlc3Mub24oJ2V4aXQnLCAoKSA9PiB7XG4gIGNvbnN0IHJlc1BhdGhzID0gWy4uLklERU1QT1RFTlRfUkVTUE9OU0VTLnZhbHVlcygpXVxuICAgIC5tYXAoKHtyZXNwb25zZX0pID0+IHJlc3BvbnNlKVxuICAgIC5maWx0ZXIoQm9vbGVhbik7XG4gIGZvciAoY29uc3QgcmVzUGF0aCBvZiByZXNQYXRocykge1xuICAgIHRyeSB7XG4gICAgICAvLyBBc3luY2hyb25vdXMgY2FsbHMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gb25FeGl0IGhhbmRsZXJcbiAgICAgIGZzLnJpbXJhZlN5bmMocmVzUGF0aCk7XG4gICAgfSBjYXRjaCAoaWduKSB7fVxuICB9XG59KTtcblxuXG5mdW5jdGlvbiBjYWNoZVJlc3BvbnNlIChrZXksIHJlcSwgcmVzKSB7XG4gIGNvbnN0IHJlc3BvbnNlU3RhdGVMaXN0ZW5lciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgSURFTVBPVEVOVF9SRVNQT05TRVMuc2V0KGtleSwge1xuICAgIG1ldGhvZDogcmVxLm1ldGhvZCxcbiAgICBwYXRoOiByZXEucGF0aCxcbiAgICByZXNwb25zZTogbnVsbCxcbiAgICByZXNwb25zZVN0YXRlTGlzdGVuZXIsXG4gIH0pO1xuICBjb25zdCB0bXBGaWxlID0gcGF0aC5yZXNvbHZlKG9zLnRtcGRpcigpLCBgJHt1dGlsLnV1aWRWNCgpfS5yZXNwb25zZWApO1xuICBjb25zdCByZXNwb25zZUxpc3RlbmVyID0gZnMuY3JlYXRlV3JpdGVTdHJlYW0odG1wRmlsZSwge1xuICAgIGVtaXRDbG9zZTogdHJ1ZSxcbiAgfSk7XG4gIGNvbnN0IG9yaWdpbmFsU29ja2V0V3JpdGVyID0gcmVzLnNvY2tldC53cml0ZS5iaW5kKHJlcy5zb2NrZXQpO1xuICBjb25zdCBwYXRjaGVkV3JpdGVyID0gKGNodW5rLCBlbmNvZGluZywgbmV4dCkgPT4ge1xuICAgIGlmIChyZXNwb25zZUxpc3RlbmVyLndyaXRhYmxlKSB7XG4gICAgICByZXNwb25zZUxpc3RlbmVyLndyaXRlKGNodW5rKTtcbiAgICB9XG4gICAgcmV0dXJuIG9yaWdpbmFsU29ja2V0V3JpdGVyKGNodW5rLCBlbmNvZGluZywgbmV4dCk7XG4gIH07XG4gIHJlcy5zb2NrZXQud3JpdGUgPSBwYXRjaGVkV3JpdGVyO1xuICBsZXQgd3JpdGVFcnJvciA9IG51bGw7XG4gIGxldCBpc1Jlc3BvbnNlRnVsbHlTZW50ID0gZmFsc2U7XG4gIHJlc3BvbnNlTGlzdGVuZXIub25jZSgnZXJyb3InLCAoZSkgPT4ge1xuICAgIHdyaXRlRXJyb3IgPSBlO1xuICB9KTtcbiAgcmVzLm9uY2UoJ2ZpbmlzaCcsICgpID0+IHtcbiAgICBpc1Jlc3BvbnNlRnVsbHlTZW50ID0gdHJ1ZTtcbiAgICByZXNwb25zZUxpc3RlbmVyLmVuZCgpO1xuICB9KTtcbiAgcmVzLm9uY2UoJ2Nsb3NlJywgKCkgPT4ge1xuICAgIGlmICghaXNSZXNwb25zZUZ1bGx5U2VudCkge1xuICAgICAgcmVzcG9uc2VMaXN0ZW5lci5lbmQoKTtcbiAgICB9XG4gIH0pO1xuICByZXNwb25zZUxpc3RlbmVyLm9uY2UoJ2Nsb3NlJywgKCkgPT4ge1xuICAgIGlmIChyZXMuc29ja2V0Py53cml0ZSA9PT0gcGF0Y2hlZFdyaXRlcikge1xuICAgICAgcmVzLnNvY2tldC53cml0ZSA9IG9yaWdpbmFsU29ja2V0V3JpdGVyO1xuICAgIH1cblxuICAgIGlmICghSURFTVBPVEVOVF9SRVNQT05TRVMuaGFzKGtleSkpIHtcbiAgICAgIGxvZy5pbmZvKGBDb3VsZCBub3QgY2FjaGUgdGhlIHJlc3BvbnNlIGlkZW50aWZpZWQgYnkgJyR7a2V5fScuIGAgK1xuICAgICAgICBgQ2FjaGUgY29uc2lzdGVuY3kgaGFzIGJlZW4gZGFtYWdlZGApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlU3RhdGVMaXN0ZW5lci5lbWl0KCdyZWFkeScsIG51bGwpO1xuICAgIH1cbiAgICBpZiAod3JpdGVFcnJvcikge1xuICAgICAgbG9nLmluZm8oYENvdWxkIG5vdCBjYWNoZSB0aGUgcmVzcG9uc2UgaWRlbnRpZmllZCBieSAnJHtrZXl9JzogJHt3cml0ZUVycm9yLm1lc3NhZ2V9YCk7XG4gICAgICBJREVNUE9URU5UX1JFU1BPTlNFUy5kZWxldGUoa2V5KTtcbiAgICAgIHJldHVybiByZXNwb25zZVN0YXRlTGlzdGVuZXIuZW1pdCgncmVhZHknLCBudWxsKTtcbiAgICB9XG4gICAgaWYgKCFpc1Jlc3BvbnNlRnVsbHlTZW50KSB7XG4gICAgICBsb2cuaW5mbyhgQ291bGQgbm90IGNhY2hlIHRoZSByZXNwb25zZSBpZGVudGlmaWVkIGJ5ICcke2tleX0nLCBgICtcbiAgICAgICAgYGJlY2F1c2UgaXQgaGFzIG5vdCBiZWVuIGNvbXBsZXRlZGApO1xuICAgICAgbG9nLmluZm8oJ0RvZXMgdGhlIGNsaWVudCB0ZXJtaW5hdGUgY29ubmVjdGlvbnMgdG9vIGVhcmx5PycpO1xuICAgICAgSURFTVBPVEVOVF9SRVNQT05TRVMuZGVsZXRlKGtleSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2VTdGF0ZUxpc3RlbmVyLmVtaXQoJ3JlYWR5JywgbnVsbCk7XG4gICAgfVxuXG4gICAgSURFTVBPVEVOVF9SRVNQT05TRVMuZ2V0KGtleSkucmVzcG9uc2UgPSB0bXBGaWxlO1xuICAgIHJlc3BvbnNlU3RhdGVMaXN0ZW5lci5lbWl0KCdyZWFkeScsIHRtcEZpbGUpO1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaGFuZGxlSWRlbXBvdGVuY3kgKHJlcSwgcmVzLCBuZXh0KSB7XG4gIGNvbnN0IGtleSA9IHJlcS5oZWFkZXJzW0lERU1QT1RFTkNZX0tFWV9IRUFERVJdO1xuICBpZiAoIWtleSkge1xuICAgIHJldHVybiBuZXh0KCk7XG4gIH1cbiAgaWYgKCFNT05JVE9SRURfTUVUSE9EUy5pbmNsdWRlcyhyZXEubWV0aG9kKSkge1xuICAgIC8vIEdFVCwgREVMRVRFLCBldGMuIHJlcXVlc3RzIGFyZSBpZGVtcG90ZW50IGJ5IGRlZmF1bHRcbiAgICAvLyB0aGVyZSBpcyBubyBuZWVkIHRvIGNhY2hlIHRoZW1cbiAgICByZXR1cm4gbmV4dCgpO1xuICB9XG5cbiAgbG9nLmRlYnVnKGBSZXF1ZXN0IGlkZW1wb3RlbmN5IGtleTogJHtrZXl9YCk7XG4gIGlmICghSURFTVBPVEVOVF9SRVNQT05TRVMuaGFzKGtleSkpIHtcbiAgICBjYWNoZVJlc3BvbnNlKGtleSwgcmVxLCByZXMpO1xuICAgIHJldHVybiBuZXh0KCk7XG4gIH1cblxuICBjb25zdCB7XG4gICAgbWV0aG9kOiBzdG9yZWRNZXRob2QsXG4gICAgcGF0aDogc3RvcmVkUGF0aCxcbiAgICByZXNwb25zZSxcbiAgICByZXNwb25zZVN0YXRlTGlzdGVuZXIsXG4gIH0gPSBJREVNUE9URU5UX1JFU1BPTlNFUy5nZXQoa2V5KTtcbiAgaWYgKHJlcS5tZXRob2QgIT09IHN0b3JlZE1ldGhvZCB8fCByZXEucGF0aCAhPT0gc3RvcmVkUGF0aCkge1xuICAgIGxvZy53YXJuKGBHb3QgdHdvIGRpZmZlcmVudCByZXF1ZXN0cyB3aXRoIHRoZSBzYW1lIGlkZW1wb3RlbmN5IGtleSAnJHtrZXl9J2ApO1xuICAgIGxvZy53YXJuKCdJcyB0aGUgY2xpZW50IGdlbmVyYXRpbmcgaWRlbXBvdGVuY3kga2V5cyBwcm9wZXJseT8nKTtcbiAgICByZXR1cm4gbmV4dCgpO1xuICB9XG5cbiAgY29uc3QgcmVyb3V0ZUNhY2hlZFJlc3BvbnNlID0gYXN5bmMgKGNhY2hlZFJlc1BhdGgpID0+IHtcbiAgICBpZiAoIWF3YWl0IGZzLmV4aXN0cyhjYWNoZWRSZXNQYXRoKSkge1xuICAgICAgSURFTVBPVEVOVF9SRVNQT05TRVMuZGVsZXRlKGtleSk7XG4gICAgICBsb2cud2FybihgQ291bGQgbm90IHJlYWQgdGhlIGNhY2hlZCByZXNwb25zZSBpZGVudGlmaWVkIGJ5IGtleSAnJHtrZXl9J2ApO1xuICAgICAgbG9nLndhcm4oJ1RoZSB0ZW1wb3Jhcnkgc3RvcmFnZSBpcyBub3QgYWNjZXNzaWJsZSBhbnltb3JlJyk7XG4gICAgICByZXR1cm4gbmV4dCgpO1xuICAgIH1cbiAgICBmcy5jcmVhdGVSZWFkU3RyZWFtKGNhY2hlZFJlc1BhdGgpLnBpcGUocmVzLnNvY2tldCk7XG4gIH07XG5cbiAgaWYgKHJlc3BvbnNlKSB7XG4gICAgbG9nLmluZm8oYFRoZSBzYW1lIHJlcXVlc3Qgd2l0aCB0aGUgaWRlbXBvdGVuY3kga2V5ICcke2tleX0nIGhhcyBiZWVuIGFscmVhZHkgcHJvY2Vzc2VkYCk7XG4gICAgbG9nLmluZm8oYFJlcm91dGluZyBpdHMgcmVzcG9uc2UgdG8gdGhlIGN1cnJlbnQgcmVxdWVzdGApO1xuICAgIGF3YWl0IHJlcm91dGVDYWNoZWRSZXNwb25zZShyZXNwb25zZSk7XG4gIH0gZWxzZSB7XG4gICAgbG9nLmluZm8oYFRoZSBzYW1lIHJlcXVlc3Qgd2l0aCB0aGUgaWRlbXBvdGVuY3kga2V5ICcke2tleX0nIGlzIGJlaW5nIHByb2Nlc3NlZGApO1xuICAgIGxvZy5pbmZvKGBXYWl0aW5nIGZvciB0aGUgcmVzcG9uc2UgdG8gYmUgcmVyb3V0ZWQgdG8gdGhlIGN1cnJlbnQgcmVxdWVzdGApO1xuICAgIHJlc3BvbnNlU3RhdGVMaXN0ZW5lci5vbmNlKCdyZWFkeScsIGFzeW5jIChjYWNoZWRSZXNwb25zZVBhdGgpID0+IHtcbiAgICAgIGlmICghY2FjaGVkUmVzcG9uc2VQYXRoKSB7XG4gICAgICAgIHJldHVybiBuZXh0KCk7XG4gICAgICB9XG4gICAgICBhd2FpdCByZXJvdXRlQ2FjaGVkUmVzcG9uc2UoY2FjaGVkUmVzcG9uc2VQYXRoKTtcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgeyBoYW5kbGVJZGVtcG90ZW5jeSB9O1xuIl19
193
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDQUNIRV9TSVpFIiwiSURFTVBPVEVOVF9SRVNQT05TRVMiLCJMUlUiLCJtYXgiLCJ1cGRhdGVBZ2VPbkdldCIsImRpc3Bvc2UiLCJrZXkiLCJyZXNwb25zZSIsImZzIiwicmltcmFmU3luYyIsIk1PTklUT1JFRF9NRVRIT0RTIiwiSURFTVBPVEVOQ1lfS0VZX0hFQURFUiIsInByb2Nlc3MiLCJvbiIsInJlc1BhdGhzIiwidmFsdWVzIiwibWFwIiwiZmlsdGVyIiwiQm9vbGVhbiIsInJlc1BhdGgiLCJpZ24iLCJjYWNoZVJlc3BvbnNlIiwicmVxIiwicmVzIiwicmVzcG9uc2VTdGF0ZUxpc3RlbmVyIiwiRXZlbnRFbWl0dGVyIiwic2V0IiwibWV0aG9kIiwicGF0aCIsInRtcEZpbGUiLCJyZXNvbHZlIiwib3MiLCJ0bXBkaXIiLCJ1dGlsIiwidXVpZFY0IiwicmVzcG9uc2VMaXN0ZW5lciIsImNyZWF0ZVdyaXRlU3RyZWFtIiwiZW1pdENsb3NlIiwib3JpZ2luYWxTb2NrZXRXcml0ZXIiLCJzb2NrZXQiLCJ3cml0ZSIsImJpbmQiLCJwYXRjaGVkV3JpdGVyIiwiY2h1bmsiLCJlbmNvZGluZyIsIm5leHQiLCJ3cml0YWJsZSIsIndyaXRlRXJyb3IiLCJpc1Jlc3BvbnNlRnVsbHlTZW50Iiwib25jZSIsImUiLCJlbmQiLCJoYXMiLCJsb2ciLCJpbmZvIiwiZW1pdCIsIm1lc3NhZ2UiLCJkZWxldGUiLCJnZXQiLCJoYW5kbGVJZGVtcG90ZW5jeSIsImhlYWRlcnMiLCJpbmNsdWRlcyIsImRlYnVnIiwic3RvcmVkTWV0aG9kIiwic3RvcmVkUGF0aCIsIndhcm4iLCJyZXJvdXRlQ2FjaGVkUmVzcG9uc2UiLCJjYWNoZWRSZXNQYXRoIiwiZXhpc3RzIiwiY3JlYXRlUmVhZFN0cmVhbSIsInBpcGUiLCJjYWNoZWRSZXNwb25zZVBhdGgiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZXhwcmVzcy9pZGVtcG90ZW5jeS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCBMUlUgZnJvbSAnbHJ1LWNhY2hlJztcbmltcG9ydCB7IGZzLCB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBvcyBmcm9tICdvcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5cblxuY29uc3QgQ0FDSEVfU0laRSA9IDEwMjQ7XG5jb25zdCBJREVNUE9URU5UX1JFU1BPTlNFUyA9IG5ldyBMUlUoe1xuICBtYXg6IENBQ0hFX1NJWkUsXG4gIHVwZGF0ZUFnZU9uR2V0OiB0cnVlLFxuICBkaXNwb3NlIChrZXksIHtyZXNwb25zZX0pIHtcbiAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgIGZzLnJpbXJhZlN5bmMocmVzcG9uc2UpO1xuICAgIH1cbiAgfSxcbn0pO1xuY29uc3QgTU9OSVRPUkVEX01FVEhPRFMgPSBbJ1BPU1QnLCAnUEFUQ0gnXTtcbmNvbnN0IElERU1QT1RFTkNZX0tFWV9IRUFERVIgPSAneC1pZGVtcG90ZW5jeS1rZXknO1xuXG5wcm9jZXNzLm9uKCdleGl0JywgKCkgPT4ge1xuICBjb25zdCByZXNQYXRocyA9IFsuLi5JREVNUE9URU5UX1JFU1BPTlNFUy52YWx1ZXMoKV1cbiAgICAubWFwKCh7cmVzcG9uc2V9KSA9PiByZXNwb25zZSlcbiAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICBmb3IgKGNvbnN0IHJlc1BhdGggb2YgcmVzUGF0aHMpIHtcbiAgICB0cnkge1xuICAgICAgLy8gQXN5bmNocm9ub3VzIGNhbGxzIGFyZSBub3Qgc3VwcG9ydGVkIGluIG9uRXhpdCBoYW5kbGVyXG4gICAgICBmcy5yaW1yYWZTeW5jKHJlc1BhdGgpO1xuICAgIH0gY2F0Y2ggKGlnbikge31cbiAgfVxufSk7XG5cblxuZnVuY3Rpb24gY2FjaGVSZXNwb25zZSAoa2V5LCByZXEsIHJlcykge1xuICBjb25zdCByZXNwb25zZVN0YXRlTGlzdGVuZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIElERU1QT1RFTlRfUkVTUE9OU0VTLnNldChrZXksIHtcbiAgICBtZXRob2Q6IHJlcS5tZXRob2QsXG4gICAgcGF0aDogcmVxLnBhdGgsXG4gICAgcmVzcG9uc2U6IG51bGwsXG4gICAgcmVzcG9uc2VTdGF0ZUxpc3RlbmVyLFxuICB9KTtcbiAgY29uc3QgdG1wRmlsZSA9IHBhdGgucmVzb2x2ZShvcy50bXBkaXIoKSwgYCR7dXRpbC51dWlkVjQoKX0ucmVzcG9uc2VgKTtcbiAgY29uc3QgcmVzcG9uc2VMaXN0ZW5lciA9IGZzLmNyZWF0ZVdyaXRlU3RyZWFtKHRtcEZpbGUsIHtcbiAgICBlbWl0Q2xvc2U6IHRydWUsXG4gIH0pO1xuICBjb25zdCBvcmlnaW5hbFNvY2tldFdyaXRlciA9IHJlcy5zb2NrZXQud3JpdGUuYmluZChyZXMuc29ja2V0KTtcbiAgY29uc3QgcGF0Y2hlZFdyaXRlciA9IChjaHVuaywgZW5jb2RpbmcsIG5leHQpID0+IHtcbiAgICBpZiAocmVzcG9uc2VMaXN0ZW5lci53cml0YWJsZSkge1xuICAgICAgcmVzcG9uc2VMaXN0ZW5lci53cml0ZShjaHVuayk7XG4gICAgfVxuICAgIHJldHVybiBvcmlnaW5hbFNvY2tldFdyaXRlcihjaHVuaywgZW5jb2RpbmcsIG5leHQpO1xuICB9O1xuICByZXMuc29ja2V0LndyaXRlID0gcGF0Y2hlZFdyaXRlcjtcbiAgbGV0IHdyaXRlRXJyb3IgPSBudWxsO1xuICBsZXQgaXNSZXNwb25zZUZ1bGx5U2VudCA9IGZhbHNlO1xuICByZXNwb25zZUxpc3RlbmVyLm9uY2UoJ2Vycm9yJywgKGUpID0+IHtcbiAgICB3cml0ZUVycm9yID0gZTtcbiAgfSk7XG4gIHJlcy5vbmNlKCdmaW5pc2gnLCAoKSA9PiB7XG4gICAgaXNSZXNwb25zZUZ1bGx5U2VudCA9IHRydWU7XG4gICAgcmVzcG9uc2VMaXN0ZW5lci5lbmQoKTtcbiAgfSk7XG4gIHJlcy5vbmNlKCdjbG9zZScsICgpID0+IHtcbiAgICBpZiAoIWlzUmVzcG9uc2VGdWxseVNlbnQpIHtcbiAgICAgIHJlc3BvbnNlTGlzdGVuZXIuZW5kKCk7XG4gICAgfVxuICB9KTtcbiAgcmVzcG9uc2VMaXN0ZW5lci5vbmNlKCdjbG9zZScsICgpID0+IHtcbiAgICBpZiAocmVzLnNvY2tldD8ud3JpdGUgPT09IHBhdGNoZWRXcml0ZXIpIHtcbiAgICAgIHJlcy5zb2NrZXQud3JpdGUgPSBvcmlnaW5hbFNvY2tldFdyaXRlcjtcbiAgICB9XG5cbiAgICBpZiAoIUlERU1QT1RFTlRfUkVTUE9OU0VTLmhhcyhrZXkpKSB7XG4gICAgICBsb2cuaW5mbyhgQ291bGQgbm90IGNhY2hlIHRoZSByZXNwb25zZSBpZGVudGlmaWVkIGJ5ICcke2tleX0nLiBgICtcbiAgICAgICAgYENhY2hlIGNvbnNpc3RlbmN5IGhhcyBiZWVuIGRhbWFnZWRgKTtcbiAgICAgIHJldHVybiByZXNwb25zZVN0YXRlTGlzdGVuZXIuZW1pdCgncmVhZHknLCBudWxsKTtcbiAgICB9XG4gICAgaWYgKHdyaXRlRXJyb3IpIHtcbiAgICAgIGxvZy5pbmZvKGBDb3VsZCBub3QgY2FjaGUgdGhlIHJlc3BvbnNlIGlkZW50aWZpZWQgYnkgJyR7a2V5fSc6ICR7d3JpdGVFcnJvci5tZXNzYWdlfWApO1xuICAgICAgSURFTVBPVEVOVF9SRVNQT05TRVMuZGVsZXRlKGtleSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2VTdGF0ZUxpc3RlbmVyLmVtaXQoJ3JlYWR5JywgbnVsbCk7XG4gICAgfVxuICAgIGlmICghaXNSZXNwb25zZUZ1bGx5U2VudCkge1xuICAgICAgbG9nLmluZm8oYENvdWxkIG5vdCBjYWNoZSB0aGUgcmVzcG9uc2UgaWRlbnRpZmllZCBieSAnJHtrZXl9JywgYCArXG4gICAgICAgIGBiZWNhdXNlIGl0IGhhcyBub3QgYmVlbiBjb21wbGV0ZWRgKTtcbiAgICAgIGxvZy5pbmZvKCdEb2VzIHRoZSBjbGllbnQgdGVybWluYXRlIGNvbm5lY3Rpb25zIHRvbyBlYXJseT8nKTtcbiAgICAgIElERU1QT1RFTlRfUkVTUE9OU0VTLmRlbGV0ZShrZXkpO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlU3RhdGVMaXN0ZW5lci5lbWl0KCdyZWFkeScsIG51bGwpO1xuICAgIH1cblxuICAgIElERU1QT1RFTlRfUkVTUE9OU0VTLmdldChrZXkpLnJlc3BvbnNlID0gdG1wRmlsZTtcbiAgICByZXNwb25zZVN0YXRlTGlzdGVuZXIuZW1pdCgncmVhZHknLCB0bXBGaWxlKTtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGhhbmRsZUlkZW1wb3RlbmN5IChyZXEsIHJlcywgbmV4dCkge1xuICBjb25zdCBrZXkgPSByZXEuaGVhZGVyc1tJREVNUE9URU5DWV9LRVlfSEVBREVSXTtcbiAgaWYgKCFrZXkpIHtcbiAgICByZXR1cm4gbmV4dCgpO1xuICB9XG4gIGlmICghTU9OSVRPUkVEX01FVEhPRFMuaW5jbHVkZXMocmVxLm1ldGhvZCkpIHtcbiAgICAvLyBHRVQsIERFTEVURSwgZXRjLiByZXF1ZXN0cyBhcmUgaWRlbXBvdGVudCBieSBkZWZhdWx0XG4gICAgLy8gdGhlcmUgaXMgbm8gbmVlZCB0byBjYWNoZSB0aGVtXG4gICAgcmV0dXJuIG5leHQoKTtcbiAgfVxuXG4gIGxvZy5kZWJ1ZyhgUmVxdWVzdCBpZGVtcG90ZW5jeSBrZXk6ICR7a2V5fWApO1xuICBpZiAoIUlERU1QT1RFTlRfUkVTUE9OU0VTLmhhcyhrZXkpKSB7XG4gICAgY2FjaGVSZXNwb25zZShrZXksIHJlcSwgcmVzKTtcbiAgICByZXR1cm4gbmV4dCgpO1xuICB9XG5cbiAgY29uc3Qge1xuICAgIG1ldGhvZDogc3RvcmVkTWV0aG9kLFxuICAgIHBhdGg6IHN0b3JlZFBhdGgsXG4gICAgcmVzcG9uc2UsXG4gICAgcmVzcG9uc2VTdGF0ZUxpc3RlbmVyLFxuICB9ID0gSURFTVBPVEVOVF9SRVNQT05TRVMuZ2V0KGtleSk7XG4gIGlmIChyZXEubWV0aG9kICE9PSBzdG9yZWRNZXRob2QgfHwgcmVxLnBhdGggIT09IHN0b3JlZFBhdGgpIHtcbiAgICBsb2cud2FybihgR290IHR3byBkaWZmZXJlbnQgcmVxdWVzdHMgd2l0aCB0aGUgc2FtZSBpZGVtcG90ZW5jeSBrZXkgJyR7a2V5fSdgKTtcbiAgICBsb2cud2FybignSXMgdGhlIGNsaWVudCBnZW5lcmF0aW5nIGlkZW1wb3RlbmN5IGtleXMgcHJvcGVybHk/Jyk7XG4gICAgcmV0dXJuIG5leHQoKTtcbiAgfVxuXG4gIGNvbnN0IHJlcm91dGVDYWNoZWRSZXNwb25zZSA9IGFzeW5jIChjYWNoZWRSZXNQYXRoKSA9PiB7XG4gICAgaWYgKCFhd2FpdCBmcy5leGlzdHMoY2FjaGVkUmVzUGF0aCkpIHtcbiAgICAgIElERU1QT1RFTlRfUkVTUE9OU0VTLmRlbGV0ZShrZXkpO1xuICAgICAgbG9nLndhcm4oYENvdWxkIG5vdCByZWFkIHRoZSBjYWNoZWQgcmVzcG9uc2UgaWRlbnRpZmllZCBieSBrZXkgJyR7a2V5fSdgKTtcbiAgICAgIGxvZy53YXJuKCdUaGUgdGVtcG9yYXJ5IHN0b3JhZ2UgaXMgbm90IGFjY2Vzc2libGUgYW55bW9yZScpO1xuICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICB9XG4gICAgZnMuY3JlYXRlUmVhZFN0cmVhbShjYWNoZWRSZXNQYXRoKS5waXBlKHJlcy5zb2NrZXQpO1xuICB9O1xuXG4gIGlmIChyZXNwb25zZSkge1xuICAgIGxvZy5pbmZvKGBUaGUgc2FtZSByZXF1ZXN0IHdpdGggdGhlIGlkZW1wb3RlbmN5IGtleSAnJHtrZXl9JyBoYXMgYmVlbiBhbHJlYWR5IHByb2Nlc3NlZGApO1xuICAgIGxvZy5pbmZvKGBSZXJvdXRpbmcgaXRzIHJlc3BvbnNlIHRvIHRoZSBjdXJyZW50IHJlcXVlc3RgKTtcbiAgICBhd2FpdCByZXJvdXRlQ2FjaGVkUmVzcG9uc2UocmVzcG9uc2UpO1xuICB9IGVsc2Uge1xuICAgIGxvZy5pbmZvKGBUaGUgc2FtZSByZXF1ZXN0IHdpdGggdGhlIGlkZW1wb3RlbmN5IGtleSAnJHtrZXl9JyBpcyBiZWluZyBwcm9jZXNzZWRgKTtcbiAgICBsb2cuaW5mbyhgV2FpdGluZyBmb3IgdGhlIHJlc3BvbnNlIHRvIGJlIHJlcm91dGVkIHRvIHRoZSBjdXJyZW50IHJlcXVlc3RgKTtcbiAgICByZXNwb25zZVN0YXRlTGlzdGVuZXIub25jZSgncmVhZHknLCBhc3luYyAoY2FjaGVkUmVzcG9uc2VQYXRoKSA9PiB7XG4gICAgICBpZiAoIWNhY2hlZFJlc3BvbnNlUGF0aCkge1xuICAgICAgICByZXR1cm4gbmV4dCgpO1xuICAgICAgfVxuICAgICAgYXdhaXQgcmVyb3V0ZUNhY2hlZFJlc3BvbnNlKGNhY2hlZFJlc3BvbnNlUGF0aCk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IHsgaGFuZGxlSWRlbXBvdGVuY3kgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQSxNQUFNQSxVQUFVLEdBQUcsSUFBbkI7QUFDQSxNQUFNQyxvQkFBb0IsR0FBRyxJQUFJQyxpQkFBSixDQUFRO0VBQ25DQyxHQUFHLEVBQUVILFVBRDhCO0VBRW5DSSxjQUFjLEVBQUUsSUFGbUI7O0VBR25DQyxPQUFPLENBQUVDLEdBQUYsRUFBTztJQUFDQztFQUFELENBQVAsRUFBbUI7SUFDeEIsSUFBSUEsUUFBSixFQUFjO01BQ1pDLFlBQUdDLFVBQUgsQ0FBY0YsUUFBZDtJQUNEO0VBQ0Y7O0FBUGtDLENBQVIsQ0FBN0I7QUFTQSxNQUFNRyxpQkFBaUIsR0FBRyxDQUFDLE1BQUQsRUFBUyxPQUFULENBQTFCO0FBQ0EsTUFBTUMsc0JBQXNCLEdBQUcsbUJBQS9CO0FBRUFDLE9BQU8sQ0FBQ0MsRUFBUixDQUFXLE1BQVgsRUFBbUIsTUFBTTtFQUN2QixNQUFNQyxRQUFRLEdBQUcsQ0FBQyxHQUFHYixvQkFBb0IsQ0FBQ2MsTUFBckIsRUFBSixFQUNkQyxHQURjLENBQ1YsQ0FBQztJQUFDVDtFQUFELENBQUQsS0FBZ0JBLFFBRE4sRUFFZFUsTUFGYyxDQUVQQyxPQUZPLENBQWpCOztFQUdBLEtBQUssTUFBTUMsT0FBWCxJ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
@@ -13,4 +13,4 @@ const log = _support.logger.getLogger('HTTP');
13
13
 
14
14
  var _default = log;
15
15
  exports.default = _default;
16
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9leHByZXNzL2xvZ2dlci5qcyJdLCJuYW1lcyI6WyJsb2ciLCJsb2dnZXIiLCJnZXRMb2dnZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUVBLE1BQU1BLEdBQUcsR0FBR0MsZ0JBQU9DLFNBQVAsQ0FBaUIsTUFBakIsQ0FBWjs7ZUFDZUYsRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGxvZ2dlciB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5cbmNvbnN0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ0hUVFAnKTtcbmV4cG9ydCBkZWZhdWx0IGxvZztcbiJdfQ==
16
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2ciLCJsb2dnZXIiLCJnZXRMb2dnZXIiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZXhwcmVzcy9sb2dnZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcblxuY29uc3QgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignSFRUUCcpO1xuZXhwb3J0IGRlZmF1bHQgbG9nO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFFQSxNQUFNQSxHQUFHLEdBQUdDLGdCQUFPQyxTQUFQLENBQWlCLE1BQWpCLENBQVo7O2VBQ2VGLEcifQ==
@@ -123,4 +123,4 @@ function patchWithSessionId(req, body) {
123
123
 
124
124
  return body;
125
125
  }
126
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9leHByZXNzL21pZGRsZXdhcmUuanMiXSwibmFtZXMiOlsiYWxsb3dDcm9zc0RvbWFpbiIsInJlcSIsInJlcyIsIm5leHQiLCJoZWFkZXIiLCJtZXRob2QiLCJzZW5kU3RhdHVzIiwiZXJyIiwibG9nIiwiZXJyb3IiLCJzdGFjayIsImFsbG93Q3Jvc3NEb21haW5Bc3luY0V4ZWN1dGUiLCJiYXNlUGF0aCIsInJlY2VpdmVBc3luY1Jlc3BvbnNlUmVnRXhwIiwiUmVnRXhwIiwiXyIsImVzY2FwZVJlZ0V4cCIsInRlc3QiLCJ1cmwiLCJmaXhQeXRob25Db250ZW50VHlwZSIsInBhdGgiLCJoZWFkZXJzIiwiZGVmYXVsdFRvSlNPTkNvbnRlbnRUeXBlIiwiY2F0Y2hBbGxIYW5kbGVyIiwiaGVhZGVyc1NlbnQiLCJtZXNzYWdlIiwiZXJyb3JzIiwiVW5rbm93bkVycm9yIiwic3RhdHVzIiwidzNjU3RhdHVzIiwianNvbiIsInBhdGNoV2l0aFNlc3Npb25JZCIsImNvZGUiLCJ2YWx1ZSIsInN0YWNrdHJhY2UiLCJjYXRjaDQwNEhhbmRsZXIiLCJkZWJ1ZyIsIlVua25vd25Db21tYW5kRXJyb3IiLCJTRVNTSU9OX0lEX1BBVFRFUk4iLCJib2R5IiwibWF0Y2giLCJleGVjIiwic2Vzc2lvbklkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsU0FBU0EsZ0JBQVQsQ0FBMkJDLEdBQTNCLEVBQWdDQyxHQUFoQyxFQUFxQ0MsSUFBckMsRUFBMkM7QUFDekMsTUFBSTtBQUNGRCxJQUFBQSxHQUFHLENBQUNFLE1BQUosQ0FBVyw2QkFBWCxFQUEwQyxHQUExQztBQUNBRixJQUFBQSxHQUFHLENBQUNFLE1BQUosQ0FBVyw4QkFBWCxFQUEyQyxpQ0FBM0M7QUFDQUYsSUFBQUEsR0FBRyxDQUFDRSxNQUFKLENBQVcsOEJBQVgsRUFBMkMsbUZBQTNDOztBQUdBLFFBQUksY0FBY0gsR0FB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QUFTNEIsZUFBVCxDQUEwQmxDLEdBQTFCLEVBQStCQyxHQUEvQixFQUFvQztBQUNsQ00sa0JBQUk0QixLQUFKLENBQVcsc0JBQXFCbkMsR0FBRyxDQUFDaUIsR0FBSSxFQUF4Qzs7QUFDQSxRQUFNVCxLQUFLLEdBQUdpQixpQkFBT1csbUJBQXJCO0FBQ0FuQyxFQUFBQSxHQUFHLENBQUMwQixNQUFKLENBQVduQixLQUFLLENBQUNvQixTQUFOLEVBQVgsRUFBOEJDLElBQTlCLENBQW1DQyxrQkFBa0IsQ0FBQzlCLEdBQUQsRUFBTTtBQUN6RDJCLElBQUFBLE1BQU0sRUFBRW5CLEtBQUssQ0FBQ3VCLElBQU4sRUFEaUQ7QUFFekRDLElBQUFBLEtBQUssRUFBRTtBQUNMeEIsTUFBQUEsS0FBSyxFQUFFQSxLQUFLLENBQUNBLEtBQU4sRUFERjtBQUVMZ0IsTUFBQUEsT0FBTyxFQUFFLGlFQUNQLG9FQURPLEdBRVAsVUFKRztBQUtMUyxNQUFBQSxVQUFVLEVBQUU7QUFMUDtBQUZrRCxHQUFOLENBQXJEO0FBVUQ7O0FBR0QsTUFBTUksa0JBQWtCLEdBQUcsb0JBQTNCOztBQUVBLFNBQVNQLGtCQUFULENBQTZCOUIsR0FBN0IsRUFBa0NzQyxJQUFsQyxFQUF3QztBQUN0QyxRQUFNQyxLQUFLLEdBQUdGLGtCQUFrQixDQUFDRyxJQUFuQixDQUF3QnhDLEdBQUcsQ0FBQ2lCLEdBQTVCLENBQWQ7O0FBQ0EsTUFBSXNCLEtBQUosRUFBVztBQUNURCxJQUFBQSxJQUFJLENBQUNHLFNBQUwsR0FBaUJGLEtBQUssQ0FBQyxDQUFELENBQXRCO0FBQ0Q7O0FBQ0QsU0FBT0QsSUFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnLi4vcHJvdG9jb2wnO1xuaW1wb3J0IHsgaGFuZGxlSWRlbXBvdGVuY3kgfSBmcm9tICcuL2lkZW1wb3RlbmN5JztcblxuZnVuY3Rpb24gYWxsb3dDcm9zc0RvbWFpbiAocmVxLCByZXMsIG5leHQpIHtcbiAgdHJ5IHtcbiAgICByZXMuaGVhZGVyKCdBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4nLCAnKicpO1xuICAgIHJlcy5oZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMnLCAnR0VULCBQT1NULCBQVVQsIE9QVElPTlMsIERFTEVURScpO1xuICAgIHJlcy5oZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMnLCAnQ2FjaGUtQ29udHJvbCwgUHJhZ21hLCBPcmlnaW4sIFgtUmVxdWVzdGVkLVdpdGgsIENvbnRlbnQtVHlwZSwgQWNjZXB0LCBVc2VyLUFnZW50Jyk7XG5cbiAgICAvLyBuZWVkIHRvIHJlc3BvbmQgMjAwIHRvIE9QVElPTlNcbiAgICBpZiAoJ09QVElPTlMnID09PSByZXEubWV0aG9kKSB7XG4gICAgICByZXR1cm4gcmVzLnNlbmRTdGF0dXMoMjAwKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZy5lcnJvcihgVW5leHBlY3RlZCBlcnJvcjogJHtlcnIuc3RhY2t9YCk7XG4gIH1cbiAgbmV4dCgpO1xufVxuXG5mdW5jdGlvbiBhbGxvd0Nyb3NzRG9tYWluQXN5bmNFeGVjdXRlIChiYXNlUGF0aCkge1xuICByZXR1cm4gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgLy8gdGhlcmUgYXJlIHR3byBwYXRocyBmb3IgYXN5bmMgcmVzcG9uc2VzLCBzbyBjb3ZlciBib3RoXG4gICAgLy8gaHR0cHM6Ly9yZWdleDEwMS5jb20vci90eFlpRXovMVxuICAgIGNvbnN0IHJlY2VpdmVBc3luY1Jlc3BvbnNlUmVnRXhwID0gbmV3IFJlZ0V4cChgJHtfLmVzY2FwZVJlZ0V4cChiYXNlUGF0aCl9L3Nlc3Npb24vW2EtZjAtOS1dKy8oYXBwaXVtLyk/cmVjZWl2ZV9hc3luY19yZXNwb25zZWApO1xuICAgIGlmICghcmVjZWl2ZUFzeW5jUmVzcG9uc2VSZWdFeHAudGVzdChyZXEudXJsKSkge1xuICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICB9XG4gICAgYWxsb3dDcm9zc0RvbWFpbihyZXEsIHJlcywgbmV4dCk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGZpeFB5dGhvbkNvbnRlbnRUeXBlIChiYXNlUGF0aCkge1xuICByZXR1cm4gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgLy8gaGFjayBiZWNhdXNlIHB5dGhvbiBjbGllbnQgbGlicmFyeSBnaXZlcyB1cyB3cm9uZyBjb250ZW50LXR5cGVcbiAgICBpZiAobmV3IFJlZ0V4cChgXiR7Xy5lc2NhcGVSZWdFeHAoYmFzZVBhdGgpfWApLnRlc3QocmVxLnBhdGgpICYmIC9eUHl0aG9uLy50ZXN0KHJlcS5oZWFkZXJzWyd1c2VyLWFnZW50J10pKSB7XG4gICAgICBpZiAocmVxLmhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddID09PSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJykge1xuICAgICAgICByZXEuaGVhZGVyc1snY29udGVudC10eXBlJ10gPSAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCc7XG4gICAgICB9XG4gICAgfVxuICAgIG5leHQoKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdFRvSlNPTkNvbnRlbnRUeXBlIChyZXEsIHJlcywgbmV4dCkge1xuICBpZiAoIXJlcS5oZWFkZXJzWydjb250ZW50LXR5cGUnXSkge1xuICAgIHJlcS5oZWFkZXJzWydjb250ZW50LXR5cGUnXSA9ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04JztcbiAgfVxuICBuZXh0KCk7XG59XG5cbmZ1bmN0aW9uIGNhdGNoQWxsSGFuZGxlciAoZXJyLCByZXEsIHJlcywgbmV4dCkge1xuICBpZiAocmVzLmhlYWRlcnNTZW50KSB7XG4gICAgcmV0dXJuIG5leHQoZXJyKTtcbiAgfVxuXG4gIGxvZy5lcnJvcihgVW5jYXVnaHQgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIGxvZy5lcnJvcignU2VuZGluZyBnZW5lcmljIGVycm9yIHJlc3BvbnNlJyk7XG4gIGNvbnN0IGVycm9yID0gZXJyb3JzLlVua25vd25FcnJvcjtcbiAgcmVzLnN0YXR1cyhlcnJvci53M2NTdGF0dXMoKSkuanNvbihwYXRjaFdpdGhTZXNzaW9uSWQocmVxLCB7XG4gICAgc3RhdHVzOiBlcnJvci5jb2RlKCksXG4gICAgdmFsdWU6IHtcbiAgICAgIGVycm9yOiBlcnJvci5lcnJvcigpLFxuICAgICAgbWVzc2FnZTogYEFuIHVua25vd24gc2VydmVyLXNpZGUgZXJyb3Igb2NjdXJyZWQgd2hpbGUgcHJvY2Vzc2luZyB0aGUgY29tbWFuZDogJHtlcnIubWVzc2FnZX1gLFxuICAgICAgc3RhY2t0cmFjZTogZXJyLnN0YWNrLFxuICAgIH1cbiAgfSkpO1xuICBsb2cuZXJyb3IoZXJyKTtcbn1cblxuZnVuY3Rpb24gY2F0Y2g0MDRIYW5kbGVyIChyZXEsIHJlcykge1xuICBsb2cuZGVidWcoYE5vIHJvdXRlIGZvdW5kIGZvciAke3JlcS51cmx9YCk7XG4gIGNvbnN0IGVycm9yID0gZXJyb3JzLlVua25vd25Db21tYW5kRXJyb3I7XG4gIHJlcy5zdGF0dXMoZXJyb3IudzNjU3RhdHVzKCkpLmpzb24ocGF0Y2hXaXRoU2Vzc2lvbklkKHJlcSwge1xuICAgIHN0YXR1czogZXJyb3IuY29kZSgpLFxuICAgIHZhbHVlOiB7XG4gICAgICBlcnJvcjogZXJyb3IuZXJyb3IoKSxcbiAgICAgIG1lc3NhZ2U6ICdUaGUgcmVxdWVzdGVkIHJlc291cmNlIGNvdWxkIG5vdCBiZSBmb3VuZCwgb3IgYSByZXF1ZXN0IHdhcyAnICtcbiAgICAgICAgJ3JlY2VpdmVkIHVzaW5nIGFuIEhUVFAgbWV0aG9kIHRoYXQgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgbWFwcGVkICcgK1xuICAgICAgICAncmVzb3VyY2UnLFxuICAgICAgc3RhY2t0cmFjZTogJycsXG4gICAgfVxuICB9KSk7XG59XG5cblxuY29uc3QgU0VTU0lPTl9JRF9QQVRURVJOID0gL1xcL3Nlc3Npb25cXC8oW14vXSspLztcblxuZnVuY3Rpb24gcGF0Y2hXaXRoU2Vzc2lvbklkIChyZXEsIGJvZHkpIHtcbiAgY29uc3QgbWF0Y2ggPSBTRVNTSU9OX0lEX1BBVFRFUk4uZXhlYyhyZXEudXJsKTtcbiAgaWYgKG1hdGNoKSB7XG4gICAgYm9keS5zZXNzaW9uSWQgPSBtYXRjaFsxXTtcbiAgfVxuICByZXR1cm4gYm9keTtcbn1cblxuZXhwb3J0IHtcbiAgYWxsb3dDcm9zc0RvbWFpbiwgZml4UHl0aG9uQ29udGVudFR5cGUsIGRlZmF1bHRUb0pTT05Db250ZW50VHlwZSxcbiAgY2F0Y2hBbGxIYW5kbGVyLCBhbGxvd0Nyb3NzRG9tYWluQXN5bmNFeGVjdXRlLCBoYW5kbGVJZGVtcG90ZW5jeSxcbiAgY2F0Y2g0MDRIYW5kbGVyLFxufTtcbiJdfQ==
126
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhbGxvd0Nyb3NzRG9tYWluIiwicmVxIiwicmVzIiwibmV4dCIsImhlYWRlciIsIm1ldGhvZCIsInNlbmRTdGF0dXMiLCJlcnIiLCJsb2ciLCJlcnJvciIsInN0YWNrIiwiYWxsb3dDcm9zc0RvbWFpbkFzeW5jRXhlY3V0ZSIsImJhc2VQYXRoIiwicmVjZWl2ZUFzeW5jUmVzcG9uc2VSZWdFeHAiLCJSZWdFeHAiLCJfIiwiZXNjYXBlUmVnRXhwIiwidGVzdCIsInVybCIsImZpeFB5dGhvbkNvbnRlbnRUeXBlIiwicGF0aCIsImhlYWRlcnMiLCJkZWZhdWx0VG9KU09OQ29udGVudFR5cGUiLCJjYXRjaEFsbEhhbmRsZXIiLCJoZWFkZXJzU2VudCIsIm1lc3NhZ2UiLCJlcnJvcnMiLCJVbmtub3duRXJyb3IiLCJzdGF0dXMiLCJ3M2NTdGF0dXMiLCJqc29uIiwicGF0Y2hXaXRoU2Vzc2lvbklkIiwiY29kZSIsInZhbHVlIiwic3RhY2t0cmFjZSIsImNhdGNoNDA0SGFuZGxlciIsImRlYnVnIiwiVW5rbm93bkNvbW1hbmRFcnJvciIsIlNFU1NJT05fSURfUEFUVEVSTiIsImJvZHkiLCJtYXRjaCIsImV4ZWMiLCJzZXNzaW9uSWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZXhwcmVzcy9taWRkbGV3YXJlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJy4uL3Byb3RvY29sJztcbmltcG9ydCB7IGhhbmRsZUlkZW1wb3RlbmN5IH0gZnJvbSAnLi9pZGVtcG90ZW5jeSc7XG5cbmZ1bmN0aW9uIGFsbG93Q3Jvc3NEb21haW4gKHJlcSwgcmVzLCBuZXh0KSB7XG4gIHRyeSB7XG4gICAgcmVzLmhlYWRlcignQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luJywgJyonKTtcbiAgICByZXMuaGVhZGVyKCdBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzJywgJ0dFVCwgUE9TVCwgUFVULCBPUFRJT05TLCBERUxFVEUnKTtcbiAgICByZXMuaGVhZGVyKCdBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzJywgJ0NhY2hlLUNvbnRyb2wsIFByYWdtYSwgT3JpZ2luLCBYLVJlcXVlc3RlZC1XaXRoLCBDb250ZW50LVR5cGUsIEFjY2VwdCwgVXNlci1BZ2VudCcpO1xuXG4gICAgLy8gbmVlZCB0byByZXNwb25kIDIwMCB0byBPUFRJT05TXG4gICAgaWYgKCdPUFRJT05TJyA9PT0gcmVxLm1ldGhvZCkge1xuICAgICAgcmV0dXJuIHJlcy5zZW5kU3RhdHVzKDIwMCk7XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2cuZXJyb3IoYFVuZXhwZWN0ZWQgZXJyb3I6ICR7ZXJyLnN0YWNrfWApO1xuICB9XG4gIG5leHQoKTtcbn1cblxuZnVuY3Rpb24gYWxsb3dDcm9zc0RvbWFpbkFzeW5jRXhlY3V0ZSAoYmFzZVBhdGgpIHtcbiAgcmV0dXJuIChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIC8vIHRoZXJlIGFyZSB0d28gcGF0aHMgZm9yIGFzeW5jIHJlc3BvbnNlcywgc28gY292ZXIgYm90aFxuICAgIC8vIGh0dHBzOi8vcmVnZXgxMDEuY29tL3IvdHhZaUV6LzFcbiAgICBjb25zdCByZWNlaXZlQXN5bmNSZXNwb25zZVJlZ0V4cCA9IG5ldyBSZWdFeHAoYCR7Xy5lc2NhcGVSZWdFeHAoYmFzZVBhdGgpfS9zZXNzaW9uL1thLWYwLTktXSsvKGFwcGl1bS8pP3JlY2VpdmVfYXN5bmNfcmVzcG9uc2VgKTtcbiAgICBpZiAoIXJlY2VpdmVBc3luY1Jlc3BvbnNlUmVnRXhwLnRlc3QocmVxLnVybCkpIHtcbiAgICAgIHJldHVybiBuZXh0KCk7XG4gICAgfVxuICAgIGFsbG93Q3Jvc3NEb21haW4ocmVxLCByZXMsIG5leHQpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBmaXhQeXRob25Db250ZW50VHlwZSAoYmFzZVBhdGgpIHtcbiAgcmV0dXJuIChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIC8vIGhhY2sgYmVjYXVzZSBweXRob24gY2xpZW50IGxpYnJhcnkgZ2l2ZXMgdXMgd3JvbmcgY29udGVudC10eXBlXG4gICAgaWYgKG5ldyBSZWdFeHAoYF4ke18uZXNjYXBlUmVnRXhwKGJhc2VQYXRoKX1gKS50ZXN0KHJlcS5wYXRoKSAmJiAvXlB5dGhvbi8udGVzdChyZXEuaGVhZGVyc1sndXNlci1hZ2VudCddKSkge1xuICAgICAgaWYgKHJlcS5oZWFkZXJzWydjb250ZW50LXR5cGUnXSA9PT0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcpIHtcbiAgICAgICAgcmVxLmhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddID0gJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgnO1xuICAgICAgfVxuICAgIH1cbiAgICBuZXh0KCk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRUb0pTT05Db250ZW50VHlwZSAocmVxLCByZXMsIG5leHQpIHtcbiAgaWYgKCFyZXEuaGVhZGVyc1snY29udGVudC10eXBlJ10pIHtcbiAgICByZXEuaGVhZGVyc1snY29udGVudC10eXBlJ10gPSAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCc7XG4gIH1cbiAgbmV4dCgpO1xufVxuXG5mdW5jdGlvbiBjYXRjaEFsbEhhbmRsZXIgKGVyciwgcmVxLCByZXMsIG5leHQpIHtcbiAgaWYgKHJlcy5oZWFkZXJzU2VudCkge1xuICAgIHJldHVybiBuZXh0KGVycik7XG4gIH1cblxuICBsb2cuZXJyb3IoYFVuY2F1Z2h0IGVycm9yOiAke2Vyci5tZXNzYWdlfWApO1xuICBsb2cuZXJyb3IoJ1NlbmRpbmcgZ2VuZXJpYyBlcnJvciByZXNwb25zZScpO1xuICBjb25zdCBlcnJvciA9IGVycm9ycy5Vbmtub3duRXJyb3I7XG4gIHJlcy5zdGF0dXMoZXJyb3IudzNjU3RhdHVzKCkpLmpzb24ocGF0Y2hXaXRoU2Vzc2lvbklkKHJlcSwge1xuICAgIHN0YXR1czogZXJyb3IuY29kZSgpLFxuICAgIHZhbHVlOiB7XG4gICAgICBlcnJvcjogZXJyb3IuZXJyb3IoKSxcbiAgICAgIG1lc3NhZ2U6IGBBbiB1bmtub3duIHNlcnZlci1zaWRlIGVycm9yIG9jY3VycmVkIHdoaWxlIHByb2Nlc3NpbmcgdGhlIGNvbW1hbmQ6ICR7ZXJyLm1lc3NhZ2V9YCxcbiAgICAgIHN0YWNrdHJhY2U6IGVyci5zdGFjayxcbiAgICB9XG4gIH0pKTtcbiAgbG9nLmVycm9yKGVycik7XG59XG5cbmZ1bmN0aW9uIGNhdGNoNDA0SGFuZGxlciAocmVxLCByZXMpIHtcbiAgbG9nLmRlYnVnKGBObyByb3V0ZSBmb3VuZCBmb3IgJHtyZXEudXJsfWApO1xuICBjb25zdCBlcnJvciA9IGVycm9ycy5Vbmtub3duQ29tbWFuZEVycm9yO1xuICByZXMuc3RhdHVzKGVycm9yLnczY1N0YXR1cygpKS5qc29uKHBhdGNoV2l0aFNlc3Npb25JZChyZXEsIHtcbiAgICBzdGF0dXM6IGVycm9yLmNvZGUoKSxcbiAgICB2YWx1ZToge1xuICAgICAgZXJyb3I6IGVycm9yLmVycm9yKCksXG4gICAgICBtZXNzYWdlOiAnVGhlIHJlcXVlc3RlZCByZXNvdXJjZSBjb3VsZCBub3QgYmUgZm91bmQsIG9yIGEgcmVxdWVzdCB3YXMgJyArXG4gICAgICAgICdyZWNlaXZlZCB1c2luZyBhbiBIVFRQIG1ldGhvZCB0aGF0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIG1hcHBlZCAnICtcbiAgICAgICAgJ3Jlc291cmNlJyxcbiAgICAgIHN0YWNrdHJhY2U6ICcnLFxuICAgIH1cbiAgfSkpO1xufVxuXG5cbmNvbnN0IFNFU1NJT05fSURfUEFUVEVSTiA9IC9cXC9zZXNzaW9uXFwvKFteL10rKS87XG5cbmZ1bmN0aW9uIHBhdGNoV2l0aFNlc3Npb25JZCAocmVxLCBib2R5KSB7XG4gIGNvbnN0IG1hdGNoID0gU0VTU0lPTl9JRF9QQVRURVJOLmV4ZWMocmVxLnVybCk7XG4gIGlmIChtYXRjaCkge1xuICAgIGJvZHkuc2Vzc2lvbklkID0gbWF0Y2hbMV07XG4gIH1cbiAgcmV0dXJuIGJvZHk7XG59XG5cbmV4cG9ydCB7XG4gIGFsbG93Q3Jvc3NEb21haW4sIGZpeFB5dGhvbkNvbnRlbnRUeXBlLCBkZWZhdWx0VG9KU09OQ29udGVudFR5cGUsXG4gIGNhdGNoQWxsSGFuZGxlciwgYWxsb3dDcm9zc0RvbWFpbkFzeW5jRXhlY3V0ZSwgaGFuZGxlSWRlbXBvdGVuY3ksXG4gIGNhdGNoNDA0SGFuZGxlcixcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxTQUFTQSxnQkFBVCxDQUEyQkMsR0FBM0IsRUFBZ0NDLEdBQWhDLEVBQXFDQyxJQUFyQyxFQUEyQztFQUN6QyxJQUFJO0lBQ0ZELEdBQUcsQ0FBQ0UsTUFBSixDQUFXLDZCQUFYLEVBQTBDLEdBQTFDO0lBQ0FGLEdBQUcsQ0FBQ0UsTUFBSixDQUFXLDhCQUFYLEVBQTJDLGlDQUEzQztJQUNBRixHQUFHLENBQUNFLE1BQUosQ0FBVyw4QkFBWCxFQUEyQyxtRkFBM0M7O0lBR0EsSUFBSSxjQUFjSCxHQUFHLENBQUNJLE1BQXRCLEVBQThCO01BQzVCLE9BQU9ILEdBQUcsQ0FBQ0ksVUFBSixDQUFlLEdBQWYsQ0FBUDtJQUNEO0VBQ0YsQ0FURCxDQVNFLE9BQU9DLEdBQVAsRUFBWTtJQUNaQyxnQkFBSUMsS0FBSixDQUFXLHFCQUFvQkYsR0FBRyxDQUFDRyxLQUFNLEVBQXpDO0VBQ0Q7O0VBQ0RQLElBQUk7QUFDTDs7QUFFRCxTQUFTUSw0QkFBVCxDQUF1Q0MsUUFBdkMsRUFBaUQ7RUFDL0MsT0FBTyxDQUFDWCxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtJQUd6QixNQUFNVSwwQkFBMEIsR0FBRyxJQUFJQyxNQUFKLENBQVksR0FBRUMsZ0JBQUVDLFlBQUYsQ0FBZUosUUFBZixDQUF5QixzREFBdkMsQ0FBbkM7O0lBQ0EsSUFBSSxDQUFDQywwQkFBMEIsQ0FBQ0ksSUFBM0Is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