@appium/base-driver 8.5.2 → 8.5.5

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 (141) hide show
  1. package/build/lib/basedriver/capabilities.d.ts.map +1 -1
  2. package/build/lib/basedriver/capabilities.js +1 -1
  3. package/build/lib/basedriver/commands/event.js +1 -1
  4. package/build/lib/basedriver/commands/find.d.ts.map +1 -1
  5. package/build/lib/basedriver/commands/find.js +1 -1
  6. package/build/lib/basedriver/commands/index.js +1 -1
  7. package/build/lib/basedriver/commands/log.d.ts.map +1 -1
  8. package/build/lib/basedriver/commands/log.js +1 -1
  9. package/build/lib/basedriver/commands/session.js +1 -1
  10. package/build/lib/basedriver/commands/settings.d.ts.map +1 -1
  11. package/build/lib/basedriver/commands/settings.js +1 -1
  12. package/build/lib/basedriver/commands/timeout.d.ts.map +1 -1
  13. package/build/lib/basedriver/commands/timeout.js +1 -1
  14. package/build/lib/basedriver/core.d.ts +120 -139
  15. package/build/lib/basedriver/core.d.ts.map +1 -1
  16. package/build/lib/basedriver/core.js +1 -49
  17. package/build/lib/basedriver/desired-caps.d.ts +5 -2
  18. package/build/lib/basedriver/desired-caps.d.ts.map +1 -1
  19. package/build/lib/basedriver/desired-caps.js +14 -18
  20. package/build/lib/basedriver/device-settings.d.ts +9 -9
  21. package/build/lib/basedriver/device-settings.d.ts.map +1 -1
  22. package/build/lib/basedriver/device-settings.js +4 -4
  23. package/build/lib/basedriver/driver.d.ts +43 -38
  24. package/build/lib/basedriver/driver.d.ts.map +1 -1
  25. package/build/lib/basedriver/driver.js +58 -11
  26. package/build/lib/basedriver/helpers.d.ts +8 -3
  27. package/build/lib/basedriver/helpers.d.ts.map +1 -1
  28. package/build/lib/basedriver/helpers.js +4 -6
  29. package/build/lib/basedriver/logger.d.ts +1 -1
  30. package/build/lib/basedriver/logger.d.ts.map +1 -1
  31. package/build/lib/basedriver/logger.js +1 -1
  32. package/build/lib/constants.js +1 -1
  33. package/build/lib/express/crash.d.ts.map +1 -1
  34. package/build/lib/express/crash.js +1 -1
  35. package/build/lib/express/express-logging.d.ts.map +1 -1
  36. package/build/lib/express/express-logging.js +1 -1
  37. package/build/lib/express/idempotency.js +1 -1
  38. package/build/lib/express/logger.d.ts +1 -1
  39. package/build/lib/express/logger.d.ts.map +1 -1
  40. package/build/lib/express/logger.js +1 -1
  41. package/build/lib/express/middleware.d.ts.map +1 -1
  42. package/build/lib/express/middleware.js +1 -1
  43. package/build/lib/express/server.d.ts +21 -0
  44. package/build/lib/express/server.d.ts.map +1 -1
  45. package/build/lib/express/server.js +4 -9
  46. package/build/lib/express/static.d.ts.map +1 -1
  47. package/build/lib/express/static.js +2 -2
  48. package/build/lib/express/websocket.d.ts +14 -11
  49. package/build/lib/express/websocket.d.ts.map +1 -1
  50. package/build/lib/express/websocket.js +2 -2
  51. package/build/lib/helpers/capabilities.d.ts.map +1 -1
  52. package/build/lib/helpers/capabilities.js +1 -1
  53. package/build/lib/index.d.ts +2 -1
  54. package/build/lib/index.js +7 -1
  55. package/build/lib/jsonwp-proxy/protocol-converter.d.ts.map +1 -1
  56. package/build/lib/jsonwp-proxy/protocol-converter.js +2 -2
  57. package/build/lib/jsonwp-proxy/proxy.d.ts +30 -5
  58. package/build/lib/jsonwp-proxy/proxy.d.ts.map +1 -1
  59. package/build/lib/jsonwp-proxy/proxy.js +20 -4
  60. package/build/lib/jsonwp-status/status.d.ts.map +1 -1
  61. package/build/lib/jsonwp-status/status.js +2 -2
  62. package/build/lib/protocol/errors.d.ts +17 -8
  63. package/build/lib/protocol/errors.d.ts.map +1 -1
  64. package/build/lib/protocol/errors.js +9 -5
  65. package/build/lib/protocol/helpers.js +1 -1
  66. package/build/lib/protocol/index.js +1 -1
  67. package/build/lib/protocol/protocol.d.ts.map +1 -1
  68. package/build/lib/protocol/protocol.js +1 -1
  69. package/build/lib/protocol/routes.d.ts +17 -3
  70. package/build/lib/protocol/routes.d.ts.map +1 -1
  71. package/build/lib/protocol/routes.js +1 -1
  72. package/build/lib/protocol/validators.js +1 -1
  73. package/build/test/basedriver/driver-e2e-tests.js +1 -1
  74. package/build/test/basedriver/driver-tests.js +1 -1
  75. package/build/test/basedriver/index.js +1 -1
  76. package/build/test/e2e/basedriver/driver.e2e.spec.js +1 -1
  77. package/build/test/e2e/basedriver/helpers.e2e.spec.js +1 -1
  78. package/build/test/e2e/basedriver/websockets.e2e.spec.js +1 -1
  79. package/build/test/e2e/express/server.e2e.spec.js +1 -1
  80. package/build/test/e2e/jsonwp-proxy/proxy.e2e.spec.js +1 -1
  81. package/build/test/e2e/protocol/fake-driver.js +1 -1
  82. package/build/test/e2e/protocol/helpers.js +1 -1
  83. package/build/test/e2e/protocol/protocol.e2e.spec.js +13 -13
  84. package/build/test/helpers.js +1 -1
  85. package/build/test/unit/basedriver/capabilities.spec.js +12 -12
  86. package/build/test/unit/basedriver/capability.spec.js +15 -15
  87. package/build/test/unit/basedriver/commands/event.spec.js +1 -1
  88. package/build/test/unit/basedriver/commands/log.spec.js +1 -1
  89. package/build/test/unit/basedriver/device-settings.spec.js +1 -1
  90. package/build/test/unit/basedriver/driver.spec.js +1 -1
  91. package/build/test/unit/basedriver/helpers.spec.js +33 -33
  92. package/build/test/unit/basedriver/timeout.spec.js +1 -1
  93. package/build/test/unit/express/server.spec.js +1 -1
  94. package/build/test/unit/express/static.spec.js +2 -2
  95. package/build/test/unit/jsonwp-proxy/mock-request.js +1 -1
  96. package/build/test/unit/jsonwp-proxy/protocol-converter.spec.js +1 -1
  97. package/build/test/unit/jsonwp-proxy/proxy.spec.js +2 -2
  98. package/build/test/unit/jsonwp-proxy/url.spec.js +1 -1
  99. package/build/test/unit/jsonwp-status/status.spec.js +1 -1
  100. package/build/test/unit/protocol/errors.spec.js +1 -1
  101. package/build/test/unit/protocol/routes.spec.js +1 -1
  102. package/build/test/unit/protocol/validator.spec.js +1 -1
  103. package/build/tsconfig.tsbuildinfo +1 -1
  104. package/lib/basedriver/capabilities.js +95 -47
  105. package/lib/basedriver/commands/event.js +4 -4
  106. package/lib/basedriver/commands/find.js +12 -26
  107. package/lib/basedriver/commands/index.js +7 -7
  108. package/lib/basedriver/commands/log.js +5 -7
  109. package/lib/basedriver/commands/session.js +3 -3
  110. package/lib/basedriver/commands/settings.js +3 -5
  111. package/lib/basedriver/commands/timeout.js +18 -23
  112. package/lib/basedriver/core.js +150 -229
  113. package/lib/basedriver/desired-caps.js +30 -29
  114. package/lib/basedriver/device-settings.js +21 -20
  115. package/lib/basedriver/driver.js +131 -96
  116. package/lib/basedriver/helpers.js +124 -81
  117. package/lib/basedriver/logger.js +1 -1
  118. package/lib/constants.js +2 -6
  119. package/lib/express/crash.js +4 -6
  120. package/lib/express/express-logging.js +26 -24
  121. package/lib/express/idempotency.js +16 -16
  122. package/lib/express/logger.js +1 -1
  123. package/lib/express/middleware.js +49 -33
  124. package/lib/express/server.js +68 -44
  125. package/lib/express/static.js +11 -12
  126. package/lib/express/websocket.js +26 -16
  127. package/lib/helpers/capabilities.js +11 -16
  128. package/lib/index.js +50 -33
  129. package/lib/jsonwp-proxy/protocol-converter.js +85 -69
  130. package/lib/jsonwp-proxy/proxy.js +116 -53
  131. package/lib/jsonwp-status/status.js +36 -29
  132. package/lib/protocol/errors.js +469 -292
  133. package/lib/protocol/helpers.js +5 -8
  134. package/lib/protocol/index.js +22 -15
  135. package/lib/protocol/protocol.js +103 -55
  136. package/lib/protocol/routes.js +430 -273
  137. package/lib/protocol/validators.js +5 -5
  138. package/package.json +9 -11
  139. package/test/basedriver/driver-e2e-tests.js +92 -66
  140. package/test/basedriver/driver-tests.js +90 -33
  141. package/test/basedriver/index.js +1 -1
