@appium/base-driver 8.3.0 → 8.4.1

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 (202) hide show
  1. package/build/lib/basedriver/capabilities.d.ts +80 -0
  2. package/build/lib/basedriver/capabilities.d.ts.map +1 -0
  3. package/build/lib/basedriver/capabilities.js +12 -13
  4. package/build/lib/basedriver/commands/event.d.ts +9 -0
  5. package/build/lib/basedriver/commands/event.d.ts.map +1 -0
  6. package/build/lib/basedriver/commands/event.js +21 -23
  7. package/build/lib/basedriver/commands/find.d.ts +11 -0
  8. package/build/lib/basedriver/commands/find.d.ts.map +1 -0
  9. package/build/lib/basedriver/commands/find.js +42 -37
  10. package/build/lib/basedriver/commands/index.d.ts +8 -0
  11. package/build/lib/basedriver/commands/index.d.ts.map +1 -0
  12. package/build/lib/basedriver/commands/index.js +17 -16
  13. package/build/lib/basedriver/commands/log.d.ts +12 -0
  14. package/build/lib/basedriver/commands/log.d.ts.map +1 -0
  15. package/build/lib/basedriver/commands/log.js +23 -27
  16. package/build/lib/basedriver/commands/session.d.ts +11 -0
  17. package/build/lib/basedriver/commands/session.d.ts.map +1 -0
  18. package/build/lib/basedriver/commands/session.js +21 -149
  19. package/build/lib/basedriver/commands/settings.d.ts +10 -0
  20. package/build/lib/basedriver/commands/settings.d.ts.map +1 -0
  21. package/build/lib/basedriver/commands/settings.js +19 -19
  22. package/build/lib/basedriver/commands/timeout.d.ts +8 -0
  23. package/build/lib/basedriver/commands/timeout.d.ts.map +1 -0
  24. package/build/lib/basedriver/commands/timeout.js +118 -139
  25. package/build/lib/basedriver/core.d.ts +235 -0
  26. package/build/lib/basedriver/core.d.ts.map +1 -0
  27. package/build/lib/basedriver/core.js +283 -0
  28. package/build/lib/basedriver/desired-caps.d.ts +5 -0
  29. package/build/lib/basedriver/desired-caps.d.ts.map +1 -0
  30. package/build/lib/basedriver/desired-caps.js +2 -4
  31. package/build/lib/basedriver/device-settings.d.ts +32 -0
  32. package/build/lib/basedriver/device-settings.d.ts.map +1 -0
  33. package/build/lib/basedriver/device-settings.js +20 -14
  34. package/build/lib/basedriver/driver.d.ts +83 -0
  35. package/build/lib/basedriver/driver.d.ts.map +1 -0
  36. package/build/lib/basedriver/driver.js +101 -256
  37. package/build/lib/basedriver/helpers.d.ts +132 -0
  38. package/build/lib/basedriver/helpers.d.ts.map +1 -0
  39. package/build/lib/basedriver/helpers.js +16 -2
  40. package/build/lib/basedriver/logger.d.ts +3 -0
  41. package/build/lib/basedriver/logger.d.ts.map +1 -0
  42. package/build/lib/basedriver/logger.js +2 -4
  43. package/build/lib/constants.d.ts +9 -0
  44. package/build/lib/constants.d.ts.map +1 -0
  45. package/build/lib/constants.js +2 -4
  46. package/build/lib/express/crash.d.ts +3 -0
  47. package/build/lib/express/crash.d.ts.map +1 -0
  48. package/build/lib/express/crash.js +2 -4
  49. package/build/lib/express/express-logging.d.ts +3 -0
  50. package/build/lib/express/express-logging.d.ts.map +1 -0
  51. package/build/lib/express/express-logging.js +2 -4
  52. package/build/lib/express/idempotency.d.ts +2 -0
  53. package/build/lib/express/idempotency.d.ts.map +1 -0
  54. package/build/lib/express/idempotency.js +2 -4
  55. package/build/lib/express/logger.d.ts +3 -0
  56. package/build/lib/express/logger.d.ts.map +1 -0
  57. package/build/lib/express/logger.js +2 -4
  58. package/build/lib/express/middleware.d.ts +9 -0
  59. package/build/lib/express/middleware.d.ts.map +1 -0
  60. package/build/lib/express/middleware.js +2 -4
  61. package/build/lib/express/server.d.ts +10 -0
  62. package/build/lib/express/server.d.ts.map +1 -0
  63. package/build/lib/express/server.js +2 -4
  64. package/build/lib/express/static.d.ts +6 -0
  65. package/build/lib/express/static.d.ts.map +1 -0
  66. package/build/lib/express/static.js +2 -4
  67. package/build/lib/express/websocket.d.ts +64 -0
  68. package/build/lib/express/websocket.d.ts.map +1 -0
  69. package/build/lib/express/websocket.js +40 -41
  70. package/build/lib/helpers/capabilities.d.ts +13 -0
  71. package/build/lib/helpers/capabilities.d.ts.map +1 -0
  72. package/build/lib/helpers/capabilities.js +40 -2
  73. package/build/lib/index.d.ts +183 -0
  74. package/build/lib/index.d.ts.map +1 -0
  75. package/build/lib/index.js +41 -23
  76. package/build/lib/jsonwp-proxy/protocol-converter.d.ts +48 -0
  77. package/build/lib/jsonwp-proxy/protocol-converter.d.ts.map +1 -0
  78. package/build/lib/jsonwp-proxy/protocol-converter.js +2 -4
  79. package/build/lib/jsonwp-proxy/proxy.d.ts +41 -0
  80. package/build/lib/jsonwp-proxy/proxy.d.ts.map +1 -0
  81. package/build/lib/jsonwp-proxy/proxy.js +25 -9
  82. package/build/lib/jsonwp-status/status.d.ts +159 -0
  83. package/build/lib/jsonwp-status/status.d.ts.map +1 -0
  84. package/build/lib/jsonwp-status/status.js +2 -4
  85. package/build/lib/protocol/errors.d.ts +310 -0
  86. package/build/lib/protocol/errors.d.ts.map +1 -0
  87. package/build/lib/protocol/errors.js +82 -5
  88. package/build/lib/protocol/helpers.d.ts +22 -0
  89. package/build/lib/protocol/helpers.d.ts.map +1 -0
  90. package/build/lib/protocol/helpers.js +2 -4
  91. package/build/lib/protocol/index.d.ts +16 -0
  92. package/build/lib/protocol/index.d.ts.map +1 -0
  93. package/build/lib/protocol/index.js +8 -10
  94. package/build/lib/protocol/protocol.d.ts +11 -0
  95. package/build/lib/protocol/protocol.d.ts.map +1 -0
  96. package/build/lib/protocol/protocol.js +3 -9
  97. package/build/lib/protocol/routes.d.ts +6 -0
  98. package/build/lib/protocol/routes.d.ts.map +1 -0
  99. package/build/lib/protocol/routes.js +18 -4
  100. package/build/lib/protocol/validators.d.ts +8 -0
  101. package/build/lib/protocol/validators.d.ts.map +1 -0
  102. package/build/lib/protocol/validators.js +2 -4
  103. package/build/test/basedriver/README.md +5 -0
  104. package/build/test/basedriver/driver-e2e-tests.js +2 -4
  105. package/build/test/basedriver/driver-tests.js +31 -6
  106. package/build/test/basedriver/index.js +2 -4
  107. package/build/test/e2e/basedriver/driver.e2e.spec.js +15 -0
  108. package/build/test/e2e/basedriver/helpers.e2e.spec.js +192 -0
  109. package/build/test/e2e/basedriver/websockets.e2e.spec.js +87 -0
  110. package/build/test/e2e/express/server.e2e.spec.js +159 -0
  111. package/build/test/e2e/jsonwp-proxy/proxy.e2e.spec.js +59 -0
  112. package/build/test/e2e/protocol/fake-driver.js +163 -0
  113. package/build/test/e2e/protocol/helpers.js +25 -0
  114. package/build/test/e2e/protocol/protocol.e2e.spec.js +1186 -0
  115. package/build/test/helpers.js +2 -4
  116. package/build/test/unit/basedriver/capabilities.spec.js +672 -0
  117. package/build/test/unit/basedriver/capability.spec.js +353 -0
  118. package/build/test/unit/basedriver/commands/event.spec.js +110 -0
  119. package/build/test/unit/basedriver/commands/log.spec.js +92 -0
  120. package/build/test/unit/basedriver/driver.spec.js +15 -0
  121. package/build/test/unit/basedriver/helpers.spec.js +151 -0
  122. package/build/test/unit/basedriver/timeout.spec.js +135 -0
  123. package/build/test/unit/express/server.spec.js +155 -0
  124. package/build/test/unit/express/static.spec.js +26 -0
  125. package/build/test/unit/jsonwp-proxy/mock-request.js +91 -0
  126. package/build/test/unit/jsonwp-proxy/protocol-converter.spec.js +171 -0
  127. package/build/test/unit/jsonwp-proxy/proxy.spec.js +292 -0
  128. package/build/test/unit/jsonwp-proxy/url.spec.js +165 -0
  129. package/build/test/unit/jsonwp-status/status.spec.js +34 -0
  130. package/build/test/unit/protocol/errors.spec.js +390 -0
  131. package/build/test/unit/protocol/routes.spec.js +80 -0
  132. package/build/test/unit/protocol/validator.spec.js +149 -0
  133. package/build/tsconfig.tsbuildinfo +1 -0
  134. package/lib/basedriver/capabilities.js +49 -10
  135. package/lib/basedriver/commands/event.js +49 -31
  136. package/lib/basedriver/commands/find.js +108 -43
  137. package/lib/basedriver/commands/index.js +25 -19
  138. package/lib/basedriver/commands/log.js +60 -33
  139. package/lib/basedriver/commands/session.js +39 -141
  140. package/lib/basedriver/commands/settings.js +33 -13
  141. package/lib/basedriver/commands/timeout.js +153 -153
  142. package/lib/basedriver/core.js +497 -0
  143. package/lib/basedriver/desired-caps.js +1 -1
  144. package/lib/basedriver/device-settings.js +47 -12
  145. package/lib/basedriver/driver.js +272 -383
  146. package/lib/basedriver/helpers.js +18 -2
  147. package/lib/express/websocket.js +35 -32
  148. package/lib/helpers/capabilities.js +60 -1
  149. package/lib/index.js +16 -12
  150. package/lib/jsonwp-proxy/proxy.js +26 -6
  151. package/lib/protocol/errors.js +42 -42
  152. package/lib/protocol/index.js +4 -4
  153. package/lib/protocol/protocol.js +1 -3
  154. package/lib/protocol/routes.js +9 -0
  155. package/package.json +22 -14
  156. package/test/basedriver/README.md +5 -0
  157. package/test/basedriver/driver-e2e-tests.js +1 -1
  158. package/test/basedriver/driver-tests.js +31 -2
  159. package/build/test/basedriver/capabilities-specs.js +0 -674
  160. package/build/test/basedriver/capability-specs.js +0 -355
  161. package/build/test/basedriver/commands/event-specs.js +0 -112
  162. package/build/test/basedriver/commands/log-specs.js +0 -87
  163. package/build/test/basedriver/driver-e2e-specs.js +0 -17
  164. package/build/test/basedriver/driver-specs.js +0 -17
  165. package/build/test/basedriver/helpers-e2e-specs.js +0 -194
  166. package/build/test/basedriver/helpers-specs.js +0 -153
  167. package/build/test/basedriver/timeout-specs.js +0 -137
  168. package/build/test/basedriver/websockets-e2e-specs.js +0 -84
  169. package/build/test/express/server-e2e-specs.js +0 -161
  170. package/build/test/express/server-specs.js +0 -157
  171. package/build/test/express/static-specs.js +0 -28
  172. package/build/test/jsonwp-proxy/mock-request.js +0 -93
  173. package/build/test/jsonwp-proxy/protocol-converter-specs.js +0 -173
  174. package/build/test/jsonwp-proxy/proxy-e2e-specs.js +0 -61
  175. package/build/test/jsonwp-proxy/proxy-specs.js +0 -294
  176. package/build/test/jsonwp-proxy/url-specs.js +0 -167
  177. package/build/test/jsonwp-status/status-specs.js +0 -36
  178. package/build/test/protocol/errors-specs.js +0 -388
  179. package/build/test/protocol/fake-driver.js +0 -165
  180. package/build/test/protocol/helpers.js +0 -27
  181. package/build/test/protocol/protocol-e2e-specs.js +0 -1188
  182. package/build/test/protocol/routes-specs.js +0 -82
  183. package/build/test/protocol/validator-specs.js +0 -151
  184. package/index.d.ts +0 -386
  185. package/test/basedriver/capabilities-specs.js +0 -537
  186. package/test/basedriver/capability-specs.js +0 -383
  187. package/test/basedriver/commands/event-specs.js +0 -74
  188. package/test/basedriver/commands/log-specs.js +0 -79
  189. package/test/basedriver/driver-e2e-specs.js +0 -8
  190. package/test/basedriver/driver-specs.js +0 -8
  191. package/test/basedriver/fixtures/BadZippedApp.zip +0 -1
  192. package/test/basedriver/fixtures/FakeAndroidApp.apk +0 -1
  193. package/test/basedriver/fixtures/FakeAndroidApp.asd +0 -0
  194. package/test/basedriver/fixtures/FakeIOSApp.app +0 -1
  195. package/test/basedriver/fixtures/FakeIOSApp.app.zip +0 -0
  196. package/test/basedriver/fixtures/FakeIOSApp.ipa +0 -0
  197. package/test/basedriver/fixtures/custom-element-finder-bad.js +0 -5
  198. package/test/basedriver/fixtures/custom-element-finder.js +0 -29
  199. package/test/basedriver/helpers-e2e-specs.js +0 -187
  200. package/test/basedriver/helpers-specs.js +0 -137
  201. package/test/basedriver/timeout-specs.js +0 -128
  202. package/test/basedriver/websockets-e2e-specs.js +0 -75
