@gzeoneth/gov-tracker 0.4.0-beta.fb8713f → 0.5.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 (197) hide show
  1. package/README.md +94 -7
  2. package/dist/abis-json.d.ts +2315 -0
  3. package/dist/abis-json.d.ts.map +1 -0
  4. package/dist/abis-json.js +3207 -0
  5. package/dist/abis-json.js.map +1 -0
  6. package/dist/abis.d.ts +12 -7
  7. package/dist/abis.d.ts.map +1 -1
  8. package/dist/abis.js +32 -1
  9. package/dist/abis.js.map +1 -1
  10. package/dist/calldata/parameter-decoder.d.ts.map +1 -1
  11. package/dist/calldata/parameter-decoder.js +19 -25
  12. package/dist/calldata/parameter-decoder.js.map +1 -1
  13. package/dist/cli/cli.js +73 -1
  14. package/dist/cli/cli.js.map +1 -1
  15. package/dist/cli/lib/cli.d.ts.map +1 -1
  16. package/dist/cli/lib/cli.js +3 -2
  17. package/dist/cli/lib/cli.js.map +1 -1
  18. package/dist/cli/lib/election-check.d.ts.map +1 -1
  19. package/dist/cli/lib/election-check.js +2 -1
  20. package/dist/cli/lib/election-check.js.map +1 -1
  21. package/dist/cli/tui/components/VotingStats.d.ts.map +1 -1
  22. package/dist/cli/tui/components/VotingStats.js +2 -1
  23. package/dist/cli/tui/components/VotingStats.js.map +1 -1
  24. package/dist/cli/tui/hooks/useNavigation.d.ts.map +1 -1
  25. package/dist/cli/tui/hooks/useNavigation.js +2 -3
  26. package/dist/cli/tui/hooks/useNavigation.js.map +1 -1
  27. package/dist/cli/tui/hooks/useProposals.js +2 -2
  28. package/dist/cli/tui/hooks/useProposals.js.map +1 -1
  29. package/dist/cli/tui/utils/index.d.ts +2 -2
  30. package/dist/cli/tui/utils/index.d.ts.map +1 -1
  31. package/dist/cli/tui/utils/index.js +5 -1
  32. package/dist/cli/tui/utils/index.js.map +1 -1
  33. package/dist/cli/tui/utils/navigation.d.ts +1 -0
  34. package/dist/cli/tui/utils/navigation.d.ts.map +1 -1
  35. package/dist/cli/tui/utils/navigation.js +4 -4
  36. package/dist/cli/tui/utils/navigation.js.map +1 -1
  37. package/dist/cli/tui/utils/stage-status.d.ts +4 -0
  38. package/dist/cli/tui/utils/stage-status.d.ts.map +1 -1
  39. package/dist/cli/tui/utils/stage-status.js +47 -1
  40. package/dist/cli/tui/utils/stage-status.js.map +1 -1
  41. package/dist/cli/tui/views/CalldataView.d.ts.map +1 -1
  42. package/dist/cli/tui/views/CalldataView.js +3 -2
  43. package/dist/cli/tui/views/CalldataView.js.map +1 -1
  44. package/dist/cli/tui/views/ElectionView.d.ts.map +1 -1
  45. package/dist/cli/tui/views/ElectionView.js +4 -9
  46. package/dist/cli/tui/views/ElectionView.js.map +1 -1
  47. package/dist/constants.d.ts +43 -22
  48. package/dist/constants.d.ts.map +1 -1
  49. package/dist/constants.js +62 -17
  50. package/dist/constants.js.map +1 -1
  51. package/dist/data/bundled-cache.json +393 -20
  52. package/dist/data/delegate-cache.json +118014 -0
  53. package/dist/deduplication.d.ts.map +1 -1
  54. package/dist/deduplication.js +28 -51
  55. package/dist/deduplication.js.map +1 -1
  56. package/dist/delegates/cache.d.ts +44 -0
  57. package/dist/delegates/cache.d.ts.map +1 -0
  58. package/dist/delegates/cache.js +202 -0
  59. package/dist/delegates/cache.js.map +1 -0
  60. package/dist/delegates/index.d.ts +13 -0
  61. package/dist/delegates/index.d.ts.map +1 -0
  62. package/dist/delegates/index.js +32 -0
  63. package/dist/delegates/index.js.map +1 -0
  64. package/dist/delegates/indexer.d.ts +32 -0
  65. package/dist/delegates/indexer.d.ts.map +1 -0
  66. package/dist/delegates/indexer.js +191 -0
  67. package/dist/delegates/indexer.js.map +1 -0
  68. package/dist/delegates/queries.d.ts +30 -0
  69. package/dist/delegates/queries.d.ts.map +1 -0
  70. package/dist/delegates/queries.js +79 -0
  71. package/dist/delegates/queries.js.map +1 -0
  72. package/dist/discovery/governor-discovery.d.ts +21 -1
  73. package/dist/discovery/governor-discovery.d.ts.map +1 -1
  74. package/dist/discovery/governor-discovery.js +46 -12
  75. package/dist/discovery/governor-discovery.js.map +1 -1
  76. package/dist/discovery/timelock-discovery.d.ts.map +1 -1
  77. package/dist/discovery/timelock-discovery.js +1 -2
  78. package/dist/discovery/timelock-discovery.js.map +1 -1
  79. package/dist/election/details.d.ts.map +1 -1
  80. package/dist/election/details.js +2 -2
  81. package/dist/election/details.js.map +1 -1
  82. package/dist/election/index.d.ts +3 -1
  83. package/dist/election/index.d.ts.map +1 -1
  84. package/dist/election/index.js +12 -1
  85. package/dist/election/index.js.map +1 -1
  86. package/dist/election/params.d.ts.map +1 -1
  87. package/dist/election/params.js +11 -16
  88. package/dist/election/params.js.map +1 -1
  89. package/dist/election/proposal-ids.js +2 -2
  90. package/dist/election/proposal-ids.js.map +1 -1
  91. package/dist/election/status.d.ts +28 -1
  92. package/dist/election/status.d.ts.map +1 -1
  93. package/dist/election/status.js +110 -3
  94. package/dist/election/status.js.map +1 -1
  95. package/dist/election/write.d.ts +132 -0
  96. package/dist/election/write.d.ts.map +1 -0
  97. package/dist/election/write.js +184 -0
  98. package/dist/election/write.js.map +1 -0
  99. package/dist/governance/index.d.ts +5 -0
  100. package/dist/governance/index.d.ts.map +1 -0
  101. package/dist/governance/index.js +28 -0
  102. package/dist/governance/index.js.map +1 -0
  103. package/dist/governance/read.d.ts +50 -0
  104. package/dist/governance/read.d.ts.map +1 -0
  105. package/dist/governance/read.js +194 -0
  106. package/dist/governance/read.js.map +1 -0
  107. package/dist/governance/write.d.ts +54 -0
  108. package/dist/governance/write.d.ts.map +1 -0
  109. package/dist/governance/write.js +132 -0
  110. package/dist/governance/write.js.map +1 -0
  111. package/dist/index.d.ts +40 -21
  112. package/dist/index.d.ts.map +1 -1
  113. package/dist/index.js +149 -13
  114. package/dist/index.js.map +1 -1
  115. package/dist/simulation/index.d.ts +4 -1
  116. package/dist/simulation/index.d.ts.map +1 -1
  117. package/dist/simulation/index.js +5 -1
  118. package/dist/simulation/index.js.map +1 -1
  119. package/dist/simulation/simulation-data.d.ts +31 -0
  120. package/dist/simulation/simulation-data.d.ts.map +1 -1
  121. package/dist/simulation/simulation-data.js +34 -0
  122. package/dist/simulation/simulation-data.js.map +1 -1
  123. package/dist/simulation/tenderly-payloads.d.ts +107 -0
  124. package/dist/simulation/tenderly-payloads.d.ts.map +1 -0
  125. package/dist/simulation/tenderly-payloads.js +103 -0
  126. package/dist/simulation/tenderly-payloads.js.map +1 -0
  127. package/dist/stages/l2-to-l1-message.d.ts.map +1 -1
  128. package/dist/stages/l2-to-l1-message.js +40 -60
  129. package/dist/stages/l2-to-l1-message.js.map +1 -1
  130. package/dist/stages/proposal-queued.js.map +1 -1
  131. package/dist/stages/retryables.js.map +1 -1
  132. package/dist/stages/timelock.d.ts +41 -3
  133. package/dist/stages/timelock.d.ts.map +1 -1
  134. package/dist/stages/timelock.js +159 -48
  135. package/dist/stages/timelock.js.map +1 -1
  136. package/dist/stages/utils.d.ts +56 -1
  137. package/dist/stages/utils.d.ts.map +1 -1
  138. package/dist/stages/utils.js +144 -28
  139. package/dist/stages/utils.js.map +1 -1
  140. package/dist/tracker/bundled-cache.d.ts +136 -0
  141. package/dist/tracker/bundled-cache.d.ts.map +1 -0
  142. package/dist/tracker/bundled-cache.js +207 -0
  143. package/dist/tracker/bundled-cache.js.map +1 -0
  144. package/dist/tracker/checkpoint-helpers.d.ts +18 -0
  145. package/dist/tracker/checkpoint-helpers.d.ts.map +1 -1
  146. package/dist/tracker/checkpoint-helpers.js +37 -0
  147. package/dist/tracker/checkpoint-helpers.js.map +1 -1
  148. package/dist/tracker/discovery.d.ts +3 -0
  149. package/dist/tracker/discovery.d.ts.map +1 -1
  150. package/dist/tracker/discovery.js +3 -0
  151. package/dist/tracker/discovery.js.map +1 -1
  152. package/dist/tracker/pipeline.d.ts +3 -10
  153. package/dist/tracker/pipeline.d.ts.map +1 -1
  154. package/dist/tracker/pipeline.js +18 -32
  155. package/dist/tracker/pipeline.js.map +1 -1
  156. package/dist/tracker.d.ts +27 -4
  157. package/dist/tracker.d.ts.map +1 -1
  158. package/dist/tracker.js +47 -14
  159. package/dist/tracker.js.map +1 -1
  160. package/dist/types/config.d.ts +39 -3
  161. package/dist/types/config.d.ts.map +1 -1
  162. package/dist/types/delegates.d.ts +55 -0
  163. package/dist/types/delegates.d.ts.map +1 -0
  164. package/dist/types/delegates.js +9 -0
  165. package/dist/types/delegates.js.map +1 -0
  166. package/dist/types/election.d.ts +23 -0
  167. package/dist/types/election.d.ts.map +1 -1
  168. package/dist/types/index.d.ts +3 -2
  169. package/dist/types/index.d.ts.map +1 -1
  170. package/dist/types/index.js.map +1 -1
  171. package/dist/types/tracking.d.ts +2 -2
  172. package/dist/types/tracking.d.ts.map +1 -1
  173. package/dist/utils/chain.d.ts +5 -1
  174. package/dist/utils/chain.d.ts.map +1 -1
  175. package/dist/utils/chain.js +7 -0
  176. package/dist/utils/chain.js.map +1 -1
  177. package/dist/utils/formatters.d.ts +2 -6
  178. package/dist/utils/formatters.d.ts.map +1 -1
  179. package/dist/utils/formatters.js +9 -12
  180. package/dist/utils/formatters.js.map +1 -1
  181. package/dist/utils/logger.d.ts +2 -0
  182. package/dist/utils/logger.d.ts.map +1 -1
  183. package/dist/utils/logger.js +2 -0
  184. package/dist/utils/logger.js.map +1 -1
  185. package/dist/utils/rpc-utils.d.ts +0 -6
  186. package/dist/utils/rpc-utils.d.ts.map +1 -1
  187. package/dist/utils/rpc-utils.js +0 -9
  188. package/dist/utils/rpc-utils.js.map +1 -1
  189. package/dist/utils/stage-metadata.d.ts +19 -0
  190. package/dist/utils/stage-metadata.d.ts.map +1 -1
  191. package/dist/utils/stage-metadata.js +44 -0
  192. package/dist/utils/stage-metadata.js.map +1 -1
  193. package/dist/utils/timing.d.ts +2 -9
  194. package/dist/utils/timing.d.ts.map +1 -1
  195. package/dist/utils/timing.js +3 -20
  196. package/dist/utils/timing.js.map +1 -1
  197. package/package.json +7 -3
