@storyshelf/db-mysql 0.0.0-stage → 0.5.3

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 (72) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +28 -2
  3. package/dist/ddl.d.mts +8 -0
  4. package/dist/ddl.mjs +321 -0
  5. package/dist/ddl.mjs.map +1 -0
  6. package/dist/drizzle-factory-mysql.mjs +89 -0
  7. package/dist/drizzle-factory-mysql.mjs.map +1 -0
  8. package/dist/drizzle-factory.mjs +42 -0
  9. package/dist/drizzle-factory.mjs.map +1 -0
  10. package/dist/index.d.mts +25 -0
  11. package/dist/index.mjs +73 -0
  12. package/dist/index.mjs.map +1 -0
  13. package/dist/migrate.mjs +91 -0
  14. package/dist/migrate.mjs.map +1 -0
  15. package/dist/planetscale.d.mts +18 -0
  16. package/dist/planetscale.mjs +12 -0
  17. package/dist/planetscale.mjs.map +1 -0
  18. package/dist/schema/baseline.d.mts +197 -0
  19. package/dist/schema/baseline.mjs +29 -0
  20. package/dist/schema/baseline.mjs.map +1 -0
  21. package/dist/schema/build.d.mts +380 -0
  22. package/dist/schema/build.mjs +39 -0
  23. package/dist/schema/build.mjs.map +1 -0
  24. package/dist/schema/capture-attempt.d.mts +445 -0
  25. package/dist/schema/capture-attempt.mjs +58 -0
  26. package/dist/schema/capture-attempt.mjs.map +1 -0
  27. package/dist/schema/comment.d.mts +197 -0
  28. package/dist/schema/comment.mjs +32 -0
  29. package/dist/schema/comment.mjs.map +1 -0
  30. package/dist/schema/content-refs.d.mts +89 -0
  31. package/dist/schema/content-refs.mjs +22 -0
  32. package/dist/schema/content-refs.mjs.map +1 -0
  33. package/dist/schema/label.d.mts +262 -0
  34. package/dist/schema/label.mjs +36 -0
  35. package/dist/schema/label.mjs.map +1 -0
  36. package/dist/schema/member.d.mts +129 -0
  37. package/dist/schema/member.mjs +23 -0
  38. package/dist/schema/member.mjs.map +1 -0
  39. package/dist/schema/notification.d.mts +316 -0
  40. package/dist/schema/notification.mjs +42 -0
  41. package/dist/schema/notification.mjs.map +1 -0
  42. package/dist/schema/project-group-mapping.d.mts +110 -0
  43. package/dist/schema/project-group-mapping.mjs +21 -0
  44. package/dist/schema/project-group-mapping.mjs.map +1 -0
  45. package/dist/schema/project.d.mts +337 -0
  46. package/dist/schema/project.mjs +35 -0
  47. package/dist/schema/project.mjs.map +1 -0
  48. package/dist/schema/snapshot.d.mts +452 -0
  49. package/dist/schema/snapshot.mjs +47 -0
  50. package/dist/schema/snapshot.mjs.map +1 -0
  51. package/dist/schema/status-config.d.mts +143 -0
  52. package/dist/schema/status-config.mjs +26 -0
  53. package/dist/schema/status-config.mjs.map +1 -0
  54. package/dist/schema/token.d.mts +143 -0
  55. package/dist/schema/token.mjs +27 -0
  56. package/dist/schema/token.mjs.map +1 -0
  57. package/dist/schema/user-invite.d.mts +125 -0
  58. package/dist/schema/user-invite.mjs +28 -0
  59. package/dist/schema/user-invite.mjs.map +1 -0
  60. package/dist/schema/user.d.mts +146 -0
  61. package/dist/schema/user.mjs +25 -0
  62. package/dist/schema/user.mjs.map +1 -0
  63. package/dist/schema/webhook.d.mts +143 -0
  64. package/dist/schema/webhook.mjs +26 -0
  65. package/dist/schema/webhook.mjs.map +1 -0
  66. package/dist/schema.d.mts +47 -0
  67. package/dist/schema.mjs +46 -0
  68. package/dist/schema.mjs.map +1 -0
  69. package/dist/tidb.d.mts +16 -0
  70. package/dist/tidb.mjs +12 -0
  71. package/dist/tidb.mjs.map +1 -0
  72. package/package.json +111 -4
