footprintjs 7.0.0 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +2 -1
- package/README.md +16 -0
- package/dist/advanced.js +31 -37
- package/dist/esm/advanced.js +1 -3
- package/dist/esm/index.js +4 -3
- package/dist/esm/lib/memory/TransactionBuffer.js +92 -9
- package/dist/esm/lib/memory/utils.js +62 -1
- package/dist/esm/lib/scope/index.js +6 -5
- package/dist/esm/zod.js +18 -0
- package/dist/index.js +5 -5
- package/dist/lib/memory/TransactionBuffer.js +91 -8
- package/dist/lib/memory/utils.js +64 -2
- package/dist/lib/scope/index.js +7 -11
- package/dist/types/advanced.d.ts +1 -2
- package/dist/types/index.d.ts +0 -2
- package/dist/types/lib/memory/TransactionBuffer.d.ts +67 -1
- package/dist/types/lib/memory/utils.d.ts +29 -0
- package/dist/types/lib/scope/index.d.ts +0 -5
- package/dist/types/zod.d.ts +18 -0
- package/dist/zod.js +26 -0
- package/package.json +6 -1
|
@@ -123,6 +123,67 @@ export function redactPatch(patch, redactedSet) {
|
|
|
123
123
|
export function normalisePath(path) {
|
|
124
124
|
return path.map(String).join(DELIM);
|
|
125
125
|
}
|
|
126
|
+
/**
|
|
127
|
+
* Structural deep equality for committed-state values.
|
|
128
|
+
*
|
|
129
|
+
* Used by {@link TransactionBuffer} to decide whether a stage actually CHANGED
|
|
130
|
+
* a path or merely re-wrote / reverted it to the value it already held (a
|
|
131
|
+
* "no-op write"). Committed state is JSON-shaped — it must survive
|
|
132
|
+
* `structuredClone` — so this only needs to handle the shapes that can reach a
|
|
133
|
+
* commit: primitives, arrays, and plain objects.
|
|
134
|
+
*
|
|
135
|
+
* Semantics:
|
|
136
|
+
* - reference / identical-primitive short-circuits first (cheap fast path)
|
|
137
|
+
* - `NaN` equals `NaN` (primitive compare falls back to `Object.is`)
|
|
138
|
+
* - arrays: equal length AND deep-equal element-wise (order-sensitive)
|
|
139
|
+
* - objects: identical own-key set AND deep-equal per key
|
|
140
|
+
* - mismatched kinds (array vs object, object vs null) → not equal
|
|
141
|
+
*
|
|
142
|
+
* Cost & safety:
|
|
143
|
+
* - Allocates NOTHING but transient `Object.keys` arrays — no clones. It is
|
|
144
|
+
* strictly cheaper than the `structuredClone` the commit already performs.
|
|
145
|
+
* - Primitive comparisons (the bulk of state) are O(1) via the `===` /
|
|
146
|
+
* `Object.is` fast paths; only nested objects/arrays incur a walk, bounded
|
|
147
|
+
* by the value's own size.
|
|
148
|
+
* - Assumes ACYCLIC, JSON-shaped values — the same contract the memory layer
|
|
149
|
+
* already relies on (committed state is `structuredClone`d and must be
|
|
150
|
+
* JSON-serialisable for checkpoints). A cyclic value is out of contract
|
|
151
|
+
* here exactly as it is for checkpointing; dev mode flags cycles at write
|
|
152
|
+
* time via `ScopeFacade.setValue`.
|
|
153
|
+
*/
|
|
154
|
+
export function deepEqual(a, b) {
|
|
155
|
+
if (a === b)
|
|
156
|
+
return true; // same reference or identical primitive
|
|
157
|
+
if (typeof a !== typeof b)
|
|
158
|
+
return false;
|
|
159
|
+
if (a === null || b === null)
|
|
160
|
+
return a === b; // one is null, the other isn't
|
|
161
|
+
if (typeof a !== 'object')
|
|
162
|
+
return Object.is(a, b); // NaN-safe primitive compare
|
|
163
|
+
const aIsArray = Array.isArray(a);
|
|
164
|
+
if (aIsArray !== Array.isArray(b))
|
|
165
|
+
return false; // array vs plain object
|
|
166
|
+
if (aIsArray) {
|
|
167
|
+
if (a.length !== b.length)
|
|
168
|
+
return false;
|
|
169
|
+
for (let i = 0; i < a.length; i++) {
|
|
170
|
+
if (!deepEqual(a[i], b[i]))
|
|
171
|
+
return false;
|
|
172
|
+
}
|
|
173
|
+
return true;
|
|
174
|
+
}
|
|
175
|
+
const aKeys = Object.keys(a);
|
|
176
|
+
const bKeys = Object.keys(b);
|
|
177
|
+
if (aKeys.length !== bKeys.length)
|
|
178
|
+
return false;
|
|
179
|
+
for (const key of aKeys) {
|
|
180
|
+
if (!Object.prototype.hasOwnProperty.call(b, key))
|
|
181
|
+
return false;
|
|
182
|
+
if (!deepEqual(a[key], b[key]))
|
|
183
|
+
return false;
|
|
184
|
+
}
|
|
185
|
+
return true;
|
|
186
|
+
}
|
|
126
187
|
/**
|
|
127
188
|
* Deep union merge helper.
|
|
128
189
|
* - Arrays (non-empty): union without duplicates (encounter order preserved)
|
|
@@ -169,4 +230,4 @@ export function applySmartMerge(base, updates, overwrite, trace) {
|
|
|
169
230
|
}
|
|
170
231
|
return out;
|
|
171
232
|
}
|
|
172
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL21lbW9yeS91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILE9BQU8sRUFBRSxTQUFTLElBQUksSUFBSSxFQUFFLFNBQVMsSUFBSSxJQUFJLEVBQUUsU0FBUyxJQUFJLElBQUksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUd2RixpRkFBaUY7QUFDakYsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQztBQUk5Qjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsS0FBYyxFQUFFLE9BQTRCLEVBQUU7SUFDakYsT0FBTztRQUNMLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO1FBQ3JELFVBQVUsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO0tBQ3RCLENBQUM7QUFDSixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUM1QixHQUFpQixFQUNqQixLQUFhLEVBQ2IsS0FBZSxFQUNmLEtBQWEsRUFDYixLQUFRLEVBQ1IsYUFBdUI7SUFFdkIsTUFBTSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkUsTUFBTSxJQUFJLEdBQUcsT0FBTyxJQUFJLFVBQVUsQ0FBQztJQUNuQyxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDM0IsSUFBSSxPQUFPLEdBQWlCLEdBQUcsQ0FBQztJQUNoQyxPQUFPLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDM0IsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLEtBQUssRUFBWSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDeEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsS0FBSyxLQUFLLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNyRSxDQUFDO1FBQ0QsT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUN2QixPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FDL0IsR0FBUSxFQUNSLEtBQXlCLEVBQ3pCLEtBQTBCLEVBQzFCLEtBQXNCLEVBQ3RCLEtBQVEsRUFDUixhQUF1QjtJQUV2QixNQUFNLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLG9CQUFvQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuRSxNQUFNLElBQUksR0FBRyxPQUFPLElBQUksVUFBVSxDQUFDO0lBQ25DLE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUMzQixJQUFJLE9BQU8sR0FBaUIsR0FBRyxDQUFDO0lBQ2hDLE9BQU8sUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMzQixNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFZLENBQUM7UUFDdkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN4RCxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxLQUFLLEtBQUssSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3JFLENBQUM7UUFDRCxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFDRCxXQUFXLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuQyxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsTUFBVyxFQUFFLEdBQW9CLEVBQUUsS0FBVTtJQUN2RSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN6QixJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLHdDQUF3QztRQUMvRCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQVEsQ0FBQztZQUMvQixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFDL0QsQ0FBQztJQUNILENBQUM7U0FBTSxJQUFJLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMzRSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFRLENBQUM7UUFDL0IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDO0lBQ2pFLENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FBQyxJQUFTLEVBQUUsSUFBeUIsRUFBRSxLQUF1QjtJQUMxRixNQUFNLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUMvRCxJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksSUFBSSxLQUFLLFNBQVM7UUFBRSxPQUFPLElBQUksQ0FBQztJQUMzRCxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNuRyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxLQUFrQixFQUFFLFdBQXdCO0lBQ3RFLE1BQU0sR0FBRyxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxLQUFLLE1BQU0sSUFBSSxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQy9CLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDdkIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNoQyxJQUFJLE9BQU8sSUFBSSxLQUFLLFdBQVcsRUFBRSxDQUFDO2dCQUNoQyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztZQUNqQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsSUFBeUI7SUFDckQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FBQyxHQUFRLEVBQUUsR0FBUTtJQUMvQyxJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUTtRQUFFLE9BQU8sR0FBRyxDQUFDO0lBRXhELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQywrQkFBK0I7UUFDaEUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUFFLE9BQU8sQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUQsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVELE1BQU0sR0FBRyxHQUFRLEVBQUUsR0FBRyxDQUFDLEdBQUcsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNwRSw4RUFBOEU7SUFDOUUsS0FBSyxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDakMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUM3QixJQUFTLEVBQ1QsT0FBb0IsRUFDcEIsU0FBc0IsRUFDdEIsS0FBZ0Q7SUFFaEQsTUFBTSxHQUFHLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLEtBQUssTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNuQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxRCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLGNBQWMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEUsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIHV0aWxzLnRzIOKAlCBIZWxwZXIgZnVuY3Rpb25zIGZvciBuZXN0ZWQgb2JqZWN0IG1hbmlwdWxhdGlvblxuICpcbiAqIFByb3ZpZGVzIGNvbnNpc3RlbnQgcGF0aCB0cmF2ZXJzYWwgYW5kIHZhbHVlIG1hbmlwdWxhdGlvbiBmb3IgdGhlIG1lbW9yeSBzeXN0ZW0uXG4gKiBaZXJvIGV4dGVybmFsIGRlcGVuZGVuY2llcy5cbiAqL1xuXG5pbXBvcnQgeyBuYXRpdmVHZXQgYXMgX2dldCwgbmF0aXZlSGFzIGFzIF9oYXMsIG5hdGl2ZVNldCBhcyBfc2V0IH0gZnJvbSAnLi9wYXRoT3BzLmpzJztcbmltcG9ydCB0eXBlIHsgTWVtb3J5UGF0Y2ggfSBmcm9tICcuL3R5cGVzLmpzJztcblxuLyoqIEFTQ0lJIFVuaXQtU2VwYXJhdG9yIOKAlCBjYW5ub3QgYXBwZWFyIGluIEpTIGlkZW50aWZpZXJzLCBpbnZpc2libGUgaW4gbG9ncy4gKi9cbmV4cG9ydCBjb25zdCBERUxJTSA9ICdcXHUwMDFGJztcblxudHlwZSBOZXN0ZWRPYmplY3QgPSB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuXG4vKipcbiAqIFJlc29sdmVzIHJ1bi1uYW1lc3BhY2VkIGFuZCBnbG9iYWwgcGF0aHMuXG4gKiBFYWNoIGZsb3djaGFydCBleGVjdXRpb24gKHJ1bikgc3RvcmVzIGRhdGEgdW5kZXIgYHJ1bnMve2lkfS9gIHRvIHByZXZlbnQgY29sbGlzaW9ucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJ1bkFuZEdsb2JhbFBhdGhzKHJ1bklkPzogc3RyaW5nLCBwYXRoOiAoc3RyaW5nIHwgbnVtYmVyKVtdID0gW10pIHtcbiAgcmV0dXJuIHtcbiAgICBydW5QYXRoOiBydW5JZCA/IFsncnVucycsIHJ1bklkLCAuLi5wYXRoXSA6IHVuZGVmaW5lZCxcbiAgICBnbG9iYWxQYXRoOiBbLi4ucGF0aF0sXG4gIH07XG59XG5cbi8qKlxuICogU2V0cyBhIHZhbHVlIGF0IGEgbmVzdGVkIHBhdGgsIGNyZWF0aW5nIGludGVybWVkaWF0ZSBvYmplY3RzIGFzIG5lZWRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldE5lc3RlZFZhbHVlPFQ+KFxuICBvYmo6IE5lc3RlZE9iamVjdCxcbiAgcnVuSWQ6IHN0cmluZyxcbiAgX3BhdGg6IHN0cmluZ1tdLFxuICBmaWVsZDogc3RyaW5nLFxuICB2YWx1ZTogVCxcbiAgZGVmYXVsdFZhbHVlcz86IHVua25vd24sXG4pOiBOZXN0ZWRPYmplY3Qge1xuICBjb25zdCB7IHJ1blBhdGgsIGdsb2JhbFBhdGggfSA9IGdldFJ1bkFuZEdsb2JhbFBhdGhzKHJ1bklkLCBfcGF0aCk7XG4gIGNvbnN0IHBhdGggPSBydW5QYXRoIHx8IGdsb2JhbFBhdGg7XG4gIGNvbnN0IHBhdGhDb3B5ID0gWy4uLnBhdGhdO1xuICBsZXQgY3VycmVudDogTmVzdGVkT2JqZWN0ID0gb2JqO1xuICB3aGlsZSAocGF0aENvcHkubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IGtleSA9IHBhdGhDb3B5LnNoaWZ0KCkgYXMgc3RyaW5nO1xuICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGN1cnJlbnQsIGtleSkpIHtcbiAgICAgIGN1cnJlbnRba2V5XSA9IGtleSA9PT0gcnVuSWQgJiYgZGVmYXVsdFZhbHVlcyA/IGRlZmF1bHRWYWx1ZXMgOiB7fTtcbiAgICB9XG4gICAgY3VycmVudCA9IGN1cnJlbnRba2V5XTtcbiAgfVxuICBjdXJyZW50W2ZpZWxkXSA9IHZhbHVlO1xuICByZXR1cm4gb2JqO1xufVxuXG4vKipcbiAqIERlZXAtbWVyZ2VzIGEgdmFsdWUgaW50byB0aGUgb2JqZWN0IGF0IHRoZSBzcGVjaWZpZWQgcGF0aC5cbiAqIC0gQXJyYXlzOiBjb25jYXRlbmF0ZVxuICogLSBPYmplY3RzOiBzaGFsbG93IG1lcmdlIGF0IGVhY2ggbGV2ZWxcbiAqIC0gUHJpbWl0aXZlczogcmVwbGFjZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlTmVzdGVkVmFsdWU8VD4oXG4gIG9iajogYW55LFxuICBydW5JZDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBfcGF0aDogKHN0cmluZyB8IG51bWJlcilbXSxcbiAgZmllbGQ6IHN0cmluZyB8IG51bWJlcixcbiAgdmFsdWU6IFQsXG4gIGRlZmF1bHRWYWx1ZXM/OiB1bmtub3duLFxuKTogYW55IHtcbiAgY29uc3QgeyBydW5QYXRoLCBnbG9iYWxQYXRoIH0gPSBnZXRSdW5BbmRHbG9iYWxQYXRocyhydW5JZCwgX3BhdGgpO1xuICBjb25zdCBwYXRoID0gcnVuUGF0aCB8fCBnbG9iYWxQYXRoO1xuICBjb25zdCBwYXRoQ29weSA9IFsuLi5wYXRoXTtcbiAgbGV0IGN1cnJlbnQ6IE5lc3RlZE9iamVjdCA9IG9iajtcbiAgd2hpbGUgKHBhdGhDb3B5Lmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCBrZXkgPSBwYXRoQ29weS5zaGlmdCgpIGFzIHN0cmluZztcbiAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjdXJyZW50LCBrZXkpKSB7XG4gICAgICBjdXJyZW50W2tleV0gPSBrZXkgPT09IHJ1bklkICYmIGRlZmF1bHRWYWx1ZXMgPyBkZWZhdWx0VmFsdWVzIDoge307XG4gICAgfVxuICAgIGN1cnJlbnQgPSBjdXJyZW50W2tleV07XG4gIH1cbiAgdXBkYXRlVmFsdWUoY3VycmVudCwgZmllbGQsIHZhbHVlKTtcbiAgcmV0dXJuIG9iajtcbn1cblxuLyoqXG4gKiBJbi1wbGFjZSB2YWx1ZSB1cGRhdGUgd2l0aCBtZXJnZSBzZW1hbnRpY3MuXG4gKiAtIEFycmF5cyAobm9uLWVtcHR5KTogY29uY2F0ZW5hdGUgb250byBleGlzdGluZ1xuICogLSBBcnJheXMgKGVtcHR5KTogICAgIGRpcmVjdCByZXBsYWNlIOKAlCB3cml0aW5nIGBbXWAgY2xlYXJzIHRoZSBmaWVsZFxuICogLSBPYmplY3RzIChub24tZW1wdHkpOiBzaGFsbG93IG1lcmdlIChzcHJlYWQpXG4gKiAtIE9iamVjdHMgKGVtcHR5KTogICAgZGlyZWN0IHJlcGxhY2Ug4oCUIHdyaXRpbmcgYHt9YCBjbGVhcnMgdGhlIGZpZWxkXG4gKiAtIFByaW1pdGl2ZXM6IGRpcmVjdCBhc3NpZ25tZW50XG4gKlxuICogTm90ZSBvbiBlbXB0eSBhcnJheXM6IGJvdGggYHZhbHVlICYmIEFycmF5LmlzQXJyYXkodmFsdWUpYCBhbmRcbiAqIGBBcnJheS5pc0FycmF5KHZhbHVlKWAgZXZhbHVhdGUgdGhlIHNhbWUgZm9yIGFycmF5cyDigJQgYFtdYCBpcyB0cnV0aHkgaW5cbiAqIEphdmFTY3JpcHQsIHNvIHRoZSBgJiZgIGd1YXJkIHdhcyBuZXZlciB0aGUgaXNzdWUuIFRoZSBhY3R1YWwgYnVnIHdhcyB0aGVcbiAqIGNvbmNhdCBwYXRoOiBgWy4uLmN1ciwgLi4uW11dYCBzaWxlbnRseSByZXR1cm5lZCBgY3VyYCB1bmNoYW5nZWQgd2hlbiBgdmFsdWVgXG4gKiB3YXMgYFtdYCwgbWFraW5nIGB1cGRhdGVWYWx1ZShvYmosICd0YWdzJywgW10pYCBhIG5vLW9wIGluc3RlYWQgb2YgYSBjbGVhci5cbiAqIFRoZSBmaXggaXMgdGhlIGV4cGxpY2l0IGB2YWx1ZS5sZW5ndGggPT09IDBgIGVhcmx5LXJldHVybiBicmFuY2guXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVWYWx1ZShvYmplY3Q6IGFueSwga2V5OiBzdHJpbmcgfCBudW1iZXIsIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgaWYgKHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgb2JqZWN0W2tleV0gPSB2YWx1ZTsgLy8gY2xlYXI6IFtdIHJlcGxhY2VzIHdoYXRldmVyIHdhcyB0aGVyZVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjdXIgPSBvYmplY3Rba2V5XSBhcyBhbnk7XG4gICAgICBvYmplY3Rba2V5XSA9IGN1ciA9PT0gdW5kZWZpbmVkID8gdmFsdWUgOiBbLi4uY3VyLCAuLi52YWx1ZV07XG4gICAgfVxuICB9IGVsc2UgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCkge1xuICAgIGNvbnN0IGN1ciA9IG9iamVjdFtrZXldIGFzIGFueTtcbiAgICBvYmplY3Rba2V5XSA9IGN1ciA9PT0gdW5kZWZpbmVkID8gdmFsdWUgOiB7IC4uLmN1ciwgLi4udmFsdWUgfTtcbiAgfSBlbHNlIHtcbiAgICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogR2V0cyBhIHZhbHVlIGF0IGEgbmVzdGVkIHBhdGggd2l0aCBwcm90b3R5cGUtcG9sbHV0aW9uIHByb3RlY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROZXN0ZWRWYWx1ZShyb290OiBhbnksIHBhdGg6IChzdHJpbmcgfCBudW1iZXIpW10sIGZpZWxkPzogc3RyaW5nIHwgbnVtYmVyKTogYW55IHtcbiAgY29uc3Qgbm9kZSA9IHBhdGggJiYgcGF0aC5sZW5ndGggPiAwID8gX2dldChyb290LCBwYXRoKSA6IHJvb3Q7XG4gIGlmIChmaWVsZCA9PT0gdW5kZWZpbmVkIHx8IG5vZGUgPT09IHVuZGVmaW5lZCkgcmV0dXJuIG5vZGU7XG4gIGlmIChub2RlICE9PSBudWxsICYmIHR5cGVvZiBub2RlID09PSAnb2JqZWN0JyAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobm9kZSwgZmllbGQpKSB7XG4gICAgcmV0dXJuIG5vZGVbZmllbGRdO1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogUmVkYWN0cyBzZW5zaXRpdmUgdmFsdWVzIGluIGEgcGF0Y2ggZm9yIGxvZ2dpbmcvZGVidWdnaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVkYWN0UGF0Y2gocGF0Y2g6IE1lbW9yeVBhdGNoLCByZWRhY3RlZFNldDogU2V0PHN0cmluZz4pOiBNZW1vcnlQYXRjaCB7XG4gIGNvbnN0IG91dCA9IHN0cnVjdHVyZWRDbG9uZShwYXRjaCk7XG4gIGZvciAoY29uc3QgZmxhdCBvZiByZWRhY3RlZFNldCkge1xuICAgIGNvbnN0IHBhdGhBcnIgPSBmbGF0LnNwbGl0KERFTElNKTtcbiAgICBpZiAoX2hhcyhvdXQsIHBhdGhBcnIpKSB7XG4gICAgICBjb25zdCBjdXJyID0gX2dldChvdXQsIHBhdGhBcnIpO1xuICAgICAgaWYgKHR5cGVvZiBjdXJyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBfc2V0KG91dCwgcGF0aEFyciwgJ1JFREFDVEVEJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBvdXQ7XG59XG5cbi8qKlxuICogTm9ybWFsaXNlcyBhbiBhcnJheSBwYXRoIGludG8gYSBzdGFibGUgc3RyaW5nIGtleSB1c2luZyBERUxJTS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGlzZVBhdGgocGF0aDogKHN0cmluZyB8IG51bWJlcilbXSk6IHN0cmluZyB7XG4gIHJldHVybiBwYXRoLm1hcChTdHJpbmcpLmpvaW4oREVMSU0pO1xufVxuXG4vKipcbiAqIERlZXAgdW5pb24gbWVyZ2UgaGVscGVyLlxuICogLSBBcnJheXMgKG5vbi1lbXB0eSk6IHVuaW9uIHdpdGhvdXQgZHVwbGljYXRlcyAoZW5jb3VudGVyIG9yZGVyIHByZXNlcnZlZClcbiAqIC0gQXJyYXlzIChlbXB0eSk6ICAgICByZXBsYWNlIOKAlCBzcmMgYFtdYCBjbGVhcnMgdGhlIGRlc3RpbmF0aW9uIGFycmF5LlxuICogICBSYXRpb25hbGU6IHdyaXRpbmcgYHNjb3BlLnRhZ3MgPSBbXWAgbWVhbnMgXCJjbGVhciB0YWdzXCIsIG5vdCBcImFwcGVuZCBub3RoaW5nXCIuXG4gKiAgIFdpdGhvdXQgdGhpcyBydWxlLCBhbiBlbXB0eS1hcnJheSB3cml0ZSBzaWxlbnRseSBiZWNvbWVzIGEgbm8tb3Agd2hpY2ggaXNcbiAqICAgaW1wb3NzaWJsZSB0byBkaXN0aW5ndWlzaCBmcm9tIGEgYnVnLlxuICogLSBPYmplY3RzOiByZWN1cnNpdmUgbWVyZ2VcbiAqIC0gUHJpbWl0aXZlczogc291cmNlIHdpbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlZXBTbWFydE1lcmdlKGRzdDogYW55LCBzcmM6IGFueSk6IGFueSB7XG4gIGlmIChzcmMgPT09IG51bGwgfHwgdHlwZW9mIHNyYyAhPT0gJ29iamVjdCcpIHJldHVybiBzcmM7XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkoc3JjKSkge1xuICAgIGlmIChzcmMubGVuZ3RoID09PSAwKSByZXR1cm4gW107IC8vIGVtcHR5IHNyYyA9IGNsZWFyLCBub3Qgbm8tb3BcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkc3QpKSByZXR1cm4gWy4uLm5ldyBTZXQoWy4uLmRzdCwgLi4uc3JjXSldO1xuICAgIHJldHVybiBbLi4uc3JjXTtcbiAgfVxuXG4gIGNvbnN0IG91dDogYW55ID0geyAuLi4oZHN0ICYmIHR5cGVvZiBkc3QgPT09ICdvYmplY3QnID8gZHN0IDoge30pIH07XG4gIC8vIE9iamVjdC5rZXlzKCkgaXMgb3duLWVudW1lcmFibGUtb25seSBieSBzcGVjIOKAlCBubyBERU5JRUQgY2hlY2sgbmVlZGVkIGhlcmUuXG4gIGZvciAoY29uc3QgayBvZiBPYmplY3Qua2V5cyhzcmMpKSB7XG4gICAgb3V0W2tdID0gZGVlcFNtYXJ0TWVyZ2Uob3V0W2tdLCBzcmNba10pO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG5cbi8qKlxuICogQXBwbGllcyBhIGNvbW1pdCBidW5kbGUgdG8gYSBiYXNlIHN0YXRlIGJ5IHJlcGxheWluZyBvcGVyYXRpb25zIGluIG9yZGVyLlxuICogVHdvLXBoYXNlOiBVUERBVEUgKHVuaW9uLW1lcmdlKSB0aGVuIE9WRVJXUklURSAoZGlyZWN0IHNldCkuXG4gKiBHdWFyYW50ZWVzIFwibGFzdCB3cml0ZXIgd2luc1wiIHNlbWFudGljcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5U21hcnRNZXJnZShcbiAgYmFzZTogYW55LFxuICB1cGRhdGVzOiBNZW1vcnlQYXRjaCxcbiAgb3ZlcndyaXRlOiBNZW1vcnlQYXRjaCxcbiAgdHJhY2U6IHsgcGF0aDogc3RyaW5nOyB2ZXJiOiAnc2V0JyB8ICdtZXJnZScgfVtdLFxuKTogYW55IHtcbiAgY29uc3Qgb3V0ID0gc3RydWN0dXJlZENsb25lKGJhc2UpO1xuICBmb3IgKGNvbnN0IHsgcGF0aCwgdmVyYiB9IG9mIHRyYWNlKSB7XG4gICAgY29uc3Qgc2VncyA9IHBhdGguc3BsaXQoREVMSU0pO1xuICAgIGlmICh2ZXJiID09PSAnc2V0Jykge1xuICAgICAgX3NldChvdXQsIHNlZ3MsIHN0cnVjdHVyZWRDbG9uZShfZ2V0KG92ZXJ3cml0ZSwgc2VncykpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY3VycmVudCA9IF9nZXQob3V0LCBzZWdzKSA/PyB7fTtcbiAgICAgIF9zZXQob3V0LCBzZWdzLCBkZWVwU21hcnRNZXJnZShjdXJyZW50LCBfZ2V0KHVwZGF0ZXMsIHNlZ3MpKSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBvdXQ7XG59XG4iXX0=
|
|
233
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL21lbW9yeS91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILE9BQU8sRUFBRSxTQUFTLElBQUksSUFBSSxFQUFFLFNBQVMsSUFBSSxJQUFJLEVBQUUsU0FBUyxJQUFJLElBQUksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUd2RixpRkFBaUY7QUFDakYsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQztBQUk5Qjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsS0FBYyxFQUFFLE9BQTRCLEVBQUU7SUFDakYsT0FBTztRQUNMLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO1FBQ3JELFVBQVUsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO0tBQ3RCLENBQUM7QUFDSixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUM1QixHQUFpQixFQUNqQixLQUFhLEVBQ2IsS0FBZSxFQUNmLEtBQWEsRUFDYixLQUFRLEVBQ1IsYUFBdUI7SUFFdkIsTUFBTSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkUsTUFBTSxJQUFJLEdBQUcsT0FBTyxJQUFJLFVBQVUsQ0FBQztJQUNuQyxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDM0IsSUFBSSxPQUFPLEdBQWlCLEdBQUcsQ0FBQztJQUNoQyxPQUFPLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDM0IsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLEtBQUssRUFBWSxDQUFDO1FBQ3ZDLElBQUksQ0FB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Q0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiB1dGlscy50cyDigJQgSGVscGVyIGZ1bmN0aW9ucyBmb3IgbmVzdGVkIG9iamVjdCBtYW5pcHVsYXRpb25cbiAqXG4gKiBQcm92aWRlcyBjb25zaXN0ZW50IHBhdGggdHJhdmVyc2FsIGFuZCB2YWx1ZSBtYW5pcHVsYXRpb24gZm9yIHRoZSBtZW1vcnkgc3lzdGVtLlxuICogWmVybyBleHRlcm5hbCBkZXBlbmRlbmNpZXMuXG4gKi9cblxuaW1wb3J0IHsgbmF0aXZlR2V0IGFzIF9nZXQsIG5hdGl2ZUhhcyBhcyBfaGFzLCBuYXRpdmVTZXQgYXMgX3NldCB9IGZyb20gJy4vcGF0aE9wcy5qcyc7XG5pbXBvcnQgdHlwZSB7IE1lbW9yeVBhdGNoIH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbi8qKiBBU0NJSSBVbml0LVNlcGFyYXRvciDigJQgY2Fubm90IGFwcGVhciBpbiBKUyBpZGVudGlmaWVycywgaW52aXNpYmxlIGluIGxvZ3MuICovXG5leHBvcnQgY29uc3QgREVMSU0gPSAnXFx1MDAxRic7XG5cbnR5cGUgTmVzdGVkT2JqZWN0ID0geyBba2V5OiBzdHJpbmddOiBhbnkgfTtcblxuLyoqXG4gKiBSZXNvbHZlcyBydW4tbmFtZXNwYWNlZCBhbmQgZ2xvYmFsIHBhdGhzLlxuICogRWFjaCBmbG93Y2hhcnQgZXhlY3V0aW9uIChydW4pIHN0b3JlcyBkYXRhIHVuZGVyIGBydW5zL3tpZH0vYCB0byBwcmV2ZW50IGNvbGxpc2lvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSdW5BbmRHbG9iYWxQYXRocyhydW5JZD86IHN0cmluZywgcGF0aDogKHN0cmluZyB8IG51bWJlcilbXSA9IFtdKSB7XG4gIHJldHVybiB7XG4gICAgcnVuUGF0aDogcnVuSWQgPyBbJ3J1bnMnLCBydW5JZCwgLi4ucGF0aF0gOiB1bmRlZmluZWQsXG4gICAgZ2xvYmFsUGF0aDogWy4uLnBhdGhdLFxuICB9O1xufVxuXG4vKipcbiAqIFNldHMgYSB2YWx1ZSBhdCBhIG5lc3RlZCBwYXRoLCBjcmVhdGluZyBpbnRlcm1lZGlhdGUgb2JqZWN0cyBhcyBuZWVkZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXROZXN0ZWRWYWx1ZTxUPihcbiAgb2JqOiBOZXN0ZWRPYmplY3QsXG4gIHJ1bklkOiBzdHJpbmcsXG4gIF9wYXRoOiBzdHJpbmdbXSxcbiAgZmllbGQ6IHN0cmluZyxcbiAgdmFsdWU6IFQsXG4gIGRlZmF1bHRWYWx1ZXM/OiB1bmtub3duLFxuKTogTmVzdGVkT2JqZWN0IHtcbiAgY29uc3QgeyBydW5QYXRoLCBnbG9iYWxQYXRoIH0gPSBnZXRSdW5BbmRHbG9iYWxQYXRocyhydW5JZCwgX3BhdGgpO1xuICBjb25zdCBwYXRoID0gcnVuUGF0aCB8fCBnbG9iYWxQYXRoO1xuICBjb25zdCBwYXRoQ29weSA9IFsuLi5wYXRoXTtcbiAgbGV0IGN1cnJlbnQ6IE5lc3RlZE9iamVjdCA9IG9iajtcbiAgd2hpbGUgKHBhdGhDb3B5Lmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCBrZXkgPSBwYXRoQ29weS5zaGlmdCgpIGFzIHN0cmluZztcbiAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjdXJyZW50LCBrZXkpKSB7XG4gICAgICBjdXJyZW50W2tleV0gPSBrZXkgPT09IHJ1bklkICYmIGRlZmF1bHRWYWx1ZXMgPyBkZWZhdWx0VmFsdWVzIDoge307XG4gICAgfVxuICAgIGN1cnJlbnQgPSBjdXJyZW50W2tleV07XG4gIH1cbiAgY3VycmVudFtmaWVsZF0gPSB2YWx1ZTtcbiAgcmV0dXJuIG9iajtcbn1cblxuLyoqXG4gKiBEZWVwLW1lcmdlcyBhIHZhbHVlIGludG8gdGhlIG9iamVjdCBhdCB0aGUgc3BlY2lmaWVkIHBhdGguXG4gKiAtIEFycmF5czogY29uY2F0ZW5hdGVcbiAqIC0gT2JqZWN0czogc2hhbGxvdyBtZXJnZSBhdCBlYWNoIGxldmVsXG4gKiAtIFByaW1pdGl2ZXM6IHJlcGxhY2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZU5lc3RlZFZhbHVlPFQ+KFxuICBvYmo6IGFueSxcbiAgcnVuSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgX3BhdGg6IChzdHJpbmcgfCBudW1iZXIpW10sXG4gIGZpZWxkOiBzdHJpbmcgfCBudW1iZXIsXG4gIHZhbHVlOiBULFxuICBkZWZhdWx0VmFsdWVzPzogdW5rbm93bixcbik6IGFueSB7XG4gIGNvbnN0IHsgcnVuUGF0aCwgZ2xvYmFsUGF0aCB9ID0gZ2V0UnVuQW5kR2xvYmFsUGF0aHMocnVuSWQsIF9wYXRoKTtcbiAgY29uc3QgcGF0aCA9IHJ1blBhdGggfHwgZ2xvYmFsUGF0aDtcbiAgY29uc3QgcGF0aENvcHkgPSBbLi4ucGF0aF07XG4gIGxldCBjdXJyZW50OiBOZXN0ZWRPYmplY3QgPSBvYmo7XG4gIHdoaWxlIChwYXRoQ29weS5sZW5ndGggPiAwKSB7XG4gICAgY29uc3Qga2V5ID0gcGF0aENvcHkuc2hpZnQoKSBhcyBzdHJpbmc7XG4gICAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoY3VycmVudCwga2V5KSkge1xuICAgICAgY3VycmVudFtrZXldID0ga2V5ID09PSBydW5JZCAmJiBkZWZhdWx0VmFsdWVzID8gZGVmYXVsdFZhbHVlcyA6IHt9O1xuICAgIH1cbiAgICBjdXJyZW50ID0gY3VycmVudFtrZXldO1xuICB9XG4gIHVwZGF0ZVZhbHVlKGN1cnJlbnQsIGZpZWxkLCB2YWx1ZSk7XG4gIHJldHVybiBvYmo7XG59XG5cbi8qKlxuICogSW4tcGxhY2UgdmFsdWUgdXBkYXRlIHdpdGggbWVyZ2Ugc2VtYW50aWNzLlxuICogLSBBcnJheXMgKG5vbi1lbXB0eSk6IGNvbmNhdGVuYXRlIG9udG8gZXhpc3RpbmdcbiAqIC0gQXJyYXlzIChlbXB0eSk6ICAgICBkaXJlY3QgcmVwbGFjZSDigJQgd3JpdGluZyBgW11gIGNsZWFycyB0aGUgZmllbGRcbiAqIC0gT2JqZWN0cyAobm9uLWVtcHR5KTogc2hhbGxvdyBtZXJnZSAoc3ByZWFkKVxuICogLSBPYmplY3RzIChlbXB0eSk6ICAgIGRpcmVjdCByZXBsYWNlIOKAlCB3cml0aW5nIGB7fWAgY2xlYXJzIHRoZSBmaWVsZFxuICogLSBQcmltaXRpdmVzOiBkaXJlY3QgYXNzaWdubWVudFxuICpcbiAqIE5vdGUgb24gZW1wdHkgYXJyYXlzOiBib3RoIGB2YWx1ZSAmJiBBcnJheS5pc0FycmF5KHZhbHVlKWAgYW5kXG4gKiBgQXJyYXkuaXNBcnJheSh2YWx1ZSlgIGV2YWx1YXRlIHRoZSBzYW1lIGZvciBhcnJheXMg4oCUIGBbXWAgaXMgdHJ1dGh5IGluXG4gKiBKYXZhU2NyaXB0LCBzbyB0aGUgYCYmYCBndWFyZCB3YXMgbmV2ZXIgdGhlIGlzc3VlLiBUaGUgYWN0dWFsIGJ1ZyB3YXMgdGhlXG4gKiBjb25jYXQgcGF0aDogYFsuLi5jdXIsIC4uLltdXWAgc2lsZW50bHkgcmV0dXJuZWQgYGN1cmAgdW5jaGFuZ2VkIHdoZW4gYHZhbHVlYFxuICogd2FzIGBbXWAsIG1ha2luZyBgdXBkYXRlVmFsdWUob2JqLCAndGFncycsIFtdKWAgYSBuby1vcCBpbnN0ZWFkIG9mIGEgY2xlYXIuXG4gKiBUaGUgZml4IGlzIHRoZSBleHBsaWNpdCBgdmFsdWUubGVuZ3RoID09PSAwYCBlYXJseS1yZXR1cm4gYnJhbmNoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlVmFsdWUob2JqZWN0OiBhbnksIGtleTogc3RyaW5nIHwgbnVtYmVyLCB2YWx1ZTogYW55KTogdm9pZCB7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgIG9iamVjdFtrZXldID0gdmFsdWU7IC8vIGNsZWFyOiBbXSByZXBsYWNlcyB3aGF0ZXZlciB3YXMgdGhlcmVcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY3VyID0gb2JqZWN0W2tleV0gYXMgYW55O1xuICAgICAgb2JqZWN0W2tleV0gPSBjdXIgPT09IHVuZGVmaW5lZCA/IHZhbHVlIDogWy4uLmN1ciwgLi4udmFsdWVdO1xuICAgIH1cbiAgfSBlbHNlIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGgpIHtcbiAgICBjb25zdCBjdXIgPSBvYmplY3Rba2V5XSBhcyBhbnk7XG4gICAgb2JqZWN0W2tleV0gPSBjdXIgPT09IHVuZGVmaW5lZCA/IHZhbHVlIDogeyAuLi5jdXIsIC4uLnZhbHVlIH07XG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgfVxufVxuXG4vKipcbiAqIEdldHMgYSB2YWx1ZSBhdCBhIG5lc3RlZCBwYXRoIHdpdGggcHJvdG90eXBlLXBvbGx1dGlvbiBwcm90ZWN0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmVzdGVkVmFsdWUocm9vdDogYW55LCBwYXRoOiAoc3RyaW5nIHwgbnVtYmVyKVtdLCBmaWVsZD86IHN0cmluZyB8IG51bWJlcik6IGFueSB7XG4gIGNvbnN0IG5vZGUgPSBwYXRoICYmIHBhdGgubGVuZ3RoID4gMCA/IF9nZXQocm9vdCwgcGF0aCkgOiByb290O1xuICBpZiAoZmllbGQgPT09IHVuZGVmaW5lZCB8fCBub2RlID09PSB1bmRlZmluZWQpIHJldHVybiBub2RlO1xuICBpZiAobm9kZSAhPT0gbnVsbCAmJiB0eXBlb2Ygbm9kZSA9PT0gJ29iamVjdCcgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG5vZGUsIGZpZWxkKSkge1xuICAgIHJldHVybiBub2RlW2ZpZWxkXTtcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFJlZGFjdHMgc2Vuc2l0aXZlIHZhbHVlcyBpbiBhIHBhdGNoIGZvciBsb2dnaW5nL2RlYnVnZ2luZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZGFjdFBhdGNoKHBhdGNoOiBNZW1vcnlQYXRjaCwgcmVkYWN0ZWRTZXQ6IFNldDxzdHJpbmc+KTogTWVtb3J5UGF0Y2gge1xuICBjb25zdCBvdXQgPSBzdHJ1Y3R1cmVkQ2xvbmUocGF0Y2gpO1xuICBmb3IgKGNvbnN0IGZsYXQgb2YgcmVkYWN0ZWRTZXQpIHtcbiAgICBjb25zdCBwYXRoQXJyID0gZmxhdC5zcGxpdChERUxJTSk7XG4gICAgaWYgKF9oYXMob3V0LCBwYXRoQXJyKSkge1xuICAgICAgY29uc3QgY3VyciA9IF9nZXQob3V0LCBwYXRoQXJyKTtcbiAgICAgIGlmICh0eXBlb2YgY3VyciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgX3NldChvdXQsIHBhdGhBcnIsICdSRURBQ1RFRCcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gb3V0O1xufVxuXG4vKipcbiAqIE5vcm1hbGlzZXMgYW4gYXJyYXkgcGF0aCBpbnRvIGEgc3RhYmxlIHN0cmluZyBrZXkgdXNpbmcgREVMSU0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpc2VQYXRoKHBhdGg6IChzdHJpbmcgfCBudW1iZXIpW10pOiBzdHJpbmcge1xuICByZXR1cm4gcGF0aC5tYXAoU3RyaW5nKS5qb2luKERFTElNKTtcbn1cblxuLyoqXG4gKiBTdHJ1Y3R1cmFsIGRlZXAgZXF1YWxpdHkgZm9yIGNvbW1pdHRlZC1zdGF0ZSB2YWx1ZXMuXG4gKlxuICogVXNlZCBieSB7QGxpbmsgVHJhbnNhY3Rpb25CdWZmZXJ9IHRvIGRlY2lkZSB3aGV0aGVyIGEgc3RhZ2UgYWN0dWFsbHkgQ0hBTkdFRFxuICogYSBwYXRoIG9yIG1lcmVseSByZS13cm90ZSAvIHJldmVydGVkIGl0IHRvIHRoZSB2YWx1ZSBpdCBhbHJlYWR5IGhlbGQgKGFcbiAqIFwibm8tb3Agd3JpdGVcIikuIENvbW1pdHRlZCBzdGF0ZSBpcyBKU09OLXNoYXBlZCDigJQgaXQgbXVzdCBzdXJ2aXZlXG4gKiBgc3RydWN0dXJlZENsb25lYCDigJQgc28gdGhpcyBvbmx5IG5lZWRzIHRvIGhhbmRsZSB0aGUgc2hhcGVzIHRoYXQgY2FuIHJlYWNoIGFcbiAqIGNvbW1pdDogcHJpbWl0aXZlcywgYXJyYXlzLCBhbmQgcGxhaW4gb2JqZWN0cy5cbiAqXG4gKiBTZW1hbnRpY3M6XG4gKiAgIC0gcmVmZXJlbmNlIC8gaWRlbnRpY2FsLXByaW1pdGl2ZSBzaG9ydC1jaXJjdWl0cyBmaXJzdCAoY2hlYXAgZmFzdCBwYXRoKVxuICogICAtIGBOYU5gIGVxdWFscyBgTmFOYCAocHJpbWl0aXZlIGNvbXBhcmUgZmFsbHMgYmFjayB0byBgT2JqZWN0LmlzYClcbiAqICAgLSBhcnJheXM6IGVxdWFsIGxlbmd0aCBBTkQgZGVlcC1lcXVhbCBlbGVtZW50LXdpc2UgKG9yZGVyLXNlbnNpdGl2ZSlcbiAqICAgLSBvYmplY3RzOiBpZGVudGljYWwgb3duLWtleSBzZXQgQU5EIGRlZXAtZXF1YWwgcGVyIGtleVxuICogICAtIG1pc21hdGNoZWQga2luZHMgKGFycmF5IHZzIG9iamVjdCwgb2JqZWN0IHZzIG51bGwpIOKGkiBub3QgZXF1YWxcbiAqXG4gKiBDb3N0ICYgc2FmZXR5OlxuICogICAtIEFsbG9jYXRlcyBOT1RISU5HIGJ1dCB0cmFuc2llbnQgYE9iamVjdC5rZXlzYCBhcnJheXMg4oCUIG5vIGNsb25lcy4gSXQgaXNcbiAqICAgICBzdHJpY3RseSBjaGVhcGVyIHRoYW4gdGhlIGBzdHJ1Y3R1cmVkQ2xvbmVgIHRoZSBjb21taXQgYWxyZWFkeSBwZXJmb3Jtcy5cbiAqICAgLSBQcmltaXRpdmUgY29tcGFyaXNvbnMgKHRoZSBidWxrIG9mIHN0YXRlKSBhcmUgTygxKSB2aWEgdGhlIGA9PT1gIC9cbiAqICAgICBgT2JqZWN0LmlzYCBmYXN0IHBhdGhzOyBvbmx5IG5lc3RlZCBvYmplY3RzL2FycmF5cyBpbmN1ciBhIHdhbGssIGJvdW5kZWRcbiAqICAgICBieSB0aGUgdmFsdWUncyBvd24gc2l6ZS5cbiAqICAgLSBBc3N1bWVzIEFDWUNMSUMsIEpTT04tc2hhcGVkIHZhbHVlcyDigJQgdGhlIHNhbWUgY29udHJhY3QgdGhlIG1lbW9yeSBsYXllclxuICogICAgIGFscmVhZHkgcmVsaWVzIG9uIChjb21taXR0ZWQgc3RhdGUgaXMgYHN0cnVjdHVyZWRDbG9uZWBkIGFuZCBtdXN0IGJlXG4gKiAgICAgSlNPTi1zZXJpYWxpc2FibGUgZm9yIGNoZWNrcG9pbnRzKS4gQSBjeWNsaWMgdmFsdWUgaXMgb3V0IG9mIGNvbnRyYWN0XG4gKiAgICAgaGVyZSBleGFjdGx5IGFzIGl0IGlzIGZvciBjaGVja3BvaW50aW5nOyBkZXYgbW9kZSBmbGFncyBjeWNsZXMgYXQgd3JpdGVcbiAqICAgICB0aW1lIHZpYSBgU2NvcGVGYWNhZGUuc2V0VmFsdWVgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVlcEVxdWFsKGE6IGFueSwgYjogYW55KTogYm9vbGVhbiB7XG4gIGlmIChhID09PSBiKSByZXR1cm4gdHJ1ZTsgLy8gc2FtZSByZWZlcmVuY2Ugb3IgaWRlbnRpY2FsIHByaW1pdGl2ZVxuICBpZiAodHlwZW9mIGEgIT09IHR5cGVvZiBiKSByZXR1cm4gZmFsc2U7XG4gIGlmIChhID09PSBudWxsIHx8IGIgPT09IG51bGwpIHJldHVybiBhID09PSBiOyAvLyBvbmUgaXMgbnVsbCwgdGhlIG90aGVyIGlzbid0XG4gIGlmICh0eXBlb2YgYSAhPT0gJ29iamVjdCcpIHJldHVybiBPYmplY3QuaXMoYSwgYik7IC8vIE5hTi1zYWZlIHByaW1pdGl2ZSBjb21wYXJlXG5cbiAgY29uc3QgYUlzQXJyYXkgPSBBcnJheS5pc0FycmF5KGEpO1xuICBpZiAoYUlzQXJyYXkgIT09IEFycmF5LmlzQXJyYXkoYikpIHJldHVybiBmYWxzZTsgLy8gYXJyYXkgdnMgcGxhaW4gb2JqZWN0XG5cbiAgaWYgKGFJc0FycmF5KSB7XG4gICAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKCFkZWVwRXF1YWwoYVtpXSwgYltpXSkpIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjb25zdCBhS2V5cyA9IE9iamVjdC5rZXlzKGEpO1xuICBjb25zdCBiS2V5cyA9IE9iamVjdC5rZXlzKGIpO1xuICBpZiAoYUtleXMubGVuZ3RoICE9PSBiS2V5cy5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgZm9yIChjb25zdCBrZXkgb2YgYUtleXMpIHtcbiAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBrZXkpKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKCFkZWVwRXF1YWwoYVtrZXldLCBiW2tleV0pKSByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogRGVlcCB1bmlvbiBtZXJnZSBoZWxwZXIuXG4gKiAtIEFycmF5cyAobm9uLWVtcHR5KTogdW5pb24gd2l0aG91dCBkdXBsaWNhdGVzIChlbmNvdW50ZXIgb3JkZXIgcHJlc2VydmVkKVxuICogLSBBcnJheXMgKGVtcHR5KTogICAgIHJlcGxhY2Ug4oCUIHNyYyBgW11gIGNsZWFycyB0aGUgZGVzdGluYXRpb24gYXJyYXkuXG4gKiAgIFJhdGlvbmFsZTogd3JpdGluZyBgc2NvcGUudGFncyA9IFtdYCBtZWFucyBcImNsZWFyIHRhZ3NcIiwgbm90IFwiYXBwZW5kIG5vdGhpbmdcIi5cbiAqICAgV2l0aG91dCB0aGlzIHJ1bGUsIGFuIGVtcHR5LWFycmF5IHdyaXRlIHNpbGVudGx5IGJlY29tZXMgYSBuby1vcCB3aGljaCBpc1xuICogICBpbXBvc3NpYmxlIHRvIGRpc3Rpbmd1aXNoIGZyb20gYSBidWcuXG4gKiAtIE9iamVjdHM6IHJlY3Vyc2l2ZSBtZXJnZVxuICogLSBQcmltaXRpdmVzOiBzb3VyY2Ugd2luc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZGVlcFNtYXJ0TWVyZ2UoZHN0OiBhbnksIHNyYzogYW55KTogYW55IHtcbiAgaWYgKHNyYyA9PT0gbnVsbCB8fCB0eXBlb2Ygc3JjICE9PSAnb2JqZWN0JykgcmV0dXJuIHNyYztcblxuICBpZiAoQXJyYXkuaXNBcnJheShzcmMpKSB7XG4gICAgaWYgKHNyYy5sZW5ndGggPT09IDApIHJldHVybiBbXTsgLy8gZW1wdHkgc3JjID0gY2xlYXIsIG5vdCBuby1vcFxuICAgIGlmIChBcnJheS5pc0FycmF5KGRzdCkpIHJldHVybiBbLi4ubmV3IFNldChbLi4uZHN0LCAuLi5zcmNdKV07XG4gICAgcmV0dXJuIFsuLi5zcmNdO1xuICB9XG5cbiAgY29uc3Qgb3V0OiBhbnkgPSB7IC4uLihkc3QgJiYgdHlwZW9mIGRzdCA9PT0gJ29iamVjdCcgPyBkc3QgOiB7fSkgfTtcbiAgLy8gT2JqZWN0LmtleXMoKSBpcyBvd24tZW51bWVyYWJsZS1vbmx5IGJ5IHNwZWMg4oCUIG5vIERFTklFRCBjaGVjayBuZWVkZWQgaGVyZS5cbiAgZm9yIChjb25zdCBrIG9mIE9iamVjdC5rZXlzKHNyYykpIHtcbiAgICBvdXRba10gPSBkZWVwU21hcnRNZXJnZShvdXRba10sIHNyY1trXSk7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cblxuLyoqXG4gKiBBcHBsaWVzIGEgY29tbWl0IGJ1bmRsZSB0byBhIGJhc2Ugc3RhdGUgYnkgcmVwbGF5aW5nIG9wZXJhdGlvbnMgaW4gb3JkZXIuXG4gKiBUd28tcGhhc2U6IFVQREFURSAodW5pb24tbWVyZ2UpIHRoZW4gT1ZFUldSSVRFIChkaXJlY3Qgc2V0KS5cbiAqIEd1YXJhbnRlZXMgXCJsYXN0IHdyaXRlciB3aW5zXCIgc2VtYW50aWNzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlTbWFydE1lcmdlKFxuICBiYXNlOiBhbnksXG4gIHVwZGF0ZXM6IE1lbW9yeVBhdGNoLFxuICBvdmVyd3JpdGU6IE1lbW9yeVBhdGNoLFxuICB0cmFjZTogeyBwYXRoOiBzdHJpbmc7IHZlcmI6ICdzZXQnIHwgJ21lcmdlJyB9W10sXG4pOiBhbnkge1xuICBjb25zdCBvdXQgPSBzdHJ1Y3R1cmVkQ2xvbmUoYmFzZSk7XG4gIGZvciAoY29uc3QgeyBwYXRoLCB2ZXJiIH0gb2YgdHJhY2UpIHtcbiAgICBjb25zdCBzZWdzID0gcGF0aC5zcGxpdChERUxJTSk7XG4gICAgaWYgKHZlcmIgPT09ICdzZXQnKSB7XG4gICAgICBfc2V0KG91dCwgc2Vncywgc3RydWN0dXJlZENsb25lKF9nZXQob3ZlcndyaXRlLCBzZWdzKSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjdXJyZW50ID0gX2dldChvdXQsIHNlZ3MpID8/IHt9O1xuICAgICAgX3NldChvdXQsIHNlZ3MsIGRlZXBTbWFydE1lcmdlKGN1cnJlbnQsIF9nZXQodXBkYXRlcywgc2VncykpKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cbiJdfQ==
|
|
@@ -11,8 +11,9 @@ export { DebugRecorder } from './recorders/DebugRecorder.js';
|
|
|
11
11
|
export { MetricRecorder } from './recorders/MetricRecorder.js';
|
|
12
12
|
export { createErrorMessage, createProtectedScope } from './protection/index.js';
|
|
13
13
|
export { __clearScopeResolversForTests, attachScopeMethods, isSubclassOfScopeFacade, looksLikeClassCtor, looksLikeFactory, makeClassProvider, makeFactoryProvider, registerScopeResolver, resolveScopeProvider, toScopeFactory, } from './providers/index.js';
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
// State / Zod — INTENTIONALLY NOT re-exported here.
|
|
15
|
+
// Zod is an OPTIONAL peer; re-exporting it from this barrel would force every
|
|
16
|
+
// `footprintjs` consumer to load zod eagerly (and crash if it isn't installed).
|
|
17
|
+
// The zod-based scope helpers live behind the opt-in `footprintjs/zod` entry
|
|
18
|
+
// (src/zod.ts). Import them from there and add zod to your own dependencies.
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3Njb3BlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBCQUEwQjtBQUMxQjs7Ozs7R0FLRztBQUVILE9BQU87QUFDUCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFpQi9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFJL0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFXakYsT0FBTyxFQUNMLDZCQUE2QixFQUM3QixrQkFBa0IsRUFDbEIsdUJBQXVCLEVBQ3ZCLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDckIsb0JBQW9CLEVBQ3BCLGNBQWMsR0FDZixNQUFNLHNCQUFzQixDQUFDO0FBRTlCLG9EQUFvRDtBQUNwRCw4RUFBOEU7QUFDOUUsZ0ZBQWdGO0FBQ2hGLDZFQUE2RTtBQUM3RSw2RUFBNkUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBpc3RhbmJ1bCBpZ25vcmUgZmlsZSAqL1xuLyoqXG4gKiBzY29wZS8g4oCUIFNjb3BlIG1hbmFnZW1lbnQgbGlicmFyeVxuICpcbiAqIERlcGVuZHMgb24gbWVtb3J5LyAoUGhhc2UgMSkuIFByb3ZpZGVzIFNjb3BlRmFjYWRlLCByZWNvcmRlcnMsXG4gKiBwcm92aWRlcnMsIHByb3RlY3Rpb24sIGFuZCBab2QtYmFzZWQgc2NvcGUgZGVmaW5pdGlvbnMuXG4gKi9cblxuLy8gQ29yZVxuZXhwb3J0IHsgU2NvcGVGYWNhZGUgfSBmcm9tICcuL1Njb3BlRmFjYWRlLmpzJztcblxuLy8gVHlwZXNcbmV4cG9ydCB0eXBlIHtcbiAgQ29tbWl0RXZlbnQsXG4gIEVycm9yRXZlbnQsXG4gIFJlYWRFdmVudCxcbiAgUmVjb3JkZXJDb250ZXh0LFxuICBSZWRhY3Rpb25Qb2xpY3ksXG4gIFJlZGFjdGlvblJlcG9ydCxcbiAgU2NvcGVSZWNvcmRlcixcbiAgU3RhZ2VFdmVudCxcbiAgV3JpdGVFdmVudCxcbn0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbi8vIFJlY29yZGVyc1xuZXhwb3J0IHR5cGUgeyBEZWJ1Z0VudHJ5LCBEZWJ1Z1JlY29yZGVyT3B0aW9ucywgRGVidWdWZXJib3NpdHkgfSBmcm9tICcuL3JlY29yZGVycy9EZWJ1Z1JlY29yZGVyLmpzJztcbmV4cG9ydCB7IERlYnVnUmVjb3JkZXIgfSBmcm9tICcuL3JlY29yZGVycy9EZWJ1Z1JlY29yZGVyLmpzJztcbmV4cG9ydCB0eXBlIHsgQWdncmVnYXRlZE1ldHJpY3MsIFN0YWdlTWV0cmljcyB9IGZyb20gJy4vcmVjb3JkZXJzL01ldHJpY1JlY29yZGVyLmpzJztcbmV4cG9ydCB7IE1ldHJpY1JlY29yZGVyIH0gZnJvbSAnLi9yZWNvcmRlcnMvTWV0cmljUmVjb3JkZXIuanMnO1xuXG4vLyBQcm90ZWN0aW9uXG5leHBvcnQgdHlwZSB7IFNjb3BlUHJvdGVjdGlvbk1vZGUsIFNjb3BlUHJvdGVjdGlvbk9wdGlvbnMgfSBmcm9tICcuL3Byb3RlY3Rpb24vaW5kZXguanMnO1xuZXhwb3J0IHsgY3JlYXRlRXJyb3JNZXNzYWdlLCBjcmVhdGVQcm90ZWN0ZWRTY29wZSB9IGZyb20gJy4vcHJvdGVjdGlvbi9pbmRleC5qcyc7XG5cbi8vIFByb3ZpZGVyc1xuZXhwb3J0IHR5cGUge1xuICBQcm92aWRlclJlc29sdmVyLFxuICBSZXNvbHZlT3B0aW9ucyxcbiAgU2NvcGVGYWN0b3J5LFxuICBTY29wZVByb3ZpZGVyLFxuICBTdGFnZUNvbnRleHRMaWtlLFxuICBTdHJpY3RNb2RlLFxufSBmcm9tICcuL3Byb3ZpZGVycy9pbmRleC5qcyc7XG5leHBvcnQge1xuICBfX2NsZWFyU2NvcGVSZXNvbHZlcnNGb3JUZXN0cyxcbiAgYXR0YWNoU2NvcGVNZXRob2RzLFxuICBpc1N1YmNsYXNzT2ZTY29wZUZhY2FkZSxcbiAgbG9va3NMaWtlQ2xhc3NDdG9yLFxuICBsb29rc0xpa2VGYWN0b3J5LFxuICBtYWtlQ2xhc3NQcm92aWRlcixcbiAgbWFrZUZhY3RvcnlQcm92aWRlcixcbiAgcmVnaXN0ZXJTY29wZVJlc29sdmVyLFxuICByZXNvbHZlU2NvcGVQcm92aWRlcixcbiAgdG9TY29wZUZhY3RvcnksXG59IGZyb20gJy4vcHJvdmlkZXJzL2luZGV4LmpzJztcblxuLy8gU3RhdGUgLyBab2Qg4oCUIElOVEVOVElPTkFMTFkgTk9UIHJlLWV4cG9ydGVkIGhlcmUuXG4vLyBab2QgaXMgYW4gT1BUSU9OQUwgcGVlcjsgcmUtZXhwb3J0aW5nIGl0IGZyb20gdGhpcyBiYXJyZWwgd291bGQgZm9yY2UgZXZlcnlcbi8vIGBmb290cHJpbnRqc2AgY29uc3VtZXIgdG8gbG9hZCB6b2QgZWFnZXJseSAoYW5kIGNyYXNoIGlmIGl0IGlzbid0IGluc3RhbGxlZCkuXG4vLyBUaGUgem9kLWJhc2VkIHNjb3BlIGhlbHBlcnMgbGl2ZSBiZWhpbmQgdGhlIG9wdC1pbiBgZm9vdHByaW50anMvem9kYCBlbnRyeVxuLy8gKHNyYy96b2QudHMpLiBJbXBvcnQgdGhlbSBmcm9tIHRoZXJlIGFuZCBhZGQgem9kIHRvIHlvdXIgb3duIGRlcGVuZGVuY2llcy5cbiJdfQ==
|
package/dist/esm/zod.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `footprintjs/zod` — opt-in Zod integration.
|
|
3
|
+
*
|
|
4
|
+
* Zod is an OPTIONAL peer dependency. The core (`footprintjs`, `footprintjs/advanced`)
|
|
5
|
+
* never imports it, so a plain install needs no zod and never crashes. The
|
|
6
|
+
* zod-based scope helpers live HERE — import them from `'footprintjs/zod'` and
|
|
7
|
+
* add `zod` to your own dependencies:
|
|
8
|
+
*
|
|
9
|
+
* import { defineScopeFromZod, defineScopeSchema } from 'footprintjs/zod';
|
|
10
|
+
*
|
|
11
|
+
* (`ZodScopeResolver` is exported here too if you register it yourself via
|
|
12
|
+
* `registerScopeResolver` from `footprintjs/advanced`.)
|
|
13
|
+
*/
|
|
14
|
+
export { defineScopeFromZod } from './lib/scope/state/zod/defineScopeFromZod.js';
|
|
15
|
+
export { ZodScopeResolver } from './lib/scope/state/zod/resolver.js';
|
|
16
|
+
export { defineScopeSchema, isScopeSchema } from './lib/scope/state/zod/schema/builder.js';
|
|
17
|
+
export { createScopeProxyFromZod } from './lib/scope/state/zod/scopeFactory.js';
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3pvZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7O0dBWUc7QUFHSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNqRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDM0YsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUNBQXVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGBmb290cHJpbnRqcy96b2RgIOKAlCBvcHQtaW4gWm9kIGludGVncmF0aW9uLlxuICpcbiAqIFpvZCBpcyBhbiBPUFRJT05BTCBwZWVyIGRlcGVuZGVuY3kuIFRoZSBjb3JlIChgZm9vdHByaW50anNgLCBgZm9vdHByaW50anMvYWR2YW5jZWRgKVxuICogbmV2ZXIgaW1wb3J0cyBpdCwgc28gYSBwbGFpbiBpbnN0YWxsIG5lZWRzIG5vIHpvZCBhbmQgbmV2ZXIgY3Jhc2hlcy4gVGhlXG4gKiB6b2QtYmFzZWQgc2NvcGUgaGVscGVycyBsaXZlIEhFUkUg4oCUIGltcG9ydCB0aGVtIGZyb20gYCdmb290cHJpbnRqcy96b2QnYCBhbmRcbiAqIGFkZCBgem9kYCB0byB5b3VyIG93biBkZXBlbmRlbmNpZXM6XG4gKlxuICogICBpbXBvcnQgeyBkZWZpbmVTY29wZUZyb21ab2QsIGRlZmluZVNjb3BlU2NoZW1hIH0gZnJvbSAnZm9vdHByaW50anMvem9kJztcbiAqXG4gKiAoYFpvZFNjb3BlUmVzb2x2ZXJgIGlzIGV4cG9ydGVkIGhlcmUgdG9vIGlmIHlvdSByZWdpc3RlciBpdCB5b3Vyc2VsZiB2aWFcbiAqIGByZWdpc3RlclNjb3BlUmVzb2x2ZXJgIGZyb20gYGZvb3RwcmludGpzL2FkdmFuY2VkYC4pXG4gKi9cblxuZXhwb3J0IHR5cGUgeyBEZWZpbmVTY29wZU9wdGlvbnMgfSBmcm9tICcuL2xpYi9zY29wZS9zdGF0ZS96b2QvZGVmaW5lU2NvcGVGcm9tWm9kLmpzJztcbmV4cG9ydCB7IGRlZmluZVNjb3BlRnJvbVpvZCB9IGZyb20gJy4vbGliL3Njb3BlL3N0YXRlL3pvZC9kZWZpbmVTY29wZUZyb21ab2QuanMnO1xuZXhwb3J0IHsgWm9kU2NvcGVSZXNvbHZlciB9IGZyb20gJy4vbGliL3Njb3BlL3N0YXRlL3pvZC9yZXNvbHZlci5qcyc7XG5leHBvcnQgeyBkZWZpbmVTY29wZVNjaGVtYSwgaXNTY29wZVNjaGVtYSB9IGZyb20gJy4vbGliL3Njb3BlL3N0YXRlL3pvZC9zY2hlbWEvYnVpbGRlci5qcyc7XG5leHBvcnQgeyBjcmVhdGVTY29wZVByb3h5RnJvbVpvZCB9IGZyb20gJy4vbGliL3Njb3BlL3N0YXRlL3pvZC9zY29wZUZhY3RvcnkuanMnO1xuIl19
|
package/dist/index.js
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* @module
|
|
16
16
|
*/
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.
|
|
18
|
+
exports.isDevMode = exports.enableDevMode = exports.disableDevMode = exports.formatErrorInfo = exports.extractErrorInfo = exports.validateOrThrow = exports.validateAgainstSchema = exports.InputValidationError = exports.isZod = exports.isValidatable = exports.detectSchema = exports.CompositeRecorder = exports.listSubflowPaths = exports.getSubtreeSnapshot = exports.WindowedNarrativeFlowRecorder = exports.SilentNarrativeFlowRecorder = exports.SeparateNarrativeFlowRecorder = exports.RLENarrativeFlowRecorder = exports.ProgressiveNarrativeFlowRecorder = exports.MilestoneNarrativeFlowRecorder = exports.AdaptiveNarrativeFlowRecorder = exports.ManifestFlowRecorder = exports.NarrativeFlowRecorder = exports.isFlowEvent = exports.hasRecorderMethods = exports.hasFlowRecorderMethods = exports.hasEmitRecorderMethods = exports.RecorderOperation = exports.DebugRecorder = exports.MetricRecorder = exports.RunContext = exports.FlowChartExecutor = exports.select = exports.decide = exports.narrative = exports.flowChartSelector = exports.FlowChartBuilder = exports.flowChart = void 0;
|
|
19
19
|
/** @category Quick Start */
|
|
20
20
|
var index_js_1 = require("./lib/builder/index.js");
|
|
21
21
|
Object.defineProperty(exports, "flowChart", { enumerable: true, get: function () { return index_js_1.flowChart; } });
|
|
@@ -119,7 +119,7 @@ var detectCircular_js_1 = require("./lib/scope/detectCircular.js");
|
|
|
119
119
|
Object.defineProperty(exports, "disableDevMode", { enumerable: true, get: function () { return detectCircular_js_1.disableDevMode; } });
|
|
120
120
|
Object.defineProperty(exports, "enableDevMode", { enumerable: true, get: function () { return detectCircular_js_1.enableDevMode; } });
|
|
121
121
|
Object.defineProperty(exports, "isDevMode", { enumerable: true, get: function () { return detectCircular_js_1.isDevMode; } });
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHOzs7QUFTSCw0QkFBNEI7QUFDNUIsbURBQXdGO0FBQS9FLHFHQUFBLFNBQVMsT0FBQTtBQUFFLDRHQUFBLGdCQUFnQixPQUFBO0FBQUUsNkdBQUEsaUJBQWlCLE9BQUE7QUFtQnZELDRCQUE0QjtBQUM1QiwrQ0FBMkM7QUFBbEMseUdBQUEsU0FBUyxPQUFBO0FBbUJsQixtQ0FBbUM7QUFDbkMsa0RBQXVEO0FBQTlDLGtHQUFBLE1BQU0sT0FBQTtBQUFFLGtHQUFBLE1BQU0sT0FBQTtBQVl2QixvQkFBb0I7QUFDcEIsa0RBQTBEO0FBQWpELDZHQUFBLGlCQUFpQixPQUFBO0FBRTFCLG9CQUFvQjtBQUNwQixrREFBbUQ7QUFBMUMsc0dBQUEsVUFBVSxPQUFBO0FBcUJuQiwrQkFBK0I7QUFDL0IsaURBQXNEO0FBQTdDLDBHQUFBLGNBQWMsT0FBQTtBQUV2QiwrQkFBK0I7QUFDL0IsaURBQXFEO0FBQTVDLHlHQUFBLGFBQWEsT0FBQTtBQUV0QixvQ0FBb0M7QUFDcEMsb0RBQTREO0FBQW5ELDZHQUFBLGlCQUFpQixPQUFBO0FBSTFCLHFFQUFxRTtBQUNyRSxvREFLaUM7QUFKL0Isa0hBQUEsc0JBQXNCLE9BQUE7QUFDdEIsa0hBQUEsc0JBQXNCLE9BQUE7QUFDdEIsOEdBQUEsa0JBQWtCLE9BQUE7QUFDbEIsdUdBQUEsV0FBVyxPQUFBO0FBaURiLCtCQUErQjtBQUMvQixrREFBOEQ7QUFBckQsaUhBQUEscUJBQXFCLE9BQUE7QUFLOUIsK0JBQStCO0FBQy9CLG1EQUE2RDtBQUFwRCxpSEFBQSxvQkFBb0IsT0FBQTtBQUU3QiwrQkFBK0I7QUFDL0IsbURBQXNFO0FBQTdELDBIQUFBLDZCQUE2QixPQUFBO0FBRXRDLCtCQUErQjtBQUMvQixtREFBdUU7QUFBOUQsMkhBQUEsOEJBQThCLE9BQUE7QUFFdkMsK0JBQStCO0FBQy9CLG1EQUF5RTtBQUFoRSw2SEFBQSxnQ0FBZ0MsT0FBQTtBQUV6QywrQkFBK0I7QUFDL0IsbURBQWlFO0FBQXhELHFIQUFBLHdCQUF3QixPQUFBO0FBRWpDLCtCQUErQjtBQUMvQixtREFBc0U7QUFBN0QsMEhBQUEsNkJBQTZCLE9BQUE7QUFFdEMsK0JBQStCO0FBQy9CLG1EQUFvRTtBQUEzRCx3SEFBQSwyQkFBMkIsT0FBQTtBQUVwQywrQkFBK0I7QUFDL0IsbURBQXNFO0FBQTdELDBIQUFBLDZCQUE2QixPQUFBO0FBeUJ0Qyx1Q0FBdUM7QUFDdkMsbURBQTZFO0FBQXBFLCtHQUFBLGtCQUFrQixPQUFBO0FBQUUsNkdBQUEsZ0JBQWdCLE9BQUE7QUFFN0MsK0VBQStFO0FBQy9FLDRFQUE0RTtBQUM1RSwrRUFBK0U7QUFFL0UsOEJBQThCO0FBQzlCLHFEQUE0RDtBQUFuRCw4R0FBQSxpQkFBaUIsT0FBQTtBQThCMUIsc0NBQXNDO0FBQ3RDLG1EQUEyRTtBQUFsRSx5R0FBQSxZQUFZLE9BQUE7QUFBRSwwR0FBQSxhQUFhLE9BQUE7QUFBRSxrR0FBQSxLQUFLLE9BQUE7QUFFM0Msc0NBQXNDO0FBQ3RDLG1EQUFxRztBQUE1RixpSEFBQSxvQkFBb0IsT0FBQTtBQUFFLGtIQUFBLHFCQUFxQixPQUFBO0FBQUUsNEdBQUEsZUFBZSxPQUFBO0FBU3JFLGdDQUFnQztBQUNoQyxtREFBMEU7QUFBakUsNkdBQUEsZ0JBQWdCLE9BQUE7QUFBRSw0R0FBQSxlQUFlLE9BQUE7QUFFMUMsK0VBQStFO0FBQy9FLGlEQUFpRDtBQUNqRCwrRUFBK0U7QUFFL0U7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxtRUFBeUY7QUFBaEYsbUhBQUEsY0FBYyxPQUFBO0FBQUUsa0hBQUEsYUFBYSxPQUFBO0FBQUUsOEdBQUEsU0FBUyxPQUFBO0FBRWpELDBCQUEwQjtBQUMxQixrREFBMEQ7QUFBakQsK0dBQUEsa0JBQWtCLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEZvb3RQcmludCDigJQgUHVibGljIEFQSSAodjMpXG4gKlxuICogVGhlIGZsb3djaGFydCBwYXR0ZXJuIGZvciBiYWNrZW5kIGNvZGUuXG4gKiBCdWlsZCDihpIgUnVuIOKGkiBPYnNlcnZlLlxuICpcbiAqICoqVGhyZWUgaW1wb3J0IHBhdGhzOioqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZmxvd0NoYXJ0LCBkZWNpZGUsIG5hcnJhdGl2ZSB9IGZyb20gJ2Zvb3RwcmludGpzJzsgICAgICAgICAgIC8vIG1haW4g4oCUIHN0YXJ0IGhlcmVcbiAqIGltcG9ydCB7IG1ldHJpY3MsIGRlYnVnLCBtYW5pZmVzdCB9ICAgICBmcm9tICdmb290cHJpbnRqcy9yZWNvcmRlcnMnOyAvLyByZWNvcmRlciBmYWN0b3JpZXNcbiAqIGltcG9ydCB7IFNoYXJlZE1lbW9yeSwgU3RhZ2VDb250ZXh0IH0gICBmcm9tICdmb290cHJpbnRqcy9hZHZhbmNlZCc7ICAvLyBpbnRlcm5hbHNcbiAqIGBgYFxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBRdWljayBTdGFydCDigJQgRXZlcnl0aGluZyB5b3UgbmVlZCBmb3IgOTAlIG9mIHVzZSBjYXNlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0ICovXG5leHBvcnQgdHlwZSB7IEZsb3dDaGFydCwgU3RhZ2VGdW5jdGlvbiBhcyBTdGFnZUhhbmRsZXIsIFN0cmVhbUhhbmRsZXJzIH0gZnJvbSAnLi9saWIvYnVpbGRlci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUXVpY2sgU3RhcnQgKi9cbmV4cG9ydCB7IGZsb3dDaGFydCwgRmxvd0NoYXJ0QnVpbGRlciwgZmxvd0NoYXJ0U2VsZWN0b3IgfSBmcm9tICcuL2xpYi9idWlsZGVyL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBRdWljayBTdGFydCDigJQgYnVpbGQtdGltZSBvYnNlcnZlciAodHdpbiBvZiBGbG93UmVjb3JkZXIpICovXG5leHBvcnQgdHlwZSB7XG4gIFN0cnVjdHVyZURlY2lkZXJDb21wbGV0ZUV2ZW50LFxuICBTdHJ1Y3R1cmVFZGdlQWRkZWRFdmVudCxcbiAgU3RydWN0dXJlRWRnZUtpbmQsXG4gIFN0cnVjdHVyZUxvb3BFZGdlQWRkZWRFdmVudCxcbiAgU3RydWN0dXJlUmVjb3JkZXIsXG4gIFN0cnVjdHVyZVN0YWdlQWRkZWRFdmVudCxcbiAgU3RydWN0dXJlU3ViZmxvd01vdW50ZWRFdmVudCxcbn0gZnJvbSAnLi9saWIvYnVpbGRlci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUXVpY2sgU3RhcnQgKi9cbmV4cG9ydCB0eXBlIHsgVHlwZWRTdGFnZUZ1bmN0aW9uIH0gZnJvbSAnLi9saWIvYnVpbGRlci90eXBlZEZsb3dDaGFydC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUXVpY2sgU3RhcnQgKi9cbmV4cG9ydCB0eXBlIHsgU2NvcGVNZXRob2RzLCBUeXBlZFNjb3BlIH0gZnJvbSAnLi9saWIvcmVhY3RpdmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0ICovXG5leHBvcnQgeyBuYXJyYXRpdmUgfSBmcm9tICcuL3JlY29yZGVycy5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERlY2lzaW9uIEJyYW5jaGluZyDigJQgZGVjaWRlKCkgLyBzZWxlY3QoKSB3aXRoIGV2aWRlbmNlIGNhcHR1cmVcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBEZWNpc2lvbiBCcmFuY2hpbmcgKi9cbmV4cG9ydCB0eXBlIHtcbiAgRGVjaWRlUnVsZSxcbiAgRGVjaXNpb25FdmlkZW5jZSxcbiAgRGVjaXNpb25SZXN1bHQsXG4gIEZpbHRlck9wcyxcbiAgUnVsZUV2aWRlbmNlLFxuICBTZWxlY3Rpb25FdmlkZW5jZSxcbiAgU2VsZWN0aW9uUmVzdWx0LFxuICBXaGVuQ2xhdXNlLFxuICBXaGVyZUZpbHRlcixcbn0gZnJvbSAnLi9saWIvZGVjaWRlL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBEZWNpc2lvbiBCcmFuY2hpbmcgKi9cbmV4cG9ydCB7IGRlY2lkZSwgc2VsZWN0IH0gZnJvbSAnLi9saWIvZGVjaWRlL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUnVuIOKAlCBFeGVjdXRlIGNoYXJ0cyBhbmQgY29sbGVjdCByZXN1bHRzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgUnVuICovXG5leHBvcnQgdHlwZSB7IFJ1blJlc3VsdCB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUnVuICovXG5leHBvcnQgdHlwZSB7IEZsb3dDaGFydEV4ZWN1dG9yT3B0aW9ucyB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUnVuICovXG5leHBvcnQgeyBGbG93Q2hhcnRFeGVjdXRvciB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUnVuICovXG5leHBvcnQgeyBSdW5Db250ZXh0IH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBSdW4gKi9cbmV4cG9ydCB0eXBlIHsgQ2hhcnRPcGVuQVBJT3B0aW9ucywgTUNQVG9vbERlc2NyaXB0aW9uLCBSdW5uYWJsZUZsb3dDaGFydCB9IGZyb20gJy4vbGliL3J1bm5lci9SdW5uYWJsZUNoYXJ0LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gT2JzZXJ2ZSDigJQgRGF0YSAoc2NvcGUgcmVjb3JkZXJzLCBmaXJlIGR1cmluZyBzdGFnZSBleGVjdXRpb24pXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRGF0YSAqL1xuZXhwb3J0IHR5cGUge1xuICBDb21taXRFdmVudCxcbiAgRXJyb3JFdmVudCxcbiAgUmVhZEV2ZW50LFxuICBSZWRhY3Rpb25Qb2xpY3ksXG4gIFJlZGFjdGlvblJlcG9ydCxcbiAgU2NvcGVSZWNvcmRlcixcbiAgU3RhZ2VFdmVudCxcbiAgV3JpdGVFdmVudCxcbn0gZnJvbSAnLi9saWIvc2NvcGUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIERhdGEgKi9cbmV4cG9ydCB7IE1ldHJpY1JlY29yZGVyIH0gZnJvbSAnLi9saWIvc2NvcGUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIERhdGEgKi9cbmV4cG9ydCB7IERlYnVnUmVjb3JkZXIgfSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgT3BlcmF0aW9uICovXG5leHBvcnQgeyBSZWNvcmRlck9wZXJhdGlvbiB9IGZyb20gJy4vbGliL3JlY29yZGVyL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBDb21iaW5lZCAoYm90aCBkYXRhLWZsb3cgYW5kIGNvbnRyb2wtZmxvdykgKi9cbmV4cG9ydCB0eXBlIHsgQ29tYmluZWRSZWNvcmRlciB9IGZyb20gJy4vbGliL3JlY29yZGVyL2luZGV4LmpzJztcbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgQ29tYmluZWQgKGJvdGggZGF0YS1mbG93IGFuZCBjb250cm9sLWZsb3cpICovXG5leHBvcnQge1xuICBoYXNFbWl0UmVjb3JkZXJNZXRob2RzLFxuICBoYXNGbG93UmVjb3JkZXJNZXRob2RzLFxuICBoYXNSZWNvcmRlck1ldGhvZHMsXG4gIGlzRmxvd0V2ZW50LFxufSBmcm9tICcuL2xpYi9yZWNvcmRlci9pbmRleC5qcyc7XG5cbi8qKlxuICogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEVtaXQgKHVzZXItYXV0aG9yZWQgc3RydWN0dXJlZCBldmVudHMpXG4gKlxuICogVGhpcmQgb2JzZXJ2ZXIgY2hhbm5lbCAoYWxvbmdzaWRlIGBTY29wZVJlY29yZGVyYCBhbmQgYEZsb3dSZWNvcmRlcmApLiBDb25zdW1lclxuICogY29kZSBjYWxscyBgc2NvcGUuJGVtaXQobmFtZSwgcGF5bG9hZClgIGZyb20gaW5zaWRlIGEgc3RhZ2U7IGV2ZXJ5IGF0dGFjaGVkXG4gKiBgRW1pdFJlY29yZGVyLm9uRW1pdChldmVudClgIGZpcmVzIHN5bmNocm9ub3VzbHkgd2l0aCBzdGFnZS1jb250ZXh0XG4gKiBlbnJpY2htZW50LiBQYXNzLXRocm91Z2gg4oCUIG5vIGJ1ZmZlcmluZywgemVybyBhbGxvY2F0aW9uIHdoZW4gbm8gcmVjb3JkZXJcbiAqIGlzIGF0dGFjaGVkLlxuICovXG5leHBvcnQgdHlwZSB7IEVtaXRFdmVudCwgRW1pdFJlY29yZGVyIH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBPYnNlcnZlIOKAlCBGbG93IChGbG93UmVjb3JkZXIsIGZpcmVzIGFmdGVyIHN0YWdlIGV4ZWN1dGlvbilcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgdHlwZSB7XG4gIEZsb3dCcmVha0V2ZW50LFxuICBGbG93RGVjaXNpb25FdmVudCxcbiAgRmxvd0Vycm9yRXZlbnQsXG4gIEZsb3dGb3JrRXZlbnQsXG4gIEZsb3dMb29wRXZlbnQsXG4gIEZsb3dOZXh0RXZlbnQsXG4gIEZsb3dSZWNvcmRlcixcbiAgRmxvd1J1bkV2ZW50LFxuICBGbG93UnVuRmFpbGVkRXZlbnQsXG4gIEZsb3dTZWxlY3RlZEV2ZW50LFxuICBGbG93U3RhZ2VFdmVudCxcbiAgRmxvd1N1YmZsb3dFdmVudCxcbiAgRmxvd1N1YmZsb3dSZWdpc3RlcmVkRXZlbnQsXG4gIFRyYXZlcnNhbENvbnRleHQsXG59IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHR5cGUgeyBDb21iaW5lZE5hcnJhdGl2ZUVudHJ5IH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvd1xuICpcbiAqIGBOYXJyYXRpdmVGb3JtYXR0ZXJgIOKAlCBwbHVnZ2FibGUgZm9ybWF0dGVyIHRoYXQgY29udmVydHMgZXZlbnQgY29udGV4dFxuICogb2JqZWN0cyBpbnRvIHRoZSB0ZXh0IGxpbmVzIG9mIHRoZSBuYXJyYXRpdmUuIFByZWZlciB0aGlzIG5hbWUgaW4gbmV3XG4gKiBjb2RlOyBgTmFycmF0aXZlUmVuZGVyZXJgIGlzIGEgZGVwcmVjYXRlZCBhbGlhcyB0aGF0IHdpbGwgYmUgcmVtb3ZlZCBpblxuICogdGhlIG5leHQgbWFqb3IgcmVsZWFzZS5cbiAqL1xuZXhwb3J0IHR5cGUgeyBOYXJyYXRpdmVGb3JtYXR0ZXIsIE5hcnJhdGl2ZVJlbmRlcmVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB0eXBlIHsgTWFuaWZlc3RFbnRyeSB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHsgTWFuaWZlc3RGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB7IEFkYXB0aXZlTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBNaWxlc3RvbmVOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB7IFByb2dyZXNzaXZlTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBSTEVOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB7IFNlcGFyYXRlTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBTaWxlbnROYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB7IFdpbmRvd2VkTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2VsZi1EZXNjcmliaW5nIOKAlCAuY29udHJhY3QoKSwgdG9PcGVuQVBJKCksIHRvTUNQVG9vbCgpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgU2VsZi1EZXNjcmliaW5nICovXG5leHBvcnQgdHlwZSB7XG4gIEZsb3dDaGFydENvbnRyYWN0LFxuICBGbG93Q2hhcnRDb250cmFjdE9wdGlvbnMsXG4gIEpzb25TY2hlbWEsXG4gIE9wZW5BUElPcHRpb25zLFxuICBPcGVuQVBJU3BlYyxcbn0gZnJvbSAnLi9saWIvY29udHJhY3QvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTbmFwc2hvdCAmIENvbXBvc2l0aW9uIOKAlCBTdWJmbG93IG5hdmlnYXRpb24gYW5kIENvbXBvc2FibGVSdW5uZXJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBTbmFwc2hvdCAmIENvbXBvc2l0aW9uICovXG5leHBvcnQgdHlwZSB7IENvbXBvc2FibGVSdW5uZXIgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFNuYXBzaG90ICYgQ29tcG9zaXRpb24gKi9cbmV4cG9ydCB0eXBlIHsgUmVjb3JkZXJTbmFwc2hvdCwgUnVudGltZVNuYXBzaG90LCBTdWJ0cmVlU25hcHNob3QgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFNuYXBzaG90ICYgQ29tcG9zaXRpb24gKi9cbmV4cG9ydCB7IGdldFN1YnRyZWVTbmFwc2hvdCwgbGlzdFN1YmZsb3dQYXRocyB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNjb3BlUmVjb3JkZXIgQ29tcG9zaXRpb24g4oCUIEJ1bmRsZSBtdWx0aXBsZSByZWNvcmRlcnMgaW50byBkb21haW4gcHJlc2V0c1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IFNjb3BlUmVjb3JkZXIgKi9cbmV4cG9ydCB7IENvbXBvc2l0ZVJlY29yZGVyIH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQYXVzZS9SZXN1bWUg4oCUIFNlcmlhbGl6YWJsZSBjaGVja3BvaW50cyBmb3IgbG9uZy1ydW5uaW5nIG9yIGh1bWFuLWluLXRoZS1sb29wIGZsb3dzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgUGF1c2UvUmVzdW1lICovXG4vKiogQGNhdGVnb3J5IFBhdXNlL1Jlc3VtZSAqL1xuZXhwb3J0IHR5cGUgeyBGbG93Y2hhcnRDaGVja3BvaW50LCBQYXVzYWJsZUhhbmRsZXIgfSBmcm9tICcuL2xpYi9wYXVzZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgU2NvcGVSZWNvcmRlciAqL1xuZXhwb3J0IHR5cGUgeyBDb21wb3NpdGVTbmFwc2hvdCB9IGZyb20gJy4vbGliL3JlY29yZGVyL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ29uZmlndXJhdGlvbiDigJQgVHlwZXMgcGFzc2VkIHRvIEZsb3dDaGFydEV4ZWN1dG9yIGFuZCBydW4oKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IENvbmZpZ3VyYXRpb24gKi9cbmV4cG9ydCB0eXBlIHsgRXhlY3V0aW9uRW52LCBFeGVjdXRvclJlc3VsdCwgUGF1c2VkUmVzdWx0LCBSdW5PcHRpb25zIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBDb25maWd1cmF0aW9uICovXG5leHBvcnQgdHlwZSB7IFNjb3BlRmFjdG9yeSB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENvbnRyYWN0ICYgVmFsaWRhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IENvbnRyYWN0ICYgVmFsaWRhdGlvbiAqL1xuZXhwb3J0IHR5cGUgeyBTY2hlbWFLaW5kLCBWYWxpZGF0aW9uSXNzdWUsIFZhbGlkYXRpb25SZXN1bHQgfSBmcm9tICcuL2xpYi9zY2hlbWEvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IENvbnRyYWN0ICYgVmFsaWRhdGlvbiAqL1xuZXhwb3J0IHsgZGV0ZWN0U2NoZW1hLCBpc1ZhbGlkYXRhYmxlLCBpc1pvZCB9IGZyb20gJy4vbGliL3NjaGVtYS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgQ29udHJhY3QgJiBWYWxpZGF0aW9uICovXG5leHBvcnQgeyBJbnB1dFZhbGlkYXRpb25FcnJvciwgdmFsaWRhdGVBZ2FpbnN0U2NoZW1hLCB2YWxpZGF0ZU9yVGhyb3cgfSBmcm9tICcuL2xpYi9zY2hlbWEvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFcnJvciBVdGlsaXRpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBFcnJvciBVdGlsaXRpZXMgKi9cbmV4cG9ydCB0eXBlIHsgU3RydWN0dXJlZEVycm9ySW5mbyB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgRXJyb3IgVXRpbGl0aWVzICovXG5leHBvcnQgeyBleHRyYWN0RXJyb3JJbmZvLCBmb3JtYXRFcnJvckluZm8gfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEZXYgVG9vbHMg4oCUIE1vZGUgZmxhZ3MgYW5kIFpvZCBzY29wZSB1dGlsaXRpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBAY2F0ZWdvcnkgRGV2IFRvb2xzXG4gKlxuICogR2xvYmFsIGRldi1tb2RlIGZsYWcuIENhbGwgYGVuYWJsZURldk1vZGUoKWAgYXQgYXBwbGljYXRpb24gc3RhcnR1cCB0b1xuICogdHVybiBvbiBkZXZlbG9wZXItb25seSBkaWFnbm9zdGljcyBhY3Jvc3MgdGhlIGxpYnJhcnkg4oCUIGNpcmN1bGFyLXJlZmVyZW5jZVxuICogZGV0ZWN0aW9uIGluIHNjb3BlIHdyaXRlcywgd2FybmluZ3Mgd2hlbiBhIHJlY29yZGVyIGhhcyBubyBvYnNlcnZlclxuICogbWV0aG9kcywgc3VzcGljaW91cy1wcmVkaWNhdGUgd2FybmluZ3MgaW4gZGVjaWRlL3NlbGVjdCwgc3RydWN0dXJhbFxuICogY2hlY2tzIGluIGBnZXRTdWJ0cmVlU25hcHNob3RgLCBhbmQgYW55IGZ1dHVyZSBkZXYtb25seSBkaWFnbm9zdGljLlxuICpcbiAqIFByb2R1Y3Rpb24gbGVhdmVzIGl0IE9GRiBieSBkZWZhdWx0ICh6ZXJvIG92ZXJoZWFkKS4gU2VlIHRoZSBKU0RvYyBvblxuICogYGVuYWJsZURldk1vZGVgIGZvciB0aGUgZnVsbCBsaXN0IGFuZCB1c2FnZSBleGFtcGxlLlxuICovXG5leHBvcnQgeyBkaXNhYmxlRGV2TW9kZSwgZW5hYmxlRGV2TW9kZSwgaXNEZXZNb2RlIH0gZnJvbSAnLi9saWIvc2NvcGUvZGV0ZWN0Q2lyY3VsYXIuanMnO1xuXG4vKiogQGNhdGVnb3J5IERldiBUb29scyAqL1xuZXhwb3J0IHsgZGVmaW5lU2NvcGVGcm9tWm9kIH0gZnJvbSAnLi9saWIvc2NvcGUvaW5kZXguanMnO1xuIl19
|
|
122
|
+
// `defineScopeFromZod` and the other zod-based scope helpers moved to the opt-in
|
|
123
|
+
// `footprintjs/zod` entry — keeping zod out of the core load path (it is an
|
|
124
|
+
// optional peer). Import them from 'footprintjs/zod'.
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHOzs7QUFTSCw0QkFBNEI7QUFDNUIsbURBQXdGO0FBQS9FLHFHQUFBLFNBQVMsT0FBQTtBQUFFLDRHQUFBLGdCQUFnQixPQUFBO0FBQUUsNkdBQUEsaUJBQWlCLE9BQUE7QUFtQnZELDRCQUE0QjtBQUM1QiwrQ0FBMkM7QUFBbEMseUdBQUEsU0FBUyxPQUFBO0FBbUJsQixtQ0FBbUM7QUFDbkMsa0RBQXVEO0FBQTlDLGtHQUFBLE1BQU0sT0FBQTtBQUFFLGtHQUFBLE1BQU0sT0FBQTtBQVl2QixvQkFBb0I7QUFDcEIsa0RBQTBEO0FBQWpELDZHQUFBLGlCQUFpQixPQUFBO0FBRTFCLG9CQUFvQjtBQUNwQixrREFBbUQ7QUFBMUMsc0dBQUEsVUFBVSxPQUFBO0FBcUJuQiwrQkFBK0I7QUFDL0IsaURBQXNEO0FBQTdDLDBHQUFBLGNBQWMsT0FBQTtBQUV2QiwrQkFBK0I7QUFDL0IsaURBQXFEO0FBQTVDLHlHQUFBLGFBQWEsT0FBQTtBQUV0QixvQ0FBb0M7QUFDcEMsb0RBQTREO0FBQW5ELDZHQUFBLGlCQUFpQixPQUFBO0FBSTFCLHFFQUFxRTtBQUNyRSxvREFLaUM7QUFKL0Isa0hBQUEsc0JBQXNCLE9BQUE7QUFDdEIsa0hBQUEsc0JBQXNCLE9BQUE7QUFDdEIsOEdBQUEsa0JBQWtCLE9BQUE7QUFDbEIsdUdBQUEsV0FBVyxPQUFBO0FBaURiLCtCQUErQjtBQUMvQixrREFBOEQ7QUFBckQsaUhBQUEscUJBQXFCLE9BQUE7QUFLOUIsK0JBQStCO0FBQy9CLG1EQUE2RDtBQUFwRCxpSEFBQSxvQkFBb0IsT0FBQTtBQUU3QiwrQkFBK0I7QUFDL0IsbURBQXNFO0FBQTdELDBIQUFBLDZCQUE2QixPQUFBO0FBRXRDLCtCQUErQjtBQUMvQixtREFBdUU7QUFBOUQsMkhBQUEsOEJBQThCLE9BQUE7QUFFdkMsK0JBQStCO0FBQy9CLG1EQUF5RTtBQUFoRSw2SEFBQSxnQ0FBZ0MsT0FBQTtBQUV6QywrQkFBK0I7QUFDL0IsbURBQWlFO0FBQXhELHFIQUFBLHdCQUF3QixPQUFBO0FBRWpDLCtCQUErQjtBQUMvQixtREFBc0U7QUFBN0QsMEhBQUEsNkJBQTZCLE9BQUE7QUFFdEMsK0JBQStCO0FBQy9CLG1EQUFvRTtBQUEzRCx3SEFBQSwyQkFBMkIsT0FBQTtBQUVwQywrQkFBK0I7QUFDL0IsbURBQXNFO0FBQTdELDBIQUFBLDZCQUE2QixPQUFBO0FBeUJ0Qyx1Q0FBdUM7QUFDdkMsbURBQTZFO0FBQXBFLCtHQUFBLGtCQUFrQixPQUFBO0FBQUUsNkdBQUEsZ0JBQWdCLE9BQUE7QUFFN0MsK0VBQStFO0FBQy9FLDRFQUE0RTtBQUM1RSwrRUFBK0U7QUFFL0UsOEJBQThCO0FBQzlCLHFEQUE0RDtBQUFuRCw4R0FBQSxpQkFBaUIsT0FBQTtBQThCMUIsc0NBQXNDO0FBQ3RDLG1EQUEyRTtBQUFsRSx5R0FBQSxZQUFZLE9BQUE7QUFBRSwwR0FBQSxhQUFhLE9BQUE7QUFBRSxrR0FBQSxLQUFLLE9BQUE7QUFFM0Msc0NBQXNDO0FBQ3RDLG1EQUFxRztBQUE1RixpSEFBQSxvQkFBb0IsT0FBQTtBQUFFLGtIQUFBLHFCQUFxQixPQUFBO0FBQUUsNEdBQUEsZUFBZSxPQUFBO0FBU3JFLGdDQUFnQztBQUNoQyxtREFBMEU7QUFBakUsNkdBQUEsZ0JBQWdCLE9BQUE7QUFBRSw0R0FBQSxlQUFlLE9BQUE7QUFFMUMsK0VBQStFO0FBQy9FLGlEQUFpRDtBQUNqRCwrRUFBK0U7QUFFL0U7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxtRUFBeUY7QUFBaEYsbUhBQUEsY0FBYyxPQUFBO0FBQUUsa0hBQUEsYUFBYSxPQUFBO0FBQUUsOEdBQUEsU0FBUyxPQUFBO0FBRWpELGlGQUFpRjtBQUNqRiw0RUFBNEU7QUFDNUUsc0RBQXNEIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGb290UHJpbnQg4oCUIFB1YmxpYyBBUEkgKHYzKVxuICpcbiAqIFRoZSBmbG93Y2hhcnQgcGF0dGVybiBmb3IgYmFja2VuZCBjb2RlLlxuICogQnVpbGQg4oaSIFJ1biDihpIgT2JzZXJ2ZS5cbiAqXG4gKiAqKlRocmVlIGltcG9ydCBwYXRoczoqKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IGZsb3dDaGFydCwgZGVjaWRlLCBuYXJyYXRpdmUgfSBmcm9tICdmb290cHJpbnRqcyc7ICAgICAgICAgICAvLyBtYWluIOKAlCBzdGFydCBoZXJlXG4gKiBpbXBvcnQgeyBtZXRyaWNzLCBkZWJ1ZywgbWFuaWZlc3QgfSAgICAgZnJvbSAnZm9vdHByaW50anMvcmVjb3JkZXJzJzsgLy8gcmVjb3JkZXIgZmFjdG9yaWVzXG4gKiBpbXBvcnQgeyBTaGFyZWRNZW1vcnksIFN0YWdlQ29udGV4dCB9ICAgZnJvbSAnZm9vdHByaW50anMvYWR2YW5jZWQnOyAgLy8gaW50ZXJuYWxzXG4gKiBgYGBcbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUXVpY2sgU3RhcnQg4oCUIEV2ZXJ5dGhpbmcgeW91IG5lZWQgZm9yIDkwJSBvZiB1c2UgY2FzZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBRdWljayBTdGFydCAqL1xuZXhwb3J0IHR5cGUgeyBGbG93Q2hhcnQsIFN0YWdlRnVuY3Rpb24gYXMgU3RhZ2VIYW5kbGVyLCBTdHJlYW1IYW5kbGVycyB9IGZyb20gJy4vbGliL2J1aWxkZXIvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0ICovXG5leHBvcnQgeyBmbG93Q2hhcnQsIEZsb3dDaGFydEJ1aWxkZXIsIGZsb3dDaGFydFNlbGVjdG9yIH0gZnJvbSAnLi9saWIvYnVpbGRlci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUXVpY2sgU3RhcnQg4oCUIGJ1aWxkLXRpbWUgb2JzZXJ2ZXIgKHR3aW4gb2YgRmxvd1JlY29yZGVyKSAqL1xuZXhwb3J0IHR5cGUge1xuICBTdHJ1Y3R1cmVEZWNpZGVyQ29tcGxldGVFdmVudCxcbiAgU3RydWN0dXJlRWRnZUFkZGVkRXZlbnQsXG4gIFN0cnVjdHVyZUVkZ2VLaW5kLFxuICBTdHJ1Y3R1cmVMb29wRWRnZUFkZGVkRXZlbnQsXG4gIFN0cnVjdHVyZVJlY29yZGVyLFxuICBTdHJ1Y3R1cmVTdGFnZUFkZGVkRXZlbnQsXG4gIFN0cnVjdHVyZVN1YmZsb3dNb3VudGVkRXZlbnQsXG59IGZyb20gJy4vbGliL2J1aWxkZXIvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0ICovXG5leHBvcnQgdHlwZSB7IFR5cGVkU3RhZ2VGdW5jdGlvbiB9IGZyb20gJy4vbGliL2J1aWxkZXIvdHlwZWRGbG93Q2hhcnQuanMnO1xuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0ICovXG5leHBvcnQgdHlwZSB7IFNjb3BlTWV0aG9kcywgVHlwZWRTY29wZSB9IGZyb20gJy4vbGliL3JlYWN0aXZlL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBRdWljayBTdGFydCAqL1xuZXhwb3J0IHsgbmFycmF0aXZlIH0gZnJvbSAnLi9yZWNvcmRlcnMuanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEZWNpc2lvbiBCcmFuY2hpbmcg4oCUIGRlY2lkZSgpIC8gc2VsZWN0KCkgd2l0aCBldmlkZW5jZSBjYXB0dXJlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgRGVjaXNpb24gQnJhbmNoaW5nICovXG5leHBvcnQgdHlwZSB7XG4gIERlY2lkZVJ1bGUsXG4gIERlY2lzaW9uRXZpZGVuY2UsXG4gIERlY2lzaW9uUmVzdWx0LFxuICBGaWx0ZXJPcHMsXG4gIFJ1bGVFdmlkZW5jZSxcbiAgU2VsZWN0aW9uRXZpZGVuY2UsXG4gIFNlbGVjdGlvblJlc3VsdCxcbiAgV2hlbkNsYXVzZSxcbiAgV2hlcmVGaWx0ZXIsXG59IGZyb20gJy4vbGliL2RlY2lkZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgRGVjaXNpb24gQnJhbmNoaW5nICovXG5leHBvcnQgeyBkZWNpZGUsIHNlbGVjdCB9IGZyb20gJy4vbGliL2RlY2lkZS9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJ1biDigJQgRXhlY3V0ZSBjaGFydHMgYW5kIGNvbGxlY3QgcmVzdWx0c1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IFJ1biAqL1xuZXhwb3J0IHR5cGUgeyBSdW5SZXN1bHQgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFJ1biAqL1xuZXhwb3J0IHR5cGUgeyBGbG93Q2hhcnRFeGVjdXRvck9wdGlvbnMgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFJ1biAqL1xuZXhwb3J0IHsgRmxvd0NoYXJ0RXhlY3V0b3IgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFJ1biAqL1xuZXhwb3J0IHsgUnVuQ29udGV4dCB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUnVuICovXG5leHBvcnQgdHlwZSB7IENoYXJ0T3BlbkFQSU9wdGlvbnMsIE1DUFRvb2xEZXNjcmlwdGlvbiwgUnVubmFibGVGbG93Q2hhcnQgfSBmcm9tICcuL2xpYi9ydW5uZXIvUnVubmFibGVDaGFydC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE9ic2VydmUg4oCUIERhdGEgKHNjb3BlIHJlY29yZGVycywgZmlyZSBkdXJpbmcgc3RhZ2UgZXhlY3V0aW9uKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIERhdGEgKi9cbmV4cG9ydCB0eXBlIHtcbiAgQ29tbWl0RXZlbnQsXG4gIEVycm9yRXZlbnQsXG4gIFJlYWRFdmVudCxcbiAgUmVkYWN0aW9uUG9saWN5LFxuICBSZWRhY3Rpb25SZXBvcnQsXG4gIFNjb3BlUmVjb3JkZXIsXG4gIFN0YWdlRXZlbnQsXG4gIFdyaXRlRXZlbnQsXG59IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBEYXRhICovXG5leHBvcnQgeyBNZXRyaWNSZWNvcmRlciB9IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBEYXRhICovXG5leHBvcnQgeyBEZWJ1Z1JlY29yZGVyIH0gZnJvbSAnLi9saWIvc2NvcGUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIE9wZXJhdGlvbiAqL1xuZXhwb3J0IHsgUmVjb3JkZXJPcGVyYXRpb24gfSBmcm9tICcuL2xpYi9yZWNvcmRlci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgQ29tYmluZWQgKGJvdGggZGF0YS1mbG93IGFuZCBjb250cm9sLWZsb3cpICovXG5leHBvcnQgdHlwZSB7IENvbWJpbmVkUmVjb3JkZXIgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9pbmRleC5qcyc7XG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIENvbWJpbmVkIChib3RoIGRhdGEtZmxvdyBhbmQgY29udHJvbC1mbG93KSAqL1xuZXhwb3J0IHtcbiAgaGFzRW1pdFJlY29yZGVyTWV0aG9kcyxcbiAgaGFzRmxvd1JlY29yZGVyTWV0aG9kcyxcbiAgaGFzUmVjb3JkZXJNZXRob2RzLFxuICBpc0Zsb3dFdmVudCxcbn0gZnJvbSAnLi9saWIvcmVjb3JkZXIvaW5kZXguanMnO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBFbWl0ICh1c2VyLWF1dGhvcmVkIHN0cnVjdHVyZWQgZXZlbnRzKVxuICpcbiAqIFRoaXJkIG9ic2VydmVyIGNoYW5uZWwgKGFsb25nc2lkZSBgU2NvcGVSZWNvcmRlcmAgYW5kIGBGbG93UmVjb3JkZXJgKS4gQ29uc3VtZXJcbiAqIGNvZGUgY2FsbHMgYHNjb3BlLiRlbWl0KG5hbWUsIHBheWxvYWQpYCBmcm9tIGluc2lkZSBhIHN0YWdlOyBldmVyeSBhdHRhY2hlZFxuICogYEVtaXRSZWNvcmRlci5vbkVtaXQoZXZlbnQpYCBmaXJlcyBzeW5jaHJvbm91c2x5IHdpdGggc3RhZ2UtY29udGV4dFxuICogZW5yaWNobWVudC4gUGFzcy10aHJvdWdoIOKAlCBubyBidWZmZXJpbmcsIHplcm8gYWxsb2NhdGlvbiB3aGVuIG5vIHJlY29yZGVyXG4gKiBpcyBhdHRhY2hlZC5cbiAqL1xuZXhwb3J0IHR5cGUgeyBFbWl0RXZlbnQsIEVtaXRSZWNvcmRlciB9IGZyb20gJy4vbGliL3JlY29yZGVyL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gT2JzZXJ2ZSDigJQgRmxvdyAoRmxvd1JlY29yZGVyLCBmaXJlcyBhZnRlciBzdGFnZSBleGVjdXRpb24pXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHR5cGUge1xuICBGbG93QnJlYWtFdmVudCxcbiAgRmxvd0RlY2lzaW9uRXZlbnQsXG4gIEZsb3dFcnJvckV2ZW50LFxuICBGbG93Rm9ya0V2ZW50LFxuICBGbG93TG9vcEV2ZW50LFxuICBGbG93TmV4dEV2ZW50LFxuICBGbG93UmVjb3JkZXIsXG4gIEZsb3dSdW5FdmVudCxcbiAgRmxvd1J1bkZhaWxlZEV2ZW50LFxuICBGbG93U2VsZWN0ZWRFdmVudCxcbiAgRmxvd1N0YWdlRXZlbnQsXG4gIEZsb3dTdWJmbG93RXZlbnQsXG4gIEZsb3dTdWJmbG93UmVnaXN0ZXJlZEV2ZW50LFxuICBUcmF2ZXJzYWxDb250ZXh0LFxufSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB0eXBlIHsgQ29tYmluZWROYXJyYXRpdmVFbnRyeSB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKlxuICogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3dcbiAqXG4gKiBgTmFycmF0aXZlRm9ybWF0dGVyYCDigJQgcGx1Z2dhYmxlIGZvcm1hdHRlciB0aGF0IGNvbnZlcnRzIGV2ZW50IGNvbnRleHRcbiAqIG9iamVjdHMgaW50byB0aGUgdGV4dCBsaW5lcyBvZiB0aGUgbmFycmF0aXZlLiBQcmVmZXIgdGhpcyBuYW1lIGluIG5ld1xuICogY29kZTsgYE5hcnJhdGl2ZVJlbmRlcmVyYCBpcyBhIGRlcHJlY2F0ZWQgYWxpYXMgdGhhdCB3aWxsIGJlIHJlbW92ZWQgaW5cbiAqIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UuXG4gKi9cbmV4cG9ydCB0eXBlIHsgTmFycmF0aXZlRm9ybWF0dGVyLCBOYXJyYXRpdmVSZW5kZXJlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHsgTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgdHlwZSB7IE1hbmlmZXN0RW50cnkgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB7IE1hbmlmZXN0Rmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBBZGFwdGl2ZU5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHsgTWlsZXN0b25lTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBQcm9ncmVzc2l2ZU5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHsgUkxFTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBTZXBhcmF0ZU5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHsgU2lsZW50TmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBXaW5kb3dlZE5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNlbGYtRGVzY3JpYmluZyDigJQgLmNvbnRyYWN0KCksIHRvT3BlbkFQSSgpLCB0b01DUFRvb2woKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IFNlbGYtRGVzY3JpYmluZyAqL1xuZXhwb3J0IHR5cGUge1xuICBGbG93Q2hhcnRDb250cmFjdCxcbiAgRmxvd0NoYXJ0Q29udHJhY3RPcHRpb25zLFxuICBKc29uU2NoZW1hLFxuICBPcGVuQVBJT3B0aW9ucyxcbiAgT3BlbkFQSVNwZWMsXG59IGZyb20gJy4vbGliL2NvbnRyYWN0L2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU25hcHNob3QgJiBDb21wb3NpdGlvbiDigJQgU3ViZmxvdyBuYXZpZ2F0aW9uIGFuZCBDb21wb3NhYmxlUnVubmVyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgU25hcHNob3QgJiBDb21wb3NpdGlvbiAqL1xuZXhwb3J0IHR5cGUgeyBDb21wb3NhYmxlUnVubmVyIH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBTbmFwc2hvdCAmIENvbXBvc2l0aW9uICovXG5leHBvcnQgdHlwZSB7IFJlY29yZGVyU25hcHNob3QsIFJ1bnRpbWVTbmFwc2hvdCwgU3VidHJlZVNuYXBzaG90IH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBTbmFwc2hvdCAmIENvbXBvc2l0aW9uICovXG5leHBvcnQgeyBnZXRTdWJ0cmVlU25hcHNob3QsIGxpc3RTdWJmbG93UGF0aHMgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTY29wZVJlY29yZGVyIENvbXBvc2l0aW9uIOKAlCBCdW5kbGUgbXVsdGlwbGUgcmVjb3JkZXJzIGludG8gZG9tYWluIHByZXNldHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBTY29wZVJlY29yZGVyICovXG5leHBvcnQgeyBDb21wb3NpdGVSZWNvcmRlciB9IGZyb20gJy4vbGliL3JlY29yZGVyL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUGF1c2UvUmVzdW1lIOKAlCBTZXJpYWxpemFibGUgY2hlY2twb2ludHMgZm9yIGxvbmctcnVubmluZyBvciBodW1hbi1pbi10aGUtbG9vcCBmbG93c1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IFBhdXNlL1Jlc3VtZSAqL1xuLyoqIEBjYXRlZ29yeSBQYXVzZS9SZXN1bWUgKi9cbmV4cG9ydCB0eXBlIHsgRmxvd2NoYXJ0Q2hlY2twb2ludCwgUGF1c2FibGVIYW5kbGVyIH0gZnJvbSAnLi9saWIvcGF1c2UvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFNjb3BlUmVjb3JkZXIgKi9cbmV4cG9ydCB0eXBlIHsgQ29tcG9zaXRlU25hcHNob3QgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENvbmZpZ3VyYXRpb24g4oCUIFR5cGVzIHBhc3NlZCB0byBGbG93Q2hhcnRFeGVjdXRvciBhbmQgcnVuKClcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBDb25maWd1cmF0aW9uICovXG5leHBvcnQgdHlwZSB7IEV4ZWN1dGlvbkVudiwgRXhlY3V0b3JSZXN1bHQsIFBhdXNlZFJlc3VsdCwgUnVuT3B0aW9ucyB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgQ29uZmlndXJhdGlvbiAqL1xuZXhwb3J0IHR5cGUgeyBTY29wZUZhY3RvcnkgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDb250cmFjdCAmIFZhbGlkYXRpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBDb250cmFjdCAmIFZhbGlkYXRpb24gKi9cbmV4cG9ydCB0eXBlIHsgU2NoZW1hS2luZCwgVmFsaWRhdGlvbklzc3VlLCBWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnLi9saWIvc2NoZW1hL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBDb250cmFjdCAmIFZhbGlkYXRpb24gKi9cbmV4cG9ydCB7IGRldGVjdFNjaGVtYSwgaXNWYWxpZGF0YWJsZSwgaXNab2QgfSBmcm9tICcuL2xpYi9zY2hlbWEvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IENvbnRyYWN0ICYgVmFsaWRhdGlvbiAqL1xuZXhwb3J0IHsgSW5wdXRWYWxpZGF0aW9uRXJyb3IsIHZhbGlkYXRlQWdhaW5zdFNjaGVtYSwgdmFsaWRhdGVPclRocm93IH0gZnJvbSAnLi9saWIvc2NoZW1hL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRXJyb3IgVXRpbGl0aWVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgRXJyb3IgVXRpbGl0aWVzICovXG5leHBvcnQgdHlwZSB7IFN0cnVjdHVyZWRFcnJvckluZm8gfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IEVycm9yIFV0aWxpdGllcyAqL1xuZXhwb3J0IHsgZXh0cmFjdEVycm9ySW5mbywgZm9ybWF0RXJyb3JJbmZvIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRGV2IFRvb2xzIOKAlCBNb2RlIGZsYWdzIGFuZCBab2Qgc2NvcGUgdXRpbGl0aWVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQGNhdGVnb3J5IERldiBUb29sc1xuICpcbiAqIEdsb2JhbCBkZXYtbW9kZSBmbGFnLiBDYWxsIGBlbmFibGVEZXZNb2RlKClgIGF0IGFwcGxpY2F0aW9uIHN0YXJ0dXAgdG9cbiAqIHR1cm4gb24gZGV2ZWxvcGVyLW9ubHkgZGlhZ25vc3RpY3MgYWNyb3NzIHRoZSBsaWJyYXJ5IOKAlCBjaXJjdWxhci1yZWZlcmVuY2VcbiAqIGRldGVjdGlvbiBpbiBzY29wZSB3cml0ZXMsIHdhcm5pbmdzIHdoZW4gYSByZWNvcmRlciBoYXMgbm8gb2JzZXJ2ZXJcbiAqIG1ldGhvZHMsIHN1c3BpY2lvdXMtcHJlZGljYXRlIHdhcm5pbmdzIGluIGRlY2lkZS9zZWxlY3QsIHN0cnVjdHVyYWxcbiAqIGNoZWNrcyBpbiBgZ2V0U3VidHJlZVNuYXBzaG90YCwgYW5kIGFueSBmdXR1cmUgZGV2LW9ubHkgZGlhZ25vc3RpYy5cbiAqXG4gKiBQcm9kdWN0aW9uIGxlYXZlcyBpdCBPRkYgYnkgZGVmYXVsdCAoemVybyBvdmVyaGVhZCkuIFNlZSB0aGUgSlNEb2Mgb25cbiAqIGBlbmFibGVEZXZNb2RlYCBmb3IgdGhlIGZ1bGwgbGlzdCBhbmQgdXNhZ2UgZXhhbXBsZS5cbiAqL1xuZXhwb3J0IHsgZGlzYWJsZURldk1vZGUsIGVuYWJsZURldk1vZGUsIGlzRGV2TW9kZSB9IGZyb20gJy4vbGliL3Njb3BlL2RldGVjdENpcmN1bGFyLmpzJztcblxuLy8gYGRlZmluZVNjb3BlRnJvbVpvZGAgYW5kIHRoZSBvdGhlciB6b2QtYmFzZWQgc2NvcGUgaGVscGVycyBtb3ZlZCB0byB0aGUgb3B0LWluXG4vLyBgZm9vdHByaW50anMvem9kYCBlbnRyeSDigJQga2VlcGluZyB6b2Qgb3V0IG9mIHRoZSBjb3JlIGxvYWQgcGF0aCAoaXQgaXMgYW5cbi8vIG9wdGlvbmFsIHBlZXIpLiBJbXBvcnQgdGhlbSBmcm9tICdmb290cHJpbnRqcy96b2QnLlxuIl19
|
|
@@ -48,16 +48,64 @@ class TransactionBuffer {
|
|
|
48
48
|
return (0, pathOps_js_1.nativeGet)(this.workingCopy, path, defaultValue);
|
|
49
49
|
}
|
|
50
50
|
/**
|
|
51
|
-
* Flush all staged mutations and return the commit bundle
|
|
51
|
+
* Flush all staged mutations and return the commit bundle — recording the
|
|
52
|
+
* stage's NET CHANGE, not its raw write log.
|
|
53
|
+
*
|
|
54
|
+
* ── WHY (the defect this fixes) ─────────────────────────────────────────
|
|
55
|
+
* Previously every `set`/`merge` was recorded verbatim, so the commit bundle
|
|
56
|
+
* was a log of *operations* rather than *changes*. Two operations produce no
|
|
57
|
+
* net change yet were still committed as "mutations":
|
|
58
|
+
*
|
|
59
|
+
* 1. No-op write — writing a key the value it already holds (e.g. an
|
|
60
|
+
* agent context slot re-emitting identical content every
|
|
61
|
+
* turn). base K=1, stage writes K=1.
|
|
62
|
+
* 2. Write-revert — changing then restoring a key within one stage.
|
|
63
|
+
* base K=1, stage writes K=2 then K=1.
|
|
64
|
+
*
|
|
65
|
+
* Recording these as mutations (a) bloated causal slicing / backtracking with
|
|
66
|
+
* spurious dependencies on intermediate values that never reach final state,
|
|
67
|
+
* and (b) made downstream "what changed here?" consumers light up stages that
|
|
68
|
+
* changed nothing — most visibly the lens highlight flagging every slot.
|
|
69
|
+
*
|
|
70
|
+
* ── HOW ─────────────────────────────────────────────────────────────────
|
|
71
|
+
* At commit we hold BOTH `baseSnapshot` (state when the stage began) and
|
|
72
|
+
* `workingCopy` (state after all its writes). For each path the stage touched
|
|
73
|
+
* we keep it in the bundle ONLY if its final value differs from the base
|
|
74
|
+
* value ({@link deepEqual}). No-op AND write-revert paths drop out, because
|
|
75
|
+
* both compare equal to base. This is a single net-delta diff at commit time
|
|
76
|
+
* — one deep compare per touched path, O(changed state), paid once per stage
|
|
77
|
+
* (NOT per write). A naive per-write deep-equal skip would be more expensive
|
|
78
|
+
* and would still miss write-revert (the intermediate write differs from the
|
|
79
|
+
* value present at the moment of writing).
|
|
80
|
+
*
|
|
81
|
+
* ── TWO HONEST TIERS (by design — do not "unify" them) ──────────────────
|
|
82
|
+
* • commit (here) = CHANGE-level — truthful net delta. Feeds the commit
|
|
83
|
+
* log, causal chain, narrative, and the lens highlight.
|
|
84
|
+
* • `onWrite` event = OP-level — fires on EVERY write attempt regardless of
|
|
85
|
+
* net change. Feeds metrics / behavioural observability
|
|
86
|
+
* (a debugger wants to see "wrote 2, then reverted").
|
|
87
|
+
* `onWrite` is unchanged by this method; only the COMMIT becomes change-only.
|
|
88
|
+
*
|
|
89
|
+
* ── EMPTY COMMITS ARE INTENTIONAL ───────────────────────────────────────
|
|
90
|
+
* A stage that nets no change commits an EMPTY patch — NOT nothing.
|
|
91
|
+
* {@link StageContext.commit} still records the bundle unconditionally, so
|
|
92
|
+
* every executed stage remains a time-travel cursor stop (its `runtimeStageId`
|
|
93
|
+
* marker is preserved); only its PATCH is empty. This is what keeps the
|
|
94
|
+
* commit-indexed slider stable while making the highlight truthful.
|
|
95
|
+
*
|
|
96
|
+
* ── KNOWN LIMITATIONS / FUTURE ──────────────────────────────────────────
|
|
97
|
+
* • Explicit key DELETION is still unrepresentable in MemoryPatch (a removed
|
|
98
|
+
* key cannot be expressed). Setting a key to `undefined` is treated as a
|
|
99
|
+
* change (value differs from base), not a deletion. Tracked for a future
|
|
100
|
+
* `delete` verb.
|
|
101
|
+
* • Array-merge dedup in {@link deepSmartMerge} still uses reference equality
|
|
102
|
+
* (`new Set`), so deep-equal *objects* in a merged array are not deduped.
|
|
103
|
+
* Orthogonal to this change; tracked separately.
|
|
104
|
+
*
|
|
52
105
|
* Resets the buffer to empty state after commit.
|
|
53
106
|
*/
|
|
54
107
|
commit() {
|
|
55
|
-
const payload =
|
|
56
|
-
overwrite: structuredClone(this.overwritePatch),
|
|
57
|
-
updates: structuredClone(this.updatePatch),
|
|
58
|
-
redactedPaths: new Set(this.redactedPaths),
|
|
59
|
-
trace: [...this.opTrace],
|
|
60
|
-
};
|
|
108
|
+
const payload = this.toChangeOnlyPayload();
|
|
61
109
|
this.overwritePatch = {};
|
|
62
110
|
this.updatePatch = {};
|
|
63
111
|
this.opTrace.length = 0;
|
|
@@ -65,6 +113,41 @@ class TransactionBuffer {
|
|
|
65
113
|
this.workingCopy = {};
|
|
66
114
|
return payload;
|
|
67
115
|
}
|
|
116
|
+
/**
|
|
117
|
+
* Rebuild overwrite / updates / trace keeping ONLY paths whose final value
|
|
118
|
+
* differs from the base value — i.e. the stage's net change. See
|
|
119
|
+
* {@link TransactionBuffer.commit} for the rationale.
|
|
120
|
+
*
|
|
121
|
+
* Paths are compared at the exact granularity they were written (each trace
|
|
122
|
+
* entry's path), against `workingCopy` (final) vs `baseSnapshot` (start).
|
|
123
|
+
* Surviving `set` paths copy their final value from `overwritePatch`;
|
|
124
|
+
* surviving `merge` paths copy their accumulated delta from `updatePatch` —
|
|
125
|
+
* preserving the set-vs-merge verb so replay ({@link applySmartMerge}) is
|
|
126
|
+
* byte-for-byte identical to recording only the real changes.
|
|
127
|
+
*/
|
|
128
|
+
toChangeOnlyPayload() {
|
|
129
|
+
const overwrite = {};
|
|
130
|
+
const updates = {};
|
|
131
|
+
const trace = [];
|
|
132
|
+
const survivingPaths = new Set();
|
|
133
|
+
for (const op of this.opTrace) {
|
|
134
|
+
const segments = op.path.split(utils_js_1.DELIM);
|
|
135
|
+
const before = (0, pathOps_js_1.nativeGet)(this.baseSnapshot, segments);
|
|
136
|
+
const after = (0, pathOps_js_1.nativeGet)(this.workingCopy, segments);
|
|
137
|
+
if ((0, utils_js_1.deepEqual)(before, after))
|
|
138
|
+
continue; // no-op or write-then-revert → no net change
|
|
139
|
+
trace.push(op);
|
|
140
|
+
survivingPaths.add(op.path);
|
|
141
|
+
if (op.verb === 'set') {
|
|
142
|
+
(0, pathOps_js_1.nativeSet)(overwrite, segments, structuredClone((0, pathOps_js_1.nativeGet)(this.overwritePatch, segments)));
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
(0, pathOps_js_1.nativeSet)(updates, segments, structuredClone((0, pathOps_js_1.nativeGet)(this.updatePatch, segments)));
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
const redactedPaths = new Set([...this.redactedPaths].filter((path) => survivingPaths.has(path)));
|
|
149
|
+
return { overwrite, updates, redactedPaths, trace };
|
|
150
|
+
}
|
|
68
151
|
}
|
|
69
152
|
exports.TransactionBuffer = TransactionBuffer;
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhbnNhY3Rpb25CdWZmZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL21lbW9yeS9UcmFuc2FjdGlvbkJ1ZmZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7O0dBUUc7OztBQUVILDZDQUFvRTtBQUVwRSx5Q0FBMkQ7QUFFM0QsTUFBYSxpQkFBaUI7SUFDWCxZQUFZLENBQU07SUFDM0IsV0FBVyxDQUFNO0lBRWpCLGNBQWMsR0FBZ0IsRUFBRSxDQUFDO0lBQ2pDLFdBQVcsR0FBZ0IsRUFBRSxDQUFDO0lBQzlCLE9BQU8sR0FBOEMsRUFBRSxDQUFDO0lBQ3hELGFBQWEsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBRTFDLFlBQVksSUFBUztRQUNuQixJQUFJLENBQUMsWUFBWSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsV0FBVyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsNENBQTRDO0lBQzVDLEdBQUcsQ0FBQyxJQUF5QixFQUFFLEtBQVUsRUFBRSxZQUFZLEdBQUcsS0FBSztRQUM3RCxJQUFBLHNCQUFJLEVBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDcEMsSUFBQSxzQkFBSSxFQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxFQUFFLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3hELElBQUksWUFBWSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBQSx3QkFBYSxFQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUEsd0JBQWEsRUFBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsOENBQThDO0lBQzlDLEtBQUssQ0FBQyxJQUF5QixFQUFFLEtBQVUsRUFBRSxZQUFZLEdBQUcsS0FBSztRQUMvRCxNQUFNLFFBQVEsR0FBRyxJQUFBLHNCQUFJLEVBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDcEQsTUFBTSxNQUFNLEdBQUcsSUFBQSx5QkFBYyxFQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMvQyxJQUFBLHNCQUFJLEVBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDckMsSUFBQSxzQkFBSSxFQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLElBQUEseUJBQWMsRUFBQyxJQUFBLHNCQUFJLEVBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN4RixJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUEsd0JBQWEsRUFBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFBLHdCQUFhLEVBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELGlFQUFpRTtJQUNqRSxHQUFHLENBQUMsSUFBeUIsRUFBRSxZQUFrQjtRQUMvQyxPQUFPLElBQUEsc0JBQUksRUFBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTTtRQU1KLE1BQU0sT0FBTyxHQUFHO1lBQ2QsU0FBUyxFQUFFLGVBQWUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQy9DLE9BQU8sRUFBRSxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUMxQyxhQUFhLEVBQUUsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUMxQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7U0FDekIsQ0FBQztRQUVGLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBRXRCLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQWxFRCw4Q0FrRUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRyYW5zYWN0aW9uQnVmZmVyIOKAlCBUcmFuc2FjdGlvbmFsIHdyaXRlIGJ1ZmZlciBmb3Igc3RhZ2UgbXV0YXRpb25zXG4gKlxuICogQ29sbGVjdHMgd3JpdGVzIGR1cmluZyBleGVjdXRpb24gYW5kIGNvbW1pdHMgdGhlbSBhdG9taWNhbGx5LlxuICogTGlrZSBhIGRhdGFiYXNlIHRyYW5zYWN0aW9uIGJ1ZmZlcjpcbiAqIC0gQ2hhbmdlcyBzdGFnZWQgaGVyZSBiZWZvcmUgYmVpbmcgY29tbWl0dGVkIHRvIFNoYXJlZE1lbW9yeVxuICogLSBFbmFibGVzIHJlYWQtYWZ0ZXItd3JpdGUgY29uc2lzdGVuY3kgd2l0aGluIGEgc3RhZ2VcbiAqIC0gUmVjb3JkcyBvcGVyYXRpb24gdHJhY2UgZm9yIGRldGVybWluaXN0aWMgcmVwbGF5XG4gKi9cblxuaW1wb3J0IHsgbmF0aXZlR2V0IGFzIF9nZXQsIG5hdGl2ZVNldCBhcyBfc2V0IH0gZnJvbSAnLi9wYXRoT3BzLmpzJztcbmltcG9ydCB0eXBlIHsgTWVtb3J5UGF0Y2ggfSBmcm9tICcuL3R5cGVzLmpzJztcbmltcG9ydCB7IGRlZXBTbWFydE1lcmdlLCBub3JtYWxpc2VQYXRoIH0gZnJvbSAnLi91dGlscy5qcyc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbkJ1ZmZlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYmFzZVNuYXBzaG90OiBhbnk7XG4gIHByaXZhdGUgd29ya2luZ0NvcHk6IGFueTtcblxuICBwcml2YXRlIG92ZXJ3cml0ZVBhdGNoOiBNZW1vcnlQYXRjaCA9IHt9O1xuICBwcml2YXRlIHVwZGF0ZVBhdGNoOiBNZW1vcnlQYXRjaCA9IHt9O1xuICBwcml2YXRlIG9wVHJhY2U6IHsgcGF0aDogc3RyaW5nOyB2ZXJiOiAnc2V0JyB8ICdtZXJnZScgfVtdID0gW107XG4gIHByaXZhdGUgcmVkYWN0ZWRQYXRocyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gIGNvbnN0cnVjdG9yKGJhc2U6IGFueSkge1xuICAgIHRoaXMuYmFzZVNuYXBzaG90ID0gc3RydWN0dXJlZENsb25lKGJhc2UpO1xuICAgIHRoaXMud29ya2luZ0NvcHkgPSBzdHJ1Y3R1cmVkQ2xvbmUoYmFzZSk7XG4gIH1cblxuICAvKiogSGFyZCBvdmVyd3JpdGUgYXQgdGhlIHNwZWNpZmllZCBwYXRoLiAqL1xuICBzZXQocGF0aDogKHN0cmluZyB8IG51bWJlcilbXSwgdmFsdWU6IGFueSwgc2hvdWxkUmVkYWN0ID0gZmFsc2UpOiB2b2lkIHtcbiAgICBfc2V0KHRoaXMud29ya2luZ0NvcHksIHBhdGgsIHZhbHVlKTtcbiAgICBfc2V0KHRoaXMub3ZlcndyaXRlUGF0Y2gsIHBhdGgsIHN0cnVjdHVyZWRDbG9uZSh2YWx1ZSkpO1xuICAgIGlmIChzaG91bGRSZWRhY3QpIHtcbiAgICAgIHRoaXMucmVkYWN0ZWRQYXRocy5hZGQobm9ybWFsaXNlUGF0aChwYXRoKSk7XG4gICAgfVxuICAgIHRoaXMub3BUcmFjZS5wdXNoKHsgcGF0aDogbm9ybWFsaXNlUGF0aChwYXRoKSwgdmVyYjogJ3NldCcgfSk7XG4gIH1cblxuICAvKiogRGVlcCB1bmlvbiBtZXJnZSBhdCB0aGUgc3BlY2lmaWVkIHBhdGguICovXG4gIG1lcmdlKHBhdGg6IChzdHJpbmcgfCBudW1iZXIpW10sIHZhbHVlOiBhbnksIHNob3VsZFJlZGFjdCA9IGZhbHNlKTogdm9pZCB7XG4gICAgY29uc3QgZXhpc3RpbmcgPSBfZ2V0KHRoaXMud29ya2luZ0NvcHksIHBhdGgpID8/IHt9O1xuICAgIGNvbnN0IG1lcmdlZCA9IGRlZXBTbWFydE1lcmdlKGV4aXN0aW5nLCB2YWx1ZSk7XG4gICAgX3NldCh0aGlzLndvcmtpbmdDb3B5LCBwYXRoLCBtZXJnZWQpO1xuICAgIF9zZXQodGhpcy51cGRhdGVQYXRjaCwgcGF0aCwgZGVlcFNtYXJ0TWVyZ2UoX2dldCh0aGlzLnVwZGF0ZVBhdGNoLCBwYXRoKSA/PyB7fSwgdmFsdWUpKTtcbiAgICBpZiAoc2hvdWxkUmVkYWN0KSB7XG4gICAgICB0aGlzLnJlZGFjdGVkUGF0aHMuYWRkKG5vcm1hbGlzZVBhdGgocGF0aCkpO1xuICAgIH1cbiAgICB0aGlzLm9wVHJhY2UucHVzaCh7IHBhdGg6IG5vcm1hbGlzZVBhdGgocGF0aCksIHZlcmI6ICdtZXJnZScgfSk7XG4gIH1cblxuICAvKiogUmVhZCBjdXJyZW50IHZhbHVlIGF0IHBhdGggKGluY2x1ZGVzIHVuY29tbWl0dGVkIGNoYW5nZXMpLiAqL1xuICBnZXQocGF0aDogKHN0cmluZyB8IG51bWJlcilbXSwgZGVmYXVsdFZhbHVlPzogYW55KSB7XG4gICAgcmV0dXJuIF9nZXQodGhpcy53b3JraW5nQ29weSwgcGF0aCwgZGVmYXVsdFZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGbHVzaCBhbGwgc3RhZ2VkIG11dGF0aW9ucyBhbmQgcmV0dXJuIHRoZSBjb21taXQgYnVuZGxlLlxuICAgKiBSZXNldHMgdGhlIGJ1ZmZlciB0byBlbXB0eSBzdGF0ZSBhZnRlciBjb21taXQuXG4gICAqL1xuICBjb21taXQoKToge1xuICAgIG92ZXJ3cml0ZTogTWVtb3J5UGF0Y2g7XG4gICAgdXBkYXRlczogTWVtb3J5UGF0Y2g7XG4gICAgcmVkYWN0ZWRQYXRoczogU2V0PHN0cmluZz47XG4gICAgdHJhY2U6IHsgcGF0aDogc3RyaW5nOyB2ZXJiOiAnc2V0JyB8ICdtZXJnZScgfVtdO1xuICB9IHtcbiAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgb3ZlcndyaXRlOiBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5vdmVyd3JpdGVQYXRjaCksXG4gICAgICB1cGRhdGVzOiBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy51cGRhdGVQYXRjaCksXG4gICAgICByZWRhY3RlZFBhdGhzOiBuZXcgU2V0KHRoaXMucmVkYWN0ZWRQYXRocyksXG4gICAgICB0cmFjZTogWy4uLnRoaXMub3BUcmFjZV0sXG4gICAgfTtcblxuICAgIHRoaXMub3ZlcndyaXRlUGF0Y2ggPSB7fTtcbiAgICB0aGlzLnVwZGF0ZVBhdGNoID0ge307XG4gICAgdGhpcy5vcFRyYWNlLmxlbmd0aCA9IDA7XG4gICAgdGhpcy5yZWRhY3RlZFBhdGhzLmNsZWFyKCk7XG4gICAgdGhpcy53b3JraW5nQ29weSA9IHt9O1xuXG4gICAgcmV0dXJuIHBheWxvYWQ7XG4gIH1cbn1cbiJdfQ==
|
|
153
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhbnNhY3Rpb25CdWZmZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL21lbW9yeS9UcmFuc2FjdGlvbkJ1ZmZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7O0dBUUc7OztBQUVILDZDQUFvRTtBQUVwRSx5Q0FBNkU7QUFFN0UsTUFBYSxpQkFBaUI7SUFDWCxZQUFZLENBQU07SUFDM0IsV0FBVyxDQUFNO0lBRWpCLGNBQWMsR0FBZ0IsRUFBRSxDQUFDO0lBQ2pDLFdBQVcsR0FBZ0IsRUFBRSxDQUFDO0lBQzlCLE9BQU8sR0FBOEMsRUFBRSxDQUFDO0lBQ3hELGFBQWEsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBRTFDLFlBQVksSUFBUztRQUNuQixJQUFJLENBQUMsWUFBWSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsV0FBVyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsNENBQTRDO0lBQzVDLEdBQUcsQ0FBQyxJQUF5QixFQUFFLEtBQVUsRUFBRSxZQUFZLEdBQUcsS0FBSztRQUM3RCxJQUFBLHNCQUFJLEVBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDcEMsSUFBQSxzQkFBSSxFQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxFQUFFLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3hELElBQUksWUFBWSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBQSx3QkFBYSxFQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUEsd0JBQWEsRUFBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsOENBQThDO0lBQzlDLEtBQUssQ0FBQyxJQUF5QixFQUFFLEtBQVUsRUFBRSxZQUFZLEdBQUcsS0FBSztRQUMvRCxNQUFNLFFBQVEsR0FBRyxJQUFBLHNCQUFJLEVBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDcEQsTUFBTSxNQUFNLEdBQUcsSUFBQSx5QkFBYyxFQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMvQyxJQUFBLHNCQUFJLEVBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDckMsSUFBQSxzQkFBSSxFQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLElBQUEseUJBQWMsRUFBQyxJQUFBLHNCQUFJLEVBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN4RixJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUEsd0JBQWEsRUFBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFBLHdCQUFhLEVBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELGlFQUFpRTtJQUNqRSxHQUFHLENBQUMsSUFBeUIsRUFBRSxZQUFrQjtRQUMvQyxPQUFPLElBQUEsc0JBQUksRUFBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Bd0RHO0lBQ0gsTUFBTTtRQU1KLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBRTNDLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBRXRCLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNLLG1CQUFtQjtRQU16QixNQUFNLFNBQVMsR0FBZ0IsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sT0FBTyxHQUFnQixFQUFFLENBQUM7UUFDaEMsTUFBTSxLQUFLLEdBQThDLEVBQUUsQ0FBQztRQUM1RCxNQUFNLGNBQWMsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO1FBRXpDLEtBQUssTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzlCLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFLLENBQUMsQ0FBQztZQUN0QyxNQUFNLE1BQU0sR0FBRyxJQUFBLHNCQUFJLEVBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNqRCxNQUFNLEtBQUssR0FBRyxJQUFBLHNCQUFJLEVBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUMvQyxJQUFJLElBQUEsb0JBQVMsRUFBQyxNQUFNLEVBQUUsS0FBSyxDQUFDO2dCQUFFLFNBQVMsQ0FBQyw2Q0FBNkM7WUFFckYsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNmLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVCLElBQUksRUFBRSxDQUFDLElBQUksS0FBSyxLQUFLLEVBQUUsQ0FBQztnQkFDdEIsSUFBQSxzQkFBSSxFQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsZUFBZSxDQUFDLElBQUEsc0JBQUksRUFBQyxJQUFJLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsRixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBQSxzQkFBSSxFQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsZUFBZSxDQUFDLElBQUEsc0JBQUksRUFBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM3RSxDQUFDO1FBQ0gsQ0FBQztRQUVELE1BQU0sYUFBYSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDdEQsQ0FBQztDQUNGO0FBNUpELDhDQTRKQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVHJhbnNhY3Rpb25CdWZmZXIg4oCUIFRyYW5zYWN0aW9uYWwgd3JpdGUgYnVmZmVyIGZvciBzdGFnZSBtdXRhdGlvbnNcbiAqXG4gKiBDb2xsZWN0cyB3cml0ZXMgZHVyaW5nIGV4ZWN1dGlvbiBhbmQgY29tbWl0cyB0aGVtIGF0b21pY2FsbHkuXG4gKiBMaWtlIGEgZGF0YWJhc2UgdHJhbnNhY3Rpb24gYnVmZmVyOlxuICogLSBDaGFuZ2VzIHN0YWdlZCBoZXJlIGJlZm9yZSBiZWluZyBjb21taXR0ZWQgdG8gU2hhcmVkTWVtb3J5XG4gKiAtIEVuYWJsZXMgcmVhZC1hZnRlci13cml0ZSBjb25zaXN0ZW5jeSB3aXRoaW4gYSBzdGFnZVxuICogLSBSZWNvcmRzIG9wZXJhdGlvbiB0cmFjZSBmb3IgZGV0ZXJtaW5pc3RpYyByZXBsYXlcbiAqL1xuXG5pbXBvcnQgeyBuYXRpdmVHZXQgYXMgX2dldCwgbmF0aXZlU2V0IGFzIF9zZXQgfSBmcm9tICcuL3BhdGhPcHMuanMnO1xuaW1wb3J0IHR5cGUgeyBNZW1vcnlQYXRjaCB9IGZyb20gJy4vdHlwZXMuanMnO1xuaW1wb3J0IHsgZGVlcEVxdWFsLCBkZWVwU21hcnRNZXJnZSwgREVMSU0sIG5vcm1hbGlzZVBhdGggfSBmcm9tICcuL3V0aWxzLmpzJztcblxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uQnVmZmVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBiYXNlU25hcHNob3Q6IGFueTtcbiAgcHJpdmF0ZSB3b3JraW5nQ29weTogYW55O1xuXG4gIHByaXZhdGUgb3ZlcndyaXRlUGF0Y2g6IE1lbW9yeVBhdGNoID0ge307XG4gIHByaXZhdGUgdXBkYXRlUGF0Y2g6IE1lbW9yeVBhdGNoID0ge307XG4gIHByaXZhdGUgb3BUcmFjZTogeyBwYXRoOiBzdHJpbmc7IHZlcmI6ICdzZXQnIHwgJ21lcmdlJyB9W10gPSBbXTtcbiAgcHJpdmF0ZSByZWRhY3RlZFBhdGhzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgY29uc3RydWN0b3IoYmFzZTogYW55KSB7XG4gICAgdGhpcy5iYXNlU25hcHNob3QgPSBzdHJ1Y3R1cmVkQ2xvbmUoYmFzZSk7XG4gICAgdGhpcy53b3JraW5nQ29weSA9IHN0cnVjdHVyZWRDbG9uZShiYXNlKTtcbiAgfVxuXG4gIC8qKiBIYXJkIG92ZXJ3cml0ZSBhdCB0aGUgc3BlY2lmaWVkIHBhdGguICovXG4gIHNldChwYXRoOiAoc3RyaW5nIHwgbnVtYmVyKVtdLCB2YWx1ZTogYW55LCBzaG91bGRSZWRhY3QgPSBmYWxzZSk6IHZvaWQge1xuICAgIF9zZXQodGhpcy53b3JraW5nQ29weSwgcGF0aCwgdmFsdWUpO1xuICAgIF9zZXQodGhpcy5vdmVyd3JpdGVQYXRjaCwgcGF0aCwgc3RydWN0dXJlZENsb25lKHZhbHVlKSk7XG4gICAgaWYgKHNob3VsZFJlZGFjdCkge1xuICAgICAgdGhpcy5yZWRhY3RlZFBhdGhzLmFkZChub3JtYWxpc2VQYXRoKHBhdGgpKTtcbiAgICB9XG4gICAgdGhpcy5vcFRyYWNlLnB1c2goeyBwYXRoOiBub3JtYWxpc2VQYXRoKHBhdGgpLCB2ZXJiOiAnc2V0JyB9KTtcbiAgfVxuXG4gIC8qKiBEZWVwIHVuaW9uIG1lcmdlIGF0IHRoZSBzcGVjaWZpZWQgcGF0aC4gKi9cbiAgbWVyZ2UocGF0aDogKHN0cmluZyB8IG51bWJlcilbXSwgdmFsdWU6IGFueSwgc2hvdWxkUmVkYWN0ID0gZmFsc2UpOiB2b2lkIHtcbiAgICBjb25zdCBleGlzdGluZyA9IF9nZXQodGhpcy53b3JraW5nQ29weSwgcGF0aCkgPz8ge307XG4gICAgY29uc3QgbWVyZ2VkID0gZGVlcFNtYXJ0TWVyZ2UoZXhpc3RpbmcsIHZhbHVlKTtcbiAgICBfc2V0KHRoaXMud29ya2luZ0NvcHksIHBhdGgsIG1lcmdlZCk7XG4gICAgX3NldCh0aGlzLnVwZGF0ZVBhdGNoLCBwYXRoLCBkZWVwU21hcnRNZXJnZShfZ2V0KHRoaXMudXBkYXRlUGF0Y2gsIHBhdGgpID8/IHt9LCB2YWx1ZSkpO1xuICAgIGlmIChzaG91bGRSZWRhY3QpIHtcbiAgICAgIHRoaXMucmVkYWN0ZWRQYXRocy5hZGQobm9ybWFsaXNlUGF0aChwYXRoKSk7XG4gICAgfVxuICAgIHRoaXMub3BUcmFjZS5wdXNoKHsgcGF0aDogbm9ybWFsaXNlUGF0aChwYXRoKSwgdmVyYjogJ21lcmdlJyB9KTtcbiAgfVxuXG4gIC8qKiBSZWFkIGN1cnJlbnQgdmFsdWUgYXQgcGF0aCAoaW5jbHVkZXMgdW5jb21taXR0ZWQgY2hhbmdlcykuICovXG4gIGdldChwYXRoOiAoc3RyaW5nIHwgbnVtYmVyKVtdLCBkZWZhdWx0VmFsdWU/OiBhbnkpIHtcbiAgICByZXR1cm4gX2dldCh0aGlzLndvcmtpbmdDb3B5LCBwYXRoLCBkZWZhdWx0VmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZsdXNoIGFsbCBzdGFnZWQgbXV0YXRpb25zIGFuZCByZXR1cm4gdGhlIGNvbW1pdCBidW5kbGUg4oCUIHJlY29yZGluZyB0aGVcbiAgICogc3RhZ2UncyBORVQgQ0hBTkdFLCBub3QgaXRzIHJhdyB3cml0ZSBsb2cuXG4gICAqXG4gICAqIOKUgOKUgCBXSFkgKHRoZSBkZWZlY3QgdGhpcyBmaXhlcykg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gICAqIFByZXZpb3VzbHkgZXZlcnkgYHNldGAvYG1lcmdlYCB3YXMgcmVjb3JkZWQgdmVyYmF0aW0sIHNvIHRoZSBjb21taXQgYnVuZGxlXG4gICAqIHdhcyBhIGxvZyBvZiAqb3BlcmF0aW9ucyogcmF0aGVyIHRoYW4gKmNoYW5nZXMqLiBUd28gb3BlcmF0aW9ucyBwcm9kdWNlIG5vXG4gICAqIG5ldCBjaGFuZ2UgeWV0IHdlcmUgc3RpbGwgY29tbWl0dGVkIGFzIFwibXV0YXRpb25zXCI6XG4gICAqXG4gICAqICAgMS4gTm8tb3Agd3JpdGUgICDigJQgd3JpdGluZyBhIGtleSB0aGUgdmFsdWUgaXQgYWxyZWFkeSBob2xkcyAoZS5nLiBhblxuICAgKiAgICAgICAgICAgICAgICAgICAgICBhZ2VudCBjb250ZXh0IHNsb3QgcmUtZW1pdHRpbmcgaWRlbnRpY2FsIGNvbnRlbnQgZXZlcnlcbiAgICogICAgICAgICAgICAgICAgICAgICAgdHVybikuIGJhc2UgSz0xLCBzdGFnZSB3cml0ZXMgSz0xLlxuICAgKiAgIDIuIFdyaXRlLXJldmVydCAg4oCUIGNoYW5naW5nIHRoZW4gcmVzdG9yaW5nIGEga2V5IHdpdGhpbiBvbmUgc3RhZ2UuXG4gICAqICAgICAgICAgICAgICAgICAgICAgIGJhc2UgSz0xLCBzdGFnZSB3cml0ZXMgSz0yIHRoZW4gSz0xLlxuICAgKlxuICAgKiBSZWNvcmRpbmcgdGhlc2UgYXMgbXV0YXRpb25zIChhKSBibG9hdGVkIGNhdXNhbCBzbGljaW5nIC8gYmFja3RyYWNraW5nIHdpdGhcbiAgICogc3B1cmlvdXMgZGVwZW5kZW5jaWVzIG9uIGludGVybWVkaWF0ZSB2YWx1ZXMgdGhhdCBuZXZlciByZWFjaCBmaW5hbCBzdGF0ZSxcbiAgICogYW5kIChiKSBtYWRlIGRvd25zdHJlYW0gXCJ3aGF0IGNoYW5nZWQgaGVyZT9cIiBjb25zdW1lcnMgbGlnaHQgdXAgc3RhZ2VzIHRoYXRcbiAgICogY2hhbmdlZCBub3RoaW5nIOKAlCBtb3N0IHZpc2libHkgdGhlIGxlbnMgaGlnaGxpZ2h0IGZsYWdnaW5nIGV2ZXJ5IHNsb3QuXG4gICAqXG4gICAqIOKUgOKUgCBIT1cg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gICAqIEF0IGNvbW1pdCB3ZSBob2xkIEJPVEggYGJhc2VTbmFwc2hvdGAgKHN0YXRlIHdoZW4gdGhlIHN0YWdlIGJlZ2FuKSBhbmRcbiAgICogYHdvcmtpbmdDb3B5YCAoc3RhdGUgYWZ0ZXIgYWxsIGl0cyB3cml0ZXMpLiBGb3IgZWFjaCBwYXRoIHRoZSBzdGFnZSB0b3VjaGVkXG4gICAqIHdlIGtlZXAgaXQgaW4gdGhlIGJ1bmRsZSBPTkxZIGlmIGl0cyBmaW5hbCB2YWx1ZSBkaWZmZXJzIGZyb20gdGhlIGJhc2VcbiAgICogdmFsdWUgKHtAbGluayBkZWVwRXF1YWx9KS4gTm8tb3AgQU5EIHdyaXRlLXJldmVydCBwYXRocyBkcm9wIG91dCwgYmVjYXVzZVxuICAgKiBib3RoIGNvbXBhcmUgZXF1YWwgdG8gYmFzZS4gVGhpcyBpcyBhIHNpbmdsZSBuZXQtZGVsdGEgZGlmZiBhdCBjb21taXQgdGltZVxuICAgKiDigJQgb25lIGRlZXAgY29tcGFyZSBwZXIgdG91Y2hlZCBwYXRoLCBPKGNoYW5nZWQgc3RhdGUpLCBwYWlkIG9uY2UgcGVyIHN0YWdlXG4gICAqIChOT1QgcGVyIHdyaXRlKS4gQSBuYWl2ZSBwZXItd3JpdGUgZGVlcC1lcXVhbCBza2lwIHdvdWxkIGJlIG1vcmUgZXhwZW5zaXZlXG4gICAqIGFuZCB3b3VsZCBzdGlsbCBtaXNzIHdyaXRlLXJldmVydCAodGhlIGludGVybWVkaWF0ZSB3cml0ZSBkaWZmZXJzIGZyb20gdGhlXG4gICAqIHZhbHVlIHByZXNlbnQgYXQgdGhlIG1vbWVudCBvZiB3cml0aW5nKS5cbiAgICpcbiAgICog4pSA4pSAIFRXTyBIT05FU1QgVElFUlMgKGJ5IGRlc2lnbiDigJQgZG8gbm90IFwidW5pZnlcIiB0aGVtKSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgICogICDigKIgY29tbWl0IChoZXJlKSAgID0gQ0hBTkdFLWxldmVsIOKAlCB0cnV0aGZ1bCBuZXQgZGVsdGEuIEZlZWRzIHRoZSBjb21taXRcbiAgICogICAgICAgICAgICAgICAgICAgICAgIGxvZywgY2F1c2FsIGNoYWluLCBuYXJyYXRpdmUsIGFuZCB0aGUgbGVucyBoaWdobGlnaHQuXG4gICAqICAg4oCiIGBvbldyaXRlYCBldmVudCA9IE9QLWxldmVsIOKAlCBmaXJlcyBvbiBFVkVSWSB3cml0ZSBhdHRlbXB0IHJlZ2FyZGxlc3Mgb2ZcbiAgICogICAgICAgICAgICAgICAgICAgICAgIG5ldCBjaGFuZ2UuIEZlZWRzIG1ldHJpY3MgLyBiZWhhdmlvdXJhbCBvYnNlcnZhYmlsaXR5XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAoYSBkZWJ1Z2dlciB3YW50cyB0byBzZWUgXCJ3cm90ZSAyLCB0aGVuIHJldmVydGVkXCIpLlxuICAgKiBgb25Xcml0ZWAgaXMgdW5jaGFuZ2VkIGJ5IHRoaXMgbWV0aG9kOyBvbmx5IHRoZSBDT01NSVQgYmVjb21lcyBjaGFuZ2Utb25seS5cbiAgICpcbiAgICog4pSA4pSAIEVNUFRZIENPTU1JVFMgQVJFIElOVEVOVElPTkFMIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAgKiBBIHN0YWdlIHRoYXQgbmV0cyBubyBjaGFuZ2UgY29tbWl0cyBhbiBFTVBUWSBwYXRjaCDigJQgTk9UIG5vdGhpbmcuXG4gICAqIHtAbGluayBTdGFnZUNvbnRleHQuY29tbWl0fSBzdGlsbCByZWNvcmRzIHRoZSBidW5kbGUgdW5jb25kaXRpb25hbGx5LCBzb1xuICAgKiBldmVyeSBleGVjdXRlZCBzdGFnZSByZW1haW5zIGEgdGltZS10cmF2ZWwgY3Vyc29yIHN0b3AgKGl0cyBgcnVudGltZVN0YWdlSWRgXG4gICAqIG1hcmtlciBpcyBwcmVzZXJ2ZWQpOyBvbmx5IGl0cyBQQVRDSCBpcyBlbXB0eS4gVGhpcyBpcyB3aGF0IGtlZXBzIHRoZVxuICAgKiBjb21taXQtaW5kZXhlZCBzbGlkZXIgc3RhYmxlIHdoaWxlIG1ha2luZyB0aGUgaGlnaGxpZ2h0IHRydXRoZnVsLlxuICAgKlxuICAgKiDilIDilIAgS05PV04gTElNSVRBVElPTlMgLyBGVVRVUkUg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gICAqICAg4oCiIEV4cGxpY2l0IGtleSBERUxFVElPTiBpcyBzdGlsbCB1bnJlcHJlc2VudGFibGUgaW4gTWVtb3J5UGF0Y2ggKGEgcmVtb3ZlZFxuICAgKiAgICAga2V5IGNhbm5vdCBiZSBleHByZXNzZWQpLiBTZXR0aW5nIGEga2V5IHRvIGB1bmRlZmluZWRgIGlzIHRyZWF0ZWQgYXMgYVxuICAgKiAgICAgY2hhbmdlICh2YWx1ZSBkaWZmZXJzIGZyb20gYmFzZSksIG5vdCBhIGRlbGV0aW9uLiBUcmFja2VkIGZvciBhIGZ1dHVyZVxuICAgKiAgICAgYGRlbGV0ZWAgdmVyYi5cbiAgICogICDigKIgQXJyYXktbWVyZ2UgZGVkdXAgaW4ge0BsaW5rIGRlZXBTbWFydE1lcmdlfSBzdGlsbCB1c2VzIHJlZmVyZW5jZSBlcXVhbGl0eVxuICAgKiAgICAgKGBuZXcgU2V0YCksIHNvIGRlZXAtZXF1YWwgKm9iamVjdHMqIGluIGEgbWVyZ2VkIGFycmF5IGFyZSBub3QgZGVkdXBlZC5cbiAgICogICAgIE9ydGhvZ29uYWwgdG8gdGhpcyBjaGFuZ2U7IHRyYWNrZWQgc2VwYXJhdGVseS5cbiAgICpcbiAgICogUmVzZXRzIHRoZSBidWZmZXIgdG8gZW1wdHkgc3RhdGUgYWZ0ZXIgY29tbWl0LlxuICAgKi9cbiAgY29tbWl0KCk6IHtcbiAgICBvdmVyd3JpdGU6IE1lbW9yeVBhdGNoO1xuICAgIHVwZGF0ZXM6IE1lbW9yeVBhdGNoO1xuICAgIHJlZGFjdGVkUGF0aHM6IFNldDxzdHJpbmc+O1xuICAgIHRyYWNlOiB7IHBhdGg6IHN0cmluZzsgdmVyYjogJ3NldCcgfCAnbWVyZ2UnIH1bXTtcbiAgfSB7XG4gICAgY29uc3QgcGF5bG9hZCA9IHRoaXMudG9DaGFuZ2VPbmx5UGF5bG9hZCgpO1xuXG4gICAgdGhpcy5vdmVyd3JpdGVQYXRjaCA9IHt9O1xuICAgIHRoaXMudXBkYXRlUGF0Y2ggPSB7fTtcbiAgICB0aGlzLm9wVHJhY2UubGVuZ3RoID0gMDtcbiAgICB0aGlzLnJlZGFjdGVkUGF0aHMuY2xlYXIoKTtcbiAgICB0aGlzLndvcmtpbmdDb3B5ID0ge307XG5cbiAgICByZXR1cm4gcGF5bG9hZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWJ1aWxkIG92ZXJ3cml0ZSAvIHVwZGF0ZXMgLyB0cmFjZSBrZWVwaW5nIE9OTFkgcGF0aHMgd2hvc2UgZmluYWwgdmFsdWVcbiAgICogZGlmZmVycyBmcm9tIHRoZSBiYXNlIHZhbHVlIOKAlCBpLmUuIHRoZSBzdGFnZSdzIG5ldCBjaGFuZ2UuIFNlZVxuICAgKiB7QGxpbmsgVHJhbnNhY3Rpb25CdWZmZXIuY29tbWl0fSBmb3IgdGhlIHJhdGlvbmFsZS5cbiAgICpcbiAgICogUGF0aHMgYXJlIGNvbXBhcmVkIGF0IHRoZSBleGFjdCBncmFudWxhcml0eSB0aGV5IHdlcmUgd3JpdHRlbiAoZWFjaCB0cmFjZVxuICAgKiBlbnRyeSdzIHBhdGgpLCBhZ2FpbnN0IGB3b3JraW5nQ29weWAgKGZpbmFsKSB2cyBgYmFzZVNuYXBzaG90YCAoc3RhcnQpLlxuICAgKiBTdXJ2aXZpbmcgYHNldGAgcGF0aHMgY29weSB0aGVpciBmaW5hbCB2YWx1ZSBmcm9tIGBvdmVyd3JpdGVQYXRjaGA7XG4gICAqIHN1cnZpdmluZyBgbWVyZ2VgIHBhdGhzIGNvcHkgdGhlaXIgYWNjdW11bGF0ZWQgZGVsdGEgZnJvbSBgdXBkYXRlUGF0Y2hgIOKAlFxuICAgKiBwcmVzZXJ2aW5nIHRoZSBzZXQtdnMtbWVyZ2UgdmVyYiBzbyByZXBsYXkgKHtAbGluayBhcHBseVNtYXJ0TWVyZ2V9KSBpc1xuICAgKiBieXRlLWZvci1ieXRlIGlkZW50aWNhbCB0byByZWNvcmRpbmcgb25seSB0aGUgcmVhbCBjaGFuZ2VzLlxuICAgKi9cbiAgcHJpdmF0ZSB0b0NoYW5nZU9ubHlQYXlsb2FkKCk6IHtcbiAgICBvdmVyd3JpdGU6IE1lbW9yeVBhdGNoO1xuICAgIHVwZGF0ZXM6IE1lbW9yeVBhdGNoO1xuICAgIHJlZGFjdGVkUGF0aHM6IFNldDxzdHJpbmc+O1xuICAgIHRyYWNlOiB7IHBhdGg6IHN0cmluZzsgdmVyYjogJ3NldCcgfCAnbWVyZ2UnIH1bXTtcbiAgfSB7XG4gICAgY29uc3Qgb3ZlcndyaXRlOiBNZW1vcnlQYXRjaCA9IHt9O1xuICAgIGNvbnN0IHVwZGF0ZXM6IE1lbW9yeVBhdGNoID0ge307XG4gICAgY29uc3QgdHJhY2U6IHsgcGF0aDogc3RyaW5nOyB2ZXJiOiAnc2V0JyB8ICdtZXJnZScgfVtdID0gW107XG4gICAgY29uc3Qgc3Vydml2aW5nUGF0aHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgIGZvciAoY29uc3Qgb3Agb2YgdGhpcy5vcFRyYWNlKSB7XG4gICAgICBjb25zdCBzZWdtZW50cyA9IG9wLnBhdGguc3BsaXQoREVMSU0pO1xuICAgICAgY29uc3QgYmVmb3JlID0gX2dldCh0aGlzLmJhc2VTbmFwc2hvdCwgc2VnbWVudHMpO1xuICAgICAgY29uc3QgYWZ0ZXIgPSBfZ2V0KHRoaXMud29ya2luZ0NvcHksIHNlZ21lbnRzKTtcbiAgICAgIGlmIChkZWVwRXF1YWwoYmVmb3JlLCBhZnRlcikpIGNvbnRpbnVlOyAvLyBuby1vcCBvciB3cml0ZS10aGVuLXJldmVydCDihpIgbm8gbmV0IGNoYW5nZVxuXG4gICAgICB0cmFjZS5wdXNoKG9wKTtcbiAgICAgIHN1cnZpdmluZ1BhdGhzLmFkZChvcC5wYXRoKTtcbiAgICAgIGlmIChvcC52ZXJiID09PSAnc2V0Jykge1xuICAgICAgICBfc2V0KG92ZXJ3cml0ZSwgc2VnbWVudHMsIHN0cnVjdHVyZWRDbG9uZShfZ2V0KHRoaXMub3ZlcndyaXRlUGF0Y2gsIHNlZ21lbnRzKSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgX3NldCh1cGRhdGVzLCBzZWdtZW50cywgc3RydWN0dXJlZENsb25lKF9nZXQodGhpcy51cGRhdGVQYXRjaCwgc2VnbWVudHMpKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgcmVkYWN0ZWRQYXRocyA9IG5ldyBTZXQoWy4uLnRoaXMucmVkYWN0ZWRQYXRoc10uZmlsdGVyKChwYXRoKSA9PiBzdXJ2aXZpbmdQYXRocy5oYXMocGF0aCkpKTtcbiAgICByZXR1cm4geyBvdmVyd3JpdGUsIHVwZGF0ZXMsIHJlZGFjdGVkUGF0aHMsIHRyYWNlIH07XG4gIH1cbn1cbiJdfQ==
|