@appium/base-driver 8.5.1 → 8.5.4

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
@@ -1,4 +1,4 @@
1
- declare var _default: import('@appium/types').DriverHelpers;
1
+ declare const _default: import('@appium/types').DriverHelpers;
2
2
  export default _default;
3
3
  export type PostProcessOptions = {
4
4
  /**
@@ -47,13 +47,18 @@ export type ConfigureAppOptions = {
47
47
  * containing `appPath` property then the integrity of it will be verified and stored into
48
48
  * the cache.
49
49
  */
50
- onPostProcess: (obj: PostProcessOptions) => (Promise<PostProcessResult | undefined> | PostProcessResult | undefined);
50
+ onPostProcess?: ((obj: PostProcessOptions) => (Promise<PostProcessResult | undefined> | PostProcessResult | undefined)) | undefined;
51
51
  /**
52
52
  * List of supported application extensions (
53
53
  * including starting dots). This property is mandatory and must not be empty.
54
54
  */
55
55
  supportedExtensions: string[];
56
56
  };
57
+ export type RemoteAppProps = {
58
+ lastModified: Date | null;
59
+ immutable: boolean;
60
+ maxAge: number | null;
61
+ };
57
62
  /**
58
63
  * @typedef PostProcessOptions
59
64
  * @property {?Object} cachedAppInfo The information about the previously cached app instance (if exists):
@@ -80,7 +85,7 @@ export type ConfigureAppOptions = {
80
85
  */
