@polpo-ai/drizzle 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/LICENSE +21 -0
  2. package/dist/__tests__/stores.test.d.ts +2 -0
  3. package/dist/__tests__/stores.test.d.ts.map +1 -0
  4. package/dist/__tests__/stores.test.js +922 -0
  5. package/dist/__tests__/stores.test.js.map +1 -0
  6. package/dist/index.d.ts +4811 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +129 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/migrate.d.ts +8 -0
  11. package/dist/migrate.d.ts.map +1 -0
  12. package/dist/migrate.js +214 -0
  13. package/dist/migrate.js.map +1 -0
  14. package/dist/schema/approvals.d.ts +413 -0
  15. package/dist/schema/approvals.d.ts.map +1 -0
  16. package/dist/schema/approvals.js +37 -0
  17. package/dist/schema/approvals.js.map +1 -0
  18. package/dist/schema/index.d.ts +17 -0
  19. package/dist/schema/index.d.ts.map +1 -0
  20. package/dist/schema/index.js +19 -0
  21. package/dist/schema/index.js.map +1 -0
  22. package/dist/schema/logs.d.ts +281 -0
  23. package/dist/schema/logs.d.ts.map +1 -0
  24. package/dist/schema/logs.js +33 -0
  25. package/dist/schema/logs.js.map +1 -0
  26. package/dist/schema/memory.d.ts +87 -0
  27. package/dist/schema/memory.d.ts.map +1 -0
  28. package/dist/schema/memory.js +13 -0
  29. package/dist/schema/memory.js.map +1 -0
  30. package/dist/schema/notifications.d.ts +521 -0
  31. package/dist/schema/notifications.d.ts.map +1 -0
  32. package/dist/schema/notifications.js +47 -0
  33. package/dist/schema/notifications.js.map +1 -0
  34. package/dist/schema/peers.d.ts +743 -0
  35. package/dist/schema/peers.d.ts.map +1 -0
  36. package/dist/schema/peers.js +71 -0
  37. package/dist/schema/peers.js.map +1 -0
  38. package/dist/schema/runs.d.ts +483 -0
  39. package/dist/schema/runs.d.ts.map +1 -0
  40. package/dist/schema/runs.js +41 -0
  41. package/dist/schema/runs.js.map +1 -0
  42. package/dist/schema/sessions.d.ts +389 -0
  43. package/dist/schema/sessions.d.ts.map +1 -0
  44. package/dist/schema/sessions.js +37 -0
  45. package/dist/schema/sessions.js.map +1 -0
  46. package/dist/schema/tasks.d.ts +1843 -0
  47. package/dist/schema/tasks.d.ts.map +1 -0
  48. package/dist/schema/tasks.js +135 -0
  49. package/dist/schema/tasks.js.map +1 -0
  50. package/dist/stores/approval-store.d.ts +19 -0
  51. package/dist/stores/approval-store.d.ts.map +1 -0
  52. package/dist/stores/approval-store.js +77 -0
  53. package/dist/stores/approval-store.js.map +1 -0
  54. package/dist/stores/checkpoint-store.d.ts +14 -0
  55. package/dist/stores/checkpoint-store.d.ts.map +1 -0
  56. package/dist/stores/checkpoint-store.js +44 -0
  57. package/dist/stores/checkpoint-store.js.map +1 -0
  58. package/dist/stores/config-store.d.ts +15 -0
  59. package/dist/stores/config-store.d.ts.map +1 -0
  60. package/dist/stores/config-store.js +31 -0
  61. package/dist/stores/config-store.js.map +1 -0
  62. package/dist/stores/delay-store.d.ts +14 -0
  63. package/dist/stores/delay-store.d.ts.map +1 -0
  64. package/dist/stores/delay-store.js +42 -0
  65. package/dist/stores/delay-store.js.map +1 -0
  66. package/dist/stores/index.d.ts +13 -0
  67. package/dist/stores/index.d.ts.map +1 -0
  68. package/dist/stores/index.js +12 -0
  69. package/dist/stores/index.js.map +1 -0
  70. package/dist/stores/log-store.d.ts +20 -0
  71. package/dist/stores/log-store.d.ts.map +1 -0
  72. package/dist/stores/log-store.js +87 -0
  73. package/dist/stores/log-store.js.map +1 -0
  74. package/dist/stores/memory-store.d.ts +14 -0
  75. package/dist/stores/memory-store.d.ts.map +1 -0
  76. package/dist/stores/memory-store.js +39 -0
  77. package/dist/stores/memory-store.js.map +1 -0
  78. package/dist/stores/notification-store.d.ts +20 -0
  79. package/dist/stores/notification-store.d.ts.map +1 -0
  80. package/dist/stores/notification-store.js +111 -0
  81. package/dist/stores/notification-store.js.map +1 -0
  82. package/dist/stores/peer-store.d.ts +40 -0
  83. package/dist/stores/peer-store.d.ts.map +1 -0
  84. package/dist/stores/peer-store.js +203 -0
  85. package/dist/stores/peer-store.js.map +1 -0
  86. package/dist/stores/run-store.d.ts +23 -0
  87. package/dist/stores/run-store.d.ts.map +1 -0
  88. package/dist/stores/run-store.js +120 -0
  89. package/dist/stores/run-store.js.map +1 -0
  90. package/dist/stores/session-store.d.ts +26 -0
  91. package/dist/stores/session-store.d.ts.map +1 -0
  92. package/dist/stores/session-store.js +166 -0
  93. package/dist/stores/session-store.js.map +1 -0
  94. package/dist/stores/task-store.d.ts +42 -0
  95. package/dist/stores/task-store.d.ts.map +1 -0
  96. package/dist/stores/task-store.js +387 -0
  97. package/dist/stores/task-store.js.map +1 -0
  98. package/dist/utils.d.ts +11 -0
  99. package/dist/utils.d.ts.map +1 -0
  100. package/dist/utils.js +24 -0
  101. package/dist/utils.js.map +1 -0
  102. package/package.json +74 -0
