@paroicms/server 1.105.3 → 1.107.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 (34) hide show
  1. package/ddl/main.ddl.sql +8 -1
  2. package/dist/admin-backend/logging/logging.resolver.d.ts +3 -0
  3. package/dist/admin-backend/logging/logging.resolver.js +40 -0
  4. package/dist/admin-backend/logging/logging.resolver.js.map +1 -0
  5. package/dist/admin-backend/logging/naive-rate-limiter.d.ts +1 -0
  6. package/dist/admin-backend/logging/naive-rate-limiter.js +37 -0
  7. package/dist/admin-backend/logging/naive-rate-limiter.js.map +1 -0
  8. package/dist/connector/db-init/db-constants.d.ts +1 -1
  9. package/dist/connector/db-init/db-constants.js +1 -1
  10. package/dist/connector/db-init/ddl-migration.js +33 -0
  11. package/dist/connector/db-init/ddl-migration.js.map +1 -1
  12. package/dist/connector/site-schema/schema-lib.d.ts +1 -1
  13. package/dist/connector/site-schema/schema-lib.js +28 -4
  14. package/dist/connector/site-schema/schema-lib.js.map +1 -1
  15. package/dist/connector/site-schema/site-schema-factory.js +18 -11
  16. package/dist/connector/site-schema/site-schema-factory.js.map +1 -1
  17. package/dist/graphql/apollo-server-init.js +2 -0
  18. package/dist/graphql/apollo-server-init.js.map +1 -1
  19. package/dist/helpers/label-translator.helper.d.ts +2 -2
  20. package/dist/helpers/label-translator.helper.js +5 -4
  21. package/dist/helpers/label-translator.helper.js.map +1 -1
  22. package/dist/rendered-site/feed/feed-generator.js +2 -2
  23. package/dist/rendered-site/feed/feed-generator.js.map +1 -1
  24. package/dist/site-schema-migration/migrations/site-schema-migration-8-to-9.js.map +1 -1
  25. package/dist/site-schema-migration/migrations/site-schema-migration-9-to-10.d.ts +21 -0
  26. package/dist/site-schema-migration/migrations/site-schema-migration-9-to-10.js +33 -0
  27. package/dist/site-schema-migration/migrations/site-schema-migration-9-to-10.js.map +1 -0
  28. package/dist/site-schema-migration/site-schema-migration.js +6 -1
  29. package/dist/site-schema-migration/site-schema-migration.js.map +1 -1
  30. package/dist/tsconfig.tsbuildinfo +1 -1
  31. package/package.json +11 -11
  32. package/schema.graphql +8 -0
  33. package/site-schema-lib/common-schema.json +1 -1
  34. package/site-schema-lib/field-lib.site-schema.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"site-schema-migration-8-to-9.js","sourceRoot":"","sources":["../../../src/site-schema-migration/migrations/site-schema-migration-8-to-9.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AASjC,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,SAAiB,EAAE,SAAwB;IAC/E,MAAM,SAAS,GAAG;QAChB,+BAA+B,EAAE,GAAG;QACpC,GAAG,SAAS;KACmB,CAAC;IAElC,OAAO,SAAS,CAAC,OAAO,CAAC;IAGzB,IAAI,SAAS,CAAC,aAAa,EAAE,UAAU,EAAE,CAAC;QACxC,SAAS,CAAC,aAAa,CAAC,OAAO,GAAG,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC;QACrE,OAAO,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC;IAC5C,CAAC;IAGD,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;QACtB,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YACnD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,EAAE,UAAU,EAAE,CAAC;gBACnE,MAAM,CAAC,aAAa,CAAC,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC;gBAC/D,OAAO,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC;YACzC,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC;IAGD,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;QACxB,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;YACzD,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;gBACxB,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC;gBACvC,OAAO,QAAQ,CAAC,UAAU,CAAC;YAC7B,CAAC;YAGD,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACpB,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAU,EAAE,EAAE;oBACnD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;wBAClD,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC;wBACjC,OAAO,KAAK,CAAC,UAAU,CAAC;oBAC1B,CAAC;oBACD,OAAO,KAAK,CAAC;gBACf,CAAC,CAAC,CAAC;YACL,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAC1F,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;IAE9F,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"site-schema-migration-8-to-9.js","sourceRoot":"","sources":["../../../src/site-schema-migration/migrations/site-schema-migration-8-to-9.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AASjC,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,SAAiB,EAAE,SAAwB;IAC/E,MAAM,SAAS,GAAG;QAChB,+BAA+B,EAAE,GAAG;QACpC,GAAG,SAAS;KAC8B,CAAC;IAE7C,OAAO,SAAS,CAAC,OAAO,CAAC;IAGzB,IAAI,SAAS,CAAC,aAAa,EAAE,UAAU,EAAE,CAAC;QACxC,SAAS,CAAC,aAAa,CAAC,OAAO,GAAG,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC;QACrE,OAAO,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC;IAC5C,CAAC;IAGD,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;QACtB,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YACnD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,EAAE,UAAU,EAAE,CAAC;gBACnE,MAAM,CAAC,aAAa,CAAC,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC;gBAC/D,OAAO,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC;YACzC,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC;IAGD,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;QACxB,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;YACzD,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;gBACxB,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC;gBACvC,OAAO,QAAQ,CAAC,UAAU,CAAC;YAC7B,CAAC;YAGD,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACpB,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAU,EAAE,EAAE;oBACnD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;wBAClD,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC;wBACjC,OAAO,KAAK,CAAC,UAAU,CAAC;oBAC1B,CAAC;oBACD,OAAO,KAAK,CAAC;gBACf,CAAC,CAAC,CAAC;YACL,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAC1F,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;IAE9F,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,21 @@
1
+ interface JtFieldTypeObjectDef {
2
+ name: string;
3
+ plugin?: string;
4
+ [k: string]: any;
5
+ }
6
+ interface JtNodeTypeV9 {
7
+ kind: string;
8
+ typeName?: string;
9
+ fields?: (string | JtFieldTypeObjectDef)[];
10
+ [k: string]: any;
11
+ }
12
+ interface OldSiteSchemaV9 {
13
+ ParoiCMSSiteSchemaFormatVersion: string;
14
+ languages: string[];
15
+ fieldTypes?: JtFieldTypeObjectDef[];
16
+ nodeTypes?: JtNodeTypeV9[];
17
+ l10n?: Record<string, any>;
18
+ [k: string]: any;
19
+ }
20
+ export declare function migrateFrom9To10(directory: string, oldSchema: OldSiteSchemaV9): Promise<OldSiteSchemaV9>;
21
+ export {};
@@ -0,0 +1,33 @@
1
+ import { rename, writeFile } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ const PLUGIN_FIELDS = {
4
+ leadParagraph: "@paroicms/quill-editor-plugin",
5
+ htmlContent: "@paroicms/quill-editor-plugin",
6
+ introduction: "@paroicms/quill-editor-plugin",
7
+ footerMention: "@paroicms/quill-editor-plugin",
8
+ video: "@paroicms/video-plugin",
9
+ oneLanguageVideo: "@paroicms/video-plugin",
10
+ phones: "@paroicms/list-field-plugin",
11
+ featuredDocument: "@paroicms/internal-link-plugin",
12
+ };
13
+ export async function migrateFrom9To10(directory, oldSchema) {
14
+ const schema = structuredClone(oldSchema);
15
+ schema.ParoiCMSSiteSchemaFormatVersion = "10";
16
+ for (const nodeType of schema.nodeTypes ?? []) {
17
+ if (!nodeType.fields)
18
+ continue;
19
+ for (let i = 0; i < nodeType.fields.length; ++i) {
20
+ const field = nodeType.fields[i];
21
+ if (typeof field !== "string")
22
+ continue;
23
+ const pluginName = PLUGIN_FIELDS[field];
24
+ if (pluginName) {
25
+ nodeType.fields[i] = `${field}[${pluginName}]`;
26
+ }
27
+ }
28
+ }
29
+ await rename(join(directory, "site-schema.json"), join(directory, "site-schema-v9.json"));
30
+ await writeFile(join(directory, "site-schema.json"), JSON.stringify(schema, undefined, 2));
31
+ return schema;
32
+ }
33
+ //# sourceMappingURL=site-schema-migration-9-to-10.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"site-schema-migration-9-to-10.js","sourceRoot":"","sources":["../../../src/site-schema-migration/migrations/site-schema-migration-9-to-10.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AA+BjC,MAAM,aAAa,GAA2B;IAC5C,aAAa,EAAE,+BAA+B;IAC9C,WAAW,EAAE,+BAA+B;IAC5C,YAAY,EAAE,+BAA+B;IAC7C,aAAa,EAAE,+BAA+B;IAC9C,KAAK,EAAE,wBAAwB;IAC/B,gBAAgB,EAAE,wBAAwB;IAC1C,MAAM,EAAE,6BAA6B;IACrC,gBAAgB,EAAE,gCAAgC;CACnD,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,SAAiB,EAAE,SAA0B;IAClF,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,CAAC,+BAA+B,GAAG,IAAI,CAAC;IAG9C,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,MAAM;YAAE,SAAS;QAE/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;YAChD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,SAAS;YAExC,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;YACxC,IAAI,UAAU,EAAE,CAAC;gBACf,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,IAAI,UAAU,GAAG,CAAC;YACjD,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAC1F,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;IAE3F,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -4,6 +4,7 @@ import { appConf, registeredSites } from "../context.js";
4
4
  import { migrateFrom6To7 } from "./migrations/site-schema-migration-6-to-7.js";
5
5
  import { migrateFrom7To8 } from "./migrations/site-schema-migration-7-to-8.js";
6
6
  import { migrateFrom8To9 } from "./migrations/site-schema-migration-8-to-9.js";
7
+ import { migrateFrom9To10 } from "./migrations/site-schema-migration-9-to-10.js";
7
8
  export async function migrateSiteSchema(siteContext) {
8
9
  await migrateDirectory(siteContext.siteDir);
9
10
  }
@@ -20,7 +21,7 @@ export async function migrateSiteSchemas() {
20
21
  }
21
22
  }