@@ -569,4 +569,4 @@ function baseDriverUnitTests(DriverClass, defaultCaps = {}) {
569
569
 
570
570
  var _default = baseDriverUnitTests;
571
571
  exports.default = _default;
572
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvYmFzZWRyaXZlci9kcml2ZXItdGVzdHMuanMiXSwibmFtZXMiOlsiYmFzZURyaXZlclVuaXRUZXN0cyIsIkRyaXZlckNsYXNzIiwiZGVmYXVsdENhcHMiLCJjbGFzc05hbWUiLCJuYW1lIiwiZGVzY3JpYmUiLCJpdCIsImJhc2VWZXJzaW9uIiwic2hvdWxkIiwiZXhpc3QiLCJkIiwicHJldmlvdXNQcmVmaXgiLCJsb2ciLCJwcmVmaXgiLCJjcmVhdGVTZXNzaW9uIiwiYWx3YXlzTWF0Y2giLCJPYmplY3QiLCJhc3NpZ24iLCJwbGF0Zm9ybU5hbWUiLCJmaXJzdE1hdGNoIiwibm90IiwiZXFsIiwiZGVsZXRlU2Vzc2lvbiIsInczY0NhcHMiLCJzYW5kYm94IiwiYmVmb3JlRWFjaCIsImFmdGVyRWFjaCIsInJlc3RvcmUiLCJzdGF0dXMiLCJnZXRTdGF0dXMiLCJzZXNzSWQiLCJiZSIsImEiLCJsZW5ndGgiLCJhYm92ZSIsIl8iLCJjbG9uZURlZXAiLCJldmVudHVhbGx5IiwicmVqZWN0ZWRXaXRoIiwic2Vzc2lvbklkMSIsImVxdWFsIiwic2Vzc2lvbklkIiwic2Vzc2lvbklkMiIsImNhcHMiLCJnZXRTZXNzaW9uIiwic2Vzc2lvbnMiLCJnZXRTZXNzaW9ucyIsImNsb25lIiwiaW5jbHVkZSIsImlkIiwiY2FwYWJpbGl0aWVzIiwiZGV2aWNlTmFtZSIsIkIiLCJkZWxheSIsImJpbmQiLCJjbWRQcm9taXNlIiwiZXhlY3V0ZUNvbW1hbmQiLCJwIiwicmVzb2x2ZSIsInJlamVjdCIsInNldFRpbWVvdXQiLCJFcnJvciIsIm9uVW5leHBlY3RlZFNodXRkb3duIiwic3RhcnRVbmV4cGVjdGVkU2h1dGRvd24iLCJvbGREZWxldGVTZXNzaW9uIiwicHJvdG9jb2wiLCJkcml2ZXJGb3JTZXNzaW9uIiwid2FpdE1zIiwiRGF0ZSIsIm5vdyIsImNsZWFyTmV3Q29tbWFuZFRpbWVvdXQiLCJudW1DbWRzIiwiY21kcyIsImkiLCJwdXNoIiwicmVzdWx0cyIsImFsbCIsInNldHRsZSIsInZhbHVlIiwicmVhc29uIiwibWVzc2FnZSIsImNvbnRhaW4iLCJiZWZvcmUiLCJuZXdDb21tYW5kVGltZW91dE1zIiwidGltZW91dHMiLCJpbXBsaWNpdFdhaXRNcyIsInVuZGVmaW5lZCIsImdldFRpbWVvdXRzIiwiaGF2ZSIsInByb3BlcnR5IiwiZGVlcCIsImltcGxpY2l0IiwiY29tbWFuZCIsIm5ld0NhcHMiLCJwcm94eUFjdGl2ZSIsImFuIiwiaW5zdGFuY2VvZiIsIkZ1bmN0aW9uIiwiZmFsc2UiLCJ0aHJvdyIsImdldFByb3h5QXZvaWRMaXN0IiwiQXJyYXkiLCJjYW5Qcm94eSIsImF2b2lkU3R1YiIsInN0dWIiLCJyZXR1cm5zIiwicHJveHlSb3V0ZUlzQXZvaWRlZCIsInRydWUiLCJiZWZvcmVTdGFydFRpbWUiLCJzaG91bGRWYWxpZGF0ZUNhcHMiLCJldmVudEhpc3RvcnkiLCJjb21tYW5kcyIsIm5ld1Nlc3Npb25SZXF1ZXN0ZWQiLCJuZXdTZXNzaW9uU3RhcnRlZCIsImNtZCIsInN0YXJ0VGltZSIsImVuZFRpbWUiLCJsb2dFdmVudCIsImZvbyIsImJhciIsInJlcyIsImV2ZW50cyIsImV2ZW50VGltaW5ncyIsInJlc2V0Iiwib2JqIiwiZDEiLCJEZXZpY2VTZXR0aW5ncyIsImQyIiwiX3NldHRpbmdzIiwiZGVueUluc2VjdXJlIiwiYWxsb3dJbnNlY3VyZSIsInJlbGF4ZWRTZWN1cml0eUVuYWJsZWQiLCJpc0ZlYXR1cmVFbmFibGVkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUtBLFNBQVNBLG1CQUFULENBQThCQyxXQUE5QixFQUEyQ0MsV0FBVyxHQUFHLEVBQXpELEVBQTZEO0FBRTNELFFBQU1DLFNBQVMsR0FBR0YsV0FBVyxDQUFDRyxJQUFaLElBQW9CLGtCQUF0QztBQUVBQyxFQUFBQSxRQUFRLENBQUMsaUJBQUQsRUFBb0IsWUFBWTtBQUN0Q0EsSUFBQUEsUUFBUSxDQUFDLGFBQUQsRUFB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LENBQUMsQ0FBQzBILGdCQUFGLENBQW1CLEtBQW5CLEVBQTBCNUgsTUFBMUIsQ0FBaUN1QixFQUFqQyxDQUFvQ21FLEtBQXBDO0FBQ0F4RixNQUFBQSxDQUFDLENBQUMwSCxnQkFBRixDQUFtQixLQUFuQixFQUEwQjVILE1BQTFCLENBQWlDdUIsRUFBakMsQ0FBb0NtRSxLQUFwQztBQUNBeEYsTUFBQUEsQ0FBQyxDQUFDMEgsZ0JBQUYsQ0FBbUIsS0FBbkIsRUFBMEI1SCxNQUExQixDQUFpQ3VCLEVBQWpDLENBQW9DNEUsSUFBcEM7QUFDRCxLQU5DLENBQUY7QUFPRCxHQTNDTyxDQUFSO0FBNENEOztlQUVjM0csbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IHsgRGV2aWNlU2V0dGluZ3MgfSBmcm9tICcuLi8uLi9saWInO1xuaW1wb3J0IHsgY3JlYXRlU2FuZGJveCB9IGZyb20gJ3Npbm9uJztcblxuXG4vLyB3cmFwIHRoZXNlIHRlc3RzIGluIGEgZnVuY3Rpb24gc28gd2UgY2FuIGV4cG9ydCB0aGUgdGVzdHMgYW5kIHJlLXVzZSB0aGVtXG4vLyBmb3IgYWN0dWFsIGRyaXZlciBpbXBsZW1lbnRhdGlvbnNcbmZ1bmN0aW9uIGJhc2VEcml2ZXJVbml0VGVzdHMgKERyaXZlckNsYXNzLCBkZWZhdWx0Q2FwcyA9IHt9KSB7XG4gIC8vIHRvIGRpc3BsYXkgdGhlIGRyaXZlciB1bmRlciB0ZXN0IGluIHJlcG9ydFxuICBjb25zdCBjbGFzc05hbWUgPSBEcml2ZXJDbGFzcy5uYW1lIHx8ICcodW5rbm93biBkcml2ZXIpJztcblxuICBkZXNjcmliZSgnc3RhdGljIHByb3BlcnR5JywgZnVuY3Rpb24gKCkge1xuICAgIGRlc2NyaWJlKCdiYXNlVmVyc2lvbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGl0KCdzaG91bGQgZXhpc3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIERyaXZlckNsYXNzLmJhc2VWZXJzaW9uLnNob3VsZC5leGlzdDtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnTG9nIHByZWZpeCcsIGZ1bmN0aW9uICgpIHtcblxuICAgIGl0KCdzaG91bGQgc2V0dXAgbG9nIHByZWZpeCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGQgPSBuZXcgRHJpdmVyQ2xhc3MoKTtcbiAgICAgIGNvbnN0IHByZXZpb3VzUHJlZml4ID0gZC5sb2cucHJlZml4O1xuICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRDYXBzLCB7XG4gICAgICAgICAgcGxhdGZvcm1OYW1lOiAnRmFrZScsXG4gICAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0NvbW1vZG9yZSA2NCcsXG4gICAgICAgIH0pLFxuICAgICAgICBmaXJzdE1hdGNoOiBbe31dLFxuICAgICAgfSk7XG4gICAgICB0cnkge1xuICAgICAgICBwcmV2aW91c1ByZWZpeC5zaG91bGQubm90LmVxbChkLmxvZy5wcmVmaXgpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgYXdhaXQgZC5kZWxldGVTZXNzaW9uKCk7XG4gICAgICAgIHByZXZpb3VzUHJlZml4LnNob3VsZC5lcWwoZC5sb2cucHJlZml4KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICB9KTtcblxuICBkZXNjcmliZShgQmFzZURyaXZlciAoYXMgJHtjbGFzc05hbWV9KWAsIGZ1bmN0aW9uICgpIHtcbiAgICBsZXQgZCwgdzNjQ2FwcztcblxuICAgIGxldCBzYW5kYm94O1xuXG4gICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBzYW5kYm94ID0gY3JlYXRlU2FuZGJveCgpO1xuICAgICAgZCA9IG5ldyBEcml2ZXJDbGFzcygpO1xuICAgICAgdzNjQ2FwcyA9IHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRDYXBzLCB7XG4gICAgICAgICAgcGxhdGZvcm1OYW1lOiAnRmFrZScsXG4gICAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0NvbW1vZG9yZSA2NCcsXG4gICAgICAgIH0pLFxuICAgICAgICBmaXJzdE1hdGNoOiBbe31dLFxuICAgICAgfTtcbiAgICB9KTtcbiAgICBhZnRlckVhY2goYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgZC5kZWxldGVTZXNzaW9uKCk7XG4gICAgICBzYW5kYm94LnJlc3RvcmUoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVwb3J0IHRoZSB2ZXJzaW9uIG9mIEJhc2VEcml2ZXIgdXNlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNob3VsZC5leGlzdChEcml2ZXJDbGFzcy5iYXNlVmVyc2lvbik7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBhbiBlbXB0eSBzdGF0dXMgb2JqZWN0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgbGV0IHN0YXR1cyA9IGF3YWl0IGQuZ2V0U3RhdHVzKCk7XG4gICAgICBzdGF0dXMuc2hvdWxkLmVxbCh7fSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBhIHNlc3Npb25JZCBmcm9tIGNyZWF0ZVNlc3Npb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBsZXQgW3Nlc3NJZF0gPSBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwgdzNjQ2Fwcyk7XG4gICAgICBzaG91bGQuZXhpc3Qoc2Vzc0lkKTtcbiAgICAgIHNlc3NJZC5zaG91bGQuYmUuYSgnc3RyaW5nJyk7XG4gICAgICBzZXNzSWQubGVuZ3RoLnNob3VsZC5iZS5hYm92ZSg1KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgbm90IGJlIGFibGUgdG8gc3RhcnQgdHdvIHNlc3Npb25zIHdpdGhvdXQgY2xvc2luZyB0aGUgZmlyc3QnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwgXy5jbG9uZURlZXAodzNjQ2FwcykpO1xuICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIF8uY2xvbmVEZWVwKHczY0NhcHMpKS5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoJ3Nlc3Npb24nKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYmUgYWJsZSB0byBkZWxldGUgYSBzZXNzaW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgbGV0IHNlc3Npb25JZDEgPSBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwgXy5jbG9uZURlZXAodzNjQ2FwcykpO1xuICAgICAgYXdhaXQgZC5kZWxldGVTZXNzaW9uKCk7XG4gICAgICBzaG91bGQuZXF1YWwoZC5zZXNzaW9uSWQsIG51bGwpO1xuICAgICAgbGV0IHNlc3Npb25JZDIgPSBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwgXy5jbG9uZURlZXAodzNjQ2FwcykpO1xuICAgICAgc2Vzc2lvbklkMS5zaG91bGQubm90LmVxbChzZXNzaW9uSWQyKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZ2V0IHRoZSBjdXJyZW50IHNlc3Npb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBsZXQgWywgY2Fwc10gPSBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwgdzNjQ2Fwcyk7XG4gICAgICBjYXBzLnNob3VsZC5lcXVhbChhd2FpdCBkLmdldFNlc3Npb24oKSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBzZXNzaW9ucyBpZiBubyBzZXNzaW9uIGV4aXN0cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBzZXNzaW9ucyA9IGF3YWl0IGQuZ2V0U2Vzc2lvbnMoKTtcbiAgICAgIHNlc3Npb25zLmxlbmd0aC5zaG91bGQuZXF1YWwoMCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBzZXNzaW9ucycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGNhcHMgPSBfLmNsb25lKHczY0NhcHMpO1xuICAgICAgY2Fwcy5hID0gJ2NhcCc7XG4gICAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwgY2Fwcyk7XG4gICAgICBsZXQgc2Vzc2lvbnMgPSBhd2FpdCBkLmdldFNlc3Npb25zKCk7XG5cbiAgICAgIHNlc3Npb25zLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICBzZXNzaW9uc1swXS5zaG91bGQuaW5jbHVkZSh7XG4gICAgICAgIGlkOiBkLnNlc3Npb25JZFxuICAgICAgfSk7XG4gICAgICBzZXNzaW9uc1swXS5jYXBhYmlsaXRpZXMuc2hvdWxkLmluY2x1ZGUoe1xuICAgICAgICBkZXZpY2VOYW1lOiAnQ29tbW9kb3JlIDY0JyxcbiAgICAgICAgcGxhdGZvcm1OYW1lOiAnRmFrZSdcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmdWxmaWxsIGFuIHVuZXhwZWN0ZWQgZHJpdmVyIHF1aXQgcHJvbWlzZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIG1ha2UgYSBjb21tYW5kIHRoYXQgd2lsbCB3YWl0IGEgYml0IHNvIHdlIGNhbiBjcmFzaCB3aGlsZSBpdCdzIHJ1bm5pbmdcbiAgICAgIGQuZ2V0U3RhdHVzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBCLmRlbGF5KDEwMDApO1xuICAgICAgICByZXR1cm4gJ2dvb2Qgc3RhdHVzJztcbiAgICAgIH0uYmluZChkKTtcbiAgICAgIGxldCBjbWRQcm9taXNlID0gZC5leGVjdXRlQ29tbWFuZCgnZ2V0U3RhdHVzJyk7XG4gICAgICBhd2FpdCBCLmRlbGF5KDEwKTtcbiAgICAgIGNvbnN0IHAgPSBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KG5ldyBFcnJvcignb25VbmV4cGVjdGVkU2h1dGRvd24gZXZlbnQgaXMgZXhwZWN0ZWQgdG8gYmUgZmlyZWQgd2l0aGluIDUgc2Vjb25kcyB0aW1lb3V0JykpLCA1MDAwKTtcbiAgICAgICAgZC5vblVuZXhwZWN0ZWRTaHV0ZG93bihyZXNvbHZlKTtcbiAgICAgIH0pO1xuICAgICAgZC5zdGFydFVuZXhwZWN0ZWRTaHV0ZG93bihuZXcgRXJyb3IoJ1dlIGNyYXNoZWQnKSk7XG4gICAgICBhd2FpdCBjbWRQcm9taXNlLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL1dlIGNyYXNoZWQvKTtcbiAgICAgIGF3YWl0IHA7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIG5vdCBhbGxvdyBjb21tYW5kcyBpbiBtaWRkbGUgb2YgdW5leHBlY3RlZCBzaHV0ZG93bicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIG1ha2UgYSBjb21tYW5kIHRoYXQgd2lsbCB3YWl0IGEgYml0IHNvIHdlIGNhbiBjcmFzaCB3aGlsZSBpdCdzIHJ1bm5pbmdcbiAgICAgIGQub2xkRGVsZXRlU2Vzc2lvbiA9IGQuZGVsZXRlU2Vzc2lvbjtcbiAgICAgIGQuZGVsZXRlU2Vzc2lvbiA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgQi5kZWxheSgxMDApO1xuICAgICAgICBhd2FpdCB0aGlzLm9sZERlbGV0ZVNlc3Npb24oKTtcbiAgICAgIH0uYmluZChkKTtcbiAgICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB3M2NDYXBzKTtcbiAgICAgIGNvbnN0IHAgPSBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KG5ldyBFcnJvcignb25VbmV4cGVjdGVkU2h1dGRvd24gZXZlbnQgaXMgZXhwZWN0ZWQgdG8gYmUgZmlyZWQgd2l0aGluIDUgc2Vjb25kcyB0aW1lb3V0JykpLCA1MDAwKTtcbiAgICAgICAgZC5vblVuZXhwZWN0ZWRTaHV0ZG93bihyZXNvbHZlKTtcbiAgICAgIH0pO1xuICAgICAgZC5zdGFydFVuZXhwZWN0ZWRTaHV0ZG93bihuZXcgRXJyb3IoJ1dlIGNyYXNoZWQnKSk7XG4gICAgICBhd2FpdCBwO1xuICAgICAgYXdhaXQgZC5leGVjdXRlQ29tbWFuZCgnZ2V0U2Vzc2lvbicpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL3NodXQgZG93bi8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBhbGxvdyBuZXcgY29tbWFuZHMgYWZ0ZXIgZG9uZSBzaHV0dGluZyBkb3duJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gbWFrZSBhIGNvbW1hbmQgdGhhdCB3aWxsIHdhaXQgYSBiaXQgc28gd2UgY2FuIGNyYXNoIHdoaWxlIGl0J3MgcnVubmluZ1xuICAgICAgZC5vbGREZWxldGVTZXNzaW9uID0gZC5kZWxldGVTZXNzaW9uO1xuICAgICAgZC5kZWxldGVTZXNzaW9uID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBCLmRlbGF5KDEwMCk7XG4gICAgICAgIGF3YWl0IHRoaXMub2xkRGVsZXRlU2Vzc2lvbigpO1xuICAgICAgfS5iaW5kKGQpO1xuXG4gICAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwgXy5jbG9uZURlZXAodzNjQ2FwcykpO1xuICAgICAgY29uc3QgcCA9IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWplY3QobmV3IEVycm9yKCdvblVuZXhwZWN0ZWRTaHV0ZG93biBldmVudCBpcyBleHBlY3RlZCB0byBiZSBmaXJlZCB3aXRoaW4gNSBzZWNvbmRzIHRpbWVvdXQnKSksIDUwMDApO1xuICAgICAgICBkLm9uVW5leHBlY3RlZFNodXRkb3duKHJlc29sdmUpO1xuICAgICAgfSk7XG4gICAgICBkLnN0YXJ0VW5leHBlY3RlZFNodXRkb3duKG5ldyBFcnJvcignV2UgY3Jhc2hlZCcpKTtcbiAgICAgIGF3YWl0IHA7XG5cbiAgICAgIGF3YWl0IGQuZXhlY3V0ZUNvbW1hbmQoJ2dldFNlc3Npb24nKS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9zaHV0IGRvd24vKTtcbiAgICAgIGF3YWl0IEIuZGVsYXkoNTAwKTtcblxuICAgICAgYXdhaXQgZC5leGVjdXRlQ29tbWFuZCgnY3JlYXRlU2Vzc2lvbicsIG51bGwsIG51bGwsIF8uY2xvbmVEZWVwKHczY0NhcHMpKTtcbiAgICAgIGF3YWl0IGQuZGVsZXRlU2Vzc2lvbigpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBkaXN0aW5ndWlzaCBiZXR3ZWVuIFczQyBhbmQgSlNPTldQIHNlc3Npb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBUZXN0IFczQyAobGVhdmUgZmlyc3QgMiBhcmdzIG51bGwgYmVjYXVzZSB0aG9zZSBhcmUgdGhlIEpTT05XUCBhcmdzKVxuICAgICAgYXdhaXQgZC5leGVjdXRlQ29tbWFuZCgnY3JlYXRlU2Vzc2lvbicsIG51bGwsIG51bGwsIHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRDYXBzLCB7XG4gICAgICAgICAgcGxhdGZvcm1OYW1lOiAnRmFrZScsXG4gICAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0NvbW1vZG9yZSA2NCcsXG4gICAgICAgIH0pLFxuICAgICAgICBmaXJzdE1hdGNoOiBbe31dLFxuICAgICAgfSk7XG5cbiAgICAgIGQucHJvdG9jb2wuc2hvdWxkLmVxdWFsKCdXM0MnKTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdwcm90b2NvbCBkZXRlY3Rpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpdCgnc2hvdWxkIHVzZSBXM0MgaWYgb25seSBXM0MgY2FwcyBhcmUgcHJvdmlkZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7YWx3YXlzTWF0Y2g6IF8uY2xvbmUoZGVmYXVsdENhcHMpLCBmaXJzdE1hdGNoOiBbe31dfSk7XG4gICAgICAgIGQucHJvdG9jb2wuc2hvdWxkLmVxdWFsKCdXM0MnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYXZlIGEgbWV0aG9kIHRvIGdldCBkcml2ZXIgZm9yIGEgc2Vzc2lvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBbc2Vzc0lkXSA9IGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB3M2NDYXBzKTtcbiAgICAgIGQuZHJpdmVyRm9yU2Vzc2lvbihzZXNzSWQpLnNob3VsZC5lcWwoZCk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnY29tbWFuZCBxdWV1ZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBkID0gbmV3IERyaXZlckNsYXNzKCk7XG5cbiAgICAgIGxldCB3YWl0TXMgPSAxMDtcbiAgICAgIGQuZ2V0U3RhdHVzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBCLmRlbGF5KHdhaXRNcyk7XG4gICAgICAgIHJldHVybiBEYXRlLm5vdygpO1xuICAgICAgfS5iaW5kKGQpO1xuXG4gICAgICBkLmdldFNlc3Npb25zID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBCLmRlbGF5KHdhaXRNcyk7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignbXVsdGlwYXNzJyk7XG4gICAgICB9LmJpbmQoZCk7XG5cbiAgICAgIGFmdGVyRWFjaChhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IGQuY2xlYXJOZXdDb21tYW5kVGltZW91dCgpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgcXVldWUgY29tbWFuZHMgYW5kLmV4ZWN1dGVDb21tYW5kL3Jlc3BvbmQgaW4gdGhlIG9yZGVyIHJlY2VpdmVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBsZXQgbnVtQ21kcyA9IDEwO1xuICAgICAgICBsZXQgY21kcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bUNtZHM7IGkrKykge1xuICAgICAgICAgIGNtZHMucHVzaChkLmV4ZWN1dGVDb21tYW5kKCdnZXRTdGF0dXMnKSk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHJlc3VsdHMgPSBhd2FpdCBCLmFsbChjbWRzKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBudW1DbWRzOyBpKyspIHtcbiAgICAgICAgICBpZiAocmVzdWx0c1tpXSA8PSByZXN1bHRzW2kgLSAxXSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdHb3QgcmVzdWx0IG91dCBvZiBvcmRlcicpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgaGFuZGxlIGVycm9ycyBjb3JyZWN0bHkgd2hlbiBxdWV1aW5nJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBsZXQgbnVtQ21kcyA9IDEwO1xuICAgICAgICBsZXQgY21kcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bUNtZHM7IGkrKykge1xuICAgICAgICAgIGlmIChpID09PSA1KSB7XG4gICAgICAgICAgICBjbWRzLnB1c2goZC5leGVjdXRlQ29tbWFuZCgnZ2V0U2Vzc2lvbnMnKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNtZHMucHVzaChkLmV4ZWN1dGVDb21tYW5kKCdnZXRTdGF0dXMnKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCByZXN1bHRzID0gYXdhaXQgQi5zZXR0bGUoY21kcyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgNTsgaSsrKSB7XG4gICAgICAgICAgaWYgKHJlc3VsdHNbaV0udmFsdWUoKSA8PSByZXN1bHRzW2kgLSAxXS52YWx1ZSgpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0dvdCByZXN1bHQgb3V0IG9mIG9yZGVyJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJlc3VsdHNbNV0ucmVhc29uKCkubWVzc2FnZS5zaG91bGQuY29udGFpbignbXVsdGlwYXNzJyk7XG4gICAgICAgIGZvciAobGV0IGkgPSA3OyBpIDwgbnVtQ21kczsgaSsrKSB7XG4gICAgICAgICAgaWYgKHJlc3VsdHNbaV0udmFsdWUoKSA8PSByZXN1bHRzW2kgLSAxXS52YWx1ZSgpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0dvdCByZXN1bHQgb3V0IG9mIG9yZGVyJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBub3QgY2FyZSBpZiBxdWV1ZSBlbXB0aWVzIGZvciBhIGJpdCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgbGV0IG51bUNtZHMgPSAxMDtcbiAgICAgICAgbGV0IGNtZHMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1DbWRzOyBpKyspIHtcbiAgICAgICAgICBjbWRzLnB1c2goZC5leGVjdXRlQ29tbWFuZCgnZ2V0U3RhdHVzJykpO1xuICAgICAgICB9XG4gICAgICAgIGxldCByZXN1bHRzID0gYXdhaXQgQi5hbGwoY21kcyk7XG4gICAgICAgIGNtZHMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1DbWRzOyBpKyspIHtcbiAgICAgICAgICBjbWRzLnB1c2goZC5leGVjdXRlQ29tbWFuZCgnZ2V0U3RhdHVzJykpO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdHMgPSBhd2FpdCBCLmFsbChjbWRzKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBudW1DbWRzOyBpKyspIHtcbiAgICAgICAgICBpZiAocmVzdWx0c1tpXSA8PSByZXN1bHRzW2kgLSAxXSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdHb3QgcmVzdWx0IG91dCBvZiBvcmRlcicpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgndGltZW91dHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBiZWZvcmUoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwgdzNjQ2Fwcyk7XG4gICAgICB9KTtcbiAgICAgIGRlc2NyaWJlKCdjb21tYW5kJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBpdCgnc2hvdWxkIGV4aXN0IGJ5IGRlZmF1bHQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgZC5uZXdDb21tYW5kVGltZW91dE1zLnNob3VsZC5lcXVhbCg2MDAwMCk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIGJlIHNldHRhYmxlIHRocm91Z2ggYHRpbWVvdXRzYCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBhd2FpdCBkLnRpbWVvdXRzKCdjb21tYW5kJywgMjApO1xuICAgICAgICAgIGQubmV3Q29tbWFuZFRpbWVvdXRNcy5zaG91bGQuZXF1YWwoMjApO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgZGVzY3JpYmUoJ2ltcGxpY2l0JywgZnVuY3Rpb24gKCkge1xuICAgICAgICBpdCgnc2hvdWxkIG5vdCBleGlzdCBieSBkZWZhdWx0JywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGQuaW1wbGljaXRXYWl0TXMuc2hvdWxkLmVxdWFsKDApO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCBiZSBzZXR0YWJsZSB0aHJvdWdoIGB0aW1lb3V0c2AnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgYXdhaXQgZC50aW1lb3V0cygnaW1wbGljaXQnLCAyMCk7XG4gICAgICAgICAgZC5pbXBsaWNpdFdhaXRNcy5zaG91bGQuZXF1YWwoMjApO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3RpbWVvdXRzIChXM0MpJywgZnVuY3Rpb24gKCkge1xuICAgICAgYmVmb3JlRWFjaChhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB3M2NDYXBzKTtcbiAgICAgIH0pO1xuICAgICAgYWZ0ZXJFYWNoKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgZC5kZWxldGVTZXNzaW9uKCk7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgZ2V0IHRpbWVvdXRzIHRoYXQgd2Ugc2V0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBkLnRpbWVvdXRzKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgMTAwMCk7XG4gICAgICAgIGF3YWl0IGQuZ2V0VGltZW91dHMoKS5zaG91bGQuZXZlbnR1YWxseS5oYXZlLnByb3BlcnR5KCdpbXBsaWNpdCcsIDEwMDApO1xuICAgICAgICBhd2FpdCBkLnRpbWVvdXRzKCdjb21tYW5kJywgMjAwMCk7XG4gICAgICAgIGF3YWl0IGQuZ2V0VGltZW91dHMoKS5zaG91bGQuZXZlbnR1YWxseS5kZWVwLmVxdWFsKHtcbiAgICAgICAgICBpbXBsaWNpdDogMTAwMCxcbiAgICAgICAgICBjb21tYW5kOiAyMDAwLFxuICAgICAgICB9KTtcbiAgICAgICAgYXdhaXQgZC50aW1lb3V0cyh1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIDMwMDApO1xuICAgICAgICBhd2FpdCBkLmdldFRpbWVvdXRzKCkuc2hvdWxkLmV2ZW50dWFsbHkuZGVlcC5lcXVhbCh7XG4gICAgICAgICAgaW1wbGljaXQ6IDMwMDAsXG4gICAgICAgICAgY29tbWFuZDogMjAwMCxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdyZXNldCBjb21wYXRpYmlsaXR5JywgZnVuY3Rpb24gKCkge1xuICAgICAgaXQoJ3Nob3VsZCBub3QgYWxsb3cgYm90aCBmdWxsUmVzZXQgYW5kIG5vUmVzZXQgdG8gYmUgdHJ1ZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgbmV3Q2FwcyA9IHtcbiAgICAgICAgICBhbHdheXNNYXRjaDogT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdENhcHMsIHtcbiAgICAgICAgICAgIHBsYXRmb3JtTmFtZTogJ0Zha2UnLFxuICAgICAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0NvbW1vZG9yZSA2NCcsXG4gICAgICAgICAgICAnYXBwaXVtOmZ1bGxSZXNldCc6IHRydWUsXG4gICAgICAgICAgICAnYXBwaXVtOm5vUmVzZXQnOiB0cnVlXG4gICAgICAgICAgfSksXG4gICAgICAgIH07XG4gICAgICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCBuZXdDYXBzKS5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoXG4gICAgICAgICAgICAvbm9SZXNldC4rZnVsbFJlc2V0Lyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdwcm94eWluZycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBzZXNzSWQ7XG4gICAgICBiZWZvcmVFYWNoKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgW3Nlc3NJZF0gPSBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwgdzNjQ2Fwcyk7XG4gICAgICB9KTtcbiAgICAgIGRlc2NyaWJlKCcjcHJveHlBY3RpdmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGl0KCdzaG91bGQgZXhpc3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgZC5wcm94eUFjdGl2ZS5zaG91bGQuYmUuYW4uaW5zdGFuY2VvZihGdW5jdGlvbik7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBkLnByb3h5QWN0aXZlKHNlc3NJZCkuc2hvdWxkLmJlLmZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCB0aHJvdyBhbiBlcnJvciB3aGVuIHNlc3Npb25JZCBpcyB3cm9uZycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAoKCkgPT4geyBkLnByb3h5QWN0aXZlKCdhYWEnKTsgfSkuc2hvdWxkLnRocm93O1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBkZXNjcmliZSgnI2dldFByb3h5QXZvaWRMaXN0JywgZnVuY3Rpb24gKCkge1xuICAgICAgICBpdCgnc2hvdWxkIGV4aXN0JywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGQuZ2V0UHJveHlBdm9pZExpc3Quc2hvdWxkLmJlLmFuLmluc3RhbmNlb2YoRnVuY3Rpb24pO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gYW4gYXJyYXknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgZC5nZXRQcm94eUF2b2lkTGlzdChzZXNzSWQpLnNob3VsZC5iZS5hbi5pbnN0YW5jZW9mKEFycmF5KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KCdzaG91bGQgdGhyb3cgYW4gZXJyb3Igd2hlbiBzZXNzaW9uSWQgaXMgd3JvbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgKCgpID0+IHsgZC5nZXRQcm94eUF2b2lkTGlzdCgnYWFhJyk7IH0pLnNob3VsZC50aHJvdztcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgZGVzY3JpYmUoJyNjYW5Qcm94eScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaXQoJ3Nob3VsZCBoYXZlIGEgI2NhblByb3h5IG1ldGhvZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBkLmNhblByb3h5LnNob3VsZC5iZS5hbi5pbnN0YW5jZW9mKEZ1bmN0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KCdzaG91bGQgcmV0dXJuIGEgYm9vbGVhbiBmcm9tICNjYW5Qcm94eScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBkLmNhblByb3h5KHNlc3NJZCkuc2hvdWxkLmJlLmEoJ2Jvb2xlYW4nKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KCdzaG91bGQgdGhyb3cgYW4gZXJyb3Igd2hlbiBzZXNzaW9uSWQgaXMgd3JvbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgKCgpID0+IHsgZC5jYW5Qcm94eSgpOyB9KS5zaG91bGQudGhyb3c7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGRlc2NyaWJlKCcjcHJveHlSb3V0ZUlzQXZvaWRlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBmb3JtIG9mIGF2b2lkYW5jZSBsaXN0JywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IGF2b2lkU3R1YiA9IHNhbmRib3guc3R1YihkLCAnZ2V0UHJveHlBdm9pZExpc3QnKTtcbiAgICAgICAgICBhdm9pZFN0dWIucmV0dXJucyhbWydQT1NUJywgL1xcL2Zvby9dLCBbJ0dFVCddXSk7XG4gICAgICAgICAgKCgpID0+IHsgZC5wcm94eVJvdXRlSXNBdm9pZGVkKCk7IH0pLnNob3VsZC50aHJvdztcbiAgICAgICAgICBhdm9pZFN0dWIucmV0dXJucyhbWydQT1NUJywgL1xcL2Zvby9dLCBbJ0dFVCcsIC9eZm9vLywgJ2JhciddXSk7XG4gICAgICAgICAgKCgpID0+IHsgZC5wcm94eVJvdXRlSXNBdm9pZGVkKCk7IH0pLnNob3VsZC50aHJvdztcbiAgICAgICAgICBhdm9pZFN0dWIucmVzdG9yZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCByZWplY3QgYmFkIGh0dHAgbWV0aG9kcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjb25zdCBhdm9pZFN0dWIgPSBzYW5kYm94LnN0dWIoZCwgJ2dldFByb3h5QXZvaWRMaXN0Jyk7XG4gICAgICAgICAgYXZvaWRTdHViLnJldHVybnMoW1snUE9TVCcsIC9eZm9vL10sIFsnQkFaRVRFJywgL15iYXIvXV0pO1xuICAgICAgICAgICgoKSA9PiB7IGQucHJveHlSb3V0ZUlzQXZvaWRlZCgpOyB9KS5zaG91bGQudGhyb3c7XG4gICAgICAgICAgYXZvaWRTdHViLnJlc3RvcmUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KCdzaG91bGQgcmVqZWN0IG5vbi1yZWdleCByb3V0ZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3QgYXZvaWRTdHViID0gc2FuZGJveC5zdHViKGQsICdnZXRQcm94eUF2b2lkTGlzdCcpO1xuICAgICAgICAgIGF2b2lkU3R1Yi5yZXR1cm5zKFtbJ1BPU1QnLCAvXmZvby9dLCBbJ0dFVCcsICcvYmFyJ11dKTtcbiAgICAgICAgICAoKCkgPT4geyBkLnByb3h5Um91dGVJc0F2b2lkZWQoKTsgfSkuc2hvdWxkLnRocm93O1xuICAgICAgICAgIGF2b2lkU3R1Yi5yZXN0b3JlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIGZvciByb3V0ZXMgaW4gdGhlIGF2b2lkIGxpc3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3QgYXZvaWRTdHViID0gc2FuZGJveC5zdHViKGQsICdnZXRQcm94eUF2b2lkTGlzdCcpO1xuICAgICAgICAgIGF2b2lkU3R1Yi5yZXR1cm5zKFtbJ1BPU1QnLCAvXlxcL2Zvby9dXSk7XG4gICAgICAgICAgZC5wcm94eVJvdXRlSXNBdm9pZGVkKG51bGwsICdQT1NUJywgJy9mb28vYmFyJykuc2hvdWxkLmJlLnRydWU7XG4gICAgICAgICAgYXZvaWRTdHViLnJlc3RvcmUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KCdzaG91bGQgc3RyaXAgYXdheSBhbnkgd2QvaHViIHByZWZpeCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjb25zdCBhdm9pZFN0dWIgPSBzYW5kYm94LnN0dWIoZCwgJ2dldFByb3h5QXZvaWRMaXN0Jyk7XG4gICAgICAgICAgYXZvaWRTdHViLnJldHVybnMoW1snUE9TVCcsIC9eXFwvZm9vL11dKTtcbiAgICAgICAgICBkLnByb3h5Um91dGVJc0F2b2lkZWQobnVsbCwgJ1BPU1QnLCAnL2Zvby9iYXInKS5zaG91bGQuYmUudHJ1ZTtcbiAgICAgICAgICBhdm9pZFN0dWIucmVzdG9yZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2UgZm9yIHJvdXRlcyBub3QgaW4gdGhlIGF2b2lkIGxpc3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3QgYXZvaWRTdHViID0gc2FuZGJveC5zdHViKGQsICdnZXRQcm94eUF2b2lkTGlzdCcpO1xuICAgICAgICAgIGF2b2lkU3R1Yi5yZXR1cm5zKFtbJ1BPU1QnLCAvXlxcL2Zvby9dXSk7XG4gICAgICAgICAgZC5wcm94eVJvdXRlSXNBdm9pZGVkKG51bGwsICdHRVQnLCAnL2Zvby9iYXInKS5zaG91bGQuYmUuZmFsc2U7XG4gICAgICAgICAgZC5wcm94eVJvdXRlSXNBdm9pZGVkKG51bGwsICdQT1NUJywgJy9ib28nKS5zaG91bGQuYmUuZmFsc2U7XG4gICAgICAgICAgYXZvaWRTdHViLnJlc3RvcmUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdldmVudCB0aW1pbmcgZnJhbWV3b3JrJywgZnVuY3Rpb24gKCkge1xuICAgICAgbGV0IGJlZm9yZVN0YXJ0VGltZTtcbiAgICAgIGJlZm9yZUVhY2goYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBiZWZvcmVTdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgICBkLnNob3VsZFZhbGlkYXRlQ2FwcyA9IGZhbHNlO1xuICAgICAgICBhd2FpdCBkLmV4ZWN1dGVDb21tYW5kKCdjcmVhdGVTZXNzaW9uJywgbnVsbCwgbnVsbCwge2Fsd2F5c01hdGNoOiB7Li4uZGVmYXVsdENhcHN9LCBmaXJzdE1hdGNoOiBbe31dfSk7XG4gICAgICB9KTtcbiAgICAgIGRlc2NyaWJlKCcjZXZlbnRIaXN0b3J5JywgZnVuY3Rpb24gKCkge1xuICAgICAgICBpdCgnc2hvdWxkIGhhdmUgYW4gZXZlbnRIaXN0b3J5IHByb3BlcnR5JywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHNob3VsZC5leGlzdChkLmV2ZW50SGlzdG9yeSk7XG4gICAgICAgICAgc2hvdWxkLmV4aXN0KGQuZXZlbnRIaXN0b3J5LmNvbW1hbmRzKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaXQoJ3Nob3VsZCBoYXZlIGEgc2Vzc2lvbiBzdGFydCB0aW1pbmcgYWZ0ZXIgc2Vzc2lvbiBzdGFydCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBsZXQge25ld1Nlc3Npb25SZXF1ZXN0ZWQsIG5ld1Nlc3Npb25TdGFydGVkfSA9IGQuZXZlbnRIaXN0b3J5O1xuICAgICAgICAgIG5ld1Nlc3Npb25SZXF1ZXN0ZWQuc2hvdWxkLmhhdmUubGVuZ3RoKDEpO1xuICAgICAgICAgIG5ld1Nlc3Npb25TdGFydGVkLnNob3VsZC5oYXZlLmxlbmd0aCgxKTtcbiAgICAgICAgICBuZXdTZXNzaW9uUmVxdWVzdGVkWzBdLnNob3VsZC5iZS5hKCdudW1iZXInKTtcbiAgICAgICAgICBuZXdTZXNzaW9uU3RhcnRlZFswXS5zaG91bGQuYmUuYSgnbnVtYmVyJyk7XG4gICAgICAgICAgKG5ld1Nlc3Npb25SZXF1ZXN0ZWRbMF0gPj0gYmVmb3JlU3RhcnRUaW1lKS5zaG91bGQuYmUudHJ1ZTtcbiAgICAgICAgICAobmV3U2Vzc2lvblN0YXJ0ZWRbMF0gPj0gbmV3U2Vzc2lvblJlcXVlc3RlZFswXSkuc2hvdWxkLmJlLnRydWU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGl0KCdzaG91bGQgaW5jbHVkZSBhIGNvbW1hbmRzIGxpc3QnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgYXdhaXQgZC5leGVjdXRlQ29tbWFuZCgnZ2V0U3RhdHVzJywgW10pO1xuICAgICAgICAgIGQuZXZlbnRIaXN0b3J5LmNvbW1hbmRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMik7XG4gICAgICAgICAgZC5ldmVudEhpc3RvcnkuY29tbWFuZHNbMV0uY21kLnNob3VsZC5lcXVhbCgnZ2V0U3RhdHVzJyk7XG4gICAgICAgICAgZC5ldmVudEhpc3RvcnkuY29tbWFuZHNbMV0uc3RhcnRUaW1lLnNob3VsZC5iZS5hKCdudW1iZXInKTtcbiAgICAgICAgICBkLmV2ZW50SGlzdG9yeS5jb21tYW5kc1sxXS5lbmRUaW1lLnNob3VsZC5iZS5hKCdudW1iZXInKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIGRlc2NyaWJlKCcjbG9nRXZlbnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGl0KCdzaG91bGQgYWxsb3cgbG9nZ2luZyBhcmJpdHJhcnkgZXZlbnRzJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGQubG9nRXZlbnQoJ2ZvbycpO1xuICAgICAgICAgIGQuZXZlbnRIaXN0b3J5LmZvb1swXS5zaG91bGQuYmUuYSgnbnVtYmVyJyk7XG4gICAgICAgICAgKGQuZXZlbnRIaXN0b3J5LmZvb1swXSA+PSBiZWZvcmVTdGFydFRpbWUpLnNob3VsZC5iZS50cnVlO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCBub3QgYWxsb3cgcmVzZXJ2ZWQgb3Igb2RkbHkgZm9ybWVkIGV2ZW50IG5hbWVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICgoKSA9PiB7XG4gICAgICAgICAgICBkLmxvZ0V2ZW50KCdjb21tYW5kcycpO1xuICAgICAgICAgIH0pLnNob3VsZC50aHJvdygpO1xuICAgICAgICAgICgoKSA9PiB7XG4gICAgICAgICAgICBkLmxvZ0V2ZW50KDEpO1xuICAgICAgICAgIH0pLnNob3VsZC50aHJvdygpO1xuICAgICAgICAgICgoKSA9PiB7XG4gICAgICAgICAgICBkLmxvZ0V2ZW50KHt9KTtcbiAgICAgICAgICB9KS5zaG91bGQudGhyb3coKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgYWxsb3cgbG9nZ2luZyB0aGUgc2FtZSBldmVudCBtdWx0aXBsZSB0aW1lcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZC5sb2dFdmVudCgnYmFyJyk7XG4gICAgICAgIGQubG9nRXZlbnQoJ2JhcicpO1xuICAgICAgICBkLmV2ZW50SGlzdG9yeS5iYXIuc2hvdWxkLmhhdmUubGVuZ3RoKDIpO1xuICAgICAgICBkLmV2ZW50SGlzdG9yeS5iYXJbMV0uc2hvdWxkLmJlLmEoJ251bWJlcicpO1xuICAgICAgICAoZC5ldmVudEhpc3RvcnkuYmFyWzFdID49IGQuZXZlbnRIaXN0b3J5LmJhclswXSkuc2hvdWxkLmJlLnRydWU7XG4gICAgICB9KTtcbiAgICAgIGRlc2NyaWJlKCdnZXRTZXNzaW9uIGRlY29yYXRpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGl0KCdzaG91bGQgZGVjb3JhdGUgZ2V0U2Vzc2lvbiByZXNwb25zZSBpZiBvcHQtaW4gY2FwIGlzIHByb3ZpZGVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGxldCByZXMgPSBhd2FpdCBkLmdldFNlc3Npb24oKTtcbiAgICAgICAgICBzaG91bGQubm90LmV4aXN0KHJlcy5ldmVudHMpO1xuXG4gICAgICAgICAgZC5jYXBzLmV2ZW50VGltaW5ncyA9IHRydWU7XG4gICAgICAgICAgcmVzID0gYXdhaXQgZC5nZXRTZXNzaW9uKCk7XG4gICAgICAgICAgc2hvdWxkLmV4aXN0KHJlcy5ldmVudHMpO1xuICAgICAgICAgIHNob3VsZC5leGlzdChyZXMuZXZlbnRzLm5ld1Nlc3Npb25SZXF1ZXN0ZWQpO1xuICAgICAgICAgIHJlcy5ldmVudHMubmV3U2Vzc2lvblJlcXVlc3RlZFswXS5zaG91bGQuYmUuYSgnbnVtYmVyJyk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgZGVzY3JpYmUoJy5yZXNldCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGl0KCdzaG91bGQgcmVzZXQgYXMgVzNDIGlmIHRoZSBvcmlnaW5hbCBzZXNzaW9uIHdhcyBXM0MnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IGNhcHMgPSB7XG4gICAgICAgICAgYWx3YXlzTWF0Y2g6IE9iamVjdC5hc3NpZ24oe30sIHtcbiAgICAgICAgICAgICdhcHBpdW06YXBwJzogJ0Zha2UnLFxuICAgICAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0Zha2UnLFxuICAgICAgICAgICAgJ2FwcGl1bTphdXRvbWF0aW9uTmFtZSc6ICdGYWtlJyxcbiAgICAgICAgICAgIHBsYXRmb3JtTmFtZTogJ0Zha2UnLFxuICAgICAgICAgIH0sIGRlZmF1bHRDYXBzKSxcbiAgICAgICAgICBmaXJzdE1hdGNoOiBbe31dLFxuICAgICAgICB9O1xuICAgICAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24odW5kZWZpbmVkLCB1bmRlZmluZWQsIGNhcHMpO1xuICAgICAgICBkLnByb3RvY29sLnNob3VsZC5lcXVhbCgnVzNDJyk7XG4gICAgICAgIGF3YWl0IGQucmVzZXQoKTtcbiAgICAgICAgZC5wcm90b2NvbC5zaG91bGQuZXF1YWwoJ1czQycpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdEZXZpY2VTZXR0aW5ncycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIG5vdCBob2xkIG9uIHRvIHJlZmVyZW5jZSBvZiBkZWZhdWx0cyBpbiBjb25zdHJ1Y3RvcicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBvYmogPSB7Zm9vOiAnYmFyJ307XG4gICAgICBsZXQgZDEgPSBuZXcgRGV2aWNlU2V0dGluZ3Mob2JqKTtcbiAgICAgIGxldCBkMiA9IG5ldyBEZXZpY2VTZXR0aW5ncyhvYmopO1xuICAgICAgZDEuX3NldHRpbmdzLmZvbyA9ICdiYXonO1xuICAgICAgZDEuX3NldHRpbmdzLnNob3VsZC5ub3QuZXFsKGQyLl9zZXR0aW5ncyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCcuaXNGZWF0dXJlRW5hYmxlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBkID0gbmV3IERyaXZlckNsYXNzKCk7XG5cbiAgICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgZC5kZW55SW5zZWN1cmUgPSBudWxsO1xuICAgICAgZC5hbGxvd0luc2VjdXJlID0gbnVsbDtcbiAgICAgIGQucmVsYXhlZFNlY3VyaXR5RW5hYmxlZCA9IG51bGw7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHNheSBhIGZlYXR1cmUgaXMgZW5hYmxlZCB3aGVuIGl0IGlzIGV4cGxpY2l0bHkgYWxsb3dlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGQuYWxsb3dJbnNlY3VyZSA9IFsnZm9vJywgJ2JhciddO1xuICAgICAgZC5pc0ZlYXR1cmVFbmFibGVkKCdmb28nKS5zaG91bGQuYmUudHJ1ZTtcbiAgICAgIGQuaXNGZWF0dXJlRW5hYmxlZCgnYmFyJykuc2hvdWxkLmJlLnRydWU7XG4gICAgICBkLmlzRmVhdHVyZUVuYWJsZWQoJ2JheicpLnNob3VsZC5iZS5mYWxzZTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgc2F5IGEgZmVhdHVyZSBpcyBub3QgZW5hYmxlZCBpZiBpdCBpcyBub3QgZW5hYmxlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGQuYWxsb3dJbnNlY3VyZSA9IFtdO1xuICAgICAgZC5pc0ZlYXR1cmVFbmFibGVkKCdmb28nKS5zaG91bGQuYmUuZmFsc2U7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHByZWZlciBkZW55SW5zZWN1cmUgdG8gYWxsb3dJbnNlY3VyZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGQuYWxsb3dJbnNlY3VyZSA9IFsnZm9vJywgJ2JhciddO1xuICAgICAgZC5kZW55SW5zZWN1cmUgPSBbJ2ZvbyddO1xuICAgICAgZC5pc0ZlYXR1cmVFbmFibGVkKCdmb28nKS5zaG91bGQuYmUuZmFsc2U7XG4gICAgICBkLmlzRmVhdHVyZUVuYWJsZWQoJ2JhcicpLnNob3VsZC5iZS50cnVlO1xuICAgICAgZC5pc0ZlYXR1cmVFbmFibGVkKCdiYXonKS5zaG91bGQuYmUuZmFsc2U7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGFsbG93IGdsb2JhbCBzZXR0aW5nIGZvciBpbnNlY3VyaXR5JywgZnVuY3Rpb24gKCkge1xuICAgICAgZC5yZWxheGVkU2VjdXJpdHlFbmFibGVkID0gdHJ1ZTtcbiAgICAgIGQuaXNGZWF0dXJlRW5hYmxlZCgnZm9vJykuc2hvdWxkLmJlLnRydWU7XG4gICAgICBkLmlzRmVhdHVyZUVuYWJsZWQoJ2JhcicpLnNob3VsZC5iZS50cnVlO1xuICAgICAgZC5pc0ZlYXR1cmVFbmFibGVkKCdiYXonKS5zaG91bGQuYmUudHJ1ZTtcbiAgICB9KTtcblxuICAgIGl0KCdnbG9iYWwgc2V0dGluZyBzaG91bGQgYmUgb3ZlcnJpZGVhYmxlJywgZnVuY3Rpb24gKCkge1xuICAgICAgZC5yZWxheGVkU2VjdXJpdHlFbmFibGVkID0gdHJ1ZTtcbiAgICAgIGQuZGVueUluc2VjdXJlID0gWydmb28nLCAnYmFyJ107XG4gICAgICBkLmlzRmVhdHVyZUVuYWJsZWQoJ2ZvbycpLnNob3VsZC5iZS5mYWxzZTtcbiAgICAgIGQuaXNGZWF0dXJlRW5hYmxlZCgnYmFyJykuc2hvdWxkLmJlLmZhbHNlO1xuICAgICAgZC5pc0ZlYXR1cmVFbmFibGVkKCdiYXonKS5zaG91bGQuYmUudHJ1ZTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VEcml2ZXJVbml0VGVzdHM7XG4iXX0=
572
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJiYXNlRHJpdmVyVW5pdFRlc3RzIiwiRHJpdmVyQ2xhc3MiLCJkZWZhdWx0Q2FwcyIsImNsYXNzTmFtZSIsIm5hbWUiLCJkZXNjcmliZSIsIml0IiwiYmFzZVZlcnNpb24iLCJzaG91bGQiLCJleGlzdCIsImQiLCJwcmV2aW91c1ByZWZpeCIsImxvZyIsInByZWZpeCIsImNyZWF0ZVNlc3Npb24iLCJhbHdheXNNYXRjaCIsIk9iamVjdCIsImFzc2lnbiIsInBsYXRmb3JtTmFtZSIsImZpcnN0TWF0Y2giLCJub3QiLCJlcWwiLCJkZWxldGVTZXNzaW9uIiwidzNjQ2FwcyIsInNhbmRib3giLCJiZWZvcmVFYWNoIiwiY3JlYXRlU2FuZGJveCIsImFmdGVyRWFjaCIsInJlc3RvcmUiLCJzdGF0dXMiLCJnZXRTdGF0dXMiLCJzZXNzSWQiLCJiZSIsImEiLCJsZW5ndGgiLCJhYm92ZSIsIl8iLCJjbG9uZURlZXAiLCJldmVudHVhbGx5IiwicmVqZWN0ZWRXaXRoIiwic2Vzc2lvbklkMSIsImVxdWFsIiwic2Vzc2lvbklkIiwic2Vzc2lvbklkMiIsImNhcHMiLCJnZXRTZXNzaW9uIiwic2Vzc2lvbnMiLCJnZXRTZXNzaW9ucyIsImNsb25lIiwiaW5jbHVkZSIsImlkIiwiY2FwYWJpbGl0aWVzIiwiZGV2aWNlTmFtZSIsIkIiLCJkZWxheSIsImJpbmQiLCJjbWRQcm9taXNlIiwiZXhlY3V0ZUNvbW1hbmQiLCJwIiwicmVzb2x2ZSIsInJlamVjdCIsInNldFRpbWVvdXQiLCJFcnJvciIsIm9uVW5leHBlY3RlZFNodXRkb3duIiwic3RhcnRVbmV4cGVjdGVkU2h1dGRvd24iLCJvbGREZWxldGVTZXNzaW9uIiwicHJvdG9jb2wiLCJkcml2ZXJGb3JTZXNzaW9uIiwid2FpdE1zIiwiRGF0ZSIsIm5vdyIsImNsZWFyTmV3Q29tbWFuZFRpbWVvdXQiLCJudW1DbWRzIiwiY21kcyIsImkiLCJwdXNoIiwicmVzdWx0cyIsImFsbCIsInNldHRsZSIsInZhbHVlIiwicmVhc29uIiwibWVzc2FnZSIsImNvbnRhaW4iLCJiZWZvcmUiLCJuZXdDb21tYW5kVGltZW91dE1zIiwidGltZW91dHMiLCJpbXBsaWNpdFdhaXRNcyIsInVuZGVmaW5lZCIsImdldFRpbWVvdXRzIiwiaGF2ZSIsInByb3BlcnR5IiwiZGVlcCIsImltcGxpY2l0IiwiY29tbWFuZCIsIm5ld0NhcHMiLCJwcm94eUFjdGl2ZSIsImFuIiwiaW5zdGFuY2VvZiIsIkZ1bmN0aW9uIiwiZmFsc2UiLCJ0aHJvdyIsImdldFByb3h5QXZvaWRMaXN0IiwiQXJyYXkiLCJjYW5Qcm94eSIsImF2b2lkU3R1YiIsInN0dWIiLCJyZXR1cm5zIiwicHJveHlSb3V0ZUlzQXZvaWRlZCIsInRydWUiLCJiZWZvcmVTdGFydFRpbWUiLCJzaG91bGRWYWxpZGF0ZUNhcHMiLCJldmVudEhpc3RvcnkiLCJjb21tYW5kcyIsIm5ld1Nlc3Npb25SZXF1ZXN0ZWQiLCJuZXdTZXNzaW9uU3RhcnRlZCIsImNtZCIsInN0YXJ0VGltZSIsImVuZFRpbWUiLCJsb2dFdmVudCIsImZvbyIsImJhciIsInJlcyIsImV2ZW50cyIsImV2ZW50VGltaW5ncyIsInJlc2V0Iiwib2JqIiwiZDEiLCJEZXZpY2VTZXR0aW5ncyIsImQyIiwiX3NldHRpbmdzIiwiZGVueUluc2VjdXJlIiwiYWxsb3dJbnNlY3VyZSIsInJlbGF4ZWRTZWN1cml0eUVuYWJsZWQiLCJpc0ZlYXR1cmVFbmFibGVkIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC9iYXNlZHJpdmVyL2RyaXZlci10ZXN0cy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IHtEZXZpY2VTZXR0aW5nc30gZnJvbSAnLi4vLi4vbGliJztcbmltcG9ydCB7Y3JlYXRlU2FuZGJveH0gZnJvbSAnc2lub24nO1xuXG4vLyB3cmFwIHRoZXNlIHRlc3RzIGluIGEgZnVuY3Rpb24gc28gd2UgY2FuIGV4cG9ydCB0aGUgdGVzdHMgYW5kIHJlLXVzZSB0aGVtXG4vLyBmb3IgYWN0dWFsIGRyaXZlciBpbXBsZW1lbnRhdGlvbnNcbmZ1bmN0aW9uIGJhc2VEcml2ZXJVbml0VGVzdHMoRHJpdmVyQ2xhc3MsIGRlZmF1bHRDYXBzID0ge30pIHtcbiAgLy8gdG8gZGlzcGxheSB0aGUgZHJpdmVyIHVuZGVyIHRlc3QgaW4gcmVwb3J0XG4gIGNvbnN0IGNsYXNzTmFtZSA9IERyaXZlckNsYXNzLm5hbWUgfHwgJyh1bmtub3duIGRyaXZlciknO1xuXG4gIGRlc2NyaWJlKCdzdGF0aWMgcHJvcGVydHknLCBmdW5jdGlvbiAoKSB7XG4gICAgZGVzY3JpYmUoJ2Jhc2VWZXJzaW9uJywgZnVuY3Rpb24gKCkge1xuICAgICAgaXQoJ3Nob3VsZCBleGlzdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgRHJpdmVyQ2xhc3MuYmFzZVZlcnNpb24uc2hvdWxkLmV4aXN0O1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdMb2cgcHJlZml4JywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgc2V0dXAgbG9nIHByZWZpeCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGQgPSBuZXcgRHJpdmVyQ2xhc3MoKTtcbiAgICAgIGNvbnN0IHByZXZpb3VzUHJlZml4ID0gZC5sb2cucHJlZml4O1xuICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRDYXBzLCB7XG4gICAgICAgICAgcGxhdGZvcm1OYW1lOiAnRmFrZScsXG4gICAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0NvbW1vZG9yZSA2NCcsXG4gICAgICAgIH0pLFxuICAgICAgICBmaXJzdE1hdGNoOiBbe31dLFxuICAgICAgfSk7XG4gICAgICB0cnkge1xuICAgICAgICBwcmV2aW91c1ByZWZpeC5zaG91bGQubm90LmVxbChkLmxvZy5wcmVmaXgpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgYXdhaXQgZC5kZWxldGVTZXNzaW9uKCk7XG4gICAgICAgIHByZXZpb3VzUHJlZml4LnNob3VsZC5lcWwoZC5sb2cucHJlZml4KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoYEJhc2VEcml2ZXIgKGFzICR7Y2xhc3NOYW1lfSlgLCBmdW5jdGlvbiAoKSB7XG4gICAgbGV0IGQsIHczY0NhcHM7XG5cbiAgICBsZXQgc2FuZGJveDtcblxuICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgc2FuZGJveCA9IGNyZWF0ZVNhbmRib3goKTtcbiAgICAgIGQgPSBuZXcgRHJpdmVyQ2xhc3MoKTtcbiAgICAgIHczY0NhcHMgPSB7XG4gICAgICAgIGFsd2F5c01hdGNoOiBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0Q2Fwcywge1xuICAgICAgICAgIHBsYXRmb3JtTmFtZTogJ0Zha2UnLFxuICAgICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdDb21tb2RvcmUgNjQnLFxuICAgICAgICB9KSxcbiAgICAgICAgZmlyc3RNYXRjaDogW3t9XSxcbiAgICAgIH07XG4gICAgfSk7XG4gICAgYWZ0ZXJFYWNoKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGQuZGVsZXRlU2Vzc2lvbigpO1xuICAgICAgc2FuZGJveC5yZXN0b3JlKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlcG9ydCB0aGUgdmVyc2lvbiBvZiBCYXNlRHJpdmVyIHVzZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzaG91bGQuZXhpc3QoRHJpdmVyQ2xhc3MuYmFzZVZlcnNpb24pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYW4gZW1wdHkgc3RhdHVzIG9iamVjdCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBzdGF0dXMgPSBhd2FpdCBkLmdldFN0YXR1cygpO1xuICAgICAgc3RhdHVzLnNob3VsZC5lcWwoe30pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYSBzZXNzaW9uSWQgZnJvbSBjcmVhdGVTZXNzaW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgbGV0IFtzZXNzSWRdID0gYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHczY0NhcHMpO1xuICAgICAgc2hvdWxkLmV4aXN0KHNlc3NJZCk7XG4gICAgICBzZXNzSWQuc2hvdWxkLmJlLmEoJ3N0cmluZycpO1xuICAgICAgc2Vzc0lkLmxlbmd0aC5zaG91bGQuYmUuYWJvdmUoNSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIG5vdCBiZSBhYmxlIHRvIHN0YXJ0IHR3byBzZXNzaW9ucyB3aXRob3V0IGNsb3NpbmcgdGhlIGZpcnN0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIF8uY2xvbmVEZWVwKHczY0NhcHMpKTtcbiAgICAgIGF3YWl0IGRcbiAgICAgICAgLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwgXy5jbG9uZURlZXAodzNjQ2FwcykpXG4gICAgICAgIC5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoJ3Nlc3Npb24nKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYmUgYWJsZSB0byBkZWxldGUgYSBzZXNzaW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgbGV0IHNlc3Npb25JZDEgPSBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwgXy5jbG9uZURlZXAodzNjQ2FwcykpO1xuICAgICAgYXdhaXQgZC5kZWxldGVTZXNzaW9uKCk7XG4gICAgICBzaG91bGQuZXF1YWwoZC5zZXNzaW9uSWQsIG51bGwpO1xuICAgICAgbGV0IHNlc3Npb25JZDIgPSBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwgXy5jbG9uZURlZXAodzNjQ2FwcykpO1xuICAgICAgc2Vzc2lvbklkMS5zaG91bGQubm90LmVxbChzZXNzaW9uSWQyKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZ2V0IHRoZSBjdXJyZW50IHNlc3Npb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBsZXQgWywgY2Fwc10gPSBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwgdzNjQ2Fwcyk7XG4gICAgICBjYXBzLnNob3VsZC5lcXVhbChhd2FpdCBkLmdldFNlc3Npb24oKSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBzZXNzaW9ucyBpZiBubyBzZXNzaW9uIGV4aXN0cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBzZXNzaW9ucyA9IGF3YWl0IGQuZ2V0U2Vzc2lvbnMoKTtcbiAgICAgIHNlc3Npb25zLmxlbmd0aC5zaG91bGQuZXF1YWwoMCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBzZXNzaW9ucycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGNhcHMgPSBfLmNsb25lKHczY0NhcHMpO1xuICAgICAgY2Fwcy5hID0gJ2NhcCc7XG4gICAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwgY2Fwcyk7XG4gICAgICBsZXQgc2Vzc2lvbnMgPSBhd2FpdCBkLmdldFNlc3Npb25zKCk7XG5cbiAgICAgIHNlc3Npb25zLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICBzZXNzaW9uc1swXS5zaG91bGQuaW5jbHVkZSh7XG4gICAgICAgIGlkOiBkLnNlc3Npb25JZCxcbiAgICAgIH0pO1xuICAgICAgc2Vzc2lvbnNbMF0uY2FwYWJpbGl0aWVzLnNob3VsZC5pbmNsdWRlKHtcbiAgICAgICAgZGV2aWNlTmFtZTogJ0NvbW1vZG9yZSA2NCcsXG4gICAgICAgIHBsYXRmb3JtTmFtZTogJ0Zha2UnLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZ1bGZpbGwgYW4gdW5leHBlY3RlZCBkcml2ZXIgcXVpdCBwcm9taXNlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gbWFrZSBhIGNvbW1hbmQgdGhhdCB3aWxsIHdhaXQgYSBiaXQgc28gd2UgY2FuIGNyYXNoIHdoaWxlIGl0J3MgcnVubmluZ1xuICAgICAgZC5nZXRTdGF0dXMgPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IEIuZGVsYXkoMTAwMCk7XG4gICAgICAgIHJldHVybiAnZ29vZCBzdGF0dXMnO1xuICAgICAgfS5iaW5kKGQpO1xuICAgICAgbGV0IGNtZFByb21pc2UgPSBkLmV4ZWN1dGVDb21tYW5kKCdnZXRTdGF0dXMnKTtcbiAgICAgIGF3YWl0IEIuZGVsYXkoMTApO1xuICAgICAgY29uc3QgcCA9IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgc2V0VGltZW91dChcbiAgICAgICAgICAoKSA9PlxuICAgICAgICAgICAgcmVqZWN0KFxuICAgICAgICAgICAgICBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgJ29uVW5leHBlY3RlZFNodXRkb3duIGV2ZW50IGlzIGV4cGVjdGVkIHRvIGJlIGZpcmVkIHdpdGhpbiA1IHNlY29uZHMgdGltZW91dCdcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICA1MDAwXG4gICAgICAgICk7XG4gICAgICAgIGQub25VbmV4cGVjdGVkU2h1dGRvd24ocmVzb2x2ZSk7XG4gICAgICB9KTtcbiAgICAgIGQuc3RhcnRVbmV4cGVjdGVkU2h1dGRvd24obmV3IEVycm9yKCdXZSBjcmFzaGVkJykpO1xuICAgICAgYXdhaXQgY21kUHJvbWlzZS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9XZSBjcmFzaGVkLyk7XG4gICAgICBhd2FpdCBwO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBub3QgYWxsb3cgY29tbWFuZHMgaW4gbWlkZGxlIG9mIHVuZXhwZWN0ZWQgc2h1dGRvd24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBtYWtlIGEgY29tbWFuZCB0aGF0IHdpbGwgd2FpdCBhIGJpdCBzbyB3ZSBjYW4gY3Jhc2ggd2hpbGUgaXQncyBydW5uaW5nXG4gICAgICBkLm9sZERlbGV0ZVNlc3Npb24gPSBkLmRlbGV0ZVNlc3Npb247XG4gICAgICBkLmRlbGV0ZVNlc3Npb24gPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IEIuZGVsYXkoMTAwKTtcbiAgICAgICAgYXdhaXQgdGhpcy5vbGREZWxldGVTZXNzaW9uKCk7XG4gICAgICB9LmJpbmQoZCk7XG4gICAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwgdzNjQ2Fwcyk7XG4gICAgICBjb25zdCBwID0gbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBzZXRUaW1lb3V0KFxuICAgICAgICAgICgpID0+XG4gICAgICAgICAgICByZWplY3QoXG4gICAgICAgICAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAnb25VbmV4cGVjdGVkU2h1dGRvd24gZXZlbnQgaXMgZXhwZWN0ZWQgdG8gYmUgZmlyZWQgd2l0aGluIDUgc2Vjb25kcyB0aW1lb3V0J1xuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgIDUwMDBcbiAgICAgICAgKTtcbiAgICAgICAgZC5vblVuZXhwZWN0ZWRTaHV0ZG93bihyZXNvbHZlKTtcbiAgICAgIH0pO1xuICAgICAgZC5zdGFydFVuZXhwZWN0ZWRTaHV0ZG93bihuZXcgRXJyb3IoJ1dlIGNyYXNoZWQnKSk7XG4gICAgICBhd2FpdCBwO1xuICAgICAgYXdhaXQgZC5leGVjdXRlQ29tbWFuZCgnZ2V0U2Vzc2lvbicpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL3NodXQgZG93bi8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBhbGxvdyBuZXcgY29tbWFuZHMgYWZ0ZXIgZG9uZSBzaHV0dGluZyBkb3duJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gbWFrZSBhIGNvbW1hbmQgdGhhdCB3aWxsIHdhaXQgYSBiaXQgc28gd2UgY2FuIGNyYXNoIHdoaWxlIGl0J3MgcnVubmluZ1xuICAgICAgZC5vbGREZWxldGVTZXNzaW9uID0gZC5kZWxldGVTZXNzaW9uO1xuICAgICAgZC5kZWxldGVTZXNzaW9uID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBCLmRlbGF5KDEwMCk7XG4gICAgICAgIGF3YWl0IHRoaXMub2xkRGVsZXRlU2Vzc2lvbigpO1xuICAgICAgfS5iaW5kKGQpO1xuXG4gICAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwgXy5jbG9uZURlZXAodzNjQ2FwcykpO1xuICAgICAgY29uc3QgcCA9IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgc2V0VGltZW91dChcbiAgICAgICAgICAoKSA9PlxuICAgICAgICAgICAgcmVqZWN0KFxuICAgICAgICAgICAgICBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgJ29uVW5leHBlY3RlZFNodXRkb3duIGV2ZW50IGlzIGV4cGVjdGVkIHRvIGJlIGZpcmVkIHdpdGhpbiA1IHNlY29uZHMgdGltZW91dCdcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICA1MDAwXG4gICAgICAgICk7XG4gICAgICAgIGQub25VbmV4cGVjdGVkU2h1dGRvd24ocmVzb2x2ZSk7XG4gICAgICB9KTtcbiAgICAgIGQuc3RhcnRVbmV4cGVjdGVkU2h1dGRvd24obmV3IEVycm9yKCdXZSBjcmFzaGVkJykpO1xuICAgICAgYXdhaXQgcDtcblxuICAgICAgYXdhaXQgZC5leGVjdXRlQ29tbWFuZCgnZ2V0U2Vzc2lvbicpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL3NodXQgZG93bi8pO1xuICAgICAgYXdhaXQgQi5kZWxheSg1MDApO1xuXG4gICAgICBhd2FpdCBkLmV4ZWN1dGVDb21tYW5kKCdjcmVhdGVTZXNzaW9uJywgbnVsbCwgbnVsbCwgXy5jbG9uZURlZXAodzNjQ2FwcykpO1xuICAgICAgYXdhaXQgZC5kZWxldGVTZXNzaW9uKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGRpc3Rpbmd1aXNoIGJldHdlZW4gVzNDIGFuZCBKU09OV1Agc2Vzc2lvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFRlc3QgVzNDIChsZWF2ZSBmaXJzdCAyIGFyZ3MgbnVsbCBiZWNhdXNlIHRob3NlIGFyZSB0aGUgSlNPTldQIGFyZ3MpXG4gICAgICBhd2FpdCBkLmV4ZWN1dGVDb21tYW5kKCdjcmVhdGVTZXNzaW9uJywgbnVsbCwgbnVsbCwge1xuICAgICAgICBhbHdheXNNYXRjaDogT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdENhcHMsIHtcbiAgICAgICAgICBwbGF0Zm9ybU5hbWU6ICdGYWtlJyxcbiAgICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnQ29tbW9kb3JlIDY0JyxcbiAgICAgICAgfSksXG4gICAgICAgIGZpcnN0TWF0Y2g6IFt7fV0sXG4gICAgICB9KTtcblxuICAgICAgZC5wcm90b2NvbC5zaG91bGQuZXF1YWwoJ1czQycpO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3Byb3RvY29sIGRldGVjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGl0KCdzaG91bGQgdXNlIFczQyBpZiBvbmx5IFczQyBjYXBzIGFyZSBwcm92aWRlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgICAgICBhbHdheXNNYXRjaDogXy5jbG9uZShkZWZhdWx0Q2FwcyksXG4gICAgICAgICAgZmlyc3RNYXRjaDogW3t9XSxcbiAgICAgICAgfSk7XG4gICAgICAgIGQucHJvdG9jb2wuc2hvdWxkLmVxdWFsKCdXM0MnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYXZlIGEgbWV0aG9kIHRvIGdldCBkcml2ZXIgZm9yIGEgc2Vzc2lvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBbc2Vzc0lkXSA9IGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB3M2NDYXBzKTtcbiAgICAgIGQuZHJpdmVyRm9yU2Vzc2lvbihzZXNzSWQpLnNob3VsZC5lcWwoZCk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnY29tbWFuZCBxdWV1ZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBkID0gbmV3IERyaXZlckNsYXNzKCk7XG5cbiAgICAgIGxldCB3YWl0TXMgPSAxMDtcbiAgICAgIGQuZ2V0U3RhdHVzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBCLmRlbGF5KHdhaXRNcyk7XG4gICAgICAgIHJldHVybiBEYXRlLm5vdygpO1xuICAgICAgfS5iaW5kKGQpO1xuXG4gICAgICBkLmdldFNlc3Npb25zID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBCLmRlbGF5KHdhaXRNcyk7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignbXVsdGlwYXNzJyk7XG4gICAgICB9LmJpbmQoZCk7XG5cbiAgICAgIGFmdGVyRWFjaChhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IGQuY2xlYXJOZXdDb21tYW5kVGltZW91dCgpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgcXVldWUgY29tbWFuZHMgYW5kLmV4ZWN1dGVDb21tYW5kL3Jlc3BvbmQgaW4gdGhlIG9yZGVyIHJlY2VpdmVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBsZXQgbnVtQ21kcyA9IDEwO1xuICAgICAgICBsZXQgY21kcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bUNtZHM7IGkrKykge1xuICAgICAgICAgIGNtZHMucHVzaChkLmV4ZWN1dGVDb21tYW5kKCdnZXRTdGF0dXMnKSk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHJlc3VsdHMgPSBhd2FpdCBCLmFsbChjbWRzKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBudW1DbWRzOyBpKyspIHtcbiAgICAgICAgICBpZiAocmVzdWx0c1tpXSA8PSByZXN1bHRzW2kgLSAxXSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdHb3QgcmVzdWx0IG91dCBvZiBvcmRlcicpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgaGFuZGxlIGVycm9ycyBjb3JyZWN0bHkgd2hlbiBxdWV1aW5nJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBsZXQgbnVtQ21kcyA9IDEwO1xuICAgICAgICBsZXQgY21kcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bUNtZHM7IGkrKykge1xuICAgICAgICAgIGlmIChpID09PSA1KSB7XG4gICAgICAgICAgICBjbWRzLnB1c2goZC5leGVjdXRlQ29tbWFuZCgnZ2V0U2Vzc2lvbnMnKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNtZHMucHVzaChkLmV4ZWN1dGVDb21tYW5kKCdnZXRTdGF0dXMnKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCByZXN1bHRzID0gYXdhaXQgQi5zZXR0bGUoY21kcyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgNTsgaSsrKSB7XG4gICAgICAgICAgaWYgKHJlc3VsdHNbaV0udmFsdWUoKSA8PSByZXN1bHRzW2kgLSAxXS52YWx1ZSgpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0dvdCByZXN1bHQgb3V0IG9mIG9yZGVyJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJlc3VsdHNbNV0ucmVhc29uKCkubWVzc2FnZS5zaG91bGQuY29udGFpbignbXVsdGlwYXNzJyk7XG4gICAgICAgIGZvciAobGV0IGkgPSA3OyBpIDwgbnVtQ21kczsgaSsrKSB7XG4gICAgICAgICAgaWYgKHJlc3VsdHNbaV0udmFsdWUoKSA8PSByZXN1bHRzW2kgLSAxXS52YWx1ZSgpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0dvdCByZXN1bHQgb3V0IG9mIG9yZGVyJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBub3QgY2FyZSBpZiBxdWV1ZSBlbXB0aWVzIGZvciBhIGJpdCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgbGV0IG51bUNtZHMgPSAxMDtcbiAgICAgICAgbGV0IGNtZHMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1DbWRzOyBpKyspIHtcbiAgICAgICAgICBjbWRzLnB1c2goZC5leGVjdXRlQ29tbWFuZCgnZ2V0U3RhdHVzJykpO1xuICAgICAgICB9XG4gICAgICAgIGxldCByZXN1bHRzID0gYXdhaXQgQi5hbGwoY21kcyk7XG4gICAgICAgIGNtZHMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1DbWRzOyBpKyspIHtcbiAgICAgICAgICBjbWRzLnB1c2goZC5leGVjdXRlQ29tbWFuZCgnZ2V0U3RhdHVzJykpO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdHMgPSBhd2FpdCBCLmFsbChjbWRzKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBudW1DbWRzOyBpKyspIHtcbiAgICAgICAgICBpZiAocmVzdWx0c1tpXSA8PSByZXN1bHRzW2kgLSAxXSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdHb3QgcmVzdWx0IG91dCBvZiBvcmRlcicpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgndGltZW91dHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBiZWZvcmUoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwgdzNjQ2Fwcyk7XG4gICAgICB9KTtcbiAgICAgIGRlc2NyaWJlKCdjb21tYW5kJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBpdCgnc2hvdWxkIGV4aXN0IGJ5IGRlZmF1bHQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgZC5uZXdDb21tYW5kVGltZW91dE1zLnNob3VsZC5lcXVhbCg2MDAwMCk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIGJlIHNldHRhYmxlIHRocm91Z2ggYHRpbWVvdXRzYCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBhd2FpdCBkLnRpbWVvdXRzKCdjb21tYW5kJywgMjApO1xuICAgICAgICAgIGQubmV3Q29tbWFuZFRpbWVvdXRNcy5zaG91bGQuZXF1YWwoMjApO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgZGVzY3JpYmUoJ2ltcGxpY2l0JywgZnVuY3Rpb24gKCkge1xuICAgICAgICBpdCgnc2hvdWxkIG5vdCBleGlzdCBieSBkZWZhdWx0JywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGQuaW1wbGljaXRXYWl0TXMuc2hvdWxkLmVxdWFsKDApO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCBiZSBzZXR0YWJsZSB0aHJvdWdoIGB0aW1lb3V0c2AnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgYXdhaXQgZC50aW1lb3V0cygnaW1wbGljaXQnLCAyMCk7XG4gICAgICAgICAgZC5pbXBsaWNpdFdhaXRNcy5zaG91bGQuZXF1YWwoMjApO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3RpbWVvdXRzIChXM0MpJywgZnVuY3Rpb24gKCkge1xuICAgICAgYmVmb3JlRWFjaChhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB3M2NDYXBzKTtcbiAgICAgIH0pO1xuICAgICAgYWZ0ZXJFYWNoKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgZC5kZWxldGVTZXNzaW9uKCk7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgZ2V0IHRpbWVvdXRzIHRoYXQgd2Ugc2V0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBkLnRpbWVvdXRzKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgMTAwMCk7XG4gICAgICAgIGF3YWl0IGQuZ2V0VGltZW91dHMoKS5zaG91bGQuZXZlbnR1YWxseS5oYXZlLnByb3BlcnR5KCdpbXBsaWNpdCcsIDEwMDApO1xuICAgICAgICBhd2FpdCBkLnRpbWVvdXRzKCdjb21tYW5kJywgMjAwMCk7XG4gICAgICAgIGF3YWl0IGQuZ2V0VGltZW91dHMoKS5zaG91bGQuZXZlbnR1YWxseS5kZWVwLmVxdWFsKHtcbiAgICAgICAgICBpbXBsaWNpdDogMTAwMCxcbiAgICAgICAgICBjb21tYW5kOiAyMDAwLFxuICAgICAgICB9KTtcbiAgICAgICAgYXdhaXQgZC50aW1lb3V0cyh1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIDMwMDApO1xuICAgICAgICBhd2FpdCBkLmdldFRpbWVvdXRzKCkuc2hvdWxkLmV2ZW50dWFsbHkuZGVlcC5lcXVhbCh7XG4gICAgICAgICAgaW1wbGljaXQ6IDMwMDAsXG4gICAgICAgICAgY29tbWFuZDogMjAwMCxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdyZXNldCBjb21wYXRpYmlsaXR5JywgZnVuY3Rpb24gKCkge1xuICAgICAgaXQoJ3Nob3VsZCBub3QgYWxsb3cgYm90aCBmdWxsUmVzZXQgYW5kIG5vUmVzZXQgdG8gYmUgdHJ1ZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgbmV3Q2FwcyA9IHtcbiAgICAgICAgICBhbHdheXNNYXRjaDogT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdENhcHMsIHtcbiAgICAgICAgICAgIHBsYXRmb3JtTmFtZTogJ0Zha2UnLFxuICAgICAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0NvbW1vZG9yZSA2NCcsXG4gICAgICAgICAgICAnYXBwaXVtOmZ1bGxSZXNldCc6IHRydWUsXG4gICAgICAgICAgICAnYXBwaXVtOm5vUmVzZXQnOiB0cnVlLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9O1xuICAgICAgICBhd2FpdCBkXG4gICAgICAgICAgLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwgbmV3Q2FwcylcbiAgICAgICAgICAuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWRXaXRoKC9ub1Jlc2V0LitmdWxsUmVzZXQvKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3Byb3h5aW5nJywgZnVuY3Rpb24gKCkge1xuICAgICAgbGV0IHNlc3NJZDtcbiAgICAgIGJlZm9yZUVhY2goYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBbc2Vzc0lkXSA9IGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB3M2NDYXBzKTtcbiAgICAgIH0pO1xuICAgICAgZGVzY3JpYmUoJyNwcm94eUFjdGl2ZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaXQoJ3Nob3VsZCBleGlzdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBkLnByb3h5QWN0aXZlLnNob3VsZC5iZS5hbi5pbnN0YW5jZW9mKEZ1bmN0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGQucHJveHlBY3RpdmUoc2Vzc0lkKS5zaG91bGQuYmUuZmFsc2U7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIHRocm93IGFuIGVycm9yIHdoZW4gc2Vzc2lvbklkIGlzIHdyb25nJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICgoKSA9PiB7XG4gICAgICAgICAgICBkLnByb3h5QWN0aXZlKCdhYWEnKTtcbiAgICAgICAgICB9KS5zaG91bGQudGhyb3c7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGRlc2NyaWJlKCcjZ2V0UHJveHlBdm9pZExpc3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGl0KCdzaG91bGQgZXhpc3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgZC5nZXRQcm94eUF2b2lkTGlzdC5zaG91bGQuYmUuYW4uaW5zdGFuY2VvZihGdW5jdGlvbik7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIHJldHVybiBhbiBhcnJheScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBkLmdldFByb3h5QXZvaWRMaXN0KHNlc3NJZCkuc2hvdWxkLmJlLmFuLmluc3RhbmNlb2YoQXJyYXkpO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCB0aHJvdyBhbiBlcnJvciB3aGVuIHNlc3Npb25JZCBpcyB3cm9uZycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAoKCkgPT4ge1xuICAgICAgICAgICAgZC5nZXRQcm94eUF2b2lkTGlzdCgnYWFhJyk7XG4gICAgICAgICAgfSkuc2hvdWxkLnRocm93O1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBkZXNjcmliZSgnI2NhblByb3h5JywgZnVuY3Rpb24gKCkge1xuICAgICAgICBpdCgnc2hvdWxkIGhhdmUgYSAjY2FuUHJveHkgbWV0aG9kJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGQuY2FuUHJveHkuc2hvdWxkLmJlLmFuLmluc3RhbmNlb2YoRnVuY3Rpb24pO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gYSBib29sZWFuIGZyb20gI2NhblByb3h5JywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGQuY2FuUHJveHkoc2Vzc0lkKS5zaG91bGQuYmUuYSgnYm9vbGVhbicpO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCB0aHJvdyBhbiBlcnJvciB3aGVuIHNlc3Npb25JZCBpcyB3cm9uZycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAoKCkgPT4ge1xuICAgICAgICAgICAgZC5jYW5Qcm94eSgpO1xuICAgICAgICAgIH0pLnNob3VsZC50aHJvdztcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgZGVzY3JpYmUoJyNwcm94eVJvdXRlSXNBdm9pZGVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIGZvcm0gb2YgYXZvaWRhbmNlIGxpc3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3QgYXZvaWRTdHViID0gc2FuZGJveC5zdHViKGQsICdnZXRQcm94eUF2b2lkTGlzdCcpO1xuICAgICAgICAgIGF2b2lkU3R1Yi5yZXR1cm5zKFtbJ1BPU1QnLCAvXFwvZm9vL10sIFsnR0VUJ11dKTtcbiAgICAgICAgICAoKCkgPT4ge1xuICAgICAgICAgICAgZC5wcm94eVJvdXRlSXNBdm9pZGVkKCk7XG4gICAgICAgICAgfSkuc2hvdWxkLnRocm93O1xuICAgICAgICAgIGF2b2lkU3R1Yi5yZXR1cm5zKFtcbiAgICAgICAgICAgIFsnUE9TVCcsIC9cXC9mb28vXSxcbiAgICAgICAgICAgIFsnR0VUJywgL15mb28vLCAnYmFyJ10sXG4gICAgICAgICAgXSk7XG4gICAgICAgICAgKCgpID0+IHtcbiAgICAgICAgICAgIGQucHJveHlSb3V0ZUlzQXZvaWRlZCgpO1xuICAgICAgICAgIH0pLnNob3VsZC50aHJvdztcbiAgICAgICAgICBhdm9pZFN0dWIucmVzdG9yZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCByZWplY3QgYmFkIGh0dHAgbWV0aG9kcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjb25zdCBhdm9pZFN0dWIgPSBzYW5kYm94LnN0dWIoZCwgJ2dldFByb3h5QXZvaWRMaXN0Jyk7XG4gICAgICAgICAgYXZvaWRTdHViLnJldHVybnMoW1xuICAgICAgICAgICAgWydQT1NUJywgL15mb28vXSxcbiAgICAgICAgICAgIFsnQkFaRVRFJywgL15iYXIvXSxcbiAgICAgICAgICBdKTtcbiAgICAgICAgICAoKCkgPT4ge1xuICAgICAgICAgICAgZC5wcm94eVJvdXRlSXNBdm9pZGVkKCk7XG4gICAgICAgICAgfSkuc2hvdWxkLnRocm93O1xuICAgICAgICAgIGF2b2lkU3R1Yi5yZXN0b3JlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIHJlamVjdCBub24tcmVnZXggcm91dGVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IGF2b2lkU3R1YiA9IHNhbmRib3guc3R1YihkLCAnZ2V0UHJveHlBdm9pZExpc3QnKTtcbiAgICAgICAgICBhdm9pZFN0dWIucmV0dXJucyhbXG4gICAgICAgICAgICBbJ1BPU1QnLCAvXmZvby9dLFxuICAgICAgICAgICAgWydHRVQnLCAnL2JhciddLFxuICAgICAgICAgIF0pO1xuICAgICAgICAgICgoKSA9PiB7XG4gICAgICAgICAgICBkLnByb3h5Um91dGVJc0F2b2lkZWQoKTtcbiAgICAgICAgICB9KS5zaG91bGQudGhyb3c7XG4gICAgICAgICAgYXZvaWRTdHViLnJlc3RvcmUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgZm9yIHJvdXRlcyBpbiB0aGUgYXZvaWQgbGlzdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjb25zdCBhdm9pZFN0dWIgPSBzYW5kYm94LnN0dWIoZCwgJ2dldFByb3h5QXZvaWRMaXN0Jyk7XG4gICAgICAgICAgYXZvaWRTdHViLnJldHVybnMoW1snUE9TVCcsIC9eXFwvZm9vL11dKTtcbiAgICAgICAgICBkLnByb3h5Um91dGVJc0F2b2lkZWQobnVsbCwgJ1BPU1QnLCAnL2Zvby9iYXInKS5zaG91bGQuYmUudHJ1ZTtcbiAgICAgICAgICBhdm9pZFN0dWIucmVzdG9yZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCBzdHJpcCBhd2F5IGFueSB3ZC9odWIgcHJlZml4JywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IGF2b2lkU3R1YiA9IHNhbmRib3guc3R1YihkLCAnZ2V0UHJveHlBdm9pZExpc3QnKTtcbiAgICAgICAgICBhdm9pZFN0dWIucmV0dXJucyhbWydQT1NUJywgL15cXC9mb28vXV0pO1xuICAgICAgICAgIGQucHJveHlSb3V0ZUlzQXZvaWRlZChudWxsLCAnUE9TVCcsICcvZm9vL2JhcicpLnNob3VsZC5iZS50cnVlO1xuICAgICAgICAgIGF2b2lkU3R1Yi5yZXN0b3JlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSBmb3Igcm91dGVzIG5vdCBpbiB0aGUgYXZvaWQgbGlzdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjb25zdCBhdm9pZFN0dWIgPSBzYW5kYm94LnN0dWIoZCwgJ2dldFByb3h5QXZvaWRMaXN0Jyk7XG4gICAgICAgICAgYXZvaWRTdHViLnJldHVybnMoW1snUE9TVCcsIC9eXFwvZm9vL11dKTtcbiAgICAgICAgICBkLnByb3h5Um91dGVJc0F2b2lkZWQobnVsbCwgJ0dFVCcsICcvZm9vL2JhcicpLnNob3VsZC5iZS5mYWxzZTtcbiAgICAgICAgICBkLnByb3h5Um91dGVJc0F2b2lkZWQobnVsbCwgJ1BPU1QnLCAnL2JvbycpLnNob3VsZC5iZS5mYWxzZTtcbiAgICAgICAgICBhdm9pZFN0dWIucmVzdG9yZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ2V2ZW50IHRpbWluZyBmcmFtZXdvcmsnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBsZXQgYmVmb3JlU3RhcnRUaW1lO1xuICAgICAgYmVmb3JlRWFjaChhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGJlZm9yZVN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgICAgIGQuc2hvdWxkVmFsaWRhdGVDYXBzID0gZmFsc2U7XG4gICAgICAgIGF3YWl0IGQuZXhlY3V0ZUNvbW1hbmQoJ2NyZWF0ZVNlc3Npb24nLCBudWxsLCBudWxsLCB7XG4gICAgICAgICAgYWx3YXlzTWF0Y2g6IHsuLi5kZWZhdWx0Q2Fwc30sXG4gICAgICAgICAgZmlyc3RNYXRjaDogW3t9XSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIGRlc2NyaWJlKCcjZXZlbnRIaXN0b3J5JywgZnVuY3Rpb24gKCkge1xuICAgICAgICBpdCgnc2hvdWxkIGhhdmUgYW4gZXZlbnRIaXN0b3J5IHByb3BlcnR5JywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHNob3VsZC5leGlzdChkLmV2ZW50SGlzdG9yeSk7XG4gICAgICAgICAgc2hvdWxkLmV4aXN0KGQuZXZlbnRIaXN0b3J5LmNvbW1hbmRzKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaXQoJ3Nob3VsZCBoYXZlIGEgc2Vzc2lvbiBzdGFydCB0aW1pbmcgYWZ0ZXIgc2Vzc2lvbiBzdGFydCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBsZXQge25ld1Nlc3Npb25SZXF1ZXN0ZWQsIG5ld1Nlc3Npb25TdGFydGVkfSA9IGQuZXZlbnRIaXN0b3J5O1xuICAgICAgICAgIG5ld1Nlc3Npb25SZXF1ZXN0ZWQuc2hvdWxkLmhhdmUubGVuZ3RoKDEpO1xuICAgICAgICAgIG5ld1Nlc3Npb25TdGFydGVkLnNob3VsZC5oYXZlLmxlbmd0aCgxKTtcbiAgICAgICAgICBuZXdTZXNzaW9uUmVxdWVzdGVkWzBdLnNob3VsZC5iZS5hKCdudW1iZXInKTtcbiAgICAgICAgICBuZXdTZXNzaW9uU3RhcnRlZFswXS5zaG91bGQuYmUuYSgnbnVtYmVyJyk7XG4gICAgICAgICAgKG5ld1Nlc3Npb25SZXF1ZXN0ZWRbMF0gPj0gYmVmb3JlU3RhcnRUaW1lKS5zaG91bGQuYmUudHJ1ZTtcbiAgICAgICAgICAobmV3U2Vzc2lvblN0YXJ0ZWRbMF0gPj0gbmV3U2Vzc2lvblJlcXVlc3RlZFswXSkuc2hvdWxkLmJlLnRydWU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGl0KCdzaG91bGQgaW5jbHVkZSBhIGNvbW1hbmRzIGxpc3QnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgYXdhaXQgZC5leGVjdXRlQ29tbWFuZCgnZ2V0U3RhdHVzJywgW10pO1xuICAgICAgICAgIGQuZXZlbnRIaXN0b3J5LmNvbW1hbmRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMik7XG4gICAgICAgICAgZC5ldmVudEhpc3RvcnkuY29tbWFuZHNbMV0uY21kLnNob3VsZC5lcXVhbCgnZ2V0U3RhdHVzJyk7XG4gICAgICAgICAgZC5ldmVudEhpc3RvcnkuY29tbWFuZHNbMV0uc3RhcnRUaW1lLnNob3VsZC5iZS5hKCdudW1iZXInKTtcbiAgICAgICAgICBkLmV2ZW50SGlzdG9yeS5jb21tYW5kc1sxXS5lbmRUaW1lLnNob3VsZC5iZS5hKCdudW1iZXInKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIGRlc2NyaWJlKCcjbG9nRXZlbnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGl0KCdzaG91bGQgYWxsb3cgbG9nZ2luZyBhcmJpdHJhcnkgZXZlbnRzJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGQubG9nRXZlbnQoJ2ZvbycpO1xuICAgICAgICAgIGQuZXZlbnRIaXN0b3J5LmZvb1swXS5zaG91bGQuYmUuYSgnbnVtYmVyJyk7XG4gICAgICAgICAgKGQuZXZlbnRIaXN0b3J5LmZvb1swXSA+PSBiZWZvcmVTdGFydFRpbWUpLnNob3VsZC5iZS50cnVlO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCBub3QgYWxsb3cgcmVzZXJ2ZWQgb3Igb2RkbHkgZm9ybWVkIGV2ZW50IG5hbWVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICgoKSA9PiB7XG4gICAgICAgICAgICBkLmxvZ0V2ZW50KCdjb21tYW5kcycpO1xuICAgICAgICAgIH0pLnNob3VsZC50aHJvdygpO1xuICAgICAgICAgICgoKSA9PiB7XG4gICAgICAgICAgICBkLmxvZ0V2ZW50KDEpO1xuICAgICAgICAgIH0pLnNob3VsZC50aHJvdygpO1xuICAgICAgICAgICgoKSA9PiB7XG4gICAgICAgICAgICBkLmxvZ0V2ZW50KHt9KTtcbiAgICAgICAgICB9KS5zaG91bGQudGhyb3coKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgYWxsb3cgbG9nZ2luZyB0aGUgc2FtZSBldmVudCBtdWx0aXBsZSB0aW1lcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZC5sb2dFdmVudCgnYmFyJyk7XG4gICAgICAgIGQubG9nRXZlbnQoJ2JhcicpO1xuICAgICAgICBkLmV2ZW50SGlzdG9yeS5iYXIuc2hvdWxkLmhhdmUubGVuZ3RoKDIpO1xuICAgICAgICBkLmV2ZW50SGlzdG9yeS5iYXJbMV0uc2hvdWxkLmJlLmEoJ251bWJlcicpO1xuICAgICAgICAoZC5ldmVudEhpc3RvcnkuYmFyWzFdID49IGQuZXZlbnRIaXN0b3J5LmJhclswXSkuc2hvdWxkLmJlLnRydWU7XG4gICAgICB9KTtcbiAgICAgIGRlc2NyaWJlKCdnZXRTZXNzaW9uIGRlY29yYXRpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGl0KCdzaG91bGQgZGVjb3JhdGUgZ2V0U2Vzc2lvbiByZXNwb25zZSBpZiBvcHQtaW4gY2FwIGlzIHByb3ZpZGVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGxldCByZXMgPSBhd2FpdCBkLmdldFNlc3Npb24oKTtcbiAgICAgICAgICBzaG91bGQubm90LmV4aXN0KHJlcy5ldmVudHMpO1xuXG4gICAgICAgICAgZC5jYXBzLmV2ZW50VGltaW5ncyA9IHRydWU7XG4gICAgICAgICAgcmVzID0gYXdhaXQgZC5nZXRTZXNzaW9uKCk7XG4gICAgICAgICAgc2hvdWxkLmV4aXN0KHJlcy5ldmVudHMpO1xuICAgICAgICAgIHNob3VsZC5leGlzdChyZXMuZXZlbnRzLm5ld1Nlc3Npb25SZXF1ZXN0ZWQpO1xuICAgICAgICAgIHJlcy5ldmVudHMubmV3U2Vzc2lvblJlcXVlc3RlZFswXS5zaG91bGQuYmUuYSgnbnVtYmVyJyk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgZGVzY3JpYmUoJy5yZXNldCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGl0KCdzaG91bGQgcmVzZXQgYXMgVzNDIGlmIHRoZSBvcmlnaW5hbCBzZXNzaW9uIHdhcyBXM0MnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IGNhcHMgPSB7XG4gICAgICAgICAgYWx3YXlzTWF0Y2g6IE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgJ2FwcGl1bTphcHAnOiAnRmFrZScsXG4gICAgICAgICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdGYWtlJyxcbiAgICAgICAgICAgICAgJ2FwcGl1bTphdXRvbWF0aW9uTmFtZSc6ICdGYWtlJyxcbiAgICAgICAgICAgICAgcGxhdGZvcm1OYW1lOiAnRmFrZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGVmYXVsdENhcHNcbiAgICAgICAgICApLFxuICAgICAgICAgIGZpcnN0TWF0Y2g6IFt7fV0sXG4gICAgICAgIH07XG4gICAgICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbih1bmRlZmluZWQsIHVuZGVmaW5lZCwgY2Fwcyk7XG4gICAgICAgIGQucHJvdG9jb2wuc2hvdWxkLmVxdWFsKCdXM0MnKTtcbiAgICAgICAgYXdhaXQgZC5yZXNldCgpO1xuICAgICAgICBkLnByb3RvY29sLnNob3VsZC5lcXVhbCgnVzNDJyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0RldmljZVNldHRpbmdzJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgbm90IGhvbGQgb24gdG8gcmVmZXJlbmNlIG9mIGRlZmF1bHRzIGluIGNvbnN0cnVjdG9yJywgZnVuY3Rpb24gKCkge1xuICAgICAgbGV0IG9iaiA9IHtmb286ICdiYXInfTtcbiAgICAgIGxldCBkMSA9IG5ldyBEZXZpY2VTZXR0aW5ncyhvYmopO1xuICAgICAgbGV0IGQyID0gbmV3IERldmljZVNldHRpbmdzKG9iaik7XG4gICAgICBkMS5fc2V0dGluZ3MuZm9vID0gJ2Jheic7XG4gICAgICBkMS5fc2V0dGluZ3Muc2hvdWxkLm5vdC5lcWwoZDIuX3NldHRpbmdzKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJy5pc0ZlYXR1cmVFbmFibGVkJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGQgPSBuZXcgRHJpdmVyQ2xhc3MoKTtcblxuICAgIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBkLmRlbnlJbnNlY3VyZSA9IG51bGw7XG4gICAgICBkLmFsbG93SW5zZWN1cmUgPSBudWxsO1xuICAgICAgZC5yZWxheGVkU2VjdXJpdHlFbmFibGVkID0gbnVsbDtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgc2F5IGEgZmVhdHVyZSBpcyBlbmFibGVkIHdoZW4gaXQgaXMgZXhwbGljaXRseSBhbGxvd2VkJywgZnVuY3Rpb24gKCkge1xuICAgICAgZC5hbGxvd0luc2VjdXJlID0gWydmb28nLCAnYmFyJ107XG4gICAgICBkLmlzRmVhdHVyZUVuYWJsZWQoJ2ZvbycpLnNob3VsZC5iZS50cnVlO1xuICAgICAgZC5pc0ZlYXR1cmVFbmFibGVkKCdiYXInKS5zaG91bGQuYmUudHJ1ZTtcbiAgICAgIGQuaXNGZWF0dXJlRW5hYmxlZCgnYmF6Jykuc2hvdWxkLmJlLmZhbHNlO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBzYXkgYSBmZWF0dXJlIGlzIG5vdCBlbmFibGVkIGlmIGl0IGlzIG5vdCBlbmFibGVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgZC5hbGxvd0luc2VjdXJlID0gW107XG4gICAgICBkLmlzRmVhdHVyZUVuYWJsZWQoJ2ZvbycpLnNob3VsZC5iZS5mYWxzZTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcHJlZmVyIGRlbnlJbnNlY3VyZSB0byBhbGxvd0luc2VjdXJlJywgZnVuY3Rpb24gKCkge1xuICAgICAgZC5hbGxvd0luc2VjdXJlID0gWydmb28nLCAnYmFyJ107XG4gICAgICBkLmRlbnlJbnNlY3VyZSA9IFsnZm9vJ107XG4gICAgICBkLmlzRmVhdHVyZUVuYWJsZWQoJ2ZvbycpLnNob3VsZC5iZS5mYWxzZTtcbiAgICAgIGQuaXNGZWF0dXJlRW5hYmxlZCgnYmFyJykuc2hvdWxkLmJlLnRydWU7XG4gICAgICBkLmlzRmVhdHVyZUVuYWJsZWQoJ2JheicpLnNob3VsZC5iZS5mYWxzZTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYWxsb3cgZ2xvYmFsIHNldHRpbmcgZm9yIGluc2VjdXJpdHknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkLnJlbGF4ZWRTZWN1cml0eUVuYWJsZWQgPSB0cnVlO1xuICAgICAgZC5pc0ZlYXR1cmVFbmFibGVkKCdmb28nKS5zaG91bGQuYmUudHJ1ZTtcbiAgICAgIGQuaXNGZWF0dXJlRW5hYmxlZCgnYmFyJykuc2hvdWxkLmJlLnRydWU7XG4gICAgICBkLmlzRmVhdHVyZUVuYWJsZWQoJ2JheicpLnNob3VsZC5iZS50cnVlO1xuICAgIH0pO1xuXG4gICAgaXQoJ2dsb2JhbCBzZXR0aW5nIHNob3VsZCBiZSBvdmVycmlkZWFibGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkLnJlbGF4ZWRTZWN1cml0eUVuYWJsZWQgPSB0cnVlO1xuICAgICAgZC5kZW55SW5zZWN1cmUgPSBbJ2ZvbycsICdiYXInXTtcbiAgICAgIGQuaXNGZWF0dXJlRW5hYmxlZCgnZm9vJykuc2hvdWxkLmJlLmZhbHNlO1xuICAgICAgZC5pc0ZlYXR1cmVFbmFibGVkKCdiYXInKS5zaG91bGQuYmUuZmFsc2U7XG4gICAgICBkLmlzRmVhdHVyZUVuYWJsZWQoJ2JheicpLnNob3VsZC5iZS50cnVlO1xuICAgIH0pO1xuICB9KTtcbn1cblxu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
@@ -23,4 +23,4 @@ require("source-map-support/register");
23
23
  var _driverTests = _interopRequireDefault(require("./driver-tests"));
24
24
 
25
25
  var _driverE2eTests = _interopRequireDefault(require("./driver-e2e-tests"));
26
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvYmFzZWRyaXZlci9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7O0FBQ0EiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0cmFuc3BpbGU6bWFpblxuXG5pbXBvcnQgYmFzZURyaXZlclVuaXRUZXN0cyBmcm9tICcuL2RyaXZlci10ZXN0cyc7XG5pbXBvcnQgYmFzZURyaXZlckUyRVRlc3RzIGZyb20gJy4vZHJpdmVyLWUyZS10ZXN0cyc7XG5cbmV4cG9ydCB7IGJhc2VEcml2ZXJVbml0VGVzdHMsIGJhc2VEcml2ZXJFMkVUZXN0cyB9O1xuIl19
26
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC9iYXNlZHJpdmVyL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHRyYW5zcGlsZTptYWluXG5cbmltcG9ydCBiYXNlRHJpdmVyVW5pdFRlc3RzIGZyb20gJy4vZHJpdmVyLXRlc3RzJztcbmltcG9ydCBiYXNlRHJpdmVyRTJFVGVzdHMgZnJvbSAnLi9kcml2ZXItZTJlLXRlc3RzJztcblxuZXhwb3J0IHtiYXNlRHJpdmVyVW5pdFRlc3RzLCBiYXNlRHJpdmVyRTJFVGVzdHN9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7O0FBQ0EifQ==
@@ -12,4 +12,4 @@ var _driverE2eTests = _interopRequireDefault(require("../../basedriver/driver-e2
12
12
  platformName: 'iOS',
13
13
  'appium:deviceName': 'Delorean'
14
14
  });
15
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvZTJlL2Jhc2Vkcml2ZXIvZHJpdmVyLmUyZS5zcGVjLmpzIl0sIm5hbWVzIjpbIkJhc2VEcml2ZXIiLCJwbGF0Zm9ybU5hbWUiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBOztBQUNBOztBQUNBLDZCQUFtQkEsWUFBbkIsRUFBK0I7QUFDN0JDLEVBQUFBLFlBQVksRUFBRSxLQURlO0FBRTdCLHVCQUFxQjtBQUZRLENBQS9CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHJhbnNwaWxlOm1vY2hhXG5cbmltcG9ydCBCYXNlRHJpdmVyIGZyb20gJy4uLy4uLy4uL2xpYic7XG5pbXBvcnQgYmFzZURyaXZlckUyRVRlc3RzIGZyb20gJy4uLy4uL2Jhc2Vkcml2ZXIvZHJpdmVyLWUyZS10ZXN0cyc7XG5iYXNlRHJpdmVyRTJFVGVzdHMoQmFzZURyaXZlciwge1xuICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nXG59KTtcbiJdfQ==
15
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJiYXNlRHJpdmVyRTJFVGVzdHMiLCJCYXNlRHJpdmVyIiwicGxhdGZvcm1OYW1lIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC9lMmUvYmFzZWRyaXZlci9kcml2ZXIuZTJlLnNwZWMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gdHJhbnNwaWxlOm1vY2hhXG5cbmltcG9ydCBCYXNlRHJpdmVyIGZyb20gJy4uLy4uLy4uL2xpYic7XG5pbXBvcnQgYmFzZURyaXZlckUyRVRlc3RzIGZyb20gJy4uLy4uL2Jhc2Vkcml2ZXIvZHJpdmVyLWUyZS10ZXN0cyc7XG5iYXNlRHJpdmVyRTJFVGVzdHMoQmFzZURyaXZlciwge1xuICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nLFxufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBOztBQUNBOztBQUNBLElBQUFBLHVCQUFBLEVBQW1CQyxZQUFuQixFQUErQjtFQUM3QkMsWUFBWSxFQUFFLEtBRGU7RUFFN0IscUJBQXFCO0FBRlEsQ0FBL0IifQ==
@@ -189,4 +189,4 @@ describe('app download and configuration', function () {
189
189
  });
190
190
  });