@@ -0,0 +1,389 @@
1
+ export declare const sessionsSqlite: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
2
+ name: "sessions";
3
+ schema: undefined;
4
+ columns: {
5
+ id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
6
+ name: "id";
7
+ tableName: "sessions";
8
+ dataType: "string";
9
+ columnType: "SQLiteText";
10
+ data: string;
11
+ driverParam: string;
12
+ notNull: true;
13
+ hasDefault: false;
14
+ isPrimaryKey: true;
15
+ isAutoincrement: false;
16
+ hasRuntimeDefault: false;
17
+ enumValues: [string, ...string[]];
18
+ baseColumn: never;
19
+ identity: undefined;
20
+ generated: undefined;
21
+ }, {}, {
22
+ length: number | undefined;
23
+ }>;
24
+ title: import("drizzle-orm/sqlite-core").SQLiteColumn<{
25
+ name: "title";
26
+ tableName: "sessions";
27
+ dataType: "string";
28
+ columnType: "SQLiteText";
29
+ data: string;
30
+ driverParam: string;
31
+ notNull: false;
32
+ hasDefault: false;
33
+ isPrimaryKey: false;
34
+ isAutoincrement: false;
35
+ hasRuntimeDefault: false;
36
+ enumValues: [string, ...string[]];
37
+ baseColumn: never;
38
+ identity: undefined;
39
+ generated: undefined;
40
+ }, {}, {
41
+ length: number | undefined;
42
+ }>;
43
+ createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
44
+ name: "created_at";
45
+ tableName: "sessions";
46
+ dataType: "string";
47
+ columnType: "SQLiteText";
48
+ data: string;
49
+ driverParam: string;
50
+ notNull: true;
51
+ hasDefault: false;
52
+ isPrimaryKey: false;
53
+ isAutoincrement: false;
54
+ hasRuntimeDefault: false;
55
+ enumValues: [string, ...string[]];
56
+ baseColumn: never;
57
+ identity: undefined;
58
+ generated: undefined;
59
+ }, {}, {
60
+ length: number | undefined;
61
+ }>;
62
+ updatedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
63
+ name: "updated_at";
64
+ tableName: "sessions";
65
+ dataType: "string";
66
+ columnType: "SQLiteText";
67
+ data: string;
68
+ driverParam: string;
69
+ notNull: true;
70
+ hasDefault: false;
71
+ isPrimaryKey: false;
72
+ isAutoincrement: false;
73
+ hasRuntimeDefault: false;
74
+ enumValues: [string, ...string[]];
75
+ baseColumn: never;
76
+ identity: undefined;
77
+ generated: undefined;
78
+ }, {}, {
79
+ length: number | undefined;
80
+ }>;
81
+ };
82
+ dialect: "sqlite";
83
+ }>;
84
+ export declare const messagesSqlite: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
85
+ name: "messages";
86
+ schema: undefined;
87
+ columns: {
88
+ id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
89
+ name: "id";
90
+ tableName: "messages";
91
+ dataType: "string";
92
+ columnType: "SQLiteText";
93
+ data: string;
94
+ driverParam: string;
95
+ notNull: true;
96
+ hasDefault: false;
97
+ isPrimaryKey: true;
98
+ isAutoincrement: false;
99
+ hasRuntimeDefault: false;
100
+ enumValues: [string, ...string[]];
101
+ baseColumn: never;
102
+ identity: undefined;
103
+ generated: undefined;
104
+ }, {}, {
105
+ length: number | undefined;
106
+ }>;
107
+ sessionId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
108
+ name: "session_id";
109
+ tableName: "messages";
110
+ dataType: "string";
111
+ columnType: "SQLiteText";
112
+ data: string;
113
+ driverParam: string;
114
+ notNull: true;
115
+ hasDefault: false;
116
+ isPrimaryKey: false;
117
+ isAutoincrement: false;
118
+ hasRuntimeDefault: false;
119
+ enumValues: [string, ...string[]];
120
+ baseColumn: never;
121
+ identity: undefined;
122
+ generated: undefined;
123
+ }, {}, {
124
+ length: number | undefined;
125
+ }>;
126
+ role: import("drizzle-orm/sqlite-core").SQLiteColumn<{
127
+ name: "role";
128
+ tableName: "messages";
129
+ dataType: "string";
130
+ columnType: "SQLiteText";
131
+ data: string;
132
+ driverParam: string;
133
+ notNull: true;
134
+ hasDefault: false;
135
+ isPrimaryKey: false;
136
+ isAutoincrement: false;
137
+ hasRuntimeDefault: false;
138
+ enumValues: [string, ...string[]];
139
+ baseColumn: never;
140
+ identity: undefined;
141
+ generated: undefined;
142
+ }, {}, {
143
+ length: number | undefined;
144
+ }>;
145
+ content: import("drizzle-orm/sqlite-core").SQLiteColumn<{
146
+ name: "content";
147
+ tableName: "messages";
148
+ dataType: "string";
149
+ columnType: "SQLiteText";
150
+ data: string;
151
+ driverParam: string;
152
+ notNull: true;
153
+ hasDefault: false;
154
+ isPrimaryKey: false;
155
+ isAutoincrement: false;
156
+ hasRuntimeDefault: false;
157
+ enumValues: [string, ...string[]];
158
+ baseColumn: never;
159
+ identity: undefined;
160
+ generated: undefined;
161
+ }, {}, {
162
+ length: number | undefined;
163
+ }>;
164
+ ts: import("drizzle-orm/sqlite-core").SQLiteColumn<{
165
+ name: "ts";
166
+ tableName: "messages";
167
+ dataType: "string";
168
+ columnType: "SQLiteText";
169
+ data: string;
170
+ driverParam: string;
171
+ notNull: true;
172
+ hasDefault: false;
173
+ isPrimaryKey: false;
174
+ isAutoincrement: false;
175
+ hasRuntimeDefault: false;
176
+ enumValues: [string, ...string[]];
177
+ baseColumn: never;
178
+ identity: undefined;
179
+ generated: undefined;
180
+ }, {}, {
181
+ length: number | undefined;
182
+ }>;
183
+ toolCalls: import("drizzle-orm/sqlite-core").SQLiteColumn<{
184
+ name: "tool_calls";
185
+ tableName: "messages";
186
+ dataType: "string";
187
+ columnType: "SQLiteText";
188
+ data: string;
189
+ driverParam: string;
190
+ notNull: false;
191
+ hasDefault: false;
192
+ isPrimaryKey: false;
193
+ isAutoincrement: false;
194
+ hasRuntimeDefault: false;
195
+ enumValues: [string, ...string[]];
196
+ baseColumn: never;
197
+ identity: undefined;
198
+ generated: undefined;
199
+ }, {}, {
200
+ length: number | undefined;
201
+ }>;
202
+ };
203
+ dialect: "sqlite";
204
+ }>;
205
+ export declare const sessionsPg: import("drizzle-orm/pg-core").PgTableWithColumns<{
206
+ name: "sessions";
207
+ schema: undefined;
208
+ columns: {
209
+ id: import("drizzle-orm/pg-core").PgColumn<{
210
+ name: "id";
211
+ tableName: "sessions";
212
+ dataType: "string";
213
+ columnType: "PgText";
214
+ data: string;
215
+ driverParam: string;
216
+ notNull: true;
217
+ hasDefault: false;
218
+ isPrimaryKey: true;
219
+ isAutoincrement: false;
220
+ hasRuntimeDefault: false;
221
+ enumValues: [string, ...string[]];
222
+ baseColumn: never;
223
+ identity: undefined;
224
+ generated: undefined;
225
+ }, {}, {}>;
226
+ title: import("drizzle-orm/pg-core").PgColumn<{
227
+ name: "title";
228
+ tableName: "sessions";
229
+ dataType: "string";
230
+ columnType: "PgText";
231
+ data: string;
232
+ driverParam: string;
233
+ notNull: false;
234
+ hasDefault: false;
235
+ isPrimaryKey: false;
236
+ isAutoincrement: false;
237
+ hasRuntimeDefault: false;
238
+ enumValues: [string, ...string[]];
239
+ baseColumn: never;
240
+ identity: undefined;
241
+ generated: undefined;
242
+ }, {}, {}>;
243
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
244
+ name: "created_at";
245
+ tableName: "sessions";
246
+ dataType: "string";
247
+ columnType: "PgText";
248
+ data: string;
249
+ driverParam: string;
250
+ notNull: true;
251
+ hasDefault: false;
252
+ isPrimaryKey: false;
253
+ isAutoincrement: false;
254
+ hasRuntimeDefault: false;
255
+ enumValues: [string, ...string[]];
256
+ baseColumn: never;
257
+ identity: undefined;
258
+ generated: undefined;
259
+ }, {}, {}>;
260
+ updatedAt: import("drizzle-orm/pg-core").PgColumn<{
261
+ name: "updated_at";
262
+ tableName: "sessions";
263
+ dataType: "string";
264
+ columnType: "PgText";
265
+ data: string;
266
+ driverParam: string;
267
+ notNull: true;
268
+ hasDefault: false;
269
+ isPrimaryKey: false;
270
+ isAutoincrement: false;
271
+ hasRuntimeDefault: false;
272
+ enumValues: [string, ...string[]];
273
+ baseColumn: never;
274
+ identity: undefined;
275
+ generated: undefined;
276
+ }, {}, {}>;
277
+ };
278
+ dialect: "pg";
279
+ }>;
280
+ export declare const messagesPg: import("drizzle-orm/pg-core").PgTableWithColumns<{
281
+ name: "messages";
282
+ schema: undefined;
283
+ columns: {
284
+ id: import("drizzle-orm/pg-core").PgColumn<{
285
+ name: "id";
286
+ tableName: "messages";
287
+ dataType: "string";
288
+ columnType: "PgText";
289
+ data: string;
290
+ driverParam: string;
291
+ notNull: true;
292
+ hasDefault: false;
293
+ isPrimaryKey: true;
294
+ isAutoincrement: false;
295
+ hasRuntimeDefault: false;
296
+ enumValues: [string, ...string[]];
297
+ baseColumn: never;
298
+ identity: undefined;
299
+ generated: undefined;
300
+ }, {}, {}>;
301
+ sessionId: import("drizzle-orm/pg-core").PgColumn<{
302
+ name: "session_id";
303
+ tableName: "messages";
304
+ dataType: "string";
305
+ columnType: "PgText";
306
+ data: string;
307
+ driverParam: string;
308
+ notNull: true;
309
+ hasDefault: false;
310
+ isPrimaryKey: false;
311
+ isAutoincrement: false;
312
+ hasRuntimeDefault: false;
313
+ enumValues: [string, ...string[]];
314
+ baseColumn: never;
315
+ identity: undefined;
316
+ generated: undefined;
317
+ }, {}, {}>;
318
+ role: import("drizzle-orm/pg-core").PgColumn<{
319
+ name: "role";
320
+ tableName: "messages";
321
+ dataType: "string";
322
+ columnType: "PgText";
323
+ data: string;
324
+ driverParam: string;
325
+ notNull: true;
326
+ hasDefault: false;
327
+ isPrimaryKey: false;
328
+ isAutoincrement: false;
329
+ hasRuntimeDefault: false;
330
+ enumValues: [string, ...string[]];
331
+ baseColumn: never;
332
+ identity: undefined;
333
+ generated: undefined;
334
+ }, {}, {}>;
335
+ content: import("drizzle-orm/pg-core").PgColumn<{
336
+ name: "content";
337
+ tableName: "messages";
338
+ dataType: "string";
339
+ columnType: "PgText";
340
+ data: string;
341
+ driverParam: string;
342
+ notNull: true;
343
+ hasDefault: false;
344
+ isPrimaryKey: false;
345
+ isAutoincrement: false;
346
+ hasRuntimeDefault: false;
347
+ enumValues: [string, ...string[]];
348
+ baseColumn: never;
349
+ identity: undefined;
350
+ generated: undefined;
351
+ }, {}, {}>;
352
+ ts: import("drizzle-orm/pg-core").PgColumn<{
353
+ name: "ts";
354
+ tableName: "messages";
355
+ dataType: "string";
356
+ columnType: "PgText";
357
+ data: string;
358
+ driverParam: string;
359
+ notNull: true;
360
+ hasDefault: false;
361
+ isPrimaryKey: false;
362
+ isAutoincrement: false;
363
+ hasRuntimeDefault: false;
364
+ enumValues: [string, ...string[]];
365
+ baseColumn: never;
366
+ identity: undefined;
367
+ generated: undefined;
368
+ }, {}, {}>;
369
+ toolCalls: import("drizzle-orm/pg-core").PgColumn<{
370
+ name: "tool_calls";
371
+ tableName: "messages";
372
+ dataType: "string";
373
+ columnType: "PgText";
374
+ data: string;
375
+ driverParam: string;
376
+ notNull: false;
377
+ hasDefault: false;
378
+ isPrimaryKey: false;
379
+ isAutoincrement: false;
380
+ hasRuntimeDefault: false;
381
+ enumValues: [string, ...string[]];
382
+ baseColumn: never;
383
+ identity: undefined;
384
+ generated: undefined;
385
+ }, {}, {}>;
386
+ };
387
+ dialect: "pg";
388
+ }>;
389
+ //# sourceMappingURL=sessions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/schema/sessions.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKzB,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASzB,CAAC;AAIH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKrB,CAAC;AAEH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASrB,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { sqliteTable, text, index } from "drizzle-orm/sqlite-core";
2
+ import { pgTable, text as pgText, index as pgIndex } from "drizzle-orm/pg-core";
3
+ // ── SQLite schema ──────────────────────────────────────────────────────
4
+ export const sessionsSqlite = sqliteTable("sessions", {
5
+ id: text("id").primaryKey(),
6
+ title: text("title"),
7
+ createdAt: text("created_at").notNull(),
8
+ updatedAt: text("updated_at").notNull(),
9
+ });
10
+ export const messagesSqlite = sqliteTable("messages", {
11
+ id: text("id").primaryKey(),
12
+ sessionId: text("session_id").notNull().references(() => sessionsSqlite.id, { onDelete: "cascade" }),
13
+ role: text("role").notNull(),
14
+ content: text("content").notNull(),
15
+ ts: text("ts").notNull(),
16
+ toolCalls: text("tool_calls"),
17
+ }, (table) => [
18
+ index("idx_messages_session").on(table.sessionId, table.ts),
19
+ ]);
20
+ // ── PostgreSQL schema ──────────────────────────────────────────────────
21
+ export const sessionsPg = pgTable("sessions", {
22
+ id: pgText("id").primaryKey(),
23
+ title: pgText("title"),
24
+ createdAt: pgText("created_at").notNull(),
25
+ updatedAt: pgText("updated_at").notNull(),
26
+ });
27
+ export const messagesPg = pgTable("messages", {
28
+ id: pgText("id").primaryKey(),
29
+ sessionId: pgText("session_id").notNull().references(() => sessionsPg.id, { onDelete: "cascade" }),
30
+ role: pgText("role").notNull(),
31
+ content: pgText("content").notNull(),
32
+ ts: pgText("ts").notNull(),
33
+ toolCalls: pgText("tool_calls"),
34
+ }, (table) => [
35
+ pgIndex("idx_pg_messages_session").on(table.sessionId, table.ts),
36
+ ]);
37
+ //# sourceMappingURL=sessions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/schema/sessions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,IAAI,IAAI,MAAM,EAAE,KAAK,IAAI,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEhF,0EAA0E;AAE1E,MAAM,CAAC,MAAM,cAAc,GAAG,WAAW,CAAC,UAAU,EAAE;IACpD,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC3B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC;IACpB,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IACvC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;CACxC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,WAAW,CAAC,UAAU,EAAE;IACpD,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC3B,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IACpG,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;IAC5B,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;IAClC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE;IACxB,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC;CAC9B,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC;IACZ,KAAK,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;CAC5D,CAAC,CAAC;AAEH,0EAA0E;AAE1E,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,EAAE;IAC5C,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC7B,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IACzC,SAAS,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;CAC1C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,EAAE;IAC5C,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC7B,SAAS,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IAClG,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;IAC9B,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;IACpC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE;IAC1B,SAAS,EAAE,MAAM,CAAC,YAAY,CAAC;CAChC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC;IACZ,OAAO,CAAC,yBAAyB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;CACjE,CAAC,CAAC"}