footprintjs 6.1.2 → 7.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/CLAUDE.md +31 -26
  2. package/README.md +17 -1
  3. package/dist/advanced.js +2 -6
  4. package/dist/esm/advanced.js +1 -3
  5. package/dist/esm/lib/builder/structure/StructureRecorder.js +2 -2
  6. package/dist/esm/lib/engine/narrative/CombinedNarrativeRecorder.js +59 -24
  7. package/dist/esm/lib/memory/TransactionBuffer.js +92 -9
  8. package/dist/esm/lib/memory/utils.js +62 -1
  9. package/dist/esm/lib/recorder/InOutRecorder.js +31 -15
  10. package/dist/esm/lib/recorder/QualityRecorder.js +40 -13
  11. package/dist/esm/lib/recorder/RecorderOperation.js +3 -3
  12. package/dist/esm/lib/recorder/index.js +1 -8
  13. package/dist/esm/lib/recorder/qualityTrace.js +1 -1
  14. package/dist/esm/lib/runner/ExecutionRuntime.js +1 -1
  15. package/dist/esm/lib/scope/recorders/MetricRecorder.js +37 -9
  16. package/dist/esm/trace.js +1 -12
  17. package/dist/lib/builder/structure/StructureRecorder.js +2 -2
  18. package/dist/lib/engine/narrative/CombinedNarrativeRecorder.js +59 -24
  19. package/dist/lib/memory/TransactionBuffer.js +91 -8
  20. package/dist/lib/memory/utils.js +64 -2
  21. package/dist/lib/recorder/InOutRecorder.js +31 -15
  22. package/dist/lib/recorder/QualityRecorder.js +40 -13
  23. package/dist/lib/recorder/RecorderOperation.js +3 -3
  24. package/dist/lib/recorder/index.js +2 -12
  25. package/dist/lib/recorder/qualityTrace.js +1 -1
  26. package/dist/lib/runner/ExecutionRuntime.js +1 -1
  27. package/dist/lib/scope/recorders/MetricRecorder.js +37 -9
  28. package/dist/trace.js +2 -16
  29. package/dist/types/advanced.d.ts +0 -2
  30. package/dist/types/lib/builder/structure/StructureRecorder.d.ts +1 -1
  31. package/dist/types/lib/engine/narrative/CombinedNarrativeRecorder.d.ts +26 -5
  32. package/dist/types/lib/memory/TransactionBuffer.d.ts +67 -1
  33. package/dist/types/lib/memory/utils.d.ts +29 -0
  34. package/dist/types/lib/recorder/InOutRecorder.d.ts +17 -6
  35. package/dist/types/lib/recorder/QualityRecorder.d.ts +17 -3
  36. package/dist/types/lib/recorder/RecorderOperation.d.ts +2 -2
  37. package/dist/types/lib/recorder/index.d.ts +0 -3
  38. package/dist/types/lib/recorder/qualityTrace.d.ts +5 -2
  39. package/dist/types/lib/runner/ExecutionRuntime.d.ts +1 -1
  40. package/dist/types/lib/scope/recorders/MetricRecorder.d.ts +18 -3
  41. package/dist/types/trace.d.ts +0 -3
  42. package/package.json +1 -1
  43. package/dist/esm/lib/recorder/BoundaryStateTracker.js +0 -260
  44. package/dist/esm/lib/recorder/KeyedRecorder.js +0 -94
  45. package/dist/esm/lib/recorder/SequenceRecorder.js +0 -193
  46. package/dist/lib/recorder/BoundaryStateTracker.js +0 -264
  47. package/dist/lib/recorder/KeyedRecorder.js +0 -98
  48. package/dist/lib/recorder/SequenceRecorder.js +0 -197
  49. package/dist/types/lib/recorder/BoundaryStateTracker.d.ts +0 -212
  50. package/dist/types/lib/recorder/KeyedRecorder.d.ts +0 -56
  51. package/dist/types/lib/recorder/SequenceRecorder.d.ts +0 -112
@@ -5,7 +5,8 @@
5
5
  * Collects quality scores during traversal (accumulate pattern).
6
6
  * After execution, use qualityTrace() to backtrack from any low-scoring step.
7
7
  *
8
- * Extends KeyedRecorder<QualityEntry> for O(1) lookup and standard operations:
8
+ * Composes a `KeyedStore<QualityEntry>` for O(1) lookup and standard operations
9
+ * (Convention 1 — one purpose per recorder):
9
10
  * - **Translate**: `getByKey('call-llm#5')` — quality at this step
10
11
  * - **Accumulate**: progressive quality up to slider position
11
12
  * - **Aggregate**: overall pipeline quality score
@@ -32,11 +33,13 @@
32
33
  */
33
34
  Object.defineProperty(exports, "__esModule", { value: true });
34
35
  exports.QualityRecorder = void 0;
