obsidian-integration-testing 14.0.0 → 15.0.0

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 (114) hide show
  1. package/README.md +2 -0
  2. package/dist/lib/cjs/appium-dependencies.cjs +2 -5
  3. package/dist/lib/cjs/appium-server-marker.cjs +3 -9
  4. package/dist/lib/cjs/asar-fallback-detection.cjs +2 -5
  5. package/dist/lib/cjs/avd-probe-verdict.cjs +3 -9
  6. package/dist/lib/cjs/capture-obsidian-screenshot.cjs +9 -1
  7. package/dist/lib/cjs/capture-obsidian-screenshot.d.cts +21 -0
  8. package/dist/lib/cjs/capture-screenshot.cjs +2 -5
  9. package/dist/lib/cjs/cli.cjs +2 -5
  10. package/dist/lib/cjs/demo-vault-populate.cjs +7 -9
  11. package/dist/lib/cjs/device-setting-restore.cjs +2 -5
  12. package/dist/lib/cjs/electron-compatibility.cjs +8 -11
  13. package/dist/lib/cjs/emulator-arguments.cjs +14 -14
  14. package/dist/lib/cjs/emulator-marker.cjs +4 -13
  15. package/dist/lib/cjs/emulator-reaper.cjs +2 -5
  16. package/dist/lib/cjs/emulator-snapshot.cjs +3 -9
  17. package/dist/lib/cjs/eval-cap-exceeded-error.cjs +2 -5
  18. package/dist/lib/cjs/exec.cjs +12 -24
  19. package/dist/lib/cjs/function-expression.cjs +2 -5
  20. package/dist/lib/cjs/global-setup-core.cjs +53 -18
  21. package/dist/lib/cjs/hide-vault-name.cjs +45 -0
  22. package/dist/lib/cjs/hide-vault-name.d.cts +67 -0
  23. package/dist/lib/cjs/index.cjs +9 -1
  24. package/dist/lib/cjs/index.d.cts +6 -2
  25. package/dist/lib/cjs/installer-asset.cjs +3 -9
  26. package/dist/lib/cjs/installer-compatibility.cjs +9 -12
  27. package/dist/lib/cjs/label-screenshot.cjs +63 -4
  28. package/dist/lib/cjs/label-screenshot.d.cts +66 -2
  29. package/dist/lib/cjs/leftover-cleanup.cjs +2 -5
  30. package/dist/lib/cjs/library.cjs +1 -1
  31. package/dist/lib/cjs/mobile-input.cjs +17 -31
  32. package/dist/lib/cjs/namespace-bootstrap.cjs +3 -9
  33. package/dist/lib/cjs/obsidian-executable.cjs +2 -5
  34. package/dist/lib/cjs/obsidian-installer.cjs +3 -9
  35. package/dist/lib/cjs/obsidian-instance.cjs +1 -1
  36. package/dist/lib/cjs/obsidian-instance.d.cts +8 -0
  37. package/dist/lib/cjs/owned-instance-exit-marker.cjs +2 -5
  38. package/dist/lib/cjs/owned-instance-exited-error.cjs +13 -17
  39. package/dist/lib/cjs/process-exit-message.cjs +3 -9
  40. package/dist/lib/cjs/renderer-boot-detection.cjs +3 -9
  41. package/dist/lib/cjs/setup-lock.cjs +3 -9
  42. package/dist/lib/cjs/sharp-loader.cjs +1 -1
  43. package/dist/lib/cjs/sharp-loader.d.cts +11 -0
  44. package/dist/lib/cjs/soft-keyboard-geometry.cjs +4 -9
  45. package/dist/lib/cjs/stale-build-detection.cjs +115 -0
  46. package/dist/lib/cjs/stale-build-detection.d.cts +108 -0
  47. package/dist/lib/cjs/stale-build-error.cjs +74 -0
  48. package/dist/lib/cjs/stale-build-error.d.cts +81 -0
  49. package/dist/lib/cjs/strict-proxy.cjs +3 -9
  50. package/dist/lib/cjs/transport-appium.cjs +3 -9
  51. package/dist/lib/cjs/transport-desktop-cdp.cjs +18 -32
  52. package/dist/lib/cjs/transport-factory.cjs +20 -25
  53. package/dist/lib/cjs/transport-options.cjs +2 -5
  54. package/dist/lib/cjs/transport-options.d.cts +36 -0
  55. package/dist/lib/cjs/vault-teardown-verdict.cjs +2 -5
  56. package/dist/lib/cjs/version-matrix.cjs +4 -13
  57. package/dist/lib/cjs/wedged-appium-server.cjs +3 -9
  58. package/dist/lib/esm/appium-dependencies.mjs +2 -5
  59. package/dist/lib/esm/appium-server-marker.mjs +3 -9
  60. package/dist/lib/esm/asar-fallback-detection.mjs +2 -5
  61. package/dist/lib/esm/avd-probe-verdict.mjs +3 -9
  62. package/dist/lib/esm/capture-obsidian-screenshot.d.mts +21 -0
  63. package/dist/lib/esm/capture-obsidian-screenshot.mjs +9 -1
  64. package/dist/lib/esm/capture-screenshot.mjs +2 -5
  65. package/dist/lib/esm/cli.mjs +2 -5
  66. package/dist/lib/esm/demo-vault-populate.mjs +7 -9
  67. package/dist/lib/esm/device-setting-restore.mjs +2 -5
  68. package/dist/lib/esm/electron-compatibility.mjs +8 -11
  69. package/dist/lib/esm/emulator-arguments.mjs +14 -14
  70. package/dist/lib/esm/emulator-marker.mjs +4 -13
  71. package/dist/lib/esm/emulator-reaper.mjs +2 -5
  72. package/dist/lib/esm/emulator-snapshot.mjs +3 -9
  73. package/dist/lib/esm/eval-cap-exceeded-error.mjs +2 -5
  74. package/dist/lib/esm/exec.mjs +12 -24
  75. package/dist/lib/esm/function-expression.mjs +2 -5
  76. package/dist/lib/esm/global-setup-core.mjs +60 -19
  77. package/dist/lib/esm/hide-vault-name.d.mts +67 -0
  78. package/dist/lib/esm/hide-vault-name.mjs +21 -0
  79. package/dist/lib/esm/index.d.mts +6 -2
  80. package/dist/lib/esm/index.mjs +8 -2
  81. package/dist/lib/esm/installer-asset.mjs +3 -9
  82. package/dist/lib/esm/installer-compatibility.mjs +9 -12
  83. package/dist/lib/esm/label-screenshot.d.mts +66 -2
  84. package/dist/lib/esm/label-screenshot.mjs +61 -3
  85. package/dist/lib/esm/leftover-cleanup.mjs +2 -5
  86. package/dist/lib/esm/library.mjs +1 -1
  87. package/dist/lib/esm/mobile-input.mjs +17 -31
  88. package/dist/lib/esm/namespace-bootstrap.mjs +3 -9
  89. package/dist/lib/esm/obsidian-executable.mjs +2 -5
  90. package/dist/lib/esm/obsidian-installer.mjs +3 -9
  91. package/dist/lib/esm/obsidian-instance.d.mts +8 -0
  92. package/dist/lib/esm/obsidian-instance.mjs +1 -1
  93. package/dist/lib/esm/owned-instance-exit-marker.mjs +2 -5
  94. package/dist/lib/esm/owned-instance-exited-error.mjs +13 -17
  95. package/dist/lib/esm/process-exit-message.mjs +3 -9
  96. package/dist/lib/esm/renderer-boot-detection.mjs +3 -9
  97. package/dist/lib/esm/setup-lock.mjs +3 -9
  98. package/dist/lib/esm/sharp-loader.d.mts +11 -0
  99. package/dist/lib/esm/sharp-loader.mjs +1 -1
  100. package/dist/lib/esm/soft-keyboard-geometry.mjs +4 -9
  101. package/dist/lib/esm/stale-build-detection.d.mts +108 -0
  102. package/dist/lib/esm/stale-build-detection.mjs +84 -0
  103. package/dist/lib/esm/stale-build-error.d.mts +81 -0
  104. package/dist/lib/esm/stale-build-error.mjs +50 -0
  105. package/dist/lib/esm/strict-proxy.mjs +3 -9
  106. package/dist/lib/esm/transport-appium.mjs +3 -9
  107. package/dist/lib/esm/transport-desktop-cdp.mjs +18 -32
  108. package/dist/lib/esm/transport-factory.mjs +20 -25
  109. package/dist/lib/esm/transport-options.d.mts +36 -0
  110. package/dist/lib/esm/transport-options.mjs +2 -5
  111. package/dist/lib/esm/vault-teardown-verdict.mjs +2 -5
  112. package/dist/lib/esm/version-matrix.mjs +4 -13
  113. package/dist/lib/esm/wedged-appium-server.mjs +3 -9
  114. package/package.json +20 -19
@@ -8,6 +8,14 @@
8
8
  * dedicated `--remote-debugging-port`. Because Electron's single-instance lock
9
9
  * is keyed to the user-data dir, the owned instance runs in parallel with the
10
10
  * user's own Obsidian. Confirmed by the Phase 0 spike (see the project plan).
11
+ *
12
+ * Winning that lock is also why every owned instance takes Obsidian's
13
+ * first-instance path and tries to serve the CLI on a pipe whose name is
14
+ * machine-global per user, and so logs `CLI server error: ... EADDRINUSE` when
15
+ * anything else — normally the developer's own Obsidian — got there first. That
16
+ * line is expected on every such run, not a sign of two runs contending, and
17
+ * nothing the harness does goes through the pipe. AGENTS.md L59 has the
18
+ * measurement.
11
19
  */
12
20
  import type { ProcessExitInfo } from './process-exit-message.mjs';
13
21
  /**
@@ -127,4 +127,4 @@ export {
127
127
  launchOwnedObsidianInstance,
128
128
  pickFreePort
129
129
  };
130
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuLWluc3RhbmNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogTGF1bmNoZXMgYW5kIG1hbmFnZXMgYSBoYXJuZXNzLW93bmVkLCBpc29sYXRlZCBPYnNpZGlhbiBkZXNrdG9wIGluc3RhbmNlLlxuICpcbiAqIFRoZSBpbnN0YW5jZSBydW5zIGFnYWluc3QgYSBkZWRpY2F0ZWQgYC0tdXNlci1kYXRhLWRpcmAgKHNvIGl0IG5ldmVyIHRvdWNoZXNcbiAqIHRoZSB1c2VyJ3MgT2JzaWRpYW4gY29uZmlnLCByZWdpc3RyeSwgb3IgcnVubmluZyB3aW5kb3cpIGFuZCBleHBvc2VzIENEUCBvbiBhXG4gKiBkZWRpY2F0ZWQgYC0tcmVtb3RlLWRlYnVnZ2luZy1wb3J0YC4gQmVjYXVzZSBFbGVjdHJvbidzIHNpbmdsZS1pbnN0YW5jZSBsb2NrXG4gKiBpcyBrZXllZCB0byB0aGUgdXNlci1kYXRhIGRpciwgdGhlIG93bmVkIGluc3RhbmNlIHJ1bnMgaW4gcGFyYWxsZWwgd2l0aCB0aGVcbiAqIHVzZXIncyBvd24gT2JzaWRpYW4uIENvbmZpcm1lZCBieSB0aGUgUGhhc2UgMCBzcGlrZSAoc2VlIHRoZSBwcm9qZWN0IHBsYW4pLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBJbnRlZ3JhdGlvbi10aW1lIHByb2Nlc3MgbWFuYWdlbWVudCBjb3ZlcmVkIGJ5IGludGVncmF0aW9uIHRlc3RzLCBub3QgdW5pdCB0ZXN0cy4gKi9cblxuaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHsgY3JlYXRlU2VydmVyIH0gZnJvbSAnbm9kZTpuZXQnO1xuXG5pbXBvcnQgdHlwZSB7IFByb2Nlc3NFeGl0SW5mbyB9IGZyb20gJy4vcHJvY2Vzcy1leGl0LW1lc3NhZ2UubWpzJztcblxuaW1wb3J0IHsga2lsbFByb2Nlc3NUcmVlIH0gZnJvbSAnLi9raWxsLXByb2Nlc3MtdHJlZS5tanMnO1xuaW1wb3J0IHsgbG9nIH0gZnJvbSAnLi9sb2cubWpzJztcbmltcG9ydCB7XG4gIGNsZWFyT3duZWRJbnN0YW5jZUV4aXRNYXJrZXIsXG4gIHdyaXRlT3duZWRJbnN0YW5jZUV4aXRNYXJrZXJcbn0gZnJvbSAnLi9vd25lZC1pbnN0YW5jZS1leGl0LW1hcmtlci5tanMnO1xuaW1wb3J0IHsgT3duZWRJbnN0YW5jZUV4aXRlZEVycm9yIH0gZnJvbSAnLi9vd25lZC1pbnN0YW5jZS1leGl0ZWQtZXJyb3IubWpzJztcbmltcG9ydCB7IHN0YXJ0UGFyZW50TGl2ZW5lc3NTZXJ2ZXIgfSBmcm9tICcuL3BhcmVudC1saXZlbmVzcy5tanMnO1xuaW1wb3J0IHsgYXR0YWNoUHJvY2Vzc0NhcHR1cmUgfSBmcm9tICcuL3Byb2Nlc3MtY2FwdHVyZS5tanMnO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBsYXVuY2hPd25lZE9ic2lkaWFuSW5zdGFuY2V9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExhdW5jaE93bmVkT2JzaWRpYW5JbnN0YW5jZVBhcmFtcyB7XG4gIC8qKlxuICAgKiBDRFAgaG9zdCB0byBiaW5kL3BvbGwuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAnMTI3LjAuMC4xJ2BcbiAgICovXG4gIHJlYWRvbmx5IGNkcEhvc3Q/OiBzdHJpbmc7XG5cbiAgLyoqXG4gIEFic29sdXRlIHBhdGggdG8gdGhlIE9ic2lkaWFuIGV4ZWN1dGFibGUgKHNoZWxsKSB0byBsYXVuY2guXG4gICAqL1xuICByZWFkb25seSBleGVQYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEV4dHJhIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgYXBwZW5kZWQgYWZ0ZXIgYC0tdXNlci1kYXRhLWRpcmAgYW5kXG4gICAqIGAtLXJlbW90ZS1kZWJ1Z2dpbmctcG9ydGAgXHUyMDE0IHVzZWQgdG8gcGFzcyB0aGUga2VlcC1hbGl2ZSBDaHJvbWl1bSBmbGFncyB3aGVuXG4gICAqIHRoZSBpbnN0YW5jZSBpcyBsYXVuY2hlZCBoaWRkZW4gKG9mZi1zY3JlZW4pLiBFbXB0eSBieSBkZWZhdWx0LlxuICAgKi9cbiAgcmVhZG9ubHkgZXh0cmFBcmd1bWVudHM/OiByZWFkb25seSBzdHJpbmdbXTtcblxuICAvKipcbiAgQWJzb2x1dGUgcGF0aCB0byB0aGUgaXNvbGF0ZWQgdXNlci1kYXRhIGRpciB0byBwYXNzIHZpYSBgLS11c2VyLWRhdGEtZGlyYC5cbiAgICovXG5cbiAgcmVhZG9ubHkgdXNlckRhdGFEaXJlY3Rvcnk6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIHJ1bm5pbmcsIGhhcm5lc3Mtb3duZWQgT2JzaWRpYW4gaW5zdGFuY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3duZWRPYnNpZGlhbkluc3RhbmNlIHtcbiAgLyoqXG4gIEJhc2UgQ0RQIFVSTCwgZS5nLiBgaHR0cDovLzEyNy4wLjAuMTo1MTg4OGAuXG4gICAqL1xuICByZWFkb25seSBjZHBVcmw6IHN0cmluZztcblxuICAvKipcbiAgS2lsbHMgdGhlIGluc3RhbmNlIGFuZCBpdHMgZW50aXJlIHByb2Nlc3MgdHJlZS5cbiAgICovXG4gIGtpbGw6ICgpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIExvb3BiYWNrIHBvcnQgdGhlIGluc3RhbmNlJ3MgcmVuZGVyZXIgY29ubmVjdHMgYmFjayB0byBzbyBpdCBkZXN0cm95c1xuICAgKiBpdHNlbGYgaWYgdGhpcyBoYXJuZXNzIHByb2Nlc3MgZGllcyB3aXRob3V0IGNsZWFuaW5nIHVwLiBTZWVcbiAgICogYHBhcmVudC1saXZlbmVzcy50c2AgZm9yIHdoeSB0aGUgcGFyZW50L2NoaWxkIHJlbGF0aW9uc2hpcCBhbG9uZSBpcyBub3RcbiAgICogZW5vdWdoLlxuICAgKi9cbiAgcmVhZG9ubHkgcGFyZW50TGl2ZW5lc3NQb3J0OiBudW1iZXI7XG5cbiAgLyoqXG4gIFRoZSBDRFAgcmVtb3RlLWRlYnVnZ2luZyBwb3J0IHRoZSBpbnN0YW5jZSB3YXMgbGF1bmNoZWQgd2l0aC5cbiAgICovXG4gIHJlYWRvbmx5IHBvcnQ6IG51bWJlcjtcblxuICAvKipcbiAgICogUmV0dXJucyBob3cgdGhlIGluc3RhbmNlIGRpZWQgb25jZSBpdCBpcyBubyBsb25nZXIgcnVubmluZywgb3RoZXJ3aXNlXG4gICAqIGB1bmRlZmluZWRgLiBUaGlzIGlzIHRoZSBpbi1wcm9jZXNzIGhhbGYgb2YgdGhlIGFuc3dlcjsgYSB0ZXN0IHdvcmtlciBpblxuICAgKiBhbm90aGVyIHByb2Nlc3MgcmVhZHMgdGhlIHNhbWUgZmFjdHMgZnJvbSB0aGUgZXhpdCBtYXJrZXJcbiAgICogKGBvd25lZC1pbnN0YW5jZS1leGl0LW1hcmtlci50c2ApLlxuICAgKi9cbiAgcmVhZEV4aXRJbmZvOiAoKSA9PiBQcm9jZXNzRXhpdEluZm8gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gIFJldHVybnMgdGhlIHRhaWwgb2YgZXZlcnl0aGluZyB0aGUgaW5zdGFuY2Ugd3JvdGUgdG8gc3Rkb3V0L3N0ZGVyci5cbiAgICovXG4gIHJlYWRPdXRwdXQ6ICgpID0+IHN0cmluZztcbn1cblxuY29uc3QgREVGQVVMVF9DRFBfSE9TVCA9ICcxMjcuMC4wLjEnO1xuY29uc3QgQ0RQX1JFQURZX1BPTExfSU5URVJWQUxfSU5fTUlMTElTRUNPTkRTID0gMTAwMDtcbmNvbnN0IENEUF9SRUFEWV9USU1FT1VUX0lOX01JTExJU0VDT05EUyA9IDYwXzAwMDtcbmNvbnN0IE9CU0lESUFOX09VVFBVVF9UQUlMX01BWF9MRU5HVEggPSA4MDAwO1xuXG5pbnRlcmZhY2UgQ2RwVGFyZ2V0IHtcbiAgdHlwZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIExhdW5jaGVzIGFuIGlzb2xhdGVkLCBoYXJuZXNzLW93bmVkIE9ic2lkaWFuIGluc3RhbmNlIGFuZCB3YWl0cyB1bnRpbCBpdHMgQ0RQXG4gKiBlbmRwb2ludCBpcyBzZXJ2aW5nIHBhZ2UgdGFyZ2V0cy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gTGF1bmNoIHBhcmFtZXRlcnMuXG4gKiBAcmV0dXJucyBUaGUgcnVubmluZyBvd25lZCBpbnN0YW5jZS5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgQ0RQIGRvZXMgbm90IGJlY29tZSByZWFjaGFibGUgd2l0aGluIHRoZSB0aW1lb3V0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGF1bmNoT3duZWRPYnNpZGlhbkluc3RhbmNlKFxuICBwYXJhbXM6IExhdW5jaE93bmVkT2JzaWRpYW5JbnN0YW5jZVBhcmFtc1xuKTogUHJvbWlzZTxPd25lZE9ic2lkaWFuSW5zdGFuY2U+IHtcbiAgY29uc3QgY2RwSG9zdCA9IHBhcmFtcy5jZHBIb3N0ID8/IERFRkFVTFRfQ0RQX0hPU1Q7XG4gIGNvbnN0IHBvcnQgPSBhd2FpdCBwaWNrRnJlZVBvcnQoKTtcbiAgY29uc3QgY2RwVXJsID0gYGh0dHA6Ly8ke2NkcEhvc3R9OiR7U3RyaW5nKHBvcnQpfWA7XG5cbiAgLy8gTGlzdGVuIEJFRk9SRSBzcGF3bmluZywgc28gdGhlIHJlbmRlcmVyIHdhdGNoZG9nIGNhbiBuZXZlciByYWNlIHRoZSBzZXJ2ZXJcbiAgLy8gaW50byBhIGZhaWxlZCBjb25uZWN0ICh3aGljaCBpdCB0cmVhdHMgYXMgXCJubyB3YXRjaGRvZ1wiLCBsZWF2aW5nIHRoZSBpbnN0YW5jZSBhbGl2ZSkuXG4gIGNvbnN0IGxpdmVuZXNzU2VydmVyID0gYXdhaXQgc3RhcnRQYXJlbnRMaXZlbmVzc1NlcnZlcigpO1xuXG4gIC8vIFBvcnRzIGFyZSByZWN5Y2xlZCBieSB0aGUgT1MsIHNvIGFuIG9sZGVyIGluc3RhbmNlJ3MgZGVhdGggcmVjb3JkZWQgb24gdGhpc1xuICAvLyBwb3J0IHdvdWxkIG90aGVyd2lzZSBiZSByZWFkIGFzIHRoaXMgb25lJ3MuXG4gIGNsZWFyT3duZWRJbnN0YW5jZUV4aXRNYXJrZXIocG9ydCk7XG5cbiAgbG9nKGBbb2JzaWRpYW4taW5zdGFuY2VdIExhdW5jaGluZyBvd25lZCBPYnNpZGlhbjogdXNlckRhdGE9JHtwYXJhbXMudXNlckRhdGFEaXJlY3Rvcnl9LCBjZHBQb3J0PSR7U3RyaW5nKHBvcnQpfWApO1xuICAvKlxuICAgKiBQaXBlZCByYXRoZXIgdGhhbiBgJ2lnbm9yZSdgOiBhbiBFbGVjdHJvbi9DaHJvbWl1bSBmYXRhbCBpcyB3cml0dGVuIHRvXG4gICAqIHN0ZGVyciBhbmQgbm93aGVyZSBlbHNlLCBhbmQgZGlzY2FyZGluZyBpdCBpcyB3aHkgYSBkeWluZyBpbnN0YW5jZSB1c2VkIHRvXG4gICAqIGJlIGluZGlzdGluZ3Vpc2hhYmxlIGZyb20gYSBoZWFsdGh5IG9uZS4gVGhlIGNhcHR1cmUgZHJhaW5zIGJvdGggcGlwZXMgZm9yXG4gICAqIHRoZSBwcm9jZXNzJ3Mgd2hvbGUgbGlmZSAoYSBmdWxsIHBpcGUgYnVmZmVyIHdvdWxkIGJsb2NrIHRoZSBhcHAgaXRzZWxmKSBhbmRcbiAgICoga2VlcHMgb25seSBhIGJvdW5kZWQgdGFpbC5cbiAgICovXG4gIGNvbnN0IGNoaWxkID0gc3Bhd24oXG4gICAgcGFyYW1zLmV4ZVBhdGgsXG4gICAgW2AtLXVzZXItZGF0YS1kaXI9JHtwYXJhbXMudXNlckRhdGFEaXJlY3Rvcnl9YCwgYC0tcmVtb3RlLWRlYnVnZ2luZy1wb3J0PSR7U3RyaW5nKHBvcnQpfWAsIC4uLihwYXJhbXMuZXh0cmFBcmd1bWVudHMgPz8gW10pXSxcbiAgICB7IGRldGFjaGVkOiB0cnVlLCBzdGRpbzogWydpZ25vcmUnLCAncGlwZScsICdwaXBlJ10gfVxuICApO1xuICBjb25zdCBjYXB0dXJlID0gYXR0YWNoUHJvY2Vzc0NhcHR1cmUoY2hpbGQsIHtcbiAgICBtYXhPdXRwdXRMZW5ndGhJbkNoYXJhY3RlcnM6IE9CU0lESUFOX09VVFBVVF9UQUlMX01BWF9MRU5HVEgsXG4gICAgb25DaHVuazogKGNodW5rKSA9PiB7XG4gICAgICBjb25zdCB0ZXh0ID0gY2h1bmsudGV4dC50cmltRW5kKCk7XG4gICAgICBpZiAodGV4dC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGxvZyhgW29ic2lkaWFuLWluc3RhbmNlOiR7Y2h1bmsuc3RyZWFtfV0gJHt0ZXh0fWApO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgLy8gU2V0IGJ5IGBraWxsKClgLCBzbyBhIGRlYXRoIHRoZSBoYXJuZXNzIG9yZGVyZWQgaXMgbmV2ZXIgcmVwb3J0ZWQgYXMgb25lIGl0XG4gIC8vIHN1ZmZlcmVkIFx1MjAxNCBhIG1hcmtlciBsZWZ0IGJ5IGEgY2xlYW4gdGVhcmRvd24gd291bGQgY29udmljdCB0aGUgbmV4dCBydW4nc1xuICAvLyBoZWFsdGh5IGluc3RhbmNlIG9mIGFuIGV4aXQgdGhhdCBuZXZlciBoYXBwZW5lZC5cbiAgbGV0IGlzS2lsbEV4cGVjdGVkID0gZmFsc2U7XG5cbiAgY2hpbGQub25jZSgnZXhpdCcsIChjb2RlOiBudWxsIHwgbnVtYmVyLCBzaWduYWw6IE5vZGVKUy5TaWduYWxzIHwgbnVsbCkgPT4ge1xuICAgIGlmIChpc0tpbGxFeHBlY3RlZCkge1xuICAgICAgbG9nKGBbb2JzaWRpYW4taW5zdGFuY2VdIE93bmVkIE9ic2lkaWFuIGV4aXRlZCBhcyBhc2tlZDogcGlkPSR7U3RyaW5nKGNoaWxkLnBpZCl9IGNvZGU9JHtTdHJpbmcoY29kZSl9IHNpZ25hbD0ke1N0cmluZyhzaWduYWwpfWApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIExvdWQgb24gcHVycG9zZS4gVGhpcyBvbmUgbGluZSBpcyB3aGF0IHNlcGFyYXRlcyBhIGNsZWFuIHF1aXQgZnJvbSBhXG4gICAgLy8gY3Jhc2gsIGFuZCBpdHMgYWJzZW5jZSBvbmNlIGNvc3QgYSBkYXkgb2YgZ3Vlc3NpbmcuXG4gICAgbG9nKGBbb2JzaWRpYW4taW5zdGFuY2VdICEhISBPV05FRCBPQlNJRElBTiBFWElURUQ6IHBpZD0ke1N0cmluZyhjaGlsZC5waWQpfSBjb2RlPSR7U3RyaW5nKGNvZGUpfSBzaWduYWw9JHtTdHJpbmcoc2lnbmFsKX1gKTtcbiAgICB3cml0ZU93bmVkSW5zdGFuY2VFeGl0TWFya2VyKHtcbiAgICAgIGNvZGUsXG4gICAgICBvdXRwdXRUYWlsOiBjYXB0dXJlLnJlYWRPdXRwdXQoKSxcbiAgICAgIHBpZDogY2hpbGQucGlkLFxuICAgICAgcG9ydCxcbiAgICAgIHNpZ25hbFxuICAgIH0pO1xuICB9KTtcblxuICBjaGlsZC51bnJlZigpO1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgd2FpdEZvckNkcFJlYWR5KGNkcFVybCk7XG4gICAgbG9nKGBbb2JzaWRpYW4taW5zdGFuY2VdIE93bmVkIE9ic2lkaWFuIGlzIHNlcnZpbmcgQ0RQIGF0ICR7Y2RwVXJsfS5gKTtcbiAgICByZXR1cm4ge1xuICAgICAgY2RwVXJsLFxuICAgICAga2lsbCxcbiAgICAgIHBhcmVudExpdmVuZXNzUG9ydDogbGl2ZW5lc3NTZXJ2ZXIucG9ydCxcbiAgICAgIHBvcnQsXG4gICAgICByZWFkRXhpdEluZm86ICgpID0+IGNhcHR1cmUucmVhZEV4aXRJbmZvKCksXG4gICAgICByZWFkT3V0cHV0OiAoKSA9PiBjYXB0dXJlLnJlYWRPdXRwdXQoKVxuICAgIH07XG4gIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgLypcbiAgICAgKiBSZWFkIGJlZm9yZSBraWxsaW5nLCBzbyB0aGUgdmVyZGljdCBpcyB0aGUgaW5zdGFuY2UncyBvd24uIEEgQ0RQIHRpbWVvdXRcbiAgICAgKiB3aG9zZSBwcm9jZXNzIGlzIGFscmVhZHkgZ29uZSBpcyBub3QgYSBzbG93IGJvb3QgXHUyMDE0IGl0IGlzIGEgYm9vdCB0aGF0XG4gICAgICogZW5kZWQgXHUyMDE0IGFuZCBzYXlpbmcgc28gYmVhdHMgcmVwb3J0aW5nIG9ubHkgdGhlIGJ1ZGdldCBpdCBibGV3LlxuICAgICAqXG4gICAgICogRGVsaWJlcmF0ZWx5IE5PVCBhIGZhc3QtZmFpbCBpbnNpZGUgdGhlIHBvbGw6IG9uIHNvbWUgaW5zdGFsbHMgdGhlXG4gICAgICogbGF1bmNoZWQgZXhlY3V0YWJsZSBpcyBhIHNoaW0gdGhhdCBleGl0cyBvbmNlIGl0IGhhcyBoYW5kZWQgb2ZmIHRvIHRoZVxuICAgICAqIHJlYWwgYXBwLCBzbyBhIGRlYWQgY2hpbGQgbWlkLXBvbGwgZG9lcyBub3QgaW1wbHkgYSBkZWFkIGluc3RhbmNlLiBPbmx5IGFcbiAgICAgKiBkZWFkIGNoaWxkIHRoYXQgYWxzbyBuZXZlciBzZXJ2ZWQgQ0RQIGRvZXMuXG4gICAgICovXG4gICAgY29uc3QgZXhpdEluZm8gPSBjYXB0dXJlLnJlYWRFeGl0SW5mbygpO1xuICAgIGtpbGwoKTtcbiAgICBpZiAoZXhpdEluZm8pIHtcbiAgICAgIHRocm93IG5ldyBPd25lZEluc3RhbmNlRXhpdGVkRXJyb3Ioe1xuICAgICAgICBjZHBVcmwsXG4gICAgICAgIGNvZGU6IGV4aXRJbmZvLmNvZGUsXG4gICAgICAgIG91dHB1dFRhaWw6IGNhcHR1cmUucmVhZE91dHB1dCgpLFxuICAgICAgICBwaWQ6IGNoaWxkLnBpZCxcbiAgICAgICAgc2lnbmFsOiBleGl0SW5mby5zaWduYWwsXG4gICAgICAgIHNwYXduRXJyb3I6IGV4aXRJbmZvLnNwYXduRXJyb3JcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxuXG4gIGZ1bmN0aW9uIGtpbGwoKTogdm9pZCB7XG4gICAgaXNLaWxsRXhwZWN0ZWQgPSB0cnVlO1xuICAgIGNsZWFyT3duZWRJbnN0YW5jZUV4aXRNYXJrZXIocG9ydCk7XG4gICAgbGl2ZW5lc3NTZXJ2ZXIuY2xvc2UoKTtcbiAgICBraWxsUHJvY2Vzc1RyZWUoY2hpbGQpO1xuICB9XG59XG5cbi8qKlxuICogUGlja3MgYSBmcmVlIFRDUCBwb3J0IGJ5IGJpbmRpbmcgdG8gcG9ydCBgMGAgYW5kIHJlYWRpbmcgdGhlIGFzc2lnbmVkIHBvcnQuXG4gKlxuICogVGhlcmUgaXMgYSBzbWFsbCB0aW1lLW9mLWNoZWNrL3RpbWUtb2YtdXNlIHdpbmRvdyBiZXR3ZWVuIHJlbGVhc2luZyB0aGUgcG9ydFxuICogaGVyZSBhbmQgT2JzaWRpYW4gYmluZGluZyBpdDsgaW4gcHJhY3RpY2UgaXQgaXMgbmVnbGlnaWJsZSBmb3IgdGVzdCBydW5zLlxuICpcbiAqIEByZXR1cm5zIEEgZnJlZSBUQ1AgcG9ydC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBpY2tGcmVlUG9ydCgpOiBQcm9taXNlPG51bWJlcj4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHNlcnZlciA9IGNyZWF0ZVNlcnZlcigpO1xuICAgIHNlcnZlci5vbmNlKCdlcnJvcicsIHJlamVjdCk7XG4gICAgc2VydmVyLmxpc3RlbigwLCBERUZBVUxUX0NEUF9IT1NULCAoKSA9PiB7XG4gICAgICBjb25zdCBhZGRyZXNzID0gc2VydmVyLmFkZHJlc3MoKTtcbiAgICAgIGlmIChhZGRyZXNzID09PSBudWxsIHx8IHR5cGVvZiBhZGRyZXNzID09PSAnc3RyaW5nJykge1xuICAgICAgICBzZXJ2ZXIuY2xvc2UoKTtcbiAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignRmFpbGVkIHRvIGRldGVybWluZSBhIGZyZWUgcG9ydC4nKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgcG9ydCB9ID0gYWRkcmVzcztcbiAgICAgIHNlcnZlci5jbG9zZSgoKSA9PiB7XG4gICAgICAgIHJlc29sdmUocG9ydCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIHByb21pc2UgdGhhdCByZXNvbHZlcyBhZnRlciB0aGUgZ2l2ZW4gZGVsYXkuXG4gKlxuICogQHBhcmFtIG1zIC0gVGhlIGRlbGF5IGluIG1pbGxpc2Vjb25kcy5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIGFmdGVyIHRoZSBkZWxheS5cbiAqL1xuZnVuY3Rpb24gZGVsYXkobXM6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKTtcbiAgfSk7XG59XG5cbi8qKlxuICogUG9sbHMgdGhlIENEUCBgL2pzb25gIGVuZHBvaW50IHVudGlsIGF0IGxlYXN0IG9uZSBwYWdlIHRhcmdldCBhcHBlYXJzLlxuICpcbiAqIEBwYXJhbSBjZHBVcmwgLSBUaGUgYmFzZSBDRFAgVVJMLlxuICovXG5hc3luYyBmdW5jdGlvbiB3YWl0Rm9yQ2RwUmVhZHkoY2RwVXJsOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgZGVhZGxpbmUgPSBEYXRlLm5vdygpICsgQ0RQX1JFQURZX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTO1xuICB3aGlsZSAoRGF0ZS5ub3coKSA8IGRlYWRsaW5lKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7Y2RwVXJsfS9qc29uYCk7XG4gICAgICBjb25zdCB0YXJnZXRzID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIENkcFRhcmdldFtdO1xuICAgICAgaWYgKHRhcmdldHMuc29tZSgodGFyZ2V0KSA9PiB0YXJnZXQudHlwZSA9PT0gJ3BhZ2UnKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBFbmRwb2ludCBub3QgdXAgeWV0IFx1MjAxNCBrZWVwIHBvbGxpbmcuXG4gICAgfVxuICAgIGF3YWl0IGRlbGF5KENEUF9SRUFEWV9QT0xMX0lOVEVSVkFMX0lOX01JTExJU0VDT05EUyk7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgIGBPd25lZCBPYnNpZGlhbiBpbnN0YW5jZSBkaWQgbm90IGV4cG9zZSBDRFAgYXQgJHtjZHBVcmx9IHdpdGhpbiAke1N0cmluZyhDRFBfUkVBRFlfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMpfW1zLmBcbiAgKTtcbn1cblxuLyogdjggaWdub3JlIHN0b3AgKi9cbiJdLAogICJtYXBwaW5ncyI6ICJBQWNBLFNBQVMsYUFBYTtBQUN0QixTQUFTLG9CQUFvQjtBQUk3QixTQUFTLHVCQUF1QjtBQUNoQyxTQUFTLFdBQVc7QUFDcEI7QUFBQSxFQUNFO0FBQUEs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
130
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuLWluc3RhbmNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogTGF1bmNoZXMgYW5kIG1hbmFnZXMgYSBoYXJuZXNzLW93bmVkLCBpc29sYXRlZCBPYnNpZGlhbiBkZXNrdG9wIGluc3RhbmNlLlxuICpcbiAqIFRoZSBpbnN0YW5jZSBydW5zIGFnYWluc3QgYSBkZWRpY2F0ZWQgYC0tdXNlci1kYXRhLWRpcmAgKHNvIGl0IG5ldmVyIHRvdWNoZXNcbiAqIHRoZSB1c2VyJ3MgT2JzaWRpYW4gY29uZmlnLCByZWdpc3RyeSwgb3IgcnVubmluZyB3aW5kb3cpIGFuZCBleHBvc2VzIENEUCBvbiBhXG4gKiBkZWRpY2F0ZWQgYC0tcmVtb3RlLWRlYnVnZ2luZy1wb3J0YC4gQmVjYXVzZSBFbGVjdHJvbidzIHNpbmdsZS1pbnN0YW5jZSBsb2NrXG4gKiBpcyBrZXllZCB0byB0aGUgdXNlci1kYXRhIGRpciwgdGhlIG93bmVkIGluc3RhbmNlIHJ1bnMgaW4gcGFyYWxsZWwgd2l0aCB0aGVcbiAqIHVzZXIncyBvd24gT2JzaWRpYW4uIENvbmZpcm1lZCBieSB0aGUgUGhhc2UgMCBzcGlrZSAoc2VlIHRoZSBwcm9qZWN0IHBsYW4pLlxuICpcbiAqIFdpbm5pbmcgdGhhdCBsb2NrIGlzIGFsc28gd2h5IGV2ZXJ5IG93bmVkIGluc3RhbmNlIHRha2VzIE9ic2lkaWFuJ3NcbiAqIGZpcnN0LWluc3RhbmNlIHBhdGggYW5kIHRyaWVzIHRvIHNlcnZlIHRoZSBDTEkgb24gYSBwaXBlIHdob3NlIG5hbWUgaXNcbiAqIG1hY2hpbmUtZ2xvYmFsIHBlciB1c2VyLCBhbmQgc28gbG9ncyBgQ0xJIHNlcnZlciBlcnJvcjogLi4uIEVBRERSSU5VU0VgIHdoZW5cbiAqIGFueXRoaW5nIGVsc2UgXHUyMDE0IG5vcm1hbGx5IHRoZSBkZXZlbG9wZXIncyBvd24gT2JzaWRpYW4gXHUyMDE0IGdvdCB0aGVyZSBmaXJzdC4gVGhhdFxuICogbGluZSBpcyBleHBlY3RlZCBvbiBldmVyeSBzdWNoIHJ1biwgbm90IGEgc2lnbiBvZiB0d28gcnVucyBjb250ZW5kaW5nLCBhbmRcbiAqIG5vdGhpbmcgdGhlIGhhcm5lc3MgZG9lcyBnb2VzIHRocm91Z2ggdGhlIHBpcGUuIEFHRU5UUy5tZCBMNTkgaGFzIHRoZVxuICogbWVhc3VyZW1lbnQuXG4gKi9cblxuLyogdjggaWdub3JlIHN0YXJ0IC0tIEludGVncmF0aW9uLXRpbWUgcHJvY2VzcyBtYW5hZ2VtZW50IGNvdmVyZWQgYnkgaW50ZWdyYXRpb24gdGVzdHMsIG5vdCB1bml0IHRlc3RzLiAqL1xuXG5pbXBvcnQgeyBzcGF3biB9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgeyBjcmVhdGVTZXJ2ZXIgfSBmcm9tICdub2RlOm5ldCc7XG5cbmltcG9ydCB0eXBlIHsgUHJvY2Vzc0V4aXRJbmZvIH0gZnJvbSAnLi9wcm9jZXNzLWV4aXQtbWVzc2FnZS5tanMnO1xuXG5pbXBvcnQgeyBraWxsUHJvY2Vzc1RyZWUgfSBmcm9tICcuL2tpbGwtcHJvY2Vzcy10cmVlLm1qcyc7XG5pbXBvcnQgeyBsb2cgfSBmcm9tICcuL2xvZy5tanMnO1xuaW1wb3J0IHtcbiAgY2xlYXJPd25lZEluc3RhbmNlRXhpdE1hcmtlcixcbiAgd3JpdGVPd25lZEluc3RhbmNlRXhpdE1hcmtlclxufSBmcm9tICcuL293bmVkLWluc3RhbmNlLWV4aXQtbWFya2VyLm1qcyc7XG5pbXBvcnQgeyBPd25lZEluc3RhbmNlRXhpdGVkRXJyb3IgfSBmcm9tICcuL293bmVkLWluc3RhbmNlLWV4aXRlZC1lcnJvci5tanMnO1xuaW1wb3J0IHsgc3RhcnRQYXJlbnRMaXZlbmVzc1NlcnZlciB9IGZyb20gJy4vcGFyZW50LWxpdmVuZXNzLm1qcyc7XG5pbXBvcnQgeyBhdHRhY2hQcm9jZXNzQ2FwdHVyZSB9IGZyb20gJy4vcHJvY2Vzcy1jYXB0dXJlLm1qcyc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGxhdW5jaE93bmVkT2JzaWRpYW5JbnN0YW5jZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGF1bmNoT3duZWRPYnNpZGlhbkluc3RhbmNlUGFyYW1zIHtcbiAgLyoqXG4gICAqIENEUCBob3N0IHRvIGJpbmQvcG9sbC5cbiAgICpcbiAgICogQGRlZmF1bHQgYCcxMjcuMC4wLjEnYFxuICAgKi9cbiAgcmVhZG9ubHkgY2RwSG9zdD86IHN0cmluZztcblxuICAvKipcbiAgQWJzb2x1dGUgcGF0aCB0byB0aGUgT2JzaWRpYW4gZXhlY3V0YWJsZSAoc2hlbGwpIHRvIGxhdW5jaC5cbiAgICovXG4gIHJlYWRvbmx5IGV4ZVBhdGg6IHN0cmluZztcblxuICAvKipcbiAgICogRXh0cmEgY29tbWFuZC1saW5lIGFyZ3VtZW50cyBhcHBlbmRlZCBhZnRlciBgLS11c2VyLWRhdGEtZGlyYCBhbmRcbiAgICogYC0tcmVtb3RlLWRlYnVnZ2luZy1wb3J0YCBcdTIwMTQgdXNlZCB0byBwYXNzIHRoZSBrZWVwLWFsaXZlIENocm9taXVtIGZsYWdzIHdoZW5cbiAgICogdGhlIGluc3RhbmNlIGlzIGxhdW5jaGVkIGhpZGRlbiAob2ZmLXNjcmVlbikuIEVtcHR5IGJ5IGRlZmF1bHQuXG4gICAqL1xuICByZWFkb25seSBleHRyYUFyZ3VtZW50cz86IHJlYWRvbmx5IHN0cmluZ1tdO1xuXG4gIC8qKlxuICBBYnNvbHV0ZSBwYXRoIHRvIHRoZSBpc29sYXRlZCB1c2VyLWRhdGEgZGlyIHRvIHBhc3MgdmlhIGAtLXVzZXItZGF0YS1kaXJgLlxuICAgKi9cblxuICByZWFkb25seSB1c2VyRGF0YURpcmVjdG9yeTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgcnVubmluZywgaGFybmVzcy1vd25lZCBPYnNpZGlhbiBpbnN0YW5jZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPd25lZE9ic2lkaWFuSW5zdGFuY2Uge1xuICAvKipcbiAgQmFzZSBDRFAgVVJMLCBlLmcuIGBodHRwOi8vMTI3LjAuMC4xOjUxODg4YC5cbiAgICovXG4gIHJlYWRvbmx5IGNkcFVybDogc3RyaW5nO1xuXG4gIC8qKlxuICBLaWxscyB0aGUgaW5zdGFuY2UgYW5kIGl0cyBlbnRpcmUgcHJvY2VzcyB0cmVlLlxuICAgKi9cbiAga2lsbDogKCkgPT4gdm9pZDtcblxuICAvKipcbiAgICogTG9vcGJhY2sgcG9ydCB0aGUgaW5zdGFuY2UncyByZW5kZXJlciBjb25uZWN0cyBiYWNrIHRvIHNvIGl0IGRlc3Ryb3lzXG4gICAqIGl0c2VsZiBpZiB0aGlzIGhhcm5lc3MgcHJvY2VzcyBkaWVzIHdpdGhvdXQgY2xlYW5pbmcgdXAuIFNlZVxuICAgKiBgcGFyZW50LWxpdmVuZXNzLnRzYCBmb3Igd2h5IHRoZSBwYXJlbnQvY2hpbGQgcmVsYXRpb25zaGlwIGFsb25lIGlzIG5vdFxuICAgKiBlbm91Z2guXG4gICAqL1xuICByZWFkb25seSBwYXJlbnRMaXZlbmVzc1BvcnQ6IG51bWJlcjtcblxuICAvKipcbiAgVGhlIENEUCByZW1vdGUtZGVidWdnaW5nIHBvcnQgdGhlIGluc3RhbmNlIHdhcyBsYXVuY2hlZCB3aXRoLlxuICAgKi9cbiAgcmVhZG9ubHkgcG9ydDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGhvdyB0aGUgaW5zdGFuY2UgZGllZCBvbmNlIGl0IGlzIG5vIGxvbmdlciBydW5uaW5nLCBvdGhlcndpc2VcbiAgICogYHVuZGVmaW5lZGAuIFRoaXMgaXMgdGhlIGluLXByb2Nlc3MgaGFsZiBvZiB0aGUgYW5zd2VyOyBhIHRlc3Qgd29ya2VyIGluXG4gICAqIGFub3RoZXIgcHJvY2VzcyByZWFkcyB0aGUgc2FtZSBmYWN0cyBmcm9tIHRoZSBleGl0IG1hcmtlclxuICAgKiAoYG93bmVkLWluc3RhbmNlLWV4aXQtbWFya2VyLnRzYCkuXG4gICAqL1xuICByZWFkRXhpdEluZm86ICgpID0+IFByb2Nlc3NFeGl0SW5mbyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgUmV0dXJucyB0aGUgdGFpbCBvZiBldmVyeXRoaW5nIHRoZSBpbnN0YW5jZSB3cm90ZSB0byBzdGRvdXQvc3RkZXJyLlxuICAgKi9cbiAgcmVhZE91dHB1dDogKCkgPT4gc3RyaW5nO1xufVxuXG5jb25zdCBERUZBVUxUX0NEUF9IT1NUID0gJzEyNy4wLjAuMSc7XG5jb25zdCBDRFBfUkVBRFlfUE9MTF9JTlRFUlZBTF9JTl9NSUxMSVNFQ09ORFMgPSAxMDAwO1xuY29uc3QgQ0RQX1JFQURZX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTID0gNjBfMDAwO1xuY29uc3QgT0JTSURJQU5fT1VUUFVUX1RBSUxfTUFYX0xFTkdUSCA9IDgwMDA7XG5cbmludGVyZmFjZSBDZHBUYXJnZXQge1xuICB0eXBlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogTGF1bmNoZXMgYW4gaXNvbGF0ZWQsIGhhcm5lc3Mtb3duZWQgT2JzaWRpYW4gaW5zdGFuY2UgYW5kIHdhaXRzIHVudGlsIGl0cyBDRFBcbiAqIGVuZHBvaW50IGlzIHNlcnZpbmcgcGFnZSB0YXJnZXRzLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBMYXVuY2ggcGFyYW1ldGVycy5cbiAqIEByZXR1cm5zIFRoZSBydW5uaW5nIG93bmVkIGluc3RhbmNlLlxuICogQHRocm93cyBFcnJvciBpZiBDRFAgZG9lcyBub3QgYmVjb21lIHJlYWNoYWJsZSB3aXRoaW4gdGhlIHRpbWVvdXQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsYXVuY2hPd25lZE9ic2lkaWFuSW5zdGFuY2UoXG4gIHBhcmFtczogTGF1bmNoT3duZWRPYnNpZGlhbkluc3RhbmNlUGFyYW1zXG4pOiBQcm9taXNlPE93bmVkT2JzaWRpYW5JbnN0YW5jZT4ge1xuICBjb25zdCBjZHBIb3N0ID0gcGFyYW1zLmNkcEhvc3QgPz8gREVGQVVMVF9DRFBfSE9TVDtcbiAgY29uc3QgcG9ydCA9IGF3YWl0IHBpY2tGcmVlUG9ydCgpO1xuICBjb25zdCBjZHBVcmwgPSBgaHR0cDovLyR7Y2RwSG9zdH06JHtTdHJpbmcocG9ydCl9YDtcblxuICAvLyBMaXN0ZW4gQkVGT1JFIHNwYXduaW5nLCBzbyB0aGUgcmVuZGVyZXIgd2F0Y2hkb2cgY2FuIG5ldmVyIHJhY2UgdGhlIHNlcnZlclxuICAvLyBpbnRvIGEgZmFpbGVkIGNvbm5lY3QgKHdoaWNoIGl0IHRyZWF0cyBhcyBcIm5vIHdhdGNoZG9nXCIsIGxlYXZpbmcgdGhlIGluc3RhbmNlIGFsaXZlKS5cbiAgY29uc3QgbGl2ZW5lc3NTZXJ2ZXIgPSBhd2FpdCBzdGFydFBhcmVudExpdmVuZXNzU2VydmVyKCk7XG5cbiAgLy8gUG9ydHMgYXJlIHJlY3ljbGVkIGJ5IHRoZSBPUywgc28gYW4gb2xkZXIgaW5zdGFuY2UncyBkZWF0aCByZWNvcmRlZCBvbiB0aGlzXG4gIC8vIHBvcnQgd291bGQgb3RoZXJ3aXNlIGJlIHJlYWQgYXMgdGhpcyBvbmUncy5cbiAgY2xlYXJPd25lZEluc3RhbmNlRXhpdE1hcmtlcihwb3J0KTtcblxuICBsb2coYFtvYnNpZGlhbi1pbnN0YW5jZV0gTGF1bmNoaW5nIG93bmVkIE9ic2lkaWFuOiB1c2VyRGF0YT0ke3BhcmFtcy51c2VyRGF0YURpcmVjdG9yeX0sIGNkcFBvcnQ9JHtTdHJpbmcocG9ydCl9YCk7XG4gIC8qXG4gICAqIFBpcGVkIHJhdGhlciB0aGFuIGAnaWdub3JlJ2A6IGFuIEVsZWN0cm9uL0Nocm9taXVtIGZhdGFsIGlzIHdyaXR0ZW4gdG9cbiAgICogc3RkZXJyIGFuZCBub3doZXJlIGVsc2UsIGFuZCBkaXNjYXJkaW5nIGl0IGlzIHdoeSBhIGR5aW5nIGluc3RhbmNlIHVzZWQgdG9cbiAgICogYmUgaW5kaXN0aW5ndWlzaGFibGUgZnJvbSBhIGhlYWx0aHkgb25lLiBUaGUgY2FwdHVyZSBkcmFpbnMgYm90aCBwaXBlcyBmb3JcbiAgICogdGhlIHByb2Nlc3MncyB3aG9sZSBsaWZlIChhIGZ1bGwgcGlwZSBidWZmZXIgd291bGQgYmxvY2sgdGhlIGFwcCBpdHNlbGYpIGFuZFxuICAgKiBrZWVwcyBvbmx5IGEgYm91bmRlZCB0YWlsLlxuICAgKi9cbiAgY29uc3QgY2hpbGQgPSBzcGF3bihcbiAgICBwYXJhbXMuZXhlUGF0aCxcbiAgICBbYC0tdXNlci1kYXRhLWRpcj0ke3BhcmFtcy51c2VyRGF0YURpcmVjdG9yeX1gLCBgLS1yZW1vdGUtZGVidWdnaW5nLXBvcnQ9JHtTdHJpbmcocG9ydCl9YCwgLi4uKHBhcmFtcy5leHRyYUFyZ3VtZW50cyA/PyBbXSldLFxuICAgIHsgZGV0YWNoZWQ6IHRydWUsIHN0ZGlvOiBbJ2lnbm9yZScsICdwaXBlJywgJ3BpcGUnXSB9XG4gICk7XG4gIGNvbnN0IGNhcHR1cmUgPSBhdHRhY2hQcm9jZXNzQ2FwdHVyZShjaGlsZCwge1xuICAgIG1heE91dHB1dExlbmd0aEluQ2hhcmFjdGVyczogT0JTSURJQU5fT1VUUFVUX1RBSUxfTUFYX0xFTkdUSCxcbiAgICBvbkNodW5rOiAoY2h1bmspID0+IHtcbiAgICAgIGNvbnN0IHRleHQgPSBjaHVuay50ZXh0LnRyaW1FbmQoKTtcbiAgICAgIGlmICh0ZXh0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgbG9nKGBbb2JzaWRpYW4taW5zdGFuY2U6JHtjaHVuay5zdHJlYW19XSAke3RleHR9YCk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICAvLyBTZXQgYnkgYGtpbGwoKWAsIHNvIGEgZGVhdGggdGhlIGhhcm5lc3Mgb3JkZXJlZCBpcyBuZXZlciByZXBvcnRlZCBhcyBvbmUgaXRcbiAgLy8gc3VmZmVyZWQgXHUyMDE0IGEgbWFya2VyIGxlZnQgYnkgYSBjbGVhbiB0ZWFyZG93biB3b3VsZCBjb252aWN0IHRoZSBuZXh0IHJ1bidzXG4gIC8vIGhlYWx0aHkgaW5zdGFuY2Ugb2YgYW4gZXhpdCB0aGF0IG5ldmVyIGhhcHBlbmVkLlxuICBsZXQgaXNLaWxsRXhwZWN0ZWQgPSBmYWxzZTtcblxuICBjaGlsZC5vbmNlKCdleGl0JywgKGNvZGU6IG51bGwgfCBudW1iZXIsIHNpZ25hbDogTm9kZUpTLlNpZ25hbHMgfCBudWxsKSA9PiB7XG4gICAgaWYgKGlzS2lsbEV4cGVjdGVkKSB7XG4gICAgICBsb2coYFtvYnNpZGlhbi1pbnN0YW5jZV0gT3duZWQgT2JzaWRpYW4gZXhpdGVkIGFzIGFza2VkOiBwaWQ9JHtTdHJpbmcoY2hpbGQucGlkKX0gY29kZT0ke1N0cmluZyhjb2RlKX0gc2lnbmFsPSR7U3RyaW5nKHNpZ25hbCl9YCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTG91ZCBvbiBwdXJwb3NlLiBUaGlzIG9uZSBsaW5lIGlzIHdoYXQgc2VwYXJhdGVzIGEgY2xlYW4gcXVpdCBmcm9tIGFcbiAgICAvLyBjcmFzaCwgYW5kIGl0cyBhYnNlbmNlIG9uY2UgY29zdCBhIGRheSBvZiBndWVzc2luZy5cbiAgICBsb2coYFtvYnNpZGlhbi1pbnN0YW5jZV0gISEhIE9XTkVEIE9CU0lESUFOIEVYSVRFRDogcGlkPSR7U3RyaW5nKGNoaWxkLnBpZCl9IGNvZGU9JHtTdHJpbmcoY29kZSl9IHNpZ25hbD0ke1N0cmluZyhzaWduYWwpfWApO1xuICAgIHdyaXRlT3duZWRJbnN0YW5jZUV4aXRNYXJrZXIoe1xuICAgICAgY29kZSxcbiAgICAgIG91dHB1dFRhaWw6IGNhcHR1cmUucmVhZE91dHB1dCgpLFxuICAgICAgcGlkOiBjaGlsZC5waWQsXG4gICAgICBwb3J0LFxuICAgICAgc2lnbmFsXG4gICAgfSk7XG4gIH0pO1xuXG4gIGNoaWxkLnVucmVmKCk7XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCB3YWl0Rm9yQ2RwUmVhZHkoY2RwVXJsKTtcbiAgICBsb2coYFtvYnNpZGlhbi1pbnN0YW5jZV0gT3duZWQgT2JzaWRpYW4gaXMgc2VydmluZyBDRFAgYXQgJHtjZHBVcmx9LmApO1xuICAgIHJldHVybiB7XG4gICAgICBjZHBVcmwsXG4gICAgICBraWxsLFxuICAgICAgcGFyZW50TGl2ZW5lc3NQb3J0OiBsaXZlbmVzc1NlcnZlci5wb3J0LFxuICAgICAgcG9ydCxcbiAgICAgIHJlYWRFeGl0SW5mbzogKCkgPT4gY2FwdHVyZS5yZWFkRXhpdEluZm8oKSxcbiAgICAgIHJlYWRPdXRwdXQ6ICgpID0+IGNhcHR1cmUucmVhZE91dHB1dCgpXG4gICAgfTtcbiAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAvKlxuICAgICAqIFJlYWQgYmVmb3JlIGtpbGxpbmcsIHNvIHRoZSB2ZXJkaWN0IGlzIHRoZSBpbnN0YW5jZSdzIG93bi4gQSBDRFAgdGltZW91dFxuICAgICAqIHdob3NlIHByb2Nlc3MgaXMgYWxyZWFkeSBnb25lIGlzIG5vdCBhIHNsb3cgYm9vdCBcdTIwMTQgaXQgaXMgYSBib290IHRoYXRcbiAgICAgKiBlbmRlZCBcdTIwMTQgYW5kIHNheWluZyBzbyBiZWF0cyByZXBvcnRpbmcgb25seSB0aGUgYnVkZ2V0IGl0IGJsZXcuXG4gICAgICpcbiAgICAgKiBEZWxpYmVyYXRlbHkgTk9UIGEgZmFzdC1mYWlsIGluc2lkZSB0aGUgcG9sbDogb24gc29tZSBpbnN0YWxscyB0aGVcbiAgICAgKiBsYXVuY2hlZCBleGVjdXRhYmxlIGlzIGEgc2hpbSB0aGF0IGV4aXRzIG9uY2UgaXQgaGFzIGhhbmRlZCBvZmYgdG8gdGhlXG4gICAgICogcmVhbCBhcHAsIHNvIGEgZGVhZCBjaGlsZCBtaWQtcG9sbCBkb2VzIG5vdCBpbXBseSBhIGRlYWQgaW5zdGFuY2UuIE9ubHkgYVxuICAgICAqIGRlYWQgY2hpbGQgdGhhdCBhbHNvIG5ldmVyIHNlcnZlZCBDRFAgZG9lcy5cbiAgICAgKi9cbiAgICBjb25zdCBleGl0SW5mbyA9IGNhcHR1cmUucmVhZEV4aXRJbmZvKCk7XG4gICAga2lsbCgpO1xuICAgIGlmIChleGl0SW5mbykge1xuICAgICAgdGhyb3cgbmV3IE93bmVkSW5zdGFuY2VFeGl0ZWRFcnJvcih7XG4gICAgICAgIGNkcFVybCxcbiAgICAgICAgY29kZTogZXhpdEluZm8uY29kZSxcbiAgICAgICAgb3V0cHV0VGFpbDogY2FwdHVyZS5yZWFkT3V0cHV0KCksXG4gICAgICAgIHBpZDogY2hpbGQucGlkLFxuICAgICAgICBzaWduYWw6IGV4aXRJbmZvLnNpZ25hbCxcbiAgICAgICAgc3Bhd25FcnJvcjogZXhpdEluZm8uc3Bhd25FcnJvclxuICAgICAgfSk7XG4gICAgfVxuICAgIHRocm93IGVycm9yO1xuICB9XG5cbiAgZnVuY3Rpb24ga2lsbCgpOiB2b2lkIHtcbiAgICBpc0tpbGxFeHBlY3RlZCA9IHRydWU7XG4gICAgY2xlYXJPd25lZEluc3RhbmNlRXhpdE1hcmtlcihwb3J0KTtcbiAgICBsaXZlbmVzc1NlcnZlci5jbG9zZSgpO1xuICAgIGtpbGxQcm9jZXNzVHJlZShjaGlsZCk7XG4gIH1cbn1cblxuLyoqXG4gKiBQaWNrcyBhIGZyZWUgVENQIHBvcnQgYnkgYmluZGluZyB0byBwb3J0IGAwYCBhbmQgcmVhZGluZyB0aGUgYXNzaWduZWQgcG9ydC5cbiAqXG4gKiBUaGVyZSBpcyBhIHNtYWxsIHRpbWUtb2YtY2hlY2svdGltZS1vZi11c2Ugd2luZG93IGJldHdlZW4gcmVsZWFzaW5nIHRoZSBwb3J0XG4gKiBoZXJlIGFuZCBPYnNpZGlhbiBiaW5kaW5nIGl0OyBpbiBwcmFjdGljZSBpdCBpcyBuZWdsaWdpYmxlIGZvciB0ZXN0IHJ1bnMuXG4gKlxuICogQHJldHVybnMgQSBmcmVlIFRDUCBwb3J0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGlja0ZyZWVQb3J0KCk6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3Qgc2VydmVyID0gY3JlYXRlU2VydmVyKCk7XG4gICAgc2VydmVyLm9uY2UoJ2Vycm9yJywgcmVqZWN0KTtcbiAgICBzZXJ2ZXIubGlzdGVuKDAsIERFRkFVTFRfQ0RQX0hPU1QsICgpID0+IHtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSBzZXJ2ZXIuYWRkcmVzcygpO1xuICAgICAgaWYgKGFkZHJlc3MgPT09IG51bGwgfHwgdHlwZW9mIGFkZHJlc3MgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHNlcnZlci5jbG9zZSgpO1xuICAgICAgICByZWplY3QobmV3IEVycm9yKCdGYWlsZWQgdG8gZGV0ZXJtaW5lIGEgZnJlZSBwb3J0LicpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgeyBwb3J0IH0gPSBhZGRyZXNzO1xuICAgICAgc2VydmVyLmNsb3NlKCgpID0+IHtcbiAgICAgICAgcmVzb2x2ZShwb3J0KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIGFmdGVyIHRoZSBnaXZlbiBkZWxheS5cbiAqXG4gKiBAcGFyYW0gbXMgLSBUaGUgZGVsYXkgaW4gbWlsbGlzZWNvbmRzLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgYWZ0ZXIgdGhlIGRlbGF5LlxuICovXG5mdW5jdGlvbiBkZWxheShtczogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpO1xuICB9KTtcbn1cblxuLyoqXG4gKiBQb2xscyB0aGUgQ0RQIGAvanNvbmAgZW5kcG9pbnQgdW50aWwgYXQgbGVhc3Qgb25lIHBhZ2UgdGFyZ2V0IGFwcGVhcnMuXG4gKlxuICogQHBhcmFtIGNkcFVybCAtIFRoZSBiYXNlIENEUCBVUkwuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHdhaXRGb3JDZHBSZWFkeShjZHBVcmw6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBkZWFkbGluZSA9IERhdGUubm93KCkgKyBDRFBfUkVBRFlfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFM7XG4gIHdoaWxlIChEYXRlLm5vdygpIDwgZGVhZGxpbmUpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtjZHBVcmx9L2pzb25gKTtcbiAgICAgIGNvbnN0IHRhcmdldHMgPSBhd2FpdCByZXNwb25zZS5qc29uKCkgYXMgQ2RwVGFyZ2V0W107XG4gICAgICBpZiAodGFyZ2V0cy5zb21lKCh0YXJnZXQpID0+IHRhcmdldC50eXBlID09PSAncGFnZScpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIEVuZHBvaW50IG5vdCB1cCB5ZXQgXHUyMDE0IGtlZXAgcG9sbGluZy5cbiAgICB9XG4gICAgYXdhaXQgZGVsYXkoQ0RQX1JFQURZX1BPTExfSU5URVJWQUxfSU5fTUlMTElTRUNPTkRTKTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgYE93bmVkIE9ic2lkaWFuIGluc3RhbmNlIGRpZCBub3QgZXhwb3NlIENEUCBhdCAke2NkcFVybH0gd2l0aGluICR7U3RyaW5nKENEUF9SRUFEWV9USU1FT1VUX0lOX01JTExJU0VDT05EUyl9bXMuYFxuICApO1xufVxuXG4vKiB2OCBpZ25vcmUgc3RvcCAqL1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBc0JBLFNBQVMsYUFBYTtBQUN0QixTQUFTLG9CQUFvQjtBQUk3QixTQUFTLHVCQUF1QjtBQUNoQyxTQUFTLFdBQVc7QUFDcEI7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLGdDQUFnQztBQUN6QyxTQUFTLGlDQUFpQztBQUMxQyxTQUFTLDRCQUE0QjtBQXlFckMsTUFBTSxtQkFBbUI7QUFDekIsTUFBTSwwQ0FBMEM7QUFDaEQsTUFBTSxvQ0FBb0M7QUFDMUMsTUFBTSxrQ0FBa0M7QUFjeEMsZUFBc0IsNEJBQ3BCLFFBQ2dDO0FBQ2hDLFFBQU0sVUFBVSxPQUFPLFdBQVc7QUFDbEMsUUFBTSxPQUFPLE1BQU0sYUFBYTtBQUNoQyxRQUFNLFNBQVMsVUFBVSxPQUFPLElBQUksT0FBTyxJQUFJLENBQUM7QUFJaEQsUUFBTSxpQkFBaUIsTUFBTSwwQkFBMEI7QUFJdkQsK0JBQTZCLElBQUk7QUFFakMsTUFBSSwwREFBMEQsT0FBTyxpQkFBaUIsYUFBYSxPQUFPLElBQUksQ0FBQyxFQUFFO0FBUWpILFFBQU0sUUFBUTtBQUFBLElBQ1osT0FBTztBQUFBLElB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
@@ -57,10 +57,7 @@ function parseMarker(parsed, port) {
57
57
  }
58
58
  const record = parsed;
59
59
  const { code, exitedAtInMilliseconds, outputTail, pid, port: markedPort, signal, spawnError } = record;
60
- if (typeof exitedAtInMilliseconds !== "number" || markedPort !== port) {
61
- return void 0;
62
- }
63
- return {
60
+ return typeof exitedAtInMilliseconds !== "number" || markedPort !== port ? void 0 : {
64
61
  code: typeof code === "number" ? code : null,
65
62
  exitedAtInMilliseconds,
66
63
  outputTail: typeof outputTail === "string" ? outputTail : "",
@@ -75,4 +72,4 @@ export {
75
72
  readOwnedInstanceExitMarker,
76
73
  writeOwnedInstanceExitMarker
77
74
  };
78
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL293bmVkLWluc3RhbmNlLWV4aXQtbWFya2VyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUmVjb3JkcyB0aGF0IHRoZSBoYXJuZXNzLW93bmVkIE9ic2lkaWFuIGluc3RhbmNlIG9uIGEgQ0RQIHBvcnQgZGllZCwgc28gYVxuICogcHJvY2VzcyB0aGF0IGRpZCBub3Qgc3Bhd24gaXQgY2FuIHN0aWxsIHNheSAqKndoeSoqIGl0IGlzIHVucmVhY2hhYmxlLlxuICpcbiAqIE9ubHkgdGhlIHByb2Nlc3MgdGhhdCBsYXVuY2hlZCB0aGUgaW5zdGFuY2UgaG9sZHMgdGhlIGNoaWxkIGhhbmRsZSBhbmQgc2Vlc1xuICogYGV4aXRgOyB0aGUgdGVzdCB3b3JrZXJzIGdldCBub3RoaW5nIGJ1dCB0aGUgcG9ydCAoc2VlIHRoZSByZXBvJ3MgTDkpLiBTbyB0aGVcbiAqIG9uZSBmYWN0IHdvcnRoIGhhdmluZyBcdTIwMTQgdGhlIGV4aXQgY29kZSBcdTIwMTQgaGFzIHRvIGNyb3NzIGEgcHJvY2VzcyBib3VuZGFyeSwgYW5kXG4gKiB0aGlzIGlzIHRoZSBjaGFubmVsOiBhIHNtYWxsIEpTT04gc2VudGluZWwgbmV4dCB0byB0aGUgc2V0dXAgbG9ja1xuICogKGBzZXR1cC1sb2NrLnRzYCkgYW5kIHRoZSBBcHBpdW0gc2VydmVyIG1hcmtlciAoYGFwcGl1bS1zZXJ2ZXItbWFya2VyLnRzYCksXG4gKiBrZXllZCBieSBwb3J0LlxuICpcbiAqIFdyaXR0ZW4gKipvbmx5IGZvciBhIGRlYXRoIHRoZSBoYXJuZXNzIGRpZCBub3Qgb3JkZXIuKiogQSBkZWxpYmVyYXRlIGtpbGxcbiAqICh0ZWFyZG93biwgb3IgdGhlIHJlbGF1bmNoIGxvb3Aga2lsbGluZyBhbiBpbnN0YW5jZSBiZWZvcmUgc3RhcnRpbmcgdGhlIG5leHQpXG4gKiBjbGVhcnMgdGhlIG1hcmtlciBpbnN0ZWFkLCBiZWNhdXNlIGEgbWFya2VyIGxlZnQgYmVoaW5kIGJ5IGEgY2xlYW4gcnVuIHdvdWxkXG4gKiBjb252aWN0IHRoZSBuZXh0IHJ1bidzIGhlYWx0aHkgaW5zdGFuY2Ugb2YgYW4gZXhpdCB0aGF0IG5ldmVyIGhhcHBlbmVkLlxuICpcbiAqIFJlYWRzIGFyZSBkZWxpYmVyYXRlbHkgdG9sZXJhbnQsIGV4YWN0bHkgYXMgdGhlIEFwcGl1bSBtYXJrZXIncyBhcmU6IG1pc3NpbmcsXG4gKiB1bnJlYWRhYmxlLCBvciBkZXNjcmliaW5nIGFub3RoZXIgcG9ydCBhbGwgcmVhZCBhcyBcIm5vIG1hcmtlclwiLCBhbmQgdGhlXG4gKiBjYWxsZXIgZmFsbHMgYmFjayB0byBzYXlpbmcgb25seSB0aGF0IHRoZSBpbnN0YW5jZSBpcyBnb25lLlxuICovXG5cbmltcG9ydCB7XG4gIG1rZGlyU3luYyxcbiAgcmVhZEZpbGVTeW5jLFxuICBybVN5bmMsXG4gIHdyaXRlRmlsZVN5bmNcbn0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgeyB0bXBkaXIgfSBmcm9tICdub2RlOm9zJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnO1xuXG5pbXBvcnQgeyBsb2cgfSBmcm9tICcuL2xvZy5tanMnO1xuXG5jb25zdCBNQVJLRVJfRElSX05BTUUgPSAnb2JzaWRpYW4taW50ZWdyYXRpb24tdGVzdGluZyc7XG5jb25zdCBNQVJLRVJfRklMRV9TVUZGSVggPSAnLm93bmVkLWluc3RhbmNlLWV4aXQuanNvbic7XG5cbi8qKlxuICogUmVjb3JkcyB0aGUgZGVhdGggb2YgdGhlIG93bmVkIGluc3RhbmNlIHRoYXQgd2FzIHNlcnZpbmcgQ0RQIG9uIGEgcG9ydC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPd25lZEluc3RhbmNlRXhpdE1hcmtlciB7XG4gIC8qKlxuICBFeGl0IGNvZGUsIG9yIGBudWxsYCB3aGVuIHRlcm1pbmF0ZWQgYnkgYSBzaWduYWwgb3Igd2hlbiBpdCBmYWlsZWQgdG8gc3Bhd24uXG4gICAqL1xuICByZWFkb25seSBjb2RlOiBudWxsIHwgbnVtYmVyO1xuXG4gIC8qKlxuICBXaGVuIHRoZSBpbnN0YW5jZSBleGl0ZWQgKGBEYXRlLm5vdygpYCBlcG9jaCBtaWxsaXNlY29uZHMpLlxuICAgKi9cbiAgcmVhZG9ubHkgZXhpdGVkQXRJbk1pbGxpc2Vjb25kczogbnVtYmVyO1xuXG4gIC8qKlxuICBUaGUgdGFpbCBvZiBldmVyeXRoaW5nIHRoZSBpbnN0YW5jZSB3cm90ZSB0byBzdGRvdXQvc3RkZXJyIChlbXB0eSB3aGVuIGl0IHdyb3RlIG5vdGhpbmcpLlxuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0VGFpbDogc3RyaW5nO1xuXG4gIC8qKlxuICBQSUQgb2YgdGhlIGluc3RhbmNlJ3MgcHJvY2Vzcywgb3IgYHVuZGVmaW5lZGAgd2hlbiBpdCBuZXZlciBnb3Qgb25lLlxuICAgKi9cbiAgcmVhZG9ubHkgcGlkOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gIFRoZSBDRFAgcG9ydCB0aGUgZGVhZCBpbnN0YW5jZSB3YXMgc2VydmluZy5cbiAgICovXG4gIHJlYWRvbmx5IHBvcnQ6IG51bWJlcjtcblxuICAvKipcbiAgVGVybWluYXRpbmcgc2lnbmFsLCBvciBgbnVsbGAgd2hlbiBpdCBleGl0ZWQgbm9ybWFsbHkgb3IgZmFpbGVkIHRvIHNwYXduLlxuICAgKi9cbiAgcmVhZG9ubHkgc2lnbmFsOiBOb2RlSlMuU2lnbmFscyB8IG51bGw7XG5cbiAgLyoqXG4gIFRoZSBzcGF3bi1mYWlsdXJlIG1lc3NhZ2Ugd2hlbiB0aGUgaW5zdGFuY2UgbmV2ZXIgc3RhcnRlZCAoZS5nLiBgRU5PRU5UYCksIG90aGVyd2lzZSBhYnNlbnQuXG4gICAqL1xuICByZWFkb25seSBzcGF3bkVycm9yPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayB3cml0ZU93bmVkSW5zdGFuY2VFeGl0TWFya2VyfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXcml0ZU93bmVkSW5zdGFuY2VFeGl0TWFya2VyUGFyYW1zIHtcbiAgLyoqXG4gIEV4aXQgY29kZSwgb3IgYG51bGxgIHdoZW4gdGVybWluYXRlZCBieSBhIHNpZ25hbCBvciB3aGVuIGl0IGZhaWxlZCB0byBzcGF3bi5cbiAgICovXG4gIHJlYWRvbmx5IGNvZGU6IG51bGwgfCBudW1iZXI7XG5cbiAgLyoqXG4gIFRoZSB0YWlsIG9mIGV2ZXJ5dGhpbmcgdGhlIGluc3RhbmNlIHdyb3RlIHRvIHN0ZG91dC9zdGRlcnIuXG4gICAqL1xuICByZWFkb25seSBvdXRwdXRUYWlsOiBzdHJpbmc7XG5cbiAgLyoqXG4gIFBJRCBvZiB0aGUgaW5zdGFuY2UncyBwcm9jZXNzLCBvciBgdW5kZWZpbmVkYCB3aGVuIGl0IG5ldmVyIGdvdCBvbmUuXG4gICAqL1xuICByZWFkb25seSBwaWQ6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgVGhlIENEUCBwb3J0IHRoZSBkZWFkIGluc3RhbmNlIHdhcyBzZXJ2aW5nLlxuICAgKi9cbiAgcmVhZG9ubHkgcG9ydDogbnVtYmVyO1xuXG4gIC8qKlxuICBUZXJtaW5hdGluZyBzaWduYWwsIG9yIGBudWxsYCB3aGVuIGl0IGV4aXRlZCBub3JtYWxseSBvciBmYWlsZWQgdG8gc3Bhd24uXG4gICAqL1xuICByZWFkb25seSBzaWduYWw6IE5vZGVKUy5TaWduYWxzIHwgbnVsbDtcblxuICAvKipcbiAgVGhlIHNwYXduLWZhaWx1cmUgbWVzc2FnZSB3aGVuIHRoZSBpbnN0YW5jZSBuZXZlciBzdGFydGVkLCBvdGhlcndpc2UgYWJzZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgc3Bhd25FcnJvcj86IHN0cmluZyB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBSZW1vdmVzIHRoZSBtYXJrZXIgZm9yIGEgcG9ydC4gQ2FsbGVkIHdoZW4gYW4gaW5zdGFuY2UgaXMgbGF1bmNoZWQgb24gaXQgKGFcbiAqIHJlY3ljbGVkIHBvcnQgbXVzdCBub3QgaW5oZXJpdCBhbiBvbGRlciBpbnN0YW5jZSdzIGRlYXRoKSBhbmQgd2hlbmV2ZXIgdGhlXG4gKiBoYXJuZXNzIGtpbGxzIGFuIGluc3RhbmNlIG9uIHB1cnBvc2UuXG4gKlxuICogQHBhcmFtIHBvcnQgLSBUaGUgQ0RQIHBvcnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGVhck93bmVkSW5zdGFuY2VFeGl0TWFya2VyKHBvcnQ6IG51bWJlcik6IHZvaWQge1xuICB0cnkge1xuICAgIHJtU3luYyhnZXRNYXJrZXJGaWxlUGF0aChwb3J0KSwgeyBmb3JjZTogdHJ1ZSB9KTtcbiAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICBsb2coYFtvd25lZC1pbnN0YW5jZS1leGl0LW1hcmtlcl0gQ291bGQgbm90IHJlbW92ZSB0aGUgbWFya2VyIGZvciBwb3J0ICR7U3RyaW5nKHBvcnQpfTogJHtnZXRFcnJvck1lc3NhZ2UoZXJyb3IpfWApO1xuICB9XG59XG5cbi8qKlxuICogUmVhZHMgdGhlIG1hcmtlciBmb3IgYSBwb3J0LlxuICpcbiAqIEBwYXJhbSBwb3J0IC0gVGhlIENEUCBwb3J0LlxuICogQHJldHVybnMgVGhlIG1hcmtlciwgb3IgYHVuZGVmaW5lZGAgd2hlbiB0aGVyZSBpcyBub25lLCBpdCBpcyB1bnJlYWRhYmxlLCBvciBpdCBkb2VzIG5vdCBkZXNjcmliZSB0aGlzIHBvcnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWFkT3duZWRJbnN0YW5jZUV4aXRNYXJrZXIocG9ydDogbnVtYmVyKTogT3duZWRJbnN0YW5jZUV4aXRNYXJrZXIgfCB1bmRlZmluZWQge1xuICBsZXQgcGFyc2VkOiB1bmtub3duO1xuICB0cnkge1xuICAgIHBhcnNlZCA9IEpTT04ucGFyc2UocmVhZEZpbGVTeW5jKGdldE1hcmtlckZpbGVQYXRoKHBvcnQpLCAndXRmLTgnKSk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gcGFyc2VNYXJrZXIocGFyc2VkLCBwb3J0KTtcbn1cblxuLyoqXG4gKiBSZWNvcmRzIHRoYXQgdGhlIGluc3RhbmNlIHNlcnZpbmcgYSBwb3J0IGhhcyBkaWVkLCBzdGFtcGluZyBpdCB3aXRoIHRoZVxuICogY3VycmVudCB0aW1lIHNvIGEgcmVhZGVyIGNhbiByZXBvcnQgaG93IGxvbmcgYWdvIGl0IGhhcHBlbmVkLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgZGVhZCBpbnN0YW5jZSdzIHBvcnQsIGV4aXQgZGV0YWlscywgYW5kIG91dHB1dCB0YWlsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVPd25lZEluc3RhbmNlRXhpdE1hcmtlcihwYXJhbXM6IFdyaXRlT3duZWRJbnN0YW5jZUV4aXRNYXJrZXJQYXJhbXMpOiB2b2lkIHtcbiAgY29uc3QgbWFya2VyOiBPd25lZEluc3RhbmNlRXhpdE1hcmtlciA9IHtcbiAgICBjb2RlOiBwYXJhbXMuY29kZSxcbiAgICBleGl0ZWRBdEluTWlsbGlzZWNvbmRzOiBEYXRlLm5vdygpLFxuICAgIG91dHB1dFRhaWw6IHBhcmFtcy5vdXRwdXRUYWlsLFxuICAgIHBpZDogcGFyYW1zLnBpZCxcbiAgICBwb3J0OiBwYXJhbXMucG9ydCxcbiAgICBzaWduYWw6IHBhcmFtcy5zaWduYWwsXG4gICAgLi4uKHBhcmFtcy5zcGF3bkVycm9yICE9PSB1bmRlZmluZWQgJiYgeyBzcGF3bkVycm9yOiBwYXJhbXMuc3Bhd25FcnJvciB9KVxuICB9O1xuXG4gIHRyeSB7XG4gICAgbWtkaXJTeW5jKGdldE1hcmtlckRpcmVjdG9yeSgpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICB3cml0ZUZpbGVTeW5jKGdldE1hcmtlckZpbGVQYXRoKG1hcmtlci5wb3J0KSwgSlNPTi5zdHJpbmdpZnkobWFya2VyKSk7XG4gIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgbG9nKGBbb3duZWQtaW5zdGFuY2UtZXhpdC1tYXJrZXJdIENvdWxkIG5vdCByZWNvcmQgdGhlIGV4aXQgb24gcG9ydCAke1N0cmluZyhtYXJrZXIucG9ydCl9OiAke2dldEVycm9yTWVzc2FnZShlcnJvcil9YCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0RXJyb3JNZXNzYWdlKGVycm9yOiB1bmtub3duKTogc3RyaW5nIHtcbiAgcmV0dXJuIGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKTtcbn1cblxuZnVuY3Rpb24gZ2V0TWFya2VyRGlyZWN0b3J5KCk6IHN0cmluZyB7XG4gIHJldHVybiBqb2luKHRtcGRpcigpLCBNQVJLRVJfRElSX05BTUUpO1xufVxuXG5mdW5jdGlvbiBnZXRNYXJrZXJGaWxlUGF0aChwb3J0OiBudW1iZXIpOiBzdHJpbmcge1xuICByZXR1cm4gam9pbihnZXRNYXJrZXJEaXJlY3RvcnkoKSwgYCR7U3RyaW5nKHBvcnQpfSR7TUFSS0VSX0ZJTEVfU1VGRklYfWApO1xufVxuXG5mdW5jdGlvbiBwYXJzZU1hcmtlcihwYXJzZWQ6IHVua25vd24sIHBvcnQ6IG51bWJlcik6IE93bmVkSW5zdGFuY2VFeGl0TWFya2VyIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHR5cGVvZiBwYXJzZWQgIT09ICdvYmplY3QnIHx8IHBhcnNlZCA9PT0gbnVsbCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCByZWNvcmQgPSBwYXJzZWQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNvbnN0IHsgY29kZSwgZXhpdGVkQXRJbk1pbGxpc2Vjb25kcywgb3V0cHV0VGFpbCwgcGlkLCBwb3J0OiBtYXJrZWRQb3J0LCBzaWduYWwsIHNwYXduRXJyb3IgfSA9IHJlY29yZDtcblxuICBpZiAodHlwZW9mIGV4aXRlZEF0SW5NaWxsaXNlY29uZHMgIT09ICdudW1iZXInIHx8IG1hcmtlZFBvcnQgIT09IHBvcnQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBjb2RlOiB0eXBlb2YgY29kZSA9PT0gJ251bWJlcicgPyBjb2RlIDogbnVsbCxcbiAgICBleGl0ZWRBdEluTWlsbGlzZWNvbmRzLFxuICAgIG91dHB1dFRhaWw6IHR5cGVvZiBvdXRwdXRUYWlsID09PSAnc3RyaW5nJyA/IG91dHB1dFRhaWwgOiAnJyxcbiAgICBwaWQ6IHR5cGVvZiBwaWQgPT09ICdudW1iZXInID8gcGlkIDogdW5kZWZpbmVkLFxuICAgIHBvcnQsXG4gICAgc2lnbmFsOiB0eXBlb2Ygc2lnbmFsID09PSAnc3RyaW5nJyA/IHNpZ25hbCBhcyBOb2RlSlMuU2lnbmFscyA6IG51bGwsXG4gICAgLi4uKHR5cGVvZiBzcGF3bkVycm9yID09PSAnc3RyaW5nJyAmJiB7IHNwYXduRXJyb3IgfSlcbiAgfTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQXVCQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxjQUFjO0FBQ3ZCLFNBQVMsWUFBWTtBQUVyQixTQUFTLFdBQVc7QUFFcEIsTUFBTSxrQkFBa0I7QUFDeEIsTUFBTSxxQkFBcUI7QUFvRnBCLFNBQVMsNkJBQTZCLE1BQW9CO0FBQy9ELE1BQUk7QUFDRixXQUFPLGtCQUFrQixJQUFJLEdBQUcsRUFBRSxPQUFPLEtBQUssQ0FBQztBQUFBLEVBQ2pELFNBQVMsT0FBZ0I7QUFDdkIsUUFBSSxxRUFBcUUsT0FBTyxJQUFJLENBQUMsS0FBSyxnQkFBZ0IsS0FBSyxDQUFDLEVBQUU7QUFBQSxFQUNwSDtBQUNGO0FBUU8sU0FBUyw0QkFBNEIsTUFBbUQ7QUFDN0YsTUFBSTtBQUNKLE1BQUk7QUFDRixhQUFTLEtBQUssTUFBTSxhQUFhLGtCQUFrQixJQUFJLEdBQUcsT0FBTyxDQUFDO0FBQUEsRUFDcEUsUUFBUTtBQUNOLFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTyxZQUFZLFFBQVEsSUFBSTtBQUNqQztBQVFPLFNBQVMsNkJBQTZCLFFBQWtEO0FBQzdGLFFBQU0sU0FBa0M7QUFBQSxJQUN0QyxNQUFNLE9BQU87QUFBQSxJQUNiLHdCQUF3QixLQUFLLElBQUk7QUFBQSxJQUNqQyxZQUFZLE9BQU87QUFBQSxJQUNuQixLQUFLLE9BQU87QUFBQSxJQUNaLE1BQU0sT0FBTztBQUFBLElBQ2IsUUFBUSxPQUFPO0FBQUEsSUFDZixHQUFJLE9BQU8sZUFBZSxVQUFhLEVBQUUsWUFBWSxPQUFPLFdBQVc7QUFBQSxFQUN6RTtBQUVBLE1BQUk7QUFDRixjQUFVLG1CQUFtQixHQUFHLEVBQUUsV0FBVyxLQUFLLENBQUM7QUFDbkQsa0JBQWMsa0JBQWtCLE9BQU8sSUFBSSxHQUFHLEtBQUssVUFBVSxNQUFNLENBQUM7QUFBQSxFQUN0RSxTQUFTLE9BQWdCO0FBQ3ZCLFFBQUksa0VBQWtFLE9BQU8sT0FBTyxJQUFJLENBQUMsS0FBSyxnQkFBZ0IsS0FBSyxDQUFDLEVBQUU7QUFBQSxFQUN4SDtBQUNGO0FBRUEsU0FBUyxnQkFBZ0IsT0FBd0I7QUFDL0MsU0FBTyxpQkFBaUIsUUFBUSxNQUFNLFVBQVUsT0FBTyxLQUFLO0FBQzlEO0FBRUEsU0FBUyxxQkFBNkI7QUFDcEMsU0FBTyxLQUFLLE9BQU8sR0FBRyxlQUFlO0FBQ3ZDO0FBRUEsU0FBUyxrQkFBa0IsTUFBc0I7QUFDL0MsU0FBTyxLQUFLLG1CQUFtQixHQUFHLEdBQUcsT0FBTyxJQUFJLENBQUMsR0FBRyxrQkFBa0IsRUFBRTtBQUMxRTtBQUVBLFNBQVMsWUFBWSxRQUFpQixNQUFtRDtBQUN2RixNQUFJLE9BQU8sV0FBVyxZQUFZLFdBQVcsTUFBTTtBQUNqRCxXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sU0FBUztBQUNmLFFBQU0sRUFBRSxNQUFNLHdCQUF3QixZQUFZLEtBQUssTUFBTSxZQUFZLFFBQVEsV0FBVyxJQUFJO0FBRWhHLE1BQUksT0FBTywyQkFBMkIsWUFBWSxlQUFlLE1BQU07QUFDckUsV0FBTztBQUFBLEVBQ1Q7QUFFQSxTQUFPO0FBQUEsSUFDTCxNQUFNLE9BQU8sU0FBUyxXQUFXLE9BQU87QUFBQSxJQUN4QztBQUFBLElBQ0EsWUFBWSxPQUFPLGVBQWUsV0FBVyxhQUFhO0FBQUEsSUFDMUQsS0FBSyxPQUFPLFFBQVEsV0FBVyxNQUFNO0FBQUEsSUFDckM7QUFBQSxJQUNBLFFBQVEsT0FBTyxXQUFXLFdBQVcsU0FBMkI7QUFBQSxJQUNoRSxHQUFJLE9BQU8sZUFBZSxZQUFZLEVBQUUsV0FBVztBQUFBLEVBQ3JEO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
75
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL293bmVkLWluc3RhbmNlLWV4aXQtbWFya2VyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUmVjb3JkcyB0aGF0IHRoZSBoYXJuZXNzLW93bmVkIE9ic2lkaWFuIGluc3RhbmNlIG9uIGEgQ0RQIHBvcnQgZGllZCwgc28gYVxuICogcHJvY2VzcyB0aGF0IGRpZCBub3Qgc3Bhd24gaXQgY2FuIHN0aWxsIHNheSAqKndoeSoqIGl0IGlzIHVucmVhY2hhYmxlLlxuICpcbiAqIE9ubHkgdGhlIHByb2Nlc3MgdGhhdCBsYXVuY2hlZCB0aGUgaW5zdGFuY2UgaG9sZHMgdGhlIGNoaWxkIGhhbmRsZSBhbmQgc2Vlc1xuICogYGV4aXRgOyB0aGUgdGVzdCB3b3JrZXJzIGdldCBub3RoaW5nIGJ1dCB0aGUgcG9ydCAoc2VlIHRoZSByZXBvJ3MgTDkpLiBTbyB0aGVcbiAqIG9uZSBmYWN0IHdvcnRoIGhhdmluZyBcdTIwMTQgdGhlIGV4aXQgY29kZSBcdTIwMTQgaGFzIHRvIGNyb3NzIGEgcHJvY2VzcyBib3VuZGFyeSwgYW5kXG4gKiB0aGlzIGlzIHRoZSBjaGFubmVsOiBhIHNtYWxsIEpTT04gc2VudGluZWwgbmV4dCB0byB0aGUgc2V0dXAgbG9ja1xuICogKGBzZXR1cC1sb2NrLnRzYCkgYW5kIHRoZSBBcHBpdW0gc2VydmVyIG1hcmtlciAoYGFwcGl1bS1zZXJ2ZXItbWFya2VyLnRzYCksXG4gKiBrZXllZCBieSBwb3J0LlxuICpcbiAqIFdyaXR0ZW4gKipvbmx5IGZvciBhIGRlYXRoIHRoZSBoYXJuZXNzIGRpZCBub3Qgb3JkZXIuKiogQSBkZWxpYmVyYXRlIGtpbGxcbiAqICh0ZWFyZG93biwgb3IgdGhlIHJlbGF1bmNoIGxvb3Aga2lsbGluZyBhbiBpbnN0YW5jZSBiZWZvcmUgc3RhcnRpbmcgdGhlIG5leHQpXG4gKiBjbGVhcnMgdGhlIG1hcmtlciBpbnN0ZWFkLCBiZWNhdXNlIGEgbWFya2VyIGxlZnQgYmVoaW5kIGJ5IGEgY2xlYW4gcnVuIHdvdWxkXG4gKiBjb252aWN0IHRoZSBuZXh0IHJ1bidzIGhlYWx0aHkgaW5zdGFuY2Ugb2YgYW4gZXhpdCB0aGF0IG5ldmVyIGhhcHBlbmVkLlxuICpcbiAqIFJlYWRzIGFyZSBkZWxpYmVyYXRlbHkgdG9sZXJhbnQsIGV4YWN0bHkgYXMgdGhlIEFwcGl1bSBtYXJrZXIncyBhcmU6IG1pc3NpbmcsXG4gKiB1bnJlYWRhYmxlLCBvciBkZXNjcmliaW5nIGFub3RoZXIgcG9ydCBhbGwgcmVhZCBhcyBcIm5vIG1hcmtlclwiLCBhbmQgdGhlXG4gKiBjYWxsZXIgZmFsbHMgYmFjayB0byBzYXlpbmcgb25seSB0aGF0IHRoZSBpbnN0YW5jZSBpcyBnb25lLlxuICovXG5cbmltcG9ydCB7XG4gIG1rZGlyU3luYyxcbiAgcmVhZEZpbGVTeW5jLFxuICBybVN5bmMsXG4gIHdyaXRlRmlsZVN5bmNcbn0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgeyB0bXBkaXIgfSBmcm9tICdub2RlOm9zJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnO1xuXG5pbXBvcnQgeyBsb2cgfSBmcm9tICcuL2xvZy5tanMnO1xuXG5jb25zdCBNQVJLRVJfRElSX05BTUUgPSAnb2JzaWRpYW4taW50ZWdyYXRpb24tdGVzdGluZyc7XG5jb25zdCBNQVJLRVJfRklMRV9TVUZGSVggPSAnLm93bmVkLWluc3RhbmNlLWV4aXQuanNvbic7XG5cbi8qKlxuICogUmVjb3JkcyB0aGUgZGVhdGggb2YgdGhlIG93bmVkIGluc3RhbmNlIHRoYXQgd2FzIHNlcnZpbmcgQ0RQIG9uIGEgcG9ydC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPd25lZEluc3RhbmNlRXhpdE1hcmtlciB7XG4gIC8qKlxuICBFeGl0IGNvZGUsIG9yIGBudWxsYCB3aGVuIHRlcm1pbmF0ZWQgYnkgYSBzaWduYWwgb3Igd2hlbiBpdCBmYWlsZWQgdG8gc3Bhd24uXG4gICAqL1xuICByZWFkb25seSBjb2RlOiBudWxsIHwgbnVtYmVyO1xuXG4gIC8qKlxuICBXaGVuIHRoZSBpbnN0YW5jZSBleGl0ZWQgKGBEYXRlLm5vdygpYCBlcG9jaCBtaWxsaXNlY29uZHMpLlxuICAgKi9cbiAgcmVhZG9ubHkgZXhpdGVkQXRJbk1pbGxpc2Vjb25kczogbnVtYmVyO1xuXG4gIC8qKlxuICBUaGUgdGFpbCBvZiBldmVyeXRoaW5nIHRoZSBpbnN0YW5jZSB3cm90ZSB0byBzdGRvdXQvc3RkZXJyIChlbXB0eSB3aGVuIGl0IHdyb3RlIG5vdGhpbmcpLlxuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0VGFpbDogc3RyaW5nO1xuXG4gIC8qKlxuICBQSUQgb2YgdGhlIGluc3RhbmNlJ3MgcHJvY2Vzcywgb3IgYHVuZGVmaW5lZGAgd2hlbiBpdCBuZXZlciBnb3Qgb25lLlxuICAgKi9cbiAgcmVhZG9ubHkgcGlkOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gIFRoZSBDRFAgcG9ydCB0aGUgZGVhZCBpbnN0YW5jZSB3YXMgc2VydmluZy5cbiAgICovXG4gIHJlYWRvbmx5IHBvcnQ6IG51bWJlcjtcblxuICAvKipcbiAgVGVybWluYXRpbmcgc2lnbmFsLCBvciBgbnVsbGAgd2hlbiBpdCBleGl0ZWQgbm9ybWFsbHkgb3IgZmFpbGVkIHRvIHNwYXduLlxuICAgKi9cbiAgcmVhZG9ubHkgc2lnbmFsOiBOb2RlSlMuU2lnbmFscyB8IG51bGw7XG5cbiAgLyoqXG4gIFRoZSBzcGF3bi1mYWlsdXJlIG1lc3NhZ2Ugd2hlbiB0aGUgaW5zdGFuY2UgbmV2ZXIgc3RhcnRlZCAoZS5nLiBgRU5PRU5UYCksIG90aGVyd2lzZSBhYnNlbnQuXG4gICAqL1xuICByZWFkb25seSBzcGF3bkVycm9yPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayB3cml0ZU93bmVkSW5zdGFuY2VFeGl0TWFya2VyfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXcml0ZU93bmVkSW5zdGFuY2VFeGl0TWFya2VyUGFyYW1zIHtcbiAgLyoqXG4gIEV4aXQgY29kZSwgb3IgYG51bGxgIHdoZW4gdGVybWluYXRlZCBieSBhIHNpZ25hbCBvciB3aGVuIGl0IGZhaWxlZCB0byBzcGF3bi5cbiAgICovXG4gIHJlYWRvbmx5IGNvZGU6IG51bGwgfCBudW1iZXI7XG5cbiAgLyoqXG4gIFRoZSB0YWlsIG9mIGV2ZXJ5dGhpbmcgdGhlIGluc3RhbmNlIHdyb3RlIHRvIHN0ZG91dC9zdGRlcnIuXG4gICAqL1xuICByZWFkb25seSBvdXRwdXRUYWlsOiBzdHJpbmc7XG5cbiAgLyoqXG4gIFBJRCBvZiB0aGUgaW5zdGFuY2UncyBwcm9jZXNzLCBvciBgdW5kZWZpbmVkYCB3aGVuIGl0IG5ldmVyIGdvdCBvbmUuXG4gICAqL1xuICByZWFkb25seSBwaWQ6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgVGhlIENEUCBwb3J0IHRoZSBkZWFkIGluc3RhbmNlIHdhcyBzZXJ2aW5nLlxuICAgKi9cbiAgcmVhZG9ubHkgcG9ydDogbnVtYmVyO1xuXG4gIC8qKlxuICBUZXJtaW5hdGluZyBzaWduYWwsIG9yIGBudWxsYCB3aGVuIGl0IGV4aXRlZCBub3JtYWxseSBvciBmYWlsZWQgdG8gc3Bhd24uXG4gICAqL1xuICByZWFkb25seSBzaWduYWw6IE5vZGVKUy5TaWduYWxzIHwgbnVsbDtcblxuICAvKipcbiAgVGhlIHNwYXduLWZhaWx1cmUgbWVzc2FnZSB3aGVuIHRoZSBpbnN0YW5jZSBuZXZlciBzdGFydGVkLCBvdGhlcndpc2UgYWJzZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgc3Bhd25FcnJvcj86IHN0cmluZyB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBSZW1vdmVzIHRoZSBtYXJrZXIgZm9yIGEgcG9ydC4gQ2FsbGVkIHdoZW4gYW4gaW5zdGFuY2UgaXMgbGF1bmNoZWQgb24gaXQgKGFcbiAqIHJlY3ljbGVkIHBvcnQgbXVzdCBub3QgaW5oZXJpdCBhbiBvbGRlciBpbnN0YW5jZSdzIGRlYXRoKSBhbmQgd2hlbmV2ZXIgdGhlXG4gKiBoYXJuZXNzIGtpbGxzIGFuIGluc3RhbmNlIG9uIHB1cnBvc2UuXG4gKlxuICogQHBhcmFtIHBvcnQgLSBUaGUgQ0RQIHBvcnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGVhck93bmVkSW5zdGFuY2VFeGl0TWFya2VyKHBvcnQ6IG51bWJlcik6IHZvaWQge1xuICB0cnkge1xuICAgIHJtU3luYyhnZXRNYXJrZXJGaWxlUGF0aChwb3J0KSwgeyBmb3JjZTogdHJ1ZSB9KTtcbiAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICBsb2coYFtvd25lZC1pbnN0YW5jZS1leGl0LW1hcmtlcl0gQ291bGQgbm90IHJlbW92ZSB0aGUgbWFya2VyIGZvciBwb3J0ICR7U3RyaW5nKHBvcnQpfTogJHtnZXRFcnJvck1lc3NhZ2UoZXJyb3IpfWApO1xuICB9XG59XG5cbi8qKlxuICogUmVhZHMgdGhlIG1hcmtlciBmb3IgYSBwb3J0LlxuICpcbiAqIEBwYXJhbSBwb3J0IC0gVGhlIENEUCBwb3J0LlxuICogQHJldHVybnMgVGhlIG1hcmtlciwgb3IgYHVuZGVmaW5lZGAgd2hlbiB0aGVyZSBpcyBub25lLCBpdCBpcyB1bnJlYWRhYmxlLCBvciBpdCBkb2VzIG5vdCBkZXNjcmliZSB0aGlzIHBvcnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWFkT3duZWRJbnN0YW5jZUV4aXRNYXJrZXIocG9ydDogbnVtYmVyKTogT3duZWRJbnN0YW5jZUV4aXRNYXJrZXIgfCB1bmRlZmluZWQge1xuICBsZXQgcGFyc2VkOiB1bmtub3duO1xuICB0cnkge1xuICAgIHBhcnNlZCA9IEpTT04ucGFyc2UocmVhZEZpbGVTeW5jKGdldE1hcmtlckZpbGVQYXRoKHBvcnQpLCAndXRmLTgnKSk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gcGFyc2VNYXJrZXIocGFyc2VkLCBwb3J0KTtcbn1cblxuLyoqXG4gKiBSZWNvcmRzIHRoYXQgdGhlIGluc3RhbmNlIHNlcnZpbmcgYSBwb3J0IGhhcyBkaWVkLCBzdGFtcGluZyBpdCB3aXRoIHRoZVxuICogY3VycmVudCB0aW1lIHNvIGEgcmVhZGVyIGNhbiByZXBvcnQgaG93IGxvbmcgYWdvIGl0IGhhcHBlbmVkLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgZGVhZCBpbnN0YW5jZSdzIHBvcnQsIGV4aXQgZGV0YWlscywgYW5kIG91dHB1dCB0YWlsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVPd25lZEluc3RhbmNlRXhpdE1hcmtlcihwYXJhbXM6IFdyaXRlT3duZWRJbnN0YW5jZUV4aXRNYXJrZXJQYXJhbXMpOiB2b2lkIHtcbiAgY29uc3QgbWFya2VyOiBPd25lZEluc3RhbmNlRXhpdE1hcmtlciA9IHtcbiAgICBjb2RlOiBwYXJhbXMuY29kZSxcbiAgICBleGl0ZWRBdEluTWlsbGlzZWNvbmRzOiBEYXRlLm5vdygpLFxuICAgIG91dHB1dFRhaWw6IHBhcmFtcy5vdXRwdXRUYWlsLFxuICAgIHBpZDogcGFyYW1zLnBpZCxcbiAgICBwb3J0OiBwYXJhbXMucG9ydCxcbiAgICBzaWduYWw6IHBhcmFtcy5zaWduYWwsXG4gICAgLi4uKHBhcmFtcy5zcGF3bkVycm9yICE9PSB1bmRlZmluZWQgJiYgeyBzcGF3bkVycm9yOiBwYXJhbXMuc3Bhd25FcnJvciB9KVxuICB9O1xuXG4gIHRyeSB7XG4gICAgbWtkaXJTeW5jKGdldE1hcmtlckRpcmVjdG9yeSgpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICB3cml0ZUZpbGVTeW5jKGdldE1hcmtlckZpbGVQYXRoKG1hcmtlci5wb3J0KSwgSlNPTi5zdHJpbmdpZnkobWFya2VyKSk7XG4gIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgbG9nKGBbb3duZWQtaW5zdGFuY2UtZXhpdC1tYXJrZXJdIENvdWxkIG5vdCByZWNvcmQgdGhlIGV4aXQgb24gcG9ydCAke1N0cmluZyhtYXJrZXIucG9ydCl9OiAke2dldEVycm9yTWVzc2FnZShlcnJvcil9YCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0RXJyb3JNZXNzYWdlKGVycm9yOiB1bmtub3duKTogc3RyaW5nIHtcbiAgcmV0dXJuIGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKTtcbn1cblxuZnVuY3Rpb24gZ2V0TWFya2VyRGlyZWN0b3J5KCk6IHN0cmluZyB7XG4gIHJldHVybiBqb2luKHRtcGRpcigpLCBNQVJLRVJfRElSX05BTUUpO1xufVxuXG5mdW5jdGlvbiBnZXRNYXJrZXJGaWxlUGF0aChwb3J0OiBudW1iZXIpOiBzdHJpbmcge1xuICByZXR1cm4gam9pbihnZXRNYXJrZXJEaXJlY3RvcnkoKSwgYCR7U3RyaW5nKHBvcnQpfSR7TUFSS0VSX0ZJTEVfU1VGRklYfWApO1xufVxuXG5mdW5jdGlvbiBwYXJzZU1hcmtlcihwYXJzZWQ6IHVua25vd24sIHBvcnQ6IG51bWJlcik6IE93bmVkSW5zdGFuY2VFeGl0TWFya2VyIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHR5cGVvZiBwYXJzZWQgIT09ICdvYmplY3QnIHx8IHBhcnNlZCA9PT0gbnVsbCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCByZWNvcmQgPSBwYXJzZWQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNvbnN0IHsgY29kZSwgZXhpdGVkQXRJbk1pbGxpc2Vjb25kcywgb3V0cHV0VGFpbCwgcGlkLCBwb3J0OiBtYXJrZWRQb3J0LCBzaWduYWwsIHNwYXduRXJyb3IgfSA9IHJlY29yZDtcblxuICByZXR1cm4gdHlwZW9mIGV4aXRlZEF0SW5NaWxsaXNlY29uZHMgIT09ICdudW1iZXInIHx8IG1hcmtlZFBvcnQgIT09IHBvcnRcbiAgICA/IHVuZGVmaW5lZFxuICAgIDoge1xuICAgICAgY29kZTogdHlwZW9mIGNvZGUgPT09ICdudW1iZXInID8gY29kZSA6IG51bGwsXG4gICAgICBleGl0ZWRBdEluTWlsbGlzZWNvbmRzLFxuICAgICAgb3V0cHV0VGFpbDogdHlwZW9mIG91dHB1dFRhaWwgPT09ICdzdHJpbmcnID8gb3V0cHV0VGFpbCA6ICcnLFxuICAgICAgcGlkOiB0eXBlb2YgcGlkID09PSAnbnVtYmVyJyA/IHBpZCA6IHVuZGVmaW5lZCxcbiAgICAgIHBvcnQsXG4gICAgICBzaWduYWw6IHR5cGVvZiBzaWduYWwgPT09ICdzdHJpbmcnID8gc2lnbmFsIGFzIE5vZGVKUy5TaWduYWxzIDogbnVsbCxcbiAgICAgIC4uLih0eXBlb2Ygc3Bhd25FcnJvciA9PT0gJ3N0cmluZycgJiYgeyBzcGF3bkVycm9yIH0pXG4gICAgfTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQXVCQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxjQUFjO0FBQ3ZCLFNBQVMsWUFBWTtBQUVyQixTQUFTLFdBQVc7QUFFcEIsTUFBTSxrQkFBa0I7QUFDeEIsTUFBTSxxQkFBcUI7QUFvRnBCLFNBQVMsNkJBQTZCLE1BQW9CO0FBQy9ELE1BQUk7QUFDRixXQUFPLGtCQUFrQixJQUFJLEdBQUcsRUFBRSxPQUFPLEtBQUssQ0FBQztBQUFBLEVBQ2pELFNBQVMsT0FBZ0I7QUFDdkIsUUFBSSxxRUFBcUUsT0FBTyxJQUFJLENBQUMsS0FBSyxnQkFBZ0IsS0FBSyxDQUFDLEVBQUU7QUFBQSxFQUNwSDtBQUNGO0FBUU8sU0FBUyw0QkFBNEIsTUFBbUQ7QUFDN0YsTUFBSTtBQUNKLE1BQUk7QUFDRixhQUFTLEtBQUssTUFBTSxhQUFhLGtCQUFrQixJQUFJLEdBQUcsT0FBTyxDQUFDO0FBQUEsRUFDcEUsUUFBUTtBQUNOLFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTyxZQUFZLFFBQVEsSUFBSTtBQUNqQztBQVFPLFNBQVMsNkJBQTZCLFFBQWtEO0FBQzdGLFFBQU0sU0FBa0M7QUFBQSxJQUN0QyxNQUFNLE9BQU87QUFBQSxJQUNiLHdCQUF3QixLQUFLLElBQUk7QUFBQSxJQUNqQyxZQUFZLE9BQU87QUFBQSxJQUNuQixLQUFLLE9BQU87QUFBQSxJQUNaLE1BQU0sT0FBTztBQUFBLElBQ2IsUUFBUSxPQUFPO0FBQUEsSUFDZixHQUFJLE9BQU8sZUFBZSxVQUFhLEVBQUUsWUFBWSxPQUFPLFdBQVc7QUFBQSxFQUN6RTtBQUVBLE1BQUk7QUFDRixjQUFVLG1CQUFtQixHQUFHLEVBQUUsV0FBVyxLQUFLLENBQUM7QUFDbkQsa0JBQWMsa0JBQWtCLE9BQU8sSUFBSSxHQUFHLEtBQUssVUFBVSxNQUFNLENBQUM7QUFBQSxFQUN0RSxTQUFTLE9BQWdCO0FBQ3ZCLFFBQUksa0VBQWtFLE9BQU8sT0FBTyxJQUFJLENBQUMsS0FBSyxnQkFBZ0IsS0FBSyxDQUFDLEVBQUU7QUFBQSxFQUN4SDtBQUNGO0FBRUEsU0FBUyxnQkFBZ0IsT0FBd0I7QUFDL0MsU0FBTyxpQkFBaUIsUUFBUSxNQUFNLFVBQVUsT0FBTyxLQUFLO0FBQzlEO0FBRUEsU0FBUyxxQkFBNkI7QUFDcEMsU0FBTyxLQUFLLE9BQU8sR0FBRyxlQUFlO0FBQ3ZDO0FBRUEsU0FBUyxrQkFBa0IsTUFBc0I7QUFDL0MsU0FBTyxLQUFLLG1CQUFtQixHQUFHLEdBQUcsT0FBTyxJQUFJLENBQUMsR0FBRyxrQkFBa0IsRUFBRTtBQUMxRTtBQUVBLFNBQVMsWUFBWSxRQUFpQixNQUFtRDtBQUN2RixNQUFJLE9BQU8sV0FBVyxZQUFZLFdBQVcsTUFBTTtBQUNqRCxXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sU0FBUztBQUNmLFFBQU0sRUFBRSxNQUFNLHdCQUF3QixZQUFZLEtBQUssTUFBTSxZQUFZLFFBQVEsV0FBVyxJQUFJO0FBRWhHLFNBQU8sT0FBTywyQkFBMkIsWUFBWSxlQUFlLE9BQ2hFLFNBQ0E7QUFBQSxJQUNBLE1BQU0sT0FBTyxTQUFTLFdBQVcsT0FBTztBQUFBLElBQ3hDO0FBQUEsSUFDQSxZQUFZLE9BQU8sZUFBZSxXQUFXLGFBQWE7QUFBQSxJQUMxRCxLQUFLLE9BQU8sUUFBUSxXQUFXLE1BQU07QUFBQSxJQUNyQztBQUFBLElBQ0EsUUFBUSxPQUFPLFdBQVcsV0FBVyxTQUEyQjtBQUFBLElBQ2hFLEdBQUksT0FBTyxlQUFlLFlBQVksRUFBRSxXQUFXO0FBQUEsRUFDckQ7QUFDSjsiLAogICJuYW1lcyI6IFtdCn0K
@@ -32,18 +32,17 @@ class OwnedInstanceExitedError extends Error {
32
32
  }
33
33
  }
34
34
  function buildOwnedInstanceExitedErrorFromMarker(cdpUrl, marker) {
35
- if (!marker) {
36
- return new OwnedInstanceExitedError({ cdpUrl });
37
- }
38
- return new OwnedInstanceExitedError({
39
- cdpUrl,
40
- code: marker.code,
41
- exitedAtInMilliseconds: marker.exitedAtInMilliseconds,
42
- outputTail: marker.outputTail,
43
- pid: marker.pid,
44
- signal: marker.signal,
45
- spawnError: marker.spawnError
46
- });
35
+ return new OwnedInstanceExitedError(
36
+ marker ? {
37
+ cdpUrl,
38
+ code: marker.code,
39
+ exitedAtInMilliseconds: marker.exitedAtInMilliseconds,
40
+ outputTail: marker.outputTail,
41
+ pid: marker.pid,
42
+ signal: marker.signal,
43
+ spawnError: marker.spawnError
44
+ } : { cdpUrl }
45
+ );
47
46
  }
48
47
  function buildMessage(params) {
49
48
  const message = `The harness-owned Obsidian instance at ${params.cdpUrl} is gone: ${describeExit(params)}. Whatever ran after it had no app to talk to, so these failures are not test results \u2014 look for the \`!!! OWNED OBSIDIAN EXITED\` line in the run log for the moment it happened.`;
@@ -53,10 +52,7 @@ function describeExit(params) {
53
52
  if (params.spawnError !== void 0) {
54
53
  return `it failed to start (${params.spawnError})`;
55
54
  }
56
- if (params.code === void 0 && params.signal === void 0) {
57
- return "it exited at some point during this run, and the harness recorded nothing about how (the run that owns it logs the exit code; a worker sees only what the exit marker preserved)";
58
- }
59
- return `${describeProcess(params)} ${describeReason(params)}${describeWhen(params.exitedAtInMilliseconds)}`;
55
+ return params.code === void 0 && params.signal === void 0 ? "it exited at some point during this run, and the harness recorded nothing about how (the run that owns it logs the exit code; a worker sees only what the exit marker preserved)" : `${describeProcess(params)} ${describeReason(params)}${describeWhen(params.exitedAtInMilliseconds)}`;
60
56
  }
61
57
  function describeProcess(params) {
62
58
  return params.pid === void 0 ? "it" : `its process (pid ${String(params.pid)})`;
@@ -78,4 +74,4 @@ export {
78
74
  OwnedInstanceExitedError,
79
75
  buildOwnedInstanceExitedErrorFromMarker
80
76
  };
81
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL293bmVkLWluc3RhbmNlLWV4aXRlZC1lcnJvci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoZSBkaXN0aW5jdCBlcnJvciB0aHJvd24gd2hlbiB0aGUgaGFybmVzcy1vd25lZCBPYnNpZGlhbiBpbnN0YW5jZSBpcyBnb25lIFx1MjAxNFxuICogaXQgZXhpdGVkLCBhbmQgdGhlIENEUCBlbmRwb2ludCBpdCB3YXMgc2VydmluZyBhbnN3ZXJzIG5vdGhpbmcuXG4gKlxuICogSXQgZXhpc3RzIHRvIHJlcGxhY2UgYW4gYW5vbnltb3VzIGNhc2NhZGUgd2l0aCBvbmUgbmFtZWQgY2F1c2UuIEJlZm9yZSBpdCxcbiAqIGV2ZXJ5IHRlc3QgZmlsZSBzY2hlZHVsZWQgYWZ0ZXIgYSBtaWQtcnVuIGRlYXRoIGZhaWxlZCBpbiB+NjBcdTIwMTM5MCBtcyB3aXRoXG4gKiBgVHlwZUVycm9yOiBmZXRjaCBmYWlsZWRgIHdyYXBwaW5nIGBjb25uZWN0IEVDT05OUkVGVVNFRCAxMjcuMC4wLjE6PHBvcnQ+YCBcdTIwMTRcbiAqIG1lYXN1cmVkIGF0ICoqMTU2IHN1Y2ggZmFpbHVyZXMgYWNyb3NzIDIxIGZpbGVzKiogaW4gYG9ic2lkaWFuLXBhdHRlcm5zYCBvblxuICogMjAyNi0wOS0wNSwgbm90IG9uZSBvZiB0aGVtIGEgdGVzdCByZXN1bHQuIFRoZSBhYnNlbmNlIG9mIGFuIGFwcCBpcyBub3QgYSB0ZXN0XG4gKiBvdXRjb21lLCBhbmQgdGhpcyBlcnJvciBzYXlzIHNvIGluIHRoZSB3b3JkcyBhIHJlYWRlciBuZWVkczogdGhlIGluc3RhbmNlXG4gKiBkaWVkLCBoZXJlIGlzIGl0cyBleGl0IGNvZGUsIGFuZCB0aGVzZSBmYWlsdXJlcyBhcmUgbm90IGFib3V0IHlvdXIgY29kZS5cbiAqXG4gKiBFeHBvcnRlZCBzbyBjYWxsZXJzIGNhbiBgaW5zdGFuY2VvZmAtbWF0Y2ggaXQsIGxpa2UgYFNpbGVudEFzYXJGYWxsYmFja0Vycm9yYFxuICogYW5kIGBSZW5kZXJlckZhaWxlZFRvSW5pdGlhbGl6ZUVycm9yYC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IE93bmVkSW5zdGFuY2VFeGl0TWFya2VyIH0gZnJvbSAnLi9vd25lZC1pbnN0YW5jZS1leGl0LW1hcmtlci5tanMnO1xuXG5pbXBvcnQgeyBhcHBlbmRQcm9jZXNzT3V0cHV0VGFpbCB9IGZyb20gJy4vcHJvY2Vzcy1leGl0LW1lc3NhZ2UubWpzJztcblxuY29uc3QgTUlMTElTRUNPTkRTX1BFUl9TRUNPTkQgPSAxMDAwO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHRoZSB7QGxpbmsgT3duZWRJbnN0YW5jZUV4aXRlZEVycm9yfSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBFdmVyeXRoaW5nIGJ1dCB0aGUgVVJMIGlzIG9wdGlvbmFsOiB0aGUgZXhpdCBkZXRhaWxzIGNvbWUgZnJvbSB0aGUgcHJvY2Vzc1xuICogdGhhdCBsYXVuY2hlZCB0aGUgaW5zdGFuY2UsIGFuZCBhIGNhbGxlciBpbiBhbm90aGVyIHByb2Nlc3MgaGFzIHRoZW0gb25seVxuICogd2hlbiB0aGUgZXhpdCBtYXJrZXIgc3Vydml2ZWQgKHNlZSBgb3duZWQtaW5zdGFuY2UtZXhpdC1tYXJrZXIudHNgKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPd25lZEluc3RhbmNlRXhpdGVkRXJyb3JDb25zdHJ1Y3RvclBhcmFtcyB7XG4gIC8qKlxuICBUaGUgQ0RQIFVSTCB0aGUgZGVhZCBpbnN0YW5jZSB3YXMgc2VydmluZy5cbiAgICovXG4gIHJlYWRvbmx5IGNkcFVybDogc3RyaW5nO1xuXG4gIC8qKlxuICBFeGl0IGNvZGUsIHdoZW4ga25vd24uXG4gICAqL1xuICByZWFkb25seSBjb2RlPzogbnVsbCB8IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgV2hlbiB0aGUgaW5zdGFuY2UgZXhpdGVkIChgRGF0ZS5ub3coKWAgZXBvY2ggbWlsbGlzZWNvbmRzKSwgd2hlbiBrbm93bi5cbiAgICovXG4gIHJlYWRvbmx5IGV4aXRlZEF0SW5NaWxsaXNlY29uZHM/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gIFRoZSB0YWlsIG9mIHdoYXQgdGhlIGluc3RhbmNlIHdyb3RlIHRvIHN0ZG91dC9zdGRlcnIsIHdoZW4gYW55IHdhcyBjYXB0dXJlZC5cbiAgICovXG4gIHJlYWRvbmx5IG91dHB1dFRhaWw/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gIFBJRCBvZiB0aGUgZGVhZCBpbnN0YW5jZSwgd2hlbiBrbm93bi5cbiAgICovXG4gIHJlYWRvbmx5IHBpZD86IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgVGVybWluYXRpbmcgc2lnbmFsLCB3aGVuIGtub3duLlxuICAgKi9cbiAgcmVhZG9ubHkgc2lnbmFsPzogTm9kZUpTLlNpZ25hbHMgfCBudWxsIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICBUaGUgc3Bhd24tZmFpbHVyZSBtZXNzYWdlIHdoZW4gdGhlIGluc3RhbmNlIG5ldmVyIHN0YXJ0ZWQsIG90aGVyd2lzZSBhYnNlbnQuXG4gICAqL1xuICByZWFkb25seSBzcGF3bkVycm9yPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFRocm93biB3aGVuIHRoZSBoYXJuZXNzLW93bmVkIE9ic2lkaWFuIGluc3RhbmNlIGhhcyBleGl0ZWQgYW5kIGl0cyBDRFBcbiAqIGVuZHBvaW50IGlzIHRoZXJlZm9yZSB1bnJlYWNoYWJsZS4gQ2FycmllcyB3aGF0ZXZlciBpcyBrbm93biBhYm91dCB0aGUgZGVhdGhcbiAqIFx1MjAxNCBleGl0IGNvZGUsIHNpZ25hbCwgd2hlbiBpdCBoYXBwZW5lZCwgYW5kIHRoZSBvdXRwdXQgdGFpbCBcdTIwMTQgc28gdGhlIGZhaWx1cmVcbiAqIG5hbWVzIGl0cyBvd24gY2F1c2UgaW5zdGVhZCBvZiBhIHJlZnVzZWQgY29ubmVjdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIE93bmVkSW5zdGFuY2VFeGl0ZWRFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgLyoqXG4gIFRoZSBDRFAgVVJMIHRoZSBkZWFkIGluc3RhbmNlIHdhcyBzZXJ2aW5nLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNkcFVybDogc3RyaW5nO1xuXG4gIC8qKlxuICBFeGl0IGNvZGUsIHdoZW4ga25vd24uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY29kZTogbnVsbCB8IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgV2hlbiB0aGUgaW5zdGFuY2UgZXhpdGVkIChgRGF0ZS5ub3coKWAgZXBvY2ggbWlsbGlzZWNvbmRzKSwgd2hlbiBrbm93bi5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBleGl0ZWRBdEluTWlsbGlzZWNvbmRzOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gIFRlcm1pbmF0aW5nIHNpZ25hbCwgd2hlbiBrbm93bi5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzaWduYWw6IE5vZGVKUy5TaWduYWxzIHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgZXJyb3IgZnJvbSB3aGF0ZXZlciBpcyBrbm93biBhYm91dCB0aGUgaW5zdGFuY2UncyBkZWF0aC5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBDRFAgVVJMLCBhbmQgdGhlIGV4aXQgZGV0YWlscyB3aGVuIHRoZXkgYXJlIGF2YWlsYWJsZS5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM6IE93bmVkSW5zdGFuY2VFeGl0ZWRFcnJvckNvbnN0cnVjdG9yUGFyYW1zKSB7XG4gICAgc3VwZXIoYnVpbGRNZXNzYWdlKHBhcmFtcykpO1xuICAgIHRoaXMubmFtZSA9ICdPd25lZEluc3RhbmNlRXhpdGVkRXJyb3InO1xuICAgIHRoaXMuY2RwVXJsID0gcGFyYW1zLmNkcFVybDtcbiAgICB0aGlzLmNvZGUgPSBwYXJhbXMuY29kZTtcbiAgICB0aGlzLmV4aXRlZEF0SW5NaWxsaXNlY29uZHMgPSBwYXJhbXMuZXhpdGVkQXRJbk1pbGxpc2Vjb25kcztcbiAgICB0aGlzLnNpZ25hbCA9IHBhcmFtcy5zaWduYWw7XG4gIH1cbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIGVycm9yIGZyb20gYW4gZXhpdCBtYXJrZXIsIGZvciBhIHByb2Nlc3MgdGhhdCBkaWQgbm90IGxhdW5jaCB0aGVcbiAqIGluc3RhbmNlIGFuZCBzbyBoYXMgbm90aGluZyBlbHNlIHRvIGdvIG9uLlxuICpcbiAqIEEgbWlzc2luZyBtYXJrZXIgaXMgZXhwZWN0ZWQgcmF0aGVyIHRoYW4gZXhjZXB0aW9uYWwgXHUyMDE0IGl0IGlzIGNsZWFyZWQgb24gZXZlcnlcbiAqIGRlbGliZXJhdGUga2lsbCwgYW5kIGEgaGFyZCBlbm91Z2gga2lsbCByZWNvcmRzIG5vdGhpbmcgXHUyMDE0IHNvIHRoZSBlcnJvciBpc1xuICogc3RpbGwgYnVpbHQsIG5hbWluZyB0aGUgaW5zdGFuY2Ugd2l0aG91dCBjbGFpbWluZyB0byBrbm93IGhvdyBpdCBkaWVkLlxuICpcbiAqIEBwYXJhbSBjZHBVcmwgLSBUaGUgQ0RQIFVSTCB0aGUgZGVhZCBpbnN0YW5jZSB3YXMgc2VydmluZy5cbiAqIEBwYXJhbSBtYXJrZXIgLSBUaGUgZXhpdCBtYXJrZXIgcmVhZCBmb3IgaXRzIHBvcnQsIG9yIGB1bmRlZmluZWRgIHdoZW4gdGhlcmUgaXMgbm9uZS5cbiAqIEByZXR1cm5zIFRoZSBlcnJvciB0byB0aHJvdyBpbiBwbGFjZSBvZiBhIHJlZnVzZWQgY29ubmVjdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkT3duZWRJbnN0YW5jZUV4aXRlZEVycm9yRnJvbU1hcmtlcihjZHBVcmw6IHN0cmluZywgbWFya2VyOiBPd25lZEluc3RhbmNlRXhpdE1hcmtlciB8IHVuZGVmaW5lZCk6IE93bmVkSW5zdGFuY2VFeGl0ZWRFcnJvciB7XG4gIGlmICghbWFya2VyKSB7XG4gICAgcmV0dXJuIG5ldyBPd25lZEluc3RhbmNlRXhpdGVkRXJyb3IoeyBjZHBVcmwgfSk7XG4gIH1cblxuICByZXR1cm4gbmV3IE93bmVkSW5zdGFuY2VFeGl0ZWRFcnJvcih7XG4gICAgY2RwVXJsLFxuICAgIGNvZGU6IG1hcmtlci5jb2RlLFxuICAgIGV4aXRlZEF0SW5NaWxsaXNlY29uZHM6IG1hcmtlci5leGl0ZWRBdEluTWlsbGlzZWNvbmRzLFxuICAgIG91dHB1dFRhaWw6IG1hcmtlci5vdXRwdXRUYWlsLFxuICAgIHBpZDogbWFya2VyLnBpZCxcbiAgICBzaWduYWw6IG1hcmtlci5zaWduYWwsXG4gICAgc3Bhd25FcnJvcjogbWFya2VyLnNwYXduRXJyb3JcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGJ1aWxkTWVzc2FnZShwYXJhbXM6IE93bmVkSW5zdGFuY2VFeGl0ZWRFcnJvckNvbnN0cnVjdG9yUGFyYW1zKTogc3RyaW5nIHtcbiAgY29uc3QgbWVzc2FnZSA9IGBUaGUgaGFybmVzcy1vd25lZCBPYnNpZGlhbiBpbnN0YW5jZSBhdCAke3BhcmFtcy5jZHBVcmx9IGlzIGdvbmU6ICR7ZGVzY3JpYmVFeGl0KHBhcmFtcyl9LiBgXG4gICAgKyAnV2hhdGV2ZXIgcmFuIGFmdGVyIGl0IGhhZCBubyBhcHAgdG8gdGFsayB0bywgc28gdGhlc2UgZmFpbHVyZXMgYXJlIG5vdCB0ZXN0IHJlc3VsdHMgXHUyMDE0ICdcbiAgICArICdsb29rIGZvciB0aGUgYCEhISBPV05FRCBPQlNJRElBTiBFWElURURgIGxpbmUgaW4gdGhlIHJ1biBsb2cgZm9yIHRoZSBtb21lbnQgaXQgaGFwcGVuZWQuJztcblxuICByZXR1cm4gYXBwZW5kUHJvY2Vzc091dHB1dFRhaWwobWVzc2FnZSwgeyBvdXRwdXQ6IHBhcmFtcy5vdXRwdXRUYWlsID8/ICcnLCBvdXRwdXRMYWJlbDogJ09ic2lkaWFuIG91dHB1dCcgfSk7XG59XG5cbmZ1bmN0aW9uIGRlc2NyaWJlRXhpdChwYXJhbXM6IE93bmVkSW5zdGFuY2VFeGl0ZWRFcnJvckNvbnN0cnVjdG9yUGFyYW1zKTogc3RyaW5nIHtcbiAgaWYgKHBhcmFtcy5zcGF3bkVycm9yICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gYGl0IGZhaWxlZCB0byBzdGFydCAoJHtwYXJhbXMuc3Bhd25FcnJvcn0pYDtcbiAgfVxuXG4gIGlmIChwYXJhbXMuY29kZSA9PT0gdW5kZWZpbmVkICYmIHBhcmFtcy5zaWduYWwgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiAnaXQgZXhpdGVkIGF0IHNvbWUgcG9pbnQgZHVyaW5nIHRoaXMgcnVuLCBhbmQgdGhlIGhhcm5lc3MgcmVjb3JkZWQgbm90aGluZyBhYm91dCBob3cgJ1xuICAgICAgKyAnKHRoZSBydW4gdGhhdCBvd25zIGl0IGxvZ3MgdGhlIGV4aXQgY29kZTsgYSB3b3JrZXIgc2VlcyBvbmx5IHdoYXQgdGhlIGV4aXQgbWFya2VyIHByZXNlcnZlZCknO1xuICB9XG5cbiAgcmV0dXJuIGAke2Rlc2NyaWJlUHJvY2VzcyhwYXJhbXMpfSAke2Rlc2NyaWJlUmVhc29uKHBhcmFtcyl9JHtkZXNjcmliZVdoZW4ocGFyYW1zLmV4aXRlZEF0SW5NaWxsaXNlY29uZHMpfWA7XG59XG5cbmZ1bmN0aW9uIGRlc2NyaWJlUHJvY2VzcyhwYXJhbXM6IE93bmVkSW5zdGFuY2VFeGl0ZWRFcnJvckNvbnN0cnVjdG9yUGFyYW1zKTogc3RyaW5nIHtcbiAgcmV0dXJuIHBhcmFtcy5waWQgPT09IHVuZGVmaW5lZCA/ICdpdCcgOiBgaXRzIHByb2Nlc3MgKHBpZCAke1N0cmluZyhwYXJhbXMucGlkKX0pYDtcbn1cblxuZnVuY3Rpb24gZGVzY3JpYmVSZWFzb24ocGFyYW1zOiBPd25lZEluc3RhbmNlRXhpdGVkRXJyb3JDb25zdHJ1Y3RvclBhcmFtcyk6IHN0cmluZyB7XG4gIGlmIChwYXJhbXMuc2lnbmFsICE9PSB1bmRlZmluZWQgJiYgcGFyYW1zLnNpZ25hbCAhPT0gbnVsbCkge1xuICAgIHJldHVybiBgd2FzIHRlcm1pbmF0ZWQgYnkgc2lnbmFsICR7cGFyYW1zLnNpZ25hbH1gO1xuICB9XG5cbiAgcmV0dXJuIHBhcmFtcy5jb2RlID09PSB1bmRlZmluZWQgfHwgcGFyYW1zLmNvZGUgPT09IG51bGwgPyAnZXhpdGVkIHdpdGggbm8gZXhpdCBjb2RlJyA6IGBleGl0ZWQgd2l0aCBjb2RlICR7U3RyaW5nKHBhcmFtcy5jb2RlKX1gO1xufVxuXG5mdW5jdGlvbiBkZXNjcmliZVdoZW4oZXhpdGVkQXRJbk1pbGxpc2Vjb25kczogbnVtYmVyIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcbiAgaWYgKGV4aXRlZEF0SW5NaWxsaXNlY29uZHMgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGNvbnN0IGVsYXBzZWRJblNlY29uZHMgPSBNYXRoLm1heCgwLCBNYXRoLnJvdW5kKChEYXRlLm5vdygpIC0gZXhpdGVkQXRJbk1pbGxpc2Vjb25kcykgLyBNSUxMSVNFQ09ORFNfUEVSX1NFQ09ORCkpO1xuICByZXR1cm4gYCAke1N0cmluZyhlbGFwc2VkSW5TZWNvbmRzKX1zIGFnbywgYXQgJHtuZXcgRGF0ZShleGl0ZWRBdEluTWlsbGlzZWNvbmRzKS50b0lTT1N0cmluZygpfWA7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiQUFvQkEsU0FBUywrQkFBK0I7QUFFeEMsTUFBTSwwQkFBMEI7QUFvRHpCLE1BQU0saUNBQWlDLE1BQU07QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUlsQztBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0E7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9ULFlBQVksUUFBbUQ7QUFDcEUsVUFBTSxhQUFhLE1BQU0sQ0FBQztBQUMxQixTQUFLLE9BQU87QUFDWixTQUFLLFNBQVMsT0FBTztBQUNyQixTQUFLLE9BQU8sT0FBTztBQUNuQixTQUFLLHlCQUF5QixPQUFPO0FBQ3JDLFNBQUssU0FBUyxPQUFPO0FBQUEsRUFDdkI7QUFDRjtBQWNPLFNBQVMsd0NBQXdDLFFBQWdCLFFBQXVFO0FBQzdJLE1BQUksQ0FBQyxRQUFRO0FBQ1gsV0FBTyxJQUFJLHlCQUF5QixFQUFFLE9BQU8sQ0FBQztBQUFBLEVBQ2hEO0FBRUEsU0FBTyxJQUFJLHlCQUF5QjtBQUFBLElBQ2xDO0FBQUEsSUFDQSxNQUFNLE9BQU87QUFBQSxJQUNiLHdCQUF3QixPQUFPO0FBQUEsSUFDL0IsWUFBWSxPQUFPO0FBQUEsSUFDbkIsS0FBSyxPQUFPO0FBQUEsSUFDWixRQUFRLE9BQU87QUFBQSxJQUNmLFlBQVksT0FBTztBQUFBLEVBQ3JCLENBQUM7QUFDSDtBQUVBLFNBQVMsYUFBYSxRQUEyRDtBQUMvRSxRQUFNLFVBQVUsMENBQTBDLE9BQU8sTUFBTSxhQUFhLGFBQWEsTUFBTSxDQUFDO0FBSXhHLFNBQU8sd0JBQXdCLFNBQVMsRUFBRSxRQUFRLE9BQU8sY0FBYyxJQUFJLGFBQWEsa0JBQWtCLENBQUM7QUFDN0c7QUFFQSxTQUFTLGFBQWEsUUFBMkQ7QUFDL0UsTUFBSSxPQUFPLGVBQWUsUUFBVztBQUNuQyxXQUFPLHVCQUF1QixPQUFPLFVBQVU7QUFBQSxFQUNqRDtBQUVBLE1BQUksT0FBTyxTQUFTLFVBQWEsT0FBTyxXQUFXLFFBQVc7QUFDNUQsV0FBTztBQUFBLEVBRVQ7QUFFQSxTQUFPLEdBQUcsZ0JBQWdCLE1BQU0sQ0FBQyxJQUFJLGVBQWUsTUFBTSxDQUFDLEdBQUcsYUFBYSxPQUFPLHNCQUFzQixDQUFDO0FBQzNHO0FBRUEsU0FBUyxnQkFBZ0IsUUFBMkQ7QUFDbEYsU0FBTyxPQUFPLFFBQVEsU0FBWSxPQUFPLG9CQUFvQixPQUFPLE9BQU8sR0FBRyxDQUFDO0FBQ2pGO0FBRUEsU0FBUyxlQUFlLFFBQTJEO0FBQ2pGLE1BQUksT0FBTyxXQUFXLFVBQWEsT0FBTyxXQUFXLE1BQU07QUFDekQsV0FBTyw0QkFBNEIsT0FBTyxNQUFNO0FBQUEsRUFDbEQ7QUFFQSxTQUFPLE9BQU8sU0FBUyxVQUFhLE9BQU8sU0FBUyxPQUFPLDZCQUE2QixvQkFBb0IsT0FBTyxPQUFPLElBQUksQ0FBQztBQUNqSTtBQUVBLFNBQVMsYUFBYSx3QkFBb0Q7QUFDeEUsTUFBSSwyQkFBMkIsUUFBVztBQUN4QyxXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sbUJBQW1CLEtBQUssSUFBSSxHQUFHLEtBQUssT0FBTyxLQUFLLElBQUksSUFBSSwwQkFBMEIsdUJBQXVCLENBQUM7QUFDaEgsU0FBTyxJQUFJLE9BQU8sZ0JBQWdCLENBQUMsYUFBYSxJQUFJLEtBQUssc0JBQXNCLEVBQUUsWUFBWSxDQUFDO0FBQ2hHOyIsCiAgIm5hbWVzIjogW10KfQo=
77
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL293bmVkLWluc3RhbmNlLWV4aXRlZC1lcnJvci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoZSBkaXN0aW5jdCBlcnJvciB0aHJvd24gd2hlbiB0aGUgaGFybmVzcy1vd25lZCBPYnNpZGlhbiBpbnN0YW5jZSBpcyBnb25lIFx1MjAxNFxuICogaXQgZXhpdGVkLCBhbmQgdGhlIENEUCBlbmRwb2ludCBpdCB3YXMgc2VydmluZyBhbnN3ZXJzIG5vdGhpbmcuXG4gKlxuICogSXQgZXhpc3RzIHRvIHJlcGxhY2UgYW4gYW5vbnltb3VzIGNhc2NhZGUgd2l0aCBvbmUgbmFtZWQgY2F1c2UuIEJlZm9yZSBpdCxcbiAqIGV2ZXJ5IHRlc3QgZmlsZSBzY2hlZHVsZWQgYWZ0ZXIgYSBtaWQtcnVuIGRlYXRoIGZhaWxlZCBpbiB+NjBcdTIwMTM5MCBtcyB3aXRoXG4gKiBgVHlwZUVycm9yOiBmZXRjaCBmYWlsZWRgIHdyYXBwaW5nIGBjb25uZWN0IEVDT05OUkVGVVNFRCAxMjcuMC4wLjE6PHBvcnQ+YCBcdTIwMTRcbiAqIG1lYXN1cmVkIGF0ICoqMTU2IHN1Y2ggZmFpbHVyZXMgYWNyb3NzIDIxIGZpbGVzKiogaW4gYG9ic2lkaWFuLXBhdHRlcm5zYCBvblxuICogMjAyNi0wOS0wNSwgbm90IG9uZSBvZiB0aGVtIGEgdGVzdCByZXN1bHQuIFRoZSBhYnNlbmNlIG9mIGFuIGFwcCBpcyBub3QgYSB0ZXN0XG4gKiBvdXRjb21lLCBhbmQgdGhpcyBlcnJvciBzYXlzIHNvIGluIHRoZSB3b3JkcyBhIHJlYWRlciBuZWVkczogdGhlIGluc3RhbmNlXG4gKiBkaWVkLCBoZXJlIGlzIGl0cyBleGl0IGNvZGUsIGFuZCB0aGVzZSBmYWlsdXJlcyBhcmUgbm90IGFib3V0IHlvdXIgY29kZS5cbiAqXG4gKiBFeHBvcnRlZCBzbyBjYWxsZXJzIGNhbiBgaW5zdGFuY2VvZmAtbWF0Y2ggaXQsIGxpa2UgYFNpbGVudEFzYXJGYWxsYmFja0Vycm9yYFxuICogYW5kIGBSZW5kZXJlckZhaWxlZFRvSW5pdGlhbGl6ZUVycm9yYC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IE93bmVkSW5zdGFuY2VFeGl0TWFya2VyIH0gZnJvbSAnLi9vd25lZC1pbnN0YW5jZS1leGl0LW1hcmtlci5tanMnO1xuXG5pbXBvcnQgeyBhcHBlbmRQcm9jZXNzT3V0cHV0VGFpbCB9IGZyb20gJy4vcHJvY2Vzcy1leGl0LW1lc3NhZ2UubWpzJztcblxuY29uc3QgTUlMTElTRUNPTkRTX1BFUl9TRUNPTkQgPSAxMDAwO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHRoZSB7QGxpbmsgT3duZWRJbnN0YW5jZUV4aXRlZEVycm9yfSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBFdmVyeXRoaW5nIGJ1dCB0aGUgVVJMIGlzIG9wdGlvbmFsOiB0aGUgZXhpdCBkZXRhaWxzIGNvbWUgZnJvbSB0aGUgcHJvY2Vzc1xuICogdGhhdCBsYXVuY2hlZCB0aGUgaW5zdGFuY2UsIGFuZCBhIGNhbGxlciBpbiBhbm90aGVyIHByb2Nlc3MgaGFzIHRoZW0gb25seVxuICogd2hlbiB0aGUgZXhpdCBtYXJrZXIgc3Vydml2ZWQgKHNlZSBgb3duZWQtaW5zdGFuY2UtZXhpdC1tYXJrZXIudHNgKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPd25lZEluc3RhbmNlRXhpdGVkRXJyb3JDb25zdHJ1Y3RvclBhcmFtcyB7XG4gIC8qKlxuICBUaGUgQ0RQIFVSTCB0aGUgZGVhZCBpbnN0YW5jZSB3YXMgc2VydmluZy5cbiAgICovXG4gIHJlYWRvbmx5IGNkcFVybDogc3RyaW5nO1xuXG4gIC8qKlxuICBFeGl0IGNvZGUsIHdoZW4ga25vd24uXG4gICAqL1xuICByZWFkb25seSBjb2RlPzogbnVsbCB8IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgV2hlbiB0aGUgaW5zdGFuY2UgZXhpdGVkIChgRGF0ZS5ub3coKWAgZXBvY2ggbWlsbGlzZWNvbmRzKSwgd2hlbiBrbm93bi5cbiAgICovXG4gIHJlYWRvbmx5IGV4aXRlZEF0SW5NaWxsaXNlY29uZHM/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gIFRoZSB0YWlsIG9mIHdoYXQgdGhlIGluc3RhbmNlIHdyb3RlIHRvIHN0ZG91dC9zdGRlcnIsIHdoZW4gYW55IHdhcyBjYXB0dXJlZC5cbiAgICovXG4gIHJlYWRvbmx5IG91dHB1dFRhaWw/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gIFBJRCBvZiB0aGUgZGVhZCBpbnN0YW5jZSwgd2hlbiBrbm93bi5cbiAgICovXG4gIHJlYWRvbmx5IHBpZD86IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgVGVybWluYXRpbmcgc2lnbmFsLCB3aGVuIGtub3duLlxuICAgKi9cbiAgcmVhZG9ubHkgc2lnbmFsPzogTm9kZUpTLlNpZ25hbHMgfCBudWxsIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICBUaGUgc3Bhd24tZmFpbHVyZSBtZXNzYWdlIHdoZW4gdGhlIGluc3RhbmNlIG5ldmVyIHN0YXJ0ZWQsIG90aGVyd2lzZSBhYnNlbnQuXG4gICAqL1xuICByZWFkb25seSBzcGF3bkVycm9yPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFRocm93biB3aGVuIHRoZSBoYXJuZXNzLW93bmVkIE9ic2lkaWFuIGluc3RhbmNlIGhhcyBleGl0ZWQgYW5kIGl0cyBDRFBcbiAqIGVuZHBvaW50IGlzIHRoZXJlZm9yZSB1bnJlYWNoYWJsZS4gQ2FycmllcyB3aGF0ZXZlciBpcyBrbm93biBhYm91dCB0aGUgZGVhdGhcbiAqIFx1MjAxNCBleGl0IGNvZGUsIHNpZ25hbCwgd2hlbiBpdCBoYXBwZW5lZCwgYW5kIHRoZSBvdXRwdXQgdGFpbCBcdTIwMTQgc28gdGhlIGZhaWx1cmVcbiAqIG5hbWVzIGl0cyBvd24gY2F1c2UgaW5zdGVhZCBvZiBhIHJlZnVzZWQgY29ubmVjdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIE93bmVkSW5zdGFuY2VFeGl0ZWRFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgLyoqXG4gIFRoZSBDRFAgVVJMIHRoZSBkZWFkIGluc3RhbmNlIHdhcyBzZXJ2aW5nLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNkcFVybDogc3RyaW5nO1xuXG4gIC8qKlxuICBFeGl0IGNvZGUsIHdoZW4ga25vd24uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY29kZTogbnVsbCB8IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgV2hlbiB0aGUgaW5zdGFuY2UgZXhpdGVkIChgRGF0ZS5ub3coKWAgZXBvY2ggbWlsbGlzZWNvbmRzKSwgd2hlbiBrbm93bi5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBleGl0ZWRBdEluTWlsbGlzZWNvbmRzOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gIFRlcm1pbmF0aW5nIHNpZ25hbCwgd2hlbiBrbm93bi5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzaWduYWw6IE5vZGVKUy5TaWduYWxzIHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgZXJyb3IgZnJvbSB3aGF0ZXZlciBpcyBrbm93biBhYm91dCB0aGUgaW5zdGFuY2UncyBkZWF0aC5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBDRFAgVVJMLCBhbmQgdGhlIGV4aXQgZGV0YWlscyB3aGVuIHRoZXkgYXJlIGF2YWlsYWJsZS5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM6IE93bmVkSW5zdGFuY2VFeGl0ZWRFcnJvckNvbnN0cnVjdG9yUGFyYW1zKSB7XG4gICAgc3VwZXIoYnVpbGRNZXNzYWdlKHBhcmFtcykpO1xuICAgIHRoaXMubmFtZSA9ICdPd25lZEluc3RhbmNlRXhpdGVkRXJyb3InO1xuICAgIHRoaXMuY2RwVXJsID0gcGFyYW1zLmNkcFVybDtcbiAgICB0aGlzLmNvZGUgPSBwYXJhbXMuY29kZTtcbiAgICB0aGlzLmV4aXRlZEF0SW5NaWxsaXNlY29uZHMgPSBwYXJhbXMuZXhpdGVkQXRJbk1pbGxpc2Vjb25kcztcbiAgICB0aGlzLnNpZ25hbCA9IHBhcmFtcy5zaWduYWw7XG4gIH1cbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIGVycm9yIGZyb20gYW4gZXhpdCBtYXJrZXIsIGZvciBhIHByb2Nlc3MgdGhhdCBkaWQgbm90IGxhdW5jaCB0aGVcbiAqIGluc3RhbmNlIGFuZCBzbyBoYXMgbm90aGluZyBlbHNlIHRvIGdvIG9uLlxuICpcbiAqIEEgbWlzc2luZyBtYXJrZXIgaXMgZXhwZWN0ZWQgcmF0aGVyIHRoYW4gZXhjZXB0aW9uYWwgXHUyMDE0IGl0IGlzIGNsZWFyZWQgb24gZXZlcnlcbiAqIGRlbGliZXJhdGUga2lsbCwgYW5kIGEgaGFyZCBlbm91Z2gga2lsbCByZWNvcmRzIG5vdGhpbmcgXHUyMDE0IHNvIHRoZSBlcnJvciBpc1xuICogc3RpbGwgYnVpbHQsIG5hbWluZyB0aGUgaW5zdGFuY2Ugd2l0aG91dCBjbGFpbWluZyB0byBrbm93IGhvdyBpdCBkaWVkLlxuICpcbiAqIEBwYXJhbSBjZHBVcmwgLSBUaGUgQ0RQIFVSTCB0aGUgZGVhZCBpbnN0YW5jZSB3YXMgc2VydmluZy5cbiAqIEBwYXJhbSBtYXJrZXIgLSBUaGUgZXhpdCBtYXJrZXIgcmVhZCBmb3IgaXRzIHBvcnQsIG9yIGB1bmRlZmluZWRgIHdoZW4gdGhlcmUgaXMgbm9uZS5cbiAqIEByZXR1cm5zIFRoZSBlcnJvciB0byB0aHJvdyBpbiBwbGFjZSBvZiBhIHJlZnVzZWQgY29ubmVjdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkT3duZWRJbnN0YW5jZUV4aXRlZEVycm9yRnJvbU1hcmtlcihjZHBVcmw6IHN0cmluZywgbWFya2VyOiBPd25lZEluc3RhbmNlRXhpdE1hcmtlciB8IHVuZGVmaW5lZCk6IE93bmVkSW5zdGFuY2VFeGl0ZWRFcnJvciB7XG4gIHJldHVybiBuZXcgT3duZWRJbnN0YW5jZUV4aXRlZEVycm9yKFxuICAgIG1hcmtlclxuICAgICAgPyB7XG4gICAgICAgIGNkcFVybCxcbiAgICAgICAgY29kZTogbWFya2VyLmNvZGUsXG4gICAgICAgIGV4aXRlZEF0SW5NaWxsaXNlY29uZHM6IG1hcmtlci5leGl0ZWRBdEluTWlsbGlzZWNvbmRzLFxuICAgICAgICBvdXRwdXRUYWlsOiBtYXJrZXIub3V0cHV0VGFpbCxcbiAgICAgICAgcGlkOiBtYXJrZXIucGlkLFxuICAgICAgICBzaWduYWw6IG1hcmtlci5zaWduYWwsXG4gICAgICAgIHNwYXduRXJyb3I6IG1hcmtlci5zcGF3bkVycm9yXG4gICAgICB9XG4gICAgICA6IHsgY2RwVXJsIH1cbiAgKTtcbn1cblxuZnVuY3Rpb24gYnVpbGRNZXNzYWdlKHBhcmFtczogT3duZWRJbnN0YW5jZUV4aXRlZEVycm9yQ29uc3RydWN0b3JQYXJhbXMpOiBzdHJpbmcge1xuICBjb25zdCBtZXNzYWdlID0gYFRoZSBoYXJuZXNzLW93bmVkIE9ic2lkaWFuIGluc3RhbmNlIGF0ICR7cGFyYW1zLmNkcFVybH0gaXMgZ29uZTogJHtkZXNjcmliZUV4aXQocGFyYW1zKX0uIGBcbiAgICArICdXaGF0ZXZlciByYW4gYWZ0ZXIgaXQgaGFkIG5vIGFwcCB0byB0YWxrIHRvLCBzbyB0aGVzZSBmYWlsdXJlcyBhcmUgbm90IHRlc3QgcmVzdWx0cyBcdTIwMTQgJ1xuICAgICsgJ2xvb2sgZm9yIHRoZSBgISEhIE9XTkVEIE9CU0lESUFOIEVYSVRFRGAgbGluZSBpbiB0aGUgcnVuIGxvZyBmb3IgdGhlIG1vbWVudCBpdCBoYXBwZW5lZC4nO1xuXG4gIHJldHVybiBhcHBlbmRQcm9jZXNzT3V0cHV0VGFpbChtZXNzYWdlLCB7IG91dHB1dDogcGFyYW1zLm91dHB1dFRhaWwgPz8gJycsIG91dHB1dExhYmVsOiAnT2JzaWRpYW4gb3V0cHV0JyB9KTtcbn1cblxuZnVuY3Rpb24gZGVzY3JpYmVFeGl0KHBhcmFtczogT3duZWRJbnN0YW5jZUV4aXRlZEVycm9yQ29uc3RydWN0b3JQYXJhbXMpOiBzdHJpbmcge1xuICBpZiAocGFyYW1zLnNwYXduRXJyb3IgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBgaXQgZmFpbGVkIHRvIHN0YXJ0ICgke3BhcmFtcy5zcGF3bkVycm9yfSlgO1xuICB9XG5cbiAgcmV0dXJuIHBhcmFtcy5jb2RlID09PSB1bmRlZmluZWQgJiYgcGFyYW1zLnNpZ25hbCA9PT0gdW5kZWZpbmVkXG4gICAgPyAnaXQgZXhpdGVkIGF0IHNvbWUgcG9pbnQgZHVyaW5nIHRoaXMgcnVuLCBhbmQgdGhlIGhhcm5lc3MgcmVjb3JkZWQgbm90aGluZyBhYm91dCBob3cgJ1xuICAgICAgKyAnKHRoZSBydW4gdGhhdCBvd25zIGl0IGxvZ3MgdGhlIGV4aXQgY29kZTsgYSB3b3JrZXIgc2VlcyBvbmx5IHdoYXQgdGhlIGV4aXQgbWFya2VyIHByZXNlcnZlZCknXG4gICAgOiBgJHtkZXNjcmliZVByb2Nlc3MocGFyYW1zKX0gJHtkZXNjcmliZVJlYXNvbihwYXJhbXMpfSR7ZGVzY3JpYmVXaGVuKHBhcmFtcy5leGl0ZWRBdEluTWlsbGlzZWNvbmRzKX1gO1xufVxuXG5mdW5jdGlvbiBkZXNjcmliZVByb2Nlc3MocGFyYW1zOiBPd25lZEluc3RhbmNlRXhpdGVkRXJyb3JDb25zdHJ1Y3RvclBhcmFtcyk6IHN0cmluZyB7XG4gIHJldHVybiBwYXJhbXMucGlkID09PSB1bmRlZmluZWQgPyAnaXQnIDogYGl0cyBwcm9jZXNzIChwaWQgJHtTdHJpbmcocGFyYW1zLnBpZCl9KWA7XG59XG5cbmZ1bmN0aW9uIGRlc2NyaWJlUmVhc29uKHBhcmFtczogT3duZWRJbnN0YW5jZUV4aXRlZEVycm9yQ29uc3RydWN0b3JQYXJhbXMpOiBzdHJpbmcge1xuICBpZiAocGFyYW1zLnNpZ25hbCAhPT0gdW5kZWZpbmVkICYmIHBhcmFtcy5zaWduYWwgIT09IG51bGwpIHtcbiAgICByZXR1cm4gYHdhcyB0ZXJtaW5hdGVkIGJ5IHNpZ25hbCAke3BhcmFtcy5zaWduYWx9YDtcbiAgfVxuXG4gIHJldHVybiBwYXJhbXMuY29kZSA9PT0gdW5kZWZpbmVkIHx8IHBhcmFtcy5jb2RlID09PSBudWxsID8gJ2V4aXRlZCB3aXRoIG5vIGV4aXQgY29kZScgOiBgZXhpdGVkIHdpdGggY29kZSAke1N0cmluZyhwYXJhbXMuY29kZSl9YDtcbn1cblxuZnVuY3Rpb24gZGVzY3JpYmVXaGVuKGV4aXRlZEF0SW5NaWxsaXNlY29uZHM6IG51bWJlciB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gIGlmIChleGl0ZWRBdEluTWlsbGlzZWNvbmRzID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBjb25zdCBlbGFwc2VkSW5TZWNvbmRzID0gTWF0aC5tYXgoMCwgTWF0aC5yb3VuZCgoRGF0ZS5ub3coKSAtIGV4aXRlZEF0SW5NaWxsaXNlY29uZHMpIC8gTUlMTElTRUNPTkRTX1BFUl9TRUNPTkQpKTtcbiAgcmV0dXJuIGAgJHtTdHJpbmcoZWxhcHNlZEluU2Vjb25kcyl9cyBhZ28sIGF0ICR7bmV3IERhdGUoZXhpdGVkQXRJbk1pbGxpc2Vjb25kcykudG9JU09TdHJpbmcoKX1gO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIkFBb0JBLFNBQVMsK0JBQStCO0FBRXhDLE1BQU0sMEJBQTBCO0FBb0R6QixNQUFNLGlDQUFpQyxNQUFNO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFJbEM7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPVCxZQUFZLFFBQW1EO0FBQ3BFLFVBQU0sYUFBYSxNQUFNLENBQUM7QUFDMUIsU0FBSyxPQUFPO0FBQ1osU0FBSyxTQUFTLE9BQU87QUFDckIsU0FBSyxPQUFPLE9BQU87QUFDbkIsU0FBSyx5QkFBeUIsT0FBTztBQUNyQyxTQUFLLFNBQVMsT0FBTztBQUFBLEVBQ3ZCO0FBQ0Y7QUFjTyxTQUFTLHdDQUF3QyxRQUFnQixRQUF1RTtBQUM3SSxTQUFPLElBQUk7QUFBQSxJQUNULFNBQ0k7QUFBQSxNQUNBO0FBQUEsTUFDQSxNQUFNLE9BQU87QUFBQSxNQUNiLHdCQUF3QixPQUFPO0FBQUEsTUFDL0IsWUFBWSxPQUFPO0FBQUEsTUFDbkIsS0FBSyxPQUFPO0FBQUEsTUFDWixRQUFRLE9BQU87QUFBQSxNQUNmLFlBQVksT0FBTztBQUFBLElBQ3JCLElBQ0UsRUFBRSxPQUFPO0FBQUEsRUFDZjtBQUNGO0FBRUEsU0FBUyxhQUFhLFFBQTJEO0FBQy9FLFFBQU0sVUFBVSwwQ0FBMEMsT0FBTyxNQUFNLGFBQWEsYUFBYSxNQUFNLENBQUM7QUFJeEcsU0FBTyx3QkFBd0IsU0FBUyxFQUFFLFFBQVEsT0FBTyxjQUFjLElBQUksYUFBYSxrQkFBa0IsQ0FBQztBQUM3RztBQUVBLFNBQVMsYUFBYSxRQUEyRDtBQUMvRSxNQUFJLE9BQU8sZUFBZSxRQUFXO0FBQ25DLFdBQU8sdUJBQXVCLE9BQU8sVUFBVTtBQUFBLEVBQ2pEO0FBRUEsU0FBTyxPQUFPLFNBQVMsVUFBYSxPQUFPLFdBQVcsU0FDbEQscUxBRUEsR0FBRyxnQkFBZ0IsTUFBTSxDQUFDLElBQUksZUFBZSxNQUFNLENBQUMsR0FBRyxhQUFhLE9BQU8sc0JBQXNCLENBQUM7QUFDeEc7QUFFQSxTQUFTLGdCQUFnQixRQUEyRDtBQUNsRixTQUFPLE9BQU8sUUFBUSxTQUFZLE9BQU8sb0JBQW9CLE9BQU8sT0FBTyxHQUFHLENBQUM7QUFDakY7QUFFQSxTQUFTLGVBQWUsUUFBMkQ7QUFDakYsTUFBSSxPQUFPLFdBQVcsVUFBYSxPQUFPLFdBQVcsTUFBTTtBQUN6RCxXQUFPLDRCQUE0QixPQUFPLE1BQU07QUFBQSxFQUNsRDtBQUVBLFNBQU8sT0FBTyxTQUFTLFVBQWEsT0FBTyxTQUFTLE9BQU8sNkJBQTZCLG9CQUFvQixPQUFPLE9BQU8sSUFBSSxDQUFDO0FBQ2pJO0FBRUEsU0FBUyxhQUFhLHdCQUFvRDtBQUN4RSxNQUFJLDJCQUEyQixRQUFXO0FBQ3hDLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxtQkFBbUIsS0FBSyxJQUFJLEdBQUcsS0FBSyxPQUFPLEtBQUssSUFBSSxJQUFJLDBCQUEwQix1QkFBdUIsQ0FBQztBQUNoSCxTQUFPLElBQUksT0FBTyxnQkFBZ0IsQ0FBQyxhQUFhLElBQUksS0FBSyxzQkFBc0IsRUFBRSxZQUFZLENBQUM7QUFDaEc7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -1,9 +1,6 @@
1
1
  function appendProcessOutputTail(message, params) {
2
2
  const trimmedOutput = params.output.trim();
3
- if (trimmedOutput.length === 0) {
4
- return message;
5
- }
6
- return `${message}
3
+ return trimmedOutput.length === 0 ? message : `${message}
7
4
 
8
5
  ${params.outputLabel} (tail):
9
6
  ${trimmedOutput}`;
@@ -16,13 +13,10 @@ function resolveReason(exitInfo) {
16
13
  if (exitInfo.spawnError !== void 0) {
17
14
  return `failed to start (${exitInfo.spawnError})`;
18
15
  }
19
- if (exitInfo.signal !== null) {
20
- return `was terminated by signal ${exitInfo.signal}`;
21
- }
22
- return `exited prematurely with code ${exitInfo.code === null ? "(null)" : String(exitInfo.code)}`;
16
+ return exitInfo.signal === null ? `exited prematurely with code ${exitInfo.code === null ? "(null)" : String(exitInfo.code)}` : `was terminated by signal ${exitInfo.signal}`;
23
17
  }
24
18
  export {
25
19
  appendProcessOutputTail,
26
20
  buildProcessExitMessage
27
21
  };
28
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3Byb2Nlc3MtZXhpdC1tZXNzYWdlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUHVyZSBidWlsZGVycyBmb3IgdGhlIGRpYWdub3N0aWMgbWVzc2FnZSBkZXNjcmliaW5nIGFuIGF1dG8tc3RhcnRlZCBjaGlsZFxuICogcHJvY2VzcyAodGhlIEFuZHJvaWQgZW11bGF0b3Igb3IgdGhlIEFwcGl1bSBzZXJ2ZXIpIHRoYXQgZmFpbGVkIGR1cmluZ1xuICogc3RhcnR1cCwgYXBwZW5kaW5nIHRoZSBjYXB0dXJlZCBvdXRwdXQgdGFpbCB3aGVuIGF2YWlsYWJsZS5cbiAqXG4gKiBBIHN0YXJ0dXAgZmFpbHMgdHdvIHdheXMgXHUyMDE0IHRoZSBwcm9jZXNzICoqZGllcyoqLCBvciBpdCAqKmhhbmdzKiogcGFzdCBhXG4gKiBidWRnZXQgXHUyMDE0IGFuZCB0aGUgY2FwdHVyZWQgdGFpbCBpcyBlcXVhbGx5IHRoZSBleHBsYW5hdGlvbiBpbiBib3RoLiBTbyB0aGVcbiAqIHRhaWwtYXBwZW5kaW5nIGhhbGYgaXMgaXRzIG93biBleHBvcnQsIHVzZWQgYnkgdGhlIHRpbWVvdXQgdGhyb3dzIHRoYXQgb25jZVxuICogcmVwb3J0ZWQgb25seSB0aGUgYnVkZ2V0IHRoZXkgYmxldy5cbiAqXG4gKiBLZXB0IHNlcGFyYXRlIGZyb20gdGhlIGludGVncmF0aW9uLW9ubHkgYHRyYW5zcG9ydC1mYWN0b3J5YCAoZXhjbHVkZWQgZnJvbVxuICogdW5pdCB0ZXN0cykgc28gdGhlIG1lc3NhZ2UgZm9ybWF0dGluZyBzdGF5cyB1bml0LXRlc3RhYmxlIFx1MjAxNCB0aGUgbGF1bmNoZXJzXG4gKiB0aGVtc2VsdmVzIHNwYXduIHJlYWwgcHJvY2Vzc2VzLlxuICovXG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGFwcGVuZFByb2Nlc3NPdXRwdXRUYWlsfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBlbmRQcm9jZXNzT3V0cHV0VGFpbE9wdGlvbnMge1xuICAvKipcbiAgVGhlIGNhcHR1cmVkIHN0ZG91dCtzdGRlcnIgdGFpbCAoZW1wdHkgd2hlbiBub25lIHdhcyBjYXB0dXJlZCkuXG4gICAqL1xuICByZWFkb25seSBvdXRwdXQ6IHN0cmluZztcblxuICAvKipcbiAgTGFiZWwgZm9yIHRoZSBjYXB0dXJlZCBvdXRwdXQgc2VjdGlvbiAoZS5nLiBgXCJFbXVsYXRvciBvdXRwdXRcImApLlxuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0TGFiZWw6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgYnVpbGRQcm9jZXNzRXhpdE1lc3NhZ2V9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkUHJvY2Vzc0V4aXRNZXNzYWdlUGFyYW1zIHtcbiAgLyoqXG4gIFRoZSBwcm9jZXNzJ3MgZXhpdCAvIHNwYXduLWZhaWx1cmUgZGV0YWlscy5cbiAgICovXG4gIHJlYWRvbmx5IGV4aXRJbmZvOiBQcm9jZXNzRXhpdEluZm87XG5cbiAgLyoqXG4gIFRoZSBjYXB0dXJlZCBzdGRvdXQrc3RkZXJyIHRhaWwgKGVtcHR5IHdoZW4gbm9uZSB3YXMgY2FwdHVyZWQpLlxuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0OiBzdHJpbmc7XG5cbiAgLyoqXG4gIExhYmVsIGZvciB0aGUgY2FwdHVyZWQgb3V0cHV0IHNlY3Rpb24gKGUuZy4gYFwiRW11bGF0b3Igb3V0cHV0XCJgKS5cbiAgICovXG4gIHJlYWRvbmx5IG91dHB1dExhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gIEh1bWFuLXJlYWRhYmxlIHN1YmplY3Qgb2YgdGhlIHByb2Nlc3MgKGUuZy4gYFwiQW5kcm9pZCBlbXVsYXRvclwiYCkuXG4gICAqL1xuICByZWFkb25seSBzdWJqZWN0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGV0YWlscyBvZiBhIHNwYXduZWQgY2hpbGQgcHJvY2VzcyB0aGF0IGhhcyBleGl0ZWQgb3IgZmFpbGVkIHRvIHNwYXduLlxuICpcbiAqIEEgbm9ybWFsIGV4aXQgc2V0cyBgY29kZWAvYHNpZ25hbGAgKGV4YWN0bHkgb25lIGlzIG5vbi1gbnVsbGApOyBhIHNwYXduXG4gKiBmYWlsdXJlIChlLmcuIGBFTk9FTlRgIGZvciBhIG1pc3NpbmcgYmluYXJ5KSBsZWF2ZXMgYm90aCBgbnVsbGAgYW5kIHNldHNcbiAqIGBzcGF3bkVycm9yYCB0byB0aGUgZmFpbHVyZSBtZXNzYWdlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb2Nlc3NFeGl0SW5mbyB7XG4gIC8qKlxuICBFeGl0IGNvZGUsIG9yIGBudWxsYCB3aGVuIHRlcm1pbmF0ZWQgYnkgYSBzaWduYWwgb3Igd2hlbiBpdCBmYWlsZWQgdG8gc3Bhd24uXG4gICAqL1xuICByZWFkb25seSBjb2RlOiBudWxsIHwgbnVtYmVyO1xuXG4gIC8qKlxuICBUZXJtaW5hdGluZyBzaWduYWwsIG9yIGBudWxsYCB3aGVuIGl0IGV4aXRlZCBub3JtYWxseSBvciBmYWlsZWQgdG8gc3Bhd24uXG4gICAqL1xuICByZWFkb25seSBzaWduYWw6IE5vZGVKUy5TaWduYWxzIHwgbnVsbDtcblxuICAvKipcbiAgVGhlIHNwYXduLWZhaWx1cmUgbWVzc2FnZSB3aGVuIHRoZSBwcm9jZXNzIG5ldmVyIHN0YXJ0ZWQgKGUuZy4gYEVOT0VOVGApLCBvdGhlcndpc2UgYWJzZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgc3Bhd25FcnJvcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBcHBlbmRzIGEgcHJvY2VzcydzIGNhcHR1cmVkIG91dHB1dCB0YWlsIHRvIGEgbWVzc2FnZSwgd2hlbiB0aGVyZSBpcyBvbmUuXG4gKlxuICogU3BsaXQgb3V0IG9mIHtAbGluayBidWlsZFByb2Nlc3NFeGl0TWVzc2FnZX0gc28gdGhlICoqdGltZW91dCoqIGZhaWx1cmVzIGNhblxuICogY2FycnkgdGhlIHRhaWwgdG9vLiBBIHByb2Nlc3MgdGhhdCBkaWVzIGdldHMgaXRzIG91dHB1dCBhdHRhY2hlZDsgb25lIHRoYXRcbiAqIGhhbmdzIHVzZWQgdG8gZ2V0IGBObyBuZXcgZW11bGF0b3IgZGV2aWNlIGFwcGVhcmVkIHdpdGhpbiAzMDAwMDBtcy5gIGFuZFxuICogbm90aGluZyBlbHNlIFx1MjAxNCBldmVuIHRob3VnaCB0aGUgbGluZSB0aGF0IGV4cGxhaW5zIGl0IChgRkFUQUwgfCBSdW5uaW5nXG4gKiBtdWx0aXBsZSBlbXVsYXRvcnMgd2l0aCB0aGUgc2FtZSBBVkQgaXMgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmVgKSBoYWQgYWxyZWFkeVxuICogYmVlbiBjYXB0dXJlZC4gVGhlIGVtdWxhdG9yIHdyaXRpbmcgaXRzIG93biBkaWFnbm9zaXMgaXMgd29ydGggbm90aGluZyBpZiB0aGVcbiAqIGhhcm5lc3MgcmVhZHMgaXQgb24gb25seSBvbmUgb2YgdGhlIHR3byB3YXlzIGEgc3RhcnR1cCBjYW4gZmFpbC5cbiAqXG4gKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBmYWlsdXJlIG1lc3NhZ2UgdG8gZXh0ZW5kLlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBjYXB0dXJlZCB0YWlsIGFuZCBpdHMgbGFiZWwuXG4gKiBAcmV0dXJucyBUaGUgbWVzc2FnZSwgd2l0aCB0aGUgdGFpbCBhcHBlbmRlZCB3aGVuIG5vbi1lbXB0eS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGVuZFByb2Nlc3NPdXRwdXRUYWlsKG1lc3NhZ2U6IHN0cmluZywgcGFyYW1zOiBBcHBlbmRQcm9jZXNzT3V0cHV0VGFpbE9wdGlvbnMpOiBzdHJpbmcge1xuICBjb25zdCB0cmltbWVkT3V0cHV0ID0gcGFyYW1zLm91dHB1dC50cmltKCk7XG4gIGlmICh0cmltbWVkT3V0cHV0Lmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBtZXNzYWdlO1xuICB9XG5cbiAgcmV0dXJuIGAke21lc3NhZ2V9XFxuXFxuJHtwYXJhbXMub3V0cHV0TGFiZWx9ICh0YWlsKTpcXG4ke3RyaW1tZWRPdXRwdXR9YDtcbn1cblxuLyoqXG4gKiBCdWlsZHMgYSBkZXNjcmlwdGl2ZSBlcnJvciBtZXNzYWdlIGZvciBhbiBhdXRvLXN0YXJ0ZWQgY2hpbGQgcHJvY2VzcyB0aGF0XG4gKiBleGl0ZWQgKG9yIGZhaWxlZCB0byBzcGF3bikgZHVyaW5nIHN0YXJ0dXAsIGFwcGVuZGluZyB0aGUgY2FwdHVyZWQgb3V0cHV0XG4gKiB0YWlsIHdoZW4gYXZhaWxhYmxlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgc3ViamVjdCwgZXhpdCBkZXRhaWxzLCBhbmQgY2FwdHVyZWQgb3V0cHV0LlxuICogQHJldHVybnMgQSBodW1hbi1yZWFkYWJsZSBlcnJvciBtZXNzYWdlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRQcm9jZXNzRXhpdE1lc3NhZ2UocGFyYW1zOiBCdWlsZFByb2Nlc3NFeGl0TWVzc2FnZVBhcmFtcyk6IHN0cmluZyB7XG4gIGNvbnN0IHsgZXhpdEluZm8sIG91dHB1dCwgb3V0cHV0TGFiZWwsIHN1YmplY3QgfSA9IHBhcmFtcztcblxuICByZXR1cm4gYXBwZW5kUHJvY2Vzc091dHB1dFRhaWwoYCR7c3ViamVjdH0gJHtyZXNvbHZlUmVhc29uKGV4aXRJbmZvKX0gZHVyaW5nIHN0YXJ0dXAuYCwgeyBvdXRwdXQsIG91dHB1dExhYmVsIH0pO1xufVxuXG4vKipcbiAqIERlc2NyaWJlcyB3aHkgdGhlIHByb2Nlc3MgaXMgbm8gbG9uZ2VyIHJ1bm5pbmcuXG4gKlxuICogQHBhcmFtIGV4aXRJbmZvIC0gVGhlIGV4aXQgLyBzcGF3bi1mYWlsdXJlIGRldGFpbHMuXG4gKiBAcmV0dXJucyBUaGUgcmVhc29uIGNsYXVzZS5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZVJlYXNvbihleGl0SW5mbzogUHJvY2Vzc0V4aXRJbmZvKTogc3RyaW5nIHtcbiAgaWYgKGV4aXRJbmZvLnNwYXduRXJyb3IgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBgZmFpbGVkIHRvIHN0YXJ0ICgke2V4aXRJbmZvLnNwYXduRXJyb3J9KWA7XG4gIH1cbiAgaWYgKGV4aXRJbmZvLnNpZ25hbCAhPT0gbnVsbCkge1xuICAgIHJldHVybiBgd2FzIHRlcm1pbmF0ZWQgYnkgc2lnbmFsICR7ZXhpdEluZm8uc2lnbmFsfWA7XG4gIH1cbiAgcmV0dXJuIGBleGl0ZWQgcHJlbWF0dXJlbHkgd2l0aCBjb2RlICR7ZXhpdEluZm8uY29kZSA9PT0gbnVsbCA/ICcobnVsbCknIDogU3RyaW5nKGV4aXRJbmZvLmNvZGUpfWA7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiQUFnR08sU0FBUyx3QkFBd0IsU0FBaUIsUUFBZ0Q7QUFDdkcsUUFBTSxnQkFBZ0IsT0FBTyxPQUFPLEtBQUs7QUFDekMsTUFBSSxjQUFjLFdBQVcsR0FBRztBQUM5QixXQUFPO0FBQUEsRUFDVDtBQUVBLFNBQU8sR0FBRyxPQUFPO0FBQUE7QUFBQSxFQUFPLE9BQU8sV0FBVztBQUFBLEVBQWEsYUFBYTtBQUN0RTtBQVVPLFNBQVMsd0JBQXdCLFFBQStDO0FBQ3JGLFFBQU0sRUFBRSxVQUFVLFFBQVEsYUFBYSxRQUFRLElBQUk7QUFFbkQsU0FBTyx3QkFBd0IsR0FBRyxPQUFPLElBQUksY0FBYyxRQUFRLENBQUMsb0JBQW9CLEVBQUUsUUFBUSxZQUFZLENBQUM7QUFDakg7QUFRQSxTQUFTLGNBQWMsVUFBbUM7QUFDeEQsTUFBSSxTQUFTLGVBQWUsUUFBVztBQUNyQyxXQUFPLG9CQUFvQixTQUFTLFVBQVU7QUFBQSxFQUNoRDtBQUNBLE1BQUksU0FBUyxXQUFXLE1BQU07QUFDNUIsV0FBTyw0QkFBNEIsU0FBUyxNQUFNO0FBQUEsRUFDcEQ7QUFDQSxTQUFPLGdDQUFnQyxTQUFTLFNBQVMsT0FBTyxXQUFXLE9BQU8sU0FBUyxJQUFJLENBQUM7QUFDbEc7IiwKICAibmFtZXMiOiBbXQp9Cg==
22
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3Byb2Nlc3MtZXhpdC1tZXNzYWdlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUHVyZSBidWlsZGVycyBmb3IgdGhlIGRpYWdub3N0aWMgbWVzc2FnZSBkZXNjcmliaW5nIGFuIGF1dG8tc3RhcnRlZCBjaGlsZFxuICogcHJvY2VzcyAodGhlIEFuZHJvaWQgZW11bGF0b3Igb3IgdGhlIEFwcGl1bSBzZXJ2ZXIpIHRoYXQgZmFpbGVkIGR1cmluZ1xuICogc3RhcnR1cCwgYXBwZW5kaW5nIHRoZSBjYXB0dXJlZCBvdXRwdXQgdGFpbCB3aGVuIGF2YWlsYWJsZS5cbiAqXG4gKiBBIHN0YXJ0dXAgZmFpbHMgdHdvIHdheXMgXHUyMDE0IHRoZSBwcm9jZXNzICoqZGllcyoqLCBvciBpdCAqKmhhbmdzKiogcGFzdCBhXG4gKiBidWRnZXQgXHUyMDE0IGFuZCB0aGUgY2FwdHVyZWQgdGFpbCBpcyBlcXVhbGx5IHRoZSBleHBsYW5hdGlvbiBpbiBib3RoLiBTbyB0aGVcbiAqIHRhaWwtYXBwZW5kaW5nIGhhbGYgaXMgaXRzIG93biBleHBvcnQsIHVzZWQgYnkgdGhlIHRpbWVvdXQgdGhyb3dzIHRoYXQgb25jZVxuICogcmVwb3J0ZWQgb25seSB0aGUgYnVkZ2V0IHRoZXkgYmxldy5cbiAqXG4gKiBLZXB0IHNlcGFyYXRlIGZyb20gdGhlIGludGVncmF0aW9uLW9ubHkgYHRyYW5zcG9ydC1mYWN0b3J5YCAoZXhjbHVkZWQgZnJvbVxuICogdW5pdCB0ZXN0cykgc28gdGhlIG1lc3NhZ2UgZm9ybWF0dGluZyBzdGF5cyB1bml0LXRlc3RhYmxlIFx1MjAxNCB0aGUgbGF1bmNoZXJzXG4gKiB0aGVtc2VsdmVzIHNwYXduIHJlYWwgcHJvY2Vzc2VzLlxuICovXG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGFwcGVuZFByb2Nlc3NPdXRwdXRUYWlsfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBlbmRQcm9jZXNzT3V0cHV0VGFpbE9wdGlvbnMge1xuICAvKipcbiAgVGhlIGNhcHR1cmVkIHN0ZG91dCtzdGRlcnIgdGFpbCAoZW1wdHkgd2hlbiBub25lIHdhcyBjYXB0dXJlZCkuXG4gICAqL1xuICByZWFkb25seSBvdXRwdXQ6IHN0cmluZztcblxuICAvKipcbiAgTGFiZWwgZm9yIHRoZSBjYXB0dXJlZCBvdXRwdXQgc2VjdGlvbiAoZS5nLiBgXCJFbXVsYXRvciBvdXRwdXRcImApLlxuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0TGFiZWw6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgYnVpbGRQcm9jZXNzRXhpdE1lc3NhZ2V9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkUHJvY2Vzc0V4aXRNZXNzYWdlUGFyYW1zIHtcbiAgLyoqXG4gIFRoZSBwcm9jZXNzJ3MgZXhpdCAvIHNwYXduLWZhaWx1cmUgZGV0YWlscy5cbiAgICovXG4gIHJlYWRvbmx5IGV4aXRJbmZvOiBQcm9jZXNzRXhpdEluZm87XG5cbiAgLyoqXG4gIFRoZSBjYXB0dXJlZCBzdGRvdXQrc3RkZXJyIHRhaWwgKGVtcHR5IHdoZW4gbm9uZSB3YXMgY2FwdHVyZWQpLlxuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0OiBzdHJpbmc7XG5cbiAgLyoqXG4gIExhYmVsIGZvciB0aGUgY2FwdHVyZWQgb3V0cHV0IHNlY3Rpb24gKGUuZy4gYFwiRW11bGF0b3Igb3V0cHV0XCJgKS5cbiAgICovXG4gIHJlYWRvbmx5IG91dHB1dExhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gIEh1bWFuLXJlYWRhYmxlIHN1YmplY3Qgb2YgdGhlIHByb2Nlc3MgKGUuZy4gYFwiQW5kcm9pZCBlbXVsYXRvclwiYCkuXG4gICAqL1xuICByZWFkb25seSBzdWJqZWN0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGV0YWlscyBvZiBhIHNwYXduZWQgY2hpbGQgcHJvY2VzcyB0aGF0IGhhcyBleGl0ZWQgb3IgZmFpbGVkIHRvIHNwYXduLlxuICpcbiAqIEEgbm9ybWFsIGV4aXQgc2V0cyBgY29kZWAvYHNpZ25hbGAgKGV4YWN0bHkgb25lIGlzIG5vbi1gbnVsbGApOyBhIHNwYXduXG4gKiBmYWlsdXJlIChlLmcuIGBFTk9FTlRgIGZvciBhIG1pc3NpbmcgYmluYXJ5KSBsZWF2ZXMgYm90aCBgbnVsbGAgYW5kIHNldHNcbiAqIGBzcGF3bkVycm9yYCB0byB0aGUgZmFpbHVyZSBtZXNzYWdlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb2Nlc3NFeGl0SW5mbyB7XG4gIC8qKlxuICBFeGl0IGNvZGUsIG9yIGBudWxsYCB3aGVuIHRlcm1pbmF0ZWQgYnkgYSBzaWduYWwgb3Igd2hlbiBpdCBmYWlsZWQgdG8gc3Bhd24uXG4gICAqL1xuICByZWFkb25seSBjb2RlOiBudWxsIHwgbnVtYmVyO1xuXG4gIC8qKlxuICBUZXJtaW5hdGluZyBzaWduYWwsIG9yIGBudWxsYCB3aGVuIGl0IGV4aXRlZCBub3JtYWxseSBvciBmYWlsZWQgdG8gc3Bhd24uXG4gICAqL1xuICByZWFkb25seSBzaWduYWw6IE5vZGVKUy5TaWduYWxzIHwgbnVsbDtcblxuICAvKipcbiAgVGhlIHNwYXduLWZhaWx1cmUgbWVzc2FnZSB3aGVuIHRoZSBwcm9jZXNzIG5ldmVyIHN0YXJ0ZWQgKGUuZy4gYEVOT0VOVGApLCBvdGhlcndpc2UgYWJzZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgc3Bhd25FcnJvcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBcHBlbmRzIGEgcHJvY2VzcydzIGNhcHR1cmVkIG91dHB1dCB0YWlsIHRvIGEgbWVzc2FnZSwgd2hlbiB0aGVyZSBpcyBvbmUuXG4gKlxuICogU3BsaXQgb3V0IG9mIHtAbGluayBidWlsZFByb2Nlc3NFeGl0TWVzc2FnZX0gc28gdGhlICoqdGltZW91dCoqIGZhaWx1cmVzIGNhblxuICogY2FycnkgdGhlIHRhaWwgdG9vLiBBIHByb2Nlc3MgdGhhdCBkaWVzIGdldHMgaXRzIG91dHB1dCBhdHRhY2hlZDsgb25lIHRoYXRcbiAqIGhhbmdzIHVzZWQgdG8gZ2V0IGBObyBuZXcgZW11bGF0b3IgZGV2aWNlIGFwcGVhcmVkIHdpdGhpbiAzMDAwMDBtcy5gIGFuZFxuICogbm90aGluZyBlbHNlIFx1MjAxNCBldmVuIHRob3VnaCB0aGUgbGluZSB0aGF0IGV4cGxhaW5zIGl0IChgRkFUQUwgfCBSdW5uaW5nXG4gKiBtdWx0aXBsZSBlbXVsYXRvcnMgd2l0aCB0aGUgc2FtZSBBVkQgaXMgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmVgKSBoYWQgYWxyZWFkeVxuICogYmVlbiBjYXB0dXJlZC4gVGhlIGVtdWxhdG9yIHdyaXRpbmcgaXRzIG93biBkaWFnbm9zaXMgaXMgd29ydGggbm90aGluZyBpZiB0aGVcbiAqIGhhcm5lc3MgcmVhZHMgaXQgb24gb25seSBvbmUgb2YgdGhlIHR3byB3YXlzIGEgc3RhcnR1cCBjYW4gZmFpbC5cbiAqXG4gKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBmYWlsdXJlIG1lc3NhZ2UgdG8gZXh0ZW5kLlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBjYXB0dXJlZCB0YWlsIGFuZCBpdHMgbGFiZWwuXG4gKiBAcmV0dXJucyBUaGUgbWVzc2FnZSwgd2l0aCB0aGUgdGFpbCBhcHBlbmRlZCB3aGVuIG5vbi1lbXB0eS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGVuZFByb2Nlc3NPdXRwdXRUYWlsKG1lc3NhZ2U6IHN0cmluZywgcGFyYW1zOiBBcHBlbmRQcm9jZXNzT3V0cHV0VGFpbE9wdGlvbnMpOiBzdHJpbmcge1xuICBjb25zdCB0cmltbWVkT3V0cHV0ID0gcGFyYW1zLm91dHB1dC50cmltKCk7XG4gIHJldHVybiB0cmltbWVkT3V0cHV0Lmxlbmd0aCA9PT0gMCA/IG1lc3NhZ2UgOiBgJHttZXNzYWdlfVxcblxcbiR7cGFyYW1zLm91dHB1dExhYmVsfSAodGFpbCk6XFxuJHt0cmltbWVkT3V0cHV0fWA7XG59XG5cbi8qKlxuICogQnVpbGRzIGEgZGVzY3JpcHRpdmUgZXJyb3IgbWVzc2FnZSBmb3IgYW4gYXV0by1zdGFydGVkIGNoaWxkIHByb2Nlc3MgdGhhdFxuICogZXhpdGVkIChvciBmYWlsZWQgdG8gc3Bhd24pIGR1cmluZyBzdGFydHVwLCBhcHBlbmRpbmcgdGhlIGNhcHR1cmVkIG91dHB1dFxuICogdGFpbCB3aGVuIGF2YWlsYWJsZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHN1YmplY3QsIGV4aXQgZGV0YWlscywgYW5kIGNhcHR1cmVkIG91dHB1dC5cbiAqIEByZXR1cm5zIEEgaHVtYW4tcmVhZGFibGUgZXJyb3IgbWVzc2FnZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUHJvY2Vzc0V4aXRNZXNzYWdlKHBhcmFtczogQnVpbGRQcm9jZXNzRXhpdE1lc3NhZ2VQYXJhbXMpOiBzdHJpbmcge1xuICBjb25zdCB7IGV4aXRJbmZvLCBvdXRwdXQsIG91dHB1dExhYmVsLCBzdWJqZWN0IH0gPSBwYXJhbXM7XG5cbiAgcmV0dXJuIGFwcGVuZFByb2Nlc3NPdXRwdXRUYWlsKGAke3N1YmplY3R9ICR7cmVzb2x2ZVJlYXNvbihleGl0SW5mbyl9IGR1cmluZyBzdGFydHVwLmAsIHsgb3V0cHV0LCBvdXRwdXRMYWJlbCB9KTtcbn1cblxuLyoqXG4gKiBEZXNjcmliZXMgd2h5IHRoZSBwcm9jZXNzIGlzIG5vIGxvbmdlciBydW5uaW5nLlxuICpcbiAqIEBwYXJhbSBleGl0SW5mbyAtIFRoZSBleGl0IC8gc3Bhd24tZmFpbHVyZSBkZXRhaWxzLlxuICogQHJldHVybnMgVGhlIHJlYXNvbiBjbGF1c2UuXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVSZWFzb24oZXhpdEluZm86IFByb2Nlc3NFeGl0SW5mbyk6IHN0cmluZyB7XG4gIGlmIChleGl0SW5mby5zcGF3bkVycm9yICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gYGZhaWxlZCB0byBzdGFydCAoJHtleGl0SW5mby5zcGF3bkVycm9yfSlgO1xuICB9XG4gIHJldHVybiBleGl0SW5mby5zaWduYWwgPT09IG51bGwgPyBgZXhpdGVkIHByZW1hdHVyZWx5IHdpdGggY29kZSAke2V4aXRJbmZvLmNvZGUgPT09IG51bGwgPyAnKG51bGwpJyA6IFN0cmluZyhleGl0SW5mby5jb2RlKX1gIDogYHdhcyB0ZXJtaW5hdGVkIGJ5IHNpZ25hbCAke2V4aXRJbmZvLnNpZ25hbH1gO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIkFBZ0dPLFNBQVMsd0JBQXdCLFNBQWlCLFFBQWdEO0FBQ3ZHLFFBQU0sZ0JBQWdCLE9BQU8sT0FBTyxLQUFLO0FBQ3pDLFNBQU8sY0FBYyxXQUFXLElBQUksVUFBVSxHQUFHLE9BQU87QUFBQTtBQUFBLEVBQU8sT0FBTyxXQUFXO0FBQUEsRUFBYSxhQUFhO0FBQzdHO0FBVU8sU0FBUyx3QkFBd0IsUUFBK0M7QUFDckYsUUFBTSxFQUFFLFVBQVUsUUFBUSxhQUFhLFFBQVEsSUFBSTtBQUVuRCxTQUFPLHdCQUF3QixHQUFHLE9BQU8sSUFBSSxjQUFjLFFBQVEsQ0FBQyxvQkFBb0IsRUFBRSxRQUFRLFlBQVksQ0FBQztBQUNqSDtBQVFBLFNBQVMsY0FBYyxVQUFtQztBQUN4RCxNQUFJLFNBQVMsZUFBZSxRQUFXO0FBQ3JDLFdBQU8sb0JBQW9CLFNBQVMsVUFBVTtBQUFBLEVBQ2hEO0FBQ0EsU0FBTyxTQUFTLFdBQVcsT0FBTyxnQ0FBZ0MsU0FBUyxTQUFTLE9BQU8sV0FBVyxPQUFPLFNBQVMsSUFBSSxDQUFDLEtBQUssNEJBQTRCLFNBQVMsTUFBTTtBQUM3SzsiLAogICJuYW1lcyI6IFtdCn0K
@@ -4,20 +4,14 @@ function resolveDeadBootGraceInMilliseconds(options) {
4
4
  }
5
5
  function resolveRendererBootState(params) {
6
6
  const { bodyChildElementCount, hasGraceElapsed, hasWindowApp, isDocumentComplete } = params;
7
- if (hasWindowApp) {
7
+ if (hasWindowApp || !hasGraceElapsed) {
8
8
  return "pending";
9
9
  }
10
- if (!hasGraceElapsed) {
11
- return "pending";
12
- }
13
- if (isDocumentComplete && bodyChildElementCount === 0) {
14
- return "dead";
15
- }
16
- return "pending";
10
+ return isDocumentComplete && bodyChildElementCount === 0 ? "dead" : "pending";
17
11
  }
18
12
  export {
19
13
  DEFAULT_DEAD_BOOT_GRACE_IN_MILLISECONDS,
20
14
  resolveDeadBootGraceInMilliseconds,
21
15
  resolveRendererBootState
22
16
  };
23
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3JlbmRlcmVyLWJvb3QtZGV0ZWN0aW9uLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUHVyZSBkZXRlY3Rpb24gb2YgYSB0ZXJtaW5hbCBcImRlYWQgYm9vdFwiIG9mIHRoZSBvd25lZCBPYnNpZGlhbiByZW5kZXJlciwgcGx1c1xuICogcmVzb2x2aW5nIHRoZSBmYXN0LWZhaWwgZ3JhY2Ugd2luZG93IGZyb20gdGhlIHRyYW5zcG9ydCBvcHRpb25zLiBLZXB0IHNlcGFyYXRlXG4gKiBmcm9tIHRoZSBpbnRlZ3JhdGlvbi1vbmx5IGB0cmFuc3BvcnQtZGVza3RvcC1jZHBgICh3aGljaCBkcml2ZXMgcmVhbCBDRFAgYW5kIGlzXG4gKiBleGNsdWRlZCBmcm9tIHVuaXQgdGVzdHMpIHNvIHRoZSB2ZXJkaWN0IGxvZ2ljIGFuZCBkZWZhdWx0IHJlc29sdXRpb24gc3RheVxuICogdW5pdC10ZXN0YWJsZS5cbiAqXG4gKiBXaGVuIGFuIE9ic2lkaWFuIGFzYXIgY2Fubm90IHJ1biBvbiB0aGUgbGF1bmNoZWQgRWxlY3Ryb24gc2hlbGwgKHRoZSBpbnN0YWxsZXJcbiAqIHZlcnNpb24gaXMgdG9vIG9sZCBmb3IgdGhhdCBhcHAgdmVyc2lvbiksIHRoZSByZW5kZXJlciBsb2FkcyBgaW5kZXguaHRtbGBcbiAqIChgZG9jdW1lbnQucmVhZHlTdGF0ZWAgcmVhY2hlcyBgJ2NvbXBsZXRlJ2ApIGJ1dCB0aGUgYXBwIG5ldmVyIGJvb3RzdHJhcHM6XG4gKiBgZG9jdW1lbnQuYm9keWAgc3RheXMgZW1wdHkgYW5kIGB3aW5kb3cuYXBwYCByZW1haW5zIGB1bmRlZmluZWRgIFx1MjAxNCB2aXN1YWxseSBhXG4gKiBibGFjayBzY3JlZW4uIFRoZSBvd25lZC12YXVsdCByZWFkaW5lc3MgcG9sbCBjYW5ub3QgdGVsbCB0aGlzIHRlcm1pbmFsIHN0YXRlXG4gKiBhcGFydCBmcm9tIFwic3RpbGwgbG9hZGluZ1wiLCBzbyB3aXRob3V0IGEgZGV0ZWN0b3IgaXQgd2FpdHMgb3V0IHRoZSB3aG9sZVxuICogcmVhZGluZXNzIHRpbWVvdXQgYmVmb3JlIGZhaWxpbmcuIFRoaXMgbW9kdWxlIGVuY29kZXMgdGhlIHNpZ25hbCB0aGF0XG4gKiBkaXN0aW5ndWlzaGVzIHRoZSB0d286IG9uY2UgdGhlIHJlbmRlcmVyIGhhcyBiZWVuIGBjb21wbGV0ZWAgZm9yIGEgc2hvcnQgZ3JhY2VcbiAqIHdpbmRvdyB3aXRoIG5vIGB3aW5kb3cuYXBwYCBhbmQgYW4gZW1wdHkgYDxib2R5PmAsIGl0IGlzIGRlYWQsIG5vdCBzbG93LlxuICovXG5cbmltcG9ydCB0eXBlIHsgT2JzaWRpYW5DZHBUcmFuc3BvcnRPcHRpb25zIH0gZnJvbSAnLi90cmFuc3BvcnQtb3B0aW9ucy5tanMnO1xuXG4vKipcbiAqIERlZmF1bHQgZm9yIHtAbGluayBPYnNpZGlhbkNkcFRyYW5zcG9ydE9wdGlvbnMuZGVhZEJvb3RHcmFjZUluTWlsbGlzZWNvbmRzfS5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfREVBRF9CT09UX0dSQUNFX0lOX01JTExJU0VDT05EUyA9IDEwXzAwMDtcblxuLyoqXG4gKiBBIHNhbXBsZSBvZiB0aGUgb3duZWQgcmVuZGVyZXIncyBib290c3RyYXAgc3RhdGUsIHRha2VuIGZyb20gdGhlIHZhdWx0IHBhZ2VcbiAqIHRhcmdldCB2aWEgYSBzaW5nbGUgQ0RQIGV2YWx1YXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyZXJCb290T2JzZXJ2YXRpb24ge1xuICAvKipcbiAgICogYGRvY3VtZW50LmJvZHkuY2hpbGRFbGVtZW50Q291bnRgIGluIHRoZSB2YXVsdCByZW5kZXJlciAoYDBgIHdoZW4gYGJvZHlgIGlzXG4gICAqIGFic2VudCkuIEEgZGVhZCBib290IGxlYXZlcyB0aGUgYm9keSBlbXB0eTsgYSBzbG93LWJ1dC12YWxpZCBib290IHJlbmRlcnMgYXRcbiAgICogbGVhc3QgYSBsb2FkaW5nIHNoZWxsLlxuICAgKi9cbiAgcmVhZG9ubHkgYm9keUNoaWxkRWxlbWVudENvdW50OiBudW1iZXI7XG5cbiAgLyoqXG4gIFdoZXRoZXIgYHdpbmRvdy5hcHBgIGlzIGRlZmluZWQgaW4gdGhlIHZhdWx0IHJlbmRlcmVyLlxuICAgKi9cbiAgcmVhZG9ubHkgaGFzV2luZG93QXBwOiBib29sZWFuO1xuXG4gIC8qKlxuICBXaGV0aGVyIHRoZSB2YXVsdCByZW5kZXJlcidzIGBkb2N1bWVudC5yZWFkeVN0YXRlYCBpcyBgJ2NvbXBsZXRlJ2AuXG4gICAqL1xuICByZWFkb25seSBpc0RvY3VtZW50Q29tcGxldGU6IGJvb2xlYW47XG59XG5cbi8qKlxuICogVmVyZGljdCBmcm9tIHtAbGluayByZXNvbHZlUmVuZGVyZXJCb290U3RhdGV9OiBgJ2RlYWQnYCB3aGVuIHRoZSByZW5kZXJlciBoYXNcbiAqIHRlcm1pbmFsbHkgZmFpbGVkIHRvIGluaXRpYWxpemUsIGAncGVuZGluZydgIHdoZW4gaXQgbWF5IHN0aWxsIGJlIGJvb3RpbmcuXG4gKi9cbmV4cG9ydCB0eXBlIFJlbmRlcmVyQm9vdFZlcmRpY3QgPSAnZGVhZCcgfCAncGVuZGluZyc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHJlc29sdmVSZW5kZXJlckJvb3RTdGF0ZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb2x2ZVJlbmRlcmVyQm9vdFN0YXRlUGFyYW1zIGV4dGVuZHMgUmVuZGVyZXJCb290T2JzZXJ2YXRpb24ge1xuICAvKipcbiAgICogV2hldGhlciB0aGUgYm9vdHN0cmFwIGdyYWNlIHdpbmRvdyBoYXMgZWxhcHNlZCBzaW5jZSB0aGUgcmVuZGVyZXIgZmlyc3RcbiAgICogcmVhY2hlZCBgZG9jdW1lbnQucmVhZHlTdGF0ZWAgYCdjb21wbGV0ZSdgLiBUaGUgYCdkZWFkJ2AgdmVyZGljdCBpcyB3aXRoaGVsZFxuICAgKiB1bnRpbCB0aGlzIGlzIGB0cnVlYCBzbyBhIGdlbnVpbmVseSBzbG93IGJvb3QgaXMgbmV2ZXIgbWlzanVkZ2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgaGFzR3JhY2VFbGFwc2VkOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBkZWFkLWJvb3QgZmFzdC1mYWlsIGdyYWNlIHdpbmRvdywgYXBwbHlpbmcgdGhlIGRlZmF1bHQgd2hlbiB0aGVcbiAqIG9wdGlvbiBpcyBvbWl0dGVkLlxuICpcbiAqIFRoaXMgYm91bmRzIGhvdyBsb25nIHRoZSBvd25lZC12YXVsdCByZWFkaW5lc3MgcG9sbCB3YWl0cyBcdTIwMTQgYWZ0ZXIgdGhlIHJlbmRlcmVyXG4gKiBmaXJzdCByZWFjaGVzIGBkb2N1bWVudC5yZWFkeVN0YXRlYCBgJ2NvbXBsZXRlJ2AgXHUyMDE0IGJlZm9yZSBjb25jbHVkaW5nIHRoZSBib290XG4gKiBpcyBkZWFkIChzZWUge0BsaW5rIHJlc29sdmVSZW5kZXJlckJvb3RTdGF0ZX0pLiBBIHZhbHVlIG9mIGAwYCBkaXNhYmxlcyBmYXN0LWZhaWxcbiAqIGVudGlyZWx5LCByZXN0b3JpbmcgdGhlIHBsYWluIHdhaXQtb3V0LXRoZS1yZWFkaW5lc3MtdGltZW91dCBiZWhhdmlvci5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBkZXNrdG9wIENEUCB0cmFuc3BvcnQgb3B0aW9ucyAob3IgdGhlIHJlbGV2YW50IHNsaWNlKS5cbiAqIEByZXR1cm5zIFRoZSBncmFjZSB3aW5kb3cgaW4gbWlsbGlzZWNvbmRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZURlYWRCb290R3JhY2VJbk1pbGxpc2Vjb25kcyhcbiAgb3B0aW9ucz86IFBpY2s8T2JzaWRpYW5DZHBUcmFuc3BvcnRPcHRpb25zLCAnZGVhZEJvb3RHcmFjZUluTWlsbGlzZWNvbmRzJz5cbik6IG51bWJlciB7XG4gIHJldHVybiBvcHRpb25zPy5kZWFkQm9vdEdyYWNlSW5NaWxsaXNlY29uZHMgPz8gREVGQVVMVF9ERUFEX0JPT1RfR1JBQ0VfSU5fTUlMTElTRUNPTkRTO1xufVxuXG4vKipcbiAqIERlY2lkZXMgd2hldGhlciB0aGUgb3duZWQgcmVuZGVyZXIgaGFzIHRlcm1pbmFsbHkgZmFpbGVkIHRvIGluaXRpYWxpemUuXG4gKlxuICogVGhlIHZlcmRpY3QgaXMgYCdkZWFkJ2Agb25seSB3aGVuIGFsbCBvZiB0aGUgZm9sbG93aW5nIGhvbGQ6IHRoZSBncmFjZSB3aW5kb3dcbiAqIGhhcyBlbGFwc2VkLCBgd2luZG93LmFwcGAgaXMgc3RpbGwgdW5kZWZpbmVkLCB0aGUgZG9jdW1lbnQgaXMgYCdjb21wbGV0ZSdgLFxuICogYW5kIGA8Ym9keT5gIGlzIGVtcHR5LiBUaGlzIGlzIGV4YWN0bHkgdGhlIG9ic2VydmVkIGluY29tcGF0aWJsZS1zaGVsbCBzdGF0ZVxuICogKGFuIGFzYXIgdGhhdCBjYW5ub3QgcnVuIG9uIHRoZSBsYXVuY2hlZCBFbGVjdHJvbiksIGFuZCBpdCBjYW5ub3QgYmUgcmVhY2hlZFxuICogYnkgYSBoZWFsdGh5IGJvb3QgXHUyMDE0IGB3aW5kb3cuYXBwYCBpcyBkZWZpbmVkIGVhcmx5LCBhbmQgYSBzbG93IGJvb3QgcmVuZGVycyBhXG4gKiBub24tZW1wdHkgbG9hZGluZyBzaGVsbCBcdTIwMTQgc28gdGhlcmUgaXMgbm8gZmFsc2UtcG9zaXRpdmUgcGF0aCBvbiBhIHZhbGlkIGJvb3QuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBzYW1wbGVkIG9ic2VydmF0aW9uIHBsdXMgd2hldGhlciB0aGUgZ3JhY2UgaGFzIGVsYXBzZWQuXG4gKiBAcmV0dXJucyBgJ2RlYWQnYCB3aGVuIHRoZSByZW5kZXJlciBpcyB0ZXJtaW5hbGx5IGRlYWQsIG90aGVyd2lzZSBgJ3BlbmRpbmcnYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVSZW5kZXJlckJvb3RTdGF0ZShwYXJhbXM6IFJlc29sdmVSZW5kZXJlckJvb3RTdGF0ZVBhcmFtcyk6IFJlbmRlcmVyQm9vdFZlcmRpY3Qge1xuICBjb25zdCB7IGJvZHlDaGlsZEVsZW1lbnRDb3VudCwgaGFzR3JhY2VFbGFwc2VkLCBoYXNXaW5kb3dBcHAsIGlzRG9jdW1lbnRDb21wbGV0ZSB9ID0gcGFyYW1zO1xuXG4gIGlmIChoYXNXaW5kb3dBcHApIHtcbiAgICByZXR1cm4gJ3BlbmRpbmcnO1xuICB9XG5cbiAgaWYgKCFoYXNHcmFjZUVsYXBzZWQpIHtcbiAgICByZXR1cm4gJ3BlbmRpbmcnO1xuICB9XG5cbiAgaWYgKGlzRG9jdW1lbnRDb21wbGV0ZSAmJiBib2R5Q2hpbGRFbGVtZW50Q291bnQgPT09IDApIHtcbiAgICByZXR1cm4gJ2RlYWQnO1xuICB9XG5cbiAgcmV0dXJuICdwZW5kaW5nJztcbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQXlCTyxNQUFNLDBDQUEwQztBQXVEaEQsU0FBUyxtQ0FDZCxTQUNRO0FBQ1IsU0FBTyxTQUFTLCtCQUErQjtBQUNqRDtBQWVPLFNBQVMseUJBQXlCLFFBQTZEO0FBQ3BHLFFBQU0sRUFBRSx1QkFBdUIsaUJBQWlCLGNBQWMsbUJBQW1CLElBQUk7QUFFckYsTUFBSSxjQUFjO0FBQ2hCLFdBQU87QUFBQSxFQUNUO0FBRUEsTUFBSSxDQUFDLGlCQUFpQjtBQUNwQixXQUFPO0FBQUEsRUFDVDtBQUVBLE1BQUksc0JBQXNCLDBCQUEwQixHQUFHO0FBQ3JELFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTztBQUNUOyIsCiAgIm5hbWVzIjogW10KfQo=
17
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3JlbmRlcmVyLWJvb3QtZGV0ZWN0aW9uLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUHVyZSBkZXRlY3Rpb24gb2YgYSB0ZXJtaW5hbCBcImRlYWQgYm9vdFwiIG9mIHRoZSBvd25lZCBPYnNpZGlhbiByZW5kZXJlciwgcGx1c1xuICogcmVzb2x2aW5nIHRoZSBmYXN0LWZhaWwgZ3JhY2Ugd2luZG93IGZyb20gdGhlIHRyYW5zcG9ydCBvcHRpb25zLiBLZXB0IHNlcGFyYXRlXG4gKiBmcm9tIHRoZSBpbnRlZ3JhdGlvbi1vbmx5IGB0cmFuc3BvcnQtZGVza3RvcC1jZHBgICh3aGljaCBkcml2ZXMgcmVhbCBDRFAgYW5kIGlzXG4gKiBleGNsdWRlZCBmcm9tIHVuaXQgdGVzdHMpIHNvIHRoZSB2ZXJkaWN0IGxvZ2ljIGFuZCBkZWZhdWx0IHJlc29sdXRpb24gc3RheVxuICogdW5pdC10ZXN0YWJsZS5cbiAqXG4gKiBXaGVuIGFuIE9ic2lkaWFuIGFzYXIgY2Fubm90IHJ1biBvbiB0aGUgbGF1bmNoZWQgRWxlY3Ryb24gc2hlbGwgKHRoZSBpbnN0YWxsZXJcbiAqIHZlcnNpb24gaXMgdG9vIG9sZCBmb3IgdGhhdCBhcHAgdmVyc2lvbiksIHRoZSByZW5kZXJlciBsb2FkcyBgaW5kZXguaHRtbGBcbiAqIChgZG9jdW1lbnQucmVhZHlTdGF0ZWAgcmVhY2hlcyBgJ2NvbXBsZXRlJ2ApIGJ1dCB0aGUgYXBwIG5ldmVyIGJvb3RzdHJhcHM6XG4gKiBgZG9jdW1lbnQuYm9keWAgc3RheXMgZW1wdHkgYW5kIGB3aW5kb3cuYXBwYCByZW1haW5zIGB1bmRlZmluZWRgIFx1MjAxNCB2aXN1YWxseSBhXG4gKiBibGFjayBzY3JlZW4uIFRoZSBvd25lZC12YXVsdCByZWFkaW5lc3MgcG9sbCBjYW5ub3QgdGVsbCB0aGlzIHRlcm1pbmFsIHN0YXRlXG4gKiBhcGFydCBmcm9tIFwic3RpbGwgbG9hZGluZ1wiLCBzbyB3aXRob3V0IGEgZGV0ZWN0b3IgaXQgd2FpdHMgb3V0IHRoZSB3aG9sZVxuICogcmVhZGluZXNzIHRpbWVvdXQgYmVmb3JlIGZhaWxpbmcuIFRoaXMgbW9kdWxlIGVuY29kZXMgdGhlIHNpZ25hbCB0aGF0XG4gKiBkaXN0aW5ndWlzaGVzIHRoZSB0d286IG9uY2UgdGhlIHJlbmRlcmVyIGhhcyBiZWVuIGBjb21wbGV0ZWAgZm9yIGEgc2hvcnQgZ3JhY2VcbiAqIHdpbmRvdyB3aXRoIG5vIGB3aW5kb3cuYXBwYCBhbmQgYW4gZW1wdHkgYDxib2R5PmAsIGl0IGlzIGRlYWQsIG5vdCBzbG93LlxuICovXG5cbmltcG9ydCB0eXBlIHsgT2JzaWRpYW5DZHBUcmFuc3BvcnRPcHRpb25zIH0gZnJvbSAnLi90cmFuc3BvcnQtb3B0aW9ucy5tanMnO1xuXG4vKipcbiAqIERlZmF1bHQgZm9yIHtAbGluayBPYnNpZGlhbkNkcFRyYW5zcG9ydE9wdGlvbnMuZGVhZEJvb3RHcmFjZUluTWlsbGlzZWNvbmRzfS5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfREVBRF9CT09UX0dSQUNFX0lOX01JTExJU0VDT05EUyA9IDEwXzAwMDtcblxuLyoqXG4gKiBBIHNhbXBsZSBvZiB0aGUgb3duZWQgcmVuZGVyZXIncyBib290c3RyYXAgc3RhdGUsIHRha2VuIGZyb20gdGhlIHZhdWx0IHBhZ2VcbiAqIHRhcmdldCB2aWEgYSBzaW5nbGUgQ0RQIGV2YWx1YXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyZXJCb290T2JzZXJ2YXRpb24ge1xuICAvKipcbiAgICogYGRvY3VtZW50LmJvZHkuY2hpbGRFbGVtZW50Q291bnRgIGluIHRoZSB2YXVsdCByZW5kZXJlciAoYDBgIHdoZW4gYGJvZHlgIGlzXG4gICAqIGFic2VudCkuIEEgZGVhZCBib290IGxlYXZlcyB0aGUgYm9keSBlbXB0eTsgYSBzbG93LWJ1dC12YWxpZCBib290IHJlbmRlcnMgYXRcbiAgICogbGVhc3QgYSBsb2FkaW5nIHNoZWxsLlxuICAgKi9cbiAgcmVhZG9ubHkgYm9keUNoaWxkRWxlbWVudENvdW50OiBudW1iZXI7XG5cbiAgLyoqXG4gIFdoZXRoZXIgYHdpbmRvdy5hcHBgIGlzIGRlZmluZWQgaW4gdGhlIHZhdWx0IHJlbmRlcmVyLlxuICAgKi9cbiAgcmVhZG9ubHkgaGFzV2luZG93QXBwOiBib29sZWFuO1xuXG4gIC8qKlxuICBXaGV0aGVyIHRoZSB2YXVsdCByZW5kZXJlcidzIGBkb2N1bWVudC5yZWFkeVN0YXRlYCBpcyBgJ2NvbXBsZXRlJ2AuXG4gICAqL1xuICByZWFkb25seSBpc0RvY3VtZW50Q29tcGxldGU6IGJvb2xlYW47XG59XG5cbi8qKlxuICogVmVyZGljdCBmcm9tIHtAbGluayByZXNvbHZlUmVuZGVyZXJCb290U3RhdGV9OiBgJ2RlYWQnYCB3aGVuIHRoZSByZW5kZXJlciBoYXNcbiAqIHRlcm1pbmFsbHkgZmFpbGVkIHRvIGluaXRpYWxpemUsIGAncGVuZGluZydgIHdoZW4gaXQgbWF5IHN0aWxsIGJlIGJvb3RpbmcuXG4gKi9cbmV4cG9ydCB0eXBlIFJlbmRlcmVyQm9vdFZlcmRpY3QgPSAnZGVhZCcgfCAncGVuZGluZyc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHJlc29sdmVSZW5kZXJlckJvb3RTdGF0ZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb2x2ZVJlbmRlcmVyQm9vdFN0YXRlUGFyYW1zIGV4dGVuZHMgUmVuZGVyZXJCb290T2JzZXJ2YXRpb24ge1xuICAvKipcbiAgICogV2hldGhlciB0aGUgYm9vdHN0cmFwIGdyYWNlIHdpbmRvdyBoYXMgZWxhcHNlZCBzaW5jZSB0aGUgcmVuZGVyZXIgZmlyc3RcbiAgICogcmVhY2hlZCBgZG9jdW1lbnQucmVhZHlTdGF0ZWAgYCdjb21wbGV0ZSdgLiBUaGUgYCdkZWFkJ2AgdmVyZGljdCBpcyB3aXRoaGVsZFxuICAgKiB1bnRpbCB0aGlzIGlzIGB0cnVlYCBzbyBhIGdlbnVpbmVseSBzbG93IGJvb3QgaXMgbmV2ZXIgbWlzanVkZ2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgaGFzR3JhY2VFbGFwc2VkOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBkZWFkLWJvb3QgZmFzdC1mYWlsIGdyYWNlIHdpbmRvdywgYXBwbHlpbmcgdGhlIGRlZmF1bHQgd2hlbiB0aGVcbiAqIG9wdGlvbiBpcyBvbWl0dGVkLlxuICpcbiAqIFRoaXMgYm91bmRzIGhvdyBsb25nIHRoZSBvd25lZC12YXVsdCByZWFkaW5lc3MgcG9sbCB3YWl0cyBcdTIwMTQgYWZ0ZXIgdGhlIHJlbmRlcmVyXG4gKiBmaXJzdCByZWFjaGVzIGBkb2N1bWVudC5yZWFkeVN0YXRlYCBgJ2NvbXBsZXRlJ2AgXHUyMDE0IGJlZm9yZSBjb25jbHVkaW5nIHRoZSBib290XG4gKiBpcyBkZWFkIChzZWUge0BsaW5rIHJlc29sdmVSZW5kZXJlckJvb3RTdGF0ZX0pLiBBIHZhbHVlIG9mIGAwYCBkaXNhYmxlcyBmYXN0LWZhaWxcbiAqIGVudGlyZWx5LCByZXN0b3JpbmcgdGhlIHBsYWluIHdhaXQtb3V0LXRoZS1yZWFkaW5lc3MtdGltZW91dCBiZWhhdmlvci5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBkZXNrdG9wIENEUCB0cmFuc3BvcnQgb3B0aW9ucyAob3IgdGhlIHJlbGV2YW50IHNsaWNlKS5cbiAqIEByZXR1cm5zIFRoZSBncmFjZSB3aW5kb3cgaW4gbWlsbGlzZWNvbmRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZURlYWRCb290R3JhY2VJbk1pbGxpc2Vjb25kcyhcbiAgb3B0aW9ucz86IFBpY2s8T2JzaWRpYW5DZHBUcmFuc3BvcnRPcHRpb25zLCAnZGVhZEJvb3RHcmFjZUluTWlsbGlzZWNvbmRzJz5cbik6IG51bWJlciB7XG4gIHJldHVybiBvcHRpb25zPy5kZWFkQm9vdEdyYWNlSW5NaWxsaXNlY29uZHMgPz8gREVGQVVMVF9ERUFEX0JPT1RfR1JBQ0VfSU5fTUlMTElTRUNPTkRTO1xufVxuXG4vKipcbiAqIERlY2lkZXMgd2hldGhlciB0aGUgb3duZWQgcmVuZGVyZXIgaGFzIHRlcm1pbmFsbHkgZmFpbGVkIHRvIGluaXRpYWxpemUuXG4gKlxuICogVGhlIHZlcmRpY3QgaXMgYCdkZWFkJ2Agb25seSB3aGVuIGFsbCBvZiB0aGUgZm9sbG93aW5nIGhvbGQ6IHRoZSBncmFjZSB3aW5kb3dcbiAqIGhhcyBlbGFwc2VkLCBgd2luZG93LmFwcGAgaXMgc3RpbGwgdW5kZWZpbmVkLCB0aGUgZG9jdW1lbnQgaXMgYCdjb21wbGV0ZSdgLFxuICogYW5kIGA8Ym9keT5gIGlzIGVtcHR5LiBUaGlzIGlzIGV4YWN0bHkgdGhlIG9ic2VydmVkIGluY29tcGF0aWJsZS1zaGVsbCBzdGF0ZVxuICogKGFuIGFzYXIgdGhhdCBjYW5ub3QgcnVuIG9uIHRoZSBsYXVuY2hlZCBFbGVjdHJvbiksIGFuZCBpdCBjYW5ub3QgYmUgcmVhY2hlZFxuICogYnkgYSBoZWFsdGh5IGJvb3QgXHUyMDE0IGB3aW5kb3cuYXBwYCBpcyBkZWZpbmVkIGVhcmx5LCBhbmQgYSBzbG93IGJvb3QgcmVuZGVycyBhXG4gKiBub24tZW1wdHkgbG9hZGluZyBzaGVsbCBcdTIwMTQgc28gdGhlcmUgaXMgbm8gZmFsc2UtcG9zaXRpdmUgcGF0aCBvbiBhIHZhbGlkIGJvb3QuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBzYW1wbGVkIG9ic2VydmF0aW9uIHBsdXMgd2hldGhlciB0aGUgZ3JhY2UgaGFzIGVsYXBzZWQuXG4gKiBAcmV0dXJucyBgJ2RlYWQnYCB3aGVuIHRoZSByZW5kZXJlciBpcyB0ZXJtaW5hbGx5IGRlYWQsIG90aGVyd2lzZSBgJ3BlbmRpbmcnYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVSZW5kZXJlckJvb3RTdGF0ZShwYXJhbXM6IFJlc29sdmVSZW5kZXJlckJvb3RTdGF0ZVBhcmFtcyk6IFJlbmRlcmVyQm9vdFZlcmRpY3Qge1xuICBjb25zdCB7IGJvZHlDaGlsZEVsZW1lbnRDb3VudCwgaGFzR3JhY2VFbGFwc2VkLCBoYXNXaW5kb3dBcHAsIGlzRG9jdW1lbnRDb21wbGV0ZSB9ID0gcGFyYW1zO1xuXG4gIGlmIChoYXNXaW5kb3dBcHAgfHwgIWhhc0dyYWNlRWxhcHNlZCkge1xuICAgIHJldHVybiAncGVuZGluZyc7XG4gIH1cblxuICByZXR1cm4gaXNEb2N1bWVudENvbXBsZXRlICYmIGJvZHlDaGlsZEVsZW1lbnRDb3VudCA9PT0gMCA/ICdkZWFkJyA6ICdwZW5kaW5nJztcbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQXlCTyxNQUFNLDBDQUEwQztBQXVEaEQsU0FBUyxtQ0FDZCxTQUNRO0FBQ1IsU0FBTyxTQUFTLCtCQUErQjtBQUNqRDtBQWVPLFNBQVMseUJBQXlCLFFBQTZEO0FBQ3BHLFFBQU0sRUFBRSx1QkFBdUIsaUJBQWlCLGNBQWMsbUJBQW1CLElBQUk7QUFFckYsTUFBSSxnQkFBZ0IsQ0FBQyxpQkFBaUI7QUFDcEMsV0FBTztBQUFBLEVBQ1Q7QUFFQSxTQUFPLHNCQUFzQiwwQkFBMEIsSUFBSSxTQUFTO0FBQ3RFOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -124,10 +124,7 @@ function tryAcquireSetupLock(params) {
124
124
  }
125
125
  function checkIsLockStale(info, heartbeatStaleInMilliseconds) {
126
126
  const silentForInMilliseconds = Date.now() - getLastSeenAtInMilliseconds(info);
127
- if (info.hostname === hostname()) {
128
- return !checkIsProcessAlive(info.pid) || silentForInMilliseconds > heartbeatStaleInMilliseconds;
129
- }
130
- return silentForInMilliseconds > STALE_LOCK_AGE_IN_MILLISECONDS;
127
+ return info.hostname === hostname() ? !checkIsProcessAlive(info.pid) || silentForInMilliseconds > heartbeatStaleInMilliseconds : silentForInMilliseconds > STALE_LOCK_AGE_IN_MILLISECONDS;
131
128
  }
132
129
  function checkIsOwnLock(info) {
133
130
  return info.pid === process.pid && info.hostname === hostname();
@@ -237,10 +234,7 @@ function formatWaitMessage(params) {
237
234
  return `[integration-setup:${label}] Waiting for the '${scope}' setup lock held by ${describeHolder(info)} to be released (waited ${formatDuration(waitedInMilliseconds)}${heldFor}, giving up in ${formatDuration(remainingInMilliseconds)})...`;
238
235
  }
239
236
  function getErrorCode(error) {
240
- if (error instanceof Error && "code" in error && typeof error.code === "string") {
241
- return error.code;
242
- }
243
- return void 0;
237
+ return error instanceof Error && "code" in error && typeof error.code === "string" ? error.code : void 0;
244
238
  }
245
239
  function getLastSeenAtInMilliseconds(info) {
246
240
  return info.heartbeatAtInMilliseconds ?? info.acquiredAtInMilliseconds;
@@ -287,4 +281,4 @@ export {
287
281
  checkIsSetupLockHeld,
288
282
  tryAcquireSetupLock
289
283
  };
290
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3NldHVwLWxvY2sudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDcm9zcy1wcm9jZXNzIGFkdmlzb3J5IGxvY2sgdGhhdCBzZXJpYWxpemVzIHdob2xlIGludGVncmF0aW9uLXRlc3QgcnVucy5cbiAqXG4gKiBUd28gdGVzdCBydW5zIHRoYXQgZHJpdmUgdGhlIHNhbWUgc2hhcmVkIHJlc291cmNlcyBjb3JydXB0IGVhY2ggb3RoZXI6IG9uXG4gKiBkZXNrdG9wIHRoZXkgc2hhcmUgdGhlIHNpbmdsZSBsb2NhbCBPYnNpZGlhbiBpbnN0YW5jZSwgaXRzIGBvYnNpZGlhbi5qc29uYFxuICogcmVnaXN0cnksIGFuZCB0aGUgQ0RQIHBvcnQ7IG9uIEFuZHJvaWQgdGhleSBzaGFyZSB0aGUgZW11bGF0b3IgYW5kIHRoZSBBcHBpdW1cbiAqIHNlcnZlci4gT25lIHJ1bidzIHNldHVwL3RlYXJkb3duIGtpbGxzIG9yIHJlY29uZmlndXJlcyB0aGUgaW5zdGFuY2UgdGhlIG90aGVyXG4gKiBydW4gaXMgbWlkLWV2YWwgb24gKG9ic2VydmVkIGFzIGBFQ09OTlJFRlVTRURgIG9yIFwidmF1bHQgbm90IG9wZW5cIiksIHNvIGJvdGhcbiAqIHJ1bnMgZmFpbC5cbiAqXG4gKiBUaGlzIGxvY2sgbWFrZXMgdGhlIHNlY29uZCBydW4gKip3YWl0KiogZm9yIHRoZSBmaXJzdCB0byBmaW5pc2ggaW5zdGVhZCBvZlxuICogcnVubmluZyBjb25jdXJyZW50bHkuIEl0IGlzIGhlbGQgZm9yIHRoZSBlbnRpcmUgcnVuOiBhY3F1aXJlZCBhdCB0aGUgc3RhcnQgb2ZcbiAqIHRoZSBjb3JlIHNldHVwIGFuZCByZWxlYXNlZCBieSB0aGUgY29yZSB0ZWFyZG93biAoYW5kIGJ5IHRoZSBwcm9jZXNzIGNsZWFudXBcbiAqIGhhbmRsZXJzKS4gVGhlIGxvY2sgaXMgYSBzZW50aW5lbCBmaWxlIGluIGEgc2hhcmVkIHRlbXAgZGlyZWN0b3J5LCBhbmQgaXRzXG4gKiBob2xkZXIga2VlcHMgYSAqKmhlYXJ0YmVhdCoqIHRpbWVzdGFtcCBpbnNpZGUgaXQgZnJlc2ggZm9yIGFzIGxvbmcgYXMgaXQgaG9sZHNcbiAqIHRoZSBsb2NrIFx1MjAxNCBzbyBhIHJ1biB0aGF0IGNyYXNoZWQgd2l0aG91dCByZWxlYXNpbmcgc3RvcHMgYmVhdGluZyBhbmQgdGhlIG5leHRcbiAqIHJ1biBkZXRlY3RzIHRoZSBsb2NrIGFzIHN0YWxlIGFuZCBzdGVhbHMgaXQuXG4gKlxuICogVGhlIGhlYXJ0YmVhdCwgbm90IHRoZSBob2xkZXIncyBQSUQsIGlzIHdoYXQgcHJvdmVzIGEgaG9sZGVyIGlzIHN0aWxsIHRoZXJlOiBhXG4gKiBQSUQgcHJvYmUgb25seSBhbnN3ZXJzIFwiZG9lcyAqYSogcHJvY2VzcyB3aXRoIHRoaXMgUElEIGV4aXN0XCIsIHdoaWNoIGFcbiAqIHJlY3ljbGVkIFBJRCBzYXRpc2ZpZXMgbG9uZyBhZnRlciB0aGUgcmVhbCBob2xkZXIgZGllZCBcdTIwMTQgbGVhdmluZyBldmVyeSBsYXRlclxuICogcnVuIHRvIGJsb2NrIGZvciB0aGUgZnVsbCBhY3F1aXNpdGlvbiB0aW1lb3V0LlxuICovXG5cbmltcG9ydCB7XG4gIG1rZGlyU3luYyxcbiAgcmVhZEZpbGVTeW5jLFxuICBybVN5bmMsXG4gIHdyaXRlRmlsZVN5bmNcbn0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQge1xuICBob3N0bmFtZSxcbiAgdG1wZGlyXG59IGZyb20gJ25vZGU6b3MnO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgcHJvY2VzcyBmcm9tICdub2RlOnByb2Nlc3MnO1xuXG5pbXBvcnQgeyBlcnJvclRvU3RyaW5nIH0gZnJvbSAnLi9lcnJvci10by1zdHJpbmcubWpzJztcbmltcG9ydCB7IGxvZyB9IGZyb20gJy4vbG9nLm1qcyc7XG5cbi8qKlxuICogVGhlIHNjb3BlIGV2ZXJ5IEFuZHJvaWQgcnVuIHNlcmlhbGl6ZXMgb246IHRoZSBBcHBpdW0gdHJhbnNwb3J0J3MgZ2xvYmFsXG4gKiBzZXR1cCwgYSBwcm9qZWN0IHRoYXQgdGFrZXMgdGhlIGxvY2sgaXRzZWxmLCBhbmQgdGhlIGVtdWxhdG9yIHJlYXBlciBhbGxcbiAqIGhhdmUgdG8gbmFtZSB0aGUgc2FtZSBvbmUsIG9yIHRoZXkgc2VyaWFsaXplIGFnYWluc3Qgbm90aGluZy5cbiAqL1xuZXhwb3J0IGNvbnN0IEFORFJPSURfU0VUVVBfTE9DS19TQ09QRSA9ICdhbmRyb2lkJztcblxuY29uc3QgTE9DS19ESVJfTkFNRSA9ICdvYnNpZGlhbi1pbnRlZ3JhdGlvbi10ZXN0aW5nJztcbmNvbnN0IExPQ0tfRklMRV9TVUZGSVggPSAnLnNldHVwLmxvY2snO1xuY29uc3QgUE9MTF9JTlRFUlZBTF9JTl9NSUxMSVNFQ09ORFMgPSA1MDA7XG5jb25zdCBNSUxMSVNFQ09ORFNfUEVSX1NFQ09ORCA9IDEwMDA7XG5jb25zdCBTRUNPTkRTX1BFUl9NSU5VVEUgPSA2MDtcbmNvbnN0IEhFQVJUQkVBVF9JTlRFUlZBTF9JTl9TRUNPTkRTID0gNTtcbmNvbnN0IEhFQVJUQkVBVF9JTlRFUlZBTF9JTl9NSUxMSVNFQ09ORFMgPSBIRUFSVEJFQVRfSU5URVJWQUxfSU5fU0VDT05EUyAqIE1JTExJU0VDT05EU19QRVJfU0VDT05EO1xuLy8gR2VuZXJvdXMgb24gcHVycG9zZTogYSBkZWFkIGhvbGRlciBpcyBub3JtYWxseSBjYXVnaHQgaW5zdGFudGx5IGJ5IHRoZSBQSURcbi8vIHByb2JlLCBzbyB0aGlzIHRocmVzaG9sZCBvbmx5IGhhcyB0byBjb3ZlciB0aGUgcmVjeWNsZWQtUElEIGNhc2UuIFR3byBtaW51dGVzXG4vLyBrZWVwcyBhIGhvbGRlciB0aGF0IGJsb2NrcyBpdHMgZXZlbnQgbG9vcCBkdXJpbmcgaGVhdnkgc3luY2hyb25vdXMgd29yayAoYVxuLy8gbGFyZ2UgdmF1bHQgc3luYywgYW4gaW5zdGFsbGVyIHVucGFjaykgZnJvbSBiZWluZyByb2JiZWQgd2hpbGUgaXQgaXMgYWxpdmUuXG5jb25zdCBNSVNTRURfSEVBUlRCRUFUU19CRUZPUkVfU1RBTEUgPSAyNDtcbmNvbnN0IEhFQVJUQkVBVF9TVEFMRV9JTl9NSUxMSVNFQ09ORFMgPSBIRUFSVEJFQVRfSU5URVJWQUxfSU5fTUlMTElTRUNPTkRTICogTUlTU0VEX0hFQVJUQkVBVFNfQkVGT1JFX1NUQUxFO1xuY29uc3QgV0FJVF9MT0dfSU5URVJWQUxfSU5fU0VDT05EUyA9IDMwO1xuY29uc3QgV0FJVF9MT0dfSU5URVJWQUxfSU5fTUlMTElTRUNPTkRTID0gV0FJVF9MT0dfSU5URVJWQUxfSU5fU0VDT05EUyAqIE1JTExJU0VDT05EU19QRVJfU0VDT05EO1xuY29uc3QgU1RBTEVfTE9DS19BR0VfSU5fTUlOVVRFUyA9IDMwO1xuY29uc3QgREVGQVVMVF9USU1FT1VUX0lOX01JTlVURVMgPSA2MDtcbmNvbnN0IFNUQUxFX0xPQ0tfQUdFX0lOX01JTExJU0VDT05EUyA9IFNUQUxFX0xPQ0tfQUdFX0lOX01JTlVURVMgKiBTRUNPTkRTX1BFUl9NSU5VVEUgKiBNSUxMSVNFQ09ORFNfUEVSX1NFQ09ORDtcbmNvbnN0IERFRkFVTFRfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSBERUZBVUxUX1RJTUVPVVRfSU5fTUlOVVRFUyAqIFNFQ09ORFNfUEVSX01JTlVURSAqIE1JTExJU0VDT05EU19QRVJfU0VDT05EO1xuY29uc3QgUFJPQ0VTU19FWElTVEVOQ0VfUFJPQkVfU0lHTkFMID0gMDtcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgYWNxdWlyZVNldHVwTG9ja30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWNxdWlyZVNldHVwTG9ja1BhcmFtcyB7XG4gIC8qKlxuICBTaG9ydCB0cmFuc3BvcnQgbGFiZWwgZm9yIGxvZyBtZXNzYWdlcyAoZS5nLiBgXCJvYnNpZGlhbi1jbGlcImApLlxuICAgKi9cbiAgcmVhZG9ubHkgbGFiZWw6IHN0cmluZztcblxuICAvKipcbiAgICogTG9naWNhbCBzY29wZSB0aGUgbG9jayBzZXJpYWxpemVzIHdpdGhpbi4gUnVucyB0aGF0IHNoYXJlIHJlc291cmNlcyBtdXN0XG4gICAqIHVzZSB0aGUgc2FtZSBzY29wZSAoZS5nLiBgXCJkZXNrdG9wXCJgIGZvciB0aGUgQ0xJL0NEUCB0cmFuc3BvcnRzLCBgXCJhbmRyb2lkXCJgXG4gICAqIGZvciB0aGUgQXBwaXVtIHRyYW5zcG9ydCkuXG4gICAqL1xuICByZWFkb25seSBzY29wZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIHRpbWUgdG8gd2FpdCBmb3IgYSBjb21wZXRpbmcgcnVuIHRvIHJlbGVhc2UgdGhlIGxvY2sgYmVmb3JlIGdpdmluZ1xuICAgKiB1cCBhbmQgdGhyb3dpbmcuXG4gICAqXG4gICAqIEBkZWZhdWx0IDEgaG91clxuICAgKi9cbiAgcmVhZG9ubHkgdGltZW91dEluTWlsbGlzZWNvbmRzPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEEgaGVsZCBzZXR1cCBsb2NrLiBSZWxlYXNlIGl0IG9uY2UgdGhlIHJ1bidzIHRlYXJkb3duIGlzIGNvbXBsZXRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNldHVwTG9jayB7XG4gIC8qKlxuICBSZWxlYXNlcyB0aGUgbG9jay4gU2FmZSB0byBjYWxsIG1vcmUgdGhhbiBvbmNlLlxuICAgKi9cbiAgcmVsZWFzZTogKCkgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgdHJ5QWNxdWlyZVNldHVwTG9ja30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJ5QWNxdWlyZVNldHVwTG9ja1BhcmFtcyB7XG4gIC8qKlxuICBTaG9ydCB0cmFuc3BvcnQgbGFiZWwgZm9yIGxvZyBtZXNzYWdlcywgcmVjb3JkZWQgaW4gdGhlIGxvY2sgZmlsZSBhcyB0aGUgaG9sZGVyJ3MuXG4gICAqL1xuICByZWFkb25seSBsYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICBMb2dpY2FsIHNjb3BlIHRoZSBsb2NrIHNlcmlhbGl6ZXMgd2l0aGluIFx1MjAxNCBzZWUge0BsaW5rIEFjcXVpcmVTZXR1cExvY2tQYXJhbXMuc2NvcGV9LlxuICAgKi9cbiAgcmVhZG9ubHkgc2NvcGU6IHN0cmluZztcblxuICAvKipcbiAgICogSG93IGxvbmcgYSBzYW1lLWhvc3QgaG9sZGVyIHdob3NlIFBJRCBpcyBzdGlsbCBhbGl2ZSBtYXkgZ28gd2l0aG91dCBhXG4gICAqIGhlYXJ0YmVhdCBiZWZvcmUgaXRzIGxvY2sgY291bnRzIGFzIGFiYW5kb25lZC5cbiAgICpcbiAgICogQSBkZWFkIGhvbGRlciBQSUQgaXMgYWJhbmRvbmVkIGF0IG9uY2Ugd2hhdGV2ZXIgdGhpcyBzYXlzLiBUaGUgZGVmYXVsdCBpc1xuICAgKiB0aGUgdGhyZXNob2xkIGV2ZXJ5IHdhaXRpbmcgcnVuIHN0ZWFscyBvbjsgYSBjYWxsZXIgdGhhdCBpcyAqYWx3YXlzKiB3YWl0aW5nXG4gICAqIFx1MjAxNCB0aGUgZW11bGF0b3IgcmVhcGVyIFx1MjAxNCBwYXNzZXMgYSBmYXIgd2lkZXIgb25lLCBzbyBhIGxpdmUgcnVuIHRoYXQgYmxvY2tzXG4gICAqIGl0cyBldmVudCBsb29wIGZvciBhIGNvdXBsZSBvZiBtaW51dGVzIGlzIG5vdCByb2JiZWQgb2YgaXRzIGxvY2suXG4gICAqXG4gICAqIEBkZWZhdWx0IDIgbWludXRlc1xuICAgKi9cbiAgcmVhZG9ubHkgc3RhbGVBZnRlclNpbGVuY2VJbk1pbGxpc2Vjb25kcz86IG51bWJlciB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgY3JlYXRlTG9ja0hhbmRsZX0uXG4gKi9cbmludGVyZmFjZSBDcmVhdGVMb2NrSGFuZGxlUGFyYW1zIHtcbiAgLyoqXG4gIFRoZSB0cmFuc3BvcnQgbGFiZWwgb2YgdGhpcyBydW4uXG4gICAqL1xuICByZWFkb25seSBsYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICBUaGUgcGF0aCB0byB0aGUgbG9jayBmaWxlIHRoaXMgcnVuIGp1c3QgY3JlYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGxvY2tGaWxlUGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICBUaGUgbG9jayBpbmZvIHRoaXMgcnVuIHdyb3RlIHdoZW4gaXQgYWNxdWlyZWQgdGhlIGxvY2suXG4gICAqL1xuICByZWFkb25seSBvd25JbmZvOiBMb2NrRmlsZUluZm87XG5cbiAgLyoqXG4gIFRoZSBsb2NrIHNjb3BlLCBmb3IgbG9nIG1lc3NhZ2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgc2NvcGU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgY3JlYXRlVGltZW91dEVycm9yfS5cbiAqL1xuaW50ZXJmYWNlIENyZWF0ZVRpbWVvdXRFcnJvclBhcmFtcyB7XG4gIC8qKlxuICBUaGUgY3VycmVudCBob2xkZXIncyBsb2NrIGluZm8sIG9yIGBudWxsYCBpZiBpdCBjb3VsZCBub3QgYmUgcmVhZC5cbiAgICovXG4gIHJlYWRvbmx5IGluZm86IExvY2tGaWxlSW5mbyB8IG51bGw7XG5cbiAgLyoqXG4gIFRoZSBsb2NrIHNjb3BlLlxuICAgKi9cbiAgcmVhZG9ubHkgc2NvcGU6IHN0cmluZztcblxuICAvKipcbiAgVGhlIHRpbWVvdXQgdGhhdCBlbGFwc2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgdGltZW91dEluTWlsbGlzZWNvbmRzOiBudW1iZXI7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGZvcm1hdFdhaXRNZXNzYWdlfS5cbiAqL1xuaW50ZXJmYWNlIEZvcm1hdFdhaXRNZXNzYWdlUGFyYW1zIHtcbiAgLyoqXG4gIFRoZSBjdXJyZW50IGhvbGRlcidzIGxvY2sgaW5mbywgb3IgYG51bGxgIGlmIGl0IGNvdWxkIG5vdCBiZSByZWFkLlxuICAgKi9cbiAgcmVhZG9ubHkgaW5mbzogTG9ja0ZpbGVJbmZvIHwgbnVsbDtcblxuICAvKipcbiAgVGhlIHRyYW5zcG9ydCBsYWJlbCBvZiB0aGUgd2FpdGluZyBydW4uXG4gICAqL1xuICByZWFkb25seSBsYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICBIb3cgbXVjaCBvZiB0aGUgYWNxdWlzaXRpb24gdGltZW91dCBpcyBsZWZ0LlxuICAgKi9cbiAgcmVhZG9ubHkgcmVtYWluaW5nSW5NaWxsaXNlY29uZHM6IG51bWJlcjtcblxuICAvKipcbiAgVGhlIGxvY2sgc2NvcGUuXG4gICAqL1xuICByZWFkb25seSBzY29wZTogc3RyaW5nO1xuXG4gIC8qKlxuICBIb3cgbG9uZyB0aGlzIHJ1biBoYXMgYmVlbiB3YWl0aW5nIHNvIGZhci5cbiAgICovXG4gIHJlYWRvbmx5IHdhaXRlZEluTWlsbGlzZWNvbmRzOiBudW1iZXI7XG59XG5cbi8qKlxuICogVGhlIEpTT04gcGF5bG9hZCBzdG9yZWQgaW5zaWRlIGEgbG9jayBmaWxlLCBpZGVudGlmeWluZyB0aGUgaG9sZGVyLlxuICovXG5pbnRlcmZhY2UgTG9ja0ZpbGVJbmZvIHtcbiAgLyoqXG4gIFdoZW4gdGhlIGxvY2sgd2FzIGFjcXVpcmVkIChgRGF0ZS5ub3coKWAgZXBvY2ggbWlsbGlzZWNvbmRzKS5cbiAgICovXG4gIHJlYWRvbmx5IGFjcXVpcmVkQXRJbk1pbGxpc2Vjb25kczogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRoZSBob2xkZXIgbGFzdCBwcm92ZWQgaXQgd2FzIHN0aWxsIGFsaXZlIChgRGF0ZS5ub3coKWAgZXBvY2hcbiAgICogbWlsbGlzZWNvbmRzKSwgcmVmcmVzaGVkIGV2ZXJ5IHtAbGluayBIRUFSVEJFQVRfSU5URVJWQUxfSU5fTUlMTElTRUNPTkRTfVxuICAgKiB3aGlsZSB0aGUgbG9jayBpcyBoZWxkLlxuICAgKlxuICAgKiBBYnNlbnQgaW4gYSBsb2NrIGZpbGUgd3JpdHRlbiBieSBhbiBvbGRlciB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZSwgd2hpY2hcbiAgICogc3RhbXBlZCB0aGUgUElEIGJ1dCBuZXZlciBiZWF0LlxuICAgKi9cbiAgcmVhZG9ubHkgaGVhcnRiZWF0QXRJbk1pbGxpc2Vjb25kcz86IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgVGhlIGhvc3QgdGhhdCBob2xkcyB0aGUgbG9jayAoUElEIGxpdmVuZXNzIGlzIG9ubHkgdmFsaWQgb24gdGhlIHNhbWUgaG9zdCkuXG4gICAqL1xuICByZWFkb25seSBob3N0bmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICBUaGUgdHJhbnNwb3J0IGxhYmVsIG9mIHRoZSBob2xkaW5nIHJ1bi5cbiAgICovXG4gIHJlYWRvbmx5IGxhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gIFRoZSBwcm9jZXNzIElEIG9mIHRoZSBob2xkaW5nIHJ1bi5cbiAgICovXG4gIHJlYWRvbmx5IHBpZDogbnVtYmVyO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBkaWRSZWZyZXNoSGVhcnRiZWF0fS5cbiAqL1xuaW50ZXJmYWNlIFJlZnJlc2hIZWFydGJlYXRQYXJhbXMge1xuICAvKipcbiAgVGhlIHRyYW5zcG9ydCBsYWJlbCBvZiB0aGlzIHJ1bi5cbiAgICovXG4gIHJlYWRvbmx5IGxhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gIFRoZSBwYXRoIHRvIHRoZSBsb2NrIGZpbGUgdG8gcmVmcmVzaC5cbiAgICovXG4gIHJlYWRvbmx5IGxvY2tGaWxlUGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICBUaGUgbG9jayBpbmZvIHRoaXMgcnVuIHdyb3RlIHdoZW4gaXQgYWNxdWlyZWQgdGhlIGxvY2suXG4gICAqL1xuICByZWFkb25seSBvd25JbmZvOiBMb2NrRmlsZUluZm87XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHN0ZWFsU3RhbGVMb2NrfS5cbiAqL1xuaW50ZXJmYWNlIFN0ZWFsU3RhbGVMb2NrUGFyYW1zIHtcbiAgLyoqXG4gIFRoZSBhYmFuZG9uZWQgaG9sZGVyJ3MgbG9jayBpbmZvLlxuICAgKi9cbiAgcmVhZG9ubHkgaW5mbzogTG9ja0ZpbGVJbmZvO1xuXG4gIC8qKlxuICBUaGUgdHJhbnNwb3J0IGxhYmVsIG9mIHRoZSBzdGVhbGluZyBydW4uXG4gICAqL1xuICByZWFkb25seSBsYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICBUaGUgcGF0aCB0byB0aGUgbG9jayBmaWxlIHRvIHJlbW92ZS5cbiAgICovXG4gIHJlYWRvbmx5IGxvY2tGaWxlUGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICBUaGUgbG9jayBzY29wZSwgZm9yIHRoZSBsb2cgbWVzc2FnZS5cbiAgICovXG4gIHJlYWRvbmx5IHNjb3BlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQWNxdWlyZXMgdGhlIGNyb3NzLXByb2Nlc3Mgc2V0dXAgbG9jayBmb3IgdGhlIGdpdmVuIHNjb3BlLCB3YWl0aW5nIHVudGlsIGFueVxuICogY29tcGV0aW5nIHJ1biByZWxlYXNlcyBpdCAob3IgaXRzIGxvY2sgaXMgZGV0ZWN0ZWQgYXMgc3RhbGUpLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgbG9jayBwYXJhbWV0ZXJzLlxuICogQHJldHVybnMgQSBoYW5kbGUgd2hvc2Uge0BsaW5rIFNldHVwTG9jay5yZWxlYXNlfSBmcmVlcyB0aGUgbG9jay5cbiAqIEB0aHJvd3MgSWYgdGhlIGxvY2sgY2Fubm90IGJlIGFjcXVpcmVkIHdpdGhpbiBgdGltZW91dEluTWlsbGlzZWNvbmRzYC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFjcXVpcmVTZXR1cExvY2socGFyYW1zOiBBY3F1aXJlU2V0dXBMb2NrUGFyYW1zKTogUHJvbWlzZTxTZXR1cExvY2s+IHtcbiAgY29uc3Qge1xuICAgIGxhYmVsLFxuICAgIHNjb3BlXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IHRpbWVvdXRJbk1pbGxpc2Vjb25kcyA9IHBhcmFtcy50aW1lb3V0SW5NaWxsaXNlY29uZHMgPz8gREVGQVVMVF9USU1FT1VUX0lOX01JTExJU0VDT05EUztcbiAgY29uc3QgbG9ja0ZpbGVQYXRoID0gZ2V0TG9ja0ZpbGVQYXRoKHNjb3BlKTtcbiAgbWtkaXJTeW5jKGdldExvY2tEaXJlY3RvcnkoKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cbiAgY29uc3Qgc3RhcnRlZEF0SW5NaWxsaXNlY29uZHMgPSBEYXRlLm5vdygpO1xuICBjb25zdCBkZWFkbGluZUluTWlsbGlzZWNvbmRzID0gc3RhcnRlZEF0SW5NaWxsaXNlY29uZHMgKyB0aW1lb3V0SW5NaWxsaXNlY29uZHM7XG4gIGxldCBsYXN0TG9nZ2VkV2FpdEF0SW5NaWxsaXNlY29uZHM6IG51bGwgfCBudW1iZXIgPSBudWxsO1xuXG4gIGZvciAoOzspIHtcbiAgICBjb25zdCBvd25JbmZvID0gdHJ5Q3JlYXRlTG9ja0ZpbGUobG9ja0ZpbGVQYXRoLCBsYWJlbCk7XG4gICAgaWYgKG93bkluZm8pIHtcbiAgICAgIHJldHVybiBjcmVhdGVMb2NrSGFuZGxlKHtcbiAgICAgICAgbGFiZWwsXG4gICAgICAgIGxvY2tGaWxlUGF0aCxcbiAgICAgICAgb3duSW5mbyxcbiAgICAgICAgc2NvcGVcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGluZm8gPSByZWFkTG9ja0ZpbGVJbmZvKGxvY2tGaWxlUGF0aCk7XG4gICAgaWYgKGluZm8gJiYgY2hlY2tJc0xvY2tTdGFsZShpbmZvLCBIRUFSVEJFQVRfU1RBTEVfSU5fTUlMTElTRUNPTkRTKSkge1xuICAgICAgc3RlYWxTdGFsZUxvY2soeyBpbmZvLCBsYWJlbCwgbG9ja0ZpbGVQYXRoLCBzY29wZSB9KTtcbiAgICAgIC8vIFJldHJ5IGltbWVkaWF0ZWx5IFx1MjAxNCBidXQgc3RpbGwgaG9ub3VyIHRoZSBkZWFkbGluZSwgc28gYSBsb2NrIHRoYXQgYVxuICAgICAgLy8gY29tcGV0aW5nIHJ1biBrZWVwcyByZWNyZWF0aW5nIGNhbm5vdCBzcGluIHRoaXMgbG9vcCBmb3JldmVyLlxuICAgICAgaWYgKERhdGUubm93KCkgPj0gZGVhZGxpbmVJbk1pbGxpc2Vjb25kcykge1xuICAgICAgICB0aHJvdyBjcmVhdGVUaW1lb3V0RXJyb3Ioe1xuICAgICAgICAgIGluZm8sXG4gICAgICAgICAgc2NvcGUsXG4gICAgICAgICAgdGltZW91dEluTWlsbGlzZWNvbmRzXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3Qgbm93SW5NaWxsaXNlY29uZHMgPSBEYXRlLm5vdygpO1xuICAgIGlmIChub3dJbk1pbGxpc2Vjb25kcyA+PSBkZWFkbGluZUluTWlsbGlzZWNvbmRzKSB7XG4gICAgICB0aHJvdyBjcmVhdGVUaW1lb3V0RXJyb3Ioe1xuICAgICAgICBpbmZvLFxuICAgICAgICBzY29wZSxcbiAgICAgICAgdGltZW91dEluTWlsbGlzZWNvbmRzXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBzaG91bGRMb2dXYWl0ID0gbGFzdExvZ2dlZFdhaXRBdEluTWlsbGlzZWNvbmRzID09PSBudWxsXG4gICAgICB8fCBub3dJbk1pbGxpc2Vjb25kcyAtIGxhc3RMb2dnZWRXYWl0QXRJbk1pbGxpc2Vjb25kcyA+PSBXQUlUX0xPR19JTlRFUlZBTF9JTl9NSUxMSVNFQ09ORFM7XG4gICAgaWYgKHNob3VsZExvZ1dhaXQpIHtcbiAgICAgIGxhc3RMb2dnZWRXYWl0QXRJbk1pbGxpc2Vjb25kcyA9IG5vd0luTWlsbGlzZWNvbmRzO1xuICAgICAgbG9nKGZvcm1hdFdhaXRNZXNzYWdlKHtcbiAgICAgICAgaW5mbyxcbiAgICAgICAgbGFiZWwsXG4gICAgICAgIHJlbWFpbmluZ0luTWlsbGlzZWNvbmRzOiBkZWFkbGluZUluTWlsbGlzZWNvbmRzIC0gbm93SW5NaWxsaXNlY29uZHMsXG4gICAgICAgIHNjb3BlLFxuICAgICAgICB3YWl0ZWRJbk1pbGxpc2Vjb25kczogbm93SW5NaWxsaXNlY29uZHMgLSBzdGFydGVkQXRJbk1pbGxpc2Vjb25kc1xuICAgICAgfSkpO1xuICAgIH1cblxuICAgIGF3YWl0IGRlbGF5KFBPTExfSU5URVJWQUxfSU5fTUlMTElTRUNPTkRTKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlcG9ydHMgd2hldGhlciBhIHJ1biBjdXJyZW50bHkgaG9sZHMgdGhlIHNldHVwIGxvY2sgZm9yIGEgc2NvcGUuXG4gKlxuICogQSBsb2NrIGZpbGUgdGhhdCBleGlzdHMgYnV0IGNhbm5vdCBiZSByZWFkIGNvdW50cyBhcyBoZWxkIFx1MjAxNCB0aGUgc2FtZSBhbnN3ZXJcbiAqIHtAbGluayBhY3F1aXJlU2V0dXBMb2NrfSBnaXZlcyBieSB3YWl0aW5nIG9uIGl0OiBpdCBpcyBlaXRoZXIgbWlkLXdyaXRlIG9yXG4gKiBjb3JydXB0LCBhbmQgZWl0aGVyIHdheSBubyBydW4gY2FuIHRha2UgaXQuXG4gKlxuICogQHBhcmFtIHNjb3BlIC0gVGhlIGxvY2sgc2NvcGUuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgd2hlbiBhIGhvbGRlciB0aGF0IGlzIG5vdCBzdGFsZSBvd25zIHRoZSBsb2NrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tJc1NldHVwTG9ja0hlbGQoc2NvcGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBsZXQgdGV4dDogc3RyaW5nO1xuICB0cnkge1xuICAgIHRleHQgPSByZWFkRmlsZVN5bmMoZ2V0TG9ja0ZpbGVQYXRoKHNjb3BlKSwgJ3V0Zi04Jyk7XG4gIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgcmV0dXJuIGdldEVycm9yQ29kZShlcnJvcikgIT09ICdFTk9FTlQnO1xuICB9XG5cbiAgbGV0IGluZm86IExvY2tGaWxlSW5mbztcbiAgdHJ5IHtcbiAgICBpbmZvID0gSlNPTi5wYXJzZSh0ZXh0KSBhcyBMb2NrRmlsZUluZm87XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuICFjaGVja0lzTG9ja1N0YWxlKGluZm8sIEhFQVJUQkVBVF9TVEFMRV9JTl9NSUxMSVNFQ09ORFMpO1xufVxuXG4vKipcbiAqIFRha2VzIHRoZSBzZXR1cCBsb2NrIGZvciBhIHNjb3BlIGlmIGl0IGlzIGZyZWUgb3IgYWJhbmRvbmVkLCB3aXRob3V0IHdhaXRpbmcuXG4gKlxuICogT25lIGF0dGVtcHQ6IGEgbGl2ZSBob2xkZXIgXHUyMDE0IG9yIGEgbG9jayBmaWxlIHRoYXQgY2Fubm90IGJlIHJlYWQgXHUyMDE0IG1lYW5zXG4gKiBgdW5kZWZpbmVkYCwgYW5kIHRoZSBjYWxsZXIgZGVjaWRlcyB3aGV0aGVyIHRvIHRyeSBhZ2FpbiBsYXRlci5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGxvY2sgcGFyYW1ldGVycy5cbiAqIEByZXR1cm5zIEEgaGFuZGxlIHdob3NlIHtAbGluayBTZXR1cExvY2sucmVsZWFzZX0gZnJlZXMgdGhlIGxvY2ssIG9yIGB1bmRlZmluZWRgIHdoaWxlIGFub3RoZXIgcnVuIGhvbGRzIGl0LlxuICogQHRocm93cyBJZiB0aGUgZmlsZSBzeXN0ZW0gZmFpbHMgZm9yIGFueSByZWFzb24gb3RoZXIgdGhhbiB0aGUgbG9jayBmaWxlIGFscmVhZHkgZXhpc3RpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cnlBY3F1aXJlU2V0dXBMb2NrKHBhcmFtczogVHJ5QWNxdWlyZVNldHVwTG9ja1BhcmFtcyk6IFNldHVwTG9jayB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHsgbGFiZWwsIHNjb3BlIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGxvY2tGaWxlUGF0aCA9IGdldExvY2tGaWxlUGF0aChzY29wZSk7XG4gIG1rZGlyU3luYyhnZXRMb2NrRGlyZWN0b3J5KCksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gIGxldCBvd25JbmZvID0gdHJ5Q3JlYXRlTG9ja0ZpbGUobG9ja0ZpbGVQYXRoLCBsYWJlbCk7XG4gIGlmICghb3duSW5mbykge1xuICAgIGNvbnN0IGluZm8gPSByZWFkTG9ja0ZpbGVJbmZvKGxvY2tGaWxlUGF0aCk7XG4gICAgaWYgKCFpbmZvIHx8ICFjaGVja0lzTG9ja1N0YWxlKGluZm8sIHBhcmFtcy5zdGFsZUFmdGVyU2lsZW5jZUluTWlsbGlzZWNvbmRzID8/IEhFQVJUQkVBVF9TVEFMRV9JTl9NSUxMSVNFQ09ORFMpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHN0ZWFsU3RhbGVMb2NrKHsgaW5mbywgbGFiZWwsIGxvY2tGaWxlUGF0aCwgc2NvcGUgfSk7XG4gICAgb3duSW5mbyA9IHRyeUNyZWF0ZUxvY2tGaWxlKGxvY2tGaWxlUGF0aCwgbGFiZWwpO1xuICAgIGlmICghb3duSW5mbykge1xuICAgICAgLy8gQW5vdGhlciBydW4gcmVjcmVhdGVkIGl0IGJldHdlZW4gdGhlIHN0ZWFsIGFuZCB0aGlzIGF0dGVtcHQ7IGl0IGlzIHRoZWlycyBub3cuXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjcmVhdGVMb2NrSGFuZGxlKHtcbiAgICBsYWJlbCxcbiAgICBsb2NrRmlsZVBhdGgsXG4gICAgb3duSW5mbyxcbiAgICBzY29wZVxuICB9KTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBsb2NrIGNhbiBiZSBjb25zaWRlcmVkIGFiYW5kb25lZC5cbiAqXG4gKiBBIGxpdmUgaG9sZGVyIHJlZnJlc2hlcyBpdHMgaGVhcnRiZWF0IGV2ZXJ5XG4gKiB7QGxpbmsgSEVBUlRCRUFUX0lOVEVSVkFMX0lOX01JTExJU0VDT05EU30sIHNvIGEgaGVhcnRiZWF0IHRoYXQgc3RvcHBlZCBtZWFuc1xuICogdGhlIGhvbGRlciBpcyBnb25lLiBUaGF0IGlzIHRoZSBwcmltYXJ5IHNpZ25hbCwgYmVjYXVzZSB0aGUgcmVjb3JkZWQgUElEIGFsb25lXG4gKiBjYW5ub3QgYmUgdHJ1c3RlZDoge0BsaW5rIGNoZWNrSXNQcm9jZXNzQWxpdmV9IG9ubHkgYW5zd2VycyBcImRvZXMgKmEqIHByb2Nlc3NcbiAqIHdpdGggdGhpcyBQSUQgZXhpc3RcIiwgd2hpY2ggYSByZWN5Y2xlZCBQSUQgc2F0aXNmaWVzIGxvbmcgYWZ0ZXIgdGhlIGhvbGRlclxuICogZGllZC5cbiAqXG4gKiBPbiB0aGUgc2FtZSBob3N0IGEgZGVhZCBQSUQgaXMgc3RpbGwgYW4gaW1tZWRpYXRlIGdpdmUtYXdheSwgc28gaXQgaXMga2VwdCBhc1xuICogYSBmYXN0IHBhdGguIE9uIGEgZGlmZmVyZW50IGhvc3QgKGEgc2hhcmVkL25ldHdvcmsgdGVtcCBkaXJlY3RvcnkpIHRoZSBQSURcbiAqIGNhbm5vdCBiZSBwcm9iZWQgYXQgYWxsIGFuZCB0aGUgdHdvIGNsb2NrcyBtYXkgZGlzYWdyZWUsIHNvIHRoZSBtdWNoIHdpZGVyXG4gKiB7QGxpbmsgU1RBTEVfTE9DS19BR0VfSU5fTUlMTElTRUNPTkRTfSB0aHJlc2hvbGQgaXMgdXNlZCBpbnN0ZWFkLlxuICpcbiAqIEBwYXJhbSBpbmZvIC0gVGhlIHBhcnNlZCBsb2NrIGluZm8uXG4gKiBAcGFyYW0gaGVhcnRiZWF0U3RhbGVJbk1pbGxpc2Vjb25kcyAtIEhvdyBsb25nIGEgc2FtZS1ob3N0IGhvbGRlciB3aG9zZSBQSUQgaXMgYWxpdmUgbWF5IHN0YXkgc2lsZW50LlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBsb2NrIGlzIHN0YWxlIGFuZCBtYXkgYmUgc3RvbGVuLlxuICovXG5mdW5jdGlvbiBjaGVja0lzTG9ja1N0YWxlKGluZm86IExvY2tGaWxlSW5mbywgaGVhcnRiZWF0U3RhbGVJbk1pbGxpc2Vjb25kczogbnVtYmVyKTogYm9vbGVhbiB7XG4gIGNvbnN0IHNpbGVudEZvckluTWlsbGlzZWNvbmRzID0gRGF0ZS5ub3coKSAtIGdldExhc3RTZWVuQXRJbk1pbGxpc2Vjb25kcyhpbmZvKTtcblxuICBpZiAoaW5mby5ob3N0bmFtZSA9PT0gaG9zdG5hbWUoKSkge1xuICAgIHJldHVybiAhY2hlY2tJc1Byb2Nlc3NBbGl2ZShpbmZvLnBpZCkgfHwgc2lsZW50Rm9ySW5NaWxsaXNlY29uZHMgPiBoZWFydGJlYXRTdGFsZUluTWlsbGlzZWNvbmRzO1xuICB9XG5cbiAgcmV0dXJuIHNpbGVudEZvckluTWlsbGlzZWNvbmRzID4gU1RBTEVfTE9DS19BR0VfSU5fTUlMTElTRUNPTkRTO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciBhIGxvY2sgZmlsZSBzdGlsbCBuYW1lcyB0aGlzIHByb2Nlc3MgYXMgaXRzIGhvbGRlci5cbiAqXG4gKiBAcGFyYW0gaW5mbyAtIFRoZSBwYXJzZWQgbG9jayBpbmZvLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoaXMgcHJvY2VzcyBob2xkcyB0aGUgbG9jay5cbiAqL1xuZnVuY3Rpb24gY2hlY2tJc093bkxvY2soaW5mbzogTG9ja0ZpbGVJbmZvKTogYm9vbGVhbiB7XG4gIHJldHVybiBpbmZvLnBpZCA9PT0gcHJvY2Vzcy5waWQgJiYgaW5mby5ob3N0bmFtZSA9PT0gaG9zdG5hbWUoKTtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIHByb2Nlc3Mgd2l0aCB0aGUgZ2l2ZW4gUElEIGlzIGN1cnJlbnRseSBhbGl2ZS5cbiAqXG4gKiBAcGFyYW0gcGlkIC0gVGhlIHByb2Nlc3MgSUQgdG8gcHJvYmUuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHByb2Nlc3MgZXhpc3RzLlxuICovXG5mdW5jdGlvbiBjaGVja0lzUHJvY2Vzc0FsaXZlKHBpZDogbnVtYmVyKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgcHJvY2Vzcy5raWxsKHBpZCwgUFJPQ0VTU19FWElTVEVOQ0VfUFJPQkVfU0lHTkFMKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAvLyBgRVBFUk1gIG1lYW5zIHRoZSBwcm9jZXNzIGV4aXN0cyBidXQgaXMgb3duZWQgYnkgYW5vdGhlciB1c2VyIFx1MjAxNCBzdGlsbCBhbGl2ZS5cbiAgICByZXR1cm4gZ2V0RXJyb3JDb2RlKGVycm9yKSA9PT0gJ0VQRVJNJztcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSB7QGxpbmsgU2V0dXBMb2NrfSBoYW5kbGUgdGhhdCBrZWVwcyB0aGUgbG9jaydzIGhlYXJ0YmVhdCBmcmVzaCB3aGlsZVxuICogaGVsZCBhbmQgcmVtb3ZlcyB0aGUgbG9jayBmaWxlIG9uIHJlbGVhc2UuXG4gKlxuICogVGhlIGhlYXJ0YmVhdCB0aW1lciBpcyBgdW5yZWZgZWQgc28gaXQgY2FuIG5ldmVyIGtlZXAgdGhlIHByb2Nlc3MgYWxpdmUgb24gaXRzXG4gKiBvd24sIGFuZCBpdCBzdG9wcyBhcyBzb29uIGFzIHRoZSBsb2NrIGZpbGUgbmFtZXMgc29tZWJvZHkgZWxzZSBcdTIwMTQgYSBydW4gd2hvc2VcbiAqIGxvY2sgd2FzIHN0b2xlbiBtdXN0IG5vdCBvdmVyd3JpdGUgaXRzIHN1Y2Nlc3NvcidzIGxvY2ssIG5vciBkZWxldGUgaXQgb25cbiAqIHJlbGVhc2UuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBoYW5kbGUgcGFyYW1ldGVycy5cbiAqIEByZXR1cm5zIFRoZSBsb2NrIGhhbmRsZS5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlTG9ja0hhbmRsZShwYXJhbXM6IENyZWF0ZUxvY2tIYW5kbGVQYXJhbXMpOiBTZXR1cExvY2sge1xuICBjb25zdCB7XG4gICAgbGFiZWwsXG4gICAgbG9ja0ZpbGVQYXRoLFxuICAgIG93bkluZm8sXG4gICAgc2NvcGVcbiAgfSA9IHBhcmFtcztcbiAgbGV0IGlzUmVsZWFzZWQgPSBmYWxzZTtcblxuICBjb25zdCBoZWFydGJlYXRUaW1lciA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICBjb25zdCBpc1N0aWxsT3VycyA9IGRpZFJlZnJlc2hIZWFydGJlYXQoe1xuICAgICAgbGFiZWwsXG4gICAgICBsb2NrRmlsZVBhdGgsXG4gICAgICBvd25JbmZvXG4gICAgfSk7XG4gICAgaWYgKGlzU3RpbGxPdXJzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNsZWFySW50ZXJ2YWwoaGVhcnRiZWF0VGltZXIpO1xuICAgIGxvZyhgW2ludGVncmF0aW9uLXNldHVwOiR7bGFiZWx9XSBUaGUgJyR7c2NvcGV9JyBzZXR1cCBsb2NrIGlzIG5vIGxvbmdlciBvdXJzIFx1MjAxNCBhbm90aGVyIHJ1biB0b29rIGl0IG92ZXIuIEhlYXJ0YmVhdCBzdG9wcGVkLmApO1xuICB9LCBIRUFSVEJFQVRfSU5URVJWQUxfSU5fTUlMTElTRUNPTkRTKTtcbiAgaGVhcnRiZWF0VGltZXIudW5yZWYoKTtcblxuICByZXR1cm4ge1xuICAgIHJlbGVhc2UoKTogdm9pZCB7XG4gICAgICBpZiAoaXNSZWxlYXNlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpc1JlbGVhc2VkID0gdHJ1ZTtcbiAgICAgIGNsZWFySW50ZXJ2YWwoaGVhcnRiZWF0VGltZXIpO1xuXG4gICAgICBjb25zdCBpbmZvID0gcmVhZExvY2tGaWxlSW5mbyhsb2NrRmlsZVBhdGgpO1xuICAgICAgaWYgKGluZm8gJiYgIWNoZWNrSXNPd25Mb2NrKGluZm8pKSB7XG4gICAgICAgIGxvZyhgW2ludGVncmF0aW9uLXNldHVwOiR7bGFiZWx9XSBMZWF2aW5nIHRoZSAnJHtzY29wZX0nIHNldHVwIGxvY2sgaW4gcGxhY2UgXHUyMDE0IGl0IG5vdyBiZWxvbmdzIHRvICR7ZGVzY3JpYmVJbmZvKGluZm8pfS5gKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcm1TeW5jKGxvY2tGaWxlUGF0aCwgeyBmb3JjZTogdHJ1ZSB9KTtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBlcnJvciB0aHJvd24gd2hlbiB0aGUgbG9jayBjb3VsZCBub3QgYmUgYWNxdWlyZWQgaW4gdGltZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGVycm9yIHBhcmFtZXRlcnMuXG4gKiBAcmV0dXJucyBUaGUgZXJyb3IgdG8gdGhyb3cuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVRpbWVvdXRFcnJvcihwYXJhbXM6IENyZWF0ZVRpbWVvdXRFcnJvclBhcmFtcyk6IEVycm9yIHtcbiAgY29uc3Qge1xuICAgIGluZm8sXG4gICAgc2NvcGUsXG4gICAgdGltZW91dEluTWlsbGlzZWNvbmRzXG4gIH0gPSBwYXJhbXM7XG4gIHJldHVybiBuZXcgRXJyb3IoXG4gICAgYFRpbWVkIG91dCBhZnRlciAke1N0cmluZyh0aW1lb3V0SW5NaWxsaXNlY29uZHMpfW1zIHdhaXRpbmcgZm9yIHRoZSAnJHtzY29wZX0nIGludGVncmF0aW9uLXRlc3Qgc2V0dXAgbG9jayBgXG4gICAgICArIGBoZWxkIGJ5ICR7ZGVzY3JpYmVIb2xkZXIoaW5mbyl9LiBBbm90aGVyIGludGVncmF0aW9uLXRlc3QgcnVuIGlzIHN0aWxsIGluIHByb2dyZXNzLmBcbiAgKTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyBhZnRlciB0aGUgZ2l2ZW4gZGVsYXkuIFVzZWQgdG8gcG9sbCBiZXR3ZWVuIGxvY2stYWNxdWlzaXRpb24gYXR0ZW1wdHMuXG4gKlxuICogQHBhcmFtIG1pbGxpc2Vjb25kcyAtIFRoZSBkZWxheSBpbiBtaWxsaXNlY29uZHMuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyBhZnRlciB0aGUgZGVsYXkuXG4gKi9cbmZ1bmN0aW9uIGRlbGF5KG1pbGxpc2Vjb25kczogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xuICAgIHNldFRpbWVvdXQocmVzb2x2ZSwgbWlsbGlzZWNvbmRzKTtcbiAgfSk7XG59XG5cbi8qKlxuICogQnVpbGRzIGEgaHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gb2YgdGhlIGN1cnJlbnQgbG9jayBob2xkZXIgZm9yIGxvZy9lcnJvclxuICogbWVzc2FnZXMuXG4gKlxuICogQHBhcmFtIGluZm8gLSBUaGUgcGFyc2VkIGxvY2sgaW5mbywgb3IgYG51bGxgIGlmIGl0IGNvdWxkIG5vdCBiZSByZWFkLlxuICogQHJldHVybnMgQSBkZXNjcmlwdGlvbiBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIGRlc2NyaWJlSG9sZGVyKGluZm86IExvY2tGaWxlSW5mbyB8IG51bGwpOiBzdHJpbmcge1xuICByZXR1cm4gaW5mbyA/IGRlc2NyaWJlSW5mbyhpbmZvKSA6ICdhbm90aGVyIHJ1bic7XG59XG5cbi8qKlxuICogRm9ybWF0cyBhIHtAbGluayBMb2NrRmlsZUluZm99IGFzIGEgc2hvcnQgaWRlbnRpZmllciBzdHJpbmcuXG4gKlxuICogQHBhcmFtIGluZm8gLSBUaGUgbG9jayBpbmZvLlxuICogQHJldHVybnMgQSBzdHJpbmcgbGlrZSBgcGlkIDEyMzQgKG9ic2lkaWFuLWNsaSkgb24gaG9zdGAuXG4gKi9cbmZ1bmN0aW9uIGRlc2NyaWJlSW5mbyhpbmZvOiBMb2NrRmlsZUluZm8pOiBzdHJpbmcge1xuICByZXR1cm4gYHBpZCAke1N0cmluZyhpbmZvLnBpZCl9ICgke2luZm8ubGFiZWx9KSBvbiAke2luZm8uaG9zdG5hbWV9YDtcbn1cblxuLyoqXG4gKiBSZXdyaXRlcyB0aGUgbG9jayBmaWxlIHdpdGggYSBmcmVzaCBoZWFydGJlYXQgdGltZXN0YW1wLCBzbyB3YWl0aW5nIHJ1bnMgY2FuXG4gKiB0ZWxsIHRoaXMgaG9sZGVyIGFwYXJ0IGZyb20gYSBjcmFzaGVkIG9uZSB3aG9zZSBQSUQgaGFzIGJlZW4gcmVjeWNsZWQuXG4gKlxuICogQSBsb2NrIGZpbGUgdGhhdCBpcyBtaXNzaW5nIG9yIHVucmVhZGFibGUgaXMgc3RpbGwgdHJlYXRlZCBhcyBvdXJzIGFuZCByZXdyaXR0ZW46XG4gKiB0aGlzIHJ1biBuZXZlciByZWxlYXNlZCwgc28gaXRzIGNsYWltIHN0YW5kcy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHJlZnJlc2ggcGFyYW1ldGVycy5cbiAqIEByZXR1cm5zIGB0cnVlYCB3aGlsZSB0aGUgbG9jayBpcyBzdGlsbCBvdXJzLCBgZmFsc2VgIG9uY2UgYW5vdGhlciBydW4gb3ducyBpdC5cbiAqL1xuZnVuY3Rpb24gZGlkUmVmcmVzaEhlYXJ0YmVhdChwYXJhbXM6IFJlZnJlc2hIZWFydGJlYXRQYXJhbXMpOiBib29sZWFuIHtcbiAgY29uc3Qge1xuICAgIGxhYmVsLFxuICAgIGxvY2tGaWxlUGF0aCxcbiAgICBvd25JbmZvXG4gIH0gPSBwYXJhbXM7XG5cbiAgY29uc3QgaW5mbyA9IHJlYWRMb2NrRmlsZUluZm8obG9ja0ZpbGVQYXRoKTtcbiAgaWYgKGluZm8gJiYgIWNoZWNrSXNPd25Mb2NrKGluZm8pKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgcmVmcmVzaGVkSW5mbzogTG9ja0ZpbGVJbmZvID0ge1xuICAgIC4uLm93bkluZm8sXG4gICAgaGVhcnRiZWF0QXRJbk1pbGxpc2Vjb25kczogRGF0ZS5ub3coKVxuICB9O1xuICB0cnkge1xuICAgIHdyaXRlRmlsZVN5bmMobG9ja0ZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShyZWZyZXNoZWRJbmZvKSk7XG4gIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgLy8gTm90IGZhdGFsOiB0aGUgbG9jayBpcyBzdGlsbCBoZWxkIGFuZCB3aWxsIHN0aWxsIGJlIHJlbGVhc2VkLiBPbmx5IGl0c1xuICAgIC8vIGhlYXJ0YmVhdCBnb2VzIHN0YWxlLCB3aGljaCBhdCB3b3JzdCBsZXRzIGEgd2FpdGluZyBydW4gc3RlYWwgaXQuXG4gICAgbG9nKGBbaW50ZWdyYXRpb24tc2V0dXA6JHtsYWJlbH1dIEZhaWxlZCB0byByZWZyZXNoIHRoZSBzZXR1cCBsb2NrIGhlYXJ0YmVhdDogJHtlcnJvclRvU3RyaW5nKGVycm9yKX1gKTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBGb3JtYXRzIGEgZHVyYXRpb24gYXMgYSBjb21wYWN0IGAxbSAzMHNgIC8gYDQ1c2Agc3RyaW5nIGZvciBwcm9ncmVzcyBsb2dzLlxuICpcbiAqIEBwYXJhbSBtaWxsaXNlY29uZHMgLSBUaGUgZHVyYXRpb24gaW4gbWlsbGlzZWNvbmRzLlxuICogQHJldHVybnMgVGhlIGZvcm1hdHRlZCBkdXJhdGlvbi5cbiAqL1xuZnVuY3Rpb24gZm9ybWF0RHVyYXRpb24obWlsbGlzZWNvbmRzOiBudW1iZXIpOiBzdHJpbmcge1xuICBjb25zdCB0b3RhbFNlY29uZHMgPSBNYXRoLnJvdW5kKG1pbGxpc2Vjb25kcyAvIE1JTExJU0VDT05EU19QRVJfU0VDT05EKTtcbiAgY29uc3QgbWludXRlcyA9IE1hdGguZmxvb3IodG90YWxTZWNvbmRzIC8gU0VDT05EU19QRVJfTUlOVVRFKTtcbiAgY29uc3Qgc2Vjb25kcyA9IHRvdGFsU2Vjb25kcyAlIFNFQ09ORFNfUEVSX01JTlVURTtcbiAgcmV0dXJuIG1pbnV0ZXMgPiAwID8gYCR7U3RyaW5nKG1pbnV0ZXMpfW0gJHtTdHJpbmcoc2Vjb25kcyl9c2AgOiBgJHtTdHJpbmcoc2Vjb25kcyl9c2A7XG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBwZXJpb2RpYyBcInN0aWxsIHdhaXRpbmdcIiBwcm9ncmVzcyBsaW5lLCBzbyBhIGxlZ2l0aW1hdGUgbXVsdGktbWludXRlXG4gKiB3YWl0IGlzIGRpc3Rpbmd1aXNoYWJsZSBmcm9tIGEgaGFuZyBpbiB0aGUgdGVybWluYWwuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBtZXNzYWdlIHBhcmFtZXRlcnMuXG4gKiBAcmV0dXJucyBUaGUgbWVzc2FnZSB0byBsb2cuXG4gKi9cbmZ1bmN0aW9uIGZvcm1hdFdhaXRNZXNzYWdlKHBhcmFtczogRm9ybWF0V2FpdE1lc3NhZ2VQYXJhbXMpOiBzdHJpbmcge1xuICBjb25zdCB7XG4gICAgaW5mbyxcbiAgICBsYWJlbCxcbiAgICByZW1haW5pbmdJbk1pbGxpc2Vjb25kcyxcbiAgICBzY29wZSxcbiAgICB3YWl0ZWRJbk1pbGxpc2Vjb25kc1xuICB9ID0gcGFyYW1zO1xuICBjb25zdCBoZWxkRm9yID0gaW5mbyA/IGAsIGhlbGQgZm9yICR7Zm9ybWF0RHVyYXRpb24oRGF0ZS5ub3coKSAtIGluZm8uYWNxdWlyZWRBdEluTWlsbGlzZWNvbmRzKX1gIDogJyc7XG4gIHJldHVybiBgW2ludGVncmF0aW9uLXNldHVwOiR7bGFiZWx9XSBXYWl0aW5nIGZvciB0aGUgJyR7c2NvcGV9JyBzZXR1cCBsb2NrIGhlbGQgYnkgJHtkZXNjcmliZUhvbGRlcihpbmZvKX0gdG8gYmUgcmVsZWFzZWQgYFxuICAgICsgYCh3YWl0ZWQgJHtmb3JtYXREdXJhdGlvbih3YWl0ZWRJbk1pbGxpc2Vjb25kcyl9JHtoZWxkRm9yfSwgZ2l2aW5nIHVwIGluICR7Zm9ybWF0RHVyYXRpb24ocmVtYWluaW5nSW5NaWxsaXNlY29uZHMpfSkuLi5gO1xufVxuXG4vKipcbiAqIEV4dHJhY3RzIHRoZSBgY29kZWAgZnJvbSBhIE5vZGUuanMgc3lzdGVtIGVycm9yLCBpZiBwcmVzZW50LlxuICpcbiAqIEBwYXJhbSBlcnJvciAtIFRoZSB0aHJvd24gdmFsdWUuXG4gKiBAcmV0dXJucyBUaGUgZXJyb3IgY29kZSBzdHJpbmcsIG9yIGB1bmRlZmluZWRgIGlmIG5vdCBhIGNvZGVkIGVycm9yLlxuICovXG5mdW5jdGlvbiBnZXRFcnJvckNvZGUoZXJyb3I6IHVua25vd24pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvciAmJiAnY29kZScgaW4gZXJyb3IgJiYgdHlwZW9mIGVycm9yLmNvZGUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGVycm9yLmNvZGU7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHdoZW4gdGhlIGhvbGRlciB3YXMgbGFzdCBrbm93biB0byBiZSBhbGl2ZSBcdTIwMTQgaXRzIG1vc3QgcmVjZW50IGhlYXJ0YmVhdCxcbiAqIGZhbGxpbmcgYmFjayB0byBpdHMgYWNxdWlzaXRpb24gdGltZSBmb3IgYSBsb2NrIGZpbGUgd3JpdHRlbiBieSBhbiBvbGRlclxuICogdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UgdGhhdCBzdGFtcGVkIG5vIGhlYXJ0YmVhdCBhdCBhbGwuXG4gKlxuICogQHBhcmFtIGluZm8gLSBUaGUgcGFyc2VkIGxvY2sgaW5mby5cbiAqIEByZXR1cm5zIFRoZSBlcG9jaCBtaWxsaXNlY29uZHMgb2YgdGhlIGhvbGRlcidzIGxhc3Qgc2lnbiBvZiBsaWZlLlxuICovXG5mdW5jdGlvbiBnZXRMYXN0U2VlbkF0SW5NaWxsaXNlY29uZHMoaW5mbzogTG9ja0ZpbGVJbmZvKTogbnVtYmVyIHtcbiAgcmV0dXJuIGluZm8uaGVhcnRiZWF0QXRJbk1pbGxpc2Vjb25kcyA/PyBpbmZvLmFjcXVpcmVkQXRJbk1pbGxpc2Vjb25kcztcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBzaGFyZWQgbG9jayBkaXJlY3RvcnkgaW5zaWRlIHRoZSBPUyB0ZW1wIGRpcmVjdG9yeS5cbiAqXG4gKiBAcmV0dXJucyBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgbG9jayBkaXJlY3RvcnkuXG4gKi9cbmZ1bmN0aW9uIGdldExvY2tEaXJlY3RvcnkoKTogc3RyaW5nIHtcbiAgcmV0dXJuIGpvaW4odG1wZGlyKCksIExPQ0tfRElSX05BTUUpO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGxvY2sgZmlsZSBwYXRoIGZvciB0aGUgZ2l2ZW4gc2NvcGUuXG4gKlxuICogQHBhcmFtIHNjb3BlIC0gVGhlIGxvY2sgc2NvcGUuXG4gKiBAcmV0dXJucyBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgc2NvcGUncyBsb2NrIGZpbGUuXG4gKi9cbmZ1bmN0aW9uIGdldExvY2tGaWxlUGF0aChzY29wZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGpvaW4oZ2V0TG9ja0RpcmVjdG9yeSgpLCBgJHtzY29wZX0ke0xPQ0tfRklMRV9TVUZGSVh9YCk7XG59XG5cbi8qKlxuICogUmVhZHMgYW5kIHBhcnNlcyB0aGUgbG9jayBmaWxlLCBpZiBpdCBleGlzdHMgYW5kIGlzIHZhbGlkIEpTT04uXG4gKlxuICogQHBhcmFtIGxvY2tGaWxlUGF0aCAtIFRoZSBwYXRoIHRvIHRoZSBsb2NrIGZpbGUuXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIGxvY2sgaW5mbywgb3IgYG51bGxgIGlmIGl0IGNvdWxkIG5vdCBiZSByZWFkLlxuICovXG5mdW5jdGlvbiByZWFkTG9ja0ZpbGVJbmZvKGxvY2tGaWxlUGF0aDogc3RyaW5nKTogTG9ja0ZpbGVJbmZvIHwgbnVsbCB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UocmVhZEZpbGVTeW5jKGxvY2tGaWxlUGF0aCwgJ3V0Zi04JykpIGFzIExvY2tGaWxlSW5mbztcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuLyoqXG4gKiBSZW1vdmVzIGFuIGFiYW5kb25lZCBob2xkZXIncyBsb2NrIGZpbGUsIHNheWluZyB3aG9zZSBpdCB3YXMuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBhYmFuZG9uZWQgaG9sZGVyLCBhbmQgd2hvIGlzIHRha2luZyBvdmVyLlxuICovXG5mdW5jdGlvbiBzdGVhbFN0YWxlTG9jayhwYXJhbXM6IFN0ZWFsU3RhbGVMb2NrUGFyYW1zKTogdm9pZCB7XG4gIGxvZyhgW2ludGVncmF0aW9uLXNldHVwOiR7cGFyYW1zLmxhYmVsfV0gU3RlYWxpbmcgc3RhbGUgJyR7cGFyYW1zLnNjb3BlfScgc2V0dXAgbG9jayBmcm9tICR7ZGVzY3JpYmVJbmZvKHBhcmFtcy5pbmZvKX0uYCk7XG4gIHJtU3luYyhwYXJhbXMubG9ja0ZpbGVQYXRoLCB7IGZvcmNlOiB0cnVlIH0pO1xufVxuXG4vKipcbiAqIEF0dGVtcHRzIHRvIGF0b21pY2FsbHkgY3JlYXRlIHRoZSBsb2NrIGZpbGUgKGZhaWxpbmcgaWYgaXQgYWxyZWFkeSBleGlzdHMpLlxuICpcbiAqIEBwYXJhbSBsb2NrRmlsZVBhdGggLSBUaGUgcGF0aCB0byB0aGUgbG9jayBmaWxlLlxuICogQHBhcmFtIGxhYmVsIC0gVGhlIHRyYW5zcG9ydCBsYWJlbCB0byByZWNvcmQgaW4gdGhlIGxvY2sgZmlsZS5cbiAqIEByZXR1cm5zIFRoZSBsb2NrIGluZm8gd3JpdHRlbiBvbiBzdWNjZXNzLCBvciBgbnVsbGAgaWYgdGhlIGxvY2sgaXMgYWxyZWFkeSBoZWxkLlxuICogQHRocm93cyBJZiB0aGUgZmlsZSBzeXN0ZW0gZmFpbHMgZm9yIGFueSByZWFzb24gb3RoZXIgdGhhbiB0aGUgZmlsZSBleGlzdGluZy5cbiAqL1xuZnVuY3Rpb24gdHJ5Q3JlYXRlTG9ja0ZpbGUobG9ja0ZpbGVQYXRoOiBzdHJpbmcsIGxhYmVsOiBzdHJpbmcpOiBMb2NrRmlsZUluZm8gfCBudWxsIHtcbiAgY29uc3Qgbm93SW5NaWxsaXNlY29uZHMgPSBEYXRlLm5vdygpO1xuICBjb25zdCBpbmZvOiBMb2NrRmlsZUluZm8gPSB7XG4gICAgYWNxdWlyZWRBdEluTWlsbGlzZWNvbmRzOiBub3dJbk1pbGxpc2Vjb25kcyxcbiAgICBoZWFydGJlYXRBdEluTWlsbGlzZWNvbmRzOiBub3dJbk1pbGxpc2Vjb25kcyxcbiAgICBob3N0bmFtZTogaG9zdG5hbWUoKSxcbiAgICBsYWJlbCxcbiAgICBwaWQ6IHByb2Nlc3MucGlkXG4gIH07XG5cbiAgdHJ5IHtcbiAgICB3cml0ZUZpbGVTeW5jKGxvY2tGaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkoaW5mbyksIHsgZmxhZzogJ3d4JyB9KTtcbiAgICByZXR1cm4gaW5mbztcbiAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICBpZiAoZ2V0RXJyb3JDb2RlKGVycm9yKSA9PT0gJ0VFWElTVCcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIkFBMEJBO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsWUFBWTtBQUNyQixPQUFPLGFBQWE7QUFFcEIsU0FBUyxxQkFBcUI7QUFDOUIsU0FBUyxXQUFXO0FBT2IsTUFBTSwyQkFBMkI7QUFFeEMsTUFBTSxnQkFBZ0I7QUFDdEIsTUFBTSxtQkFBbUI7QUFDekIsTUFBTSxnQ0FBZ0M7QUFDdEMsTUFBTSwwQkFBMEI7QUFDaEMsTUFBTSxxQkFBcUI7QUFDM0IsTUFBTSxnQ0FBZ0M7QUFDdEMsTUFBTSxxQ0FBcUMsZ0NBQWdDO0FBSzNFLE1BQU0saUNBQWlDO0FBQ3ZDLE1BQU0sa0NBQWtDLHFDQUFxQztBQUM3RSxNQUFNLCtCQUEr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
284
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3NldHVwLWxvY2sudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDcm9zcy1wcm9jZXNzIGFkdmlzb3J5IGxvY2sgdGhhdCBzZXJpYWxpemVzIHdob2xlIGludGVncmF0aW9uLXRlc3QgcnVucy5cbiAqXG4gKiBUd28gdGVzdCBydW5zIHRoYXQgZHJpdmUgdGhlIHNhbWUgc2hhcmVkIHJlc291cmNlcyBjb3JydXB0IGVhY2ggb3RoZXI6IG9uXG4gKiBkZXNrdG9wIHRoZXkgc2hhcmUgdGhlIHNpbmdsZSBsb2NhbCBPYnNpZGlhbiBpbnN0YW5jZSwgaXRzIGBvYnNpZGlhbi5qc29uYFxuICogcmVnaXN0cnksIGFuZCB0aGUgQ0RQIHBvcnQ7IG9uIEFuZHJvaWQgdGhleSBzaGFyZSB0aGUgZW11bGF0b3IgYW5kIHRoZSBBcHBpdW1cbiAqIHNlcnZlci4gT25lIHJ1bidzIHNldHVwL3RlYXJkb3duIGtpbGxzIG9yIHJlY29uZmlndXJlcyB0aGUgaW5zdGFuY2UgdGhlIG90aGVyXG4gKiBydW4gaXMgbWlkLWV2YWwgb24gKG9ic2VydmVkIGFzIGBFQ09OTlJFRlVTRURgIG9yIFwidmF1bHQgbm90IG9wZW5cIiksIHNvIGJvdGhcbiAqIHJ1bnMgZmFpbC5cbiAqXG4gKiBUaGlzIGxvY2sgbWFrZXMgdGhlIHNlY29uZCBydW4gKip3YWl0KiogZm9yIHRoZSBmaXJzdCB0byBmaW5pc2ggaW5zdGVhZCBvZlxuICogcnVubmluZyBjb25jdXJyZW50bHkuIEl0IGlzIGhlbGQgZm9yIHRoZSBlbnRpcmUgcnVuOiBhY3F1aXJlZCBhdCB0aGUgc3RhcnQgb2ZcbiAqIHRoZSBjb3JlIHNldHVwIGFuZCByZWxlYXNlZCBieSB0aGUgY29yZSB0ZWFyZG93biAoYW5kIGJ5IHRoZSBwcm9jZXNzIGNsZWFudXBcbiAqIGhhbmRsZXJzKS4gVGhlIGxvY2sgaXMgYSBzZW50aW5lbCBmaWxlIGluIGEgc2hhcmVkIHRlbXAgZGlyZWN0b3J5LCBhbmQgaXRzXG4gKiBob2xkZXIga2VlcHMgYSAqKmhlYXJ0YmVhdCoqIHRpbWVzdGFtcCBpbnNpZGUgaXQgZnJlc2ggZm9yIGFzIGxvbmcgYXMgaXQgaG9sZHNcbiAqIHRoZSBsb2NrIFx1MjAxNCBzbyBhIHJ1biB0aGF0IGNyYXNoZWQgd2l0aG91dCByZWxlYXNpbmcgc3RvcHMgYmVhdGluZyBhbmQgdGhlIG5leHRcbiAqIHJ1biBkZXRlY3RzIHRoZSBsb2NrIGFzIHN0YWxlIGFuZCBzdGVhbHMgaXQuXG4gKlxuICogVGhlIGhlYXJ0YmVhdCwgbm90IHRoZSBob2xkZXIncyBQSUQsIGlzIHdoYXQgcHJvdmVzIGEgaG9sZGVyIGlzIHN0aWxsIHRoZXJlOiBhXG4gKiBQSUQgcHJvYmUgb25seSBhbnN3ZXJzIFwiZG9lcyAqYSogcHJvY2VzcyB3aXRoIHRoaXMgUElEIGV4aXN0XCIsIHdoaWNoIGFcbiAqIHJlY3ljbGVkIFBJRCBzYXRpc2ZpZXMgbG9uZyBhZnRlciB0aGUgcmVhbCBob2xkZXIgZGllZCBcdTIwMTQgbGVhdmluZyBldmVyeSBsYXRlclxuICogcnVuIHRvIGJsb2NrIGZvciB0aGUgZnVsbCBhY3F1aXNpdGlvbiB0aW1lb3V0LlxuICovXG5cbmltcG9ydCB7XG4gIG1rZGlyU3luYyxcbiAgcmVhZEZpbGVTeW5jLFxuICBybVN5bmMsXG4gIHdyaXRlRmlsZVN5bmNcbn0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQge1xuICBob3N0bmFtZSxcbiAgdG1wZGlyXG59IGZyb20gJ25vZGU6b3MnO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgcHJvY2VzcyBmcm9tICdub2RlOnByb2Nlc3MnO1xuXG5pbXBvcnQgeyBlcnJvclRvU3RyaW5nIH0gZnJvbSAnLi9lcnJvci10by1zdHJpbmcubWpzJztcbmltcG9ydCB7IGxvZyB9IGZyb20gJy4vbG9nLm1qcyc7XG5cbi8qKlxuICogVGhlIHNjb3BlIGV2ZXJ5IEFuZHJvaWQgcnVuIHNlcmlhbGl6ZXMgb246IHRoZSBBcHBpdW0gdHJhbnNwb3J0J3MgZ2xvYmFsXG4gKiBzZXR1cCwgYSBwcm9qZWN0IHRoYXQgdGFrZXMgdGhlIGxvY2sgaXRzZWxmLCBhbmQgdGhlIGVtdWxhdG9yIHJlYXBlciBhbGxcbiAqIGhhdmUgdG8gbmFtZSB0aGUgc2FtZSBvbmUsIG9yIHRoZXkgc2VyaWFsaXplIGFnYWluc3Qgbm90aGluZy5cbiAqL1xuZXhwb3J0IGNvbnN0IEFORFJPSURfU0VUVVBfTE9DS19TQ09QRSA9ICdhbmRyb2lkJztcblxuY29uc3QgTE9DS19ESVJfTkFNRSA9ICdvYnNpZGlhbi1pbnRlZ3JhdGlvbi10ZXN0aW5nJztcbmNvbnN0IExPQ0tfRklMRV9TVUZGSVggPSAnLnNldHVwLmxvY2snO1xuY29uc3QgUE9MTF9JTlRFUlZBTF9JTl9NSUxMSVNFQ09ORFMgPSA1MDA7XG5jb25zdCBNSUxMSVNFQ09ORFNfUEVSX1NFQ09ORCA9IDEwMDA7XG5jb25zdCBTRUNPTkRTX1BFUl9NSU5VVEUgPSA2MDtcbmNvbnN0IEhFQVJUQkVBVF9JTlRFUlZBTF9JTl9TRUNPTkRTID0gNTtcbmNvbnN0IEhFQVJUQkVBVF9JTlRFUlZBTF9JTl9NSUxMSVNFQ09ORFMgPSBIRUFSVEJFQVRfSU5URVJWQUxfSU5fU0VDT05EUyAqIE1JTExJU0VDT05EU19QRVJfU0VDT05EO1xuLy8gR2VuZXJvdXMgb24gcHVycG9zZTogYSBkZWFkIGhvbGRlciBpcyBub3JtYWxseSBjYXVnaHQgaW5zdGFudGx5IGJ5IHRoZSBQSURcbi8vIHByb2JlLCBzbyB0aGlzIHRocmVzaG9sZCBvbmx5IGhhcyB0byBjb3ZlciB0aGUgcmVjeWNsZWQtUElEIGNhc2UuIFR3byBtaW51dGVzXG4vLyBrZWVwcyBhIGhvbGRlciB0aGF0IGJsb2NrcyBpdHMgZXZlbnQgbG9vcCBkdXJpbmcgaGVhdnkgc3luY2hyb25vdXMgd29yayAoYVxuLy8gbGFyZ2UgdmF1bHQgc3luYywgYW4gaW5zdGFsbGVyIHVucGFjaykgZnJvbSBiZWluZyByb2JiZWQgd2hpbGUgaXQgaXMgYWxpdmUuXG5jb25zdCBNSVNTRURfSEVBUlRCRUFUU19CRUZPUkVfU1RBTEUgPSAyNDtcbmNvbnN0IEhFQVJUQkVBVF9TVEFMRV9JTl9NSUxMSVNFQ09ORFMgPSBIRUFSVEJFQVRfSU5URVJWQUxfSU5fTUlMTElTRUNPTkRTICogTUlTU0VEX0hFQVJUQkVBVFNfQkVGT1JFX1NUQUxFO1xuY29uc3QgV0FJVF9MT0dfSU5URVJWQUxfSU5fU0VDT05EUyA9IDMwO1xuY29uc3QgV0FJVF9MT0dfSU5URVJWQUxfSU5fTUlMTElTRUNPTkRTID0gV0FJVF9MT0dfSU5URVJWQUxfSU5fU0VDT05EUyAqIE1JTExJU0VDT05EU19QRVJfU0VDT05EO1xuY29uc3QgU1RBTEVfTE9DS19BR0VfSU5fTUlOVVRFUyA9IDMwO1xuY29uc3QgREVGQVVMVF9USU1FT1VUX0lOX01JTlVURVMgPSA2MDtcbmNvbnN0IFNUQUxFX0xPQ0tfQUdFX0lOX01JTExJU0VDT05EUyA9IFNUQUxFX0xPQ0tfQUdFX0lOX01JTlVURVMgKiBTRUNPTkRTX1BFUl9NSU5VVEUgKiBNSUxMSVNFQ09ORFNfUEVSX1NFQ09ORDtcbmNvbnN0IERFRkFVTFRfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSBERUZBVUxUX1RJTUVPVVRfSU5fTUlOVVRFUyAqIFNFQ09ORFNfUEVSX01JTlVURSAqIE1JTExJU0VDT05EU19QRVJfU0VDT05EO1xuY29uc3QgUFJPQ0VTU19FWElTVEVOQ0VfUFJPQkVfU0lHTkFMID0gMDtcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgYWNxdWlyZVNldHVwTG9ja30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWNxdWlyZVNldHVwTG9ja1BhcmFtcyB7XG4gIC8qKlxuICBTaG9ydCB0cmFuc3BvcnQgbGFiZWwgZm9yIGxvZyBtZXNzYWdlcyAoZS5nLiBgXCJvYnNpZGlhbi1jbGlcImApLlxuICAgKi9cbiAgcmVhZG9ubHkgbGFiZWw6IHN0cmluZztcblxuICAvKipcbiAgICogTG9naWNhbCBzY29wZSB0aGUgbG9jayBzZXJpYWxpemVzIHdpdGhpbi4gUnVucyB0aGF0IHNoYXJlIHJlc291cmNlcyBtdXN0XG4gICAqIHVzZSB0aGUgc2FtZSBzY29wZSAoZS5nLiBgXCJkZXNrdG9wXCJgIGZvciB0aGUgQ0xJL0NEUCB0cmFuc3BvcnRzLCBgXCJhbmRyb2lkXCJgXG4gICAqIGZvciB0aGUgQXBwaXVtIHRyYW5zcG9ydCkuXG4gICAqL1xuICByZWFkb25seSBzY29wZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIHRpbWUgdG8gd2FpdCBmb3IgYSBjb21wZXRpbmcgcnVuIHRvIHJlbGVhc2UgdGhlIGxvY2sgYmVmb3JlIGdpdmluZ1xuICAgKiB1cCBhbmQgdGhyb3dpbmcuXG4gICAqXG4gICAqIEBkZWZhdWx0IDEgaG91clxuICAgKi9cbiAgcmVhZG9ubHkgdGltZW91dEluTWlsbGlzZWNvbmRzPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEEgaGVsZCBzZXR1cCBsb2NrLiBSZWxlYXNlIGl0IG9uY2UgdGhlIHJ1bidzIHRlYXJkb3duIGlzIGNvbXBsZXRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNldHVwTG9jayB7XG4gIC8qKlxuICBSZWxlYXNlcyB0aGUgbG9jay4gU2FmZSB0byBjYWxsIG1vcmUgdGhhbiBvbmNlLlxuICAgKi9cbiAgcmVsZWFzZTogKCkgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgdHJ5QWNxdWlyZVNldHVwTG9ja30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJ5QWNxdWlyZVNldHVwTG9ja1BhcmFtcyB7XG4gIC8qKlxuICBTaG9ydCB0cmFuc3BvcnQgbGFiZWwgZm9yIGxvZyBtZXNzYWdlcywgcmVjb3JkZWQgaW4gdGhlIGxvY2sgZmlsZSBhcyB0aGUgaG9sZGVyJ3MuXG4gICAqL1xuICByZWFkb25seSBsYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICBMb2dpY2FsIHNjb3BlIHRoZSBsb2NrIHNlcmlhbGl6ZXMgd2l0aGluIFx1MjAxNCBzZWUge0BsaW5rIEFjcXVpcmVTZXR1cExvY2tQYXJhbXMuc2NvcGV9LlxuICAgKi9cbiAgcmVhZG9ubHkgc2NvcGU6IHN0cmluZztcblxuICAvKipcbiAgICogSG93IGxvbmcgYSBzYW1lLWhvc3QgaG9sZGVyIHdob3NlIFBJRCBpcyBzdGlsbCBhbGl2ZSBtYXkgZ28gd2l0aG91dCBhXG4gICAqIGhlYXJ0YmVhdCBiZWZvcmUgaXRzIGxvY2sgY291bnRzIGFzIGFiYW5kb25lZC5cbiAgICpcbiAgICogQSBkZWFkIGhvbGRlciBQSUQgaXMgYWJhbmRvbmVkIGF0IG9uY2Ugd2hhdGV2ZXIgdGhpcyBzYXlzLiBUaGUgZGVmYXVsdCBpc1xuICAgKiB0aGUgdGhyZXNob2xkIGV2ZXJ5IHdhaXRpbmcgcnVuIHN0ZWFscyBvbjsgYSBjYWxsZXIgdGhhdCBpcyAqYWx3YXlzKiB3YWl0aW5nXG4gICAqIFx1MjAxNCB0aGUgZW11bGF0b3IgcmVhcGVyIFx1MjAxNCBwYXNzZXMgYSBmYXIgd2lkZXIgb25lLCBzbyBhIGxpdmUgcnVuIHRoYXQgYmxvY2tzXG4gICAqIGl0cyBldmVudCBsb29wIGZvciBhIGNvdXBsZSBvZiBtaW51dGVzIGlzIG5vdCByb2JiZWQgb2YgaXRzIGxvY2suXG4gICAqXG4gICAqIEBkZWZhdWx0IDIgbWludXRlc1xuICAgKi9cbiAgcmVhZG9ubHkgc3RhbGVBZnRlclNpbGVuY2VJbk1pbGxpc2Vjb25kcz86IG51bWJlciB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgY3JlYXRlTG9ja0hhbmRsZX0uXG4gKi9cbmludGVyZmFjZSBDcmVhdGVMb2NrSGFuZGxlUGFyYW1zIHtcbiAgLyoqXG4gIFRoZSB0cmFuc3BvcnQgbGFiZWwgb2YgdGhpcyBydW4uXG4gICAqL1xuICByZWFkb25seSBsYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICBUaGUgcGF0aCB0byB0aGUgbG9jayBmaWxlIHRoaXMgcnVuIGp1c3QgY3JlYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGxvY2tGaWxlUGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICBUaGUgbG9jayBpbmZvIHRoaXMgcnVuIHdyb3RlIHdoZW4gaXQgYWNxdWlyZWQgdGhlIGxvY2suXG4gICAqL1xuICByZWFkb25seSBvd25JbmZvOiBMb2NrRmlsZUluZm87XG5cbiAgLyoqXG4gIFRoZSBsb2NrIHNjb3BlLCBmb3IgbG9nIG1lc3NhZ2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgc2NvcGU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgY3JlYXRlVGltZW91dEVycm9yfS5cbiAqL1xuaW50ZXJmYWNlIENyZWF0ZVRpbWVvdXRFcnJvclBhcmFtcyB7XG4gIC8qKlxuICBUaGUgY3VycmVudCBob2xkZXIncyBsb2NrIGluZm8sIG9yIGBudWxsYCBpZiBpdCBjb3VsZCBub3QgYmUgcmVhZC5cbiAgICovXG4gIHJlYWRvbmx5IGluZm86IExvY2tGaWxlSW5mbyB8IG51bGw7XG5cbiAgLyoqXG4gIFRoZSBsb2NrIHNjb3BlLlxuICAgKi9cbiAgcmVhZG9ubHkgc2NvcGU6IHN0cmluZztcblxuICAvKipcbiAgVGhlIHRpbWVvdXQgdGhhdCBlbGFwc2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgdGltZW91dEluTWlsbGlzZWNvbmRzOiBudW1iZXI7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGZvcm1hdFdhaXRNZXNzYWdlfS5cbiAqL1xuaW50ZXJmYWNlIEZvcm1hdFdhaXRNZXNzYWdlUGFyYW1zIHtcbiAgLyoqXG4gIFRoZSBjdXJyZW50IGhvbGRlcidzIGxvY2sgaW5mbywgb3IgYG51bGxgIGlmIGl0IGNvdWxkIG5vdCBiZSByZWFkLlxuICAgKi9cbiAgcmVhZG9ubHkgaW5mbzogTG9ja0ZpbGVJbmZvIHwgbnVsbDtcblxuICAvKipcbiAgVGhlIHRyYW5zcG9ydCBsYWJlbCBvZiB0aGUgd2FpdGluZyBydW4uXG4gICAqL1xuICByZWFkb25seSBsYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICBIb3cgbXVjaCBvZiB0aGUgYWNxdWlzaXRpb24gdGltZW91dCBpcyBsZWZ0LlxuICAgKi9cbiAgcmVhZG9ubHkgcmVtYWluaW5nSW5NaWxsaXNlY29uZHM6IG51bWJlcjtcblxuICAvKipcbiAgVGhlIGxvY2sgc2NvcGUuXG4gICAqL1xuICByZWFkb25seSBzY29wZTogc3RyaW5nO1xuXG4gIC8qKlxuICBIb3cgbG9uZyB0aGlzIHJ1biBoYXMgYmVlbiB3YWl0aW5nIHNvIGZhci5cbiAgICovXG4gIHJlYWRvbmx5IHdhaXRlZEluTWlsbGlzZWNvbmRzOiBudW1iZXI7XG59XG5cbi8qKlxuICogVGhlIEpTT04gcGF5bG9hZCBzdG9yZWQgaW5zaWRlIGEgbG9jayBmaWxlLCBpZGVudGlmeWluZyB0aGUgaG9sZGVyLlxuICovXG5pbnRlcmZhY2UgTG9ja0ZpbGVJbmZvIHtcbiAgLyoqXG4gIFdoZW4gdGhlIGxvY2sgd2FzIGFjcXVpcmVkIChgRGF0ZS5ub3coKWAgZXBvY2ggbWlsbGlzZWNvbmRzKS5cbiAgICovXG4gIHJlYWRvbmx5IGFjcXVpcmVkQXRJbk1pbGxpc2Vjb25kczogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRoZSBob2xkZXIgbGFzdCBwcm92ZWQgaXQgd2FzIHN0aWxsIGFsaXZlIChgRGF0ZS5ub3coKWAgZXBvY2hcbiAgICogbWlsbGlzZWNvbmRzKSwgcmVmcmVzaGVkIGV2ZXJ5IHtAbGluayBIRUFSVEJFQVRfSU5URVJWQUxfSU5fTUlMTElTRUNPTkRTfVxuICAgKiB3aGlsZSB0aGUgbG9jayBpcyBoZWxkLlxuICAgKlxuICAgKiBBYnNlbnQgaW4gYSBsb2NrIGZpbGUgd3JpdHRlbiBieSBhbiBvbGRlciB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZSwgd2hpY2hcbiAgICogc3RhbXBlZCB0aGUgUElEIGJ1dCBuZXZlciBiZWF0LlxuICAgKi9cbiAgcmVhZG9ubHkgaGVhcnRiZWF0QXRJbk1pbGxpc2Vjb25kcz86IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgVGhlIGhvc3QgdGhhdCBob2xkcyB0aGUgbG9jayAoUElEIGxpdmVuZXNzIGlzIG9ubHkgdmFsaWQgb24gdGhlIHNhbWUgaG9zdCkuXG4gICAqL1xuICByZWFkb25seSBob3N0bmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICBUaGUgdHJhbnNwb3J0IGxhYmVsIG9mIHRoZSBob2xkaW5nIHJ1bi5cbiAgICovXG4gIHJlYWRvbmx5IGxhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gIFRoZSBwcm9jZXNzIElEIG9mIHRoZSBob2xkaW5nIHJ1bi5cbiAgICovXG4gIHJlYWRvbmx5IHBpZDogbnVtYmVyO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBkaWRSZWZyZXNoSGVhcnRiZWF0fS5cbiAqL1xuaW50ZXJmYWNlIFJlZnJlc2hIZWFydGJlYXRQYXJhbXMge1xuICAvKipcbiAgVGhlIHRyYW5zcG9ydCBsYWJlbCBvZiB0aGlzIHJ1bi5cbiAgICovXG4gIHJlYWRvbmx5IGxhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gIFRoZSBwYXRoIHRvIHRoZSBsb2NrIGZpbGUgdG8gcmVmcmVzaC5cbiAgICovXG4gIHJlYWRvbmx5IGxvY2tGaWxlUGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICBUaGUgbG9jayBpbmZvIHRoaXMgcnVuIHdyb3RlIHdoZW4gaXQgYWNxdWlyZWQgdGhlIGxvY2suXG4gICAqL1xuICByZWFkb25seSBvd25JbmZvOiBMb2NrRmlsZUluZm87XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHN0ZWFsU3RhbGVMb2NrfS5cbiAqL1xuaW50ZXJmYWNlIFN0ZWFsU3RhbGVMb2NrUGFyYW1zIHtcbiAgLyoqXG4gIFRoZSBhYmFuZG9uZWQgaG9sZGVyJ3MgbG9jayBpbmZvLlxuICAgKi9cbiAgcmVhZG9ubHkgaW5mbzogTG9ja0ZpbGVJbmZvO1xuXG4gIC8qKlxuICBUaGUgdHJhbnNwb3J0IGxhYmVsIG9mIHRoZSBzdGVhbGluZyBydW4uXG4gICAqL1xuICByZWFkb25seSBsYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICBUaGUgcGF0aCB0byB0aGUgbG9jayBmaWxlIHRvIHJlbW92ZS5cbiAgICovXG4gIHJlYWRvbmx5IGxvY2tGaWxlUGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICBUaGUgbG9jayBzY29wZSwgZm9yIHRoZSBsb2cgbWVzc2FnZS5cbiAgICovXG4gIHJlYWRvbmx5IHNjb3BlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQWNxdWlyZXMgdGhlIGNyb3NzLXByb2Nlc3Mgc2V0dXAgbG9jayBmb3IgdGhlIGdpdmVuIHNjb3BlLCB3YWl0aW5nIHVudGlsIGFueVxuICogY29tcGV0aW5nIHJ1biByZWxlYXNlcyBpdCAob3IgaXRzIGxvY2sgaXMgZGV0ZWN0ZWQgYXMgc3RhbGUpLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgbG9jayBwYXJhbWV0ZXJzLlxuICogQHJldHVybnMgQSBoYW5kbGUgd2hvc2Uge0BsaW5rIFNldHVwTG9jay5yZWxlYXNlfSBmcmVlcyB0aGUgbG9jay5cbiAqIEB0aHJvd3MgSWYgdGhlIGxvY2sgY2Fubm90IGJlIGFjcXVpcmVkIHdpdGhpbiBgdGltZW91dEluTWlsbGlzZWNvbmRzYC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFjcXVpcmVTZXR1cExvY2socGFyYW1zOiBBY3F1aXJlU2V0dXBMb2NrUGFyYW1zKTogUHJvbWlzZTxTZXR1cExvY2s+IHtcbiAgY29uc3Qge1xuICAgIGxhYmVsLFxuICAgIHNjb3BlXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IHRpbWVvdXRJbk1pbGxpc2Vjb25kcyA9IHBhcmFtcy50aW1lb3V0SW5NaWxsaXNlY29uZHMgPz8gREVGQVVMVF9USU1FT1VUX0lOX01JTExJU0VDT05EUztcbiAgY29uc3QgbG9ja0ZpbGVQYXRoID0gZ2V0TG9ja0ZpbGVQYXRoKHNjb3BlKTtcbiAgbWtkaXJTeW5jKGdldExvY2tEaXJlY3RvcnkoKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cbiAgY29uc3Qgc3RhcnRlZEF0SW5NaWxsaXNlY29uZHMgPSBEYXRlLm5vdygpO1xuICBjb25zdCBkZWFkbGluZUluTWlsbGlzZWNvbmRzID0gc3RhcnRlZEF0SW5NaWxsaXNlY29uZHMgKyB0aW1lb3V0SW5NaWxsaXNlY29uZHM7XG4gIGxldCBsYXN0TG9nZ2VkV2FpdEF0SW5NaWxsaXNlY29uZHM6IG51bGwgfCBudW1iZXIgPSBudWxsO1xuXG4gIGZvciAoOzspIHtcbiAgICBjb25zdCBvd25JbmZvID0gdHJ5Q3JlYXRlTG9ja0ZpbGUobG9ja0ZpbGVQYXRoLCBsYWJlbCk7XG4gICAgaWYgKG93bkluZm8pIHtcbiAgICAgIHJldHVybiBjcmVhdGVMb2NrSGFuZGxlKHtcbiAgICAgICAgbGFiZWwsXG4gICAgICAgIGxvY2tGaWxlUGF0aCxcbiAgICAgICAgb3duSW5mbyxcbiAgICAgICAgc2NvcGVcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGluZm8gPSByZWFkTG9ja0ZpbGVJbmZvKGxvY2tGaWxlUGF0aCk7XG4gICAgaWYgKGluZm8gJiYgY2hlY2tJc0xvY2tTdGFsZShpbmZvLCBIRUFSVEJFQVRfU1RBTEVfSU5fTUlMTElTRUNPTkRTKSkge1xuICAgICAgc3RlYWxTdGFsZUxvY2soeyBpbmZvLCBsYWJlbCwgbG9ja0ZpbGVQYXRoLCBzY29wZSB9KTtcbiAgICAgIC8vIFJldHJ5IGltbWVkaWF0ZWx5IFx1MjAxNCBidXQgc3RpbGwgaG9ub3VyIHRoZSBkZWFkbGluZSwgc28gYSBsb2NrIHRoYXQgYVxuICAgICAgLy8gY29tcGV0aW5nIHJ1biBrZWVwcyByZWNyZWF0aW5nIGNhbm5vdCBzcGluIHRoaXMgbG9vcCBmb3JldmVyLlxuICAgICAgaWYgKERhdGUubm93KCkgPj0gZGVhZGxpbmVJbk1pbGxpc2Vjb25kcykge1xuICAgICAgICB0aHJvdyBjcmVhdGVUaW1lb3V0RXJyb3Ioe1xuICAgICAgICAgIGluZm8sXG4gICAgICAgICAgc2NvcGUsXG4gICAgICAgICAgdGltZW91dEluTWlsbGlzZWNvbmRzXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3Qgbm93SW5NaWxsaXNlY29uZHMgPSBEYXRlLm5vdygpO1xuICAgIGlmIChub3dJbk1pbGxpc2Vjb25kcyA+PSBkZWFkbGluZUluTWlsbGlzZWNvbmRzKSB7XG4gICAgICB0aHJvdyBjcmVhdGVUaW1lb3V0RXJyb3Ioe1xuICAgICAgICBpbmZvLFxuICAgICAgICBzY29wZSxcbiAgICAgICAgdGltZW91dEluTWlsbGlzZWNvbmRzXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBzaG91bGRMb2dXYWl0ID0gbGFzdExvZ2dlZFdhaXRBdEluTWlsbGlzZWNvbmRzID09PSBudWxsXG4gICAgICB8fCBub3dJbk1pbGxpc2Vjb25kcyAtIGxhc3RMb2dnZWRXYWl0QXRJbk1pbGxpc2Vjb25kcyA+PSBXQUlUX0xPR19JTlRFUlZBTF9JTl9NSUxMSVNFQ09ORFM7XG4gICAgaWYgKHNob3VsZExvZ1dhaXQpIHtcbiAgICAgIGxhc3RMb2dnZWRXYWl0QXRJbk1pbGxpc2Vjb25kcyA9IG5vd0luTWlsbGlzZWNvbmRzO1xuICAgICAgbG9nKGZvcm1hdFdhaXRNZXNzYWdlKHtcbiAgICAgICAgaW5mbyxcbiAgICAgICAgbGFiZWwsXG4gICAgICAgIHJlbWFpbmluZ0luTWlsbGlzZWNvbmRzOiBkZWFkbGluZUluTWlsbGlzZWNvbmRzIC0gbm93SW5NaWxsaXNlY29uZHMsXG4gICAgICAgIHNjb3BlLFxuICAgICAgICB3YWl0ZWRJbk1pbGxpc2Vjb25kczogbm93SW5NaWxsaXNlY29uZHMgLSBzdGFydGVkQXRJbk1pbGxpc2Vjb25kc1xuICAgICAgfSkpO1xuICAgIH1cblxuICAgIGF3YWl0IGRlbGF5KFBPTExfSU5URVJWQUxfSU5fTUlMTElTRUNPTkRTKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlcG9ydHMgd2hldGhlciBhIHJ1biBjdXJyZW50bHkgaG9sZHMgdGhlIHNldHVwIGxvY2sgZm9yIGEgc2NvcGUuXG4gKlxuICogQSBsb2NrIGZpbGUgdGhhdCBleGlzdHMgYnV0IGNhbm5vdCBiZSByZWFkIGNvdW50cyBhcyBoZWxkIFx1MjAxNCB0aGUgc2FtZSBhbnN3ZXJcbiAqIHtAbGluayBhY3F1aXJlU2V0dXBMb2NrfSBnaXZlcyBieSB3YWl0aW5nIG9uIGl0OiBpdCBpcyBlaXRoZXIgbWlkLXdyaXRlIG9yXG4gKiBjb3JydXB0LCBhbmQgZWl0aGVyIHdheSBubyBydW4gY2FuIHRha2UgaXQuXG4gKlxuICogQHBhcmFtIHNjb3BlIC0gVGhlIGxvY2sgc2NvcGUuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgd2hlbiBhIGhvbGRlciB0aGF0IGlzIG5vdCBzdGFsZSBvd25zIHRoZSBsb2NrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tJc1NldHVwTG9ja0hlbGQoc2NvcGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBsZXQgdGV4dDogc3RyaW5nO1xuICB0cnkge1xuICAgIHRleHQgPSByZWFkRmlsZVN5bmMoZ2V0TG9ja0ZpbGVQYXRoKHNjb3BlKSwgJ3V0Zi04Jyk7XG4gIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgcmV0dXJuIGdldEVycm9yQ29kZShlcnJvcikgIT09ICdFTk9FTlQnO1xuICB9XG5cbiAgbGV0IGluZm86IExvY2tGaWxlSW5mbztcbiAgdHJ5IHtcbiAgICBpbmZvID0gSlNPTi5wYXJzZSh0ZXh0KSBhcyBMb2NrRmlsZUluZm87XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuICFjaGVja0lzTG9ja1N0YWxlKGluZm8sIEhFQVJUQkVBVF9TVEFMRV9JTl9NSUxMSVNFQ09ORFMpO1xufVxuXG4vKipcbiAqIFRha2VzIHRoZSBzZXR1cCBsb2NrIGZvciBhIHNjb3BlIGlmIGl0IGlzIGZyZWUgb3IgYWJhbmRvbmVkLCB3aXRob3V0IHdhaXRpbmcuXG4gKlxuICogT25lIGF0dGVtcHQ6IGEgbGl2ZSBob2xkZXIgXHUyMDE0IG9yIGEgbG9jayBmaWxlIHRoYXQgY2Fubm90IGJlIHJlYWQgXHUyMDE0IG1lYW5zXG4gKiBgdW5kZWZpbmVkYCwgYW5kIHRoZSBjYWxsZXIgZGVjaWRlcyB3aGV0aGVyIHRvIHRyeSBhZ2FpbiBsYXRlci5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGxvY2sgcGFyYW1ldGVycy5cbiAqIEByZXR1cm5zIEEgaGFuZGxlIHdob3NlIHtAbGluayBTZXR1cExvY2sucmVsZWFzZX0gZnJlZXMgdGhlIGxvY2ssIG9yIGB1bmRlZmluZWRgIHdoaWxlIGFub3RoZXIgcnVuIGhvbGRzIGl0LlxuICogQHRocm93cyBJZiB0aGUgZmlsZSBzeXN0ZW0gZmFpbHMgZm9yIGFueSByZWFzb24gb3RoZXIgdGhhbiB0aGUgbG9jayBmaWxlIGFscmVhZHkgZXhpc3RpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cnlBY3F1aXJlU2V0dXBMb2NrKHBhcmFtczogVHJ5QWNxdWlyZVNldHVwTG9ja1BhcmFtcyk6IFNldHVwTG9jayB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHsgbGFiZWwsIHNjb3BlIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGxvY2tGaWxlUGF0aCA9IGdldExvY2tGaWxlUGF0aChzY29wZSk7XG4gIG1rZGlyU3luYyhnZXRMb2NrRGlyZWN0b3J5KCksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gIGxldCBvd25JbmZvID0gdHJ5Q3JlYXRlTG9ja0ZpbGUobG9ja0ZpbGVQYXRoLCBsYWJlbCk7XG4gIGlmICghb3duSW5mbykge1xuICAgIGNvbnN0IGluZm8gPSByZWFkTG9ja0ZpbGVJbmZvKGxvY2tGaWxlUGF0aCk7XG4gICAgaWYgKCFpbmZvIHx8ICFjaGVja0lzTG9ja1N0YWxlKGluZm8sIHBhcmFtcy5zdGFsZUFmdGVyU2lsZW5jZUluTWlsbGlzZWNvbmRzID8/IEhFQVJUQkVBVF9TVEFMRV9JTl9NSUxMSVNFQ09ORFMpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHN0ZWFsU3RhbGVMb2NrKHsgaW5mbywgbGFiZWwsIGxvY2tGaWxlUGF0aCwgc2NvcGUgfSk7XG4gICAgb3duSW5mbyA9IHRyeUNyZWF0ZUxvY2tGaWxlKGxvY2tGaWxlUGF0aCwgbGFiZWwpO1xuICAgIGlmICghb3duSW5mbykge1xuICAgICAgLy8gQW5vdGhlciBydW4gcmVjcmVhdGVkIGl0IGJldHdlZW4gdGhlIHN0ZWFsIGFuZCB0aGlzIGF0dGVtcHQ7IGl0IGlzIHRoZWlycyBub3cuXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjcmVhdGVMb2NrSGFuZGxlKHtcbiAgICBsYWJlbCxcbiAgICBsb2NrRmlsZVBhdGgsXG4gICAgb3duSW5mbyxcbiAgICBzY29wZVxuICB9KTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBsb2NrIGNhbiBiZSBjb25zaWRlcmVkIGFiYW5kb25lZC5cbiAqXG4gKiBBIGxpdmUgaG9sZGVyIHJlZnJlc2hlcyBpdHMgaGVhcnRiZWF0IGV2ZXJ5XG4gKiB7QGxpbmsgSEVBUlRCRUFUX0lOVEVSVkFMX0lOX01JTExJU0VDT05EU30sIHNvIGEgaGVhcnRiZWF0IHRoYXQgc3RvcHBlZCBtZWFuc1xuICogdGhlIGhvbGRlciBpcyBnb25lLiBUaGF0IGlzIHRoZSBwcmltYXJ5IHNpZ25hbCwgYmVjYXVzZSB0aGUgcmVjb3JkZWQgUElEIGFsb25lXG4gKiBjYW5ub3QgYmUgdHJ1c3RlZDoge0BsaW5rIGNoZWNrSXNQcm9jZXNzQWxpdmV9IG9ubHkgYW5zd2VycyBcImRvZXMgKmEqIHByb2Nlc3NcbiAqIHdpdGggdGhpcyBQSUQgZXhpc3RcIiwgd2hpY2ggYSByZWN5Y2xlZCBQSUQgc2F0aXNmaWVzIGxvbmcgYWZ0ZXIgdGhlIGhvbGRlclxuICogZGllZC5cbiAqXG4gKiBPbiB0aGUgc2FtZSBob3N0IGEgZGVhZCBQSUQgaXMgc3RpbGwgYW4gaW1tZWRpYXRlIGdpdmUtYXdheSwgc28gaXQgaXMga2VwdCBhc1xuICogYSBmYXN0IHBhdGguIE9uIGEgZGlmZmVyZW50IGhvc3QgKGEgc2hhcmVkL25ldHdvcmsgdGVtcCBkaXJlY3RvcnkpIHRoZSBQSURcbiAqIGNhbm5vdCBiZSBwcm9iZWQgYXQgYWxsIGFuZCB0aGUgdHdvIGNsb2NrcyBtYXkgZGlzYWdyZWUsIHNvIHRoZSBtdWNoIHdpZGVyXG4gKiB7QGxpbmsgU1RBTEVfTE9DS19BR0VfSU5fTUlMTElTRUNPTkRTfSB0aHJlc2hvbGQgaXMgdXNlZCBpbnN0ZWFkLlxuICpcbiAqIEBwYXJhbSBpbmZvIC0gVGhlIHBhcnNlZCBsb2NrIGluZm8uXG4gKiBAcGFyYW0gaGVhcnRiZWF0U3RhbGVJbk1pbGxpc2Vjb25kcyAtIEhvdyBsb25nIGEgc2FtZS1ob3N0IGhvbGRlciB3aG9zZSBQSUQgaXMgYWxpdmUgbWF5IHN0YXkgc2lsZW50LlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBsb2NrIGlzIHN0YWxlIGFuZCBtYXkgYmUgc3RvbGVuLlxuICovXG5mdW5jdGlvbiBjaGVja0lzTG9ja1N0YWxlKGluZm86IExvY2tGaWxlSW5mbywgaGVhcnRiZWF0U3RhbGVJbk1pbGxpc2Vjb25kczogbnVtYmVyKTogYm9vbGVhbiB7XG4gIGNvbnN0IHNpbGVudEZvckluTWlsbGlzZWNvbmRzID0gRGF0ZS5ub3coKSAtIGdldExhc3RTZWVuQXRJbk1pbGxpc2Vjb25kcyhpbmZvKTtcblxuICByZXR1cm4gaW5mby5ob3N0bmFtZSA9PT0gaG9zdG5hbWUoKSA/ICFjaGVja0lzUHJvY2Vzc0FsaXZlKGluZm8ucGlkKSB8fCBzaWxlbnRGb3JJbk1pbGxpc2Vjb25kcyA+IGhlYXJ0YmVhdFN0YWxlSW5NaWxsaXNlY29uZHMgOiBzaWxlbnRGb3JJbk1pbGxpc2Vjb25kcyA+IFNUQUxFX0xPQ0tfQUdFX0lOX01JTExJU0VDT05EUztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBsb2NrIGZpbGUgc3RpbGwgbmFtZXMgdGhpcyBwcm9jZXNzIGFzIGl0cyBob2xkZXIuXG4gKlxuICogQHBhcmFtIGluZm8gLSBUaGUgcGFyc2VkIGxvY2sgaW5mby5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGlzIHByb2Nlc3MgaG9sZHMgdGhlIGxvY2suXG4gKi9cbmZ1bmN0aW9uIGNoZWNrSXNPd25Mb2NrKGluZm86IExvY2tGaWxlSW5mbyk6IGJvb2xlYW4ge1xuICByZXR1cm4gaW5mby5waWQgPT09IHByb2Nlc3MucGlkICYmIGluZm8uaG9zdG5hbWUgPT09IGhvc3RuYW1lKCk7XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSBwcm9jZXNzIHdpdGggdGhlIGdpdmVuIFBJRCBpcyBjdXJyZW50bHkgYWxpdmUuXG4gKlxuICogQHBhcmFtIHBpZCAtIFRoZSBwcm9jZXNzIElEIHRvIHByb2JlLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBwcm9jZXNzIGV4aXN0cy5cbiAqL1xuZnVuY3Rpb24gY2hlY2tJc1Byb2Nlc3NBbGl2ZShwaWQ6IG51bWJlcik6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIHByb2Nlc3Mua2lsbChwaWQsIFBST0NFU1NfRVhJU1RFTkNFX1BST0JFX1NJR05BTCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgLy8gYEVQRVJNYCBtZWFucyB0aGUgcHJvY2VzcyBleGlzdHMgYnV0IGlzIG93bmVkIGJ5IGFub3RoZXIgdXNlciBcdTIwMTQgc3RpbGwgYWxpdmUuXG4gICAgcmV0dXJuIGdldEVycm9yQ29kZShlcnJvcikgPT09ICdFUEVSTSc7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEge0BsaW5rIFNldHVwTG9ja30gaGFuZGxlIHRoYXQga2VlcHMgdGhlIGxvY2sncyBoZWFydGJlYXQgZnJlc2ggd2hpbGVcbiAqIGhlbGQgYW5kIHJlbW92ZXMgdGhlIGxvY2sgZmlsZSBvbiByZWxlYXNlLlxuICpcbiAqIFRoZSBoZWFydGJlYXQgdGltZXIgaXMgYHVucmVmYGVkIHNvIGl0IGNhbiBuZXZlciBrZWVwIHRoZSBwcm9jZXNzIGFsaXZlIG9uIGl0c1xuICogb3duLCBhbmQgaXQgc3RvcHMgYXMgc29vbiBhcyB0aGUgbG9jayBmaWxlIG5hbWVzIHNvbWVib2R5IGVsc2UgXHUyMDE0IGEgcnVuIHdob3NlXG4gKiBsb2NrIHdhcyBzdG9sZW4gbXVzdCBub3Qgb3ZlcndyaXRlIGl0cyBzdWNjZXNzb3IncyBsb2NrLCBub3IgZGVsZXRlIGl0IG9uXG4gKiByZWxlYXNlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgaGFuZGxlIHBhcmFtZXRlcnMuXG4gKiBAcmV0dXJucyBUaGUgbG9jayBoYW5kbGUuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUxvY2tIYW5kbGUocGFyYW1zOiBDcmVhdGVMb2NrSGFuZGxlUGFyYW1zKTogU2V0dXBMb2NrIHtcbiAgY29uc3Qge1xuICAgIGxhYmVsLFxuICAgIGxvY2tGaWxlUGF0aCxcbiAgICBvd25JbmZvLFxuICAgIHNjb3BlXG4gIH0gPSBwYXJhbXM7XG4gIGxldCBpc1JlbGVhc2VkID0gZmFsc2U7XG5cbiAgY29uc3QgaGVhcnRiZWF0VGltZXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgY29uc3QgaXNTdGlsbE91cnMgPSBkaWRSZWZyZXNoSGVhcnRiZWF0KHtcbiAgICAgIGxhYmVsLFxuICAgICAgbG9ja0ZpbGVQYXRoLFxuICAgICAgb3duSW5mb1xuICAgIH0pO1xuICAgIGlmIChpc1N0aWxsT3Vycykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjbGVhckludGVydmFsKGhlYXJ0YmVhdFRpbWVyKTtcbiAgICBsb2coYFtpbnRlZ3JhdGlvbi1zZXR1cDoke2xhYmVsfV0gVGhlICcke3Njb3BlfScgc2V0dXAgbG9jayBpcyBubyBsb25nZXIgb3VycyBcdTIwMTQgYW5vdGhlciBydW4gdG9vayBpdCBvdmVyLiBIZWFydGJlYXQgc3RvcHBlZC5gKTtcbiAgfSwgSEVBUlRCRUFUX0lOVEVSVkFMX0lOX01JTExJU0VDT05EUyk7XG4gIGhlYXJ0YmVhdFRpbWVyLnVucmVmKCk7XG5cbiAgcmV0dXJuIHtcbiAgICByZWxlYXNlKCk6IHZvaWQge1xuICAgICAgaWYgKGlzUmVsZWFzZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaXNSZWxlYXNlZCA9IHRydWU7XG4gICAgICBjbGVhckludGVydmFsKGhlYXJ0YmVhdFRpbWVyKTtcblxuICAgICAgY29uc3QgaW5mbyA9IHJlYWRMb2NrRmlsZUluZm8obG9ja0ZpbGVQYXRoKTtcbiAgICAgIGlmIChpbmZvICYmICFjaGVja0lzT3duTG9jayhpbmZvKSkge1xuICAgICAgICBsb2coYFtpbnRlZ3JhdGlvbi1zZXR1cDoke2xhYmVsfV0gTGVhdmluZyB0aGUgJyR7c2NvcGV9JyBzZXR1cCBsb2NrIGluIHBsYWNlIFx1MjAxNCBpdCBub3cgYmVsb25ncyB0byAke2Rlc2NyaWJlSW5mbyhpbmZvKX0uYCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJtU3luYyhsb2NrRmlsZVBhdGgsIHsgZm9yY2U6IHRydWUgfSk7XG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgZXJyb3IgdGhyb3duIHdoZW4gdGhlIGxvY2sgY291bGQgbm90IGJlIGFjcXVpcmVkIGluIHRpbWUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBlcnJvciBwYXJhbWV0ZXJzLlxuICogQHJldHVybnMgVGhlIGVycm9yIHRvIHRocm93LlxuICovXG5mdW5jdGlvbiBjcmVhdGVUaW1lb3V0RXJyb3IocGFyYW1zOiBDcmVhdGVUaW1lb3V0RXJyb3JQYXJhbXMpOiBFcnJvciB7XG4gIGNvbnN0IHtcbiAgICBpbmZvLFxuICAgIHNjb3BlLFxuICAgIHRpbWVvdXRJbk1pbGxpc2Vjb25kc1xuICB9ID0gcGFyYW1zO1xuICByZXR1cm4gbmV3IEVycm9yKFxuICAgIGBUaW1lZCBvdXQgYWZ0ZXIgJHtTdHJpbmcodGltZW91dEluTWlsbGlzZWNvbmRzKX1tcyB3YWl0aW5nIGZvciB0aGUgJyR7c2NvcGV9JyBpbnRlZ3JhdGlvbi10ZXN0IHNldHVwIGxvY2sgYFxuICAgICAgKyBgaGVsZCBieSAke2Rlc2NyaWJlSG9sZGVyKGluZm8pfS4gQW5vdGhlciBpbnRlZ3JhdGlvbi10ZXN0IHJ1biBpcyBzdGlsbCBpbiBwcm9ncmVzcy5gXG4gICk7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgYWZ0ZXIgdGhlIGdpdmVuIGRlbGF5LiBVc2VkIHRvIHBvbGwgYmV0d2VlbiBsb2NrLWFjcXVpc2l0aW9uIGF0dGVtcHRzLlxuICpcbiAqIEBwYXJhbSBtaWxsaXNlY29uZHMgLSBUaGUgZGVsYXkgaW4gbWlsbGlzZWNvbmRzLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgYWZ0ZXIgdGhlIGRlbGF5LlxuICovXG5mdW5jdGlvbiBkZWxheShtaWxsaXNlY29uZHM6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICBzZXRUaW1lb3V0KHJlc29sdmUsIG1pbGxpc2Vjb25kcyk7XG4gIH0pO1xufVxuXG4vKipcbiAqIEJ1aWxkcyBhIGh1bWFuLXJlYWRhYmxlIGRlc2NyaXB0aW9uIG9mIHRoZSBjdXJyZW50IGxvY2sgaG9sZGVyIGZvciBsb2cvZXJyb3JcbiAqIG1lc3NhZ2VzLlxuICpcbiAqIEBwYXJhbSBpbmZvIC0gVGhlIHBhcnNlZCBsb2NrIGluZm8sIG9yIGBudWxsYCBpZiBpdCBjb3VsZCBub3QgYmUgcmVhZC5cbiAqIEByZXR1cm5zIEEgZGVzY3JpcHRpb24gc3RyaW5nLlxuICovXG5mdW5jdGlvbiBkZXNjcmliZUhvbGRlcihpbmZvOiBMb2NrRmlsZUluZm8gfCBudWxsKTogc3RyaW5nIHtcbiAgcmV0dXJuIGluZm8gPyBkZXNjcmliZUluZm8oaW5mbykgOiAnYW5vdGhlciBydW4nO1xufVxuXG4vKipcbiAqIEZvcm1hdHMgYSB7QGxpbmsgTG9ja0ZpbGVJbmZvfSBhcyBhIHNob3J0IGlkZW50aWZpZXIgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSBpbmZvIC0gVGhlIGxvY2sgaW5mby5cbiAqIEByZXR1cm5zIEEgc3RyaW5nIGxpa2UgYHBpZCAxMjM0IChvYnNpZGlhbi1jbGkpIG9uIGhvc3RgLlxuICovXG5mdW5jdGlvbiBkZXNjcmliZUluZm8oaW5mbzogTG9ja0ZpbGVJbmZvKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBwaWQgJHtTdHJpbmcoaW5mby5waWQpfSAoJHtpbmZvLmxhYmVsfSkgb24gJHtpbmZvLmhvc3RuYW1lfWA7XG59XG5cbi8qKlxuICogUmV3cml0ZXMgdGhlIGxvY2sgZmlsZSB3aXRoIGEgZnJlc2ggaGVhcnRiZWF0IHRpbWVzdGFtcCwgc28gd2FpdGluZyBydW5zIGNhblxuICogdGVsbCB0aGlzIGhvbGRlciBhcGFydCBmcm9tIGEgY3Jhc2hlZCBvbmUgd2hvc2UgUElEIGhhcyBiZWVuIHJlY3ljbGVkLlxuICpcbiAqIEEgbG9jayBmaWxlIHRoYXQgaXMgbWlzc2luZyBvciB1bnJlYWRhYmxlIGlzIHN0aWxsIHRyZWF0ZWQgYXMgb3VycyBhbmQgcmV3cml0dGVuOlxuICogdGhpcyBydW4gbmV2ZXIgcmVsZWFzZWQsIHNvIGl0cyBjbGFpbSBzdGFuZHMuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSByZWZyZXNoIHBhcmFtZXRlcnMuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgd2hpbGUgdGhlIGxvY2sgaXMgc3RpbGwgb3VycywgYGZhbHNlYCBvbmNlIGFub3RoZXIgcnVuIG93bnMgaXQuXG4gKi9cbmZ1bmN0aW9uIGRpZFJlZnJlc2hIZWFydGJlYXQocGFyYW1zOiBSZWZyZXNoSGVhcnRiZWF0UGFyYW1zKTogYm9vbGVhbiB7XG4gIGNvbnN0IHtcbiAgICBsYWJlbCxcbiAgICBsb2NrRmlsZVBhdGgsXG4gICAgb3duSW5mb1xuICB9ID0gcGFyYW1zO1xuXG4gIGNvbnN0IGluZm8gPSByZWFkTG9ja0ZpbGVJbmZvKGxvY2tGaWxlUGF0aCk7XG4gIGlmIChpbmZvICYmICFjaGVja0lzT3duTG9jayhpbmZvKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHJlZnJlc2hlZEluZm86IExvY2tGaWxlSW5mbyA9IHtcbiAgICAuLi5vd25JbmZvLFxuICAgIGhlYXJ0YmVhdEF0SW5NaWxsaXNlY29uZHM6IERhdGUubm93KClcbiAgfTtcbiAgdHJ5IHtcbiAgICB3cml0ZUZpbGVTeW5jKGxvY2tGaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkocmVmcmVzaGVkSW5mbykpO1xuICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgIC8vIE5vdCBmYXRhbDogdGhlIGxvY2sgaXMgc3RpbGwgaGVsZCBhbmQgd2lsbCBzdGlsbCBiZSByZWxlYXNlZC4gT25seSBpdHNcbiAgICAvLyBoZWFydGJlYXQgZ29lcyBzdGFsZSwgd2hpY2ggYXQgd29yc3QgbGV0cyBhIHdhaXRpbmcgcnVuIHN0ZWFsIGl0LlxuICAgIGxvZyhgW2ludGVncmF0aW9uLXNldHVwOiR7bGFiZWx9XSBGYWlsZWQgdG8gcmVmcmVzaCB0aGUgc2V0dXAgbG9jayBoZWFydGJlYXQ6ICR7ZXJyb3JUb1N0cmluZyhlcnJvcil9YCk7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogRm9ybWF0cyBhIGR1cmF0aW9uIGFzIGEgY29tcGFjdCBgMW0gMzBzYCAvIGA0NXNgIHN0cmluZyBmb3IgcHJvZ3Jlc3MgbG9ncy5cbiAqXG4gKiBAcGFyYW0gbWlsbGlzZWNvbmRzIC0gVGhlIGR1cmF0aW9uIGluIG1pbGxpc2Vjb25kcy5cbiAqIEByZXR1cm5zIFRoZSBmb3JtYXR0ZWQgZHVyYXRpb24uXG4gKi9cbmZ1bmN0aW9uIGZvcm1hdER1cmF0aW9uKG1pbGxpc2Vjb25kczogbnVtYmVyKTogc3RyaW5nIHtcbiAgY29uc3QgdG90YWxTZWNvbmRzID0gTWF0aC5yb3VuZChtaWxsaXNlY29uZHMgLyBNSUxMSVNFQ09ORFNfUEVSX1NFQ09ORCk7XG4gIGNvbnN0IG1pbnV0ZXMgPSBNYXRoLmZsb29yKHRvdGFsU2Vjb25kcyAvIFNFQ09ORFNfUEVSX01JTlVURSk7XG4gIGNvbnN0IHNlY29uZHMgPSB0b3RhbFNlY29uZHMgJSBTRUNPTkRTX1BFUl9NSU5VVEU7XG4gIHJldHVybiBtaW51dGVzID4gMCA/IGAke1N0cmluZyhtaW51dGVzKX1tICR7U3RyaW5nKHNlY29uZHMpfXNgIDogYCR7U3RyaW5nKHNlY29uZHMpfXNgO1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgcGVyaW9kaWMgXCJzdGlsbCB3YWl0aW5nXCIgcHJvZ3Jlc3MgbGluZSwgc28gYSBsZWdpdGltYXRlIG11bHRpLW1pbnV0ZVxuICogd2FpdCBpcyBkaXN0aW5ndWlzaGFibGUgZnJvbSBhIGhhbmcgaW4gdGhlIHRlcm1pbmFsLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgbWVzc2FnZSBwYXJhbWV0ZXJzLlxuICogQHJldHVybnMgVGhlIG1lc3NhZ2UgdG8gbG9nLlxuICovXG5mdW5jdGlvbiBmb3JtYXRXYWl0TWVzc2FnZShwYXJhbXM6IEZvcm1hdFdhaXRNZXNzYWdlUGFyYW1zKTogc3RyaW5nIHtcbiAgY29uc3Qge1xuICAgIGluZm8sXG4gICAgbGFiZWwsXG4gICAgcmVtYWluaW5nSW5NaWxsaXNlY29uZHMsXG4gICAgc2NvcGUsXG4gICAgd2FpdGVkSW5NaWxsaXNlY29uZHNcbiAgfSA9IHBhcmFtcztcbiAgY29uc3QgaGVsZEZvciA9IGluZm8gPyBgLCBoZWxkIGZvciAke2Zvcm1hdER1cmF0aW9uKERhdGUubm93KCkgLSBpbmZvLmFjcXVpcmVkQXRJbk1pbGxpc2Vjb25kcyl9YCA6ICcnO1xuICByZXR1cm4gYFtpbnRlZ3JhdGlvbi1zZXR1cDoke2xhYmVsfV0gV2FpdGluZyBmb3IgdGhlICcke3Njb3BlfScgc2V0dXAgbG9jayBoZWxkIGJ5ICR7ZGVzY3JpYmVIb2xkZXIoaW5mbyl9IHRvIGJlIHJlbGVhc2VkIGBcbiAgICArIGAod2FpdGVkICR7Zm9ybWF0RHVyYXRpb24od2FpdGVkSW5NaWxsaXNlY29uZHMpfSR7aGVsZEZvcn0sIGdpdmluZyB1cCBpbiAke2Zvcm1hdER1cmF0aW9uKHJlbWFpbmluZ0luTWlsbGlzZWNvbmRzKX0pLi4uYDtcbn1cblxuLyoqXG4gKiBFeHRyYWN0cyB0aGUgYGNvZGVgIGZyb20gYSBOb2RlLmpzIHN5c3RlbSBlcnJvciwgaWYgcHJlc2VudC5cbiAqXG4gKiBAcGFyYW0gZXJyb3IgLSBUaGUgdGhyb3duIHZhbHVlLlxuICogQHJldHVybnMgVGhlIGVycm9yIGNvZGUgc3RyaW5nLCBvciBgdW5kZWZpbmVkYCBpZiBub3QgYSBjb2RlZCBlcnJvci5cbiAqL1xuZnVuY3Rpb24gZ2V0RXJyb3JDb2RlKGVycm9yOiB1bmtub3duKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGVycm9yIGluc3RhbmNlb2YgRXJyb3IgJiYgJ2NvZGUnIGluIGVycm9yICYmIHR5cGVvZiBlcnJvci5jb2RlID09PSAnc3RyaW5nJyA/IGVycm9yLmNvZGUgOiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogUmV0dXJucyB3aGVuIHRoZSBob2xkZXIgd2FzIGxhc3Qga25vd24gdG8gYmUgYWxpdmUgXHUyMDE0IGl0cyBtb3N0IHJlY2VudCBoZWFydGJlYXQsXG4gKiBmYWxsaW5nIGJhY2sgdG8gaXRzIGFjcXVpc2l0aW9uIHRpbWUgZm9yIGEgbG9jayBmaWxlIHdyaXR0ZW4gYnkgYW4gb2xkZXJcbiAqIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlIHRoYXQgc3RhbXBlZCBubyBoZWFydGJlYXQgYXQgYWxsLlxuICpcbiAqIEBwYXJhbSBpbmZvIC0gVGhlIHBhcnNlZCBsb2NrIGluZm8uXG4gKiBAcmV0dXJucyBUaGUgZXBvY2ggbWlsbGlzZWNvbmRzIG9mIHRoZSBob2xkZXIncyBsYXN0IHNpZ24gb2YgbGlmZS5cbiAqL1xuZnVuY3Rpb24gZ2V0TGFzdFNlZW5BdEluTWlsbGlzZWNvbmRzKGluZm86IExvY2tGaWxlSW5mbyk6IG51bWJlciB7XG4gIHJldHVybiBpbmZvLmhlYXJ0YmVhdEF0SW5NaWxsaXNlY29uZHMgPz8gaW5mby5hY3F1aXJlZEF0SW5NaWxsaXNlY29uZHM7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgc2hhcmVkIGxvY2sgZGlyZWN0b3J5IGluc2lkZSB0aGUgT1MgdGVtcCBkaXJlY3RvcnkuXG4gKlxuICogQHJldHVybnMgVGhlIGFic29sdXRlIHBhdGggdG8gdGhlIGxvY2sgZGlyZWN0b3J5LlxuICovXG5mdW5jdGlvbiBnZXRMb2NrRGlyZWN0b3J5KCk6IHN0cmluZyB7XG4gIHJldHVybiBqb2luKHRtcGRpcigpLCBMT0NLX0RJUl9OQU1FKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBsb2NrIGZpbGUgcGF0aCBmb3IgdGhlIGdpdmVuIHNjb3BlLlxuICpcbiAqIEBwYXJhbSBzY29wZSAtIFRoZSBsb2NrIHNjb3BlLlxuICogQHJldHVybnMgVGhlIGFic29sdXRlIHBhdGggdG8gdGhlIHNjb3BlJ3MgbG9jayBmaWxlLlxuICovXG5mdW5jdGlvbiBnZXRMb2NrRmlsZVBhdGgoc2NvcGU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBqb2luKGdldExvY2tEaXJlY3RvcnkoKSwgYCR7c2NvcGV9JHtMT0NLX0ZJTEVfU1VGRklYfWApO1xufVxuXG4vKipcbiAqIFJlYWRzIGFuZCBwYXJzZXMgdGhlIGxvY2sgZmlsZSwgaWYgaXQgZXhpc3RzIGFuZCBpcyB2YWxpZCBKU09OLlxuICpcbiAqIEBwYXJhbSBsb2NrRmlsZVBhdGggLSBUaGUgcGF0aCB0byB0aGUgbG9jayBmaWxlLlxuICogQHJldHVybnMgVGhlIHBhcnNlZCBsb2NrIGluZm8sIG9yIGBudWxsYCBpZiBpdCBjb3VsZCBub3QgYmUgcmVhZC5cbiAqL1xuZnVuY3Rpb24gcmVhZExvY2tGaWxlSW5mbyhsb2NrRmlsZVBhdGg6IHN0cmluZyk6IExvY2tGaWxlSW5mbyB8IG51bGwge1xuICB0cnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKHJlYWRGaWxlU3luYyhsb2NrRmlsZVBhdGgsICd1dGYtOCcpKSBhcyBMb2NrRmlsZUluZm87XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbi8qKlxuICogUmVtb3ZlcyBhbiBhYmFuZG9uZWQgaG9sZGVyJ3MgbG9jayBmaWxlLCBzYXlpbmcgd2hvc2UgaXQgd2FzLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgYWJhbmRvbmVkIGhvbGRlciwgYW5kIHdobyBpcyB0YWtpbmcgb3Zlci5cbiAqL1xuZnVuY3Rpb24gc3RlYWxTdGFsZUxvY2socGFyYW1zOiBTdGVhbFN0YWxlTG9ja1BhcmFtcyk6IHZvaWQge1xuICBsb2coYFtpbnRlZ3JhdGlvbi1zZXR1cDoke3BhcmFtcy5sYWJlbH1dIFN0ZWFsaW5nIHN0YWxlICcke3BhcmFtcy5zY29wZX0nIHNldHVwIGxvY2sgZnJvbSAke2Rlc2NyaWJlSW5mbyhwYXJhbXMuaW5mbyl9LmApO1xuICBybVN5bmMocGFyYW1zLmxvY2tGaWxlUGF0aCwgeyBmb3JjZTogdHJ1ZSB9KTtcbn1cblxuLyoqXG4gKiBBdHRlbXB0cyB0byBhdG9taWNhbGx5IGNyZWF0ZSB0aGUgbG9jayBmaWxlIChmYWlsaW5nIGlmIGl0IGFscmVhZHkgZXhpc3RzKS5cbiAqXG4gKiBAcGFyYW0gbG9ja0ZpbGVQYXRoIC0gVGhlIHBhdGggdG8gdGhlIGxvY2sgZmlsZS5cbiAqIEBwYXJhbSBsYWJlbCAtIFRoZSB0cmFuc3BvcnQgbGFiZWwgdG8gcmVjb3JkIGluIHRoZSBsb2NrIGZpbGUuXG4gKiBAcmV0dXJucyBUaGUgbG9jayBpbmZvIHdyaXR0ZW4gb24gc3VjY2Vzcywgb3IgYG51bGxgIGlmIHRoZSBsb2NrIGlzIGFscmVhZHkgaGVsZC5cbiAqIEB0aHJvd3MgSWYgdGhlIGZpbGUgc3lzdGVtIGZhaWxzIGZvciBhbnkgcmVhc29uIG90aGVyIHRoYW4gdGhlIGZpbGUgZXhpc3RpbmcuXG4gKi9cbmZ1bmN0aW9uIHRyeUNyZWF0ZUxvY2tGaWxlKGxvY2tGaWxlUGF0aDogc3RyaW5nLCBsYWJlbDogc3RyaW5nKTogTG9ja0ZpbGVJbmZvIHwgbnVsbCB7XG4gIGNvbnN0IG5vd0luTWlsbGlzZWNvbmRzID0gRGF0ZS5ub3coKTtcbiAgY29uc3QgaW5mbzogTG9ja0ZpbGVJbmZvID0ge1xuICAgIGFjcXVpcmVkQXRJbk1pbGxpc2Vjb25kczogbm93SW5NaWxsaXNlY29uZHMsXG4gICAgaGVhcnRiZWF0QXRJbk1pbGxpc2Vjb25kczogbm93SW5NaWxsaXNlY29uZHMsXG4gICAgaG9zdG5hbWU6IGhvc3RuYW1lKCksXG4gICAgbGFiZWwsXG4gICAgcGlkOiBwcm9jZXNzLnBpZFxuICB9O1xuXG4gIHRyeSB7XG4gICAgd3JpdGVGaWxlU3luYyhsb2NrRmlsZVBhdGgsIEpTT04uc3RyaW5naWZ5KGluZm8pLCB7IGZsYWc6ICd3eCcgfSk7XG4gICAgcmV0dXJuIGluZm87XG4gIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgaWYgKGdldEVycm9yQ29kZShlcnJvcikgPT09ICdFRVhJU1QnKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQTBCQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLFlBQVk7QUFDckIsT0FBTyxhQUFhO0FBRXBCLFNBQVMscUJBQXFCO0FBQzlCLFNBQVMsV0FBVztBQU9iLE1BQU0sMkJBQTJCO0FBRXhDLE1BQU0sZ0JBQWdCO0FBQ3RCLE1BQU0sbUJBQW1CO0FBQ3pCLE1BQU0sZ0NBQWdDO0FBQ3RDLE1BQU0sMEJBQTBCO0FBQ2hDLE1BQU0scUJBQXFCO0FBQzNCLE1BQU0sZ0NBQWdDO0FBQ3RDLE1BQU0scUNBQXFDLGdDQUFnQztBQUszRSxNQUFNLGlDQUFpQztBQUN2QyxNQUFNLGtDQUFrQyxxQ0FBcUM7QUFDN0UsTUFBTSwrQkFBK0I7QUFDckMsTUFBTSxvQ0FBb0MsK0JBQStCO0FBQ3pFLE1BQU0sNEJBQTRCO0FBQ2xDLE1BQU0sNkJBQTZCO0FBQ25DLE1BQU0saUNBQWlDLDRCQUE0QixxQkFBcUI7QUFDeEYsTUFBTSxrQ0FBa0MsNkJBQTZCLHFCQUFxQjtBQUMxRixNQUFNLGlDQUFpQztBQW9PdkMsZUFBc0IsaUJBQWlCLFFBQW9EO0FBQ3pGLFFBQU07QUFBQSxJQUNKO0FBQUEsSUFDQTtBQUFBLEVBQ0YsSUFBSTtBQUNKLFFBQU0sd0JBQXdCLE9BQU8seUJBQXlCO0FBQzlELFFBQU0sZUFBZSxnQkFBZ0IsS0FBSztBQUMxQyxZQUFVLGlCQUFpQixHQUFHLEVBQUUsV0FBVyxLQUFLLENBQUM7QUFFakQsUUFBTSwwQkFBMEIsS0FBSyxJQUFJO0FBQ3pDLFFBQU0seUJBQXlCLDBCQUEwQjtBQUN6RCxNQUFJLGlDQUFnRDtBQUVwRCxhQUFTO0FBQ1AsVUFBTSxVQUFVLGtCQUFrQixjQUFjLEtBQUs7QUFDckQsUUFBSSxTQUFTO0FBQ1gsYUFBTyxpQkFBaUI7QUFBQSxRQUN0QjtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0g7QUFFQSxVQUFNLE9BQU8saUJBQWlCLFlBQVk7QUFDMUMsUUFBSSxRQUFRLGlCQUFpQixNQUFNLCtCQUErQixHQUFHO0FBQ25FLHFCQUFlLEVBQUUsTUFBTSxPQUFPLGNBQWMsTUFBTSxDQUFDO0FBR25ELFVBQUksS0FBSyxJQUFJLEtBQUssd0JBQXdCO0FBQ3hDLGNBQU0sbUJBQW1CO0FBQUEsVUFDdkI7QUFBQSxVQUNBO0FBQUEsVUFDQTtBQUFBLFFBQ0YsQ0FBQztBQUFBLE1BQ0g7QUFDQTtBQUFBLElBQ0Y7QUFFQSxVQUFNLG9CQUFvQixLQUFLLElBQUk7QUFDbkMsUUFBSSxxQkFBcUIsd0JBQXdCO0FBQy9DLFlBQU0sbUJBQW1CO0FBQUEsUUFDdkI7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0g7QUFFQSxVQUFNLGdCQUFnQixtQ0FBbUMsUUFDcEQsb0JBQW9CLGtDQUFrQztBQUMzRCxRQUFJLGVBQWU7QUFDakIsdUNBQWlDO0FBQ2pDLFVBQUksa0JBQWtCO0FBQUEsUUFDcEI7QUFBQSxRQUNBO0FBQUEsUUFDQSx5QkFBeUIseUJBQXlCO0FBQUEsUUFDbEQ7QUFBQSxRQUNBLHNCQUFzQixvQkFBb0I7QUFBQSxNQUM1QyxDQUFDLENBQUM7QUFBQSxJQUNKO0FBRUEsVUFBTSxNQUFNLDZCQUE2QjtBQUFBLEVBQzNDO0FBQ0Y7QUFZTyxTQUFTLHFCQUFxQixPQUF3QjtBQUMzRCxNQUFJO0FBQ0osTUFBSTtBQUNGLFdBQU8sYUFBYSxnQkFBZ0IsS0FBSyxHQUFHLE9BQU87QUFBQSxFQUNyRCxTQUFTLE9BQWdCO0FBQ3ZCLFdBQU8sYUFBYSxLQUFLLE1BQU07QUFBQSxFQUNqQztBQUVBLE1BQUk7QUFDSixNQUFJO0FBQ0YsV0FBTyxLQUFLLE1BQU0sSUFBSTtBQUFBLEVBQ3hCLFFBQVE7QUFDTixXQUFPO0FBQUEsRUFDVDtBQUVBLFNBQU8sQ0FBQyxpQkFBaUIsTUFBTSwrQkFBK0I7QUFDaEU7QUFZTyxTQUFTLG9CQUFvQixRQUEwRDtBQUM1RixRQUFNLEVBQUUsT0FBTyxNQUFNLElBQUk7QUFDekIsUUFBTSxlQUFlLGdCQUFnQixLQUFLO0FBQzFDLFlBQVUsaUJBQWlCLEdBQUcsRUFBRSxXQUFXLEtBQUssQ0FBQztBQUVqRCxNQUFJLFVBQVUsa0JBQWtCLGNBQWMsS0FBSztBQUNuRCxNQUFJLENBQUMsU0FBUztBQUNaLFVBQU0sT0FBTyxpQkFBaUIsWUFBWTtBQUMxQyxRQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixNQUFNLE9BQU8sbUNBQW1DLCtCQUErQixHQUFHO0FBQy9HLGFBQU87QUFBQSxJQUNUO0FBRUEsbUJBQWUsRUFBRSxNQUFNLE9BQU8sY0FBYyxNQUFNLENBQUM7QUFDbkQsY0FBVSxrQkFBa0IsY0FBYyxLQUFLO0FBQy9DLFFBQUksQ0FBQyxTQUFTO0FBRVosYUFBTztBQUFBLElBQ1Q7QUFBQSxFQUNGO0FBRUEsU0FBTyxpQkFBaUI7QUFBQSxJQUN0QjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0YsQ0FBQztBQUNIO0FBcUJBLFNBQVMsaUJBQWlCLE1BQW9CLDhCQUErQztBQUMzRixRQUFNLDBCQUEwQixLQUFLLElBQUksSUFBSSw0QkFBNEIsSUFBSTtBQUU3RSxTQUFPLEtBQUssYUFBYSxTQUFTLElBQUksQ0FBQyxvQkFBb0IsS0FBSyxHQUFHLEtBQUssMEJBQTBCLCtCQUErQiwwQkFBMEI7QUFDN0o7QUFRQSxTQUFTLGVBQWUsTUFBNkI7QUFDbkQsU0FBTyxLQUFLLFFBQVEsUUFBUSxPQUFPLEtBQUssYUFBYSxTQUFTO0FBQ2hFO0FBUUEsU0FBUyxvQkFBb0IsS0FBc0I7QUFDakQsTUFBSTtBQUNGLFlBQVEsS0FBSyxLQUFLLDhCQUE4QjtBQUNoRCxXQUFPO0FBQUEsRUFDVCxTQUFTLE9BQWdCO0FBRXZCLFdBQU8sYUFBYSxLQUFLLE1BQU07QUFBQSxFQUNqQztBQUNGO0FBY0EsU0FBUyxpQkFBaUIsUUFBMkM7QUFDbkUsUUFBTTtBQUFBLElBQ0o7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxFQUNGLElBQUk7QUFDSixNQUFJLGFBQWE7QUFFakIsUUFBTSxpQkFBaUIsWUFBWSxNQUFNO0FBQ3ZDLFVBQU0sY0FBYyxvQkFBb0I7QUFBQSxNQUN0QztBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsSUFDRixDQUFDO0FBQ0QsUUFBSSxhQUFhO0FBQ2Y7QUFBQSxJQUNGO0FBQ0Esa0JBQWMsY0FBYztBQUM1QixRQUFJLHNCQUFzQixLQUFLLFVBQVUsS0FBSyxvRkFBK0U7QUFBQSxFQUMvSCxHQUFHLGtDQUFrQztBQUNyQyxpQkFBZSxNQUFNO0FBRXJCLFNBQU87QUFBQSxJQUNMLFVBQWdCO0FBQ2QsVUFBSSxZQUFZO0FBQ2Q7QUFBQSxNQUNGO0FBQ0EsbUJBQWE7QUFDYixvQkFBYyxjQUFjO0FBRTVCLFlBQU0sT0FBTyxpQkFBaUIsWUFBWTtBQUMxQyxVQUFJLFFBQVEsQ0FBQyxlQUFlLElBQUksR0FBRztBQUNqQyxZQUFJLHNCQUFzQixLQUFLLGtCQUFrQixLQUFLLGtEQUE2QyxhQUFhLElBQUksQ0FBQyxHQUFHO0FBQ3hIO0FBQUEsTUFDRjtBQUNBLGFBQU8sY0FBYyxFQUFFLE9BQU8sS0FBSyxDQUFDO0FBQUEsSUFDdEM7QUFBQSxFQUNGO0FBQ0Y7QUFRQSxTQUFTLG1CQUFtQixRQUF5QztBQUNuRSxRQUFNO0FBQUEsSUFDSjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsRUFDRixJQUFJO0FBQ0osU0FBTyxJQUFJO0FBQUEsSUFDVCxtQkFBbUIsT0FBTyxxQkFBcUIsQ0FBQyx1QkFBdUIsS0FBSyx5Q0FDN0QsZUFBZSxJQUFJLENBQUM7QUFBQSxFQUNyQztBQUNGO0FBUUEsU0FBUyxNQUFNLGNBQXFDO0FBQ2xELFNBQU8sSUFBSSxRQUFjLENBQUMsWUFBWTtBQUNwQyxlQUFXLFNBQVMsWUFBWTtBQUFBLEVBQ2xDLENBQUM7QUFDSDtBQVNBLFNBQVMsZUFBZSxNQUFtQztBQUN6RCxTQUFPLE9BQU8sYUFBYSxJQUFJLElBQUk7QUFDckM7QUFRQSxTQUFTLGFBQWEsTUFBNEI7QUFDaEQsU0FBTyxPQUFPLE9BQU8sS0FBSyxHQUFHLENBQUMsS0FBSyxLQUFLLEtBQUssUUFBUSxLQUFLLFFBQVE7QUFDcEU7QUFZQSxTQUFTLG9CQUFvQixRQUF5QztBQUNwRSxRQUFNO0FBQUEsSUFDSjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsRUFDRixJQUFJO0FBRUosUUFBTSxPQUFPLGlCQUFpQixZQUFZO0FBQzFDLE1BQUksUUFBUSxDQUFDLGVBQWUsSUFBSSxHQUFHO0FBQ2pDLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxnQkFBOEI7QUFBQSxJQUNsQyxHQUFHO0FBQUEsSUFDSCwyQkFBMkIsS0FBSyxJQUFJO0FBQUEsRUFDdEM7QUFDQSxNQUFJO0FBQ0Ysa0JBQWMsY0FBYyxLQUFLLFVBQVUsYUFBYSxDQUFDO0FBQUEsRUFDM0QsU0FBUyxPQUFnQjtBQUd2QixRQUFJLHNCQUFzQixLQUFLLGlEQUFpRCxjQUFjLEtBQUssQ0FBQyxFQUFFO0FBQUEsRUFDeEc7QUFDQSxTQUFPO0FBQ1Q7QUFRQSxTQUFTLGVBQWUsY0FBOEI7QUFDcEQsUUFBTSxlQUFlLEtBQUssTUFBTSxlQUFlLHVCQUF1QjtBQUN0RSxRQUFNLFVBQVUsS0FBSyxNQUFNLGVBQWUsa0JBQWtCO0FBQzVELFFBQU0sVUFBVSxlQUFlO0FBQy9CLFNBQU8sVUFBVSxJQUFJLEdBQUcsT0FBTyxPQUFPLENBQUMsS0FBSyxPQUFPLE9BQU8sQ0FBQyxNQUFNLEdBQUcsT0FBTyxPQUFPLENBQUM7QUFDckY7QUFTQSxTQUFTLGtCQUFrQixRQUF5QztBQUNsRSxRQUFNO0FBQUEsSUFDSjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxFQUNGLElBQUk7QUFDSixRQUFNLFVBQVUsT0FBTyxjQUFjLGVBQWUsS0FBSyxJQUFJLElBQUksS0FBSyx3QkFBd0IsQ0FBQyxLQUFLO0FBQ3BHLFNBQU8sc0JBQXNCLEtBQUssc0JBQXNCLEtBQUssd0JBQXdCLGVBQWUsSUFBSSxDQUFDLDJCQUMxRixlQUFlLG9CQUFvQixDQUFDLEdBQUcsT0FBTyxrQkFBa0IsZUFBZSx1QkFBdUIsQ0FBQztBQUN4SDtBQVFBLFNBQVMsYUFBYSxPQUFvQztBQUN4RCxTQUFPLGlCQUFpQixTQUFTLFVBQVUsU0FBUyxPQUFPLE1BQU0sU0FBUyxXQUFXLE1BQU0sT0FBTztBQUNwRztBQVVBLFNBQVMsNEJBQTRCLE1BQTRCO0FBQy9ELFNBQU8sS0FBSyw2QkFBNkIsS0FBSztBQUNoRDtBQU9BLFNBQVMsbUJBQTJCO0FBQ2xDLFNBQU8sS0FBSyxPQUFPLEdBQUcsYUFBYTtBQUNyQztBQVFBLFNBQVMsZ0JBQWdCLE9BQXVCO0FBQzlDLFNBQU8sS0FBSyxpQkFBaUIsR0FBRyxHQUFHLEtBQUssR0FBRyxnQkFBZ0IsRUFBRTtBQUMvRDtBQVFBLFNBQVMsaUJBQWlCLGNBQTJDO0FBQ25FLE1BQUk7QUFDRixXQUFPLEtBQUssTUFBTSxhQUFhLGNBQWMsT0FBTyxDQUFDO0FBQUEsRUFDdkQsUUFBUTtBQUNOLFdBQU87QUFBQSxFQUNUO0FBQ0Y7QUFPQSxTQUFTLGVBQWUsUUFBb0M7QUFDMUQsTUFBSSxzQkFBc0IsT0FBTyxLQUFLLHFCQUFxQixPQUFPLEtBQUsscUJBQXFCLGFBQWEsT0FBTyxJQUFJLENBQUMsR0FBRztBQUN4SCxTQUFPLE9BQU8sY0FBYyxFQUFFLE9BQU8sS0FBSyxDQUFDO0FBQzdDO0FBVUEsU0FBUyxrQkFBa0IsY0FBc0IsT0FBb0M7QUFDbkYsUUFBTSxvQkFBb0IsS0FBSyxJQUFJO0FBQ25DLFFBQU0sT0FBcUI7QUFBQSxJQUN6QiwwQkFBMEI7QUFBQSxJQUMxQiwyQkFBMkI7QUFBQSxJQUMzQixVQUFVLFNBQVM7QUFBQSxJQUNuQjtBQUFBLElBQ0EsS0FBSyxRQUFRO0FBQUEsRUFDZjtBQUVBLE1BQUk7QUFDRixrQkFBYyxjQUFjLEtBQUssVUFBVSxJQUFJLEdBQUcsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUNoRSxXQUFPO0FBQUEsRUFDVCxTQUFTLE9BQWdCO0FBQ3ZCLFFBQUksYUFBYSxLQUFLLE1BQU0sVUFBVTtBQUNwQyxhQUFPO0FBQUEsSUFDVDtBQUNBLFVBQU07QUFBQSxFQUNSO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==