@workflow/core 5.0.0-beta.42 → 5.0.0-beta.44

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 (220) hide show
  1. package/dist/capabilities.d.ts +4 -4
  2. package/dist/capabilities.js +5 -5
  3. package/dist/capture-stack.d.ts +1 -1
  4. package/dist/capture-stack.js +2 -2
  5. package/dist/class-serialization.d.ts +8 -8
  6. package/dist/class-serialization.js +9 -9
  7. package/dist/classify-error.js +5 -5
  8. package/dist/context-violation-error.d.ts +5 -5
  9. package/dist/context-violation-error.d.ts.map +1 -1
  10. package/dist/context-violation-error.js +5 -5
  11. package/dist/create-hook.d.ts +10 -6
  12. package/dist/create-hook.d.ts.map +1 -1
  13. package/dist/create-hook.js +1 -1
  14. package/dist/define-hook.js +2 -2
  15. package/dist/describe-error.d.ts +7 -7
  16. package/dist/describe-error.js +8 -8
  17. package/dist/encryption.d.ts +5 -5
  18. package/dist/encryption.js +7 -7
  19. package/dist/events-consumer.d.ts +19 -7
  20. package/dist/events-consumer.d.ts.map +1 -1
  21. package/dist/events-consumer.js +33 -12
  22. package/dist/flushable-stream.d.ts +4 -4
  23. package/dist/flushable-stream.js +12 -12
  24. package/dist/global.d.ts +1 -1
  25. package/dist/global.js +1 -1
  26. package/dist/index.d.ts +1 -1
  27. package/dist/index.js +2 -2
  28. package/dist/log-format.d.ts +2 -2
  29. package/dist/log-format.js +5 -5
  30. package/dist/logger.js +4 -4
  31. package/dist/private.d.ts +39 -64
  32. package/dist/private.d.ts.map +1 -1
  33. package/dist/private.js +294 -48
  34. package/dist/replay-payload-cache.d.ts +1 -1
  35. package/dist/replay-payload-cache.js +4 -4
  36. package/dist/runtime/compute-instance.d.ts +4 -3
  37. package/dist/runtime/compute-instance.d.ts.map +1 -1
  38. package/dist/runtime/compute-instance.js +5 -4
  39. package/dist/runtime/constants.d.ts +46 -19
  40. package/dist/runtime/constants.d.ts.map +1 -1
  41. package/dist/runtime/constants.js +76 -38
  42. package/dist/runtime/count-step-started-events.d.ts +7 -7
  43. package/dist/runtime/count-step-started-events.js +4 -4
  44. package/dist/runtime/deployment-guard.d.ts +7 -7
  45. package/dist/runtime/deployment-guard.js +8 -8
  46. package/dist/runtime/get-port-lazy.d.ts +2 -2
  47. package/dist/runtime/get-port-lazy.d.ts.map +1 -1
  48. package/dist/runtime/get-port-lazy.js +37 -30
  49. package/dist/runtime/get-world-lazy.d.ts +2 -2
  50. package/dist/runtime/get-world-lazy.js +3 -3
  51. package/dist/runtime/helpers.d.ts +18 -18
  52. package/dist/runtime/helpers.js +27 -27
  53. package/dist/runtime/quickjs-entrypoint.d.ts +23 -10
  54. package/dist/runtime/quickjs-entrypoint.d.ts.map +1 -1
  55. package/dist/runtime/quickjs-entrypoint.js +200 -81
  56. package/dist/runtime/quickjs-runtime.d.ts +31 -15
  57. package/dist/runtime/quickjs-runtime.d.ts.map +1 -1
  58. package/dist/runtime/quickjs-runtime.js +126 -77
  59. package/dist/runtime/quickjs-serde.d.ts +10 -10
  60. package/dist/runtime/quickjs-serde.js +20 -20
  61. package/dist/runtime/replay-budget.d.ts +4 -4
  62. package/dist/runtime/replay-budget.js +5 -5
  63. package/dist/runtime/replay-recovery-reporter.d.ts +1 -1
  64. package/dist/runtime/replay-recovery-reporter.js +2 -2
  65. package/dist/runtime/resume-hook.d.ts +2 -2
  66. package/dist/runtime/resume-hook.js +27 -27
  67. package/dist/runtime/resume-latency.d.ts +25 -25
  68. package/dist/runtime/resume-latency.d.ts.map +1 -1
  69. package/dist/runtime/resume-latency.js +4 -4
  70. package/dist/runtime/run-id-time.d.ts +2 -2
  71. package/dist/runtime/run-id-time.js +5 -5
  72. package/dist/runtime/run.d.ts +21 -4
  73. package/dist/runtime/run.d.ts.map +1 -1
  74. package/dist/runtime/run.js +154 -35
  75. package/dist/runtime/runs.d.ts +4 -4
  76. package/dist/runtime/runs.js +2 -2
  77. package/dist/runtime/start.d.ts +3 -3
  78. package/dist/runtime/start.d.ts.map +1 -1
  79. package/dist/runtime/start.js +27 -23
  80. package/dist/runtime/step-executor.d.ts +59 -11
  81. package/dist/runtime/step-executor.d.ts.map +1 -1
  82. package/dist/runtime/step-executor.js +116 -42
  83. package/dist/runtime/step-latency.d.ts +20 -14
  84. package/dist/runtime/step-latency.d.ts.map +1 -1
  85. package/dist/runtime/step-latency.js +13 -11
  86. package/dist/runtime/step-ownership.d.ts +6 -6
  87. package/dist/runtime/step-ownership.js +8 -8
  88. package/dist/runtime/step-single-flight.d.ts +1 -1
  89. package/dist/runtime/step-single-flight.d.ts.map +1 -1
  90. package/dist/runtime/step-single-flight.js +17 -11
  91. package/dist/runtime/suspension-handler.d.ts +99 -7
  92. package/dist/runtime/suspension-handler.d.ts.map +1 -1
  93. package/dist/runtime/suspension-handler.js +678 -57
  94. package/dist/runtime/unserializable-step.d.ts +34 -0
  95. package/dist/runtime/unserializable-step.d.ts.map +1 -0
  96. package/dist/runtime/unserializable-step.js +52 -0
  97. package/dist/runtime/vm-mode.d.ts +1 -1
  98. package/dist/runtime/vm-mode.js +2 -2
  99. package/dist/runtime/wait-continuation.d.ts +31 -9
  100. package/dist/runtime/wait-continuation.d.ts.map +1 -1
  101. package/dist/runtime/wait-continuation.js +44 -13
  102. package/dist/runtime/wait-until.d.ts +1 -1
  103. package/dist/runtime/wait-until.js +2 -2
  104. package/dist/runtime/world-compatibility.d.ts +20 -9
  105. package/dist/runtime/world-compatibility.d.ts.map +1 -1
  106. package/dist/runtime/world-compatibility.js +24 -13
  107. package/dist/runtime/world-init.d.ts +5 -5
  108. package/dist/runtime/world-init.js +6 -6
  109. package/dist/runtime/world.d.ts.map +1 -1
  110. package/dist/runtime/world.js +13 -3
  111. package/dist/runtime.d.ts.map +1 -1
  112. package/dist/runtime.js +417 -213
  113. package/dist/sealed-box.d.ts +7 -7
  114. package/dist/sealed-box.js +15 -15
  115. package/dist/serialization/client.js +2 -2
  116. package/dist/serialization/codec-devalue-vm.d.ts +1 -1
  117. package/dist/serialization/codec-devalue-vm.js +4 -4
  118. package/dist/serialization/codec-devalue.d.ts +1 -1
  119. package/dist/serialization/codec-devalue.js +2 -2
  120. package/dist/serialization/codec.d.ts +4 -4
  121. package/dist/serialization/codec.js +2 -2
  122. package/dist/serialization/compression.d.ts +12 -11
  123. package/dist/serialization/compression.d.ts.map +1 -1
  124. package/dist/serialization/compression.js +16 -15
  125. package/dist/serialization/encryption.d.ts +7 -7
  126. package/dist/serialization/encryption.d.ts.map +1 -1
  127. package/dist/serialization/encryption.js +8 -8
  128. package/dist/serialization/errors.js +2 -2
  129. package/dist/serialization/format.d.ts +6 -6
  130. package/dist/serialization/format.js +7 -7
  131. package/dist/serialization/hardened.d.ts +18 -18
  132. package/dist/serialization/hardened.d.ts.map +1 -1
  133. package/dist/serialization/hardened.js +41 -32
  134. package/dist/serialization/index.d.ts +1 -1
  135. package/dist/serialization/index.js +2 -2
  136. package/dist/serialization/reducers/class-vm.d.ts +1 -1
  137. package/dist/serialization/reducers/class-vm.js +2 -2
  138. package/dist/serialization/reducers/class.js +2 -2
  139. package/dist/serialization/reducers/common-vm.js +12 -12
  140. package/dist/serialization/reducers/common.js +12 -12
  141. package/dist/serialization/reducers/step-function-vm.d.ts +1 -1
  142. package/dist/serialization/reducers/step-function-vm.js +2 -2
  143. package/dist/serialization/reducers/step-function.js +2 -2
  144. package/dist/serialization/step.js +2 -2
  145. package/dist/serialization/types.d.ts +5 -5
  146. package/dist/serialization/types.js +2 -2
  147. package/dist/serialization/workflow-vm.d.ts +1 -1
  148. package/dist/serialization/workflow-vm.d.ts.map +1 -1
  149. package/dist/serialization/workflow-vm.js +13 -10
  150. package/dist/serialization-format.d.ts +11 -11
  151. package/dist/serialization-format.d.ts.map +1 -1
  152. package/dist/serialization-format.js +29 -23
  153. package/dist/serialization.d.ts +20 -12
  154. package/dist/serialization.d.ts.map +1 -1
  155. package/dist/serialization.js +141 -99
  156. package/dist/set-attributes.js +2 -2
  157. package/dist/source-map.d.ts +1 -1
  158. package/dist/source-map.d.ts.map +1 -1
  159. package/dist/source-map.js +18 -12
  160. package/dist/step/context-storage.d.ts +5 -5
  161. package/dist/step/context-storage.js +1 -1
  162. package/dist/step/writable-stream.d.ts +3 -3
  163. package/dist/step/writable-stream.js +7 -7
  164. package/dist/step.js +12 -12
  165. package/dist/symbols.d.ts +2 -2
  166. package/dist/symbols.js +3 -3
  167. package/dist/telemetry/semantic-conventions.d.ts +21 -13
  168. package/dist/telemetry/semantic-conventions.d.ts.map +1 -1
  169. package/dist/telemetry/semantic-conventions.js +21 -15
  170. package/dist/telemetry.d.ts +9 -3
  171. package/dist/telemetry.d.ts.map +1 -1
  172. package/dist/telemetry.js +40 -10
  173. package/dist/test-support/orchestrator-context.d.ts.map +1 -1
  174. package/dist/test-support/orchestrator-context.js +12 -2
  175. package/dist/version.d.ts +1 -1
  176. package/dist/version.js +2 -2
  177. package/dist/vm/index.js +4 -4
  178. package/dist/vm/script-cache.d.ts.map +1 -1
  179. package/dist/vm/script-cache.js +23 -17
  180. package/dist/vm/uint8array-base64.js +1 -1
  181. package/dist/workflow/abort-controller.d.ts +1 -1
  182. package/dist/workflow/abort-controller.js +12 -12
  183. package/dist/workflow/create-hook.js +3 -3
  184. package/dist/workflow/get-workflow-metadata.js +2 -2
  185. package/dist/workflow/hook.js +18 -18
  186. package/dist/workflow/set-attributes.d.ts +1 -1
  187. package/dist/workflow/set-attributes.js +2 -2
  188. package/dist/workflow/sleep.js +2 -2
  189. package/dist/workflow/world-init-stub.d.ts +1 -1
  190. package/dist/workflow/world-init-stub.js +2 -2
  191. package/dist/workflow.d.ts +2 -2
  192. package/dist/workflow.js +36 -14
  193. package/docs/api-reference/create-hook.mdx +15 -15
  194. package/docs/api-reference/create-webhook.mdx +15 -15
  195. package/docs/api-reference/define-hook.mdx +10 -10
  196. package/docs/api-reference/fatal-error.mdx +2 -2
  197. package/docs/api-reference/fetch.mdx +7 -7
  198. package/docs/api-reference/get-step-metadata.mdx +2 -2
  199. package/docs/api-reference/get-workflow-metadata.mdx +3 -3
  200. package/docs/api-reference/get-writable.mdx +7 -7
  201. package/docs/api-reference/index.mdx +1 -1
  202. package/docs/api-reference/retryable-error.mdx +1 -1
  203. package/docs/api-reference/set-attributes.mdx +2 -2
  204. package/docs/api-reference/sleep.mdx +3 -3
  205. package/docs/foundations/cancellation.mdx +31 -31
  206. package/docs/foundations/errors-and-retries.mdx +42 -11
  207. package/docs/foundations/hooks.mdx +37 -37
  208. package/docs/foundations/idempotency.mdx +9 -9
  209. package/docs/foundations/serialization.mdx +21 -22
  210. package/docs/foundations/starting-workflows.mdx +36 -37
  211. package/docs/foundations/streaming.mdx +68 -39
  212. package/docs/foundations/versioning.mdx +3 -3
  213. package/docs/foundations/workflows-and-steps.mdx +9 -9
  214. package/docs/how-it-works/cancellation.mdx +62 -62
  215. package/docs/how-it-works/code-transform.mdx +66 -54
  216. package/docs/how-it-works/encryption.mdx +25 -21
  217. package/docs/how-it-works/event-sourcing.mdx +84 -28
  218. package/docs/how-it-works/framework-integrations.mdx +12 -12
  219. package/docs/how-it-works/understanding-directives.mdx +21 -21
  220. package/package.json +7 -7
@@ -6,31 +6,31 @@ import type { HookResumeTiming } from '@workflow/world';
6
6
  *
7
7
  * ```text
8
8
  * T0 resumeHook() entered
9
- * producer_prep hook lookup, serialization, encryption
9
+ * producer_prep : hook lookup, serialization, encryption
10
10
  * T1 queue publish requested
11
- * queue_delivery network + VQS delivery (incl. any affinity re-route)
11
+ * queue_delivery : network + VQS delivery (incl. any affinity re-route)
12
12
  * T2 final consumer's queue handler entered
13
- * resume_setup affinity check, hook_received re-ensure, replay preload
13
+ * resume_setup : affinity check, hook_received re-ensure, replay preload
14
14
  * T3 replay begins
15
- * replay VM/session creation and workflow replay
15
+ * replay : VM/session creation and workflow replay
16
16
  * T4 next durable step encountered
17
- * step_dispatch suspension handling, inline batch or queue dispatch
17
+ * step_dispatch : suspension handling, inline batch or queue dispatch
18
18
  * T5 step_started request begins
19
- * step_claim the claim round trip
19
+ * step_claim : the claim round trip
20
20
  * T6 step_started response returned
21
- * step_prepare key resolution, argument hydration, context setup
21
+ * step_prepare : key resolution, argument hydration, context setup
22
22
  * T7 immediately before stepFn.apply()
23
23
  * ```
24
24
  *
25
25
  * The producer's direct `hook_received` POST races the queue publish on the
26
- * parallel fast path, so it deliberately has no phase of its own the two
26
+ * parallel fast path, so it deliberately has no phase of its own: the two
27
27
  * overlap, and representing both as additive phases would double-count. It
28
28
  * remains visible as a contextual span (`hook.resume`).
29
29
  *
30
30
  * T0/T1 are stamped on the producer's machine and T2..T7 on the consumer's, so
31
31
  * the measurement is subject to cross-machine clock skew. Rather than clamp
