testcafe 1.20.2-alpha.1 → 2.0.0-rc.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (231) hide show
  1. package/lib/api/request-hooks/assert-type.js +2 -2
  2. package/lib/api/request-hooks/hook.js +2 -2
  3. package/lib/api/request-hooks/request-logger.js +2 -2
  4. package/lib/api/skip-js-errors/index.js +62 -0
  5. package/lib/api/structure/base-unit.js +2 -2
  6. package/lib/api/structure/fixture.js +13 -13
  7. package/lib/api/structure/test.js +18 -17
  8. package/lib/api/structure/testing-unit.js +26 -16
  9. package/lib/api/test-controller/assertion.js +5 -5
  10. package/lib/api/test-controller/execution-context.js +2 -2
  11. package/lib/api/test-controller/index.js +33 -30
  12. package/lib/api/test-controller/proxy.js +2 -2
  13. package/lib/api/test-page-url.js +4 -4
  14. package/lib/api/test-run-tracker.js +2 -2
  15. package/lib/api/wrap-test-function.js +3 -3
  16. package/lib/assertions/executor.js +4 -4
  17. package/lib/assertions/get-fn.js +3 -3
  18. package/lib/browser/connection/gateway.js +18 -18
  19. package/lib/browser/connection/get-hints.js +8 -8
  20. package/lib/browser/connection/index.js +11 -11
  21. package/lib/browser/connection/remotes-queue.js +4 -4
  22. package/lib/browser/provider/built-in/dedicated/base.js +6 -6
  23. package/lib/browser/provider/built-in/dedicated/chrome/cdp-client/index.js +10 -10
  24. package/lib/browser/provider/built-in/dedicated/chrome/config.js +17 -17
  25. package/lib/browser/provider/built-in/dedicated/chrome/create-temp-profile.js +4 -4
  26. package/lib/browser/provider/built-in/dedicated/chrome/index.js +6 -6
  27. package/lib/browser/provider/built-in/dedicated/chrome/local-chrome.js +6 -6
  28. package/lib/browser/provider/built-in/dedicated/chrome/runtime-info.js +4 -4
  29. package/lib/browser/provider/built-in/dedicated/edge/runtime-info.js +2 -2
  30. package/lib/browser/provider/built-in/dedicated/firefox/config.js +8 -8
  31. package/lib/browser/provider/built-in/dedicated/firefox/create-temp-profile.js +3 -3
  32. package/lib/browser/provider/built-in/dedicated/firefox/index.js +5 -5
  33. package/lib/browser/provider/built-in/dedicated/firefox/local-firefox.js +2 -2
  34. package/lib/browser/provider/built-in/dedicated/firefox/marionette-client/index.js +7 -7
  35. package/lib/browser/provider/built-in/dedicated/firefox/runtime-info.js +3 -3
  36. package/lib/browser/provider/built-in/path.js +2 -2
  37. package/lib/browser/provider/built-in/remote.js +3 -3
  38. package/lib/browser/provider/index.js +5 -5
  39. package/lib/browser/provider/plugin-host.js +5 -6
  40. package/lib/browser/provider/pool.js +4 -4
  41. package/lib/browser/provider/utils/argument-parsing.js +3 -3
  42. package/lib/browser/provider/utils/browser-starter.js +2 -2
  43. package/lib/cli/argument-parser/index.js +52 -41
  44. package/lib/cli/argument-parser/parse-utils.js +2 -2
  45. package/lib/cli/authentication-helper.js +3 -3
  46. package/lib/cli/cli.js +8 -8
  47. package/lib/cli/correct-browsers-and-sources.js +2 -2
  48. package/lib/cli/index.js +2 -2
  49. package/lib/cli/log.js +3 -3
  50. package/lib/cli/remotes-wizard.js +3 -3
  51. package/lib/client/automation/index.js +120 -34
  52. package/lib/client/automation/index.min.js +1 -1
  53. package/lib/client/browser/idle-page/index.js +321 -317
  54. package/lib/client/browser/service-worker.js +244 -290
  55. package/lib/client/core/deps/hammerhead.js +12 -4
  56. package/lib/client/core/index.js +145 -55
  57. package/lib/client/core/index.min.js +1 -1
  58. package/lib/client/core/utils/dom.js +33 -28
  59. package/lib/client/core/utils/position.js +18 -14
  60. package/lib/client/core/utils/style.js +8 -4
  61. package/lib/client/driver/command-executors/client-functions/selector-executor/filter.js +5 -5
  62. package/lib/client/driver/command-executors/client-functions/selector-executor/utils.js +3 -3
  63. package/lib/client/driver/deps/hammerhead.js +12 -4
  64. package/lib/client/driver/deps/testcafe-core.js +12 -4
  65. package/lib/client/driver/deps/testcafe-ui.js +12 -4
  66. package/lib/client/driver/index.js +654 -630
  67. package/lib/client/driver/index.min.js +1 -1
  68. package/lib/client/driver/status.js +2 -2
  69. package/lib/client/ui/index.js +10 -8
  70. package/lib/client/ui/index.min.js +1 -1
  71. package/lib/client-functions/builder-symbol.js +1 -2
  72. package/lib/client-functions/client-function-builder.js +12 -12
  73. package/lib/client-functions/replicator.js +2 -2
  74. package/lib/client-functions/selector-api-execution-mode.js +2 -2
  75. package/lib/client-functions/selectors/add-api.js +48 -48
  76. package/lib/client-functions/selectors/selector-builder.js +17 -17
  77. package/lib/compiler/compile-client-function.js +6 -6
  78. package/lib/compiler/index.js +9 -9
  79. package/lib/compiler/test-file/api-based.js +8 -8
  80. package/lib/compiler/test-file/base.js +6 -6
  81. package/lib/compiler/test-file/exportble-lib-path.js +2 -2
  82. package/lib/compiler/test-file/formats/coffeescript/compiler.js +2 -2
  83. package/lib/compiler/test-file/formats/coffeescript/get-test-list.js +2 -2
  84. package/lib/compiler/test-file/formats/es-next/compiler.js +4 -4
  85. package/lib/compiler/test-file/formats/es-next/get-test-list.js +4 -4
  86. package/lib/compiler/test-file/formats/raw.js +2 -2
  87. package/lib/compiler/test-file/formats/typescript/compiler.js +11 -11
  88. package/lib/compiler/test-file/formats/typescript/get-test-list.js +3 -3
  89. package/lib/compiler/test-file/test-file-parser-base.js +3 -3
  90. package/lib/configuration/configuration-base.js +15 -15
  91. package/lib/configuration/interfaces.js +1 -1
  92. package/lib/configuration/skip-js-errors-option-names.js +11 -0
  93. package/lib/configuration/testcafe-configuration.js +21 -16
  94. package/lib/configuration/types.js +1 -1
  95. package/lib/configuration/typescript-configuration.js +4 -4
  96. package/lib/custom-client-scripts/assert-type.js +2 -2
  97. package/lib/custom-client-scripts/client-script.js +6 -6
  98. package/lib/custom-client-scripts/get-code.js +2 -2
  99. package/lib/custom-client-scripts/routing.js +3 -3
  100. package/lib/custom-client-scripts/utils.js +3 -3
  101. package/lib/dashboard/connector.js +4 -4
  102. package/lib/dashboard/get-default-project-link.js +2 -2
  103. package/lib/dashboard/index.js +26 -26
  104. package/lib/errors/create-stack-filter.js +2 -2
  105. package/lib/errors/error-list.js +2 -2
  106. package/lib/errors/get-callsite.js +2 -2
  107. package/lib/errors/is-internal-stack-frame.js +5 -5
  108. package/lib/errors/process-test-fn-error.js +2 -2
  109. package/lib/errors/runtime/index.js +10 -10
  110. package/lib/errors/runtime/templates.js +5 -2
  111. package/lib/errors/runtime/type-assertions.js +6 -6
  112. package/lib/errors/stack-cleaning-hook.js +2 -2
  113. package/lib/errors/test-run/formattable-adapter.js +7 -7
  114. package/lib/errors/test-run/index.js +25 -5
  115. package/lib/errors/test-run/render-error-template/index.js +6 -6
  116. package/lib/errors/test-run/render-error-template/utils.js +2 -2
  117. package/lib/errors/test-run/templates.js +40 -31
  118. package/lib/errors/test-run/utils.js +7 -7
  119. package/lib/errors/types.js +5 -1
  120. package/lib/index.js +1 -1
  121. package/lib/live/file-watcher/index.js +2 -2
  122. package/lib/live/keyboard-observer.js +3 -3
  123. package/lib/live/test-run-controller.js +3 -3
  124. package/lib/live/test-run.js +3 -2
  125. package/lib/live/test-runner.js +2 -2
  126. package/lib/load-assets.js +2 -2
  127. package/lib/notifications/add-rendered-warning.js +4 -4
  128. package/lib/notifications/debug-logger.js +6 -6
  129. package/lib/notifications/deprecated.js +2 -2
  130. package/lib/notifications/information-message.js +4 -3
  131. package/lib/proxyless/resource-injector.js +4 -4
  132. package/lib/reporter/command/command-formatter.js +4 -4
  133. package/lib/reporter/index.js +10 -10
  134. package/lib/reporter/plugin-host.js +7 -7
  135. package/lib/role/index.js +8 -8
  136. package/lib/role/role.js +2 -2
  137. package/lib/runner/bootstrapper.js +20 -20
  138. package/lib/runner/browser-job.js +3 -3
  139. package/lib/runner/browser-set.js +12 -12
  140. package/lib/runner/fixture-hook-controller.js +5 -5
  141. package/lib/runner/index.js +43 -33
  142. package/lib/runner/task/index.js +10 -6
  143. package/lib/runner/test-run-hook-controller.js +5 -5
  144. package/lib/runner/tested-app.js +7 -7
  145. package/lib/screenshots/capturer.js +17 -17
  146. package/lib/screenshots/crop.js +8 -8
  147. package/lib/screenshots/index.js +6 -10
  148. package/lib/screenshots/utils.js +4 -4
  149. package/lib/services/compiler/host.js +8 -8
  150. package/lib/services/compiler/service.js +13 -13
  151. package/lib/services/compiler/test-run-proxy.js +8 -8
  152. package/lib/services/serialization/replicator/transforms/callsite-record-transform.js +2 -2
  153. package/lib/services/serialization/replicator/transforms/command-base-trasform/command-constructors.js +2 -1
  154. package/lib/services/serialization/replicator/transforms/command-base-trasform/index.js +3 -3
  155. package/lib/services/serialization/replicator/transforms/raw-command-callsite-record-transform.js +2 -2
  156. package/lib/services/serialization/test-structure.js +4 -4
  157. package/lib/services/utils/ipc/interfaces.js +1 -3
  158. package/lib/services/utils/ipc/io.js +3 -3
  159. package/lib/services/utils/ipc/message.js +2 -2
  160. package/lib/services/utils/ipc/proxy.js +4 -4
  161. package/lib/services/utils/ipc/transport.js +2 -2
  162. package/lib/shared/errors/index.js +9 -2
  163. package/lib/shared/errors/selector-error-ctor-callback.js +7 -3
  164. package/lib/test-run/bookmark.js +1 -1
  165. package/lib/test-run/browser-manipulation-queue.js +3 -3
  166. package/lib/test-run/commands/actions.js +66 -46
  167. package/lib/test-run/commands/assertion.js +3 -3
  168. package/lib/test-run/commands/base.js +2 -2
  169. package/lib/test-run/commands/browser-manipulation.js +8 -8
  170. package/lib/test-run/commands/observation.js +4 -4
  171. package/lib/test-run/commands/options.js +27 -12
  172. package/lib/test-run/commands/type.js +2 -1
  173. package/lib/test-run/commands/utils.js +3 -2
  174. package/lib/test-run/commands/validations/argument.js +19 -10
  175. package/lib/test-run/commands/validations/factories.js +10 -2
  176. package/lib/test-run/commands/validations/initializers.js +4 -4
  177. package/lib/test-run/debug-log.js +4 -4
  178. package/lib/test-run/execute-js-expression/index.js +4 -4
  179. package/lib/test-run/index.js +48 -41
  180. package/lib/test-run/request/create-request-options.js +9 -9
  181. package/lib/test-run/request/process-response-data.js +2 -2
  182. package/lib/test-run/request/send.js +5 -5
  183. package/lib/testcafe.js +8 -4
  184. package/lib/utils/check-file-path.js +2 -2
  185. package/lib/utils/check-url.js +2 -2
  186. package/lib/utils/correct-file-path.js +4 -4
  187. package/lib/utils/delegated-api.js +1 -1
  188. package/lib/utils/detect-ffmpeg.js +3 -3
  189. package/lib/utils/diff/colors.js +2 -2
  190. package/lib/utils/diff/index.js +11 -7
  191. package/lib/utils/diff/util.js +5 -5
  192. package/lib/utils/diff.js +4 -4
  193. package/lib/utils/escape-user-agent.js +2 -2
  194. package/lib/utils/execute-fn-with-timeout.js +2 -2
  195. package/lib/utils/get-browser.js +2 -2
  196. package/lib/utils/get-filter-fn.js +4 -4
  197. package/lib/utils/get-options/base.js +2 -2
  198. package/lib/utils/get-options/compiler.js +2 -2
  199. package/lib/utils/get-options/dashboard.js +2 -2
  200. package/lib/utils/get-options/get-assertion-timeout.js +1 -1
  201. package/lib/utils/get-options/index.js +4 -2
  202. package/lib/utils/get-options/meta.js +2 -2
  203. package/lib/utils/get-options/quarantine.js +8 -6
  204. package/lib/utils/get-options/screenshot.js +2 -2
  205. package/lib/utils/get-options/skip-js-errors.js +35 -0
  206. package/lib/utils/get-options/ssl.js +6 -6
  207. package/lib/utils/get-options/video.js +2 -2
  208. package/lib/utils/is-password-input.js +1 -1
  209. package/lib/utils/log-entry.js +2 -2
  210. package/lib/utils/make-reg-exp.js +19 -6
  211. package/lib/utils/moment-loader.js +2 -2
  212. package/lib/utils/parse-file-list.js +7 -7
  213. package/lib/utils/path-pattern.js +4 -4
  214. package/lib/utils/prepare-reporters.js +2 -2
  215. package/lib/utils/prerender-callsite.js +6 -6
  216. package/lib/utils/process.js +7 -7
  217. package/lib/utils/promisified-functions.js +14 -14
  218. package/lib/utils/raw-command-callsite-record.js +2 -2
  219. package/lib/utils/resolve-path-relatively-cwd.js +2 -2
  220. package/lib/utils/string.js +3 -3
  221. package/lib/utils/temp-directory/cleanup-process/index.js +6 -6
  222. package/lib/utils/temp-directory/cleanup-process/worker.js +4 -4
  223. package/lib/utils/temp-directory/index.js +6 -6
  224. package/lib/utils/temp-directory/lockfile.js +2 -2
  225. package/lib/video-recorder/process.js +6 -6
  226. package/lib/video-recorder/recorder.js +9 -9
  227. package/lib/video-recorder/test-run-video-recorder.js +2 -2
  228. package/package.json +8 -7
  229. package/ts-defs/index.d.ts +46 -7
  230. package/ts-defs/selectors.d.ts +39 -0
  231. package/ts-defs/testcafe-scripts.d.ts +39 -0
@@ -13,7 +13,7 @@ const delay_1 = __importDefault(require("../../utils/delay"));
13
13
  const client_functions_1 = require("./utils/client-functions");
14
14
  const warning_message_1 = __importDefault(require("../../notifications/warning-message"));
15
15
  const get_os_info_1 = __importDefault(require("get-os-info"));
16
- const DEBUG_LOGGER = debug_1.default('testcafe:browser:provider');
16
+ const DEBUG_LOGGER = (0, debug_1.default)('testcafe:browser:provider');
17
17
  const BROWSER_OPENING_DELAY = 2000;