@@ -51,7 +51,5 @@ const createAppiumURL = (0, _lodash.curry)((address, port, session, pathname) =>
51
51
  let url = new URL(path, `${address}:${port}`);
52
52
  return url.href;
53
53
  }, 4);
54
- exports.createAppiumURL = createAppiumURL;require('source-map-support').install();
55
-
56
-
57
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvaGVscGVycy5qcyJdLCJuYW1lcyI6WyJURVNUX0hPU1QiLCJNRVRIT0RTIiwiUE9TVCIsIkRFTEVURSIsInRlc3RQb3J0IiwiZ2V0VGVzdFBvcnQiLCJmb3JjZSIsInBvcnQiLCJjcmVhdGVBcHBpdW1VUkwiLCJhZGRyZXNzIiwic2Vzc2lvbiIsInBhdGhuYW1lIiwidGVzdCIsInBhdGgiLCJ1cmwiLCJVUkwiLCJocmVmIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQSxNQUFNQSxTQUFTLEdBQUcsV0FBbEI7O0FBS0EsTUFBTUMsT0FBTyxHQUFHO0FBQ2RDLEVBQUFBLElBQUksRUFBRSxNQURRO0FBRWRDLEVBQUFBLE1BQU0sRUFBRTtBQUZNLENBQWhCOztBQUtBLElBQUlDLFFBQUo7O0FBTUEsZUFBZUMsV0FBZixDQUE0QkMsS0FBSyxHQUFHLEtBQXBDLEVBQTJDO0FBQ3pDLE1BQUlBLEtBQUssSUFBSSxDQUFDRixRQUFkLEVBQXdCO0FBQ3RCLFFBQUlHLElBQUksR0FBRyxNQUFNLHVCQUFqQjs7QUFDQSxRQUFJLENBQUNILFFBQUwsRUFBZTtBQUNiQSxNQUFBQSxRQUFRLEdBQUdHLElBQVg7QUFDRDs7QUFDRCxXQUFPQSxJQUFQO0FBQ0Q7O0FBQ0QsU0FBT0gsUUFBUDtBQUNEOztBQUVELE1BQU1JLGVBQWUsR0FBRyxtQkEyQnRCLENBQUNDLE9BQUQsRUFBVUYsSUFBVixFQUFnQkcsT0FBaEIsRUFBeUJDLFFBQXpCLEtBQXNDO0FBQ3BDLE1BQUksQ0FBQyxlQUFlQyxJQUFmLENBQW9CSCxPQUFwQixDQUFMLEVBQW1DO0FBQ2pDQSxJQUFBQSxPQUFPLEdBQUksVUFBU0EsT0FBUSxFQUE1QjtBQUNEOztBQUNELE1BQUlJLElBQUksR0FBR0gsT0FBTyxHQUFJLFdBQVVBLE9BQVEsRUFBdEIsR0FBMEIsRUFBNUM7O0FBQ0EsTUFBSUMsUUFBSixFQUFjO0FBQ1pFLElBQUFBLElBQUksR0FBSSxHQUFFQSxJQUFLLElBQUdGLFFBQVMsRUFBM0I7QUFDRDs7QUFDRCxNQUFJRyxHQUFHLEdBQUcsSUFBSUMsR0FBSixDQUFRRixJQUFSLEVBQWUsR0FBRUosT0FBUSxJQUFHRixJQUFLLEVBQWpDLENBQVY7QUFDQSxTQUFPTyxHQUFHLENBQUNFLElBQVg7QUFDRCxDQXJDcUIsRUFzQ3RCLENBdENzQixDQUF4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBnZXRQb3J0IGZyb20gJ2dldC1wb3J0JztcbmltcG9ydCB7Y3Vycnl9IGZyb20gJ2xvZGFzaCc7XG5cbmNvbnN0IFRFU1RfSE9TVCA9ICcxMjcuMC4wLjEnO1xuXG4vKipcbiAqIFNvbWUgSFRUUCBtZXRob2RzLCBmb3IgeW91ciBwbGVhc3VyZVxuICovXG5jb25zdCBNRVRIT0RTID0ge1xuICBQT1NUOiAnUE9TVCcsXG4gIERFTEVURTogJ0RFTEVURSdcbn07XG5cbmxldCB0ZXN0UG9ydDtcbi8qKlxuICogUmV0dXJucyBhIGZyZWUgcG9ydDsgb25lIHBlciBwcm9jZXNzXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtmb3JjZV0gLSBJZiB0cnVlLCBkbyBub3QgcmV1c2UgdGhlIHBvcnQgKGlmIGl0IGFscmVhZHkgZXhpc3RzKVxuICogQHJldHVybnMge1Byb21pc2U8bnVtYmVyPn0gYSBmcmVlIHBvcnRcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0VGVzdFBvcnQgKGZvcmNlID0gZmFsc2UpIHtcbiAgaWYgKGZvcmNlIHx8ICF0ZXN0UG9ydCkge1xuICAgIGxldCBwb3J0ID0gYXdhaXQgZ2V0UG9ydCgpO1xuICAgIGlmICghdGVzdFBvcnQpIHtcbiAgICAgIHRlc3RQb3J0ID0gcG9ydDtcbiAgICB9XG4gICAgcmV0dXJuIHBvcnQ7XG4gIH1cbiAgcmV0dXJuIHRlc3RQb3J0O1xufVxuXG5jb25zdCBjcmVhdGVBcHBpdW1VUkwgPSBjdXJyeShcbiAgLyoqXG4gICAqIEJ1aWxkIGFuIEFwcGl1bSBVUkwgZnJvbSBjb21wb25lbnRzLlxuICAgKlxuICAgKiAqKkFsbCoqIHBhcmFtZXRlcnMgYXJlIHJlcXVpcmVkLiAgUHJvdmlkZSBhbiBlbXB0eSBzdHJpbmcgKGAnJ2ApIGlmIHlvdSBkb24ndCBuZWVkIG9uZS5cbiAgICogVG8gcmVhcnJhbmdlIGFyZ3VtZW50cyAoaWYgbmVlZGVkKSwgdXNlIHRoZSBwbGFjZWhvbGRlciAoYF9gKS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgLSBCYXNlIGFkZHJlc3MgKHcvIG9wdGlvbmFsIHByb3RvY29sKVxuICAgKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IHBvcnQgLSBQb3J0IG51bWJlclxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2Vzc2lvbiAtIFNlc3Npb24gSURcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGhuYW1lIC0gRXh0cmEgcGF0aFxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBOZXcgVVJMXG4gICAqIEBleGFtcGxlXG4gICAqXG4gICAqIGltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG4gICAqXG4gICAqIC8vIGh0dHA6Ly8xMjcuMC4wLjE6MzEzMzcvc2Vzc2lvblxuICAgKiBjcmVhdGVBcHBpdW1VUkwoJzEyNy4wLjAuMScsIDMxMzM3LCAnJywgJ3Nlc3Npb24nKVxuICAgKlxuICAgKiAvLyBodHRwOi8vMTI3LjAuMC4xOjMxMzM3L3Nlc3Npb24vYXNkZmdqa2xcbiAgICogY29uc3QgY3JlYXRlU2Vzc2lvblVSTCA9IGNyZWF0ZUFwcGl1bVVSTCgnMTI3LjAuMC4xJywgMzEzMzcsIF8sICdzZXNzaW9uJylcbiAgICogY3JlYXRlU2Vzc2lvblVSTCgnYXNkZmdqa2wnKVxuICAgKlxuICAgKiAvLyBodHRwOi8vMTI3LjAuMC4xOjMxMzM3L3Nlc3Npb24vYXNkZmdqa2wvYXBwaXVtL2V4ZWN1dGVcbiAgICogY29uc3QgY3JlYXRlVVJMV2l0aFBhdGggPSBjcmVhdGVBcHBpdW1VUkwoJzEyNy4wLjAuMScsIDMxMzM3LCAnYXNkZmdqa2wnKTtcbiAgICogY3JlYXRlVVJMV2l0aFBhdGgoJ2FwcGl1bS9leGVjdXRlJylcbiAgICovXG4gIChhZGRyZXNzLCBwb3J0LCBzZXNzaW9uLCBwYXRobmFtZSkgPT4ge1xuICAgIGlmICghL15odHRwcz86XFwvXFwvLy50ZXN0KGFkZHJlc3MpKSB7XG4gICAgICBhZGRyZXNzID0gYGh0dHA6Ly8ke2FkZHJlc3N9YDtcbiAgICB9XG4gICAgbGV0IHBhdGggPSBzZXNzaW9uID8gYHNlc3Npb24vJHtzZXNzaW9ufWAgOiAnJztcbiAgICBpZiAocGF0aG5hbWUpIHtcbiAgICAgIHBhdGggPSBgJHtwYXRofS8ke3BhdGhuYW1lfWA7XG4gICAgfVxuICAgIGxldCB1cmwgPSBuZXcgVVJMKHBhdGgsIGAke2FkZHJlc3N9OiR7cG9ydH1gKTtcbiAgICByZXR1cm4gdXJsLmhyZWY7XG4gIH0sXG4gIDQsXG4pO1xuXG5leHBvcnQge1RFU1RfSE9TVCwgTUVUSE9EUywgZ2V0VGVzdFBvcnQsIGNyZWF0ZUFwcGl1bVVSTH07XG4iXSwiZmlsZSI6InRlc3QvaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLiJ9
54
+ exports.createAppiumURL = createAppiumURL;
55
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3Rlc3QvaGVscGVycy5qcyJdLCJuYW1lcyI6WyJURVNUX0hPU1QiLCJNRVRIT0RTIiwiUE9TVCIsIkRFTEVURSIsInRlc3RQb3J0IiwiZ2V0VGVzdFBvcnQiLCJmb3JjZSIsInBvcnQiLCJjcmVhdGVBcHBpdW1VUkwiLCJhZGRyZXNzIiwic2Vzc2lvbiIsInBhdGhuYW1lIiwidGVzdCIsInBhdGgiLCJ1cmwiLCJVUkwiLCJocmVmIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQSxNQUFNQSxTQUFTLEdBQUcsV0FBbEI7O0FBS0EsTUFBTUMsT0FBTyxHQUFHO0FBQ2RDLEVBQUFBLElBQUksRUFBRSxNQURRO0FBRWRDLEVBQUFBLE1BQU0sRUFBRTtBQUZNLENBQWhCOztBQUtBLElBQUlDLFFBQUo7O0FBTUEsZUFBZUMsV0FBZixDQUE0QkMsS0FBSyxHQUFHLEtBQXBDLEVBQTJDO0FBQ3pDLE1BQUlBLEtBQUssSUFBSSxDQUFDRixRQUFkLEVBQXdCO0FBQ3RCLFFBQUlHLElBQUksR0FBRyxNQUFNLHVCQUFqQjs7QUFDQSxRQUFJLENBQUNILFFBQUwsRUFBZTtBQUNiQSxNQUFBQSxRQUFRLEdBQUdHLElBQVg7QUFDRDs7QUFDRCxXQUFPQSxJQUFQO0FBQ0Q7O0FBQ0QsU0FBT0gsUUFBUDtBQUNEOztBQUVELE1BQU1JLGVBQWUsR0FBRyxtQkEyQnRCLENBQUNDLE9BQUQsRUFBVUYsSUFBVixFQUFnQkcsT0FBaEIsRUFBeUJDLFFBQXpCLEtBQXNDO0FBQ3BDLE1BQUksQ0FBQyxlQUFlQyxJQUFmLENBQW9CSCxPQUFwQixDQUFMLEVBQW1DO0FBQ2pDQSxJQUFBQSxPQUFPLEdBQUksVUFBU0EsT0FBUSxFQUE1QjtBQUNEOztBQUNELE1BQUlJLElBQUksR0FBR0gsT0FBTyxHQUFJLFdBQVVBLE9BQVEsRUFBdEIsR0FBMEIsRUFBNUM7O0FBQ0EsTUFBSUMsUUFBSixFQUFjO0FBQ1pFLElBQUFBLElBQUksR0FBSSxHQUFFQSxJQUFLLElBQUdGLFFBQVMsRUFBM0I7QUFDRDs7QUFDRCxNQUFJRyxHQUFHLEdBQUcsSUFBSUMsR0FBSixDQUFRRixJQUFSLEVBQWUsR0FBRUosT0FBUSxJQUFHRixJQUFLLEVBQWpDLENBQVY7QUFDQSxTQUFPTyxHQUFHLENBQUNFLElBQVg7QUFDRCxDQXJDcUIsRUFzQ3RCLENBdENzQixDQUF4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBnZXRQb3J0IGZyb20gJ2dldC1wb3J0JztcbmltcG9ydCB7Y3Vycnl9IGZyb20gJ2xvZGFzaCc7XG5cbmNvbnN0IFRFU1RfSE9TVCA9ICcxMjcuMC4wLjEnO1xuXG4vKipcbiAqIFNvbWUgSFRUUCBtZXRob2RzLCBmb3IgeW91ciBwbGVhc3VyZVxuICovXG5jb25zdCBNRVRIT0RTID0ge1xuICBQT1NUOiAnUE9TVCcsXG4gIERFTEVURTogJ0RFTEVURSdcbn07XG5cbmxldCB0ZXN0UG9ydDtcbi8qKlxuICogUmV0dXJucyBhIGZyZWUgcG9ydDsgb25lIHBlciBwcm9jZXNzXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtmb3JjZV0gLSBJZiB0cnVlLCBkbyBub3QgcmV1c2UgdGhlIHBvcnQgKGlmIGl0IGFscmVhZHkgZXhpc3RzKVxuICogQHJldHVybnMge1Byb21pc2U8bnVtYmVyPn0gYSBmcmVlIHBvcnRcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0VGVzdFBvcnQgKGZvcmNlID0gZmFsc2UpIHtcbiAgaWYgKGZvcmNlIHx8ICF0ZXN0UG9ydCkge1xuICAgIGxldCBwb3J0ID0gYXdhaXQgZ2V0UG9ydCgpO1xuICAgIGlmICghdGVzdFBvcnQpIHtcbiAgICAgIHRlc3RQb3J0ID0gcG9ydDtcbiAgICB9XG4gICAgcmV0dXJuIHBvcnQ7XG4gIH1cbiAgcmV0dXJuIHRlc3RQb3J0O1xufVxuXG5jb25zdCBjcmVhdGVBcHBpdW1VUkwgPSBjdXJyeShcbiAgLyoqXG4gICAqIEJ1aWxkIGFuIEFwcGl1bSBVUkwgZnJvbSBjb21wb25lbnRzLlxuICAgKlxuICAgKiAqKkFsbCoqIHBhcmFtZXRlcnMgYXJlIHJlcXVpcmVkLiAgUHJvdmlkZSBhbiBlbXB0eSBzdHJpbmcgKGAnJ2ApIGlmIHlvdSBkb24ndCBuZWVkIG9uZS5cbiAgICogVG8gcmVhcnJhbmdlIGFyZ3VtZW50cyAoaWYgbmVlZGVkKSwgdXNlIHRoZSBwbGFjZWhvbGRlciAoYF9gKS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgLSBCYXNlIGFkZHJlc3MgKHcvIG9wdGlvbmFsIHByb3RvY29sKVxuICAgKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IHBvcnQgLSBQb3J0IG51bWJlclxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2Vzc2lvbiAtIFNlc3Npb24gSURcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGhuYW1lIC0gRXh0cmEgcGF0aFxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBOZXcgVVJMXG4gICAqIEBleGFtcGxlXG4gICAqXG4gICAqIGltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG4gICAqXG4gICAqIC8vIGh0dHA6Ly8xMjcuMC4wLjE6MzEzMzcvc2Vzc2lvblxuICAgKiBjcmVhdGVBcHBpdW1VUkwoJzEyNy4wLjAuMScsIDMxMzM3LCAnJywgJ3Nlc3Npb24nKVxuICAgKlxuICAgKiAvLyBodHRwOi8vMTI3LjAuMC4xOjMxMzM3L3Nlc3Npb24vYXNkZmdqa2xcbiAgICogY29uc3QgY3JlYXRlU2Vzc2lvblVSTCA9IGNyZWF0ZUFwcGl1bVVSTCgnMTI3LjAuMC4xJywgMzEzMzcsIF8sICdzZXNzaW9uJylcbiAgICogY3JlYXRlU2Vzc2lvblVSTCgnYXNkZmdqa2wnKVxuICAgKlxuICAgKiAvLyBodHRwOi8vMTI3LjAuMC4xOjMxMzM3L3Nlc3Npb24vYXNkZmdqa2wvYXBwaXVtL2V4ZWN1dGVcbiAgICogY29uc3QgY3JlYXRlVVJMV2l0aFBhdGggPSBjcmVhdGVBcHBpdW1VUkwoJzEyNy4wLjAuMScsIDMxMzM3LCAnYXNkZmdqa2wnKTtcbiAgICogY3JlYXRlVVJMV2l0aFBhdGgoJ2FwcGl1bS9leGVjdXRlJylcbiAgICovXG4gIChhZGRyZXNzLCBwb3J0LCBzZXNzaW9uLCBwYXRobmFtZSkgPT4ge1xuICAgIGlmICghL15odHRwcz86XFwvXFwvLy50ZXN0KGFkZHJlc3MpKSB7XG4gICAgICBhZGRyZXNzID0gYGh0dHA6Ly8ke2FkZHJlc3N9YDtcbiAgICB9XG4gICAgbGV0IHBhdGggPSBzZXNzaW9uID8gYHNlc3Npb24vJHtzZXNzaW9ufWAgOiAnJztcbiAgICBpZiAocGF0aG5hbWUpIHtcbiAgICAgIHBhdGggPSBgJHtwYXRofS8ke3BhdGhuYW1lfWA7XG4gICAgfVxuICAgIGxldCB1cmwgPSBuZXcgVVJMKHBhdGgsIGAke2FkZHJlc3N9OiR7cG9ydH1gKTtcbiAgICByZXR1cm4gdXJsLmhyZWY7XG4gIH0sXG4gIDQsXG4pO1xuXG5leHBvcnQge1RFU1RfSE9TVCwgTUVUSE9EUywgZ2V0VGVzdFBvcnQsIGNyZWF0ZUFwcGl1bVVSTH07XG4iXX0=