ponder 0.14.13 → 0.15.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 (237) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/esm/bin/commands/createViews.js +28 -11
  3. package/dist/esm/bin/commands/createViews.js.map +1 -1
  4. package/dist/esm/bin/commands/dev.js +42 -22
  5. package/dist/esm/bin/commands/dev.js.map +1 -1
  6. package/dist/esm/bin/commands/prune.js +3 -0
  7. package/dist/esm/bin/commands/prune.js.map +1 -1
  8. package/dist/esm/bin/commands/serve.js +4 -1
  9. package/dist/esm/bin/commands/serve.js.map +1 -1
  10. package/dist/esm/bin/commands/start.js +18 -6
  11. package/dist/esm/bin/commands/start.js.map +1 -1
  12. package/dist/esm/bin/isolatedController.js +200 -0
  13. package/dist/esm/bin/isolatedController.js.map +1 -0
  14. package/dist/esm/bin/isolatedWorker.js +146 -0
  15. package/dist/esm/bin/isolatedWorker.js.map +1 -0
  16. package/dist/esm/build/config.js +322 -402
  17. package/dist/esm/build/config.js.map +1 -1
  18. package/dist/esm/build/index.js +8 -11
  19. package/dist/esm/build/index.js.map +1 -1
  20. package/dist/esm/build/pre.js +1 -4
  21. package/dist/esm/build/pre.js.map +1 -1
  22. package/dist/esm/build/schema.js +25 -3
  23. package/dist/esm/build/schema.js.map +1 -1
  24. package/dist/esm/client/index.js +306 -42
  25. package/dist/esm/client/index.js.map +1 -1
  26. package/dist/esm/database/actions.js +264 -104
  27. package/dist/esm/database/actions.js.map +1 -1
  28. package/dist/esm/database/index.js +39 -33
  29. package/dist/esm/database/index.js.map +1 -1
  30. package/dist/esm/database/queryBuilder.js +1 -0
  31. package/dist/esm/database/queryBuilder.js.map +1 -1
  32. package/dist/esm/drizzle/index.js +11 -7
  33. package/dist/esm/drizzle/index.js.map +1 -1
  34. package/dist/esm/drizzle/onchain.js +18 -0
  35. package/dist/esm/drizzle/onchain.js.map +1 -1
  36. package/dist/esm/indexing/client.js +32 -25
  37. package/dist/esm/indexing/client.js.map +1 -1
  38. package/dist/esm/indexing/index.js +110 -178
  39. package/dist/esm/indexing/index.js.map +1 -1
  40. package/dist/esm/indexing/profile.js +1 -1
  41. package/dist/esm/indexing/profile.js.map +1 -1
  42. package/dist/esm/indexing-store/cache.js +196 -274
  43. package/dist/esm/indexing-store/cache.js.map +1 -1
  44. package/dist/esm/indexing-store/historical.js +17 -13
  45. package/dist/esm/indexing-store/historical.js.map +1 -1
  46. package/dist/esm/indexing-store/index.js +10 -1
  47. package/dist/esm/indexing-store/index.js.map +1 -1
  48. package/dist/esm/indexing-store/profile.js +3 -3
  49. package/dist/esm/indexing-store/profile.js.map +1 -1
  50. package/dist/esm/indexing-store/realtime.js +27 -2
  51. package/dist/esm/indexing-store/realtime.js.map +1 -1
  52. package/dist/esm/internal/errors.js +28 -0
  53. package/dist/esm/internal/errors.js.map +1 -1
  54. package/dist/esm/internal/metrics.js +279 -82
  55. package/dist/esm/internal/metrics.js.map +1 -1
  56. package/dist/esm/internal/options.js +1 -0
  57. package/dist/esm/internal/options.js.map +1 -1
  58. package/dist/esm/internal/telemetry.js +1 -1
  59. package/dist/esm/internal/telemetry.js.map +1 -1
  60. package/dist/esm/rpc/http.js +130 -0
  61. package/dist/esm/rpc/http.js.map +1 -0
  62. package/dist/esm/rpc/index.js +38 -7
  63. package/dist/esm/rpc/index.js.map +1 -1
  64. package/dist/esm/runtime/events.js +179 -212
  65. package/dist/esm/runtime/events.js.map +1 -1
  66. package/dist/esm/runtime/filter.js +71 -0
  67. package/dist/esm/runtime/filter.js.map +1 -1
  68. package/dist/esm/runtime/fragments.js +78 -73
  69. package/dist/esm/runtime/fragments.js.map +1 -1
  70. package/dist/esm/runtime/historical.js +306 -130
  71. package/dist/esm/runtime/historical.js.map +1 -1
  72. package/dist/esm/runtime/index.js +183 -58
  73. package/dist/esm/runtime/index.js.map +1 -1
  74. package/dist/esm/runtime/isolated.js +462 -0
  75. package/dist/esm/runtime/isolated.js.map +1 -0
  76. package/dist/esm/runtime/multichain.js +80 -73
  77. package/dist/esm/runtime/multichain.js.map +1 -1
  78. package/dist/esm/runtime/omnichain.js +82 -75
  79. package/dist/esm/runtime/omnichain.js.map +1 -1
  80. package/dist/esm/runtime/realtime.js +198 -66
  81. package/dist/esm/runtime/realtime.js.map +1 -1
  82. package/dist/esm/sync-historical/index.js +416 -457
  83. package/dist/esm/sync-historical/index.js.map +1 -1
  84. package/dist/esm/sync-realtime/bloom.js +3 -3
  85. package/dist/esm/sync-realtime/bloom.js.map +1 -1
  86. package/dist/esm/sync-realtime/index.js +27 -46
  87. package/dist/esm/sync-realtime/index.js.map +1 -1
  88. package/dist/esm/sync-store/index.js +112 -63
  89. package/dist/esm/sync-store/index.js.map +1 -1
  90. package/dist/esm/utils/abi.js +20 -32
  91. package/dist/esm/utils/abi.js.map +1 -1
  92. package/dist/esm/utils/chunk.js +8 -0
  93. package/dist/esm/utils/chunk.js.map +1 -0
  94. package/dist/esm/utils/promiseAllSettledWithThrow.js +19 -0
  95. package/dist/esm/utils/promiseAllSettledWithThrow.js.map +1 -0
  96. package/dist/esm/{client/parse.js → utils/sql-parse.js} +94 -80
  97. package/dist/esm/utils/sql-parse.js.map +1 -0
  98. package/dist/types/bin/commands/createViews.d.ts.map +1 -1
  99. package/dist/types/bin/commands/dev.d.ts.map +1 -1
  100. package/dist/types/bin/commands/prune.d.ts.map +1 -1
  101. package/dist/types/bin/commands/serve.d.ts.map +1 -1
  102. package/dist/types/bin/commands/start.d.ts.map +1 -1
  103. package/dist/types/bin/isolatedController.d.ts +13 -0
  104. package/dist/types/bin/isolatedController.d.ts.map +1 -0
  105. package/dist/types/bin/isolatedWorker.d.ts +9 -0
  106. package/dist/types/bin/isolatedWorker.d.ts.map +1 -0
  107. package/dist/types/build/config.d.ts +29 -11
  108. package/dist/types/build/config.d.ts.map +1 -1
  109. package/dist/types/build/index.d.ts +3 -2
  110. package/dist/types/build/index.d.ts.map +1 -1
  111. package/dist/types/build/pre.d.ts +1 -1
  112. package/dist/types/build/pre.d.ts.map +1 -1
  113. package/dist/types/build/schema.d.ts +5 -3
  114. package/dist/types/build/schema.d.ts.map +1 -1
  115. package/dist/types/client/index.d.ts +1 -1
  116. package/dist/types/client/index.d.ts.map +1 -1
  117. package/dist/types/config/index.d.ts +3 -3
  118. package/dist/types/config/index.d.ts.map +1 -1
  119. package/dist/types/database/actions.d.ts +53 -7
  120. package/dist/types/database/actions.d.ts.map +1 -1
  121. package/dist/types/database/index.d.ts +21 -21
  122. package/dist/types/database/index.d.ts.map +1 -1
  123. package/dist/types/database/queryBuilder.d.ts.map +1 -1
  124. package/dist/types/drizzle/index.d.ts +4 -5
  125. package/dist/types/drizzle/index.d.ts.map +1 -1
  126. package/dist/types/drizzle/onchain.d.ts +6 -0
  127. package/dist/types/drizzle/onchain.d.ts.map +1 -1
  128. package/dist/types/indexing/client.d.ts.map +1 -1
  129. package/dist/types/indexing/index.d.ts +2 -5
  130. package/dist/types/indexing/index.d.ts.map +1 -1
  131. package/dist/types/indexing-store/cache.d.ts +3 -2
  132. package/dist/types/indexing-store/cache.d.ts.map +1 -1
  133. package/dist/types/indexing-store/historical.d.ts +2 -1
  134. package/dist/types/indexing-store/historical.d.ts.map +1 -1
  135. package/dist/types/indexing-store/index.d.ts +1 -0
  136. package/dist/types/indexing-store/index.d.ts.map +1 -1
  137. package/dist/types/indexing-store/realtime.d.ts +2 -1
  138. package/dist/types/indexing-store/realtime.d.ts.map +1 -1
  139. package/dist/types/internal/errors.d.ts +5 -0
  140. package/dist/types/internal/errors.d.ts.map +1 -1
  141. package/dist/types/internal/metrics.d.ts +21 -0
  142. package/dist/types/internal/metrics.d.ts.map +1 -1
  143. package/dist/types/internal/options.d.ts +2 -0
  144. package/dist/types/internal/options.d.ts.map +1 -1
  145. package/dist/types/internal/types.d.ts +66 -58
  146. package/dist/types/internal/types.d.ts.map +1 -1
  147. package/dist/types/rpc/http.d.ts +17 -0
  148. package/dist/types/rpc/http.d.ts.map +1 -0
  149. package/dist/types/rpc/index.d.ts.map +1 -1
  150. package/dist/types/runtime/events.d.ts +4 -4
  151. package/dist/types/runtime/events.d.ts.map +1 -1
  152. package/dist/types/runtime/filter.d.ts +5 -1
  153. package/dist/types/runtime/filter.d.ts.map +1 -1
  154. package/dist/types/runtime/fragments.d.ts +4 -3
  155. package/dist/types/runtime/fragments.d.ts.map +1 -1
  156. package/dist/types/runtime/historical.d.ts +29 -13
  157. package/dist/types/runtime/historical.d.ts.map +1 -1
  158. package/dist/types/runtime/index.d.ts +49 -6
  159. package/dist/types/runtime/index.d.ts.map +1 -1
  160. package/dist/types/runtime/init.d.ts +5 -5
  161. package/dist/types/runtime/init.d.ts.map +1 -1
  162. package/dist/types/runtime/isolated.d.ts +14 -0
  163. package/dist/types/runtime/isolated.d.ts.map +1 -0
  164. package/dist/types/runtime/multichain.d.ts.map +1 -1
  165. package/dist/types/runtime/omnichain.d.ts.map +1 -1
  166. package/dist/types/runtime/realtime.d.ts +21 -10
  167. package/dist/types/runtime/realtime.d.ts.map +1 -1
  168. package/dist/types/sync-historical/index.d.ts +18 -8
  169. package/dist/types/sync-historical/index.d.ts.map +1 -1
  170. package/dist/types/sync-realtime/bloom.d.ts.map +1 -1
  171. package/dist/types/sync-realtime/index.d.ts +2 -2
  172. package/dist/types/sync-realtime/index.d.ts.map +1 -1
  173. package/dist/types/sync-store/index.d.ts +9 -9
  174. package/dist/types/sync-store/index.d.ts.map +1 -1
  175. package/dist/types/utils/abi.d.ts +3 -34
  176. package/dist/types/utils/abi.d.ts.map +1 -1
  177. package/dist/types/utils/chunk.d.ts +2 -0
  178. package/dist/types/utils/chunk.d.ts.map +1 -0
  179. package/dist/types/utils/promiseAllSettledWithThrow.d.ts +8 -0
  180. package/dist/types/utils/promiseAllSettledWithThrow.d.ts.map +1 -0
  181. package/dist/types/utils/sql-parse.d.ts +21 -0
  182. package/dist/types/utils/sql-parse.d.ts.map +1 -0
  183. package/package.json +2 -2
  184. package/src/bin/commands/createViews.ts +35 -15
  185. package/src/bin/commands/dev.ts +43 -21
  186. package/src/bin/commands/prune.ts +6 -0
  187. package/src/bin/commands/serve.ts +4 -1
  188. package/src/bin/commands/start.ts +20 -5
  189. package/src/bin/isolatedController.ts +300 -0
  190. package/src/bin/isolatedWorker.ts +192 -0
  191. package/src/build/config.ts +570 -632
  192. package/src/build/index.ts +14 -14
  193. package/src/build/pre.ts +1 -4
  194. package/src/build/schema.ts +49 -4
  195. package/src/client/index.ts +386 -48
  196. package/src/config/index.ts +3 -3
  197. package/src/database/actions.ts +469 -120
  198. package/src/database/index.ts +85 -58
  199. package/src/database/queryBuilder.ts +1 -0
  200. package/src/drizzle/index.ts +15 -7
  201. package/src/drizzle/onchain.ts +19 -0
  202. package/src/indexing/client.ts +38 -25
  203. package/src/indexing/index.ts +137 -230
  204. package/src/indexing/profile.ts +1 -1
  205. package/src/indexing-store/cache.ts +285 -414
  206. package/src/indexing-store/historical.ts +20 -10
  207. package/src/indexing-store/index.ts +16 -0
  208. package/src/indexing-store/profile.ts +3 -3
  209. package/src/indexing-store/realtime.ts +28 -0
  210. package/src/internal/errors.ts +26 -0
  211. package/src/internal/metrics.ts +341 -111
  212. package/src/internal/options.ts +4 -0
  213. package/src/internal/telemetry.ts +1 -1
  214. package/src/internal/types.ts +70 -87
  215. package/src/rpc/http.ts +164 -0
  216. package/src/rpc/index.ts +39 -7
  217. package/src/runtime/events.ts +195 -240
  218. package/src/runtime/filter.ts +85 -1
  219. package/src/runtime/fragments.ts +109 -113
  220. package/src/runtime/historical.ts +467 -189
  221. package/src/runtime/index.ts +337 -69
  222. package/src/runtime/init.ts +5 -5
  223. package/src/runtime/isolated.ts +768 -0
  224. package/src/runtime/multichain.ts +137 -102
  225. package/src/runtime/omnichain.ts +138 -106
  226. package/src/runtime/realtime.ts +322 -123
  227. package/src/sync-historical/index.ts +556 -692
  228. package/src/sync-realtime/bloom.ts +7 -3
  229. package/src/sync-realtime/index.ts +31 -46
  230. package/src/sync-store/index.ts +189 -95
  231. package/src/utils/abi.ts +33 -90
  232. package/src/utils/chunk.ts +7 -0
  233. package/src/utils/promiseAllSettledWithThrow.ts +27 -0
  234. package/src/{client/parse.ts → utils/sql-parse.ts} +100 -90
  235. package/dist/esm/client/parse.js.map +0 -1
  236. package/dist/types/client/parse.d.ts +0 -14
  237. package/dist/types/client/parse.d.ts.map +0 -1
