{"version":3,"sources":["../../src/server/index.ts","../../src/server/ctx.ts","../../src/server/auth.ts","../../src/server/database.ts","../../src/server/schema.ts","../../src/server/schema-to-validator.ts","../../src/server/schemas/Id.ts","../../src/server/schemas/SystemFields.ts","../../src/server/scheduler.ts","../../src/server/storage.ts","../../src/server/functions.ts","../../src/server/http.ts","../../src/server/schemas/PaginationResult.ts"],"sourcesContent":["export {\n  ConfectActionCtx,\n  ConfectMutationCtx,\n  ConfectQueryCtx,\n} from \"~/src/server/ctx\";\n\nexport type {\n  ConfectDoc,\n  TableNamesInConfectDataModel,\n} from \"~/src/server/data-model\";\n\nexport { NotUniqueError } from \"~/src/server/database\";\n\nexport { makeFunctions } from \"~/src/server/functions\";\nexport {\n  type HttpApi,\n  makeHttpRouter,\n} from \"~/src/server/http\";\nexport {\n  type ConfectDataModelFromConfectSchemaDefinition,\n  defineSchema,\n  defineTable,\n} from \"~/src/server/schema\";\nexport { compileSchema } from \"~/src/server/schema-to-validator\";\nexport * as Id from \"~/src/server/schemas/Id\";\nexport * as PaginationResult from \"~/src/server/schemas/PaginationResult\";\n","import type {\n  Expand,\n  FunctionReference,\n  FunctionReturnType,\n  GenericActionCtx,\n  GenericMutationCtx,\n  GenericQueryCtx,\n  NamedTableInfo,\n  OptionalRestArgs,\n  VectorIndexNames,\n  VectorSearchQuery,\n} from \"convex/server\";\nimport type { GenericId } from \"convex/values\";\nimport { Context, Effect } from \"effect\";\n\nimport { type ConfectAuth, ConfectAuthImpl } from \"~/src/server/auth\";\nimport type {\n  DataModelFromConfectDataModel,\n  GenericConfectDataModel,\n  TableNamesInConfectDataModel,\n} from \"~/src/server/data-model\";\nimport {\n  type ConfectDatabaseReader,\n  ConfectDatabaseReaderImpl,\n  type ConfectDatabaseWriter,\n  ConfectDatabaseWriterImpl,\n  type DatabaseSchemasFromConfectDataModel,\n} from \"~/src/server/database\";\nimport {\n  type ConfectScheduler,\n  ConfectSchedulerImpl,\n} from \"~/src/server/scheduler\";\nimport {\n  type ConfectStorageReader,\n  ConfectStorageReaderImpl,\n  type ConfectStorageWriter,\n  ConfectStorageWriterImpl,\n} from \"~/src/server/storage\";\n\nexport type ConfectMutationCtx<\n  ConfectDataModel extends GenericConfectDataModel,\n> = {\n  ctx: GenericMutationCtx<DataModelFromConfectDataModel<ConfectDataModel>>;\n  db: ConfectDatabaseWriter<ConfectDataModel>;\n  auth: ConfectAuth;\n  storage: ConfectStorageWriter;\n  scheduler: ConfectScheduler;\n};\n\nexport const ConfectMutationCtx = <\n  ConfectDataModel extends GenericConfectDataModel,\n>() =>\n  Context.GenericTag<ConfectMutationCtx<ConfectDataModel>>(\n    \"@rjdellecese/confect/ConfectMutationCtx\",\n  );\n\nexport type ConfectQueryCtx<ConfectDataModel extends GenericConfectDataModel> =\n  {\n    ctx: GenericQueryCtx<DataModelFromConfectDataModel<ConfectDataModel>>;\n    db: ConfectDatabaseReader<ConfectDataModel>;\n    auth: ConfectAuth;\n    storage: ConfectStorageReader;\n  };\n\nexport const ConfectQueryCtx = <\n  ConfectDataModel extends GenericConfectDataModel,\n>() =>\n  Context.GenericTag<ConfectQueryCtx<ConfectDataModel>>(\n    \"@rjdellecese/confect/ConfectQueryCtx\",\n  );\n\nexport type ConfectActionCtx<ConfectDataModel extends GenericConfectDataModel> =\n  {\n    runQuery<Query extends FunctionReference<\"query\", \"public\" | \"internal\">>(\n      query: Query,\n      ...args: OptionalRestArgs<Query>\n    ): Effect.Effect<FunctionReturnType<Query>>;\n    runMutation<\n      Mutation extends FunctionReference<\"mutation\", \"public\" | \"internal\">,\n    >(\n      mutation: Mutation,\n      ...args: OptionalRestArgs<Mutation>\n    ): Effect.Effect<FunctionReturnType<Mutation>>;\n    runAction<\n      Action extends FunctionReference<\"action\", \"public\" | \"internal\">,\n    >(\n      action: Action,\n      ...args: OptionalRestArgs<Action>\n    ): Effect.Effect<FunctionReturnType<Action>>;\n\n    ctx: GenericActionCtx<DataModelFromConfectDataModel<ConfectDataModel>>;\n    scheduler: ConfectScheduler;\n    auth: ConfectAuth;\n    storage: ConfectStorageWriter;\n    vectorSearch<\n      TableName extends TableNamesInConfectDataModel<ConfectDataModel>,\n      IndexName extends VectorIndexNames<\n        NamedTableInfo<\n          DataModelFromConfectDataModel<ConfectDataModel>,\n          TableName\n        >\n      >,\n    >(\n      tableName: TableName,\n      indexName: IndexName,\n      query: Expand<\n        VectorSearchQuery<\n          NamedTableInfo<\n            DataModelFromConfectDataModel<ConfectDataModel>,\n            TableName\n          >,\n          IndexName\n        >\n      >,\n    ): Effect.Effect<Array<{ _id: GenericId<TableName>; _score: number }>>;\n  };\n\nexport const ConfectActionCtx = <\n  ConfectDataModel extends GenericConfectDataModel,\n>() =>\n  Context.GenericTag<ConfectActionCtx<ConfectDataModel>>(\n    \"@rjdellecese/confect/ConfectActionCtx\",\n  );\n\nexport const makeConfectQueryCtx = <\n  ConfectDataModel extends GenericConfectDataModel,\n>(\n  ctx: GenericQueryCtx<DataModelFromConfectDataModel<ConfectDataModel>>,\n  databaseSchemas: DatabaseSchemasFromConfectDataModel<ConfectDataModel>,\n): ConfectQueryCtx<ConfectDataModel> => ({\n  ctx,\n  db: new ConfectDatabaseReaderImpl(ctx.db, databaseSchemas),\n  auth: new ConfectAuthImpl(ctx.auth),\n  storage: new ConfectStorageReaderImpl(ctx.storage),\n});\n\nexport const makeConfectMutationCtx = <\n  ConfectDataModel extends GenericConfectDataModel,\n>(\n  ctx: GenericMutationCtx<DataModelFromConfectDataModel<ConfectDataModel>>,\n  databaseSchemas: DatabaseSchemasFromConfectDataModel<ConfectDataModel>,\n): ConfectMutationCtx<ConfectDataModel> => ({\n  ctx,\n  db: new ConfectDatabaseWriterImpl(ctx.db, databaseSchemas),\n  auth: new ConfectAuthImpl(ctx.auth),\n  storage: new ConfectStorageWriterImpl(ctx.storage),\n  scheduler: new ConfectSchedulerImpl(ctx.scheduler),\n});\n\nexport const makeConfectActionCtx = <\n  ConfectDataModel extends GenericConfectDataModel,\n>(\n  ctx: GenericActionCtx<DataModelFromConfectDataModel<ConfectDataModel>>,\n): ConfectActionCtx<ConfectDataModel> => ({\n  runQuery: <Query extends FunctionReference<\"query\", \"public\" | \"internal\">>(\n    query: Query,\n    ...queryArgs: OptionalRestArgs<Query>\n  ) => Effect.promise(() => ctx.runQuery(query, ...queryArgs)),\n  runMutation: <\n    Mutation extends FunctionReference<\"mutation\", \"public\" | \"internal\">,\n  >(\n    mutation: Mutation,\n    ...mutationArgs: OptionalRestArgs<Mutation>\n  ) => Effect.promise(() => ctx.runMutation(mutation, ...mutationArgs)),\n  runAction: <\n    Action extends FunctionReference<\"action\", \"public\" | \"internal\">,\n  >(\n    action: Action,\n    ...actionArgs: OptionalRestArgs<Action>\n  ) => Effect.promise(() => ctx.runAction(action, ...actionArgs)),\n  vectorSearch: <\n    TableName extends TableNamesInConfectDataModel<ConfectDataModel>,\n    IndexName extends VectorIndexNames<\n      NamedTableInfo<DataModelFromConfectDataModel<ConfectDataModel>, TableName>\n    >,\n  >(\n    tableName: TableName,\n    indexName: IndexName,\n    query: Expand<\n      VectorSearchQuery<\n        NamedTableInfo<\n          DataModelFromConfectDataModel<ConfectDataModel>,\n          TableName\n        >,\n        IndexName\n      >\n    >,\n  ) => Effect.promise(() => ctx.vectorSearch(tableName, indexName, query)),\n  ctx,\n  auth: new ConfectAuthImpl(ctx.auth),\n  storage: new ConfectStorageWriterImpl(ctx.storage),\n  scheduler: new ConfectSchedulerImpl(ctx.scheduler),\n});\n","import type { Auth, UserIdentity } from \"convex/server\";\nimport { Effect, Option, pipe } from \"effect\";\n\nexport interface ConfectAuth {\n  getUserIdentity(): Effect.Effect<Option.Option<UserIdentity>>;\n}\n\nexport class ConfectAuthImpl implements ConfectAuth {\n  constructor(private auth: Auth) {}\n  getUserIdentity(): Effect.Effect<Option.Option<UserIdentity>> {\n    return pipe(\n      Effect.promise(() => this.auth.getUserIdentity()),\n      Effect.map(Option.fromNullable),\n    );\n  }\n}\n","import type {\n  BetterOmit,\n  DocumentByInfo,\n  DocumentByName,\n  Expand,\n  Expression,\n  FilterBuilder,\n  GenericDatabaseReader,\n  GenericDatabaseWriter,\n  GenericDataModel,\n  Indexes,\n  IndexRange,\n  IndexRangeBuilder,\n  NamedIndex,\n  NamedSearchIndex,\n  OrderedQuery,\n  PaginationOptions,\n  PaginationResult,\n  Query,\n  QueryInitializer,\n  SearchFilter,\n  SearchFilterBuilder,\n  SearchIndexes,\n  WithOptionalSystemFields,\n  WithoutSystemFields,\n} from \"convex/server\";\nimport type { GenericId } from \"convex/values\";\nimport {\n  Array,\n  type Cause,\n  Chunk,\n  Data,\n  Effect,\n  identity,\n  Option,\n  type ParseResult,\n  pipe,\n  Record,\n  Schema,\n  Stream,\n} from \"effect\";\n\nimport type {\n  ConfectDocumentByName,\n  DataModelFromConfectDataModel,\n  GenericConfectDataModel,\n  GenericConfectDocument,\n  GenericConfectTableInfo,\n  GenericEncodedConfectDocument,\n  TableInfoFromConfectTableInfo,\n  TableNamesInConfectDataModel,\n} from \"~/src/server/data-model\";\nimport {\n  type ConfectDataModelFromConfectSchema,\n  type ConfectSystemDataModel,\n  confectSystemSchemaDefinition,\n  type GenericConfectSchema,\n} from \"~/src/server/schema\";\nimport { extendWithSystemFields } from \"~/src/server/schemas/SystemFields\";\n\ninterface ConfectQuery<\n  ConfectTableInfo extends GenericConfectTableInfo,\n  TableName extends string,\n> {\n  filter(\n    predicate: (\n      q: FilterBuilder<TableInfoFromConfectTableInfo<ConfectTableInfo>>,\n    ) => Expression<boolean>,\n  ): ConfectQuery<ConfectTableInfo, TableName>;\n  order(\n    order: \"asc\" | \"desc\",\n  ): ConfectOrderedQuery<ConfectTableInfo, TableName>;\n  paginate(\n    paginationOpts: PaginationOptions,\n  ): Effect.Effect<PaginationResult<ConfectTableInfo[\"confectDocument\"]>>;\n  collect(): Effect.Effect<ConfectTableInfo[\"confectDocument\"][]>;\n  take(n: number): Effect.Effect<ConfectTableInfo[\"confectDocument\"][]>;\n  first(): Effect.Effect<Option.Option<ConfectTableInfo[\"confectDocument\"]>>;\n  unique(): Effect.Effect<\n    Option.Option<ConfectTableInfo[\"confectDocument\"]>,\n    NotUniqueError\n  >;\n  stream(): Stream.Stream<ConfectTableInfo[\"confectDocument\"]>;\n}\n\ninterface ConfectOrderedQuery<\n  ConfectTableInfo extends GenericConfectTableInfo,\n  TableName extends string,\n> extends Omit<ConfectQuery<ConfectTableInfo, TableName>, \"order\"> {}\n\nexport class NotUniqueError extends Data.TaggedError(\"NotUniqueError\") {}\n\nclass ConfectQueryImpl<\n  ConfectTableInfo extends GenericConfectTableInfo,\n  TableName extends string,\n> implements ConfectQuery<ConfectTableInfo, TableName>\n{\n  q: Query<TableInfoFromConfectTableInfo<ConfectTableInfo>>;\n  tableSchema: Schema.Schema<\n    ConfectTableInfo[\"confectDocument\"],\n    ConfectTableInfo[\"encodedConfectDocument\"]\n  >;\n  tableName: TableName;\n  constructor(\n    q:\n      | Query<TableInfoFromConfectTableInfo<ConfectTableInfo>>\n      | OrderedQuery<TableInfoFromConfectTableInfo<ConfectTableInfo>>,\n    tableSchema: Schema.Schema<\n      ConfectTableInfo[\"confectDocument\"],\n      ConfectTableInfo[\"encodedConfectDocument\"]\n    >,\n    tableName: TableName,\n  ) {\n    // This is some trickery, copied from convex-js. I suspect there's a better way.\n    this.q = q as Query<TableInfoFromConfectTableInfo<ConfectTableInfo>>;\n    this.tableSchema = tableSchema;\n    this.tableName = tableName;\n  }\n  decode(\n    convexDocument: ConfectTableInfo[\"encodedConfectDocument\"],\n  ): ConfectTableInfo[\"confectDocument\"] {\n    return decodeDocument(this.tableName, this.tableSchema, convexDocument);\n  }\n  filter(\n    predicate: (\n      q: FilterBuilder<TableInfoFromConfectTableInfo<ConfectTableInfo>>,\n    ) => Expression<boolean>,\n  ) {\n    return new ConfectQueryImpl(\n      this.q.filter(predicate),\n      this.tableSchema,\n      this.tableName,\n    );\n  }\n  order(order: \"asc\" | \"desc\"): ConfectQueryImpl<ConfectTableInfo, TableName> {\n    return new ConfectQueryImpl(\n      this.q.order(order),\n      this.tableSchema,\n      this.tableName,\n    );\n  }\n  paginate(\n    paginationOpts: PaginationOptions,\n  ): Effect.Effect<PaginationResult<ConfectTableInfo[\"confectDocument\"]>> {\n    return pipe(\n      Effect.Do,\n      Effect.bind(\"paginationResult\", () =>\n        Effect.promise(() => this.q.paginate(paginationOpts)),\n      ),\n      Effect.let(\"parsedPage\", ({ paginationResult }) =>\n        pipe(\n          paginationResult.page,\n          Array.map((document) => this.decode(document)),\n        ),\n      ),\n      Effect.map(({ paginationResult, parsedPage }) => ({\n        page: parsedPage,\n        isDone: paginationResult.isDone,\n        continueCursor: paginationResult.continueCursor,\n        /* v8 ignore next -- @preserve */\n        ...(paginationResult.splitCursor\n          ? { splitCursor: paginationResult.splitCursor }\n          : {}),\n        /* v8 ignore next -- @preserve */\n        ...(paginationResult.pageStatus\n          ? { pageStatus: paginationResult.pageStatus }\n          : {}),\n      })),\n    );\n  }\n  // It could be better to implement collect() with stream()\n  collect(): Effect.Effect<ConfectTableInfo[\"confectDocument\"][]> {\n    return pipe(\n      Effect.promise(() => this.q.collect()),\n      Effect.map(Array.map((document) => this.decode(document))),\n    );\n  }\n  take(n: number): Effect.Effect<ConfectTableInfo[\"confectDocument\"][]> {\n    return pipe(\n      this.stream(),\n      Stream.take(n),\n      Stream.runCollect,\n      Effect.map((chunk) => Chunk.toArray(chunk)),\n    );\n  }\n  first(): Effect.Effect<Option.Option<ConfectTableInfo[\"confectDocument\"]>> {\n    return pipe(this.stream(), Stream.runHead);\n  }\n  unique(): Effect.Effect<\n    Option.Option<ConfectTableInfo[\"confectDocument\"]>,\n    NotUniqueError\n  > {\n    return pipe(\n      this.stream(),\n      Stream.take(2),\n      Stream.runCollect,\n      Effect.andThen((chunk) =>\n        pipe(\n          chunk,\n          Chunk.get(1),\n          Option.match({\n            onSome: () => Effect.fail(new NotUniqueError()),\n            onNone: () => Effect.succeed(Chunk.get(chunk, 0)),\n          }),\n        ),\n      ),\n    );\n  }\n  stream(): Stream.Stream<ConfectTableInfo[\"confectDocument\"]> {\n    return pipe(\n      Stream.fromAsyncIterable(this.q, identity),\n      Stream.map((document) => this.decode(document)),\n      Stream.orDie,\n    );\n  }\n}\n\ninterface ConfectQueryInitializer<\n  ConfectTableInfo extends GenericConfectTableInfo,\n  TableName extends string,\n> extends ConfectQuery<ConfectTableInfo, TableName> {\n  fullTableScan(): ConfectQuery<ConfectTableInfo, TableName>;\n  withIndex<\n    IndexName extends keyof Indexes<\n      TableInfoFromConfectTableInfo<ConfectTableInfo>\n    >,\n  >(\n    indexName: IndexName,\n    indexRange?:\n      | ((\n          q: IndexRangeBuilder<\n            DocumentByInfo<TableInfoFromConfectTableInfo<ConfectTableInfo>>,\n            NamedIndex<\n              TableInfoFromConfectTableInfo<ConfectTableInfo>,\n              IndexName\n            >,\n            0\n          >,\n        ) => IndexRange)\n      | undefined,\n  ): ConfectQuery<ConfectTableInfo, TableName>;\n  withSearchIndex<\n    IndexName extends keyof SearchIndexes<\n      TableInfoFromConfectTableInfo<ConfectTableInfo>\n    >,\n  >(\n    indexName: IndexName,\n    searchFilter: (\n      q: SearchFilterBuilder<\n        DocumentByInfo<TableInfoFromConfectTableInfo<ConfectTableInfo>>,\n        NamedSearchIndex<\n          TableInfoFromConfectTableInfo<ConfectTableInfo>,\n          IndexName\n        >\n      >,\n    ) => SearchFilter,\n  ): ConfectOrderedQuery<ConfectTableInfo, TableName>;\n}\n\nclass ConfectQueryInitializerImpl<\n  ConfectTableInfo extends GenericConfectTableInfo,\n  TableName extends string,\n> implements ConfectQueryInitializer<ConfectTableInfo, TableName>\n{\n  q: QueryInitializer<TableInfoFromConfectTableInfo<ConfectTableInfo>>;\n  tableSchema: Schema.Schema<\n    ConfectTableInfo[\"confectDocument\"],\n    ConfectTableInfo[\"encodedConfectDocument\"]\n  >;\n  tableName: TableName;\n  constructor(\n    q: QueryInitializer<TableInfoFromConfectTableInfo<ConfectTableInfo>>,\n    tableSchema: Schema.Schema<\n      ConfectTableInfo[\"confectDocument\"],\n      ConfectTableInfo[\"encodedConfectDocument\"]\n    >,\n    tableName: TableName,\n  ) {\n    this.q = q;\n    this.tableSchema = tableSchema;\n    this.tableName = tableName;\n  }\n  fullTableScan(): ConfectQuery<ConfectTableInfo, TableName> {\n    return new ConfectQueryImpl(\n      this.q.fullTableScan(),\n      this.tableSchema,\n      this.tableName,\n    );\n  }\n  withIndex<\n    IndexName extends keyof Indexes<\n      TableInfoFromConfectTableInfo<ConfectTableInfo>\n    >,\n  >(\n    indexName: IndexName,\n    indexRange?:\n      | ((\n          q: IndexRangeBuilder<\n            DocumentByInfo<TableInfoFromConfectTableInfo<ConfectTableInfo>>,\n            NamedIndex<\n              TableInfoFromConfectTableInfo<ConfectTableInfo>,\n              IndexName\n            >,\n            0\n          >,\n        ) => IndexRange)\n      | undefined,\n  ): ConfectQuery<ConfectTableInfo, TableName> {\n    return new ConfectQueryImpl(\n      this.q.withIndex(indexName, indexRange),\n      this.tableSchema,\n      this.tableName,\n    );\n  }\n  withSearchIndex<\n    IndexName extends keyof SearchIndexes<\n      TableInfoFromConfectTableInfo<ConfectTableInfo>\n    >,\n  >(\n    indexName: IndexName,\n    searchFilter: (\n      q: SearchFilterBuilder<\n        DocumentByInfo<TableInfoFromConfectTableInfo<ConfectTableInfo>>,\n        NamedSearchIndex<\n          TableInfoFromConfectTableInfo<ConfectTableInfo>,\n          IndexName\n        >\n      >,\n    ) => SearchFilter,\n  ): ConfectOrderedQuery<ConfectTableInfo, TableName> {\n    return new ConfectQueryImpl(\n      this.q.withSearchIndex(indexName, searchFilter),\n      this.tableSchema,\n      this.tableName,\n    );\n  }\n  filter(\n    predicate: (\n      q: FilterBuilder<TableInfoFromConfectTableInfo<ConfectTableInfo>>,\n    ) => Expression<boolean>,\n  ): ConfectQuery<ConfectTableInfo, TableName> {\n    return this.fullTableScan().filter(predicate);\n  }\n  order(\n    order: \"asc\" | \"desc\",\n  ): ConfectOrderedQuery<ConfectTableInfo, TableName> {\n    return this.fullTableScan().order(order);\n  }\n  paginate(\n    paginationOpts: PaginationOptions,\n  ): Effect.Effect<PaginationResult<ConfectTableInfo[\"confectDocument\"]>> {\n    return this.fullTableScan().paginate(paginationOpts);\n  }\n  collect(): Effect.Effect<ConfectTableInfo[\"confectDocument\"][]> {\n    return this.fullTableScan().collect();\n  }\n  take(n: number): Effect.Effect<ConfectTableInfo[\"confectDocument\"][]> {\n    return this.fullTableScan().take(n);\n  }\n  first(): Effect.Effect<Option.Option<ConfectTableInfo[\"confectDocument\"]>> {\n    return this.fullTableScan().first();\n  }\n  unique(): Effect.Effect<\n    Option.Option<ConfectTableInfo[\"confectDocument\"]>,\n    NotUniqueError\n  > {\n    return this.fullTableScan().unique();\n  }\n  stream(): Stream.Stream<ConfectTableInfo[\"confectDocument\"]> {\n    return this.fullTableScan().stream();\n  }\n}\n\nexport type DatabaseSchemasFromConfectDataModel<\n  ConfectDataModel extends GenericConfectDataModel,\n> = {\n  [TableName in keyof ConfectDataModel & string]: Schema.Schema<\n    ConfectDataModel[TableName][\"confectDocument\"],\n    ConfectDataModel[TableName][\"encodedConfectDocument\"]\n  >;\n};\n\nexport interface ConfectDatabaseReader<\n  ConfectDataModel extends GenericConfectDataModel,\n> extends ConfectBaseDatabaseReader<ConfectDataModel> {\n  system: ConfectBaseDatabaseReader<ConfectSystemDataModel>;\n}\n\nexport interface ConfectBaseDatabaseReader<\n  ConfectDataModel extends GenericConfectDataModel,\n> {\n  query<TableName extends TableNamesInConfectDataModel<ConfectDataModel>>(\n    tableName: TableName,\n  ): ConfectQueryInitializer<ConfectDataModel[TableName], TableName>;\n  get<TableName extends TableNamesInConfectDataModel<ConfectDataModel>>(\n    id: GenericId<TableName>,\n  ): Effect.Effect<\n    Option.Option<ConfectDataModel[TableName][\"confectDocument\"]>\n  >;\n  normalizeId<TableName extends TableNamesInConfectDataModel<ConfectDataModel>>(\n    tableName: TableName,\n    id: string,\n  ): Option.Option<GenericId<TableName>>;\n}\n\nexport class ConfectBaseDatabaseReaderImpl<\n  ConfectDataModel extends GenericConfectDataModel,\n> implements ConfectBaseDatabaseReader<ConfectDataModel>\n{\n  db: BaseDatabaseReader<DataModelFromConfectDataModel<ConfectDataModel>>;\n  databaseSchemas: DatabaseSchemasFromConfectDataModel<ConfectDataModel>;\n  constructor(\n    db: BaseDatabaseReader<DataModelFromConfectDataModel<ConfectDataModel>>,\n    databaseSchemas: DatabaseSchemasFromConfectDataModel<ConfectDataModel>,\n  ) {\n    this.db = db;\n    this.databaseSchemas = databaseSchemas;\n  }\n  decode<TableName extends TableNamesInConfectDataModel<ConfectDataModel>>(\n    tableName: TableName,\n    convexDocument: ConfectDataModel[TableName][\"encodedConfectDocument\"],\n  ): ConfectDataModel[TableName][\"confectDocument\"] {\n    return decodeDocument(\n      tableName,\n      this.databaseSchemas[tableName],\n      convexDocument,\n    );\n  }\n  tableName(\n    id: GenericId<TableNamesInConfectDataModel<ConfectDataModel>>,\n  ): Option.Option<TableNamesInConfectDataModel<ConfectDataModel>> {\n    return Array.findFirst(Record.keys(this.databaseSchemas), (tableName) =>\n      Option.isSome(this.normalizeId(tableName, id)),\n    );\n  }\n  normalizeId<TableName extends TableNamesInConfectDataModel<ConfectDataModel>>(\n    tableName: TableName,\n    id: string,\n  ): Option.Option<GenericId<TableName>> {\n    return Option.fromNullable(this.db.normalizeId(tableName, id));\n  }\n  get<TableName extends TableNamesInConfectDataModel<ConfectDataModel>>(\n    id: GenericId<TableName>,\n  ): Effect.Effect<\n    Option.Option<ConfectDataModel[TableName][\"confectDocument\"]>\n  > {\n    return Effect.gen(this, function* () {\n      const optionConvexDoc = yield* Effect.promise(() => this.db.get(id)).pipe(\n        Effect.map(Option.fromNullable),\n      );\n      const tableName = yield* this.tableName(id).pipe(Effect.orDie);\n      return pipe(\n        optionConvexDoc,\n        Option.map((convexDoc) => this.decode(tableName, convexDoc)),\n      );\n    });\n  }\n  query<TableName extends TableNamesInConfectDataModel<ConfectDataModel>>(\n    tableName: TableName,\n  ): ConfectQueryInitializer<ConfectDataModel[TableName], TableName> {\n    return new ConfectQueryInitializerImpl(\n      this.db.query(tableName),\n      this.databaseSchemas[tableName],\n      tableName,\n    );\n  }\n}\n\nexport class ConfectDatabaseReaderImpl<\n  ConfectDataModel extends GenericConfectDataModel,\n> implements ConfectDatabaseReader<ConfectDataModel>\n{\n  db: GenericDatabaseReader<DataModelFromConfectDataModel<ConfectDataModel>>;\n  databaseSchemas: DatabaseSchemasFromConfectDataModel<ConfectDataModel>;\n  system: ConfectBaseDatabaseReader<ConfectSystemDataModel>;\n  constructor(\n    db: GenericDatabaseReader<DataModelFromConfectDataModel<ConfectDataModel>>,\n    databaseSchemas: DatabaseSchemasFromConfectDataModel<ConfectDataModel>,\n  ) {\n    this.db = db;\n    this.databaseSchemas = databaseSchemas;\n    this.system = new ConfectBaseDatabaseReaderImpl<ConfectSystemDataModel>(\n      this.db.system,\n      databaseSchemasFromConfectSchema(\n        confectSystemSchemaDefinition.confectSchema,\n      ),\n    );\n  }\n  decode<TableName extends TableNamesInConfectDataModel<ConfectDataModel>>(\n    tableName: TableName,\n    convexDocument: ConfectDataModel[TableName][\"encodedConfectDocument\"],\n  ): ConfectDataModel[TableName][\"confectDocument\"] {\n    return decodeDocument(\n      tableName,\n      this.databaseSchemas[tableName],\n      convexDocument,\n    );\n  }\n  tableName(\n    id: GenericId<TableNamesInConfectDataModel<ConfectDataModel>>,\n  ): Option.Option<TableNamesInConfectDataModel<ConfectDataModel>> {\n    return Array.findFirst(Record.keys(this.databaseSchemas), (tableName) =>\n      Option.isSome(this.normalizeId(tableName, id)),\n    );\n  }\n  normalizeId<TableName extends TableNamesInConfectDataModel<ConfectDataModel>>(\n    tableName: TableName,\n    id: string,\n  ): Option.Option<GenericId<TableName>> {\n    return Option.fromNullable(this.db.normalizeId(tableName, id));\n  }\n  get<TableName extends TableNamesInConfectDataModel<ConfectDataModel>>(\n    id: GenericId<TableName>,\n  ): Effect.Effect<\n    Option.Option<ConfectDataModel[TableName][\"confectDocument\"]>\n  > {\n    return Effect.gen(this, function* () {\n      const optionConvexDoc = yield* Effect.promise(() => this.db.get(id)).pipe(\n        Effect.map(Option.fromNullable),\n      );\n      const tableName = yield* this.tableName(id).pipe(Effect.orDie);\n      return pipe(\n        optionConvexDoc,\n        Option.map((convexDoc) => this.decode(tableName, convexDoc)),\n      );\n    });\n  }\n  query<TableName extends TableNamesInConfectDataModel<ConfectDataModel>>(\n    tableName: TableName,\n  ): ConfectQueryInitializer<ConfectDataModel[TableName], TableName> {\n    return new ConfectQueryInitializerImpl(\n      this.db.query(tableName),\n      this.databaseSchemas[tableName],\n      tableName,\n    );\n  }\n}\n\nexport interface ConfectDatabaseWriter<\n  ConfectDataModel extends GenericConfectDataModel,\n> {\n  query<TableName extends TableNamesInConfectDataModel<ConfectDataModel>>(\n    tableName: TableName,\n  ): ConfectQueryInitializer<ConfectDataModel[TableName], TableName>;\n  get<TableName extends TableNamesInConfectDataModel<ConfectDataModel>>(\n    id: GenericId<TableName>,\n  ): Effect.Effect<\n    Option.Option<ConfectDataModel[TableName][\"confectDocument\"]>\n  >;\n  normalizeId<TableName extends TableNamesInConfectDataModel<ConfectDataModel>>(\n    tableName: TableName,\n    id: string,\n  ): Option.Option<GenericId<TableName>>;\n  insert<TableName extends TableNamesInConfectDataModel<ConfectDataModel>>(\n    table: TableName,\n    value: WithoutSystemFields<\n      ConfectDocumentByName<ConfectDataModel, TableName>\n    >,\n  ): Effect.Effect<GenericId<TableName>, ParseResult.ParseError>;\n  patch<TableName extends TableNamesInConfectDataModel<ConfectDataModel>>(\n    id: GenericId<TableName>,\n    value: Partial<\n      WithoutSystemFields<ConfectDocumentByName<ConfectDataModel, TableName>>\n    >,\n  ): Effect.Effect<void, ParseResult.ParseError | Cause.NoSuchElementException>;\n  replace<TableName extends TableNamesInConfectDataModel<ConfectDataModel>>(\n    id: GenericId<TableName>,\n    value: WithOptionalSystemFields<\n      ConfectDocumentByName<ConfectDataModel, TableName>\n    >,\n  ): Effect.Effect<void>;\n  delete(id: GenericId<string>): Effect.Effect<void>;\n}\n\nexport class ConfectDatabaseWriterImpl<\n  ConfectDataModel extends GenericConfectDataModel,\n> implements ConfectDatabaseWriter<ConfectDataModel>\n{\n  databaseSchemas: DatabaseSchemasFromConfectDataModel<ConfectDataModel>;\n  db: GenericDatabaseWriter<DataModelFromConfectDataModel<ConfectDataModel>>;\n  reader: ConfectDatabaseReader<ConfectDataModel>;\n  constructor(\n    db: GenericDatabaseWriter<DataModelFromConfectDataModel<ConfectDataModel>>,\n    databaseSchemas: DatabaseSchemasFromConfectDataModel<ConfectDataModel>,\n  ) {\n    this.db = db;\n    this.databaseSchemas = databaseSchemas;\n    this.reader = new ConfectDatabaseReaderImpl(db, databaseSchemas);\n  }\n  tableName(\n    id: GenericId<TableNamesInConfectDataModel<ConfectDataModel>>,\n  ): Option.Option<TableNamesInConfectDataModel<ConfectDataModel>> {\n    return Array.findFirst(Record.keys(this.databaseSchemas), (tableName) =>\n      Option.isSome(this.normalizeId(tableName, id)),\n    );\n  }\n  query<TableName extends TableNamesInConfectDataModel<ConfectDataModel>>(\n    tableName: TableName,\n  ): ConfectQueryInitializer<ConfectDataModel[TableName], TableName> {\n    return this.reader.query(tableName);\n  }\n  get<TableName extends TableNamesInConfectDataModel<ConfectDataModel>>(\n    id: GenericId<TableName>,\n  ): Effect.Effect<\n    Option.Option<ConfectDataModel[TableName][\"confectDocument\"]>\n  > {\n    return this.reader.get(id);\n  }\n  normalizeId<TableName extends TableNamesInConfectDataModel<ConfectDataModel>>(\n    tableName: TableName,\n    id: string,\n  ): Option.Option<GenericId<TableName>> {\n    return Option.fromNullable(this.db.normalizeId(tableName, id));\n  }\n  insert<TableName extends TableNamesInConfectDataModel<ConfectDataModel>>(\n    table: TableName,\n    value: WithoutSystemFields<\n      ConfectDocumentByName<ConfectDataModel, TableName>\n    >,\n  ): Effect.Effect<GenericId<TableName>, ParseResult.ParseError> {\n    return pipe(\n      value,\n      Schema.encode(this.databaseSchemas[table]),\n      Effect.andThen((encodedValue) =>\n        Effect.promise(() =>\n          this.db.insert(\n            table,\n            encodedValue as Expand<\n              BetterOmit<\n                DocumentByName<\n                  DataModelFromConfectDataModel<ConfectDataModel>,\n                  TableName\n                >,\n                \"_creationTime\" | \"_id\"\n              >\n            >,\n          ),\n        ),\n      ),\n    );\n  }\n  patch<TableName extends TableNamesInConfectDataModel<ConfectDataModel>>(\n    id: GenericId<TableName>,\n    value: Partial<\n      WithoutSystemFields<ConfectDocumentByName<ConfectDataModel, TableName>>\n    >,\n  ): Effect.Effect<\n    void,\n    ParseResult.ParseError | Cause.NoSuchElementException\n  > {\n    return Effect.gen(this, function* () {\n      const tableName = yield* this.tableName(id);\n      const tableSchema = this.databaseSchemas[tableName];\n\n      const originalConvexDoc = yield* Effect.promise(() =>\n        this.db.get(id),\n      ).pipe(\n        Effect.andThen(\n          (\n            doc: DocumentByName<\n              DataModelFromConfectDataModel<ConfectDataModel>,\n              TableName\n            > | null,\n          ) =>\n            doc\n              ? Effect.succeed(doc)\n              : Effect.die(new InvalidIdProvidedForPatch()),\n        ),\n      );\n\n      const originalConfectDoc =\n        yield* Schema.decodeUnknown(tableSchema)(originalConvexDoc);\n\n      const updatedConvexDoc = yield* pipe(\n        value,\n        Record.reduce(originalConfectDoc, (acc, value, key) =>\n          value === undefined\n            ? Record.remove(acc, key)\n            : Record.set(acc, key, value),\n        ),\n        Schema.encodeUnknown(tableSchema),\n      );\n\n      yield* Effect.promise(() =>\n        this.db.replace(\n          id,\n          updatedConvexDoc as Expand<\n            BetterOmit<\n              DocumentByName<\n                DataModelFromConfectDataModel<ConfectDataModel>,\n                TableName\n              >,\n              \"_creationTime\" | \"_id\"\n            >\n          >,\n        ),\n      );\n    });\n  }\n  replace<TableName extends TableNamesInConfectDataModel<ConfectDataModel>>(\n    id: GenericId<TableName>,\n    value: WithOptionalSystemFields<\n      ConfectDocumentByName<ConfectDataModel, TableName>\n    >,\n  ): Effect.Effect<void> {\n    return Effect.promise(() => this.db.replace(id, value));\n  }\n  delete(id: GenericId<string>): Effect.Effect<void> {\n    return Effect.promise(() => this.db.delete(id));\n  }\n}\n\nexport const databaseSchemasFromConfectSchema = <\n  ConfectSchema extends GenericConfectSchema,\n>(\n  confectSchema: ConfectSchema,\n) =>\n  Record.map(\n    confectSchema,\n    ({ tableSchema }) => tableSchema,\n  ) as DatabaseSchemasFromConfectDataModel<\n    ConfectDataModelFromConfectSchema<ConfectSchema>\n  >;\n\nclass InvalidIdProvidedForPatch extends Data.TaggedError(\n  \"InvalidIdProvidedForPatch\",\n) {}\n\nconst decodeDocument = <\n  TableName extends string,\n  ConvexDocument extends GenericEncodedConfectDocument,\n  ConfectDocument extends GenericConfectDocument,\n>(\n  tableName: TableName,\n  tableSchema: Schema.Schema<ConfectDocument, ConvexDocument>,\n  convexDocument: ConvexDocument,\n): ConfectDocument =>\n  Schema.decodeUnknownSync(extendWithSystemFields(tableName, tableSchema), {\n    onExcessProperty: \"error\",\n  })(convexDocument);\n\n// Would be better if this were exported from `convex/server`\ntype BaseDatabaseReader<DataModel extends GenericDataModel> = Omit<\n  GenericDatabaseReader<DataModel>,\n  \"system\"\n>;\n","import {\n  defineSchema as defineConvexSchema,\n  defineTable as defineConvexTable,\n  type Expand,\n  type GenericTableIndexes,\n  type GenericTableSearchIndexes,\n  type GenericTableVectorIndexes,\n  type IdField,\n  type IndexTiebreakerField,\n  type SchemaDefinition,\n  type SearchIndexConfig,\n  type SystemFields,\n  type SystemIndexes,\n  type TableDefinition,\n  type VectorIndexConfig,\n} from \"convex/server\";\nimport type { Validator } from \"convex/values\";\nimport { pipe, Record, Schema } from \"effect\";\n\nimport {\n  compileTableSchema,\n  type TableSchemaToTableValidator,\n} from \"~/src/server/schema-to-validator\";\nimport {\n  type ExtendWithSystemFields,\n  extendWithSystemFields,\n} from \"~/src/server/schemas/SystemFields\";\n\nexport const confectTableSchemas = {\n  _scheduled_functions: Schema.Struct({\n    name: Schema.String,\n    args: Schema.Array(Schema.Any),\n    scheduledTime: Schema.Number,\n    completedTime: Schema.optional(Schema.Number),\n    state: Schema.Union(\n      Schema.Struct({ kind: Schema.Literal(\"pending\") }),\n      Schema.Struct({ kind: Schema.Literal(\"inProgress\") }),\n      Schema.Struct({ kind: Schema.Literal(\"success\") }),\n      Schema.Struct({\n        kind: Schema.Literal(\"failed\"),\n        error: Schema.String,\n      }),\n      Schema.Struct({ kind: Schema.Literal(\"canceled\") }),\n    ),\n  }),\n  _storage: Schema.Struct({\n    sha256: Schema.String,\n    size: Schema.Number,\n    contentType: Schema.optional(Schema.String),\n  }),\n};\n\nconst tableSchemasFromConfectSchema = <\n  ConfectSchema extends GenericConfectSchema,\n>(\n  confectSchema: ConfectSchema,\n): TableSchemasFromConfectSchema<ConfectSchema> =>\n  ({\n    ...Record.map(confectSchema, ({ tableSchema }, tableName) => ({\n      withSystemFields: extendWithSystemFields(tableName, tableSchema),\n      withoutSystemFields: tableSchema,\n    })),\n    ...Record.map(confectTableSchemas, (tableSchema, tableName) => ({\n      withSystemFields: extendWithSystemFields(tableName, tableSchema),\n      withoutSystemFields: tableSchema,\n    })),\n  }) as any;\n\n/**\n * A Confect schema is a record of table definitions.\n */\nexport type GenericConfectSchema = Record<any, GenericConfectTableDefinition>;\n\n/**\n * A Confect schema definition tracks the Confect schema, its Convex schema definition, and all of its table schemas.\n */\nexport type GenericConfectSchemaDefinition =\n  ConfectSchemaDefinition<GenericConfectSchema>;\n\nexport interface ConfectSchemaDefinition<\n  ConfectSchema extends GenericConfectSchema,\n> {\n  confectSchema: ConfectSchema;\n  convexSchemaDefinition: SchemaDefinition<\n    SchemaDefinitionFromConfectSchemaDefinition<ConfectSchema>,\n    true\n  >;\n  tableSchemas: TableSchemasFromConfectSchema<ConfectSchema>;\n}\n\nclass ConfectSchemaDefinitionImpl<ConfectSchema extends GenericConfectSchema>\n  implements ConfectSchemaDefinition<ConfectSchema>\n{\n  confectSchema: ConfectSchema;\n  convexSchemaDefinition: SchemaDefinition<\n    SchemaDefinitionFromConfectSchemaDefinition<ConfectSchema>,\n    true\n  >;\n  tableSchemas: TableSchemasFromConfectSchema<ConfectSchema>;\n\n  constructor(confectSchema: ConfectSchema) {\n    this.confectSchema = confectSchema;\n    this.convexSchemaDefinition = pipe(\n      confectSchema,\n      Record.map(({ tableDefinition }) => tableDefinition),\n      defineConvexSchema,\n    ) as SchemaDefinition<\n      SchemaDefinitionFromConfectSchemaDefinition<ConfectSchema>,\n      true\n    >;\n    this.tableSchemas = tableSchemasFromConfectSchema(confectSchema);\n  }\n}\n\ntype SchemaDefinitionFromConfectSchemaDefinition<\n  ConfectSchema extends GenericConfectSchema,\n> = Expand<{\n  [TableName in keyof ConfectSchema &\n    string]: ConfectSchema[TableName][\"tableDefinition\"];\n}>;\n\n/**\n * Define a Confect schema.\n */\nexport const defineSchema = <ConfectSchema extends GenericConfectSchema>(\n  confectSchema: ConfectSchema,\n): ConfectSchemaDefinition<ConfectSchema> =>\n  new ConfectSchemaDefinitionImpl<ConfectSchema>(confectSchema);\n\nexport type GenericConfectTableDefinition = ConfectTableDefinition<\n  any,\n  any,\n  any,\n  any,\n  any\n>;\n\nexport interface ConfectTableDefinition<\n  TableSchema extends Schema.Schema.AnyNoContext,\n  TableValidator extends Validator<\n    any,\n    any,\n    any\n  > = TableSchemaToTableValidator<TableSchema>,\n  Indexes extends GenericTableIndexes = {},\n  SearchIndexes extends GenericTableSearchIndexes = {},\n  VectorIndexes extends GenericTableVectorIndexes = {},\n> {\n  tableDefinition: TableDefinition<\n    TableValidator,\n    Indexes,\n    SearchIndexes,\n    VectorIndexes\n  >;\n  tableSchema: TableSchema;\n\n  index<\n    IndexName extends string,\n    FirstFieldPath extends ExtractFieldPaths<TableValidator>,\n    RestFieldPaths extends ExtractFieldPaths<TableValidator>[],\n  >(\n    name: IndexName,\n    fields: [FirstFieldPath, ...RestFieldPaths],\n  ): ConfectTableDefinition<\n    TableSchema,\n    TableValidator,\n    Expand<\n      Indexes &\n        Record<\n          IndexName,\n          [FirstFieldPath, ...RestFieldPaths, IndexTiebreakerField]\n        >\n    >,\n    SearchIndexes,\n    VectorIndexes\n  >;\n  searchIndex<\n    IndexName extends string,\n    SearchField extends ExtractFieldPaths<TableValidator>,\n    FilterFields extends ExtractFieldPaths<TableValidator> = never,\n  >(\n    name: IndexName,\n    indexConfig: Expand<SearchIndexConfig<SearchField, FilterFields>>,\n  ): ConfectTableDefinition<\n    TableSchema,\n    TableValidator,\n    Indexes,\n    Expand<\n      SearchIndexes &\n        Record<\n          IndexName,\n          {\n            searchField: SearchField;\n            filterFields: FilterFields;\n          }\n        >\n    >,\n    VectorIndexes\n  >;\n  vectorIndex<\n    IndexName extends string,\n    VectorField extends ExtractFieldPaths<TableValidator>,\n    FilterFields extends ExtractFieldPaths<TableValidator> = never,\n  >(\n    name: IndexName,\n    indexConfig: Expand<VectorIndexConfig<VectorField, FilterFields>>,\n  ): ConfectTableDefinition<\n    TableSchema,\n    TableValidator,\n    Indexes,\n    SearchIndexes,\n    Expand<\n      VectorIndexes &\n        Record<\n          IndexName,\n          {\n            vectorField: VectorField;\n            dimensions: number;\n            filterFields: FilterFields;\n          }\n        >\n    >\n  >;\n}\n\nexport type ConfectSchemaFromConfectSchemaDefinition<\n  ConfectSchemaDef extends GenericConfectSchemaDefinition,\n> =\n  ConfectSchemaDef extends ConfectSchemaDefinition<infer ConfectSchema>\n    ? ConfectSchema\n    : never;\n\n/**\n * @ignore\n */\nexport type ConfectDataModelFromConfectSchemaDefinition<\n  ConfectSchemaDef extends GenericConfectSchemaDefinition,\n> =\n  ConfectSchemaDef extends ConfectSchemaDefinition<infer ConfectSchema>\n    ? ConfectDataModelFromConfectSchema<ConfectSchema>\n    : never;\n\nclass ConfectTableDefinitionImpl<\n  TableSchema extends Schema.Schema.AnyNoContext,\n  TableValidator extends Validator<\n    any,\n    any,\n    any\n  > = TableSchemaToTableValidator<TableSchema>,\n  Indexes extends GenericTableIndexes = {},\n  SearchIndexes extends GenericTableSearchIndexes = {},\n  VectorIndexes extends GenericTableVectorIndexes = {},\n> implements\n    ConfectTableDefinition<\n      TableSchema,\n      TableValidator,\n      Indexes,\n      SearchIndexes,\n      VectorIndexes\n    >\n{\n  tableSchema: TableSchema;\n  tableDefinition: TableDefinition<\n    TableValidator,\n    Indexes,\n    SearchIndexes,\n    VectorIndexes\n  >;\n\n  constructor(tableSchema: TableSchema, tableValidator: TableValidator) {\n    this.tableSchema = tableSchema;\n    this.tableDefinition = defineConvexTable(tableValidator);\n  }\n\n  index<\n    IndexName extends string,\n    FirstFieldPath extends ExtractFieldPaths<TableValidator>,\n    RestFieldPaths extends ExtractFieldPaths<TableValidator>[],\n  >(\n    name: IndexName,\n    fields: [FirstFieldPath, ...RestFieldPaths],\n  ): ConfectTableDefinition<\n    TableSchema,\n    TableValidator,\n    Expand<\n      Indexes &\n        Record<\n          IndexName,\n          [FirstFieldPath, ...RestFieldPaths, IndexTiebreakerField]\n        >\n    >,\n    SearchIndexes,\n    VectorIndexes\n  > {\n    this.tableDefinition = this.tableDefinition.index(name, fields);\n\n    return this;\n  }\n\n  searchIndex<\n    IndexName extends string,\n    SearchField extends ExtractFieldPaths<TableValidator>,\n    FilterFields extends ExtractFieldPaths<TableValidator> = never,\n  >(\n    name: IndexName,\n    indexConfig: Expand<SearchIndexConfig<SearchField, FilterFields>>,\n  ): ConfectTableDefinition<\n    TableSchema,\n    TableValidator,\n    Indexes,\n    Expand<\n      SearchIndexes &\n        Record<\n          IndexName,\n          {\n            searchField: SearchField;\n            filterFields: FilterFields;\n          }\n        >\n    >,\n    VectorIndexes\n  > {\n    this.tableDefinition = this.tableDefinition.searchIndex(name, indexConfig);\n\n    return this;\n  }\n\n  vectorIndex<\n    IndexName extends string,\n    VectorField extends ExtractFieldPaths<TableValidator>,\n    FilterFields extends ExtractFieldPaths<TableValidator> = never,\n  >(\n    name: IndexName,\n    indexConfig: {\n      vectorField: VectorField;\n      dimensions: number;\n      filterFields?: FilterFields[] | undefined;\n    },\n  ): ConfectTableDefinition<\n    TableSchema,\n    TableValidator,\n    Indexes,\n    SearchIndexes,\n    Expand<\n      VectorIndexes &\n        Record<\n          IndexName,\n          {\n            vectorField: VectorField;\n            dimensions: number;\n            filterFields: FilterFields;\n          }\n        >\n    >\n  > {\n    this.tableDefinition = this.tableDefinition.vectorIndex(name, indexConfig);\n\n    return this;\n  }\n}\n\n/**\n * Define a Confect table.\n */\nexport const defineTable = <TableSchema extends Schema.Schema.AnyNoContext>(\n  tableSchema: TableSchema,\n): ConfectTableDefinition<TableSchema> => {\n  const tableValidator = compileTableSchema(tableSchema);\n  return new ConfectTableDefinitionImpl(\n    tableSchema,\n    tableValidator,\n  ) as ConfectTableDefinition<TableSchema>;\n};\n\nexport type TableNamesInConfectSchema<\n  ConfectSchema extends GenericConfectSchema,\n> = keyof ConfectSchema & string;\n\nexport type TableNamesInConfectSchemaDefinition<\n  ConfectSchemaDefinition extends GenericConfectSchemaDefinition,\n> = TableNamesInConfectSchema<ConfectSchemaDefinition[\"confectSchema\"]>;\n\n/**\n * Produce a Confect data model from a Confect schema.\n */\nexport type ConfectDataModelFromConfectSchema<\n  ConfectSchema extends GenericConfectSchema,\n> = {\n  [TableName in keyof ConfectSchema &\n    string]: ConfectSchema[TableName] extends ConfectTableDefinition<\n    infer TableSchema,\n    infer TableValidator,\n    infer Indexes,\n    infer SearchIndexes,\n    infer VectorIndexes\n  >\n    ? TableSchema extends Schema.Schema<any, any>\n      ? {\n          confectDocument: ExtractConfectDocument<TableName, TableSchema>;\n          // It's pretty hard to recursively make an arbitrary TS type readonly/mutable, so we capture both the readonly version of the `convexDocument` (which is the `encodedConfectDocument`) and the mutable version (`convexDocument`).\n          encodedConfectDocument: ExtractEncodedConfectDocument<\n            TableName,\n            TableSchema\n          >;\n          convexDocument: ExtractDocument<TableName, TableValidator>;\n          fieldPaths:\n            | keyof IdField<TableName>\n            | ExtractFieldPaths<TableValidator>;\n          indexes: Expand<Indexes & SystemIndexes>;\n          searchIndexes: SearchIndexes;\n          vectorIndexes: VectorIndexes;\n        }\n      : never\n    : never;\n};\n\ntype ExtractConfectDocument<\n  TableName extends string,\n  S extends Schema.Schema<any, any>,\n> = Expand<Readonly<IdField<TableName>> & Readonly<SystemFields> & S[\"Type\"]>;\n\ntype ExtractEncodedConfectDocument<\n  TableName extends string,\n  S extends Schema.Schema<any, any>,\n> = Expand<\n  Readonly<IdField<TableName>> & Readonly<SystemFields> & S[\"Encoded\"]\n>;\n\nexport const confectSystemSchema = {\n  _scheduled_functions: defineTable(confectTableSchemas._scheduled_functions),\n  _storage: defineTable(confectTableSchemas._storage),\n};\n\nexport const confectSystemSchemaDefinition = defineSchema(confectSystemSchema);\n\ntype ConfectSystemSchema = typeof confectSystemSchemaDefinition;\n\nexport type ConfectSystemDataModel =\n  ConfectDataModelFromConfectSchemaDefinition<ConfectSystemSchema>;\n\ntype TableSchemasFromConfectSchema<ConfectSchema extends GenericConfectSchema> =\n  Expand<\n    {\n      [TableName in keyof ConfectSchema & string]: {\n        withSystemFields: ExtendWithSystemFields<\n          TableName,\n          ConfectSchema[TableName][\"tableSchema\"]\n        >;\n        withoutSystemFields: ConfectSchema[TableName][\"tableSchema\"];\n      };\n    } & {\n      [TableName in keyof ConfectSystemSchema[\"confectSchema\"]]: {\n        withSystemFields: ExtendWithSystemFields<\n          TableName,\n          ConfectSystemSchema[\"confectSchema\"][TableName][\"tableSchema\"]\n        >;\n        withoutSystemFields: ConfectSystemSchema[\"confectSchema\"][TableName][\"tableSchema\"];\n      };\n    }\n  >;\n\n// Vendored types from convex-js, partially modified. Ideally we could use these directly. See https://github.com/get-convex/convex-js/pull/14\n\n/**\n * Extract all of the index field paths within a {@link Validator}.\n *\n * This is used within {@link defineConvexTable}.\n * @public\n */\ntype ExtractFieldPaths<T extends Validator<any, any, any>> =\n  // Add in the system fields available in index definitions.\n  // This should be everything except for `_id` because thats added to indexes\n  // automatically.\n  T[\"fieldPaths\"] | keyof SystemFields;\n\n/**\n * Extract the {@link GenericDocument} within a {@link Validator} and\n * add on the system fields.\n *\n * This is used within {@link defineConvexTable}.\n * @public\n */\ntype ExtractDocument<\n  TableName extends string,\n  T extends Validator<any, any, any>,\n> = Expand<IdField<TableName> & SystemFields & T[\"type\"]>; //the table name) and trick TypeScript into expanding them. // Add the system fields to `Value` (except `_id` because it depends on\n","import type {\n  GenericId,\n  OptionalProperty,\n  PropertyValidators,\n  VAny,\n  VArray,\n  Validator,\n  VBoolean,\n  VBytes,\n  VFloat64,\n  VId,\n  VInt64,\n  VLiteral,\n  VNull,\n  VObject,\n  VOptional,\n  VString,\n  VUnion,\n} from \"convex/values\";\nimport { v } from \"convex/values\";\nimport {\n  Array,\n  Cause,\n  Data,\n  Effect,\n  Exit,\n  Match,\n  Number,\n  Option,\n  type ParseResult,\n  pipe,\n  Schema,\n  SchemaAST,\n  String,\n} from \"effect\";\nimport { not } from \"effect/Predicate\";\n\nimport * as Id from \"~/src/server/schemas/Id\";\nimport type {\n  DeepMutable,\n  IsAny,\n  IsOptional,\n  IsRecursive,\n  IsUnion,\n  IsValueLiteral,\n  TypeError,\n  UnionToTuple,\n} from \"~/src/server/type-utils\";\n\n// Args\n\nexport const compileArgsSchema = <ConfectValue, ConvexValue>(\n  argsSchema: Schema.Schema<ConfectValue, ConvexValue>,\n): PropertyValidators => {\n  const ast = Schema.encodedSchema(argsSchema).ast;\n\n  return pipe(\n    ast,\n    Match.value,\n    Match.tag(\"TypeLiteral\", (typeLiteralAst) =>\n      Array.isEmptyReadonlyArray(typeLiteralAst.indexSignatures)\n        ? handlePropertySignatures(typeLiteralAst)\n        : Effect.fail(new IndexSignaturesAreNotSupportedError()),\n    ),\n    Match.orElse(() => Effect.fail(new TopLevelMustBeObjectError())),\n    runSyncThrow,\n  );\n};\n\n// Returns\n\nexport const compileReturnsSchema = <ConfectValue, ConvexValue>(\n  schema: Schema.Schema<ConfectValue, ConvexValue>,\n): Validator<any, any, any> =>\n  runSyncThrow(compileAst(Schema.encodedSchema(schema).ast));\n\n// Table\n\n/**\n * Convert a table `Schema` to a table `Validator`.\n */\nexport type TableSchemaToTableValidator<\n  TableSchema extends Schema.Schema.AnyNoContext,\n> =\n  ValueToValidator<TableSchema[\"Encoded\"]> extends infer Vd extends\n    | VObject<any, any, any, any>\n    | VUnion<any, any, any, any>\n    ? Vd\n    : never;\n\nexport const compileTableSchema = <\n  TableSchema extends Schema.Schema.AnyNoContext,\n>(\n  schema: TableSchema,\n): TableSchemaToTableValidator<TableSchema> => {\n  const ast = Schema.encodedSchema(schema).ast;\n\n  return pipe(\n    ast,\n    Match.value,\n    Match.tag(\"TypeLiteral\", ({ indexSignatures }) =>\n      Array.isEmptyReadonlyArray(indexSignatures)\n        ? (compileAst(ast) as Effect.Effect<any>)\n        : Effect.fail(new IndexSignaturesAreNotSupportedError()),\n    ),\n    Match.tag(\"Union\", (unionAst) => compileAst(unionAst)),\n    Match.orElse(() => Effect.fail(new TopLevelMustBeObjectOrUnionError())),\n    runSyncThrow,\n  );\n};\n\n// Compiler\n\nexport type ReadonlyValue =\n  | string\n  | number\n  | bigint\n  | boolean\n  | ArrayBuffer\n  | ReadonlyArrayValue\n  | ReadonlyRecordValue\n  | null;\n\ntype ReadonlyArrayValue = readonly ReadonlyValue[];\n\nexport type ReadonlyRecordValue = {\n  readonly [key: string]: ReadonlyValue | undefined;\n};\n\nexport type ValueToValidator<Vl> =\n  IsRecursive<Vl> extends true\n    ? VAny\n    : [Vl] extends [never]\n      ? never\n      : IsAny<Vl> extends true\n        ? VAny\n        : [Vl] extends [ReadonlyValue]\n          ? Vl extends {\n              __tableName: infer TableName extends string;\n            }\n            ? VId<GenericId<TableName>>\n            : IsValueLiteral<Vl> extends true\n              ? VLiteral<Vl>\n              : Vl extends null\n                ? VNull\n                : Vl extends number\n                  ? VFloat64\n                  : Vl extends bigint\n                    ? VInt64\n                    : Vl extends boolean\n                      ? VBoolean\n                      : Vl extends string\n                        ? VString\n                        : Vl extends ArrayBuffer\n                          ? VBytes\n                          : Vl extends ReadonlyArray<ReadonlyValue>\n                            ? ArrayValueToValidator<Vl>\n                            : Vl extends ReadonlyRecordValue\n                              ? RecordValueToValidator<Vl>\n                              : IsUnion<Vl> extends true\n                                ? UnionValueToValidator<Vl>\n                                : TypeError<\"Unexpected value\", Vl>\n          : TypeError<\"Not a valid Convex value\", Vl>;\n\ntype ArrayValueToValidator<Vl extends ReadonlyArray<ReadonlyValue>> =\n  Vl extends ReadonlyArray<infer El extends ReadonlyValue>\n    ? ValueToValidator<El> extends infer Vd extends Validator<any, any, any>\n      ? VArray<DeepMutable<El[]>, Vd>\n      : never\n    : never;\n\ntype RecordValueToValidator<Vl> = Vl extends ReadonlyRecordValue\n  ? {\n      -readonly [K in keyof Vl]-?: IsAny<Vl[K]> extends true\n        ? IsOptional<Vl, K> extends true\n          ? VOptional<VAny>\n          : VAny\n        : UndefinedOrValueToValidator<Vl[K]>;\n    } extends infer VdRecord extends Record<string, any>\n    ? {\n        -readonly [K in keyof Vl]: DeepMutable<Vl[K]>;\n      } extends infer VlRecord extends Record<string, any>\n      ? VObject<VlRecord, VdRecord>\n      : never\n    : never\n  : never;\n\nexport type UndefinedOrValueToValidator<Vl extends ReadonlyValue | undefined> =\n  undefined extends Vl\n    ? Vl extends infer Val extends ReadonlyValue | undefined\n      ? ValueToValidator<Val> extends infer Vd extends Validator<\n          any,\n          OptionalProperty,\n          any\n        >\n        ? VOptional<Vd>\n        : undefined\n      : never\n    : Vl extends ReadonlyValue\n      ? ValueToValidator<Vl>\n      : never;\n\ntype UnionValueToValidator<Vl extends ReadonlyValue> = [Vl] extends [\n  ReadonlyValue,\n]\n  ? IsUnion<Vl> extends true\n    ? UnionToTuple<Vl> extends infer VlTuple extends\n        ReadonlyArray<ReadonlyValue>\n      ? ValueTupleToValidatorTuple<VlTuple> extends infer VdTuple extends\n          Validator<any, \"required\", any>[]\n        ? VUnion<DeepMutable<Vl>, VdTuple>\n        : TypeError<\"Failed to convert value tuple to validator tuple\">\n      : TypeError<\"Failed to convert union to tuple\">\n    : TypeError<\"Expected a union of values, but got a single value instead\">\n  : TypeError<\"Provided value is not a valid Convex value\">;\n\ntype ValueTupleToValidatorTuple<VlTuple extends ReadonlyArray<ReadonlyValue>> =\n  VlTuple extends\n    | [true, false, ...infer VlRest extends ReadonlyArray<ReadonlyValue>]\n    | [false, true, ...infer VlRest extends ReadonlyArray<ReadonlyValue>]\n    ? ValueTupleToValidatorTuple<VlRest> extends infer VdRest extends Validator<\n        any,\n        any,\n        any\n      >[]\n      ? [VBoolean<boolean>, ...VdRest]\n      : never\n    : VlTuple extends [\n          infer Vl extends ReadonlyValue,\n          ...infer VlRest extends ReadonlyArray<ReadonlyValue>,\n        ]\n      ? ValueToValidator<Vl> extends infer Vd extends Validator<any, any, any>\n        ? ValueTupleToValidatorTuple<VlRest> extends infer VdRest extends\n            Validator<any, \"required\", any>[]\n          ? [Vd, ...VdRest]\n          : never\n        : never\n      : [];\n\nexport const compileSchema = <T, E>(\n  schema: Schema.Schema<T, E>,\n): ValueToValidator<(typeof schema)[\"Encoded\"]> =>\n  runSyncThrow(compileAst(schema.ast)) as any;\n\nexport const isRecursive = (ast: SchemaAST.AST): boolean =>\n  pipe(\n    ast,\n    Match.value,\n    Match.tag(\n      \"Literal\",\n      \"BooleanKeyword\",\n      \"StringKeyword\",\n      \"NumberKeyword\",\n      \"BigIntKeyword\",\n      \"UnknownKeyword\",\n      \"AnyKeyword\",\n      \"Declaration\",\n      \"UniqueSymbol\",\n      \"SymbolKeyword\",\n      \"UndefinedKeyword\",\n      \"VoidKeyword\",\n      \"NeverKeyword\",\n      \"Enums\",\n      \"TemplateLiteral\",\n      \"ObjectKeyword\",\n      \"Transformation\",\n      () => false,\n    ),\n    Match.tag(\"Union\", ({ types }) =>\n      Array.some(types, (type) => isRecursive(type)),\n    ),\n    Match.tag(\"TypeLiteral\", ({ propertySignatures }) =>\n      Array.some(propertySignatures, ({ type }) => isRecursive(type)),\n    ),\n    Match.tag(\n      \"TupleType\",\n      ({ elements: optionalElements, rest: elements }) =>\n        Array.some(optionalElements, (optionalElement) =>\n          isRecursive(optionalElement.type),\n        ) || Array.some(elements, (element) => isRecursive(element.type)),\n    ),\n    Match.tag(\"Refinement\", ({ from }) => isRecursive(from)),\n    Match.tag(\"Suspend\", () => true),\n    Match.exhaustive,\n  );\n\nexport const compileAst = (\n  ast: SchemaAST.AST,\n  isOptionalPropertyOfTypeLiteral = false,\n): Effect.Effect<\n  Validator<any, any, any>,\n  | UnsupportedSchemaTypeError\n  | UnsupportedPropertySignatureKeyTypeError\n  | IndexSignaturesAreNotSupportedError\n  | OptionalTupleElementsAreNotSupportedError\n  | EmptyTupleIsNotSupportedError\n> =>\n  isRecursive(ast)\n    ? Effect.succeed(v.any())\n    : pipe(\n        ast,\n        Match.value,\n        Match.tag(\"Literal\", ({ literal }) =>\n          pipe(\n            literal,\n            Match.value,\n            Match.whenOr(\n              Match.string,\n              Match.number,\n              Match.bigint,\n              Match.boolean,\n              (l) => v.literal(l),\n            ),\n            Match.when(Match.null, () => v.null()),\n            Match.exhaustive,\n            Effect.succeed,\n          ),\n        ),\n        Match.tag(\"BooleanKeyword\", () => Effect.succeed(v.boolean())),\n        Match.tag(\"StringKeyword\", (stringAst) =>\n          Id.tableName(stringAst).pipe(\n            Option.match({\n              onNone: () => Effect.succeed(v.string()),\n              onSome: (tableName) => Effect.succeed(v.id(tableName)),\n            }),\n          ),\n        ),\n        Match.tag(\"NumberKeyword\", () => Effect.succeed(v.float64())),\n        Match.tag(\"BigIntKeyword\", () => Effect.succeed(v.int64())),\n        Match.tag(\"Union\", (unionAst) =>\n          handleUnion(unionAst, isOptionalPropertyOfTypeLiteral),\n        ),\n        Match.tag(\"TypeLiteral\", (typeLiteralAst) =>\n          handleTypeLiteral(typeLiteralAst),\n        ),\n        Match.tag(\"TupleType\", (tupleTypeAst) => handleTupleType(tupleTypeAst)),\n        Match.tag(\"UnknownKeyword\", \"AnyKeyword\", () =>\n          Effect.succeed(v.any()),\n        ),\n        Match.tag(\"Declaration\", (declaration) =>\n          Effect.mapBoth(\n            declaration.decodeUnknown(...declaration.typeParameters)(\n              new ArrayBuffer(0),\n              {},\n              declaration,\n            ) as Effect.Effect<ArrayBuffer, ParseResult.ParseIssue>,\n            {\n              onSuccess: () => v.bytes(),\n              onFailure: () =>\n                new UnsupportedSchemaTypeError({\n                  schemaType: declaration._tag,\n                }),\n            },\n          ),\n        ),\n        Match.tag(\"Refinement\", ({ from }) => compileAst(from)),\n        /* v8 ignore next -- @preserve */\n        Match.tag(\"Suspend\", () =>\n          Effect.dieMessage(\n            \"Suspended schema should have already been handled by recursion check; this should be impossible.\",\n          ),\n        ),\n        Match.tag(\n          \"UniqueSymbol\",\n          \"SymbolKeyword\",\n          \"UndefinedKeyword\",\n          \"VoidKeyword\",\n          \"NeverKeyword\",\n          \"Enums\",\n          \"TemplateLiteral\",\n          \"ObjectKeyword\",\n          \"Transformation\",\n          () =>\n            Effect.fail(\n              new UnsupportedSchemaTypeError({\n                schemaType: ast._tag,\n              }),\n            ),\n        ),\n        Match.exhaustive,\n      );\n\nconst handleUnion = (\n  { types: [first, second, ...rest] }: SchemaAST.Union,\n  isOptionalPropertyOfTypeLiteral: boolean,\n) =>\n  Effect.gen(function* () {\n    const validatorEffects = isOptionalPropertyOfTypeLiteral\n      ? Array.filterMap([first, second, ...rest], (type) =>\n          not(SchemaAST.isUndefinedKeyword)(type)\n            ? Option.some(compileAst(type))\n            : Option.none(),\n        )\n      : Array.map([first, second, ...rest], (type) => compileAst(type));\n\n    /* v8 ignore next -- @preserve */\n    const [firstValidator, secondValidator, ...restValidators] =\n      yield* Effect.all(validatorEffects);\n\n    /* v8 ignore if -- @preserve */\n    if (firstValidator === undefined) {\n      return yield* Effect.dieMessage(\n        \"First validator of union is undefined; this should be impossible.\",\n      );\n    } else if (secondValidator === undefined) {\n      return firstValidator;\n    } else {\n      return v.union(firstValidator, secondValidator, ...restValidators);\n    }\n  });\n\nconst handleTypeLiteral = (typeLiteralAst: SchemaAST.TypeLiteral) =>\n  pipe(\n    typeLiteralAst.indexSignatures,\n    Array.head,\n    Option.match({\n      onNone: () =>\n        pipe(handlePropertySignatures(typeLiteralAst), Effect.map(v.object)),\n      /* v8 ignore next -- @preserve */\n      onSome: () => Effect.fail(new IndexSignaturesAreNotSupportedError()),\n    }),\n  );\n\nconst handleTupleType = ({ elements, rest }: SchemaAST.TupleType) =>\n  Effect.gen(function* () {\n    const restValidator = pipe(\n      rest,\n      Array.head,\n      Option.map(({ type }) => compileAst(type)),\n      Effect.flatten,\n    );\n\n    const [f, s, ...r] = elements;\n\n    const elementToValidator = ({ type, isOptional }: SchemaAST.OptionalType) =>\n      Effect.if(isOptional, {\n        onTrue: () =>\n          Effect.fail(new OptionalTupleElementsAreNotSupportedError()),\n        onFalse: () => compileAst(type),\n      });\n\n    const arrayItemsValidator = yield* f === undefined\n      ? pipe(\n          restValidator,\n          Effect.catchTag(\"NoSuchElementException\", () =>\n            Effect.fail(new EmptyTupleIsNotSupportedError()),\n          ),\n        )\n      : s === undefined\n        ? elementToValidator(f)\n        : Effect.gen(function* () {\n            const firstValidator = yield* elementToValidator(f);\n            const secondValidator = yield* elementToValidator(s);\n            const restValidators = yield* Effect.forEach(r, elementToValidator);\n\n            return v.union(firstValidator, secondValidator, ...restValidators);\n          });\n\n    return v.array(arrayItemsValidator);\n  });\n\nconst handlePropertySignatures = (typeLiteralAst: SchemaAST.TypeLiteral) =>\n  pipe(\n    typeLiteralAst.propertySignatures,\n    // biome-ignore lint/suspicious/useIterableCallbackReturn: False positive.\n    Effect.forEach(({ type, name, isOptional }) => {\n      if (String.isString(name)) {\n        // Somehow, somewhere, keys of type number are being coerced to strings…\n        return Option.match(Number.parse(name), {\n          onNone: () =>\n            Effect.gen(function* () {\n              const validator = yield* compileAst(type, isOptional);\n\n              return {\n                propertyName: name,\n                validator: isOptional ? v.optional(validator) : validator,\n              };\n            }),\n          onSome: (number) =>\n            Effect.fail(\n              new UnsupportedPropertySignatureKeyTypeError({\n                propertyKey: number,\n              }),\n            ),\n        });\n      } else {\n        return Effect.fail(\n          new UnsupportedPropertySignatureKeyTypeError({ propertyKey: name }),\n        );\n      }\n    }),\n    Effect.andThen((propertyNamesWithValidators) =>\n      pipe(\n        propertyNamesWithValidators,\n        Array.reduce(\n          {} as Record<string, Validator<any, any, any>>,\n          (acc, { propertyName, validator }) => ({\n            [propertyName]: validator,\n            ...acc,\n          }),\n        ),\n        Effect.succeed,\n      ),\n    ),\n  );\n\n// Errors\n\nconst runSyncThrow = <A, E>(effect: Effect.Effect<A, E>) =>\n  pipe(\n    effect,\n    Effect.runSyncExit,\n    Exit.match({\n      onSuccess: (validator) => validator,\n      onFailure: (cause) => {\n        throw Cause.squash(cause);\n      },\n    }),\n  );\n\nexport class TopLevelMustBeObjectError extends Data.TaggedError(\n  \"TopLevelMustBeObjectError\",\n) {\n  /* v8 ignore next -- @preserve */\n  override get message() {\n    return \"Top level schema must be an object\";\n  }\n}\n\nexport class TopLevelMustBeObjectOrUnionError extends Data.TaggedError(\n  \"TopLevelMustBeObjectOrUnionError\",\n) {\n  /* v8 ignore next -- @preserve */\n  override get message() {\n    return \"Top level schema must be an object or a union\";\n  }\n}\n\nexport class UnsupportedPropertySignatureKeyTypeError extends Data.TaggedError(\n  \"UnsupportedPropertySignatureKeyTypeError\",\n)<{\n  readonly propertyKey: number | symbol;\n}> {\n  /* v8 ignore next -- @preserve */\n  override get message() {\n    return `Unsupported property signature '${this.propertyKey.toString()}'. Property is of type '${typeof this\n      .propertyKey}' but only 'string' properties are supported.`;\n  }\n}\n\nexport class EmptyTupleIsNotSupportedError extends Data.TaggedError(\n  \"EmptyTupleIsNotSupportedError\",\n) {\n  /* v8 ignore next -- @preserve */\n  override get message() {\n    return \"Tuple must have at least one element\";\n  }\n}\n\nexport class UnsupportedSchemaTypeError extends Data.TaggedError(\n  \"UnsupportedSchemaTypeError\",\n)<{\n  readonly schemaType: SchemaAST.AST[\"_tag\"];\n}> {\n  /* v8 ignore next -- @preserve */\n  override get message() {\n    return `Unsupported schema type '${this.schemaType}'`;\n  }\n}\n\nexport class IndexSignaturesAreNotSupportedError extends Data.TaggedError(\n  \"IndexSignaturesAreNotSupportedError\",\n) {\n  /* v8 ignore next -- @preserve */\n  override get message() {\n    return \"Index signatures are not supported\";\n  }\n}\n\nexport class OptionalTupleElementsAreNotSupportedError extends Data.TaggedError(\n  \"OptionalTupleElementsAreNotSupportedError\",\n) {\n  /* v8 ignore next -- @preserve */\n  override get message() {\n    return \"Optional tuple elements are not supported\";\n  }\n}\n","import type { GenericId } from \"convex/values\";\nimport { type Option, Schema, SchemaAST } from \"effect\";\n\nconst ConvexId = Symbol.for(\"ConvexId\");\n\nexport const Id = <TableName extends string>(\n  tableName: TableName,\n): Schema.Schema<GenericId<TableName>> =>\n  Schema.String.pipe(\n    Schema.annotations({ [ConvexId]: tableName }),\n  ) as unknown as Schema.Schema<GenericId<TableName>>;\n\nexport const tableName = <TableName extends string>(\n  ast: SchemaAST.AST,\n): Option.Option<TableName> =>\n  SchemaAST.getAnnotation<TableName>(ConvexId)(ast);\n","import { Schema } from \"effect\";\nimport { Id } from \"~/src/server/schemas/Id\";\n\n/**\n * Produces a schema for Convex system fields.\n */\nexport const SystemFields = <TableName extends string>(tableName: TableName) =>\n  Schema.Struct({\n    _id: Id(tableName),\n    _creationTime: Schema.Number,\n  });\n\n/**\n * Extend a table schema with Convex system fields.\n */\nexport const extendWithSystemFields = <\n  TableName extends string,\n  TableSchema extends Schema.Schema.AnyNoContext,\n>(\n  tableName: TableName,\n  schema: TableSchema,\n): ExtendWithSystemFields<TableName, TableSchema> =>\n  Schema.extend(schema, SystemFields(tableName));\n\n/**\n * Extend a table schema with Convex system fields at the type level.\n */\nexport type ExtendWithSystemFields<\n  TableName extends string,\n  TableSchema extends Schema.Schema.AnyNoContext,\n> = Schema.extend<TableSchema, ReturnType<typeof SystemFields<TableName>>>;\n","import type {\n  OptionalRestArgs,\n  SchedulableFunctionReference,\n  Scheduler,\n} from \"convex/server\";\nimport { Effect } from \"effect\";\n\nexport interface ConfectScheduler {\n  runAfter<FuncRef extends SchedulableFunctionReference>(\n    delayMs: number,\n    functionReference: FuncRef,\n    ...args: OptionalRestArgs<FuncRef>\n  ): Effect.Effect<void>;\n  runAt<FuncRef extends SchedulableFunctionReference>(\n    timestamp: number | Date,\n    functionReference: FuncRef,\n    ...args: OptionalRestArgs<FuncRef>\n  ): Effect.Effect<void>;\n}\n\nexport class ConfectSchedulerImpl implements ConfectScheduler {\n  constructor(private scheduler: Scheduler) {}\n\n  runAfter<FuncRef extends SchedulableFunctionReference>(\n    delayMs: number,\n    functionReference: FuncRef,\n    ...args: OptionalRestArgs<FuncRef>\n  ): Effect.Effect<void> {\n    return Effect.promise(() =>\n      this.scheduler.runAfter(delayMs, functionReference, ...args),\n    );\n  }\n  runAt<FuncRef extends SchedulableFunctionReference>(\n    timestamp: number | Date,\n    functionReference: FuncRef,\n    ...args: OptionalRestArgs<FuncRef>\n  ): Effect.Effect<void> {\n    return Effect.promise(() =>\n      this.scheduler.runAt(timestamp, functionReference, ...args),\n    );\n  }\n}\n","import type { StorageReader, StorageWriter } from \"convex/server\";\nimport type { GenericId } from \"convex/values\";\nimport { Effect, Option } from \"effect\";\n\nexport interface ConfectStorageReader {\n  getUrl(\n    storageId: GenericId<\"_storage\">,\n  ): Effect.Effect<Option.Option<string>>;\n}\n\nexport class ConfectStorageReaderImpl implements ConfectStorageReader {\n  constructor(private storageReader: StorageReader) {}\n  getUrl(\n    storageId: GenericId<\"_storage\">,\n  ): Effect.Effect<Option.Option<string>> {\n    return Effect.promise(() => this.storageReader.getUrl(storageId)).pipe(\n      Effect.map(Option.fromNullable),\n    );\n  }\n}\n\nexport interface ConfectStorageWriter extends ConfectStorageReader {\n  generateUploadUrl(): Effect.Effect<string>;\n  delete(storageId: GenericId<\"_storage\">): Effect.Effect<void>;\n}\n\nexport class ConfectStorageWriterImpl implements ConfectStorageWriter {\n  private confectStorageReader: ConfectStorageReader;\n  constructor(private storageWriter: StorageWriter) {\n    this.confectStorageReader = new ConfectStorageReaderImpl(storageWriter);\n  }\n  getUrl(\n    storageId: GenericId<\"_storage\">,\n  ): Effect.Effect<Option.Option<string>> {\n    return this.confectStorageReader.getUrl(storageId);\n  }\n  generateUploadUrl(): Effect.Effect<string> {\n    return Effect.promise(() => this.storageWriter.generateUploadUrl());\n  }\n  delete(storageId: GenericId<\"_storage\">): Effect.Effect<void> {\n    return Effect.promise(() => this.storageWriter.delete(storageId));\n  }\n}\n","import {\n  actionGeneric,\n  type DefaultFunctionArgs,\n  type GenericActionCtx,\n  type GenericMutationCtx,\n  type GenericQueryCtx,\n  internalActionGeneric,\n  internalMutationGeneric,\n  internalQueryGeneric,\n  mutationGeneric,\n  queryGeneric,\n  type RegisteredAction,\n  type RegisteredMutation,\n  type RegisteredQuery,\n} from \"convex/server\";\nimport { Effect, pipe, Schema } from \"effect\";\n\nimport {\n  ConfectActionCtx,\n  ConfectMutationCtx,\n  ConfectQueryCtx,\n  makeConfectActionCtx,\n  makeConfectMutationCtx,\n  makeConfectQueryCtx,\n} from \"~/src/server/ctx\";\nimport type {\n  DataModelFromConfectDataModel,\n  GenericConfectDataModel,\n} from \"~/src/server/data-model\";\nimport {\n  type DatabaseSchemasFromConfectDataModel,\n  databaseSchemasFromConfectSchema,\n} from \"~/src/server/database\";\nimport type {\n  ConfectDataModelFromConfectSchema,\n  ConfectSchemaDefinition,\n  GenericConfectSchema,\n} from \"~/src/server/schema\";\nimport {\n  compileArgsSchema,\n  compileReturnsSchema,\n} from \"~/src/server/schema-to-validator\";\n\nexport const makeFunctions = <ConfectSchema extends GenericConfectSchema>(\n  confectSchemaDefinition: ConfectSchemaDefinition<ConfectSchema>,\n) => {\n  const databaseSchemas = databaseSchemasFromConfectSchema(\n    confectSchemaDefinition.confectSchema,\n  );\n\n  const query = <\n    ConvexArgs extends DefaultFunctionArgs,\n    ConfectArgs,\n    ConvexReturns,\n    ConfectReturns,\n    E,\n  >({\n    args,\n    returns,\n    handler,\n  }: {\n    args: Schema.Schema<ConfectArgs, ConvexArgs>;\n    returns: Schema.Schema<ConfectReturns, ConvexReturns>;\n    handler: (\n      a: ConfectArgs,\n    ) => Effect.Effect<\n      ConfectReturns,\n      E,\n      ConfectQueryCtx<ConfectDataModelFromConfectSchema<ConfectSchema>>\n    >;\n  }): RegisteredQuery<\"public\", ConvexArgs, Promise<ConvexReturns>> =>\n    queryGeneric(\n      confectQueryFunction({ databaseSchemas, args, returns, handler }),\n    );\n\n  const internalQuery = <\n    ConvexArgs extends DefaultFunctionArgs,\n    ConfectArgs,\n    ConvexReturns,\n    ConfectReturns,\n    E,\n  >({\n    args,\n    handler,\n    returns,\n  }: {\n    args: Schema.Schema<ConfectArgs, ConvexArgs>;\n    returns: Schema.Schema<ConfectReturns, ConvexReturns>;\n    handler: (\n      a: ConfectArgs,\n    ) => Effect.Effect<\n      ConfectReturns,\n      E,\n      ConfectQueryCtx<ConfectDataModelFromConfectSchema<ConfectSchema>>\n    >;\n  }): RegisteredQuery<\"internal\", ConvexArgs, Promise<ConvexReturns>> =>\n    internalQueryGeneric(\n      confectQueryFunction({ databaseSchemas, args, returns, handler }),\n    );\n\n  const mutation = <\n    ConvexValue extends DefaultFunctionArgs,\n    ConfectValue,\n    ConvexReturns,\n    ConfectReturns,\n    E,\n  >({\n    args,\n    returns,\n    handler,\n  }: {\n    args: Schema.Schema<ConfectValue, ConvexValue>;\n    returns: Schema.Schema<ConfectReturns, ConvexReturns>;\n    handler: (\n      a: ConfectValue,\n    ) => Effect.Effect<\n      ConfectReturns,\n      E,\n      | ConfectQueryCtx<ConfectDataModelFromConfectSchema<ConfectSchema>>\n      | ConfectMutationCtx<ConfectDataModelFromConfectSchema<ConfectSchema>>\n    >;\n  }): RegisteredMutation<\"public\", ConvexValue, Promise<ConvexReturns>> =>\n    mutationGeneric(\n      confectMutationFunction({ databaseSchemas, args, returns, handler }),\n    );\n\n  const internalMutation = <\n    ConvexValue extends DefaultFunctionArgs,\n    ConfectValue,\n    ConvexReturns,\n    ConfectReturns,\n    E,\n  >({\n    args,\n    returns,\n    handler,\n  }: {\n    args: Schema.Schema<ConfectValue, ConvexValue>;\n    returns: Schema.Schema<ConfectReturns, ConvexReturns>;\n    handler: (\n      a: ConfectValue,\n    ) => Effect.Effect<\n      ConfectReturns,\n      E,\n      | ConfectQueryCtx<ConfectDataModelFromConfectSchema<ConfectSchema>>\n      | ConfectMutationCtx<ConfectDataModelFromConfectSchema<ConfectSchema>>\n    >;\n  }): RegisteredMutation<\"internal\", ConvexValue, Promise<ConvexReturns>> =>\n    internalMutationGeneric(\n      confectMutationFunction({ databaseSchemas, args, returns, handler }),\n    );\n\n  const action = <\n    ConvexValue extends DefaultFunctionArgs,\n    ConfectValue,\n    ConvexReturns,\n    ConfectReturns,\n    E,\n  >({\n    args,\n    returns,\n    handler,\n  }: {\n    args: Schema.Schema<ConfectValue, ConvexValue>;\n    returns: Schema.Schema<ConfectReturns, ConvexReturns>;\n    handler: (\n      a: ConfectValue,\n    ) => Effect.Effect<\n      ConfectReturns,\n      E,\n      ConfectActionCtx<ConfectDataModelFromConfectSchema<ConfectSchema>>\n    >;\n  }): RegisteredAction<\"public\", ConvexValue, Promise<ConvexReturns>> =>\n    actionGeneric(confectActionFunction({ args, returns, handler }));\n\n  const internalAction = <\n    ConvexValue extends DefaultFunctionArgs,\n    ConfectValue,\n    ConvexReturns,\n    ConfectReturns,\n    E,\n  >({\n    args,\n    returns,\n    handler,\n  }: {\n    args: Schema.Schema<ConfectValue, ConvexValue>;\n    returns: Schema.Schema<ConfectReturns, ConvexReturns>;\n    handler: (\n      a: ConfectValue,\n    ) => Effect.Effect<\n      ConfectReturns,\n      E,\n      ConfectActionCtx<ConfectDataModelFromConfectSchema<ConfectSchema>>\n    >;\n  }): RegisteredAction<\"internal\", ConvexValue, Promise<ConvexReturns>> =>\n    internalActionGeneric(confectActionFunction({ args, returns, handler }));\n\n  return {\n    query,\n    internalQuery,\n    mutation,\n    internalMutation,\n    action,\n    internalAction,\n  };\n};\n\nconst confectQueryFunction = <\n  ConfectDataModel extends GenericConfectDataModel,\n  ConvexArgs extends DefaultFunctionArgs,\n  ConfectArgs,\n  ConvexReturns,\n  ConfectReturns,\n  E,\n>({\n  databaseSchemas,\n  args,\n  returns,\n  handler,\n}: {\n  databaseSchemas: DatabaseSchemasFromConfectDataModel<ConfectDataModel>;\n  args: Schema.Schema<ConfectArgs, ConvexArgs>;\n  returns: Schema.Schema<ConfectReturns, ConvexReturns>;\n  handler: (\n    a: ConfectArgs,\n  ) => Effect.Effect<ConfectReturns, E, ConfectQueryCtx<ConfectDataModel>>;\n}) => ({\n  args: compileArgsSchema(args),\n  returns: compileReturnsSchema(returns),\n  handler: (\n    ctx: GenericQueryCtx<DataModelFromConfectDataModel<ConfectDataModel>>,\n    actualArgs: ConvexArgs,\n  ): Promise<ConvexReturns> =>\n    pipe(\n      actualArgs,\n      Schema.decode(args),\n      Effect.orDie,\n      Effect.andThen((decodedArgs) =>\n        handler(decodedArgs).pipe(\n          Effect.provideService(\n            ConfectQueryCtx<ConfectDataModel>(),\n            makeConfectQueryCtx(ctx, databaseSchemas),\n          ),\n        ),\n      ),\n      Effect.andThen((convexReturns) =>\n        Schema.encodeUnknown(returns)(convexReturns),\n      ),\n      Effect.runPromise,\n    ),\n});\n\nconst confectMutationFunction = <\n  ConfectDataModel extends GenericConfectDataModel,\n  ConvexValue extends DefaultFunctionArgs,\n  ConfectValue,\n  ConvexReturns,\n  ConfectReturns,\n  E,\n>({\n  databaseSchemas,\n  args,\n  returns,\n  handler,\n}: {\n  databaseSchemas: DatabaseSchemasFromConfectDataModel<ConfectDataModel>;\n  args: Schema.Schema<ConfectValue, ConvexValue>;\n  returns: Schema.Schema<ConfectReturns, ConvexReturns>;\n  handler: (\n    a: ConfectValue,\n  ) => Effect.Effect<\n    ConfectReturns,\n    E,\n    ConfectQueryCtx<ConfectDataModel> | ConfectMutationCtx<ConfectDataModel>\n  >;\n}) => ({\n  args: compileArgsSchema(args),\n  returns: compileReturnsSchema(returns),\n  handler: (\n    ctx: GenericMutationCtx<DataModelFromConfectDataModel<ConfectDataModel>>,\n    actualArgs: ConvexValue,\n  ): Promise<ConvexReturns> =>\n    pipe(\n      actualArgs,\n      Schema.decode(args),\n      Effect.orDie,\n      Effect.andThen((decodedArgs) =>\n        handler(decodedArgs).pipe(\n          Effect.provideService(\n            ConfectQueryCtx<ConfectDataModel>(),\n            makeConfectQueryCtx(ctx, databaseSchemas),\n          ),\n          Effect.provideService(\n            ConfectMutationCtx<ConfectDataModel>(),\n            makeConfectMutationCtx(ctx, databaseSchemas),\n          ),\n        ),\n      ),\n      Effect.andThen((convexReturns) =>\n        Schema.encodeUnknown(returns)(convexReturns),\n      ),\n      Effect.runPromise,\n    ),\n});\n\nconst confectActionFunction = <\n  ConfectDataModel extends GenericConfectDataModel,\n  ConvexValue extends DefaultFunctionArgs,\n  ConfectValue,\n  ConvexReturns,\n  ConfectReturns,\n  E,\n>({\n  args,\n  returns,\n  handler,\n}: {\n  args: Schema.Schema<ConfectValue, ConvexValue>;\n  returns: Schema.Schema<ConfectReturns, ConvexReturns>;\n  handler: (\n    a: ConfectValue,\n  ) => Effect.Effect<ConfectReturns, E, ConfectActionCtx<ConfectDataModel>>;\n}) => ({\n  args: compileArgsSchema(args),\n  returns: compileReturnsSchema(returns),\n  handler: (\n    ctx: GenericActionCtx<DataModelFromConfectDataModel<ConfectDataModel>>,\n    actualArgs: ConvexValue,\n  ): Promise<ConvexReturns> =>\n    pipe(\n      actualArgs,\n      Schema.decode(args),\n      Effect.orDie,\n      Effect.andThen((decodedArgs) =>\n        handler(decodedArgs).pipe(\n          Effect.provideService(\n            ConfectActionCtx<ConfectDataModel>(),\n            makeConfectActionCtx(ctx),\n          ),\n        ),\n      ),\n      Effect.andThen((convexReturns) =>\n        Schema.encodeUnknown(returns)(convexReturns),\n      ),\n      Effect.runPromise,\n    ),\n});\n","import {\n  type HttpApi as EffectHttpApi,\n  type HttpRouter as EffectHttpRouter,\n  HttpApiBuilder,\n  HttpApiScalar,\n  type HttpApp,\n  HttpServer,\n} from \"@effect/platform\";\nimport {\n  type GenericActionCtx,\n  type HttpRouter,\n  httpActionGeneric,\n  httpRouter,\n  ROUTABLE_HTTP_METHODS,\n  type RouteSpecWithPathPrefix,\n} from \"convex/server\";\nimport { Array, Layer, pipe, Record } from \"effect\";\nimport { ConfectActionCtx, makeConfectActionCtx } from \"./ctx\";\nimport type {\n  DataModelFromConfectDataModel,\n  GenericConfectDataModel,\n} from \"./data-model\";\n\ntype Middleware = (\n  httpApp: HttpApp.Default,\n) => HttpApp.Default<\n  never,\n  | EffectHttpApi.Api\n  | HttpApiBuilder.Router\n  | EffectHttpRouter.HttpRouter.DefaultServices\n>;\n\nconst makeHandler =\n  <ConfectDataModel extends GenericConfectDataModel>({\n    pathPrefix,\n    apiLive,\n    middleware,\n    scalar,\n  }: {\n    pathPrefix: RoutePath;\n    apiLive: Layer.Layer<EffectHttpApi.Api, never, ConfectActionCtx<any>>;\n    middleware?: Middleware;\n    scalar?: HttpApiScalar.ScalarConfig;\n  }) =>\n  (\n    ctx: GenericActionCtx<DataModelFromConfectDataModel<ConfectDataModel>>,\n    request: Request,\n  ): Promise<Response> => {\n    const ConfectActionCtxLive = Layer.succeed(\n      ConfectActionCtx<any>(),\n      makeConfectActionCtx(ctx),\n    );\n\n    const ApiLive = apiLive.pipe(Layer.provide(ConfectActionCtxLive));\n\n    const ApiDocsLive = HttpApiScalar.layer({\n      path: `${pathPrefix}docs`,\n      scalar: {\n        baseServerURL: `${\n          // biome-ignore lint/complexity/useLiteralKeys: TS says this must be accessed with a string literal\n          process.env[\"CONVEX_SITE_URL\"]\n        }${pathPrefix}`,\n        ...scalar,\n      },\n    }).pipe(Layer.provide(ApiLive));\n\n    const EnvLive = Layer.mergeAll(\n      ApiLive,\n      ApiDocsLive,\n      HttpServer.layerContext,\n    );\n\n    const { handler } = HttpApiBuilder.toWebHandler(EnvLive, { middleware });\n\n    return handler(request);\n  };\n\nconst makeHttpAction = ({\n  pathPrefix,\n  apiLive,\n  middleware,\n  scalar,\n}: {\n  pathPrefix: RoutePath;\n  apiLive: Layer.Layer<EffectHttpApi.Api, never, ConfectActionCtx<any>>;\n  middleware?: Middleware;\n  scalar?: HttpApiScalar.ScalarConfig;\n}) =>\n  httpActionGeneric(makeHandler({ pathPrefix, apiLive, middleware, scalar }));\n\nexport type HttpApi = {\n  apiLive: Layer.Layer<EffectHttpApi.Api, never, ConfectActionCtx<any>>;\n  middleware?: Middleware;\n  scalar?: HttpApiScalar.ScalarConfig;\n};\n\nexport type RoutePath = \"/\" | `/${string}/`;\n\nconst mountEffectHttpApi =\n  ({\n    pathPrefix,\n    apiLive,\n    middleware,\n    scalar,\n  }: {\n    pathPrefix: RoutePath;\n    apiLive: Layer.Layer<EffectHttpApi.Api, never, ConfectActionCtx<any>>;\n    middleware?: Middleware;\n    scalar?: HttpApiScalar.ScalarConfig;\n  }) =>\n  (convexHttpRouter: HttpRouter): HttpRouter => {\n    const handler = makeHttpAction({ pathPrefix, apiLive, middleware, scalar });\n\n    Array.forEach(ROUTABLE_HTTP_METHODS, (method) => {\n      const routeSpec: RouteSpecWithPathPrefix = {\n        pathPrefix,\n        method,\n        handler,\n      };\n      convexHttpRouter.route(routeSpec);\n    });\n\n    return convexHttpRouter;\n  };\n\ntype HttpApis = Partial<Record<RoutePath, HttpApi>>;\n\nconst makeHttpRouter = (httpApis: HttpApis): HttpRouter => {\n  applyMonkeyPatches();\n\n  return pipe(\n    httpApis as Record<RoutePath, HttpApi>,\n    Record.toEntries,\n    Array.reduce(\n      httpRouter(),\n      (convexHttpRouter, [pathPrefix, { apiLive, middleware }]) =>\n        mountEffectHttpApi({\n          pathPrefix: pathPrefix as RoutePath,\n          apiLive,\n          middleware,\n        })(convexHttpRouter),\n    ),\n  );\n};\n\nconst applyMonkeyPatches = () => {\n  // These are necessary until the Convex runtime supports these APIs. See https://discord.com/channels/1019350475847499849/1281364098419785760\n\n  // biome-ignore lint/suspicious/noGlobalAssign: See above note.\n  URL = class extends URL {\n    override get username() {\n      return \"\";\n    }\n    override get password() {\n      return \"\";\n    }\n  };\n\n  Object.defineProperty(Request.prototype, \"signal\", {\n    get: () => new AbortSignal(),\n  });\n};\n\nexport { makeHttpRouter };\n","import { Schema } from \"effect\";\n\nexport const PaginationResult = <Doc extends Schema.Schema.AnyNoContext>(\n  Doc: Doc,\n) =>\n  Schema.Struct({\n    page: Schema.Array(Doc).pipe(Schema.mutable),\n    isDone: Schema.Boolean,\n    continueCursor: Schema.String,\n    splitCursor: Schema.optional(Schema.Union(Schema.String, Schema.Null)),\n    pageStatus: Schema.optional(\n      Schema.Union(\n        Schema.Literal(\"SplitRecommended\"),\n        Schema.Literal(\"SplitRequired\"),\n        Schema.Null,\n      ),\n    ),\n  }).pipe(Schema.mutable);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACaA,IAAAA,iBAAgC;;;ACZhC,oBAAqC;AAM9B,IAAM,kBAAN,MAA6C;AAAA,EAClD,YAAoB,MAAY;AAAZ;AAAA,EAAa;AAAA,EACjC,kBAA8D;AAC5D,eAAO;AAAA,MACL,qBAAO,QAAQ,MAAM,KAAK,KAAK,gBAAgB,CAAC;AAAA,MAChD,qBAAO,IAAI,qBAAO,YAAY;AAAA,IAChC;AAAA,EACF;AACF;;;ACYA,IAAAC,iBAaO;;;ACxCP,oBAeO;AAEP,IAAAC,iBAAqC;;;ACErC,oBAAkB;AAClB,IAAAC,iBAcO;AACP,uBAAoB;;;ACnCpB;AAAA;AAAA;AAAA;AAAA;AACA,IAAAC,iBAA+C;AAE/C,IAAM,WAAW,uBAAO,IAAI,UAAU;AAE/B,IAAM,KAAK,CAChBC,eAEA,sBAAO,OAAO;AAAA,EACZ,sBAAO,YAAY,EAAE,CAAC,QAAQ,GAAGA,WAAU,CAAC;AAC9C;AAEK,IAAM,YAAY,CACvB,QAEA,yBAAU,cAAyB,QAAQ,EAAE,GAAG;;;ADoC3C,IAAM,oBAAoB,CAC/B,eACuB;AACvB,QAAM,MAAM,sBAAO,cAAc,UAAU,EAAE;AAE7C,aAAO;AAAA,IACL;AAAA,IACA,qBAAM;AAAA,IACN,qBAAM;AAAA,MAAI;AAAA,MAAe,CAAC,mBACxB,qBAAM,qBAAqB,eAAe,eAAe,IACrD,yBAAyB,cAAc,IACvC,sBAAO,KAAK,IAAI,oCAAoC,CAAC;AAAA,IAC3D;AAAA,IACA,qBAAM,OAAO,MAAM,sBAAO,KAAK,IAAI,0BAA0B,CAAC,CAAC;AAAA,IAC/D;AAAA,EACF;AACF;AAIO,IAAM,uBAAuB,CAClC,WAEA,aAAa,WAAW,sBAAO,cAAc,MAAM,EAAE,GAAG,CAAC;AAgBpD,IAAM,qBAAqB,CAGhC,WAC6C;AAC7C,QAAM,MAAM,sBAAO,cAAc,MAAM,EAAE;AAEzC,aAAO;AAAA,IACL;AAAA,IACA,qBAAM;AAAA,IACN,qBAAM;AAAA,MAAI;AAAA,MAAe,CAAC,EAAE,gBAAgB,MAC1C,qBAAM,qBAAqB,eAAe,IACrC,WAAW,GAAG,IACf,sBAAO,KAAK,IAAI,oCAAoC,CAAC;AAAA,IAC3D;AAAA,IACA,qBAAM,IAAI,SAAS,CAAC,aAAa,WAAW,QAAQ,CAAC;AAAA,IACrD,qBAAM,OAAO,MAAM,sBAAO,KAAK,IAAI,iCAAiC,CAAC,CAAC;AAAA,IACtE;AAAA,EACF;AACF;AAkIO,IAAM,gBAAgB,CAC3B,WAEA,aAAa,WAAW,OAAO,GAAG,CAAC;AAE9B,IAAM,cAAc,CAAC,YAC1B;AAAA,EACE;AAAA,EACA,qBAAM;AAAA,EACN,qBAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAM;AAAA,EACR;AAAA,EACA,qBAAM;AAAA,IAAI;AAAA,IAAS,CAAC,EAAE,MAAM,MAC1B,qBAAM,KAAK,OAAO,CAAC,SAAS,YAAY,IAAI,CAAC;AAAA,EAC/C;AAAA,EACA,qBAAM;AAAA,IAAI;AAAA,IAAe,CAAC,EAAE,mBAAmB,MAC7C,qBAAM,KAAK,oBAAoB,CAAC,EAAE,KAAK,MAAM,YAAY,IAAI,CAAC;AAAA,EAChE;AAAA,EACA,qBAAM;AAAA,IACJ;AAAA,IACA,CAAC,EAAE,UAAU,kBAAkB,MAAM,SAAS,MAC5C,qBAAM;AAAA,MAAK;AAAA,MAAkB,CAAC,oBAC5B,YAAY,gBAAgB,IAAI;AAAA,IAClC,KAAK,qBAAM,KAAK,UAAU,CAAC,YAAY,YAAY,QAAQ,IAAI,CAAC;AAAA,EACpE;AAAA,EACA,qBAAM,IAAI,cAAc,CAAC,EAAE,KAAK,MAAM,YAAY,IAAI,CAAC;AAAA,EACvD,qBAAM,IAAI,WAAW,MAAM,IAAI;AAAA,EAC/B,qBAAM;AACR;AAEK,IAAM,aAAa,CACxB,KACA,kCAAkC,UASlC,YAAY,GAAG,IACX,sBAAO,QAAQ,gBAAE,IAAI,CAAC,QACtB;AAAA,EACE;AAAA,EACA,qBAAM;AAAA,EACN,qBAAM;AAAA,IAAI;AAAA,IAAW,CAAC,EAAE,QAAQ,UAC9B;AAAA,MACE;AAAA,MACA,qBAAM;AAAA,MACN,qBAAM;AAAA,QACJ,qBAAM;AAAA,QACN,qBAAM;AAAA,QACN,qBAAM;AAAA,QACN,qBAAM;AAAA,QACN,CAAC,MAAM,gBAAE,QAAQ,CAAC;AAAA,MACpB;AAAA,MACA,qBAAM,KAAK,qBAAM,MAAM,MAAM,gBAAE,KAAK,CAAC;AAAA,MACrC,qBAAM;AAAA,MACN,sBAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,qBAAM,IAAI,kBAAkB,MAAM,sBAAO,QAAQ,gBAAE,QAAQ,CAAC,CAAC;AAAA,EAC7D,qBAAM;AAAA,IAAI;AAAA,IAAiB,CAAC,cACvB,UAAU,SAAS,EAAE;AAAA,MACtB,sBAAO,MAAM;AAAA,QACX,QAAQ,MAAM,sBAAO,QAAQ,gBAAE,OAAO,CAAC;AAAA,QACvC,QAAQ,CAACC,eAAc,sBAAO,QAAQ,gBAAE,GAAGA,UAAS,CAAC;AAAA,MACvD,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,qBAAM,IAAI,iBAAiB,MAAM,sBAAO,QAAQ,gBAAE,QAAQ,CAAC,CAAC;AAAA,EAC5D,qBAAM,IAAI,iBAAiB,MAAM,sBAAO,QAAQ,gBAAE,MAAM,CAAC,CAAC;AAAA,EAC1D,qBAAM;AAAA,IAAI;AAAA,IAAS,CAAC,aAClB,YAAY,UAAU,+BAA+B;AAAA,EACvD;AAAA,EACA,qBAAM;AAAA,IAAI;AAAA,IAAe,CAAC,mBACxB,kBAAkB,cAAc;AAAA,EAClC;AAAA,EACA,qBAAM,IAAI,aAAa,CAAC,iBAAiB,gBAAgB,YAAY,CAAC;AAAA,EACtE,qBAAM;AAAA,IAAI;AAAA,IAAkB;AAAA,IAAc,MACxC,sBAAO,QAAQ,gBAAE,IAAI,CAAC;AAAA,EACxB;AAAA,EACA,qBAAM;AAAA,IAAI;AAAA,IAAe,CAAC,gBACxB,sBAAO;AAAA,MACL,YAAY,cAAc,GAAG,YAAY,cAAc;AAAA,QACrD,IAAI,YAAY,CAAC;AAAA,QACjB,CAAC;AAAA,QACD;AAAA,MACF;AAAA,MACA;AAAA,QACE,WAAW,MAAM,gBAAE,MAAM;AAAA,QACzB,WAAW,MACT,IAAI,2BAA2B;AAAA,UAC7B,YAAY,YAAY;AAAA,QAC1B,CAAC;AAAA,MACL;AAAA,IACF;AAAA,EACF;AAAA,EACA,qBAAM,IAAI,cAAc,CAAC,EAAE,KAAK,MAAM,WAAW,IAAI,CAAC;AAAA;AAAA,EAEtD,qBAAM;AAAA,IAAI;AAAA,IAAW,MACnB,sBAAO;AAAA,MACL;AAAA,IACF;AAAA,EACF;AAAA,EACA,qBAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,MACE,sBAAO;AAAA,MACL,IAAI,2BAA2B;AAAA,QAC7B,YAAY,IAAI;AAAA,MAClB,CAAC;AAAA,IACH;AAAA,EACJ;AAAA,EACA,qBAAM;AACR;AAEN,IAAM,cAAc,CAClB,EAAE,OAAO,CAAC,OAAO,QAAW,OAAI,EAAE,GAClC,oCAEA,sBAAO,IAAI,aAAa;AACtB,QAAM,mBAAmB,kCACrB,qBAAM;AAAA,IAAU,CAAC,OAAO,QAAQ,GAAG,IAAI;AAAA,IAAG,CAAC,aACzC,sBAAI,yBAAU,kBAAkB,EAAE,IAAI,IAClC,sBAAO,KAAK,WAAW,IAAI,CAAC,IAC5B,sBAAO,KAAK;AAAA,EAClB,IACA,qBAAM,IAAI,CAAC,OAAO,QAAQ,GAAG,IAAI,GAAG,CAAC,SAAS,WAAW,IAAI,CAAC;AAGlE,QAAM,CAAC,gBAAgB,iBAAiB,GAAG,cAAc,IACvD,OAAO,sBAAO,IAAI,gBAAgB;AAGpC,MAAI,mBAAmB,QAAW;AAChC,WAAO,OAAO,sBAAO;AAAA,MACnB;AAAA,IACF;AAAA,EACF,WAAW,oBAAoB,QAAW;AACxC,WAAO;AAAA,EACT,OAAO;AACL,WAAO,gBAAE,MAAM,gBAAgB,iBAAiB,GAAG,cAAc;AAAA,EACnE;AACF,CAAC;AAEH,IAAM,oBAAoB,CAAC,uBACzB;AAAA,EACE,eAAe;AAAA,EACf,qBAAM;AAAA,EACN,sBAAO,MAAM;AAAA,IACX,QAAQ,UACN,qBAAK,yBAAyB,cAAc,GAAG,sBAAO,IAAI,gBAAE,MAAM,CAAC;AAAA;AAAA,IAErE,QAAQ,MAAM,sBAAO,KAAK,IAAI,oCAAoC,CAAC;AAAA,EACrE,CAAC;AACH;AAEF,IAAM,kBAAkB,CAAC,EAAE,UAAU,KAAK,MACxC,sBAAO,IAAI,aAAa;AACtB,QAAM,oBAAgB;AAAA,IACpB;AAAA,IACA,qBAAM;AAAA,IACN,sBAAO,IAAI,CAAC,EAAE,KAAK,MAAM,WAAW,IAAI,CAAC;AAAA,IACzC,sBAAO;AAAA,EACT;AAEA,QAAM,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI;AAErB,QAAM,qBAAqB,CAAC,EAAE,MAAM,WAAW,MAC7C,sBAAO,GAAG,YAAY;AAAA,IACpB,QAAQ,MACN,sBAAO,KAAK,IAAI,0CAA0C,CAAC;AAAA,IAC7D,SAAS,MAAM,WAAW,IAAI;AAAA,EAChC,CAAC;AAEH,QAAM,sBAAsB,OAAO,MAAM,aACrC;AAAA,IACE;AAAA,IACA,sBAAO;AAAA,MAAS;AAAA,MAA0B,MACxC,sBAAO,KAAK,IAAI,8BAA8B,CAAC;AAAA,IACjD;AAAA,EACF,IACA,MAAM,SACJ,mBAAmB,CAAC,IACpB,sBAAO,IAAI,aAAa;AACtB,UAAM,iBAAiB,OAAO,mBAAmB,CAAC;AAClD,UAAM,kBAAkB,OAAO,mBAAmB,CAAC;AACnD,UAAM,iBAAiB,OAAO,sBAAO,QAAQ,GAAG,kBAAkB;AAElE,WAAO,gBAAE,MAAM,gBAAgB,iBAAiB,GAAG,cAAc;AAAA,EACnE,CAAC;AAEP,SAAO,gBAAE,MAAM,mBAAmB;AACpC,CAAC;AAEH,IAAM,2BAA2B,CAAC,uBAChC;AAAA,EACE,eAAe;AAAA;AAAA,EAEf,sBAAO,QAAQ,CAAC,EAAE,MAAM,MAAM,WAAW,MAAM;AAC7C,QAAI,sBAAO,SAAS,IAAI,GAAG;AAEzB,aAAO,sBAAO,MAAM,sBAAO,MAAM,IAAI,GAAG;AAAA,QACtC,QAAQ,MACN,sBAAO,IAAI,aAAa;AACtB,gBAAM,YAAY,OAAO,WAAW,MAAM,UAAU;AAEpD,iBAAO;AAAA,YACL,cAAc;AAAA,YACd,WAAW,aAAa,gBAAE,SAAS,SAAS,IAAI;AAAA,UAClD;AAAA,QACF,CAAC;AAAA,QACH,QAAQ,CAAC,WACP,sBAAO;AAAA,UACL,IAAI,yCAAyC;AAAA,YAC3C,aAAa;AAAA,UACf,CAAC;AAAA,QACH;AAAA,MACJ,CAAC;AAAA,IACH,OAAO;AACL,aAAO,sBAAO;AAAA,QACZ,IAAI,yCAAyC,EAAE,aAAa,KAAK,CAAC;AAAA,MACpE;AAAA,IACF;AAAA,EACF,CAAC;AAAA,EACD,sBAAO;AAAA,IAAQ,CAAC,oCACd;AAAA,MACE;AAAA,MACA,qBAAM;AAAA,QACJ,CAAC;AAAA,QACD,CAAC,KAAK,EAAE,cAAc,UAAU,OAAO;AAAA,UACrC,CAAC,YAAY,GAAG;AAAA,UAChB,GAAG;AAAA,QACL;AAAA,MACF;AAAA,MACA,sBAAO;AAAA,IACT;AAAA,EACF;AACF;AAIF,IAAM,eAAe,CAAO,eAC1B;AAAA,EACE;AAAA,EACA,sBAAO;AAAA,EACP,oBAAK,MAAM;AAAA,IACT,WAAW,CAAC,cAAc;AAAA,IAC1B,WAAW,CAAC,UAAU;AACpB,YAAM,qBAAM,OAAO,KAAK;AAAA,IAC1B;AAAA,EACF,CAAC;AACH;AAEK,IAAM,4BAAN,cAAwC,oBAAK;AAAA,EAClD;AACF,EAAE;AAAA;AAAA,EAEA,IAAa,UAAU;AACrB,WAAO;AAAA,EACT;AACF;AAEO,IAAM,mCAAN,cAA+C,oBAAK;AAAA,EACzD;AACF,EAAE;AAAA;AAAA,EAEA,IAAa,UAAU;AACrB,WAAO;AAAA,EACT;AACF;AAEO,IAAM,2CAAN,cAAuD,oBAAK;AAAA,EACjE;AACF,EAEG;AAAA;AAAA,EAED,IAAa,UAAU;AACrB,WAAO,mCAAmC,KAAK,YAAY,SAAS,CAAC,2BAA2B,OAAO,KACpG,WAAW;AAAA,EAChB;AACF;AAEO,IAAM,gCAAN,cAA4C,oBAAK;AAAA,EACtD;AACF,EAAE;AAAA;AAAA,EAEA,IAAa,UAAU;AACrB,WAAO;AAAA,EACT;AACF;AAEO,IAAM,6BAAN,cAAyC,oBAAK;AAAA,EACnD;AACF,EAEG;AAAA;AAAA,EAED,IAAa,UAAU;AACrB,WAAO,4BAA4B,KAAK,UAAU;AAAA,EACpD;AACF;AAEO,IAAM,sCAAN,cAAkD,oBAAK;AAAA,EAC5D;AACF,EAAE;AAAA;AAAA,EAEA,IAAa,UAAU;AACrB,WAAO;AAAA,EACT;AACF;AAEO,IAAM,4CAAN,cAAwD,oBAAK;AAAA,EAClE;AACF,EAAE;AAAA;AAAA,EAEA,IAAa,UAAU;AACrB,WAAO;AAAA,EACT;AACF;;;AE1kBA,IAAAC,iBAAuB;AAMhB,IAAM,eAAe,CAA2BC,eACrD,sBAAO,OAAO;AAAA,EACZ,KAAK,GAAGA,UAAS;AAAA,EACjB,eAAe,sBAAO;AACxB,CAAC;AAKI,IAAM,yBAAyB,CAIpCA,YACA,WAEA,sBAAO,OAAO,QAAQ,aAAaA,UAAS,CAAC;;;AHMxC,IAAM,sBAAsB;AAAA,EACjC,sBAAsB,sBAAO,OAAO;AAAA,IAClC,MAAM,sBAAO;AAAA,IACb,MAAM,sBAAO,MAAM,sBAAO,GAAG;AAAA,IAC7B,eAAe,sBAAO;AAAA,IACtB,eAAe,sBAAO,SAAS,sBAAO,MAAM;AAAA,IAC5C,OAAO,sBAAO;AAAA,MACZ,sBAAO,OAAO,EAAE,MAAM,sBAAO,QAAQ,SAAS,EAAE,CAAC;AAAA,MACjD,sBAAO,OAAO,EAAE,MAAM,sBAAO,QAAQ,YAAY,EAAE,CAAC;AAAA,MACpD,sBAAO,OAAO,EAAE,MAAM,sBAAO,QAAQ,SAAS,EAAE,CAAC;AAAA,MACjD,sBAAO,OAAO;AAAA,QACZ,MAAM,sBAAO,QAAQ,QAAQ;AAAA,QAC7B,OAAO,sBAAO;AAAA,MAChB,CAAC;AAAA,MACD,sBAAO,OAAO,EAAE,MAAM,sBAAO,QAAQ,UAAU,EAAE,CAAC;AAAA,IACpD;AAAA,EACF,CAAC;AAAA,EACD,UAAU,sBAAO,OAAO;AAAA,IACtB,QAAQ,sBAAO;AAAA,IACf,MAAM,sBAAO;AAAA,IACb,aAAa,sBAAO,SAAS,sBAAO,MAAM;AAAA,EAC5C,CAAC;AACH;AAEA,IAAM,gCAAgC,CAGpC,mBAEC;AAAA,EACC,GAAG,sBAAO,IAAI,eAAe,CAAC,EAAE,YAAY,GAAGC,gBAAe;AAAA,IAC5D,kBAAkB,uBAAuBA,YAAW,WAAW;AAAA,IAC/D,qBAAqB;AAAA,EACvB,EAAE;AAAA,EACF,GAAG,sBAAO,IAAI,qBAAqB,CAAC,aAAaA,gBAAe;AAAA,IAC9D,kBAAkB,uBAAuBA,YAAW,WAAW;AAAA,IAC/D,qBAAqB;AAAA,EACvB,EAAE;AACJ;AAwBF,IAAM,8BAAN,MAEA;AAAA,EACE;AAAA,EACA;AAAA,EAIA;AAAA,EAEA,YAAY,eAA8B;AACxC,SAAK,gBAAgB;AACrB,SAAK,6BAAyB;AAAA,MAC5B;AAAA,MACA,sBAAO,IAAI,CAAC,EAAE,gBAAgB,MAAM,eAAe;AAAA,MACnD,cAAAC;AAAA,IACF;AAIA,SAAK,eAAe,8BAA8B,aAAa;AAAA,EACjE;AACF;AAYO,IAAM,eAAe,CAC1B,kBAEA,IAAI,4BAA2C,aAAa;AAmH9D,IAAM,6BAAN,MAkBA;AAAA,EACE;AAAA,EACA;AAAA,EAOA,YAAY,aAA0B,gBAAgC;AACpE,SAAK,cAAc;AACnB,SAAK,sBAAkB,cAAAC,aAAkB,cAAc;AAAA,EACzD;AAAA,EAEA,MAKE,MACA,QAaA;AACA,SAAK,kBAAkB,KAAK,gBAAgB,MAAM,MAAM,MAAM;AAE9D,WAAO;AAAA,EACT;AAAA,EAEA,YAKE,MACA,aAgBA;AACA,SAAK,kBAAkB,KAAK,gBAAgB,YAAY,MAAM,WAAW;AAEzE,WAAO;AAAA,EACT;AAAA,EAEA,YAKE,MACA,aAqBA;AACA,SAAK,kBAAkB,KAAK,gBAAgB,YAAY,MAAM,WAAW;AAEzE,WAAO;AAAA,EACT;AACF;AAKO,IAAM,cAAc,CACzB,gBACwC;AACxC,QAAM,iBAAiB,mBAAmB,WAAW;AACrD,SAAO,IAAI;AAAA,IACT;AAAA,IACA;AAAA,EACF;AACF;AAwDO,IAAM,sBAAsB;AAAA,EACjC,sBAAsB,YAAY,oBAAoB,oBAAoB;AAAA,EAC1E,UAAU,YAAY,oBAAoB,QAAQ;AACpD;AAEO,IAAM,gCAAgC,aAAa,mBAAmB;;;ADvVtE,IAAM,iBAAN,cAA6B,oBAAK,YAAY,gBAAgB,EAAE;AAAC;AAExE,IAAM,mBAAN,MAAM,kBAIN;AAAA,EACE;AAAA,EACA;AAAA,EAIA;AAAA,EACA,YACE,GAGA,aAIAC,YACA;AAEA,SAAK,IAAI;AACT,SAAK,cAAc;AACnB,SAAK,YAAYA;AAAA,EACnB;AAAA,EACA,OACE,gBACqC;AACrC,WAAO,eAAe,KAAK,WAAW,KAAK,aAAa,cAAc;AAAA,EACxE;AAAA,EACA,OACE,WAGA;AACA,WAAO,IAAI;AAAA,MACT,KAAK,EAAE,OAAO,SAAS;AAAA,MACvB,KAAK;AAAA,MACL,KAAK;AAAA,IACP;AAAA,EACF;AAAA,EACA,MAAM,OAAsE;AAC1E,WAAO,IAAI;AAAA,MACT,KAAK,EAAE,MAAM,KAAK;AAAA,MAClB,KAAK;AAAA,MACL,KAAK;AAAA,IACP;AAAA,EACF;AAAA,EACA,SACE,gBACsE;AACtE,eAAO;AAAA,MACL,sBAAO;AAAA,MACP,sBAAO;AAAA,QAAK;AAAA,QAAoB,MAC9B,sBAAO,QAAQ,MAAM,KAAK,EAAE,SAAS,cAAc,CAAC;AAAA,MACtD;AAAA,MACA,sBAAO;AAAA,QAAI;AAAA,QAAc,CAAC,EAAE,iBAAiB,UAC3C;AAAA,UACE,iBAAiB;AAAA,UACjB,qBAAM,IAAI,CAAC,aAAa,KAAK,OAAO,QAAQ,CAAC;AAAA,QAC/C;AAAA,MACF;AAAA,MACA,sBAAO,IAAI,CAAC,EAAE,kBAAkB,WAAW,OAAO;AAAA,QAChD,MAAM;AAAA,QACN,QAAQ,iBAAiB;AAAA,QACzB,gBAAgB,iBAAiB;AAAA;AAAA,QAEjC,GAAI,iBAAiB,cACjB,EAAE,aAAa,iBAAiB,YAAY,IAC5C,CAAC;AAAA;AAAA,QAEL,GAAI,iBAAiB,aACjB,EAAE,YAAY,iBAAiB,WAAW,IAC1C,CAAC;AAAA,MACP,EAAE;AAAA,IACJ;AAAA,EACF;AAAA;AAAA,EAEA,UAAgE;AAC9D,eAAO;AAAA,MACL,sBAAO,QAAQ,MAAM,KAAK,EAAE,QAAQ,CAAC;AAAA,MACrC,sBAAO,IAAI,qBAAM,IAAI,CAAC,aAAa,KAAK,OAAO,QAAQ,CAAC,CAAC;AAAA,IAC3D;AAAA,EACF;AAAA,EACA,KAAK,GAAiE;AACpE,eAAO;AAAA,MACL,KAAK,OAAO;AAAA,MACZ,sBAAO,KAAK,CAAC;AAAA,MACb,sBAAO;AAAA,MACP,sBAAO,IAAI,CAAC,UAAU,qBAAM,QAAQ,KAAK,CAAC;AAAA,IAC5C;AAAA,EACF;AAAA,EACA,QAA2E;AACzE,eAAO,qBAAK,KAAK,OAAO,GAAG,sBAAO,OAAO;AAAA,EAC3C;AAAA,EACA,SAGE;AACA,eAAO;AAAA,MACL,KAAK,OAAO;AAAA,MACZ,sBAAO,KAAK,CAAC;AAAA,MACb,sBAAO;AAAA,MACP,sBAAO;AAAA,QAAQ,CAAC,cACd;AAAA,UACE;AAAA,UACA,qBAAM,IAAI,CAAC;AAAA,UACX,sBAAO,MAAM;AAAA,YACX,QAAQ,MAAM,sBAAO,KAAK,IAAI,eAAe,CAAC;AAAA,YAC9C,QAAQ,MAAM,sBAAO,QAAQ,qBAAM,IAAI,OAAO,CAAC,CAAC;AAAA,UAClD,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,SAA6D;AAC3D,eAAO;AAAA,MACL,sBAAO,kBAAkB,KAAK,GAAG,uBAAQ;AAAA,MACzC,sBAAO,IAAI,CAAC,aAAa,KAAK,OAAO,QAAQ,CAAC;AAAA,MAC9C,sBAAO;AAAA,IACT;AAAA,EACF;AACF;AA4CA,IAAM,8BAAN,MAIA;AAAA,EACE;AAAA,EACA;AAAA,EAIA;AAAA,EACA,YACE,GACA,aAIAA,YACA;AACA,SAAK,IAAI;AACT,SAAK,cAAc;AACnB,SAAK,YAAYA;AAAA,EACnB;AAAA,EACA,gBAA2D;AACzD,WAAO,IAAI;AAAA,MACT,KAAK,EAAE,cAAc;AAAA,MACrB,KAAK;AAAA,MACL,KAAK;AAAA,IACP;AAAA,EACF;AAAA,EACA,UAKE,WACA,YAY2C;AAC3C,WAAO,IAAI;AAAA,MACT,KAAK,EAAE,UAAU,WAAW,UAAU;AAAA,MACtC,KAAK;AAAA,MACL,KAAK;AAAA,IACP;AAAA,EACF;AAAA,EACA,gBAKE,WACA,cASkD;AAClD,WAAO,IAAI;AAAA,MACT,KAAK,EAAE,gBAAgB,WAAW,YAAY;AAAA,MAC9C,KAAK;AAAA,MACL,KAAK;AAAA,IACP;AAAA,EACF;AAAA,EACA,OACE,WAG2C;AAC3C,WAAO,KAAK,cAAc,EAAE,OAAO,SAAS;AAAA,EAC9C;AAAA,EACA,MACE,OACkD;AAClD,WAAO,KAAK,cAAc,EAAE,MAAM,KAAK;AAAA,EACzC;AAAA,EACA,SACE,gBACsE;AACtE,WAAO,KAAK,cAAc,EAAE,SAAS,cAAc;AAAA,EACrD;AAAA,EACA,UAAgE;AAC9D,WAAO,KAAK,cAAc,EAAE,QAAQ;AAAA,EACtC;AAAA,EACA,KAAK,GAAiE;AACpE,WAAO,KAAK,cAAc,EAAE,KAAK,CAAC;AAAA,EACpC;AAAA,EACA,QAA2E;AACzE,WAAO,KAAK,cAAc,EAAE,MAAM;AAAA,EACpC;AAAA,EACA,SAGE;AACA,WAAO,KAAK,cAAc,EAAE,OAAO;AAAA,EACrC;AAAA,EACA,SAA6D;AAC3D,WAAO,KAAK,cAAc,EAAE,OAAO;AAAA,EACrC;AACF;AAkCO,IAAM,gCAAN,MAGP;AAAA,EACE;AAAA,EACA;AAAA,EACA,YACE,IACA,iBACA;AACA,SAAK,KAAK;AACV,SAAK,kBAAkB;AAAA,EACzB;AAAA,EACA,OACEA,YACA,gBACgD;AAChD,WAAO;AAAA,MACLA;AAAA,MACA,KAAK,gBAAgBA,UAAS;AAAA,MAC9B;AAAA,IACF;AAAA,EACF;AAAA,EACA,UACE,IAC+D;AAC/D,WAAO,qBAAM;AAAA,MAAU,sBAAO,KAAK,KAAK,eAAe;AAAA,MAAG,CAACA,eACzD,sBAAO,OAAO,KAAK,YAAYA,YAAW,EAAE,CAAC;AAAA,IAC/C;AAAA,EACF;AAAA,EACA,YACEA,YACA,IACqC;AACrC,WAAO,sBAAO,aAAa,KAAK,GAAG,YAAYA,YAAW,EAAE,CAAC;AAAA,EAC/D;AAAA,EACA,IACE,IAGA;AACA,WAAO,sBAAO,IAAI,MAAM,aAAa;AACnC,YAAM,kBAAkB,OAAO,sBAAO,QAAQ,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC,EAAE;AAAA,QACnE,sBAAO,IAAI,sBAAO,YAAY;AAAA,MAChC;AACA,YAAMA,aAAY,OAAO,KAAK,UAAU,EAAE,EAAE,KAAK,sBAAO,KAAK;AAC7D,iBAAO;AAAA,QACL;AAAA,QACA,sBAAO,IAAI,CAAC,cAAc,KAAK,OAAOA,YAAW,SAAS,CAAC;AAAA,MAC7D;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,MACEA,YACiE;AACjE,WAAO,IAAI;AAAA,MACT,KAAK,GAAG,MAAMA,UAAS;AAAA,MACvB,KAAK,gBAAgBA,UAAS;AAAA,MAC9BA;AAAA,IACF;AAAA,EACF;AACF;AAEO,IAAM,4BAAN,MAGP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA,YACE,IACA,iBACA;AACA,SAAK,KAAK;AACV,SAAK,kBAAkB;AACvB,SAAK,SAAS,IAAI;AAAA,MAChB,KAAK,GAAG;AAAA,MACR;AAAA,QACE,8BAA8B;AAAA,MAChC;AAAA,IACF;AAAA,EACF;AAAA,EACA,OACEA,YACA,gBACgD;AAChD,WAAO;AAAA,MACLA;AAAA,MACA,KAAK,gBAAgBA,UAAS;AAAA,MAC9B;AAAA,IACF;AAAA,EACF;AAAA,EACA,UACE,IAC+D;AAC/D,WAAO,qBAAM;AAAA,MAAU,sBAAO,KAAK,KAAK,eAAe;AAAA,MAAG,CAACA,eACzD,sBAAO,OAAO,KAAK,YAAYA,YAAW,EAAE,CAAC;AAAA,IAC/C;AAAA,EACF;AAAA,EACA,YACEA,YACA,IACqC;AACrC,WAAO,sBAAO,aAAa,KAAK,GAAG,YAAYA,YAAW,EAAE,CAAC;AAAA,EAC/D;AAAA,EACA,IACE,IAGA;AACA,WAAO,sBAAO,IAAI,MAAM,aAAa;AACnC,YAAM,kBAAkB,OAAO,sBAAO,QAAQ,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC,EAAE;AAAA,QACnE,sBAAO,IAAI,sBAAO,YAAY;AAAA,MAChC;AACA,YAAMA,aAAY,OAAO,KAAK,UAAU,EAAE,EAAE,KAAK,sBAAO,KAAK;AAC7D,iBAAO;AAAA,QACL;AAAA,QACA,sBAAO,IAAI,CAAC,cAAc,KAAK,OAAOA,YAAW,SAAS,CAAC;AAAA,MAC7D;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,MACEA,YACiE;AACjE,WAAO,IAAI;AAAA,MACT,KAAK,GAAG,MAAMA,UAAS;AAAA,MACvB,KAAK,gBAAgBA,UAAS;AAAA,MAC9BA;AAAA,IACF;AAAA,EACF;AACF;AAsCO,IAAM,4BAAN,MAGP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA,YACE,IACA,iBACA;AACA,SAAK,KAAK;AACV,SAAK,kBAAkB;AACvB,SAAK,SAAS,IAAI,0BAA0B,IAAI,eAAe;AAAA,EACjE;AAAA,EACA,UACE,IAC+D;AAC/D,WAAO,qBAAM;AAAA,MAAU,sBAAO,KAAK,KAAK,eAAe;AAAA,MAAG,CAACA,eACzD,sBAAO,OAAO,KAAK,YAAYA,YAAW,EAAE,CAAC;AAAA,IAC/C;AAAA,EACF;AAAA,EACA,MACEA,YACiE;AACjE,WAAO,KAAK,OAAO,MAAMA,UAAS;AAAA,EACpC;AAAA,EACA,IACE,IAGA;AACA,WAAO,KAAK,OAAO,IAAI,EAAE;AAAA,EAC3B;AAAA,EACA,YACEA,YACA,IACqC;AACrC,WAAO,sBAAO,aAAa,KAAK,GAAG,YAAYA,YAAW,EAAE,CAAC;AAAA,EAC/D;AAAA,EACA,OACE,OACA,OAG6D;AAC7D,eAAO;AAAA,MACL;AAAA,MACA,sBAAO,OAAO,KAAK,gBAAgB,KAAK,CAAC;AAAA,MACzC,sBAAO;AAAA,QAAQ,CAAC,iBACd,sBAAO;AAAA,UAAQ,MACb,KAAK,GAAG;AAAA,YACN;AAAA,YACA;AAAA,UASF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,MACE,IACA,OAMA;AACA,WAAO,sBAAO,IAAI,MAAM,aAAa;AACnC,YAAMA,aAAY,OAAO,KAAK,UAAU,EAAE;AAC1C,YAAM,cAAc,KAAK,gBAAgBA,UAAS;AAElD,YAAM,oBAAoB,OAAO,sBAAO;AAAA,QAAQ,MAC9C,KAAK,GAAG,IAAI,EAAE;AAAA,MAChB,EAAE;AAAA,QACA,sBAAO;AAAA,UACL,CACE,QAKA,MACI,sBAAO,QAAQ,GAAG,IAClB,sBAAO,IAAI,IAAI,0BAA0B,CAAC;AAAA,QAClD;AAAA,MACF;AAEA,YAAM,qBACJ,OAAO,sBAAO,cAAc,WAAW,EAAE,iBAAiB;AAE5D,YAAM,mBAAmB,WAAO;AAAA,QAC9B;AAAA,QACA,sBAAO;AAAA,UAAO;AAAA,UAAoB,CAAC,KAAKC,QAAO,QAC7CA,WAAU,SACN,sBAAO,OAAO,KAAK,GAAG,IACtB,sBAAO,IAAI,KAAK,KAAKA,MAAK;AAAA,QAChC;AAAA,QACA,sBAAO,cAAc,WAAW;AAAA,MAClC;AAEA,aAAO,sBAAO;AAAA,QAAQ,MACpB,KAAK,GAAG;AAAA,UACN;AAAA,UACA;AAAA,QASF;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,QACE,IACA,OAGqB;AACrB,WAAO,sBAAO,QAAQ,MAAM,KAAK,GAAG,QAAQ,IAAI,KAAK,CAAC;AAAA,EACxD;AAAA,EACA,OAAO,IAA4C;AACjD,WAAO,sBAAO,QAAQ,MAAM,KAAK,GAAG,OAAO,EAAE,CAAC;AAAA,EAChD;AACF;AAEO,IAAM,mCAAmC,CAG9C,kBAEA,sBAAO;AAAA,EACL;AAAA,EACA,CAAC,EAAE,YAAY,MAAM;AACvB;AAIF,IAAM,4BAAN,cAAwC,oBAAK;AAAA,EAC3C;AACF,EAAE;AAAC;AAEH,IAAM,iBAAiB,CAKrBD,YACA,aACA,mBAEA,sBAAO,kBAAkB,uBAAuBA,YAAW,WAAW,GAAG;AAAA,EACvE,kBAAkB;AACpB,CAAC,EAAE,cAAc;;;AK9tBnB,IAAAE,iBAAuB;AAehB,IAAM,uBAAN,MAAuD;AAAA,EAC5D,YAAoB,WAAsB;AAAtB;AAAA,EAAuB;AAAA,EAE3C,SACE,SACA,sBACG,MACkB;AACrB,WAAO,sBAAO;AAAA,MAAQ,MACpB,KAAK,UAAU,SAAS,SAAS,mBAAmB,GAAG,IAAI;AAAA,IAC7D;AAAA,EACF;AAAA,EACA,MACE,WACA,sBACG,MACkB;AACrB,WAAO,sBAAO;AAAA,MAAQ,MACpB,KAAK,UAAU,MAAM,WAAW,mBAAmB,GAAG,IAAI;AAAA,IAC5D;AAAA,EACF;AACF;;;ACvCA,IAAAC,iBAA+B;AAQxB,IAAM,2BAAN,MAA+D;AAAA,EACpE,YAAoB,eAA8B;AAA9B;AAAA,EAA+B;AAAA,EACnD,OACE,WACsC;AACtC,WAAO,sBAAO,QAAQ,MAAM,KAAK,cAAc,OAAO,SAAS,CAAC,EAAE;AAAA,MAChE,sBAAO,IAAI,sBAAO,YAAY;AAAA,IAChC;AAAA,EACF;AACF;AAOO,IAAM,2BAAN,MAA+D;AAAA,EAEpE,YAAoB,eAA8B;AAA9B;AAClB,SAAK,uBAAuB,IAAI,yBAAyB,aAAa;AAAA,EACxE;AAAA,EAHQ;AAAA,EAIR,OACE,WACsC;AACtC,WAAO,KAAK,qBAAqB,OAAO,SAAS;AAAA,EACnD;AAAA,EACA,oBAA2C;AACzC,WAAO,sBAAO,QAAQ,MAAM,KAAK,cAAc,kBAAkB,CAAC;AAAA,EACpE;AAAA,EACA,OAAO,WAAuD;AAC5D,WAAO,sBAAO,QAAQ,MAAM,KAAK,cAAc,OAAO,SAAS,CAAC;AAAA,EAClE;AACF;;;AROO,IAAM,qBAAqB,MAGhC,uBAAQ;AAAA,EACN;AACF;AAUK,IAAM,kBAAkB,MAG7B,uBAAQ;AAAA,EACN;AACF;AAgDK,IAAM,mBAAmB,MAG9B,uBAAQ;AAAA,EACN;AACF;AAEK,IAAM,sBAAsB,CAGjC,KACA,qBACuC;AAAA,EACvC;AAAA,EACA,IAAI,IAAI,0BAA0B,IAAI,IAAI,eAAe;AAAA,EACzD,MAAM,IAAI,gBAAgB,IAAI,IAAI;AAAA,EAClC,SAAS,IAAI,yBAAyB,IAAI,OAAO;AACnD;AAEO,IAAM,yBAAyB,CAGpC,KACA,qBAC0C;AAAA,EAC1C;AAAA,EACA,IAAI,IAAI,0BAA0B,IAAI,IAAI,eAAe;AAAA,EACzD,MAAM,IAAI,gBAAgB,IAAI,IAAI;AAAA,EAClC,SAAS,IAAI,yBAAyB,IAAI,OAAO;AAAA,EACjD,WAAW,IAAI,qBAAqB,IAAI,SAAS;AACnD;AAEO,IAAM,uBAAuB,CAGlC,SACwC;AAAA,EACxC,UAAU,CACR,UACG,cACA,sBAAO,QAAQ,MAAM,IAAI,SAAS,OAAO,GAAG,SAAS,CAAC;AAAA,EAC3D,aAAa,CAGX,aACG,iBACA,sBAAO,QAAQ,MAAM,IAAI,YAAY,UAAU,GAAG,YAAY,CAAC;AAAA,EACpE,WAAW,CAGT,WACG,eACA,sBAAO,QAAQ,MAAM,IAAI,UAAU,QAAQ,GAAG,UAAU,CAAC;AAAA,EAC9D,cAAc,CAMZC,YACA,WACA,UASG,sBAAO,QAAQ,MAAM,IAAI,aAAaA,YAAW,WAAW,KAAK,CAAC;AAAA,EACvE;AAAA,EACA,MAAM,IAAI,gBAAgB,IAAI,IAAI;AAAA,EAClC,SAAS,IAAI,yBAAyB,IAAI,OAAO;AAAA,EACjD,WAAW,IAAI,qBAAqB,IAAI,SAAS;AACnD;;;AShMA,IAAAC,iBAcO;AACP,IAAAC,kBAAqC;AA4B9B,IAAM,gBAAgB,CAC3B,4BACG;AACH,QAAM,kBAAkB;AAAA,IACtB,wBAAwB;AAAA,EAC1B;AAEA,QAAM,QAAQ,CAMZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,UAWE;AAAA,IACE,qBAAqB,EAAE,iBAAiB,MAAM,SAAS,QAAQ,CAAC;AAAA,EAClE;AAEF,QAAM,gBAAgB,CAMpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,UAWE;AAAA,IACE,qBAAqB,EAAE,iBAAiB,MAAM,SAAS,QAAQ,CAAC;AAAA,EAClE;AAEF,QAAM,WAAW,CAMf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,UAYE;AAAA,IACE,wBAAwB,EAAE,iBAAiB,MAAM,SAAS,QAAQ,CAAC;AAAA,EACrE;AAEF,QAAM,mBAAmB,CAMvB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,UAYE;AAAA,IACE,wBAAwB,EAAE,iBAAiB,MAAM,SAAS,QAAQ,CAAC;AAAA,EACrE;AAEF,QAAM,SAAS,CAMb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,UAWE,8BAAc,sBAAsB,EAAE,MAAM,SAAS,QAAQ,CAAC,CAAC;AAEjE,QAAM,iBAAiB,CAMrB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,UAWE,sCAAsB,sBAAsB,EAAE,MAAM,SAAS,QAAQ,CAAC,CAAC;AAEzE,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,IAAM,uBAAuB,CAO3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,OAOO;AAAA,EACL,MAAM,kBAAkB,IAAI;AAAA,EAC5B,SAAS,qBAAqB,OAAO;AAAA,EACrC,SAAS,CACP,KACA,mBAEA;AAAA,IACE;AAAA,IACA,uBAAO,OAAO,IAAI;AAAA,IAClB,uBAAO;AAAA,IACP,uBAAO;AAAA,MAAQ,CAAC,gBACd,QAAQ,WAAW,EAAE;AAAA,QACnB,uBAAO;AAAA,UACL,gBAAkC;AAAA,UAClC,oBAAoB,KAAK,eAAe;AAAA,QAC1C;AAAA,MACF;AAAA,IACF;AAAA,IACA,uBAAO;AAAA,MAAQ,CAAC,kBACd,uBAAO,cAAc,OAAO,EAAE,aAAa;AAAA,IAC7C;AAAA,IACA,uBAAO;AAAA,EACT;AACJ;AAEA,IAAM,0BAA0B,CAO9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,OAWO;AAAA,EACL,MAAM,kBAAkB,IAAI;AAAA,EAC5B,SAAS,qBAAqB,OAAO;AAAA,EACrC,SAAS,CACP,KACA,mBAEA;AAAA,IACE;AAAA,IACA,uBAAO,OAAO,IAAI;AAAA,IAClB,uBAAO;AAAA,IACP,uBAAO;AAAA,MAAQ,CAAC,gBACd,QAAQ,WAAW,EAAE;AAAA,QACnB,uBAAO;AAAA,UACL,gBAAkC;AAAA,UAClC,oBAAoB,KAAK,eAAe;AAAA,QAC1C;AAAA,QACA,uBAAO;AAAA,UACL,mBAAqC;AAAA,UACrC,uBAAuB,KAAK,eAAe;AAAA,QAC7C;AAAA,MACF;AAAA,IACF;AAAA,IACA,uBAAO;AAAA,MAAQ,CAAC,kBACd,uBAAO,cAAc,OAAO,EAAE,aAAa;AAAA,IAC7C;AAAA,IACA,uBAAO;AAAA,EACT;AACJ;AAEA,IAAM,wBAAwB,CAO5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,OAMO;AAAA,EACL,MAAM,kBAAkB,IAAI;AAAA,EAC5B,SAAS,qBAAqB,OAAO;AAAA,EACrC,SAAS,CACP,KACA,mBAEA;AAAA,IACE;AAAA,IACA,uBAAO,OAAO,IAAI;AAAA,IAClB,uBAAO;AAAA,IACP,uBAAO;AAAA,MAAQ,CAAC,gBACd,QAAQ,WAAW,EAAE;AAAA,QACnB,uBAAO;AAAA,UACL,iBAAmC;AAAA,UACnC,qBAAqB,GAAG;AAAA,QAC1B;AAAA,MACF;AAAA,IACF;AAAA,IACA,uBAAO;AAAA,MAAQ,CAAC,kBACd,uBAAO,cAAc,OAAO,EAAE,aAAa;AAAA,IAC7C;AAAA,IACA,uBAAO;AAAA,EACT;AACJ;;;AC3VA,sBAOO;AACP,IAAAC,iBAOO;AACP,IAAAC,kBAA2C;AAgB3C,IAAM,cACJ,CAAmD;AAAA,EACjD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAMA,CACE,KACA,YACsB;AACtB,QAAM,uBAAuB,sBAAM;AAAA,IACjC,iBAAsB;AAAA,IACtB,qBAAqB,GAAG;AAAA,EAC1B;AAEA,QAAM,UAAU,QAAQ,KAAK,sBAAM,QAAQ,oBAAoB,CAAC;AAEhE,QAAM,cAAc,8BAAc,MAAM;AAAA,IACtC,MAAM,GAAG,UAAU;AAAA,IACnB,QAAQ;AAAA,MACN,eAAe;AAAA,MAEb,QAAQ,IAAI,iBAAiB,CAC/B,GAAG,UAAU;AAAA,MACb,GAAG;AAAA,IACL;AAAA,EACF,CAAC,EAAE,KAAK,sBAAM,QAAQ,OAAO,CAAC;AAE9B,QAAM,UAAU,sBAAM;AAAA,IACpB;AAAA,IACA;AAAA,IACA,2BAAW;AAAA,EACb;AAEA,QAAM,EAAE,QAAQ,IAAI,+BAAe,aAAa,SAAS,EAAE,WAAW,CAAC;AAEvE,SAAO,QAAQ,OAAO;AACxB;AAEF,IAAM,iBAAiB,CAAC;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,UAME,kCAAkB,YAAY,EAAE,YAAY,SAAS,YAAY,OAAO,CAAC,CAAC;AAU5E,IAAM,qBACJ,CAAC;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAMA,CAAC,qBAA6C;AAC5C,QAAM,UAAU,eAAe,EAAE,YAAY,SAAS,YAAY,OAAO,CAAC;AAE1E,wBAAM,QAAQ,sCAAuB,CAAC,WAAW;AAC/C,UAAM,YAAqC;AAAA,MACzC;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA,qBAAiB,MAAM,SAAS;AAAA,EAClC,CAAC;AAED,SAAO;AACT;AAIF,IAAM,iBAAiB,CAAC,aAAmC;AACzD,qBAAmB;AAEnB,aAAO;AAAA,IACL;AAAA,IACA,uBAAO;AAAA,IACP,sBAAM;AAAA,UACJ,2BAAW;AAAA,MACX,CAAC,kBAAkB,CAAC,YAAY,EAAE,SAAS,WAAW,CAAC,MACrD,mBAAmB;AAAA,QACjB;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EAAE,gBAAgB;AAAA,IACvB;AAAA,EACF;AACF;AAEA,IAAM,qBAAqB,MAAM;AAI/B,QAAM,cAAc,IAAI;AAAA,IACtB,IAAa,WAAW;AACtB,aAAO;AAAA,IACT;AAAA,IACA,IAAa,WAAW;AACtB,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO,eAAe,QAAQ,WAAW,UAAU;AAAA,IACjD,KAAK,MAAM,IAAI,YAAY;AAAA,EAC7B,CAAC;AACH;;;ACjKA;AAAA;AAAA;AAAA;AAAA,IAAAC,kBAAuB;AAEhB,IAAM,mBAAmB,CAC9B,QAEA,uBAAO,OAAO;AAAA,EACZ,MAAM,uBAAO,MAAM,GAAG,EAAE,KAAK,uBAAO,OAAO;AAAA,EAC3C,QAAQ,uBAAO;AAAA,EACf,gBAAgB,uBAAO;AAAA,EACvB,aAAa,uBAAO,SAAS,uBAAO,MAAM,uBAAO,QAAQ,uBAAO,IAAI,CAAC;AAAA,EACrE,YAAY,uBAAO;AAAA,IACjB,uBAAO;AAAA,MACL,uBAAO,QAAQ,kBAAkB;AAAA,MACjC,uBAAO,QAAQ,eAAe;AAAA,MAC9B,uBAAO;AAAA,IACT;AAAA,EACF;AACF,CAAC,EAAE,KAAK,uBAAO,OAAO;","names":["import_effect","import_effect","import_effect","import_effect","import_effect","tableName","tableName","import_effect","tableName","tableName","defineConvexSchema","defineConvexTable","tableName","value","import_effect","import_effect","tableName","import_server","import_effect","import_server","import_effect","import_effect"]}