{
  "version": 3,
  "sources": ["../../../../src/packages/plugin-commands-script-runners/exec.ts"],
  "sourcesContent": ["import path from 'node:path';\nimport {\n  docsUrl,\n  type RecursiveSummary,\n  throwOnCommandFail,\n  readProjectManifestOnly,\n} from '../cli-utils/index.ts';\nimport {\n  type LifecycleMessage,\n  lifecycleLogger,\n} from '../core-loggers/index.ts';\nimport {\n  FILTERING,\n  UNIVERSAL_OPTIONS,\n} from '../common-cli-options-help/index.ts';\nimport { type Config, types } from '../config/index.ts';\nimport type { CheckDepsStatusOptions } from '../deps.status/index.ts';\nimport { makeNodeRequireOption } from '../lifecycle/index.ts';\nimport { logger } from '../logger/index.ts';\nimport { tryReadProjectManifest } from '../read-project-manifest/index.ts';\nimport { prepareExecutionEnv } from '../plugin-commands-env/index.ts';\nimport { sortPackages } from '../sort-packages/index.ts';\nimport type {\n  Project,\n  ProjectsGraph,\n  ProjectRootDir,\n  ProjectRootDirRealPath,\n} from '../types/index.ts';\nimport { execa } from 'execa';\nimport pLimit from 'p-limit';\nimport { prependDirsToPath } from '../env.path/index.ts';\nimport pick from 'ramda/src/pick';\nimport renderHelp from 'render-help';\nimport { existsInDir } from './existsInDir.ts';\nimport { makeEnv } from './makeEnv.ts';\nimport {\n  PARALLEL_OPTION_HELP,\n  REPORT_SUMMARY_OPTION_HELP,\n  RESUME_FROM_OPTION_HELP,\n  shorthands as runShorthands,\n} from './run.ts';\nimport { PnpmError } from '../error/index.ts';\nimport which from 'which';\nimport { writeJsonFile } from 'write-json-file';\nimport {\n  getNearestProgram,\n  getNearestScript,\n} from './buildCommandNotFoundHint.ts';\nimport { runDepsStatusCheck } from './runDepsStatusCheck.ts';\n\nexport const shorthands: Record<string, string | string[]> = {\n  parallel: runShorthands.parallel ?? [],\n  c: '--shell-mode',\n};\n\nexport const commandNames = ['exec'];\n\nexport function rcOptionsTypes(): Record<string, unknown> {\n  return {\n    ...pick.default(\n      [\n        'bail',\n        'sort',\n        'use-node-version',\n        'unsafe-perm',\n        'workspace-concurrency',\n        'reporter-hide-prefix',\n      ],\n      types\n    ),\n    'shell-mode': Boolean,\n    'resume-from': String,\n    'report-summary': Boolean,\n  };\n}\n\nexport const cliOptionsTypes = (): Record<string, unknown> => ({\n  ...rcOptionsTypes(),\n  recursive: Boolean,\n  reverse: Boolean,\n});\n\nexport function help(): string {\n  return renderHelp({\n    description: 'Run a shell command in the context of a project.',\n    descriptionLists: [\n      {\n        title: 'Options',\n\n        list: [\n          {\n            description:\n              'Do not hide project name prefix from output of recursively running command.',\n            name: '--no-reporter-hide-prefix',\n          },\n          PARALLEL_OPTION_HELP,\n          {\n            description:\n              'Run the shell command in every package found in subdirectories \\\nor every workspace package, when executed inside a workspace. \\\nFor options that may be used with `-r`, see \"pnpm help recursive\"',\n            name: '--recursive',\n            shortAlias: '-r',\n          },\n          {\n            description:\n              'If exist, runs file inside of a shell. \\\nUses /bin/sh on UNIX and \\\\cmd.exe on Windows. \\\nThe shell should understand the -c switch on UNIX or /d /s /c on Windows.',\n            name: '--shell-mode',\n            shortAlias: '-c',\n          },\n          RESUME_FROM_OPTION_HELP,\n          REPORT_SUMMARY_OPTION_HELP,\n          ...UNIVERSAL_OPTIONS,\n        ],\n      },\n      FILTERING,\n    ],\n    url: docsUrl('exec'),\n    usages: ['pnpm [-r] [-c] exec <command> [args...]'],\n  });\n}\n\nexport function getResumedPackageChunks({\n  resumeFrom,\n  chunks,\n  selectedProjectsGraph,\n}: {\n  resumeFrom: string;\n  chunks: ProjectRootDir[][];\n  selectedProjectsGraph: ProjectsGraph;\n}): ProjectRootDir[][] {\n  const resumeFromPackagePrefix = (\n    Object.keys(selectedProjectsGraph) as ProjectRootDir[]\n  ).find(\n    (prefix) =>\n      selectedProjectsGraph[prefix]?.package.manifest.name === resumeFrom\n  );\n\n  if (!resumeFromPackagePrefix) {\n    throw new PnpmError(\n      'RESUME_FROM_NOT_FOUND',\n      `Cannot find package ${resumeFrom}. Could not determine where to resume from.`\n    );\n  }\n\n  const chunkPosition = chunks.findIndex((chunk) =>\n    chunk.includes(resumeFromPackagePrefix)\n  );\n  return chunks.slice(chunkPosition);\n}\n\nexport async function writeRecursiveSummary(opts: {\n  dir: string;\n  summary: RecursiveSummary;\n}): Promise<void> {\n  await writeJsonFile(path.join(opts.dir, 'pnpm-exec-summary.json'), {\n    executionStatus: opts.summary,\n  });\n}\n\nexport function createEmptyRecursiveSummary(\n  chunks: string[][]\n): RecursiveSummary {\n  const acc: RecursiveSummary = {};\n  for (const prefix of chunks.flat()) {\n    acc[prefix] = { status: 'queued' };\n  }\n  return acc;\n}\n\nexport function getExecutionDuration(start: [number, number]): number {\n  const end = process.hrtime(start);\n  return (end[0] * 1e9 + end[1]) / 1e6;\n}\n\nexport type ExecOpts = Required<\n  Pick<Config, 'selectedProjectsGraph' | 'storeDir'>\n> & {\n  bail?: boolean | undefined;\n  unsafePerm?: boolean | undefined;\n  reverse?: boolean | undefined;\n  sort?: boolean | undefined;\n  workspaceConcurrency?: number | undefined;\n  shellMode?: boolean | undefined;\n  resumeFrom?: string | undefined;\n  reportSummary?: boolean | undefined;\n  implicitlyFellbackFromRun?: boolean | undefined;\n} & Pick<\n    Config,\n    | 'bin'\n    | 'dir'\n    | 'extraBinPaths'\n    | 'extraEnv'\n    | 'lockfileDir'\n    | 'modulesDir'\n    | 'nodeOptions'\n    | 'pnpmHomeDir'\n    | 'rawConfig'\n    | 'recursive'\n    | 'reporterHidePrefix'\n    | 'userAgent'\n    | 'verifyDepsBeforeRun'\n    | 'workspaceDir'\n  > &\n  CheckDepsStatusOptions;\n\nexport async function handler(\n  opts: ExecOpts,\n  params: string[]\n): Promise<{ exitCode: number }> {\n  const firstParam = params[0];\n  // For backward compatibility\n  if (firstParam === '--') {\n    params.shift();\n  }\n\n  if (typeof firstParam === 'undefined') {\n    throw new PnpmError(\n      'EXEC_MISSING_COMMAND',\n      \"'pnpm exec' requires a command to run\"\n    );\n  }\n\n  const limitRun = pLimit(opts.workspaceConcurrency ?? 4);\n\n  if (typeof opts.verifyDepsBeforeRun !== 'undefined') {\n    await runDepsStatusCheck(opts);\n  }\n\n  if (typeof opts.selectedProjectsGraph === 'undefined') {\n    throw new PnpmError(\n      'RECURSIVE_EXEC_NO_PACKAGE',\n      'No package found in this workspace'\n    );\n  }\n\n  let chunks: ProjectRootDir[][] | undefined;\n\n  if (opts.recursive === true) {\n    chunks =\n      opts.sort === true\n        ? sortPackages(opts.selectedProjectsGraph)\n        : [\n            (\n              Object.keys(opts.selectedProjectsGraph) as ProjectRootDir[]\n            ).sort(),\n          ];\n\n    if (opts.reverse === true) {\n      chunks = chunks.reverse();\n    }\n  } else {\n    chunks = [[opts.dir as unknown as ProjectRootDir]];\n\n    const project = await tryReadProjectManifest(opts.dir);\n\n    if (project.manifest !== null) {\n      opts.selectedProjectsGraph = {\n        [opts.dir]: {\n          dependencies: [],\n          package: {\n            ...project,\n            rootDir: opts.dir as unknown as ProjectRootDir,\n            rootDirRealPath: opts.dir as ProjectRootDirRealPath,\n          } as Project,\n        },\n      };\n    }\n  }\n\n  if (typeof opts.selectedProjectsGraph === 'undefined') {\n    throw new PnpmError(\n      'RECURSIVE_EXEC_NO_PACKAGE',\n      'No package found in this workspace'\n    );\n  }\n\n  if (typeof opts.resumeFrom === 'string') {\n    chunks = getResumedPackageChunks({\n      resumeFrom: opts.resumeFrom,\n      chunks,\n      selectedProjectsGraph: opts.selectedProjectsGraph,\n    });\n  }\n\n  const result = createEmptyRecursiveSummary(chunks);\n\n  const existsPnp = existsInDir.bind(null, '.pnp.cjs');\n\n  const workspacePnpPath =\n    typeof opts.workspaceDir === 'string' && existsPnp(opts.workspaceDir);\n\n  let exitCode = 0;\n\n  const mapPrefixToPrependPaths: Record<ProjectRootDir, string[]> = {};\n\n  await Promise.all(\n    chunks.flat().map(async (prefix: ProjectRootDir): Promise<void> => {\n      const executionEnv = await prepareExecutionEnv(opts, {\n        extraBinPaths: opts.extraBinPaths,\n        executionEnv:\n          opts.selectedProjectsGraph?.[prefix]?.package.manifest.pnpm\n            ?.executionEnv,\n      });\n\n      mapPrefixToPrependPaths[prefix] = [\n        './node_modules/.bin',\n        ...executionEnv.extraBinPaths,\n      ];\n    })\n  );\n\n  const reporterShowPrefix =\n    opts.recursive === true && opts.reporterHidePrefix === false;\n\n  for (const chunk of chunks) {\n    await Promise.all(\n      chunk.map(async (prefix: ProjectRootDir): Promise<void> => {\n        return limitRun(async (): Promise<void> => {\n          const prependPaths = mapPrefixToPrependPaths[prefix] ?? [];\n\n          const r = result[prefix];\n\n          if (typeof r !== 'undefined') {\n            r.status = 'running';\n          }\n\n          const startTime = process.hrtime();\n\n          try {\n            const pnpPath = workspacePnpPath ?? existsPnp(prefix);\n\n            const extraEnv = {\n              ...opts.extraEnv,\n              ...(typeof pnpPath === 'string'\n                ? makeNodeRequireOption(pnpPath)\n                : {}),\n            };\n            const env = makeEnv({\n              extraEnv: {\n                ...extraEnv,\n                PNPM_PACKAGE_NAME:\n                  opts.selectedProjectsGraph?.[prefix]?.package.manifest.name,\n                ...(typeof opts.nodeOptions !== 'undefined'\n                  ? { NODE_OPTIONS: opts.nodeOptions }\n                  : {}),\n              },\n              prependPaths,\n              userAgent: opts.userAgent,\n            });\n\n            const [cmd, ...args] = params;\n\n            if (typeof cmd !== 'string') {\n              return;\n            }\n\n            if (reporterShowPrefix) {\n              const manifest = await readProjectManifestOnly(prefix);\n\n              const child = execa(cmd, args, {\n                cwd: prefix,\n                env,\n                stdio: 'pipe',\n                shell: opts.shellMode ?? false,\n              });\n\n              const lifecycleOpts = {\n                wd: prefix,\n                depPath: manifest.name || path.relative(opts.dir, prefix),\n                stage: '(exec)',\n              } satisfies Partial<LifecycleMessage>;\n\n              function logFn(\n                stdio: 'stdout' | 'stderr'\n              ): (data: unknown) => void {\n                return (data: unknown): void => {\n                  for (const line of String(data).split('\\n')) {\n                    lifecycleLogger.debug({\n                      ...lifecycleOpts,\n                      stdio,\n                      line,\n                    });\n                  }\n                };\n              }\n\n              child.stdout.on('data', logFn('stdout'));\n              child.stderr.on('data', logFn('stderr'));\n\n              void child.once('close', (exitCode: number | null): void => {\n                lifecycleLogger.debug({\n                  ...lifecycleOpts,\n                  exitCode: exitCode ?? 1,\n                  optional: false,\n                });\n              });\n\n              await child;\n            } else {\n              await execa(cmd, args, {\n                cwd: prefix,\n                env,\n                stdio: 'inherit',\n                shell: opts.shellMode ?? false,\n              });\n            }\n\n            const r = result[prefix];\n\n            if (typeof r !== 'undefined') {\n              r.status = 'passed';\n\n              r.duration = getExecutionDuration(startTime);\n            }\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n          } catch (err: any) {\n            const firstParam = params[0];\n\n            if (\n              typeof firstParam === 'string' &&\n              isErrorCommandNotFound(firstParam, err, prependPaths)\n            ) {\n              err.message = `Command \"${firstParam}\" not found`;\n\n              err.hint = await createExecCommandNotFoundHint(firstParam, {\n                implicitlyFellbackFromRun:\n                  opts.implicitlyFellbackFromRun ?? false,\n                dir: opts.dir,\n                workspaceDir: opts.workspaceDir,\n                modulesDir: opts.modulesDir ?? 'node_modules',\n              });\n            } else if (\n              opts.recursive !== true &&\n              typeof err.exitCode === 'number'\n            ) {\n              exitCode = err.exitCode;\n\n              return;\n            }\n\n            logger.info(err);\n\n            result[prefix] = {\n              status: 'failure',\n              duration: getExecutionDuration(startTime),\n              error: err,\n              message: err.message,\n              prefix,\n            };\n\n            if (opts.bail !== true) {\n              return;\n            }\n\n            if (err.code?.startsWith('ERR_PNPM_') !== true) {\n              err.code = 'ERR_PNPM_RECURSIVE_EXEC_FIRST_FAIL';\n            }\n\n            err.prefix = prefix;\n\n            if (opts.reportSummary === true) {\n              await writeRecursiveSummary({\n                dir: opts.lockfileDir, // ?? opts.dir,\n                summary: result,\n              });\n            }\n\n            throw err;\n          }\n        });\n      })\n    );\n  }\n\n  if (opts.reportSummary === true) {\n    await writeRecursiveSummary({\n      dir: opts.lockfileDir, // ?? opts.dir,\n      summary: result,\n    });\n  }\n\n  throwOnCommandFail('pnpm recursive exec', result);\n\n  return { exitCode };\n}\n\nasync function createExecCommandNotFoundHint(\n  programName: string,\n  opts: {\n    dir: string;\n    implicitlyFellbackFromRun: boolean;\n    workspaceDir?: string | undefined;\n    modulesDir: string;\n  }\n): Promise<string | undefined> {\n  if (opts.implicitlyFellbackFromRun) {\n    let nearestScript: string | null | undefined;\n\n    try {\n      nearestScript = getNearestScript(\n        programName,\n        (await readProjectManifestOnly(opts.dir)).scripts\n      );\n    } catch {}\n\n    if (typeof nearestScript === 'string') {\n      return `Did you mean \"pnpm ${nearestScript}\"?`;\n    }\n\n    const nearestProgram = getNearestProgram({\n      programName,\n      dir: opts.dir,\n      workspaceDir: opts.workspaceDir,\n      modulesDir: opts.modulesDir,\n    });\n\n    if (typeof nearestProgram === 'string') {\n      return `Did you mean \"pnpm ${nearestProgram}\"?`;\n    }\n\n    return undefined;\n  }\n\n  const nearestProgram = getNearestProgram({\n    programName,\n    dir: opts.dir,\n    workspaceDir: opts.workspaceDir,\n    modulesDir: opts.modulesDir,\n  });\n\n  if (typeof nearestProgram === 'string') {\n    return `Did you mean \"pnpm exec ${nearestProgram}\"?`;\n  }\n\n  return undefined;\n}\n\ninterface CommandError extends Error {\n  originalMessage: string;\n  shortMessage: string;\n}\n\nfunction isErrorCommandNotFound(\n  command: string,\n  error: CommandError,\n  prependPaths: string[]\n): boolean {\n  // Mac/Linux\n  if (process.platform === 'linux' || process.platform === 'darwin') {\n    return error.originalMessage === `spawn ${command} ENOENT`;\n  }\n\n  // Windows\n  if (process.platform === 'win32') {\n    const { value: path } = prependDirsToPath(prependPaths);\n\n    return (\n      typeof which.sync(command, {\n        nothrow: true,\n        path,\n      }) !== 'string'\n    );\n  }\n\n  return false;\n}\n"],
  "mappings": "AAAA,OAAO,UAAU;AACjB;AAAA,EACE;AAAA,EAEA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EAEE;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP,SAAsB,aAAa;AAEnC,SAAS,6BAA6B;AACtC,SAAS,cAAc;AACvB,SAAS,8BAA8B;AACvC,SAAS,2BAA2B;AACpC,SAAS,oBAAoB;AAO7B,SAAS,aAAa;AACtB,OAAO,YAAY;AACnB,SAAS,yBAAyB;AAClC,OAAO,UAAU;AACjB,OAAO,gBAAgB;AACvB,SAAS,mBAAmB;AAC5B,SAAS,eAAe;AACxB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,OACT;AACP,SAAS,iBAAiB;AAC1B,OAAO,WAAW;AAClB,SAAS,qBAAqB;AAC9B;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP,SAAS,0BAA0B;AAE5B,MAAM,aAAgD;AAAA,EAC3D,UAAU,cAAc,YAAY,CAAC;AAAA,EACrC,GAAG;AACL;AAEO,MAAM,eAAe,CAAC,MAAM;AAE5B,SAAS,iBAA0C;AACxD,SAAO;AAAA,IACL,GAAG,KAAK;AAAA,MACN;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,IACA,cAAc;AAAA,IACd,eAAe;AAAA,IACf,kBAAkB;AAAA,EACpB;AACF;AAEO,MAAM,kBAAkB,OAAgC;AAAA,EAC7D,GAAG,eAAe;AAAA,EAClB,WAAW;AAAA,EACX,SAAS;AACX;AAEO,SAAS,OAAe;AAC7B,SAAO,WAAW;AAAA,IAChB,aAAa;AAAA,IACb,kBAAkB;AAAA,MAChB;AAAA,QACE,OAAO;AAAA,QAEP,MAAM;AAAA,UACJ;AAAA,YACE,aACE;AAAA,YACF,MAAM;AAAA,UACR;AAAA,UACA;AAAA,UACA;AAAA,YACE,aACE;AAAA,YAGF,MAAM;AAAA,YACN,YAAY;AAAA,UACd;AAAA,UACA;AAAA,YACE,aACE;AAAA,YAGF,MAAM;AAAA,YACN,YAAY;AAAA,UACd;AAAA,UACA;AAAA,UACA;AAAA,UACA,GAAG;AAAA,QACL;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK,QAAQ,MAAM;AAAA,IACnB,QAAQ,CAAC,yCAAyC;AAAA,EACpD,CAAC;AACH;AAEO,SAAS,wBAAwB;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AACF,GAIuB;AACrB,QAAM,0BACJ,OAAO,KAAK,qBAAqB,EACjC;AAAA,IACA,CAAC,WACC,sBAAsB,MAAM,GAAG,QAAQ,SAAS,SAAS;AAAA,EAC7D;AAEA,MAAI,CAAC,yBAAyB;AAC5B,UAAM,IAAI;AAAA,MACR;AAAA,MACA,uBAAuB,UAAU;AAAA,IACnC;AAAA,EACF;AAEA,QAAM,gBAAgB,OAAO;AAAA,IAAU,CAAC,UACtC,MAAM,SAAS,uBAAuB;AAAA,EACxC;AACA,SAAO,OAAO,MAAM,aAAa;AACnC;AAEA,eAAsB,sBAAsB,MAG1B;AAChB,QAAM,cAAc,KAAK,KAAK,KAAK,KAAK,wBAAwB,GAAG;AAAA,IACjE,iBAAiB,KAAK;AAAA,EACxB,CAAC;AACH;AAEO,SAAS,4BACd,QACkB;AAClB,QAAM,MAAwB,CAAC;AAC/B,aAAW,UAAU,OAAO,KAAK,GAAG;AAClC,QAAI,MAAM,IAAI,EAAE,QAAQ,SAAS;AAAA,EACnC;AACA,SAAO;AACT;AAEO,SAAS,qBAAqB,OAAiC;AACpE,QAAM,MAAM,QAAQ,OAAO,KAAK;AAChC,UAAQ,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,KAAK;AACnC;AAiCA,eAAsB,QACpB,MACA,QAC+B;AAC/B,QAAM,aAAa,OAAO,CAAC;AAE3B,MAAI,eAAe,MAAM;AACvB,WAAO,MAAM;AAAA,EACf;AAEA,MAAI,OAAO,eAAe,aAAa;AACrC,UAAM,IAAI;AAAA,MACR;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,QAAM,WAAW,OAAO,KAAK,wBAAwB,CAAC;AAEtD,MAAI,OAAO,KAAK,wBAAwB,aAAa;AACnD,UAAM,mBAAmB,IAAI;AAAA,EAC/B;AAEA,MAAI,OAAO,KAAK,0BAA0B,aAAa;AACrD,UAAM,IAAI;AAAA,MACR;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,MAAI;AAEJ,MAAI,KAAK,cAAc,MAAM;AAC3B,aACE,KAAK,SAAS,OACV,aAAa,KAAK,qBAAqB,IACvC;AAAA,MAEI,OAAO,KAAK,KAAK,qBAAqB,EACtC,KAAK;AAAA,IACT;AAEN,QAAI,KAAK,YAAY,MAAM;AACzB,eAAS,OAAO,QAAQ;AAAA,IAC1B;AAAA,EACF,OAAO;AACL,aAAS,CAAC,CAAC,KAAK,GAAgC,CAAC;AAEjD,UAAM,UAAU,MAAM,uBAAuB,KAAK,GAAG;AAErD,QAAI,QAAQ,aAAa,MAAM;AAC7B,WAAK,wBAAwB;AAAA,QAC3B,CAAC,KAAK,GAAG,GAAG;AAAA,UACV,cAAc,CAAC;AAAA,UACf,SAAS;AAAA,YACP,GAAG;AAAA,YACH,SAAS,KAAK;AAAA,YACd,iBAAiB,KAAK;AAAA,UACxB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,MAAI,OAAO,KAAK,0BAA0B,aAAa;AACrD,UAAM,IAAI;AAAA,MACR;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,MAAI,OAAO,KAAK,eAAe,UAAU;AACvC,aAAS,wBAAwB;AAAA,MAC/B,YAAY,KAAK;AAAA,MACjB;AAAA,MACA,uBAAuB,KAAK;AAAA,IAC9B,CAAC;AAAA,EACH;AAEA,QAAM,SAAS,4BAA4B,MAAM;AAEjD,QAAM,YAAY,YAAY,KAAK,MAAM,UAAU;AAEnD,QAAM,mBACJ,OAAO,KAAK,iBAAiB,YAAY,UAAU,KAAK,YAAY;AAEtE,MAAI,WAAW;AAEf,QAAM,0BAA4D,CAAC;AAEnE,QAAM,QAAQ;AAAA,IACZ,OAAO,KAAK,EAAE,IAAI,OAAO,WAA0C;AACjE,YAAM,eAAe,MAAM,oBAAoB,MAAM;AAAA,QACnD,eAAe,KAAK;AAAA,QACpB,cACE,KAAK,wBAAwB,MAAM,GAAG,QAAQ,SAAS,MACnD;AAAA,MACR,CAAC;AAED,8BAAwB,MAAM,IAAI;AAAA,QAChC;AAAA,QACA,GAAG,aAAa;AAAA,MAClB;AAAA,IACF,CAAC;AAAA,EACH;AAEA,QAAM,qBACJ,KAAK,cAAc,QAAQ,KAAK,uBAAuB;AAEzD,aAAW,SAAS,QAAQ;AAC1B,UAAM,QAAQ;AAAA,MACZ,MAAM,IAAI,OAAO,WAA0C;AACzD,eAAO,SAAS,YAA2B;AACzC,gBAAM,eAAe,wBAAwB,MAAM,KAAK,CAAC;AAEzD,gBAAM,IAAI,OAAO,MAAM;AAEvB,cAAI,OAAO,MAAM,aAAa;AAC5B,cAAE,SAAS;AAAA,UACb;AAEA,gBAAM,YAAY,QAAQ,OAAO;AAEjC,cAAI;AACF,kBAAM,UAAU,oBAAoB,UAAU,MAAM;AAEpD,kBAAM,WAAW;AAAA,cACf,GAAG,KAAK;AAAA,cACR,GAAI,OAAO,YAAY,WACnB,sBAAsB,OAAO,IAC7B,CAAC;AAAA,YACP;AACA,kBAAM,MAAM,QAAQ;AAAA,cAClB,UAAU;AAAA,gBACR,GAAG;AAAA,gBACH,mBACE,KAAK,wBAAwB,MAAM,GAAG,QAAQ,SAAS;AAAA,gBACzD,GAAI,OAAO,KAAK,gBAAgB,cAC5B,EAAE,cAAc,KAAK,YAAY,IACjC,CAAC;AAAA,cACP;AAAA,cACA;AAAA,cACA,WAAW,KAAK;AAAA,YAClB,CAAC;AAED,kBAAM,CAAC,KAAK,GAAG,IAAI,IAAI;AAEvB,gBAAI,OAAO,QAAQ,UAAU;AAC3B;AAAA,YACF;AAEA,gBAAI,oBAAoB;AAgBtB,kBAASA,SAAT,SACE,OACyB;AACzB,uBAAO,CAAC,SAAwB;AAC9B,6BAAW,QAAQ,OAAO,IAAI,EAAE,MAAM,IAAI,GAAG;AAC3C,oCAAgB,MAAM;AAAA,sBACpB,GAAG;AAAA,sBACH;AAAA,sBACA;AAAA,oBACF,CAAC;AAAA,kBACH;AAAA,gBACF;AAAA,cACF;AAZS,0BAAAA;AAfT,oBAAM,WAAW,MAAM,wBAAwB,MAAM;AAErD,oBAAM,QAAQ,MAAM,KAAK,MAAM;AAAA,gBAC7B,KAAK;AAAA,gBACL;AAAA,gBACA,OAAO;AAAA,gBACP,OAAO,KAAK,aAAa;AAAA,cAC3B,CAAC;AAED,oBAAM,gBAAgB;AAAA,gBACpB,IAAI;AAAA,gBACJ,SAAS,SAAS,QAAQ,KAAK,SAAS,KAAK,KAAK,MAAM;AAAA,gBACxD,OAAO;AAAA,cACT;AAgBA,oBAAM,OAAO,GAAG,QAAQA,OAAM,QAAQ,CAAC;AACvC,oBAAM,OAAO,GAAG,QAAQA,OAAM,QAAQ,CAAC;AAEvC,mBAAK,MAAM,KAAK,SAAS,CAACC,cAAkC;AAC1D,gCAAgB,MAAM;AAAA,kBACpB,GAAG;AAAA,kBACH,UAAUA,aAAY;AAAA,kBACtB,UAAU;AAAA,gBACZ,CAAC;AAAA,cACH,CAAC;AAED,oBAAM;AAAA,YACR,OAAO;AACL,oBAAM,MAAM,KAAK,MAAM;AAAA,gBACrB,KAAK;AAAA,gBACL;AAAA,gBACA,OAAO;AAAA,gBACP,OAAO,KAAK,aAAa;AAAA,cAC3B,CAAC;AAAA,YACH;AAEA,kBAAMC,KAAI,OAAO,MAAM;AAEvB,gBAAI,OAAOA,OAAM,aAAa;AAC5B,cAAAA,GAAE,SAAS;AAEX,cAAAA,GAAE,WAAW,qBAAqB,SAAS;AAAA,YAC7C;AAAA,UAEF,SAAS,KAAU;AACjB,kBAAMC,cAAa,OAAO,CAAC;AAE3B,gBACE,OAAOA,gBAAe,YACtB,uBAAuBA,aAAY,KAAK,YAAY,GACpD;AACA,kBAAI,UAAU,YAAYA,WAAU;AAEpC,kBAAI,OAAO,MAAM,8BAA8BA,aAAY;AAAA,gBACzD,2BACE,KAAK,6BAA6B;AAAA,gBACpC,KAAK,KAAK;AAAA,gBACV,cAAc,KAAK;AAAA,gBACnB,YAAY,KAAK,cAAc;AAAA,cACjC,CAAC;AAAA,YACH,WACE,KAAK,cAAc,QACnB,OAAO,IAAI,aAAa,UACxB;AACA,yBAAW,IAAI;AAEf;AAAA,YACF;AAEA,mBAAO,KAAK,GAAG;AAEf,mBAAO,MAAM,IAAI;AAAA,cACf,QAAQ;AAAA,cACR,UAAU,qBAAqB,SAAS;AAAA,cACxC,OAAO;AAAA,cACP,SAAS,IAAI;AAAA,cACb;AAAA,YACF;AAEA,gBAAI,KAAK,SAAS,MAAM;AACtB;AAAA,YACF;AAEA,gBAAI,IAAI,MAAM,WAAW,WAAW,MAAM,MAAM;AAC9C,kBAAI,OAAO;AAAA,YACb;AAEA,gBAAI,SAAS;AAEb,gBAAI,KAAK,kBAAkB,MAAM;AAC/B,oBAAM,sBAAsB;AAAA,gBAC1B,KAAK,KAAK;AAAA;AAAA,gBACV,SAAS;AAAA,cACX,CAAC;AAAA,YACH;AAEA,kBAAM;AAAA,UACR;AAAA,QACF,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,EACF;AAEA,MAAI,KAAK,kBAAkB,MAAM;AAC/B,UAAM,sBAAsB;AAAA,MAC1B,KAAK,KAAK;AAAA;AAAA,MACV,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AAEA,qBAAmB,uBAAuB,MAAM;AAEhD,SAAO,EAAE,SAAS;AACpB;AAEA,eAAe,8BACb,aACA,MAM6B;AAC7B,MAAI,KAAK,2BAA2B;AAClC,QAAI;AAEJ,QAAI;AACF,sBAAgB;AAAA,QACd;AAAA,SACC,MAAM,wBAAwB,KAAK,GAAG,GAAG;AAAA,MAC5C;AAAA,IACF,QAAQ;AAAA,IAAC;AAET,QAAI,OAAO,kBAAkB,UAAU;AACrC,aAAO,sBAAsB,aAAa;AAAA,IAC5C;AAEA,UAAMC,kBAAiB,kBAAkB;AAAA,MACvC;AAAA,MACA,KAAK,KAAK;AAAA,MACV,cAAc,KAAK;AAAA,MACnB,YAAY,KAAK;AAAA,IACnB,CAAC;AAED,QAAI,OAAOA,oBAAmB,UAAU;AACtC,aAAO,sBAAsBA,eAAc;AAAA,IAC7C;AAEA,WAAO;AAAA,EACT;AAEA,QAAM,iBAAiB,kBAAkB;AAAA,IACvC;AAAA,IACA,KAAK,KAAK;AAAA,IACV,cAAc,KAAK;AAAA,IACnB,YAAY,KAAK;AAAA,EACnB,CAAC;AAED,MAAI,OAAO,mBAAmB,UAAU;AACtC,WAAO,2BAA2B,cAAc;AAAA,EAClD;AAEA,SAAO;AACT;AAOA,SAAS,uBACP,SACA,OACA,cACS;AAET,MAAI,QAAQ,aAAa,WAAW,QAAQ,aAAa,UAAU;AACjE,WAAO,MAAM,oBAAoB,SAAS,OAAO;AAAA,EACnD;AAGA,MAAI,QAAQ,aAAa,SAAS;AAChC,UAAM,EAAE,OAAOC,MAAK,IAAI,kBAAkB,YAAY;AAEtD,WACE,OAAO,MAAM,KAAK,SAAS;AAAA,MACzB,SAAS;AAAA,MACT,MAAAA;AAAA,IACF,CAAC,MAAM;AAAA,EAEX;AAEA,SAAO;AACT;",
  "names": ["logFn", "exitCode", "r", "firstParam", "nearestProgram", "path"]
}