@@ -1,8 +1,8 @@
1
- import { getPrimaryKeyColumns } from '../drizzle/index.js';
2
- import { getTableNames } from '../drizzle/index.js';
1
+ import { getPartitionName, getPrimaryKeyColumns, getReorgProcedureName, getReorgTableName, getReorgTriggerName, } from '../drizzle/index.js';
3
2
  import { getColumnCasing, getReorgTable } from '../drizzle/kit/index.js';
3
+ import { getLiveQueryChannelName, getLiveQueryNotifyProcedureName, getLiveQueryNotifyTriggerName, getLiveQueryProcedureName, getLiveQueryTriggerName, getViewsLiveQueryNotifyTriggerName, } from '../drizzle/onchain.js';
4
4
  import { MAX_CHECKPOINT_STRING, decodeCheckpoint } from '../utils/checkpoint.js';
5
- import { eq, getTableColumns, getTableName, getViewName, } from "drizzle-orm";
5
+ import { and, eq, getTableColumns, getTableName, getViewName, lte, sql, } from "drizzle-orm";
6
6
  import { getTableConfig } from "drizzle-orm/pg-core";
7
7
  import { getPonderCheckpointTable } from "./index.js";
8
8
  export const createIndexes = async (qb, { statements }, context) => {
@@ -14,45 +14,124 @@ export const createIndexes = async (qb, { statements }, context) => {
14
14
  }, undefined, context);
15
15
  }
16
16
  };