22
23
  async function migrateDirectory(directory) {
23
- const targetVersion = "9";
24
+ const targetVersion = "10";
24
25
  console.info(`Migrating site-schema in directory "${directory}"`);
25
26
  let siteSchema = JSON.parse(await readFile(join(directory, "site-schema.json"), "utf-8"));
26
27
  if (siteSchema.ParoiCMSSiteSchemaFormatVersion === targetVersion) {
@@ -39,5 +40,9 @@ async function migrateDirectory(directory) {
39
40
  siteSchema = await migrateFrom8To9(directory, siteSchema);
40
41
  console.info("… migrated from version 8 to 9");
41
42
  }
43
+ if (siteSchema.ParoiCMSSiteSchemaFormatVersion === "9") {
44
+ siteSchema = await migrateFrom9To10(directory, siteSchema);
45
+ console.info("… migrated from version 9 to 10");
46
+ }
42
47
  }
43
48
  //# sourceMappingURL=site-schema-migration.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"site-schema-migration.js","sourceRoot":"","sources":["../../src/site-schema-migration/site-schema-migration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEzD,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAE/E,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,WAAkD;IACxF,MAAM,gBAAgB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,IAAI,WAAqB,CAAC;IAC1B,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QACjC,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjF,CAAC;SAAM,CAAC;QACN,WAAW,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,MAAM,SAAS,IAAI,WAAW,EAAE,CAAC;QACpC,MAAM,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,SAAiB;IAC/C,MAAM,aAAa,GAAG,GAAG,CAAC;IAE1B,OAAO,CAAC,IAAI,CAAC,uCAAuC,SAAS,GAAG,CAAC,CAAC;IAClE,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAE1F,IAAI,UAAU,CAAC,+BAA+B,KAAK,aAAa,EAAE,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,wBAAwB,aAAa,EAAE,CAAC,CAAC;QACtD,OAAO;IACT,CAAC;IAED,IAAI,UAAU,CAAC,OAAO,KAAK,GAAG,EAAE,CAAC;QAC/B,UAAU,GAAG,MAAM,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,UAAU,CAAC,OAAO,KAAK,GAAG,EAAE,CAAC;QAC/B,UAAU,GAAG,MAAM,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,UAAU,CAAC,OAAO,KAAK,GAAG,EAAE,CAAC;QAC/B,UAAU,GAAG,MAAM,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IACjD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"site-schema-migration.js","sourceRoot":"","sources":["../../src/site-schema-migration/site-schema-migration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEzD,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,+CAA+C,CAAC;AAEjF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,WAAkD;IACxF,MAAM,gBAAgB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,IAAI,WAAqB,CAAC;IAC1B,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QACjC,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjF,CAAC;SAAM,CAAC;QACN,WAAW,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,MAAM,SAAS,IAAI,WAAW,EAAE,CAAC;QACpC,MAAM,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,SAAiB;IAC/C,MAAM,aAAa,GAAG,IAAI,CAAC;IAE3B,OAAO,CAAC,IAAI,CAAC,uCAAuC,SAAS,GAAG,CAAC,CAAC;IAClE,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAE1F,IAAI,UAAU,CAAC,+BAA+B,KAAK,aAAa,EAAE,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,wBAAwB,aAAa,EAAE,CAAC,CAAC;QACtD,OAAO;IACT,CAAC;IAED,IAAI,UAAU,CAAC,OAAO,KAAK,GAAG,EAAE,CAAC;QAC/B,UAAU,GAAG,MAAM,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,UAAU,CAAC,OAAO,KAAK,GAAG,EAAE,CAAC;QAC/B,UAAU,GAAG,MAAM,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,UAAU,CAAC,OAAO,KAAK,GAAG,EAAE,CAAC;QAC/B,UAAU,GAAG,MAAM,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,UAAU,CAAC,+BAA+B,KAAK,GAAG,EAAE,CAAC;QACvD,UAAU,GAAG,MAAM,gBAAgB,CAAC,SAAS,EAAE,UAAiB,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAClD,CAAC;AACH,CAAC"}