191
191
  });
192
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvZTJlL2Jhc2Vkcml2ZXIvaGVscGVycy5lMmUuc3BlYy5qcyJdLCJuYW1lcyI6WyJnZXRGaXh0dXJlIiwiZmlsZSIsInBhdGgiLCJyZXNvbHZlIiwiX19kaXJuYW1lIiwiZGVzY3JpYmUiLCJpdCIsIm5ld0FwcFBhdGgiLCJzaG91bGQiLCJjb250YWluIiwiY29udGVudHMiLCJmcyIsInJlYWRGaWxlIiwiZXFsIiwiYmUiLCJyZWplY3RlZFdpdGgiLCJwb3J0Iiwic2VydmVyVXJsIiwiYmVmb3JlIiwiVEVTVF9IT1NUIiwiZXZlbnR1YWxseSIsInNlcnZlciIsImRpciIsInNlcnZlIiwiaW5kZXgiLCJzZXRIZWFkZXJzIiwicmVzIiwic2V0SGVhZGVyIiwiaHR0cCIsImNyZWF0ZVNlcnZlciIsInJlcSIsInVybCIsImluZGV4T2YiLCJ3cml0ZUhlYWQiLCJlbmQiLCJjb250ZW50VHlwZSIsIlVSTFNlYXJjaFBhcmFtcyIsInBhcnNlIiwic2VhcmNoIiwiZ2V0IiwiY2xvc2UiLCJiaW5kIiwiQiIsImRlbGF5IiwicmVqZWN0Iiwib24iLCJlcnIiLCJsaXN0ZW4iLCJhZnRlciIsInJlamVjdGVkIiwiZW5jb2RlVVJJQ29tcG9uZW50Iiwibm90Il0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQSxTQUFTQSxVQUFULENBQXFCQyxJQUFyQixFQUEyQjtBQUV6QixTQUFPQyxjQUFLQyxPQUFMLENBQWFDLFNBQWIsRUFBd0IsSUFBeEIsRUFBOEIsVUFBOUIsRUFBMENILElBQTFDLENBQVA7QUFDRDs7QUFFREksUUFBUSxDQUFDLGdDQUFELEVBQW1DLFlBQVk7QUFDckRBLEVBQUFBLFFBQVEsQ0FBQyxjQUFELEVBQWlCLFlBQVk7QUFDbkNDLElBQUFBLEVBQUUsQ0FBQyxzQ0FBRCxFQUF5QyxrQkFBa0I7QUFDM0QsVUFBSUMsVUFBVSxHQUFHLE1BQU0sMkJBQWFQLFVBQVUsQ0FBQyxnQkFBRCxDQUF2QixFQUEyQyxNQUEzQyxDQUF2QjtBQUNBTyxNQUFBQSxVQUFVLENBQUNDLE1BQVgsQ0FBa0JDLE9BQWxCLENBQTBCLGdCQUExQjtBQUNBLFVBQUlDLFFBQVEsR0FBRyxNQUFNQyxZQUFHQyxRQUFILENBQVlMLFVBQVosRUFBd0IsTUFBeEIsQ0FBckI7QUFDQUcsTUFBQUEsUUFBUSxDQUFDRixNQUFULENBQWdCSyxHQUFoQixDQUFvQiw2QkFBcEI7QUFDRCxLQUxDLENBQUY7QUFNQVAsSUFBQUEsRUFBRSxDQUFDLHNDQUFELEVBQXlDLGtCQUFrQjtBQUMzRCxVQUFJQyxVQUFVLEdBQUcsTUFBTSwyQkFBYVAsVUFBVSxDQUFDLG9CQUFELENBQXZCLEVBQStDLE1BQS9DLENBQXZCO0FBQ0FPLE1BQUFBLFVBQVUsQ0FBQ0MsTUFBWCxDQUFrQkMsT0FBbEIsQ0FBMEIsb0JBQTFCO0FBQ0EsVUFBSUMsUUFBUSxHQUFHLE1BQU1DLFlBQUdDLFFBQUgsQ0FBWUwsVUFBWixFQUF3QixNQUF4QixDQUFyQjtBQUNBRyxNQUFBQSxRQUFRLENBQUNGLE1BQVQsQ0FBZ0JLLEdBQWhCLENBQW9CLDZCQUFwQjtBQUNELEtBTEMsQ0FBRjtBQU1BUCxJQUFBQSxFQUFFLENBQUMsb0RBQUQsRUFBdUQsa0JBQWtCO0FBQ3pFLFVBQUlDLFVBQVUsR0FBRyxNQUFNLDJCQUFhUCxVQUFVLENBQUMsb0JBQUQsQ0FBdkIsRUFBK0MsTUFBL0MsQ0FBdkI7QUFDQU8sTUFBQUEsVUFBVSxDQUFDQyxNQUFYLENBQWtCQyxPQUFsQixDQUEwQixnQkFBMUI7QUFDQSxVQUFJQyxRQUFRLEdBQUcsTUFBTUMsWUFBR0MsUUFBSCxDQUFZTCxVQUFaLEVBQXdCLE1BQXhCLENBQXJCO0FBQ0FHLE1BQUFBLFFBQVEsQ0FBQ0YsTUFBVCxDQUFnQkssR0FBaEIsQ0FBb0IsNkJBQXBCO0FBQ0QsS0FMQyxDQUFGO0FBTUFQLElBQUFBLEVBQUUsQ0FBQyxnREFBRCxFQUFtRCxrQkFBa0I7QUFDckUsVUFBSUMsVUFBVSxHQUFHLE1BQU0sMkJBQWFQLFVBQVUsQ0FBQyxnQkFBRCxDQUF2QixFQUEyQyxNQUEzQyxDQUF2QjtBQUNBTyxNQUFBQSxVQUFVLENBQUNDLE1BQVgsQ0FBa0JDLE9BQWxCLENBQTBCLGdCQUExQjtBQUNBLFVBQUlDLFFBQVEsR0FBRyxNQUFNQyxZQUFHQyxRQUFILENBQVlMLFVBQVosRUFBd0IsTUFBeEIsQ0FBckI7QUFDQUcsTUFBQUEsUUFBUSxDQUFDRixNQUFULENBQWdCSyxHQUFoQixDQUFvQiw2QkFBcEI7QUFDRCxLQUxDLENBQUY7QUFNQVAsSUFBQUEsRUFBRSxDQUFDLGdDQUFELEVBQW1DLGtCQUFrQjtBQUNyRCxZQUFNLDJCQUFhTixVQUFVLENBQUMsa0JBQUQsQ0FBdkIsRUFBNkMsTUFBN0MsRUFDSFEsTUFERyxDQUNJTSxFQURKLENBQ09DLFlBRFAsQ0FDb0IsSUFEcEIsQ0FBTjtBQUVELEtBSEMsQ0FBRjtBQUlBVCxJQUFBQSxFQUFFLENBQUMsd0NBQUQsRUFBMkMsa0JBQWtCO0FBQzdELFlBQU0sMkJBQWFOLFVBQVUsQ0FBQyxnQkFBRCxDQUF2QixFQUEyQyxRQUEzQyxFQUNIUSxNQURHLENBQ0lNLEVBREosQ0FDT0MsWUFEUCxDQUNvQix3QkFEcEIsQ0FBTjtBQUVELEtBSEMsQ0FBRjtBQUlBVCxJQUFBQSxFQUFFLENBQUMseUVBQUQsRUFBNEUsa0JBQWtCO0FBQzlGLFlBQU0sMkJBQWFOLFVBQVUsQ0FBQyxvQkFBRCxDQUF2QixFQUErQyxRQUEvQyxFQUNIUSxNQURHLENBQ0lNLEVBREosQ0FDT0MsWUFEUCxDQUNvQix3QkFEcEIsQ0FBTjtBQUVELEtBSEMsQ0FBRjtBQUlBVixJQUFBQSxRQUFRLENBQUMscUNBQUQsRUFBd0MsWUFBWTtBQUMxRCxVQUFJVyxJQUFKO0FBQ0EsVUFBSUMsU0FBSjtBQUVBQyxNQUFBQSxNQUFNLENBQUMsa0JBQWtCO0FBQ3ZCRixRQUFBQSxJQUFJLEdBQUcsTUFBTSwyQkFBWSxJQUFaLENBQWI7QUFDQUMsUUFBQUEsU0FBUyxHQUFJLFVBQVNFLG1CQUFVLElBQUdILElBQUssRUFBeEM7QUFDRCxPQUhLLENBQU47QUFLQVgsTUFBQUEsUUFBUSxDQUFDLHNCQUFELEVBQXlCLFlBQVk7QUFDM0NDLFFBQUFBLEVBQUUsQ0FBQyxvQ0FBRCxFQUF1QyxrQkFBa0I7QUFDekQsZ0JBQU0sMkJBQWMsR0FBRVcsU0FBVSxxQkFBMUIsRUFBZ0QsTUFBaEQsRUFDSFQsTUFERyxDQUNJWSxVQURKLENBQ2VOLEVBRGYsQ0FDa0JDLFlBRGxCLENBQytCLGNBRC9CLENBQU47QUFFRCxTQUhDLENBQUY7QUFJRCxPQUxPLENBQVI7QUFNQVYsTUFBQUEsUUFBUSxDQUFDLGtCQUFELEVBQXFCLFlBQVk7QUFFdkMsWUFBSWdCLE1BQUo7QUFDQUgsUUFBQUEsTUFBTSxDQUFDLFlBQVk7QUFDakIsZ0JBQU1JLEdBQUcsR0FBR3BCLGNBQUtDLE9BQUwsQ0FBYUMsU0FBYixFQUF3QixJQUF4QixFQUE4QixVQUE5QixDQUFaOztBQUNBLGdCQUFNbUIsS0FBSyxHQUFHLDBCQUFZRCxHQUFaLEVBQWlCO0FBQzdCRSxZQUFBQSxLQUFLLEVBQUUsS0FEc0I7QUFFN0JDLFlBQUFBLFVBQVUsRUFBRSxDQUFDQyxHQUFELEVBQU14QixJQUFOLEtBQWU7QUFDekJ3QixjQUFBQSxHQUFHLENBQUNDLFNBQUosQ0FBYyxxQkFBZCxFQUFxQyxpQ0FBbUJ6QixJQUFuQixDQUFyQztBQUNEO0FBSjRCLFdBQWpCLENBQWQ7QUFPQW1CLFVBQUFBLE1BQU0sR0FBR08sY0FBS0MsWUFBTCxDQUFrQixVQUFVQyxHQUFWLEVBQWVKLEdBQWYsRUFBb0I7QUFDN0MsZ0JBQUlJLEdBQUcsQ0FBQ0MsR0FBSixDQUFRQyxPQUFSLENBQWdCLFNBQWhCLE1BQStCLENBQUMsQ0FBcEMsRUFBdUM7QUFDckNOLGNBQUFBLEdBQUcsQ0FBQ08sU0FBSixDQUFjLEdBQWQ7QUFDQVAsY0FBQUEsR0FBRyxDQUFDUSxHQUFKO0FBQ0E7QUFDRDs7QUFFRCxrQkFBTUMsV0FBVyxHQUFHLElBQUlDLGVBQUosQ0FBb0JMLGFBQUlNLEtBQUosQ0FBVVAsR0FBRyxDQUFDQyxHQUFkLEVBQW1CTyxNQUF2QyxFQUErQ0MsR0FBL0MsQ0FBbUQsY0FBbkQsQ0FBcEI7O0FBQ0EsZ0JBQUlKLFdBQVcsS0FBSyxJQUFwQixFQUEwQjtBQUN4QlQsY0FBQUEsR0FBRyxDQUFDQyxTQUFKLENBQWMsY0FBZCxFQUE4QlEsV0FBOUI7QUFDRDs7QUFDRFosWUFBQUEsS0FBSyxDQUFDTyxHQUFELEVBQU1KLEdBQU4sRUFBVywyQkFBYUksR0FBYixFQUFrQkosR0FBbEIsQ0FBWCxDQUFMO0FBQ0QsV0FaUSxDQUFUO0FBYUEsZ0JBQU1jLEtBQUssR0FBR25CLE1BQU0sQ0FBQ21CLEtBQVAsQ0FBYUMsSUFBYixDQUFrQnBCLE1BQWxCLENBQWQ7O0FBQ0FBLFVBQUFBLE1BQU0sQ0FBQ21CLEtBQVAsR0FBZSxrQkFBa0I7QUFFL0Isa0JBQU1FLGtCQUFFQyxLQUFGLENBQVEsSUFBUixDQUFOO0FBQ0EsbUJBQU8sTUFBTSxJQUFJRCxpQkFBSixDQUFNLENBQUN2QyxPQUFELEVBQVV5QyxNQUFWLEtBQXFCO0FBQ3RDdkIsY0FBQUEsTUFBTSxDQUFDd0IsRUFBUCxDQUFVLE9BQVYsRUFBbUIxQyxPQUFuQjtBQUNBcUMsY0FBQUEsS0FBSyxDQUFFTSxHQUFELElBQVM7QUFDYixvQkFBSUEsR0FBSixFQUFTRixNQUFNLENBQUNFLEdBQUQsQ0FBTjtBQUNWLGVBRkksQ0FBTDtBQUdELGFBTFksQ0FBYjtBQU1ELFdBVEQ7O0FBVUF6QixVQUFBQSxNQUFNLENBQUMwQixNQUFQLENBQWMvQixJQUFkO0FBQ0QsU0FsQ0ssQ0FBTjtBQW1DQWdDLFFBQUFBLEtBQUssQ0FBQyxrQkFBa0I7QUFDdEIsZ0JBQU0zQixNQUFNLENBQUNtQixLQUFQLEVBQU47QUFDRCxTQUZJLENBQUw7QUFJQWxDLFFBQUFBLEVBQUUsQ0FBQywwQkFBRCxFQUE2QixrQkFBa0I7QUFDL0MsY0FBSUMsVUFBVSxHQUFHLE1BQU0sMkJBQWMsR0FBRVUsU0FBVSxxQkFBMUIsRUFBZ0QsTUFBaEQsQ0FBdkI7QUFDQVYsVUFBQUEsVUFBVSxDQUFDQyxNQUFYLENBQWtCQyxPQUFsQixDQUEwQixnQkFBMUI7QUFDQSxjQUFJQyxRQUFRLEdBQUcsTUFBTUMsWUFBR0MsUUFBSCxDQUFZTCxVQUFaLEVBQXdCLE1BQXhCLENBQXJCO0FBQ0FHLFVBQUFBLFFBQVEsQ0FBQ0YsTUFBVCxDQUFnQkssR0FBaEIsQ0FBb0IsNkJBQXBCO0FBQ0QsU0FMQyxDQUFGO0FBTUFQLFFBQUFBLEVBQUUsQ0FBQyw0Q0FBRCxFQUErQyxrQkFBa0I7QUFDakUsY0FBSUMsVUFBVSxHQUFHLE1BQU0sMkJBQWMsR0FBRVUsU0FBVSxtQ0FBMUIsRUFBOEQsTUFBOUQsQ0FBdkI7QUFDQVYsVUFBQUEsVUFBVSxDQUFDQyxNQUFYLENBQWtCQyxPQUFsQixDQUEwQixNQUExQjtBQUNBLGNBQUlDLFFBQVEsR0FBRyxNQUFNQyxZQUFHQyxRQUFILENBQVlMLFVBQVosRUFBd0IsTUFBeEIsQ0FBckI7QUFDQUcsVUFBQUEsUUFBUSxDQUFDRixNQUFULENBQWdCSyxHQUFoQixDQUFvQiw2QkFBcEI7QUFDRCxTQUxDLENBQUY7QUFNQVAsUUFBQUEsRUFBRSxDQUFDLDZCQUFELEVBQWdDLGtCQUFrQjtBQUNsRCxjQUFJQyxVQUFVLEdBQUcsTUFBTSwyQkFBYyxHQUFFVSxTQUFVLGlCQUExQixFQUE0QyxNQUE1QyxDQUF2QjtBQUNBVixVQUFBQSxVQUFVLENBQUNDLE1BQVgsQ0FBa0JDLE9BQWxCLENBQTBCLE1BQTFCO0FBQ0EsY0FBSUMsUUFBUSxHQUFHLE1BQU1DLFlBQUdDLFFBQUgsQ0FBWUwsVUFBWixFQUF3QixNQUF4QixDQUFyQjtBQUNBRyxVQUFBQSxRQUFRLENBQUNGLE1BQVQsQ0FBZ0JLLEdBQWhCLENBQW9CLDZCQUFwQjtBQUNELFNBTEMsQ0FBRjtBQU1BUCxRQUFBQSxFQUFFLENBQUMsbUNBQUQsRUFBc0Msa0JBQWtCO0FBQ3hELGNBQUlDLFVBQVUsR0FBRyxNQUFNLDJCQUFjLEdBQUVVLFNBQVUscUJBQTFCLEVBQWdELENBQUMsTUFBRCxFQUFTLE1BQVQsQ0FBaEQsQ0FBdkI7QUFDQVYsVUFBQUEsVUFBVSxDQUFDQyxNQUFYLENBQWtCQyxPQUFsQixDQUEwQixnQkFBMUI7QUFDQSxjQUFJQyxRQUFRLEdBQUcsTUFBTUMsWUFBR0MsUUFBSCxDQUFZTCxVQUFaLEVBQXdCLE1BQXhCLENBQXJCO0FBQ0FHLFVBQUFBLFFBQVEsQ0FBQ0YsTUFBVCxDQUFnQkssR0FBaEIsQ0FBb0IsNkJBQXBCO0FBQ0QsU0FMQyxDQUFGO0FBTUFQLFFBQUFBLEVBQUUsQ0FBQyw2QkFBRCxFQUFnQyxrQkFBa0I7QUFDbEQsY0FBSUMsVUFBVSxHQUFHLE1BQU0sMkJBQWMsR0FBRVUsU0FBVSxxQkFBMUIsRUFBZ0QsTUFBaEQsQ0FBdkI7QUFDQVYsVUFBQUEsVUFBVSxDQUFDQyxNQUFYLENBQWtCQyxPQUFsQixDQUEwQixNQUExQjtBQUNBLGNBQUlDLFFBQVEsR0FBRyxNQUFNQyxZQUFHQyxRQUFILENBQVlMLFVBQVosRUFBd0IsTUFBeEIsQ0FBckI7QUFDQUcsVUFBQUEsUUFBUSxDQUFDRixNQUFULENBQWdCSyxHQUFoQixDQUFvQiw2QkFBcEI7QUFDRCxTQUxDLENBQUY7QUFNQVAsUUFBQUEsRUFBRSxDQUFDLGtEQUFELEVBQXFELGtCQUFrQjtBQUN2RSxnQkFBTSwyQkFBYyxHQUFFVyxTQUFVLDZCQUExQixFQUF3RCxNQUF4RCxFQUNIVCxNQURHLENBQ0lZLFVBREosQ0FDZU4sRUFEZixDQUNrQm1DLFFBRHhCO0FBRUQsU0FIQyxDQUFGO0FBSUEzQyxRQUFBQSxFQUFFLENBQUMsZ0NBQUQsRUFBbUMsa0JBQWtCO0FBQ3JELGdCQUFNLDJCQUFhLHNDQUFiLEVBQXFELE1BQXJELEVBQ0hFLE1BREcsQ0FDSVksVUFESixDQUNlTixFQURmLENBQ2tCQyxZQURsQixDQUMrQixrQkFEL0IsQ0FBTjtBQUVBLGdCQUFNLDJCQUFjLFNBQVFJLG1CQUFVLElBQUdILElBQUssNkJBQXhDLEVBQXNFLE1BQXRFLEVBQ0hSLE1BREcsQ0FDSVksVUFESixDQUNlTixFQURmLENBQ2tCQyxZQURsQixDQUMrQixrQkFEL0IsQ0FBTjtBQUVELFNBTEMsQ0FBRjtBQU1BVCxRQUFBQSxFQUFFLENBQUMsbURBQUQsRUFBc0Qsa0JBQWtCO0FBQ3hFLGdCQUFNLDJCQUFhLGlDQUFiLEVBQWdELE1BQWhELEVBQ0hFLE1BREcsQ0FDSVksVUFESixDQUNlTixFQURmLENBQ2tCQyxZQURsQixDQUMrQixxQ0FEL0IsQ0FBTjtBQUVELFNBSEMsQ0FBRjtBQUlBVCxRQUFBQSxFQUFFLENBQUMsK0RBQUQsRUFBa0Usa0JBQWtCO0FBQ3BGLGNBQUlDLFVBQVUsR0FBRyxNQUFNLDJCQUFjLEdBQUVVLFNBQVUsb0NBQW1DaUMsa0JBQWtCLENBQUMsaUJBQUQsQ0FBb0IsRUFBbkcsRUFBc0csTUFBdEcsQ0FBdkI7QUFDQTNDLFVBQUFBLFVBQVUsQ0FBQ0MsTUFBWCxDQUFrQkMsT0FBbEIsQ0FBMEIsb0JBQTFCO0FBQ0FGLFVBQUFBLFVBQVUsQ0FBQ0MsTUFBWCxDQUFrQjJDLEdBQWxCLENBQXNCMUMsT0FBdEIsQ0FBOEIsTUFBOUI7QUFDQSxjQUFJQyxRQUFRLEdBQUcsTUFBTUMsWUFBR0MsUUFBSCxDQUFZTCxVQUFaLEVBQXdCLE1BQXhCLENBQXJCO0FBQ0FHLFVBQUFBLFFBQVEsQ0FBQ0YsTUFBVCxDQUFnQkssR0FBaEIsQ0FBb0IsNkJBQXBCO0FBQ0QsU0FOQyxDQUFGO0FBT0FQLFFBQUFBLEVBQUUsQ0FBQyw4RUFBRCxFQUFpRixrQkFBa0I7QUFDbkcsY0FBSUMsVUFBVSxHQUFHLE1BQU0sMkJBQWMsR0FBRVUsU0FBVSxvQ0FBbUNpQyxrQkFBa0IsQ0FBQyxrQ0FBRCxDQUFxQyxFQUFwSCxFQUF1SCxNQUF2SCxDQUF2QjtBQUNBM0MsVUFBQUEsVUFBVSxDQUFDQyxNQUFYLENBQWtCQyxPQUFsQixDQUEwQixvQkFBMUI7QUFDQUYsVUFBQUEsVUFBVSxDQUFDQyxNQUFYLENBQWtCMkMsR0FBbEIsQ0FBc0IxQyxPQUF0QixDQUE4QixNQUE5QjtBQUNBLGNBQUlDLFFBQVEsR0FBRyxNQUFNQyxZQUFHQyxRQUFILENBQVlMLFVBQVosRUFBd0IsTUFBeEIsQ0FBckI7QUFDQUcsVUFBQUEsUUFBUSxDQUFDRixNQUFULENBQWdCSyxHQUFoQixDQUFvQiw2QkFBcEI7QUFDRCxTQU5DLENBQUY7QUFPQVAsUUFBQUEsRUFBRSxDQUFDLGlGQUFELEVBQW9GLGtCQUFrQjtBQUN0RyxjQUFJQyxVQUFVLEdBQUcsTUFBTSwyQkFBYyxHQUFFVSxTQUFVLG9DQUFtQ2lDLGtCQUFrQixDQUFDLGlCQUFELENBQW9CLGdCQUFuRyxFQUFvSCxNQUFwSCxDQUF2QjtBQUNBM0MsVUFBQUEsVUFBVSxDQUFDQyxNQUFYLENBQWtCQyxPQUFsQixDQUEwQixvQkFBMUI7QUFDQUYsVUFBQUEsVUFBVSxDQUFDQyxNQUFYLENBQWtCMkMsR0FBbEIsQ0FBc0IxQyxPQUF0QixDQUE4QixNQUE5QjtBQUNBLGNBQUlDLFFBQVEsR0FBRyxNQUFNQyxZQUFHQyxRQUFILENBQVlMLFVBQVosRUFBd0IsTUFBeEIsQ0FBckI7QUFDQUcsVUFBQUEsUUFBUSxDQUFDRixNQUFULENBQWdCSyxHQUFoQixDQUFvQiw2QkFBcEI7QUFDRCxTQU5DLENBQUY7QUFPQVAsUUFBQUEsRUFBRSxDQUFDLDZDQUFELEVBQWdELGtCQUFrQjtBQUNsRSxjQUFJQyxVQUFVLEdBQUcsTUFBTSwyQkFBYyxHQUFFVSxTQUFVLG9DQUFtQ2lDLGtCQUFrQixDQUFDLGlCQUFELENBQW9CLEVBQW5HLEVBQXNHLE1BQXRHLENBQXZCO0FBQ0EzQyxVQUFBQSxVQUFVLENBQUNDLE1BQVgsQ0FBa0JDLE9BQWxCLENBQTBCLE1BQTFCO0FBQ0EsY0FBSUMsUUFBUSxHQUFHLE1BQU1DLFlBQUdDLFFBQUgsQ0FBWUwsVUFBWixFQUF3QixNQUF4QixDQUFyQjtBQUNBRyxVQUFBQSxRQUFRLENBQUNGLE1BQVQsQ0FBZ0JLLEdBQWhCLENBQW9CLDZCQUFwQjtBQUNELFNBTEMsQ0FBRjtBQU1ELE9BakhPLENBQVI7QUFrSEQsS0FqSU8sQ0FBUjtBQWtJRCxHQXZLTyxDQUFSO0FBd0tELENBektPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB1cmwgZnJvbSAndXJsJztcbmltcG9ydCB7IGZzIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IGNvbmZpZ3VyZUFwcCB9IGZyb20gJy4uLy4uLy4uL2xpYi9iYXNlZHJpdmVyL2hlbHBlcnMnO1xuaW1wb3J0IGh0dHAgZnJvbSAnaHR0cCc7XG5pbXBvcnQgZmluYWxoYW5kbGVyIGZyb20gJ2ZpbmFsaGFuZGxlcic7XG5pbXBvcnQgc2VydmVTdGF0aWMgZnJvbSAnc2VydmUtc3RhdGljJztcbmltcG9ydCBjb250ZW50RGlzcG9zaXRpb24gZnJvbSAnY29udGVudC1kaXNwb3NpdGlvbic7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgeyBURVNUX0hPU1QsIGdldFRlc3RQb3J0IH0gZnJvbSAnLi4vLi4vaGVscGVycyc7XG5cblxuZnVuY3Rpb24gZ2V0Rml4dHVyZSAoZmlsZSkge1xuICAvLyBYWFg6IF9fZGlybmFtZSBkaXNhbGxvd2VkIGluIG5hdGl2ZSBFU01cbiAgcmV0dXJuIHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuLicsICdmaXh0dXJlcycsIGZpbGUpO1xufVxuXG5kZXNjcmliZSgnYXBwIGRvd25sb2FkIGFuZCBjb25maWd1cmF0aW9uJywgZnVuY3Rpb24gKCkge1xuICBkZXNjcmliZSgnY29uZmlndXJlQXBwJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgZ2V0IHRoZSBwYXRoIGZvciBhIGxvY2FsIC5hcHAnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBsZXQgbmV3QXBwUGF0aCA9IGF3YWl0IGNvbmZpZ3VyZUFwcChnZXRGaXh0dXJlKCdGYWtlSU9TQXBwLmFwcCcpLCAnLmFwcCcpO1xuICAgICAgbmV3QXBwUGF0aC5zaG91bGQuY29udGFpbignRmFrZUlPU0FwcC5hcHAnKTtcbiAgICAgIGxldCBjb250ZW50cyA9IGF3YWl0IGZzLnJlYWRGaWxlKG5ld0FwcFBhdGgsICd1dGY4Jyk7XG4gICAgICBjb250ZW50cy5zaG91bGQuZXFsKCd0aGlzIGlzIG5vdCByZWFsbHkgYW4gYXBwXFxuJyk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBnZXQgdGhlIHBhdGggZm9yIGEgbG9jYWwgLmFwaycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBuZXdBcHBQYXRoID0gYXdhaXQgY29uZmlndXJlQXBwKGdldEZpeHR1cmUoJ0Zha2VBbmRyb2lkQXBwLmFwaycpLCAnLmFwaycpO1xuICAgICAgbmV3QXBwUGF0aC5zaG91bGQuY29udGFpbignRmFrZUFuZHJvaWRBcHAuYXBrJyk7XG4gICAgICBsZXQgY29udGVudHMgPSBhd2FpdCBmcy5yZWFkRmlsZShuZXdBcHBQYXRoLCAndXRmOCcpO1xuICAgICAgY29udGVudHMuc2hvdWxkLmVxbCgndGhpcyBpcyBub3QgcmVhbGx5IGFuIGFwa1xcbicpO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgdW56aXAgYW5kIGdldCB0aGUgcGF0aCBmb3IgYSBsb2NhbCAuYXBwLnppcCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBuZXdBcHBQYXRoID0gYXdhaXQgY29uZmlndXJlQXBwKGdldEZpeHR1cmUoJ0Zha2VJT1NBcHAuYXBwLnppcCcpLCAnLmFwcCcpO1xuICAgICAgbmV3QXBwUGF0aC5zaG91bGQuY29udGFpbignRmFrZUlPU0FwcC5hcHAnKTtcbiAgICAgIGxldCBjb250ZW50cyA9IGF3YWl0IGZzLnJlYWRGaWxlKG5ld0FwcFBhdGgsICd1dGY4Jyk7XG4gICAgICBjb250ZW50cy5zaG91bGQuZXFsKCd0aGlzIGlzIG5vdCByZWFsbHkgYW4gYXBwXFxuJyk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCB1bnppcCBhbmQgZ2V0IHRoZSBwYXRoIGZvciBhIGxvY2FsIC5pcGEnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBsZXQgbmV3QXBwUGF0aCA9IGF3YWl0IGNvbmZpZ3VyZUFwcChnZXRGaXh0dXJlKCdGYWtlSU9TQXBwLmlwYScpLCAnLmFwcCcpO1xuICAgICAgbmV3QXBwUGF0aC5zaG91bGQuY29udGFpbignRmFrZUlPU0FwcC5hcHAnKTtcbiAgICAgIGxldCBjb250ZW50cyA9IGF3YWl0IGZzLnJlYWRGaWxlKG5ld0FwcFBhdGgsICd1dGY4Jyk7XG4gICAgICBjb250ZW50cy5zaG91bGQuZXFsKCd0aGlzIGlzIG5vdCByZWFsbHkgYW4gYXBwXFxuJyk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBmYWlsIGZvciBhIGJhZCB6aXAgZmlsZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGNvbmZpZ3VyZUFwcChnZXRGaXh0dXJlKCdCYWRaaXBwZWRBcHAuemlwJyksICcuYXBwJylcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL1BLLyk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBmYWlsIGlmIGV4dGVuc2lvbnMgZG8gbm90IG1hdGNoJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgY29uZmlndXJlQXBwKGdldEZpeHR1cmUoJ0Zha2VJT1NBcHAuYXBwJyksICcud3JvbmcnKVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvZGlkIG5vdCBoYXZlIGV4dGVuc2lvbi8pO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgZmFpbCBpZiB6aXAgZmlsZSBkb2VzIG5vdCBjb250YWluIGFuIGFwcCB3aG9zZSBleHRlbnNpb24gbWF0Y2hlcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGNvbmZpZ3VyZUFwcChnZXRGaXh0dXJlKCdGYWtlSU9TQXBwLmFwcC56aXAnKSwgJy53cm9uZycpXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9kaWQgbm90IGhhdmUgZXh0ZW5zaW9uLyk7XG4gICAgfSk7XG4gICAgZGVzY3JpYmUoJ3Nob3VsZCBkb3dubG9hZCBhbiBhcHAgZnJvbSB0aGUgd2ViJywgZnVuY3Rpb24gKCkge1xuICAgICAgbGV0IHBvcnQ7XG4gICAgICBsZXQgc2VydmVyVXJsO1xuXG4gICAgICBiZWZvcmUoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBwb3J0ID0gYXdhaXQgZ2V0VGVzdFBvcnQodHJ1ZSk7XG4gICAgICAgIHNlcnZlclVybCA9IGBodHRwOi8vJHtURVNUX0hPU1R9OiR7cG9ydH1gO1xuICAgICAgfSk7XG5cbiAgICAgIGRlc2NyaWJlKCdzZXJ2ZXIgbm90IGF2YWlsYWJsZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaXQoJ3Nob3VsZCBoYW5kbGUgc2VydmVyIG5vdCBhdmFpbGFibGUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgYXdhaXQgY29uZmlndXJlQXBwKGAke3NlcnZlclVybH0vRmFrZUlPU0FwcC5hcHAuemlwYCwgJy5hcHAnKVxuICAgICAgICAgICAgLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkV2l0aCgvRUNPTk5SRUZVU0VELyk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICBkZXNjcmliZSgnc2VydmVyIGF2YWlsYWJsZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gdXNlIGEgbG9jYWwgc2VydmVyIHNvIHRoZXJlIGlzIG5vIGRlcGVuZGVuY3kgb24gdGhlIGludGVybmV0XG4gICAgICAgIGxldCBzZXJ2ZXI7XG4gICAgICAgIGJlZm9yZShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3QgZGlyID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4uJywgJ2ZpeHR1cmVzJyk7XG4gICAgICAgICAgY29uc3Qgc2VydmUgPSBzZXJ2ZVN0YXRpYyhkaXIsIHtcbiAgICAgICAgICAgIGluZGV4OiBmYWxzZSxcbiAgICAgICAgICAgIHNldEhlYWRlcnM6IChyZXMsIHBhdGgpID0+IHtcbiAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbicsIGNvbnRlbnREaXNwb3NpdGlvbihwYXRoKSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgc2VydmVyID0gaHR0cC5jcmVhdGVTZXJ2ZXIoZnVuY3Rpb24gKHJlcSwgcmVzKSB7XG4gICAgICAgICAgICBpZiAocmVxLnVybC5pbmRleE9mKCdtaXNzaW5nJykgIT09IC0xKSB7XG4gICAgICAgICAgICAgIHJlcy53cml0ZUhlYWQoNDA0KTtcbiAgICAgICAgICAgICAgcmVzLmVuZCgpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBmb3IgdGVzdGluZyB6aXAgZmlsZSBjb250ZW50IHR5cGVzXG4gICAgICAgICAgICBjb25zdCBjb250ZW50VHlwZSA9IG5ldyBVUkxTZWFyY2hQYXJhbXModXJsLnBhcnNlKHJlcS51cmwpLnNlYXJjaCkuZ2V0KCdjb250ZW50LXR5cGUnKTtcbiAgICAgICAgICAgIGlmIChjb250ZW50VHlwZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdjb250ZW50LXR5cGUnLCBjb250ZW50VHlwZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXJ2ZShyZXEsIHJlcywgZmluYWxoYW5kbGVyKHJlcSwgcmVzKSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY29uc3QgY2xvc2UgPSBzZXJ2ZXIuY2xvc2UuYmluZChzZXJ2ZXIpO1xuICAgICAgICAgIHNlcnZlci5jbG9zZSA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIC8vIHBhdXNlIGEgbW9tZW50IG9yIHdlIGdldCBFQ09OUkVTRVQgZXJyb3JzXG4gICAgICAgICAgICBhd2FpdCBCLmRlbGF5KDEwMDApO1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgc2VydmVyLm9uKCdjbG9zZScsIHJlc29sdmUpO1xuICAgICAgICAgICAgICBjbG9zZSgoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGVycikgcmVqZWN0KGVycik7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgY3VybHlcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9O1xuICAgICAgICAgIHNlcnZlci5saXN0ZW4ocG9ydCk7XG4gICAgICAgIH0pO1xuICAgICAgICBhZnRlcihhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgYXdhaXQgc2VydmVyLmNsb3NlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGl0KCdzaG91bGQgZG93bmxvYWQgemlwIGZpbGUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgbGV0IG5ld0FwcFBhdGggPSBhd2FpdCBjb25maWd1cmVBcHAoYCR7c2VydmVyVXJsfS9GYWtlSU9TQXBwLmFwcC56aXBgLCAnLmFwcCcpO1xuICAgICAgICAgIG5ld0FwcFBhdGguc2hvdWxkLmNvbnRhaW4oJ0Zha2VJT1NBcHAuYXBwJyk7XG4gICAgICAgICAgbGV0IGNvbnRlbnRzID0gYXdhaXQgZnMucmVhZEZpbGUobmV3QXBwUGF0aCwgJ3V0ZjgnKTtcbiAgICAgICAgICBjb250ZW50cy5zaG91bGQuZXFsKCd0aGlzIGlzIG5vdCByZWFsbHkgYW4gYXBwXFxuJyk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIGRvd25sb2FkIHppcCBmaWxlIHdpdGggcXVlcnkgc3RyaW5nJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGxldCBuZXdBcHBQYXRoID0gYXdhaXQgY29uZmlndXJlQXBwKGAke3NlcnZlclVybH0vRmFrZUlPU0FwcC5hcHAuemlwP3N2PWFiYyZzcj1kZWZgLCAnLmFwcCcpO1xuICAgICAgICAgIG5ld0FwcFBhdGguc2hvdWxkLmNvbnRhaW4oJy5hcHAnKTtcbiAgICAgICAgICBsZXQgY29udGVudHMgPSBhd2FpdCBmcy5yZWFkRmlsZShuZXdBcHBQYXRoLCAndXRmOCcpO1xuICAgICAgICAgIGNvbnRlbnRzLnNob3VsZC5lcWwoJ3RoaXMgaXMgbm90IHJlYWxseSBhbiBhcHBcXG4nKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KCdzaG91bGQgZG93bmxvYWQgYW4gYXBwIGZpbGUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgbGV0IG5ld0FwcFBhdGggPSBhd2FpdCBjb25maWd1cmVBcHAoYCR7c2VydmVyVXJsfS9GYWtlSU9TQXBwLmFwcGAsICcuYXBwJyk7XG4gICAgICAgICAgbmV3QXBwUGF0aC5zaG91bGQuY29udGFpbignLmFwcCcpO1xuICAgICAgICAgIGxldCBjb250ZW50cyA9IGF3YWl0IGZzLnJlYWRGaWxlKG5ld0FwcFBhdGgsICd1dGY4Jyk7XG4gICAgICAgICAgY29udGVudHMuc2hvdWxkLmVxbCgndGhpcyBpcyBub3QgcmVhbGx5IGFuIGFwcFxcbicpO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCBhY2NlcHQgbXVsdGlwbGUgZXh0ZW5zaW9ucycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBsZXQgbmV3QXBwUGF0aCA9IGF3YWl0IGNvbmZpZ3VyZUFwcChgJHtzZXJ2ZXJVcmx9L0Zha2VJT1NBcHAuYXBwLnppcGAsIFsnLmFwcCcsICcuYWFiJ10pO1xuICAgICAgICAgIG5ld0FwcFBhdGguc2hvdWxkLmNvbnRhaW4oJ0Zha2VJT1NBcHAuYXBwJyk7XG4gICAgICAgICAgbGV0IGNvbnRlbnRzID0gYXdhaXQgZnMucmVhZEZpbGUobmV3QXBwUGF0aCwgJ3V0ZjgnKTtcbiAgICAgICAgICBjb250ZW50cy5zaG91bGQuZXFsKCd0aGlzIGlzIG5vdCByZWFsbHkgYW4gYXBwXFxuJyk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIGRvd25sb2FkIGFuIGFwayBmaWxlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGxldCBuZXdBcHBQYXRoID0gYXdhaXQgY29uZmlndXJlQXBwKGAke3NlcnZlclVybH0vRmFrZUFuZHJvaWRBcHAuYXBrYCwgJy5hcGsnKTtcbiAgICAgICAgICBuZXdBcHBQYXRoLnNob3VsZC5jb250YWluKCcuYXBrJyk7XG4gICAgICAgICAgbGV0IGNvbnRlbnRzID0gYXdhaXQgZnMucmVhZEZpbGUobmV3QXBwUGF0aCwgJ3V0ZjgnKTtcbiAgICAgICAgICBjb250ZW50cy5zaG91bGQuZXFsKCd0aGlzIGlzIG5vdCByZWFsbHkgYW4gYXBrXFxuJyk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIGhhbmRsZSB6aXAgZmlsZSB0aGF0IGNhbm5vdCBiZSBkb3dubG9hZGVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGF3YWl0IGNvbmZpZ3VyZUFwcChgJHtzZXJ2ZXJVcmx9L21pc3NpbmcvRmFrZUlPU0FwcC5hcHAuemlwYCwgJy5hcHAnKVxuICAgICAgICAgICAgLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCBoYW5kbGUgaW52YWxpZCBwcm90b2NvbCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBhd2FpdCBjb25maWd1cmVBcHAoJ2ZpbGU6Ly9DOi9taXNzaW5nL0Zha2VJT1NBcHAuYXBwLnppcCcsICcuYXBwJylcbiAgICAgICAgICAgIC5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoL2lzIG5vdCBzdXBwb3J0ZWQvKTtcbiAgICAgICAgICBhd2FpdCBjb25maWd1cmVBcHAoYGZ0cDovLyR7VEVTVF9IT1NUfToke3BvcnR9L21pc3NpbmcvRmFrZUlPU0FwcC5hcHAuemlwYCwgJy5hcHAnKVxuICAgICAgICAgICAgLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkV2l0aCgvaXMgbm90IHN1cHBvcnRlZC8pO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCBoYW5kbGUgbWlzc2luZyBmaWxlIGluIFdpbmRvd3MgcGF0aCBmb3JtYXQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgYXdhaXQgY29uZmlndXJlQXBwKCdDOlxcXFxtaXNzaW5nXFxcXEZha2VJT1NBcHAuYXBwLnppcCcsICcuYXBwJylcbiAgICAgICAgICAgIC5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoL2RvZXMgbm90IGV4aXN0IG9yIGlzIG5vdCBhY2Nlc3NpYmxlLyk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIHJlY29nbml6ZSB6aXAgbWltZSB0eXBlcyBhbmQgdW56aXAgdGhlIGRvd25sb2FkZWQgZmlsZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBsZXQgbmV3QXBwUGF0aCA9IGF3YWl0IGNvbmZpZ3VyZUFwcChgJHtzZXJ2ZXJVcmx9L0Zha2VBbmRyb2lkQXBwLmFzZD9jb250ZW50LXR5cGU9JHtlbmNvZGVVUklDb21wb25lbnQoJ2FwcGxpY2F0aW9uL3ppcCcpfWAsICcuYXBrJyk7XG4gICAgICAgICAgbmV3QXBwUGF0aC5zaG91bGQuY29udGFpbignRmFrZUFuZHJvaWRBcHAuYXBrJyk7XG4gICAgICAgICAgbmV3QXBwUGF0aC5zaG91bGQubm90LmNvbnRhaW4oJy5hc2QnKTtcbiAgICAgICAgICBsZXQgY29udGVudHMgPSBhd2FpdCBmcy5yZWFkRmlsZShuZXdBcHBQYXRoLCAndXRmOCcpO1xuICAgICAgICAgIGNvbnRlbnRzLnNob3VsZC5lcWwoJ3RoaXMgaXMgbm90IHJlYWxseSBhbiBhcGtcXG4nKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KCdzaG91bGQgcmVjb2duaXplIHppcCBtaW1lIHR5cGVzIHdpdGggcGFyYW1ldGVyIGFuZCB1bnppcCB0aGUgZG93bmxvYWRlZCBmaWxlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGxldCBuZXdBcHBQYXRoID0gYXdhaXQgY29uZmlndXJlQXBwKGAke3NlcnZlclVybH0vRmFrZUFuZHJvaWRBcHAuYXNkP2NvbnRlbnQtdHlwZT0ke2VuY29kZVVSSUNvbXBvbmVudCgnYXBwbGljYXRpb24vemlwOyBwYXJhbWV0ZXI9dmFsdWUnKX1gLCAnLmFwaycpO1xuICAgICAgICAgIG5ld0FwcFBhdGguc2hvdWxkLmNvbnRhaW4oJ0Zha2VBbmRyb2lkQXBwLmFwaycpO1xuICAgICAgICAgIG5ld0FwcFBhdGguc2hvdWxkLm5vdC5jb250YWluKCcuYXNkJyk7XG4gICAgICAgICAgbGV0IGNvbnRlbnRzID0gYXdhaXQgZnMucmVhZEZpbGUobmV3QXBwUGF0aCwgJ3V0ZjgnKTtcbiAgICAgICAgICBjb250ZW50cy5zaG91bGQuZXFsKCd0aGlzIGlzIG5vdCByZWFsbHkgYW4gYXBrXFxuJyk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIHJlY29nbml6ZSB6aXAgbWltZSB0eXBlcyBhbmQgdW56aXAgdGhlIGRvd25sb2FkZWQgZmlsZSB3aXRoIHF1ZXJ5IHN0cmluZycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBsZXQgbmV3QXBwUGF0aCA9IGF3YWl0IGNvbmZpZ3VyZUFwcChgJHtzZXJ2ZXJVcmx9L0Zha2VBbmRyb2lkQXBwLmFzZD9jb250ZW50LXR5cGU9JHtlbmNvZGVVUklDb21wb25lbnQoJ2FwcGxpY2F0aW9uL3ppcCcpfSZzdj1hYmMmc3I9ZGVmYCwgJy5hcGsnKTtcbiAgICAgICAgICBuZXdBcHBQYXRoLnNob3VsZC5jb250YWluKCdGYWtlQW5kcm9pZEFwcC5hcGsnKTtcbiAgICAgICAgICBuZXdBcHBQYXRoLnNob3VsZC5ub3QuY29udGFpbignLmFzZCcpO1xuICAgICAgICAgIGxldCBjb250ZW50cyA9IGF3YWl0IGZzLnJlYWRGaWxlKG5ld0FwcFBhdGgsICd1dGY4Jyk7XG4gICAgICAgICAgY29udGVudHMuc2hvdWxkLmVxbCgndGhpcyBpcyBub3QgcmVhbGx5IGFuIGFwa1xcbicpO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCB0cmVhdCBhbiB1bmtub3duIG1pbWUgdHlwZSBhcyBhbiBhcHAnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgbGV0IG5ld0FwcFBhdGggPSBhd2FpdCBjb25maWd1cmVBcHAoYCR7c2VydmVyVXJsfS9GYWtlQW5kcm9pZEFwcC5hcGs/Y29udGVudC10eXBlPSR7ZW5jb2RlVVJJQ29tcG9uZW50KCdhcHBsaWNhdGlvbi9iaXAnKX1gLCAnLmFwaycpO1xuICAgICAgICAgIG5ld0FwcFBhdGguc2hvdWxkLmNvbnRhaW4oJy5hcGsnKTtcbiAgICAgICAgICBsZXQgY29udGVudHMgPSBhd2FpdCBmcy5yZWFkRmlsZShuZXdBcHBQYXRoLCAndXRmOCcpO1xuICAgICAgICAgIGNvbnRlbnRzLnNob3VsZC5lcWwoJ3RoaXMgaXMgbm90IHJlYWxseSBhbiBhcGtcXG4nKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
192
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRGaXh0dXJlIiwiZmlsZSIsInBhdGgiLCJyZXNvbHZlIiwiX19kaXJuYW1lIiwiZGVzY3JpYmUiLCJpdCIsIm5ld0FwcFBhdGgiLCJjb25maWd1cmVBcHAiLCJzaG91bGQiLCJjb250YWluIiwiY29udGVudHMiLCJmcyIsInJlYWRGaWxlIiwiZXFsIiwiYmUiLCJyZWplY3RlZFdpdGgiLCJwb3J0Iiwic2VydmVyVXJsIiwiYmVmb3JlIiwiZ2V0VGVzdFBvcnQiLCJURVNUX0hPU1QiLCJldmVudHVhbGx5Iiwic2VydmVyIiwiZGlyIiwic2VydmUiLCJzZXJ2ZVN0YXRpYyIsImluZGV4Iiwic2V0SGVhZGVycyIsInJlcyIsInNldEhlYWRlciIsImNvbnRlbnREaXNwb3NpdGlvbiIsImh0dHAiLCJjcmVhdGVTZXJ2ZXIiLCJyZXEiLCJ1cmwiLCJpbmRleE9mIiwid3JpdGVIZWFkIiwiZW5kIiwiY29udGVudFR5cGUiLCJVUkxTZWFyY2hQYXJhbXMiLCJwYXJzZSIsInNlYXJjaCIsImdldCIsImZpbmFsaGFuZGxlciIsImNsb3NlIiwiYmluZCIsIkIiLCJkZWxheSIsInJlamVjdCIsIm9uIiwiZXJyIiwibGlzdGVuIiwiYWZ0ZXIiLCJyZWplY3RlZCIsImVuY29kZVVSSUNvbXBvbmVudCIsIm5vdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvZTJlL2Jhc2Vkcml2ZXIvaGVscGVycy5lMmUuc3BlYy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB1cmwgZnJvbSAndXJsJztcbmltcG9ydCB7ZnN9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQge2NvbmZpZ3VyZUFwcH0gZnJvbSAnLi4vLi4vLi4vbGliL2Jhc2Vkcml2ZXIvaGVscGVycyc7XG5pbXBvcnQgaHR0cCBmcm9tICdodHRwJztcbmltcG9ydCBmaW5hbGhhbmRsZXIgZnJvbSAnZmluYWxoYW5kbGVyJztcbmltcG9ydCBzZXJ2ZVN0YXRpYyBmcm9tICdzZXJ2ZS1zdGF0aWMnO1xuaW1wb3J0IGNvbnRlbnREaXNwb3NpdGlvbiBmcm9tICdjb250ZW50LWRpc3Bvc2l0aW9uJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCB7VEVTVF9IT1NULCBnZXRUZXN0UG9ydH0gZnJvbSAnLi4vLi4vaGVscGVycyc7XG5cbmZ1bmN0aW9uIGdldEZpeHR1cmUoZmlsZSkge1xuICAvLyBYWFg6IF9fZGlybmFtZSBkaXNhbGxvd2VkIGluIG5hdGl2ZSBFU01cbiAgcmV0dXJuIHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuLicsICdmaXh0dXJlcycsIGZpbGUpO1xufVxuXG5kZXNjcmliZSgnYXBwIGRvd25sb2FkIGFuZCBjb25maWd1cmF0aW9uJywgZnVuY3Rpb24gKCkge1xuICBkZXNjcmliZSgnY29uZmlndXJlQXBwJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgZ2V0IHRoZSBwYXRoIGZvciBhIGxvY2FsIC5hcHAnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBsZXQgbmV3QXBwUGF0aCA9IGF3YWl0IGNvbmZpZ3VyZUFwcChnZXRGaXh0dXJlKCdGYWtlSU9TQXBwLmFwcCcpLCAnLmFwcCcpO1xuICAgICAgbmV3QXBwUGF0aC5zaG91bGQuY29udGFpbignRmFrZUlPU0FwcC5hcHAnKTtcbiAgICAgIGxldCBjb250ZW50cyA9IGF3YWl0IGZzLnJlYWRGaWxlKG5ld0FwcFBhdGgsICd1dGY4Jyk7XG4gICAgICBjb250ZW50cy5zaG91bGQuZXFsKCd0aGlzIGlzIG5vdCByZWFsbHkgYW4gYXBwXFxuJyk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBnZXQgdGhlIHBhdGggZm9yIGEgbG9jYWwgLmFwaycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBuZXdBcHBQYXRoID0gYXdhaXQgY29uZmlndXJlQXBwKGdldEZpeHR1cmUoJ0Zha2VBbmRyb2lkQXBwLmFwaycpLCAnLmFwaycpO1xuICAgICAgbmV3QXBwUGF0aC5zaG91bGQuY29udGFpbignRmFrZUFuZHJvaWRBcHAuYXBrJyk7XG4gICAgICBsZXQgY29udGVudHMgPSBhd2FpdCBmcy5yZWFkRmlsZShuZXdBcHBQYXRoLCAndXRmOCcpO1xuICAgICAgY29udGVudHMuc2hvdWxkLmVxbCgndGhpcyBpcyBub3QgcmVhbGx5IGFuIGFwa1xcbicpO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgdW56aXAgYW5kIGdldCB0aGUgcGF0aCBmb3IgYSBsb2NhbCAuYXBwLnppcCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBuZXdBcHBQYXRoID0gYXdhaXQgY29uZmlndXJlQXBwKGdldEZpeHR1cmUoJ0Zha2VJT1NBcHAuYXBwLnppcCcpLCAnLmFwcCcpO1xuICAgICAgbmV3QXBwUGF0aC5zaG91bGQuY29udGFpbignRmFrZUlPU0FwcC5hcHAnKTtcbiAgICAgIGxldCBjb250ZW50cyA9IGF3YWl0IGZzLnJlYWRGaWxlKG5ld0FwcFBhdGgsICd1dGY4Jyk7XG4gICAgICBjb250ZW50cy5zaG91bGQuZXFsKCd0aGlzIGlzIG5vdCByZWFsbHkgYW4gYXBwXFxuJyk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCB1bnppcCBhbmQgZ2V0IHRoZSBwYXRoIGZvciBhIGxvY2FsIC5pcGEnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBsZXQgbmV3QXBwUGF0aCA9IGF3YWl0IGNvbmZpZ3VyZUFwcChnZXRGaXh0dXJlKCdGYWtlSU9TQXBwLmlwYScpLCAnLmFwcCcpO1xuICAgICAgbmV3QXBwUGF0aC5zaG91bGQuY29udGFpbignRmFrZUlPU0FwcC5hcHAnKTtcbiAgICAgIGxldCBjb250ZW50cyA9IGF3YWl0IGZzLnJlYWRGaWxlKG5ld0FwcFBhdGgsICd1dGY4Jyk7XG4gICAgICBjb250ZW50cy5zaG91bGQuZXFsKCd0aGlzIGlzIG5vdCByZWFsbHkgYW4gYXBwXFxuJyk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBmYWlsIGZvciBhIGJhZCB6aXAgZmlsZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGNvbmZpZ3VyZUFwcChnZXRGaXh0dXJlKCdCYWRaaXBwZWRBcHAuemlwJyksICcuYXBwJykuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvUEsvKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGZhaWwgaWYgZXh0ZW5zaW9ucyBkbyBub3QgbWF0Y2gnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBjb25maWd1cmVBcHAoZ2V0Rml4dHVyZSgnRmFrZUlPU0FwcC5hcHAnKSwgJy53cm9uZycpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoXG4gICAgICAgIC9kaWQgbm90IGhhdmUgZXh0ZW5zaW9uL1xuICAgICAgKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGZhaWwgaWYgemlwIGZpbGUgZG9lcyBub3QgY29udGFpbiBhbiBhcHAgd2hvc2UgZXh0ZW5zaW9uIG1hdGNoZXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBjb25maWd1cmVBcHAoZ2V0Rml4dHVyZSgnRmFrZUlPU0FwcC5hcHAuemlwJyksICcud3JvbmcnKS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKFxuICAgICAgICAvZGlkIG5vdCBoYXZlIGV4dGVuc2lvbi9cbiAgICAgICk7XG4gICAgfSk7XG4gICAgZGVzY3JpYmUoJ3Nob3VsZCBkb3dubG9hZCBhbiBhcHAgZnJvbSB0aGUgd2ViJywgZnVuY3Rpb24gKCkge1xuICAgICAgbGV0IHBvcnQ7XG4gICAgICBsZXQgc2VydmVyVXJsO1xuXG4gICAgICBiZWZvcmUoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBwb3J0ID0gYXdhaXQgZ2V0VGVzdFBvcnQodHJ1ZSk7XG4gICAgICAgIHNlcnZlclVybCA9IGBodHRwOi8vJHtURVNUX0hPU1R9OiR7cG9ydH1gO1xuICAgICAgfSk7XG5cbiAgICAgIGRlc2NyaWJlKCdzZXJ2ZXIgbm90IGF2YWlsYWJsZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaXQoJ3Nob3VsZCBoYW5kbGUgc2VydmVyIG5vdCBhdmFpbGFibGUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgYXdhaXQgY29uZmlndXJlQXBwKFxuICAgICAgICAgICAgYCR7c2VydmVyVXJsfS9GYWtlSU9TQXBwLmFwcC56aXBgLFxuICAgICAgICAgICAgJy5hcHAnXG4gICAgICAgICAgKS5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoL0VDT05OUkVGVVNFRC8pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgZGVzY3JpYmUoJ3NlcnZlciBhdmFpbGFibGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8vIHVzZSBhIGxvY2FsIHNlcnZlciBzbyB0aGVyZSBpcyBubyBkZXBlbmRlbmN5IG9uIHRoZSBpbnRlcm5ldFxuICAgICAgICBsZXQgc2VydmVyO1xuICAgICAgICBiZWZvcmUoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IGRpciA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuLicsICdmaXh0dXJlcycpO1xuICAgICAgICAgIGNvbnN0IHNlcnZlID0gc2VydmVTdGF0aWMoZGlyLCB7XG4gICAgICAgICAgICBpbmRleDogZmFsc2UsXG4gICAgICAgICAgICBzZXRIZWFkZXJzOiAocmVzLCBwYXRoKSA9PiB7XG4gICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb24nLCBjb250ZW50RGlzcG9zaXRpb24ocGF0aCkpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHNlcnZlciA9IGh0dHAuY3JlYXRlU2VydmVyKGZ1bmN0aW9uIChyZXEsIHJlcykge1xuICAgICAgICAgICAgaWYgKHJlcS51cmwuaW5kZXhPZignbWlzc2luZycpICE9PSAtMSkge1xuICAgICAgICAgICAgICByZXMud3JpdGVIZWFkKDQwNCk7XG4gICAgICAgICAgICAgIHJlcy5lbmQoKTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZm9yIHRlc3RpbmcgemlwIGZpbGUgY29udGVudCB0eXBlc1xuICAgICAgICAgICAgY29uc3QgY29udGVudFR5cGUgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHVybC5wYXJzZShyZXEudXJsKS5zZWFyY2gpLmdldCgnY29udGVudC10eXBlJyk7XG4gICAgICAgICAgICBpZiAoY29udGVudFR5cGUgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignY29udGVudC10eXBlJywgY29udGVudFR5cGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VydmUocmVxLCByZXMsIGZpbmFsaGFuZGxlcihyZXEsIHJlcykpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnN0IGNsb3NlID0gc2VydmVyLmNsb3NlLmJpbmQoc2VydmVyKTtcbiAgICAgICAgICBzZXJ2ZXIuY2xvc2UgPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAvLyBwYXVzZSBhIG1vbWVudCBvciB3ZSBnZXQgRUNPTlJFU0VUIGVycm9yc1xuICAgICAgICAgICAgYXdhaXQgQi5kZWxheSgxMDAwKTtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgIHNlcnZlci5vbignY2xvc2UnLCByZXNvbHZlKTtcbiAgICAgICAgICAgICAgY2xvc2UoKGVycikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlcnIpIHJlamVjdChlcnIpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGN1cmx5XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfTtcbiAgICAgICAgICBzZXJ2ZXIubGlzdGVuKHBvcnQpO1xuICAgICAgICB9KTtcbiAgICAgICAgYWZ0ZXIoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGF3YWl0IHNlcnZlci5jbG9zZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpdCgnc2hvdWxkIGRvd25sb2FkIHppcCBmaWxlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGxldCBuZXdBcHBQYXRoID0gYXdhaXQgY29uZmlndXJlQXBwKGAke3NlcnZlclVybH0vRmFrZUlPU0FwcC5hcHAuemlwYCwgJy5hcHAnKTtcbiAgICAgICAgICBuZXdBcHBQYXRoLnNob3VsZC5jb250YWluKCdGYWtlSU9TQXBwLmFwcCcpO1xuICAgICAgICAgIGxldCBjb250ZW50cyA9IGF3YWl0IGZzLnJlYWRGaWxlKG5ld0FwcFBhdGgsICd1dGY4Jyk7XG4gICAgICAgICAgY29udGVudHMuc2hvdWxkLmVxbCgndGhpcyBpcyBub3QgcmVhbGx5IGFuIGFwcFxcbicpO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCBkb3dubG9hZCB6aXAgZmlsZSB3aXRoIHF1ZXJ5IHN0cmluZycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBsZXQgbmV3QXBwUGF0aCA9IGF3YWl0IGNvbmZpZ3VyZUFwcChcbiAgICAgICAgICAgIGAke3NlcnZlclVybH0vRmFrZUlPU0FwcC5hcHAuemlwP3N2PWFiYyZzcj1kZWZgLFxuICAgICAgICAgICAgJy5hcHAnXG4gICAgICAgICAgKTtcbiAgICAgICAgICBuZXdBcHBQYXRoLnNob3VsZC5jb250YWluKCcuYXBwJyk7XG4gICAgICAgICAgbGV0IGNvbnRlbnRzID0gYXdhaXQgZnMucmVhZEZpbGUobmV3QXBwUGF0aCwgJ3V0ZjgnKTtcbiAgICAgICAgICBjb250ZW50cy5zaG91bGQuZXFsKCd0aGlzIGlzIG5vdCByZWFsbHkgYW4gYXBwXFxuJyk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIGRvd25sb2FkIGFuIGFwcCBmaWxlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGxldCBuZXdBcHBQYXRoID0gYXdhaXQgY29uZmlndXJlQXBwKGAke3NlcnZlclVybH0vRmFrZUlPU0FwcC5hcHBgLCAnLmFwcCcpO1xuICAgICAgICAgIG5ld0FwcFBhdGguc2hvdWxkLmNvbnRhaW4oJy5hcHAnKTtcbiAgICAgICAgICBsZXQgY29udGVudHMgPSBhd2FpdCBmcy5yZWFkRmlsZShuZXdBcHBQYXRoLCAndXRmOCcpO1xuICAgICAgICAgIGNvbnRlbnRzLnNob3VsZC5lcWwoJ3RoaXMgaXMgbm90IHJlYWxseSBhbiBhcHBcXG4nKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KCdzaG91bGQgYWNjZXB0IG11bHRpcGxlIGV4dGVuc2lvbnMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgbGV0IG5ld0FwcFBhdGggPSBhd2FpdCBjb25maWd1cmVBcHAoYCR7c2VydmVyVXJsfS9GYWtlSU9TQXBwLmFwcC56aXBgLCBbJy5hcHAnLCAnLmFhYiddKTtcbiAgICAgICAgICBuZXdBcHBQYXRoLnNob3VsZC5jb250YWluKCdGYWtlSU9TQXBwLmFwcCcpO1xuICAgICAgICAgIGxldCBjb250ZW50cyA9IGF3YWl0IGZzLnJlYWRGaWxlKG5ld0FwcFBhdGgsICd1dGY4Jyk7XG4gICAgICAgICAgY29udGVudHMuc2hvdWxkLmVxbCgndGhpcyBpcyBub3QgcmVhbGx5IGFuIGFwcFxcbicpO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCBkb3dubG9hZCBhbiBhcGsgZmlsZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBsZXQgbmV3QXBwUGF0aCA9IGF3YWl0IGNvbmZpZ3VyZUFwcChgJHtzZXJ2ZXJVcmx9L0Zha2VBbmRyb2lkQXBwLmFwa2AsICcuYXBrJyk7XG4gICAgICAgICAgbmV3QXBwUGF0aC5zaG91bGQuY29udGFpbignLmFwaycpO1xuICAgICAgICAgIGxldCBjb250ZW50cyA9IGF3YWl0IGZzLnJlYWRGaWxlKG5ld0FwcFBhdGgsICd1dGY4Jyk7XG4gICAgICAgICAgY29udGVudHMuc2hvdWxkLmVxbCgndGhpcyBpcyBub3QgcmVhbGx5IGFuIGFwa1xcbicpO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCBoYW5kbGUgemlwIGZpbGUgdGhhdCBjYW5ub3QgYmUgZG93bmxvYWRlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBhd2FpdCBjb25maWd1cmVBcHAoYCR7c2VydmVyVXJsfS9taXNzaW5nL0Zha2VJT1NBcHAuYXBwLnppcGAsICcuYXBwJykuc2hvdWxkLmV2ZW50dWFsbHkuYmVcbiAgICAgICAgICAgIC5yZWplY3RlZDtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KCdzaG91bGQgaGFuZGxlIGludmFsaWQgcHJvdG9jb2wnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgYXdhaXQgY29uZmlndXJlQXBwKFxuICAgICAgICAgICAgJ2ZpbGU6Ly9DOi9taXNzaW5nL0Zha2VJT1NBcHAuYXBwLnppcCcsXG4gICAgICAgICAgICAnLmFwcCdcbiAgICAgICAgICApLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkV2l0aCgvaXMgbm90IHN1cHBvcnRlZC8pO1xuICAgICAgICAgIGF3YWl0IGNvbmZpZ3VyZUFwcChcbiAgICAgICAgICAgIGBmdHA6Ly8ke1RFU1RfSE9TVH06JHtwb3J0fS9taXNzaW5nL0Zha2VJT1NBcHAuYXBwLnppcGAsXG4gICAgICAgICAgICAnLmFwcCdcbiAgICAgICAgICApLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkV2l0aCgvaXMgbm90IHN1cHBvcnRlZC8pO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCBoYW5kbGUgbWlzc2luZyBmaWxlIGluIFdpbmRvd3MgcGF0aCBmb3JtYXQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgYXdhaXQgY29uZmlndXJlQXBwKFxuICAgICAgICAgICAgJ0M6XFxcXG1pc3NpbmdcXFxcRmFrZUlPU0FwcC5hcHAuemlwJyxcbiAgICAgICAgICAgICcuYXBwJ1xuICAgICAgICAgICkuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWRXaXRoKC9kb2VzIG5vdCBleGlzdCBvciBpcyBub3QgYWNjZXNzaWJsZS8pO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCByZWNvZ25pemUgemlwIG1pbWUgdHlwZXMgYW5kIHVuemlwIHRoZSBkb3dubG9hZGVkIGZpbGUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgbGV0IG5ld0FwcFBhdGggPSBhd2FpdCBjb25maWd1cmVBcHAoXG4gICAgICAgICAgICBgJHtzZXJ2ZXJVcmx9L0Zha2VBbmRyb2lkQXBwLmFzZD9jb250ZW50LXR5cGU9JHtlbmNvZGVVUklDb21wb25lbnQoJ2FwcGxpY2F0aW9uL3ppcCcpfWAsXG4gICAgICAgICAgICAnLmFwaydcbiAgICAgICAgICApO1xuICAgICAgICAgIG5ld0FwcFBhdGguc2hvdWxkLmNvbnRhaW4oJ0Zha2VBbmRyb2lkQXBwLmFwaycpO1xuICAgICAgICAgIG5ld0FwcFBhdGguc2hvdWxkLm5vdC5jb250YWluKCcuYXNkJyk7XG4gICAgICAgICAgbGV0IGNvbnRlbnRzID0gYXdhaXQgZnMucmVhZEZpbGUobmV3QXBwUGF0aCwgJ3V0ZjgnKTtcbiAgICAgICAgICBjb250ZW50cy5zaG91bGQuZXFsKCd0aGlzIGlzIG5vdCByZWFsbHkgYW4gYXBrXFxuJyk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIHJlY29nbml6ZSB6aXAgbWltZSB0eXBlcyB3aXRoIHBhcmFtZXRlciBhbmQgdW56aXAgdGhlIGRvd25sb2FkZWQgZmlsZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBsZXQgbmV3QXBwUGF0aCA9IGF3YWl0IGNvbmZpZ3VyZUFwcChcbiAgICAgICAgICAgIGAke3NlcnZlclVybH0vRmFrZUFuZHJvaWRBcHAuYXNkP2NvbnRlbnQtdHlwZT0ke2VuY29kZVVSSUNvbXBvbmVudChcbiAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3ppcDsgcGFyYW1ldGVyPXZhbHVlJ1xuICAgICAgICAgICAgKX1gLFxuICAgICAgICAgICAgJy5hcGsnXG4gICAgICAgICAgKTtcbiAgICAgICAgICBuZXdBcHBQYXRoLnNob3VsZC5jb250YWluKCdGYWtlQW5kcm9pZEFwcC5hcGsnKTtcbiAgICAgICAgICBuZXdBcHBQYXRoLnNob3VsZC5ub3QuY29udGFpbignLmFzZCcpO1xuICAgICAgICAgIGxldCBjb250ZW50cyA9IGF3YWl0IGZzLnJlYWRGaWxlKG5ld0FwcFBhdGgsICd1dGY4Jyk7XG4gICAgICAgICAgY29udGVudHMuc2hvdWxkLmVxbCgndGhpcyBpcyBub3QgcmVhbGx5IGFuIGFwa1xcbicpO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCByZWNvZ25pemUgemlwIG1pbWUgdHlwZXMgYW5kIHVuemlwIHRoZSBkb3dubG9hZGVkIGZpbGUgd2l0aCBxdWVyeSBzdHJpbmcnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgbGV0IG5ld0FwcFBhdGggPSBhd2FpdCBjb25maWd1cmVBcHAoXG4gICAgICAgICAgICBgJHtzZXJ2ZXJVcmx9L0Zha2VBbmRyb2lkQXBwLmFzZD9jb250ZW50LXR5cGU9JHtlbmNvZGVVUklDb21wb25lbnQoXG4gICAgICAgICAgICAgICdhcHBsaWNhdGlvbi96aXAnXG4gICAgICAgICAgICApfSZzdj1hYmMmc3I9ZGVmYCxcbiAgICAgICAgICAgICcuYXBrJ1xuICAgICAgICAgICk7XG4gICAgICAgICAgbmV3QXBwUGF0aC5zaG91bGQuY29udGFpbignRmFrZUFuZHJvaWRBcHAuYXBrJyk7XG4gICAgICAgICAgbmV3QXBwUGF0aC5zaG91bGQubm90LmNvbnRhaW4oJy5hc2QnKTtcbiAgICAgICAgICBsZXQgY29udGVudHMgPSBhd2FpdCBmcy5yZWFkRmlsZShuZXdBcHBQYXRoLCAndXRmOCcpO1xuICAgICAgICAgIGNvbnRlbnRzLnNob3VsZC5lcWwoJ3RoaXMgaXMgbm90IHJlYWxseSBhbiBhcGtcXG4nKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KCdzaG91bGQgdHJlYXQgYW4gdW5rbm93biBtaW1lIHR5cGUgYXMgYW4gYXBwJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGxldCBuZXdBcHBQYXRoID0gYXdhaXQgY29uZmlndXJlQXBwKFxuICAgICAgICAgICAgYCR7c2VydmVyVXJsfS9GYWtlQW5kcm9pZEFwcC5hcGs/Y29udGVudC10eXBlPSR7ZW5jb2RlVVJJQ29tcG9uZW50KCdhcHBsaWNhdGlvbi9iaXAnKX1gLFxuICAgICAgICAgICAgJy5hcGsnXG4gICAgICAgICAgKTtcbiAgICAgICAgICBuZXdBcHBQYXRoLnNob3VsZC5jb250YWluKCcuYXBrJyk7XG4gICAgICAgICAgbGV0IGNvbnRlbnRzID0gYXdhaXQgZnMucmVhZEZpbGUobmV3QXBwUGF0aCwgJ3V0ZjgnKTtcbiAgICAgICAgICBjb250ZW50cy5zaG91bGQuZXFsKCd0aGlzIGlzIG5vdCByZWFsbHkgYW4gYXBrXFxuJyk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLFNBQVNBLFVBQVQsQ0FBb0JDLElBQXBCLEVBQTBCO0VBRXhCLE9BQU9DLGFBQUEsQ0FBS0MsT0FBTCxDQUFhQyxTQUFiLEVBQXdCLElBQXhCLEVBQThCLFVBQTlCLEVBQTBDSCxJQUExQyxDQUFQO0FBQ0Q7O0FBRURJLFFBQVEsQ0FBQyxnQ0FBRCxFQUFtQyxZQUFZO0VBQ3JEQSxRQUFRLENBQUMsY0FBRCxFQUFpQixZQUFZO0lBQ25DQyxFQUFFLENBQUMsc0NBQUQsRUFBeUMsa0JBQWtCO01BQzNELElBQUlDLFVBQVUsR0FBRyxNQUFNLElBQUFDLHFCQUFBLEVBQWFSLFVBQVUsQ0FBQyxnQkFBRCxDQUF2QixFQUEyQyxNQUEzQyxDQUF2QjtNQUNB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
@@ -84,4 +84,4 @@ describe('Websockets (e2e)', function () {
84
84
  });