@@ -0,0 +1,380 @@
1
+ import __tsdown_shims_path from 'node:path';
2
+ import __tsdown_shims_url from 'node:url';
3
+ import { BuildStatus } from "@storyshelf/core/types";
4
+ //#region src/schema/build.d.ts
5
+ /** Narrow `builds` table definition. */
6
+ declare const builds: import("drizzle-orm/mysql-core").MySqlTableWithColumns<{
7
+ name: "builds";
8
+ schema: undefined;
9
+ columns: {
10
+ id: import("drizzle-orm/mysql-core").MySqlColumn<{
11
+ name: "id";
12
+ tableName: "builds";
13
+ dataType: "string";
14
+ columnType: "MySqlText";
15
+ data: string;
16
+ driverParam: string;
17
+ notNull: true;
18
+ hasDefault: false;
19
+ isPrimaryKey: true;
20
+ isAutoincrement: false;
21
+ hasRuntimeDefault: false;
22
+ enumValues: [string, ...string[]];
23
+ baseColumn: never;
24
+ identity: undefined;
25
+ generated: undefined;
26
+ }, {}, {}>;
27
+ projectId: import("drizzle-orm/mysql-core").MySqlColumn<{
28
+ name: "project_id";
29
+ tableName: "builds";
30
+ dataType: "string";
31
+ columnType: "MySqlText";
32
+ data: string;
33
+ driverParam: string;
34
+ notNull: true;
35
+ hasDefault: false;
36
+ isPrimaryKey: false;
37
+ isAutoincrement: false;
38
+ hasRuntimeDefault: false;
39
+ enumValues: [string, ...string[]];
40
+ baseColumn: never;
41
+ identity: undefined;
42
+ generated: undefined;
43
+ }, {}, {}>;
44
+ gitSha: import("drizzle-orm/mysql-core").MySqlColumn<{
45
+ name: "git_sha";
46
+ tableName: "builds";
47
+ dataType: "string";
48
+ columnType: "MySqlText";
49
+ data: string;
50
+ driverParam: string;
51
+ notNull: true;
52
+ hasDefault: false;
53
+ isPrimaryKey: false;
54
+ isAutoincrement: false;
55
+ hasRuntimeDefault: false;
56
+ enumValues: [string, ...string[]];
57
+ baseColumn: never;
58
+ identity: undefined;
59
+ generated: undefined;
60
+ }, {}, {}>;
61
+ gitBranch: import("drizzle-orm/mysql-core").MySqlColumn<{
62
+ name: "git_branch";
63
+ tableName: "builds";
64
+ dataType: "string";
65
+ columnType: "MySqlText";
66
+ data: string;
67
+ driverParam: string;
68
+ notNull: true;
69
+ hasDefault: false;
70
+ isPrimaryKey: false;
71
+ isAutoincrement: false;
72
+ hasRuntimeDefault: false;
73
+ enumValues: [string, ...string[]];
74
+ baseColumn: never;
75
+ identity: undefined;
76
+ generated: undefined;
77
+ }, {}, {}>;
78
+ isDefault: import("drizzle-orm/mysql-core").MySqlColumn<{
79
+ name: "is_default";
80
+ tableName: "builds";
81
+ dataType: "boolean";
82
+ columnType: "MySqlBoolean";
83
+ data: boolean;
84
+ driverParam: number | boolean;
85
+ notNull: true;
86
+ hasDefault: true;
87
+ isPrimaryKey: false;
88
+ isAutoincrement: false;
89
+ hasRuntimeDefault: false;
90
+ enumValues: undefined;
91
+ baseColumn: never;
92
+ identity: undefined;
93
+ generated: undefined;
94
+ }, {}, {}>;
95
+ authorEmail: import("drizzle-orm/mysql-core").MySqlColumn<{
96
+ name: "author_email";
97
+ tableName: "builds";
98
+ dataType: "string";
99
+ columnType: "MySqlText";
100
+ data: string;
101
+ driverParam: string;
102
+ notNull: false;
103
+ hasDefault: false;
104
+ isPrimaryKey: false;
105
+ isAutoincrement: false;
106
+ hasRuntimeDefault: false;
107
+ enumValues: [string, ...string[]];
108
+ baseColumn: never;
109
+ identity: undefined;
110
+ generated: undefined;
111
+ }, {}, {}>;
112
+ authorName: import("drizzle-orm/mysql-core").MySqlColumn<{
113
+ name: "author_name";
114
+ tableName: "builds";
115
+ dataType: "string";
116
+ columnType: "MySqlText";
117
+ data: string;
118
+ driverParam: string;
119
+ notNull: false;
120
+ hasDefault: false;
121
+ isPrimaryKey: false;
122
+ isAutoincrement: false;
123
+ hasRuntimeDefault: false;
124
+ enumValues: [string, ...string[]];
125
+ baseColumn: never;
126
+ identity: undefined;
127
+ generated: undefined;
128
+ }, {}, {}>;
129
+ message: import("drizzle-orm/mysql-core").MySqlColumn<{
130
+ name: "message";
131
+ tableName: "builds";
132
+ dataType: "string";
133
+ columnType: "MySqlText";
134
+ data: string;
135
+ driverParam: string;
136
+ notNull: false;
137
+ hasDefault: false;
138
+ isPrimaryKey: false;
139
+ isAutoincrement: false;
140
+ hasRuntimeDefault: false;
141
+ enumValues: [string, ...string[]];
142
+ baseColumn: never;
143
+ identity: undefined;
144
+ generated: undefined;
145
+ }, {}, {}>;
146
+ public: import("drizzle-orm/mysql-core").MySqlColumn<{
147
+ name: "public";
148
+ tableName: "builds";
149
+ dataType: "boolean";
150
+ columnType: "MySqlBoolean";
151
+ data: boolean;
152
+ driverParam: number | boolean;
153
+ notNull: true;
154
+ hasDefault: true;
155
+ isPrimaryKey: false;
156
+ isAutoincrement: false;
157
+ hasRuntimeDefault: false;
158
+ enumValues: undefined;
159
+ baseColumn: never;
160
+ identity: undefined;
161
+ generated: undefined;
162
+ }, {}, {}>;
163
+ status: import("drizzle-orm/mysql-core").MySqlColumn<{
164
+ name: "status";
165
+ tableName: "builds";
166
+ dataType: "string";
167
+ columnType: "MySqlText";
168
+ data: "approved" | "capturing" | "comparing" | "failed" | "pending" | "rejected" | "reviewing";
169
+ driverParam: string;
170
+ notNull: true;
171
+ hasDefault: true;
172
+ isPrimaryKey: false;
173
+ isAutoincrement: false;
174
+ hasRuntimeDefault: false;
175
+ enumValues: [string, ...string[]];
176
+ baseColumn: never;
177
+ identity: undefined;
178
+ generated: undefined;
179
+ }, {}, {
180
+ $type: "approved" | "capturing" | "comparing" | "failed" | "pending" | "rejected" | "reviewing";
181
+ }>;
182
+ snapshotCount: import("drizzle-orm/mysql-core").MySqlColumn<{
183
+ name: "snapshot_count";
184
+ tableName: "builds";
185
+ dataType: "number";
186
+ columnType: "MySqlInt";
187
+ data: number;
188
+ driverParam: string | number;
189
+ notNull: true;
190
+ hasDefault: true;
191
+ isPrimaryKey: false;
192
+ isAutoincrement: false;
193
+ hasRuntimeDefault: false;
194
+ enumValues: undefined;
195
+ baseColumn: never;
196
+ identity: undefined;
197
+ generated: undefined;
198
+ }, {}, {}>;
199
+ changedCount: import("drizzle-orm/mysql-core").MySqlColumn<{
200
+ name: "changed_count";
201
+ tableName: "builds";
202
+ dataType: "number";
203
+ columnType: "MySqlInt";
204
+ data: number;
205
+ driverParam: string | number;
206
+ notNull: true;
207
+ hasDefault: true;
208
+ isPrimaryKey: false;
209
+ isAutoincrement: false;
210
+ hasRuntimeDefault: false;
211
+ enumValues: undefined;
212
+ baseColumn: never;
213
+ identity: undefined;
214
+ generated: undefined;
215
+ }, {}, {}>;
216
+ approvedCount: import("drizzle-orm/mysql-core").MySqlColumn<{
217
+ name: "approved_count";
218
+ tableName: "builds";
219
+ dataType: "number";
220
+ columnType: "MySqlInt";
221
+ data: number;
222
+ driverParam: string | number;
223
+ notNull: true;
224
+ hasDefault: true;
225
+ isPrimaryKey: false;
226
+ isAutoincrement: false;
227
+ hasRuntimeDefault: false;
228
+ enumValues: undefined;
229
+ baseColumn: never;
230
+ identity: undefined;
231
+ generated: undefined;
232
+ }, {}, {}>;
233
+ rejectedCount: import("drizzle-orm/mysql-core").MySqlColumn<{
234
+ name: "rejected_count";
235
+ tableName: "builds";
236
+ dataType: "number";
237
+ columnType: "MySqlInt";
238
+ data: number;
239
+ driverParam: string | number;
240
+ notNull: true;
241
+ hasDefault: true;
242
+ isPrimaryKey: false;
243
+ isAutoincrement: false;
244
+ hasRuntimeDefault: false;
245
+ enumValues: undefined;
246
+ baseColumn: never;
247
+ identity: undefined;
248
+ generated: undefined;
249
+ }, {}, {}>;
250
+ affectedOnly: import("drizzle-orm/mysql-core").MySqlColumn<{
251
+ name: "affected_only";
252
+ tableName: "builds";
253
+ dataType: "boolean";
254
+ columnType: "MySqlBoolean";
255
+ data: boolean;
256
+ driverParam: number | boolean;
257
+ notNull: true;
258
+ hasDefault: true;
259
+ isPrimaryKey: false;
260
+ isAutoincrement: false;
261
+ hasRuntimeDefault: false;
262
+ enumValues: undefined;
263
+ baseColumn: never;
264
+ identity: undefined;
265
+ generated: undefined;
266
+ }, {}, {}>;
267
+ baselineSha: import("drizzle-orm/mysql-core").MySqlColumn<{
268
+ name: "baseline_sha";
269
+ tableName: "builds";
270
+ dataType: "string";
271
+ columnType: "MySqlText";
272
+ data: string;
273
+ driverParam: string;
274
+ notNull: false;
275
+ hasDefault: false;
276
+ isPrimaryKey: false;
277
+ isAutoincrement: false;
278
+ hasRuntimeDefault: false;
279
+ enumValues: [string, ...string[]];
280
+ baseColumn: never;
281
+ identity: undefined;
282
+ generated: undefined;
283
+ }, {}, {}>;
284
+ changedFiles: import("drizzle-orm/mysql-core").MySqlColumn<{
285
+ name: "changed_files";
286
+ tableName: "builds";
287
+ dataType: "string";
288
+ columnType: "MySqlText";
289
+ data: string;
290
+ driverParam: string;
291
+ notNull: false;
292
+ hasDefault: false;
293
+ isPrimaryKey: false;
294
+ isAutoincrement: false;
295
+ hasRuntimeDefault: false;
296
+ enumValues: [string, ...string[]];
297
+ baseColumn: never;
298
+ identity: undefined;
299
+ generated: undefined;
300
+ }, {}, {}>;
301
+ affectedImportPaths: import("drizzle-orm/mysql-core").MySqlColumn<{
302
+ name: "affected_import_paths";
303
+ tableName: "builds";
304
+ dataType: "string";
305
+ columnType: "MySqlText";
306
+ data: string;
307
+ driverParam: string;
308
+ notNull: false;
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
+ createdAt: import("drizzle-orm/mysql-core").MySqlColumn<{
319
+ name: "created_at";
320
+ tableName: "builds";
321
+ dataType: "string";
322
+ columnType: "MySqlDateTimeString";
323
+ data: string;
324
+ driverParam: string | number;
325
+ notNull: true;
326
+ hasDefault: false;
327
+ isPrimaryKey: false;
328
+ isAutoincrement: false;
329
+ hasRuntimeDefault: false;
330
+ enumValues: undefined;
331
+ baseColumn: never;
332
+ identity: undefined;
333
+ generated: undefined;
334
+ }, {}, {}>;
335
+ updatedAt: import("drizzle-orm/mysql-core").MySqlColumn<{
336
+ name: "updated_at";
337
+ tableName: "builds";
338
+ dataType: "string";
339
+ columnType: "MySqlDateTimeString";
340
+ data: string;
341
+ driverParam: string | number;
342
+ notNull: true;
343
+ hasDefault: false;
344
+ isPrimaryKey: false;
345
+ isAutoincrement: false;
346
+ hasRuntimeDefault: false;
347
+ enumValues: undefined;
348
+ baseColumn: never;
349
+ identity: undefined;
350
+ generated: undefined;
351
+ }, {}, {}>;
352
+ };
353
+ dialect: 'mysql';
354
+ }>;
355
+ /** A build row. */
356
+ interface Build {
357
+ id: string;
358
+ projectId: string;
359
+ gitSha: string;
360
+ gitBranch: string;
361
+ isDefault: boolean;
362
+ authorEmail: string | null;
363
+ authorName: string | null;
364
+ message: string | null;
365
+ public: boolean;
366
+ status: BuildStatus;
367
+ snapshotCount: number;
368
+ changedCount: number;
369
+ approvedCount: number;
370
+ rejectedCount: number;
371
+ affectedOnly: boolean;
372
+ baselineSha: string | null;
373
+ changedFiles: string | null;
374
+ affectedImportPaths: string | null;
375
+ createdAt: string;
376
+ updatedAt: string;
377
+ }
378
+ //#endregion
379
+ export { Build, builds };
380
+ //# sourceMappingURL=build.d.mts.map
@@ -0,0 +1,39 @@
1
+ import "node:path";
2
+ import "node:url";
3
+ import.meta.url;
4
+ import { projects } from "./project.mjs";
5
+ import { boolean, datetime, index, int, mysqlTable, text } from "drizzle-orm/mysql-core";
6
+ //#region src/schema/build.ts
7
+ /** Narrow `builds` table definition. */
8
+ const builds = mysqlTable("builds", {
9
+ id: text("id").primaryKey(),
10
+ projectId: text("project_id").notNull().references(() => projects.id, { onDelete: "cascade" }),
11
+ gitSha: text("git_sha").notNull(),
12
+ gitBranch: text("git_branch").notNull(),
13
+ isDefault: boolean("is_default").notNull().default(false),
14
+ authorEmail: text("author_email"),
15
+ authorName: text("author_name"),
16
+ message: text("message"),
17
+ public: boolean("public").notNull().default(false),
18
+ status: text("status").$type().notNull().default("pending"),
19
+ snapshotCount: int("snapshot_count").notNull().default(0),
20
+ changedCount: int("changed_count").notNull().default(0),
21
+ approvedCount: int("approved_count").notNull().default(0),
22
+ rejectedCount: int("rejected_count").notNull().default(0),
23
+ affectedOnly: boolean("affected_only").notNull().default(true),
24
+ baselineSha: text("baseline_sha"),
25
+ changedFiles: text("changed_files"),
26
+ affectedImportPaths: text("affected_import_paths"),
27
+ createdAt: datetime("created_at", {
28
+ mode: "string",
29
+ fsp: 3
30
+ }).notNull(),
31
+ updatedAt: datetime("updated_at", {
32
+ mode: "string",
33
+ fsp: 3
34
+ }).notNull()
35
+ }, (t) => [index("builds_project_gitsha_idx").on(t.projectId, t.gitSha), index("builds_git_branch_idx").on(t.gitBranch)]);
36
+ //#endregion
37
+ export { builds };
38
+
39
+ //# sourceMappingURL=build.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.mjs","names":[],"sources":["../../src/schema/build.ts"],"sourcesContent":["import type { BuildStatus } from \"@storyshelf/core/types\";\nimport { boolean, index, int, mysqlTable, text, datetime } from \"drizzle-orm/mysql-core\";\nimport { projects } from \"./project.ts\";\n\n/** Narrow `builds` table definition. */\nexport const builds = mysqlTable(\n \"builds\",\n {\n id: text(\"id\").primaryKey(),\n projectId: text(\"project_id\")\n .notNull()\n .references(() => projects.id, { onDelete: \"cascade\" }),\n gitSha: text(\"git_sha\").notNull(),\n gitBranch: text(\"git_branch\").notNull(),\n isDefault: boolean(\"is_default\").notNull().default(false),\n authorEmail: text(\"author_email\"),\n authorName: text(\"author_name\"),\n message: text(\"message\"),\n public: boolean(\"public\").notNull().default(false),\n status: text(\"status\").$type<BuildStatus>().notNull().default(\"pending\"),\n snapshotCount: int(\"snapshot_count\").notNull().default(0),\n changedCount: int(\"changed_count\").notNull().default(0),\n approvedCount: int(\"approved_count\").notNull().default(0),\n rejectedCount: int(\"rejected_count\").notNull().default(0),\n affectedOnly: boolean(\"affected_only\").notNull().default(true),\n baselineSha: text(\"baseline_sha\"),\n changedFiles: text(\"changed_files\"),\n affectedImportPaths: text(\"affected_import_paths\"),\n createdAt: datetime(\"created_at\", { mode: \"string\", fsp: 3 }).notNull(),\n updatedAt: datetime(\"updated_at\", { mode: \"string\", fsp: 3 }).notNull(),\n },\n (t) => [\n index(\"builds_project_gitsha_idx\").on(t.projectId, t.gitSha),\n index(\"builds_git_branch_idx\").on(t.gitBranch),\n ],\n);\n\n/** A build row. */\nexport interface Build {\n id: string;\n projectId: string;\n gitSha: string;\n gitBranch: string;\n isDefault: boolean;\n authorEmail: string | null;\n authorName: string | null;\n message: string | null;\n public: boolean;\n status: BuildStatus;\n snapshotCount: number;\n changedCount: number;\n approvedCount: number;\n rejectedCount: number;\n affectedOnly: boolean;\n baselineSha: string | null;\n changedFiles: string | null;\n affectedImportPaths: string | null;\n createdAt: string;\n updatedAt: string;\n}\n"],"mappings":";;;;;;;AAKA,MAAa,SAAS,WACpB,UACA;CACE,IAAI,KAAK,IAAI,CAAC,CAAC,WAAW;CAC1B,WAAW,KAAK,YAAY,CAAC,CAC1B,QAAQ,CAAC,CACT,iBAAiB,SAAS,IAAI,EAAE,UAAU,UAAU,CAAC;CACxD,QAAQ,KAAK,SAAS,CAAC,CAAC,QAAQ;CAChC,WAAW,KAAK,YAAY,CAAC,CAAC,QAAQ;CACtC,WAAW,QAAQ,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,KAAK;CACxD,aAAa,KAAK,cAAc;CAChC,YAAY,KAAK,aAAa;CAC9B,SAAS,KAAK,SAAS;CACvB,QAAQ,QAAQ,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,KAAK;CACjD,QAAQ,KAAK,QAAQ,CAAC,CAAC,MAAmB,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,SAAS;CACvE,eAAe,IAAI,gBAAgB,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC;CACxD,cAAc,IAAI,eAAe,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC;CACtD,eAAe,IAAI,gBAAgB,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC;CACxD,eAAe,IAAI,gBAAgB,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC;CACxD,cAAc,QAAQ,eAAe,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,IAAI;CAC7D,aAAa,KAAK,cAAc;CAChC,cAAc,KAAK,eAAe;CAClC,qBAAqB,KAAK,uBAAuB;CACjD,WAAW,SAAS,cAAc;EAAE,MAAM;EAAU,KAAK;CAAE,CAAC,CAAC,CAAC,QAAQ;CACtE,WAAW,SAAS,cAAc;EAAE,MAAM;EAAU,KAAK;CAAE,CAAC,CAAC,CAAC,QAAQ;AACxE,IACC,MAAM,CACL,MAAM,2BAA2B,CAAC,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,GAC3D,MAAM,uBAAuB,CAAC,CAAC,GAAG,EAAE,SAAS,CAC/C,CACF"}