17
- export const createTriggers = async (qb, { tables }, context) => {
17
+ export const createTriggers = async (qb, { tables, chainId }, context) => {
18
18
  await qb.transaction(async (tx) => {
19
19
  await Promise.all(tables.map(async (table) => {
20
20
  const schema = getTableConfig(table).schema ?? "public";
21
21
  const columns = getTableColumns(table);
22
22
  const columnNames = Object.values(columns).map((column) => `"${getColumnCasing(column, "snake_case")}"`);
23
23
  await tx.wrap({ label: "create_trigger" }, (tx) => tx.execute(`
24
- CREATE OR REPLACE FUNCTION "${schema}".${getTableNames(table).triggerFn}
24
+ CREATE OR REPLACE FUNCTION "${schema}".${getReorgProcedureName(table)}
25
25
  RETURNS TRIGGER AS $$
26
26
  BEGIN
27
27
  IF TG_OP = 'INSERT' THEN
28
- INSERT INTO "${schema}"."${getTableName(getReorgTable(table))}" (${columnNames.join(",")}, operation, checkpoint)
28
+ INSERT INTO "${schema}"."${getReorgTableName(table)}" (${columnNames.join(",")}, operation, checkpoint)
29
29
  VALUES (${columnNames.map((name) => `NEW.${name}`).join(",")}, 0, '${MAX_CHECKPOINT_STRING}');
30
30
  ELSIF TG_OP = 'UPDATE' THEN
31
- INSERT INTO "${schema}"."${getTableName(getReorgTable(table))}" (${columnNames.join(",")}, operation, checkpoint)
31
+ INSERT INTO "${schema}"."${getReorgTableName(table)}" (${columnNames.join(",")}, operation, checkpoint)
32
32
  VALUES (${columnNames.map((name) => `OLD.${name}`).join(",")}, 1, '${MAX_CHECKPOINT_STRING}');
33
33
  ELSIF TG_OP = 'DELETE' THEN
34
- INSERT INTO "${schema}"."${getTableName(getReorgTable(table))}" (${columnNames.join(",")}, operation, checkpoint)
34
+ INSERT INTO "${schema}"."${getReorgTableName(table)}" (${columnNames.join(",")}, operation, checkpoint)
35
35
  VALUES (${columnNames.map((name) => `OLD.${name}`).join(",")}, 2, '${MAX_CHECKPOINT_STRING}');
36
36
  END IF;
37
37
  RETURN NULL;
38
38
  END;
39
39
  $$ LANGUAGE plpgsql`));
40
40
  await tx.wrap({ label: "create_trigger" }, (tx) => tx.execute(`
41
- CREATE OR REPLACE TRIGGER "${getTableNames(table).trigger}"
42
- AFTER INSERT OR UPDATE OR DELETE ON "${schema}"."${getTableName(table)}"
43
- FOR EACH ROW EXECUTE FUNCTION "${schema}".${getTableNames(table).triggerFn};
41
+ CREATE OR REPLACE TRIGGER "${getReorgTriggerName()}"
42
+ AFTER INSERT OR UPDATE OR DELETE ON "${schema}"."${chainId === undefined ? getTableName(table) : getPartitionName(table, chainId)}"
43
+ FOR EACH ROW EXECUTE FUNCTION "${schema}".${getReorgProcedureName(table)};
44
44
  `));
45
45
  }));
46
46
  }, undefined, context);
47
47
  };
48
- export const dropTriggers = async (qb, { tables }, context) => {
48
+ export const dropTriggers = async (qb, { tables, chainId }, context) => {
49
49
  await qb.transaction(async (tx) => {
50
50
  await Promise.all(tables.map(async (table) => {
51
51
  const schema = getTableConfig(table).schema ?? "public";
52
- await tx.wrap({ label: "drop_trigger" }, (tx) => tx.execute(`DROP TRIGGER IF EXISTS "${getTableNames(table).trigger}" ON "${schema}"."${getTableName(table)}"`));
52
+ await tx.wrap({ label: "drop_trigger" }, (tx) => tx.execute(`DROP TRIGGER IF EXISTS "${getReorgTriggerName()}" ON "${schema}"."${chainId === undefined ? getTableName(table) : getPartitionName(table, chainId)}"`));
53
53
  }));
54
54
  }, undefined, context);
55
55
  };
56
+ export const createLiveQueryTriggers = async (qb, { namespaceBuild, tables, chainId, }, context) => {
57
+ await qb.transaction(async (tx) => {
58
+ const notifyProcedure = getLiveQueryNotifyProcedureName();
59
+ const notifyTrigger = getLiveQueryNotifyTriggerName();
60
+ await tx.wrap((tx) => tx.execute(`
61
+ CREATE OR REPLACE TRIGGER "${notifyTrigger}"
62
+ AFTER INSERT OR UPDATE OR DELETE
63
+ ON "${namespaceBuild.schema}"._ponder_checkpoint
64
+ FOR EACH STATEMENT
65
+ EXECUTE PROCEDURE "${namespaceBuild.schema}".${notifyProcedure};`));
66
+ const trigger = getLiveQueryTriggerName();
67
+ const procedure = getLiveQueryProcedureName();
68
+ for (const table of tables) {
69
+ const schema = getTableConfig(table).schema ?? "public";
70
+ await tx.wrap((tx) => tx.execute(`
71
+ CREATE OR REPLACE TRIGGER "${trigger}"
72
+ AFTER INSERT OR UPDATE OR DELETE
73
+ ON "${schema}"."${chainId === undefined ? getTableName(table) : getPartitionName(table, chainId)}"
74
+ FOR EACH STATEMENT
75
+ EXECUTE PROCEDURE "${schema}".${procedure};`));
76
+ }
77
+ }, undefined, context);
78
+ };
79
+ export const dropLiveQueryTriggers = async (qb, { namespaceBuild, tables, chainId, }, context) => {
80
+ await qb.transaction(async (tx) => {
81
+ const notifyTrigger = getLiveQueryNotifyTriggerName();
82
+ await tx.wrap((tx) => tx.execute(`DROP TRIGGER IF EXISTS "${notifyTrigger}" ON "${namespaceBuild.schema}"._ponder_checkpoint;`));
83
+ const trigger = getLiveQueryTriggerName();
84
+ for (const table of tables) {
85
+ const schema = getTableConfig(table).schema ?? "public";
86
+ await tx.wrap((tx) => tx.execute(`DROP TRIGGER IF EXISTS "${trigger}" ON "${schema}"."${chainId === undefined ? getTableName(table) : getPartitionName(table, chainId)}";`));
87
+ }
88
+ }, undefined, context);
89
+ };
90
+ export const createLiveQueryProcedures = async (qb, { namespaceBuild }, context) => {
91
+ await qb.transaction(async (tx) => {
92
+ const schema = namespaceBuild.schema;
93
+ const procedure = getLiveQueryProcedureName();
94
+ await tx.wrap((tx) => tx.execute(`
95
+ CREATE OR REPLACE FUNCTION "${schema}".${procedure}
96
+ RETURNS TRIGGER LANGUAGE plpgsql
97
+ AS $$
98
+ BEGIN
99
+ INSERT INTO live_query_tables (table_name)
100
+ VALUES (TG_TABLE_NAME)
101
+ ON CONFLICT (table_name) DO NOTHING;
102
+ RETURN NULL;
103
+ END;
104
+ $$;`), context);
105
+ const notifyProcedure = getLiveQueryNotifyProcedureName();
106
+ const channel = getLiveQueryChannelName(namespaceBuild.schema);
107
+ await tx.wrap((tx) => tx.execute(`
108
+ CREATE OR REPLACE FUNCTION "${schema}".${notifyProcedure}
109
+ RETURNS TRIGGER LANGUAGE plpgsql
110
+ AS $$
111
+ DECLARE
112
+ table_names json;
113
+ table_exists boolean := false;
114
+ BEGIN
115
+ SELECT EXISTS (
116
+ SELECT 1
117
+ FROM information_schema.tables
118
+ WHERE table_name = 'live_query_tables'
119
+ AND table_type = 'LOCAL TEMPORARY'
120
+ ) INTO table_exists;
121
+
122
+ IF table_exists THEN
123
+ SELECT json_agg(table_name) INTO table_names
124
+ FROM live_query_tables;
125
+
126
+ table_names := COALESCE(table_names, '[]'::json);
127
+ PERFORM pg_notify('${channel}', table_names::text);
128
+ END IF;
129
+
130
+ RETURN NULL;
131
+ END;
132
+ $$;`), context);
133
+ }, undefined, context);
134
+ };
56
135
  export const createViews = async (qb, { tables, views, namespaceBuild, }, context) => {
57
136
  await qb.transaction({ label: "create_views" }, async (tx) => {
58
137
  await tx.wrap((tx) => tx.execute(`CREATE SCHEMA IF NOT EXISTS "${namespaceBuild.viewsSchema}"`));
@@ -70,52 +149,96 @@ export const createViews = async (qb, { tables, views, namespaceBuild, }, contex
70
149
  await tx.wrap((tx) => tx.execute(`DROP VIEW IF EXISTS "${namespaceBuild.viewsSchema}"."_ponder_checkpoint"`));
71
150
  await tx.wrap((tx) => tx.execute(`CREATE VIEW "${namespaceBuild.viewsSchema}"."_ponder_meta" AS SELECT * FROM "${namespaceBuild.schema}"."_ponder_meta"`));
72
151
  await tx.wrap((tx) => tx.execute(`CREATE VIEW "${namespaceBuild.viewsSchema}"."_ponder_checkpoint" AS SELECT * FROM "${namespaceBuild.schema}"."_ponder_checkpoint"`));
73
- const trigger = `status_${namespaceBuild.viewsSchema}_trigger`;
74
- const notification = "status_notify()";
75
- const channel = `${namespaceBuild.viewsSchema}_status_channel`;
152
+ const notifyProcedure = getLiveQueryNotifyProcedureName();
153
+ const channel = getLiveQueryChannelName(namespaceBuild.viewsSchema);
76
154
  await tx.wrap((tx) => tx.execute(`
77
- CREATE OR REPLACE FUNCTION "${namespaceBuild.viewsSchema}".${notification}
78
- RETURNS TRIGGER
79
- LANGUAGE plpgsql
155
+ CREATE OR REPLACE FUNCTION "${namespaceBuild.viewsSchema}".${notifyProcedure}
156
+ RETURNS TRIGGER LANGUAGE plpgsql
80
157
  AS $$
81
- BEGIN
82
- NOTIFY "${channel}";
83
- RETURN NULL;
84
- END;
158
+ DECLARE
159
+ table_names json;
160
+ table_exists boolean := false;
161
+ BEGIN
162
+ SELECT EXISTS (
163
+ SELECT 1
164
+ FROM information_schema.tables
165
+ WHERE table_name = 'live_query_tables'
166
+ AND table_type = 'LOCAL TEMPORARY'
167
+ ) INTO table_exists;
168
+
169
+ IF table_exists THEN
170
+ SELECT json_agg(table_name) INTO table_names
171
+ FROM live_query_tables;
172
+
173
+ table_names := COALESCE(table_names, '[]'::json);
174
+ PERFORM pg_notify('${channel}', table_names::text);
175
+ END IF;
176
+
177
+ RETURN NULL;
178
+ END;
85
179
  $$;`));
180
+ const trigger = getViewsLiveQueryNotifyTriggerName(namespaceBuild.viewsSchema);
86
181
  await tx.wrap((tx) => tx.execute(`
87
182
  CREATE OR REPLACE TRIGGER "${trigger}"
88
183
  AFTER INSERT OR UPDATE OR DELETE
89
184
  ON "${namespaceBuild.schema}"._ponder_checkpoint
90
185
  FOR EACH STATEMENT
91
- EXECUTE PROCEDURE "${namespaceBuild.viewsSchema}".${notification};`));
186
+ EXECUTE PROCEDURE "${namespaceBuild.viewsSchema}".${notifyProcedure};`));
187
+ }, undefined, context);
188
+ };
189
+ export const revertOmnichain = async (qb, { checkpoint, tables, }, context) => {
190
+ if (tables.length === 0)
191
+ return [];
192
+ return qb.transaction({ label: "revert" }, async (tx) => {
193
+ const counts = [];
194
+ for (const table of tables) {
195
+ const primaryKeyColumns = getPrimaryKeyColumns(table);
196
+ const schema = getTableConfig(table).schema ?? "public";
197
+ const result = await tx.wrap((tx) => tx.execute(`
198
+ WITH reverted1 AS (
199
+ DELETE FROM "${schema}"."${getReorgTableName(table)}"
200
+ WHERE checkpoint > '${checkpoint}' RETURNING *
201
+ ), reverted2 AS (
202
+ SELECT ${primaryKeyColumns.map(({ sql }) => `"${sql}"`).join(", ")}, MIN(operation_id) AS operation_id FROM reverted1
203
+ GROUP BY ${primaryKeyColumns.map(({ sql }) => `"${sql}"`).join(", ")}
204
+ ), reverted3 AS (
205
+ SELECT ${Object.values(getTableColumns(table))
206
+ .map((column) => `reverted1."${getColumnCasing(column, "snake_case")}"`)
207
+ .join(", ")}, reverted1.operation FROM reverted2
208
+ INNER JOIN reverted1
209
+ ON ${primaryKeyColumns.map(({ sql }) => `reverted2."${sql}" = reverted1."${sql}"`).join("AND ")}
210
+ AND reverted2.operation_id = reverted1.operation_id
211
+ ), ${getRevertSql({ table })};`));
212
+ // @ts-ignore
213
+ counts.push(result.rows[0].count);
214
+ }
215
+ return counts;
92
216
  }, undefined, context);
93
217
  };
94
- export const revert = async (qb, { checkpoint, tables, preBuild, }, context) => {
218
+ export const revertMultichain = async (qb, { checkpoint, tables, }, context) => {
95
219
  if (tables.length === 0)
96
220
  return [];
97
221
  return qb.transaction({ label: "revert" }, async (tx) => {
98
222
  const counts = [];
99
- if (preBuild.ordering === "multichain") {
100
- const minOperationId = await tx
101
- .wrap((tx) => tx.execute(`
223
+ const minOperationId = await tx
224
+ .wrap((tx) => tx.execute(`
102
225
  SELECT MIN(operation_id) AS operation_id FROM (
103
226
  ${tables
104
- .map((table) => `
105
- SELECT MIN(operation_id) AS operation_id FROM "${getTableConfig(table).schema ?? "public"}"."${getTableName(getReorgTable(table))}"
227
+ .map((table) => `
228
+ SELECT MIN(operation_id) AS operation_id FROM "${getTableConfig(table).schema ?? "public"}"."${getReorgTableName(table)}"
106
229
  WHERE SUBSTRING(checkpoint, 11, 16)::numeric = ${String(decodeCheckpoint(checkpoint).chainId)}
107
230
  AND checkpoint > '${checkpoint}'`)
108
- .join(" UNION ALL ")}) AS all_mins;`))
109
- .then((result) => {
110
- // @ts-ignore
111
- return result.rows[0]?.operation_id;
112
- });
113
- for (const table of tables) {
114
- const primaryKeyColumns = getPrimaryKeyColumns(table);
115
- const schema = getTableConfig(table).schema ?? "public";
116
- const result = await tx.wrap((tx) => tx.execute(`
231
+ .join(" UNION ALL ")}) AS all_mins;`))
232
+ .then((result) => {
233
+ // @ts-ignore
234
+ return result.rows[0]?.operation_id;
235
+ });
236
+ for (const table of tables) {
237
+ const primaryKeyColumns = getPrimaryKeyColumns(table);
238
+ const schema = getTableConfig(table).schema ?? "public";
239
+ const result = await tx.wrap((tx) => tx.execute(`
117
240
  WITH reverted1 AS (
118
- DELETE FROM "${schema}"."${getTableName(getReorgTable(table))}"
241
+ DELETE FROM "${schema}"."${getReorgTableName(table)}"
119
242
  WHERE ${minOperationId} IS NOT NULL AND operation_id >= ${minOperationId}
120
243
  RETURNING *
121
244
  ), reverted2 AS (
@@ -123,121 +246,158 @@ WITH reverted1 AS (
123
246
  GROUP BY ${primaryKeyColumns.map(({ sql }) => `"${sql}"`).join(", ")}
124
247
  ), reverted3 AS (
125
248
  SELECT ${Object.values(getTableColumns(table))
126
- .map((column) => `reverted1."${getColumnCasing(column, "snake_case")}"`)
127
- .join(", ")}, reverted1.operation FROM reverted2
249
+ .map((column) => `reverted1."${getColumnCasing(column, "snake_case")}"`)
250
+ .join(", ")}, reverted1.operation FROM reverted2
128
251
  INNER JOIN reverted1
129
252
  ON ${primaryKeyColumns.map(({ sql }) => `reverted2."${sql}" = reverted1."${sql}"`).join("AND ")}
130
253
  AND reverted2.operation_id = reverted1.operation_id
131
254
  ), ${getRevertSql({ table })};`));
132
- // @ts-ignore
133
- counts.push(result.rows[0].count);
134
- }
255
+ // @ts-ignore
256
+ counts.push(result.rows[0].count);
135
257
  }
136
- else {
137
- for (const table of tables) {
138
- const primaryKeyColumns = getPrimaryKeyColumns(table);
139
- const schema = getTableConfig(table).schema ?? "public";
140
- const result = await tx.wrap((tx) => tx.execute(`
258
+ return counts;
259
+ }, undefined, context);
260
+ };
261
+ export const revertIsolated = async (qb, { checkpoint, tables, }, context) => {
262
+ if (tables.length === 0)
263
+ return [];
264
+ return qb.transaction({ label: "revert" }, async (tx) => {
265
+ const counts = [];
266
+ for (const table of tables) {
267
+ const primaryKeyColumns = getPrimaryKeyColumns(table);
268
+ const schema = getTableConfig(table).schema ?? "public";
269
+ const result = await tx.wrap((tx) => tx.execute(`
141
270
  WITH reverted1 AS (
142
- DELETE FROM "${schema}"."${getTableName(getReorgTable(table))}"
143
- WHERE checkpoint > '${checkpoint}' RETURNING *
271
+ DELETE FROM "${schema}"."${getReorgTableName(table)}"
272
+ WHERE checkpoint > '${checkpoint}' AND SUBSTRING(checkpoint, 11, 16)::numeric = ${String(decodeCheckpoint(checkpoint).chainId)} RETURNING *
144
273
  ), reverted2 AS (
145
274
  SELECT ${primaryKeyColumns.map(({ sql }) => `"${sql}"`).join(", ")}, MIN(operation_id) AS operation_id FROM reverted1
146
275
  GROUP BY ${primaryKeyColumns.map(({ sql }) => `"${sql}"`).join(", ")}
147
276
  ), reverted3 AS (
148
277
  SELECT ${Object.values(getTableColumns(table))
149
- .map((column) => `reverted1."${getColumnCasing(column, "snake_case")}"`)
150
- .join(", ")}, reverted1.operation FROM reverted2
278
+ .map((column) => `reverted1."${getColumnCasing(column, "snake_case")}"`)
279
+ .join(", ")}, reverted1.operation FROM reverted2
151
280
  INNER JOIN reverted1
152
281
  ON ${primaryKeyColumns.map(({ sql }) => `reverted2."${sql}" = reverted1."${sql}"`).join("AND ")}
153
282
  AND reverted2.operation_id = reverted1.operation_id
154
283
  ), ${getRevertSql({ table })};`));
155
- // @ts-ignore
156
- counts.push(result.rows[0].count);
157
- }
284
+ // @ts-ignore
285
+ counts.push(result.rows[0].count);
158
286
  }
159
287
  return counts;
160
288
  }, undefined, context);
161
289
  };