32
32
  * (which would break the sum-equals-total property this decomposition exists
33
- * for), a non-monotonic boundary set drops the whole sample see
33
+ * for), a non-monotonic boundary set drops the whole sample; see
34
34
  * {@link computeResumeTtrAttributes}.
35
35
  */
36
36
  /** What caused the resumption being measured. Only hooks are measured today. */
@@ -40,12 +40,12 @@ export type ResumeStrategy = 'parallel' | 'sequential';
40
40
  /**
41
41
  * How the consuming invocation initialized its replay state:
42
42
  *
43
- * - `hook_preload` the hoisted `hook_received` write returned a usable
43
+ * - `hook_preload`: the hoisted `hook_received` write returned a usable
44
44
  * replay preload, so neither `run_started` nor the initial `events.list` ran.
45
- * - `run_started` the generic `run_started` setup ran (including the fast
45
+ * - `run_started`: the generic `run_started` setup ran (including the fast
46
46
  * path's fallback, where the hoisted write succeeded but returned no usable
47
47
  * preload).
48
- * - `event_load` neither setup ran because the run arrived already loaded,
48
+ * - `event_load`: neither setup ran because the run arrived already loaded,
49
49
  * so setup was a plain event load. No current path produces it (the one
50
50
  * preloaded-run path, the background-step fall-through, consumes the
51
51
  * tracking on its own step first); it is the honest default rather than a
@@ -62,7 +62,7 @@ export type ResumeStepExecution = 'inline' | 'dispatched';
62
62
  *
63
63
  * The runtime holds at most one of these per invocation and CONSUMES it when
64
64
  * it hands it to the execution that will attempt the next durable step, so a
65
- * later step in the same invocation or a retry of the same step never
65
+ * later step in the same invocation (or a retry of the same step) never
66
66
  * re-reports the same resumption. Within one inline batch the object is
67
67
  * shared by every step and the {@link ResumeTtrTracking.reported} latch picks
68
68
  * the single reporter.
@@ -71,19 +71,19 @@ export interface ResumeTtrTracking {
71
71
  trigger: ResumeTrigger;
72
72
  /** Absent only if an older producer omitted it from the queue message. */
73
73
  strategy?: ResumeStrategy;
74
- /** T0 entry into `resumeHook()`. */
74
+ /** T0: entry into `resumeHook()`. */
75
75
  resumeRequestedAtMs: number;
76
- /** T1 immediately before the queue publish was requested. */
76
+ /** T1: immediately before the queue publish was requested. */
77
77
  queuePublishRequestedAtMs: number;
78
78
  /**
79
- * T2 entry into the FINAL consumer's queue handler. A delivery that
79
+ * T2: entry into the FINAL consumer's queue handler. A delivery that
80
80
  * re-routes for deployment affinity never stamps this, so the re-routed hop
81
81
  * stays inside `queue_delivery` where it belongs.
82
82
  */
83
83
  consumerStartedAtMs: number;
84
- /** T3 this invocation's first replay pass. */
84
+ /** T3: this invocation's first replay pass. */
85
85
  replayStartedAtMs?: number;
86
- /** T4 replay first encountered a durable step after the resume. */
86
+ /** T4: replay first encountered a durable step after the resume. */
87
87
  nextStepEncounteredAtMs?: number;
88
88
  setupSource?: ResumeSetupSource;
89
89
  stepExecution: ResumeStepExecution;
@@ -91,7 +91,7 @@ export interface ResumeTtrTracking {
91
91
  * One-shot latch, set by the step executor once this resumption has been
92
92
  * reported. Every step of an inline batch is handed the SAME tracking
93
93
  * object, so the first one to reach user code takes the measurement and the
94
- * rest see this and skip one resumption, one sample, without pinning the
94
+ * rest see this and skip: one resumption, one sample, without pinning the
95
95
  * sample to a step that may lose its create-claim and never run.
96
96
  *
97
97
  * Deliberately not part of {@link HookResumeTiming}: it is invocation-local
@@ -101,8 +101,8 @@ export interface ResumeTtrTracking {
101
101
  }
102
102
  /**
103
103
  * Rebuild tracking from a queue message's timing object. Returns undefined for
104
- * a message that carries none (an older producer, or any non-hook delivery)
105
- * the caller then simply reports no TTR.
104
+ * a message that carries none (an older producer, or any non-hook delivery);
105
+ * the caller then reports no TTR.
106
106
  */
107
107
  export declare function resumeTrackingFromMessage(timing: HookResumeTiming | undefined, stepExecution: ResumeStepExecution): ResumeTtrTracking | undefined;
108
108
  /**
@@ -114,7 +114,7 @@ export declare function resumeTrackingFromMessage(timing: HookResumeTiming | und
114
114
  export declare function resumeTimingForMessage(tracking: ResumeTtrTracking | undefined): HookResumeTiming | undefined;
115
115
  /**
116
116
  * Compute the TTR span attributes for a step that is the first durable step
117
- * following a hook resume. Returns undefined emitting nothing at all when
117
+ * following a hook resume. Returns undefined (emitting nothing at all) when
118
118
  * any of these hold:
119
119
  *
120
120
  * - the invocation carries no resume tracking (not a hook resume, or an older
@@ -133,11 +133,11 @@ export declare function computeResumeTtrAttributes(params: {
133
133
  tracking: ResumeTtrTracking | undefined;
134
134
  /** The attempt number of the execution about to run. */
135
135
  attempt: number;
136
- /** T5 `Date.now()` immediately before the `step_started` request. */
136
+ /** T5: `Date.now()` immediately before the `step_started` request. */
137
137
  stepClaimStartedAtMs: number | undefined;
138
- /** T6 `Date.now()` once the `step_started` response returned. */
138
+ /** T6: `Date.now()` once the `step_started` response returned. */
139
139
  stepClaimCompletedAtMs: number | undefined;
140
- /** T7 `Date.now()` immediately before `stepFn.apply()`. */
140
+ /** T7: `Date.now()` immediately before `stepFn.apply()`. */
141
141
  stepCodeStartedAtMs: number;
142
142
  }): Record<string, string | number> | undefined;
143
143
  //# sourceMappingURL=resume-latency.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resume-latency.d.ts","sourceRoot":"","sources":["../../src/runtime/resume-latency.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,gFAAgF;AAChF,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC;AAEnC,+DAA+D;AAC/D,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,YAAY,CAAC;AAEvD;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,iBAAiB,GAAG,cAAc,GAAG,aAAa,GAAG,YAAY,CAAC;AAE9E,gFAAgF;AAChF,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,YAAY,CAAC;AAE1D;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,aAAa,CAAC;IACvB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,sCAAsC;IACtC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,+DAA+D;IAC/D,yBAAyB,EAAE,MAAM,CAAC;IAClC;;;;OAIG;IACH,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gDAAgD;IAChD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qEAAqE;IACrE,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,aAAa,EAAE,mBAAmB,CAAC;IACnC;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,gBAAgB,GAAG,SAAS,EACpC,aAAa,EAAE,mBAAmB,GACjC,iBAAiB,GAAG,SAAS,CAgC/B;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,iBAAiB,GAAG,SAAS,GACtC,gBAAgB,GAAG,SAAS,CAkB9B;AA6CD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE;IACjD,QAAQ,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACxC,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,mEAAmE;IACnE,sBAAsB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,6DAA6D;IAC7D,mBAAmB,EAAE,MAAM,CAAC;CAC7B,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,SAAS,CAoD9C"}
