{"version":3,"file":"store.mjs","sources":["../../src/store/constants.ts","../../src/store/queries.ts","../../src/store/TSDocStore.ts","../../src/store/TSDocMemoryStore.ts"],"sourcesContent":["/** @internal */\nexport const API_MEMBER_TYPES = [\n  'api.class',\n  'api.enum',\n  'api.function',\n  'api.interface',\n  'api.namespace',\n  'api.typeAlias',\n  'api.variable',\n]\n","/** @internal */\nexport const API_EXPORTS_QUERY = /* groq */ `\n*[\n  _type == 'api.export'\n  && package->scope == $packageScope\n  && package->name == $packageName\n  && release->version == $releaseVersion\n]{\n  name,\n  path,\n  package->{name,scope},\n  release->{version},\n  'isLatest': release->_id == package->latestRelease._ref,\n  'members': *[_type in $memberTypes && references(^._id) && !(\"@hidden\" in coalesce(comment.customBlocks[].tag, [])) && !coalesce(isOverloading, false)] | order(name asc) {\n    '_key': _id,\n    _type,\n    comment{deprecated},\n    export->{name,path},\n    members[]{\n      _key,\n      _type,\n      export->{name,path},\n      name,\n      package->{name,scope},\n      release->{version},\n      releaseTag,\n      isReactComponentType,\n      slug,\n    },\n    name,\n    slug,\n    package->{name,scope},\n    release->{version},\n    releaseTag,\n    isReactComponentType,\n    isReactHook,\n    isOverloading,\n  }\n} | order(name)\n`\n\n/** @internal */\nconst API_TOKEN_MEMBER_PROJECTION = /* groq */ `\n...,\nexport->{name, path},\npackage->{name, scope},\nrelease->{version}\n`\n\n/** @internal */\nconst API_CLASS_PROJECTION = /* groq */ `\n_id,\n_type,\n_updatedAt,\ncomment,\nexport->{name,path},\nmembers[]{\n  _type == 'api.constructor' => {\n    _key,\n    _type,\n    comment,\n    parameters[]{\n      _key,\n      _type,\n      name,\n      releaseTag,\n      type[]{\n        ...,\n        member->{${API_TOKEN_MEMBER_PROJECTION}}\n      }\n    },\n    releaseTag\n  },\n  _type == 'api.method' => {\n    _key,\n    _type,\n    comment,\n    name,\n    isOptional,\n    isStatic,\n    parameters[]{\n      _key,\n      _type,\n      name,\n      releaseTag,\n      type[]{\n        ...,\n        member->{${API_TOKEN_MEMBER_PROJECTION}}\n      }\n    },\n    releaseTag,\n    returnType[]{\n      ...,\n      member->{${API_TOKEN_MEMBER_PROJECTION}}\n    },\n    typeParameters\n  },\n  _type == 'api.property' => {\n    _key,\n    _type,\n    comment,\n    name,\n    isEventProperty,\n    isOptional,\n    isStatic,\n    releaseTag,\n    type[]{\n      ...,\n      member->{${API_TOKEN_MEMBER_PROJECTION}}\n    }\n  }\n},\nname,\npackage->{scope,name},\nrelease->{version},\nreleaseTag,\ntypeParameters\n`\n\n// TODO\nconst API_ENUM_PROJECTION = /* groq */ `\n...,\nexport->{name,path},\npackage->{scope,name},\nrelease->{version}\n`\n\n/** @internal */\nconst API_INTERFACE_PROJECTION = /* groq */ `\n_id,\n_type,\n_updatedAt,\ncomment,\nexport->{name,path},\nextends,\nmembers[]{\n  _type == 'api.callSignature' => {\n    _key,\n    _type,\n    comment,\n    parameters[]{\n      _key,\n      _type,\n      name,\n      releaseTag,\n      type[]{\n        ...,\n        member->{${API_TOKEN_MEMBER_PROJECTION}}\n      }\n    },\n    releaseTag,\n    returnType[]{\n      ...,\n      member->{${API_TOKEN_MEMBER_PROJECTION}}\n    },\n    typeParameters\n  },\n\n  _type == 'api.methodSignature' => {\n    _key,\n    _type,\n    comment,\n    isOptional,\n    name,\n    parameters[]{\n      _key,\n      _type,\n      name,\n      releaseTag,\n      type[]{\n        ...,\n        member->{${API_TOKEN_MEMBER_PROJECTION}}\n      }\n    },\n    releaseTag,\n    returnType[]{\n      ...,\n      member->{${API_TOKEN_MEMBER_PROJECTION}}\n    },\n    typeParameters\n  },\n\n  _type == 'api.indexSignature' => {\n    _key,\n    _type,\n    comment,\n    releaseTag,\n    parameters[]{\n      _key,\n      _type,\n      name,\n      releaseTag,\n      type[]{\n        ...,\n        member->{${API_TOKEN_MEMBER_PROJECTION}}\n      }\n    },\n    returnType[]{\n      ...,\n      member->{${API_TOKEN_MEMBER_PROJECTION}}\n    }\n  },\n\n  _type == 'api.propertySignature' => {\n    _key,\n    _type,\n    comment,\n    isOptional,\n    name,\n    releaseTag,\n    comment,\n    type[]{\n      ...,\n      member->{${API_TOKEN_MEMBER_PROJECTION}}\n    }\n  }\n},\nname,\npackage->{scope,name},\n'referrers': *[references(^._id)] {\n  _type,\n  name,\n  export->{path},\n  package->{scope,name},\n  release->{version}\n},\nrelease->{version},\nreleaseTag,\nslug,\ntypeParameters\n`\n\n/** @internal */\nconst API_FUNCTION_PROJECTION = /* groq */ `\n_id,\n_type,\n_updatedAt,\ncomment,\nexport->{name,path},\nisReactComponentType,\nname,\npackage->{scope,name},\nparameters[]{\n  _key,\n  _type,\n  name,\n  releaseTag,\n  comment,\n  type[]{\n    ...,\n    member->{${API_TOKEN_MEMBER_PROJECTION}}\n  }\n},\npropsType->{\n  _type == 'api.interface' => {\n    ${API_INTERFACE_PROJECTION}\n  }\n},\n'referrers': *[references(^._id)] {\n  _type,\n  name,\n  export->{path},\n  package->{scope,name},\n  release->{version}\n},\nrelease->{version},\nreleaseTag,\nreturnType[]{\n  ...,\n  member->{${API_TOKEN_MEMBER_PROJECTION}}\n},\ntypeParameters\n`\n\n/** @internal */\nconst API_NAMESPACE_PROJECTION = /* groq */ `\n_id,\n_type,\n_updatedAt,\ncomment,\nexport->{name,path},\nmembers[]{\n  ...\n},\nname,\npackage->{scope,name},\nrelease->{version},\nreleaseTag\n`\n\n/** @internal */\nconst API_TYPE_ALIAS_PROJECTION = /* groq */ `\n_id,\n_type,\n_updatedAt,\ncomment,\nexport->{name,path},\nname,\npackage->{scope,name},\nrelease->{version},\nreleaseTag,\ntype[]{\n  ...,\n  member->{${API_TOKEN_MEMBER_PROJECTION}}\n},\ntypeParameters\n`\n\n/** @internal */\nconst API_VARIABLE_PROJECTION = /* groq */ `\n_id,\n_type,\ncomment,\nexport->{name,path},\nisReactComponentType,\nname,\nparameters[]{\n  _key,\n  _type,\n  name,\n  releaseTag,\n  comment,\n  type[]{\n    ...,\n    member->{${API_TOKEN_MEMBER_PROJECTION}}\n  }\n},\npackage->{scope,name},\npropsType->,\nrelease->{version},\nreleaseTag,\n'referrers': *[references(^._id)] {\n  _type,\n  name,\n  export->{path},\n  package->{scope,name},\n  release->{version}\n},\ntype[]{\n  ...,\n  member->{${API_TOKEN_MEMBER_PROJECTION}}\n}\n`\n\n/** @internal */\nexport const API_MEMBER_PROJECTION = /* groq */ `\n_type == 'api.class' => {\n  ${API_CLASS_PROJECTION}\n},\n\n_type == 'api.enum' => {\n  ${API_ENUM_PROJECTION}\n},\n\n_type == 'api.function' => {\n  ${API_FUNCTION_PROJECTION}\n},\n\n_type == 'api.interface' => {\n  ${API_INTERFACE_PROJECTION}\n},\n\n_type == 'api.namespace' => {\n  ${API_NAMESPACE_PROJECTION}\n},\n\n_type == 'api.typeAlias' => {\n  ${API_TYPE_ALIAS_PROJECTION}\n},\n\n_type == 'api.variable' => {\n  ${API_VARIABLE_PROJECTION}\n}\n`\n\n/** @internal */\nexport const API_MEMBER_QUERY = /* groq */ `\n*[\n  _type in $memberTypes\n  && export->path == $exportPath\n  && package->scope == $packageScope\n  && package->name == $packageName\n  && release->version == $releaseVersion\n  && slug.current == $memberSlug\n  && !(\"@hidden\" in coalesce(comment.customBlocks[].tag, []))\n]{\n  ${API_MEMBER_PROJECTION},\n  \"members\": members[!(\"@hidden\" in coalesce(comment.customBlocks[].tag, []))],\n  'versions': *[\n    _type == 'api.release'\n    && package->scope == $packageScope\n    && package->name == $packageName\n  ]{version}.version\n}\n`\n\n/** @internal */\n\nconst NON_HIDDEN_MEMBER_TYPES_ARRAY = /* groq */ `*[\n  _type in $memberTypes\n  && name == ^.name\n  && package->scope == $packageScope\n  && package->name == $packageName\n  && !(\"@hidden\" in coalesce(comment.customBlocks[].tag, []))\n]`\n\n/** @internal */\nexport const API_SYMBOL_SEARCH_QUERY = /* groq */ `\n*[\n  _type == 'api.symbol'\n  && name match $query\n  && package->scope == $packageScope\n  && package->name == $packageName\n  && count(${NON_HIDDEN_MEMBER_TYPES_ARRAY}) > 0\n]{\n  _id,\n  _type,\n  name,\n  package->{name,scope}\n}[0...10]{\n  ...,\n  'members': ${NON_HIDDEN_MEMBER_TYPES_ARRAY}{\n    slug,\n    'exportPath': export->path,\n    'releaseVersion': release->version\n  }\n} | order(lower(name) asc)\n`\n\n/** @internal */\nexport const API_PACKAGES_QUERY = /* groq */ `\n*[_type == 'api.package']{\n  _id,\n  name,\n  scope,\n  latestRelease->{version},\n  releases[]->{version}\n}\n`\n\n/** @internal */\nexport const API_PACKAGE_QUERY = /* groq */ `\n*[\n  _type == 'api.package'\n  && scope == $packageScope\n  && name == $packageName\n][0]\n`\n\n/** @internal */\nexport const API_SYMBOL_QUERY = /* groq */ `\n*[\n  _type == 'api.symbol'\n  && package->scope == $packageScope\n  && package->name == $packageName\n]{\n  _type,\n  name,\n  package->{name,scope},\n  'members': *[\n    _type in $memberTypes\n  ]{${API_MEMBER_PROJECTION}}\n}[0]\n`\n","/* eslint-disable no-console */\nimport {APIPackage} from '@sanity/tsdoc'\n\nimport {API_MEMBER_TYPES} from './constants'\nimport {\n  API_EXPORTS_QUERY,\n  API_MEMBER_QUERY,\n  API_PACKAGE_QUERY,\n  API_PACKAGES_QUERY,\n  API_SYMBOL_QUERY,\n  API_SYMBOL_SEARCH_QUERY,\n} from './queries'\nimport {\n  TSDocAPIMember,\n  TSDocAPISymbol,\n  TSDocAppParams,\n  TSDocExportData,\n  TSDocStore,\n  TSDocStoreCache,\n  TSDocSymbolSearchResult,\n} from './types'\n\n/** @beta */\nexport interface TSDocStoreOptions {\n  debug?: boolean\n  query: (q: string, params: Record<string, unknown>) => Promise<any>\n  initialState?: TSDocStoreCache\n}\n\n/**\n * A function for creating a TSDocStore instance.\n *\n * @beta\n *\n * @example\n * ```tsx\n * const tsdocStore = createTSDocStore({\n *  debug: true,\n *  query: async (q, params) => tsDocClient.fetch(q, params),\n *  initialState: {\n *    exports: {},\n *    member: {},\n *    package: {},\n *    packages: [],\n *    symbol: {},\n *  },\n * });\n * ```\n *\n * @example\n * ```tsx\n *  const tsdocStore = createTSDocStore({\n *    debug: true,\n *    query: async (q, params) => tsDocClient.fetch(q, params),\n * });\n * ```\n */\nexport function createTSDocStore(options: TSDocStoreOptions): TSDocStore {\n  const {debug, query, initialState} = options\n\n  const cache: TSDocStoreCache = initialState || {\n    exports: {},\n    member: {},\n    package: {},\n    packages: [],\n    symbol: {},\n  }\n\n  return {\n    exports: {\n      get: async (params: {\n        packageScope: string | null\n        packageName: string\n        releaseVersion: string\n      }): Promise<TSDocExportData[] | undefined> => {\n        if (debug) console.log('exports.get', params)\n\n        const key = JSON.stringify(params)\n\n        if (cache.exports[key]) {\n          if (debug) console.log('exports.get read from cache')\n\n          return cache.exports[key]\n        }\n\n        const result = await query(API_EXPORTS_QUERY, {\n          ...params,\n          memberTypes: API_MEMBER_TYPES,\n        })\n\n        cache.exports[key] = result\n\n        return result\n      },\n    },\n\n    member: {\n      get: async (params: TSDocAppParams): Promise<TSDocAPIMember[] | null | undefined> => {\n        if (debug) console.log('member.get', params)\n\n        const key = JSON.stringify(params)\n\n        if (cache.member[key]) {\n          if (debug) console.log('member.get read from cache')\n\n          return cache.member[key]\n        }\n\n        const result = await query(API_MEMBER_QUERY, {\n          ...params,\n          memberTypes: API_MEMBER_TYPES,\n        })\n\n        cache.member[key] = result\n\n        return result\n      },\n    },\n\n    package: {\n      get: async (params: TSDocAppParams): Promise<APIPackage | null | undefined> => {\n        if (debug) console.log('package.get', params)\n\n        const key = JSON.stringify(params)\n\n        if (cache.package[key]) {\n          if (debug) console.log('package.get read from cache')\n\n          return cache.package[key]\n        }\n\n        const result = await query(API_PACKAGE_QUERY, {\n          ...params,\n          memberTypes: API_MEMBER_TYPES,\n        })\n\n        cache.package[key] = result\n\n        return result\n      },\n    },\n\n    packages: {\n      get: async (): Promise<APIPackage[] | null | undefined> => {\n        if (debug) console.log('packages.get')\n\n        if (cache.packages.length) {\n          if (debug) console.log('packages.get read from cache')\n\n          return cache.packages\n        }\n\n        const result = await query(API_PACKAGES_QUERY, {})\n\n        cache.packages = result\n\n        return result\n      },\n    },\n\n    symbol: {\n      get: async (params: {\n        name: string\n        packageName: string\n        packageScope: string | null\n      }): Promise<TSDocAPISymbol | null | undefined> => {\n        if (debug) console.log('symbol.get', params)\n\n        const key = JSON.stringify(params)\n\n        if (cache.symbol[key]) {\n          if (debug) console.log('symbol.get read from cache')\n\n          return cache.symbol[key]\n        }\n\n        const result = await query(API_SYMBOL_QUERY, {\n          ...params,\n          memberTypes: API_MEMBER_TYPES,\n        })\n\n        cache.symbol[key] = result\n\n        return result\n      },\n      search: (params: {\n        query: string\n        packageName: string\n        packageScope: string | null\n      }): Promise<TSDocSymbolSearchResult[]> => {\n        if (debug) console.log('symbol.search', params)\n\n        return query(API_SYMBOL_SEARCH_QUERY, {\n          ...params,\n          memberTypes: API_MEMBER_TYPES,\n          query: `*${params.query}*`,\n        })\n      },\n    },\n  }\n}\n","/* eslint-disable no-console */\n\nimport {APIDocument} from '@sanity/tsdoc'\nimport {evaluate, parse} from 'groq-js'\n\nimport {createTSDocStore} from './TSDocStore'\nimport {TSDocStore} from './types'\n\nconst delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms))\n\nconst DEBUG = false\n\n/** @beta */\nexport function createTSDocMemoryStore({docs}: {docs: APIDocument[]}): TSDocStore {\n  const query = async (q: string, params: Record<string, unknown>) => {\n    await delay(0)\n\n    const tree = parse(q)\n\n    const queryId = String(Math.random())\n\n    if (DEBUG) console.time(`query:${queryId}`)\n\n    const value = await evaluate(tree, {\n      dataset: docs,\n      params,\n    })\n\n    if (DEBUG) console.timeEnd(`query:${queryId}`)\n\n    return await value.get()\n  }\n\n  return createTSDocStore({debug: DEBUG, query})\n}\n"],"names":["API_MEMBER_TYPES","API_EXPORTS_QUERY","API_TOKEN_MEMBER_PROJECTION","API_CLASS_PROJECTION","API_ENUM_PROJECTION","API_INTERFACE_PROJECTION","API_FUNCTION_PROJECTION","API_NAMESPACE_PROJECTION","API_TYPE_ALIAS_PROJECTION","API_VARIABLE_PROJECTION","API_MEMBER_PROJECTION","API_MEMBER_QUERY","NON_HIDDEN_MEMBER_TYPES_ARRAY","API_SYMBOL_SEARCH_QUERY","API_PACKAGES_QUERY","API_PACKAGE_QUERY","API_SYMBOL_QUERY","createTSDocStore","options","debug","query","initialState","cache","exports","member","package","packages","symbol","get","params","console","log","key","JSON","stringify","result","memberTypes","length","search","delay","ms","Promise","resolve","setTimeout","DEBUG","createTSDocMemoryStore","docs","q","tree","parse","evaluate","dataset"],"mappings":";AACO,MAAMA,mBAAmB,CAC9B,aACA,YACA,gBACA,iBACA,iBACA,iBACA,cAAc,GCPHC;AAAAA;AAAAA,EAA+B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAyCtCC;AAAAA;AAAAA,EAAyC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAQzCC;AAAAA;AAAAA,EAAkC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAkBrBD,2BAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAmB3BA,2BAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAM7BA,2BAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAe3BA,2BAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAYtCE;AAAAA;AAAAA,EAAiC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAQjCC;AAAAA;AAAAA,EAAsC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAmBzBH,2BAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAM7BA,2BAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAkBzBA,2BAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAM7BA,2BAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAiBzBA,2BAA2B;AAAA;AAAA;AAAA;AAAA;AAAA,iBAK7BA,2BAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAc3BA,2BAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAoBtCI;AAAAA;AAAAA,EAAqC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAiB5BJ,2BAA2B;AAAA;AAAA;AAAA;AAAA;AAAA,MAKpCG,wBAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAcjBH,2BAA2B;AAAA;AAAA;AAAA;AAAA,GAMlCK;AAAAA;AAAAA,EAAsC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAgBtCC;AAAAA;AAAAA,EAAuC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAYhCN,2BAA2B;AAAA;AAAA;AAAA;AAAA,GAMlCO;AAAAA;AAAAA,EAAqC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAe5BP,2BAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAgB7BA,2BAA2B;AAAA;AAAA;AAAA,GAK3BQ;AAAAA;AAAAA,EAAmC;AAAA;AAAA,IAE5CP,oBAAoB;AAAA;AAAA;AAAA;AAAA,IAIpBC,mBAAmB;AAAA;AAAA;AAAA;AAAA,IAInBE,uBAAuB;AAAA;AAAA;AAAA;AAAA,IAIvBD,wBAAwB;AAAA;AAAA;AAAA;AAAA,IAIxBE,wBAAwB;AAAA;AAAA;AAAA;AAAA,IAIxBC,yBAAyB;AAAA;AAAA;AAAA;AAAA,IAIzBC,uBAAuB;AAAA;AAAA;AAAA,GAKdE;AAAAA;AAAAA,EAA8B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUvCD,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAYnBE;AAAAA;AAAAA,EAA2C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASpCC;AAAAA;AAAAA,EAAqC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAMrCD,6BAA6B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAQ3BA,6BAA6B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAS/BE;AAAAA;AAAAA,EAAgC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAWhCC;AAAAA;AAAAA,EAA+B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAS/BC;AAAAA;AAAAA,EAA8B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWrCN,qBAAqB;AAAA;AAAA;AAAA;ACpZpB,SAASO,iBAAiBC,SAAwC;AACvE,QAAM;AAAA,IAACC;AAAAA,IAAOC;AAAAA,IAAOC;AAAAA,EAAAA,IAAgBH,SAE/BI,QAAyBD,gBAAgB;AAAA,IAC7CE,SAAS,CAAA;AAAA,IACTC,QAAQ,CAAA;AAAA,IACRC,SAAS,CAAA;AAAA,IACTC,UAAU,CAAA;AAAA,IACVC,QAAQ,CAAA;AAAA,EAAC;AAGX,SAAO;AAAA,IACLJ,SAAS;AAAA,MACPK,KAAK,OAAOC,WAIkC;AACxCV,iBAAOW,QAAQC,IAAI,eAAeF,MAAM;AAE5C,cAAMG,MAAMC,KAAKC,UAAUL,MAAM;AAEjC,YAAIP,MAAMC,QAAQS,GAAG;AACnB,iBAAIb,SAAOW,QAAQC,IAAI,6BAA6B,GAE7CT,MAAMC,QAAQS,GAAG;AAG1B,cAAMG,SAAS,MAAMf,MAAMnB,mBAAmB;AAAA,UAC5C,GAAG4B;AAAAA,UACHO,aAAapC;AAAAA,QAAAA,CACd;AAEDsB,eAAAA,MAAMC,QAAQS,GAAG,IAAIG,QAEdA;AAAAA,MACT;AAAA,IAAA;AAAA,IAGFX,QAAQ;AAAA,MACNI,KAAK,OAAOC,WAAyE;AAC/EV,iBAAOW,QAAQC,IAAI,cAAcF,MAAM;AAE3C,cAAMG,MAAMC,KAAKC,UAAUL,MAAM;AAEjC,YAAIP,MAAME,OAAOQ,GAAG;AAClB,iBAAIb,SAAOW,QAAQC,IAAI,4BAA4B,GAE5CT,MAAME,OAAOQ,GAAG;AAGzB,cAAMG,SAAS,MAAMf,MAAMT,kBAAkB;AAAA,UAC3C,GAAGkB;AAAAA,UACHO,aAAapC;AAAAA,QAAAA,CACd;AAEDsB,eAAAA,MAAME,OAAOQ,GAAG,IAAIG,QAEbA;AAAAA,MACT;AAAA,IAAA;AAAA,IAGFV,SAAS;AAAA,MACPG,KAAK,OAAOC,WAAmE;AACzEV,iBAAOW,QAAQC,IAAI,eAAeF,MAAM;AAE5C,cAAMG,MAAMC,KAAKC,UAAUL,MAAM;AAEjC,YAAIP,MAAMG,QAAQO,GAAG;AACnB,iBAAIb,SAAOW,QAAQC,IAAI,6BAA6B,GAE7CT,MAAMG,QAAQO,GAAG;AAG1B,cAAMG,SAAS,MAAMf,MAAML,mBAAmB;AAAA,UAC5C,GAAGc;AAAAA,UACHO,aAAapC;AAAAA,QAAAA,CACd;AAEDsB,eAAAA,MAAMG,QAAQO,GAAG,IAAIG,QAEdA;AAAAA,MACT;AAAA,IAAA;AAAA,IAGFT,UAAU;AAAA,MACRE,KAAK,YAAsD;AAGzD,YAFIT,SAAOW,QAAQC,IAAI,cAAc,GAEjCT,MAAMI,SAASW;AACjB,iBAAIlB,SAAOW,QAAQC,IAAI,8BAA8B,GAE9CT,MAAMI;AAGf,cAAMS,SAAS,MAAMf,MAAMN,oBAAoB,CAAA,CAAE;AAEjDQ,eAAAA,MAAMI,WAAWS,QAEVA;AAAAA,MACT;AAAA,IAAA;AAAA,IAGFR,QAAQ;AAAA,MACNC,KAAK,OAAOC,WAIsC;AAC5CV,iBAAOW,QAAQC,IAAI,cAAcF,MAAM;AAE3C,cAAMG,MAAMC,KAAKC,UAAUL,MAAM;AAEjC,YAAIP,MAAMK,OAAOK,GAAG;AAClB,iBAAIb,SAAOW,QAAQC,IAAI,4BAA4B,GAE5CT,MAAMK,OAAOK,GAAG;AAGzB,cAAMG,SAAS,MAAMf,MAAMJ,kBAAkB;AAAA,UAC3C,GAAGa;AAAAA,UACHO,aAAapC;AAAAA,QAAAA,CACd;AAEDsB,eAAAA,MAAMK,OAAOK,GAAG,IAAIG,QAEbA;AAAAA,MACT;AAAA,MACAG,QAAST,aAKHV,SAAOW,QAAQC,IAAI,iBAAiBF,MAAM,GAEvCT,MAAMP,yBAAyB;AAAA,QACpC,GAAGgB;AAAAA,QACHO,aAAapC;AAAAA,QACboB,OAAO,IAAIS,OAAOT,KAAK;AAAA,MAAA,CACxB;AAAA,IAAA;AAAA,EAEL;AAEJ;AChMA,MAAMmB,QAASC,CAAAA,OAAe,IAAIC,QAASC,CAAAA,YAAYC,WAAWD,SAASF,EAAE,CAAC,GAExEI,QAAQ;AAGP,SAASC,uBAAuB;AAAA,EAACC;AAA2B,GAAe;AAoBhF,SAAO7B,iBAAiB;AAAA,IAACE,OAAOyB;AAAAA,IAAOxB,OAnBzB,OAAO2B,GAAWlB,WAAoC;AAClE,YAAMU,MAAM,CAAC;AAEb,YAAMS,OAAOC,MAAMF,CAAC;AAWpB,aAEO,OAPO,MAAMG,SAASF,MAAM;AAAA,QACjCG,SAASL;AAAAA,QACTjB;AAAAA,MAAAA,CACD,GAIkBD,IAAAA;AAAAA,IACrB;AAAA,EAAA,CAE6C;AAC/C;"}