@@ -1 +1 @@
1
- {"version":3,"file":"deduplication.d.ts","sourceRoot":"","sources":["../src/deduplication.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAyB3E;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAI1E;AAED;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,IAAI,CAAC,CAaf;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGxB;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAG1F;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,CAElF;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAc3F;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,MAAM,EAAE,CAAC,CAcnB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,+CAA+C;IAC/C,gBAAgB,EAAE,MAAM,CAAC;IACzB,mCAAmC;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,wCAAwC;IACxC,gBAAgB,EAAE,MAAM,CAAC;IACzB,+BAA+B;IAC/B,WAAW,EAAE;QACX,uCAAuC;QACvC,aAAa,EAAE,MAAM,CAAC;QACtB,gDAAgD;QAChD,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAgC5F;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,kBAAkB,EAAE,kBAAkB,EACtC,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAoCxB;AAED;;;;;;;GAOG;AACH,wBAAsB,2BAA2B,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAiCtF"}
1
+ {"version":3,"file":"deduplication.d.ts","sourceRoot":"","sources":["../src/deduplication.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAoC3E;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAI1E;AAED;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,IAAI,CAAC,CAaf;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGxB;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAG1F;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,CAElF;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAQ3F;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,MAAM,EAAE,CAAC,CAKnB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,+CAA+C;IAC/C,gBAAgB,EAAE,MAAM,CAAC;IACzB,mCAAmC;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,wCAAwC;IACxC,gBAAgB,EAAE,MAAM,CAAC;IACzB,+BAA+B;IAC/B,WAAW,EAAE;QACX,uCAAuC;QACvC,aAAa,EAAE,MAAM,CAAC;QACtB,gDAAgD;QAChD,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAsB5F;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,kBAAkB,EAAE,kBAAkB,EACtC,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAoCxB;AAED;;;;;;;GAOG;AACH,wBAAsB,2BAA2B,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAuBtF"}
@@ -55,6 +55,13 @@ async function getCacheKeysAsync(cache) {
55
55
  }
56
56
  return [];
57
57
  }
58
+ /** Load all checkpoints matching an optional key filter */
59
+ async function loadCheckpoints(cache, keyFilter) {
60
+ const allKeys = await getCacheKeysAsync(cache);
61
+ const keys = keyFilter ? allKeys.filter(keyFilter) : allKeys;
62
+ const checkpoints = await Promise.all(keys.map((key) => cache.get(key)));
63
+ return keys.map((key, i) => ({ key, checkpoint: checkpoints[i] ?? null }));
64
+ }
58
65
  /**
59
66
  * Check if a timelock operation calldata involves Security Council management
60
67
  *
@@ -130,14 +137,12 @@ function filterChildCheckpoints(results) {
130
137
  * @returns Map of child key to parent key
131
138
  */
132
139
  async function getChildToParentMap(cache) {
140
+ const entries = await loadCheckpoints(cache);
133
141
  const result = new Map();
134
- const keys = await getCacheKeysAsync(cache);
135
- const checkpoints = await Promise.all(keys.map((key) => cache.get(key)));
136
- for (let i = 0; i < keys.length; i++) {
137
- const checkpoint = checkpoints[i];
138
- if (checkpoint?.metadata?.sourceCheckpoint) {
139
- result.set(keys[i], checkpoint.metadata.sourceCheckpoint);
140
- }
142
+ for (const { key, checkpoint } of entries) {
143
+ const source = checkpoint?.metadata?.sourceCheckpoint;
144
+ if (source)
145
+ result.set(key, source);
141
146
  }
142
147
  return result;
143
148
  }
@@ -149,16 +154,10 @@ async function getChildToParentMap(cache) {
149
154
  * @returns Array of child checkpoint keys
150
155
  */
151
156
  async function getChildCheckpoints(parentKey, cache) {
152
- const keys = await getCacheKeysAsync(cache);
153
- const checkpoints = await Promise.all(keys.map((key) => cache.get(key)));
154
- const children = [];
155
- for (let i = 0; i < keys.length; i++) {
156
- const checkpoint = checkpoints[i];
157
- if (checkpoint?.metadata?.sourceCheckpoint === parentKey) {
158
- children.push(keys[i]);
159
- }
160
- }
161
- return children;
157
+ const entries = await loadCheckpoints(cache);
158
+ return entries
159
+ .filter(({ checkpoint }) => checkpoint?.metadata?.sourceCheckpoint === parentKey)
160
+ .map(({ key }) => key);
162
161
  }
163
162
  /**
164
163
  * Get deduplication statistics for the cache
@@ -167,32 +166,25 @@ async function getChildCheckpoints(parentKey, cache) {
167
166
  * @returns Statistics about checkpoint relationships
168
167
  */
169
168
  async function getDeduplicationStats(cache) {
170
- const allKeys = await getCacheKeysAsync(cache);
171
- const keys = allKeys.filter((key) => key !== "discovery:watermarks");
172
- const checkpoints = await Promise.all(keys.map((key) => cache.get(key)));
169
+ const entries = await loadCheckpoints(cache, (key) => key !== "discovery:watermarks");
173
170
  let childCheckpoints = 0;
174
171
  let fromElections = 0;
175
172
  let fromProposals = 0;
176
- for (const checkpoint of checkpoints) {
173
+ for (const { checkpoint } of entries) {
177
174
  const source = checkpoint?.metadata?.sourceCheckpoint;
178
175
  if (source) {
179
176
  childCheckpoints++;
180
- if (source.startsWith("election:")) {
177
+ if (source.startsWith("election:"))
181
178
  fromElections++;
182
- }
183
- else {
179
+ else
184
180
  fromProposals++;
185
- }
186
181
  }
187
182
  }
188
183
  return {
189
- totalCheckpoints: keys.length,
190
- rootCheckpoints: keys.length - childCheckpoints,
184
+ totalCheckpoints: entries.length,
185
+ rootCheckpoints: entries.length - childCheckpoints,
191
186
  childCheckpoints,
192
- parentTypes: {
193
- fromElections,
194
- fromProposals,
195
- },
187
+ parentTypes: { fromElections, fromProposals },
196
188
  };
197
189
  }
198
190
  /**
@@ -241,29 +233,14 @@ async function findPotentialParent(timelockCheckpoint, cache) {
241
233
  * @returns Number of newly linked checkpoints
242
234
  */
243
235
  async function autoLinkOrphanedCheckpoints(cache) {
244
- const allKeys = await getCacheKeysAsync(cache);
245
- const txKeys = allKeys.filter((key) => key.startsWith("tx:"));
246
- const checkpoints = await Promise.all(txKeys.map((key) => cache.get(key)));
247
- // Filter to orphaned timelock checkpoints
248
- const orphanedPairs = [];
249
- for (let i = 0; i < txKeys.length; i++) {
250
- const checkpoint = checkpoints[i];
251
- if (!checkpoint)
252
- continue;
253
- if (checkpoint.metadata?.sourceCheckpoint)
254
- continue;
255
- if (checkpoint.input.type !== "timelock")
256
- continue;
257
- orphanedPairs.push({ key: txKeys[i], checkpoint });
258
- }
259
- // Find parents in parallel
260
- const parentResults = await Promise.all(orphanedPairs.map(({ checkpoint }) => findPotentialParent(checkpoint, cache)));
261
- // Link those with parents found
236
+ const entries = await loadCheckpoints(cache, (key) => key.startsWith("tx:"));
237
+ const orphaned = entries.filter(({ checkpoint }) => checkpoint && !checkpoint.metadata?.sourceCheckpoint && checkpoint.input.type === "timelock");
238
+ const parentResults = await Promise.all(orphaned.map(({ checkpoint }) => findPotentialParent(checkpoint, cache)));
262
239
  let linkedCount = 0;
263
- for (let i = 0; i < orphanedPairs.length; i++) {
240
+ for (let i = 0; i < orphaned.length; i++) {
264
241
  const parentKey = parentResults[i];
265
242
  if (parentKey) {
266
- await linkCheckpointToChild(orphanedPairs[i].key, parentKey, cache);
243
+ await linkCheckpointToChild(orphaned[i].key, parentKey, cache);
267
244
  linkedCount++;
268
245
  }
269
246
  }
@@ -1 +1 @@
1
- {"version":3,"file":"deduplication.js","sourceRoot":"","sources":["../src/deduplication.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deduplication.js","sourceRoot":"","sources":["../src/deduplication.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Delegate cache loading, validation, and query helpers
3
+ *
4
+ * All functions are synchronous and operate on a loaded DelegateCache.
5
+ * No RPC calls — pure data access.
6
+ */
7
+ import type { DelegateCache, DelegateCacheStats, DelegateInfo } from "../types/delegates";
8
+ export declare const DELEGATE_CACHE_VERSION = 1;
9
+ export declare function serializeDelegateCache(cache: DelegateCache): Record<string, unknown>;
10
+ /**
11
+ * Get the path to the bundled delegate cache shipped with the package.
12
+ * Tries multiple candidate paths to support dist/ and src/ layouts.
13
+ */
14
+ export declare function getBundledDelegateCachePath(): string | undefined;
15
+ /**
16
+ * Load the bundled delegate cache shipped with the package.
17
+ * Returns the parsed DelegateCache object.
18
+ */
19
+ export declare function loadBundledDelegateCache(): DelegateCache;
20
+ /** Extract the delegates array from a cache */
21
+ export declare function extractDelegates(cache: DelegateCache): DelegateInfo[];
22
+ /** Extract display statistics from a cache */
23
+ export declare function getDelegateCacheStats(cache: DelegateCache): DelegateCacheStats;
24
+ /** Get top N delegates by voting power (already sorted in cache) */
25
+ export declare function getTopDelegates(cache: DelegateCache, limit?: number): DelegateInfo[];
26
+ /**
27
+ * Look up a delegate's rank and cached voting power.
28
+ * Returns undefined if address not found.
29
+ * Uses pre-computed Map for O(1) lookup.
30
+ */
31
+ export declare function getDelegateRankInfo(cache: DelegateCache, address: `0x${string}` | string): {
32
+ rank: number;
33
+ votingPower: string;
34
+ } | undefined;
35
+ /** Filter delegates by minimum voting power threshold (wei) */
36
+ export declare function filterDelegatesByMinPower(delegates: DelegateInfo[], minVotingPower: string): DelegateInfo[];
37
+ /** Filter delegates by address substring match (case-insensitive) */
38
+ export declare function filterDelegatesByAddress(delegates: DelegateInfo[], addressFilter: string): DelegateInfo[];
39
+ /**
40
+ * Runtime validation that an unknown value is a valid DelegateCache.
41
+ * Expects compact delegate keys ({a, vp, b}) and expands them in-place.
42
+ */
43
+ export declare function validateDelegateCache(data: unknown): data is DelegateCache;
44
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/delegates/cache.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE1F,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAYxC,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAYpF;AAcD;;;GAGG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,GAAG,SAAS,CAWhE;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,aAAa,CAWxD;AAED,+CAA+C;AAC/C,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,YAAY,EAAE,CAErE;AAED,8CAA8C;AAC9C,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,GAAG,kBAAkB,CAQ9E;AAED,oEAAoE;AACpE,wBAAgB,eAAe,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE,CAKpF;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,KAAK,MAAM,EAAE,GAAG,MAAM,GAC9B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAMnD;AAED,+DAA+D;AAC/D,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,YAAY,EAAE,EACzB,cAAc,EAAE,MAAM,GACrB,YAAY,EAAE,CAGhB;AAED,qEAAqE;AACrE,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,YAAY,EAAE,EACzB,aAAa,EAAE,MAAM,GACpB,YAAY,EAAE,CAGhB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,aAAa,CA2B1E"}
@@ -0,0 +1,202 @@
1
+ "use strict";
2
+ /**
3
+ * Delegate cache loading, validation, and query helpers
4
+ *
5
+ * All functions are synchronous and operate on a loaded DelegateCache.
6
+ * No RPC calls — pure data access.
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.DELEGATE_CACHE_VERSION = void 0;
43
+ exports.serializeDelegateCache = serializeDelegateCache;
44
+ exports.getBundledDelegateCachePath = getBundledDelegateCachePath;
45
+ exports.loadBundledDelegateCache = loadBundledDelegateCache;
46
+ exports.extractDelegates = extractDelegates;
47
+ exports.getDelegateCacheStats = getDelegateCacheStats;
48
+ exports.getTopDelegates = getTopDelegates;
49
+ exports.getDelegateRankInfo = getDelegateRankInfo;
50
+ exports.filterDelegatesByMinPower = filterDelegatesByMinPower;
51
+ exports.filterDelegatesByAddress = filterDelegatesByAddress;
52
+ exports.validateDelegateCache = validateDelegateCache;
53
+ const fs = __importStar(require("fs"));
54
+ const path = __importStar(require("path"));
55
+ const ethers_1 = require("ethers");
56
+ const sanitize_1 = require("../utils/sanitize");
57
+ exports.DELEGATE_CACHE_VERSION = 1;
58
+ const rankLookupCache = new WeakMap();
59
+ function serializeDelegate(d) {
60
+ return { a: d.address, vp: d.votingPower, b: d.lastChangeBlock };
61
+ }
62
+ function deserializeDelegate(d) {
63
+ return { address: d.a, votingPower: d.vp, lastChangeBlock: d.b };
64
+ }
65
+ function serializeDelegateCache(cache) {
66
+ return {
67
+ version: exports.DELEGATE_CACHE_VERSION,
68
+ generatedAt: cache.generatedAt,
69
+ snapshotBlock: cache.snapshotBlock,
70
+ startBlock: cache.startBlock,
71
+ chainId: cache.chainId,
72
+ totalVotingPower: cache.totalVotingPower,
73
+ totalSupply: cache.totalSupply,
74
+ delegates: cache.delegates.map(serializeDelegate),
75
+ stats: cache.stats,
76
+ };
77
+ }
78
+ function getRankMap(cache) {
79
+ let map = rankLookupCache.get(cache);
80
+ if (!map) {
81
+ map = new Map();
82
+ for (let i = 0; i < cache.delegates.length; i++) {
83
+ map.set(cache.delegates[i].address.toLowerCase(), i);
84
+ }
85
+ rankLookupCache.set(cache, map);
86
+ }
87
+ return map;
88
+ }
89
+ /**
90
+ * Get the path to the bundled delegate cache shipped with the package.
91
+ * Tries multiple candidate paths to support dist/ and src/ layouts.
92
+ */
93
+ function getBundledDelegateCachePath() {
94
+ const candidates = [
95
+ path.join(__dirname, "..", "data", "delegate-cache.json"), // dist/delegates -> dist/data
96
+ path.join(__dirname, "..", "..", "data", "delegate-cache.json"), // src/delegates -> data (dev)
97
+ ];
98
+ for (const candidate of candidates) {
99
+ if (fs.existsSync(candidate)) {
100
+ return candidate;
101
+ }
102
+ }
103
+ return undefined;
104
+ }
105
+ /**
106
+ * Load the bundled delegate cache shipped with the package.
107
+ * Returns the parsed DelegateCache object.
108
+ */
109
+ function loadBundledDelegateCache() {
110
+ const cachePath = getBundledDelegateCachePath();
111
+ if (!cachePath) {
112
+ throw new Error("Delegate cache not found. Run 'yarn cache:delegates' to generate it.");
113
+ }
114
+ const raw = fs.readFileSync(cachePath, "utf8");
115
+ const data = (0, sanitize_1.safeJsonParse)(raw);
116
+ if (!data || !validateDelegateCache(data)) {
117
+ throw new Error("Invalid delegate cache format at " + cachePath);
118
+ }
119
+ return data;
120
+ }
121
+ /** Extract the delegates array from a cache */
122
+ function extractDelegates(cache) {
123
+ return cache.delegates;
124
+ }
125
+ /** Extract display statistics from a cache */
126
+ function getDelegateCacheStats(cache) {
127
+ return {
128
+ totalDelegates: cache.stats.totalDelegates,
129
+ snapshotBlock: cache.snapshotBlock,
130
+ generatedAt: cache.generatedAt,
131
+ totalVotingPower: cache.totalVotingPower,
132
+ totalSupply: cache.totalSupply,
133
+ };
134
+ }
135
+ /** Get top N delegates by voting power (already sorted in cache) */
136
+ function getTopDelegates(cache, limit) {
137
+ if (limit === undefined || limit >= cache.delegates.length) {
138
+ return cache.delegates;
139
+ }
140
+ return cache.delegates.slice(0, limit);
141
+ }
142
+ /**
143
+ * Look up a delegate's rank and cached voting power.
144
+ * Returns undefined if address not found.
145
+ * Uses pre-computed Map for O(1) lookup.
146
+ */
147
+ function getDelegateRankInfo(cache, address) {
148
+ const map = getRankMap(cache);
149
+ const index = map.get(address.toLowerCase());
150
+ if (index === undefined)
151
+ return undefined;
152
+ const delegate = cache.delegates[index];
153
+ return { rank: index + 1, votingPower: delegate.votingPower };
154
+ }
155
+ /** Filter delegates by minimum voting power threshold (wei) */
156
+ function filterDelegatesByMinPower(delegates, minVotingPower) {
157
+ const threshold = ethers_1.ethers.BigNumber.from(minVotingPower);
158
+ return delegates.filter((d) => ethers_1.ethers.BigNumber.from(d.votingPower).gte(threshold));
159
+ }
160
+ /** Filter delegates by address substring match (case-insensitive) */
161
+ function filterDelegatesByAddress(delegates, addressFilter) {
162
+ const lower = addressFilter.toLowerCase();
163
+ return delegates.filter((d) => d.address.toLowerCase().includes(lower));
164
+ }
165
+ /**
166
+ * Runtime validation that an unknown value is a valid DelegateCache.
167
+ * Expects compact delegate keys ({a, vp, b}) and expands them in-place.
168
+ */
169
+ function validateDelegateCache(data) {
170
+ if (data === null || typeof data !== "object")
171
+ return false;
172
+ const obj = data;
173
+ if (typeof obj.version !== "number")
174
+ return false;
175
+ if (typeof obj.generatedAt !== "string")
176
+ return false;
177
+ if (typeof obj.snapshotBlock !== "number")
178
+ return false;
179
+ if (typeof obj.startBlock !== "number")
180
+ return false;
181
+ if (typeof obj.chainId !== "number")
182
+ return false;
183
+ if (typeof obj.totalVotingPower !== "string")
184
+ return false;
185
+ if (typeof obj.totalSupply !== "string")
186
+ return false;
187
+ if (!Array.isArray(obj.delegates))
188
+ return false;
189
+ const stats = obj.stats;
190
+ if (stats === null || typeof stats !== "object")
191
+ return false;
192
+ if (typeof stats.totalDelegates !== "number")
193
+ return false;
194
+ if (obj.delegates.length > 0) {
195
+ const first = obj.delegates[0];
196
+ if (typeof first.a !== "string" || typeof first.vp !== "string" || typeof first.b !== "number")
197
+ return false;
198
+ obj.delegates = obj.delegates.map(deserializeDelegate);
199
+ }
200
+ return true;
201
+ }
202
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/delegates/cache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Delegate Indexing & Query Module
3
+ *
4
+ * Provides delegate voting power caching, lookup, and live queries
5
+ * for Arbitrum governance token delegates.
6
+ */
7
+ export { loadBundledDelegateCache, getBundledDelegateCachePath, extractDelegates, getDelegateCacheStats, validateDelegateCache, serializeDelegateCache, DELEGATE_CACHE_VERSION, } from "./cache";
8
+ export { getTopDelegates, getDelegateRankInfo, filterDelegatesByMinPower, filterDelegatesByAddress, } from "./cache";
9
+ export { queryDelegatesNotVoted, queryDelegateVotingPowers } from "./queries";
10
+ export type { QueryDelegatesNotVotedOptions } from "./queries";
11
+ export { buildDelegateCache } from "./indexer";
12
+ export type { BuildDelegateCacheOptions } from "./indexer";
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/delegates/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,wBAAwB,EACxB,2BAA2B,EAC3B,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAC9E,YAAY,EAAE,6BAA6B,EAAE,MAAM,WAAW,CAAC;AAG/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,YAAY,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ /**
3
+ * Delegate Indexing & Query Module
4
+ *
5
+ * Provides delegate voting power caching, lookup, and live queries
6
+ * for Arbitrum governance token delegates.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.buildDelegateCache = exports.queryDelegateVotingPowers = exports.queryDelegatesNotVoted = exports.filterDelegatesByAddress = exports.filterDelegatesByMinPower = exports.getDelegateRankInfo = exports.getTopDelegates = exports.DELEGATE_CACHE_VERSION = exports.serializeDelegateCache = exports.validateDelegateCache = exports.getDelegateCacheStats = exports.extractDelegates = exports.getBundledDelegateCachePath = exports.loadBundledDelegateCache = void 0;
10
+ // Cache access (sync, no RPC)
11
+ var cache_1 = require("./cache");
12
+ Object.defineProperty(exports, "loadBundledDelegateCache", { enumerable: true, get: function () { return cache_1.loadBundledDelegateCache; } });
13
+ Object.defineProperty(exports, "getBundledDelegateCachePath", { enumerable: true, get: function () { return cache_1.getBundledDelegateCachePath; } });
14
+ Object.defineProperty(exports, "extractDelegates", { enumerable: true, get: function () { return cache_1.extractDelegates; } });
15
+ Object.defineProperty(exports, "getDelegateCacheStats", { enumerable: true, get: function () { return cache_1.getDelegateCacheStats; } });
16
+ Object.defineProperty(exports, "validateDelegateCache", { enumerable: true, get: function () { return cache_1.validateDelegateCache; } });
17
+ Object.defineProperty(exports, "serializeDelegateCache", { enumerable: true, get: function () { return cache_1.serializeDelegateCache; } });
18
+ Object.defineProperty(exports, "DELEGATE_CACHE_VERSION", { enumerable: true, get: function () { return cache_1.DELEGATE_CACHE_VERSION; } });
19
+ // Query helpers (sync, operate on loaded cache)
20
+ var cache_2 = require("./cache");
21
+ Object.defineProperty(exports, "getTopDelegates", { enumerable: true, get: function () { return cache_2.getTopDelegates; } });
22
+ Object.defineProperty(exports, "getDelegateRankInfo", { enumerable: true, get: function () { return cache_2.getDelegateRankInfo; } });
23
+ Object.defineProperty(exports, "filterDelegatesByMinPower", { enumerable: true, get: function () { return cache_2.filterDelegatesByMinPower; } });
24
+ Object.defineProperty(exports, "filterDelegatesByAddress", { enumerable: true, get: function () { return cache_2.filterDelegatesByAddress; } });
25
+ // Live queries (requires provider)
26
+ var queries_1 = require("./queries");
27
+ Object.defineProperty(exports, "queryDelegatesNotVoted", { enumerable: true, get: function () { return queries_1.queryDelegatesNotVoted; } });
28
+ Object.defineProperty(exports, "queryDelegateVotingPowers", { enumerable: true, get: function () { return queries_1.queryDelegateVotingPowers; } });
29
+ // Indexer
30
+ var indexer_1 = require("./indexer");
31
+ Object.defineProperty(exports, "buildDelegateCache", { enumerable: true, get: function () { return indexer_1.buildDelegateCache; } });
32
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/delegates/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,8BAA8B;AAC9B,iCAQiB;AAPf,iHAAA,wBAAwB,OAAA;AACxB,oHAAA,2BAA2B,OAAA;AAC3B,yGAAA,gBAAgB,OAAA;AAChB,8GAAA,qBAAqB,OAAA;AACrB,8GAAA,qBAAqB,OAAA;AACrB,+GAAA,sBAAsB,OAAA;AACtB,+GAAA,sBAAsB,OAAA;AAGxB,gDAAgD;AAChD,iCAKiB;AAJf,wGAAA,eAAe,OAAA;AACf,4GAAA,mBAAmB,OAAA;AACnB,kHAAA,yBAAyB,OAAA;AACzB,iHAAA,wBAAwB,OAAA;AAG1B,mCAAmC;AACnC,qCAA8E;AAArE,iHAAA,sBAAsB,OAAA;AAAE,oHAAA,yBAAyB,OAAA;AAG1D,UAAU;AACV,qCAA+C;AAAtC,6GAAA,kBAAkB,OAAA"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Delegate cache indexer
3
+ *
4
+ * Scans DelegateVotesChanged events from the ARB token contract
5
+ * and produces a DelegateCache snapshot.
6
+ *
7
+ * Uses adaptive chunking to handle event-dense periods (e.g., ARB airdrop)
8
+ * where even moderate block ranges exceed RPC log limits.
9
+ *
10
+ * Processes events into a Map per-chunk to avoid OOM on full genesis builds
11
+ * (~millions of events over 370M+ blocks).
12
+ */
13
+ import { ethers } from "ethers";
14
+ import type { DelegateCache } from "../types/delegates";
15
+ export interface BuildDelegateCacheOptions {
16
+ existingCache?: DelegateCache;
17
+ force?: boolean;
18
+ startBlock?: number;
19
+ /** Minimum voting power in wei (default: 10 ARB) */
20
+ minVotingPower?: string;
21
+ /** Token contract address (default: ADDRESSES.ARB_TOKEN) */
22
+ tokenAddress?: string;
23
+ onProgress?: (pct: number, block: number) => void;
24
+ }
25
+ /**
26
+ * Build or incrementally update a delegate voting power cache.
27
+ *
28
+ * Scans DelegateVotesChanged events and aggregates the latest
29
+ * voting power per delegate address.
30
+ */
31
+ export declare function buildDelegateCache(provider: ethers.providers.Provider, options?: BuildDelegateCacheOptions): Promise<DelegateCache>;
32
+ //# sourceMappingURL=indexer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../../src/delegates/indexer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,aAAa,EAAgB,MAAM,oBAAoB,CAAC;AAsBtE,MAAM,WAAW,yBAAyB;IACxC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4DAA4D;IAC5D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnD;AAqGD;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,EACnC,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,aAAa,CAAC,CAoGxB"}