1
+ {"version":3,"file":"resume-latency.d.ts","sourceRoot":"","sources":["../../src/runtime/resume-latency.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,gFAAgF;AAChF,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC;AAEnC,+DAA+D;AAC/D,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,YAAY,CAAC;AAEvD;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,iBAAiB,GAAG,cAAc,GAAG,aAAa,GAAG,YAAY,CAAC;AAE9E,gFAAgF;AAChF,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,YAAY,CAAC;AAE1D;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,aAAa,CAAC;IACvB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,qCAAqC;IACrC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,8DAA8D;IAC9D,yBAAyB,EAAE,MAAM,CAAC;IAClC;;;;OAIG;IACH,mBAAmB,EAAE,MAAM,CAAC;IAC5B,+CAA+C;IAC/C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oEAAoE;IACpE,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,aAAa,EAAE,mBAAmB,CAAC;IACnC;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,gBAAgB,GAAG,SAAS,EACpC,aAAa,EAAE,mBAAmB,GACjC,iBAAiB,GAAG,SAAS,CAgC/B;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,iBAAiB,GAAG,SAAS,GACtC,gBAAgB,GAAG,SAAS,CAkB9B;AA6CD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE;IACjD,QAAQ,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACxC,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,kEAAkE;IAClE,sBAAsB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,4DAA4D;IAC5D,mBAAmB,EAAE,MAAM,CAAC;CAC7B,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,SAAS,CAoD9C"}
@@ -1,8 +1,8 @@
1
1
  import * as Attribute from '../telemetry/semantic-conventions.js';
2
2
  /**
3
3
  * Rebuild tracking from a queue message's timing object. Returns undefined for
4
- * a message that carries none (an older producer, or any non-hook delivery)
5
- * the caller then simply reports no TTR.
4
+ * a message that carries none (an older producer, or any non-hook delivery);
5
+ * the caller then reports no TTR.
6
6
  */
7
7
  export function resumeTrackingFromMessage(timing, stepExecution) {
8
8
  if (!timing)
@@ -94,7 +94,7 @@ function validateBoundaries(b) {
94
94
  }
95
95
  /**
96
96
  * Compute the TTR span attributes for a step that is the first durable step
97
- * following a hook resume. Returns undefined emitting nothing at all when
97
+ * following a hook resume. Returns undefined (emitting nothing at all) when
98
98
  * any of these hold:
99
99
  *
100
100
  * - the invocation carries no resume tracking (not a hook resume, or an older
@@ -150,4 +150,4 @@ export function computeResumeTtrAttributes(params) {
150
150
  ...Attribute.ResumeStepExecution(tracking.stepExecution),
151
151
  };
152
152
  }
153
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdW1lLWxhdGVuY3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnVudGltZS9yZXN1bWUtbGF0ZW5jeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssU0FBUyxNQUFNLHNDQUFzQyxDQUFDO0FBNEdsRTs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHlCQUF5QixDQUN2QyxNQUFvQyxFQUNwQyxhQUFrQztJQUVsQyxJQUFJLENBQUMsTUFBTTtRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzlCLElBQ0UsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQztRQUM1QyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLHlCQUF5QixDQUFDLEVBQ2xELENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ0QsT0FBTztRQUNMLE9BQU8sRUFBRSxNQUFNO1FBQ2YsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEtBQUssVUFBVSxJQUFJLE1BQU0sQ0FBQyxRQUFRLEtBQUssWUFBWTtZQUNwRSxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRTtZQUMvQixDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ1AsbUJBQW1CLEVBQUUsTUFBTSxDQUFDLG1CQUFtQjtRQUMvQyx5QkFBeUIsRUFBRSxNQUFNLENBQUMseUJBQXlCO1FBQzNELHVFQUF1RTtRQUN2RSx1RUFBdUU7UUFDdkUsOERBQThEO1FBQzlELG1CQUFtQixFQUFFLE1BQU0sQ0FBQyxtQkFBbUIsSUFBSSxNQUFNLENBQUMsR0FBRztRQUM3RCxHQUFHLENBQUMsTUFBTSxDQUFDLGlCQUFpQixLQUFLLFNBQVM7WUFDeEMsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLGlCQUFpQixFQUFFO1lBQ2pELENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDUCxHQUFHLENBQUMs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cG9ydCB0eXBlIHsgSG9va1Jlc3VtZVRpbWluZyB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5pbXBvcnQgKiBhcyBBdHRyaWJ1dGUgZnJvbSAnLi4vdGVsZW1ldHJ5L3NlbWFudGljLWNvbnZlbnRpb25zLmpzJztcblxuLyoqXG4gKiBIb29rLXRyaWdnZXJlZCB0aW1lLXRvLXJlc3VtZSAoVFRSKTogd2FsbC1jbG9jayBmcm9tIGVudHJ5IGludG9cbiAqIGByZXN1bWVIb29rKClgIChUMCkgdG8gdGhlIGZpcnN0IGxpbmUgb2YgdGhlIG5leHQgZHVyYWJsZSBzdGVwIChUNyksIHBsdXMgYVxuICogZGVjb21wb3NpdGlvbiBpbnRvIG5vbi1vdmVybGFwcGluZyBwaGFzZXMgdGhhdCBzdW0gZXhhY3RseSB0byBpdC5cbiAqXG4gKiBgYGB0ZXh0XG4gKiBUMCByZXN1bWVIb29rKCkgZW50ZXJlZFxuICogICAgICBwcm9kdWNlcl9wcmVwICAg4oCUIGhvb2sgbG9va3VwLCBzZXJpYWxpemF0aW9uLCBlbmNyeXB0aW9uXG4gKiBUMSBxdWV1ZSBwdWJsaXNoIHJlcXVlc3RlZFxuICogICAgICBxdWV1ZV9kZWxpdmVyeSAg4oCUIG5ldHdvcmsgKyBWUVMgZGVsaXZlcnkgKGluY2wuIGFueSBhZmZpbml0eSByZS1yb3V0ZSlcbiAqIFQyIGZpbmFsIGNvbnN1bWVyJ3MgcXVldWUgaGFuZGxlciBlbnRlcmVkXG4gKiAgICAgIHJlc3VtZV9zZXR1cCAgICDigJQgYWZmaW5pdHkgY2hlY2ssIGhvb2tfcmVjZWl2ZWQgcmUtZW5zdXJlLCByZXBsYXkgcHJlbG9hZFxuICogVDMgcmVwbGF5IGJlZ2luc1xuICogICAgICByZXBsYXkgICAgICAgICAg4oCUIFZNL3Nlc3Npb24gY3JlYXRpb24gYW5kIHdvcmtmbG93IHJlcGxheVxuICogVDQgbmV4dCBkdXJhYmxlIHN0ZXAgZW5jb3VudGVyZWRcbiAqICAgICAgc3RlcF9kaXNwYXRjaCAgIOKAlCBzdXNwZW5zaW9uIGhhbmRsaW5nLCBpbmxpbmUgYmF0Y2ggb3IgcXVldWUgZGlzcGF0Y2hcbiAqIFQ1IHN0ZXBfc3RhcnRlZCByZXF1ZXN0IGJlZ2luc1xuICogICAgICBzdGVwX2NsYWltICAgICAg4oCUIHRoZSBjbGFpbSByb3VuZCB0cmlwXG4gKiBUNiBzdGVwX3N0YXJ0ZWQgcmVzcG9uc2UgcmV0dXJuZWRcbiAqICAgICAgc3RlcF9wcmVwYXJlICAgIOKAlCBrZXkgcmVzb2x1dGlvbiwgYXJndW1lbnQgaHlkcmF0aW9uLCBjb250ZXh0IHNldHVwXG4gKiBUNyBpbW1lZGlhdGVseSBiZWZvcmUgc3RlcEZuLmFwcGx5KClcbiAqIGBgYFxuICpcbiAqIFRoZSBwcm9kdWNlcidzIGRpcmVjdCBgaG9va19yZWNlaXZlZGAgUE9TVCByYWNlcyB0aGUgcXVldWUgcHVibGlzaCBvbiB0aGVcbiAqIHBhcmFsbGVsIGZhc3QgcGF0aCwgc28gaXQgZGVsaWJlcmF0ZWx5IGhhcyBubyBwaGFzZSBvZiBpdHMgb3duIOKAlCB0aGUgdHdvXG4gKiBvdmVybGFwLCBhbmQgcmVwcmVzZW50aW5nIGJvdGggYXMgYWRkaXRpdmUgcGhhc2VzIHdvdWxkIGRvdWJsZS1jb3VudC4gSXRcbiAqIHJlbWFpbnMgdmlzaWJsZSBhcyBhIGNvbnRleHR1YWwgc3BhbiAoYGhvb2sucmVzdW1lYCkuXG4gKlxuICogVDAvVDEgYXJlIHN0YW1wZWQgb24gdGhlIHByb2R1Y2VyJ3MgbWFjaGluZSBhbmQgVDIuLlQ3IG9uIHRoZSBjb25zdW1lcidzLCBzb1xuICogdGhlIG1lYXN1cmVtZW50IGlzIHN1YmplY3QgdG8gY3Jvc3MtbWFjaGluZSBjbG9jayBza2V3LiBSYXRoZXIgdGhhbiBjbGFtcFxuICogKHdoaWNoIHdvdWxkIGJyZWFrIHRoZSBzdW0tZXF1YWxzLXRvdGFsIHByb3BlcnR5IHRoaXMgZGVjb21wb3NpdGlvbiBleGlzdHNcbiAqIGZvciksIGEgbm9uLW1vbm90b25pYyBib3VuZGFyeSBzZXQgZHJvcHMgdGhlIHdob2xlIHNhbXBsZSDigJQgc2VlXG4gKiB7QGxpbmsgY29tcHV0ZVJlc3VtZVR0ckF0dHJpYnV0ZXN9LlxuICovXG5cbi8qKiBXaGF0IGNhdXNlZCB0aGUgcmVzdW1wdGlvbiBiZWluZyBtZWFzdXJlZC4gT25seSBob29rcyBhcmUgbWVhc3VyZWQgdG9kYXkuICovXG5leHBvcnQgdHlwZSBSZXN1bWVUcmlnZ2VyID0gJ2hvb2snO1xuXG4vKiogV2hpY2ggYHJlc3VtZUhvb2soKWAgZGlzcGF0Y2ggcGF0aCBwcm9kdWNlZCB0aGlzIHJlc3VtZS4gKi9cbmV4cG9ydCB0eXBlIFJlc3VtZVN0cmF0ZWd5ID0gJ3BhcmFsbGVsJyB8ICdzZXF1ZW50aWFsJztcblxuLyoqXG4gKiBIb3cgdGhlIGNvbnN1bWluZyBpbnZvY2F0aW9uIGluaXRpYWxpemVkIGl0cyByZXBsYXkgc3RhdGU6XG4gKlxuICogLSBgaG9va19wcmVsb2FkYCDigJQgdGhlIGhvaXN0ZWQgYGhvb2tfcmVjZWl2ZWRgIHdyaXRlIHJldHVybmVkIGEgdXNhYmxlXG4gKiAgIHJlcGxheSBwcmVsb2FkLCBzbyBuZWl0aGVyIGBydW5fc3RhcnRlZGAgbm9yIHRoZSBpbml0aWFsIGBldmVudHMubGlzdGAgcmFuLlxuICogLSBgcnVuX3N0YXJ0ZWRgIOKAlCB0aGUgZ2VuZXJpYyBgcnVuX3N0YXJ0ZWRgIHNldHVwIHJhbiAoaW5jbHVkaW5nIHRoZSBmYXN0XG4gKiAgIHBhdGgncyBmYWxsYmFjaywgd2hlcmUgdGhlIGhvaXN0ZWQgd3JpdGUgc3VjY2VlZGVkIGJ1dCByZXR1cm5lZCBubyB1c2FibGVcbiAqICAgcHJlbG9hZCkuXG4gKiAtIGBldmVudF9sb2FkYCDigJQgbmVpdGhlciBzZXR1cCByYW4gYmVjYXVzZSB0aGUgcnVuIGFycml2ZWQgYWxyZWFkeSBsb2FkZWQsXG4gKiAgIHNvIHNldHVwIHdhcyBhIHBsYWluIGV2ZW50IGxvYWQuIE5vIGN1cnJlbnQgcGF0aCBwcm9kdWNlcyBpdCAodGhlIG9uZVxuICogICBwcmVsb2FkZWQtcnVuIHBhdGgsIHRoZSBiYWNrZ3JvdW5kLXN0ZXAgZmFsbC10aHJvdWdoLCBjb25zdW1lcyB0aGVcbiAqICAgdHJhY2tpbmcgb24gaXRzIG93biBzdGVwIGZpcnN0KTsgaXQgaXMgdGhlIGhvbmVzdCBkZWZhdWx0IHJhdGhlciB0aGFuIGFcbiAqICAgbGl2ZSB2YWx1ZSwgYW5kIGtlZXBzIHRoZSBkaW1lbnNpb24gdG90YWwgaWYgc3VjaCBhIHBhdGggaXMgYWRkZWQuXG4gKi9cbmV4cG9ydCB0eXBlIFJlc3VtZVNldHVwU291cmNlID0gJ2hvb2tfcHJlbG9hZCcgfCAncnVuX3N0YXJ0ZWQnIHwgJ2V2ZW50X2xvYWQnO1xuXG4vKiogV2hldGhlciB0aGUgbWVhc3VyZWQgc3RlcCByYW4gaW4gdGhlIHJlc3VtaW5nIGludm9jYXRpb24gb3IgYSBxdWV1ZWQgb25lLiAqL1xuZXhwb3J0IHR5cGUgUmVzdW1lU3RlcEV4ZWN1dGlvbiA9ICdpbmxpbmUnIHwgJ2Rpc3BhdGNoZWQnO1xuXG4vKipcbiAqIFRoZSByZXN1bWUgYm91bmRhcmllcyBvYnNlcnZlZCBzbyBmYXIsIHRocmVhZGVkIGZyb20gdGhlIHF1ZXVlIGhhbmRsZXIgaW50b1xuICogYGV4ZWN1dGVTdGVwYC4gUHJvZHVjZXIgZmllbGRzIGFycml2ZSBvbiB0aGUgcXVldWUgbWVzc2FnZVxuICogKHtAbGluayBIb29rUmVzdW1lVGltaW5nfSk7IGNvbnN1bWVyIGZpZWxkcyBhcmUgc3RhbXBlZCBieSB0aGUgaW52b2NhdGlvblxuICogdGhhdCByZXBsYXlzIHRoZSByZXN1bWUuXG4gKlxuICogVGhlIHJ1bnRpbWUgaG9sZHMgYXQgbW9zdCBvbmUgb2YgdGhlc2UgcGVyIGludm9jYXRpb24gYW5kIENPTlNVTUVTIGl0IHdoZW5cbiAqIGl0IGhhbmRzIGl0IHRvIHRoZSBleGVjdXRpb24gdGhhdCB3aWxsIGF0dGVtcHQgdGhlIG5leHQgZHVyYWJsZSBzdGVwLCBzbyBhXG4gKiBsYXRlciBzdGVwIGluIHRoZSBzYW1lIGludm9jYXRpb24g4oCUIG9yIGEgcmV0cnkgb2YgdGhlIHNhbWUgc3RlcCDigJQgbmV2ZXJcbiAqIHJlLXJlcG9ydHMgdGhlIHNhbWUgcmVzdW1wdGlvbi4gV2l0aGluIG9uZSBpbmxpbmUgYmF0Y2ggdGhlIG9iamVjdCBpc1xuICogc2hhcmVkIGJ5IGV2ZXJ5IHN0ZXAgYW5kIHRoZSB7QGxpbmsgUmVzdW1lVHRyVHJhY2tpbmcucmVwb3J0ZWR9IGxhdGNoIHBpY2tzXG4gKiB0aGUgc2luZ2xlIHJlcG9ydGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc3VtZVR0clRyYWNraW5nIHtcbiAgdHJpZ2dlcjogUmVzdW1lVHJpZ2dlcjtcbiAgLyoqIEFic2VudCBvbmx5IGlmIGFuIG9sZGVyIHByb2R1Y2VyIG9taXR0ZWQgaXQgZnJvbSB0aGUgcXVldWUgbWVzc2FnZS4gKi9cbiAgc3RyYXRlZ3k/OiBSZXN1bWVTdHJhdGVneTtcbiAgLyoqIFQwIOKAlCBlbnRyeSBpbnRvIGByZXN1bWVIb29rKClgLiAqL1xuICByZXN1bWVSZXF1ZXN0ZWRBdE1zOiBudW1iZXI7XG4gIC8qKiBUMSDigJQgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSBxdWV1ZSBwdWJsaXNoIHdhcyByZXF1ZXN0ZWQuICovXG4gIHF1ZXVlUHVibGlzaFJlcXVlc3RlZEF0TXM6IG51bWJlcjtcbiAgLyoqXG4gICAqIFQyIOKAlCBlbnRyeSBpbnRvIHRoZSBGSU5BTCBjb25zdW1lcidzIHF1ZXVlIGhhbmRsZXIuIEEgZGVsaXZlcnkgdGhhdFxuICAgKiByZS1yb3V0ZXMgZm9yIGRlcGxveW1lbnQgYWZmaW5pdHkgbmV2ZXIgc3RhbXBzIHRoaXMsIHNvIHRoZSByZS1yb3V0ZWQgaG9wXG4gICAqIHN0YXlzIGluc2lkZSBgcXVldWVfZGVsaXZlcnlgIHdoZXJlIGl0IGJlbG9uZ3MuXG4gICAqL1xuICBjb25zdW1lclN0YXJ0ZWRBdE1zOiBudW1iZXI7XG4gIC8qKiBUMyDigJQgdGhpcyBpbnZvY2F0aW9uJ3MgZmlyc3QgcmVwbGF5IHBhc3MuICovXG4gIHJlcGxheVN0YXJ0ZWRBdE1zPzogbnVtYmVyO1xuICAvKiogVDQg4oCUIHJlcGxheSBmaXJzdCBlbmNvdW50ZXJlZCBhIGR1cmFibGUgc3RlcCBhZnRlciB0aGUgcmVzdW1lLiAqL1xuICBuZXh0U3RlcEVuY291bnRlcmVkQXRNcz86IG51bWJlcjtcbiAgc2V0dXBTb3VyY2U/OiBSZXN1bWVTZXR1cFNvdXJjZTtcbiAgc3RlcEV4ZWN1dGlvbjogUmVzdW1lU3RlcEV4ZWN1dGlvbjtcbiAgLyoqXG4gICAqIE9uZS1zaG90IGxhdGNoLCBzZXQgYnkgdGhlIHN0ZXAgZXhlY3V0b3Igb25jZSB0aGlzIHJlc3VtcHRpb24gaGFzIGJlZW5cbiAgICogcmVwb3J0ZWQuIEV2ZXJ5IHN0ZXAgb2YgYW4gaW5saW5lIGJhdGNoIGlzIGhhbmRlZCB0aGUgU0FNRSB0cmFja2luZ1xuICAgKiBvYmplY3QsIHNvIHRoZSBmaXJzdCBvbmUgdG8gcmVhY2ggdXNlciBjb2RlIHRha2VzIHRoZSBtZWFzdXJlbWVudCBhbmQgdGhlXG4gICAqIHJlc3Qgc2VlIHRoaXMgYW5kIHNraXAg4oCUIG9uZSByZXN1bXB0aW9uLCBvbmUgc2FtcGxlLCB3aXRob3V0IHBpbm5pbmcgdGhlXG4gICAqIHNhbXBsZSB0byBhIHN0ZXAgdGhhdCBtYXkgbG9zZSBpdHMgY3JlYXRlLWNsYWltIGFuZCBuZXZlciBydW4uXG4gICAqXG4gICAqIERlbGliZXJhdGVseSBub3QgcGFydCBvZiB7QGxpbmsgSG9va1Jlc3VtZVRpbWluZ306IGl0IGlzIGludm9jYXRpb24tbG9jYWxcbiAgICogc3RhdGUsIGFuZCBhIHF1ZXVlIG1lc3NhZ2UgY2FycmllcyB0aGUgYm91bmRhcmllcywgbm90IHRoZSBjbGFpbS5cbiAgICovXG4gIHJlcG9ydGVkPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSZWJ1aWxkIHRyYWNraW5nIGZyb20gYSBxdWV1ZSBtZXNzYWdlJ3MgdGltaW5nIG9iamVjdC4gUmV0dXJucyB1bmRlZmluZWQgZm9yXG4gKiBhIG1lc3NhZ2UgdGhhdCBjYXJyaWVzIG5vbmUgKGFuIG9sZGVyIHByb2R1Y2VyLCBvciBhbnkgbm9uLWhvb2sgZGVsaXZlcnkpIOKAlFxuICogdGhlIGNhbGxlciB0aGVuIHNpbXBseSByZXBvcnRzIG5vIFRUUi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc3VtZVRyYWNraW5nRnJvbU1lc3NhZ2UoXG4gIHRpbWluZzogSG9va1Jlc3VtZVRpbWluZyB8IHVuZGVmaW5lZCxcbiAgc3RlcEV4ZWN1dGlvbjogUmVzdW1lU3RlcEV4ZWN1dGlvblxuKTogUmVzdW1lVHRyVHJhY2tpbmcgfCB1bmRlZmluZWQge1xuICBpZiAoIXRpbWluZykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgaWYgKFxuICAgICFOdW1iZXIuaXNGaW5pdGUodGltaW5nLnJlc3VtZVJlcXVlc3RlZEF0TXMpIHx8XG4gICAgIU51bWJlci5pc0Zpbml0ZSh0aW1pbmcucXVldWVQdWJsaXNoUmVxdWVzdGVkQXRNcylcbiAgKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHRyaWdnZXI6ICdob29rJyxcbiAgICAuLi4odGltaW5nLnN0cmF0ZWd5ID09PSAncGFyYWxsZWwnIHx8IHRpbWluZy5zdHJhdGVneSA9PT0gJ3NlcXVlbnRpYWwnXG4gICAgICA/IHsgc3RyYXRlZ3k6IHRpbWluZy5zdHJhdGVneSB9XG4gICAgICA6IHt9KSxcbiAgICByZXN1bWVSZXF1ZXN0ZWRBdE1zOiB0aW1pbmcucmVzdW1lUmVxdWVzdGVkQXRNcyxcbiAgICBxdWV1ZVB1Ymxpc2hSZXF1ZXN0ZWRBdE1zOiB0aW1pbmcucXVldWVQdWJsaXNoUmVxdWVzdGVkQXRNcyxcbiAgICAvLyBBIGRpc3BhdGNoZWQgc3RlcCByZWFkcyB0aGUgcmVzdW1pbmcgaW52b2NhdGlvbidzIGJvdW5kYXJpZXMgb2ZmIHRoZVxuICAgIC8vIG1lc3NhZ2U7IGFuIGlubGluZSBvbmUgaGFzIHRoZW0gc3RhbXBlZCBsb2NhbGx5IGJ5IHRoZSBjYWxsZXIsIHdoaWNoXG4gICAgLy8gb3ZlcndyaXRlcyB0aGlzIHBsYWNlaG9sZGVyIGltbWVkaWF0ZWx5IGFmdGVyIGNvbnN0cnVjdGlvbi5cbiAgICBjb25zdW1lclN0YXJ0ZWRBdE1zOiB0aW1pbmcuY29uc3VtZXJTdGFydGVkQXRNcyA/PyBOdW1iZXIuTmFOLFxuICAgIC4uLih0aW1pbmcucmVwbGF5U3RhcnRlZEF0TXMgIT09IHVuZGVmaW5lZFxuICAgICAgPyB7IHJlcGxheVN0YXJ0ZWRBdE1zOiB0aW1pbmcucmVwbGF5U3RhcnRlZEF0TXMgfVxuICAgICAgOiB7fSksXG4gICAgLi4uKHRpbWluZy5uZXh0U3RlcEVuY291bnRlcmVkQXRNcyAhPT0gdW5kZWZpbmVkXG4gICAgICA/IHsgbmV4dFN0ZXBFbmNvdW50ZXJlZEF0TXM6IHRpbWluZy5uZXh0U3RlcEVuY291bnRlcmVkQXRNcyB9XG4gICAgICA6IHt9KSxcbiAgICAuLi4odGltaW5nLnNldHVwU291cmNlID09PSAnaG9va19wcmVsb2FkJyB8fFxuICAgIHRpbWluZy5zZXR1cFNvdXJjZSA9PT0gJ3J1bl9zdGFydGVkJyB8fFxuICAgIHRpbWluZy5zZXR1cFNvdXJjZSA9PT0gJ2V2ZW50X2xvYWQnXG4gICAgICA/IHsgc2V0dXBTb3VyY2U6IHRpbWluZy5zZXR1cFNvdXJjZSB9XG4gICAgICA6IHt9KSxcbiAgICBzdGVwRXhlY3V0aW9uLFxuICB9O1xufVxuXG4vKipcbiAqIFNlcmlhbGl6ZSB0cmFja2luZyBiYWNrIG9udG8gYSBxdWV1ZSBtZXNzYWdlLCBmb3IgdGhlIGNhc2Ugd2hlcmUgdGhlXG4gKiByZXN1bWluZyBpbnZvY2F0aW9uIGRpc3BhdGNoZXMgdGhlIG5leHQgZHVyYWJsZSBzdGVwIHRvIGFub3RoZXIgaW52b2NhdGlvblxuICogaW5zdGVhZCBvZiBydW5uaW5nIGl0IGlubGluZS4gUmV0dXJucyB1bmRlZmluZWQgd2hlbiB0aGUgdHJhY2tpbmcgaXMgbm90XG4gKiBjb21wbGV0ZSBlbm91Z2ggdG8gYmUgd29ydGggZm9yd2FyZGluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc3VtZVRpbWluZ0Zvck1lc3NhZ2UoXG4gIHRyYWNraW5nOiBSZXN1bWVUdHJUcmFja2luZyB8IHVuZGVmaW5lZFxuKTogSG9va1Jlc3VtZVRpbWluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICghdHJhY2tpbmcpIHJldHVybiB1bmRlZmluZWQ7XG4gIGlmICghTnVtYmVyLmlzRmluaXRlKHRyYWNraW5nLmNvbnN1bWVyU3RhcnRlZEF0TXMpKSByZXR1cm4gdW5kZWZpbmVkO1xuICByZXR1cm4ge1xuICAgIHJlc3VtZVJlcXVlc3RlZEF0TXM6IHRyYWNraW5nLnJlc3VtZVJlcXVlc3RlZEF0TXMsXG4gICAgcXVldWVQdWJsaXNoUmVxdWVzdGVkQXRNczogdHJhY2tpbmcucXVldWVQdWJsaXNoUmVxdWVzdGVkQXRNcyxcbiAgICAuLi4odHJhY2tpbmcuc3RyYXRlZ3kgIT09IHVuZGVmaW5lZCA/IHsgc3RyYXRlZ3k6IHRyYWNraW5nLnN0cmF0ZWd5IH0gOiB7fSksXG4gICAgY29uc3VtZXJTdGFydGVkQXRNczogdHJhY2tpbmcuY29uc3VtZXJTdGFydGVkQXRNcyxcbiAgICAuLi4odHJhY2tpbmcucmVwbGF5U3RhcnRlZEF0TXMgIT09IHVuZGVmaW5lZFxuICAgICAgPyB7IHJlcGxheVN0YXJ0ZWRBdE1zOiB0cmFja2luZy5yZXBsYXlTdGFydGVkQXRNcyB9XG4gICAgICA6IHt9KSxcbiAgICAuLi4odHJhY2tpbmcubmV4dFN0ZXBFbmNvdW50ZXJlZEF0TXMgIT09IHVuZGVmaW5lZFxuICAgICAgPyB7IG5leHRTdGVwRW5jb3VudGVyZWRBdE1zOiB0cmFja2luZy5uZXh0U3RlcEVuY291bnRlcmVkQXRNcyB9XG4gICAgICA6IHt9KSxcbiAgICAuLi4odHJhY2tpbmcuc2V0dXBTb3VyY2UgIT09IHVuZGVmaW5lZFxuICAgICAgPyB7IHNldHVwU291cmNlOiB0cmFja2luZy5zZXR1cFNvdXJjZSB9XG4gICAgICA6IHt9KSxcbiAgfTtcbn1cblxuLyoqIEV2ZXJ5IGJvdW5kYXJ5IHRoZSBlbWlzc2lvbiBnYXRlIHJlcXVpcmVzLCBwbHVzIHRoZSBvcHRpb25hbCBjbGFpbSBlbmQuICovXG5pbnRlcmZhY2UgUmVzdW1lQm91bmRhcmllcyB7XG4gIC8qKiBUMCAqLyByZXN1bWVSZXF1ZXN0ZWRBdE1zOiBudW1iZXI7XG4gIC8qKiBUMSAqLyBxdWV1ZVB1Ymxpc2hSZXF1ZXN0ZWRBdE1zOiBudW1iZXI7XG4gIC8qKiBUMiAqLyBjb25zdW1lclN0YXJ0ZWRBdE1zOiBudW1iZXI7XG4gIC8qKiBUMyAqLyByZXBsYXlTdGFydGVkQXRNczogbnVtYmVyO1xuICAvKiogVDQgKi8gbmV4dFN0ZXBFbmNvdW50ZXJlZEF0TXM6IG51bWJlcjtcbiAgLyoqIFQ1ICovIHN0ZXBDbGFpbVN0YXJ0ZWRBdE1zOiBudW1iZXI7XG4gIC8qKiBUNiDigJQgYWJzZW50IG9uIHRoZSBvcHRpbWlzdGljLXN0YXJ0IHBhdGg7IHNlZSBiZWxvdy4gKi9cbiAgc3RlcENsYWltQ29tcGxldGVkQXRNczogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAvKiogVDcgKi8gc3RlcENvZGVTdGFydGVkQXRNczogbnVtYmVyO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIHRoYXQgZXZlcnkgcmVxdWlyZWQgYm91bmRhcnkgaXMgYSBmaW5pdGUgZXBvY2gtbXMgdmFsdWUgYW5kIHRoYXRcbiAqIHRoZSB3aG9sZSBzZXF1ZW5jZSBpcyBub24tZGVjcmVhc2luZy4gUmV0dXJucyB1bmRlZmluZWQgb3RoZXJ3aXNlLCB3aGljaFxuICogc3VwcHJlc3NlcyB0aGUgbWV0cmljIGVudGlyZWx5IHJhdGhlciB0aGFuIHJlcG9ydGluZyBhIHBoYXNlIHRoYXQgbmV2ZXJcbiAqIGhhcHBlbmVkIG9yIGEgbmVnYXRpdmUgZHVyYXRpb24uXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlQm91bmRhcmllcyhcbiAgYjogUmVzdW1lQm91bmRhcmllc1xuKTogcmVhZG9ubHkgbnVtYmVyW10gfCB1bmRlZmluZWQge1xuICBjb25zdCBvcmRlcmVkID0gW1xuICAgIGIucmVzdW1lUmVxdWVzdGVkQXRNcyxcbiAgICBiLnF1ZXVlUHVibGlzaFJlcXVlc3RlZEF0TXMsXG4gICAgYi5jb25zdW1lclN0YXJ0ZWRBdE1zLFxuICAgIGIucmVwbGF5U3RhcnRlZEF0TXMsXG4gICAgYi5uZXh0U3RlcEVuY291bnRlcmVkQXRNcyxcbiAgICBiLnN0ZXBDbGFpbVN0YXJ0ZWRBdE1zLFxuICAgIC4uLihiLnN0ZXBDbGFpbUNvbXBsZXRlZEF0TXMgIT09IHVuZGVmaW5lZFxuICAgICAgPyBbYi5zdGVwQ2xhaW1Db21wbGV0ZWRBdE1zXVxuICAgICAgOiBbXSksXG4gICAgYi5zdGVwQ29kZVN0YXJ0ZWRBdE1zLFxuICBdO1xuICBmb3IgKGNvbnN0IHZhbHVlIG9mIG9yZGVyZWQpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnbnVtYmVyJyB8fCAhTnVtYmVyLmlzRmluaXRlKHZhbHVlKSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBmb3IgKGxldCBpID0gMTsgaSA8IG9yZGVyZWQubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAob3JkZXJlZFtpXSA8IG9yZGVyZWRbaSAtIDFdKSByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIHJldHVybiBvcmRlcmVkO1xufVxuXG4vKipcbiAqIENvbXB1dGUgdGhlIFRUUiBzcGFuIGF0dHJpYnV0ZXMgZm9yIGEgc3RlcCB0aGF0IGlzIHRoZSBmaXJzdCBkdXJhYmxlIHN0ZXBcbiAqIGZvbGxvd2luZyBhIGhvb2sgcmVzdW1lLiBSZXR1cm5zIHVuZGVmaW5lZCDigJQgZW1pdHRpbmcgbm90aGluZyBhdCBhbGwg4oCUIHdoZW5cbiAqIGFueSBvZiB0aGVzZSBob2xkOlxuICpcbiAqIC0gdGhlIGludm9jYXRpb24gY2FycmllcyBubyByZXN1bWUgdHJhY2tpbmcgKG5vdCBhIGhvb2sgcmVzdW1lLCBvciBhbiBvbGRlclxuICogICBxdWV1ZSBtZXNzYWdlIHdpdGggbm8gdGltaW5nKTtcbiAqIC0gdGhpcyBpcyBhIHJldHJ5IChgYXR0ZW1wdCAhPT0gMWApLCB3aGljaCBtZWFzdXJlcyBhIHJlLWV4ZWN1dGlvbiByYXRoZXJcbiAqICAgdGhhbiB0aGUgcmVzdW1wdGlvbjtcbiAqIC0gYSByZXF1aXJlZCBib3VuZGFyeSBpcyBtaXNzaW5nLCBub24tZmluaXRlLCBvciBvdXQgb2Ygb3JkZXIuXG4gKlxuICogYHN0ZXBfY2xhaW1fbXNgIGlzIHRoZSBvbmUgcGhhc2UgdGhhdCBtYXkgYmUgaW5kaXZpZHVhbGx5IG9taXR0ZWQuIFVuZGVyXG4gKiBvcHRpbWlzdGljIGlubGluZSBzdGFydCB0aGUgYHN0ZXBfc3RhcnRlZGAgY2xhaW0gaXMgZGVsaWJlcmF0ZWx5IE5PVCBhd2FpdGVkXG4gKiBiZWZvcmUgdGhlIGJvZHkgcnVucywgc28gaXRzIGNvbXBsZXRpb24gaW5zdGFudCBkb2VzIG5vdCBleGlzdCB5ZXQgYXQgVDc7XG4gKiByYXRoZXIgdGhhbiBpbnZlbnQgb25lLCB0aGUgY2xhaW0gcGhhc2UgaXMgZHJvcHBlZCBhbmQgYHN0ZXBfcHJlcGFyZV9tc2BcbiAqIHNwYW5zIFQ14oaSVDcuIFRoZSBzdW0tZXF1YWxzLXRvdGFsIHByb3BlcnR5IGhvbGRzIGVpdGhlciB3YXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlUmVzdW1lVHRyQXR0cmlidXRlcyhwYXJhbXM6IHtcbiAgdHJhY2tpbmc6IFJlc3VtZVR0clRyYWNraW5nIHwgdW5kZWZpbmVkO1xuICAvKiogVGhlIGF0dGVtcHQgbnVtYmVyIG9mIHRoZSBleGVjdXRpb24gYWJvdXQgdG8gcnVuLiAqL1xuICBhdHRlbXB0OiBudW1iZXI7XG4gIC8qKiBUNSDigJQgYERhdGUubm93KClgIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgYHN0ZXBfc3RhcnRlZGAgcmVxdWVzdC4gKi9cbiAgc3RlcENsYWltU3RhcnRlZEF0TXM6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgLyoqIFQ2IOKAlCBgRGF0ZS5ub3coKWAgb25jZSB0aGUgYHN0ZXBfc3RhcnRlZGAgcmVzcG9uc2UgcmV0dXJuZWQuICovXG4gIHN0ZXBDbGFpbUNvbXBsZXRlZEF0TXM6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgLyoqIFQ3IOKAlCBgRGF0ZS5ub3coKWAgaW1tZWRpYXRlbHkgYmVmb3JlIGBzdGVwRm4uYXBwbHkoKWAuICovXG4gIHN0ZXBDb2RlU3RhcnRlZEF0TXM6IG51bWJlcjtcbn0pOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXI+IHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgeyB0cmFja2luZyB9ID0gcGFyYW1zO1xuICBpZiAoIXRyYWNraW5nIHx8IHBhcmFtcy5hdHRlbXB0ICE9PSAxKSByZXR1cm4gdW5kZWZpbmVkO1xuICBpZiAoXG4gICAgdHJhY2tpbmcucmVwbGF5U3RhcnRlZEF0TXMgPT09IHVuZGVmaW5lZCB8fFxuICAgIHRyYWNraW5nLm5leHRTdGVwRW5jb3VudGVyZWRBdE1zID09PSB1bmRlZmluZWQgfHxcbiAgICBwYXJhbXMuc3RlcENsYWltU3RhcnRlZEF0TXMgPT09IHVuZGVmaW5lZFxuICApIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3QgYm91bmRhcmllczogUmVzdW1lQm91bmRhcmllcyA9IHtcbiAgICByZXN1bWVSZXF1ZXN0ZWRBdE1zOiB0cmFja2luZy5yZXN1bWVSZXF1ZXN0ZWRBdE1zLFxuICAgIHF1ZXVlUHVibGlzaFJlcXVlc3RlZEF0TXM6IHRyYWNraW5nLnF1ZXVlUHVibGlzaFJlcXVlc3RlZEF0TXMsXG4gICAgY29uc3VtZXJTdGFydGVkQXRNczogdHJhY2tpbmcuY29uc3VtZXJTdGFydGVkQXRNcyxcbiAgICByZXBsYXlTdGFydGVkQXRNczogdHJhY2tpbmcucmVwbGF5U3RhcnRlZEF0TXMsXG4gICAgbmV4dFN0ZXBFbmNvdW50ZXJlZEF0TXM6IHRyYWNraW5nLm5leHRTdGVwRW5jb3VudGVyZWRBdE1zLFxuICAgIHN0ZXBDbGFpbVN0YXJ0ZWRBdE1zOiBwYXJhbXMuc3RlcENsYWltU3RhcnRlZEF0TXMsXG4gICAgc3RlcENsYWltQ29tcGxldGVkQXRNczogcGFyYW1zLnN0ZXBDbGFpbUNvbXBsZXRlZEF0TXMsXG4gICAgc3RlcENvZGVTdGFydGVkQXRNczogcGFyYW1zLnN0ZXBDb2RlU3RhcnRlZEF0TXMsXG4gIH07XG4gIGlmICghdmFsaWRhdGVCb3VuZGFyaWVzKGJvdW5kYXJpZXMpKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIGNvbnN0IHtcbiAgICByZXN1bWVSZXF1ZXN0ZWRBdE1zOiB0MCxcbiAgICBxdWV1ZVB1Ymxpc2hSZXF1ZXN0ZWRBdE1zOiB0MSxcbiAgICBjb25zdW1lclN0YXJ0ZWRBdE1zOiB0MixcbiAgICByZXBsYXlTdGFydGVkQXRNczogdDMsXG4gICAgbmV4dFN0ZXBFbmNvdW50ZXJlZEF0TXM6IHQ0LFxuICAgIHN0ZXBDbGFpbVN0YXJ0ZWRBdE1zOiB0NSxcbiAgICBzdGVwQ2xhaW1Db21wbGV0ZWRBdE1zOiB0NixcbiAgICBzdGVwQ29kZVN0YXJ0ZWRBdE1zOiB0NyxcbiAgfSA9IGJvdW5kYXJpZXM7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5BdHRyaWJ1dGUuUmVzdW1lVG90YWxNcyh0NyAtIHQwKSxcbiAgICAuLi5BdHRyaWJ1dGUuUmVzdW1lUHJvZHVjZXJQcmVwTXModDEgLSB0MCksXG4gICAgLi4uQXR0cmlidXRlLlJlc3VtZVF1ZXVlRGVsaXZlcnlNcyh0MiAtIHQxKSxcbiAgICAuLi5BdHRyaWJ1dGUuUmVzdW1lU2V0dXBNcyh0MyAtIHQyKSxcbiAgICAuLi5BdHRyaWJ1dGUuUmVzdW1lUmVwbGF5TXModDQgLSB0MyksXG4gICAgLi4uQXR0cmlidXRlLlJlc3VtZVN0ZXBEaXNwYXRjaE1zKHQ1IC0gdDQpLFxuICAgIC4uLih0NiAhPT0gdW5kZWZpbmVkID8gQXR0cmlidXRlLlJlc3VtZVN0ZXBDbGFpbU1zKHQ2IC0gdDUpIDoge30pLFxuICAgIC4uLkF0dHJpYnV0ZS5SZXN1bWVTdGVwUHJlcGFyZU1zKHQ3IC0gKHQ2ID8/IHQ1KSksXG4gICAgLi4uQXR0cmlidXRlLlJlc3VtZVRyaWdnZXIodHJhY2tpbmcudHJpZ2dlciksXG4gICAgLi4uKHRyYWNraW5nLnN0cmF0ZWd5ICE9PSB1bmRlZmluZWRcbiAgICAgID8gQXR0cmlidXRlLlJlc3VtZVN0cmF0ZWd5KHRyYWNraW5nLnN0cmF0ZWd5KVxuICAgICAgOiB7fSksXG4gICAgLi4uKHRyYWNraW5nLnNldHVwU291cmNlICE9PSB1bmRlZmluZWRcbiAgICAgID8gQXR0cmlidXRlLlJlc3VtZVNldHVwU291cmNlKHRyYWNraW5nLnNldHVwU291cmNlKVxuICAgICAgOiB7fSksXG4gICAgLi4uQXR0cmlidXRlLlJlc3VtZVN0ZXBFeGVjdXRpb24odHJhY2tpbmcuc3RlcEV4ZWN1dGlvbiksXG4gIH07XG59XG4iXX0=
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdW1lLWxhdGVuY3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnVudGltZS9yZXN1bWUtbGF0ZW5jeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssU0FBUyxNQUFNLHNDQUFzQyxDQUFDO0FBNEdsRTs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHlCQUF5QixDQUN2QyxNQUFvQyxFQUNwQyxhQUFrQztJQUVsQyxJQUFJLENBQUMsTUFBTTtRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzlCLElBQ0UsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQztRQUM1QyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLHlCQUF5QixDQUFDLEVBQ2xELENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ0QsT0FBTztRQUNMLE9BQU8sRUFBRSxNQUFNO1FBQ2YsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEtBQUssVUFBVSxJQUFJLE1BQU0sQ0FBQyxRQUFRLEtBQUssWUFBWTtZQUNwRSxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRTtZQUMvQixDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ1AsbUJBQW1CLEVBQUUsTUFBTSxDQUFDLG1CQUFtQjtRQUMvQyx5QkFBeUIsRUFBRSxNQUFNLENBQUMseUJBQXlCO1FBQzNELHVFQUF1RTtRQUN2RSx1RUFBdUU7UUFDdkUsOERBQThEO1FBQzlELG1CQUFtQixFQUFFLE1BQU0sQ0FBQyxtQkFBbUIsSUFBSSxNQUFNLENBQUMsR0FBRztRQUM3RCxHQUFHLENBQUMsTUFBTSxDQUFDLGlCQUFpQixLQUFLLFNBQVM7WUFDeEMsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLGlCQUFpQixFQUFFO1lBQ2pELENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDUCxHQUFHLENBQUMs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cG9ydCB0eXBlIHsgSG9va1Jlc3VtZVRpbWluZyB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5pbXBvcnQgKiBhcyBBdHRyaWJ1dGUgZnJvbSAnLi4vdGVsZW1ldHJ5L3NlbWFudGljLWNvbnZlbnRpb25zLmpzJztcblxuLyoqXG4gKiBIb29rLXRyaWdnZXJlZCB0aW1lLXRvLXJlc3VtZSAoVFRSKTogd2FsbC1jbG9jayBmcm9tIGVudHJ5IGludG9cbiAqIGByZXN1bWVIb29rKClgIChUMCkgdG8gdGhlIGZpcnN0IGxpbmUgb2YgdGhlIG5leHQgZHVyYWJsZSBzdGVwIChUNyksIHBsdXMgYVxuICogZGVjb21wb3NpdGlvbiBpbnRvIG5vbi1vdmVybGFwcGluZyBwaGFzZXMgdGhhdCBzdW0gZXhhY3RseSB0byBpdC5cbiAqXG4gKiBgYGB0ZXh0XG4gKiBUMCByZXN1bWVIb29rKCkgZW50ZXJlZFxuICogICAgICBwcm9kdWNlcl9wcmVwICAgOiBob29rIGxvb2t1cCwgc2VyaWFsaXphdGlvbiwgZW5jcnlwdGlvblxuICogVDEgcXVldWUgcHVibGlzaCByZXF1ZXN0ZWRcbiAqICAgICAgcXVldWVfZGVsaXZlcnkgIDogbmV0d29yayArIFZRUyBkZWxpdmVyeSAoaW5jbC4gYW55IGFmZmluaXR5IHJlLXJvdXRlKVxuICogVDIgZmluYWwgY29uc3VtZXIncyBxdWV1ZSBoYW5kbGVyIGVudGVyZWRcbiAqICAgICAgcmVzdW1lX3NldHVwICAgIDogYWZmaW5pdHkgY2hlY2ssIGhvb2tfcmVjZWl2ZWQgcmUtZW5zdXJlLCByZXBsYXkgcHJlbG9hZFxuICogVDMgcmVwbGF5IGJlZ2luc1xuICogICAgICByZXBsYXkgICAgICAgICAgOiBWTS9zZXNzaW9uIGNyZWF0aW9uIGFuZCB3b3JrZmxvdyByZXBsYXlcbiAqIFQ0IG5leHQgZHVyYWJsZSBzdGVwIGVuY291bnRlcmVkXG4gKiAgICAgIHN0ZXBfZGlzcGF0Y2ggICA6IHN1c3BlbnNpb24gaGFuZGxpbmcsIGlubGluZSBiYXRjaCBvciBxdWV1ZSBkaXNwYXRjaFxuICogVDUgc3RlcF9zdGFydGVkIHJlcXVlc3QgYmVnaW5zXG4gKiAgICAgIHN0ZXBfY2xhaW0gICAgICA6IHRoZSBjbGFpbSByb3VuZCB0cmlwXG4gKiBUNiBzdGVwX3N0YXJ0ZWQgcmVzcG9uc2UgcmV0dXJuZWRcbiAqICAgICAgc3RlcF9wcmVwYXJlICAgIDoga2V5IHJlc29sdXRpb24sIGFyZ3VtZW50IGh5ZHJhdGlvbiwgY29udGV4dCBzZXR1cFxuICogVDcgaW1tZWRpYXRlbHkgYmVmb3JlIHN0ZXBGbi5hcHBseSgpXG4gKiBgYGBcbiAqXG4gKiBUaGUgcHJvZHVjZXIncyBkaXJlY3QgYGhvb2tfcmVjZWl2ZWRgIFBPU1QgcmFjZXMgdGhlIHF1ZXVlIHB1Ymxpc2ggb24gdGhlXG4gKiBwYXJhbGxlbCBmYXN0IHBhdGgsIHNvIGl0IGRlbGliZXJhdGVseSBoYXMgbm8gcGhhc2Ugb2YgaXRzIG93bjogdGhlIHR3b1xuICogb3ZlcmxhcCwgYW5kIHJlcHJlc2VudGluZyBib3RoIGFzIGFkZGl0aXZlIHBoYXNlcyB3b3VsZCBkb3VibGUtY291bnQuIEl0XG4gKiByZW1haW5zIHZpc2libGUgYXMgYSBjb250ZXh0dWFsIHNwYW4gKGBob29rLnJlc3VtZWApLlxuICpcbiAqIFQwL1QxIGFyZSBzdGFtcGVkIG9uIHRoZSBwcm9kdWNlcidzIG1hY2hpbmUgYW5kIFQyLi5UNyBvbiB0aGUgY29uc3VtZXIncywgc29cbiAqIHRoZSBtZWFzdXJlbWVudCBpcyBzdWJqZWN0IHRvIGNyb3NzLW1hY2hpbmUgY2xvY2sgc2tldy4gUmF0aGVyIHRoYW4gY2xhbXBcbiAqICh3aGljaCB3b3VsZCBicmVhayB0aGUgc3VtLWVxdWFscy10b3RhbCBwcm9wZXJ0eSB0aGlzIGRlY29tcG9zaXRpb24gZXhpc3RzXG4gKiBmb3IpLCBhIG5vbi1tb25vdG9uaWMgYm91bmRhcnkgc2V0IGRyb3BzIHRoZSB3aG9sZSBzYW1wbGU7IHNlZVxuICoge0BsaW5rIGNvbXB1dGVSZXN1bWVUdHJBdHRyaWJ1dGVzfS5cbiAqL1xuXG4vKiogV2hhdCBjYXVzZWQgdGhlIHJlc3VtcHRpb24gYmVpbmcgbWVhc3VyZWQuIE9ubHkgaG9va3MgYXJlIG1lYXN1cmVkIHRvZGF5LiAqL1xuZXhwb3J0IHR5cGUgUmVzdW1lVHJpZ2dlciA9ICdob29rJztcblxuLyoqIFdoaWNoIGByZXN1bWVIb29rKClgIGRpc3BhdGNoIHBhdGggcHJvZHVjZWQgdGhpcyByZXN1bWUuICovXG5leHBvcnQgdHlwZSBSZXN1bWVTdHJhdGVneSA9ICdwYXJhbGxlbCcgfCAnc2VxdWVudGlhbCc7XG5cbi8qKlxuICogSG93IHRoZSBjb25zdW1pbmcgaW52b2NhdGlvbiBpbml0aWFsaXplZCBpdHMgcmVwbGF5IHN0YXRlOlxuICpcbiAqIC0gYGhvb2tfcHJlbG9hZGA6IHRoZSBob2lzdGVkIGBob29rX3JlY2VpdmVkYCB3cml0ZSByZXR1cm5lZCBhIHVzYWJsZVxuICogICByZXBsYXkgcHJlbG9hZCwgc28gbmVpdGhlciBgcnVuX3N0YXJ0ZWRgIG5vciB0aGUgaW5pdGlhbCBgZXZlbnRzLmxpc3RgIHJhbi5cbiAqIC0gYHJ1bl9zdGFydGVkYDogdGhlIGdlbmVyaWMgYHJ1bl9zdGFydGVkYCBzZXR1cCByYW4gKGluY2x1ZGluZyB0aGUgZmFzdFxuICogICBwYXRoJ3MgZmFsbGJhY2ssIHdoZXJlIHRoZSBob2lzdGVkIHdyaXRlIHN1Y2NlZWRlZCBidXQgcmV0dXJuZWQgbm8gdXNhYmxlXG4gKiAgIHByZWxvYWQpLlxuICogLSBgZXZlbnRfbG9hZGA6IG5laXRoZXIgc2V0dXAgcmFuIGJlY2F1c2UgdGhlIHJ1biBhcnJpdmVkIGFscmVhZHkgbG9hZGVkLFxuICogICBzbyBzZXR1cCB3YXMgYSBwbGFpbiBldmVudCBsb2FkLiBObyBjdXJyZW50IHBhdGggcHJvZHVjZXMgaXQgKHRoZSBvbmVcbiAqICAgcHJlbG9hZGVkLXJ1biBwYXRoLCB0aGUgYmFja2dyb3VuZC1zdGVwIGZhbGwtdGhyb3VnaCwgY29uc3VtZXMgdGhlXG4gKiAgIHRyYWNraW5nIG9uIGl0cyBvd24gc3RlcCBmaXJzdCk7IGl0IGlzIHRoZSBob25lc3QgZGVmYXVsdCByYXRoZXIgdGhhbiBhXG4gKiAgIGxpdmUgdmFsdWUsIGFuZCBrZWVwcyB0aGUgZGltZW5zaW9uIHRvdGFsIGlmIHN1Y2ggYSBwYXRoIGlzIGFkZGVkLlxuICovXG5leHBvcnQgdHlwZSBSZXN1bWVTZXR1cFNvdXJjZSA9ICdob29rX3ByZWxvYWQnIHwgJ3J1bl9zdGFydGVkJyB8ICdldmVudF9sb2FkJztcblxuLyoqIFdoZXRoZXIgdGhlIG1lYXN1cmVkIHN0ZXAgcmFuIGluIHRoZSByZXN1bWluZyBpbnZvY2F0aW9uIG9yIGEgcXVldWVkIG9uZS4gKi9cbmV4cG9ydCB0eXBlIFJlc3VtZVN0ZXBFeGVjdXRpb24gPSAnaW5saW5lJyB8ICdkaXNwYXRjaGVkJztcblxuLyoqXG4gKiBUaGUgcmVzdW1lIGJvdW5kYXJpZXMgb2JzZXJ2ZWQgc28gZmFyLCB0aHJlYWRlZCBmcm9tIHRoZSBxdWV1ZSBoYW5kbGVyIGludG9cbiAqIGBleGVjdXRlU3RlcGAuIFByb2R1Y2VyIGZpZWxkcyBhcnJpdmUgb24gdGhlIHF1ZXVlIG1lc3NhZ2VcbiAqICh7QGxpbmsgSG9va1Jlc3VtZVRpbWluZ30pOyBjb25zdW1lciBmaWVsZHMgYXJlIHN0YW1wZWQgYnkgdGhlIGludm9jYXRpb25cbiAqIHRoYXQgcmVwbGF5cyB0aGUgcmVzdW1lLlxuICpcbiAqIFRoZSBydW50aW1lIGhvbGRzIGF0IG1vc3Qgb25lIG9mIHRoZXNlIHBlciBpbnZvY2F0aW9uIGFuZCBDT05TVU1FUyBpdCB3aGVuXG4gKiBpdCBoYW5kcyBpdCB0byB0aGUgZXhlY3V0aW9uIHRoYXQgd2lsbCBhdHRlbXB0IHRoZSBuZXh0IGR1cmFibGUgc3RlcCwgc28gYVxuICogbGF0ZXIgc3RlcCBpbiB0aGUgc2FtZSBpbnZvY2F0aW9uIChvciBhIHJldHJ5IG9mIHRoZSBzYW1lIHN0ZXApIG5ldmVyXG4gKiByZS1yZXBvcnRzIHRoZSBzYW1lIHJlc3VtcHRpb24uIFdpdGhpbiBvbmUgaW5saW5lIGJhdGNoIHRoZSBvYmplY3QgaXNcbiAqIHNoYXJlZCBieSBldmVyeSBzdGVwIGFuZCB0aGUge0BsaW5rIFJlc3VtZVR0clRyYWNraW5nLnJlcG9ydGVkfSBsYXRjaCBwaWNrc1xuICogdGhlIHNpbmdsZSByZXBvcnRlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXN1bWVUdHJUcmFja2luZyB7XG4gIHRyaWdnZXI6IFJlc3VtZVRyaWdnZXI7XG4gIC8qKiBBYnNlbnQgb25seSBpZiBhbiBvbGRlciBwcm9kdWNlciBvbWl0dGVkIGl0IGZyb20gdGhlIHF1ZXVlIG1lc3NhZ2UuICovXG4gIHN0cmF0ZWd5PzogUmVzdW1lU3RyYXRlZ3k7XG4gIC8qKiBUMDogZW50cnkgaW50byBgcmVzdW1lSG9vaygpYC4gKi9cbiAgcmVzdW1lUmVxdWVzdGVkQXRNczogbnVtYmVyO1xuICAvKiogVDE6IGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgcXVldWUgcHVibGlzaCB3YXMgcmVxdWVzdGVkLiAqL1xuICBxdWV1ZVB1Ymxpc2hSZXF1ZXN0ZWRBdE1zOiBudW1iZXI7XG4gIC8qKlxuICAgKiBUMjogZW50cnkgaW50byB0aGUgRklOQUwgY29uc3VtZXIncyBxdWV1ZSBoYW5kbGVyLiBBIGRlbGl2ZXJ5IHRoYXRcbiAgICogcmUtcm91dGVzIGZvciBkZXBsb3ltZW50IGFmZmluaXR5IG5ldmVyIHN0YW1wcyB0aGlzLCBzbyB0aGUgcmUtcm91dGVkIGhvcFxuICAgKiBzdGF5cyBpbnNpZGUgYHF1ZXVlX2RlbGl2ZXJ5YCB3aGVyZSBpdCBiZWxvbmdzLlxuICAgKi9cbiAgY29uc3VtZXJTdGFydGVkQXRNczogbnVtYmVyO1xuICAvKiogVDM6IHRoaXMgaW52b2NhdGlvbidzIGZpcnN0IHJlcGxheSBwYXNzLiAqL1xuICByZXBsYXlTdGFydGVkQXRNcz86IG51bWJlcjtcbiAgLyoqIFQ0OiByZXBsYXkgZmlyc3QgZW5jb3VudGVyZWQgYSBkdXJhYmxlIHN0ZXAgYWZ0ZXIgdGhlIHJlc3VtZS4gKi9cbiAgbmV4dFN0ZXBFbmNvdW50ZXJlZEF0TXM/OiBudW1iZXI7XG4gIHNldHVwU291cmNlPzogUmVzdW1lU2V0dXBTb3VyY2U7XG4gIHN0ZXBFeGVjdXRpb246IFJlc3VtZVN0ZXBFeGVjdXRpb247XG4gIC8qKlxuICAgKiBPbmUtc2hvdCBsYXRjaCwgc2V0IGJ5IHRoZSBzdGVwIGV4ZWN1dG9yIG9uY2UgdGhpcyByZXN1bXB0aW9uIGhhcyBiZWVuXG4gICAqIHJlcG9ydGVkLiBFdmVyeSBzdGVwIG9mIGFuIGlubGluZSBiYXRjaCBpcyBoYW5kZWQgdGhlIFNBTUUgdHJhY2tpbmdcbiAgICogb2JqZWN0LCBzbyB0aGUgZmlyc3Qgb25lIHRvIHJlYWNoIHVzZXIgY29kZSB0YWtlcyB0aGUgbWVhc3VyZW1lbnQgYW5kIHRoZVxuICAgKiByZXN0IHNlZSB0aGlzIGFuZCBza2lwOiBvbmUgcmVzdW1wdGlvbiwgb25lIHNhbXBsZSwgd2l0aG91dCBwaW5uaW5nIHRoZVxuICAgKiBzYW1wbGUgdG8gYSBzdGVwIHRoYXQgbWF5IGxvc2UgaXRzIGNyZWF0ZS1jbGFpbSBhbmQgbmV2ZXIgcnVuLlxuICAgKlxuICAgKiBEZWxpYmVyYXRlbHkgbm90IHBhcnQgb2Yge0BsaW5rIEhvb2tSZXN1bWVUaW1pbmd9OiBpdCBpcyBpbnZvY2F0aW9uLWxvY2FsXG4gICAqIHN0YXRlLCBhbmQgYSBxdWV1ZSBtZXNzYWdlIGNhcnJpZXMgdGhlIGJvdW5kYXJpZXMsIG5vdCB0aGUgY2xhaW0uXG4gICAqL1xuICByZXBvcnRlZD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUmVidWlsZCB0cmFja2luZyBmcm9tIGEgcXVldWUgbWVzc2FnZSdzIHRpbWluZyBvYmplY3QuIFJldHVybnMgdW5kZWZpbmVkIGZvclxuICogYSBtZXNzYWdlIHRoYXQgY2FycmllcyBub25lIChhbiBvbGRlciBwcm9kdWNlciwgb3IgYW55IG5vbi1ob29rIGRlbGl2ZXJ5KTtcbiAqIHRoZSBjYWxsZXIgdGhlbiByZXBvcnRzIG5vIFRUUi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc3VtZVRyYWNraW5nRnJvbU1lc3NhZ2UoXG4gIHRpbWluZzogSG9va1Jlc3VtZVRpbWluZyB8IHVuZGVmaW5lZCxcbiAgc3RlcEV4ZWN1dGlvbjogUmVzdW1lU3RlcEV4ZWN1dGlvblxuKTogUmVzdW1lVHRyVHJhY2tpbmcgfCB1bmRlZmluZWQge1xuICBpZiAoIXRpbWluZykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgaWYgKFxuICAgICFOdW1iZXIuaXNGaW5pdGUodGltaW5nLnJlc3VtZVJlcXVlc3RlZEF0TXMpIHx8XG4gICAgIU51bWJlci5pc0Zpbml0ZSh0aW1pbmcucXVldWVQdWJsaXNoUmVxdWVzdGVkQXRNcylcbiAgKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHRyaWdnZXI6ICdob29rJyxcbiAgICAuLi4odGltaW5nLnN0cmF0ZWd5ID09PSAncGFyYWxsZWwnIHx8IHRpbWluZy5zdHJhdGVneSA9PT0gJ3NlcXVlbnRpYWwnXG4gICAgICA/IHsgc3RyYXRlZ3k6IHRpbWluZy5zdHJhdGVneSB9XG4gICAgICA6IHt9KSxcbiAgICByZXN1bWVSZXF1ZXN0ZWRBdE1zOiB0aW1pbmcucmVzdW1lUmVxdWVzdGVkQXRNcyxcbiAgICBxdWV1ZVB1Ymxpc2hSZXF1ZXN0ZWRBdE1zOiB0aW1pbmcucXVldWVQdWJsaXNoUmVxdWVzdGVkQXRNcyxcbiAgICAvLyBBIGRpc3BhdGNoZWQgc3RlcCByZWFkcyB0aGUgcmVzdW1pbmcgaW52b2NhdGlvbidzIGJvdW5kYXJpZXMgb2ZmIHRoZVxuICAgIC8vIG1lc3NhZ2U7IGFuIGlubGluZSBvbmUgaGFzIHRoZW0gc3RhbXBlZCBsb2NhbGx5IGJ5IHRoZSBjYWxsZXIsIHdoaWNoXG4gICAgLy8gb3ZlcndyaXRlcyB0aGlzIHBsYWNlaG9sZGVyIGltbWVkaWF0ZWx5IGFmdGVyIGNvbnN0cnVjdGlvbi5cbiAgICBjb25zdW1lclN0YXJ0ZWRBdE1zOiB0aW1pbmcuY29uc3VtZXJTdGFydGVkQXRNcyA/PyBOdW1iZXIuTmFOLFxuICAgIC4uLih0aW1pbmcucmVwbGF5U3RhcnRlZEF0TXMgIT09IHVuZGVmaW5lZFxuICAgICAgPyB7IHJlcGxheVN0YXJ0ZWRBdE1zOiB0aW1pbmcucmVwbGF5U3RhcnRlZEF0TXMgfVxuICAgICAgOiB7fSksXG4gICAgLi4uKHRpbWluZy5uZXh0U3RlcEVuY291bnRlcmVkQXRNcyAhPT0gdW5kZWZpbmVkXG4gICAgICA/IHsgbmV4dFN0ZXBFbmNvdW50ZXJlZEF0TXM6IHRpbWluZy5uZXh0U3RlcEVuY291bnRlcmVkQXRNcyB9XG4gICAgICA6IHt9KSxcbiAgICAuLi4odGltaW5nLnNldHVwU291cmNlID09PSAnaG9va19wcmVsb2FkJyB8fFxuICAgIHRpbWluZy5zZXR1cFNvdXJjZSA9PT0gJ3J1bl9zdGFydGVkJyB8fFxuICAgIHRpbWluZy5zZXR1cFNvdXJjZSA9PT0gJ2V2ZW50X2xvYWQnXG4gICAgICA/IHsgc2V0dXBTb3VyY2U6IHRpbWluZy5zZXR1cFNvdXJjZSB9XG4gICAgICA6IHt9KSxcbiAgICBzdGVwRXhlY3V0aW9uLFxuICB9O1xufVxuXG4vKipcbiAqIFNlcmlhbGl6ZSB0cmFja2luZyBiYWNrIG9udG8gYSBxdWV1ZSBtZXNzYWdlLCBmb3IgdGhlIGNhc2Ugd2hlcmUgdGhlXG4gKiByZXN1bWluZyBpbnZvY2F0aW9uIGRpc3BhdGNoZXMgdGhlIG5leHQgZHVyYWJsZSBzdGVwIHRvIGFub3RoZXIgaW52b2NhdGlvblxuICogaW5zdGVhZCBvZiBydW5uaW5nIGl0IGlubGluZS4gUmV0dXJucyB1bmRlZmluZWQgd2hlbiB0aGUgdHJhY2tpbmcgaXMgbm90XG4gKiBjb21wbGV0ZSBlbm91Z2ggdG8gYmUgd29ydGggZm9yd2FyZGluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc3VtZVRpbWluZ0Zvck1lc3NhZ2UoXG4gIHRyYWNraW5nOiBSZXN1bWVUdHJUcmFja2luZyB8IHVuZGVmaW5lZFxuKTogSG9va1Jlc3VtZVRpbWluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICghdHJhY2tpbmcpIHJldHVybiB1bmRlZmluZWQ7XG4gIGlmICghTnVtYmVyLmlzRmluaXRlKHRyYWNraW5nLmNvbnN1bWVyU3RhcnRlZEF0TXMpKSByZXR1cm4gdW5kZWZpbmVkO1xuICByZXR1cm4ge1xuICAgIHJlc3VtZVJlcXVlc3RlZEF0TXM6IHRyYWNraW5nLnJlc3VtZVJlcXVlc3RlZEF0TXMsXG4gICAgcXVldWVQdWJsaXNoUmVxdWVzdGVkQXRNczogdHJhY2tpbmcucXVldWVQdWJsaXNoUmVxdWVzdGVkQXRNcyxcbiAgICAuLi4odHJhY2tpbmcuc3RyYXRlZ3kgIT09IHVuZGVmaW5lZCA/IHsgc3RyYXRlZ3k6IHRyYWNraW5nLnN0cmF0ZWd5IH0gOiB7fSksXG4gICAgY29uc3VtZXJTdGFydGVkQXRNczogdHJhY2tpbmcuY29uc3VtZXJTdGFydGVkQXRNcyxcbiAgICAuLi4odHJhY2tpbmcucmVwbGF5U3RhcnRlZEF0TXMgIT09IHVuZGVmaW5lZFxuICAgICAgPyB7IHJlcGxheVN0YXJ0ZWRBdE1zOiB0cmFja2luZy5yZXBsYXlTdGFydGVkQXRNcyB9XG4gICAgICA6IHt9KSxcbiAgICAuLi4odHJhY2tpbmcubmV4dFN0ZXBFbmNvdW50ZXJlZEF0TXMgIT09IHVuZGVmaW5lZFxuICAgICAgPyB7IG5leHRTdGVwRW5jb3VudGVyZWRBdE1zOiB0cmFja2luZy5uZXh0U3RlcEVuY291bnRlcmVkQXRNcyB9XG4gICAgICA6IHt9KSxcbiAgICAuLi4odHJhY2tpbmcuc2V0dXBTb3VyY2UgIT09IHVuZGVmaW5lZFxuICAgICAgPyB7IHNldHVwU291cmNlOiB0cmFja2luZy5zZXR1cFNvdXJjZSB9XG4gICAgICA6IHt9KSxcbiAgfTtcbn1cblxuLyoqIEV2ZXJ5IGJvdW5kYXJ5IHRoZSBlbWlzc2lvbiBnYXRlIHJlcXVpcmVzLCBwbHVzIHRoZSBvcHRpb25hbCBjbGFpbSBlbmQuICovXG5pbnRlcmZhY2UgUmVzdW1lQm91bmRhcmllcyB7XG4gIC8qKiBUMCAqLyByZXN1bWVSZXF1ZXN0ZWRBdE1zOiBudW1iZXI7XG4gIC8qKiBUMSAqLyBxdWV1ZVB1Ymxpc2hSZXF1ZXN0ZWRBdE1zOiBudW1iZXI7XG4gIC8qKiBUMiAqLyBjb25zdW1lclN0YXJ0ZWRBdE1zOiBudW1iZXI7XG4gIC8qKiBUMyAqLyByZXBsYXlTdGFydGVkQXRNczogbnVtYmVyO1xuICAvKiogVDQgKi8gbmV4dFN0ZXBFbmNvdW50ZXJlZEF0TXM6IG51bWJlcjtcbiAgLyoqIFQ1ICovIHN0ZXBDbGFpbVN0YXJ0ZWRBdE1zOiBudW1iZXI7XG4gIC8qKiBUNjogYWJzZW50IG9uIHRoZSBvcHRpbWlzdGljLXN0YXJ0IHBhdGg7IHNlZSBiZWxvdy4gKi9cbiAgc3RlcENsYWltQ29tcGxldGVkQXRNczogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAvKiogVDcgKi8gc3RlcENvZGVTdGFydGVkQXRNczogbnVtYmVyO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIHRoYXQgZXZlcnkgcmVxdWlyZWQgYm91bmRhcnkgaXMgYSBmaW5pdGUgZXBvY2gtbXMgdmFsdWUgYW5kIHRoYXRcbiAqIHRoZSB3aG9sZSBzZXF1ZW5jZSBpcyBub24tZGVjcmVhc2luZy4gUmV0dXJucyB1bmRlZmluZWQgb3RoZXJ3aXNlLCB3aGljaFxuICogc3VwcHJlc3NlcyB0aGUgbWV0cmljIGVudGlyZWx5IHJhdGhlciB0aGFuIHJlcG9ydGluZyBhIHBoYXNlIHRoYXQgbmV2ZXJcbiAqIGhhcHBlbmVkIG9yIGEgbmVnYXRpdmUgZHVyYXRpb24uXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlQm91bmRhcmllcyhcbiAgYjogUmVzdW1lQm91bmRhcmllc1xuKTogcmVhZG9ubHkgbnVtYmVyW10gfCB1bmRlZmluZWQge1xuICBjb25zdCBvcmRlcmVkID0gW1xuICAgIGIucmVzdW1lUmVxdWVzdGVkQXRNcyxcbiAgICBiLnF1ZXVlUHVibGlzaFJlcXVlc3RlZEF0TXMsXG4gICAgYi5jb25zdW1lclN0YXJ0ZWRBdE1zLFxuICAgIGIucmVwbGF5U3RhcnRlZEF0TXMsXG4gICAgYi5uZXh0U3RlcEVuY291bnRlcmVkQXRNcyxcbiAgICBiLnN0ZXBDbGFpbVN0YXJ0ZWRBdE1zLFxuICAgIC4uLihiLnN0ZXBDbGFpbUNvbXBsZXRlZEF0TXMgIT09IHVuZGVmaW5lZFxuICAgICAgPyBbYi5zdGVwQ2xhaW1Db21wbGV0ZWRBdE1zXVxuICAgICAgOiBbXSksXG4gICAgYi5zdGVwQ29kZVN0YXJ0ZWRBdE1zLFxuICBdO1xuICBmb3IgKGNvbnN0IHZhbHVlIG9mIG9yZGVyZWQpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnbnVtYmVyJyB8fCAhTnVtYmVyLmlzRmluaXRlKHZhbHVlKSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBmb3IgKGxldCBpID0gMTsgaSA8IG9yZGVyZWQubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAob3JkZXJlZFtpXSA8IG9yZGVyZWRbaSAtIDFdKSByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIHJldHVybiBvcmRlcmVkO1xufVxuXG4vKipcbiAqIENvbXB1dGUgdGhlIFRUUiBzcGFuIGF0dHJpYnV0ZXMgZm9yIGEgc3RlcCB0aGF0IGlzIHRoZSBmaXJzdCBkdXJhYmxlIHN0ZXBcbiAqIGZvbGxvd2luZyBhIGhvb2sgcmVzdW1lLiBSZXR1cm5zIHVuZGVmaW5lZCAoZW1pdHRpbmcgbm90aGluZyBhdCBhbGwpIHdoZW5cbiAqIGFueSBvZiB0aGVzZSBob2xkOlxuICpcbiAqIC0gdGhlIGludm9jYXRpb24gY2FycmllcyBubyByZXN1bWUgdHJhY2tpbmcgKG5vdCBhIGhvb2sgcmVzdW1lLCBvciBhbiBvbGRlclxuICogICBxdWV1ZSBtZXNzYWdlIHdpdGggbm8gdGltaW5nKTtcbiAqIC0gdGhpcyBpcyBhIHJldHJ5IChgYXR0ZW1wdCAhPT0gMWApLCB3aGljaCBtZWFzdXJlcyBhIHJlLWV4ZWN1dGlvbiByYXRoZXJcbiAqICAgdGhhbiB0aGUgcmVzdW1wdGlvbjtcbiAqIC0gYSByZXF1aXJlZCBib3VuZGFyeSBpcyBtaXNzaW5nLCBub24tZmluaXRlLCBvciBvdXQgb2Ygb3JkZXIuXG4gKlxuICogYHN0ZXBfY2xhaW1fbXNgIGlzIHRoZSBvbmUgcGhhc2UgdGhhdCBtYXkgYmUgaW5kaXZpZHVhbGx5IG9taXR0ZWQuIFVuZGVyXG4gKiBvcHRpbWlzdGljIGlubGluZSBzdGFydCB0aGUgYHN0ZXBfc3RhcnRlZGAgY2xhaW0gaXMgZGVsaWJlcmF0ZWx5IE5PVCBhd2FpdGVkXG4gKiBiZWZvcmUgdGhlIGJvZHkgcnVucywgc28gaXRzIGNvbXBsZXRpb24gaW5zdGFudCBkb2VzIG5vdCBleGlzdCB5ZXQgYXQgVDc7XG4gKiByYXRoZXIgdGhhbiBpbnZlbnQgb25lLCB0aGUgY2xhaW0gcGhhc2UgaXMgZHJvcHBlZCBhbmQgYHN0ZXBfcHJlcGFyZV9tc2BcbiAqIHNwYW5zIFQ14oaSVDcuIFRoZSBzdW0tZXF1YWxzLXRvdGFsIHByb3BlcnR5IGhvbGRzIGVpdGhlciB3YXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlUmVzdW1lVHRyQXR0cmlidXRlcyhwYXJhbXM6IHtcbiAgdHJhY2tpbmc6IFJlc3VtZVR0clRyYWNraW5nIHwgdW5kZWZpbmVkO1xuICAvKiogVGhlIGF0dGVtcHQgbnVtYmVyIG9mIHRoZSBleGVjdXRpb24gYWJvdXQgdG8gcnVuLiAqL1xuICBhdHRlbXB0OiBudW1iZXI7XG4gIC8qKiBUNTogYERhdGUubm93KClgIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgYHN0ZXBfc3RhcnRlZGAgcmVxdWVzdC4gKi9cbiAgc3RlcENsYWltU3RhcnRlZEF0TXM6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgLyoqIFQ2OiBgRGF0ZS5ub3coKWAgb25jZSB0aGUgYHN0ZXBfc3RhcnRlZGAgcmVzcG9uc2UgcmV0dXJuZWQuICovXG4gIHN0ZXBDbGFpbUNvbXBsZXRlZEF0TXM6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgLyoqIFQ3OiBgRGF0ZS5ub3coKWAgaW1tZWRpYXRlbHkgYmVmb3JlIGBzdGVwRm4uYXBwbHkoKWAuICovXG4gIHN0ZXBDb2RlU3RhcnRlZEF0TXM6IG51bWJlcjtcbn0pOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXI+IHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgeyB0cmFja2luZyB9ID0gcGFyYW1zO1xuICBpZiAoIXRyYWNraW5nIHx8IHBhcmFtcy5hdHRlbXB0ICE9PSAxKSByZXR1cm4gdW5kZWZpbmVkO1xuICBpZiAoXG4gICAgdHJhY2tpbmcucmVwbGF5U3RhcnRlZEF0TXMgPT09IHVuZGVmaW5lZCB8fFxuICAgIHRyYWNraW5nLm5leHRTdGVwRW5jb3VudGVyZWRBdE1zID09PSB1bmRlZmluZWQgfHxcbiAgICBwYXJhbXMuc3RlcENsYWltU3RhcnRlZEF0TXMgPT09IHVuZGVmaW5lZFxuICApIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3QgYm91bmRhcmllczogUmVzdW1lQm91bmRhcmllcyA9IHtcbiAgICByZXN1bWVSZXF1ZXN0ZWRBdE1zOiB0cmFja2luZy5yZXN1bWVSZXF1ZXN0ZWRBdE1zLFxuICAgIHF1ZXVlUHVibGlzaFJlcXVlc3RlZEF0TXM6IHRyYWNraW5nLnF1ZXVlUHVibGlzaFJlcXVlc3RlZEF0TXMsXG4gICAgY29uc3VtZXJTdGFydGVkQXRNczogdHJhY2tpbmcuY29uc3VtZXJTdGFydGVkQXRNcyxcbiAgICByZXBsYXlTdGFydGVkQXRNczogdHJhY2tpbmcucmVwbGF5U3RhcnRlZEF0TXMsXG4gICAgbmV4dFN0ZXBFbmNvdW50ZXJlZEF0TXM6IHRyYWNraW5nLm5leHRTdGVwRW5jb3VudGVyZWRBdE1zLFxuICAgIHN0ZXBDbGFpbVN0YXJ0ZWRBdE1zOiBwYXJhbXMuc3RlcENsYWltU3RhcnRlZEF0TXMsXG4gICAgc3RlcENsYWltQ29tcGxldGVkQXRNczogcGFyYW1zLnN0ZXBDbGFpbUNvbXBsZXRlZEF0TXMsXG4gICAgc3RlcENvZGVTdGFydGVkQXRNczogcGFyYW1zLnN0ZXBDb2RlU3RhcnRlZEF0TXMsXG4gIH07XG4gIGlmICghdmFsaWRhdGVCb3VuZGFyaWVzKGJvdW5kYXJpZXMpKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIGNvbnN0IHtcbiAgICByZXN1bWVSZXF1ZXN0ZWRBdE1zOiB0MCxcbiAgICBxdWV1ZVB1Ymxpc2hSZXF1ZXN0ZWRBdE1zOiB0MSxcbiAgICBjb25zdW1lclN0YXJ0ZWRBdE1zOiB0MixcbiAgICByZXBsYXlTdGFydGVkQXRNczogdDMsXG4gICAgbmV4dFN0ZXBFbmNvdW50ZXJlZEF0TXM6IHQ0LFxuICAgIHN0ZXBDbGFpbVN0YXJ0ZWRBdE1zOiB0NSxcbiAgICBzdGVwQ2xhaW1Db21wbGV0ZWRBdE1zOiB0NixcbiAgICBzdGVwQ29kZVN0YXJ0ZWRBdE1zOiB0NyxcbiAgfSA9IGJvdW5kYXJpZXM7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5BdHRyaWJ1dGUuUmVzdW1lVG90YWxNcyh0NyAtIHQwKSxcbiAgICAuLi5BdHRyaWJ1dGUuUmVzdW1lUHJvZHVjZXJQcmVwTXModDEgLSB0MCksXG4gICAgLi4uQXR0cmlidXRlLlJlc3VtZVF1ZXVlRGVsaXZlcnlNcyh0MiAtIHQxKSxcbiAgICAuLi5BdHRyaWJ1dGUuUmVzdW1lU2V0dXBNcyh0MyAtIHQyKSxcbiAgICAuLi5BdHRyaWJ1dGUuUmVzdW1lUmVwbGF5TXModDQgLSB0MyksXG4gICAgLi4uQXR0cmlidXRlLlJlc3VtZVN0ZXBEaXNwYXRjaE1zKHQ1IC0gdDQpLFxuICAgIC4uLih0NiAhPT0gdW5kZWZpbmVkID8gQXR0cmlidXRlLlJlc3VtZVN0ZXBDbGFpbU1zKHQ2IC0gdDUpIDoge30pLFxuICAgIC4uLkF0dHJpYnV0ZS5SZXN1bWVTdGVwUHJlcGFyZU1zKHQ3IC0gKHQ2ID8/IHQ1KSksXG4gICAgLi4uQXR0cmlidXRlLlJlc3VtZVRyaWdnZXIodHJhY2tpbmcudHJpZ2dlciksXG4gICAgLi4uKHRyYWNraW5nLnN0cmF0ZWd5ICE9PSB1bmRlZmluZWRcbiAgICAgID8gQXR0cmlidXRlLlJlc3VtZVN0cmF0ZWd5KHRyYWNraW5nLnN0cmF0ZWd5KVxuICAgICAgOiB7fSksXG4gICAgLi4uKHRyYWNraW5nLnNldHVwU291cmNlICE9PSB1bmRlZmluZWRcbiAgICAgID8gQXR0cmlidXRlLlJlc3VtZVNldHVwU291cmNlKHRyYWNraW5nLnNldHVwU291cmNlKVxuICAgICAgOiB7fSksXG4gICAgLi4uQXR0cmlidXRlLlJlc3VtZVN0ZXBFeGVjdXRpb24odHJhY2tpbmcuc3RlcEV4ZWN1dGlvbiksXG4gIH07XG59XG4iXX0=
@@ -5,8 +5,8 @@
5
5
  * `@workflow/world-vercel`'s region-tagged run IDs mark an ID as carrying
6
6
  * metadata by setting the most-significant bit of the ULID's 48-bit
7
7
  * timestamp, which would otherwise skew the decoded time past the year 6400.
8
- * The tag-bit handling is delegated to the scheme's own codec
9
- * `decode()` returns the ULID with the tag bit cleared so if the tagged
8
+ * The tag-bit handling is delegated to the scheme's own codec
9
+ * (`decode()` returns the ULID with the tag bit cleared), so if the tagged
10
10
  * layout ever evolves (the scheme carries a 5-bit version field for exactly
11
11
  * that), this anchor keeps tracking the codec instead of silently diverging.
12
12
  * For untagged input `decode()` is a passthrough.
@@ -2,9 +2,9 @@ import { decode } from '@workflow/world-vercel/run-id';
2
2
  import { decodeTime } from 'ulid';
3
3
  /**
4
4
  * Run IDs are minted client-side in `start()` as `wrun_<ulid>` (via
5
- * `World.createRunId()` when the world provides one, else a plain ULID see
5
+ * `World.createRunId()` when the world provides one, else a plain ULID; see
6
6
  * `runtime/helpers.ts`). A ULID encodes its creation time in its first 48 bits,
7
- * so the run's creation timestamp is recoverable from the run ID alone
7
+ * so the run's creation timestamp is recoverable from the run ID alone,
8
8
  * without any server round-trip or run-snapshot load. This is the earliest
9
9
  * replay-stable timestamp a delivery has (the run ID arrives in the queue
10
10
  * payload), which lets the workflow VM be seeded and clock-initialized before
@@ -18,8 +18,8 @@ const RUN_ID_PREFIX = 'wrun_';
18
18
  * `@workflow/world-vercel`'s region-tagged run IDs mark an ID as carrying
19
19
  * metadata by setting the most-significant bit of the ULID's 48-bit
20
20
  * timestamp, which would otherwise skew the decoded time past the year 6400.
21
- * The tag-bit handling is delegated to the scheme's own codec
22
- * `decode()` returns the ULID with the tag bit cleared so if the tagged
21
+ * The tag-bit handling is delegated to the scheme's own codec
22
+ * (`decode()` returns the ULID with the tag bit cleared), so if the tagged
23
23
  * layout ever evolves (the scheme carries a 5-bit version field for exactly
24
24
  * that), this anchor keeps tracking the codec instead of silently diverging.
25
25
  * For untagged input `decode()` is a passthrough.
@@ -39,4 +39,4 @@ export function runIdCreatedAt(runId) {
39
39
  return undefined;
40
40
  }
41
41
  }
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLWlkLXRpbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnVudGltZS9ydW4taWQtdGltZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsQzs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUM7QUFFOUI7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLEtBQWE7SUFDMUMsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7UUFDOUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQztRQUNuQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ1YsSUFBSSxDQUFDO1FBQ0gsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlY29kZSB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZC12ZXJjZWwvcnVuLWlkJztcbmltcG9ydCB7IGRlY29kZVRpbWUgfSBmcm9tICd1bGlkJztcblxuLyoqXG4gKiBSdW4gSURzIGFyZSBtaW50ZWQgY2xpZW50LXNpZGUgaW4gYHN0YXJ0KClgIGFzIGB3cnVuXzx1bGlkPmAgKHZpYVxuICogYFdvcmxkLmNyZWF0ZVJ1bklkKClgIHdoZW4gdGhlIHdvcmxkIHByb3ZpZGVzIG9uZSwgZWxzZSBhIHBsYWluIFVMSUQg4oCUIHNlZVxuICogYHJ1bnRpbWUvaGVscGVycy50c2ApLiBBIFVMSUQgZW5jb2RlcyBpdHMgY3JlYXRpb24gdGltZSBpbiBpdHMgZmlyc3QgNDggYml0cyxcbiAqIHNvIHRoZSBydW4ncyBjcmVhdGlvbiB0aW1lc3RhbXAgaXMgcmVjb3ZlcmFibGUgZnJvbSB0aGUgcnVuIElEIGFsb25lIOKAlFxuICogd2l0aG91dCBhbnkgc2VydmVyIHJvdW5kLXRyaXAgb3IgcnVuLXNuYXBzaG90IGxvYWQuIFRoaXMgaXMgdGhlIGVhcmxpZXN0XG4gKiByZXBsYXktc3RhYmxlIHRpbWVzdGFtcCBhIGRlbGl2ZXJ5IGhhcyAodGhlIHJ1biBJRCBhcnJpdmVzIGluIHRoZSBxdWV1ZVxuICogcGF5bG9hZCksIHdoaWNoIGxldHMgdGhlIHdvcmtmbG93IFZNIGJlIHNlZWRlZCBhbmQgY2xvY2staW5pdGlhbGl6ZWQgYmVmb3JlXG4gKiBgcnVuX3N0YXJ0ZWRgLlxuICovXG5jb25zdCBSVU5fSURfUFJFRklYID0gJ3dydW5fJztcblxuLyoqXG4gKiBFeHRyYWN0cyB0aGUgcnVuJ3MgY3JlYXRpb24gdGltZXN0YW1wIChlcG9jaCBtaWxsaXNlY29uZHMpIGZyb20gYSBgd3J1bl9gXG4gKiBydW4gSUQgYnkgZGVjb2RpbmcgdGhlIGVtYmVkZGVkIFVMSUQgdGltZSBjb21wb25lbnQuXG4gKlxuICogYEB3b3JrZmxvdy93b3JsZC12ZXJjZWxgJ3MgcmVnaW9uLXRhZ2dlZCBydW4gSURzIG1hcmsgYW4gSUQgYXMgY2FycnlpbmdcbiAqIG1ldGFkYXRhIGJ5IHNldHRpbmcgdGhlIG1vc3Qtc2lnbmlmaWNhbnQgYml0IG9mIHRoZSBVTElEJ3MgNDgtYml0XG4gKiB0aW1lc3RhbXAsIHdoaWNoIHdvdWxkIG90aGVyd2lzZSBza2V3IHRoZSBkZWNvZGVkIHRpbWUgcGFzdCB0aGUgeWVhciA2NDAwLlxuICogVGhlIHRhZy1iaXQgaGFuZGxpbmcgaXMgZGVsZWdhdGVkIHRvIHRoZSBzY2hlbWUncyBvd24gY29kZWMg4oCUXG4gKiBgZGVjb2RlKClgIHJldHVybnMgdGhlIFVMSUQgd2l0aCB0aGUgdGFnIGJpdCBjbGVhcmVkIOKAlCBzbyBpZiB0aGUgdGFnZ2VkXG4gKiBsYXlvdXQgZXZlciBldm9sdmVzICh0aGUgc2NoZW1lIGNhcnJpZXMgYSA1LWJpdCB2ZXJzaW9uIGZpZWxkIGZvciBleGFjdGx5XG4gKiB0aGF0KSwgdGhpcyBhbmNob3Iga2VlcHMgdHJhY2tpbmcgdGhlIGNvZGVjIGluc3RlYWQgb2Ygc2lsZW50bHkgZGl2ZXJnaW5nLlxuICogRm9yIHVudGFnZ2VkIGlucHV0IGBkZWNvZGUoKWAgaXMgYSBwYXNzdGhyb3VnaC5cbiAqXG4gKiBSZXR1cm5zIGB1bmRlZmluZWRgIHdoZW4gYHJ1bklkYCBpcyBub3QgYSBkZWNvZGFibGUgYHdydW5fPHVsaWQ+YCAoZS5nLiBhXG4gKiBsZWdhY3kvbm9uLVVMSUQgaWQsIG9yIGEgdGVzdCBmaXh0dXJlIGxpa2UgYHdydW5fdGVzdGApOyBjYWxsZXJzIGZhbGwgYmFjayB0b1xuICogYW4gYXV0aG9yaXRhdGl2ZSB0aW1lc3RhbXAgZnJvbSB0aGUgcnVuIHNuYXBzaG90IChgY3JlYXRlZEF0YCkgaW4gdGhhdCBjYXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcnVuSWRDcmVhdGVkQXQocnVuSWQ6IHN0cmluZyk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHVsaWRQYXJ0ID0gcnVuSWQuc3RhcnRzV2l0aChSVU5fSURfUFJFRklYKVxuICAgID8gcnVuSWQuc2xpY2UoUlVOX0lEX1BSRUZJWC5sZW5ndGgpXG4gICAgOiBydW5JZDtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZGVjb2RlVGltZShkZWNvZGUodWxpZFBhcnQpLnVsaWQpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG4iXX0=
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLWlkLXRpbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnVudGltZS9ydW4taWQtdGltZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsQzs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUM7QUFFOUI7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLEtBQWE7SUFDMUMsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7UUFDOUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQztRQUNuQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ1YsSUFBSSxDQUFDO1FBQ0gsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlY29kZSB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZC12ZXJjZWwvcnVuLWlkJztcbmltcG9ydCB7IGRlY29kZVRpbWUgfSBmcm9tICd1bGlkJztcblxuLyoqXG4gKiBSdW4gSURzIGFyZSBtaW50ZWQgY2xpZW50LXNpZGUgaW4gYHN0YXJ0KClgIGFzIGB3cnVuXzx1bGlkPmAgKHZpYVxuICogYFdvcmxkLmNyZWF0ZVJ1bklkKClgIHdoZW4gdGhlIHdvcmxkIHByb3ZpZGVzIG9uZSwgZWxzZSBhIHBsYWluIFVMSUQ7IHNlZVxuICogYHJ1bnRpbWUvaGVscGVycy50c2ApLiBBIFVMSUQgZW5jb2RlcyBpdHMgY3JlYXRpb24gdGltZSBpbiBpdHMgZmlyc3QgNDggYml0cyxcbiAqIHNvIHRoZSBydW4ncyBjcmVhdGlvbiB0aW1lc3RhbXAgaXMgcmVjb3ZlcmFibGUgZnJvbSB0aGUgcnVuIElEIGFsb25lLFxuICogd2l0aG91dCBhbnkgc2VydmVyIHJvdW5kLXRyaXAgb3IgcnVuLXNuYXBzaG90IGxvYWQuIFRoaXMgaXMgdGhlIGVhcmxpZXN0XG4gKiByZXBsYXktc3RhYmxlIHRpbWVzdGFtcCBhIGRlbGl2ZXJ5IGhhcyAodGhlIHJ1biBJRCBhcnJpdmVzIGluIHRoZSBxdWV1ZVxuICogcGF5bG9hZCksIHdoaWNoIGxldHMgdGhlIHdvcmtmbG93IFZNIGJlIHNlZWRlZCBhbmQgY2xvY2staW5pdGlhbGl6ZWQgYmVmb3JlXG4gKiBgcnVuX3N0YXJ0ZWRgLlxuICovXG5jb25zdCBSVU5fSURfUFJFRklYID0gJ3dydW5fJztcblxuLyoqXG4gKiBFeHRyYWN0cyB0aGUgcnVuJ3MgY3JlYXRpb24gdGltZXN0YW1wIChlcG9jaCBtaWxsaXNlY29uZHMpIGZyb20gYSBgd3J1bl9gXG4gKiBydW4gSUQgYnkgZGVjb2RpbmcgdGhlIGVtYmVkZGVkIFVMSUQgdGltZSBjb21wb25lbnQuXG4gKlxuICogYEB3b3JrZmxvdy93b3JsZC12ZXJjZWxgJ3MgcmVnaW9uLXRhZ2dlZCBydW4gSURzIG1hcmsgYW4gSUQgYXMgY2FycnlpbmdcbiAqIG1ldGFkYXRhIGJ5IHNldHRpbmcgdGhlIG1vc3Qtc2lnbmlmaWNhbnQgYml0IG9mIHRoZSBVTElEJ3MgNDgtYml0XG4gKiB0aW1lc3RhbXAsIHdoaWNoIHdvdWxkIG90aGVyd2lzZSBza2V3IHRoZSBkZWNvZGVkIHRpbWUgcGFzdCB0aGUgeWVhciA2NDAwLlxuICogVGhlIHRhZy1iaXQgaGFuZGxpbmcgaXMgZGVsZWdhdGVkIHRvIHRoZSBzY2hlbWUncyBvd24gY29kZWNcbiAqIChgZGVjb2RlKClgIHJldHVybnMgdGhlIFVMSUQgd2l0aCB0aGUgdGFnIGJpdCBjbGVhcmVkKSwgc28gaWYgdGhlIHRhZ2dlZFxuICogbGF5b3V0IGV2ZXIgZXZvbHZlcyAodGhlIHNjaGVtZSBjYXJyaWVzIGEgNS1iaXQgdmVyc2lvbiBmaWVsZCBmb3IgZXhhY3RseVxuICogdGhhdCksIHRoaXMgYW5jaG9yIGtlZXBzIHRyYWNraW5nIHRoZSBjb2RlYyBpbnN0ZWFkIG9mIHNpbGVudGx5IGRpdmVyZ2luZy5cbiAqIEZvciB1bnRhZ2dlZCBpbnB1dCBgZGVjb2RlKClgIGlzIGEgcGFzc3Rocm91Z2guXG4gKlxuICogUmV0dXJucyBgdW5kZWZpbmVkYCB3aGVuIGBydW5JZGAgaXMgbm90IGEgZGVjb2RhYmxlIGB3cnVuXzx1bGlkPmAgKGUuZy4gYVxuICogbGVnYWN5L25vbi1VTElEIGlkLCBvciBhIHRlc3QgZml4dHVyZSBsaWtlIGB3cnVuX3Rlc3RgKTsgY2FsbGVycyBmYWxsIGJhY2sgdG9cbiAqIGFuIGF1dGhvcml0YXRpdmUgdGltZXN0YW1wIGZyb20gdGhlIHJ1biBzbmFwc2hvdCAoYGNyZWF0ZWRBdGApIGluIHRoYXQgY2FzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bklkQ3JlYXRlZEF0KHJ1bklkOiBzdHJpbmcpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBjb25zdCB1bGlkUGFydCA9IHJ1bklkLnN0YXJ0c1dpdGgoUlVOX0lEX1BSRUZJWClcbiAgICA/IHJ1bklkLnNsaWNlKFJVTl9JRF9QUkVGSVgubGVuZ3RoKVxuICAgIDogcnVuSWQ7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGRlY29kZVRpbWUoZGVjb2RlKHVsaWRQYXJ0KS51bGlkKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuIl19
@@ -3,6 +3,23 @@ import { type WorkflowRunStatus } from '@workflow/world';
3
3
  import { type CancelRunOptions, type StopSleepOptions, type StopSleepResult } from './runs.js';
4
4
  /** @internal */
5
5
  export declare function getReturnValuePollIntervalMs(): number;
6
+ /** @internal */
7
+ export declare function getReturnValueWaitTimeoutMs(): number;
8
+ /** @internal */
9
+ export declare function getReturnValueMaxLongPolls(): number;
10
+ /**
11
+ * Whether `await run.returnValue` may use the World's long poll
12
+ * (`runs.waitForTerminalStatus`) instead of interval-polling `runs.get`.
13
+ *
14
+ * Default **ON** wherever the World implements the method; a World that does
15
+ * not is already on the interval path with nothing to switch off. Reads
16
+ * `process.env.WORKFLOW_RETURN_VALUE_LONG_POLL` lazily; an explicit `'0'` /
17
+ * `'false'` is the kill switch, restoring the fixed-interval poll exactly as
18
+ * it behaved before the fast path existed.
19
+ *
20
+ * @internal
21
+ */
22
+ export declare function isReturnValueLongPollEnabled(): boolean;
6
23
  /**
7
24
  * A `ReadableStream` extended with workflow-specific helpers.
8
25
  */
@@ -10,7 +27,7 @@ export type WorkflowReadableStream<R = any> = ReadableStream<R> & {
10
27
  /**
11
28
  * Returns the tail index (index of the last known chunk, 0-based) of the
12
29
  * underlying workflow stream. Useful for resolving a negative `startIndex`
13
- * into an absolute position for example, when building reconnection
30
+ * into an absolute position, for example, when building reconnection
14
31
  * endpoints that need to inform the client where the stream starts.
15
32
  *
16
33
  * Returns `-1` when no chunks have been written yet.
@@ -32,8 +49,8 @@ export interface WorkflowReadableStreamOptions {
32
49
  */
33
50
  startIndex?: number;
34
51
  /**
35
- * Any asynchronous operations that need to be performed before the execution
36
- * environment is paused / terminated
52
+ * Any asynchronous operations to complete before pausing or terminating the
53
+ * execution environment
37
54
  * (i.e. using [`waitUntil()`](https://developer.mozilla.org/docs/Web/API/ExtendableEvent/waitUntil) or similar).
38
55
  */
39
56
  ops?: Promise<any>[];
@@ -90,7 +107,7 @@ export declare class Run<TResult> {
90
107
  get status(): Promise<WorkflowRunStatus>;
91
108
  /**
92
109
  * The return value of the workflow run.
93
- * Polls the workflow return value until it is completed.
110
+ * Polls the workflow return value until the workflow run completes.
94
111
  */
95
112
  get returnValue(): Promise<TResult>;
96
113
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/runtime/run.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAGL,KAAK,iBAAiB,EAEvB,MAAM,iBAAiB,CAAC;AAYzB,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EAErB,MAAM,WAAW,CAAC;AAInB,gBAAgB;AAChB,wBAAgB,4BAA4B,IAAI,MAAM,CAMrD;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,CAAC,CAAC,GAAG,GAAG,IAAI,cAAc,CAAC,CAAC,CAAC,GAAG;IAChE;;;;;;;OAOG;IACH,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CACjC,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;IACrB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B;AAED;;GAEG;AACH,qBAAa,GAAG,CAAC,OAAO;;IACtB,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;;;;IAIlD,MAAM,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE;QAClC,KAAK,EAAE,MAAM,CAAC;QACd,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B;IAID;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;gBA4BF,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE;IAiC9D;;;;;;OAMG;IACG,MAAM,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IAKlE;;;;;;OAMG;IACG,MAAM,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAYvD;;OAEG;IACH,IAAI,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAa7B;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAKvC;IAED;;;OAGG;IACH,IAAI,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAGlC;IAED;;OAEG;IACH,IAAI,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAKlC;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAK7B;IAED;;;OAGG;IACH,IAAI,SAAS,IAAI,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAKzC;IAED;;;OAGG;IACH,IAAI,WAAW,IAAI,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAK3C;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,sBAAsB,CAErC;IAED;;;;;;;;;;;OAWG;IACH,WAAW,CAAC,CAAC,GAAG,GAAG,EACjB,OAAO,GAAE,6BAAkC,GAC1C,sBAAsB,CAAC,CAAC,CAAC;CA+G7B;AAED;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,CAE3D"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/runtime/run.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAIL,KAAK,iBAAiB,EAEvB,MAAM,iBAAiB,CAAC;AAYzB,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EAErB,MAAM,WAAW,CAAC;AAQnB,gBAAgB;AAChB,wBAAgB,4BAA4B,IAAI,MAAM,CAMrD;AAiBD,gBAAgB;AAChB,wBAAgB,2BAA2B,IAAI,MAAM,CAMpD;AAqBD,gBAAgB;AAChB,wBAAgB,0BAA0B,IAAI,MAAM,CAMnD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,4BAA4B,IAAI,OAAO,CAItD;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,CAAC,CAAC,GAAG,GAAG,IAAI,cAAc,CAAC,CAAC,CAAC,GAAG;IAChE;;;;;;;OAOG;IACH,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CACjC,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;IACrB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B;AAED;;GAEG;AACH,qBAAa,GAAG,CAAC,OAAO;;IACtB,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;;;;IAIlD,MAAM,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE;QAClC,KAAK,EAAE,MAAM,CAAC;QACd,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B;IAID;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;gBA4BF,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE;IAiC9D;;;;;;OAMG;IACG,MAAM,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IAKlE;;;;;;OAMG;IACG,MAAM,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAYvD;;OAEG;IACH,IAAI,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAa7B;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAOvC;IAED;;;OAGG;IACH,IAAI,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAGlC;IAED;;OAEG;IACH,IAAI,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAKlC;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAK7B;IAED;;;OAGG;IACH,IAAI,SAAS,IAAI,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAKzC;IAED;;;OAGG;IACH,IAAI,WAAW,IAAI,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAK3C;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,sBAAsB,CAErC;IAED;;;;;;;;;;;OAWG;IACH,WAAW,CAAC,CAAC,GAAG,GAAG,EACjB,OAAO,GAAE,6BAAkC,GAC1C,sBAAsB,CAAC,CAAC,CAAC;CA2K7B;AAED;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,CAE3D"}