85
85
  });
86
86
  });
87
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvZTJlL2Jhc2Vkcml2ZXIvd2Vic29ja2V0cy5lMmUuc3BlYy5qcyJdLCJuYW1lcyI6WyJkZXNjcmliZSIsImJhc2VTZXJ2ZXIiLCJkcml2ZXIiLCJwb3J0IiwiU0VTU0lPTl9JRCIsIldTX0RBVEEiLCJiZWZvcmUiLCJGYWtlRHJpdmVyIiwic2Vzc2lvbklkIiwicm91dGVDb25maWd1cmluZ0Z1bmN0aW9uIiwiYWZ0ZXIiLCJjbG9zZSIsIml0Iiwid3NzIiwiV2ViU29ja2V0IiwiU2VydmVyIiwibm9TZXJ2ZXIiLCJvbiIsIndzIiwicmVhZHlTdGF0ZSIsIk9QRU4iLCJzZW5kIiwicHJldmlvdXNMaXN0ZW5lckNvdW50IiwibGlzdGVuZXJDb3VudCIsImVuZHBvaW50IiwiREVGQVVMVF9XU19QQVRITkFNRV9QUkVGSVgiLCJ0aW1lb3V0IiwiYWRkV2ViU29ja2V0SGFuZGxlciIsInNob3VsZCIsImJlIiwiYWJvdmUiLCJfIiwia2V5cyIsImdldFdlYlNvY2tldEhhbmRsZXJzIiwibGVuZ3RoIiwiZXFsIiwiQiIsInJlc29sdmUiLCJyZWplY3QiLCJjbGllbnQiLCJURVNUX0hPU1QiLCJvbmNlIiwicmVxIiwibm90IiwiZW1wdHkiLCJjb25uZWN0aW9uIiwicmVtb3RlQWRkcmVzcyIsImUiLCJkYXRhIiwiZGF0YVN0ciIsImlzU3RyaW5nIiwidG9TdHJpbmciLCJzZXRUaW1lb3V0IiwiRXJyb3IiLCJyZW1vdmVXZWJTb2NrZXRIYW5kbGVyIiwidHJ1ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0FBLFFBQVEsQ0FBQyxrQkFBRCxFQUFxQixZQUFZO0FBQ3ZDLE1BQUlDLFVBQUo7QUFDQSxNQUFJQyxNQUFKO0FBQ0EsTUFBSUMsSUFBSjtBQUNBLFFBQU1DLFVBQVUsR0FBRyxLQUFuQjtBQUNBLFFBQU1DLE9BQU8sR0FBRyxPQUFoQjtBQUVBQyxFQUFBQSxNQUFNLENBQUMsa0JBQWtCO0FBQ3ZCSixJQUFBQSxNQUFNLEdBQUcsSUFBSUssc0JBQUosRUFBVDtBQUNBTCxJQUFBQSxNQUFNLENBQUNNLFNBQVAsR0FBbUJKLFVBQW5CO0FBQ0FELElBQUFBLElBQUksR0FBRyxNQUFNLDJCQUFiO0FBQ0FGLElBQUFBLFVBQVUsR0FBRyxNQUFNLGlCQUFPO0FBQ3hCUSxNQUFBQSx3QkFBd0IsRUFBRSxtQ0FBeUJQLE1BQXpCLENBREY7QUFFeEJDLE1BQUFBO0FBRndCLEtBQVAsQ0FBbkI7QUFJRCxHQVJLLENBQU47QUFTQU8sRUFBQUEsS0FBSyxDQUFDLGtCQUFrQjtBQUN0QixVQUFNVCxVQUFVLENBQUNVLEtBQVgsRUFBTjtBQUNELEdBRkksQ0FBTDtBQUlBWCxFQUFBQSxRQUFRLENBQUMscUJBQUQsRUFBd0IsWUFBWTtBQUMxQ1ksSUFBQUEsRUFBRSxDQUFDLHVEQUFELEVBQTBELGtCQUFrQjtBQUM1RSxZQUFNQyxHQUFHLEdBQUcsSUFBSUMsWUFBVUMsTUFBZCxDQUFxQjtBQUMvQkMsUUFBQUEsUUFBUSxFQUFFO0FBRHFCLE9BQXJCLENBQVo7QUFHQUgsTUFBQUEsR0FBRyxDQUFDSSxFQUFKLENBQU8sWUFBUCxFQUFzQkMsRUFBRCxJQUFRO0FBQzNCLFlBQUlBLEVBQUUsSUFBSUEsRUFBRSxDQUFDQyxVQUFILEtBQWtCTCxZQUFVTSxJQUF0QyxFQUE0QztBQUMxQ0YsVUFBQUEsRUFBRSxDQUFDRyxJQUFILENBQVFoQixPQUFSO0FBQ0Q7QUFDRixPQUpEO0FBS0EsWUFBTWlCLHFCQUFxQixHQUFHckIsVUFBVSxDQUFDc0IsYUFBWCxDQUF5QixTQUF6QixDQUE5QjtBQUNBLFlBQU1DLFFBQVEsR0FBSSxHQUFFQywrQkFBMkIsUUFBL0M7QUFDQSxZQUFNQyxPQUFPLEdBQUcsSUFBaEI7QUFDQSxZQUFNekIsVUFBVSxDQUFDMEIsbUJBQVgsQ0FBK0JILFFBQS9CLEVBQXlDWCxHQUF6QyxDQUFOO0FBQ0FaLE1BQUFBLFVBQVUsQ0FBQ3NCLGFBQVgsQ0FBeUIsU0FBekIsRUFBb0NLLE1BQXBDLENBQTJDQyxFQUEzQyxDQUE4Q0MsS0FBOUMsQ0FBb0RSLHFCQUFwRDs7QUFDQVMsc0JBQUVDLElBQUYsQ0FBTyxNQUFNL0IsVUFBVSxDQUFDZ0Msb0JBQVgsRUFBYixFQUFnREMsTUFBaEQsQ0FBdUROLE1BQXZELENBQThETyxHQUE5RCxDQUFrRSxDQUFsRTs7QUFDQSxZQUFNLElBQUlDLGlCQUFKLENBQU0sQ0FBQ0MsT0FBRCxFQUFVQyxNQUFWLEtBQXFCO0FBQy9CLGNBQU1DLE1BQU0sR0FBRyxJQUFJekIsV0FBSixDQUFlLFFBQU8wQixrQkFBVSxJQUFHckMsSUFBSyxHQUFFcUIsUUFBUyxFQUFuRCxDQUFmO0FBQ0FlLFFBQUFBLE1BQU0sQ0FBQ0UsSUFBUCxDQUFZLFlBQVosRUFBMEIsQ0FBQ3ZCLEVBQUQsRUFBS3dCLEdBQUwsS0FBYTtBQUNyQyxjQUFJO0FBQ0Z4QixZQUFBQSxFQUFFLENBQUNVLE1BQUgsQ0FBVWUsR0FBVixDQUFjZCxFQUFkLENBQWlCZSxLQUFqQjtBQUNBRixZQUFBQSxHQUFHLENBQUNHLFVBQUosQ0FBZUMsYUFBZixDQUE2QmxCLE1BQTdCLENBQW9DZSxHQUFwQyxDQUF3Q2QsRUFBeEMsQ0FBMkNlLEtBQTNDO0FBQ0QsV0FIRCxDQUdFLE9BQU9HLENBQVAsRUFBVTtBQUNWVCxZQUFBQSxNQUFNLENBQUNTLENBQUQsQ0FBTjtBQUNEO0FBQ0YsU0FQRDtBQVFBUixRQUFBQSxNQUFNLENBQUNFLElBQVAsQ0FBWSxTQUFaLEVBQXdCTyxJQUFELElBQVU7QUFDL0IsZ0JBQU1DLE9BQU8sR0FBR2xCLGdCQUFFbUIsUUFBRixDQUFXRixJQUFYLElBQW1CQSxJQUFuQixHQUEwQkEsSUFBSSxDQUFDRyxRQUFMLEVBQTFDO0FBQ0FGLFVBQUFBLE9BQU8sQ0FBQ3JCLE1BQVIsQ0FBZU8sR0FBZixDQUFtQjlCLE9BQW5CO0FBQ0FnQyxVQUFBQSxPQUFPO0FBQ1IsU0FKRDtBQUtBRSxRQUFBQSxNQUFNLENBQUNFLElBQVAsQ0FBWSxPQUFaLEVBQXFCSCxNQUFyQjtBQUNBYyxRQUFBQSxVQUFVLENBQUMsTUFBTWQsTUFBTSxDQUFDLElBQUllLEtBQUosQ0FBVSw0REFBVixDQUFELENBQWIsRUFDUjNCLE9BRFEsQ0FBVjtBQUVELE9BbEJLLENBQU47QUFvQkEsT0FBQyxNQUFNekIsVUFBVSxDQUFDcUQsc0JBQVgsQ0FBa0M5QixRQUFsQyxDQUFQLEVBQW9ESSxNQUFwRCxDQUEyREMsRUFBM0QsQ0FBOEQwQixJQUE5RDs7QUFDQXhCLHNCQUFFQyxJQUFGLENBQU8sTUFBTS9CLFVBQVUsQ0FBQ2dDLG9CQUFYLEVBQWIsRUFBZ0RDLE1BQWhELENBQXVETixNQUF2RCxDQUE4RE8sR0FBOUQsQ0FBa0UsQ0FBbEU7O0FBQ0EsWUFBTSxJQUFJQyxpQkFBSixDQUFNLENBQUNDLE9BQUQsRUFBVUMsTUFBVixLQUFxQjtBQUMvQixjQUFNQyxNQUFNLEdBQUcsSUFBSXpCLFdBQUosQ0FBZSxRQUFPMEIsa0JBQVUsSUFBR3JDLElBQUssR0FBRXFCLFFBQVMsRUFBbkQsQ0FBZjtBQUNBZSxRQUFBQSxNQUFNLENBQUN0QixFQUFQLENBQVUsU0FBVixFQUFzQitCLElBQUQsSUFDbkJWLE1BQU0sQ0FBQyxJQUFJZSxLQUFKLENBQVcsdURBQUQsR0FDZCxzQkFBcUJMLElBQUsseUJBRHRCLENBQUQsQ0FEUjtBQUlBVCxRQUFBQSxNQUFNLENBQUN0QixFQUFQLENBQVUsT0FBVixFQUFtQm9CLE9BQW5CO0FBQ0FlLFFBQUFBLFVBQVUsQ0FBQ2YsT0FBRCxFQUFVWCxPQUFWLENBQVY7QUFDRCxPQVJLLENBQU47QUFTQXpCLE1BQUFBLFVBQVUsQ0FBQ3NCLGFBQVgsQ0FBeUIsU0FBekIsRUFBb0NLLE1BQXBDLENBQTJDQyxFQUEzQyxDQUE4Q0MsS0FBOUMsQ0FBb0RSLHFCQUFwRDtBQUNELEtBL0NDLENBQUY7QUFnREQsR0FqRE8sQ0FBUjtBQWtERCxDQXRFTyxDQUFSIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7XG4gIHNlcnZlciwgcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uLCBERUZBVUxUX1dTX1BBVEhOQU1FX1BSRUZJWFxufSBmcm9tICcuLi8uLi8uLi9saWInO1xuaW1wb3J0IHsgRmFrZURyaXZlciB9IGZyb20gJy4uL3Byb3RvY29sL2Zha2UtZHJpdmVyJztcbmltcG9ydCBXZWJTb2NrZXQgZnJvbSAnd3MnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IHtURVNUX0hPU1QsIGdldFRlc3RQb3J0fSBmcm9tICcuLi8uLi9oZWxwZXJzJztcblxuXG5kZXNjcmliZSgnV2Vic29ja2V0cyAoZTJlKScsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IGJhc2VTZXJ2ZXI7XG4gIGxldCBkcml2ZXI7XG4gIGxldCBwb3J0O1xuICBjb25zdCBTRVNTSU9OX0lEID0gJ2Zvbyc7XG4gIGNvbnN0IFdTX0RBVEEgPSAnSGVsbG8nO1xuXG4gIGJlZm9yZShhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgZHJpdmVyID0gbmV3IEZha2VEcml2ZXIoKTtcbiAgICBkcml2ZXIuc2Vzc2lvbklkID0gU0VTU0lPTl9JRDtcbiAgICBwb3J0ID0gYXdhaXQgZ2V0VGVzdFBvcnQoKTtcbiAgICBiYXNlU2VydmVyID0gYXdhaXQgc2VydmVyKHtcbiAgICAgIHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbjogcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uKGRyaXZlciksXG4gICAgICBwb3J0LFxuICAgIH0pO1xuICB9KTtcbiAgYWZ0ZXIoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGF3YWl0IGJhc2VTZXJ2ZXIuY2xvc2UoKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3dlYiBzb2NrZXRzIHN1cHBvcnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBiZSBhYmxlIHRvIGFkZCB3ZWJzb2NrZXQgaGFuZGxlciBhbmQgcmVtb3ZlIGl0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgd3NzID0gbmV3IFdlYlNvY2tldC5TZXJ2ZXIoe1xuICAgICAgICBub1NlcnZlcjogdHJ1ZSxcbiAgICAgIH0pO1xuICAgICAgd3NzLm9uKCdjb25uZWN0aW9uJywgKHdzKSA9PiB7XG4gICAgICAgIGlmICh3cyAmJiB3cy5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTikge1xuICAgICAgICAgIHdzLnNlbmQoV1NfREFUQSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgY29uc3QgcHJldmlvdXNMaXN0ZW5lckNvdW50ID0gYmFzZVNlcnZlci5saXN0ZW5lckNvdW50KCd1cGdyYWRlJyk7XG4gICAgICBjb25zdCBlbmRwb2ludCA9IGAke0RFRkFVTFRfV1NfUEFUSE5BTUVfUFJFRklYfS9oZWxsb2A7XG4gICAgICBjb25zdCB0aW1lb3V0ID0gNTAwMDtcbiAgICAgIGF3YWl0IGJhc2VTZXJ2ZXIuYWRkV2ViU29ja2V0SGFuZGxlcihlbmRwb2ludCwgd3NzKTtcbiAgICAgIGJhc2VTZXJ2ZXIubGlzdGVuZXJDb3VudCgndXBncmFkZScpLnNob3VsZC5iZS5hYm92ZShwcmV2aW91c0xpc3RlbmVyQ291bnQpO1xuICAgICAgXy5rZXlzKGF3YWl0IGJhc2VTZXJ2ZXIuZ2V0V2ViU29ja2V0SGFuZGxlcnMoKSkubGVuZ3RoLnNob3VsZC5lcWwoMSk7XG4gICAgICBhd2FpdCBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGNsaWVudCA9IG5ldyBXZWJTb2NrZXQoYHdzOi8vJHtURVNUX0hPU1R9OiR7cG9ydH0ke2VuZHBvaW50fWApO1xuICAgICAgICBjbGllbnQub25jZSgnY29ubmVjdGlvbicsICh3cywgcmVxKSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHdzLnNob3VsZC5ub3QuYmUuZW1wdHk7XG4gICAgICAgICAgICByZXEuY29ubmVjdGlvbi5yZW1vdGVBZGRyZXNzLnNob3VsZC5ub3QuYmUuZW1wdHk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGNsaWVudC5vbmNlKCdtZXNzYWdlJywgKGRhdGEpID0+IHtcbiAgICAgICAgICBjb25zdCBkYXRhU3RyID0gXy5pc1N0cmluZyhkYXRhKSA/IGRhdGEgOiBkYXRhLnRvU3RyaW5nKCk7XG4gICAgICAgICAgZGF0YVN0ci5zaG91bGQuZXFsKFdTX0RBVEEpO1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNsaWVudC5vbmNlKCdlcnJvcicsIHJlamVjdCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KG5ldyBFcnJvcignTm8gd2Vic29ja2V0IG1lc3NhZ2VzIGhhdmUgYmVlbiByZWNlaXZlZCBhZnRlciB0aGUgdGltZW91dCcpKSxcbiAgICAgICAgICB0aW1lb3V0KTtcbiAgICAgIH0pO1xuXG4gICAgICAoYXdhaXQgYmFzZVNlcnZlci5yZW1vdmVXZWJTb2NrZXRIYW5kbGVyKGVuZHBvaW50KSkuc2hvdWxkLmJlLnRydWU7XG4gICAgICBfLmtleXMoYXdhaXQgYmFzZVNlcnZlci5nZXRXZWJTb2NrZXRIYW5kbGVycygpKS5sZW5ndGguc2hvdWxkLmVxbCgwKTtcbiAgICAgIGF3YWl0IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgY29uc3QgY2xpZW50ID0gbmV3IFdlYlNvY2tldChgd3M6Ly8ke1RFU1RfSE9TVH06JHtwb3J0fSR7ZW5kcG9pbnR9YCk7XG4gICAgICAgIGNsaWVudC5vbignbWVzc2FnZScsIChkYXRhKSA9PlxuICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoYE5vIHdlYnNvY2tldCBtZXNzYWdlcyBhcmUgZXhwZWN0ZWQgYWZ0ZXIgdGhlIGhhbmRsZXIgYCArXG4gICAgICAgICAgICBgaGFzIGJlZW4gcmVtb3ZlZC4gJyR7ZGF0YX0nIGlzIHJlY2VpdmVkIGluc3RlYWQuIGApKVxuICAgICAgICApO1xuICAgICAgICBjbGllbnQub24oJ2Vycm9yJywgcmVzb2x2ZSk7XG4gICAgICAgIHNldFRpbWVvdXQocmVzb2x2ZSwgdGltZW91dCk7XG4gICAgICB9KTtcbiAgICAgIGJhc2VTZXJ2ZXIubGlzdGVuZXJDb3VudCgndXBncmFkZScpLnNob3VsZC5iZS5hYm92ZShwcmV2aW91c0xpc3RlbmVyQ291bnQpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
87
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkZXNjcmliZSIsImJhc2VTZXJ2ZXIiLCJkcml2ZXIiLCJwb3J0IiwiU0VTU0lPTl9JRCIsIldTX0RBVEEiLCJiZWZvcmUiLCJGYWtlRHJpdmVyIiwic2Vzc2lvbklkIiwiZ2V0VGVzdFBvcnQiLCJzZXJ2ZXIiLCJyb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24iLCJhZnRlciIsImNsb3NlIiwiaXQiLCJ3c3MiLCJXZWJTb2NrZXQiLCJTZXJ2ZXIiLCJub1NlcnZlciIsIm9uIiwid3MiLCJyZWFkeVN0YXRlIiwiT1BFTiIsInNlbmQiLCJwcmV2aW91c0xpc3RlbmVyQ291bnQiLCJsaXN0ZW5lckNvdW50IiwiZW5kcG9pbnQiLCJERUZBVUxUX1dTX1BBVEhOQU1FX1BSRUZJWCIsInRpbWVvdXQiLCJhZGRXZWJTb2NrZXRIYW5kbGVyIiwic2hvdWxkIiwiYmUiLCJhYm92ZSIsIl8iLCJrZXlzIiwiZ2V0V2ViU29ja2V0SGFuZGxlcnMiLCJsZW5ndGgiLCJlcWwiLCJCIiwicmVzb2x2ZSIsInJlamVjdCIsImNsaWVudCIsIlRFU1RfSE9TVCIsIm9uY2UiLCJyZXEiLCJub3QiLCJlbXB0eSIsImNvbm5lY3Rpb24iLCJyZW1vdGVBZGRyZXNzIiwiZSIsImRhdGEiLCJkYXRhU3RyIiwiaXNTdHJpbmciLCJ0b1N0cmluZyIsInNldFRpbWVvdXQiLCJFcnJvciIsInJlbW92ZVdlYlNvY2tldEhhbmRsZXIiLCJ0cnVlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC9lMmUvYmFzZWRyaXZlci93ZWJzb2NrZXRzLmUyZS5zcGVjLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge3NlcnZlciwgcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uLCBERUZBVUxUX1dTX1BBVEhOQU1FX1BSRUZJWH0gZnJvbSAnLi4vLi4vLi4vbGliJztcbmltcG9ydCB7RmFrZURyaXZlcn0gZnJvbSAnLi4vcHJvdG9jb2wvZmFrZS1kcml2ZXInO1xuaW1wb3J0IFdlYlNvY2tldCBmcm9tICd3cyc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQge1RFU1RfSE9TVCwgZ2V0VGVzdFBvcnR9IGZyb20gJy4uLy4uL2hlbHBlcnMnO1xuXG5kZXNjcmliZSgnV2Vic29ja2V0cyAoZTJlKScsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IGJhc2VTZXJ2ZXI7XG4gIGxldCBkcml2ZXI7XG4gIGxldCBwb3J0O1xuICBjb25zdCBTRVNTSU9OX0lEID0gJ2Zvbyc7XG4gIGNvbnN0IFdTX0RBVEEgPSAnSGVsbG8nO1xuXG4gIGJlZm9yZShhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgZHJpdmVyID0gbmV3IEZha2VEcml2ZXIoKTtcbiAgICBkcml2ZXIuc2Vzc2lvbklkID0gU0VTU0lPTl9JRDtcbiAgICBwb3J0ID0gYXdhaXQgZ2V0VGVzdFBvcnQoKTtcbiAgICBiYXNlU2VydmVyID0gYXdhaXQgc2VydmVyKHtcbiAgICAgIHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbjogcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uKGRyaXZlciksXG4gICAgICBwb3J0LFxuICAgIH0pO1xuICB9KTtcbiAgYWZ0ZXIoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGF3YWl0IGJhc2VTZXJ2ZXIuY2xvc2UoKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3dlYiBzb2NrZXRzIHN1cHBvcnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBiZSBhYmxlIHRvIGFkZCB3ZWJzb2NrZXQgaGFuZGxlciBhbmQgcmVtb3ZlIGl0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgd3NzID0gbmV3IFdlYlNvY2tldC5TZXJ2ZXIoe1xuICAgICAgICBub1NlcnZlcjogdHJ1ZSxcbiAgICAgIH0pO1xuICAgICAgd3NzLm9uKCdjb25uZWN0aW9uJywgKHdzKSA9PiB7XG4gICAgICAgIGlmICh3cyAmJiB3cy5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTikge1xuICAgICAgICAgIHdzLnNlbmQoV1NfREFUQSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgY29uc3QgcHJldmlvdXNMaXN0ZW5lckNvdW50ID0gYmFzZVNlcnZlci5saXN0ZW5lckNvdW50KCd1cGdyYWRlJyk7XG4gICAgICBjb25zdCBlbmRwb2ludCA9IGAke0RFRkFVTFRfV1NfUEFUSE5BTUVfUFJFRklYfS9oZWxsb2A7XG4gICAgICBjb25zdCB0aW1lb3V0ID0gNTAwMDtcbiAgICAgIGF3YWl0IGJhc2VTZXJ2ZXIuYWRkV2ViU29ja2V0SGFuZGxlcihlbmRwb2ludCwgd3NzKTtcbiAgICAgIGJhc2VTZXJ2ZXIubGlzdGVuZXJDb3VudCgndXBncmFkZScpLnNob3VsZC5iZS5hYm92ZShwcmV2aW91c0xpc3RlbmVyQ291bnQpO1xuICAgICAgXy5rZXlzKGF3YWl0IGJhc2VTZXJ2ZXIuZ2V0V2ViU29ja2V0SGFuZGxlcnMoKSkubGVuZ3RoLnNob3VsZC5lcWwoMSk7XG4gICAgICBhd2FpdCBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGNsaWVudCA9IG5ldyBXZWJTb2NrZXQoYHdzOi8vJHtURVNUX0hPU1R9OiR7cG9ydH0ke2VuZHBvaW50fWApO1xuICAgICAgICBjbGllbnQub25jZSgnY29ubmVjdGlvbicsICh3cywgcmVxKSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHdzLnNob3VsZC5ub3QuYmUuZW1wdHk7XG4gICAgICAgICAgICByZXEuY29ubmVjdGlvbi5yZW1vdGVBZGRyZXNzLnNob3VsZC5ub3QuYmUuZW1wdHk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGNsaWVudC5vbmNlKCdtZXNzYWdlJywgKGRhdGEpID0+IHtcbiAgICAgICAgICBjb25zdCBkYXRhU3RyID0gXy5pc1N0cmluZyhkYXRhKSA/IGRhdGEgOiBkYXRhLnRvU3RyaW5nKCk7XG4gICAgICAgICAgZGF0YVN0ci5zaG91bGQuZXFsKFdTX0RBVEEpO1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNsaWVudC5vbmNlKCdlcnJvcicsIHJlamVjdCk7XG4gICAgICAgIHNldFRpbWVvdXQoXG4gICAgICAgICAgKCkgPT4gcmVqZWN0KG5ldyBFcnJvcignTm8gd2Vic29ja2V0IG1lc3NhZ2VzIGhhdmUgYmVlbiByZWNlaXZlZCBhZnRlciB0aGUgdGltZW91dCcpKSxcbiAgICAgICAgICB0aW1lb3V0XG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgICAgKGF3YWl0IGJhc2VTZXJ2ZXIucmVtb3ZlV2ViU29ja2V0SGFuZGxlcihlbmRwb2ludCkpLnNob3VsZC5iZS50cnVlO1xuICAgICAgXy5rZXlzKGF3YWl0IGJhc2VTZXJ2ZXIuZ2V0V2ViU29ja2V0SGFuZGxlcnMoKSkubGVuZ3RoLnNob3VsZC5lcWwoMCk7XG4gICAgICBhd2FpdCBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGNsaWVudCA9IG5ldyBXZWJTb2NrZXQoYHdzOi8vJHtURVNUX0hPU1R9OiR7cG9ydH0ke2VuZHBvaW50fWApO1xuICAgICAgICBjbGllbnQub24oJ21lc3NhZ2UnLCAoZGF0YSkgPT5cbiAgICAgICAgICByZWplY3QoXG4gICAgICAgICAgICBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgIGBObyB3ZWJzb2NrZXQgbWVzc2FnZXMgYXJlIGV4cGVjdGVkIGFmdGVyIHRoZSBoYW5kbGVyIGAgK1xuICAgICAgICAgICAgICAgIGBoYXMgYmVlbiByZW1vdmVkLiAnJHtkYXRhfScgaXMgcmVjZWl2ZWQgaW5zdGVhZC4gYFxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgICAgY2xpZW50Lm9uKCdlcnJvcicsIHJlc29sdmUpO1xuICAgICAgICBzZXRUaW1lb3V0KHJlc29sdmUsIHRpbWVvdXQpO1xuICAgICAgfSk7XG4gICAgICBiYXNlU2VydmVyLmxpc3RlbmVyQ291bnQoJ3VwZ3JhZGUnKS5zaG91bGQuYmUuYWJvdmUocHJldmlvdXNMaXN0ZW5lckNvdW50KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUFBLFFBQVEsQ0FBQyxrQkFBRCxFQUFxQixZQUFZO0VBQ3ZDLElBQUlDLFVBQUo7RUFDQSxJQUFJQyxNQUFKO0VBQ0EsSUFBSUMsSUFBSjtFQUNBLE1BQU1DLFVBQVUsR0FBRyxLQUFuQjtFQUNBLE1BQU1DLE9BQU8sR0FBRyxPQUFoQjtFQUVBQyxNQUFNLENBQUMsa0JBQWtCO0lBQ3ZCSixNQUFNLEdBQUcsSUFBSUssc0JBQUosRUFBVDtJQUNBTCxNQUFNLENBQUNNLFNBQVAsR0FBbUJKLFVBQW5CO0lBQ0FELElBQUksR0FBRyxNQUFNLElBQUFNLG9CQUFBLEdBQWI7SUFDQVIsVUFBVSxHQUFHLE1BQU0sSUFBQVMsV0FBQSxFQUFPO01BQ3hCQyx3QkFBd0IsRUFBRSxJQUFBQSw2QkFBQSxFQUF5QlQsTUFBekIsQ0FERjtNQUV4QkM7SUFGd0IsQ0FBUCxDQUFuQjtFQUlELENBUkssQ0FBTjtFQVNBUyxLQUFLLENBQUMsa0JBQWtCO0lBQ3RCLE1BQU1YLFVBQVUsQ0FBQ1ksS0FBWCxFQUFOO0VBQ0QsQ0FGSSxDQUFMO0VBSUFiLFFBQVEsQ0FBQyxxQkFBRCxFQUF3QixZQUFZO0lBQzFDYyxFQUFFLENBQUMsdURBQUQsRUFBMEQsa0JBQWtCO01BQzVFLE1BQU1DLEdBQUcsR0FBRyxJQUFJQyxXQUFBLENBQVVDLE1BQWQsQ0FBcUI7UUFDL0JDLFFBQVEsRUFBRTtNQURxQixDQUFyQixDQUFaO01BR0FILEdBQUcsQ0FBQ0ksRUFBSixDQUFPLFlBQVAsRUFBc0JDLEVBQUQsSUFBUTtRQUMzQixJQUFJQSxFQUFFLElBQUlBLEVBQUUsQ0FBQ0MsVUFBSCxLQUFrQkwsV0FBQSxDQUFVTSxJ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
@@ -156,4 +156,4 @@ describe('server plugins', function () {
156
156
  }).should.eventually.be.rejectedWith(/ugh/);