35
- const KeyedRecorder_js_1 = require("./KeyedRecorder.js");
36
- class QualityRecorder extends KeyedRecorder_js_1.KeyedRecorder {
36
+ const KeyedStore_js_1 = require("./KeyedStore.js");
37
+ class QualityRecorder {
37
38
  static _counter = 0;
38
39
  id;
39
40
  preferredOperation;
41
+ /** 1:1 per-step storage (Convention 1 — composed, not inherited). */
42
+ store = new KeyedStore_js_1.KeyedStore();
40
43
  scoringFn;
41
44
  // Per-stage buffers (reset on each stageStart)
42
45
  currentRuntimeStageId = '';
@@ -45,7 +48,6 @@ class QualityRecorder extends KeyedRecorder_js_1.KeyedRecorder {
45
48
  currentKeysRead = [];
46
49
  currentKeysWritten = [];
47
50
  constructor(scoringFn, options) {
48
- super();
49
51
  this.scoringFn = scoringFn;
50
52
  this.id = options?.id ?? `quality-${++QualityRecorder._counter}`;
51
53
  this.preferredOperation = options?.preferredOperation ?? 'accumulate';
@@ -72,7 +74,7 @@ class QualityRecorder extends KeyedRecorder_js_1.KeyedRecorder {
72
74
  keysWritten: this.currentKeysWritten,
73
75
  duration: event.duration,
74
76
  });
75
- this.store(this.currentRuntimeStageId, {
77
+ this.store.set(this.currentRuntimeStageId, {
76
78
  stageName: this.currentStageName,
77
79
  stageId: this.currentStageId,
78
80
  score: Math.max(0, Math.min(1, score)),
@@ -81,17 +83,42 @@ class QualityRecorder extends KeyedRecorder_js_1.KeyedRecorder {
81
83
  keysWritten: [...this.currentKeysWritten],
82
84
  });
83
85
  }
86
+ // ── Per-step query API (delegates to the composed store) ───────────────
87
+ /** Translate: quality entry for a specific runtimeStageId. */
88
+ getByKey(runtimeStageId) {
89
+ return this.store.get(runtimeStageId);
90
+ }
91
+ /** All per-step quality entries as a read-only Map (insertion-ordered). */
92
+ getMap() {
93
+ return this.store.getMap();
94
+ }
95
+ /** All per-step quality entries (insertion-ordered). */
96
+ values() {
97
+ return this.store.values();
98
+ }
99
+ /** Number of scored steps. */
100
+ get size() {
101
+ return this.store.size;
102
+ }
103
+ /** Aggregate: reduce ALL scored steps to a single value. */
104
+ aggregate(fn, initial) {
105
+ return this.store.aggregate(fn, initial);
106
+ }
107
+ /** Accumulate: reduce scored steps up to a slider position. */
108
+ accumulate(fn, initial, keys) {
109
+ return this.store.accumulate(fn, initial, keys);
110
+ }
84
111
  /** Overall quality score — average of all step scores. */
85
112
  getOverallScore() {
86
- if (this.size === 0)
113
+ if (this.store.size === 0)
87
114
  return 1.0;
88
- const total = this.aggregate((sum, e) => sum + e.score, 0);
89
- return total / this.size;
115
+ const total = this.store.aggregate((sum, e) => sum + e.score, 0);
116
+ return total / this.store.size;
90
117
  }
91
118
  /** Find the lowest-scoring step. */
92
119
  getLowest() {
93
120
  let lowest;
94
- for (const [key, entry] of this.getMap()) {
121
+ for (const [key, entry] of this.store.getMap()) {
95
122
  if (!lowest || entry.score < lowest.entry.score) {
96
123
  lowest = { runtimeStageId: key, entry };
97
124
  }
@@ -101,7 +128,7 @@ class QualityRecorder extends KeyedRecorder_js_1.KeyedRecorder {
101
128
  /** Progressive quality score up to a slider position. */
102
129
  getScoreUpTo(visibleKeys) {
103
130
  let count = 0;
104
- const total = this.accumulate((sum, e) => {
131
+ const total = this.store.accumulate((sum, e) => {
105
132
  count++;
106
133
  return sum + e.score;
107
134
  }, 0, visibleKeys);
@@ -109,7 +136,7 @@ class QualityRecorder extends KeyedRecorder_js_1.KeyedRecorder {
109
136
  }
110
137
  toSnapshot() {
111
138
  const steps = {};
112
- for (const [key, value] of this.getMap()) {
139
+ for (const [key, value] of this.store.getMap()) {
113
140
  steps[key] = value;
114
141
  }
115
142
  return {
@@ -125,7 +152,7 @@ class QualityRecorder extends KeyedRecorder_js_1.KeyedRecorder {
125
152
  };
126
153
  }
127
154
  clear() {
128
- super.clear();
155
+ this.store.clear();
129
156
  this.currentRuntimeStageId = '';
130
157
  this.currentStageId = '';
131
158
  this.currentStageName = '';
@@ -134,4 +161,4 @@ class QualityRecorder extends KeyedRecorder_js_1.KeyedRecorder {
134
161
  }
135
162
  }
136
163
  exports.QualityRecorder = QualityRecorder;
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUXVhbGl0eVJlY29yZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9yZWNvcmRlci9RdWFsaXR5UmVjb3JkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Qkc7OztBQUdILHlEQUFtRDtBQTJDbkQsTUFBYSxlQUFnQixTQUFRLGdDQUEyQjtJQUN0RCxNQUFNLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztJQUVuQixFQUFFLENBQVM7SUFDWCxrQkFBa0IsQ0FBb0I7SUFDOUIsU0FBUyxDQUFtQjtJQUU3QywrQ0FBK0M7SUFDdkMscUJBQXFCLEdBQUcsRUFBRSxDQUFDO0lBQzNCLGNBQWMsR0FBRyxFQUFFLENBQUM7SUFDcEIsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLGVBQWUsR0FBYSxFQUFFLENBQUM7SUFDL0Isa0JBQWtCLEdBQWEsRUFBRSxDQUFDO0lBRTFDLFlBQVksU0FBMkIsRUFBRSxPQUFnQztRQUN2RSxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLEVBQUUsSUFBSSxXQUFXLEVBQUUsZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxPQUFPLEVBQUUsa0JBQWtCLElBQUksWUFBWSxDQUFDO0lBQ3hFLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBaUI7UUFDNUIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUM7UUFDbEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1FBQzFC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QUssR0FBNEIsRUFBRSxDQUFDO1FBQzFDLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztZQUN6QyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLENBQUM7UUFDRCxPQUFPO1lBQ0wsSUFBSSxFQUFFLFNBQVM7WUFDZixXQUFXLEVBQUUsNkRBQTZEO1lBQzFFLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7WUFDM0MsSUFBSSxFQUFFO2dCQUNKLFlBQVksRUFBRSxPQUFPO2dCQUNyQixZQUFZLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRTtnQkFDcEMsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxjQUFjO2dCQUM1QyxLQUFLO2FBQ047U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVRLEtBQUs7UUFDWixLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDZCxJQUFJLENBQUMscUJBQXFCLEdBQUcsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztJQUMvQixDQUFDOztBQWpISCwwQ0FrSEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFF1YWxpdHlSZWNvcmRlciDigJQgcGVyLXN0ZXAgcXVhbGl0eSBzY29yaW5nIGtleWVkIGJ5IHJ1bnRpbWVTdGFnZUlkLlxuICpcbiAqIENvbGxlY3RzIHF1YWxpdHkgc2NvcmVzIGR1cmluZyB0cmF2ZXJzYWwgKGFjY3VtdWxhdGUgcGF0dGVybikuXG4gKiBBZnRlciBleGVjdXRpb24sIHVzZSBxdWFsaXR5VHJhY2UoKSB0byBiYWNrdHJhY2sgZnJvbSBhbnkgbG93LXNjb3Jpbmcgc3RlcC5cbiAqXG4gKiBFeHRlbmRzIEtleWVkUmVjb3JkZXI8UXVhbGl0eUVudHJ5PiBmb3IgTygxKSBsb29rdXAgYW5kIHN0YW5kYXJkIG9wZXJhdGlvbnM6XG4gKiAgIC0gKipUcmFuc2xhdGUqKjogYGdldEJ5S2V5KCdjYWxsLWxsbSM1JylgIOKAlCBxdWFsaXR5IGF0IHRoaXMgc3RlcFxuICogICAtICoqQWNjdW11bGF0ZSoqOiBwcm9ncmVzc2l2ZSBxdWFsaXR5IHVwIHRvIHNsaWRlciBwb3NpdGlvblxuICogICAtICoqQWdncmVnYXRlKio6IG92ZXJhbGwgcGlwZWxpbmUgcXVhbGl0eSBzY29yZVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBxdWFsaXR5ID0gbmV3IFF1YWxpdHlSZWNvcmRlcigocnVudGltZVN0YWdlSWQsIGNvbnRleHQpID0+IHtcbiAqICAgLy8gQ3VzdG9tIHNjb3JpbmcgZnVuY3Rpb24g4oCUIHJldHVybiB7IHNjb3JlOiAwLjDigJMxLjAsIGZhY3RvcnM/IH1cbiAqICAgaWYgKGNvbnRleHQuc3RhZ2VOYW1lLmluY2x1ZGVzKCdsbG0nKSkgcmV0dXJuIHsgc2NvcmU6IDAuNywgZmFjdG9yczogWydsbG0gc3RhZ2UnXSB9O1xuICogICByZXR1cm4geyBzY29yZTogMS4wIH07XG4gKiB9KTtcbiAqIGV4ZWN1dG9yLmF0dGFjaFNjb3BlUmVjb3JkZXIocXVhbGl0eSk7XG4gKiBhd2FpdCBleGVjdXRvci5ydW4oKTtcbiAqXG4gKiAvLyBQZXItc3RlcCBzY29yZVxuICogcXVhbGl0eS5nZXRCeUtleSgnY2FsbC1sbG0jNScpOyAgLy8geyBzY29yZTogMC43LCBzdGFnZU5hbWU6ICdDYWxsTExNJywgZmFjdG9yczogWy4uLl0gfVxuICpcbiAqIC8vIE92ZXJhbGwgcXVhbGl0eVxuICogcXVhbGl0eS5nZXRPdmVyYWxsU2NvcmUoKTsgIC8vIDAuODVcbiAqXG4gKiAvLyBMb3dlc3Qtc2NvcmluZyBzdGVwXG4gKiBxdWFsaXR5LmdldExvd2VzdCgpOyAgLy8geyBydW50aW1lU3RhZ2VJZDogJ2NhbGwtbGxtIzUnLCBlbnRyeTogeyBzY29yZTogMC43LCAuLi4gfSB9XG4gKiBgYGBcbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFJlYWRFdmVudCwgU2NvcGVSZWNvcmRlciwgU3RhZ2VFdmVudCwgV3JpdGVFdmVudCB9IGZyb20gJy4uL3Njb3BlL3R5cGVzLmpzJztcbmltcG9ydCB7IEtleWVkUmVjb3JkZXIgfSBmcm9tICcuL0tleWVkUmVjb3JkZXIuanMnO1xuaW1wb3J0IHR5cGUgeyBSZWNvcmRlck9wZXJhdGlvbiB9IGZyb20gJy4vUmVjb3JkZXJPcGVyYXRpb24uanMnO1xuXG4vKiogUGVyLXN0ZXAgcXVhbGl0eSBkYXRhIHN0b3JlZCBieSBRdWFsaXR5UmVjb3JkZXIuICovXG5leHBvcnQgaW50ZXJmYWNlIFF1YWxpdHlFbnRyeSB7XG4gIC8qKiBIdW1hbi1yZWFkYWJsZSBzdGFnZSBuYW1lLiAqL1xuICBzdGFnZU5hbWU6IHN0cmluZztcbiAgLyoqIFN0YWJsZSBzdGFnZSBpZGVudGlmaWVyLiAqL1xuICBzdGFnZUlkOiBzdHJpbmc7XG4gIC8qKiBRdWFsaXR5IHNjb3JlIGZvciB0aGlzIHN0ZXAgKDAuMCA9IHdvcnN0LCAxLjAgPSBiZXN0KS4gKi9cbiAgc2NvcmU6IG51bWJlcjtcbiAgLyoqIFdoYXQgY29udHJpYnV0ZWQgdG8gdGhpcyBzY29yZS4gKi9cbiAgZmFjdG9yczogc3RyaW5nW107XG4gIC8qKiBLZXlzIHJlYWQgZHVyaW5nIHRoaXMgc3RlcCAoZm9yIGJhY2t0cmFja2luZykuICovXG4gIGtleXNSZWFkOiBzdHJpbmdbXTtcbiAgLyoqIEtleXMgd3JpdHRlbiBkdXJpbmcgdGhpcyBzdGVwIChmb3IgYmFja3RyYWNraW5nKS4gKi9cbiAga2V5c1dyaXR0ZW46IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFNjb3JpbmcgZnVuY3Rpb24gY2FsbGVkIGF0IHRoZSBlbmQgb2YgZWFjaCBzdGFnZS5cbiAqIFJlY2VpdmVzIHRoZSBydW50aW1lU3RhZ2VJZCwgc3RhZ2UgZXZlbnQsIGFuZCBhIHN1bW1hcnkgb2YgcmVhZHMvd3JpdGVzLlxuICogUmV0dXJuIGEgc2NvcmUgKDAuMOKAkzEuMCkgYW5kIG9wdGlvbmFsIGZhY3RvcnMgZXhwbGFpbmluZyB0aGUgc2NvcmUuXG4gKi9cbmV4cG9ydCB0eXBlIFF1YWxpdHlTY29yaW5nRm4gPSAoXG4gIHJ1bnRpbWVTdGFnZUlkOiBzdHJpbmcsXG4gIGNvbnRleHQ6IHtcbiAgICBzdGFnZU5hbWU6IHN0cmluZztcbiAgICBzdGFnZUlkOiBzdHJpbmc7XG4gICAga2V5c1JlYWQ6IHN0cmluZ1tdO1xuICAgIGtleXNXcml0dGVuOiBzdHJpbmdbXTtcbiAgICBkdXJhdGlvbj86IG51bWJlcjtcbiAgfSxcbikgPT4geyBzY29yZTogbnVtYmVyOyBmYWN0b3JzPzogc3RyaW5nW10gfTtcblxuLyoqIE9wdGlvbnMgZm9yIFF1YWxpdHlSZWNvcmRlci4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUXVhbGl0eVJlY29yZGVyT3B0aW9ucyB7XG4gIC8qKiBTY29wZVJlY29yZGVyIElELiBEZWZhdWx0cyB0byBhdXRvLWluY3JlbWVudC4gKi9cbiAgaWQ/OiBzdHJpbmc7XG4gIC8qKiBQcmVmZXJyZWQgVUkgb3BlcmF0aW9uLiBEZWZhdWx0cyB0byAnYWNjdW11bGF0ZScgKHByb2dyZXNzaXZlIHF1YWxpdHkpLiAqL1xuICBwcmVmZXJyZWRPcGVyYXRpb24/OiBSZWNvcmRlck9wZXJhdGlvbjtcbn1cblxuZXhwb3J0IGNsYXNzIFF1YWxpdHlSZWNvcmRlciBleHRlbmRzIEtleWVkUmVjb3JkZXI8UXVhbGl0eUVudHJ5PiBpbXBsZW1lbnRzIFNjb3BlUmVjb3JkZXIge1xuICBwcml2YXRlIHN0YXRpYyBfY291bnRlciA9IDA7XG5cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgcHJlZmVycmVkT3BlcmF0aW9uOiBSZWNvcmRlck9wZXJhdGlvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBzY29yaW5nRm46IFF1YWxpdHlTY29yaW5nRm47XG5cbiAgLy8gUGVyLXN0YWdlIGJ1ZmZlcnMgKHJlc2V0IG9uIGVhY2ggc3RhZ2VTdGFydClcbiAgcHJpdmF0ZSBjdXJyZW50UnVudGltZVN0YWdlSWQgPSAnJztcbiAgcHJpdmF0ZSBjdXJyZW50U3RhZ2VJZCA9ICcnO1xuICBwcml2YXRlIGN1cnJlbnRTdGFnZU5hbWUgPSAnJztcbiAgcHJpdmF0ZSBjdXJyZW50S2V5c1JlYWQ6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgY3VycmVudEtleXNXcml0dGVuOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3JpbmdGbjogUXVhbGl0eVNjb3JpbmdGbiwgb3B0aW9ucz86IFF1YWxpdHlSZWNvcmRlck9wdGlvbnMpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc2NvcmluZ0ZuID0gc2NvcmluZ0ZuO1xuICAgIHRoaXMuaWQgPSBvcHRpb25zPy5pZCA/PyBgcXVhbGl0eS0keysrUXVhbGl0eVJlY29yZGVyLl9jb3VudGVyfWA7XG4gICAgdGhpcy5wcmVmZXJyZWRPcGVyYXRpb24gPSBvcHRpb25zPy5wcmVmZXJyZWRPcGVyYXRpb24gPz8gJ2FjY3VtdWxhdGUnO1xuICB9XG5cbiAgb25TdGFnZVN0YXJ0KGV2ZW50OiBTdGFnZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50UnVudGltZVN0YWdlSWQgPSBldmVudC5ydW50aW1lU3RhZ2VJZDtcbiAgICB0aGlzLmN1cnJlbnRTdGFnZUlkID0gZXZlbnQuc3RhZ2VJZDtcbiAgICB0aGlzLmN1cnJlbnRTdGFnZU5hbWUgPSBldmVudC5zdGFnZU5hbWU7XG4gICAgdGhpcy5jdXJyZW50S2V5c1JlYWQgPSBbXTtcbiAgICB0aGlzLmN1cnJlbnRLZXlzV3JpdHRlbiA9IFtdO1xuICB9XG5cbiAgb25SZWFkKGV2ZW50OiBSZWFkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5KSB0aGlzLmN1cnJlbnRLZXlzUmVhZC5wdXNoKGV2ZW50LmtleSk7XG4gIH1cblxuICBvbldyaXRlKGV2ZW50OiBXcml0ZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50S2V5c1dyaXR0ZW4ucHVzaChldmVudC5rZXkpO1xuICB9XG5cbiAgb25TdGFnZUVuZChldmVudDogU3RhZ2VFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHsgc2NvcmUsIGZhY3RvcnMgfSA9IHRoaXMuc2NvcmluZ0ZuKHRoaXMuY3VycmVudFJ1bnRpbWVTdGFnZUlkLCB7XG4gICAgICBzdGFnZU5hbWU6IHRoaXMuY3VycmVudFN0YWdlTmFtZSxcbiAgICAgIHN0YWdlSWQ6IHRoaXMuY3VycmVudFN0YWdlSWQsXG4gICAgICBrZXlzUmVhZDogdGhpcy5jdXJyZW50S2V5c1JlYWQsXG4gICAgICBrZXlzV3JpdHRlbjogdGhpcy5jdXJyZW50S2V5c1dyaXR0ZW4sXG4gICAgICBkdXJhdGlvbjogZXZlbnQuZHVyYXRpb24sXG4gICAgfSk7XG5cbiAgICB0aGlzLnN0b3JlKHRoaXMuY3VycmVudFJ1bnRpbWVTdGFnZUlkLCB7XG4gICAgICBzdGFnZU5hbWU6IHRoaXMuY3VycmVudFN0YWdlTmFtZSxcbiAgICAgIHN0YWdlSWQ6IHRoaXMuY3VycmVudFN0YWdlSWQsXG4gICAgICBzY29yZTogTWF0aC5tYXgoMCwgTWF0aC5taW4oMSwgc2NvcmUpKSxcbiAgICAgIGZhY3RvcnM6IGZhY3RvcnMgPz8gW10sXG4gICAgICBrZXlzUmVhZDogWy4uLnRoaXMuY3VycmVudEtleXNSZWFkXSxcbiAgICAgIGtleXNXcml0dGVuOiBbLi4udGhpcy5jdXJyZW50S2V5c1dyaXR0ZW5dLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqIE92ZXJhbGwgcXVhbGl0eSBzY29yZSDigJQgYXZlcmFnZSBvZiBhbGwgc3RlcCBzY29yZXMuICovXG4gIGdldE92ZXJhbGxTY29yZSgpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLnNpemUgPT09IDApIHJldHVybiAxLjA7XG4gICAgY29uc3QgdG90YWwgPSB0aGlzLmFnZ3JlZ2F0ZSgoc3VtLCBlKSA9PiBzdW0gKyBlLnNjb3JlLCAwKTtcbiAgICByZXR1cm4gdG90YWwgLyB0aGlzLnNpemU7XG4gIH1cblxuICAvKiogRmluZCB0aGUgbG93ZXN0LXNjb3Jpbmcgc3RlcC4gKi9cbiAgZ2V0TG93ZXN0KCk6IHsgcnVudGltZVN0YWdlSWQ6IHN0cmluZzsgZW50cnk6IFF1YWxpdHlFbnRyeSB9IHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgbG93ZXN0OiB7IHJ1bnRpbWVTdGFnZUlkOiBzdHJpbmc7IGVudHJ5OiBRdWFsaXR5RW50cnkgfSB8IHVuZGVmaW5lZDtcbiAgICBmb3IgKGNvbnN0IFtrZXksIGVudHJ5XSBvZiB0aGlzLmdldE1hcCgpKSB7XG4gICAgICBpZiAoIWxvd2VzdCB8fCBlbnRyeS5zY29yZSA8IGxvd2VzdC5lbnRyeS5zY29yZSkge1xuICAgICAgICBsb3dlc3QgPSB7IHJ1bnRpbWVTdGFnZUlkOiBrZXksIGVudHJ5IH07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBsb3dlc3Q7XG4gIH1cblxuICAvKiogUHJvZ3Jlc3NpdmUgcXVhbGl0eSBzY29yZSB1cCB0byBhIHNsaWRlciBwb3NpdGlvbi4gKi9cbiAgZ2V0U2NvcmVVcFRvKHZpc2libGVLZXlzOiBSZWFkb25seVNldDxzdHJpbmc+KTogbnVtYmVyIHtcbiAgICBsZXQgY291bnQgPSAwO1xuICAgIGNvbnN0IHRvdGFsID0gdGhpcy5hY2N1bXVsYXRlKFxuICAgICAgKHN1bSwgZSkgPT4ge1xuICAgICAgICBjb3VudCsrO1xuICAgICAgICByZXR1cm4gc3VtICsgZS5zY29yZTtcbiAgICAgIH0sXG4gICAgICAwLFxuICAgICAgdmlzaWJsZUtleXMsXG4gICAgKTtcbiAgICByZXR1cm4gY291bnQgPT09IDAgPyAxLjAgOiB0b3RhbCAvIGNvdW50O1xuICB9XG5cbiAgdG9TbmFwc2hvdCgpIHtcbiAgICBjb25zdCBzdGVwczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiB0aGlzLmdldE1hcCgpKSB7XG4gICAgICBzdGVwc1trZXldID0gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiAnUXVhbGl0eScsXG4gICAgICBkZXNjcmlwdGlvbjogJ1F1YWxpdHkgc2NvcmVzIHBlciBleGVjdXRpb24gc3RlcCB3aXRoIGJhY2t0cmFja2luZyBzdXBwb3J0JyxcbiAgICAgIHByZWZlcnJlZE9wZXJhdGlvbjogdGhpcy5wcmVmZXJyZWRPcGVyYXRpb24sXG4gICAgICBkYXRhOiB7XG4gICAgICAgIG51bWVyaWNGaWVsZDogJ3Njb3JlJyxcbiAgICAgICAgb3ZlcmFsbFNjb3JlOiB0aGlzLmdldE92ZXJhbGxTY29yZSgpLFxuICAgICAgICBsb3dlc3RTdGVwOiB0aGlzLmdldExvd2VzdCgpPy5ydW50aW1lU3RhZ2VJZCxcbiAgICAgICAgc3RlcHMsXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBvdmVycmlkZSBjbGVhcigpOiB2b2lkIHtcbiAgICBzdXBlci5jbGVhcigpO1xuICAgIHRoaXMuY3VycmVudFJ1bnRpbWVTdGFnZUlkID0gJyc7XG4gICAgdGhpcy5jdXJyZW50U3RhZ2VJZCA9ICcnO1xuICAgIHRoaXMuY3VycmVudFN0YWdlTmFtZSA9ICcnO1xuICAgIHRoaXMuY3VycmVudEtleXNSZWFkID0gW107XG4gICAgdGhpcy5jdXJyZW50S2V5c1dyaXR0ZW4gPSBbXTtcbiAgfVxufVxuIl19
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUXVhbGl0eVJlY29yZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9yZWNvcmRlci9RdWFsaXR5UmVjb3JkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0JHOzs7QUFHSCxtREFBNkM7QUEyQzdDLE1BQWEsZUFBZTtJQUNsQixNQUFNLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztJQUVuQixFQUFFLENBQVM7SUFDWCxrQkFBa0IsQ0FBb0I7SUFDL0MscUVBQXFFO0lBQ3BELEtBQUssR0FBRyxJQUFJLDBCQUFVLEVBQWdCLENBQUM7SUFDdkMsU0FBUyxDQUFtQjtJQUU3QywrQ0FBK0M7SUFDdkMscUJBQXFCLEdBQUcsRUFBRSxDQUFDO0lBQzNCLGNBQWMsR0FBRyxFQUFFLENBQUM7SUFDcEIsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLGVBQWUsR0FBYSxFQUFFLENBQUM7SUFDL0Isa0JBQWtCLEdBQWEsRUFBRSxDQUFDO0lBRTFDLFlBQVksU0FBMkIsRUFBRSxPQUFnQztRQUN2RSxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxFQUFFLElBQUksV0FBVyxFQUFFLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsT0FBTyxFQUFFLGtCQUFrQixJQUFJLFlBQVksQ0FBQztJQUN4RSxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQWlCO1FBQzVCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFDO1FBQ2xELElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUNwQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUN4QyxJQUFJLENBQUMsZUFBZSxH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RDtZQUMxRSxrQkFBa0IsRUFBRSxJQUFJLENBQUMsa0JBQWtCO1lBQzNDLElBQUksRUFBRTtnQkFDSixZQUFZLEVBQUUsT0FBTztnQkFDckIsWUFBWSxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUU7Z0JBQ3BDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsY0FBYztnQkFDNUMsS0FBSzthQUNOO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMscUJBQXFCLEdBQUcsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztJQUMvQixDQUFDOztBQWxKSCwwQ0FtSkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFF1YWxpdHlSZWNvcmRlciDigJQgcGVyLXN0ZXAgcXVhbGl0eSBzY29yaW5nIGtleWVkIGJ5IHJ1bnRpbWVTdGFnZUlkLlxuICpcbiAqIENvbGxlY3RzIHF1YWxpdHkgc2NvcmVzIGR1cmluZyB0cmF2ZXJzYWwgKGFjY3VtdWxhdGUgcGF0dGVybikuXG4gKiBBZnRlciBleGVjdXRpb24sIHVzZSBxdWFsaXR5VHJhY2UoKSB0byBiYWNrdHJhY2sgZnJvbSBhbnkgbG93LXNjb3Jpbmcgc3RlcC5cbiAqXG4gKiBDb21wb3NlcyBhIGBLZXllZFN0b3JlPFF1YWxpdHlFbnRyeT5gIGZvciBPKDEpIGxvb2t1cCBhbmQgc3RhbmRhcmQgb3BlcmF0aW9uc1xuICogKENvbnZlbnRpb24gMSDigJQgb25lIHB1cnBvc2UgcGVyIHJlY29yZGVyKTpcbiAqICAgLSAqKlRyYW5zbGF0ZSoqOiBgZ2V0QnlLZXkoJ2NhbGwtbGxtIzUnKWAg4oCUIHF1YWxpdHkgYXQgdGhpcyBzdGVwXG4gKiAgIC0gKipBY2N1bXVsYXRlKio6IHByb2dyZXNzaXZlIHF1YWxpdHkgdXAgdG8gc2xpZGVyIHBvc2l0aW9uXG4gKiAgIC0gKipBZ2dyZWdhdGUqKjogb3ZlcmFsbCBwaXBlbGluZSBxdWFsaXR5IHNjb3JlXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHF1YWxpdHkgPSBuZXcgUXVhbGl0eVJlY29yZGVyKChydW50aW1lU3RhZ2VJZCwgY29udGV4dCkgPT4ge1xuICogICAvLyBDdXN0b20gc2NvcmluZyBmdW5jdGlvbiDigJQgcmV0dXJuIHsgc2NvcmU6IDAuMOKAkzEuMCwgZmFjdG9ycz8gfVxuICogICBpZiAoY29udGV4dC5zdGFnZU5hbWUuaW5jbHVkZXMoJ2xsbScpKSByZXR1cm4geyBzY29yZTogMC43LCBmYWN0b3JzOiBbJ2xsbSBzdGFnZSddIH07XG4gKiAgIHJldHVybiB7IHNjb3JlOiAxLjAgfTtcbiAqIH0pO1xuICogZXhlY3V0b3IuYXR0YWNoU2NvcGVSZWNvcmRlcihxdWFsaXR5KTtcbiAqIGF3YWl0IGV4ZWN1dG9yLnJ1bigpO1xuICpcbiAqIC8vIFBlci1zdGVwIHNjb3JlXG4gKiBxdWFsaXR5LmdldEJ5S2V5KCdjYWxsLWxsbSM1Jyk7ICAvLyB7IHNjb3JlOiAwLjcsIHN0YWdlTmFtZTogJ0NhbGxMTE0nLCBmYWN0b3JzOiBbLi4uXSB9XG4gKlxuICogLy8gT3ZlcmFsbCBxdWFsaXR5XG4gKiBxdWFsaXR5LmdldE92ZXJhbGxTY29yZSgpOyAgLy8gMC44NVxuICpcbiAqIC8vIExvd2VzdC1zY29yaW5nIHN0ZXBcbiAqIHF1YWxpdHkuZ2V0TG93ZXN0KCk7ICAvLyB7IHJ1bnRpbWVTdGFnZUlkOiAnY2FsbC1sbG0jNScsIGVudHJ5OiB7IHNjb3JlOiAwLjcsIC4uLiB9IH1cbiAqIGBgYFxuICovXG5cbmltcG9ydCB0eXBlIHsgUmVhZEV2ZW50LCBTY29wZVJlY29yZGVyLCBTdGFnZUV2ZW50LCBXcml0ZUV2ZW50IH0gZnJvbSAnLi4vc2NvcGUvdHlwZXMuanMnO1xuaW1wb3J0IHsgS2V5ZWRTdG9yZSB9IGZyb20gJy4vS2V5ZWRTdG9yZS5qcyc7XG5pbXBvcnQgdHlwZSB7IFJlY29yZGVyT3BlcmF0aW9uIH0gZnJvbSAnLi9SZWNvcmRlck9wZXJhdGlvbi5qcyc7XG5cbi8qKiBQZXItc3RlcCBxdWFsaXR5IGRhdGEgc3RvcmVkIGJ5IFF1YWxpdHlSZWNvcmRlci4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUXVhbGl0eUVudHJ5IHtcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIHN0YWdlIG5hbWUuICovXG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuICAvKiogU3RhYmxlIHN0YWdlIGlkZW50aWZpZXIuICovXG4gIHN0YWdlSWQ6IHN0cmluZztcbiAgLyoqIFF1YWxpdHkgc2NvcmUgZm9yIHRoaXMgc3RlcCAoMC4wID0gd29yc3QsIDEuMCA9IGJlc3QpLiAqL1xuICBzY29yZTogbnVtYmVyO1xuICAvKiogV2hhdCBjb250cmlidXRlZCB0byB0aGlzIHNjb3JlLiAqL1xuICBmYWN0b3JzOiBzdHJpbmdbXTtcbiAgLyoqIEtleXMgcmVhZCBkdXJpbmcgdGhpcyBzdGVwIChmb3IgYmFja3RyYWNraW5nKS4gKi9cbiAga2V5c1JlYWQ6IHN0cmluZ1tdO1xuICAvKiogS2V5cyB3cml0dGVuIGR1cmluZyB0aGlzIHN0ZXAgKGZvciBiYWNrdHJhY2tpbmcpLiAqL1xuICBrZXlzV3JpdHRlbjogc3RyaW5nW107XG59XG5cbi8qKlxuICogU2NvcmluZyBmdW5jdGlvbiBjYWxsZWQgYXQgdGhlIGVuZCBvZiBlYWNoIHN0YWdlLlxuICogUmVjZWl2ZXMgdGhlIHJ1bnRpbWVTdGFnZUlkLCBzdGFnZSBldmVudCwgYW5kIGEgc3VtbWFyeSBvZiByZWFkcy93cml0ZXMuXG4gKiBSZXR1cm4gYSBzY29yZSAoMC4w4oCTMS4wKSBhbmQgb3B0aW9uYWwgZmFjdG9ycyBleHBsYWluaW5nIHRoZSBzY29yZS5cbiAqL1xuZXhwb3J0IHR5cGUgUXVhbGl0eVNjb3JpbmdGbiA9IChcbiAgcnVudGltZVN0YWdlSWQ6IHN0cmluZyxcbiAgY29udGV4dDoge1xuICAgIHN0YWdlTmFtZTogc3RyaW5nO1xuICAgIHN0YWdlSWQ6IHN0cmluZztcbiAgICBrZXlzUmVhZDogc3RyaW5nW107XG4gICAga2V5c1dyaXR0ZW46IHN0cmluZ1tdO1xuICAgIGR1cmF0aW9uPzogbnVtYmVyO1xuICB9LFxuKSA9PiB7IHNjb3JlOiBudW1iZXI7IGZhY3RvcnM/OiBzdHJpbmdbXSB9O1xuXG4vKiogT3B0aW9ucyBmb3IgUXVhbGl0eVJlY29yZGVyLiAqL1xuZXhwb3J0IGludGVyZmFjZSBRdWFsaXR5UmVjb3JkZXJPcHRpb25zIHtcbiAgLyoqIFNjb3BlUmVjb3JkZXIgSUQuIERlZmF1bHRzIHRvIGF1dG8taW5jcmVtZW50LiAqL1xuICBpZD86IHN0cmluZztcbiAgLyoqIFByZWZlcnJlZCBVSSBvcGVyYXRpb24uIERlZmF1bHRzIHRvICdhY2N1bXVsYXRlJyAocHJvZ3Jlc3NpdmUgcXVhbGl0eSkuICovXG4gIHByZWZlcnJlZE9wZXJhdGlvbj86IFJlY29yZGVyT3BlcmF0aW9uO1xufVxuXG5leHBvcnQgY2xhc3MgUXVhbGl0eVJlY29yZGVyIGltcGxlbWVudHMgU2NvcGVSZWNvcmRlciB7XG4gIHByaXZhdGUgc3RhdGljIF9jb3VudGVyID0gMDtcblxuICByZWFkb25seSBpZDogc3RyaW5nO1xuICByZWFkb25seSBwcmVmZXJyZWRPcGVyYXRpb246IFJlY29yZGVyT3BlcmF0aW9uO1xuICAvKiogMToxIHBlci1zdGVwIHN0b3JhZ2UgKENvbnZlbnRpb24gMSDigJQgY29tcG9zZWQsIG5vdCBpbmhlcml0ZWQpLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHN0b3JlID0gbmV3IEtleWVkU3RvcmU8UXVhbGl0eUVudHJ5PigpO1xuICBwcml2YXRlIHJlYWRvbmx5IHNjb3JpbmdGbjogUXVhbGl0eVNjb3JpbmdGbjtcblxuICAvLyBQZXItc3RhZ2UgYnVmZmVycyAocmVzZXQgb24gZWFjaCBzdGFnZVN0YXJ0KVxuICBwcml2YXRlIGN1cnJlbnRSdW50aW1lU3RhZ2VJZCA9ICcnO1xuICBwcml2YXRlIGN1cnJlbnRTdGFnZUlkID0gJyc7XG4gIHByaXZhdGUgY3VycmVudFN0YWdlTmFtZSA9ICcnO1xuICBwcml2YXRlIGN1cnJlbnRLZXlzUmVhZDogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBjdXJyZW50S2V5c1dyaXR0ZW46IHN0cmluZ1tdID0gW107XG5cbiAgY29uc3RydWN0b3Ioc2NvcmluZ0ZuOiBRdWFsaXR5U2NvcmluZ0ZuLCBvcHRpb25zPzogUXVhbGl0eVJlY29yZGVyT3B0aW9ucykge1xuICAgIHRoaXMuc2NvcmluZ0ZuID0gc2NvcmluZ0ZuO1xuICAgIHRoaXMuaWQgPSBvcHRpb25zPy5pZCA/PyBgcXVhbGl0eS0keysrUXVhbGl0eVJlY29yZGVyLl9jb3VudGVyfWA7XG4gICAgdGhpcy5wcmVmZXJyZWRPcGVyYXRpb24gPSBvcHRpb25zPy5wcmVmZXJyZWRPcGVyYXRpb24gPz8gJ2FjY3VtdWxhdGUnO1xuICB9XG5cbiAgb25TdGFnZVN0YXJ0KGV2ZW50OiBTdGFnZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50UnVudGltZVN0YWdlSWQgPSBldmVudC5ydW50aW1lU3RhZ2VJZDtcbiAgICB0aGlzLmN1cnJlbnRTdGFnZUlkID0gZXZlbnQuc3RhZ2VJZDtcbiAgICB0aGlzLmN1cnJlbnRTdGFnZU5hbWUgPSBldmVudC5zdGFnZU5hbWU7XG4gICAgdGhpcy5jdXJyZW50S2V5c1JlYWQgPSBbXTtcbiAgICB0aGlzLmN1cnJlbnRLZXlzV3JpdHRlbiA9IFtdO1xuICB9XG5cbiAgb25SZWFkKGV2ZW50OiBSZWFkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5KSB0aGlzLmN1cnJlbnRLZXlzUmVhZC5wdXNoKGV2ZW50LmtleSk7XG4gIH1cblxuICBvbldyaXRlKGV2ZW50OiBXcml0ZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50S2V5c1dyaXR0ZW4ucHVzaChldmVudC5rZXkpO1xuICB9XG5cbiAgb25TdGFnZUVuZChldmVudDogU3RhZ2VFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHsgc2NvcmUsIGZhY3RvcnMgfSA9IHRoaXMuc2NvcmluZ0ZuKHRoaXMuY3VycmVudFJ1bnRpbWVTdGFnZUlkLCB7XG4gICAgICBzdGFnZU5hbWU6IHRoaXMuY3VycmVudFN0YWdlTmFtZSxcbiAgICAgIHN0YWdlSWQ6IHRoaXMuY3VycmVudFN0YWdlSWQsXG4gICAgICBrZXlzUmVhZDogdGhpcy5jdXJyZW50S2V5c1JlYWQsXG4gICAgICBrZXlzV3JpdHRlbjogdGhpcy5jdXJyZW50S2V5c1dyaXR0ZW4sXG4gICAgICBkdXJhdGlvbjogZXZlbnQuZHVyYXRpb24sXG4gICAgfSk7XG5cbiAgICB0aGlzLnN0b3JlLnNldCh0aGlzLmN1cnJlbnRSdW50aW1lU3RhZ2VJZCwge1xuICAgICAgc3RhZ2VOYW1lOiB0aGlzLmN1cnJlbnRTdGFnZU5hbWUsXG4gICAgICBzdGFnZUlkOiB0aGlzLmN1cnJlbnRTdGFnZUlkLFxuICAgICAgc2NvcmU6IE1hdGgubWF4KDAsIE1hdGgubWluKDEsIHNjb3JlKSksXG4gICAgICBmYWN0b3JzOiBmYWN0b3JzID8/IFtdLFxuICAgICAga2V5c1JlYWQ6IFsuLi50aGlzLmN1cnJlbnRLZXlzUmVhZF0sXG4gICAgICBrZXlzV3JpdHRlbjogWy4uLnRoaXMuY3VycmVudEtleXNXcml0dGVuXSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIOKUgOKUgCBQZXItc3RlcCBxdWVyeSBBUEkgKGRlbGVnYXRlcyB0byB0aGUgY29tcG9zZWQgc3RvcmUpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4gIC8qKiBUcmFuc2xhdGU6IHF1YWxpdHkgZW50cnkgZm9yIGEgc3BlY2lmaWMgcnVudGltZVN0YWdlSWQuICovXG4gIGdldEJ5S2V5KHJ1bnRpbWVTdGFnZUlkOiBzdHJpbmcpOiBRdWFsaXR5RW50cnkgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLmdldChydW50aW1lU3RhZ2VJZCk7XG4gIH1cblxuICAvKiogQWxsIHBlci1zdGVwIHF1YWxpdHkgZW50cmllcyBhcyBhIHJlYWQtb25seSBNYXAgKGluc2VydGlvbi1vcmRlcmVkKS4gKi9cbiAgZ2V0TWFwKCk6IFJlYWRvbmx5TWFwPHN0cmluZywgUXVhbGl0eUVudHJ5PiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuZ2V0TWFwKCk7XG4gIH1cblxuICAvKiogQWxsIHBlci1zdGVwIHF1YWxpdHkgZW50cmllcyAoaW5zZXJ0aW9uLW9yZGVyZWQpLiAqL1xuICB2YWx1ZXMoKTogUXVhbGl0eUVudHJ5W10ge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnZhbHVlcygpO1xuICB9XG5cbiAgLyoqIE51bWJlciBvZiBzY29yZWQgc3RlcHMuICovXG4gIGdldCBzaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2l6ZTtcbiAgfVxuXG4gIC8qKiBBZ2dyZWdhdGU6IHJlZHVjZSBBTEwgc2NvcmVkIHN0ZXBzIHRvIGEgc2luZ2xlIHZhbHVlLiAqL1xuICBhZ2dyZWdhdGU8Uj4oZm46IChhY2M6IFIsIGVudHJ5OiBRdWFsaXR5RW50cnksIGtleTogc3RyaW5nKSA9PiBSLCBpbml0aWFsOiBSKTogUiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuYWdncmVnYXRlKGZuLCBpbml0aWFsKTtcbiAgfVxuXG4gIC8qKiBBY2N1bXVsYXRlOiByZWR1Y2Ugc2NvcmVkIHN0ZXBzIHVwIHRvIGEgc2xpZGVyIHBvc2l0aW9uLiAqL1xuICBhY2N1bXVsYXRlPFI+KGZuOiAoYWNjOiBSLCBlbnRyeTogUXVhbGl0eUVudHJ5LCBrZXk6IHN0cmluZykgPT4gUiwgaW5pdGlhbDogUiwga2V5cz86IFJlYWRvbmx5U2V0PHN0cmluZz4pOiBSIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5hY2N1bXVsYXRlKGZuLCBpbml0aWFsLCBrZXlzKTtcbiAgfVxuXG4gIC8qKiBPdmVyYWxsIHF1YWxpdHkgc2NvcmUg4oCUIGF2ZXJhZ2Ugb2YgYWxsIHN0ZXAgc2NvcmVzLiAqL1xuICBnZXRPdmVyYWxsU2NvcmUoKTogbnVtYmVyIHtcbiAgICBpZiAodGhpcy5zdG9yZS5zaXplID09PSAwKSByZXR1cm4gMS4wO1xuICAgIGNvbnN0IHRvdGFsID0gdGhpcy5zdG9yZS5hZ2dyZWdhdGUoKHN1bSwgZSkgPT4gc3VtICsgZS5zY29yZSwgMCk7XG4gICAgcmV0dXJuIHRvdGFsIC8gdGhpcy5zdG9yZS5zaXplO1xuICB9XG5cbiAgLyoqIEZpbmQgdGhlIGxvd2VzdC1zY29yaW5nIHN0ZXAuICovXG4gIGdldExvd2VzdCgpOiB7IHJ1bnRpbWVTdGFnZUlkOiBzdHJpbmc7IGVudHJ5OiBRdWFsaXR5RW50cnkgfSB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IGxvd2VzdDogeyBydW50aW1lU3RhZ2VJZDogc3RyaW5nOyBlbnRyeTogUXVhbGl0eUVudHJ5IH0gfCB1bmRlZmluZWQ7XG4gICAgZm9yIChjb25zdCBba2V5LCBlbnRyeV0gb2YgdGhpcy5zdG9yZS5nZXRNYXAoKSkge1xuICAgICAgaWYgKCFsb3dlc3QgfHwgZW50cnkuc2NvcmUgPCBsb3dlc3QuZW50cnkuc2NvcmUpIHtcbiAgICAgICAgbG93ZXN0ID0geyBydW50aW1lU3RhZ2VJZDoga2V5LCBlbnRyeSB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbG93ZXN0O1xuICB9XG5cbiAgLyoqIFByb2dyZXNzaXZlIHF1YWxpdHkgc2NvcmUgdXAgdG8gYSBzbGlkZXIgcG9zaXRpb24uICovXG4gIGdldFNjb3JlVXBUbyh2aXNpYmxlS2V5czogUmVhZG9ubHlTZXQ8c3RyaW5nPik6IG51bWJlciB7XG4gICAgbGV0IGNvdW50ID0gMDtcbiAgICBjb25zdCB0b3RhbCA9IHRoaXMuc3RvcmUuYWNjdW11bGF0ZShcbiAgICAgIChzdW0sIGUpID0+IHtcbiAgICAgICAgY291bnQrKztcbiAgICAgICAgcmV0dXJuIHN1bSArIGUuc2NvcmU7XG4gICAgICB9LFxuICAgICAgMCxcbiAgICAgIHZpc2libGVLZXlzLFxuICAgICk7XG4gICAgcmV0dXJuIGNvdW50ID09PSAwID8gMS4wIDogdG90YWwgLyBjb3VudDtcbiAgfVxuXG4gIHRvU25hcHNob3QoKSB7XG4gICAgY29uc3Qgc3RlcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgdGhpcy5zdG9yZS5nZXRNYXAoKSkge1xuICAgICAgc3RlcHNba2V5XSA9IHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogJ1F1YWxpdHknLFxuICAgICAgZGVzY3JpcHRpb246ICdRdWFsaXR5IHNjb3JlcyBwZXIgZXhlY3V0aW9uIHN0ZXAgd2l0aCBiYWNrdHJhY2tpbmcgc3VwcG9ydCcsXG4gICAgICBwcmVmZXJyZWRPcGVyYXRpb246IHRoaXMucHJlZmVycmVkT3BlcmF0aW9uLFxuICAgICAgZGF0YToge1xuICAgICAgICBudW1lcmljRmllbGQ6ICdzY29yZScsXG4gICAgICAgIG92ZXJhbGxTY29yZTogdGhpcy5nZXRPdmVyYWxsU2NvcmUoKSxcbiAgICAgICAgbG93ZXN0U3RlcDogdGhpcy5nZXRMb3dlc3QoKT8ucnVudGltZVN0YWdlSWQsXG4gICAgICAgIHN0ZXBzLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5zdG9yZS5jbGVhcigpO1xuICAgIHRoaXMuY3VycmVudFJ1bnRpbWVTdGFnZUlkID0gJyc7XG4gICAgdGhpcy5jdXJyZW50U3RhZ2VJZCA9ICcnO1xuICAgIHRoaXMuY3VycmVudFN0YWdlTmFtZSA9ICcnO1xuICAgIHRoaXMuY3VycmVudEtleXNSZWFkID0gW107XG4gICAgdGhpcy5jdXJyZW50S2V5c1dyaXR0ZW4gPSBbXTtcbiAgfVxufVxuIl19
@@ -7,9 +7,9 @@ exports.RecorderOperation = void 0;
7
7
  * Data is collected during the single DFS traversal. The consumer chooses the
8
8
  * operation at READ time:
9
9
  *
10
- * | Operation | KeyedRecorder method | SequenceRecorder method | Use case |
10
+ * | Operation | KeyedStore method | SequenceStore method | Use case |
11
11
  * |-------------|--------------------------|--------------------------------|-----------------------------|
12
- * | Translate | `getByKey(id)` | `getEntriesForStep(id)` | Per-step detail |
12
+ * | Translate | `get(id)` | `getByKey(id)` | Per-step detail |
13
13
  * | Accumulate | `accumulate(fn, init, k)` | `accumulate(fn, init, k)` | Running total up to slider |
14
14
  * | Aggregate | `aggregate(fn, init)` | `aggregate(fn, init)` | Grand total for dashboards |
15
15
  *
@@ -35,4 +35,4 @@ exports.RecorderOperation = {
35
35
  /** Grand total across all steps — dashboard / export summary. */
36
36
  Aggregate: 'aggregate',
37
37
  };
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVjb3JkZXJPcGVyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3JlY29yZGVyL1JlY29yZGVyT3BlcmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJHO0FBQ1UsUUFBQSxpQkFBaUIsR0FBRztJQUMvQiw4REFBOEQ7SUFDOUQsU0FBUyxFQUFFLFdBQVc7SUFDdEIsNEVBQTRFO0lBQzVFLFVBQVUsRUFBRSxZQUFZO0lBQ3hCLGlFQUFpRTtJQUNqRSxTQUFTLEVBQUUsV0FBVztDQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJlY29yZGVyT3BlcmF0aW9uIOKAlCB0aGUgdGhyZWUgc3RhbmRhcmQgb3BlcmF0aW9ucyBvbiBhdXRvLWNvbGxlY3RlZCB0cmF2ZXJzYWwgZGF0YS5cbiAqXG4gKiBEYXRhIGlzIGNvbGxlY3RlZCBkdXJpbmcgdGhlIHNpbmdsZSBERlMgdHJhdmVyc2FsLiBUaGUgY29uc3VtZXIgY2hvb3NlcyB0aGVcbiAqIG9wZXJhdGlvbiBhdCBSRUFEIHRpbWU6XG4gKlxuICogfCBPcGVyYXRpb24gICB8IEtleWVkUmVjb3JkZXIgbWV0aG9kICAgICB8IFNlcXVlbmNlUmVjb3JkZXIgbWV0aG9kICAgICAgICB8IFVzZSBjYXNlICAgICAgICAgICAgICAgICAgICB8XG4gKiB8LS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcbiAqIHwgVHJhbnNsYXRlICAgfCBgZ2V0QnlLZXkoaWQpYCAgICAgICAgICAgfCBgZ2V0RW50cmllc0ZvclN0ZXAoaWQpYCAgICAgICAgfCBQZXItc3RlcCBkZXRhaWwgICAgICAgICAgICAgfFxuICogfCBBY2N1bXVsYXRlICB8IGBhY2N1bXVsYXRlKGZuLCBpbml0LCBrKWAgfCBgYWNjdW11bGF0ZShmbiwgaW5pdCwgaylgICAgICB8IFJ1bm5pbmcgdG90YWwgdXAgdG8gc2xpZGVyICB8XG4gKiB8IEFnZ3JlZ2F0ZSAgIHwgYGFnZ3JlZ2F0ZShmbiwgaW5pdClgICAgIHwgYGFnZ3JlZ2F0ZShmbiwgaW5pdClgICAgICAgICAgIHwgR3JhbmQgdG90YWwgZm9yIGRhc2hib2FyZHMgIHxcbiAqXG4gKiBSZWNvcmRlcnMgZGVjbGFyZSBhIGBwcmVmZXJyZWRPcGVyYXRpb25gIHRvIGhpbnQgdGhlIFVJIGFib3V0IHdoaWNoIG9wZXJhdGlvblxuICogdG8gc2hvdyBwcm9taW5lbnRseS4gVGhlIGNvbnN1bWVyIGNhbiBvdmVycmlkZSB2aWEgY29uc3RydWN0b3Igb3B0aW9ucy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgTWV0cmljUmVjb3JkZXIsIFJlY29yZGVyT3BlcmF0aW9uIH0gZnJvbSAnZm9vdHByaW50anMnO1xuICpcbiAqIC8vIFVzZSBuYW1lZCBjb25zdGFudCAoYXV0b2NvbXBsZXRlKVxuICogbmV3IE1ldHJpY1JlY29yZGVyKHsgcHJlZmVycmVkT3BlcmF0aW9uOiBSZWNvcmRlck9wZXJhdGlvbi5BZ2dyZWdhdGUgfSk7XG4gKlxuICogLy8gT3IgaW5saW5lIHN0cmluZyAoc2FtZSB0eXBlKVxuICogbmV3IE1ldHJpY1JlY29yZGVyKHsgcHJlZmVycmVkT3BlcmF0aW9uOiAnYWNjdW11bGF0ZScgfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNvbnN0IFJlY29yZGVyT3BlcmF0aW9uID0ge1xuICAvKiogUGVyLXN0ZXAgZGV0YWlsIOKAlCB3aGF0IGhhcHBlbmVkIGF0IHRoaXMgZXhlY3V0aW9uIHN0ZXA/ICovXG4gIFRyYW5zbGF0ZTogJ3RyYW5zbGF0ZScsXG4gIC8qKiBQcm9ncmVzc2l2ZSBydW5uaW5nIHRvdGFsIOKAlCB2YWx1ZSBncm93cyBhcyB0aGUgc2xpZGVyIHNjcnVicyBmb3J3YXJkLiAqL1xuICBBY2N1bXVsYXRlOiAnYWNjdW11bGF0ZScsXG4gIC8qKiBHcmFuZCB0b3RhbCBhY3Jvc3MgYWxsIHN0ZXBzIOKAlCBkYXNoYm9hcmQgLyBleHBvcnQgc3VtbWFyeS4gKi9cbiAgQWdncmVnYXRlOiAnYWdncmVnYXRlJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFJlY29yZGVyT3BlcmF0aW9uID0gKHR5cGVvZiBSZWNvcmRlck9wZXJhdGlvbilba2V5b2YgdHlwZW9mIFJlY29yZGVyT3BlcmF0aW9uXTtcbiJdfQ==
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVjb3JkZXJPcGVyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3JlY29yZGVyL1JlY29yZGVyT3BlcmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJHO0FBQ1UsUUFBQSxpQkFBaUIsR0FBRztJQUMvQiw4REFBOEQ7SUFDOUQsU0FBUyxFQUFFLFdBQVc7SUFDdEIsNEVBQTRFO0lBQzVFLFVBQVUsRUFBRSxZQUFZO0lBQ3hCLGlFQUFpRTtJQUNqRSxTQUFTLEVBQUUsV0FBVztDQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJlY29yZGVyT3BlcmF0aW9uIOKAlCB0aGUgdGhyZWUgc3RhbmRhcmQgb3BlcmF0aW9ucyBvbiBhdXRvLWNvbGxlY3RlZCB0cmF2ZXJzYWwgZGF0YS5cbiAqXG4gKiBEYXRhIGlzIGNvbGxlY3RlZCBkdXJpbmcgdGhlIHNpbmdsZSBERlMgdHJhdmVyc2FsLiBUaGUgY29uc3VtZXIgY2hvb3NlcyB0aGVcbiAqIG9wZXJhdGlvbiBhdCBSRUFEIHRpbWU6XG4gKlxuICogfCBPcGVyYXRpb24gICB8IEtleWVkU3RvcmUgbWV0aG9kICAgICAgICB8IFNlcXVlbmNlU3RvcmUgbWV0aG9kICAgICAgICAgICB8IFVzZSBjYXNlICAgICAgICAgICAgICAgICAgICB8XG4gKiB8LS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcbiAqIHwgVHJhbnNsYXRlICAgfCBgZ2V0KGlkKWAgICAgICAgICAgICAgICAgfCBgZ2V0QnlLZXkoaWQpYCAgICAgICAgICAgICAgICAgfCBQZXItc3RlcCBkZXRhaWwgICAgICAgICAgICAgfFxuICogfCBBY2N1bXVsYXRlICB8IGBhY2N1bXVsYXRlKGZuLCBpbml0LCBrKWAgfCBgYWNjdW11bGF0ZShmbiwgaW5pdCwgaylgICAgICB8IFJ1bm5pbmcgdG90YWwgdXAgdG8gc2xpZGVyICB8XG4gKiB8IEFnZ3JlZ2F0ZSAgIHwgYGFnZ3JlZ2F0ZShmbiwgaW5pdClgICAgIHwgYGFnZ3JlZ2F0ZShmbiwgaW5pdClgICAgICAgICAgIHwgR3JhbmQgdG90YWwgZm9yIGRhc2hib2FyZHMgIHxcbiAqXG4gKiBSZWNvcmRlcnMgZGVjbGFyZSBhIGBwcmVmZXJyZWRPcGVyYXRpb25gIHRvIGhpbnQgdGhlIFVJIGFib3V0IHdoaWNoIG9wZXJhdGlvblxuICogdG8gc2hvdyBwcm9taW5lbnRseS4gVGhlIGNvbnN1bWVyIGNhbiBvdmVycmlkZSB2aWEgY29uc3RydWN0b3Igb3B0aW9ucy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgTWV0cmljUmVjb3JkZXIsIFJlY29yZGVyT3BlcmF0aW9uIH0gZnJvbSAnZm9vdHByaW50anMnO1xuICpcbiAqIC8vIFVzZSBuYW1lZCBjb25zdGFudCAoYXV0b2NvbXBsZXRlKVxuICogbmV3IE1ldHJpY1JlY29yZGVyKHsgcHJlZmVycmVkT3BlcmF0aW9uOiBSZWNvcmRlck9wZXJhdGlvbi5BZ2dyZWdhdGUgfSk7XG4gKlxuICogLy8gT3IgaW5saW5lIHN0cmluZyAoc2FtZSB0eXBlKVxuICogbmV3IE1ldHJpY1JlY29yZGVyKHsgcHJlZmVycmVkT3BlcmF0aW9uOiAnYWNjdW11bGF0ZScgfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNvbnN0IFJlY29yZGVyT3BlcmF0aW9uID0ge1xuICAvKiogUGVyLXN0ZXAgZGV0YWlsIOKAlCB3aGF0IGhhcHBlbmVkIGF0IHRoaXMgZXhlY3V0aW9uIHN0ZXA/ICovXG4gIFRyYW5zbGF0ZTogJ3RyYW5zbGF0ZScsXG4gIC8qKiBQcm9ncmVzc2l2ZSBydW5uaW5nIHRvdGFsIOKAlCB2YWx1ZSBncm93cyBhcyB0aGUgc2xpZGVyIHNjcnVicyBmb3J3YXJkLiAqL1xuICBBY2N1bXVsYXRlOiAnYWNjdW11bGF0ZScsXG4gIC8qKiBHcmFuZCB0b3RhbCBhY3Jvc3MgYWxsIHN0ZXBzIOKAlCBkYXNoYm9hcmQgLyBleHBvcnQgc3VtbWFyeS4gKi9cbiAgQWdncmVnYXRlOiAnYWdncmVnYXRlJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFJlY29yZGVyT3BlcmF0aW9uID0gKHR5cGVvZiBSZWNvcmRlck9wZXJhdGlvbilba2V5b2YgdHlwZW9mIFJlY29yZGVyT3BlcmF0aW9uXTtcbiJdfQ==
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RecorderOperation = exports.CompositeRecorder = exports.isFlowEvent = exports.hasRecorderMethods = exports.hasFlowRecorderMethods = exports.hasEmitRecorderMethods = exports.SequenceRecorder = exports.KeyedRecorder = exports.BoundaryStateTracker = exports.SequenceStore = exports.KeyedStore = exports.BoundaryStateStore = void 0;
3
+ exports.RecorderOperation = exports.CompositeRecorder = exports.isFlowEvent = exports.hasRecorderMethods = exports.hasFlowRecorderMethods = exports.hasEmitRecorderMethods = exports.SequenceStore = exports.KeyedStore = exports.BoundaryStateStore = void 0;
4
4
  // ── Stores (concrete, composable — v5 primary API) ────────────────────
5
5
  // Compose these via `new Store<T>()` as a field on your recorder class.
6
6
  // One purpose per recorder: stores are storage; recorders are event hooks.
@@ -10,16 +10,6 @@ var KeyedStore_js_1 = require("./KeyedStore.js");
10
10
  Object.defineProperty(exports, "KeyedStore", { enumerable: true, get: function () { return KeyedStore_js_1.KeyedStore; } });
11
11
  var SequenceStore_js_1 = require("./SequenceStore.js");
12
12
  Object.defineProperty(exports, "SequenceStore", { enumerable: true, get: function () { return SequenceStore_js_1.SequenceStore; } });
13
- // ── Abstract bases (DEPRECATED — slated for removal in 5.0 final) ─────
14
- // Kept during the v5 migration window for downstream consumers (agentfootprint,
15
- // agentfootprint-lens) that still extend them. New code should compose Stores
16
- // instead. See `docs/design/v5-recorder-redesign.md`.
17
- var BoundaryStateTracker_js_1 = require("./BoundaryStateTracker.js");
18
- Object.defineProperty(exports, "BoundaryStateTracker", { enumerable: true, get: function () { return BoundaryStateTracker_js_1.BoundaryStateTracker; } });
19
- var KeyedRecorder_js_1 = require("./KeyedRecorder.js");
20
- Object.defineProperty(exports, "KeyedRecorder", { enumerable: true, get: function () { return KeyedRecorder_js_1.KeyedRecorder; } });
21
- var SequenceRecorder_js_1 = require("./SequenceRecorder.js");
22
- Object.defineProperty(exports, "SequenceRecorder", { enumerable: true, get: function () { return SequenceRecorder_js_1.SequenceRecorder; } });
23
13
  var CombinedRecorder_js_1 = require("./CombinedRecorder.js");
24
14
  Object.defineProperty(exports, "hasEmitRecorderMethods", { enumerable: true, get: function () { return CombinedRecorder_js_1.hasEmitRecorderMethods; } });
25
15
  Object.defineProperty(exports, "hasFlowRecorderMethods", { enumerable: true, get: function () { return CombinedRecorder_js_1.hasFlowRecorderMethods; } });
@@ -29,4 +19,4 @@ var CompositeRecorder_js_1 = require("./CompositeRecorder.js");
29
19
  Object.defineProperty(exports, "CompositeRecorder", { enumerable: true, get: function () { return CompositeRecorder_js_1.CompositeRecorder; } });
30
20
  var RecorderOperation_js_1 = require("./RecorderOperation.js");
31
21
  Object.defineProperty(exports, "RecorderOperation", { enumerable: true, get: function () { return RecorderOperation_js_1.RecorderOperation; } });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3JlY29yZGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlFQUF5RTtBQUN6RSx3RUFBd0U7QUFDeEUsMkVBQTJFO0FBQzNFLGlFQUE2RDtBQUFwRCwySEFBQSxrQkFBa0IsT0FBQTtBQUMzQixpREFBNkM7QUFBcEMsMkdBQUEsVUFBVSxPQUFBO0FBQ25CLHVEQUFtRDtBQUExQyxpSEFBQSxhQUFhLE9BQUE7QUFFdEIseUVBQXlFO0FBQ3pFLGdGQUFnRjtBQUNoRiw4RUFBOEU7QUFDOUUsc0RBQXNEO0FBQ3RELHFFQUFpRTtBQUF4RCwrSEFBQSxvQkFBb0IsT0FBQTtBQUM3Qix1REFBbUQ7QUFBMUMsaUhBQUEsYUFBYSxPQUFBO0FBQ3RCLDZEQUF5RDtBQUFoRCx1SEFBQSxnQkFBZ0IsT0FBQTtBQUl6Qiw2REFBd0g7QUFBL0csNkhBQUEsc0JBQXNCLE9BQUE7QUFBRSw2SEFBQSxzQkFBc0IsT0FBQTtBQUFFLHlIQUFBLGtCQUFrQixPQUFBO0FBQUUsa0hBQUEsV0FBVyxPQUFBO0FBRXhGLCtEQUEyRDtBQUFsRCx5SEFBQSxpQkFBaUIsT0FBQTtBQUUxQiwrREFBMkQ7QUFBbEQseUhBQUEsaUJBQWlCLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyDilIDilIAgU3RvcmVzIChjb25jcmV0ZSwgY29tcG9zYWJsZSDigJQgdjUgcHJpbWFyeSBBUEkpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gQ29tcG9zZSB0aGVzZSB2aWEgYG5ldyBTdG9yZTxUPigpYCBhcyBhIGZpZWxkIG9uIHlvdXIgcmVjb3JkZXIgY2xhc3MuXG4vLyBPbmUgcHVycG9zZSBwZXIgcmVjb3JkZXI6IHN0b3JlcyBhcmUgc3RvcmFnZTsgcmVjb3JkZXJzIGFyZSBldmVudCBob29rcy5cbmV4cG9ydCB7IEJvdW5kYXJ5U3RhdGVTdG9yZSB9IGZyb20gJy4vQm91bmRhcnlTdGF0ZVN0b3JlLmpzJztcbmV4cG9ydCB7IEtleWVkU3RvcmUgfSBmcm9tICcuL0tleWVkU3RvcmUuanMnO1xuZXhwb3J0IHsgU2VxdWVuY2VTdG9yZSB9IGZyb20gJy4vU2VxdWVuY2VTdG9yZS5qcyc7XG5cbi8vIOKUgOKUgCBBYnN0cmFjdCBiYXNlcyAoREVQUkVDQVRFRCDigJQgc2xhdGVkIGZvciByZW1vdmFsIGluIDUuMCBmaW5hbCkg4pSA4pSA4pSA4pSA4pSAXG4vLyBLZXB0IGR1cmluZyB0aGUgdjUgbWlncmF0aW9uIHdpbmRvdyBmb3IgZG93bnN0cmVhbSBjb25zdW1lcnMgKGFnZW50Zm9vdHByaW50LFxuLy8gYWdlbnRmb290cHJpbnQtbGVucykgdGhhdCBzdGlsbCBleHRlbmQgdGhlbS4gTmV3IGNvZGUgc2hvdWxkIGNvbXBvc2UgU3RvcmVzXG4vLyBpbnN0ZWFkLiBTZWUgYGRvY3MvZGVzaWduL3Y1LXJlY29yZGVyLXJlZGVzaWduLm1kYC5cbmV4cG9ydCB7IEJvdW5kYXJ5U3RhdGVUcmFja2VyIH0gZnJvbSAnLi9Cb3VuZGFyeVN0YXRlVHJhY2tlci5qcyc7XG5leHBvcnQgeyBLZXllZFJlY29yZGVyIH0gZnJvbSAnLi9LZXllZFJlY29yZGVyLmpzJztcbmV4cG9ydCB7IFNlcXVlbmNlUmVjb3JkZXIgfSBmcm9tICcuL1NlcXVlbmNlUmVjb3JkZXIuanMnO1xuXG4vLyDilIDilIAgSW50ZXJmYWNlcyAoZXZlbnQgaG9va3MpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuZXhwb3J0IHR5cGUgeyBDb21iaW5lZFJlY29yZGVyIH0gZnJvbSAnLi9Db21iaW5lZFJlY29yZGVyLmpzJztcbmV4cG9ydCB7IGhhc0VtaXRSZWNvcmRlck1ldGhvZHMsIGhhc0Zsb3dSZWNvcmRlck1ldGhvZHMsIGhhc1JlY29yZGVyTWV0aG9kcywgaXNGbG93RXZlbnQgfSBmcm9tICcuL0NvbWJpbmVkUmVjb3JkZXIuanMnO1xuZXhwb3J0IHR5cGUgeyBDb21wb3NpdGVTbmFwc2hvdCB9IGZyb20gJy4vQ29tcG9zaXRlUmVjb3JkZXIuanMnO1xuZXhwb3J0IHsgQ29tcG9zaXRlUmVjb3JkZXIgfSBmcm9tICcuL0NvbXBvc2l0ZVJlY29yZGVyLmpzJztcbmV4cG9ydCB0eXBlIHsgRW1pdEV2ZW50LCBFbWl0UmVjb3JkZXIgfSBmcm9tICcuL0VtaXRSZWNvcmRlci5qcyc7XG5leHBvcnQgeyBSZWNvcmRlck9wZXJhdGlvbiB9IGZyb20gJy4vUmVjb3JkZXJPcGVyYXRpb24uanMnO1xuIl19
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3JlY29yZGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlFQUF5RTtBQUN6RSx3RUFBd0U7QUFDeEUsMkVBQTJFO0FBQzNFLGlFQUE2RDtBQUFwRCwySEFBQSxrQkFBa0IsT0FBQTtBQUMzQixpREFBNkM7QUFBcEMsMkdBQUEsVUFBVSxPQUFBO0FBQ25CLHVEQUFtRDtBQUExQyxpSEFBQSxhQUFhLE9BQUE7QUFJdEIsNkRBQXdIO0FBQS9HLDZIQUFBLHNCQUFzQixPQUFBO0FBQUUsNkhBQUEsc0JBQXNCLE9BQUE7QUFBRSx5SEFBQSxrQkFBa0IsT0FBQTtBQUFFLGtIQUFBLFdBQVcsT0FBQTtBQUV4RiwrREFBMkQ7QUFBbEQseUhBQUEsaUJBQWlCLE9BQUE7QUFFMUIsK0RBQTJEO0FBQWxELHlIQUFBLGlCQUFpQixPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8g4pSA4pSAIFN0b3JlcyAoY29uY3JldGUsIGNvbXBvc2FibGUg4oCUIHY1IHByaW1hcnkgQVBJKSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIENvbXBvc2UgdGhlc2UgdmlhIGBuZXcgU3RvcmU8VD4oKWAgYXMgYSBmaWVsZCBvbiB5b3VyIHJlY29yZGVyIGNsYXNzLlxuLy8gT25lIHB1cnBvc2UgcGVyIHJlY29yZGVyOiBzdG9yZXMgYXJlIHN0b3JhZ2U7IHJlY29yZGVycyBhcmUgZXZlbnQgaG9va3MuXG5leHBvcnQgeyBCb3VuZGFyeVN0YXRlU3RvcmUgfSBmcm9tICcuL0JvdW5kYXJ5U3RhdGVTdG9yZS5qcyc7XG5leHBvcnQgeyBLZXllZFN0b3JlIH0gZnJvbSAnLi9LZXllZFN0b3JlLmpzJztcbmV4cG9ydCB7IFNlcXVlbmNlU3RvcmUgfSBmcm9tICcuL1NlcXVlbmNlU3RvcmUuanMnO1xuXG4vLyDilIDilIAgSW50ZXJmYWNlcyAoZXZlbnQgaG9va3MpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuZXhwb3J0IHR5cGUgeyBDb21iaW5lZFJlY29yZGVyIH0gZnJvbSAnLi9Db21iaW5lZFJlY29yZGVyLmpzJztcbmV4cG9ydCB7IGhhc0VtaXRSZWNvcmRlck1ldGhvZHMsIGhhc0Zsb3dSZWNvcmRlck1ldGhvZHMsIGhhc1JlY29yZGVyTWV0aG9kcywgaXNGbG93RXZlbnQgfSBmcm9tICcuL0NvbWJpbmVkUmVjb3JkZXIuanMnO1xuZXhwb3J0IHR5cGUgeyBDb21wb3NpdGVTbmFwc2hvdCB9IGZyb20gJy4vQ29tcG9zaXRlUmVjb3JkZXIuanMnO1xuZXhwb3J0IHsgQ29tcG9zaXRlUmVjb3JkZXIgfSBmcm9tICcuL0NvbXBvc2l0ZVJlY29yZGVyLmpzJztcbmV4cG9ydCB0eXBlIHsgRW1pdEV2ZW50LCBFbWl0UmVjb3JkZXIgfSBmcm9tICcuL0VtaXRSZWNvcmRlci5qcyc7XG5leHBvcnQgeyBSZWNvcmRlck9wZXJhdGlvbiB9IGZyb20gJy4vUmVjb3JkZXJPcGVyYXRpb24uanMnO1xuIl19
@@ -93,4 +93,4 @@ function formatQualityTrace(trace) {
93
93
  return lines.join('\n');
94
94
  }
95
95
  exports.formatQualityTrace = formatQualityTrace;
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVhbGl0eVRyYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9yZWNvcmRlci9xdWFsaXR5VHJhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHOzs7QUFFSCx5REFBdUU7QUEyQnZFOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixZQUFZLENBQzFCLFNBQXlCLEVBQ3pCLGVBQTRDLEVBQzVDLE9BQWUsRUFDZixRQUFRLEdBQUcsRUFBRTtJQUViLE1BQU0sVUFBVSxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2hCLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0lBRUQsZ0ZBQWdGO0lBQ2hGLE1BQU0sSUFBSSxHQUFHLElBQUEsMEJBQVcsRUFBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsSUFBSSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBRWpILElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNWLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQy9ELENBQUM7SUFFRCxrRUFBa0U7SUFDbEUsTUFBTSxLQUFLLEdBQUcsSUFBQSwrQkFBZ0IsRUFBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxNQUFNLE1BQU0sR0FBbUIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ2hELE1BQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFB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QUksS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3BCLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDZixLQUFLLENBQUMsSUFBSSxDQUNSLGtDQUFrQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUc7WUFDdkUsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDbEcsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FDekMsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUIsQ0FBQztBQXhCRCxnREF3QkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIHF1YWxpdHlUcmFjZSgpIOKAlCBRdWFsaXR5IFN0YWNrIFRyYWNlIGJ1aWx0IG9uIGNhdXNhbENoYWluKCkuXG4gKlxuICogVGhpbiBsYXllciBvdmVyIGBtZW1vcnkvYmFja3RyYWNrLmNhdXNhbENoYWluKClgIHRoYXQgZGVjb3JhdGVzXG4gKiBlYWNoIGNhdXNhbCBub2RlIHdpdGggcXVhbGl0eSBzY29yZXMgZnJvbSBhIFF1YWxpdHlSZWNvcmRlci5cbiAqXG4gKiBgYGBcbiAqIFF1YWxpdHkgVHJhY2UgKHNjb3JlOiAwLjMgYXQgY2FsbC1sbG0jNSk6XG4gKiAgIGF0IGNhbGwtbGxtIzUgICAgIHNjb3JlPTAuMyAg4oaQIHF1YWxpdHkgZHJvcHBlZCBoZXJlXG4gKiAgIGF0IHN5c3RlbS1wcm9tcHQjMSBzY29yZT0wLjggIOKGkCBzeXN0ZW1Qcm9tcHQgd2FzIGdvb2RcbiAqICAgYXQgc2VlZCMwICAgICAgICAgIHNjb3JlPTEuMCAg4oaQIGlucHV0IHdhcyBjbGVhblxuICpcbiAqIFJvb3QgY2F1c2U6IHF1YWxpdHkgZHJvcHBlZCBhdCBjYWxsLWxsbSM1ICgwLjgg4oaSIDAuMywgzpQwLjUpXG4gKiBgYGBcbiAqL1xuXG5pbXBvcnQgeyBjYXVzYWxDaGFpbiwgZmxhdHRlbkNhdXNhbERBRyB9IGZyb20gJy4uL21lbW9yeS9iYWNrdHJhY2suanMnO1xuaW1wb3J0IHR5cGUgeyBDb21taXRCdW5kbGUgfSBmcm9tICcuLi9tZW1vcnkvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBLZXllZFJlY29yZGVyIH0gZnJvbSAnLi9LZXllZFJlY29yZGVyLmpzJztcbmltcG9ydCB0eXBlIHsgUXVhbGl0eUVudHJ5IH0gZnJvbSAnLi9RdWFsaXR5UmVjb3JkZXIuanMnO1xuXG4vKiogQSBzaW5nbGUgZnJhbWUgaW4gdGhlIHF1YWxpdHkgc3RhY2sgdHJhY2UuICovXG5leHBvcnQgaW50ZXJmYWNlIFF1YWxpdHlGcmFtZSB7XG4gIHJ1bnRpbWVTdGFnZUlkOiBzdHJpbmc7XG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuICBzY29yZTogbnVtYmVyO1xuICBmYWN0b3JzOiBzdHJpbmdbXTtcbiAgbGlua2VkQnk6IHN0cmluZztcbiAgZGVwdGg6IG51bWJlcjtcbn1cblxuLyoqIFRoZSBmdWxsIHF1YWxpdHkgc3RhY2sgdHJhY2UuICovXG5leHBvcnQgaW50ZXJmYWNlIFF1YWxpdHlTdGFja1RyYWNlIHtcbiAgc3RhcnRJZDogc3RyaW5nO1xuICBzdGFydFNjb3JlOiBudW1iZXI7XG4gIGZyYW1lczogUXVhbGl0eUZyYW1lW107XG4gIHJvb3RDYXVzZT86IHtcbiAgICBmcmFtZTogUXVhbGl0eUZyYW1lO1xuICAgIHByZXZpb3VzRnJhbWU6IFF1YWxpdHlGcmFtZTtcbiAgICBkcm9wOiBudW1iZXI7XG4gIH07XG59XG5cbi8qKlxuICogQnVpbGQgYSBxdWFsaXR5IHN0YWNrIHRyYWNlIGJ5IGRlY29yYXRpbmcgYSBjYXVzYWwgY2hhaW4gd2l0aCBzY29yZXMuXG4gKlxuICogQHBhcmFtIGNvbW1pdExvZyAgICAgICAgRnJvbSBleGVjdXRvci5nZXRTbmFwc2hvdCgpLmNvbW1pdExvZ1xuICogQHBhcmFtIHF1YWxpdHlSZWNvcmRlciAgUXVhbGl0eVJlY29yZGVyIGF0dGFjaGVkIGR1cmluZyBleGVjdXRpb25cbiAqIEBwYXJhbSBzdGFydElkICAgICAgICAgIHJ1bnRpbWVTdGFnZUlkIHRvIHN0YXJ0IGZyb21cbiAqIEBwYXJhbSBtYXhEZXB0aCAgICAgICAgIE1heGltdW0gYmFja3RyYWNraW5nIGRlcHRoIChkZWZhdWx0OiAyMClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHF1YWxpdHlUcmFjZShcbiAgY29tbWl0TG9nOiBDb21taXRCdW5kbGVbXSxcbiAgcXVhbGl0eVJlY29yZGVyOiBLZXllZFJlY29yZGVyPFF1YWxpdHlFbnRyeT4sXG4gIHN0YXJ0SWQ6IHN0cmluZyxcbiAgbWF4RGVwdGggPSAyMCxcbik6IFF1YWxpdHlTdGFja1RyYWNlIHtcbiAgY29uc3Qgc3RhcnRFbnRyeSA9IHF1YWxpdHlSZWNvcmRlci5nZXRCeUtleShzdGFydElkKTtcbiAgaWYgKCFzdGFydEVudHJ5KSB7XG4gICAgcmV0dXJuIHsgc3RhcnRJZCwgc3RhcnRTY29yZTogLTEsIGZyYW1lczogW10gfTtcbiAgfVxuXG4gIC8vIFVzZSBjYXVzYWxDaGFpbiB0byBidWlsZCB0aGUgREFHLCBwcm92aWRpbmcga2V5c1JlYWQgZnJvbSB0aGUgUXVhbGl0eVJlY29yZGVyXG4gIGNvbnN0IHJvb3QgPSBjYXVzYWxDaGFpbihjb21taXRMb2csIHN0YXJ0SWQsIChpZCkgPT4gcXVhbGl0eVJlY29yZGVyLmdldEJ5S2V5KGlkKT8ua2V5c1JlYWQgPz8gW10sIHsgbWF4RGVwdGggfSk7XG5cbiAgaWYgKCFyb290KSB7XG4gICAgcmV0dXJuIHsgc3RhcnRJZCwgc3RhcnRTY29yZTogc3RhcnRFbnRyeS5zY29yZSwgZnJhbWVzOiBbXSB9O1xuICB9XG5cbiAgLy8gRmxhdHRlbiBEQUcgdG8gQkZTLW9yZGVyZWQgZnJhbWVzLCBkZWNvcmF0ZSB3aXRoIHF1YWxpdHkgc2NvcmVzXG4gIGNvbnN0IG5vZGVzID0gZmxhdHRlbkNhdXNhbERBRyhyb290KTtcbiAgY29uc3QgZnJhbWVzOiBRdWFsaXR5RnJhbWVbXSA9IG5vZGVzLm1hcCgobm9kZSkgPT4ge1xuICAgIGNvbnN0IGVudHJ5ID0gcXVhbGl0eVJlY29yZGVyLmdldEJ5S2V5KG5vZGUucnVudGltZVN0YWdlSWQpO1xuICAgIHJldHVybiB7XG4gICAgICBydW50aW1lU3RhZ2VJZDogbm9kZS5ydW50aW1lU3RhZ2VJZCxcbiAgICAgIHN0YWdlTmFtZTogbm9kZS5zdGFnZU5hbWUsXG4gICAgICBzY29yZTogZW50cnk/LnNjb3JlID8/IC0xLFxuICAgICAgZmFjdG9yczogZW50cnk/LmZhY3RvcnMgPz8gW10sXG4gICAgICBsaW5rZWRCeTogbm9kZS5saW5rZWRCeSxcbiAgICAgIGRlcHRoOiBub2RlLmRlcHRoLFxuICAgIH07XG4gIH0pO1xuXG4gIC8vIEZpbmQgcm9vdCBjYXVzZTogYmlnZ2VzdCBxdWFsaXR5IGRyb3AgYmV0d2VlbiBhZGphY2VudCBmcmFtZXMgKEJGUyBvcmRlcilcbiAgbGV0IHJvb3RDYXVzZTogUXVhbGl0eVN0YWNrVHJhY2VbJ3Jvb3RDYXVzZSddO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGZyYW1lcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGZyYW1lID0gZnJhbWVzW2ldO1xuICAgIC8vIExvb2sgYXQgZWFjaCBwYXJlbnQgKGZyYW1lcyBhdCBkZXB0aCArIDEpXG4gICAgZm9yIChjb25zdCBwYXJlbnRGcmFtZSBvZiBmcmFtZXMuZmlsdGVyKChmKSA9PiBmLmRlcHRoID09PSBmcmFtZS5kZXB0aCArIDEpKSB7XG4gICAgICBpZiAocGFyZW50RnJhbWUuc2NvcmUgPCAwKSBjb250aW51ZTtcbiAgICAgIGNvbnN0IGRyb3AgPSBwYXJlbnRGcmFtZS5zY29yZSAtIGZyYW1lLnNjb3JlO1xuICAgICAgaWYgKGRyb3AgPiAwICYmICghcm9vdENhdXNlIHx8IGRyb3AgPiByb290Q2F1c2UuZHJvcCkpIHtcbiAgICAgICAgcm9vdENhdXNlID0geyBmcmFtZSwgcHJldmlvdXNGcmFtZTogcGFyZW50RnJhbWUsIGRyb3AgfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHN0YXJ0SWQsXG4gICAgc3RhcnRTY29yZTogc3RhcnRFbnRyeS5zY29yZSxcbiAgICBmcmFtZXMsXG4gICAgcm9vdENhdXNlLFxuICB9O1xufVxuXG4vKipcbiAqIEZvcm1hdCBhIFF1YWxpdHlTdGFja1RyYWNlIGFzIGh1bWFuLXJlYWRhYmxlIHRleHQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRRdWFsaXR5VHJhY2UodHJhY2U6IFF1YWxpdHlTdGFja1RyYWNlKTogc3RyaW5nIHtcbiAgaWYgKHRyYWNlLmZyYW1lcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gYFF1YWxpdHkgVHJhY2U6IG5vIGRhdGEgZm9yICR7dHJhY2Uuc3RhcnRJZH1gO1xuICB9XG5cbiAgY29uc3QgbGluZXM6IHN0cmluZ1tdID0gW2BRdWFsaXR5IFRyYWNlIChzY29yZTogJHt0cmFjZS5zdGFydFNjb3JlLnRvRml4ZWQoMil9IGF0ICR7dHJhY2Uuc3RhcnRJZH0pOmBdO1xuXG4gIGZvciAoY29uc3QgZnJhbWUgb2YgdHJhY2UuZnJhbWVzKSB7XG4gICAgY29uc3Qgc2NvcmVTdHIgPSBmcmFtZS5zY29yZSA+PSAwID8gZnJhbWUuc2NvcmUudG9GaXhlZCgyKSA6ICc/JztcbiAgICBjb25zdCBsaW5rID0gZnJhbWUubGlua2VkQnkgPyBgICh2aWEgJHtmcmFtZS5saW5rZWRCeX0pYCA6ICcnO1xuICAgIGNvbnN0IGZhY3RvcnMgPSBmcmFtZS5mYWN0b3JzLmxlbmd0aCA+IDAgPyBgIOKAlCAke2ZyYW1lLmZhY3RvcnMuam9pbignLCAnKX1gIDogJyc7XG4gICAgbGluZXMucHVzaChgICBhdCAke2ZyYW1lLnJ1bnRpbWVTdGFnZUlkLnBhZEVuZCgzMCl9IHNjb3JlPSR7c2NvcmVTdHJ9JHtsaW5rfSR7ZmFjdG9yc31gKTtcbiAgfVxuXG4gIGlmICh0cmFjZS5yb290Q2F1c2UpIHtcbiAgICBsaW5lcy5wdXNoKCcnKTtcbiAgICBsaW5lcy5wdXNoKFxuICAgICAgYFJvb3QgY2F1c2U6IHF1YWxpdHkgZHJvcHBlZCBhdCAke3RyYWNlLnJvb3RDYXVzZS5mcmFtZS5ydW50aW1lU3RhZ2VJZH0gYCArXG4gICAgICAgIGAoJHt0cmFjZS5yb290Q2F1c2UucHJldmlvdXNGcmFtZS5zY29yZS50b0ZpeGVkKDIpfSDihpIgJHt0cmFjZS5yb290Q2F1c2UuZnJhbWUuc2NvcmUudG9GaXhlZCgyKX0sIGAgK1xuICAgICAgICBgzpQke3RyYWNlLnJvb3RDYXVzZS5kcm9wLnRvRml4ZWQoMil9KWAsXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBsaW5lcy5qb2luKCdcXG4nKTtcbn1cbiJdfQ==
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVhbGl0eVRyYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9yZWNvcmRlci9xdWFsaXR5VHJhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHOzs7QUFFSCx5REFBdUU7QUErQnZFOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixZQUFZLENBQzFCLFNBQXlCLEVBQ3pCLGVBQThCLEVBQzlCLE9BQWUsRUFDZixRQUFRLEdBQUcsRUFBRTtJQUViLE1BQU0sVUFBVSxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2hCLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0lBRUQsZ0ZBQWdGO0lBQ2hGLE1BQU0sSUFBSSxHQUFHLElBQUEsMEJBQVcsRUFBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsSUFBSSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBRWpILElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNWLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQy9ELENBQUM7SUFFRCxrRUFBa0U7SUFDbEUsTUFBTSxLQUFLLEdBQUcsSUFBQSwrQkFBZ0IsRUFBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxNQUFNLE1BQU0sR0FBbUIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ2hELE1BQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFB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QUksS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3BCLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDZixLQUFLLENBQUMsSUFBSSxDQUNSLGtDQUFrQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUc7WUFDdkUsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDbEcsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FDekMsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUIsQ0FBQztBQXhCRCxnREF3QkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIHF1YWxpdHlUcmFjZSgpIOKAlCBRdWFsaXR5IFN0YWNrIFRyYWNlIGJ1aWx0IG9uIGNhdXNhbENoYWluKCkuXG4gKlxuICogVGhpbiBsYXllciBvdmVyIGBtZW1vcnkvYmFja3RyYWNrLmNhdXNhbENoYWluKClgIHRoYXQgZGVjb3JhdGVzXG4gKiBlYWNoIGNhdXNhbCBub2RlIHdpdGggcXVhbGl0eSBzY29yZXMgZnJvbSBhIFF1YWxpdHlSZWNvcmRlci5cbiAqXG4gKiBgYGBcbiAqIFF1YWxpdHkgVHJhY2UgKHNjb3JlOiAwLjMgYXQgY2FsbC1sbG0jNSk6XG4gKiAgIGF0IGNhbGwtbGxtIzUgICAgIHNjb3JlPTAuMyAg4oaQIHF1YWxpdHkgZHJvcHBlZCBoZXJlXG4gKiAgIGF0IHN5c3RlbS1wcm9tcHQjMSBzY29yZT0wLjggIOKGkCBzeXN0ZW1Qcm9tcHQgd2FzIGdvb2RcbiAqICAgYXQgc2VlZCMwICAgICAgICAgIHNjb3JlPTEuMCAg4oaQIGlucHV0IHdhcyBjbGVhblxuICpcbiAqIFJvb3QgY2F1c2U6IHF1YWxpdHkgZHJvcHBlZCBhdCBjYWxsLWxsbSM1ICgwLjgg4oaSIDAuMywgzpQwLjUpXG4gKiBgYGBcbiAqL1xuXG5pbXBvcnQgeyBjYXVzYWxDaGFpbiwgZmxhdHRlbkNhdXNhbERBRyB9IGZyb20gJy4uL21lbW9yeS9iYWNrdHJhY2suanMnO1xuaW1wb3J0IHR5cGUgeyBDb21taXRCdW5kbGUgfSBmcm9tICcuLi9tZW1vcnkvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBRdWFsaXR5RW50cnkgfSBmcm9tICcuL1F1YWxpdHlSZWNvcmRlci5qcyc7XG5cbi8qKiBNaW5pbWFsIHBlci1zdGVwIHF1YWxpdHkgbG9va3VwIOKAlCBzYXRpc2ZpZWQgYnkgYFF1YWxpdHlSZWNvcmRlcmAgKHN0cnVjdHVyYWwsIGRlY291cGxlZCkuICovXG5leHBvcnQgaW50ZXJmYWNlIFF1YWxpdHlMb29rdXAge1xuICBnZXRCeUtleShydW50aW1lU3RhZ2VJZDogc3RyaW5nKTogUXVhbGl0eUVudHJ5IHwgdW5kZWZpbmVkO1xufVxuXG4vKiogQSBzaW5nbGUgZnJhbWUgaW4gdGhlIHF1YWxpdHkgc3RhY2sgdHJhY2UuICovXG5leHBvcnQgaW50ZXJmYWNlIFF1YWxpdHlGcmFtZSB7XG4gIHJ1bnRpbWVTdGFnZUlkOiBzdHJpbmc7XG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuICBzY29yZTogbnVtYmVyO1xuICBmYWN0b3JzOiBzdHJpbmdbXTtcbiAgbGlua2VkQnk6IHN0cmluZztcbiAgZGVwdGg6IG51bWJlcjtcbn1cblxuLyoqIFRoZSBmdWxsIHF1YWxpdHkgc3RhY2sgdHJhY2UuICovXG5leHBvcnQgaW50ZXJmYWNlIFF1YWxpdHlTdGFja1RyYWNlIHtcbiAgc3RhcnRJZDogc3RyaW5nO1xuICBzdGFydFNjb3JlOiBudW1iZXI7XG4gIGZyYW1lczogUXVhbGl0eUZyYW1lW107XG4gIHJvb3RDYXVzZT86IHtcbiAgICBmcmFtZTogUXVhbGl0eUZyYW1lO1xuICAgIHByZXZpb3VzRnJhbWU6IFF1YWxpdHlGcmFtZTtcbiAgICBkcm9wOiBudW1iZXI7XG4gIH07XG59XG5cbi8qKlxuICogQnVpbGQgYSBxdWFsaXR5IHN0YWNrIHRyYWNlIGJ5IGRlY29yYXRpbmcgYSBjYXVzYWwgY2hhaW4gd2l0aCBzY29yZXMuXG4gKlxuICogQHBhcmFtIGNvbW1pdExvZyAgICAgICAgRnJvbSBleGVjdXRvci5nZXRTbmFwc2hvdCgpLmNvbW1pdExvZ1xuICogQHBhcmFtIHF1YWxpdHlSZWNvcmRlciAgUXVhbGl0eVJlY29yZGVyIGF0dGFjaGVkIGR1cmluZyBleGVjdXRpb25cbiAqIEBwYXJhbSBzdGFydElkICAgICAgICAgIHJ1bnRpbWVTdGFnZUlkIHRvIHN0YXJ0IGZyb21cbiAqIEBwYXJhbSBtYXhEZXB0aCAgICAgICAgIE1heGltdW0gYmFja3RyYWNraW5nIGRlcHRoIChkZWZhdWx0OiAyMClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHF1YWxpdHlUcmFjZShcbiAgY29tbWl0TG9nOiBDb21taXRCdW5kbGVbXSxcbiAgcXVhbGl0eVJlY29yZGVyOiBRdWFsaXR5TG9va3VwLFxuICBzdGFydElkOiBzdHJpbmcsXG4gIG1heERlcHRoID0gMjAsXG4pOiBRdWFsaXR5U3RhY2tUcmFjZSB7XG4gIGNvbnN0IHN0YXJ0RW50cnkgPSBxdWFsaXR5UmVjb3JkZXIuZ2V0QnlLZXkoc3RhcnRJZCk7XG4gIGlmICghc3RhcnRFbnRyeSkge1xuICAgIHJldHVybiB7IHN0YXJ0SWQsIHN0YXJ0U2NvcmU6IC0xLCBmcmFtZXM6IFtdIH07XG4gIH1cblxuICAvLyBVc2UgY2F1c2FsQ2hhaW4gdG8gYnVpbGQgdGhlIERBRywgcHJvdmlkaW5nIGtleXNSZWFkIGZyb20gdGhlIFF1YWxpdHlSZWNvcmRlclxuICBjb25zdCByb290ID0gY2F1c2FsQ2hhaW4oY29tbWl0TG9nLCBzdGFydElkLCAoaWQpID0+IHF1YWxpdHlSZWNvcmRlci5nZXRCeUtleShpZCk/LmtleXNSZWFkID8/IFtdLCB7IG1heERlcHRoIH0pO1xuXG4gIGlmICghcm9vdCkge1xuICAgIHJldHVybiB7IHN0YXJ0SWQsIHN0YXJ0U2NvcmU6IHN0YXJ0RW50cnkuc2NvcmUsIGZyYW1lczogW10gfTtcbiAgfVxuXG4gIC8vIEZsYXR0ZW4gREFHIHRvIEJGUy1vcmRlcmVkIGZyYW1lcywgZGVjb3JhdGUgd2l0aCBxdWFsaXR5IHNjb3Jlc1xuICBjb25zdCBub2RlcyA9IGZsYXR0ZW5DYXVzYWxEQUcocm9vdCk7XG4gIGNvbnN0IGZyYW1lczogUXVhbGl0eUZyYW1lW10gPSBub2Rlcy5tYXAoKG5vZGUpID0+IHtcbiAgICBjb25zdCBlbnRyeSA9IHF1YWxpdHlSZWNvcmRlci5nZXRCeUtleShub2RlLnJ1bnRpbWVTdGFnZUlkKTtcbiAgICByZXR1cm4ge1xuICAgICAgcnVudGltZVN0YWdlSWQ6IG5vZGUucnVudGltZVN0YWdlSWQsXG4gICAgICBzdGFnZU5hbWU6IG5vZGUuc3RhZ2VOYW1lLFxuICAgICAgc2NvcmU6IGVudHJ5Py5zY29yZSA/PyAtMSxcbiAgICAgIGZhY3RvcnM6IGVudHJ5Py5mYWN0b3JzID8/IFtdLFxuICAgICAgbGlua2VkQnk6IG5vZGUubGlua2VkQnksXG4gICAgICBkZXB0aDogbm9kZS5kZXB0aCxcbiAgICB9O1xuICB9KTtcblxuICAvLyBGaW5kIHJvb3QgY2F1c2U6IGJpZ2dlc3QgcXVhbGl0eSBkcm9wIGJldHdlZW4gYWRqYWNlbnQgZnJhbWVzIChCRlMgb3JkZXIpXG4gIGxldCByb290Q2F1c2U6IFF1YWxpdHlTdGFja1RyYWNlWydyb290Q2F1c2UnXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBmcmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBmcmFtZSA9IGZyYW1lc1tpXTtcbiAgICAvLyBMb29rIGF0IGVhY2ggcGFyZW50IChmcmFtZXMgYXQgZGVwdGggKyAxKVxuICAgIGZvciAoY29uc3QgcGFyZW50RnJhbWUgb2YgZnJhbWVzLmZpbHRlcigoZikgPT4gZi5kZXB0aCA9PT0gZnJhbWUuZGVwdGggKyAxKSkge1xuICAgICAgaWYgKHBhcmVudEZyYW1lLnNjb3JlIDwgMCkgY29udGludWU7XG4gICAgICBjb25zdCBkcm9wID0gcGFyZW50RnJhbWUuc2NvcmUgLSBmcmFtZS5zY29yZTtcbiAgICAgIGlmIChkcm9wID4gMCAmJiAoIXJvb3RDYXVzZSB8fCBkcm9wID4gcm9vdENhdXNlLmRyb3ApKSB7XG4gICAgICAgIHJvb3RDYXVzZSA9IHsgZnJhbWUsIHByZXZpb3VzRnJhbWU6IHBhcmVudEZyYW1lLCBkcm9wIH07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzdGFydElkLFxuICAgIHN0YXJ0U2NvcmU6IHN0YXJ0RW50cnkuc2NvcmUsXG4gICAgZnJhbWVzLFxuICAgIHJvb3RDYXVzZSxcbiAgfTtcbn1cblxuLyoqXG4gKiBGb3JtYXQgYSBRdWFsaXR5U3RhY2tUcmFjZSBhcyBodW1hbi1yZWFkYWJsZSB0ZXh0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0UXVhbGl0eVRyYWNlKHRyYWNlOiBRdWFsaXR5U3RhY2tUcmFjZSk6IHN0cmluZyB7XG4gIGlmICh0cmFjZS5mcmFtZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGBRdWFsaXR5IFRyYWNlOiBubyBkYXRhIGZvciAke3RyYWNlLnN0YXJ0SWR9YDtcbiAgfVxuXG4gIGNvbnN0IGxpbmVzOiBzdHJpbmdbXSA9IFtgUXVhbGl0eSBUcmFjZSAoc2NvcmU6ICR7dHJhY2Uuc3RhcnRTY29yZS50b0ZpeGVkKDIpfSBhdCAke3RyYWNlLnN0YXJ0SWR9KTpgXTtcblxuICBmb3IgKGNvbnN0IGZyYW1lIG9mIHRyYWNlLmZyYW1lcykge1xuICAgIGNvbnN0IHNjb3JlU3RyID0gZnJhbWUuc2NvcmUgPj0gMCA/IGZyYW1lLnNjb3JlLnRvRml4ZWQoMikgOiAnPyc7XG4gICAgY29uc3QgbGluayA9IGZyYW1lLmxpbmtlZEJ5ID8gYCAodmlhICR7ZnJhbWUubGlua2VkQnl9KWAgOiAnJztcbiAgICBjb25zdCBmYWN0b3JzID0gZnJhbWUuZmFjdG9ycy5sZW5ndGggPiAwID8gYCDigJQgJHtmcmFtZS5mYWN0b3JzLmpvaW4oJywgJyl9YCA6ICcnO1xuICAgIGxpbmVzLnB1c2goYCAgYXQgJHtmcmFtZS5ydW50aW1lU3RhZ2VJZC5wYWRFbmQoMzApfSBzY29yZT0ke3Njb3JlU3RyfSR7bGlua30ke2ZhY3RvcnN9YCk7XG4gIH1cblxuICBpZiAodHJhY2Uucm9vdENhdXNlKSB7XG4gICAgbGluZXMucHVzaCgnJyk7XG4gICAgbGluZXMucHVzaChcbiAgICAgIGBSb290IGNhdXNlOiBxdWFsaXR5IGRyb3BwZWQgYXQgJHt0cmFjZS5yb290Q2F1c2UuZnJhbWUucnVudGltZVN0YWdlSWR9IGAgK1xuICAgICAgICBgKCR7dHJhY2Uucm9vdENhdXNlLnByZXZpb3VzRnJhbWUuc2NvcmUudG9GaXhlZCgyKX0g4oaSICR7dHJhY2Uucm9vdENhdXNlLmZyYW1lLnNjb3JlLnRvRml4ZWQoMil9LCBgICtcbiAgICAgICAgYM6UJHt0cmFjZS5yb290Q2F1c2UuZHJvcC50b0ZpeGVkKDIpfSlgLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gbGluZXMuam9pbignXFxuJyk7XG59XG4iXX0=
@@ -102,4 +102,4 @@ class ExecutionRuntime {
102
102
  }
103
103
  }
104
104
  exports.ExecutionRuntime = ExecutionRuntime;
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXhlY3V0aW9uUnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvcnVubmVyL0V4ZWN1dGlvblJ1bnRpbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7O0dBVUc7OztBQUVILHVEQUFpRDtBQUNqRCwrREFBeUQ7QUFDekQsK0RBQXlEO0FBd0J6RCxNQUFhLGdCQUFnQjtJQUNwQixXQUFXLENBQWU7SUFDakM7Ozs7Ozs7O09BUUc7SUFDSSxhQUFhLENBQWdCO0lBQzdCLGdCQUFnQixDQUFlO0lBQy9CLGdCQUFnQixDQUFXO0lBQ2xDLG9GQUFvRjtJQUM1RSxhQUFhLENBQWdCO0lBQzdCLGFBQWEsQ0FBVTtJQUN2QixjQUFjLENBQVU7SUFFaEMsWUFBWSxRQUFnQixFQUFFLE1BQWMsRUFBRSxhQUF1QixFQUFFLFlBQXNCO1FBQzNGLElBQUksQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxjQUFjLEdBQUcsYUFBYSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLHNCQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLDhCQUFZLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLDhCQUFZLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDOUcsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSCxvQkFBb0I7UUFDbEIsSUFBSSxJQUFJLENBQUMsYUFBYTtZQUFFLE9BQU8sQ0FBQyxhQUFhO1FBQzdDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSw4QkFBWSxDQUNuQyxJQUFJLENBQUMsY0FBYztRQUNuQixrRUFBa0U7UUFDbEUsb0VBQW9FO1FBQ3BFLCtCQUErQjtRQUMvQixJQUFJLENBQUMsYUFBYSxDQUNuQixDQUFDO1FBQ0YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQseUZBQXlGO0lBQ3pGLG9CQUFvQjtRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQzdDLENBQUM7SUFDSCxDQUFDO0lBRUQsWUFBWTtRQUNWLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUMsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFvQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN4RixDQUFDO0lBRUQsYUFBYSxDQUFDLElBQWMsRUFBRSxHQUFXLEVBQUUsS0FBYztRQUN2RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7O09BZ0JHO0lBQ0gsV0FBVyxDQUFDLE9BQThCO1FBQ3hDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQ2pFLE1BQU0sV0FBVyxHQUFHLE9BQU8sRUFBRSxNQUFNLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssU0FBUyxDQUFDO1FBQ2pGLE9BQU87WUFDTCxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRTtZQUN2RixhQUFhLEVBQUUsWUFBWSxDQUFDLFdBQVcsRUFBRTtZQUN6QyxTQUFTLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRTtTQUN4QyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBNUZELDRDQTRGQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRXhlY3V0aW9uUnVudGltZSDigJQgVGhlIHJ1bnRpbWUgZW52aXJvbm1lbnQgZm9yIG9uZSBmbG93Y2hhcnQgZXhlY3V0aW9uLlxuICpcbiAqIFdpcmVzIHVwIHRoZSB0aHJlZSBtZW1vcnkgcHJpbWl0aXZlcyBpbnRvIGEgc2luZ2xlIGNvbnRhaW5lcjpcbiAqICAgLSBTaGFyZWRNZW1vcnkgKHRoZSBoZWFwIOKAlCBzaGFyZWQgc3RhdGUgYWNyb3NzIGFsbCBzdGFnZXMpXG4gKiAgIC0gU3RhZ2VDb250ZXh0ICAodGhlIGNhbGwgc3RhY2sg4oCUIHBlci1zdGFnZSBleGVjdXRpb24gdHJlZSlcbiAqICAgLSBFdmVudExvZyAgICAgICh0aGUgdHJhbnNhY3Rpb24gbG9nIOKAlCBjb21taXQgaGlzdG9yeSBmb3IgcmVwbGF5KVxuICpcbiAqIFRoZSBlbmdpbmUgKEZsb3djaGFydFRyYXZlcnNlcikgcmVjZWl2ZXMgdGhpcyBhcyBpdHMgcnVudGltZSBwYXJhbWV0ZXIuXG4gKiBBZnRlciBleGVjdXRpb24sIGNvbnN1bWVycyBxdWVyeSBpdCBmb3IgdGhlIGZ1bGwgZXhlY3V0aW9uIHN0YXRlLlxuICovXG5cbmltcG9ydCB7IEV2ZW50TG9nIH0gZnJvbSAnLi4vbWVtb3J5L0V2ZW50TG9nLmpzJztcbmltcG9ydCB7IFNoYXJlZE1lbW9yeSB9IGZyb20gJy4uL21lbW9yeS9TaGFyZWRNZW1vcnkuanMnO1xuaW1wb3J0IHsgU3RhZ2VDb250ZXh0IH0gZnJvbSAnLi4vbWVtb3J5L1N0YWdlQ29udGV4dC5qcyc7XG5pbXBvcnQgdHlwZSB7IENvbW1pdEJ1bmRsZSwgU3RhZ2VTbmFwc2hvdCB9IGZyb20gJy4uL21lbW9yeS90eXBlcy5qcyc7XG5cbi8qKiBTbmFwc2hvdCBvZiBhIHNpbmdsZSByZWNvcmRlcidzIGNvbGxlY3RlZCBkYXRhLiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWNvcmRlclNuYXBzaG90IHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICAvKiogU2NvcGVSZWNvcmRlciB0eXBlIGFuZCBwYXR0ZXJuIGRlc2NyaXB0aW9uIChlLmcuLCBcIlRyYW5zbGF0b3IgKEtleWVkUmVjb3JkZXIpIOKAlCBwZXItc3RlcCB0b2tlbiB1c2FnZVwiKS4gKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIC8qKiBQcmVmZXJyZWQgcmVhZC10aW1lIG9wZXJhdGlvbiDigJQgaGludHMgdGhlIFVJIGFib3V0IHdoaWNoIHZpZXcgdG8gc2hvdyBwcm9taW5lbnRseS4gKi9cbiAgcHJlZmVycmVkT3BlcmF0aW9uPzogJ3RyYW5zbGF0ZScgfCAnYWNjdW11bGF0ZScgfCAnYWdncmVnYXRlJztcbiAgZGF0YTogdW5rbm93bjtcbn1cblxuZXhwb3J0IHR5cGUgUnVudGltZVNuYXBzaG90ID0ge1xuICBzaGFyZWRTdGF0ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGV4ZWN1dGlvblRyZWU6IFN0YWdlU25hcHNob3Q7XG4gIGNvbW1pdExvZzogQ29tbWl0QnVuZGxlW107XG4gIC8qKiBQZXItc3ViZmxvdyBleGVjdXRpb24gcmVzdWx0cyAoa2V5ZWQgYnkgc3ViZmxvd0lkKS4gKi9cbiAgc3ViZmxvd1Jlc3VsdHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgLyoqIFNuYXBzaG90IGRhdGEgZnJvbSByZWNvcmRlcnMgdGhhdCBpbXBsZW1lbnQgdG9TbmFwc2hvdCgpLiAqL1xuICByZWNvcmRlcnM/OiBSZWNvcmRlclNuYXBzaG90W107XG59O1xuXG5leHBvcnQgY2xhc3MgRXhlY3V0aW9uUnVudGltZSB7XG4gIHB1YmxpYyBnbG9iYWxTdG9yZTogU2hhcmVkTWVtb3J5O1xuICAvKipcbiAgICogUGFyYWxsZWwgcmVkYWN0ZWQgbWlycm9yIG9mIGBnbG9iYWxTdG9yZWAuIFBvcHVsYXRlZCBkdXJpbmcgdHJhdmVyc2FsIHZpYVxuICAgKiBgU3RhZ2VDb250ZXh0LmNvbW1pdCgpYCB1c2luZyB0aGUgYWxyZWFkeS1jb21wdXRlZCByZWRhY3RlZCBwYXRjaGVzLlxuICAgKiBPbmx5IGV4aXN0cyB3aGVuIGBlbmFibGVSZWRhY3RlZE1pcnJvcigpYCBoYXMgYmVlbiBjYWxsZWQg4oCUIHR5cGljYWxseSBieVxuICAgKiBgRmxvd0NoYXJ0RXhlY3V0b3JgIHdoZW4gYSBgUmVkYWN0aW9uUG9saWN5YCBpcyBjb25maWd1cmVkLiBPdGhlcndpc2VcbiAgICogdW5kZWZpbmVkIGFuZCB6ZXJvIGNvc3QuXG4gICAqXG4gICAqIFJlYWQgdmlhIGBnZXRTbmFwc2hvdCh7IHJlZGFjdDogdHJ1ZSB9KWAuXG4gICAqL1xuICBwdWJsaWMgcmVkYWN0ZWRTdG9yZT86IFNoYXJlZE1lbW9yeTtcbiAgcHVibGljIHJvb3RTdGFnZUNvbnRleHQ6IFN0YWdlQ29udGV4dDtcbiAgcHVibGljIGV4ZWN1dGlvbkhpc3Rvcnk6IEV2ZW50TG9nO1xuICAvKiogT3JpZ2luYWwgcm9vdCBmb3IgZ2V0U25hcHNob3QoKSDigJQgc2V0IGJlZm9yZSByZXN1bWUgY2hhbmdlcyByb290U3RhZ2VDb250ZXh0LiAqL1xuICBwcml2YXRlIF9zbmFwc2hvdFJvb3Q/OiBTdGFnZUNvbnRleHQ7XG4gIHByaXZhdGUgX2luaXRpYWxTdGF0ZTogdW5rbm93bjtcbiAgcHJpdmF0ZSBfZGVmYXVsdFZhbHVlczogdW5rbm93bjtcblxuICBjb25zdHJ1Y3Rvcihyb290TmFtZTogc3RyaW5nLCByb290SWQ6IHN0cmluZywgZGVmYXVsdFZhbHVlcz86IHVua25vd24sIGluaXRpYWxTdGF0ZT86IHVua25vd24pIHtcbiAgICB0aGlzLl9pbml0aWFsU3RhdGUgPSBpbml0aWFsU3RhdGU7XG4gICAgdGhpcy5fZGVmYXVsdFZhbHVlcyA9IGRlZmF1bHRWYWx1ZXM7XG4gICAgdGhpcy5leGVjdXRpb25IaXN0b3J5ID0gbmV3IEV2ZW50TG9nKGluaXRpYWxTdGF0ZSk7XG4gICAgdGhpcy5nbG9iYWxTdG9yZSA9IG5ldyBTaGFyZWRNZW1vcnkoZGVmYXVsdFZhbHVlcywgaW5pdGlhbFN0YXRlKTtcbiAgICB0aGlzLnJvb3RTdGFnZUNvbnRleHQgPSBuZXcgU3RhZ2VDb250ZXh0KCcnLCByb290TmFtZSwgcm9vdElkLCB0aGlzLmdsb2JhbFN0b3JlLCAnJywgdGhpcy5leGVjdXRpb25IaXN0b3J5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcHQgaW4gdG8gbWFpbnRhaW5pbmcgYSBwYXJhbGxlbCByZWRhY3RlZCBtaXJyb3Igb2YgYGdsb2JhbFN0b3JlYC4gQWZ0ZXJcbiAgICogdGhpcyBjYWxsLCBldmVyeSBgU3RhZ2VDb250ZXh0LmNvbW1pdCgpYCBpbiB0aGUgcnVuIHdyaXRlcyB0aGUgcmVkYWN0ZWRcbiAgICogcGF0Y2hlcyAodGhlIHNhbWUgb25lcyBmZWQgdG8gdGhlIGV2ZW50IGxvZykgaW50byBgcmVkYWN0ZWRTdG9yZWAgaW5cbiAgICogYWRkaXRpb24gdG8gdGhlIHJhdyBvbmVzIHdyaXR0ZW4gdG8gYGdsb2JhbFN0b3JlYC5cbiAgICpcbiAgICogVGhlIG1pcnJvciBpcyBjcmVhdGVkIGxhemlseSBhbmQgcHJvcGFnYXRlZCBpbnRvIGFsbCBjaGlsZCAvIG5leHRcbiAgICogY29udGV4dHMsIHNvIGl0IGNvcnJlY3RseSByZWZsZWN0cyBzdWJmbG93LXNjb3BlIHdyaXRlcy4gV2hlbiBub1xuICAgKiBgUmVkYWN0aW9uUG9saWN5YCBpcyBjb25maWd1cmVkLCBjYWxsZXJzIHNob3VsZCBza2lwIHRoaXMg4oCUIHVudXNlZFxuICAgKiBhbGxvY2F0aW9uLCBubyBmdW5jdGlvbmFsIGRpZmZlcmVuY2UgaW4gdGhlIHNuYXBzaG90LlxuICAgKi9cbiAgZW5hYmxlUmVkYWN0ZWRNaXJyb3IoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVkYWN0ZWRTdG9yZSkgcmV0dXJuOyAvLyBpZGVtcG90ZW50XG4gICAgdGhpcy5yZWRhY3RlZFN0b3JlID0gbmV3IFNoYXJlZE1lbW9yeShcbiAgICAgIHRoaXMuX2RlZmF1bHRWYWx1ZXMsXG4gICAgICAvLyBTZWVkIHdpdGggdGhlIHNhbWUgaW5pdGlhbCBzdGF0ZSBhcyB0aGUgcmF3IHN0b3JlIHNvIHRoZSBtaXJyb3JcbiAgICAgIC8vIHN0YXJ0cyBmcm9tIGEgc2NydWJiZWQtbm90aGluZyBiYXNlbGluZTsgc3Vic2VxdWVudCBjb21taXRzIGFwcGx5XG4gICAgICAvLyB0aGUgcmVkYWN0ZWQgcGF0Y2hlcyBvbiB0b3AuXG4gICAgICB0aGlzLl9pbml0aWFsU3RhdGUsXG4gICAgKTtcbiAgICB0aGlzLnJvb3RTdGFnZUNvbnRleHQudXNlUmVkYWN0ZWRNaXJyb3IodGhpcy5yZWRhY3RlZFN0b3JlKTtcbiAgfVxuXG4gIC8qKiBQcmVzZXJ2ZSB0aGUgY3VycmVudCByb290U3RhZ2VDb250ZXh0IGZvciBzbmFwc2hvdHMgYmVmb3JlIGNoYW5naW5nIGl0IGZvciByZXN1bWUuICovXG4gIHByZXNlcnZlU25hcHNob3RSb290KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fc25hcHNob3RSb290KSB7XG4gICAgICB0aGlzLl9zbmFwc2hvdFJvb3QgPSB0aGlzLnJvb3RTdGFnZUNvbnRleHQ7XG4gICAgfVxuICB9XG5cbiAgZ2V0UGlwZWxpbmVzKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuZ2xvYmFsU3RvcmUuZ2V0U3RhdGUoKTtcbiAgICByZXR1cm4gc3RhdGUucGlwZWxpbmVzID8gT2JqZWN0LmtleXMoc3RhdGUucGlwZWxpbmVzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA6IFtdO1xuICB9XG5cbiAgc2V0Um9vdE9iamVjdChwYXRoOiBzdHJpbmdbXSwga2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKSB7XG4gICAgdGhpcy5yb290U3RhZ2VDb250ZXh0LnNldE9iamVjdChwYXRoLCBrZXksIHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIHJ1bnRpbWUgc25hcHNob3QuXG4gICAqXG4gICAqIEBwYXJhbSBvcHRpb25zLnJlZGFjdCAgV2hlbiBgdHJ1ZWAsIHJldHVybnMgYHNoYXJlZFN0YXRlYCBmcm9tIHRoZVxuICAgKiAgIHBhcmFsbGVsIHJlZGFjdGVkIG1pcnJvciAoaWYgb25lIHdhcyBlbmFibGVkKS4gVGhpcyBpcyB0aGUgc2FmZSB2aWV3XG4gICAqICAgZm9yIHNoYXJpbmcgdHJhY2VzIGV4dGVybmFsbHkg4oCUIHBhc3RlIGludG8gYSB2aWV3ZXIsIHNoaXAgdG8gc3VwcG9ydCxcbiAgICogICBldGMuIFdoZW4gdGhlIG1pcnJvciB3YXMgbmV2ZXIgZW5hYmxlZCwgZmFsbHMgYmFjayB0byByYXcgYGdsb2JhbFN0b3JlYFxuICAgKiAgIGFuZCBhIGRldi1tb2RlIHdhcm5pbmcgaXMgZW1pdHRlZCAoc2lsZW50IGluIHByb2R1Y3Rpb24pLlxuICAgKlxuICAgKiAgIERlZmF1bHQgYGZhbHNlYCBwcmVzZXJ2ZXMgdGhlIHJ1bnRpbWUgdmlldyDigJQgbmVjZXNzYXJ5IGZvciBwYXVzZSAvXG4gICAqICAgcmVzdW1lIChyZXN1bXB0aW9uIG11c3QgcmVwbGF5IGFnYWluc3QgdGhlIHJlYWwgdmFsdWVzLCBub3RcbiAgICogICAnW1JFREFDVEVEXScpLlxuICAgKlxuICAgKiBPdGhlciBmaWVsZHMgKGBleGVjdXRpb25UcmVlYCwgYGNvbW1pdExvZ2ApIGFyZSB0aGUgc2FtZSBlaXRoZXIgd2F5IOKAlFxuICAgKiB0aGUgY29tbWl0IGxvZyBpcyBhbHJlYWR5IHJlZGFjdGVkIGF0IHdyaXRlLXRpbWUsIGFuZCB0aGUgZXhlY3V0aW9uXG4gICAqIHRyZWUgb25seSBjYXJyaWVzIHN0cnVjdHVyYWwgbWV0YWRhdGEuXG4gICAqL1xuICBnZXRTbmFwc2hvdChvcHRpb25zPzogeyByZWRhY3Q/OiBib29sZWFuIH0pOiBSdW50aW1lU25hcHNob3Qge1xuICAgIGNvbnN0IHNuYXBzaG90Um9vdCA9IHRoaXMuX3NuYXBzaG90Um9vdCA/PyB0aGlzLnJvb3RTdGFnZUNvbnRleHQ7XG4gICAgY29uc3QgdXNlUmVkYWN0ZWQgPSBvcHRpb25zPy5yZWRhY3QgPT09IHRydWUgJiYgdGhpcy5yZWRhY3RlZFN0b3JlICE9PSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNoYXJlZFN0YXRlOiB1c2VSZWRhY3RlZCA/IHRoaXMucmVkYWN0ZWRTdG9yZSEuZ2V0U3RhdGUoKSA6IHRoaXMuZ2xvYmFsU3RvcmUuZ2V0U3RhdGUoKSxcbiAgICAgIGV4ZWN1dGlvblRyZWU6IHNuYXBzaG90Um9vdC5nZXRTbmFwc2hvdCgpLFxuICAgICAgY29tbWl0TG9nOiB0aGlzLmV4ZWN1dGlvbkhpc3RvcnkubGlzdCgpLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXhlY3V0aW9uUnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvcnVubmVyL0V4ZWN1dGlvblJ1bnRpbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7O0dBVUc7OztBQUVILHVEQUFpRDtBQUNqRCwrREFBeUQ7QUFDekQsK0RBQXlEO0FBd0J6RCxNQUFhLGdCQUFnQjtJQUNwQixXQUFXLENBQWU7SUFDakM7Ozs7Ozs7O09BUUc7SUFDSSxhQUFhLENBQWdCO0lBQzdCLGdCQUFnQixDQUFlO0lBQy9CLGdCQUFnQixDQUFXO0lBQ2xDLG9GQUFvRjtJQUM1RSxhQUFhLENBQWdCO0lBQzdCLGFBQWEsQ0FBVTtJQUN2QixjQUFjLENBQVU7SUFFaEMsWUFBWSxRQUFnQixFQUFFLE1BQWMsRUFBRSxhQUF1QixFQUFFLFlBQXNCO1FBQzNGLElBQUksQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxjQUFjLEdBQUcsYUFBYSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLHNCQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLDhCQUFZLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLDhCQUFZLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDOUcsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSCxvQkFBb0I7UUFDbEIsSUFBSSxJQUFJLENBQUMsYUFBYTtZQUFFLE9BQU8sQ0FBQyxhQUFhO1FBQzdDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSw4QkFBWSxDQUNuQyxJQUFJLENBQUMsY0FBYztRQUNuQixrRUFBa0U7UUFDbEUsb0VBQW9FO1FBQ3BFLCtCQUErQjtRQUMvQixJQUFJLENBQUMsYUFBYSxDQUNuQixDQUFDO1FBQ0YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQseUZBQXlGO0lBQ3pGLG9CQUFvQjtRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQzdDLENBQUM7SUFDSCxDQUFDO0lBRUQsWUFBWTtRQUNWLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUMsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFvQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN4RixDQUFDO0lBRUQsYUFBYSxDQUFDLElBQWMsRUFBRSxHQUFXLEVBQUUsS0FBYztRQUN2RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7O09BZ0JHO0lBQ0gsV0FBVyxDQUFDLE9BQThCO1FBQ3hDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQ2pFLE1BQU0sV0FBVyxHQUFHLE9BQU8sRUFBRSxNQUFNLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssU0FBUyxDQUFDO1FBQ2pGLE9BQU87WUFDTCxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRTtZQUN2RixhQUFhLEVBQUUsWUFBWSxDQUFDLFdBQVcsRUFBRTtZQUN6QyxTQUFTLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRTtTQUN4QyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBNUZELDRDQTRGQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRXhlY3V0aW9uUnVudGltZSDigJQgVGhlIHJ1bnRpbWUgZW52aXJvbm1lbnQgZm9yIG9uZSBmbG93Y2hhcnQgZXhlY3V0aW9uLlxuICpcbiAqIFdpcmVzIHVwIHRoZSB0aHJlZSBtZW1vcnkgcHJpbWl0aXZlcyBpbnRvIGEgc2luZ2xlIGNvbnRhaW5lcjpcbiAqICAgLSBTaGFyZWRNZW1vcnkgKHRoZSBoZWFwIOKAlCBzaGFyZWQgc3RhdGUgYWNyb3NzIGFsbCBzdGFnZXMpXG4gKiAgIC0gU3RhZ2VDb250ZXh0ICAodGhlIGNhbGwgc3RhY2sg4oCUIHBlci1zdGFnZSBleGVjdXRpb24gdHJlZSlcbiAqICAgLSBFdmVudExvZyAgICAgICh0aGUgdHJhbnNhY3Rpb24gbG9nIOKAlCBjb21taXQgaGlzdG9yeSBmb3IgcmVwbGF5KVxuICpcbiAqIFRoZSBlbmdpbmUgKEZsb3djaGFydFRyYXZlcnNlcikgcmVjZWl2ZXMgdGhpcyBhcyBpdHMgcnVudGltZSBwYXJhbWV0ZXIuXG4gKiBBZnRlciBleGVjdXRpb24sIGNvbnN1bWVycyBxdWVyeSBpdCBmb3IgdGhlIGZ1bGwgZXhlY3V0aW9uIHN0YXRlLlxuICovXG5cbmltcG9ydCB7IEV2ZW50TG9nIH0gZnJvbSAnLi4vbWVtb3J5L0V2ZW50TG9nLmpzJztcbmltcG9ydCB7IFNoYXJlZE1lbW9yeSB9IGZyb20gJy4uL21lbW9yeS9TaGFyZWRNZW1vcnkuanMnO1xuaW1wb3J0IHsgU3RhZ2VDb250ZXh0IH0gZnJvbSAnLi4vbWVtb3J5L1N0YWdlQ29udGV4dC5qcyc7XG5pbXBvcnQgdHlwZSB7IENvbW1pdEJ1bmRsZSwgU3RhZ2VTbmFwc2hvdCB9IGZyb20gJy4uL21lbW9yeS90eXBlcy5qcyc7XG5cbi8qKiBTbmFwc2hvdCBvZiBhIHNpbmdsZSByZWNvcmRlcidzIGNvbGxlY3RlZCBkYXRhLiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWNvcmRlclNuYXBzaG90IHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICAvKiogU2NvcGVSZWNvcmRlciB0eXBlIGFuZCBwYXR0ZXJuIGRlc2NyaXB0aW9uIChlLmcuLCBcIlRyYW5zbGF0b3IgKEtleWVkU3RvcmUpIOKAlCBwZXItc3RlcCB0b2tlbiB1c2FnZVwiKS4gKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIC8qKiBQcmVmZXJyZWQgcmVhZC10aW1lIG9wZXJhdGlvbiDigJQgaGludHMgdGhlIFVJIGFib3V0IHdoaWNoIHZpZXcgdG8gc2hvdyBwcm9taW5lbnRseS4gKi9cbiAgcHJlZmVycmVkT3BlcmF0aW9uPzogJ3RyYW5zbGF0ZScgfCAnYWNjdW11bGF0ZScgfCAnYWdncmVnYXRlJztcbiAgZGF0YTogdW5rbm93bjtcbn1cblxuZXhwb3J0IHR5cGUgUnVudGltZVNuYXBzaG90ID0ge1xuICBzaGFyZWRTdGF0ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGV4ZWN1dGlvblRyZWU6IFN0YWdlU25hcHNob3Q7XG4gIGNvbW1pdExvZzogQ29tbWl0QnVuZGxlW107XG4gIC8qKiBQZXItc3ViZmxvdyBleGVjdXRpb24gcmVzdWx0cyAoa2V5ZWQgYnkgc3ViZmxvd0lkKS4gKi9cbiAgc3ViZmxvd1Jlc3VsdHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgLyoqIFNuYXBzaG90IGRhdGEgZnJvbSByZWNvcmRlcnMgdGhhdCBpbXBsZW1lbnQgdG9TbmFwc2hvdCgpLiAqL1xuICByZWNvcmRlcnM/OiBSZWNvcmRlclNuYXBzaG90W107XG59O1xuXG5leHBvcnQgY2xhc3MgRXhlY3V0aW9uUnVudGltZSB7XG4gIHB1YmxpYyBnbG9iYWxTdG9yZTogU2hhcmVkTWVtb3J5O1xuICAvKipcbiAgICogUGFyYWxsZWwgcmVkYWN0ZWQgbWlycm9yIG9mIGBnbG9iYWxTdG9yZWAuIFBvcHVsYXRlZCBkdXJpbmcgdHJhdmVyc2FsIHZpYVxuICAgKiBgU3RhZ2VDb250ZXh0LmNvbW1pdCgpYCB1c2luZyB0aGUgYWxyZWFkeS1jb21wdXRlZCByZWRhY3RlZCBwYXRjaGVzLlxuICAgKiBPbmx5IGV4aXN0cyB3aGVuIGBlbmFibGVSZWRhY3RlZE1pcnJvcigpYCBoYXMgYmVlbiBjYWxsZWQg4oCUIHR5cGljYWxseSBieVxuICAgKiBgRmxvd0NoYXJ0RXhlY3V0b3JgIHdoZW4gYSBgUmVkYWN0aW9uUG9saWN5YCBpcyBjb25maWd1cmVkLiBPdGhlcndpc2VcbiAgICogdW5kZWZpbmVkIGFuZCB6ZXJvIGNvc3QuXG4gICAqXG4gICAqIFJlYWQgdmlhIGBnZXRTbmFwc2hvdCh7IHJlZGFjdDogdHJ1ZSB9KWAuXG4gICAqL1xuICBwdWJsaWMgcmVkYWN0ZWRTdG9yZT86IFNoYXJlZE1lbW9yeTtcbiAgcHVibGljIHJvb3RTdGFnZUNvbnRleHQ6IFN0YWdlQ29udGV4dDtcbiAgcHVibGljIGV4ZWN1dGlvbkhpc3Rvcnk6IEV2ZW50TG9nO1xuICAvKiogT3JpZ2luYWwgcm9vdCBmb3IgZ2V0U25hcHNob3QoKSDigJQgc2V0IGJlZm9yZSByZXN1bWUgY2hhbmdlcyByb290U3RhZ2VDb250ZXh0LiAqL1xuICBwcml2YXRlIF9zbmFwc2hvdFJvb3Q/OiBTdGFnZUNvbnRleHQ7XG4gIHByaXZhdGUgX2luaXRpYWxTdGF0ZTogdW5rbm93bjtcbiAgcHJpdmF0ZSBfZGVmYXVsdFZhbHVlczogdW5rbm93bjtcblxuICBjb25zdHJ1Y3Rvcihyb290TmFtZTogc3RyaW5nLCByb290SWQ6IHN0cmluZywgZGVmYXVsdFZhbHVlcz86IHVua25vd24sIGluaXRpYWxTdGF0ZT86IHVua25vd24pIHtcbiAgICB0aGlzLl9pbml0aWFsU3RhdGUgPSBpbml0aWFsU3RhdGU7XG4gICAgdGhpcy5fZGVmYXVsdFZhbHVlcyA9IGRlZmF1bHRWYWx1ZXM7XG4gICAgdGhpcy5leGVjdXRpb25IaXN0b3J5ID0gbmV3IEV2ZW50TG9nKGluaXRpYWxTdGF0ZSk7XG4gICAgdGhpcy5nbG9iYWxTdG9yZSA9IG5ldyBTaGFyZWRNZW1vcnkoZGVmYXVsdFZhbHVlcywgaW5pdGlhbFN0YXRlKTtcbiAgICB0aGlzLnJvb3RTdGFnZUNvbnRleHQgPSBuZXcgU3RhZ2VDb250ZXh0KCcnLCByb290TmFtZSwgcm9vdElkLCB0aGlzLmdsb2JhbFN0b3JlLCAnJywgdGhpcy5leGVjdXRpb25IaXN0b3J5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcHQgaW4gdG8gbWFpbnRhaW5pbmcgYSBwYXJhbGxlbCByZWRhY3RlZCBtaXJyb3Igb2YgYGdsb2JhbFN0b3JlYC4gQWZ0ZXJcbiAgICogdGhpcyBjYWxsLCBldmVyeSBgU3RhZ2VDb250ZXh0LmNvbW1pdCgpYCBpbiB0aGUgcnVuIHdyaXRlcyB0aGUgcmVkYWN0ZWRcbiAgICogcGF0Y2hlcyAodGhlIHNhbWUgb25lcyBmZWQgdG8gdGhlIGV2ZW50IGxvZykgaW50byBgcmVkYWN0ZWRTdG9yZWAgaW5cbiAgICogYWRkaXRpb24gdG8gdGhlIHJhdyBvbmVzIHdyaXR0ZW4gdG8gYGdsb2JhbFN0b3JlYC5cbiAgICpcbiAgICogVGhlIG1pcnJvciBpcyBjcmVhdGVkIGxhemlseSBhbmQgcHJvcGFnYXRlZCBpbnRvIGFsbCBjaGlsZCAvIG5leHRcbiAgICogY29udGV4dHMsIHNvIGl0IGNvcnJlY3RseSByZWZsZWN0cyBzdWJmbG93LXNjb3BlIHdyaXRlcy4gV2hlbiBub1xuICAgKiBgUmVkYWN0aW9uUG9saWN5YCBpcyBjb25maWd1cmVkLCBjYWxsZXJzIHNob3VsZCBza2lwIHRoaXMg4oCUIHVudXNlZFxuICAgKiBhbGxvY2F0aW9uLCBubyBmdW5jdGlvbmFsIGRpZmZlcmVuY2UgaW4gdGhlIHNuYXBzaG90LlxuICAgKi9cbiAgZW5hYmxlUmVkYWN0ZWRNaXJyb3IoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVkYWN0ZWRTdG9yZSkgcmV0dXJuOyAvLyBpZGVtcG90ZW50XG4gICAgdGhpcy5yZWRhY3RlZFN0b3JlID0gbmV3IFNoYXJlZE1lbW9yeShcbiAgICAgIHRoaXMuX2RlZmF1bHRWYWx1ZXMsXG4gICAgICAvLyBTZWVkIHdpdGggdGhlIHNhbWUgaW5pdGlhbCBzdGF0ZSBhcyB0aGUgcmF3IHN0b3JlIHNvIHRoZSBtaXJyb3JcbiAgICAgIC8vIHN0YXJ0cyBmcm9tIGEgc2NydWJiZWQtbm90aGluZyBiYXNlbGluZTsgc3Vic2VxdWVudCBjb21taXRzIGFwcGx5XG4gICAgICAvLyB0aGUgcmVkYWN0ZWQgcGF0Y2hlcyBvbiB0b3AuXG4gICAgICB0aGlzLl9pbml0aWFsU3RhdGUsXG4gICAgKTtcbiAgICB0aGlzLnJvb3RTdGFnZUNvbnRleHQudXNlUmVkYWN0ZWRNaXJyb3IodGhpcy5yZWRhY3RlZFN0b3JlKTtcbiAgfVxuXG4gIC8qKiBQcmVzZXJ2ZSB0aGUgY3VycmVudCByb290U3RhZ2VDb250ZXh0IGZvciBzbmFwc2hvdHMgYmVmb3JlIGNoYW5naW5nIGl0IGZvciByZXN1bWUuICovXG4gIHByZXNlcnZlU25hcHNob3RSb290KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fc25hcHNob3RSb290KSB7XG4gICAgICB0aGlzLl9zbmFwc2hvdFJvb3QgPSB0aGlzLnJvb3RTdGFnZUNvbnRleHQ7XG4gICAgfVxuICB9XG5cbiAgZ2V0UGlwZWxpbmVzKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuZ2xvYmFsU3RvcmUuZ2V0U3RhdGUoKTtcbiAgICByZXR1cm4gc3RhdGUucGlwZWxpbmVzID8gT2JqZWN0LmtleXMoc3RhdGUucGlwZWxpbmVzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA6IFtdO1xuICB9XG5cbiAgc2V0Um9vdE9iamVjdChwYXRoOiBzdHJpbmdbXSwga2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKSB7XG4gICAgdGhpcy5yb290U3RhZ2VDb250ZXh0LnNldE9iamVjdChwYXRoLCBrZXksIHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIHJ1bnRpbWUgc25hcHNob3QuXG4gICAqXG4gICAqIEBwYXJhbSBvcHRpb25zLnJlZGFjdCAgV2hlbiBgdHJ1ZWAsIHJldHVybnMgYHNoYXJlZFN0YXRlYCBmcm9tIHRoZVxuICAgKiAgIHBhcmFsbGVsIHJlZGFjdGVkIG1pcnJvciAoaWYgb25lIHdhcyBlbmFibGVkKS4gVGhpcyBpcyB0aGUgc2FmZSB2aWV3XG4gICAqICAgZm9yIHNoYXJpbmcgdHJhY2VzIGV4dGVybmFsbHkg4oCUIHBhc3RlIGludG8gYSB2aWV3ZXIsIHNoaXAgdG8gc3VwcG9ydCxcbiAgICogICBldGMuIFdoZW4gdGhlIG1pcnJvciB3YXMgbmV2ZXIgZW5hYmxlZCwgZmFsbHMgYmFjayB0byByYXcgYGdsb2JhbFN0b3JlYFxuICAgKiAgIGFuZCBhIGRldi1tb2RlIHdhcm5pbmcgaXMgZW1pdHRlZCAoc2lsZW50IGluIHByb2R1Y3Rpb24pLlxuICAgKlxuICAgKiAgIERlZmF1bHQgYGZhbHNlYCBwcmVzZXJ2ZXMgdGhlIHJ1bnRpbWUgdmlldyDigJQgbmVjZXNzYXJ5IGZvciBwYXVzZSAvXG4gICAqICAgcmVzdW1lIChyZXN1bXB0aW9uIG11c3QgcmVwbGF5IGFnYWluc3QgdGhlIHJlYWwgdmFsdWVzLCBub3RcbiAgICogICAnW1JFREFDVEVEXScpLlxuICAgKlxuICAgKiBPdGhlciBmaWVsZHMgKGBleGVjdXRpb25UcmVlYCwgYGNvbW1pdExvZ2ApIGFyZSB0aGUgc2FtZSBlaXRoZXIgd2F5IOKAlFxuICAgKiB0aGUgY29tbWl0IGxvZyBpcyBhbHJlYWR5IHJlZGFjdGVkIGF0IHdyaXRlLXRpbWUsIGFuZCB0aGUgZXhlY3V0aW9uXG4gICAqIHRyZWUgb25seSBjYXJyaWVzIHN0cnVjdHVyYWwgbWV0YWRhdGEuXG4gICAqL1xuICBnZXRTbmFwc2hvdChvcHRpb25zPzogeyByZWRhY3Q/OiBib29sZWFuIH0pOiBSdW50aW1lU25hcHNob3Qge1xuICAgIGNvbnN0IHNuYXBzaG90Um9vdCA9IHRoaXMuX3NuYXBzaG90Um9vdCA/PyB0aGlzLnJvb3RTdGFnZUNvbnRleHQ7XG4gICAgY29uc3QgdXNlUmVkYWN0ZWQgPSBvcHRpb25zPy5yZWRhY3QgPT09IHRydWUgJiYgdGhpcy5yZWRhY3RlZFN0b3JlICE9PSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNoYXJlZFN0YXRlOiB1c2VSZWRhY3RlZCA/IHRoaXMucmVkYWN0ZWRTdG9yZSEuZ2V0U3RhdGUoKSA6IHRoaXMuZ2xvYmFsU3RvcmUuZ2V0U3RhdGUoKSxcbiAgICAgIGV4ZWN1dGlvblRyZWU6IHNuYXBzaG90Um9vdC5nZXRTbmFwc2hvdCgpLFxuICAgICAgY29tbWl0TG9nOiB0aGlzLmV4ZWN1dGlvbkhpc3RvcnkubGlzdCgpLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -3,7 +3,9 @@
3
3
  * MetricRecorder — per-step timing and execution counts, keyed by runtimeStageId.
4
4
  *
5
5
  * Stores per-invocation data during traversal. Aggregated views computed on read.
6
- * Extends KeyedRecorder<StepMetrics> for O(1) lookup and standard operations.
6
+ * Composes a `KeyedStore<StepMetrics>` for O(1) lookup and standard operations
7
+ * (Convention 1 — one purpose per recorder: this is the ScopeRecorder; the store
8
+ * is the storage).
7
9
  *
8
10
  * @example
9
11
  * ```typescript
@@ -23,16 +25,17 @@
23
25
  */
24
26
  Object.defineProperty(exports, "__esModule", { value: true });
25
27
  exports.MetricRecorder = void 0;
26
- const KeyedRecorder_js_1 = require("../../recorder/KeyedRecorder.js");
27
- class MetricRecorder extends KeyedRecorder_js_1.KeyedRecorder {
28
+ const KeyedStore_js_1 = require("../../recorder/KeyedStore.js");
29
+ class MetricRecorder {
28
30
  static _counter = 0;
29
31
  id;
30
32
  preferredOperation;
33
+ /** 1:1 per-step storage (Convention 1 — composed, not inherited). */
34
+ store = new KeyedStore_js_1.KeyedStore();
31
35
  stageStartTimes = new Map();
32
36
  currentRuntimeStageId = '';
33
37
  stageFilter;
34
38
  constructor(idOrOptions) {
35
- super();
36
39
  if (typeof idOrOptions === 'string') {
37
40
  this.id = idOrOptions;
38
41
  this.preferredOperation = 'aggregate';
@@ -49,13 +52,38 @@ class MetricRecorder extends KeyedRecorder_js_1.KeyedRecorder {
49
52
  /** Get or create the StepMetrics for the current stage. */
50
53
  current() {
51
54
  const key = this.currentRuntimeStageId;
52
- let m = this.getByKey(key);
55
+ let m = this.store.get(key);
53
56
  if (!m) {
54
57
  m = { stageName: '', readCount: 0, writeCount: 0, commitCount: 0, pauseCount: 0, duration: 0 };
55
- this.store(key, m);
58
+ this.store.set(key, m);
56
59
  }
57
60
  return m;
58
61
  }
62
+ // ── Per-step query API (delegates to the composed store) ───────────────
63
+ /** Translate: per-step metrics by runtimeStageId. */
64
+ getByKey(runtimeStageId) {
65
+ return this.store.get(runtimeStageId);
66
+ }
67
+ /** All per-step metrics as a read-only Map (insertion-ordered). */
68
+ getMap() {
69
+ return this.store.getMap();
70
+ }
71
+ /** All per-step metrics (insertion-ordered). */
72
+ values() {
73
+ return this.store.values();
74
+ }
75
+ /** Number of recorded steps. */
76
+ get size() {
77
+ return this.store.size;
78
+ }
79
+ /** Aggregate: reduce ALL steps to a single value (dashboards, totals). */
80
+ aggregate(fn, initial) {
81
+ return this.store.aggregate(fn, initial);
82
+ }
83
+ /** Accumulate: reduce steps up to a slider position (progressive view). */
84
+ accumulate(fn, initial, keys) {
85
+ return this.store.accumulate(fn, initial, keys);
86
+ }
59
87
  onStageStart(event) {
60
88
  if (!this.shouldRecord(event.stageName))
61
89
  return;
@@ -145,7 +173,7 @@ class MetricRecorder extends KeyedRecorder_js_1.KeyedRecorder {
145
173
  }
146
174
  return {
147
175
  name: 'Metrics',
148
- description: 'Aggregator (KeyedRecorder) — per-step timing and I/O counts',
176
+ description: 'Aggregator (KeyedStore) — per-step timing and I/O counts',
149
177
  preferredOperation: this.preferredOperation,
150
178
  data: {
151
179
  numericField: 'readCount',
@@ -161,7 +189,7 @@ class MetricRecorder extends KeyedRecorder_js_1.KeyedRecorder {
161
189
  }
162
190
  /** Clear all state — called by executor before each run(). */
163
191
  clear() {
164
- super.clear();
192
+ this.store.clear();
165
193
  this.stageStartTimes.clear();
166
194
  this.currentRuntimeStageId = '';
167
195
  }
@@ -171,4 +199,4 @@ class MetricRecorder extends KeyedRecorder_js_1.KeyedRecorder {
171
199
  }
172
200
  }
173
201
  exports.MetricRecorder = MetricRecorder;
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWV0cmljUmVjb3JkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3Njb3BlL3JlY29yZGVycy9NZXRyaWNSZWNvcmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRzs7O0FBRUgsc0VBQWdFO0FBb0RoRSxNQUFhLGNBQWUsU0FBUSxnQ0FBMEI7SUFDcEQsTUFBTSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFFbkIsRUFBRSxDQUFTO0lBQ1gsa0JBQWtCLENBQW9CO0lBQ3ZDLGVBQWUsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztJQUM1QyxxQkFBcUIsR0FBRyxFQUFFLENBQUM7SUFDM0IsV0FBVyxDQUFrQztJQUVyRCxZQUFZLFdBQTRDO1FBQ3RELEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxPQUFPLFdBQVcsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsRUFBRSxHQUFHLFdBQVcsQ0FBQztZQUN0QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsV0FBVyxDQUFDO1FBQ3hDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLEVBQUUsR0FBRyxXQUFXLEVBQUUsRUFBRSxJQUFJLFdBQVcsRUFBRSxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDcEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLEVBQUUsV0FBVyxDQUFDO1lBQzVDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxXQUFXLEVBQUUsa0JBQWtCLElBQUksV0FBVyxDQUFDO1FBQzNFLENBQUM7SUFDSCxDQUFDO0lBRU8sWUFBWSxDQUFDLFNBQWlCO1FBQ3BDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELDJEQUEyRDtJQUNuRCxPQUFPO1FBQ2IsTUFBTSxHQUFHLEdBQUcs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QztZQUN6QyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLENBQUM7UUFDRCxPQUFPO1lBQ0wsSUFBSSxFQUFFLFNBQVM7WUFDZixXQUFXLEVBQUUsNkRBQTZEO1lBQzFFLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7WUFDM0MsSUFBSSxFQUFFO2dCQUNKLFlBQVksRUFBRSxXQUFXO2dCQUN6QixVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVU7Z0JBQzlCLGFBQWEsRUFBRSxPQUFPLENBQUMsYUFBYTtnQkFDcEMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVO2dCQUM5QixXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVc7Z0JBQ2hDLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWTtnQkFDbEMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO2dCQUNoQyxLQUFLO2FBQ047U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELDhEQUE4RDtJQUNyRCxLQUFLO1FBQ1osS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMscUJBQXFCLEdBQUcsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCwyQ0FBMkM7SUFDM0MsS0FBSztRQUNILElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNmLENBQUM7O0FBekpILHdDQTBKQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTWV0cmljUmVjb3JkZXIg4oCUIHBlci1zdGVwIHRpbWluZyBhbmQgZXhlY3V0aW9uIGNvdW50cywga2V5ZWQgYnkgcnVudGltZVN0YWdlSWQuXG4gKlxuICogU3RvcmVzIHBlci1pbnZvY2F0aW9uIGRhdGEgZHVyaW5nIHRyYXZlcnNhbC4gQWdncmVnYXRlZCB2aWV3cyBjb21wdXRlZCBvbiByZWFkLlxuICogRXh0ZW5kcyBLZXllZFJlY29yZGVyPFN0ZXBNZXRyaWNzPiBmb3IgTygxKSBsb29rdXAgYW5kIHN0YW5kYXJkIG9wZXJhdGlvbnMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG1ldHJpYyA9IG5ldyBNZXRyaWNSZWNvcmRlcigpO1xuICogZXhlY3V0b3IuYXR0YWNoU2NvcGVSZWNvcmRlcihtZXRyaWMpO1xuICogYXdhaXQgZXhlY3V0b3IucnVuKCk7XG4gKlxuICogLy8gUGVyLXN0ZXAgKHRpbWUtdHJhdmVsKTpcbiAqIG1ldHJpYy5nZXRCeUtleSgnY2FsbC1sbG0jNScpOyAgLy8geyBzdGFnZU5hbWUsIHJlYWRDb3VudCwgd3JpdGVDb3VudCwgZHVyYXRpb24gfVxuICpcbiAqIC8vIEFnZ3JlZ2F0ZWQgKGJhY2t3YXJkIGNvbXBhdCk6XG4gKiBtZXRyaWMuZ2V0TWV0cmljcygpOyAgLy8geyB0b3RhbER1cmF0aW9uLCB0b3RhbFJlYWRzLCBzdGFnZU1ldHJpY3M6IE1hcDxzdGFnZU5hbWUsIGFnZ3JlZ2F0ZWQ+IH1cbiAqXG4gKiAvLyBQcm9ncmVzc2l2ZSAoc2xpZGVyKTpcbiAqIG1ldHJpYy5hY2N1bXVsYXRlKChzdW0sIG0pID0+IHN1bSArIG0uZHVyYXRpb24sIDAsIHZpc2libGVLZXlzKTtcbiAqIGBgYFxuICovXG5cbmltcG9ydCB7IEtleWVkUmVjb3JkZXIgfSBmcm9tICcuLi8uLi9yZWNvcmRlci9LZXllZFJlY29yZGVyLmpzJztcbmltcG9ydCB0eXBlIHsgUmVjb3JkZXJPcGVyYXRpb24gfSBmcm9tICcuLi8uLi9yZWNvcmRlci9SZWNvcmRlck9wZXJhdGlvbi5qcyc7XG5pbXBvcnQgdHlwZSB7IENvbW1pdEV2ZW50LCBQYXVzZUV2ZW50LCBSZWFkRXZlbnQsIFNjb3BlUmVjb3JkZXIsIFN0YWdlRXZlbnQsIFdyaXRlRXZlbnQgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbi8qKiBQZXItaW52b2NhdGlvbiBtZXRyaWNzIGZvciBhIHNpbmdsZSBleGVjdXRpb24gc3RlcC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RlcE1ldHJpY3Mge1xuICAvKiogSHVtYW4tcmVhZGFibGUgc3RhZ2UgbmFtZS4gKi9cbiAgc3RhZ2VOYW1lOiBzdHJpbmc7XG4gIC8qKiBOdW1iZXIgb2Ygc2NvcGUgcmVhZHMgZHVyaW5nIHRoaXMgaW52b2NhdGlvbi4gKi9cbiAgcmVhZENvdW50OiBudW1iZXI7XG4gIC8qKiBOdW1iZXIgb2Ygc2NvcGUgd3JpdGVzIGR1cmluZyB0aGlzIGludm9jYXRpb24uICovXG4gIHdyaXRlQ291bnQ6IG51bWJlcjtcbiAgLyoqIE51bWJlciBvZiBjb21taXRzIGR1cmluZyB0aGlzIGludm9jYXRpb24uICovXG4gIGNvbW1pdENvdW50OiBudW1iZXI7XG4gIC8qKiBOdW1iZXIgb2YgcGF1c2VzIGR1cmluZyB0aGlzIGludm9jYXRpb24uICovXG4gIHBhdXNlQ291bnQ6IG51bWJlcjtcbiAgLyoqIER1cmF0aW9uIGluIG1zIGZvciB0aGlzIGludm9jYXRpb24uICovXG4gIGR1cmF0aW9uOiBudW1iZXI7XG59XG5cbi8qKiBBZ2dyZWdhdGVkIG1ldHJpY3MgYWNyb3NzIGFsbCBpbnZvY2F0aW9ucyAoYmFja3dhcmQgY29tcGF0aWJsZSkuICovXG5leHBvcnQgaW50ZXJmYWNlIEFnZ3JlZ2F0ZWRNZXRyaWNzIHtcbiAgdG90YWxEdXJhdGlvbjogbnVtYmVyO1xuICB0b3RhbFJlYWRzOiBudW1iZXI7XG4gIHRvdGFsV3JpdGVzOiBudW1iZXI7XG4gIHRvdGFsQ29tbWl0czogbnVtYmVyO1xuICB0b3RhbFBhdXNlczogbnVtYmVyO1xuICAvKiogQWdncmVnYXRlZCBieSBzdGFnZU5hbWUg4oCUIHN1bXMgYWNyb3NzIGxvb3AgaW52b2NhdGlvbnMuICovXG4gIHN0YWdlTWV0cmljczogTWFwPHN0cmluZywgU3RhZ2VNZXRyaWNzPjtcbn1cblxuLyoqIEFnZ3JlZ2F0ZWQgcGVyLXN0YWdlTmFtZSAoYmFja3dhcmQgY29tcGF0aWJsZSB3aXRoIHByZS1ydW50aW1lU3RhZ2VJZCBBUEkpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGFnZU1ldHJpY3Mge1xuICBzdGFnZU5hbWU6IHN0cmluZztcbiAgcmVhZENvdW50OiBudW1iZXI7XG4gIHdyaXRlQ291bnQ6IG51bWJlcjtcbiAgY29tbWl0Q291bnQ6IG51bWJlcjtcbiAgcGF1c2VDb3VudDogbnVtYmVyO1xuICB0b3RhbER1cmF0aW9uOiBudW1iZXI7XG4gIGludm9jYXRpb25Db3VudDogbnVtYmVyO1xufVxuXG4vKiogT3B0aW9ucyBmb3IgTWV0cmljUmVjb3JkZXIuICovXG5leHBvcnQgaW50ZXJmYWNlIE1ldHJpY1JlY29yZGVyT3B0aW9ucyB7XG4gIC8qKiBTY29wZVJlY29yZGVyIElELiBEZWZhdWx0cyB0byBhdXRvLWluY3JlbWVudCAoYG1ldHJpY3MtMWAsIGBtZXRyaWNzLTJgLCAuLi4pLiAqL1xuICBpZD86IHN0cmluZztcbiAgLyoqIEZpbHRlciB3aGljaCBzdGFnZXMgYXJlIHJlY29yZGVkLiBSZXR1cm4gYHRydWVgIHRvIHJlY29yZCwgYGZhbHNlYCB0byBza2lwLiAqL1xuICBzdGFnZUZpbHRlcj86IChzdGFnZU5hbWU6IHN0cmluZykgPT4gYm9vbGVhbjtcbiAgLyoqIFByZWZlcnJlZCBVSSBvcGVyYXRpb24uIERlZmF1bHRzIHRvICdhZ2dyZWdhdGUnIChkYXNoYm9hcmQgdG90YWxzKS4gKi9cbiAgcHJlZmVycmVkT3BlcmF0aW9uPzogUmVjb3JkZXJPcGVyYXRpb247XG59XG5cbmV4cG9ydCBjbGFzcyBNZXRyaWNSZWNvcmRlciBleHRlbmRzIEtleWVkUmVjb3JkZXI8U3RlcE1ldHJpY3M+IGltcGxlbWVudHMgU2NvcGVSZWNvcmRlciB7XG4gIHByaXZhdGUgc3RhdGljIF9jb3VudGVyID0gMDtcblxuICByZWFkb25seSBpZDogc3RyaW5nO1xuICByZWFkb25seSBwcmVmZXJyZWRPcGVyYXRpb246IFJlY29yZGVyT3BlcmF0aW9uO1xuICBwcml2YXRlIHN0YWdlU3RhcnRUaW1lcyA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG4gIHByaXZhdGUgY3VycmVudFJ1bnRpbWVTdGFnZUlkID0gJyc7XG4gIHByaXZhdGUgc3RhZ2VGaWx0ZXI/OiAoc3RhZ2VOYW1lOiBzdHJpbmcpID0+IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoaWRPck9wdGlvbnM/OiBzdHJpbmcgfCBNZXRyaWNSZWNvcmRlck9wdGlvbnMpIHtcbiAgICBzdXBlcigpO1xuICAgIGlmICh0eXBlb2YgaWRPck9wdGlvbnMgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLmlkID0gaWRPck9wdGlvbnM7XG4gICAgICB0aGlzLnByZWZlcnJlZE9wZXJhdGlvbiA9ICdhZ2dyZWdhdGUnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlkID0gaWRPck9wdGlvbnM/LmlkID8/IGBtZXRyaWNzLSR7KytNZXRyaWNSZWNvcmRlci5fY291bnRlcn1gO1xuICAgICAgdGhpcy5zdGFnZUZpbHRlciA9IGlkT3JPcHRpb25zPy5zdGFnZUZpbHRlcjtcbiAgICAgIHRoaXMucHJlZmVycmVkT3BlcmF0aW9uID0gaWRPck9wdGlvbnM/LnByZWZlcnJlZE9wZXJhdGlvbiA/PyAnYWdncmVnYXRlJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNob3VsZFJlY29yZChzdGFnZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5zdGFnZUZpbHRlciB8fCB0aGlzLnN0YWdlRmlsdGVyKHN0YWdlTmFtZSk7XG4gIH1cblxuICAvKiogR2V0IG9yIGNyZWF0ZSB0aGUgU3RlcE1ldHJpY3MgZm9yIHRoZSBjdXJyZW50IHN0YWdlLiAqL1xuICBwcml2YXRlIGN1cnJlbnQoKTogU3RlcE1ldHJpY3Mge1xuICAgIGNvbnN0IGtleSA9IHRoaXMuY3VycmVudFJ1bnRpbWVTdGFnZUlkO1xuICAgIGxldCBtID0gdGhpcy5nZXRCeUtleShrZXkpO1xuICAgIGlmICghbSkge1xuICAgICAgbSA9IHsgc3RhZ2VOYW1lOiAnJywgcmVhZENvdW50OiAwLCB3cml0ZUNvdW50OiAwLCBjb21taXRDb3VudDogMCwgcGF1c2VDb3VudDogMCwgZHVyYXRpb246IDAgfTtcbiAgICAgIHRoaXMuc3RvcmUoa2V5LCBtKTtcbiAgICB9XG4gICAgcmV0dXJuIG07XG4gIH1cblxuICBvblN0YWdlU3RhcnQoZXZlbnQ6IFN0YWdlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2hvdWxkUmVjb3JkKGV2ZW50LnN0YWdlTmFtZSkpIHJldHVybjtcbiAgICB0aGlzLmN1cnJlbnRSdW50aW1lU3RhZ2VJZCA9IGV2ZW50LnJ1bnRpbWVTdGFnZUlkO1xuICAgIHRoaXMuc3RhZ2VTdGFydFRpbWVzLnNldChldmVudC5ydW50aW1lU3RhZ2VJZCwgZXZlbnQudGltZXN0YW1wKTtcbiAgICBjb25zdCBtID0gdGhpcy5jdXJyZW50KCk7XG4gICAgbS5zdGFnZU5hbWUgPSBldmVudC5zdGFnZU5hbWU7XG4gIH1cblxuICBvblJlYWQoZXZlbnQ6IFJlYWRFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zaG91bGRSZWNvcmQoZXZlbnQuc3RhZ2VOYW1lKSkgcmV0dXJuO1xuICAgIHRoaXMuY3VycmVudCgpLnJlYWRDb3VudCsrO1xuICB9XG5cbiAgb25Xcml0ZShldmVudDogV3JpdGVFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zaG91bGRSZWNvcmQoZXZlbnQuc3RhZ2VOYW1lKSkgcmV0dXJuO1xuICAgIHRoaXMuY3VycmVudCgpLndyaXRlQ291bnQrKztcbiAgfVxuXG4gIG9uQ29tbWl0KGV2ZW50OiBDb21taXRFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zaG91bGRSZWNvcmQoZXZlbnQuc3RhZ2VOYW1lKSkgcmV0dXJuO1xuICAgIHRoaXMuY3VycmVudCgpLmNvbW1pdENvdW50Kys7XG4gIH1cblxuICBvblBhdXNlKGV2ZW50OiBQYXVzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNob3VsZFJlY29yZChldmVudC5zdGFnZU5hbWUpKSByZXR1cm47XG4gICAgdGhpcy5jdXJyZW50KCkucGF1c2VDb3VudCsrO1xuICB9XG5cbiAgb25TdGFnZUVuZChldmVudDogU3RhZ2VFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zaG91bGRSZWNvcmQoZXZlbnQuc3RhZ2VOYW1lKSkgcmV0dXJuO1xuICAgIGNvbnN0IG0gPSB0aGlzLmN1cnJlbnQoKTtcbiAgICBpZiAoZXZlbnQuZHVyYXRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgbS5kdXJhdGlvbiA9IGV2ZW50LmR1cmF0aW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzdGFydFRpbWUgPSB0aGlzLnN0YWdlU3RhcnRUaW1lcy5nZXQoZXZlbnQucnVudGltZVN0YWdlSWQpO1xuICAgICAgbS5kdXJhdGlvbiA9IHN0YXJ0VGltZSAhPT0gdW5kZWZpbmVkID8gZXZlbnQudGltZXN0YW1wIC0gc3RhcnRUaW1lIDogMDtcbiAgICB9XG4gICAgdGhpcy5zdGFnZVN0YXJ0VGltZXMuZGVsZXRlKGV2ZW50LnJ1bnRpbWVTdGFnZUlkKTtcbiAgfVxuXG4gIC8qKiBBZ2dyZWdhdGVkIG1ldHJpY3Mg4oCUIGNvbXB1dGVzIHRvdGFscyBvbiB0aGUgZmx5IGZyb20gcGVyLXN0ZXAgZGF0YSAoYmFja3dhcmQgY29tcGF0aWJsZSkuICovXG4gIGdldE1ldHJpY3MoKTogQWdncmVnYXRlZE1ldHJpY3Mge1xuICAgIGNvbnN0IGJ5TmFtZSA9IG5ldyBNYXA8c3RyaW5nLCBTdGFnZU1ldHJpY3M+KCk7XG5cbiAgICBjb25zdCB0b3RhbER1cmF0aW9uID0gdGhpcy5hZ2dyZWdhdGUoKHN1bSwgbSkgPT4gc3VtICsgbS5kdXJhdGlvbiwgMCk7XG4gICAgY29uc3QgdG90YWxSZWFkcyA9IHRoaXMuYWdncmVnYXRlKChzdW0sIG0pID0+IHN1bSArIG0ucmVhZENvdW50LCAwKTtcbiAgICBjb25zdCB0b3RhbFdyaXRlcyA9IHRoaXMuYWdncmVnYXRlKChzdW0sIG0pID0+IHN1bSArIG0ud3JpdGVDb3VudCwgMCk7XG4gICAgY29uc3QgdG90YWxDb21taXRzID0gdGhpcy5hZ2dyZWdhdGUoKHN1bSwgbSkgPT4gc3VtICsgbS5jb21taXRDb3VudCwgMCk7XG4gICAgY29uc3QgdG90YWxQYXVzZXMgPSB0aGlzLmFnZ3JlZ2F0ZSgoc3VtLCBtKSA9PiBzdW0gKyBtLnBhdXNlQ291bnQsIDApO1xuXG4gICAgLy8gR3JvdXAgYnkgc3RhZ2VOYW1lIGZvciBiYWNrd2FyZCBjb21wYXRcbiAgICBmb3IgKGNvbnN0IG0gb2YgdGhpcy52YWx1ZXMoKSkge1xuICAgICAgY29uc3QgZXhpc3RpbmcgPSBieU5hbWUuZ2V0KG0uc3RhZ2VOYW1lKTtcbiAgICAgIGlmIChleGlzdGluZykge1xuICAgICAgICBleGlzdGluZy5yZWFkQ291bnQgKz0gbS5yZWFkQ291bnQ7XG4gICAgICAgIGV4aXN0aW5nLndyaXRlQ291bnQgKz0gbS53cml0ZUNvdW50O1xuICAgICAgICBleGlzdGluZy5jb21taXRDb3VudCArPSBtLmNvbW1pdENvdW50O1xuICAgICAgICBleGlzdGluZy5wYXVzZUNvdW50ICs9IG0ucGF1c2VDb3VudDtcbiAgICAgICAgZXhpc3RpbmcudG90YWxEdXJhdGlvbiArPSBtLmR1cmF0aW9uO1xuICAgICAgICBleGlzdGluZy5pbnZvY2F0aW9uQ291bnQrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJ5TmFtZS5zZXQobS5zdGFnZU5hbWUsIHtcbiAgICAgICAgICBzdGFnZU5hbWU6IG0uc3RhZ2VOYW1lLFxuICAgICAgICAgIHJlYWRDb3VudDogbS5yZWFkQ291bnQsXG4gICAgICAgICAgd3JpdGVDb3VudDogbS53cml0ZUNvdW50LFxuICAgICAgICAgIGNvbW1pdENvdW50OiBtLmNvbW1pdENvdW50LFxuICAgICAgICAgIHBhdXNlQ291bnQ6IG0ucGF1c2VDb3VudCxcbiAgICAgICAgICB0b3RhbER1cmF0aW9uOiBtLmR1cmF0aW9uLFxuICAgICAgICAgIGludm9jYXRpb25Db3VudDogMSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgdG90YWxEdXJhdGlvbiwgdG90YWxSZWFkcywgdG90YWxXcml0ZXMsIHRvdGFsQ29tbWl0cywgdG90YWxQYXVzZXMsIHN0YWdlTWV0cmljczogYnlOYW1lIH07XG4gIH1cblxuICAvKiogR2V0IGFnZ3JlZ2F0ZWQgbWV0cmljcyBmb3IgYSBzcGVjaWZpYyBzdGFnZSBuYW1lIChiYWNrd2FyZCBjb21wYXRpYmxlKS4gKi9cbiAgZ2V0U3RhZ2VNZXRyaWNzKHN0YWdlTmFtZTogc3RyaW5nKTogU3RhZ2VNZXRyaWNzIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBtZXRyaWNzID0gdGhpcy5nZXRNZXRyaWNzKCk7XG4gICAgcmV0dXJuIG1ldHJpY3Muc3RhZ2VNZXRyaWNzLmdldChzdGFnZU5hbWUpO1xuICB9XG5cbiAgdG9TbmFwc2hvdCgpIHtcbiAgICBjb25zdCBtZXRyaWNzID0gdGhpcy5nZXRNZXRyaWNzKCk7XG4gICAgLy8gRXhwb3NlIHBlci1zdGVwIGRhdGEga2V5ZWQgYnkgcnVudGltZVN0YWdlSWQgKGZvciB0aW1lLXRyYXZlbCBVSSlcbiAgICAvLyBhbG9uZ3NpZGUgdGhlIGFnZ3JlZ2F0ZWQgdG90YWxzXG4gICAgY29uc3Qgc3RlcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgdGhpcy5nZXRNYXAoKSkge1xuICAgICAgc3RlcHNba2V5XSA9IHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogJ01ldHJpY3MnLFxuICAgICAgZGVzY3JpcHRpb246ICdBZ2dyZWdhdG9yIChLZXllZFJlY29yZGVyKSDigJQgcGVyLXN0ZXAgdGltaW5nIGFuZCBJL08gY291bnRzJyxcbiAgICAgIHByZWZlcnJlZE9wZXJhdGlvbjogdGhpcy5wcmVmZXJyZWRPcGVyYXRpb24sXG4gICAgICBkYXRhOiB7XG4gICAgICAgIG51bWVyaWNGaWVsZDogJ3JlYWRDb3VudCcsXG4gICAgICAgIGdyYW5kVG90YWw6IG1ldHJpY3MudG90YWxSZWFkcyxcbiAgICAgICAgdG90YWxEdXJhdGlvbjogbWV0cmljcy50b3RhbER1cmF0aW9uLFxuICAgICAgICB0b3RhbFJlYWRzOiBtZXRyaWNzLnRvdGFsUmVhZHMsXG4gICAgICAgIHRvdGFsV3JpdGVzOiBtZXRyaWNzLnRvdGFsV3JpdGVzLFxuICAgICAgICB0b3RhbENvbW1pdHM6IG1ldHJpY3MudG90YWxDb21taXRzLFxuICAgICAgICB0b3RhbFBhdXNlczogbWV0cmljcy50b3RhbFBhdXNlcyxcbiAgICAgICAgc3RlcHMsXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICAvKiogQ2xlYXIgYWxsIHN0YXRlIOKAlCBjYWxsZWQgYnkgZXhlY3V0b3IgYmVmb3JlIGVhY2ggcnVuKCkuICovXG4gIG92ZXJyaWRlIGNsZWFyKCk6IHZvaWQge1xuICAgIHN1cGVyLmNsZWFyKCk7XG4gICAgdGhpcy5zdGFnZVN0YXJ0VGltZXMuY2xlYXIoKTtcbiAgICB0aGlzLmN1cnJlbnRSdW50aW1lU3RhZ2VJZCA9ICcnO1xuICB9XG5cbiAgLyoqIEFsaWFzIGZvciBjbGVhcigpIChiYWNrd2FyZCBjb21wYXQpLiAqL1xuICByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFyKCk7XG4gIH1cbn1cbiJdfQ==
202
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWV0cmljUmVjb3JkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3Njb3BlL3JlY29yZGVycy9NZXRyaWNSZWNvcmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJHOzs7QUFFSCxnRUFBMEQ7QUFvRDFELE1BQWEsY0FBYztJQUNqQixNQUFNLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztJQUVuQixFQUFFLENBQVM7SUFDWCxrQkFBa0IsQ0FBb0I7SUFDL0MscUVBQXFFO0lBQ3BELEtBQUssR0FBRyxJQUFJLDBCQUFVLEVBQWUsQ0FBQztJQUMvQyxlQUFlLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7SUFDNUMscUJBQXFCLEdBQUcsRUFBRSxDQUFDO0lBQzNCLFdBQVcsQ0FBa0M7SUFFckQsWUFBWSxXQUE0QztRQUN0RCxJQUFJLE9BQU8sV0FBVyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxFQUFFLEdBQUcsV0FBVyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxXQUFXLENBQUM7UUFDeEMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsRUFBRSxHQUFHLFdBQVcsRUFBRSxFQUFFLElBQUksV0FBVyxFQUFFLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNwRSxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsRUFBRSxXQUFXLENBQUM7WUFDNUMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFdBQVcsRUFBRSxrQkFBa0IsSUFBSSxXQUFXLENBQUM7UUFDM0UsQ0FBQztJQUNILENBQUM7SUFFTyxZQUFZLENBQUMsU0FBaUI7UUFDcEMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsMkRBQTJEO0lBQ25ELE9BQU87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cEMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVO2dCQUM5QixXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVc7Z0JBQ2hDLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWTtnQkFDbEMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO2dCQUNoQyxLQUFLO2FBQ047U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELDhEQUE4RDtJQUM5RCxLQUFLO1FBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELDJDQUEyQztJQUMzQyxLQUFLO1FBQ0gsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2YsQ0FBQzs7QUExTEgsd0NBMkxDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBNZXRyaWNSZWNvcmRlciDigJQgcGVyLXN0ZXAgdGltaW5nIGFuZCBleGVjdXRpb24gY291bnRzLCBrZXllZCBieSBydW50aW1lU3RhZ2VJZC5cbiAqXG4gKiBTdG9yZXMgcGVyLWludm9jYXRpb24gZGF0YSBkdXJpbmcgdHJhdmVyc2FsLiBBZ2dyZWdhdGVkIHZpZXdzIGNvbXB1dGVkIG9uIHJlYWQuXG4gKiBDb21wb3NlcyBhIGBLZXllZFN0b3JlPFN0ZXBNZXRyaWNzPmAgZm9yIE8oMSkgbG9va3VwIGFuZCBzdGFuZGFyZCBvcGVyYXRpb25zXG4gKiAoQ29udmVudGlvbiAxIOKAlCBvbmUgcHVycG9zZSBwZXIgcmVjb3JkZXI6IHRoaXMgaXMgdGhlIFNjb3BlUmVjb3JkZXI7IHRoZSBzdG9yZVxuICogaXMgdGhlIHN0b3JhZ2UpLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBtZXRyaWMgPSBuZXcgTWV0cmljUmVjb3JkZXIoKTtcbiAqIGV4ZWN1dG9yLmF0dGFjaFNjb3BlUmVjb3JkZXIobWV0cmljKTtcbiAqIGF3YWl0IGV4ZWN1dG9yLnJ1bigpO1xuICpcbiAqIC8vIFBlci1zdGVwICh0aW1lLXRyYXZlbCk6XG4gKiBtZXRyaWMuZ2V0QnlLZXkoJ2NhbGwtbGxtIzUnKTsgIC8vIHsgc3RhZ2VOYW1lLCByZWFkQ291bnQsIHdyaXRlQ291bnQsIGR1cmF0aW9uIH1cbiAqXG4gKiAvLyBBZ2dyZWdhdGVkIChiYWNrd2FyZCBjb21wYXQpOlxuICogbWV0cmljLmdldE1ldHJpY3MoKTsgIC8vIHsgdG90YWxEdXJhdGlvbiwgdG90YWxSZWFkcywgc3RhZ2VNZXRyaWNzOiBNYXA8c3RhZ2VOYW1lLCBhZ2dyZWdhdGVkPiB9XG4gKlxuICogLy8gUHJvZ3Jlc3NpdmUgKHNsaWRlcik6XG4gKiBtZXRyaWMuYWNjdW11bGF0ZSgoc3VtLCBtKSA9PiBzdW0gKyBtLmR1cmF0aW9uLCAwLCB2aXNpYmxlS2V5cyk7XG4gKiBgYGBcbiAqL1xuXG5pbXBvcnQgeyBLZXllZFN0b3JlIH0gZnJvbSAnLi4vLi4vcmVjb3JkZXIvS2V5ZWRTdG9yZS5qcyc7XG5pbXBvcnQgdHlwZSB7IFJlY29yZGVyT3BlcmF0aW9uIH0gZnJvbSAnLi4vLi4vcmVjb3JkZXIvUmVjb3JkZXJPcGVyYXRpb24uanMnO1xuaW1wb3J0IHR5cGUgeyBDb21taXRFdmVudCwgUGF1c2VFdmVudCwgUmVhZEV2ZW50LCBTY29wZVJlY29yZGVyLCBTdGFnZUV2ZW50LCBXcml0ZUV2ZW50IH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG4vKiogUGVyLWludm9jYXRpb24gbWV0cmljcyBmb3IgYSBzaW5nbGUgZXhlY3V0aW9uIHN0ZXAuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0ZXBNZXRyaWNzIHtcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIHN0YWdlIG5hbWUuICovXG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuICAvKiogTnVtYmVyIG9mIHNjb3BlIHJlYWRzIGR1cmluZyB0aGlzIGludm9jYXRpb24uICovXG4gIHJlYWRDb3VudDogbnVtYmVyO1xuICAvKiogTnVtYmVyIG9mIHNjb3BlIHdyaXRlcyBkdXJpbmcgdGhpcyBpbnZvY2F0aW9uLiAqL1xuICB3cml0ZUNvdW50OiBudW1iZXI7XG4gIC8qKiBOdW1iZXIgb2YgY29tbWl0cyBkdXJpbmcgdGhpcyBpbnZvY2F0aW9uLiAqL1xuICBjb21taXRDb3VudDogbnVtYmVyO1xuICAvKiogTnVtYmVyIG9mIHBhdXNlcyBkdXJpbmcgdGhpcyBpbnZvY2F0aW9uLiAqL1xuICBwYXVzZUNvdW50OiBudW1iZXI7XG4gIC8qKiBEdXJhdGlvbiBpbiBtcyBmb3IgdGhpcyBpbnZvY2F0aW9uLiAqL1xuICBkdXJhdGlvbjogbnVtYmVyO1xufVxuXG4vKiogQWdncmVnYXRlZCBtZXRyaWNzIGFjcm9zcyBhbGwgaW52b2NhdGlvbnMgKGJhY2t3YXJkIGNvbXBhdGlibGUpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZ2dyZWdhdGVkTWV0cmljcyB7XG4gIHRvdGFsRHVyYXRpb246IG51bWJlcjtcbiAgdG90YWxSZWFkczogbnVtYmVyO1xuICB0b3RhbFdyaXRlczogbnVtYmVyO1xuICB0b3RhbENvbW1pdHM6IG51bWJlcjtcbiAgdG90YWxQYXVzZXM6IG51bWJlcjtcbiAgLyoqIEFnZ3JlZ2F0ZWQgYnkgc3RhZ2VOYW1lIOKAlCBzdW1zIGFjcm9zcyBsb29wIGludm9jYXRpb25zLiAqL1xuICBzdGFnZU1ldHJpY3M6IE1hcDxzdHJpbmcsIFN0YWdlTWV0cmljcz47XG59XG5cbi8qKiBBZ2dyZWdhdGVkIHBlci1zdGFnZU5hbWUgKGJhY2t3YXJkIGNvbXBhdGlibGUgd2l0aCBwcmUtcnVudGltZVN0YWdlSWQgQVBJKS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RhZ2VNZXRyaWNzIHtcbiAgc3RhZ2VOYW1lOiBzdHJpbmc7XG4gIHJlYWRDb3VudDogbnVtYmVyO1xuICB3cml0ZUNvdW50OiBudW1iZXI7XG4gIGNvbW1pdENvdW50OiBudW1iZXI7XG4gIHBhdXNlQ291bnQ6IG51bWJlcjtcbiAgdG90YWxEdXJhdGlvbjogbnVtYmVyO1xuICBpbnZvY2F0aW9uQ291bnQ6IG51bWJlcjtcbn1cblxuLyoqIE9wdGlvbnMgZm9yIE1ldHJpY1JlY29yZGVyLiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXRyaWNSZWNvcmRlck9wdGlvbnMge1xuICAvKiogU2NvcGVSZWNvcmRlciBJRC4gRGVmYXVsdHMgdG8gYXV0by1pbmNyZW1lbnQgKGBtZXRyaWNzLTFgLCBgbWV0cmljcy0yYCwgLi4uKS4gKi9cbiAgaWQ/OiBzdHJpbmc7XG4gIC8qKiBGaWx0ZXIgd2hpY2ggc3RhZ2VzIGFyZSByZWNvcmRlZC4gUmV0dXJuIGB0cnVlYCB0byByZWNvcmQsIGBmYWxzZWAgdG8gc2tpcC4gKi9cbiAgc3RhZ2VGaWx0ZXI/OiAoc3RhZ2VOYW1lOiBzdHJpbmcpID0+IGJvb2xlYW47XG4gIC8qKiBQcmVmZXJyZWQgVUkgb3BlcmF0aW9uLiBEZWZhdWx0cyB0byAnYWdncmVnYXRlJyAoZGFzaGJvYXJkIHRvdGFscykuICovXG4gIHByZWZlcnJlZE9wZXJhdGlvbj86IFJlY29yZGVyT3BlcmF0aW9uO1xufVxuXG5leHBvcnQgY2xhc3MgTWV0cmljUmVjb3JkZXIgaW1wbGVtZW50cyBTY29wZVJlY29yZGVyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2NvdW50ZXIgPSAwO1xuXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByZWZlcnJlZE9wZXJhdGlvbjogUmVjb3JkZXJPcGVyYXRpb247XG4gIC8qKiAxOjEgcGVyLXN0ZXAgc3RvcmFnZSAoQ29udmVudGlvbiAxIOKAlCBjb21wb3NlZCwgbm90IGluaGVyaXRlZCkuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgc3RvcmUgPSBuZXcgS2V5ZWRTdG9yZTxTdGVwTWV0cmljcz4oKTtcbiAgcHJpdmF0ZSBzdGFnZVN0YXJ0VGltZXMgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICBwcml2YXRlIGN1cnJlbnRSdW50aW1lU3RhZ2VJZCA9ICcnO1xuICBwcml2YXRlIHN0YWdlRmlsdGVyPzogKHN0YWdlTmFtZTogc3RyaW5nKSA9PiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKGlkT3JPcHRpb25zPzogc3RyaW5nIHwgTWV0cmljUmVjb3JkZXJPcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiBpZE9yT3B0aW9ucyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuaWQgPSBpZE9yT3B0aW9ucztcbiAgICAgIHRoaXMucHJlZmVycmVkT3BlcmF0aW9uID0gJ2FnZ3JlZ2F0ZSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaWQgPSBpZE9yT3B0aW9ucz8uaWQgPz8gYG1ldHJpY3MtJHsrK01ldHJpY1JlY29yZGVyLl9jb3VudGVyfWA7XG4gICAgICB0aGlzLnN0YWdlRmlsdGVyID0gaWRPck9wdGlvbnM/LnN0YWdlRmlsdGVyO1xuICAgICAgdGhpcy5wcmVmZXJyZWRPcGVyYXRpb24gPSBpZE9yT3B0aW9ucz8ucHJlZmVycmVkT3BlcmF0aW9uID8/ICdhZ2dyZWdhdGUnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkUmVjb3JkKHN0YWdlTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLnN0YWdlRmlsdGVyIHx8IHRoaXMuc3RhZ2VGaWx0ZXIoc3RhZ2VOYW1lKTtcbiAgfVxuXG4gIC8qKiBHZXQgb3IgY3JlYXRlIHRoZSBTdGVwTWV0cmljcyBmb3IgdGhlIGN1cnJlbnQgc3RhZ2UuICovXG4gIHByaXZhdGUgY3VycmVudCgpOiBTdGVwTWV0cmljcyB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5jdXJyZW50UnVudGltZVN0YWdlSWQ7XG4gICAgbGV0IG0gPSB0aGlzLnN0b3JlLmdldChrZXkpO1xuICAgIGlmICghbSkge1xuICAgICAgbSA9IHsgc3RhZ2VOYW1lOiAnJywgcmVhZENvdW50OiAwLCB3cml0ZUNvdW50OiAwLCBjb21taXRDb3VudDogMCwgcGF1c2VDb3VudDogMCwgZHVyYXRpb246IDAgfTtcbiAgICAgIHRoaXMuc3RvcmUuc2V0KGtleSwgbSk7XG4gICAgfVxuICAgIHJldHVybiBtO1xuICB9XG5cbiAgLy8g4pSA4pSAIFBlci1zdGVwIHF1ZXJ5IEFQSSAoZGVsZWdhdGVzIHRvIHRoZSBjb21wb3NlZCBzdG9yZSkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbiAgLyoqIFRyYW5zbGF0ZTogcGVyLXN0ZXAgbWV0cmljcyBieSBydW50aW1lU3RhZ2VJZC4gKi9cbiAgZ2V0QnlLZXkocnVudGltZVN0YWdlSWQ6IHN0cmluZyk6IFN0ZXBNZXRyaWNzIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5nZXQocnVudGltZVN0YWdlSWQpO1xuICB9XG5cbiAgLyoqIEFsbCBwZXItc3RlcCBtZXRyaWNzIGFzIGEgcmVhZC1vbmx5IE1hcCAoaW5zZXJ0aW9uLW9yZGVyZWQpLiAqL1xuICBnZXRNYXAoKTogUmVhZG9ubHlNYXA8c3RyaW5nLCBTdGVwTWV0cmljcz4ge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLmdldE1hcCgpO1xuICB9XG5cbiAgLyoqIEFsbCBwZXItc3RlcCBtZXRyaWNzIChpbnNlcnRpb24tb3JkZXJlZCkuICovXG4gIHZhbHVlcygpOiBTdGVwTWV0cmljc1tdIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS52YWx1ZXMoKTtcbiAgfVxuXG4gIC8qKiBOdW1iZXIgb2YgcmVjb3JkZWQgc3RlcHMuICovXG4gIGdldCBzaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2l6ZTtcbiAgfVxuXG4gIC8qKiBBZ2dyZWdhdGU6IHJlZHVjZSBBTEwgc3RlcHMgdG8gYSBzaW5nbGUgdmFsdWUgKGRhc2hib2FyZHMsIHRvdGFscykuICovXG4gIGFnZ3JlZ2F0ZTxSPihmbjogKGFjYzogUiwgZW50cnk6IFN0ZXBNZXRyaWNzLCBrZXk6IHN0cmluZykgPT4gUiwgaW5pdGlhbDogUik6IFIge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLmFnZ3JlZ2F0ZShmbiwgaW5pdGlhbCk7XG4gIH1cblxuICAvKiogQWNjdW11bGF0ZTogcmVkdWNlIHN0ZXBzIHVwIHRvIGEgc2xpZGVyIHBvc2l0aW9uIChwcm9ncmVzc2l2ZSB2aWV3KS4gKi9cbiAgYWNjdW11bGF0ZTxSPihmbjogKGFjYzogUiwgZW50cnk6IFN0ZXBNZXRyaWNzLCBrZXk6IHN0cmluZykgPT4gUiwgaW5pdGlhbDogUiwga2V5cz86IFJlYWRvbmx5U2V0PHN0cmluZz4pOiBSIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5hY2N1bXVsYXRlKGZuLCBpbml0aWFsLCBrZXlzKTtcbiAgfVxuXG4gIG9uU3RhZ2VTdGFydChldmVudDogU3RhZ2VFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zaG91bGRSZWNvcmQoZXZlbnQuc3RhZ2VOYW1lKSkgcmV0dXJuO1xuICAgIHRoaXMuY3VycmVudFJ1bnRpbWVTdGFnZUlkID0gZXZlbnQucnVudGltZVN0YWdlSWQ7XG4gICAgdGhpcy5zdGFnZVN0YXJ0VGltZXMuc2V0KGV2ZW50LnJ1bnRpbWVTdGFnZUlkLCBldmVudC50aW1lc3RhbXApO1xuICAgIGNvbnN0IG0gPSB0aGlzLmN1cnJlbnQoKTtcbiAgICBtLnN0YWdlTmFtZSA9IGV2ZW50LnN0YWdlTmFtZTtcbiAgfVxuXG4gIG9uUmVhZChldmVudDogUmVhZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNob3VsZFJlY29yZChldmVudC5zdGFnZU5hbWUpKSByZXR1cm47XG4gICAgdGhpcy5jdXJyZW50KCkucmVhZENvdW50Kys7XG4gIH1cblxuICBvbldyaXRlKGV2ZW50OiBXcml0ZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNob3VsZFJlY29yZChldmVudC5zdGFnZU5hbWUpKSByZXR1cm47XG4gICAgdGhpcy5jdXJyZW50KCkud3JpdGVDb3VudCsrO1xuICB9XG5cbiAgb25Db21taXQoZXZlbnQ6IENvbW1pdEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNob3VsZFJlY29yZChldmVudC5zdGFnZU5hbWUpKSByZXR1cm47XG4gICAgdGhpcy5jdXJyZW50KCkuY29tbWl0Q291bnQrKztcbiAgfVxuXG4gIG9uUGF1c2UoZXZlbnQ6IFBhdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2hvdWxkUmVjb3JkKGV2ZW50LnN0YWdlTmFtZSkpIHJldHVybjtcbiAgICB0aGlzLmN1cnJlbnQoKS5wYXVzZUNvdW50Kys7XG4gIH1cblxuICBvblN0YWdlRW5kKGV2ZW50OiBTdGFnZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNob3VsZFJlY29yZChldmVudC5zdGFnZU5hbWUpKSByZXR1cm47XG4gICAgY29uc3QgbSA9IHRoaXMuY3VycmVudCgpO1xuICAgIGlmIChldmVudC5kdXJhdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBtLmR1cmF0aW9uID0gZXZlbnQuZHVyYXRpb247XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHN0YXJ0VGltZSA9IHRoaXMuc3RhZ2VTdGFydFRpbWVzLmdldChldmVudC5ydW50aW1lU3RhZ2VJZCk7XG4gICAgICBtLmR1cmF0aW9uID0gc3RhcnRUaW1lICE9PSB1bmRlZmluZWQgPyBldmVudC50aW1lc3RhbXAgLSBzdGFydFRpbWUgOiAwO1xuICAgIH1cbiAgICB0aGlzLnN0YWdlU3RhcnRUaW1lcy5kZWxldGUoZXZlbnQucnVudGltZVN0YWdlSWQpO1xuICB9XG5cbiAgLyoqIEFnZ3JlZ2F0ZWQgbWV0cmljcyDigJQgY29tcHV0ZXMgdG90YWxzIG9uIHRoZSBmbHkgZnJvbSBwZXItc3RlcCBkYXRhIChiYWNrd2FyZCBjb21wYXRpYmxlKS4gKi9cbiAgZ2V0TWV0cmljcygpOiBBZ2dyZWdhdGVkTWV0cmljcyB7XG4gICAgY29uc3QgYnlOYW1lID0gbmV3IE1hcDxzdHJpbmcsIFN0YWdlTWV0cmljcz4oKTtcblxuICAgIGNvbnN0IHRvdGFsRHVyYXRpb24gPSB0aGlzLmFnZ3JlZ2F0ZSgoc3VtLCBtKSA9PiBzdW0gKyBtLmR1cmF0aW9uLCAwKTtcbiAgICBjb25zdCB0b3RhbFJlYWRzID0gdGhpcy5hZ2dyZWdhdGUoKHN1bSwgbSkgPT4gc3VtICsgbS5yZWFkQ291bnQsIDApO1xuICAgIGNvbnN0IHRvdGFsV3JpdGVzID0gdGhpcy5hZ2dyZWdhdGUoKHN1bSwgbSkgPT4gc3VtICsgbS53cml0ZUNvdW50LCAwKTtcbiAgICBjb25zdCB0b3RhbENvbW1pdHMgPSB0aGlzLmFnZ3JlZ2F0ZSgoc3VtLCBtKSA9PiBzdW0gKyBtLmNvbW1pdENvdW50LCAwKTtcbiAgICBjb25zdCB0b3RhbFBhdXNlcyA9IHRoaXMuYWdncmVnYXRlKChzdW0sIG0pID0+IHN1bSArIG0ucGF1c2VDb3VudCwgMCk7XG5cbiAgICAvLyBHcm91cCBieSBzdGFnZU5hbWUgZm9yIGJhY2t3YXJkIGNvbXBhdFxuICAgIGZvciAoY29uc3QgbSBvZiB0aGlzLnZhbHVlcygpKSB7XG4gICAgICBjb25zdCBleGlzdGluZyA9IGJ5TmFtZS5nZXQobS5zdGFnZU5hbWUpO1xuICAgICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICAgIGV4aXN0aW5nLnJlYWRDb3VudCArPSBtLnJlYWRDb3VudDtcbiAgICAgICAgZXhpc3Rpbmcud3JpdGVDb3VudCArPSBtLndyaXRlQ291bnQ7XG4gICAgICAgIGV4aXN0aW5nLmNvbW1pdENvdW50ICs9IG0uY29tbWl0Q291bnQ7XG4gICAgICAgIGV4aXN0aW5nLnBhdXNlQ291bnQgKz0gbS5wYXVzZUNvdW50O1xuICAgICAgICBleGlzdGluZy50b3RhbER1cmF0aW9uICs9IG0uZHVyYXRpb247XG4gICAgICAgIGV4aXN0aW5nLmludm9jYXRpb25Db3VudCsrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnlOYW1lLnNldChtLnN0YWdlTmFtZSwge1xuICAgICAgICAgIHN0YWdlTmFtZTogbS5zdGFnZU5hbWUsXG4gICAgICAgICAgcmVhZENvdW50OiBtLnJlYWRDb3VudCxcbiAgICAgICAgICB3cml0ZUNvdW50OiBtLndyaXRlQ291bnQsXG4gICAgICAgICAgY29tbWl0Q291bnQ6IG0uY29tbWl0Q291bnQsXG4gICAgICAgICAgcGF1c2VDb3VudDogbS5wYXVzZUNvdW50LFxuICAgICAgICAgIHRvdGFsRHVyYXRpb246IG0uZHVyYXRpb24sXG4gICAgICAgICAgaW52b2NhdGlvbkNvdW50OiAxLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyB0b3RhbER1cmF0aW9uLCB0b3RhbFJlYWRzLCB0b3RhbFdyaXRlcywgdG90YWxDb21taXRzLCB0b3RhbFBhdXNlcywgc3RhZ2VNZXRyaWNzOiBieU5hbWUgfTtcbiAgfVxuXG4gIC8qKiBHZXQgYWdncmVnYXRlZCBtZXRyaWNzIGZvciBhIHNwZWNpZmljIHN0YWdlIG5hbWUgKGJhY2t3YXJkIGNvbXBhdGlibGUpLiAqL1xuICBnZXRTdGFnZU1ldHJpY3Moc3RhZ2VOYW1lOiBzdHJpbmcpOiBTdGFnZU1ldHJpY3MgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IG1ldHJpY3MgPSB0aGlzLmdldE1ldHJpY3MoKTtcbiAgICByZXR1cm4gbWV0cmljcy5zdGFnZU1ldHJpY3MuZ2V0KHN0YWdlTmFtZSk7XG4gIH1cblxuICB0b1NuYXBzaG90KCkge1xuICAgIGNvbnN0IG1ldHJpY3MgPSB0aGlzLmdldE1ldHJpY3MoKTtcbiAgICAvLyBFeHBvc2UgcGVyLXN0ZXAgZGF0YSBrZXllZCBieSBydW50aW1lU3RhZ2VJZCAoZm9yIHRpbWUtdHJhdmVsIFVJKVxuICAgIC8vIGFsb25nc2lkZSB0aGUgYWdncmVnYXRlZCB0b3RhbHNcbiAgICBjb25zdCBzdGVwczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiB0aGlzLmdldE1hcCgpKSB7XG4gICAgICBzdGVwc1trZXldID0gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiAnTWV0cmljcycsXG4gICAgICBkZXNjcmlwdGlvbjogJ0FnZ3JlZ2F0b3IgKEtleWVkU3RvcmUpIOKAlCBwZXItc3RlcCB0aW1pbmcgYW5kIEkvTyBjb3VudHMnLFxuICAgICAgcHJlZmVycmVkT3BlcmF0aW9uOiB0aGlzLnByZWZlcnJlZE9wZXJhdGlvbixcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgbnVtZXJpY0ZpZWxkOiAncmVhZENvdW50JyxcbiAgICAgICAgZ3JhbmRUb3RhbDogbWV0cmljcy50b3RhbFJlYWRzLFxuICAgICAgICB0b3RhbER1cmF0aW9uOiBtZXRyaWNzLnRvdGFsRHVyYXRpb24sXG4gICAgICAgIHRvdGFsUmVhZHM6IG1ldHJpY3MudG90YWxSZWFkcyxcbiAgICAgICAgdG90YWxXcml0ZXM6IG1ldHJpY3MudG90YWxXcml0ZXMsXG4gICAgICAgIHRvdGFsQ29tbWl0czogbWV0cmljcy50b3RhbENvbW1pdHMsXG4gICAgICAgIHRvdGFsUGF1c2VzOiBtZXRyaWNzLnRvdGFsUGF1c2VzLFxuICAgICAgICBzdGVwcyxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBDbGVhciBhbGwgc3RhdGUg4oCUIGNhbGxlZCBieSBleGVjdXRvciBiZWZvcmUgZWFjaCBydW4oKS4gKi9cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5zdG9yZS5jbGVhcigpO1xuICAgIHRoaXMuc3RhZ2VTdGFydFRpbWVzLmNsZWFyKCk7XG4gICAgdGhpcy5jdXJyZW50UnVudGltZVN0YWdlSWQgPSAnJztcbiAgfVxuXG4gIC8qKiBBbGlhcyBmb3IgY2xlYXIoKSAoYmFja3dhcmQgY29tcGF0KS4gKi9cbiAgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhcigpO1xuICB9XG59XG4iXX0=
package/dist/trace.js CHANGED
@@ -31,7 +31,7 @@
31
31
  * ```
32
32
  */
33
33
  Object.defineProperty(exports, "__esModule", { value: true });
34
- exports.qualityTrace = exports.formatQualityTrace = exports.QualityRecorder = exports.ROOT_SUBFLOW_ID = exports.ROOT_RUNTIME_STAGE_ID = exports.inOutRecorder = exports.InOutRecorder = exports.topologyRecorder = exports.TopologyRecorder = exports.BoundaryStateTracker = exports.SequenceRecorder = exports.KeyedRecorder = exports.CommitRangeIndex = exports.SequenceStore = exports.KeyedStore = exports.BoundaryStateStore = exports.formatCausalChain = exports.flattenCausalDAG = exports.causalChain = exports.findLastWriter = exports.findCommits = exports.findCommit = exports.walkSubflowSpec = exports.splitStageId = exports.parseRuntimeStageId = exports.createExecutionCounter = exports.buildRuntimeStageId = void 0;
34
+ exports.qualityTrace = exports.formatQualityTrace = exports.QualityRecorder = exports.ROOT_SUBFLOW_ID = exports.ROOT_RUNTIME_STAGE_ID = exports.inOutRecorder = exports.InOutRecorder = exports.topologyRecorder = exports.TopologyRecorder = exports.CommitRangeIndex = exports.SequenceStore = exports.KeyedStore = exports.BoundaryStateStore = exports.formatCausalChain = exports.flattenCausalDAG = exports.causalChain = exports.findLastWriter = exports.findCommits = exports.findCommit = exports.walkSubflowSpec = exports.splitStageId = exports.parseRuntimeStageId = exports.createExecutionCounter = exports.buildRuntimeStageId = void 0;
35
35
  var runtimeStageId_js_1 = require("./lib/engine/runtimeStageId.js");
36
36
  Object.defineProperty(exports, "buildRuntimeStageId", { enumerable: true, get: function () { return runtimeStageId_js_1.buildRuntimeStageId; } });
37
37
  Object.defineProperty(exports, "createExecutionCounter", { enumerable: true, get: function () { return runtimeStageId_js_1.createExecutionCounter; } });
@@ -60,20 +60,6 @@ var SequenceStore_js_1 = require("./lib/recorder/SequenceStore.js");
60
60
  Object.defineProperty(exports, "SequenceStore", { enumerable: true, get: function () { return SequenceStore_js_1.SequenceStore; } });
61
61
  var CommitRangeIndex_js_1 = require("./lib/recorder/CommitRangeIndex.js");
62
62
  Object.defineProperty(exports, "CommitRangeIndex", { enumerable: true, get: function () { return CommitRangeIndex_js_1.CommitRangeIndex; } });
63
- // ── Abstract bases (DEPRECATED in v5 — slated for removal) ───────
64
- // Kept during the v5 migration window for downstream consumers
65
- // (agentfootprint, agentfootprint-lens, etc.) that still extend
66
- // them. Migrate to the corresponding Store class above.
67
- // KeyedRecorder — base class for 1:1 Map-based recorders
68
- var KeyedRecorder_js_1 = require("./lib/recorder/KeyedRecorder.js");
69
- Object.defineProperty(exports, "KeyedRecorder", { enumerable: true, get: function () { return KeyedRecorder_js_1.KeyedRecorder; } });
70
- // SequenceRecorder — base class for 1:N ordered sequence recorders with keyed index
71
- var SequenceRecorder_js_1 = require("./lib/recorder/SequenceRecorder.js");
72
- Object.defineProperty(exports, "SequenceRecorder", { enumerable: true, get: function () { return SequenceRecorder_js_1.SequenceRecorder; } });
73
- // BoundaryStateTracker — base class for transient bracket-scoped state
74
- // (live state DURING a matched [start, stop] event interval; clears on stop)
75
- var BoundaryStateTracker_js_1 = require("./lib/recorder/BoundaryStateTracker.js");
76
- Object.defineProperty(exports, "BoundaryStateTracker", { enumerable: true, get: function () { return BoundaryStateTracker_js_1.BoundaryStateTracker; } });
77
63
  var TopologyRecorder_js_1 = require("./lib/recorder/TopologyRecorder.js");
78
64
  Object.defineProperty(exports, "TopologyRecorder", { enumerable: true, get: function () { return TopologyRecorder_js_1.TopologyRecorder; } });
79
65
  Object.defineProperty(exports, "topologyRecorder", { enumerable: true, get: function () { return TopologyRecorder_js_1.topologyRecorder; } });
@@ -87,4 +73,4 @@ Object.defineProperty(exports, "QualityRecorder", { enumerable: true, get: funct
87
73
  var qualityTrace_js_1 = require("./lib/recorder/qualityTrace.js");
88
74
  Object.defineProperty(exports, "formatQualityTrace", { enumerable: true, get: function () { return qualityTrace_js_1.formatQualityTrace; } });
89
75
  Object.defineProperty(exports, "qualityTrace", { enumerable: true, get: function () { return qualityTrace_js_1.qualityTrace; } });
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHJhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Qkc7OztBQUlILG9FQUt3QztBQUp0Qyx3SEFBQSxtQkFBbUIsT0FBQTtBQUNuQiwySEFBQSxzQkFBc0IsT0FBQTtBQUN0Qix3SEFBQSxtQkFBbUIsT0FBQTtBQUNuQixpSEFBQSxZQUFZLE9BQUE7QUFNZCxzRUFBa0U7QUFBekQscUhBQUEsZUFBZSxPQUFBO0FBRXhCLHdEQUF3RDtBQUN4RCxvRUFBeUY7QUFBaEYsK0dBQUEsVUFBVSxPQUFBO0FBQUUsZ0hBQUEsV0FBVyxPQUFBO0FBQUUsbUhBQUEsY0FBYyxPQUFBO0FBSWhELDBEQUE2RjtBQUFwRiwyR0FBQSxXQUFXLE9BQUE7QUFBRSxnSEFBQSxnQkFBZ0IsT0FBQTtBQUFFLGlIQUFBLGlCQUFpQixPQUFBO0FBRXpELG1FQUFtRTtBQUNuRSxpRUFBaUU7QUFDakUsaUVBQWlFO0FBQ2pFLDRDQUE0QztBQUM1Qyw4RUFBMEU7QUFBakUsMkhBQUEsa0JBQWtCLE9BQUE7QUFDM0IsOERBQTBEO0FBQWpELDJHQUFBLFVBQVUsT0FBQTtBQUNuQixvRUFBZ0U7QUFBdkQsaUhBQUEsYUFBYSxPQUFBO0FBU3RCLDBFQUFzRTtBQUE3RCx1SEFBQSxnQkFBZ0IsT0FBQTtBQUV6QixvRUFBb0U7QUFDcEUsK0RBQStEO0FBQy9ELGdFQUFnRTtBQUNoRSx3REFBd0Q7QUFDeEQseURBQXlEO0FBQ3pELG9FQUFnRTtBQUF2RCxpSEFBQSxhQUFhLE9BQUE7QUFFdEIsb0ZBQW9GO0FBQ3BGLDBFQUFzRTtBQUE3RCx1SEFBQSxnQkFBZ0IsT0FBQTtBQUV6Qix1RUFBdUU7QUFDdkUsNkVBQTZFO0FBQzdFLGtGQUE4RTtBQUFyRSwrSEFBQSxvQkFBb0IsT0FBQTtBQVU3QiwwRUFBd0Y7QUFBL0UsdUhBQUEsZ0JBQWdCLE9BQUE7QUFBRSx1SEFBQSxnQkFBZ0IsT0FBQTtBQUszQyxvRUFBdUg7QUFBOUcsaUhBQUEsYUFBYSxPQUFBO0FBQUUsaUhBQUEsYUFBYSxPQUFBO0FBQUUseUhBQUEscUJBQXFCLE9BQUE7QUFBRSxtSEFBQSxlQUFlLE9BQUE7QUFJN0Usd0VBQW9FO0FBQTNELHFIQUFBLGVBQWUsT0FBQTtBQUl4QixrRUFBa0Y7QUFBekUscUhBQUEsa0JBQWtCLE9BQUE7QUFBRSwrR0FBQSxZQUFZLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGZvb3RwcmludGpzL3RyYWNlIOKAlCBFeGVjdXRpb24gdHJhY2luZywgZGVidWdnaW5nLCBhbmQgYmFja3RyYWNraW5nIHV0aWxpdGllcy5cbiAqXG4gKiBSdW50aW1lIHN0YWdlIElEcywgY29tbWl0IGxvZyBxdWVyaWVzLCBhbmQgcmVjb3JkZXIgYmFzZSBjbGFzc2VzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBwYXJzZVJ1bnRpbWVTdGFnZUlkLCBmaW5kTGFzdFdyaXRlciwgS2V5ZWRTdG9yZSwgU2VxdWVuY2VTdG9yZSB9IGZyb20gJ2Zvb3RwcmludGpzL3RyYWNlJztcbiAqXG4gKiAvLyBQYXJzZSBhIHJ1bnRpbWVTdGFnZUlkXG4gKiBjb25zdCB7IHN0YWdlSWQsIGV4ZWN1dGlvbkluZGV4IH0gPSBwYXJzZVJ1bnRpbWVTdGFnZUlkKCdjYWxsLWxsbSM1Jyk7XG4gKlxuICogLy8gQmFja3RyYWNrOiB3aG8gd3JvdGUgJ3N5c3RlbVByb21wdCcgYmVmb3JlIGNvbW1pdCBhdCBpZHggOD9cbiAqIGNvbnN0IHdyaXRlciA9IGZpbmRMYXN0V3JpdGVyKGNvbW1pdExvZywgJ3N5c3RlbVByb21wdCcsIDgpO1xuICpcbiAqIC8vIHY1IHByaW1hcnkgQVBJOiBjb21wb3NlIGEgU3RvcmUgYXMgYSBmaWVsZCAob25lIHB1cnBvc2UgcGVyIHJlY29yZGVyKS5cbiAqIC8vIEtleWVkU3RvcmU8VD4g4oCUIDE6MSAob25lIGVudHJ5IHBlciBzdGVwKVxuICogY2xhc3MgTXlSZWNvcmRlciB7XG4gKiAgIHJlYWRvbmx5IGlkID0gJ215LXJlY29yZGVyJztcbiAqICAgcHJpdmF0ZSBzdG9yZSA9IG5ldyBLZXllZFN0b3JlPE15RW50cnk+KCk7XG4gKiAgIG9uV3JpdGUoZSkgeyB0aGlzLnN0b3JlLnNldChlLnJ1bnRpbWVTdGFnZUlkLCB7IC4uLiB9KTsgfVxuICogfVxuICpcbiAqIC8vIFNlcXVlbmNlU3RvcmU8VD4g4oCUIDE6TiAobXVsdGlwbGUgZW50cmllcyBwZXIgc3RlcCwgb3JkZXJpbmcgbWF0dGVycylcbiAqIGNsYXNzIEF1ZGl0UmVjb3JkZXIge1xuICogICByZWFkb25seSBpZCA9ICdhdWRpdCc7XG4gKiAgIHByaXZhdGUgc3RvcmUgPSBuZXcgU2VxdWVuY2VTdG9yZTxBdWRpdEVudHJ5PigpO1xuICogICBvblJlYWQoZSkgeyB0aGlzLnN0b3JlLnB1c2goeyBydW50aW1lU3RhZ2VJZDogZS5ydW50aW1lU3RhZ2VJZCwgLi4uIH0pOyB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuXG4vLyBSdW50aW1lIHN0YWdlIElEIOKAlCB1bmlxdWUgZXhlY3V0aW9uIHN0ZXAgaWRlbnRpZmllcnNcbmV4cG9ydCB0eXBlIHsgRXhlY3V0aW9uQ291bnRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9ydW50aW1lU3RhZ2VJZC5qcyc7XG5leHBvcnQge1xuICBidWlsZFJ1bnRpbWVTdGFnZUlkLFxuICBjcmVhdGVFeGVjdXRpb25Db3VudGVyLFxuICBwYXJzZVJ1bnRpbWVTdGFnZUlkLFxuICBzcGxpdFN0YWdlSWQsXG59IGZyb20gJy4vbGliL2VuZ2luZS9ydW50aW1lU3RhZ2VJZC5qcyc7XG5cbi8vIHdhbGtTdWJmbG93U3BlYyDigJQgZmxhdCBvcmRlcmVkIHRyYXZlcnNhbCBvZiBhIHN1YmZsb3cncyBzdHJ1Y3R1cmVcbi8vIChjb25zdW1lIHZpYSBTdHJ1Y3R1cmVSZWNvcmRlci5vblN1YmZsb3dNb3VudGVkJ3Mgc3ViZmxvd1NwZWMgcGF5bG9hZClcbmV4cG9ydCB0eXBlIHsgV2Fsa2VySXRlbSwgV2Fsa2VyT3B0aW9ucyB9IGZyb20gJy4vbGliL2VuZ2luZS93YWxrU3ViZmxvd1NwZWMuanMnO1xuZXhwb3J0IHsgd2Fsa1N1YmZsb3dTcGVjIH0gZnJvbSAnLi9saWIvZW5naW5lL3dhbGtTdWJmbG93U3BlYy5qcyc7XG5cbi8vIENvbW1pdCBsb2cgcXVlcmllcyDigJQgdHlwZWQgdXRpbGl0aWVzIGZvciBiYWNrdHJhY2tpbmdcbmV4cG9ydCB7IGZpbmRDb21taXQsIGZpbmRDb21taXRzLCBmaW5kTGFzdFdyaXRlciB9IGZyb20gJy4vbGliL21lbW9yeS9jb21taXRMb2dVdGlscy5qcyc7XG5cbi8vIENhdXNhbCBjaGFpbiDigJQgYmFja3dhcmQgcHJvZ3JhbSBzbGljaW5nIG9uIGNvbW1pdCBsb2cgKERBRylcbmV4cG9ydCB0eXBlIHsgQ2F1c2FsQ2hhaW5PcHRpb25zLCBDYXVzYWxOb2RlLCBLZXlzUmVhZExvb2t1cCB9IGZyb20gJy4vbGliL21lbW9yeS9iYWNrdHJhY2suanMnO1xuZXhwb3J0IHsgY2F1c2FsQ2hhaW4sIGZsYXR0ZW5DYXVzYWxEQUcsIGZvcm1hdENhdXNhbENoYWluIH0gZnJvbSAnLi9saWIvbWVtb3J5L2JhY2t0cmFjay5qcyc7XG5cbi8vIOKUgOKUgCB2NSBTdG9yZXMgKGNvbmNyZXRlLCBjb21wb3NhYmxlIOKAlCBwcmltYXJ5IHJlY29yZGVyIEFQSSkg4pSA4pSA4pSA4pSA4pSAXG4vLyBDb21wb3NlIHRoZXNlIHZpYSBgbmV3IFN0b3JlPFQ+KClgIGFzIGEgZmllbGQgb24geW91ciByZWNvcmRlclxuLy8gY2xhc3MuIE9uZSBwdXJwb3NlIHBlciByZWNvcmRlcjogc3RvcmVzIGFyZSBzdG9yYWdlOyByZWNvcmRlcnNcbi8vIGFyZSBldmVudC1ob29rIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbnMuXG5leHBvcnQgeyBCb3VuZGFyeVN0YXRlU3RvcmUgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9Cb3VuZGFyeVN0YXRlU3RvcmUuanMnO1xuZXhwb3J0IHsgS2V5ZWRTdG9yZSB9IGZyb20gJy4vbGliL3JlY29yZGVyL0tleWVkU3RvcmUuanMnO1xuZXhwb3J0IHsgU2VxdWVuY2VTdG9yZSB9IGZyb20gJy4vbGliL3JlY29yZGVyL1NlcXVlbmNlU3RvcmUuanMnO1xuXG4vLyDilIDilIAgdjUuMSBDb21taXQgZ3JvdXBpbmcgcHJpbWl0aXZlIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gSW50ZXJ2YWwgaW5kZXggb3ZlciBjb21taXQgaW5kaWNlcy4gQnVpbHQgaW5jcmVtZW50YWxseSBkdXJpbmdcbi8vIHRyYXZlcnNhbDogb3BlbigpIG9uIGJvdW5kYXJ5IGVudHJ5LCBjbG9zZSgpIG9uIGV4aXQuIFF1ZXJ5IGF0IGFueVxuLy8gY29tbWl0IHBvc2l0aW9uIHdpdGggZW5jbG9zaW5nKCkvb3ZlcmxhcHBpbmcoKS4gR2VuZXJpYyBvdmVyIFRMYWJlbFxuLy8g4oCUIGZvb3RwcmludGpzIG93bnMgWkVSTyBrbm93bGVkZ2Ugb2Ygd2hhdCBjb25zdW1lcnMgdXNlIGFzIGxhYmVscy5cbi8vIFNlZSBkb2NzL2Rlc2lnbi9jb21taXQtcmFuZ2UtaW5kZXgubWQgZm9yIHRoZSBmdWxsIGNvbnRyYWN0LlxuZXhwb3J0IHR5cGUgeyBSYW5nZUVudHJ5LCBSYW5nZVRva2VuIH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvQ29tbWl0UmFuZ2VJbmRleC5qcyc7XG5leHBvcnQgeyBDb21taXRSYW5nZUluZGV4IH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvQ29tbWl0UmFuZ2VJbmRleC5qcyc7XG5cbi8vIOKUgOKUgCBBYnN0cmFjdCBiYXNlcyAoREVQUkVDQVRFRCBpbiB2NSDigJQgc2xhdGVkIGZvciByZW1vdmFsKSDilIDilIDilIDilIDilIDilIDilIBcbi8vIEtlcHQgZHVyaW5nIHRoZSB2NSBtaWdyYXRpb24gd2luZG93IGZvciBkb3duc3RyZWFtIGNvbnN1bWVyc1xuLy8gKGFnZW50Zm9vdHByaW50LCBhZ2VudGZvb3RwcmludC1sZW5zLCBldGMuKSB0aGF0IHN0aWxsIGV4dGVuZFxuLy8gdGhlbS4gTWlncmF0ZSB0byB0aGUgY29ycmVzcG9uZGluZyBTdG9yZSBjbGFzcyBhYm92ZS5cbi8vIEtleWVkUmVjb3JkZXIg4oCUIGJhc2UgY2xhc3MgZm9yIDE6MSBNYXAtYmFzZWQgcmVjb3JkZXJzXG5leHBvcnQgeyBLZXllZFJlY29yZGVyIH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvS2V5ZWRSZWNvcmRlci5qcyc7XG5cbi8vIFNlcXVlbmNlUmVjb3JkZXIg4oCUIGJhc2UgY2xhc3MgZm9yIDE6TiBvcmRlcmVkIHNlcXVlbmNlIHJlY29yZGVycyB3aXRoIGtleWVkIGluZGV4XG5leHBvcnQgeyBTZXF1ZW5jZVJlY29yZGVyIH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvU2VxdWVuY2VSZWNvcmRlci5qcyc7XG5cbi8vIEJvdW5kYXJ5U3RhdGVUcmFja2VyIOKAlCBiYXNlIGNsYXNzIGZvciB0cmFuc2llbnQgYnJhY2tldC1zY29wZWQgc3RhdGVcbi8vIChsaXZlIHN0YXRlIERVUklORyBhIG1hdGNoZWQgW3N0YXJ0LCBzdG9wXSBldmVudCBpbnRlcnZhbDsgY2xlYXJzIG9uIHN0b3ApXG5leHBvcnQgeyBCb3VuZGFyeVN0YXRlVHJhY2tlciB9IGZyb20gJy4vbGliL3JlY29yZGVyL0JvdW5kYXJ5U3RhdGVUcmFja2VyLmpzJztcblxuLy8gVG9wb2xvZ3lSZWNvcmRlciDigJQgY29tcG9zaXRpb24gZ3JhcGggYWNjdW11bGF0b3IgKHN1YmZsb3dzICsgY29udHJvbC1mbG93IGVkZ2VzKVxuZXhwb3J0IHR5cGUge1xuICBUb3BvbG9neSxcbiAgVG9wb2xvZ3lFZGdlLFxuICBUb3BvbG9neUluY29taW5nS2luZCxcbiAgVG9wb2xvZ3lOb2RlLFxuICBUb3BvbG9neVJlY29yZGVyT3B0aW9ucyxcbn0gZnJvbSAnLi9saWIvcmVjb3JkZXIvVG9wb2xvZ3lSZWNvcmRlci5qcyc7XG5leHBvcnQgeyBUb3BvbG9neVJlY29yZGVyLCB0b3BvbG9neVJlY29yZGVyIH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvVG9wb2xvZ3lSZWNvcmRlci5qcyc7XG5cbi8vIEluT3V0UmVjb3JkZXIg4oCUIGNoYXJ0IGluL291dCBzdHJlYW0gKGVudHJ5L2V4aXQgcGFpcnMgYXQgZXZlcnkgY2hhcnQgYm91bmRhcnksXG4vLyBpbmNsdWRpbmcgdGhlIHRvcC1sZXZlbCBydW4gYW5kIGV2ZXJ5IHN1YmZsb3cpXG5leHBvcnQgdHlwZSB7IEluT3V0RW50cnksIEluT3V0UGhhc2UsIEluT3V0UmVjb3JkZXJPcHRpb25zIH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvSW5PdXRSZWNvcmRlci5qcyc7XG5leHBvcnQgeyBJbk91dFJlY29yZGVyLCBpbk91dFJlY29yZGVyLCBST09UX1JVTlRJTUVfU1RBR0VfSUQsIFJPT1RfU1VCRkxPV19JRCB9IGZyb20gJy4vbGliL3JlY29yZGVyL0luT3V0UmVjb3JkZXIuanMnO1xuXG4vLyBRdWFsaXR5UmVjb3JkZXIg4oCUIHBlci1zdGVwIHF1YWxpdHkgc2NvcmluZyB3aXRoIGJhY2t0cmFja2luZ1xuZXhwb3J0IHR5cGUgeyBRdWFsaXR5RW50cnksIFF1YWxpdHlSZWNvcmRlck9wdGlvbnMsIFF1YWxpdHlTY29yaW5nRm4gfSBmcm9tICcuL2xpYi9yZWNvcmRlci9RdWFsaXR5UmVjb3JkZXIuanMnO1xuZXhwb3J0IHsgUXVhbGl0eVJlY29yZGVyIH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvUXVhbGl0eVJlY29yZGVyLmpzJztcblxuLy8gcXVhbGl0eVRyYWNlIOKAlCBRdWFsaXR5IFN0YWNrIFRyYWNlIChiYWNrdHJhY2sgZnJvbSBsb3ctc2NvcmluZyBzdGVwcylcbmV4cG9ydCB0eXBlIHsgUXVhbGl0eUZyYW1lLCBRdWFsaXR5U3RhY2tUcmFjZSB9IGZyb20gJy4vbGliL3JlY29yZGVyL3F1YWxpdHlUcmFjZS5qcyc7XG5leHBvcnQgeyBmb3JtYXRRdWFsaXR5VHJhY2UsIHF1YWxpdHlUcmFjZSB9IGZyb20gJy4vbGliL3JlY29yZGVyL3F1YWxpdHlUcmFjZS5qcyc7XG4iXX0=
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHJhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Qkc7OztBQUlILG9FQUt3QztBQUp0Qyx3SEFBQSxtQkFBbUIsT0FBQTtBQUNuQiwySEFBQSxzQkFBc0IsT0FBQTtBQUN0Qix3SEFBQSxtQkFBbUIsT0FBQTtBQUNuQixpSEFBQSxZQUFZLE9BQUE7QUFNZCxzRUFBa0U7QUFBekQscUhBQUEsZUFBZSxPQUFBO0FBRXhCLHdEQUF3RDtBQUN4RCxvRUFBeUY7QUFBaEYsK0dBQUEsVUFBVSxPQUFBO0FBQUUsZ0hBQUEsV0FBVyxPQUFBO0FBQUUsbUhBQUEsY0FBYyxPQUFBO0FBSWhELDBEQUE2RjtBQUFwRiwyR0FBQSxXQUFXLE9BQUE7QUFBRSxnSEFBQSxnQkFBZ0IsT0FBQTtBQUFFLGlIQUFBLGlCQUFpQixPQUFBO0FBRXpELG1FQUFtRTtBQUNuRSxpRUFBaUU7QUFDakUsaUVBQWlFO0FBQ2pFLDRDQUE0QztBQUM1Qyw4RUFBMEU7QUFBakUsMkhBQUEsa0JBQWtCLE9BQUE7QUFDM0IsOERBQTBEO0FBQWpELDJHQUFBLFVBQVUsT0FBQTtBQUNuQixvRUFBZ0U7QUFBdkQsaUhBQUEsYUFBYSxPQUFBO0FBU3RCLDBFQUFzRTtBQUE3RCx1SEFBQSxnQkFBZ0IsT0FBQTtBQVV6QiwwRUFBd0Y7QUFBL0UsdUhBQUEsZ0JBQWdCLE9BQUE7QUFBRSx1SEFBQSxnQkFBZ0IsT0FBQTtBQUszQyxvRUFBdUg7QUFBOUcsaUhBQUEsYUFBYSxPQUFBO0FBQUUsaUhBQUEsYUFBYSxPQUFBO0FBQUUseUhBQUEscUJBQXFCLE9BQUE7QUFBRSxtSEFBQSxlQUFlLE9BQUE7QUFJN0Usd0VBQW9FO0FBQTNELHFIQUFBLGVBQWUsT0FBQTtBQUl4QixrRUFBa0Y7QUFBekUscUhBQUEsa0JBQWtCLE9BQUE7QUFBRSwrR0FBQSxZQUFZLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGZvb3RwcmludGpzL3RyYWNlIOKAlCBFeGVjdXRpb24gdHJhY2luZywgZGVidWdnaW5nLCBhbmQgYmFja3RyYWNraW5nIHV0aWxpdGllcy5cbiAqXG4gKiBSdW50aW1lIHN0YWdlIElEcywgY29tbWl0IGxvZyBxdWVyaWVzLCBhbmQgcmVjb3JkZXIgYmFzZSBjbGFzc2VzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBwYXJzZVJ1bnRpbWVTdGFnZUlkLCBmaW5kTGFzdFdyaXRlciwgS2V5ZWRTdG9yZSwgU2VxdWVuY2VTdG9yZSB9IGZyb20gJ2Zvb3RwcmludGpzL3RyYWNlJztcbiAqXG4gKiAvLyBQYXJzZSBhIHJ1bnRpbWVTdGFnZUlkXG4gKiBjb25zdCB7IHN0YWdlSWQsIGV4ZWN1dGlvbkluZGV4IH0gPSBwYXJzZVJ1bnRpbWVTdGFnZUlkKCdjYWxsLWxsbSM1Jyk7XG4gKlxuICogLy8gQmFja3RyYWNrOiB3aG8gd3JvdGUgJ3N5c3RlbVByb21wdCcgYmVmb3JlIGNvbW1pdCBhdCBpZHggOD9cbiAqIGNvbnN0IHdyaXRlciA9IGZpbmRMYXN0V3JpdGVyKGNvbW1pdExvZywgJ3N5c3RlbVByb21wdCcsIDgpO1xuICpcbiAqIC8vIHY1IHByaW1hcnkgQVBJOiBjb21wb3NlIGEgU3RvcmUgYXMgYSBmaWVsZCAob25lIHB1cnBvc2UgcGVyIHJlY29yZGVyKS5cbiAqIC8vIEtleWVkU3RvcmU8VD4g4oCUIDE6MSAob25lIGVudHJ5IHBlciBzdGVwKVxuICogY2xhc3MgTXlSZWNvcmRlciB7XG4gKiAgIHJlYWRvbmx5IGlkID0gJ215LXJlY29yZGVyJztcbiAqICAgcHJpdmF0ZSBzdG9yZSA9IG5ldyBLZXllZFN0b3JlPE15RW50cnk+KCk7XG4gKiAgIG9uV3JpdGUoZSkgeyB0aGlzLnN0b3JlLnNldChlLnJ1bnRpbWVTdGFnZUlkLCB7IC4uLiB9KTsgfVxuICogfVxuICpcbiAqIC8vIFNlcXVlbmNlU3RvcmU8VD4g4oCUIDE6TiAobXVsdGlwbGUgZW50cmllcyBwZXIgc3RlcCwgb3JkZXJpbmcgbWF0dGVycylcbiAqIGNsYXNzIEF1ZGl0UmVjb3JkZXIge1xuICogICByZWFkb25seSBpZCA9ICdhdWRpdCc7XG4gKiAgIHByaXZhdGUgc3RvcmUgPSBuZXcgU2VxdWVuY2VTdG9yZTxBdWRpdEVudHJ5PigpO1xuICogICBvblJlYWQoZSkgeyB0aGlzLnN0b3JlLnB1c2goeyBydW50aW1lU3RhZ2VJZDogZS5ydW50aW1lU3RhZ2VJZCwgLi4uIH0pOyB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuXG4vLyBSdW50aW1lIHN0YWdlIElEIOKAlCB1bmlxdWUgZXhlY3V0aW9uIHN0ZXAgaWRlbnRpZmllcnNcbmV4cG9ydCB0eXBlIHsgRXhlY3V0aW9uQ291bnRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9ydW50aW1lU3RhZ2VJZC5qcyc7XG5leHBvcnQge1xuICBidWlsZFJ1bnRpbWVTdGFnZUlkLFxuICBjcmVhdGVFeGVjdXRpb25Db3VudGVyLFxuICBwYXJzZVJ1bnRpbWVTdGFnZUlkLFxuICBzcGxpdFN0YWdlSWQsXG59IGZyb20gJy4vbGliL2VuZ2luZS9ydW50aW1lU3RhZ2VJZC5qcyc7XG5cbi8vIHdhbGtTdWJmbG93U3BlYyDigJQgZmxhdCBvcmRlcmVkIHRyYXZlcnNhbCBvZiBhIHN1YmZsb3cncyBzdHJ1Y3R1cmVcbi8vIChjb25zdW1lIHZpYSBTdHJ1Y3R1cmVSZWNvcmRlci5vblN1YmZsb3dNb3VudGVkJ3Mgc3ViZmxvd1NwZWMgcGF5bG9hZClcbmV4cG9ydCB0eXBlIHsgV2Fsa2VySXRlbSwgV2Fsa2VyT3B0aW9ucyB9IGZyb20gJy4vbGliL2VuZ2luZS93YWxrU3ViZmxvd1NwZWMuanMnO1xuZXhwb3J0IHsgd2Fsa1N1YmZsb3dTcGVjIH0gZnJvbSAnLi9saWIvZW5naW5lL3dhbGtTdWJmbG93U3BlYy5qcyc7XG5cbi8vIENvbW1pdCBsb2cgcXVlcmllcyDigJQgdHlwZWQgdXRpbGl0aWVzIGZvciBiYWNrdHJhY2tpbmdcbmV4cG9ydCB7IGZpbmRDb21taXQsIGZpbmRDb21taXRzLCBmaW5kTGFzdFdyaXRlciB9IGZyb20gJy4vbGliL21lbW9yeS9jb21taXRMb2dVdGlscy5qcyc7XG5cbi8vIENhdXNhbCBjaGFpbiDigJQgYmFja3dhcmQgcHJvZ3JhbSBzbGljaW5nIG9uIGNvbW1pdCBsb2cgKERBRylcbmV4cG9ydCB0eXBlIHsgQ2F1c2FsQ2hhaW5PcHRpb25zLCBDYXVzYWxOb2RlLCBLZXlzUmVhZExvb2t1cCB9IGZyb20gJy4vbGliL21lbW9yeS9iYWNrdHJhY2suanMnO1xuZXhwb3J0IHsgY2F1c2FsQ2hhaW4sIGZsYXR0ZW5DYXVzYWxEQUcsIGZvcm1hdENhdXNhbENoYWluIH0gZnJvbSAnLi9saWIvbWVtb3J5L2JhY2t0cmFjay5qcyc7XG5cbi8vIOKUgOKUgCB2NSBTdG9yZXMgKGNvbmNyZXRlLCBjb21wb3NhYmxlIOKAlCBwcmltYXJ5IHJlY29yZGVyIEFQSSkg4pSA4pSA4pSA4pSA4pSAXG4vLyBDb21wb3NlIHRoZXNlIHZpYSBgbmV3IFN0b3JlPFQ+KClgIGFzIGEgZmllbGQgb24geW91ciByZWNvcmRlclxuLy8gY2xhc3MuIE9uZSBwdXJwb3NlIHBlciByZWNvcmRlcjogc3RvcmVzIGFyZSBzdG9yYWdlOyByZWNvcmRlcnNcbi8vIGFyZSBldmVudC1ob29rIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbnMuXG5leHBvcnQgeyBCb3VuZGFyeVN0YXRlU3RvcmUgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9Cb3VuZGFyeVN0YXRlU3RvcmUuanMnO1xuZXhwb3J0IHsgS2V5ZWRTdG9yZSB9IGZyb20gJy4vbGliL3JlY29yZGVyL0tleWVkU3RvcmUuanMnO1xuZXhwb3J0IHsgU2VxdWVuY2VTdG9yZSB9IGZyb20gJy4vbGliL3JlY29yZGVyL1NlcXVlbmNlU3RvcmUuanMnO1xuXG4vLyDilIDilIAgdjUuMSBDb21taXQgZ3JvdXBpbmcgcHJpbWl0aXZlIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gSW50ZXJ2YWwgaW5kZXggb3ZlciBjb21taXQgaW5kaWNlcy4gQnVpbHQgaW5jcmVtZW50YWxseSBkdXJpbmdcbi8vIHRyYXZlcnNhbDogb3BlbigpIG9uIGJvdW5kYXJ5IGVudHJ5LCBjbG9zZSgpIG9uIGV4aXQuIFF1ZXJ5IGF0IGFueVxuLy8gY29tbWl0IHBvc2l0aW9uIHdpdGggZW5jbG9zaW5nKCkvb3ZlcmxhcHBpbmcoKS4gR2VuZXJpYyBvdmVyIFRMYWJlbFxuLy8g4oCUIGZvb3RwcmludGpzIG93bnMgWkVSTyBrbm93bGVkZ2Ugb2Ygd2hhdCBjb25zdW1lcnMgdXNlIGFzIGxhYmVscy5cbi8vIFNlZSBkb2NzL2Rlc2lnbi9jb21taXQtcmFuZ2UtaW5kZXgubWQgZm9yIHRoZSBmdWxsIGNvbnRyYWN0LlxuZXhwb3J0IHR5cGUgeyBSYW5nZUVudHJ5LCBSYW5nZVRva2VuIH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvQ29tbWl0UmFuZ2VJbmRleC5qcyc7XG5leHBvcnQgeyBDb21taXRSYW5nZUluZGV4IH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvQ29tbWl0UmFuZ2VJbmRleC5qcyc7XG5cbi8vIFRvcG9sb2d5UmVjb3JkZXIg4oCUIGNvbXBvc2l0aW9uIGdyYXBoIGFjY3VtdWxhdG9yIChzdWJmbG93cyArIGNvbnRyb2wtZmxvdyBlZGdlcylcbmV4cG9ydCB0eXBlIHtcbiAgVG9wb2xvZ3ksXG4gIFRvcG9sb2d5RWRnZSxcbiAgVG9wb2xvZ3lJbmNvbWluZ0tpbmQsXG4gIFRvcG9sb2d5Tm9kZSxcbiAgVG9wb2xvZ3lSZWNvcmRlck9wdGlvbnMsXG59IGZyb20gJy4vbGliL3JlY29yZGVyL1RvcG9sb2d5UmVjb3JkZXIuanMnO1xuZXhwb3J0IHsgVG9wb2xvZ3lSZWNvcmRlciwgdG9wb2xvZ3lSZWNvcmRlciB9IGZyb20gJy4vbGliL3JlY29yZGVyL1RvcG9sb2d5UmVjb3JkZXIuanMnO1xuXG4vLyBJbk91dFJlY29yZGVyIOKAlCBjaGFydCBpbi9vdXQgc3RyZWFtIChlbnRyeS9leGl0IHBhaXJzIGF0IGV2ZXJ5IGNoYXJ0IGJvdW5kYXJ5LFxuLy8gaW5jbHVkaW5nIHRoZSB0b3AtbGV2ZWwgcnVuIGFuZCBldmVyeSBzdWJmbG93KVxuZXhwb3J0IHR5cGUgeyBJbk91dEVudHJ5LCBJbk91dFBoYXNlLCBJbk91dFJlY29yZGVyT3B0aW9ucyB9IGZyb20gJy4vbGliL3JlY29yZGVyL0luT3V0UmVjb3JkZXIuanMnO1xuZXhwb3J0IHsgSW5PdXRSZWNvcmRlciwgaW5PdXRSZWNvcmRlciwgUk9PVF9SVU5USU1FX1NUQUdFX0lELCBST09UX1NVQkZMT1dfSUQgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9Jbk91dFJlY29yZGVyLmpzJztcblxuLy8gUXVhbGl0eVJlY29yZGVyIOKAlCBwZXItc3RlcCBxdWFsaXR5IHNjb3Jpbmcgd2l0aCBiYWNrdHJhY2tpbmdcbmV4cG9ydCB0eXBlIHsgUXVhbGl0eUVudHJ5LCBRdWFsaXR5UmVjb3JkZXJPcHRpb25zLCBRdWFsaXR5U2NvcmluZ0ZuIH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvUXVhbGl0eVJlY29yZGVyLmpzJztcbmV4cG9ydCB7IFF1YWxpdHlSZWNvcmRlciB9IGZyb20gJy4vbGliL3JlY29yZGVyL1F1YWxpdHlSZWNvcmRlci5qcyc7XG5cbi8vIHF1YWxpdHlUcmFjZSDigJQgUXVhbGl0eSBTdGFjayBUcmFjZSAoYmFja3RyYWNrIGZyb20gbG93LXNjb3Jpbmcgc3RlcHMpXG5leHBvcnQgdHlwZSB7IFF1YWxpdHlGcmFtZSwgUXVhbGl0eVN0YWNrVHJhY2UgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9xdWFsaXR5VHJhY2UuanMnO1xuZXhwb3J0IHsgZm9ybWF0UXVhbGl0eVRyYWNlLCBxdWFsaXR5VHJhY2UgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9xdWFsaXR5VHJhY2UuanMnO1xuIl19