81
86
  /**
82
87
  * @typedef ConfigureAppOptions
83
- * @property {(obj: PostProcessOptions) => (Promise<PostProcessResult|undefined>|PostProcessResult|undefined)} onPostProcess
88
+ * @property {(obj: PostProcessOptions) => (Promise<PostProcessResult|undefined>|PostProcessResult|undefined)} [onPostProcess]
84
89
  * Optional function, which should be applied
85
90
  * to the application after it is downloaded/preprocessed. This function may be async
86
91
  * and is expected to accept single object parameter.
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../lib/basedriver/helpers.js"],"names":[],"mappings":"sBAgjBW,OAAO,eAAe,EAAE,aAAa;;;;;;;;;;;;;;;;;;;;WA3YlC,OAAO;;;;;;;;;;aAGP,MAAM;;;;;;;aAMN,MAAM;;;;;;;;;;;;yBAMA,kBAAkB,KAAK,CAAC,QAAQ,iBAAiB,GAAC,SAAS,CAAC,GAAC,iBAAiB,GAAC,SAAS,CAAC;;;;;yBAQ/F,MAAM,EAAE;;AApCtB;;;;;;;;;;;;;;;;;;GAkBG;AAEH;;;;GAIG;AAEH;;;;;;;;;;;;GAYG;AAEH;;;;;;;;;GASG;AACH,kCAJW,MAAM,YACN,MAAM,GAAC,MAAM,EAAE,GAAC,mBAAmB,gBA8M7C;AA8ED,qDAEC;AAED;;;;;;;;;GASG;AACH,oFAuBC;AAED;;;;;GAKG;AACH,oCAFW,MAAM,GAAC,aAAa,SAoB9B;AAED;;;;;;GAMG;AACH,6CAJW,OAAO,eAAe,EAAE,IAAI,cAC5B,MAAM,UACJ,MAAM,CAKlB"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../lib/basedriver/helpers.js"],"names":[],"mappings":"wBAklBW,OAAO,eAAe,EAAE,aAAa;;;;;;;;;;;;;;;;;;;;WAzalC,OAAO;;;;;;;;;;aAGP,MAAM;;;;;;;aAMN,MAAM;;;;;;;;;;;;2BAMA,kBAAkB,KAAK,CAAC,QAAQ,iBAAiB,GAAC,SAAS,CAAC,GAAC,iBAAiB,GAAC,SAAS,CAAC;;;;;yBAQ/F,MAAM,EAAE;;;kBA8ZR,IAAI;eACJ,OAAO;YACP,MAAM;;AApcpB;;;;;;;;;;;;;;;;;;GAkBG;AAEH;;;;GAIG;AAEH;;;;;;;;;;;;GAYG;AAEH;;;;;;;;;GASG;AACH,kCAJW,MAAM,YACN,MAAM,GAAC,MAAM,EAAE,GAAC,mBAAmB,gBA4N7C;AA8FD,qDAEC;AAED;;;;;;;;;GASG;AACH,oFAuBC;AAED;;;;;GAKG;AACH,oCAFW,MAAM,GAAC,aAAa,SAoB9B;AAED;;;;;;GAMG;AACH,6CAJW,OAAO,eAAe,EAAE,IAAI,cAC5B,MAAM,UACJ,MAAM,CAKlB"}
@@ -178,9 +178,7 @@ async function configureApp(app, options = {}) {
178
178
  }
179
179
 
180
180
  let supportedAppExtensions;
181
- const {
182
- onPostProcess
183
- } = _lodash.default.isPlainObject(options) ? options : {};
181
+ const onPostProcess = !_lodash.default.isString(options) && !_lodash.default.isArray(options) ? options.onPostProcess : undefined;
184
182
 
185
183
  if (_lodash.default.isString(options)) {
186
184
  supportedAppExtensions = [options];
@@ -209,7 +207,7 @@ async function configureApp(app, options = {}) {
209
207
  pathname
210
208
  } = _url.default.parse(newApp);
211
209
 
212
- const isUrl = ['http:', 'https:'].includes(protocol);
210
+ const isUrl = protocol === null ? false : ['http:', 'https:'].includes(protocol);
213
211
  const cachedAppInfo = APPLICATIONS_CACHE.get(app);
214
212
  return await APPLICATIONS_CACHE_GUARD.acquire(app, async () => {
215
213
  if (isUrl) {
@@ -252,7 +250,7 @@ async function configureApp(app, options = {}) {
252
250
 
253
251
  let fileName = null;
254
252
 
255
- const basename = _support.fs.sanitizeName(_path.default.basename(decodeURIComponent(pathname)), {
253
+ const basename = _support.fs.sanitizeName(_path.default.basename(decodeURIComponent(pathname !== null && pathname !== void 0 ? pathname : '')), {
256
254
  replacement: SANITIZE_REPLACEMENT
257
255
  });
258
256
 
@@ -545,4 +543,4 @@ var _default = {
545
543
  generateDriverLogPrefix
546
544
  };
547
545
  exports.default = _default;
548
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9iYXNlZHJpdmVyL2hlbHBlcnMuanMiXSwibmFtZXMiOlsiSVBBX0VYVCIsIlpJUF9FWFRTIiwiWklQX01JTUVfVFlQRVMiLCJDQUNIRURfQVBQU19NQVhfQUdFIiwiTUFYX0NBQ0hFRF9BUFBTIiwiQVBQTElDQVRJT05TX0NBQ0hFIiwiTFJVIiwibWF4IiwidHRsIiwidXBkYXRlQWdlT25HZXQiLCJkaXNwb3NlIiwiYXBwIiwiZnVsbFBhdGgiLCJsb2dnZXIiLCJpbmZvIiwiZnMiLCJyaW1yYWYiLCJub0Rpc3Bvc2VPblNldCIsIkFQUExJQ0FUSU9OU19DQUNIRV9HVUFSRCIsIkFzeW5jTG9jayIsIlNBTklUSVpFX1JFUExBQ0VNRU5UIiwiREVGQVVMVF9CQVNFTkFNRSIsIkFQUF9ET1dOTE9BRF9USU1FT1VUX01TIiwicHJvY2VzcyIsIm9uIiwic2l6ZSIsImFwcFBhdGhzIiwidmFsdWVzIiwibWFwIiwiZGVidWciLCJsZW5ndGgiLCJ1dGlsIiwicGx1cmFsaXplIiwiYXBwUGF0aCIsInJpbXJhZlN5bmMiLCJlIiwid2FybiIsIm1lc3NhZ2UiLCJyZXRyaWV2ZUhlYWRlcnMiLCJsaW5rIiwidXJsIiwibWV0aG9kIiwidGltZW91dCIsImhlYWRlcnMiLCJnZXRDYWNoZWRBcHBsaWNhdGlvblBhdGgiLCJjdXJyZW50QXBwUHJvcHMiLCJjYWNoZWRBcHBJbmZvIiwicmVmcmVzaCIsIl8iLCJpc1BsYWluT2JqZWN0IiwibGFzdE1vZGlmaWVkIiwiY3VycmVudE1vZGlmaWVkIiwiaW1tdXRhYmxlIiwiY3VycmVudEltbXV0YWJsZSIsIm1heEFnZSIsImN1cnJlbnRNYXhBZ2UiLCJ0aW1lc3RhbXAiLCJnZXRUaW1lIiwibXNMZWZ0IiwiRGF0ZSIsIm5vdyIsInBhdGgiLCJiYXNlbmFtZSIsInZlcmlmeUFwcEV4dGVuc2lvbiIsInN1cHBvcnRlZEFwcEV4dGVuc2lvbnMiLCJ0b0xvd2VyIiwiaW5jbHVkZXMiLCJleHRuYW1lIiwiRXJyb3IiLCJjYWxjdWxhdGVGb2xkZXJJbnRlZ3JpdHkiLCJmb2xkZXJQYXRoIiwiZ2xvYiIsImN3ZCIsInN0cmljdCIsIm5vc29ydCIsImNhbGN1bGF0ZUZpbGVJbnRlZ3JpdHkiLCJmaWxlUGF0aCIsImhhc2giLCJpc0FwcEludGVncml0eU9rIiwiY3VycmVudFBhdGgiLCJleHBlY3RlZEludGVncml0eSIsImV4aXN0cyIsInN0YXQiLCJpc0RpcmVjdG9yeSIsImZvbGRlciIsImZpbGUiLCJjb25maWd1cmVBcHAiLCJvcHRpb25zIiwiaXNTdHJpbmciLCJvblBvc3RQcm9jZXNzIiwiaXNBcnJheSIsInN1cHBvcnRlZEV4dGVuc2lvbnMiLCJpc0VtcHR5IiwibmV3QXBwIiwic2hvdWxkVW56aXBBcHAiLCJwYWNrYWdlSGFzaCIsInJlbW90ZUFwcFByb3BzIiwicHJvdG9jb2wiLCJwYXRobmFtZSIsInBhcnNlIiwiaXNVcmwiLCJnZXQiLCJhY3F1aXJlIiwidGVzdCIsIm1heEFnZU1hdGNoIiwiZXhlYyIsInBhcnNlSW50IiwiY2FjaGVkUGF0aCIsImludGVncml0eSIsImRlbGV0ZSIsImZpbGVOYW1lIiwic2FuaXRpemVOYW1lIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwicmVwbGFjZW1lbnQiLCJjdCIsInNvbWUiLCJtaW1lVHlwZSIsIlJlZ0V4cCIsImVzY2FwZVJlZ0V4cCIsIm1hdGNoIiwicmVzdWx0aW5nTmFtZSIsInN1YnN0cmluZyIsInJlc3VsdGluZ0V4dCIsImZpcnN0IiwidGFyZ2V0UGF0aCIsInRlbXBEaXIiLCJwcmVmaXgiLCJzdWZmaXgiLCJkb3dubG9hZEFwcCIsImVycm9yTWVzc2FnZSIsImlzUGFja2FnZUFGaWxlIiwiaXNGaWxlIiwiaXNGdW5jdGlvbiIsImFyY2hpdmVQYXRoIiwidG1wUm9vdCIsIm9wZW5EaXIiLCJ1bnppcEFwcCIsImlzQWJzb2x1dGUiLCJyZXNvbHZlIiwic3RvcmVBcHBJbkNhY2hlIiwiYXBwUGF0aFRvQ2FjaGUiLCJjYWNoZWRGdWxsUGF0aCIsInNldCIsInJlc3VsdCIsImNsb25lIiwiQm9vbGVhbiIsImhyZWYiLCJuZXQiLCJkb3dubG9hZEZpbGUiLCJlcnIiLCJ6aXBQYXRoIiwiZHN0Um9vdCIsInppcCIsImFzc2VydFZhbGlkWmlwIiwidGltZXIiLCJ0aW1pbmciLCJUaW1lciIsInN0YXJ0IiwidXNlU3lzdGVtVW56aXBFbnYiLCJlbnYiLCJBUFBJVU1fUFJFRkVSX1NZU1RFTV9VTlpJUCIsInVzZVN5c3RlbVVuemlwIiwiZXh0cmFjdGlvbk9wdHMiLCJmaWxlTmFtZXNFbmNvZGluZyIsImV4dHJhY3RBbGxUbyIsImdsb2JQYXR0ZXJuIiwiZXh0IiwicmVwbGFjZSIsImpvaW4iLCJzb3J0ZWRCdW5kbGVJdGVtcyIsInNvcnQiLCJhIiwiYiIsInNwbGl0Iiwic2VwIiwiZXJyb3JBbmRUaHJvdyIsIk1hdGgiLCJyb3VuZCIsImdldER1cmF0aW9uIiwiYXNNaWxsaVNlY29uZHMiLCJtYXRjaGVkQnVuZGxlIiwiZHN0UGF0aCIsIm12IiwibWtkaXJwIiwiaXNQYWNrYWdlT3JCdW5kbGUiLCJkdXBsaWNhdGVLZXlzIiwiaW5wdXQiLCJmaXJzdEtleSIsInNlY29uZEtleSIsIml0ZW0iLCJyZXN1bHRPYmoiLCJrZXkiLCJ2YWx1ZSIsInRvUGFpcnMiLCJyZWN1cnNpdmVseUNhbGxlZFZhbHVlIiwicGFyc2VDYXBzQXJyYXkiLCJjYXAiLCJwYXJzZWRDYXBzIiwiSlNPTiIsImlnbiIsImdlbmVyYXRlRHJpdmVyTG9nUHJlZml4Iiwib2JqIiwic2Vzc2lvbklkIiwiaW5zdGFuY2VOYW1lIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibm9kZSIsImdldE9iamVjdElkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsT0FBTyxHQUFHLE1BQWhCO0FBQ0EsTUFBTUMsUUFBUSxHQUFHLENBQUMsTUFBRCxFQUFTRCxPQUFULENBQWpCO0FBQ0EsTUFBTUUsY0FBYyxHQUFH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YnJILEVBQUFBLFlBRGE7QUFDQ2tHLEVBQUFBLGlCQUREO0FBQ29CQyxFQUFBQSxhQURwQjtBQUNtQ1UsRUFBQUEsY0FEbkM7QUFDbURLLEVBQUFBO0FBRG5ELEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgdXJsIGZyb20gJ3VybCc7XG5pbXBvcnQgbG9nZ2VyIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7IHRlbXBEaXIsIGZzLCB1dGlsLCB6aXAsIG5ldCwgdGltaW5nLCBub2RlIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBMUlUgZnJvbSAnbHJ1LWNhY2hlJztcbmltcG9ydCBBc3luY0xvY2sgZnJvbSAnYXN5bmMtbG9jayc7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuXG5jb25zdCBJUEFfRVhUID0gJy5pcGEnO1xuY29uc3QgWklQX0VYVFMgPSBbJy56aXAnLCBJUEFfRVhUXTtcbmNvbnN0IFpJUF9NSU1FX1RZUEVTID0gW1xuICAnYXBwbGljYXRpb24vemlwJyxcbiAgJ2FwcGxpY2F0aW9uL3gtemlwLWNvbXByZXNzZWQnLFxuICAnbXVsdGlwYXJ0L3gtemlwJyxcbl07XG5jb25zdCBDQUNIRURfQVBQU19NQVhfQUdFID0gMTAwMCAqIDYwICogNjAgKiAyNDsgLy8gbXNcbmNvbnN0IE1BWF9DQUNIRURfQVBQUyA9IDEwMjQ7XG5jb25zdCBBUFBMSUNBVElPTlNfQ0FDSEUgPSBuZXcgTFJVKHtcbiAgbWF4OiBNQVhfQ0FDSEVEX0FQUFMsXG4gIHR0bDogQ0FDSEVEX0FQUFNfTUFYX0FHRSwgLy8gZXhwaXJlIGFmdGVyIDI0IGhvdXJzXG4gIHVwZGF0ZUFnZU9uR2V0OiB0cnVlLFxuICBkaXNwb3NlOiAoYXBwLCB7ZnVsbFBhdGh9KSA9PiB7XG4gICAgbG9nZ2VyLmluZm8oYFRoZSBhcHBsaWNhdGlvbiAnJHthcHB9JyBjYWNoZWQgYXQgJyR7ZnVsbFBhdGh9JyBoYXMgYCArXG4gICAgICBgZXhwaXJlZCBhZnRlciAke0NBQ0hFRF9BUFBTX01BWF9BR0V9bXNgKTtcbiAgICBpZiAoZnVsbFBhdGgpIHtcbiAgICAgIGZzLnJpbXJhZihmdWxsUGF0aCk7XG4gICAgfVxuICB9LFxuICBub0Rpc3Bvc2VPblNldDogdHJ1ZSxcbn0pO1xuY29uc3QgQVBQTElDQVRJT05TX0NBQ0hFX0dVQVJEID0gbmV3IEFzeW5jTG9jaygpO1xuY29uc3QgU0FOSVRJWkVfUkVQTEFDRU1FTlQgPSAnLSc7XG5jb25zdCBERUZBVUxUX0JBU0VOQU1FID0gJ2FwcGl1bS1hcHAnO1xuY29uc3QgQVBQX0RPV05MT0FEX1RJTUVPVVRfTVMgPSAxMjAgKiAxMDAwO1xuXG5wcm9jZXNzLm9uKCdleGl0JywgKCkgPT4ge1xuICBpZiAoQVBQTElDQVRJT05TX0NBQ0hFLnNpemUgPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBhcHBQYXRocyA9IFsuLi5BUFBMSUNBVElPTlNfQ0FDSEUudmFsdWVzKCldXG4gICAgLm1hcCgoe2Z1bGxQYXRofSkgPT4gZnVsbFBhdGgpO1xuICBsb2dnZXIuZGVidWcoYFBlcmZvcm1pbmcgY2xlYW51cCBvZiAke2FwcFBhdGhzLmxlbmd0aH0gY2FjaGVkIGAgK1xuICAgIHV0aWwucGx1cmFsaXplKCdhcHBsaWNhdGlvbicsIGFwcFBhdGhzLmxlbmd0aCkpO1xuICBmb3IgKGNvbnN0IGFwcFBhdGggb2YgYXBwUGF0aHMpIHtcbiAgICB0cnkge1xuICAgICAgLy8gQXN5bmNocm9ub3VzIGNhbGxzIGFyZSBub3Qgc3VwcG9ydGVkIGluIG9uRXhpdCBoYW5kbGVyXG4gICAgICBmcy5yaW1yYWZTeW5jKGFwcFBhdGgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGxvZ2dlci53YXJuKGUubWVzc2FnZSk7XG4gICAgfVxuICB9XG59KTtcblxuXG5hc3luYyBmdW5jdGlvbiByZXRyaWV2ZUhlYWRlcnMgKGxpbmspIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gKGF3YWl0IGF4aW9zKHtcbiAgICAgIHVybDogbGluayxcbiAgICAgIG1ldGhvZDogJ0hFQUQnLFxuICAgICAgdGltZW91dDogNTAwMCxcbiAgICB9KSkuaGVhZGVycztcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxvZ2dlci5pbmZvKGBDYW5ub3Qgc2VuZCBIRUFEIHJlcXVlc3QgdG8gJyR7bGlua30nLiBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCk7XG4gIH1cbiAgcmV0dXJuIHt9O1xufVxuXG5mdW5jdGlvbiBnZXRDYWNoZWRBcHBsaWNhdGlvblBhdGggKGxpbmssIGN1cnJlbnRBcHBQcm9wcyA9IHt9LCBjYWNoZWRBcHBJbmZvID0ge30pIHtcbiAgY29uc3QgcmVmcmVzaCA9ICgpID0+IHtcbiAgICBsb2dnZXIuZGVidWcoYEEgZnJlc2ggY29weSBvZiB0aGUgYXBwbGljYXRpb24gaXMgZ29pbmcgdG8gYmUgZG93bmxvYWRlZCBmcm9tICR7bGlua31gKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcblxuICBpZiAoIV8uaXNQbGFpbk9iamVjdChjYWNoZWRBcHBJbmZvKSB8fCAhXy5pc1BsYWluT2JqZWN0KGN1cnJlbnRBcHBQcm9wcykpIHtcbiAgICAvLyBpZiBhbiBpbnZhbGlkIGFyZyBpcyBwYXNzZWQgdGhlbiBhc3N1bWUgY2FjaGUgbWlzc1xuICAgIHJldHVybiByZWZyZXNoKCk7XG4gIH1cblxuICBjb25zdCB7XG4gICAgbGFzdE1vZGlmaWVkOiBjdXJyZW50TW9kaWZpZWQsXG4gICAgaW1tdXRhYmxlOiBjdXJyZW50SW1tdXRhYmxlLFxuICAgIC8vIG1heEFnZSBpcyBpbiBzZWNvbmRzXG4gICAgbWF4QWdlOiBjdXJyZW50TWF4QWdlLFxuICB9ID0gY3VycmVudEFwcFByb3BzO1xuICBjb25zdCB7XG4gICAgLy8gRGF0ZSBpbnN0YW5jZVxuICAgIGxhc3RNb2RpZmllZCxcbiAgICAvLyBib29sZWFuXG4gICAgaW1tdXRhYmxlLFxuICAgIC8vIFVuaXggdGltZSBpbiBtaWxsaXNlY29uZHNcbiAgICB0aW1lc3RhbXAsXG4gICAgZnVsbFBhdGgsXG4gIH0gPSBjYWNoZWRBcHBJbmZvO1xuICBpZiAobGFzdE1vZGlmaWVkICYmIGN1cnJlbnRNb2RpZmllZCkge1xuICAgIGlmIChjdXJyZW50TW9kaWZpZWQuZ2V0VGltZSgpIDw9IGxhc3RNb2RpZmllZC5nZXRUaW1lKCkpIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhgVGhlIGFwcGxpY2F0aW9uIGF0ICR7bGlua30gaGFzIG5vdCBiZWVuIG1vZGlmaWVkIHNpbmNlICR7bGFzdE1vZGlmaWVkfWApO1xuICAgICAgcmV0dXJuIGZ1bGxQYXRoO1xuICAgIH1cbiAgICBsb2dnZXIuZGVidWcoYFRoZSBhcHBsaWNhdGlvbiBhdCAke2xpbmt9IGhhcyBiZWVuIG1vZGlmaWVkIHNpbmNlICR7bGFzdE1vZGlmaWVkfWApO1xuICAgIHJldHVybiByZWZyZXNoKCk7XG4gIH1cbiAgaWYgKGltbXV0YWJsZSAmJiBjdXJyZW50SW1tdXRhYmxlKSB7XG4gICAgbG9nZ2VyLmRlYnVnKGBUaGUgYXBwbGljYXRpb24gYXQgJHtsaW5rfSBpcyBpbW11dGFibGVgKTtcbiAgICByZXR1cm4gZnVsbFBhdGg7XG4gIH1cbiAgaWYgKGN1cnJlbnRNYXhBZ2UgJiYgdGltZXN0YW1wKSB7XG4gICAgY29uc3QgbXNMZWZ0ID0gdGltZXN0YW1wICsgY3VycmVudE1heEFnZSAqIDEwMDAgLSBEYXRlLm5vdygpO1xuICAgIGlmIChtc0xlZnQgPiAwKSB7XG4gICAgICBsb2dnZXIuZGVidWcoYFRoZSBjYWNoZWQgYXBwbGljYXRpb24gJyR7cGF0aC5iYXNlbmFtZShmdWxsUGF0aCl9JyB3aWxsIGV4cGlyZSBpbiAke21zTGVmdCAvIDEwMDB9c2ApO1xuICAgICAgcmV0dXJuIGZ1bGxQYXRoO1xuICAgIH1cbiAgICBsb2dnZXIuZGVidWcoYFRoZSBjYWNoZWQgYXBwbGljYXRpb24gJyR7cGF0aC5iYXNlbmFtZShmdWxsUGF0aCl9JyBoYXMgZXhwaXJlZGApO1xuICB9XG4gIHJldHVybiByZWZyZXNoKCk7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeUFwcEV4dGVuc2lvbiAoYXBwLCBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zKSB7XG4gIGlmIChzdXBwb3J0ZWRBcHBFeHRlbnNpb25zLm1hcChfLnRvTG93ZXIpLmluY2x1ZGVzKF8udG9Mb3dlcihwYXRoLmV4dG5hbWUoYXBwKSkpKSB7XG4gICAgcmV0dXJuIGFwcDtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYE5ldyBhcHAgcGF0aCAnJHthcHB9JyBkaWQgbm90IGhhdmUgYCArXG4gICAgYCR7dXRpbC5wbHVyYWxpemUoJ2V4dGVuc2lvbicsIHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMubGVuZ3RoLCBmYWxzZSl9OiBgICtcbiAgICBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY2FsY3VsYXRlRm9sZGVySW50ZWdyaXR5IChmb2xkZXJQYXRoKSB7XG4gIHJldHVybiAoYXdhaXQgZnMuZ2xvYignKiovKicsIHtjd2Q6IGZvbGRlclBhdGgsIHN0cmljdDogZmFsc2UsIG5vc29ydDogdHJ1ZX0pKS5sZW5ndGg7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNhbGN1bGF0ZUZpbGVJbnRlZ3JpdHkgKGZpbGVQYXRoKSB7XG4gIHJldHVybiBhd2FpdCBmcy5oYXNoKGZpbGVQYXRoKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaXNBcHBJbnRlZ3JpdHlPayAoY3VycmVudFBhdGgsIGV4cGVjdGVkSW50ZWdyaXR5ID0ge30pIHtcbiAgaWYgKCFhd2FpdCBmcy5leGlzdHMoY3VycmVudFBhdGgpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gRm9sZGVyIGludGVncml0eSBjaGVjayBpcyBzaW1wbGU6XG4gIC8vIFZlcmlmeSB0aGUgcHJldmlvdXMgYW1vdW50IG9mIGZpbGVzIGlzIG5vdCBncmVhdGVyIHRoYW4gdGhlIGN1cnJlbnQgb25lLlxuICAvLyBXZSBkb24ndCB3YW50IHRvIHVzZSBlcXVhbGl0eSBjb21wYXJpc29uIGJlY2F1c2Ugb2YgYW4gYXNzdW1wdGlvbiB0aGF0IHRoZSBPUyBtaWdodFxuICAvLyBjcmVhdGUgc29tZSB1bndhbnRlZCBzZXJ2aWNlIGZpbGVzL2NhY2hlZCBpbnNpZGUgb2YgdGhhdCBmb2xkZXIgb3IgaXRzIHN1YmZvbGRlcnMuXG4gIC8vIE9mYywgdmFsaWRhdGluZyB0aGUgaGFzaCBzdW0gb2YgZWFjaCBmaWxlIChvciBhdCBsZWFzdCBvZiBmaWxlIHBhdGgpIHdvdWxkIGJlIG11Y2hcbiAgLy8gbW9yZSBwcmVjaXNlLCBidXQgd2UgZG9uJ3QgbmVlZCB0byBiZSB2ZXJ5IHByZWNpc2UgaGVyZSBhbmQgYWxzbyBkb24ndCB3YW50IHRvXG4gIC8vIG92ZXJ1c2UgUkFNIGFuZCBoYXZlIGEgcGVyZm9ybWFuY2UgZHJvcC5cbiAgcmV0dXJuIChhd2FpdCBmcy5zdGF0KGN1cnJlbnRQYXRoKSkuaXNEaXJlY3RvcnkoKVxuICAgID8gYXdhaXQgY2FsY3VsYXRlRm9sZGVySW50ZWdyaXR5KGN1cnJlbnRQYXRoKSA+PSBleHBlY3RlZEludGVncml0eT8uZm9sZGVyXG4gICAgOiBhd2FpdCBjYWxjdWxhdGVGaWxlSW50ZWdyaXR5KGN1cnJlbnRQYXRoKSA9PT0gZXhwZWN0ZWRJbnRlZ3JpdHk/LmZpbGU7XG59XG5cbi8qKlxuICogQHR5cGVkZWYgUG9zdFByb2Nlc3NPcHRpb25zXG4gKiBAcHJvcGVydHkgez9PYmplY3R9IGNhY2hlZEFwcEluZm8gVGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwcmV2aW91c2x5IGNhY2hlZCBhcHAgaW5zdGFuY2UgKGlmIGV4aXN0cyk6XG4gKiAgICAtIHBhY2thZ2VIYXNoOiBTSEExIGhhc2ggb2YgdGhlIHBhY2thZ2UgaWYgaXQgaXMgYSBmaWxlIGFuZCBub3QgYSBmb2xkZXJcbiAqICAgIC0gbGFzdE1vZGlmaWVkOiBPcHRpb25hbCBEYXRlIGluc3RhbmNlLCB0aGUgdmFsdWUgb2YgZmlsZSdzIGBMYXN0LU1vZGlmaWVkYCBoZWFkZXJcbiAqICAgIC0gaW1tdXRhYmxlOiBPcHRpb25hbCBib29sZWFuIHZhbHVlLiBDb250YWlucyB0cnVlIGlmIHRoZSBmaWxlIGhhcyBhbiBgaW1tdXRhYmxlYCBtYXJrXG4gKiAgICAgICAgICAgICAgICAgaW4gYENhY2hlLWNvbnRyb2xgIGhlYWRlclxuICogICAgLSBtYXhBZ2U6IE9wdGlvbmFsIGludGVnZXIgcmVwcmVzZW50YXRpb24gb2YgYG1heEFnZWAgcGFyYW1ldGVyIGluIGBDYWNoZS1jb250cm9sYCBoZWFkZXJcbiAqICAgIC0gdGltZXN0YW1wOiBUaGUgdGltZXN0YW1wIHRoaXMgaXRlbSBoYXMgYmVlbiBhZGRlZCB0byB0aGUgY2FjaGUgKG1lYXN1cmVkIGluIFVuaXggZXBvY2hcbiAqICAgICAgICAgICAgICAgICBtaWxsaXNlY29uZHMpXG4gKiAgICAtIGludGVncml0eTogQW4gb2JqZWN0IGNvbnRhaW5pbmcgZWl0aGVyIGBmaWxlYCBwcm9wZXJ0eSB3aXRoIFNIQTEgaGFzaCBvZiB0aGUgZmlsZVxuICogICAgICAgICAgICAgICAgIG9yIGBmb2xkZXJgIHByb3BlcnR5IHdpdGggdG90YWwgYW1vdW50IG9mIGNhY2hlZCBmaWxlcyBhbmQgc3ViZm9sZGVyc1xuICogICAgLSBmdWxsUGF0aDogdGhlIGZ1bGwgcGF0aCB0byB0aGUgY2FjaGVkIGFwcFxuICogQHByb3BlcnR5IHtib29sZWFufSBpc1VybCBXaGV0aGVyIHRoZSBhcHAgaGFzIGJlZW4gZG93bmxvYWRlZCBmcm9tIGEgcmVtb3RlIFVSTFxuICogQHByb3BlcnR5IHs/T2JqZWN0fSBoZWFkZXJzIE9wdGlvbmFsIGhlYWRlcnMgb2JqZWN0LiBPbmx5IHByZXNlbnQgaWYgYGlzVXJsYCBpcyB0cnVlIGFuZCBpZiB0aGUgc2VydmVyXG4gKiByZXNwb25kcyB0byBIRUFEIHJlcXVlc3RzLiBBbGwgaGVhZGVyIG5hbWVzIGFyZSBub3JtYWxpemVkIHRvIGxvd2VyY2FzZS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhcHBQYXRoIEEgc3RyaW5nIGNvbnRhaW5pbmcgZnVsbCBwYXRoIHRvIHRoZSBwcmVwcm9jZXNzZWQgYXBwbGljYXRpb24gcGFja2FnZSAoZWl0aGVyXG4gKiBkb3dubG9hZGVkIG9yIGEgbG9jYWwgb25lKVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYgUG9zdFByb2Nlc3NSZXN1bHRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhcHBQYXRoIFRoZSBmdWxsIHBhc3QgdG8gdGhlIHBvc3QtcHJvY2Vzc2VkIGFwcGxpY2F0aW9uIHBhY2thZ2Ugb24gdGhlXG4gKiBsb2NhbCBmaWxlIHN5c3RlbSAobWlnaHQgYmUgYSBmaWxlIG9yIGEgZm9sZGVyIHBhdGgpXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiBDb25maWd1cmVBcHBPcHRpb25zXG4gKiBAcHJvcGVydHkgeyhvYmo6IFBvc3RQcm9jZXNzT3B0aW9ucykgPT4gKFByb21pc2U8UG9zdFByb2Nlc3NSZXN1bHR8dW5kZWZpbmVkPnxQb3N0UHJvY2Vzc1Jlc3VsdHx1bmRlZmluZWQpfSBvblBvc3RQcm9jZXNzXG4gKiBPcHRpb25hbCBmdW5jdGlvbiwgd2hpY2ggc2hvdWxkIGJlIGFwcGxpZWRcbiAqIHRvIHRoZSBhcHBsaWNhdGlvbiBhZnRlciBpdCBpcyBkb3dubG9hZGVkL3ByZXByb2Nlc3NlZC4gVGhpcyBmdW5jdGlvbiBtYXkgYmUgYXN5bmNcbiAqIGFuZCBpcyBleHBlY3RlZCB0byBhY2NlcHQgc2luZ2xlIG9iamVjdCBwYXJhbWV0ZXIuXG4gKiBUaGUgZnVuY3Rpb24gaXMgZXhwZWN0ZWQgdG8gZWl0aGVyIHJldHVybiBhIGZhbHN5IHZhbHVlLCB3aGljaCBtZWFucyB0aGUgYXBwIG11c3Qgbm90IGJlXG4gKiBjYWNoZWQgYW5kIGEgZnJlc2ggY29weSBvZiBpdCBpcyBkb3dubG9hZGVkIGVhY2ggdGltZS4gSWYgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGFuIG9iamVjdFxuICogY29udGFpbmluZyBgYXBwUGF0aGAgcHJvcGVydHkgdGhlbiB0aGUgaW50ZWdyaXR5IG9mIGl0IHdpbGwgYmUgdmVyaWZpZWQgYW5kIHN0b3JlZCBpbnRvXG4gKiB0aGUgY2FjaGUuXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdfSBzdXBwb3J0ZWRFeHRlbnNpb25zIExpc3Qgb2Ygc3VwcG9ydGVkIGFwcGxpY2F0aW9uIGV4dGVuc2lvbnMgKFxuICogaW5jbHVkaW5nIHN0YXJ0aW5nIGRvdHMpLiBUaGlzIHByb3BlcnR5IGlzIG1hbmRhdG9yeSBhbmQgbXVzdCBub3QgYmUgZW1wdHkuXG4gKi9cblxuLyoqXG4gKiBQcmVwYXJlcyBhbiBhcHAgdG8gYmUgdXNlZCBpbiBhbiBhdXRvbWF0ZWQgdGVzdC4gVGhlIGFwcCBnZXRzIGNhY2hlZCBhdXRvbWF0aWNhbGx5XG4gKiBpZiBpdCBpcyBhbiBhcmNoaXZlIG9yIGlmIGl0IGlzIGRvd25sb2FkZWQgZnJvbSBhbiBVUkwuXG4gKiBJZiB0aGUgZG93bmxvYWRlZCBhcHAgaGFzIGAuemlwYCBleHRlbnNpb24sIHRoaXMgbWV0aG9kIHdpbGwgdW56aXAgaXQuXG4gKiBUaGUgdW56aXAgZG9lcyBub3Qgd29yayB3aGVuIGBvblBvc3RQcm9jZXNzYCBpcyBwcm92aWRlZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXBwIEVpdGhlciBhIGZ1bGwgcGF0aCB0byB0aGUgYXBwIG9yIGEgcmVtb3RlIFVSTFxuICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW118Q29uZmlndXJlQXBwT3B0aW9uc30gb3B0aW9uc1xuICogQHJldHVybnMgVGhlIGZ1bGwgcGF0aCB0byB0aGUgcmVzdWx0aW5nIGFwcGxpY2F0aW9uIGJ1bmRsZVxuICovXG5hc3luYyBmdW5jdGlvbiBjb25maWd1cmVBcHAgKGFwcCwgb3B0aW9ucyA9IHt9KSB7XG4gIGlmICghXy5pc1N0cmluZyhhcHApKSB7XG4gICAgLy8gaW1tZWRpYXRlbHkgc2hvcnRjaXJjdWl0IGlmIG5vdCBnaXZlbiBhbiBhcHBcbiAgICByZXR1cm47XG4gIH1cblxuICBsZXQgc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucztcbiAgY29uc3Qge1xuICAgIG9uUG9zdFByb2Nlc3MsXG4gIH0gPSBfLmlzUGxhaW5PYmplY3Qob3B0aW9ucykgPyBvcHRpb25zIDoge307XG4gIGlmIChfLmlzU3RyaW5nKG9wdGlvbnMpKSB7XG4gICAgc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucyA9IFtvcHRpb25zXTtcbiAgfSBlbHNlIGlmIChfLmlzQXJyYXkob3B0aW9ucykpIHtcbiAgICBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zID0gb3B0aW9ucztcbiAgfSBlbHNlIGlmIChfLmlzUGxhaW5PYmplY3Qob3B0aW9ucykpIHtcbiAgICBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zID0gb3B0aW9ucy5zdXBwb3J0ZWRFeHRlbnNpb25zO1xuICB9XG4gIGlmIChfLmlzRW1wdHkoc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE9uZSBvciBtb3JlIHN1cHBvcnRlZCBhcHAgZXh0ZW5zaW9ucyBtdXN0IGJlIHByb3ZpZGVkYCk7XG4gIH1cblxuICBsZXQgbmV3QXBwID0gYXBwO1xuICBsZXQgc2hvdWxkVW56aXBBcHAgPSBmYWxzZTtcbiAgbGV0IHBhY2thZ2VIYXNoID0gbnVsbDtcbiAgbGV0IGhlYWRlcnMgPSBudWxsO1xuICBjb25zdCByZW1vdGVBcHBQcm9wcyA9IHtcbiAgICBsYXN0TW9kaWZpZWQ6IG51bGwsXG4gICAgaW1tdXRhYmxlOiBmYWxzZSxcbiAgICBtYXhBZ2U6IG51bGwsXG4gIH07XG4gIGNvbnN0IHtwcm90b2NvbCwgcGF0aG5hbWV9ID0gdXJsLnBhcnNlKG5ld0FwcCk7XG4gIGNvbnN0IGlzVXJsID0gWydodHRwOicsICdodHRwczonXS5pbmNsdWRlcyhwcm90b2NvbCk7XG5cbiAgY29uc3QgY2FjaGVkQXBwSW5mbyA9IEFQUExJQ0FUSU9OU19DQUNIRS5nZXQoYXBwKTtcblxuICByZXR1cm4gYXdhaXQgQVBQTElDQVRJT05TX0NBQ0hFX0dVQVJELmFjcXVpcmUoYXBwLCBhc3luYyAoKSA9PiB7XG4gICAgaWYgKGlzVXJsKSB7XG4gICAgICAvLyBVc2UgdGhlIGFwcCBmcm9tIHJlbW90ZSBVUkxcbiAgICAgIGxvZ2dlci5pbmZvKGBVc2luZyBkb3dubG9hZGFibGUgYXBwICcke25ld0FwcH0nYCk7XG4gICAgICBoZWFkZXJzID0gYXdhaXQgcmV0cmlldmVIZWFkZXJzKG5ld0FwcCk7XG4gICAgICBpZiAoIV8uaXNFbXB0eShoZWFkZXJzKSkge1xuICAgICAgICBpZiAoaGVhZGVyc1snbGFzdC1tb2RpZmllZCddKSB7XG4gICAgICAgICAgcmVtb3RlQXBwUHJvcHMubGFzdE1vZGlmaWVkID0gbmV3IERhdGUoaGVhZGVyc1snbGFzdC1tb2RpZmllZCddKTtcbiAgICAgICAgfVxuICAgICAgICBsb2dnZXIuZGVidWcoYExhc3QtTW9kaWZpZWQ6ICR7aGVhZGVyc1snbGFzdC1tb2RpZmllZCddfWApO1xuICAgICAgICBpZiAoaGVhZGVyc1snY2FjaGUtY29udHJvbCddKSB7XG4gICAgICAgICAgcmVtb3RlQXBwUHJvcHMuaW1tdXRhYmxlID0gL1xcYmltbXV0YWJsZVxcYi9pLnRlc3QoaGVhZGVyc1snY2FjaGUtY29udHJvbCddKTtcbiAgICAgICAgICBjb25zdCBtYXhBZ2VNYXRjaCA9IC9cXGJtYXgtYWdlPShcXGQrKVxcYi9pLmV4ZWMoaGVhZGVyc1snY2FjaGUtY29udHJvbCddKTtcbiAgICAgICAgICBpZiAobWF4QWdlTWF0Y2gpIHtcbiAgICAgICAgICAgIHJlbW90ZUFwcFByb3BzLm1heEFnZSA9IHBhcnNlSW50KG1heEFnZU1hdGNoWzFdLCAxMCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhgQ2FjaGUtQ29udHJvbDogJHtoZWFkZXJzWydjYWNoZS1jb250cm9sJ119YCk7XG4gICAgICB9XG4gICAgICBjb25zdCBjYWNoZWRQYXRoID0gZ2V0Q2FjaGVkQXBwbGljYXRpb25QYXRoKGFwcCwgcmVtb3RlQXBwUHJvcHMsIGNhY2hlZEFwcEluZm8pO1xuICAgICAgaWYgKGNhY2hlZFBhdGgpIHtcbiAgICAgICAgaWYgKGF3YWl0IGlzQXBwSW50ZWdyaXR5T2soY2FjaGVkUGF0aCwgY2FjaGVkQXBwSW5mbz8uaW50ZWdyaXR5KSkge1xuICAgICAgICAgIGxvZ2dlci5pbmZvKGBSZXVzaW5nIHByZXZpb3VzbHkgZG93bmxvYWRlZCBhcHBsaWNhdGlvbiBhdCAnJHtjYWNoZWRQYXRofSdgKTtcbiAgICAgICAgICByZXR1cm4gdmVyaWZ5QXBwRXh0ZW5zaW9uKGNhY2hlZFBhdGgsIHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMpO1xuICAgICAgICB9XG4gICAgICAgIGxvZ2dlci5pbmZvKGBUaGUgYXBwbGljYXRpb24gYXQgJyR7Y2FjaGVkUGF0aH0nIGRvZXMgbm90IGV4aXN0IGFueW1vcmUgYCArXG4gICAgICAgICAgYG9yIGl0cyBpbnRlZ3JpdHkgaGFzIGJlZW4gZGFtYWdlZC4gRGVsZXRpbmcgaXQgZnJvbSB0aGUgaW50ZXJuYWwgY2FjaGVgKTtcbiAgICAgICAgQVBQTElDQVRJT05TX0NBQ0hFLmRlbGV0ZShhcHApO1xuICAgICAgfVxuXG4gICAgICBsZXQgZmlsZU5hbWUgPSBudWxsO1xuICAgICAgY29uc3QgYmFzZW5hbWUgPSBmcy5zYW5pdGl6ZU5hbWUocGF0aC5iYXNlbmFtZShkZWNvZGVVUklDb21wb25lbnQocGF0aG5hbWUpKSwge1xuICAgICAgICByZXBsYWNlbWVudDogU0FOSVRJWkVfUkVQTEFDRU1FTlRcbiAgICAgIH0pO1xuICAgICAgY29uc3QgZXh0bmFtZSA9IHBhdGguZXh0bmFtZShiYXNlbmFtZSk7XG4gICAgICAvLyB0byBkZXRlcm1pbmUgaWYgd2UgbmVlZCB0byB1bnppcCB0aGUgYXBwLCB3ZSBoYXZlIGEgbnVtYmVyIG9mIHBsYWNlc1xuICAgICAgLy8gdG8gbG9vazogY29udGVudCB0eXBlLCBjb250ZW50IGRpc3Bvc2l0aW9uLCBvciB0aGUgZmlsZSBleHRlbnNpb25cbiAgICAgIGlmIChaSVBfRVhUUy5pbmNsdWRlcyhleHRuYW1lKSkge1xuICAgICAgICBmaWxlTmFtZSA9IGJhc2VuYW1lO1xuICAgICAgICBzaG91bGRVbnppcEFwcCA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoaGVhZGVyc1snY29udGVudC10eXBlJ10pIHtcbiAgICAgICAgY29uc3QgY3QgPSBoZWFkZXJzWydjb250ZW50LXR5cGUnXTtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKGBDb250ZW50LVR5cGU6ICR7Y3R9YCk7XG4gICAgICAgIC8vIHRoZSBmaWxldHlwZSBtYXkgbm90IGJlIG9idmlvdXMgZm9yIGNlcnRhaW4gdXJscywgc28gY2hlY2sgdGhlIG1pbWUgdHlwZSB0b29cbiAgICAgICAgaWYgKFpJUF9NSU1FX1RZUEVTLnNvbWUoKG1pbWVUeXBlKSA9PiBuZXcgUmVnRXhwKGBcXFxcYiR7Xy5lc2NhcGVSZWdFeHAobWltZVR5cGUpfVxcXFxiYCkudGVzdChjdCkpKSB7XG4gICAgICAgICAgaWYgKCFmaWxlTmFtZSkge1xuICAgICAgICAgICAgZmlsZU5hbWUgPSBgJHtERUZBVUxUX0JBU0VOQU1FfS56aXBgO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzaG91bGRVbnppcEFwcCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChoZWFkZXJzWydjb250ZW50LWRpc3Bvc2l0aW9uJ10gJiYgL15hdHRhY2htZW50L2kudGVzdChoZWFkZXJzWydjb250ZW50LWRpc3Bvc2l0aW9uJ10pKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhgQ29udGVudC1EaXNwb3NpdGlvbjogJHtoZWFkZXJzWydjb250ZW50LWRpc3Bvc2l0aW9uJ119YCk7XG4gICAgICAgIGNvbnN0IG1hdGNoID0gL2ZpbGVuYW1lPVwiKFteXCJdKykvaS5leGVjKGhlYWRlcnNbJ2NvbnRlbnQtZGlzcG9zaXRpb24nXSk7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgIGZpbGVOYW1lID0gZnMuc2FuaXRpemVOYW1lKG1hdGNoWzFdLCB7XG4gICAgICAgICAgICByZXBsYWNlbWVudDogU0FOSVRJWkVfUkVQTEFDRU1FTlRcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBzaG91bGRVbnppcEFwcCA9IHNob3VsZFVuemlwQXBwIHx8IFpJUF9FWFRTLmluY2x1ZGVzKHBhdGguZXh0bmFtZShmaWxlTmFtZSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIWZpbGVOYW1lKSB7XG4gICAgICAgIC8vIGFzc2lnbiB0aGUgZGVmYXVsdCBmaWxlIG5hbWUgYW5kIHRoZSBleHRlbnNpb24gaWYgbm9uZSBoYXMgYmVlbiBkZXRlY3RlZFxuICAgICAgICBjb25zdCByZXN1bHRpbmdOYW1lID0gYmFzZW5hbWVcbiAgICAgICAgICA/IGJhc2VuYW1lLnN1YnN0cmluZygwLCBiYXNlbmFtZS5sZW5ndGggLSBleHRuYW1lLmxlbmd0aClcbiAgICAgICAgICA6IERFRkFVTFRfQkFTRU5BTUU7XG4gICAgICAgIGxldCByZXN1bHRpbmdFeHQgPSBleHRuYW1lO1xuICAgICAgICBpZiAoIXN1cHBvcnRlZEFwcEV4dGVuc2lvbnMuaW5jbHVkZXMocmVzdWx0aW5nRXh0KSkge1xuICAgICAgICAgIGxvZ2dlci5pbmZvKGBUaGUgY3VycmVudCBmaWxlIGV4dGVuc2lvbiAnJHtyZXN1bHRpbmdFeHR9JyBpcyBub3Qgc3VwcG9ydGVkLiBgICtcbiAgICAgICAgICAgIGBEZWZhdWx0aW5nIHRvICcke18uZmlyc3Qoc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucyl9J2ApO1xuICAgICAgICAgIHJlc3VsdGluZ0V4dCA9IF8uZmlyc3Qoc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgZmlsZU5hbWUgPSBgJHtyZXN1bHRpbmdOYW1lfSR7cmVzdWx0aW5nRXh0fWA7XG4gICAgICB9XG4gICAgICBjb25zdCB0YXJnZXRQYXRoID0gYXdhaXQgdGVtcERpci5wYXRoKHtcbiAgICAgICAgcHJlZml4OiBmaWxlTmFtZSxcbiAgICAgICAgc3VmZml4OiAnJyxcbiAgICAgIH0pO1xuICAgICAgbmV3QXBwID0gYXdhaXQgZG93bmxvYWRBcHAobmV3QXBwLCB0YXJnZXRQYXRoKTtcbiAgICB9IGVsc2UgaWYgKGF3YWl0IGZzLmV4aXN0cyhuZXdBcHApKSB7XG4gICAgICAvLyBVc2UgdGhlIGxvY2FsIGFwcFxuICAgICAgbG9nZ2VyLmluZm8oYFVzaW5nIGxvY2FsIGFwcCAnJHtuZXdBcHB9J2ApO1xuICAgICAgc2hvdWxkVW56aXBBcHAgPSBaSVBfRVhUUy5pbmNsdWRlcyhwYXRoLmV4dG5hbWUobmV3QXBwKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBlcnJvck1lc3NhZ2UgPSBgVGhlIGFwcGxpY2F0aW9uIGF0ICcke25ld0FwcH0nIGRvZXMgbm90IGV4aXN0IG9yIGlzIG5vdCBhY2Nlc3NpYmxlYDtcbiAgICAgIC8vIHByb3RvY29sIHZhbHVlIGZvciAnQzpcXFxcdGVtcCcgaXMgJ2M6Jywgc28gd2UgY2hlY2sgdGhlIGxlbmd0aCBhcyB3ZWxsXG4gICAgICBpZiAoXy5pc1N0cmluZyhwcm90b2NvbCkgJiYgcHJvdG9jb2wubGVuZ3RoID4gMikge1xuICAgICAgICBlcnJvck1lc3NhZ2UgPSBgVGhlIHByb3RvY29sICcke3Byb3RvY29sfScgdXNlZCBpbiAnJHtuZXdBcHB9JyBpcyBub3Qgc3VwcG9ydGVkLiBgICtcbiAgICAgICAgICBgT25seSBodHRwOiBhbmQgaHR0cHM6IHByb3RvY29scyBhcmUgc3VwcG9ydGVkYDtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvck1lc3NhZ2UpO1xuICAgIH1cblxuICAgIGNvbnN0IGlzUGFja2FnZUFGaWxlID0gKGF3YWl0IGZzLnN0YXQobmV3QXBwKSkuaXNGaWxlKCk7XG4gICAgaWYgKGlzUGFja2FnZUFGaWxlKSB7XG4gICAgICBwYWNrYWdlSGFzaCA9IGF3YWl0IGNhbGN1bGF0ZUZpbGVJbnRlZ3JpdHkobmV3QXBwKTtcbiAgICB9XG5cbiAgICBpZiAoaXNQYWNrYWdlQUZpbGUgJiYgc2hvdWxkVW56aXBBcHAgJiYgIV8uaXNGdW5jdGlvbihvblBvc3RQcm9jZXNzKSkge1xuICAgICAgY29uc3QgYXJjaGl2ZVBhdGggPSBuZXdBcHA7XG4gICAgICBpZiAocGFja2FnZUhhc2ggPT09IGNhY2hlZEFwcEluZm8/LnBhY2thZ2VIYXNoKSB7XG4gICAgICAgIGNvbnN0IHtmdWxsUGF0aH0gPSBjYWNoZWRBcHBJbmZvO1xuICAgICAgICBpZiAoYXdhaXQgaXNBcHBJbnRlZ3JpdHlPayhmdWxsUGF0aCwgY2FjaGVkQXBwSW5mbz8uaW50ZWdyaXR5KSkge1xuICAgICAgICAgIGlmIChhcmNoaXZlUGF0aCAhPT0gYXBwKSB7XG4gICAgICAgICAgICBhd2FpdCBmcy5yaW1yYWYoYXJjaGl2ZVBhdGgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsb2dnZXIuaW5mbyhgV2lsbCByZXVzZSBwcmV2aW91c2x5IGNhY2hlZCBhcHBsaWNhdGlvbiBhdCAnJHtmdWxsUGF0aH0nYCk7XG4gICAgICAgICAgcmV0dXJuIHZlcmlmeUFwcEV4dGVuc2lvbihmdWxsUGF0aCwgc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgbG9nZ2VyLmluZm8oYFRoZSBhcHBsaWNhdGlvbiBhdCAnJHtmdWxsUGF0aH0nIGRvZXMgbm90IGV4aXN0IGFueW1vcmUgYCArXG4gICAgICAgICAgYG9yIGl0cyBpbnRlZ3JpdHkgaGFzIGJlZW4gZGFtYWdlZC4gRGVsZXRpbmcgaXQgZnJvbSB0aGUgY2FjaGVgKTtcbiAgICAgICAgQVBQTElDQVRJT05TX0NBQ0hFLmRlbGV0ZShhcHApO1xuICAgICAgfVxuICAgICAgY29uc3QgdG1wUm9vdCA9IGF3YWl0IHRlbXBEaXIub3BlbkRpcigpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgbmV3QXBwID0gYXdhaXQgdW56aXBBcHAoYXJjaGl2ZVBhdGgsIHRtcFJvb3QsIHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaWYgKG5ld0FwcCAhPT0gYXJjaGl2ZVBhdGggJiYgYXJjaGl2ZVBhdGggIT09IGFwcCkge1xuICAgICAgICAgIGF3YWl0IGZzLnJpbXJhZihhcmNoaXZlUGF0aCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGxvZ2dlci5pbmZvKGBVbnppcHBlZCBsb2NhbCBhcHAgdG8gJyR7bmV3QXBwfSdgKTtcbiAgICB9IGVsc2UgaWYgKCFwYXRoLmlzQWJzb2x1dGUobmV3QXBwKSkge1xuICAgICAgbmV3QXBwID0gcGF0aC5yZXNvbHZlKHByb2Nlc3MuY3dkKCksIG5ld0FwcCk7XG4gICAgICBsb2dnZXIud2FybihgVGhlIGN1cnJlbnQgYXBwbGljYXRpb24gcGF0aCAnJHthcHB9JyBpcyBub3QgYWJzb2x1dGUgYCArXG4gICAgICAgIGBhbmQgaGFzIGJlZW4gcmV3cml0dGVuIHRvICcke25ld0FwcH0nLiBDb25zaWRlciB1c2luZyBhYnNvbHV0ZSBwYXRocyByYXRoZXIgdGhhbiByZWxhdGl2ZWApO1xuICAgICAgYXBwID0gbmV3QXBwO1xuICAgIH1cblxuICAgIGNvbnN0IHN0b3JlQXBwSW5DYWNoZSA9IGFzeW5jIChhcHBQYXRoVG9DYWNoZSkgPT4ge1xuICAgICAgY29uc3QgY2FjaGVkRnVsbFBhdGggPSBjYWNoZWRBcHBJbmZvPy5mdWxsUGF0aDtcbiAgICAgIGlmIChjYWNoZWRGdWxsUGF0aCAmJiBjYWNoZWRGdWxsUGF0aCAhPT0gYXBwUGF0aFRvQ2FjaGUpIHtcbiAgICAgICAgYXdhaXQgZnMucmltcmFmKGNhY2hlZEZ1bGxQYXRoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGludGVncml0eSA9IHt9O1xuICAgICAgaWYgKChhd2FpdCBmcy5zdGF0KGFwcFBhdGhUb0NhY2hlKSkuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICBpbnRlZ3JpdHkuZm9sZGVyID0gYXdhaXQgY2FsY3VsYXRlRm9sZGVySW50ZWdyaXR5KGFwcFBhdGhUb0NhY2hlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGludGVncml0eS5maWxlID0gYXdhaXQgY2FsY3VsYXRlRmlsZUludGVncml0eShhcHBQYXRoVG9DYWNoZSk7XG4gICAgICB9XG4gICAgICBBUFBMSUNBVElPTlNfQ0FDSEUuc2V0KGFwcCwge1xuICAgICAgICAuLi5yZW1vdGVBcHBQcm9wcyxcbiAgICAgICAgdGltZXN0YW1wOiBEYXRlLm5vdygpLFxuICAgICAgICBwYWNrYWdlSGFzaCxcbiAgICAgICAgaW50ZWdyaXR5LFxuICAgICAgICBmdWxsUGF0aDogYXBwUGF0aFRvQ2FjaGUsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBhcHBQYXRoVG9DYWNoZTtcbiAgICB9O1xuXG4gICAgaWYgKF8uaXNGdW5jdGlvbihvblBvc3RQcm9jZXNzKSkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgb25Qb3N0UHJvY2Vzcyh7XG4gICAgICAgIGNhY2hlZEFwcEluZm86IF8uY2xvbmUoY2FjaGVkQXBwSW5mbyksXG4gICAgICAgIGlzVXJsLFxuICAgICAgICBoZWFkZXJzOiBfLmNsb25lKGhlYWRlcnMpLFxuICAgICAgICBhcHBQYXRoOiBuZXdBcHAsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiAoIXJlc3VsdD8uYXBwUGF0aCB8fCBhcHAgPT09IHJlc3VsdD8uYXBwUGF0aCB8fCAhYXdhaXQgZnMuZXhpc3RzKHJlc3VsdD8uYXBwUGF0aCkpXG4gICAgICAgID8gbmV3QXBwXG4gICAgICAgIDogYXdhaXQgc3RvcmVBcHBJbkNhY2hlKHJlc3VsdC5hcHBQYXRoKTtcbiAgICB9XG5cbiAgICB2ZXJpZnlBcHBFeHRlbnNpb24obmV3QXBwLCBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zKTtcbiAgICByZXR1cm4gKGFwcCAhPT0gbmV3QXBwICYmIChwYWNrYWdlSGFzaCB8fCBfLnZhbHVlcyhyZW1vdGVBcHBQcm9wcykuc29tZShCb29sZWFuKSkpXG4gICAgICA/IGF3YWl0IHN0b3JlQXBwSW5DYWNoZShuZXdBcHApXG4gICAgICA6IG5ld0FwcDtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGRvd25sb2FkQXBwIChhcHAsIHRhcmdldFBhdGgpIHtcbiAgY29uc3Qge2hyZWZ9ID0gdXJsLnBhcnNlKGFwcCk7XG4gIHRyeSB7XG4gICAgYXdhaXQgbmV0LmRvd25sb2FkRmlsZShocmVmLCB0YXJnZXRQYXRoLCB7XG4gICAgICB0aW1lb3V0OiBBUFBfRE9XTkxPQURfVElNRU9VVF9NUyxcbiAgICB9KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gZG93bmxvYWQgdGhlIGFwcDogJHtlcnIubWVzc2FnZX1gKTtcbiAgfVxuICByZXR1cm4gdGFyZ2V0UGF0aDtcbn1cblxuLyoqXG4gKiBFeHRyYWN0cyB0aGUgYnVuZGxlIGZyb20gYW4gYXJjaGl2ZSBpbnRvIHRoZSBnaXZlbiBmb2xkZXJcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gemlwUGF0aCBGdWxsIHBhdGggdG8gdGhlIGFyY2hpdmUgY29udGFpbmluZyB0aGUgYnVuZGxlXG4gKiBAcGFyYW0ge3N0cmluZ30gZHN0Um9vdCBGdWxsIHBhdGggdG8gdGhlIGZvbGRlciB3aGVyZSB0aGUgZXh0cmFjdGVkIGJ1bmRsZVxuICogc2hvdWxkIGJlIHBsYWNlZFxuICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fHN0cmluZ30gc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucyBUaGUgbGlzdCBvZiBleHRlbnNpb25zXG4gKiB0aGUgdGFyZ2V0IGFwcGxpY2F0aW9uIGJ1bmRsZSBzdXBwb3J0cywgZm9yIGV4YW1wbGUgWycuYXBrJywgJy5hcGtzJ10gZm9yXG4gKiBBbmRyb2lkIHBhY2thZ2VzXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBGdWxsIHBhdGggdG8gdGhlIGJ1bmRsZSBpbiB0aGUgZGVzdGluYXRpb24gZm9sZGVyXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGdpdmVuIGFyY2hpdmUgaXMgaW52YWxpZCBvciBubyBhcHBsaWNhdGlvbiBidW5kbGVzXG4gKiBoYXZlIGJlZW4gZm91bmQgaW5zaWRlXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHVuemlwQXBwICh6aXBQYXRoLCBkc3RSb290LCBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zKSB7XG4gIGF3YWl0IHppcC5hc3NlcnRWYWxpZFppcCh6aXBQYXRoKTtcblxuICBpZiAoIV8uaXNBcnJheShzdXBwb3J0ZWRBcHBFeHRlbnNpb25zKSkge1xuICAgIHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMgPSBbc3VwcG9ydGVkQXBwRXh0ZW5zaW9uc107XG4gIH1cblxuICBjb25zdCB0bXBSb290ID0gYXdhaXQgdGVtcERpci5vcGVuRGlyKCk7XG4gIHRyeSB7XG4gICAgbG9nZ2VyLmRlYnVnKGBVbnppcHBpbmcgJyR7emlwUGF0aH0nYCk7XG4gICAgY29uc3QgdGltZXIgPSBuZXcgdGltaW5nLlRpbWVyKCkuc3RhcnQoKTtcbiAgICBjb25zdCB1c2VTeXN0ZW1VbnppcEVudiA9IHByb2Nlc3MuZW52LkFQUElVTV9QUkVGRVJfU1lTVEVNX1VOWklQO1xuICAgIGNvbnN0IHVzZVN5c3RlbVVuemlwID0gXy5pc0VtcHR5KHVzZVN5c3RlbVVuemlwRW52KVxuICAgICAgfHwgIVsnMCcsICdmYWxzZSddLmluY2x1ZGVzKF8udG9Mb3dlcih1c2VTeXN0ZW1VbnppcEVudikpO1xuICAgIC8qKlxuICAgICAqIEF0dGVtcHQgdG8gdXNlIHVzZSB0aGUgc3lzdGVtIGB1bnppcGAgKGUuZy4sIGAvdXNyL2Jpbi91bnppcGApIGR1ZVxuICAgICAqIHRvIHRoZSBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudCBpdCBwcm92aWRlcyBvdmVyIHRoZSBuYXRpdmVcbiAgICAgKiBKUyBcInVuemlwXCIgaW1wbGVtZW50YXRpb24uXG4gICAgICogQHR5cGUge2ltcG9ydCgnQGFwcGl1bS9zdXBwb3J0L2xpYi96aXAnKS5FeHRyYWN0QWxsT3B0aW9uc31cbiAgICAgKi9cbiAgICBjb25zdCBleHRyYWN0aW9uT3B0cyA9IHt1c2VTeXN0ZW1VbnppcH07XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FwcGl1bS9hcHBpdW0vaXNzdWVzLzE0MTAwXG4gICAgaWYgKHBhdGguZXh0bmFtZSh6aXBQYXRoKSA9PT0gSVBBX0VYVCkge1xuICAgICAgbG9nZ2VyLmRlYnVnKGBFbmZvcmNpbmcgVVRGLTggZW5jb2Rpbmcgb24gdGhlIGV4dHJhY3RlZCBmaWxlIG5hbWVzIGZvciAnJHtwYXRoLmJhc2VuYW1lKHppcFBhdGgpfSdgKTtcbiAgICAgIGV4dHJhY3Rpb25PcHRzLmZpbGVOYW1lc0VuY29kaW5nID0gJ3V0ZjgnO1xuICAgIH1cbiAgICBhd2FpdCB6aXAuZXh0cmFjdEFsbFRvKHppcFBhdGgsIHRtcFJvb3QsIGV4dHJhY3Rpb25PcHRzKTtcbiAgICBjb25zdCBnbG9iUGF0dGVybiA9IGAqKi8qLisoJHtzdXBwb3J0ZWRBcHBFeHRlbnNpb25zLm1hcCgoZXh0KSA9PiBleHQucmVwbGFjZSgvXlxcLi8sICcnKSkuam9pbignfCcpfSlgO1xuICAgIGNvbnN0IHNvcnRlZEJ1bmRsZUl0ZW1zID0gKGF3YWl0IGZzLmdsb2IoZ2xvYlBhdHRlcm4sIHtcbiAgICAgIGN3ZDogdG1wUm9vdCxcbiAgICAgIHN0cmljdDogZmFsc2UsXG4gICAgLy8gR2V0IHRoZSB0b3AgbGV2ZWwgbWF0Y2hcbiAgICB9KSkuc29ydCgoYSwgYikgPT4gYS5zcGxpdChwYXRoLnNlcCkubGVuZ3RoIC0gYi5zcGxpdChwYXRoLnNlcCkubGVuZ3RoKTtcbiAgICBpZiAoXy5pc0VtcHR5KHNvcnRlZEJ1bmRsZUl0ZW1zKSkge1xuICAgICAgbG9nZ2VyLmVycm9yQW5kVGhyb3coYEFwcCB1bnppcHBlZCBPSywgYnV0IHdlIGNvdWxkIG5vdCBmaW5kIGFueSAnJHtzdXBwb3J0ZWRBcHBFeHRlbnNpb25zfScgYCArXG4gICAgICAgIHV0aWwucGx1cmFsaXplKCdidW5kbGUnLCBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zLmxlbmd0aCwgZmFsc2UpICtcbiAgICAgICAgYCBpbiBpdC4gTWFrZSBzdXJlIHlvdXIgYXJjaGl2ZSBjb250YWlucyBhdCBsZWFzdCBvbmUgcGFja2FnZSBoYXZpbmcgYCArXG4gICAgICAgIGAnJHtzdXBwb3J0ZWRBcHBFeHRlbnNpb25zfScgJHt1dGlsLnBsdXJhbGl6ZSgnZXh0ZW5zaW9uJywgc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucy5sZW5ndGgsIGZhbHNlKX1gKTtcbiAgICB9XG4gICAgbG9nZ2VyLmRlYnVnKGBFeHRyYWN0ZWQgJHt1dGlsLnBsdXJhbGl6ZSgnYnVuZGxlIGl0ZW0nLCBzb3J0ZWRCdW5kbGVJdGVtcy5sZW5ndGgsIHRydWUpfSBgICtcbiAgICAgIGBmcm9tICcke3ppcFBhdGh9JyBpbiAke01hdGgucm91bmQodGltZXIuZ2V0RHVyYXRpb24oKS5hc01pbGxpU2Vjb25kcyl9bXM6ICR7c29ydGVkQnVuZGxlSXRlbXN9YCk7XG4gICAgY29uc3QgbWF0Y2hlZEJ1bmRsZSA9IF8uZmlyc3Qoc29ydGVkQnVuZGxlSXRlbXMpO1xuICAgIGxvZ2dlci5pbmZvKGBBc3N1bWluZyAnJHttYXRjaGVkQnVuZGxlfScgaXMgdGhlIGNvcnJlY3QgYnVuZGxlYCk7XG4gICAgY29uc3QgZHN0UGF0aCA9IHBhdGgucmVzb2x2ZShkc3RSb290LCBwYXRoLmJhc2VuYW1lKG1hdGNoZWRCdW5kbGUpKTtcbiAgICBhd2FpdCBmcy5tdihwYXRoLnJlc29sdmUodG1wUm9vdCwgbWF0Y2hlZEJ1bmRsZSksIGRzdFBhdGgsIHtta2RpcnA6IHRydWV9KTtcbiAgICByZXR1cm4gZHN0UGF0aDtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBmcy5yaW1yYWYodG1wUm9vdCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNQYWNrYWdlT3JCdW5kbGUgKGFwcCkge1xuICByZXR1cm4gKC9eKFthLXpBLVowLTlcXC1fXStcXC5bYS16QS1aMC05XFwtX10rKSskLykudGVzdChhcHApO1xufVxuXG4vKipcbiAqIEZpbmRzIGFsbCBpbnN0YW5jZXMgJ2ZpcnN0S2V5JyBhbmQgY3JlYXRlIGEgZHVwbGljYXRlIHdpdGggdGhlIGtleSAnc2Vjb25kS2V5JyxcbiAqIERvIHRoZSBzYW1lIHRoaW5nIGluIHJldmVyc2UuIElmIHdlIGZpbmQgJ3NlY29uZEtleScsIGNyZWF0ZSBhIGR1cGxpY2F0ZSB3aXRoIHRoZSBrZXkgJ2ZpcnN0S2V5Jy5cbiAqXG4gKiBUaGlzIHdpbGwgY2F1c2Uga2V5cyB0byBiZSBvdmVyd3JpdHRlbiBpZiB0aGUgb2JqZWN0IGNvbnRhaW5zICdmaXJzdEtleScgYW5kICdzZWNvbmRLZXknLlxuXG4gKiBAcGFyYW0geyp9IGlucHV0IEFueSB0eXBlIG9mIGlucHV0XG4gKiBAcGFyYW0ge1N0cmluZ30gZmlyc3RLZXkgVGhlIGZpcnN0IGtleSB0byBkdXBsaWNhdGVcbiAqIEBwYXJhbSB7U3RyaW5nfSBzZWNvbmRLZXkgVGhlIHNlY29uZCBrZXkgdG8gZHVwbGljYXRlXG4gKi9cbmZ1bmN0aW9uIGR1cGxpY2F0ZUtleXMgKGlucHV0LCBmaXJzdEtleSwgc2Vjb25kS2V5KSB7XG4gIC8vIElmIGFycmF5IHByb3ZpZGVkLCByZWN1cnNpdmVseSBjYWxsIG9uIGFsbCBlbGVtZW50c1xuICBpZiAoXy5pc0FycmF5KGlucHV0KSkge1xuICAgIHJldHVybiBpbnB1dC5tYXAoKGl0ZW0pID0+IGR1cGxpY2F0ZUtleXMoaXRlbSwgZmlyc3RLZXksIHNlY29uZEtleSkpO1xuICB9XG5cbiAgLy8gSWYgb2JqZWN0LCBjcmVhdGUgZHVwbGljYXRlcyBmb3Iga2V5cyBhbmQgdGhlbiByZWN1cnNpdmVseSBjYWxsIG9uIHZhbHVlc1xuICBpZiAoXy5pc1BsYWluT2JqZWN0KGlucHV0KSkge1xuICAgIGNvbnN0IHJlc3VsdE9iaiA9IHt9O1xuICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBfLnRvUGFpcnMoaW5wdXQpKSB7XG4gICAgICBjb25zdCByZWN1cnNpdmVseUNhbGxlZFZhbHVlID0gZHVwbGljYXRlS2V5cyh2YWx1ZSwgZmlyc3RLZXksIHNlY29uZEtleSk7XG4gICAgICBpZiAoa2V5ID09PSBmaXJzdEtleSkge1xuICAgICAgICByZXN1bHRPYmpbc2Vjb25kS2V5XSA9IHJlY3Vyc2l2ZWx5Q2FsbGVkVmFsdWU7XG4gICAgICB9IGVsc2UgaWYgKGtleSA9PT0gc2Vjb25kS2V5KSB7XG4gICAgICAgIHJlc3VsdE9ialtmaXJzdEtleV0gPSByZWN1cnNpdmVseUNhbGxlZFZhbHVlO1xuICAgICAgfVxuICAgICAgcmVzdWx0T2JqW2tleV0gPSByZWN1cnNpdmVseUNhbGxlZFZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0T2JqO1xuICB9XG5cbiAgLy8gQmFzZSBjYXNlLiBSZXR1cm4gcHJpbWl0aXZlcyB3aXRob3V0IGRvaW5nIGFueXRoaW5nLlxuICByZXR1cm4gaW5wdXQ7XG59XG5cbi8qKlxuICogVGFrZXMgYSBkZXNpcmVkIGNhcGFiaWxpdHkgYW5kIHRyaWVzIHRvIEpTT04ucGFyc2UgaXQgYXMgYW4gYXJyYXksXG4gKiBhbmQgZWl0aGVyIHJldHVybnMgdGhlIHBhcnNlZCBhcnJheSBvciBhIHNpbmdsZXRvbiBhcnJheS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3xBcnJheTxTdHJpbmc+fSBjYXAgQSBkZXNpcmVkIGNhcGFiaWxpdHlcbiAqL1xuZnVuY3Rpb24gcGFyc2VDYXBzQXJyYXkgKGNhcCkge1xuICBpZiAoXy5pc0FycmF5KGNhcCkpIHtcbiAgICByZXR1cm4gY2FwO1xuICB9XG5cbiAgbGV0IHBhcnNlZENhcHM7XG4gIHRyeSB7XG4gICAgcGFyc2VkQ2FwcyA9IEpTT04ucGFyc2UoY2FwKTtcbiAgICBpZiAoXy5pc0FycmF5KHBhcnNlZENhcHMpKSB7XG4gICAgICByZXR1cm4gcGFyc2VkQ2FwcztcbiAgICB9XG4gIH0gY2F0Y2ggKGlnbikge1xuICAgIGxvZ2dlci53YXJuKGBGYWlsZWQgdG8gcGFyc2UgY2FwYWJpbGl0eSBhcyBKU09OIGFycmF5YCk7XG4gIH1cbiAgaWYgKF8uaXNTdHJpbmcoY2FwKSkge1xuICAgIHJldHVybiBbY2FwXTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYG11c3QgcHJvdmlkZSBhIHN0cmluZyBvciBKU09OIEFycmF5OyByZWNlaXZlZCAke2NhcH1gKTtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBhIHN0cmluZyB0aGF0IHVuaXF1ZWx5IGRlc2NyaWJlcyBkcml2ZXIgaW5zdGFuY2VcbiAqXG4gKiBAcGFyYW0ge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkNvcmV9IG9iaiBkcml2ZXIgaW5zdGFuY2VcbiAqIEBwYXJhbSB7c3RyaW5nP30gc2Vzc2lvbklkIHNlc3Npb24gaWRlbnRpZmllciAoaWYgZXhpc3RzKVxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gZ2VuZXJhdGVEcml2ZXJMb2dQcmVmaXggKG9iaiwgc2Vzc2lvbklkID0gbnVsbCkge1xuICBjb25zdCBpbnN0YW5jZU5hbWUgPSBgJHtvYmouY29uc3RydWN0b3IubmFtZX1AJHtub2RlLmdldE9iamVjdElkKG9iaikuc3Vic3RyaW5nKDAsIDQpfWA7XG4gIHJldHVybiBzZXNzaW9uSWQgPyBgJHtpbnN0YW5jZU5hbWV9ICgke3Nlc3Npb25JZC5zdWJzdHJpbmcoMCwgOCl9KWAgOiBpbnN0YW5jZU5hbWU7XG59XG5cbi8qKiBAdHlwZSB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuRHJpdmVySGVscGVyc30gKi9cbmV4cG9ydCBkZWZhdWx0IHtcbiAgY29uZmlndXJlQXBwLCBpc1BhY2thZ2VPckJ1bmRsZSwgZHVwbGljYXRlS2V5cywgcGFyc2VDYXBzQXJyYXksIGdlbmVyYXRlRHJpdmVyTG9nUHJlZml4XG59O1xuZXhwb3J0IHtcbiAgY29uZmlndXJlQXBwLCBpc1BhY2thZ2VPckJ1bmRsZSwgZHVwbGljYXRlS2V5cywgcGFyc2VDYXBzQXJyYXksIGdlbmVyYXRlRHJpdmVyTG9nUHJlZml4XG59O1xuIl19
546
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJUEFfRVhUIiwiWklQX0VYVFMiLCJaSVBfTUlNRV9UWVBFUyIsIkNBQ0hFRF9BUFBTX01BWF9BR0UiLCJNQVhfQ0FDSEVEX0FQUFMiLCJBUFBMSUNBVElPTlNfQ0FDSEUiLCJMUlUiLCJtYXgiLCJ0dGwiLCJ1cGRhdGVBZ2VPbkdldCIsImRpc3Bvc2UiLCJhcHAiLCJmdWxsUGF0aCIsImxvZ2dlciIsImluZm8iLCJmcyIsInJpbXJhZiIsIm5vRGlzcG9zZU9uU2V0IiwiQVBQTElDQVRJT05TX0NBQ0hFX0dVQVJEIiwiQXN5bmNMb2NrIiwiU0FOSVRJWkVfUkVQTEFDRU1FTlQiLCJERUZBVUxUX0JBU0VOQU1FIiwiQVBQX0RPV05MT0FEX1RJTUVPVVRfTVMiLCJwcm9jZXNzIiwib24iLCJzaXplIiwiYXBwUGF0aHMiLCJ2YWx1ZXMiLCJtYXAiLCJkZWJ1ZyIsImxlbmd0aCIsInV0aWwiLCJwbHVyYWxpemUiLCJhcHBQYXRoIiwicmltcmFmU3luYyIsImUiLCJ3YXJuIiwibWVzc2FnZSIsInJldHJpZXZlSGVhZGVycyIsImxpbmsiLCJheGlvcyIsInVybCIsIm1ldGhvZCIsInRpbWVvdXQiLCJoZWFkZXJzIiwiZ2V0Q2FjaGVkQXBwbGljYXRpb25QYXRoIiwiY3VycmVudEFwcFByb3BzIiwiY2FjaGVkQXBwSW5mbyIsInJlZnJlc2giLCJfIiwiaXNQbGFpbk9iamVjdCIsImxhc3RNb2RpZmllZCIsImN1cnJlbnRNb2RpZmllZCIsImltbXV0YWJsZSIsImN1cnJlbnRJbW11dGFibGUiLCJtYXhBZ2UiLCJjdXJyZW50TWF4QWdlIiwidGltZXN0YW1wIiwiZ2V0VGltZSIsIm1zTGVmdCIsIkRhdGUiLCJub3ciLCJwYXRoIiwiYmFzZW5hbWUiLCJ2ZXJpZnlBcHBFeHRlbnNpb24iLCJzdXBwb3J0ZWRBcHBFeHRlbnNpb25zIiwidG9Mb3dlciIsImluY2x1ZGVzIiwiZXh0bmFtZSIsIkVycm9yIiwiY2FsY3VsYXRlRm9sZGVySW50ZWdyaXR5IiwiZm9sZGVyUGF0aCIsImdsb2IiLCJjd2QiLCJzdHJpY3QiLCJub3NvcnQiLCJjYWxjdWxhdGVGaWxlSW50ZWdyaXR5IiwiZmlsZVBhdGgiLCJoYXNoIiwiaXNBcHBJbnRlZ3JpdHlPayIsImN1cnJlbnRQYXRoIiwiZXhwZWN0ZWRJbnRlZ3JpdHkiLCJleGlzdHMiLCJzdGF0IiwiaXNEaXJlY3RvcnkiLCJmb2xkZXIiLCJmaWxlIiwiY29uZmlndXJlQXBwIiwib3B0aW9ucyIsImlzU3RyaW5nIiwib25Qb3N0UHJvY2VzcyIsImlzQXJyYXkiLCJ1bmRlZmluZWQiLCJzdXBwb3J0ZWRFeHRlbnNpb25zIiwiaXNFbXB0eSIsIm5ld0FwcCIsInNob3VsZFVuemlwQXBwIiwicGFja2FnZUhhc2giLCJyZW1vdGVBcHBQcm9wcyIsInByb3RvY29sIiwicGF0aG5hbWUiLCJwYXJzZSIsImlzVXJsIiwiZ2V0IiwiYWNxdWlyZSIsInRlc3QiLCJtYXhBZ2VNYXRjaCIsImV4ZWMiLCJwYXJzZUludCIsImNhY2hlZFBhdGgiLCJpbnRlZ3JpdHkiLCJkZWxldGUiLCJmaWxlTmFtZSIsInNhbml0aXplTmFtZSIsImRlY29kZVVSSUNvbXBvbmVudCIsInJlcGxhY2VtZW50IiwiY3QiLCJzb21lIiwibWltZVR5cGUiLCJSZWdFeHAiLCJlc2NhcGVSZWdFeHAiLCJtYXRjaCIsInJlc3VsdGluZ05hbWUiLCJzdWJzdHJpbmciLCJyZXN1bHRpbmdFeHQiLCJmaXJzdCIsInRhcmdldFBhdGgiLCJ0ZW1wRGlyIiwicHJlZml4Iiwic3VmZml4IiwiZG93bmxvYWRBcHAiLCJlcnJvck1lc3NhZ2UiLCJpc1BhY2thZ2VBRmlsZSIsImlzRmlsZSIsImlzRnVuY3Rpb24iLCJhcmNoaXZlUGF0aCIsInRtcFJvb3QiLCJvcGVuRGlyIiwidW56aXBBcHAiLCJpc0Fic29sdXRlIiwicmVzb2x2ZSIsInN0b3JlQXBwSW5DYWNoZSIsImFwcFBhdGhUb0NhY2hlIiwiY2FjaGVkRnVsbFBhdGgiLCJzZXQiLCJyZXN1bHQiLCJjbG9uZSIsIkJvb2xlYW4iLCJocmVmIiwibmV0IiwiZG93bmxvYWRGaWxlIiwiZXJyIiwiemlwUGF0aCIsImRzdFJvb3QiLCJ6aXAiLCJhc3NlcnRWYWxpZFppcCIsInRpbWVyIiwidGltaW5nIiwiVGltZXIiLCJzdGFydCIsInVzZVN5c3RlbVVuemlwRW52IiwiZW52IiwiQVBQSVVNX1BSRUZFUl9TWVNURU1fVU5aSVAiLCJ1c2VTeXN0ZW1VbnppcCIsImV4dHJhY3Rpb25PcHRzIiwiZmlsZU5hbWVzRW5jb2RpbmciLCJleHRyYWN0QWxsVG8iLCJnbG9iUGF0dGVybiIsImV4dCIsInJlcGxhY2UiLCJqb2luIiwic29ydGVkQnVuZGxlSXRlbXMiLCJzb3J0IiwiYSIsImIiLCJzcGxpdCIsInNlcCIsImVycm9yQW5kVGhyb3ciLCJNYXRoIiwicm91bmQiLCJnZXREdXJhdGlvbiIsImFzTWlsbGlTZWNvbmRzIiwibWF0Y2hlZEJ1bmRsZSIsImRzdFBhdGgiLCJtdiIsIm1rZGlycCIsImlzUGFja2FnZU9yQnVuZGxlIiwiZHVwbGljYXRlS2V5cyIsImlucHV0IiwiZmlyc3RLZXkiLCJzZWNvbmRLZXkiLCJpdGVtIiwicmVzdWx0T2JqIiwia2V5IiwidmFsdWUiLCJ0b1BhaXJzIiwicmVjdXJzaXZlbHlDYWxsZWRWYWx1ZSIsInBhcnNlQ2Fwc0FycmF5IiwiY2FwIiwicGFyc2VkQ2FwcyIsIkpTT04iLCJpZ24iLCJnZW5lcmF0ZURyaXZlckxvZ1ByZWZpeCIsIm9iaiIsInNlc3Npb25JZCIsImluc3RhbmNlTmFtZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsIm5vZGUiLCJnZXRPYmplY3RJZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9iYXNlZHJpdmVyL2hlbHBlcnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHVybCBmcm9tICd1cmwnO1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQge3RlbXBEaXIsIGZzLCB1dGlsLCB6aXAsIG5ldCwgdGltaW5nLCBub2RlfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IExSVSBmcm9tICdscnUtY2FjaGUnO1xuaW1wb3J0IEFzeW5jTG9jayBmcm9tICdhc3luYy1sb2NrJztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5cbmNvbnN0IElQQV9FWFQgPSAnLmlwYSc7XG5jb25zdCBaSVBfRVhUUyA9IFsnLnppcCcsIElQQV9FWFRdO1xuY29uc3QgWklQX01JTUVfVFlQRVMgPSBbJ2FwcGxpY2F0aW9uL3ppcCcsICdhcHBsaWNhdGlvbi94LXppcC1jb21wcmVzc2VkJywgJ211bHRpcGFydC94LXppcCddO1xuY29uc3QgQ0FDSEVEX0FQUFNfTUFYX0FHRSA9IDEwMDAgKiA2MCAqIDYwICogMjQ7IC8vIG1zXG5jb25zdCBNQVhfQ0FDSEVEX0FQUFMgPSAxMDI0O1xuY29uc3QgQVBQTElDQVRJT05TX0NBQ0hFID0gbmV3IExSVSh7XG4gIG1heDogTUFYX0NBQ0hFRF9BUFBTLFxuICB0dGw6IENBQ0hFRF9BUFBTX01BWF9BR0UsIC8vIGV4cGlyZSBhZnRlciAyNCBob3Vyc1xuICB1cGRhdGVBZ2VPbkdldDogdHJ1ZSxcbiAgZGlzcG9zZTogKGFwcCwge2Z1bGxQYXRofSkgPT4ge1xuICAgIGxvZ2dlci5pbmZvKFxuICAgICAgYFRoZSBhcHBsaWNhdGlvbiAnJHthcHB9JyBjYWNoZWQgYXQgJyR7ZnVsbFBhdGh9JyBoYXMgYCArXG4gICAgICAgIGBleHBpcmVkIGFmdGVyICR7Q0FDSEVEX0FQUFNfTUFYX0FHRX1tc2BcbiAgICApO1xuICAgIGlmIChmdWxsUGF0aCkge1xuICAgICAgZnMucmltcmFmKGZ1bGxQYXRoKTtcbiAgICB9XG4gIH0sXG4gIG5vRGlzcG9zZU9uU2V0OiB0cnVlLFxufSk7XG5jb25zdCBBUFBMSUNBVElPTlNfQ0FDSEVfR1VBUkQgPSBuZXcgQXN5bmNMb2NrKCk7XG5jb25zdCBTQU5JVElaRV9SRVBMQUNFTUVOVCA9ICctJztcbmNvbnN0IERFRkFVTFRfQkFTRU5BTUUgPSAnYXBwaXVtLWFwcCc7XG5jb25zdCBBUFBfRE9XTkxPQURfVElNRU9VVF9NUyA9IDEyMCAqIDEwMDA7XG5cbnByb2Nlc3Mub24oJ2V4aXQnLCAoKSA9PiB7XG4gIGlmIChBUFBMSUNBVElPTlNfQ0FDSEUuc2l6ZSA9PT0gMCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGFwcFBhdGhzID0gWy4uLkFQUExJQ0FUSU9OU19DQUNIRS52YWx1ZXMoKV0ubWFwKCh7ZnVsbFBhdGh9KSA9PiBmdWxsUGF0aCk7XG4gIGxvZ2dlci5kZWJ1ZyhcbiAgICBgUGVyZm9ybWluZyBjbGVhbnVwIG9mICR7YXBwUGF0aHMubGVuZ3RofSBjYWNoZWQgYCArXG4gICAgICB1dGlsLnBsdXJhbGl6ZSgnYXBwbGljYXRpb24nLCBhcHBQYXRocy5sZW5ndGgpXG4gICk7XG4gIGZvciAoY29uc3QgYXBwUGF0aCBvZiBhcHBQYXRocykge1xuICAgIHRyeSB7XG4gICAgICAvLyBBc3luY2hyb25vdXMgY2FsbHMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gb25FeGl0IGhhbmRsZXJcbiAgICAgIGZzLnJpbXJhZlN5bmMoYXBwUGF0aCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgbG9nZ2VyLndhcm4oZS5tZXNzYWdlKTtcbiAgICB9XG4gIH1cbn0pO1xuXG5hc3luYyBmdW5jdGlvbiByZXRyaWV2ZUhlYWRlcnMobGluaykge1xuICB0cnkge1xuICAgIHJldHVybiAoXG4gICAgICBhd2FpdCBheGlvcyh7XG4gICAgICAgIHVybDogbGluayxcbiAgICAgICAgbWV0aG9kOiAnSEVBRCcsXG4gICAgICAgIHRpbWVvdXQ6IDUwMDAsXG4gICAgICB9KVxuICAgICkuaGVhZGVycztcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxvZ2dlci5pbmZvKGBDYW5ub3Qgc2VuZCBIRUFEIHJlcXVlc3QgdG8gJyR7bGlua30nLiBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCk7XG4gIH1cbiAgcmV0dXJuIHt9O1xufVxuXG5mdW5jdGlvbiBnZXRDYWNoZWRBcHBsaWNhdGlvblBhdGgobGluaywgY3VycmVudEFwcFByb3BzID0ge30sIGNhY2hlZEFwcEluZm8gPSB7fSkge1xuICBjb25zdCByZWZyZXNoID0gKCkgPT4ge1xuICAgIGxvZ2dlci5kZWJ1ZyhgQSBmcmVzaCBjb3B5IG9mIHRoZSBhcHBsaWNhdGlvbiBpcyBnb2luZyB0byBiZSBkb3dubG9hZGVkIGZyb20gJHtsaW5rfWApO1xuICAgIHJldHVybiBudWxsO1xuICB9O1xuXG4gIGlmICghXy5pc1BsYWluT2JqZWN0KGNhY2hlZEFwcEluZm8pIHx8ICFfLmlzUGxhaW5PYmplY3QoY3VycmVudEFwcFByb3BzKSkge1xuICAgIC8vIGlmIGFuIGludmFsaWQgYXJnIGlzIHBhc3NlZCB0aGVuIGFzc3VtZSBjYWNoZSBtaXNzXG4gICAgcmV0dXJuIHJlZnJlc2goKTtcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICBsYXN0TW9kaWZpZWQ6IGN1cnJlbnRNb2RpZmllZCxcbiAgICBpbW11dGFibGU6IGN1cnJlbnRJbW11dGFibGUsXG4gICAgLy8gbWF4QWdlIGlzIGluIHNlY29uZHNcbiAgICBtYXhBZ2U6IGN1cnJlbnRNYXhBZ2UsXG4gIH0gPSBjdXJyZW50QXBwUHJvcHM7XG4gIGNvbnN0IHtcbiAgICAvLyBEYXRlIGluc3RhbmNlXG4gICAgbGFzdE1vZGlmaWVkLFxuICAgIC8vIGJvb2xlYW5cbiAgICBpbW11dGFibGUsXG4gICAgLy8gVW5peCB0aW1lIGluIG1pbGxpc2Vjb25kc1xuICAgIHRpbWVzdGFtcCxcbiAgICBmdWxsUGF0aCxcbiAgfSA9IGNhY2hlZEFwcEluZm87XG4gIGlmIChsYXN0TW9kaWZpZWQgJiYgY3VycmVudE1vZGlmaWVkKSB7XG4gICAgaWYgKGN1cnJlbnRNb2RpZmllZC5nZXRUaW1lKCkgPD0gbGFzdE1vZGlmaWVkLmdldFRpbWUoKSkge1xuICAgICAgbG9nZ2VyLmRlYnVnKGBUaGUgYXBwbGljYXRpb24gYXQgJHtsaW5rfSBoYXMgbm90IGJlZW4gbW9kaWZpZWQgc2luY2UgJHtsYXN0TW9kaWZpZWR9YCk7XG4gICAgICByZXR1cm4gZnVsbFBhdGg7XG4gICAgfVxuICAgIGxvZ2dlci5kZWJ1ZyhgVGhlIGFwcGxpY2F0aW9uIGF0ICR7bGlua30gaGFzIGJlZW4gbW9kaWZpZWQgc2luY2UgJHtsYXN0TW9kaWZpZWR9YCk7XG4gICAgcmV0dXJuIHJlZnJlc2goKTtcbiAgfVxuICBpZiAoaW1tdXRhYmxlICYmIGN1cnJlbnRJbW11dGFibGUpIHtcbiAgICBsb2dnZXIuZGVidWcoYFRoZSBhcHBsaWNhdGlvbiBhdCAke2xpbmt9IGlzIGltbXV0YWJsZWApO1xuICAgIHJldHVybiBmdWxsUGF0aDtcbiAgfVxuICBpZiAoY3VycmVudE1heEFnZSAmJiB0aW1lc3RhbXApIHtcbiAgICBjb25zdCBtc0xlZnQgPSB0aW1lc3RhbXAgKyBjdXJyZW50TWF4QWdlICogMTAwMCAtIERhdGUubm93KCk7XG4gICAgaWYgKG1zTGVmdCA+IDApIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgYFRoZSBjYWNoZWQgYXBwbGljYXRpb24gJyR7cGF0aC5iYXNlbmFtZShmdWxsUGF0aCl9JyB3aWxsIGV4cGlyZSBpbiAke21zTGVmdCAvIDEwMDB9c2BcbiAgICAgICk7XG4gICAgICByZXR1cm4gZnVsbFBhdGg7XG4gICAgfVxuICAgIGxvZ2dlci5kZWJ1ZyhgVGhlIGNhY2hlZCBhcHBsaWNhdGlvbiAnJHtwYXRoLmJhc2VuYW1lKGZ1bGxQYXRoKX0nIGhhcyBleHBpcmVkYCk7XG4gIH1cbiAgcmV0dXJuIHJlZnJlc2goKTtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5QXBwRXh0ZW5zaW9uKGFwcCwgc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucykge1xuICBpZiAoc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucy5tYXAoXy50b0xvd2VyKS5pbmNsdWRlcyhfLnRvTG93ZXIocGF0aC5leHRuYW1lKGFwcCkpKSkge1xuICAgIHJldHVybiBhcHA7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgIGBOZXcgYXBwIHBhdGggJyR7YXBwfScgZGlkIG5vdCBoYXZlIGAgK1xuICAgICAgYCR7dXRpbC5wbHVyYWxpemUoJ2V4dGVuc2lvbicsIHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMubGVuZ3RoLCBmYWxzZSl9OiBgICtcbiAgICAgIHN1cHBvcnRlZEFwcEV4dGVuc2lvbnNcbiAgKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY2FsY3VsYXRlRm9sZGVySW50ZWdyaXR5KGZvbGRlclBhdGgpIHtcbiAgcmV0dXJuIChhd2FpdCBmcy5nbG9iKCcqKi8qJywge2N3ZDogZm9sZGVyUGF0aCwgc3RyaWN0OiBmYWxzZSwgbm9zb3J0OiB0cnVlfSkpLmxlbmd0aDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY2FsY3VsYXRlRmlsZUludGVncml0eShmaWxlUGF0aCkge1xuICByZXR1cm4gYXdhaXQgZnMuaGFzaChmaWxlUGF0aCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGlzQXBwSW50ZWdyaXR5T2soY3VycmVudFBhdGgsIGV4cGVjdGVkSW50ZWdyaXR5ID0ge30pIHtcbiAgaWYgKCEoYXdhaXQgZnMuZXhpc3RzKGN1cnJlbnRQYXRoKSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBGb2xkZXIgaW50ZWdyaXR5IGNoZWNrIGlzIHNpbXBsZTpcbiAgLy8gVmVyaWZ5IHRoZSBwcmV2aW91cyBhbW91bnQgb2YgZmlsZXMgaXMgbm90IGdyZWF0ZXIgdGhhbiB0aGUgY3VycmVudCBvbmUuXG4gIC8vIFdlIGRvbid0IHdhbnQgdG8gdXNlIGVxdWFsaXR5IGNvbXBhcmlzb24gYmVjYXVzZSBvZiBhbiBhc3N1bXB0aW9uIHRoYXQgdGhlIE9TIG1pZ2h0XG4gIC8vIGNyZWF0ZSBzb21lIHVud2FudGVkIHNlcnZpY2UgZmlsZXMvY2FjaGVkIGluc2lkZSBvZiB0aGF0IGZvbGRlciBvciBpdHMgc3ViZm9sZGVycy5cbiAgLy8gT2ZjLCB2YWxpZGF0aW5nIHRoZSBoYXNoIHN1bSBvZiBlYWNoIGZpbGUgKG9yIGF0IGxlYXN0IG9mIGZpbGUgcGF0aCkgd291bGQgYmUgbXVjaFxuICAvLyBtb3JlIHByZWNpc2UsIGJ1dCB3ZSBkb24ndCBuZWVkIHRvIGJlIHZlcnkgcHJlY2lzZSBoZXJlIGFuZCBhbHNvIGRvbid0IHdhbnQgdG9cbiAgLy8gb3ZlcnVzZSBSQU0gYW5kIGhhdmUgYSBwZXJmb3JtYW5jZSBkcm9wLlxuICByZXR1cm4gKGF3YWl0IGZzLnN0YXQoY3VycmVudFBhdGgpKS5pc0RpcmVjdG9yeSgpXG4gICAgPyAoYXdhaXQgY2FsY3VsYXRlRm9sZGVySW50ZWdyaXR5KGN1cnJlbnRQYXRoKSkgPj0gZXhwZWN0ZWRJbnRlZ3JpdHk/LmZvbGRlclxuICAgIDogKGF3YWl0IGNhbGN1bGF0ZUZpbGVJbnRlZ3JpdHkoY3VycmVudFBhdGgpKSA9PT0gZXhwZWN0ZWRJbnRlZ3JpdHk/LmZpbGU7XG59XG5cbi8qKlxuICogQHR5cGVkZWYgUG9zdFByb2Nlc3NPcHRpb25zXG4gKiBAcHJvcGVydHkgez9PYmplY3R9IGNhY2hlZEFwcEluZm8gVGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwcmV2aW91c2x5IGNhY2hlZCBhcHAgaW5zdGFuY2UgKGlmIGV4aXN0cyk6XG4gKiAgICAtIHBhY2thZ2VIYXNoOiBTSEExIGhhc2ggb2YgdGhlIHBhY2thZ2UgaWYgaXQgaXMgYSBmaWxlIGFuZCBub3QgYSBmb2xkZXJcbiAqICAgIC0gbGFzdE1vZGlmaWVkOiBPcHRpb25hbCBEYXRlIGluc3RhbmNlLCB0aGUgdmFsdWUgb2YgZmlsZSdzIGBMYXN0LU1vZGlmaWVkYCBoZWFkZXJcbiAqICAgIC0gaW1tdXRhYmxlOiBPcHRpb25hbCBib29sZWFuIHZhbHVlLiBDb250YWlucyB0cnVlIGlmIHRoZSBmaWxlIGhhcyBhbiBgaW1tdXRhYmxlYCBtYXJrXG4gKiAgICAgICAgICAgICAgICAgaW4gYENhY2hlLWNvbnRyb2xgIGhlYWRlclxuICogICAgLSBtYXhBZ2U6IE9wdGlvbmFsIGludGVnZXIgcmVwcmVzZW50YXRpb24gb2YgYG1heEFnZWAgcGFyYW1ldGVyIGluIGBDYWNoZS1jb250cm9sYCBoZWFkZXJcbiAqICAgIC0gdGltZXN0YW1wOiBUaGUgdGltZXN0YW1wIHRoaXMgaXRlbSBoYXMgYmVlbiBhZGRlZCB0byB0aGUgY2FjaGUgKG1lYXN1cmVkIGluIFVuaXggZXBvY2hcbiAqICAgICAgICAgICAgICAgICBtaWxsaXNlY29uZHMpXG4gKiAgICAtIGludGVncml0eTogQW4gb2JqZWN0IGNvbnRhaW5pbmcgZWl0aGVyIGBmaWxlYCBwcm9wZXJ0eSB3aXRoIFNIQTEgaGFzaCBvZiB0aGUgZmlsZVxuICogICAgICAgICAgICAgICAgIG9yIGBmb2xkZXJgIHByb3BlcnR5IHdpdGggdG90YWwgYW1vdW50IG9mIGNhY2hlZCBmaWxlcyBhbmQgc3ViZm9sZGVyc1xuICogICAgLSBmdWxsUGF0aDogdGhlIGZ1bGwgcGF0aCB0byB0aGUgY2FjaGVkIGFwcFxuICogQHByb3BlcnR5IHtib29sZWFufSBpc1VybCBXaGV0aGVyIHRoZSBhcHAgaGFzIGJlZW4gZG93bmxvYWRlZCBmcm9tIGEgcmVtb3RlIFVSTFxuICogQHByb3BlcnR5IHs/T2JqZWN0fSBoZWFkZXJzIE9wdGlvbmFsIGhlYWRlcnMgb2JqZWN0LiBPbmx5IHByZXNlbnQgaWYgYGlzVXJsYCBpcyB0cnVlIGFuZCBpZiB0aGUgc2VydmVyXG4gKiByZXNwb25kcyB0byBIRUFEIHJlcXVlc3RzLiBBbGwgaGVhZGVyIG5hbWVzIGFyZSBub3JtYWxpemVkIHRvIGxvd2VyY2FzZS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhcHBQYXRoIEEgc3RyaW5nIGNvbnRhaW5pbmcgZnVsbCBwYXRoIHRvIHRoZSBwcmVwcm9jZXNzZWQgYXBwbGljYXRpb24gcGFja2FnZSAoZWl0aGVyXG4gKiBkb3dubG9hZGVkIG9yIGEgbG9jYWwgb25lKVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYgUG9zdFByb2Nlc3NSZXN1bHRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhcHBQYXRoIFRoZSBmdWxsIHBhc3QgdG8gdGhlIHBvc3QtcHJvY2Vzc2VkIGFwcGxpY2F0aW9uIHBhY2thZ2Ugb24gdGhlXG4gKiBsb2NhbCBmaWxlIHN5c3RlbSAobWlnaHQgYmUgYSBmaWxlIG9yIGEgZm9sZGVyIHBhdGgpXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiBDb25maWd1cmVBcHBPcHRpb25zXG4gKiBAcHJvcGVydHkgeyhvYmo6IFBvc3RQcm9jZXNzT3B0aW9ucykgPT4gKFByb21pc2U8UG9zdFByb2Nlc3NSZXN1bHR8dW5kZWZpbmVkPnxQb3N0UHJvY2Vzc1Jlc3VsdHx1bmRlZmluZWQpfSBbb25Qb3N0UHJvY2Vzc11cbiAqIE9wdGlvbmFsIGZ1bmN0aW9uLCB3aGljaCBzaG91bGQgYmUgYXBwbGllZFxuICogdG8gdGhlIGFwcGxpY2F0aW9uIGFmdGVyIGl0IGlzIGRvd25sb2FkZWQvcHJlcHJvY2Vzc2VkLiBUaGlzIGZ1bmN0aW9uIG1heSBiZSBhc3luY1xuICogYW5kIGlzIGV4cGVjdGVkIHRvIGFjY2VwdCBzaW5nbGUgb2JqZWN0IHBhcmFtZXRlci5cbiAqIFRoZSBmdW5jdGlvbiBpcyBleHBlY3RlZCB0byBlaXRoZXIgcmV0dXJuIGEgZmFsc3kgdmFsdWUsIHdoaWNoIG1lYW5zIHRoZSBhcHAgbXVzdCBub3QgYmVcbiAqIGNhY2hlZCBhbmQgYSBmcmVzaCBjb3B5IG9mIGl0IGlzIGRvd25sb2FkZWQgZWFjaCB0aW1lLiBJZiB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYW4gb2JqZWN0XG4gKiBjb250YWluaW5nIGBhcHBQYXRoYCBwcm9wZXJ0eSB0aGVuIHRoZSBpbnRlZ3JpdHkgb2YgaXQgd2lsbCBiZSB2ZXJpZmllZCBhbmQgc3RvcmVkIGludG9cbiAqIHRoZSBjYWNoZS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IHN1cHBvcnRlZEV4dGVuc2lvbnMgTGlzdCBvZiBzdXBwb3J0ZWQgYXBwbGljYXRpb24gZXh0ZW5zaW9ucyAoXG4gKiBpbmNsdWRpbmcgc3RhcnRpbmcgZG90cykuIFRoaXMgcHJvcGVydHkgaXMgbWFuZGF0b3J5IGFuZCBtdXN0IG5vdCBiZSBlbXB0eS5cbiAqL1xuXG4vKipcbiAqIFByZXBhcmVzIGFuIGFwcCB0byBiZSB1c2VkIGluIGFuIGF1dG9tYXRlZCB0ZXN0LiBUaGUgYXBwIGdldHMgY2FjaGVkIGF1dG9tYXRpY2FsbHlcbiAqIGlmIGl0IGlzIGFuIGFyY2hpdmUgb3IgaWYgaXQgaXMgZG93bmxvYWRlZCBmcm9tIGFuIFVSTC5cbiAqIElmIHRoZSBkb3dubG9hZGVkIGFwcCBoYXMgYC56aXBgIGV4dGVuc2lvbiwgdGhpcyBtZXRob2Qgd2lsbCB1bnppcCBpdC5cbiAqIFRoZSB1bnppcCBkb2VzIG5vdCB3b3JrIHdoZW4gYG9uUG9zdFByb2Nlc3NgIGlzIHByb3ZpZGVkLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcHAgRWl0aGVyIGEgZnVsbCBwYXRoIHRvIHRoZSBhcHAgb3IgYSByZW1vdGUgVVJMXG4gKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXXxDb25maWd1cmVBcHBPcHRpb25zfSBvcHRpb25zXG4gKiBAcmV0dXJucyBUaGUgZnVsbCBwYXRoIHRvIHRoZSByZXN1bHRpbmcgYXBwbGljYXRpb24gYnVuZGxlXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGNvbmZpZ3VyZUFwcChhcHAsIG9wdGlvbnMgPSAvKiogQHR5cGUge0NvbmZpZ3VyZUFwcE9wdGlvbnN9ICovICh7fSkpIHtcbiAgaWYgKCFfLmlzU3RyaW5nKGFwcCkpIHtcbiAgICAvLyBpbW1lZGlhdGVseSBzaG9ydGNpcmN1aXQgaWYgbm90IGdpdmVuIGFuIGFwcFxuICAgIHJldHVybjtcbiAgfVxuXG4gIGxldCBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zO1xuICBjb25zdCBvblBvc3RQcm9jZXNzID1cbiAgICAhXy5pc1N0cmluZyhvcHRpb25zKSAmJiAhXy5pc0FycmF5KG9wdGlvbnMpID8gb3B0aW9ucy5vblBvc3RQcm9jZXNzIDogdW5kZWZpbmVkO1xuXG4gIGlmIChfLmlzU3RyaW5nKG9wdGlvbnMpKSB7XG4gICAgc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucyA9IFtvcHRpb25zXTtcbiAgfSBlbHNlIGlmIChfLmlzQXJyYXkob3B0aW9ucykpIHtcbiAgICBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zID0gb3B0aW9ucztcbiAgfSBlbHNlIGlmIChfLmlzUGxhaW5PYmplY3Qob3B0aW9ucykpIHtcbiAgICBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zID0gb3B0aW9ucy5zdXBwb3J0ZWRFeHRlbnNpb25zO1xuICB9XG4gIGlmIChfLmlzRW1wdHkoc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE9uZSBvciBtb3JlIHN1cHBvcnRlZCBhcHAgZXh0ZW5zaW9ucyBtdXN0IGJlIHByb3ZpZGVkYCk7XG4gIH1cblxuICBsZXQgbmV3QXBwID0gYXBwO1xuICBsZXQgc2hvdWxkVW56aXBBcHAgPSBmYWxzZTtcbiAgbGV0IHBhY2thZ2VIYXNoID0gbnVsbDtcbiAgbGV0IGhlYWRlcnMgPSBudWxsO1xuICAvKiogQHR5cGUge1JlbW90ZUFwcFByb3BzfSAqL1xuICBjb25zdCByZW1vdGVBcHBQcm9wcyA9IHtcbiAgICBsYXN0TW9kaWZpZWQ6IG51bGwsXG4gICAgaW1tdXRhYmxlOiBmYWxzZSxcbiAgICBtYXhBZ2U6IG51bGwsXG4gIH07XG4gIGNvbnN0IHtwcm90b2NvbCwgcGF0aG5hbWV9ID0gdXJsLnBhcnNlKG5ld0FwcCk7XG4gIGNvbnN0IGlzVXJsID0gcHJvdG9jb2wgPT09IG51bGwgPyBmYWxzZSA6IFsnaHR0cDonLCAnaHR0cHM6J10uaW5jbHVkZXMocHJvdG9jb2wpO1xuXG4gIGNvbnN0IGNhY2hlZEFwcEluZm8gPSBBUFBMSUNBVElPTlNfQ0FDSEUuZ2V0KGFwcCk7XG5cbiAgcmV0dXJuIGF3YWl0IEFQUExJQ0FUSU9OU19DQUNIRV9HVUFSRC5hY3F1aXJlKGFwcCwgYXN5bmMgKCkgPT4ge1xuICAgIGlmIChpc1VybCkge1xuICAgICAgLy8gVXNlIHRoZSBhcHAgZnJvbSByZW1vdGUgVVJMXG4gICAgICBsb2dnZXIuaW5mbyhgVXNpbmcgZG93bmxvYWRhYmxlIGFwcCAnJHtuZXdBcHB9J2ApO1xuICAgICAgaGVhZGVycyA9IGF3YWl0IHJldHJpZXZlSGVhZGVycyhuZXdBcHApO1xuICAgICAgaWYgKCFfLmlzRW1wdHkoaGVhZGVycykpIHtcbiAgICAgICAgaWYgKGhlYWRlcnNbJ2xhc3QtbW9kaWZpZWQnXSkge1xuICAgICAgICAgIHJlbW90ZUFwcFByb3BzLmxhc3RNb2RpZmllZCA9IG5ldyBEYXRlKGhlYWRlcnNbJ2xhc3QtbW9kaWZpZWQnXSk7XG4gICAgICAgIH1cbiAgICAgICAgbG9nZ2VyLmRlYnVnKGBMYXN0LU1vZGlmaWVkOiAke2hlYWRlcnNbJ2xhc3QtbW9kaWZpZWQnXX1gKTtcbiAgICAgICAgaWYgKGhlYWRlcnNbJ2NhY2hlLWNvbnRyb2wnXSkge1xuICAgICAgICAgIHJlbW90ZUFwcFByb3BzLmltbXV0YWJsZSA9IC9cXGJpbW11dGFibGVcXGIvaS50ZXN0KGhlYWRlcnNbJ2NhY2hlLWNvbnRyb2wnXSk7XG4gICAgICAgICAgY29uc3QgbWF4QWdlTWF0Y2ggPSAvXFxibWF4LWFnZT0oXFxkKylcXGIvaS5leGVjKGhlYWRlcnNbJ2NhY2hlLWNvbnRyb2wnXSk7XG4gICAgICAgICAgaWYgKG1heEFnZU1hdGNoKSB7XG4gICAgICAgICAgICByZW1vdGVBcHBQcm9wcy5tYXhBZ2UgPSBwYXJzZUludChtYXhBZ2VNYXRjaFsxXSwgMTApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsb2dnZXIuZGVidWcoYENhY2hlLUNvbnRyb2w6ICR7aGVhZGVyc1snY2FjaGUtY29udHJvbCddfWApO1xuICAgICAgfVxuICAgICAgY29uc3QgY2FjaGVkUGF0aCA9IGdldENhY2hlZEFwcGxpY2F0aW9uUGF0aChhcHAsIHJlbW90ZUFwcFByb3BzLCBjYWNoZWRBcHBJbmZvKTtcbiAgICAgIGlmIChjYWNoZWRQYXRoKSB7XG4gICAgICAgIGlmIChhd2FpdCBpc0FwcEludGVncml0eU9rKGNhY2hlZFBhdGgsIGNhY2hlZEFwcEluZm8/LmludGVncml0eSkpIHtcbiAgICAgICAgICBsb2dnZXIuaW5mbyhgUmV1c2luZyBwcmV2aW91c2x5IGRvd25sb2FkZWQgYXBwbGljYXRpb24gYXQgJyR7Y2FjaGVkUGF0aH0nYCk7XG4gICAgICAgICAgcmV0dXJuIHZlcmlmeUFwcEV4dGVuc2lvbihjYWNoZWRQYXRoLCBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBsb2dnZXIuaW5mbyhcbiAgICAgICAgICBgVGhlIGFwcGxpY2F0aW9uIGF0ICcke2NhY2hlZFBhdGh9JyBkb2VzIG5vdCBleGlzdCBhbnltb3JlIGAgK1xuICAgICAgICAgICAgYG9yIGl0cyBpbnRlZ3JpdHkgaGFzIGJlZW4gZGFtYWdlZC4gRGVsZXRpbmcgaXQgZnJvbSB0aGUgaW50ZXJuYWwgY2FjaGVgXG4gICAgICAgICk7XG4gICAgICAgIEFQUExJQ0FUSU9OU19DQUNIRS5kZWxldGUoYXBwKTtcbiAgICAgIH1cblxuICAgICAgbGV0IGZpbGVOYW1lID0gbnVsbDtcbiAgICAgIGNvbnN0IGJhc2VuYW1lID0gZnMuc2FuaXRpemVOYW1lKHBhdGguYmFzZW5hbWUoZGVjb2RlVVJJQ29tcG9uZW50KHBhdGhuYW1lID8/ICcnKSksIHtcbiAgICAgICAgcmVwbGFjZW1lbnQ6IFNBTklUSVpFX1JFUExBQ0VNRU5ULFxuICAgICAgfSk7XG4gICAgICBjb25zdCBleHRuYW1lID0gcGF0aC5leHRuYW1lKGJhc2VuYW1lKTtcbiAgICAgIC8vIHRvIGRldGVybWluZSBpZiB3ZSBuZWVkIHRvIHVuemlwIHRoZSBhcHAsIHdlIGhhdmUgYSBudW1iZXIgb2YgcGxhY2VzXG4gICAgICAvLyB0byBsb29rOiBjb250ZW50IHR5cGUsIGNvbnRlbnQgZGlzcG9zaXRpb24sIG9yIHRoZSBmaWxlIGV4dGVuc2lvblxuICAgICAgaWYgKFpJUF9FWFRTLmluY2x1ZGVzKGV4dG5hbWUpKSB7XG4gICAgICAgIGZpbGVOYW1lID0gYmFzZW5hbWU7XG4gICAgICAgIHNob3VsZFVuemlwQXBwID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChoZWFkZXJzWydjb250ZW50LXR5cGUnXSkge1xuICAgICAgICBjb25zdCBjdCA9IGhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddO1xuICAgICAgICBsb2dnZXIuZGVidWcoYENvbnRlbnQtVHlwZTogJHtjdH1gKTtcbiAgICAgICAgLy8gdGhlIGZpbGV0eXBlIG1heSBub3QgYmUgb2J2aW91cyBmb3IgY2VydGFpbiB1cmxzLCBzbyBjaGVjayB0aGUgbWltZSB0eXBlIHRvb1xuICAgICAgICBpZiAoXG4gICAgICAgICAgWklQX01JTUVfVFlQRVMuc29tZSgobWltZVR5cGUpID0+XG4gICAgICAgICAgICBuZXcgUmVnRXhwKGBcXFxcYiR7Xy5lc2NhcGVSZWdFeHAobWltZVR5cGUpfVxcXFxiYCkudGVzdChjdClcbiAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgIGlmICghZmlsZU5hbWUpIHtcbiAgICAgICAgICAgIGZpbGVOYW1lID0gYCR7REVGQVVMVF9CQVNFTkFNRX0uemlwYDtcbiAgICAgICAgICB9XG4gICAgICAgICAgc2hvdWxkVW56aXBBcHAgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoaGVhZGVyc1snY29udGVudC1kaXNwb3NpdGlvbiddICYmIC9eYXR0YWNobWVudC9pLnRlc3QoaGVhZGVyc1snY29udGVudC1kaXNwb3NpdGlvbiddKSkge1xuICAgICAgICBsb2dnZXIuZGVidWcoYENvbnRlbnQtRGlzcG9zaXRpb246ICR7aGVhZGVyc1snY29udGVudC1kaXNwb3NpdGlvbiddfWApO1xuICAgICAgICBjb25zdCBtYXRjaCA9IC9maWxlbmFtZT1cIihbXlwiXSspL2kuZXhlYyhoZWFkZXJzWydjb250ZW50LWRpc3Bvc2l0aW9uJ10pO1xuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICBmaWxlTmFtZSA9IGZzLnNhbml0aXplTmFtZShtYXRjaFsxXSwge1xuICAgICAgICAgICAgcmVwbGFjZW1lbnQ6IFNBTklUSVpFX1JFUExBQ0VNRU5ULFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHNob3VsZFVuemlwQXBwID0gc2hvdWxkVW56aXBBcHAgfHwgWklQX0VYVFMuaW5jbHVkZXMocGF0aC5leHRuYW1lKGZpbGVOYW1lKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghZmlsZU5hbWUpIHtcbiAgICAgICAgLy8gYXNzaWduIHRoZSBkZWZhdWx0IGZpbGUgbmFtZSBhbmQgdGhlIGV4dGVuc2lvbiBpZiBub25lIGhhcyBiZWVuIGRldGVjdGVkXG4gICAgICAgIGNvbnN0IHJlc3VsdGluZ05hbWUgPSBiYXNlbmFtZVxuICAgICAgICAgID8gYmFzZW5hbWUuc3Vic3RyaW5nKDAsIGJhc2VuYW1lLmxlbmd0aCAtIGV4dG5hbWUubGVuZ3RoKVxuICAgICAgICAgIDogREVGQVVMVF9CQVNFTkFNRTtcbiAgICAgICAgbGV0IHJlc3VsdGluZ0V4dCA9IGV4dG5hbWU7XG4gICAgICAgIGlmICghc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucy5pbmNsdWRlcyhyZXN1bHRpbmdFeHQpKSB7XG4gICAgICAgICAgbG9nZ2VyLmluZm8oXG4gICAgICAgICAgICBgVGhlIGN1cnJlbnQgZmlsZSBleHRlbnNpb24gJyR7cmVzdWx0aW5nRXh0fScgaXMgbm90IHN1cHBvcnRlZC4gYCArXG4gICAgICAgICAgICAgIGBEZWZhdWx0aW5nIHRvICcke18uZmlyc3Qoc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucyl9J2BcbiAgICAgICAgICApO1xuICAgICAgICAgIHJlc3VsdGluZ0V4dCA9IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAoXy5maXJzdChzdXBwb3J0ZWRBcHBFeHRlbnNpb25zKSk7XG4gICAgICAgIH1cbiAgICAgICAgZmlsZU5hbWUgPSBgJHtyZXN1bHRpbmdOYW1lfSR7cmVzdWx0aW5nRXh0fWA7XG4gICAgICB9XG4gICAgICBjb25zdCB0YXJnZXRQYXRoID0gYXdhaXQgdGVtcERpci5wYXRoKHtcbiAgICAgICAgcHJlZml4OiBmaWxlTmFtZSxcbiAgICAgICAgc3VmZml4OiAnJyxcbiAgICAgIH0pO1xuICAgICAgbmV3QXBwID0gYXdhaXQgZG93bmxvYWRBcHAobmV3QXBwLCB0YXJnZXRQYXRoKTtcbiAgICB9IGVsc2UgaWYgKGF3YWl0IGZzLmV4aXN0cyhuZXdBcHApKSB7XG4gICAgICAvLyBVc2UgdGhlIGxvY2FsIGFwcFxuICAgICAgbG9nZ2VyLmluZm8oYFVzaW5nIGxvY2FsIGFwcCAnJHtuZXdBcHB9J2ApO1xuICAgICAgc2hvdWxkVW56aXBBcHAgPSBaSVBfRVhUUy5pbmNsdWRlcyhwYXRoLmV4dG5hbWUobmV3QXBwKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBlcnJvck1lc3NhZ2UgPSBgVGhlIGFwcGxpY2F0aW9uIGF0ICcke25ld0FwcH0nIGRvZXMgbm90IGV4aXN0IG9yIGlzIG5vdCBhY2Nlc3NpYmxlYDtcbiAgICAgIC8vIHByb3RvY29sIHZhbHVlIGZvciAnQzpcXFxcdGVtcCcgaXMgJ2M6Jywgc28gd2UgY2hlY2sgdGhlIGxlbmd0aCBhcyB3ZWxsXG4gICAgICBpZiAoXy5pc1N0cmluZyhwcm90b2NvbCkgJiYgcHJvdG9jb2wubGVuZ3RoID4gMikge1xuICAgICAgICBlcnJvck1lc3NhZ2UgPVxuICAgICAgICAgIGBUaGUgcHJvdG9jb2wgJyR7cHJvdG9jb2x9JyB1c2VkIGluICcke25ld0FwcH0nIGlzIG5vdCBzdXBwb3J0ZWQuIGAgK1xuICAgICAgICAgIGBPbmx5IGh0dHA6IGFuZCBodHRwczogcHJvdG9jb2xzIGFyZSBzdXBwb3J0ZWRgO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yTWVzc2FnZSk7XG4gICAgfVxuXG4gICAgY29uc3QgaXNQYWNrYWdlQUZpbGUgPSAoYXdhaXQgZnMuc3RhdChuZXdBcHApKS5pc0ZpbGUoKTtcbiAgICBpZiAoaXNQYWNrYWdlQUZpbGUpIHtcbiAgICAgIHBhY2thZ2VIYXNoID0gYXdhaXQgY2FsY3VsYXRlRmlsZUludGVncml0eShuZXdBcHApO1xuICAgIH1cblxuICAgIGlmIChpc1BhY2thZ2VBRmlsZSAmJiBzaG91bGRVbnppcEFwcCAmJiAhXy5pc0Z1bmN0aW9uKG9uUG9zdFByb2Nlc3MpKSB7XG4gICAgICBjb25zdCBhcmNoaXZlUGF0aCA9IG5ld0FwcDtcbiAgICAgIGlmIChwYWNrYWdlSGFzaCA9PT0gY2FjaGVkQXBwSW5mbz8ucGFja2FnZUhhc2gpIHtcbiAgICAgICAgY29uc3Qge2Z1bGxQYXRofSA9IGNhY2hlZEFwcEluZm87XG4gICAgICAgIGlmIChhd2FpdCBpc0FwcEludGVncml0eU9rKGZ1bGxQYXRoLCBjYWNoZWRBcHBJbmZvPy5pbnRlZ3JpdHkpKSB7XG4gICAgICAgICAgaWYgKGFyY2hpdmVQYXRoICE9PSBhcHApIHtcbiAgICAgICAgICAgIGF3YWl0IGZzLnJpbXJhZihhcmNoaXZlUGF0aCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxvZ2dlci5pbmZvKGBXaWxsIHJldXNlIHByZXZpb3VzbHkgY2FjaGVkIGFwcGxpY2F0aW9uIGF0ICcke2Z1bGxQYXRofSdgKTtcbiAgICAgICAgICByZXR1cm4gdmVyaWZ5QXBwRXh0ZW5zaW9uKGZ1bGxQYXRoLCBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBsb2dnZXIuaW5mbyhcbiAgICAgICAgICBgVGhlIGFwcGxpY2F0aW9uIGF0ICcke2Z1bGxQYXRofScgZG9lcyBub3QgZXhpc3QgYW55bW9yZSBgICtcbiAgICAgICAgICAgIGBvciBpdHMgaW50ZWdyaXR5IGhhcyBiZWVuIGRhbWFnZWQuIERlbGV0aW5nIGl0IGZyb20gdGhlIGNhY2hlYFxuICAgICAgICApO1xuICAgICAgICBBUFBMSUNBVElPTlNfQ0FDSEUuZGVsZXRlKGFwcCk7XG4gICAgICB9XG4gICAgICBjb25zdCB0bXBSb290ID0gYXdhaXQgdGVtcERpci5vcGVuRGlyKCk7XG4gICAgICB0cnkge1xuICAgICAgICBuZXdBcHAgPSBhd2FpdCB1bnppcEFwcChhcmNoaXZlUGF0aCwgdG1wUm9vdCwgc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucyk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpZiAobmV3QXBwICE9PSBhcmNoaXZlUGF0aCAmJiBhcmNoaXZlUGF0aCAhPT0gYXBwKSB7XG4gICAgICAgICAgYXdhaXQgZnMucmltcmFmKGFyY2hpdmVQYXRoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbG9nZ2VyLmluZm8oYFVuemlwcGVkIGxvY2FsIGFwcCB0byAnJHtuZXdBcHB9J2ApO1xuICAgIH0gZWxzZSBpZiAoIXBhdGguaXNBYnNvbHV0ZShuZXdBcHApKSB7XG4gICAgICBuZXdBcHAgPSBwYXRoLnJlc29sdmUocHJvY2Vzcy5jd2QoKSwgbmV3QXBwKTtcbiAgICAgIGxvZ2dlci53YXJuKFxuICAgICAgICBgVGhlIGN1cnJlbnQgYXBwbGljYXRpb24gcGF0aCAnJHthcHB9JyBpcyBub3QgYWJzb2x1dGUgYCArXG4gICAgICAgICAgYGFuZCBoYXMgYmVlbiByZXdyaXR0ZW4gdG8gJyR7bmV3QXBwfScuIENvbnNpZGVyIHVzaW5nIGFic29sdXRlIHBhdGhzIHJhdGhlciB0aGFuIHJlbGF0aXZlYFxuICAgICAgKTtcbiAgICAgIGFwcCA9IG5ld0FwcDtcbiAgICB9XG5cbiAgICBjb25zdCBzdG9yZUFwcEluQ2FjaGUgPSBhc3luYyAoYXBwUGF0aFRvQ2FjaGUpID0+IHtcbiAgICAgIGNvbnN0IGNhY2hlZEZ1bGxQYXRoID0gY2FjaGVkQXBwSW5mbz8uZnVsbFBhdGg7XG4gICAgICBpZiAoY2FjaGVkRnVsbFBhdGggJiYgY2FjaGVkRnVsbFBhdGggIT09IGFwcFBhdGhUb0NhY2hlKSB7XG4gICAgICAgIGF3YWl0IGZzLnJpbXJhZihjYWNoZWRGdWxsUGF0aCk7XG4gICAgICB9XG4gICAgICBjb25zdCBpbnRlZ3JpdHkgPSB7fTtcbiAgICAgIGlmICgoYXdhaXQgZnMuc3RhdChhcHBQYXRoVG9DYWNoZSkpLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgaW50ZWdyaXR5LmZvbGRlciA9IGF3YWl0IGNhbGN1bGF0ZUZvbGRlckludGVncml0eShhcHBQYXRoVG9DYWNoZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbnRlZ3JpdHkuZmlsZSA9IGF3YWl0IGNhbGN1bGF0ZUZpbGVJbnRlZ3JpdHkoYXBwUGF0aFRvQ2FjaGUpO1xuICAgICAgfVxuICAgICAgQVBQTElDQVRJT05TX0NBQ0hFLnNldChhcHAsIHtcbiAgICAgICAgLi4ucmVtb3RlQXBwUHJvcHMsXG4gICAgICAgIHRpbWVzdGFtcDogRGF0ZS5ub3coKSxcbiAgICAgICAgcGFja2FnZUhhc2gsXG4gICAgICAgIGludGVncml0eSxcbiAgICAgICAgZnVsbFBhdGg6IGFwcFBhdGhUb0NhY2hlLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gYXBwUGF0aFRvQ2FjaGU7XG4gICAgfTtcblxuICAgIGlmIChfLmlzRnVuY3Rpb24ob25Qb3N0UHJvY2VzcykpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG9uUG9zdFByb2Nlc3Moe1xuICAgICAgICBjYWNoZWRBcHBJbmZvOiBfLmNsb25lKGNhY2hlZEFwcEluZm8pLFxuICAgICAgICBpc1VybCxcbiAgICAgICAgaGVhZGVyczogXy5jbG9uZShoZWFkZXJzKSxcbiAgICAgICAgYXBwUGF0aDogbmV3QXBwLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gIXJlc3VsdD8uYXBwUGF0aCB8fCBhcHAgPT09IHJlc3VsdD8uYXBwUGF0aCB8fCAhKGF3YWl0IGZzLmV4aXN0cyhyZXN1bHQ/LmFwcFBhdGgpKVxuICAgICAgICA/IG5ld0FwcFxuICAgICAgICA6IGF3YWl0IHN0b3JlQXBwSW5DYWNoZShyZXN1bHQuYXBwUGF0aCk7XG4gICAgfVxuXG4gICAgdmVyaWZ5QXBwRXh0ZW5zaW9uKG5ld0FwcCwgc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucyk7XG4gICAgcmV0dXJuIGFwcCAhPT0gbmV3QXBwICYmIChwYWNrYWdlSGFzaCB8fCBfLnZhbHVlcyhyZW1vdGVBcHBQcm9wcykuc29tZShCb29sZWFuKSlcbiAgICAgID8gYXdhaXQgc3RvcmVBcHBJbkNhY2hlKG5ld0FwcClcbiAgICAgIDogbmV3QXBwO1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZG93bmxvYWRBcHAoYXBwLCB0YXJnZXRQYXRoKSB7XG4gIGNvbnN0IHtocmVmfSA9IHVybC5wYXJzZShhcHApO1xuICB0cnkge1xuICAgIGF3YWl0IG5ldC5kb3dubG9hZEZpbGUoaHJlZiwgdGFyZ2V0UGF0aCwge1xuICAgICAgdGltZW91dDogQVBQX0RPV05MT0FEX1RJTUVPVVRfTVMsXG4gICAgfSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGRvd25sb2FkIHRoZSBhcHA6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIH1cbiAgcmV0dXJuIHRhcmdldFBhdGg7XG59XG5cbi8qKlxuICogRXh0cmFjdHMgdGhlIGJ1bmRsZSBmcm9tIGFuIGFyY2hpdmUgaW50byB0aGUgZ2l2ZW4gZm9sZGVyXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHppcFBhdGggRnVsbCBwYXRoIHRvIHRoZSBhcmNoaXZlIGNvbnRhaW5pbmcgdGhlIGJ1bmRsZVxuICogQHBhcmFtIHtzdHJpbmd9IGRzdFJvb3QgRnVsbCBwYXRoIHRvIHRoZSBmb2xkZXIgd2hlcmUgdGhlIGV4dHJhY3RlZCBidW5kbGVcbiAqIHNob3VsZCBiZSBwbGFjZWRcbiAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPnxzdHJpbmd9IHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMgVGhlIGxpc3Qgb2YgZXh0ZW5zaW9uc1xuICogdGhlIHRhcmdldCBhcHBsaWNhdGlvbiBidW5kbGUgc3VwcG9ydHMsIGZvciBleGFtcGxlIFsnLmFwaycsICcuYXBrcyddIGZvclxuICogQW5kcm9pZCBwYWNrYWdlc1xuICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPn0gRnVsbCBwYXRoIHRvIHRoZSBidW5kbGUgaW4gdGhlIGRlc3RpbmF0aW9uIGZvbGRlclxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBnaXZlbiBhcmNoaXZlIGlzIGludmFsaWQgb3Igbm8gYXBwbGljYXRpb24gYnVuZGxlc1xuICogaGF2ZSBiZWVuIGZvdW5kIGluc2lkZVxuICovXG5hc3luYyBmdW5jdGlvbiB1bnppcEFwcCh6aXBQYXRoLCBkc3RSb290LCBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zKSB7XG4gIGF3YWl0IHppcC5hc3NlcnRWYWxpZFppcCh6aXBQYXRoKTtcblxuICBpZiAoIV8uaXNBcnJheShzdXBwb3J0ZWRBcHBFeHRlbnNpb25zKSkge1xuICAgIHN1cHBvcnRlZEFwcEV4dGVuc2lvbnMgPSBbc3VwcG9ydGVkQXBwRXh0ZW5zaW9uc107XG4gIH1cblxuICBjb25zdCB0bXBSb290ID0gYXdhaXQgdGVtcERpci5vcGVuRGlyKCk7XG4gIHRyeSB7XG4gICAgbG9nZ2VyLmRlYnVnKGBVbnppcHBpbmcgJyR7emlwUGF0aH0nYCk7XG4gICAgY29uc3QgdGltZXIgPSBuZXcgdGltaW5nLlRpbWVyKCkuc3RhcnQoKTtcbiAgICBjb25zdCB1c2VTeXN0ZW1VbnppcEVudiA9IHByb2Nlc3MuZW52LkFQUElVTV9QUkVGRVJfU1lTVEVNX1VOWklQO1xuICAgIGNvbnN0IHVzZVN5c3RlbVVuemlwID1cbiAgICAgIF8uaXNFbXB0eSh1c2VTeXN0ZW1VbnppcEVudikgfHwgIVsnMCcsICdmYWxzZSddLmluY2x1ZGVzKF8udG9Mb3dlcih1c2VTeXN0ZW1VbnppcEVudikpO1xuICAgIC8qKlxuICAgICAqIEF0dGVtcHQgdG8gdXNlIHVzZSB0aGUgc3lzdGVtIGB1bnppcGAgKGUuZy4sIGAvdXNyL2Jpbi91bnppcGApIGR1ZVxuICAgICAqIHRvIHRoZSBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudCBpdCBwcm92aWRlcyBvdmVyIHRoZSBuYXRpdmVcbiAgICAgKiBKUyBcInVuemlwXCIgaW1wbGVtZW50YXRpb24uXG4gICAgICogQHR5cGUge2ltcG9ydCgnQGFwcGl1bS9zdXBwb3J0L2xpYi96aXAnKS5FeHRyYWN0QWxsT3B0aW9uc31cbiAgICAgKi9cbiAgICBjb25zdCBleHRyYWN0aW9uT3B0cyA9IHt1c2VTeXN0ZW1VbnppcH07XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FwcGl1bS9hcHBpdW0vaXNzdWVzLzE0MTAwXG4gICAgaWYgKHBhdGguZXh0bmFtZSh6aXBQYXRoKSA9PT0gSVBBX0VYVCkge1xuICAgICAgbG9nZ2VyLmRlYnVnKFxuICAgICAgICBgRW5mb3JjaW5nIFVURi04IGVuY29kaW5nIG9uIHRoZSBleHRyYWN0ZWQgZmlsZSBuYW1lcyBmb3IgJyR7cGF0aC5iYXNlbmFtZSh6aXBQYXRoKX0nYFxuICAgICAgKTtcbiAgICAgIGV4dHJhY3Rpb25PcHRzLmZpbGVOYW1lc0VuY29kaW5nID0gJ3V0ZjgnO1xuICAgIH1cbiAgICBhd2FpdCB6aXAuZXh0cmFjdEFsbFRvKHppcFBhdGgsIHRtcFJvb3QsIGV4dHJhY3Rpb25PcHRzKTtcbiAgICBjb25zdCBnbG9iUGF0dGVybiA9IGAqKi8qLisoJHtzdXBwb3J0ZWRBcHBFeHRlbnNpb25zXG4gICAgICAubWFwKChleHQpID0+IGV4dC5yZXBsYWNlKC9eXFwuLywgJycpKVxuICAgICAgLmpvaW4oJ3wnKX0pYDtcbiAgICBjb25zdCBzb3J0ZWRCdW5kbGVJdGVtcyA9IChcbiAgICAgIGF3YWl0IGZzLmdsb2IoZ2xvYlBhdHRlcm4sIHtcbiAgICAgICAgY3dkOiB0bXBSb290LFxuICAgICAgICBzdHJpY3Q6IGZhbHNlLFxuICAgICAgICAvLyBHZXQgdGhlIHRvcCBsZXZlbCBtYXRjaFxuICAgICAgfSlcbiAgICApLnNvcnQoKGEsIGIpID0+IGEuc3BsaXQocGF0aC5zZXApLmxlbmd0aCAtIGIuc3BsaXQocGF0aC5zZXApLmxlbmd0aCk7XG4gICAgaWYgKF8uaXNFbXB0eShzb3J0ZWRCdW5kbGVJdGVtcykpIHtcbiAgICAgIGxvZ2dlci5lcnJvckFuZFRocm93KFxuICAgICAgICBgQXBwIHVuemlwcGVkIE9LLCBidXQgd2UgY291bGQgbm90IGZpbmQgYW55ICcke3N1cHBvcnRlZEFwcEV4dGVuc2lvbnN9JyBgICtcbiAgICAgICAgICB1dGlsLnBsdXJhbGl6ZSgnYnVuZGxlJywgc3VwcG9ydGVkQXBwRXh0ZW5zaW9ucy5sZW5ndGgsIGZhbHNlKSArXG4gICAgICAgICAgYCBpbiBpdC4gTWFrZSBzdXJlIHlvdXIgYXJjaGl2ZSBjb250YWlucyBhdCBsZWFzdCBvbmUgcGFja2FnZSBoYXZpbmcgYCArXG4gICAgICAgICAgYCcke3N1cHBvcnRlZEFwcEV4dGVuc2lvbnN9JyAke3V0aWwucGx1cmFsaXplKFxuICAgICAgICAgICAgJ2V4dGVuc2lvbicsXG4gICAgICAgICAgICBzdXBwb3J0ZWRBcHBFeHRlbnNpb25zLmxlbmd0aCxcbiAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgKX1gXG4gICAgICApO1xuICAgIH1cbiAgICBsb2dnZXIuZGVidWcoXG4gICAgICBgRXh0cmFjdGVkICR7dXRpbC5wbHVyYWxpemUoJ2J1bmRsZSBpdGVtJywgc29ydGVkQnVuZGxlSXRlbXMubGVuZ3RoLCB0cnVlKX0gYCArXG4gICAgICAgIGBmcm9tICcke3ppcFBhdGh9JyBpbiAke01hdGgucm91bmQoXG4gICAgICAgICAgdGltZXIuZ2V0RHVyYXRpb24oKS5hc01pbGxpU2Vjb25kc1xuICAgICAgICApfW1zOiAke3NvcnRlZEJ1bmRsZUl0ZW1zfWBcbiAgICApO1xuICAgIGNvbnN0IG1hdGNoZWRCdW5kbGUgPSAvKiogQHR5cGUge3N0cmluZ30gKi8gKF8uZmlyc3Qoc29ydGVkQnVuZGxlSXRlbXMpKTtcbiAgICBsb2dnZXIuaW5mbyhgQXNzdW1pbmcgJyR7bWF0Y2hlZEJ1bmRsZX0nIGlzIHRoZSBjb3JyZWN0IGJ1bmRsZWApO1xuICAgIGNvbnN0IGRzdFBhdGggPSBwYXRoLnJlc29sdmUoZHN0Um9vdCwgcGF0aC5iYXNlbmFtZShtYXRjaGVkQnVuZGxlKSk7XG4gICAgYXdhaXQgZnMubXYocGF0aC5yZXNvbHZlKHRtcFJvb3QsIG1hdGNoZWRCdW5kbGUpLCBkc3RQYXRoLCB7bWtkaXJwOiB0cnVlfSk7XG4gICAgcmV0dXJuIGRzdFBhdGg7XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgZnMucmltcmFmKHRtcFJvb3QpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzUGFja2FnZU9yQnVuZGxlKGFwcCkge1xuICByZXR1cm4gL14oW2EtekEtWjAtOVxcLV9dK1xcLlthLXpBLVowLTlcXC1fXSspKyQvLnRlc3QoYXBwKTtcbn1cblxuLyoqXG4gKiBGaW5kcyBhbGwgaW5zdGFuY2VzICdmaXJzdEtleScgYW5kIGNyZWF0ZSBhIGR1cGxpY2F0ZSB3aXRoIHRoZSBrZXkgJ3NlY29uZEtleScsXG4gKiBEbyB0aGUgc2FtZSB0aGluZyBpbiByZXZlcnNlLiBJZiB3ZSBmaW5kICdzZWNvbmRLZXknLCBjcmVhdGUgYSBkdXBsaWNhdGUgd2l0aCB0aGUga2V5ICdmaXJzdEtleScuXG4gKlxuICogVGhpcyB3aWxsIGNhdXNlIGtleXMgdG8gYmUgb3ZlcndyaXR0ZW4gaWYgdGhlIG9iamVjdCBjb250YWlucyAnZmlyc3RLZXknIGFuZCAnc2Vjb25kS2V5Jy5cblxuICogQHBhcmFtIHsqfSBpbnB1dCBBbnkgdHlwZSBvZiBpbnB1dFxuICogQHBhcmFtIHtTdHJpbmd9IGZpcnN0S2V5IFRoZSBmaXJzdCBrZXkgdG8gZHVwbGljYXRlXG4gKiBAcGFyYW0ge1N0cmluZ30gc2Vjb25kS2V5IFRoZSBzZWNvbmQga2V5IHRvIGR1cGxpY2F0ZVxuICovXG5mdW5jdGlvbiBkdXBsaWNhdGVLZXlzKGlucHV0LCBmaXJzdEtleSwgc2Vjb25kS2V5KSB7XG4gIC8vIElmIGFycmF5IHByb3ZpZGVkLCByZWN1cnNpdmVseSBjYWxsIG9uIGFsbCBlbGVtZW50c1xuICBpZiAoXy5pc0FycmF5KGlucHV0KSkge1xuICAgIHJldHVybiBpbnB1dC5tYXAoKGl0ZW0pID0+IGR1cGxpY2F0ZUtleXMoaXRlbSwgZmlyc3RLZXksIHNlY29uZEtleSkpO1xuICB9XG5cbiAgLy8gSWYgb2JqZWN0LCBjcmVhdGUgZHVwbGljYXRlcyBmb3Iga2V5cyBhbmQgdGhlbiByZWN1cnNpdmVseSBjYWxsIG9uIHZhbHVlc1xuICBpZiAoXy5pc1BsYWluT2JqZWN0KGlucHV0KSkge1xuICAgIGNvbnN0IHJlc3VsdE9iaiA9IHt9O1xuICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBfLnRvUGFpcnMoaW5wdXQpKSB7XG4gICAgICBjb25zdCByZWN1cnNpdmVseUNhbGxlZFZhbHVlID0gZHVwbGljYXRlS2V5cyh2YWx1ZSwgZmlyc3RLZXksIHNlY29uZEtleSk7XG4gICAgICBpZiAoa2V5ID09PSBmaXJzdEtleSkge1xuICAgICAgICByZXN1bHRPYmpbc2Vjb25kS2V5XSA9IHJlY3Vyc2l2ZWx5Q2FsbGVkVmFsdWU7XG4gICAgICB9IGVsc2UgaWYgKGtleSA9PT0gc2Vjb25kS2V5KSB7XG4gICAgICAgIHJlc3VsdE9ialtmaXJzdEtleV0gPSByZWN1cnNpdmVseUNhbGxlZFZhbHVlO1xuICAgICAgfVxuICAgICAgcmVzdWx0T2JqW2tleV0gPSByZWN1cnNpdmVseUNhbGxlZFZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0T2JqO1xuICB9XG5cbiAgLy8gQmFzZSBjYXNlLiBSZXR1cm4gcHJpbWl0aXZlcyB3aXRob3V0IGRvaW5nIGFueXRoaW5nLlxuICByZXR1cm4gaW5wdXQ7XG59XG5cbi8qKlxuICogVGFrZXMgYSBkZXNpcmVkIGNhcGFiaWxpdHkgYW5kIHRyaWVzIHRvIEpTT04ucGFyc2UgaXQgYXMgYW4gYXJyYXksXG4gKiBhbmQgZWl0aGVyIHJldHVybnMgdGhlIHBhcnNlZCBhcnJheSBvciBhIHNpbmdsZXRvbiBhcnJheS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3xBcnJheTxTdHJpbmc+fSBjYXAgQSBkZXNpcmVkIGNhcGFiaWxpdHlcbiAqL1xuZnVuY3Rpb24gcGFyc2VDYXBzQXJyYXkoY2FwKSB7XG4gIGlmIChfLmlzQXJyYXkoY2FwKSkge1xuICAgIHJldHVybiBjYXA7XG4gIH1cblxuICBsZXQgcGFyc2VkQ2FwcztcbiAgdHJ5IHtcbiAgICBwYXJzZWRDYXBzID0gSlNPTi5wYXJzZShjYXApO1xuICAgIGlmIChfLmlzQXJyYXkocGFyc2VkQ2FwcykpIHtcbiAgICAgIHJldHVybiBwYXJzZWRDYXBzO1xuICAgIH1cbiAgfSBjYXRjaCAoaWduKSB7XG4gICAgbG9nZ2VyLndhcm4oYEZhaWxlZCB0byBwYXJzZSBjYXBhYmlsaXR5IGFzIEpTT04gYXJyYXlgKTtcbiAgfVxuICBpZiAoXy5pc1N0cmluZyhjYXApKSB7XG4gICAgcmV0dXJuIFtjYXBdO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgbXVzdCBwcm92aWRlIGEgc3RyaW5nIG9yIEpTT04gQXJyYXk7IHJlY2VpdmVkICR7Y2FwfWApO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEgc3RyaW5nIHRoYXQgdW5pcXVlbHkgZGVzY3JpYmVzIGRyaXZlciBpbnN0YW5jZVxuICpcbiAqIEBwYXJhbSB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuQ29yZX0gb2JqIGRyaXZlciBpbnN0YW5jZVxuICogQHBhcmFtIHtzdHJpbmc/fSBzZXNzaW9uSWQgc2Vzc2lvbiBpZGVudGlmaWVyIChpZiBleGlzdHMpXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZURyaXZlckxvZ1ByZWZpeChvYmosIHNlc3Npb25JZCA9IG51bGwpIHtcbiAgY29uc3QgaW5zdGFuY2VOYW1lID0gYCR7b2JqLmNvbnN0cnVjdG9yLm5hbWV9QCR7bm9kZS5nZXRPYmplY3RJZChvYmopLnN1YnN0cmluZygwLCA0KX1gO1xuICByZXR1cm4gc2Vzc2lvbklkID8gYCR7aW5zdGFuY2VOYW1lfSAoJHtzZXNzaW9uSWQuc3Vic3RyaW5nKDAsIDgpfSlgIDogaW5zdGFuY2VOYW1lO1xufVxuXG4vKiogQHR5cGUge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkRyaXZlckhlbHBlcnN9ICovXG5leHBvcnQgZGVmYXVsdCB7XG4gIGNvbmZpZ3VyZUFwcCxcbiAgaXNQYWNrYWdlT3JCdW5kbGUsXG4gIGR1cGxpY2F0ZUtleXMsXG4gIHBhcnNlQ2Fwc0FycmF5LFxuICBnZW5lcmF0ZURyaXZlckxvZ1ByZWZpeCxcbn07XG5leHBvcnQge2NvbmZpZ3VyZUFwcCwgaXNQYWNrYWdlT3JCdW5kbGUsIGR1cGxpY2F0ZUtleXMsIHBhcnNlQ2Fwc0FycmF5LCBnZW5lcmF0ZURyaXZlckxvZ1ByZWZpeH07XG5cbi8qKlxuICogQHR5cGVkZWYgUmVtb3RlQXBwUHJvcHNcbiAqIEBwcm9wZXJ0eSB7RGF0ZT99IGxhc3RNb2RpZmllZFxuICogQHByb3BlcnR5IHtib29sZWFufSBpbW11dGFibGVcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyP30gbWF4QWdlXG4gKi9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLE9BQU8sR0FBRyxNQUFoQjtBQUNBLE1BQU1DLFFBQVEsR0FBRyxDQUFDLE1BQUQsRUFBU0QsT0FBVCxDQUFqQjtBQUNBLE1BQU1FLGNBQWMsR0FBRyxDQUFDLGlCQUFELEVBQW9CLDhCQUFwQixFQUFvRCxpQkFBcEQsQ0FBdkI7QUFDQSxNQUFNQyxtQkFBbUIsR0FBRyxPQUFPLEVBQVAsR0FBWSxFQUFaLEdBQWlCLEVBQTdDO0FBQ0EsTUFBTUMsZUFBZSxHQUFHLElBQXhCO0FBQ0EsTUFBTUMsa0JBQWtCLEdBQUcsSUFBSUMsaUJBQUosQ0FBUTtFQUNqQ0MsR0FBRyxFQUFFSCxlQUQ0QjtFQUVqQ0ksR0FBRyxFQUFFTCxtQkFGNEI7RUFHakNNLGNBQWMsRUFBRSxJQUhpQjtFQUlqQ0MsT0FBTyxFQUFFLENBQUNDLEdBQUQsRUFBTTtJQUFDQztFQUFELENBQU4sS0FBcUI7SUFDNUJDLGVBQUEsQ0FBT0MsSUFBUCxDQUNHLG9CQUFtQkgsR0FBSSxnQkFBZUMsUUFBUyxRQUFoRCxH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
@@ -1,3 +1,3 @@
1
1
  export default log;
2
- declare const log: import("@appium/types").AppiumLogger;
2
+ declare const log: import("../../../types/build").AppiumLogger;
3
3
  //# sourceMappingURL=logger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../lib/basedriver/logger.js"],"names":[],"mappings":";AAEA,wDAA2C"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../lib/basedriver/logger.js"],"names":[],"mappings":";AAEA,+DAA2C"}
@@ -13,4 +13,4 @@ const log = _support.logger.getLogger('BaseDriver');
13
13
 
14
14
  var _default = log;
15
15
  exports.default = _default;
16
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9iYXNlZHJpdmVyL2xvZ2dlci5qcyJdLCJuYW1lcyI6WyJsb2ciLCJsb2dnZXIiLCJnZXRMb2dnZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUVBLE1BQU1BLEdBQUcsR0FBR0MsZ0JBQU9DLFNBQVAsQ0FBaUIsWUFBakIsQ0FBWjs7ZUFDZUYsRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGxvZ2dlciB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5cbmNvbnN0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ0Jhc2VEcml2ZXInKTtcbmV4cG9ydCBkZWZhdWx0IGxvZztcbiJdfQ==
16
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2ciLCJsb2dnZXIiLCJnZXRMb2dnZXIiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvYmFzZWRyaXZlci9sb2dnZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtsb2dnZXJ9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5cbmNvbnN0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ0Jhc2VEcml2ZXInKTtcbmV4cG9ydCBkZWZhdWx0IGxvZztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBRUEsTUFBTUEsR0FBRyxHQUFHQyxlQUFBLENBQU9DLFNBQVAsQ0FBaUIsWUFBakIsQ0FBWjs7ZUFDZUYsRyJ9
@@ -22,4 +22,4 @@ const PROTOCOLS = {
22
22
  exports.PROTOCOLS = PROTOCOLS;
23
23
  const DEFAULT_BASE_PATH = '';
24
24
  exports.DEFAULT_BASE_PATH = DEFAULT_BASE_PATH;
25
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9jb25zdGFudHMuanMiXSwibmFtZXMiOlsiTUFYX0xPR19CT0RZX0xFTkdUSCIsIk1KU09OV1BfRUxFTUVOVF9LRVkiLCJXM0NfRUxFTUVOVF9LRVkiLCJ1dGlsIiwiVzNDX1dFQl9FTEVNRU5UX0lERU5USUZJRVIiLCJQUk9UT0NPTFMiLCJXM0MiLCJNSlNPTldQIiwiREVGQVVMVF9CQVNFX1BBVEgiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQVFBLE1BQU1BLG1CQUFtQixHQUFHLElBQTVCOztBQUNBLE1BQU1DLG1CQUFtQixHQUFHLFNBQTVCOztBQUNBLE1BQU1DLGVBQWUsR0FBR0MsY0FBS0MsMEJBQTdCOztBQUNBLE1BQU1DLFNBQVMsR0FBRztBQUNoQkMsRUFBQUEsR0FBRyxFQUFFLEtBRFc7QUFFaEJDLEVBQUFBLE9BQU8sRUFBRTtBQUZPLENBQWxCOztBQU1BLE1BQU1DLGlCQUFpQixHQUFHLEVBQTFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5cbi8vIFRoZSBkZWZhdWx0IG1heGltdW0gbGVuZ3RoIG9mIGEgc2luZ2xlIGxvZyByZWNvcmRcbi8vIGNvbnRhaW5pbmcgaHR0cCByZXF1ZXN0L3Jlc3BvbnNlIGJvZHlcbi8vIFRoaXMgdmFsdWUgY291bGQgYmUgZ2xvYmFsbHkgY3VzdG9taXplZCB1c2luZyB0aGUgLS1sb2ctZmlsdGVyc1xuLy8gc2VydmVyIGZlYXR1cmUuIEV4YW1wbGUgcnVsZTpcbi8vIFx0e1wicGF0dGVyblwiOiBcIiguezEsMTUwfSkuKlwiLCBcImZsYWdzXCI6IFwic1wiLCBcInJlcGxhY2VyXCI6IFwiJDFcIn1cbi8vIF4gY3V0cyBhbGwgbG9nIHJlY29yZHMgdG8gbWF4aW11bSAxNTAgY2hhcnNcbmNvbnN0IE1BWF9MT0dfQk9EWV9MRU5HVEggPSAxMDI0O1xuY29uc3QgTUpTT05XUF9FTEVNRU5UX0tFWSA9ICdFTEVNRU5UJztcbmNvbnN0IFczQ19FTEVNRU5UX0tFWSA9IHV0aWwuVzNDX1dFQl9FTEVNRU5UX0lERU5USUZJRVI7XG5jb25zdCBQUk9UT0NPTFMgPSB7XG4gIFczQzogJ1czQycsXG4gIE1KU09OV1A6ICdNSlNPTldQJyxcbn07XG5cbi8vIEJlZm9yZSBBcHBpdW0gMi4wLCB0aGlzIGRlZmF1bHQgdmFsdWUgd2FzICcvd2QvaHViJyBieSBoaXN0b3JpY2FsIHJlYXNvbnMuXG5jb25zdCBERUZBVUxUX0JBU0VfUEFUSCA9ICcnO1xuXG5cbmV4cG9ydCB7XG4gIE1BWF9MT0dfQk9EWV9MRU5HVEgsIE1KU09OV1BfRUxFTUVOVF9LRVksIFczQ19FTEVNRU5UX0tFWSxcbiAgUFJPVE9DT0xTLCBERUZBVUxUX0JBU0VfUEFUSFxufTtcbiJdfQ==
25
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNQVhfTE9HX0JPRFlfTEVOR1RIIiwiTUpTT05XUF9FTEVNRU5UX0tFWSIsIlczQ19FTEVNRU5UX0tFWSIsInV0aWwiLCJXM0NfV0VCX0VMRU1FTlRfSURFTlRJRklFUiIsIlBST1RPQ09MUyIsIlczQyIsIk1KU09OV1AiLCJERUZBVUxUX0JBU0VfUEFUSCJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9jb25zdGFudHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt1dGlsfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuXG4vLyBUaGUgZGVmYXVsdCBtYXhpbXVtIGxlbmd0aCBvZiBhIHNpbmdsZSBsb2cgcmVjb3JkXG4vLyBjb250YWluaW5nIGh0dHAgcmVxdWVzdC9yZXNwb25zZSBib2R5XG4vLyBUaGlzIHZhbHVlIGNvdWxkIGJlIGdsb2JhbGx5IGN1c3RvbWl6ZWQgdXNpbmcgdGhlIC0tbG9nLWZpbHRlcnNcbi8vIHNlcnZlciBmZWF0dXJlLiBFeGFtcGxlIHJ1bGU6XG4vLyBcdHtcInBhdHRlcm5cIjogXCIoLnsxLDE1MH0pLipcIiwgXCJmbGFnc1wiOiBcInNcIiwgXCJyZXBsYWNlclwiOiBcIiQxXCJ9XG4vLyBeIGN1dHMgYWxsIGxvZyByZWNvcmRzIHRvIG1heGltdW0gMTUwIGNoYXJzXG5jb25zdCBNQVhfTE9HX0JPRFlfTEVOR1RIID0gMTAyNDtcbmNvbnN0IE1KU09OV1BfRUxFTUVOVF9LRVkgPSAnRUxFTUVOVCc7XG5jb25zdCBXM0NfRUxFTUVOVF9LRVkgPSB1dGlsLlczQ19XRUJfRUxFTUVOVF9JREVOVElGSUVSO1xuY29uc3QgUFJPVE9DT0xTID0ge1xuICBXM0M6ICdXM0MnLFxuICBNSlNPTldQOiAnTUpTT05XUCcsXG59O1xuXG4vLyBCZWZvcmUgQXBwaXVtIDIuMCwgdGhpcyBkZWZhdWx0IHZhbHVlIHdhcyAnL3dkL2h1YicgYnkgaGlzdG9yaWNhbCByZWFzb25zLlxuY29uc3QgREVGQVVMVF9CQVNFX1BBVEggPSAnJztcblxuZXhwb3J0IHtNQVhfTE9HX0JPRFlfTEVOR1RILCBNSlNPTldQX0VMRU1FTlRfS0VZLCBXM0NfRUxFTUVOVF9LRVksIFBST1RPQ09MUywgREVGQVVMVF9CQVNFX1BBVEh9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFRQSxNQUFNQSxtQkFBbUIsR0FBRyxJQUE1Qjs7QUFDQSxNQUFNQyxtQkFBbUIsR0FBRyxTQUE1Qjs7QUFDQSxNQUFNQyxlQUFlLEdBQUdDLGFBQUEsQ0FBS0MsMEJBQTdCOztBQUNBLE1BQU1DLFNBQVMsR0FBRztFQUNoQkMsR0FBRyxFQUFFLEtBRFc7RUFFaEJDLE9BQU8sRUFBRTtBQUZPLENBQWxCOztBQU1BLE1BQU1DLGlCQUFpQixHQUFHLEVBQTFCIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"crash.d.ts","sourceRoot":"","sources":["../../../lib/express/crash.js"],"names":[],"mappings":"AAGA,qCAEC;AAED,qCAEC"}
1
+ {"version":3,"file":"crash.d.ts","sourceRoot":"","sources":["../../../lib/express/crash.js"],"names":[],"mappings":"AAEA,qCAEC;AAED,qCAEC"}
@@ -17,4 +17,4 @@ function produceError() {
17
17
  function produceCrash() {
18
18
  throw new Error('We just tried to crash Appium!');
19
19
  }
20
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9leHByZXNzL2NyYXNoLmpzIl0sIm5hbWVzIjpbInByb2R1Y2VFcnJvciIsImVycm9ycyIsIlVua25vd25Db21tYW5kRXJyb3IiLCJwcm9kdWNlQ3Jhc2giLCJFcnJvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBOztBQUdBLFNBQVNBLFlBQVQsR0FBeUI7QUFDdkIsUUFBTSxJQUFJQyxpQkFBT0MsbUJBQVgsQ0FBK0Isb0NBQS9CLENBQU47QUFDRDs7QUFFRCxTQUFTQyxZQUFULEdBQXlCO0FBQ3ZCLFFBQU0sSUFBSUMsS0FBSixDQUFVLGdDQUFWLENBQU47QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVycm9ycyB9IGZyb20gJy4uL3Byb3RvY29sJztcblxuXG5mdW5jdGlvbiBwcm9kdWNlRXJyb3IgKCkge1xuICB0aHJvdyBuZXcgZXJyb3JzLlVua25vd25Db21tYW5kRXJyb3IoJ1Byb2R1Y2VkIGdlbmVyaWMgZXJyb3IgZm9yIHRlc3RpbmcnKTtcbn1cblxuZnVuY3Rpb24gcHJvZHVjZUNyYXNoICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdXZSBqdXN0IHRyaWVkIHRvIGNyYXNoIEFwcGl1bSEnKTtcbn1cblxuXG5leHBvcnQgeyBwcm9kdWNlRXJyb3IsIHByb2R1Y2VDcmFzaCB9O1xuIl19
20
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwcm9kdWNlRXJyb3IiLCJlcnJvcnMiLCJVbmtub3duQ29tbWFuZEVycm9yIiwicHJvZHVjZUNyYXNoIiwiRXJyb3IiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZXhwcmVzcy9jcmFzaC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2Vycm9yc30gZnJvbSAnLi4vcHJvdG9jb2wnO1xuXG5mdW5jdGlvbiBwcm9kdWNlRXJyb3IoKSB7XG4gIHRocm93IG5ldyBlcnJvcnMuVW5rbm93bkNvbW1hbmRFcnJvcignUHJvZHVjZWQgZ2VuZXJpYyBlcnJvciBmb3IgdGVzdGluZycpO1xufVxuXG5mdW5jdGlvbiBwcm9kdWNlQ3Jhc2goKSB7XG4gIHRocm93IG5ldyBFcnJvcignV2UganVzdCB0cmllZCB0byBjcmFzaCBBcHBpdW0hJyk7XG59XG5cbmV4cG9ydCB7cHJvZHVjZUVycm9yLCBwcm9kdWNlQ3Jhc2h9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7O0FBRUEsU0FBU0EsWUFBVCxHQUF3QjtFQUN0QixNQUFNLElBQUlDLGdCQUFBLENBQU9DLG1CQUFYLENBQStCLG9DQUEvQixDQUFOO0FBQ0Q7O0FBRUQsU0FBU0MsWUFBVCxHQUF3QjtFQUN0QixNQUFNLElBQUlDLEtBQUosQ0FBVSxnQ0FBVixDQUFOO0FBQ0QifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"express-logging.d.ts","sourceRoot":"","sources":["../../../lib/express/express-logging.js"],"names":[],"mappings":"AAoCA,kCAGG;AAIH,oCAWsB"}
1
+ {"version":3,"file":"express-logging.d.ts","sourceRoot":"","sources":["../../../lib/express/express-logging.js"],"names":[],"mappings":"AAoCA,kCAEG;AAIH,oCAcE"}
@@ -67,4 +67,4 @@ const startLogFormatter = (0, _morgan.default)((tokens, req, res) => {
67
67
  immediate: true
68
68
  });
69
69
  exports.startLogFormatter = startLogFormatter;
70
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9leHByZXNzL2V4cHJlc3MtbG9nZ2luZy5qcyJdLCJuYW1lcyI6WyJjb21waWxlIiwiZm10IiwicmVwbGFjZSIsIl8iLCJuYW1lIiwiYXJnIiwianMiLCJGdW5jdGlvbiIsInJlcXVlc3RFbmRMb2dnaW5nRm9ybWF0IiwidG9rZW5zIiwicmVxIiwicmVzIiwic3RhdHVzIiwic3RhdHVzQ29kZSIsInN0YXR1c1N0ciIsInJlZCIsInllbGxvdyIsImN5YW4iLCJncmVlbiIsImZuIiwid2hpdGUiLCJncmV5IiwiZW5kTG9nRm9ybWF0dGVyIiwibG9nIiwiaW5mbyIsImpzb25SZXNwIiwicmVxdWVzdFN0YXJ0TG9nZ2luZ0Zvcm1hdCIsInN0YXJ0TG9nRm9ybWF0dGVyIiwicmVxQm9keSIsImJvZHkiLCJ0cnVuY2F0ZSIsImlzU3RyaW5nIiwiSlNPTiIsInN0cmluZ2lmeSIsImxlbmd0aCIsIk1BWF9MT0dfQk9EWV9MRU5HVEgiLCJpZ24iLCJpbW1lZGlhdGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBS0EsU0FBU0EsT0FBVCxDQUFrQkMsR0FBbEIsRUFBdUI7QUFFckJBLEVBQUFBLEdBQUcsR0FBR0EsR0FBRyxDQUFDQyxPQUFKLENBQVksSUFBWixFQUFrQixLQUFsQixDQUFOO0FBQ0FELEVBQUFBLEdBQUcsR0FBR0EsR0FBRyxDQUFDQyxPQUFKLENBQVksZ0NBQVosRUFDSixTQUFTQSxPQUFULENBQWtCQyxDQUFsQixFQUFxQkMsSUFBckIsRUFBMkJDLEdBQTNCLEVBQWdDO0FBQzlCLFdBQVEscUJBQW9CRCxJQUFLLGlCQUFnQkMsR0FBSSxnQkFBckQ7QUFDRCxHQUhHLENBQU47QUFJQSxNQUFJQyxFQUFFLEdBQUksYUFBWUwsR0FBSSxJQUExQjtBQUNBLFNBQU8sSUFBSU0sUUFBSixDQUFhLGtCQUFiLEVBQWlDRCxFQUFqQyxDQUFQO0FBQ0Q7O0FBRUQsU0FBU0UsdUJBQVQsQ0FBa0NDLE1BQWxDLEVBQTBDQyxHQUExQyxFQUErQ0MsR0FBL0MsRUFBb0Q7QUFDbEQsTUFBSUMsTUFBTSxHQUFHRCxHQUFHLENBQUNFLFVBQWpCO0FBQ0EsTUFBSUMsU0FBUyxHQUFHLFNBQWhCOztBQUNBLE1BQUlGLE1BQU0sSUFBSSxHQUFkLEVBQW1CO0FBQ2pCRSxJQUFBQSxTQUFTLEdBQUdBLFNBQVMsQ0FBQ0MsR0FBdEI7QUFDRCxHQUZELE1BRU8sSUFBSUgsTUFBTSxJQUFJLEdBQWQsRUFBbUI7QUFDeEJFLElBQUFBLFNBQVMsR0FBR0EsU0FBUyxDQUFDRSxNQUF0QjtBQUNELEdBRk0sTUFFQSxJQUFJSixNQUFNLElBQUksR0FBZCxFQUFtQjtBQUN4QkUsSUFBQUEsU0FBUyxHQUFHQSxTQUFTLENBQUNHLElBQXRCO0FBQ0QsR0FGTSxNQUVBO0FBQ0xILElBQUFBLFNBQVMsR0FBR0EsU0FBUyxDQUFDSSxLQUF0QjtBQUNEOztBQUNELE1BQUlDLEVBQUUsR0FBR25CLE9BQU8sQ0FBRSxHQUFFLG9CQUFvQm9CLEtBQU0sR0FBRU4sU0FBVSxJQUFHLDJDQUEyQ08sSUFBSyxFQUE3RixDQUFoQjtBQUNBLFNBQU9GLEVBQUUsQ0FBQ1YsTUFBRCxFQUFTQyxHQUFULEVBQWNDLEdBQWQsQ0FBVDtBQUNEOztBQUVELE1BQU1XLGVBQWUsR0FBRyxxQkFBTyxDQUFDYixNQUFELEVBQVNDLEdBQVQsRUFBY0MsR0FBZCxLQUFzQjtBQUNuRFksa0JBQUlDLElBQUosQ0FBU2hCLHVCQUF1QixDQUFDQyxNQUFELEVBQVNDLEdBQVQsRUFBY0MsR0FBZCxDQUFoQyxFQUNFLENBQUNBLEdBQUcsQ0FBQ2MsUUFBSixJQUFnQixFQUFqQixFQUFxQkosSUFEdkI7QUFFRCxDQUh1QixDQUF4Qjs7QUFLQSxNQUFNSyx5QkFBeUIsR0FBRzFCLE9BQU8sQ0FBRSxHQUFFLE1BQU1vQixLQUFNLElBQUcsVUFBVUEsS0FBTSxJQUFHLE9BQU9BLEtBQU0sRUFBbkQsQ0FBekM7QUFFQSxNQUFNTyxpQkFBaUIsR0FBRyxxQkFBTyxDQUFDbEIsTUFBRCxFQUFTQyxHQUFULEVBQWNDLEdBQWQsS0FBc0I7QUFFckQsTUFBSWlCLE9BQU8sR0FBRyxFQUFkOztBQUNBLE1BQUlsQixHQUFHLENBQUNtQixJQUFSLEVBQWM7QUFDWixRQUFJO0FBQ0ZELE1BQUFBLE9BQU8sR0FBR3pCLGdCQUFFMkIsUUFBRixDQUFXM0IsZ0JBQUU0QixRQUFGLENBQVdyQixHQUFHLENBQUNtQixJQUFmLElBQXVCbkIsR0FBRyxDQUFDbUIsSUFBM0IsR0FBa0NHLElBQUksQ0FBQ0MsU0FBTCxDQUFldkIsR0FBRyxDQUFDbUIsSUFBbkIsQ0FBN0MsRUFBdUU7QUFDL0VLLFFBQUFBLE1BQU0sRUFBRUM7QUFEdUUsT0FBdkUsQ0FBVjtBQUdELEtBSkQsQ0FJRSxPQUFPQyxHQUFQLEVBQVksQ0FBRTtBQUNqQjs7QUFDRGIsa0JBQUlDLElBQUosQ0FBU0UseUJBQXlCLENBQUNqQixNQUFELEVBQVNDLEdBQVQsRUFBY0MsR0FBZCxDQUFsQyxFQUFzRGlCLE9BQU8sQ0FBQ1AsSUFBOUQ7QUFDRCxDQVh5QixFQVd2QjtBQUFDZ0IsRUFBQUEsU0FBUyxFQUFFO0FBQVosQ0FYdUIsQ0FBMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0ICdAY29sb3JzL2NvbG9ycyc7XG5pbXBvcnQgbW9yZ2FuIGZyb20gJ21vcmdhbic7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7IE1BWF9MT0dfQk9EWV9MRU5HVEggfSBmcm9tICcuLi9jb25zdGFudHMnO1xuXG5cbi8vIENvcGllZCB0aGUgbW9yZ2FuIGNvbXBpbGUgZnVuY3Rpb24gb3ZlciBzbyB0aGF0IGNvb2xlciBmb3JtYXRzXG4vLyBtYXkgYmUgY29uZmlndXJlZFxuZnVuY3Rpb24gY29tcGlsZSAoZm10KSB7XG4gIC8vIGVzY2FwZSBxdW90ZXNcbiAgZm10ID0gZm10LnJlcGxhY2UoL1wiL2csICdcXFxcXCInKTtcbiAgZm10ID0gZm10LnJlcGxhY2UoLzooWy1cXHddezIsfSkoPzpcXFsoW15cXF1dKylcXF0pPy9nLFxuICAgIGZ1bmN0aW9uIHJlcGxhY2UgKF8sIG5hbWUsIGFyZykge1xuICAgICAgcmV0dXJuIGBcIlxcbiAgICArICh0b2tlbnNbXCIke25hbWV9XCJdKHJlcSwgcmVzLCBcIiR7YXJnfVwiKSB8fCBcIi1cIikgKyBcImA7XG4gICAgfSk7XG4gIGxldCBqcyA9IGAgIHJldHVybiBcIiR7Zm10fVwiO2A7XG4gIHJldHVybiBuZXcgRnVuY3Rpb24oJ3Rva2VucywgcmVxLCByZXMnLCBqcyk7XG59XG5cbmZ1bmN0aW9uIHJlcXVlc3RFbmRMb2dnaW5nRm9ybWF0ICh0b2tlbnMsIHJlcSwgcmVzKSB7XG4gIGxldCBzdGF0dXMgPSByZXMuc3RhdHVzQ29kZTtcbiAgbGV0IHN0YXR1c1N0ciA9ICc6c3RhdHVzJztcbiAgaWYgKHN0YXR1cyA+PSA1MDApIHtcbiAgICBzdGF0dXNTdHIgPSBzdGF0dXNTdHIucmVkO1xuICB9IGVsc2UgaWYgKHN0YXR1cyA+PSA0MDApIHtcbiAgICBzdGF0dXNTdHIgPSBzdGF0dXNTdHIueWVsbG93O1xuICB9IGVsc2UgaWYgKHN0YXR1cyA+PSAzMDApIHtcbiAgICBzdGF0dXNTdHIgPSBzdGF0dXNTdHIuY3lhbjtcbiAgfSBlbHNlIHtcbiAgICBzdGF0dXNTdHIgPSBzdGF0dXNTdHIuZ3JlZW47XG4gIH1cbiAgbGV0IGZuID0gY29tcGlsZShgJHsnPC0tIDptZXRob2QgOnVybCAnLndoaXRlfSR7c3RhdHVzU3RyfSAkeyc6cmVzcG9uc2UtdGltZSBtcyAtIDpyZXNbY29udGVudC1sZW5ndGhdJy5ncmV5fWApO1xuICByZXR1cm4gZm4odG9rZW5zLCByZXEsIHJlcyk7XG59XG5cbmNvbnN0IGVuZExvZ0Zvcm1hdHRlciA9IG1vcmdhbigodG9rZW5zLCByZXEsIHJlcykgPT4ge1xuICBsb2cuaW5mbyhyZXF1ZXN0RW5kTG9nZ2luZ0Zvcm1hdCh0b2tlbnMsIHJlcSwgcmVzKSxcbiAgICAocmVzLmpzb25SZXNwIHx8ICcnKS5ncmV5KTtcbn0pO1xuXG5jb25zdCByZXF1ZXN0U3RhcnRMb2dnaW5nRm9ybWF0ID0gY29tcGlsZShgJHsnLS0+Jy53aGl0ZX0gJHsnOm1ldGhvZCcud2hpdGV9ICR7Jzp1cmwnLndoaXRlfWApO1xuXG5jb25zdCBzdGFydExvZ0Zvcm1hdHRlciA9IG1vcmdhbigodG9rZW5zLCByZXEsIHJlcykgPT4ge1xuICAvLyBtb3JnYW4gb3V0cHV0IGlzIHJlZGlyZWN0ZWQgc3RyYWlnaHQgdG8gd2luc3RvblxuICBsZXQgcmVxQm9keSA9ICcnO1xuICBpZiAocmVxLmJvZHkpIHtcbiAgICB0cnkge1xuICAgICAgcmVxQm9keSA9IF8udHJ1bmNhdGUoXy5pc1N0cmluZyhyZXEuYm9keSkgPyByZXEuYm9keSA6IEpTT04uc3RyaW5naWZ5KHJlcS5ib2R5KSwge1xuICAgICAgICBsZW5ndGg6IE1BWF9MT0dfQk9EWV9MRU5HVEgsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChpZ24pIHt9XG4gIH1cbiAgbG9nLmluZm8ocmVxdWVzdFN0YXJ0TG9nZ2luZ0Zvcm1hdCh0b2tlbnMsIHJlcSwgcmVzKSwgcmVxQm9keS5ncmV5KTtcbn0sIHtpbW1lZGlhdGU6IHRydWV9KTtcblxuZXhwb3J0IHsgZW5kTG9nRm9ybWF0dGVyLCBzdGFydExvZ0Zvcm1hdHRlciB9O1xuIl19
70
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21waWxlIiwiZm10IiwicmVwbGFjZSIsIl8iLCJuYW1lIiwiYXJnIiwianMiLCJGdW5jdGlvbiIsInJlcXVlc3RFbmRMb2dnaW5nRm9ybWF0IiwidG9rZW5zIiwicmVxIiwicmVzIiwic3RhdHVzIiwic3RhdHVzQ29kZSIsInN0YXR1c1N0ciIsInJlZCIsInllbGxvdyIsImN5YW4iLCJncmVlbiIsImZuIiwid2hpdGUiLCJncmV5IiwiZW5kTG9nRm9ybWF0dGVyIiwibW9yZ2FuIiwibG9nIiwiaW5mbyIsImpzb25SZXNwIiwicmVxdWVzdFN0YXJ0TG9nZ2luZ0Zvcm1hdCIsInN0YXJ0TG9nRm9ybWF0dGVyIiwicmVxQm9keSIsImJvZHkiLCJ0cnVuY2F0ZSIsImlzU3RyaW5nIiwiSlNPTiIsInN0cmluZ2lmeSIsImxlbmd0aCIsIk1BWF9MT0dfQk9EWV9MRU5HVEgiLCJpZ24iLCJpbW1lZGlhdGUiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZXhwcmVzcy9leHByZXNzLWxvZ2dpbmcuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCAnQGNvbG9ycy9jb2xvcnMnO1xuaW1wb3J0IG1vcmdhbiBmcm9tICdtb3JnYW4nO1xuaW1wb3J0IGxvZyBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQge01BWF9MT0dfQk9EWV9MRU5HVEh9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbi8vIENvcGllZCB0aGUgbW9yZ2FuIGNvbXBpbGUgZnVuY3Rpb24gb3ZlciBzbyB0aGF0IGNvb2xlciBmb3JtYXRzXG4vLyBtYXkgYmUgY29uZmlndXJlZFxuZnVuY3Rpb24gY29tcGlsZShmbXQpIHtcbiAgLy8gZXNjYXBlIHF1b3Rlc1xuICBmbXQgPSBmbXQucmVwbGFjZSgvXCIvZywgJ1xcXFxcIicpO1xuICBmbXQgPSBmbXQucmVwbGFjZSgvOihbLVxcd117Mix9KSg/OlxcWyhbXlxcXV0rKVxcXSk/L2csIGZ1bmN0aW9uIHJlcGxhY2UoXywgbmFtZSwgYXJnKSB7XG4gICAgcmV0dXJuIGBcIlxcbiAgICArICh0b2tlbnNbXCIke25hbWV9XCJdKHJlcSwgcmVzLCBcIiR7YXJnfVwiKSB8fCBcIi1cIikgKyBcImA7XG4gIH0pO1xuICBsZXQganMgPSBgICByZXR1cm4gXCIke2ZtdH1cIjtgO1xuICByZXR1cm4gbmV3IEZ1bmN0aW9uKCd0b2tlbnMsIHJlcSwgcmVzJywganMpO1xufVxuXG5mdW5jdGlvbiByZXF1ZXN0RW5kTG9nZ2luZ0Zvcm1hdCh0b2tlbnMsIHJlcSwgcmVzKSB7XG4gIGxldCBzdGF0dXMgPSByZXMuc3RhdHVzQ29kZTtcbiAgbGV0IHN0YXR1c1N0ciA9ICc6c3RhdHVzJztcbiAgaWYgKHN0YXR1cyA+PSA1MDApIHtcbiAgICBzdGF0dXNTdHIgPSBzdGF0dXNTdHIucmVkO1xuICB9IGVsc2UgaWYgKHN0YXR1cyA+PSA0MDApIHtcbiAgICBzdGF0dXNTdHIgPSBzdGF0dXNTdHIueWVsbG93O1xuICB9IGVsc2UgaWYgKHN0YXR1cyA+PSAzMDApIHtcbiAgICBzdGF0dXNTdHIgPSBzdGF0dXNTdHIuY3lhbjtcbiAgfSBlbHNlIHtcbiAgICBzdGF0dXNTdHIgPSBzdGF0dXNTdHIuZ3JlZW47XG4gIH1cbiAgbGV0IGZuID0gY29tcGlsZShcbiAgICBgJHsnPC0tIDptZXRob2QgOnVybCAnLndoaXRlfSR7c3RhdHVzU3RyfSAkeyc6cmVzcG9uc2UtdGltZSBtcyAtIDpyZXNbY29udGVudC1sZW5ndGhdJy5ncmV5fWBcbiAgKTtcbiAgcmV0dXJuIGZuKHRva2VucywgcmVxLCByZXMpO1xufVxuXG5jb25zdCBlbmRMb2dGb3JtYXR0ZXIgPSBtb3JnYW4oKHRva2VucywgcmVxLCByZXMpID0+IHtcbiAgbG9nLmluZm8ocmVxdWVzdEVuZExvZ2dpbmdGb3JtYXQodG9rZW5zLCByZXEsIHJlcyksIChyZXMuanNvblJlc3AgfHwgJycpLmdyZXkpO1xufSk7XG5cbmNvbnN0IHJlcXVlc3RTdGFydExvZ2dpbmdGb3JtYXQgPSBjb21waWxlKGAkeyctLT4nLndoaXRlfSAkeyc6bWV0aG9kJy53aGl0ZX0gJHsnOnVybCcud2hpdGV9YCk7XG5cbmNvbnN0IHN0YXJ0TG9nRm9ybWF0dGVyID0gbW9yZ2FuKFxuICAodG9rZW5zLCByZXEsIHJlcykgPT4ge1xuICAgIC8vIG1vcmdhbiBvdXRwdXQgaXMgcmVkaXJlY3RlZCBzdHJhaWdodCB0byB3aW5zdG9uXG4gICAgbGV0IHJlcUJvZHkgPSAnJztcbiAgICBpZiAocmVxLmJvZHkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJlcUJvZHkgPSBfLnRydW5jYXRlKF8uaXNTdHJpbmcocmVxLmJvZHkpID8gcmVxLmJvZHkgOiBKU09OLnN0cmluZ2lmeShyZXEuYm9keSksIHtcbiAgICAgICAgICBsZW5ndGg6IE1BWF9MT0dfQk9EWV9MRU5HVEgsXG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoaWduKSB7fVxuICAgIH1cbiAgICBsb2cuaW5mbyhyZXF1ZXN0U3RhcnRMb2dnaW5nRm9ybWF0KHRva2VucywgcmVxLCByZXMpLCByZXFCb2R5LmdyZXkpO1xuICB9LFxuICB7aW1tZWRpYXRlOiB0cnVlfVxuKTtcblxuZXhwb3J0IHtlbmRMb2dGb3JtYXR0ZXIsIHN0YXJ0TG9nRm9ybWF0dGVyfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFJQSxTQUFTQSxPQUFULENBQWlCQyxHQUFqQixFQUFzQjtFQUVwQkEsR0FBRyxHQUFHQSxHQUFHLENBQUNDLE9BQUosQ0FBWSxJQUFaLEVBQWtCLEtBQWxCLENBQU47RUFDQUQsR0FBRyxHQUFHQSxHQUFHLENBQUNDLE9BQUosQ0FBWSxnQ0FBWixFQUE4QyxTQUFTQSxPQUFULENBQWlCQyxDQUFqQixFQUFvQkMsSUFBcEIsRUFBMEJDLEdBQTFCLEVBQStCO0lBQ2pGLE9BQVEscUJBQW9CRCxJQUFLLGlCQUFnQkMsR0FBSSxnQkFBckQ7RUFDRCxDQUZLLENBQU47RUFHQSxJQUFJQyxFQUFFLEdB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
@@ -190,4 +190,4 @@ async function handleIdempotency(req, res, next) {
190
190
  });
191
191
  }
192
192
  }
193
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9leHByZXNzL2lkZW1wb3RlbmN5LmpzIl0sIm5hbWVzIjpbIkNBQ0hFX1NJWkUiLCJJREVNUE9URU5UX1JFU1BPTlNFUyIsIkxSVSIsIm1heCIsInVwZGF0ZUFnZU9uR2V0IiwiZGlzcG9zZSIsImtleSIsInJlc3BvbnNlIiwiZnMiLCJyaW1yYWZTeW5jIiwiTU9OSVRPUkVEX01FVEhPRFMiLCJJREVNUE9URU5DWV9LRVlfSEVBREVSIiwicHJvY2VzcyIsIm9uIiwicmVzUGF0aHMiLCJ2YWx1ZXMiLCJtYXAiLCJmaWx0ZXIiLCJCb29sZWFuIiwicmVzUGF0aCIsImlnbiIsImNhY2hlUmVzcG9uc2UiLCJyZXEiLCJyZXMiLCJyZXNwb25zZVN0YXRlTGlzdGVuZXIiLCJFdmVudEVtaXR0ZXIiLCJzZXQiLCJtZXRob2QiLCJwYXRoIiwidG1wRmlsZSIsInJlc29sdmUiLCJvcyIsInRtcGRpciIsInV0aWwiLCJ1dWlkVjQiLCJyZXNwb25zZUxpc3RlbmVyIiwiY3JlYXRlV3JpdGVTdHJlYW0iLCJlbWl0Q2xvc2UiLCJvcmlnaW5hbFNvY2tldFdyaXRlciIsInNvY2tldCIsIndyaXRlIiwiYmluZCIsInBhdGNoZWRXcml0ZXIiLCJjaHVuayIsImVuY29kaW5nIiwibmV4dCIsIndyaXRhYmxlIiwid3JpdGVFcnJvciIsImlzUmVzcG9uc2VGdWxseVNlbnQiLCJvbmNlIiwiZSIsImVuZCIsImhhcyIsImxvZyIsImluZm8iLCJlbWl0IiwibWVzc2FnZSIsImRlbGV0ZSIsImdldCIsImhhbmRsZUlkZW1wb3RlbmN5IiwiaGVhZGVycyIsImluY2x1ZGVzIiwiZGVidWciLCJzdG9yZWRNZXRob2QiLCJzdG9yZWRQYXRoIiwid2FybiIsInJlcm91dGVDYWNoZWRSZXNwb25zZSIsImNhY2hlZFJlc1BhdGgiLCJleGlzdHMiLCJjcmVhdGVSZWFkU3RyZWFtIiwicGlwZSIsImNhY2hlZFJlc3BvbnNlUGF0aCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7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ZXNDb250ZW50IjpbImltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IExSVSBmcm9tICdscnUtY2FjaGUnO1xuaW1wb3J0IHsgZnMsIHV0aWwgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IG9zIGZyb20gJ29zJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuXG5jb25zdCBDQUNIRV9TSVpFID0gMTAyNDtcbmNvbnN0IElERU1QT1RFTlRfUkVTUE9OU0VTID0gbmV3IExSVSh7XG4gIG1heDogQ0FDSEVfU0laRSxcbiAgdXBkYXRlQWdlT25HZXQ6IHRydWUsXG4gIGRpc3Bvc2UgKGtleSwge3Jlc3BvbnNlfSkge1xuICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgZnMucmltcmFmU3luYyhyZXNwb25zZSk7XG4gICAgfVxuICB9LFxufSk7XG5jb25zdCBNT05JVE9SRURfTUVUSE9EUyA9IFsnUE9TVCcsICdQQVRDSCddO1xuY29uc3QgSURFTVBPVEVOQ1lfS0VZX0hFQURFUiA9ICd4LWlkZW1wb3RlbmN5LWtleSc7XG5cbnByb2Nlc3Mub24oJ2V4aXQnLCAoKSA9PiB7XG4gIGNvbnN0IHJlc1BhdGhzID0gWy4uLklERU1QT1RFTlRfUkVTUE9OU0VTLnZhbHVlcygpXVxuICAgIC5tYXAoKHtyZXNwb25zZX0pID0+IHJlc3BvbnNlKVxuICAgIC5maWx0ZXIoQm9vbGVhbik7XG4gIGZvciAoY29uc3QgcmVzUGF0aCBvZiByZXNQYXRocykge1xuICAgIHRyeSB7XG4gICAgICAvLyBBc3luY2hyb25vdXMgY2FsbHMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gb25FeGl0IGhhbmRsZXJcbiAgICAgIGZzLnJpbXJhZlN5bmMocmVzUGF0aCk7XG4gICAgfSBjYXRjaCAoaWduKSB7fVxuICB9XG59KTtcblxuXG5mdW5jdGlvbiBjYWNoZVJlc3BvbnNlIChrZXksIHJlcSwgcmVzKSB7XG4gIGNvbnN0IHJlc3BvbnNlU3RhdGVMaXN0ZW5lciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgSURFTVBPVEVOVF9SRVNQT05TRVMuc2V0KGtleSwge1xuICAgIG1ldGhvZDogcmVxLm1ldGhvZCxcbiAgICBwYXRoOiByZXEucGF0aCxcbiAgICByZXNwb25zZTogbnVsbCxcbiAgICByZXNwb25zZVN0YXRlTGlzdGVuZXIsXG4gIH0pO1xuICBjb25zdCB0bXBGaWxlID0gcGF0aC5yZXNvbHZlKG9zLnRtcGRpcigpLCBgJHt1dGlsLnV1aWRWNCgpfS5yZXNwb25zZWApO1xuICBjb25zdCByZXNwb25zZUxpc3RlbmVyID0gZnMuY3JlYXRlV3JpdGVTdHJlYW0odG1wRmlsZSwge1xuICAgIGVtaXRDbG9zZTogdHJ1ZSxcbiAgfSk7XG4gIGNvbnN0IG9yaWdpbmFsU29ja2V0V3JpdGVyID0gcmVzLnNvY2tldC53cml0ZS5iaW5kKHJlcy5zb2NrZXQpO1xuICBjb25zdCBwYXRjaGVkV3JpdGVyID0gKGNodW5rLCBlbmNvZGluZywgbmV4dCkgPT4ge1xuICAgIGlmIChyZXNwb25zZUxpc3RlbmVyLndyaXRhYmxlKSB7XG4gICAgICByZXNwb25zZUxpc3RlbmVyLndyaXRlKGNodW5rKTtcbiAgICB9XG4gICAgcmV0dXJuIG9yaWdpbmFsU29ja2V0V3JpdGVyKGNodW5rLCBlbmNvZGluZywgbmV4dCk7XG4gIH07XG4gIHJlcy5zb2NrZXQud3JpdGUgPSBwYXRjaGVkV3JpdGVyO1xuICBsZXQgd3JpdGVFcnJvciA9IG51bGw7XG4gIGxldCBpc1Jlc3BvbnNlRnVsbHlTZW50ID0gZmFsc2U7XG4gIHJlc3BvbnNlTGlzdGVuZXIub25jZSgnZXJyb3InLCAoZSkgPT4ge1xuICAgIHdyaXRlRXJyb3IgPSBlO1xuICB9KTtcbiAgcmVzLm9uY2UoJ2ZpbmlzaCcsICgpID0+IHtcbiAgICBpc1Jlc3BvbnNlRnVsbHlTZW50ID0gdHJ1ZTtcbiAgICByZXNwb25zZUxpc3RlbmVyLmVuZCgpO1xuICB9KTtcbiAgcmVzLm9uY2UoJ2Nsb3NlJywgKCkgPT4ge1xuICAgIGlmICghaXNSZXNwb25zZUZ1bGx5U2VudCkge1xuICAgICAgcmVzcG9uc2VMaXN0ZW5lci5lbmQoKTtcbiAgICB9XG4gIH0pO1xuICByZXNwb25zZUxpc3RlbmVyLm9uY2UoJ2Nsb3NlJywgKCkgPT4ge1xuICAgIGlmIChyZXMuc29ja2V0Py53cml0ZSA9PT0gcGF0Y2hlZFdyaXRlcikge1xuICAgICAgcmVzLnNvY2tldC53cml0ZSA9IG9yaWdpbmFsU29ja2V0V3JpdGVyO1xuICAgIH1cblxuICAgIGlmICghSURFTVBPVEVOVF9SRVNQT05TRVMuaGFzKGtleSkpIHtcbiAgICAgIGxvZy5pbmZvKGBDb3VsZCBub3QgY2FjaGUgdGhlIHJlc3BvbnNlIGlkZW50aWZpZWQgYnkgJyR7a2V5fScuIGAgK1xuICAgICAgICBgQ2FjaGUgY29uc2lzdGVuY3kgaGFzIGJlZW4gZGFtYWdlZGApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlU3RhdGVMaXN0ZW5lci5lbWl0KCdyZWFkeScsIG51bGwpO1xuICAgIH1cbiAgICBpZiAod3JpdGVFcnJvcikge1xuICAgICAgbG9nLmluZm8oYENvdWxkIG5vdCBjYWNoZSB0aGUgcmVzcG9uc2UgaWRlbnRpZmllZCBieSAnJHtrZXl9JzogJHt3cml0ZUVycm9yLm1lc3NhZ2V9YCk7XG4gICAgICBJREVNUE9URU5UX1JFU1BPTlNFUy5kZWxldGUoa2V5KTtcbiAgICAgIHJldHVybiByZXNwb25zZVN0YXRlTGlzdGVuZXIuZW1pdCgncmVhZHknLCBudWxsKTtcbiAgICB9XG4gICAgaWYgKCFpc1Jlc3BvbnNlRnVsbHlTZW50KSB7XG4gICAgICBsb2cuaW5mbyhgQ291bGQgbm90IGNhY2hlIHRoZSByZXNwb25zZSBpZGVudGlmaWVkIGJ5ICcke2tleX0nLCBgICtcbiAgICAgICAgYGJlY2F1c2UgaXQgaGFzIG5vdCBiZWVuIGNvbXBsZXRlZGApO1xuICAgICAgbG9nLmluZm8oJ0RvZXMgdGhlIGNsaWVudCB0ZXJtaW5hdGUgY29ubmVjdGlvbnMgdG9vIGVhcmx5PycpO1xuICAgICAgSURFTVBPVEVOVF9SRVNQT05TRVMuZGVsZXRlKGtleSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2VTdGF0ZUxpc3RlbmVyLmVtaXQoJ3JlYWR5JywgbnVsbCk7XG4gICAgfVxuXG4gICAgSURFTVBPVEVOVF9SRVNQT05TRVMuZ2V0KGtleSkucmVzcG9uc2UgPSB0bXBGaWxlO1xuICAgIHJlc3BvbnNlU3RhdGVMaXN0ZW5lci5lbWl0KCdyZWFkeScsIHRtcEZpbGUpO1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaGFuZGxlSWRlbXBvdGVuY3kgKHJlcSwgcmVzLCBuZXh0KSB7XG4gIGNvbnN0IGtleSA9IHJlcS5oZWFkZXJzW0lERU1QT1RFTkNZX0tFWV9IRUFERVJdO1xuICBpZiAoIWtleSkge1xuICAgIHJldHVybiBuZXh0KCk7XG4gIH1cbiAgaWYgKCFNT05JVE9SRURfTUVUSE9EUy5pbmNsdWRlcyhyZXEubWV0aG9kKSkge1xuICAgIC8vIEdFVCwgREVMRVRFLCBldGMuIHJlcXVlc3RzIGFyZSBpZGVtcG90ZW50IGJ5IGRlZmF1bHRcbiAgICAvLyB0aGVyZSBpcyBubyBuZWVkIHRvIGNhY2hlIHRoZW1cbiAgICByZXR1cm4gbmV4dCgpO1xuICB9XG5cbiAgbG9nLmRlYnVnKGBSZXF1ZXN0IGlkZW1wb3RlbmN5IGtleTogJHtrZXl9YCk7XG4gIGlmICghSURFTVBPVEVOVF9SRVNQT05TRVMuaGFzKGtleSkpIHtcbiAgICBjYWNoZVJlc3BvbnNlKGtleSwgcmVxLCByZXMpO1xuICAgIHJldHVybiBuZXh0KCk7XG4gIH1cblxuICBjb25zdCB7XG4gICAgbWV0aG9kOiBzdG9yZWRNZXRob2QsXG4gICAgcGF0aDogc3RvcmVkUGF0aCxcbiAgICByZXNwb25zZSxcbiAgICByZXNwb25zZVN0YXRlTGlzdGVuZXIsXG4gIH0gPSBJREVNUE9URU5UX1JFU1BPTlNFUy5nZXQoa2V5KTtcbiAgaWYgKHJlcS5tZXRob2QgIT09IHN0b3JlZE1ldGhvZCB8fCByZXEucGF0aCAhPT0gc3RvcmVkUGF0aCkge1xuICAgIGxvZy53YXJuKGBHb3QgdHdvIGRpZmZlcmVudCByZXF1ZXN0cyB3aXRoIHRoZSBzYW1lIGlkZW1wb3RlbmN5IGtleSAnJHtrZXl9J2ApO1xuICAgIGxvZy53YXJuKCdJcyB0aGUgY2xpZW50IGdlbmVyYXRpbmcgaWRlbXBvdGVuY3kga2V5cyBwcm9wZXJseT8nKTtcbiAgICByZXR1cm4gbmV4dCgpO1xuICB9XG5cbiAgY29uc3QgcmVyb3V0ZUNhY2hlZFJlc3BvbnNlID0gYXN5bmMgKGNhY2hlZFJlc1BhdGgpID0+IHtcbiAgICBpZiAoIWF3YWl0IGZzLmV4aXN0cyhjYWNoZWRSZXNQYXRoKSkge1xuICAgICAgSURFTVBPVEVOVF9SRVNQT05TRVMuZGVsZXRlKGtleSk7XG4gICAgICBsb2cud2FybihgQ291bGQgbm90IHJlYWQgdGhlIGNhY2hlZCByZXNwb25zZSBpZGVudGlmaWVkIGJ5IGtleSAnJHtrZXl9J2ApO1xuICAgICAgbG9nLndhcm4oJ1RoZSB0ZW1wb3Jhcnkgc3RvcmFnZSBpcyBub3QgYWNjZXNzaWJsZSBhbnltb3JlJyk7XG4gICAgICByZXR1cm4gbmV4dCgpO1xuICAgIH1cbiAgICBmcy5jcmVhdGVSZWFkU3RyZWFtKGNhY2hlZFJlc1BhdGgpLnBpcGUocmVzLnNvY2tldCk7XG4gIH07XG5cbiAgaWYgKHJlc3BvbnNlKSB7XG4gICAgbG9nLmluZm8oYFRoZSBzYW1lIHJlcXVlc3Qgd2l0aCB0aGUgaWRlbXBvdGVuY3kga2V5ICcke2tleX0nIGhhcyBiZWVuIGFscmVhZHkgcHJvY2Vzc2VkYCk7XG4gICAgbG9nLmluZm8oYFJlcm91dGluZyBpdHMgcmVzcG9uc2UgdG8gdGhlIGN1cnJlbnQgcmVxdWVzdGApO1xuICAgIGF3YWl0IHJlcm91dGVDYWNoZWRSZXNwb25zZShyZXNwb25zZSk7XG4gIH0gZWxzZSB7XG4gICAgbG9nLmluZm8oYFRoZSBzYW1lIHJlcXVlc3Qgd2l0aCB0aGUgaWRlbXBvdGVuY3kga2V5ICcke2tleX0nIGlzIGJlaW5nIHByb2Nlc3NlZGApO1xuICAgIGxvZy5pbmZvKGBXYWl0aW5nIGZvciB0aGUgcmVzcG9uc2UgdG8gYmUgcmVyb3V0ZWQgdG8gdGhlIGN1cnJlbnQgcmVxdWVzdGApO1xuICAgIHJlc3BvbnNlU3RhdGVMaXN0ZW5lci5vbmNlKCdyZWFkeScsIGFzeW5jIChjYWNoZWRSZXNwb25zZVBhdGgpID0+IHtcbiAgICAgIGlmICghY2FjaGVkUmVzcG9uc2VQYXRoKSB7XG4gICAgICAgIHJldHVybiBuZXh0KCk7XG4gICAgICB9XG4gICAgICBhd2FpdCByZXJvdXRlQ2FjaGVkUmVzcG9uc2UoY2FjaGVkUmVzcG9uc2VQYXRoKTtcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgeyBoYW5kbGVJZGVtcG90ZW5jeSB9O1xuIl19
193
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDQUNIRV9TSVpFIiwiSURFTVBPVEVOVF9SRVNQT05TRVMiLCJMUlUiLCJtYXgiLCJ1cGRhdGVBZ2VPbkdldCIsImRpc3Bvc2UiLCJrZXkiLCJyZXNwb25zZSIsImZzIiwicmltcmFmU3luYyIsIk1PTklUT1JFRF9NRVRIT0RTIiwiSURFTVBPVEVOQ1lfS0VZX0hFQURFUiIsInByb2Nlc3MiLCJvbiIsInJlc1BhdGhzIiwidmFsdWVzIiwibWFwIiwiZmlsdGVyIiwiQm9vbGVhbiIsInJlc1BhdGgiLCJpZ24iLCJjYWNoZVJlc3BvbnNlIiwicmVxIiwicmVzIiwicmVzcG9uc2VTdGF0ZUxpc3RlbmVyIiwiRXZlbnRFbWl0dGVyIiwic2V0IiwibWV0aG9kIiwicGF0aCIsInRtcEZpbGUiLCJyZXNvbHZlIiwib3MiLCJ0bXBkaXIiLCJ1dGlsIiwidXVpZFY0IiwicmVzcG9uc2VMaXN0ZW5lciIsImNyZWF0ZVdyaXRlU3RyZWFtIiwiZW1pdENsb3NlIiwib3JpZ2luYWxTb2NrZXRXcml0ZXIiLCJzb2NrZXQiLCJ3cml0ZSIsImJpbmQiLCJwYXRjaGVkV3JpdGVyIiwiY2h1bmsiLCJlbmNvZGluZyIsIm5leHQiLCJ3cml0YWJsZSIsIndyaXRlRXJyb3IiLCJpc1Jlc3BvbnNlRnVsbHlTZW50Iiwib25jZSIsImUiLCJlbmQiLCJoYXMiLCJsb2ciLCJpbmZvIiwiZW1pdCIsIm1lc3NhZ2UiLCJkZWxldGUiLCJnZXQiLCJoYW5kbGVJZGVtcG90ZW5jeSIsImhlYWRlcnMiLCJpbmNsdWRlcyIsImRlYnVnIiwic3RvcmVkTWV0aG9kIiwic3RvcmVkUGF0aCIsIndhcm4iLCJyZXJvdXRlQ2FjaGVkUmVzcG9uc2UiLCJjYWNoZWRSZXNQYXRoIiwiZXhpc3RzIiwiY3JlYXRlUmVhZFN0cmVhbSIsInBpcGUiLCJjYWNoZWRSZXNwb25zZVBhdGgiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZXhwcmVzcy9pZGVtcG90ZW5jeS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCBMUlUgZnJvbSAnbHJ1LWNhY2hlJztcbmltcG9ydCB7ZnMsIHV0aWx9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgb3MgZnJvbSAnb3MnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQge0V2ZW50RW1pdHRlcn0gZnJvbSAnZXZlbnRzJztcblxuY29uc3QgQ0FDSEVfU0laRSA9IDEwMjQ7XG5jb25zdCBJREVNUE9URU5UX1JFU1BPTlNFUyA9IG5ldyBMUlUoe1xuICBtYXg6IENBQ0hFX1NJWkUsXG4gIHVwZGF0ZUFnZU9uR2V0OiB0cnVlLFxuICBkaXNwb3NlKGtleSwge3Jlc3BvbnNlfSkge1xuICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgZnMucmltcmFmU3luYyhyZXNwb25zZSk7XG4gICAgfVxuICB9LFxufSk7XG5jb25zdCBNT05JVE9SRURfTUVUSE9EUyA9IFsnUE9TVCcsICdQQVRDSCddO1xuY29uc3QgSURFTVBPVEVOQ1lfS0VZX0hFQURFUiA9ICd4LWlkZW1wb3RlbmN5LWtleSc7XG5cbnByb2Nlc3Mub24oJ2V4aXQnLCAoKSA9PiB7XG4gIGNvbnN0IHJlc1BhdGhzID0gWy4uLklERU1QT1RFTlRfUkVTUE9OU0VTLnZhbHVlcygpXS5tYXAoKHtyZXNwb25zZX0pID0+IHJlc3BvbnNlKS5maWx0ZXIoQm9vbGVhbik7XG4gIGZvciAoY29uc3QgcmVzUGF0aCBvZiByZXNQYXRocykge1xuICAgIHRyeSB7XG4gICAgICAvLyBBc3luY2hyb25vdXMgY2FsbHMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gb25FeGl0IGhhbmRsZXJcbiAgICAgIGZzLnJpbXJhZlN5bmMocmVzUGF0aCk7XG4gICAgfSBjYXRjaCAoaWduKSB7fVxuICB9XG59KTtcblxuZnVuY3Rpb24gY2FjaGVSZXNwb25zZShrZXksIHJlcSwgcmVzKSB7XG4gIGNvbnN0IHJlc3BvbnNlU3RhdGVMaXN0ZW5lciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgSURFTVBPVEVOVF9SRVNQT05TRVMuc2V0KGtleSwge1xuICAgIG1ldGhvZDogcmVxLm1ldGhvZCxcbiAgICBwYXRoOiByZXEucGF0aCxcbiAgICByZXNwb25zZTogbnVsbCxcbiAgICByZXNwb25zZVN0YXRlTGlzdGVuZXIsXG4gIH0pO1xuICBjb25zdCB0bXBGaWxlID0gcGF0aC5yZXNvbHZlKG9zLnRtcGRpcigpLCBgJHt1dGlsLnV1aWRWNCgpfS5yZXNwb25zZWApO1xuICBjb25zdCByZXNwb25zZUxpc3RlbmVyID0gZnMuY3JlYXRlV3JpdGVTdHJlYW0odG1wRmlsZSwge1xuICAgIGVtaXRDbG9zZTogdHJ1ZSxcbiAgfSk7XG4gIGNvbnN0IG9yaWdpbmFsU29ja2V0V3JpdGVyID0gcmVzLnNvY2tldC53cml0ZS5iaW5kKHJlcy5zb2NrZXQpO1xuICBjb25zdCBwYXRjaGVkV3JpdGVyID0gKGNodW5rLCBlbmNvZGluZywgbmV4dCkgPT4ge1xuICAgIGlmIChyZXNwb25zZUxpc3RlbmVyLndyaXRhYmxlKSB7XG4gICAgICByZXNwb25zZUxpc3RlbmVyLndyaXRlKGNodW5rKTtcbiAgICB9XG4gICAgcmV0dXJuIG9yaWdpbmFsU29ja2V0V3JpdGVyKGNodW5rLCBlbmNvZGluZywgbmV4dCk7XG4gIH07XG4gIHJlcy5zb2NrZXQud3JpdGUgPSBwYXRjaGVkV3JpdGVyO1xuICBsZXQgd3JpdGVFcnJvciA9IG51bGw7XG4gIGxldCBpc1Jlc3BvbnNlRnVsbHlTZW50ID0gZmFsc2U7XG4gIHJlc3BvbnNlTGlzdGVuZXIub25jZSgnZXJyb3InLCAoZSkgPT4ge1xuICAgIHdyaXRlRXJyb3IgPSBlO1xuICB9KTtcbiAgcmVzLm9uY2UoJ2ZpbmlzaCcsICgpID0+IHtcbiAgICBpc1Jlc3BvbnNlRnVsbHlTZW50ID0gdHJ1ZTtcbiAgICByZXNwb25zZUxpc3RlbmVyLmVuZCgpO1xuICB9KTtcbiAgcmVzLm9uY2UoJ2Nsb3NlJywgKCkgPT4ge1xuICAgIGlmICghaXNSZXNwb25zZUZ1bGx5U2VudCkge1xuICAgICAgcmVzcG9uc2VMaXN0ZW5lci5lbmQoKTtcbiAgICB9XG4gIH0pO1xuICByZXNwb25zZUxpc3RlbmVyLm9uY2UoJ2Nsb3NlJywgKCkgPT4ge1xuICAgIGlmIChyZXMuc29ja2V0Py53cml0ZSA9PT0gcGF0Y2hlZFdyaXRlcikge1xuICAgICAgcmVzLnNvY2tldC53cml0ZSA9IG9yaWdpbmFsU29ja2V0V3JpdGVyO1xuICAgIH1cblxuICAgIGlmICghSURFTVBPVEVOVF9SRVNQT05TRVMuaGFzKGtleSkpIHtcbiAgICAgIGxvZy5pbmZvKFxuICAgICAgICBgQ291bGQgbm90IGNhY2hlIHRoZSByZXNwb25zZSBpZGVudGlmaWVkIGJ5ICcke2tleX0nLiBgICtcbiAgICAgICAgICBgQ2FjaGUgY29uc2lzdGVuY3kgaGFzIGJlZW4gZGFtYWdlZGBcbiAgICAgICk7XG4gICAgICByZXR1cm4gcmVzcG9uc2VTdGF0ZUxpc3RlbmVyLmVtaXQoJ3JlYWR5JywgbnVsbCk7XG4gICAgfVxuICAgIGlmICh3cml0ZUVycm9yKSB7XG4gICAgICBsb2cuaW5mbyhgQ291bGQgbm90IGNhY2hlIHRoZSByZXNwb25zZSBpZGVudGlmaWVkIGJ5ICcke2tleX0nOiAke3dyaXRlRXJyb3IubWVzc2FnZX1gKTtcbiAgICAgIElERU1QT1RFTlRfUkVTUE9OU0VTLmRlbGV0ZShrZXkpO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlU3RhdGVMaXN0ZW5lci5lbWl0KCdyZWFkeScsIG51bGwpO1xuICAgIH1cbiAgICBpZiAoIWlzUmVzcG9uc2VGdWxseVNlbnQpIHtcbiAgICAgIGxvZy5pbmZvKFxuICAgICAgICBgQ291bGQgbm90IGNhY2hlIHRoZSByZXNwb25zZSBpZGVudGlmaWVkIGJ5ICcke2tleX0nLCBgICtcbiAgICAgICAgICBgYmVjYXVzZSBpdCBoYXMgbm90IGJlZW4gY29tcGxldGVkYFxuICAgICAgKTtcbiAgICAgIGxvZy5pbmZvKCdEb2VzIHRoZSBjbGllbnQgdGVybWluYXRlIGNvbm5lY3Rpb25zIHRvbyBlYXJseT8nKTtcbiAgICAgIElERU1QT1RFTlRfUkVTUE9OU0VTLmRlbGV0ZShrZXkpO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlU3RhdGVMaXN0ZW5lci5lbWl0KCdyZWFkeScsIG51bGwpO1xuICAgIH1cblxuICAgIElERU1QT1RFTlRfUkVTUE9OU0VTLmdldChrZXkpLnJlc3BvbnNlID0gdG1wRmlsZTtcbiAgICByZXNwb25zZVN0YXRlTGlzdGVuZXIuZW1pdCgncmVhZHknLCB0bXBGaWxlKTtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGhhbmRsZUlkZW1wb3RlbmN5KHJlcSwgcmVzLCBuZXh0KSB7XG4gIGNvbnN0IGtleSA9IHJlcS5oZWFkZXJzW0lERU1QT1RFTkNZX0tFWV9IRUFERVJdO1xuICBpZiAoIWtleSkge1xuICAgIHJldHVybiBuZXh0KCk7XG4gIH1cbiAgaWYgKCFNT05JVE9SRURfTUVUSE9EUy5pbmNsdWRlcyhyZXEubWV0aG9kKSkge1xuICAgIC8vIEdFVCwgREVMRVRFLCBldGMuIHJlcXVlc3RzIGFyZSBpZGVtcG90ZW50IGJ5IGRlZmF1bHRcbiAgICAvLyB0aGVyZSBpcyBubyBuZWVkIHRvIGNhY2hlIHRoZW1cbiAgICByZXR1cm4gbmV4dCgpO1xuICB9XG5cbiAgbG9nLmRlYnVnKGBSZXF1ZXN0IGlkZW1wb3RlbmN5IGtleTogJHtrZXl9YCk7XG4gIGlmICghSURFTVBPVEVOVF9SRVNQT05TRVMuaGFzKGtleSkpIHtcbiAgICBjYWNoZVJlc3BvbnNlKGtleSwgcmVxLCByZXMpO1xuICAgIHJldHVybiBuZXh0KCk7XG4gIH1cblxuICBjb25zdCB7XG4gICAgbWV0aG9kOiBzdG9yZWRNZXRob2QsXG4gICAgcGF0aDogc3RvcmVkUGF0aCxcbiAgICByZXNwb25zZSxcbiAgICByZXNwb25zZVN0YXRlTGlzdGVuZXIsXG4gIH0gPSBJREVNUE9URU5UX1JFU1BPTlNFUy5nZXQoa2V5KTtcbiAgaWYgKHJlcS5tZXRob2QgIT09IHN0b3JlZE1ldGhvZCB8fCByZXEucGF0aCAhPT0gc3RvcmVkUGF0aCkge1xuICAgIGxvZy53YXJuKGBHb3QgdHdvIGRpZmZlcmVudCByZXF1ZXN0cyB3aXRoIHRoZSBzYW1lIGlkZW1wb3RlbmN5IGtleSAnJHtrZXl9J2ApO1xuICAgIGxvZy53YXJuKCdJcyB0aGUgY2xpZW50IGdlbmVyYXRpbmcgaWRlbXBvdGVuY3kga2V5cyBwcm9wZXJseT8nKTtcbiAgICByZXR1cm4gbmV4dCgpO1xuICB9XG5cbiAgY29uc3QgcmVyb3V0ZUNhY2hlZFJlc3BvbnNlID0gYXN5bmMgKGNhY2hlZFJlc1BhdGgpID0+IHtcbiAgICBpZiAoIShhd2FpdCBmcy5leGlzdHMoY2FjaGVkUmVzUGF0aCkpKSB7XG4gICAgICBJREVNUE9URU5UX1JFU1BPTlNFUy5kZWxldGUoa2V5KTtcbiAgICAgIGxvZy53YXJuKGBDb3VsZCBub3QgcmVhZCB0aGUgY2FjaGVkIHJlc3BvbnNlIGlkZW50aWZpZWQgYnkga2V5ICcke2tleX0nYCk7XG4gICAgICBsb2cud2FybignVGhlIHRlbXBvcmFyeSBzdG9yYWdlIGlzIG5vdCBhY2Nlc3NpYmxlIGFueW1vcmUnKTtcbiAgICAgIHJldHVybiBuZXh0KCk7XG4gICAgfVxuICAgIGZzLmNyZWF0ZVJlYWRTdHJlYW0oY2FjaGVkUmVzUGF0aCkucGlwZShyZXMuc29ja2V0KTtcbiAgfTtcblxuICBpZiAocmVzcG9uc2UpIHtcbiAgICBsb2cuaW5mbyhgVGhlIHNhbWUgcmVxdWVzdCB3aXRoIHRoZSBpZGVtcG90ZW5jeSBrZXkgJyR7a2V5fScgaGFzIGJlZW4gYWxyZWFkeSBwcm9jZXNzZWRgKTtcbiAgICBsb2cuaW5mbyhgUmVyb3V0aW5nIGl0cyByZXNwb25zZSB0byB0aGUgY3VycmVudCByZXF1ZXN0YCk7XG4gICAgYXdhaXQgcmVyb3V0ZUNhY2hlZFJlc3BvbnNlKHJlc3BvbnNlKTtcbiAgfSBlbHNlIHtcbiAgICBsb2cuaW5mbyhgVGhlIHNhbWUgcmVxdWVzdCB3aXRoIHRoZSBpZGVtcG90ZW5jeSBrZXkgJyR7a2V5fScgaXMgYmVpbmcgcHJvY2Vzc2VkYCk7XG4gICAgbG9nLmluZm8oYFdhaXRpbmcgZm9yIHRoZSByZXNwb25zZSB0byBiZSByZXJvdXRlZCB0byB0aGUgY3VycmVudCByZXF1ZXN0YCk7XG4gICAgcmVzcG9uc2VTdGF0ZUxpc3RlbmVyLm9uY2UoJ3JlYWR5JywgYXN5bmMgKGNhY2hlZFJlc3BvbnNlUGF0aCkgPT4ge1xuICAgICAgaWYgKCFjYWNoZWRSZXNwb25zZVBhdGgpIHtcbiAgICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICAgIH1cbiAgICAgIGF3YWl0IHJlcm91dGVDYWNoZWRSZXNwb25zZShjYWNoZWRSZXNwb25zZVBhdGgpO1xuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCB7aGFuZGxlSWRlbXBvdGVuY3l9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLFVBQVUsR0FBRyxJQUFuQjtBQUNBLE1BQU1DLG9CQUFvQixHQUFHLElBQUlDLGlCQUFKLENBQVE7RUFDbkNDLEdBQUcsRUFBRUgsVUFEOEI7RUFFbkNJLGNBQWMsRUFBRSxJQUZtQjs7RUFHbkNDLE9BQU8sQ0FBQ0MsR0FBRCxFQUFNO0lBQUNDO0VBQUQsQ0FBTixFQUFrQjtJQUN2QixJQUFJQSxRQUFKLEVBQWM7TUFDWkMsV0FBQSxDQUFHQyxVQUFILENBQWNGLFFBQWQ7SUFDRDtFQUNGOztBQVBrQyxDQUFSLENBQTdCO0FBU0EsTUFBTUcsaUJBQWlCLEdBQUcsQ0FBQyxNQUFELEVBQVMsT0FBVCxDQUExQjtBQUNBLE1BQU1DLHNCQUFzQixHQUFHLG1CQUEvQjtBQUVBQyxPQUFPLENBQUNDLEVBQVIsQ0FBVyxNQUFYLEVBQW1CLE1BQU07RUFDdkIsTUFBTUMsUUFBUSxHQUFHLENBQUMsR0FBR2Isb0JBQW9CLENBQUNjLE1BQXJCLEVBQUosRUFBbUNDLEdBQW5DLENBQXVDLENBQUM7SUFBQ1Q7RUFBRCxDQUFELEtBQWdCQSxRQUF2RCxFQUFpRVUsTUFBakUsQ0FBd0VDLE9BQXhF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
@@ -1,3 +1,3 @@
1
1
  export default log;
2
- declare const log: import("@appium/types").AppiumLogger;
2
+ declare const log: import("../../../types/build").AppiumLogger;
3
3
  //# sourceMappingURL=logger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../lib/express/logger.js"],"names":[],"mappings":";AAEA,wDAAqC"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../lib/express/logger.js"],"names":[],"mappings":";AAEA,+DAAqC"}
@@ -13,4 +13,4 @@ const log = _support.logger.getLogger('HTTP');
13
13
 
14
14
  var _default = log;
15
15
  exports.default = _default;
16
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9leHByZXNzL2xvZ2dlci5qcyJdLCJuYW1lcyI6WyJsb2ciLCJsb2dnZXIiLCJnZXRMb2dnZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUVBLE1BQU1BLEdBQUcsR0FBR0MsZ0JBQU9DLFNBQVAsQ0FBaUIsTUFBakIsQ0FBWjs7ZUFDZUYsRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGxvZ2dlciB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5cbmNvbnN0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ0hUVFAnKTtcbmV4cG9ydCBkZWZhdWx0IGxvZztcbiJdfQ==
16
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2ciLCJsb2dnZXIiLCJnZXRMb2dnZXIiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZXhwcmVzcy9sb2dnZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtsb2dnZXJ9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5cbmNvbnN0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ0hUVFAnKTtcbmV4cG9ydCBkZWZhdWx0IGxvZztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBRUEsTUFBTUEsR0FBRyxHQUFHQyxlQUFBLENBQU9DLFNBQVAsQ0FBaUIsTUFBakIsQ0FBWjs7ZUFDZUYsRyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../lib/express/middleware.js"],"names":[],"mappings":"AAKA,qEAcC;AAcD,6FAUC;AAED,8EAKC;AAED,8EAiBC;AAhDD,oGAUC;;AAwCD,0DAaC"}
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../lib/express/middleware.js"],"names":[],"mappings":"AAKA,qEAiBC;AAgBD,6FAaC;AAED,8EAKC;AAED,8EAmBC;AAvDD,oGAYC;;AA6CD,0DAgBC"}
@@ -123,4 +123,4 @@ function patchWithSessionId(req, body) {
123
123
 
124
124
  return body;
125
125
  }
126
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9leHByZXNzL21pZGRsZXdhcmUuanMiXSwibmFtZXMiOlsiYWxsb3dDcm9zc0RvbWFpbiIsInJlcSIsInJlcyIsIm5leHQiLCJoZWFkZXIiLCJtZXRob2QiLCJzZW5kU3RhdHVzIiwiZXJyIiwibG9nIiwiZXJyb3IiLCJzdGFjayIsImFsbG93Q3Jvc3NEb21haW5Bc3luY0V4ZWN1dGUiLCJiYXNlUGF0aCIsInJlY2VpdmVBc3luY1Jlc3BvbnNlUmVnRXhwIiwiUmVnRXhwIiwiXyIsImVzY2FwZVJlZ0V4cCIsInRlc3QiLCJ1cmwiLCJmaXhQeXRob25Db250ZW50VHlwZSIsInBhdGgiLCJoZWFkZXJzIiwiZGVmYXVsdFRvSlNPTkNvbnRlbnRUeXBlIiwiY2F0Y2hBbGxIYW5kbGVyIiwiaGVhZGVyc1NlbnQiLCJtZXNzYWdlIiwiZXJyb3JzIiwiVW5rbm93bkVycm9yIiwic3RhdHVzIiwidzNjU3RhdHVzIiwianNvbiIsInBhdGNoV2l0aFNlc3Npb25JZCIsImNvZGUiLCJ2YWx1ZSIsInN0YWNrdHJhY2UiLCJjYXRjaDQwNEhhbmRsZXIiLCJkZWJ1ZyIsIlVua25vd25Db21tYW5kRXJyb3IiLCJTRVNTSU9OX0lEX1BBVFRFUk4iLCJib2R5IiwibWF0Y2giLCJleGVjIiwic2Vzc2lvbklkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsU0FBU0EsZ0JBQVQsQ0FBMkJDLEdBQTNCLEVBQWdDQyxHQUFoQyxFQUFxQ0MsSUFBckMsRUFBMkM7QUFDekMsTUFBSTtBQUNGRCxJQUFBQSxHQUFHLENBQUNFLE1BQUosQ0FBVyw2QkFBWCxFQUEwQyxHQUExQztBQUNBRixJQUFBQSxHQUFHLENBQUNFLE1BQUosQ0FBVyw4QkFBWCxFQUEyQyxpQ0FBM0M7QUFDQUYsSUFBQUEsR0FBRyxDQUFDRSxNQUFKLENBQVcsOEJBQVgsRUFBMkMsbUZBQTNDOztBQUdBLFFBQUksY0FBY0gsR0FB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QUFTNEIsZUFBVCxDQUEwQmxDLEdBQTFCLEVBQStCQyxHQUEvQixFQUFvQztBQUNsQ00sa0JBQUk0QixLQUFKLENBQVcsc0JBQXFCbkMsR0FBRyxDQUFDaUIsR0FBSSxFQUF4Qzs7QUFDQSxRQUFNVCxLQUFLLEdBQUdpQixpQkFBT1csbUJBQXJCO0FBQ0FuQyxFQUFBQSxHQUFHLENBQUMwQixNQUFKLENBQVduQixLQUFLLENBQUNvQixTQUFOLEVBQVgsRUFBOEJDLElBQTlCLENBQW1DQyxrQkFBa0IsQ0FBQzlCLEdBQUQsRUFBTTtBQUN6RDJCLElBQUFBLE1BQU0sRUFBRW5CLEtBQUssQ0FBQ3VCLElBQU4sRUFEaUQ7QUFFekRDLElBQUFBLEtBQUssRUFBRTtBQUNMeEIsTUFBQUEsS0FBSyxFQUFFQSxLQUFLLENBQUNBLEtBQU4sRUFERjtBQUVMZ0IsTUFBQUEsT0FBTyxFQUFFLGlFQUNQLG9FQURPLEdBRVAsVUFKRztBQUtMUyxNQUFBQSxVQUFVLEVBQUU7QUFMUDtBQUZrRCxHQUFOLENBQXJEO0FBVUQ7O0FBR0QsTUFBTUksa0JBQWtCLEdBQUcsb0JBQTNCOztBQUVBLFNBQVNQLGtCQUFULENBQTZCOUIsR0FBN0IsRUFBa0NzQyxJQUFsQyxFQUF3QztBQUN0QyxRQUFNQyxLQUFLLEdBQUdGLGtCQUFrQixDQUFDRyxJQUFuQixDQUF3QnhDLEdBQUcsQ0FBQ2lCLEdBQTVCLENBQWQ7O0FBQ0EsTUFBSXNCLEtBQUosRUFBVztBQUNURCxJQUFBQSxJQUFJLENBQUNHLFNBQUwsR0FBaUJGLEtBQUssQ0FBQyxDQUFELENBQXRCO0FBQ0Q7O0FBQ0QsU0FBT0QsSUFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnLi4vcHJvdG9jb2wnO1xuaW1wb3J0IHsgaGFuZGxlSWRlbXBvdGVuY3kgfSBmcm9tICcuL2lkZW1wb3RlbmN5JztcblxuZnVuY3Rpb24gYWxsb3dDcm9zc0RvbWFpbiAocmVxLCByZXMsIG5leHQpIHtcbiAgdHJ5IHtcbiAgICByZXMuaGVhZGVyKCdBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4nLCAnKicpO1xuICAgIHJlcy5oZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMnLCAnR0VULCBQT1NULCBQVVQsIE9QVElPTlMsIERFTEVURScpO1xuICAgIHJlcy5oZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMnLCAnQ2FjaGUtQ29udHJvbCwgUHJhZ21hLCBPcmlnaW4sIFgtUmVxdWVzdGVkLVdpdGgsIENvbnRlbnQtVHlwZSwgQWNjZXB0LCBVc2VyLUFnZW50Jyk7XG5cbiAgICAvLyBuZWVkIHRvIHJlc3BvbmQgMjAwIHRvIE9QVElPTlNcbiAgICBpZiAoJ09QVElPTlMnID09PSByZXEubWV0aG9kKSB7XG4gICAgICByZXR1cm4gcmVzLnNlbmRTdGF0dXMoMjAwKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZy5lcnJvcihgVW5leHBlY3RlZCBlcnJvcjogJHtlcnIuc3RhY2t9YCk7XG4gIH1cbiAgbmV4dCgpO1xufVxuXG5mdW5jdGlvbiBhbGxvd0Nyb3NzRG9tYWluQXN5bmNFeGVjdXRlIChiYXNlUGF0aCkge1xuICByZXR1cm4gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgLy8gdGhlcmUgYXJlIHR3byBwYXRocyBmb3IgYXN5bmMgcmVzcG9uc2VzLCBzbyBjb3ZlciBib3RoXG4gICAgLy8gaHR0cHM6Ly9yZWdleDEwMS5jb20vci90eFlpRXovMVxuICAgIGNvbnN0IHJlY2VpdmVBc3luY1Jlc3BvbnNlUmVnRXhwID0gbmV3IFJlZ0V4cChgJHtfLmVzY2FwZVJlZ0V4cChiYXNlUGF0aCl9L3Nlc3Npb24vW2EtZjAtOS1dKy8oYXBwaXVtLyk/cmVjZWl2ZV9hc3luY19yZXNwb25zZWApO1xuICAgIGlmICghcmVjZWl2ZUFzeW5jUmVzcG9uc2VSZWdFeHAudGVzdChyZXEudXJsKSkge1xuICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICB9XG4gICAgYWxsb3dDcm9zc0RvbWFpbihyZXEsIHJlcywgbmV4dCk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGZpeFB5dGhvbkNvbnRlbnRUeXBlIChiYXNlUGF0aCkge1xuICByZXR1cm4gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgLy8gaGFjayBiZWNhdXNlIHB5dGhvbiBjbGllbnQgbGlicmFyeSBnaXZlcyB1cyB3cm9uZyBjb250ZW50LXR5cGVcbiAgICBpZiAobmV3IFJlZ0V4cChgXiR7Xy5lc2NhcGVSZWdFeHAoYmFzZVBhdGgpfWApLnRlc3QocmVxLnBhdGgpICYmIC9eUHl0aG9uLy50ZXN0KHJlcS5oZWFkZXJzWyd1c2VyLWFnZW50J10pKSB7XG4gICAgICBpZiAocmVxLmhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddID09PSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJykge1xuICAgICAgICByZXEuaGVhZGVyc1snY29udGVudC10eXBlJ10gPSAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCc7XG4gICAgICB9XG4gICAgfVxuICAgIG5leHQoKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdFRvSlNPTkNvbnRlbnRUeXBlIChyZXEsIHJlcywgbmV4dCkge1xuICBpZiAoIXJlcS5oZWFkZXJzWydjb250ZW50LXR5cGUnXSkge1xuICAgIHJlcS5oZWFkZXJzWydjb250ZW50LXR5cGUnXSA9ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04JztcbiAgfVxuICBuZXh0KCk7XG59XG5cbmZ1bmN0aW9uIGNhdGNoQWxsSGFuZGxlciAoZXJyLCByZXEsIHJlcywgbmV4dCkge1xuICBpZiAocmVzLmhlYWRlcnNTZW50KSB7XG4gICAgcmV0dXJuIG5leHQoZXJyKTtcbiAgfVxuXG4gIGxvZy5lcnJvcihgVW5jYXVnaHQgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIGxvZy5lcnJvcignU2VuZGluZyBnZW5lcmljIGVycm9yIHJlc3BvbnNlJyk7XG4gIGNvbnN0IGVycm9yID0gZXJyb3JzLlVua25vd25FcnJvcjtcbiAgcmVzLnN0YXR1cyhlcnJvci53M2NTdGF0dXMoKSkuanNvbihwYXRjaFdpdGhTZXNzaW9uSWQocmVxLCB7XG4gICAgc3RhdHVzOiBlcnJvci5jb2RlKCksXG4gICAgdmFsdWU6IHtcbiAgICAgIGVycm9yOiBlcnJvci5lcnJvcigpLFxuICAgICAgbWVzc2FnZTogYEFuIHVua25vd24gc2VydmVyLXNpZGUgZXJyb3Igb2NjdXJyZWQgd2hpbGUgcHJvY2Vzc2luZyB0aGUgY29tbWFuZDogJHtlcnIubWVzc2FnZX1gLFxuICAgICAgc3RhY2t0cmFjZTogZXJyLnN0YWNrLFxuICAgIH1cbiAgfSkpO1xuICBsb2cuZXJyb3IoZXJyKTtcbn1cblxuZnVuY3Rpb24gY2F0Y2g0MDRIYW5kbGVyIChyZXEsIHJlcykge1xuICBsb2cuZGVidWcoYE5vIHJvdXRlIGZvdW5kIGZvciAke3JlcS51cmx9YCk7XG4gIGNvbnN0IGVycm9yID0gZXJyb3JzLlVua25vd25Db21tYW5kRXJyb3I7XG4gIHJlcy5zdGF0dXMoZXJyb3IudzNjU3RhdHVzKCkpLmpzb24ocGF0Y2hXaXRoU2Vzc2lvbklkKHJlcSwge1xuICAgIHN0YXR1czogZXJyb3IuY29kZSgpLFxuICAgIHZhbHVlOiB7XG4gICAgICBlcnJvcjogZXJyb3IuZXJyb3IoKSxcbiAgICAgIG1lc3NhZ2U6ICdUaGUgcmVxdWVzdGVkIHJlc291cmNlIGNvdWxkIG5vdCBiZSBmb3VuZCwgb3IgYSByZXF1ZXN0IHdhcyAnICtcbiAgICAgICAgJ3JlY2VpdmVkIHVzaW5nIGFuIEhUVFAgbWV0aG9kIHRoYXQgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgbWFwcGVkICcgK1xuICAgICAgICAncmVzb3VyY2UnLFxuICAgICAgc3RhY2t0cmFjZTogJycsXG4gICAgfVxuICB9KSk7XG59XG5cblxuY29uc3QgU0VTU0lPTl9JRF9QQVRURVJOID0gL1xcL3Nlc3Npb25cXC8oW14vXSspLztcblxuZnVuY3Rpb24gcGF0Y2hXaXRoU2Vzc2lvbklkIChyZXEsIGJvZHkpIHtcbiAgY29uc3QgbWF0Y2ggPSBTRVNTSU9OX0lEX1BBVFRFUk4uZXhlYyhyZXEudXJsKTtcbiAgaWYgKG1hdGNoKSB7XG4gICAgYm9keS5zZXNzaW9uSWQgPSBtYXRjaFsxXTtcbiAgfVxuICByZXR1cm4gYm9keTtcbn1cblxuZXhwb3J0IHtcbiAgYWxsb3dDcm9zc0RvbWFpbiwgZml4UHl0aG9uQ29udGVudFR5cGUsIGRlZmF1bHRUb0pTT05Db250ZW50VHlwZSxcbiAgY2F0Y2hBbGxIYW5kbGVyLCBhbGxvd0Nyb3NzRG9tYWluQXN5bmNFeGVjdXRlLCBoYW5kbGVJZGVtcG90ZW5jeSxcbiAgY2F0Y2g0MDRIYW5kbGVyLFxufTtcbiJdfQ==
126
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhbGxvd0Nyb3NzRG9tYWluIiwicmVxIiwicmVzIiwibmV4dCIsImhlYWRlciIsIm1ldGhvZCIsInNlbmRTdGF0dXMiLCJlcnIiLCJsb2ciLCJlcnJvciIsInN0YWNrIiwiYWxsb3dDcm9zc0RvbWFpbkFzeW5jRXhlY3V0ZSIsImJhc2VQYXRoIiwicmVjZWl2ZUFzeW5jUmVzcG9uc2VSZWdFeHAiLCJSZWdFeHAiLCJfIiwiZXNjYXBlUmVnRXhwIiwidGVzdCIsInVybCIsImZpeFB5dGhvbkNvbnRlbnRUeXBlIiwicGF0aCIsImhlYWRlcnMiLCJkZWZhdWx0VG9KU09OQ29udGVudFR5cGUiLCJjYXRjaEFsbEhhbmRsZXIiLCJoZWFkZXJzU2VudCIsIm1lc3NhZ2UiLCJlcnJvcnMiLCJVbmtub3duRXJyb3IiLCJzdGF0dXMiLCJ3M2NTdGF0dXMiLCJqc29uIiwicGF0Y2hXaXRoU2Vzc2lvbklkIiwiY29kZSIsInZhbHVlIiwic3RhY2t0cmFjZSIsImNhdGNoNDA0SGFuZGxlciIsImRlYnVnIiwiVW5rbm93bkNvbW1hbmRFcnJvciIsIlNFU1NJT05fSURfUEFUVEVSTiIsImJvZHkiLCJtYXRjaCIsImV4ZWMiLCJzZXNzaW9uSWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZXhwcmVzcy9taWRkbGV3YXJlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7ZXJyb3JzfSBmcm9tICcuLi9wcm90b2NvbCc7XG5pbXBvcnQge2hhbmRsZUlkZW1wb3RlbmN5fSBmcm9tICcuL2lkZW1wb3RlbmN5JztcblxuZnVuY3Rpb24gYWxsb3dDcm9zc0RvbWFpbihyZXEsIHJlcywgbmV4dCkge1xuICB0cnkge1xuICAgIHJlcy5oZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbicsICcqJyk7XG4gICAgcmVzLmhlYWRlcignQWNjZXNzLUNvbnRyb2wtQWxsb3ctTWV0aG9kcycsICdHRVQsIFBPU1QsIFBVVCwgT1BUSU9OUywgREVMRVRFJyk7XG4gICAgcmVzLmhlYWRlcihcbiAgICAgICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzJyxcbiAgICAgICdDYWNoZS1Db250cm9sLCBQcmFnbWEsIE9yaWdpbiwgWC1SZXF1ZXN0ZWQtV2l0aCwgQ29udGVudC1UeXBlLCBBY2NlcHQsIFVzZXItQWdlbnQnXG4gICAgKTtcblxuICAgIC8vIG5lZWQgdG8gcmVzcG9uZCAyMDAgdG8gT1BUSU9OU1xuICAgIGlmICgnT1BUSU9OUycgPT09IHJlcS5tZXRob2QpIHtcbiAgICAgIHJldHVybiByZXMuc2VuZFN0YXR1cygyMDApO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nLmVycm9yKGBVbmV4cGVjdGVkIGVycm9yOiAke2Vyci5zdGFja31gKTtcbiAgfVxuICBuZXh0KCk7XG59XG5cbmZ1bmN0aW9uIGFsbG93Q3Jvc3NEb21haW5Bc3luY0V4ZWN1dGUoYmFzZVBhdGgpIHtcbiAgcmV0dXJuIChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIC8vIHRoZXJlIGFyZSB0d28gcGF0aHMgZm9yIGFzeW5jIHJlc3BvbnNlcywgc28gY292ZXIgYm90aFxuICAgIC8vIGh0dHBzOi8vcmVnZXgxMDEuY29tL3IvdHhZaUV6LzFcbiAgICBjb25zdCByZWNlaXZlQXN5bmNSZXNwb25zZVJlZ0V4cCA9IG5ldyBSZWdFeHAoXG4gICAgICBgJHtfLmVzY2FwZVJlZ0V4cChiYXNlUGF0aCl9L3Nlc3Npb24vW2EtZjAtOS1dKy8oYXBwaXVtLyk/cmVjZWl2ZV9hc3luY19yZXNwb25zZWBcbiAgICApO1xuICAgIGlmICghcmVjZWl2ZUFzeW5jUmVzcG9uc2VSZWdFeHAudGVzdChyZXEudXJsKSkge1xuICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICB9XG4gICAgYWxsb3dDcm9zc0RvbWFpbihyZXEsIHJlcywgbmV4dCk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGZpeFB5dGhvbkNvbnRlbnRUeXBlKGJhc2VQYXRoKSB7XG4gIHJldHVybiAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICAvLyBoYWNrIGJlY2F1c2UgcHl0aG9uIGNsaWVudCBsaWJyYXJ5IGdpdmVzIHVzIHdyb25nIGNvbnRlbnQtdHlwZVxuICAgIGlmIChcbiAgICAgIG5ldyBSZWdFeHAoYF4ke18uZXNjYXBlUmVnRXhwKGJhc2VQYXRoKX1gKS50ZXN0KHJlcS5wYXRoKSAmJlxuICAgICAgL15QeXRob24vLnRlc3QocmVxLmhlYWRlcnNbJ3VzZXItYWdlbnQnXSlcbiAgICApIHtcbiAgICAgIGlmIChyZXEuaGVhZGVyc1snY29udGVudC10eXBlJ10gPT09ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnKSB7XG4gICAgICAgIHJlcS5oZWFkZXJzWydjb250ZW50LXR5cGUnXSA9ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04JztcbiAgICAgIH1cbiAgICB9XG4gICAgbmV4dCgpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0VG9KU09OQ29udGVudFR5cGUocmVxLCByZXMsIG5leHQpIHtcbiAgaWYgKCFyZXEuaGVhZGVyc1snY29udGVudC10eXBlJ10pIHtcbiAgICByZXEuaGVhZGVyc1snY29udGVudC10eXBlJ10gPSAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCc7XG4gIH1cbiAgbmV4dCgpO1xufVxuXG5mdW5jdGlvbiBjYXRjaEFsbEhhbmRsZXIoZXJyLCByZXEsIHJlcywgbmV4dCkge1xuICBpZiAocmVzLmhlYWRlcnNTZW50KSB7XG4gICAgcmV0dXJuIG5leHQoZXJyKTtcbiAgfVxuXG4gIGxvZy5lcnJvcihgVW5jYXVnaHQgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIGxvZy5lcnJvcignU2VuZGluZyBnZW5lcmljIGVycm9yIHJlc3BvbnNlJyk7XG4gIGNvbnN0IGVycm9yID0gZXJyb3JzLlVua25vd25FcnJvcjtcbiAgcmVzLnN0YXR1cyhlcnJvci53M2NTdGF0dXMoKSkuanNvbihcbiAgICBwYXRjaFdpdGhTZXNzaW9uSWQocmVxLCB7XG4gICAgICBzdGF0dXM6IGVycm9yLmNvZGUoKSxcbiAgICAgIHZhbHVlOiB7XG4gICAgICAgIGVycm9yOiBlcnJvci5lcnJvcigpLFxuICAgICAgICBtZXNzYWdlOiBgQW4gdW5rbm93biBzZXJ2ZXItc2lkZSBlcnJvciBvY2N1cnJlZCB3aGlsZSBwcm9jZXNzaW5nIHRoZSBjb21tYW5kOiAke2Vyci5tZXNzYWdlfWAsXG4gICAgICAgIHN0YWNrdHJhY2U6IGVyci5zdGFjayxcbiAgICAgIH0sXG4gICAgfSlcbiAgKTtcbiAgbG9nLmVycm9yKGVycik7XG59XG5cbmZ1bmN0aW9uIGNhdGNoNDA0SGFuZGxlcihyZXEsIHJlcykge1xuICBsb2cuZGVidWcoYE5vIHJvdXRlIGZvdW5kIGZvciAke3JlcS51cmx9YCk7XG4gIGNvbnN0IGVycm9yID0gZXJyb3JzLlVua25vd25Db21tYW5kRXJyb3I7XG4gIHJlcy5zdGF0dXMoZXJyb3IudzNjU3RhdHVzKCkpLmpzb24oXG4gICAgcGF0Y2hXaXRoU2Vzc2lvbklkKHJlcSwge1xuICAgICAgc3RhdHVzOiBlcnJvci5jb2RlKCksXG4gICAgICB2YWx1ZToge1xuICAgICAgICBlcnJvcjogZXJyb3IuZXJyb3IoKSxcbiAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAnVGhlIHJlcXVlc3RlZCByZXNvdXJjZSBjb3VsZCBub3QgYmUgZm91bmQsIG9yIGEgcmVxdWVzdCB3YXMgJyArXG4gICAgICAgICAgJ3JlY2VpdmVkIHVzaW5nIGFuIEhUVFAgbWV0aG9kIHRoYXQgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgbWFwcGVkICcgK1xuICAgICAgICAgICdyZXNvdXJjZScsXG4gICAgICAgIHN0YWNrdHJhY2U6ICcnLFxuICAgICAgfSxcbiAgICB9KVxuICApO1xufVxuXG5jb25zdCBTRVNTSU9OX0lEX1BBVFRFUk4gPSAvXFwvc2Vzc2lvblxcLyhbXi9dKykvO1xuXG5mdW5jdGlvbiBwYXRjaFdpdGhTZXNzaW9uSWQocmVxLCBib2R5KSB7XG4gIGNvbnN0IG1hdGNoID0gU0VTU0lPTl9JRF9QQVRURVJOLmV4ZWMocmVxLnVybCk7XG4gIGlmIChtYXRjaCkge1xuICAgIGJvZHkuc2Vzc2lvbklkID0gbWF0Y2hbMV07XG4gIH1cbiAgcmV0dXJuIGJvZHk7XG59XG5cbmV4cG9ydCB7XG4gIGFsbG93Q3Jvc3NEb21haW4sXG4gIGZpeFB5dGhvbkNvbnRlbnRUeXBlLFxuICBkZWZhdWx0VG9KU09OQ29udGVudFR5cGUsXG4gIGNhdGNoQWxsSGFuZGxlcixcbiAgYWxsb3dDcm9zc0RvbWFpbkFzeW5jRXhlY3V0ZSxcbiAgaGFuZGxlSWRlbXBvdGVuY3ksXG4gIGNhdGNoNDA0SGFuZGxlcixcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxTQUFTQSxnQkFBVCxDQUEwQkMsR0FBMUIsRUFBK0JDLEdBQS9CLEVBQW9DQyxJQUFwQyxFQUEwQztFQUN4QyxJQUFJO0lBQ0ZELEdBQUcsQ0FBQ0UsTUFBSixDQUFXLDZCQUFYLEVBQTBDLEdBQTFDO0lBQ0FGLEdBQUcsQ0FBQ0UsTUFBSixDQUFXLDhCQUFYLEVBQTJDLGlDQUEzQztJQUNBRixHQUFHLENBQUNFLE1BQUosQ0FDRSw4QkFERixFQUVFLG1GQUZGOztJQU1BLElBQUksY0FBY0gsR0FBRyxDQUFDSSxNQUF0QixFQUE4QjtNQUM1QixPQUFPSCxHQUFHLENBQUNJLFVBQUosQ0FBZSxHQUFmLENBQVA7SUFDRDtFQUNGLENBWkQsQ0FZRSxPQUFPQyxHQUFQLEVBQVk7SUFDWkMsZUFBQSxDQUFJQyxLQUFKLENBQVcscUJBQW9CRixHQUFHLENBQUNHLEtBQU0sRUFBekM7RUFDRDs7RUFDRFAsSUFBSTtBQUNMOztBQUVELFNBQVNRLDRCQUFULENBQXNDQyxRQUF0QyxFQUFnRDtFQUM5QyxPQUFPLENBQUNYLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0lB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
@@ -1,3 +1,24 @@
1
+ /**
2
+ * Options for {@linkcode startServer }.
3
+ */
4
+ export type StartServerOpts = {
5
+ /**
6
+ * - HTTP server instance
7
+ */
8
+ httpServer: import('http').Server;
9
+ /**
10
+ * - Port to run on
11
+ */
12
+ port: number;
13
+ /**
14
+ * - Keep-alive timeout in milliseconds
15
+ */
16
+ keepAliveTimeout: number;
17
+ /**
18
+ * - Optional hostname
19
+ */
20
+ hostname?: string | undefined;
21
+ };
1
22
  export function server(opts?: {}): Promise<any>;
2
23
  export function configureServer({ app, addRoutes, allowCors, basePath, extraMethodMap, }: {
3
24
  app: any;
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../lib/express/server.js"],"names":[],"mappings":"AA4BA,gDAyCC;AAED;;;;;;SA6CC;AA+ED,sDAgBC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../lib/express/server.js"],"names":[],"mappings":";;;;;;;gBAyOc,OAAO,MAAM,EAAE,MAAM;;;;UACrB,MAAM;;;;sBACN,MAAM;;;;;;AA3MpB,gDA8CC;AAED;;;;;;SA6CC;AAqFD,sDAgBC"}