157
157
  });
158
158
  });
159
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvZTJlL2V4cHJlc3Mvc2VydmVyLmUyZS5zcGVjLmpzIl0sIm5hbWVzIjpbImRlc2NyaWJlIiwiaHdTZXJ2ZXIiLCJwb3J0Iiwic2FuZGJveCIsImJlZm9yZSIsImNvbmZpZ3VyZVJvdXRlcyIsImFwcCIsImdldCIsInJlcSIsInJlcyIsImhlYWRlciIsInN0YXR1cyIsInNlbmQiLCJoZWFkZXJzIiwiRXJyb3IiLCJCIiwiZGVsYXkiLCJyb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24iLCJiZWZvcmVFYWNoIiwic3R1YiIsImNvbnNvbGUiLCJhZnRlciIsImNsb3NlIiwiYWZ0ZXJFYWNoIiwicmVzdG9yZSIsIml0IiwiZGF0YSIsImF4aW9zIiwiVEVTVF9IT1NUIiwic2hvdWxkIiwiZXFsIiwidXJsIiwiYmUiLCJyZWplY3RlZCIsInJlamVjdGVkV2l0aCIsImJvZHlQcm9taXNlIiwiY2F0Y2giLCJEYXRlIiwibm93Iiwibm90IiwiYWJvdmUiLCJ0aW1lb3V0IiwiXyIsIm5vb3AiLCJob3N0bmFtZSIsImlnbiIsInVwZGF0ZXJXaXRoR2V0Um91dGUiLCJyb3V0ZSIsInJlcGx5IiwiaHR0cFNlcnZlciIsInNlcnZlclVwZGF0ZXJzIiwiX3VwZGF0ZWRfcGx1Z2luMSIsInRydWUiLCJfdXBkYXRlZF9wbHVnaW4yIiwiZXZlbnR1YWxseSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0FBLFFBQVEsQ0FBQyxRQUFELEVBQVcsWUFBWTtBQUM3QixNQUFJQyxRQUFKO0FBQ0EsTUFBSUMsSUFBSjtBQUNBLE1BQUlDLE9BQUo7QUFDQUMsRUFBQUEsTUFBTSxDQUFDLGtCQUFrQjtBQUN2QkYsSUFBQUEsSUFBSSxHQUFHLE1BQU0sMEJBQVksSUFBWixDQUFiOztBQUVBLGFBQVNHLGVBQVQsQ0FBMEJDLEdBQTFCLEVBQStCO0FBQzdCQSxNQUFBQSxHQUFHLENBQUNDLEdBQUosQ0FBUSxH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QUFQLENBQWpCO0FBUUEsUUFBSTtBQUFDcEIsTUFBQUE7QUFBRCxRQUFTLE1BQU1DLGVBQU1wQixHQUFOLENBQVcsVUFBU3FCLGtCQUFVLElBQUcxQixJQUFLLFVBQXRDLENBQW5CO0FBQ0F3QixJQUFBQSxJQUFJLENBQUNHLE1BQUwsQ0FBWUMsR0FBWixDQUFnQix3QkFBaEI7QUFDQSxLQUFDO0FBQUNKLE1BQUFBO0FBQUQsUUFBUyxNQUFNQyxlQUFNcEIsR0FBTixDQUFXLFVBQVNxQixrQkFBVSxJQUFHMUIsSUFBSyxVQUF0QyxDQUFoQjtBQUNBd0IsSUFBQUEsSUFBSSxDQUFDRyxNQUFMLENBQVlDLEdBQVosQ0FBZ0Isd0JBQWhCO0FBQ0E3QixJQUFBQSxRQUFRLENBQUNrRCxnQkFBVCxDQUEwQnRCLE1BQTFCLENBQWlDRyxFQUFqQyxDQUFvQ29CLElBQXBDO0FBQ0FuRCxJQUFBQSxRQUFRLENBQUNvRCxnQkFBVCxDQUEwQnhCLE1BQTFCLENBQWlDRyxFQUFqQyxDQUFvQ29CLElBQXBDO0FBQ0QsR0FmQyxDQUFGO0FBZ0JBM0IsRUFBQUEsRUFBRSxDQUFDLDJEQUFELEVBQThELGtCQUFrQjtBQUNoRixVQUFNLGlCQUFPO0FBQ1hSLE1BQUFBLHdCQUF3QixFQUFFeUIsZ0JBQUVDLElBRGpCO0FBRVh6QyxNQUFBQSxJQUZXO0FBR1hnRCxNQUFBQSxjQUFjLEVBQUUsQ0FBQyxNQUFNO0FBQUUsY0FBTSxJQUFJcEMsS0FBSixDQUFVLEtBQVYsQ0FBTjtBQUF3QixPQUFqQztBQUhMLEtBQVAsRUFJSGUsTUFKRyxDQUlJeUIsVUFKSixDQUlldEIsRUFKZixDQUlrQkUsWUFKbEIsQ0FJK0IsS0FKL0IsQ0FBTjtBQUtELEdBTkMsQ0FBRjtBQU9ELENBL0NPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0cmFuc3BpbGU6bW9jaGFcblxuaW1wb3J0IHsgc2VydmVyIH0gZnJvbSAnLi4vLi4vLi4vbGliJztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBjcmVhdGVTYW5kYm94IH0gZnJvbSAnc2lub24nO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7VEVTVF9IT1NULCBnZXRUZXN0UG9ydH0gZnJvbSAnLi4vLi4vaGVscGVycyc7XG5cblxuZGVzY3JpYmUoJ3NlcnZlcicsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IGh3U2VydmVyO1xuICBsZXQgcG9ydDtcbiAgbGV0IHNhbmRib3g7XG4gIGJlZm9yZShhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgcG9ydCA9IGF3YWl0IGdldFRlc3RQb3J0KHRydWUpO1xuXG4gICAgZnVuY3Rpb24gY29uZmlndXJlUm91dGVzIChhcHApIHtcbiAgICAgIGFwcC5nZXQoJy8nLCAocmVxLCByZXMpID0+IHtcbiAgICAgICAgcmVzLmhlYWRlclsnY29udGVudC10eXBlJ10gPSAndGV4dC9odG1sJztcbiAgICAgICAgcmVzLnN0YXR1cygyMDApLnNlbmQoJ0hlbGxvIFdvcmxkIScpO1xuICAgICAgfSk7XG4gICAgICBhcHAuZ2V0KCcvcHl0aG9uJywgKHJlcSwgcmVzKSA9PiB7XG4gICAgICAgIHJlcy5zdGF0dXMoMjAwKS5zZW5kKHJlcS5oZWFkZXJzWydjb250ZW50LXR5cGUnXSk7XG4gICAgICB9KTtcbiAgICAgIGFwcC5nZXQoJy9lcnJvcicsICgpID0+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdoYWhhaGEnKTtcbiAgICAgIH0pO1xuICAgICAgYXBwLmdldCgnL3BhdXNlJywgYXN5bmMgKHJlcSwgcmVzKSA9PiB7XG4gICAgICAgIHJlcy5oZWFkZXJbJ2NvbnRlbnQtdHlwZSddID0gJ3RleHQvaHRtbCc7XG4gICAgICAgIGF3YWl0IEIuZGVsYXkoMTAwMCk7XG4gICAgICAgIHJlcy5zdGF0dXMoMjAwKS5zZW5kKCdXZSBoYXZlIHdhaXRlZCEnKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBod1NlcnZlciA9IGF3YWl0IHNlcnZlcih7XG4gICAgICByb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb246IGNvbmZpZ3VyZVJvdXRlcyxcbiAgICAgIHBvcnQsXG4gICAgfSk7XG4gIH0pO1xuICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBzYW5kYm94ID0gY3JlYXRlU2FuZGJveCgpO1xuICAgIHNhbmRib3guc3R1Yihjb25zb2xlLCAnZXJyb3InKTtcbiAgfSk7XG4gIGFmdGVyKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBhd2FpdCBod1NlcnZlci5jbG9zZSgpO1xuICB9KTtcbiAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBzYW5kYm94LnJlc3RvcmUoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBzdGFydCB1cCB3aXRoIG91ciBtaWRkbGV3YXJlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHtkYXRhfSA9IGF3YWl0IGF4aW9zLmdldChgaHR0cDovLyR7VEVTVF9IT1NUfToke3BvcnR9L2ApO1xuICAgIGRhdGEuc2hvdWxkLmVxbCgnSGVsbG8gV29ybGQhJyk7XG4gIH0pO1xuICBpdCgnc2hvdWxkIGZpeCBicm9rZW4gY29udGV4dCB0eXBlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHtkYXRhfSA9IGF3YWl0IGF4aW9zKHtcbiAgICAgIHVybDogYGh0dHA6Ly8ke1RFU1RfSE9TVH06JHtwb3J0fS9weXRob25gLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICAndXNlci1hZ2VudCc6ICdQeXRob24nLFxuICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCdcbiAgICAgIH1cbiAgICB9KTtcbiAgICBkYXRhLnNob3VsZC5lcWwoJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgnKTtcbiAgfSk7XG4gIGl0KCdzaG91bGQgY2F0Y2ggZXJyb3JzIGluIHRoZSBjYXRjaGFsbCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBhd2FpdCBheGlvcy5nZXQoYGh0dHA6Ly8ke1RFU1RfSE9TVH06JHtwb3J0fS9lcnJvcmApLnNob3VsZC5iZS5yZWplY3RlZDtcbiAgfSk7XG4gIGl0KCdzaG91bGQgZXJyb3IgaWYgd2UgdHJ5IHRvIHN0YXJ0IGFnYWluIG9uIGEgcG9ydCB0aGF0IGlzIHVzZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgYXdhaXQgc2VydmVyKHtcbiAgICAgIHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbiAoKSB7fSxcbiAgICAgIHBvcnQsXG4gICAgfSkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvRUFERFJJTlVTRS8pO1xuICB9KTtcbiAgaXQoJ3Nob3VsZCBub3Qgd2FpdCBmb3IgdGhlIHNlcnZlciBjbG9zZSBjb25uZWN0aW9ucyBiZWZvcmUgZmluaXNoaW5nIGNsb3NpbmcnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgbGV0IGJvZHlQcm9taXNlID0gYXhpb3MuZ2V0KGBodHRwOi8vJHtURVNUX0hPU1R9OiR7cG9ydH0vcGF1c2VgKS5jYXRjaCgoKSA9PiB7fSk7XG5cbiAgICAvLyByZWxpbnF1aXNoIGNvbnRyb2wgc28gdGhhdCB3ZSBkb24ndCBjbG9zZSBiZWZvcmUgdGhlIHJlcXVlc3QgaXMgcmVjZWl2ZWRcbiAgICBhd2FpdCBCLmRlbGF5KDEwMCk7XG5cbiAgICBsZXQgYmVmb3JlID0gRGF0ZS5ub3coKTtcbiAgICBhd2FpdCBod1NlcnZlci5jbG9zZSgpO1xuICAgIC8vIGV4cGVjdCBzbGlnaHRseSBsZXNzIHRoYW4gdGhlIHJlcXVlc3Qgd2FpdGVkLCBzaW5jZSB3ZSBwYXVzZWQgYWJvdmVcbiAgICAoRGF0ZS5ub3coKSAtIGJlZm9yZSkuc2hvdWxkLm5vdC5iZS5hYm92ZSg4MDApO1xuXG4gICAgYXdhaXQgYm9keVByb21pc2U7XG4gIH0pO1xuICBpdCgnc2hvdWxkIGVycm9yIGlmIHdlIHRyeSB0byBzdGFydCBvbiBhIGJhZCBob3N0bmFtZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnRpbWVvdXQoNjAwMDApO1xuICAgIGF3YWl0IHNlcnZlcih7XG4gICAgICByb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb246IF8ubm9vcCxcbiAgICAgIHBvcnQsXG4gICAgICBob3N0bmFtZTogJ2xvbGNhdGhvc3QnLFxuICAgIH0pLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL0VOT1RGT1VORHxFQUREUk5PVEFWQUlMfEVBSV9BR0FJTi8pO1xuICAgIGF3YWl0IHNlcnZlcih7XG4gICAgICByb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb246IF8ubm9vcCxcbiAgICAgIHBvcnQsXG4gICAgICBob3N0bmFtZTogJzEuMS4xLjEnLFxuICAgIH0pLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL0VBRERSTk9UQVZBSUwvKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ3NlcnZlciBwbHVnaW5zJywgZnVuY3Rpb24gKCkge1xuICBsZXQgaHdTZXJ2ZXI7XG4gIGxldCBwb3J0O1xuXG4gIGJlZm9yZShhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgcG9ydCA9IGF3YWl0IGdldFRlc3RQb3J0KHRydWUpO1xuICB9KTtcblxuICBhZnRlckVhY2goYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBod1NlcnZlci5jbG9zZSgpO1xuICAgIH0gY2F0Y2ggKGlnbikge31cbiAgfSk7XG5cbiAgZnVuY3Rpb24gdXBkYXRlcldpdGhHZXRSb3V0ZSAocm91dGUsIHJlcGx5KSB7XG4gICAgcmV0dXJuIGFzeW5jIChhcHAsIGh0dHBTZXJ2ZXIpID0+IHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSByZXF1aXJlLWF3YWl0XG4gICAgICBhcHAuZ2V0KGAvJHtyb3V0ZX1gLCAocmVxLCByZXMpID0+IHtcbiAgICAgICAgcmVzLmhlYWRlclsnY29udGVudC10eXBlJ10gPSAndGV4dC9odG1sJztcbiAgICAgICAgcmVzLnN0YXR1cygyMDApLnNlbmQocmVwbHkpO1xuICAgICAgfSk7XG4gICAgICBodHRwU2VydmVyW2BfdXBkYXRlZF8ke3JvdXRlfWBdID0gdHJ1ZTtcbiAgICB9O1xuICB9XG5cbiAgaXQoJ3Nob3VsZCBhbGxvdyBvbmUgb3IgbW9yZSBwbHVnaW5zIHRvIHVwZGF0ZSB0aGUgc2VydmVyJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGh3U2VydmVyID0gYXdhaXQgc2VydmVyKHtcbiAgICAgIHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbjogXy5ub29wLFxuICAgICAgcG9ydCxcbiAgICAgIHNlcnZlclVwZGF0ZXJzOiBbXG4gICAgICAgIHVwZGF0ZXJXaXRoR2V0Um91dGUoJ3BsdWdpbjEnLCAncmVzIGZyb20gcGx1Z2luMSByb3V0ZScpLFxuICAgICAgICB1cGRhdGVyV2l0aEdldFJvdXRlKCdwbHVnaW4yJywgJ3JlcyBmcm9tIHBsdWdpbjIgcm91dGUnKSxcbiAgICAgIF1cbiAgICB9KTtcbiAgICBsZXQge2RhdGF9ID0gYXdhaXQgYXhpb3MuZ2V0KGBodHRwOi8vJHtURVNUX0hPU1R9OiR7cG9ydH0vcGx1Z2luMWApO1xuICAgIGRhdGEuc2hvdWxkLmVxbCgncmVzIGZyb20gcGx1Z2luMSByb3V0ZScpO1xuICAgICh7ZGF0YX0gPSBhd2FpdCBheGlvcy5nZXQoYGh0dHA6Ly8ke1RFU1RfSE9TVH06JHtwb3J0fS9wbHVnaW4yYCkpO1xuICAgIGRhdGEuc2hvdWxkLmVxbCgncmVzIGZyb20gcGx1Z2luMiByb3V0ZScpO1xuICAgIGh3U2VydmVyLl91cGRhdGVkX3BsdWdpbjEuc2hvdWxkLmJlLnRydWU7XG4gICAgaHdTZXJ2ZXIuX3VwZGF0ZWRfcGx1Z2luMi5zaG91bGQuYmUudHJ1ZTtcbiAgfSk7XG4gIGl0KCdzaG91bGQgcGFzcyBvbiBlcnJvcnMgZnJvbSB0aGUgcGx1Z2luIHVwZGF0ZVNlcnZlciBtZXRob2QnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgYXdhaXQgc2VydmVyKHtcbiAgICAgIHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbjogXy5ub29wLFxuICAgICAgcG9ydCxcbiAgICAgIHNlcnZlclVwZGF0ZXJzOiBbKCkgPT4geyB0aHJvdyBuZXcgRXJyb3IoJ3VnaCcpO31dXG4gICAgfSkuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWRXaXRoKC91Z2gvKTtcbiAgfSk7XG59KTtcbiJdfQ==
159
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkZXNjcmliZSIsImh3U2VydmVyIiwicG9ydCIsInNhbmRib3giLCJiZWZvcmUiLCJnZXRUZXN0UG9ydCIsImNvbmZpZ3VyZVJvdXRlcyIsImFwcCIsImdldCIsInJlcSIsInJlcyIsImhlYWRlciIsInN0YXR1cyIsInNlbmQiLCJoZWFkZXJzIiwiRXJyb3IiLCJCIiwiZGVsYXkiLCJzZXJ2ZXIiLCJyb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24iLCJiZWZvcmVFYWNoIiwiY3JlYXRlU2FuZGJveCIsInN0dWIiLCJjb25zb2xlIiwiYWZ0ZXIiLCJjbG9zZSIsImFmdGVyRWFjaCIsInJlc3RvcmUiLCJpdCIsImRhdGEiLCJheGlvcyIsIlRFU1RfSE9TVCIsInNob3VsZCIsImVxbCIsInVybCIsImJlIiwicmVqZWN0ZWQiLCJyZWplY3RlZFdpdGgiLCJib2R5UHJvbWlzZSIsImNhdGNoIiwiRGF0ZSIsIm5vdyIsIm5vdCIsImFib3ZlIiwidGltZW91dCIsIl8iLCJub29wIiwiaG9zdG5hbWUiLCJpZ24iLCJ1cGRhdGVyV2l0aEdldFJvdXRlIiwicm91dGUiLCJyZXBseSIsImh0dHBTZXJ2ZXIiLCJzZXJ2ZXJVcGRhdGVycyIsIl91cGRhdGVkX3BsdWdpbjEiLCJ0cnVlIiwiX3VwZGF0ZWRfcGx1Z2luMiIsImV2ZW50dWFsbHkiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L2UyZS9leHByZXNzL3NlcnZlci5lMmUuc3BlYy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0cmFuc3BpbGU6bW9jaGFcblxuaW1wb3J0IHtzZXJ2ZXJ9IGZyb20gJy4uLy4uLy4uL2xpYic7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHtjcmVhdGVTYW5kYm94fSBmcm9tICdzaW5vbic7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtURVNUX0hPU1QsIGdldFRlc3RQb3J0fSBmcm9tICcuLi8uLi9oZWxwZXJzJztcblxuZGVzY3JpYmUoJ3NlcnZlcicsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IGh3U2VydmVyO1xuICBsZXQgcG9ydDtcbiAgbGV0IHNhbmRib3g7XG4gIGJlZm9yZShhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgcG9ydCA9IGF3YWl0IGdldFRlc3RQb3J0KHRydWUpO1xuXG4gICAgZnVuY3Rpb24gY29uZmlndXJlUm91dGVzKGFwcCkge1xuICAgICAgYXBwLmdldCgnLycsIChyZXEsIHJlcykgPT4ge1xuICAgICAgICByZXMuaGVhZGVyWydjb250ZW50LXR5cGUnXSA9ICd0ZXh0L2h0bWwnO1xuICAgICAgICByZXMuc3RhdHVzKDIwMCkuc2VuZCgnSGVsbG8gV29ybGQhJyk7XG4gICAgICB9KTtcbiAgICAgIGFwcC5nZXQoJy9weXRob24nLCAocmVxLCByZXMpID0+IHtcbiAgICAgICAgcmVzLnN0YXR1cygyMDApLnNlbmQocmVxLmhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddKTtcbiAgICAgIH0pO1xuICAgICAgYXBwLmdldCgnL2Vycm9yJywgKCkgPT4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2hhaGFoYScpO1xuICAgICAgfSk7XG4gICAgICBhcHAuZ2V0KCcvcGF1c2UnLCBhc3luYyAocmVxLCByZXMpID0+IHtcbiAgICAgICAgcmVzLmhlYWRlclsnY29udGVudC10eXBlJ10gPSAndGV4dC9odG1sJztcbiAgICAgICAgYXdhaXQgQi5kZWxheSgxMDAwKTtcbiAgICAgICAgcmVzLnN0YXR1cygyMDApLnNlbmQoJ1dlIGhhdmUgd2FpdGVkIScpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGh3U2VydmVyID0gYXdhaXQgc2VydmVyKHtcbiAgICAgIHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbjogY29uZmlndXJlUm91dGVzLFxuICAgICAgcG9ydCxcbiAgICB9KTtcbiAgfSk7XG4gIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgIHNhbmRib3ggPSBjcmVhdGVTYW5kYm94KCk7XG4gICAgc2FuZGJveC5zdHViKGNvbnNvbGUsICdlcnJvcicpO1xuICB9KTtcbiAgYWZ0ZXIoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGF3YWl0IGh3U2VydmVyLmNsb3NlKCk7XG4gIH0pO1xuICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgIHNhbmRib3gucmVzdG9yZSgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHN0YXJ0IHVwIHdpdGggb3VyIG1pZGRsZXdhcmUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3Qge2RhdGF9ID0gYXdhaXQgYXhpb3MuZ2V0KGBodHRwOi8vJHtURVNUX0hPU1R9OiR7cG9ydH0vYCk7XG4gICAgZGF0YS5zaG91bGQuZXFsKCdIZWxsbyBXb3JsZCEnKTtcbiAgfSk7XG4gIGl0KCdzaG91bGQgZml4IGJyb2tlbiBjb250ZXh0IHR5cGUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3Qge2RhdGF9ID0gYXdhaXQgYXhpb3Moe1xuICAgICAgdXJsOiBgaHR0cDovLyR7VEVTVF9IT1NUfToke3BvcnR9L3B5dGhvbmAsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICd1c2VyLWFnZW50JzogJ1B5dGhvbicsXG4gICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgZGF0YS5zaG91bGQuZXFsKCdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04Jyk7XG4gIH0pO1xuICBpdCgnc2hvdWxkIGNhdGNoIGVycm9ycyBpbiB0aGUgY2F0Y2hhbGwnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgYXdhaXQgYXhpb3MuZ2V0KGBodHRwOi8vJHtURVNUX0hPU1R9OiR7cG9ydH0vZXJyb3JgKS5zaG91bGQuYmUucmVqZWN0ZWQ7XG4gIH0pO1xuICBpdCgnc2hvdWxkIGVycm9yIGlmIHdlIHRyeSB0byBzdGFydCBhZ2FpbiBvbiBhIHBvcnQgdGhhdCBpcyB1c2VkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGF3YWl0IHNlcnZlcih7XG4gICAgICByb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24oKSB7fSxcbiAgICAgIHBvcnQsXG4gICAgfSkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvRUFERFJJTlVTRS8pO1xuICB9KTtcbiAgaXQoJ3Nob3VsZCBub3Qgd2FpdCBmb3IgdGhlIHNlcnZlciBjbG9zZSBjb25uZWN0aW9ucyBiZWZvcmUgZmluaXNoaW5nIGNsb3NpbmcnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgbGV0IGJvZHlQcm9taXNlID0gYXhpb3MuZ2V0KGBodHRwOi8vJHtURVNUX0hPU1R9OiR7cG9ydH0vcGF1c2VgKS5jYXRjaCgoKSA9PiB7fSk7XG5cbiAgICAvLyByZWxpbnF1aXNoIGNvbnRyb2wgc28gdGhhdCB3ZSBkb24ndCBjbG9zZSBiZWZvcmUgdGhlIHJlcXVlc3QgaXMgcmVjZWl2ZWRcbiAgICBhd2FpdCBCLmRlbGF5KDEwMCk7XG5cbiAgICBsZXQgYmVmb3JlID0gRGF0ZS5ub3coKTtcbiAgICBhd2FpdCBod1NlcnZlci5jbG9zZSgpO1xuICAgIC8vIGV4cGVjdCBzbGlnaHRseSBsZXNzIHRoYW4gdGhlIHJlcXVlc3Qgd2FpdGVkLCBzaW5jZSB3ZSBwYXVzZWQgYWJvdmVcbiAgICAoRGF0ZS5ub3coKSAtIGJlZm9yZSkuc2hvdWxkLm5vdC5iZS5hYm92ZSg4MDApO1xuXG4gICAgYXdhaXQgYm9keVByb21pc2U7XG4gIH0pO1xuICBpdCgnc2hvdWxkIGVycm9yIGlmIHdlIHRyeSB0byBzdGFydCBvbiBhIGJhZCBob3N0bmFtZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnRpbWVvdXQoNjAwMDApO1xuICAgIGF3YWl0IHNlcnZlcih7XG4gICAgICByb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb246IF8ubm9vcCxcbiAgICAgIHBvcnQsXG4gICAgICBob3N0bmFtZTogJ2xvbGNhdGhvc3QnLFxuICAgIH0pLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL0VOT1RGT1VORHxFQUREUk5PVEFWQUlMfEVBSV9BR0FJTi8pO1xuICAgIGF3YWl0IHNlcnZlcih7XG4gICAgICByb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb246IF8ubm9vcCxcbiAgICAgIHBvcnQsXG4gICAgICBob3N0bmFtZTogJzEuMS4xLjEnLFxuICAgIH0pLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL0VBRERSTk9UQVZBSUwvKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ3NlcnZlciBwbHVnaW5zJywgZnVuY3Rpb24gKCkge1xuICBsZXQgaHdTZXJ2ZXI7XG4gIGxldCBwb3J0O1xuXG4gIGJlZm9yZShhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgcG9ydCA9IGF3YWl0IGdldFRlc3RQb3J0KHRydWUpO1xuICB9KTtcblxuICBhZnRlckVhY2goYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBod1NlcnZlci5jbG9zZSgpO1xuICAgIH0gY2F0Y2ggKGlnbikge31cbiAgfSk7XG5cbiAgZnVuY3Rpb24gdXBkYXRlcldpdGhHZXRSb3V0ZShyb3V0ZSwgcmVwbHkpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVxdWlyZS1hd2FpdFxuICAgIHJldHVybiBhc3luYyAoYXBwLCBodHRwU2VydmVyKSA9PiB7XG4gICAgICBhcHAuZ2V0KGAvJHtyb3V0ZX1gLCAocmVxLCByZXMpID0+IHtcbiAgICAgICAgcmVzLmhlYWRlclsnY29udGVudC10eXBlJ10gPSAndGV4dC9odG1sJztcbiAgICAgICAgcmVzLnN0YXR1cygyMDApLnNlbmQocmVwbHkpO1xuICAgICAgfSk7XG4gICAgICBodHRwU2VydmVyW2BfdXBkYXRlZF8ke3JvdXRlfWBdID0gdHJ1ZTtcbiAgICB9O1xuICB9XG5cbiAgaXQoJ3Nob3VsZCBhbGxvdyBvbmUgb3IgbW9yZSBwbHVnaW5zIHRvIHVwZGF0ZSB0aGUgc2VydmVyJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGh3U2VydmVyID0gYXdhaXQgc2VydmVyKHtcbiAgICAgIHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbjogXy5ub29wLFxuICAgICAgcG9ydCxcbiAgICAgIHNlcnZlclVwZGF0ZXJzOiBbXG4gICAgICAgIHVwZGF0ZXJXaXRoR2V0Um91dGUoJ3BsdWdpbjEnLCAncmVzIGZyb20gcGx1Z2luMSByb3V0ZScpLFxuICAgICAgICB1cGRhdGVyV2l0aEdldFJvdXRlKCdwbHVnaW4yJywgJ3JlcyBmcm9tIHBsdWdpbjIgcm91dGUnKSxcbiAgICAgIF0sXG4gICAgfSk7XG4gICAgbGV0IHtkYXRhfSA9IGF3YWl0IGF4aW9zLmdldChgaHR0cDovLyR7VEVTVF9IT1NUfToke3BvcnR9L3BsdWdpbjFgKTtcbiAgICBkYXRhLnNob3VsZC5lcWwoJ3JlcyBmcm9tIHBsdWdpbjEgcm91dGUnKTtcbiAgICAoe2RhdGF9ID0gYXdhaXQgYXhpb3MuZ2V0KGBodHRwOi8vJHtURVNUX0hPU1R9OiR7cG9ydH0vcGx1Z2luMmApKTtcbiAgICBkYXRhLnNob3VsZC5lcWwoJ3JlcyBmcm9tIHBsdWdpbjIgcm91dGUnKTtcbiAgICBod1NlcnZlci5fdXBkYXRlZF9wbHVnaW4xLnNob3VsZC5iZS50cnVlO1xuICAgIGh3U2VydmVyLl91cGRhdGVkX3BsdWdpbjIuc2hvdWxkLmJlLnRydWU7XG4gIH0pO1xuICBpdCgnc2hvdWxkIHBhc3Mgb24gZXJyb3JzIGZyb20gdGhlIHBsdWdpbiB1cGRhdGVTZXJ2ZXIgbWV0aG9kJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGF3YWl0IHNlcnZlcih7XG4gICAgICByb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb246IF8ubm9vcCxcbiAgICAgIHBvcnQsXG4gICAgICBzZXJ2ZXJVcGRhdGVyczogW1xuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd1Z2gnKTtcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSkuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVq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
@@ -56,4 +56,4 @@ describe('proxy', function () {
56
56
  });