18
18
  const RESIZE_DIFF_SIZE = {
19
19
  width: 100,
@@ -116,7 +116,7 @@ class BrowserProvider {
116
116
  await this._ensureLocalBrowserInfo(browserId);
117
117
  // NOTE: delay to ensure the window finished the opening
118
118
  await this.plugin.waitForConnectionReady(browserId);
119
- await delay_1.default(BROWSER_OPENING_DELAY);
119
+ await (0, delay_1.default)(BROWSER_OPENING_DELAY);
120
120
  if (this.localBrowsersInfo[browserId]) {
121
121
  const connection = connection_1.default.getById(browserId);
122
122
  let windowDescriptor = null;
@@ -218,7 +218,7 @@ class BrowserProvider {
218
218
  }
219
219
  async getOSInfo(browserId) {
220
220
  if (await this.isLocalBrowser(browserId))
221
- return await get_os_info_1.default();
221
+ return await (0, get_os_info_1.default)();
222
222
  return await this.plugin.getOSInfo(browserId);
223
223
  }
224
224
  async openBrowser(browserId, pageUrl, browserOption, disableMultipleWindows, proxyless) {
@@ -282,7 +282,7 @@ class BrowserProvider {
282
282
  connection.addWarning(warning_message_1.default.screenshotsFullPageNotSupported, connection.browserInfo.alias);
283
283
  return;
284
284
  }
285
- await make_dir_1.default(path_1.dirname(screenshotPath));
285
+ await (0, make_dir_1.default)((0, path_1.dirname)(screenshotPath));
286
286
  if (takeLocalBrowsersScreenshot)
287
287
  await this._takeLocalBrowserScreenshot(browserId, screenshotPath);
288
288
  else
@@ -317,4 +317,4 @@ class BrowserProvider {
317
317
  }
318
318
  exports.default = BrowserProvider;
319
319
  module.exports = exports.default;
320
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYnJvd3Nlci9wcm92aWRlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGtEQUEwQjtBQUMxQixvRkFBa0Q7QUFDbEQsMERBQTJCO0FBQzNCLCtCQUErQjtBQUMvQix3REFBK0I7QUFDL0IsK0RBQXNFO0FBQ3RFLDhEQUFzQztBQUN0QywrREFJa0M7QUFDbEMsMEZBQWtFO0FBR2xFLDhEQUFxRDtBQUVyRCxNQUFNLFlBQVksR0FBRyxlQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztBQUV4RCxNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQztBQUVuQyxNQUFNLGdCQUFnQixHQUFHO0lBQ3JCLEtBQUssRUFBRyxHQUFHO0lBQ1gsTUFBTSxFQUFFLEdBQUc7Q0FDZCxDQUFDO0FBYUYsU0FBUyxRQUFRLENBQUUsS0FBVyxFQUFFLEtBQVc7SUFDdkMsT0FBTztRQUNILEtBQUssRUFBRyxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLO1FBQ2pDLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNO0tBQ3RDLENBQUM7QUFDTixDQUFDO0FBRUQsU0FBUyxhQUFhLENBQUUsS0FBVyxFQUFFLEtBQVc7SUFDNUMsT0FBTztRQUNILEtBQUssRUFBRyxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLO1FBQ2pDLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNO0tBQ3RDLENBQUM7QUFDTixDQUFDO0FBRUQsTUFBcUIsZUFBZTtJQU1oQyxZQUFvQixNQUFXO1FBQzNCLElBQUksQ0FBQyxNQUFNLEdBQVcsTUFBTSxDQUFDO1FBQzdCLElBQUksQ0FBQyxXQUFXLEdBQU0sT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsY0FBYyxH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TUFBTSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFTSxpQkFBaUIsQ0FBRSxTQUFpQixFQUFFLEdBQVc7UUFDcEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVNLEtBQUssQ0FBQyx1QkFBdUIsQ0FBRSxTQUFpQjtRQUNuRCxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDekQsQ0FBQztDQUNKO0FBMVlELGtDQTBZQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgYnJvd3NlclRvb2xzIGZyb20gJ3Rlc3RjYWZlLWJyb3dzZXItdG9vbHMnO1xuaW1wb3J0IE9TIGZyb20gJ29zLWZhbWlseSc7XG5pbXBvcnQgeyBkaXJuYW1lIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgbWFrZURpciBmcm9tICdtYWtlLWRpcic7XG5pbXBvcnQgQnJvd3NlckNvbm5lY3Rpb24sIHsgQnJvd3NlckNsb3NpbmdJbmZvIH0gZnJvbSAnLi4vY29ubmVjdGlvbic7XG5pbXBvcnQgZGVsYXkgZnJvbSAnLi4vLi4vdXRpbHMvZGVsYXknO1xuaW1wb3J0IHtcbiAgICBHRVRfSVNfU0VSVklDRV9XT1JLRVJfRU5BQkxFRCxcbiAgICBHRVRfVElUTEVfU0NSSVBULFxuICAgIEdFVF9XSU5ET1dfRElNRU5TSU9OU19JTkZPX1NDUklQVCxcbn0gZnJvbSAnLi91dGlscy9jbGllbnQtZnVuY3Rpb25zJztcbmltcG9ydCBXQVJOSU5HX01FU1NBR0UgZnJvbSAnLi4vLi4vbm90aWZpY2F0aW9ucy93YXJuaW5nLW1lc3NhZ2UnO1xuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb24vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBXaW5kb3dEaW1lbnRpb25zSW5mbyB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IGdldExvY2FsT1NJbmZvLCB7IE9TSW5mbyB9IGZyb20gJ2dldC1vcy1pbmZvJztcblxuY29uc3QgREVCVUdfTE9HR0VSID0gZGVidWcoJ3Rlc3RjYWZlOmJyb3dzZXI6cHJvdmlkZXInKTtcblxuY29uc3QgQlJPV1NFUl9PUEVOSU5HX0RFTEFZID0gMjAwMDtcblxuY29uc3QgUkVTSVpFX0RJRkZfU0laRSA9IHtcbiAgICB3aWR0aDogIDEwMCxcbiAgICBoZWlnaHQ6IDEwMCxcbn07XG5cbmludGVyZmFjZSBTaXplIHtcbiAgICB3aWR0aDogbnVtYmVyO1xuICAgIGhlaWdodDogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgTG9jYWxCcm93c2VySW5mbyB7XG4gICAgd2luZG93RGVzY3JpcHRvcjogbnVsbCB8IHN0cmluZztcbiAgICBtYXhTY3JlZW5TaXplOiBudWxsIHwgU2l6ZTtcbiAgICByZXNpemVDb3JyZWN0aW9uczogbnVsbCB8IFNpemU7XG59XG5cbmZ1bmN0aW9uIHN1bVNpemVzIChzaXplQTogU2l6ZSwgc2l6ZUI6IFNpemUpOiBTaXplIHtcbiAgICByZXR1cm4ge1xuICAgICAgICB3aWR0aDogIHNpemVBLndpZHRoICsgc2l6ZUIud2lkdGgsXG4gICAgICAgIGhlaWdodDogc2l6ZUEuaGVpZ2h0ICsgc2l6ZUIuaGVpZ2h0LFxuICAgIH07XG59XG5cbmZ1bmN0aW9uIHN1YnRyYWN0U2l6ZXMgKHNpemVBOiBTaXplLCBzaXplQjogU2l6ZSk6IFNpemUge1xuICAgIHJldHVybiB7XG4gICAgICAgIHdpZHRoOiAgc2l6ZUEud2lkdGggLSBzaXplQi53aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBzaXplQS5oZWlnaHQgLSBzaXplQi5oZWlnaHQsXG4gICAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnJvd3NlclByb3ZpZGVyIHtcbiAgICBwcml2YXRlIHBsdWdpbjogYW55O1xuICAgIHByaXZhdGUgaW5pdFByb21pc2U6IFByb21pc2U8YW55PjtcbiAgICBwcml2YXRlIGlzTXVsdGlCcm93c2VyOiBib29sZWFuO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9jYWxCcm93c2Vyc0luZm86IERpY3Rpb25hcnk8TG9jYWxCcm93c2VySW5mbz47XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKHBsdWdpbjogYW55KSB7XG4gICAgICAgIHRoaXMucGx1Z2luICAgICAgICAgPSBwbHVnaW47XG4gICAgICAgIHRoaXMuaW5pdFByb21pc2UgICAgPSBQcm9taXNlLnJlc29sdmUoZmFsc2UpO1xuICAgICAgICB0aGlzLmlzTXVsdGlCcm93c2VyID0gdGhpcy5wbHVnaW4uaXNNdWx0aUJyb3dzZXI7XG4gICAgICAgIC8vIEhBQ0s6IFRoZSBicm93c2VyIHdpbmRvdyBoYXMgZGlmZmVyZW50IGJvcmRlciBzaXplcyBpbiBub3JtYWwgYW5kIG1heGltaXplZCBtb2Rlcy4gU28sIHdlIG5lZWQgdG8gYmUgc3VyZSB0aGF0IHRoZSB3aW5kb3cgaXNcbiAgICAgICAgLy8gbm90IG1heGltaXplZCBiZWZvcmUgcmVzaXppbmcgaXQgaW4gb3JkZXIgdG8ga2VlcCB0aGUgbWVjaGFuaXNtIG9mIGNvcnJlY3RpbmcgdGhlIGNsaWVudCBhcmVhIHNpemUgd29ya2luZy4gV2hlbiBicm93c2VyIGlzIHN0YXJ0ZWQsXG4gICAgICAgIC8vIHdlIGFyZSByZXNpemluZyBpdCBmb3IgdGhlIGZpcnN0IHRpbWUgdG8gc3dpdGNoIHRoZSB3aW5kb3cgdG8gbm9ybWFsIG1vZGUsIGFuZCBmb3IgdGhlIHNlY29uZCB0aW1lIC0gdG8gcmVzdG9yZSB0aGUgY2xpZW50IGFyZWEgc2l6ZS5cbiAgICAgICAgdGhpcy5sb2NhbEJyb3dzZXJzSW5mbyA9IHt9O1xuICAgIH1cblxuICAgIHByaXZhdGUgX2Vuc3VyZUxvY2FsQnJvd3NlckluZm8gKGJyb3dzZXJJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmxvY2FsQnJvd3NlcnNJbmZvW2Jyb3dzZXJJZF0pXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgdGhpcy5sb2NhbEJyb3dzZXJzSW5mb1ticm93c2VySWRdID0ge1xuICAgICAgICAgICAgd2luZG93RGVzY3JpcHRvcjogIG51bGwsXG4gICAgICAgICAgICBtYXhTY3JlZW5TaXplOiAgICAgbnVsbCxcbiAgICAgICAgICAgIHJlc2l6ZUNvcnJlY3Rpb25zOiBudWxsLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX2ZpbmRXaW5kb3cgKGJyb3dzZXJJZDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgcGFnZVRpdGxlID0gdGhpcy5fZ2V0UGFnZVRpdGxlKGJyb3dzZXJJZCk7XG5cbiAgICAgICAgcmV0dXJuIGJyb3dzZXJUb29scy5maW5kV2luZG93KHBhZ2VUaXRsZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0UGFnZVRpdGxlIChicm93c2VySWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLnBsdWdpbi5nZXRQYWdlVGl0bGUpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wbHVnaW4uZ2V0UGFnZVRpdGxlKGJyb3dzZXJJZCk7XG5cbiAgICAgICAgcmV0dXJuIGJyb3dzZXJJZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9nZXRXaW5kb3dEZXNjcmlwdG9yIChicm93c2VySWQ6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICBpZiAodGhpcy5wbHVnaW4uZ2V0V2luZG93RGVzY3JpcHRvcilcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBsdWdpbi5nZXRXaW5kb3dEZXNjcmlwdG9yKGJyb3dzZXJJZCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxCcm93c2Vyc0luZm9bYnJvd3NlcklkXSAmJiB0aGlzLmxvY2FsQnJvd3NlcnNJbmZvW2Jyb3dzZXJJZF0ud2luZG93RGVzY3JpcHRvcjtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZXRXaW5kb3dEZXNjcmlwdG9yIChicm93c2VySWQ6IHN0cmluZywgd2luZG93RGVzY3JpcHRvcjogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5wbHVnaW4uc2V0V2luZG93RGVzY3JpcHRvcikge1xuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0V2luZG93RGVzY3JpcHRvcihicm93c2VySWQsIHdpbmRvd0Rlc2NyaXB0b3IpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmxvY2FsQnJvd3NlcnNJbmZvW2Jyb3dzZXJJZF0ud2luZG93RGVzY3JpcHRvciA9IHdpbmRvd0Rlc2NyaXB0b3I7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0TWF4U2NyZWVuU2l6ZSAoYnJvd3NlcklkOiBzdHJpbmcpOiBTaXplIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsQnJvd3NlcnNJbmZvW2Jyb3dzZXJJZF0gJiYgdGhpcy5sb2NhbEJyb3dzZXJzSW5mb1ticm93c2VySWRdLm1heFNjcmVlblNpemU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0UmVzaXplQ29ycmVjdGlvbnMgKGJyb3dzZXJJZDogc3RyaW5nKTogU2l6ZSB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbEJyb3dzZXJzSW5mb1ticm93c2VySWRdICYmIHRoaXMubG9jYWxCcm93c2Vyc0luZm9bYnJvd3NlcklkXS5yZXNpemVDb3JyZWN0aW9ucztcbiAgICB9XG5cbiAgICBwcml2YXRlIF9pc0Jyb3dzZXJJZGxlIChicm93c2VySWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBjb25uZWN0aW9uID0gQnJvd3NlckNvbm5lY3Rpb24uZ2V0QnlJZChicm93c2VySWQpIGFzIEJyb3dzZXJDb25uZWN0aW9uO1xuXG4gICAgICAgIHJldHVybiBjb25uZWN0aW9uLmlkbGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfY2FsY3VsYXRlUmVzaXplQ29ycmVjdGlvbnMgKGJyb3dzZXJJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICghdGhpcy5faXNCcm93c2VySWRsZShicm93c2VySWQpKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHRpdGxlID0gYXdhaXQgdGhpcy5wbHVnaW4ucnVuSW5pdFNjcmlwdChicm93c2VySWQsIEdFVF9USVRMRV9TQ1JJUFQpO1xuXG4gICAgICAgIGlmICghYXdhaXQgYnJvd3NlclRvb2xzLmlzTWF4aW1pemVkKHRpdGxlKSlcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBjb25zdCBjdXJyZW50U2l6ZSA9IGF3YWl0IHRoaXMucGx1Z2luLnJ1bkluaXRTY3JpcHQoYnJvd3NlcklkLCBHRVRfV0lORE9XX0RJTUVOU0lPTlNfSU5GT19TQ1JJUFQpIGFzIFdpbmRvd0RpbWVudGlvbnNJbmZvO1xuICAgICAgICBjb25zdCBldGFsb25TaXplICA9IHN1YnRyYWN0U2l6ZXMoY3VycmVudFNpemUsIFJFU0laRV9ESUZGX1NJWkUpO1xuXG4gICAgICAgIGF3YWl0IGJyb3dzZXJUb29scy5yZXNpemUodGl0bGUsIGN1cnJlbnRTaXplLndpZHRoLCBjdXJyZW50U2l6ZS5oZWlnaHQsIGV0YWxvblNpemUud2lkdGgsIGV0YWxvblNpemUuaGVpZ2h0KTtcblxuICAgICAgICBsZXQgcmVzaXplZFNpemUgICAgPSBhd2FpdCB0aGlzLnBsdWdpbi5ydW5Jbml0U2NyaXB0KGJyb3dzZXJJZCwgR0VUX1dJTkRPV19ESU1FTlNJT05TX0lORk9fU0NSSVBUKSBhcyBXaW5kb3dEaW1lbnRpb25zSW5mbztcbiAgICAgICAgbGV0IGNvcnJlY3Rpb25TaXplID0gc3VidHJhY3RTaXplcyhyZXNpemVkU2l6ZSwgZXRhbG9uU2l6ZSk7XG5cbiAgICAgICAgYXdhaXQgYnJvd3NlclRvb2xzLnJlc2l6ZSh0aXRsZSwgcmVzaXplZFNpemUud2lkdGgsIHJlc2l6ZWRTaXplLmhlaWdodCwgZXRhbG9uU2l6ZS53aWR0aCwgZXRhbG9uU2l6ZS5oZWlnaHQpO1xuXG4gICAgICAgIHJlc2l6ZWRTaXplID0gYXdhaXQgdGhpcy5wbHVnaW4ucnVuSW5pdFNjcmlwdChicm93c2VySWQsIEdFVF9XSU5ET1dfRElNRU5TSU9OU19JTkZPX1NDUklQVCkgYXMgV2luZG93RGltZW50aW9uc0luZm87XG5cbiAgICAgICAgY29ycmVjdGlvblNpemUgPSBzdW1TaXplcyhjb3JyZWN0aW9uU2l6ZSwgc3VidHJhY3RTaXplcyhyZXNpemVkU2l6ZSwgZXRhbG9uU2l6ZSkpO1xuXG4gICAgICAgIGlmICh0aGlzLmxvY2FsQnJvd3NlcnNJbmZvW2Jyb3dzZXJJZF0pXG4gICAgICAgICAgICB0aGlzLmxvY2FsQnJvd3NlcnNJbmZvW2Jyb3dzZXJJZF0ucmVzaXplQ29ycmVjdGlvbnMgPSBjb3JyZWN0aW9uU2l6ZTtcblxuICAgICAgICBhd2FpdCBicm93c2VyVG9vbHMubWF4aW1pemUodGl0bGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX2NhbGN1bGF0ZU1hY1NpemVMaW1pdHMgKGJyb3dzZXJJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICghdGhpcy5faXNCcm93c2VySWRsZShicm93c2VySWQpKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHNpemVJbmZvID0gYXdhaXQgdGhpcy5wbHVnaW4ucnVuSW5pdFNjcmlwdChicm93c2VySWQsIEdFVF9XSU5ET1dfRElNRU5TSU9OU19JTkZPX1NDUklQVCkgYXMgV2luZG93RGltZW50aW9uc0luZm87XG5cbiAgICAgICAgaWYgKHRoaXMubG9jYWxCcm93c2Vyc0luZm9bYnJvd3NlcklkXSkge1xuICAgICAgICAgICAgdGhpcy5sb2NhbEJyb3dzZXJzSW5mb1ticm93c2VySWRdLm1heFNjcmVlblNpemUgPSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6ICBzaXplSW5mby5hdmFpbGFibGVXaWR0aCAtIChzaXplSW5mby5vdXRlcldpZHRoIC0gc2l6ZUluZm8ud2lkdGgpLFxuICAgICAgICAgICAgICAgIGhlaWdodDogc2l6ZUluZm8uYXZhaWxhYmxlSGVpZ2h0IC0gKHNpemVJbmZvLm91dGVySGVpZ2h0IC0gc2l6ZUluZm8uaGVpZ2h0KSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9lbnN1cmVCcm93c2VyV2luZG93RGVzY3JpcHRvciAoYnJvd3NlcklkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuX2dldFdpbmRvd0Rlc2NyaXB0b3IoYnJvd3NlcklkKSlcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBhd2FpdCB0aGlzLl9lbnN1cmVMb2NhbEJyb3dzZXJJbmZvKGJyb3dzZXJJZCk7XG5cbiAgICAgICAgLy8gTk9URTogZGVsYXkgdG8gZW5zdXJlIHRoZSB3aW5kb3cgZmluaXNoZWQgdGhlIG9wZW5pbmdcbiAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4ud2FpdEZvckNvbm5lY3Rpb25SZWFkeShicm93c2VySWQpO1xuICAgICAgICBhd2FpdCBkZWxheShCUk9XU0VSX09QRU5JTkdfREVMQVkpO1xuXG4gICAgICAgIGlmICh0aGlzLmxvY2FsQnJvd3NlcnNJbmZvW2Jyb3dzZXJJZF0pIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbm5lY3Rpb24gICAgID0gQnJvd3NlckNvbm5lY3Rpb24uZ2V0QnlJZChicm93c2VySWQpIGFzIEJyb3dzZXJDb25uZWN0aW9uO1xuICAgICAgICAgICAgbGV0IHdpbmRvd0Rlc2NyaXB0b3IgPSBudWxsO1xuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHdpbmRvd0Rlc2NyaXB0b3IgPSBhd2FpdCB0aGlzLl9maW5kV2luZG93KGJyb3dzZXJJZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgLy8gTk9URTogV2UgY2FuIHN1cHByZXNzIHRoZSBlcnJvciBoZXJlIHNpbmNlIHdlIGNhbiBqdXN0IGRpc2FibGUgd2luZG93IG1hbmlwdWxhdGlvbiBmdW5jdGlvbnNcbiAgICAgICAgICAgICAgICAvLyB3aGVuIHdlIGNhbm5vdCBmaW5kIGEgbG9jYWwgd2luZG93IGRlc2NyaXB0b3JcbiAgICAgICAgICAgICAgICBERUJVR19MT0dHRVIoZXJyKTtcbiAgICAgICAgICAgICAgICBjb25uZWN0aW9uLmFkZFdhcm5pbmcoXG4gICAgICAgICAgICAgICAgICAgIFdBUk5JTkdfTUVTU0FHRS5jYW5ub3RGaW5kV2luZG93RGVzY3JpcHRvckVycm9yLFxuICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLmJyb3dzZXJJbmZvLmFsaWFzLFxuICAgICAgICAgICAgICAgICAgICBlcnIubWVzc2FnZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX3NldFdpbmRvd0Rlc2NyaXB0b3IoYnJvd3NlcklkLCB3aW5kb3dEZXNjcmlwdG9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX2Vuc3VyZUJyb3dzZXJXaW5kb3dQYXJhbWV0ZXJzIChicm93c2VySWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLl9lbnN1cmVCcm93c2VyV2luZG93RGVzY3JpcHRvcihicm93c2VySWQpO1xuXG4gICAgICAgIGlmIChPUy53aW4gJiYgIXRoaXMuX2dldFJlc2l6ZUNvcnJlY3Rpb25zKGJyb3dzZXJJZCkpXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9jYWxjdWxhdGVSZXNpemVDb3JyZWN0aW9ucyhicm93c2VySWQpO1xuICAgICAgICBlbHNlIGlmIChPUy5tYWMgJiYgIXRoaXMuX2dldE1heFNjcmVlblNpemUoYnJvd3NlcklkKSlcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX2NhbGN1bGF0ZU1hY1NpemVMaW1pdHMoYnJvd3NlcklkKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9jbG9zZUxvY2FsQnJvd3NlciAoYnJvd3NlcklkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMucGx1Z2luLm5lZWRDbGVhblVwQnJvd3NlckluZm8pXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5jbGVhblVwQnJvd3NlckluZm8oYnJvd3NlcklkKTtcblxuICAgICAgICBjb25zdCB3aW5kb3dEZXNjcmlwdG9yID0gdGhpcy5fZ2V0V2luZG93RGVzY3JpcHRvcihicm93c2VySWQpO1xuXG4gICAgICAgIGF3YWl0IGJyb3dzZXJUb29scy5jbG9zZSh3aW5kb3dEZXNjcmlwdG9yKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9yZXNpemVMb2NhbEJyb3dzZXJXaW5kb3cgKGJyb3dzZXJJZDogc3RyaW5nLCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciwgY3VycmVudFdpZHRoOiBudW1iZXIsIGN1cnJlbnRIZWlnaHQ6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLl9lbnN1cmVCcm93c2VyV2luZG93RGVzY3JpcHRvcihicm93c2VySWQpO1xuXG4gICAgICAgIGNvbnN0IHJlc2l6ZUNvcnJlY3Rpb25zID0gdGhpcy5fZ2V0UmVzaXplQ29ycmVjdGlvbnMoYnJvd3NlcklkKTtcblxuICAgICAgICBpZiAocmVzaXplQ29ycmVjdGlvbnMgJiYgYXdhaXQgYnJvd3NlclRvb2xzLmlzTWF4aW1pemVkKHRoaXMuX2dldFdpbmRvd0Rlc2NyaXB0b3IoYnJvd3NlcklkKSkpIHtcbiAgICAgICAgICAgIHdpZHRoIC09IHJlc2l6ZUNvcnJlY3Rpb25zLndpZHRoO1xuICAgICAgICAgICAgaGVpZ2h0IC09IHJlc2l6ZUNvcnJlY3Rpb25zLmhlaWdodDtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IGJyb3dzZXJUb29scy5yZXNpemUodGhpcy5fZ2V0V2luZG93RGVzY3JpcHRvcihicm93c2VySWQpLCBjdXJyZW50V2lkdGgsIGN1cnJlbnRIZWlnaHQsIHdpZHRoLCBoZWlnaHQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3Rha2VMb2NhbEJyb3dzZXJTY3JlZW5zaG90IChicm93c2VySWQ6IHN0cmluZywgc2NyZWVuc2hvdFBhdGg6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCBicm93c2VyVG9vbHMuc2NyZWVuc2hvdCh0aGlzLl9nZXRXaW5kb3dEZXNjcmlwdG9yKGJyb3dzZXJJZCksIHNjcmVlbnNob3RQYXRoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9jYW5SZXNpemVMb2NhbEJyb3dzZXJXaW5kb3dUb0RpbWVuc2lvbnMgKGJyb3dzZXJJZDogc3RyaW5nLCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICBpZiAoIU9TLm1hYylcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuXG4gICAgICAgIGNvbnN0IG1heFNjcmVlblNpemUgPSB0aGlzLl9nZXRNYXhTY3JlZW5TaXplKGJyb3dzZXJJZCkgYXMgU2l6ZTtcblxuICAgICAgICByZXR1cm4gd2lkdGggPD0gbWF4U2NyZWVuU2l6ZS53aWR0aCAmJiBoZWlnaHQgPD0gbWF4U2NyZWVuU2l6ZS5oZWlnaHQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfbWF4aW1pemVMb2NhbEJyb3dzZXJXaW5kb3cgKGJyb3dzZXJJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuX2Vuc3VyZUJyb3dzZXJXaW5kb3dEZXNjcmlwdG9yKGJyb3dzZXJJZCk7XG5cbiAgICAgICAgYXdhaXQgYnJvd3NlclRvb2xzLm1heGltaXplKHRoaXMuX2dldFdpbmRvd0Rlc2NyaXB0b3IoYnJvd3NlcklkKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfZW5zdXJlUmV0cnlUZXN0UGFnZXNXYXJuaW5nIChicm93c2VySWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBjb25uZWN0aW9uID0gQnJvd3NlckNvbm5lY3Rpb24uZ2V0QnlJZChicm93c2VySWQpIGFzIEJyb3dzZXJDb25uZWN0aW9uO1xuXG4gICAgICAgIGlmIChjb25uZWN0aW9uPy5yZXRyeVRlc3RQYWdlcykge1xuICAgICAgICAgICAgY29uc3QgaXNTZXJ2aWNlV29ya2VyRW5hYmxlZCA9IGF3YWl0IHRoaXMucGx1Z2luLnJ1bkluaXRTY3JpcHQoYnJvd3NlcklkLCBHRVRfSVNfU0VSVklDRV9XT1JLRVJfRU5BQkxFRCk7XG5cbiAgICAgICAgICAgIGlmICghaXNTZXJ2aWNlV29ya2VyRW5hYmxlZClcbiAgICAgICAgICAgICAgICBjb25uZWN0aW9uLmFkZFdhcm5pbmcoV0FSTklOR19NRVNTQUdFLnJldHJ5VGVzdFBhZ2VzSXNOb3RTdXBwb3J0ZWQsIGNvbm5lY3Rpb24uYnJvd3NlckluZm8uYWxpYXMsIGNvbm5lY3Rpb24uYnJvd3NlckluZm8uYWxpYXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNhblVzZURlZmF1bHRXaW5kb3dBY3Rpb25zIChicm93c2VySWQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICBjb25zdCBpc0xvY2FsQnJvd3NlciAgICA9IGF3YWl0IHRoaXMucGx1Z2luLmlzTG9jYWxCcm93c2VyKGJyb3dzZXJJZCk7XG4gICAgICAgIGNvbnN0IGlzSGVhZGxlc3NCcm93c2VyID0gYXdhaXQgdGhpcy5wbHVnaW4uaXNIZWFkbGVzc0Jyb3dzZXIoYnJvd3NlcklkKTtcblxuICAgICAgICByZXR1cm4gaXNMb2NhbEJyb3dzZXIgJiYgIWlzSGVhZGxlc3NCcm93c2VyO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBpbml0ICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgaW5pdGlhbGl6ZWQgPSBhd2FpdCB0aGlzLmluaXRQcm9taXNlO1xuXG4gICAgICAgIGlmIChpbml0aWFsaXplZClcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICB0aGlzLmluaXRQcm9taXNlID0gdGhpcy5wbHVnaW5cbiAgICAgICAgICAgIC5pbml0KClcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHRydWUpO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmluaXRQcm9taXNlO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgdGhpcy5pbml0UHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZShmYWxzZSk7XG5cbiAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGRpc3Bvc2UgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBpbml0aWFsaXplZCA9IGF3YWl0IHRoaXMuaW5pdFByb21pc2U7XG5cbiAgICAgICAgaWYgKCFpbml0aWFsaXplZClcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICB0aGlzLmluaXRQcm9taXNlID0gdGhpcy5wbHVnaW5cbiAgICAgICAgICAgIC5kaXNwb3NlKClcbiAgICAgICAgICAgIC50aGVuKCgpID0+IGZhbHNlKTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5pbml0UHJvbWlzZTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoZmFsc2UpO1xuXG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBpc0xvY2FsQnJvd3NlciAoYnJvd3NlcklkPzogc3RyaW5nLCBicm93c2VyTmFtZT86IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5wbHVnaW4uaXNMb2NhbEJyb3dzZXIoYnJvd3NlcklkLCBicm93c2VyTmFtZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzSGVhZGxlc3NCcm93c2VyIChicm93c2VySWQ/OiBzdHJpbmcsIGJyb3dzZXJOYW1lPzogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBsdWdpbi5pc0hlYWRsZXNzQnJvd3Nlcihicm93c2VySWQsIGJyb3dzZXJOYW1lKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0T1NJbmZvIChicm93c2VySWQ6IHN0cmluZyk6IFByb21pc2U8T1NJbmZvIHwgbnVsbD4ge1xuICAgICAgICBpZiAoYXdhaXQgdGhpcy5pc0xvY2FsQnJvd3Nlcihicm93c2VySWQpKVxuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IGdldExvY2FsT1NJbmZvKCk7XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucGx1Z2luLmdldE9TSW5mbyhicm93c2VySWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBvcGVuQnJvd3NlciAoYnJvd3NlcklkOiBzdHJpbmcsIHBhZ2VVcmw6IHN0cmluZywgYnJvd3Nlck9wdGlvbjogdW5rbm93biwgZGlzYWJsZU11bHRpcGxlV2luZG93czogYm9vbGVhbiwgcHJveHlsZXNzOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLm9wZW5Ccm93c2VyKGJyb3dzZXJJZCwgcGFnZVVybCwgYnJvd3Nlck9wdGlvbiwgZGlzYWJsZU11bHRpcGxlV2luZG93cywgcHJveHlsZXNzKTtcblxuICAgICAgICBhd2FpdCB0aGlzLl9lbnN1cmVSZXRyeVRlc3RQYWdlc1dhcm5pbmcoYnJvd3NlcklkKTtcblxuICAgICAgICBpZiAoYXdhaXQgdGhpcy5jYW5Vc2VEZWZhdWx0V2luZG93QWN0aW9ucyhicm93c2VySWQpKVxuICAgICAgICAgICAgYXdhaXQgdGhpcy5fZW5zdXJlQnJvd3NlcldpbmRvd1BhcmFtZXRlcnMoYnJvd3NlcklkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY2xvc2VCcm93c2VyIChicm93c2VySWQ6IHN0cmluZywgZGF0YTogQnJvd3NlckNsb3NpbmdJbmZvKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGNhblVzZURlZmF1bHRXaW5kb3dBY3Rpb25zID0gYXdhaXQgdGhpcy5jYW5Vc2VEZWZhdWx0V2luZG93QWN0aW9ucyhicm93c2VySWQpO1xuICAgICAgICBjb25zdCBjdXN0b21BY3Rpb25zSW5mbyAgICAgICAgICA9IGF3YWl0IHRoaXMuaGFzQ3VzdG9tQWN0aW9uRm9yQnJvd3Nlcihicm93c2VySWQpO1xuICAgICAgICBjb25zdCBoYXNDdXN0b21DbG9zZUJyb3dzZXIgICAgICA9IGN1c3RvbUFjdGlvbnNJbmZvLmhhc0Nsb3NlQnJvd3NlcjtcbiAgICAgICAgY29uc3QgdXNlUGx1Z2luc0Nsb3NlQnJvd3NlciAgICAgPSBoYXNDdXN0b21DbG9zZUJyb3dzZXIgfHwgIWNhblVzZURlZmF1bHRXaW5kb3dBY3Rpb25zO1xuXG4gICAgICAgIGlmICh1c2VQbHVnaW5zQ2xvc2VCcm93c2VyKVxuICAgICAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4uY2xvc2VCcm93c2VyKGJyb3dzZXJJZCwgZGF0YSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX2Nsb3NlTG9jYWxCcm93c2VyKGJyb3dzZXJJZCk7XG5cbiAgICAgICAgaWYgKGNhblVzZURlZmF1bHRXaW5kb3dBY3Rpb25zKVxuICAgICAgICAgICAgZGVsZXRlIHRoaXMubG9jYWxCcm93c2Vyc0luZm9bYnJvd3NlcklkXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QnJvd3Nlckxpc3QgKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucGx1Z2luLmdldEJyb3dzZXJMaXN0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGlzVmFsaWRCcm93c2VyTmFtZSAoYnJvd3Nlck5hbWU6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5wbHVnaW4uaXNWYWxpZEJyb3dzZXJOYW1lKGJyb3dzZXJOYW1lKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVzaXplV2luZG93IChicm93c2VySWQ6IHN0cmluZywgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIsIGN1cnJlbnRXaWR0aDogbnVtYmVyLCBjdXJyZW50SGVpZ2h0OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgY2FuVXNlRGVmYXVsdFdpbmRvd0FjdGlvbnMgPSBhd2FpdCB0aGlzLmNhblVzZURlZmF1bHRXaW5kb3dBY3Rpb25zKGJyb3dzZXJJZCk7XG4gICAgICAgIGNvbnN0IGN1c3RvbUFjdGlvbnNJbmZvICAgICAgICAgID0gYXdhaXQgdGhpcy5oYXNDdXN0b21BY3Rpb25Gb3JCcm93c2VyKGJyb3dzZXJJZCk7XG4gICAgICAgIGNvbnN0IGhhc0N1c3RvbVJlc2l6ZVdpbmRvdyAgICAgID0gY3VzdG9tQWN0aW9uc0luZm8uaGFzUmVzaXplV2luZG93O1xuXG5cbiAgICAgICAgaWYgKGNhblVzZURlZmF1bHRXaW5kb3dBY3Rpb25zICYmICFoYXNDdXN0b21SZXNpemVXaW5kb3cpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX3Jlc2l6ZUxvY2FsQnJvd3NlcldpbmRvdyhicm93c2VySWQsIHdpZHRoLCBoZWlnaHQsIGN1cnJlbnRXaWR0aCwgY3VycmVudEhlaWdodCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5yZXNpemVXaW5kb3coYnJvd3NlcklkLCB3aWR0aCwgaGVpZ2h0LCBjdXJyZW50V2lkdGgsIGN1cnJlbnRIZWlnaHQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjYW5SZXNpemVXaW5kb3dUb0RpbWVuc2lvbnMgKGJyb3dzZXJJZDogc3RyaW5nLCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICBjb25zdCBjYW5Vc2VEZWZhdWx0V2luZG93QWN0aW9ucyAgICAgPSBhd2FpdCB0aGlzLmNhblVzZURlZmF1bHRXaW5kb3dBY3Rpb25zKGJyb3dzZXJJZCk7XG4gICAgICAgIGNvbnN0IGN1c3RvbUFjdGlvbnNJbmZvICAgICAgICAgICAgICA9IGF3YWl0IHRoaXMuaGFzQ3VzdG9tQWN0aW9uRm9yQnJvd3Nlcihicm93c2VySWQpO1xuICAgICAgICBjb25zdCBoYXNDdXN0b21DYW5SZXNpemVUb0RpbWVuc2lvbnMgPSBjdXN0b21BY3Rpb25zSW5mby5oYXNDYW5SZXNpemVXaW5kb3dUb0RpbWVuc2lvbnM7XG5cblxuICAgICAgICBpZiAoY2FuVXNlRGVmYXVsdFdpbmRvd0FjdGlvbnMgJiYgIWhhc0N1c3RvbUNhblJlc2l6ZVRvRGltZW5zaW9ucylcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLl9jYW5SZXNpemVMb2NhbEJyb3dzZXJXaW5kb3dUb0RpbWVuc2lvbnMoYnJvd3NlcklkLCB3aWR0aCwgaGVpZ2h0KTtcblxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5wbHVnaW4uY2FuUmVzaXplV2luZG93VG9EaW1lbnNpb25zKGJyb3dzZXJJZCwgd2lkdGgsIGhlaWdodCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIG1heGltaXplV2luZG93IChicm93c2VySWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBjYW5Vc2VEZWZhdWx0V2luZG93QWN0aW9ucyA9IGF3YWl0IHRoaXMuY2FuVXNlRGVmYXVsdFdpbmRvd0FjdGlvbnMoYnJvd3NlcklkKTtcbiAgICAgICAgY29uc3QgY3VzdG9tQWN0aW9uc0luZm8gICAgICAgICAgPSBhd2FpdCB0aGlzLmhhc0N1c3RvbUFjdGlvbkZvckJyb3dzZXIoYnJvd3NlcklkKTtcbiAgICAgICAgY29uc3QgaGFzQ3VzdG9tTWF4aW1pemVXaW5kb3cgICAgPSBjdXN0b21BY3Rpb25zSW5mby5oYXNNYXhpbWl6ZVdpbmRvdztcblxuICAgICAgICBpZiAoY2FuVXNlRGVmYXVsdFdpbmRvd0FjdGlvbnMgJiYgIWhhc0N1c3RvbU1heGltaXplV2luZG93KVxuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX21heGltaXplTG9jYWxCcm93c2VyV2luZG93KGJyb3dzZXJJZCk7XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucGx1Z2luLm1heGltaXplV2luZG93KGJyb3dzZXJJZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHRha2VTY3JlZW5zaG90IChicm93c2VySWQ6IHN0cmluZywgc2NyZWVuc2hvdFBhdGg6IHN0cmluZywgcGFnZVdpZHRoOiBudW1iZXIsIHBhZ2VIZWlnaHQ6IG51bWJlciwgZnVsbFBhZ2U6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgY2FuVXNlRGVmYXVsdFdpbmRvd0FjdGlvbnMgID0gYXdhaXQgdGhpcy5jYW5Vc2VEZWZhdWx0V2luZG93QWN0aW9ucyhicm93c2VySWQpO1xuICAgICAgICBjb25zdCBjdXN0b21BY3Rpb25zSW5mbyAgICAgICAgICAgPSBhd2FpdCB0aGlzLmhhc0N1c3RvbUFjdGlvbkZvckJyb3dzZXIoYnJvd3NlcklkKTtcbiAgICAgICAgY29uc3QgaGFzQ3VzdG9tVGFrZVNjcmVlbnNob3QgICAgID0gY3VzdG9tQWN0aW9uc0luZm8uaGFzVGFrZVNjcmVlbnNob3Q7XG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpb24gICAgICAgICAgICAgICAgICA9IEJyb3dzZXJDb25uZWN0aW9uLmdldEJ5SWQoYnJvd3NlcklkKSBhcyBCcm93c2VyQ29ubmVjdGlvbjtcbiAgICAgICAgY29uc3QgdGFrZUxvY2FsQnJvd3NlcnNTY3JlZW5zaG90ID0gY2FuVXNlRGVmYXVsdFdpbmRvd0FjdGlvbnMgJiYgIWhhc0N1c3RvbVRha2VTY3JlZW5zaG90O1xuICAgICAgICBjb25zdCBpc0xvY2FsRnVsbFBhZ2VNb2RlICAgICAgICAgPSB0YWtlTG9jYWxCcm93c2Vyc1NjcmVlbnNob3QgJiYgZnVsbFBhZ2U7XG5cbiAgICAgICAgaWYgKGlzTG9jYWxGdWxsUGFnZU1vZGUpIHtcbiAgICAgICAgICAgIGNvbm5lY3Rpb24uYWRkV2FybmluZyhXQVJOSU5HX01FU1NBR0Uuc2NyZWVuc2hvdHNGdWxsUGFnZU5vdFN1cHBvcnRlZCwgY29ubmVjdGlvbi5icm93c2VySW5mby5hbGlhcyk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IG1ha2VEaXIoZGlybmFtZShzY3JlZW5zaG90UGF0aCkpO1xuXG4gICAgICAgIGlmICh0YWtlTG9jYWxCcm93c2Vyc1NjcmVlbnNob3QpXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl90YWtlTG9jYWxCcm93c2VyU2NyZWVuc2hvdChicm93c2VySWQsIHNjcmVlbnNob3RQYXRoKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4udGFrZVNjcmVlbnNob3QoYnJvd3NlcklkLCBzY3JlZW5zaG90UGF0aCwgcGFnZVdpZHRoLCBwYWdlSGVpZ2h0LCBmdWxsUGFnZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldFZpZGVvRnJhbWVEYXRhIChicm93c2VySWQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBsdWdpbi5nZXRWaWRlb0ZyYW1lRGF0YShicm93c2VySWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzdGFydENhcHR1cmluZ1ZpZGVvIChicm93c2VySWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5zdGFydENhcHR1cmluZ1ZpZGVvKGJyb3dzZXJJZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHN0b3BDYXB0dXJpbmdWaWRlbyAoYnJvd3NlcklkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4uc3RvcENhcHR1cmluZ1ZpZGVvKGJyb3dzZXJJZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGhhc0N1c3RvbUFjdGlvbkZvckJyb3dzZXIgKGJyb3dzZXJJZDogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGx1Z2luLmhhc0N1c3RvbUFjdGlvbkZvckJyb3dzZXIoYnJvd3NlcklkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVwb3J0Sm9iUmVzdWx0IChicm93c2VySWQ6IHN0cmluZywgc3RhdHVzOiBzdHJpbmcsIGRhdGE6IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5yZXBvcnRKb2JSZXN1bHQoYnJvd3NlcklkLCBzdGF0dXMsIGRhdGEpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBY3RpdmVXaW5kb3dJZCAoYnJvd3NlcklkOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgaWYgKCF0aGlzLnBsdWdpbi5zdXBwb3J0TXVsdGlwbGVXaW5kb3dzKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucGx1Z2luLmdldEFjdGl2ZVdpbmRvd0lkKGJyb3dzZXJJZCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEFjdGl2ZVdpbmRvd0lkIChicm93c2VySWQ6IHN0cmluZywgdmFsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wbHVnaW4uc2V0QWN0aXZlV2luZG93SWQoYnJvd3NlcklkLCB2YWwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjbG9zZUJyb3dzZXJDaGlsZFdpbmRvdyAoYnJvd3NlcklkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4uY2xvc2VCcm93c2VyQ2hpbGRXaW5kb3coYnJvd3NlcklkKTtcbiAgICB9XG59XG4iXX0=
320
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYnJvd3Nlci9wcm92aWRlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGtEQUEwQjtBQUMxQixvRkFBa0Q7QUFDbEQsMERBQTJCO0FBQzNCLCtCQUErQjtBQUMvQix3REFBK0I7QUFDL0IsK0RBQXNFO0FBQ3RFLDhEQUFzQztBQUN0QywrREFJa0M7QUFDbEMsMEZBQWtFO0FBR2xFLDhEQUFxRDtBQUVyRCxNQUFNLFlBQVksR0FBRyxJQUFBLGVBQUssRUFBQywyQkFBMkIsQ0FBQyxDQUFDO0FBRXhELE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDO0FBRW5DLE1BQU0sZ0JBQWdCLEdBQUc7SUFDckIsS0FBSyxFQUFHLEdBQUc7SUFDWCxNQUFNLEVBQUUsR0FBRztDQUNkLENBQUM7QUFhRixTQUFTLFFBQVEsQ0FBRSxLQUFXLEVBQUUsS0FBVztJQUN2QyxPQUFPO1FBQ0gsS0FBSyxFQUFHLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUs7UUFDakMsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU07S0FDdEMsQ0FBQztBQUNOLENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBRSxLQUFXLEVBQUUsS0FBVztJQUM1QyxPQUFPO1FBQ0gsS0FBSyxFQUFHLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUs7UUFDakMsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU07S0FDdEMsQ0FBQztBQUNOLENBQUM7QUFFRCxNQUFxQixlQUFlO0lBTWhDLFlBQW9CLE1BQVc7UUFDM0IsSUFBSSxDQUFDLE1BQU0sR0FBVyxNQUFNLENBQUM7UUFDN0IsSUFBSSxDQUFDLFdBQVcsR0FBTSxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxj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QUFDO1FBRWhCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRU0saUJBQWlCLENBQUUsU0FBaUIsRUFBRSxHQUFXO1FBQ3BELElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFTSxLQUFLLENBQUMsdUJBQXVCLENBQUUsU0FBaUI7UUFDbkQsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7Q0FDSjtBQTFZRCxrQ0EwWUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IGJyb3dzZXJUb29scyBmcm9tICd0ZXN0Y2FmZS1icm93c2VyLXRvb2xzJztcbmltcG9ydCBPUyBmcm9tICdvcy1mYW1pbHknO1xuaW1wb3J0IHsgZGlybmFtZSB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IG1ha2VEaXIgZnJvbSAnbWFrZS1kaXInO1xuaW1wb3J0IEJyb3dzZXJDb25uZWN0aW9uLCB7IEJyb3dzZXJDbG9zaW5nSW5mbyB9IGZyb20gJy4uL2Nvbm5lY3Rpb24nO1xuaW1wb3J0IGRlbGF5IGZyb20gJy4uLy4uL3V0aWxzL2RlbGF5JztcbmltcG9ydCB7XG4gICAgR0VUX0lTX1NFUlZJQ0VfV09SS0VSX0VOQUJMRUQsXG4gICAgR0VUX1RJVExFX1NDUklQVCxcbiAgICBHRVRfV0lORE9XX0RJTUVOU0lPTlNfSU5GT19TQ1JJUFQsXG59IGZyb20gJy4vdXRpbHMvY2xpZW50LWZ1bmN0aW9ucyc7XG5pbXBvcnQgV0FSTklOR19NRVNTQUdFIGZyb20gJy4uLy4uL25vdGlmaWNhdGlvbnMvd2FybmluZy1tZXNzYWdlJztcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgV2luZG93RGltZW50aW9uc0luZm8gfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCBnZXRMb2NhbE9TSW5mbywgeyBPU0luZm8gfSBmcm9tICdnZXQtb3MtaW5mbyc7XG5cbmNvbnN0IERFQlVHX0xPR0dFUiA9IGRlYnVnKCd0ZXN0Y2FmZTpicm93c2VyOnByb3ZpZGVyJyk7XG5cbmNvbnN0IEJST1dTRVJfT1BFTklOR19ERUxBWSA9IDIwMDA7XG5cbmNvbnN0IFJFU0laRV9ESUZGX1NJWkUgPSB7XG4gICAgd2lkdGg6ICAxMDAsXG4gICAgaGVpZ2h0OiAxMDAsXG59O1xuXG5pbnRlcmZhY2UgU2l6ZSB7XG4gICAgd2lkdGg6IG51bWJlcjtcbiAgICBoZWlnaHQ6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIExvY2FsQnJvd3NlckluZm8ge1xuICAgIHdpbmRvd0Rlc2NyaXB0b3I6IG51bGwgfCBzdHJpbmc7XG4gICAgbWF4U2NyZWVuU2l6ZTogbnVsbCB8IFNpemU7XG4gICAgcmVzaXplQ29ycmVjdGlvbnM6IG51bGwgfCBTaXplO1xufVxuXG5mdW5jdGlvbiBzdW1TaXplcyAoc2l6ZUE6IFNpemUsIHNpemVCOiBTaXplKTogU2l6ZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgd2lkdGg6ICBzaXplQS53aWR0aCArIHNpemVCLndpZHRoLFxuICAgICAgICBoZWlnaHQ6IHNpemVBLmhlaWdodCArIHNpemVCLmhlaWdodCxcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBzdWJ0cmFjdFNpemVzIChzaXplQTogU2l6ZSwgc2l6ZUI6IFNpemUpOiBTaXplIHtcbiAgICByZXR1cm4ge1xuICAgICAgICB3aWR0aDogIHNpemVBLndpZHRoIC0gc2l6ZUIud2lkdGgsXG4gICAgICAgIGhlaWdodDogc2l6ZUEuaGVpZ2h0IC0gc2l6ZUIuaGVpZ2h0LFxuICAgIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJyb3dzZXJQcm92aWRlciB7XG4gICAgcHJpdmF0ZSBwbHVnaW46IGFueTtcbiAgICBwcml2YXRlIGluaXRQcm9taXNlOiBQcm9taXNlPGFueT47XG4gICAgcHJpdmF0ZSBpc011bHRpQnJvd3NlcjogYm9vbGVhbjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvY2FsQnJvd3NlcnNJbmZvOiBEaWN0aW9uYXJ5PExvY2FsQnJvd3NlckluZm8+O1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yIChwbHVnaW46IGFueSkge1xuICAgICAgICB0aGlzLnBsdWdpbiAgICAgICAgID0gcGx1Z2luO1xuICAgICAgICB0aGlzLmluaXRQcm9taXNlICAgID0gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgdGhpcy5pc011bHRpQnJvd3NlciA9IHRoaXMucGx1Z2luLmlzTXVsdGlCcm93c2VyO1xuICAgICAgICAvLyBIQUNLOiBUaGUgYnJvd3NlciB3aW5kb3cgaGFzIGRpZmZlcmVudCBib3JkZXIgc2l6ZXMgaW4gbm9ybWFsIGFuZCBtYXhpbWl6ZWQgbW9kZXMuIFNvLCB3ZSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB0aGUgd2luZG93IGlzXG4gICAgICAgIC8vIG5vdCBtYXhpbWl6ZWQgYmVmb3JlIHJlc2l6aW5nIGl0IGluIG9yZGVyIHRvIGtlZXAgdGhlIG1lY2hhbmlzbSBvZiBjb3JyZWN0aW5nIHRoZSBjbGllbnQgYXJlYSBzaXplIHdvcmtpbmcuIFdoZW4gYnJvd3NlciBpcyBzdGFydGVkLFxuICAgICAgICAvLyB3ZSBhcmUgcmVzaXppbmcgaXQgZm9yIHRoZSBmaXJzdCB0aW1lIHRvIHN3aXRjaCB0aGUgd2luZG93IHRvIG5vcm1hbCBtb2RlLCBhbmQgZm9yIHRoZSBzZWNvbmQgdGltZSAtIHRvIHJlc3RvcmUgdGhlIGNsaWVudCBhcmVhIHNpemUuXG4gICAgICAgIHRoaXMubG9jYWxCcm93c2Vyc0luZm8gPSB7fTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9lbnN1cmVMb2NhbEJyb3dzZXJJbmZvIChicm93c2VySWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5sb2NhbEJyb3dzZXJzSW5mb1ticm93c2VySWRdKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMubG9jYWxCcm93c2Vyc0luZm9bYnJvd3NlcklkXSA9IHtcbiAgICAgICAgICAgIHdpbmRvd0Rlc2NyaXB0b3I6ICBudWxsLFxuICAgICAgICAgICAgbWF4U2NyZWVuU2l6ZTogICAgIG51bGwsXG4gICAgICAgICAgICByZXNpemVDb3JyZWN0aW9uczogbnVsbCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9maW5kV2luZG93IChicm93c2VySWQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHBhZ2VUaXRsZSA9IHRoaXMuX2dldFBhZ2VUaXRsZShicm93c2VySWQpO1xuXG4gICAgICAgIHJldHVybiBicm93c2VyVG9vbHMuZmluZFdpbmRvdyhwYWdlVGl0bGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2dldFBhZ2VUaXRsZSAoYnJvd3NlcklkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5wbHVnaW4uZ2V0UGFnZVRpdGxlKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGx1Z2luLmdldFBhZ2VUaXRsZShicm93c2VySWQpO1xuXG4gICAgICAgIHJldHVybiBicm93c2VySWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0V2luZG93RGVzY3JpcHRvciAoYnJvd3NlcklkOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgaWYgKHRoaXMucGx1Z2luLmdldFdpbmRvd0Rlc2NyaXB0b3IpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wbHVnaW4uZ2V0V2luZG93RGVzY3JpcHRvcihicm93c2VySWQpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsQnJvd3NlcnNJbmZvW2Jyb3dzZXJJZF0gJiYgdGhpcy5sb2NhbEJyb3dzZXJzSW5mb1ticm93c2VySWRdLndpbmRvd0Rlc2NyaXB0b3I7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2V0V2luZG93RGVzY3JpcHRvciAoYnJvd3NlcklkOiBzdHJpbmcsIHdpbmRvd0Rlc2NyaXB0b3I6IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucGx1Z2luLnNldFdpbmRvd0Rlc2NyaXB0b3IpIHtcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldFdpbmRvd0Rlc2NyaXB0b3IoYnJvd3NlcklkLCB3aW5kb3dEZXNjcmlwdG9yKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5sb2NhbEJyb3dzZXJzSW5mb1ticm93c2VySWRdLndpbmRvd0Rlc2NyaXB0b3IgPSB3aW5kb3dEZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2dldE1heFNjcmVlblNpemUgKGJyb3dzZXJJZDogc3RyaW5nKTogU2l6ZSB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbEJyb3dzZXJzSW5mb1ticm93c2VySWRdICYmIHRoaXMubG9jYWxCcm93c2Vyc0luZm9bYnJvd3NlcklkXS5tYXhTY3JlZW5TaXplO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2dldFJlc2l6ZUNvcnJlY3Rpb25zIChicm93c2VySWQ6IHN0cmluZyk6IFNpemUgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxCcm93c2Vyc0luZm9bYnJvd3NlcklkXSAmJiB0aGlzLmxvY2FsQnJvd3NlcnNJbmZvW2Jyb3dzZXJJZF0ucmVzaXplQ29ycmVjdGlvbnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaXNCcm93c2VySWRsZSAoYnJvd3NlcklkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgY29ubmVjdGlvbiA9IEJyb3dzZXJDb25uZWN0aW9uLmdldEJ5SWQoYnJvd3NlcklkKSBhcyBCcm93c2VyQ29ubmVjdGlvbjtcblxuICAgICAgICByZXR1cm4gY29ubmVjdGlvbi5pZGxlO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX2NhbGN1bGF0ZVJlc2l6ZUNvcnJlY3Rpb25zIChicm93c2VySWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoIXRoaXMuX2lzQnJvd3NlcklkbGUoYnJvd3NlcklkKSlcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBjb25zdCB0aXRsZSA9IGF3YWl0IHRoaXMucGx1Z2luLnJ1bkluaXRTY3JpcHQoYnJvd3NlcklkLCBHRVRfVElUTEVfU0NSSVBUKTtcblxuICAgICAgICBpZiAoIWF3YWl0IGJyb3dzZXJUb29scy5pc01heGltaXplZCh0aXRsZSkpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgY29uc3QgY3VycmVudFNpemUgPSBhd2FpdCB0aGlzLnBsdWdpbi5ydW5Jbml0U2NyaXB0KGJyb3dzZXJJZCwgR0VUX1dJTkRPV19ESU1FTlNJT05TX0lORk9fU0NSSVBUKSBhcyBXaW5kb3dEaW1lbnRpb25zSW5mbztcbiAgICAgICAgY29uc3QgZXRhbG9uU2l6ZSAgPSBzdWJ0cmFjdFNpemVzKGN1cnJlbnRTaXplLCBSRVNJWkVfRElGRl9TSVpFKTtcblxuICAgICAgICBhd2FpdCBicm93c2VyVG9vbHMucmVzaXplKHRpdGxlLCBjdXJyZW50U2l6ZS53aWR0aCwgY3VycmVudFNpemUuaGVpZ2h0LCBldGFsb25TaXplLndpZHRoLCBldGFsb25TaXplLmhlaWdodCk7XG5cbiAgICAgICAgbGV0IHJlc2l6ZWRTaXplICAgID0gYXdhaXQgdGhpcy5wbHVnaW4ucnVuSW5pdFNjcmlwdChicm93c2VySWQsIEdFVF9XSU5ET1dfRElNRU5TSU9OU19JTkZPX1NDUklQVCkgYXMgV2luZG93RGltZW50aW9uc0luZm87XG4gICAgICAgIGxldCBjb3JyZWN0aW9uU2l6ZSA9IHN1YnRyYWN0U2l6ZXMocmVzaXplZFNpemUsIGV0YWxvblNpemUpO1xuXG4gICAgICAgIGF3YWl0IGJyb3dzZXJUb29scy5yZXNpemUodGl0bGUsIHJlc2l6ZWRTaXplLndpZHRoLCByZXNpemVkU2l6ZS5oZWlnaHQsIGV0YWxvblNpemUud2lkdGgsIGV0YWxvblNpemUuaGVpZ2h0KTtcblxuICAgICAgICByZXNpemVkU2l6ZSA9IGF3YWl0IHRoaXMucGx1Z2luLnJ1bkluaXRTY3JpcHQoYnJvd3NlcklkLCBHRVRfV0lORE9XX0RJTUVOU0lPTlNfSU5GT19TQ1JJUFQpIGFzIFdpbmRvd0RpbWVudGlvbnNJbmZvO1xuXG4gICAgICAgIGNvcnJlY3Rpb25TaXplID0gc3VtU2l6ZXMoY29ycmVjdGlvblNpemUsIHN1YnRyYWN0U2l6ZXMocmVzaXplZFNpemUsIGV0YWxvblNpemUpKTtcblxuICAgICAgICBpZiAodGhpcy5sb2NhbEJyb3dzZXJzSW5mb1ticm93c2VySWRdKVxuICAgICAgICAgICAgdGhpcy5sb2NhbEJyb3dzZXJzSW5mb1ticm93c2VySWRdLnJlc2l6ZUNvcnJlY3Rpb25zID0gY29ycmVjdGlvblNpemU7XG5cbiAgICAgICAgYXdhaXQgYnJvd3NlclRvb2xzLm1heGltaXplKHRpdGxlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9jYWxjdWxhdGVNYWNTaXplTGltaXRzIChicm93c2VySWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoIXRoaXMuX2lzQnJvd3NlcklkbGUoYnJvd3NlcklkKSlcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBjb25zdCBzaXplSW5mbyA9IGF3YWl0IHRoaXMucGx1Z2luLnJ1bkluaXRTY3JpcHQoYnJvd3NlcklkLCBHRVRfV0lORE9XX0RJTUVOU0lPTlNfSU5GT19TQ1JJUFQpIGFzIFdpbmRvd0RpbWVudGlvbnNJbmZvO1xuXG4gICAgICAgIGlmICh0aGlzLmxvY2FsQnJvd3NlcnNJbmZvW2Jyb3dzZXJJZF0pIHtcbiAgICAgICAgICAgIHRoaXMubG9jYWxCcm93c2Vyc0luZm9bYnJvd3NlcklkXS5tYXhTY3JlZW5TaXplID0ge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAgc2l6ZUluZm8uYXZhaWxhYmxlV2lkdGggLSAoc2l6ZUluZm8ub3V0ZXJXaWR0aCAtIHNpemVJbmZvLndpZHRoKSxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IHNpemVJbmZvLmF2YWlsYWJsZUhlaWdodCAtIChzaXplSW5mby5vdXRlckhlaWdodCAtIHNpemVJbmZvLmhlaWdodCksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfZW5zdXJlQnJvd3NlcldpbmRvd0Rlc2NyaXB0b3IgKGJyb3dzZXJJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLl9nZXRXaW5kb3dEZXNjcmlwdG9yKGJyb3dzZXJJZCkpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgYXdhaXQgdGhpcy5fZW5zdXJlTG9jYWxCcm93c2VySW5mbyhicm93c2VySWQpO1xuXG4gICAgICAgIC8vIE5PVEU6IGRlbGF5IHRvIGVuc3VyZSB0aGUgd2luZG93IGZpbmlzaGVkIHRoZSBvcGVuaW5nXG4gICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLndhaXRGb3JDb25uZWN0aW9uUmVhZHkoYnJvd3NlcklkKTtcbiAgICAgICAgYXdhaXQgZGVsYXkoQlJPV1NFUl9PUEVOSU5HX0RFTEFZKTtcblxuICAgICAgICBpZiAodGhpcy5sb2NhbEJyb3dzZXJzSW5mb1ticm93c2VySWRdKSB7XG4gICAgICAgICAgICBjb25zdCBjb25uZWN0aW9uICAgICA9IEJyb3dzZXJDb25uZWN0aW9uLmdldEJ5SWQoYnJvd3NlcklkKSBhcyBCcm93c2VyQ29ubmVjdGlvbjtcbiAgICAgICAgICAgIGxldCB3aW5kb3dEZXNjcmlwdG9yID0gbnVsbDtcblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB3aW5kb3dEZXNjcmlwdG9yID0gYXdhaXQgdGhpcy5fZmluZFdpbmRvdyhicm93c2VySWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICAgICAgICAgICAgLy8gTk9URTogV2UgY2FuIHN1cHByZXNzIHRoZSBlcnJvciBoZXJlIHNpbmNlIHdlIGNhbiBqdXN0IGRpc2FibGUgd2luZG93IG1hbmlwdWxhdGlvbiBmdW5jdGlvbnNcbiAgICAgICAgICAgICAgICAvLyB3aGVuIHdlIGNhbm5vdCBmaW5kIGEgbG9jYWwgd2luZG93IGRlc2NyaXB0b3JcbiAgICAgICAgICAgICAgICBERUJVR19MT0dHRVIoZXJyKTtcbiAgICAgICAgICAgICAgICBjb25uZWN0aW9uLmFkZFdhcm5pbmcoXG4gICAgICAgICAgICAgICAgICAgIFdBUk5JTkdfTUVTU0FHRS5jYW5ub3RGaW5kV2luZG93RGVzY3JpcHRvckVycm9yLFxuICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLmJyb3dzZXJJbmZvLmFsaWFzLFxuICAgICAgICAgICAgICAgICAgICBlcnIubWVzc2FnZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX3NldFdpbmRvd0Rlc2NyaXB0b3IoYnJvd3NlcklkLCB3aW5kb3dEZXNjcmlwdG9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX2Vuc3VyZUJyb3dzZXJXaW5kb3dQYXJhbWV0ZXJzIChicm93c2VySWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLl9lbnN1cmVCcm93c2VyV2luZG93RGVzY3JpcHRvcihicm93c2VySWQpO1xuXG4gICAgICAgIGlmIChPUy53aW4gJiYgIXRoaXMuX2dldFJlc2l6ZUNvcnJlY3Rpb25zKGJyb3dzZXJJZCkpXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9jYWxjdWxhdGVSZXNpemVDb3JyZWN0aW9ucyhicm93c2VySWQpO1xuICAgICAgICBlbHNlIGlmIChPUy5tYWMgJiYgIXRoaXMuX2dldE1heFNjcmVlblNpemUoYnJvd3NlcklkKSlcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX2NhbGN1bGF0ZU1hY1NpemVMaW1pdHMoYnJvd3NlcklkKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9jbG9zZUxvY2FsQnJvd3NlciAoYnJvd3NlcklkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMucGx1Z2luLm5lZWRDbGVhblVwQnJvd3NlckluZm8pXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5jbGVhblVwQnJvd3NlckluZm8oYnJvd3NlcklkKTtcblxuICAgICAgICBjb25zdCB3aW5kb3dEZXNjcmlwdG9yID0gdGhpcy5fZ2V0V2luZG93RGVzY3JpcHRvcihicm93c2VySWQpO1xuXG4gICAgICAgIGF3YWl0IGJyb3dzZXJUb29scy5jbG9zZSh3aW5kb3dEZXNjcmlwdG9yKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9yZXNpemVMb2NhbEJyb3dzZXJXaW5kb3cgKGJyb3dzZXJJZDogc3RyaW5nLCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciwgY3VycmVudFdpZHRoOiBudW1iZXIsIGN1cnJlbnRIZWlnaHQ6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLl9lbnN1cmVCcm93c2VyV2luZG93RGVzY3JpcHRvcihicm93c2VySWQpO1xuXG4gICAgICAgIGNvbnN0IHJlc2l6ZUNvcnJlY3Rpb25zID0gdGhpcy5fZ2V0UmVzaXplQ29ycmVjdGlvbnMoYnJvd3NlcklkKTtcblxuICAgICAgICBpZiAocmVzaXplQ29ycmVjdGlvbnMgJiYgYXdhaXQgYnJvd3NlclRvb2xzLmlzTWF4aW1pemVkKHRoaXMuX2dldFdpbmRvd0Rlc2NyaXB0b3IoYnJvd3NlcklkKSkpIHtcbiAgICAgICAgICAgIHdpZHRoIC09IHJlc2l6ZUNvcnJlY3Rpb25zLndpZHRoO1xuICAgICAgICAgICAgaGVpZ2h0IC09IHJlc2l6ZUNvcnJlY3Rpb25zLmhlaWdodDtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IGJyb3dzZXJUb29scy5yZXNpemUodGhpcy5fZ2V0V2luZG93RGVzY3JpcHRvcihicm93c2VySWQpLCBjdXJyZW50V2lkdGgsIGN1cnJlbnRIZWlnaHQsIHdpZHRoLCBoZWlnaHQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3Rha2VMb2NhbEJyb3dzZXJTY3JlZW5zaG90IChicm93c2VySWQ6IHN0cmluZywgc2NyZWVuc2hvdFBhdGg6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCBicm93c2VyVG9vbHMuc2NyZWVuc2hvdCh0aGlzLl9nZXRXaW5kb3dEZXNjcmlwdG9yKGJyb3dzZXJJZCksIHNjcmVlbnNob3RQYXRoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9jYW5SZXNpemVMb2NhbEJyb3dzZXJXaW5kb3dUb0RpbWVuc2lvbnMgKGJyb3dzZXJJZDogc3RyaW5nLCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICBpZiAoIU9TLm1hYylcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuXG4gICAgICAgIGNvbnN0IG1heFNjcmVlblNpemUgPSB0aGlzLl9nZXRNYXhTY3JlZW5TaXplKGJyb3dzZXJJZCkgYXMgU2l6ZTtcblxuICAgICAgICByZXR1cm4gd2lkdGggPD0gbWF4U2NyZWVuU2l6ZS53aWR0aCAmJiBoZWlnaHQgPD0gbWF4U2NyZWVuU2l6ZS5oZWlnaHQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfbWF4aW1pemVMb2NhbEJyb3dzZXJXaW5kb3cgKGJyb3dzZXJJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuX2Vuc3VyZUJyb3dzZXJXaW5kb3dEZXNjcmlwdG9yKGJyb3dzZXJJZCk7XG5cbiAgICAgICAgYXdhaXQgYnJvd3NlclRvb2xzLm1heGltaXplKHRoaXMuX2dldFdpbmRvd0Rlc2NyaXB0b3IoYnJvd3NlcklkKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfZW5zdXJlUmV0cnlUZXN0UGFnZXNXYXJuaW5nIChicm93c2VySWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBjb25uZWN0aW9uID0gQnJvd3NlckNvbm5lY3Rpb24uZ2V0QnlJZChicm93c2VySWQpIGFzIEJyb3dzZXJDb25uZWN0aW9uO1xuXG4gICAgICAgIGlmIChjb25uZWN0aW9uPy5yZXRyeVRlc3RQYWdlcykge1xuICAgICAgICAgICAgY29uc3QgaXNTZXJ2aWNlV29ya2VyRW5hYmxlZCA9IGF3YWl0IHRoaXMucGx1Z2luLnJ1bkluaXRTY3JpcHQoYnJvd3NlcklkLCBHRVRfSVNfU0VSVklDRV9XT1JLRVJfRU5BQkxFRCk7XG5cbiAgICAgICAgICAgIGlmICghaXNTZXJ2aWNlV29ya2VyRW5hYmxlZClcbiAgICAgICAgICAgICAgICBjb25uZWN0aW9uLmFkZFdhcm5pbmcoV0FSTklOR19NRVNTQUdFLnJldHJ5VGVzdFBhZ2VzSXNOb3RTdXBwb3J0ZWQsIGNvbm5lY3Rpb24uYnJvd3NlckluZm8uYWxpYXMsIGNvbm5lY3Rpb24uYnJvd3NlckluZm8uYWxpYXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNhblVzZURlZmF1bHRXaW5kb3dBY3Rpb25zIChicm93c2VySWQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICBjb25zdCBpc0xvY2FsQnJvd3NlciAgICA9IGF3YWl0IHRoaXMucGx1Z2luLmlzTG9jYWxCcm93c2VyKGJyb3dzZXJJZCk7XG4gICAgICAgIGNvbnN0IGlzSGVhZGxlc3NCcm93c2VyID0gYXdhaXQgdGhpcy5wbHVnaW4uaXNIZWFkbGVzc0Jyb3dzZXIoYnJvd3NlcklkKTtcblxuICAgICAgICByZXR1cm4gaXNMb2NhbEJyb3dzZXIgJiYgIWlzSGVhZGxlc3NCcm93c2VyO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBpbml0ICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgaW5pdGlhbGl6ZWQgPSBhd2FpdCB0aGlzLmluaXRQcm9taXNlO1xuXG4gICAgICAgIGlmIChpbml0aWFsaXplZClcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICB0aGlzLmluaXRQcm9taXNlID0gdGhpcy5wbHVnaW5cbiAgICAgICAgICAgIC5pbml0KClcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHRydWUpO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmluaXRQcm9taXNlO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgdGhpcy5pbml0UHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZShmYWxzZSk7XG5cbiAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGRpc3Bvc2UgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBpbml0aWFsaXplZCA9IGF3YWl0IHRoaXMuaW5pdFByb21pc2U7XG5cbiAgICAgICAgaWYgKCFpbml0aWFsaXplZClcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICB0aGlzLmluaXRQcm9taXNlID0gdGhpcy5wbHVnaW5cbiAgICAgICAgICAgIC5kaXNwb3NlKClcbiAgICAgICAgICAgIC50aGVuKCgpID0+IGZhbHNlKTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5pbml0UHJvbWlzZTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoZmFsc2UpO1xuXG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBpc0xvY2FsQnJvd3NlciAoYnJvd3NlcklkPzogc3RyaW5nLCBicm93c2VyTmFtZT86IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5wbHVnaW4uaXNMb2NhbEJyb3dzZXIoYnJvd3NlcklkLCBicm93c2VyTmFtZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzSGVhZGxlc3NCcm93c2VyIChicm93c2VySWQ/OiBzdHJpbmcsIGJyb3dzZXJOYW1lPzogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBsdWdpbi5pc0hlYWRsZXNzQnJvd3Nlcihicm93c2VySWQsIGJyb3dzZXJOYW1lKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0T1NJbmZvIChicm93c2VySWQ6IHN0cmluZyk6IFByb21pc2U8T1NJbmZvIHwgbnVsbD4ge1xuICAgICAgICBpZiAoYXdhaXQgdGhpcy5pc0xvY2FsQnJvd3Nlcihicm93c2VySWQpKVxuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IGdldExvY2FsT1NJbmZvKCk7XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucGx1Z2luLmdldE9TSW5mbyhicm93c2VySWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBvcGVuQnJvd3NlciAoYnJvd3NlcklkOiBzdHJpbmcsIHBhZ2VVcmw6IHN0cmluZywgYnJvd3Nlck9wdGlvbjogdW5rbm93biwgZGlzYWJsZU11bHRpcGxlV2luZG93czogYm9vbGVhbiwgcHJveHlsZXNzOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLm9wZW5Ccm93c2VyKGJyb3dzZXJJZCwgcGFnZVVybCwgYnJvd3Nlck9wdGlvbiwgZGlzYWJsZU11bHRpcGxlV2luZG93cywgcHJveHlsZXNzKTtcblxuICAgICAgICBhd2FpdCB0aGlzLl9lbnN1cmVSZXRyeVRlc3RQYWdlc1dhcm5pbmcoYnJvd3NlcklkKTtcblxuICAgICAgICBpZiAoYXdhaXQgdGhpcy5jYW5Vc2VEZWZhdWx0V2luZG93QWN0aW9ucyhicm93c2VySWQpKVxuICAgICAgICAgICAgYXdhaXQgdGhpcy5fZW5zdXJlQnJvd3NlcldpbmRvd1BhcmFtZXRlcnMoYnJvd3NlcklkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY2xvc2VCcm93c2VyIChicm93c2VySWQ6IHN0cmluZywgZGF0YTogQnJvd3NlckNsb3NpbmdJbmZvKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGNhblVzZURlZmF1bHRXaW5kb3dBY3Rpb25zID0gYXdhaXQgdGhpcy5jYW5Vc2VEZWZhdWx0V2luZG93QWN0aW9ucyhicm93c2VySWQpO1xuICAgICAgICBjb25zdCBjdXN0b21BY3Rpb25zSW5mbyAgICAgICAgICA9IGF3YWl0IHRoaXMuaGFzQ3VzdG9tQWN0aW9uRm9yQnJvd3Nlcihicm93c2VySWQpO1xuICAgICAgICBjb25zdCBoYXNDdXN0b21DbG9zZUJyb3dzZXIgICAgICA9IGN1c3RvbUFjdGlvbnNJbmZvLmhhc0Nsb3NlQnJvd3NlcjtcbiAgICAgICAgY29uc3QgdXNlUGx1Z2luc0Nsb3NlQnJvd3NlciAgICAgPSBoYXNDdXN0b21DbG9zZUJyb3dzZXIgfHwgIWNhblVzZURlZmF1bHRXaW5kb3dBY3Rpb25zO1xuXG4gICAgICAgIGlmICh1c2VQbHVnaW5zQ2xvc2VCcm93c2VyKVxuICAgICAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4uY2xvc2VCcm93c2VyKGJyb3dzZXJJZCwgZGF0YSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX2Nsb3NlTG9jYWxCcm93c2VyKGJyb3dzZXJJZCk7XG5cbiAgICAgICAgaWYgKGNhblVzZURlZmF1bHRXaW5kb3dBY3Rpb25zKVxuICAgICAgICAgICAgZGVsZXRlIHRoaXMubG9jYWxCcm93c2Vyc0luZm9bYnJvd3NlcklkXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QnJvd3Nlckxpc3QgKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucGx1Z2luLmdldEJyb3dzZXJMaXN0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGlzVmFsaWRCcm93c2VyTmFtZSAoYnJvd3Nlck5hbWU6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5wbHVnaW4uaXNWYWxpZEJyb3dzZXJOYW1lKGJyb3dzZXJOYW1lKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVzaXplV2luZG93IChicm93c2VySWQ6IHN0cmluZywgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIsIGN1cnJlbnRXaWR0aDogbnVtYmVyLCBjdXJyZW50SGVpZ2h0OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgY2FuVXNlRGVmYXVsdFdpbmRvd0FjdGlvbnMgPSBhd2FpdCB0aGlzLmNhblVzZURlZmF1bHRXaW5kb3dBY3Rpb25zKGJyb3dzZXJJZCk7XG4gICAgICAgIGNvbnN0IGN1c3RvbUFjdGlvbnNJbmZvICAgICAgICAgID0gYXdhaXQgdGhpcy5oYXNDdXN0b21BY3Rpb25Gb3JCcm93c2VyKGJyb3dzZXJJZCk7XG4gICAgICAgIGNvbnN0IGhhc0N1c3RvbVJlc2l6ZVdpbmRvdyAgICAgID0gY3VzdG9tQWN0aW9uc0luZm8uaGFzUmVzaXplV2luZG93O1xuXG5cbiAgICAgICAgaWYgKGNhblVzZURlZmF1bHRXaW5kb3dBY3Rpb25zICYmICFoYXNDdXN0b21SZXNpemVXaW5kb3cpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX3Jlc2l6ZUxvY2FsQnJvd3NlcldpbmRvdyhicm93c2VySWQsIHdpZHRoLCBoZWlnaHQsIGN1cnJlbnRXaWR0aCwgY3VycmVudEhlaWdodCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5yZXNpemVXaW5kb3coYnJvd3NlcklkLCB3aWR0aCwgaGVpZ2h0LCBjdXJyZW50V2lkdGgsIGN1cnJlbnRIZWlnaHQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjYW5SZXNpemVXaW5kb3dUb0RpbWVuc2lvbnMgKGJyb3dzZXJJZDogc3RyaW5nLCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICBjb25zdCBjYW5Vc2VEZWZhdWx0V2luZG93QWN0aW9ucyAgICAgPSBhd2FpdCB0aGlzLmNhblVzZURlZmF1bHRXaW5kb3dBY3Rpb25zKGJyb3dzZXJJZCk7XG4gICAgICAgIGNvbnN0IGN1c3RvbUFjdGlvbnNJbmZvICAgICAgICAgICAgICA9IGF3YWl0IHRoaXMuaGFzQ3VzdG9tQWN0aW9uRm9yQnJvd3Nlcihicm93c2VySWQpO1xuICAgICAgICBjb25zdCBoYXNDdXN0b21DYW5SZXNpemVUb0RpbWVuc2lvbnMgPSBjdXN0b21BY3Rpb25zSW5mby5oYXNDYW5SZXNpemVXaW5kb3dUb0RpbWVuc2lvbnM7XG5cblxuICAgICAgICBpZiAoY2FuVXNlRGVmYXVsdFdpbmRvd0FjdGlvbnMgJiYgIWhhc0N1c3RvbUNhblJlc2l6ZVRvRGltZW5zaW9ucylcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLl9jYW5SZXNpemVMb2NhbEJyb3dzZXJXaW5kb3dUb0RpbWVuc2lvbnMoYnJvd3NlcklkLCB3aWR0aCwgaGVpZ2h0KTtcblxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5wbHVnaW4uY2FuUmVzaXplV2luZG93VG9EaW1lbnNpb25zKGJyb3dzZXJJZCwgd2lkdGgsIGhlaWdodCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIG1heGltaXplV2luZG93IChicm93c2VySWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBjYW5Vc2VEZWZhdWx0V2luZG93QWN0aW9ucyA9IGF3YWl0IHRoaXMuY2FuVXNlRGVmYXVsdFdpbmRvd0FjdGlvbnMoYnJvd3NlcklkKTtcbiAgICAgICAgY29uc3QgY3VzdG9tQWN0aW9uc0luZm8gICAgICAgICAgPSBhd2FpdCB0aGlzLmhhc0N1c3RvbUFjdGlvbkZvckJyb3dzZXIoYnJvd3NlcklkKTtcbiAgICAgICAgY29uc3QgaGFzQ3VzdG9tTWF4aW1pemVXaW5kb3cgICAgPSBjdXN0b21BY3Rpb25zSW5mby5oYXNNYXhpbWl6ZVdpbmRvdztcblxuICAgICAgICBpZiAoY2FuVXNlRGVmYXVsdFdpbmRvd0FjdGlvbnMgJiYgIWhhc0N1c3RvbU1heGltaXplV2luZG93KVxuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX21heGltaXplTG9jYWxCcm93c2VyV2luZG93KGJyb3dzZXJJZCk7XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucGx1Z2luLm1heGltaXplV2luZG93KGJyb3dzZXJJZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHRha2VTY3JlZW5zaG90IChicm93c2VySWQ6IHN0cmluZywgc2NyZWVuc2hvdFBhdGg6IHN0cmluZywgcGFnZVdpZHRoOiBudW1iZXIsIHBhZ2VIZWlnaHQ6IG51bWJlciwgZnVsbFBhZ2U6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgY2FuVXNlRGVmYXVsdFdpbmRvd0FjdGlvbnMgID0gYXdhaXQgdGhpcy5jYW5Vc2VEZWZhdWx0V2luZG93QWN0aW9ucyhicm93c2VySWQpO1xuICAgICAgICBjb25zdCBjdXN0b21BY3Rpb25zSW5mbyAgICAgICAgICAgPSBhd2FpdCB0aGlzLmhhc0N1c3RvbUFjdGlvbkZvckJyb3dzZXIoYnJvd3NlcklkKTtcbiAgICAgICAgY29uc3QgaGFzQ3VzdG9tVGFrZVNjcmVlbnNob3QgICAgID0gY3VzdG9tQWN0aW9uc0luZm8uaGFzVGFrZVNjcmVlbnNob3Q7XG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpb24gICAgICAgICAgICAgICAgICA9IEJyb3dzZXJDb25uZWN0aW9uLmdldEJ5SWQoYnJvd3NlcklkKSBhcyBCcm93c2VyQ29ubmVjdGlvbjtcbiAgICAgICAgY29uc3QgdGFrZUxvY2FsQnJvd3NlcnNTY3JlZW5zaG90ID0gY2FuVXNlRGVmYXVsdFdpbmRvd0FjdGlvbnMgJiYgIWhhc0N1c3RvbVRha2VTY3JlZW5zaG90O1xuICAgICAgICBjb25zdCBpc0xvY2FsRnVsbFBhZ2VNb2RlICAgICAgICAgPSB0YWtlTG9jYWxCcm93c2Vyc1NjcmVlbnNob3QgJiYgZnVsbFBhZ2U7XG5cbiAgICAgICAgaWYgKGlzTG9jYWxGdWxsUGFnZU1vZGUpIHtcbiAgICAgICAgICAgIGNvbm5lY3Rpb24uYWRkV2FybmluZyhXQVJOSU5HX01FU1NBR0Uuc2NyZWVuc2hvdHNGdWxsUGFnZU5vdFN1cHBvcnRlZCwgY29ubmVjdGlvbi5icm93c2VySW5mby5hbGlhcyk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IG1ha2VEaXIoZGlybmFtZShzY3JlZW5zaG90UGF0aCkpO1xuXG4gICAgICAgIGlmICh0YWtlTG9jYWxCcm93c2Vyc1NjcmVlbnNob3QpXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl90YWtlTG9jYWxCcm93c2VyU2NyZWVuc2hvdChicm93c2VySWQsIHNjcmVlbnNob3RQYXRoKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4udGFrZVNjcmVlbnNob3QoYnJvd3NlcklkLCBzY3JlZW5zaG90UGF0aCwgcGFnZVdpZHRoLCBwYWdlSGVpZ2h0LCBmdWxsUGFnZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldFZpZGVvRnJhbWVEYXRhIChicm93c2VySWQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBsdWdpbi5nZXRWaWRlb0ZyYW1lRGF0YShicm93c2VySWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzdGFydENhcHR1cmluZ1ZpZGVvIChicm93c2VySWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5zdGFydENhcHR1cmluZ1ZpZGVvKGJyb3dzZXJJZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHN0b3BDYXB0dXJpbmdWaWRlbyAoYnJvd3NlcklkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4uc3RvcENhcHR1cmluZ1ZpZGVvKGJyb3dzZXJJZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGhhc0N1c3RvbUFjdGlvbkZvckJyb3dzZXIgKGJyb3dzZXJJZDogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGx1Z2luLmhhc0N1c3RvbUFjdGlvbkZvckJyb3dzZXIoYnJvd3NlcklkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVwb3J0Sm9iUmVzdWx0IChicm93c2VySWQ6IHN0cmluZywgc3RhdHVzOiBzdHJpbmcsIGRhdGE6IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5yZXBvcnRKb2JSZXN1bHQoYnJvd3NlcklkLCBzdGF0dXMsIGRhdGEpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBY3RpdmVXaW5kb3dJZCAoYnJvd3NlcklkOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgaWYgKCF0aGlzLnBsdWdpbi5zdXBwb3J0TXVsdGlwbGVXaW5kb3dzKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucGx1Z2luLmdldEFjdGl2ZVdpbmRvd0lkKGJyb3dzZXJJZCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEFjdGl2ZVdpbmRvd0lkIChicm93c2VySWQ6IHN0cmluZywgdmFsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wbHVnaW4uc2V0QWN0aXZlV2luZG93SWQoYnJvd3NlcklkLCB2YWwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjbG9zZUJyb3dzZXJDaGlsZFdpbmRvdyAoYnJvd3NlcklkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4uY2xvc2VCcm93c2VyQ2hpbGRXaW5kb3coYnJvd3NlcklkKTtcbiAgICB9XG59XG4iXX0=
@@ -3,7 +3,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- /* global Symbol */
7
6
  const lodash_1 = require("lodash");
8
7
  const promisify_event_1 = __importDefault(require("promisify-event"));
9
8
  const browser_job_result_1 = __importDefault(require("../../runner/browser-job-result"));
@@ -13,8 +12,8 @@ const testcafe_hammerhead_1 = require("testcafe-hammerhead");
13
12
  const name = Symbol();
14
13
  class BrowserProviderPluginHost {
15
14
  constructor(providerObject, providerName) {
16
- this.JOB_RESULT = lodash_1.assignIn({}, browser_job_result_1.default);
17
- lodash_1.assignIn(this, providerObject);
15
+ this.JOB_RESULT = (0, lodash_1.assignIn)({}, browser_job_result_1.default);
16
+ (0, lodash_1.assignIn)(this, providerObject);
18
17
  this[name] = providerName;
19
18
  }
20
19
  // Helpers
@@ -26,13 +25,13 @@ class BrowserProviderPluginHost {
26
25
  return connection.runInitScript(`(${code})()`);
27
26
  }
28
27
  calculateWindowId() {
29
- return testcafe_hammerhead_1.generateUniqueId();
28
+ return (0, testcafe_hammerhead_1.generateUniqueId)();
30
29
  }
31
30
  waitForConnectionReady(browserId) {
32
31
  const connection = connection_1.default.getById(browserId);
33
32
  if (connection.isReady())
34
33
  return Promise.resolve();
35
- return promisify_event_1.default(connection, 'ready');
34
+ return (0, promisify_event_1.default)(connection, 'ready');
36
35
  }
37
36
  reportWarning(browserId, ...args) {
38
37
  const connection = connection_1.default.getById(browserId);
@@ -133,4 +132,4 @@ class BrowserProviderPluginHost {
133
132
  }
134
133
  exports.default = BrowserProviderPluginHost;
135
134
  module.exports = exports.default;
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWhvc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYnJvd3Nlci9wcm92aWRlci9wbHVnaW4taG9zdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1CQUFtQjtBQUNuQixtQ0FBa0M7QUFDbEMsc0VBQTZDO0FBQzdDLHlGQUFpRTtBQUNqRSwrREFBOEM7QUFDOUMsMEZBQWtFO0FBQ2xFLDZEQUF1RDtBQUV2RCxNQUFNLElBQUksR0FBRyxNQUFNLEVBQUUsQ0FBQztBQUV0QixNQUFxQix5QkFBeUI7SUFDMUMsWUFBYSxjQUFjLEVBQUUsWUFBWTtRQUNyQyxJQUFJLENBQUMsVUFBVSxHQUFHLGlCQUFRLENBQUMsRUFBRSxFQUFFLDRCQUFrQixDQUFDLENBQUM7UUFFbkQsaUJBQVEsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFFL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLFlBQVksQ0FBQztJQUM5QixDQUFDO0lBR0QsVUFBVTtJQUNWLElBQUksWUFBWTtRQUNaLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxLQUFLLENBQUMsYUFBYSxDQUFFLFNBQVMsRUFBRSxJQUFJO1FBQ2hDLE1BQU0sVUFBVSxHQUFHLG9CQUFpQixDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV4RCxPQUFPLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxpQkFBaUI7UUFDYixPQUFPLHNDQUFnQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELHNCQUFzQixDQUFFLFNBQVM7UUFDN0IsTUFBTSxVQUFVLEdBQUcsb0JBQWlCLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXhELElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRTtZQUNwQixPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FB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QWUsRUFBRSwyQkFBMkI7UUFDOUMsT0FBTztJQUNYLENBQUM7SUFFRCxTQUFTLENBQUUsS0FBSztRQUNaLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxLQUFLLENBQUMsdUJBQXVCLEVBQUUsYUFBYTtRQUN4QyxPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQVMsRUFBRSxhQUFhO1FBQzFCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7Q0FDSjtBQS9KRCw0Q0ErSkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBnbG9iYWwgU3ltYm9sICovXG5pbXBvcnQgeyBhc3NpZ25JbiB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgcHJvbWlzaWZ5RXZlbnQgZnJvbSAncHJvbWlzaWZ5LWV2ZW50JztcbmltcG9ydCBCUk9XU0VSX0pPQl9SRVNVTFQgZnJvbSAnLi4vLi4vcnVubmVyL2Jyb3dzZXItam9iLXJlc3VsdCc7XG5pbXBvcnQgQnJvd3NlckNvbm5lY3Rpb24gZnJvbSAnLi4vY29ubmVjdGlvbic7XG5pbXBvcnQgV0FSTklOR19NRVNTQUdFIGZyb20gJy4uLy4uL25vdGlmaWNhdGlvbnMvd2FybmluZy1tZXNzYWdlJztcbmltcG9ydCB7IGdlbmVyYXRlVW5pcXVlSWQgfSBmcm9tICd0ZXN0Y2FmZS1oYW1tZXJoZWFkJztcblxuY29uc3QgbmFtZSA9IFN5bWJvbCgpO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCcm93c2VyUHJvdmlkZXJQbHVnaW5Ib3N0IHtcbiAgICBjb25zdHJ1Y3RvciAocHJvdmlkZXJPYmplY3QsIHByb3ZpZGVyTmFtZSkge1xuICAgICAgICB0aGlzLkpPQl9SRVNVTFQgPSBhc3NpZ25Jbih7fSwgQlJPV1NFUl9KT0JfUkVTVUxUKTtcblxuICAgICAgICBhc3NpZ25Jbih0aGlzLCBwcm92aWRlck9iamVjdCk7XG5cbiAgICAgICAgdGhpc1tuYW1lXSA9IHByb3ZpZGVyTmFtZTtcbiAgICB9XG5cblxuICAgIC8vIEhlbHBlcnNcbiAgICBnZXQgcHJvdmlkZXJOYW1lICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbbmFtZV07XG4gICAgfVxuXG4gICAgYXN5bmMgcnVuSW5pdFNjcmlwdCAoYnJvd3NlcklkLCBjb2RlKSB7XG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPSBCcm93c2VyQ29ubmVjdGlvbi5nZXRCeUlkKGJyb3dzZXJJZCk7XG5cbiAgICAgICAgcmV0dXJuIGNvbm5lY3Rpb24ucnVuSW5pdFNjcmlwdChgKCR7Y29kZX0pKClgKTtcbiAgICB9XG5cbiAgICBjYWxjdWxhdGVXaW5kb3dJZCAoKSB7XG4gICAgICAgIHJldHVybiBnZW5lcmF0ZVVuaXF1ZUlkKCk7XG4gICAgfVxuXG4gICAgd2FpdEZvckNvbm5lY3Rpb25SZWFkeSAoYnJvd3NlcklkKSB7XG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPSBCcm93c2VyQ29ubmVjdGlvbi5nZXRCeUlkKGJyb3dzZXJJZCk7XG5cbiAgICAgICAgaWYgKGNvbm5lY3Rpb24uaXNSZWFkeSgpKVxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXG4gICAgICAgIHJldHVybiBwcm9taXNpZnlFdmVudChjb25uZWN0aW9uLCAncmVhZHknKTtcbiAgICB9XG5cbiAgICByZXBvcnRXYXJuaW5nIChicm93c2VySWQsIC4uLmFyZ3MpIHtcbiAgICAgICAgY29uc3QgY29ubmVjdGlvbiA9IEJyb3dzZXJDb25uZWN0aW9uLmdldEJ5SWQoYnJvd3NlcklkKTtcblxuICAgICAgICBjb25uZWN0aW9uLmFkZFdhcm5pbmcoLi4uYXJncyk7XG4gICAgfVxuXG4gICAgc2V0VXNlckFnZW50TWV0YUluZm8gKGJyb3dzZXJJZCwgbWVzc2FnZSwgLi4uYXJncykge1xuICAgICAgICBjb25zdCBjb25uZWN0aW9uID0gQnJvd3NlckNvbm5lY3Rpb24uZ2V0QnlJZChicm93c2VySWQpO1xuXG4gICAgICAgIGNvbm5lY3Rpb24uc2V0UHJvdmlkZXJNZXRhSW5mbyhtZXNzYWdlLCAuLi5hcmdzKTtcbiAgICB9XG5cbiAgICBhc3luYyBjbG9zZUxvY2FsQnJvd3NlciAoYnJvd3NlcklkKSB7XG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPSBCcm93c2VyQ29ubmVjdGlvbi5nZXRCeUlkKGJyb3dzZXJJZCk7XG5cbiAgICAgICAgYXdhaXQgY29ubmVjdGlvbi5wcm92aWRlci5fZW5zdXJlQnJvd3NlcldpbmRvd0Rlc2NyaXB0b3IoYnJvd3NlcklkKTtcbiAgICAgICAgYXdhaXQgY29ubmVjdGlvbi5wcm92aWRlci5fY2xvc2VMb2NhbEJyb3dzZXIoYnJvd3NlcklkKTtcbiAgICB9XG5cbiAgICBhc3luYyByZXNpemVMb2NhbEJyb3dzZXJXaW5kb3cgKGJyb3dzZXJJZCwgd2lkdGgsIGhlaWdodCwgY3VycmVudFdpZHRoLCBjdXJyZW50SGVpZ2h0KSB7XG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPSBCcm93c2VyQ29ubmVjdGlvbi5nZXRCeUlkKGJyb3dzZXJJZCk7XG5cbiAgICAgICAgYXdhaXQgY29ubmVjdGlvbi5wcm92aWRlci5fZW5zdXJlQnJvd3NlcldpbmRvd1BhcmFtZXRlcnMoYnJvd3NlcklkKTtcbiAgICAgICAgYXdhaXQgY29ubmVjdGlvbi5wcm92aWRlci5fcmVzaXplTG9jYWxCcm93c2VyV2luZG93KGJyb3dzZXJJZCwgd2lkdGgsIGhlaWdodCwgY3VycmVudFdpZHRoLCBjdXJyZW50SGVpZ2h0KTtcbiAgICB9XG5cbiAgICAvLyBBUElcbiAgICAvLyBCcm93c2VyIGNvbnRyb2xcbiAgICBhc3luYyBvcGVuQnJvd3NlciAoLyogYnJvd3NlcklkLCBwYWdlVXJsLCBicm93c2VyTmFtZSAqLykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCEnKTtcbiAgICB9XG5cbiAgICBhc3luYyBjbG9zZUJyb3dzZXIgKC8qIGJyb3dzZXJJZCAqLykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCEnKTtcbiAgICB9XG5cbiAgICAvLyBJbml0aWFsaXphdGlvblxuICAgIGFzeW5jIGluaXQgKCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXN5bmMgZGlzcG9zZSAoKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cblxuICAgIC8vIEJyb3dzZXIgbmFtZXMgaGFuZGxpbmdcbiAgICBhc3luYyBnZXRCcm93c2VyTGlzdCAoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkIScpO1xuICAgIH1cblxuICAgIGFzeW5jIGlzVmFsaWRCcm93c2VyTmFtZSAoLyogYnJvd3Nlck5hbWUgKi8pIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gRXh0cmEgZnVuY3Rpb25zXG4gICAgLy8gTk9URTpcbiAgICAvLyBUaGUgYnJvd3Nlck5hbWUgYXJndW1lbnQgaXMgb3B0aW9uYWwsIGFuZCBtdXN0IGJlIHN1cHBsaWVkIGlmIHRoZSBicm93c2VySWQgYXJndW1lbnQgaXMgbm90IHZhbGlkXG4gICAgLy8gKGJyb3dzZXIgaXMgbm90IG9wZW5lZClcbiAgICBhc3luYyBpc0xvY2FsQnJvd3NlciAoLyogYnJvd3NlcklkWywgYnJvd3Nlck5hbWVdICovKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBOT1RFOlxuICAgIC8vIFRoZSBicm93c2VyTmFtZSBhcmd1bWVudCBpcyBvcHRpb25hbCwgYW5kIG11c3QgYmUgc3VwcGxpZWQgaWYgdGhlIGJyb3dzZXJJZCBhcmd1bWVudCBpcyBub3QgdmFsaWRcbiAgICAvLyAoYnJvd3NlciBpcyBub3Qgb3BlbmVkKVxuICAgIGlzSGVhZGxlc3NCcm93c2VyICgvKiBicm93c2VySWRbLCBicm93c2VyTmFtZV0gKi8pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGFzeW5jIGhhc0N1c3RvbUFjdGlvbkZvckJyb3dzZXIgKC8qIGJyb3dzZXJJZCAqLykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaGFzQ2xvc2VCcm93c2VyOiAgICAgICAgICAgICAgICB0aGlzLmhhc093blByb3BlcnR5KCdjbG9zZUJyb3dzZXInKSxcbiAgICAgICAgICAgIGhhc1Jlc2l6ZVdpbmRvdzogICAgICAgICAgICAgICAgdGhpcy5oYXNPd25Qcm9wZXJ0eSgncmVzaXplV2luZG93JyksXG4gICAgICAgICAgICBoYXNUYWtlU2NyZWVuc2hvdDogICAgICAgICAgICAgIHRoaXMuaGFzT3duUHJvcGVydHkoJ3Rha2VTY3JlZW5zaG90JyksXG4gICAgICAgICAgICBoYXNHZXRWaWRlb0ZyYW1lRGF0YTogICAgICAgICAgIHRoaXMuaGFzT3duUHJvcGVydHkoJ2dldFZpZGVvRnJhbWVEYXRhJyksXG4gICAgICAgICAgICBoYXNDYW5SZXNpemVXaW5kb3dUb0RpbWVuc2lvbnM6IHRoaXMuaGFzT3duUHJvcGVydHkoJ2NhblJlc2l6ZVdpbmRvd1RvRGltZW5zaW9ucycpLFxuICAgICAgICAgICAgaGFzTWF4aW1pemVXaW5kb3c6ICAgICAgICAgICAgICB0aGlzLmhhc093blByb3BlcnR5KCdtYXhpbWl6ZVdpbmRvdycpLFxuICAgICAgICAgICAgaGFzQ2hyb21lbGVzc1NjcmVlbnNob3RzOiAgICAgICBmYWxzZSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBhc3luYyByZXNpemVXaW5kb3cgKGJyb3dzZXJJZC8qLCB3aWR0aCwgaGVpZ2h0LCBjdXJyZW50V2lkdGgsIGN1cnJlbnRIZWlnaHQgKi8pIHtcbiAgICAgICAgdGhpcy5yZXBvcnRXYXJuaW5nKGJyb3dzZXJJZCwgV0FSTklOR19NRVNTQUdFLnJlc2l6ZU5vdFN1cHBvcnRlZEJ5QnJvd3NlclByb3ZpZGVyLCB0aGlzW25hbWVdKTtcbiAgICB9XG5cbiAgICBhc3luYyBjYW5SZXNpemVXaW5kb3dUb0RpbWVuc2lvbnMgKC8qIGJyb3dzZXJJZCwgd2lkdGgsIGhlaWdodCAqLykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBhc3luYyB0YWtlU2NyZWVuc2hvdCAoYnJvd3NlcklkLyosIHNjcmVlbnNob3RQYXRoLCBwYWdlV2lkdGgsIHBhZ2VIZWlnaHQgKi8pIHtcbiAgICAgICAgdGhpcy5yZXBvcnRXYXJuaW5nKGJyb3dzZXJJZCwgV0FSTklOR19NRVNTQUdFLnNjcmVlbnNob3ROb3RTdXBwb3J0ZWRCeUJyb3dzZXJQcm92aWRlciwgdGhpc1tuYW1lXSk7XG4gICAgfVxuXG4gICAgYXN5bmMgbWF4aW1pemVXaW5kb3cgKGJyb3dzZXJJZCkge1xuICAgICAgICB0aGlzLnJlcG9ydFdhcm5pbmcoYnJvd3NlcklkLCBXQVJOSU5HX01FU1NBR0UubWF4aW1pemVOb3RTdXBwb3J0ZWRCeUJyb3dzZXJQcm92aWRlciwgdGhpc1tuYW1lXSk7XG4gICAgfVxuXG4gICAgYXN5bmMgc3RhcnRDYXB0dXJpbmdWaWRlbyAoLypicm93c2VySWQqLykge1xuICAgIH1cblxuICAgIGFzeW5jIHN0b3BDYXB0dXJpbmdWaWRlbyAoLypicm93c2VySWQqLykge1xuICAgIH1cblxuICAgIGFzeW5jIGdldFZpZGVvRnJhbWVEYXRhIChicm93c2VySWQpIHtcbiAgICAgICAgY29uc3QgYnJvd3NlckFsaWFzID0gQnJvd3NlckNvbm5lY3Rpb24uZ2V0QnlJZChicm93c2VySWQpLmJyb3dzZXJJbmZvLmFsaWFzO1xuXG4gICAgICAgIHRoaXMucmVwb3J0V2FybmluZyhicm93c2VySWQsIFdBUk5JTkdfTUVTU0FHRS52aWRlb05vdFN1cHBvcnRlZEJ5QnJvd3NlciwgYnJvd3NlckFsaWFzKTtcbiAgICB9XG5cbiAgICBhc3luYyByZXBvcnRKb2JSZXN1bHQgKC8qYnJvd3NlcklkLCBzdGF0dXMsIGRhdGEqLykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZ2V0Q29uZmlnICh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgYXN5bmMgY2xvc2VCcm93c2VyQ2hpbGRXaW5kb3cgKC8qYnJvd3NlcklkKi8pIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH1cblxuICAgIGFzeW5jIGdldE9TSW5mbyAoLypicm93c2VySWQqLykge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59XG4iXX0=
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWhvc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYnJvd3Nlci9wcm92aWRlci9wbHVnaW4taG9zdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1DQUFrQztBQUNsQyxzRUFBNkM7QUFDN0MseUZBQWlFO0FBQ2pFLCtEQUE4QztBQUM5QywwRkFBa0U7QUFDbEUsNkRBQXVEO0FBRXZELE1BQU0sSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFDO0FBRXRCLE1BQXFCLHlCQUF5QjtJQUMxQyxZQUFhLGNBQWMsRUFBRSxZQUFZO1FBQ3JDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBQSxpQkFBUSxFQUFDLEVBQUUsRUFBRSw0QkFBa0IsQ0FBQyxDQUFDO1FBRW5ELElBQUEsaUJBQVEsRUFBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFFL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLFlBQVksQ0FBQztJQUM5QixDQUFDO0lBR0QsVUFBVTtJQUNWLElBQUksWUFBWTtRQUNaLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxLQUFLLENBQUMsYUFBYSxDQUFFLFNBQVMsRUFBRSxJQUFJO1FBQ2hDLE1BQU0sVUFBVSxHQUFHLG9CQUFpQixDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV4RCxPQUFPLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxpQkFBaUI7UUFDYixPQUFPLElBQUEsc0NBQWdCLEdBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsc0JBQXNCLENBQUUsU0FBUztRQUM3QixNQUFNLFVBQVUsR0FBRyxvQkFBaUIsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFeEQsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFO1lBQ3BCLE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxD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Q0FBQyxlQUFlLEVBQUUsMkJBQTJCO1FBQzlDLE9BQU87SUFDWCxDQUFDO0lBRUQsU0FBUyxDQUFFLEtBQUs7UUFDWixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsS0FBSyxDQUFDLHVCQUF1QixFQUFFLGFBQWE7UUFDeEMsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELEtBQUssQ0FBQyxTQUFTLEVBQUUsYUFBYTtRQUMxQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0NBQ0o7QUEvSkQsNENBK0pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXNzaWduSW4gfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHByb21pc2lmeUV2ZW50IGZyb20gJ3Byb21pc2lmeS1ldmVudCc7XG5pbXBvcnQgQlJPV1NFUl9KT0JfUkVTVUxUIGZyb20gJy4uLy4uL3J1bm5lci9icm93c2VyLWpvYi1yZXN1bHQnO1xuaW1wb3J0IEJyb3dzZXJDb25uZWN0aW9uIGZyb20gJy4uL2Nvbm5lY3Rpb24nO1xuaW1wb3J0IFdBUk5JTkdfTUVTU0FHRSBmcm9tICcuLi8uLi9ub3RpZmljYXRpb25zL3dhcm5pbmctbWVzc2FnZSc7XG5pbXBvcnQgeyBnZW5lcmF0ZVVuaXF1ZUlkIH0gZnJvbSAndGVzdGNhZmUtaGFtbWVyaGVhZCc7XG5cbmNvbnN0IG5hbWUgPSBTeW1ib2woKTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnJvd3NlclByb3ZpZGVyUGx1Z2luSG9zdCB7XG4gICAgY29uc3RydWN0b3IgKHByb3ZpZGVyT2JqZWN0LCBwcm92aWRlck5hbWUpIHtcbiAgICAgICAgdGhpcy5KT0JfUkVTVUxUID0gYXNzaWduSW4oe30sIEJST1dTRVJfSk9CX1JFU1VMVCk7XG5cbiAgICAgICAgYXNzaWduSW4odGhpcywgcHJvdmlkZXJPYmplY3QpO1xuXG4gICAgICAgIHRoaXNbbmFtZV0gPSBwcm92aWRlck5hbWU7XG4gICAgfVxuXG5cbiAgICAvLyBIZWxwZXJzXG4gICAgZ2V0IHByb3ZpZGVyTmFtZSAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzW25hbWVdO1xuICAgIH1cblxuICAgIGFzeW5jIHJ1bkluaXRTY3JpcHQgKGJyb3dzZXJJZCwgY29kZSkge1xuICAgICAgICBjb25zdCBjb25uZWN0aW9uID0gQnJvd3NlckNvbm5lY3Rpb24uZ2V0QnlJZChicm93c2VySWQpO1xuXG4gICAgICAgIHJldHVybiBjb25uZWN0aW9uLnJ1bkluaXRTY3JpcHQoYCgke2NvZGV9KSgpYCk7XG4gICAgfVxuXG4gICAgY2FsY3VsYXRlV2luZG93SWQgKCkge1xuICAgICAgICByZXR1cm4gZ2VuZXJhdGVVbmlxdWVJZCgpO1xuICAgIH1cblxuICAgIHdhaXRGb3JDb25uZWN0aW9uUmVhZHkgKGJyb3dzZXJJZCkge1xuICAgICAgICBjb25zdCBjb25uZWN0aW9uID0gQnJvd3NlckNvbm5lY3Rpb24uZ2V0QnlJZChicm93c2VySWQpO1xuXG4gICAgICAgIGlmIChjb25uZWN0aW9uLmlzUmVhZHkoKSlcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblxuICAgICAgICByZXR1cm4gcHJvbWlzaWZ5RXZlbnQoY29ubmVjdGlvbiwgJ3JlYWR5Jyk7XG4gICAgfVxuXG4gICAgcmVwb3J0V2FybmluZyAoYnJvd3NlcklkLCAuLi5hcmdzKSB7XG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPSBCcm93c2VyQ29ubmVjdGlvbi5nZXRCeUlkKGJyb3dzZXJJZCk7XG5cbiAgICAgICAgY29ubmVjdGlvbi5hZGRXYXJuaW5nKC4uLmFyZ3MpO1xuICAgIH1cblxuICAgIHNldFVzZXJBZ2VudE1ldGFJbmZvIChicm93c2VySWQsIG1lc3NhZ2UsIC4uLmFyZ3MpIHtcbiAgICAgICAgY29uc3QgY29ubmVjdGlvbiA9IEJyb3dzZXJDb25uZWN0aW9uLmdldEJ5SWQoYnJvd3NlcklkKTtcblxuICAgICAgICBjb25uZWN0aW9uLnNldFByb3ZpZGVyTWV0YUluZm8obWVzc2FnZSwgLi4uYXJncyk7XG4gICAgfVxuXG4gICAgYXN5bmMgY2xvc2VMb2NhbEJyb3dzZXIgKGJyb3dzZXJJZCkge1xuICAgICAgICBjb25zdCBjb25uZWN0aW9uID0gQnJvd3NlckNvbm5lY3Rpb24uZ2V0QnlJZChicm93c2VySWQpO1xuXG4gICAgICAgIGF3YWl0IGNvbm5lY3Rpb24ucHJvdmlkZXIuX2Vuc3VyZUJyb3dzZXJXaW5kb3dEZXNjcmlwdG9yKGJyb3dzZXJJZCk7XG4gICAgICAgIGF3YWl0IGNvbm5lY3Rpb24ucHJvdmlkZXIuX2Nsb3NlTG9jYWxCcm93c2VyKGJyb3dzZXJJZCk7XG4gICAgfVxuXG4gICAgYXN5bmMgcmVzaXplTG9jYWxCcm93c2VyV2luZG93IChicm93c2VySWQsIHdpZHRoLCBoZWlnaHQsIGN1cnJlbnRXaWR0aCwgY3VycmVudEhlaWdodCkge1xuICAgICAgICBjb25zdCBjb25uZWN0aW9uID0gQnJvd3NlckNvbm5lY3Rpb24uZ2V0QnlJZChicm93c2VySWQpO1xuXG4gICAgICAgIGF3YWl0IGNvbm5lY3Rpb24ucHJvdmlkZXIuX2Vuc3VyZUJyb3dzZXJXaW5kb3dQYXJhbWV0ZXJzKGJyb3dzZXJJZCk7XG4gICAgICAgIGF3YWl0IGNvbm5lY3Rpb24ucHJvdmlkZXIuX3Jlc2l6ZUxvY2FsQnJvd3NlcldpbmRvdyhicm93c2VySWQsIHdpZHRoLCBoZWlnaHQsIGN1cnJlbnRXaWR0aCwgY3VycmVudEhlaWdodCk7XG4gICAgfVxuXG4gICAgLy8gQVBJXG4gICAgLy8gQnJvd3NlciBjb250cm9sXG4gICAgYXN5bmMgb3BlbkJyb3dzZXIgKC8qIGJyb3dzZXJJZCwgcGFnZVVybCwgYnJvd3Nlck5hbWUgKi8pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQhJyk7XG4gICAgfVxuXG4gICAgYXN5bmMgY2xvc2VCcm93c2VyICgvKiBicm93c2VySWQgKi8pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQhJyk7XG4gICAgfVxuXG4gICAgLy8gSW5pdGlhbGl6YXRpb25cbiAgICBhc3luYyBpbml0ICgpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGFzeW5jIGRpc3Bvc2UgKCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG5cbiAgICAvLyBCcm93c2VyIG5hbWVzIGhhbmRsaW5nXG4gICAgYXN5bmMgZ2V0QnJvd3Nlckxpc3QgKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCEnKTtcbiAgICB9XG5cbiAgICBhc3luYyBpc1ZhbGlkQnJvd3Nlck5hbWUgKC8qIGJyb3dzZXJOYW1lICovKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIEV4dHJhIGZ1bmN0aW9uc1xuICAgIC8vIE5PVEU6XG4gICAgLy8gVGhlIGJyb3dzZXJOYW1lIGFyZ3VtZW50IGlzIG9wdGlvbmFsLCBhbmQgbXVzdCBiZSBzdXBwbGllZCBpZiB0aGUgYnJvd3NlcklkIGFyZ3VtZW50IGlzIG5vdCB2YWxpZFxuICAgIC8vIChicm93c2VyIGlzIG5vdCBvcGVuZWQpXG4gICAgYXN5bmMgaXNMb2NhbEJyb3dzZXIgKC8qIGJyb3dzZXJJZFssIGJyb3dzZXJOYW1lXSAqLykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gTk9URTpcbiAgICAvLyBUaGUgYnJvd3Nlck5hbWUgYXJndW1lbnQgaXMgb3B0aW9uYWwsIGFuZCBtdXN0IGJlIHN1cHBsaWVkIGlmIHRoZSBicm93c2VySWQgYXJndW1lbnQgaXMgbm90IHZhbGlkXG4gICAgLy8gKGJyb3dzZXIgaXMgbm90IG9wZW5lZClcbiAgICBpc0hlYWRsZXNzQnJvd3NlciAoLyogYnJvd3NlcklkWywgYnJvd3Nlck5hbWVdICovKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBhc3luYyBoYXNDdXN0b21BY3Rpb25Gb3JCcm93c2VyICgvKiBicm93c2VySWQgKi8pIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGhhc0Nsb3NlQnJvd3NlcjogICAgICAgICAgICAgICAgdGhpcy5oYXNPd25Qcm9wZXJ0eSgnY2xvc2VCcm93c2VyJyksXG4gICAgICAgICAgICBoYXNSZXNpemVXaW5kb3c6ICAgICAgICAgICAgICAgIHRoaXMuaGFzT3duUHJvcGVydHkoJ3Jlc2l6ZVdpbmRvdycpLFxuICAgICAgICAgICAgaGFzVGFrZVNjcmVlbnNob3Q6ICAgICAgICAgICAgICB0aGlzLmhhc093blByb3BlcnR5KCd0YWtlU2NyZWVuc2hvdCcpLFxuICAgICAgICAgICAgaGFzR2V0VmlkZW9GcmFtZURhdGE6ICAgICAgICAgICB0aGlzLmhhc093blByb3BlcnR5KCdnZXRWaWRlb0ZyYW1lRGF0YScpLFxuICAgICAgICAgICAgaGFzQ2FuUmVzaXplV2luZG93VG9EaW1lbnNpb25zOiB0aGlzLmhhc093blByb3BlcnR5KCdjYW5SZXNpemVXaW5kb3dUb0RpbWVuc2lvbnMnKSxcbiAgICAgICAgICAgIGhhc01heGltaXplV2luZG93OiAgICAgICAgICAgICAgdGhpcy5oYXNPd25Qcm9wZXJ0eSgnbWF4aW1pemVXaW5kb3cnKSxcbiAgICAgICAgICAgIGhhc0Nocm9tZWxlc3NTY3JlZW5zaG90czogICAgICAgZmFsc2UsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgYXN5bmMgcmVzaXplV2luZG93IChicm93c2VySWQvKiwgd2lkdGgsIGhlaWdodCwgY3VycmVudFdpZHRoLCBjdXJyZW50SGVpZ2h0ICovKSB7XG4gICAgICAgIHRoaXMucmVwb3J0V2FybmluZyhicm93c2VySWQsIFdBUk5JTkdfTUVTU0FHRS5yZXNpemVOb3RTdXBwb3J0ZWRCeUJyb3dzZXJQcm92aWRlciwgdGhpc1tuYW1lXSk7XG4gICAgfVxuXG4gICAgYXN5bmMgY2FuUmVzaXplV2luZG93VG9EaW1lbnNpb25zICgvKiBicm93c2VySWQsIHdpZHRoLCBoZWlnaHQgKi8pIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgYXN5bmMgdGFrZVNjcmVlbnNob3QgKGJyb3dzZXJJZC8qLCBzY3JlZW5zaG90UGF0aCwgcGFnZVdpZHRoLCBwYWdlSGVpZ2h0ICovKSB7XG4gICAgICAgIHRoaXMucmVwb3J0V2FybmluZyhicm93c2VySWQsIFdBUk5JTkdfTUVTU0FHRS5zY3JlZW5zaG90Tm90U3VwcG9ydGVkQnlCcm93c2VyUHJvdmlkZXIsIHRoaXNbbmFtZV0pO1xuICAgIH1cblxuICAgIGFzeW5jIG1heGltaXplV2luZG93IChicm93c2VySWQpIHtcbiAgICAgICAgdGhpcy5yZXBvcnRXYXJuaW5nKGJyb3dzZXJJZCwgV0FSTklOR19NRVNTQUdFLm1heGltaXplTm90U3VwcG9ydGVkQnlCcm93c2VyUHJvdmlkZXIsIHRoaXNbbmFtZV0pO1xuICAgIH1cblxuICAgIGFzeW5jIHN0YXJ0Q2FwdHVyaW5nVmlkZW8gKC8qYnJvd3NlcklkKi8pIHtcbiAgICB9XG5cbiAgICBhc3luYyBzdG9wQ2FwdHVyaW5nVmlkZW8gKC8qYnJvd3NlcklkKi8pIHtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRWaWRlb0ZyYW1lRGF0YSAoYnJvd3NlcklkKSB7XG4gICAgICAgIGNvbnN0IGJyb3dzZXJBbGlhcyA9IEJyb3dzZXJDb25uZWN0aW9uLmdldEJ5SWQoYnJvd3NlcklkKS5icm93c2VySW5mby5hbGlhcztcblxuICAgICAgICB0aGlzLnJlcG9ydFdhcm5pbmcoYnJvd3NlcklkLCBXQVJOSU5HX01FU1NBR0UudmlkZW9Ob3RTdXBwb3J0ZWRCeUJyb3dzZXIsIGJyb3dzZXJBbGlhcyk7XG4gICAgfVxuXG4gICAgYXN5bmMgcmVwb3J0Sm9iUmVzdWx0ICgvKmJyb3dzZXJJZCwgc3RhdHVzLCBkYXRhKi8pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGdldENvbmZpZyAodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIGFzeW5jIGNsb3NlQnJvd3NlckNoaWxkV2luZG93ICgvKmJyb3dzZXJJZCovKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRPU0luZm8gKC8qYnJvd3NlcklkKi8pIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufVxuIl19
@@ -99,15 +99,15 @@ exports.default = {
99
99
  return Object.assign({ alias }, browserInfo);
100
100
  },
101
101
  addProvider(providerName, providerObject) {
102
- providerName = parse_provider_name_1.default(providerName).providerName;
102
+ providerName = (0, parse_provider_name_1.default)(providerName).providerName;
103
103
  this.providersCache[providerName] = new _1.default(new plugin_host_1.default(providerObject, providerName));
104
104
  },
105
105
  removeProvider(providerName) {
106
- providerName = parse_provider_name_1.default(providerName).providerName;
106
+ providerName = (0, parse_provider_name_1.default)(providerName).providerName;
107
107
  delete this.providersCache[providerName];
108
108
  },
109
109
  async getProvider(providerName) {
110
- const parsedProviderName = parse_provider_name_1.default(providerName);
110
+ const parsedProviderName = (0, parse_provider_name_1.default)(providerName);
111
111
  const moduleName = parsedProviderName.moduleName;
112
112
  providerName = parsedProviderName.providerName;
113
113
  const provider = this._getProviderFromCache(providerName) ||
@@ -122,4 +122,4 @@ exports.default = {
122
122
  },
123
123
  };
124
124
  module.exports = exports.default;
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9vbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9icm93c2VyL3Byb3ZpZGVyL3Bvb2wuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwwREFBNEM7QUFDNUMsZ0VBQXNEO0FBQ3RELGdGQUFzRDtBQUN0RCwwQ0FBaUM7QUFDakMsK0RBQThDO0FBQzlDLGtEQUFvRDtBQUNwRCw4Q0FBb0Q7QUFFcEQsTUFBTSxtQkFBbUIsR0FBTyxvQkFBb0IsQ0FBQztBQUNyRCxNQUFNLHVCQUF1QixHQUFHLENBQUMsYUFBYSxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFFN0Ysa0JBQWU7SUFDWCxjQUFjLEVBQUUsRUFBRTtJQUVsQixLQUFLLENBQUMsaUJBQWlCLENBQUUsS0FBSztRQUMxQixNQUFNLFdBQVcsR0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVDLE1BQU0sWUFBWSxHQUFJLE1BQU0sQ0FBQztRQUM3QixNQUFNLFFBQVEsR0FBUSxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDM0QsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFN0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxDQUFDO0lBQ2xFLENBQUM7SUFFRCxLQUFLLENBQUMsaUJBQWlCLENBQUUsS0FBSztRQUMxQixNQUFNLG1CQUFtQixHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU1RCxJQUFJLENBQUMsbUJBQW1CO1lBQ3BCLE1BQU0sSUFBSSxzQkFBWSxDQUFDLHNCQUFjLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFcEUsSUFBSSxZQUFZLEdBQUksbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENB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NUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLFVBQWUsQ0FDbkQsSUFBSSxxQkFBeUIsQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQzlELENBQUM7SUFDTixDQUFDO0lBRUQsY0FBYyxDQUFFLFlBQVk7UUFDeEIsWUFBWSxHQUFHLDZCQUFpQixDQUFDLFlBQVksQ0FBQyxDQUFDLFlBQVksQ0FBQztRQUU1RCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQUUsWUFBWTtRQUMzQixNQUFNLGtCQUFrQixHQUFHLDZCQUFpQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzNELE1BQU0sVUFBVSxHQUFXLGtCQUFrQixDQUFDLFVBQVUsQ0FBQztRQUV6RCxZQUFZLEdBQUcsa0JBQWtCLENBQUMsWUFBWSxDQUFDO1FBRS9DLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLENBQUM7WUFDMUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxVQUFVLENBQUM7WUFDakQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXRELElBQUksUUFBUTtZQUNSLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVuRCxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0lBRUQsT0FBTztRQUNILE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJVSUxUX0lOX1BST1ZJREVSUyBmcm9tICcuL2J1aWx0LWluJztcbmltcG9ydCBCcm93c2VyUHJvdmlkZXJQbHVnaW5Ib3N0IGZyb20gJy4vcGx1Z2luLWhvc3QnO1xuaW1wb3J0IHBhcnNlUHJvdmlkZXJOYW1lIGZyb20gJy4vcGFyc2UtcHJvdmlkZXItbmFtZSc7XG5pbXBvcnQgQnJvd3NlclByb3ZpZGVyIGZyb20gJy4vJztcbmltcG9ydCBCcm93c2VyQ29ubmVjdGlvbiBmcm9tICcuLi9jb25uZWN0aW9uJztcbmltcG9ydCB7IEdlbmVyYWxFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9ycy9ydW50aW1lJztcbmltcG9ydCB7IFJVTlRJTUVfRVJST1JTIH0gZnJvbSAnLi4vLi4vZXJyb3JzL3R5cGVzJztcblxuY29uc3QgQlJPV1NFUl9QUk9WSURFUl9SRSAgICAgPSAvXihbXjpcXHNdKyk6PyguKik/JC87XG5jb25zdCBCUk9XU0VSX0lORk9fUFJPUEVSVElFUyA9IFsnYnJvd3Nlck5hbWUnLCAnYnJvd3Nlck9wdGlvbicsICdwcm92aWRlck5hbWUnLCAncHJvdmlkZXInXTtcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIHByb3ZpZGVyc0NhY2hlOiB7fSxcblxuICAgIGFzeW5jIF9oYW5kbGVQYXRoQW5kQ21kIChhbGlhcykge1xuICAgICAgICBjb25zdCBicm93c2VyTmFtZSAgID0gSlNPTi5zdHJpbmdpZnkoYWxpYXMpO1xuICAgICAgICBjb25zdCBwcm92aWRlck5hbWUgID0gJ3BhdGgnO1xuICAgICAgICBjb25zdCBwcm92aWRlciAgICAgID0gYXdhaXQgdGhpcy5nZXRQcm92aWRlcihwcm92aWRlck5hbWUpO1xuICAgICAgICBjb25zdCBicm93c2VyT3B0aW9uID0gcHJvdmlkZXIucGx1Z2luLmdldENvbmZpZyhicm93c2VyTmFtZSk7XG5cbiAgICAgICAgcmV0dXJuIHsgcHJvdmlkZXIsIHByb3ZpZGVyTmFtZSwgYnJvd3Nlck5hbWUsIGJyb3dzZXJPcHRpb24gfTtcbiAgICB9LFxuXG4gICAgYXN5bmMgX3BhcnNlQWxpYXNTdHJpbmcgKGFsaWFzKSB7XG4gICAgICAgIGNvbnN0IHByb3ZpZGVyUmVnRXhwTWF0Y2ggPSBCUk9XU0VSX1BST1ZJREVSX1JFLmV4ZWMoYWxpYXMpO1xuXG4gICAgICAgIGlmICghcHJvdmlkZXJSZWdFeHBNYXRjaClcbiAgICAgICAgICAgIHRocm93IG5ldyBHZW5lcmFsRXJyb3IoUlVOVElNRV9FUlJPUlMuY2Fubm90RmluZEJyb3dzZXIsIGFsaWFzKTtcblxuICAgICAgICBsZXQgcHJvdmlkZXJOYW1lICA9IHByb3ZpZGVyUmVnRXhwTWF0Y2hbMV07XG4gICAgICAgIGxldCBicm93c2VyTmFtZSAgID0gcHJvdmlkZXJSZWdFeHBNYXRjaFsyXSB8fCAnJztcbiAgICAgICAgbGV0IGJyb3dzZXJPcHRpb24gPSB7fTtcblxuICAgICAgICBsZXQgcHJvdmlkZXIgPSBhd2FpdCB0aGlzLmdldFByb3ZpZGVyKHByb3ZpZGVyTmFtZSk7XG5cbiAgICAgICAgaWYgKCFwcm92aWRlciAmJiBwcm92aWRlclJlZ0V4cE1hdGNoWzJdKVxuICAgICAgICAgICAgcHJvdmlkZXIgPSBhd2FpdCB0aGlzLmdldFByb3ZpZGVyKHByb3ZpZGVyTmFtZSArICc6Jyk7XG5cbiAgICAgICAgaWYgKCFwcm92aWRlcikge1xuICAgICAgICAgICAgcHJvdmlkZXJOYW1lID0gJ2xvY2FsbHktaW5zdGFsbGVkJztcbiAgICAgICAgICAgIHByb3ZpZGVyICAgICA9IGF3YWl0IHRoaXMuZ2V0UHJvdmlkZXIocHJvdmlkZXJOYW1lKTtcbiAgICAgICAgICAgIGJyb3dzZXJOYW1lICA9IHByb3ZpZGVyUmVnRXhwTWF0Y2hbMV0gfHwgJyc7XG4gICAgICAgIH1cblxuICAgICAgICBicm93c2VyT3B0aW9uID0gcHJvdmlkZXIucGx1Z2luLmdldENvbmZpZyhicm93c2VyTmFtZSk7XG5cbiAgICAgICAgcmV0dXJuIHsgcHJvdmlkZXIsIHByb3ZpZGVyTmFtZSwgYnJvd3Nlck5hbWUsIGJyb3dzZXJPcHRpb24gfTtcbiAgICB9LFxuXG4gICAgYXN5bmMgX3BhcnNlQWxpYXMgKGFsaWFzKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYWxpYXMgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBpZiAoQlJPV1NFUl9JTkZPX1BST1BFUlRJRVMuZXZlcnkocHJvcGVydHkgPT4gcHJvcGVydHkgaW4gYWxpYXMpKVxuICAgICAgICAgICAgICAgIHJldHVybiBhbGlhcztcblxuICAgICAgICAgICAgaWYgKGFsaWFzLnBhdGgpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2hhbmRsZVBhdGhBbmRDbWQoYWxpYXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBhbGlhcyA9PT0gJ3N0cmluZycpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fcGFyc2VBbGlhc1N0cmluZyhhbGlhcyk7XG5cbiAgICAgICAgdGhyb3cgbmV3IEdlbmVyYWxFcnJvcihSVU5USU1FX0VSUk9SUy5jYW5ub3RGaW5kQnJvd3NlciwgYWxpYXMpO1xuICAgIH0sXG5cbiAgICBhc3luYyBfZ2V0SW5mb0ZvckFsbEJyb3dzZXJOYW1lcyAocHJvdmlkZXIsIHByb3ZpZGVyTmFtZSkge1xuICAgICAgICBjb25zdCBhbGxCcm93c2VyTmFtZXMgPSBwcm92aWRlci5pc011bHRpQnJvd3NlciA/XG4gICAgICAgICAgICBhd2FpdCBwcm92aWRlci5nZXRCcm93c2VyTGlzdCgpIDpcbiAgICAgICAgICAgIFtdO1xuXG4gICAgICAgIGlmICghYWxsQnJvd3Nlck5hbWVzLmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybiB7IHByb3ZpZGVyLCBwcm92aWRlck5hbWUsIGJyb3dzZXJOYW1lOiAnJywgYnJvd3Nlck9wdGlvbjogJycgfTtcblxuICAgICAgICByZXR1cm4gYWxsQnJvd3Nlck5hbWVzXG4gICAgICAgICAgICAubWFwKGJyb3dzZXJOYW1lID0+ICh7IHByb3ZpZGVyLCBwcm92aWRlck5hbWUsIGJyb3dzZXJOYW1lLCBicm93c2VyT3B0aW9uOiBicm93c2VyTmFtZSB9KSk7XG4gICAgfSxcblxuICAgIF9nZXRQcm92aWRlck1vZHVsZSAocHJvdmlkZXJOYW1lLCBtb2R1bGVOYW1lKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBGaXJzdCwganVzdCBjaGVjayBpZiB0aGUgbW9kdWxlIGV4aXN0c1xuICAgICAgICAgICAgcmVxdWlyZS5yZXNvbHZlKG1vZHVsZU5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyBNb2R1bGUgZG9lcyBub3QgZXhpc3QuIFJldHVybiBudWxsLCBhbmQgbGV0IHRoZSBjYWxsZXIgaGFuZGxlXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIExvYWQgdGhlIG1vZHVsZVxuICAgICAgICBjb25zdCBwcm92aWRlck9iamVjdCA9IHJlcXVpcmUobW9kdWxlTmFtZSk7XG5cbiAgICAgICAgdGhpcy5hZGRQcm92aWRlcihwcm92aWRlck5hbWUsIHByb3ZpZGVyT2JqZWN0KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldFByb3ZpZGVyRnJvbUNhY2hlKHByb3ZpZGVyTmFtZSk7XG4gICAgfSxcblxuICAgIF9nZXRQcm92aWRlckZyb21DYWNoZSAocHJvdmlkZXJOYW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3ZpZGVyc0NhY2hlW3Byb3ZpZGVyTmFtZV0gfHwgbnVsbDtcbiAgICB9LFxuXG4gICAgX2dldEJ1aWx0aW5Qcm92aWRlciAocHJvdmlkZXJOYW1lKSB7XG4gICAgICAgIGNvbnN0IHByb3ZpZGVyT2JqZWN0ID0gQlVJTFRfSU5fUFJPVklERVJTW3Byb3ZpZGVyTmFtZV07XG5cbiAgICAgICAgaWYgKCFwcm92aWRlck9iamVjdClcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuXG4gICAgICAgIHRoaXMuYWRkUHJvdmlkZXIocHJvdmlkZXJOYW1lLCBwcm92aWRlck9iamVjdCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldFByb3ZpZGVyRnJvbUNhY2hlKHByb3ZpZGVyTmFtZSk7XG4gICAgfSxcblxuICAgIGFzeW5jIGdldEJyb3dzZXJJbmZvIChhbGlhcykge1xuICAgICAgICBpZiAoYWxpYXMgaW5zdGFuY2VvZiBCcm93c2VyQ29ubmVjdGlvbilcbiAgICAgICAgICAgIHJldHVybiBhbGlhcztcblxuICAgICAgICBjb25zdCBicm93c2VySW5mbyA9IGF3YWl0IHRoaXMuX3BhcnNlQWxpYXMoYWxpYXMpO1xuXG4gICAgICAgIGNvbnN0IHsgcHJvdmlkZXIsIHByb3ZpZGVyTmFtZSwgYnJvd3Nlck5hbWUgfSA9IGJyb3dzZXJJbmZvO1xuXG4gICAgICAgIGlmIChicm93c2VyTmFtZSA9PT0gJ2FsbCcpXG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5fZ2V0SW5mb0ZvckFsbEJyb3dzZXJOYW1lcyhwcm92aWRlciwgcHJvdmlkZXJOYW1lKTtcblxuICAgICAgICBpZiAoIWF3YWl0IHByb3ZpZGVyLmlzVmFsaWRCcm93c2VyTmFtZShicm93c2VyTmFtZSkpXG4gICAgICAgICAgICB0aHJvdyBuZXcgR2VuZXJhbEVycm9yKFJVTlRJTUVfRVJST1JTLmNhbm5vdEZpbmRCcm93c2VyLCBhbGlhcyk7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBhbGlhcyA9PT0gJ29iamVjdCcgJiYgYWxpYXMuYWxpYXMpXG4gICAgICAgICAgICBhbGlhcyA9IGFsaWFzLmFsaWFzO1xuXG4gICAgICAgIGlmICh0eXBlb2YgYWxpYXMgIT09ICdzdHJpbmcnKVxuICAgICAgICAgICAgYWxpYXMgPSBKU09OLnN0cmluZ2lmeShhbGlhcyk7XG5cbiAgICAgICAgcmV0dXJuIHsgYWxpYXMsIC4uLmJyb3dzZXJJbmZvIH07XG4gICAgfSxcblxuICAgIGFkZFByb3ZpZGVyIChwcm92aWRlck5hbWUsIHByb3ZpZGVyT2JqZWN0KSB7XG4gICAgICAgIHByb3ZpZGVyTmFtZSA9IHBhcnNlUHJvdmlkZXJOYW1lKHByb3ZpZGVyTmFtZSkucHJvdmlkZXJOYW1lO1xuXG4gICAgICAgIHRoaXMucHJvdmlkZXJzQ2FjaGVbcHJvdmlkZXJOYW1lXSA9IG5ldyBCcm93c2VyUHJvdmlkZXIoXG4gICAgICAgICAgICBuZXcgQnJvd3NlclByb3ZpZGVyUGx1Z2luSG9zdChwcm92aWRlck9iamVjdCwgcHJvdmlkZXJOYW1lKVxuICAgICAgICApO1xuICAgIH0sXG5cbiAgICByZW1vdmVQcm92aWRlciAocHJvdmlkZXJOYW1lKSB7XG4gICAgICAgIHByb3ZpZGVyTmFtZSA9IHBhcnNlUHJvdmlkZXJOYW1lKHByb3ZpZGVyTmFtZSkucHJvdmlkZXJOYW1lO1xuXG4gICAgICAgIGRlbGV0ZSB0aGlzLnByb3ZpZGVyc0NhY2hlW3Byb3ZpZGVyTmFtZV07XG4gICAgfSxcblxuICAgIGFzeW5jIGdldFByb3ZpZGVyIChwcm92aWRlck5hbWUpIHtcbiAgICAgICAgY29uc3QgcGFyc2VkUHJvdmlkZXJOYW1lID0gcGFyc2VQcm92aWRlck5hbWUocHJvdmlkZXJOYW1lKTtcbiAgICAgICAgY29uc3QgbW9kdWxlTmFtZSAgICAgICAgID0gcGFyc2VkUHJvdmlkZXJOYW1lLm1vZHVsZU5hbWU7XG5cbiAgICAgICAgcHJvdmlkZXJOYW1lID0gcGFyc2VkUHJvdmlkZXJOYW1lLnByb3ZpZGVyTmFtZTtcblxuICAgICAgICBjb25zdCBwcm92aWRlciA9IHRoaXMuX2dldFByb3ZpZGVyRnJvbUNhY2hlKHByb3ZpZGVyTmFtZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZ2V0UHJvdmlkZXJNb2R1bGUocHJvdmlkZXJOYW1lLCBtb2R1bGVOYW1lKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9nZXRCdWlsdGluUHJvdmlkZXIocHJvdmlkZXJOYW1lKTtcblxuICAgICAgICBpZiAocHJvdmlkZXIpXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnByb3ZpZGVyc0NhY2hlW3Byb3ZpZGVyTmFtZV0uaW5pdCgpO1xuXG4gICAgICAgIHJldHVybiBwcm92aWRlcjtcbiAgICB9LFxuXG4gICAgZGlzcG9zZSAoKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLmFsbChPYmplY3QudmFsdWVzKHRoaXMucHJvdmlkZXJzQ2FjaGUpLm1hcChpdGVtID0+IGl0ZW0uZGlzcG9zZSgpKSk7XG4gICAgfSxcbn07XG4iXX0=
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9vbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9icm93c2VyL3Byb3ZpZGVyL3Bvb2wuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwwREFBNEM7QUFDNUMsZ0VBQXNEO0FBQ3RELGdGQUFzRDtBQUN0RCwwQ0FBaUM7QUFDakMsK0RBQThDO0FBQzlDLGtEQUFvRDtBQUNwRCw4Q0FBb0Q7QUFFcEQsTUFBTSxtQkFBbUIsR0FBTyxvQkFBb0IsQ0FBQztBQUNyRCxNQUFNLHVCQUF1QixHQUFHLENBQUMsYUFBYSxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFFN0Ysa0JBQWU7SUFDWCxjQUFjLEVBQUUsRUFBRTtJQUVsQixLQUFLLENBQUMsaUJBQWlCLENBQUUsS0FBSztRQUMxQixNQUFNLFdBQVcsR0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVDLE1BQU0sWUFBWSxHQUFJLE1BQU0sQ0FBQztRQUM3QixNQUFNLFFBQVEsR0FBUSxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDM0QsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFN0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxDQUFDO0lBQ2xFLENBQUM7SUFFRCxLQUFLLENBQUMsaUJBQWlCLENBQUUsS0FBSztRQUMxQixNQUFNLG1CQUFtQixHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU1RCxJQUFJLENBQUMsbUJBQW1CO1lBQ3BCLE1BQU0sSUFBSSxzQkFBWSxDQUFDLHNCQUFjLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFcEUsSUFBSSxZQUFZLEdBQUksbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENB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LWluJztcbmltcG9ydCBCcm93c2VyUHJvdmlkZXJQbHVnaW5Ib3N0IGZyb20gJy4vcGx1Z2luLWhvc3QnO1xuaW1wb3J0IHBhcnNlUHJvdmlkZXJOYW1lIGZyb20gJy4vcGFyc2UtcHJvdmlkZXItbmFtZSc7XG5pbXBvcnQgQnJvd3NlclByb3ZpZGVyIGZyb20gJy4vJztcbmltcG9ydCBCcm93c2VyQ29ubmVjdGlvbiBmcm9tICcuLi9jb25uZWN0aW9uJztcbmltcG9ydCB7IEdlbmVyYWxFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9ycy9ydW50aW1lJztcbmltcG9ydCB7IFJVTlRJTUVfRVJST1JTIH0gZnJvbSAnLi4vLi4vZXJyb3JzL3R5cGVzJztcblxuY29uc3QgQlJPV1NFUl9QUk9WSURFUl9SRSAgICAgPSAvXihbXjpcXHNdKyk6PyguKik/JC87XG5jb25zdCBCUk9XU0VSX0lORk9fUFJPUEVSVElFUyA9IFsnYnJvd3Nlck5hbWUnLCAnYnJvd3Nlck9wdGlvbicsICdwcm92aWRlck5hbWUnLCAncHJvdmlkZXInXTtcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIHByb3ZpZGVyc0NhY2hlOiB7fSxcblxuICAgIGFzeW5jIF9oYW5kbGVQYXRoQW5kQ21kIChhbGlhcykge1xuICAgICAgICBjb25zdCBicm93c2VyTmFtZSAgID0gSlNPTi5zdHJpbmdpZnkoYWxpYXMpO1xuICAgICAgICBjb25zdCBwcm92aWRlck5hbWUgID0gJ3BhdGgnO1xuICAgICAgICBjb25zdCBwcm92aWRlciAgICAgID0gYXdhaXQgdGhpcy5nZXRQcm92aWRlcihwcm92aWRlck5hbWUpO1xuICAgICAgICBjb25zdCBicm93c2VyT3B0aW9uID0gcHJvdmlkZXIucGx1Z2luLmdldENvbmZpZyhicm93c2VyTmFtZSk7XG5cbiAgICAgICAgcmV0dXJuIHsgcHJvdmlkZXIsIHByb3ZpZGVyTmFtZSwgYnJvd3Nlck5hbWUsIGJyb3dzZXJPcHRpb24gfTtcbiAgICB9LFxuXG4gICAgYXN5bmMgX3BhcnNlQWxpYXNTdHJpbmcgKGFsaWFzKSB7XG4gICAgICAgIGNvbnN0IHByb3ZpZGVyUmVnRXhwTWF0Y2ggPSBCUk9XU0VSX1BST1ZJREVSX1JFLmV4ZWMoYWxpYXMpO1xuXG4gICAgICAgIGlmICghcHJvdmlkZXJSZWdFeHBNYXRjaClcbiAgICAgICAgICAgIHRocm93IG5ldyBHZW5lcmFsRXJyb3IoUlVOVElNRV9FUlJPUlMuY2Fubm90RmluZEJyb3dzZXIsIGFsaWFzKTtcblxuICAgICAgICBsZXQgcHJvdmlkZXJOYW1lICA9IHByb3ZpZGVyUmVnRXhwTWF0Y2hbMV07XG4gICAgICAgIGxldCBicm93c2VyTmFtZSAgID0gcHJvdmlkZXJSZWdFeHBNYXRjaFsyXSB8fCAnJztcbiAgICAgICAgbGV0IGJyb3dzZXJPcHRpb24gPSB7fTtcblxuICAgICAgICBsZXQgcHJvdmlkZXIgPSBhd2FpdCB0aGlzLmdldFByb3ZpZGVyKHByb3ZpZGVyTmFtZSk7XG5cbiAgICAgICAgaWYgKCFwcm92aWRlciAmJiBwcm92aWRlclJlZ0V4cE1hdGNoWzJdKVxuICAgICAgICAgICAgcHJvdmlkZXIgPSBhd2FpdCB0aGlzLmdldFByb3ZpZGVyKHByb3ZpZGVyTmFtZSArICc6Jyk7XG5cbiAgICAgICAgaWYgKCFwcm92aWRlcikge1xuICAgICAgICAgICAgcHJvdmlkZXJOYW1lID0gJ2xvY2FsbHktaW5zdGFsbGVkJztcbiAgICAgICAgICAgIHByb3ZpZGVyICAgICA9IGF3YWl0IHRoaXMuZ2V0UHJvdmlkZXIocHJvdmlkZXJOYW1lKTtcbiAgICAgICAgICAgIGJyb3dzZXJOYW1lICA9IHByb3ZpZGVyUmVnRXhwTWF0Y2hbMV0gfHwgJyc7XG4gICAgICAgIH1cblxuICAgICAgICBicm93c2VyT3B0aW9uID0gcHJvdmlkZXIucGx1Z2luLmdldENvbmZpZyhicm93c2VyTmFtZSk7XG5cbiAgICAgICAgcmV0dXJuIHsgcHJvdmlkZXIsIHByb3ZpZGVyTmFtZSwgYnJvd3Nlck5hbWUsIGJyb3dzZXJPcHRpb24gfTtcbiAgICB9LFxuXG4gICAgYXN5bmMgX3BhcnNlQWxpYXMgKGFsaWFzKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYWxpYXMgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBpZiAoQlJPV1NFUl9JTkZPX1BST1BFUlRJRVMuZXZlcnkocHJvcGVydHkgPT4gcHJvcGVydHkgaW4gYWxpYXMpKVxuICAgICAgICAgICAgICAgIHJldHVybiBhbGlhcztcblxuICAgICAgICAgICAgaWYgKGFsaWFzLnBhdGgpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2hhbmRsZVBhdGhBbmRDbWQoYWxpYXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBhbGlhcyA9PT0gJ3N0cmluZycpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fcGFyc2VBbGlhc1N0cmluZyhhbGlhcyk7XG5cbiAgICAgICAgdGhyb3cgbmV3IEdlbmVyYWxFcnJvcihSVU5USU1FX0VSUk9SUy5jYW5ub3RGaW5kQnJvd3NlciwgYWxpYXMpO1xuICAgIH0sXG5cbiAgICBhc3luYyBfZ2V0SW5mb0ZvckFsbEJyb3dzZXJOYW1lcyAocHJvdmlkZXIsIHByb3ZpZGVyTmFtZSkge1xuICAgICAgICBjb25zdCBhbGxCcm93c2VyTmFtZXMgPSBwcm92aWRlci5pc011bHRpQnJvd3NlciA/XG4gICAgICAgICAgICBhd2FpdCBwcm92aWRlci5nZXRCcm93c2VyTGlzdCgpIDpcbiAgICAgICAgICAgIFtdO1xuXG4gICAgICAgIGlmICghYWxsQnJvd3Nlck5hbWVzLmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybiB7IHByb3ZpZGVyLCBwcm92aWRlck5hbWUsIGJyb3dzZXJOYW1lOiAnJywgYnJvd3Nlck9wdGlvbjogJycgfTtcblxuICAgICAgICByZXR1cm4gYWxsQnJvd3Nlck5hbWVzXG4gICAgICAgICAgICAubWFwKGJyb3dzZXJOYW1lID0+ICh7IHByb3ZpZGVyLCBwcm92aWRlck5hbWUsIGJyb3dzZXJOYW1lLCBicm93c2VyT3B0aW9uOiBicm93c2VyTmFtZSB9KSk7XG4gICAgfSxcblxuICAgIF9nZXRQcm92aWRlck1vZHVsZSAocHJvdmlkZXJOYW1lLCBtb2R1bGVOYW1lKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBGaXJzdCwganVzdCBjaGVjayBpZiB0aGUgbW9kdWxlIGV4aXN0c1xuICAgICAgICAgICAgcmVxdWlyZS5yZXNvbHZlKG1vZHVsZU5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyBNb2R1bGUgZG9lcyBub3QgZXhpc3QuIFJldHVybiBudWxsLCBhbmQgbGV0IHRoZSBjYWxsZXIgaGFuZGxlXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIExvYWQgdGhlIG1vZHVsZVxuICAgICAgICBjb25zdCBwcm92aWRlck9iamVjdCA9IHJlcXVpcmUobW9kdWxlTmFtZSk7XG5cbiAgICAgICAgdGhpcy5hZGRQcm92aWRlcihwcm92aWRlck5hbWUsIHByb3ZpZGVyT2JqZWN0KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldFByb3ZpZGVyRnJvbUNhY2hlKHByb3ZpZGVyTmFtZSk7XG4gICAgfSxcblxuICAgIF9nZXRQcm92aWRlckZyb21DYWNoZSAocHJvdmlkZXJOYW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3ZpZGVyc0NhY2hlW3Byb3ZpZGVyTmFtZV0gfHwgbnVsbDtcbiAgICB9LFxuXG4gICAgX2dldEJ1aWx0aW5Qcm92aWRlciAocHJvdmlkZXJOYW1lKSB7XG4gICAgICAgIGNvbnN0IHByb3ZpZGVyT2JqZWN0ID0gQlVJTFRfSU5fUFJPVklERVJTW3Byb3ZpZGVyTmFtZV07XG5cbiAgICAgICAgaWYgKCFwcm92aWRlck9iamVjdClcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuXG4gICAgICAgIHRoaXMuYWRkUHJvdmlkZXIocHJvdmlkZXJOYW1lLCBwcm92aWRlck9iamVjdCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldFByb3ZpZGVyRnJvbUNhY2hlKHByb3ZpZGVyTmFtZSk7XG4gICAgfSxcblxuICAgIGFzeW5jIGdldEJyb3dzZXJJbmZvIChhbGlhcykge1xuICAgICAgICBpZiAoYWxpYXMgaW5zdGFuY2VvZiBCcm93c2VyQ29ubmVjdGlvbilcbiAgICAgICAgICAgIHJldHVybiBhbGlhcztcblxuICAgICAgICBjb25zdCBicm93c2VySW5mbyA9IGF3YWl0IHRoaXMuX3BhcnNlQWxpYXMoYWxpYXMpO1xuXG4gICAgICAgIGNvbnN0IHsgcHJvdmlkZXIsIHByb3ZpZGVyTmFtZSwgYnJvd3Nlck5hbWUgfSA9IGJyb3dzZXJJbmZvO1xuXG4gICAgICAgIGlmIChicm93c2VyTmFtZSA9PT0gJ2FsbCcpXG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5fZ2V0SW5mb0ZvckFsbEJyb3dzZXJOYW1lcyhwcm92aWRlciwgcHJvdmlkZXJOYW1lKTtcblxuICAgICAgICBpZiAoIWF3YWl0IHByb3ZpZGVyLmlzVmFsaWRCcm93c2VyTmFtZShicm93c2VyTmFtZSkpXG4gICAgICAgICAgICB0aHJvdyBuZXcgR2VuZXJhbEVycm9yKFJVTlRJTUVfRVJST1JTLmNhbm5vdEZpbmRCcm93c2VyLCBhbGlhcyk7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBhbGlhcyA9PT0gJ29iamVjdCcgJiYgYWxpYXMuYWxpYXMpXG4gICAgICAgICAgICBhbGlhcyA9IGFsaWFzLmFsaWFzO1xuXG4gICAgICAgIGlmICh0eXBlb2YgYWxpYXMgIT09ICdzdHJpbmcnKVxuICAgICAgICAgICAgYWxpYXMgPSBKU09OLnN0cmluZ2lmeShhbGlhcyk7XG5cbiAgICAgICAgcmV0dXJuIHsgYWxpYXMsIC4uLmJyb3dzZXJJbmZvIH07XG4gICAgfSxcblxuICAgIGFkZFByb3ZpZGVyIChwcm92aWRlck5hbWUsIHByb3ZpZGVyT2JqZWN0KSB7XG4gICAgICAgIHByb3ZpZGVyTmFtZSA9IHBhcnNlUHJvdmlkZXJOYW1lKHByb3ZpZGVyTmFtZSkucHJvdmlkZXJOYW1lO1xuXG4gICAgICAgIHRoaXMucHJvdmlkZXJzQ2FjaGVbcHJvdmlkZXJOYW1lXSA9IG5ldyBCcm93c2VyUHJvdmlkZXIoXG4gICAgICAgICAgICBuZXcgQnJvd3NlclByb3ZpZGVyUGx1Z2luSG9zdChwcm92aWRlck9iamVjdCwgcHJvdmlkZXJOYW1lKVxuICAgICAgICApO1xuICAgIH0sXG5cbiAgICByZW1vdmVQcm92aWRlciAocHJvdmlkZXJOYW1lKSB7XG4gICAgICAgIHByb3ZpZGVyTmFtZSA9IHBhcnNlUHJvdmlkZXJOYW1lKHByb3ZpZGVyTmFtZSkucHJvdmlkZXJOYW1lO1xuXG4gICAgICAgIGRlbGV0ZSB0aGlzLnByb3ZpZGVyc0NhY2hlW3Byb3ZpZGVyTmFtZV07XG4gICAgfSxcblxuICAgIGFzeW5jIGdldFByb3ZpZGVyIChwcm92aWRlck5hbWUpIHtcbiAgICAgICAgY29uc3QgcGFyc2VkUHJvdmlkZXJOYW1lID0gcGFyc2VQcm92aWRlck5hbWUocHJvdmlkZXJOYW1lKTtcbiAgICAgICAgY29uc3QgbW9kdWxlTmFtZSAgICAgICAgID0gcGFyc2VkUHJvdmlkZXJOYW1lLm1vZHVsZU5hbWU7XG5cbiAgICAgICAgcHJvdmlkZXJOYW1lID0gcGFyc2VkUHJvdmlkZXJOYW1lLnByb3ZpZGVyTmFtZTtcblxuICAgICAgICBjb25zdCBwcm92aWRlciA9IHRoaXMuX2dldFByb3ZpZGVyRnJvbUNhY2hlKHByb3ZpZGVyTmFtZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZ2V0UHJvdmlkZXJNb2R1bGUocHJvdmlkZXJOYW1lLCBtb2R1bGVOYW1lKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9nZXRCdWlsdGluUHJvdmlkZXIocHJvdmlkZXJOYW1lKTtcblxuICAgICAgICBpZiAocHJvdmlkZXIpXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnByb3ZpZGVyc0NhY2hlW3Byb3ZpZGVyTmFtZV0uaW5pdCgpO1xuXG4gICAgICAgIHJldHVybiBwcm92aWRlcjtcbiAgICB9LFxuXG4gICAgZGlzcG9zZSAoKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLmFsbChPYmplY3QudmFsdWVzKHRoaXMucHJvdmlkZXJzQ2FjaGUpLm1hcChpdGVtID0+IGl0ZW0uZGlzcG9zZSgpKSk7XG4gICAgfSxcbn07XG4iXX0=
@@ -8,11 +8,11 @@ const lodash_1 = require("lodash");
8
8
  const os_family_1 = __importDefault(require("os-family"));
9
9
  const CONFIG_TERMINATOR_RE = /(\s+|^)-/;
10
10
  function hasMatch(array, re) {
11
- return !!lodash_1.find(array, el => el.match(re));
11
+ return !!(0, lodash_1.find)(array, el => el.match(re));
12
12
  }
13
13
  exports.hasMatch = hasMatch;
14
14
  function findMatch(array, re) {
15
- const element = lodash_1.find(array, el => el.match(re));
15
+ const element = (0, lodash_1.find)(array, el => el.match(re));
16
16
  return element ? element.match(re)[1] : '';
17
17
  }
18
18
  exports.findMatch = findMatch;
@@ -72,4 +72,4 @@ function parseConfig(str) {
72
72
  };
73
73
  }
74
74
  exports.parseConfig = parseConfig;
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJndW1lbnQtcGFyc2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9icm93c2VyL3Byb3ZpZGVyL3V0aWxzL2FyZ3VtZW50LXBhcnNpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsbUNBQTZDO0FBQzdDLDBEQUEyQjtBQUUzQixNQUFNLG9CQUFvQixHQUFHLFVBQVUsQ0FBQztBQUV4QyxTQUFnQixRQUFRLENBQUUsS0FBSyxFQUFFLEVBQUU7SUFDL0IsT0FBTyxDQUFDLENBQUMsYUFBVyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNwRCxDQUFDO0FBRkQsNEJBRUM7QUFFRCxTQUFnQixTQUFTLENBQUUsS0FBSyxFQUFFLEVBQUU7SUFDaEMsTUFBTSxPQUFPLEdBQUcsYUFBVyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUV2RCxPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQy9DLENBQUM7QUFKRCw4QkFJQztBQUVELFNBQWdCLFdBQVcsQ0FBRSxLQUFLLEVBQUUsRUFBRTtJQUNsQyxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRW5DLE9BQU8sS0FBSyxJQUFJLEtBQUssS0FBSyxHQUFHLElBQUksS0FBSyxLQUFLLE9BQU8sQ0FBQztBQUN2RCxDQUFDO0FBSkQsa0NBSUM7QUFFRCxTQUFnQixZQUFZLENBQUUsR0FBRyxFQUFFLFlBQVk7SUFDM0MsTUFBTSxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUVwQixLQUFL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YXMgZmluZEVsZW1lbnQgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IE9TIGZyb20gJ29zLWZhbWlseSc7XG5cbmNvbnN0IENPTkZJR19URVJNSU5BVE9SX1JFID0gLyhcXHMrfF4pLS87XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNNYXRjaCAoYXJyYXksIHJlKSB7XG4gICAgcmV0dXJuICEhZmluZEVsZW1lbnQoYXJyYXksIGVsID0+IGVsLm1hdGNoKHJlKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kTWF0Y2ggKGFycmF5LCByZSkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBmaW5kRWxlbWVudChhcnJheSwgZWwgPT4gZWwubWF0Y2gocmUpKTtcblxuICAgIHJldHVybiBlbGVtZW50ID8gZWxlbWVudC5tYXRjaChyZSlbMV0gOiAnJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTWF0Y2hUcnVlIChhcnJheSwgcmUpIHtcbiAgICBjb25zdCBtYXRjaCA9IGZpbmRNYXRjaChhcnJheSwgcmUpO1xuXG4gICAgcmV0dXJuIG1hdGNoICYmIG1hdGNoICE9PSAnMCcgJiYgbWF0Y2ggIT09ICdmYWxzZSc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzcGxpdEVzY2FwZWQgKHN0ciwgc3BsaXR0ZXJDaGFyKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gWycnXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChzdHJbaV0gPT09IHNwbGl0dGVyQ2hhcikge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goJycpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RyW2ldID09PSAnXFxcXCcgJiYgKHN0cltpICsgMV0gPT09ICdcXFxcJyB8fCBzdHIgW2kgKyAxXSA9PT0gc3BsaXR0ZXJDaGFyKSlcbiAgICAgICAgICAgIGkrKztcblxuICAgICAgICByZXN1bHRbcmVzdWx0Lmxlbmd0aCAtIDFdICs9IHN0cltpXTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGF0aEZyb21QYXJzZWRNb2RlcyAobW9kZXMsIGF2YWlsYWJsZU1vZGVzID0gW10pIHtcbiAgICBpZiAoIW1vZGVzLmxlbmd0aClcbiAgICAgICAgcmV0dXJuICcnO1xuXG4gICAgaWYgKGF2YWlsYWJsZU1vZGVzLnNvbWUobW9kZSA9PiBtb2RlID09PSBtb2Rlc1swXSkpXG4gICAgICAgIHJldHVybiAnJztcblxuICAgIGxldCBwYXRoID0gbW9kZXMuc2hpZnQoKTtcblxuICAgIGlmIChPUy53aW4gJiYgbW9kZXMubGVuZ3RoICYmIHBhdGgubWF0Y2goL15bQS1aYS16XSQvKSlcbiAgICAgICAgcGF0aCArPSAnOicgKyBtb2Rlcy5zaGlmdCgpO1xuXG4gICAgcmV0dXJuIHBhdGg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNb2RlcyAobW9kZXMsIGF2YWlsYWJsZU1vZGVzID0gW10pIHtcbiAgICBjb25zdCByZXN1bHQgPSB7fTtcblxuICAgIGF2YWlsYWJsZU1vZGVzID0gYXZhaWxhYmxlTW9kZXMuc2xpY2UoKTtcblxuICAgIGF2YWlsYWJsZU1vZGVzLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgcmVzdWx0W2tleV0gPSBmYWxzZTtcbiAgICB9KTtcblxuICAgIHdoaWxlIChtb2Rlcy5sZW5ndGggJiYgYXZhaWxhYmxlTW9kZXMubGVuZ3RoKSB7XG4gICAgICAgIGlmIChtb2Rlc1swXSA9PT0gYXZhaWxhYmxlTW9kZXNbMF0pIHtcbiAgICAgICAgICAgIHJlc3VsdFthdmFpbGFibGVNb2Rlc1swXV0gPSB0cnVlO1xuXG4gICAgICAgICAgICBtb2Rlcy5zaGlmdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXZhaWxhYmxlTW9kZXMuc2hpZnQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VDb25maWcgKHN0cikge1xuICAgIGNvbnN0IGNvbmZpZ1Rlcm1pbmF0b3JNYXRjaCA9IHN0ci5tYXRjaChDT05GSUdfVEVSTUlOQVRPUl9SRSk7XG5cbiAgICBpZiAoIWNvbmZpZ1Rlcm1pbmF0b3JNYXRjaClcbiAgICAgICAgcmV0dXJuIHsgbW9kZXNTdHJpbmc6IHN0ciwgdXNlckFyZ3M6ICcnIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBtb2Rlc1N0cmluZzogc3RyLnN1YnN0cigwLCBjb25maWdUZXJtaW5hdG9yTWF0Y2guaW5kZXgpLFxuICAgICAgICB1c2VyQXJnczogICAgc3RyLnN1YnN0cihjb25maWdUZXJtaW5hdG9yTWF0Y2guaW5kZXggKyBjb25maWdUZXJtaW5hdG9yTWF0Y2hbMV0ubGVuZ3RoKSxcbiAgICB9O1xufVxuIl19
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJndW1lbnQtcGFyc2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9icm93c2VyL3Byb3ZpZGVyL3V0aWxzL2FyZ3VtZW50LXBhcnNpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsbUNBQTZDO0FBQzdDLDBEQUEyQjtBQUUzQixNQUFNLG9CQUFvQixHQUFHLFVBQVUsQ0FBQztBQUV4QyxTQUFnQixRQUFRLENBQUUsS0FBSyxFQUFFLEVBQUU7SUFDL0IsT0FBTyxDQUFDLENBQUMsSUFBQSxhQUFXLEVBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3BELENBQUM7QUFGRCw0QkFFQztBQUVELFNBQWdCLFNBQVMsQ0FBRSxLQUFLLEVBQUUsRUFBRTtJQUNoQyxNQUFNLE9BQU8sR0FBRyxJQUFBLGFBQVcsRUFBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFdkQsT0FBTyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUMvQyxDQUFDO0FBSkQsOEJBSUM7QUFFRCxTQUFnQixXQUFXLENBQUUsS0FBSyxFQUFFLEVBQUU7SUFDbEMsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUVuQyxPQUFPLEtBQUssSUFBSSxLQUFLLEtBQUssR0FBRyxJQUFJLEtBQUssS0FBSyxPQUFPLENBQUM7QUFDdkQsQ0FBQztBQUpELGtDQUlDO0FBRUQsU0FBZ0IsWUFBWSxDQUFFLEdBQUcsRUFBRSxZQUFZO0lBQzNDLE1BQU0sTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7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cnQgeyBmaW5kIGFzIGZpbmRFbGVtZW50IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBPUyBmcm9tICdvcy1mYW1pbHknO1xuXG5jb25zdCBDT05GSUdfVEVSTUlOQVRPUl9SRSA9IC8oXFxzK3xeKS0vO1xuXG5leHBvcnQgZnVuY3Rpb24gaGFzTWF0Y2ggKGFycmF5LCByZSkge1xuICAgIHJldHVybiAhIWZpbmRFbGVtZW50KGFycmF5LCBlbCA9PiBlbC5tYXRjaChyZSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZE1hdGNoIChhcnJheSwgcmUpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gZmluZEVsZW1lbnQoYXJyYXksIGVsID0+IGVsLm1hdGNoKHJlKSk7XG5cbiAgICByZXR1cm4gZWxlbWVudCA/IGVsZW1lbnQubWF0Y2gocmUpWzFdIDogJyc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc01hdGNoVHJ1ZSAoYXJyYXksIHJlKSB7XG4gICAgY29uc3QgbWF0Y2ggPSBmaW5kTWF0Y2goYXJyYXksIHJlKTtcblxuICAgIHJldHVybiBtYXRjaCAmJiBtYXRjaCAhPT0gJzAnICYmIG1hdGNoICE9PSAnZmFsc2UnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3BsaXRFc2NhcGVkIChzdHIsIHNwbGl0dGVyQ2hhcikge1xuICAgIGNvbnN0IHJlc3VsdCA9IFsnJ107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoc3RyW2ldID09PSBzcGxpdHRlckNoYXIpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKCcnKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0cltpXSA9PT0gJ1xcXFwnICYmIChzdHJbaSArIDFdID09PSAnXFxcXCcgfHwgc3RyIFtpICsgMV0gPT09IHNwbGl0dGVyQ2hhcikpXG4gICAgICAgICAgICBpKys7XG5cbiAgICAgICAgcmVzdWx0W3Jlc3VsdC5sZW5ndGggLSAxXSArPSBzdHJbaV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBhdGhGcm9tUGFyc2VkTW9kZXMgKG1vZGVzLCBhdmFpbGFibGVNb2RlcyA9IFtdKSB7XG4gICAgaWYgKCFtb2Rlcy5sZW5ndGgpXG4gICAgICAgIHJldHVybiAnJztcblxuICAgIGlmIChhdmFpbGFibGVNb2Rlcy5zb21lKG1vZGUgPT4gbW9kZSA9PT0gbW9kZXNbMF0pKVxuICAgICAgICByZXR1cm4gJyc7XG5cbiAgICBsZXQgcGF0aCA9IG1vZGVzLnNoaWZ0KCk7XG5cbiAgICBpZiAoT1Mud2luICYmIG1vZGVzLmxlbmd0aCAmJiBwYXRoLm1hdGNoKC9eW0EtWmEtel0kLykpXG4gICAgICAgIHBhdGggKz0gJzonICsgbW9kZXMuc2hpZnQoKTtcblxuICAgIHJldHVybiBwYXRoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TW9kZXMgKG1vZGVzLCBhdmFpbGFibGVNb2RlcyA9IFtdKSB7XG4gICAgY29uc3QgcmVzdWx0ID0ge307XG5cbiAgICBhdmFpbGFibGVNb2RlcyA9IGF2YWlsYWJsZU1vZGVzLnNsaWNlKCk7XG5cbiAgICBhdmFpbGFibGVNb2Rlcy5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gZmFsc2U7XG4gICAgfSk7XG5cbiAgICB3aGlsZSAobW9kZXMubGVuZ3RoICYmIGF2YWlsYWJsZU1vZGVzLmxlbmd0aCkge1xuICAgICAgICBpZiAobW9kZXNbMF0gPT09IGF2YWlsYWJsZU1vZGVzWzBdKSB7XG4gICAgICAgICAgICByZXN1bHRbYXZhaWxhYmxlTW9kZXNbMF1dID0gdHJ1ZTtcblxuICAgICAgICAgICAgbW9kZXMuc2hpZnQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF2YWlsYWJsZU1vZGVzLnNoaWZ0KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQ29uZmlnIChzdHIpIHtcbiAgICBjb25zdCBjb25maWdUZXJtaW5hdG9yTWF0Y2ggPSBzdHIubWF0Y2goQ09ORklHX1RFUk1JTkFUT1JfUkUpO1xuXG4gICAgaWYgKCFjb25maWdUZXJtaW5hdG9yTWF0Y2gpXG4gICAgICAgIHJldHVybiB7IG1vZGVzU3RyaW5nOiBzdHIsIHVzZXJBcmdzOiAnJyB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgbW9kZXNTdHJpbmc6IHN0ci5zdWJzdHIoMCwgY29uZmlnVGVybWluYXRvck1hdGNoLmluZGV4KSxcbiAgICAgICAgdXNlckFyZ3M6ICAgIHN0ci5zdWJzdHIoY29uZmlnVGVybWluYXRvck1hdGNoLmluZGV4ICsgY29uZmlnVGVybWluYXRvck1hdGNoWzFdLmxlbmd0aCksXG4gICAgfTtcbn1cbiJdfQ==
@@ -13,7 +13,7 @@ class OperationsQueue {
13
13
  }
14
14
  executeOperation(operation) {
15
15
  const operationPromise = this.chainPromise.then(operation);
16
- this.chainPromise = operationPromise.then(() => delay_1.default(POST_OPERATION_DELAY));
16
+ this.chainPromise = operationPromise.then(() => (0, delay_1.default)(POST_OPERATION_DELAY));
17
17
  return operationPromise;
18
18
  }
19
19
  }
@@ -33,4 +33,4 @@ class BrowserStarter {
33
33
  }
34
34
  exports.default = BrowserStarter;
35
35
  module.exports = exports.default;
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci1zdGFydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2Jyb3dzZXIvcHJvdmlkZXIvdXRpbHMvYnJvd3Nlci1zdGFydGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsMERBQTJCO0FBQzNCLG9GQUFrRDtBQUNsRCxpRUFBeUM7QUFHekMsTUFBTSxvQkFBb0IsR0FBRyxHQUFHLENBQUM7QUFFakMsTUFBTSxlQUFlO0lBQ2pCO1FBQ0ksSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVELGdCQUFnQixDQUFFLFNBQVM7UUFDdkIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUUzRCxJQUFJLENBQUMsWUFBWSxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO1FBRTdFLE9BQU8sZ0JBQWdCLENBQUM7SUFDNUIsQ0FBQztDQUNKO0FBRUQsTUFBcUIsY0FBYztJQUMvQjtRQUNJLHNGQUFzRjtRQUN0RixvREFBb0Q7UUFDcEQsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7SUFDMUQsQ0FBQztJQUVELEtBQUssQ0FBQyxZQUFZLENBQUUsR0FBRyxRQUFRO1FBQzNCLE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxFQUFFLENBQUMsZ0NBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQztRQUVsRSxJQUFJLG1CQUFFLENBQUMsR0FBRztZQUNOLE1BQU0sSUFBSSxDQUFDLHdCQUF3QixDQUFDLGdCQUFnQixDQUFDLG9CQUFvQixDQUFDLENBQUM7O1lBRTNFLE1BQU0sb0JBQW9CLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0NBQ0o7QUFmRCxpQ0FlQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBPUyBmcm9tICdvcy1mYW1pbHknO1xuaW1wb3J0IGJyb3dzZXJUb29scyBmcm9tICd0ZXN0Y2FmZS1icm93c2VyLXRvb2xzJztcbmltcG9ydCBkZWxheSBmcm9tICcuLi8uLi8uLi91dGlscy9kZWxheSc7XG5cblxuY29uc3QgUE9TVF9PUEVSQVRJT05fREVMQVkgPSA1MDA7XG5cbmNsYXNzIE9wZXJhdGlvbnNRdWV1ZSB7XG4gICAgY29uc3RydWN0b3IgKCkge1xuICAgICAgICB0aGlzLmNoYWluUHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH1cblxuICAgIGV4ZWN1dGVPcGVyYXRpb24gKG9wZXJhdGlvbikge1xuICAgICAgICBjb25zdCBvcGVyYXRpb25Qcm9taXNlID0gdGhpcy5jaGFpblByb21pc2UudGhlbihvcGVyYXRpb24pO1xuXG4gICAgICAgIHRoaXMuY2hhaW5Qcm9taXNlID0gb3BlcmF0aW9uUHJvbWlzZS50aGVuKCgpID0+IGRlbGF5KFBPU1RfT1BFUkFUSU9OX0RFTEFZKSk7XG5cbiAgICAgICAgcmV0dXJuIG9wZXJhdGlvblByb21pc2U7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCcm93c2VyU3RhcnRlciB7XG4gICAgY29uc3RydWN0b3IgKCkge1xuICAgICAgICAvLyBOT1RFOiBZb3UgY2FuJ3Qgc3RhcnQgbXVsdGlwbGUgaW5zdGFuY2VzIG9mIHRoZSBzYW1lIGFwcCBhdCB0aGUgc2FtZSB0aW1lIG9uIG1hY09TLlxuICAgICAgICAvLyBUaGF0J3Mgd2h5IGEgcXVldWUgb2Ygb3BlbmluZyByZXF1ZXN0cyBpcyBuZWVkZWQuXG4gICAgICAgIHRoaXMubWFjT1NCcm93c2VyT3BlbmluZ1F1ZXVlID0gbmV3IE9wZXJhdGlvbnNRdWV1ZSgpO1xuICAgIH1cblxuICAgIGFzeW5jIHN0YXJ0QnJvd3NlciAoLi4ub3BlbkFyZ3MpIHtcbiAgICAgICAgY29uc3Qgb3BlbkJyb3dzZXJPcGVyYXRpb24gPSAoKSA9PiBicm93c2VyVG9vbHMub3BlbiguLi5vcGVuQXJncyk7XG5cbiAgICAgICAgaWYgKE9TLm1hYylcbiAgICAgICAgICAgIGF3YWl0IHRoaXMubWFjT1NCcm93c2VyT3BlbmluZ1F1ZXVlLmV4ZWN1dGVPcGVyYXRpb24ob3BlbkJyb3dzZXJPcGVyYXRpb24pO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBhd2FpdCBvcGVuQnJvd3Nlck9wZXJhdGlvbigpO1xuICAgIH1cbn1cbiJdfQ==
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci1zdGFydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2Jyb3dzZXIvcHJvdmlkZXIvdXRpbHMvYnJvd3Nlci1zdGFydGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsMERBQTJCO0FBQzNCLG9GQUFrRDtBQUNsRCxpRUFBeUM7QUFHekMsTUFBTSxvQkFBb0IsR0FBRyxHQUFHLENBQUM7QUFFakMsTUFBTSxlQUFlO0lBQ2pCO1FBQ0ksSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVELGdCQUFnQixDQUFFLFNBQVM7UUFDdkIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUUzRCxJQUFJLENBQUMsWUFBWSxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFBLGVBQUssRUFBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7UUFFN0UsT0FBTyxnQkFBZ0IsQ0FBQztJQUM1QixDQUFDO0NBQ0o7QUFFRCxNQUFxQixjQUFjO0lBQy9CO1FBQ0ksc0ZBQXNGO1FBQ3RGLG9EQUFvRDtRQUNwRCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztJQUMxRCxDQUFDO0lBRUQsS0FBSyxDQUFDLFlBQVksQ0FBRSxHQUFHLFFBQVE7UUFDM0IsTUFBTSxvQkFBb0IsR0FBRyxHQUFHLEVBQUUsQ0FBQyxnQ0FBWSxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO1FBRWxFLElBQUksbUJBQUUsQ0FBQyxHQUFHO1lBQ04sTUFBTSxJQUFJLENBQUMsd0JBQXdCLENBQUMsZ0JBQWdCLENBQUMsb0JBQW9CLENBQUMsQ0FBQzs7WUFFM0UsTUFBTSxvQkFBb0IsRUFBRSxDQUFDO0lBQ3JDLENBQUM7Q0FDSjtBQWZELGlDQWVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE9TIGZyb20gJ29zLWZhbWlseSc7XG5pbXBvcnQgYnJvd3NlclRvb2xzIGZyb20gJ3Rlc3RjYWZlLWJyb3dzZXItdG9vbHMnO1xuaW1wb3J0IGRlbGF5IGZyb20gJy4uLy4uLy4uL3V0aWxzL2RlbGF5JztcblxuXG5jb25zdCBQT1NUX09QRVJBVElPTl9ERUxBWSA9IDUwMDtcblxuY2xhc3MgT3BlcmF0aW9uc1F1ZXVlIHtcbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICAgIHRoaXMuY2hhaW5Qcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgZXhlY3V0ZU9wZXJhdGlvbiAob3BlcmF0aW9uKSB7XG4gICAgICAgIGNvbnN0IG9wZXJhdGlvblByb21pc2UgPSB0aGlzLmNoYWluUHJvbWlzZS50aGVuKG9wZXJhdGlvbik7XG5cbiAgICAgICAgdGhpcy5jaGFpblByb21pc2UgPSBvcGVyYXRpb25Qcm9taXNlLnRoZW4oKCkgPT4gZGVsYXkoUE9TVF9PUEVSQVRJT05fREVMQVkpKTtcblxuICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHJvbWlzZTtcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJyb3dzZXJTdGFydGVyIHtcbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICAgIC8vIE5PVEU6IFlvdSBjYW4ndCBzdGFydCBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgYXBwIGF0IHRoZSBzYW1lIHRpbWUgb24gbWFjT1MuXG4gICAgICAgIC8vIFRoYXQncyB3aHkgYSBxdWV1ZSBvZiBvcGVuaW5nIHJlcXVlc3RzIGlzIG5lZWRlZC5cbiAgICAgICAgdGhpcy5tYWNPU0Jyb3dzZXJPcGVuaW5nUXVldWUgPSBuZXcgT3BlcmF0aW9uc1F1ZXVlKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgc3RhcnRCcm93c2VyICguLi5vcGVuQXJncykge1xuICAgICAgICBjb25zdCBvcGVuQnJvd3Nlck9wZXJhdGlvbiA9ICgpID0+IGJyb3dzZXJUb29scy5vcGVuKC4uLm9wZW5BcmdzKTtcblxuICAgICAgICBpZiAoT1MubWFjKVxuICAgICAgICAgICAgYXdhaXQgdGhpcy5tYWNPU0Jyb3dzZXJPcGVuaW5nUXVldWUuZXhlY3V0ZU9wZXJhdGlvbihvcGVuQnJvd3Nlck9wZXJhdGlvbik7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIGF3YWl0IG9wZW5Ccm93c2VyT3BlcmF0aW9uKCk7XG4gICAgfVxufVxuIl19