footprintjs 9.44.2 → 9.44.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +2 -2
- package/dist/esm/lib/memory/EventLog.d.ts +1 -1
- package/dist/esm/lib/memory/EventLog.js +2 -2
- package/dist/esm/lib/memory/StageContext.d.ts +4 -33
- package/dist/esm/lib/memory/StageContext.js +18 -81
- package/dist/esm/lib/memory/TransactionBuffer.js +2 -2
- package/dist/esm/lib/memory/recordCommit.d.ts +43 -0
- package/dist/esm/lib/memory/recordCommit.js +59 -0
- package/dist/esm/lib/memory/redaction.d.ts +1 -1
- package/dist/esm/lib/memory/redaction.js +2 -2
- package/dist/esm/lib/runner/ExecutionRuntime.d.ts +2 -2
- package/dist/esm/lib/runner/ExecutionRuntime.js +3 -3
- package/dist/lib/memory/EventLog.js +2 -2
- package/dist/lib/memory/StageContext.js +17 -80
- package/dist/lib/memory/TransactionBuffer.js +2 -2
- package/dist/lib/memory/recordCommit.js +63 -0
- package/dist/lib/memory/redaction.js +2 -2
- package/dist/lib/runner/ExecutionRuntime.js +3 -3
- package/dist/types/lib/memory/EventLog.d.ts +1 -1
- package/dist/types/lib/memory/StageContext.d.ts +4 -33
- package/dist/types/lib/memory/recordCommit.d.ts +43 -0
- package/dist/types/lib/memory/redaction.d.ts +1 -1
- package/dist/types/lib/runner/ExecutionRuntime.d.ts +2 -2
- package/package.json +1 -1
package/CLAUDE.md
CHANGED
|
@@ -28,7 +28,7 @@ Entry points: `footprintjs` (public API) · `/recorders` (factories) · `/trace`
|
|
|
28
28
|
|
|
29
29
|
## Core state & flow
|
|
30
30
|
- `SharedMemory` (memory/SharedMemory.ts) — run-namespaced heap; committed state is **immutable-after-swap**, COPY-ON-WRITE since 9.29.0: every write (`applyPatch` → `verbs · nextGeneration`, `setValue`/`updateValue`) copies the root + the containers on each written path and SHARES every other subtree with the previous generation, then swaps. A generation is never edited; the seed is detached once at construction. Design: docs/design/2026-10-copy-on-write-commit.md.
|
|
31
|
-
- `StageContext` (memory/StageContext.ts:29) — per-stage frame: lazy TransactionBuffer + first-touch view; `commit()` (
|
|
31
|
+
- `StageContext` (memory/StageContext.ts:29) — per-stage frame: lazy TransactionBuffer + first-touch view; `commit()` → `memory/recordCommit.ts · recordCommit` (live apply → scrub → mirror → `EventLog.record`; the ONE owner of the bundle's key order, C1, 9.44.3) → onCommit.
|
|
32
32
|
- `CommitBundle`/`EventLog` — one bundle per executed stage, `bundle.idx` == array position; encoding governed by `commitValues: 'full'|'delta'`.
|
|
33
33
|
- `TraversalContext` (engine/narrative/types.ts:172) — THE per-event context (runId, runtimeStageId, parentRuntimeStageId, subflowPath, loopIteration); stamped on every FlowRecorder event.
|
|
34
34
|
- `runtimeStageId` = `[subflowPath/]stageId#executionIndex`; counter shared by reference into subflow traversers → globally unique; NOT reset on resume.
|
|
@@ -36,7 +36,7 @@ Entry points: `footprintjs` (public API) · `/recorders` (factories) · `/trace`
|
|
|
36
36
|
|
|
37
37
|
**Retry (9.15.0):** `StageNode.retry` is a POLICY on a stage, not a kind — no new node type, no `computeNodeType` edit. The loop lives in `FlowchartTraverser.executeStage` (:720), so linear/streaming/pausable/decider/selector/fork-child/subflow-inner all get it from one implementation. A failed non-final attempt calls `StageContext.discardStaged()` (buffer + stateView + _stageWrites/_stageReads + _provenanceReads + _untrackedSources); the final attempt is today's law untouched. PauseSignal and abort are NEVER retried. One runtimeStageId + one CommitBundle per stage regardless of attempts; retries do not consume `maxIterations`.
|
|
38
38
|
|
|
39
|
-
**Declared tags (9.21.0):** `StageNode.tags?: readonly string[]` is a NAME on a stage, declared at build time — POLICY-like (the retry precedent): no node type, no `computeNodeType` edit, no type-union site, and the one prefixer (`engine/graph/prefixNodeTree.ts`, 9.37.0) spreads `{ ...node }` so it rides subflow prefixing untouched. ONE landing site `FlowChartBuilder.ts · applyTags` (twin of `applyRetryPolicy`) serves the `.tag(...names)` cursor modifier and every `options.tags` site; refuses empty/non-string/`~`/duplicate/double-declare at build. Stamp: `FlowchartTraverser.executeNodeStep` sets `context.tags = node.tags` beside `runtimeStageId` (unconditionally — a re-used context must not keep a prior node's names); `
|
|
39
|
+
**Declared tags (9.21.0):** `StageNode.tags?: readonly string[]` is a NAME on a stage, declared at build time — POLICY-like (the retry precedent): no node type, no `computeNodeType` edit, no type-union site, and the one prefixer (`engine/graph/prefixNodeTree.ts`, 9.37.0) spreads `{ ...node }` so it rides subflow prefixing untouched. ONE landing site `FlowChartBuilder.ts · applyTags` (twin of `applyRetryPolicy`) serves the `.tag(...names)` cursor modifier and every `options.tags` site; refuses empty/non-string/`~`/duplicate/double-declare at build. Stamp: `FlowchartTraverser.executeNodeStep` sets `context.tags = node.tags` beside `runtimeStageId` (unconditionally — a re-used context must not keep a prior node's names); `memory/recordCommit.ts · recordCommit` (C1, 9.44.3; was `StageContext · bundleFor`) stamps `tags` beside `untrackedSources` on BOTH commit paths and `StageContext · commit` RELEASES them, so a double-commit path (fork child fan-out repeat, mount exit) records it once — absent when empty (`CommitBundle.tags?`; pinned byte-identical to 9.20.0 by test/lib/engine/scenario/declared-tags-byte-identity.test.ts). NOT inherited by createNext/createChild; the one synthetic node that could lose it is `FlowChartExecutor.resume`'s stand-in for the paused stage — built by `runner/resume.ts · standInFor` from the paused node ITSELF (fn swapped), so it keeps the tags on both re-entries; it runs ONCE — a later visit of the paused id runs the chart's real node, which carries its own tags. The spec carries `tags` as-is (Map advertises the vocabulary; `RuntimeStructureManager.stageNodeToStructure` copies it for run-time-resolved nodes). Reader: `time-travel/tagStops.ts` = `filterStops(commitStops(...), any-of over log[stop.commitIdx].tags, meta = the array)`, exported from `/trace`. Never a runtime `$tag()` — a value would ride past every redaction point. Design: docs/design/2026-09-declared-tags.md.
|
|
40
40
|
|
|
41
41
|
**Event order (code-verified; older docs had 3/4 swapped):** onStageStart → onRead/onWrite (live, PRE-commit) → **onStageEnd (StageRunner.ts:81) → onCommit (StageContext.ts:587)** → FlowRecorder onDecision/onFork/onSelected/onSubflowEntry → onStageExecuted (uniform, with stageType). Error path: commit STILL happens (FlowchartTraverser.ts:1088) before onError+rethrow — a failing stage's writes land. For ANY thrown value (null, null-prototype, hostile Proxy) catch blocks describe it with `errors/errorInfo · thrownText` (never throws), onError fires, and run() rejects with the ORIGINAL value; a failed commit (e.g. an uncloneable write) also fires onError (`handlers/commitStage.ts`, 9.40.0). `interrupt()` rides the ERROR path's shape, not the pausable one: the stage function threw, so onStageEnd does NOT fire (the `addPausableFunction` pause DOES fire it — there the function returned normally).
|
|
42
42
|
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* row's `readKeys`, `redactedPaths`, `tags`, `untrackedSources` — so a holder of a snapshot can no
|
|
9
9
|
* longer rewrite the history every later answer is folded from: an assignment into a bundle throws
|
|
10
10
|
* a `TypeError` in strict code. Safe because nothing outside the log holds a bundle's containers:
|
|
11
|
-
* the log's payload is the commit's own copy (`
|
|
11
|
+
* the log's payload is the commit's own copy (`recordCommit` hands it the output of
|
|
12
12
|
* `scrubPatch`), and live state, the redacted mirror and write retention each take their own copy
|
|
13
13
|
* (`verbs.ts · foldRows` detaches, `StageContext · retainedForm` clones) — pinned by
|
|
14
14
|
* test/lib/memory/property/record-reachability.property.test.ts.
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* row's `readKeys`, `redactedPaths`, `tags`, `untrackedSources` — so a holder of a snapshot can no
|
|
9
9
|
* longer rewrite the history every later answer is folded from: an assignment into a bundle throws
|
|
10
10
|
* a `TypeError` in strict code. Safe because nothing outside the log holds a bundle's containers:
|
|
11
|
-
* the log's payload is the commit's own copy (`
|
|
11
|
+
* the log's payload is the commit's own copy (`recordCommit` hands it the output of
|
|
12
12
|
* `scrubPatch`), and live state, the redacted mirror and write retention each take their own copy
|
|
13
13
|
* (`verbs.ts · foldRows` detaches, `StageContext · retainedForm` clones) — pinned by
|
|
14
14
|
* test/lib/memory/property/record-reachability.property.test.ts.
|
|
@@ -145,4 +145,4 @@ export class EventLog {
|
|
|
145
145
|
this.sourceAddressRetired = true;
|
|
146
146
|
}
|
|
147
147
|
}
|
|
148
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRMb2cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL21lbW9yeS9FdmVudExvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQkc7QUFFSCxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR2pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVqRCxNQUFNLE9BQU8sUUFBUTtJQUNuQiw2REFBNkQ7SUFDckQsSUFBSSxDQUFNO0lBQ2xCLHNDQUFzQztJQUM5QixLQUFLLEdBQW1CLEVBQUUsQ0FBQztJQUMzQixhQUFhLENBQWM7SUFDM0Isb0JBQW9CLEdBQUcsS0FBSyxDQUFDO0lBRXJDLFlBQVksYUFBa0I7UUFDNUIsdUVBQXVFO1FBQ3ZFLHNFQUFzRTtRQUN0RSxzRUFBc0U7UUFDdEUsK0NBQStDO1FBQy9DLElBQUksQ0FBQyxJQUFJLEdBQUcsYUFBYSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNILGVBQWU7UUFDYixPQUFPLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQW9CRztJQUNILFdBQVcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNO1FBQ3JDLE1BQU0sR0FBRyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEQsbUJBQW1CLENBQUMsR0FBRyxFQUFFLE9BQXNCLEVBQUUsU0FBd0IsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNwRixDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsTUFBb0I7UUFDekIsTUFBTSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUMvQixZQUFZLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSTtRQUNGLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELGtDQUFrQztJQUNsQyxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQzNCLENBQUM7SUFFRCx3RUFBd0U7SUFDeEUsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFRCx3RkFBd0Y7SUFDeEYsV0FBVyxDQUFDLFFBQWdCLEVBQUUsU0FBNEI7UUFDeEQsSUFBSSxJQUFJLENBQUMsb0JBQW9CO1lBQUUsT0FBTztRQUN0QyxJQUFJLENBQUMsYUFBYSxLQUFLLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRCwrRkFBK0Y7SUFDL0YsZUFBZSxDQUFDLEtBQWE7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFDMUMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JHLENBQUM7SUFFRCw4Q0FBOEM7SUFDOUMsS0FBSztRQUNILElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLHdFQUF3RTtRQUN4RSxzRUFBc0U7UUFDdEUsdUVBQXVFO1FBQ3ZFLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO1FBQy9CLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7SUFDbkMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBFdmVudExvZyDigJQgVGltZS10cmF2ZWwgc25hcHNob3Qgc3RvcmFnZSBmb3IgZmxvd2NoYXJ0IGV4ZWN1dGlvblxuICpcbiAqIExpa2UgZ2l0IGhpc3Rvcnk6IHN0b3JlcyBjb21taXQgYnVuZGxlcyAoZGlmZnMpLCBub3QgZnVsbCBzbmFwc2hvdHMuXG4gKlxuICogVEhFIFJFQ09SRCBJUyBJTU1VVEFCTEUgRlJPTSBgcmVjb3JkYCAoRjMsIHJ1bGluZyBSMykuIEV2ZXJ5IGJ1bmRsZSBpcyBkZWVwLWZyb3plbiBhcyBpdCBpc1xuICogcmVjb3JkZWQg4oCUIHRoZSBidW5kbGUsIGBvdmVyd3JpdGVgIGFuZCBgdXBkYXRlc2AgYXQgZXZlcnkgZGVwdGgsIHRoZSB0cmFjZSBhbmQgZWFjaCByb3csIHRoZVxuICogcm93J3MgYHJlYWRLZXlzYCwgYHJlZGFjdGVkUGF0aHNgLCBgdGFnc2AsIGB1bnRyYWNrZWRTb3VyY2VzYCDigJQgc28gYSBob2xkZXIgb2YgYSBzbmFwc2hvdCBjYW4gbm9cbiAqIGxvbmdlciByZXdyaXRlIHRoZSBoaXN0b3J5IGV2ZXJ5IGxhdGVyIGFuc3dlciBpcyBmb2xkZWQgZnJvbTogYW4gYXNzaWdubWVudCBpbnRvIGEgYnVuZGxlIHRocm93c1xuICogYSBgVHlwZUVycm9yYCBpbiBzdHJpY3QgY29kZS4gU2FmZSBiZWNhdXNlIG5vdGhpbmcgb3V0c2lkZSB0aGUgbG9nIGhvbGRzIGEgYnVuZGxlJ3MgY29udGFpbmVyczpcbiAqIHRoZSBsb2cncyBwYXlsb2FkIGlzIHRoZSBjb21taXQncyBvd24gY29weSAoYFN0YWdlQ29udGV4dCDCtyBjb21taXRgIGhhbmRzIGl0IHRoZSBvdXRwdXQgb2ZcbiAqIGBzY3J1YlBhdGNoYCksIGFuZCBsaXZlIHN0YXRlLCB0aGUgcmVkYWN0ZWQgbWlycm9yIGFuZCB3cml0ZSByZXRlbnRpb24gZWFjaCB0YWtlIHRoZWlyIG93biBjb3B5XG4gKiAoYHZlcmJzLnRzIMK3IGZvbGRSb3dzYCBkZXRhY2hlcywgYFN0YWdlQ29udGV4dCDCtyByZXRhaW5lZEZvcm1gIGNsb25lcykg4oCUIHBpbm5lZCBieVxuICogdGVzdC9saWIvbWVtb3J5L3Byb3BlcnR5L3JlY29yZC1yZWFjaGFiaWxpdHkucHJvcGVydHkudGVzdC50cy5cbiAqXG4gKiBXaGF0IGBPYmplY3QuZnJlZXplYCBjYW5ub3Qgc2VhbCDigJQgYSBEYXRlJ3MgdGltZSwgYSBNYXAncyBvciBTZXQncyBlbnRyaWVzLCBhIGJ1ZmZlcidzIGJ5dGVzLCBhXG4gKiBSZWdFeHAsIGFuIEVycm9yJ3Mgc3RhY2sg4oCUIGlzIG5ldmVyIGhhbmRlZCBvdXQgdG8gYSByZWFkZXIgKDkuNDQuMik6IGByZWNvcmRgIHJlbWVtYmVycyB0aGF0IGFcbiAqIGJ1bmRsZSBob2xkcyBzdWNoIGEgdmFsdWUgKGBjYXB0dXJlL2ZyZWV6ZS50cyDCtyBmcmVlemVSZWNvcmRgKSwgYW5kIGBsaXN0KClgIOKAlCBsaWtlIHRoZSBwdWJsaWNcbiAqIHNuYXBzaG90LCBgcnVubmVyL3NuYXBzaG90LnRzIMK3IHNlcnZlZFNuYXBzaG90YCDigJQgc2VydmVzIHRoYXQgYnVuZGxlIGFzIGEgY29weSBvZiBpdHMgb3BlbiBwYXRoc1xuICogKGBzZXJ2ZVJlY29yZGAsIG1hcHBlZCBhdCBpdHMgZmlyc3Qgc2VydmUpOiBmcmVzaCBmcm96ZW4gY29udGFpbmVycyBkb3duIHRvIGVhY2ggc3VjaCB2YWx1ZSwgYVxuICogZnJlc2ggY29weSBvZiBpdCwgZXZlcnkgb3RoZXIgcGFydCB0aGUgbG9nJ3Mgb3duLiBBIHJlYWRlciBlZGl0cyBvbmx5IGl0cyBvd24gY29weTsgZXZlcnkgbGF0ZXJcbiAqIHNlcnZlIHJlYWRzIHRoZSByZWNvcmQgYXMgcmVjb3JkZWQuIGByZWNvcmRlZCgpYCBpcyB0aGUgZW5naW5lJ3Mgb3duLCB1bnNlcnZlZCByZWFkLiBOYW1lZCBob2xlczogYW4gb2JqZWN0IGh1bmcgb24gYW4gYXJyYXkgRVhQQU5ETyAoYXJyYXlzIGFyZSB3YWxrZWRcbiAqIGJ5IGluZGV4IOKAlCB0aGUgYCdpbmRpY2VzJ2Agd2Fsaywgd2hpY2gga2VlcHMgdGhlIGZyZWV6ZSBpbnNpZGUgaXRzIGJ1ZGdldDsgYW4gZXhwYW5kbyBpcyBvdXQgb2ZcbiAqIGNvbnRyYWN0IGZvciBzdGF0ZSkgYW5kIGEgYFNoYXJlZEFycmF5QnVmZmVyYCAoZXZlcnkgY29weSBzaGFyZXMgaXRzIG1lbW9yeSkuIEEgZnJvemVuIFJlZ0V4cCdzXG4gKiBgbGFzdEluZGV4YCBpcyByZWFkLW9ubHksIHNvIGEgYC9nYCBvciBgL3lgIHJlZ2V4IHJlYWQgZnJvbSBhIGJ1bmRsZSB0aHJvd3Mgd2hlbiBgZXhlY2Agb3JcbiAqIGByZXBsYWNlYCBhZHZhbmNlIGl0LlxuICovXG5cbmltcG9ydCB7IGZyZWV6ZVJlY29yZCwgc2VydmVSZWNvcmQgfSBmcm9tICcuLi9jYXB0dXJlL2ZyZWV6ZS5qcyc7XG5pbXBvcnQgdHlwZSB7IEVtaXRTb3VyY2VQb3NpdGlvbiwgTG9nQWRkcmVzcyB9IGZyb20gJy4vZXZlbnRQb3NpdGlvbi5qcyc7XG5pbXBvcnQgdHlwZSB7IENvbW1pdEJ1bmRsZSwgTWVtb3J5UGF0Y2ggfSBmcm9tICcuL3R5cGVzLmpzJztcbmltcG9ydCB7IGFwcGx5U21hcnRNZXJnZUludG8gfSBmcm9tICcuL3V0aWxzLmpzJztcblxuZXhwb3J0IGNsYXNzIEV2ZW50TG9nIHtcbiAgLyoqIEJhc2Ugc25hcHNob3QgQkVGT1JFIHRoZSBmaXJzdCBzdGFnZSBtdXRhdGVzIGFueXRoaW5nLiAqL1xuICBwcml2YXRlIGJhc2U6IGFueTtcbiAgLyoqIE9yZGVyZWQgbGlzdCBvZiBjb21taXQgYnVuZGxlcy4gKi9cbiAgcHJpdmF0ZSBzdGVwczogQ29tbWl0QnVuZGxlW10gPSBbXTtcbiAgcHJpdmF0ZSBzb3VyY2VBZGRyZXNzPzogTG9nQWRkcmVzcztcbiAgcHJpdmF0ZSBzb3VyY2VBZGRyZXNzUmV0aXJlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKGluaXRpYWxNZW1vcnk6IGFueSkge1xuICAgIC8vIE5vcm1hbGlzZWQgdG8gYW4gb2JqZWN0OiB0aGUgYmFzZSBpcyBhIFNUQVRFLCBhbmQgZXZlcnkgZm9sZCBvdmVyIGl0XG4gICAgLy8gKGBtYXRlcmlhbGlzZWAsIGBzdGF0ZUF0YCkgYXBwbGllcyBwYXRoIHdyaXRlcyB0byBpdC4gYHVuZGVmaW5lZGAg4oCUXG4gICAgLy8gd2hhdCBhIHJ1biB3aXRoIG5vIGBpbml0aWFsQ29udGV4dGAgdXNlZCB0byBzdG9yZSBoZXJlIOKAlCBtYWRlIGV2ZXJ5XG4gICAgLy8gb25lIG9mIHRob3NlIGZvbGRzIHRocm93IG9uIHRoZSBmaXJzdCBgc2V0YC5cbiAgICB0aGlzLmJhc2UgPSBpbml0aWFsTWVtb3J5ID09PSB1bmRlZmluZWQgPyB7fSA6IHN0cnVjdHVyZWRDbG9uZShpbml0aWFsTWVtb3J5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZm9sZCBCQVNFIOKAlCB0aGUgc3RhdGUgYXMgaXQgc3Rvb2QgYmVmb3JlIHRoZSBmaXJzdCBjb21taXQuXG4gICAqXG4gICAqIFRoaXMgaXMgdGhlIG90aGVyIGhhbGYgb2YgdGhlIGNvbW1pdCBsb2c6IGJ1bmRsZXMgYXJlIERJRkZTLCBzbyBhIGxvZ1xuICAgKiBhbG9uZSBjYW5ub3QgcmVjb25zdHJ1Y3Qgc3RhdGUgdGhhdCB3YXMgc2VlZGVkIGJlZm9yZSB0aGUgcnVuIChhblxuICAgKiBleGVjdXRvciBgaW5pdGlhbENvbnRleHRgLCBgZGVmYXVsdFZhbHVlc0ZvckNvbnRleHRgLCBhIHJlc3VtZSdzXG4gICAqIGBjaGVja3BvaW50LnNoYXJlZFN0YXRlYCwgYSBzdWJmbG93J3MgYGlucHV0TWFwcGVyYCBzZWVkKS4gVHJhdmVsbGluZ1xuICAgKiB3aXRoIHRoZSBsb2cg4oCUIGBSdW50aW1lU25hcHNob3QuaW5pdGlhbFN0YXRlYCDigJQgaXMgd2hhdCBsZXRzIGFuIE9GRkxJTkVcbiAgICogY29uc3VtZXIgZm9sZDsgd2l0aG91dCBpdCB0aGUgaG9uZXN0IGFuc3dlciBpcyBhIHBhcnRpYWwgb25lXG4gICAqIChgc3RhdGVBdGAncyBgYmFzaXM6ICdsb2ctb25seSdgKS5cbiAgICpcbiAgICogUmV0dXJucyBhIGZyZXNoIGRldGFjaGVkIGNsb25lIG9uIGV2ZXJ5IGNhbGwg4oCUIHRoZSBjYWxsZXIgb3ducyBpdC5cbiAgICovXG4gIGdldEluaXRpYWxTdGF0ZSgpOiBhbnkge1xuICAgIHJldHVybiBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5iYXNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNvbnN0cnVjdHMgdGhlIGZ1bGwgc3RhdGUgYXQgYW55IGdpdmVuIHN0ZXAuXG4gICAqIFJlcGxheXMgY29tbWl0cyBmcm9tIHRoZSBiZWdpbm5pbmcg4oCUIE8obikgYnV0IGxvdyBtZW1vcnkgZm9vdHByaW50LlxuICAgKlxuICAgKiBJTkRFWCBDT05WRU5USU9OIOKAlCBgc3RlcElkeGAgaXMgRVhDTFVTSVZFOiBgbWF0ZXJpYWxpc2UoMylgIGZvbGRzIGNvbW1pdHNcbiAgICogMCwgMSBhbmQgMi4gYHN0YXRlQXQoc291cmNlLCBjb21taXRJZHgpYCAoZm9vdHByaW50anMvdHJhY2UpIGZvbGRzIHRoZVxuICAgKiBzYW1lIGxvZyBidXQgaXRzIGBjb21taXRJZHhgIGlzIElOQ0xVU0lWRSwgYmVjYXVzZSBhIHJlYWRlcidzIGN1cnNvciBhc2tzXG4gICAqIFwidGhlIHN0YXRlIEFUIHRoaXMgc3RvcFwiLCB3aGljaCBtdXN0IGluY2x1ZGUgdGhhdCBzdG9wJ3Mgb3duIGNvbW1pdC4gVHdvXG4gICAqIGZvbGRzIG92ZXIgb25lIGxvZyB3aXRoIG9wcG9zaXRlIGNvbnZlbnRpb25zOiBjaGVjayB3aGljaCBvbmUgeW91IGhvbGQuXG4gICAqXG4gICAqIE9uZSBjbG9uZSBvZiB0aGUgYmFzZSBwZXIgY2FsbCwgdGhlbiBldmVyeSBidW5kbGUgcmVwbGF5ZWQgSU5UTyB0aGF0XG4gICAqIHByaXZhdGUgY29weSAoYGFwcGx5U21hcnRNZXJnZUludG9gIOKAlCB0aGUgbGl2ZSBjb21taXQncyBjb3B5LW9uLXdyaXRlIGxhd1xuICAgKiBiZWxvdyB0aGUgcm9vdCwgOS4yOS4wLCBzbyB0aGUgZm9sZCBhbmQgdGhlIGxpdmUgc3RhdGUgYWdyZWUgYXQgZXZlcnlcbiAgICogcGF0aCkuIFRoZSByZXN1bHQgaXMgdGhlIGNhbGxlcidzOiBpdCBzaGFyZXMgbm90aGluZyB3aXRoIHRoZSBiYXNlIG9yXG4gICAqIHRoZSBsb2cuXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIFNpbmNlIDkuMzMuMCDigJQgdXNlIGBzdGF0ZUF0YCBmcm9tIGBmb290cHJpbnRqcy90cmFjZWAsIHdoaWNoIGZvbGRzIHRoZSBzYW1lIGxvZ1xuICAgKiBmcm9tIHRoZSBzYW1lIGJhc2UgKGBSdW50aW1lU25hcHNob3QuaW5pdGlhbFN0YXRlYCkgYW5kIHNheXMgaG93IGl0IHdhcyBkZXJpdmVkIChgYmFzaXNgKS5cbiAgICogTm90aGluZyBpbiB0aGUgbGlicmFyeSBjYWxscyB0aGlzOyBpdCBzdGF5cyBmb3Igb25lIG1pbm9yIGFuZCBpcyB0aGVuIHJlbW92ZWQuIE1pbmQgdGhlXG4gICAqIGluZGV4OiBgbWF0ZXJpYWxpc2UobilgIGZvbGRzIGNvbW1pdHMgYDAuLm4tMWAsIGBzdGF0ZUF0KHNvdXJjZSwgbiAtIDEpYCB0aGUgc2FtZSBjb21taXRzLlxuICAgKi9cbiAgbWF0ZXJpYWxpc2Uoc3RlcElkeCA9IHRoaXMuc3RlcHMubGVuZ3RoKTogYW55IHtcbiAgICBjb25zdCBvdXQgPSBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5iYXNlKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ZXBJZHg7IGkrKykge1xuICAgICAgY29uc3QgeyBvdmVyd3JpdGUsIHVwZGF0ZXMsIHRyYWNlIH0gPSB0aGlzLnN0ZXBzW2ldO1xuICAgICAgYXBwbHlTbWFydE1lcmdlSW50byhvdXQsIHVwZGF0ZXMgYXMgTWVtb3J5UGF0Y2gsIG92ZXJ3cml0ZSBhcyBNZW1vcnlQYXRjaCwgdHJhY2UpO1xuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcnNpc3RzIGEgY29tbWl0IGJ1bmRsZSBmb3IgYSBmaW5pc2hlZCBzdGFnZSwgYW5kIEZSRUVaRVMgaXQgKHNlZSB0aGUgbW9kdWxlIGRvYyk6IHRoZSBidW5kbGVcbiAgICogaXMgc3RhbXBlZCB3aXRoIGl0cyBwb3NpdGlvbiwgdGhlbiBkZWVwLWZyb3plbiwgdGhlbiBhcHBlbmRlZC4gVGhlIGVuZ2luZSBoYW5kcyBpdCBhIGJ1bmRsZVxuICAgKiBidWlsdCBmb3IgdGhlIGxvZyBhbG9uZTsgYSBjYWxsZXIgb2YgdGhpcyBjbGFzcyAoYGZvb3RwcmludGpzL2FkdmFuY2VkYCkgaGFuZHMgb3ZlciBhIGJ1bmRsZSBpdFxuICAgKiB3aWxsIG5vIGxvbmdlciBlZGl0IOKAlCBpdHMgb3duIG9iamVjdCBpcyB0aGUgb25lIGZyb3plbi5cbiAgICovXG4gIHJlY29yZChidW5kbGU6IENvbW1pdEJ1bmRsZSk6IHZvaWQge1xuICAgIGJ1bmRsZS5pZHggPSB0aGlzLnN0ZXBzLmxlbmd0aDtcbiAgICBmcmVlemVSZWNvcmQoYnVuZGxlLCAnaW5kaWNlcycpO1xuICAgIHRoaXMuc3RlcHMucHVzaChidW5kbGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV2ZXJ5IHJlY29yZGVkIGNvbW1pdCBidW5kbGUsIEFTIFNFUlZFRCAoOS40NC4yKTogYSBuZXcgYXJyYXkgZWFjaCBjYWxsOyBhIGJ1bmRsZSBmcmVlemluZyBzZWFsZWRcbiAgICogd2hvbGUgaXMgdGhlIGxvZydzIG93biAoZnJvemVuKSBvYmplY3QsIG9uZSBob2xkaW5nIGEgRGF0ZSwgTWFwLCBidWZmZXIg4oCmIGlzIGEgY29weSBvZiBpdHMgb3BlblxuICAgKiBwYXRocyAoYGNhcHR1cmUvZnJlZXplLnRzIMK3IHNlcnZlUmVjb3JkYCkg4oCUIHRoZSByZWFkZXIncyBvd24sIHNvIG5vIGVkaXQgcmVhY2hlcyB0aGUgbG9nLlxuICAgKi9cbiAgbGlzdCgpOiBDb21taXRCdW5kbGVbXSB7XG4gICAgcmV0dXJuIHRoaXMuc3RlcHMubWFwKHNlcnZlUmVjb3JkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWwgVGhlIGJ1bmRsZXMgYXMgdGhlIGxvZyBob2xkcyB0aGVtIOKAlCBlYWNoIGZyb3plbiwgTk9UIHNlcnZlZCDigJQgaW4gYSBuZXcgYXJyYXksIHNvIGEgaG9sZGVyJ3NcbiAgICogYHNwbGljZWAgcmVhY2hlcyBvbmx5IGl0cyBvd24uIEZvciB0aGUgZW5naW5lJ3Mgb3duIHNuYXBzaG90IChgRXhlY3V0aW9uUnVudGltZSDCtyBnZXRTbmFwc2hvdGAsIHdoaWNoXG4gICAqIGEgc3ViZmxvdyBtb3VudCB0YWtlcyBvbmNlIHBlciBtb3VudCksIHNvIHRoZSBydW4gc2VydmVzIG5vdGhpbmc7IGEgcmVhZGVyIGlzIHNlcnZlZCBieSBgbGlzdCgpYCBhbmRcbiAgICogYGdldFNuYXBzaG90KCkuY29tbWl0TG9nYC4gQSBrbm93biBvcGVuIGRvb3IgKENIQU5HRUxPRyA5LjQ0LjIpOiBhIGhvbGRlciBvZiB0aGVzZSBidW5kbGVzIGNhbiBzdGlsbFxuICAgKiBlZGl0IGEgRGF0ZSwgTWFwIG9yIGJ1ZmZlciBpbnNpZGUgdGhlbS5cbiAgICovXG4gIHJlY29yZGVkKCk6IENvbW1pdEJ1bmRsZVtdIHtcbiAgICByZXR1cm4gdGhpcy5zdGVwcy5zbGljZSgpO1xuICB9XG5cbiAgLyoqIE51bWJlciBvZiByZWNvcmRlZCBjb21taXRzLiAqL1xuICBnZXQgbGVuZ3RoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3RlcHMubGVuZ3RoO1xuICB9XG5cbiAgLyoqIEltbXV0YWJsZSBpZGVudGl0eSBvZiB0aGlzIGxvZywgYWJzZW50IHVudGlsIHRoZSBlbmdpbmUgYmluZHMgaXQuICovXG4gIGdldCBhZGRyZXNzKCk6IExvZ0FkZHJlc3MgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnNvdXJjZUFkZHJlc3M7XG4gIH1cblxuICAvKiogQGludGVybmFsIEJpbmQgb25jZTsgcmVzdW1pbmcgdGhlIHNhbWUgbG9nIG11c3Qgbm90IHJlbmFtZSBpdHMgZWFybGllciBwb3NpdGlvbnMuICovXG4gIGJpbmRBZGRyZXNzKGxvZ1J1bklkOiBzdHJpbmcsIGRyaWxsUGF0aDogcmVhZG9ubHkgc3RyaW5nW10pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zb3VyY2VBZGRyZXNzUmV0aXJlZCkgcmV0dXJuO1xuICAgIHRoaXMuc291cmNlQWRkcmVzcyA/Pz0gT2JqZWN0LmZyZWV6ZSh7IGxvZ1J1bklkLCBkcmlsbFBhdGg6IE9iamVjdC5mcmVlemUoWy4uLmRyaWxsUGF0aF0pIH0pO1xuICB9XG5cbiAgLyoqIE8oMSkgc291cmNlLXRpbWUgY2FwdHVyZS4gTm8gY291bnRlciwgb2JzZXJ2ZXIgYm9va2tlZXBpbmcsIG9yIGZ1dHVyZSBjb21taXQgcHJlZGljdGlvbi4gKi9cbiAgY2FwdHVyZVBvc2l0aW9uKHJ1bklkOiBzdHJpbmcpOiBFbWl0U291cmNlUG9zaXRpb24gfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy5zb3VyY2VBZGRyZXNzKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiBPYmplY3QuZnJlZXplKHsgcnVuSWQsIC4uLnRoaXMuc291cmNlQWRkcmVzcywgY29tbWl0dGVkVGhyb3VnaElkeDogdGhpcy5zdGVwcy5sZW5ndGggLSAxIH0pO1xuICB9XG5cbiAgLyoqIFdpcGVzIGhpc3RvcnkgKHVzZWZ1bCBmb3IgdGVzdCByZXNldHMpLiAqL1xuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLnN0ZXBzID0gW107XG4gICAgLy8gQSByZXNldCBwcmVmaXggY2Fubm90IHJldXNlIG9sZCBjb29yZGluYXRlcywgZXZlbiBpZiBhbm90aGVyIHN0YWdlIG9mXG4gICAgLy8gdGhlIFNBTUUgbGVnIGJpbmRzIGl0IGFnYWluLiBLZWVwIGNsZWFyJ3MgZGF0YSBiZWhhdmlvciwgYnV0IHJldGlyZVxuICAgIC8vIGFkZHJlc3NpbmcgZm9yIHRoaXMgbG9nOyBrbm93biBjb29yZGluYXRlcyByZXF1aXJlIGEgZnJlc2ggRXZlbnRMb2cuXG4gICAgdGhpcy5zb3VyY2VBZGRyZXNzID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc291cmNlQWRkcmVzc1JldGlyZWQgPSB0cnVlO1xuICB9XG59XG4iXX0=
|
|
148
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRMb2cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL21lbW9yeS9FdmVudExvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQkc7QUFFSCxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR2pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVqRCxNQUFNLE9BQU8sUUFBUTtJQUNuQiw2REFBNkQ7SUFDckQsSUFBSSxDQUFNO0lBQ2xCLHNDQUFzQztJQUM5QixLQUFLLEdBQW1CLEVBQUUsQ0FBQztJQUMzQixhQUFhLENBQWM7SUFDM0Isb0JBQW9CLEdBQUcsS0FBSyxDQUFDO0lBRXJDLFlBQVksYUFBa0I7UUFDNUIsdUVBQXVFO1FBQ3ZFLHNFQUFzRTtRQUN0RSxzRUFBc0U7UUFDdEUsK0NBQStDO1FBQy9DLElBQUksQ0FBQyxJQUFJLEdBQUcsYUFBYSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNILGVBQWU7UUFDYixPQUFPLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQW9CRztJQUNILFdBQVcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNO1FBQ3JDLE1BQU0sR0FBRyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEQsbUJBQW1CLENBQUMsR0FBRyxFQUFFLE9BQXNCLEVBQUUsU0FBd0IsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNwRixDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsTUFBb0I7UUFDekIsTUFBTSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUMvQixZQUFZLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSTtRQUNGLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELGtDQUFrQztJQUNsQyxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQzNCLENBQUM7SUFFRCx3RUFBd0U7SUFDeEUsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFRCx3RkFBd0Y7SUFDeEYsV0FBVyxDQUFDLFFBQWdCLEVBQUUsU0FBNEI7UUFDeEQsSUFBSSxJQUFJLENBQUMsb0JBQW9CO1lBQUUsT0FBTztRQUN0QyxJQUFJLENBQUMsYUFBYSxLQUFLLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRCwrRkFBK0Y7SUFDL0YsZUFBZSxDQUFDLEtBQWE7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFDMUMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JHLENBQUM7SUFFRCw4Q0FBOEM7SUFDOUMsS0FBSztRQUNILElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLHdFQUF3RTtRQUN4RSxzRUFBc0U7UUFDdEUsdUVBQXVFO1FBQ3ZFLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO1FBQy9CLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7SUFDbkMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBFdmVudExvZyDigJQgVGltZS10cmF2ZWwgc25hcHNob3Qgc3RvcmFnZSBmb3IgZmxvd2NoYXJ0IGV4ZWN1dGlvblxuICpcbiAqIExpa2UgZ2l0IGhpc3Rvcnk6IHN0b3JlcyBjb21taXQgYnVuZGxlcyAoZGlmZnMpLCBub3QgZnVsbCBzbmFwc2hvdHMuXG4gKlxuICogVEhFIFJFQ09SRCBJUyBJTU1VVEFCTEUgRlJPTSBgcmVjb3JkYCAoRjMsIHJ1bGluZyBSMykuIEV2ZXJ5IGJ1bmRsZSBpcyBkZWVwLWZyb3plbiBhcyBpdCBpc1xuICogcmVjb3JkZWQg4oCUIHRoZSBidW5kbGUsIGBvdmVyd3JpdGVgIGFuZCBgdXBkYXRlc2AgYXQgZXZlcnkgZGVwdGgsIHRoZSB0cmFjZSBhbmQgZWFjaCByb3csIHRoZVxuICogcm93J3MgYHJlYWRLZXlzYCwgYHJlZGFjdGVkUGF0aHNgLCBgdGFnc2AsIGB1bnRyYWNrZWRTb3VyY2VzYCDigJQgc28gYSBob2xkZXIgb2YgYSBzbmFwc2hvdCBjYW4gbm9cbiAqIGxvbmdlciByZXdyaXRlIHRoZSBoaXN0b3J5IGV2ZXJ5IGxhdGVyIGFuc3dlciBpcyBmb2xkZWQgZnJvbTogYW4gYXNzaWdubWVudCBpbnRvIGEgYnVuZGxlIHRocm93c1xuICogYSBgVHlwZUVycm9yYCBpbiBzdHJpY3QgY29kZS4gU2FmZSBiZWNhdXNlIG5vdGhpbmcgb3V0c2lkZSB0aGUgbG9nIGhvbGRzIGEgYnVuZGxlJ3MgY29udGFpbmVyczpcbiAqIHRoZSBsb2cncyBwYXlsb2FkIGlzIHRoZSBjb21taXQncyBvd24gY29weSAoYHJlY29yZENvbW1pdGAgaGFuZHMgaXQgdGhlIG91dHB1dCBvZlxuICogYHNjcnViUGF0Y2hgKSwgYW5kIGxpdmUgc3RhdGUsIHRoZSByZWRhY3RlZCBtaXJyb3IgYW5kIHdyaXRlIHJldGVudGlvbiBlYWNoIHRha2UgdGhlaXIgb3duIGNvcHlcbiAqIChgdmVyYnMudHMgwrcgZm9sZFJvd3NgIGRldGFjaGVzLCBgU3RhZ2VDb250ZXh0IMK3IHJldGFpbmVkRm9ybWAgY2xvbmVzKSDigJQgcGlubmVkIGJ5XG4gKiB0ZXN0L2xpYi9tZW1vcnkvcHJvcGVydHkvcmVjb3JkLXJlYWNoYWJpbGl0eS5wcm9wZXJ0eS50ZXN0LnRzLlxuICpcbiAqIFdoYXQgYE9iamVjdC5mcmVlemVgIGNhbm5vdCBzZWFsIOKAlCBhIERhdGUncyB0aW1lLCBhIE1hcCdzIG9yIFNldCdzIGVudHJpZXMsIGEgYnVmZmVyJ3MgYnl0ZXMsIGFcbiAqIFJlZ0V4cCwgYW4gRXJyb3IncyBzdGFjayDigJQgaXMgbmV2ZXIgaGFuZGVkIG91dCB0byBhIHJlYWRlciAoOS40NC4yKTogYHJlY29yZGAgcmVtZW1iZXJzIHRoYXQgYVxuICogYnVuZGxlIGhvbGRzIHN1Y2ggYSB2YWx1ZSAoYGNhcHR1cmUvZnJlZXplLnRzIMK3IGZyZWV6ZVJlY29yZGApLCBhbmQgYGxpc3QoKWAg4oCUIGxpa2UgdGhlIHB1YmxpY1xuICogc25hcHNob3QsIGBydW5uZXIvc25hcHNob3QudHMgwrcgc2VydmVkU25hcHNob3RgIOKAlCBzZXJ2ZXMgdGhhdCBidW5kbGUgYXMgYSBjb3B5IG9mIGl0cyBvcGVuIHBhdGhzXG4gKiAoYHNlcnZlUmVjb3JkYCwgbWFwcGVkIGF0IGl0cyBmaXJzdCBzZXJ2ZSk6IGZyZXNoIGZyb3plbiBjb250YWluZXJzIGRvd24gdG8gZWFjaCBzdWNoIHZhbHVlLCBhXG4gKiBmcmVzaCBjb3B5IG9mIGl0LCBldmVyeSBvdGhlciBwYXJ0IHRoZSBsb2cncyBvd24uIEEgcmVhZGVyIGVkaXRzIG9ubHkgaXRzIG93biBjb3B5OyBldmVyeSBsYXRlclxuICogc2VydmUgcmVhZHMgdGhlIHJlY29yZCBhcyByZWNvcmRlZC4gYHJlY29yZGVkKClgIGlzIHRoZSBlbmdpbmUncyBvd24sIHVuc2VydmVkIHJlYWQuIE5hbWVkIGhvbGVzOiBhbiBvYmplY3QgaHVuZyBvbiBhbiBhcnJheSBFWFBBTkRPIChhcnJheXMgYXJlIHdhbGtlZFxuICogYnkgaW5kZXgg4oCUIHRoZSBgJ2luZGljZXMnYCB3YWxrLCB3aGljaCBrZWVwcyB0aGUgZnJlZXplIGluc2lkZSBpdHMgYnVkZ2V0OyBhbiBleHBhbmRvIGlzIG91dCBvZlxuICogY29udHJhY3QgZm9yIHN0YXRlKSBhbmQgYSBgU2hhcmVkQXJyYXlCdWZmZXJgIChldmVyeSBjb3B5IHNoYXJlcyBpdHMgbWVtb3J5KS4gQSBmcm96ZW4gUmVnRXhwJ3NcbiAqIGBsYXN0SW5kZXhgIGlzIHJlYWQtb25seSwgc28gYSBgL2dgIG9yIGAveWAgcmVnZXggcmVhZCBmcm9tIGEgYnVuZGxlIHRocm93cyB3aGVuIGBleGVjYCBvclxuICogYHJlcGxhY2VgIGFkdmFuY2UgaXQuXG4gKi9cblxuaW1wb3J0IHsgZnJlZXplUmVjb3JkLCBzZXJ2ZVJlY29yZCB9IGZyb20gJy4uL2NhcHR1cmUvZnJlZXplLmpzJztcbmltcG9ydCB0eXBlIHsgRW1pdFNvdXJjZVBvc2l0aW9uLCBMb2dBZGRyZXNzIH0gZnJvbSAnLi9ldmVudFBvc2l0aW9uLmpzJztcbmltcG9ydCB0eXBlIHsgQ29tbWl0QnVuZGxlLCBNZW1vcnlQYXRjaCB9IGZyb20gJy4vdHlwZXMuanMnO1xuaW1wb3J0IHsgYXBwbHlTbWFydE1lcmdlSW50byB9IGZyb20gJy4vdXRpbHMuanMnO1xuXG5leHBvcnQgY2xhc3MgRXZlbnRMb2cge1xuICAvKiogQmFzZSBzbmFwc2hvdCBCRUZPUkUgdGhlIGZpcnN0IHN0YWdlIG11dGF0ZXMgYW55dGhpbmcuICovXG4gIHByaXZhdGUgYmFzZTogYW55O1xuICAvKiogT3JkZXJlZCBsaXN0IG9mIGNvbW1pdCBidW5kbGVzLiAqL1xuICBwcml2YXRlIHN0ZXBzOiBDb21taXRCdW5kbGVbXSA9IFtdO1xuICBwcml2YXRlIHNvdXJjZUFkZHJlc3M/OiBMb2dBZGRyZXNzO1xuICBwcml2YXRlIHNvdXJjZUFkZHJlc3NSZXRpcmVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoaW5pdGlhbE1lbW9yeTogYW55KSB7XG4gICAgLy8gTm9ybWFsaXNlZCB0byBhbiBvYmplY3Q6IHRoZSBiYXNlIGlzIGEgU1RBVEUsIGFuZCBldmVyeSBmb2xkIG92ZXIgaXRcbiAgICAvLyAoYG1hdGVyaWFsaXNlYCwgYHN0YXRlQXRgKSBhcHBsaWVzIHBhdGggd3JpdGVzIHRvIGl0LiBgdW5kZWZpbmVkYCDigJRcbiAgICAvLyB3aGF0IGEgcnVuIHdpdGggbm8gYGluaXRpYWxDb250ZXh0YCB1c2VkIHRvIHN0b3JlIGhlcmUg4oCUIG1hZGUgZXZlcnlcbiAgICAvLyBvbmUgb2YgdGhvc2UgZm9sZHMgdGhyb3cgb24gdGhlIGZpcnN0IGBzZXRgLlxuICAgIHRoaXMuYmFzZSA9IGluaXRpYWxNZW1vcnkgPT09IHVuZGVmaW5lZCA/IHt9IDogc3RydWN0dXJlZENsb25lKGluaXRpYWxNZW1vcnkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBmb2xkIEJBU0Ug4oCUIHRoZSBzdGF0ZSBhcyBpdCBzdG9vZCBiZWZvcmUgdGhlIGZpcnN0IGNvbW1pdC5cbiAgICpcbiAgICogVGhpcyBpcyB0aGUgb3RoZXIgaGFsZiBvZiB0aGUgY29tbWl0IGxvZzogYnVuZGxlcyBhcmUgRElGRlMsIHNvIGEgbG9nXG4gICAqIGFsb25lIGNhbm5vdCByZWNvbnN0cnVjdCBzdGF0ZSB0aGF0IHdhcyBzZWVkZWQgYmVmb3JlIHRoZSBydW4gKGFuXG4gICAqIGV4ZWN1dG9yIGBpbml0aWFsQ29udGV4dGAsIGBkZWZhdWx0VmFsdWVzRm9yQ29udGV4dGAsIGEgcmVzdW1lJ3NcbiAgICogYGNoZWNrcG9pbnQuc2hhcmVkU3RhdGVgLCBhIHN1YmZsb3cncyBgaW5wdXRNYXBwZXJgIHNlZWQpLiBUcmF2ZWxsaW5nXG4gICAqIHdpdGggdGhlIGxvZyDigJQgYFJ1bnRpbWVTbmFwc2hvdC5pbml0aWFsU3RhdGVgIOKAlCBpcyB3aGF0IGxldHMgYW4gT0ZGTElORVxuICAgKiBjb25zdW1lciBmb2xkOyB3aXRob3V0IGl0IHRoZSBob25lc3QgYW5zd2VyIGlzIGEgcGFydGlhbCBvbmVcbiAgICogKGBzdGF0ZUF0YCdzIGBiYXNpczogJ2xvZy1vbmx5J2ApLlxuICAgKlxuICAgKiBSZXR1cm5zIGEgZnJlc2ggZGV0YWNoZWQgY2xvbmUgb24gZXZlcnkgY2FsbCDigJQgdGhlIGNhbGxlciBvd25zIGl0LlxuICAgKi9cbiAgZ2V0SW5pdGlhbFN0YXRlKCk6IGFueSB7XG4gICAgcmV0dXJuIHN0cnVjdHVyZWRDbG9uZSh0aGlzLmJhc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlY29uc3RydWN0cyB0aGUgZnVsbCBzdGF0ZSBhdCBhbnkgZ2l2ZW4gc3RlcC5cbiAgICogUmVwbGF5cyBjb21taXRzIGZyb20gdGhlIGJlZ2lubmluZyDigJQgTyhuKSBidXQgbG93IG1lbW9yeSBmb290cHJpbnQuXG4gICAqXG4gICAqIElOREVYIENPTlZFTlRJT04g4oCUIGBzdGVwSWR4YCBpcyBFWENMVVNJVkU6IGBtYXRlcmlhbGlzZSgzKWAgZm9sZHMgY29tbWl0c1xuICAgKiAwLCAxIGFuZCAyLiBgc3RhdGVBdChzb3VyY2UsIGNvbW1pdElkeClgIChmb290cHJpbnRqcy90cmFjZSkgZm9sZHMgdGhlXG4gICAqIHNhbWUgbG9nIGJ1dCBpdHMgYGNvbW1pdElkeGAgaXMgSU5DTFVTSVZFLCBiZWNhdXNlIGEgcmVhZGVyJ3MgY3Vyc29yIGFza3NcbiAgICogXCJ0aGUgc3RhdGUgQVQgdGhpcyBzdG9wXCIsIHdoaWNoIG11c3QgaW5jbHVkZSB0aGF0IHN0b3AncyBvd24gY29tbWl0LiBUd29cbiAgICogZm9sZHMgb3ZlciBvbmUgbG9nIHdpdGggb3Bwb3NpdGUgY29udmVudGlvbnM6IGNoZWNrIHdoaWNoIG9uZSB5b3UgaG9sZC5cbiAgICpcbiAgICogT25lIGNsb25lIG9mIHRoZSBiYXNlIHBlciBjYWxsLCB0aGVuIGV2ZXJ5IGJ1bmRsZSByZXBsYXllZCBJTlRPIHRoYXRcbiAgICogcHJpdmF0ZSBjb3B5IChgYXBwbHlTbWFydE1lcmdlSW50b2Ag4oCUIHRoZSBsaXZlIGNvbW1pdCdzIGNvcHktb24td3JpdGUgbGF3XG4gICAqIGJlbG93IHRoZSByb290LCA5LjI5LjAsIHNvIHRoZSBmb2xkIGFuZCB0aGUgbGl2ZSBzdGF0ZSBhZ3JlZSBhdCBldmVyeVxuICAgKiBwYXRoKS4gVGhlIHJlc3VsdCBpcyB0aGUgY2FsbGVyJ3M6IGl0IHNoYXJlcyBub3RoaW5nIHdpdGggdGhlIGJhc2Ugb3JcbiAgICogdGhlIGxvZy5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgU2luY2UgOS4zMy4wIOKAlCB1c2UgYHN0YXRlQXRgIGZyb20gYGZvb3RwcmludGpzL3RyYWNlYCwgd2hpY2ggZm9sZHMgdGhlIHNhbWUgbG9nXG4gICAqIGZyb20gdGhlIHNhbWUgYmFzZSAoYFJ1bnRpbWVTbmFwc2hvdC5pbml0aWFsU3RhdGVgKSBhbmQgc2F5cyBob3cgaXQgd2FzIGRlcml2ZWQgKGBiYXNpc2ApLlxuICAgKiBOb3RoaW5nIGluIHRoZSBsaWJyYXJ5IGNhbGxzIHRoaXM7IGl0IHN0YXlzIGZvciBvbmUgbWlub3IgYW5kIGlzIHRoZW4gcmVtb3ZlZC4gTWluZCB0aGVcbiAgICogaW5kZXg6IGBtYXRlcmlhbGlzZShuKWAgZm9sZHMgY29tbWl0cyBgMC4ubi0xYCwgYHN0YXRlQXQoc291cmNlLCBuIC0gMSlgIHRoZSBzYW1lIGNvbW1pdHMuXG4gICAqL1xuICBtYXRlcmlhbGlzZShzdGVwSWR4ID0gdGhpcy5zdGVwcy5sZW5ndGgpOiBhbnkge1xuICAgIGNvbnN0IG91dCA9IHN0cnVjdHVyZWRDbG9uZSh0aGlzLmJhc2UpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RlcElkeDsgaSsrKSB7XG4gICAgICBjb25zdCB7IG92ZXJ3cml0ZSwgdXBkYXRlcywgdHJhY2UgfSA9IHRoaXMuc3RlcHNbaV07XG4gICAgICBhcHBseVNtYXJ0TWVyZ2VJbnRvKG91dCwgdXBkYXRlcyBhcyBNZW1vcnlQYXRjaCwgb3ZlcndyaXRlIGFzIE1lbW9yeVBhdGNoLCB0cmFjZSk7XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG4gIH1cblxuICAvKipcbiAgICogUGVyc2lzdHMgYSBjb21taXQgYnVuZGxlIGZvciBhIGZpbmlzaGVkIHN0YWdlLCBhbmQgRlJFRVpFUyBpdCAoc2VlIHRoZSBtb2R1bGUgZG9jKTogdGhlIGJ1bmRsZVxuICAgKiBpcyBzdGFtcGVkIHdpdGggaXRzIHBvc2l0aW9uLCB0aGVuIGRlZXAtZnJvemVuLCB0aGVuIGFwcGVuZGVkLiBUaGUgZW5naW5lIGhhbmRzIGl0IGEgYnVuZGxlXG4gICAqIGJ1aWx0IGZvciB0aGUgbG9nIGFsb25lOyBhIGNhbGxlciBvZiB0aGlzIGNsYXNzIChgZm9vdHByaW50anMvYWR2YW5jZWRgKSBoYW5kcyBvdmVyIGEgYnVuZGxlIGl0XG4gICAqIHdpbGwgbm8gbG9uZ2VyIGVkaXQg4oCUIGl0cyBvd24gb2JqZWN0IGlzIHRoZSBvbmUgZnJvemVuLlxuICAgKi9cbiAgcmVjb3JkKGJ1bmRsZTogQ29tbWl0QnVuZGxlKTogdm9pZCB7XG4gICAgYnVuZGxlLmlkeCA9IHRoaXMuc3RlcHMubGVuZ3RoO1xuICAgIGZyZWV6ZVJlY29yZChidW5kbGUsICdpbmRpY2VzJyk7XG4gICAgdGhpcy5zdGVwcy5wdXNoKGJ1bmRsZSk7XG4gIH1cblxuICAvKipcbiAgICogRXZlcnkgcmVjb3JkZWQgY29tbWl0IGJ1bmRsZSwgQVMgU0VSVkVEICg5LjQ0LjIpOiBhIG5ldyBhcnJheSBlYWNoIGNhbGw7IGEgYnVuZGxlIGZyZWV6aW5nIHNlYWxlZFxuICAgKiB3aG9sZSBpcyB0aGUgbG9nJ3Mgb3duIChmcm96ZW4pIG9iamVjdCwgb25lIGhvbGRpbmcgYSBEYXRlLCBNYXAsIGJ1ZmZlciDigKYgaXMgYSBjb3B5IG9mIGl0cyBvcGVuXG4gICAqIHBhdGhzIChgY2FwdHVyZS9mcmVlemUudHMgwrcgc2VydmVSZWNvcmRgKSDigJQgdGhlIHJlYWRlcidzIG93biwgc28gbm8gZWRpdCByZWFjaGVzIHRoZSBsb2cuXG4gICAqL1xuICBsaXN0KCk6IENvbW1pdEJ1bmRsZVtdIHtcbiAgICByZXR1cm4gdGhpcy5zdGVwcy5tYXAoc2VydmVSZWNvcmQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbCBUaGUgYnVuZGxlcyBhcyB0aGUgbG9nIGhvbGRzIHRoZW0g4oCUIGVhY2ggZnJvemVuLCBOT1Qgc2VydmVkIOKAlCBpbiBhIG5ldyBhcnJheSwgc28gYSBob2xkZXInc1xuICAgKiBgc3BsaWNlYCByZWFjaGVzIG9ubHkgaXRzIG93bi4gRm9yIHRoZSBlbmdpbmUncyBvd24gc25hcHNob3QgKGBFeGVjdXRpb25SdW50aW1lIMK3IGdldFNuYXBzaG90YCwgd2hpY2hcbiAgICogYSBzdWJmbG93IG1vdW50IHRha2VzIG9uY2UgcGVyIG1vdW50KSwgc28gdGhlIHJ1biBzZXJ2ZXMgbm90aGluZzsgYSByZWFkZXIgaXMgc2VydmVkIGJ5IGBsaXN0KClgIGFuZFxuICAgKiBgZ2V0U25hcHNob3QoKS5jb21taXRMb2dgLiBBIGtub3duIG9wZW4gZG9vciAoQ0hBTkdFTE9HIDkuNDQuMik6IGEgaG9sZGVyIG9mIHRoZXNlIGJ1bmRsZXMgY2FuIHN0aWxsXG4gICAqIGVkaXQgYSBEYXRlLCBNYXAgb3IgYnVmZmVyIGluc2lkZSB0aGVtLlxuICAgKi9cbiAgcmVjb3JkZWQoKTogQ29tbWl0QnVuZGxlW10ge1xuICAgIHJldHVybiB0aGlzLnN0ZXBzLnNsaWNlKCk7XG4gIH1cblxuICAvKiogTnVtYmVyIG9mIHJlY29yZGVkIGNvbW1pdHMuICovXG4gIGdldCBsZW5ndGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zdGVwcy5sZW5ndGg7XG4gIH1cblxuICAvKiogSW1tdXRhYmxlIGlkZW50aXR5IG9mIHRoaXMgbG9nLCBhYnNlbnQgdW50aWwgdGhlIGVuZ2luZSBiaW5kcyBpdC4gKi9cbiAgZ2V0IGFkZHJlc3MoKTogTG9nQWRkcmVzcyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuc291cmNlQWRkcmVzcztcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgQmluZCBvbmNlOyByZXN1bWluZyB0aGUgc2FtZSBsb2cgbXVzdCBub3QgcmVuYW1lIGl0cyBlYXJsaWVyIHBvc2l0aW9ucy4gKi9cbiAgYmluZEFkZHJlc3MobG9nUnVuSWQ6IHN0cmluZywgZHJpbGxQYXRoOiByZWFkb25seSBzdHJpbmdbXSk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNvdXJjZUFkZHJlc3NSZXRpcmVkKSByZXR1cm47XG4gICAgdGhpcy5zb3VyY2VBZGRyZXNzID8/PSBPYmplY3QuZnJlZXplKHsgbG9nUnVuSWQsIGRyaWxsUGF0aDogT2JqZWN0LmZyZWV6ZShbLi4uZHJpbGxQYXRoXSkgfSk7XG4gIH1cblxuICAvKiogTygxKSBzb3VyY2UtdGltZSBjYXB0dXJlLiBObyBjb3VudGVyLCBvYnNlcnZlciBib29ra2VlcGluZywgb3IgZnV0dXJlIGNvbW1pdCBwcmVkaWN0aW9uLiAqL1xuICBjYXB0dXJlUG9zaXRpb24ocnVuSWQ6IHN0cmluZyk6IEVtaXRTb3VyY2VQb3NpdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLnNvdXJjZUFkZHJlc3MpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIE9iamVjdC5mcmVlemUoeyBydW5JZCwgLi4udGhpcy5zb3VyY2VBZGRyZXNzLCBjb21taXR0ZWRUaHJvdWdoSWR4OiB0aGlzLnN0ZXBzLmxlbmd0aCAtIDEgfSk7XG4gIH1cblxuICAvKiogV2lwZXMgaGlzdG9yeSAodXNlZnVsIGZvciB0ZXN0IHJlc2V0cykuICovXG4gIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMuc3RlcHMgPSBbXTtcbiAgICAvLyBBIHJlc2V0IHByZWZpeCBjYW5ub3QgcmV1c2Ugb2xkIGNvb3JkaW5hdGVzLCBldmVuIGlmIGFub3RoZXIgc3RhZ2Ugb2ZcbiAgICAvLyB0aGUgU0FNRSBsZWcgYmluZHMgaXQgYWdhaW4uIEtlZXAgY2xlYXIncyBkYXRhIGJlaGF2aW9yLCBidXQgcmV0aXJlXG4gICAgLy8gYWRkcmVzc2luZyBmb3IgdGhpcyBsb2c7IGtub3duIGNvb3JkaW5hdGVzIHJlcXVpcmUgYSBmcmVzaCBFdmVudExvZy5cbiAgICB0aGlzLnNvdXJjZUFkZHJlc3MgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5zb3VyY2VBZGRyZXNzUmV0aXJlZCA9IHRydWU7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -157,10 +157,10 @@ export declare class StageContext {
|
|
|
157
157
|
/** Capture from this frame's OWN log. A manual/unaddressable frame stays unknown. */
|
|
158
158
|
captureEmitPosition(): EmitSourcePosition | undefined;
|
|
159
159
|
/**
|
|
160
|
-
* Install a parallel redacted mirror. Subsequent `commit()` calls
|
|
161
|
-
*
|
|
162
|
-
*
|
|
163
|
-
* the mirror via `createNext` / `createChild`.
|
|
160
|
+
* Install a parallel redacted mirror. Subsequent `commit()` calls apply
|
|
161
|
+
* the already-computed redacted patches — the ones the log records — to
|
|
162
|
+
* this mirror, beside the raw patches on `sharedMemory` (`recordCommit`).
|
|
163
|
+
* Child / next contexts inherit the mirror via `createNext` / `createChild`.
|
|
164
164
|
*
|
|
165
165
|
* Called on a runtime's root frame by `ExecutionRuntime` when the run's policy keeps a mirror.
|
|
166
166
|
*/
|
|
@@ -384,19 +384,6 @@ export declare class StageContext {
|
|
|
384
384
|
* surfaced as `CommitBundle.untrackedSources` on this stage's commit.
|
|
385
385
|
*/
|
|
386
386
|
markUntrackedSource(source: UntrackedSource): void;
|
|
387
|
-
/**
|
|
388
|
-
* RFC-003 D2: the `untrackedSources` bundle fragment for commit() — `{}`
|
|
389
|
-
* when nothing was marked, so the spread keeps the field ABSENT (not
|
|
390
|
-
* empty-array-valued) and untouched charts stay byte-identical.
|
|
391
|
-
*/
|
|
392
|
-
private untrackedSourcesFragment;
|
|
393
|
-
/**
|
|
394
|
-
* The `tags` bundle fragment for commit() — `{}` when the stage declares
|
|
395
|
-
* none, so an untagged chart's log is byte-identical to 9.20.0. Added after
|
|
396
|
-
* the payload encoding, so it is independent of `commitValues`; names, so
|
|
397
|
-
* redaction never sees it.
|
|
398
|
-
*/
|
|
399
|
-
private tagsFragment;
|
|
400
387
|
/** Register an observer that fires after commit() applies patches.
|
|
401
388
|
* Used by ScopeFacade to dispatch ScopeRecorder.onCommit events. */
|
|
402
389
|
setCommitObserver(observer: (mutations: Record<string, {
|
|
@@ -494,22 +481,6 @@ export declare class StageContext {
|
|
|
494
481
|
* reads them post-run for the execution-tree snapshot.
|
|
495
482
|
*/
|
|
496
483
|
commit(phase?: CommitPhase): void;
|
|
497
|
-
/**
|
|
498
|
-
* THE bundle of one commit (F10): the payload (an empty one on the lazy
|
|
499
|
-
* path, the buffer's on the other), then the stage's names, then the
|
|
500
|
-
* fragments — spread once, here, for both commit paths. Key order is the
|
|
501
|
-
* record's bytes: payload keys, `stage`, `stageId`, `runtimeStageId`,
|
|
502
|
-
* `untrackedSources?`, `tags?`, `phase?`.
|
|
503
|
-
*/
|
|
504
|
-
private bundleFor;
|
|
505
|
-
/**
|
|
506
|
-
* The tail of both commit paths: notify the observer (ScopeFacade) with the
|
|
507
|
-
* tracked mutations, THEN release the staging state (#13b — see `commit`),
|
|
508
|
-
* so the observer sees the world as it was. D2's untracked-source markers
|
|
509
|
-
* and the declared tags release with it: one stamp per execution, so the
|
|
510
|
-
* engine's double-commit paths record them exactly once.
|
|
511
|
-
*/
|
|
512
|
-
private finishCommit;
|
|
513
484
|
/**
|
|
514
485
|
* Throw away everything this stage has STAGED, without committing any of it.
|
|
515
486
|
*
|