57
57
  });
58
58
  });
59
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvZTJlL2pzb253cC1wcm94eS9wcm94eS5lMmUuc3BlYy5qcyJdLCJuYW1lcyI6WyJkZXNjcmliZSIsImp3cHJveHkiLCJKV1Byb3h5IiwiYmFzZVNlcnZlciIsImJlZm9yZSIsInJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbiIsIkZha2VEcml2ZXIiLCJwb3J0IiwiYWZ0ZXIiLCJjbG9zZSIsIml0IiwicmVzIiwicmVzQm9keSIsInByb3h5Iiwic3RhdHVzQ29kZSIsInNob3VsZCIsImVxdWFsIiwidmFsdWUiLCJjb21tYW5kIiwiZXFsIiwiYWZ0ZXJFYWNoIiwiY2FwcyIsImJyb3dzZXJOYW1lIiwiY2FwYWJpbGl0aWVzIiwiYWx3YXlzTWF0Y2giLCJoYXZlIiwicHJvcGVydHkiLCJzZXNzaW9uSWQiLCJsZW5ndGgiLCJiZWZvcmVFYWNoIiwiZGVzaXJlZENhcGFiaWxpdGllcyIsIm5vdCIsImV4aXN0Il0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7O0FBQ0E7O0FBRUFBLFFBQVEsQ0FBQyxPQUFELEVBQVUsWUFBWTtBQUM1QixRQUFNQyxPQUFPLEdBQUcsSUFBSUMsWUFBSixFQUFoQjtBQUNBLE1BQUlDLFVBQUo7QUFDQUMsRUFBQUEsTUFBTSxDQUFDLGtCQUFrQjtBQUN2QkQsSUFBQUEsVUFBVSxHQUFHLE1BQU0saUJBQU87QUFDeEJFLE1BQUFBLHdCQUF3QixFQUFFLG1DQUF5QixJQUFJQyxzQkFBSixFQUF6QixDQURGO0FBRXhCQyxNQUFBQSxJQUFJLEVBQUU7QUFGa0IsS0FBUCxDQUFuQjtBQUlELEdBTEssQ0FBTjtBQU1BQyxFQUFBQSxLQUFLLENBQUMsa0JBQWtCO0FBQ3RCLFVBQU1MLFVBQVUsQ0FBQ00sS0FBWCxFQUFOO0FBQ0QsR0FGSSxDQUFMO0FBSUFDLEVBQUFBLEVBQUUsQ0FBQyw4QkFBRCxFQUFpQyxrQkFBa0I7QUFDbkQsUUFBSSxDQUFDQyxHQUFELEVBQU1DLE9BQU4sSUFBaUIsTUFBTVgsT0FBTyxDQUFDWSxLQUFSLENBQWMsU0FBZCxFQUF5QixLQUF6QixDQUEzQjtBQUNBRixJQUFBQSxHQUFHLENBQUNHLFVBQUosQ0FBZUMsTUFBZixDQUFzQkMsS0FBdEIsQ0FBNEIsR0FBNUI7QUFDQUosSUFBQUEsT0FBTyxDQUFDSyxLQUFSLENBQWNGLE1BQWQsQ0FBcUJDLEtBQXJCLENBQTRCLFVBQTVCO0FBQ0QsR0FKQyxDQUFGO0FBS0FOLEVBQUFBLEVBQUUsQ0FBQyxnQ0FBRCxFQUFtQyxrQkFBa0I7QUFDckQsVUFBTUMsR0FBRyxHQUFHLE1BQU1WLE9BQU8sQ0FBQ2lCLE9BQVIsQ0FBZ0IsU0FBaEIsRUFBMkIsS0FBM0IsQ0FBbEI7QUFDQVAsSUFBQUEsR0FBRyxDQUFDSSxNQUFKLENBQVdJLEdBQVgsQ0FBZ0IsVUFBaEI7QUFDRCxHQUhDLENBQUY7QUFJQW5CLEVBQUFBLFFBQVEsQ0FBQyxhQUFELEVBQWdCLFlBQVk7QUFDbENvQixJQUFBQSxTQUFTLENBQUMsa0JBQWtCO0FBQzFCLFlBQU1uQixPQUFPLENBQUNpQixPQUFSLENBQWdCLEVBQWhCLEVBQW9CLFFBQXBCLENBQU47QUFDRCxLQUZRLENBQVQ7QUFHQVIsSUFBQUEsRUFBRSxDQUFDLDRCQUFELEVBQStCLGtCQUFrQjtBQUNqRCxZQUFNVyxJQUFJLEdBQUc7QUFBQ0MsUUFBQUEsV0FBVyxFQUFFO0FBQWQsT0FBYjtBQUNBLFlBQU1YLEdBQUcsR0FBRyxNQUFNVixPQUFPLENBQUNpQixPQUFSLENBQWdCLFVBQWhCLEVBQTRCLE1BQTVCLEVBQW9DO0FBQUNLLFFBQUFBLFlBQVksRUFBRTtBQUFDQyxVQUFBQSxXQUFXLEVBQUVIO0FBQWQ7QUFBZixPQUFwQyxDQUFsQjtBQUNBVixNQUFBQSxHQUFHLENBQUNZLFlBQUosQ0FBaUJDLFdBQWpCLENBQTZCVCxNQUE3QixDQUFvQ1UsSUFBcEMsQ0FBeUNDLFFBQXpDLENBQWtELGFBQWxEO0FBQ0F6QixNQUFBQSxPQUFPLENBQUMwQixTQUFSLENBQWtCWixNQUFsQixDQUF5QlUsSUFBekIsQ0FBOEJHLE1BQTlCLENBQXFDLEVBQXJDO0FBQ0QsS0FMQyxDQUFGO0FBTUQsR0FWTyxDQUFSO0FBV0E1QixFQUFBQSxRQUFRLENBQUMsZ0JBQUQsRUFBbUIsWUFBWTtBQUNyQzZCLElBQUFBLFVBQVUsQ0FBQyxrQkFBa0I7QUFDM0IsWUFBTTVCLE9BQU8sQ0FBQ2lCLE9BQVIsQ0FBZ0IsVUFBaEIsRUFBNEIsTUFBNUIsRUFBb0M7QUFBQ1ksUUFBQUEsbUJBQW1CLEVBQUU7QUFBdEIsT0FBcEMsQ0FBTjtBQUNELEtBRlMsQ0FBVjtBQUdBcEIsSUFBQUEsRUFBRSxDQUFDLHVCQUFELEVBQTBCLGtCQUFrQjtBQUM1QyxZQUFNQyxHQUFHLEdBQUcsTUFBTVYsT0FBTyxDQUFDaUIsT0FBUixDQUFnQixFQUFoQixFQUFvQixRQUFwQixDQUFsQjtBQUNBSCxNQUFBQSxNQUFNLENBQUNnQixHQUFQLENBQVdDLEtBQVgsQ0FBaUJyQixHQUFqQjtBQUNELEtBSEMsQ0FBRjtBQUlELEdBUk8sQ0FBUjtBQVNELENBMUNPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBKV1Byb3h5LCBzZXJ2ZXIsIHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbiB9IGZyb20gJy4uLy4uLy4uL2xpYic7XG5pbXBvcnQgeyBGYWtlRHJpdmVyIH0gZnJvbSAnLi4vcHJvdG9jb2wvZmFrZS1kcml2ZXInO1xuXG5kZXNjcmliZSgncHJveHknLCBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IGp3cHJveHkgPSBuZXcgSldQcm94eSgpO1xuICBsZXQgYmFzZVNlcnZlcjtcbiAgYmVmb3JlKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBiYXNlU2VydmVyID0gYXdhaXQgc2VydmVyKHtcbiAgICAgIHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbjogcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uKG5ldyBGYWtlRHJpdmVyKCkpLFxuICAgICAgcG9ydDogNDQ0NCxcbiAgICB9KTtcbiAgfSk7XG4gIGFmdGVyKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBhd2FpdCBiYXNlU2VydmVyLmNsb3NlKCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcHJveHkgc3RhdHVzIHN0cmFpZ2h0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGxldCBbcmVzLCByZXNCb2R5XSA9IGF3YWl0IGp3cHJveHkucHJveHkoJy9zdGF0dXMnLCAnR0VUJyk7XG4gICAgcmVzLnN0YXR1c0NvZGUuc2hvdWxkLmVxdWFsKDIwMCk7XG4gICAgcmVzQm9keS52YWx1ZS5zaG91bGQuZXF1YWwoYEknbSBmaW5lYCk7XG4gIH0pO1xuICBpdCgnc2hvdWxkIHByb3h5IHN0YXR1cyBhcyBjb21tYW5kJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGp3cHJveHkuY29tbWFuZCgnL3N0YXR1cycsICdHRVQnKTtcbiAgICByZXMuc2hvdWxkLmVxbChgSSdtIGZpbmVgKTtcbiAgfSk7XG4gIGRlc2NyaWJlKCduZXcgc2Vzc2lvbicsIGZ1bmN0aW9uICgpIHtcbiAgICBhZnRlckVhY2goYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgandwcm94eS5jb21tYW5kKCcnLCAnREVMRVRFJyk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBzdGFydCBhIG5ldyBzZXNzaW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgY2FwcyA9IHticm93c2VyTmFtZTogJ2Zha2UnfTtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGp3cHJveHkuY29tbWFuZCgnL3Nlc3Npb24nLCAnUE9TVCcsIHtjYXBhYmlsaXRpZXM6IHthbHdheXNNYXRjaDogY2Fwc319KTtcbiAgICAgIHJlcy5jYXBhYmlsaXRpZXMuYWx3YXlzTWF0Y2guc2hvdWxkLmhhdmUucHJvcGVydHkoJ2Jyb3dzZXJOYW1lJyk7XG4gICAgICBqd3Byb3h5LnNlc3Npb25JZC5zaG91bGQuaGF2ZS5sZW5ndGgoNDgpO1xuICAgIH0pO1xuICB9KTtcbiAgZGVzY3JpYmUoJ2RlbGV0ZSBzZXNzaW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGJlZm9yZUVhY2goYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgandwcm94eS5jb21tYW5kKCcvc2Vzc2lvbicsICdQT1NUJywge2Rlc2lyZWRDYXBhYmlsaXRpZXM6IHt9fSk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBxdWl0IGEgc2Vzc2lvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGp3cHJveHkuY29tbWFuZCgnJywgJ0RFTEVURScpO1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChyZXMpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
59
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkZXNjcmliZSIsImp3cHJveHkiLCJKV1Byb3h5IiwiYmFzZVNlcnZlciIsImJlZm9yZSIsInNlcnZlciIsInJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbiIsIkZha2VEcml2ZXIiLCJwb3J0IiwiYWZ0ZXIiLCJjbG9zZSIsIml0IiwicmVzIiwicmVzQm9keSIsInByb3h5Iiwic3RhdHVzQ29kZSIsInNob3VsZCIsImVxdWFsIiwidmFsdWUiLCJjb21tYW5kIiwiZXFsIiwiYWZ0ZXJFYWNoIiwiY2FwcyIsImJyb3dzZXJOYW1lIiwiY2FwYWJpbGl0aWVzIiwiYWx3YXlzTWF0Y2giLCJoYXZlIiwicHJvcGVydHkiLCJzZXNzaW9uSWQiLCJsZW5ndGgiLCJiZWZvcmVFYWNoIiwiZGVzaXJlZENhcGFiaWxpdGllcyIsIm5vdCIsImV4aXN0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC9lMmUvanNvbndwLXByb3h5L3Byb3h5LmUyZS5zcGVjLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SldQcm94eSwgc2VydmVyLCByb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb259IGZyb20gJy4uLy4uLy4uL2xpYic7XG5pbXBvcnQge0Zha2VEcml2ZXJ9IGZyb20gJy4uL3Byb3RvY29sL2Zha2UtZHJpdmVyJztcblxuZGVzY3JpYmUoJ3Byb3h5JywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBqd3Byb3h5ID0gbmV3IEpXUHJveHkoKTtcbiAgbGV0IGJhc2VTZXJ2ZXI7XG4gIGJlZm9yZShhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgYmFzZVNlcnZlciA9IGF3YWl0IHNlcnZlcih7XG4gICAgICByb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb246IHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbihuZXcgRmFrZURyaXZlcigpKSxcbiAgICAgIHBvcnQ6IDQ0NDQsXG4gICAgfSk7XG4gIH0pO1xuICBhZnRlcihhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgYXdhaXQgYmFzZVNlcnZlci5jbG9zZSgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHByb3h5IHN0YXR1cyBzdHJhaWdodCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBsZXQgW3JlcywgcmVzQm9keV0gPSBhd2FpdCBqd3Byb3h5LnByb3h5KCcvc3RhdHVzJywgJ0dFVCcpO1xuICAgIHJlcy5zdGF0dXNDb2RlLnNob3VsZC5lcXVhbCgyMDApO1xuICAgIHJlc0JvZHkudmFsdWUuc2hvdWxkLmVxdWFsKGBJJ20gZmluZWApO1xuICB9KTtcbiAgaXQoJ3Nob3VsZCBwcm94eSBzdGF0dXMgYXMgY29tbWFuZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCBqd3Byb3h5LmNvbW1hbmQoJy9zdGF0dXMnLCAnR0VUJyk7XG4gICAgcmVzLnNob3VsZC5lcWwoYEknbSBmaW5lYCk7XG4gIH0pO1xuICBkZXNjcmliZSgnbmV3IHNlc3Npb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgYWZ0ZXJFYWNoKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGp3cHJveHkuY29tbWFuZCgnJywgJ0RFTEVURScpO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgc3RhcnQgYSBuZXcgc2Vzc2lvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGNhcHMgPSB7YnJvd3Nlck5hbWU6ICdmYWtlJ307XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBqd3Byb3h5LmNvbW1hbmQoJy9zZXNzaW9uJywgJ1BPU1QnLCB7XG4gICAgICAgIGNhcGFiaWxpdGllczoge2Fsd2F5c01hdGNoOiBjYXBzfSxcbiAgICAgIH0pO1xuICAgICAgcmVzLmNhcGFiaWxpdGllcy5hbHdheXNNYXRjaC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnYnJvd3Nlck5hbWUnKTtcbiAgICAgIGp3cHJveHkuc2Vzc2lvbklkLnNob3VsZC5oYXZlLmxlbmd0aCg0OCk7XG4gICAgfSk7XG4gIH0pO1xuICBkZXNjcmliZSgnZGVsZXRlIHNlc3Npb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgYmVmb3JlRWFjaChhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBqd3Byb3h5LmNvbW1hbmQoJy9zZXNzaW9uJywgJ1BPU1QnLCB7ZGVzaXJlZENhcGFiaWxpdGllczoge319KTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIHF1aXQgYSBzZXNzaW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgandwcm94eS5jb21tYW5kKCcnLCAnREVMRVRFJyk7XG4gICAgICBzaG91bGQubm90LmV4aXN0KHJlcyk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7QUFDQTs7QUFFQUEsUUFBUSxDQUFDLE9BQUQsRUFBVSxZQUFZO0VBQzVCLE1BQU1DLE9BQU8sR0FBRyxJQUFJQyxZQUFKLEVBQWhCO0VBQ0EsSUFBSUMsVUFBSjtFQUNBQyxNQUFNLENBQUMsa0JBQWtCO0lBQ3ZCRCxVQUFVLEdBQUcsTUFBTSxJQUFBRSxXQUFBLEVBQU87TUFDeEJDLHdCQUF3QixFQUFFLElBQUFBLDZCQUFBLEVBQXlCLElBQUlDLHNCQUFKLEVBQXpCLENBREY7TUFFeEJDLElBQUksRUFBRTtJQUZrQixDQUFQLENBQW5CO0VBSUQsQ0FMSyxDQUFOO0VBTUFDLEtBQUssQ0FBQyxrQkFBa0I7SUFDdEIsTUFBTU4sVUFBVSxDQUFDTyxLQUFYLEVBQU47RUFDRCxDQUZJLENBQUw7RUFJQUMsRUFBRSxDQUFDLDhCQUFELEVBQWlDLGtCQUFrQjtJQUNuRCxJQUFJLENBQUNDLEdBQUQsRUFBTUMsT0FBTixJQUFpQixNQUFNWixPQUFPLENBQUNhLEtBQVIsQ0FBYyxTQUFkLEVBQXlCLEtBQXpCLENBQTNCO0lBQ0FGLEdBQUcsQ0FBQ0csVUFBSixDQUFlQyxNQUFmLENBQXNCQyxLQUF0QixDQUE0QixHQUE1QjtJQUNBSixPQUFPLENBQUNLLEtBQVIsQ0FBY0YsTUFBZCxDQUFxQkMsS0FBckIsQ0FBNEIsVUFBNUI7RUFDRCxDQUpDLENBQUY7RUFLQU4sRUFBRSxDQUFDLGdDQUFELEVBQW1DLGtCQUFrQjtJQUNyRCxNQUFNQyxHQUFHLEdBQUcsTUFBTVgsT0FBTyxDQUFDa0IsT0FBUixDQUFnQixTQUFoQixFQUEyQixLQUEzQixDQUFsQjtJQUNBUCxHQUFHLENBQUNJLE1BQUosQ0FBV0ksR0FBWCxDQUFnQixVQUFoQjtFQUNELENBSEMsQ0FBRjtFQUlBcEIsUUFBUSxDQUFDLGFBQUQsRUFBZ0IsWUFBWTtJQUNsQ3FCLFNBQVMsQ0FBQyxrQkFBa0I7TUFDMUIsTUFBTXBCLE9BQU8sQ0FBQ2tCLE9BQVIsQ0FBZ0IsRUFBaEIsRUFBb0IsUUFBcEIsQ0FBTjtJQUNELENBRlEsQ0FBVDtJQUdBUixFQUFFLENBQUMsNEJBQUQsRUFBK0Isa0JBQWtCO01BQ2pELE1BQU1XLElBQUksR0FBRztRQUFDQyxXQUFXLEVBQUU7TUFBZCxDQUFiO01BQ0EsTUFBTVgsR0FBRyxHQUFHLE1BQU1YLE9BQU8sQ0FBQ2tCLE9BQVIsQ0FBZ0IsVUFBaEIsRUFBNEIsTUFBNUIsRUFBb0M7UUFDcERLLFlBQVksRUFBRTtVQUFDQyxXQUFXLEVBQUVIO1FBQWQ7TUFEc0MsQ0FBcEMsQ0FBbEI7TUFHQVYsR0FBRyxDQUFDWSxZQUFKLENBQWlCQyxXQUFqQixDQUE2QlQsTUFBN0IsQ0FBb0NVLElBQXBDLENBQXlDQyxRQUF6QyxDQUFrRCxhQUFsRDtNQUNBMUIsT0FBTyxDQUFDMkIsU0FBUixDQUFrQlosTUFBbEIsQ0FBeUJVLElBQXpCLENBQThCRyxNQUE5QixDQUFxQyxFQUFyQztJQUNELENBUEMsQ0FBRjtFQVFELENBWk8sQ0FBUjtFQWFBN0IsUUFBUSxDQUFDLGdCQUFELEVBQW1CLFlBQVk7SUFDckM4QixVQUFVLENBQUMsa0JBQWtCO01BQzNCLE1BQU03QixPQUFPLENBQUNrQixPQUFSLENBQWdCLFVBQWhCLEVBQTRCLE1BQTVCLEVBQW9DO1FBQUNZLG1CQUFtQixFQUFFO01BQXRCLENBQXBDLENBQU47SUFDRCxDQUZTLENBQVY7SUFHQXBCLEVBQUUsQ0FBQyx1QkFBRCxFQUEwQixrQkFBa0I7TUFDNUMsTUFBTUMsR0FBRyxHQUFHLE1BQU1YLE9BQU8sQ0FBQ2tCLE9BQVIsQ0FBZ0IsRUFBaEIsRUFBb0IsUUFBcEIsQ0FBbEI7TUFDQUgsTUFBTSxDQUFDZ0IsR0FBUCxDQUFXQyxLQUFYLENBQWlCckIsR0FBakI7SUFDRCxDQUhDLENBQUY7RUFJRCxDQVJPLENBQVI7QUFTRCxDQTVDTyxDQUFSIn0=