{
  "version": 3,
  "sources": ["../../../../../src/packages/plugin-commands-rebuild/implementation/index.ts"],
  "sourcesContent": ["import assert from 'node:assert';\nimport path from 'node:path';\nimport util from 'node:util';\nimport {\n  getIndexFilePathInCafs,\n  type PackageFilesIndex,\n} from '../../store.cafs/index.ts';\nimport {\n  calcDepState,\n  lockfileToDepGraph,\n  type DepsStateCache,\n} from '../../calc-dep-state/index.ts';\nimport { LAYOUT_VERSION, WANTED_LOCKFILE } from '../../constants/index.ts';\nimport { skippedOptionalDependencyLogger } from '../../core-loggers/index.ts';\nimport { PnpmError } from '../../error/index.ts';\nimport {\n  getContext,\n  type HookOptions,\n  type PnpmContext,\n  type ProjectOptions,\n} from '../../get-context/index.ts';\nimport {\n  runLifecycleHooksConcurrently,\n  runPostinstallHooks,\n  type RunLifecycleHooksConcurrentlyOptions,\n} from '../../lifecycle/index.ts';\nimport { linkBins } from '../../link-bins/index.ts';\nimport {\n  nameVerFromPkgSnapshot,\n  packageIsIndependent,\n} from '../../lockfile.utils/index.ts';\nimport {\n  lockfileWalker,\n  type LockfileWalkerStep,\n} from '../../lockfile.walker/index.ts';\nimport { logger, streamParser } from '../../logger/index.ts';\nimport { writeModulesManifest } from '../../modules-yaml/index.ts';\nimport { createOrConnectStoreController } from '../../store-connection-manager/index.ts';\nimport type {\n  DepPath,\n  GlobalPkgDir,\n  LockFileDir,\n  ModulesDir,\n  ProjectId,\n  ProjectRootDir,\n  ProjectRootDirRealPath,\n  WorkspaceDir,\n} from '../../types/index.ts';\nimport { createAllowBuildFunction } from '@pnpm/builder.policy';\nimport * as dp from '../../dependency-path/index.ts';\nimport { hardLinkDir } from '../../worker/index.ts';\nimport { loadJsonFile } from 'load-json-file';\nimport runGroups from 'run-groups';\nimport {\n  graphSequencer,\n  type Graph,\n} from '../../deps.graph-sequencer/index.ts';\n\nimport { npa } from '../../npm-package-arg/index.ts';\nimport pLimit from 'p-limit';\nimport semver from 'semver';\nimport {\n  extendRebuildOptions,\n  type RebuildOptions,\n  type StrictRebuildOptions,\n} from './extendRebuildOptions.ts';\nimport type {\n  PackageSnapshots,\n  LockfileObject,\n} from 'src/packages/lockfile.types/index.ts';\n\nexport type { RebuildOptions };\n\nfunction findPackages(\n  packages: PackageSnapshots,\n  searched: PackageSelector[],\n  opts: {\n    prefix: string;\n  }\n): DepPath[] {\n  return (Object.keys(packages) as DepPath[]).filter((relativeDepPath) => {\n    const pkgLockfile = packages[relativeDepPath];\n\n    if (typeof pkgLockfile === 'undefined') {\n      return false;\n    }\n\n    const pkgInfo = nameVerFromPkgSnapshot(relativeDepPath, pkgLockfile);\n\n    if (!pkgInfo.name) {\n      logger.warn({\n        message: `Skipping ${relativeDepPath} because cannot get the package name from ${WANTED_LOCKFILE}.\n            Try to run run \\`pnpm update --depth 100\\` to create a new ${WANTED_LOCKFILE} with all the necessary info.`,\n        prefix: opts.prefix,\n      });\n\n      return false;\n    }\n\n    return matches(searched, pkgInfo);\n  });\n}\n\n// TODO: move this logic to separate package as this is also used in dependencies-hierarchy\nfunction matches(\n  searched: PackageSelector[],\n  manifest: { name: string; version?: string | undefined }\n): boolean {\n  return searched.some((searchedPkg: PackageSelector): boolean => {\n    if (typeof searchedPkg === 'string') {\n      return manifest.name === searchedPkg;\n    }\n\n    return (\n      searchedPkg.name === manifest.name &&\n      typeof manifest.version !== 'undefined' &&\n      semver.satisfies(manifest.version, searchedPkg.range)\n    );\n  });\n}\n\ntype PackageSelector =\n  | string\n  | {\n      name: string;\n      range: string;\n    };\n\nexport async function rebuildSelectedPkgs<IP>(\n  projects: Array<ProjectOptions & HookOptions & { binsDir: string }>,\n  pkgSpecs: string[],\n  maybeOpts: RebuildOptions<IP>\n): Promise<void> {\n  const reporter = maybeOpts.reporter;\n\n  if (reporter != null && typeof reporter === 'function') {\n    streamParser.on('data', reporter);\n  }\n\n  const opts = await extendRebuildOptions(maybeOpts);\n\n  const ctx = await getContext({ ...opts, allProjects: projects });\n\n  if (ctx.currentLockfile.packages == null) {\n    return;\n  }\n\n  const packages = ctx.currentLockfile.packages;\n\n  const searched: PackageSelector[] = pkgSpecs\n    .map(\n      (\n        arg: string\n      ):\n        | string\n        | { name: string | undefined; range: string | undefined }\n        | undefined => {\n        const { fetchSpec, name, raw, type } = npa(arg);\n\n        if (raw === name) {\n          return name;\n        }\n\n        if (type !== 'version' && type !== 'range') {\n          throw new Error(\n            `Invalid argument - ${arg}. Rebuild can only select by version or range`\n          );\n        }\n\n        return {\n          name,\n          range: fetchSpec,\n        };\n      }\n    )\n    .filter(Boolean);\n\n  let pkgs = [] as string[];\n\n  for (const { rootDir } of projects) {\n    pkgs = [...pkgs, ...findPackages(packages, searched, { prefix: rootDir })];\n  }\n\n  const { ignoredPkgs } = await _rebuild(\n    {\n      ...ctx,\n      pkgsToRebuild: new Set(pkgs),\n    },\n    opts\n  );\n\n  await writeModulesManifest(ctx.rootModulesDir, {\n    prunedAt: new Date().toUTCString(),\n    ...ctx.modulesFile,\n    hoistedDependencies: ctx.hoistedDependencies,\n    hoistPattern: ctx.hoistPattern,\n    included: ctx.include,\n    ignoredBuilds: ignoredPkgs,\n    layoutVersion: LAYOUT_VERSION,\n    packageManager: `${opts.packageManager.name}@${opts.packageManager.version}`,\n    pendingBuilds: ctx.pendingBuilds,\n    publicHoistPattern: ctx.publicHoistPattern,\n    registries: ctx.registries,\n    skipped: Array.from(ctx.skipped),\n    storeDir: ctx.storeDir,\n    virtualStoreDir: ctx.virtualStoreDir,\n    virtualStoreDirMaxLength: ctx.virtualStoreDirMaxLength,\n  });\n}\n\nexport async function rebuildProjects<IP>(\n  projects: Array<ProjectOptions & HookOptions & { binsDir: string }>,\n  maybeOpts: RebuildOptions<IP>\n): Promise<void> {\n  const reporter = maybeOpts.reporter;\n\n  if (typeof reporter === 'function') {\n    streamParser.on('data', reporter);\n  }\n\n  const opts = await extendRebuildOptions(maybeOpts);\n\n  const ctx = await getContext({ ...opts, allProjects: projects });\n\n  let idsToRebuild: string[] = [];\n\n  if (opts.pending === true) {\n    idsToRebuild = ctx.pendingBuilds;\n  } else if (ctx.currentLockfile.packages != null) {\n    idsToRebuild = Object.keys(ctx.currentLockfile.packages);\n  }\n\n  const { pkgsThatWereRebuilt, ignoredPkgs } = await _rebuild(\n    {\n      pkgsToRebuild: new Set(idsToRebuild),\n      ...ctx,\n    },\n    opts\n  );\n\n  ctx.pendingBuilds = ctx.pendingBuilds.filter((depPath: string): boolean => {\n    return !pkgsThatWereRebuilt.has(depPath);\n  });\n\n  const store = await createOrConnectStoreController(opts);\n\n  const scriptsOpts: RunLifecycleHooksConcurrentlyOptions = {\n    extraBinPaths: ctx.extraBinPaths,\n    extraNodePaths: ctx.extraNodePaths,\n    extraEnv: opts.extraEnv,\n    preferSymlinkedExecutables: opts.preferSymlinkedExecutables,\n    rawConfig: opts.rawConfig,\n    scriptsPrependNodePath: opts.scriptsPrependNodePath,\n    scriptShell: opts.scriptShell,\n    shellEmulator: opts.shellEmulator,\n    storeController: store.ctrl,\n    unsafePerm: opts.unsafePerm ?? false,\n  };\n\n  await runLifecycleHooksConcurrently(\n    ['preinstall', 'install', 'postinstall', 'prepublish', 'prepare'],\n    Object.values(ctx.projects),\n    opts.childConcurrency || 5,\n    scriptsOpts\n  );\n\n  for (const { id, manifest } of Object.values(ctx.projects)) {\n    if (\n      typeof manifest?.scripts !== 'undefined' &&\n      (opts.pending !== true || ctx.pendingBuilds.includes(id))\n    ) {\n      ctx.pendingBuilds.splice(ctx.pendingBuilds.indexOf(id), 1);\n    }\n  }\n\n  await writeModulesManifest(ctx.rootModulesDir, {\n    prunedAt: new Date().toUTCString(),\n    ...ctx.modulesFile,\n    hoistedDependencies: ctx.hoistedDependencies,\n    hoistPattern: ctx.hoistPattern,\n    included: ctx.include,\n    ignoredBuilds: ignoredPkgs,\n    layoutVersion: LAYOUT_VERSION,\n    packageManager: `${opts.packageManager.name}@${opts.packageManager.version}`,\n    pendingBuilds: ctx.pendingBuilds,\n    publicHoistPattern: ctx.publicHoistPattern,\n    registries: ctx.registries,\n    skipped: Array.from(ctx.skipped),\n    storeDir: ctx.storeDir,\n    virtualStoreDir: ctx.virtualStoreDir,\n    virtualStoreDirMaxLength: ctx.virtualStoreDirMaxLength,\n  });\n}\n\nfunction getSubgraphToBuild(\n  step: LockfileWalkerStep,\n  nodesToBuildAndTransitive: Set<DepPath>,\n  opts: {\n    pkgsToRebuild: Set<string>;\n  }\n): boolean {\n  let currentShouldBeBuilt = false;\n\n  for (const { depPath, next } of step.dependencies) {\n    if (nodesToBuildAndTransitive.has(depPath)) {\n      currentShouldBeBuilt = true;\n    }\n\n    const childShouldBeBuilt =\n      getSubgraphToBuild(next(), nodesToBuildAndTransitive, opts) ||\n      opts.pkgsToRebuild.has(depPath);\n\n    if (childShouldBeBuilt) {\n      nodesToBuildAndTransitive.add(depPath);\n      currentShouldBeBuilt = true;\n    }\n  }\n  for (const depPath of step.missing) {\n    // It might make sense to fail if the depPath is not in the skipped list from .modules.yaml\n    // However, the skipped list currently contains package IDs, not dep paths.\n    logger.debug({\n      message: `No entry for \"${depPath}\" in ${WANTED_LOCKFILE}`,\n    });\n  }\n  return currentShouldBeBuilt;\n}\n\nconst limitLinking = pLimit(16);\n\nasync function _rebuild<IP>(\n  ctx: {\n    pkgsToRebuild: Set<string>;\n    skipped: Set<string>;\n    virtualStoreDir: string;\n    rootModulesDir: string;\n    currentLockfile: LockfileObject;\n    projects: Record<\n      string,\n      {\n        id: ProjectId;\n        rootDir:\n          | WorkspaceDir\n          | ProjectRootDir\n          | ProjectRootDirRealPath\n          | GlobalPkgDir\n          | LockFileDir;\n      }\n    >;\n    extraBinPaths: string[];\n    extraNodePaths: string[];\n  } & Pick<PnpmContext, 'modulesFile'>,\n  opts: StrictRebuildOptions<IP>\n): Promise<{ pkgsThatWereRebuilt: Set<string>; ignoredPkgs: string[] }> {\n  const depGraph = lockfileToDepGraph(ctx.currentLockfile);\n\n  const depsStateCache: DepsStateCache = {};\n\n  const pkgsThatWereRebuilt = new Set<string>();\n\n  const graph: Graph<unknown> = new Map<DepPath, unknown[]>();\n\n  const pkgSnapshots: PackageSnapshots = ctx.currentLockfile.packages ?? {};\n\n  const nodesToBuildAndTransitive = new Set<DepPath>();\n\n  getSubgraphToBuild(\n    lockfileWalker(\n      ctx.currentLockfile,\n      Object.values(ctx.projects).map(({ id }) => id),\n      {\n        include: {\n          dependencies: opts.production,\n          devDependencies: opts.development,\n          optionalDependencies: opts.optional,\n        },\n      }\n    ).step,\n    nodesToBuildAndTransitive,\n    { pkgsToRebuild: ctx.pkgsToRebuild }\n  );\n\n  const nodesToBuildAndTransitiveArray = Array.from(nodesToBuildAndTransitive);\n\n  for (const depPath of nodesToBuildAndTransitiveArray) {\n    const pkgSnapshot = pkgSnapshots[depPath];\n\n    graph.set(\n      depPath,\n      Object.entries({\n        ...pkgSnapshot?.dependencies,\n        ...pkgSnapshot?.optionalDependencies,\n      })\n        .map(([pkgName, reference]) => dp.refToRelative(reference, pkgName))\n        .filter(Boolean)\n        .filter((childRelDepPath): boolean => {\n          return nodesToBuildAndTransitive.has(childRelDepPath);\n        })\n    );\n  }\n\n  const graphSequencerResult = graphSequencer(\n    graph,\n    nodesToBuildAndTransitiveArray\n  );\n\n  const chunks = graphSequencerResult.chunks as DepPath[][];\n\n  function warn(message: string): void {\n    logger.info({ message, prefix: opts.dir });\n  }\n\n  const ignoredPkgs: string[] = [];\n\n  // TODO: @pnpm/builder.policy\n  // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n  // @ts-ignore\n  // Argument of type 'StrictRebuildOptions<T>' is not assignable to parameter of type '{ neverBuiltDependencies?: string[]; onlyBuiltDependencies?: string[]; onlyBuiltDependenciesFile?: string; }' with 'exactOptionalPropertyTypes: true'. Consider adding 'undefined' to the types of the target's properties.\n  // Types of property 'neverBuiltDependencies' are incompatible.\n  // Type 'string[] | undefined' is not assignable to type 'string[]'.\n  // Type 'undefined' is not assignable to type 'string[]'.ts(2379)\n  const _allowBuild = createAllowBuildFunction(opts) ?? (() => true);\n\n  const allowBuild = (pkgName: string): boolean => {\n    if (_allowBuild(pkgName) === true) {\n      return true;\n    }\n    ignoredPkgs.push(pkgName);\n    return false;\n  };\n\n  const builtDepPaths = new Set<string>();\n\n  const groups = chunks.map((chunk) =>\n    chunk\n      .filter((depPath: DepPath): boolean => {\n        return ctx.pkgsToRebuild.has(depPath) && !ctx.skipped.has(depPath);\n      })\n      .map((depPath: DepPath) => async (): Promise<void> => {\n        const pkgSnapshot = pkgSnapshots[depPath];\n\n        if (typeof pkgSnapshot === 'undefined') {\n          return;\n        }\n\n        const pkgInfo = nameVerFromPkgSnapshot(depPath, pkgSnapshot);\n\n        const pkgRoots =\n          opts.nodeLinker === 'hoisted'\n            ? (ctx.modulesFile?.hoistedLocations?.[depPath] ?? []).map(\n                (hoistedLocation: string): string => {\n                  return path.join(opts.lockfileDir, hoistedLocation);\n                }\n              )\n            : [\n                path.join(\n                  ctx.virtualStoreDir,\n                  dp.depPathToFilename(depPath, opts.virtualStoreDirMaxLength),\n                  'node_modules',\n                  pkgInfo.name\n                ),\n              ];\n\n        if (pkgRoots.length === 0) {\n          if (pkgSnapshot.optional === true) {\n            return;\n          }\n\n          throw new PnpmError(\n            'MISSING_HOISTED_LOCATIONS',\n            `${depPath} is not found in hoistedLocations inside node_modules/.modules.yaml`,\n            {\n              hint: 'If you installed your node_modules with pnpm older than v7.19.0, you may need to remove it and run \"pnpm install\"',\n            }\n          );\n        }\n\n        const pkgRoot = pkgRoots[0];\n\n        if (typeof pkgRoot === 'undefined') {\n          return;\n        }\n\n        try {\n          const extraBinPaths = ctx.extraBinPaths;\n\n          if (opts.nodeLinker === 'hoisted') {\n            extraBinPaths.push(\n              ...binDirsInAllParentDirs(pkgRoot, opts.lockfileDir)\n            );\n          } else {\n            const modules = path.join(\n              ctx.virtualStoreDir,\n              dp.depPathToFilename(depPath, opts.virtualStoreDirMaxLength),\n              'node_modules'\n            ) as ModulesDir;\n\n            const binPath = path.join(pkgRoot, 'node_modules', '.bin');\n\n            await linkBins(modules, binPath, {\n              extraNodePaths: ctx.extraNodePaths,\n              warn,\n            });\n          }\n\n          const resolution = pkgSnapshot.resolution;\n\n          let sideEffectsCacheKey: string | undefined;\n\n          const pkgId = `${pkgInfo.name}@${pkgInfo.version}`;\n\n          if (\n            opts.skipIfHasSideEffectsCache === true &&\n            typeof resolution?.integrity === 'string'\n          ) {\n            const filesIndexFile = getIndexFilePathInCafs(\n              opts.storeDir,\n              resolution.integrity.toString(),\n              pkgId\n            );\n\n            const pkgFilesIndex =\n              await loadJsonFile<PackageFilesIndex>(filesIndexFile);\n\n            sideEffectsCacheKey = calcDepState(\n              depGraph,\n              depsStateCache,\n              depPath,\n              {\n                isBuilt: true,\n              }\n            );\n\n            if (pkgFilesIndex.sideEffects?.[sideEffectsCacheKey]) {\n              pkgsThatWereRebuilt.add(depPath);\n              return;\n            }\n          }\n\n          const hasSideEffects =\n            allowBuild(pkgInfo.name) &&\n            (await runPostinstallHooks({\n              depPath,\n              extraBinPaths,\n              extraEnv: opts.extraEnv,\n              optional: pkgSnapshot.optional === true,\n              pkgRoot,\n              rawConfig: opts.rawConfig,\n              rootModulesDir: ctx.rootModulesDir,\n              scriptsPrependNodePath: opts.scriptsPrependNodePath,\n              shellEmulator: opts.shellEmulator,\n              unsafePerm: opts.unsafePerm ?? false,\n            }));\n          if (\n            hasSideEffects &&\n            (opts.sideEffectsCacheWrite ?? true) &&\n            typeof resolution?.integrity === 'string'\n          ) {\n            builtDepPaths.add(depPath);\n\n            const filesIndexFile = getIndexFilePathInCafs(\n              opts.storeDir,\n              resolution.integrity.toString(),\n              pkgId\n            );\n\n            try {\n              if (typeof sideEffectsCacheKey === 'undefined') {\n                sideEffectsCacheKey = calcDepState(\n                  depGraph,\n                  depsStateCache,\n                  depPath,\n                  {\n                    isBuilt: true,\n                  }\n                );\n              }\n\n              await opts.storeController?.upload(pkgRoot, {\n                sideEffectsCacheKey,\n                filesIndexFile,\n              });\n            } catch (err: unknown) {\n              assert(util.types.isNativeError(err));\n\n              if ('statusCode' in err && err.statusCode === 403) {\n                logger.warn({\n                  message: `The store server disabled upload requests, could not upload ${pkgRoot}`,\n                  prefix: opts.lockfileDir,\n                });\n              } else {\n                logger.warn({\n                  error: err,\n                  message: `An error occurred while uploading ${pkgRoot}`,\n                  prefix: opts.lockfileDir,\n                });\n              }\n            }\n          }\n\n          pkgsThatWereRebuilt.add(depPath);\n        } catch (err: unknown) {\n          assert(util.types.isNativeError(err));\n\n          if (pkgSnapshot.optional === true) {\n            // TODO: add parents field to the log\n            skippedOptionalDependencyLogger.debug({\n              details: err.toString(),\n              package: {\n                id: pkgSnapshot.id ?? depPath,\n                name: pkgInfo.name,\n                version: pkgInfo.version,\n              },\n              prefix: opts.dir,\n              reason: 'build_failure',\n            });\n\n            return;\n          }\n\n          throw err;\n        }\n\n        if (pkgRoots.length > 1) {\n          await hardLinkDir(pkgRoot, pkgRoots.slice(1));\n        }\n      })\n  );\n\n  await runGroups.default(opts.childConcurrency || 5, groups);\n\n  if (builtDepPaths.size > 0) {\n    // It may be optimized because some bins were already linked before running lifecycle scripts\n    await Promise.all(\n      (Object.keys(pkgSnapshots) as DepPath[])\n        .filter((depPath: DepPath): boolean => {\n          return (\n            typeof pkgSnapshots[depPath] === 'undefined' ||\n            !packageIsIndependent(pkgSnapshots[depPath])\n          );\n        })\n        .map(async (depPath: DepPath): Promise<string[]> => {\n          return limitLinking(async (): Promise<string[]> => {\n            const pkgSnapshot = pkgSnapshots[depPath];\n\n            if (typeof pkgSnapshot === 'undefined') {\n              return [];\n            }\n\n            const pkgInfo = nameVerFromPkgSnapshot(depPath, pkgSnapshot);\n\n            const modules = path.join(\n              ctx.virtualStoreDir,\n              dp.depPathToFilename(depPath, opts.virtualStoreDirMaxLength),\n              'node_modules'\n            ) as ModulesDir;\n\n            const binPath = path.join(\n              modules,\n              pkgInfo.name,\n              'node_modules',\n              '.bin'\n            );\n            return linkBins(modules, binPath, { warn });\n          });\n        })\n    );\n    await Promise.all(\n      Object.values(ctx.projects).map(\n        async ({\n          rootDir,\n        }: {\n          id: ProjectId;\n          rootDir:\n            | WorkspaceDir\n            | ProjectRootDir\n            | ProjectRootDirRealPath\n            | GlobalPkgDir\n            | LockFileDir;\n        }): Promise<string[]> => {\n          return limitLinking(async (): Promise<string[]> => {\n            const modules = path.join(rootDir, 'node_modules') as ModulesDir;\n\n            const binPath = path.join(modules, '.bin');\n\n            return linkBins(modules, binPath, {\n              allowExoticManifests: true,\n              warn,\n            });\n          });\n        }\n      )\n    );\n  }\n\n  return { pkgsThatWereRebuilt, ignoredPkgs };\n}\n\nfunction binDirsInAllParentDirs(\n  pkgRoot: string,\n  lockfileDir?: LockFileDir | undefined\n): string[] {\n  const binDirs: string[] = [];\n  let dir = pkgRoot;\n  do {\n    if (!(path.dirname(dir)[0] === '@')) {\n      binDirs.push(path.join(dir, 'node_modules/.bin'));\n    }\n    dir = path.dirname(dir);\n  } while (path.relative(dir, lockfileDir ?? '') !== '');\n  binDirs.push(path.join(lockfileDir ?? '', 'node_modules/.bin'));\n  return binDirs;\n}\n"],
  "mappings": "AAAA,OAAO,YAAY;AACnB,OAAO,UAAU;AACjB,OAAO,UAAU;AACjB;AAAA,EACE;AAAA,OAEK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP,SAAS,gBAAgB,uBAAuB;AAChD,SAAS,uCAAuC;AAChD,SAAS,iBAAiB;AAC1B;AAAA,EACE;AAAA,OAIK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP,SAAS,gBAAgB;AACzB;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,OAEK;AACP,SAAS,QAAQ,oBAAoB;AACrC,SAAS,4BAA4B;AACrC,SAAS,sCAAsC;AAW/C,SAAS,gCAAgC;AACzC,YAAY,QAAQ;AACpB,SAAS,mBAAmB;AAC5B,SAAS,oBAAoB;AAC7B,OAAO,eAAe;AACtB;AAAA,EACE;AAAA,OAEK;AAEP,SAAS,WAAW;AACpB,OAAO,YAAY;AACnB,OAAO,YAAY;AACnB;AAAA,EACE;AAAA,OAGK;AAQP,SAAS,aACP,UACA,UACA,MAGW;AACX,SAAQ,OAAO,KAAK,QAAQ,EAAgB,OAAO,CAAC,oBAAoB;AACtE,UAAM,cAAc,SAAS,eAAe;AAE5C,QAAI,OAAO,gBAAgB,aAAa;AACtC,aAAO;AAAA,IACT;AAEA,UAAM,UAAU,uBAAuB,iBAAiB,WAAW;AAEnE,QAAI,CAAC,QAAQ,MAAM;AACjB,aAAO,KAAK;AAAA,QACV,SAAS,YAAY,eAAe,6CAA6C,eAAe;AAAA,yEAC/B,eAAe;AAAA,QAChF,QAAQ,KAAK;AAAA,MACf,CAAC;AAED,aAAO;AAAA,IACT;AAEA,WAAO,QAAQ,UAAU,OAAO;AAAA,EAClC,CAAC;AACH;AAGA,SAAS,QACP,UACA,UACS;AACT,SAAO,SAAS,KAAK,CAAC,gBAA0C;AAC9D,QAAI,OAAO,gBAAgB,UAAU;AACnC,aAAO,SAAS,SAAS;AAAA,IAC3B;AAEA,WACE,YAAY,SAAS,SAAS,QAC9B,OAAO,SAAS,YAAY,eAC5B,OAAO,UAAU,SAAS,SAAS,YAAY,KAAK;AAAA,EAExD,CAAC;AACH;AASA,eAAsB,oBACpB,UACA,UACA,WACe;AACf,QAAM,WAAW,UAAU;AAE3B,MAAI,YAAY,QAAQ,OAAO,aAAa,YAAY;AACtD,iBAAa,GAAG,QAAQ,QAAQ;AAAA,EAClC;AAEA,QAAM,OAAO,MAAM,qBAAqB,SAAS;AAEjD,QAAM,MAAM,MAAM,WAAW,EAAE,GAAG,MAAM,aAAa,SAAS,CAAC;AAE/D,MAAI,IAAI,gBAAgB,YAAY,MAAM;AACxC;AAAA,EACF;AAEA,QAAM,WAAW,IAAI,gBAAgB;AAErC,QAAM,WAA8B,SACjC;AAAA,IACC,CACE,QAIe;AACf,YAAM,EAAE,WAAW,MAAM,KAAK,KAAK,IAAI,IAAI,GAAG;AAE9C,UAAI,QAAQ,MAAM;AAChB,eAAO;AAAA,MACT;AAEA,UAAI,SAAS,aAAa,SAAS,SAAS;AAC1C,cAAM,IAAI;AAAA,UACR,sBAAsB,GAAG;AAAA,QAC3B;AAAA,MACF;AAEA,aAAO;AAAA,QACL;AAAA,QACA,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF,EACC,OAAO,OAAO;AAEjB,MAAI,OAAO,CAAC;AAEZ,aAAW,EAAE,QAAQ,KAAK,UAAU;AAClC,WAAO,CAAC,GAAG,MAAM,GAAG,aAAa,UAAU,UAAU,EAAE,QAAQ,QAAQ,CAAC,CAAC;AAAA,EAC3E;AAEA,QAAM,EAAE,YAAY,IAAI,MAAM;AAAA,IAC5B;AAAA,MACE,GAAG;AAAA,MACH,eAAe,IAAI,IAAI,IAAI;AAAA,IAC7B;AAAA,IACA;AAAA,EACF;AAEA,QAAM,qBAAqB,IAAI,gBAAgB;AAAA,IAC7C,WAAU,oBAAI,KAAK,GAAE,YAAY;AAAA,IACjC,GAAG,IAAI;AAAA,IACP,qBAAqB,IAAI;AAAA,IACzB,cAAc,IAAI;AAAA,IAClB,UAAU,IAAI;AAAA,IACd,eAAe;AAAA,IACf,eAAe;AAAA,IACf,gBAAgB,GAAG,KAAK,eAAe,IAAI,IAAI,KAAK,eAAe,OAAO;AAAA,IAC1E,eAAe,IAAI;AAAA,IACnB,oBAAoB,IAAI;AAAA,IACxB,YAAY,IAAI;AAAA,IAChB,SAAS,MAAM,KAAK,IAAI,OAAO;AAAA,IAC/B,UAAU,IAAI;AAAA,IACd,iBAAiB,IAAI;AAAA,IACrB,0BAA0B,IAAI;AAAA,EAChC,CAAC;AACH;AAEA,eAAsB,gBACpB,UACA,WACe;AACf,QAAM,WAAW,UAAU;AAE3B,MAAI,OAAO,aAAa,YAAY;AAClC,iBAAa,GAAG,QAAQ,QAAQ;AAAA,EAClC;AAEA,QAAM,OAAO,MAAM,qBAAqB,SAAS;AAEjD,QAAM,MAAM,MAAM,WAAW,EAAE,GAAG,MAAM,aAAa,SAAS,CAAC;AAE/D,MAAI,eAAyB,CAAC;AAE9B,MAAI,KAAK,YAAY,MAAM;AACzB,mBAAe,IAAI;AAAA,EACrB,WAAW,IAAI,gBAAgB,YAAY,MAAM;AAC/C,mBAAe,OAAO,KAAK,IAAI,gBAAgB,QAAQ;AAAA,EACzD;AAEA,QAAM,EAAE,qBAAqB,YAAY,IAAI,MAAM;AAAA,IACjD;AAAA,MACE,eAAe,IAAI,IAAI,YAAY;AAAA,MACnC,GAAG;AAAA,IACL;AAAA,IACA;AAAA,EACF;AAEA,MAAI,gBAAgB,IAAI,cAAc,OAAO,CAAC,YAA6B;AACzE,WAAO,CAAC,oBAAoB,IAAI,OAAO;AAAA,EACzC,CAAC;AAED,QAAM,QAAQ,MAAM,+BAA+B,IAAI;AAEvD,QAAM,cAAoD;AAAA,IACxD,eAAe,IAAI;AAAA,IACnB,gBAAgB,IAAI;AAAA,IACpB,UAAU,KAAK;AAAA,IACf,4BAA4B,KAAK;AAAA,IACjC,WAAW,KAAK;AAAA,IAChB,wBAAwB,KAAK;AAAA,IAC7B,aAAa,KAAK;AAAA,IAClB,eAAe,KAAK;AAAA,IACpB,iBAAiB,MAAM;AAAA,IACvB,YAAY,KAAK,cAAc;AAAA,EACjC;AAEA,QAAM;AAAA,IACJ,CAAC,cAAc,WAAW,eAAe,cAAc,SAAS;AAAA,IAChE,OAAO,OAAO,IAAI,QAAQ;AAAA,IAC1B,KAAK,oBAAoB;AAAA,IACzB;AAAA,EACF;AAEA,aAAW,EAAE,IAAI,SAAS,KAAK,OAAO,OAAO,IAAI,QAAQ,GAAG;AAC1D,QACE,OAAO,UAAU,YAAY,gBAC5B,KAAK,YAAY,QAAQ,IAAI,cAAc,SAAS,EAAE,IACvD;AACA,UAAI,cAAc,OAAO,IAAI,cAAc,QAAQ,EAAE,GAAG,CAAC;AAAA,IAC3D;AAAA,EACF;AAEA,QAAM,qBAAqB,IAAI,gBAAgB;AAAA,IAC7C,WAAU,oBAAI,KAAK,GAAE,YAAY;AAAA,IACjC,GAAG,IAAI;AAAA,IACP,qBAAqB,IAAI;AAAA,IACzB,cAAc,IAAI;AAAA,IAClB,UAAU,IAAI;AAAA,IACd,eAAe;AAAA,IACf,eAAe;AAAA,IACf,gBAAgB,GAAG,KAAK,eAAe,IAAI,IAAI,KAAK,eAAe,OAAO;AAAA,IAC1E,eAAe,IAAI;AAAA,IACnB,oBAAoB,IAAI;AAAA,IACxB,YAAY,IAAI;AAAA,IAChB,SAAS,MAAM,KAAK,IAAI,OAAO;AAAA,IAC/B,UAAU,IAAI;AAAA,IACd,iBAAiB,IAAI;AAAA,IACrB,0BAA0B,IAAI;AAAA,EAChC,CAAC;AACH;AAEA,SAAS,mBACP,MACA,2BACA,MAGS;AACT,MAAI,uBAAuB;AAE3B,aAAW,EAAE,SAAS,KAAK,KAAK,KAAK,cAAc;AACjD,QAAI,0BAA0B,IAAI,OAAO,GAAG;AAC1C,6BAAuB;AAAA,IACzB;AAEA,UAAM,qBACJ,mBAAmB,KAAK,GAAG,2BAA2B,IAAI,KAC1D,KAAK,cAAc,IAAI,OAAO;AAEhC,QAAI,oBAAoB;AACtB,gCAA0B,IAAI,OAAO;AACrC,6BAAuB;AAAA,IACzB;AAAA,EACF;AACA,aAAW,WAAW,KAAK,SAAS;AAGlC,WAAO,MAAM;AAAA,MACX,SAAS,iBAAiB,OAAO,QAAQ,eAAe;AAAA,IAC1D,CAAC;AAAA,EACH;AACA,SAAO;AACT;AAEA,MAAM,eAAe,OAAO,EAAE;AAE9B,eAAe,SACb,KAqBA,MACsE;AACtE,QAAM,WAAW,mBAAmB,IAAI,eAAe;AAEvD,QAAM,iBAAiC,CAAC;AAExC,QAAM,sBAAsB,oBAAI,IAAY;AAE5C,QAAM,QAAwB,oBAAI,IAAwB;AAE1D,QAAM,eAAiC,IAAI,gBAAgB,YAAY,CAAC;AAExE,QAAM,4BAA4B,oBAAI,IAAa;AAEnD;AAAA,IACE;AAAA,MACE,IAAI;AAAA,MACJ,OAAO,OAAO,IAAI,QAAQ,EAAE,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE;AAAA,MAC9C;AAAA,QACE,SAAS;AAAA,UACP,cAAc,KAAK;AAAA,UACnB,iBAAiB,KAAK;AAAA,UACtB,sBAAsB,KAAK;AAAA,QAC7B;AAAA,MACF;AAAA,IACF,EAAE;AAAA,IACF;AAAA,IACA,EAAE,eAAe,IAAI,cAAc;AAAA,EACrC;AAEA,QAAM,iCAAiC,MAAM,KAAK,yBAAyB;AAE3E,aAAW,WAAW,gCAAgC;AACpD,UAAM,cAAc,aAAa,OAAO;AAExC,UAAM;AAAA,MACJ;AAAA,MACA,OAAO,QAAQ;AAAA,QACb,GAAG,aAAa;AAAA,QAChB,GAAG,aAAa;AAAA,MAClB,CAAC,EACE,IAAI,CAAC,CAAC,SAAS,SAAS,MAAM,GAAG,cAAc,WAAW,OAAO,CAAC,EAClE,OAAO,OAAO,EACd,OAAO,CAAC,oBAA6B;AACpC,eAAO,0BAA0B,IAAI,eAAe;AAAA,MACtD,CAAC;AAAA,IACL;AAAA,EACF;AAEA,QAAM,uBAAuB;AAAA,IAC3B;AAAA,IACA;AAAA,EACF;AAEA,QAAM,SAAS,qBAAqB;AAEpC,WAAS,KAAK,SAAuB;AACnC,WAAO,KAAK,EAAE,SAAS,QAAQ,KAAK,IAAI,CAAC;AAAA,EAC3C;AAEA,QAAM,cAAwB,CAAC;AAS/B,QAAM,cAAc,yBAAyB,IAAI,MAAM,MAAM;AAE7D,QAAM,aAAa,CAAC,YAA6B;AAC/C,QAAI,YAAY,OAAO,MAAM,MAAM;AACjC,aAAO;AAAA,IACT;AACA,gBAAY,KAAK,OAAO;AACxB,WAAO;AAAA,EACT;AAEA,QAAM,gBAAgB,oBAAI,IAAY;AAEtC,QAAM,SAAS,OAAO;AAAA,IAAI,CAAC,UACzB,MACG,OAAO,CAAC,YAA8B;AACrC,aAAO,IAAI,cAAc,IAAI,OAAO,KAAK,CAAC,IAAI,QAAQ,IAAI,OAAO;AAAA,IACnE,CAAC,EACA,IAAI,CAAC,YAAqB,YAA2B;AACpD,YAAM,cAAc,aAAa,OAAO;AAExC,UAAI,OAAO,gBAAgB,aAAa;AACtC;AAAA,MACF;AAEA,YAAM,UAAU,uBAAuB,SAAS,WAAW;AAE3D,YAAM,WACJ,KAAK,eAAe,aACf,IAAI,aAAa,mBAAmB,OAAO,KAAK,CAAC,GAAG;AAAA,QACnD,CAAC,oBAAoC;AACnC,iBAAO,KAAK,KAAK,KAAK,aAAa,eAAe;AAAA,QACpD;AAAA,MACF,IACA;AAAA,QACE,KAAK;AAAA,UACH,IAAI;AAAA,UACJ,GAAG,kBAAkB,SAAS,KAAK,wBAAwB;AAAA,UAC3D;AAAA,UACA,QAAQ;AAAA,QACV;AAAA,MACF;AAEN,UAAI,SAAS,WAAW,GAAG;AACzB,YAAI,YAAY,aAAa,MAAM;AACjC;AAAA,QACF;AAEA,cAAM,IAAI;AAAA,UACR;AAAA,UACA,GAAG,OAAO;AAAA,UACV;AAAA,YACE,MAAM;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAEA,YAAM,UAAU,SAAS,CAAC;AAE1B,UAAI,OAAO,YAAY,aAAa;AAClC;AAAA,MACF;AAEA,UAAI;AACF,cAAM,gBAAgB,IAAI;AAE1B,YAAI,KAAK,eAAe,WAAW;AACjC,wBAAc;AAAA,YACZ,GAAG,uBAAuB,SAAS,KAAK,WAAW;AAAA,UACrD;AAAA,QACF,OAAO;AACL,gBAAM,UAAU,KAAK;AAAA,YACnB,IAAI;AAAA,YACJ,GAAG,kBAAkB,SAAS,KAAK,wBAAwB;AAAA,YAC3D;AAAA,UACF;AAEA,gBAAM,UAAU,KAAK,KAAK,SAAS,gBAAgB,MAAM;AAEzD,gBAAM,SAAS,SAAS,SAAS;AAAA,YAC/B,gBAAgB,IAAI;AAAA,YACpB;AAAA,UACF,CAAC;AAAA,QACH;AAEA,cAAM,aAAa,YAAY;AAE/B,YAAI;AAEJ,cAAM,QAAQ,GAAG,QAAQ,IAAI,IAAI,QAAQ,OAAO;AAEhD,YACE,KAAK,8BAA8B,QACnC,OAAO,YAAY,cAAc,UACjC;AACA,gBAAM,iBAAiB;AAAA,YACrB,KAAK;AAAA,YACL,WAAW,UAAU,SAAS;AAAA,YAC9B;AAAA,UACF;AAEA,gBAAM,gBACJ,MAAM,aAAgC,cAAc;AAEtD,gCAAsB;AAAA,YACpB;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,cACE,SAAS;AAAA,YACX;AAAA,UACF;AAEA,cAAI,cAAc,cAAc,mBAAmB,GAAG;AACpD,gCAAoB,IAAI,OAAO;AAC/B;AAAA,UACF;AAAA,QACF;AAEA,cAAM,iBACJ,WAAW,QAAQ,IAAI,KACtB,MAAM,oBAAoB;AAAA,UACzB;AAAA,UACA;AAAA,UACA,UAAU,KAAK;AAAA,UACf,UAAU,YAAY,aAAa;AAAA,UACnC;AAAA,UACA,WAAW,KAAK;AAAA,UAChB,gBAAgB,IAAI;AAAA,UACpB,wBAAwB,KAAK;AAAA,UAC7B,eAAe,KAAK;AAAA,UACpB,YAAY,KAAK,cAAc;AAAA,QACjC,CAAC;AACH,YACE,mBACC,KAAK,yBAAyB,SAC/B,OAAO,YAAY,cAAc,UACjC;AACA,wBAAc,IAAI,OAAO;AAEzB,gBAAM,iBAAiB;AAAA,YACrB,KAAK;AAAA,YACL,WAAW,UAAU,SAAS;AAAA,YAC9B;AAAA,UACF;AAEA,cAAI;AACF,gBAAI,OAAO,wBAAwB,aAAa;AAC9C,oCAAsB;AAAA,gBACpB;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,kBACE,SAAS;AAAA,gBACX;AAAA,cACF;AAAA,YACF;AAEA,kBAAM,KAAK,iBAAiB,OAAO,SAAS;AAAA,cAC1C;AAAA,cACA;AAAA,YACF,CAAC;AAAA,UACH,SAAS,KAAc;AACrB,mBAAO,KAAK,MAAM,cAAc,GAAG,CAAC;AAEpC,gBAAI,gBAAgB,OAAO,IAAI,eAAe,KAAK;AACjD,qBAAO,KAAK;AAAA,gBACV,SAAS,+DAA+D,OAAO;AAAA,gBAC/E,QAAQ,KAAK;AAAA,cACf,CAAC;AAAA,YACH,OAAO;AACL,qBAAO,KAAK;AAAA,gBACV,OAAO;AAAA,gBACP,SAAS,qCAAqC,OAAO;AAAA,gBACrD,QAAQ,KAAK;AAAA,cACf,CAAC;AAAA,YACH;AAAA,UACF;AAAA,QACF;AAEA,4BAAoB,IAAI,OAAO;AAAA,MACjC,SAAS,KAAc;AACrB,eAAO,KAAK,MAAM,cAAc,GAAG,CAAC;AAEpC,YAAI,YAAY,aAAa,MAAM;AAEjC,0CAAgC,MAAM;AAAA,YACpC,SAAS,IAAI,SAAS;AAAA,YACtB,SAAS;AAAA,cACP,IAAI,YAAY,MAAM;AAAA,cACtB,MAAM,QAAQ;AAAA,cACd,SAAS,QAAQ;AAAA,YACnB;AAAA,YACA,QAAQ,KAAK;AAAA,YACb,QAAQ;AAAA,UACV,CAAC;AAED;AAAA,QACF;AAEA,cAAM;AAAA,MACR;AAEA,UAAI,SAAS,SAAS,GAAG;AACvB,cAAM,YAAY,SAAS,SAAS,MAAM,CAAC,CAAC;AAAA,MAC9C;AAAA,IACF,CAAC;AAAA,EACL;AAEA,QAAM,UAAU,QAAQ,KAAK,oBAAoB,GAAG,MAAM;AAE1D,MAAI,cAAc,OAAO,GAAG;AAE1B,UAAM,QAAQ;AAAA,MACX,OAAO,KAAK,YAAY,EACtB,OAAO,CAAC,YAA8B;AACrC,eACE,OAAO,aAAa,OAAO,MAAM,eACjC,CAAC,qBAAqB,aAAa,OAAO,CAAC;AAAA,MAE/C,CAAC,EACA,IAAI,OAAO,YAAwC;AAClD,eAAO,aAAa,YAA+B;AACjD,gBAAM,cAAc,aAAa,OAAO;AAExC,cAAI,OAAO,gBAAgB,aAAa;AACtC,mBAAO,CAAC;AAAA,UACV;AAEA,gBAAM,UAAU,uBAAuB,SAAS,WAAW;AAE3D,gBAAM,UAAU,KAAK;AAAA,YACnB,IAAI;AAAA,YACJ,GAAG,kBAAkB,SAAS,KAAK,wBAAwB;AAAA,YAC3D;AAAA,UACF;AAEA,gBAAM,UAAU,KAAK;AAAA,YACnB;AAAA,YACA,QAAQ;AAAA,YACR;AAAA,YACA;AAAA,UACF;AACA,iBAAO,SAAS,SAAS,SAAS,EAAE,KAAK,CAAC;AAAA,QAC5C,CAAC;AAAA,MACH,CAAC;AAAA,IACL;AACA,UAAM,QAAQ;AAAA,MACZ,OAAO,OAAO,IAAI,QAAQ,EAAE;AAAA,QAC1B,OAAO;AAAA,UACL;AAAA,QACF,MAQyB;AACvB,iBAAO,aAAa,YAA+B;AACjD,kBAAM,UAAU,KAAK,KAAK,SAAS,cAAc;AAEjD,kBAAM,UAAU,KAAK,KAAK,SAAS,MAAM;AAEzC,mBAAO,SAAS,SAAS,SAAS;AAAA,cAChC,sBAAsB;AAAA,cACtB;AAAA,YACF,CAAC;AAAA,UACH,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO,EAAE,qBAAqB,YAAY;AAC5C;AAEA,SAAS,uBACP,SACA,aACU;AACV,QAAM,UAAoB,CAAC;AAC3B,MAAI,MAAM;AACV,KAAG;AACD,QAAI,EAAE,KAAK,QAAQ,GAAG,EAAE,CAAC,MAAM,MAAM;AACnC,cAAQ,KAAK,KAAK,KAAK,KAAK,mBAAmB,CAAC;AAAA,IAClD;AACA,UAAM,KAAK,QAAQ,GAAG;AAAA,EACxB,SAAS,KAAK,SAAS,KAAK,eAAe,EAAE,MAAM;AACnD,UAAQ,KAAK,KAAK,KAAK,eAAe,IAAI,mBAAmB,CAAC;AAC9D,SAAO;AACT;",
  "names": []
}