162
- export const finalize = async (qb, { checkpoint, tables, preBuild, namespaceBuild, }, context) => {
290
+ export const finalizeOmnichain = async (qb, { checkpoint, tables, namespaceBuild, }, context) => {
163
291
  const PONDER_CHECKPOINT = getPonderCheckpointTable(namespaceBuild.schema);
292
+ // TODO(kyle) is this breaking an invariant?
164
293
  if (tables.length === 0) {
165
294
  await qb.wrap((db) => db
166
295
  .update(PONDER_CHECKPOINT)
167
296
  .set({ finalizedCheckpoint: checkpoint, safeCheckpoint: checkpoint }), context);
168
297
  return;
169
298
  }
170
- // NOTE: It is invariant that PONDER_CHECKPOINT has a value for each chain.
171
299
  return qb.transaction({ label: "finalize" }, async (tx) => {
172
- if (preBuild.ordering === "multichain") {
300
+ await tx.wrap((tx) => tx.update(PONDER_CHECKPOINT).set({
301
+ finalizedCheckpoint: checkpoint,
302
+ safeCheckpoint: checkpoint,
303
+ }));
304
+ for (const table of tables) {
173
305
  await tx.wrap((tx) => tx
174
- .update(PONDER_CHECKPOINT)
175
- .set({ finalizedCheckpoint: checkpoint })
176
- .where(eq(PONDER_CHECKPOINT.chainId, Number(decodeCheckpoint(checkpoint).chainId))));
177
- const minOperationId = await tx
178
- .wrap((tx) => tx.execute(`
306
+ .delete(getReorgTable(table))
307
+ .where(lte(getReorgTable(table).checkpoint, checkpoint)));
308
+ }
309
+ }, undefined, context);
310
+ };
311
+ export const finalizeMultichain = async (qb, { checkpoint, tables, namespaceBuild, }, context) => {
312
+ const PONDER_CHECKPOINT = getPonderCheckpointTable(namespaceBuild.schema);
313
+ // TODO(kyle) is this breaking an invariant?
314
+ if (tables.length === 0) {
315
+ await qb.wrap((db) => db
316
+ .update(PONDER_CHECKPOINT)
317
+ .set({ finalizedCheckpoint: checkpoint, safeCheckpoint: checkpoint }), context);
318
+ return;
319
+ }
320
+ // NOTE: It is invariant that PONDER_CHECKPOINT has a value for each chain.
321
+ return qb.transaction({ label: "finalize" }, async (tx) => {
322
+ await tx.wrap((tx) => tx
323
+ .update(PONDER_CHECKPOINT)
324
+ .set({ finalizedCheckpoint: checkpoint })
325
+ .where(eq(PONDER_CHECKPOINT.chainId, Number(decodeCheckpoint(checkpoint).chainId))));
326
+ const minOperationId = await tx
327
+ .wrap((tx) => tx.execute(`
179
328
  SELECT MIN(operation_id) AS operation_id FROM (
180
329
  ${tables
181
- .map((table) => `
330
+ .map((table) => `
182
331
  SELECT MIN(operation_id) AS operation_id FROM "${getTableConfig(table).schema ?? "public"}"."${getTableName(getReorgTable(table))}"
183
332
  WHERE checkpoint > (
184
333
  SELECT finalized_checkpoint
185
334
  FROM "${getTableConfig(PONDER_CHECKPOINT).schema ?? "public"}"."${getTableName(PONDER_CHECKPOINT)}"
186
335
  WHERE chain_id = SUBSTRING(checkpoint, 11, 16)::numeric
187
336
  )`)
188
- .join(" UNION ALL ")}) AS all_mins;`))
189
- .then((result) => {
190
- // @ts-ignore
191
- return result.rows[0]?.operation_id;
192
- });
193
- const result = await tx.wrap((tx) => tx.execute(`
337
+ .join(" UNION ALL ")}) AS all_mins;`))
338
+ .then((result) => {
339
+ // @ts-ignore
340
+ return result.rows[0]?.operation_id;
341
+ });
342
+ const result = await tx.wrap((tx) => tx.execute(`
194
343
  WITH ${tables
195
- .map((table, index) => `
344
+ .map((table, index) => `
196
345
  deleted_${index} AS (
197
346
  DELETE FROM "${getTableConfig(table).schema ?? "public"}"."${getTableName(getReorgTable(table))}"
198
347
  WHERE ${minOperationId} IS NULL OR operation_id < ${minOperationId}
199
348
  RETURNING *
200
349
  )`)
201
- .join(",\n")},
350
+ .join(",\n")},
202
351
  all_deleted AS (
203
352
  ${tables
204
- .map((_, index) => `SELECT checkpoint FROM deleted_${index}`)
205
- .join(" UNION ALL ")}
353
+ .map((_, index) => `SELECT checkpoint FROM deleted_${index}`)
354
+ .join(" UNION ALL ")}
206
355
  )
207
- SELECT MAX(checkpoint) as safe_checkpoint, SUBSTRING(checkpoint, 11, 16)::numeric as chain_id, COUNT(*) AS deleted_count
356
+ SELECT MAX(checkpoint) as safe_checkpoint, SUBSTRING(checkpoint, 11, 16)::numeric as chain_id
208
357
  FROM all_deleted
209
358
  GROUP BY SUBSTRING(checkpoint, 11, 16)::numeric;`));
210
- for (const { chain_id, safe_checkpoint } of result.rows) {
211
- await tx.wrap((tx) => tx
212
- .update(PONDER_CHECKPOINT)
213
- .set({ safeCheckpoint: safe_checkpoint })
214
- .where(eq(PONDER_CHECKPOINT.chainId, chain_id)));
215
- }
216
- }
217
- else {
218
- await tx.wrap((tx) => tx.update(PONDER_CHECKPOINT).set({
219
- finalizedCheckpoint: checkpoint,
220
- safeCheckpoint: checkpoint,
221
- }));
222
- for (const table of tables) {
223
- await tx
224
- .wrap((tx) => tx.execute(`
225
- WITH deleted AS (
226
- DELETE FROM "${getTableConfig(table).schema ?? "public"}"."${getTableName(getReorgTable(table))}"
227
- WHERE checkpoint <= '${checkpoint}'
228
- RETURNING *
229
- ) SELECT COUNT(*) AS deleted_count FROM deleted;`))
230
- .then((result) => Number(result.rows[0].deleted_count));
231
- }
359
+ for (const { chain_id, safe_checkpoint } of result.rows) {
360
+ await tx.wrap((tx) => tx
361
+ .update(PONDER_CHECKPOINT)
362
+ .set({ safeCheckpoint: safe_checkpoint })
363
+ .where(eq(PONDER_CHECKPOINT.chainId, chain_id)));
232
364
  }
233
365
  }, undefined, context);
234
366
  };
235
- export const commitBlock = async (qb, { checkpoint, table }, context) => {
367
+ export const finalizeIsolated = async (qb, { checkpoint, tables, namespaceBuild, }, context) => {
368
+ const PONDER_CHECKPOINT = getPonderCheckpointTable(namespaceBuild.schema);
369
+ const chainId = Number(decodeCheckpoint(checkpoint).chainId);
370
+ if (tables.length === 0) {
371
+ await qb.wrap((db) => db
372
+ .update(PONDER_CHECKPOINT)
373
+ .set({ finalizedCheckpoint: checkpoint, safeCheckpoint: checkpoint })
374
+ .where(eq(PONDER_CHECKPOINT.chainId, chainId)), context);
375
+ return;
376
+ }
377
+ return qb.transaction({ label: "finalize" }, async (tx) => {
378
+ await tx.wrap((tx) => tx
379
+ .update(PONDER_CHECKPOINT)
380
+ .set({ finalizedCheckpoint: checkpoint, safeCheckpoint: checkpoint })
381
+ .where(eq(PONDER_CHECKPOINT.chainId, chainId)));
382
+ for (const table of tables) {
383
+ await tx.wrap((tx) => tx
384
+ .delete(getReorgTable(table))
385
+ .where(and(lte(getReorgTable(table).checkpoint, checkpoint), eq(sql `chain_id`, chainId))));
386
+ }
387
+ });
388
+ };
389
+ export const commitBlock = async (qb, { checkpoint, table, preBuild, }, context) => {
236
390
  const reorgTable = getReorgTable(table);
237
- await qb.wrap({ label: "commit_block" }, (db) => db
238
- .update(reorgTable)
239
- .set({ checkpoint })
240
- .where(eq(reorgTable.checkpoint, MAX_CHECKPOINT_STRING)), context);
391
+ let whereClause;
392
+ if (preBuild.ordering === "experimental_isolated") {
393
+ // Note: Query must include `chain_id` because it's possible for multiple chains to be indexing in parallel.
394
+ const chainId = Number(decodeCheckpoint(checkpoint).chainId);
395
+ whereClause = and(eq(reorgTable.checkpoint, MAX_CHECKPOINT_STRING), eq(sql `chain_id`, chainId));
396
+ }
397
+ else {
398
+ whereClause = eq(reorgTable.checkpoint, MAX_CHECKPOINT_STRING);
399
+ }
400
+ await qb.wrap({ label: "commit_block" }, (db) => db.update(reorgTable).set({ checkpoint }).where(whereClause), context);
241
401
  };
242
402
  export const crashRecovery = async (qb, { table }, context) => {
243
403
  const primaryKeyColumns = getPrimaryKeyColumns(table);
@@ -1 +1 @@
1
- {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../../src/database/actions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../../src/database/actions.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EACL,uBAAuB,EACvB,+BAA+B,EAC/B,6BAA6B,EAC7B,yBAAyB,EACzB,uBAAuB,EACvB,kCAAkC,GACnC,MAAM,sBAAsB,CAAC;AAO9B,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAIL,GAAG,EACH,EAAE,EACF,eAAe,EACf,YAAY,EACZ,WAAW,EACX,GAAG,EACH,GAAG,GACJ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAGtD,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAChC,EAAM,EACN,EAAE,UAAU,EAA6C,EACzD,OAA6B,EAC7B,EAAE;IACF,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE;QAC9C,MAAM,EAAE,CAAC,WAAW,CAClB,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAC3B,KAAK,EAAE,EAAE,EAAE,EAAE;YACX,aAAa;YACb,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC,CAAC;YACtE,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QAC/C,CAAC,EACD,SAAS,EACT,OAAO,CACR,CAAC;KACH;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EACjC,EAAM,EACN,EAAE,MAAM,EAAE,OAAO,EAAyC,EAC1D,OAA6B,EAC7B,EAAE;IACF,MAAM,EAAE,CAAC,WAAW,CAClB,KAAK,EAAE,EAAE,EAAE,EAAE;QACX,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACzB,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,QAAQ,CAAC;YACxD,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;YAEvC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAC5C,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,eAAe,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,CACzD,CAAC;YAEF,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAChD,EAAE,CAAC,OAAO,CACR;gCACkB,MAAM,KAAK,qBAAqB,CAAC,KAAK,CAAC;;;;iBAItD,MAAM,MAAM,iBAAiB,CAAC,KAAK,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;YACpE,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,qBAAqB;;iBAE3E,MAAM,MAAM,iBAAiB,CAAC,KAAK,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;YACpE,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,qBAAqB;;iBAE3E,MAAM,MAAM,iBAAiB,CAAC,KAAK,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;YACpE,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,qBAAqB;;;;sBAItE,CACT,CACF,CAAC;YAEF,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAChD,EAAE,CAAC,OAAO,CACR;+BACiB,mBAAmB,EAAE;yCACX,MAAM,MAAM,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC;mCAChG,MAAM,KAAK,qBAAqB,CAAC,KAAK,CAAC;GACvE,CACU,CACF,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;IACJ,CAAC,EACD,SAAS,EACT,OAAO,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAC/B,EAAM,EACN,EAAE,MAAM,EAAE,OAAO,EAAyC,EAC1D,OAA6B,EAC7B,EAAE;IACF,MAAM,EAAE,CAAC,WAAW,CAClB,KAAK,EAAE,EAAE,EAAE,EAAE;QACX,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACzB,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,QAAQ,CAAC;YAExD,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAC9C,EAAE,CAAC,OAAO,CACR,2BAA2B,mBAAmB,EAAE,SAAS,MAAM,MAAM,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CACvJ,CACF,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;IACJ,CAAC,EACD,SAAS,EACT,OAAO,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,EAC1C,EAAM,EACN,EACE,cAAc,EACd,MAAM,EACN,OAAO,GAC+D,EACxE,OAA6B,EAC7B,EAAE;IACF,MAAM,EAAE,CAAC,WAAW,CAClB,KAAK,EAAE,EAAE,EAAE,EAAE;QACX,MAAM,eAAe,GAAG,+BAA+B,EAAE,CAAC;QAC1D,MAAM,aAAa,GAAG,6BAA6B,EAAE,CAAC;QAEtD,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CACnB,EAAE,CAAC,OAAO,CACR;6BACmB,aAAa;;MAEpC,cAAc,CAAC,MAAM;;qBAEN,cAAc,CAAC,MAAM,KAAK,eAAe,GAAG,CACxD,CACF,CAAC;QAEF,MAAM,OAAO,GAAG,uBAAuB,EAAE,CAAC;QAC1C,MAAM,SAAS,GAAG,yBAAyB,EAAE,CAAC;QAE9C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,QAAQ,CAAC;YAExD,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CACnB,EAAE,CAAC,OAAO,CACR;6BACiB,OAAO;;MAE9B,MAAM,MAAM,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC;;qBAE3E,MAAM,KAAK,SAAS,GAAG,CACjC,CACF,CAAC;SACH;IACH,CAAC,EACD,SAAS,EACT,OAAO,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EACxC,EAAM,EACN,EACE,cAAc,EACd,MAAM,EACN,OAAO,GAC+D,EACxE,OAA6B,EAC7B,EAAE;IACF,MAAM,EAAE,CAAC,WAAW,CAClB,KAAK,EAAE,EAAE,EAAE,EAAE;QACX,MAAM,aAAa,GAAG,6BAA6B,EAAE,CAAC;QACtD,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CACnB,EAAE,CAAC,OAAO,CACR,2BAA2B,aAAa,SAAS,cAAc,CAAC,MAAM,uBAAuB,CAC9F,CACF,CAAC;QAEF,MAAM,OAAO,GAAG,uBAAuB,EAAE,CAAC;QAC1C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,QAAQ,CAAC;YAExD,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CACnB,EAAE,CAAC,OAAO,CACR,2BAA2B,OAAO,SAAS,MAAM,MAAM,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAC1I,CACF,CAAC;SACH;IACH,CAAC,EACD,SAAS,EACT,OAAO,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,EAC5C,EAAM,EACN,EAAE,cAAc,EAAsC,EACtD,OAA6B,EAC7B,EAAE;IACF,MAAM,EAAE,CAAC,WAAW,CAClB,KAAK,EAAE,EAAE,EAAE,EAAE;QACX,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;QACrC,MAAM,SAAS,GAAG,yBAAyB,EAAE,CAAC;QAE9C,MAAM,EAAE,CAAC,IAAI,CACX,CAAC,EAAE,EAAE,EAAE,CACL,EAAE,CAAC,OAAO,CACR;8BACkB,MAAM,KAAK,SAAS;;;;;;;;;IAS9C,CACO,EACH,OAAO,CACR,CAAC;QAEF,MAAM,eAAe,GAAG,+BAA+B,EAAE,CAAC;QAC1D,MAAM,OAAO,GAAG,uBAAuB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAE/D,MAAM,EAAE,CAAC,IAAI,CACX,CAAC,EAAE,EAAE,EAAE,CACL,EAAE,CAAC,OAAO,CAAC;8BACS,MAAM,KAAK,eAAe;;;;;;;;;;;;;;;;;;;2BAmB7B,OAAO;;;;;IAK9B,CAAC,EACG,OAAO,CACR,CAAC;IACJ,CAAC,EACD,SAAS,EACT,OAAO,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAC9B,EAAM,EACN,EACE,MAAM,EACN,KAAK,EACL,cAAc,GACqD,EACrE,OAA6B,EAC7B,EAAE;IACF,MAAM,EAAE,CAAC,WAAW,CAClB,EAAE,KAAK,EAAE,cAAc,EAAE,EACzB,KAAK,EAAE,EAAE,EAAE,EAAE;QACX,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CACnB,EAAE,CAAC,OAAO,CACR,gCAAgC,cAAc,CAAC,WAAW,GAAG,CAC9D,CACF,CAAC;QAEF,8EAA8E;QAC9E,6DAA6D;QAE7D,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CACnB,EAAE,CAAC,OAAO,CACR,wBAAwB,cAAc,CAAC,WAAW,MAAM,YAAY,CAAC,KAAK,CAAC,GAAG,CAC/E,CACF,CAAC;YAEF,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CACnB,EAAE,CAAC,OAAO,CACR,gBAAgB,cAAc,CAAC,WAAW,MAAM,YAAY,CAAC,KAAK,CAAC,uBAAuB,cAAc,CAAC,MAAM,MAAM,YAAY,CAAC,KAAK,CAAC,GAAG,CAC5I,CACF,CAAC;SACH;QAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CACnB,EAAE,CAAC,OAAO,CACR,wBAAwB,cAAc,CAAC,WAAW,MAAM,WAAW,CAAC,IAAI,CAAC,GAAG,CAC7E,CACF,CAAC;YAEF,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CACnB,EAAE,CAAC,OAAO,CACR,gBAAgB,cAAc,CAAC,WAAW,MAAM,WAAW,CAAC,IAAI,CAAC,uBAAuB,cAAc,CAAC,MAAM,MAAM,WAAW,CAAC,IAAI,CAAC,GAAG,CACxI,CACF,CAAC;SACH;QAED,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CACnB,EAAE,CAAC,OAAO,CACR,wBAAwB,cAAc,CAAC,WAAW,kBAAkB,CACrE,CACF,CAAC;QAEF,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CACnB,EAAE,CAAC,OAAO,CACR,wBAAwB,cAAc,CAAC,WAAW,wBAAwB,CAC3E,CACF,CAAC;QAEF,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CACnB,EAAE,CAAC,OAAO,CACR,gBAAgB,cAAc,CAAC,WAAW,sCAAsC,cAAc,CAAC,MAAM,kBAAkB,CACxH,CACF,CAAC;QAEF,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CACnB,EAAE,CAAC,OAAO,CACR,gBAAgB,cAAc,CAAC,WAAW,4CAA4C,cAAc,CAAC,MAAM,wBAAwB,CACpI,CACF,CAAC;QAEF,MAAM,eAAe,GAAG,+BAA+B,EAAE,CAAC;QAC1D,MAAM,OAAO,GAAG,uBAAuB,CAAC,cAAc,CAAC,WAAY,CAAC,CAAC;QAErE,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CACnB,EAAE,CAAC,OAAO,CAAC;8BACW,cAAc,CAAC,WAAW,KAAK,eAAe;;;;;;;;;;;;;;;;;;;2BAmBjD,OAAO;;;;;IAK9B,CAAC,CACE,CAAC;QAEF,MAAM,OAAO,GAAG,kCAAkC,CAChD,cAAc,CAAC,WAAW,CAC3B,CAAC;QAEF,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CACnB,EAAE,CAAC,OAAO,CACR;6BACmB,OAAO;;MAE9B,cAAc,CAAC,MAAO;;qBAEP,cAAc,CAAC,WAAW,KAAK,eAAe,GAAG,CAC7D,CACF,CAAC;IACJ,CAAC,EACD,SAAS,EACT,OAAO,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAClC,EAAM,EACN,EACE,UAAU,EACV,MAAM,GAIP,EACD,OAA6B,EACV,EAAE;IACrB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEnC,OAAO,EAAE,CAAC,WAAW,CACnB,EAAE,KAAK,EAAE,QAAQ,EAAE,EACnB,KAAK,EAAE,EAAE,EAAE,EAAE;QACX,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;YACtD,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,QAAQ,CAAC;YAExD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAClC,EAAE,CAAC,OAAO,CAAC;;iBAEJ,MAAM,MAAM,iBAAiB,CAAC,KAAK,CAAC;wBAC7B,UAAU;;WAEvB,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;aACvD,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;WAE3D,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;iBAC3C,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,cAAc,eAAe,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC;iBACvE,IAAI,CAAC,IAAI,CAAC;;OAER,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,cAAc,GAAG,kBAAkB,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;;KAE5F,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CACvB,CAAC;YAEF,aAAa;YACb,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,CAAC;SACpC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,EACD,SAAS,EACT,OAAO,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EACnC,EAAM,EACN,EACE,UAAU,EACV,MAAM,GAIP,EACD,OAA6B,EACV,EAAE;IACrB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEnC,OAAO,EAAE,CAAC,WAAW,CACnB,EAAE,KAAK,EAAE,QAAQ,EAAE,EACnB,KAAK,EAAE,EAAE,EAAE,EAAE;QACX,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,MAAM,cAAc,GAAG,MAAM,EAAE;aAC5B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CACX,EAAE,CAAC,OAAO,CAAC;;EAEnB,MAAM;aACL,GAAG,CACF,CAAC,KAAK,EAAE,EAAE,CAAC;iDACkC,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,QAAQ,MAAM,iBAAiB,CAAC,KAAK,CAAC;iDACtE,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;oBACzE,UAAU,GAAG,CAC9B;aACA,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAC9B;aACA,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACf,aAAa;YACb,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,YAA6B,CAAC;QACvD,CAAC,CAAC,CAAC;QAEL,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;YACtD,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,QAAQ,CAAC;YAExD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAClC,EAAE,CAAC,OAAO,CAAC;;iBAEJ,MAAM,MAAM,iBAAiB,CAAC,KAAK,CAAC;UAC3C,cAAe,oCAAoC,cAAe;;;WAGjE,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;aACvD,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;WAE3D,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;iBAC3C,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,cAAc,eAAe,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC;iBACvE,IAAI,CAAC,IAAI,CAAC;;OAER,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,cAAc,GAAG,kBAAkB,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;;KAE5F,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CACvB,CAAC;YAEF,aAAa;YACb,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,CAAC;SACpC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,EACD,SAAS,EACT,OAAO,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EACjC,EAAM,EACN,EACE,UAAU,EACV,MAAM,GAIP,EACD,OAA6B,EAC7B,EAAE;IACF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEnC,OAAO,EAAE,CAAC,WAAW,CACnB,EAAE,KAAK,EAAE,QAAQ,EAAE,EACnB,KAAK,EAAE,EAAE,EAAE,EAAE;QACX,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;YACtD,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,QAAQ,CAAC;YAExD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAClC,EAAE,CAAC,OAAO,CAAC;;iBAEJ,MAAM,MAAM,iBAAiB,CAAC,KAAK,CAAC;wBAC7B,UAAU,kDAAkD,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;;WAErH,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;aACvD,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;WAE3D,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;iBAC3C,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,cAAc,eAAe,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC;iBACvE,IAAI,CAAC,IAAI,CAAC;;OAER,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,cAAc,GAAG,kBAAkB,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;;KAE5F,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CACvB,CAAC;YAEF,aAAa;YACb,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,CAAC;SACpC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,EACD,SAAS,EACT,OAAO,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EACpC,EAAM,EACN,EACE,UAAU,EACV,MAAM,EACN,cAAc,GAKf,EACD,OAA6B,EAC7B,EAAE;IACF,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAE1E,4CAA4C;IAC5C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACvB,MAAM,EAAE,CAAC,IAAI,CACX,CAAC,EAAE,EAAE,EAAE,CACL,EAAE;aACC,MAAM,CAAC,iBAAiB,CAAC;aACzB,GAAG,CAAC,EAAE,mBAAmB,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC,EACzE,OAAO,CACR,CAAC;QACF,OAAO;KACR;IAED,OAAO,EAAE,CAAC,WAAW,CACnB,EAAE,KAAK,EAAE,UAAU,EAAE,EACrB,KAAK,EAAE,EAAE,EAAE,EAAE;QACX,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CACnB,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC;YAC/B,mBAAmB,EAAE,UAAU;YAC/B,cAAc,EAAE,UAAU;SAC3B,CAAC,CACH,CAAC;QAEF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CACnB,EAAE;iBACC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;iBAC5B,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAC3D,CAAC;SACH;IACH,CAAC,EACD,SAAS,EACT,OAAO,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EACrC,EAAM,EACN,EACE,UAAU,EACV,MAAM,EACN,cAAc,GAKf,EACD,OAA6B,EAC7B,EAAE;IACF,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAE1E,4CAA4C;IAC5C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACvB,MAAM,EAAE,CAAC,IAAI,CACX,CAAC,EAAE,EAAE,EAAE,CACL,EAAE;aACC,MAAM,CAAC,iBAAiB,CAAC;aACzB,GAAG,CAAC,EAAE,mBAAmB,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC,EACzE,OAAO,CACR,CAAC;QACF,OAAO;KACR;IAED,2EAA2E;IAE3E,OAAO,EAAE,CAAC,WAAW,CACnB,EAAE,KAAK,EAAE,UAAU,EAAE,EACrB,KAAK,EAAE,EAAE,EAAE,EAAE;QACX,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CACnB,EAAE;aACC,MAAM,CAAC,iBAAiB,CAAC;aACzB,GAAG,CAAC,EAAE,mBAAmB,EAAE,UAAU,EAAE,CAAC;aACxC,KAAK,CACJ,EAAE,CACA,iBAAiB,CAAC,OAAO,EACzB,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAC7C,CACF,CACJ,CAAC;QAEF,MAAM,cAAc,GAAG,MAAM,EAAE;aAC5B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CACX,EAAE,CAAC,OAAO,CAAC;;EAEnB,MAAM;aACL,GAAG,CACF,CAAC,KAAK,EAAE,EAAE,CAAC;iDACkC,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,QAAQ,MAAM,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;;;UAGvH,cAAc,CAAC,iBAAiB,CAAC,CAAC,MAAM,IAAI,QAAQ,MAAM,YAAY,CAAC,iBAAiB,CAAC;;EAEjG,CACC;aACA,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAC9B;aACA,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACf,aAAa;YACb,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,YAA6B,CAAC;QACvD,CAAC,CAAC,CAAC;QAEL,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAClC,EAAE,CAAC,OAAO,CAAC;WACR,MAAM;aACV,GAAG,CACF,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;cACZ,KAAK;qBACE,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,QAAQ,MAAM,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;cACvF,cAAc,8BAA8B,cAAc;;MAElE,CACC;aACA,IAAI,CAAC,KAAK,CAAC;;QAEV,MAAM;aACL,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,kCAAkC,KAAK,EAAE,CAAC;aAC5D,IAAI,CAAC,aAAa,CAAC;;;;qDAIyB,CAAC,CAC/C,CAAC;QAEF,KAAK,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE;YACvD,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CACnB,EAAE;iBACC,MAAM,CAAC,iBAAiB,CAAC;iBACzB,GAAG,CAAC,EAAE,cAAc,EAAE,eAAyB,EAAE,CAAC;iBAClD,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAAC,OAAO,EAAE,QAAkB,CAAC,CAAC,CAC5D,CAAC;SACH;IACH,CAAC,EACD,SAAS,EACT,OAAO,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EACnC,EAAM,EACN,EACE,UAAU,EACV,MAAM,EACN,cAAc,GAKf,EACD,OAA6B,EAC7B,EAAE;IACF,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAC1E,MAAM,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC;IAE7D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACvB,MAAM,EAAE,CAAC,IAAI,CACX,CAAC,EAAE,EAAE,EAAE,CACL,EAAE;aACC,MAAM,CAAC,iBAAiB,CAAC;aACzB,GAAG,CAAC,EAAE,mBAAmB,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;aACpE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,EAClD,OAAO,CACR,CAAC;QACF,OAAO;KACR;IACD,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;QACxD,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CACnB,EAAE;aACC,MAAM,CAAC,iBAAiB,CAAC;aACzB,GAAG,CAAC,EAAE,mBAAmB,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;aACpE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CACjD,CAAC;QAEF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CACnB,EAAE;iBACC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;iBAC5B,KAAK,CACJ,GAAG,CACD,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,EAChD,EAAE,CAAC,GAAG,CAAA,UAAU,EAAE,OAAO,CAAC,CAC3B,CACF,CACJ,CAAC;SACH;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAC9B,EAAM,EACN,EACE,UAAU,EACV,KAAK,EACL,QAAQ,GACmE,EAC7E,OAA6B,EAC7B,EAAE;IACF,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACxC,IAAI,WAAgB,CAAC;IACrB,IAAI,QAAQ,CAAC,QAAQ,KAAK,uBAAuB,EAAE;QACjD,4GAA4G;QAC5G,MAAM,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC;QAC7D,WAAW,GAAG,GAAG,CACf,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,qBAAqB,CAAC,EAChD,EAAE,CAAC,GAAG,CAAA,UAAU,EAAE,OAAO,CAAC,CAC1B,CAAC;KACJ;SAAM;QACL,WAAW,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC;KAChE;IAED,MAAM,EAAE,CAAC,IAAI,CACX,EAAE,KAAK,EAAE,cAAc,EAAE,EACzB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,EACpE,OAAO,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAChC,EAAM,EACN,EAAE,KAAK,EAAoB,EAC3B,OAA6B,EAC7B,EAAE;IACF,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,QAAQ,CAAC;IAExD,MAAM,EAAE,CAAC,IAAI,CACX,CAAC,EAAE,EAAE,EAAE,CACL,EAAE,CAAC,OAAO,CAAC;;iBAEA,MAAM,MAAM,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;;;WAGpD,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;aACvD,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;WAE3D,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;SAC3C,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,cAAc,eAAe,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC;SACvE,IAAI,CAAC,IAAI,CAAC;;OAER,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,cAAc,GAAG,kBAAkB,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;;KAE5F,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAC3B,OAAO,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,EAAE,KAAK,EAAoB,EAAE,EAAE;IACnD,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,QAAQ,CAAC;IAExD,OAAO;;iBAEQ,MAAM,MAAM,YAAY,CAAC,KAAK,CAAC;;;YAGpC,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,MAAM,GAAG,kBAAkB,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;;;;;kBAK5E,MAAM,MAAM,YAAY,CAAC,KAAK,CAAC;WACtC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;SAC3C,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,eAAe,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC;SAC7D,IAAI,CAAC,IAAI,CAAC;;iBAEE,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;MAEpE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;SACpC,GAAG,CACF,CAAC,MAAM,EAAE,EAAE,CACT,IAAI,eAAe,CAAC,MAAM,EAAE,YAAY,CAAC,iBAAiB,eAAe,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,CACrG;SACA,IAAI,CAAC,IAAI,CAAC;;2CAE0B,CAAC;AAC5C,CAAC,CAAC"}